This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/5423: The compiler crashes and you need to relax the optimization to -O0



>Number:         5423
>Category:       optimization
>Synopsis:       The compiler crashes and you need to relax the optimization to -O0
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jan 18 02:26:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Jaime Torres
>Release:        gcc 3.0.2
>Organization:
>Environment:
Linux 2.4.16, glibc 2.2.4
>Description:
When compiling the program john the ripper with the maximun optimization options, gcc can not compile the compiler.c module, and I have to reduce the optimizations options.
The compiler crashes.
I know I'm using a still developing feature, so this is a file to test it and fix the crash.
>How-To-Repeat:
gcc -c -Wall -O2 -fomit-frame-pointer -march=i686 -O3 -fpeephole2 -fsched-spec -fsched-interblock -fssa -fdce -funroll-all-loops -fschedule-insns2 -fdelayed-branch -fthread-jumps -fdelete-null-pointer-checks -frerun-loop-opt -funroll-loops compiler.c -save-temp
gcc: unrecognized option `-save-temp'
cc1: warning: this target machine does not have delayed branches
compiler.c: In function `c_direct':
compiler.c:1131: Internal error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>Fix:
Remove the -fssa from the command line options.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="compiler.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="compiler.i"

IyA2ICJjb21waWxlci5jIgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4wLjMvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MiAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9n
bnUvc3R1YnMuaCIgMSAzCiMgMzEzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzgg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5o
IiAyIDMKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTk5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6
ZV90OwojIDQ0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1
ZGUvc3RkaW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI2
ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVz
LmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWduZWQg
Y2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYg
dW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9f
ZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9f
ZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2lu
dDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2ln
bmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRl
ZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVk
ZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBfX3Vf
bG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2ludCBf
X25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xv
ZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVm
IF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlwZWRl
ZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwog
IH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2Fk
ZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191
c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBp
bnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBpbnQg
X19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoKCgp0eXBlZGVmIGludCBf
X2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0eXBl
ZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90
Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNi
bGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191
X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoK
dHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRf
dDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJl
YWR0eXBlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL2Jp
dHMvc2NoZWQuaCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3By
aW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMK
CgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBf
X3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpf
cHRocmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBp
bnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9w
YXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwog
IHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3Rh
Y2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRl
ZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVh
ZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QK
ewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVk
IGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2Vy
dmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBf
X21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9t
dXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRf
bXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwojIDE0MCAiL3Vzci9p
bmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBw
dGhyZWFkX3Q7CiMgMTQ0ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA0NiAiL3Vz
ci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDIg
MwojIDU0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUv
c3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwojIDY0ICIvdXNyL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVm
IHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNzQgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9f
R19jb25maWcuaCIgMSAzCiMgOSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMTAgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMiAzCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjg3ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90
OwojIDMxMiAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAyIDMKIyAyNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg
MwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMK
IyA2NyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2Nv
dW50OwogIHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAg
fSBfX3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDIgMwoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19z
dGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAg
X19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9pbmNsdWRlL19H
X2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMwojIDI2ICIvdXNyL2lu
Y2x1ZGUvZ2NvbnYuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAz
CiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9pbmNs
dWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMKIyA1
MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDI5ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIg
MiAzCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51
bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAog
IF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09V
VFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVU
LAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9S
Cn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9S
RV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2Nv
bnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29u
dl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2Nv
bnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFy
ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3Qg
KiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBf
X2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBf
X2djb252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1
Y3QgX19nY29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGlu
dCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19n
Y29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBl
ZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICop
Owp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0
IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0Owog
IF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252
X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewog
IHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3Qg
Y2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsK
ICBjaGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9m
Y3QgX19pbml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21p
bl9uZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRl
ZF90bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQg
Kl9fZGF0YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFy
ICpfX291dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFn
czsKCgoKICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNl
OwoKICBfX21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBz
dHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBf
X2djb252X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpf
X3N0ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBb
XTsKfSAqX19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBl
ZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAg
c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9f
ZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2lu
dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0
eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fU0lfXykpKTsKIyAzMyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUzICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4wLjMvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92
YV9saXN0IF9fZ251Y192YV9saXN0OwojIDU0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMg
MTYwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9J
T19GSUxFOwojIDE3MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19s
b2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4
dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwojIDE5MyAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2
dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0
X25vY29udgp9OwojIDI2MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxF
IHsKICBpbnQgX2ZsYWdzOwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3Jl
YWRfZW5kOwogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAg
Y2hhciogX0lPX3dyaXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19i
dWZfYmFzZTsKICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBj
aGFyICpfSU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lP
X21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2Zp
bGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25l
ZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFy
IF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMDUgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzCiAgX19vZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAg
dm9pZCAqX19wYWQyOwoKICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2Yg
KGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJ
TEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19G
SUxFX3BsdXMgX0lPXzJfMV9zdGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9f
Ml8xX3N0ZG91dF87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87
CiMgMzQ0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3Jl
YWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoK
CgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2Nv
bnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9f
b2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZv
aWQgKl9fY29va2llKTsKIyAzOTYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQg
X191bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAq
KSA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50
X3QgX193dW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9J
T19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90
KSA7CiMgNDI2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT19nZXRjIChf
SU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAq
X19mcCkgOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50
IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2Nr
ZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lP
X0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0
ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSA7CiMgNDU2ICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJp
Y3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2du
dWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChf
SU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4g
KF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChf
SU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29m
ZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwpleHRlcm4gX19vZmY2NF90IF9J
T19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgOwoKZXh0ZXJuIHZvaWQgX0lP
X2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIDsKIyA3NSAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDg5ICIvdXNyL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBl
ZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7CiMgMTM4ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0
ZGlvX2xpbS5oIiAxIDMKIyAxMzkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4wLjMvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4g
RklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJyOwojIDE1MyAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBy
ZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJuIGludCByZW5hbWUgKF9f
Y29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsKCgoKCmV4dGVybiBGSUxF
ICp0bXBmaWxlICh2b2lkKSA7CiMgMTcyICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpf
X3MpIDsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSA7CiMgMTg5ICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpf
X3BmeCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRl
cm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxF
ICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pIDsKIyAyMTIgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5j
bHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbW9kZXMpIDsKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgOwojIDI0MiAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAu
My9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29u
c3QgY2hhciAqX19tb2RlcykgOwojIDI2NSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBp
bnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBf
X2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgOwoKCgoK
ZXh0ZXJuIHZvaWQgc2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpf
X3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIDsK
CgpleHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGlu
dCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHBy
aW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBp
bnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50IHZmcHJp
bnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKZXh0ZXJu
IGludCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgICAgICAgICA7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKCgpleHRlcm4gaW50IHNucHJp
bnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0
ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4s
CiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CiMgMzM2ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzY2FuZiAo
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwojIDM2MiAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0
YyAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoK
CmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9j
a2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQp
IDsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpl
eHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1
dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQg
X19jKSA7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpf
X3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpf
X3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIDsKCgoKCgpl
eHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQg
X193LCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICAgICAg
ICAgOwojIDQyOCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNs
dWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwojIDQ1MiAiL3Vz
ci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMK
ZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSkKICAgICAgICAgICAgOwojIDQ2MiAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBwdXRz
IChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBf
X3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29uc3Qg
dm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoKCmV4dGVybiBzaXplX3Qg
ZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAq
X19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVy
biBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNl
KSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gdm9p
ZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNTA2ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRwb3Mg
KEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAg
ICAgICAgICAgOwoKZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBm
cG9zX3QgKl9fcG9zKSA7CiMgNTQyICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19z
dHJlYW0pIDsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQg
ZmVycm9yIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoK
CmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoKCmV4dGVybiBpbnQg
c3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKIyA1
NzMgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRp
by5oIiAzCmV4dGVybiBpbnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGlu
dCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBGSUxFICpw
b3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoK
CmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpj
dGVybWlkIChjaGFyICpfX3MpIDsKIyA2MjAgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklM
RSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFt
KSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNjQxICIv
dXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwojIDMzICIvdXNyL2luY2x1ZGUv
Yml0cy9zdGRpby5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJldHVybiB2ZnBy
aW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRj
aGFyICh2b2lkKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lu
bGluZSBpbnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAoKF9fZnApLT5f
SU9fcmVhZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2ZwKSA6ICoo
dW5zaWduZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmV4dGVybiBfX2lu
bGluZSBpbnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkKewogIHJldHVybiAoKHN0ZGluKS0+X0lP
X3JlYWRfcHRyID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6ICoo
dW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmV4dGVybiBf
X2lubGluZSBpbnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBz
dGRvdXQpOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19j
LCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIg
Pj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVu
c2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193
cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNfdW5s
b2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+
X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cg
KF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9f
c3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lubGluZSBp
bnQKcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykKewogIHJldHVybiAoKChzdGRvdXQpLT5fSU9f
d3JpdGVfcHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHN0ZG91
dCwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5f
SU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CiMgMTExICIvdXNyL2luY2x1ZGUvYml0cy9zdGRp
by5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0p
CnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoKCmV4dGVy
biBfX2lubGluZSBpbnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVy
biAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjQyICIvdXNyL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNyAi
Y29tcGlsZXIuYyIgMgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgMjUgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAy
NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyA5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5
cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoK
CnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsK
ICB9IGxkaXZfdDsKIyAxMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90
IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQpIDsKCgoKZXh0ZXJuIGRvdWJsZSBhdG9mIChf
X2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4g
aW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
YXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIpIDsKIyAxNjMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gbG9uZyBpbnQg
c3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICAgICAgICAgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVy
biBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGlu
dCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50
IF9fYmFzZSkKICAgICAgICAgICAgOwoKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19i
YXNlKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRv
dWxsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh
c2UpCiAgICAgICAgICAgIDsKIyAyNTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
ZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgICAgICAgIDsKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkK
ICAgICAgICAgICAgOwpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2ludGVybmFsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fZ3JvdXApIDsKCmV4dGVybiBsb25nIGludCBfX3N0
cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkg
OwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsK
CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7
CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3Vs
bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19iYXNlLCBpbnQgX19ncm91cCkKICAgICAgICAgICAgOwoKCgoKCgoKZXh0ZXJuIF9faW5s
aW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9kX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKc3RydG9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
ICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIs
IF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGlu
dApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KIyAzMjUgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcg
aW50CnN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBl
eHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAg
ICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9f
ZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxv
bmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4g
X19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0
ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91bGwg
KF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5h
bCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIs
IChjaGFyICoqKSAoKHZvaWQgKikwKSk7Cn0KZXh0ZXJuIF9faW5saW5lIGludAphdG9pIChfX2Nv
bnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIg
KiopICgodm9pZCAqKTApLCAxMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmF0b2wgKF9f
Y29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikg
KCh2b2lkICopMCksIDEwKTsKfQoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcg
bG9uZyBpbnQKYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbGwg
KF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KIyAzODQgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbDY0YSAobG9uZyBpbnQgX19uKSA7CgoKZXh0ZXJu
IGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAy
NyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy90eXBlcy5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlw
ZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYg
X191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3Qg
cXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNp
ZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9f
dDsKIyA2MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kZXZfdCBkZXZf
dDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90
OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRf
dDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CiMgOTkgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoK
CgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRk
cl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgoKCnR5cGVkZWYgX19rZXlfdCBrZXlf
dDsKIyAxMzIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDEgMwojIDY3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVk
ZWYgX190aW1lX3QgdGltZV90OwojIDc5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgODAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIg
MwoKCnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDkxICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgOTIgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7CiMgMTMzICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDE0NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50
IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxOTAgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1FJX18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0hJX18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1NJX18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0RJX18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVu
c2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7
Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3Jk
X18pKSk7CiMgMjEyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZW5kaWFuLmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAz
CiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vu
ZGlhbi5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAyMTMgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o
IiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9mZWF0dXJlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiMg
MzIgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc2lnc2V0LmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwp0eXBl
ZGVmIGludCBfX3NpZ19hdG9taWNfdDsKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWdu
ZWQgbG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQp
KSldOwogIH0gX19zaWdzZXRfdDsKIyAzNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAz
CgoKCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDEgMwojIDEwNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNwZWMK
ICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMgNDUg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90
aW1lLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA2NCAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAy
IDMKCgoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vj
b25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAz
CgoKdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKCnR5cGVkZWYgbG9uZyBp
bnQgX19mZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCgoKCiAgICBfX2ZkX21h
c2sgX19mZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsKCgogIH0gZmRf
c2V0OwoKCgoKCgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwojIDEwMiAiL3Vzci9pbmNsdWRl
L3N5cy9zZWxlY3QuaCIgMwpleHRlcm4gaW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpf
X3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmlj
dCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhj
ZXB0ZmRzLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190
aW1lb3V0KSA7CiMgMjE2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDIgMwojIDIzMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19i
bGtjbnRfdCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoK
dHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAzOTEgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzCgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIDsKCgpleHRlcm4g
dm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmlu
aXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0
YXRlIChjaGFyICpfX3N0YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAg
ICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwog
ICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5kX3NlcDsKICAg
IGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5k
b21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGlu
dCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4dGVybiBpbnQgaW5pdHN0
YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwK
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKZXh0ZXJu
IGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgoK
ZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50
IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsK
CgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5k
NDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxy
YW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJu
IGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0
ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBz
aG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRl
cm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgOwoKCgoKCnN0
cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAg
dW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19j
OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX19hOwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEg
Kl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVz
dHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQg
Kl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhf
ZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBs
b25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5z
aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
bG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAo
bG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICAg
ICAgICAgOwoKZXh0ZXJuIGludCBzZWVkNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2
dlszXSwKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIp
IDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwK
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CiMg
NTI3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90
IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxs
b2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAgICAgICAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19w
dHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4g
dm9pZCBmcmVlICh2b2lkICpfX3B0cikgOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19w
dHIpIDsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDIyICIvdXNyL2luY2x1
ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91
c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUv
YWxsb2NhLmgiIDIgMwoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkg
OwojIDU0NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCmV4dGVybiB2b2lkICp2YWxs
b2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgNTYxICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmli
dXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1
bmMpICh2b2lkKSkgOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50
IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgICAgICAgICA7CgoKCgoK
ZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVy
bl9fKSk7CiMgNTg3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmdldGVu
diAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVu
diAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAq
X19zdHJpbmcpIDsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUs
IF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAgICAgICAgICAgOwoKCmV4
dGVybiBpbnQgdW5zZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCgoKCmV4dGVybiBp
bnQgY2xlYXJlbnYgKHZvaWQpIDsKIyA2MjMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRl
cm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CgoKCgoKCgpleHRlcm4gaW50IG1r
c3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwpleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoKCgoKZXh0ZXJuIGlu
dCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5kKSA7CiMgNjcyICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNv
bHZlZCkgOwoKCgoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQg
KiwgX19jb25zdCB2b2lkICopOwojIDY4OSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFz
ZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBf
X2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFz
ZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBfX2Nv
bXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDcxMCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSkKICAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBsZGl2IChsb25n
IGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwojIDcyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBj
aGFyICplY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3Qg
X19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoK
CmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3Np
Z24pIDsKCgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25n
IGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpf
X3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIg
KnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSA7
CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbGVuKSA7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0
cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19sZW4pIDsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwg
aW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0
LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAg
ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJuIGlu
dCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1i
dG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHdjdG9t
YiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIDsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3dj
cyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCmV4dGVybiBzaXplX3Qg
d2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgICAgICAg
ICA7CgoKCgoKCgpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkg
OwojIDg1OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBpbnQgZ2V0bG9hZGF2ZyAo
ZG91YmxlIF9fbG9hZGF2Z1tdLCBpbnQgX19uZWxlbSkgOwojIDggImNvbXBpbGVyLmMiIDIKIyAx
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMiAzCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0cmluZy5o
IiAyIDMKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90
IF9fbikgOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9p
ZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgICAgICAgIDsKCgoKCgpleHRlcm4gdm9pZCAqbWVt
Y2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBf
X3NyYywKICAgICAgICAgICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgICAg
ICAgIDsKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90
IF9fbikgOwoKCmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qg
dm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19j
LCBzaXplX3QgX19uKQogICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoj
IDc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAq
X19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAg
ICAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAog
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXpl
X3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3Qs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAgOwoKZXh0ZXJuIGNo
YXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKSA7CgoKZXh0ZXJu
IGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAg
ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAg
KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAg
ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xs
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKIyAxMjAgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4g
Y2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDE2NyAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAzCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29u
c3QgY2hhciAqX19yZWplY3QpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hh
ciAqX19hY2NlcHQpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2Fj
Y2VwdCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNo
YXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVl
ZGxlKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMTg3ICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgICAgICAgICA7CgoK
CmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKZXh0ZXJu
IGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19zYXZlX3B0cikgOwojIDIxOCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXpl
X3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CiMgMjI5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChp
bnQgX19lcnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwg
Y2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAo
dm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZv
aWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9pZCBiemVy
byAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZv
aWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBj
aGFyICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKIyAyNzIgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gaW50IHN0
cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgICAg
ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJuY2FzZWNt
cCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAyOTQgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0
cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Rl
bGltKSA7CiMgMzU3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9zdHJpbmcuaCIgMSAzCiMgMzU4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAxIDMKIyA1MiAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RyaW5nMi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyA1MyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKIyAzNzEgIi91
c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gdm9pZCAqX19yYXdtZW1jaHIgKGNv
bnN0IHZvaWQgKl9fcywgaW50IF9fYyk7CiMgMzk1ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcy
LmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RyY3B5X3NtYWxsIChjaGFyICosIF9fdWlu
dDE2X3QsIF9fdWludDE2X3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X191aW50MzJfdCwgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpf
X3N0cmNweV9zbWFsbCAoY2hhciAqX19kZXN0LAogICAgICAgICAgICAgICAgX191aW50MTZfdCBf
X3NyYzBfMiwgX191aW50MTZfdCBfX3NyYzRfMiwKICAgICAgICAgICAgICAgIF9fdWludDMyX3Qg
X19zcmMwXzQsIF9fdWludDMyX3QgX19zcmM0XzQsCiAgICAgICAgICAgICAgICBzaXplX3QgX19z
cmNsZW4pCnsKICB1bmlvbiB7CiAgICBfX3VpbnQzMl90IF9fdWk7CiAgICBfX3VpbnQxNl90IF9f
dXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogIH0gKl9fdSA9ICh2b2lkICopIF9fZGVzdDsK
ICBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQogICAgewogICAgY2FzZSAxOgogICAg
ICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgX191LT5f
X3VzaSA9IF9fc3JjMF8yOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAgX191LT5fX3Vz
aSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICop
IF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2Ug
NDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1Ogog
ICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAodm9p
ZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJl
YWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNp
ID0gX19zcmM0XzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSA3OgogICAgICBfX3UtPl9fdWkgPSBf
X3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3Ug
KyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwog
ICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAg
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7CiAgICAgIF9f
dS0+X191aSA9IF9fc3JjNF80OwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4gX19kZXN0Owp9
CiMgODczICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNp
emVfdCBfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0
ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFy
IF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19z
W19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QpCiAgICArK19f
cmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0
cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QyKTsKZXh0ZXJuIF9faW5saW5l
IHNpemVfdApfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwg
Y2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxl
IChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAg
ICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIpCiAgICArK19fcmVzdWx0OwogIHJl
dHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9f
Y29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lu
bGluZSBzaXplX3QKX19zdHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVj
dDEsIGNoYXIgX19yZWplY3QyLAogICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKQp7CiAgcmVn
aXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAn
ICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QxCiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0g
IT0gX19yZWplY3QyICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QzKQogICAgKytfX3Jlc3Vs
dDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5MjggIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9f
cywgY2hhciBfX2FjY2VwdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzEgKF9f
Y29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVz
dWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQpCiAgICArK19fcmVz
dWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNw
bl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBzaXpl
X3QKX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBf
X2FjY2VwdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19z
W19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAg
ICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVf
dCBfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0MiwgY2hhciBfX2FjY2Vw
dDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9f
cywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0MykKewogIHJl
Z2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9f
YWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MgogICAgICAgICB8fCBfX3NbX19y
ZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9
CiMgOTgzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2Nl
cHQxLCBpbnQgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBf
X2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9
PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4dGVybiBf
X2lubGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2Nl
cHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Miwg
aW50IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MzIChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwKICAgICAgICAgICAg
ICBpbnQgX19hY2NlcHQzKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2Fj
Y2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAhPSBfX2FjY2VwdDMp
CiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAq
KSAoc2l6ZV90KSBfX3M7Cn0KIyAxMDMzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3Nl
cCwgY2hhciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RydG9rX3JfMWMg
KGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApCnsKICBjaGFyICpfX3Jlc3Vs
dDsKICBpZiAoX19zID09ICgodm9pZCAqKTApKQogICAgX19zID0gKl9fbmV4dHA7CiAgd2hpbGUg
KCpfX3MgPT0gX19zZXApCiAgICArK19fczsKICBpZiAoKl9fcyA9PSAnXDAnKQogICAgX19yZXN1
bHQgPSAoKHZvaWQgKikwKTsKICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0ID0gX19zOwogICAg
ICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19zZXApCiAgICAgICAgKytfX3M7CiAg
ICAgIGlmICgqX19zID09ICdcMCcpCiAgICAgICAgKl9fbmV4dHAgPSBfX3M7CiAgICAgIGVsc2UK
ICAgICAgICB7CiAgICAgICAgICAqX19zID0gJ1wwJzsKICAgICAgICAgICpfX25leHRwID0gX19z
ICsgMTsKICAgICAgICB9CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTA4MyAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8x
YyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19z
dHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpf
X3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJu
ICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0KQogICAgKigq
X19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRlbnNpb25fXyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoX19yZWplY3QpID09ICdcMCcgPyAoY2hh
ciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0cmNociAoX19yZXR2YWws
IF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAg
IGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0
ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0
MSwgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzJjIChj
aGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBj
aGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAg
cmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8
fCAqX19yZXR2YWwgPT0gX19yZWplY3QyKQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAg
ICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKCpf
X2NwICE9ICdcMCcgJiYgKl9fY3AgIT0gX19yZWplY3QxICYmICpfX2NwICE9IF9fcmVqZWN0MikK
ICAgICAgICArK19fY3A7CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAgICAgIHsKICAgICAg
ICAgICpfX3MgPSBfX2NwOwogICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgICAgICB9CiAg
ICAgIGVsc2UKICAgICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9CiAgcmV0dXJuIF9fcmV0
dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNo
YXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBf
M2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3Jl
amVjdDMpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFs
ID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9f
cmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyCiAgICAgIHx8ICpf
X3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIHsK
ICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoKl9fY3Ag
IT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19yZWplY3QyCiAgICAg
ICAgICAgICAmJiAqX19jcCAhPSBfX3JlamVjdDMpCiAgICAgICAgKytfX2NwOwogICAgICBpZiAo
Kl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19jcDsKICAgICAgICAg
ICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgKl9fcyA9ICgo
dm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpOwpleHRl
cm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAq
X19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0
dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICgodm9pZCAqKTApOwogIGlmICgoKl9fcyA9
IF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19idWlsdGluX2NvbnN0
YW50X3AgKF9fcmVqZWN0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoX19yZWplY3QpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKF9fcmVqZWN0KSA9PSAxKSA/ICgoX19hMCA9ICgo
X19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzBdLCBfX2EwID09ICdcMCcpID8gKCh2b2lkKSAo
X19yZXR2YWwpLCAoKHZvaWQgKikwKSkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoX19y
ZWplY3QpKVsxXSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29u
c3RhbnRfcCAoX19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAo
X19yZXR2YWwsIF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwgX19hMCkpKSA6ICgoX19hMiA9ICgo
X19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzJdLCBfX2EyID09ICdcMCcpID8gX19zdHJwYnJr
X2MyIChfX3JldHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0
KSlbM10gPT0gJ1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2YWwsIF9fYTAsIF9fYTEsIF9fYTIp
IDogc3RycGJyayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkgOiBzdHJwYnJrIChfX3JldHZhbCwg
X19yZWplY3QpKTsgfSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICBy
ZXR1cm4gX19yZXR2YWw7Cn0KIyAxMTc2ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDExNzcgIi91c3IvaW5jbHVkZS9iaXRz
L3N0cmluZzIuaCIgMiAzCgoKCgpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAq
X19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIwMCAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hh
ciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19t
YWxsb2NfXykpOwojIDM2MSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKIyA5ICJjb21waWxl
ci5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUv
Y3R5cGUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9p
bmNsdWRlL2N0eXBlLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwoj
IDI4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzCiMgNDAgIi91c3IvaW5jbHVkZS9jdHlwZS5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRlL2N0
eXBlLmgiIDIgMwoKCgoKCgplbnVtCnsKICBfSVN1cHBlciA9ICgoMCkgPCA4ID8gKCgxIDw8ICgw
KSkgPDwgOCkgOiAoKDEgPDwgKDApKSA+PiA4KSksCiAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/ICgo
MSA8PCAoMSkpIDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAogIF9JU2FscGhhID0gKCgyKSA8
IDggPyAoKDEgPDwgKDIpKSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgpKSwKICBfSVNkaWdpdCA9
ICgoMykgPCA4ID8gKCgxIDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCiAgX0lT
eGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkpID4+IDgp
KSwKICBfSVNzcGFjZSA9ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwgKDUp
KSA+PiA4KSksCiAgX0lTcHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAoNikpIDw8IDgpIDogKCgx
IDw8ICg2KSkgPj4gOCkpLAogIF9JU2dyYXBoID0gKCg3KSA8IDggPyAoKDEgPDwgKDcpKSA8PCA4
KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKICBfSVNibGFuayA9ICgoOCkgPCA4ID8gKCgxIDw8ICg4
KSkgPDwgOCkgOiAoKDEgPDwgKDgpKSA+PiA4KSksCiAgX0lTY250cmwgPSAoKDkpIDwgOCA/ICgo
MSA8PCAoOSkpIDw8IDgpIDogKCgxIDw8ICg5KSkgPj4gOCkpLAogIF9JU3B1bmN0ID0gKCgxMCkg
PCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgpIDogKCgxIDw8ICgxMCkpID4+IDgpKSwKICBfSVNhbG51
bSA9ICgoMTEpIDwgOCA/ICgoMSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4KSkK
fTsKIyA3NSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQg
c2hvcnQgaW50ICpfX2N0eXBlX2I7CmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAqX19jdHlwZV90
b2xvd2VyOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG91cHBlcjsKIyA5MSAi
L3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIGludCBpc2FsbnVtIChpbnQpIDsKZXh0ZXJu
IGludCBpc2FscGhhIChpbnQpIDsKZXh0ZXJuIGludCBpc2NudHJsIChpbnQpIDsKZXh0ZXJuIGlu
dCBpc2RpZ2l0IChpbnQpIDsKZXh0ZXJuIGludCBpc2xvd2VyIChpbnQpIDsKZXh0ZXJuIGludCBp
c2dyYXBoIChpbnQpIDsKZXh0ZXJuIGludCBpc3ByaW50IChpbnQpIDsKZXh0ZXJuIGludCBpc3B1
bmN0IChpbnQpIDsKZXh0ZXJuIGludCBpc3NwYWNlIChpbnQpIDsKZXh0ZXJuIGludCBpc3VwcGVy
IChpbnQpIDsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSA7CgoKCgoKCgpleHRlcm4gaW50IHRv
bG93ZXIgKGludCBfX2MpIDsKCgpleHRlcm4gaW50IHRvdXBwZXIgKGludCBfX2MpIDsKCgoKCgoK
ZXh0ZXJuIGludCBpc2FzY2lpIChpbnQgX19jKSA7CgoKCmV4dGVybiBpbnQgdG9hc2NpaSAoaW50
IF9fYykgOwoKCgpleHRlcm4gaW50IF90b3VwcGVyIChpbnQpIDsKZXh0ZXJuIGludCBfdG9sb3dl
ciAoaW50KSA7CiMgMTY3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwpleHRlcm4gX19pbmxpbmUg
aW50CnRvbG93ZXIgKGludCBfX2MpCnsKICByZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2
ID8gX19jdHlwZV90b2xvd2VyW19fY10gOiBfX2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91
cHBlciAoaW50IF9fYykKewogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBfX2N0
eXBlX3RvdXBwZXJbX19jXSA6IF9fYzsKfQojIDEwICJjb21waWxlci5jIiAyCiMgMSAiL3Vzci9p
bmNsdWRlL2Vycm5vLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIg
MwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDEgMwojIDI1ICIvdXNyL2lu
Y2x1ZGUvYml0cy9lcnJuby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEg
MwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMSAzCiMgNSAiL3Vzci9pbmNsdWRl
L2xpbnV4L2Vycm5vLmgiIDIgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAyIDMK
IyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwpleHRlcm4gaW50IGVycm5vOwoKCmV4
dGVybiBpbnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKIyAzNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMwojIDExICJjb21waWxlci5jIiAy
CgojIDEgImFyY2guaCIgMQojIDEzICJjb21waWxlci5jIiAyCiMgMSAicGFyYW1zLmgiIDEKIyAx
MyAicGFyYW1zLmgiCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAu
My9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjAuMy9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N5c2xpbWl0cy5oIiAxIDMKCgoKCgoKIyAx
ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvbGltaXRz
LmgiIDEgMwojIDEyNSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9p
bmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAyNiAi
L3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEg
MwojIDI3ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDE0NCAiL3Vzci9pbmNsdWRlL2xp
bWl0cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIyAxMjYg
Ii91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L2xvY2FsX2xpbS5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUv
Yml0cy9sb2NhbF9saW0uaCIgMiAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGlt
LmgiIDIgMwojIDE0NSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMwojIDE0OSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5o
IiAyIDMKIyAxMjYgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5j
bHVkZS9saW1pdHMuaCIgMiAzCiMgOCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8zLjAuMy9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxMiAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAxNCAicGFyYW1z
LmgiIDIKIyAxMDkgInBhcmFtcy5oIgpleHRlcm4gaW50IHBhc3N3b3JkX2hhc2hfc2l6ZXNbM107
CmV4dGVybiBpbnQgcGFzc3dvcmRfaGFzaF90aHJlc2hvbGRzWzNdOwojIDE0ICJjb21waWxlci5j
IiAyCiMgMSAibWVtb3J5LmgiIDEKIyAxMyAibWVtb3J5LmgiCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDE0ICJtZW1v
cnkuaCIgMgoKIyAxICJhcmNoLmgiIDEKIyAxNiAibWVtb3J5LmgiIDIKIyAzOSAibWVtb3J5Lmgi
CmV4dGVybiB1bnNpZ25lZCBpbnQgbWVtX3NhdmluZ19sZXZlbDsKCgoKCgpleHRlcm4gdm9pZCAq
bWVtX2FsbG9jKHNpemVfdCBzaXplKTsKCgoKCgpleHRlcm4gdm9pZCBtZW1fZnJlZSh2b2lkICoq
cHRyKTsKCgoKCgpleHRlcm4gdm9pZCAqbWVtX2FsbG9jX3Rpbnkoc2l6ZV90IHNpemUsIHNpemVf
dCBhbGlnbik7CgoKCgpleHRlcm4gdm9pZCAqbWVtX2FsbG9jX2NvcHkoc2l6ZV90IHNpemUsIHNp
emVfdCBhbGlnbiwgdm9pZCAqc3JjKTsKCgoKCmV4dGVybiBjaGFyICpzdHJfYWxsb2NfY29weShj
aGFyICpzcmMpOwojIDE1ICJjb21waWxlci5jIiAyCiMgMSAiY29tcGlsZXIuaCIgMQojIDM3ICJj
b21waWxlci5oIgpleHRlcm4gY2hhciAqY19lcnJvcnNbXTsKCgoKCmV4dGVybiBpbnQgY19lcnJu
bzsKCgoKCnR5cGVkZWYgaW50IGNfaW50OwoKCgoKc3RydWN0IGNfaWRlbnQgewoKICAgICAgICBz
dHJ1Y3QgY19pZGVudCAqbmV4dDsKCgogICAgICAgIGNoYXIgKm5hbWU7CgoKICAgICAgICB2b2lk
ICphZGRyOwp9OwoKCgoKCmV4dGVybiBpbnQgY19jb21waWxlKGludCAoKmV4dF9nZXRjaGFyKSh2
b2lkKSwgdm9pZCAoKmV4dF9yZXdpbmQpKHZvaWQpLAogICAgICAgIHN0cnVjdCBjX2lkZW50ICpl
eHRlcm5zKTsKCgoKCmV4dGVybiBzdHJ1Y3QgY19pZGVudCAqY19sb29rdXAoY2hhciAqbmFtZSk7
CgoKCgpleHRlcm4gdm9pZCBjX2V4ZWN1dGUoc3RydWN0IGNfaWRlbnQgKmZuKTsKIyAxNiAiY29t
cGlsZXIuYyIgMgoKY2hhciAqY19lcnJvcnNbXSA9IHsKICAgICAgICAoKHZvaWQgKikwKSwKICAg
ICAgICAiVW5rbm93biBpZGVudGlmaWVyIiwKICAgICAgICAiVW5leHBlY3RlZCBjaGFyYWN0ZXIi
LAogICAgICAgICJFcnJvciBpbiBleHByZXNzaW9uIiwKICAgICAgICAiSWRlbnRpZmllciBpcyB0
b28gbG9uZyIsCiAgICAgICAgIkV4cHJlc3Npb24gaXMgdG9vIGNvbXBsZXgiLAogICAgICAgICJJ
bnZhbGlkIGFycmF5IHNpemUiLAogICAgICAgICJEYXRhIHNlY3Rpb24gaXMgdG9vIGxhcmdlIiwK
ICAgICAgICAiSW50ZWdlciBjb25zdGFudCBvdXQgb2YgcmFuZ2UiLAogICAgICAgICJEdXBsaWNh
dGUgaWRlbnRpZmllciIsCiAgICAgICAgIktleXdvcmQgaXMgdXNlZCBhcyBhbiBpZGVudGlmaWVy
IiwKICAgICAgICAiTm90IGluIGEgZnVuY3Rpb24iLAogICAgICAgICJOZXN0ZWQgZnVuY3Rpb25z
IGFyZSBub3Qgc3VwcG9ydGVkIiwKICAgICAgICAiTm90IGluIGFuIGlmIHN0YXRlbWVudCIsCiAg
ICAgICAgIk5vdCBpbiBhIGxvb3AiLAogICAgICAgICJVbmV4cGVjdGVkIGVuZCBvZiBzb3VyY2Ui
LAogICAgICAgICJJbnRlcm5hbCBjb21waWxlciBlcnJvciIKfTsKCmludCBjX2Vycm5vOwoKdW5p
b24gY19pbnNuIHsKICAgICAgICB2b2lkICgqb3ApKHZvaWQpOwogICAgICAgIGNfaW50ICptZW07
CiAgICAgICAgY19pbnQgaW1tOwogICAgICAgIHVuaW9uIGNfaW5zbiAqcGM7Cn07CgpzdHJ1Y3Qg
Y19maXh1cCB7CiAgICAgICAgc3RydWN0IGNfZml4dXAgKm5leHQ7CiAgICAgICAgdW5pb24gY19p
bnNuICpwYzsKfTsKCnN0YXRpYyBpbnQgY19wYXNzOwoKc3RhdGljIHVuaW9uIGNfaW5zbiAqY19j
b2RlX3N0YXJ0OwpzdGF0aWMgdW5pb24gY19pbnNuICpjX2NvZGVfcHRyOwpzdGF0aWMgdW5pb24g
Y19pbnNuICpjX3BjOwoKc3RhdGljIGNfaW50ICpjX2RhdGFfc3RhcnQ7CnN0YXRpYyBjX2ludCAq
Y19kYXRhX3B0cjsKCnN0YXRpYyB1bmlvbiBjX2luc24gY19zdGFja1soKDB4MTAwICsgNCkgKiA0
KV07CnN0YXRpYyB1bmlvbiBjX2luc24gKmNfc3A7CgpzdGF0aWMgdW5pb24gY19pbnNuICpjX2xv
b3Bfc3RhcnQ7CnN0YXRpYyBzdHJ1Y3QgY19maXh1cCAqY19icmVha19maXh1cHM7CgpzdGF0aWMg
c3RydWN0IGNfaWRlbnQgKmNfZnVuY3M7CgpzdGF0aWMgY2hhciBjX3VuZ2V0X2J1ZmZlclsoMHgx
MDAgKyA0KV07CnN0YXRpYyBpbnQgY191bmdldF9jb3VudDsKCnN0YXRpYyBjaGFyIGNfaXNpZGVu
dFsweDEwMF07CgoKCnN0YXRpYyBpbnQgY19FT0Y7CgpzdGF0aWMgaW50ICgqY19leHRfZ2V0Y2hh
cikodm9pZCk7CnN0YXRpYyB2b2lkICgqY19leHRfcmV3aW5kKSh2b2lkKTsKCnN0YXRpYyBjaGFy
ICpjX3Jlc2VydmVkW10gPSB7CiAgICAgICAgInZvaWQiLAogICAgICAgICJpbnQiLAogICAgICAg
ICJpZiIsCiAgICAgICAgImVsc2UiLAogICAgICAgICJ3aGlsZSIsCiAgICAgICAgImNvbnRpbnVl
IiwKICAgICAgICAiYnJlYWsiLAogICAgICAgICJyZXR1cm4iLAogICAgICAgICgodm9pZCAqKTAp
Cn07CiMgOTkgImNvbXBpbGVyLmMiCnN0cnVjdCBjX29wIHsKICAgICAgICBpbnQgcHJlYzsKICAg
ICAgICBpbnQgZGlyOwogICAgICAgIGludCBjbGFzczsKICAgICAgICBjaGFyICpuYW1lOwogICAg
ICAgIHZvaWQgKCpvcCkodm9pZCk7Cn07CgoKc3RhdGljIHN0cnVjdCBjX29wIGNfb3BzW107CgoK
CgpzdGF0aWMgdm9pZCBjX2luaXQodm9pZCkKewogICAgICAgIGludCBjOwoKICAgICAgICBmb3Ig
KGMgPSAwOyBjIDwgMHgxMDA7IGMrKykKICAgICAgICBpZiAoYyA8IDB4ODApCiAgICAgICAgICAg
ICAgICBjX2lzaWRlbnRbY10gPSAoKF9fY3R5cGVfYlsoaW50KSAoKGMpKV0gJiAodW5zaWduZWQg
c2hvcnQgaW50KSBfSVNhbHBoYSkgfHwgKF9fY3R5cGVfYlsoaW50KSAoKGMpKV0gJiAodW5zaWdu
ZWQgc2hvcnQgaW50KSBfSVNkaWdpdCkgfHwgYyA9PSAnXycpID8gMSA6IDA7CiAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgY19pc2lkZW50W2NdID0gMDsKCiAgICAgICAgY19jb2RlX3B0ciA9
IGNfY29kZV9zdGFydDsKICAgICAgICBjX2RhdGFfcHRyID0gY19kYXRhX3N0YXJ0OwoKICAgICAg
ICBjX2xvb3Bfc3RhcnQgPSAoKHZvaWQgKikwKTsKICAgICAgICBjX2JyZWFrX2ZpeHVwcyA9ICgo
dm9pZCAqKTApOwoKICAgICAgICBjX2Z1bmNzID0gKCh2b2lkICopMCk7CgogICAgICAgIGNfdW5n
ZXRfY291bnQgPSAwOwoKICAgICAgICBjX0VPRiA9IDA7CiAgICAgICAgY19lcnJubyA9IDA7Cgog
ICAgICAgIGNfZXh0X3Jld2luZCgpOwp9CgpzdGF0aWMgdm9pZCBjX3VuZ2V0Y2hhcihjaGFyIGMp
CnsKICAgICAgICBpZiAoY191bmdldF9jb3VudCA+PSAoMHgxMDAgKyA0KSkKICAgICAgICAgICAg
ICAgIGNfZXJybm8gPSAxNjsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjX3VuZ2V0X2J1
ZmZlcltjX3VuZ2V0X2NvdW50KytdID0gYzsKfQoKc3RhdGljIGNoYXIgY19idWZmZXJfZ2V0Y2hh
cih2b2lkKQp7CiAgICAgICAgaW50IGM7CgogICAgICAgIGlmIChjX3VuZ2V0X2NvdW50KSByZXR1
cm4gY191bmdldF9idWZmZXJbLS1jX3VuZ2V0X2NvdW50XTsKICAgICAgICBpZiAoKGMgPSBjX2V4
dF9nZXRjaGFyKCkpID4gMCkgcmV0dXJuIGM7CgogICAgICAgIGNfRU9GID0gMTsKICAgICAgICBj
X2Vycm5vID0gMTU7CiAgICAgICAgcmV0dXJuICcgJzsKfQoKc3RhdGljIGNoYXIgY19nZXRjaGFy
KGludCBxdW90ZSkKewogICAgICAgIGludCBjOwogICAgICAgIGludCBzcGFjZSA9IDA7CgogICAg
ICAgIGRvIHsKICAgICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhciljX2J1ZmZlcl9nZXRj
aGFyKCk7CiAgICAgICAgICAgICAgICBpZiAocXVvdGUgfHwgY19FT0YpIHJldHVybiBjOwoKICAg
ICAgICAgICAgICAgIGlmIChjIDw9ICcgJykgc3BhY2UgPSAxOyBlbHNlCiAgICAgICAgICAgICAg
ICBpZiAoYyA9PSAnLycpCiAgICAgICAgICAgICAgICBzd2l0Y2ggKChjID0gY19idWZmZXJfZ2V0
Y2hhcigpKSkgewogICAgICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gY19idWZmZXJfZ2V0
Y2hhcigpOwogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICghY19FT0YgJiYgYyAhPSAn
XG4nICYmIGMgIT0gJ1xyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAnICc7IHNwYWNl
ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2Fz
ZSAnKic6CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKGMgPSBjX2J1ZmZlcl9nZXRjaGFyKCkpID09ICcqJykKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGMgPSBjX2J1ZmZlcl9nZXRjaGFyKCkpID09ICcv
JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAgICB9IHdoaWxlICghY19FT0YpOwogICAgICAgICAgICAgICAgICAgICAg
ICBjID0gJyAnOyBzcGFjZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGNfdW5nZXRjaGFy
KGMpOwogICAgICAgICAgICAgICAgICAgICAgICBjID0gJy8nOwogICAgICAgICAgICAgICAgfQog
ICAgICAgIH0gd2hpbGUgKGMgPD0gJyAnKTsKCiAgICAgICAgaWYgKHNwYWNlKSB7CiAgICAgICAg
ICAgICAgICBjX3VuZ2V0Y2hhcihjKTsKICAgICAgICAgICAgICAgIGMgPSAnICc7CiAgICAgICAg
fQoKICAgICAgICByZXR1cm4gYzsKfQoKc3RhdGljIGNoYXIgKmNfZ2V0dG9rZW4odm9pZCkKewog
ICAgICAgIHN0YXRpYyBjaGFyIHRva2VuWzB4MTAwXTsKICAgICAgICBpbnQgcG9zID0gMDsKCiAg
ICAgICAgd2hpbGUgKGNfaXNpZGVudFsoKHVuc2lnbmVkIGludCkodW5zaWduZWQgY2hhcikodG9r
ZW5bcG9zKytdID0gY19nZXRjaGFyKDApKSldKQogICAgICAgIGlmIChwb3MgPj0gMHgxMDApIHsK
ICAgICAgICAgICAgICAgIGNfZXJybm8gPSA0OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgfQoKICAgICAgICBpZiAocG9zICE9IDEpIGNfdW5nZXRjaGFyKHRva2VuWy0tcG9zXSk7CiAg
ICAgICAgdG9rZW5bcG9zXSA9IDA7CgogICAgICAgIHJldHVybiB0b2tlbjsKfQoKc3RhdGljIGlu
dCBjX2dldGludChjaGFyICp0b2tlbikKewogICAgICAgIGludCB2YWx1ZTsKICAgICAgICBsb25n
IGxfdmFsdWU7CiAgICAgICAgY2hhciAqZXJyb3I7CgogICAgICAgIGlmICh0b2tlblswXSA9PSAn
XCcnKSB7CiAgICAgICAgICAgICAgICBpZiAoKHZhbHVlID0gY19nZXRjaGFyKDEpKSA9PSAnXCcn
KQogICAgICAgICAgICAgICAgICAgICAgICBjX2Vycm5vID0gMjsKICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09ICdcXCcpIHZhbHVlID0gY19n
ZXRjaGFyKDEpOwogICAgICAgICAgICAgICAgaWYgKGNfZ2V0Y2hhcigxKSAhPSAnXCcnKSBjX2Vy
cm5vID0gMjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgKCpfX2Vycm5vX2xvY2F0
aW9uICgpKSA9IDA7CiAgICAgICAgICAgICAgICBsX3ZhbHVlID0gc3RydG9sKHRva2VuLCAmZXJy
b3IsIDApOwogICAgICAgICAgICAgICAgdmFsdWUgPSAoaW50KWxfdmFsdWU7CiAgICAgICAgICAg
ICAgICBpZiAoKCpfX2Vycm5vX2xvY2F0aW9uICgpKSA9PSAzNCB8fCAobG9uZyl2YWx1ZSAhPSBs
X3ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICBjX2Vycm5vID0gODsKICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgIGlmICghKnRva2VuIHx8ICplcnJvciB8fCAoKl9fZXJy
bm9fbG9jYXRpb24gKCkpKQogICAgICAgICAgICAgICAgICAgICAgICBjX2Vycm5vID0gMjsKICAg
ICAgICB9CgogICAgICAgIHJldHVybiB2YWx1ZTsKfQoKc3RhdGljIGNoYXIgY19za2lwX3NwYWNl
KHZvaWQpCnsKICAgICAgICBjaGFyIGM7CgogICAgICAgIGlmICgoYyA9IGNfZ2V0Y2hhcigwKSkg
PT0gJyAnKSBjID0gY19nZXRjaGFyKDApOwoKICAgICAgICByZXR1cm4gYzsKfQoKc3RhdGljIGlu
dCBjX2V4cGVjdChjaGFyIGV4cGVjdGVkKQp7CiAgICAgICAgY2hhciBjOwoKICAgICAgICBpZiAo
KGMgPSBjX2dldGNoYXIoMCkpID09ICcgJykKICAgICAgICBpZiAoZXhwZWN0ZWQgIT0gJyAnKSBj
ID0gY19nZXRjaGFyKDApOwoKICAgICAgICBpZiAoYyAhPSBleHBlY3RlZCkgY19lcnJubyA9IDI7
CgogICAgICAgIHJldHVybiBjX2Vycm5vOwp9CgpzdGF0aWMgc3RydWN0IGNfaWRlbnQgKmNfZmlu
ZF9pZGVudChzdHJ1Y3QgY19pZGVudCAqbGlzdCwKICAgICAgICBzdHJ1Y3QgY19pZGVudCAqZ2xv
YmFscywgY2hhciAqbmFtZSkKewogICAgICAgIHN0cnVjdCBjX2lkZW50ICpjdXJyZW50OwoKICAg
ICAgICBpZiAoKGN1cnJlbnQgPSBsaXN0KSAhPSBnbG9iYWxzKQogICAgICAgIGRvIHsKICAgICAg
ICAgICAgICAgIGlmICghX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVu
OyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChj
dXJyZW50LT5uYW1lKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0
cmxlbiAoY3VycmVudC0+bmFtZSksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpIHx8IF9fczFfbGVuID49IDQp
ICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGN1cnJlbnQtPm5hbWUpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKGN1cnJlbnQtPm5hbWUpID09IDEpIHx8IF9fczJfbGVuID49IDQp
KSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAobmFtZSksIChfX2NvbnN0IGNoYXIgKikgKGN1
cnJlbnQtPm5hbWUpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4p
ICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2
b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSAm
JiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wIChjdXJyZW50LT5uYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoY3Vy
cmVudC0+bmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoY3VycmVudC0+bmFtZSkg
PT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShjdXJyZW50LT5uYW1lKSlbMF0p
OyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoY3VycmVudC0+bmFtZSkpWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGN1cnJlbnQtPm5hbWUpKVsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoY3VycmVudC0+bmFtZSkpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KGN1cnJlbnQtPm5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gX19zMlswXSk7IGlmIChf
X3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSBfX3MyWzFdKTsgaWYg
KF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtIF9fczJbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtIF9fczJbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKGN1cnJlbnQtPm5hbWUp
ICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChjdXJyZW50LT5uYW1lKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKShjdXJyZW50LT5uYW1lKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJs
ZW4gKGN1cnJlbnQtPm5hbWUpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
IChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KShjdXJyZW50LT5uYW1lKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoY3VycmVudC0+bmFtZSkpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKGN1cnJlbnQtPm5hbWUpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAobmFtZSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoY3VycmVudC0+bmFtZSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25f
XyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3Mx
WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoY3VycmVu
dC0+bmFtZSkpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKGN1cnJlbnQtPm5hbWUpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoY3VycmVudC0+bmFtZSkpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoY3VycmVudC0+bmFtZSkpWzNdKTsgfSB9IF9fcmVzdWx0
OyB9KSkpIDogc3RyY21wIChuYW1lLCBjdXJyZW50LT5uYW1lKSkpKTsgfSkpIGJyZWFrOwogICAg
ICAgIH0gd2hpbGUgKChjdXJyZW50ID0gY3VycmVudC0+bmV4dCkgIT0gZ2xvYmFscyk7CgogICAg
ICAgIGlmIChjdXJyZW50ICE9IGdsb2JhbHMpCiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVu
dDsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7Cn0KCnN0
YXRpYyBpbnQgY19hbGxvY19pZGVudChzdHJ1Y3QgY19pZGVudCAqKmxpc3QsIHN0cnVjdCBjX2lk
ZW50ICpnbG9iYWxzLAogICAgICAgIGNoYXIgKm5hbWUsIHZvaWQgKmFkZHIpCnsKICAgICAgICBj
aGFyICoqY3VycmVudDsKICAgICAgICBzdHJ1Y3QgY19pZGVudCAqbGFzdDsKCiAgICAgICAgY3Vy
cmVudCA9IGNfcmVzZXJ2ZWQ7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgaWYgKCFfX2V4
dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAobmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCpjdXJyZW50KSAmJiAoX19zMV9s
ZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0cmxlbiAoKmN1cnJlbnQpLCAoISgoc2l6
ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShu
YW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICop
KCgqY3VycmVudCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKmN1cnJlbnQpID09IDEp
IHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAobmFtZSksIChf
X2NvbnN0IGNoYXIgKikgKCpjdXJyZW50KSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xl
biA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
bmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0KSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKmN1cnJlbnQpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgqY3VycmVudCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKmN1cnJlbnQpID09
IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoKmN1cnJlbnQpKVswXSk7IGlmIChf
X3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqY3VycmVudCkpWzFdKTsgaWYgKF9fczFf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCpjdXJyZW50KSlbMl0pOyBpZiAoX19zMV9sZW4g
PiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCpjdXJyZW50KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6
IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKmN1cnJlbnQpOyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAobmFtZSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChuYW1lKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0
ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWls
dGluX2NvbnN0YW50X3AgKCpjdXJyZW50KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKmN1
cnJlbnQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCpjdXJyZW50KSA9PSAxKSAmJiAo
X19zMl9sZW4gPSBzdHJsZW4gKCpjdXJyZW50KSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikoKmN1cnJlbnQpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgqY3VycmVudCkpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCpjdXJyZW50KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCpj
dXJyZW50KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29u
c3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqY3VycmVudCkpWzBdOyBp
ZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCpjdXJyZW50KSlb
MV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19z
MVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCpjdXJy
ZW50KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0g
KF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgq
Y3VycmVudCkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChuYW1lLCAqY3VycmVu
dCkpKSk7IH0pKSByZXR1cm4gY19lcnJubyA9IDEwOwogICAgICAgIH0gd2hpbGUgKCorK2N1cnJl
bnQpOwoKICAgICAgICBpZiAoY19maW5kX2lkZW50KCpsaXN0LCBnbG9iYWxzLCBuYW1lKSkgcmV0
dXJuIGNfZXJybm8gPSA5OwoKICAgICAgICBsYXN0ID0gKmxpc3Q7CiAgICAgICAgKmxpc3QgPSAo
c3RydWN0IGNfaWRlbnQgKiltZW1fYWxsb2Moc2l6ZW9mKHN0cnVjdCBjX2lkZW50KSk7CiAgICAg
ICAgKCpsaXN0KS0+bmV4dCA9IGxhc3Q7CiAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRp
bl9jb25zdGFudF9wIChuYW1lKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgc3RybGVuIChuYW1lKSAr
IDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsICgoKmxpc3QpLT5uYW1lID0gKGNoYXIgKiltZW1fYWxs
b2Moc3RybGVuKG5hbWUpICsgMSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSksIF9fZXh0ZW5zaW9u
X18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVs0
ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswICsgMV0pIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0p
LCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzRdKSwgc3RybGVuIChu
YW1lKSArIDEpIDogKGNoYXIgKikgbWVtY3B5ICgoKmxpc3QpLT5uYW1lID0gKGNoYXIgKiltZW1f
YWxsb2Moc3RybGVuKG5hbWUpICsgMSksIG5hbWUsIHN0cmxlbiAobmFtZSkgKyAxKSkgOiBzdHJj
cHkgKCgqbGlzdCktPm5hbWUgPSAoY2hhciAqKW1lbV9hbGxvYyhzdHJsZW4obmFtZSkgKyAxKSwg
bmFtZSkpKTsKICAgICAgICAoKmxpc3QpLT5hZGRyID0gYWRkcjsKCiAgICAgICAgcmV0dXJuIGNf
ZXJybm87Cn0KCnN0YXRpYyB2b2lkIGNfZnJlZV9pZGVudChzdHJ1Y3QgY19pZGVudCAqbGlzdCwg
c3RydWN0IGNfaWRlbnQgKmdsb2JhbHMpCnsKICAgICAgICBzdHJ1Y3QgY19pZGVudCAqY3VycmVu
dDsKCiAgICAgICAgd2hpbGUgKChjdXJyZW50ID0gbGlzdCkgIT0gZ2xvYmFscykgewogICAgICAg
ICAgICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CiAgICAgICAgICAgICAgICBtZW1fZnJlZSgodm9p
ZCAqKikmY3VycmVudC0+bmFtZSk7CiAgICAgICAgICAgICAgICBtZW1fZnJlZSgodm9pZCAqKikm
Y3VycmVudCk7CiAgICAgICAgfQp9CgpzdGF0aWMgaW50IGNfZmluZF9vcChjaGFyICp0b2tlbiwg
aW50IGxlZnQpCnsKICAgICAgICBpbnQgYmVzdCA9IC0xOwogICAgICAgIGludCBvcCA9IDA7Cgog
ICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGlmICgoY19vcHNbb3BdLmNsYXNzICE9IDEgJiYg
bGVmdCkgfHwKICAgICAgICAgICAgICAgICAgICAoY19vcHNbb3BdLmNsYXNzID09IDEgJiYgIWxl
ZnQpKQogICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoY19vcHNbb3BdLm5hbWUsIHRva2VuLCBz
dHJsZW4oY19vcHNbb3BdLm5hbWUpKSkKICAgICAgICAgICAgICAgIGlmIChiZXN0IDwgMCB8fAog
ICAgICAgICAgICAgICAgICAgIHN0cmxlbihjX29wc1tvcF0ubmFtZSkgPiBzdHJsZW4oY19vcHNb
YmVzdF0ubmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3QgPSBvcDsKICAgICAgICB9
IHdoaWxlIChjX29wc1srK29wXS5wcmVjKTsKCiAgICAgICAgcmV0dXJuIGJlc3Q7Cn0KCnN0YXRp
YyB2b2lkIGNfZnJlZV9maXh1cChzdHJ1Y3QgY19maXh1cCAqbGlzdCwgdW5pb24gY19pbnNuICpw
YykKewogICAgICAgIHN0cnVjdCBjX2ZpeHVwICpjdXJyZW50OwoKICAgICAgICB3aGlsZSAoKGN1
cnJlbnQgPSBsaXN0KSkgewogICAgICAgICAgICAgICAgaWYgKGNfcGFzcykKICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudC0+cGMtPnBjID0gcGM7CgogICAgICAgICAgICAgICAgbGlzdCA9
IGxpc3QtPm5leHQ7CiAgICAgICAgICAgICAgICBtZW1fZnJlZSgodm9pZCAqKikmY3VycmVudCk7
CiAgICAgICAgfQp9CgpzdGF0aWMgdm9pZCAoKmNfb3BfcmV0dXJuKSh2b2lkKTsKc3RhdGljIHZv
aWQgKCpjX29wX2J6KSh2b2lkKTsKc3RhdGljIHZvaWQgKCpjX29wX2JhKSh2b2lkKTsKc3RhdGlj
IHZvaWQgKCpjX29wX3B1c2hfaW1tKSh2b2lkKTsKc3RhdGljIHZvaWQgKCpjX29wX3B1c2hfbWVt
KSh2b2lkKTsKc3RhdGljIHZvaWQgKCpjX29wX3BvcCkodm9pZCk7CgpzdGF0aWMgdm9pZCAoKmNf
b3BfcHVzaF9pbW1faW1tKSh2b2lkKTsKc3RhdGljIHZvaWQgKCpjX29wX3B1c2hfaW1tX21lbSko
dm9pZCk7CnN0YXRpYyB2b2lkICgqY19vcF9wdXNoX21lbV9pbW0pKHZvaWQpOwpzdGF0aWMgdm9p
ZCAoKmNfb3BfcHVzaF9tZW1fbWVtKSh2b2lkKTsKCnN0YXRpYyB2b2lkICgqY19wdXNoCiAgICAg
ICAgKHZvaWQgKCpsYXN0KSh2b2lkKSwgdm9pZCAoKm9wKSh2b2lkKSwgdW5pb24gY19pbnNuICp2
YWx1ZSkpKHZvaWQpCnsKICAgICAgICBpZiAobGFzdCA9PSBjX29wX3B1c2hfaW1tIHx8IGxhc3Qg
PT0gY19vcF9wdXNoX21lbSkgewogICAgICAgICAgICAgICAgaWYgKGxhc3QgPT0gY19vcF9wdXNo
X2ltbSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gY19vcF9wdXNoX2ltbSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gY19vcF9wdXNoX2ltbV9pbW07
CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsYXN0ID0gY19vcF9wdXNoX2ltbV9tZW07CiAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gY19vcF9wdXNoX2ltbSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gY19vcF9wdXNoX21lbV9pbW07CiAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0
ID0gY19vcF9wdXNoX21lbV9tZW07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
aWYgKGNfcGFzcykgewogICAgICAgICAgICAgICAgICAgICAgICAoY19jb2RlX3B0ciAtIDIpLT5v
cCA9IGxhc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICpjX2NvZGVfcHRyID0gKnZhbHVlOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY19jb2RlX3B0cisrOwogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICBsYXN0ID0gb3A7CgogICAgICAgICAgICAgICAgaWYgKGNf
cGFzcykgewogICAgICAgICAgICAgICAgICAgICAgICAoY19jb2RlX3B0cisrKS0+b3AgPSBvcDsK
ICAgICAgICAgICAgICAgICAgICAgICAgKmNfY29kZV9wdHIrKyA9ICp2YWx1ZTsKICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBjX2NvZGVfcHRyICs9IDI7CiAg
ICAgICAgfQoKICAgICAgICByZXR1cm4gbGFzdDsKfQoKc3RhdGljIGludCBjX2Jsb2NrKGNoYXIg
dGVybSwgc3RydWN0IGNfaWRlbnQgKnZhcnMpOwoKc3RhdGljIGludCBjX2RlZmluZShjaGFyIHRl
cm0sIHN0cnVjdCBjX2lkZW50ICoqdmFycywgc3RydWN0IGNfaWRlbnQgKmdsb2JhbHMpCnsKICAg
ICAgICBjaGFyICp0b2tlbjsKICAgICAgICBjaGFyIGM7CiAgICAgICAgaW50IHNpemU7CgogICAg
ICAgIGNfZXhwZWN0KCcgJyk7CiAgICAgICAgdG9rZW4gPSBjX2dldHRva2VuKCk7CiAgICAgICAg
aWYgKCEoY19pc2lkZW50WygodW5zaWduZWQgaW50KSh1bnNpZ25lZCBjaGFyKSgqdG9rZW4pKV0g
JiYgKCgqdG9rZW4pIDwgJzAnIHx8ICgqdG9rZW4pID4gJzknKSkpIGNfZXJybm8gPSAyOwoKICAg
ICAgICBkbwogICAgICAgIGlmICgqdG9rZW4gIT0gJyAnKSB7CiAgICAgICAgICAgICAgICBpZiAo
IShjX2lzaWRlbnRbKCh1bnNpZ25lZCBpbnQpKHVuc2lnbmVkIGNoYXIpKCp0b2tlbikpXSAmJiAo
KCp0b2tlbikgPCAnMCcgfHwgKCp0b2tlbikgPiAnOScpKSkgY19lcnJubyA9IDI7CiAgICAgICAg
ICAgICAgICBpZiAoY19lcnJubykgcmV0dXJuIGNfZXJybm87CgogICAgICAgICAgICAgICAgaWYg
KChjID0gY19za2lwX3NwYWNlKCkpID09ICcoJykgewogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodGVybSkgcmV0dXJuIGNfZXJybm8gPSAxMjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjX2FsbG9jX2lkZW50KCZjX2Z1bmNzLCAoKHZvaWQgKikwKSwgdG9rZW4sIGNfY29kZV9wdHIp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjX2Vycm5vOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgY19leHBlY3QoJyknKTsKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGNfZXhwZWN0KCd7JykpIHJldHVybiBjX2Vycm5vOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgY19ibG9jaygnfScsICp2YXJzKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjX3Bh
c3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19jb2RlX3B0ci0+b3AgPSBjX29w
X3JldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgY19jb2RlX3B0cisrOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY19hbGxvY19pZGVudCh2YXJzLCBnbG9iYWxzLCB0b2tlbiwgY19k
YXRhX3B0cisrKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY19lcnJu
bzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdbJykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemUgPSBjX2dldGludChjX2dldHRva2VuKCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjX2Vycm5vKSByZXR1cm4gY19lcnJubzsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpemUgPCAxIHx8IHNpemUgPiAweDEw
MDAwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY19l
cnJubyA9IDY7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfZGF0YV9wdHIgKz0g
c2l6ZSAtIDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjX2RhdGFfcHRy
IC0gY19kYXRhX3N0YXJ0ID4gMHg4MDAwMDAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNfZXJybm8gPSA3OwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjX2V4cGVjdCgnXScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMg
PSBjX3NraXBfc3BhY2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGMgPT0gJzsnKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGMgIT0gJywnKSBjX2Vycm5vID0gMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9IHdo
aWxlICghY19lcnJubyAmJiAqKHRva2VuID0gY19nZXR0b2tlbigpKSAhPSAnOycpOwoKICAgICAg
ICByZXR1cm4gY19lcnJubzsKfQoKc3RhdGljIGludCBjX2V4cHIoY2hhciB0ZXJtLCBzdHJ1Y3Qg
Y19pZGVudCAqdmFycywgY2hhciAqdG9rZW4pCnsKICAgICAgICBjaGFyIGM7CiAgICAgICAgc3Ry
dWN0IGNfaWRlbnQgKnZhcjsKICAgICAgICBpbnQgbG9va2FoZWFkLCBvcDsKICAgICAgICBzdHJ1
Y3QgY19vcCAqb3AxLCAqb3AyOwogICAgICAgIHVuaW9uIGNfaW5zbiB2YWx1ZTsKICAgICAgICBp
bnQgc3RhY2tbMHgxMDBdOwogICAgICAgIGludCBzcCA9IDA7CiAgICAgICAgaW50IGJhbGFuY2Ug
PSAtMTsKICAgICAgICBpbnQgbGVmdCA9IDA7CiAgICAgICAgdm9pZCAoKmxhc3QpKHZvaWQpID0g
KHZvaWQgKCopKHZvaWQpKTA7CgogICAgICAgIGlmICh0ZXJtID09ICcpJykgc3RhY2tbc3ArK10g
PSAtMTsKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBjID0gKnRva2VuOwoKICAgICAgICAg
ICAgICAgIGlmIChjID09ICcpJyB8fCBjID09ICddJyB8fCBjID09ICc7JyB8fCBjID09IHRlcm0p
IHsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHNwKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0YWNrWy0tc3BdIDwgMCkgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNfb3BzW3N0YWNrW3NwXV0uY2xhc3MgPT0gMCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbGFuY2UtLTsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGNfb3BzW3N0YWNrW3NwXV0ub3A7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNfcGFzcykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNfY29kZV9wdHItPm9wID0gbGFzdDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjX2NvZGVfcHRyKys7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghc3RhY2tbc3BdKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjID09ICcpJyAmJiBzdGFja1tzcF0gPj0gMCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjID09ICddJyAmJiBzdGFja1tzcF0pIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgPT0gJzsnIHx8ICh0ZXJtICE9ICcpJyAm
JiBjID09IHRlcm0pKSAmJiBzcCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19l
cnJubyA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjX2Vycm5vIHx8ICghc3AgJiYg
YyA9PSB0ZXJtKSkgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gMTsKICAg
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgaWYgKChjID49ICcwJyAmJiBjIDw9
ICc5JykgfHwgYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmltbSA9
IGNfZ2V0aW50KHRva2VuKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGNfcHVzaChs
YXN0LCBjX29wX3B1c2hfaW1tLCAmdmFsdWUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgbGVm
dCA9IDE7IGJhbGFuY2UrKzsKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
aWYgKGMgPT0gJygnIHx8IGMgPT0gJ1snKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
cCA+PSAweDEwMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2Vycm5vID0gNTsK
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YWNrW3NwKytdID0gKGMgPT0gJygnKSA/IC0xIDogMDsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnQgPSAwOwogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBp
ZiAoYyAhPSAnICcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNfaXNpZGVudFsoKHVu
c2lnbmVkIGludCkodW5zaWduZWQgY2hhcikoYykpXSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgPSBjX2ZpbmRfaWRlbnQodmFycywgKCh2b2lkICopMCksIHRva2VuKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciA9ICgodm9pZCAqKTApOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcikgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLm1lbSA9IHZhci0+YWRkcjsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gY19wdXNoKGxhc3QsIGNfb3BfcHVz
aF9tZW0sICZ2YWx1ZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSAx
OyBiYWxhbmNlKys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKChsb29rYWhlYWQgPSAhdG9rZW5bMV0pKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlblsxXSA9IGNfZ2V0Y2hhcigw
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzJdID0gY19n
ZXRjaGFyKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5b
M10gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKChvcCA9IGNfZmluZF9vcCh0b2tlbiwgbGVmdCkpIDwgMCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNfaXNpZGVudFso
KHVuc2lnbmVkIGludCkodW5zaWduZWQgY2hhcikoYykpXSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY19lcnJubyA9IDE7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNfZXJybm8gPSAyOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNfZXJybm87CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9va2FoZWFkKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJsZW4oY19vcHNbb3BdLm5hbWUp
IDwgMykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY191bmdldGNo
YXIodG9rZW5bMl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFjX29wc1tvcF0ubmFtZVsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY191bmdldGNoYXIodG9rZW5bMV0pOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AxID0gJmNfb3Bz
W29wXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc3AgJiYgc3RhY2tb
c3AgLSAxXSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cDIgPSAmY19vcHNbc3RhY2tbc3AgLSAxXV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG9wMi0+ZGlyID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAob3AyLT5wcmVjIDw9IG9wMS0+cHJlYykgYnJlYWs7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wMi0+ZGlyID09IDApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AyLT5wcmVjIDwgb3AxLT5w
cmVjKSBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
b3AyLT5jbGFzcyA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYWxhbmNlLS07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdCA9IG9wMi0+b3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY19wYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjX2NvZGVfcHRyLT5vcCA9IGxhc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjX2NvZGVfcHRyKys7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3AtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcCA+PSAweDEwMCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNfZXJybm8gPSA1OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhY2tbc3ArK10gPSBvcDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsZWZ0ID0gb3AxLT5jbGFzcyA9PSAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIGlmIChjX2Vycm5vIHx8IGMgPT0gJzsnIHx8IChjID09IHRlcm0gJiYgYyAhPSAn
KScpKSBicmVhazsKICAgICAgICAgICAgICAgIHRva2VuID0gY19nZXR0b2tlbigpOwogICAgICAg
IH0gd2hpbGUgKCFjX2Vycm5vKTsKCiAgICAgICAgaWYgKGNfZXJybm8pIHJldHVybiBjX2Vycm5v
OwoKICAgICAgICBpZiAoc3AgfHwgYmFsYW5jZSkgY19lcnJubyA9IDM7CgogICAgICAgIGlmIChj
X3Bhc3MpCiAgICAgICAgICAgICAgICBjX2NvZGVfcHRyLT5vcCA9IGNfb3BfcG9wOwogICAgICAg
IGNfY29kZV9wdHIrKzsKCiAgICAgICAgaWYgKCF0ZXJtICYmICFjX2Vycm5vKSBjX2Vycm5vID0g
MTE7CiAgICAgICAgaWYgKCp0b2tlbiA9PSB0ZXJtKSByZXR1cm4gLTE7CgogICAgICAgIHJldHVy
biBjX2Vycm5vOwp9CgpzdGF0aWMgaW50IGNfY29uZChjaGFyIHRlcm0sIHN0cnVjdCBjX2lkZW50
ICp2YXJzLCBjaGFyICp0b2tlbikKewogICAgICAgIGNoYXIgYzsKICAgICAgICBjaGFyICpwb3M7
CiAgICAgICAgdW5pb24gY19pbnNuICpzdGFydCwgKm91dCwgKmZpeHVwOwoKICAgICAgICBpZiAo
IXRlcm0pIHJldHVybiBjX2Vycm5vID0gMTE7CgogICAgICAgIGMgPSAqdG9rZW47CiAgICAgICAg
c3RhcnQgPSBjX2NvZGVfcHRyOwoKICAgICAgICBpZiAoY19leHBlY3QoJygnKSkgcmV0dXJuIGNf
ZXJybm87CiAgICAgICAgc3dpdGNoIChjX2V4cHIoJyknLCB2YXJzLCBjX2dldHRva2VuKCkpKSB7
CiAgICAgICAgY2FzZSAtMToKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDA6
CiAgICAgICAgICAgICAgICBjX2Vycm5vID0gMjsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgIHJldHVybiBjX2Vycm5vOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNfcGFzcykKICAg
ICAgICAgICAgICAgIChjX2NvZGVfcHRyIC0gMSktPm9wID0gY19vcF9iejsKICAgICAgICBmaXh1
cCA9IGNfY29kZV9wdHIrKzsKCiAgICAgICAgb3V0ID0gY19sb29wX3N0YXJ0OwogICAgICAgIGlm
IChjID09ICd3JykKICAgICAgICAgICAgICAgIGNfbG9vcF9zdGFydCA9IHN0YXJ0OwoKICAgICAg
ICBpZiAoY19ibG9jaygnOycsIHZhcnMpKSByZXR1cm4gY19lcnJubzsKCiAgICAgICAgaWYgKGMg
PT0gJ3cnKSB7CiAgICAgICAgICAgICAgICBjX2xvb3Bfc3RhcnQgPSBvdXQ7CgogICAgICAgICAg
ICAgICAgaWYgKGNfcGFzcykgewogICAgICAgICAgICAgICAgICAgICAgICAoY19jb2RlX3B0cisr
KS0+b3AgPSBjX29wX2JhOwogICAgICAgICAgICAgICAgICAgICAgICAoY19jb2RlX3B0cisrKS0+
cGMgPSBzdGFydDsKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICBjX2NvZGVfcHRyICs9IDI7CgogICAgICAgICAgICAgICAgY19mcmVlX2ZpeHVwKGNfYnJlYWtf
Zml4dXBzLCBjX2NvZGVfcHRyKTsKICAgICAgICAgICAgICAgIGNfYnJlYWtfZml4dXBzID0gKCh2
b2lkICopMCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHdoaWxlICgqKHRva2Vu
ID0gY19nZXR0b2tlbigpKSA9PSAnICcpCiAgICAgICAgICAgICAgICBpZiAoY19lcnJubykgcmV0
dXJuIGNfZXJybm87CgogICAgICAgICAgICAgICAgaWYgKCFfX2V4dGVuc2lvbl9fICh7IHNpemVf
dCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodG9rZW4pICYmIF9f
YnVpbHRpbl9jb25zdGFudF9wICgiZWxzZSIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAodG9rZW4p
LCBfX3MyX2xlbiA9IHN0cmxlbiAoImVsc2UiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
dG9rZW4pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRva2VuKSA9PSAxKSB8fCBfX3Mx
X2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiZWxzZSIpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKCJlbHNlIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8g
bWVtY21wICgoX19jb25zdCBjaGFyICopICh0b2tlbiksIChfX2NvbnN0IGNoYXIgKikgKCJlbHNl
IiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChf
X2J1aWx0aW5fY29uc3RhbnRfcCAodG9rZW4pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0
b2tlbikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodG9rZW4pID09IDEpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAodG9rZW4pLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgiZWxzZSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiZWxzZSIpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKCJlbHNlIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyBy
ZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAodG9rZW4pKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikoImVsc2UiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAodG9rZW4pKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJlbHNlIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHRva2VuKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiZWxzZSIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4p
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlbHNl
IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJlbHNlIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzBdIC0gX19zMlswXSk7IGlmIChf
X3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzFdIC0gX19zMlsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzJdIC0gX19zMlsyXSk7
IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVszXSAtIF9fczJbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJlbHNlIikgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJlbHNlIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoImVsc2UiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJlbHNlIiksIF9fczJf
bGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRva2VuKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgodG9rZW4pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRva2VuKSA9
PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzBdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiZWxzZSIpKVswXSk7IGlmIChf
X3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImVsc2UiKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVsyXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlbHNlIikpWzJdKTsgaWYgKF9fczJfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImVsc2UiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChf
X2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pOyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImVsc2UiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoImVsc2UiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJlbHNlIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9
PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoImVsc2UiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAg
KHRva2VuLCAiZWxzZSIpKSkpOyB9KSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY19w
YXNzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNfY29kZV9wdHIrKyktPm9w
ID0gY19vcF9iYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXh1cC0+cGMgPSBj
X2NvZGVfcHRyICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXh1cCA9IGNf
Y29kZV9wdHIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY19jb2RlX3B0ciArPSAyOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNfYmxvY2soJzsnLCB2YXJzKSkgcmV0dXJuIGNfZXJybm87CiAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSB0b2tlbiArIHN0cmxlbih0
b2tlbik7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwb3MgPiB0b2tlbikgY191bmdl
dGNoYXIoKi0tcG9zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChj
X3Bhc3MpCiAgICAgICAgICAgICAgICBmaXh1cC0+cGMgPSBjX2NvZGVfcHRyOwogICAgICAgIGNf
dW5nZXRjaGFyKCc7Jyk7CgogICAgICAgIHJldHVybiBjX2Vycm5vOwp9CgpzdGF0aWMgaW50IGNf
Y29udGludWUodm9pZCkKewogICAgICAgIGlmICghY19sb29wX3N0YXJ0KSByZXR1cm4gY19lcnJu
byA9IDE0OwoKICAgICAgICBpZiAoY19wYXNzKSB7CiAgICAgICAgICAgICAgICAoY19jb2RlX3B0
cisrKS0+b3AgPSBjX29wX2JhOwogICAgICAgICAgICAgICAgKGNfY29kZV9wdHIrKyktPnBjID0g
Y19sb29wX3N0YXJ0OwogICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgY19jb2RlX3B0ciAr
PSAyOwoKICAgICAgICBjX2V4cGVjdCgnOycpOwogICAgICAgIGNfdW5nZXRjaGFyKCc7Jyk7Cgog
ICAgICAgIHJldHVybiBjX2Vycm5vOwp9CgpzdGF0aWMgaW50IGNfYnJlYWsodm9pZCkKewogICAg
ICAgIHN0cnVjdCBjX2ZpeHVwICpmaXh1cDsKCiAgICAgICAgaWYgKCFjX2xvb3Bfc3RhcnQpIHJl
dHVybiBjX2Vycm5vID0gMTQ7CgogICAgICAgIGNfZXhwZWN0KCc7Jyk7CiAgICAgICAgY191bmdl
dGNoYXIoJzsnKTsKCiAgICAgICAgZml4dXAgPSBjX2JyZWFrX2ZpeHVwczsKICAgICAgICBjX2Jy
ZWFrX2ZpeHVwcyA9CiAgICAgICAgICAgICAgICAoc3RydWN0IGNfZml4dXAgKiltZW1fYWxsb2Mo
c2l6ZW9mKHN0cnVjdCBjX2ZpeHVwKSk7CiAgICAgICAgY19icmVha19maXh1cHMtPm5leHQgPSBm
aXh1cDsKCiAgICAgICAgaWYgKGNfcGFzcykKICAgICAgICAgICAgICAgIGNfY29kZV9wdHItPm9w
ID0gY19vcF9iYTsKICAgICAgICBjX2JyZWFrX2ZpeHVwcy0+cGMgPSBjX2NvZGVfcHRyICsgMTsK
ICAgICAgICBjX2NvZGVfcHRyICs9IDI7CgogICAgICAgIHJldHVybiBjX2Vycm5vOwp9CgpzdGF0
aWMgaW50IGNfcmV0dXJuKGNoYXIgdGVybSkKewogICAgICAgIGlmICghdGVybSkgcmV0dXJuIGNf
ZXJybm8gPSAxMTsKCiAgICAgICAgaWYgKGNfcGFzcykKICAgICAgICAgICAgICAgIGNfY29kZV9w
dHItPm9wID0gY19vcF9yZXR1cm47CiAgICAgICAgY19jb2RlX3B0cisrOwoKICAgICAgICBjX2V4
cGVjdCgnOycpOwogICAgICAgIGNfdW5nZXRjaGFyKCc7Jyk7CgogICAgICAgIHJldHVybiBjX2Vy
cm5vOwp9CgpzdGF0aWMgaW50IGNfYmxvY2soY2hhciB0ZXJtLCBzdHJ1Y3QgY19pZGVudCAqdmFy
cykKewogICAgICAgIHN0cnVjdCBjX2lkZW50ICpsb2NhbHMgPSB2YXJzOwogICAgICAgIGNoYXIg
KnRva2VuOwoKICAgICAgICB3aGlsZSAoKih0b2tlbiA9IGNfZ2V0dG9rZW4oKSkgIT0gdGVybSkg
ewogICAgICAgICAgICAgICAgaWYgKGNfZXJybm8pIHsKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCF0ZXJtICYmIGNfZXJybm8gPT0gMTUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY19lcnJubyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCp0b2tlbiA9PSAnICcpIGNvbnRpbnVlOwoKICAg
ICAgICAgICAgICAgIGlmICgqdG9rZW4gPT0gJ3snKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghdGVybSkgcmV0dXJuIGNfZXJybm8gPSAxMTsKCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh0ZXJtID09ICc7JykgdGVybSA9ICd9JzsgZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY19ibG9jaygnfScsIGxvY2FscykpIGJyZWFrOyBlbHNlIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgfSBlbHNlCgogICAgICAgICAgICAgICAgaWYgKCFfX2V4dGVuc2lvbl9fICh7IHNp
emVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodG9rZW4pICYm
IF9fYnVpbHRpbl9jb25zdGFudF9wICgidm9pZCIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAodG9r
ZW4pLCBfX3MyX2xlbiA9IHN0cmxlbiAoInZvaWQiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgodG9rZW4pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRva2VuKSA9PSAxKSB8fCBf
X3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgidm9pZCIpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJ2b2lkIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkp
ID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICh0b2tlbiksIChfX2NvbnN0IGNoYXIgKikgKCJ2
b2lkIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodG9rZW4pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop
KCh0b2tlbikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodG9rZW4pID09IDEpICYmIChf
X3MxX2xlbiA9IHN0cmxlbiAodG9rZW4pLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25z
dGFudF9wICgidm9pZCIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgidm9pZCIpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJ2b2lkIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAo
eyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAodG9rZW4pKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikoInZvaWQiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAodG9rZW4pKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJ2b2lkIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHRva2VuKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgidm9pZCIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9r
ZW4pKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ2
b2lkIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJ2b2lkIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzBdIC0gX19zMlswXSk7IGlm
IChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzFdIC0gX19zMlsxXSk7
IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzJdIC0gX19zMlsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVszXSAtIF9fczJb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJ2b2lkIikg
JiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJ2b2lkIikgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoInZvaWQiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJ2b2lkIiksIF9f
czJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRva2VuKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgodG9rZW4pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRva2Vu
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzBdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgidm9pZCIpKVswXSk7IGlm
IChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzFdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInZvaWQiKSlbMV0pOyBpZiAoX19z
Ml9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVsyXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ2b2lkIikpWzJdKTsgaWYgKF9fczJfbGVu
ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoInZvaWQiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6
IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pOyByZWdpc3RlciBpbnQg
X19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoInZvaWQiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoInZvaWQiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJ2b2lkIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoInZvaWQiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJj
bXAgKHRva2VuLCAidm9pZCIpKSkpOyB9KSB8fCAhX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19z
MV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRva2VuKSAmJiBfX2J1aWx0
aW5fY29uc3RhbnRfcCAoImludCIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAodG9rZW4pLCBfX3My
X2xlbiA9IHN0cmxlbiAoImludCIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0b2tlbikg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodG9rZW4pID09IDEpIHx8IF9fczFfbGVuID49
IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJpbnQiKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgiaW50IikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgo
X19jb25zdCBjaGFyICopICh0b2tlbiksIChfX2NvbnN0IGNoYXIgKikgKCJpbnQiKSwgKF9fczFf
bGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wICh0b2tlbikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHRva2VuKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0b2tlbikgPT0gMSkgJiYgKF9fczFfbGVuID0gc3Ry
bGVuICh0b2tlbiksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJpbnQi
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImludCIpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKCJpbnQiKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0
b2tlbikpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgi
aW50IikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlb
MV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiaW50Iikp
WzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMl0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiaW50IikpWzJdKTsg
aWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzNdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImludCIpKVszXSk7IH0gfSBfX3Jl
c3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3My
ID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiaW50Iik7IHJl
Z2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICh0b2tlbikpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICh0b2tlbikpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICh0b2tlbikpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJpbnQiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoImludCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJpbnQiKSA9PSAxKSAm
JiAoX19zMl9sZW4gPSBzdHJsZW4gKCJpbnQiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAodG9rZW4pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0b2tlbikgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodG9rZW4pID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopKCJpbnQiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAodG9rZW4pKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJpbnQiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAodG9rZW4pKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJpbnQiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2Vu
KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiaW50
IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHRva2VuKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJpbnQiKSlbMF07IGlmIChfX3My
X2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImludCIpKVsxXSk7IGlmIChf
X3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImludCIpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJpbnQiKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKHRva2VuLCAiaW50IikpKSk7IH0pKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjX2RlZmluZSh0ZXJtLCAmbG9jYWxzLCB2YXJzKSkgYnJl
YWs7CiAgICAgICAgICAgICAgICB9IGVsc2UKCiAgICAgICAgICAgICAgICBpZiAoIV9fZXh0ZW5z
aW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9w
ICh0b2tlbikgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCJpZiIpICYmIChfX3MxX2xlbiA9IHN0
cmxlbiAodG9rZW4pLCBfX3MyX2xlbiA9IHN0cmxlbiAoImlmIiksICghKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKHRva2VuKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0b2tlbikgPT0g
MSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImlmIikg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImlmIikgPT0gMSkgfHwgX19zMl9sZW4gPj0g
NCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICh0b2tlbiksIChfX2NvbnN0IGNoYXIgKikg
KCJpZiIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkg
OiAoX19idWlsdGluX2NvbnN0YW50X3AgKHRva2VuKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgodG9rZW4pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRva2VuKSA9PSAxKSAmJiAo
X19zMV9sZW4gPSBzdHJsZW4gKHRva2VuKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCAoImlmIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJpZiIpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKCJpZiIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVn
aXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHRva2VuKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopKCJpZiIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICh0b2tlbikpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoImlmIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2Vu
KSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiaWYi
KSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbM10gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiaWYiKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImlm
Iik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICh0b2tlbikpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+
IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJpZiIpICYmICgoc2l6ZV90KShjb25z
dCB2b2lkICopKCgiaWYiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiaWYiKSA9PSAx
KSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJpZiIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRp
bl9jb25zdGFudF9wICh0b2tlbikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHRva2VuKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0b2tlbikgPT0gMSkgPyAoX19leHRlbnNpb25f
XyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikoImlmIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHRva2VuKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiaWYiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAodG9rZW4pKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJpZiIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4p
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJpZiIp
KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNp
Z25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICh0b2tlbik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiaWYiKSlbMF07IGlmIChfX3MyX2xl
biA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImlmIikpWzFdKTsgaWYgKF9fczJf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiaWYiKSlbMl0pOyBpZiAoX19z
Ml9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiaWYiKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKHRva2VuLCAiaWYiKSkpKTsgfSkgfHwgIV9fZXh0ZW5zaW9u
X18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wICh0
b2tlbikgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCJ3aGlsZSIpICYmIChfX3MxX2xlbiA9IHN0
cmxlbiAodG9rZW4pLCBfX3MyX2xlbiA9IHN0cmxlbiAoIndoaWxlIiksICghKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKHRva2VuKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0b2tlbikg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIndo
aWxlIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIndoaWxlIikgPT0gMSkgfHwgX19z
Ml9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICh0b2tlbiksIChfX2NvbnN0
IGNoYXIgKikgKCJ3aGlsZSIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19z
Ml9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHRva2VuKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgodG9rZW4pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRva2Vu
KSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHRva2VuKSwgX19zMV9sZW4gPCA0KSA/IChf
X2J1aWx0aW5fY29uc3RhbnRfcCAoIndoaWxlIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KCJ3aGlsZSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJ3aGlsZSIpID09IDEpID8g
KF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMF0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJ3aGlsZSIpKVswXSk7IGlmIChfX3MxX2xl
biA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIndoaWxlIikpWzFdKTsgaWYgKF9fczFfbGVuID4g
MSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgid2hpbGUiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYm
IF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHRva2VuKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgid2hpbGUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4
dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIndoaWxlIik7IHJlZ2lzdGVyIGludCBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tl
bikpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0
b2tlbikpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICh0b2tlbikpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAodG9rZW4pKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCJ3aGlsZSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgid2hpbGUi
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgid2hpbGUiKSA9PSAxKSAmJiAoX19zMl9s
ZW4gPSBzdHJsZW4gKCJ3aGlsZSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFu
dF9wICh0b2tlbikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHRva2VuKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSh0b2tlbikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAodG9rZW4pKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikoIndoaWxlIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHRva2VuKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgid2hpbGUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
dG9rZW4pKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJ3aGlsZSIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4p
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ3aGls
ZSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1
bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICh0b2tlbik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgid2hpbGUiKSlbMF07IGlmIChf
X3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIndoaWxlIikpWzFdKTsg
aWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgid2hpbGUiKSlb
Ml0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFb
M10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgid2hpbGUi
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKHRva2VuLCAid2hpbGUiKSkpKTsg
fSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNfY29uZCh0ZXJtLCBsb2NhbHMsIHRv
a2VuKSkgYnJlYWs7CiAgICAgICAgICAgICAgICB9IGVsc2UKCiAgICAgICAgICAgICAgICBpZiAo
IV9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9j
b25zdGFudF9wICh0b2tlbikgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCJlbHNlIikgJiYgKF9f
czFfbGVuID0gc3RybGVuICh0b2tlbiksIF9fczJfbGVuID0gc3RybGVuICgiZWxzZSIpLCAoISgo
c2l6ZV90KShjb25zdCB2b2lkICopKCh0b2tlbikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikodG9rZW4pID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKCJlbHNlIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImVsc2UiKSA9PSAx
KSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSwg
KF9fY29uc3QgY2hhciAqKSAoImVsc2UiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xl
biA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICh0b2tlbikgJiYgKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKHRva2VuKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSh0b2tlbikgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuICh0b2tlbiksIF9fczFfbGVuIDwg
NCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJlbHNlIikgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKCJlbHNlIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImVsc2UiKSA9PSAx
KSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiZWxzZSIpKVswXSk7IGlmIChfX3Mx
X2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzFdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImVsc2UiKSlbMV0pOyBpZiAoX19zMV9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlbHNlIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICh0b2tlbikpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImVsc2UiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4
dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImVsc2UiKTsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2Vu
KSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRv
a2VuKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHRva2VuKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICh0b2tlbikpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoImVsc2UiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImVsc2UiKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZWxzZSIpID09IDEpICYmIChfX3MyX2xlbiA9
IHN0cmxlbiAoImVsc2UiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
dG9rZW4pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0b2tlbikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikodG9rZW4pID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIg
aW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHRva2VuKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopKCJlbHNlIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRv
a2VuKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
ZWxzZSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikp
WzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImVsc2Ui
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbM10gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZWxzZSIpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBj
aGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0
b2tlbik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZWxzZSIpKVswXTsgaWYgKF9fczJfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZWxzZSIpKVsxXSk7IGlmIChfX3MyX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImVsc2UiKSlbMl0pOyBpZiAoX19z
Ml9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZWxzZSIpKVszXSk7IH0gfSBf
X3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAodG9rZW4sICJlbHNlIikpKSk7IH0pKQogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY19lcnJubyA9IDEzOwogICAgICAgICAgICAgICAgZWxzZQoK
ICAgICAgICAgICAgICAgIGlmICghX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9f
czJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRva2VuKSAmJiBfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoImNvbnRpbnVlIikgJiYgKF9fczFfbGVuID0gc3RybGVuICh0b2tlbiksIF9fczJfbGVu
ID0gc3RybGVuICgiY29udGludWUiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgodG9rZW4p
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRva2VuKSA9PSAxKSB8fCBfX3MxX2xlbiA+
PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiY29udGludWUiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiY29udGludWUiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkg
PyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSwgKF9fY29uc3QgY2hhciAqKSAoImNv
bnRpbnVlIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAx
KSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodG9rZW4pICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCh0b2tlbikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodG9rZW4pID09IDEpICYm
IChfX3MxX2xlbiA9IHN0cmxlbiAodG9rZW4pLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wICgiY29udGludWUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImNvbnRp
bnVlIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImNvbnRpbnVlIikgPT0gMSkgPyAo
X19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVswXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImNvbnRpbnVlIikpWzBdKTsgaWYgKF9fczFf
bGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMV0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY29udGludWUiKSlbMV0pOyBpZiAoX19zMV9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVsyXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjb250aW51ZSIpKVsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjb250aW51ZSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsg
fSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY29udGludWUiKTsgcmVn
aXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHRva2VuKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKHRva2VuKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICh0b2tlbikpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
KSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImNvbnRpbnVlIikgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCJjb250aW51ZSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJjb250
aW51ZSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoImNvbnRpbnVlIiksIF9fczJfbGVu
IDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRva2VuKSAmJiAoKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgodG9rZW4pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRva2VuKSA9PSAx
KSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiY29udGludWUiKSlbMF0pOyBpZiAo
X19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVsxXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjb250aW51ZSIpKVsxXSk7IGlmIChf
X3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNvbnRpbnVlIikpWzJdKTsgaWYgKF9f
czJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzNdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNvbnRpbnVlIikpWzNdKTsgfSB9IF9fcmVz
dWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEg
PSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKTsgcmVn
aXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJjb250aW51ZSIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY29udGludWUiKSlbMV0pOyBpZiAoX19zMl9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjb250aW51ZSIpKVsyXSk7IGlmIChf
X3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjb250aW51ZSIpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAodG9rZW4sICJjb250aW51ZSIpKSkpOyB9KSkg
ewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY19jb250aW51ZSgpKSBicmVhazsKICAgICAg
ICAgICAgICAgIH0gZWxzZQoKICAgICAgICAgICAgICAgIGlmICghX19leHRlbnNpb25fXyAoeyBz
aXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRva2VuKSAm
JiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoImJyZWFrIikgJiYgKF9fczFfbGVuID0gc3RybGVuICh0
b2tlbiksIF9fczJfbGVuID0gc3RybGVuICgiYnJlYWsiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgodG9rZW4pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRva2VuKSA9PSAxKSB8
fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYnJlYWsiKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYnJlYWsiKSA9PSAxKSB8fCBfX3MyX2xlbiA+
PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSwgKF9fY29uc3QgY2hhciAq
KSAoImJyZWFrIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikg
KyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodG9rZW4pICYmICgoc2l6ZV90KShjb25zdCB2
b2lkICopKCh0b2tlbikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodG9rZW4pID09IDEp
ICYmIChfX3MxX2xlbiA9IHN0cmxlbiAodG9rZW4pLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRp
bl9jb25zdGFudF9wICgiYnJlYWsiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImJyZWFr
IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImJyZWFrIikgPT0gMSkgPyAoX19leHRl
bnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9rZW4pKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikoImJyZWFrIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiYnJlYWsiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAodG9rZW4pKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJicmVhayIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAodG9rZW4pKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJicmVhayIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9u
X18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiYnJlYWsiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMF0g
LSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlb
MV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRva2Vu
KSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tl
bikpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoImJyZWFrIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJicmVhayIpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJicmVhayIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0
cmxlbiAoImJyZWFrIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRv
a2VuKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgodG9rZW4pICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKHRva2VuKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICh0b2tlbikpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSgiYnJlYWsiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG9r
ZW4pKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJi
cmVhayIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikp
WzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImJyZWFr
IikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImJyZWFrIikpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHRva2VuKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJicmVhayIpKVswXTsgaWYgKF9fczJfbGVu
ID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYnJlYWsiKSlbMV0pOyBpZiAoX19z
Ml9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJicmVhayIpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJicmVhayIpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAodG9rZW4sICJicmVhayIpKSkpOyB9KSkgewog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoY19icmVhaygpKSBicmVhazsKICAgICAgICAgICAg
ICAgIH0gZWxzZQoKICAgICAgICAgICAgICAgIGlmICghX19leHRlbnNpb25fXyAoeyBzaXplX3Qg
X19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRva2VuKSAmJiBfX2J1
aWx0aW5fY29uc3RhbnRfcCAoInJldHVybiIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAodG9rZW4p
LCBfX3MyX2xlbiA9IHN0cmxlbiAoInJldHVybiIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICop
KCh0b2tlbikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodG9rZW4pID09IDEpIHx8IF9f
czFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJyZXR1cm4iKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgicmV0dXJuIikgPT0gMSkgfHwgX19zMl9sZW4gPj0g
NCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICh0b2tlbiksIChfX2NvbnN0IGNoYXIgKikg
KCJyZXR1cm4iKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSAr
IDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICh0b2tlbikgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKHRva2VuKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0b2tlbikgPT0gMSkg
JiYgKF9fczFfbGVuID0gc3RybGVuICh0b2tlbiksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCJyZXR1cm4iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoInJldHVy
biIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJyZXR1cm4iKSA9PSAxKSA/IChfX2V4
dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tlbikpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgicmV0dXJuIikpWzBdKTsgaWYgKF9fczFfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgicmV0dXJuIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHRva2VuKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgicmV0dXJuIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICh0b2tlbikpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoInJldHVybiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0
ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgicmV0dXJuIik7IHJlZ2lzdGVyIGludCBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0b2tl
bikpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0
b2tlbikpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICh0b2tlbikpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAodG9rZW4pKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCJyZXR1cm4iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoInJldHVy
biIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJyZXR1cm4iKSA9PSAxKSAmJiAoX19z
Ml9sZW4gPSBzdHJsZW4gKCJyZXR1cm4iKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCAodG9rZW4pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0b2tlbikgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikodG9rZW4pID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKHRva2VuKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopKCJyZXR1cm4iKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAodG9rZW4pKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJyZXR1cm4iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAodG9rZW4pKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJyZXR1cm4iKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHRva2VuKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgicmV0dXJuIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHRva2VuKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJyZXR1cm4iKSlb
MF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3Mx
WzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInJldHVy
biIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
InJldHVybiIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJyZXR1cm4iKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKHRva2VuLCAi
cmV0dXJuIikpKSk7IH0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjX3JldHVybih0
ZXJtKSkgYnJlYWs7CiAgICAgICAgICAgICAgICB9IGVsc2UKCiAgICAgICAgICAgICAgICBpZiAo
KnRva2VuICE9ICc7JykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNfZXhwcih0ZXJtLCBs
b2NhbHMsIHRva2VuKSkgYnJlYWs7CgogICAgICAgICAgICAgICAgaWYgKGNfZXJybm8pIGJyZWFr
OwogICAgICAgIH0KCiAgICAgICAgY19mcmVlX2lkZW50KGxvY2FscywgdmFycyk7CgogICAgICAg
IGlmIChjX2Vycm5vICYmIGNfRU9GKSBjX2Vycm5vID0gMTU7CgogICAgICAgIHJldHVybiBjX2Vy
cm5vOwp9CgoKc3RhdGljIHZvaWQgY19kaXJlY3QodW5pb24gY19pbnNuICphZGRyKTsKCgppbnQg
Y19jb21waWxlKGludCAoKmV4dF9nZXRjaGFyKSh2b2lkKSwgdm9pZCAoKmV4dF9yZXdpbmQpKHZv
aWQpLAogICAgICAgIHN0cnVjdCBjX2lkZW50ICpleHRlcm5zKQp7CgogICAgICAgIGNfZGlyZWN0
KCgodm9pZCAqKTApKTsKCgogICAgICAgIGNfZXh0X2dldGNoYXIgPSBleHRfZ2V0Y2hhcjsKICAg
ICAgICBjX2V4dF9yZXdpbmQgPSBleHRfcmV3aW5kOwoKICAgICAgICBjX2NvZGVfc3RhcnQgPSAo
KHZvaWQgKikwKTsKICAgICAgICBjX2RhdGFfc3RhcnQgPSAoKHZvaWQgKikwKTsKCiAgICAgICAg
Zm9yIChjX3Bhc3MgPSAwOyBjX3Bhc3MgPCAyOyBjX3Bhc3MrKykgewogICAgICAgICAgICAgICAg
Y19pbml0KCk7CiAgICAgICAgICAgICAgICBjX2Jsb2NrKDAsIGV4dGVybnMpOwoKICAgICAgICAg
ICAgICAgIGlmICghY19wYXNzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNfZnJlZV9pZGVu
dChjX2Z1bmNzLCAoKHZvaWQgKikwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNfZnJlZV9m
aXh1cChjX2JyZWFrX2ZpeHVwcywgKCh2b2lkICopMCkpOwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgIGlmIChjX2Vycm5vIHx8IGNfcGFzcykgYnJlYWs7CgogICAgICAgICAgICAg
ICAgY19jb2RlX3N0YXJ0ID0gbWVtX2FsbG9jKChzaXplX3QpY19jb2RlX3B0cik7CiAgICAgICAg
ICAgICAgICBjX2RhdGFfc3RhcnQgPSBtZW1fYWxsb2MoKHNpemVfdCljX2RhdGFfcHRyKTsKICAg
ICAgICB9CgogICAgICAgIHJldHVybiBjX2Vycm5vOwp9CgpzdHJ1Y3QgY19pZGVudCAqY19sb29r
dXAoY2hhciAqbmFtZSkKewogICAgICAgIHJldHVybiBjX2ZpbmRfaWRlbnQoY19mdW5jcywgKCh2
b2lkICopMCksIG5hbWUpOwp9Cgp2b2lkIGNfZXhlY3V0ZShzdHJ1Y3QgY19pZGVudCAqZm4pCnsK
CgoKCiAgICAgICAgaWYgKCFmbikgcmV0dXJuOwoKCiAgICAgICAgY19kaXJlY3QoZm4tPmFkZHIp
OwojIDgyNSAiY29tcGlsZXIuYyIKfQoKCgpzdGF0aWMgdm9pZCBjX2RpcmVjdCh1bmlvbiBjX2lu
c24gKmFkZHIpCnsKICAgICAgICB1bmlvbiBjX2luc24gKnBjID0gYWRkcjsKICAgICAgICB1bmlv
biBjX2luc24gKnNwID0gY19zdGFjazsKICAgICAgICBjX2ludCBpbW0gPSAwOwoKICAgICAgICBz
dGF0aWMgdm9pZCAqb3BzW10gPSB7CiAgICAgICAgICAgICAgICAmJm9wX2luZGV4LAogICAgICAg
ICAgICAgICAgJiZvcF9hc3NpZ24sCiAgICAgICAgICAgICAgICAmJm9wX2FkZF9hLAogICAgICAg
ICAgICAgICAgJiZvcF9zdWJfYSwKICAgICAgICAgICAgICAgICYmb3BfbXVsX2EsCiAgICAgICAg
ICAgICAgICAmJm9wX2Rpdl9hLAogICAgICAgICAgICAgICAgJiZvcF9tb2RfYSwKICAgICAgICAg
ICAgICAgICYmb3Bfb3JfYSwKICAgICAgICAgICAgICAgICYmb3BfeG9yX2EsCiAgICAgICAgICAg
ICAgICAmJm9wX2FuZF9hLAogICAgICAgICAgICAgICAgJiZvcF9zaGxfYSwKICAgICAgICAgICAg
ICAgICYmb3Bfc2hyX2EsCiAgICAgICAgICAgICAgICAmJm9wX29yX2ksCiAgICAgICAgICAgICAg
ICAmJm9wX2FuZF9iLAogICAgICAgICAgICAgICAgJiZvcF9ub3RfYiwKICAgICAgICAgICAgICAg
ICYmb3BfZXEsCiAgICAgICAgICAgICAgICAmJm9wX3N1YiwKICAgICAgICAgICAgICAgICYmb3Bf
Z3QsCiAgICAgICAgICAgICAgICAmJm9wX2x0LAogICAgICAgICAgICAgICAgJiZvcF9nZSwKICAg
ICAgICAgICAgICAgICYmb3BfbGUsCiAgICAgICAgICAgICAgICAmJm9wX29yX2ksCiAgICAgICAg
ICAgICAgICAmJm9wX3hvcl9pLAogICAgICAgICAgICAgICAgJiZvcF9hbmRfaSwKICAgICAgICAg
ICAgICAgICYmb3Bfc2hsLAogICAgICAgICAgICAgICAgJiZvcF9zaHIsCiAgICAgICAgICAgICAg
ICAmJm9wX2FkZCwKICAgICAgICAgICAgICAgICYmb3Bfc3ViLAogICAgICAgICAgICAgICAgJiZv
cF9tdWwsCiAgICAgICAgICAgICAgICAmJm9wX2RpdiwKICAgICAgICAgICAgICAgICYmb3BfbW9k
LAogICAgICAgICAgICAgICAgJiZvcF9ub3RfaSwKICAgICAgICAgICAgICAgICYmb3BfbmVnLAog
ICAgICAgICAgICAgICAgJiZvcF9pbmNfbCwKICAgICAgICAgICAgICAgICYmb3BfZGVjX2wsCiAg
ICAgICAgICAgICAgICAmJm9wX2luY19yLAogICAgICAgICAgICAgICAgJiZvcF9kZWNfciwKICAg
ICAgICB9OwoKICAgICAgICBpZiAoIWFkZHIpIHsKICAgICAgICAgICAgICAgIGludCBvcCA9IDA7
CgogICAgICAgICAgICAgICAgY19vcF9yZXR1cm4gPSAmJm9wX3JldHVybjsKICAgICAgICAgICAg
ICAgIGNfb3BfYnogPSAmJm9wX2J6OwogICAgICAgICAgICAgICAgY19vcF9iYSA9ICYmb3BfYmE7
CiAgICAgICAgICAgICAgICBjX29wX3B1c2hfaW1tID0gJiZvcF9wdXNoX2ltbTsKICAgICAgICAg
ICAgICAgIGNfb3BfcHVzaF9tZW0gPSAmJm9wX3B1c2hfbWVtOwogICAgICAgICAgICAgICAgY19v
cF9wb3AgPSAmJm9wX3BvcDsKCiAgICAgICAgICAgICAgICBjX29wX3B1c2hfaW1tX2ltbSA9ICYm
b3BfcHVzaF9pbW1faW1tOwogICAgICAgICAgICAgICAgY19vcF9wdXNoX2ltbV9tZW0gPSAmJm9w
X3B1c2hfaW1tX21lbTsKICAgICAgICAgICAgICAgIGNfb3BfcHVzaF9tZW1faW1tID0gJiZvcF9w
dXNoX21lbV9pbW07CiAgICAgICAgICAgICAgICBjX29wX3B1c2hfbWVtX21lbSA9ICYmb3BfcHVz
aF9tZW1fbWVtOwoKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAg
Y19vcHNbb3BdLm9wID0gb3BzW29wXTsKICAgICAgICAgICAgICAgIH0gd2hpbGUgKGNfb3BzWysr
b3BdLnByZWMpOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGdv
dG8gKihwYysrKS0+b3A7CgpvcF9yZXR1cm46CiAgICAgICAgcmV0dXJuOwoKb3BfYno6CiAgICAg
ICAgaWYgKGltbSkgewogICAgICAgICAgICAgICAgcGMgKz0gMjsKICAgICAgICAgICAgICAgIHNw
IC09IDI7CiAgICAgICAgICAgICAgICBnb3RvICoocGMgLSAxKS0+b3A7CiAgICAgICAgfQogICAg
ICAgIHNwIC09IDI7CgpvcF9iYToKICAgICAgICBwYyA9IHBjLT5wYzsKICAgICAgICBnb3RvICoo
cGMrKyktPm9wOwoKb3BfcHVzaF9pbW06CiAgICAgICAgKHNwIC0gMiktPmltbSA9IGltbTsKICAg
ICAgICBpbW0gPSBwYy0+aW1tOwogICAgICAgIHBjICs9IDI7CiAgICAgICAgc3AgKz0gMjsKICAg
ICAgICBnb3RvICoocGMgLSAxKS0+b3A7CgpvcF9wdXNoX21lbToKICAgICAgICAoc3AgLSAyKS0+
aW1tID0gaW1tOwogICAgICAgIGltbSA9ICooKHNwICsgMSktPm1lbSA9IHBjLT5tZW0pOwogICAg
ICAgIHBjICs9IDI7CiAgICAgICAgc3AgKz0gMjsKICAgICAgICBnb3RvICoocGMgLSAxKS0+b3A7
CgpvcF9wb3A6CiAgICAgICAgc3AgLT0gMjsKICAgICAgICBnb3RvICoocGMrKyktPm9wOwoKb3Bf
cHVzaF9pbW1faW1tOgogICAgICAgIChzcCAtIDIpLT5pbW0gPSBpbW07CiAgICAgICAgc3AtPmlt
bSA9IHBjLT5pbW07CiAgICAgICAgaW1tID0gKHBjICsgMSktPmltbTsKICAgICAgICBwYyArPSAz
OwogICAgICAgIHNwICs9IDQ7CiAgICAgICAgZ290byAqKHBjIC0gMSktPm9wOwoKb3BfcHVzaF9p
bW1fbWVtOgogICAgICAgIChzcCAtIDIpLT5pbW0gPSBpbW07CiAgICAgICAgc3AtPmltbSA9IHBj
LT5pbW07CiAgICAgICAgaW1tID0gKigoc3AgKyAzKS0+bWVtID0gKHBjICsgMSktPm1lbSk7CiAg
ICAgICAgcGMgKz0gMzsKICAgICAgICBzcCArPSA0OwogICAgICAgIGdvdG8gKihwYyAtIDEpLT5v
cDsKCm9wX3B1c2hfbWVtX2ltbToKICAgICAgICAoc3AgLSAyKS0+aW1tID0gaW1tOwogICAgICAg
IHNwLT5pbW0gPSAqKChzcCArIDEpLT5tZW0gPSBwYy0+bWVtKTsKICAgICAgICBpbW0gPSAocGMg
KyAxKS0+aW1tOwogICAgICAgIHBjICs9IDM7CiAgICAgICAgc3AgKz0gNDsKICAgICAgICBnb3Rv
ICoocGMgLSAxKS0+b3A7CgpvcF9wdXNoX21lbV9tZW06CiAgICAgICAgKHNwIC0gMiktPmltbSA9
IGltbTsKICAgICAgICBzcC0+aW1tID0gKigoc3AgKyAxKS0+bWVtID0gcGMtPm1lbSk7CiAgICAg
ICAgaW1tID0gKigoc3AgKyAzKS0+bWVtID0gKHBjICsgMSktPm1lbSk7CiAgICAgICAgcGMgKz0g
MzsKICAgICAgICBzcCArPSA0OwogICAgICAgIGdvdG8gKihwYyAtIDEpLT5vcDsKCm9wX2luZGV4
OgogICAgICAgIGltbSA9ICooKHNwIC0gMyktPm1lbSArPSBpbW0pOwogICAgICAgIHNwIC09IDI7
CiAgICAgICAgZ290byAqKHBjKyspLT5vcDsKCm9wX2Fzc2lnbjoKICAgICAgICAqKHNwIC0gMykt
Pm1lbSA9IGltbTsKICAgICAgICBzcCAtPSAyOwogICAgICAgIGdvdG8gKihwYysrKS0+b3A7Cgpv
cF9hZGRfYToKICAgICAgICBpbW0gPSAqKHNwIC0gMyktPm1lbSArPSBpbW07CiAgICAgICAgc3Ag
LT0gMjsKICAgICAgICBnb3RvICoocGMrKyktPm9wOwoKb3Bfc3ViX2E6CiAgICAgICAgaW1tID0g
KihzcCAtIDMpLT5tZW0gLT0gaW1tOwogICAgICAgIHNwIC09IDI7CiAgICAgICAgZ290byAqKHBj
KyspLT5vcDsKCm9wX211bF9hOgogICAgICAgIGltbSA9ICooc3AgLSAzKS0+bWVtICo9IGltbTsK
ICAgICAgICBzcCAtPSAyOwogICAgICAgIGdvdG8gKihwYysrKS0+b3A7CgpvcF9kaXZfYToKICAg
ICAgICBpbW0gPSAqKHNwIC0gMyktPm1lbSAvPSBpbW07CiAgICAgICAgc3AgLT0gMjsKICAgICAg
ICBnb3RvICoocGMrKyktPm9wOwoKb3BfbW9kX2E6CiAgICAgICAgaW1tID0gKihzcCAtIDMpLT5t
ZW0gJT0gaW1tOwogICAgICAgIHNwIC09IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5vcDsKCm9w
X29yX2E6CiAgICAgICAgaW1tID0gKihzcCAtIDMpLT5tZW0gfD0gaW1tOwogICAgICAgIHNwIC09
IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5vcDsKCm9wX3hvcl9hOgogICAgICAgIGltbSA9ICoo
c3AgLSAzKS0+bWVtIF49IGltbTsKICAgICAgICBzcCAtPSAyOwogICAgICAgIGdvdG8gKihwYysr
KS0+b3A7CgpvcF9hbmRfYToKICAgICAgICBpbW0gPSAqKHNwIC0gMyktPm1lbSAmPSBpbW07CiAg
ICAgICAgc3AgLT0gMjsKICAgICAgICBnb3RvICoocGMrKyktPm9wOwoKb3Bfc2hsX2E6CiAgICAg
ICAgaW1tID0gKihzcCAtIDMpLT5tZW0gPDw9IGltbTsKICAgICAgICBzcCAtPSAyOwogICAgICAg
IGdvdG8gKihwYysrKS0+b3A7CgpvcF9zaHJfYToKICAgICAgICBpbW0gPSAqKHNwIC0gMyktPm1l
bSA+Pj0gaW1tOwogICAgICAgIHNwIC09IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5vcDsKCm9w
X29yX2k6CiAgICAgICAgaW1tIHw9IChzcCAtIDQpLT5pbW07CiAgICAgICAgc3AgLT0gMjsKICAg
ICAgICBnb3RvICoocGMrKyktPm9wOwoKb3BfYW5kX2I6CiAgICAgICAgaW1tID0gKHNwIC0gNCkt
PmltbSAmJiBpbW07CiAgICAgICAgc3AgLT0gMjsKICAgICAgICBnb3RvICoocGMrKyktPm9wOwoK
b3Bfbm90X2I6CiAgICAgICAgaW1tID0gIWltbTsKICAgICAgICBnb3RvICoocGMrKyktPm9wOwoK
b3BfZXE6CiAgICAgICAgaW1tID0gKHNwIC0gNCktPmltbSA9PSBpbW07CiAgICAgICAgc3AgLT0g
MjsKICAgICAgICBnb3RvICoocGMrKyktPm9wOwoKb3BfZ3Q6CiAgICAgICAgaW1tID0gKHNwIC0g
NCktPmltbSA+IGltbTsKICAgICAgICBzcCAtPSAyOwogICAgICAgIGdvdG8gKihwYysrKS0+b3A7
CgpvcF9sdDoKICAgICAgICBpbW0gPSAoc3AgLSA0KS0+aW1tIDwgaW1tOwogICAgICAgIHNwIC09
IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5vcDsKCm9wX2dlOgogICAgICAgIGltbSA9IChzcCAt
IDQpLT5pbW0gPj0gaW1tOwogICAgICAgIHNwIC09IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5v
cDsKCm9wX2xlOgogICAgICAgIGltbSA9IChzcCAtIDQpLT5pbW0gPD0gaW1tOwogICAgICAgIHNw
IC09IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5vcDsKCm9wX3hvcl9pOgogICAgICAgIGltbSBe
PSAoc3AgLSA0KS0+aW1tOwogICAgICAgIHNwIC09IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5v
cDsKCm9wX2FuZF9pOgogICAgICAgIGltbSAmPSAoc3AgLSA0KS0+aW1tOwogICAgICAgIHNwIC09
IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5vcDsKCm9wX3NobDoKICAgICAgICBpbW0gPSAoc3Ag
LSA0KS0+aW1tIDw8IGltbTsKICAgICAgICBzcCAtPSAyOwogICAgICAgIGdvdG8gKihwYysrKS0+
b3A7CgpvcF9zaHI6CiAgICAgICAgaW1tID0gKHNwIC0gNCktPmltbSA+PiBpbW07CiAgICAgICAg
c3AgLT0gMjsKICAgICAgICBnb3RvICoocGMrKyktPm9wOwoKb3BfYWRkOgogICAgICAgIGltbSAr
PSAoc3AgLSA0KS0+aW1tOwogICAgICAgIHNwIC09IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5v
cDsKCm9wX3N1YjoKICAgICAgICBpbW0gPSAoc3AgLSA0KS0+aW1tIC0gaW1tOwogICAgICAgIHNw
IC09IDI7CiAgICAgICAgZ290byAqKHBjKyspLT5vcDsKCm9wX211bDoKICAgICAgICBpbW0gKj0g
KHNwIC0gNCktPmltbTsKICAgICAgICBzcCAtPSAyOwogICAgICAgIGdvdG8gKihwYysrKS0+b3A7
CgpvcF9kaXY6CiAgICAgICAgaW1tID0gKHNwIC0gNCktPmltbSAvIGltbTsKICAgICAgICBzcCAt
PSAyOwogICAgICAgIGdvdG8gKihwYysrKS0+b3A7CgpvcF9tb2Q6CiAgICAgICAgaW1tID0gKHNw
IC0gNCktPmltbSAlIGltbTsKICAgICAgICBzcCAtPSAyOwogICAgICAgIGdvdG8gKihwYysrKS0+
b3A7CgpvcF9ub3RfaToKICAgICAgICBpbW0gPSB+aW1tOwogICAgICAgIGdvdG8gKihwYysrKS0+
b3A7CgpvcF9uZWc6CiAgICAgICAgaW1tID0gLWltbTsKICAgICAgICBnb3RvICoocGMrKyktPm9w
OwoKb3BfaW5jX2w6CiAgICAgICAgKihzcCAtIDEpLT5tZW0gPSArK2ltbTsKICAgICAgICBnb3Rv
ICoocGMrKyktPm9wOwoKb3BfZGVjX2w6CiAgICAgICAgKihzcCAtIDEpLT5tZW0gPSAtLWltbTsK
ICAgICAgICBnb3RvICoocGMrKyktPm9wOwoKb3BfaW5jX3I6CiAgICAgICAgKihzcCAtIDEpLT5t
ZW0gPSBpbW0gKyAxOwogICAgICAgIGdvdG8gKihwYysrKS0+b3A7CgpvcF9kZWNfcjoKICAgICAg
ICAqKHNwIC0gMSktPm1lbSA9IGltbSAtIDE7CiAgICAgICAgZ290byAqKHBjKyspLT5vcDsKfQoK
CgpzdGF0aWMgdm9pZCBjX2Zfb3BfcmV0dXJuKHZvaWQpCnsKICAgICAgICBjX3BjID0gKGNfc3Ag
LT0gMiktPnBjOwp9CgpzdGF0aWMgdm9pZCBjX2Zfb3BfYnoodm9pZCkKewogICAgICAgIGlmICgo
Y19zcCAtPSAyKS0+aW1tKQogICAgICAgICAgICAgICAgY19wYysrOwogICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgIGNfcGMgPSBjX3BjLT5wYzsKfQoKc3RhdGljIHZvaWQgY19mX29wX2JhKHZv
aWQpCnsKICAgICAgICBjX3BjID0gY19wYy0+cGM7Cn0KCnN0YXRpYyB2b2lkIGNfZl9vcF9wdXNo
X2ltbSh2b2lkKQp7CiAgICAgICAgY19zcC0+aW1tID0gKGNfcGMrKyktPmltbTsKICAgICAgICBj
X3NwICs9IDI7Cn0KCnN0YXRpYyB2b2lkIGNfZl9vcF9wdXNoX21lbSh2b2lkKQp7CiAgICAgICAg
KGNfc3ArKyktPmltbSA9ICpjX3BjLT5tZW07CiAgICAgICAgKGNfc3ArKyktPm1lbSA9IChjX3Bj
KyspLT5tZW07Cn0KCnN0YXRpYyB2b2lkIGNfZl9vcF9wb3Aodm9pZCkKewogICAgICAgIGNfc3Ag
LT0gMjsKfQoKc3RhdGljIHZvaWQgY19mX29wX3B1c2hfaW1tX2ltbSh2b2lkKQp7CiAgICAgICAg
Y19zcC0+aW1tID0gKGNfcGMrKyktPmltbTsKICAgICAgICAoY19zcCArIDIpLT5pbW0gPSAoY19w
YysrKS0+aW1tOwogICAgICAgIGNfc3AgKz0gNDsKfQoKc3RhdGljIHZvaWQgY19mX29wX3B1c2hf
aW1tX21lbSh2b2lkKQp7CiAgICAgICAgY19zcC0+aW1tID0gKGNfcGMrKyktPmltbTsKICAgICAg
ICAoY19zcCArIDIpLT5pbW0gPSAqY19wYy0+bWVtOwogICAgICAgIChjX3NwICsgMyktPm1lbSA9
IChjX3BjKyspLT5tZW07CiAgICAgICAgY19zcCArPSA0Owp9CgpzdGF0aWMgdm9pZCBjX2Zfb3Bf
cHVzaF9tZW1faW1tKHZvaWQpCnsKICAgICAgICBjX3NwLT5pbW0gPSAqY19wYy0+bWVtOwogICAg
ICAgIChjX3NwICsgMSktPm1lbSA9IChjX3BjKyspLT5tZW07CiAgICAgICAgKGNfc3AgKyAyKS0+
aW1tID0gKGNfcGMrKyktPmltbTsKICAgICAgICBjX3NwICs9IDQ7Cn0KCnN0YXRpYyB2b2lkIGNf
Zl9vcF9wdXNoX21lbV9tZW0odm9pZCkKewogICAgICAgIGNfc3AtPmltbSA9ICpjX3BjLT5tZW07
CiAgICAgICAgKGNfc3AgKyAxKS0+bWVtID0gKGNfcGMrKyktPm1lbTsKICAgICAgICAoY19zcCAr
IDIpLT5pbW0gPSAqY19wYy0+bWVtOwogICAgICAgIChjX3NwICsgMyktPm1lbSA9IChjX3BjKysp
LT5tZW07CiAgICAgICAgY19zcCArPSA0Owp9CgpzdGF0aWMgdm9pZCBjX29wX2luZGV4KHZvaWQp
CnsKICAgICAgICBjX3NwIC09IDI7CiAgICAgICAgKGNfc3AgLSAyKS0+aW1tID0gKigoY19zcCAt
IDEpLT5tZW0gKz0gY19zcC0+aW1tKTsKfQoKc3RhdGljIHZvaWQgY19vcF9hc3NpZ24odm9pZCkK
ewogICAgICAgIGNfc3AgLT0gMjsKICAgICAgICAoY19zcCAtIDIpLT5pbW0gPSAqKGNfc3AgLSAx
KS0+bWVtID0gY19zcC0+aW1tOwp9CgpzdGF0aWMgdm9pZCBjX29wX2FkZF9hKHZvaWQpCnsKICAg
ICAgICBjX3NwIC09IDI7CiAgICAgICAgKGNfc3AgLSAyKS0+aW1tID0gKihjX3NwIC0gMSktPm1l
bSArPSBjX3NwLT5pbW07Cn0KCnN0YXRpYyB2b2lkIGNfb3Bfc3ViX2Eodm9pZCkKewogICAgICAg
IGNfc3AgLT0gMjsKICAgICAgICAoY19zcCAtIDIpLT5pbW0gPSAqKGNfc3AgLSAxKS0+bWVtIC09
IGNfc3AtPmltbTsKfQoKc3RhdGljIHZvaWQgY19vcF9tdWxfYSh2b2lkKQp7CiAgICAgICAgY19z
cCAtPSAyOwogICAgICAgIChjX3NwIC0gMiktPmltbSA9ICooY19zcCAtIDEpLT5tZW0gKj0gY19z
cC0+aW1tOwp9CgpzdGF0aWMgdm9pZCBjX29wX2Rpdl9hKHZvaWQpCnsKICAgICAgICBjX3NwIC09
IDI7CiAgICAgICAgKGNfc3AgLSAyKS0+aW1tID0gKihjX3NwIC0gMSktPm1lbSAvPSBjX3NwLT5p
bW07Cn0KCnN0YXRpYyB2b2lkIGNfb3BfbW9kX2Eodm9pZCkKewogICAgICAgIGNfc3AgLT0gMjsK
ICAgICAgICAoY19zcCAtIDIpLT5pbW0gPSAqKGNfc3AgLSAxKS0+bWVtICU9IGNfc3AtPmltbTsK
fQoKc3RhdGljIHZvaWQgY19vcF9vcl9hKHZvaWQpCnsKICAgICAgICBjX3NwIC09IDI7CiAgICAg
ICAgKGNfc3AgLSAyKS0+aW1tID0gKihjX3NwIC0gMSktPm1lbSB8PSBjX3NwLT5pbW07Cn0KCnN0
YXRpYyB2b2lkIGNfb3BfeG9yX2Eodm9pZCkKewogICAgICAgIGNfc3AgLT0gMjsKICAgICAgICAo
Y19zcCAtIDIpLT5pbW0gPSAqKGNfc3AgLSAxKS0+bWVtIF49IGNfc3AtPmltbTsKfQoKc3RhdGlj
IHZvaWQgY19vcF9hbmRfYSh2b2lkKQp7CiAgICAgICAgY19zcCAtPSAyOwogICAgICAgIChjX3Nw
IC0gMiktPmltbSA9ICooY19zcCAtIDEpLT5tZW0gJj0gY19zcC0+aW1tOwp9CgpzdGF0aWMgdm9p
ZCBjX29wX3NobF9hKHZvaWQpCnsKICAgICAgICBjX3NwIC09IDI7CiAgICAgICAgKGNfc3AgLSAy
KS0+aW1tID0gKihjX3NwIC0gMSktPm1lbSA8PD0gY19zcC0+aW1tOwp9CgpzdGF0aWMgdm9pZCBj
X29wX3Nocl9hKHZvaWQpCnsKICAgICAgICBjX3NwIC09IDI7CiAgICAgICAgKGNfc3AgLSAyKS0+
aW1tID0gKihjX3NwIC0gMSktPm1lbSA+Pj0gY19zcC0+aW1tOwp9CgpzdGF0aWMgdm9pZCBjX29w
X29yX2kodm9pZCkKewogICAgICAgIGNfc3AgLT0gMjsKICAgICAgICAoY19zcCAtIDIpLT5pbW0g
fD0gY19zcC0+aW1tOwp9CgpzdGF0aWMgdm9pZCBjX29wX2FuZF9iKHZvaWQpCnsKICAgICAgICBj
X3NwIC09IDI7CiAgICAgICAgKGNfc3AgLSAyKS0+aW1tID0gKGNfc3AgLSAyKS0+aW1tICYmIGNf
c3AtPmltbTsKfQoKc3RhdGljIHZvaWQgY19vcF9ub3RfYih2b2lkKQp7CiAgICAgICAgKGNfc3Ag
LSAyKS0+aW1tID0gIShjX3NwIC0gMiktPmltbTsKfQoKc3RhdGljIHZvaWQgY19vcF9lcSh2b2lk
KQp7CiAgICAgICAgY19zcCAtPSAyOwogICAgICAgIChjX3NwIC0gMiktPmltbSA9IChjX3NwIC0g
MiktPmltbSA9PSBjX3NwLT5pbW07Cn0KCnN0YXRpYyB2b2lkIGNfb3BfZ3Qodm9pZCkKewogICAg
ICAgIGNfc3AgLT0gMjsKICAgICAgICAoY19zcCAtIDIpLT5pbW0gPSAoY19zcCAtIDIpLT5pbW0g
PiBjX3NwLT5pbW07Cn0KCnN0YXRpYyB2b2lkIGNfb3BfbHQodm9pZCkKewogICAgICAgIGNfc3Ag
LT0gMjsKICAgICAgICAoY19zcCAtIDIpLT5pbW0gPSAoY19zcCAtIDIpLT5pbW0gPCBjX3NwLT5p
bW07Cn0KCnN0YXRpYyB2b2lkIGNfb3BfZ2Uodm9pZCkKewogICAgICAgIGNfc3AgLT0gMjsKICAg
ICAgICAoY19zcCAtIDIpLT5pbW0gPSAoY19zcCAtIDIpLT5pbW0gPj0gY19zcC0+aW1tOwp9Cgpz
dGF0aWMgdm9pZCBjX29wX2xlKHZvaWQpCnsKICAgICAgICBjX3NwIC09IDI7CiAgICAgICAgKGNf
c3AgLSAyKS0+aW1tID0gKGNfc3AgLSAyKS0+aW1tIDw9IGNfc3AtPmltbTsKfQoKc3RhdGljIHZv
aWQgY19vcF94b3JfaSh2b2lkKQp7CiAgICAgICAgY19zcCAtPSAyOwogICAgICAgIChjX3NwIC0g
MiktPmltbSBePSBjX3NwLT5pbW07Cn0KCnN0YXRpYyB2b2lkIGNfb3BfYW5kX2kodm9pZCkKewog
ICAgICAgIGNfc3AgLT0gMjsKICAgICAgICAoY19zcCAtIDIpLT5pbW0gJj0gY19zcC0+aW1tOwp9
CgpzdGF0aWMgdm9pZCBjX29wX3NobCh2b2lkKQp7CiAgICAgICAgY19zcCAtPSAyOwogICAgICAg
IChjX3NwIC0gMiktPmltbSA8PD0gY19zcC0+aW1tOwp9CgpzdGF0aWMgdm9pZCBjX29wX3Nocih2
b2lkKQp7CiAgICAgICAgY19zcCAtPSAyOwogICAgICAgIChjX3NwIC0gMiktPmltbSA+Pj0gY19z
cC0+aW1tOwp9CgpzdGF0aWMgdm9pZCBjX29wX2FkZCh2b2lkKQp7CiAgICAgICAgY19zcCAtPSAy
OwogICAgICAgIChjX3NwIC0gMiktPmltbSArPSBjX3NwLT5pbW07Cn0KCnN0YXRpYyB2b2lkIGNf
b3Bfc3ViKHZvaWQpCnsKICAgICAgICBjX3NwIC09IDI7CiAgICAgICAgKGNfc3AgLSAyKS0+aW1t
IC09IGNfc3AtPmltbTsKfQoKc3RhdGljIHZvaWQgY19vcF9tdWwodm9pZCkKewogICAgICAgIGNf
c3AgLT0gMjsKICAgICAgICAoY19zcCAtIDIpLT5pbW0gKj0gY19zcC0+aW1tOwp9CgpzdGF0aWMg
dm9pZCBjX29wX2Rpdih2b2lkKQp7CiAgICAgICAgY19zcCAtPSAyOwogICAgICAgIChjX3NwIC0g
MiktPmltbSAvPSBjX3NwLT5pbW07Cn0KCnN0YXRpYyB2b2lkIGNfb3BfbW9kKHZvaWQpCnsKICAg
ICAgICBjX3NwIC09IDI7CiAgICAgICAgKGNfc3AgLSAyKS0+aW1tICU9IGNfc3AtPmltbTsKfQoK
c3RhdGljIHZvaWQgY19vcF9ub3RfaSh2b2lkKQp7CiAgICAgICAgKGNfc3AgLSAyKS0+aW1tID0g
fihjX3NwIC0gMiktPmltbTsKfQoKc3RhdGljIHZvaWQgY19vcF9uZWcodm9pZCkKewogICAgICAg
IChjX3NwIC0gMiktPmltbSA9IC0oY19zcCAtIDIpLT5pbW07Cn0KCnN0YXRpYyB2b2lkIGNfb3Bf
aW5jX2wodm9pZCkKewogICAgICAgICooY19zcCAtIDEpLT5tZW0gPSArKyhjX3NwIC0gMiktPmlt
bTsKfQoKc3RhdGljIHZvaWQgY19vcF9kZWNfbCh2b2lkKQp7CiAgICAgICAgKihjX3NwIC0gMSkt
Pm1lbSA9IC0tKGNfc3AgLSAyKS0+aW1tOwp9CgpzdGF0aWMgdm9pZCBjX29wX2luY19yKHZvaWQp
CnsKICAgICAgICAqKGNfc3AgLSAxKS0+bWVtID0gKGNfc3AgLSAyKS0+aW1tICsgMTsKfQoKc3Rh
dGljIHZvaWQgY19vcF9kZWNfcih2b2lkKQp7CiAgICAgICAgKihjX3NwIC0gMSktPm1lbSA9IChj
X3NwIC0gMiktPmltbSAtIDE7Cn0KCnN0YXRpYyB2b2lkICgqY19vcF9yZXR1cm4pKHZvaWQpID0g
Y19mX29wX3JldHVybjsKc3RhdGljIHZvaWQgKCpjX29wX2J6KSh2b2lkKSA9IGNfZl9vcF9iejsK
c3RhdGljIHZvaWQgKCpjX29wX2JhKSh2b2lkKSA9IGNfZl9vcF9iYTsKc3RhdGljIHZvaWQgKCpj
X29wX3B1c2hfaW1tKSh2b2lkKSA9IGNfZl9vcF9wdXNoX2ltbTsKc3RhdGljIHZvaWQgKCpjX29w
X3B1c2hfbWVtKSh2b2lkKSA9IGNfZl9vcF9wdXNoX21lbTsKc3RhdGljIHZvaWQgKCpjX29wX3Bv
cCkodm9pZCkgPSBjX2Zfb3BfcG9wOwoKc3RhdGljIHZvaWQgKCpjX29wX3B1c2hfaW1tX2ltbSko
dm9pZCkgPSBjX2Zfb3BfcHVzaF9pbW1faW1tOwpzdGF0aWMgdm9pZCAoKmNfb3BfcHVzaF9pbW1f
bWVtKSh2b2lkKSA9IGNfZl9vcF9wdXNoX2ltbV9tZW07CnN0YXRpYyB2b2lkICgqY19vcF9wdXNo
X21lbV9pbW0pKHZvaWQpID0gY19mX29wX3B1c2hfbWVtX2ltbTsKc3RhdGljIHZvaWQgKCpjX29w
X3B1c2hfbWVtX21lbSkodm9pZCkgPSBjX2Zfb3BfcHVzaF9tZW1fbWVtOwoKc3RhdGljIHN0cnVj
dCBjX29wIGNfb3BzW10gPSB7CiAgICAgICAgezEsIDAsIDAsICJbIiwgY19vcF9pbmRleH0sCiAg
ICAgICAgezIsIDEsIDAsICI9IiwgY19vcF9hc3NpZ259LAogICAgICAgIHsyLCAxLCAwLCAiKz0i
LCBjX29wX2FkZF9hfSwKICAgICAgICB7MiwgMSwgMCwgIi09IiwgY19vcF9zdWJfYX0sCiAgICAg
ICAgezIsIDEsIDAsICIqPSIsIGNfb3BfbXVsX2F9LAogICAgICAgIHsyLCAxLCAwLCAiLz0iLCBj
X29wX2Rpdl9hfSwKICAgICAgICB7MiwgMSwgMCwgIiU9IiwgY19vcF9tb2RfYX0sCiAgICAgICAg
ezIsIDEsIDAsICJ8PSIsIGNfb3Bfb3JfYX0sCiAgICAgICAgezIsIDEsIDAsICJePSIsIGNfb3Bf
eG9yX2F9LAogICAgICAgIHsyLCAxLCAwLCAiJj0iLCBjX29wX2FuZF9hfSwKICAgICAgICB7Miwg
MSwgMCwgIjw8PSIsIGNfb3Bfc2hsX2F9LAogICAgICAgIHsyLCAxLCAwLCAiPj49IiwgY19vcF9z
aHJfYX0sCiAgICAgICAgezMsIDAsIDAsICJ8fCIsIGNfb3Bfb3JfaX0sCiAgICAgICAgezQsIDAs
IDAsICImJiIsIGNfb3BfYW5kX2J9LAogICAgICAgIHs1LCAxLCAxLCAiISIsIGNfb3Bfbm90X2J9
LAogICAgICAgIHs2LCAwLCAwLCAiPT0iLCBjX29wX2VxfSwKICAgICAgICB7NiwgMCwgMCwgIiE9
IiwgY19vcF9zdWJ9LAogICAgICAgIHs2LCAwLCAwLCAiPiIsIGNfb3BfZ3R9LAogICAgICAgIHs2
LCAwLCAwLCAiPCIsIGNfb3BfbHR9LAogICAgICAgIHs2LCAwLCAwLCAiPj0iLCBjX29wX2dlfSwK
ICAgICAgICB7NiwgMCwgMCwgIjw9IiwgY19vcF9sZX0sCiAgICAgICAgezcsIDAsIDAsICJ8Iiwg
Y19vcF9vcl9pfSwKICAgICAgICB7NywgMCwgMCwgIl4iLCBjX29wX3hvcl9pfSwKICAgICAgICB7
OCwgMCwgMCwgIiYiLCBjX29wX2FuZF9pfSwKICAgICAgICB7OSwgMCwgMCwgIjw8IiwgY19vcF9z
aGx9LAogICAgICAgIHs5LCAwLCAwLCAiPj4iLCBjX29wX3Nocn0sCiAgICAgICAgezEwLCAwLCAw
LCAiKyIsIGNfb3BfYWRkfSwKICAgICAgICB7MTAsIDAsIDAsICItIiwgY19vcF9zdWJ9LAogICAg
ICAgIHsxMSwgMCwgMCwgIioiLCBjX29wX211bH0sCiAgICAgICAgezExLCAwLCAwLCAiLyIsIGNf
b3BfZGl2fSwKICAgICAgICB7MTEsIDAsIDAsICIlIiwgY19vcF9tb2R9LAogICAgICAgIHsxMiwg
MSwgMSwgIn4iLCBjX29wX25vdF9pfSwKICAgICAgICB7MTIsIDEsIDEsICItIiwgY19vcF9uZWd9
LAogICAgICAgIHsxMiwgMCwgMSwgIisrIiwgY19vcF9pbmNfbH0sCiAgICAgICAgezEyLCAwLCAx
LCAiLS0iLCBjX29wX2RlY19sfSwKICAgICAgICB7MTIsIDAsIDIsICIrKyIsIGNfb3BfaW5jX3J9
LAogICAgICAgIHsxMiwgMCwgMiwgIi0tIiwgY19vcF9kZWNfcn0sCiAgICAgICAgezB9Cn07Cg==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]