other/10890: internal compiler error: in merge_assigned_reloads, at reload1.c:6134

[email protected]
Newsgroups gmane.comp.gcc.prs
Message-ID <[email protected]>
>Number:         10890
>Category:       other
>Synopsis:       internal compiler error: in merge_assigned_reloads, at reload1.c:6134
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue May 20 21:56:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     [email protected]
>Release:        3.3
>Organization:
>Environment:
linux x86
>Description:
note that I submitted this bug before, but forgot some information.

the compiler stops with the following message (when trying to compile linux 2.4.21-rc2):

sched.c: In function `schedule':
sched.c:709: internal compiler error: in merge_assigned_reloads, at reload1.c:6134

some info about gcc:
 --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --enable-languages=c,c++,f77,objc,java,ada --disable-checking --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i486-suse-linux
Thread model: posix
gcc-Version 3.3
>How-To-Repeat:
gcc -D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=pentium3 -mcpu=pentium4   -nostdinc -iwithprefix include -DKBUILD_BASENAME=sched  -fno-omit-frame-pointer -c -o sched.o sched.c
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="sched.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sched.i"

IyAxICJzY2hlZC5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCiMgMSAi
c2NoZWQuYyIKIyAyMiAic2NoZWQuYyIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9jb25maWcuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2F1dG9jb25mLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMgojIDIzICJzY2hlZC5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvbW0uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9hc20vcGFyYW0uaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiIDIKCmV4dGVybiB1bnNpZ25lZCBsb25nIGV2ZW50OwoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcHRyYWNlLmgiIDEKIyAyNCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcHRyYWNlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAxCiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RydWN0IHB0X3JlZ3MgewogICAgICAgIGxvbmcgZWJ4
OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcgZXNpOwog
ICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4OwogICAg
ICAgIGludCB4ZHM7CiAgICAgICAgaW50IHhlczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAg
ICAgIGxvbmcgZWlwOwogICAgICAgIGludCB4Y3M7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAg
ICAgbG9uZyBlc3A7CiAgICAgICAgaW50IHhzczsKfTsKIyA2MCAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0
X3JlZ3MgKik7CiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3B0cmFj
ZS5oIiAyCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmluZm10cy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5o
IiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHku
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMg
MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgNSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDM2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIgp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmZHNfYml0cyBbKDEwMjQvKDggKiBzaXpl
b2YodW5zaWduZWQgbG9uZykpKV07Cn0gX19rZXJuZWxfZmRfc2V0OwoKCnR5cGVkZWYgdm9pZCAo
Kl9fa2VybmVsX3NpZ2hhbmRsZXJfdCkoaW50KTsKCgp0eXBlZGVmIGludCBfX2tlcm5lbF9rZXlf
dDsKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgi
IDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgi
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZGV2X3Q7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBfX2tlcm5lbF9pbm9fdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9tb2Rl
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfbmxpbmtfdDsKdHlwZWRlZiBsb25n
IF9fa2VybmVsX29mZl90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9waWRfdDsKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBfX2tlcm5lbF9pcGNfcGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19r
ZXJuZWxfdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3NpemVfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfc3Np
emVfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgX19rZXJu
ZWxfdGltZV90Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9u
ZyBfX2tlcm5lbF9jbG9ja190Owp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90Owp0eXBlZGVm
IGNoYXIgKiBfX2tlcm5lbF9jYWRkcl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVs
X3VpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkMTZfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfdWlkMzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19r
ZXJuZWxfZ2lkMzJfdDsKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX3VpZF90
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF9naWRfdDsKCgp0eXBlZGVmIGxv
bmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgICAgICBpbnQg
dmFsWzJdOwoKCgp9IF9fa2VybmVsX2ZzaWRfdDsKIyA0NyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL3R5cGVzLmgiIDEKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1bW9kZV90OwoK
CgoKCgp0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
X191ODsKCnR5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBfX3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBfX3UxNjsKCnR5cGVkZWYgX19zaWduZWRfXyBpbnQgX19zMzI7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fdTMyOwoKCnR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7CnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwojIDMyICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vdHlwZXMuaCIKdHlwZWRlZiBzaWduZWQgY2hhciBzODsKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIHU4OwoKdHlwZWRlZiBzaWduZWQgc2hvcnQgczE2Owp0eXBlZGVmIHVuc2lnbmVk
IHNob3J0IHUxNjsKCnR5cGVkZWYgc2lnbmVkIGludCBzMzI7CnR5cGVkZWYgdW5zaWduZWQgaW50
IHUzMjsKCnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBsb25nIHU2NDsKIyA1MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3R5cGVz
LmgiCnR5cGVkZWYgdTMyIGRtYV9hZGRyX3Q7Cgp0eXBlZGVmIHU2NCBkbWE2NF9hZGRyX3Q7CiMg
MTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDIKCgoKdHlw
ZWRlZiBfX2tlcm5lbF9mZF9zZXQgZmRfc2V0Owp0eXBlZGVmIF9fa2VybmVsX2Rldl90IGRldl90
Owp0eXBlZGVmIF9fa2VybmVsX2lub190IGlub190Owp0eXBlZGVmIF9fa2VybmVsX21vZGVfdCBt
b2RlX3Q7CnR5cGVkZWYgX19rZXJuZWxfbmxpbmtfdCBubGlua190Owp0eXBlZGVmIF9fa2VybmVs
X29mZl90IG9mZl90Owp0eXBlZGVmIF9fa2VybmVsX3BpZF90IHBpZF90Owp0eXBlZGVmIF9fa2Vy
bmVsX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2tlcm5lbF9rZXlfdCBrZXlfdDsKdHlwZWRl
ZiBfX2tlcm5lbF9zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgp0eXBlZGVmIF9fa2VybmVsX3Vp
ZDMyX3QgdWlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZ2lkMzJfdCBnaWRfdDsKdHlwZWRlZiBfX2tl
cm5lbF91aWQxNl90IHVpZDE2X3Q7CnR5cGVkZWYgX19rZXJuZWxfZ2lkMTZfdCBnaWQxNl90OwoK
Cgp0eXBlZGVmIF9fa2VybmVsX29sZF91aWRfdCBvbGRfdWlkX3Q7CnR5cGVkZWYgX19rZXJuZWxf
b2xkX2dpZF90IG9sZF9naWRfdDsKIyA1MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9sb2ZmX3QgbG9mZl90OwojIDYxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90eXBlcy5oIgp0eXBlZGVmIF9fa2VybmVs
X3NpemVfdCBzaXplX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX3NzaXplX3Qgc3NpemVfdDsKCgoK
CnR5cGVkZWYgX19rZXJuZWxfcHRyZGlmZl90IHB0cmRpZmZfdDsKCgoKCnR5cGVkZWYgX19rZXJu
ZWxfdGltZV90IHRpbWVfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfY2xvY2tfdCBjbG9ja190OwoK
CgoKdHlwZWRlZiBfX2tlcm5lbF9jYWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQg
Y2hhciB1X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CgoKdHlwZWRlZiB1
bnNpZ25lZCBjaGFyIHVuY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVpbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKCgoKCnR5
cGVkZWYgX191OCB1X2ludDhfdDsKdHlwZWRlZiBfX3M4IGludDhfdDsKdHlwZWRlZiBfX3UxNiB1
X2ludDE2X3Q7CnR5cGVkZWYgX19zMTYgaW50MTZfdDsKdHlwZWRlZiBfX3UzMiB1X2ludDMyX3Q7
CnR5cGVkZWYgX19zMzIgaW50MzJfdDsKCgoKdHlwZWRlZiBfX3U4IHVpbnQ4X3Q7CnR5cGVkZWYg
X191MTYgdWludDE2X3Q7CnR5cGVkZWYgX191MzIgdWludDMyX3Q7CgoKdHlwZWRlZiBfX3U2NCB1
aW50NjRfdDsKdHlwZWRlZiBfX3U2NCB1X2ludDY0X3Q7CnR5cGVkZWYgX19zNjQgaW50NjRfdDsK
IyAxMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnN0cnVj
dCB1c3RhdCB7CiAgICAgICAgX19rZXJuZWxfZGFkZHJfdCBmX3RmcmVlOwogICAgICAgIF9fa2Vy
bmVsX2lub190IGZfdGlub2RlOwogICAgICAgIGNoYXIgZl9mbmFtZVs2XTsKICAgICAgICBjaGFy
IGZfZnBhY2tbNl07Cn07CiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2NhcGFiaWxpdHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKIyAx
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxCiMgMTIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC93YWl0LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvd2FpdC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2tlcm5lbC5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2tlcm5lbC5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzMuMy9p
bmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQzICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1s
aW51eC8zLjMvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3Qg
X19nbnVjX3ZhX2xpc3Q7CiMgMTA1ICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8z
LjMvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsK
IyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKCgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb21waWxlci5oIiAxCiMg
MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAxCiMgMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIKc3RhdGljIF9faW5s
aW5lX18gX19jb25zdF9fIF9fdTMyIF9fX2FyY2hfX3N3YWIzMihfX3UzMiB4KQp7CgogICAgICAg
IF9fYXNtX18oImJzd2FwICUwIiA6ICI9ciIgKHgpIDogIjAiICh4KSk7CgoKCgoKCgogICAgICAg
IHJldHVybiB4Owp9CgoKCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UxNiBfX19hcmNo
X19zd2FiMTYoX191MTYgeCkKewogICAgICAgIF9fYXNtX18oInhjaGdiICViMCwlaDAiCiAgICAg
ICAgICAgICAgICA6ICI9cSIgKHgpCiAgICAgICAgICAgICAgICA6ICIwIiAoeCkpOwogICAgICAg
ICAgICAgICAgcmV0dXJuIHg7Cn0KCgpzdGF0aWMgaW5saW5lIF9fdTY0IF9fX2FyY2hfX3N3YWI2
NChfX3U2NCB2YWwpCnsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBf
X3UzMiBhLGI7IH0gczsKICAgICAgICAgICAgICAgIF9fdTY0IHU7CiAgICAgICAgfSB2OwogICAg
ICAgIHYudSA9IHZhbDsKCiAgICAgICAgYXNtKCJic3dhcGwgJTAgOyBic3dhcGwgJTEgOyB4Y2hn
bCAlMCwlMSIKICAgICAgICAgICAgOiAiPXIiICh2LnMuYSksICI9ciIgKHYucy5iKQogICAgICAg
ICAgICA6ICIwIiAodi5zLmEpLCAiMSIgKHYucy5iKSk7CgoKCgoKICAgICAgICByZXR1cm4gdi51
Owp9CiMgNjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxl
X2VuZGlhbi5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2J5
dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIgMQojIDE1OSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIKc3RhdGljIF9faW5saW5lX18gX19jb25z
dF9fIF9fdTE2IF9fZnN3YWIxNihfX3UxNiB4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3
YWIxNih4KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UxNiBfX3N3YWIxNnAoX191MTYgKngpCnsK
ICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjE2KCooeCkpOwp9CnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgX19zd2FiMTZzKF9fdTE2ICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0gX19f
YXJjaF9fc3dhYjE2KCooKGFkZHIpKSk7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgX19pbmxpbmVf
XyBfX2NvbnN0X18gX191MzIgX19mc3dhYjI0KF9fdTMyIHgpCnsKICAgICAgICByZXR1cm4gKHsg
X191MzIgX190bXAgPSAoeCkgOyAoeyBfX3UzMiBfX3ggPSAoX190bXApOyAoKF9fdTMyKSggKChf
X3ggJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAxNikgfCAoX194ICYgKF9fdTMyKTB4MDAwMGZm
MDBVTCkgfCAoKF9feCAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+IDE2KSApKTsgfSk7IH0pOwp9
CnN0YXRpYyBfX2lubGluZV9fIF9fdTMyIF9fc3dhYjI0cChfX3UzMiAqeCkKewogICAgICAgIHJl
dHVybiAoeyBfX3UzMiBfX3RtcCA9ICgqKHgpKSA7ICh7IF9fdTMyIF9feCA9IChfX3RtcCk7ICgo
X191MzIpKCAoKF9feCAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDE2KSB8IChfX3ggJiAoX191
MzIpMHgwMDAwZmYwMFVMKSB8ICgoX194ICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gMTYpICkp
OyB9KTsgfSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3N3YWIyNHMoX191MzIgKmFkZHIp
CnsKICAgICAgICBkbyB7ICooYWRkcikgPSAoeyBfX3UzMiBfX3RtcCA9ICgqKChhZGRyKSkpIDsg
KHsgX191MzIgX194ID0gKF9fdG1wKTsgKChfX3UzMikoICgoX194ICYgKF9fdTMyKTB4MDAwMDAw
ZmZVTCkgPDwgMTYpIHwgKF9feCAmIChfX3UzMikweDAwMDBmZjAwVUwpIHwgKChfX3ggJiAoX191
MzIpMHgwMGZmMDAwMFVMKSA+PiAxNikgKSk7IH0pOyB9KTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRp
YyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UzMiBfX2Zzd2FiMzIoX191MzIgeCkKewogICAgICAg
IHJldHVybiBfX19hcmNoX19zd2FiMzIoeCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MzIgX19z
d2FiMzJwKF9fdTMyICp4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIzMigqKHgpKTsK
fQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjMycyhfX3UzMiAqYWRkcikKewogICAgICAg
IGRvIHsgKihhZGRyKSA9IF9fX2FyY2hfX3N3YWIzMigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsK
fQoKCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3U2NCBfX2Zzd2FiNjQoX191NjQgeCkK
ewoKCgoKCiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWI2NCh4KTsKCn0Kc3RhdGljIF9faW5s
aW5lX18gX191NjQgX19zd2FiNjRwKF9fdTY0ICp4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hf
X3N3YWI2NCgqKHgpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjY0cyhfX3U2NCAq
YWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9IF9fX2FyY2hfX3N3YWI2NCgqKChhZGRyKSkp
OyB9IHdoaWxlICgwKTsKfQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAyCiMgODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMQojIDE1MCAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIK
ZXh0ZXJuIF9fdTMyIG50b2hsKF9fdTMyKTsKZXh0ZXJuIF9fdTMyIGh0b25sKF9fdTMyKTsKCgoK
CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgbnRvaHModW5zaWduZWQgc2hvcnQgaW50KTsKZXh0
ZXJuIHVuc2lnbmVkIHNob3J0IGludCBodG9ucyh1bnNpZ25lZCBzaG9ydCBpbnQpOwojIDgzICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlh
bi5oIiAyCiMgNjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIu
aCIgMgojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIg
MgojIDQxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKZXh0
ZXJuIGludCBjb25zb2xlX3ByaW50a1tdOwojIDU4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9rZXJuZWwuaCIKc3RydWN0IGNvbXBsZXRpb247CgpleHRlcm4gc3RydWN0IG5v
dGlmaWVyX2Jsb2NrICpwYW5pY19ub3RpZmllcl9saXN0Owogdm9pZCBwYW5pYyhjb25zdCBjaGFy
ICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCBmb3JtYXQgKHBy
aW50ZiwgMSwgMikpKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIGRvX2V4aXQo
bG9uZyBlcnJvcl9jb2RlKQogICAgICAgIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiB2b2lk
IGNvbXBsZXRlX2FuZF9leGl0KHN0cnVjdCBjb21wbGV0aW9uICosIGxvbmcpCiAgICAgICAgX19h
dHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKZXh0ZXJuIGludCBhYnMoaW50KTsKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgc2ltcGxlX3N0cnRvdWwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50
KTsKZXh0ZXJuIGxvbmcgc2ltcGxlX3N0cnRvbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25l
ZCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIHNpbXBsZV9zdHJ0b3VsbChjb25zdCBj
aGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9uZyBsb25nIHNpbXBsZV9zdHJ0
b2xsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgc3ByaW50
ZihjaGFyICogYnVmLCBjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpOwpleHRlcm4gaW50IHZzcHJpbnRmKGNoYXIgKmJ1
ZiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKZXh0ZXJuIGludCBzbnByaW50ZihjaGFyICogYnVm
LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRl
X18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIGludCB2c25wcmludGYoY2hhciAq
YnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoKZXh0ZXJu
IGludCBzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikKICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoZm9ybWF0IChzY2FuZiwyLDMpKSk7CmV4dGVybiBpbnQgdnNzY2FuZihjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CgpleHRlcm4gaW50IGdldF9vcHRpb24o
Y2hhciAqKnN0ciwgaW50ICpwaW50KTsKZXh0ZXJuIGNoYXIgKmdldF9vcHRpb25zKGNoYXIgKnN0
ciwgaW50IG5pbnRzLCBpbnQgKmludHMpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIG1lbXBh
cnNlKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9wcm9iZV9sb2Nr
KHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0ZXJuIGludCBz
ZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBp
bnQgcHJpbnRrKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
Zm9ybWF0IChwcmludGYsIDEsIDIpKSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgY29uc29sZV9zaWxl
bnQodm9pZCkKewogICAgICAgIChjb25zb2xlX3ByaW50a1swXSkgPSAwOwp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgY29uc29sZV92ZXJib3NlKHZvaWQpCnsKICAgICAgICBpZiAoKGNvbnNvbGVfcHJp
bnRrWzBdKSkKICAgICAgICAgICAgICAgIChjb25zb2xlX3ByaW50a1swXSkgPSAxNTsKfQoKZXh0
ZXJuIHZvaWQgYnVzdF9zcGlubG9ja3MoaW50IHllcyk7CmV4dGVybiBpbnQgb29wc19pbl9wcm9n
cmVzczsKCmV4dGVybiBpbnQgdGFpbnRlZDsKZXh0ZXJuIGNvbnN0IGNoYXIgKnByaW50X3RhaW50
ZWQodm9pZCk7CgpleHRlcm4gdm9pZCBkdW1wX3N0YWNrKHZvaWQpOwojIDE3NCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2VybmVsLmgiCmV4dGVybiB2b2lkIF9fb3V0X29m
X2xpbmVfYnVnKGludCBsaW5lKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwoKCgoKCnN0cnVj
dCBzeXNpbmZvIHsKICAgICAgICBsb25nIHVwdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxv
YWRzWzNdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxyYW07CiAgICAgICAgdW5zaWduZWQg
bG9uZyBmcmVlcmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2hhcmVkcmFtOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgYnVmZmVycmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxzd2FwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZXN3YXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJv
Y3M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90
YWxoaWdoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZWhpZ2g7CiAgICAgICAgdW5zaWduZWQg
aW50IG1lbV91bml0OwogICAgICAgIGNoYXIgX2ZbMjAtMipzaXplb2YobG9uZyktc2l6ZW9mKGlu
dCldOwp9OwojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC93YWl0Lmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKCgoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDEK
IyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEKIyAxMCAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS92bTg2LmgiIDEKIyA2OCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL3ZtODYuaCIKc3RydWN0IHZtODZfcmVncyB7CgoKCiAgICAg
ICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7CiAgICAgICAg
bG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAgICAgICAgbG9u
ZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251bGxfZXM7CiAg
ICAgICAgbG9uZyBfX251bGxfZnM7CiAgICAgICAgbG9uZyBfX251bGxfZ3M7CiAgICAgICAgbG9u
ZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywg
X19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2Vz
aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKfTsKCnN0cnVj
dCByZXZlY3RvcmVkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX21hcFs4XTsKfTsK
CnN0cnVjdCB2bTg2X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0
bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVj
dG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0
cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwp9OwoKCgoKCgpzdHJ1Y3Qgdm04NnBsdXNfaW5mb19zdHJ1
Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZm9yY2VfcmV0dXJuX2Zvcl9waWM6MTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHZtODZkYmdfYWN0aXZlOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2
bTg2ZGJnX1RGcGVuZGlnOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyB1bnVzZWQ6Mjg7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBpc192bTg2cHVzOjE7CiAgICAgICAgdW5zaWduZWQgY2hhciB2bTg2
ZGJnX2ludHh4dGFiWzMyXTsKfTsKCnN0cnVjdCB2bTg2cGx1c19zdHJ1Y3QgewogICAgICAgIHN0
cnVjdCB2bTg2X3JlZ3MgcmVnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdV90
eXBlOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsKICAg
ICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKICAgICAgICBz
dHJ1Y3Qgdm04NnBsdXNfaW5mb19zdHJ1Y3Qgdm04NnBsdXM7Cn07CiMgMTQ1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdm04Ni5oIgpzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyB7
CgoKCiAgICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7
CiAgICAgICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAg
ICAgICAgbG9uZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251
bGxfZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9u
ZyBlc3A7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2ln
bmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdz
LCBfX2dzaDsKfTsKCnN0cnVjdCBrZXJuZWxfdm04Nl9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBr
ZXJuZWxfdm04Nl9yZWdzIHJlZ3M7CiMgMTg0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vdm04Ni5oIgogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzY3JlZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAg
ICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0
cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2
bTg2cGx1c19pbmZvX3N0cnVjdCB2bTg2cGx1czsKICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVn
czMyOwojIDIwMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3ZtODYuaCIKfTsK
CnZvaWQgaGFuZGxlX3ZtODZfZmF1bHQoc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZyk7
CmludCBoYW5kbGVfdm04Nl90cmFwKHN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzICosIGxvbmcsIGlu
dCk7CiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAxCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIgMQoj
IDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIgpzdHJ1
Y3QgX2ZwcmVnIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4cmVnIHsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBleHBv
bmVudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9OwoKc3RydWN0IF94bW1y
ZWcgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZWxlbWVudFs0XTsKfTsKCnN0cnVjdCBfZnBzdGF0
ZSB7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHRhZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlwb2ZmOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgY3NzZWw7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhb2Zm
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YXNlbDsKICAgICAgICBzdHJ1Y3QgX2ZwcmVnIF9z
dFs4XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgbWFnaWM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9meHNyX2Vudls2XTsKICAgICAgICB1
bnNpZ25lZCBsb25nIG14Y3NyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQ7CiAgICAg
ICAgc3RydWN0IF9mcHhyZWcgX2Z4c3Jfc3RbOF07CiAgICAgICAgc3RydWN0IF94bW1yZWcgX3ht
bVs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhZGRpbmdbNTZdOwp9OwoKCgpzdHJ1Y3Qgc2ln
Y29udGV4dCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWRp
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJ4OwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZWR4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWN4OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHJhcG5vOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZXJyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGVzcF9hdF9zaWduYWw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3MsIF9fc3NoOwogICAgICAgIHN0cnVjdCBfZnBzdGF0ZSAqIGZwc3RhdGU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBvbGRtYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3IyOwp9OwojIDUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAyCgppbnQgcmVzdG9y
ZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICpidWYpOwppbnQgc2F2ZV9p
Mzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICogYnVmKTsKCgoKCgpzdHJ1Y3Qg
aW5mbyB7CiAgICAgICAgbG9uZyBfX19vcmlnX2VpcDsKICAgICAgICBsb25nIF9fX2VieDsKICAg
ICAgICBsb25nIF9fX2VjeDsKICAgICAgICBsb25nIF9fX2VkeDsKICAgICAgICBsb25nIF9fX2Vz
aTsKICAgICAgICBsb25nIF9fX2VkaTsKICAgICAgICBsb25nIF9fX2VicDsKICAgICAgICBsb25n
IF9fX2VheDsKICAgICAgICBsb25nIF9fX2RzOwogICAgICAgIGxvbmcgX19fZXM7CiAgICAgICAg
bG9uZyBfX19vcmlnX2VheDsKICAgICAgICBsb25nIF9fX2VpcDsKICAgICAgICBsb25nIF9fX2Nz
OwogICAgICAgIGxvbmcgX19fZWZsYWdzOwogICAgICAgIGxvbmcgX19fZXNwOwogICAgICAgIGxv
bmcgX19fc3M7CiAgICAgICAgbG9uZyBfX192bTg2X2VzOwogICAgICAgIGxvbmcgX19fdm04Nl9k
czsKICAgICAgICBsb25nIF9fX3ZtODZfZnM7CiAgICAgICAgbG9uZyBfX192bTg2X2dzOwp9Owoj
IDEyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2VnbWVudC5oIiAxCiMgMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyA0NSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL3BhZ2UuaCIKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBs
b25nIHB0ZV9sb3c7IH0gcHRlX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7
IH0gcG1kX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CgoK
Cgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcGdwcm90OyB9IHBncHJvdF90OwojIDEx
MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3BhZ2UuaCIKc3RhdGljIF9faW5s
aW5lX18gaW50IGdldF9vcmRlcih1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICBpbnQgb3Jk
ZXI7CgogICAgICAgIHNpemUgPSAoc2l6ZS0xKSA+PiAoMTIgLTEpOwogICAgICAgIG9yZGVyID0g
LTE7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgc2l6ZSA+Pj0gMTsKICAgICAgICAgICAg
ICAgIG9yZGVyKys7CiAgICAgICAgfSB3aGlsZSAoc2l6ZSk7CiAgICAgICAgcmV0dXJuIG9yZGVy
Owp9CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIg
MgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIg
MQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCgoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCiMgNiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMgojIDE4ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGhyZWFkcy5oIiAxCiMgMjAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDMzICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCBjcHVpbmZvX3g4NiB7CiAg
ICAgICAgX191OCB4ODY7CiAgICAgICAgX191OCB4ODZfdmVuZG9yOwogICAgICAgIF9fdTggeDg2
X21vZGVsOwogICAgICAgIF9fdTggeDg2X21hc2s7CiAgICAgICAgY2hhciB3cF93b3Jrc19vazsK
ICAgICAgICBjaGFyIGhsdF93b3Jrc19vazsKICAgICAgICBjaGFyIGhhcmRfbWF0aDsKICAgICAg
ICBjaGFyIHJmdTsKICAgICAgICBpbnQgY3B1aWRfbGV2ZWw7CiAgICAgICAgX191MzIgeDg2X2Nh
cGFiaWxpdHlbNF07CiAgICAgICAgY2hhciB4ODZfdmVuZG9yX2lkWzE2XTsKICAgICAgICBjaGFy
IHg4Nl9tb2RlbF9pZFs2NF07CiAgICAgICAgaW50IHg4Nl9jYWNoZV9zaXplOwoKICAgICAgICBp
bnQgZmRpdl9idWc7CiAgICAgICAgaW50IGYwMGZfYnVnOwogICAgICAgIGludCBjb21hX2J1ZzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGxvb3BzX3Blcl9qaWZmeTsKICAgICAgICB1bnNpZ25lZCBs
b25nICpwZ2RfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcG1kX3F1aWNrOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgKnB0ZV9xdWljazsKICAgICAgICB1bnNpZ25lZCBsb25nIHBndGFibGVf
Y2FjaGVfc3o7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpOwoj
IDc0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVy
biBzdHJ1Y3QgY3B1aW5mb194ODYgYm9vdF9jcHVfZGF0YTsKZXh0ZXJuIHN0cnVjdCB0c3Nfc3Ry
dWN0IGluaXRfdHNzWzMyXTsKCgpleHRlcm4gc3RydWN0IGNwdWluZm9feDg2IGNwdV9kYXRhW107
CiMgOTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0
ZXJuIGNoYXIgaWdub3JlX2lycTEzOwoKZXh0ZXJuIHZvaWQgaWRlbnRpZnlfY3B1KHN0cnVjdCBj
cHVpbmZvX3g4NiAqKTsKZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8oc3RydWN0IGNwdWluZm9f
eDg2ICopOwpleHRlcm4gdm9pZCBkb2RneV90c2Modm9pZCk7CiMgMTI3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBjcHVp
ZChpbnQgb3AsIGludCAqZWF4LCBpbnQgKmVieCwgaW50ICplY3gsIGludCAqZWR4KQp7CiAgICAg
ICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKCplYXgpLAogICAgICAg
ICAgICAgICAgICAiPWIiICgqZWJ4KSwKICAgICAgICAgICAgICAgICAgIj1jIiAoKmVjeCksCiAg
ICAgICAgICAgICAgICAgICI9ZCIgKCplZHgpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApKTsK
fQoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWF4KHVuc2lnbmVkIGludCBv
cCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXg7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgog
ICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApCiAg
ICAgICAgICAgICAgICA6ICJieCIsICJjeCIsICJkeCIpOwogICAgICAgIHJldHVybiBlYXg7Cn0K
c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkKewog
ICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVieDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAg
ICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCkKICAgICAgICAgICAgICAgIDog
IjAiIChvcCkKICAgICAgICAgICAgICAgIDogImN4IiwgImR4IiApOwogICAgICAgIHJldHVybiBl
Yng7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWN4KHVuc2lnbmVkIGludCBv
cCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVjeDsKCiAgICAgICAgX19hc21fXygiY3B1
aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9YyIgKGVjeCkKICAgICAgICAgICAg
ICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImR4IiApOwogICAgICAgIHJl
dHVybiBlY3g7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWR4KHVuc2lnbmVk
IGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVkeDsKCiAgICAgICAgX19hc21f
XygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9ZCIgKGVkeCkKICAgICAg
ICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImN4Iik7CiAgICAg
ICAgcmV0dXJuIGVkeDsKfQojIDIwNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L3Byb2Nlc3Nvci5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBtbXVfY3I0X2ZlYXR1cmVzOwoKc3Rh
dGljIGlubGluZSB2b2lkIHNldF9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAg
IG1tdV9jcjRfZmVhdHVyZXMgfD0gbWFzazsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUl
ZWF4XG5cdCIKICAgICAgICAgICAgICAgICJvcmwgJTAsJSVlYXhcblx0IgogICAgICAgICAgICAg
ICAgIm1vdmwgJSVlYXgsJSVjcjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAobWFzaykK
ICAgICAgICAgICAgICAgIDoiYXgiKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2luX2Ny
NCAodW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJlcyAmPSB+bWFz
azsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAg
ICJhbmRsICUwLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCUlY3I0XG4i
CiAgICAgICAgICAgICAgICA6IDogImlyZyIgKH5tYXNrKQogICAgICAgICAgICAgICAgOiJheCIp
Owp9CiMgMjYyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
CmV4dGVybiBpbnQgTUNBX2J1czsKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBtYWNoaW5lX2lkOwpl
eHRlcm4gdW5zaWduZWQgaW50IG1hY2hpbmVfc3VibW9kZWxfaWQ7CmV4dGVybiB1bnNpZ25lZCBp
bnQgQklPU19yZXZpc2lvbjsKZXh0ZXJuIHVuc2lnbmVkIGludCBtY2FfcGVudGl1bV9mbGFnOwoj
IDI4OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1
Y3QgaTM4N19mc2F2ZV9zdHJ1Y3QgewogICAgICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dk
OwogICAgICAgIGxvbmcgdHdkOwogICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwog
ICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2Vb
MjBdOwogICAgICAgIGxvbmcgc3RhdHVzOwp9OwoKc3RydWN0IGkzODdfZnhzYXZlX3N0cnVjdCB7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3dkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3ZDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCB0d2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZm9wOwog
ICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAg
ICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgbXhjc3I7CiAgICAgICAgbG9uZyByZXNlcnZlZDsK
ICAgICAgICBsb25nIHN0X3NwYWNlWzMyXTsKICAgICAgICBsb25nIHhtbV9zcGFjZVszMl07CiAg
ICAgICAgbG9uZyBwYWRkaW5nWzU2XTsKfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoMTYpKSk7
CgpzdHJ1Y3QgaTM4N19zb2Z0X3N0cnVjdCB7CiAgICAgICAgbG9uZyBjd2Q7CiAgICAgICAgbG9u
ZyBzd2Q7CiAgICAgICAgbG9uZyB0d2Q7CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBm
Y3M7CiAgICAgICAgbG9uZyBmb287CiAgICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBzdF9z
cGFjZVsyMF07CiAgICAgICAgdW5zaWduZWQgY2hhciBmdG9wLCBjaGFuZ2VkLCBsb29rYWhlYWQs
IG5vX3VwZGF0ZSwgcm0sIGFsaW1pdDsKICAgICAgICBzdHJ1Y3QgaW5mbyAqaW5mbzsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGVudHJ5X2VpcDsKfTsKCnVuaW9uIGkzODdfdW5pb24gewogICAgICAg
IHN0cnVjdCBpMzg3X2ZzYXZlX3N0cnVjdCBmc2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19meHNh
dmVfc3RydWN0IGZ4c2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19zb2Z0X3N0cnVjdCBzb2Z0Owp9
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VnOwp9IG1tX3NlZ21l
bnRfdDsKCnN0cnVjdCB0c3Nfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiYWNrX2xp
bmssX19ibGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHNzMCxfX3NzMGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AxOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNzMSxfX3NzMWg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AyOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHNzMixfX3NzMmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX2NyMzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGVheCxlY3gsZWR4LGVieDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGVzaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBl
cywgX19lc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdz
LCBfX2dzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZHQsIF9fbGR0aDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCB0cmFjZSwgYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fYml0bWFw
WzMyICsxXTsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9fY2FjaGVsaW5lX2ZpbGxlcls1XTsK
fTsKCnN0cnVjdCB0aHJlYWRfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDA7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmczsKICAgICAgICB1bnNpZ25lZCBsb25nIGdzOwoKICAgICAgICB1
bnNpZ25lZCBsb25nIGRlYnVncmVnWzhdOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGNyMiwgdHJh
cF9ubywgZXJyb3JfY29kZTsKCiAgICAgICAgdW5pb24gaTM4N191bmlvbiBpMzg3OwoKICAgICAg
ICBzdHJ1Y3Qgdm04Nl9zdHJ1Y3QgKiB2bTg2X2luZm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
Y3JlZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdjg2ZmxhZ3MsIHY4Nm1hc2ssIHNh
dmVkX2VzcDA7CgogICAgICAgIGludCBpb3Blcm07CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19i
aXRtYXBbMzIgKzFdOwp9OwojIDQzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CgoKZXh0
ZXJuIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgpleHRlcm4g
aW50IGFyY2hfa2VybmVsX3RocmVhZChpbnQgKCpmbikodm9pZCAqKSwgdm9pZCAqIGFyZywgdW5z
aWduZWQgbG9uZyBmbGFncyk7CgoKZXh0ZXJuIHZvaWQgY29weV9zZWdtZW50cyhzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnAsIHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSk7CmV4dGVybiB2b2lkIHJlbGVhc2Vf
c2VnbWVudHMoc3RydWN0IG1tX3N0cnVjdCAqIG1tKTsKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgbG9uZyB0aHJlYWRfc2F2ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQpCnsKICAgICAg
ICByZXR1cm4gKCh1bnNpZ25lZCBsb25nICopdC0+ZXNwKVszXTsKfQoKdW5zaWduZWQgbG9uZyBn
ZXRfd2NoYW4oc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKIyA0NjQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IG1pY3JvY29kZSB7CiAgICAgICAg
dW5zaWduZWQgaW50IGhkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV2OwogICAgICAgIHVu
c2lnbmVkIGludCBkYXRlOwogICAgICAgIHVuc2lnbmVkIGludCBzaWc7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGNrc3VtOwogICAgICAgIHVuc2lnbmVkIGludCBsZHJ2ZXI7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHBmOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFs1XTsKICAgICAgICB1bnNp
Z25lZCBpbnQgYml0c1s1MDBdOwp9OwoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCByZXBfbm9wKHZv
aWQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmVwO25vcCIpOwp9CiMgMTQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDIKIyA0MyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKc3RhdGljIGlubGlu
ZSB2b2lkIHByZWZldGNoKGNvbnN0IHZvaWQgKngpIHs7fQoKCgoKc3RhdGljIGlubGluZSB2b2lk
IHByZWZldGNodyhjb25zdCB2b2lkICp4KSB7O30KIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9saXN0LmgiIDIKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvbGlzdC5oIgpzdHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkICpuZXh0LCAqcHJldjsKfTsKIyAzNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9o
ZWFkICpuZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
KnByZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5l
eHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gbmV3OwogICAgICAgIG5ldy0+bmV4dCA9IG5leHQ7
CiAgICAgICAgbmV3LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3Owp9CiMg
NTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlu
bGluZSB2b2lkIGxpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVh
ZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLCBoZWFkLT5uZXh0KTsKfQoj
IDY4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBp
bmxpbmUgdm9pZCBsaXN0X2FkZF90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxp
c3RfaGVhZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFk
KTsKfQojIDgwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKnByZXYsIHN0cnVj
dCBsaXN0X2hlYWQgKm5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBw
cmV2LT5uZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9kZWwoc3Ry
dWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKICAgICAgICBfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBl
bnRyeS0+bmV4dCk7CiAgICAgICAgZW50cnktPm5leHQgPSAodm9pZCAqKSAwOwogICAgICAgIGVu
dHJ5LT5wcmV2ID0gKHZvaWQgKikgMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X2Rl
bF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRy
eS0+cHJldiwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsgKGVudHJ5KS0+bmV4dCA9IChlbnRy
eSk7IChlbnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxlICgwKTsKfQoKCgoKCgpzdGF0aWMg
aW5saW5lIHZvaWQgbGlzdF9tb3ZlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVjdCBsaXN0
X2hlYWQgKmhlYWQpCnsKICAgICAgICBfX2xpc3RfZGVsKGxpc3QtPnByZXYsIGxpc3QtPm5leHQp
OwogICAgICAgIGxpc3RfYWRkKGxpc3QsIGhlYWQpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBsaXN0X21vdmVfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIF9fbGlz
dF9kZWwobGlzdC0+cHJldiwgbGlzdC0+bmV4dCk7CiAgICAgICAgbGlzdF9hZGRfdGFpbChsaXN0
LCBoZWFkKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGxpc3RfZW1wdHkoc3RydWN0IGxpc3Rf
aGVhZCAqaGVhZCkKewogICAgICAgIHJldHVybiBoZWFkLT5uZXh0ID09IGhlYWQ7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBfX2xpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCAqbGFzdCA9IGxpc3QtPnByZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAq
YXQgPSBoZWFkLT5uZXh0OwoKICAgICAgICBmaXJzdC0+cHJldiA9IGhlYWQ7CiAgICAgICAgaGVh
ZC0+bmV4dCA9IGZpcnN0OwoKICAgICAgICBsYXN0LT5uZXh0ID0gYXQ7CiAgICAgICAgYXQtPnBy
ZXYgPSBsYXN0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3NwbGljZShzdHJ1Y3Qg
bGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgaWYgKCFs
aXN0X2VtcHR5KGxpc3QpKQogICAgICAgICAgICAgICAgX19saXN0X3NwbGljZShsaXN0LCBoZWFk
KTsKfQojIDE3MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbGlzdC5oIgpz
dGF0aWMgaW5saW5lIHZvaWQgbGlzdF9zcGxpY2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpo
ZWFkKQp7CiAgICAgICAgaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7CiAgICAgICAgICAgICAgICBf
X2xpc3Rfc3BsaWNlKGxpc3QsIGhlYWQpOwogICAgICAgICAgICAgICAgZG8geyAobGlzdCktPm5l
eHQgPSAobGlzdCk7IChsaXN0KS0+cHJldiA9IChsaXN0KTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
fQp9CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMg
NDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RyaW5naWZ5LmgiIDEKIyA0MSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMgojIDU2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMjIgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKdHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGls
ZSBpbnQgY291bnRlcjsgfSBhdG9taWNfdDsKIyA1MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19hZGQoaW50
IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
ICAgICAgICAibG9jayA7ICIgImFkZGwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+
Y291bnRlcikKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0K
IyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgInN1YmwgJTEs
JTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoi
aXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA4NyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX3N1Yl9h
bmRfdGVzdChpbnQgaSwgYXRvbWljX3QgKnYpCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Cgog
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImxvY2sgOyAiICJz
dWJsICUyLCUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAi
PXFtIiAoYykKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJt
ZW1vcnkiKTsKICAgICAgICByZXR1cm4gYzsKfQojIDEwNSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19pbmMo
YXRvbWljX3QgKnYpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAg
ICAgICJsb2NrIDsgIiAiaW5jbCAlMCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVy
KQogICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikpOwp9CiMgMTIwICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQg
YXRvbWljX2RlYyhhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAog
ICAgICAgICAgICAgICAgImxvY2sgOyAiICJkZWNsICUwIgogICAgICAgICAgICAgICAgOiI9bSIg
KHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSk7Cn0KIyAxMzcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5s
aW5lX18gaW50IGF0b21pY19kZWNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGM7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAg
ICAgImxvY2sgOyAiICJkZWNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYt
PmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDog
Im1lbW9yeSIpOwogICAgICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNTcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21p
Y19pbmNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Cgog
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImxvY2sgOyAiICJp
bmNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFt
IiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwogICAg
ICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNzggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19hZGRfbmVnYXRpdmUo
aW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICJsb2NrIDsgIiAiYWRkbCAlMiwl
MDsgc2V0cyAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMp
CiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7
CiAgICAgICAgcmV0dXJuIGM7Cn0KIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vc3BpbmxvY2suaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9y
d2xvY2suaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zcGlubG9j
ay5oIiAyCgoKCmV4dGVybiBpbnQgcHJpbnRrKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CiMgMjYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICAgICAgdm9sYXRpbGUgdW5zaWduZWQgaW50IGxvY2s7CgoKCn0gc3BpbmxvY2tfdDsKIyA4MCAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBzcGluX3VubG9jayhzcGlubG9ja190ICpsb2NrKQp7CgoKCgoKCiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibW92YiAkMSwlMCIgOiI9bSIgKGxv
Y2stPmxvY2spIDogOiAibWVtb3J5IgogICAgICAgICk7Cn0KIyAxMTYgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIgpzdGF0aWMgaW5saW5lIGludCBzcGluX3Ry
eWxvY2soc3BpbmxvY2tfdCAqbG9jaykKewogICAgICAgIGNoYXIgb2xkdmFsOwogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgInhjaGdiICViMCwlMSIKICAgICAg
ICAgICAgICAgIDoiPXEiIChvbGR2YWwpLCAiPW0iIChsb2NrLT5sb2NrKQogICAgICAgICAgICAg
ICAgOiIwIiAoMCkgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZHZhbCA+IDA7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBzcGluX2xvY2soc3BpbmxvY2tfdCAqbG9jaykKewojIDEzNiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiXG4xOlx0IiAibG9jayA7IGRlY2IgJTBc
blx0IiAianMgMmZcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5s
b2NrLiIgInNjaGVkIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2NoZWQiICI6XG5cdCIgIi5lbmRp
ZlxuXHQiICIyOlx0IiAiY21wYiAkMCwlMFxuXHQiICJyZXA7bm9wXG5cdCIgImpsZSAyYlxuXHQi
ICJqbXAgMWJcbiIgIi5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICA6Ij1tIiAobG9jay0+
bG9jaykgOiA6ICJtZW1vcnkiKTsKfQojIDE1MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL3NwaW5sb2NrLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2xhdGlsZSB1bnNp
Z25lZCBpbnQgbG9jazsKCgoKfSByd2xvY2tfdDsKIyAxODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIgpzdGF0aWMgaW5saW5lIHZvaWQgcmVhZF9sb2NrKHJ3
bG9ja190ICpydykKewoKCgoKICAgICAgICBkbyB7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChy
dykpIGFzbSB2b2xhdGlsZSgibG9jayA7ICIgInN1YmwgJDEsJTBcblx0IiAianMgMmZcbiIgIjE6
XG4iICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzY2hl
ZCIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNjaGVkIiAiOlxuXHQiICIuZW5kaWZcblx0IiAiMjpc
dHB1c2hsICUlZWF4XG5cdCIgImxlYWwgJTAsJSVlYXhcblx0IiAiY2FsbCAiICJfX3JlYWRfbG9j
a19mYWlsZWQiICJcblx0IiAicG9wbCAlJWVheFxuXHQiICJqbXAgMWJcbiIgIi5wcmV2aW91c1xu
XHQiIDoiPW0iICgqKHZvbGF0aWxlIGludCAqKXJ3KSA6IDogIm1lbW9yeSIpOyBlbHNlIGFzbSB2
b2xhdGlsZSgibG9jayA7ICIgInN1YmwgJDEsKCUwKVxuXHQiICJqcyAyZlxuIiAiMTpcbiIgIi5z
dWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNjaGVkIiAiXG5c
dCIgIi50ZXh0LmxvY2suIiAic2NoZWQiICI6XG5cdCIgIi5lbmRpZlxuXHQiICIyOlx0Y2FsbCAi
ICJfX3JlYWRfbG9ja19mYWlsZWQiICJcblx0IiAiam1wIDFiXG4iICIucHJldmlvdXNcblx0IiA6
OiJhIiAocncpIDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lk
IHdyaXRlX2xvY2socndsb2NrX3QgKnJ3KQp7CgoKCgogICAgICAgIGRvIHsgaWYgKF9fYnVpbHRp
bl9jb25zdGFudF9wKHJ3KSkgYXNtIHZvbGF0aWxlKCJsb2NrIDsgIiAic3VibCAkIiAiMHgwMTAw
MDAwMCIgIiwoJTApXG5cdCIgImpueiAyZlxuIiAiMTpcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAi
IiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNjaGVkIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAi
c2NoZWQiICI6XG5cdCIgIi5lbmRpZlxuXHQiICIyOlx0cHVzaGwgJSVlYXhcblx0IiAibGVhbCAl
MCwlJWVheFxuXHQiICJjYWxsICIgIl9fd3JpdGVfbG9ja19mYWlsZWQiICJcblx0IiAicG9wbCAl
JWVheFxuXHQiICJqbXAgMWJcbiIgIi5wcmV2aW91c1xuXHQiIDoiPW0iICgqKHZvbGF0aWxlIGlu
dCAqKXJ3KSA6IDogIm1lbW9yeSIpOyBlbHNlIGFzbSB2b2xhdGlsZSgibG9jayA7ICIgInN1Ymwg
JCIgIjB4MDEwMDAwMDAiICIsKCUwKVxuXHQiICJqbnogMmZcbiIgIjE6XG4iICIuc3Vic2VjdGlv
biAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzY2hlZCIgIlxuXHQiICIudGV4
dC5sb2NrLiIgInNjaGVkIiAiOlxuXHQiICIuZW5kaWZcblx0IiAiMjpcdGNhbGwgIiAiX193cml0
ZV9sb2NrX2ZhaWxlZCIgIlxuXHQiICJqbXAgMWJcbiIgIi5wcmV2aW91c1xuXHQiIDo6ImEiIChy
dykgOiAibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgoKCgpzdGF0aWMgaW5saW5lIGludCB3cml0
ZV90cnlsb2NrKHJ3bG9ja190ICpsb2NrKQp7CiAgICAgICAgYXRvbWljX3QgKmNvdW50ID0gKGF0
b21pY190ICopbG9jazsKICAgICAgICBpZiAoYXRvbWljX3N1Yl9hbmRfdGVzdCgweDAxMDAwMDAw
LCBjb3VudCkpCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICBhdG9taWNfYWRkKDB4
MDEwMDAwMDAsIGNvdW50KTsKICAgICAgICByZXR1cm4gMDsKfQojIDU3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgMTU3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgpleHRlcm4gaW50IGF0b21pY19kZWNf
YW5kX2xvY2soYXRvbWljX3QgKmF0b21pYywgc3BpbmxvY2tfdCAqbG9jayk7CgoKCgoKdHlwZWRl
ZiB1bmlvbiB7CiAgICBzcGlubG9ja190IGxvY2s7CiAgICBjaGFyIGZpbGxfdXBbKCgxIDw8ICgo
NSkpKSldOwp9IHNwaW5sb2NrX2NhY2hlbGluZV90IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKCgx
IDw8ICgoNSkpKSkpKTsKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
d2FpdC5oIiAyCiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIKc3RydWN0IF9fd2FpdF9xdWV1ZSB7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwoKICAg
ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiB0YXNrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
dGFza19saXN0OwoKCgoKfTsKdHlwZWRlZiBzdHJ1Y3QgX193YWl0X3F1ZXVlIHdhaXRfcXVldWVf
dDsKIyA3NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdHJ1
Y3QgX193YWl0X3F1ZXVlX2hlYWQgewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsKCgoKCn07CnR5cGVkZWYgc3RydWN0IF9fd2FpdF9x
dWV1ZV9oZWFkIHdhaXRfcXVldWVfaGVhZF90OwojIDE1NSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF93YWl0cXVldWVf
aGVhZCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewoKCgoKICAgICAgICBxLT5sb2NrID0gKHNwaW5s
b2NrX3QpIHsgMSB9OwogICAgICAgIGRvIHsgKCZxLT50YXNrX2xpc3QpLT5uZXh0ID0gKCZxLT50
YXNrX2xpc3QpOyAoJnEtPnRhc2tfbGlzdCktPnByZXYgPSAoJnEtPnRhc2tfbGlzdCk7IH0gd2hp
bGUgKDApOwoKCgoKfQoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1ZXVlX2VudHJ5KHdh
aXRfcXVldWVfdCAqcSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CgoKCgogICAgICAgIHEtPmZs
YWdzID0gMDsKICAgICAgICBxLT50YXNrID0gcDsKCgoKfQoKc3RhdGljIGlubGluZSBpbnQgd2Fp
dHF1ZXVlX2FjdGl2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewoKCgoKCgogICAgICAgIHJldHVy
biAhbGlzdF9lbXB0eSgmcS0+dGFza19saXN0KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRk
X3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsIHdhaXRfcXVldWVfdCAqbmV3KQp7
CiMgMjAzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC93YWl0LmgiCiAgICAg
ICAgbGlzdF9hZGQoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKCgoKc3Rh
dGljIGlubGluZSB2b2lkIF9fYWRkX3dhaXRfcXVldWVfdGFpbCh3YWl0X3F1ZXVlX2hlYWRfdCAq
aGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fp
dF9xdWV1ZV90ICpuZXcpCnsKIyAyMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3dhaXQuaCIKICAgICAgICBsaXN0X2FkZF90YWlsKCZuZXctPnRhc2tfbGlzdCwgJmhlYWQt
PnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV93YWl0X3F1ZXVlKHdh
aXRfcXVldWVfaGVhZF90ICpoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdhaXRfcXVldWVfdCAqb2xkKQp7CgoKCgoKICAgICAgICBs
aXN0X2RlbCgmb2xkLT50YXNrX2xpc3QpOwp9CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvdmZzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20v
c3RhdGZzLmgiIDEKCgoKCgoKCnR5cGVkZWYgX19rZXJuZWxfZnNpZF90IGZzaWRfdDsKCgoKc3Ry
dWN0IHN0YXRmcyB7CiAgICAgICAgbG9uZyBmX3R5cGU7CiAgICAgICAgbG9uZyBmX2JzaXplOwog
ICAgICAgIGxvbmcgZl9ibG9ja3M7CiAgICAgICAgbG9uZyBmX2JmcmVlOwogICAgICAgIGxvbmcg
Zl9iYXZhaWw7CiAgICAgICAgbG9uZyBmX2ZpbGVzOwogICAgICAgIGxvbmcgZl9mZnJlZTsKICAg
ICAgICBfX2tlcm5lbF9mc2lkX3QgZl9mc2lkOwogICAgICAgIGxvbmcgZl9uYW1lbGVuOwogICAg
ICAgIGxvbmcgZl9zcGFyZVs2XTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC92ZnMuaCIgMgojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmV0Lmgi
IDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmV0LmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDEKCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zb2NraW9zLmgiIDEKIyA1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc29ja2V0LmgiIDIKIyA3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvdWlvLmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvdWlvLmgiCnN0cnVjdCBpb3ZlYwp7CiAgICAgICAgdm9pZCAqaW92X2Jhc2U7CiAgICAg
ICAgX19rZXJuZWxfc2l6ZV90IGlvdl9sZW47Cn07CiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDIKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHNhX2Zh
bWlseV90OwoKCgoKCnN0cnVjdCBzb2NrYWRkciB7CiAgICAgICAgc2FfZmFtaWx5X3Qgc2FfZmFt
aWx5OwogICAgICAgIGNoYXIgc2FfZGF0YVsxNF07Cn07CgpzdHJ1Y3QgbGluZ2VyIHsKICAgICAg
ICBpbnQgbF9vbm9mZjsKICAgICAgICBpbnQgbF9saW5nZXI7Cn07CiMgMzQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFn
ZSB7CiAgICAgICAgc2FfZmFtaWx5X3Qgc3NfZmFtaWx5OwoKICAgICAgICBjaGFyIF9fZGF0YVsx
MjggLSBzaXplb2Yoc2FfZmFtaWx5X3QpXTsKCgp9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKChf
X2FsaWdub2ZfXyAoc3RydWN0IHNvY2thZGRyICopKSkpKTsKCgoKCgoKCnN0cnVjdCBtc2doZHIg
ewogICAgICAgIHZvaWQgKiBtc2dfbmFtZTsKICAgICAgICBpbnQgbXNnX25hbWVsZW47CiAgICAg
ICAgc3RydWN0IGlvdmVjICogbXNnX2lvdjsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgbXNnX2lv
dmxlbjsKICAgICAgICB2b2lkICogbXNnX2NvbnRyb2w7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90
IG1zZ19jb250cm9sbGVuOwogICAgICAgIHVuc2lnbmVkIG1zZ19mbGFnczsKfTsKCgoKCgoKCnN0
cnVjdCBjbXNnaGRyIHsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgY21zZ19sZW47CiAgICAgICAg
aW50IGNtc2dfbGV2ZWw7CiAgICAgICAgaW50IGNtc2dfdHlwZTsKfTsKIyAxMTcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpzdGF0aWMgaW5saW5lIHN0cnVj
dCBjbXNnaGRyICogX19jbXNnX254dGhkcih2b2lkICpfX2N0bCwgX19rZXJuZWxfc2l6ZV90IF9f
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAgc3RydWN0IGNtc2doZHIgKiBfX3B0cjsKCiAg
ICAgICAgX19wdHIgPSAoc3RydWN0IGNtc2doZHIqKSgoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNn
KSArICggKChfX2Ntc2ctPmNtc2dfbGVuKStzaXplb2YobG9uZyktMSkgJiB+KHNpemVvZihsb25n
KS0xKSApKTsKICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpKChjaGFyKikoX19wdHIrMSkgLSAo
Y2hhciAqKSBfX2N0bCkgPiBfX3NpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBj
bXNnaGRyICopMDsKCiAgICAgICAgcmV0dXJuIF9fcHRyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVj
dCBjbXNnaGRyICogY21zZ19ueHRoZHIgKHN0cnVjdCBtc2doZHIgKl9fbXNnLCBzdHJ1Y3QgY21z
Z2hkciAqX19jbXNnKQp7CiAgICAgICAgcmV0dXJuIF9fY21zZ19ueHRoZHIoX19tc2ctPm1zZ19j
b250cm9sLCBfX21zZy0+bXNnX2NvbnRyb2xsZW4sIF9fY21zZyk7Cn0KCgoKCgoKCnN0cnVjdCB1
Y3JlZCB7CiAgICAgICAgX191MzIgcGlkOwogICAgICAgIF9fdTMyIHVpZDsKICAgICAgICBfX3Uz
MiBnaWQ7Cn07CiMgMjY0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zb2Nr
ZXQuaCIKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVjKHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBz
dHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGxlbik7CmV4dGVybiBpbnQgbWVtY3B5X2Zyb21pb3ZlY2Vu
ZCh1bnNpZ25lZCBjaGFyICprZGF0YSwgc3RydWN0IGlvdmVjICppb3YsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwgaW50IGxlbik7CmV4dGVybiBpbnQgY3N1bV9w
YXJ0aWFsX2NvcHlfZnJvbWlvdmVjZW5kKHVuc2lnbmVkIGNoYXIgKmtkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgaW50ICpj
c3VtcCk7CgpleHRlcm4gaW50IHZlcmlmeV9pb3ZlYyhzdHJ1Y3QgbXNnaGRyICptLCBzdHJ1Y3Qg
aW92ZWMgKmlvdiwgY2hhciAqYWRkcmVzcywgaW50IG1vZGUpOwpleHRlcm4gaW50IG1lbWNweV90
b2lvdmVjKHN0cnVjdCBpb3ZlYyAqdiwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBsZW4pOwpl
eHRlcm4gdm9pZCBtZW1jcHlfdG9rZXJuZWxpb3ZlYyhzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWdu
ZWQgY2hhciAqa2RhdGEsIGludCBsZW4pOwpleHRlcm4gaW50IG1vdmVfYWRkcl90b191c2VyKHZv
aWQgKmthZGRyLCBpbnQga2xlbiwgdm9pZCAqdWFkZHIsIGludCAqdWxlbik7CmV4dGVybiBpbnQg
bW92ZV9hZGRyX3RvX2tlcm5lbCh2b2lkICp1YWRkciwgaW50IHVsZW4sIHZvaWQgKmthZGRyKTsK
ZXh0ZXJuIGludCBwdXRfY21zZyhzdHJ1Y3QgbXNnaGRyKiwgaW50IGxldmVsLCBpbnQgdHlwZSwg
aW50IGxlbiwgdm9pZCAqZGF0YSk7CiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25ldC5oIiAyCgoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDQ5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZXQuaCIKdHlwZWRlZiBlbnVtIHsKICBTU19G
UkVFID0gMCwKICBTU19VTkNPTk5FQ1RFRCwKICBTU19DT05ORUNUSU5HLAogIFNTX0NPTk5FQ1RF
RCwKICBTU19ESVNDT05ORUNUSU5HCn0gc29ja2V0X3N0YXRlOwojIDY1ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZXQuaCIKc3RydWN0IHNvY2tldAp7CiAgICAgICAgc29j
a2V0X3N0YXRlIHN0YXRlOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHN0
cnVjdCBwcm90b19vcHMgKm9wczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwogICAgICAg
IHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYXN5bmNfbGlzdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAq
ZmlsZTsKICAgICAgICBzdHJ1Y3Qgc29jayAqc2s7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qg
d2FpdDsKCiAgICAgICAgc2hvcnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhc3NjcmVk
Owp9OwoKCgpzdHJ1Y3Qgc2NtX2Nvb2tpZTsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwpzdHJ1Y3Qg
cGFnZTsKCnN0cnVjdCBwcm90b19vcHMgewogIGludCBmYW1pbHk7CgogIGludCAoKnJlbGVhc2Up
IChzdHJ1Y3Qgc29ja2V0ICpzb2NrKTsKICBpbnQgKCpiaW5kKSAoc3RydWN0IHNvY2tldCAqc29j
aywgc3RydWN0IHNvY2thZGRyICp1bXlhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNvY2thZGRyX2xlbik7CiAgaW50ICgqY29ubmVjdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0
cnVjdCBzb2NrYWRkciAqdXNlcnZhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNv
Y2thZGRyX2xlbiwgaW50IGZsYWdzKTsKICBpbnQgKCpzb2NrZXRwYWlyKSAoc3RydWN0IHNvY2tl
dCAqc29jazEsIHN0cnVjdCBzb2NrZXQgKnNvY2syKTsKICBpbnQgKCphY2NlcHQpIChzdHJ1Y3Qg
c29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGZsYWdzKTsKICBpbnQgKCpnZXRuYW1lKSAoc3RydWN0IHNvY2tldCAqc29jaywg
c3RydWN0IHNvY2thZGRyICp1YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdXNv
Y2thZGRyX2xlbiwgaW50IHBlZXIpOwogIHVuc2lnbmVkIGludCAoKnBvbGwpIChzdHJ1Y3QgZmls
ZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3
YWl0KTsKICBpbnQgKCppb2N0bCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBj
bWQsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CiAgaW50ICgq
bGlzdGVuKSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxlbik7CiAgaW50ICgqc2h1dGRvd24p
IChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZmxhZ3MpOwogIGludCAoKnNldHNvY2tvcHQpIChz
dHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgb3B0bGVuKTsKICBpbnQgKCpnZXRzb2Nrb3B0
KSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKm9wdHZhbCwgaW50ICpvcHRsZW4pOwogIGludCAoKnNlbmRt
c2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVu
LCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCpyZWN2bXNnKSAoc3RydWN0IHNvY2tl
dCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgaW50IHRvdGFsX2xlbiwgaW50IGZsYWdzLCBzdHJ1
Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCptbWFwKSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0
cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSk7CiAgc3NpemVf
dCAoKnNlbmRwYWdlKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBhZ2UgKnBhZ2UsIGlu
dCBvZmZzZXQsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpOwp9OwoKc3RydWN0IG5ldF9wcm90b19m
YW1pbHkKewogICAgICAgIGludCBmYW1pbHk7CiAgICAgICAgaW50ICgqY3JlYXRlKShzdHJ1Y3Qg
c29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wpOwoKCiAgICAgICAgc2hvcnQgYXV0aGVudGljYXRp
b247CiAgICAgICAgc2hvcnQgZW5jcnlwdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0X25ldDsK
fTsKCnN0cnVjdCBuZXRfcHJvdG8KewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAg
dm9pZCAoKmluaXRfZnVuYykoc3RydWN0IG5ldF9wcm90byAqKTsKfTsKCmV4dGVybiBpbnQgc29j
a193YWtlX2FzeW5jKHN0cnVjdCBzb2NrZXQgKnNrLCBpbnQgaG93LCBpbnQgYmFuZCk7CmV4dGVy
biBpbnQgc29ja19yZWdpc3RlcihzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseSAqZmFtKTsKZXh0ZXJu
IGludCBzb2NrX3VucmVnaXN0ZXIoaW50IGZhbWlseSk7CmV4dGVybiBzdHJ1Y3Qgc29ja2V0ICpz
b2NrX2FsbG9jKHZvaWQpOwpleHRlcm4gaW50IHNvY2tfY3JlYXRlKGludCBmYW1pbHksIGludCB0
eXBlLCBpbnQgcHJvdG8sIHN0cnVjdCBzb2NrZXQgKiopOwpleHRlcm4gdm9pZCBzb2NrX3JlbGVh
c2Uoc3RydWN0IHNvY2tldCAqKTsKZXh0ZXJuIGludCBzb2NrX3NlbmRtc2coc3RydWN0IHNvY2tl
dCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBzb2NrX3JlY3Ztc2co
c3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuLCBpbnQgZmxhZ3MpOwpl
eHRlcm4gaW50IHNvY2tfcmVhZHZfd3JpdGV2KGludCB0eXBlLCBzdHJ1Y3QgaW5vZGUgKiBpbm9k
ZSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RydWN0IGlvdmVjICogaW92LCBsb25nIGNvdW50LCBsb25nIHNpemUpOwoKZXh0ZXJu
IGludCBuZXRfcmF0ZWxpbWl0KHZvaWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBuZXRfcmFuZG9t
KHZvaWQpOwpleHRlcm4gdm9pZCBuZXRfc3JhbmRvbSh1bnNpZ25lZCBsb25nKTsKIyAxNiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAxCiMgNjcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGtk
ZXZfdDsKIyA3NiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2Rldl90Lmgi
CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWUoa2Rldl90KTsKIyA5MiAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgva2Rldl90LmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
aW50IGtkZXZfdF90b19ucihrZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVk
IGludCkgKChkZXYpID4+IDgpKTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8
PCA4KSAtIDEpKSk7Cn0KCnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7
CiAgICAgICAgaW50IG1ham9yLCBtaW5vcjsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2tkZXZfdC5oIgogICAgICAgIG1ham9yID0gKGRldiA+PiA4KTsKICAgICAg
ICBtaW5vciA9IChkZXYgJiAweGZmKTsKCiAgICAgICAgcmV0dXJuICgoKG1ham9yKSA8PCA4KSB8
IChtaW5vcikpOwp9CiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2lvY3RsLmgiIDEKIyA1
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAyCiMgMTggIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDEKCgoKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tb3VudC5oIiAxCiMgMTkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21vdW50LmgiCnN0cnVjdCB2ZnNtb3VudAp7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfaGFzaDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1u
dF9wYXJlbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X21vdW50cG9pbnQ7CiAgICAgICAg
c3RydWN0IGRlbnRyeSAqbW50X3Jvb3Q7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICptbnRf
c2I7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfbW91bnRzOwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgbW50X2NoaWxkOwogICAgICAgIGF0b21pY190IG1udF9jb3VudDsKICAgICAgICBp
bnQgbW50X2ZsYWdzOwogICAgICAgIGNoYXIgKm1udF9kZXZuYW1lOwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgbW50X2xpc3Q7Cn07CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB2ZnNtb3VudCAqbW50
Z2V0KHN0cnVjdCB2ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYgKG1udCkKICAgICAgICAgICAg
ICAgIGF0b21pY19pbmMoJm1udC0+bW50X2NvdW50KTsKICAgICAgICByZXR1cm4gbW50Owp9Cgpl
eHRlcm4gdm9pZCBfX21udHB1dChzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CgpzdGF0aWMgaW5saW5l
IHZvaWQgbW50cHV0KHN0cnVjdCB2ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYgKG1udCkgewog
ICAgICAgICAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm1udC0+bW50X2NvdW50KSkK
ICAgICAgICAgICAgICAgICAgICAgICAgX19tbnRwdXQobW50KTsKICAgICAgICB9Cn0KIyA4ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMgojIDI1ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RydWN0IHFzdHIgewog
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBs
ZW47CiAgICAgICAgdW5zaWduZWQgaW50IGhhc2g7Cn07CgpzdHJ1Y3QgZGVudHJ5X3N0YXRfdCB7
CiAgICAgICAgaW50IG5yX2RlbnRyeTsKICAgICAgICBpbnQgbnJfdW51c2VkOwogICAgICAgIGlu
dCBhZ2VfbGltaXQ7CiAgICAgICAgaW50IHdhbnRfcGFnZXM7CiAgICAgICAgaW50IGR1bW15WzJd
Owp9OwpleHRlcm4gc3RydWN0IGRlbnRyeV9zdGF0X3QgZGVudHJ5X3N0YXQ7CgoKCgoKCnN0YXRp
YyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgcGFydGlhbF9uYW1lX2hhc2godW5zaWduZWQgbG9u
ZyBjLCB1bnNpZ25lZCBsb25nIHByZXZoYXNoKQp7CiAgICAgICAgcmV0dXJuIChwcmV2aGFzaCAr
IChjIDw8IDQpICsgKGMgPj4gNCkpICogMTE7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25l
ZCBsb25nIGVuZF9uYW1lX2hhc2godW5zaWduZWQgbG9uZyBoYXNoKQp7CiAgICAgICAgcmV0dXJu
ICh1bnNpZ25lZCBpbnQpIGhhc2g7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQg
ZnVsbF9uYW1lX2hhc2goY29uc3QgdW5zaWduZWQgY2hhciAqIG5hbWUsIHVuc2lnbmVkIGludCBs
ZW4pCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGhhc2ggPSAwOwogICAgICAgIHdoaWxlIChsZW4t
LSkKICAgICAgICAgICAgICAgIGhhc2ggPSBwYXJ0aWFsX25hbWVfaGFzaCgqbmFtZSsrLCBoYXNo
KTsKICAgICAgICByZXR1cm4gZW5kX25hbWVfaGFzaChoYXNoKTsKfQoKCgpzdHJ1Y3QgZGVudHJ5
IHsKICAgICAgICBhdG9taWNfdCBkX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBkX2ZsYWdz
OwogICAgICAgIHN0cnVjdCBpbm9kZSAqIGRfaW5vZGU7CiAgICAgICAgc3RydWN0IGRlbnRyeSAq
IGRfcGFyZW50OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9oYXNoOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZF9scnU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2NoaWxkOwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9zdWJkaXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZF9hbGlhczsKICAgICAgICBpbnQgZF9tb3VudGVkOwogICAgICAgIHN0cnVjdCBxc3RyIGRfbmFt
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfdGltZTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5X29w
ZXJhdGlvbnMgKmRfb3A7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICogZF9zYjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGRfdmZzX2ZsYWdzOwogICAgICAgIHZvaWQgKiBkX2ZzZGF0YTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGRfaW5hbWVbMTZdOwp9OwoKc3RydWN0IGRlbnRyeV9vcGVyYXRp
b25zIHsKICAgICAgICBpbnQgKCpkX3JldmFsaWRhdGUpKHN0cnVjdCBkZW50cnkgKiwgaW50KTsK
ICAgICAgICBpbnQgKCpkX2hhc2gpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICopOwog
ICAgICAgIGludCAoKmRfY29tcGFyZSkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKiwg
c3RydWN0IHFzdHIgKik7CiAgICAgICAgaW50ICgqZF9kZWxldGUpKHN0cnVjdCBkZW50cnkgKik7
CiAgICAgICAgdm9pZCAoKmRfcmVsZWFzZSkoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICB2b2lk
ICgqZF9pcHV0KShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKfTsKIyAxMjggIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpleHRlcm4gc3Bpbmxv
Y2tfdCBkY2FjaGVfbG9jazsKIyAxNDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRfZHJvcChzdHJ1Y3QgZGVudHJ5
ICogZGVudHJ5KQp7CiAgICAgICAgc3Bpbl9sb2NrKCZkY2FjaGVfbG9jayk7CiAgICAgICAgbGlz
dF9kZWwoJmRlbnRyeS0+ZF9oYXNoKTsKICAgICAgICBkbyB7ICgmZGVudHJ5LT5kX2hhc2gpLT5u
ZXh0ID0gKCZkZW50cnktPmRfaGFzaCk7ICgmZGVudHJ5LT5kX2hhc2gpLT5wcmV2ID0gKCZkZW50
cnktPmRfaGFzaCk7IH0gd2hpbGUgKDApOwogICAgICAgIHNwaW5fdW5sb2NrKCZkY2FjaGVfbG9j
ayk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBkbmFtZV9leHRlcm5hbChzdHJ1Y3QgZGVudHJ5
ICpkKQp7CiAgICAgICAgcmV0dXJuIGQtPmRfbmFtZS5uYW1lICE9IGQtPmRfaW5hbWU7Cn0KCgoK
CmV4dGVybiB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50cnkgKik7CgoKZXh0ZXJuIHN0cnVj
dCBkZW50cnkgKiBkX2FsbG9jKHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7
CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRl
cm4gdm9pZCBzaHJpbmtfZGNhY2hlX3BhcmVudChzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50
IGRfaW52YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICopOwoKCnN0cnVjdCB6b25lX3N0cnVjdDsKCmV4
dGVybiBpbnQgc2hyaW5rX2RjYWNoZV9tZW1vcnkoaW50LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4g
dm9pZCBwcnVuZV9kY2FjaGUoaW50KTsKCgpleHRlcm4gaW50IHNocmlua19pY2FjaGVfbWVtb3J5
KGludCwgaW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfaWNhY2hlKGludCk7CgoKZXh0ZXJuIGludCBz
aHJpbmtfZHFjYWNoZV9tZW1vcnkoaW50LCB1bnNpZ25lZCBpbnQpOwoKCmV4dGVybiBzdHJ1Y3Qg
ZGVudHJ5ICogZF9hbGxvY19yb290KHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gdm9pZCBkX2dl
bm9jaWRlKHN0cnVjdCBkZW50cnkgKik7CgpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2Fs
aWFzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9wcnVuZV9hbGlhc2VzKHN0cnVjdCBp
bm9kZSAqKTsKCgpleHRlcm4gaW50IGhhdmVfc3VibW91bnRzKHN0cnVjdCBkZW50cnkgKik7CgoK
CgpleHRlcm4gdm9pZCBkX3JlaGFzaChzdHJ1Y3QgZGVudHJ5ICopOwojIDIxMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHZv
aWQgZF9hZGQoc3RydWN0IGRlbnRyeSAqIGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewog
ICAgICAgIGRfaW5zdGFudGlhdGUoZW50cnksIGlub2RlKTsKICAgICAgICBkX3JlaGFzaChlbnRy
eSk7Cn0KCgpleHRlcm4gdm9pZCBkX21vdmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5
ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBz
dHJ1Y3QgcXN0ciAqKTsKCgpleHRlcm4gaW50IGRfdmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqLCBz
dHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIGNoYXIgKiBfX2RfcGF0aChzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgc3RydWN0IHZmc21v
dW50ICosIGNoYXIgKiwgaW50KTsKIyAyNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgZGVudHJ5ICogZGdldChz
dHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBpZiAoZGVudHJ5KSB7CiAgICAgICAgICAg
ICAgICBpZiAoISgoJmRlbnRyeS0+ZF9jb3VudCktPmNvdW50ZXIpKQogICAgICAgICAgICAgICAg
ICAgICAgICBfX291dF9vZl9saW5lX2J1ZygyNDgpOwogICAgICAgICAgICAgICAgYXRvbWljX2lu
YygmZGVudHJ5LT5kX2NvdW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoK
ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2
MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBf
X2lubGluZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAg
IHJldHVybiBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2b2lkIGRwdXQo
c3RydWN0IGRlbnRyeSAqKTsKCnN0YXRpYyBfX2lubGluZV9fIGludCBkX21vdW50cG9pbnQoc3Ry
dWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJuIGRlbnRyeS0+ZF9tb3VudGVkOwp9
CgpleHRlcm4gc3RydWN0IHZmc21vdW50ICpsb29rdXBfbW50KHN0cnVjdCB2ZnNtb3VudCAqLCBz
dHJ1Y3QgZGVudHJ5ICopOwojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RhdC5o
IiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RhdC5oIiAx
CgoKCnN0cnVjdCBfX29sZF9rZXJuZWxfc3RhdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rf
ZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzdF9tb2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210
aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfY3RpbWU7Cn07CgpzdHJ1Y3Qgc3RhdCB7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFk
MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
dF9tb2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxrc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25n
IHN0X2F0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2Vk
MzsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKICAgICAgICB1bnNpZ25lZCBsb25n
IF9fdW51c2VkNTsKfTsKCgoKCnN0cnVjdCBzdGF0NjQgewogICAgICAgIHVuc2lnbmVkIHNob3J0
IHN0X2RldjsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9fcGFkMFsxMF07CgoKICAgICAgICB1bnNp
Z25lZCBsb25nIF9fc3RfaW5vOwoKICAgICAgICB1bnNpZ25lZCBpbnQgc3RfbW9kZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc3Rfbmxpbms7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfdWlkOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfZ2lkOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9y
ZGV2OwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19wYWQzWzEwXTsKCiAgICAgICAgbG9uZyBsb25n
IHN0X3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwoKICAgICAgICB1bnNp
Z25lZCBsb25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNDsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNTsK
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9f
cGFkNjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIF9fcGFkNzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X2lubzsKfTsKIyA3ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zdGF0LmgiIDIKIyAyMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiBjaGFyICogX19fc3RydG9rOwpl
eHRlcm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBj
aGFyICogc3RydG9rKGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcChj
aGFyICoqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3Ryc3BuKGNvbnN0
IGNoYXIgKixjb25zdCBjaGFyICopOwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL3N0cmluZy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSBjaGFyICogc3RyY3B5KGNoYXIgKiBkZXN0LGNv
bnN0IGNoYXIgKnNyYykKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg
ICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIg
JSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0m
RCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgIDoiMCIgKHNyYyksIjEiIChkZXN0KSA6ICJtZW1v
cnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJuY3B5KGNoYXIg
KiBkZXN0LGNvbnN0IGNoYXIgKnNyYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQz
OwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGRlY2wgJTJcblx0IgogICAgICAg
ICJqcyAyZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAg
ICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJy
ZXBcblx0IgogICAgICAgICJzdG9zYlxuIgogICAgICAgICIyOiIKICAgICAgICA6ICI9JlMiIChk
MCksICI9JkQiIChkMSksICI9JmMiIChkMiksICI9JmEiIChkMykKICAgICAgICA6IjAiIChzcmMp
LCIxIiAoZGVzdCksIjIiIChjb3VudCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3Rh
dGljIGlubGluZSBjaGFyICogc3RyY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKiBzcmMpCnsK
aW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVc
blx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcbiIKICAgICAgICAiMTpc
dGxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxc
blx0IgogICAgICAgICJqbmUgMWIiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAi
PSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksICIxIiAoZGVzdCksICIy
IiAoMCksICIzIiAoMHhmZmZmZmZmZik6Im1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRp
YyBpbmxpbmUgY2hhciAqIHN0cm5jYXQoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqIHNyYyxzaXpl
X3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAg
ICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcblx0
IgogICAgICAgICJtb3ZsICU4LCUzXG4iCiAgICAgICAgIjE6XHRkZWNsICUzXG5cdCIKICAgICAg
ICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAg
ICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG4iCiAgICAgICAgIjI6
XHR4b3JsICUyLCUyXG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAgOiAiPSZTIiAoZDApLCAi
PSZEIiAoZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksIjEi
IChkZXN0KSwiMiIgKDApLCIzIiAoMHhmZmZmZmZmZiksICJnIiAoY291bnQpCiAgICAgICAgOiAi
bWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBpbnQgc3RyY21wKGNvbnN0
IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3QpCnsKaW50IGQwLCBkMTsKcmVnaXN0ZXIgaW50IF9f
cmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAg
ICAic2Nhc2Jcblx0IgogICAgICAgICJqbmUgMmZcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUl
YWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJ4b3JsICUlZWF4LCUlZWF4XG5c
dCIKICAgICAgICAiam1wIDNmXG4iCiAgICAgICAgIjI6XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIK
ICAgICAgICAib3JiICQxLCUlYWxcbiIKICAgICAgICAiMzoiCiAgICAgICAgOiI9YSIgKF9fcmVz
KSwgIj0mUyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAgICAgICAgICAgICAgICA6IjEiIChjcyks
IjIiIChjdCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBzdHJuY21wKGNv
bnN0IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3Qsc2l6ZV90IGNvdW50KQp7CnJlZ2lzdGVyIGlu
dCBfX3JlczsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICIx
Olx0ZGVjbCAlM1xuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9kc2Jcblx0Igog
ICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImpuZSAzZlxuXHQiCiAgICAgICAgInRlc3RiICUl
YWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIyOlx0eG9ybCAlJWVheCwl
JWVheFxuXHQiCiAgICAgICAgImptcCA0ZlxuIgogICAgICAgICIzOlx0c2JibCAlJWVheCwlJWVh
eFxuXHQiCiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjQ6IgogICAgICAgICAgICAg
ICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIp
CiAgICAgICAgICAgICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSwiMyIgKGNvdW50KSk7CnJl
dHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNocihjb25zdCBjaGFyICog
cywgaW50IGMpCnsKaW50IGQwOwpyZWdpc3RlciBjaGFyICogX19yZXM7Cl9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0
IgogICAgICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImplIDJmXG5cdCIKICAgICAg
ICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAibW92
bCAkMSwlMVxuIgogICAgICAgICIyOlx0bW92bCAlMSwlMFxuXHQiCiAgICAgICAgImRlY2wgJTAi
CiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSA6ICIxIiAocyksIjAiIChjKSk7CnJl
dHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cnJjaHIoY29uc3QgY2hhciAq
IHMsIGludCBjKQp7CmludCBkMCwgZDE7CnJlZ2lzdGVyIGNoYXIgKiBfX3JlczsKX19hc21fXyBf
X3ZvbGF0aWxlX18oCiAgICAgICAgIm1vdmIgJSVhbCwlJWFoXG4iCiAgICAgICAgIjE6XHRsb2Rz
YlxuXHQiCiAgICAgICAgImNtcGIgJSVhaCwlJWFsXG5cdCIKICAgICAgICAiam5lIDJmXG5cdCIK
ICAgICAgICAibGVhbCAtMSglJWVzaSksJTBcbiIKICAgICAgICAiMjpcdHRlc3RiICUlYWwsJSVh
bFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6Ij1nIiAoX19yZXMpLCAiPSZTIiAoZDAp
LCAiPSZhIiAoZDEpIDoiMCIgKDApLCIxIiAocyksIjIiIChjKSk7CnJldHVybiBfX3JlczsKfQoK
CnN0YXRpYyBpbmxpbmUgc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICogcykKewppbnQgZDA7CnJl
Z2lzdGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5c
dCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJub3RsICUwXG5cdCIKICAgICAgICAiZGVj
bCAlMCIKICAgICAgICA6Ij1jIiAoX19yZXMpLCAiPSZEIiAoZDApIDoiMSIgKHMpLCJhIiAoMCks
ICIwIiAoMHhmZmZmZmZmZikpOwpyZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAq
IF9fbWVtY3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQp7CmludCBk
MCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwIDsgbW92c2xcblx0
IgogICAgICAgICJ0ZXN0YiAkMiwlYjRcblx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAg
Im1vdnN3XG4iCiAgICAgICAgIjE6XHR0ZXN0YiAkMSwlYjRcblx0IgogICAgICAgICJqZSAyZlxu
XHQiCiAgICAgICAgIm1vdnNiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0mYyIgKGQwKSwg
Ij0mRCIgKGQxKSwgIj0mUyIgKGQyKQogICAgICAgIDoiMCIgKG4vNCksICJxIiAobiksIjEiICgo
bG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pCiAgICAgICAgOiAibWVtb3J5Iik7CnJldHVybiAo
dG8pOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9tZW1jcHkodm9pZCAq
IHRvLCBjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4pCnsKICAgICAgICBzd2l0Y2ggKG4pIHsK
ICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRv
OwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2ln
bmVkIGNoYXIgKil0byA9ICooY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb207CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAg
ICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBz
aG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAg
ICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAq
KXRvID0gKihjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAg
ICAgICooMisodW5zaWduZWQgY2hhciAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgY2hhciAq
KWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAg
ICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0g
Kihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAq
KHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAg
ICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgc2hvcnQgKil0bykgPSAqKDIrKGNvbnN0
IHVuc2lnbmVkIHNob3J0ICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
bzsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNp
Z25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAg
ICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2ln
bmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAg
ICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBs
b25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAg
ICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxv
bmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25nICop
dG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAg
ICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICop
ZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0g
KigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZy
b20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAq
KDMrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAgICAgICAgICAg
ICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwog
ICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNv
bnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1
bnNpZ25lZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICooMysodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMysoY29u
c3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDQrKHVu
c2lnbmVkIGxvbmcgKil0bykgPSAqKDQrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgIH0KCgoKCgoKCnsKICAgICAg
ICBpbnQgZDAsIGQxLCBkMjsKICAgICAgICBzd2l0Y2ggKG4gJSA0KSB7CiAgICAgICAgICAgICAg
ICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICIiIDogIj0mYyIg
KGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byks
IjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAgICAg
ICBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c2Ii
IDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChs
b25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAg
ICAgICAgICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJc
blx0bW92c3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80
KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4g
dG87CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7
IG1vdnNsIiAiXG5cdG1vdnN3XG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9
JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDog
Im1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgIH0KfQoKCn0KIyAzMzUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKZXh0ZXJuIHZvaWQgX19zdHJ1Y3RfY3B5
X2J1ZyAodm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3Ry
aW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbW1vdmUodm9pZCAqIGRlc3QsY29uc3Qgdm9p
ZCAqIHNyYywgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwgZDI7CmlmIChkZXN0PHNyYykKX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1vdnNiIgogICAgICAg
IDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLCIx
IiAoc3JjKSwiMiIgKGRlc3QpCiAgICAgICAgOiAibWVtb3J5Iik7CmVsc2UKX19hc21fXyBfX3Zv
bGF0aWxlX18oCiAgICAgICAgInN0ZFxuXHQiCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1v
dnNiXG5cdCIKICAgICAgICAiY2xkIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwg
Ij0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLAogICAgICAgICAiMSIgKG4tMSsoY29uc3QgY2hh
ciAqKXNyYyksCiAgICAgICAgICIyIiAobi0xKyhjaGFyICopZGVzdCkKICAgICAgICA6Im1lbW9y
eSIpOwpyZXR1cm4gZGVzdDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkICogbWVtY2hyKGNvbnN0
IHZvaWQgKiBjcyxpbnQgYyxzaXplX3QgY291bnQpCnsKaW50IGQwOwpyZWdpc3RlciB2b2lkICog
X19yZXM7CmlmICghY291bnQpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwpfX2FzbV9fIF9f
dm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAg
ICAgImplIDFmXG5cdCIKICAgICAgICAibW92bCAkMSwlMFxuIgogICAgICAgICIxOlx0ZGVjbCAl
MCIKICAgICAgICA6Ij1EIiAoX19yZXMpLCAiPSZjIiAoZDApIDogImEiIChjKSwiMCIgKGNzKSwi
MSIgKGNvdW50KSk7CnJldHVybiBfX3JlczsKfQoKc3RhdGljIGlubGluZSB2b2lkICogX19tZW1z
ZXRfZ2VuZXJpYyh2b2lkICogcywgY2hhciBjLHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxOwpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAgICAgICAic3Rvc2IiCiAg
ICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksIjEiIChzKSwi
MCIgKGNvdW50KQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiBzOwp9CiMgNDA4ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAq
IF9fY29uc3RhbnRfY19tZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgYywgc2l6ZV90IGNv
dW50KQp7CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXAgOyBz
dG9zbFxuXHQiCiAgICAgICAgInRlc3RiICQyLCViM1xuXHQiCiAgICAgICAgImplIDFmXG5cdCIK
ICAgICAgICAic3Rvc3dcbiIKICAgICAgICAiMTpcdHRlc3RiICQxLCViM1xuXHQiCiAgICAgICAg
ImplIDJmXG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAgICAgICAgOiAiPSZj
IiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksICJxIiAoY291bnQpLCAiMCIgKGNv
dW50LzQpLCAiMSIgKChsb25nKSBzKQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiAocyk7Cn0K
CgoKc3RhdGljIGlubGluZSBzaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICogcywgc2l6ZV90IGNv
dW50KQp7CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAibW92bCAlMiwlMFxuXHQiCiAgICAgICAgImptcCAyZlxuIgogICAgICAgICIxOlx0
Y21wYiAkMCwoJTApXG5cdCIKICAgICAgICAiamUgM2Zcblx0IgogICAgICAgICJpbmNsICUwXG4i
CiAgICAgICAgIjI6XHRkZWNsICUxXG5cdCIKICAgICAgICAiY21wbCAkLTEsJTFcblx0IgogICAg
ICAgICJqbmUgMWJcbiIKICAgICAgICAiMzpcdHN1YmwgJTIsJTAiCiAgICAgICAgOiI9YSIgKF9f
cmVzKSwgIj0mZCIgKGQwKQogICAgICAgIDoiYyIgKHMpLCIxIiAoY291bnQpKTsKcmV0dXJuIF9f
cmVzOwp9CgoKCgpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBjaGFy
ICpjdCk7CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9jX2FuZF9jb3VudF9t
ZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgcGF0dGVybiwgc2l6ZV90IGNvdW50KQp7CiAg
ICAgICAgc3dpdGNoIChjb3VudCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAg
ICAgICAgICAgICAgICAgKih1bnNpZ25lZCBjaGFyICopcyA9IHBhdHRlcm47CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAg
ICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAg
ICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAgICAg
ICAgICAgICAgICAgICooMisodW5zaWduZWQgY2hhciAqKXMpID0gcGF0dGVybjsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAg
ICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICB9CgoKCgoKCgp7CiAgICAgICAgaW50IGQw
LCBkMTsKICAgICAgICBzd2l0Y2ggKGNvdW50ICUgNCkgewogICAgICAgICAgICAgICAgY2FzZSAw
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiIiA6ICI9JmMiIChkMCksICI9
JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAi
bWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9JkQiIChk
MSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5
Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVf
XyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgOiAi
YSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7IHJl
dHVybiBzOwogICAgICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICJy
ZXAgOyBzdG9zbCIgIlxuXHRzdG9zd1xuXHRzdG9zYiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEp
IDogImEiIChwYXR0ZXJuKSwiMCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9yeSIp
OyByZXR1cm4gczsKICAgICAgICB9Cn0KCgp9CiMgNTE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbXNjYW4odm9pZCAq
IGFkZHIsIGludCBjLCBzaXplX3Qgc2l6ZSkKewogICAgICAgIGlmICghc2l6ZSkKICAgICAgICAg
ICAgICAgIHJldHVybiBhZGRyOwogICAgICAgIF9fYXNtX18oInJlcG56OyBzY2FzYlxuXHQiCiAg
ICAgICAgICAgICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJkZWMgJSVlZGlcbiIK
ICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgIDogIj1EIiAoYWRkciksICI9YyIg
KHNpemUpCiAgICAgICAgICAgICAgICA6ICIwIiAoYWRkciksICIxIiAoc2l6ZSksICJhIiAoYykp
OwogICAgICAgIHJldHVybiBhZGRyOwp9CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3N0cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3N0cmluZy5oIgpleHRlcm4gaW50IHN0cm5pY21wKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwojIDc3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9zdHJpbmcuaCIKZXh0ZXJuIGludCBfX2J1aWx0aW5fbWVtY21wKGNvbnN0IHZv
aWQgKixjb25zdCB2b2lkICosX19rZXJuZWxfc2l6ZV90KTsKIyAyNCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxCiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwg
dm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggImxv
Y2sgOyAiCiAgICAgICAgICAgICAgICAiYnRzbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0i
ICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7
Cn0KIyA1MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIF9fc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRy
KQp7CiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHNsICUxLCUwIgogICAgICAg
ICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAg
ICA6IklyIiAobnIpKTsKfQojIDcxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20v
Yml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2xlYXJfYml0KGludCBuciwgdm9sYXRp
bGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggImxvY2sgOyAi
CiAgICAgICAgICAgICAgICAiYnRybCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2
b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyA5
MCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19p
bmxpbmVfXyB2b2lkIF9fY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7
CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiYnRjbCAlMSwl
MCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAg
ICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBjaGFuZ2VfYml0KGlu
dCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XyggImxvY2sgOyAiCiAgICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAg
IDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIg
KG5yKSk7Cn0KIyAxMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMu
aCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGls
ZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKCAibG9jayA7ICIKICAgICAgICAgICAgICAgICJidHNsICUyLCUxXG5cdHNiYmwg
JTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBs
b25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAg
ICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTQzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX3NldF9iaXQo
aW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAg
ICAgIF9fYXNtX18oCiAgICAgICAgICAgICAgICAiYnRzbCAlMiwlMVxuXHRzYmJsICUwLCUwIgog
ICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBh
ZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwogICAgICAgIHJldHVybiBvbGRiaXQ7
Cn0KIyAxNjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3Rh
dGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZv
aWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0cmwgJTIsJTFcblx0c2JibCAlMCwl
MCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcg
KikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAg
IHJldHVybiBvbGRiaXQ7Cn0KIyAxODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz
bS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IF9fdGVzdF9hbmRfY2xlYXJfYml0KGlu
dCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAg
ICBfX2FzbV9fKAogICAgICAgICAgICAgICAgImJ0cmwgJTIsJTFcblx0c2JibCAlMCwlMCIKICAg
ICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRk
cikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9
CgoKc3RhdGljIF9faW5saW5lX18gaW50IF9fdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQgbnIsIHZv
bGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiYnRjbCAlMiwlMVxuXHRzYmJsICUwLCUw
IgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAq
KSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAg
cmV0dXJuIG9sZGJpdDsKfQojIDIxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQg
bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0Y2wgJTIs
JTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgq
KHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1l
bW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMzMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGNvbnN0YW50
X3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBy
ZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGlu
dCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCB2YXJp
YWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50
IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAi
YnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KQog
ICAgICAgICAgICAgICAgOiJtIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSksIklyIiAobnIp
KTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjYyICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX2ZpcnN0X3pl
cm9fYml0KHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgaW50IGQwLCBkMSwg
ZDI7CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgICAg
cmV0dXJuIDA7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAg
Im1vdmwgJC0xLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUlZWR4LCUlZWR4XG5c
dCIKICAgICAgICAgICAgICAgICJyZXBlOyBzY2FzbFxuXHQiCiAgICAgICAgICAgICAgICAiamUg
MWZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgLTQoJSVlZGkpLCUlZWF4XG5cdCIKICAgICAg
ICAgICAgICAgICJzdWJsICQ0LCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJic2ZsICUlZWF4
LCUlZWR4XG4iCiAgICAgICAgICAgICAgICAiMTpcdHN1YmwgJSVlYngsJSVlZGlcblx0IgogICAg
ICAgICAgICAgICAgInNobGwgJDMsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgImFkZGwgJSVl
ZGksJSVlZHgiCiAgICAgICAgICAgICAgICA6Ij1kIiAocmVzKSwgIj0mYyIgKGQwKSwgIj0mRCIg
KGQxKSwgIj0mYSIgKGQyKQogICAgICAgICAgICAgICAgOiIxIiAoKHNpemUgKyAzMSkgPj4gNSks
ICIyIiAoYWRkciksICJiIiAoYWRkcikpOwogICAgICAgIHJldHVybiByZXM7Cn0KCgoKCgoKCnN0
YXRpYyBfX2lubGluZV9fIGludCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBhZGRyLCBpbnQg
c2l6ZSwgaW50IG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBwID0gKCh1bnNpZ25l
ZCBsb25nICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAgICBpbnQgc2V0ID0gMCwgYml0
ID0gb2Zmc2V0ICYgMzEsIHJlczsKCiAgICAgICAgaWYgKGJpdCkgewoKCgogICAgICAgICAgICAg
ICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICJqbmUg
MWZcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAibW92bCAkMzIsICUwXG4iCiAgICAgICAg
ICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChzZXQp
CiAgICAgICAgICAgICAgICAgICAgICAgIDogInIiICh+KCpwID4+IGJpdCkpKTsKICAgICAgICAg
ICAgICAgIGlmIChzZXQgPCAoMzIgLSBiaXQpKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2V0ICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgc2V0ID0gMzIgLSBiaXQ7CiAgICAgICAg
ICAgICAgICBwKys7CiAgICAgICAgfQoKCgogICAgICAgIHJlcyA9IGZpbmRfZmlyc3RfemVyb19i
aXQgKHAsIHNpemUgLSAzMiAqIChwIC0gKHVuc2lnbmVkIGxvbmcgKikgYWRkcikpOwogICAgICAg
IHJldHVybiAob2Zmc2V0ICsgc2V0ICsgcmVzKTsKfQoKCgoKCgoKc3RhdGljIF9faW5saW5lX18g
dW5zaWduZWQgbG9uZyBmZnoodW5zaWduZWQgbG9uZyB3b3JkKQp7CiAgICAgICAgX19hc21fXygi
YnNmbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiICh3b3JkKQogICAgICAgICAgICAgICAg
OiJyIiAofndvcmQpKTsKICAgICAgICByZXR1cm4gd29yZDsKfQojIDM0OSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmZz
KGludCB4KQp7CiAgICAgICAgaW50IHI7CgogICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTBcblx0
IgogICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAgICAgICAgICAibW92bCAkLTEs
JTBcbiIKICAgICAgICAgICAgICAgICIxOiIgOiAiPXIiIChyKSA6ICJybSIgKHgpKTsKICAgICAg
ICByZXR1cm4gcisxOwp9CiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKCnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1MCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0IHsKICAg
ICAgICBpbnQgbnJfZmlsZXM7CiAgICAgICAgaW50IG5yX2ZyZWVfZmlsZXM7CiAgICAgICAgaW50
IG1heF9maWxlczsKfTsKZXh0ZXJuIHN0cnVjdCBmaWxlc19zdGF0X3N0cnVjdCBmaWxlc19zdGF0
OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAgIGludCBucl9pbm9kZXM7CiAgICAgICAg
aW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlbNV07Cn07CmV4dGVybiBzdHJ1Y3QgaW5v
ZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBpbnQgbGVhc2VzX2VuYWJsZSwgZGlyX25v
dGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMgMjAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS9zZW1hcGhvcmUuaCIgMQojIDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vc2VtYXBob3JlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3N5
c3RlbS5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9p
bml0LmgiIDEKIyA0OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaW5pdC5o
Igp0eXBlZGVmIGludCAoKmluaXRjYWxsX3QpKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCpleGl0Y2Fs
bF90KSh2b2lkKTsKCmV4dGVybiBpbml0Y2FsbF90IF9faW5pdGNhbGxfc3RhcnQsIF9faW5pdGNh
bGxfZW5kOwojIDYxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbml0Lmgi
CnN0cnVjdCBrZXJuZWxfcGFyYW0gewogICAgICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICAgICBp
bnQgKCpzZXR1cF9mdW5jKShjaGFyICopOwp9OwoKZXh0ZXJuIHN0cnVjdCBrZXJuZWxfcGFyYW0g
X19zZXR1cF9zdGFydCwgX19zZXR1cF9lbmQ7CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL3N5c3RlbS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2JpdG9wcy5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIGludCBnZW5lcmljX2ZmcyhpbnQgeCkKewogICAg
ICAgIGludCByID0gMTsKCiAgICAgICAgaWYgKCF4KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgaWYgKCEoeCAmIDB4ZmZmZikpIHsKICAgICAgICAgICAgICAgIHggPj49IDE2Owog
ICAgICAgICAgICAgICAgciArPSAxNjsKICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZmYp
KSB7CiAgICAgICAgICAgICAgICB4ID4+PSA4OwogICAgICAgICAgICAgICAgciArPSA4OwogICAg
ICAgIH0KICAgICAgICBpZiAoISh4ICYgMHhmKSkgewogICAgICAgICAgICAgICAgeCA+Pj0gNDsK
ICAgICAgICAgICAgICAgIHIgKz0gNDsKICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDMpKSB7
CiAgICAgICAgICAgICAgICB4ID4+PSAyOwogICAgICAgICAgICAgICAgciArPSAyOwogICAgICAg
IH0KICAgICAgICBpZiAoISh4ICYgMSkpIHsKICAgICAgICAgICAgICAgIHggPj49IDE7CiAgICAg
ICAgICAgICAgICByICs9IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiByOwp9CgoKCgoKZXh0
ZXJuIF9faW5saW5lX18gaW50IGdlbmVyaWNfZmxzKGludCB4KQp7CiAgICAgICAgaW50IHIgPSAz
MjsKCiAgICAgICAgaWYgKCF4KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYg
KCEoeCAmIDB4ZmZmZjAwMDApKSB7CiAgICAgICAgICAgICAgICB4IDw8PSAxNjsKICAgICAgICAg
ICAgICAgIHIgLT0gMTY7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAweGZmMDAwMDAwKSkg
ewogICAgICAgICAgICAgICAgeCA8PD0gODsKICAgICAgICAgICAgICAgIHIgLT0gODsKICAgICAg
ICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZjAwMDAwMDApKSB7CiAgICAgICAgICAgICAgICB4IDw8
PSA0OwogICAgICAgICAgICAgICAgciAtPSA0OwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYg
MHhjMDAwMDAwMCkpIHsKICAgICAgICAgICAgICAgIHggPDw9IDI7CiAgICAgICAgICAgICAgICBy
IC09IDI7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAweDgwMDAwMDAwKSkgewogICAgICAg
ICAgICAgICAgeCA8PD0gMTsKICAgICAgICAgICAgICAgIHIgLT0gMTsKICAgICAgICB9CiAgICAg
ICAgcmV0dXJuIHI7Cn0KCmV4dGVybiBfX2lubGluZV9fIGludCBnZXRfYml0bWFza19vcmRlcih1
bnNpZ25lZCBpbnQgY291bnQpCnsKICAgICAgICBpbnQgb3JkZXI7CgogICAgICAgIG9yZGVyID0g
Z2VuZXJpY19mbHMoY291bnQpOwogICAgICAgIHJldHVybiBvcmRlcjsKfQoKCgoKCgpzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmljX2h3ZWlnaHQzMih1bnNpZ25lZCBpbnQgdykKewog
ICAgICAgIHVuc2lnbmVkIGludCByZXMgPSAodyAmIDB4NTU1NTU1NTUpICsgKCh3ID4+IDEpICYg
MHg1NTU1NTU1NSk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MzMzMzMzMzMpICsgKChyZXMgPj4g
MikgJiAweDMzMzMzMzMzKTsKICAgICAgICByZXMgPSAocmVzICYgMHgwRjBGMEYwRikgKyAoKHJl
cyA+PiA0KSAmIDB4MEYwRjBGMEYpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDAwRkYwMEZGKSAr
ICgocmVzID4+IDgpICYgMHgwMEZGMDBGRik7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDAwMDBG
RkZGKSArICgocmVzID4+IDE2KSAmIDB4MDAwMEZGRkYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGludCBnZW5lcmljX2h3ZWlnaHQxNih1bnNpZ25lZCBpbnQgdykKewogICAgICAgIHVuc2ln
bmVkIGludCByZXMgPSAodyAmIDB4NTU1NSkgKyAoKHcgPj4gMSkgJiAweDU1NTUpOwogICAgICAg
IHJlcyA9IChyZXMgJiAweDMzMzMpICsgKChyZXMgPj4gMikgJiAweDMzMzMpOwogICAgICAgIHJl
cyA9IChyZXMgJiAweDBGMEYpICsgKChyZXMgPj4gNCkgJiAweDBGMEYpOwogICAgICAgIHJldHVy
biAocmVzICYgMHgwMEZGKSArICgocmVzID4+IDgpICYgMHgwMEZGKTsKfQoKc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2VpZ2h0OCh1bnNpZ25lZCBpbnQgdykKewogICAgICAg
IHVuc2lnbmVkIGludCByZXMgPSAodyAmIDB4NTUpICsgKCh3ID4+IDEpICYgMHg1NSk7CiAgICAg
ICAgcmVzID0gKHJlcyAmIDB4MzMpICsgKChyZXMgPj4gMikgJiAweDMzKTsKICAgICAgICByZXR1
cm4gKHJlcyAmIDB4MEYpICsgKChyZXMgPj4gNCkgJiAweDBGKTsKfQojIDkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMgoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7
CmV4dGVybiB2b2lkIF9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiwgc3RydWN0
IHRhc2tfc3RydWN0ICpuZXh0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgNjQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBsb25nIF9nZXRfYmFzZShjaGFyICogYWRkcikKewogICAgICAgIHVuc2lnbmVkIGxv
bmcgX19iYXNlOwogICAgICAgIF9fYXNtX18oIm1vdmIgJTMsJSVkaFxuXHQiCiAgICAgICAgICAg
ICAgICAibW92YiAlMiwlJWRsXG5cdCIKICAgICAgICAgICAgICAgICJzaGxsICQxNiwlJWVkeFxu
XHQiCiAgICAgICAgICAgICAgICAibW92dyAlMSwlJWR4IgogICAgICAgICAgICAgICAgOiI9JmQi
IChfX2Jhc2UpCiAgICAgICAgICAgICAgICA6Im0iICgqKChhZGRyKSsyKSksCiAgICAgICAgICAg
ICAgICAgIm0iICgqKChhZGRyKSs0KSksCiAgICAgICAgICAgICAgICAgIm0iICgqKChhZGRyKSs3
KSkpOwogICAgICAgIHJldHVybiBfX2Jhc2U7Cn0KIyAxMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9s
aW1pdCh1bnNpZ25lZCBsb25nIHNlZ21lbnQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fbGlt
aXQ7CiAgICAgICAgX19hc21fXygibHNsbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChf
X2xpbWl0KToiciIgKHNlZ21lbnQpKTsKICAgICAgICByZXR1cm4gX19saW1pdCsxOwp9CgoKCgoK
CgpzdHJ1Y3QgX194Y2hnX2R1bW15IHsgdW5zaWduZWQgbG9uZyBhWzEwMF07IH07CiMgMTYzICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBfX3NldF82NGJpdCAodW5zaWduZWQgbG9uZyBsb25nICogcHRyLAogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGxvdywgdW5zaWduZWQgaW50IGhpZ2gpCnsKICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXyAoCiAgICAgICAgICAgICAgICAiXG4xOlx0IgogICAgICAgICAgICAgICAg
Im1vdmwgKCUwKSwgJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgNCglMCksICUlZWR4
XG5cdCIKICAgICAgICAgICAgICAgICJsb2NrIGNtcHhjaGc4YiAoJTApXG5cdCIKICAgICAgICAg
ICAgICAgICJqbnogMWIiCiAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICA6ICJEIihw
dHIpLAogICAgICAgICAgICAgICAgICAgICAgICAiYiIobG93KSwKICAgICAgICAgICAgICAgICAg
ICAgICAgImMiKGhpZ2gpCiAgICAgICAgICAgICAgICA6ICJheCIsImR4IiwibWVtb3J5Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF9jb25zdGFudCAodW5zaWduZWQgbG9uZyBs
b25nICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsKICAgICAgICBfX3NldF82NGJpdChwdHIsKHVu
c2lnbmVkIGludCkodmFsdWUpLCAodW5zaWduZWQgaW50KSgodmFsdWUpPj4zMlVMTCkpOwp9CgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF92YXIgKHVuc2lnbmVkIGxvbmcgbG9uZyAq
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQp7
CiAgICAgICAgX19zZXRfNjRiaXQocHRyLCooKCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSswKSwg
KigoKHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzEpKTsKfQojIDIwOCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcg
X194Y2hnKHVuc2lnbmVkIGxvbmcgeCwgdm9sYXRpbGUgdm9pZCAqIHB0ciwgaW50IHNpemUpCnsK
ICAgICAgICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAg
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGdiICViMCwlMSIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6Ij1xIiAoeCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiICh4
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAg
ICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ3cgJXcwLCUxIgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDoiPXIiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hnbCAlMCwlMSIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6Ij1yIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiICh4KQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4geDsKfQojIDI0MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IGxvbmcgX19jbXB4Y2hnKHZvbGF0aWxlIHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBvbGQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXcsIGlu
dCBzaXplKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcmV2OwogICAgICAgIHN3aXRjaCAoc2l6
ZSkgewogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KCJsb2NrIDsgIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihv
bGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAg
ICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCJsb2NrIDsgIiAiY21weGNoZ3cgJXcxLCUyIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19k
dW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNh
c2UgNDoKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsb2NrIDsgIiAiY21w
eGNoZ2wgJTEsJTIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIo
cHJldikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJt
IigqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0
dXJuIHByZXY7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvbGQ7Cn0KIyAzNDMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKZXh0ZXJuIHZvaWQgX19nbG9iYWxf
Y2xpKHZvaWQpOwpleHRlcm4gdm9pZCBfX2dsb2JhbF9zdGkodm9pZCk7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIF9fZ2xvYmFsX3NhdmVfZmxhZ3Modm9pZCk7CmV4dGVybiB2b2lkIF9fZ2xvYmFsX3Jl
c3RvcmVfZmxhZ3ModW5zaWduZWQgbG9uZyk7CiMgMzY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vc3lzdGVtLmgiCnZvaWQgZGlzYWJsZV9obHQodm9pZCk7CnZvaWQgZW5hYmxl
X2hsdCh2b2lkKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRtaV9icm9rZW47CmV4dGVybiBpbnQg
aXNfc29ueV92YWlvX2xhcHRvcDsKIyA0MCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
YXNtL3NlbWFwaG9yZS5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9yd3NlbS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3J3c2VtLmgiCnN0cnVjdCByd19zZW1hcGhvcmU7CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9yd3NlbS5oIiAxCiMgNDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9yd3NlbS5oIgpzdHJ1Y3QgcndzZW1fd2FpdGVyOwoKZXh0ZXJuIHN0cnVjdCBy
d19zZW1hcGhvcmUgKnJ3c2VtX2Rvd25fcmVhZF9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAq
c2VtKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBo
b3JlICpyd3NlbV9kb3duX3dyaXRlX2ZhaWxlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3
c2VtX3dha2Uoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CgoKCgpzdHJ1Y3Qgcndfc2VtYXBob3JlIHsKICAgICAgICBzaWduZWQgbG9uZyBjb3VudDsK
CgoKCgoKICAgICAgICBzcGlubG9ja190IHdhaXRfbG9jazsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIHdhaXRfbGlzdDsKCgoKfTsKIyA4NiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
YXNtL3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3J3c2VtKHN0cnVjdCByd19zZW1h
cGhvcmUgKnNlbSkKewogICAgICAgIHNlbS0+Y291bnQgPSAweDAwMDAwMDAwOwogICAgICAgIGRv
IHsgKigmc2VtLT53YWl0X2xvY2spID0gKHNwaW5sb2NrX3QpIHsgMSB9OyB9IHdoaWxlKDApOwog
ICAgICAgIGRvIHsgKCZzZW0tPndhaXRfbGlzdCktPm5leHQgPSAoJnNlbS0+d2FpdF9saXN0KTsg
KCZzZW0tPndhaXRfbGlzdCktPnByZXYgPSAoJnNlbS0+d2FpdF9saXN0KTsgfSB3aGlsZSAoMCk7
CgoKCn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rvd25fcmVhZChzdHJ1Y3Qgcndfc2VtYXBo
b3JlICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAg
ICIjIGJlZ2lubmluZyBkb3duX3JlYWRcblx0IgoibG9jayA7ICIgIiAgaW5jbCAgICAgICglJWVh
eClcblx0IgogICAgICAgICAgICAgICAgIiAganMgICAgICAgIDJmXG5cdCIKICAgICAgICAgICAg
ICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24gMVxuXHQiICIiICIuaWZu
ZGVmICIgIi50ZXh0LmxvY2suIiAic2NoZWQiICJcblx0IiAiLnRleHQubG9jay4iICJzY2hlZCIg
Ijpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAg
ICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAg
ICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV9kb3duX3JlYWRf
ZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVkeFxuXHQiCiAgICAg
ICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1w
ICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAg
ICAgICIjIGVuZGluZyBkb3duX3JlYWRcblx0IgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+
Y291bnQpCiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAgICAgICA6ICJtZW1v
cnkiLCAiY2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgX19kb3duX3JlYWRfdHJ5bG9jayhz
dHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBfX3MzMiByZXN1bHQsIHRtcDsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBf
X2Rvd25fcmVhZF90cnlsb2NrXG5cdCIKICAgICAgICAgICAgICAgICIgIG1vdmwgICAgICAlMCwl
MVxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIiAgbW92bAkg
ICAgICUxLCUyXG5cdCIKICAgICAgICAgICAgICAgICIgIGFkZGwgICAgICAlMywlMlxuXHQiCiAg
ICAgICAgICAgICAgICAiICBqbGUJICAgICAyZlxuXHQiCiJsb2NrIDsgIiAiICBjbXB4Y2hnbCAg
JTIsJTBcblx0IgogICAgICAgICAgICAgICAgIiAgam56CSAgICAgMWJcblx0IgogICAgICAgICAg
ICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBfX2Rvd25fcmVhZF90cnls
b2NrXG5cdCIKICAgICAgICAgICAgICAgIDogIittIihzZW0tPmNvdW50KSwgIj0mYSIocmVzdWx0
KSwgIj0mciIodG1wKQogICAgICAgICAgICAgICAgOiAiaSIoMHgwMDAwMDAwMSkKICAgICAgICAg
ICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwogICAgICAgIHJldHVybiByZXN1bHQ+PTAgPyAxIDog
MDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fZG93bl93cml0ZShzdHJ1Y3Qgcndfc2VtYXBo
b3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wOwoKICAgICAgICB0bXAgPSAoKC0weDAwMDEwMDAw
KSArIDB4MDAwMDAwMDEpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgIiMgYmVnaW5uaW5nIGRvd25fd3JpdGVcblx0IgoibG9jayA7ICIgIiAgeGFkZCAgICAg
ICUwLCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgdGVzdGwgICAgICUwLCUwXG5cdCIK
ICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpc
blx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIu
dGV4dC5sb2NrLiIgInNjaGVkIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2NoZWQiICI6XG5cdCIg
Ii5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAgIiAg
cHVzaGwgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV9k
b3duX3dyaXRlX2ZhaWxlZFxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hc
blx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAi
LnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBkb3duX3dyaXRlIgogICAg
ICAgICAgICAgICAgOiAiK2QiKHRtcCksICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAg
IDogImEiKHNlbSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0
aWMgaW5saW5lIGludCBfX2Rvd25fd3JpdGVfdHJ5bG9jayhzdHJ1Y3Qgcndfc2VtYXBob3JlICpz
ZW0pCnsKICAgICAgICBzaWduZWQgbG9uZyByZXQgPSAoKF9fdHlwZW9mX18oKigmc2VtLT5jb3Vu
dCkpKV9fY21weGNoZygoJnNlbS0+Y291bnQpLCh1bnNpZ25lZCBsb25nKSgweDAwMDAwMDAwKSwg
KHVuc2lnbmVkIGxvbmcpKCgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSkpLHNpemVvZigqKCZz
ZW0tPmNvdW50KSkpKTsKCgogICAgICAgIGlmIChyZXQgPT0gMHgwMDAwMDAwMCkKICAgICAgICAg
ICAgICAgIHJldHVybiAxOwogICAgICAgIHJldHVybiAwOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgX191cF9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fczMyIHRt
cCA9IC0weDAwMDAwMDAxOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfcmVhZFxuXHQiCiJsb2NrIDsgIiAiICB4YWRkICAgICAg
JSVlZHgsKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAgICAiICBqcyAgICAgICAgMmZcblx0Igog
ICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAxXG5c
dCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzY2hlZCIgIlxuXHQiICIudGV4dC5sb2Nr
LiIgInNjaGVkIiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XG5cdCIK
ICAgICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIKICAgICAgICAgICAgICAgICIg
IGpueiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0
IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dha2Vcblx0IgogICAgICAgICAg
ICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAg
ICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICAi
IyBlbmRpbmcgX191cF9yZWFkXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCks
ICIrZCIodG1wKQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAi
bWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3dyaXRlKHN0cnVj
dCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAg
ICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfd3JpdGVcblx0IgogICAgICAgICAgICAgICAg
IiAgbW92bCAgICAgICUyLCUlZWR4XG5cdCIKImxvY2sgOyAiICIgIHhhZGRsICAgICAlJWVkeCwo
JSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAgICAg
ICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAi
LmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNjaGVkIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2No
ZWQiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAg
ICAgICAgICAgIiAgZGVjdyAgICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAg
ICAgIDFiXG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAg
ICAgICAgICAgICAiICBjYWxsICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAgICAgICAgICAi
ICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4i
CiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIjIGVuZGlu
ZyBfX3VwX3dyaXRlXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAg
ICAgICAgICAgIDogImEiKHNlbSksICJpIigtKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAxKSkK
ICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIsICJlZHgiKTsKfQoKCgoKc3RhdGljIGlu
bGluZSB2b2lkIHJ3c2VtX2F0b21pY19hZGQoaW50IGRlbHRhLCBzdHJ1Y3Qgcndfc2VtYXBob3Jl
ICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKImxvY2sgOyAiICJhZGRsICUx
LCUwIgogICAgICAgICAgICAgICAgOiI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoi
aXIiKGRlbHRhKSwgIm0iKHNlbS0+Y291bnQpKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgcndz
ZW1fYXRvbWljX3VwZGF0ZShpbnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewog
ICAgICAgIGludCB0bXAgPSBkZWx0YTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiJs
b2NrIDsgIiAieGFkZCAlMCwoJTIpIgogICAgICAgICAgICAgICAgOiAiK3IiKHRtcCksICI9bSIo
c2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogInIiKHNlbSksICJtIihzZW0tPmNvdW50KQog
ICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CgogICAgICAgIHJldHVybiB0bXArZGVsdGE7Cn0K
IyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDQz
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yd3NlbS5oIgpzdGF0aWMgaW5s
aW5lIHZvaWQgZG93bl9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIDsK
ICAgICAgICBfX2Rvd25fcmVhZChzZW0pOwogICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGluZSBp
bnQgZG93bl9yZWFkX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAg
aW50IHJldDsKICAgICAgICA7CiAgICAgICAgcmV0ID0gX19kb3duX3JlYWRfdHJ5bG9jayhzZW0p
OwogICAgICAgIDsKICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQg
ZG93bl93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICA7CiAgICAgICAg
X19kb3duX3dyaXRlKHNlbSk7CiAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIGludCBkb3du
X3dyaXRlX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgaW50IHJl
dDsKICAgICAgICA7CiAgICAgICAgcmV0ID0gX19kb3duX3dyaXRlX3RyeWxvY2soc2VtKTsKICAg
ICAgICA7CiAgICAgICAgcmV0dXJuIHJldDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHVwX3Jl
YWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgOwogICAgICAgIF9fdXBfcmVh
ZChzZW0pOwogICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHVwX3dyaXRlKHN0cnVj
dCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIDsKICAgICAgICBfX3VwX3dyaXRlKHNlbSk7
CiAgICAgICAgOwp9CiMgNDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zZW1h
cGhvcmUuaCIgMgoKc3RydWN0IHNlbWFwaG9yZSB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAg
ICAgICAgaW50IHNsZWVwZXJzOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgoKCn07
CiMgNzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIKc3Rh
dGljIGlubGluZSB2b2lkIHNlbWFfaW5pdCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtLCBpbnQgdmFs
KQp7CgoKCgoKCiAgICAgICAgKCgoJnNlbS0+Y291bnQpLT5jb3VudGVyKSA9ICh2YWwpKTsKICAg
ICAgICBzZW0tPnNsZWVwZXJzID0gMDsKICAgICAgICBpbml0X3dhaXRxdWV1ZV9oZWFkKCZzZW0t
PndhaXQpOwoKCgp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9NVVRFWCAoc3RydWN0IHNlbWFw
aG9yZSAqc2VtKQp7CiAgICAgICAgc2VtYV9pbml0KHNlbSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBpbml0X01VVEVYX0xPQ0tFRCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAg
c2VtYV9pbml0KHNlbSwgMCk7Cn0KCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBf
X2Rvd25fZmFpbGVkKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19k
b3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MCkpKSBpbnQgX19kb3duX2ZhaWxlZF90cnlsb2NrKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSB2b2lkIF9fdXBfd2FrZXVwKHZvaWQgKTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgdm9pZCBfX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhv
cmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25fdHJ5bG9j
ayhzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2
b2lkIF9fdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBkb3duKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKCgoKCiAgICAgICAgX19hc21fXyBfX3Zv
bGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9taWMgZG93biBvcGVyYXRpb25cblx0Igog
ICAgICAgICAgICAgICAgImxvY2sgOyAiICJkZWNsICUwXG5cdCIKICAgICAgICAgICAgICAgICJq
cyAyZlxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rp
b24gMVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic2NoZWQiICJcblx0IiAiLnRl
eHQubG9jay4iICJzY2hlZCIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIy
Olx0Y2FsbCBfX2Rvd25fZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAg
ICAgICAgICAgICAgICIucHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgOiI9bSIgKHNlbS0+
Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9y
eSIpOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBz
ZW1hcGhvcmUgKiBzZW0pCnsKICAgICAgICBpbnQgcmVzdWx0OwoKCgoKCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9taWMgaW50ZXJydXB0aWJsZSBk
b3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImRlY2wgJTFcblx0
IgogICAgICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUwLCUw
XG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAx
XG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzY2hlZCIgIlxuXHQiICIudGV4dC5s
b2NrLiIgInNjaGVkIiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XHRj
YWxsIF9fZG93bl9mYWlsZWRfaW50ZXJydXB0aWJsZVxuXHQiCiAgICAgICAgICAgICAgICAiam1w
IDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgIDoi
PWEiIChyZXN1bHQpLCAiPW0iIChzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2Vt
KQogICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoK
CgoKc3RhdGljIGlubGluZSBpbnQgZG93bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0p
CnsKICAgICAgICBpbnQgcmVzdWx0OwoKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgICAgICAgICAiIyBhdG9taWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxu
XHQiCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImRlY2wgJTFcblx0IgogICAgICAgICAgICAg
ICAgImpzIDJmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUwLCUwXG4iCiAgICAgICAgICAg
ICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5k
ZWYgIiAiLnRleHQubG9jay4iICJzY2hlZCIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNjaGVkIiAi
OlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWls
ZWRfdHJ5bG9ja1xuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAg
ICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgIDoiPWEiIChyZXN1bHQpLCAiPW0iIChz
ZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJt
ZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIHVwIG9wZXJhdGlvblxuXHQiCiAgICAg
ICAgICAgICAgICAibG9jayA7ICIgImluY2wgJTBcblx0IgogICAgICAgICAgICAgICAgImpsZSAy
ZlxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24g
MVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic2NoZWQiICJcblx0IiAiLnRleHQu
bG9jay4iICJzY2hlZCIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlx0
Y2FsbCBfX3VwX3dha2V1cFxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAg
ICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAwXG4i
CiAgICAgICAgICAgICAgICA6Ij1tIiAoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIg
KHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNl
bV9nZXRjb3VudChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCnsKICAgICAgICByZXR1cm4gKCgmc2Vt
LT5jb3VudCktPmNvdW50ZXIpOwp9CiMgMjAyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCgoKZXh0ZXJuIHZvaWQgdXBkYXRlX2F0aW1lIChzdHJ1Y3QgaW5vZGUg
Kik7CgoKZXh0ZXJuIHZvaWQgYnVmZmVyX2luaXQodW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lk
IGlub2RlX2luaXQodW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIG1udF9pbml0KHVuc2lnbmVk
IGxvbmcpOwpleHRlcm4gdm9pZCBmaWxlc19pbml0KHVuc2lnbmVkIGxvbmcgbWVtcGFnZXMpOwoK
CmVudW0gYmhfc3RhdGVfYml0cyB7CiAgICAgICAgQkhfVXB0b2RhdGUsCiAgICAgICAgQkhfRGly
dHksCiAgICAgICAgQkhfTG9jaywKICAgICAgICBCSF9SZXEsCiAgICAgICAgQkhfTWFwcGVkLAog
ICAgICAgIEJIX05ldywKICAgICAgICBCSF9Bc3luYywKICAgICAgICBCSF9XYWl0X0lPLAogICAg
ICAgIEJIX0xhdW5kZXIsCiAgICAgICAgQkhfQXR0YWNoZWQsCiAgICAgICAgQkhfSkJELAoKICAg
ICAgICBCSF9Qcml2YXRlU3RhcnQsCgoKfTsKIyAyNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBidWZmZXJfaGVhZCB7CgogICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqYl9uZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9ibG9ja25yOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiX2xpc3Q7
CiAgICAgICAga2Rldl90IGJfZGV2OwoKICAgICAgICBhdG9taWNfdCBiX2NvdW50OwogICAgICAg
IGtkZXZfdCBiX3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3N0YXRlOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9u
ZXh0X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3ByZXZfZnJlZTsKICAgICAg
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfdGhpc19wYWdlOwogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqYl9yZXFuZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiX3BwcmV2Owog
ICAgICAgIGNoYXIgKiBiX2RhdGE7CiAgICAgICAgc3RydWN0IHBhZ2UgKmJfcGFnZTsKICAgICAg
ICB2b2lkICgqYl9lbmRfaW8pKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7
CiAgICAgICAgdm9pZCAqYl9wcml2YXRlOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGJfcnNlY3Rv
cjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBiX3dhaXQ7CgogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgYl9pbm9kZV9idWZmZXJzOwp9OwoKdHlwZWRlZiB2b2lkIChiaF9lbmRfaW9fdCkoc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKTsKdm9pZCBpbml0X2J1ZmZlcihzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiwgYmhfZW5kX2lvX3QgKiwgdm9pZCAqKTsKIyAyOTAgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiB2b2lkIHNldF9iaF9wYWdl
KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25n
IG9mZnNldCk7CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Bp
cGVfZnNfaS5oIiAxCgoKCgpzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvIHsKICAgICAgICB3YWl0X3F1
ZXVlX2hlYWRfdCB3YWl0OwogICAgICAgIGNoYXIgKmJhc2U7CiAgICAgICAgdW5zaWduZWQgaW50
IGxlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJl
YWRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50
IHdhaXRpbmdfcmVhZGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ193cml0ZXJzOwog
ICAgICAgIHVuc2lnbmVkIGludCByX2NvdW50ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHdfY291
bnRlcjsKfTsKIyA0MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcGlwZV9m
c19pLmgiCnZvaWQgcGlwZV93YWl0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVjdCBpbm9k
ZSogcGlwZV9uZXcoc3RydWN0IGlub2RlKiBpbm9kZSk7CiMgMjk2ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvc3VwZXJtb3VudF9mc19pLmgiIDEKCgoKc3RydWN0IHN1cGVybW91bnRfaW5v
ZGVfaW5mbyB7CiAgICAgICAgaW50IGlfc2JfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3QgZGVudHJ5
ICogaV9kZW50cnk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2ZzOwp9OwojIDI5NyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3QgbWlu
aXhfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgX191MTYgaTFf
ZGF0YVsxNl07CiAgICAgICAgICAgICAgICBfX3UzMiBpMl9kYXRhWzE2XTsKICAgICAgICB9IHU7
Cn07CiMgMjk4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19pLmgiIDEKIyAy
MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19pLmgiCnN0cnVj
dCBleHQyX2lub2RlX2luZm8gewogICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAgICAgX191
MzIgaV9mbGFnczsKICAgICAgICBfX3UzMiBpX2ZhZGRyOwogICAgICAgIF9fdTggaV9mcmFnX25v
OwogICAgICAgIF9fdTggaV9mcmFnX3NpemU7CiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAg
ICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3Uz
MiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAg
ICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2Jsb2Nr
OwogICAgICAgIF9fdTMyIGlfcHJlYWxsb2NfY291bnQ7CiAgICAgICAgX191MzIgaV9kaXJfc3Rh
cnRfbG9va3VwOwogICAgICAgIGludCBpX25ld19pbm9kZToxOwp9OwojIDI5OSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfaS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfaS5oIgpzdHJ1Y3QgZXh0M19pbm9kZV9pbmZvIHsK
ICAgICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CgoKCgoKCiAg
ICAgICAgX191MzIgaV9maWxlX2FjbDsKICAgICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAg
X191MzIgaV9kdGltZTsKICAgICAgICBfX3UzMiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMy
IGlfc3RhdGU7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMy
IGlfbmV4dF9hbGxvY19nb2FsOwoKCgoKICAgICAgICBfX3UzMiBpX2Rpcl9zdGFydF9sb29rdXA7
CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9vcnBoYW47CiMgNjMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfaS5oIgogICAgICAgIGxvZmZfdCBpX2Rpc2tz
aXplOwojIDc1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2ZzX2ku
aCIKICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHRydW5jYXRlX3NlbTsKfTsKIyAzMDAgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ocGZzX2ZzX2kuaCIgMQoKCgpzdHJ1Y3QgaHBmc19p
bm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGlu
b190IGlfcGFyZW50X2RpcjsKICAgICAgICB1bnNpZ25lZCBpX2RubzsKICAgICAgICB1bnNpZ25l
ZCBpX2Rwb3M7CiAgICAgICAgdW5zaWduZWQgaV9kc3ViZG5vOwogICAgICAgIHVuc2lnbmVkIGlf
ZmlsZV9zZWM7CiAgICAgICAgdW5zaWduZWQgaV9kaXNrX3NlYzsKICAgICAgICB1bnNpZ25lZCBp
X25fc2VjczsKICAgICAgICB1bnNpZ25lZCBpX2VhX3NpemU7CiAgICAgICAgdW5zaWduZWQgaV9j
b252IDogMjsKICAgICAgICB1bnNpZ25lZCBpX2VhX21vZGUgOiAxOwogICAgICAgIHVuc2lnbmVk
IGlfZWFfdWlkIDogMTsKICAgICAgICB1bnNpZ25lZCBpX2VhX2dpZCA6IDE7CiAgICAgICAgdW5z
aWduZWQgaV9kaXJ0eSA6IDE7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX3NlbTsKICAgICAg
ICBsb2ZmX3QgKippX3JkZGlyX29mZjsKfTsKIyAzMDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9udGZzX2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3QgbnRmc19hdHRyaWJ1dGU7CnN0cnVjdCBu
dGZzX3NiX2luZm87CgoKCgp0eXBlZGVmIHU4IG50ZnNfdTg7CnR5cGVkZWYgdTE2IG50ZnNfdTE2
Owp0eXBlZGVmIHUzMiBudGZzX3UzMjsKdHlwZWRlZiB1NjQgbnRmc191NjQ7CnR5cGVkZWYgczgg
bnRmc19zODsKdHlwZWRlZiBzMTYgbnRmc19zMTY7CnR5cGVkZWYgczMyIG50ZnNfczMyOwp0eXBl
ZGVmIHM2NCBudGZzX3M2NDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG50bW9kZV90OwoK
Cgp0eXBlZGVmIHVpZF90IG50ZnNfdWlkX3Q7CgoKCnR5cGVkZWYgZ2lkX3QgbnRmc19naWRfdDsK
CgoKdHlwZWRlZiBfX2tlcm5lbF9zaXplX3QgbnRmc19zaXplX3Q7CgoKCnR5cGVkZWYgX19rZXJu
ZWxfdGltZV90IG50ZnNfdGltZV90OwoKCgoKCnR5cGVkZWYgdTE2IG50ZnNfd2NoYXJfdDsKCgoK
CnR5cGVkZWYgczY0IG50ZnNfb2Zmc2V0X3Q7CgoKCgp0eXBlZGVmIHU2NCBudGZzX3RpbWU2NF90
OwojIDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9udGZzX2ZzX2kuaCIK
dHlwZWRlZiBzMzIgbnRmc19jbHVzdGVyX3Q7CgoKCnN0cnVjdCBudGZzX2lub2RlX2luZm8gewog
ICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gKnZvbDsKICAgICAgICB1bnNpZ25lZCBsb25nIGlf
bnVtYmVyOwogICAgICAgIF9fdTE2IHNlcXVlbmNlX251bWJlcjsKICAgICAgICB1bnNpZ25lZCBj
aGFyICphdHRyOwogICAgICAgIGludCBhdHRyX2NvdW50OwogICAgICAgIHN0cnVjdCBudGZzX2F0
dHJpYnV0ZSAqYXR0cnM7CiAgICAgICAgaW50IHJlY29yZF9jb3VudDsKICAgICAgICBpbnQgKnJl
Y29yZHM7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGludCByZWNvcmRzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2x1c3RlcnNfcGVyX3JlY29yZDsKICAgICAgICAgICAgICAgIH0gaW5kZXg7CiAgICAgICAg
fSB1Owp9OwojIDMwMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX2kuaCIg
MQoKCgoKCgoKc3RydWN0IG1zZG9zX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcg
bW11X3ByaXZhdGU7CiAgICAgICAgaW50IGlfc3RhcnQ7CiAgICAgICAgaW50IGlfbG9nc3RhcnQ7
CiAgICAgICAgaW50IGlfYXR0cnM7CiAgICAgICAgaW50IGlfY3RpbWVfbXM7CiAgICAgICAgaW50
IGlfbG9jYXRpb247CiAgICAgICAgc3RydWN0IGlub2RlICppX2ZhdF9pbm9kZTsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGlfZmF0X2hhc2g7Cn07CiMgMzAzICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIgMQojIDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC91bXNkb3NfZnNfaS5oIgpzdHJ1Y3QgZGlyX2xvY2tpbmdfaW5mbyB7CiAgICAg
ICAgd2FpdF9xdWV1ZV9oZWFkX3QgcDsKICAgICAgICBzaG9ydCBpbnQgbG9va2luZzsKICAgICAg
ICBzaG9ydCBpbnQgY3JlYXRpbmc7CgoKCiAgICAgICAgbG9uZyBwaWQ7Cgp9OwoKc3RydWN0IHVt
c2Rvc19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyBtc2Rvc19p
bmZvOwogICAgICAgIHN0cnVjdCBkaXJfbG9ja2luZ19pbmZvIGRpcl9pbmZvOwogICAgICAgIGlu
dCBpX3BhdGNoZWQ7CiAgICAgICAgaW50IGlfaXNfaGxpbms7CiAgICAgICAgb2ZmX3QgcG9zOwp9
OwojIDMwNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lzb19mc19pLmgiIDEKCgoKZW51
bSBpc29mc19maWxlX2Zvcm1hdCB7CiAgICAgICAgaXNvZnNfZmlsZV9ub3JtYWwgPSAwLAogICAg
ICAgIGlzb2ZzX2ZpbGVfc3BhcnNlID0gMSwKICAgICAgICBpc29mc19maWxlX2NvbXByZXNzZWQg
PSAyLAp9OwoKCgoKc3RydWN0IGlzb19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBpbnQg
aV9maXJzdF9leHRlbnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBpX2ZpbGVfZm9ybWF0OwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgaV9mb3JtYXRfcGFybVszXTsKICAgICAgICB1bnNpZ25lZCBsb25n
IGlfbmV4dF9zZWN0aW9uX2lubzsKICAgICAgICBvZmZfdCBpX3NlY3Rpb25fc2l6ZTsKfTsKIyAz
MDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIiAxCgoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnMuaCIgMQojIDEwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3QuaCIgMQojIDE0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3QuaCIKZW51bSBycGNfYXV0
aF9mbGF2b3IgewogICAgICAgIFJQQ19BVVRIX05VTEwgPSAwLAogICAgICAgIFJQQ19BVVRIX1VO
SVggPSAxLAogICAgICAgIFJQQ19BVVRIX1NIT1JUID0gMiwKICAgICAgICBSUENfQVVUSF9ERVMg
PSAzLAogICAgICAgIFJQQ19BVVRIX0tSQiA9IDQsCn07CgplbnVtIHJwY19tc2dfdHlwZSB7CiAg
ICAgICAgUlBDX0NBTEwgPSAwLAogICAgICAgIFJQQ19SRVBMWSA9IDEKfTsKCmVudW0gcnBjX3Jl
cGx5X3N0YXQgewogICAgICAgIFJQQ19NU0dfQUNDRVBURUQgPSAwLAogICAgICAgIFJQQ19NU0df
REVOSUVEID0gMQp9OwoKZW51bSBycGNfYWNjZXB0X3N0YXQgewogICAgICAgIFJQQ19TVUNDRVNT
ID0gMCwKICAgICAgICBSUENfUFJPR19VTkFWQUlMID0gMSwKICAgICAgICBSUENfUFJPR19NSVNN
QVRDSCA9IDIsCiAgICAgICAgUlBDX1BST0NfVU5BVkFJTCA9IDMsCiAgICAgICAgUlBDX0dBUkJB
R0VfQVJHUyA9IDQsCiAgICAgICAgUlBDX1NZU1RFTV9FUlIgPSA1Cn07CgplbnVtIHJwY19yZWpl
Y3Rfc3RhdCB7CiAgICAgICAgUlBDX01JU01BVENIID0gMCwKICAgICAgICBSUENfQVVUSF9FUlJP
UiA9IDEKfTsKCmVudW0gcnBjX2F1dGhfc3RhdCB7CiAgICAgICAgUlBDX0FVVEhfT0sgPSAwLAog
ICAgICAgIFJQQ19BVVRIX0JBRENSRUQgPSAxLAogICAgICAgIFJQQ19BVVRIX1JFSkVDVEVEQ1JF
RCA9IDIsCiAgICAgICAgUlBDX0FVVEhfQkFEVkVSRiA9IDMsCiAgICAgICAgUlBDX0FVVEhfUkVK
RUNURURWRVJGID0gNCwKICAgICAgICBSUENfQVVUSF9UT09XRUFLID0gNQp9OwojIDExICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnMuaCIgMgojIDQxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnMuaCIKIGVudW0gbmZzX3N0YXQgewogICAgICAg
IE5GU19PSyA9IDAsCiAgICAgICAgTkZTRVJSX1BFUk0gPSAxLAogICAgICAgIE5GU0VSUl9OT0VO
VCA9IDIsCiAgICAgICAgTkZTRVJSX0lPID0gNSwKICAgICAgICBORlNFUlJfTlhJTyA9IDYsCiAg
ICAgICAgTkZTRVJSX0VBR0FJTiA9IDExLAogICAgICAgIE5GU0VSUl9BQ0NFUyA9IDEzLAogICAg
ICAgIE5GU0VSUl9FWElTVCA9IDE3LAogICAgICAgIE5GU0VSUl9YREVWID0gMTgsCiAgICAgICAg
TkZTRVJSX05PREVWID0gMTksCiAgICAgICAgTkZTRVJSX05PVERJUiA9IDIwLAogICAgICAgIE5G
U0VSUl9JU0RJUiA9IDIxLAogICAgICAgIE5GU0VSUl9JTlZBTCA9IDIyLAogICAgICAgIE5GU0VS
Ul9GQklHID0gMjcsCiAgICAgICAgTkZTRVJSX05PU1BDID0gMjgsCiAgICAgICAgTkZTRVJSX1JP
RlMgPSAzMCwKICAgICAgICBORlNFUlJfTUxJTksgPSAzMSwKICAgICAgICBORlNFUlJfT1BOT1RT
VVBQID0gNDUsCiAgICAgICAgTkZTRVJSX05BTUVUT09MT05HID0gNjMsCiAgICAgICAgTkZTRVJS
X05PVEVNUFRZID0gNjYsCiAgICAgICAgTkZTRVJSX0RRVU9UID0gNjksCiAgICAgICAgTkZTRVJS
X1NUQUxFID0gNzAsCiAgICAgICAgTkZTRVJSX1JFTU9URSA9IDcxLAogICAgICAgIE5GU0VSUl9X
RkxVU0ggPSA5OSwKICAgICAgICBORlNFUlJfQkFESEFORExFID0gMTAwMDEsCiAgICAgICAgTkZT
RVJSX05PVF9TWU5DID0gMTAwMDIsCiAgICAgICAgTkZTRVJSX0JBRF9DT09LSUUgPSAxMDAwMywK
ICAgICAgICBORlNFUlJfTk9UU1VQUCA9IDEwMDA0LAogICAgICAgIE5GU0VSUl9UT09TTUFMTCA9
IDEwMDA1LAogICAgICAgIE5GU0VSUl9TRVJWRVJGQVVMVCA9IDEwMDA2LAogICAgICAgIE5GU0VS
Ul9CQURUWVBFID0gMTAwMDcsCiAgICAgICAgTkZTRVJSX0pVS0VCT1ggPSAxMDAwOAogfTsKCgoK
ZW51bSBuZnNfZnR5cGUgewogICAgICAgIE5GTk9OID0gMCwKICAgICAgICBORlJFRyA9IDEsCiAg
ICAgICAgTkZESVIgPSAyLAogICAgICAgIE5GQkxLID0gMywKICAgICAgICBORkNIUiA9IDQsCiAg
ICAgICAgTkZMTksgPSA1LAogICAgICAgIE5GU09DSyA9IDYsCiAgICAgICAgTkZCQUQgPSA3LAog
ICAgICAgIE5GRklGTyA9IDgKfTsKCgoKCgoKc3RydWN0IG5mc19maCB7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGFbNjRdOwp9OwojIDEwNyAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZzLmgiCmVudW0gbmZzM19zdGFi
bGVfaG93IHsKICAgICAgICBORlNfVU5TVEFCTEUgPSAwLAogICAgICAgIE5GU19EQVRBX1NZTkMg
PSAxLAogICAgICAgIE5GU19GSUxFX1NZTkMgPSAyCn07CiMgNyAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMgoKCgoKc3RydWN0IG5mc19pbm9kZV9pbmZv
IHsKCgoKICAgICAgICBfX3U2NCBmaWxlaWQ7CgoKCgogICAgICAgIHN0cnVjdCBuZnNfZmggZmg7
CgoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwojIDQ0ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIgogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVh
ZF9jYWNoZV9qaWZmaWVzOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfY3RpbWU7CiAgICAgICAg
X191NjQgcmVhZF9jYWNoZV9tdGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX2lzaXplOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0cnRpbWVvOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0
cnRpbWVvX3RpbWVzdGFtcDsKCgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgY2FjaGVfbXRpbWVf
amlmZmllczsKCgoKCgogICAgICAgIF9fdTMyIGNvb2tpZXZlcmZbMl07CgoKCgogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgcmVhZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5OwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgY29tbWl0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgd3Jp
dGViYWNrOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnJlYWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmRpcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5jb21t
aXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnBhZ2VzOwoKCiAgICAgICAgc3Ry
dWN0IHJwY19jcmVkICptbV9jcmVkOwp9OwojIDkyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9uZnNfZnNfaS5oIgpzdHJ1Y3QgbmZzX2xvY2tfaW5mbyB7CiAgICAgICAgdTMy
IHN0YXRlOwogICAgICAgIHUzMiBmbGFnczsKICAgICAgICBzdHJ1Y3QgbmxtX2hvc3QgKmhvc3Q7
Cn07CiMgMzA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3lzdl9mc19pLmgiIDEKCgoK
CgoKc3RydWN0IHN5c3ZfaW5vZGVfaW5mbyB7CiAgICAgICAgdTMyIGlfZGF0YVsxMCsxKzErMV07
CgoKCgogICAgICAgIHUzMiBpX2Rpcl9zdGFydF9sb29rdXA7Cn07CiMgMzA3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9hLm91dC5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS9hLm91dC5oIiAxCgoKCnN0cnVjdCBleGVjCnsKICB1bnNpZ25l
ZCBsb25nIGFfaW5mbzsKICB1bnNpZ25lZCBhX3RleHQ7CiAgdW5zaWduZWQgYV9kYXRhOwogIHVu
c2lnbmVkIGFfYnNzOwogIHVuc2lnbmVkIGFfc3ltczsKICB1bnNpZ25lZCBhX2VudHJ5OwogIHVu
c2lnbmVkIGFfdHJzaXplOwogIHVuc2lnbmVkIGFfZHJzaXplOwp9OwojIDkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiIDIKCgoKCmVudW0gbWFjaGluZV90eXBl
IHsKCgoKICBNX09MRFNVTjIgPSAwLAoKCgoKICBNXzY4MDEwID0gMSwKCgoKCiAgTV82ODAyMCA9
IDIsCgoKCgogIE1fU1BBUkMgPSAzLAoKCiAgTV8zODYgPSAxMDAsCiAgTV9NSVBTMSA9IDE1MSwK
ICBNX01JUFMyID0gMTUyCn07CiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9hLm91dC5oIgpzdHJ1Y3Qgbmxpc3QgewogIHVuaW9uIHsKICAgIGNoYXIgKm5fbmFtZTsK
ICAgIHN0cnVjdCBubGlzdCAqbl9uZXh0OwogICAgbG9uZyBuX3N0cng7CiAgfSBuX3VuOwogIHVu
c2lnbmVkIGNoYXIgbl90eXBlOwogIGNoYXIgbl9vdGhlcjsKICBzaG9ydCBuX2Rlc2M7CiAgdW5z
aWduZWQgbG9uZyBuX3ZhbHVlOwp9OwojIDIzNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYS5vdXQuaCIKc3RydWN0IHJlbG9jYXRpb25faW5mbwp7CgogIGludCByX2FkZHJl
c3M7CgogIHVuc2lnbmVkIGludCByX3N5bWJvbG51bToyNDsKCgoKICB1bnNpZ25lZCBpbnQgcl9w
Y3JlbDoxOwoKCiAgdW5zaWduZWQgaW50IHJfbGVuZ3RoOjI7CgoKCgoKCiAgdW5zaWduZWQgaW50
IHJfZXh0ZXJuOjE7CgoKCgoKCgogIHVuc2lnbmVkIGludCByX3BhZDo0OwoKfTsKIyA1ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZS5oIiAxCiMgOSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgdGltZXNwZWMgewogICAg
ICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDMxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBfX2lubGluZV9fIHVu
c2lnbmVkIGxvbmcKdGltZXNwZWNfdG9famlmZmllcyhzdHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZWMgPSB2YWx1ZS0+dHZfc2VjOwogICAgICAgIGxvbmcg
bnNlYyA9IHZhbHVlLT50dl9uc2VjOwoKICAgICAgICBpZiAoc2VjID49ICgoKH4wVUwgPj4gMSkt
MSkgLyAxMDApKQogICAgICAgICAgICAgICAgcmV0dXJuICgofjBVTCA+PiAxKS0xKTsKICAgICAg
ICBuc2VjICs9IDEwMDAwMDAwMDBMIC8gMTAwIC0gMTsKICAgICAgICBuc2VjIC89IDEwMDAwMDAw
MDBMIC8gMTAwOwogICAgICAgIHJldHVybiAxMDAgKiBzZWMgKyBuc2VjOwp9CgpzdGF0aWMgX19p
bmxpbmVfXyB2b2lkCmppZmZpZXNfdG9fdGltZXNwZWModW5zaWduZWQgbG9uZyBqaWZmaWVzLCBz
dHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7CiAgICAgICAgdmFsdWUtPnR2X25zZWMgPSAoamlmZmll
cyAlIDEwMCkgKiAoMTAwMDAwMDAwMEwgLyAxMDApOwogICAgICAgIHZhbHVlLT50dl9zZWMgPSBq
aWZmaWVzIC8gMTAwOwp9CiMgNjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3RpbWUuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCm1rdGltZSAodW5zaWduZWQgaW50
IHllYXIsIHVuc2lnbmVkIGludCBtb24sCiAgICAgICAgdW5zaWduZWQgaW50IGRheSwgdW5zaWdu
ZWQgaW50IGhvdXIsCiAgICAgICAgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IHNlYykK
ewogICAgICAgIGlmICgwID49IChpbnQpIChtb24gLT0gMikpIHsKICAgICAgICAgICAgICAgIG1v
biArPSAxMjsKICAgICAgICAgICAgICAgIHllYXIgLT0gMTsKICAgICAgICB9CgogICAgICAgIHJl
dHVybiAoKCgKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoeWVhci80IC0geWVhci8x
MDAgKyB5ZWFyLzQwMCArIDM2Nyptb24vMTIgKyBkYXkpICsKICAgICAgICAgICAgICAgICAgICAg
ICAgeWVhciozNjUgLSA3MTk0OTkKICAgICAgICAgICAgKSoyNCArIGhvdXIKICAgICAgICAgICkq
NjAgKyBtaW4KICAgICAgICApKjYwICsgc2VjOwp9CgoKCgpzdHJ1Y3QgdGltZXZhbCB7CiAgICAg
ICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwoKc3RydWN0
IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6X2Rz
dHRpbWU7Cn07CgoKCgpleHRlcm4gdm9pZCBkb19nZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwg
KnR2KTsKZXh0ZXJuIHZvaWQgZG9fc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiMg
MTE5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0cnVjdCBp
dGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICAgICAg
c3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwoKc3RydWN0IGl0aW1lcnZhbCB7CiAgICAgICAg
c3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfdmFs
dWU7Cn07CiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWZmc19mc19p
LmgiIDIKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWZmc19mc19p
LmgiCnN0cnVjdCBhZmZzX2V4dF9rZXkgewogICAgICAgIHUzMiBleHQ7CiAgICAgICAgdTMyIGtl
eTsKfTsKCgoKCnN0cnVjdCBhZmZzX2lub2RlX2luZm8gewogICAgICAgIHUzMiBpX29wZW5jbnQ7
CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX2xpbmtfbG9jazsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIGlfZXh0X2xvY2s7CgogICAgICAgIHUzMiBpX2Jsa2NudDsKICAgICAgICB1MzIgaV9l
eHRjbnQ7CiAgICAgICAgdTMyICppX2xjOwogICAgICAgIHUzMiBpX2xjX3NpemU7CiAgICAgICAg
dTMyIGlfbGNfc2hpZnQ7CiAgICAgICAgdTMyIGlfbGNfbWFzazsKICAgICAgICBzdHJ1Y3QgYWZm
c19leHRfa2V5ICppX2FjOwogICAgICAgIHUzMiBpX2V4dF9sYXN0OwogICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqaV9leHRfYmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsK
ICAgICAgICB1MzIgaV9wcm90ZWN0OwogICAgICAgIHUzMiBpX2xhc3RhbGxvYzsKICAgICAgICBp
bnQgaV9wYV9jbnQ7CiMgNTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Fm
ZnNfZnNfaS5oIgp9OwojIDMwOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Vmc19mc19p
LmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzX2ku
aCIKc3RydWN0IHVmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAg
ICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgICAgICAgICAgX191OCBpX3N5bWxpbmtbNCoxNV07
CiAgICAgICAgfSBpX3UxOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9n
ZW47CiAgICAgICAgX191MzIgaV9zaGFkb3c7CiAgICAgICAgX191MzIgaV91bnVzZWQxOwogICAg
ICAgIF9fdTMyIGlfdW51c2VkMjsKICAgICAgICBfX3UzMiBpX29lZnRmbGFnOwogICAgICAgIF9f
dTE2IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9sYXN0ZnJhZzsKfTsKIyAzMDkgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19pLmgiCnR5cGVkZWYgaW50MzJfdCBlZnNfYmxvY2tf
dDsKdHlwZWRlZiB1aW50MzJfdCBlZnNfaW5vX3Q7CgoKCgoKCnR5cGVkZWYgdW5pb24gZXh0ZW50
X3UgewogICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3WzhdOwogICAgICAgIHN0cnVjdCBleHRlbnRf
cyB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbWFnaWM6ODsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBleF9ibjoyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBl
eF9sZW5ndGg6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9vZmZzZXQ6MjQ7CiAg
ICAgICAgfSBjb29rZWQ7Cn0gZWZzX2V4dGVudDsKCnR5cGVkZWYgc3RydWN0IGVkZXZzIHsKICAg
ICAgICBzaG9ydCBvZGV2OwogICAgICAgIHVuc2lnbmVkIGludCBuZGV2Owp9IGVmc19kZXZzOwoK
CgoKCnN0cnVjdCBlZnNfZGlub2RlIHsKICAgICAgICB1X3Nob3J0IGRpX21vZGU7CiAgICAgICAg
c2hvcnQgZGlfbmxpbms7CiAgICAgICAgdV9zaG9ydCBkaV91aWQ7CiAgICAgICAgdV9zaG9ydCBk
aV9naWQ7CiAgICAgICAgaW50MzJfdCBkaV9zaXplOwogICAgICAgIGludDMyX3QgZGlfYXRpbWU7
CiAgICAgICAgaW50MzJfdCBkaV9tdGltZTsKICAgICAgICBpbnQzMl90IGRpX2N0aW1lOwogICAg
ICAgIHVpbnQzMl90IGRpX2dlbjsKICAgICAgICBzaG9ydCBkaV9udW1leHRlbnRzOwogICAgICAg
IHVfY2hhciBkaV92ZXJzaW9uOwogICAgICAgIHVfY2hhciBkaV9zcGFyZTsKICAgICAgICB1bmlv
biBkaV9hZGRyIHsKICAgICAgICAgICAgICAgIGVmc19leHRlbnQgZGlfZXh0ZW50c1sxMl07CiAg
ICAgICAgICAgICAgICBlZnNfZGV2cyBkaV9kZXY7CiAgICAgICAgfSBkaV91Owp9OwoKCnN0cnVj
dCBlZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG51bWV4dGVudHM7CiAgICAgICAgaW50IGxh
c3RleHRlbnQ7CgogICAgICAgIGVmc19leHRlbnQgZXh0ZW50c1sxMl07Cn07CiMgMzEwICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIiAxCiMgMTA5ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfcXVh
ZF90OwojIDE2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgpz
dHJ1Y3QgdmVudXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBl
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1
ICsgMV07Cn07CiMgMTk4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb2Rh
LmgiCnR5cGVkZWYgdV9sb25nIFZvbHVtZUlkOwp0eXBlZGVmIHVfbG9uZyBWbm9kZUlkOwp0eXBl
ZGVmIHVfbG9uZyBVbmlxdWVfdDsKdHlwZWRlZiB1X2xvbmcgRmlsZVZlcnNpb247CgoKCgp0eXBl
ZGVmIHN0cnVjdCBWaWNlRmlkIHsKICAgIFZvbHVtZUlkIFZvbHVtZTsKICAgIFZub2RlSWQgVm5v
ZGU7CiAgICBVbmlxdWVfdCBVbmlxdWU7Cn0gVmljZUZpZDsKCgoKCnN0YXRpYyBfX2lubGluZV9f
IGlub190IGNvZGFfZjJpKHN0cnVjdCBWaWNlRmlkICpmaWQpCnsKICAgICAgICBpZiAoICEgZmlk
ICkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmIChmaWQtPlZub2RlID09IDB4
ZmZmZmZmZmUgfHwgZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZmKQogICAgICAgICAgICAgICAgcmV0
dXJuICgoZmlkLT5Wb2x1bWUgPDwgMjApIHwgKGZpZC0+VW5pcXVlICYgMHhmZmZmZikpOwogICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAoZmlkLT5VbmlxdWUgKyAoZmlkLT5Wbm9k
ZTw8MTApICsgKGZpZC0+Vm9sdW1lPDwyMCkpOwp9CiMgMjMzICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdV9pbnQzMl90IHZ1aWRfdDsKdHlwZWRl
ZiB1X2ludDMyX3QgdmdpZF90OwoKCgoKc3RydWN0IGNvZGFfY3JlZCB7CiAgICB2dWlkX3QgY3Jf
dWlkLCBjcl9ldWlkLCBjcl9zdWlkLCBjcl9mc3VpZDsKICAgIHZnaWRfdCBjcl9ncm91cGlkLCBj
cl9lZ2lkLCBjcl9zZ2lkLCBjcl9mc2dpZDsKfTsKCgoKCgoKCmVudW0gY29kYV92dHlwZSB7IENf
Vk5PTiwgQ19WUkVHLCBDX1ZESVIsIENfVkJMSywgQ19WQ0hSLCBDX1ZMTkssIENfVlNPQ0ssIENf
VkZJRk8sIENfVkJBRCB9OwoKc3RydWN0IGNvZGFfdmF0dHIgewogICAgICAgIGxvbmcgdmFfdHlw
ZTsKICAgICAgICB1X3Nob3J0IHZhX21vZGU7CiAgICAgICAgc2hvcnQgdmFfbmxpbms7CiAgICAg
ICAgdnVpZF90IHZhX3VpZDsKICAgICAgICB2Z2lkX3QgdmFfZ2lkOwogICAgICAgIGxvbmcgdmFf
ZmlsZWlkOwogICAgICAgIHVfcXVhZF90IHZhX3NpemU7CiAgICAgICAgbG9uZyB2YV9ibG9ja3Np
emU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX2F0aW1lOwogICAgICAgIHN0cnVjdCB0aW1l
c3BlYyB2YV9tdGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfY3RpbWU7CiAgICAgICAg
dV9sb25nIHZhX2dlbjsKICAgICAgICB1X2xvbmcgdmFfZmxhZ3M7CiAgICAgICAgdV9xdWFkX3Qg
dmFfcmRldjsKICAgICAgICB1X3F1YWRfdCB2YV9ieXRlczsKICAgICAgICB1X3F1YWRfdCB2YV9m
aWxlcmV2Owp9OwoKCgoKc3RydWN0IGNvZGFfc3RhdGZzIHsKICAgIGludDMyX3QgZl9ibG9ja3M7
CiAgICBpbnQzMl90IGZfYmZyZWU7CiAgICBpbnQzMl90IGZfYmF2YWlsOwogICAgaW50MzJfdCBm
X2ZpbGVzOwogICAgaW50MzJfdCBmX2ZmcmVlOwp9OwojIDMzNyAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9pbl9oZHIgewogICAgdW5zaWdu
ZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAgIHVfc2hvcnQgcGlk
OwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9ydCBzaWQ7CiAgICBzdHJ1Y3QgY29kYV9jcmVk
IGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hkciB7CiAgICB1bnNpZ25lZCBsb25nIG9wY29k
ZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwogICAgdW5zaWduZWQgbG9uZyByZXN1bHQ7Cn07
CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAg
IFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3Jvb3RfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5faW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFf
b3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHVfcXVhZF90IGRldjsK
ICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3QgY29kYV9zdG9yZV9pbiB7CiAgICBzdHJ1Y3Qg
Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1
Y3QgY29kYV9zdG9yZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3Ry
dWN0IGNvZGFfcmVsZWFzZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9yZWxlYXNlX291dCB7CiAg
ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9jbG9zZV9pbiB7CiAg
ICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7
Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7
Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwog
ICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGludCBsZW47CiAgICBpbnQgcndmbGFn
OwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lvY3RsX291dCB7CiAgICBzdHJ1Y3Qg
Y29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNhZGRyX3QgZGF0YTsKfTsKCgoKc3Ry
dWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
dXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFf
c2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7
CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3RydWN0IGNvZGFfc2V0YXR0cl9vdXQg
ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfYWNjZXNzX2lu
IHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBm
bGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5hbWU7CiAgICBpbnQgZmxhZ3M7
Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CgoKCnN0cnVjdCBjb2RhX2NyZWF0
ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBz
dHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7CiAgICBpbnQgbW9kZTsKICAgIGlu
dCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRf
aGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsK
CgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVtb3ZlX291dCB7
CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9saW5rX2luIHsK
ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgc291cmNlRmlkOwogICAgVmlj
ZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfbGlua19vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0cnVjdCBjb2RhX3JlbmFtZV9pbiB7
CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIHNvdXJjZUZpZDsKICAgIGlu
dCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IGRlc3RuYW1lOwp9OwoKc3Ry
dWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpz
dHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IG5hbWU7Cn07Cgpz
dHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZp
Y2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2Rh
X3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsK
ICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJfb3V0IHsKICAgIHN0cnVjdCBjb2Rh
X291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxpbmtfaW4gewogICAgc3RydWN0IGNv
ZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHNyY25hbWU7CiAgICBzdHJ1
Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfc3ltbGlu
a19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfcmVh
ZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9
OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2ZzeW5j
X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0
cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpz
dHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
aWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9o
ZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CiMgNjE2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2RhX3B1cmdldXNl
cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX2NyZWQg
Y3JlZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwZGlyX291
dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoK
CgpzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsK
ICAgIHN0cnVjdCBjb2RhX2NyZWQgY3JlZDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCgoKc3RydWN0
IGNvZGFfcHVyZ2VmaWRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNl
RmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHsKICAgIHN0cnVjdCBj
b2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIE5ld0ZpZDsKICAgIFZpY2VGaWQgT2xkRmlkOwp9
OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGlo
OwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9i
eV9mZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBmZDsKCgogICAg
c3RydWN0IGZpbGUgKmZoOwoKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gewogICAg
c3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9
OwoKc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRy
IG9oOwogICAgICAgIGludCBwYXRoOwp9OwoKCnN0cnVjdCBjb2RhX3N0YXRmc19pbiB7CiAgICBz
dHJ1Y3QgY29kYV9pbl9oZHIgaW47Cn07CgpzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnMgc3RhdDsKfTsKIyA3
MDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKdW5pb24gaW5w
dXRBcmdzIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIHN0cnVjdCBjb2RhX29wZW5f
aW4gY29kYV9vcGVuOwogICAgc3RydWN0IGNvZGFfc3RvcmVfaW4gY29kYV9zdG9yZTsKICAgIHN0
cnVjdCBjb2RhX3JlbGVhc2VfaW4gY29kYV9yZWxlYXNlOwogICAgc3RydWN0IGNvZGFfY2xvc2Vf
aW4gY29kYV9jbG9zZTsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX2luIGNvZGFfaW9jdGw7CiAgICBz
dHJ1Y3QgY29kYV9nZXRhdHRyX2luIGNvZGFfZ2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX3NldGF0
dHJfaW4gY29kYV9zZXRhdHRyOwogICAgc3RydWN0IGNvZGFfYWNjZXNzX2luIGNvZGFfYWNjZXNz
OwogICAgc3RydWN0IGNvZGFfbG9va3VwX2luIGNvZGFfbG9va3VwOwogICAgc3RydWN0IGNvZGFf
Y3JlYXRlX2luIGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfcmVtb3ZlX2luIGNvZGFfcmVt
b3ZlOwogICAgc3RydWN0IGNvZGFfbGlua19pbiBjb2RhX2xpbms7CiAgICBzdHJ1Y3QgY29kYV9y
ZW5hbWVfaW4gY29kYV9yZW5hbWU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9pbiBjb2RhX21rZGly
OwogICAgc3RydWN0IGNvZGFfcm1kaXJfaW4gY29kYV9ybWRpcjsKICAgIHN0cnVjdCBjb2RhX3N5
bWxpbmtfaW4gY29kYV9zeW1saW5rOwogICAgc3RydWN0IGNvZGFfcmVhZGxpbmtfaW4gY29kYV9y
ZWFkbGluazsKICAgIHN0cnVjdCBjb2RhX2ZzeW5jX2luIGNvZGFfZnN5bmM7CiAgICBzdHJ1Y3Qg
Y29kYV92Z2V0X2luIGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfaW4gY29k
YV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX2luIGNvZGFfb3Blbl9i
eV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX2luIGNvZGFfc3RhdGZzOwp9OwoKdW5pb24g
b3V0cHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFf
cm9vdF9vdXQgY29kYV9yb290OwogICAgc3RydWN0IGNvZGFfb3Blbl9vdXQgY29kYV9vcGVuOwog
ICAgc3RydWN0IGNvZGFfaW9jdGxfb3V0IGNvZGFfaW9jdGw7CiAgICBzdHJ1Y3QgY29kYV9nZXRh
dHRyX291dCBjb2RhX2dldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IGNvZGFfbG9v
a3VwOwogICAgc3RydWN0IGNvZGFfY3JlYXRlX291dCBjb2RhX2NyZWF0ZTsKICAgIHN0cnVjdCBj
b2RhX21rZGlyX291dCBjb2RhX21rZGlyOwogICAgc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IGNv
ZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV92Z2V0X291dCBjb2RhX3ZnZXQ7CiAgICBzdHJ1
Y3QgY29kYV9wdXJnZXVzZXJfb3V0IGNvZGFfcHVyZ2V1c2VyOwogICAgc3RydWN0IGNvZGFfemFw
ZmlsZV9vdXQgY29kYV96YXBmaWxlOwogICAgc3RydWN0IGNvZGFfemFwZGlyX291dCBjb2RhX3ph
cGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCBjb2RhX3phcHZub2RlOwogICAgc3Ry
dWN0IGNvZGFfcHVyZ2VmaWRfb3V0IGNvZGFfcHVyZ2VmaWQ7CiAgICBzdHJ1Y3QgY29kYV9yZXBs
YWNlX291dCBjb2RhX3JlcGxhY2U7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X2ZkX291dCBjb2Rh
X29wZW5fYnlfZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0IGNvZGFfb3Blbl9i
eV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX291dCBjb2RhX3N0YXRmczsKfTsKCnVuaW9u
IGNvZGFfZG93bmNhbGxzIHsKCgogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2VyX291dCBwdXJnZXVz
ZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291dCB6YXBmaWxlOwogICAgc3RydWN0IGNvZGFf
emFwZGlyX291dCB6YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgemFwdm5vZGU7
CiAgICBzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgcHVyZ2VmaWQ7CiAgICBzdHJ1Y3QgY29kYV9y
ZXBsYWNlX291dCByZXBsYWNlOwp9OwoKCgoKCgoKc3RydWN0IFZpY2VJb2N0bCB7CiAgICAgICAg
Y2FkZHJfdCBpbiwgb3V0OwogICAgICAgIHNob3J0IGluX3NpemU7CiAgICAgICAgc2hvcnQgb3V0
X3NpemU7Cn07CgpzdHJ1Y3QgUGlvY3RsRGF0YSB7CiAgICAgICAgY29uc3QgY2hhciAqcGF0aDsK
ICAgICAgICBpbnQgZm9sbG93OwogICAgICAgIHN0cnVjdCBWaWNlSW9jdGwgdmk7Cn07CiMgNzk3
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2Rh
X21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIGludCBmZDsKfTsKIyAx
NSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDIKCgoK
CnN0cnVjdCBjb2RhX2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBWaWNlRmlkIGNfZmlkOwog
ICAgICAgIHVfc2hvcnQgY19mbGFnczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNfY2lsaXN0
OwogICAgICAgIGludCBjX21hcGNvdW50OwogICAgICAgIHN0cnVjdCBjb2RhX2NyZWQgY19jYWNo
ZWRfY3JlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgY19jYWNoZWRfcGVybTsKfTsKCgoKCgpzdHJ1
Y3QgY29kYV9maWxlX2luZm8gewogICAgICAgIGludCBjZmlfbWFnaWM7CiAgICAgICAgaW50IGNm
aV9tYXBjb3VudDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqY2ZpX2NvbnRhaW5lcjsKICAgICAgICBz
dHJ1Y3QgY29kYV9jcmVkIGNmaV9jcmVkOwp9OwojIDQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIKaW50IGNvZGFfY25vZGVfbWFrZShzdHJ1Y3QgaW5v
ZGUgKiosIHN0cnVjdCBWaWNlRmlkICosIHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKc3RydWN0IGlu
b2RlICpjb2RhX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IFZpY2VGaWQgKmZp
ZCwgc3RydWN0IGNvZGFfdmF0dHIgKmF0dHIpOwppbnQgY29kYV9jbm9kZV9tYWtlY3RsKHN0cnVj
dCBpbm9kZSAqKmlub2RlLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RydWN0IGlub2RlICpj
b2RhX2ZpZF90b19pbm9kZShWaWNlRmlkICpmaWQsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwp2
b2lkIGNvZGFfcmVwbGFjZV9maWQoc3RydWN0IGlub2RlICosIFZpY2VGaWQgKiwgVmljZUZpZCAq
KTsKIyAzMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yb21mc19mc19pLmgiIDEKCgoK
CgpzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX21ldGFz
aXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kYXRhb2Zmc2V0Owp9OwojIDMxMiAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvc2htZW1fZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IHVuc2lnbmVkIGxvbmcgdmFsOwp9IHN3cF9lbnRyeV90OwoKZXh0ZXJuIGF0b21pY190IHNobWVt
X25ycGFnZXM7CgpzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyB7CiAgICAgICAgc3BpbmxvY2tfdCBs
b2NrOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
bmV4dF9pbmRleDsKICAgICAgICBzd3BfZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAgICAgdm9p
ZCAqKmlfaW5kaXJlY3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzd2FwcGVkOwogICAgICAgIGlu
dCBsb2NrZWQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHN0cnVjdCBp
bm9kZSAqaW5vZGU7Cn07CgpzdHJ1Y3Qgc2htZW1fc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBtYXhfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9ibG9ja3M7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBtYXhfaW5vZGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9p
bm9kZXM7CiAgICAgICAgc3BpbmxvY2tfdCBzdGF0X2xvY2s7Cn07CiMgMzEzICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvc21iX2ZzX2kuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIgpzdHJ1Y3Qgc21iX2lub2RlX2luZm8gewoKCgoK
CiAgICAgICAgdW5zaWduZWQgaW50IG9wZW47CiAgICAgICAgX191MTYgZmlsZWlkOwogICAgICAg
IF9fdTE2IGF0dHI7CgogICAgICAgIF9fdTE2IGFjY2VzczsKICAgICAgICBfX3UxNiBmbGFnczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG10aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2xv
c2VkOwogICAgICAgIHVuc2lnbmVkIG9wZW5lcnM7Cn07CiMgMzE0ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvaGZzX2ZzX2kuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9oZnNfZnNfaS5oIgpzdHJ1Y3QgaGZzX2lub2RlX2luZm8gewogICAgICAgIGlu
dCBtYWdpYzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICBzdHJ1
Y3QgaGZzX2NhdF9lbnRyeSAqZW50cnk7CgoKICAgICAgICBzdHJ1Y3QgaGZzX2ZvcmsgKmZvcms7
CiAgICAgICAgaW50IGNvbnZlcnQ7CgoKICAgICAgICBpbm9fdCBmaWxlX3R5cGU7CiAgICAgICAg
Y2hhciBkaXJfc2l6ZTsKCgogICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfaGRyX2xheW91dCAqZGVm
YXVsdF9sYXlvdXQ7CiAgICAgICAgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpsYXlvdXQ7CgoKICAg
ICAgICBpbnQgdHpfc2Vjb25kc3dlc3Q7CgoKICAgICAgICB2b2lkICgqZF9kcm9wX29wKShzdHJ1
Y3QgZGVudHJ5ICosIGNvbnN0IGlub190KTsKfTsKIyAzMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9hZGZzX2ZzX2kuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9hZGZzX2ZzX2kuaCIKc3RydWN0IGFkZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9pZDsK
ICAgICAgICBfX3UzMiBsb2FkYWRkcjsKICAgICAgICBfX3UzMiBleGVjYWRkcjsKICAgICAgICB1
bnNpZ25lZCBpbnQgZmlsZXR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IGF0dHI7CiAgICAgICAg
aW50IHN0YW1wZWQ6MTsKfTsKIyAzMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0
X2ZzX2kuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0
X2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbnh0eXBl
cy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueHR5cGVz
LmgiCnR5cGVkZWYgX191MTYgcW54NF9ueHRudF90Owp0eXBlZGVmIF9fdTggcW54NF9mdHlwZV90
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIF9fdTMyIHh0bnRfYmxrOwogICAgICAgIF9fdTMy
IHh0bnRfc2l6ZTsKfSBxbng0X3h0bnRfdDsKCnR5cGVkZWYgX191MTYgcW54NF9tb2RlX3Q7CnR5
cGVkZWYgX191MTYgcW54NF9tdWlkX3Q7CnR5cGVkZWYgX191MTYgcW54NF9tZ2lkX3Q7CnR5cGVk
ZWYgX191MzIgcW54NF9vZmZfdDsKdHlwZWRlZiBfX3UxNiBxbng0X25saW5rX3Q7CiMgMTUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAyCgoKCgpzdHJ1
Y3QgcW54NF9pbm9kZV9pbmZvIHsKICAgICAgICBjaGFyIGlfcmVzZXJ2ZWRbMTZdOwogICAgICAg
IHFueDRfb2ZmX3QgaV9zaXplOwogICAgICAgIHFueDRfeHRudF90IGlfZmlyc3RfeHRudDsKICAg
ICAgICBfX3UzMiBpX3hibGs7CiAgICAgICAgX19zMzIgaV9mdGltZTsKICAgICAgICBfX3MzMiBp
X210aW1lOwogICAgICAgIF9fczMyIGlfYXRpbWU7CiAgICAgICAgX19zMzIgaV9jdGltZTsKICAg
ICAgICBxbng0X254dG50X3QgaV9udW1feHRudHM7CiAgICAgICAgcW54NF9tb2RlX3QgaV9tb2Rl
OwogICAgICAgIHFueDRfbXVpZF90IGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGlfZ2lkOwog
ICAgICAgIHFueDRfbmxpbmtfdCBpX25saW5rOwogICAgICAgIF9fdTggaV96ZXJvWzRdOwogICAg
ICAgIHFueDRfZnR5cGVfdCBpX3R5cGU7CiAgICAgICAgX191OCBpX3N0YXR1czsKICAgICAgICB1
bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwp9OwojIDMxNyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3JlaXNlcmZzX2ZzX2kuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9yZWlzZXJmc19mc19pLmgiCnR5cGVkZWYgZW51bSB7CgoKCiAgICBpX2l0ZW1f
a2V5X3ZlcnNpb25fbWFzayA9IDB4MDAwMSwKCgogICAgaV9zdGF0X2RhdGFfdmVyc2lvbl9tYXNr
ID0gMHgwMDAyLAoKICAgIGlfcGFja19vbl9jbG9zZV9tYXNrID0gMHgwMDA0LAoKICAgIGlfbm9w
YWNrX21hc2sgPSAweDAwMDgsCgoKCiAgICBpX2xpbmtfc2F2ZWRfdW5saW5rX21hc2sgPSAweDAw
MTAsCiAgICBpX2xpbmtfc2F2ZWRfdHJ1bmNhdGVfbWFzayA9IDB4MDAyMAp9IHJlaXNlcmZzX2lu
b2RlX2ZsYWdzOwoKCnN0cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHsKICAgIF9fdTMyIGlfa2V5
IFs0XTsKCgoKICAgIF9fdTMyIGlfZmxhZ3M7CgogICAgX191MzIgaV9maXJzdF9kaXJlY3RfYnl0
ZTsKCgogICAgX191MzIgaV9hdHRyczsKCiAgICBpbnQgaV9wcmVhbGxvY19ibG9jazsKICAgIGlu
dCBpX3ByZWFsbG9jX2NvdW50OwogICAgc3RydWN0IGxpc3RfaGVhZCBpX3ByZWFsbG9jX2xpc3Q7
CgoKICAgIGludCBuZXdfcGFja2luZ19sb2NhbGl0eToxOwoKCgoKCgogICAgdW5zaWduZWQgbG9u
ZyBpX3RyYW5zX2lkIDsKICAgIHVuc2lnbmVkIGxvbmcgaV90cmFuc19pbmRleCA7Cn07CiMgMzE4
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmZzX2ZzX2kuaCIgMQojIDEyICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIgpzdHJ1Y3QgYmZzX2lub2Rl
X2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kc2tfaW5vOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgaV9zYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2VibG9jazsKfTsKIyAzMTkg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZGZfZnNfaS5oIiAxCiMgMjQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiCnR5cGVkZWYgc3RydWN0CnsK
ICAgICAgICBfX3UzMiBsb2dpY2FsQmxvY2tOdW07CiAgICAgICAgX191MTYgcGFydGl0aW9uUmVm
ZXJlbmNlTnVtOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBsYl9hZGRyOwoKCnN0cnVjdCB1
ZGZfaW5vZGVfaW5mbwp7CiAgICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0
aW1lOwogICAgICAgIGxvbmcgaV9jcnRpbWU7CiAgICAgICAgbG9uZyBpX3VjcnRpbWU7CgogICAg
ICAgIGxiX2FkZHIgaV9sb2NhdGlvbjsKICAgICAgICBfX3U2NCBpX3VuaXF1ZTsKICAgICAgICBf
X3UzMiBpX2xlbkVBdHRyOwogICAgICAgIF9fdTMyIGlfbGVuQWxsb2M7CiAgICAgICAgX191NjQg
aV9sZW5FeHRlbnRzOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBf
X3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAz
OwogICAgICAgIHVuc2lnbmVkIGlfZXh0ZW5kZWRfZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlf
c3RyYXRfNDA5NiA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAg
IHVuc2lnbmVkIHJlc2VydmVkIDogMjY7Cn07CiMgMzIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvbmNwX2ZzX2kuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNwX2lub2RlX2luZm8gewogICAgICAgIF9fdTMyIGRp
ckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NEaXJOdW0g
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5lZDsKICAgICAgICBpbnQgYWNj
ZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
Owp9OwojIDMyMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Byb2NfZnNfaS5oIiAxCnN0
cnVjdCBwcm9jX2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsK
ICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgKCpw
cm9jX2dldF9saW5rKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKiwgc3RydWN0IHZm
c21vdW50ICoqKTsKICAgICAgICAgICAgICAgIGludCAoKnByb2NfcmVhZCkoc3RydWN0IHRhc2tf
c3RydWN0ICp0YXNrLCBjaGFyICpwYWdlKTsKICAgICAgICB9IG9wOwogICAgICAgIHN0cnVjdCBm
aWxlICpmaWxlOwp9OwojIDMyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3VzYmRldl9m
c19pLmgiIDEKc3RydWN0IHVzYl9kZXZpY2U7CnN0cnVjdCB1c2JfYnVzOwoKc3RydWN0IHVzYmRl
dl9pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRsaXN0OwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3Ry
dWN0IHVzYl9kZXZpY2UgKmRldjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfYnVzICpidXM7
CiAgICAgICAgfSBwOwp9OwojIDMyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2pmZnMy
X2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9qZmZz
Ml9mc19pLmgiCnN0cnVjdCBqZmZzMl9pbm9kZV9pbmZvIHsKIyAyNiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvamZmczJfZnNfaS5oIgogICAgICAgIHN0cnVjdCBzZW1hcGhv
cmUgc2VtOwoKCiAgICAgICAgX191MzIgaGlnaGVzdF92ZXJzaW9uOwoKCiAgICAgICAgc3RydWN0
IGpmZnMyX25vZGVfZnJhZyAqZnJhZ2xpc3Q7CgoKCgoKCiAgICAgICAgc3RydWN0IGpmZnMyX2Z1
bGxfZG5vZGUgKm1ldGFkYXRhOwoKCiAgICAgICAgc3RydWN0IGpmZnMyX2Z1bGxfZGlyZW50ICpk
ZW50czsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9pbm9kZV9jYWNoZSAqaW5vY2FjaGU7CgoKCgoK
ICAgICAgICBfX3UxNiBmbGFnczsKICAgICAgICBfX3U4IHVzZXJjb21wcjsKfTsKIyAzMjQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jcmFtZnNfZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3Qg
Y3JhbWZzX3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1h
Z2ljOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemU7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmxvY2tzOwogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGZpbGVzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGZsYWdzOwp9OwojIDMyNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDM1MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMu
aCIKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAg
dW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlhX3VpZDsKICAgICAgICBnaWRfdCBpYV9n
aWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAgICAgdGltZV90IGlhX2F0aW1lOwogICAg
ICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1lX3QgaWFfY3RpbWU7CiAgICAgICAgdW5z
aWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzc1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3F1b3RhLmgiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
cXVvdGEuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyCiMgNDMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDIKIyAxMDkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcWJsayB7
CiAgICAgICAgX191MzIgZHFiX2JoYXJkbGltaXQ7CiAgICAgICAgX191MzIgZHFiX2Jzb2Z0bGlt
aXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmJsb2NrczsKICAgICAgICBfX3UzMiBkcWJfaWhhcmRs
aW1pdDsKICAgICAgICBfX3UzMiBkcWJfaXNvZnRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfY3Vy
aW5vZGVzOwogICAgICAgIHRpbWVfdCBkcWJfYnRpbWU7CiAgICAgICAgdGltZV90IGRxYl9pdGlt
ZTsKfTsKIyAxMzQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgi
CnN0cnVjdCBkcXN0YXRzIHsKICAgICAgICBfX3UzMiBsb29rdXBzOwogICAgICAgIF9fdTMyIGRy
b3BzOwogICAgICAgIF9fdTMyIHJlYWRzOwogICAgICAgIF9fdTMyIHdyaXRlczsKICAgICAgICBf
X3UzMiBjYWNoZV9oaXRzOwogICAgICAgIF9fdTMyIGFsbG9jYXRlZF9kcXVvdHM7CiAgICAgICAg
X191MzIgZnJlZV9kcXVvdHM7CiAgICAgICAgX191MzIgc3luY3M7Cn07CgoKCmV4dGVybiBpbnQg
bnJfZHF1b3RzLCBucl9mcmVlX2RxdW90czsKZXh0ZXJuIGludCBkcXVvdF9yb290X3NxdWFzaDsK
IyAxNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVj
dCBkcXVvdCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9oYXNoOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZHFfaW51c2U7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9mcmVlOwog
ICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGRxX3dhaXRfbG9jazsKICAgICAgICB3YWl0X3F1ZXVl
X2hlYWRfdCBkcV93YWl0X2ZyZWU7CiAgICAgICAgaW50IGRxX2NvdW50OwoKCiAgICAgICAgc3Ry
dWN0IHN1cGVyX2Jsb2NrICpkcV9zYjsKICAgICAgICB1bnNpZ25lZCBpbnQgZHFfaWQ7CiAgICAg
ICAga2Rldl90IGRxX2RldjsKICAgICAgICBzaG9ydCBkcV90eXBlOwogICAgICAgIHNob3J0IGRx
X2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZHFfcmVmZXJlbmNlZDsKCiAgICAgICAgc3Ry
dWN0IGRxYmxrIGRxX2RxYjsKfTsKIyAzNzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKCgoKCgpzdHJ1Y3QgcGFnZTsKc3RydWN0IGFkZHJlc3Nfc3BhY2U7CnN0
cnVjdCBraW9idWY7CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHsKICAgICAgICBp
bnQgKCp3cml0ZXBhZ2UpKHN0cnVjdCBwYWdlICopOwogICAgICAgIGludCAoKnJlYWRwYWdlKShz
dHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICAgICAgICBpbnQgKCpzeW5jX3BhZ2UpKHN0
cnVjdCBwYWdlICopOwoKCgoKICAgICAgICBpbnQgKCpwcmVwYXJlX3dyaXRlKShzdHJ1Y3QgZmls
ZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwogICAgICAgIGludCAoKmNv
bW1pdF93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2ln
bmVkKTsKCiAgICAgICAgaW50ICgqYm1hcCkoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9uZyk7
CiAgICAgICAgaW50ICgqZmx1c2hwYWdlKSAoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZyk7
CiAgICAgICAgaW50ICgqcmVsZWFzZXBhZ2UpIChzdHJ1Y3QgcGFnZSAqLCBpbnQpOwoKICAgICAg
ICBpbnQgKCpkaXJlY3RfSU8pKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBraW9idWYgKiwg
dW5zaWduZWQgbG9uZywgaW50KTsKICAgICAgICB2b2lkICgqcmVtb3ZlcGFnZSkoc3RydWN0IHBh
Z2UgKik7Cn07CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBjbGVhbl9wYWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3BhZ2VzOwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
bnJwYWdlczsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zICphX29wczsK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0
ICppX21tYXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBfc2hhcmVkOwog
ICAgICAgIHNwaW5sb2NrX3QgaV9zaGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2ZwX21hc2s7Cn07
CgpzdHJ1Y3QgY2hhcl9kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaGFzaDsKICAg
ICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgYXRvbWljX3Qg
b3BlbmVyczsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVjdCBibG9ja19k
ZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAgICBhdG9taWNf
dCBiZF9jb3VudDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9kZTsKICAgICAgICBkZXZf
dCBiZF9kZXY7CiAgICAgICAgaW50IGJkX29wZW5lcnM7CiAgICAgICAgY29uc3Qgc3RydWN0IGJs
b2NrX2RldmljZV9vcGVyYXRpb25zICpiZF9vcDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGJk
X3NlbTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsKfTsKCnN0cnVjdCBpbm9k
ZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBpX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RlbnRyeTsKCiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2J1ZmZlcnM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBpX2RpcnR5X2RhdGFfYnVmZmVyczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2lubzsKICAg
ICAgICBhdG9taWNfdCBpX2NvdW50OwogICAgICAgIGtkZXZfdCBpX2RldjsKICAgICAgICB1bW9k
ZV90IGlfbW9kZTsKICAgICAgICBubGlua190IGlfbmxpbms7CiAgICAgICAgdWlkX3QgaV91aWQ7
CiAgICAgICAgZ2lkX3QgaV9naWQ7CiAgICAgICAga2Rldl90IGlfcmRldjsKICAgICAgICBsb2Zm
X3QgaV9zaXplOwogICAgICAgIHRpbWVfdCBpX2F0aW1lOwogICAgICAgIHRpbWVfdCBpX210aW1l
OwogICAgICAgIHRpbWVfdCBpX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpX2Jsa2JpdHM7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBp
X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIGlfc2VtOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAg
ICAgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3Bl
cmF0aW9ucyAqaV9mb3A7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAg
IHdhaXRfcXVldWVfaGVhZF90IGlfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zs
b2NrOwogICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3Ry
dWN0IGFkZHJlc3Nfc3BhY2UgaV9kYXRhOwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsy
XTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RldmljZXM7CiAgICAgICAgc3RydWN0IHBp
cGVfaW5vZGVfaW5mbyAqaV9waXBlOwogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmlfYmRl
djsKICAgICAgICBzdHJ1Y3QgY2hhcl9kZXZpY2UgKmlfY2RldjsKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBpX2Rub3RpZnlfbWFzazsKICAgICAgICBzdHJ1Y3QgZG5vdGlmeV9zdHJ1Y3QgKmlfZG5v
dGlmeTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX3N0YXRlOwoKICAgICAgICB1bnNpZ25lZCBp
bnQgaV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlfc29jazsKCiAgICAgICAgYXRvbWlj
X3QgaV93cml0ZWNvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBpX2F0dHJfZmxhZ3M7CiAgICAg
ICAgX191MzIgaV9nZW5lcmF0aW9uOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0
cnVjdCBtaW5peF9pbm9kZV9pbmZvIG1pbml4X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0
Ml9pbm9kZV9pbmZvIGV4dDJfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX2lub2RlX2lu
Zm8gZXh0M19pOwogICAgICAgICAgICAgICAgc3RydWN0IGhwZnNfaW5vZGVfaW5mbyBocGZzX2k7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvIG50ZnNfaTsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIG1zZG9zX2k7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgdW1zZG9zX2lub2RlX2luZm8gdW1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
aXNvX2lub2RlX2luZm8gaXNvZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfaW5vZGVf
aW5mbyBuZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzeXN2X2lub2RlX2luZm8gc3lzdl9p
OwogICAgICAgICAgICAgICAgc3RydWN0IGFmZnNfaW5vZGVfaW5mbyBhZmZzX2k7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgdWZzX2lub2RlX2luZm8gdWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgZWZzX2lub2RlX2luZm8gZWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgcm9tZnNfaW5v
ZGVfaW5mbyByb21mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHNobWVtX2lub2RlX2luZm8g
c2htZW1faTsKICAgICAgICAgICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2luZm8gY29kYV9pOwog
ICAgICAgICAgICAgICAgc3RydWN0IHNtYl9pbm9kZV9pbmZvIHNtYmZzX2k7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgaGZzX2lub2RlX2luZm8gaGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
YWRmc19pbm9kZV9pbmZvIGFkZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0X2lub2Rl
X2luZm8gcW54NF9pOwogICAgICAgICAgICAgICAgc3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8g
cmVpc2VyZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBiZnNfaW5vZGVfaW5mbyBiZnNfaTsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfaW5vZGVfaW5mbyB1ZGZfaTsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBuY3BfaW5vZGVfaW5mbyBuY3Bmc19pOwogICAgICAgICAgICAgICAgc3RydWN0
IHByb2NfaW5vZGVfaW5mbyBwcm9jX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0IHNv
Y2tldF9pOwogICAgICAgICAgICAgICAgc3RydWN0IHVzYmRldl9pbm9kZV9pbmZvIHVzYmRldl9p
OwogICAgICAgICAgICAgICAgc3RydWN0IGpmZnMyX2lub2RlX2luZm8gamZmczJfaTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBzdXBlcm1vdW50X2lub2RlX2luZm8gc3VwZXJtb3VudF9pOwogICAg
ICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19pcDsKICAgICAgICB9IHU7Cn07CgpzdHJ1Y3QgZm93
bl9zdHJ1Y3QgewogICAgICAgIGludCBwaWQ7CiAgICAgICAgdWlkX3QgdWlkLCBldWlkOwogICAg
ICAgIGludCBzaWdudW07Cn07CgpzdHJ1Y3QgZmlsZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBmX2xpc3Q7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZl9kZW50cnk7CiAgICAgICAgc3RydWN0
IHZmc21vdW50ICpmX3Zmc21udDsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29w
OwogICAgICAgIGF0b21pY190IGZfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGZfZmxhZ3M7
CiAgICAgICAgbW9kZV90IGZfbW9kZTsKICAgICAgICBsb2ZmX3QgZl9wb3M7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBmX3JlYWRhLCBmX3JhbWF4LCBmX3JhZW5kLCBmX3JhbGVuLCBmX3Jhd2luOwog
ICAgICAgIHN0cnVjdCBmb3duX3N0cnVjdCBmX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBm
X3VpZCwgZl9naWQ7CiAgICAgICAgaW50IGZfZXJyb3I7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
Zl92ZXJzaW9uOwoKCiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwoKCiAgICAgICAgc3RydWN0
IGtpb2J1ZiAqZl9pb2J1ZjsKICAgICAgICBsb25nIGZfaW9idWZfbG9jazsKfTsKZXh0ZXJuIHNw
aW5sb2NrX3QgZmlsZXNfbG9jazsKCgoKCgoKZXh0ZXJuIGludCBpbml0X3ByaXZhdGVfZmlsZShz
dHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CiMgNTgzICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgp0eXBlZGVmIHN0cnVjdCBmaWxlc19zdHJ1Y3Qg
KmZsX293bmVyX3Q7CgpzdHJ1Y3QgZmlsZV9sb2NrIHsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2Nr
ICpmbF9uZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZmxfbGluazsKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGZsX2Jsb2NrOwogICAgICAgIGZsX293bmVyX3QgZmxfb3duZXI7CiAgICAg
ICAgdW5zaWduZWQgaW50IGZsX3BpZDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBmbF93YWl0
OwogICAgICAgIHN0cnVjdCBmaWxlICpmbF9maWxlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxf
ZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbF90eXBlOwogICAgICAgIGxvZmZfdCBmbF9z
dGFydDsKICAgICAgICBsb2ZmX3QgZmxfZW5kOwoKICAgICAgICB2b2lkICgqZmxfbm90aWZ5KShz
dHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZvaWQgKCpmbF9pbnNlcnQpKHN0cnVjdCBmaWxl
X2xvY2sgKik7CiAgICAgICAgdm9pZCAoKmZsX3JlbW92ZSkoc3RydWN0IGZpbGVfbG9jayAqKTsK
CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiBmbF9mYXN5bmM7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmbF9icmVha190aW1lOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgbmZzX2xvY2tfaW5mbyBuZnNfZmw7CiAgICAgICAgfSBmbF91Owp9OwojIDYxNyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHN0cnVjdCBsaXN0
X2hlYWQgZmlsZV9sb2NrX2xpc3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2ZjbnRsLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vZmNudGwuaCIgMQojIDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vZmNu
dGwuaCIKc3RydWN0IGZsb2NrIHsKICAgICAgICBzaG9ydCBsX3R5cGU7CiAgICAgICAgc2hvcnQg
bF93aGVuY2U7CiAgICAgICAgb2ZmX3QgbF9zdGFydDsKICAgICAgICBvZmZfdCBsX2xlbjsKICAg
ICAgICBwaWRfdCBsX3BpZDsKfTsKCnN0cnVjdCBmbG9jazY0IHsKICAgICAgICBzaG9ydCBsX3R5
cGU7CiAgICAgICAgc2hvcnQgbF93aGVuY2U7CiAgICAgICAgbG9mZl90IGxfc3RhcnQ7CiAgICAg
ICAgbG9mZl90IGxfbGVuOwogICAgICAgIHBpZF90IGxfcGlkOwp9OwojIDUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDIKIyA2MjAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGsodW5z
aWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7CmV4dGVybiBpbnQgZmNudGxfc2V0bGsodW5zaWdu
ZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jayAqKTsKCmV4dGVybiBpbnQgZmNudGxf
Z2V0bGs2NCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwpleHRlcm4gaW50IGZjbnRs
X3NldGxrNjQodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwoK
CmV4dGVybiB2b2lkIGxvY2tzX2luaXRfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4g
dm9pZCBsb2Nrc19jb3B5X2xvY2soc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2Nr
ICopOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfcG9zaXgoc3RydWN0IGZpbGUgKiwgZmxfb3du
ZXJfdCk7CmV4dGVybiB2b2lkIGxvY2tzX3JlbW92ZV9mbG9jayhzdHJ1Y3QgZmlsZSAqKTsKZXh0
ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKnBvc2l4X3Rlc3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBzdHJ1
Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHBvc2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmlsZSAq
LCBzdHJ1Y3QgZmlsZV9sb2NrICosIHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIHBvc2l4X2Js
b2NrX2xvY2soc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4g
dm9pZCBwb3NpeF91bmJsb2NrX2xvY2soc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBw
b3NpeF9sb2Nrc19kZWFkbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sg
Kik7CmV4dGVybiBpbnQgX19nZXRfbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQg
aW50IGZsYWdzKTsKZXh0ZXJuIHRpbWVfdCBsZWFzZV9nZXRfbXRpbWUoc3RydWN0IGlub2RlICop
OwpleHRlcm4gaW50IGxvY2tfbWF5X3JlYWQoc3RydWN0IGlub2RlICosIGxvZmZfdCBzdGFydCwg
dW5zaWduZWQgbG9uZyBjb3VudCk7CmV4dGVybiBpbnQgbG9ja19tYXlfd3JpdGUoc3RydWN0IGlu
b2RlICosIGxvZmZfdCBzdGFydCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CgpzdHJ1Y3QgZmFzeW5j
X3N0cnVjdCB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGludCBmYV9mZDsKICAgICAgICBz
dHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFfbmV4dDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmFfZmls
ZTsKfTsKCgoKCmV4dGVybiBpbnQgZmFzeW5jX2hlbHBlcihpbnQsIHN0cnVjdCBmaWxlICosIGlu
dCwgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiopOwoKZXh0ZXJuIHZvaWQga2lsbF9mYXN5bmMoc3Ry
dWN0IGZhc3luY19zdHJ1Y3QgKiosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIF9fa2lsbF9mYXN5
bmMoc3RydWN0IGZhc3luY19zdHJ1Y3QgKiwgaW50LCBpbnQpOwoKc3RydWN0IG5hbWVpZGF0YSB7
CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAq
bW50OwogICAgICAgIHN0cnVjdCBxc3RyIGxhc3Q7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdz
OwogICAgICAgIGludCBsYXN0X3R5cGU7Cn07CgoKCgpzdHJ1Y3QgcXVvdGFfbW91bnRfb3B0aW9u
cwp7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
ZHFpb19zZW07CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBkcW9mZl9zZW07CiAgICAgICAgc3Ry
dWN0IGZpbGUgKmZpbGVzWzJdOwogICAgICAgIHRpbWVfdCBpbm9kZV9leHBpcmVbMl07CiAgICAg
ICAgdGltZV90IGJsb2NrX2V4cGlyZVsyXTsKICAgICAgICBjaGFyIHJzcXVhc2hbMl07Cn07CiMg
Njg3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX3NiLmgiIDEKCgoKCgoKc3Ry
dWN0IG1pbml4X3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHNfbmlub2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25l
czsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tzOwog
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc19kaXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19uYW1l
bGVuOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBtaW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHNob3J0IHNfdmVyc2lvbjsKfTsKIyA2ODggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9leHQyX2ZzX3NiLmgiIDEKIyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvZXh0Ml9mc19zYi5oIgpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfZnJhZ19zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxv
Y2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxv
Y2tzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfZ2RiX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqIHNfc2JoOwogICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsK
ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNfbG9hZGVkX2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c19sb2FkZWRfYmxvY2tfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0
bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1h
cFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAg
ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfbW91bnRfb3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdp
ZF90IHNfcmVzZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0
czsKICAgICAgICBpbnQgc19kZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2Rl
X3NpemU7CiAgICAgICAgaW50IHNfZmlyc3RfaW5vOwp9OwojIDY4OSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2V4dDNfZnNfc2IuaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvdGltZXIuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC90aW1lci5oIgpzdHJ1Y3QgdGltZXJfbGlzdCB7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBsaXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXhwaXJlczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGRhdGE7CiAgICAgICAgdm9pZCAoKmZ1bmN0aW9uKSh1bnNpZ25lZCBsb25nKTsKfTsK
CmV4dGVybiB2b2lkIGFkZF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKZXh0ZXJu
IGludCBkZWxfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CgoKZXh0ZXJuIGludCBk
ZWxfdGltZXJfc3luYyhzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKZXh0ZXJuIHZvaWQgc3lu
Y190aW1lcnModm9pZCk7CiMgNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3RpbWVyLmgiCmludCBtb2RfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25l
ZCBsb25nIGV4cGlyZXMpOwoKZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsK
CnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIp
CnsKICAgICAgICB0aW1lci0+bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAq
KTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGlt
ZXJfbGlzdCAqIHRpbWVyKQp7CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2
b2lkICopMCk7Cn0KIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0
M19mc19zYi5oIiAyCiMgMzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2V4
dDNfZnNfc2IuaCIKc3RydWN0IGV4dDNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
X2ZyYWdfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2Jsb2NrOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc19mcmFnc19wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc19wZXJf
Z3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfZ3JvdXA7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzX2l0Yl9wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2dk
Yl9jb3VudDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZGVzY19wZXJfYmxvY2s7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzX2dyb3Vwc19jb3VudDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBzX3NiaDsKICAgICAgICBzdHJ1Y3QgZXh0M19zdXBlcl9ibG9jayAqIHNfZXM7CiAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfZ3JvdXBfZGVzYzsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzX2xvYWRlZF9pbm9kZV9iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVk
X2Jsb2NrX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2RlX2JpdG1hcF9udW1i
ZXJbOF07CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19pbm9kZV9iaXRtYXBbOF07CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX2Jsb2NrX2JpdG1hcF9udW1iZXJbOF07CiAgICAgICAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICogc19ibG9ja19iaXRtYXBbOF07CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX21vdW50X29wdDsKICAgICAgICB1aWRfdCBzX3Jlc3VpZDsKICAgICAgICBnaWRfdCBzX3Jl
c2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNfcGFkOwogICAgICAgIGludCBzX2FkZHJfcGVyX2Jsb2NrX2JpdHM7CiAgICAg
ICAgaW50IHNfZGVzY19wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19pbm9kZV9zaXplOwog
ICAgICAgIGludCBzX2ZpcnN0X2lubzsKICAgICAgICB1MzIgc19uZXh0X2dlbmVyYXRpb247CgoK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBzX2pvdXJuYWxfaW5vZGU7CiAgICAgICAgc3RydWN0IGpv
dXJuYWxfcyAqIHNfam91cm5hbDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19jb21taXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IGJs
b2NrX2RldmljZSAqam91cm5hbF9iZGV2OwoKCgoKfTsKIyA2OTAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9ocGZzX2ZzX3NiLmgiIDEKCgoKc3RydWN0IGhwZnNfc2JfaW5mbyB7CiAgICAg
ICAgaW5vX3Qgc2Jfcm9vdDsKICAgICAgICB1bnNpZ25lZCBzYl9mc19zaXplOwogICAgICAgIHVu
c2lnbmVkIHNiX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zdGFydDsKICAg
ICAgICB1bnNpZ25lZCBzYl9kaXJiYW5kX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfZG1hcDsK
ICAgICAgICB1bnNpZ25lZCBzYl9uX2ZyZWU7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVlX2Ru
b2RlczsKICAgICAgICB1aWRfdCBzYl91aWQ7CiAgICAgICAgZ2lkX3Qgc2JfZ2lkOwogICAgICAg
IHVtb2RlX3Qgc2JfbW9kZTsKICAgICAgICB1bnNpZ25lZCBzYl9jb252IDogMjsKICAgICAgICB1
bnNpZ25lZCBzYl9lYXMgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VyciA6IDI7CiAgICAgICAg
dW5zaWduZWQgc2JfY2hrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9sb3dlcmNhc2UgOiAxOwog
ICAgICAgIHVuc2lnbmVkIHNiX3dhc19lcnJvciA6IDE7CiAgICAgICAgdW5zaWduZWQgc2JfY2hr
ZHNrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9yZF9mbm9kZSA6IDI7CiAgICAgICAgdW5zaWdu
ZWQgc2JfcmRfaW5vZGUgOiAyOwoKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc2JfaWdldF9x
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnNiX2NwX3RhYmxlOwoKCiAgICAgICAgdW5zaWduZWQg
KnNiX2JtcF9kaXI7CiAgICAgICAgdW5zaWduZWQgc2JfY19iaXRtYXA7CiAgICAgICAgd2FpdF9x
dWV1ZV9oZWFkX3Qgc2JfY3JlYXRpb25fZGU7CgogICAgICAgIHVuc2lnbmVkIHNiX2NyZWF0aW9u
X2RlX2xvY2sgOiAxOwoKICAgICAgICBpbnQgc2JfdGltZXNoaWZ0Owp9OwojIDY5MSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfc2IuaCIgMQoKCgoKCnN0cnVjdCBudGZzX3Ni
X2luZm97CgogICAgICAgIG50ZnNfdWlkX3QgdWlkOwogICAgICAgIG50ZnNfZ2lkX3QgZ2lkOwog
ICAgICAgIG50bW9kZV90IHVtYXNrOwogICAgICAgIHZvaWQgKm5sc19tYXA7CiAgICAgICAgdW5z
aWduZWQgaW50IG5ndDsKICAgICAgICBjaGFyIG1mdF96b25lX211bHRpcGxpZXI7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBtZnRfZGF0YV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pv
bmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX3N0YXJ0OwogICAgICAgIG50
ZnNfY2x1c3Rlcl90IG1mdF96b25lX2VuZDsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMV96
b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMl96b25lX3BvczsKCgogICAgICAg
IG50ZnNfc2l6ZV90IHBhcnRpdGlvbl9iaWFzOwoKICAgICAgICBudGZzX3UzMiBhdF9zdGFuZGFy
ZF9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9hdHRyaWJ1dGVfbGlzdDsKICAgICAg
ICBudGZzX3UzMiBhdF9maWxlX25hbWU7CiAgICAgICAgbnRmc191MzIgYXRfdm9sdW1lX3ZlcnNp
b247CiAgICAgICAgbnRmc191MzIgYXRfc2VjdXJpdHlfZGVzY3JpcHRvcjsKICAgICAgICBudGZz
X3UzMiBhdF92b2x1bWVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfaW5mb3JtYXRp
b247CiAgICAgICAgbnRmc191MzIgYXRfZGF0YTsKICAgICAgICBudGZzX3UzMiBhdF9pbmRleF9y
b290OwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X2FsbG9jYXRpb247CiAgICAgICAgbnRmc191
MzIgYXRfYml0bWFwOwogICAgICAgIG50ZnNfdTMyIGF0X3N5bWxpbms7CgogICAgICAgIGludCBz
ZWN0b3Jfc2l6ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9zaXplOwogICAgICAgIGludCBjbHVzdGVy
X3NpemVfYml0czsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAg
aW50IG1mdF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgbWZ0X3JlY29yZF9zaXplX2JpdHM7CiAg
ICAgICAgaW50IGluZGV4X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAgaW50IGluZGV4X3Jl
Y29yZF9zaXplOwogICAgICAgIGludCBpbmRleF9yZWNvcmRfc2l6ZV9iaXRzOwogICAgICAgIG50
ZnNfY2x1c3Rlcl90IG5yX2NsdXN0ZXJzOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF9sY247
CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X21pcnJfbGNuOwoKICAgICAgICB1bnNpZ25lZCBj
aGFyICptZnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVwY2FzZTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgdXBjYXNlX2xlbmd0aDsKCiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqbWZ0
X2lubzsKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICptZnRtaXJyOwogICAgICAgIHN0
cnVjdCBudGZzX2lub2RlX2luZm8gKmJpdG1hcDsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnNiOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaW5vX2ZsYWdzOwp9OwojIDY5MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDEKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZhdF9jdmYuaCIgMQoKCgoKCnN0cnVjdCBjdmZfZm9ybWF0
CnsgaW50IGN2Zl92ZXJzaW9uOwogIGNoYXIqIGN2Zl92ZXJzaW9uX3RleHQ7CiAgdW5zaWduZWQg
bG9uZyBmbGFnczsKICBpbnQgKCpkZXRlY3RfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsK
ICBpbnQgKCptb3VudF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipvcHRpb25zKTsK
ICBpbnQgKCp1bm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAgc3RydWN0IGJ1
ZmZlcl9oZWFkKiAoKmN2Zl9icmVhZCkgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixpbnQgYmxvY2sp
OwogIHN0cnVjdCBidWZmZXJfaGVhZCogKCpjdmZfZ2V0YmxrKSAoc3RydWN0IHN1cGVyX2Jsb2Nr
KnNiLGludCBibG9jayk7CiAgdm9pZCAoKmN2Zl9icmVsc2UpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnNiLHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfbWFya19idWZmZXJfZGly
dHkpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX3NldF91cHRvZGF0ZSkgKHN0
cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKmJoLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CiAgaW50ICgq
Y3ZmX2lzX3VwdG9kYXRlKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJoKTsKICB2b2lkICgqY3ZmX2xsX3J3X2Jsb2NrKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpz
YiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wciwKICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IG5icmVxLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJoWzMyXSk7CiAgaW50ICgqZmF0X2FjY2VzcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsaW50
IG5yLGludCBuZXdfdmFsdWUpOwogIGludCAoKmN2Zl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnNiLHN0cnVjdCBzdGF0ZnMgKmJ1ZiwgaW50IGJ1ZnNpeik7CiAgaW50ICgqY3ZmX2JtYXAp
IChzdHJ1Y3QgaW5vZGUgKmlub2RlLGludCBibG9jayk7CiAgc3NpemVfdCAoKmN2Zl9maWxlX3Jl
YWQpICggc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBzc2l6ZV90
ICgqY3ZmX2ZpbGVfd3JpdGUpICggc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qs
IGxvZmZfdCAqKTsKICBpbnQgKCpjdmZfbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqKTsKICBpbnQgKCpjdmZfcmVhZHBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IHBhZ2UgKik7CiAgaW50ICgqY3ZmX3dyaXRlcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgcGFnZSAqKTsKICBpbnQgKCpjdmZfZGlyX2lvY3RsKSAoc3RydWN0IGlub2RlICogaW5vZGUs
IHN0cnVjdCBmaWxlICogZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogIHZvaWQgKCp6ZXJvX291dF9jbHVzdGVyKSAoc3Ry
dWN0IGlub2RlKiwgaW50IGNsdXN0ZXJucik7Cn07CgppbnQgcmVnaXN0ZXJfY3ZmX2Zvcm1hdChz
dHJ1Y3QgY3ZmX2Zvcm1hdCpjdmZfZm9ybWF0KTsKaW50IHVucmVnaXN0ZXJfY3ZmX2Zvcm1hdChz
dHJ1Y3QgY3ZmX2Zvcm1hdCpjdmZfZm9ybWF0KTsKdm9pZCBkZWNfY3ZmX2Zvcm1hdF91c2VfY291
bnRfYnlfdmVyc2lvbihpbnQgdmVyc2lvbik7CmludCBkZXRlY3RfY3ZmKHN0cnVjdCBzdXBlcl9i
bG9jaypzYixjaGFyKmZvcmNlKTsKCmV4dGVybiBzdHJ1Y3QgY3ZmX2Zvcm1hdCAqY3ZmX2Zvcm1h
dHNbXTsKZXh0ZXJuIGludCBjdmZfZm9ybWF0X3VzZV9jb3VudFtdOwojIDQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgZmF0
X21vdW50X29wdGlvbnMgewogICAgICAgIHVpZF90IGZzX3VpZDsKICAgICAgICBnaWRfdCBmc19n
aWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnNfdW1hc2s7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgY29kZXBhZ2U7CiAgICAgICAgY2hhciAqaW9jaGFyc2V0OwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHNob3J0bmFtZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWVfY2hlY2s7CiAgICAgICAg
dW5zaWduZWQgY2hhciBjb252ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIHF1aWV0OjEsCiAgICAg
ICAgICAgICAgICAgc2hvd2V4ZWM6MSwKICAgICAgICAgICAgICAgICBzeXNfaW1tdXRhYmxlOjEs
CiAgICAgICAgICAgICAgICAgZG90c09LOjEsCiAgICAgICAgICAgICAgICAgaXN2ZmF0OjEsCiAg
ICAgICAgICAgICAgICAgdXRmODoxLAogICAgICAgICAgICAgICAgIHVuaWNvZGVfeGxhdGU6MSwK
ICAgICAgICAgICAgICAgICBwb3NpeGZzOjEsCiAgICAgICAgICAgICAgICAgbnVtdGFpbDoxLAog
ICAgICAgICAgICAgICAgIGF0YXJpOjEsCiAgICAgICAgICAgICAgICAgZmF0MzI6MSwKICAgICAg
ICAgICAgICAgICBub2Nhc2U6MTsKfTsKCnN0cnVjdCBtc2Rvc19zYl9pbmZvIHsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBjbHVzdGVyX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY2x1c3Rl
cl9iaXRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmF0cyxmYXRfYml0czsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBmYXRfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmYXRfbGVuZ3RoOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZGlyX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRp
cl9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zdGFydDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGNsdXN0ZXJzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcm9vdF9jbHVzdGVyOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZnNpbmZvX3NlY3RvcjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlIGZhdF9sb2NrOwogICAgICAgIGludCBwcmV2X2ZyZWU7CiAgICAgICAgaW50IGZyZWVfY2x1
c3RlcnM7CiAgICAgICAgc3RydWN0IGZhdF9tb3VudF9vcHRpb25zIG9wdGlvbnM7CiAgICAgICAg
c3RydWN0IG5sc190YWJsZSAqbmxzX2Rpc2s7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxz
X2lvOwogICAgICAgIHN0cnVjdCBjdmZfZm9ybWF0KiBjdmZfZm9ybWF0OwogICAgICAgIHZvaWQg
KmRpcl9vcHM7CiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwogICAgICAgIGludCBkaXJfcGVy
X2Jsb2NrOwogICAgICAgIGludCBkaXJfcGVyX2Jsb2NrX2JpdHM7Cn07CiMgNjkzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvaXNvX2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IGlzb2ZzX3Ni
X2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19uem9uZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZpcnN0ZGF0YXpvbmU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX21heF9zaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfaGlnaF9zaWVycmE7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBzX21hcHBpbmc7CiAgICAgICAgaW50IHNfcm9ja19vZmZzZXQ7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzX3JvY2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2pvbGll
dF9sZXZlbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfdXRmODsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHNfY3J1ZnQ7CgoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfdW5oaWRlOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgc19ub3N1aWQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX25vZGV2OwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgc19ub2NvbXByZXNzOwoKICAgICAgICBtb2RlX3Qgc19tb2RlOwog
ICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIHN0cnVjdCBu
bHNfdGFibGUgKnNfbmxzX2lvY2hhcnNldDsKfTsKIyA2OTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9uZnNfZnNfc2IuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25mc19mc19zYi5oIgpzdHJ1Y3QgbmZzX3NlcnZlciB7CiAgICAgICAgc3RydWN0IHJw
Y19jbG50ICogY2xpZW50OwogICAgICAgIHN0cnVjdCBuZnNfcnBjX29wcyAqIHJwY19vcHM7CiAg
ICAgICAgaW50IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGludCByc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgcnBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCB3c2l6ZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgd3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCBkdHNpemU7CiAgICAgICAgdW5z
aWduZWQgaW50IGJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBhY3JlZ21pbjsKICAgICAgICB1
bnNpZ25lZCBpbnQgYWNyZWdtYXg7CiAgICAgICAgdW5zaWduZWQgaW50IGFjZGlybWluOwogICAg
ICAgIHVuc2lnbmVkIGludCBhY2Rpcm1heDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZWxlbjsK
ICAgICAgICBjaGFyICogaG9zdG5hbWU7CiAgICAgICAgc3RydWN0IG5mc19yZXFsaXN0ICogcndf
cmVxdWVzdHM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBscnVfcmVhZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBscnVfZGlydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbHJ1X2NvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscnVfYnVz
eTsKfTsKCgoKCnN0cnVjdCBuZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IG5mc19zZXJ2ZXIg
c19zZXJ2ZXI7Cn07CiMgNjk1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3lzdl9mc19z
Yi5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNf
c2IuaCIKc3RydWN0IHN5c3Zfc2JfaW5mbyB7CiAgICAgICAgaW50IHNfdHlwZTsKICAgICAgICBj
aGFyIHNfYnl0ZXNleDsKICAgICAgICBjaGFyIHNfdHJ1bmNhdGU7CgogICAgICAgIG5saW5rX3Qg
c19saW5rX21heDsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAg
ICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfMTsKICAgICAgICB1bnNpZ25lZCBp
bnQgc19pbm9kZXNfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Bl
cl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrX2JpdHM7CiAgICAg
ICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9ja18yOwogICAgICAgIHVuc2lnbmVkIGludCBz
X3Rvb2JpZ19ibG9jazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19ibG9ja19iYXNlOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHNfZmljX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19mbGNf
c2l6ZTsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2JoMTsKICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKnNfYmgyOwoKCiAgICAgICAgY2hhciAqIHNfc2JkMTsKICAgICAgICBjaGFy
ICogc19zYmQyOwogICAgICAgIHUxNiAqc19zYl9maWNfY291bnQ7CiAgICAgICAgdTE2ICpzX3Ni
X2ZpY19pbm9kZXM7CiAgICAgICAgdTE2ICpzX3NiX3RvdGFsX2ZyZWVfaW5vZGVzOwogICAgICAg
IHUxNiAqc19iY2FjaGVfY291bnQ7CiAgICAgICAgdTMyICpzX2JjYWNoZTsKICAgICAgICB1MzIg
KnNfZnJlZV9ibG9ja3M7CiAgICAgICAgdTMyICpzX3NiX3RpbWU7CiAgICAgICAgdTMyICpzX3Ni
X3N0YXRlOwoKCiAgICAgICAgdTMyIHNfZmlyc3Rpbm9kZXpvbmU7CiAgICAgICAgdTMyIHNfZmly
c3RkYXRhem9uZTsKICAgICAgICB1MzIgc19uaW5vZGVzOwogICAgICAgIHUzMiBzX25kYXRhem9u
ZXM7CiAgICAgICAgdTMyIHNfbnpvbmVzOwogICAgICAgIHUxNiBzX25hbWVsZW47Cn07CiMgNjk2
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWZmc19mc19zYi5oIiAxCiMgMTEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIKc3RydWN0IGFmZnNf
Ym1faW5mbyB7CiAgICAgICAgdTMyIGJtX2tleTsKICAgICAgICB1MzIgYm1fZnJlZTsKfTsKCnN0
cnVjdCBhZmZzX3NiX2luZm8gewogICAgICAgIGludCBzX3BhcnRpdGlvbl9zaXplOwogICAgICAg
IGludCBzX3Jlc2VydmVkOwoKICAgICAgICB1MzIgc19kYXRhX2Jsa3NpemU7CiAgICAgICAgdTMy
IHNfcm9vdF9ibG9jazsKICAgICAgICBpbnQgc19oYXNoc2l6ZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfZmxhZ3M7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAg
ICAgICAgdW1vZGVfdCBzX21vZGU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX3Jvb3Rf
Ymg7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX2JtbG9jazsKICAgICAgICBzdHJ1Y3QgYWZm
c19ibV9pbmZvICpzX2JpdG1hcDsKICAgICAgICB1MzIgc19ibWFwX2NvdW50OwogICAgICAgIHUz
MiBzX2JtYXBfYml0czsKICAgICAgICB1MzIgc19sYXN0X2JtYXA7CiAgICAgICAgc3RydWN0IGJ1
ZmZlcl9oZWFkICpzX2JtYXBfYmg7CiAgICAgICAgY2hhciAqc19wcmVmaXg7CiAgICAgICAgaW50
IHNfcHJlZml4X2xlbjsKICAgICAgICBjaGFyIHNfdm9sdW1lWzMyXTsKfTsKIyA2OTcgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZnNfZnNfc2IuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZnNfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMQojIDIzNyAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiCnN0cnVjdCB1ZnNfdGltZXZhbCB7CiAgICAgICAg
X19zMzIgdHZfc2VjOwogICAgICAgIF9fczMyIHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdWZzX2Rpcl9l
bnRyeSB7CiAgICAgICAgX191MzIgZF9pbm87CiAgICAgICAgX191MTYgZF9yZWNsZW47CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgX191MTYgZF9uYW1sZW47CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3U4IGRfdHlwZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191OCBkX25hbWxlbjsKICAgICAgICAgICAgICAgIH0gZF80NDsKICAg
ICAgICB9IGRfdTsKICAgICAgICBfX3U4IGRfbmFtZVsyNTUgKyAxXTsKfTsKCnN0cnVjdCB1ZnNf
Y3N1bSB7CiAgICAgICAgX191MzIgY3NfbmRpcjsKICAgICAgICBfX3UzMiBjc19uYmZyZWU7CiAg
ICAgICAgX191MzIgY3NfbmlmcmVlOwogICAgICAgIF9fdTMyIGNzX25mZnJlZTsKfTsKCgoKCnN0
cnVjdCB1ZnNfc3VwZXJfYmxvY2sgewogICAgICAgIF9fdTMyIGZzX2xpbms7CiAgICAgICAgX191
MzIgZnNfcmxpbms7CiAgICAgICAgX191MzIgZnNfc2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2Ni
bGtubzsKICAgICAgICBfX3UzMiBmc19pYmxrbm87CiAgICAgICAgX191MzIgZnNfZGJsa25vOwog
ICAgICAgIF9fdTMyIGZzX2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIGZzX2NnbWFzazsKICAgICAg
ICBfX3UzMiBmc190aW1lOwogICAgICAgIF9fdTMyIGZzX3NpemU7CiAgICAgICAgX191MzIgZnNf
ZHNpemU7CiAgICAgICAgX191MzIgZnNfbmNnOwogICAgICAgIF9fdTMyIGZzX2JzaXplOwogICAg
ICAgIF9fdTMyIGZzX2ZzaXplOwogICAgICAgIF9fdTMyIGZzX2ZyYWc7CgogICAgICAgIF9fdTMy
IGZzX21pbmZyZWU7CiAgICAgICAgX191MzIgZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNf
cnBzOwoKICAgICAgICBfX3UzMiBmc19ibWFzazsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAg
ICAgICBfX3UzMiBmc19ic2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNoaWZ0OwoKICAgICAgICBf
X3UzMiBmc19tYXhjb250aWc7CiAgICAgICAgX191MzIgZnNfbWF4YnBnOwoKICAgICAgICBfX3Uz
MiBmc19mcmFnc2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBm
c19zYnNpemU7CiAgICAgICAgX191MzIgZnNfY3NtYXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hp
ZnQ7CiAgICAgICAgX191MzIgZnNfbmluZGlyOwogICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAg
ICAgIF9fdTMyIGZzX25zcGY7CgogICAgICAgIF9fdTMyIGZzX29wdGltOwoKICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3Uz
MiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAg
ICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgfSBmc191MTsKICAgICAgICBfX3UzMiBmc19pbnRl
cmxlYXZlOwogICAgICAgIF9fdTMyIGZzX3RyYWNrc2tldzsKCgoKCiAgICAgICAgX191MzIgZnNf
aWRbMl07CgogICAgICAgIF9fdTMyIGZzX2NzYWRkcjsKICAgICAgICBfX3UzMiBmc19jc3NpemU7
CiAgICAgICAgX191MzIgZnNfY2dzaXplOwoKICAgICAgICBfX3UzMiBmc19udHJhazsKICAgICAg
ICBfX3UzMiBmc19uc2VjdDsKICAgICAgICBfX3UzMiBmc19zcGM7CgogICAgICAgIF9fdTMyIGZz
X25jeWw7CgogICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAgICBfX3UzMiBmc19pcGc7CiAgICAg
ICAgX191MzIgZnNfZnBnOwoKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gZnNfY3N0b3RhbDsKCiAg
ICAgICAgX19zOCBmc19mbW9kOwogICAgICAgIF9fczggZnNfY2xlYW47CiAgICAgICAgX19zOCBm
c19yb25seTsKICAgICAgICBfX3M4IGZzX2ZsYWdzOwogICAgICAgIF9fczggZnNfZnNtbnRbNTEy
XTsKCiAgICAgICAgX191MzIgZnNfY2dyb3RvcjsKICAgICAgICBfX3UzMiBmc19jc3BbMzFdOwog
ICAgICAgIF9fdTMyIGZzX21heGNsdXN0ZXI7CiAgICAgICAgX191MzIgZnNfY3BjOwogICAgICAg
IF9fdTE2IGZzX29wb3N0YmxbMTZdWzhdOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAg
ICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19z
MzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24y
WzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNv
bls1MF07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fczMyIGZzX2lub2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiBmc19tYXhmaWxlc2l6ZVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
cWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBm
c180NDsKICAgICAgICB9IGZzX3UyOwogICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAg
ICAgICBfX3MzMiBmc19ucnBvczsKICAgICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAg
X19zMzIgZnNfcm90YmxvZmY7CiAgICAgICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBm
c19zcGFjZVsxXTsKfTsKIyA0MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHsKICAgICAgICBfX3UzMiBjZ19s
aW5rOwogICAgICAgIF9fdTMyIGNnX21hZ2ljOwogICAgICAgIF9fdTMyIGNnX3RpbWU7CiAgICAg
ICAgX191MzIgY2dfY2d4OwogICAgICAgIF9fdTE2IGNnX25jeWw7CiAgICAgICAgX191MTYgY2df
bmlibGs7CiAgICAgICAgX191MzIgY2dfbmRibGs7CiAgICAgICAgc3RydWN0IHVmc19jc3VtIGNn
X2NzOwogICAgICAgIF9fdTMyIGNnX3JvdG9yOwogICAgICAgIF9fdTMyIGNnX2Zyb3RvcjsKICAg
ICAgICBfX3UzMiBjZ19pcm90b3I7CiAgICAgICAgX191MzIgY2dfZnJzdW1bKDgxOTIgLyAxMDI0
KV07CiAgICAgICAgX191MzIgY2dfYnRvdG9mZjsKICAgICAgICBfX3UzMiBjZ19ib2ZmOwogICAg
ICAgIF9fdTMyIGNnX2l1c2Vkb2ZmOwogICAgICAgIF9fdTMyIGNnX2ZyZWVvZmY7CiAgICAgICAg
X191MzIgY2dfbmV4dGZyZWVvZmY7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1c3RlcnN1bW9mZjsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1c3Rlcm9mZjsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgY2dfbmNsdXN0ZXJibGtzOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiBjZ19zcGFyZWNvblsxM107CiAgICAgICAgICAgICAgICB9IGNnXzQ0OwogICAgICAgICAg
ICAgICAgX191MzIgY2dfc3BhcmVjb25bMTZdOwogICAgICAgIH0gY2dfdTsKICAgICAgICBfX3U4
IGNnX3NwYWNlWzFdOwoKfTsKCgoKCnN0cnVjdCB1ZnNfaW5vZGUgewogICAgICAgIF9fdTE2IHVp
X21vZGU7CiAgICAgICAgX191MTYgdWlfbmxpbms7CiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc3VpZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc2dpZDsKICAgICAgICAgICAgICAgIH0gb2xk
aWRzOwogICAgICAgICAgICAgICAgX191MzIgdWlfaW51bWJlcjsKICAgICAgICAgICAgICAgIF9f
dTMyIHVpX2F1dGhvcjsKICAgICAgICB9IHVpX3UxOwogICAgICAgIF9fdTY0IHVpX3NpemU7CiAg
ICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX2F0aW1lOwogICAgICAgIHN0cnVjdCB1ZnNfdGlt
ZXZhbCB1aV9tdGltZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlfY3RpbWU7CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgdWlfZGJbMTJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9pYlsz
XTsKICAgICAgICAgICAgICAgIH0gdWlfYWRkcjsKICAgICAgICAgICAgICAgIF9fdTggdWlfc3lt
bGlua1s0KigxMiArMyldOwogICAgICAgIH0gdWlfdTI7CiAgICAgICAgX191MzIgdWlfZmxhZ3M7
CiAgICAgICAgX191MzIgdWlfYmxvY2tzOwogICAgICAgIF9fdTMyIHVpX2dlbjsKICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiB1aV9zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3UzMiB1aV9vZWZ0ZmxhZzsKICAgICAgICAgICAgICAgIH0gdWlfc3VuOwogICAgICAgICAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfdWlkOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fczMyIHVpX3NwYXJlWzJdOwogICAgICAgICAgICAgICAgfSB1aV80NDsKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAg
ICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UxNiB1aV9tb2RlaDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc3BhcmU7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3RyYW5zOwogICAgICAgICAgICAgICAgfSB1
aV9odXJkOwogICAgICAgIH0gdWlfdTM7Cn07CiMgNTE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC91ZnNfZnMuaCIKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzIChz
dHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVf
YmxvY2tzIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHVuc2ln
bmVkIHVmc19uZXdfZnJhZ21lbnRzIChzdHJ1Y3QgaW5vZGUgKiwgdTMyICosIHVuc2lnbmVkLCB1
bnNpZ25lZCwgdW5zaWduZWQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRl
X2luZm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVk
KTsKZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVu
c2lnbmVkKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9v
cGVyYXRpb25zOwpleHRlcm4gaW50IHVmc19jaGVja19kaXJfZW50cnkgKGNvbnN0IGNoYXIgKiwg
c3RydWN0IGlub2RlICosIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVh
ZCAqLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIGludCB1ZnNfYWRkX2xpbmsgKHN0cnVjdCBkZW50
cnkgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gaW5vX3QgdWZzX2lub2RlX2J5X25hbWUoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdWZzX21ha2VfZW1wdHko
c3RydWN0IGlub2RlICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCB1ZnNfZGlyX2Vu
dHJ5ICogdWZzX2ZpbmRfZW50cnkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFk
ICoqKTsKZXh0ZXJuIGludCB1ZnNfZGVsZXRlX2VudHJ5IChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IHVmc19kaXJfZW50cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gaW50IHVmc19l
bXB0eV9kaXIgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICog
dWZzX2RvdGRvdCAoc3RydWN0IGlub2RlICosIHN0cnVjdCBidWZmZXJfaGVhZCAqKik7CmV4dGVy
biB2b2lkIHVmc19zZXRfbGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkg
Kiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gc3RydWN0
IGlub2RlX29wZXJhdGlvbnMgdWZzX2ZpbGVfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVj
dCBmaWxlX29wZXJhdGlvbnMgdWZzX2ZpbGVfb3BlcmF0aW9uczsKCmV4dGVybiBzdHJ1Y3QgYWRk
cmVzc19zcGFjZV9vcGVyYXRpb25zIHVmc19hb3BzOwoKCmV4dGVybiB2b2lkIHVmc19mcmVlX2lu
b2RlIChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIHVmc19uZXdf
aW5vZGUgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCBpbnQpOwoKCmV4dGVybiBpbnQgdWZzX2ZyYWdf
bWFwIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIHZvaWQgdWZzX3JlYWRfaW5vZGUgKHN0
cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3B1dF9pbm9kZSAoc3RydWN0IGlub2RlICop
OwpleHRlcm4gdm9pZCB1ZnNfd3JpdGVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRl
cm4gaW50IHVmc19zeW5jX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc19k
ZWxldGVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAq
IHVmc19nZXRmcmFnIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIGludCwgaW50ICopOwpleHRl
cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogdWZzX2JyZWFkIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWdu
ZWQsIGludCwgaW50ICopOwoKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVmc19kaXJf
b3BlcmF0aW9uczsKCgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgdWZzX2ZzX3R5cGU7
CmV4dGVybiB2b2lkIHVmc193YXJuaW5nIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAz
LCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfZXJyb3IgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmlu
dGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc19wYW5pYyAoc3RydWN0IHN1cGVyX2Jsb2NrICos
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQg
KHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX3dyaXRlX3N1cGVyIChzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKik7CgoKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19mYXN0X3N5
bWxpbmtfaW5vZGVfb3BlcmF0aW9uczsKCgpleHRlcm4gdm9pZCB1ZnNfdHJ1bmNhdGUgKHN0cnVj
dCBpbm9kZSAqKTsKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZz
X2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHsKICAgICAgICB1bnNpZ25l
ZCBmcmFnbWVudDsKICAgICAgICB1bnNpZ25lZCBjb3VudDsKICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBiaFsoODE5MiAvIDEwMjQpXTsKfTsKCnN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZv
IHsKICAgICAgICBzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHVjZzsKICAgICAgICBfX3UzMiBj
X2NneDsKICAgICAgICBfX3UxNiBjX25jeWw7CiAgICAgICAgX191MTYgY19uaWJsazsKICAgICAg
ICBfX3UzMiBjX25kYmxrOwogICAgICAgIF9fdTMyIGNfcm90b3I7CiAgICAgICAgX191MzIgY19m
cm90b3I7CiAgICAgICAgX191MzIgY19pcm90b3I7CiAgICAgICAgX191MzIgY19idG90b2ZmOwog
ICAgICAgIF9fdTMyIGNfYm9mZjsKICAgICAgICBfX3UzMiBjX2l1c2Vkb2ZmOwogICAgICAgIF9f
dTMyIGNfZnJlZW9mZjsKICAgICAgICBfX3UzMiBjX25leHRmcmVlb2ZmOwogICAgICAgIF9fdTMy
IGNfY2x1c3RlcnN1bW9mZjsKICAgICAgICBfX3UzMiBjX2NsdXN0ZXJvZmY7CiAgICAgICAgX191
MzIgY19uY2x1c3RlcmJsa3M7Cn07CgpzdHJ1Y3QgdWZzX3NiX3ByaXZhdGVfaW5mbyB7CiAgICAg
ICAgc3RydWN0IHVmc19idWZmZXJfaGVhZCBzX3ViaDsKICAgICAgICBfX3UzMiBzX3NibGtubzsK
ICAgICAgICBfX3UzMiBzX2NibGtubzsKICAgICAgICBfX3UzMiBzX2libGtubzsKICAgICAgICBf
X3UzMiBzX2RibGtubzsKICAgICAgICBfX3UzMiBzX2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIHNf
Y2dtYXNrOwogICAgICAgIF9fdTMyIHNfc2l6ZTsKICAgICAgICBfX3UzMiBzX2RzaXplOwogICAg
ICAgIF9fdTMyIHNfbmNnOwogICAgICAgIF9fdTMyIHNfYnNpemU7CiAgICAgICAgX191MzIgc19m
c2l6ZTsKICAgICAgICBfX3UzMiBzX2ZwYjsKICAgICAgICBfX3UzMiBzX21pbmZyZWU7CiAgICAg
ICAgX191MzIgc19ibWFzazsKICAgICAgICBfX3UzMiBzX2ZtYXNrOwogICAgICAgIF9fdTMyIHNf
YnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnBic2hpZnQ7
CiAgICAgICAgX191MzIgc19mc2J0b2RiOwogICAgICAgIF9fdTMyIHNfc2JzaXplOwogICAgICAg
IF9fdTMyIHNfY3NtYXNrOwogICAgICAgIF9fdTMyIHNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBz
X25pbmRpcjsKICAgICAgICBfX3UzMiBzX2lub3BiOwogICAgICAgIF9fdTMyIHNfbnNwZjsKICAg
ICAgICBfX3UzMiBzX25wc2VjdDsKICAgICAgICBfX3UzMiBzX2ludGVybGVhdmU7CiAgICAgICAg
X191MzIgc190cmFja3NrZXc7CiAgICAgICAgX191MzIgc19jc2FkZHI7CiAgICAgICAgX191MzIg
c19jc3NpemU7CiAgICAgICAgX191MzIgc19jZ3NpemU7CiAgICAgICAgX191MzIgc19udHJhazsK
ICAgICAgICBfX3UzMiBzX25zZWN0OwogICAgICAgIF9fdTMyIHNfc3BjOwogICAgICAgIF9fdTMy
IHNfaXBnOwogICAgICAgIF9fdTMyIHNfZnBnOwogICAgICAgIF9fdTMyIHNfY3BjOwogICAgICAg
IF9fczMyIHNfY29udGlnc3Vtc2l6ZTsKICAgICAgICBfX3M2NCBzX3FibWFzazsKICAgICAgICBf
X3M2NCBzX3FmbWFzazsKICAgICAgICBfX3MzMiBzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3Mz
MiBzX25ycG9zOwogICAgICAgIF9fczMyIHNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIHNfcm90
YmxvZmY7CgogICAgICAgIF9fdTMyIHNfZnBibWFzazsKICAgICAgICBfX3UzMiBzX2FwYjsKICAg
ICAgICBfX3UzMiBzXzJhcGI7CiAgICAgICAgX191MzIgc18zYXBiOwogICAgICAgIF9fdTMyIHNf
YXBibWFzazsKICAgICAgICBfX3UzMiBzX2FwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfMmFwYnNo
aWZ0OwogICAgICAgIF9fdTMyIHNfM2FwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfbnNwZnNoaWZ0
OwogICAgICAgIF9fdTMyIHNfbnNwYjsKICAgICAgICBfX3UzMiBzX2lub3BmOwogICAgICAgIF9f
dTMyIHNfc2JiYXNlOwogICAgICAgIF9fdTMyIHNfYnBmOwogICAgICAgIF9fdTMyIHNfYnBmc2hp
ZnQ7CiAgICAgICAgX191MzIgc19icGZtYXNrOwoKICAgICAgICBfX3UzMiBzX21heHN5bWxpbmts
ZW47Cn07CgoKCgoKc3RydWN0IHVmc19zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX3NiX3By
aXZhdGVfaW5mbyAqIHNfdXNwaTsKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gKiBzX2NzcFszMV07
CiAgICAgICAgdW5zaWduZWQgc19ieXRlc2V4OwogICAgICAgIHVuc2lnbmVkIHNfZmxhZ3M7CiAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfdWNnOwogICAgICAgIHN0cnVjdCB1ZnNfY2df
cHJpdmF0ZV9pbmZvICogc191Y3BpWzhdOwogICAgICAgIHVuc2lnbmVkIHNfY2dub1s4XTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzX2NnX2xvYWRlZDsKICAgICAgICB1bnNpZ25lZCBzX21vdW50
X29wdDsKfTsKCgoKCgoKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfZmlyc3QgewogICAgICAgIF9f
dTMyIGZzX2xpbms7CiAgICAgICAgX191MzIgZnNfcmxpbms7CiAgICAgICAgX191MzIgZnNfc2Js
a25vOwogICAgICAgIF9fdTMyIGZzX2NibGtubzsKICAgICAgICBfX3UzMiBmc19pYmxrbm87CiAg
ICAgICAgX191MzIgZnNfZGJsa25vOwogICAgICAgIF9fdTMyIGZzX2Nnb2Zmc2V0OwogICAgICAg
IF9fdTMyIGZzX2NnbWFzazsKICAgICAgICBfX3UzMiBmc190aW1lOwogICAgICAgIF9fdTMyIGZz
X3NpemU7CiAgICAgICAgX191MzIgZnNfZHNpemU7CiAgICAgICAgX191MzIgZnNfbmNnOwogICAg
ICAgIF9fdTMyIGZzX2JzaXplOwogICAgICAgIF9fdTMyIGZzX2ZzaXplOwogICAgICAgIF9fdTMy
IGZzX2ZyYWc7CiAgICAgICAgX191MzIgZnNfbWluZnJlZTsKICAgICAgICBfX3UzMiBmc19yb3Rk
ZWxheTsKICAgICAgICBfX3UzMiBmc19ycHM7CiAgICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAg
ICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMy
IGZzX2ZzaGlmdDsKICAgICAgICBfX3UzMiBmc19tYXhjb250aWc7CiAgICAgICAgX191MzIgZnNf
bWF4YnBnOwogICAgICAgIF9fdTMyIGZzX2ZyYWdzaGlmdDsKICAgICAgICBfX3UzMiBmc19mc2J0
b2RiOwogICAgICAgIF9fdTMyIGZzX3Nic2l6ZTsKICAgICAgICBfX3UzMiBmc19jc21hc2s7CiAg
ICAgICAgX191MzIgZnNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBmc19uaW5kaXI7CiAgICAgICAg
X191MzIgZnNfaW5vcGI7CiAgICAgICAgX191MzIgZnNfbnNwZjsKICAgICAgICBfX3UzMiBmc19v
cHRpbTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZz
X3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgfSBmc191MTsKICAg
ICAgICBfX3UzMiBmc19pbnRlcmxlYXZlOwogICAgICAgIF9fdTMyIGZzX3RyYWNrc2tldzsKICAg
ICAgICBfX3UzMiBmc19pZFsyXTsKICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191
MzIgZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsKICAgICAgICBfX3UzMiBmc19u
dHJhazsKICAgICAgICBfX3UzMiBmc19uc2VjdDsKICAgICAgICBfX3UzMiBmc19zcGM7CiAgICAg
ICAgX191MzIgZnNfbmN5bDsKICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNf
aXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gZnNfY3N0
b3RhbDsKICAgICAgICBfX3M4IGZzX2Ztb2Q7CiAgICAgICAgX19zOCBmc19jbGVhbjsKICAgICAg
ICBfX3M4IGZzX3Jvbmx5OwogICAgICAgIF9fczggZnNfZmxhZ3M7CiAgICAgICAgX19zOCBmc19m
c21udFs1MTIgLSAyMTJdOwoKfTsKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfc2Vjb25kIHsKICAg
ICAgICBfX3M4IGZzX2ZzbW50WzIxMl07CiAgICAgICAgX191MzIgZnNfY2dyb3RvcjsKICAgICAg
ICBfX3UzMiBmc19jc3BbMzFdOwogICAgICAgIF9fdTMyIGZzX21heGNsdXN0ZXI7CiAgICAgICAg
X191MzIgZnNfY3BjOwogICAgICAgIF9fdTE2IGZzX29wb3N0YmxbODJdOwp9OwoKc3RydWN0IHVm
c19zdXBlcl9ibG9ja190aGlyZCB7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs0Nl07CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm
c19yZWNsYWltOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy
IGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VuOwogICAgICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwog
ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAg
ICAgICB9IGZzX3N1bng4NjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUwXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfY29udGlnc3Vtc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
bWF4c3ltbGlua2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfaW5vZGVmbXQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX21heGZpbGVzaXplWzJdOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
c3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzXzQ0OwogICAgICAgIH0gZnNfdTI7CiAgICAgICAg
X19zMzIgZnNfcG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMyIGZzX25ycG9zOwogICAgICAgIF9f
czMyIGZzX3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBmc19yb3RibG9mZjsKICAgICAgICBfX3Mz
MiBmc19tYWdpYzsKICAgICAgICBfX3U4IGZzX3NwYWNlWzFdOwp9OwojIDY5OCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19zYi5oIiAxCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19zYi5oIgpzdHJ1Y3QgZWZzX3N1cGVyIHsKICAgICAg
ICBpbnQzMl90IGZzX3NpemU7CiAgICAgICAgaW50MzJfdCBmc19maXJzdGNnOwogICAgICAgIGlu
dDMyX3QgZnNfY2dmc2l6ZTsKICAgICAgICBzaG9ydCBmc19jZ2lzaXplOwogICAgICAgIHNob3J0
IGZzX3NlY3RvcnM7CiAgICAgICAgc2hvcnQgZnNfaGVhZHM7CiAgICAgICAgc2hvcnQgZnNfbmNn
OwogICAgICAgIHNob3J0IGZzX2RpcnR5OwogICAgICAgIGludDMyX3QgZnNfdGltZTsKICAgICAg
ICBpbnQzMl90IGZzX21hZ2ljOwogICAgICAgIGNoYXIgZnNfZm5hbWVbNl07CiAgICAgICAgY2hh
ciBmc19mcGFja1s2XTsKICAgICAgICBpbnQzMl90IGZzX2Jtc2l6ZTsKICAgICAgICBpbnQzMl90
IGZzX3RmcmVlOwogICAgICAgIGludDMyX3QgZnNfdGlub2RlOwogICAgICAgIGludDMyX3QgZnNf
Ym1ibG9jazsKICAgICAgICBpbnQzMl90IGZzX3JlcGxzYjsKICAgICAgICBpbnQzMl90IGZzX2xh
c3RpYWxsb2M7CiAgICAgICAgY2hhciBmc19zcGFyZVsyMF07CiAgICAgICAgaW50MzJfdCBmc19j
aGVja3N1bTsKfTsKCgpzdHJ1Y3QgZWZzX3NiX2luZm8gewogICAgICAgIGludDMyX3QgZnNfbWFn
aWM7CiAgICAgICAgaW50MzJfdCBmc19zdGFydDsKICAgICAgICBpbnQzMl90IGZpcnN0X2Jsb2Nr
OwogICAgICAgIGludDMyX3QgdG90YWxfYmxvY2tzOwogICAgICAgIGludDMyX3QgZ3JvdXBfc2l6
ZTsKICAgICAgICBpbnQzMl90IGRhdGFfZnJlZTsKICAgICAgICBpbnQzMl90IGlub2RlX2ZyZWU7
CiAgICAgICAgc2hvcnQgaW5vZGVfYmxvY2tzOwogICAgICAgIHNob3J0IHRvdGFsX2dyb3VwczsK
fTsKIyA2OTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yb21mc19mc19zYi5oIiAxCgoK
CgoKc3RydWN0IHJvbWZzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tYXhzaXpl
Owp9OwojIDcwMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIiAxCiMg
MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYi5oIiAxCiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYi5oIgplbnVtIHNtYl9wcm90b2NvbCB7
CiAgICAgICAgU01CX1BST1RPQ09MX05PTkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkUsCiAg
ICAgICAgU01CX1BST1RPQ09MX0NPUkVQTFVTLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4x
LAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4yLAogICAgICAgIFNNQl9QUk9UT0NPTF9OVDEK
fTsKCmVudW0gc21iX2Nhc2VfaG5kbCB7CiAgICAgICAgU01CX0NBU0VfREVGQVVMVCwKICAgICAg
ICBTTUJfQ0FTRV9MT1dFUiwKICAgICAgICBTTUJfQ0FTRV9VUFBFUgp9OwoKc3RydWN0IHNtYl9k
c2thdHRyIHsKICAgICAgICBfX3UxNiB0b3RhbDsKICAgICAgICBfX3UxNiBhbGxvY2Jsb2NrczsK
ICAgICAgICBfX3UxNiBibG9ja3NpemU7CiAgICAgICAgX191MTYgZnJlZTsKfTsKCnN0cnVjdCBz
bWJfY29ubl9vcHQgewoKCiAgICAgICAgdW5zaWduZWQgaW50IGZkOwoKICAgICAgICBlbnVtIHNt
Yl9wcm90b2NvbCBwcm90b2NvbDsKICAgICAgICBlbnVtIHNtYl9jYXNlX2huZGwgY2FzZV9oYW5k
bGluZzsKCgoKICAgICAgICBfX3UzMiBtYXhfeG1pdDsKICAgICAgICBfX3UxNiBzZXJ2ZXJfdWlk
OwogICAgICAgIF9fdTE2IHRpZDsKCgogICAgICAgIF9fdTE2IHNlY21vZGU7CiAgICAgICAgX191
MTYgbWF4bXV4OwogICAgICAgIF9fdTE2IG1heHZjczsKICAgICAgICBfX3UxNiByYXdtb2RlOwog
ICAgICAgIF9fdTMyIHNlc3NrZXk7CgoKICAgICAgICBfX3UzMiBtYXhyYXc7CiAgICAgICAgX191
MzIgY2FwYWJpbGl0aWVzOwogICAgICAgIF9fczE2IHNlcnZlcnpvbmU7Cn07CgoKCgpzdHJ1Y3Qg
c21iX25sc19jb2RlcGFnZSB7CiAgICAgICAgY2hhciBsb2NhbF9uYW1lWzIwXTsKICAgICAgICBj
aGFyIHJlbW90ZV9uYW1lWzIwXTsKfTsKIyA3OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvc21iLmgiCnN0cnVjdCBzbWJfZmF0dHIgewoKICAgICAgICBfX3UxNiBhdHRyOwoK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZfaW5vOwogICAgICAgIHVtb2RlX3QgZl9tb2RlOwogICAg
ICAgIG5saW5rX3QgZl9ubGluazsKICAgICAgICB1aWRfdCBmX3VpZDsKICAgICAgICBnaWRfdCBm
X2dpZDsKICAgICAgICBrZGV2X3QgZl9yZGV2OwogICAgICAgIG9mZl90IGZfc2l6ZTsKICAgICAg
ICB0aW1lX3QgZl9hdGltZTsKICAgICAgICB0aW1lX3QgZl9tdGltZTsKICAgICAgICB0aW1lX3Qg
Zl9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZfYmxrc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGZfYmxvY2tzOwp9OwoKZW51bSBzbWJfY29ubl9zdGF0ZSB7CiAgICAgICAgQ09OTl9W
QUxJRCwKICAgICAgICBDT05OX0lOVkFMSUQsCgogICAgICAgIENPTk5fUkVUUklFRCwKICAgICAg
ICBDT05OX1JFVFJZSU5HCn07CiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NtYl9mc19zYi5oIiAyCgoKCgoKCgpzdHJ1Y3Qgc21iX3NiX2luZm8gewogICAgICAgIGVu
dW0gc21iX2Nvbm5fc3RhdGUgc3RhdGU7CiAgICAgICAgc3RydWN0IGZpbGUgKiBzb2NrX2ZpbGU7
CgogICAgICAgIHN0cnVjdCBzbWJfbW91bnRfZGF0YV9rZXJuZWwgKm1udDsKICAgICAgICB1bnNp
Z25lZCBjaGFyICp0ZW1wX2J1ZjsKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IGdlbmVyYXRpb247
CiAgICAgICAgcGlkX3QgY29ubl9waWQ7CiAgICAgICAgc3RydWN0IHNtYl9jb25uX29wdCBvcHQ7
CgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90
IHdhaXQ7CgogICAgICAgIF9fdTMyIHBhY2tldF9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
KiBwYWNrZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmNsczsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBlcnI7CgoKICAgICAgICB2b2lkICpkYXRhX3JlYWR5OwoKCiAgICAgICAgc3RydWN0IG5s
c190YWJsZSAqcmVtb3RlX25sczsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpsb2NhbF9ubHM7
CgoKCgogICAgICAgIGNoYXIgKm5hbWVfYnVmOwoKICAgICAgICBpbnQgKCpjb252ZXJ0KShjaGFy
ICosIGludCwgY29uc3QgY2hhciAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IG5sc190YWJsZSAqLCBzdHJ1Y3QgbmxzX3RhYmxlICopOwp9OwoKCnN0YXRpYyBpbmxpbmUgdm9p
ZApzbWJfbG9ja19zZXJ2ZXIoc3RydWN0IHNtYl9zYl9pbmZvICpzZXJ2ZXIpCnsKICAgICAgICBk
b3duKCYoc2VydmVyLT5zZW0pKTsKfQoKc3RhdGljIGlubGluZSB2b2lkCnNtYl91bmxvY2tfc2Vy
dmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyKQp7CiAgICAgICAgdXAoJihzZXJ2ZXItPnNl
bSkpOwp9CiMgNzAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaGZzX2ZzX3NiLmgiIDEK
IyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaGZzX2ZzX3NiLmgiCnN0
cnVjdCBoZnNfbmFtZTsKCnR5cGVkZWYgaW50ICgqaGZzX25hbWVpbl9mbikgKGNoYXIgKiwgY29u
c3Qgc3RydWN0IGhmc19uYW1lICopOwp0eXBlZGVmIHZvaWQgKCpoZnNfbmFtZW91dF9mbikgKHN0
cnVjdCBoZnNfbmFtZSAqLCBjb25zdCBjaGFyICosIGludCk7CnR5cGVkZWYgdm9pZCAoKmhmc19p
ZmlsbF9mbikgKHN0cnVjdCBpbm9kZSAqLCBpbm9fdCwgY29uc3QgaW50KTsKCgoKCgoKc3RydWN0
IGhmc19zYl9pbmZvIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgc3RydWN0IGhmc19tZGIg
KnNfbWRiOwogICAgICAgIGludCBzX3F1aWV0OwoKICAgICAgICBpbnQgc19sb3dlcmNhc2U7CiAg
ICAgICAgaW50IHNfYWZwZDsKICAgICAgICBpbnQgc192ZXJzaW9uOwogICAgICAgIGhmc19uYW1l
aW5fZm4gc19uYW1laW47CgoKICAgICAgICBoZnNfbmFtZW91dF9mbiBzX25hbWVvdXQ7CgoKICAg
ICAgICBoZnNfaWZpbGxfZm4gc19pZmlsbDsKCiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19uYW1l
ICpzX3Jlc2VydmVkMTsKICAgICAgICBjb25zdCBzdHJ1Y3QgaGZzX25hbWUgKnNfcmVzZXJ2ZWQy
OwogICAgICAgIF9fdTMyIHNfdHlwZTsKICAgICAgICBfX3UzMiBzX2NyZWF0b3I7CiAgICAgICAg
dW1vZGVfdCBzX3VtYXNrOwoKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dp
ZDsKICAgICAgICBjaGFyIHNfY29udjsKfTsKIyA3MDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9hZGZzX2ZzX3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvYWRmc19mc19zYi5oIgpzdHJ1Y3QgYWRmc19kaXNjbWFwOwpzdHJ1Y3QgYWRmc19kaXJf
b3BzOwoKCgoKc3RydWN0IGFkZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IGFkZnNfZGlzY21h
cCAqc19tYXA7CiAgICAgICAgc3RydWN0IGFkZnNfZGlyX29wcyAqc19kaXI7CgogICAgICAgIHVp
ZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVtb2RlX3Qgc19vd25lcl9t
YXNrOwogICAgICAgIHVtb2RlX3Qgc19vdGhlcl9tYXNrOwoKICAgICAgICBfX3UzMiBzX2lkc19w
ZXJfem9uZTsKICAgICAgICBfX3UzMiBzX2lkbGVuOwogICAgICAgIF9fdTMyIHNfbWFwX3NpemU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX3NpemU7CiAgICAgICAgc2lnbmVkIGludCBzX21hcDJi
bGs7CiAgICAgICAgdW5zaWduZWQgaW50IHNfbG9nMnNoYXJlc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc192ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBzX25hbWVsZW47Cn07CiMgNzAz
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAxCiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiIDEKIyA0NSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIgpzdHJ1Y3QgcW54NF9pbm9kZV9l
bnRyeSB7CiAgICAgICAgY2hhciBkaV9mbmFtZVsxNl07CiAgICAgICAgcW54NF9vZmZfdCBkaV9z
aXplOwogICAgICAgIHFueDRfeHRudF90IGRpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgZGlf
eGJsazsKICAgICAgICBfX3MzMiBkaV9mdGltZTsKICAgICAgICBfX3MzMiBkaV9tdGltZTsKICAg
ICAgICBfX3MzMiBkaV9hdGltZTsKICAgICAgICBfX3MzMiBkaV9jdGltZTsKICAgICAgICBxbng0
X254dG50X3QgZGlfbnVtX3h0bnRzOwogICAgICAgIHFueDRfbW9kZV90IGRpX21vZGU7CiAgICAg
ICAgcW54NF9tdWlkX3QgZGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGRpX2dpZDsKICAgICAg
ICBxbng0X25saW5rX3QgZGlfbmxpbms7CiAgICAgICAgX191OCBkaV96ZXJvWzRdOwogICAgICAg
IHFueDRfZnR5cGVfdCBkaV90eXBlOwogICAgICAgIF9fdTggZGlfc3RhdHVzOwp9OwoKc3RydWN0
IHFueDRfbGlua19pbmZvIHsKICAgICAgICBjaGFyIGRsX2ZuYW1lWzQ4XTsKICAgICAgICBfX3Uz
MiBkbF9pbm9kZV9ibGs7CiAgICAgICAgX191OCBkbF9pbm9kZV9uZHg7CiAgICAgICAgX191OCBk
bF9zcGFyZVsxMF07CiAgICAgICAgX191OCBkbF9zdGF0dXM7Cn07CgpzdHJ1Y3QgcW54NF94Ymxr
IHsKICAgICAgICBfX3UzMiB4YmxrX25leHRfeGJsazsKICAgICAgICBfX3UzMiB4YmxrX3ByZXZf
eGJsazsKICAgICAgICBfX3U4IHhibGtfbnVtX3h0bnRzOwogICAgICAgIF9fdTggeGJsa19zcGFy
ZVszXTsKICAgICAgICBfX3MzMiB4YmxrX251bV9ibG9ja3M7CiAgICAgICAgcW54NF94dG50X3Qg
eGJsa194dG50c1s2MF07CiAgICAgICAgY2hhciB4YmxrX3NpZ25hdHVyZVs4XTsKICAgICAgICBx
bng0X3h0bnRfdCB4YmxrX2ZpcnN0X3h0bnQ7Cn07CgpzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayB7
CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgUm9vdERpcjsKICAgICAgICBzdHJ1Y3Qg
cW54NF9pbm9kZV9lbnRyeSBJbm9kZTsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBC
b290OwogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IEFsdEJvb3Q7Cn07CiMgMTAwICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiCmV4dGVybiBzdHJ1
Y3QgZGVudHJ5ICpxbng0X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAq
ZGVudHJ5KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9jb3VudF9mcmVlX2Jsb2NrcyhzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9ibG9ja19tYXAo
c3RydWN0IGlub2RlICppbm9kZSwgbG9uZyBpYmxvY2spOwoKZXh0ZXJuIHN0cnVjdCBidWZmZXJf
aGVhZCAqcW54NF9nZXRibGsoc3RydWN0IGlub2RlICosIGludCwgaW50KTsKZXh0ZXJuIHN0cnVj
dCBidWZmZXJfaGVhZCAqcW54NF9icmVhZChzdHJ1Y3QgaW5vZGUgKiwgaW50LCBpbnQpOwoKZXh0
ZXJuIGludCBxbng0X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVu
dHJ5LCBpbnQgbW9kZSk7CmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBxbng0X2ZpbGVf
aW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHFueDRfZGly
X2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHFueDRfZmls
ZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBxbng0X2Rpcl9vcGVy
YXRpb25zOwpleHRlcm4gaW50IHFueDRfaXNfZnJlZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBs
b25nIGJsb2NrKTsKZXh0ZXJuIGludCBxbng0X3NldF9iaXRtYXAoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpzYiwgbG9uZyBibG9jaywgaW50IGJ1c3kpOwpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVj
dCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4g
dm9pZCBxbng0X3RydW5jYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBxbng0
X2ZyZWVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF91bmxpbmso
c3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54
NF9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKZXh0ZXJu
IGludCBxbng0X3N5bmNfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRlbnRyeSAqZGVu
dHJ5LCBpbnQpOwpleHRlcm4gaW50IHFueDRfc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2Rl
KTsKZXh0ZXJuIGludCBxbng0X2dldF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGli
bG9jaywgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IGNyZWF0ZSk7CiMgMTUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBx
bng0X3NiX2luZm8gewogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc2JfYnVmOwogICAgICAg
IHN0cnVjdCBxbng0X3N1cGVyX2Jsb2NrICpzYjsKICAgICAgICB1bnNpZ25lZCBpbnQgVmVyc2lv
bjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSAqQml0TWFwOwp9OwojIDcwNCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDEKCgoKCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDEKIyAzOCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiCnN0cnVjdCB0cV9zdHJ1
Y3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25n
IHN5bmM7CiAgICAgICAgdm9pZCAoKnJvdXRpbmUpKHZvaWQgKik7CiAgICAgICAgdm9pZCAqZGF0
YTsKfTsKIyA2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgi
CnR5cGVkZWYgc3RydWN0IGxpc3RfaGVhZCB0YXNrX3F1ZXVlOwoKCgoKZXh0ZXJuIHRhc2tfcXVl
dWUgdHFfdGltZXIsIHRxX2ltbWVkaWF0ZSwgdHFfZGlzazsKIyA5NCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiCmV4dGVybiBzcGlubG9ja190IHRxdWV1ZV9s
b2NrOwoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IHF1ZXVlX3Rhc2soc3RydWN0IHRxX3N0cnVjdCAq
YmhfcG9pbnRlciwgdGFza19xdWV1ZSAqYmhfbGlzdCkKewogICAgICAgIGludCByZXQgPSAwOwog
ICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdCgwLCZiaF9wb2ludGVyLT5zeW5jKSkgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICAgICAgICAgIGRvIHsgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCI6Ij1nIiAoZmxhZ3MpOiAp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlKDApOzsg
c3Bpbl9sb2NrKCZ0cXVldWVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgbGlz
dF9hZGRfdGFpbCgmYmhfcG9pbnRlci0+bGlzdCwgYmhfbGlzdCk7CiAgICAgICAgICAgICAgICBk
byB7IHNwaW5fdW5sb2NrKCZ0cXVldWVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
bCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgICAgICAgICByZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9
CgoKCgoKZXh0ZXJuIHZvaWQgX19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0
YXRpYyBpbmxpbmUgdm9pZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAg
ICAgaWYgKCghbGlzdF9lbXB0eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tf
cXVldWUobGlzdCk7Cn0KIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9y
ZWlzZXJmc19mc19zYi5oIiAyCiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jawp7CiAgX191
MzIgc19ibG9ja19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOwogIF9fdTMyIHNfcm9vdF9i
bG9jazsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2RldjsKIyA0
MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIK
ICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNfam91cm5hbF90cmFuc19tYXgg
OwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAgX191MzIgc19qb3VybmFsX21heF9i
YXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRfYWdlIDsKICBfX3UzMiBzX2pvdXJu
YWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7CiAgX191MTYgc19vaWRfbWF4
c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNfc3RhdGU7CiAgY2hhciBzX21h
Z2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29kZTsKICBfX3UxNiBzX3RyZWVfaGVp
Z2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3ZlcnNpb247CgoKCgogIF9fdTE2IHNf
cmVzZXJ2ZWQ7CiAgX191MzIgc19pbm9kZV9nZW5lcmF0aW9uOwogIF9fdTMyIHNfZmxhZ3M7CiAg
dW5zaWduZWQgY2hhciBzX3V1aWRbMTZdOwogIHVuc2lnbmVkIGNoYXIgc19sYWJlbFsxNl07CiAg
Y2hhciBzX3VudXNlZFs4OF0gOwoKCgp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7Cgp0
eXBlZGVmIGVudW0gewogIHJlaXNlcmZzX2F0dHJzX2NsZWFyZWQgPSAweDAwMDAwMDAxLAp9IHJl
aXNlcmZzX3N1cGVyX2Jsb2NrX2ZsYWdzOwojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2Nr
X3YxCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAgX191
MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pvdXJu
YWxfZGV2OwogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7CiAgX191MzIgc19qb3VybmFsX3Ry
YW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2NvdW50IDsKICBfX3UzMiBzX2pvdXJu
YWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOwogIF9fdTMy
IHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsKICBfX3UxNiBz
X29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7CiAgX191MTYgc19zdGF0ZTsKICBj
aGFyIHNfbWFnaWNbMTZdOwogIF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19ibWFwX25y
OwogIF9fdTMyIHNfcmVzZXJ2ZWQ7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKTsKIyAy
MTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgi
CnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlIHsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo
IDsKICBrZGV2X3QgZGV2IDsKICB1bnNpZ25lZCBsb25nIGJsb2NrbnIgOwogIGxvbmcgc3RhdGUg
OwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2Vy
ZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KnByZXYgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0
IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRt
YXBfbm9kZSB7CiAgaW50IGlkIDsKICBjaGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxp
c3QgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZz
X2pvdXJuYWxfbGlzdCAqam91cm5hbF9saXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25v
ZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxl
IHsKCiAgY2hhciAqdF9jYWxsZXIgOwogIGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Js
b2Nrc19hbGxvY2F0ZWQgOwogIHVuc2lnbmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1
cGVyX2Jsb2NrICp0X3N1cGVyIDsKCiAgaW50IGRpc3BsYWNlX25ld19ibG9ja3M6MTsKCn0gOwoK
CgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCB7CiAgdW5zaWduZWQgbG9uZyBqX3N0
YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICBhdG9taWNfdCBqX25vbnplcm9sZW4gOwog
IGF0b21pY190IGpfY29tbWl0X2xlZnQgOwogIGF0b21pY190IGpfZmx1c2hpbmcgOwogIGF0b21p
Y190IGpfY29tbWl0X2ZsdXNoaW5nIDsKICBhdG9taWNfdCBqX29sZGVyX2NvbW1pdHNfZG9uZSA7
CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB0aW1lX3Qgal90aW1lc3RhbXAgOwogIHN0
cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCAqal9saXN0X2JpdG1hcCA7CiAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpqX2NvbW1pdF9iaCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpf
cmVhbGJsb2NrIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9mcmVlZGxpc3Qg
OwogIHdhaXRfcXVldWVfaGVhZF90IGpfY29tbWl0X3dhaXQgOwogIHdhaXRfcXVldWVfaGVhZF90
IGpfZmx1c2hfd2FpdCA7Cn0gOwoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCA7CgpzdHJ1Y3Qg
cmVpc2VyZnNfam91cm5hbCB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIGpfYXBfYmxvY2tzIDsK
ICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9sYXN0IDsKICBzdHJ1Y3QgcmVpc2Vy
ZnNfam91cm5hbF9jbm9kZSAqal9maXJzdCA7CgogIGxvbmcgal9zdGF0ZSA7CiAgdW5zaWduZWQg
bG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVuc2lnbmVk
IGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQgbG9uZyBq
X2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9iY291
bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1bnNpZ25l
ZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpqX2hl
YWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hfcGFnZXMg
OwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90IGpfd2Fp
dCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2luX3dhaXQg
OwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7CiAgaW50
IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpfbmV4dF9m
dWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25vZGVfdXNl
ZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2Rl
ICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpf
Y25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGludCBqX3Vz
ZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVzIDsKICBz
dHJ1Y3QgbGlzdF9oZWFkIGpfZGlydHlfYnVmZmVycyA7CiAgc3RydWN0IHJlaXNlcmZzX2xpc3Rf
Yml0bWFwIGpfbGlzdF9iaXRtYXBbNV0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3Qg
al9qb3VybmFsX2xpc3RbNjRdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9o
YXNoX3RhYmxlWzgxOTJdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9saXN0
X2hhc2hfdGFibGVbODE5Ml0gOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfcHJlYWxsb2NfbGlzdDsK
fTsKCgoKCnR5cGVkZWYgX191MzIgKCpoYXNoZl90KSAoY29uc3Qgc2lnbmVkIGNoYXIgKiwgaW50
KTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfaW5mbwp7CgogICAgX191MTYgZmlyc3RfemVyb19o
aW50OwogICAgX191MTYgZnJlZV9jb3VudDsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmg7Cn07
CgpzdHJ1Y3QgcHJvY19kaXJfZW50cnk7CiMgNDA4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgp0eXBlZGVmIHN0cnVjdCByZWlzZXJmc19wcm9j
X2luZm9fZGF0YQp7fSByZWlzZXJmc19wcm9jX2luZm9fZGF0YV90OwoKCgpzdHJ1Y3QgcmVpc2Vy
ZnNfc2JfaW5mbwp7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKCgogICAgc3RydWN0
IHJlaXNlcmZzX3N1cGVyX2Jsb2NrICogc19yczsKICAgIHN0cnVjdCByZWlzZXJmc19iaXRtYXBf
aW5mbyAqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91cm5h
bCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5kX2lv
X2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hhc2hf
ZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoKCiAgICBzdHJ1Y3Qg
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgYml0czsKICAgICAgICB1bnNpZ25lZCBsb25nIGxhcmdl
X2ZpbGVfc2l6ZTsKICAgICAgICBpbnQgYm9yZGVyOwogICAgICAgIGludCBwcmVhbGxvY21pbjsK
ICAgICAgICBpbnQgcHJlYWxsb2NzaXplOwoKCiAgICB9IHNfYWxsb2Nfb3B0aW9uczsKCgogICAg
d2FpdF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlvbl9jb3Vu
dGVyOwoKICAgIHVuc2lnbmVkIGxvbmcgc19wcm9wZXJ0aWVzOwoKCgogICAgaW50IHNfa21hbGxv
Y3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlza193cml0ZXM7CiAgICBpbnQg
c19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAgaW50IHNfdW5uZWVkZWRfbGVm
dF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tleV9yZWFkYTsKICAgIGludCBz
X2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7CiAgICBpbnQgc19kaXJlY3Qy
aW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7CgoKCiAgICBpbnQgc19pc191bmxp
bmtlZF9vazsKICAgIHJlaXNlcmZzX3Byb2NfaW5mb19kYXRhX3Qgc19wcm9jX2luZm9fZGF0YTsK
ICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2RpcjsKICAgIGludCByZXNlcnZlZF9ibG9j
a3M7Cn07CiMgNTM0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZWlzZXJm
c19mc19zYi5oIgp2b2lkIHJlaXNlcmZzX2ZpbGVfYnVmZmVyIChzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBiaCwgaW50IGxpc3QpOwppbnQgcmVpc2VyZnNfaXNfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpzKSA7CmludCBqb3VybmFsX21hcmtfZGlydHkoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9u
X2hhbmRsZSAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkg
OwppbnQgZmx1c2hfb2xkX2NvbW1pdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBpbnQpIDsKaW50
IHNob3dfcmVpc2VyZnNfbG9ja3Modm9pZCkgOwppbnQgcmVpc2VyZnNfcmVzaXplKHN0cnVjdCBz
dXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKSA7CiMgNzA1ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYmZzX2ZzX3NiLmgiCnN0cnVjdCBiZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzaV9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlYjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNpX2ZyZWVpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfaW9m
ZjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX3NibGs7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzaV9sZl9lYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGFzdGk7CiAgICAgICAgY2hh
ciAqIHNpX2ltYXA7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2lfc2JoOwogICAgICAg
IHN0cnVjdCBiZnNfc3VwZXJfYmxvY2sgKiBzaV9iZnNfc2I7Cn07CiMgNzA2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiCiNwcmFnbWEgcGFjaygxKQojIDMwICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKc3RydWN0IHVkZl9z
cGFyaW5nX2RhdGEKewogICAgICAgIF9fdTE2IHNfcGFja2V0X2xlbjsKICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKnNfc3Bhcl9tYXBbNF07Cn07CgpzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0YQp7
CiAgICAgICAgX191MzIgc19udW1fZW50cmllczsKICAgICAgICBfX3UxNiBzX3N0YXJ0X29mZnNl
dDsKfTsKCnN0cnVjdCB1ZGZfYml0bWFwCnsKICAgICAgICBfX3UzMiBzX2V4dExlbmd0aDsKICAg
ICAgICBfX3UzMiBzX2V4dFBvc2l0aW9uOwogICAgICAgIF9fdTE2IHNfbnJfZ3JvdXBzOwogICAg
ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKnNfYmxvY2tfYml0bWFwOwp9OwoKc3RydWN0IHVkZl9w
YXJ0X21hcAp7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
dWRmX2JpdG1hcCAqc19iaXRtYXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFi
bGU7CiAgICAgICAgfSBzX3VzcGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB1ZGZfYml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVj
dCBpbm9kZSAqc190YWJsZTsKICAgICAgICB9IHNfZnNwYWNlOwogICAgICAgIF9fdTMyIHNfcGFy
dGl0aW9uX3Jvb3Q7CiAgICAgICAgX191MzIgc19wYXJ0aXRpb25fbGVuOwogICAgICAgIF9fdTE2
IHNfcGFydGl0aW9uX3R5cGU7CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fbnVtOwogICAgICAg
IHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zcGFyaW5nX2RhdGEg
c19zcGFyaW5nOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEgc192aXJ0
dWFsOwogICAgICAgIH0gc190eXBlX3NwZWNpZmljOwogICAgICAgIF9fdTMyICgqc19wYXJ0aXRp
b25fZnVuYykoc3RydWN0IHN1cGVyX2Jsb2NrICosIF9fdTMyLCBfX3UxNiwgX191MzIpOwogICAg
ICAgIF9fdTE2IHNfdm9sdW1lc2VxbnVtOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX2ZsYWdz
Owp9OwoKI3ByYWdtYSBwYWNrKCkKCnN0cnVjdCB1ZGZfc2JfaW5mbwp7CiAgICAgICAgc3RydWN0
IHVkZl9wYXJ0X21hcCAqc19wYXJ0bWFwczsKICAgICAgICBfX3U4IHNfdm9saWRlbnRbMzJdOwoK
CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25zOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uOwoK
CiAgICAgICAgX19zMzIgc19zZXNzaW9uOwogICAgICAgIF9fdTMyIHNfYW5jaG9yWzRdOwogICAg
ICAgIF9fdTMyIHNfbGFzdGJsb2NrOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfbHZp
ZGJoOwoKCiAgICAgICAgbW9kZV90IHNfdW1hc2s7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAg
ICAgdWlkX3Qgc191aWQ7CgoKICAgICAgICB0aW1lX3Qgc19yZWNvcmR0aW1lOwoKCiAgICAgICAg
X191MTYgc19zZXJpYWxudW07CgoKICAgICAgICBfX3UxNiBzX3VkZnJldjsKCgogICAgICAgIF9f
dTMyIHNfZmxhZ3M7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpzX25sc19tYXA7CgoKICAg
ICAgICBzdHJ1Y3QgaW5vZGUgKnNfdmF0Owp9OwojIDcwNyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25jcF9mc19zYi5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25jcF9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L25jcF9tb3VudC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L25jcF9tb3VudC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L25jcC5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcC5o
IgpzdHJ1Y3QgbmNwX3JlcXVlc3RfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25u
X2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBmdW5jdGlvbiBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7Cn07CgoKCgpzdHJ1Y3QgbmNwX3JlcGx5X2hlYWRlciB7CiAgICAgICAgX191MTYg
dHlwZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHNlcXVlbmNlIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9sb3cgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCB0YXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTggY29ubl9oaWdoIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg
Y29tcGxldGlvbl9jb2RlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29u
bmVjdGlvbl9zdGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFb
MF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCnN0cnVjdCBuY3Bfdm9sdW1lX2luZm8g
ewogICAgICAgIF9fdTMyIHRvdGFsX2Jsb2NrczsKICAgICAgICBfX3UzMiBmcmVlX2Jsb2NrczsK
ICAgICAgICBfX3UzMiBwdXJnZWFibGVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5vdF95ZXRfcHVy
Z2VhYmxlX2Jsb2NrczsKICAgICAgICBfX3UzMiB0b3RhbF9kaXJfZW50cmllczsKICAgICAgICBf
X3UzMiBhdmFpbGFibGVfZGlyX2VudHJpZXM7CiAgICAgICAgX191OCBzZWN0b3JzX3Blcl9ibG9j
azsKICAgICAgICBjaGFyIHZvbHVtZV9uYW1lWygxNikgKyAxXTsKfTsKIyAxMTIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfaW5mb19zdHJ1Y3Qg
ewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3Ux
NiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkYXRhU3RyZWFt
U2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiB0b3RhbFN0cmVhbVNp
emUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbnVtYmVyT2ZTdHJlYW1z
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uVGltZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFy
Y2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVE
YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGVkUmlnaHRzTWFzayBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9zRGlyTnVtIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg
RUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIE5TQ3JlYXRv
ciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG5hbWVMZW4gX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBlbnRyeU5hbWVbMjU2XSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKfTsKIyAxNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5X2Rvc19pbmZvIHsKICAgICAgICBfX3UzMiBhdHRyaWJ1
dGVzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgbW9kaWZ5VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFy
Y2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVy
SUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VHcmFudE1h
c2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VSZXZv
a2VNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1heGltdW1TcGFj
ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCnN0cnVjdCBud19zZWFyY2hfc2VxdWVuY2Ug
ewogICAgICAgIF9fdTggdm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgc2Vx
dWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAyCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIgpzdHJ1Y3QgbmNwX21vdW50X2RhdGEgewog
ICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAg
X19rZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19w
aWQ7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAg
IHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50
OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlk
OwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmls
ZV9tb2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5j
cF9tb3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBs
b25nIGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtb3VudGVkX3VpZDsKCiAgICAgICAg
bG9uZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNp
Z25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVkIGludCByZXRyeV9jb3VudDsKCgoK
ICAgICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdpZDsKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJf
bW9kZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgaW50X2ZsYWdzOwoKICAgICAgICBf
X2tlcm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAgICAgIF9fa2VybmVsX3BpZF90IHdkb2df
cGlkOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRp
bWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1
aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90
IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21vZGU7Cn07CiMgMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5oIiAyCgoKCgoKc3Ry
dWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1Y3QgbmNwX21vdW50X2RhdGFfa2VybmVsIG07
CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2NCkgKyAyXTsKCiAgICAgICAgc3RydWN0IGZp
bGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1ZW5jZTsKICAgICAgICB1OCB0YXNrOwogICAg
ICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1OCBjb21wbGV0aW9uOwogICAgICAgIHU4IGNv
bm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZmZXJfc2l6ZTsKCiAgICAgICAgaW50IHJlcGx5
X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpw
YWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsK
CiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAgICAgICBpbnQgaGFzX3N1YmZ1bmN0aW9uOwog
ICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAgICAgICAgaW50IHJvb3Rfc2V0dXBlZDsKCgog
ICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAgICBpbnQgc2lnbl9hY3RpdmU7CiAgICAgICAg
Y2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hhciBzaWduX2xhc3RbMTZdOwoKCiAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBhdXRoX3R5cGU7CiAgICAgICAgICAgICAgICBz
aXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAgICAgICAgICAgdm9pZCogb2JqZWN0X25hbWU7
CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5cGU7CiAgICAgICAgfSBhdXRoOwoKICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgIHZv
aWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxz
X3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CgoKICAgICAgICBpbnQgZGVu
dHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKfTsKIyA5MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50
IG5jcF9jb25uX3ZhbGlkKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICByZXR1
cm4gKChzZXJ2ZXItPmNvbm5fc3RhdHVzICYgMHgxMSkgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBuY3BfaW52YWxpZGF0ZV9jb25uKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAg
ICAgICBzZXJ2ZXItPmNvbm5fc3RhdHVzIHw9IDB4MDE7Cn0KIyA3MDggIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC91c2JkZXZfZnNfc2IuaCIgMQpzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gewog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBp
bGlzdDsKICAgICAgICB1aWRfdCBkZXZ1aWQ7CiAgICAgICAgZ2lkX3QgZGV2Z2lkOwogICAgICAg
IHVtb2RlX3QgZGV2bW9kZTsKICAgICAgICB1aWRfdCBidXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVz
Z2lkOwogICAgICAgIHVtb2RlX3QgYnVzbW9kZTsKICAgICAgICB1aWRfdCBsaXN0dWlkOwogICAg
ICAgIGdpZF90IGxpc3RnaWQ7CiAgICAgICAgdW1vZGVfdCBsaXN0bW9kZTsKfTsKIyA3MDkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMQoKCgoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMyAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIgpzdHJ1Y3Qg
Y29tcGxldGlvbiB7CiAgICAgICAgdW5zaWduZWQgaW50IGRvbmU7CiAgICAgICAgd2FpdF9xdWV1
ZV9oZWFkX3Qgd2FpdDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBsZXRp
b24oc3RydWN0IGNvbXBsZXRpb24gKngpCnsKICAgICAgICB4LT5kb25lID0gMDsKICAgICAgICBp
bml0X3dhaXRxdWV1ZV9oZWFkKCZ4LT53YWl0KTsKfQoKZXh0ZXJuIHZvaWQgd2FpdF9mb3JfY29t
cGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CmV4dGVybiB2b2lkIGNvbXBsZXRlKHN0cnVjdCBjb21wbGV0aW9uICopIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9q
ZmZzMl9mc19zYi5oIiAyCiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXRk
X2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5zaWduZWQg
aW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAgICAgIHN0
cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGdjX3Ro
cmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBnY190aHJlYWRfZXhpdDsKCgoK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoKCiAgICAgICAgX191MzIgZmxh
c2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAgICAgX191MzIgZGlydHlfc2l6
ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191MzIgZXJhc2luZ19zaXplOwog
ICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNlY3Rvcl9zaXplOwoKCgogICAg
ICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5yX2VyYXNpbmdfYmxvY2tz
OwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxv
Y2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRibG9jazsK
CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xp
c3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBl
cmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0Owog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVyYXNlX2NvbXBsZXRpb25fbG9j
azsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2FpdDsKICAgICAgICBzdHJ1Y3Qg
amZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAgICAgICAgc3BpbmxvY2tfdCBp
bm9jYWNoZV9sb2NrOwp9OwojIDcxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgc3VwZXJfYmxvY2tzOwpleHRlcm4g
c3BpbmxvY2tfdCBzYl9sb2NrOwoKCgpzdHJ1Y3Qgc3VwZXJfYmxvY2sgewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgc19saXN0OwogICAgICAgIGtkZXZfdCBzX2RldjsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfYmxvY2tzaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ibG9ja3NpemVfYml0
czsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfZGlydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgc19tYXhieXRlczsKICAgICAgICBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqc190eXBlOwog
ICAgICAgIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zICpzX29wOwogICAgICAgIHN0cnVjdCBkcXVv
dF9vcGVyYXRpb25zICpkcV9vcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX21hZ2ljOwogICAgICAgIHN0cnVjdCBkZW50cnkgKnNfcm9vdDsK
ICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1vdW50OwogICAgICAgIHN0cnVjdCBzZW1h
cGhvcmUgc19sb2NrOwogICAgICAgIGludCBzX2NvdW50OwogICAgICAgIGF0b21pY190IHNfYWN0
aXZlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGlydHk7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBzX2xvY2tlZF9pbm9kZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2ZpbGVz
OwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpzX2JkZXY7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBzX2luc3RhbmNlczsKICAgICAgICBzdHJ1Y3QgcXVvdGFfbW91bnRfb3B0aW9ucyBz
X2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhfc2Jf
aW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQyX3NiX2luZm8gZXh0Ml9z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX3NiX2luZm8gZXh0M19zYjsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBocGZzX3NiX2luZm8gaHBmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVj
dCBudGZzX3NiX2luZm8gbnRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19zYl9p
bmZvIG1zZG9zX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb2ZzX3NiX2luZm8gaXNvZnNf
c2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3NiOwogICAgICAgICAg
ICAgICAgc3RydWN0IHN5c3Zfc2JfaW5mbyBzeXN2X3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGFmZnNfc2JfaW5mbyBhZmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVmc19zYl9pbmZv
IHVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBlZnNfc2I7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc2htZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAgICAgICAgICAgICAg
IHN0cnVjdCByb21mc19zYl9pbmZvIHJvbWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHNt
Yl9zYl9pbmZvIHNtYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGhmc19zYl9pbmZvIGhm
c19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZzX3NiX2luZm8gYWRmc19zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBxbng0X3NiX2luZm8gcW54NF9zYjsKICAgICAgICAgICAgICAgIHN0
cnVjdCByZWlzZXJmc19zYl9pbmZvIHJlaXNlcmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGJmc19zYl9pbmZvIGJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc2JfaW5mbyB1
ZGZfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bmc19zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB1c2JkZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBqZmZzMl9zYl9pbmZvIGpmZnMyX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGNyYW1mc19zYl9pbmZvIGNyYW1mc19zYjsKICAgICAgICAgICAgICAgIHZvaWQgKmdlbmVyaWNf
c2JwOwogICAgICAgIH0gdTsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX3Zmc19yZW5h
bWVfc2VtOwojIDc4NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhfc2VtOwoKICAgICAgICBp
bnQgc19tZWRpYV9jaGFuZ2VkOwoKfTsKCgoKCmV4dGVybiBpbnQgdmZzX2NyZWF0ZShzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19ta2RpcihzdHJ1
Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19ta25vZChz
dHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQsIGRldl90KTsKZXh0ZXJuIGludCB2
ZnNfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBjb25zdCBjaGFyICop
OwpleHRlcm4gaW50IHZmc19saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosIHN0
cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3JtZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHZmc191bmxpbmsoc3RydWN0IGlub2RlICosIHN0cnVj
dCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKCnN0cnVjdCBrc3Rh
dCB7CiAgICAgICAgaW5vX3QgaW5vOwogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIGRl
dl90IGRldjsKICAgICAgICB1bW9kZV90IG1vZGU7CiAgICAgICAgbmxpbmtfdCBubGluazsKICAg
ICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIGRldl90IHJkZXY7CiAg
ICAgICAgbG9mZl90IHNpemU7CiAgICAgICAgdGltZV90IGF0aW1lOwogICAgICAgIHRpbWVfdCBt
dGltZTsKICAgICAgICB0aW1lX3QgY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBibGtzaXpl
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmxvY2tzOwp9OwojIDgzOCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHZvaWQg
KiwgY29uc3QgY2hhciAqLCBpbnQsIGxvZmZfdCwgaW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBi
bG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2Rl
ICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICos
IHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCpj
aGVja19tZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChr
ZGV2X3QpOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIGludCAoKm1lZGlh
Y3RsKSAoa2Rldl90IGRldiwgaW50IG9wLCBpbnQgb3B0YXJnKTsKfTsKCgoKCgplbnVtIHsKICAg
ICAgICBNRURJQV9MT0NLID0gMTIzNCwKICAgICAgICBNRURJQV9VTkxPQ0sKfTsKCgoKCgoKc3Ry
dWN0IGZpbGVfb3BlcmF0aW9ucyB7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXI7CiAgICAg
ICAgbG9mZl90ICgqbGxzZWVrKSAoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwogICAgICAg
IHNzaXplX3QgKCpyZWFkKSAoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAq
KTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGUpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICos
IHNpemVfdCwgbG9mZl90ICopOwogICAgICAgIGludCAoKnJlYWRkaXIpIChzdHJ1Y3QgZmlsZSAq
LCB2b2lkICosIGZpbGxkaXJfdCk7CiAgICAgICAgdW5zaWduZWQgaW50ICgqcG9sbCkgKHN0cnVj
dCBmaWxlICosIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCppb2N0
bCkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVk
IGxvbmcpOwogICAgICAgIGludCAoKm1tYXApIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3QgKik7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
ZmlsZSAqKTsKICAgICAgICBpbnQgKCpmbHVzaCkgKHN0cnVjdCBmaWxlICopOwogICAgICAgIGlu
dCAoKnJlbGVhc2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50
ICgqZnN5bmMpIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCBkYXRhc3luYyk7
CiAgICAgICAgaW50ICgqZmFzeW5jKSAoaW50LCBzdHJ1Y3QgZmlsZSAqLCBpbnQpOwogICAgICAg
IGludCAoKmxvY2spIChzdHJ1Y3QgZmlsZSAqLCBpbnQsIHN0cnVjdCBmaWxlX2xvY2sgKik7CiAg
ICAgICAgc3NpemVfdCAoKnJlYWR2KSAoc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlvdmVj
ICosIHVuc2lnbmVkIGxvbmcsIGxvZmZfdCAqKTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGV2KSAo
c3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlvdmVjICosIHVuc2lnbmVkIGxvbmcsIGxvZmZf
dCAqKTsKICAgICAgICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qg
cGFnZSAqLCBpbnQsIHNpemVfdCwgbG9mZl90ICosIGludCk7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyAoKmdldF91bm1hcHBlZF9hcmVhKShzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKfTsKCnN0cnVjdCBpbm9k
ZV9vcGVyYXRpb25zIHsKICAgICAgICBpbnQgKCpjcmVhdGUpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1
Y3QgZGVudHJ5ICosaW50KTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogKCpsb29rdXApIChzdHJ1
Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKmxpbmspIChzdHJ1Y3Qg
ZGVudHJ5ICosc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQgKCp1
bmxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnN5
bWxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosY29uc3QgY2hhciAqKTsKICAg
ICAgICBpbnQgKCpta2RpcikgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwog
ICAgICAgIGludCAoKnJtZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKICAg
ICAgICBpbnQgKCpta25vZCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQsaW50
KTsKICAgICAgICBpbnQgKCpyZW5hbWUpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq
LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq
KTsKICAgICAgICBpbnQgKCpyZWFkbGluaykgKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLGludCk7
CiAgICAgICAgaW50ICgqZm9sbG93X2xpbmspIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBuYW1l
aWRhdGEgKik7CiAgICAgICAgdm9pZCAoKnRydW5jYXRlKSAoc3RydWN0IGlub2RlICopOwogICAg
ICAgIGludCAoKnBlcm1pc3Npb24pIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKICAgICAgICBpbnQg
KCpyZXZhbGlkYXRlKSAoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQgKCpzZXRhdHRyKSAo
c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiAgICAgICAgaW50ICgqZ2V0YXR0cikg
KHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdCAqKTsKICAg
ICAgICBpbnQgKCpzZXR4YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqLCB2b2lk
ICosIHNpemVfdCwgaW50KTsKICAgICAgICBzc2l6ZV90ICgqZ2V0eGF0dHIpIChzdHJ1Y3QgZGVu
dHJ5ICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqLCBzaXplX3QpOwogICAgICAgIHNzaXplX3QgKCps
aXN0eGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgc2l6ZV90KTsKICAgICAgICBpbnQg
KCpyZW1vdmV4YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqKTsKfTsKCnN0cnVj
dCBzZXFfZmlsZTsKCgoKCgpzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyB7CiAgICAgICAgc3RydWN0
IGlub2RlICooKmFsbG9jX2lub2RlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKICAgICAgICB2
b2lkICgqZGVzdHJveV9pbm9kZSkoc3RydWN0IGlub2RlICopOwoKICAgICAgICB2b2lkICgqcmVh
ZF9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKCgoKCgoKCiAgICAgICAgdm9pZCAoKnJlYWRfaW5v
ZGUyKSAoc3RydWN0IGlub2RlICosIHZvaWQgKikgOwogICAgICAgIHZvaWQgKCpkaXJ0eV9pbm9k
ZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfaW5vZGUpIChzdHJ1Y3Qg
aW5vZGUgKiwgaW50KTsKICAgICAgICB2b2lkICgqcHV0X2lub2RlKSAoc3RydWN0IGlub2RlICop
OwogICAgICAgIHZvaWQgKCpkZWxldGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAg
dm9pZCAoKnB1dF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgq
d3JpdGVfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgaW50ICgqc3luY19m
cykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9j
a2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0
cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9p
bm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICopOwojIDk2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvZnMuaCIKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogKCpmaF90b19kZW50cnkpKHN0cnVj
dCBzdXBlcl9ibG9jayAqc2IsIF9fdTMyICpmaCwgaW50IGxlbiwgaW50IGZodHlwZSwgaW50IHBh
cmVudCk7CiAgICAgICAgaW50ICgqZGVudHJ5X3RvX2ZoKShzdHJ1Y3QgZGVudHJ5ICosIF9fdTMy
ICpmaCwgaW50ICpsZW5wLCBpbnQgbmVlZF9wYXJlbnQpOwogICAgICAgIGludCAoKnNob3dfb3B0
aW9ucykoc3RydWN0IHNlcV9maWxlICosIHN0cnVjdCB2ZnNtb3VudCAqKTsKfTsKIyA5NzkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiB2b2lkIF9fbWFy
a19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKc3RhdGljIGlubGluZSB2b2lkIG1h
cmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9k
ZV9kaXJ0eShpbm9kZSwgKDEgfCAyIHwgNCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19p
bm9kZV9kaXJ0eV9zeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5v
ZGVfZGlydHkoaW5vZGUsIDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0
eV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5
KGlub2RlLCA0KTsKfQoKc3RydWN0IGRxdW90X29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpp
bml0aWFsaXplKSAoc3RydWN0IGlub2RlICosIHNob3J0KTsKICAgICAgICB2b2lkICgqZHJvcCkg
KHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBpbnQgKCphbGxvY19ibG9jaykgKHN0cnVjdCBpbm9k
ZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyKTsKICAgICAgICBpbnQgKCphbGxvY19pbm9kZSkgKGNv
bnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICB2b2lkICgqZnJlZV9i
bG9jaykgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICB2b2lkICgqZnJl
ZV9pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBp
bnQgKCp0cmFuc2ZlcikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgpzdHJ1
Y3QgZmlsZV9zeXN0ZW1fdHlwZSB7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICBp
bnQgZnNfZmxhZ3M7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICooKnJlYWRfc3VwZXIpIChz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9pZCAqLCBpbnQpOwogICAgICAgIHN0cnVjdCBtb2R1bGUg
Km93bmVyOwogICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICogbmV4dDsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGZzX3N1cGVyczsKfTsKIyAxMDM3ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gaW50IHJlZ2lzdGVyX2ZpbGVzeXN0ZW0oc3Ry
dWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9maWxlc3lzdGVt
KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICprZXJu
X21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gaW50IG1heV91bW91bnQo
c3RydWN0IHZmc21vdW50ICopOwpleHRlcm4gbG9uZyBkb19tb3VudChjaGFyICosIGNoYXIgKiwg
Y2hhciAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICpk
b19rZXJuX21vdW50KGNvbnN0IGNoYXIgKnR5cGUsIGludCBmbGFncywgY2hhciAqbmFtZSwgdm9p
ZCAqZGF0YSk7CmV4dGVybiBpbnQgZG9fcmVtb3VudF9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi
LCBpbnQgZmxhZ3MsIHZvaWQgKiBkYXRhKTsKCgoKZXh0ZXJuIGludCB2ZnNfc3RhdGZzKHN0cnVj
dCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qgc3RhdGZzICopOwojIDEwNTcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2xv
Y2tlZChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2FyZWEoaW50
LCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgbG9mZl90LCBzaXplX3QpOwojIDEwNjcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUg
aW50IGxvY2tzX3ZlcmlmeV9sb2NrZWQoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIGlm
ICgoKChpbm9kZSktPmlfc2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYg
KDAwMDIwMDAgfCAwMDAxMCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxv
Y2tzX21hbmRhdG9yeV9sb2NrZWQoaW5vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMg
aW5saW5lIGludCBsb2Nrc192ZXJpZnlfYXJlYShpbnQgcmVhZF93cml0ZSwgc3RydWN0IGlub2Rl
ICppbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZpbGUg
KmZpbHAsIGxvZmZfdCBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBjb3VudCkKewogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSkt
Pmlfc2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAw
MDAxMCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9y
eV9hcmVhKHJlYWRfd3JpdGUsIGlub2RlLCBmaWxwLCBvZmZzZXQsIGNvdW50KTsKICAgICAgICBy
ZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X3RydW5jYXRlKHN0cnVj
dCBpbm9kZSAqaW5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBmaWxlICpmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2ZmX3Qg
c2l6ZSkKewogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlfc2ItPnNf
ZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09
IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9hcmVhKAog
ICAgICAgICAgICAgICAgICAgICAgICAyLCBpbm9kZSwgZmlscCwKICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZSA8IGlub2RlLT5pX3NpemUgPyBzaXplIDogaW5vZGUtPmlfc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgKHNpemUgPCBpbm9kZS0+aV9zaXplID8gaW5vZGUtPmlfc2l6ZSAt
IHNpemUKICAgICAgICAgICAgICAgICAgICAgICAgIDogc2l6ZSAtIGlub2RlLT5pX3NpemUpCiAg
ICAgICAgICAgICAgICApOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBn
ZXRfbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IG1vZGUpCnsKICAgICAg
ICBpZiAoaW5vZGUtPmlfZmxvY2spCiAgICAgICAgICAgICAgICByZXR1cm4gX19nZXRfbGVhc2Uo
aW5vZGUsIG1vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgoKCiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgbG9uZyBzeXNfb3Blbihjb25zdCBjaGFyICosIGludCwgaW50KTsKIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jbG9zZSh1bnNpZ25lZCBpbnQpOwpleHRlcm4g
aW50IGRvX3RydW5jYXRlKHN0cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0KTsKCmV4dGVybiBz
dHJ1Y3QgZmlsZSAqZmlscF9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwpleHRlcm4gc3Ry
dWN0IGZpbGUgKiBkZW50cnlfb3BlbihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAq
LCBpbnQpOwpleHRlcm4gaW50IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBp
ZCk7CmV4dGVybiBjaGFyICogZ2V0bmFtZShjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHZm
c19jYWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoKCmVudW0ge0JERVZfRklMRSwgQkRFVl9T
V0FQLCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2KHVuc2ln
bmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKik7
CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICop
OwpleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4gaW50IGJk
X2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2b2lkIGJkX2ZvcmdldChzdHJ1
Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgYmRwdXQoc3RydWN0IGJsb2NrX2RldmljZSAq
KTsKZXh0ZXJuIHN0cnVjdCBjaGFyX2RldmljZSAqY2RnZXQoZGV2X3QpOwpleHRlcm4gdm9pZCBj
ZHB1dChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVybiBpbnQgYmxrZGV2X29wZW4oc3RydWN0
IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gaW50IGJsa2Rldl9jbG9zZShzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRl
Zl9ibGtfZm9wczsKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgZGVmX2Js
a19hb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfZmlmb19mb3BzOwpleHRl
cm4gaW50IGlvY3RsX2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5z
aWduZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxrZGV2X2dldChzdHJ1Y3QgYmxvY2tfZGV2aWNlICos
IG1vZGVfdCwgdW5zaWduZWQsIGludCk7CmV4dGVybiBpbnQgYmxrZGV2X3B1dChzdHJ1Y3QgYmxv
Y2tfZGV2aWNlICosIGludCk7CgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3Bl
cmF0aW9ucyAqZ2V0X2Jsa2ZvcHModW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCByZWdpc3Rlcl9j
aHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg
Kik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFy
ICopOwpleHRlcm4gaW50IGNocmRldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAq
KTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBiZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hh
ciAqIGNkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWUoa2Rldl90
KTsKZXh0ZXJuIHZvaWQgaW5pdF9zcGVjaWFsX2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1bW9kZV90
LCBpbnQpOwoKCmV4dGVybiB2b2lkIG1ha2VfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIGludCBpc19iYWRfaW5vZGUoc3RydWN0IGlub2RlICopOwoKZXh0ZXJuIHN0cnVjdCBmaWxl
X29wZXJhdGlvbnMgcmVhZF9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z
IHdyaXRlX2ZpZm9fZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3cl9maWZv
X2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfcGlwZV9mb3BzOwpleHRl
cm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9waXBlX2ZvcHM7CmV4dGVybiBzdHJ1Y3Qg
ZmlsZV9vcGVyYXRpb25zIHJkd3JfcGlwZV9mb3BzOwoKZXh0ZXJuIGludCBmc19tYXlfcmVtb3Vu
dF9ybyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CgpleHRlcm4gaW50IHRyeV90b19mcmVlX2J1ZmZl
cnMoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgaW50KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CmV4dGVybiB2b2lkIHJlZmlsZV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmKTsK
ZXh0ZXJuIHZvaWQgY3JlYXRlX2VtcHR5X2J1ZmZlcnMoc3RydWN0IHBhZ2UgKiwga2Rldl90LCB1
bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgZW5kX2J1ZmZlcl9pb19zeW5jKHN0cnVjdCBidWZm
ZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7CgoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZlcl9hc3lu
Y19pbyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBn
ZXRfYmgoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBhdG9taWNfaW5jKCYoYmgp
LT5iX2NvdW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB1dF9iaChzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJoKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK
ICAgICAgICBhdG9taWNfZGVjKCZiaC0+Yl9jb3VudCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBtYXJrX2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IG9uKQp7
CiAgICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9VcHRvZGF0ZSwgJmJo
LT5iX3N0YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoQkhfVXB0
b2RhdGUsICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbWFya19idWZm
ZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHJlZmlsZV9idWZmZXIo
YmgpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZl
cl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5LCAm
KGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFuKGJoKTsK
fQoKZXh0ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19tYXJrX2J1ZmZlcl9kaXJ0eShz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIGJ1ZmZlcl9pbnNlcnRfbGlzdChzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGxpc3RfaGVhZCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgYnVm
ZmVyX2luc2VydF9saXN0KGJoLCAmaW5vZGUtPmlfZGlydHlfYnVmZmVycyk7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCBidWZmZXJfaW5zZXJ0X2lub2RlX2RhdGFfcXVldWUoc3RydWN0IGJ1ZmZlcl9o
ZWFkICpiaCwgc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIGJ1ZmZlcl9pbnNlcnRfbGlz
dChiaCwgJmlub2RlLT5pX2RpcnR5X2RhdGFfYnVmZmVycyk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50
IGF0b21pY19zZXRfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAg
ICByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChCSF9EaXJ0eSwgJmJoLT5iX3N0YXRlKTsKfQoKc3Rh
dGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2FzeW5jKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJo
LCBpbnQgb24pCnsKICAgICAgICBpZiAob24pCiAgICAgICAgICAgICAgICBzZXRfYml0KEJIX0Fz
eW5jLCAmYmgtPmJfc3RhdGUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2Jp
dChCSF9Bc3luYywgJmJoLT5iX3N0YXRlKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNldF9idWZm
ZXJfYXR0YWNoZWQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHNldF9iaXQoQkhf
QXR0YWNoZWQsICZiaC0+Yl9zdGF0ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9idWZm
ZXJfYXR0YWNoZWQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIGNsZWFyX2JpdChC
SF9BdHRhY2hlZCwgJmJoLT5iX3N0YXRlKTsKfQoKc3RhdGljIGlubGluZSBpbnQgYnVmZmVyX2F0
dGFjaGVkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICByZXR1cm4gKF9fYnVpbHRp
bl9jb25zdGFudF9wKEJIX0F0dGFjaGVkKSA/IGNvbnN0YW50X3Rlc3RfYml0KChCSF9BdHRhY2hl
ZCksKCZiaC0+Yl9zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKEJIX0F0dGFjaGVkKSwoJmJo
LT5iX3N0YXRlKSkpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVyX0lPX2Vycm9y
KHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgbWFya19idWZmZXJfY2xlYW4oYmgp
OwoKCgogICAgICAgIGJoLT5iX2VuZF9pbyhiaCwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBt
YXJrX2J1ZmZlcl9kaXJ0eV9pbm9kZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBzdHJ1Y3QgaW5v
ZGUgKmlub2RlKQp7CiAgICAgICAgbWFya19idWZmZXJfZGlydHkoYmgpOwogICAgICAgIGJ1ZmZl
cl9pbnNlcnRfaW5vZGVfcXVldWUoYmgsIGlub2RlKTsKfQoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZl
cl9mbHVzaHRpbWUoc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gdm9pZCBiYWxhbmNlX2Rp
cnR5KHZvaWQpOwpleHRlcm4gaW50IGNoZWNrX2Rpc2tfY2hhbmdlKGtkZXZfdCk7CmV4dGVybiBp
bnQgcXVlcnlfZGlza19jaGFuZ2Uoa2Rldl90IGRldik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVf
bWVkaWEoa2Rldl90IGRldik7CmV4dGVybiBpbnQgaW52YWxpZGF0ZV9pbm9kZXMoc3RydWN0IHN1
cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IGludmFsaWRhdGVfZGV2aWNlKGtkZXZfdCwgaW50KTsK
ZXh0ZXJuIGludCBkZXN0cm95X2RldmljZShrZGV2X3QpOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRl
X2lub2RlX3BhZ2VzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9k
ZV9wYWdlczIoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVf
aW5vZGVfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9i
ZGV2KHN0cnVjdCBibG9ja19kZXZpY2UgKiwgaW50KTsKZXh0ZXJuIHZvaWQgX19pbnZhbGlkYXRl
X2J1ZmZlcnMoa2Rldl90IGRldiwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXMoa2Rldl90
KTsKZXh0ZXJuIHZvaWQgc3luY191bmxvY2tlZF9pbm9kZXModm9pZCk7CmV4dGVybiB2b2lkIHdy
aXRlX2lub2RlX25vdyhzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBzeW5jX2J1ZmZl
cnMoa2Rldl90LCBpbnQpOwpleHRlcm4gdm9pZCBzeW5jX2RldihrZGV2X3QpOwpleHRlcm4gaW50
IGZzeW5jX2RldihrZGV2X3QpOwpleHRlcm4gaW50IGZzeW5jX3N1cGVyKHN0cnVjdCBzdXBlcl9i
bG9jayAqKTsKZXh0ZXJuIGludCBmc3luY19ub19zdXBlcihrZGV2X3QpOwpleHRlcm4gdm9pZCBz
eW5jX2lub2Rlc19zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiBpbnQgZnN5bmNfYnVm
ZmVyc19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgaW50IGZzeW5jX2lu
b2RlX2J1ZmZlcnMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIHJldHVybiBmc3luY19i
dWZmZXJzX2xpc3QoJmlub2RlLT5pX2RpcnR5X2J1ZmZlcnMpOwp9CnN0YXRpYyBpbmxpbmUgaW50
IGZzeW5jX2lub2RlX2RhdGFfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAg
cmV0dXJuIGZzeW5jX2J1ZmZlcnNfbGlzdCgmaW5vZGUtPmlfZGlydHlfZGF0YV9idWZmZXJzKTsK
fQpleHRlcm4gaW50IGlub2RlX2hhc19idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlu
dCBmaWxlbWFwX2ZkYXRhc3luYyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIGludCBm
aWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIHZvaWQgc3lu
Y19zdXBlcnMoa2Rldl90IGRldiwgaW50IHdhaXQpOwpleHRlcm4gaW50IGJtYXAoc3RydWN0IGlu
b2RlICosIGludCk7CmV4dGVybiBpbnQgbm90aWZ5X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICosIHN0
cnVjdCBpYXR0ciAqKTsKZXh0ZXJuIGludCBwZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqLCBpbnQp
OwpleHRlcm4gaW50IHZmc19wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4g
aW50IGdldF93cml0ZV9hY2Nlc3Moc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGRlbnlfd3Jp
dGVfYWNjZXNzKHN0cnVjdCBmaWxlICopOwpzdGF0aWMgaW5saW5lIHZvaWQgcHV0X3dyaXRlX2Fj
Y2VzcyhzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewogICAgICAgIGF0b21pY19kZWMoJmlub2RlLT5p
X3dyaXRlY291bnQpOwp9CnN0YXRpYyBpbmxpbmUgdm9pZCBhbGxvd193cml0ZV9hY2Nlc3Moc3Ry
dWN0IGZpbGUgKmZpbGUpCnsKICAgICAgICBpZiAoZmlsZSkKICAgICAgICAgICAgICAgIGF0b21p
Y19pbmMoJmZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX3dyaXRlY291bnQpOwp9CmV4dGVybiBp
bnQgZG9fcGlwZShpbnQgKik7CgpleHRlcm4gaW50IG9wZW5fbmFtZWkoY29uc3QgY2hhciAqLCBp
bnQsIGludCwgc3RydWN0IG5hbWVpZGF0YSAqKTsKCmV4dGVybiBpbnQga2VybmVsX3JlYWQoc3Ry
dWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgY2hhciAqLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJu
IHN0cnVjdCBmaWxlICogb3Blbl9leGVjKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGludCBpc19z
dWJkaXIoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW5vX3QgZmlu
ZF9pbm9kZV9udW1iZXIoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKIyAxMzQ2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHZv
aWQgKkVSUl9QVFIobG9uZyBlcnJvcikKewogICAgICAgIHJldHVybiAodm9pZCAqKSBlcnJvcjsK
fQoKc3RhdGljIGlubGluZSBsb25nIFBUUl9FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAg
cmV0dXJuIChsb25nKSBwdHI7Cn0KCnN0YXRpYyBpbmxpbmUgbG9uZyBJU19FUlIoY29uc3Qgdm9p
ZCAqcHRyKQp7CiAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKXB0ciA+ICh1bnNpZ25lZCBs
b25nKS0xMDAwTDsKfQojIDEzNzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiCmVudW0ge0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1Qs
IExBU1RfQklORH07CiMgMTM4OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
ZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHNpemVfdCB3cml0dGVuOwogICAgICAgIHNp
emVfdCBjb3VudDsKICAgICAgICBjaGFyICogYnVmOwogICAgICAgIGludCBlcnJvcjsKfSByZWFk
X2Rlc2NyaXB0b3JfdDsKCnR5cGVkZWYgaW50ICgqcmVhZF9hY3Rvcl90KShyZWFkX2Rlc2NyaXB0
b3JfdCAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCgpl
eHRlcm4gbG9mZl90IGRlZmF1bHRfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zm
c2V0LCBpbnQgb3JpZ2luKTsKCmV4dGVybiBpbnQgX191c2VyX3dhbGsoY29uc3QgY2hhciAqLCB1
bnNpZ25lZCwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CmV4dGVybiBpbnQgcGF0aF9pbml0KGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1l
aWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IHBhdGhfd2Fs
ayhjb25zdCBjaGFyICosIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwpleHRlcm4gaW50IHBhdGhfbG9va3VwKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0
cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50
IGxpbmtfcGF0aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHBhdGhfcmVsZWFzZShzdHJ1Y3QgbmFt
ZWlkYXRhICopOwpleHRlcm4gaW50IGZvbGxvd19kb3duKHN0cnVjdCB2ZnNtb3VudCAqKiwgc3Ry
dWN0IGRlbnRyeSAqKik7CmV4dGVybiBpbnQgZm9sbG93X3VwKHN0cnVjdCB2ZnNtb3VudCAqKiwg
c3RydWN0IGRlbnRyeSAqKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogbG9va3VwX29uZV9sZW4o
Y29uc3QgY2hhciAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5
ICogbG9va3VwX2hhc2goc3RydWN0IHFzdHIgKiwgc3RydWN0IGRlbnRyeSAqKTsKCgoKZXh0ZXJu
IHZvaWQgaW5vZGVfaW5pdF9vbmNlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgaXB1dChz
dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGZvcmNlX2RlbGV0ZShzdHJ1Y3QgaW5vZGUgKik7
CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ3JhYihzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9f
dCBpdW5pcXVlKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbm9fdCk7Cgp0eXBlZGVmIGludCAoKmZp
bmRfaW5vZGVfdCkoc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CmV4dGVy
biBzdHJ1Y3QgaW5vZGUgKiBpZ2V0NChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9u
ZywgZmluZF9pbm9kZV90LCB2b2lkICopOwpzdGF0aWMgaW5saW5lIHN0cnVjdCBpbm9kZSAqaWdl
dChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubykKewogICAgICAgIHJl
dHVybiBpZ2V0NChzYiwgaW5vLCAoKHZvaWQgKikwKSwgKCh2b2lkICopMCkpOwp9CgpleHRlcm4g
dm9pZCBjbGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKm5l
d19pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX3N1aWQo
c3RydWN0IGlub2RlICppbm9kZSk7CgpleHRlcm4gdm9pZCBpbnNlcnRfaW5vZGVfaGFzaChzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAq
KTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZ2V0X2VtcHR5X2ZpbHAodm9pZCk7CmV4dGVybiB2b2lk
IGZpbGVfbW92ZShzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7CmV4dGVy
biBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJsZShrZGV2X3QsIGludCwgaW50KTsK
ZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIGdldGJsayhrZGV2X3QsIGludCwgaW50KTsKZXh0
ZXJuIHZvaWQgbGxfcndfYmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoW10p
OwpleHRlcm4gdm9pZCBzdWJtaXRfYmgoaW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVy
biBpbnQgaXNfcmVhZF9vbmx5KGtkZXZfdCk7CmV4dGVybiB2b2lkIF9fYnJlbHNlKHN0cnVjdCBi
dWZmZXJfaGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2JyZWxzZShidWYp
Owp9CmV4dGVybiB2b2lkIF9fYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBp
bmxpbmUgdm9pZCBiZm9yZ2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqYnVmKQp7CiAgICAgICAgaWYg
KGJ1ZikKICAgICAgICAgICAgICAgIF9fYmZvcmdldChidWYpOwp9CmV4dGVybiBpbnQgc2V0X2Js
b2Nrc2l6ZShrZGV2X3QsIGludCk7CmV4dGVybiBpbnQgc2Jfc2V0X2Jsb2Nrc2l6ZShzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKiwgaW50KTsKZXh0ZXJuIGludCBzYl9taW5fYmxvY2tzaXplKHN0cnVjdCBz
dXBlcl9ibG9jayAqLCBpbnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogYnJlYWQoa2Rl
dl90LCBpbnQsIGludCk7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2JfYnJl
YWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGJy
ZWFkKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0Kc3RhdGljIGlubGluZSBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiBzYl9nZXRibGsoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50
IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGdldGJsayhzYi0+c19kZXYsIGJsb2NrLCBzYi0+c19i
bG9ja3NpemUpOwp9CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2JfZ2V0X2hh
c2hfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0
dXJuIGdldF9oYXNoX3RhYmxlKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0K
ZXh0ZXJuIHZvaWQgd2FrZXVwX2JkZmx1c2godm9pZCk7CmV4dGVybiB2b2lkIHB1dF91bnVzZWRf
YnVmZmVyX2hlYWQoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpOwpleHRlcm4gc3RydWN0IGJ1ZmZl
cl9oZWFkICogZ2V0X3VudXNlZF9idWZmZXJfaGVhZChpbnQgYXN5bmMpOwoKZXh0ZXJuIGludCBi
cndfcGFnZShpbnQsIHN0cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRl
ZiBpbnQgKGdldF9ibG9ja190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFk
KixpbnQpOwoKCmV4dGVybiBpbnQgdHJ5X3RvX3JlbGVhc2VfcGFnZShzdHJ1Y3QgcGFnZSAqIHBh
Z2UsIGludCBnZnBfbWFzayk7CmV4dGVybiBpbnQgZGlzY2FyZF9iaF9wYWdlKHN0cnVjdCBwYWdl
ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgoKZXh0ZXJuIGludCBibG9ja19zeW1saW5rKHN0cnVj
dCBpbm9kZSAqLCBjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgYmxvY2tfd3JpdGVfZnVs
bF9wYWdlKHN0cnVjdCBwYWdlKiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBibG9ja19yZWFk
X2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tf
cHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2Nr
X3QqKTsKZXh0ZXJuIGludCBjb250X3ByZXBhcmVfd3JpdGUoc3RydWN0IHBhZ2UqLCB1bnNpZ25l
ZCwgdW5zaWduZWQsIGdldF9ibG9ja190KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nICopOwpleHRlcm4gaW50IGdlbmVyaWNfY29udF9leHBhbmQoc3RydWN0
IGlub2RlICppbm9kZSwgbG9mZl90IHNpemUpIDsKZXh0ZXJuIGludCBibG9ja19jb21taXRfd3Jp
dGUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsKZXh0ZXJu
IGludCBibG9ja19zeW5jX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgppbnQgZ2VuZXJpY19ibG9ja19i
bWFwKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9ja190ICopOwppbnQgZ2Vu
ZXJpY19jb21taXRfd3JpdGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQs
IHVuc2lnbmVkKTsKaW50IGJsb2NrX3RydW5jYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2Ug
KiwgbG9mZl90LCBnZXRfYmxvY2tfdCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2RpcmVjdF9JTyhp
bnQsIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCwg
Z2V0X2Jsb2NrX3QgKik7CmV4dGVybiBpbnQgd2FpdGZvcl9vbmVfcGFnZShzdHJ1Y3QgcGFnZSAq
KTsKZXh0ZXJuIGludCB3cml0ZW91dF9vbmVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKCmV4dGVybiBp
bnQgZ2VuZXJpY19maWxlX21tYXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0
ICopOwpleHRlcm4gaW50IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2NyaXB0b3JfdCAqIGRlc2Ms
IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBz
aXplKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hh
ciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3dyaXRl
KHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiB2
b2lkIGRvX2dlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCByZWFkX2Rl
c2NyaXB0b3JfdCAqLCByZWFkX2FjdG9yX3QpOwpleHRlcm4gbG9mZl90IG5vX2xsc2VlayhzdHJ1
Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBsb2ZmX3Qg
Z2VuZXJpY19maWxlX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50
IG9yaWdpbik7CmV4dGVybiBsb2ZmX3QgdmZzX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9m
Zl90IGxvZmZzZXQsIGludCBvcmlnaW4pOwpleHRlcm4gc3NpemVfdCBnZW5lcmljX3JlYWRfZGly
KHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgZ2Vu
ZXJpY19maWxlX29wZW4oc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICogZmlscCk7
CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBnZW5lcmljX3JvX2ZvcHM7CgpleHRlcm4g
aW50IHZmc19yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50LCBjb25zdCBjaGFy
ICopOwpleHRlcm4gaW50IHZmc19yZWFkbGlua19yZWFsKHN0cnVjdCBkZW50cnkgKiwgY2hhciAq
LCBpbnQpOwpleHRlcm4gaW50IHZmc19mb2xsb3dfbGluayhzdHJ1Y3QgbmFtZWlkYXRhICosIGNv
bnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcGFnZV9yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNo
YXIgKiwgaW50KTsKZXh0ZXJuIGludCBwYWdlX2ZvbGxvd19saW5rKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHBhZ2Vf
c3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKZXh0ZXJuIGludCB2ZnNfcmVhZGRpcihzdHJ1Y3Qg
ZmlsZSAqLCBmaWxsZGlyX3QsIHZvaWQgKik7CmV4dGVybiBpbnQgZGNhY2hlX2Rpcl9vcGVuKHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGludCBkY2FjaGVfZGlyX2Nsb3Nl
KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGxvZmZfdCBkY2FjaGVfZGly
X2xzZWVrKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgaW50KTsKZXh0ZXJuIGludCBkY2FjaGVfZGly
X2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBk
Y2FjaGVfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7CmV4dGVybiBz
dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRjYWNoZV9kaXJfb3BzOwoKaW50IGdldGF0dHJfZnVsbChz
dHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXQg
KnN0YXQpOwppbnQgZ2V0YXR0cl9taW5peChzdHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IGRl
bnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXQgKnN0YXQpOwoKZXh0ZXJuIGludCB2ZnNfc3RhdChj
aGFyICosIHN0cnVjdCBrc3RhdCAqKTsKZXh0ZXJuIGludCB2ZnNfbHN0YXQoY2hhciAqLCBzdHJ1
Y3Qga3N0YXQgKik7CmV4dGVybiBpbnQgdmZzX2ZzdGF0KGludCwgc3RydWN0IGtzdGF0ICopOwoK
ZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpnZXRfZnNfdHlwZShjb25zdCBjaGFyICpu
YW1lKTsKZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyKGtkZXZfdCk7CmV4dGVy
biB2b2lkIGRyb3Bfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0YXRpYyBpbmxpbmUg
aW50IGlzX21vdW50ZWQoa2Rldl90IGRldikKewogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAq
c2IgPSBnZXRfc3VwZXIoZGV2KTsKICAgICAgICBpZiAoc2IpIHsKICAgICAgICAgICAgICAgIGRy
b3Bfc3VwZXIoc2IpOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAg
IHJldHVybiAwOwp9CnVuc2lnbmVkIGxvbmcgZ2VuZXJhdGVfY2x1c3RlcihrZGV2X3QsIGludCBi
W10sIGludCk7CnVuc2lnbmVkIGxvbmcgZ2VuZXJhdGVfY2x1c3Rlcl9zd2FiMzIoa2Rldl90LCBp
bnQgYltdLCBpbnQpOwpleHRlcm4ga2Rldl90IFJPT1RfREVWOwpleHRlcm4gY2hhciByb290X2Rl
dmljZV9uYW1lW107CgoKZXh0ZXJuIHZvaWQgc2hvd19idWZmZXJzKHZvaWQpOwoKCgoKCmV4dGVy
biBzc2l6ZV90IGNoYXJfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90
ICopOwpleHRlcm4gc3NpemVfdCBibG9ja19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6
ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgcmVhZF9haGVhZFtdOwoKZXh0ZXJuIHNzaXplX3Qg
Y2hhcl93cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICop
OwpleHRlcm4gc3NpemVfdCBibG9ja193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICos
IHNpemVfdCwgbG9mZl90ICopOwoKZXh0ZXJuIGludCBmaWxlX2ZzeW5jKHN0cnVjdCBmaWxlICos
IHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2J1ZmZlcl9mZGF0YXN5
bmMoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVk
IGxvbmcgZW5kX2lkeCk7CmV4dGVybiBpbnQgZ2VuZXJpY19vc3luY19pbm9kZShzdHJ1Y3QgaW5v
ZGUgKiwgaW50KTsKCgoKCmV4dGVybiBpbnQgaW5vZGVfY2hhbmdlX29rKHN0cnVjdCBpbm9kZSAq
LCBzdHJ1Y3QgaWF0dHIgKik7CmV4dGVybiBpbnQgaW5vZGVfc2V0YXR0cihzdHJ1Y3QgaW5vZGUg
Kiwgc3RydWN0IGlhdHRyICopOwojIDE1OTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqbG9ja19wYXJlbnQoc3Ry
dWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGlyID0gZGdldChk
ZW50cnktPmRfcGFyZW50KTsKCiAgICAgICAgZG93bigmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAg
ICAgICAgcmV0dXJuIGRpcjsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVudHJ5ICpnZXRfcGFy
ZW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZ2V0KGRlbnRyeS0+
ZF9wYXJlbnQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrX2RpcihzdHJ1Y3QgZGVudHJ5
ICpkaXIpCnsKICAgICAgICB1cCgmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChk
aXIpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9kb3duKHN0cnVjdCBzZW1hcGhv
cmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIGlmIChzMSAhPSBzMikgewog
ICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBz
MikgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMjsK
ICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICBkb3duKHMxKTsKICAgICAgICB9CiAgICAgICAgZG93bihzMik7
Cn0KIyAxNjM2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0
aWMgaW5saW5lIHZvaWQgdHJpcGxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgaWYgKHMx
ICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2ln
bmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9u
ZykgczEgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzMyA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxv
bmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9y
ZSAqdG1wID0gczI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEg
PSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWdu
ZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMx
OyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24o
czEpOwogICAgICAgIH0gZWxzZSBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxv
bmcpIHMzKSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAg
ICAgICAgICAgICAgIHMzID0gczI7IHMyID0gdG1wOwogICAgICAgIH0KICAgICAgICBkb3duKHMy
KTsKICAgICAgICBkb3duKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91cChzdHJ1
Y3Qgc2VtYXBob3JlICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICB1cChzMSk7
CiAgICAgICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwp9CgpzdGF0aWMg
aW5saW5lIHZvaWQgdHJpcGxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgdXAoczEpOwogICAgICAg
IGlmIChzMSAhPSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKICAgICAgICB1cChzMyk7Cn0K
CnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfbG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0
IGRlbnRyeSAqZDIpCnsKICAgICAgICBkb3VibGVfZG93bigmZDEtPmRfaW5vZGUtPmlfc2VtLCAm
ZDItPmRfaW5vZGUtPmlfc2VtKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91bmxvY2so
c3RydWN0IGRlbnRyeSAqZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX3Vw
KCZkMS0+ZF9pbm9kZS0+aV9zZW0sJmQyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChk
MSk7CiAgICAgICAgZHB1dChkMik7Cn0KIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCiMgMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9oZWFkZXJf
c3RydWN0IHsKICAgICAgICBfX3UzMiB2ZXJzaW9uOwogICAgICAgIGludCBwaWQ7Cn0gKmNhcF91
c2VyX2hlYWRlcl90OwoKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9kYXRhX3N0cnVjdCB7CiAg
ICAgICAgX191MzIgZWZmZWN0aXZlOwogICAgICAgIF9fdTMyIHBlcm1pdHRlZDsKICAgICAgICBf
X3UzMiBpbmhlcml0YWJsZTsKfSAqY2FwX3VzZXJfZGF0YV90OwojIDU1ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCnR5cGVkZWYgX191MzIga2VybmVs
X2NhcF90OwojIDI4NiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FwYWJp
bGl0eS5oIgpleHRlcm4ga2VybmVsX2NhcF90IGNhcF9ic2V0OwojIDMxNCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgpzdGF0aWMgaW5saW5lIGtlcm5l
bF9jYXBfdCBjYXBfY29tYmluZShrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90IGIpCnsKICAg
ICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgfCAoYik7CiAgICAgcmV0dXJu
IGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnRlcnNlY3Qoa2VybmVs
X2NhcF90IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAg
KGRlc3QpID0gKGEpICYgKGIpOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtl
cm5lbF9jYXBfdCBjYXBfZHJvcChrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90IGRyb3ApCnsK
ICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgJiB+KGRyb3ApOwogICAg
IHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfaW52ZXJ0KGtl
cm5lbF9jYXBfdCBjKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gfihj
KTsKICAgICByZXR1cm4gZGVzdDsKfQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2JpbmZtdHMuaCIgMgojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9iaW5mbXRzLmgiCnN0cnVjdCBsaW51eF9iaW5wcm17CiAgICAgICAgY2hhciBidWZbMTI4
XTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZVszMl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBw
OwogICAgICAgIGludCBzaF9iYW5nOwogICAgICAgIHN0cnVjdCBmaWxlICogZmlsZTsKICAgICAg
ICBpbnQgZV91aWQsIGVfZ2lkOwogICAgICAgIGtlcm5lbF9jYXBfdCBjYXBfaW5oZXJpdGFibGUs
IGNhcF9wZXJtaXR0ZWQsIGNhcF9lZmZlY3RpdmU7CiAgICAgICAgaW50IGFyZ2MsIGVudmM7CiAg
ICAgICAgY2hhciAqIGZpbGVuYW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZGVyLCBleGVj
Owp9OwoKCgoKCnN0cnVjdCBsaW51eF9iaW5mbXQgewogICAgICAgIHN0cnVjdCBsaW51eF9iaW5m
bXQgKiBuZXh0OwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZTsKICAgICAgICBpbnQgKCps
b2FkX2JpbmFyeSkoc3RydWN0IGxpbnV4X2JpbnBybSAqLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3Mp
OwogICAgICAgIGludCAoKmxvYWRfc2hsaWIpKHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAo
KmNvcmVfZHVtcCkobG9uZyBzaWduciwgc3RydWN0IHB0X3JlZ3MgKiByZWdzLCBzdHJ1Y3QgZmls
ZSAqIGZpbGUpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWluX2NvcmVkdW1wOwp9OwoKZXh0ZXJu
IGludCByZWdpc3Rlcl9iaW5mbXQoc3RydWN0IGxpbnV4X2JpbmZtdCAqKTsKZXh0ZXJuIGludCB1
bnJlZ2lzdGVyX2JpbmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICopOwoKZXh0ZXJuIGludCBwcmVw
YXJlX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJtICopOwpleHRlcm4gdm9pZCByZW1vdmVfYXJn
X3plcm8oc3RydWN0IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIGludCBzZWFyY2hfYmluYXJ5X2hh
bmRsZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqLHN0cnVjdCBwdF9yZWdzICopOwpleHRlcm4gaW50
IGZsdXNoX29sZF9leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBz
ZXR1cF9hcmdfcGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pOwpleHRlcm4gaW50IGNv
cHlfc3RyaW5ncyhpbnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3RydWN0IGxpbnV4X2JpbnBybSAqYnBy
bSk7CmV4dGVybiBpbnQgY29weV9zdHJpbmdzX2tlcm5lbChpbnQgYXJnYyxjaGFyICoqIGFyZ3Ys
c3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CmV4dGVybiB2b2lkIGNvbXB1dGVfY3JlZHMoc3Ry
dWN0IGxpbnV4X2JpbnBybSAqYmlucHJtKTsKZXh0ZXJuIGludCBkb19jb3JlZHVtcChsb25nIHNp
Z25yLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwpleHRlcm4gdm9pZCBzZXRfYmluZm10KHN0cnVj
dCBsaW51eF9iaW5mbXQgKm5ldyk7CiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3NjaGVkLmgiIDIKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC90aW1lcy5oIiAxCgoKCnN0cnVjdCB0bXMgewogICAgICAgIGNsb2NrX3QgdG1zX3V0aW1l
OwogICAgICAgIGNsb2NrX3QgdG1zX3N0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX2N1dGltZTsK
ICAgICAgICBjbG9ja190IHRtc19jc3RpbWU7Cn07CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC90aW1leC5oIiAxCiMgMTUyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS90
aW1leC5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS90aW1leC5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tc3IuaCIgMQojIDExICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGltZXguaCIgMgojIDM3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGltZXguaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGxvbmcgY3ljbGVzX3Q7CgpleHRlcm4gY3ljbGVzX3QgY2FjaGVmbHVzaF90aW1lOwoKc3RhdGlj
IGlubGluZSBjeWNsZXNfdCBnZXRfY3ljbGVzICh2b2lkKQp7CgoKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBsb25nIHJldDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9
QSIgKHJldCkpOwogICAgICAgIHJldHVybiByZXQ7Cgp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyBj
cHVfa2h6OwojIDE1MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZXgu
aCIgMgojIDE2MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZXguaCIK
c3RydWN0IHRpbWV4IHsKICAgICAgICB1bnNpZ25lZCBpbnQgbW9kZXM7CiAgICAgICAgbG9uZyBv
ZmZzZXQ7CiAgICAgICAgbG9uZyBmcmVxOwogICAgICAgIGxvbmcgbWF4ZXJyb3I7CiAgICAgICAg
bG9uZyBlc3RlcnJvcjsKICAgICAgICBpbnQgc3RhdHVzOwogICAgICAgIGxvbmcgY29uc3RhbnQ7
CiAgICAgICAgbG9uZyBwcmVjaXNpb247CiAgICAgICAgbG9uZyB0b2xlcmFuY2U7CgoKICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCB0aW1lOwogICAgICAgIGxvbmcgdGljazsKCiAgICAgICAgbG9uZyBw
cHNmcmVxOwogICAgICAgIGxvbmcgaml0dGVyOwogICAgICAgIGludCBzaGlmdDsKICAgICAgICBs
b25nIHN0YWJpbDsKICAgICAgICBsb25nIGppdGNudDsKICAgICAgICBsb25nIGNhbGNudDsKICAg
ICAgICBsb25nIGVycmNudDsKICAgICAgICBsb25nIHN0YmNudDsKCiAgICAgICAgaW50IDozMjsg
aW50IDozMjsgaW50IDozMjsgaW50IDozMjsKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQg
OjMyOyBpbnQgOjMyOwogICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7
Cn07CiMgMjUzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1leC5oIgpl
eHRlcm4gbG9uZyB0aWNrOwpleHRlcm4gaW50IHRpY2thZGo7CgoKCgpleHRlcm4gaW50IHRpbWVf
c3RhdGU7CmV4dGVybiBpbnQgdGltZV9zdGF0dXM7CmV4dGVybiBsb25nIHRpbWVfb2Zmc2V0Owpl
eHRlcm4gbG9uZyB0aW1lX2NvbnN0YW50OwpleHRlcm4gbG9uZyB0aW1lX3RvbGVyYW5jZTsKZXh0
ZXJuIGxvbmcgdGltZV9wcmVjaXNpb247CmV4dGVybiBsb25nIHRpbWVfbWF4ZXJyb3I7CmV4dGVy
biBsb25nIHRpbWVfZXN0ZXJyb3I7CgpleHRlcm4gbG9uZyB0aW1lX3BoYXNlOwpleHRlcm4gbG9u
ZyB0aW1lX2ZyZXE7CmV4dGVybiBsb25nIHRpbWVfYWRqOwpleHRlcm4gbG9uZyB0aW1lX3JlZnRp
bWU7CgpleHRlcm4gbG9uZyB0aW1lX2FkanVzdDsKCgpleHRlcm4gbG9uZyBwcHNfb2Zmc2V0Owpl
eHRlcm4gbG9uZyBwcHNfaml0dGVyOwpleHRlcm4gbG9uZyBwcHNfZnJlcTsKZXh0ZXJuIGxvbmcg
cHBzX3N0YWJpbDsKZXh0ZXJuIGxvbmcgcHBzX3ZhbGlkOwoKCmV4dGVybiBpbnQgcHBzX3NoaWZ0
OwpleHRlcm4gbG9uZyBwcHNfaml0Y250OwpleHRlcm4gbG9uZyBwcHNfY2FsY250OwpleHRlcm4g
bG9uZyBwcHNfZXJyY250OwpleHRlcm4gbG9uZyBwcHNfc3RiY250OwojIDE1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiIDEKIyAxMDAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIgp0eXBlZGVmIHN0cnVjdCByYl9ub2RlX3MKewog
ICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9wYXJlbnQ7CiAgICAgICAgaW50IHJiX2NvbG9y
OwoKCiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX3JpZ2h0OwogICAgICAgIHN0cnVjdCBy
Yl9ub2RlX3MgKiByYl9sZWZ0Owp9CnJiX25vZGVfdDsKCnR5cGVkZWYgc3RydWN0IHJiX3Jvb3Rf
cwp7CiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX25vZGU7Cn0KcmJfcm9vdF90OwoKCgoK
CmV4dGVybiB2b2lkIHJiX2luc2VydF9jb2xvcihyYl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwpl
eHRlcm4gdm9pZCByYl9lcmFzZShyYl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwoKc3RhdGljIGlu
bGluZSB2b2lkIHJiX2xpbmtfbm9kZShyYl9ub2RlX3QgKiBub2RlLCByYl9ub2RlX3QgKiBwYXJl
bnQsIHJiX25vZGVfdCAqKiByYl9saW5rKQp7CiAgICAgICAgbm9kZS0+cmJfcGFyZW50ID0gcGFy
ZW50OwogICAgICAgIG5vZGUtPnJiX2NvbG9yID0gMDsKICAgICAgICBub2RlLT5yYl9sZWZ0ID0g
bm9kZS0+cmJfcmlnaHQgPSAoKHZvaWQgKikwKTsKCiAgICAgICAgKnJiX2xpbmsgPSBub2RlOwp9
CiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCgoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tbXUuaCIgMQoKCgoKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHZvaWQgKnNlZ21lbnRzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgY3B1dmFsaWQ7Cn0gbW1fY29udGV4dF90OwojIDIyICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L3NtcC5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3NtcC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zbXAu
aCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc21wLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAxCiMgMTggIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vYWNwaS5oIiAxCiMgMTE0ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9hc20vYWNwaS5oIgpleHRlcm4gaW50IGFjcGlfbGFwaWM7CgoKCgpleHRlcm4g
aW50IGFjcGlfaW9hcGljOwojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L2FjcGkuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2F2ZWRfZWlwOwpleHRlcm4gdW5zaWduZWQg
bG9uZyBzYXZlZF9lc3A7CmV4dGVybiB1bnNpZ25lZCBsb25nIHNhdmVkX2VicDsKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgc2F2ZWRfZWJ4OwpleHRlcm4gdW5zaWduZWQgbG9uZyBzYXZlZF9lc2k7CmV4
dGVybiB1bnNpZ25lZCBsb25nIHNhdmVkX2VkaTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBhY3BpX3Nh
dmVfcmVnaXN0ZXJfc3RhdGUodW5zaWduZWQgbG9uZyByZXR1cm5fcG9pbnQpCnsKICAgICAgICBz
YXZlZF9laXAgPSByZXR1cm5fcG9pbnQ7CiAgICAgICAgYXNtIHZvbGF0aWxlICgibW92bCAlJWVz
cCwoJTApIiA6ICI9bSIgKHNhdmVkX2VzcCkpOwogICAgICAgIGFzbSB2b2xhdGlsZSAoIm1vdmwg
JSVlYnAsKCUwKSIgOiAiPW0iIChzYXZlZF9lYnApKTsKICAgICAgICBhc20gdm9sYXRpbGUgKCJt
b3ZsICUlZWJ4LCglMCkiIDogIj1tIiAoc2F2ZWRfZWJ4KSk7CiAgICAgICAgYXNtIHZvbGF0aWxl
ICgibW92bCAlJWVkaSwoJTApIiA6ICI9bSIgKHNhdmVkX2VkaSkpOwogICAgICAgIGFzbSB2b2xh
dGlsZSAoIm1vdmwgJSVlc2ksKCUwKSIgOiAiPW0iIChzYXZlZF9lc2kpKTsKfQoKCgoKCmV4dGVy
biBpbnQgYWNwaV9zYXZlX3N0YXRlX21lbSh2b2lkKTsKZXh0ZXJuIGludCBhY3BpX3NhdmVfc3Rh
dGVfZGlzayh2b2lkKTsKZXh0ZXJuIHZvaWQgYWNwaV9yZXN0b3JlX3N0YXRlX21lbSh2b2lkKTsK
CmV4dGVybiB1bnNpZ25lZCBsb25nIGFjcGlfd2FrZXVwX2FkZHJlc3M7CgpleHRlcm4gdm9pZCBk
b19zdXNwZW5kX2xvd2xldmVsX3M0YmlvcyhpbnQgcmVzdW1lKTsKCgpleHRlcm4gdm9pZCBhY3Bp
X3Jlc2VydmVfYm9vdG1lbSh2b2lkKTsKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L2FwaWNkZWYuaCIgMQojIDEzNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2Fw
aWNkZWYuaCIKc3RydWN0IGxvY2FsX2FwaWMgewoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAxOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAyOwoKICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAg
ICAgICAgICAgICAgICAgICBwaHlzX2FwaWNfaWQgOiA0LAogICAgICAgICAgICAgICAgICAgICAg
ICBfX3Jlc2VydmVkXzIgOiA0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRbM107CiAgICAgICAgfSBpZDsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlcnNpb24gOiA4LAogICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzEgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBtYXhfbHZ0IDog
OCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogODsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gdmVyc2lvbjsKCiAgICAg
ICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMzsK
CiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZl
ZF8wNDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8wNTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8wNjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf
MSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAg
ICAgICB9IHRwcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8xIDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8y
WzNdOwogICAgICAgIH0gYXByOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzEgOiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl
c2VydmVkXzJbM107CiAgICAgICAgfSBwcHI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgZW9pOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVz
ZXJ2ZWRbM107CiAgICAgICAgfSBlb2k7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDc7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxfZGVzdCA6IDg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZF8yWzNdOwogICAgICAgIH0gbGRyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI4LAogICAgICAgICAgICAgICAgICAg
ICAgICBtb2RlbCA6IDQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8y
WzNdOwogICAgICAgIH0gZGZyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHNwdXJpb3VzX3ZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGFw
aWNfZW5hYmxlZCA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzX2NwdSA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDIyOwogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICB9IHN2cjsKCiAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gaXNyIFs4XTsKCiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gdG1yIFs4XTsK
CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gaXJy
IFs4XTsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlbmRfY3NfZXJyb3IgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVfY3NfZXJyb3IgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbmRfYWNjZXB0X2Vycm9yIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWNlaXZlX2FjY2VwdF9lcnJvciA6IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZW5kX2lsbGVnYWxfdmVjdG9yIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWNlaXZlX2lsbGVnYWxfdmVjdG9yIDogMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbGxlZ2FsX3JlZ2lzdGVyX2FkZHJlc3MgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDI0OwogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgICAgICAgICAgfSBlcnJv
cl9iaXRzOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGVycm9yczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICAgICAgICAgIH0gYWxsX2Vycm9yczsKICAgICAgICB9
IGVzcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8wODsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8wOTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRbNF07IH0gX19yZXNlcnZlZF8xMDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9f
cmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMjsKCiAgICAgICAgc3RydWN0IHsgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMzsKCiAgICAgICAgc3RydWN0
IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNDsKCiAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAg
ICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdGluYXRpb25fbW9kZSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5
X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGxldmVsIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
dHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZCA6IDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fcmVzZXJ2ZWRfMyA6IDEyOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVz
ZXJ2ZWRfNFszXTsKICAgICAgICB9IGljcjE7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaHlzX2Rlc3QgOiA0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzMgOiAyNCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2Rlc3QgOiA4OwogICAgICAgICAgICAg
ICAgfSBkZXN0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsK
ICAgICAgICB9IGljcjI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDog
NCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAg
bWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyX21vZGUgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMgOiAxNDsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAgfSBsdnRfdGltZXI7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTU7CgogICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAg
ICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5
X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAg
ICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBf
X3Jlc2VydmVkXzMgOiAxNTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVk
XzRbM107CiAgICAgICAgfSBsdnRfcGM7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZl
cnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHBvbGFyaXR5IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2ly
ciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8y
IDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAg
ICAgIH0gbHZ0X2xpbnQwOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUg
OiAzLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAg
ICBwb2xhcml0eSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pcnIgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDE1Owog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICB9IGx2
dF9saW50MTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2
ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA0LAogICAg
ICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAg
ICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTU7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gbHZ0X2Vycm9yOwoK
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluaXRpYWxfY291
bnQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAg
IH0gdGltZXJfaWNyOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgY3Vycl9jb3VudDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9jY3I7CgogICAgICAgIHN0cnVjdCB7
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTY7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTc7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTg7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMTk7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGl2
aXNvciA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI4OwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHRpbWVy
X2RjcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8yMDsKCn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwojIDIwICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyA1MSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgplbnVtIGZpeGVkX2FkZHJlc3NlcyB7CgogICAg
ICAgIEZJWF9BUElDX0JBU0UsCgoKICAgICAgICBGSVhfSU9fQVBJQ19CQVNFXzAsCiAgICAgICAg
RklYX0lPX0FQSUNfQkFTRV9FTkQgPSBGSVhfSU9fQVBJQ19CQVNFXzAgKyA4IC0xLAojIDc2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vZml4bWFwLmgiCiAgICAgICAgRklYX0FD
UElfQkVHSU4sCiAgICAgICAgRklYX0FDUElfRU5EID0gRklYX0FDUElfQkVHSU4gKyA0IC0gMSwK
CiAgICAgICAgX19lbmRfb2ZfcGVybWFuZW50X2ZpeGVkX2FkZHJlc3NlcywKCgogICAgICAgIEZJ
WF9CVE1BUF9FTkQgPSBfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzLAogICAgICAg
IEZJWF9CVE1BUF9CRUdJTiA9IEZJWF9CVE1BUF9FTkQgKyAxNiAtIDEsCiAgICAgICAgX19lbmRf
b2ZfZml4ZWRfYWRkcmVzc2VzCn07CgpleHRlcm4gdm9pZCBfX3NldF9maXhtYXAgKGVudW0gZml4
ZWRfYWRkcmVzc2VzIGlkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgcGh5cywgcGdwcm90X3QgZmxhZ3MpOwojIDExMCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgpleHRlcm4gdm9pZCBfX3RoaXNfZml4bWFw
X2RvZXNfbm90X2V4aXN0KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcg
Zml4X3RvX3ZpcnQoY29uc3QgdW5zaWduZWQgaW50IGlkeCkKewojIDEyOCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIGlmIChpZHggPj0gX19lbmRf
b2ZfZml4ZWRfYWRkcmVzc2VzKQogICAgICAgICAgICAgICAgX190aGlzX2ZpeG1hcF9kb2VzX25v
dF9leGlzdCgpOwoKICAgICAgICByZXR1cm4gKCgweGZmZmZlMDAwVUwpIC0gKChpZHgpIDw8IDEy
KSk7Cn0KIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NtcC5oIiAyCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIgMQojIDI4ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vbXBzcGVjLmgiCnN0cnVjdCBpbnRlbF9t
cF9mbG9hdGluZwp7CiAgICAgICAgY2hhciBtcGZfc2lnbmF0dXJlWzRdOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgbXBmX3BoeXNwdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGZfbGVuZ3RoOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX3NwZWNpZmljYXRpb247CiAgICAgICAgdW5zaWduZWQg
Y2hhciBtcGZfY2hlY2tzdW07CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGZfZmVhdHVyZTE7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBtcGZfZmVhdHVyZTI7CiAgICAgICAgdW5zaWduZWQgY2hhciBt
cGZfZmVhdHVyZTM7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGZfZmVhdHVyZTQ7CiAgICAgICAg
dW5zaWduZWQgY2hhciBtcGZfZmVhdHVyZTU7Cn07CgpzdHJ1Y3QgbXBfY29uZmlnX3RhYmxlCnsK
ICAgICAgICBjaGFyIG1wY19zaWduYXR1cmVbNF07CgogICAgICAgIHVuc2lnbmVkIHNob3J0IG1w
Y19sZW5ndGg7CiAgICAgICAgY2hhciBtcGNfc3BlYzsKICAgICAgICBjaGFyIG1wY19jaGVja3N1
bTsKICAgICAgICBjaGFyIG1wY19vZW1bOF07CiAgICAgICAgY2hhciBtcGNfcHJvZHVjdGlkWzEy
XTsKICAgICAgICB1bnNpZ25lZCBsb25nIG1wY19vZW1wdHI7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgbXBjX29lbXNpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbXBjX29lbWNvdW50OwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbXBjX2xhcGljOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVzZXJ2
ZWQ7Cn07CiMgNjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIK
c3RydWN0IG1wY19jb25maWdfcHJvY2Vzc29yCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY190
eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2FwaWNpZDsKICAgICAgICB1bnNpZ25lZCBj
aGFyIG1wY19hcGljdmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2NwdWZsYWc7CgoKICAg
ICAgICB1bnNpZ25lZCBsb25nIG1wY19jcHVmZWF0dXJlOwoKCgogICAgICAgIHVuc2lnbmVkIGxv
bmcgbXBjX2ZlYXR1cmVmbGFnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbXBjX3Jlc2VydmVkWzJd
Owp9OwoKc3RydWN0IG1wY19jb25maWdfYnVzCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY190
eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2J1c2lkOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgbXBjX2J1c3R5cGVbNl0gX19hdHRyaWJ1dGUoKHBhY2tlZCkpOwp9OwojIDExMCAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL21wc3BlYy5oIgpzdHJ1Y3QgbXBjX2NvbmZpZ19p
b2FwaWMKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBtcGNfYXBpY2lkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2FwaWN2ZXI7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBtcGNfZmxhZ3M7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgbXBjX2Fw
aWNhZGRyOwp9OwoKc3RydWN0IG1wY19jb25maWdfaW50c3JjCnsKICAgICAgICB1bnNpZ25lZCBj
aGFyIG1wY190eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2lycXR5cGU7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgbXBjX2lycWZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfc3Jj
YnVzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3NyY2J1c2lycTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIG1wY19kc3RhcGljOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2RzdGlycTsKfTsK
CmVudW0gbXBfaXJxX3NvdXJjZV90eXBlcyB7CiAgICAgICAgbXBfSU5UID0gMCwKICAgICAgICBt
cF9OTUkgPSAxLAogICAgICAgIG1wX1NNSSA9IDIsCiAgICAgICAgbXBfRXh0SU5UID0gMwp9OwoK
CgoKCgpzdHJ1Y3QgbXBjX2NvbmZpZ19saW50c3JjCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1w
Y190eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2lycXR5cGU7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgbXBjX2lycWZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfc3JjYnVzaWQ7
CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfc3JjYnVzaXJxOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgbXBjX2Rlc3RhcGljOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19kZXN0YXBpY2xpbnQ7
Cn07CgpzdHJ1Y3QgbXBfY29uZmlnX29lbXRhYmxlCnsKICAgICAgICBjaGFyIG9lbV9zaWduYXR1
cmVbNF07CgogICAgICAgIHVuc2lnbmVkIHNob3J0IG9lbV9sZW5ndGg7CiAgICAgICAgY2hhciBv
ZW1fcmV2OwogICAgICAgIGNoYXIgb2VtX2NoZWNrc3VtOwogICAgICAgIGNoYXIgbXBjX29lbVs4
XTsKfTsKCnN0cnVjdCBtcGNfY29uZmlnX3RyYW5zbGF0aW9uCnsKICAgICAgICB1bnNpZ25lZCBj
aGFyIG1wY190eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdHJhbnNfbGVuOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgdHJhbnNfdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRyYW5zX3F1YWQ7
CiAgICAgICAgdW5zaWduZWQgY2hhciB0cmFuc19nbG9iYWw7CiAgICAgICAgdW5zaWduZWQgY2hh
ciB0cmFuc19sb2NhbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0cmFuc19yZXNlcnZlZDsKfTsK
IyAxOTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKZW51bSBt
cF9idXN0eXBlIHsKICAgICAgICBNUF9CVVNfSVNBID0gMSwKICAgICAgICBNUF9CVVNfRUlTQSwK
ICAgICAgICBNUF9CVVNfUENJLAogICAgICAgIE1QX0JVU19NQ0EKfTsKZXh0ZXJuIGludCAqbXBf
YnVzX2lkX3RvX3R5cGU7CmV4dGVybiBpbnQgKm1wX2J1c19pZF90b19ub2RlOwpleHRlcm4gaW50
ICptcF9idXNfaWRfdG9fbG9jYWw7CmV4dGVybiBpbnQgKm1wX2J1c19pZF90b19wY2lfYnVzOwpl
eHRlcm4gaW50IHF1YWRfbG9jYWxfdG9fbXBfYnVzX2lkIFszMi80XVs0XTsKCmV4dGVybiB1bnNp
Z25lZCBpbnQgYm9vdF9jcHVfcGh5c2ljYWxfYXBpY2lkOwpleHRlcm4gdW5zaWduZWQgbG9uZyBw
aHlzX2NwdV9wcmVzZW50X21hcDsKZXh0ZXJuIGludCBzbXBfZm91bmRfY29uZmlnOwpleHRlcm4g
dm9pZCBmaW5kX3NtcF9jb25maWcgKHZvaWQpOwpleHRlcm4gdm9pZCBnZXRfc21wX2NvbmZpZyAo
dm9pZCk7CmV4dGVybiBpbnQgbnJfaW9hcGljczsKZXh0ZXJuIGludCBhcGljX3ZlcnNpb24gWzE2
XTsKZXh0ZXJuIGludCBtcF9pcnFfZW50cmllczsKZXh0ZXJuIHN0cnVjdCBtcGNfY29uZmlnX2lu
dHNyYyAqbXBfaXJxczsKZXh0ZXJuIGludCBtcGNfZGVmYXVsdF90eXBlOwpleHRlcm4gaW50IG1w
X2N1cnJlbnRfcGNpX2lkOwpleHRlcm4gdW5zaWduZWQgbG9uZyBtcF9sYXBpY19hZGRyOwpleHRl
cm4gaW50IHBpY19tb2RlOwpleHRlcm4gaW50IHVzaW5nX2FwaWNfdGltZXI7CgoKZXh0ZXJuIHZv
aWQgbXBfcmVnaXN0ZXJfbGFwaWMgKHU4IGlkLCB1OCBlbmFibGVkKTsKZXh0ZXJuIHZvaWQgbXBf
cmVnaXN0ZXJfbGFwaWNfYWRkcmVzcyAodTY0IGFkZHJlc3MpOwoKCmV4dGVybiB2b2lkIG1wX3Jl
Z2lzdGVyX2lvYXBpYyAodTggaWQsIHUzMiBhZGRyZXNzLCB1MzIgaXJxX2Jhc2UpOwpleHRlcm4g
dm9pZCBtcF9vdmVycmlkZV9sZWdhY3lfaXJxICh1OCBidXNfaXJxLCB1OCBwb2xhcml0eSwgdTgg
dHJpZ2dlciwgdTMyIGdsb2JhbF9pcnEpOwpleHRlcm4gdm9pZCBtcF9jb25maWdfYWNwaV9sZWdh
Y3lfaXJxcyAodm9pZCk7CmV4dGVybiB2b2lkIG1wX2NvbmZpZ19pb2FwaWNfZm9yX3NjaShpbnQg
aXJxKTsKZXh0ZXJuIHZvaWQgbXBfcGFyc2VfcHJ0ICh2b2lkKTsKIyAxOCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL3NtcC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9pb19hcGljLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL2lvX2FwaWMuaCIKc3RydWN0IElPX0FQSUNfcmVnXzAwIHsKICAgICAgICBfX3Uz
MiBfX3Jlc2VydmVkXzIgOiAxNCwKICAgICAgICAgICAgICAgIExUUyA6IDEsCiAgICAgICAgICAg
ICAgICBkZWxpdmVyeV90eXBlIDogMSwKICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDgs
CiAgICAgICAgICAgICAgICBJRCA6IDQsCiAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzAgOiA0
Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCnN0cnVjdCBJT19BUElDX3JlZ18wMSB7CiAg
ICAgICAgX191MzIgdmVyc2lvbiA6IDgsCiAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA3
LAogICAgICAgICAgICAgICAgUFJRIDogMSwKICAgICAgICAgICAgICAgIGVudHJpZXMgOiA4LAog
ICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogODsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2Vk
KSk7CgpzdHJ1Y3QgSU9fQVBJQ19yZWdfMDIgewogICAgICAgIF9fdTMyIF9fcmVzZXJ2ZWRfMiA6
IDI0LAogICAgICAgICAgICAgICAgYXJiaXRyYXRpb24gOiA0LAogICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8xIDogNDsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CgoKCgpleHRlcm4gaW50
IG5yX2lvYXBpY3M7CmV4dGVybiBpbnQgbnJfaW9hcGljX3JlZ2lzdGVyc1s4XTsKCmVudW0gaW9h
cGljX2lycV9kZXN0aW5hdGlvbl90eXBlcyB7CiAgICAgICAgZGVzdF9GaXhlZCA9IDAsCiAgICAg
ICAgZGVzdF9Mb3dlc3RQcmlvID0gMSwKICAgICAgICBkZXN0X1NNSSA9IDIsCiAgICAgICAgZGVz
dF9fcmVzZXJ2ZWRfMSA9IDMsCiAgICAgICAgZGVzdF9OTUkgPSA0LAogICAgICAgIGRlc3RfSU5J
VCA9IDUsCiAgICAgICAgZGVzdF9fcmVzZXJ2ZWRfMiA9IDYsCiAgICAgICAgZGVzdF9FeHRJTlQg
PSA3Cn07CgpzdHJ1Y3QgSU9fQVBJQ19yb3V0ZV9lbnRyeSB7CiAgICAgICAgX191MzIgdmVjdG9y
IDogOCwKICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAoKCgogICAgICAgICAgICAg
ICAgZGVzdF9tb2RlIDogMSwKICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAg
ICAgICAgICAgICAgICBwb2xhcml0eSA6IDEsCiAgICAgICAgICAgICAgICBpcnIgOiAxLAogICAg
ICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAg
ICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDE1OwoKICAgICAgICB1bmlvbiB7IHN0cnVjdCB7IF9f
dTMyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEg
OiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNpY2FsX2Rl
c3QgOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8yIDogNDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBwaHlzaWNhbDsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCB7IF9fdTMyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ljYWxfZGVzdCA6IDg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0g
bG9naWNhbDsKICAgICAgICB9IGRlc3Q7Cgp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCgoK
CgoKZXh0ZXJuIHN0cnVjdCBtcGNfY29uZmlnX2lvYXBpYyBtcF9pb2FwaWNzWzhdOwoKCmV4dGVy
biBpbnQgbXBfaXJxX2VudHJpZXM7CgoKZXh0ZXJuIHN0cnVjdCBtcGNfY29uZmlnX2ludHNyYyAq
bXBfaXJxczsKCgpleHRlcm4gaW50IG1wY19kZWZhdWx0X3R5cGU7CgpzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGludCBpb19hcGljX3JlYWQodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCBy
ZWcpCnsKICAgICAgICAqKCh2b2xhdGlsZSBpbnQgKikoKCgweGZmZmZlMDAwVUwpIC0gKChGSVhf
SU9fQVBJQ19CQVNFXzAgKyBhcGljKSA8PCAxMikpICsgKG1wX2lvYXBpY3NbYXBpY10ubXBjX2Fw
aWNhZGRyICYgfih+KCgxVUwgPDwgMTIpLTEpKSkpKSA9IHJlZzsKICAgICAgICByZXR1cm4gKigo
KHZvbGF0aWxlIGludCAqKSgoKDB4ZmZmZmUwMDBVTCkgLSAoKEZJWF9JT19BUElDX0JBU0VfMCAr
IGFwaWMpIDw8IDEyKSkgKyAobXBfaW9hcGljc1thcGljXS5tcGNfYXBpY2FkZHIgJiB+KH4oKDFV
TCA8PCAxMiktMSkpKSkpKzQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW9fYXBpY193cml0ZSh1
bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZhbHVlKQp7
CiAgICAgICAgKigodm9sYXRpbGUgaW50ICopKCgoMHhmZmZmZTAwMFVMKSAtICgoRklYX0lPX0FQ
SUNfQkFTRV8wICsgYXBpYykgPDwgMTIpKSArIChtcF9pb2FwaWNzW2FwaWNdLm1wY19hcGljYWRk
ciAmIH4ofigoMVVMIDw8IDEyKS0xKSkpKSkgPSByZWc7CiAgICAgICAgKigoKHZvbGF0aWxlIGlu
dCAqKSgoKDB4ZmZmZmUwMDBVTCkgLSAoKEZJWF9JT19BUElDX0JBU0VfMCArIGFwaWMpIDw8IDEy
KSkgKyAobXBfaW9hcGljc1thcGljXS5tcGNfYXBpY2FkZHIgJiB+KH4oKDFVTCA8PCAxMiktMSkp
KSkpKzQpID0gdmFsdWU7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgaW9fYXBpY19tb2RpZnko
dW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCB2YWx1ZSkKewogICAgICAgICooKCh2b2xh
dGlsZSBpbnQgKikoKCgweGZmZmZlMDAwVUwpIC0gKChGSVhfSU9fQVBJQ19CQVNFXzAgKyBhcGlj
KSA8PCAxMikpICsgKG1wX2lvYXBpY3NbYXBpY10ubXBjX2FwaWNhZGRyICYgfih+KCgxVUwgPDwg
MTIpLTEpKSkpKSs0KSA9IHZhbHVlOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGlvX2FwaWNf
c3luYyh1bnNpZ25lZCBpbnQgYXBpYykKewogICAgICAgICh2b2lkKSAqKCgodm9sYXRpbGUgaW50
ICopKCgoMHhmZmZmZTAwMFVMKSAtICgoRklYX0lPX0FQSUNfQkFTRV8wICsgYXBpYykgPDwgMTIp
KSArIChtcF9pb2FwaWNzW2FwaWNdLm1wY19hcGljYWRkciAmIH4ofigoMVVMIDw8IDEyKS0xKSkp
KSkrNCk7Cn0KCgpleHRlcm4gaW50IHNraXBfaW9hcGljX3NldHVwOwojIDE0OCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2lvX2FwaWMuaCIKZXh0ZXJuIGludCBpb19hcGljX2dl
dF91bmlxdWVfaWQgKGludCBpb2FwaWMsIGludCBhcGljX2lkKTsKZXh0ZXJuIGludCBpb19hcGlj
X2dldF92ZXJzaW9uIChpbnQgaW9hcGljKTsKZXh0ZXJuIGludCBpb19hcGljX2dldF9yZWRpcl9l
bnRyaWVzIChpbnQgaW9hcGljKTsKZXh0ZXJuIGludCBpb19hcGljX3NldF9wY2lfcm91dGluZyAo
aW50IGlvYXBpYywgaW50IHBpbiwgaW50IGlycSk7CiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9zbXAuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vYXBpYy5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3BtLmgiIDEKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcG0u
aCIKZW51bQp7CiAgICAgICAgUE1fU1VTUEVORCwKICAgICAgICBQTV9SRVNVTUUsCgogICAgICAg
IFBNX1NBVkVfU1RBVEUsCgoKICAgICAgICBQTV9TRVRfV0FLRVVQLAoKCiAgICAgICAgUE1fR0VU
X1JFU09VUkNFUywKICAgICAgICBQTV9TRVRfUkVTT1VSQ0VTLAoKCiAgICAgICAgUE1fRUpFQ1Qs
CiAgICAgICAgUE1fTE9DSywKfTsKCnR5cGVkZWYgaW50IHBtX3JlcXVlc3RfdDsKCgoKCmVudW0K
ewogICAgICAgIFBNX1VOS05PV05fREVWID0gMCwKICAgICAgICBQTV9TWVNfREVWLAogICAgICAg
IFBNX1BDSV9ERVYsCiAgICAgICAgUE1fVVNCX0RFViwKICAgICAgICBQTV9TQ1NJX0RFViwKICAg
ICAgICBQTV9JU0FfREVWLAogICAgICAgIFBNX01URF9ERVYsCn07Cgp0eXBlZGVmIGludCBwbV9k
ZXZfdDsKCgoKCmVudW0KewogICAgICAgIFBNX1NZU19VTktOT1dOID0gMHgwMDAwMDAwMCwKICAg
ICAgICBQTV9TWVNfS0JDID0gMHg0MWQwMDMwMywKICAgICAgICBQTV9TWVNfQ09NID0gMHg0MWQw
MDUwMCwKICAgICAgICBQTV9TWVNfSVJEQSA9IDB4NDFkMDA1MTAsCiAgICAgICAgUE1fU1lTX0ZE
QyA9IDB4NDFkMDA3MDAsCiAgICAgICAgUE1fU1lTX1ZHQSA9IDB4NDFkMDA5MDAsCiAgICAgICAg
UE1fU1lTX1BDTUNJQSA9IDB4NDFkMDBlMDAsCn07CiMgOTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L3BtLmgiCnN0cnVjdCBwbV9kZXY7Cgp0eXBlZGVmIGludCAoKnBtX2Nh
bGxiYWNrKShzdHJ1Y3QgcG1fZGV2ICpkZXYsIHBtX3JlcXVlc3RfdCBycXN0LCB2b2lkICpkYXRh
KTsKCgoKCnN0cnVjdCBwbV9kZXYKewogICAgICAgIHBtX2Rldl90IHR5cGU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBpZDsKICAgICAgICBwbV9jYWxsYmFjayBjYWxsYmFjazsKICAgICAgICB2b2lk
ICpkYXRhOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcmV2X3N0YXRlOwoKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGVudHJ5Owp9OwoKCgpleHRlcm4gaW50IHBtX2FjdGl2ZTsKCgoKCgoKc3Ry
dWN0IHBtX2RldiAqcG1fcmVnaXN0ZXIocG1fZGV2X3QgdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcG1f
Y2FsbGJhY2sgY2FsbGJhY2spOwoKCgoKdm9pZCBwbV91bnJlZ2lzdGVyKHN0cnVjdCBwbV9kZXYg
KmRldik7CgoKCgp2b2lkIHBtX3VucmVnaXN0ZXJfYWxsKHBtX2NhbGxiYWNrIGNhbGxiYWNrKTsK
CgoKCmludCBwbV9zZW5kKHN0cnVjdCBwbV9kZXYgKmRldiwgcG1fcmVxdWVzdF90IHJxc3QsIHZv
aWQgKmRhdGEpOwoKCgoKaW50IHBtX3NlbmRfYWxsKHBtX3JlcXVlc3RfdCBycXN0LCB2b2lkICpk
YXRhKTsKCgoKCnN0cnVjdCBwbV9kZXYgKnBtX2ZpbmQocG1fZGV2X3QgdHlwZSwgc3RydWN0IHBt
X2RldiAqZnJvbSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgcG1fYWNjZXNzKHN0cnVjdCBwbV9kZXYg
KmRldikge30Kc3RhdGljIGlubGluZSB2b2lkIHBtX2Rldl9pZGxlKHN0cnVjdCBwbV9kZXYgKmRl
dikge30KIyAxODggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3BtLmgiCmV4
dGVybiB2b2lkICgqcG1faWRsZSkodm9pZCk7CmV4dGVybiB2b2lkICgqcG1fcG93ZXJfb2ZmKSh2
b2lkKTsKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYXBpYy5oIiAyCiMg
MjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hcGljLmgiCnN0YXRpYyBfX2lu
bGluZSB2b2lkIGFwaWNfd3JpdGUodW5zaWduZWQgbG9uZyByZWcsIHVuc2lnbmVkIGxvbmcgdikK
ewogICAgICAgICooKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoKGZpeF90b192aXJ0KEZJWF9B
UElDX0JBU0UpKStyZWcpKSA9IHY7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIGFwaWNfd3JpdGVf
YXRvbWljKHVuc2lnbmVkIGxvbmcgcmVnLCB1bnNpZ25lZCBsb25nIHYpCnsKICAgICAgICAoKF9f
dHlwZW9mX18oKigodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQ
SUNfQkFTRSkpK3JlZykpKSlfX3hjaGcoKHVuc2lnbmVkIGxvbmcpKHYpLCgodm9sYXRpbGUgdW5z
aWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQSUNfQkFTRSkpK3JlZykpLHNpemVvZigq
KCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKChmaXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkr
cmVnKSkpKSk7Cn0KCnN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBsb25nIGFwaWNfcmVhZCh1bnNp
Z25lZCBsb25nIHJlZykKewogICAgICAgIHJldHVybiAqKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25n
ICopKChmaXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkrcmVnKSk7Cn0KCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgYXBpY193YWl0X2ljcl9pZGxlKHZvaWQpCnsKICAgICAgICBkbyB7IH0gd2hpbGUg
KCBhcGljX3JlYWQoIDB4MzAwICkgJiAweDAxMDAwICk7Cn0KIyA1MyAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL2FwaWMuaCIKc3RhdGljIGlubGluZSB2b2lkIGFja19BUElDX2ly
cSh2b2lkKQp7CiMgNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hcGljLmgi
CiAgICAgICAgYXBpY193cml0ZSgoMHhCMCksKDApKTsKfQoKZXh0ZXJuIGludCBnZXRfbWF4bHZ0
KHZvaWQpOwpleHRlcm4gdm9pZCBjbGVhcl9sb2NhbF9BUElDKHZvaWQpOwpleHRlcm4gdm9pZCBj
b25uZWN0X2JzcF9BUElDICh2b2lkKTsKZXh0ZXJuIHZvaWQgZGlzY29ubmVjdF9ic3BfQVBJQyAo
dm9pZCk7CmV4dGVybiB2b2lkIGRpc2FibGVfbG9jYWxfQVBJQyAodm9pZCk7CmV4dGVybiBpbnQg
dmVyaWZ5X2xvY2FsX0FQSUMgKHZvaWQpOwpleHRlcm4gdm9pZCBjYWNoZV9BUElDX3JlZ2lzdGVy
cyAodm9pZCk7CmV4dGVybiB2b2lkIHN5bmNfQXJiX0lEcyAodm9pZCk7CmV4dGVybiB2b2lkIGlu
aXRfYnNwX0FQSUMgKHZvaWQpOwpleHRlcm4gdm9pZCBzZXR1cF9sb2NhbF9BUElDICh2b2lkKTsK
ZXh0ZXJuIHZvaWQgaW5pdF9hcGljX21hcHBpbmdzICh2b2lkKTsKZXh0ZXJuIHZvaWQgc21wX2xv
Y2FsX3RpbWVyX2ludGVycnVwdCAoc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQg
c2V0dXBfQVBJQ19jbG9ja3MgKHZvaWQpOwpleHRlcm4gdm9pZCBzZXR1cF9hcGljX25taV93YXRj
aGRvZyAodm9pZCk7CmV4dGVybiBpbmxpbmUgdm9pZCBubWlfd2F0Y2hkb2dfdGljayAoc3RydWN0
IHB0X3JlZ3MgKiByZWdzKTsKZXh0ZXJuIGludCBBUElDX2luaXRfdW5pcHJvY2Vzc29yICh2b2lk
KTsKZXh0ZXJuIHZvaWQgZGlzYWJsZV9BUElDX3RpbWVyKHZvaWQpOwpleHRlcm4gdm9pZCBlbmFi
bGVfQVBJQ190aW1lcih2b2lkKTsKCmV4dGVybiBzdHJ1Y3QgcG1fZGV2ICphcGljX3BtX3JlZ2lz
dGVyKHBtX2Rldl90LCB1bnNpZ25lZCBsb25nLCBwbV9jYWxsYmFjayk7CmV4dGVybiB2b2lkIGFw
aWNfcG1fdW5yZWdpc3RlcihzdHJ1Y3QgcG1fZGV2Kik7CgpleHRlcm4gdW5zaWduZWQgaW50IGFw
aWNfdGltZXJfaXJxcyBbMzJdOwpleHRlcm4gaW50IGNoZWNrX25taV93YXRjaGRvZyAodm9pZCk7
CgpleHRlcm4gdW5zaWduZWQgaW50IG5taV93YXRjaGRvZzsKIyAyMiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3NtcC5oIiAyCiMgMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9zbXAuaCIKZXh0ZXJuIHZvaWQgc21wX2FsbG9jX21lbW9yeSh2b2lkKTsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgcGh5c19jcHVfcHJlc2VudF9tYXA7CmV4dGVybiB1bnNpZ25lZCBs
b25nIGNwdV9vbmxpbmVfbWFwOwpleHRlcm4gdm9sYXRpbGUgdW5zaWduZWQgbG9uZyBzbXBfaW52
YWxpZGF0ZV9uZWVkZWQ7CmV4dGVybiBpbnQgcGljX21vZGU7CmV4dGVybiBpbnQgc21wX251bV9z
aWJsaW5nczsKZXh0ZXJuIGludCBjcHVfc2libGluZ19tYXBbXTsKCmV4dGVybiB2b2lkIHNtcF9m
bHVzaF90bGIodm9pZCk7CmV4dGVybiB2b2lkIHNtcF9tZXNzYWdlX2lycShpbnQgY3BsLCB2b2lk
ICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKZXh0ZXJuIHZvaWQgc21wX3NlbmRfcmVz
Y2hlZHVsZShpbnQgY3B1KTsKZXh0ZXJuIHZvaWQgc21wX2ludmFsaWRhdGVfcmN2KHZvaWQpOwpl
eHRlcm4gdm9pZCAoKm10cnJfaG9vaykgKHZvaWQpOwpleHRlcm4gdm9pZCB6YXBfbG93X21hcHBp
bmdzICh2b2lkKTsKCgoKCgoKc3RhdGljIGlubGluZSBpbnQgY3B1X2xvZ2ljYWxfbWFwKGludCBj
cHUpCnsKICAgICAgICByZXR1cm4gY3B1Owp9CnN0YXRpYyBpbmxpbmUgaW50IGNwdV9udW1iZXJf
bWFwKGludCBjcHUpCnsKICAgICAgICByZXR1cm4gY3B1Owp9CgoKCgoKCmV4dGVybiB2b2xhdGls
ZSBpbnQgY3B1X3RvX3BoeXNpY2FsX2FwaWNpZFszMl07CmV4dGVybiB2b2xhdGlsZSBpbnQgcGh5
c2ljYWxfYXBpY2lkX3RvX2NwdVsyNTZdOwpleHRlcm4gdm9sYXRpbGUgaW50IGNwdV90b19sb2dp
Y2FsX2FwaWNpZFszMl07CmV4dGVybiB2b2xhdGlsZSBpbnQgbG9naWNhbF9hcGljaWRfdG9fY3B1
WzI1Nl07CgoKCgoKZXh0ZXJuIHZvaWQgc21wX2Jvb3RfY3B1cyh2b2lkKTsKZXh0ZXJuIHZvaWQg
c21wX3N0b3JlX2NwdV9pbmZvKGludCBpZCk7CiMgODYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9zbXAuaCIKc3RhdGljIF9faW5saW5lIGludCBoYXJkX3NtcF9wcm9jZXNzb3Jf
aWQodm9pZCkKewoKICAgICAgICByZXR1cm4gKCgoKih1bnNpZ25lZCBsb25nICopKChmaXhfdG9f
dmlydChGSVhfQVBJQ19CQVNFKSkrMHgyMCkpPj4yNCkmMHgwRik7Cn0KCnN0YXRpYyBfX2lubGlu
ZSBpbnQgbG9naWNhbF9zbXBfcHJvY2Vzc29yX2lkKHZvaWQpCnsKCiAgICAgICAgcmV0dXJuICgo
KCoodW5zaWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQSUNfQkFTRSkpKzB4RDApKT4+
MjQpJjB4RkYpOwp9CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nt
cC5oIiAyCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtcC5oIgpl
eHRlcm4gdm9pZCBzbXBfc2VuZF9zdG9wKHZvaWQpOwoKCgoKZXh0ZXJuIHZvaWQgc21wX3NlbmRf
cmVzY2hlZHVsZShpbnQgY3B1KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKCgoKZXh0
ZXJuIHZvaWQgc21wX2Jvb3RfY3B1cyh2b2lkKTsKCgoKCmV4dGVybiB2b2lkIHNtcF9jYWxsaW4o
dm9pZCk7CgoKCgpleHRlcm4gdm9pZCBzbXBfY29tbWVuY2Uodm9pZCk7CgoKCgpleHRlcm4gaW50
IHNtcF9jYWxsX2Z1bmN0aW9uICh2b2lkICgqZnVuYykgKHZvaWQgKmluZm8pLCB2b2lkICppbmZv
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0cnksIGludCB3YWl0KTsKCgoK
CmV4dGVybiBpbnQgc21wX3RocmVhZHNfcmVhZHk7CgpleHRlcm4gaW50IHNtcF9udW1fY3B1czsK
CmV4dGVybiB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIHNtcF9tc2dfZGF0YTsKZXh0ZXJuIHZvbGF0
aWxlIGludCBzbXBfc3JjX2NwdTsKZXh0ZXJuIHZvbGF0aWxlIGludCBzbXBfbXNnX2lkOwojIDI0
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiIDEKIyAyMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvbWFqb3IuaCIgMQojIDE4MCAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHNjc2lfYmxrX21h
am9yKGludCBtKSB7CiAgICAgICAgcmV0dXJuICgoKG0pID09IDggfHwgKChtKSA+PSA2NSAmJiAo
bSkgPD0gNzEpKSB8fCAobSkgPT0gMTEpOwp9CiMgMTkzICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9tYWpvci5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgaWRlX2Jsa19tYWpv
cihpbnQgbSkKewogICAgICAgIHJldHVybiAoKG0pID09IDMgfHwgKG0pID09IDIyIHx8IChtKSA9
PSAzMyB8fCAobSkgPT0gMzQgfHwgKG0pID09IDU2IHx8IChtKSA9PSA1NyB8fCAobSkgPT0gODgg
fHwgKG0pID09IDg5IHx8IChtKSA9PSA5MCB8fCAobSkgPT0gOTEpOwp9CiMgMjIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvdGVybWlvcy5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9hc20vdGVybWJpdHMuaCIgMQoKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hh
ciBjY190Owp0eXBlZGVmIHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB0Y2ZsYWdfdDsKCgpzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFnX3QgY19pZmxhZzsK
ICAgICAgICB0Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNfY2ZsYWc7CiAgICAg
ICAgdGNmbGFnX3QgY19sZmxhZzsKICAgICAgICBjY190IGNfbGluZTsKICAgICAgICBjY190IGNf
Y2NbMTldOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS90ZXJtaW9z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDEK
IyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAyCgpzdHJ1
Y3Qgd2luc2l6ZSB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3Nfcm93OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHdzX2NvbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c194cGl4ZWw7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgd3NfeXBpeGVsOwp9OwoKCnN0cnVjdCB0ZXJtaW8gewogICAgICAg
IHVuc2lnbmVkIHNob3J0IGNfaWZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY19vZmxhZzsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX2NmbGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNf
bGZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBjX2xpbmU7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBjX2NjWzhdOwp9OwojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Rl
cm1pb3MuaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHku
aCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHlfZHJpdmVy
LmgiIDEKIyAxMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eV9kcml2
ZXIuaCIKc3RydWN0IHR0eV9kcml2ZXIgewogICAgICAgIGludCBtYWdpYzsKICAgICAgICBjb25z
dCBjaGFyICpkcml2ZXJfbmFtZTsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGlu
dCBuYW1lX2Jhc2U7CiAgICAgICAgc2hvcnQgbWFqb3I7CiAgICAgICAgc2hvcnQgbWlub3Jfc3Rh
cnQ7CiAgICAgICAgc2hvcnQgbnVtOwogICAgICAgIHNob3J0IHR5cGU7CiAgICAgICAgc2hvcnQg
c3VidHlwZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyBpbml0X3Rlcm1pb3M7CiAgICAgICAgaW50
IGZsYWdzOwogICAgICAgIGludCAqcmVmY291bnQ7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2Vu
dHJ5ICpwcm9jX2VudHJ5OwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpvdGhlcjsKCgoKCiAg
ICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKip0YWJsZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAq
KnRlcm1pb3M7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKip0ZXJtaW9zX2xvY2tlZDsKICAgICAg
ICB2b2lkICpkcml2ZXJfc3RhdGU7CgoKCgoKICAgICAgICBpbnQgKCpvcGVuKShzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKICAgICAgICB2b2lkICgqY2xvc2Up
KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIGlu
dCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgaW50IGZyb21fdXNlciwKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGNvdW50KTsKICAg
ICAgICB2b2lkICgqcHV0X2NoYXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNo
YXIgY2gpOwogICAgICAgIHZvaWQgKCpmbHVzaF9jaGFycykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0
eSk7CiAgICAgICAgaW50ICgqd3JpdGVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAg
ICAgICAgaW50ICgqY2hhcnNfaW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg
ICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBm
aWxlLAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg
YXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHks
IHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB2b2lkICgqdGhyb3R0bGUpKHN0cnVjdCB0
dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqdW50aHJvdHRsZSkoc3RydWN0IHR0eV9z
dHJ1Y3QgKiB0dHkpOwogICAgICAgIHZvaWQgKCpzdG9wKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5
KTsKICAgICAgICB2b2lkICgqc3RhcnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAg
IHZvaWQgKCpoYW5ndXApKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCpi
cmVha19jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBzdGF0ZSk7CiAgICAgICAgdm9p
ZCAoKmZsdXNoX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAo
KnNldF9sZGlzYykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKndhaXRf
dW50aWxfc2VudCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHRpbWVvdXQpOwogICAgICAg
IHZvaWQgKCpzZW5kX3hjaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFyIGNoKTsKICAg
ICAgICBpbnQgKCpyZWFkX3Byb2MpKGNoYXIgKnBhZ2UsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zm
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRh
dGEpOwogICAgICAgIGludCAoKndyaXRlX3Byb2MpKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBj
aGFyICpidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3Vu
dCwgdm9pZCAqZGF0YSk7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpuZXh0OwogICAg
ICAgIHN0cnVjdCB0dHlfZHJpdmVyICpwcmV2Owp9OwojIDI1ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3R0eV9sZGlzYy5oIiAxCiMgMTAzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC90dHlfbGRpc2MuaCIKc3RydWN0IHR0eV9sZGlzYyB7CiAgICAgICAgaW50IG1h
Z2ljOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG51bTsKICAgICAgICBpbnQgZmxh
Z3M7CgoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAg
dm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAgICB2b2lkICgqZmx1c2hf
YnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBzc2l6ZV90ICgqY2hhcnNf
aW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBzc2l6ZV90ICgqcmVh
ZCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6ZV90IG5yKTsKICAgICAgICBz
c2l6ZV90ICgqd3JpdGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZp
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogYnVmLCBz
aXplX3QgbnIpOwogICAgICAgIGludCAoKmlvY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwg
c3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogICAgICAgIHZvaWQgKCpzZXRfdGVybWlvcykoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHRlcm1pb3MgKiBvbGQpOwogICAgICAgIHVuc2ln
bmVkIGludCAoKnBvbGwpKHN0cnVjdCB0dHlfc3RydWN0ICosIHN0cnVjdCBmaWxlICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwoKCgoK
ICAgICAgICB2b2lkICgqcmVjZWl2ZV9idWYpKHN0cnVjdCB0dHlfc3RydWN0ICosIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKmNwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZnAs
IGludCBjb3VudCk7CiAgICAgICAgaW50ICgqcmVjZWl2ZV9yb29tKShzdHJ1Y3QgdHR5X3N0cnVj
dCAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfd2FrZXVwKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsK
fTsKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyA1
OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCBzY3Jl
ZW5faW5mbyB7CiAgICAgICAgdTggb3JpZ194OwogICAgICAgIHU4IG9yaWdfeTsKICAgICAgICB1
MTYgZG9udHVzZTE7CiAgICAgICAgdTE2IG9yaWdfdmlkZW9fcGFnZTsKICAgICAgICB1OCBvcmln
X3ZpZGVvX21vZGU7CiAgICAgICAgdTggb3JpZ192aWRlb19jb2xzOwogICAgICAgIHUxNiB1bnVz
ZWQyOwogICAgICAgIHUxNiBvcmlnX3ZpZGVvX2VnYV9ieDsKICAgICAgICB1MTYgdW51c2VkMzsK
ICAgICAgICB1OCBvcmlnX3ZpZGVvX2xpbmVzOwogICAgICAgIHU4IG9yaWdfdmlkZW9faXNWR0E7
CiAgICAgICAgdTE2IG9yaWdfdmlkZW9fcG9pbnRzOwoKCiAgICAgICAgdTE2IGxmYl93aWR0aDsK
ICAgICAgICB1MTYgbGZiX2hlaWdodDsKICAgICAgICB1MTYgbGZiX2RlcHRoOwogICAgICAgIHUz
MiBsZmJfYmFzZTsKICAgICAgICB1MzIgbGZiX3NpemU7CiAgICAgICAgdTE2IGRvbnR1c2UyLCBk
b250dXNlMzsKICAgICAgICB1MTYgbGZiX2xpbmVsZW5ndGg7CiAgICAgICAgdTggcmVkX3NpemU7
CiAgICAgICAgdTggcmVkX3BvczsKICAgICAgICB1OCBncmVlbl9zaXplOwogICAgICAgIHU4IGdy
ZWVuX3BvczsKICAgICAgICB1OCBibHVlX3NpemU7CiAgICAgICAgdTggYmx1ZV9wb3M7CiAgICAg
ICAgdTggcnN2ZF9zaXplOwogICAgICAgIHU4IHJzdmRfcG9zOwogICAgICAgIHUxNiB2ZXNhcG1f
c2VnOwogICAgICAgIHUxNiB2ZXNhcG1fb2ZmOwogICAgICAgIHUxNiBwYWdlczsKCn07CgpleHRl
cm4gc3RydWN0IHNjcmVlbl9pbmZvIHNjcmVlbl9pbmZvOwojIDEzOSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfZmxpcF9idWZmZXIgewogICAg
ICAgIHN0cnVjdCB0cV9zdHJ1Y3QgdHF1ZXVlOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgcHR5
X3NlbTsKICAgICAgICBjaGFyICpjaGFyX2J1Zl9wdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciAq
ZmxhZ19idWZfcHRyOwogICAgICAgIGludCBjb3VudDsKICAgICAgICBpbnQgYnVmX251bTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGNoYXJfYnVmWzIqNTEyXTsKICAgICAgICBjaGFyIGZsYWdfYnVm
WzIqNTEyXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNsb3BbNF07Cn07CiMgMjU5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHR0eV9zdHJ1Y3Qgewog
ICAgICAgIGludCBtYWdpYzsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciBkcml2ZXI7CiAgICAg
ICAgc3RydWN0IHR0eV9sZGlzYyBsZGlzYzsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqdGVybWlv
cywgKnRlcm1pb3NfbG9ja2VkOwogICAgICAgIGludCBwZ3JwOwogICAgICAgIGludCBzZXNzaW9u
OwogICAgICAgIGtkZXZfdCBkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAg
ICAgICBpbnQgY291bnQ7CiAgICAgICAgc3RydWN0IHdpbnNpemUgd2luc2l6ZTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIHN0b3BwZWQ6MSwgaHdfc3RvcHBlZDoxLCBmbG93X3N0b3BwZWQ6MSwgcGFj
a2V0OjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBsb3dfbGF0ZW5jeToxLCB3YXJuZWQ6MTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGN0cmxfc3RhdHVzOwoKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVj
dCAqbGluazsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jOwogICAgICAgIHN0
cnVjdCB0dHlfZmxpcF9idWZmZXIgZmxpcDsKICAgICAgICBpbnQgbWF4X2ZsaXBfY250OwogICAg
ICAgIGludCBhbHRfc3BlZWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3JpdGVfd2FpdDsK
ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCByZWFkX3dhaXQ7CiAgICAgICAgc3RydWN0IHRxX3N0
cnVjdCB0cV9oYW5ndXA7CiAgICAgICAgdm9pZCAqZGlzY19kYXRhOwogICAgICAgIHZvaWQgKmRy
aXZlcl9kYXRhOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdHR5X2ZpbGVzOwoKCgoKCgoKICAg
ICAgICB1bnNpZ25lZCBpbnQgY29sdW1uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG5leHQ6MSwg
ZXJhc2luZzoxLCByYXc6MSwgcmVhbF9yYXc6MSwgaWNhbm9uOjE7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBjbG9zaW5nOjE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWluaW11bV90b193YWtlOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgb3ZlcnJ1bl90aW1lOwogICAgICAgIGludCBudW1fb3ZlcnJ1
bjsKICAgICAgICB1bnNpZ25lZCBsb25nIHByb2Nlc3NfY2hhcl9tYXBbMjU2Lyg4KnNpemVvZih1
bnNpZ25lZCBsb25nKSldOwogICAgICAgIGNoYXIgKnJlYWRfYnVmOwogICAgICAgIGludCByZWFk
X2hlYWQ7CiAgICAgICAgaW50IHJlYWRfdGFpbDsKICAgICAgICBpbnQgcmVhZF9jbnQ7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyByZWFkX2ZsYWdzWzQwOTYvKDgqc2l6ZW9mKHVuc2lnbmVkIGxvbmcp
KV07CiAgICAgICAgaW50IGNhbm9uX2RhdGE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjYW5vbl9o
ZWFkOwogICAgICAgIHVuc2lnbmVkIGludCBjYW5vbl9jb2x1bW47CiAgICAgICAgc3RydWN0IHNl
bWFwaG9yZSBhdG9taWNfcmVhZDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGF0b21pY193cml0
ZTsKICAgICAgICBzcGlubG9ja190IHJlYWRfbG9jazsKCiAgICAgICAgc3RydWN0IHRxX3N0cnVj
dCBTQUtfdHE7Cn07CiMgMzQxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90
dHkuaCIKZXh0ZXJuIHZvaWQgdHR5X3dyaXRlX2ZsdXNoKHN0cnVjdCB0dHlfc3RydWN0ICopOwoK
ZXh0ZXJuIHN0cnVjdCB0ZXJtaW9zIHR0eV9zdGRfdGVybWlvczsKZXh0ZXJuIHN0cnVjdCB0dHlf
c3RydWN0ICogcmVkaXJlY3Q7CmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIGxkaXNjc1tdOwpleHRl
cm4gaW50IGZnX2NvbnNvbGUsIGxhc3RfY29uc29sZSwgd2FudF9jb25zb2xlOwoKZXh0ZXJuIGlu
dCBrbXNnX3JlZGlyZWN0OwoKZXh0ZXJuIHZvaWQgY29uX2luaXQodm9pZCk7CmV4dGVybiB2b2lk
IGNvbnNvbGVfaW5pdCh2b2lkKTsKCmV4dGVybiBpbnQgbHBfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBwdHlfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgdHR5X2luaXQodm9pZCk7CmV4dGVybiBpbnQg
bXhzZXJfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBtb3hhX2luaXQodm9pZCk7CmV4dGVybiBpbnQg
aXAyX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcGN4ZV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHBj
X2luaXQodm9pZCk7CmV4dGVybiBpbnQgdmNzX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcnBfaW5p
dCh2b2lkKTsKZXh0ZXJuIGludCBjeV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHN0bF9pbml0KHZv
aWQpOwpleHRlcm4gaW50IHN0bGlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzcGVjaWFsaXhfaW5p
dCh2b2lkKTsKZXh0ZXJuIGludCBlc3BzZXJpYWxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBtYWNz
ZXJpYWxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBhMjIzMmJvYXJkX2luaXQodm9pZCk7CgpleHRl
cm4gaW50IHR0eV9wYXJhbm9pYV9jaGVjayhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBrZGV2X3Qg
ZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyb3V0aW5l
KTsKZXh0ZXJuIGNoYXIgKnR0eV9uYW1lKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKmJ1
Zik7CmV4dGVybiB2b2lkIHR0eV93YWl0X3VudGlsX3NlbnQoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0
dHksIGxvbmcgdGltZW91dCk7CmV4dGVybiBpbnQgdHR5X2NoZWNrX2NoYW5nZShzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHN0b3BfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICog
dHR5KTsKZXh0ZXJuIHZvaWQgc3RhcnRfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0
ZXJuIGludCB0dHlfcmVnaXN0ZXJfbGRpc2MoaW50IGRpc2MsIHN0cnVjdCB0dHlfbGRpc2MgKm5l
d19sZGlzYyk7CmV4dGVybiBpbnQgdHR5X3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHR5X2RyaXZl
ciAqZHJpdmVyKTsKZXh0ZXJuIGludCB0dHlfdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR0eV9k
cml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0eV9yZWdpc3Rlcl9kZXZmcyAoc3RydWN0IHR0
eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG1pbm9yKTsKZXh0ZXJuIHZvaWQgdHR5X3VucmVnaXN0ZXJf
ZGV2ZnMgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIG1pbm9yKTsKZXh0ZXJu
IGludCB0dHlfcmVhZF9yYXdfZGF0YShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCB1bnNpZ25lZCBj
aGFyICpidWZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZsZW4pOwpleHRl
cm4gdm9pZCB0dHlfd3JpdGVfbWVzc2FnZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFyICpt
c2cpOwoKZXh0ZXJuIGludCBpc19vcnBoYW5lZF9wZ3JwKGludCBwZ3JwKTsKZXh0ZXJuIGludCBp
c19pZ25vcmVkKGludCBzaWcpOwpleHRlcm4gaW50IHR0eV9zaWduYWwoaW50IHNpZywgc3RydWN0
IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIHR0eV9oYW5ndXAoc3RydWN0IHR0eV9zdHJ1
Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCB0dHlfdmhhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0
eSk7CmV4dGVybiB2b2lkIHR0eV91bmhhbmd1cChzdHJ1Y3QgZmlsZSAqZmlscCk7CmV4dGVybiBp
bnQgdHR5X2h1bmdfdXBfcChzdHJ1Y3QgZmlsZSAqIGZpbHApOwpleHRlcm4gdm9pZCBkb19TQUso
c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIGRpc2Fzc29jaWF0ZV9jdHR5KGlu
dCBwcml2KTsKZXh0ZXJuIHZvaWQgdHR5X2ZsaXBfYnVmZmVyX3B1c2goc3RydWN0IHR0eV9zdHJ1
Y3QgKnR0eSk7CmV4dGVybiBpbnQgdHR5X2dldF9iYXVkX3JhdGUoc3RydWN0IHR0eV9zdHJ1Y3Qg
KnR0eSk7CgoKZXh0ZXJuIHN0cnVjdCB0dHlfbGRpc2MgdHR5X2xkaXNjX05fVFRZOwoKCmV4dGVy
biBpbnQgbl90dHlfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICog
ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs
b25nIGFyZyk7CgoKCmV4dGVybiB2b2lkIHNlcmlhbF9jb25zb2xlX2luaXQodm9pZCk7CgoKCmV4
dGVybiBpbnQgcGN4ZV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpm
aWxwKTsKCgoKZXh0ZXJuIHZvaWQgY29uc29sZV9wcmludChjb25zdCBjaGFyICopOwoKCgpleHRl
cm4gaW50IHZ0X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICogZmls
ZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFy
Zyk7CiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zZW0uaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAxCiMgOSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaXBjLmgiCnN0cnVjdCBpcGNfcGVybQp7CiAg
ICAgICAgX19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVsX3VpZF90IHVpZDsKICAg
ICAgICBfX2tlcm5lbF9naWRfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgY3VpZDsKICAg
ICAgICBfX2tlcm5lbF9naWRfdCBjZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBtb2RlOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHNlcTsKfTsKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9pcGNidWYuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9hc20vaXBjYnVmLmgiCnN0cnVjdCBpcGM2NF9wZXJtCnsKICAgICAgICBfX2tlcm5lbF9r
ZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxf
Z2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCBjdWlkOwogICAgICAgIF9fa2Vy
bmVsX2dpZDMyX3QgY2dpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgbW9kZTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBfX3BhZDE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VxOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKfTsKIyAyMiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvaXBjLmgiIDIKIyA1NyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvaXBjLmgiCnN0cnVjdCBrZXJuX2lwY19wZXJtCnsKICAgICAgICBrZXlf
dCBrZXk7CiAgICAgICAgdWlkX3QgdWlkOwogICAgICAgIGdpZF90IGdpZDsKICAgICAgICB1aWRf
dCBjdWlkOwogICAgICAgIGdpZF90IGNnaWQ7CiAgICAgICAgbW9kZV90IG1vZGU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzZXE7Cn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvc2VtLmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
c2VtLmgiCnN0cnVjdCBzZW1pZF9kcyB7CiAgICAgICAgc3RydWN0IGlwY19wZXJtIHNlbV9wZXJt
OwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgX19rZXJuZWxfdGlt
ZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1
Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2Vt
X3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc2VtX25zZW1zOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL3NlbWJ1Zi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS9zZW1idWYuaCIKc3RydWN0IHNlbWlkNjRfZHMgewogICAgICAgIHN0cnVjdCBpcGM2NF9w
ZXJtIHNlbV9wZXJtOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9jdGlt
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNlbV9uc2VtczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1bnNp
Z25lZCBsb25nIF9fdW51c2VkNDsKfTsKIyAzNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvc2VtLmgiIDIKCgpzdHJ1Y3Qgc2VtYnVmIHsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzZW1fbnVtOwogICAgICAgIHNob3J0IHNlbV9vcDsKICAgICAgICBzaG9ydCBzZW1fZmxnOwp9
OwoKCnVuaW9uIHNlbXVuIHsKICAgICAgICBpbnQgdmFsOwogICAgICAgIHN0cnVjdCBzZW1pZF9k
cyAqYnVmOwogICAgICAgIHVuc2lnbmVkIHNob3J0ICphcnJheTsKICAgICAgICBzdHJ1Y3Qgc2Vt
aW5mbyAqX19idWY7CiAgICAgICAgdm9pZCAqX19wYWQ7Cn07CgpzdHJ1Y3Qgc2VtaW5mbyB7CiAg
ICAgICAgaW50IHNlbW1hcDsKICAgICAgICBpbnQgc2VtbW5pOwogICAgICAgIGludCBzZW1tbnM7
CiAgICAgICAgaW50IHNlbW1udTsKICAgICAgICBpbnQgc2VtbXNsOwogICAgICAgIGludCBzZW1v
cG07CiAgICAgICAgaW50IHNlbXVtZTsKICAgICAgICBpbnQgc2VtdXN6OwogICAgICAgIGludCBz
ZW12bXg7CiAgICAgICAgaW50IHNlbWFlbTsKfTsKIyA4MiAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvc2VtLmgiCnN0cnVjdCBzZW0gewogICAgICAgIGludCBzZW12YWw7CiAg
ICAgICAgaW50IHNlbXBpZDsKfTsKCgpzdHJ1Y3Qgc2VtX2FycmF5IHsKICAgICAgICBzdHJ1Y3Qg
a2Vybl9pcGNfcGVybSBzZW1fcGVybTsKICAgICAgICB0aW1lX3Qgc2VtX290aW1lOwogICAgICAg
IHRpbWVfdCBzZW1fY3RpbWU7CiAgICAgICAgc3RydWN0IHNlbSAqc2VtX2Jhc2U7CiAgICAgICAg
c3RydWN0IHNlbV9xdWV1ZSAqc2VtX3BlbmRpbmc7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAq
KnNlbV9wZW5kaW5nX2xhc3Q7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICp1bmRvOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc2VtX25zZW1zOwp9OwoKCnN0cnVjdCBzZW1fcXVldWUgewogICAgICAg
IHN0cnVjdCBzZW1fcXVldWUgKiBuZXh0OwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKiogcHJl
djsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QqIHNsZWVwZXI7CiAgICAgICAgc3RydWN0IHNl
bV91bmRvICogdW5kbzsKICAgICAgICBpbnQgcGlkOwogICAgICAgIGludCBzdGF0dXM7CiAgICAg
ICAgc3RydWN0IHNlbV9hcnJheSAqIHNtYTsKICAgICAgICBpbnQgaWQ7CiAgICAgICAgc3RydWN0
IHNlbWJ1ZiAqIHNvcHM7CiAgICAgICAgaW50IG5zb3BzOwogICAgICAgIGludCBhbHRlcjsKfTsK
CgoKCnN0cnVjdCBzZW1fdW5kbyB7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICogcHJvY19uZXh0
OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqIGlkX25leHQ7CiAgICAgICAgaW50IHNlbWlkOwog
ICAgICAgIHNob3J0ICogc2VtYWRqOwp9OwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs
b25nIHN5c19zZW1nZXQgKGtleV90IGtleSwgaW50IG5zZW1zLCBpbnQgc2VtZmxnKTsKIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1vcCAoaW50IHNlbWlkLCBzdHJ1Y3Qg
c2VtYnVmICpzb3BzLCB1bnNpZ25lZCBuc29wcyk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDAp
KSkgbG9uZyBzeXNfc2VtY3RsIChpbnQgc2VtaWQsIGludCBzZW1udW0sIGludCBjbWQsIHVuaW9u
IHNlbXVuIGFyZyk7CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zaWduYWwu
aCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zaWduYWwuaCIg
MQoKCgoKCgpzdHJ1Y3Qgc2lnaW5mbzsKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgb2xkX3NpZ3NldF90OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lnWyg2NCAvIDMyKV07Cn0gc2ln
c2V0X3Q7CiMgMTI5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2lnbmFsLmgi
CnR5cGVkZWYgdm9pZCAoKl9fc2lnaGFuZGxlcl90KShpbnQpOwoKCgoKCgpzdHJ1Y3Qgb2xkX3Np
Z2FjdGlvbiB7CiAgICAgICAgX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsKICAgICAgICBvbGRf
c2lnc2V0X3Qgc2FfbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAg
IHZvaWQgKCpzYV9yZXN0b3Jlcikodm9pZCk7Cn07CgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAg
ICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxh
Z3M7CiAgICAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKICAgICAgICBzaWdzZXRfdCBz
YV9tYXNrOwp9OwoKc3RydWN0IGtfc2lnYWN0aW9uIHsKICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9u
IHNhOwp9OwojIDE3MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NpZ25hbC5o
Igp0eXBlZGVmIHN0cnVjdCBzaWdhbHRzdGFjayB7CiAgICAgICAgdm9pZCAqc3Nfc3A7CiAgICAg
ICAgaW50IHNzX2ZsYWdzOwogICAgICAgIHNpemVfdCBzc19zaXplOwp9IHN0YWNrX3Q7CgoKCgoK
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2lnYWRkc2V0KHNpZ3NldF90ICpzZXQsIGludCBfc2ln
KQp7CiAgICAgICAgX19hc21fXygiYnRzbCAlMSwlMCIgOiAiPW0iKCpzZXQpIDogIklyIihfc2ln
IC0gMSkgOiAiY2MiKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdkZWxzZXQoc2lnc2V0
X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBfX2FzbV9fKCJidHJsICUxLCUwIiA6ICI9bSIo
KnNldCkgOiAiSXIiKF9zaWcgLSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
X19jb25zdF9zaWdpc21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2lnID0gX3NpZyAtIDE7CiAgICAgICAgcmV0dXJuIDEgJiAoc2V0LT5zaWdb
c2lnIC8gMzJdID4+IChzaWcgJSAzMikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19nZW5f
c2lnaXNtZW1iZXIoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBpbnQgcmV0Owog
ICAgICAgIF9fYXNtX18oImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAg
OiAiPXIiKHJldCkgOiAibSIoKnNldCksICJJciIoX3NpZy0xKSA6ICJjYyIpOwogICAgICAgIHJl
dHVybiByZXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zaWdu
YWwuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHNpZ2ZpbmRpbndvcmQodW5zaWduZWQgbG9uZyB3
b3JkKQp7CiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMCIgOiAiPXIiKHdvcmQpIDogInJtIih3
b3JkKSA6ICJjYyIpOwogICAgICAgIHJldHVybiB3b3JkOwp9CiMgNSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9hc20vc2lnaW5mby5oIiAxCgoKCgoKCgp0eXBlZGVmIHVuaW9uIHNpZ3ZhbCB7
CiAgICAgICAgaW50IHNpdmFsX2ludDsKICAgICAgICB2b2lkICpzaXZhbF9wdHI7Cn0gc2lndmFs
X3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdpbmZvIHsKICAgICAgICBpbnQgc2lfc2lnbm87CiAg
ICAgICAgaW50IHNpX2Vycm5vOwogICAgICAgIGludCBzaV9jb2RlOwoKICAgICAgICB1bmlvbiB7
CiAgICAgICAgICAgICAgICBpbnQgX3BhZFsoKDEyOC9zaXplb2YoaW50KSkgLSAzKV07CgoKICAg
ICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICB9IF9r
aWxsOwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX3RpbWVyMTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF90aW1lcjI7CiAgICAgICAgICAgICAgICB9IF90aW1lcjsKCgogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAgICAgICAg
ICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgc2lndmFsX3QgX3Np
Z3ZhbDsKICAgICAgICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAgICAgICAgICAgICAg
ICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX3N0YXR1czsKICAgICAg
ICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfdXRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAg
IGNsb2NrX3QgX3N0aW1lOwogICAgICAgICAgICAgICAgfSBfc2lnY2hsZDsKCgogICAgICAgICAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2FkZHI7CiAgICAg
ICAgICAgICAgICB9IF9zaWdmYXVsdDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9iYW5kOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQg
X2ZkOwogICAgICAgICAgICAgICAgfSBfc2lncG9sbDsKICAgICAgICB9IF9zaWZpZWxkczsKfSBz
aWdpbmZvX3Q7CiMgMjAwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2lnaW5m
by5oIgp0eXBlZGVmIHN0cnVjdCBzaWdldmVudCB7CiAgICAgICAgc2lndmFsX3Qgc2lnZXZfdmFs
dWU7CiAgICAgICAgaW50IHNpZ2V2X3NpZ25vOwogICAgICAgIGludCBzaWdldl9ub3RpZnk7CiAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgaW50IF9wYWRbKCg2NC9zaXplb2YoaW50KSkg
LSAzKV07CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAoKl9mdW5jdGlvbikoc2lndmFsX3QpOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpfYXR0cmlidXRlOwogICAgICAgICAgICAgICAgfSBfc2lnZXZfdGhyZWFkOwogICAgICAgIH0g
X3NpZ2V2X3VuOwp9IHNpZ2V2ZW50X3Q7CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgY29weV9z
aWdpbmZvKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSkKewogICAgICAgIGlmIChmcm9t
LT5zaV9jb2RlIDwgMCkKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXpl
b2Yoc2lnaW5mb190KSkgPyBfX2NvbnN0YW50X21lbWNweSgodG8pLChmcm9tKSwoc2l6ZW9mKHNp
Z2luZm9fdCkpKSA6IF9fbWVtY3B5KCh0byksKGZyb20pLChzaXplb2Yoc2lnaW5mb190KSkpKTsK
ICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDMqc2l6
ZW9mKGludCkgKyBzaXplb2YoZnJvbS0+X3NpZmllbGRzLl9zaWdjaGxkKSkgPyBfX2NvbnN0YW50
X21lbWNweSgodG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVs
ZHMuX3NpZ2NobGQpKSkgOiBfX21lbWNweSgodG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNp
emVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2ln
aW5mb190b191c2VyKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKCgoKCgoKc3RydWN0IHNp
Z3F1ZXVlIHsKICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKm5leHQ7CiAgICAgICAgc2lnaW5mb190
IGluZm87Cn07CgpzdHJ1Y3Qgc2lncGVuZGluZyB7CiAgICAgICAgc3RydWN0IHNpZ3F1ZXVlICpo
ZWFkLCAqKnRhaWw7CiAgICAgICAgc2lnc2V0X3Qgc2lnbmFsOwp9OwojIDEwOCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBz
aWdvcnNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRfdCAq
YikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5zaWdu
ZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNp
Z1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9IGEt
PnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9
IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgoYTAp
IHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyByLT5zaWdbNCppKzJdID0g
KChhMikgfCAoYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpIHwgKGIzKSk7IH0gc3dpdGNoICgo
NjQgLyAzMikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0
KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNp
Z1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIw
KSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikg
fCAoYjIpKTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0
KmkrMV07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCpp
KzBdID0gKChhMCkgfCAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpIHwgKGIxKSk7IGJyZWFr
OyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdb
NCppKzBdID0gKChhMCkgfCAoYjApKTsgYnJlYWs7IH0gfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBz
aWdhbmRzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3Qg
KmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2ln
bmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5z
aWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBh
LT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIg
PSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEw
KSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgci0+c2lnWzQqaSsyXSA9
ICgoYTIpICYgKGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEzKSAmIChiMykpOyB9IHN3aXRjaCAo
KDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdb
NCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5z
aWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChi
MCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIp
ICYgKGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdb
NCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgci0+c2lnWzQq
aSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIChiMSkpOyBicmVh
azsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2ln
WzQqaSswXSA9ICgoYTApICYgKGIwKSk7IGJyZWFrOyB9IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQg
c2lnbmFuZHNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRf
dCAqYikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5z
aWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEt
PnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9
IGEtPnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBi
MiA9IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgo
YTApICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+KGIxKSk7IHItPnNpZ1s0Kmkr
Ml0gPSAoKGEyKSAmIH4oYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpICYgfihiMykpOyB9IHN3
aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBh
LT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEg
PSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEw
KSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJd
ID0gKChhMikgJiB+KGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEg
PSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsg
ci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+
KGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCpp
KzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IGJyZWFrOyB9IH0KIyAxNDAgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5l
IHZvaWQgc2lnbm90c2V0KHNpZ3NldF90ICpzZXQpIHsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkg
PSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNp
Z1s0KmkrMF0pKTsgc2V0LT5zaWdbNCppKzFdID0gKH4oc2V0LT5zaWdbNCppKzFdKSk7IHNldC0+
c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBzZXQtPnNpZ1s0KmkrM10gPSAofihz
ZXQtPnNpZ1s0KmkrM10pKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBzZXQt
PnNpZ1s0KmkrMl0gPSAofihzZXQtPnNpZ1s0KmkrMl0pKTsgY2FzZSAyOiBzZXQtPnNpZ1s0Kmkr
MV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsgY2FzZSAxOiBzZXQtPnNpZ1s0KmkrMF0gPSAofihz
ZXQtPnNpZ1s0KmkrMF0pKTsgfSB9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZW1wdHlzZXQo
c2lnc2V0X3QgKnNldCkKewogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3Vu
dF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNp
emVvZihzaWdzZXRfdCkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEw
MTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IChfX2J1
aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19tZW1zZXRfZ2VuZXJpYygo
KChzZXQpKSksKCgoMCkpKSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVy
aWMoKChzZXQpKSwoKDApKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTog
c2V0LT5zaWdbMF0gPSAwOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgc2lnZmlsbHNldChzaWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNo
ICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRp
bl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90
KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFV
TCoodW5zaWduZWQgY2hhcikoLTEpKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpIDogX19jb25zdGFu
dF9jX21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwo
KHNpemVvZihzaWdzZXRfdCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2ln
c2V0X3QpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHNldCkpKSwoKCgtMSkpKSwoKChzaXplb2Yo
c2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKC0xKSksKChzaXplb2Yo
c2lnc2V0X3QpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNl
dC0+c2lnWzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9IC0xOwogICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpleHRlcm4gY2hhciAqIHJlbmRlcl9zaWdzZXRf
dChzaWdzZXRfdCAqc2V0LCBjaGFyICpidWZmZXIpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2ln
YWRkc2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBz
ZXQtPnNpZ1swXSB8PSBtYXNrOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZGVsc2V0bWFzayhz
aWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSAm
PSB+bWFzazsKfQoKc3RhdGljIGlubGluZSBpbnQgc2lndGVzdHNldG1hc2soc2lnc2V0X3QgKnNl
dCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgcmV0dXJuIChzZXQtPnNpZ1swXSAmIG1h
c2spICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0KHNpZ3NldF90ICpzZXQs
IHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gbWFzazsKICAgICAg
ICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihs
b25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZz
ZXQtPnNpZ1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9m
KGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2ln
WzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YobG9uZykq
KCg2NCAvIDMyKS0xKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSoo
KDY0IC8gMzIpLTEpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgw
KSkpLCgoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMo
KCgmc2V0LT5zaWdbMV0pKSwoKDApKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7
CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsK
ICAgICAgICBjYXNlIDE6IDsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0
c2V0aW52KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+
c2lnWzBdID0gfm1hc2s7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRf
Y19hbmRfY291bnRfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2ln
bmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0
YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNo
YXIpKC0xKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19tZW1zZXRfZ2VuZXJp
YygoKCgmc2V0LT5zaWdbMV0pKSksKCgoLTEpKSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMikt
MSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKCZzZXQtPnNpZ1sxXSkpLCgoLTEpKSwoKHNpemVv
Zihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICBjYXNlIDI6IHNldC0+c2lnWzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiA7CiAgICAgICAgfQp9
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NpZ3BlbmRpbmcoc3RydWN0IHNpZ3BlbmRpbmcg
KnNpZykKewogICAgICAgIHNpZ2VtcHR5c2V0KCZzaWctPnNpZ25hbCk7CiAgICAgICAgc2lnLT5o
ZWFkID0gKCh2b2lkICopMCk7CiAgICAgICAgc2lnLT50YWlsID0gJnNpZy0+aGVhZDsKfQoKZXh0
ZXJuIGxvbmcgZG9fc2lncGVuZGluZyh2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDI3ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2VjdXJlYml0cy5oIiAxCgoKCgoKZXh0ZXJuIHVu
c2lnbmVkIHNlY3VyZWJpdHM7CiMgMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9m
c19zdHJ1Y3QuaCIgMQoKCgoKc3RydWN0IGZzX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgY291
bnQ7CiAgICAgICAgcndsb2NrX3QgbG9jazsKICAgICAgICBpbnQgdW1hc2s7CiAgICAgICAgc3Ry
dWN0IGRlbnRyeSAqIHJvb3QsICogcHdkLCAqIGFsdHJvb3Q7CiAgICAgICAgc3RydWN0IHZmc21v
dW50ICogcm9vdG1udCwgKiBwd2RtbnQsICogYWx0cm9vdG1udDsKfTsKIyAyMCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnNfc3RydWN0LmgiCmV4dGVybiB2b2lkIGV4aXRf
ZnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBzZXRfZnNfYWx0cm9vdCh2b2lk
KTsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHNldF9mc19yb290KHN0cnVjdCBmc19zdHJ1Y3Qg
KmZzLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVjdCBkZW50cnkg
KmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9yb290OwogICAgICAgIHN0cnVj
dCB2ZnNtb3VudCAqb2xkX3Jvb3RtbnQ7CiAgICAgICAgd3JpdGVfbG9jaygmZnMtPmxvY2spOwog
ICAgICAgIG9sZF9yb290ID0gZnMtPnJvb3Q7CiAgICAgICAgb2xkX3Jvb3RtbnQgPSBmcy0+cm9v
dG1udDsKICAgICAgICBmcy0+cm9vdG1udCA9IG1udGdldChtbnQpOwogICAgICAgIGZzLT5yb290
ID0gZGdldChkZW50cnkpOwogICAgICAgIGFzbSB2b2xhdGlsZSgibG9jayA7IGFkZGwgJCIgIjB4
MDEwMDAwMDAiICIsJTAiOiI9bSIgKCgmZnMtPmxvY2spLT5sb2NrKSA6IDogIm1lbW9yeSIpOwog
ICAgICAgIGlmIChvbGRfcm9vdCkgewogICAgICAgICAgICAgICAgZHB1dChvbGRfcm9vdCk7CiAg
ICAgICAgICAgICAgICBtbnRwdXQob2xkX3Jvb3RtbnQpOwogICAgICAgIH0KfQoKCgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3B3ZChzdHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAgICBz
dHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAg
ICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcHdkOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqb2xk
X3B3ZG1udDsKICAgICAgICB3cml0ZV9sb2NrKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3B3ZCA9
IGZzLT5wd2Q7CiAgICAgICAgb2xkX3B3ZG1udCA9IGZzLT5wd2RtbnQ7CiAgICAgICAgZnMtPnB3
ZG1udCA9IG1udGdldChtbnQpOwogICAgICAgIGZzLT5wd2QgPSBkZ2V0KGRlbnRyeSk7CiAgICAg
ICAgYXNtIHZvbGF0aWxlKCJsb2NrIDsgYWRkbCAkIiAiMHgwMTAwMDAwMCIgIiwlMCI6Ij1tIiAo
KCZmcy0+bG9jayktPmxvY2spIDogOiAibWVtb3J5Iik7CiAgICAgICAgaWYgKG9sZF9wd2QpIHsK
ICAgICAgICAgICAgICAgIGRwdXQob2xkX3B3ZCk7CiAgICAgICAgICAgICAgICBtbnRwdXQob2xk
X3B3ZG1udCk7CiAgICAgICAgfQp9CgpzdHJ1Y3QgZnNfc3RydWN0ICpjb3B5X2ZzX3N0cnVjdChz
dHJ1Y3QgZnNfc3RydWN0ICpvbGQpOwp2b2lkIHB1dF9mc19zdHJ1Y3Qoc3RydWN0IGZzX3N0cnVj
dCAqZnMpOwojIDI5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5o
IiAyCgpzdHJ1Y3QgZXhlY19kb21haW47CiMgNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGF2ZW5ydW5bXTsKIyA3NiAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIGludCBu
cl9ydW5uaW5nLCBucl90aHJlYWRzOwpleHRlcm4gaW50IGxhc3RfcGlkOwoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3BhcmFtLmgiIDEKIyA4MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIKc3RydWN0IHJ1c2FnZSB7CiAgICAgICAg
c3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7
CiAgICAgICAgbG9uZyBydV9tYXhyc3M7CiAgICAgICAgbG9uZyBydV9peHJzczsKICAgICAgICBs
b25nIHJ1X2lkcnNzOwogICAgICAgIGxvbmcgcnVfaXNyc3M7CiAgICAgICAgbG9uZyBydV9taW5m
bHQ7CiAgICAgICAgbG9uZyBydV9tYWpmbHQ7CiAgICAgICAgbG9uZyBydV9uc3dhcDsKICAgICAg
ICBsb25nIHJ1X2luYmxvY2s7CiAgICAgICAgbG9uZyBydV9vdWJsb2NrOwogICAgICAgIGxvbmcg
cnVfbXNnc25kOwogICAgICAgIGxvbmcgcnVfbXNncmN2OwogICAgICAgIGxvbmcgcnVfbnNpZ25h
bHM7CiAgICAgICAgbG9uZyBydV9udmNzdzsKICAgICAgICBsb25nIHJ1X25pdmNzdzsKfTsKCnN0
cnVjdCBybGltaXQgewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9jdXI7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBybGltX21heDsKfTsKIyA1NiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvcmVzb3VyY2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vcmVzb3VyY2UuaCIgMQojIDU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9yZXNvdXJjZS5oIiAyCiMgODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDIKIyAxMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiCnN0cnVjdCBzY2hlZF9wYXJhbSB7CiAgICAgICAgaW50IHNjaGVkX3ByaW9yaXR5Owp9
OwoKc3RydWN0IGNvbXBsZXRpb247CiMgMTQ0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIgpleHRlcm4gcndsb2NrX3QgdGFza2xpc3RfbG9jazsKZXh0ZXJuIHNw
aW5sb2NrX3QgcnVucXVldWVfbG9jazsKZXh0ZXJuIHNwaW5sb2NrX3QgbW1saXN0X2xvY2s7Cgpl
eHRlcm4gdm9pZCBzY2hlZF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2lkbGUodm9pZCk7
CmV4dGVybiB2b2lkIHNob3dfc3RhdGUodm9pZCk7CmV4dGVybiB2b2lkIGNwdV9pbml0ICh2b2lk
KTsKZXh0ZXJuIHZvaWQgdHJhcF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCB1cGRhdGVfcHJvY2Vz
c190aW1lcyhpbnQgdXNlcik7CmV4dGVybiB2b2lkIHVwZGF0ZV9vbmVfcHJvY2VzcyhzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnAsIHVuc2lnbmVkIGxvbmcgdXNlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtLCBpbnQgY3B1KTsKCgpleHRlcm4gc2lnbmVk
IGxvbmcgc2NoZWR1bGVfdGltZW91dChzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDMpKSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBzY2hlZHVs
ZSh2b2lkKTsKCmV4dGVybiBpbnQgc2NoZWR1bGVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICp0YXNr
KTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2NoZWR1bGVkX3Rhc2tzKHZvaWQpOwpleHRlcm4gaW50IHN0
YXJ0X2NvbnRleHRfdGhyZWFkKHZvaWQpOwpleHRlcm4gaW50IGN1cnJlbnRfaXNfa2V2ZW50ZCh2
b2lkKTsKCgpleHRlcm4gdm9pZCBzZXRfY3B1c19hbGxvd2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAq
cCwgdW5zaWduZWQgbG9uZyBuZXdfbWFzayk7CiMgMTc4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdHJ1Y3QgbmFtZXNwYWNlOwoKCgpzdHJ1Y3QgZmlsZXNf
c3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xvY2tfdCBmaWxlX2xv
Y2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50IG1heF9mZHNldDsKICAgICAgICBp
bnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBmZDsKICAgICAgICBmZF9zZXQgKmNs
b3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2ZkczsKICAgICAgICBmZF9zZXQgY2xv
c2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVuX2Zkc19pbml0OwogICAgICAgIHN0
cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIxNCAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIGludCBtYXhfbWFwX2NvdW50OwoKc3RydWN0
IG1tX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcDsKICAgICAg
ICByYl9yb290X3QgbW1fcmI7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9j
YWNoZTsKICAgICAgICBwZ2RfdCAqIHBnZDsKICAgICAgICBhdG9taWNfdCBtbV91c2VyczsKICAg
ICAgICBhdG9taWNfdCBtbV9jb3VudDsKICAgICAgICBpbnQgbWFwX2NvdW50OwogICAgICAgIHN0
cnVjdCByd19zZW1hcGhvcmUgbW1hcF9zZW07CiAgICAgICAgc3BpbmxvY2tfdCBwYWdlX3RhYmxl
X2xvY2s7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW1saXN0OwoKCgoKICAgICAgICB1bnNp
Z25lZCBsb25nIHN0YXJ0X2NvZGUsIGVuZF9jb2RlLCBzdGFydF9kYXRhLCBlbmRfZGF0YTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2JyaywgYnJrLCBzdGFydF9zdGFjazsKICAgICAgICB1
bnNpZ25lZCBsb25nIGFyZ19zdGFydCwgYXJnX2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcnNzLCB0b3RhbF92bSwgbG9ja2VkX3ZtOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZGVmX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3ZtX21hc2s7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzd2FwX2FkZHJlc3M7CgogICAgICAgIHVuc2lnbmVkIGR1bXBh
YmxlOjE7CgoKICAgICAgICBtbV9jb250ZXh0X3QgY29udGV4dDsKfTsKCmV4dGVybiBpbnQgbW1s
aXN0X25yOwojIDI1OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQu
aCIKc3RydWN0IHNpZ25hbF9zdHJ1Y3QgewogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAg
IHN0cnVjdCBrX3NpZ2FjdGlvbiBhY3Rpb25bNjRdOwogICAgICAgIHNwaW5sb2NrX3Qgc2lnbG9j
azsKfTsKIyAyNzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
CnN0cnVjdCB1c2VyX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgX19jb3VudDsKICAgICAgICBh
dG9taWNfdCBwcm9jZXNzZXM7CiAgICAgICAgYXRvbWljX3QgZmlsZXM7CgoKICAgICAgICBzdHJ1
Y3QgdXNlcl9zdHJ1Y3QgKm5leHQsICoqcHByZXY7CiAgICAgICAgdWlkX3QgdWlkOwp9OwoKCgoK
CgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNlcjsKCgpzdHJ1Y3QgdGFza19zdHJ1
Y3QgewoKCgogICAgICAgIHZvbGF0aWxlIGxvbmcgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBmbGFnczsKICAgICAgICBpbnQgc2lncGVuZGluZzsKICAgICAgICBtbV9zZWdtZW50X3QgYWRk
cl9saW1pdDsKCgoKICAgICAgICBzdHJ1Y3QgZXhlY19kb21haW4gKmV4ZWNfZG9tYWluOwogICAg
ICAgIHZvbGF0aWxlIGxvbmcgbmVlZF9yZXNjaGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHRy
YWNlOwoKICAgICAgICBpbnQgbG9ja19kZXB0aDsKCgoKCgoKICAgICAgICBsb25nIGNvdW50ZXI7
CiAgICAgICAgbG9uZyBuaWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcG9saWN5OwogICAgICAg
IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwogICAgICAgIGludCBwcm9jZXNzb3I7CiMgMzI4ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgogICAgICAgIHVuc2lnbmVk
IGxvbmcgY3B1c19ydW5uYWJsZSwgY3B1c19hbGxvd2VkOwoKCgoKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIHJ1bl9saXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2xlZXBfdGltZTsKCiAgICAg
ICAgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0X3Rhc2ssICpwcmV2X3Rhc2s7CiAgICAgICAgc3Ry
dWN0IG1tX3N0cnVjdCAqYWN0aXZlX21tOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9jYWxf
cGFnZXM7CiAgICAgICAgdW5zaWduZWQgaW50IGFsbG9jYXRpb25fb3JkZXIsIG5yX2xvY2FsX3Bh
Z2VzOwoKCiAgICAgICAgc3RydWN0IGxpbnV4X2JpbmZtdCAqYmluZm10OwogICAgICAgIGludCBl
eGl0X2NvZGUsIGV4aXRfc2lnbmFsOwogICAgICAgIGludCBwZGVhdGhfc2lnbmFsOwoKICAgICAg
ICB1bnNpZ25lZCBsb25nIHBlcnNvbmFsaXR5OwogICAgICAgIGludCBkaWRfZXhlYzoxOwogICAg
ICAgIHVuc2lnbmVkIHRhc2tfZHVtcGFibGU6MTsKICAgICAgICBwaWRfdCBwaWQ7CiAgICAgICAg
cGlkX3QgcGdycDsKICAgICAgICBwaWRfdCB0dHlfb2xkX3BncnA7CiAgICAgICAgcGlkX3Qgc2Vz
c2lvbjsKICAgICAgICBwaWRfdCB0Z2lkOwoKICAgICAgICBpbnQgbGVhZGVyOwoKCgoKCiAgICAg
ICAgc3RydWN0IHRhc2tfc3RydWN0ICpwX29wcHRyLCAqcF9wcHRyLCAqcF9jcHRyLCAqcF95c3B0
ciwgKnBfb3NwdHI7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0aHJlYWRfZ3JvdXA7CgoKICAg
ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hfbmV4dDsKICAgICAgICBzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKipwaWRoYXNoX3BwcmV2OwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0
X2NobGRleGl0OwogICAgICAgIHN0cnVjdCBjb21wbGV0aW9uICp2Zm9ya19kb25lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgcnRfcHJpb3JpdHk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpdF9yZWFs
X3ZhbHVlLCBpdF9wcm9mX3ZhbHVlLCBpdF92aXJ0X3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgaXRfcmVhbF9pbmNyLCBpdF9wcm9mX2luY3IsIGl0X3ZpcnRfaW5jcjsKICAgICAgICBzdHJ1
Y3QgdGltZXJfbGlzdCByZWFsX3RpbWVyOwogICAgICAgIHN0cnVjdCB0bXMgdGltZXM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdGFydF90aW1lOwogICAgICAgIGxvbmcgcGVyX2NwdV91dGltZVsz
Ml0sIHBlcl9jcHVfc3RpbWVbMzJdOwoKICAgICAgICB1bnNpZ25lZCBsb25nIG1pbl9mbHQsIG1h
al9mbHQsIG5zd2FwLCBjbWluX2ZsdCwgY21hal9mbHQsIGNuc3dhcDsKICAgICAgICBpbnQgc3dh
cHBhYmxlOjE7CgogICAgICAgIHVpZF90IHVpZCxldWlkLHN1aWQsZnN1aWQ7CiAgICAgICAgZ2lk
X3QgZ2lkLGVnaWQsc2dpZCxmc2dpZDsKICAgICAgICBpbnQgbmdyb3VwczsKICAgICAgICBnaWRf
dCBncm91cHNbMzJdOwogICAgICAgIGtlcm5lbF9jYXBfdCBjYXBfZWZmZWN0aXZlLCBjYXBfaW5o
ZXJpdGFibGUsIGNhcF9wZXJtaXR0ZWQ7CiAgICAgICAgaW50IGtlZXBfY2FwYWJpbGl0aWVzOjE7
CiAgICAgICAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyOwoKICAgICAgICBzdHJ1Y3QgcmxpbWl0
IHJsaW1bMTFdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVzZWRfbWF0aDsKICAgICAgICBjaGFy
IGNvbW1bMTZdOwoKICAgICAgICBpbnQgbGlua19jb3VudCwgdG90YWxfbGlua19jb3VudDsKICAg
ICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5OwogICAgICAgIHVuc2lnbmVkIGludCBsb2NrczsK
CiAgICAgICAgc3RydWN0IHNlbV91bmRvICpzZW11bmRvOwogICAgICAgIHN0cnVjdCBzZW1fcXVl
dWUgKnNlbXNsZWVwaW5nOwoKICAgICAgICBzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB0aHJlYWQ7Cgog
ICAgICAgIHN0cnVjdCBmc19zdHJ1Y3QgKmZzOwoKICAgICAgICBzdHJ1Y3QgZmlsZXNfc3RydWN0
ICpmaWxlczsKCiAgICAgICAgc3RydWN0IG5hbWVzcGFjZSAqbmFtZXNwYWNlOwoKICAgICAgICBz
cGlubG9ja190IHNpZ21hc2tfbG9jazsKICAgICAgICBzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2ln
OwoKICAgICAgICBzaWdzZXRfdCBibG9ja2VkOwogICAgICAgIHN0cnVjdCBzaWdwZW5kaW5nIHBl
bmRpbmc7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3NwOwogICAgICAgIHNpemVfdCBz
YXNfc3Nfc2l6ZTsKICAgICAgICBpbnQgKCpub3RpZmllcikodm9pZCAqcHJpdik7CiAgICAgICAg
dm9pZCAqbm90aWZpZXJfZGF0YTsKICAgICAgICBzaWdzZXRfdCAqbm90aWZpZXJfbWFzazsKCgog
ICAgICAgIHUzMiBwYXJlbnRfZXhlY19pZDsKICAgICAgICB1MzIgc2VsZl9leGVjX2lkOwoKICAg
ICAgICBzcGlubG9ja190IGFsbG9jX2xvY2s7CgoKICAgICAgICB2b2lkICpqb3VybmFsX2luZm87
Cn07CiMgNDc0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpl
eHRlcm4gdm9pZCB5aWVsZCh2b2lkKTsKCgoKCmV4dGVybiBzdHJ1Y3QgZXhlY19kb21haW4gZGVm
YXVsdF9leGVjX2RvbWFpbjsKIyA1MzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiCnVuaW9uIHRhc2tfdW5pb24gewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVj
dCB0YXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhY2tbMjA0OCpzaXplb2YobG9uZykvc2l6
ZW9mKGxvbmcpXTsKfTsKCmV4dGVybiB1bmlvbiB0YXNrX3VuaW9uIGluaXRfdGFza191bmlvbjsK
CmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW07CmV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1
Y3QgKmluaXRfdGFza3NbMzJdOwoKCgpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpwaWRoYXNo
Wyg0MDk2ID4+IDIpXTsKCgoKc3RhdGljIGlubGluZSB2b2lkIGhhc2hfcGlkKHN0cnVjdCB0YXNr
X3N0cnVjdCAqcCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqKmh0YWJsZSA9ICZwaWRo
YXNoWygoKChwLT5waWQpID4+IDgpIF4gKHAtPnBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsK
CiAgICAgICAgaWYoKHAtPnBpZGhhc2hfbmV4dCA9ICpodGFibGUpICE9ICgodm9pZCAqKTApKQog
ICAgICAgICAgICAgICAgKCpodGFibGUpLT5waWRoYXNoX3BwcmV2ID0gJnAtPnBpZGhhc2hfbmV4
dDsKICAgICAgICAqaHRhYmxlID0gcDsKICAgICAgICBwLT5waWRoYXNoX3BwcmV2ID0gaHRhYmxl
Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAp
CnsKICAgICAgICBpZihwLT5waWRoYXNoX25leHQpCiAgICAgICAgICAgICAgICBwLT5waWRoYXNo
X25leHQtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX3BwcmV2OwogICAgICAgICpwLT5waWRo
YXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9uZXh0Owp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNr
X3N0cnVjdCAqZmluZF90YXNrX2J5X3BpZChpbnQgcGlkKQp7CiAgICAgICAgc3RydWN0IHRhc2tf
c3RydWN0ICpwLCAqKmh0YWJsZSA9ICZwaWRoYXNoWygoKChwaWQpID4+IDgpIF4gKHBpZCkpICYg
KCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAgICAgICAgZm9yKHAgPSAqaHRhYmxlOyBwICYmIHAtPnBp
ZCAhPSBwaWQ7IHAgPSBwLT5waWRoYXNoX25leHQpCiAgICAgICAgICAgICAgICA7CgogICAgICAg
IHJldHVybiBwOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3NldF9jcHUoc3RydWN0IHRh
c2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGludCBjcHUpCnsKICAgICAgICB0c2stPnByb2Nlc3Nv
ciA9IGNwdTsKICAgICAgICB0c2stPmNwdXNfcnVubmFibGUgPSAxVUwgPDwgY3B1Owp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgdGFza19yZWxlYXNlX2NwdShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykK
ewogICAgICAgIHRzay0+Y3B1c19ydW5uYWJsZSA9IH4wVUw7Cn0KCgpleHRlcm4gc3RydWN0IHVz
ZXJfc3RydWN0ICogYWxsb2NfdWlkKHVpZF90KTsKZXh0ZXJuIHZvaWQgZnJlZV91aWQoc3RydWN0
IHVzZXJfc3RydWN0ICopOwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20v
Y3VycmVudC5oIiAxCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKCnN0YXRpYyBpbmxpbmUgc3RydWN0
IHRhc2tfc3RydWN0ICogZ2V0X2N1cnJlbnQodm9pZCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0
cnVjdCAqY3VycmVudDsKICAgICAgICBfX2FzbV9fKCJhbmRsICUlZXNwLCUwOyAiOiI9ciIgKGN1
cnJlbnQpIDogIjAiICh+ODE5MVVMKSk7CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiB9CiMgNTk0
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpleHRlcm4g
dW5zaWduZWQgbG9uZyB2b2xhdGlsZSBqaWZmaWVzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGlt
ZXJfdGlja3M7CmV4dGVybiB1bnNpZ25lZCBsb25nIGl0aW1lcl9uZXh0OwpleHRlcm4gc3RydWN0
IHRpbWV2YWwgeHRpbWU7CmV4dGVybiB2b2lkIGRvX3RpbWVyKHN0cnVjdCBwdF9yZWdzICopOwoK
ZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2ZfYnVmZmVyOwpleHRlcm4gdW5zaWduZWQgbG9uZyBw
cm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9zaGlmdDsKCgoKZXh0ZXJuIHZvaWQg
X193YWtlX3VwKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5y
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIF9fd2FrZV91cF9zeW5j
KHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHNsZWVwX29uKHdhaXRfcXVldWVfaGVh
ZF90ICpxKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBsb25nIHNsZWVwX29u
X3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHNpZ25lZCBsb25nIHRpbWVvdXQpIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIGludGVycnVwdGlibGVfc2xlZXBf
b24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0
ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KHdhaXRfcXVldWVfaGVhZF90
ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7Cgpl
eHRlcm4gaW50IHdha2VfdXBfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKiB0c2spIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2MjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNf
d2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGludCAqIHN0YXRfYWRkciwgaW50IG9wdGlvbnMsIHN0
cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4gaW50IGluX2dyb3VwX3AoZ2lkX3QpOwpleHRlcm4g
aW50IGluX2Vncm91cF9wKGdpZF90KTsKCmV4dGVybiB2b2lkIHByb2NfY2FjaGVzX2luaXQodm9p
ZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbHMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gdm9pZCBmbHVzaF9zaWduYWxfaGFuZGxlcnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gdm9pZCBzaWdfZXhpdChpbnQsIGludCwgc3RydWN0IHNpZ2luZm8gKik7CmV4dGVybiBpbnQg
ZGVxdWV1ZV9zaWduYWwoc2lnc2V0X3QgKiwgc2lnaW5mb190ICopOwpleHRlcm4gdm9pZCBibG9j
a19hbGxfc2lnbmFscyhpbnQgKCpub3RpZmllcikodm9pZCAqcHJpdiksIHZvaWQgKnByaXYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3NldF90ICptYXNrKTsKZXh0ZXJuIHZvaWQg
dW5ibG9ja19hbGxfc2lnbmFscyh2b2lkKTsKZXh0ZXJuIGludCBzZW5kX3NpZ19pbmZvKGludCwg
c3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGZvcmNl
X3NpZ19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpl
eHRlcm4gaW50IGtpbGxfcGdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsKZXh0
ZXJuIGludCBraWxsX3NsX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVy
biBpbnQga2lsbF9wcm9jX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVy
biB2b2lkIG5vdGlmeV9wYXJlbnQoc3RydWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2
b2lkIGRvX25vdGlmeV9wYXJlbnQoc3RydWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2
b2lkIGZvcmNlX3NpZyhpbnQsIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBzZW5k
X3NpZyhpbnQsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gaW50IGtpbGxfcGco
cGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGludCBraWxsX3NsKHBpZF90LCBpbnQsIGludCk7CmV4
dGVybiBpbnQga2lsbF9wcm9jKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQgZG9fc2lnYWN0
aW9uKGludCwgY29uc3Qgc3RydWN0IGtfc2lnYWN0aW9uICosIHN0cnVjdCBrX3NpZ2FjdGlvbiAq
KTsKZXh0ZXJuIGludCBkb19zaWdhbHRzdGFjayhjb25zdCBzdGFja190ICosIHN0YWNrX3QgKiwg
dW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIGludCBzaWduYWxfcGVuZGluZyhzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnNpZ3BlbmRpbmcgIT0gMCk7Cn0K
CgoKCgpzdGF0aWMgaW5saW5lIGludCBoYXNfcGVuZGluZ19zaWduYWxzKHNpZ3NldF90ICpzaWdu
YWwsIHNpZ3NldF90ICpibG9ja2VkKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWFkeTsKICAg
ICAgICBsb25nIGk7CgogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgIGZvciAoaSA9ICg2NCAvIDMyKSwgcmVhZHkgPSAwOyAtLWkgPj0g
MCA7KQogICAgICAgICAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1tpXSAmfiBi
bG9ja2VkLT5zaWdbaV07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0OiBy
ZWFkeSA9IHNpZ25hbC0+c2lnWzNdICZ+IGJsb2NrZWQtPnNpZ1szXTsKICAgICAgICAgICAgICAg
IHJlYWR5IHw9IHNpZ25hbC0+c2lnWzJdICZ+IGJsb2NrZWQtPnNpZ1syXTsKICAgICAgICAgICAg
ICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAg
ICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDI6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMV0g
Jn4gYmxvY2tlZC0+c2lnWzFdOwogICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdb
MF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgMTogcmVhZHkgPSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAg
fQogICAgICAgIHJldHVybiByZWFkeSAhPSAwOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHJl
Y2FsY19zaWdwZW5kaW5nKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkKewogICAgICAgIHQtPnNpZ3Bl
bmRpbmcgPSBoYXNfcGVuZGluZ19zaWduYWxzKCZ0LT5wZW5kaW5nLnNpZ25hbCwgJnQtPmJsb2Nr
ZWQpOwp9CgoKCnN0YXRpYyBpbmxpbmUgaW50IG9uX3NpZ19zdGFjayh1bnNpZ25lZCBsb25nIHNw
KQp7CiAgICAgICAgcmV0dXJuIChzcCAtIGdldF9jdXJyZW50KCktPnNhc19zc19zcCA8IGdldF9j
dXJyZW50KCktPnNhc19zc19zaXplKTsKfQoKc3RhdGljIGlubGluZSBpbnQgc2FzX3NzX2ZsYWdz
KHVuc2lnbmVkIGxvbmcgc3ApCnsKICAgICAgICByZXR1cm4gKGdldF9jdXJyZW50KCktPnNhc19z
c19zaXplID09IDAgPyAyCiAgICAgICAgICAgICAgICA6IG9uX3NpZ19zdGFjayhzcCkgPyAxIDog
MCk7Cn0KCmV4dGVybiBpbnQgcmVxdWVzdF9pcnEodW5zaWduZWQgaW50LAogICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiks
CiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywgY29uc3QgY2hhciAqLCB2b2lk
ICopOwpleHRlcm4gdm9pZCBmcmVlX2lycSh1bnNpZ25lZCBpbnQsIHZvaWQgKik7CiMgNzMxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5l
IGludCBzdXNlcih2b2lkKQp7CiAgICAgICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAw
MDAwID8gKDEgPDwgKDApKSAmIDB4MDAwMDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0cyAp
ICYmIGdldF9jdXJyZW50KCktPmV1aWQgPT0gMCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJl
bnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAg
ICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZnN1c2VyKHZvaWQp
CnsKICAgICAgICBpZiAoISggKDEgPDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkp
ICYgMHgwMDAwMDAwMCA6ICgxIDw8ICgwKSkgJiBzZWN1cmViaXRzICkgJiYgZ2V0X2N1cnJlbnQo
KS0+ZnN1aWQgPT0gMCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0g
MHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICBy
ZXR1cm4gMDsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBpbnQgY2FwYWJsZShpbnQgY2FwKQp7Cgog
ICAgICAgIGlmICgoKGdldF9jdXJyZW50KCktPmNhcF9lZmZlY3RpdmUpICYgKDEgPDwgKGNhcCkp
KSkKCgoKICAgICAgICB7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSAw
eDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJl
dHVybiAwOwp9CgoKCgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqIG1tX2FsbG9jKHZvaWQpOwoK
ZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBzdGFydF9sYXp5X3RsYih2b2lkKTsKZXh0ZXJuIHZv
aWQgZW5kX2xhenlfdGxiKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKCgpleHRlcm4gaW5saW5lIHZv
aWQgX19tbWRyb3Aoc3RydWN0IG1tX3N0cnVjdCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CnN0YXRpYyBpbmxpbmUgdm9pZCBtbWRyb3Aoc3RydWN0IG1tX3N0cnVjdCAqIG1tKQp7CiAg
ICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm1tLT5tbV9jb3VudCkpCiAgICAgICAgICAg
ICAgICBfX21tZHJvcChtbSk7Cn0KCgpleHRlcm4gdm9pZCBtbXB1dChzdHJ1Y3QgbW1fc3RydWN0
ICopOwoKZXh0ZXJuIHZvaWQgbW1fcmVsZWFzZSh2b2lkKTsKCgoKCmV4dGVybiBzdHJ1Y3QgZmls
ZSAqKiBhbGxvY19mZF9hcnJheShpbnQpOwpleHRlcm4gaW50IGV4cGFuZF9mZF9hcnJheShzdHJ1
Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVybiB2b2lkIGZyZWVfZmRfYXJyYXkoc3Ry
dWN0IGZpbGUgKiosIGludCk7CgpleHRlcm4gZmRfc2V0ICphbGxvY19mZHNldChpbnQpOwpleHRl
cm4gaW50IGV4cGFuZF9mZHNldChzdHJ1Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVy
biB2b2lkIGZyZWVfZmRzZXQoZmRfc2V0ICosIGludCk7CgpleHRlcm4gaW50IGNvcHlfdGhyZWFk
KGludCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgc3RydWN0
IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwdF9yZWdzICopOwpleHRlcm4gdm9pZCBmbHVzaF90aHJl
YWQodm9pZCk7CmV4dGVybiB2b2lkIGV4aXRfdGhyZWFkKHZvaWQpOwoKZXh0ZXJuIHZvaWQgZXhp
dF9tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRfZmlsZXMoc3RydWN0
IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X3NpZ2hhbmQoc3RydWN0IHRhc2tfc3Ry
dWN0ICopOwoKZXh0ZXJuIHZvaWQgcmVwYXJlbnRfdG9faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQg
ZGFlbW9uaXplKHZvaWQpOwoKZXh0ZXJuIGludCBkb19leGVjdmUoY2hhciAqLCBjaGFyICoqLCBj
aGFyICoqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIGludCBkb19mb3JrKHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBwdF9yZWdzICosIHVuc2lnbmVkIGxvbmcpOwoKZXh0
ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHdhaXRfcXVldWVf
dCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYWRkX3dh
aXRfcXVldWVfZXhjbHVzaXZlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3
YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0
X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4gbG9uZyBrZXJuZWxfdGhyZWFkKGludCAoKmZu
KSh2b2lkICopLCB2b2lkICogYXJnLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKIyA5MDYgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCBkZWxfZnJvbV9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKQp7CiAgICAgICAgbnJf
cnVubmluZy0tOwogICAgICAgIHAtPnNsZWVwX3RpbWUgPSBqaWZmaWVzOwogICAgICAgIGxpc3Rf
ZGVsKCZwLT5ydW5fbGlzdCk7CiAgICAgICAgcC0+cnVuX2xpc3QubmV4dCA9ICgodm9pZCAqKTAp
Owp9CgpzdGF0aWMgaW5saW5lIGludCB0YXNrX29uX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVj
dCAqcCkKewogICAgICAgIHJldHVybiAocC0+cnVuX2xpc3QubmV4dCAhPSAoKHZvaWQgKikwKSk7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnApCnsKICAgICAgICBpZiAodGFza19vbl9ydW5xdWV1ZShwKSkKICAgICAgICAgICAgICAgIF9f
b3V0X29mX2xpbmVfYnVnKDkyMik7CiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
Y2xpIjogOiA6Im1lbW9yeSIpOyB3cml0ZV9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgbnJfdGhyZWFkcy0tOwogICAgICAgIHVuaGFzaF9waWQocCk7CiAgICAgICAg
ZG8geyAocCktPm5leHRfdGFzay0+cHJldl90YXNrID0gKHApLT5wcmV2X3Rhc2s7IChwKS0+cHJl
dl90YXNrLT5uZXh0X3Rhc2sgPSAocCktPm5leHRfdGFzazsgaWYgKChwKS0+cF9vc3B0cikgKHAp
LT5wX29zcHRyLT5wX3lzcHRyID0gKHApLT5wX3lzcHRyOyBpZiAoKHApLT5wX3lzcHRyKSAocCkt
PnBfeXNwdHItPnBfb3NwdHIgPSAocCktPnBfb3NwdHI7IGVsc2UgKHApLT5wX3BwdHItPnBfY3B0
ciA9IChwKS0+cF9vc3B0cjsgfSB3aGlsZSAoMCk7CiAgICAgICAgbGlzdF9kZWwoJnAtPnRocmVh
ZF9ncm91cCk7CiAgICAgICAgZG8geyBhc20gdm9sYXRpbGUoImxvY2sgOyBhZGRsICQiICIweDAx
MDAwMDAwIiAiLCUwIjoiPW0iICgoJnRhc2tsaXN0X2xvY2spLT5sb2NrKSA6IDogIm1lbW9yeSIp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsK
fQoKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX2xvY2soc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7
CiAgICAgICAgc3Bpbl9sb2NrKCZwLT5hbGxvY19sb2NrKTsKfQoKc3RhdGljIGlubGluZSB2b2lk
IHRhc2tfdW5sb2NrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHNwaW5fdW5sb2Nr
KCZwLT5hbGxvY19sb2NrKTsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIGRfcGF0aChzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnksIHN0cnVjdCB2ZnNtb3VudCAqdmZzbW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgaW50IGJ1ZmxlbikKewogICAgICAgIGNoYXIgKnJl
czsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKnJvb3RtbnQ7CiAgICAgICAgc3RydWN0IGRlbnRy
eSAqcm9vdDsKICAgICAgICByZWFkX2xvY2soJmdldF9jdXJyZW50KCktPmZzLT5sb2NrKTsKICAg
ICAgICByb290bW50ID0gbW50Z2V0KGdldF9jdXJyZW50KCktPmZzLT5yb290bW50KTsKICAgICAg
ICByb290ID0gZGdldChnZXRfY3VycmVudCgpLT5mcy0+cm9vdCk7CiAgICAgICAgYXNtIHZvbGF0
aWxlKCJsb2NrIDsgaW5jbCAlMCIgOiI9bSIgKCgmZ2V0X2N1cnJlbnQoKS0+ZnMtPmxvY2spLT5s
b2NrKSA6IDogIm1lbW9yeSIpOwogICAgICAgIHNwaW5fbG9jaygmZGNhY2hlX2xvY2spOwogICAg
ICAgIHJlcyA9IF9fZF9wYXRoKGRlbnRyeSwgdmZzbW50LCByb290LCByb290bW50LCBidWYsIGJ1
Zmxlbik7CiAgICAgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsKICAgICAgICBkcHV0KHJv
b3QpOwogICAgICAgIG1udHB1dChyb290bW50KTsKICAgICAgICByZXR1cm4gcmVzOwp9CgpzdGF0
aWMgaW5saW5lIGludCBuZWVkX3Jlc2NoZWQodm9pZCkKewogICAgICAgIHJldHVybiAoX19idWls
dGluX2V4cGVjdCgoZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSwwKSk7Cn0KCmV4dGVybiB2
b2lkIF9fY29uZF9yZXNjaGVkKHZvaWQpOwpzdGF0aWMgaW5saW5lIHZvaWQgY29uZF9yZXNjaGVk
KHZvaWQpCnsKICAgICAgICBpZiAobmVlZF9yZXNjaGVkKCkpCiAgICAgICAgICAgICAgICBfX2Nv
bmRfcmVzY2hlZCgpOwp9CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
bW0uaCIgMgoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9t
bXpvbmUuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpv
bmUuaCIKdHlwZWRlZiBzdHJ1Y3QgZnJlZV9hcmVhX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqbWFwOwp9IGZyZWVfYXJl
YV90OwoKc3RydWN0IHBnbGlzdF9kYXRhOwojIDM3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRlZiBzdHJ1Y3Qgem9uZV9zdHJ1Y3QgewoKCgogICAg
ICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfcGFnZXM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBwYWdlc19taW4sIHBhZ2VzX2xvdywgcGFnZXNfaGlnaDsKICAg
ICAgICBpbnQgbmVlZF9iYWxhbmNlOwoKCgoKICAgICAgICBmcmVlX2FyZWFfdCBmcmVlX2FyZWFb
MTBdOwojIDc2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK
ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCAqIHdhaXRfdGFibGU7CiAgICAgICAgdW5zaWduZWQg
bG9uZyB3YWl0X3RhYmxlX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyB3YWl0X3RhYmxlX3No
aWZ0OwoKCgoKICAgICAgICBzdHJ1Y3QgcGdsaXN0X2RhdGEgKnpvbmVfcGdkYXQ7CiAgICAgICAg
c3RydWN0IHBhZ2UgKnpvbmVfbWVtX21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHpvbmVfc3Rh
cnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X21hcG5yOwoKCgoKICAg
ICAgICBjaGFyICpuYW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKfSB6b25lX3Q7CiMg
MTExICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRl
ZiBzdHJ1Y3Qgem9uZWxpc3Rfc3RydWN0IHsKICAgICAgICB6b25lX3QgKiB6b25lcyBbMyArMV07
Cn0gem9uZWxpc3RfdDsKIyAxMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L21tem9uZS5oIgpzdHJ1Y3QgYm9vdG1lbV9kYXRhOwp0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0
YSB7CiAgICAgICAgem9uZV90IG5vZGVfem9uZXNbM107CiAgICAgICAgem9uZWxpc3RfdCBub2Rl
X3pvbmVsaXN0c1sweDBmICsxXTsKICAgICAgICBpbnQgbnJfem9uZXM7CiAgICAgICAgc3RydWN0
IHBhZ2UgKm5vZGVfbWVtX21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nICp2YWxpZF9hZGRyX2Jp
dG1hcDsKICAgICAgICBzdHJ1Y3QgYm9vdG1lbV9kYXRhICpiZGF0YTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIG5vZGVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0
X21hcG5yOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zaXplOwogICAgICAgIGludCBub2Rl
X2lkOwogICAgICAgIHN0cnVjdCBwZ2xpc3RfZGF0YSAqbm9kZV9uZXh0Owp9IHBnX2RhdGFfdDsK
CmV4dGVybiBpbnQgbnVtbm9kZXM7CmV4dGVybiBwZ19kYXRhX3QgKnBnZGF0X2xpc3Q7CiMgMTUz
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IHBh
Z2U7CmV4dGVybiB2b2lkIHNob3dfZnJlZV9hcmVhc19jb3JlKHBnX2RhdGFfdCAqcGdkYXQpOwpl
eHRlcm4gdm9pZCBmcmVlX2FyZWFfaW5pdF9jb3JlKGludCBuaWQsIHBnX2RhdGFfdCAqcGdkYXQs
IHN0cnVjdCBwYWdlICoqZ21hcCwKICB1bnNpZ25lZCBsb25nICp6b25lc19zaXplLCB1bnNpZ25l
ZCBsb25nIHBhZGRyLCB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSwKICBzdHJ1Y3QgcGFnZSAq
cG1hcCk7CgpleHRlcm4gcGdfZGF0YV90IGNvbnRpZ19wYWdlX2RhdGE7CiMgMTgwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RhdGljIGlubGluZSB6b25l
X3QgKm5leHRfem9uZSh6b25lX3QgKnpvbmUpCnsKICAgICAgICBwZ19kYXRhX3QgKnBnZGF0ID0g
em9uZS0+em9uZV9wZ2RhdDsKCiAgICAgICAgaWYgKHpvbmUgLSBwZ2RhdC0+bm9kZV96b25lcyA8
IDMgLSAxKQogICAgICAgICAgICAgICAgem9uZSsrOwoKICAgICAgICBlbHNlIGlmIChwZ2RhdC0+
bm9kZV9uZXh0KSB7CiAgICAgICAgICAgICAgICBwZ2RhdCA9IHBnZGF0LT5ub2RlX25leHQ7CiAg
ICAgICAgICAgICAgICB6b25lID0gcGdkYXQtPm5vZGVfem9uZXM7CiAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICB6b25lID0gKCh2b2lkICopMCk7CgogICAgICAgIHJldHVybiB6b25lOwp9
CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zd2FwLmgiIDEKIyAyNSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3dhcC5oIgp1bmlvbiBzd2FwX2hlYWRlciB7
CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciByZXNlcnZlZFso
MVVMIDw8IDEyKSAtIDEwXTsKICAgICAgICAgICAgICAgIGNoYXIgbWFnaWNbMTBdOwogICAgICAg
IH0gbWFnaWM7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciBi
b290Yml0c1sxMDI0XTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGxhc3RfcGFnZTsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBucl9iYWRwYWdlczsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5n
WzEyNV07CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFkcGFnZXNbMV07CiAgICAgICAg
fSBpbmZvOwp9OwojIDY0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zd2Fw
LmgiCnN0cnVjdCBzd2FwX2luZm9fc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7
CiAgICAgICAga2Rldl90IHN3YXBfZGV2aWNlOwogICAgICAgIHNwaW5sb2NrX3Qgc2Rldl9sb2Nr
OwogICAgICAgIHN0cnVjdCBkZW50cnkgKiBzd2FwX2ZpbGU7CiAgICAgICAgc3RydWN0IHZmc21v
dW50ICpzd2FwX3Zmc21udDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqIHN3YXBfbWFwOwogICAg
ICAgIHVuc2lnbmVkIGludCBsb3dlc3RfYml0OwogICAgICAgIHVuc2lnbmVkIGludCBoaWdoZXN0
X2JpdDsKICAgICAgICB1bnNpZ25lZCBpbnQgY2x1c3Rlcl9uZXh0OwogICAgICAgIHVuc2lnbmVk
IGludCBjbHVzdGVyX25yOwogICAgICAgIGludCBwcmlvOwogICAgICAgIGludCBwYWdlczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIG1heDsKICAgICAgICBpbnQgbmV4dDsKfTsKCmV4dGVybiBpbnQg
bnJfc3dhcF9wYWdlczsKCgoKCmV4dGVybiB1bnNpZ25lZCBpbnQgbnJfZnJlZV9wYWdlcyh2b2lk
KTsKZXh0ZXJuIHVuc2lnbmVkIGludCBucl9mcmVlX2J1ZmZlcl9wYWdlcyh2b2lkKTsKZXh0ZXJu
IGludCBucl9hY3RpdmVfcGFnZXM7CmV4dGVybiBpbnQgbnJfaW5hY3RpdmVfcGFnZXM7CmV4dGVy
biBhdG9taWNfdCBwYWdlX2NhY2hlX3NpemU7CmV4dGVybiBhdG9taWNfdCBidWZmZXJtZW1fcGFn
ZXM7CgpleHRlcm4gc3BpbmxvY2tfY2FjaGVsaW5lX3QgcGFnZWNhY2hlX2xvY2tfY2FjaGVsaW5l
OwoKCmV4dGVybiB2b2lkIF9fcmVtb3ZlX2lub2RlX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgoKc3Ry
dWN0IHRhc2tfc3RydWN0OwpzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CnN0cnVjdCBzeXNpbmZvOwoK
c3RydWN0IHpvbmVfdDsKCgpleHRlcm4gdm9pZCBscnVfY2FjaGVfYWRkKHN0cnVjdCBwYWdlICop
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19scnVfY2FjaGVfZGVs
KHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQg
bHJ1X2NhY2hlX2RlbChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CgpleHRlcm4gdm9pZCBhY3RpdmF0ZV9wYWdlKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIHN3YXBfc2V0dXAodm9pZCk7CgoKZXh0ZXJuIHdh
aXRfcXVldWVfaGVhZF90IGtzd2FwZF93YWl0OwpleHRlcm4gaW50IHRyeV90b19mcmVlX3BhZ2Vz
X3pvbmUoem9uZV90ICosIHVuc2lnbmVkIGludCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpleHRlcm4gaW50IHRyeV90b19mcmVlX3BhZ2VzKHVuc2lnbmVkIGludCkgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwoKCmV4dGVybiB2b2lkIHJ3X3N3YXBfcGFnZShpbnQsIHN0cnVjdCBw
YWdlICopOwpleHRlcm4gdm9pZCBfX3J3X3N3YXBfcGFnZV9ub2xvY2soaW50LCBzd3BfZW50cnlf
dCwgY2hhciAqLCBpbnQpOwojIDEzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvc3dhcC5oIgpleHRlcm4gdm9pZCBzaG93X3N3YXBfY2FjaGVfaW5mbyh2b2lkKTsKCmV4dGVy
biBpbnQgYWRkX3RvX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKiwgc3dwX2VudHJ5X3QpOwpleHRl
cm4gdm9pZCBfX2RlbGV0ZV9mcm9tX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBhZ2UpOwpleHRl
cm4gdm9pZCBkZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJu
IHZvaWQgZnJlZV9wYWdlX2FuZF9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJu
IHN0cnVjdCBwYWdlICogbG9va3VwX3N3YXBfY2FjaGUoc3dwX2VudHJ5X3QpOwpleHRlcm4gc3Ry
dWN0IHBhZ2UgKiByZWFkX3N3YXBfY2FjaGVfYXN5bmMoc3dwX2VudHJ5X3QpOwoKCmV4dGVybiB2
b2lkIG91dF9vZl9tZW1vcnkodm9pZCk7CgoKZXh0ZXJuIGludCB0b3RhbF9zd2FwX3BhZ2VzOwpl
eHRlcm4gdW5zaWduZWQgaW50IG5yX3N3YXBmaWxlczsKZXh0ZXJuIHN0cnVjdCBzd2FwX2luZm9f
c3RydWN0IHN3YXBfaW5mb1tdOwpleHRlcm4gaW50IGlzX3N3YXBfcGFydGl0aW9uKGtkZXZfdCk7
CmV4dGVybiB2b2lkIHNpX3N3YXBpbmZvKHN0cnVjdCBzeXNpbmZvICopOwpleHRlcm4gc3dwX2Vu
dHJ5X3QgZ2V0X3N3YXBfcGFnZSh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2V0X3N3YXBoYW5kbGVfaW5m
byhzd3BfZW50cnlfdCwgdW5zaWduZWQgbG9uZyAqLCBrZGV2X3QgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqKik7CmV4dGVybiBpbnQgc3dh
cF9kdXBsaWNhdGUoc3dwX2VudHJ5X3QpOwpleHRlcm4gaW50IHZhbGlkX3N3YXBoYW5kbGVzKHN3
cF9lbnRyeV90LCB1bnNpZ25lZCBsb25nICopOwpleHRlcm4gdm9pZCBzd2FwX2ZyZWUoc3dwX2Vu
dHJ5X3QpOwpleHRlcm4gdm9pZCBmcmVlX3N3YXBfYW5kX2NhY2hlKHN3cF9lbnRyeV90KTsKc3Ry
dWN0IHN3YXBfbGlzdF90IHsKICAgICAgICBpbnQgaGVhZDsKICAgICAgICBpbnQgbmV4dDsKfTsK
ZXh0ZXJuIHN0cnVjdCBzd2FwX2xpc3RfdCBzd2FwX2xpc3Q7CiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgbG9uZyBzeXNfc3dhcG9mZihjb25zdCBjaGFyICopOwogX19hdHRyaWJ1dGVfXygo
cmVncGFybSgwKSkpIGxvbmcgc3lzX3N3YXBvbihjb25zdCBjaGFyICosIGludCk7CgpleHRlcm4g
c3BpbmxvY2tfY2FjaGVsaW5lX3QgcGFnZW1hcF9scnVfbG9ja19jYWNoZWxpbmU7CgoKZXh0ZXJu
IHZvaWQgbWFya19wYWdlX2FjY2Vzc2VkKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMykpKTsKIyAyMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3N3
YXAuaCIKZXh0ZXJuIHNwaW5sb2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4dGVybiB2b2lkIHNobWVt
X3VudXNlKHN3cF9lbnRyeV90IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7CiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKCgpleHRlcm4gdW5zaWduZWQg
bG9uZyBtYXhfbWFwbnI7CmV4dGVybiB1bnNpZ25lZCBsb25nIG51bV9waHlzcGFnZXM7CmV4dGVy
biB1bnNpZ25lZCBsb25nIG51bV9tYXBwZWRwYWdlczsKZXh0ZXJuIHZvaWQgKiBoaWdoX21lbW9y
eTsKZXh0ZXJuIGludCBwYWdlX2NsdXN0ZXI7CgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBhY3Rp
dmVfbGlzdDsKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgaW5hY3RpdmVfbGlzdDsKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDEKIyAyNCAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJuIHBnZF90IHN3YXBw
ZXJfcGdfZGlyWzEwMjRdOwpleHRlcm4gdm9pZCBwYWdpbmdfaW5pdCh2b2lkKTsKIyA2OCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgcGdrZXJuX21hc2s7CiMgMTA0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vcGd0YWJsZS5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBlbXB0eV96ZXJvX3BhZ2VbMTAyNF07
CiMgMTI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIiAxCiMg
MzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIgpz
dGF0aWMgaW5saW5lIGludCBwZ2Rfbm9uZShwZ2RfdCBwZ2QpIHsgcmV0dXJuIDA7IH0Kc3RhdGlj
IGlubGluZSBpbnQgcGdkX2JhZChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDA7IH0Kc3RhdGljIGlubGlu
ZSBpbnQgcGdkX3ByZXNlbnQocGdkX3QgcGdkKSB7IHJldHVybiAxOyB9CiMgNTUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIgpzdGF0aWMgaW5saW5l
IHBtZF90ICogcG1kX29mZnNldChwZ2RfdCAqIGRpciwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7
CiAgICAgICAgcmV0dXJuIChwbWRfdCAqKSBkaXI7Cn0KIyAxMjUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIKIyAyNjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHBnMFsxMDI0XTsK
IyAyODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRp
YyBpbmxpbmUgaW50IHB0ZV9yZWFkKHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAm
IDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV9leGVjKHB0ZV90IHB0ZSkgeyByZXR1cm4g
KHB0ZSkucHRlX2xvdyAmIDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV9kaXJ0eShwdGVf
dCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDA0MDsgfQpzdGF0aWMgaW5saW5lIGlu
dCBwdGVfeW91bmcocHRlX3QgcHRlKSB7IHJldHVybiAocHRlKS5wdGVfbG93ICYgMHgwMjA7IH0K
c3RhdGljIGlubGluZSBpbnQgcHRlX3dyaXRlKHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRl
X2xvdyAmIDB4MDAyOyB9CgpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9yZHByb3RlY3QocHRlX3Qg
cHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxp
bmUgcHRlX3QgcHRlX2V4cHJvdGVjdChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgw
MDQ7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtjbGVhbihwdGVfdCBw
dGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwNDA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGlu
ZSBwdGVfdCBwdGVfbWtvbGQocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDIwOyBy
ZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX3dycHJvdGVjdChwdGVfdCBwdGUp
IHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwMDI7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBw
dGVfdCBwdGVfbWtyZWFkKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDA0OyByZXR1
cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rZXhlYyhwdGVfdCBwdGUpIHsgKHB0
ZSkucHRlX2xvdyB8PSAweDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0
ZV9ta2RpcnR5KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDQwOyByZXR1cm4gcHRl
OyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21reW91bmcocHRlX3QgcHRlKSB7IChwdGUpLnB0
ZV9sb3cgfD0gMHgwMjA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWt3
cml0ZShwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDAwMjsgcmV0dXJuIHB0ZTsgfQoK
c3RhdGljIGlubGluZSBpbnQgcHRlcF90ZXN0X2FuZF9jbGVhcl9kaXJ0eShwdGVfdCAqcHRlcCkg
eyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KDYsIHB0ZXApOyB9CnN0YXRpYyBpbmxpbmUgaW50
IHB0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcocHRlX3QgKnB0ZXApIHsgcmV0dXJuIHRlc3RfYW5k
X2NsZWFyX2JpdCg1LCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIHZvaWQgcHRlcF9zZXRfd3Jwcm90
ZWN0KHB0ZV90ICpwdGVwKSB7IGNsZWFyX2JpdCgxLCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIHZv
aWQgcHRlcF9ta2RpcnR5KHB0ZV90ICpwdGVwKSB7IHNldF9iaXQoNiwgcHRlcCk7IH0KIyAzMTQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRpYyBpbmxp
bmUgcHRlX3QgcHRlX21vZGlmeShwdGVfdCBwdGUsIHBncHJvdF90IG5ld3Byb3QpCnsKICAgICAg
ICBwdGUucHRlX2xvdyAmPSAoKH4oKDFVTCA8PCAxMiktMSkpIHwgMHgwMjAgfCAweDA0MCk7CiAg
ICAgICAgcHRlLnB0ZV9sb3cgfD0gKChuZXdwcm90KS5wZ3Byb3QpOwogICAgICAgIHJldHVybiBw
dGU7Cn0KIyAzNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgi
CnN0cnVjdCBwYWdlOwppbnQgY2hhbmdlX3BhZ2VfYXR0cihzdHJ1Y3QgcGFnZSAqLCBpbnQsIHBn
cHJvdF90IHByb3QpOwojIDI3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9t
bS5oIiAyCiMgNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21tLmgiCnN0
cnVjdCB2bV9hcmVhX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqIHZtX21tOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdm1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9l
bmQ7CgoKCiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bV9uZXh0OwoKICAgICAgICBw
Z3Byb3RfdCB2bV9wYWdlX3Byb3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9mbGFnczsKCiAg
ICAgICAgcmJfbm9kZV90IHZtX3JiOwoKCgoKCgogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVj
dCAqdm1fbmV4dF9zaGFyZTsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bV9wcHJl
dl9zaGFyZTsKCgogICAgICAgIHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCAqIHZtX29wczsK
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgdm1fcGdvZmY7CgogICAgICAgIHN0cnVjdCBmaWxlICog
dm1fZmlsZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX3JhZW5kOwogICAgICAgIHZvaWQgKiB2
bV9wcml2YXRlX2RhdGE7Cn07CiMgMTE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9tbS5oIgpleHRlcm4gaW50IHZtX21pbl9yZWFkYWhlYWQ7CmV4dGVybiBpbnQgdm1fbWF4
X3JlYWRhaGVhZDsKCgoKCgpleHRlcm4gcGdwcm90X3QgcHJvdGVjdGlvbl9tYXBbMTZdOwoKCgoK
CgoKc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IHsKICAgICAgICB2b2lkICgqb3Blbikoc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICogYXJlYSk7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKiBhcmVhKTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqICgqbm9wYWdlKShz
dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBhcmVhLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB1
bnVzZWQpOwp9OwojIDE1MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbW0u
aCIKdHlwZWRlZiBzdHJ1Y3QgcGFnZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0Owog
ICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgaW5kZXg7CiAgICAgICAgc3RydWN0IHBhZ2UgKm5leHRfaGFzaDsKCiAgICAgICAgYXRvbWlj
X3QgY291bnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBscnU7CgogICAgICAgIHN0cnVjdCBwYWdlICoqcHByZXZfaGFzaDsKICAgICAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiBidWZmZXJzOwojIDE4MCAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvbW0uaCIKfSBtZW1fbWFwX3Q7CiMgMzMwICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9tbS5oIgpzdHJ1Y3Qgem9uZV9zdHJ1Y3Q7CmV4dGVybiBzdHJ1
Y3Qgem9uZV9zdHJ1Y3QgKnpvbmVfdGFibGVbXTsKCnN0YXRpYyBpbmxpbmUgem9uZV90ICpwYWdl
X3pvbmUoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICAgICAgICByZXR1cm4gem9uZV90YWJsZVtwYWdl
LT5mbGFncyA+PiAoMzIgLSA4KV07Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZV96b25l
KHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIHpvbmVfbnVtKQp7CiAgICAgICAgcGFn
ZS0+ZmxhZ3MgJj0gfih+MFVMIDw8ICgzMiAtIDgpKTsKICAgICAgICBwYWdlLT5mbGFncyB8PSB6
b25lX251bSA8PCAoMzIgLSA4KTsKfQojIDM3NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvbW0uaCIKZXh0ZXJuIHZvaWQgc2V0X3BhZ2VfZGlydHkoc3RydWN0IHBhZ2UgKikg
X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDQyNyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvbW0uaCIKZXh0ZXJuIG1lbV9tYXBfdCAqIG1lbV9tYXA7CgoKCgoKCgpl
eHRlcm4gc3RydWN0IHBhZ2UgKiBfYWxsb2NfcGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1
bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0
cnVjdCBwYWdlICogX19hbGxvY19wYWdlcyh1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVk
IGludCBvcmRlciwgem9uZWxpc3RfdCAqem9uZWxpc3QpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKZXh0ZXJuIHN0cnVjdCBwYWdlICogYWxsb2NfcGFnZXNfbm9kZShpbnQgbmlkLCB1bnNp
Z25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcik7CgpzdGF0aWMgaW5saW5lIHN0
cnVjdCBwYWdlICogYWxsb2NfcGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBp
bnQgb3JkZXIpCnsKCgoKICAgICAgICBpZiAob3JkZXIgPj0gMTApCiAgICAgICAgICAgICAgICBy
ZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIF9hbGxvY19wYWdlcyhnZnBfbWFzaywg
b3JkZXIpOwp9CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIF9fZ2V0X2ZyZWVfcGFnZXModW5zaWdu
ZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ2V0X3plcm9lZF9wYWdlKHVuc2lnbmVkIGlu
dCBnZnBfbWFzaykgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDQ2OCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbW0uaCIKZXh0ZXJuIHZvaWQgX19mcmVlX3BhZ2Vz
KHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHIsIHVu
c2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKCgoKZXh0ZXJu
IHZvaWQgc2hvd19mcmVlX2FyZWFzKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNf
bm9kZShwZ19kYXRhX3QgKnBnZGF0KTsKCmV4dGVybiB2b2lkIGNsZWFyX3BhZ2VfdGFibGVzKHN0
cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgaW50KTsKCmV4dGVybiBpbnQgZmFpbF93
cml0ZXBhZ2Uoc3RydWN0IHBhZ2UgKik7CnN0cnVjdCBwYWdlICogc2htZW1fbm9wYWdlKHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgdW51c2Vk
KTsKc3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXAoY2hhciAqIG5hbWUsIGxvZmZfdCBzaXpl
KTsKZXh0ZXJuIHZvaWQgc2htZW1fbG9jayhzdHJ1Y3QgZmlsZSAqIGZpbGUsIGludCBsb2NrKTsK
ZXh0ZXJuIGludCBzaG1lbV96ZXJvX3NldHVwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKCmV4
dGVybiB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBs
b25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBpbnQgY29weV9wYWdlX3Jh
bmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLCBzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CmV4dGVybiBpbnQgcmVtYXBfcGFnZV9yYW5nZSh1bnNpZ25l
ZCBsb25nIGZyb20sIHVuc2lnbmVkIGxvbmcgdG8sIHVuc2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90
X3QgcHJvdCk7CmV4dGVybiBpbnQgemVyb21hcF9wYWdlX3JhbmdlKHVuc2lnbmVkIGxvbmcgZnJv
bSwgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKCmV4dGVybiBpbnQgdm10cnVu
Y2F0ZShzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgbG9mZl90IG9mZnNldCk7CmV4dGVybiBwbWRfdCAq
X19wbWRfYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxv
bmcgYWRkcmVzcykgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gcHRlX3QgKnB0
ZV9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBh
ZGRyZXNzKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgaGFuZGxlX21t
X2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1
bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0ZV9hY2Nlc3MpOwpleHRlcm4gaW50IG1ha2Vf
cGFnZXNfcHJlc2VudCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kKTsKZXh0
ZXJuIGludCBhY2Nlc3NfcHJvY2Vzc192bShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWdu
ZWQgbG9uZyBhZGRyLCB2b2lkICpidWYsIGludCBsZW4sIGludCB3cml0ZSk7CmV4dGVybiBpbnQg
cHRyYWNlX3JlYWRkYXRhKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIHNy
YywgY2hhciAqZHN0LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBwdHJhY2Vfd3JpdGVkYXRhKHN0cnVj
dCB0YXNrX3N0cnVjdCAqdHNrLCBjaGFyICogc3JjLCB1bnNpZ25lZCBsb25nIGRzdCwgaW50IGxl
bik7CmV4dGVybiBpbnQgcHRyYWNlX2F0dGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CmV4
dGVybiBpbnQgcHRyYWNlX2RldGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdW5zaWduZWQgaW50
KTsKZXh0ZXJuIHZvaWQgcHRyYWNlX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gaW50IHB0cmFjZV9jaGVja19hdHRhY2goc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBpbnQg
a2lsbCk7CgppbnQgZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVj
dCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LAogICAgICAgICAgICAgICAgaW50
IGxlbiwgaW50IHdyaXRlLCBpbnQgZm9yY2UsIHN0cnVjdCBwYWdlICoqcGFnZXMsIHN0cnVjdCB2
bV9hcmVhX3N0cnVjdCAqKnZtYXMpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHBtZF90ICpwbWRfYWxs
b2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVz
cykKewogICAgICAgIGlmIChwZ2Rfbm9uZSgqcGdkKSkKICAgICAgICAgICAgICAgIHJldHVybiBf
X3BtZF9hbGxvYyhtbSwgcGdkLCBhZGRyZXNzKTsKICAgICAgICByZXR1cm4gcG1kX29mZnNldChw
Z2QsIGFkZHJlc3MpOwp9CgpleHRlcm4gaW50IHBndF9jYWNoZV93YXRlclsyXTsKZXh0ZXJuIGlu
dCBjaGVja19wZ3RfY2FjaGUodm9pZCk7CgpleHRlcm4gdm9pZCBmcmVlX2FyZWFfaW5pdCh1bnNp
Z25lZCBsb25nICogem9uZXNfc2l6ZSk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0X25vZGUo
aW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKnBtYXAsCiAgICAgICAgdW5z
aWduZWQgbG9uZyAqIHpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9wYWRkciwK
ICAgICAgICB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSk7CmV4dGVybiB2b2lkIG1lbV9pbml0
KHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X21lbSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2lfbWVtaW5m
byhzdHJ1Y3Qgc3lzaW5mbyAqIHZhbCk7CmV4dGVybiB2b2lkIHN3YXBpbl9yZWFkYWhlYWQoc3dw
X2VudHJ5X3QpOwoKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlIHN3YXBwZXJfc3BhY2U7CgoK
c3RhdGljIGlubGluZSBpbnQgaXNfcGFnZV9jYWNoZV9mcmVlYWJsZShzdHJ1Y3QgcGFnZSAqIHBh
Z2UpCnsKICAgICAgICByZXR1cm4gKCgmKHBhZ2UpLT5jb3VudCktPmNvdW50ZXIpIC0gISFwYWdl
LT5idWZmZXJzID09IDE7Cn0KCmV4dGVybiBpbnQgY2FuX3NoYXJlX3N3YXBfcGFnZShzdHJ1Y3Qg
cGFnZSAqKTsKZXh0ZXJuIGludCByZW1vdmVfZXhjbHVzaXZlX3N3YXBfcGFnZShzdHJ1Y3QgcGFn
ZSAqKTsKCmV4dGVybiB2b2lkIF9fZnJlZV9wdGUocHRlX3QpOwoKCmV4dGVybiB2b2lkIGxvY2tf
dm1hX21hcHBpbmdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgdW5sb2Nr
X3ZtYV9tYXBwaW5ncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGluc2Vy
dF92bV9zdHJ1Y3Qoc3RydWN0IG1tX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7
CmV4dGVybiB2b2lkIF9faW5zZXJ0X3ZtX3N0cnVjdChzdHJ1Y3QgbW1fc3RydWN0ICosIHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgYnVpbGRfbW1hcF9yYihzdHJ1Y3QgbW1f
c3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X21tYXAoc3RydWN0IG1tX3N0cnVjdCAqKTsKCmV4
dGVybiB1bnNpZ25lZCBsb25nIGdldF91bm1hcHBlZF9hcmVhKHN0cnVjdCBmaWxlICosIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fbW1hcF9wZ29mZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5z
aWduZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25n
IHByb3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIHBnb2ZmKTsK
CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCB1
bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgICAgdW5zaWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxv
bmcgcHJvdCwKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0
KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXQgPSAtMjI7CiAgICAgICAgaWYgKChvZmZzZXQg
KyAoKChsZW4pKygxVUwgPDwgMTIpLTEpJih+KCgxVUwgPDwgMTIpLTEpKSkpIDwgb2Zmc2V0KQog
ICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgaWYgKCEob2Zmc2V0ICYgfih+KCgxVUwg
PDwgMTIpLTEpKSkpCiAgICAgICAgICAgICAgICByZXQgPSBkb19tbWFwX3Bnb2ZmKGZpbGUsIGFk
ZHIsIGxlbiwgcHJvdCwgZmxhZywgb2Zmc2V0ID4+IDEyKTsKb3V0OgogICAgICAgIHJldHVybiBy
ZXQ7Cn0KCmV4dGVybiBpbnQgZG9fbXVubWFwKHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQg
bG9uZywgc2l6ZV90KTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRvX2Jyayh1bnNpZ25lZCBsb25n
LCB1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3ZtYV91bmxpbmsoc3RydWN0
IG1tX3N0cnVjdCAqIG1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqIHByZXYpCnsKICAgICAgICBwcmV2LT52bV9uZXh0ID0gdm1hLT52bV9uZXh0
OwogICAgICAgIHJiX2VyYXNlKCZ2bWEtPnZtX3JiLCAmbW0tPm1tX3JiKTsKICAgICAgICBpZiAo
bW0tPm1tYXBfY2FjaGUgPT0gdm1hKQogICAgICAgICAgICAgICAgbW0tPm1tYXBfY2FjaGUgPSBw
cmV2Owp9CgpzdGF0aWMgaW5saW5lIGludCBjYW5fdm1hX21lcmdlKHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyB2bV9mbGFncykKewogICAgICAgIGlmICghdm1hLT52
bV9maWxlICYmIHZtYS0+dm1fZmxhZ3MgPT0gdm1fZmxhZ3MpCiAgICAgICAgICAgICAgICByZXR1
cm4gMTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKfQoKc3RydWN0IHpv
bmVfdDsKCmV4dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBwYWdlICopOwpleHRl
cm4gdW5zaWduZWQgbG9uZyBwYWdlX3VudXNlKHN0cnVjdCBwYWdlICopOwpleHRlcm4gdm9pZCB0
cnVuY2F0ZV9pbm9kZV9wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QpOwoKCmV4
dGVybiBpbnQgZmlsZW1hcF9zeW5jKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBs
b25nLCBzaXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqZmlsZW1hcF9u
b3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CiMgNjMx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbS5oIgpzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGludCBwZl9nZnBfbWFzayh1bnNpZ25lZCBpbnQgZ2ZwX21hc2spCnsKCiAgICAg
ICAgaWYgKGdldF9jdXJyZW50KCktPmZsYWdzICYgMHgwMDAwNDAwMCkKICAgICAgICAgICAgICAg
IGdmcF9tYXNrICY9IH4oMHg0MCB8IDB4ODAgfCAweDEwMCk7CgogICAgICAgIHJldHVybiBnZnBf
bWFzazsKfQoKCgpzdGF0aWMgaW5saW5lIGludCBleHBhbmRfc3RhY2soc3RydWN0IHZtX2FyZWFf
c3RydWN0ICogdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpCnsKICAgICAgICB1bnNpZ25lZCBs
b25nIGdyb3c7CgoKCgoKCiAgICAgICAgYWRkcmVzcyAmPSAofigoMVVMIDw8IDEyKS0xKSk7CiAg
ICAgICAgc3Bpbl9sb2NrKCZ2bWEtPnZtX21tLT5wYWdlX3RhYmxlX2xvY2spOwogICAgICAgIGdy
b3cgPSAodm1hLT52bV9zdGFydCAtIGFkZHJlc3MpID4+IDEyOwogICAgICAgIGlmICh2bWEtPnZt
X2VuZCAtIGFkZHJlc3MgPiBnZXRfY3VycmVudCgpLT5ybGltWzNdLnJsaW1fY3VyIHx8CiAgICAg
ICAgICAgICgodm1hLT52bV9tbS0+dG90YWxfdm0gKyBncm93KSA8PCAxMikgPiBnZXRfY3VycmVu
dCgpLT5ybGltWzldLnJsaW1fY3VyKSB7CiAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmdm1h
LT52bV9tbS0+cGFnZV90YWJsZV9sb2NrKTsKICAgICAgICAgICAgICAgIHJldHVybiAtMTI7CiAg
ICAgICAgfQogICAgICAgIHZtYS0+dm1fc3RhcnQgPSBhZGRyZXNzOwogICAgICAgIHZtYS0+dm1f
cGdvZmYgLT0gZ3JvdzsKICAgICAgICB2bWEtPnZtX21tLT50b3RhbF92bSArPSBncm93OwogICAg
ICAgIGlmICh2bWEtPnZtX2ZsYWdzICYgMHgwMDAwMjAwMCkKICAgICAgICAgICAgICAgIHZtYS0+
dm1fbW0tPmxvY2tlZF92bSArPSBncm93OwogICAgICAgIHNwaW5fdW5sb2NrKCZ2bWEtPnZtX21t
LT5wYWdlX3RhYmxlX2xvY2spOwogICAgICAgIHJldHVybiAwOwp9CgoKZXh0ZXJuIHN0cnVjdCB2
bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQg
bG9uZyBhZGRyKTsKZXh0ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX3ByZXYo
c3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnBw
cmV2KTsKCgoKc3RhdGljIGlubGluZSBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYV9p
bnRlcnNlY3Rpb24oc3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2Fk
ZHIsIHVuc2lnbmVkIGxvbmcgZW5kX2FkZHIpCnsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1
Y3QgKiB2bWEgPSBmaW5kX3ZtYShtbSxzdGFydF9hZGRyKTsKCiAgICAgICAgaWYgKHZtYSAmJiBl
bmRfYWRkciA8PSB2bWEtPnZtX3N0YXJ0KQogICAgICAgICAgICAgICAgdm1hID0gKCh2b2lkICop
MCk7CiAgICAgICAgcmV0dXJuIHZtYTsKfQoKZXh0ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
ZmluZF9leHRlbmRfdm1hKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIp
OwoKZXh0ZXJuIHN0cnVjdCBwYWdlICogdm1hbGxvY190b19wYWdlKHZvaWQgKmFkZHIpOwojIDI0
ICJzY2hlZC5jIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nt
cF9sb2NrLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc21w
X2xvY2suaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc21wbG9jay5o
IiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NtcGxvY2suaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMQojIDE1
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKc3RydWN0
IGlycWFjdGlvbiB7CiAgICAgICAgdm9pZCAoKmhhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3Qg
cHRfcmVncyAqKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbWFzazsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHZvaWQgKmRldl9p
ZDsKICAgICAgICBzdHJ1Y3QgaXJxYWN0aW9uICpuZXh0Owp9OwoKCgoKCmVudW0gewogICAgICAg
IFRJTUVSX0JIID0gMCwKICAgICAgICBUUVVFVUVfQkgsCiAgICAgICAgRElHSV9CSCwKICAgICAg
ICBTRVJJQUxfQkgsCiAgICAgICAgUklTQ09NOF9CSCwKICAgICAgICBTUEVDSUFMSVhfQkgsCiAg
ICAgICAgQVVST1JBX0JILAogICAgICAgIEVTUF9CSCwKICAgICAgICBTQ1NJX0JILAogICAgICAg
IElNTUVESUFURV9CSCwKICAgICAgICBDWUNMQURFU19CSCwKICAgICAgICBDTTIwNl9CSCwKICAg
ICAgICBKU19CSCwKICAgICAgICBNQUNTRVJJQUxfQkgsCiAgICAgICAgSVNJQ09NX0JICn07Cgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDEKCgoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lycS5oIiAxCiMgMTkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lycS5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9pcnEuaCIgMQojIDMyICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9hc20vaXJxLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBpcnFfY2Fubm9uaWNh
bGl6ZShpbnQgaXJxKQp7CiAgICAgICAgcmV0dXJuICgoaXJxID09IDIpID8gOSA6IGlycSk7Cn0K
CmV4dGVybiB2b2lkIGRpc2FibGVfaXJxKHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIGRpc2Fi
bGVfaXJxX25vc3luYyh1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBlbmFibGVfaXJxKHVuc2ln
bmVkIGludCk7CmV4dGVybiB2b2lkIHJlbGVhc2VfeDg2X2lycXMoc3RydWN0IHRhc2tfc3RydWN0
ICopOwojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pcnEuaCIgMgoj
IDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pcnEuaCIKc3RydWN0IGh3
X2ludGVycnVwdF90eXBlIHsKICAgICAgICBjb25zdCBjaGFyICogdHlwZW5hbWU7CiAgICAgICAg
dW5zaWduZWQgaW50ICgqc3RhcnR1cCkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAo
KnNodXRkb3duKSh1bnNpZ25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqZW5hYmxlKSh1bnNp
Z25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqZGlzYWJsZSkodW5zaWduZWQgaW50IGlycSk7
CiAgICAgICAgdm9pZCAoKmFjaykodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmVu
ZCkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKnNldF9hZmZpbml0eSkodW5zaWdu
ZWQgaW50IGlycSwgdW5zaWduZWQgbG9uZyBtYXNrKTsKfTsKCnR5cGVkZWYgc3RydWN0IGh3X2lu
dGVycnVwdF90eXBlIGh3X2lycV9jb250cm9sbGVyOwojIDU5ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9pcnEuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk
IGludCBzdGF0dXM7CiAgICAgICAgaHdfaXJxX2NvbnRyb2xsZXIgKmhhbmRsZXI7CiAgICAgICAg
c3RydWN0IGlycWFjdGlvbiAqYWN0aW9uOwogICAgICAgIHVuc2lnbmVkIGludCBkZXB0aDsKICAg
ICAgICBzcGlubG9ja190IGxvY2s7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwg
KCg1KSkpKSkpIGlycV9kZXNjX3Q7CgpleHRlcm4gaXJxX2Rlc2NfdCBpcnFfZGVzYyBbMjI0XTsK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2h3X2lycS5oIiAxCiMgNjEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9od19pcnEuaCIKZXh0ZXJuIGludCBp
cnFfdmVjdG9yWzIyNF07CiMgNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9o
d19pcnEuaCIKZXh0ZXJuIHZvaWQgbWFza19pcnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2
b2lkIHVubWFza19pcnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIGRpc2FibGVfODI1
OUFfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gdm9pZCBlbmFibGVfODI1OUFfaXJxKHVu
c2lnbmVkIGludCBpcnEpOwpleHRlcm4gaW50IGk4MjU5QV9pcnFfcGVuZGluZyh1bnNpZ25lZCBp
bnQgaXJxKTsKZXh0ZXJuIHZvaWQgbWFrZV84MjU5QV9pcnEodW5zaWduZWQgaW50IGlycSk7CmV4
dGVybiB2b2lkIGluaXRfODI1OUEoaW50IGFlb2kpOwpleHRlcm4gdm9pZCBzZW5kX0lQSV9zZWxm
KGludCB2ZWN0b3IpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgaW5p
dF9WSVNXU19BUElDX2lycXModm9pZCk7CmV4dGVybiB2b2lkIHNldHVwX0lPX0FQSUModm9pZCk7
CmV4dGVybiB2b2lkIGRpc2FibGVfSU9fQVBJQyh2b2lkKTsKZXh0ZXJuIHZvaWQgcHJpbnRfSU9f
QVBJQyh2b2lkKTsKZXh0ZXJuIGludCBJT19BUElDX2dldF9QQ0lfaXJxX3ZlY3RvcihpbnQgYnVz
LCBpbnQgc2xvdCwgaW50IGZuKTsKZXh0ZXJuIHZvaWQgc2VuZF9JUEkoaW50IGRlc3QsIGludCB2
ZWN0b3IpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9fYXBpY19pcnFzOwoKZXh0ZXJuIGF0b21p
Y190IGlycV9lcnJfY291bnQ7CmV4dGVybiBhdG9taWNfdCBpcnFfbWlzX2NvdW50OwoKZXh0ZXJu
IGNoYXIgX3N0ZXh0LCBfZXRleHQ7CiMgMTgzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vaHdfaXJxLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2ZfY3B1X21hc2s7CmV4dGVy
biB1bnNpZ25lZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9s
ZW47CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7CgoKCgoKc3RhdGljIGlubGluZSB2
b2lkIHg4Nl9kb19wcm9maWxlICh1bnNpZ25lZCBsb25nIGVpcCkKewogICAgICAgIGlmICghcHJv
Zl9idWZmZXIpCiAgICAgICAgICAgICAgICByZXR1cm47CgoKCgoKICAgICAgICBpZiAoISgoMTw8
KGdldF9jdXJyZW50KCktPnByb2Nlc3NvcikpICYgcHJvZl9jcHVfbWFzaykpCiAgICAgICAgICAg
ICAgICByZXR1cm47CgogICAgICAgIGVpcCAtPSAodW5zaWduZWQgbG9uZykgJl9zdGV4dDsKICAg
ICAgICBlaXAgPj49IHByb2Zfc2hpZnQ7CgoKCgoKICAgICAgICBpZiAoZWlwID4gcHJvZl9sZW4t
MSkKICAgICAgICAgICAgICAgIGVpcCA9IHByb2ZfbGVuLTE7CiAgICAgICAgYXRvbWljX2luYygo
YXRvbWljX3QgKikmcHJvZl9idWZmZXJbZWlwXSk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgaHdf
cmVzZW5kX2lycShzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgKmgsIHVuc2lnbmVkIGludCBpKSB7
CiAgICAgICAgaWYgKCgoKGkpID49IDE2KSB8fCAoKDE8PChpKSkgJiBpb19hcGljX2lycXMpKSkK
ICAgICAgICAgICAgICAgIHNlbmRfSVBJX3NlbGYoaXJxX3ZlY3RvcltpXSk7Cn0KIyA3MCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaXJxLmgiIDIKCmV4dGVybiBpbnQgaGFu
ZGxlX0lSUV9ldmVudCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBwdF9yZWdzICosIHN0cnVjdCBpcnFh
Y3Rpb24gKik7CmV4dGVybiBpbnQgc2V0dXBfaXJxKHVuc2lnbmVkIGludCAsIHN0cnVjdCBpcnFh
Y3Rpb24gKiApOwoKZXh0ZXJuIGh3X2lycV9jb250cm9sbGVyIG5vX2lycV90eXBlOwpleHRlcm4g
dm9pZCBub19hY3Rpb24oaW50IGNwbCwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVn
cyk7CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgoK
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgX19zb2Z0aXJxX3BlbmRpbmc7
CiAgICAgICAgdW5zaWduZWQgaW50IF9fbG9jYWxfaXJxX2NvdW50OwogICAgICAgIHVuc2lnbmVk
IGludCBfX2xvY2FsX2JoX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBfX3N5c2NhbGxfY291
bnQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICogX19rc29mdGlycWRfdGFzazsKICAgICAg
ICB1bnNpZ25lZCBpbnQgX19ubWlfY291bnQ7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18o
KDEgPDwgKCg1KSkpKSkpIGlycV9jcHVzdGF0X3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2lycV9jcHVzdGF0LmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvaXJxX2NwdXN0YXQuaCIKZXh0ZXJuIGlycV9jcHVzdGF0X3QgaXJx
X3N0YXRbXTsKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2hhcmRpcnEu
aCIgMgojIDQ0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vaGFyZGlycS5oIgpl
eHRlcm4gdW5zaWduZWQgY2hhciBnbG9iYWxfaXJxX2hvbGRlcjsKZXh0ZXJuIHVuc2lnbmVkIHZv
bGF0aWxlIGxvbmcgZ2xvYmFsX2lycV9sb2NrOwoKc3RhdGljIGlubGluZSBpbnQgaXJxc19ydW5u
aW5nICh2b2lkKQp7CiAgICAgICAgaW50IGk7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBzbXBf
bnVtX2NwdXM7IGkrKykKICAgICAgICAgICAgICAgIGlmICgoaXJxX3N0YXRbKGkpXS5fX2xvY2Fs
X2lycV9jb3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIHJl
dHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcmVsZWFzZV9pcnFsb2NrKGludCBjcHUpCnsK
CiAgICAgICAgaWYgKGdsb2JhbF9pcnFfaG9sZGVyID09ICh1bnNpZ25lZCBjaGFyKSBjcHUpIHsK
ICAgICAgICAgICAgICAgIGdsb2JhbF9pcnFfaG9sZGVyID0gMHhGRjsKICAgICAgICAgICAgICAg
IGNsZWFyX2JpdCgwLCZnbG9iYWxfaXJxX2xvY2spOwogICAgICAgIH0KfQoKc3RhdGljIGlubGlu
ZSB2b2lkIGlycV9lbnRlcihpbnQgY3B1LCBpbnQgaXJxKQp7CiAgICAgICAgKysoaXJxX3N0YXRb
KGNwdSldLl9fbG9jYWxfaXJxX2NvdW50KTsKCiAgICAgICAgd2hpbGUgKChfX2J1aWx0aW5fY29u
c3RhbnRfcCgwKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgwKSwoJmdsb2JhbF9pcnFfbG9jaykpIDog
dmFyaWFibGVfdGVzdF9iaXQoKDApLCgmZ2xvYmFsX2lycV9sb2NrKSkpKSB7CiAgICAgICAgICAg
ICAgICByZXBfbm9wKCk7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaXJxX2V4aXQo
aW50IGNwdSwgaW50IGlycSkKewogICAgICAgIC0tKGlycV9zdGF0WyhjcHUpXS5fX2xvY2FsX2ly
cV9jb3VudCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGhhcmRpcnFfdHJ5bG9jayhpbnQgY3B1KQp7
CiAgICAgICAgcmV0dXJuICEoaXJxX3N0YXRbKGNwdSldLl9fbG9jYWxfaXJxX2NvdW50KSAmJiAh
KF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gY29uc3RhbnRfdGVzdF9iaXQoKDApLCgmZ2xvYmFs
X2lycV9sb2NrKSkgOiB2YXJpYWJsZV90ZXN0X2JpdCgoMCksKCZnbG9iYWxfaXJxX2xvY2spKSk7
Cn0KCgoKZXh0ZXJuIHZvaWQgc3luY2hyb25pemVfaXJxKHZvaWQpOwojIDQ3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zb2Z0aXJxLmgiIDEKIyA0OCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyA1NyAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmVudW0KewogICAgICAgIEhJX1NPRlRJ
UlE9MCwKICAgICAgICBORVRfVFhfU09GVElSUSwKICAgICAgICBORVRfUlhfU09GVElSUSwKICAg
ICAgICBUQVNLTEVUX1NPRlRJUlEKfTsKCgoKCgpzdHJ1Y3Qgc29mdGlycV9hY3Rpb24KewogICAg
ICAgIHZvaWQgKCphY3Rpb24pKHN0cnVjdCBzb2Z0aXJxX2FjdGlvbiAqKTsKICAgICAgICB2b2lk
ICpkYXRhOwp9OwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIGRvX3NvZnRpcnEo
dm9pZCk7CmV4dGVybiB2b2lkIG9wZW5fc29mdGlycShpbnQgbnIsIHZvaWQgKCphY3Rpb24pKHN0
cnVjdCBzb2Z0aXJxX2FjdGlvbiopLCB2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQgc29mdGlycV9p
bml0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgY3B1X3JhaXNlX3NvZnRpcnEodW5zaWduZWQgaW50IGNw
dSwgdW5zaWduZWQgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2
b2lkIHJhaXNlX3NvZnRpcnEodW5zaWduZWQgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CiMgMTA0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbnRlcnJ1
cHQuaCIKc3RydWN0IHRhc2tsZXRfc3RydWN0CnsKICAgICAgICBzdHJ1Y3QgdGFza2xldF9zdHJ1
Y3QgKm5leHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGF0ZTsKICAgICAgICBhdG9taWNfdCBj
b3VudDsKICAgICAgICB2b2lkICgqZnVuYykodW5zaWduZWQgbG9uZyk7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBkYXRhOwp9OwojIDEyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvaW50ZXJydXB0LmgiCmVudW0KewogICAgICAgIFRBU0tMRVRfU1RBVEVfU0NIRUQsCiAgICAg
ICAgVEFTS0xFVF9TVEFURV9SVU4KfTsKCnN0cnVjdCB0YXNrbGV0X2hlYWQKewogICAgICAgIHN0
cnVjdCB0YXNrbGV0X3N0cnVjdCAqbGlzdDsKfSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18o
KDEgPDwgKCg1KSkpKSkpOwoKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQgdGFza2xldF92ZWNb
MzJdOwpleHRlcm4gc3RydWN0IHRhc2tsZXRfaGVhZCB0YXNrbGV0X2hpX3ZlY1szMl07CgoKc3Rh
dGljIGlubGluZSBpbnQgdGFza2xldF90cnlsb2NrKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkK
ewogICAgICAgIHJldHVybiAhdGVzdF9hbmRfc2V0X2JpdChUQVNLTEVUX1NUQVRFX1JVTiwgJih0
KS0+c3RhdGUpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xldF91bmxvY2soc3RydWN0IHRh
c2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt
ZW1vcnkiKTsKICAgICAgICBjbGVhcl9iaXQoVEFTS0xFVF9TVEFURV9SVU4sICYodCktPnN0YXRl
KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfdW5sb2NrX3dhaXQoc3RydWN0IHRhc2ts
ZXRfc3RydWN0ICp0KQp7CiAgICAgICAgd2hpbGUgKChfX2J1aWx0aW5fY29uc3RhbnRfcChUQVNL
TEVUX1NUQVRFX1JVTikgPyBjb25zdGFudF90ZXN0X2JpdCgoVEFTS0xFVF9TVEFURV9SVU4pLCgm
KHQpLT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKFRBU0tMRVRfU1RBVEVfUlVOKSwoJih0
KS0+c3RhdGUpKSkpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfQp9
CgoKCgoKCmV4dGVybiB2b2lkIF9fdGFza2xldF9zY2hlZHVsZShzdHJ1Y3QgdGFza2xldF9zdHJ1
Y3QgKnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCB0
YXNrbGV0X3NjaGVkdWxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIGlmICgh
dGVzdF9hbmRfc2V0X2JpdChUQVNLTEVUX1NUQVRFX1NDSEVELCAmdC0+c3RhdGUpKQogICAgICAg
ICAgICAgICAgX190YXNrbGV0X3NjaGVkdWxlKHQpOwp9CgpleHRlcm4gdm9pZCBfX3Rhc2tsZXRf
aGlfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xldF9oaV9zY2hlZHVsZShzdHJ1Y3Qg
dGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoVEFTS0xF
VF9TVEFURV9TQ0hFRCwgJnQtPnN0YXRlKSkKICAgICAgICAgICAgICAgIF9fdGFza2xldF9oaV9z
Y2hlZHVsZSh0KTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2Rpc2FibGVfbm9zeW5j
KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIGF0b21pY19pbmMoJnQtPmNvdW50
KTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgdGFza2xldF9kaXNhYmxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkK
ewogICAgICAgIHRhc2tsZXRfZGlzYWJsZV9ub3N5bmModCk7CiAgICAgICAgdGFza2xldF91bmxv
Y2tfd2FpdCh0KTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAs
MCglJWVzcCkiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2Vu
YWJsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21pY19kZWMoJnQtPmNvdW50KTsKfQoK
c3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfaGlfZW5hYmxlKHN0cnVjdCB0YXNrbGV0X3N0cnVj
dCAqdCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiAg
ICAgICAgYXRvbWljX2RlYygmdC0+Y291bnQpOwp9CgpleHRlcm4gdm9pZCB0YXNrbGV0X2tpbGwo
c3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KTsKZXh0ZXJuIHZvaWQgdGFza2xldF9pbml0KHN0cnVj
dCB0YXNrbGV0X3N0cnVjdCAqdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpmdW5j
KSh1bnNpZ25lZCBsb25nKSwgdW5zaWduZWQgbG9uZyBkYXRhKTsKIyAyMjMgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIgpleHRlcm4gc3RydWN0IHRhc2ts
ZXRfc3RydWN0IGJoX3Rhc2tfdmVjW107CgoKZXh0ZXJuIHNwaW5sb2NrX3QgZ2xvYmFsX2JoX2xv
Y2s7CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19iaChpbnQgbnIpCnsKICAgICAgICB0YXNrbGV0
X2hpX3NjaGVkdWxlKGJoX3Rhc2tfdmVjK25yKTsKfQoKZXh0ZXJuIHZvaWQgaW5pdF9iaChpbnQg
bnIsIHZvaWQgKCpyb3V0aW5lKSh2b2lkKSk7CmV4dGVybiB2b2lkIHJlbW92ZV9iaChpbnQgbnIp
OwojIDI2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0Lmgi
CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2JlX2lycV9vbih2b2lkKTsKZXh0ZXJuIGludCBwcm9i
ZV9pcnFfb2ZmKHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdW5zaWduZWQgaW50IHByb2JlX2lycV9t
YXNrKHVuc2lnbmVkIGxvbmcpOwojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vc21wbG9jay5oIiAyCgoKCgpleHRlcm4gc3BpbmxvY2tfY2FjaGVsaW5lX3Qga2VybmVsX2Zs
YWdfY2FjaGVsaW5lOwojIDQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc21w
bG9jay5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxvY2tfa2VybmVsKHZvaWQpCnsKCiAgICAg
ICAgaWYgKCErK2dldF9jdXJyZW50KCktPmxvY2tfZGVwdGgpCiAgICAgICAgICAgICAgICBzcGlu
X2xvY2soJmtlcm5lbF9mbGFnX2NhY2hlbGluZS5sb2NrKTsKIyA2MSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3NtcGxvY2suaCIKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCB1
bmxvY2tfa2VybmVsKHZvaWQpCnsKICAgICAgICBpZiAoZ2V0X2N1cnJlbnQoKS0+bG9ja19kZXB0
aCA8IDApCiAgICAgICAgICAgICAgICBfX291dF9vZl9saW5lX2J1Zyg2Nik7CgogICAgICAgIGlm
ICgtLWdldF9jdXJyZW50KCktPmxvY2tfZGVwdGggPCAwKQogICAgICAgICAgICAgICAgc3Bpbl91
bmxvY2soJmtlcm5lbF9mbGFnX2NhY2hlbGluZS5sb2NrKTsKIyA3OSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3NtcGxvY2suaCIKfQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9zbXBfbG9jay5oIiAyCiMgMjYgInNjaGVkLmMiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ubWkuaCIgMQojIDE3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ubWkuaCIKZXh0ZXJuIHZvaWQgdG91Y2hfbm1pX3dh
dGNoZG9nKHZvaWQpOwojIDI3ICJzY2hlZC5jIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2tlcm5lbF9zdGF0LmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgva2VybmVsX3N0YXQuaCIKc3RydWN0IGtlcm5lbF9zdGF0IHsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcGVyX2NwdV91c2VyWzMyXSwKICAgICAgICAgICAgICAgICAgICAg
cGVyX2NwdV9uaWNlWzMyXSwKICAgICAgICAgICAgICAgICAgICAgcGVyX2NwdV9zeXN0ZW1bMzJd
OwogICAgICAgIHVuc2lnbmVkIGludCBka19kcml2ZVsxNl1bMTZdOwogICAgICAgIHVuc2lnbmVk
IGludCBka19kcml2ZV9yaW9bMTZdWzE2XTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGtfZHJpdmVf
d2lvWzE2XVsxNl07CiAgICAgICAgdW5zaWduZWQgaW50IGRrX2RyaXZlX3JibGtbMTZdWzE2XTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZGtfZHJpdmVfd2Jsa1sxNl1bMTZdOwogICAgICAgIHVuc2ln
bmVkIGludCBwZ3BnaW4sIHBncGdvdXQ7CiAgICAgICAgdW5zaWduZWQgaW50IHBzd3BpbiwgcHN3
cG91dDsKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgaXJxc1szMl1bMjI0XTsKCiAgICAgICAgdW5z
aWduZWQgaW50IGNvbnRleHRfc3d0Y2g7Cn07CgpleHRlcm4gc3RydWN0IGtlcm5lbF9zdGF0IGtz
dGF0OwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbnJfY29udGV4dF9zd2l0Y2hlcyh2b2lkKTsKIyA1
OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2VybmVsX3N0YXQuaCIKZXh0
ZXJuIGlubGluZSBpbnQga3N0YXRfaXJxcyAoaW50IGlycSkKewogICAgICAgIGludCBpLCBzdW09
MDsKCiAgICAgICAgZm9yIChpID0gMCA7IGkgPCBzbXBfbnVtX2NwdXMgOyBpKyspCiAgICAgICAg
ICAgICAgICBzdW0gKz0ga3N0YXQuaXJxc1tjcHVfbG9naWNhbF9tYXAoaSldW2lycV07CgogICAg
ICAgIHJldHVybiBzdW07Cn0KIyAyOSAic2NoZWQuYyIgMgoKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zdXNwZW5kLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIgMQojIDE0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ub3RpZmllci5oIgpzdHJ1Y3Qgbm90aWZpZXJfYmxv
Y2sKewogICAgICAgIGludCAoKm5vdGlmaWVyX2NhbGwpKHN0cnVjdCBub3RpZmllcl9ibG9jayAq
c2VsZiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKICAgICAgICBzdHJ1Y3Qgbm90aWZpZXJfYmxv
Y2sgKm5leHQ7CiAgICAgICAgaW50IHByaW9yaXR5Owp9OwoKCgoKZXh0ZXJuIGludCBub3RpZmll
cl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKipsaXN0LCBzdHJ1Y3Qgbm90
aWZpZXJfYmxvY2sgKm4pOwpleHRlcm4gaW50IG5vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3Ry
dWN0IG5vdGlmaWVyX2Jsb2NrICoqbmwsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbik7CmV4dGVy
biBpbnQgbm90aWZpZXJfY2FsbF9jaGFpbihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKipuLCB1bnNp
Z25lZCBsb25nIHZhbCwgdm9pZCAqdik7CiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvc3VzcGVuZC5oIiAyCgoKCmV4dGVybiB1bnNpZ25lZCBjaGFyIHNvZnR3YXJlX3N1
c3BlbmRfZW5hYmxlZDsKCgoKCgpleHRlcm4gaW50IHN3c3VzcF9zdGF0ZVs1XTsKCgp0eXBlZGVm
IHN0cnVjdCBwYmUgewogICAgICAgIHN0cnVjdCBwYWdlICogb3JpZ2FkZHJlc3M7CiAgICAgICAg
c3RydWN0IHBhZ2UgKiBhZGRyZXNzOwogICAgICAgIHN3cF9lbnRyeV90IHN3YXBfYWRkcmVzczsK
CgoKCiAgICAgICAgc3dwX2VudHJ5X3QgZHVtbXk7CgoKCn0gc3VzcGVuZF9wYmVfdDsKCnR5cGVk
ZWYgc3RydWN0IHBhZ2VkaXIgewogICAgICAgIGludCBwYWdlc2V0X3NpemU7CiAgICAgICAgaW50
IHBhZ2VkaXJfc2l6ZTsKICAgICAgICBpbnQgYWxsb2NfZnJvbTsKICAgICAgICBzdHJ1Y3QgcGJl
ICpkYXRhOwogICAgICAgIHN0cnVjdCBwYmUgKmZpcnN0X2FsbG9jYXRlZDsKCn0gc3VzcGVuZF9w
YWdlZGlyX3Q7CgpzdHJ1Y3QgcGJlbGluayB7CiAgICAgICAgY2hhciBkdW1teVtzaXplb2Yoc3Ry
dWN0IHBiZSkgLSBzaXplb2Yoc3RydWN0IHBiZSAqKV07CiAgICAgICAgc3RydWN0IHBiZSAqIG5l
eHQ7Cn07CgoKCnN0cnVjdCBzdXNwZW5kX2hlYWRlciB7CiAgICAgICAgX191MzIgdmVyc2lvbl9j
b2RlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnVtX3BoeXNwYWdlczsKICAgICAgICBjaGFyIG1h
Y2hpbmVbNjVdOwogICAgICAgIGNoYXIgdmVyc2lvbls2NV07CiAgICAgICAgaW50IG51bV9jcHVz
OwogICAgICAgIGludCBwYWdlX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiYXNlX21lbV9m
cmVlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcGZvcmltYWdlOwogICAgICAgIHVuc2lnbmVk
IGludCBleHBlY3RlZF9zaXplMTsKICAgICAgICB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRfc2l6ZTI7
CiAgICAgICAgc3RydWN0IHBhZ2VkaXIgcGFnZWRpcjsKICAgICAgICBpbnQgcGFyYW0wOwogICAg
ICAgIGludCBwYXJhbTE7CiAgICAgICAgaW50IHBhcmFtMjsKICAgICAgICBpbnQgcGFyYW0zOwog
ICAgICAgIGludCBwYXJhbTQ7CiAgICAgICAgaW50IHByb2dyZXNzMDsKICAgICAgICBpbnQgcHJv
Z3Jlc3MxOwogICAgICAgIGludCBwcm9ncmVzczI7CiAgICAgICAgaW50IHByb2dyZXNzMzsKICAg
ICAgICBpbnQgcHJvZ3Jlc3M0OwogICAgICAgIGtkZXZfdCBrZGV2c1szMl07CiAgICAgICAgc3Ry
dWN0IHN3YXBfbG9jYXRpb24gewogICAgICAgICAgICAgICAgY2hhciBmaWxlbmFtZVszMl07CiAg
ICAgICAgfSBzd2FwX2xvY2F0aW9uWzMyXTsKfTsKCgoKCgoKZXh0ZXJuIHN0cnVjdCB0cV9zdHJ1
Y3Qgc3VzcGVuZF90cTsKCgpleHRlcm4gaW50IHNocmlua19tZW0odm9pZCk7CgoKZXh0ZXJuIHZv
aWQgc29mdHdhcmVfc3VzcGVuZF9wZW5kaW5nKHZvaWQpOwpleHRlcm4gdm9pZCBzb2Z0d2FyZV9y
ZXN1bWUodm9pZCk7CgpleHRlcm4gaW50IHJlZ2lzdGVyX3N1c3BlbmRfbm90aWZpZXIoc3RydWN0
IG5vdGlmaWVyX2Jsb2NrICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfc3VzcGVuZF9ub3RpZmll
cihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKik7CmV4dGVybiB2b2lkIHJlZnJpZ2VyYXRvcih1bnNp
Z25lZCBsb25nKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIHN1c3BlbmRfc3dhcF9iaDsK
CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIGxhc3Rfc3VzcGVuZF9jYWNoZV9wYWdlOwpleHRlcm4gdW5z
aWduZWQgaW50IHN1c3BlbmRfdGFzazsKIyAzNCAic2NoZWQuYyIgMgoKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMQojIDM1ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gaW50IF9fdmVyaWZ5X3dyaXRl
KGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CiMgNjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRpYyBpbmxpbmUgaW50IHZlcmlmeV9hcmVhKGlu
dCB0eXBlLCBjb25zdCB2b2lkICogYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAg
cmV0dXJuICgoeyB1bnNpZ25lZCBsb25nIGZsYWcsc3VtOyBhc20oImFkZGwgJTMsJTEgOyBzYmJs
ICUwLCUwOyBjbXBsICUxLCU0OyBzYmJsICQwLCUwIiA6Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0p
IDoiMSIgKGFkZHIpLCJnIiAoKGludCkoc2l6ZSkpLCJnIiAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9s
aW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkgPyAwIDogLTE0Owp9CiMgODEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0cnVjdCBleGNlcHRpb25fdGFibGVf
ZW50cnkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgaW5zbiwgZml4dXA7Cn07CgoKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgc2VhcmNoX2V4Y2VwdGlvbl90YWJsZSh1bnNpZ25lZCBsb25nKTsKIyAxMDUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiB2b2lk
IF9fZ2V0X3VzZXJfMSh2b2lkKTsKZXh0ZXJuIHZvaWQgX19nZXRfdXNlcl8yKHZvaWQpOwpleHRl
cm4gdm9pZCBfX2dldF91c2VyXzQodm9pZCk7CiMgMTI3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzEodm9pZCk7CmV4
dGVybiB2b2lkIF9fcHV0X3VzZXJfMih2b2lkKTsKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl80KHZv
aWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzgodm9pZCk7CgpleHRlcm4gdm9pZCBfX3B1dF91
c2VyX2JhZCh2b2lkKTsKIyAxODggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91
YWNjZXNzLmgiCnN0cnVjdCBfX2xhcmdlX3N0cnVjdCB7IHVuc2lnbmVkIGxvbmcgYnVmWzEwMF07
IH07CiMgMjIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpl
eHRlcm4gbG9uZyBfX2dldF91c2VyX2JhZCh2b2lkKTsKIyAzMDggIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpf
X2dlbmVyaWNfY29weV9mcm9tX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJv
bSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgX19hc21f
XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIJbW92bCAlMywlMFxuIiAiMToJcmVw
OyBtb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CWxlYSAwKCUz
LCUwLDQpLCUwXG4iICI0OglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVh
eCwlJWVheFxuIiAiCXJlcDsgc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAi
CWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJ
LmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMi
IDogIj0mYyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIgKF9fZDEpIDogInIiKG4gJiAzKSwgIjAi
KG4gLyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAg
ICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fZ2VuZXJpY19j
b3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQg
bG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgX19hc21fXyBfX3ZvbGF0aWxl
X18oICIwOglyZXA7IG1vdnNsXG4iICIJbW92bCAlMywlMFxuIiAiMToJcmVwOyBtb3ZzYlxuIiAi
MjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CWxlYSAwKCUzLCUwLDQpLCUwXG4i
ICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIg
IgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsMmJcbiIgIi5wcmV2aW91
cyIgOiAiPSZjIihuKSwgIj0mRCIgKF9fZDApLCAiPSZTIiAoX19kMSkgOiAiciIobiAmIDMpLCAi
MCIobiAvIDQpLCAiMSIodG8pLCAiMiIoZnJvbSkgOiAibWVtb3J5Iik7IH0gd2hpbGUgKDApOwog
ICAgICAgIHJldHVybiBuOwp9CiMgNTQzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vdWFjY2Vzcy5oIgp1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIodm9pZCAq
LCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19j
b3B5X2Zyb21fdXNlcih2b2lkICosIGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X3RvX3VzZXIodm9pZCAqdG8s
IGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIHByZWZldGNoKGZy
b20pOwogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUz
LCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwg
Ij1yIiAoc3VtKSA6IjEiICh0byksImciICgoaW50KShuKSksImciIChnZXRfY3VycmVudCgpLT5h
ZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkKICAgICAgICAgICAgICAgIGRvIHsgaW50
IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxl
X18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAi
MjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhf
dGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJiXG4iICIucHJldmlvdXMi
IDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0
byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZp
eHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0OglpbmNsICUwXG4iICIJam1wIDJiXG4i
ICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxu
IiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4p
LCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4v
NCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJ
cmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwi
XG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2
aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxv
bmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMi
IChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJt
ZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1v
dnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIuc2VjdGlvbiAuZml4dXAs
XCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFkZGwgJDIsJTBcbiIgIjY6CWluY2wgJTBc
biIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxu
IiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgkubG9uZyAxYiw1YlxuIiAiCS5sb25n
IDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k
MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgfSB9
IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBs
b25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20s
IHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1
bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIg
OiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChmcm9tKSwiZyIgKChpbnQpKG4pKSwiZyIg
KGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApKQogICAgICAg
ICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBf
X2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAu
Zml4dXAsXCJheFwiXG4iICIyOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAl
JWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxu
IiAiCXNobCAkMiwlMFxuIiAiCWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4
X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3Vz
IiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIo
dG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0
aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5m
aXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUl
ZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAi
CXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICI0Oglw
dXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVl
YXhcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9f
ZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcg
MWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNl
IDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIg
IjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hs
ICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xu
IiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMiwl
MFxuIiAiCWptcCAyYlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4i
ICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAi
LnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIg
IgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwg
Ij0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQp
IDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJl
cDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5m
aXh1cCxcImF4XCJcbiIgIjQ6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUl
ZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3Bs
ICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFkZGwgJDMsJTBcbiIgIglq
bXAgMmJcbiIgIjU6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3N3
XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxu
IiAiNjoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglw
b3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2Vj
dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAi
CS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAi
PSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkg
OiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
bikpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVM
Kih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCh0bykp
LCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AoKG4pKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgodG8pKSksKCgoMCkpKSwoKChu
KSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCh0bykpLCgoMCkpLCgobikpKSkpOwogICAgICAgIHJl
dHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X3Rv
X3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBu
KQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlv
biAuZml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91
c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcg
MGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNl
IDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIg
IjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWlu
Y2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxc
ImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAi
LnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZy
b20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21f
XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5z
ZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAkMiwlMFxuIiAiNDoJYWRkbCAkMiwlMFxu
IiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i
ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlv
dXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIy
Iih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpc
biIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXNobCAkMiwlMFxuIiAiNToJYWRkbCAk
MiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv
biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5s
b25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZT
IiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAi
bWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcl9ub2NoZWNr
KHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBk
byB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2ggKG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192
b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4
XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4
XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQy
LCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJh
XCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihu
KSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihu
LzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6
CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc
IlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxu
IiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4
XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWlu
Y2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxc
ImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAi
LnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZy
b20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21f
XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5z
ZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIg
Igl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJcG9wbCAl
JWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRsICQyLCUwXG4iICIJam1w
IDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zd1xu
IiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNc
biIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBi
LDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19k
MCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5
Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxu
IiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc
IlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIg
Iglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAi
NToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglzdG9z
YlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQzLCUwXG4iICIJam1wIDJiXG4iICI2OglwdXNo
bCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhc
biIgIglpbmNsICUwXG4iICIJam1wIDNiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhf
dGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIs
NWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2Qw
KSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnki
KTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG47Cn0KIyA1OTkgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmxvbmcgc3RybmNweV9mcm9t
X3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIGxvbmcgY291bnQpOwpsb25nIF9fc3Ry
bmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIGxvbmcgY291bnQpOwoK
bG9uZyBzdHJubGVuX3VzZXIoY29uc3QgY2hhciAqc3RyLCBsb25nIG4pOwp1bnNpZ25lZCBsb25n
IGNsZWFyX3VzZXIodm9pZCAqbWVtLCB1bnNpZ25lZCBsb25nIGxlbik7CnVuc2lnbmVkIGxvbmcg
X19jbGVhcl91c2VyKHZvaWQgKm1lbSwgdW5zaWduZWQgbG9uZyBsZW4pOwojIDM3ICJzY2hlZC5j
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0Lmgi
IDEKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2Rlc2MuaCIgMQoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9sZHQuaCIgMQojIDE1ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vbGR0LmgiCnN0cnVjdCBtb2RpZnlfbGR0
X2xkdF9zIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZW50cnlfbnVtYmVyOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgYmFzZV9hZGRyOwogICAgICAgIHVuc2lnbmVkIGludCBsaW1pdDsKICAgICAgICB1
bnNpZ25lZCBpbnQgc2VnXzMyYml0OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGNvbnRlbnRzOjI7
CiAgICAgICAgdW5zaWduZWQgaW50IHJlYWRfZXhlY19vbmx5OjE7CiAgICAgICAgdW5zaWduZWQg
aW50IGxpbWl0X2luX3BhZ2VzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHNlZ19ub3RfcHJlc2Vu
dDoxOwogICAgICAgIHVuc2lnbmVkIGludCB1c2VhYmxlOjE7Cn07CiMgNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2Rlc2MuaCIgMgojIDQ0ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9hc20vZGVzYy5oIgpzdHJ1Y3QgZGVzY19zdHJ1Y3QgewogICAgICAgIHVuc2ln
bmVkIGxvbmcgYSxiOwp9OwoKZXh0ZXJuIHN0cnVjdCBkZXNjX3N0cnVjdCBnZHRfdGFibGVbXTsK
ZXh0ZXJuIHN0cnVjdCBkZXNjX3N0cnVjdCAqaWR0LCAqZ2R0OwoKc3RydWN0IFhndF9kZXNjX3N0
cnVjdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25n
IGFkZHJlc3MgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMgNjcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS9kZXNjLmgiCmV4dGVybiBzdHJ1Y3QgZGVzY19zdHJ1Y3QgZGVm
YXVsdF9sZHRbXTsKZXh0ZXJuIHZvaWQgc2V0X2ludHJfZ2F0ZSh1bnNpZ25lZCBpbnQgaXJxLCB2
b2lkICogYWRkcik7CmV4dGVybiB2b2lkIHNldF9sZHRfZGVzYyh1bnNpZ25lZCBpbnQgbiwgdm9p
ZCAqYWRkciwgdW5zaWduZWQgaW50IHNpemUpOwpleHRlcm4gdm9pZCBzZXRfdHNzX2Rlc2ModW5z
aWduZWQgaW50IG4sIHZvaWQgKmFkZHIpOwoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX0xEVCh2
b2lkKQp7CiAgICAgICAgaW50IGNwdSA9IChnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpOwogICAg
ICAgIHNldF9sZHRfZGVzYyhjcHUsICZkZWZhdWx0X2xkdFswXSwgNSk7CiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oImxsZHQgJSVheCI6OiJhIiAoKCgoY3B1KTw8MikgKyAoMTIgKzEpKTw8
MykpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbG9hZF9MRFQgKHN0cnVjdCBtbV9zdHJ1Y3Qg
Km1tKQp7CiAgICAgICAgaW50IGNwdSA9IChnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpOwogICAg
ICAgIHZvaWQgKnNlZ21lbnRzID0gbW0tPmNvbnRleHQuc2VnbWVudHM7CiAgICAgICAgaW50IGNv
dW50ID0gODE5MjsKCiAgICAgICAgaWYgKCFzZWdtZW50cykgewogICAgICAgICAgICAgICAgc2Vn
bWVudHMgPSAmZGVmYXVsdF9sZHRbMF07CiAgICAgICAgICAgICAgICBjb3VudCA9IDU7CiAgICAg
ICAgfQoKICAgICAgICBzZXRfbGR0X2Rlc2MoY3B1LCBzZWdtZW50cywgY291bnQpOwogICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCJsbGR0ICUlYXgiOjoiYSIgKCgoKGNwdSk8PDIpICsgKDEy
ICsxKSk8PDMpKTsKfQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tbXVf
Y29udGV4dC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ2Fs
bG9jLmgiIDEKIyA1OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3BnYWxsb2Mu
aCIKc3RhdGljIGlubGluZSBwZ2RfdCAqZ2V0X3BnZF9zbG93KHZvaWQpCnsKICAgICAgICBwZ2Rf
dCAqcGdkID0gKHBnZF90ICopX19nZXRfZnJlZV9wYWdlcygoKDB4MjAgfCAweDEwIHwgMHg0MCB8
IDB4ODAgfCAweDEwMCkpLDApOwoKICAgICAgICBpZiAocGdkKSB7CiAgICAgICAgICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKCgoKCh1bnNp
Z25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkpKSA/
IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgocGdkKSksKCgweDAxMDEwMTAxVUwqKHVu
c2lnbmVkIGNoYXIpKDApKSksKCgoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVM
IDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHBnZCkp
LCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoKCgoKHVuc2lnbmVkIGxvbmcp
KDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6ZW9mKHBnZF90KSkpKSkgOiAoX19idWls
dGluX2NvbnN0YW50X3AoKCgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwg
MjIpKSAqIHNpemVvZihwZ2RfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgocGdkKSkpLCgoKDAp
KSksKCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6
ZW9mKHBnZF90KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgocGdkKSksKCgwKSksKCgoKCgodW5z
aWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkp
KSk7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoKDEwMjQgLSAoKCgodW5z
aWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpICogc2l6ZW9mKHBnZF90KSkg
PyBfX2NvbnN0YW50X21lbWNweSgocGdkICsgKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDAp
KSkvKDFVTCA8PCAyMikpKSwoc3dhcHBlcl9wZ19kaXIgKyAoKCgodW5zaWduZWQgbG9uZykoMHhD
MDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpLCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25nKSgweEMw
MDAwMDAwKSkpLygxVUwgPDwgMjIpKSkgKiBzaXplb2YocGdkX3QpKSkgOiBfX21lbWNweSgocGdk
ICsgKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpKSwoc3dhcHBl
cl9wZ19kaXIgKyAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkp
LCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSkg
KiBzaXplb2YocGdkX3QpKSkpOwoKCiAgICAgICAgfQogICAgICAgIHJldHVybiBwZ2Q7Cn0KCgoK
c3RhdGljIGlubGluZSBwZ2RfdCAqZ2V0X3BnZF9mYXN0KHZvaWQpCnsKICAgICAgICB1bnNpZ25l
ZCBsb25nICpyZXQ7CgogICAgICAgIGlmICgocmV0ID0gKGNwdV9kYXRhWyhnZXRfY3VycmVudCgp
LT5wcm9jZXNzb3IpXS5wZ2RfcXVpY2spKSAhPSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAg
ICAgKGNwdV9kYXRhWyhnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5wZ2RfcXVpY2spID0gKHVu
c2lnbmVkIGxvbmcgKikoKnJldCk7CiAgICAgICAgICAgICAgICByZXRbMF0gPSAwOwogICAgICAg
ICAgICAgICAgKGNwdV9kYXRhWyhnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5wZ3RhYmxlX2Nh
Y2hlX3N6KS0tOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gKHVuc2lnbmVk
IGxvbmcgKilnZXRfcGdkX3Nsb3coKTsKICAgICAgICByZXR1cm4gKHBnZF90ICopcmV0Owp9Cgpz
dGF0aWMgaW5saW5lIHZvaWQgZnJlZV9wZ2RfZmFzdChwZ2RfdCAqcGdkKQp7CiAgICAgICAgKih1
bnNpZ25lZCBsb25nICopcGdkID0gKHVuc2lnbmVkIGxvbmcpIChjcHVfZGF0YVsoZ2V0X2N1cnJl
bnQoKS0+cHJvY2Vzc29yKV0ucGdkX3F1aWNrKTsKICAgICAgICAoY3B1X2RhdGFbKGdldF9jdXJy
ZW50KCktPnByb2Nlc3NvcildLnBnZF9xdWljaykgPSAodW5zaWduZWQgbG9uZyAqKSBwZ2Q7CiAg
ICAgICAgKGNwdV9kYXRhWyhnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5wZ3RhYmxlX2NhY2hl
X3N6KSsrOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9wZ2Rfc2xvdyhwZ2RfdCAqcGdkKQp7
CgoKCgoKCgogICAgICAgIGZyZWVfcGFnZXMoKCh1bnNpZ25lZCBsb25nKXBnZCksMCk7Cgp9Cgpz
dGF0aWMgaW5saW5lIHB0ZV90ICpwdGVfYWxsb2Nfb25lKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1
bnNpZ25lZCBsb25nIGFkZHJlc3MpCnsKICAgICAgICBwdGVfdCAqcHRlOwoKICAgICAgICBwdGUg
PSAocHRlX3QgKikgX19nZXRfZnJlZV9wYWdlcygoKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODAg
fCAweDEwMCkpLDApOwogICAgICAgIGlmIChwdGUpCiAgICAgICAgICAgICAgICAoX19idWlsdGlu
X2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKCgxVUwgPDwgMTIpKSkgPyBf
X2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCh2b2lkICopKHB0ZSkpKSwoKDB4MDEwMTAx
MDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKCgxVUwgPDwgMTIpKSkpIDogX19jb25zdGFudF9j
X21lbXNldCgoKCh2b2lkICopKHB0ZSkpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhciko
MCkpKSwoKCgxVUwgPDwgMTIpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoKDFVTCA8PCAx
MikpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKHZvaWQgKikocHRlKSkpKSwoKCgwKSkpLCgoKCgx
VUwgPDwgMTIpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgodm9pZCAqKShwdGUpKSksKCgwKSks
KCgoMVVMIDw8IDEyKSkpKSkpOwogICAgICAgIHJldHVybiBwdGU7Cn0KCnN0YXRpYyBpbmxpbmUg
cHRlX3QgKnB0ZV9hbGxvY19vbmVfZmFzdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgaWYgKChyZXQgPSAodW5zaWduZWQg
bG9uZyAqKShjcHVfZGF0YVsoZ2V0X2N1cnJlbnQoKS0+cHJvY2Vzc29yKV0ucHRlX3F1aWNrKSkg
IT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAgICAgIChjcHVfZGF0YVsoZ2V0X2N1cnJlbnQo
KS0+cHJvY2Vzc29yKV0ucHRlX3F1aWNrKSA9ICh1bnNpZ25lZCBsb25nICopKCpyZXQpOwogICAg
ICAgICAgICAgICAgcmV0WzBdID0gcmV0WzFdOwogICAgICAgICAgICAgICAgKGNwdV9kYXRhWyhn
ZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5wZ3RhYmxlX2NhY2hlX3N6KS0tOwogICAgICAgIH0K
ICAgICAgICByZXR1cm4gKHB0ZV90ICopcmV0Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcHRlX2Zy
ZWVfZmFzdChwdGVfdCAqcHRlKQp7CiAgICAgICAgKih1bnNpZ25lZCBsb25nICopcHRlID0gKHVu
c2lnbmVkIGxvbmcpIChjcHVfZGF0YVsoZ2V0X2N1cnJlbnQoKS0+cHJvY2Vzc29yKV0ucHRlX3F1
aWNrKTsKICAgICAgICAoY3B1X2RhdGFbKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcildLnB0ZV9x
dWljaykgPSAodW5zaWduZWQgbG9uZyAqKSBwdGU7CiAgICAgICAgKGNwdV9kYXRhWyhnZXRfY3Vy
cmVudCgpLT5wcm9jZXNzb3IpXS5wZ3RhYmxlX2NhY2hlX3N6KSsrOwp9CgpzdGF0aWMgX19pbmxp
bmVfXyB2b2lkIHB0ZV9mcmVlX3Nsb3cocHRlX3QgKnB0ZSkKewogICAgICAgIGZyZWVfcGFnZXMo
KCh1bnNpZ25lZCBsb25nKXB0ZSksMCk7Cn0KIyAxNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9wZ2FsbG9jLmgiCmV4dGVybiBpbnQgZG9fY2hlY2tfcGd0X2NhY2hlKGludCwg
aW50KTsKIyAyMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgi
CmV4dGVybiB2b2lkIGZsdXNoX3RsYl9hbGwodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3RsYl9j
dXJyZW50X3Rhc2sodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3Ry
dWN0ICopOwpleHRlcm4gdm9pZCBmbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
KiwgdW5zaWduZWQgbG9uZyk7CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcmFuZ2Uo
c3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25n
IGVuZCkKewogICAgICAgIGZsdXNoX3RsYl9tbShtbSk7Cn0KCgoKCnN0cnVjdCB0bGJfc3RhdGUK
ewogICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKICAgICAgICBpbnQgc3RhdGU7
Cn07CmV4dGVybiBzdHJ1Y3QgdGxiX3N0YXRlIGNwdV90bGJzdGF0ZVszMl07CgoKCnN0YXRpYyBp
bmxpbmUgdm9pZCBmbHVzaF90bGJfcGd0YWJsZXMoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5z
aWduZWQgbG9uZyBlbmQpCnsKICAgICAgICBmbHVzaF90bGJfbW0obW0pOwp9CiMgOCAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgiIDIKIyAxNyAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBlbnRlcl9sYXp5X3RsYihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHRhc2tfc3Ry
dWN0ICp0c2ssIHVuc2lnbmVkIGNwdSkKewogICAgICAgIGlmKGNwdV90bGJzdGF0ZVtjcHVdLnN0
YXRlID09IDEpCiAgICAgICAgICAgICAgICBjcHVfdGxic3RhdGVbY3B1XS5zdGF0ZSA9IDI7Cn0K
CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHN3aXRjaF9tbShzdHJ1Y3QgbW1fc3RydWN0ICpwcmV2
LCBzdHJ1Y3QgbW1fc3RydWN0ICpuZXh0LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWdu
ZWQgY3B1KQp7CiAgICAgICAgaWYgKHByZXYgIT0gbmV4dCkgewoKICAgICAgICAgICAgICAgIGNs
ZWFyX2JpdChjcHUsICZwcmV2LT5jcHVfdm1fbWFzayk7CgoKCiAgICAgICAgICAgICAgICBpZiAo
cHJldi0+Y29udGV4dC5zZWdtZW50cyAhPSBuZXh0LT5jb250ZXh0LnNlZ21lbnRzKQogICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkX0xEVChuZXh0KTsKCiAgICAgICAgICAgICAgICBjcHVfdGxi
c3RhdGVbY3B1XS5zdGF0ZSA9IDE7CiAgICAgICAgICAgICAgICBjcHVfdGxic3RhdGVbY3B1XS5h
Y3RpdmVfbW0gPSBuZXh0OwoKICAgICAgICAgICAgICAgIHNldF9iaXQoY3B1LCAmbmV4dC0+Y3B1
X3ZtX21hc2spOwogICAgICAgICAgICAgICAgc2V0X2JpdChjcHUsICZuZXh0LT5jb250ZXh0LmNw
dXZhbGlkKTsKCiAgICAgICAgICAgICAgICBhc20gdm9sYXRpbGUoIm1vdmwgJTAsJSVjcjMiOiA6
InIiICgoKHVuc2lnbmVkIGxvbmcpKG5leHQtPnBnZCktKCh1bnNpZ25lZCBsb25nKSgweEMwMDAw
MDAwKSkpKSk7OwogICAgICAgIH0KCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjcHVf
dGxic3RhdGVbY3B1XS5zdGF0ZSA9IDE7CiAgICAgICAgICAgICAgICBpZihjcHVfdGxic3RhdGVb
Y3B1XS5hY3RpdmVfbW0gIT0gbmV4dCkKICAgICAgICAgICAgICAgICAgICAgICAgX19vdXRfb2Zf
bGluZV9idWcoNTEpOwogICAgICAgICAgICAgICAgaWYoIXRlc3RfYW5kX3NldF9iaXQoY3B1LCAm
bmV4dC0+Y3B1X3ZtX21hc2spKSB7CgoKCiAgICAgICAgICAgICAgICAgICAgICAgIGFzbSB2b2xh
dGlsZSgibW92bCAlMCwlJWNyMyI6IDoiciIgKCgodW5zaWduZWQgbG9uZykobmV4dC0+cGdkKS0o
KHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkpKTs7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoY3B1LCAmbmV4dC0+Y29udGV4dC5jcHV2
YWxpZCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRfTERUKG5leHQpOwogICAgICAgIH0K
Cn0KIyAzOCAic2NoZWQuYyIgMgoKZXh0ZXJuIHZvaWQgdGltZXJfYmgodm9pZCk7CmV4dGVybiB2
b2lkIHRxdWV1ZV9iaCh2b2lkKTsKZXh0ZXJuIHZvaWQgaW1tZWRpYXRlX2JoKHZvaWQpOwoKCgoK
CnVuc2lnbmVkIHNlY3VyZWJpdHMgPSAweDAwMDAwMDAwOwoKZXh0ZXJuIHZvaWQgbWVtX3VzZSh2
b2lkKTsKIyA4MiAic2NoZWQuYyIKc3RydWN0IHRhc2tfc3RydWN0ICogaW5pdF90YXNrc1szMl0g
PSB7Jihpbml0X3Rhc2tfdW5pb24udGFzayksIH07CiMgOTUgInNjaGVkLmMiCnNwaW5sb2NrX3Qg
cnVucXVldWVfbG9jayBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoKDUpKSkpLCBf
X3NlY3Rpb25fXygiLmRhdGEuY2FjaGVsaW5lX2FsaWduZWQiKSkpID0gKHNwaW5sb2NrX3QpIHsg
MSB9Owpyd2xvY2tfdCB0YXNrbGlzdF9sb2NrIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgx
IDw8ICgoNSkpKSksIF9fc2VjdGlvbl9fKCIuZGF0YS5jYWNoZWxpbmVfYWxpZ25lZCIpKSkgPSAo
cndsb2NrX3QpIHsgMHgwMTAwMDAwMCB9OwoKc3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgcnVucXVl
dWVfaGVhZCA9IHsgJihydW5xdWV1ZV9oZWFkKSwgJihydW5xdWV1ZV9oZWFkKSB9OwoKCgoKCnN0
YXRpYyB1bmlvbiB7CiAgICAgICAgc3RydWN0IHNjaGVkdWxlX2RhdGEgewogICAgICAgICAgICAg
ICAgc3RydWN0IHRhc2tfc3RydWN0ICogY3VycjsKICAgICAgICAgICAgICAgIGN5Y2xlc190IGxh
c3Rfc2NoZWR1bGU7CiAgICAgICAgfSBzY2hlZHVsZV9kYXRhOwogICAgICAgIGNoYXIgX19wYWQg
WygxIDw8ICgoNSkpKV07Cn0gYWxpZ25lZF9kYXRhIFszMl0gX19hdHRyaWJ1dGVfXygoX19hbGln
bmVkX18oKDEgPDwgKCg1KSkpKSwgX19zZWN0aW9uX18oIi5kYXRhLmNhY2hlbGluZV9hbGlnbmVk
IikpKSA9IHsge3smKGluaXRfdGFza191bmlvbi50YXNrKSwwfX19OwoKCgoKc3RydWN0IGtlcm5l
bF9zdGF0IGtzdGF0OwpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZF9yZWFwZXI7CiMg
MTMxICJzY2hlZC5jIgp2b2lkIHNjaGVkdWxpbmdfZnVuY3Rpb25zX3N0YXJ0X2hlcmUodm9pZCkg
eyB9CiMgMTQ3ICJzY2hlZC5jIgpzdGF0aWMgaW5saW5lIGludCBnb29kbmVzcyhzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKiBwLCBpbnQgdGhpc19jcHUsIHN0cnVjdCBtbV9zdHJ1Y3QgKnRoaXNfbW0pCnsK
ICAgICAgICBpbnQgd2VpZ2h0OwoKCgoKCgogICAgICAgIHdlaWdodCA9IC0xOwogICAgICAgIGlm
IChwLT5wb2xpY3kgJiAweDEwKQogICAgICAgICAgICAgICAgZ290byBvdXQ7CgoKCgogICAgICAg
IGlmIChwLT5wb2xpY3kgPT0gMCkgewoKCgoKCgoKICAgICAgICAgICAgICAgIHdlaWdodCA9IHAt
PmNvdW50ZXI7CiAgICAgICAgICAgICAgICBpZiAoIXdlaWdodCkKICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBvdXQ7CgoKCgogICAgICAgICAgICAgICAgaWYgKHAtPnByb2Nlc3NvciA9PSB0
aGlzX2NwdSkKICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ICs9IDE1OwoKCgogICAgICAg
ICAgICAgICAgaWYgKHAtPm1tID09IHRoaXNfbW0gfHwgIXAtPm1tKQogICAgICAgICAgICAgICAg
ICAgICAgICB3ZWlnaHQgKz0gMTsKICAgICAgICAgICAgICAgIHdlaWdodCArPSAyMCAtIHAtPm5p
Y2U7CiAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICB9CgoKCgoKCiAgICAgICAgd2Vp
Z2h0ID0gMTAwMCArIHAtPnJ0X3ByaW9yaXR5OwpvdXQ6CiAgICAgICAgcmV0dXJuIHdlaWdodDsK
fQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IHByZWVtcHRpb25fZ29vZG5lc3Moc3RydWN0IHRhc2tf
c3RydWN0ICogcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICogcCwgaW50IGNwdSkKewogICAgICAg
IHJldHVybiBnb29kbmVzcyhwLCBjcHUsIHByZXYtPmFjdGl2ZV9tbSkgLSBnb29kbmVzcyhwcmV2
LCBjcHUsIHByZXYtPmFjdGl2ZV9tbSk7Cn0KCgoKCgoKc3RhdGljIHZvaWQgcmVzY2hlZHVsZV9p
ZGxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHApIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsK
CnN0YXRpYyB2b2lkIHJlc2NoZWR1bGVfaWRsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKQp7Cgog
ICAgICAgIGludCB0aGlzX2NwdSA9IChnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpOwogICAgICAg
IHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCAqdGFyZ2V0X3RzazsKICAgICAgICBpbnQgY3B1LCBi
ZXN0X2NwdSwgaSwgbWF4X3ByaW87CiAgICAgICAgY3ljbGVzX3Qgb2xkZXN0X2lkbGU7CgoKCgoK
ICAgICAgICBiZXN0X2NwdSA9IHAtPnByb2Nlc3NvcjsKICAgICAgICBpZiAoKCghKChzdXNwZW5k
X3Rhc2sgPiAwKSAmJiAoKHAtPmZsYWdzICYgMHgwMDAyMDAwMCkgPT0gMCkgJiYgKCghKHAtPmZs
YWdzICYgMHgwMDA0MDAwMCkpIHx8IChwLT5mbGFncyAmIDB4MDAwMDgwMDApKSAmJiAocC0+cGlk
ICE9IHN1c3BlbmRfdGFzaykgJiYgKHAtPnN0YXRlICE9IDQpICYmIChzdHJjbXAocC0+Y29tbSwg
InN3YXBwZXIiKSAhPSAwKSkpICYmICgocCktPmNwdXNfcnVubmFibGUgJiAocCktPmNwdXNfYWxs
b3dlZCAmICgxVUwgPDwgYmVzdF9jcHUpKSkpIHsKICAgICAgICAgICAgICAgIHRzayA9IChpbml0
X3Rhc2tzW2NwdV9udW1iZXJfbWFwKGJlc3RfY3B1KV0pOwogICAgICAgICAgICAgICAgaWYgKGFs
aWduZWRfZGF0YVsoYmVzdF9jcHUpXS5zY2hlZHVsZV9kYXRhLmN1cnIgPT0gdHNrKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBuZWVkX3Jlc2NoZWQ7CnNlbmRfbm93X2lkbGU6CgoKCgoK
ICAgICAgICAgICAgICAgICAgICAgICAgbmVlZF9yZXNjaGVkID0gdHNrLT5uZWVkX3Jlc2NoZWQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIHRzay0+bmVlZF9yZXNjaGVkID0gMTsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKChiZXN0X2NwdSAhPSB0aGlzX2NwdSkgJiYgIW5lZWRfcmVzY2hl
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXBfc2VuZF9yZXNjaGVkdWxlKGJl
c3RfY3B1KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
fQogICAgICAgIH0KIyAyNTMgInNjaGVkLmMiCiAgICAgICAgb2xkZXN0X2lkbGUgPSAoY3ljbGVz
X3QpIC0xOwogICAgICAgIHRhcmdldF90c2sgPSAoKHZvaWQgKikwKTsKICAgICAgICBtYXhfcHJp
byA9IDA7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBzbXBfbnVtX2NwdXM7IGkrKykgewogICAg
ICAgICAgICAgICAgY3B1ID0gY3B1X2xvZ2ljYWxfbWFwKGkpOwogICAgICAgICAgICAgICAgaWYg
KCEoKCEoKHN1c3BlbmRfdGFzayA+IDApICYmICgocC0+ZmxhZ3MgJiAweDAwMDIwMDAwKSA9PSAw
KSAmJiAoKCEocC0+ZmxhZ3MgJiAweDAwMDQwMDAwKSkgfHwgKHAtPmZsYWdzICYgMHgwMDAwODAw
MCkpICYmIChwLT5waWQgIT0gc3VzcGVuZF90YXNrKSAmJiAocC0+c3RhdGUgIT0gNCkgJiYgKHN0
cmNtcChwLT5jb21tLCAic3dhcHBlciIpICE9IDApKSkgJiYgKChwKS0+Y3B1c19ydW5uYWJsZSAm
IChwKS0+Y3B1c19hbGxvd2VkICYgKDFVTCA8PCBjcHUpKSkpCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgdHNrID0gYWxpZ25lZF9kYXRhWyhjcHUpXS5z
Y2hlZHVsZV9kYXRhLmN1cnI7CgoKCgoKICAgICAgICAgICAgICAgIGlmICh0c2sgPT0gKGluaXRf
dGFza3NbY3B1X251bWJlcl9tYXAoY3B1KV0pKSB7CgoKCgoKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNtcF9udW1fc2libGluZ3MgPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChhbGlnbmVkX2RhdGFbKGNwdV9zaWJsaW5nX21hcFtjcHVdKV0uc2NoZWR1bGVf
ZGF0YS5jdXJyID09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbml0X3Rh
c2tzW2NwdV9udW1iZXJfbWFwKGNwdV9zaWJsaW5nX21hcFtjcHVdKV0pKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRlc3RfaWRsZSA9IGFsaWduZWRfZGF0YVso
Y3B1KV0uc2NoZWR1bGVfZGF0YS5sYXN0X3NjaGVkdWxlOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0X3RzayA9IHRzazsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChhbGlnbmVkX2RhdGFbKGNwdSldLnNjaGVkdWxlX2RhdGEubGFzdF9zY2hlZHVsZSA8IG9sZGVz
dF9pZGxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkZXN0X2lkbGUgPSBh
bGlnbmVkX2RhdGFbKGNwdSldLnNjaGVkdWxlX2RhdGEubGFzdF9zY2hlZHVsZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdHNrID0gdHNrOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAob2xkZXN0X2lkbGUgPT0gLTFVTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgcHJpbyA9IHByZWVtcHRpb25fZ29vZG5lc3ModHNrLCBwLCBjcHUpOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJpbyA+IG1heF9wcmlvKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfcHJpbyA9IHByaW87CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdHNrID0gdHNrOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0c2sgPSB0YXJnZXRfdHNrOwogICAgICAg
IGlmICh0c2spIHsKICAgICAgICAgICAgICAgIGlmIChvbGRlc3RfaWRsZSAhPSAtMVVMTCkgewog
ICAgICAgICAgICAgICAgICAgICAgICBiZXN0X2NwdSA9IHRzay0+cHJvY2Vzc29yOwogICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHNlbmRfbm93X2lkbGU7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICB0c2stPm5lZWRfcmVzY2hlZCA9IDE7CiAgICAgICAgICAgICAgICBpZiAo
dHNrLT5wcm9jZXNzb3IgIT0gdGhpc19jcHUpCiAgICAgICAgICAgICAgICAgICAgICAgIHNtcF9z
ZW5kX3Jlc2NoZWR1bGUodHNrLT5wcm9jZXNzb3IpOwogICAgICAgIH0KICAgICAgICByZXR1cm47
CiMgMzE5ICJzY2hlZC5jIgp9CiMgMzMyICJzY2hlZC5jIgpzdGF0aWMgaW5saW5lIHZvaWQgYWRk
X3RvX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHApCnsKICAgICAgICBsaXN0X2FkZF90
YWlsKCZwLT5ydW5fbGlzdCwgJnJ1bnF1ZXVlX2hlYWQpOwogICAgICAgIG5yX3J1bm5pbmcrKzsK
fQoKc3RhdGljIGlubGluZSB2b2lkIG1vdmVfbGFzdF9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1
Y3QgKiBwKQp7CiAgICAgICAgbGlzdF9kZWwoJnAtPnJ1bl9saXN0KTsKICAgICAgICBsaXN0X2Fk
ZF90YWlsKCZwLT5ydW5fbGlzdCwgJnJ1bnF1ZXVlX2hlYWQpOwp9CiMgMzUyICJzY2hlZC5jIgpz
dGF0aWMgaW5saW5lIGludCB0cnlfdG9fd2FrZV91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwLCBp
bnQgc3luY2hyb25vdXMpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGlu
dCBzdWNjZXNzID0gMDsKCgoKCiAgICAgICAgZG8geyBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJwdXNoZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJjbGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OyBzcGluX2xvY2soJnJ1bnF1ZXVlX2xv
Y2spOyB9IHdoaWxlICgwKTsKICAgICAgICBwLT5zdGF0ZSA9IDA7CiAgICAgICAgaWYgKHRhc2tf
b25fcnVucXVldWUocCkpCiAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICBhZGRfdG9f
cnVucXVldWUocCk7CiAgICAgICAgaWYgKCFzeW5jaHJvbm91cyB8fCAhKHAtPmNwdXNfYWxsb3dl
ZCAmICgxVUwgPDwgKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcikpKSkKICAgICAgICAgICAgICAg
IHJlc2NoZWR1bGVfaWRsZShwKTsKICAgICAgICBzdWNjZXNzID0gMTsKb3V0OgogICAgICAgIGRv
IHsgc3Bpbl91bmxvY2soJnJ1bnF1ZXVlX2xvY2spOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVz
aGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDAp
OwogICAgICAgIHJldHVybiBzdWNjZXNzOwp9CgppbmxpbmUgaW50IHdha2VfdXBfcHJvY2Vzcyhz
dHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKQp7CiAgICAgICAgcmV0dXJuIHRyeV90b193YWtlX3VwKHAs
IDApOwp9CgpzdGF0aWMgdm9pZCBwcm9jZXNzX3RpbWVvdXQodW5zaWduZWQgbG9uZyBfX2RhdGEp
CnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwID0gKHN0cnVjdCB0YXNrX3N0cnVjdCAq
KSBfX2RhdGE7CgogICAgICAgIHdha2VfdXBfcHJvY2VzcyhwKTsKfQojIDQxMSAic2NoZWQuYyIK
c2lnbmVkIGxvbmcgc2NoZWR1bGVfdGltZW91dChzaWduZWQgbG9uZyB0aW1lb3V0KQp7CiAgICAg
ICAgc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBleHBpcmU7
CgogICAgICAgIHN3aXRjaCAodGltZW91dCkKICAgICAgICB7CiAgICAgICAgY2FzZSAoKGxvbmcp
KH4wVUw+PjEpKToKCgoKCgoKCiAgICAgICAgICAgICAgICBzY2hlZHVsZSgpOwogICAgICAgICAg
ICAgICAgZ290byBvdXQ7CiAgICAgICAgZGVmYXVsdDoKCgoKCgoKCiAgICAgICAgICAgICAgICBp
ZiAodGltZW91dCA8IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHByaW50aygiPDM+IiAic2NoZWR1bGVfdGltZW91dDogd3JvbmcgdGltZW91dCAiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgJWx4IGZyb20gJXBcbiIsIHRpbWVvdXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkp
OwogICAgICAgICAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5zdGF0ZSA9IDA7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgfQogICAgICAgIH0K
CiAgICAgICAgZXhwaXJlID0gdGltZW91dCArIGppZmZpZXM7CgogICAgICAgIGluaXRfdGltZXIo
JnRpbWVyKTsKICAgICAgICB0aW1lci5leHBpcmVzID0gZXhwaXJlOwogICAgICAgIHRpbWVyLmRh
dGEgPSAodW5zaWduZWQgbG9uZykgZ2V0X2N1cnJlbnQoKTsKICAgICAgICB0aW1lci5mdW5jdGlv
biA9IHByb2Nlc3NfdGltZW91dDsKCiAgICAgICAgYWRkX3RpbWVyKCZ0aW1lcik7CiAgICAgICAg
c2NoZWR1bGUoKTsKICAgICAgICBkZWxfdGltZXJfc3luYygmdGltZXIpOwoKICAgICAgICB0aW1l
b3V0ID0gZXhwaXJlIC0gamlmZmllczsKCiBvdXQ6CiAgICAgICAgcmV0dXJuIHRpbWVvdXQgPCAw
ID8gMCA6IHRpbWVvdXQ7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fc2NoZWR1bGVfdGFp
bChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYpCnsKCiAgICAgICAgaW50IHBvbGljeTsKIyA0ODMg
InNjaGVkLmMiCiAgICAgICAgcG9saWN5ID0gcHJldi0+cG9saWN5OwogICAgICAgIHByZXYtPnBv
bGljeSA9IHBvbGljeSAmIH4weDEwOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIjog
OiA6Im1lbW9yeSIpOwoKCgoKCgogICAgICAgIHRhc2tfbG9jayhwcmV2KTsKICAgICAgICB0YXNr
X3JlbGVhc2VfY3B1KHByZXYpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibG9jazsg
YWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAgICBpZiAocHJldi0+c3RhdGUg
PT0gMCkKICAgICAgICAgICAgICAgIGdvdG8gbmVlZHNfcmVzY2hlZDsKCm91dF91bmxvY2s6CiAg
ICAgICAgdGFza191bmxvY2socHJldik7CiAgICAgICAgcmV0dXJuOwojIDUxMiAic2NoZWQuYyIK
bmVlZHNfcmVzY2hlZDoKICAgICAgICB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwoKCgoKCiAgICAgICAgICAgICAgICBpZiAoKHByZXYgPT0gKGluaXRfdGFza3NbY3B1X251
bWJlcl9tYXAoKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcikpXSkpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2xpY3kgJiAweDEwKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOwoKICAgICAgICAgICAgICAgIGRvIHsg
ZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCI6Ij1nIiAoZmxhZ3Mp
OiApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlKDAp
Ozsgc3Bpbl9sb2NrKCZydW5xdWV1ZV9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAg
ICBpZiAoKHByZXYtPnN0YXRlID09IDApICYmICEoKHByZXYpLT5jcHVzX3J1bm5hYmxlICE9IH4w
VUwpKQogICAgICAgICAgICAgICAgICAgICAgICByZXNjaGVkdWxlX2lkbGUocHJldik7CiAgICAg
ICAgICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZydW5xdWV1ZV9sb2NrKTsgX19hc21fXyBfX3Zv
bGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIp
OyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKICAgICAgICB9
CgoKCn0KCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBzY2hlZHVsZV90YWlsKHN0
cnVjdCB0YXNrX3N0cnVjdCAqcHJldikKewogICAgICAgIF9fc2NoZWR1bGVfdGFpbChwcmV2KTsK
fQojIDU1MCAic2NoZWQuYyIKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIHNjaGVk
dWxlKHZvaWQpCnsKICAgICAgICBzdHJ1Y3Qgc2NoZWR1bGVfZGF0YSAqIHNjaGVkX2RhdGE7CiAg
ICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCAqbmV4dCwgKnA7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCAqdG1wOwogICAgICAgIGludCB0aGlzX2NwdSwgYzsKCgogICAgICAgIHByZWZl
dGNodygmcnVucXVldWVfbG9jayk7CgogICAgICAgIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3Qo
KCghZ2V0X2N1cnJlbnQoKS0+YWN0aXZlX21tKSE9MCksMCkpIF9fYXNtX18gX192b2xhdGlsZV9f
KCAidWQyXG4iICJcdC53b3JkICVjMFxuIiAiXHQubG9uZyAlYzFcbiIgOiA6ICJpIiAoNTYwKSwg
ImkiICgic2NoZWQuYyIpKTsgfSB3aGlsZSgwKTsKbmVlZF9yZXNjaGVkX2JhY2s6CiAgICAgICAg
cHJldiA9IGdldF9jdXJyZW50KCk7CiAgICAgICAgdGhpc19jcHUgPSBwcmV2LT5wcm9jZXNzb3I7
CgogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCgoeyBpbnQgX19jcHUgPSAoZ2V0X2N1cnJl
bnQoKS0+cHJvY2Vzc29yKTsgKChpcnFfc3RhdFsoX19jcHUpXS5fX2xvY2FsX2lycV9jb3VudCkg
KyAoaXJxX3N0YXRbKF9fY3B1KV0uX19sb2NhbF9iaF9jb3VudCkgIT0gMCk7IH0pKSwwKSkgewog
ICAgICAgICAgICAgICAgcHJpbnRrKCJTY2hlZHVsaW5nIGluIGludGVycnVwdFxuIik7CiAgICAg
ICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInVkMlxuIiAiXHQud29yZCAlYzBcbiIg
Ilx0LmxvbmcgJWMxXG4iIDogOiAiaSIgKDU2NyksICJpIiAoInNjaGVkLmMiKSk7CiAgICAgICAg
fQoKICAgICAgICBkbyB7IGlmIChwcmV2LT5sb2NrX2RlcHRoID49IDApIHNwaW5fdW5sb2NrKCZr
ZXJuZWxfZmxhZ19jYWNoZWxpbmUubG9jayk7IHJlbGVhc2VfaXJxbG9jayh0aGlzX2NwdSk7IF9f
YXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwoKCgoK
CiAgICAgICAgc2NoZWRfZGF0YSA9ICYgYWxpZ25lZF9kYXRhW3RoaXNfY3B1XS5zY2hlZHVsZV9k
YXRhOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5
Iik7IHNwaW5fbG9jaygmcnVucXVldWVfbG9jayk7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgaWYg
KF9fYnVpbHRpbl9leHBlY3QoKHByZXYtPnBvbGljeSA9PSAyKSwwKSkKICAgICAgICAgICAgICAg
IGlmICghcHJldi0+Y291bnRlcikgewogICAgICAgICAgICAgICAgICAgICAgICBwcmV2LT5jb3Vu
dGVyID0gKCgoMjAtKHByZXYtPm5pY2UpKSA+PiAyKSsxKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgbW92ZV9sYXN0X3J1bnF1ZXVlKHByZXYpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICBz
d2l0Y2ggKHByZXYtPnN0YXRlKSB7CiAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzaWduYWxfcGVuZGluZyhwcmV2KSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZXYtPnN0YXRlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgZGVsX2Zyb21fcnVucXVldWUocHJldik7
CiAgICAgICAgICAgICAgICBjYXNlIDA6OwogICAgICAgIH0KICAgICAgICBwcmV2LT5uZWVkX3Jl
c2NoZWQgPSAwOwoKCgoKCnJlcGVhdF9zY2hlZHVsZToKCgoKICAgICAgICBuZXh0ID0gKGluaXRf
dGFza3NbY3B1X251bWJlcl9tYXAodGhpc19jcHUpXSk7CiAgICAgICAgYyA9IC0xMDAwOwogICAg
ICAgIGZvciAodG1wID0gKCZydW5xdWV1ZV9oZWFkKS0+bmV4dCwgcHJlZmV0Y2godG1wLT5uZXh0
KTsgdG1wICE9ICgmcnVucXVldWVfaGVhZCk7IHRtcCA9IHRtcC0+bmV4dCwgcHJlZmV0Y2godG1w
LT5uZXh0KSkgewogICAgICAgICAgICAgICAgcCA9ICgoc3RydWN0IHRhc2tfc3RydWN0ICopKChj
aGFyICopKHRtcCktKHVuc2lnbmVkIGxvbmcpKCYoKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTApLT5y
dW5fbGlzdCkpKTsKICAgICAgICAgICAgICAgIGlmICgoKCEoKHN1c3BlbmRfdGFzayA+IDApICYm
ICgocC0+ZmxhZ3MgJiAweDAwMDIwMDAwKSA9PSAwKSAmJiAoKCEocC0+ZmxhZ3MgJiAweDAwMDQw
MDAwKSkgfHwgKHAtPmZsYWdzICYgMHgwMDAwODAwMCkpICYmIChwLT5waWQgIT0gc3VzcGVuZF90
YXNrKSAmJiAocC0+c3RhdGUgIT0gNCkgJiYgKHN0cmNtcChwLT5jb21tLCAic3dhcHBlciIpICE9
IDApKSkgJiYgKChwKS0+Y3B1c19ydW5uYWJsZSAmIChwKS0+Y3B1c19hbGxvd2VkICYgKDFVTCA8
PCB0aGlzX2NwdSkpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2VpZ2h0ID0gZ29v
ZG5lc3MocCwgdGhpc19jcHUsIHByZXYtPmFjdGl2ZV9tbSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh3ZWlnaHQgPiBjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB3
ZWlnaHQsIG5leHQgPSBwOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIGlm
IChfX2J1aWx0aW5fZXhwZWN0KCghYyksMCkpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB0YXNr
X3N0cnVjdCAqcDsKCiAgICAgICAgICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZydW5xdWV1ZV9s
b2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgICAgICAgICByZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOwogICAgICAgICAg
ICAgICAgZm9yIChwID0gJihpbml0X3Rhc2tfdW5pb24udGFzaykgOyAocCA9IHAtPm5leHRfdGFz
aykgIT0gJihpbml0X3Rhc2tfdW5pb24udGFzaykgOyApCiAgICAgICAgICAgICAgICAgICAgICAg
IHAtPmNvdW50ZXIgPSAocC0+Y291bnRlciA+PiAxKSArICgoKDIwLShwLT5uaWNlKSkgPj4gMikr
MSk7CiAgICAgICAgICAgICAgICBhc20gdm9sYXRpbGUoImxvY2sgOyBpbmNsICUwIiA6Ij1tIiAo
KCZ0YXNrbGlzdF9sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIGRv
IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZy
dW5xdWV1ZV9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBnb3RvIHJlcGVhdF9z
Y2hlZHVsZTsKICAgICAgICB9CgoKCgoKCiAgICAgICAgc2NoZWRfZGF0YS0+Y3VyciA9IG5leHQ7
CiAgICAgICAgdGFza19zZXRfY3B1KG5leHQsIHRoaXNfY3B1KTsKICAgICAgICBkbyB7IHNwaW5f
dW5sb2NrKCZydW5xdWV1ZV9sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJt
ZW1vcnkiKTsgfSB3aGlsZSAoMCk7CgogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCgoKHN1
c3BlbmRfdGFzayA+IDApICYmICgobmV4dC0+ZmxhZ3MgJiAweDAwMDIwMDAwKSA9PSAwKSAmJiAo
KCEobmV4dC0+ZmxhZ3MgJiAweDAwMDQwMDAwKSkgfHwgKG5leHQtPmZsYWdzICYgMHgwMDAwODAw
MCkpICYmIChuZXh0LT5waWQgIT0gc3VzcGVuZF90YXNrKSAmJiAobmV4dC0+c3RhdGUgIT0gNCkg
JiYgKHN0cmNtcChuZXh0LT5jb21tLCAic3dhcHBlciIpICE9IDApKSksMCkpCiAgICAgICAgICAg
ICAgICBwcmludGsoIlNjaGVkdWxpbmcgc3VzcGVuZGVkIHRhc2sgJXMhXG4iLCBuZXh0LT5jb21t
KTsKCiAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoKHByZXYgPT0gbmV4dCksMCkpIHsKCiAg
ICAgICAgICAgICAgICBwcmV2LT5wb2xpY3kgJj0gfjB4MTA7CiAgICAgICAgICAgICAgICBnb3Rv
IHNhbWVfcHJvY2VzczsKICAgICAgICB9CiMgNjU3ICJzY2hlZC5jIgogICAgICAgIHNjaGVkX2Rh
dGEtPmxhc3Rfc2NoZWR1bGUgPSBnZXRfY3ljbGVzKCk7CiMgNjY3ICJzY2hlZC5jIgogICAgICAg
IGtzdGF0LmNvbnRleHRfc3d0Y2grKzsKIyA2NzcgInNjaGVkLmMiCiAgICAgICAgZG8geyB9IHdo
aWxlKDApOwogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0g
bmV4dC0+bW07CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICpvbGRtbSA9IHByZXYt
PmFjdGl2ZV9tbTsKICAgICAgICAgICAgICAgIGlmICghbW0pIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCgoKG5leHQtPmFjdGl2ZV9tbSkhPTApLDAp
KSBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInVkMlxuIiAiXHQud29yZCAlYzBcbiIgIlx0Lmxvbmcg
JWMxXG4iIDogOiAiaSIgKDY4MiksICJpIiAoInNjaGVkLmMiKSk7IH0gd2hpbGUoMCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIG5leHQtPmFjdGl2ZV9tbSA9IG9sZG1tOwogICAgICAgICAgICAg
ICAgICAgICAgICBhdG9taWNfaW5jKCZvbGRtbS0+bW1fY291bnQpOwogICAgICAgICAgICAgICAg
ICAgICAgICBlbnRlcl9sYXp5X3RsYihvbGRtbSwgbmV4dCwgdGhpc19jcHUpOwogICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBpZiAoX19idWlsdGlu
X2V4cGVjdCgoKG5leHQtPmFjdGl2ZV9tbSAhPSBtbSkhPTApLDApKSBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggInVkMlxuIiAiXHQud29yZCAlYzBcbiIgIlx0LmxvbmcgJWMxXG4iIDogOiAiaSIgKDY4
NyksICJpIiAoInNjaGVkLmMiKSk7IH0gd2hpbGUoMCk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaF9tbShvbGRtbSwgbW0sIG5leHQsIHRoaXNfY3B1KTsKICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgICBpZiAoIXByZXYtPm1tKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHByZXYtPmFjdGl2ZV9tbSA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICBt
bWRyb3Aob2xkbW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCgoKCgogICAgICAgIGRv
IHsgYXNtIHZvbGF0aWxlKCJwdXNobCAlJWVzaVxuXHQiICJwdXNobCAlJWVkaVxuXHQiICJwdXNo
bCAlJWVicFxuXHQiICJtb3ZsICUlZXNwLCUwXG5cdCIgIm1vdmwgJTMsJSVlc3Bcblx0IiAibW92
bCAkMWYsJTFcblx0IiAicHVzaGwgJTRcblx0IiAiam1wIF9fc3dpdGNoX3RvXG4iICIxOlx0IiAi
cG9wbCAlJWVicFxuXHQiICJwb3BsICUlZWRpXG5cdCIgInBvcGwgJSVlc2lcblx0IiA6Ij1tIiAo
cHJldi0+dGhyZWFkLmVzcCksIj1tIiAocHJldi0+dGhyZWFkLmVpcCksICI9YiIgKHByZXYpIDoi
bSIgKG5leHQtPnRocmVhZC5lc3ApLCJtIiAobmV4dC0+dGhyZWFkLmVpcCksICJhIiAocHJldiks
ICJkIiAobmV4dCksICJiIiAocHJldikpOyB9IHdoaWxlICgwKTsKICAgICAgICBfX3NjaGVkdWxl
X3RhaWwocHJldik7CgpzYW1lX3Byb2Nlc3M6CiAgICAgICAgZG8geyBpZiAoZ2V0X2N1cnJlbnQo
KS0+bG9ja19kZXB0aCA+PSAwKSBzcGluX2xvY2soJmtlcm5lbF9mbGFnX2NhY2hlbGluZS5sb2Nr
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaWYgKGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkK
ICAgICAgICAgICAgICAgIGdvdG8gbmVlZF9yZXNjaGVkX2JhY2s7CiAgICAgICAgcmV0dXJuOwp9
CiMgNzIwICJzY2hlZC5jIgpzdGF0aWMgaW5saW5lIHZvaWQgX193YWtlX3VwX2NvbW1vbiAod2Fp
dF9xdWV1ZV9oZWFkX3QgKnEsIHVuc2lnbmVkIGludCBtb2RlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG5yX2V4Y2x1c2l2ZSwgY29uc3QgaW50IHN5bmMpCnsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp0bXA7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpw
OwoKICAgICAgICA7CiAgICAgICAgOwoKICAgICAgICBmb3IgKHRtcCA9ICgmcS0+dGFza19saXN0
KS0+bmV4dCwgcHJlZmV0Y2godG1wLT5uZXh0KTsgdG1wICE9ICgmcS0+dGFza19saXN0KTsgdG1w
ID0gdG1wLT5uZXh0LCBwcmVmZXRjaCh0bXAtPm5leHQpKSB7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgc3RhdGU7CiAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKmN1cnIgPSAoKHdh
aXRfcXVldWVfdCAqKSgoY2hhciAqKSh0bXApLSh1bnNpZ25lZCBsb25nKSgmKCh3YWl0X3F1ZXVl
X3QgKikwKS0+dGFza19saXN0KSkpOwoKICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAg
IHAgPSBjdXJyLT50YXNrOwogICAgICAgICAgICAgICAgc3RhdGUgPSBwLT5zdGF0ZTsKICAgICAg
ICAgICAgICAgIGlmIChzdGF0ZSAmIG1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgOwog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJ5X3RvX3dha2VfdXAocCwgc3luYykgJiYgKGN1
cnItPmZsYWdzJjB4MDEpICYmICEtLW5yX2V4Y2x1c2l2ZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9Cn0KCnZvaWQgX193
YWtlX3VwKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKQp7
CiAgICAgICAgaWYgKHEpIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAg
ICAgICAgICAgICAgICBkbyB7IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBv
cGwgJTAiOiI9ZyIgKGZsYWdzKTogKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJt
ZW1vcnkiKTsgfSB3aGlsZSgwKTs7IHNwaW5fbG9jaygmcS0+bG9jayk7IH0gd2hpbGUgKDApOwog
ICAgICAgICAgICAgICAgX193YWtlX3VwX2NvbW1vbihxLCBtb2RlLCBuciwgMCk7CiAgICAgICAg
ICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZxLT5sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18o
InB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxl
ICgwKTsKICAgICAgICB9Cn0KCnZvaWQgX193YWtlX3VwX3N5bmMod2FpdF9xdWV1ZV9oZWFkX3Qg
KnEsIHVuc2lnbmVkIGludCBtb2RlLCBpbnQgbnIpCnsKICAgICAgICBpZiAocSkgewogICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCI6Ij1nIiAoZmxhZ3MpOiApOyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlKDApOzsgc3Bp
bl9sb2NrKCZxLT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBfX3dha2VfdXBf
Y29tbW9uKHEsIG1vZGUsIG5yLCAxKTsKICAgICAgICAgICAgICAgIGRvIHsgc3Bpbl91bmxvY2so
JnEtPmxvY2spOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIg
KGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwogICAgICAgIH0KfQoKdm9pZCBj
b21wbGV0ZShzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxh
Z3M7CgogICAgICAgIGRvIHsgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9w
bCAlMCI6Ij1nIiAoZmxhZ3MpOiApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1l
bW9yeSIpOyB9IHdoaWxlKDApOzsgc3Bpbl9sb2NrKCZ4LT53YWl0LmxvY2spOyB9IHdoaWxlICgw
KTsKICAgICAgICB4LT5kb25lKys7CiAgICAgICAgX193YWtlX3VwX2NvbW1vbigmeC0+d2FpdCwg
MiB8IDEsIDEsIDApOwogICAgICAgIGRvIHsgc3Bpbl91bmxvY2soJngtPndhaXQubG9jayk7IF9f
YXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1v
cnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7Cn0KCnZvaWQgd2FpdF9mb3JfY29tcGxldGlvbihzdHJ1
Y3QgY29tcGxldGlvbiAqeCkKewogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNs
aSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZ4LT53YWl0LmxvY2spOyB9IHdoaWxlICgwKTsK
ICAgICAgICBpZiAoIXgtPmRvbmUpIHsKICAgICAgICAgICAgICAgIHdhaXRfcXVldWVfdCB3YWl0
ID0geyB0YXNrOiBnZXRfY3VycmVudCgpLCB0YXNrX2xpc3Q6IHsgKCh2b2lkICopMCksICgodm9p
ZCAqKTApIH0sIH07CgogICAgICAgICAgICAgICAgd2FpdC5mbGFncyB8PSAweDAxOwogICAgICAg
ICAgICAgICAgX19hZGRfd2FpdF9xdWV1ZV90YWlsKCZ4LT53YWl0LCAmd2FpdCk7CiAgICAgICAg
ICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgZ2V0X2N1cnJlbnQoKS0+
c3RhdGUgPSAoMik7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7IHNw
aW5fdW5sb2NrKCZ4LT53YWl0LmxvY2spOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6
Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGUo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xp
IjogOiA6Im1lbW9yeSIpOyBzcGluX2xvY2soJngtPndhaXQubG9jayk7IH0gd2hpbGUgKDApOwog
ICAgICAgICAgICAgICAgfSB3aGlsZSAoIXgtPmRvbmUpOwogICAgICAgICAgICAgICAgX19yZW1v
dmVfd2FpdF9xdWV1ZSgmeC0+d2FpdCwgJndhaXQpOwogICAgICAgIH0KICAgICAgICB4LT5kb25l
LS07CiAgICAgICAgZG8geyBzcGluX3VubG9jaygmeC0+d2FpdC5sb2NrKTsgX19hc21fXyBfX3Zv
bGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KIyA4MDkgInNjaGVk
LmMiCnZvaWQgaW50ZXJydXB0aWJsZV9zbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7IHdhaXRfcXVldWVfdCB3YWl0OyBpbml0X3dhaXRx
dWV1ZV9lbnRyeSgmd2FpdCwgZ2V0X2N1cnJlbnQoKSk7CgogICAgICAgIGdldF9jdXJyZW50KCkt
PnN0YXRlID0gMTsKCiAgICAgICAgZG8geyBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
ZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGki
OiA6IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OyBzcGluX2xvY2soJnEtPmxvY2spOyB9IHdoaWxl
ICgwKTsgX19hZGRfd2FpdF9xdWV1ZShxLCAmd2FpdCk7IHNwaW5fdW5sb2NrKCZxLT5sb2NrKTsK
ICAgICAgICBzY2hlZHVsZSgpOwogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNs
aSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZxLT5sb2NrKTsgfSB3aGlsZSAoMCk7IF9fcmVt
b3ZlX3dhaXRfcXVldWUocSwgJndhaXQpOyBkbyB7IHNwaW5fdW5sb2NrKCZxLT5sb2NrKTsgX19h
c21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9y
eSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQoKbG9uZyBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3Rp
bWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIGxvbmcgdGltZW91dCkKewogICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7IHdhaXRfcXVldWVfdCB3YWl0OyBpbml0X3dhaXRxdWV1ZV9lbnRyeSgm
d2FpdCwgZ2V0X2N1cnJlbnQoKSk7CgogICAgICAgIGdldF9jdXJyZW50KCktPnN0YXRlID0gMTsK
CiAgICAgICAgZG8geyBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUw
IjoiPWciIChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5
Iik7IH0gd2hpbGUoMCk7OyBzcGluX2xvY2soJnEtPmxvY2spOyB9IHdoaWxlICgwKTsgX19hZGRf
d2FpdF9xdWV1ZShxLCAmd2FpdCk7IHNwaW5fdW5sb2NrKCZxLT5sb2NrKTsKICAgICAgICB0aW1l
b3V0ID0gc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0KTsKICAgICAgICBkbyB7IF9fYXNtX18gX192
b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7IHNwaW5fbG9jaygmcS0+bG9jayk7IH0gd2hp
bGUgKDApOyBfX3JlbW92ZV93YWl0X3F1ZXVlKHEsICZ3YWl0KTsgZG8geyBzcGluX3VubG9jaygm
cS0+bG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAo
ZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CgogICAgICAgIHJldHVybiB0aW1l
b3V0Owp9Cgp2b2lkIHNsZWVwX29uKHdhaXRfcXVldWVfaGVhZF90ICpxKQp7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBmbGFnczsgd2FpdF9xdWV1ZV90IHdhaXQ7IGluaXRfd2FpdHF1ZXVlX2VudHJ5
KCZ3YWl0LCBnZXRfY3VycmVudCgpKTsKCiAgICAgICAgZ2V0X2N1cnJlbnQoKS0+c3RhdGUgPSAy
OwoKICAgICAgICBkbyB7IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwg
JTAiOiI9ZyIgKGZsYWdzKTogKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1v
cnkiKTsgfSB3aGlsZSgwKTs7IHNwaW5fbG9jaygmcS0+bG9jayk7IH0gd2hpbGUgKDApOyBfX2Fk
ZF93YWl0X3F1ZXVlKHEsICZ3YWl0KTsgc3Bpbl91bmxvY2soJnEtPmxvY2spOwogICAgICAgIHNj
aGVkdWxlKCk7CiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1l
bW9yeSIpOyBzcGluX2xvY2soJnEtPmxvY2spOyB9IHdoaWxlICgwKTsgX19yZW1vdmVfd2FpdF9x
dWV1ZShxLCAmd2FpdCk7IGRvIHsgc3Bpbl91bmxvY2soJnEtPmxvY2spOyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7
IH0gd2hpbGUgKDApOwp9Cgpsb25nIHNsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3Qg
KnEsIGxvbmcgdGltZW91dCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7IHdhaXRfcXVl
dWVfdCB3YWl0OyBpbml0X3dhaXRxdWV1ZV9lbnRyeSgmd2FpdCwgZ2V0X2N1cnJlbnQoKSk7Cgog
ICAgICAgIGdldF9jdXJyZW50KCktPnN0YXRlID0gMjsKCiAgICAgICAgZG8geyBkbyB7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OyBzcGluX2xv
Y2soJnEtPmxvY2spOyB9IHdoaWxlICgwKTsgX19hZGRfd2FpdF9xdWV1ZShxLCAmd2FpdCk7IHNw
aW5fdW5sb2NrKCZxLT5sb2NrKTsKICAgICAgICB0aW1lb3V0ID0gc2NoZWR1bGVfdGltZW91dCh0
aW1lb3V0KTsKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVt
b3J5Iik7IHNwaW5fbG9jaygmcS0+bG9jayk7IH0gd2hpbGUgKDApOyBfX3JlbW92ZV93YWl0X3F1
ZXVlKHEsICZ3YWl0KTsgZG8geyBzcGluX3VubG9jaygmcS0+bG9jayk7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsg
fSB3aGlsZSAoMCk7CgogICAgICAgIHJldHVybiB0aW1lb3V0Owp9Cgp2b2lkIHNjaGVkdWxpbmdf
ZnVuY3Rpb25zX2VuZF9oZXJlKHZvaWQpIHsgfQojIDg2OSAic2NoZWQuYyIKdm9pZCBzZXRfY3B1
c19hbGxvd2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdW5zaWduZWQgbG9uZyBuZXdfbWFzaykK
ewogICAgICAgIG5ld19tYXNrICY9IGNwdV9vbmxpbmVfbWFwOwogICAgICAgIGRvIHsgaWYgKF9f
YnVpbHRpbl9leHBlY3QoKCghbmV3X21hc2spIT0wKSwwKSkgX19hc21fXyBfX3ZvbGF0aWxlX18o
ICJ1ZDJcbiIgIlx0LndvcmQgJWMwXG4iICJcdC5sb25nICVjMVxuIiA6IDogImkiICg4NzIpLCAi
aSIgKCJzY2hlZC5jIikpOyB9IHdoaWxlKDApOwoKICAgICAgICBwLT5jcHVzX2FsbG93ZWQgPSBu
ZXdfbWFzazsKCgoKCgoKICAgICAgICBpZiAoIShwLT5jcHVzX3J1bm5hYmxlICYgcC0+Y3B1c19h
bGxvd2VkKSkgewogICAgICAgICAgICAgICAgaWYgKHAgIT0gZ2V0X2N1cnJlbnQoKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICBwLT5uZWVkX3Jlc2NoZWQgPSAxOwogICAgICAgICAgICAgICAg
ICAgICAgICBzbXBfc2VuZF9yZXNjaGVkdWxlKHAtPnByb2Nlc3Nvcik7CiAgICAgICAgICAgICAg
ICB9CgoKCgoKICAgICAgICAgICAgICAgIHdoaWxlICghKHAtPmNwdXNfcnVubmFibGUgJiBwLT5j
cHVzX2FsbG93ZWQpKQogICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZSgpOwogICAgICAg
IH0KfQojIDkwNSAic2NoZWQuYyIKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5
c19uaWNlKGludCBpbmNyZW1lbnQpCnsKICAgICAgICBsb25nIG5ld3ByaW87CgoKCgoKCiAgICAg
ICAgaWYgKGluY3JlbWVudCA8IDApIHsKICAgICAgICAgICAgICAgIGlmICghY2FwYWJsZSgyMykp
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgIGlmIChp
bmNyZW1lbnQgPCAtNDApCiAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IC00MDsK
ICAgICAgICB9CiAgICAgICAgaWYgKGluY3JlbWVudCA+IDQwKQogICAgICAgICAgICAgICAgaW5j
cmVtZW50ID0gNDA7CgogICAgICAgIG5ld3ByaW8gPSBnZXRfY3VycmVudCgpLT5uaWNlICsgaW5j
cmVtZW50OwogICAgICAgIGlmIChuZXdwcmlvIDwgLTIwKQogICAgICAgICAgICAgICAgbmV3cHJp
byA9IC0yMDsKICAgICAgICBpZiAobmV3cHJpbyA+IDE5KQogICAgICAgICAgICAgICAgbmV3cHJp
byA9IDE5OwogICAgICAgIGdldF9jdXJyZW50KCktPm5pY2UgPSBuZXdwcmlvOwogICAgICAgIHJl
dHVybiAwOwp9CgoKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Byb2Nl
c3NfYnlfcGlkKHBpZF90IHBpZCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0g
Z2V0X2N1cnJlbnQoKTsKCiAgICAgICAgaWYgKHBpZCkKICAgICAgICAgICAgICAgIHRzayA9IGZp
bmRfdGFza19ieV9waWQocGlkKTsKICAgICAgICByZXR1cm4gdHNrOwp9CgpzdGF0aWMgaW50IHNl
dHNjaGVkdWxlcihwaWRfdCBwaWQsIGludCBwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pCnsKICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0g
bHA7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwOwogICAgICAgIGludCByZXR2YWw7Cgog
ICAgICAgIHJldHZhbCA9IC0yMjsKICAgICAgICBpZiAoIXBhcmFtIHx8IHBpZCA8IDApCiAgICAg
ICAgICAgICAgICBnb3RvIG91dF9ub3VubG9jazsKCiAgICAgICAgcmV0dmFsID0gLTE0OwogICAg
ICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mKHN0cnVjdCBzY2hlZF9wYXJhbSkp
ID8gX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcigoJmxwKSwocGFyYW0pLChzaXplb2Yoc3RydWN0
IHNjaGVkX3BhcmFtKSkpIDogX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKCgmbHApLChwYXJhbSks
KHNpemVvZihzdHJ1Y3Qgc2NoZWRfcGFyYW0pKSkpKQogICAgICAgICAgICAgICAgZ290byBvdXRf
bm91bmxvY2s7CgoKCgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDog
OiJtZW1vcnkiKTsgcmVhZF9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgc3Bpbl9sb2NrKCZydW5xdWV1ZV9sb2NrKTsKCiAgICAgICAgcCA9IGZpbmRfcHJvY2Vzc19i
eV9waWQocGlkKTsKCiAgICAgICAgcmV0dmFsID0gLTM7CiAgICAgICAgaWYgKCFwKQogICAgICAg
ICAgICAgICAgZ290byBvdXRfdW5sb2NrOwoKICAgICAgICBpZiAocG9saWN5IDwgMCkKICAgICAg
ICAgICAgICAgIHBvbGljeSA9IHAtPnBvbGljeTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgIHJldHZhbCA9IC0yMjsKICAgICAgICAgICAgICAgIGlmIChwb2xpY3kgIT0gMSAmJiBwb2xp
Y3kgIT0gMiAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeSAhPSAwKQog
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CiAgICAgICAgfQoKCgoKCiAg
ICAgICAgcmV0dmFsID0gLTIyOwogICAgICAgIGlmIChscC5zY2hlZF9wcmlvcml0eSA8IDAgfHwg
bHAuc2NoZWRfcHJpb3JpdHkgPiA5OSkKICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsK
ICAgICAgICBpZiAoKHBvbGljeSA9PSAwKSAhPSAobHAuc2NoZWRfcHJpb3JpdHkgPT0gMCkpCiAg
ICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CgogICAgICAgIHJldHZhbCA9IC0xOwogICAg
ICAgIGlmICgocG9saWN5ID09IDEgfHwgcG9saWN5ID09IDIpICYmCiAgICAgICAgICAgICFjYXBh
YmxlKDIzKSkKICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKICAgICAgICBpZiAoKGdl
dF9jdXJyZW50KCktPmV1aWQgIT0gcC0+ZXVpZCkgJiYgKGdldF9jdXJyZW50KCktPmV1aWQgIT0g
cC0+dWlkKSAmJgogICAgICAgICAgICAhY2FwYWJsZSgyMykpCiAgICAgICAgICAgICAgICBnb3Rv
IG91dF91bmxvY2s7CgogICAgICAgIHJldHZhbCA9IDA7CiAgICAgICAgcC0+cG9saWN5ID0gcG9s
aWN5OwogICAgICAgIHAtPnJ0X3ByaW9yaXR5ID0gbHAuc2NoZWRfcHJpb3JpdHk7CgogICAgICAg
IGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCA9IDE7CgpvdXRfdW5sb2NrOgogICAgICAgIHNw
aW5fdW5sb2NrKCZydW5xdWV1ZV9sb2NrKTsKICAgICAgICBkbyB7IGFzbSB2b2xhdGlsZSgibG9j
ayA7IGluY2wgJTAiIDoiPW0iICgoJnRhc2tsaXN0X2xvY2spLT5sb2NrKSA6IDogIm1lbW9yeSIp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsK
Cm91dF9ub3VubG9jazoKICAgICAgICByZXR1cm4gcmV0dmFsOwp9CgogX19hdHRyaWJ1dGVfXygo
cmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX3NldHNjaGVkdWxlcihwaWRfdCBwaWQsIGludCBw
b2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVk
X3BhcmFtICpwYXJhbSkKewogICAgICAgIHJldHVybiBzZXRzY2hlZHVsZXIocGlkLCBwb2xpY3ks
IHBhcmFtKTsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9z
ZXRwYXJhbShwaWRfdCBwaWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pCnsKICAgICAgICBy
ZXR1cm4gc2V0c2NoZWR1bGVyKHBpZCwgLTEsIHBhcmFtKTsKfQoKIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9nZXRzY2hlZHVsZXIocGlkX3QgcGlkKQp7CiAgICAg
ICAgc3RydWN0IHRhc2tfc3RydWN0ICpwOwogICAgICAgIGludCByZXR2YWw7CgogICAgICAgIHJl
dHZhbCA9IC0yMjsKICAgICAgICBpZiAocGlkIDwgMCkKICAgICAgICAgICAgICAgIGdvdG8gb3V0
X25vdW5sb2NrOwoKICAgICAgICByZXR2YWwgPSAtMzsKICAgICAgICByZWFkX2xvY2soJnRhc2ts
aXN0X2xvY2spOwogICAgICAgIHAgPSBmaW5kX3Byb2Nlc3NfYnlfcGlkKHBpZCk7CiAgICAgICAg
aWYgKHApCiAgICAgICAgICAgICAgICByZXR2YWwgPSBwLT5wb2xpY3kgJiB+MHgxMDsKICAgICAg
ICBhc20gdm9sYXRpbGUoImxvY2sgOyBpbmNsICUwIiA6Ij1tIiAoKCZ0YXNrbGlzdF9sb2NrKS0+
bG9jaykgOiA6ICJtZW1vcnkiKTsKCm91dF9ub3VubG9jazoKICAgICAgICByZXR1cm4gcmV0dmFs
Owp9CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX2dldHBhcmFt
KHBpZF90IHBpZCwgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSkKewogICAgICAgIHN0cnVjdCB0
YXNrX3N0cnVjdCAqcDsKICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gbHA7CiAgICAgICAgaW50
IHJldHZhbDsKCiAgICAgICAgcmV0dmFsID0gLTIyOwogICAgICAgIGlmICghcGFyYW0gfHwgcGlk
IDwgMCkKICAgICAgICAgICAgICAgIGdvdG8gb3V0X25vdW5sb2NrOwoKICAgICAgICByZWFkX2xv
Y2soJnRhc2tsaXN0X2xvY2spOwogICAgICAgIHAgPSBmaW5kX3Byb2Nlc3NfYnlfcGlkKHBpZCk7
CiAgICAgICAgcmV0dmFsID0gLTM7CiAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgZ290
byBvdXRfdW5sb2NrOwogICAgICAgIGxwLnNjaGVkX3ByaW9yaXR5ID0gcC0+cnRfcHJpb3JpdHk7
CiAgICAgICAgYXNtIHZvbGF0aWxlKCJsb2NrIDsgaW5jbCAlMCIgOiI9bSIgKCgmdGFza2xpc3Rf
bG9jayktPmxvY2spIDogOiAibWVtb3J5Iik7CgoKCgogICAgICAgIHJldHZhbCA9IChfX2J1aWx0
aW5fY29uc3RhbnRfcChzaXplb2YoKnBhcmFtKSkgPyBfX2NvbnN0YW50X2NvcHlfdG9fdXNlcigo
cGFyYW0pLCgmbHApLChzaXplb2YoKnBhcmFtKSkpIDogX19nZW5lcmljX2NvcHlfdG9fdXNlcigo
cGFyYW0pLCgmbHApLChzaXplb2YoKnBhcmFtKSkpKSA/IC0xNCA6IDA7CgpvdXRfbm91bmxvY2s6
CiAgICAgICAgcmV0dXJuIHJldHZhbDsKCm91dF91bmxvY2s6CiAgICAgICAgYXNtIHZvbGF0aWxl
KCJsb2NrIDsgaW5jbCAlMCIgOiI9bSIgKCgmdGFza2xpc3RfbG9jayktPmxvY2spIDogOiAibWVt
b3J5Iik7CiAgICAgICAgcmV0dXJuIHJldHZhbDsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MCkpKSBsb25nIHN5c19zY2hlZF95aWVsZCh2b2lkKQp7CiMgMTA4MyAic2NoZWQuYyIKICAgICAg
ICBpbnQgbnJfcGVuZGluZyA9IG5yX3J1bm5pbmc7CgoKICAgICAgICBpbnQgaTsKCgogICAgICAg
IGZvciAoaSA9IDA7IGkgPCBzbXBfbnVtX2NwdXM7IGkrKykgewogICAgICAgICAgICAgICAgaW50
IGNwdSA9IGNwdV9sb2dpY2FsX21hcChpKTsKICAgICAgICAgICAgICAgIGlmIChhbGlnbmVkX2Rh
dGFbY3B1XS5zY2hlZHVsZV9kYXRhLmN1cnIgIT0gKGluaXRfdGFza3NbY3B1X251bWJlcl9tYXAo
Y3B1KV0pKQogICAgICAgICAgICAgICAgICAgICAgICBucl9wZW5kaW5nLS07CiAgICAgICAgfQoK
CgoKICAgICAgICBpZiAobnJfcGVuZGluZykgewoKCgoKICAgICAgICAgICAgICAgIGlmIChnZXRf
Y3VycmVudCgpLT5wb2xpY3kgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2N1cnJl
bnQoKS0+cG9saWN5IHw9IDB4MTA7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5uZWVk
X3Jlc2NoZWQgPSAxOwoKICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18o
ImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZydW5xdWV1ZV9sb2NrKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgICAgICAgICBtb3ZlX2xhc3RfcnVucXVldWUoZ2V0X2N1cnJlbnQoKSk7CiAg
ICAgICAgICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZydW5xdWV1ZV9sb2NrKTsgX19hc21fXyBf
X3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgfQog
ICAgICAgIHJldHVybiAwOwp9CgoKCgoKCgp2b2lkIHlpZWxkKHZvaWQpCnsKICAgICAgICBkbyB7
ICgoX190eXBlb2ZfXygqKCZnZXRfY3VycmVudCgpLT5zdGF0ZSkpKV9feGNoZygodW5zaWduZWQg
bG9uZykoKDApKSwoJmdldF9jdXJyZW50KCktPnN0YXRlKSxzaXplb2YoKigmZ2V0X2N1cnJlbnQo
KS0+c3RhdGUpKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICBzeXNfc2NoZWRfeWllbGQoKTsKICAg
ICAgICBzY2hlZHVsZSgpOwp9Cgp2b2lkIF9fY29uZF9yZXNjaGVkKHZvaWQpCnsKICAgICAgICBk
byB7ICgoX190eXBlb2ZfXygqKCZnZXRfY3VycmVudCgpLT5zdGF0ZSkpKV9feGNoZygodW5zaWdu
ZWQgbG9uZykoKDApKSwoJmdldF9jdXJyZW50KCktPnN0YXRlKSxzaXplb2YoKigmZ2V0X2N1cnJl
bnQoKS0+c3RhdGUpKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICBzY2hlZHVsZSgpOwp9CgogX19h
dHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX2dldF9wcmlvcml0eV9tYXgo
aW50IHBvbGljeSkKewogICAgICAgIGludCByZXQgPSAtMjI7CgogICAgICAgIHN3aXRjaCAocG9s
aWN5KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHJl
dCA9IDk5OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgICAgcmV0ID0gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBy
ZXR1cm4gcmV0Owp9CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVk
X2dldF9wcmlvcml0eV9taW4oaW50IHBvbGljeSkKewogICAgICAgIGludCByZXQgPSAtMjI7Cgog
ICAgICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgIGNhc2UgMjoK
ICAgICAgICAgICAgICAgIHJldCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlIDA6CiAgICAgICAgICAgICAgICByZXQgPSAwOwogICAgICAgIH0KICAgICAgICByZXR1cm4g
cmV0Owp9CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX3JyX2dl
dF9pbnRlcnZhbChwaWRfdCBwaWQsIHN0cnVjdCB0aW1lc3BlYyAqaW50ZXJ2YWwpCnsKICAgICAg
ICBzdHJ1Y3QgdGltZXNwZWMgdDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnA7CiAgICAg
ICAgaW50IHJldHZhbCA9IC0yMjsKCiAgICAgICAgaWYgKHBpZCA8IDApCiAgICAgICAgICAgICAg
ICBnb3RvIG91dF9ub3VubG9jazsKCiAgICAgICAgcmV0dmFsID0gLTM7CiAgICAgICAgcmVhZF9s
b2NrKCZ0YXNrbGlzdF9sb2NrKTsKICAgICAgICBwID0gZmluZF9wcm9jZXNzX2J5X3BpZChwaWQp
OwogICAgICAgIGlmIChwKQogICAgICAgICAgICAgICAgamlmZmllc190b190aW1lc3BlYyhwLT5w
b2xpY3kgJiAxID8gMCA6ICgoKDIwLShwLT5uaWNlKSkgPj4gMikrMSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZ0KTsKICAgICAgICBhc20gdm9sYXRpbGUoImxvY2sgOyBp
bmNsICUwIiA6Ij1tIiAoKCZ0YXNrbGlzdF9sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsKICAg
ICAgICBpZiAocCkKICAgICAgICAgICAgICAgIHJldHZhbCA9IChfX2J1aWx0aW5fY29uc3RhbnRf
cChzaXplb2YodCkpID8gX19jb25zdGFudF9jb3B5X3RvX3VzZXIoKGludGVydmFsKSwoJnQpLChz
aXplb2YodCkpKSA6IF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIoKGludGVydmFsKSwoJnQpLChzaXpl
b2YodCkpKSkgPyAtMTQgOiAwOwpvdXRfbm91bmxvY2s6CiAgICAgICAgcmV0dXJuIHJldHZhbDsK
fQoKc3RhdGljIHZvaWQgc2hvd190YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHApCnsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZyZWUgPSAwOwogICAgICAgIGludCBzdGF0ZTsKICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciAqIHN0YXRfbmFtW10gPSB7ICJSIiwgIlMiLCAiRCIsICJaIiwgIlQiLCAi
VyIgfTsKCiAgICAgICAgcHJpbnRrKCIlLTEzLjEzcyAiLCBwLT5jb21tKTsKICAgICAgICBzdGF0
ZSA9IHAtPnN0YXRlID8gZmZ6KH5wLT5zdGF0ZSkgKyAxIDogMDsKICAgICAgICBpZiAoKCh1bnNp
Z25lZCkgc3RhdGUpIDwgc2l6ZW9mKHN0YXRfbmFtKS9zaXplb2YoY2hhciAqKSkKICAgICAgICAg
ICAgICAgIHByaW50ayhzdGF0X25hbVtzdGF0ZV0pOwogICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgIHByaW50aygiICIpOwoKICAgICAgICBpZiAocCA9PSBnZXRfY3VycmVudCgpKQogICAgICAg
ICAgICAgICAgcHJpbnRrKCIgY3VycmVudCAgIik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgcHJpbnRrKCIgJTA4bFggIiwgdGhyZWFkX3NhdmVkX3BjKCZwLT50aHJlYWQpKTsKCgoKCgoK
ICAgICAgICB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICogbiA9ICh1bnNpZ25lZCBs
b25nICopIChwKzEpOwogICAgICAgICAgICAgICAgd2hpbGUgKCEqbikKICAgICAgICAgICAgICAg
ICAgICAgICAgbisrOwogICAgICAgICAgICAgICAgZnJlZSA9ICh1bnNpZ25lZCBsb25nKSBuIC0g
KHVuc2lnbmVkIGxvbmcpKHArMSk7CiAgICAgICAgfQogICAgICAgIHByaW50aygiJTVsdSAlNWQg
JTZkICIsIGZyZWUsIHAtPnBpZCwgcC0+cF9wcHRyLT5waWQpOwogICAgICAgIGlmIChwLT5wX2Nw
dHIpCiAgICAgICAgICAgICAgICBwcmludGsoIiU1ZCAiLCBwLT5wX2NwdHItPnBpZCk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrKCIgICAgICAiKTsKICAgICAgICBpZiAocC0+
cF95c3B0cikKICAgICAgICAgICAgICAgIHByaW50aygiJTdkIiwgcC0+cF95c3B0ci0+cGlkKTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBwcmludGsoIiAgICAgICAiKTsKICAgICAgICBp
ZiAocC0+cF9vc3B0cikKICAgICAgICAgICAgICAgIHByaW50aygiICU1ZCIsIHAtPnBfb3NwdHIt
PnBpZCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrKCIgICAgICAiKTsKICAg
ICAgICBpZiAoIXAtPm1tKQogICAgICAgICAgICAgICAgcHJpbnRrKCIgKEwtVExCKVxuIik7CiAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrKCIgKE5PVExCKVxuIik7CgogICAgICAg
IHsKICAgICAgICAgICAgICAgIGV4dGVybiB2b2lkIHNob3dfdHJhY2VfdGFzayhzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnRzayk7CiAgICAgICAgICAgICAgICBzaG93X3RyYWNlX3Rhc2socCk7CiAgICAg
ICAgfQp9CgpjaGFyICogcmVuZGVyX3NpZ3NldF90KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZl
cikKewogICAgICAgIGludCBpID0gNjQsIHg7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAg
aSAtPSA0LCB4ID0gMDsKICAgICAgICAgICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3Ao
aSsxKSA/IF9fY29uc3Rfc2lnaXNtZW1iZXIoKHNldCksKGkrMSkpIDogX19nZW5fc2lnaXNtZW1i
ZXIoKHNldCksKGkrMSkpKSkgeCB8PSAxOwogICAgICAgICAgICAgICAgaWYgKChfX2J1aWx0aW5f
Y29uc3RhbnRfcChpKzIpID8gX19jb25zdF9zaWdpc21lbWJlcigoc2V0KSwoaSsyKSkgOiBfX2dl
bl9zaWdpc21lbWJlcigoc2V0KSwoaSsyKSkpKSB4IHw9IDI7CiAgICAgICAgICAgICAgICBpZiAo
KF9fYnVpbHRpbl9jb25zdGFudF9wKGkrMykgPyBfX2NvbnN0X3NpZ2lzbWVtYmVyKChzZXQpLChp
KzMpKSA6IF9fZ2VuX3NpZ2lzbWVtYmVyKChzZXQpLChpKzMpKSkpIHggfD0gNDsKICAgICAgICAg
ICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AoaSs0KSA/IF9fY29uc3Rfc2lnaXNtZW1i
ZXIoKHNldCksKGkrNCkpIDogX19nZW5fc2lnaXNtZW1iZXIoKHNldCksKGkrNCkpKSkgeCB8PSA4
OwogICAgICAgICAgICAgICAgKmJ1ZmZlcisrID0gKHggPCAxMCA/ICcwJyA6ICdhJyAtIDEwKSAr
IHg7CiAgICAgICAgfSB3aGlsZSAoaSA+PSA0KTsKICAgICAgICAqYnVmZmVyID0gMDsKICAgICAg
ICByZXR1cm4gYnVmZmVyOwp9Cgp2b2lkIHNob3dfc3RhdGUodm9pZCkKewogICAgICAgIHN0cnVj
dCB0YXNrX3N0cnVjdCAqcDsKCgogICAgICAgIHByaW50aygiXG4iCiAgICAgICAgICAgICAgICIg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxp
bmdcbiIpOwogICAgICAgIHByaW50aygiICB0YXNrICAgICAgICAgICAgIFBDICAgIHN0YWNrICAg
cGlkIGZhdGhlciBjaGlsZCB5b3VuZ2VyIG9sZGVyXG4iKTsKCgoKCgogICAgICAgIHJlYWRfbG9j
aygmdGFza2xpc3RfbG9jayk7CiAgICAgICAgZm9yIChwID0gJihpbml0X3Rhc2tfdW5pb24udGFz
aykgOyAocCA9IHAtPm5leHRfdGFzaykgIT0gJihpbml0X3Rhc2tfdW5pb24udGFzaykgOyApIHsK
CgoKCiAgICAgICAgICAgICAgICB0b3VjaF9ubWlfd2F0Y2hkb2coKTsKICAgICAgICAgICAgICAg
IHNob3dfdGFzayhwKTsKICAgICAgICB9CiAgICAgICAgYXNtIHZvbGF0aWxlKCJsb2NrIDsgaW5j
bCAlMCIgOiI9bSIgKCgmdGFza2xpc3RfbG9jayktPmxvY2spIDogOiAibWVtb3J5Iik7Cn0KIyAx
MjkxICJzY2hlZC5jIgp2b2lkIHJlcGFyZW50X3RvX2luaXQodm9pZCkKewogICAgICAgIHN0cnVj
dCB0YXNrX3N0cnVjdCAqdGhpc190YXNrID0gZ2V0X2N1cnJlbnQoKTsKCiAgICAgICAgZG8geyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB3cml0ZV9sb2NrKCZ0YXNr
bGlzdF9sb2NrKTsgfSB3aGlsZSAoMCk7CgoKICAgICAgICBkbyB7ICh0aGlzX3Rhc2spLT5uZXh0
X3Rhc2stPnByZXZfdGFzayA9ICh0aGlzX3Rhc2spLT5wcmV2X3Rhc2s7ICh0aGlzX3Rhc2spLT5w
cmV2X3Rhc2stPm5leHRfdGFzayA9ICh0aGlzX3Rhc2spLT5uZXh0X3Rhc2s7IGlmICgodGhpc190
YXNrKS0+cF9vc3B0cikgKHRoaXNfdGFzayktPnBfb3NwdHItPnBfeXNwdHIgPSAodGhpc190YXNr
KS0+cF95c3B0cjsgaWYgKCh0aGlzX3Rhc2spLT5wX3lzcHRyKSAodGhpc190YXNrKS0+cF95c3B0
ci0+cF9vc3B0ciA9ICh0aGlzX3Rhc2spLT5wX29zcHRyOyBlbHNlICh0aGlzX3Rhc2spLT5wX3Bw
dHItPnBfY3B0ciA9ICh0aGlzX3Rhc2spLT5wX29zcHRyOyB9IHdoaWxlICgwKTsKICAgICAgICB0
aGlzX3Rhc2stPnBfcHB0ciA9IGNoaWxkX3JlYXBlcjsKICAgICAgICB0aGlzX3Rhc2stPnBfb3Bw
dHIgPSBjaGlsZF9yZWFwZXI7CiAgICAgICAgZG8geyAodGhpc190YXNrKS0+bmV4dF90YXNrID0g
Jihpbml0X3Rhc2tfdW5pb24udGFzayk7ICh0aGlzX3Rhc2spLT5wcmV2X3Rhc2sgPSAoaW5pdF90
YXNrX3VuaW9uLnRhc2spLnByZXZfdGFzazsgKGluaXRfdGFza191bmlvbi50YXNrKS5wcmV2X3Rh
c2stPm5leHRfdGFzayA9ICh0aGlzX3Rhc2spOyAoaW5pdF90YXNrX3VuaW9uLnRhc2spLnByZXZf
dGFzayA9ICh0aGlzX3Rhc2spOyAodGhpc190YXNrKS0+cF95c3B0ciA9ICgodm9pZCAqKTApOyBp
ZiAoKCh0aGlzX3Rhc2spLT5wX29zcHRyID0gKHRoaXNfdGFzayktPnBfcHB0ci0+cF9jcHRyKSAh
PSAoKHZvaWQgKikwKSkgKHRoaXNfdGFzayktPnBfb3NwdHItPnBfeXNwdHIgPSB0aGlzX3Rhc2s7
ICh0aGlzX3Rhc2spLT5wX3BwdHItPnBfY3B0ciA9IHRoaXNfdGFzazsgfSB3aGlsZSAoMCk7CgoK
ICAgICAgICB0aGlzX3Rhc2stPmV4aXRfc2lnbmFsID0gMTc7CgoKCiAgICAgICAgc3Bpbl9sb2Nr
KCZydW5xdWV1ZV9sb2NrKTsKCiAgICAgICAgdGhpc190YXNrLT5wdHJhY2UgPSAwOwogICAgICAg
IHRoaXNfdGFzay0+bmljZSA9ICgwKTsKICAgICAgICB0aGlzX3Rhc2stPnBvbGljeSA9IDA7CgoK
CiAgICAgICAgdGhpc190YXNrLT5jYXBfZWZmZWN0aXZlID0gKH4wICYgfigxIDw8ICg4KSkpOwog
ICAgICAgIHRoaXNfdGFzay0+Y2FwX2luaGVyaXRhYmxlID0gKDApOwogICAgICAgIHRoaXNfdGFz
ay0+Y2FwX3Blcm1pdHRlZCA9ICh+MCk7CiAgICAgICAgdGhpc190YXNrLT5rZWVwX2NhcGFiaWxp
dGllcyA9IDA7CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemVvZigqKHRoaXNfdGFz
ay0+cmxpbSkpKSA/IF9fY29uc3RhbnRfbWVtY3B5KCh0aGlzX3Rhc2stPnJsaW0pLCgoaW5pdF90
YXNrX3VuaW9uLnRhc2spLnJsaW0pLChzaXplb2YoKih0aGlzX3Rhc2stPnJsaW0pKSkpIDogX19t
ZW1jcHkoKHRoaXNfdGFzay0+cmxpbSksKChpbml0X3Rhc2tfdW5pb24udGFzaykucmxpbSksKHNp
emVvZigqKHRoaXNfdGFzay0+cmxpbSkpKSkpOwogICAgICAgIHRoaXNfdGFzay0+dXNlciA9ICgm
cm9vdF91c2VyKTsKCiAgICAgICAgc3Bpbl91bmxvY2soJnJ1bnF1ZXVlX2xvY2spOwogICAgICAg
IGRvIHsgYXNtIHZvbGF0aWxlKCJsb2NrIDsgYWRkbCAkIiAiMHgwMTAwMDAwMCIgIiwlMCI6Ij1t
IiAoKCZ0YXNrbGlzdF9sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsgX19hc21fXyBfX3ZvbGF0
aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KCgoKCgoKdm9pZCBkYWVt
b25pemUodm9pZCkKewogICAgICAgIHN0cnVjdCBmc19zdHJ1Y3QgKmZzOwoKCgoKCgoKICAgICAg
ICBleGl0X21tKGdldF9jdXJyZW50KCkpOwoKICAgICAgICBnZXRfY3VycmVudCgpLT5zZXNzaW9u
ID0gMTsKICAgICAgICBnZXRfY3VycmVudCgpLT5wZ3JwID0gMTsKICAgICAgICBnZXRfY3VycmVu
dCgpLT50dHkgPSAoKHZvaWQgKikwKTsKCgoKICAgICAgICBleGl0X2ZzKGdldF9jdXJyZW50KCkp
OwogICAgICAgIGZzID0gKGluaXRfdGFza191bmlvbi50YXNrKS5mczsKICAgICAgICBnZXRfY3Vy
cmVudCgpLT5mcyA9IGZzOwogICAgICAgIGF0b21pY19pbmMoJmZzLT5jb3VudCk7CiAgICAgICAg
ZXhpdF9maWxlcyhnZXRfY3VycmVudCgpKTsKICAgICAgICBnZXRfY3VycmVudCgpLT5maWxlcyA9
IChpbml0X3Rhc2tfdW5pb24udGFzaykuZmlsZXM7CiAgICAgICAgYXRvbWljX2luYygmZ2V0X2N1
cnJlbnQoKS0+ZmlsZXMtPmNvdW50KTsKfQoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgd2FpdF9pbml0
X2lkbGU7Cgp2b2lkIF9fYXR0cmlidXRlX18gKChfX3NlY3Rpb25fXyAoIi50ZXh0LmluaXQiKSkp
IGluaXRfaWRsZSh2b2lkKQp7CiAgICAgICAgc3RydWN0IHNjaGVkdWxlX2RhdGEgKiBzY2hlZF9k
YXRhOwogICAgICAgIHNjaGVkX2RhdGEgPSAmYWxpZ25lZF9kYXRhWyhnZXRfY3VycmVudCgpLT5w
cm9jZXNzb3IpXS5zY2hlZHVsZV9kYXRhOwoKICAgICAgICBpZiAoZ2V0X2N1cnJlbnQoKSAhPSAm
KGluaXRfdGFza191bmlvbi50YXNrKSAmJiB0YXNrX29uX3J1bnF1ZXVlKGdldF9jdXJyZW50KCkp
KSB7CiAgICAgICAgICAgICAgICBwcmludGsoIlVHSCEgKCVkOiVkKSB3YXMgb24gdGhlIHJ1bnF1
ZXVlLCByZW1vdmluZy5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIChnZXRfY3VycmVudCgp
LT5wcm9jZXNzb3IpLCBnZXRfY3VycmVudCgpLT5waWQpOwogICAgICAgICAgICAgICAgZGVsX2Zy
b21fcnVucXVldWUoZ2V0X2N1cnJlbnQoKSk7CiAgICAgICAgfQogICAgICAgIHNjaGVkX2RhdGEt
PmN1cnIgPSBnZXRfY3VycmVudCgpOwogICAgICAgIHNjaGVkX2RhdGEtPmxhc3Rfc2NoZWR1bGUg
PSBnZXRfY3ljbGVzKCk7CiAgICAgICAgY2xlYXJfYml0KGdldF9jdXJyZW50KCktPnByb2Nlc3Nv
ciwgJndhaXRfaW5pdF9pZGxlKTsKfQoKZXh0ZXJuIHZvaWQgaW5pdF90aW1lcnZlY3MgKHZvaWQp
OwoKdm9pZCBfX2F0dHJpYnV0ZV9fICgoX19zZWN0aW9uX18gKCIudGV4dC5pbml0IikpKSBzY2hl
ZF9pbml0KHZvaWQpCnsKCgoKCiAgICAgICAgaW50IGNwdSA9IChnZXRfY3VycmVudCgpLT5wcm9j
ZXNzb3IpOwogICAgICAgIGludCBucjsKCiAgICAgICAgKGluaXRfdGFza191bmlvbi50YXNrKS5w
cm9jZXNzb3IgPSBjcHU7CgogICAgICAgIGZvcihuciA9IDA7IG5yIDwgKDQwOTYgPj4gMik7IG5y
KyspCiAgICAgICAgICAgICAgICBwaWRoYXNoW25yXSA9ICgodm9pZCAqKTApOwoKICAgICAgICBp
bml0X3RpbWVydmVjcygpOwoKICAgICAgICBpbml0X2JoKFRJTUVSX0JILCB0aW1lcl9iaCk7CiAg
ICAgICAgaW5pdF9iaChUUVVFVUVfQkgsIHRxdWV1ZV9iaCk7CiAgICAgICAgaW5pdF9iaChJTU1F
RElBVEVfQkgsIGltbWVkaWF0ZV9iaCk7CgoKCgogICAgICAgIGF0b21pY19pbmMoJmluaXRfbW0u
bW1fY291bnQpOwogICAgICAgIGVudGVyX2xhenlfdGxiKCZpbml0X21tLCBnZXRfY3VycmVudCgp
LCBjcHUpOwp9Cg==
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.