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


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

target/10377: gcc-3.2.2 creates bad assembler for cris


>Number:         10377
>Category:       target
>Synopsis:       gcc-3.2.2 creates bad assembler for cris
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Fri Apr 11 14:46:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Uwe_Reimann at gmx dot net
>Release:        gcc version 3.2.2
>Organization:
>Environment:
cris-axis-linux-gnu
(but reproduceable on i686 with cris-axis-linux-gnu-cross-compiler)
>Description:
infocmp.s: Assembler messages:
infocmp.s:2058: Error: Illegal operands
>How-To-Repeat:
gcc -O2 -fPIC -c infocmp.i
>Fix:

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

IyAxICIuLi9wcm9ncy9pbmZvY21wLmMiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBs
aW5lPiIKIyAxICIuLi9wcm9ncy9pbmZvY21wLmMiCiMgMzkgIi4uL3Byb2dzL2luZm9jbXAuYyIK
IyAxICIuLi9wcm9ncy9wcm9ncy5wcml2LmgiIDEKIyA0MCAiLi4vcHJvZ3MvcHJvZ3MucHJpdi5o
IgojIDEgIi4uL2luY2x1ZGUvbmN1cnNlc19jZmcuaCIgMQojIDE0NiAiLi4vaW5jbHVkZS9uY3Vy
c2VzX2NmZy5oIgojIDEgIi4uL2luY2x1ZGUvbmN1cnNlc19kZWYuaCIgMQojIDE0NyAiLi4vaW5j
bHVkZS9uY3Vyc2VzX2NmZy5oIiAyCiMgNDEgIi4uL3Byb2dzL3Byb2dzLnByaXYuaCIgMgoKCgoK
CgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMg
Mjg0ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzExICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEyICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz
CgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxpbnV4LWdudS8zLjIuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMTMgIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxp
bnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNp
emVfdDsKIyAzMjUgIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxpbnV4LWdudS8zLjIuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKIyAzNCAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRm
bGFncy5oIiAxIDMKIyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy93YWl0
c3RhdHVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDM3ICIvdXNyL2lu
Y2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMg
MzggIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3dh
aXRzdGF0dXMuaCIgMiAzCgp1bmlvbiB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3Ry
dWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAgICAg
dW5zaWduZWQgaW50IF9fd19jb3JlZHVtcDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfcmV0
Y29kZTo4OwogICAgICAgIHVuc2lnbmVkIGludDoxNjsKCgoKCgoKCiAgICAgIH0gX193YWl0X3Rl
cm1pbmF0ZWQ7CiAgICBzdHJ1Y3QKICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0
b3B2YWw6ODsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3BzaWc6ODsKICAgICAgICB1bnNp
Z25lZCBpbnQ6MTY7CgoKCgoKCiAgICAgIH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKIyA0NCAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyA2OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5
cGVkZWYgdW5pb24KICB7CiAgICB1bmlvbiB3YWl0ICpfX3VwdHI7CiAgICBpbnQgKl9faXB0cjsK
ICB9IF9fV0FJVF9TVEFUVVMgX19hdHRyaWJ1dGVfXyAoKF9fdHJhbnNwYXJlbnRfdW5pb25fXykp
OwojIDk0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBp
bnQgcXVvdDsKICAgIGludCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAg
ICBsb25nIGludCBxdW90OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCl9fZXh0
ZW5zaW9uX18gdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICBs
b25nIGxvbmcgaW50IHJlbTsKICB9IGxsZGl2X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCmV4
dGVybiBkb3VibGUgYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFy
ICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4
dGVybiBsb25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0cikgOwoKCgpleHRlcm4gZmxvYXQgc3RydG9mIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0cikgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGQgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0cikgOwoKCgpleHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50
IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz
ZSkKICAgICA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9xIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CgpfX2V4dGVuc2lv
bl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsKCgoKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsKIyAyMTEgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMwojIDI4ICIvdXNyL2lu
Y2x1ZGUveGxvY2FsZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CgogIHN0
cnVjdCBsb2NhbGVfZGF0YSAqX19sb2NhbGVzWzEzXTsKCgogIGNvbnN0IHVuc2lnbmVkIHNob3J0
IGludCAqX19jdHlwZV9iOwogIGNvbnN0IGludCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGlu
dCAqX19jdHlwZV90b3VwcGVyOwp9ICpfX2xvY2FsZV90OwojIDIxMiAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAyIDMKCgoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9sX2wgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fbG9jYWxlX3QgX19sb2MpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxf
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSA7
CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9sIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4
dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIDsK
CmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
X19sb2NhbGVfdCBfX2xvYykKICAgICA7CgpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9jKSA7CgpleHRlcm4gbG9uZyBk
b3VibGUgX19zdHJ0b2xkX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwoKCgoKCgpl
eHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQog
ICAgIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBfX2dyb3VwKSA7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4
dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4
dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFz
ZSwgaW50IF9fZ3JvdXApCiAgICAgOwojIDI5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4
dGVybiBfX2lubGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvZF9pbnRl
cm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0
cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbF9pbnRlcm5h
bCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgdW5zaWdu
ZWQgbG9uZyBpbnQKc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4g
X19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0
ZXJuIF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsKICByZXR1cm4gX19zdHJ0b2ZfaW50ZXJu
YWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZQpz
dHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQK
c3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRl
cm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVy
biBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBp
bnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBs
b25nIGludApzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0
cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNp
b25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19j
b25zdCBjaGFyICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChf
X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQph
dG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNo
YXIgKiopICgodm9pZCAqKTApKTsKfQpleHRlcm4gX19pbmxpbmUgaW50CmF0b2kgKF9fY29uc3Qg
Y2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIChpbnQpIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikg
KCh2b2lkICopMCksIDEwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25z
dCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZv
aWQgKikwKSwgMTApOwp9CgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25n
IGludAphdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sbCAoX19u
cHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQojIDM4NSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpsNjRhIChsb25nIGludCBfX24pIDsKCgpleHRlcm4gbG9u
ZyBpbnQgYTY0bCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAy
OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvY3Jp
cy1heGlzLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFy
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0
eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBj
aGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50
MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlw
ZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpf
X3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9f
dWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7
CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlw
ZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVm
IGludCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19y
bGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19p
ZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsK
Cgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVm
IGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7
Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsK
Cgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQg
X19ibGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19x
dWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBl
ZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmls
Y250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9x
dWFkX3QgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYg
bG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2Nh
bGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBf
X3NvY2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEg
MwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAz
CnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsK
IyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRo
cmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9
OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2Ny
OwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MKewogIGludCBfX2RldGFjaHN0
YXRlOwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRw
YXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3Vh
cmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6
ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAg
c3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193
YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVt
bXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRf
a2V5X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9f
bV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0
cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5
cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsK
CgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVh
ZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fcndfbG9jazsKICBpbnQg
X19yd19yZWFkZXJzOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVyOwogIF9wdGhyZWFkX2Rl
c2NyIF9fcndfcmVhZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGlu
ZzsKICBpbnQgX19yd19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2tf
dDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5kOwogIGludCBfX3BzaGFyZWQ7
Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBwdGhyZWFk
X3NwaW5sb2NrX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9j
ayBfX2JhX2xvY2s7CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50IF9fYmFfcHJlc2VudDsKICBf
cHRocmVhZF9kZXNjciBfX2JhX3dhaXRpbmc7Cn0gcHRocmVhZF9iYXJyaWVyX3Q7CgoKdHlwZWRl
ZiBzdHJ1Y3QgewogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9iYXJyaWVyYXR0cl90OwoKCgoK
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoK
dHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVk
ZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFk
X3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3Qg
ZnNpZF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3QgaW5v
X3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82NF90IGlubzY0X3Q7CgoKCgp0eXBlZGVmIF9fZGV2X3Qg
ZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1v
ZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3Qg
dWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKCgp0eXBlZGVmIF9fb2ZmNjRf
dCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3Qg
aWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJf
dCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qg
a2V5X3Q7CiMgMTI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAxIDMKIyA1OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fY2xv
Y2tfdCBjbG9ja190OwojIDcwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX190aW1l
X3QgdGltZV90OwojIDgyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX19jbG9ja2lk
X3QgY2xvY2tpZF90OwojIDk0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX190aW1l
cl90IHRpbWVyX3Q7CiMgMTI3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0eXBl
ZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVmIF9fc3VzZWNvbmRzX3Qgc3Vz
ZWNvbmRzX3Q7CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDIgMwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2ln
bmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiMgMTg0ICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYg
dW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykp
KTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fd29yZF9fKSkpOwojIDIwOSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMv
c2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiMgMzIgIi91
c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2ln
c2V0LmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwp0eXBlZGVmIGlu
dCBfX3NpZ19hdG9taWNfdDsKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQgbG9u
ZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwog
IH0gX19zaWdzZXRfdDsKIyAzNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCnR5
cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MSAzCiMgMTA2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0aW1lc3BlYwogIHsKICAg
IGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7CiAgfTsKIyA0NCAiL3Vzci9p
bmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIg
MSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXZhbAogIHsK
ICAgIF9fdGltZV90IHR2X3NlYzsKICAgIF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsKICB9OwojIDQ2
ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoKdHlwZWRlZiBsb25nIGludCBfX2Zk
X21hc2s7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKCgoKICAgIF9fZmRfbWFzayBmZHNfYml0
c1sxMDI0IC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsKCgoKCgogIH0gZmRfc2V0OwoKCgoK
Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwojIDg5ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAzCgoKCgoKCgpleHRlcm4gaW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jl
c3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBf
X3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0
ZmRzLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1l
b3V0KSA7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVz
dHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBf
X3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2Vw
dGZkcywKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJp
Y3QgX190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVz
dHJpY3QgX19zaWdtYXNrKSA7CgoKCiMgMjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjEzICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7
CgoKCgoKCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250
X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTEg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250NjRfdCBibGtjbnQ2
NF90Owp0eXBlZGVmIF9fZnNibGtjbnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzZmls
Y250NjRfdCBmc2ZpbGNudDY0X3Q7CgoKCiMgMzkyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIg
MwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgc3Jh
bmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUg
KHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSA7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hh
ciAqX19zdGF0ZWJ1ZikgOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJf
dCAqZnB0cjsKICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCBy
YW5kX3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90
ICplbmRfcHRyOwogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEg
Kl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKl9fcmVzdHJp
Y3QgX19yZXN1bHQpIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1bnNpZ25lZCBpbnQgX19zZWVk
LCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSA7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1
bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsKCmV4dGVybiBpbnQgc2V0
c3RhdGVfciAoY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCmV4dGVybiBp
bnQgcmFuZCAodm9pZCkgOwoKZXh0ZXJuIHZvaWQgc3JhbmQgKHVuc2lnbmVkIGludCBfX3NlZWQp
IDsKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGludCAqX19zZWVkKSA7CgoKCgoKCgpl
eHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNp
Z25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2
b2lkKSA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3Vi
aVszXSkgOwoKCmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGlu
dCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiB2b2lk
IHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkgOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50
ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10pIDsKZXh0ZXJuIHZvaWQg
bGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pIDsKCgoKCgpzdHJ1Y3QgZHJh
bmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVk
IHNob3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVu
c2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsK
ICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3Ry
aWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9f
cmVzdWx0KSA7CmV4dGVybiBpbnQgZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3Vi
aVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJp
Y3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19y
ZXN1bHQpIDsKCgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3Ry
aWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQg
X194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
cmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQg
Kl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhf
ZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50
IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgOwoKZXh0ZXJu
IGludCBzZWVkNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKCmV4dGVybiBpbnQg
bGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CiMgNTI4ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25t
ZW1iLCBzaXplX3QgX19zaXplKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoK
CgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqX19wdHIp
IDsKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSA7CgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2FsbG9jYS5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAzCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCgoKCgoKZXh0ZXJuIHZvaWQg
KmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgOwoKCgoKCgojIDU0OCAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAyIDMKCgoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmli
dXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2b2lk
ICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCBhYm9ydCAodm9pZCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgpleHRlcm4gaW50IGF0ZXhpdCAodm9pZCAo
Kl9fZnVuYykgKHZvaWQpKSA7CgoKCgpleHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMp
IChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCiAgICAgOwoKCgoKCmV4
dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAo
KF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25zdCBjaGFyICpf
X25hbWUpIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpf
X25hbWUpIDsKCgoKCgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIDsKCgoKCgpl
eHRlcm4gaW50IHNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192
YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAgICA7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUpIDsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgOwojIDYy
NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9f
dGVtcGxhdGUpIDsKCgoKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkg
OwojIDY0MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBpbnQgbWtzdGVtcDY0IChj
aGFyICpfX3RlbXBsYXRlKSA7CiMgNjUxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJu
IGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVybiBpbnQgc3lzdGVt
IChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2Fs
aXplX2ZpbGVfbmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKIyA2NzMgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jl
c29sdmVkKSA7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9p
ZCAqLCBfX2NvbnN0IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25f
Zm5fdDsKCgoKCgpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lkICpfX2tleSwgX19j
b25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19ubWVtYiwg
c2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiB2b2lkIHFz
b3J0ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLAogICAgICAg
ICAgICAgICAgICAgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiBpbnQgYWJzIChp
bnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsb25nIGludCBsYWJz
IChsb25nIGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9u
X18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQogICAgIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9f
bnVtZXIsIGludCBfX2Rlbm9tKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0
ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKQogICAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxsZGl2
X3QgbGxkaXYgKGxvbmcgbG9uZyBpbnQgX19udW1lciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9uZyBsb25nIGludCBfX2Rlbm9tKQogICAgIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKIyA3MjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAq
ZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVj
cHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRl
cm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7
CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hh
ciAqX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwg
aW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0
LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZ2N2
dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoK
ZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xl
bikgOwpleHRlcm4gaW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbGVuKSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBf
X25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0
IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hh
ciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCmV4dGVybiBpbnQgbWJs
ZW4gKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBtYnRvd2Mg
KHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNo
YXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSA7CgoKCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdj
aGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgpleHRlcm4gc2l6ZV90IHdjc3Rv
bWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICA7CgoKCgoKCgpl
eHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgOwojIDgwOSAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBpbnQgZ2V0c3Vib3B0IChjaGFyICoqX19yZXN0
cmljdCBfX29wdGlvbnAsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX2NvbnN0ICpfX3Jl
c3RyaWN0IF9fdG9rZW5zLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X192YWx1ZXApIDsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkp
IDsKCgoKCgoKCmV4dGVybiBpbnQgcG9zaXhfb3BlbnB0IChpbnQgX19vZmxhZykgOwoKCgoKCgoK
ZXh0ZXJuIGludCBncmFudHB0IChpbnQgX19mZCkgOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChp
bnQgX19mZCkgOwoKCgoKZXh0ZXJuIGNoYXIgKnB0c25hbWUgKGludCBfX2ZkKSA7CgoKCgoKCmV4
dGVybiBpbnQgcHRzbmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxl
bikgOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2Fk
YXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVtKSA7CgoKCgoKCiMgNDkgIi4uL3By
b2dzL3Byb2dzLnByaXYuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMKIyAyOSAi
L3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKCiMgNDcgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmVu
dW0KewogIF9JU3VwcGVyID0gKCgwKSA8IDggPyAoKDEgPDwgKDApKSA8PCA4KSA6ICgoMSA8PCAo
MCkpID4+IDgpKSwKICBfSVNsb3dlciA9ICgoMSkgPCA4ID8gKCgxIDw8ICgxKSkgPDwgOCkgOiAo
KDEgPDwgKDEpKSA+PiA4KSksCiAgX0lTYWxwaGEgPSAoKDIpIDwgOCA/ICgoMSA8PCAoMikpIDw8
IDgpIDogKCgxIDw8ICgyKSkgPj4gOCkpLAogIF9JU2RpZ2l0ID0gKCgzKSA8IDggPyAoKDEgPDwg
KDMpKSA8PCA4KSA6ICgoMSA8PCAoMykpID4+IDgpKSwKICBfSVN4ZGlnaXQgPSAoKDQpIDwgOCA/
ICgoMSA8PCAoNCkpIDw8IDgpIDogKCgxIDw8ICg0KSkgPj4gOCkpLAogIF9JU3NwYWNlID0gKCg1
KSA8IDggPyAoKDEgPDwgKDUpKSA8PCA4KSA6ICgoMSA8PCAoNSkpID4+IDgpKSwKICBfSVNwcmlu
dCA9ICgoNikgPCA4ID8gKCgxIDw8ICg2KSkgPDwgOCkgOiAoKDEgPDwgKDYpKSA+PiA4KSksCiAg
X0lTZ3JhcGggPSAoKDcpIDwgOCA/ICgoMSA8PCAoNykpIDw8IDgpIDogKCgxIDw8ICg3KSkgPj4g
OCkpLAogIF9JU2JsYW5rID0gKCg4KSA8IDggPyAoKDEgPDwgKDgpKSA8PCA4KSA6ICgoMSA8PCAo
OCkpID4+IDgpKSwKICBfSVNjbnRybCA9ICgoOSkgPCA4ID8gKCgxIDw8ICg5KSkgPDwgOCkgOiAo
KDEgPDwgKDkpKSA+PiA4KSksCiAgX0lTcHVuY3QgPSAoKDEwKSA8IDggPyAoKDEgPDwgKDEwKSkg
PDwgOCkgOiAoKDEgPDwgKDEwKSkgPj4gOCkpLAogIF9JU2FsbnVtID0gKCgxMSkgPCA4ID8gKCgx
IDw8ICgxMSkpIDw8IDgpIDogKCgxIDw8ICgxMSkpID4+IDgpKQp9OwojIDc1ICIvdXNyL2luY2x1
ZGUvY3R5cGUuaCIgMwpleHRlcm4gX19jb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVf
YjsKZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvbG93ZXI7CmV4dGVybiBfX2Nv
bnN0IF9faW50MzJfdCAqX19jdHlwZV90b3VwcGVyOwojIDkxICIvdXNyL2luY2x1ZGUvY3R5cGUu
aCIgMwpleHRlcm4gaW50IGlzYWxudW0gKGludCkgOwpleHRlcm4gaW50IGlzYWxwaGEgKGludCkg
OwpleHRlcm4gaW50IGlzY250cmwgKGludCkgOwpleHRlcm4gaW50IGlzZGlnaXQgKGludCkgOwpl
eHRlcm4gaW50IGlzbG93ZXIgKGludCkgOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgOwpleHRl
cm4gaW50IGlzcHJpbnQgKGludCkgOwpleHRlcm4gaW50IGlzcHVuY3QgKGludCkgOwpleHRlcm4g
aW50IGlzc3BhY2UgKGludCkgOwpleHRlcm4gaW50IGlzdXBwZXIgKGludCkgOwpleHRlcm4gaW50
IGlzeGRpZ2l0IChpbnQpIDsKCgpleHRlcm4gaW50IGlzYmxhbmsgKGludCkgOwoKCgoKZXh0ZXJu
IGludCB0b2xvd2VyIChpbnQgX19jKSA7CgoKZXh0ZXJuIGludCB0b3VwcGVyIChpbnQgX19jKSA7
CgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgOwoKCgpleHRlcm4gaW50IHRvYXNj
aWkgKGludCBfX2MpIDsKCgoKZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSA7CmV4dGVybiBpbnQg
X3RvbG93ZXIgKGludCkgOwojIDE2OCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIF9f
aW5saW5lIGludAp0b2xvd2VyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9fYyA+PSAtMTI4ICYmIF9f
YyA8IDI1NiA/IF9fY3R5cGVfdG9sb3dlcltfX2NdIDogX19jOwp9CgpleHRlcm4gX19pbmxpbmUg
aW50CnRvdXBwZXIgKGludCBfX2MpCnsKICByZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2
ID8gX19jdHlwZV90b3VwcGVyW19fY10gOiBfX2M7Cn0KIyAyMjQgIi91c3IvaW5jbHVkZS9jdHlw
ZS5oIiAzCmV4dGVybiBpbnQgX19pc2FsbnVtX2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4g
aW50IF9faXNhbHBoYV9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzY250cmxf
bCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc2RpZ2l0X2wgKGludCwgX19sb2Nh
bGVfdCkgOwpleHRlcm4gaW50IF9faXNsb3dlcl9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJu
IGludCBfX2lzZ3JhcGhfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc3ByaW50
X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNwdW5jdF9sIChpbnQsIF9fbG9j
YWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzc3BhY2VfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVy
biBpbnQgX19pc3VwcGVyX2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXN4ZGln
aXRfbCAoaW50LCBfX2xvY2FsZV90KSA7CgpleHRlcm4gaW50IF9faXNibGFua19sIChpbnQsIF9f
bG9jYWxlX3QpIDsKCgoKZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVf
dCBfX2wpIDsKCgpleHRlcm4gaW50IF9fdG91cHBlcl9sIChpbnQgX19jLCBfX2xvY2FsZV90IF9f
bCkgOwojIDI3NyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKCiMgNTAgIi4uL3Byb2dzL3Byb2dz
LnByaXYuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjggIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMwoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDIgMwoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVz
dCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBz
aXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgX19jb25z
dCB2b2lkICpfX3NyYywgc2l6ZV90IF9fbikKICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNj
cHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19z
cmMsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIDsKCgoK
CmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgOwoK
CmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19z
Miwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
dm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gdm9pZCAqcmF3bWVtY2hy
IChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKZXh0ZXJuIHZvaWQgKm1lbXJjaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXpl
X3QgX19uKQogICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFy
ICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zcmMpCiAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3Qg
X19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
c3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmlj
dCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgpleHRlcm4g
Y2hhciAqc3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIDsKCgpleHRl
cm4gaW50IHN0cmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90
IF9fbikgOwojIDExMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBpbnQgX19zdHJj
b2xsX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBfX2xvY2FsZV90
IF9fbCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3QgX19z
dHJ4ZnJtX2wgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYywgc2l6ZV90IF9fbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2wpIDsKCgoKCmV4dGVybiBj
aGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2Nf
XykpOwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywg
c2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDE1NSAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpz
dHJyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKCgpleHRlcm4gY2hhciAqc3RyY2hybnVsIChfX2NvbnN0IGNoYXIgKl9fcywgaW50
IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cmNz
cG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNo
YXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25z
dCBjaGFyICpfX2FjY2VwdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVy
biBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpf
X25lZWRsZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGNoYXIg
KnN0cmNhc2VzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25l
ZWRsZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGNoYXIgKnN0
cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Rl
bGltKQogICAgIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVf
cHRyKSA7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSA7CgoKCgoKCmV4dGVybiB2b2lkICptZW1tZW0gKF9f
Y29uc3Qgdm9pZCAqX19oYXlzdGFjaywgc2l6ZV90IF9faGF5c3RhY2tsZW4sCiAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19uZWVkbGUsIHNpemVfdCBfX25lZWRsZWxlbikKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIHZvaWQgKl9fbWVtcGNweSAo
dm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
dm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwpleHRlcm4gdm9pZCAqbWVtcGNw
eSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgoKCmV4dGVybiBzaXplX3Qg
c3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBf
X21heGxlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFy
ICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSA7CgoKCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChp
bnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsKCgoKCmV4dGVybiB2
b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCgpleHRlcm4gdm9pZCBiY29w
eSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKSA7CgoKZXh0
ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgYmNt
cCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0
ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gaW50IGZmcyAoaW50IF9faSkgX19hdHRyaWJ1dGVf
XyAoKGNvbnN0KSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9fbCkgX19hdHRyaWJ1
dGVfXyAoKGNvbnN0KSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9u
ZyBpbnQgX19sbCkKICAgICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKCmV4dGVybiBpbnQg
c3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGludCBfX3N0cmNhc2VjbXBfbCAo
X19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIGludCBfX3N0cm5jYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgX19sb2Nh
bGVfdCBfX2xvYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4g
Y2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCiAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKSA7CgoKCgpleHRlcm4gaW50
IHN0cnZlcnNjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAg
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpzdHJzaWduYWwgKGlu
dCBfX3NpZykgOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CmV4dGVybiBjaGFyICpz
dHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zcmMpCiAgICAgOwoKCgpleHRlcm4gY2hhciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4dGVybiBjaGFyICpzdHBuY3B5IChjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICpzdHJmcnkgKGNoYXIgKl9fc3Ry
aW5nKSA7CgoKZXh0ZXJuIHZvaWQgKm1lbWZyb2IgKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOwoK
CgoKCgpleHRlcm4gY2hhciAqYmFzZW5hbWUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoj
IDM1NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nLmgiIDEgMwojIDM1NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMSAzCiMgMzYwICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDIgMwoKCgoKIyA1MSAiLi4vcHJvZ3MvcHJvZ3MucHJpdi5oIiAyCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgojIDE3NSAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXhfb3B0
LmgiIDEgMwojIDE3NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL2Vu
dmlyb25tZW50cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzCiMg
MjQgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAyIDMKIyAxODAgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMiAzCiMgMTk5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCiMgMjAwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDI0MCAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAzCnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKCgoKCgoKdHlwZWRl
ZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7CiMgMjYwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMK
ZXh0ZXJuIGludCBhY2Nlc3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSA7CgoK
CgpleHRlcm4gaW50IGV1aWRhY2Nlc3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBl
KSA7CiMgMjkwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmX3QgbHNlZWsg
KGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIDsKIyAzMDIgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmY2NF90IGxzZWVrNjQgKGludCBfX2ZkLCBf
X29mZjY0X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgOwoKCgpleHRlcm4gaW50IGNsb3NlIChp
bnQgX19mZCkgOwoKCgpleHRlcm4gc3NpemVfdCByZWFkIChpbnQgX19mZCwgdm9pZCAqX19idWYs
IHNpemVfdCBfX25ieXRlcykgOwoKCmV4dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwgX19j
b25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbikgOwoKCgpleHRlcm4gc3NpemVfdCBwcmVhZCAo
aW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsIF9fb2ZmX3QgX19vZmZzZXQp
CiAgICAgOwpleHRlcm4gc3NpemVfdCBwd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9f
YnVmLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmX3QgX19vZmZzZXQp
IDsKIyAzNDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gc3NpemVfdCBwcmVhZDY0
IChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgX19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKZXh0ZXJuIHNzaXplX3QgcHdyaXRlNjQg
KGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgX19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKCgoKCgpleHRlcm4gaW50IHBpcGUg
KGludCBfX3BpcGVkZXNbMl0pIDsKIyAzNjIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRl
cm4gdW5zaWduZWQgaW50IGFsYXJtICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSA7CiMgMzcxICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWdu
ZWQgaW50IF9fc2Vjb25kcykgOwoKCgoKCgpleHRlcm4gX191c2Vjb25kc190IHVhbGFybSAoX191
c2Vjb25kc190IF9fdmFsdWUsIF9fdXNlY29uZHNfdCBfX2ludGVydmFsKQogICAgIDsKCgoKZXh0
ZXJuIGludCB1c2xlZXAgKF9fdXNlY29uZHNfdCBfX3VzZWNvbmRzKSA7CgoKCgoKZXh0ZXJuIGlu
dCBwYXVzZSAodm9pZCkgOwoKCgpleHRlcm4gaW50IGNob3duIChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgOwoKCgpleHRlcm4gaW50
IGZjaG93biAoaW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSA7CgoK
CgpleHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25l
ciwgX19naWRfdCBfX2dyb3VwKQogICAgIDsKCgoKCmV4dGVybiBpbnQgY2hkaXIgKF9fY29uc3Qg
Y2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBpbnQgZmNoZGlyIChpbnQgX19mZCkgOwojIDQyMyAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBjaGFyICpnZXRjd2QgKGNoYXIgKl9fYnVm
LCBzaXplX3QgX19zaXplKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmdldF9jdXJyZW50X2Rpcl9uYW1l
ICh2b2lkKSA7CgoKCgoKCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIDsKCgoKCmV4
dGVybiBpbnQgZHVwIChpbnQgX19mZCkgOwoKCmV4dGVybiBpbnQgZHVwMiAoaW50IF9fZmQsIGlu
dCBfX2ZkMikgOwoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9uOwoKZXh0ZXJuIGNoYXIgKiplbnZp
cm9uOwoKCgoKCmV4dGVybiBpbnQgZXhlY3ZlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAq
X19jb25zdCBfX2FyZ3ZbXSwKICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgX19lbnZw
W10pIDsKCgoKCmV4dGVybiBpbnQgZmV4ZWN2ZSAoaW50IF9fZmQsIGNoYXIgKl9fY29uc3QgX19h
cmd2W10sIGNoYXIgKl9fY29uc3QgX19lbnZwW10pCiAgICAgOwoKCgoKZXh0ZXJuIGludCBleGVj
diAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10pIDsKCgoKZXh0
ZXJuIGludCBleGVjbGUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJn
LCAuLi4pIDsKCgoKZXh0ZXJuIGludCBleGVjbCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29u
c3QgY2hhciAqX19hcmcsIC4uLikgOwoKCgpleHRlcm4gaW50IGV4ZWN2cCAoX19jb25zdCBjaGFy
ICpfX2ZpbGUsIGNoYXIgKl9fY29uc3QgX19hcmd2W10pIDsKCgoKCmV4dGVybiBpbnQgZXhlY2xw
IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCgpl
eHRlcm4gaW50IG5pY2UgKGludCBfX2luYykgOwoKCgoKZXh0ZXJuIHZvaWQgX2V4aXQgKGludCBf
X3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZu
YW1lLmgiIDMKZW51bQogIHsKICAgIF9QQ19MSU5LX01BWCwKCiAgICBfUENfTUFYX0NBTk9OLAoK
ICAgIF9QQ19NQVhfSU5QVVQsCgogICAgX1BDX05BTUVfTUFYLAoKICAgIF9QQ19QQVRIX01BWCwK
CiAgICBfUENfUElQRV9CVUYsCgogICAgX1BDX0NIT1dOX1JFU1RSSUNURUQsCgogICAgX1BDX05P
X1RSVU5DLAoKICAgIF9QQ19WRElTQUJMRSwKCiAgICBfUENfU1lOQ19JTywKCiAgICBfUENfQVNZ
TkNfSU8sCgogICAgX1BDX1BSSU9fSU8sCgogICAgX1BDX1NPQ0tfTUFYQlVGLAoKICAgIF9QQ19G
SUxFU0laRUJJVFMsCgogICAgX1BDX1JFQ19JTkNSX1hGRVJfU0laRSwKCiAgICBfUENfUkVDX01B
WF9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NSU5fWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfWEZF
Ul9BTElHTgoKICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAgICBfU0NfQ0hJTERf
TUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01BWCwKCiAgICBfU0NfT1BF
Tl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFNRV9NQVgsCgogICAgX1ND
X0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1NDX1JFQUxUSU1FX1NJR05B
TFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RJTUVSUywKCiAgICBf
U0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lO
Q0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoKICAg
IF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoKICAgIF9TQ19NRU1PUllfUFJP
VEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAgIF9TQ19TRU1BUEhPUkVTLAoK
ICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19MSVNUSU9fTUFYLAoK
ICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCgogICAgX1NDX0RF
TEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBfU0NfTVFfUFJJT19NQVgs
CgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFY
LAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9T
Q19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgoKCiAgICBfU0NfQkNfQkFTRV9N
QVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1NDQUxFX01BWCwKCiAgICBfU0Nf
QkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKCiAgICBfU0NfRVFVSVZf
Q0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAgIF9TQ19MSU5FX01BWCwKCiAg
ICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYLAoKCiAgICBfU0Nf
Ml9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0NfMl9DX0RFViwKCiAgICBfU0Nf
Ml9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBfU0NfMl9TV19ERVYsCgogICAg
X1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAgIF9TQ19QSUlfWFRJLAoKICAgIF9T
Q19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJORVQsCgogICAgX1NDX1BJSV9PU0ksCgog
ICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwKCiAgICBfU0NfVUlPX01BWElPViwKCiAgICBf
U0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFN
LAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAg
ICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01B
WCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCgog
ICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAg
X1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVB
RF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBf
U0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9T
Q19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwK
CiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklP
X0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9Q
Uk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9D
RVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywK
CiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9W
RVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwK
CiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19Y
T1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgog
ICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywK
CiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01B
WCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4s
CgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01B
WCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFY
LAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01J
TiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdf
TUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05M
X0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0Nf
TkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYz
MiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwK
CiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19YT1BFTl9MRUdBQ1ksCgogICAg
X1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTLAoKCiAg
ICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklFUlMsCgogICAgX1NDX0JBU0UsCgog
ICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVF9SLAoKICAgIF9T
Q19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUsCgogICAgX1NDX1RIUkVBRF9DUFVU
SU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQywKCiAgICBf
U0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZEX01HTVQsCgogICAgX1NDX0ZJRk8sCgog
ICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRUUklCVVRFUywKCiAgICBfU0NfRklMRV9MT0NL
SU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAgICBfU0NfTU9OT1RPTklDX0NMT0NLLAoKICAg
IF9TQ19NVUxUSVBMRV9QUk9DRVNTLAoKICAgIF9TQ19TSU5HTEVfUFJPQ0VTUywKCiAgICBfU0Nf
TkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUywKCiAgICBfU0NfU1BJTl9M
T0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19SRUdFWF9WRVJTSU9OLAoKICAgIF9TQ19T
SEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0NfU1BBV04sCgogICAgX1NDX1NQT1JBRElD
X1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfU1lTVEVN
X0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAgICBfU0NfVElNRU9VVFMs
CgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19VU0VSX0dST1VQUywKCiAg
ICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9QQlMsCgogICAgX1NDXzJfUEJTX0FDQ09V
TlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAgICBfU0NfMl9QQlNfTUVTU0FHRSwKCiAg
ICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxPT1AsCgogICAgX1NDX1NUUkVBTVMsCgog
ICAgX1NDXzJfUEJTX0NIRUNLUE9JTlQKCiAgfTsKCgoKCgplbnVtCiAgewogICAgX0NTX1BBVEgK
CgoKCiAgICAsCiAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCgogICAgX0NTX0xGU19MREZMQUdT
LAoKICAgIF9DU19MRlNfTElCUywKCiAgICBfQ1NfTEZTX0xJTlRGTEFHUywKCiAgICBfQ1NfTEZT
NjRfQ0ZMQUdTLAoKICAgIF9DU19MRlM2NF9MREZMQUdTLAoKICAgIF9DU19MRlM2NF9MSUJTLAoK
ICAgIF9DU19MRlM2NF9MSU5URkxBR1MKCgoKCiAgICAsCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYz
Ml9DRkxBR1MgPSAxMTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAg
X0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5U
RkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9J
TFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUywKCiAg
ICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZG
NjRfQ0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfWEJT
NV9MUDY0X09GRjY0X0xJQlMsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgog
ICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZC
SUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJT
NV9MUEJJR19PRkZCSUdfTElOVEZMQUdTCgoKICB9OwojIDUwMSAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAyIDMKCgpleHRlcm4gbG9uZyBpbnQgcGF0aGNvbmYgKF9fY29uc3QgY2hhciAqX19wYXRo
LCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAoaW50IF9fZmQsIGlu
dCBfX25hbWUpIDsKCgpleHRlcm4gbG9uZyBpbnQgc3lzY29uZiAoaW50IF9fbmFtZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gc2l6ZV90IGNvbmZzdHIgKGludCBfX25h
bWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCmV4dGVybiBfX3BpZF90IGdldHBp
ZCAodm9pZCkgOwoKCmV4dGVybiBfX3BpZF90IGdldHBwaWQgKHZvaWQpIDsKCgoKCmV4dGVybiBf
X3BpZF90IGdldHBncnAgKHZvaWQpIDsKIyA1MzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gX19waWRfdCBfX2dldHBnaWQgKF9fcGlkX3QgX19waWQpIDsKCmV4dGVybiBfX3BpZF90
IGdldHBnaWQgKF9fcGlkX3QgX19waWQpIDsKCgoKCgoKZXh0ZXJuIGludCBzZXRwZ2lkIChfX3Bp
ZF90IF9fcGlkLCBfX3BpZF90IF9fcGdpZCkgOwojIDU2MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiBpbnQgc2V0cGdycCAodm9pZCkgOwojIDU4MCAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAzCmV4dGVybiBfX3BpZF90IHNldHNpZCAodm9pZCkgOwoKCgpleHRlcm4gX19waWRfdCBn
ZXRzaWQgKF9fcGlkX3QgX19waWQpIDsKCgoKZXh0ZXJuIF9fdWlkX3QgZ2V0dWlkICh2b2lkKSA7
CgoKZXh0ZXJuIF9fdWlkX3QgZ2V0ZXVpZCAodm9pZCkgOwoKCmV4dGVybiBfX2dpZF90IGdldGdp
ZCAodm9pZCkgOwoKCmV4dGVybiBfX2dpZF90IGdldGVnaWQgKHZvaWQpIDsKCgoKCmV4dGVybiBp
bnQgZ2V0Z3JvdXBzIChpbnQgX19zaXplLCBfX2dpZF90IF9fbGlzdFtdKSA7CgoKCmV4dGVybiBp
bnQgZ3JvdXBfbWVtYmVyIChfX2dpZF90IF9fZ2lkKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0dWlk
IChfX3VpZF90IF9fdWlkKSA7CgoKCgpleHRlcm4gaW50IHNldHJldWlkIChfX3VpZF90IF9fcnVp
ZCwgX191aWRfdCBfX2V1aWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZXVpZCAoX191aWRfdCBfX3Vp
ZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldGdpZCAoX19naWRfdCBfX2dpZCkgOwoKCgoKZXh0ZXJu
IGludCBzZXRyZWdpZCAoX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSA7CgoKCgpleHRl
cm4gaW50IHNldGVnaWQgKF9fZ2lkX3QgX19naWQpIDsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgZm9y
ayAodm9pZCkgOwoKCgoKCgpleHRlcm4gX19waWRfdCB2Zm9yayAodm9pZCkgOwoKCgoKCmV4dGVy
biBjaGFyICp0dHluYW1lIChpbnQgX19mZCkgOwoKCgpleHRlcm4gaW50IHR0eW5hbWVfciAoaW50
IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsKCgoKZXh0ZXJuIGludCBpc2F0
dHkgKGludCBfX2ZkKSA7CgoKCgoKZXh0ZXJuIGludCB0dHlzbG90ICh2b2lkKSA7CgoKCgpleHRl
cm4gaW50IGxpbmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIDsK
CgoKZXh0ZXJuIGludCBzeW1saW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFy
ICpfX3RvKSA7CgoKCgpleHRlcm4gaW50IHJlYWRsaW5rIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19wYXRoLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19sZW4pIDsKCgoKZXh0ZXJuIGludCB1bmxpbmsgKF9fY29uc3QgY2hhciAqX19uYW1l
KSA7CgoKZXh0ZXJuIGludCBybWRpciAoX19jb25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJu
IF9fcGlkX3QgdGNnZXRwZ3JwIChpbnQgX19mZCkgOwoKCmV4dGVybiBpbnQgdGNzZXRwZ3JwIChp
bnQgX19mZCwgX19waWRfdCBfX3BncnBfaWQpIDsKCgoKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICh2
b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldGxvZ2luX3IgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9f
bmFtZV9sZW4pIDsKCgoKCmV4dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3QgY2hhciAqX19uYW1l
KSA7CiMgNzI2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ2V0
b3B0LmgiIDEgMwojIDQ3ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGNoYXIgKm9w
dGFyZzsKIyA2MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBpbnQgb3B0aW5kOwoK
CgoKZXh0ZXJuIGludCBvcHRlcnI7CgoKCmV4dGVybiBpbnQgb3B0b3B0OwojIDE0NSAiL3Vzci9p
bmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBpbnQgZ2V0b3B0IChpbnQgX19hcmdjLCBjaGFyICpj
b25zdCAqX19hcmd2LCBjb25zdCBjaGFyICpfX3Nob3J0b3B0cyk7CiMgNzI3ICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDIgMwoKCgoKCgoKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqX19u
YW1lLCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJuIGludCBzZXRob3N0bmFtZSAoX19jb25z
dCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgpleHRlcm4gaW50IHNldGhvc3RpZCAo
bG9uZyBpbnQgX19pZCkgOwoKCgoKCmV4dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19u
YW1lLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBzZXRkb21haW5uYW1lIChfX2NvbnN0IGNo
YXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lk
KSA7CgoKZXh0ZXJuIGludCByZXZva2UgKF9fY29uc3QgY2hhciAqX19maWxlKSA7CgoKCgoKCgpl
eHRlcm4gaW50IHByb2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNp
emVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVk
IGludCBfX3NjYWxlKSA7CgoKCgoKZXh0ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSkgOwoKCgpleHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICh2b2lkKSA7CmV4dGVybiB2b2lkIGVu
ZHVzZXJzaGVsbCAodm9pZCkgOwpleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIDsKCgoK
CgpleHRlcm4gaW50IGRhZW1vbiAoaW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgOwoKCgoK
CgpleHRlcm4gaW50IGNocm9vdCAoX19jb25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIGNo
YXIgKmdldHBhc3MgKF9fY29uc3QgY2hhciAqX19wcm9tcHQpIDsKCgoKCgpleHRlcm4gaW50IGZz
eW5jIChpbnQgX19mZCkgOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgZ2V0aG9zdGlkICh2b2lkKSA7
CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSAo
dm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCB0cnVuY2F0
ZSAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmX3QgX19sZW5ndGgpIDsKIyA4MzYgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHRydW5jYXRlNjQgKF9fY29uc3QgY2hhciAq
X19maWxlLCBfX29mZjY0X3QgX19sZW5ndGgpIDsKCgoKCmV4dGVybiBpbnQgZnRydW5jYXRlIChp
bnQgX19mZCwgX19vZmZfdCBfX2xlbmd0aCkgOwojIDg1MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiBpbnQgZnRydW5jYXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19sZW5ndGgp
IDsKCgoKCgpleHRlcm4gaW50IGdldGR0YWJsZXNpemUgKHZvaWQpIDsKIyA4NjYgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGJyayAodm9pZCAqX19hZGRyKSA7CgoKCgoKZXh0
ZXJuIHZvaWQgKnNicmsgKGludHB0cl90IF9fZGVsdGEpIDsKIyA4ODcgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpleHRlcm4gbG9uZyBpbnQgc3lzY2FsbCAobG9uZyBpbnQgX19zeXNubywgLi4u
KSA7CiMgOTA3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBsb2NrZiAoaW50
IF9fZmQsIGludCBfX2NtZCwgX19vZmZfdCBfX2xlbikgOwojIDkxNyAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCmV4dGVybiBpbnQgbG9ja2Y2NCAoaW50IF9fZmQsIGludCBfX2NtZCwgX19vZmY2
NF90IF9fbGVuKSA7CiMgOTM4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBm
ZGF0YXN5bmMgKGludCBfX2ZpbGRlcykgOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmNyeXB0IChfX2Nv
bnN0IGNoYXIgKl9fa2V5LCBfX2NvbnN0IGNoYXIgKl9fc2FsdCkgOwoKCgpleHRlcm4gdm9pZCBl
bmNyeXB0IChjaGFyICpfX2Jsb2NrLCBpbnQgX19lZGZsYWcpIDsKCgoKCgoKZXh0ZXJuIHZvaWQg
c3dhYiAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fZnJvbSwgdm9pZCAqX19yZXN0cmljdCBf
X3RvLAogICAgICAgICAgICAgICAgICBzc2l6ZV90IF9fbikgOwoKCgoKCgoKZXh0ZXJuIGNoYXIg
KmN0ZXJtaWQgKGNoYXIgKl9fcykgOwojIDk4MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fcGFyZW50KSAodm9pZCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKCpfX2NoaWxkKSAodm9pZCkpIDsKCgoKIyA1NSAiLi4vcHJv
Z3MvcHJvZ3MucHJpdi5oIiAyCiMgNjYgIi4uL3Byb2dzL3Byb2dzLnByaXYuaCIKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9saW1pdHMuaCIg
MSAzCiMgMTEgIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxpbnV4LWdudS8zLjIuMi9pbmNs
dWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251
LzMuMi4yL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMwoKCgoKCgojIDEgIi91c3IvbGliL2djYy1s
aWIvY3Jpcy1heGlzLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxMzIg
Ii91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2xpbWl0
cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxNDQgIi91c3IvaW5jbHVk
ZS9saW1pdHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMSAzCiMg
MTI2ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9sb2NhbF9saW0uaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMKIyAzNyAiL3Vzci9pbmNs
dWRlL2JpdHMvbG9jYWxfbGltLmgiIDIgMwojIDEyNyAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgx
X2xpbS5oIiAyIDMKIyAxNDUgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvcG9zaXgyX2xpbS5oIiAxIDMKIyAxNDkgIi91c3IvaW5jbHVkZS9saW1p
dHMuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDEgMwojIDM0
ICIvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3N0ZGlvX2xpbS5oIiAxIDMKIyAzNSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIg
MwojIDEzNiAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAxMzcgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xp
bS5oIiAyIDMKIyAxNTMgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTMzICIvdXNyL2xp
Yi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9saW1pdHMuaCIgMiAz
CiMgOCAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUv
c3lzbGltaXRzLmgiIDIgMwojIDEyICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1n
bnUvMy4yLjIvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgNjcgIi4uL3Byb2dzL3Byb2dzLnByaXYu
aCIgMgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAxIDMKIyAyOCAiL3Vzci9pbmNs
dWRlL2RpcmVudC5oIiAzCgojIDYyICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9kaXJlbnQuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL2RpcmVu
dC5oIiAzCnN0cnVjdCBkaXJlbnQKICB7CgogICAgX19pbm9fdCBkX2lubzsKICAgIF9fb2ZmX3Qg
ZF9vZmY7CgoKCgogICAgdW5zaWduZWQgc2hvcnQgaW50IGRfcmVjbGVuOwogICAgdW5zaWduZWQg
Y2hhciBkX3R5cGU7CiAgICBjaGFyIGRfbmFtZVsyNTZdOwogIH07CgoKc3RydWN0IGRpcmVudDY0
CiAgewogICAgX19pbm82NF90IGRfaW5vOwogICAgX19vZmY2NF90IGRfb2ZmOwogICAgdW5zaWdu
ZWQgc2hvcnQgaW50IGRfcmVjbGVuOwogICAgdW5zaWduZWQgY2hhciBkX3R5cGU7CiAgICBjaGFy
IGRfbmFtZVsyNTZdOwogIH07CiMgNjMgIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMiAzCiMgOTgg
Ii91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMwplbnVtCiAgewogICAgRFRfVU5LTk9XTiA9IDAsCgog
ICAgRFRfRklGTyA9IDEsCgogICAgRFRfQ0hSID0gMiwKCiAgICBEVF9ESVIgPSA0LAoKICAgIERU
X0JMSyA9IDYsCgogICAgRFRfUkVHID0gOCwKCiAgICBEVF9MTksgPSAxMCwKCiAgICBEVF9TT0NL
ID0gMTIsCgogICAgRFRfV0hUID0gMTQKCiAgfTsKIyAxMjggIi91c3IvaW5jbHVkZS9kaXJlbnQu
aCIgMwp0eXBlZGVmIHN0cnVjdCBfX2RpcnN0cmVhbSBESVI7CgoKCmV4dGVybiBESVIgKm9wZW5k
aXIgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBpbnQgY2xvc2VkaXIgKERJUiAq
X19kaXJwKSA7CiMgMTQ2ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIHN0cnVjdCBk
aXJlbnQgKnJlYWRkaXIgKERJUiAqX19kaXJwKSA7CiMgMTU2ICIvdXNyL2luY2x1ZGUvZGlyZW50
LmgiIDMKZXh0ZXJuIHN0cnVjdCBkaXJlbnQ2NCAqcmVhZGRpcjY0IChESVIgKl9fZGlycCkgOwoK
CgoKCgpleHRlcm4gaW50IHJlYWRkaXJfciAoRElSICpfX3Jlc3RyaWN0IF9fZGlycCwKICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBkaXJlbnQgKl9fcmVzdHJpY3QgX19lbnRyeSwKICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBkaXJlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CiMg
MTc5ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIGludCByZWFkZGlyNjRfciAoRElS
ICpfX3Jlc3RyaWN0IF9fZGlycCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpcmVu
dDY0ICpfX3Jlc3RyaWN0IF9fZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk
aXJlbnQ2NCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgoKCmV4dGVybiB2b2lkIHJld2luZGRp
ciAoRElSICpfX2RpcnApIDsKCgoKCgpleHRlcm4gdm9pZCBzZWVrZGlyIChESVIgKl9fZGlycCwg
bG9uZyBpbnQgX19wb3MpIDsKCgpleHRlcm4gbG9uZyBpbnQgdGVsbGRpciAoRElSICpfX2RpcnAp
IDsKCgoKCgpleHRlcm4gaW50IGRpcmZkIChESVIgKl9fZGlycCkgOwojIDIyMCAiL3Vzci9pbmNs
dWRlL2RpcmVudC5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251
LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIyMSAiL3Vzci9pbmNsdWRlL2RpcmVudC5o
IiAyIDMKCgoKCgoKZXh0ZXJuIGludCBzY2FuZGlyIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19kaXIsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpcmVudCAqKipfX3Jlc3RyaWN0IF9f
bmFtZWxpc3QsCiAgICAgICAgICAgICAgICAgICAgaW50ICgqX19zZWxlY3RvcikgKF9fY29uc3Qg
c3RydWN0IGRpcmVudCAqKSwKICAgICAgICAgICAgICAgICAgICBpbnQgKCpfX2NtcCkgKF9fY29u
c3Qgdm9pZCAqLCBfX2NvbnN0IHZvaWQgKikpIDsKIyAyNDcgIi91c3IvaW5jbHVkZS9kaXJlbnQu
aCIgMwpleHRlcm4gaW50IHNjYW5kaXI2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGly
LAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpcmVudDY0ICoqKl9fcmVzdHJpY3QgX19u
YW1lbGlzdCwKICAgICAgICAgICAgICAgICAgICAgIGludCAoKl9fc2VsZWN0b3IpIChfX2NvbnN0
IHN0cnVjdCBkaXJlbnQ2NCAqKSwKICAgICAgICAgICAgICAgICAgICAgIGludCAoKl9fY21wKSAo
X19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKSkgOwoKCgoKZXh0ZXJuIGludCBhbHBoYXNv
cnQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lkICpfX2UyKQogICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwojIDI2OSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVy
biBpbnQgYWxwaGFzb3J0NjQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lkICpfX2Uy
KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQgdmVyc2lv
bnNvcnQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lkICpfX2UyKQogICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwojIDI5MCAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCmV4
dGVybiBpbnQgdmVyc2lvbnNvcnQ2NCAoX19jb25zdCB2b2lkICpfX2UxLCBfX2NvbnN0IHZvaWQg
Kl9fZTIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMzAwICIvdXNyL2luY2x1
ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIF9fc3NpemVfdCBnZXRkaXJlbnRyaWVzIChpbnQgX19mZCwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19vZmZfdCAq
X19yZXN0cmljdCBfX2Jhc2VwKSA7CiMgMzE2ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0
ZXJuIF9fc3NpemVfdCBnZXRkaXJlbnRyaWVzNjQgKGludCBfX2ZkLCBjaGFyICpfX3Jlc3RyaWN0
IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbmJ5dGVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19vZmY2NF90ICpfX3Jlc3RyaWN0
IF9fYmFzZXApIDsKCgoKCgojIDczICIuLi9wcm9ncy9wcm9ncy5wcml2LmgiIDIKIyA4OCAiLi4v
cHJvZ3MvcHJvZ3MucHJpdi5oIgojIDEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAxIDMKIyAzMiAi
L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8u
aCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvbGludXgvZXJybm8uaCIgMSAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIiAx
IDMKIyA1ICIvdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMiAzCiMgMjYgIi91c3IvaW5jbHVk
ZS9iaXRzL2Vycm5vLmgiIDIgMwojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzCmV4
dGVybiBpbnQgZXJybm87CgoKZXh0ZXJuIGludCAqX19lcnJub19sb2NhdGlvbiAodm9pZCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDM3ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMiAz
CiMgNTUgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzCmV4dGVybiBjaGFyICpwcm9ncmFtX2ludm9j
YXRpb25fbmFtZSwgKnByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lOwoKCgoKIyA2OSAiL3Vz
ci9pbmNsdWRlL2Vycm5vLmgiIDMKdHlwZWRlZiBpbnQgZXJyb3JfdDsKIyA4OSAiLi4vcHJvZ3Mv
cHJvZ3MucHJpdi5oIiAyCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMKIyA0
NyAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBjaGFyICpvcHRhcmc7CiMgNjEgIi91
c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQg
b3B0ZXJyOwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyA5NCAiL3Vzci9pbmNsdWRlL2dldG9wdC5o
IiAzCnN0cnVjdCBvcHRpb24KewoKICBjb25zdCBjaGFyICpuYW1lOwoKCgoKCiAgaW50IGhhc19h
cmc7CiAgaW50ICpmbGFnOwogIGludCB2YWw7Cn07CiMgMTQ1ICIvdXNyL2luY2x1ZGUvZ2V0b3B0
LmgiIDMKZXh0ZXJuIGludCBnZXRvcHQgKGludCBfX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX2FyZ3Ys
IGNvbnN0IGNoYXIgKl9fc2hvcnRvcHRzKTsKCgoKCgpleHRlcm4gaW50IGdldG9wdF9sb25nIChp
bnQgX19hcmdjLCBjaGFyICpjb25zdCAqX19hcmd2LCBjb25zdCBjaGFyICpfX3Nob3J0b3B0cywK
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqX19sb25nb3B0cywg
aW50ICpfX2xvbmdpbmQpOwpleHRlcm4gaW50IGdldG9wdF9sb25nX29ubHkgKGludCBfX2FyZ2Ms
IGNoYXIgKmNvbnN0ICpfX2FyZ3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqX19zaG9ydG9wdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IG9wdGlvbiAqX19sb25nb3B0cywgaW50ICpfX2xvbmdpbmQpOwoKCmV4dGVybiBpbnQgX2dl
dG9wdF9pbnRlcm5hbCAoaW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpfX3Nob3J0b3B0cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpfX2xvbmdvcHRzLCBpbnQgKl9f
bG9uZ2luZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19sb25nX29ubHkpOwoj
IDk2ICIuLi9wcm9ncy9wcm9ncy5wcml2LmgiIDIKIyAxMDQgIi4uL3Byb2dzL3Byb2dzLnByaXYu
aCIKIyAxICIuLi9pbmNsdWRlL2N1cnNlcy5oIiAxCiMgNTggIi4uL2luY2x1ZGUvY3Vyc2VzLmgi
CiMgMSAiLi4vaW5jbHVkZS9uY3Vyc2VzX2RsbC5oIiAxCiMgNTkgIi4uL2luY2x1ZGUvY3Vyc2Vz
LmgiIDIKIyA5OSAiLi4vaW5jbHVkZS9jdXJzZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNo
dHlwZTsKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251LzMuMi4yL2lu
Y2x1ZGUvc3RkaW8uaCIgMSAzCiMgMzggIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxpbnV4
LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9j
cmlzLWF4aXMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQzICIvdXNy
L2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAy
IDMKIyA1MyAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251LzMuMi4yL2luY2x1
ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwojIDYzICIvdXNyL2xp
Yi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCnR5
cGVkZWYgc3RydWN0IF9JT19GSUxFIF9fRklMRTsKIyA3MyAiL3Vzci9saWIvZ2NjLWxpYi9jcmlz
LWF4aXMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDE4ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgMzU0ICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMg
MTkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9fR19j
b25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNs
dWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAy
IDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAyIDMKIyA2NyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1
Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hh
ciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwojIDI5ICIvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmgiIDIgMwoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAg
X19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29m
ZjY0X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0OCAi
L3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEg
MwojIDI4ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMwojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5o
IiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgplbnVtCnsK
ICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIsCiAgX19H
Q09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBfX0dDT05WX0ZVTExfT1VUUFVU
LAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQsCgog
IF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJST1IKfTsK
CgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZfSUdOT1JFX0VS
Uk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwOwpzdHJ1Y3QgX19nY29udl9z
dGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3Q7CnN0cnVjdCBfX2djb252X3Ry
YW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3QgX19nY29udl9z
dGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiosIHNpemVfdCAqLCBp
bnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0KSAoc3RydWN0IF9fZ2Nv
bnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0KSAoc3RydWN0IF9fZ2Nv
bnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2ZjdCkgKHN0cnVjdCBf
X2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBf
X2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICoqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgq
X19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19jb25zdCB1bnNpZ25lZCBjaGFy
ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5z
aWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYg
aW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNvbnN0IGNoYXIgKik7CnR5
cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19n
Y29udl90cmFuc19kYXRhCnsKCiAgX19nY29udl90cmFuc19mY3QgX190cmFuc19mY3Q7CiAgX19n
Y29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0OwogIF9fZ2NvbnZfdHJh
bnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRhOwogIHN0cnVjdCBfX2dj
b252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcAp7CiAgc3Ry
dWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7CiAgX19jb25zdCBjaGFy
ICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNoYXIgKl9fZnJvbV9uYW1lOwogIGNo
YXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2ZjdCBf
X2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCiAgaW50IF9fbWluX25l
ZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5fbmVlZGVkX3Rv
OwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAqX19k
YXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIgKl9f
b3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdzOwoK
CgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7Cgog
IF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0cnVj
dCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9fZ2Nv
bnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9fc3Rl
cHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhIFtdOwp9
ICpfX2djb252X3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCnR5cGVkZWYg
dW5pb24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7CiAgICBzdHJ1
Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRh
OwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19T
SV9fKSkpOwojIDMxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgNTEgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251LzMu
Mi4yL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhp
cy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92
YV9saXN0IF9fZ251Y192YV9saXN0OwojIDUyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMg
MTU4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9J
T19GSUxFOwojIDE2OCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19s
b2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4
dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwojIDE5MSAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2
dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0
X25vY29udgp9OwojIDI1OSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxF
IHsKICBpbnQgX2ZsYWdzOwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3Jl
YWRfZW5kOwogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAg
Y2hhciogX0lPX3dyaXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19i
dWZfYmFzZTsKICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBj
aGFyICpfSU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lP
X21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2Zp
bGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25l
ZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFy
IF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMDMgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzCiAgX19vZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAg
dm9pZCAqX19wYWQyOwoKICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2Yg
KGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJ
TEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19G
SUxFX3BsdXMgX0lPXzJfMV9zdGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9f
Ml8xX3N0ZG91dF87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87
CiMgMzQyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3Jl
YWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoK
CgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2Nv
bnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9f
b2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZv
aWQgKl9fY29va2llKTsKCgoKCnR5cGVkZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0
aW9uX3Q7CnR5cGVkZWYgX19pb193cml0ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlw
ZWRlZiBfX2lvX3NlZWtfZm4gY29va2llX3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Ns
b3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5jdGlvbl90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBfX2lv
X3JlYWRfZm4gKnJlYWQ7CiAgX19pb193cml0ZV9mbiAqd3JpdGU7CiAgX19pb19zZWVrX2ZuICpz
ZWVrOwogIF9faW9fY2xvc2VfZm4gKmNsb3NlOwp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Q7
CnR5cGVkZWYgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7
CgpzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlOwoKCmV4dGVybiB2b2lkIF9JT19jb29raWVfaW5pdCAo
c3RydWN0IF9JT19jb29raWVfZmlsZSAqX19jZmlsZSwgaW50IF9fcmVhZF93cml0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2Nvb2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5j
dGlvbnNfdCBfX2Zucyk7CgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAq
KSA7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZs
b3cgKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJ
TEUgKikgOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50
X3QgX193b3ZlcmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwojIDQyNCAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJu
IGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9f
ZmVvZiAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAq
X19mcCkgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCkgOwoK
CgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQg
X0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmls
ZSAoX0lPX0ZJTEUgKikgOwojIDQ1NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGlu
dCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0
cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0
cmljdCkgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNv
bnN0IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFf
bGlzdCkgOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3Np
emVfdCkgOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXpl
X3QpIDsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRf
dCwgaW50LCBpbnQpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwg
X19vZmY2NF90LCBpbnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9f
RklMRSAqKSA7CiMgNzQgIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxpbnV4LWdudS8zLjIu
Mi9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCBfX25vdF92
YV9saXN0X187CiMgODggIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxpbnV4LWdudS8zLjIu
Mi9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKdHlwZWRl
ZiBfR19mcG9zNjRfdCBmcG9zNjRfdDsKIyAxMzcgIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlz
LWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9zdGRpb19saW0uaCIgMSAzCiMgMTM4ICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpl
eHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJyOwoKCgoKCgpleHRlcm4gaW50
IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSA7CgpleHRlcm4gaW50IHJlbmFtZSAo
X19jb25zdCBjaGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldykgOwoKCgoKZXh0ZXJuIEZJ
TEUgKnRtcGZpbGUgKHZvaWQpIDsKIyAxNjYgIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxp
bnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAo
dm9pZCkgOwoKCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNo
YXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIDsKIyAxODYgIi91c3IvbGliL2djYy1saWIvY3Jpcy1h
eGlzLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRlbXBu
YW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgZmNsb3NlIChGSUxFICpfX3N0
cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBp
bnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmY2xv
c2VhbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX21vZGVzKSA7CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIDsKIyAyMzAgIi91c3IvbGliL2djYy1saWIvY3Jpcy1heGlzLWxpbnV4LWdu
dS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAg
ICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gRklMRSAqZmRvcGVuIChp
bnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVu
Y29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNfY29va2llLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykgOwoKCmV4
dGVybiBGSUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19sZW4sIF9fY29uc3QgY2hh
ciAqX19tb2RlcykgOwoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFyICoqX19y
ZXN0cmljdCBfX2J1ZmxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9f
cmVzdHJpY3QgX19zaXplbG9jKSA7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQg
c2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgOwoKCgoKZXh0
ZXJuIHZvaWQgc2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIDsKCgpl
eHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBm
cHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHByaW50
ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQg
c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50IHZmcHJpbnRm
IChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKZXh0ZXJuIGlu
dCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9s
aXN0IF9fYXJnKQogICAgIDsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18g
KChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2c25wcmludGYg
KGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9f
YXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkp
OwoKCgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwKICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9f
LCAyLCAwKSkpOwpleHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRy
LAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwg
Li4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkp
OwpleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKZXh0ZXJuIGlu
dCB2ZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwKICAg
ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHByaW50ZiAo
aW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoKZXh0ZXJuIGlu
dCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzY2Fu
ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQg
c3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgoKZXh0ZXJuIGludCB2
ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIGlu
dCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xp
c3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwg
MCkpKTsKCgpleHRlcm4gaW50IHZzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
CiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBf
X2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19z
Y2FuZl9fLCAyLCAwKSkpOwoKCgoKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsK
ZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgZ2V0Y2hhciAo
dm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkg
OwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgZmdl
dGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQg
X19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJTEUgKl9f
c3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSA7CgoKCgoKCgpleHRlcm4g
aW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJu
IGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50
IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIDsKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUg
Kl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSkg
OwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CgoKCmV4dGVybiBjaGFyICpmZ2V0c191
bmxvY2tlZCAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNoYXIg
KmdldHMgKGNoYXIgKl9fcykgOwojIDQzNCAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gX19zc2l6ZV90IF9fZ2V0ZGVs
aW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJu
IF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGlt
aXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSA7CgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0cmljdCBfX2xp
bmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg
OwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CgoKCmV4dGVybiBpbnQgZnB1dHNfdW5sb2Nr
ZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBwdXRzIChfX2Nv
bnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19z
dHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwg
c2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29uc3Qgdm9pZCAq
X19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoKCmV4dGVybiBzaXplX3QgZnJlYWRf
dW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0
cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQg
ZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKSA7Cgpl
eHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gdm9pZCByZXdp
bmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNDk3ICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1s
aW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvIChGSUxF
ICpfX3N0cmVhbSwgX19vZmZfdCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gX19vZmZf
dCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIDsKCmV4
dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3Bvcykg
OwojIDUzMSAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251LzMuMi4yL2luY2x1
ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxFICpfX3N0cmVhbSwgX19vZmY2
NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBmdGVsbG82NCAoRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZ2V0cG9zNjQgKEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0sIGZwb3M2NF90ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIDsKZXh0ZXJuIGludCBmc2V0
cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3BvcykgOwoKCgpleHRl
cm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVvZiAoRklM
RSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgOwoKCgpl
eHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGlu
dCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxv
Y2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25zdCBj
aGFyICpfX3MpIDsKCgoKCmV4dGVybiBpbnQgc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIg
Kl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKCgpleHRlcm4gaW50IF9zeXNfbmVycjsKZXh0ZXJuIF9f
Y29uc3QgY2hhciAqX19jb25zdCBfc3lzX2Vycmxpc3RbXTsKCgoKCgpleHRlcm4gaW50IGZpbGVu
byAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxF
ICpfX3N0cmVhbSkgOwoKCgoKCgpleHRlcm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19j
b21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklM
RSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CgoK
CgoKZXh0ZXJuIGNoYXIgKmN1c2VyaWQgKGNoYXIgKl9fcykgOwoKCgoKc3RydWN0IG9ic3RhY2s7
CgoKZXh0ZXJuIGludCBvYnN0YWNrX3ByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3Qg
X19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikgOwpleHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0
IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmdzKSA7CgoKCgoKCgpleHRlcm4gdm9pZCBmbG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxF
ICpfX3N0cmVhbSkgOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkg
OwojIDYzOCAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251LzMuMi4yL2luY2x1
ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwojIDM5ICIv
dXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewog
IHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0ZXJuIF9faW5s
aW5lIGludApnZXRjaGFyICh2b2lkKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoK
CmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVy
biAoKF9fZnApLT5fSU9fcmVhZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93
IChfX2ZwKSA6ICoodW5zaWduZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoK
CmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkKewogIHJldHVybiAo
KHN0ZGluKS0+X0lPX3JlYWRfcHRyID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cg
KHN0ZGluKSA6ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0K
CgoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBfSU9f
cHV0YyAoX19jLCBzdGRvdXQpOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZwdXRjX3VubG9j
a2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9J
T193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChf
X3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0
cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUg
aW50CnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgo
KF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/
IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVk
IGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmV4dGVy
biBfX2lubGluZSBpbnQKcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykKewogIHJldHVybiAoKChz
dGRvdXQpLT5fSU9fd3JpdGVfcHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3Zl
cmZsb3cgKHN0ZG91dCwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAo
KihzdGRvdXQpLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5s
aW5lIF9fc3NpemVfdApnZXRsaW5lIChjaGFyICoqX19saW5lcHRyLCBzaXplX3QgKl9fbiwgRklM
RSAqX19zdHJlYW0pCnsKICByZXR1cm4gX19nZXRkZWxpbSAoX19saW5lcHRyLCBfX24sICdcbics
IF9fc3RyZWFtKTsKfQoKCgoKCmV4dGVybiBfX2lubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAw
KTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVh
bSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjM5
ICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRp
by5oIiAyIDMKCgoKIyAxMDIgIi4uL2luY2x1ZGUvY3Vyc2VzLmgiIDIKIyAxICIuLi9pbmNsdWRl
L3VuY3RybC5oIiAxCiMgNTQgIi4uL2luY2x1ZGUvdW5jdHJsLmgiCiMgMSAiLi4vaW5jbHVkZS9j
dXJzZXMuaCIgMQojIDU1ICIuLi9pbmNsdWRlL3VuY3RybC5oIiAyCgoKIGNoYXIgKiB1bmN0cmwg
KGNodHlwZSk7CiMgMTAzICIuLi9pbmNsdWRlL2N1cnNlcy5oIiAyCiMgMSAiL3Vzci9saWIvZ2Nj
LWxpYi9jcmlzLWF4aXMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDEx
MCAiL3Vzci9saWIvZ2NjLWxpYi9jcmlzLWF4aXMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3Rk
YXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDEwNCAiLi4vaW5jbHVk
ZS9jdXJzZXMuaCIgMgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTUxICIvdXNyL2xpYi9nY2MtbGliL2NyaXMt
YXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIGludCBwdHJk
aWZmX3Q7CiMgMTA2ICIuLi9pbmNsdWRlL2N1cnNlcy5oIiAyCiMgMTI2ICIuLi9pbmNsdWRlL2N1
cnNlcy5oIgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgTkNVUlNFU19CT09MOwoKCgoKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2NyaXMtYXhpcy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRib29sLmgi
IDEgMwojIDEzMiAiLi4vaW5jbHVkZS9jdXJzZXMuaCIgMgojIDE3MSAiLi4vaW5jbHVkZS9jdXJz
ZXMuaCIKZXh0ZXJuIGludCBDT0xPUlM7CmV4dGVybiBpbnQgQ09MT1JfUEFJUlM7CiMgMTg5ICIu
Li9pbmNsdWRlL2N1cnNlcy5oIgpleHRlcm4gY2h0eXBlIGFjc19tYXBbXTsKIyAyNzcgIi4uL2lu
Y2x1ZGUvY3Vyc2VzLmgiCnR5cGVkZWYgc3RydWN0IHNjcmVlbiBTQ1JFRU47CnR5cGVkZWYgc3Ry
dWN0IF93aW5fc3QgV0lORE9XOwoKdHlwZWRlZiBjaHR5cGUgYXR0cl90OwojIDMwNSAiLi4vaW5j
bHVkZS9jdXJzZXMuaCIKdHlwZWRlZiBzdHJ1Y3QKewogICAgYXR0cl90IGF0dHI7CiAgICB3Y2hh
cl90IGNoYXJzWzVdOwp9CmNjaGFyX3Q7CgoKCnN0cnVjdCBsZGF0OwoKc3RydWN0IF93aW5fc3QK
ewogICAgICAgIHNob3J0IF9jdXJ5LCBfY3VyeDsKCgogICAgICAgIHNob3J0IF9tYXh5LCBfbWF4
eDsKICAgICAgICBzaG9ydCBfYmVneSwgX2JlZ3g7CgogICAgICAgIHNob3J0IF9mbGFnczsKCgog
ICAgICAgIGF0dHJfdCBfYXR0cnM7CiAgICAgICAgY2h0eXBlIF9ia2dkOwoKCiAgICAgICAgTkNV
UlNFU19CT09MIF9ub3RpbWVvdXQ7CiAgICAgICAgTkNVUlNFU19CT09MIF9jbGVhcjsKICAgICAg
ICBOQ1VSU0VTX0JPT0wgX2xlYXZlb2s7CiAgICAgICAgTkNVUlNFU19CT09MIF9zY3JvbGw7CiAg
ICAgICAgTkNVUlNFU19CT09MIF9pZGxvazsKICAgICAgICBOQ1VSU0VTX0JPT0wgX2lkY29rOwog
ICAgICAgIE5DVVJTRVNfQk9PTCBfaW1tZWQ7CiAgICAgICAgTkNVUlNFU19CT09MIF9zeW5jOwog
ICAgICAgIE5DVVJTRVNfQk9PTCBfdXNlX2tleXBhZDsKICAgICAgICBpbnQgX2RlbGF5OwoKICAg
ICAgICBzdHJ1Y3QgbGRhdCAqX2xpbmU7CgoKICAgICAgICBzaG9ydCBfcmVndG9wOwogICAgICAg
IHNob3J0IF9yZWdib3R0b207CgoKICAgICAgICBpbnQgX3Bhcng7CiAgICAgICAgaW50IF9wYXJ5
OwogICAgICAgIFdJTkRPVyAqX3BhcmVudDsKCgogICAgICAgIHN0cnVjdCBwZGF0CiAgICAgICAg
ewogICAgICAgICAgICBzaG9ydCBfcGFkX3ksIF9wYWRfeDsKICAgICAgICAgICAgc2hvcnQgX3Bh
ZF90b3AsIF9wYWRfbGVmdDsKICAgICAgICAgICAgc2hvcnQgX3BhZF9ib3R0b20sIF9wYWRfcmln
aHQ7CiAgICAgICAgfSBfcGFkOwoKICAgICAgICBzaG9ydCBfeW9mZnNldDsKCgogICAgICAgIGNj
aGFyX3QgX2JrZ3JuZDsKCn07CgpleHRlcm4gV0lORE9XICogc3Rkc2NyOwpleHRlcm4gV0lORE9X
ICogY3Vyc2NyOwpleHRlcm4gV0lORE9XICogbmV3c2NyOwoKZXh0ZXJuIGludCBMSU5FUzsKZXh0
ZXJuIGludCBDT0xTOwpleHRlcm4gaW50IFRBQlNJWkU7CgoKCgpleHRlcm4gaW50IEVTQ0RFTEFZ
OwoKZXh0ZXJuIGNoYXIgdHR5dHlwZVtdOwoKCgoKCmV4dGVybiBOQ1VSU0VTX0JPT0wgaXNfdGVy
bV9yZXNpemVkIChpbnQsIGludCk7CmV4dGVybiBjaGFyICoga2V5Ym91bmQgKGludCwgaW50KTsK
ZXh0ZXJuIGNvbnN0IGNoYXIgKiBjdXJzZXNfdmVyc2lvbiAodm9pZCk7CmV4dGVybiBpbnQgYXNz
dW1lX2RlZmF1bHRfY29sb3JzIChpbnQsIGludCk7CmV4dGVybiBpbnQgZGVmaW5lX2tleSAoY2hh
ciAqLCBpbnQpOwpleHRlcm4gaW50IGtleW9rIChpbnQsIE5DVVJTRVNfQk9PTCk7CmV4dGVybiBp
bnQgcmVzaXplX3Rlcm0gKGludCwgaW50KTsKZXh0ZXJuIGludCByZXNpemV0ZXJtIChpbnQsIGlu
dCk7CmV4dGVybiBpbnQgdXNlX2RlZmF1bHRfY29sb3JzICh2b2lkKTsKZXh0ZXJuIGludCB1c2Vf
ZXh0ZW5kZWRfbmFtZXMgKE5DVVJTRVNfQk9PTCk7CmV4dGVybiBpbnQgd3Jlc2l6ZSAoV0lORE9X
ICosIGludCwgaW50KTsKIyA1MDYgIi4uL2luY2x1ZGUvY3Vyc2VzLmgiCmV4dGVybiBpbnQgYWRk
Y2ggKGNvbnN0IGNodHlwZSk7CmV4dGVybiBpbnQgYWRkY2huc3RyIChjb25zdCBjaHR5cGUgKiwg
aW50KTsKZXh0ZXJuIGludCBhZGRjaHN0ciAoY29uc3QgY2h0eXBlICopOwpleHRlcm4gaW50IGFk
ZG5zdHIgKGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBhZGRzdHIgKGNvbnN0IGNoYXIg
Kik7CmV4dGVybiBpbnQgYXR0cm9mZiAoYXR0cl90KTsKZXh0ZXJuIGludCBhdHRyb24gKGF0dHJf
dCk7CmV4dGVybiBpbnQgYXR0cnNldCAoYXR0cl90KTsKZXh0ZXJuIGludCBhdHRyX2dldCAoYXR0
cl90ICosIHNob3J0ICosIHZvaWQgKik7CmV4dGVybiBpbnQgYXR0cl9vZmYgKGF0dHJfdCwgdm9p
ZCAqKTsKZXh0ZXJuIGludCBhdHRyX29uIChhdHRyX3QsIHZvaWQgKik7CmV4dGVybiBpbnQgYXR0
cl9zZXQgKGF0dHJfdCwgc2hvcnQsIHZvaWQgKik7CmV4dGVybiBpbnQgYmF1ZHJhdGUgKHZvaWQp
OwpleHRlcm4gaW50IGJlZXAgKHZvaWQpOwpleHRlcm4gaW50IGJrZ2QgKGNodHlwZSk7CmV4dGVy
biB2b2lkIGJrZ2RzZXQgKGNodHlwZSk7CmV4dGVybiBpbnQgYm9yZGVyIChjaHR5cGUsY2h0eXBl
LGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlKTsKZXh0ZXJuIGludCBi
b3ggKFdJTkRPVyAqLCBjaHR5cGUsIGNodHlwZSk7CmV4dGVybiBOQ1VSU0VTX0JPT0wgY2FuX2No
YW5nZV9jb2xvciAodm9pZCk7CmV4dGVybiBpbnQgY2JyZWFrICh2b2lkKTsKZXh0ZXJuIGludCBj
aGdhdCAoaW50LCBhdHRyX3QsIHNob3J0LCBjb25zdCB2b2lkICopOwpleHRlcm4gaW50IGNsZWFy
ICh2b2lkKTsKZXh0ZXJuIGludCBjbGVhcm9rIChXSU5ET1cgKixOQ1VSU0VTX0JPT0wpOwpleHRl
cm4gaW50IGNscnRvYm90ICh2b2lkKTsKZXh0ZXJuIGludCBjbHJ0b2VvbCAodm9pZCk7CmV4dGVy
biBpbnQgY29sb3JfY29udGVudCAoc2hvcnQsc2hvcnQqLHNob3J0KixzaG9ydCopOwpleHRlcm4g
aW50IGNvbG9yX3NldCAoc2hvcnQsdm9pZCopOwpleHRlcm4gaW50IENPTE9SX1BBSVIgKGludCk7
CmV4dGVybiBpbnQgY29weXdpbiAoY29uc3QgV0lORE9XKixXSU5ET1cqLGludCxpbnQsaW50LGlu
dCxpbnQsaW50LGludCk7CmV4dGVybiBpbnQgY3Vyc19zZXQgKGludCk7CmV4dGVybiBpbnQgZGVm
X3Byb2dfbW9kZSAodm9pZCk7CmV4dGVybiBpbnQgZGVmX3NoZWxsX21vZGUgKHZvaWQpOwpleHRl
cm4gaW50IGRlbGF5X291dHB1dCAoaW50KTsKZXh0ZXJuIGludCBkZWxjaCAodm9pZCk7CmV4dGVy
biB2b2lkIGRlbHNjcmVlbiAoU0NSRUVOICopOwpleHRlcm4gaW50IGRlbHdpbiAoV0lORE9XICop
OwpleHRlcm4gaW50IGRlbGV0ZWxuICh2b2lkKTsKZXh0ZXJuIFdJTkRPVyAqIGRlcndpbiAoV0lO
RE9XICosaW50LGludCxpbnQsaW50KTsKZXh0ZXJuIGludCBkb3VwZGF0ZSAodm9pZCk7CmV4dGVy
biBXSU5ET1cgKiBkdXB3aW4gKFdJTkRPVyAqKTsKZXh0ZXJuIGludCBlY2hvICh2b2lkKTsKZXh0
ZXJuIGludCBlY2hvY2hhciAoY29uc3QgY2h0eXBlKTsKZXh0ZXJuIGludCBlcmFzZSAodm9pZCk7
CmV4dGVybiBpbnQgZW5kd2luICh2b2lkKTsKZXh0ZXJuIGNoYXIgZXJhc2VjaGFyICh2b2lkKTsK
ZXh0ZXJuIHZvaWQgZmlsdGVyICh2b2lkKTsKZXh0ZXJuIGludCBmbGFzaCAodm9pZCk7CmV4dGVy
biBpbnQgZmx1c2hpbnAgKHZvaWQpOwpleHRlcm4gY2h0eXBlIGdldGJrZ2QgKFdJTkRPVyAqKTsK
ZXh0ZXJuIGludCBnZXRjaCAodm9pZCk7CmV4dGVybiBpbnQgZ2V0bnN0ciAoY2hhciAqLCBpbnQp
OwpleHRlcm4gaW50IGdldHN0ciAoY2hhciAqKTsKZXh0ZXJuIFdJTkRPVyAqIGdldHdpbiAoRklM
RSAqKTsKZXh0ZXJuIGludCBoYWxmZGVsYXkgKGludCk7CmV4dGVybiBOQ1VSU0VTX0JPT0wgaGFz
X2NvbG9ycyAodm9pZCk7CmV4dGVybiBOQ1VSU0VTX0JPT0wgaGFzX2ljICh2b2lkKTsKZXh0ZXJu
IE5DVVJTRVNfQk9PTCBoYXNfaWwgKHZvaWQpOwpleHRlcm4gaW50IGhsaW5lIChjaHR5cGUsIGlu
dCk7CmV4dGVybiB2b2lkIGlkY29rIChXSU5ET1cgKiwgTkNVUlNFU19CT09MKTsKZXh0ZXJuIGlu
dCBpZGxvayAoV0lORE9XICosIE5DVVJTRVNfQk9PTCk7CmV4dGVybiB2b2lkIGltbWVkb2sgKFdJ
TkRPVyAqLCBOQ1VSU0VTX0JPT0wpOwpleHRlcm4gY2h0eXBlIGluY2ggKHZvaWQpOwpleHRlcm4g
aW50IGluY2huc3RyIChjaHR5cGUgKiwgaW50KTsKZXh0ZXJuIGludCBpbmNoc3RyIChjaHR5cGUg
Kik7CmV4dGVybiBXSU5ET1cgKiBpbml0c2NyICh2b2lkKTsKZXh0ZXJuIGludCBpbml0X2NvbG9y
IChzaG9ydCxzaG9ydCxzaG9ydCxzaG9ydCk7CmV4dGVybiBpbnQgaW5pdF9wYWlyIChzaG9ydCxz
aG9ydCxzaG9ydCk7CmV4dGVybiBpbnQgaW5uc3RyIChjaGFyICosIGludCk7CmV4dGVybiBpbnQg
aW5zY2ggKGNodHlwZSk7CmV4dGVybiBpbnQgaW5zZGVsbG4gKGludCk7CmV4dGVybiBpbnQgaW5z
ZXJ0bG4gKHZvaWQpOwpleHRlcm4gaW50IGluc25zdHIgKGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0
ZXJuIGludCBpbnNzdHIgKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgaW5zdHIgKGNoYXIgKik7
CmV4dGVybiBpbnQgaW50cmZsdXNoIChXSU5ET1cgKixOQ1VSU0VTX0JPT0wpOwpleHRlcm4gTkNV
UlNFU19CT09MIGlzZW5kd2luICh2b2lkKTsKZXh0ZXJuIE5DVVJTRVNfQk9PTCBpc19saW5ldG91
Y2hlZCAoV0lORE9XICosaW50KTsKZXh0ZXJuIE5DVVJTRVNfQk9PTCBpc193aW50b3VjaGVkIChX
SU5ET1cgKik7CmV4dGVybiBjaGFyICoga2V5bmFtZSAoaW50KTsKZXh0ZXJuIGludCBrZXlwYWQg
KFdJTkRPVyAqLE5DVVJTRVNfQk9PTCk7CmV4dGVybiBjaGFyIGtpbGxjaGFyICh2b2lkKTsKZXh0
ZXJuIGludCBsZWF2ZW9rIChXSU5ET1cgKixOQ1VSU0VTX0JPT0wpOwpleHRlcm4gY2hhciAqIGxv
bmduYW1lICh2b2lkKTsKZXh0ZXJuIGludCBtZXRhIChXSU5ET1cgKixOQ1VSU0VTX0JPT0wpOwpl
eHRlcm4gaW50IG1vdmUgKGludCwgaW50KTsKZXh0ZXJuIGludCBtdmFkZGNoIChpbnQsIGludCwg
Y29uc3QgY2h0eXBlKTsKZXh0ZXJuIGludCBtdmFkZGNobnN0ciAoaW50LCBpbnQsIGNvbnN0IGNo
dHlwZSAqLCBpbnQpOwpleHRlcm4gaW50IG12YWRkY2hzdHIgKGludCwgaW50LCBjb25zdCBjaHR5
cGUgKik7CmV4dGVybiBpbnQgbXZhZGRuc3RyIChpbnQsIGludCwgY29uc3QgY2hhciAqLCBpbnQp
OwpleHRlcm4gaW50IG12YWRkc3RyIChpbnQsIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGlu
dCBtdmNoZ2F0IChpbnQsIGludCwgaW50LCBhdHRyX3QsIHNob3J0LCBjb25zdCB2b2lkICopOwpl
eHRlcm4gaW50IG12Y3VyIChpbnQsaW50LGludCxpbnQpOwpleHRlcm4gaW50IG12ZGVsY2ggKGlu
dCwgaW50KTsKZXh0ZXJuIGludCBtdmRlcndpbiAoV0lORE9XICosIGludCwgaW50KTsKZXh0ZXJu
IGludCBtdmdldGNoIChpbnQsIGludCk7CmV4dGVybiBpbnQgbXZnZXRuc3RyIChpbnQsIGludCwg
Y2hhciAqLCBpbnQpOwpleHRlcm4gaW50IG12Z2V0c3RyIChpbnQsIGludCwgY2hhciAqKTsKZXh0
ZXJuIGludCBtdmhsaW5lIChpbnQsIGludCwgY2h0eXBlLCBpbnQpOwpleHRlcm4gY2h0eXBlIG12
aW5jaCAoaW50LCBpbnQpOwpleHRlcm4gaW50IG12aW5jaG5zdHIgKGludCwgaW50LCBjaHR5cGUg
KiwgaW50KTsKZXh0ZXJuIGludCBtdmluY2hzdHIgKGludCwgaW50LCBjaHR5cGUgKik7CmV4dGVy
biBpbnQgbXZpbm5zdHIgKGludCwgaW50LCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgbXZpbnNj
aCAoaW50LCBpbnQsIGNodHlwZSk7CmV4dGVybiBpbnQgbXZpbnNuc3RyIChpbnQsIGludCwgY29u
c3QgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IG12aW5zc3RyIChpbnQsIGludCwgY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIGludCBtdmluc3RyIChpbnQsIGludCwgY2hhciAqKTsKZXh0ZXJuIGludCBt
dnByaW50dyAoaW50LGludCwgY2hhciAqLC4uLikKICAgICAgICAgICAgICAgIDsKZXh0ZXJuIGlu
dCBtdnNjYW53IChpbnQsaW50LCBjaGFyICosLi4uKQogICAgICAgICAgICAgICAgX19hdHRyaWJ1
dGVfXygoZm9ybWF0KHNjYW5mLDMsNCkpKTsKZXh0ZXJuIGludCBtdnZsaW5lIChpbnQsIGludCwg
Y2h0eXBlLCBpbnQpOwpleHRlcm4gaW50IG12d2FkZGNoIChXSU5ET1cgKiwgaW50LCBpbnQsIGNv
bnN0IGNodHlwZSk7CmV4dGVybiBpbnQgbXZ3YWRkY2huc3RyIChXSU5ET1cgKiwgaW50LCBpbnQs
IGNvbnN0IGNodHlwZSAqLCBpbnQpOwpleHRlcm4gaW50IG12d2FkZGNoc3RyIChXSU5ET1cgKiwg
aW50LCBpbnQsIGNvbnN0IGNodHlwZSAqKTsKZXh0ZXJuIGludCBtdndhZGRuc3RyIChXSU5ET1cg
KiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBtdndhZGRzdHIgKFdJ
TkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBtdndjaGdhdCAoV0lO
RE9XICosIGludCwgaW50LCBpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7CmV4dGVy
biBpbnQgbXZ3ZGVsY2ggKFdJTkRPVyAqLCBpbnQsIGludCk7CmV4dGVybiBpbnQgbXZ3Z2V0Y2gg
KFdJTkRPVyAqLCBpbnQsIGludCk7CmV4dGVybiBpbnQgbXZ3Z2V0bnN0ciAoV0lORE9XICosIGlu
dCwgaW50LCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgbXZ3Z2V0c3RyIChXSU5ET1cgKiwgaW50
LCBpbnQsIGNoYXIgKik7CmV4dGVybiBpbnQgbXZ3aGxpbmUgKFdJTkRPVyAqLCBpbnQsIGludCwg
Y2h0eXBlLCBpbnQpOwpleHRlcm4gaW50IG12d2luIChXSU5ET1cgKixpbnQsaW50KTsKZXh0ZXJu
IGNodHlwZSBtdndpbmNoIChXSU5ET1cgKiwgaW50LCBpbnQpOwpleHRlcm4gaW50IG12d2luY2hu
c3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNodHlwZSAqLCBpbnQpOwpleHRlcm4gaW50IG12d2lu
Y2hzdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY2h0eXBlICopOwpleHRlcm4gaW50IG12d2lubnN0
ciAoV0lORE9XICosIGludCwgaW50LCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgbXZ3aW5zY2gg
KFdJTkRPVyAqLCBpbnQsIGludCwgY2h0eXBlKTsKZXh0ZXJuIGludCBtdndpbnNuc3RyIChXSU5E
T1cgKiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBtdndpbnNzdHIg
KFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBtdndpbnN0ciAo
V0lORE9XICosIGludCwgaW50LCBjaGFyICopOwpleHRlcm4gaW50IG12d3ByaW50dyAoV0lORE9X
KixpbnQsaW50LCBjaGFyICosLi4uKQogICAgICAgICAgICAgICAgOwpleHRlcm4gaW50IG12d3Nj
YW53IChXSU5ET1cgKixpbnQsaW50LCBjaGFyICosLi4uKQogICAgICAgICAgICAgICAgX19hdHRy
aWJ1dGVfXygoZm9ybWF0KHNjYW5mLDQsNSkpKTsKZXh0ZXJuIGludCBtdnd2bGluZSAoV0lORE9X
ICosaW50LCBpbnQsIGNodHlwZSwgaW50KTsKZXh0ZXJuIGludCBuYXBtcyAoaW50KTsKZXh0ZXJu
IFdJTkRPVyAqIG5ld3BhZCAoaW50LGludCk7CmV4dGVybiBTQ1JFRU4gKiBuZXd0ZXJtICggY2hh
ciAqLEZJTEUgKixGSUxFICopOwpleHRlcm4gV0lORE9XICogbmV3d2luIChpbnQsaW50LGludCxp
bnQpOwpleHRlcm4gaW50IG5sICh2b2lkKTsKZXh0ZXJuIGludCBub2NicmVhayAodm9pZCk7CmV4
dGVybiBpbnQgbm9kZWxheSAoV0lORE9XICosTkNVUlNFU19CT09MKTsKZXh0ZXJuIGludCBub2Vj
aG8gKHZvaWQpOwpleHRlcm4gaW50IG5vbmwgKHZvaWQpOwpleHRlcm4gdm9pZCBub3FpZmx1c2gg
KHZvaWQpOwpleHRlcm4gaW50IG5vcmF3ICh2b2lkKTsKZXh0ZXJuIGludCBub3RpbWVvdXQgKFdJ
TkRPVyAqLE5DVVJTRVNfQk9PTCk7CmV4dGVybiBpbnQgb3ZlcmxheSAoY29uc3QgV0lORE9XKixX
SU5ET1cgKik7CmV4dGVybiBpbnQgb3ZlcndyaXRlIChjb25zdCBXSU5ET1cqLFdJTkRPVyAqKTsK
ZXh0ZXJuIGludCBwYWlyX2NvbnRlbnQgKHNob3J0LHNob3J0KixzaG9ydCopOwpleHRlcm4gaW50
IFBBSVJfTlVNQkVSIChpbnQpOwpleHRlcm4gaW50IHBlY2hvY2hhciAoV0lORE9XICosIGNvbnN0
IGNodHlwZSk7CmV4dGVybiBpbnQgcG5vdXRyZWZyZXNoIChXSU5ET1cqLGludCxpbnQsaW50LGlu
dCxpbnQsaW50KTsKZXh0ZXJuIGludCBwcmVmcmVzaCAoV0lORE9XICosaW50LGludCxpbnQsaW50
LGludCxpbnQpOwpleHRlcm4gaW50IHByaW50dyAoIGNoYXIgKiwuLi4pCiAgICAgICAgICAgICAg
ICA7CmV4dGVybiBpbnQgcHV0cCAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwdXR3aW4gKFdJ
TkRPVyAqLCBGSUxFICopOwpleHRlcm4gdm9pZCBxaWZsdXNoICh2b2lkKTsKZXh0ZXJuIGludCBy
YXcgKHZvaWQpOwpleHRlcm4gaW50IHJlZHJhd3dpbiAoV0lORE9XICopOwpleHRlcm4gaW50IHJl
ZnJlc2ggKHZvaWQpOwpleHRlcm4gaW50IHJlc2V0dHkgKHZvaWQpOwpleHRlcm4gaW50IHJlc2V0
X3Byb2dfbW9kZSAodm9pZCk7CmV4dGVybiBpbnQgcmVzZXRfc2hlbGxfbW9kZSAodm9pZCk7CmV4
dGVybiBpbnQgcmlwb2ZmbGluZSAoaW50LCBpbnQgKCopKFdJTkRPVyAqLCBpbnQpKTsKZXh0ZXJu
IGludCBzYXZldHR5ICh2b2lkKTsKZXh0ZXJuIGludCBzY2FudyAoIGNoYXIgKiwuLi4pCiAgICAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChmb3JtYXQoc2NhbmYsMSwyKSkpOwpleHRlcm4gaW50
IHNjcl9kdW1wIChjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHNjcl9pbml0IChjb25zdCBjaGFy
ICopOwpleHRlcm4gaW50IHNjcmwgKGludCk7CmV4dGVybiBpbnQgc2Nyb2xsIChXSU5ET1cgKik7
CmV4dGVybiBpbnQgc2Nyb2xsb2sgKFdJTkRPVyAqLE5DVVJTRVNfQk9PTCk7CmV4dGVybiBpbnQg
c2NyX3Jlc3RvcmUgKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc2NyX3NldCAoY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIGludCBzZXRzY3JyZWcgKGludCxpbnQpOwpleHRlcm4gU0NSRUVOICogc2V0
X3Rlcm0gKFNDUkVFTiAqKTsKZXh0ZXJuIGludCBzbGtfYXR0cm9mZiAoY29uc3QgY2h0eXBlKTsK
ZXh0ZXJuIGludCBzbGtfYXR0cl9vZmYgKGNvbnN0IGF0dHJfdCwgdm9pZCAqKTsKZXh0ZXJuIGlu
dCBzbGtfYXR0cm9uIChjb25zdCBjaHR5cGUpOwpleHRlcm4gaW50IHNsa19hdHRyX29uIChhdHRy
X3Qsdm9pZCopOwpleHRlcm4gaW50IHNsa19hdHRyc2V0IChjb25zdCBjaHR5cGUpOwpleHRlcm4g
YXR0cl90IHNsa19hdHRyICh2b2lkKTsKZXh0ZXJuIGludCBzbGtfYXR0cl9zZXQgKGNvbnN0IGF0
dHJfdCxzaG9ydCx2b2lkKik7CmV4dGVybiBpbnQgc2xrX2NsZWFyICh2b2lkKTsKZXh0ZXJuIGlu
dCBzbGtfY29sb3IgKHNob3J0KTsKZXh0ZXJuIGludCBzbGtfaW5pdCAoaW50KTsKZXh0ZXJuIGNo
YXIgKiBzbGtfbGFiZWwgKGludCk7CmV4dGVybiBpbnQgc2xrX25vdXRyZWZyZXNoICh2b2lkKTsK
ZXh0ZXJuIGludCBzbGtfcmVmcmVzaCAodm9pZCk7CmV4dGVybiBpbnQgc2xrX3Jlc3RvcmUgKHZv
aWQpOwpleHRlcm4gaW50IHNsa19zZXQgKGludCxjb25zdCBjaGFyICosaW50KTsKZXh0ZXJuIGlu
dCBzbGtfdG91Y2ggKHZvaWQpOwpleHRlcm4gaW50IHN0YW5kb3V0ICh2b2lkKTsKZXh0ZXJuIGlu
dCBzdGFuZGVuZCAodm9pZCk7CmV4dGVybiBpbnQgc3RhcnRfY29sb3IgKHZvaWQpOwpleHRlcm4g
V0lORE9XICogc3VicGFkIChXSU5ET1cgKiwgaW50LCBpbnQsIGludCwgaW50KTsKZXh0ZXJuIFdJ
TkRPVyAqIHN1YndpbiAoV0lORE9XICosaW50LGludCxpbnQsaW50KTsKZXh0ZXJuIGludCBzeW5j
b2sgKFdJTkRPVyAqLCBOQ1VSU0VTX0JPT0wpOwpleHRlcm4gY2h0eXBlIHRlcm1hdHRycyAodm9p
ZCk7CmV4dGVybiBjaGFyICogdGVybW5hbWUgKHZvaWQpOwpleHRlcm4gaW50IHRpZ2V0ZmxhZyAo
IGNoYXIgKik7CmV4dGVybiBpbnQgdGlnZXRudW0gKCBjaGFyICopOwpleHRlcm4gY2hhciAqIHRp
Z2V0c3RyICggY2hhciAqKTsKZXh0ZXJuIHZvaWQgdGltZW91dCAoaW50KTsKZXh0ZXJuIGludCB0
b3VjaGxpbmUgKFdJTkRPVyAqLCBpbnQsIGludCk7CmV4dGVybiBpbnQgdG91Y2h3aW4gKFdJTkRP
VyAqKTsKZXh0ZXJuIGNoYXIgKiB0cGFybSAoIGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCB0eXBl
YWhlYWQgKGludCk7CmV4dGVybiBpbnQgdW5nZXRjaCAoaW50KTsKZXh0ZXJuIGludCB1bnRvdWNo
d2luIChXSU5ET1cgKik7CmV4dGVybiB2b2lkIHVzZV9lbnYgKE5DVVJTRVNfQk9PTCk7CmV4dGVy
biBpbnQgdmlkYXR0ciAoY2h0eXBlKTsKZXh0ZXJuIGludCB2aWRwdXRzIChjaHR5cGUsIGludCAo
KikoaW50KSk7CmV4dGVybiBpbnQgdmxpbmUgKGNodHlwZSwgaW50KTsKZXh0ZXJuIGludCB2d3By
aW50dyAoV0lORE9XICosIGNoYXIgKix2YV9saXN0KTsKZXh0ZXJuIGludCB2d19wcmludHcgKFdJ
TkRPVyAqLCBjaGFyICosdmFfbGlzdCk7CmV4dGVybiBpbnQgdndzY2FudyAoV0lORE9XICosIGNo
YXIgKix2YV9saXN0KTsKZXh0ZXJuIGludCB2d19zY2FudyAoV0lORE9XICosIGNoYXIgKix2YV9s
aXN0KTsKZXh0ZXJuIGludCB3YWRkY2ggKFdJTkRPVyAqLCBjb25zdCBjaHR5cGUpOwpleHRlcm4g
aW50IHdhZGRjaG5zdHIgKFdJTkRPVyAqLGNvbnN0IGNodHlwZSAqLGludCk7CmV4dGVybiBpbnQg
d2FkZGNoc3RyIChXSU5ET1cgKixjb25zdCBjaHR5cGUgKik7CmV4dGVybiBpbnQgd2FkZG5zdHIg
KFdJTkRPVyAqLGNvbnN0IGNoYXIgKixpbnQpOwpleHRlcm4gaW50IHdhZGRzdHIgKFdJTkRPVyAq
LGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgd2F0dHJvbiAoV0lORE9XICosIGludCk7CmV4dGVy
biBpbnQgd2F0dHJvZmYgKFdJTkRPVyAqLCBpbnQpOwpleHRlcm4gaW50IHdhdHRyc2V0IChXSU5E
T1cgKiwgaW50KTsKZXh0ZXJuIGludCB3YXR0cl9nZXQgKFdJTkRPVyAqLCBhdHRyX3QgKiwgc2hv
cnQgKiwgdm9pZCAqKTsKZXh0ZXJuIGludCB3YXR0cl9vbiAoV0lORE9XICosIGF0dHJfdCwgdm9p
ZCAqKTsKZXh0ZXJuIGludCB3YXR0cl9vZmYgKFdJTkRPVyAqLCBhdHRyX3QsIHZvaWQgKik7CmV4
dGVybiBpbnQgd2F0dHJfc2V0IChXSU5ET1cgKiwgYXR0cl90LCBzaG9ydCwgdm9pZCAqKTsKZXh0
ZXJuIGludCB3YmtnZCAoV0lORE9XICosIGNodHlwZSk7CmV4dGVybiB2b2lkIHdia2dkc2V0IChX
SU5ET1cgKixjaHR5cGUpOwpleHRlcm4gaW50IHdib3JkZXIgKFdJTkRPVyAqLGNodHlwZSxjaHR5
cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUpOwpleHRlcm4gaW50
IHdjaGdhdCAoV0lORE9XICosIGludCwgYXR0cl90LCBzaG9ydCwgY29uc3Qgdm9pZCAqKTsKZXh0
ZXJuIGludCB3Y2xlYXIgKFdJTkRPVyAqKTsKZXh0ZXJuIGludCB3Y2xydG9ib3QgKFdJTkRPVyAq
KTsKZXh0ZXJuIGludCB3Y2xydG9lb2wgKFdJTkRPVyAqKTsKZXh0ZXJuIGludCB3Y29sb3Jfc2V0
IChXSU5ET1cqLHNob3J0LHZvaWQqKTsKZXh0ZXJuIHZvaWQgd2N1cnN5bmN1cCAoV0lORE9XICop
OwpleHRlcm4gaW50IHdkZWxjaCAoV0lORE9XICopOwpleHRlcm4gaW50IHdkZWxldGVsbiAoV0lO
RE9XICopOwpleHRlcm4gaW50IHdlY2hvY2hhciAoV0lORE9XICosIGNvbnN0IGNodHlwZSk7CmV4
dGVybiBpbnQgd2VyYXNlIChXSU5ET1cgKik7CmV4dGVybiBpbnQgd2dldGNoIChXSU5ET1cgKik7
CmV4dGVybiBpbnQgd2dldG5zdHIgKFdJTkRPVyAqLGNoYXIgKixpbnQpOwpleHRlcm4gaW50IHdn
ZXRzdHIgKFdJTkRPVyAqLCBjaGFyICopOwpleHRlcm4gaW50IHdobGluZSAoV0lORE9XICosIGNo
dHlwZSwgaW50KTsKZXh0ZXJuIGNodHlwZSB3aW5jaCAoV0lORE9XICopOwpleHRlcm4gaW50IHdp
bmNobnN0ciAoV0lORE9XICosIGNodHlwZSAqLCBpbnQpOwpleHRlcm4gaW50IHdpbmNoc3RyIChX
SU5ET1cgKiwgY2h0eXBlICopOwpleHRlcm4gaW50IHdpbm5zdHIgKFdJTkRPVyAqLCBjaGFyICos
IGludCk7CmV4dGVybiBpbnQgd2luc2NoIChXSU5ET1cgKiwgY2h0eXBlKTsKZXh0ZXJuIGludCB3
aW5zZGVsbG4gKFdJTkRPVyAqLGludCk7CmV4dGVybiBpbnQgd2luc2VydGxuIChXSU5ET1cgKik7
CmV4dGVybiBpbnQgd2luc25zdHIgKFdJTkRPVyAqLCBjb25zdCBjaGFyICosaW50KTsKZXh0ZXJu
IGludCB3aW5zc3RyIChXSU5ET1cgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCB3aW5zdHIg
KFdJTkRPVyAqLCBjaGFyICopOwpleHRlcm4gaW50IHdtb3ZlIChXSU5ET1cgKixpbnQsaW50KTsK
ZXh0ZXJuIGludCB3bm91dHJlZnJlc2ggKFdJTkRPVyAqKTsKZXh0ZXJuIGludCB3cHJpbnR3IChX
SU5ET1cgKiwgY2hhciAqLC4uLikKICAgICAgICAgICAgICAgIDsKZXh0ZXJuIGludCB3cmVkcmF3
bG4gKFdJTkRPVyAqLGludCxpbnQpOwpleHRlcm4gaW50IHdyZWZyZXNoIChXSU5ET1cgKik7CmV4
dGVybiBpbnQgd3NjYW53IChXSU5ET1cgKiwgY2hhciAqLC4uLikKICAgICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18oKGZvcm1hdChzY2FuZiwyLDMpKSk7CmV4dGVybiBpbnQgd3NjcmwgKFdJTkRP
VyAqLGludCk7CmV4dGVybiBpbnQgd3NldHNjcnJlZyAoV0lORE9XICosaW50LGludCk7CmV4dGVy
biBpbnQgd3N0YW5kb3V0IChXSU5ET1cgKik7CmV4dGVybiBpbnQgd3N0YW5kZW5kIChXSU5ET1cg
Kik7CmV4dGVybiB2b2lkIHdzeW5jZG93biAoV0lORE9XICopOwpleHRlcm4gdm9pZCB3c3luY3Vw
IChXSU5ET1cgKik7CmV4dGVybiB2b2lkIHd0aW1lb3V0IChXSU5ET1cgKixpbnQpOwpleHRlcm4g
aW50IHd0b3VjaGxuIChXSU5ET1cgKixpbnQsaW50LGludCk7CmV4dGVybiBpbnQgd3ZsaW5lIChX
SU5ET1cgKixjaHR5cGUsaW50KTsKIyAxMTYzICIuLi9pbmNsdWRlL2N1cnNlcy5oIgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgbW1hc2tfdDsKCnR5cGVkZWYgc3RydWN0CnsKICAgIHNob3J0IGlkOwog
ICAgaW50IHgsIHksIHo7CiAgICBtbWFza190IGJzdGF0ZTsKfQpNRVZFTlQ7CgpleHRlcm4gaW50
IGdldG1vdXNlIChNRVZFTlQgKik7CmV4dGVybiBpbnQgdW5nZXRtb3VzZSAoTUVWRU5UICopOwpl
eHRlcm4gbW1hc2tfdCBtb3VzZW1hc2sgKG1tYXNrX3QsIG1tYXNrX3QgKik7CmV4dGVybiBOQ1VS
U0VTX0JPT0wgd2VuY2xvc2UgKGNvbnN0IFdJTkRPVyAqLCBpbnQsIGludCk7CmV4dGVybiBpbnQg
bW91c2VpbnRlcnZhbCAoaW50KTsKZXh0ZXJuIE5DVVJTRVNfQk9PTCB3bW91c2VfdHJhZm8gKGNv
bnN0IFdJTkRPVyogd2luLGludCogeSwgaW50KiB4LCBOQ1VSU0VTX0JPT0wgdG9fc2NyZWVuKTsK
ZXh0ZXJuIE5DVVJTRVNfQk9PTCBtb3VzZV90cmFmbyAoaW50KiwgaW50KiwgTkNVUlNFU19CT09M
KTsKCgoKCgpleHRlcm4gaW50IG1jcHJpbnQgKGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBoYXNf
a2V5IChpbnQpOwoKCgpleHRlcm4gdm9pZCBfdHJhY2VmIChjb25zdCBjaGFyICosIC4uLikgOwpl
eHRlcm4gdm9pZCBfdHJhY2VkdW1wIChjb25zdCBjaGFyICosIFdJTkRPVyAqKTsKZXh0ZXJuIGNo
YXIgKiBfdHJhY2VhdHRyIChhdHRyX3QpOwpleHRlcm4gY2hhciAqIF90cmFjZWF0dHIyIChpbnQs
IGNodHlwZSk7CmV4dGVybiBjaGFyICogX25jX3RyYWNlYml0cyAodm9pZCk7CmV4dGVybiBjaGFy
ICogX3RyYWNlY2hhciAoaW50KTsKZXh0ZXJuIGNoYXIgKiBfdHJhY2VjaHR5cGUgKGNodHlwZSk7
CmV4dGVybiBjaGFyICogX3RyYWNlY2h0eXBlMiAoaW50LCBjaHR5cGUpOwoKCmV4dGVybiBjaGFy
ICogX3RyYWNlY2NoYXJfdCAoY29uc3QgY2NoYXJfdCAqKTsKCmV4dGVybiBjaGFyICogX3RyYWNl
Y2NoYXJfdDIgKGludCwgY29uc3QgY2NoYXJfdCAqKTsKCgoKCmV4dGVybiBjaGFyICogX3RyYWNl
bW91c2UgKGNvbnN0IE1FVkVOVCAqKTsKZXh0ZXJuIHZvaWQgdHJhY2UgKGNvbnN0IHVuc2lnbmVk
IGludCk7CiMgMTA1ICIuLi9wcm9ncy9wcm9ncy5wcml2LmgiIDIKIyAxICIuLi9pbmNsdWRlL3Rl
cm1fZW50cnkuaCIgMQojIDQ3ICIuLi9pbmNsdWRlL3Rlcm1fZW50cnkuaCIKIyAxICIuLi9pbmNs
dWRlL3Rlcm0uaCIgMQojIDgxICIuLi9pbmNsdWRlL3Rlcm0uaCIKIyAxICIvdXNyL2luY2x1ZGUv
dGVybWlvcy5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL3Rlcm1pb3MuaCIgMwoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy90ZXJtaW9zLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy90
ZXJtaW9zLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGNjX3Q7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHNwZWVkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHRjZmxhZ190OwoKCnN0cnVjdCB0ZXJt
aW9zCiAgewogICAgdGNmbGFnX3QgY19pZmxhZzsKICAgIHRjZmxhZ190IGNfb2ZsYWc7CiAgICB0
Y2ZsYWdfdCBjX2NmbGFnOwogICAgdGNmbGFnX3QgY19sZmxhZzsKICAgIGNjX3QgY19saW5lOwog
ICAgY2NfdCBjX2NjWzMyXTsKICAgIHNwZWVkX3QgY19pc3BlZWQ7CiAgICBzcGVlZF90IGNfb3Nw
ZWVkOwogIH07CiMgNDEgIi91c3IvaW5jbHVkZS90ZXJtaW9zLmgiIDIgMwojIDQ5ICIvdXNyL2lu
Y2x1ZGUvdGVybWlvcy5oIiAzCmV4dGVybiBzcGVlZF90IGNmZ2V0b3NwZWVkIChfX2NvbnN0IHN0
cnVjdCB0ZXJtaW9zICpfX3Rlcm1pb3NfcCkgOwoKCmV4dGVybiBzcGVlZF90IGNmZ2V0aXNwZWVk
IChfX2NvbnN0IHN0cnVjdCB0ZXJtaW9zICpfX3Rlcm1pb3NfcCkgOwoKCmV4dGVybiBpbnQgY2Zz
ZXRvc3BlZWQgKHN0cnVjdCB0ZXJtaW9zICpfX3Rlcm1pb3NfcCwgc3BlZWRfdCBfX3NwZWVkKSA7
CgoKZXh0ZXJuIGludCBjZnNldGlzcGVlZCAoc3RydWN0IHRlcm1pb3MgKl9fdGVybWlvc19wLCBz
cGVlZF90IF9fc3BlZWQpIDsKCgoKZXh0ZXJuIGludCBjZnNldHNwZWVkIChzdHJ1Y3QgdGVybWlv
cyAqX190ZXJtaW9zX3AsIHNwZWVkX3QgX19zcGVlZCkgOwoKCgoKZXh0ZXJuIGludCB0Y2dldGF0
dHIgKGludCBfX2ZkLCBzdHJ1Y3QgdGVybWlvcyAqX190ZXJtaW9zX3ApIDsKCgoKZXh0ZXJuIGlu
dCB0Y3NldGF0dHIgKGludCBfX2ZkLCBpbnQgX19vcHRpb25hbF9hY3Rpb25zLAogICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGVybWlvcyAqX190ZXJtaW9zX3ApIDsKCgoKCmV4
dGVybiB2b2lkIGNmbWFrZXJhdyAoc3RydWN0IHRlcm1pb3MgKl9fdGVybWlvc19wKSA7CgoKCmV4
dGVybiBpbnQgdGNzZW5kYnJlYWsgKGludCBfX2ZkLCBpbnQgX19kdXJhdGlvbikgOwoKCmV4dGVy
biBpbnQgdGNkcmFpbiAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB0Y2ZsdXNoIChpbnQgX19m
ZCwgaW50IF9fcXVldWVfc2VsZWN0b3IpIDsKCgoKZXh0ZXJuIGludCB0Y2Zsb3cgKGludCBfX2Zk
LCBpbnQgX19hY3Rpb24pIDsKCgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0c2lkIChpbnQgX19mZCkg
OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R0eWRlZmF1bHRzLmgiIDEgMwojIDEwMyAiL3Vz
ci9pbmNsdWRlL3Rlcm1pb3MuaCIgMiAzCgoKCiMgODIgIi4uL2luY2x1ZGUvdGVybS5oIiAyCiMg
NjczICIuLi9pbmNsdWRlL3Rlcm0uaCIKdHlwZWRlZiBzdHJ1Y3QgdGVybXR5cGUgewogICAgY2hh
ciAqdGVybV9uYW1lczsKICAgIGNoYXIgKnN0cl90YWJsZTsKICAgIGNoYXIgKkJvb2xlYW5zOwog
ICAgc2hvcnQgKk51bWJlcnM7CiAgICBjaGFyICoqU3RyaW5nczsKCgogICAgY2hhciAqZXh0X3N0
cl90YWJsZTsKICAgIGNoYXIgKipleHRfTmFtZXM7CgogICAgdW5zaWduZWQgc2hvcnQgbnVtX0Jv
b2xlYW5zOwogICAgdW5zaWduZWQgc2hvcnQgbnVtX051bWJlcnM7CiAgICB1bnNpZ25lZCBzaG9y
dCBudW1fU3RyaW5nczsKCiAgICB1bnNpZ25lZCBzaG9ydCBleHRfQm9vbGVhbnM7CiAgICB1bnNp
Z25lZCBzaG9ydCBleHRfTnVtYmVyczsKICAgIHVuc2lnbmVkIHNob3J0IGV4dF9TdHJpbmdzOwoK
Cn0gVEVSTVRZUEU7Cgp0eXBlZGVmIHN0cnVjdCB0ZXJtIHsKICAgIFRFUk1UWVBFIHR5cGU7CiAg
ICBzaG9ydCBGaWxlZGVzOwogICAgc3RydWN0IHRlcm1pb3MgT3R0eWIsCiAgICAgICAgICAgICAg
ICBOdHR5YjsKICAgIGludCBfYmF1ZHJhdGU7Cn0gVEVSTUlOQUw7CgpleHRlcm4gVEVSTUlOQUwg
KiBjdXJfdGVybTsKIyA3MjggIi4uL2luY2x1ZGUvdGVybS5oIgpleHRlcm4gY2hhciAqIGNvbnN0
IGJvb2xuYW1lc1tdOwpleHRlcm4gY2hhciAqIGNvbnN0IGJvb2xjb2Rlc1tdOwpleHRlcm4gY2hh
ciAqIGNvbnN0IGJvb2xmbmFtZXNbXTsKZXh0ZXJuIGNoYXIgKiBjb25zdCBudW1uYW1lc1tdOwpl
eHRlcm4gY2hhciAqIGNvbnN0IG51bWNvZGVzW107CmV4dGVybiBjaGFyICogY29uc3QgbnVtZm5h
bWVzW107CmV4dGVybiBjaGFyICogY29uc3Qgc3RybmFtZXNbXTsKZXh0ZXJuIGNoYXIgKiBjb25z
dCBzdHJjb2Rlc1tdOwpleHRlcm4gY2hhciAqIGNvbnN0IHN0cmZuYW1lc1tdOwoKCgoKZXh0ZXJu
IGludCBfbmNfc2V0X3R0eV9tb2RlIChzdHJ1Y3QgdGVybWlvcyAqYnVmKTsKZXh0ZXJuIGludCBf
bmNfZ2V0X3R0eV9tb2RlIChzdHJ1Y3QgdGVybWlvcyAqYnVmKTsKZXh0ZXJuIGludCBfbmNfcmVh
ZF9lbnRyeSAoY29uc3QgY2hhciAqIGNvbnN0LCBjaGFyICogY29uc3QsIFRFUk1UWVBFICpjb25z
dCk7CmV4dGVybiBpbnQgX25jX3JlYWRfZmlsZV9lbnRyeSAoY29uc3QgY2hhciAqY29uc3QsIFRF
Uk1UWVBFICopOwpleHRlcm4gY2hhciAqIF9uY19maXJzdF9uYW1lIChjb25zdCBjaGFyICpjb25z
dCk7CmV4dGVybiBpbnQgX25jX25hbWVfbWF0Y2ggKGNvbnN0IGNoYXIgKmNvbnN0LCBjb25zdCBj
aGFyICpjb25zdCwgY29uc3QgY2hhciAqY29uc3QpOwpleHRlcm4gaW50IF9uY19yZWFkX3Rlcm1j
YXBfZW50cnkgKGNvbnN0IGNoYXIgKmNvbnN0LCBURVJNVFlQRSAqY29uc3QpOwpleHRlcm4gY29u
c3QgVEVSTVRZUEUgKiBfbmNfZmFsbGJhY2sgKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIFRFUk1J
TkFMICogc2V0X2N1cnRlcm0gKFRFUk1JTkFMICopOwpleHRlcm4gaW50IGRlbF9jdXJ0ZXJtIChU
RVJNSU5BTCAqKTsKCgpleHRlcm4gaW50IHJlc3RhcnR0ZXJtICggY2hhciAqLCBpbnQsIGludCAq
KTsKZXh0ZXJuIGludCBzZXR1cHRlcm0gKCBjaGFyICosaW50LGludCAqKTsKIyA3NzAgIi4uL2lu
Y2x1ZGUvdGVybS5oIgpleHRlcm4gY2hhciAqIHRnZXRzdHIgKCBjaGFyICosIGNoYXIgKiopOwpl
eHRlcm4gY2hhciAqIHRnb3RvIChjb25zdCBjaGFyICosIGludCwgaW50KTsKZXh0ZXJuIGludCB0
Z2V0ZW50IChjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdGdldGZsYWcgKCBjaGFy
ICopOwpleHRlcm4gaW50IHRnZXRudW0gKCBjaGFyICopOwpleHRlcm4gaW50IHRwdXRzIChjb25z
dCBjaGFyICosIGludCwgaW50ICgqKShpbnQpKTsKIyA0OCAiLi4vaW5jbHVkZS90ZXJtX2VudHJ5
LmgiIDIKCgoKCnR5cGVkZWYgc3RydWN0IGVudHJ5IHsKICAgICAgICBURVJNVFlQRSB0dGVybTsK
ICAgICAgICBpbnQgbnVzZXM7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICBj
aGFyICpuYW1lOwogICAgICAgICAgICBzdHJ1Y3QgZW50cnkgKmxpbms7CiAgICAgICAgICAgIGxv
bmcgbGluZTsKICAgICAgICB9CiAgICAgICAgdXNlc1szMl07CiAgICAgICAgaW50IG5jcm9zc2xp
bmtzOwogICAgICAgIHN0cnVjdCBlbnRyeSAqY3Jvc3NsaW5rc1sxNl07CiAgICAgICAgbG9uZyBj
c3RhcnQsIGNlbmQ7CiAgICAgICAgbG9uZyBzdGFydGxpbmU7CiAgICAgICAgc3RydWN0IGVudHJ5
ICpuZXh0OwogICAgICAgIHN0cnVjdCBlbnRyeSAqbGFzdDsKfQpFTlRSWTsKIyA5MyAiLi4vaW5j
bHVkZS90ZXJtX2VudHJ5LmgiCmV4dGVybiBFTlRSWSAqIF9uY19oZWFkOwpleHRlcm4gRU5UUlkg
KiBfbmNfdGFpbDsKIyAxMjAgIi4uL2luY2x1ZGUvdGVybV9lbnRyeS5oIgpleHRlcm4gRU5UUlkg
KiBfbmNfY29weV9lbnRyeSAoRU5UUlkgKm9sZHApOwpleHRlcm4gY2hhciAqIF9uY19zYXZlX3N0
ciAoY29uc3QgY2hhciAqY29uc3QpOwpleHRlcm4gdm9pZCBfbmNfaW5pdF9lbnRyeSAoVEVSTVRZ
UEUgKmNvbnN0KTsKZXh0ZXJuIHZvaWQgX25jX21lcmdlX2VudHJ5IChURVJNVFlQRSAqY29uc3Qs
IFRFUk1UWVBFICpjb25zdCk7CmV4dGVybiB2b2lkIF9uY193cmFwX2VudHJ5IChFTlRSWSAqY29u
c3QsIE5DVVJTRVNfQk9PTCk7CgoKZXh0ZXJuIHZvaWQgX25jX2FsaWduX3Rlcm10eXBlIChURVJN
VFlQRSAqLCBURVJNVFlQRSAqKTsKZXh0ZXJuIHZvaWQgX25jX2NvcHlfdGVybXR5cGUgKFRFUk1U
WVBFICosIFRFUk1UWVBFICopOwoKCmV4dGVybiB2b2lkIF9uY19mcmVlX3Rlcm10eXBlIChURVJN
VFlQRSAqKTsKCgpleHRlcm4gdm9pZCBfbmNfaW5pdF9hY3MgKHZvaWQpOwoKCgpleHRlcm4gTkNV
UlNFU19CT09MIF9uY191c2VyX2RlZmluYWJsZTsKZXh0ZXJuIE5DVVJTRVNfQk9PTCBfbmNfZGlz
YWJsZV9wZXJpb2Q7CgpleHRlcm4gaW50IF9uY19wYXJzZV9lbnRyeSAoRU5UUlkgKiwgaW50LCBO
Q1VSU0VTX0JPT0wpOwpleHRlcm4gaW50IF9uY19jYXBjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKCgpleHRlcm4gdm9pZCBfbmNfc2V0X3dyaXRlZGlyIChjaGFyICopOwpleHRlcm4g
dm9pZCBfbmNfd3JpdGVfZW50cnkgKFRFUk1UWVBFICpjb25zdCk7CgoKZXh0ZXJuIHZvaWQgX25j
X3JlYWRfZW50cnlfc291cmNlIChGSUxFKiwgY2hhciosIGludCwgTkNVUlNFU19CT09MLCBOQ1VS
U0VTX0JPT0wgKCopKEVOVFJZKikpOwpleHRlcm4gTkNVUlNFU19CT09MIF9uY19lbnRyeV9tYXRj
aCAoY2hhciAqLCBjaGFyICopOwpleHRlcm4gaW50IF9uY19yZXNvbHZlX3VzZXMgKE5DVVJTRVNf
Qk9PTCk7CmV4dGVybiB2b2lkIF9uY19mcmVlX2VudHJpZXMgKEVOVFJZICopOwpleHRlcm4gdm9p
ZCAoKl9uY19jaGVja190ZXJtdHlwZSkoVEVSTVRZUEUgKik7CgoKZXh0ZXJuIHZvaWQgX25jX3Ry
YWNlX3huYW1lcyAoVEVSTVRZUEUgKik7CiMgMTA2ICIuLi9wcm9ncy9wcm9ncy5wcml2LmgiIDIK
IyAxICIuLi9pbmNsdWRlL3RpYy5oIiAxCiMgMTE5ICIuLi9pbmNsdWRlL3RpYy5oIgpleHRlcm4g
dW5zaWduZWQgX25jX3RyYWNpbmc7CmV4dGVybiB2b2lkIF9uY190cmFjZWYgKGNoYXIgKiwgLi4u
KSA7CmV4dGVybiBjb25zdCBjaGFyICogX25jX3Zpc2J1ZiAoY29uc3QgY2hhciAqKTsKZXh0ZXJu
IGNvbnN0IGNoYXIgKiBfbmNfdmlzYnVmMiAoaW50LCBjb25zdCBjaGFyICopOwojIDE0NiAiLi4v
aW5jbHVkZS90aWMuaCIKc3RydWN0IHRva2VuCnsKICAgICAgICBjaGFyICp0a19uYW1lOwogICAg
ICAgIGludCB0a192YWxudW1iZXI7CiAgICAgICAgY2hhciAqdGtfdmFsc3RyaW5nOwp9OwoKZXh0
ZXJuIHN0cnVjdCB0b2tlbiBfbmNfY3Vycl90b2tlbjsKCgoKCnN0cnVjdCBrbiB7CiAgICAgICAg
Y29uc3QgY2hhciAqbmFtZTsKICAgICAgICBpbnQgY29kZTsKfTsKCmV4dGVybiBjb25zdCBzdHJ1
Y3Qga24gX25jX2tleV9uYW1lc1tdOwoKCgoKCnN0cnVjdCB0aW5mb19ma2V5cyB7CiAgICAgICAg
dW5zaWduZWQgb2Zmc2V0OwogICAgICAgIGNodHlwZSBjb2RlOwogICAgICAgIH07CiMgMTgxICIu
Li9pbmNsdWRlL3RpYy5oIgpleHRlcm4gc3RydWN0IHRpbmZvX2ZrZXlzIF9uY190aW5mb19ma2V5
c1tdOwojIDE5MSAiLi4vaW5jbHVkZS90aWMuaCIKc3RydWN0IG5hbWVfdGFibGVfZW50cnkKewog
ICAgICAgIGNvbnN0IGNoYXIgKm50ZV9uYW1lOwogICAgICAgIGludCBudGVfdHlwZTsKICAgICAg
ICBzaG9ydCBudGVfaW5kZXg7CiAgICAgICAgc2hvcnQgbnRlX2xpbms7Cn07CgpzdHJ1Y3QgYWxp
YXMKewogICAgICAgIGNvbnN0IGNoYXIgKmZyb207CiAgICAgICAgY29uc3QgY2hhciAqdG87CiAg
ICAgICAgY29uc3QgY2hhciAqc291cmNlOwp9OwoKZXh0ZXJuIGludCBfbmNfdHBhcm1fZXJyOwoK
ZXh0ZXJuIGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICogY29uc3QgX25jX2luZm9faGFz
aF90YWJsZVtdOwpleHRlcm4gY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKiBjb25zdCBf
bmNfY2FwX2hhc2hfdGFibGVbXTsKCmV4dGVybiBjb25zdCBzdHJ1Y3QgYWxpYXMgX25jX2NhcGFs
aWFzX3RhYmxlW107CmV4dGVybiBjb25zdCBzdHJ1Y3QgYWxpYXMgX25jX2luZm9hbGlhc190YWJs
ZVtdOwoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICogX25jX2dldF90YWJs
ZSAoTkNVUlNFU19CT09MKTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICog
Y29uc3QgKiBfbmNfZ2V0X2hhc2hfdGFibGUgKE5DVVJTRVNfQk9PTCk7CiMgMjQ0ICIuLi9pbmNs
dWRlL3RpYy5oIgpleHRlcm4gY2hhciAqIF9uY19iYXNlbmFtZSAoY2hhciAqKTsKZXh0ZXJuIGNo
YXIgKiBfbmNfcm9vdG5hbWUgKGNoYXIgKik7CgoKZXh0ZXJuIHN0cnVjdCBuYW1lX3RhYmxlX2Vu
dHJ5IGNvbnN0ICogX25jX2ZpbmRfZW50cnkKICAgICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBz
dHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqY29uc3QgKik7CmV4dGVybiBzdHJ1Y3QgbmFtZV90YWJs
ZV9lbnRyeSBjb25zdCAqIF9uY19maW5kX3R5cGVfZW50cnkKICAgICAgICAoY29uc3QgY2hhciAq
LCBpbnQsIGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICopOwoKCmV4dGVybiBpbnQgX25j
X2dldF90b2tlbiAoTkNVUlNFU19CT09MKTsKZXh0ZXJuIHZvaWQgX25jX3BhbmljX21vZGUgKGNo
YXIpOwpleHRlcm4gdm9pZCBfbmNfcHVzaF90b2tlbiAoaW50KTsKZXh0ZXJuIHZvaWQgX25jX3Jl
c2V0X2lucHV0IChGSUxFICosIGNoYXIgKik7CmV4dGVybiBpbnQgX25jX2N1cnJfY29sOwpleHRl
cm4gaW50IF9uY19jdXJyX2xpbmU7CmV4dGVybiBpbnQgX25jX3N5bnRheDsKZXh0ZXJuIGxvbmcg
X25jX2NvbW1lbnRfZW5kOwpleHRlcm4gbG9uZyBfbmNfY29tbWVudF9zdGFydDsKZXh0ZXJuIGxv
bmcgX25jX2N1cnJfZmlsZV9wb3M7CmV4dGVybiBsb25nIF9uY19zdGFydF9saW5lOwoKCgoKZXh0
ZXJuIHZvaWQgX25jX3NldF9zb3VyY2UgKGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUpOwpleHRlcm4g
dm9pZCBfbmNfZ2V0X3R5cGUgKGNoYXIgKm5hbWUpOwpleHRlcm4gdm9pZCBfbmNfc2V0X3R5cGUg
KGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUpOwpleHRlcm4gdm9pZCBfbmNfc3lzZXJyX2Fib3J0IChj
b25zdCBjaGFyICpjb25zdCwuLi4pIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CmV4dGVybiB2
b2lkIF9uY19lcnJfYWJvcnQgKGNvbnN0IGNoYXIgKmNvbnN0LC4uLikgX19hdHRyaWJ1dGVfXygo
bm9yZXR1cm4pKTsKZXh0ZXJuIHZvaWQgX25jX3dhcm5pbmcgKGNvbnN0IGNoYXIgKmNvbnN0LC4u
LikgOwpleHRlcm4gTkNVUlNFU19CT09MIF9uY19zdXBwcmVzc193YXJuaW5nczsKCgpleHRlcm4g
Y2hhciAqIF9uY190aWNfZXhwYW5kIChjb25zdCBjaGFyICosIE5DVVJTRVNfQk9PTCwgaW50KTsK
CgpleHRlcm4gY2hhciBfbmNfdHJhbnNfc3RyaW5nIChjaGFyICosIGNoYXIgKik7CgoKZXh0ZXJu
IGNoYXIgKiBfbmNfY2FwdG9pbmZvIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50IGNv
bnN0KTsKZXh0ZXJuIGNoYXIgKiBfbmNfaW5mb3RvY2FwIChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgaW50IGNvbnN0KTsKCgpleHRlcm4gaW50IF9uY19udWxsc19zZW50OwoKCmV4dGVybiBj
b25zdCBjaGFyICogX25jX3Byb2duYW1lOwoKCmV4dGVybiBjb25zdCBjaGFyICogX25jX3RpY19k
aXIgKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGludCBfbmNfdGljX3dyaXR0ZW4gKHZvaWQpOwoj
IDEwNyAiLi4vcHJvZ3MvcHJvZ3MucHJpdi5oIiAyCiMgMSAiLi4vaW5jbHVkZS9uY19hbGxvYy5o
IiAxCiMgNzcgIi4uL2luY2x1ZGUvbmNfYWxsb2MuaCIKZXh0ZXJuIHZvaWQgKiBfbmNfZG9hbGxv
Yyh2b2lkICosIHNpemVfdCk7CiMgMTA4ICIuLi9wcm9ncy9wcm9ncy5wcml2LmgiIDIKIyA0MCAi
Li4vcHJvZ3MvaW5mb2NtcC5jIiAyCgoKIyAxICIuLi9wcm9ncy9kdW1wX2VudHJ5LmgiIDEKIyA1
OSAiLi4vcHJvZ3MvZHVtcF9lbnRyeS5oIgpleHRlcm4gY2hhciAqbmFtZXRyYW5zKGNvbnN0IGNo
YXIgKik7CmV4dGVybiB2b2lkIGR1bXBfaW5pdChjb25zdCBjaGFyICosIGludCwgaW50LCBpbnQs
IGludCwgTkNVUlNFU19CT09MKTsKZXh0ZXJuIGludCBmbXRfZW50cnkoVEVSTVRZUEUgKiwgaW50
ICgqKShpbnQsIGludCksIE5DVVJTRVNfQk9PTCwgTkNVUlNFU19CT09MLCBOQ1VSU0VTX0JPT0ws
IGludCk7CmV4dGVybiBpbnQgZHVtcF9lbnRyeShURVJNVFlQRSAqLCBOQ1VSU0VTX0JPT0wsIE5D
VVJTRVNfQk9PTCwgaW50LCBpbnQsIGludCAoKikoaW50LCBpbnQpKTsKZXh0ZXJuIGludCBkdW1w
X3VzZXMoY29uc3QgY2hhciAqLCBOQ1VSU0VTX0JPT0wpOwpleHRlcm4gdm9pZCBjb21wYXJlX2Vu
dHJ5KHZvaWQgKCopKGludCwgaW50LCBjb25zdCBjaGFyICopLCBURVJNVFlQRSAqLCBOQ1VSU0VT
X0JPT0wpOwpleHRlcm4gdm9pZCByZXBhaXJfYWNzYyhURVJNVFlQRSAqIHRwKTsKIyA0MyAiLi4v
cHJvZ3MvaW5mb2NtcC5jIiAyCgpzdGF0aWMgY29uc3QgY2hhciBJZGVudFtdID0gIiRJZDogaW5m
b2NtcC5jLHYgMS42OCAyMDAyLzEwLzA2IDAxOjEzOjA0IHRvbSBFeHAgJCI7CgoKCgoKCgpjb25z
dCBjaGFyICpfbmNfcHJvZ25hbWUgPSAiaW5mb2NtcCI7Cgp0eXBlZGVmIGNoYXIgcGF0aFs0MDk2
XTsKIyA2MyAiLi4vcHJvZ3MvaW5mb2NtcC5jIgpzdGF0aWMgY2hhciAqdG5hbWVbMzJdOwpzdGF0
aWMgRU5UUlkgZW50cmllc1szMl07CnN0YXRpYyBpbnQgdGVybWNvdW50OwoKc3RhdGljIE5DVVJT
RVNfQk9PTCBsaW1pdGVkID0gMTsKc3RhdGljIE5DVVJTRVNfQk9PTCBxdWlldCA9IDA7CnN0YXRp
YyBjb25zdCBjaGFyICpib29sX3NlcCA9ICI6IjsKc3RhdGljIGNvbnN0IGNoYXIgKnNfYWJzZW50
ID0gIk5VTEwiOwpzdGF0aWMgY29uc3QgY2hhciAqc19jYW5jZWwgPSAiTlVMTCI7CnN0YXRpYyBj
b25zdCBjaGFyICp0dmVyc2lvbjsKc3RhdGljIGludCBpdHJhY2U7CnN0YXRpYyBpbnQgbXdpZHRo
ID0gNjA7CnN0YXRpYyBpbnQgbnVtYmVycyA9IDA7CnN0YXRpYyBpbnQgb3V0Zm9ybSA9IDA7CnN0
YXRpYyBpbnQgc29ydG1vZGU7CgoKc3RhdGljIGludCBjb21wYXJlOwoKCgoKCnN0YXRpYyBOQ1VS
U0VTX0JPT0wgaWdub3JlcGFkczsKIyAxMDMgIi4uL3Byb2dzL2luZm9jbXAuYyIKc3RhdGljIGNo
YXIgKgpjYW5vbmljYWxfbmFtZShjaGFyICpwdHIsIGNoYXIgKmJ1ZikKCnsKICAgIGNoYXIgKmJw
OwoKICAgICh2b2lkKSBzdHJjcHkoYnVmLCBwdHIpOwogICAgaWYgKChicCA9IHN0cmNocihidWYs
ICd8JykpICE9IDApCiAgICAgICAgKmJwID0gJ1wwJzsKCiAgICByZXR1cm4gKGJ1Zik7Cn0KCgoK
CgoKCnN0YXRpYyBpbnQKY2FwY21wKGludCBpZHgsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIg
KnQpCgp7CiAgICBpZiAoISgocykgIT0gKGNoYXIgKikoLTEpICYmIChzKSAhPSAoY2hhciAqKTAp
ICYmICEoKHQpICE9IChjaGFyICopKC0xKSAmJiAodCkgIT0gKGNoYXIgKikwKSkKICAgICAgICBy
ZXR1cm4gKHMgIT0gdCk7CiAgICBlbHNlIGlmICghKChzKSAhPSAoY2hhciAqKSgtMSkgJiYgKHMp
ICE9IChjaGFyICopMCkgfHwgISgodCkgIT0gKGNoYXIgKikoLTEpICYmICh0KSAhPSAoY2hhciAq
KTApKQogICAgICAgIHJldHVybiAoMSk7CgogICAgaWYgKChpZHggPT0gMTQ2KSB8fCAhaWdub3Jl
cGFkcykKICAgICAgICByZXR1cm4gKHN0cmNtcChzLCB0KSk7CiAgICBlbHNlCiAgICAgICAgcmV0
dXJuIChfbmNfY2FwY21wKHMsIHQpKTsKfQoKc3RhdGljIGludAp1c2VfcHJlZGljYXRlKGludCB0
eXBlLCBpbnQgaWR4KQoKewogICAgRU5UUlkgKmVwOwoKICAgIHN3aXRjaCAodHlwZSkgewogICAg
Y2FzZSAwOgogICAgICAgIHsKICAgICAgICAgICAgaW50IGlzX3NldCA9IDA7CiMgMTU5ICIuLi9w
cm9ncy9pbmZvY21wLmMiCiAgICAgICAgICAgIGZvciAoZXAgPSAmZW50cmllc1sxXTsgZXAgPCBl
bnRyaWVzICsgdGVybWNvdW50OyBlcCsrKQogICAgICAgICAgICAgICAgaWYgKGVwLT50dGVybS5C
b29sZWFuc1tpZHhdID09IDEpIHsKICAgICAgICAgICAgICAgICAgICBpc19zZXQgPSBlbnRyaWVz
WzBdLnR0ZXJtLkJvb2xlYW5zW2lkeF07CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc19zZXQgIT0gZW50cmllc1swXS50dGVybS5C
b29sZWFuc1tpZHhdKQogICAgICAgICAgICAgICAgcmV0dXJuICghaXNfc2V0KTsKICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuICgtMSk7CiAgICAgICAgfQoKICAgIGNhc2Ug
MToKICAgICAgICB7CiAgICAgICAgICAgIGludCB2YWx1ZSA9ICgtMSk7CgoKCgoKCiAgICAgICAg
ICAgIGZvciAoZXAgPSAmZW50cmllc1sxXTsgZXAgPCBlbnRyaWVzICsgdGVybWNvdW50OyBlcCsr
KQogICAgICAgICAgICAgICAgaWYgKCgoZXAtPnR0ZXJtLk51bWJlcnNbaWR4XSkgPj0gMCkpIHsK
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGVwLT50dGVybS5OdW1iZXJzW2lkeF07CiAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAo
dmFsdWUgIT0gZW50cmllc1swXS50dGVybS5OdW1iZXJzW2lkeF0pCiAgICAgICAgICAgICAgICBy
ZXR1cm4gKHZhbHVlICE9ICgtMSkpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBy
ZXR1cm4gKC0xKTsKICAgICAgICB9CgogICAgY2FzZSAyOgogICAgICAgIHsKICAgICAgICAgICAg
Y2hhciAqdGVybXN0ciwgKnVzZXN0ciA9IChjaGFyICopMDsKCiAgICAgICAgICAgIHRlcm1zdHIg
PSBlbnRyaWVzWzBdLnR0ZXJtLlN0cmluZ3NbaWR4XTsKCgoKCgoKICAgICAgICAgICAgZm9yIChl
cCA9ICZlbnRyaWVzWzFdOyBlcCA8IGVudHJpZXMgKyB0ZXJtY291bnQ7IGVwKyspCiAgICAgICAg
ICAgICAgICBpZiAoZXAtPnR0ZXJtLlN0cmluZ3NbaWR4XSkgewogICAgICAgICAgICAgICAgICAg
IHVzZXN0ciA9IGVwLT50dGVybS5TdHJpbmdzW2lkeF07CiAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodXNlc3RyID09IChjaGFyICop
MCAmJiB0ZXJtc3RyID09IChjaGFyICopMCkKICAgICAgICAgICAgICAgIHJldHVybiAoLTEpOwog
ICAgICAgICAgICBlbHNlIGlmICghdXNlc3RyIHx8ICF0ZXJtc3RyIHx8IGNhcGNtcChpZHgsIHVz
ZXN0ciwgdGVybXN0cikpCiAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICByZXR1cm4gKC0xKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0
dXJuICgwKTsKfQoKc3RhdGljIE5DVVJTRVNfQk9PTAp1c2VlcShFTlRSWSAqIGUxLCBFTlRSWSAq
IGUyKQoKewogICAgaW50IGksIGo7CgogICAgaWYgKGUxLT5udXNlcyAhPSBlMi0+bnVzZXMpCiAg
ICAgICAgcmV0dXJuICgwKTsKCgogICAgZm9yIChpID0gMDsgaSA8IGUxLT5udXNlczsgaSsrKSB7
CiAgICAgICAgTkNVUlNFU19CT09MIGZvdW5kbWF0Y2ggPSAwOwoKCiAgICAgICAgZm9yIChqID0g
MDsgaiA8IGUyLT5udXNlczsgaisrKQogICAgICAgICAgICBpZiAoIXN0cmNtcChlMS0+dXNlc1tp
XS5uYW1lLCBlMi0+dXNlc1tqXS5uYW1lKSkgewogICAgICAgICAgICAgICAgZm91bmRtYXRjaCA9
IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICBpZiAoIWZv
dW5kbWF0Y2gpCiAgICAgICAgICAgIHJldHVybiAoMCk7CiAgICB9CgogICAgcmV0dXJuICgxKTsK
fQoKc3RhdGljIE5DVVJTRVNfQk9PTAplbnRyeWVxKFRFUk1UWVBFICogdDEsIFRFUk1UWVBFICog
dDIpCgp7CiAgICBpbnQgaTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgKHQxKS0+bnVtX0Jvb2xlYW5z
OyBpKyspCiAgICAgICAgaWYgKHQxLT5Cb29sZWFuc1tpXSAhPSB0Mi0+Qm9vbGVhbnNbaV0pCiAg
ICAgICAgICAgIHJldHVybiAoMCk7CgogICAgZm9yIChpID0gMDsgaSA8ICh0MSktPm51bV9OdW1i
ZXJzOyBpKyspCiAgICAgICAgaWYgKHQxLT5OdW1iZXJzW2ldICE9IHQyLT5OdW1iZXJzW2ldKQog
ICAgICAgICAgICByZXR1cm4gKDApOwoKICAgIGZvciAoaSA9IDA7IGkgPCAodDEpLT5udW1fU3Ry
aW5nczsgaSsrKQogICAgICAgIGlmIChjYXBjbXAoaSwgdDEtPlN0cmluZ3NbaV0sIHQyLT5TdHJp
bmdzW2ldKSkKICAgICAgICAgICAgcmV0dXJuICgwKTsKCiAgICByZXR1cm4gKDEpOwp9CgoKCnN0
YXRpYyB2b2lkCnByaW50X3VzZXMoRU5UUlkgKiBlcCwgRklMRSAqIGZwKQoKewogICAgaW50IGk7
CgogICAgaWYgKCFlcC0+bnVzZXMpCiAgICAgICAgZnB1dHMoIk5VTEwiLCBmcCk7CiAgICBlbHNl
CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGVwLT5udXNlczsgaSsrKSB7CiAgICAgICAgICAgIGZw
dXRzKGVwLT51c2VzW2ldLm5hbWUsIGZwKTsKICAgICAgICAgICAgaWYgKGkgPCBlcC0+bnVzZXMg
LSAxKQogICAgICAgICAgICAgICAgZnB1dHMoIiAiLCBmcCk7CiAgICAgICAgfQp9CgpzdGF0aWMg
Y29uc3QgY2hhciAqCmR1bXBfYm9vbGVhbihpbnQgdmFsKQoKewogICAgc3dpdGNoICh2YWwpIHsK
ICAgIGNhc2UgKC0xKToKICAgICAgICByZXR1cm4gKHNfYWJzZW50KTsKICAgIGNhc2UgKGNoYXIp
KC0yKToKICAgICAgICByZXR1cm4gKHNfY2FuY2VsKTsKICAgIGNhc2UgMDoKICAgICAgICByZXR1
cm4gKCJGIik7CiAgICBjYXNlIDE6CiAgICAgICAgcmV0dXJuICgiVCIpOwogICAgZGVmYXVsdDoK
ICAgICAgICByZXR1cm4gKCI/Iik7CiAgICB9Cn0KCnN0YXRpYyB2b2lkCmR1bXBfbnVtZXJpYyhp
bnQgdmFsLCBjaGFyICpidWYpCgp7CiAgICBzd2l0Y2ggKHZhbCkgewogICAgY2FzZSAoLTEpOgog
ICAgICAgIHN0cmNweShidWYsIHNfYWJzZW50KTsKICAgICAgICBicmVhazsKICAgIGNhc2UgKC0y
KToKICAgICAgICBzdHJjcHkoYnVmLCBzX2NhbmNlbCk7CiAgICAgICAgYnJlYWs7CiAgICBkZWZh
dWx0OgogICAgICAgIHNwcmludGYoYnVmLCAiJWQiLCB2YWwpOwogICAgICAgIGJyZWFrOwogICAg
fQp9CgpzdGF0aWMgdm9pZApkdW1wX3N0cmluZyhjaGFyICp2YWwsIGNoYXIgKmJ1ZikKCnsKICAg
IGlmICh2YWwgPT0gKGNoYXIgKikwKQogICAgICAgIHN0cmNweShidWYsIHNfYWJzZW50KTsKICAg
IGVsc2UgaWYgKHZhbCA9PSAoY2hhciAqKSgtMSkpCiAgICAgICAgc3RyY3B5KGJ1Ziwgc19jYW5j
ZWwpOwogICAgZWxzZSB7CiAgICAgICAgc3ByaW50ZihidWYsICInJS4qcyciLCAxMDI0IC0gMywg
X25jX3RpY19leHBhbmQodmFsLCBvdXRmb3JtPT0wLCBudW1iZXJzKSk7CiAgICB9Cn0KCnN0YXRp
YyB2b2lkCmNvbXBhcmVfcHJlZGljYXRlKGludCB0eXBlLCBpbnQgaWR4LCBjb25zdCBjaGFyICpu
YW1lKQoKewogICAgcmVnaXN0ZXIgRU5UUlkgKmUxID0gJmVudHJpZXNbMF07CiAgICByZWdpc3Rl
ciBFTlRSWSAqZTIgPSAmZW50cmllc1sxXTsKICAgIGNoYXIgYnVmMVsxMDI0XSwgYnVmMlsxMDI0
XTsKICAgIGludCBiMSwgYjI7CiAgICBpbnQgbjEsIG4yOwogICAgY2hhciAqczEsICpzMjsKCiAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgIGNhc2UgMDoKICAgICAgICBiMSA9IGUxLT50dGVybS5Cb29s
ZWFuc1tpZHhdOwogICAgICAgIGIyID0gZTItPnR0ZXJtLkJvb2xlYW5zW2lkeF07CiAgICAgICAg
c3dpdGNoIChjb21wYXJlKSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBpZiAoIShiMSA9
PSAoLTEpICYmIGIyID09ICgtMSkpICYmIGIxICE9IGIyKQogICAgICAgICAgICAgICAgKHZvaWQp
IGZwcmludGYgKHN0ZG91dCwgIlx0JXM6ICVzJXMlcy5cbiIsIG5hbWUsIGR1bXBfYm9vbGVhbihi
MSksIGJvb2xfc2VwLCBkdW1wX2Jvb2xlYW4oYjIpKTsKCgoKCiAgICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIGlmIChiMSA9PSBiMiAmJiBiMSAhPSAoLTEpKQog
ICAgICAgICAgICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIlx0JXM9ICVzLlxuIiwgbmFt
ZSwgZHVtcF9ib29sZWFuKGIxKSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDM6
CiAgICAgICAgICAgIGlmIChiMSA9PSAoLTEpICYmIGIyID09ICgtMSkpCiAgICAgICAgICAgICAg
ICAodm9pZCkgZnByaW50ZiAoc3Rkb3V0LCAiXHQhJXMuXG4iLCBuYW1lKTsKICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMToKICAgICAgICBuMSA9
IGUxLT50dGVybS5OdW1iZXJzW2lkeF07CiAgICAgICAgbjIgPSBlMi0+dHRlcm0uTnVtYmVyc1tp
ZHhdOwogICAgICAgIGR1bXBfbnVtZXJpYyhuMSwgYnVmMSk7CiAgICAgICAgZHVtcF9udW1lcmlj
KG4yLCBidWYyKTsKICAgICAgICBzd2l0Y2ggKGNvbXBhcmUpIHsKICAgICAgICBjYXNlIDE6CiAg
ICAgICAgICAgIGlmICghKChuMSA9PSAoLTEpICYmIG4yID09ICgtMSkpKSAmJiBuMSAhPSBuMikK
ICAgICAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJcdCVzOiAlcywgJXMuXG4i
LCBuYW1lLCBidWYxLCBidWYyKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMjoK
ICAgICAgICAgICAgaWYgKG4xICE9ICgtMSkgJiYgbjIgIT0gKC0xKSAmJiBuMSA9PSBuMikKICAg
ICAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJcdCVzPSAlcy5cbiIsIG5hbWUs
IGJ1ZjEpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAzOgogICAgICAgICAgICBp
ZiAobjEgPT0gKC0xKSAmJiBuMiA9PSAoLTEpKQogICAgICAgICAgICAgICAgKHZvaWQpIGZwcmlu
dGYgKHN0ZG91dCwgIlx0ISVzLlxuIiwgbmFtZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IH0KICAgICAgICBicmVhazsKCiAgICBjYXNlIDI6CiAgICAgICAgczEgPSBlMS0+dHRlcm0uU3Ry
aW5nc1tpZHhdOwogICAgICAgIHMyID0gZTItPnR0ZXJtLlN0cmluZ3NbaWR4XTsKICAgICAgICBz
d2l0Y2ggKGNvbXBhcmUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGlmIChjYXBjbXAo
aWR4LCBzMSwgczIpKSB7CiAgICAgICAgICAgICAgICBkdW1wX3N0cmluZyhzMSwgYnVmMSk7CiAg
ICAgICAgICAgICAgICBkdW1wX3N0cmluZyhzMiwgYnVmMik7CiAgICAgICAgICAgICAgICBpZiAo
c3RyY21wKGJ1ZjEsIGJ1ZjIpKQogICAgICAgICAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmIChz
dGRvdXQsICJcdCVzOiAlcywgJXMuXG4iLCBuYW1lLCBidWYxLCBidWYyKTsKICAgICAgICAgICAg
fQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBpZiAoczEg
JiYgczIgJiYgIWNhcGNtcChpZHgsIHMxLCBzMikpCiAgICAgICAgICAgICAgICAodm9pZCkgZnBy
aW50ZiAoc3Rkb3V0LCAiXHQlcz0gJyVzJy5cbiIsIG5hbWUsIF9uY190aWNfZXhwYW5kKHMxLCBv
dXRmb3JtPT0wLCBudW1iZXJzKSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDM6
CiAgICAgICAgICAgIGlmICghczEgJiYgIXMyKQogICAgICAgICAgICAgICAgKHZvaWQpIGZwcmlu
dGYgKHN0ZG91dCwgIlx0ISVzLlxuIiwgbmFtZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IH0KICAgICAgICBicmVhazsKCiAgICBjYXNlIDM6CgogICAgICAgIHN3aXRjaCAoY29tcGFyZSkg
ewogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgaWYgKCF1c2VlcShlMSwgZTIpKSB7CiAgICAg
ICAgICAgICAgICAodm9pZCkgZnB1dHMoIlx0dXNlOiAiLCBzdGRvdXQpOwogICAgICAgICAgICAg
ICAgcHJpbnRfdXNlcyhlMSwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgIGZwdXRzKCIsICIsIHN0
ZG91dCk7CiAgICAgICAgICAgICAgICBwcmludF91c2VzKGUyLCBzdGRvdXQpOwogICAgICAgICAg
ICAgICAgZnB1dHMoIi5cbiIsIHN0ZG91dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgaWYgKGUxLT5udXNlcyAmJiBlMi0+bnVz
ZXMgJiYgdXNlZXEoZTEsIGUyKSkgewogICAgICAgICAgICAgICAgKHZvaWQpIGZwdXRzKCJcdHVz
ZTogIiwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgIHByaW50X3VzZXMoZTEsIHN0ZG91dCk7CiAg
ICAgICAgICAgICAgICBmcHV0cygiLlxuIiwgc3Rkb3V0KTsKICAgICAgICAgICAgfQogICAgICAg
ICAgICBicmVhazsKCiAgICAgICAgY2FzZSAzOgogICAgICAgICAgICBpZiAoIWUxLT5udXNlcyAm
JiAhZTItPm51c2VzKQogICAgICAgICAgICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIlx0
IXVzZS5cbiIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0KCgoKCgoKCnR5
cGVkZWYgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIgKmZyb207CiAgICBjb25zdCBjaGFyICp0bzsK
fSBhc3NvYzsKCnN0YXRpYyBjb25zdCBhc3NvYyBzdGRfY2Fwc1tdID0KewoKICAgIHsiXDAzM2Mi
LCAiUklTIn0sCiAgICB7IlwwMzM3IiwgIlNDIn0sCiAgICB7IlwwMzM4IiwgIlJDIn0sCiAgICB7
IlwwMzNbciIsICJSU1IifSwKICAgIHsiXDAzM1ttIiwgIlNHUjAifSwKICAgIHsiXDAzM1sySiIs
ICJFRDIifSwKCgogICAgeyJcMDMzKDAiLCAiSVNPIERFQyBHMCJ9LAogICAgeyJcMDMzKEEiLCAi
SVNPIFVLIEcwIn0sCiAgICB7IlwwMzMoQiIsICJJU08gVVMgRzAifSwKICAgIHsiXDAzMykwIiwg
IklTTyBERUMgRzEifSwKICAgIHsiXDAzMylBIiwgIklTTyBVSyBHMSJ9LAogICAgeyJcMDMzKUIi
LCAiSVNPIFVTIEcxIn0sCgoKICAgIHsiXDAzMz0iLCAiREVDUEFNIn0sCiAgICB7IlwwMzM+Iiwg
IkRFQ1BOTSJ9LAogICAgeyJcMDMzPCIsICJERUNBTlNJIn0sCgogICAgeyhjaGFyICopIDAsIChj
aGFyICopIDB9Cn07CgpzdGF0aWMgY29uc3QgYXNzb2MgcHJpdmF0ZV9tb2Rlc1tdID0KCnsKICAg
IHsiMSIsICJDS00ifSwKICAgIHsiMiIsICJBTk0ifSwKICAgIHsiMyIsICJDT0xNIn0sCiAgICB7
IjQiLCAiU0NMTSJ9LAogICAgeyI1IiwgIlNDTk0ifSwKICAgIHsiNiIsICJPTSJ9LAogICAgeyI3
IiwgIkFXTSJ9LAogICAgeyI4IiwgIkFSTSJ9LAogICAgeyhjaGFyICopIDAsIChjaGFyICopIDB9
Cn07CgpzdGF0aWMgY29uc3QgYXNzb2MgZWNtYV9oaWdobGlnaHRzW10gPQoKewogICAgeyIwIiwg
Ik5PUk1BTCJ9LAogICAgeyIxIiwgIitCT0xEIn0sCiAgICB7IjIiLCAiK0RJTSJ9LAogICAgeyIz
IiwgIitJVEFMSUMifSwKICAgIHsiNCIsICIrVU5ERVJMSU5FIn0sCiAgICB7IjUiLCAiK0JMSU5L
In0sCiAgICB7IjYiLCAiK0ZBU1RCTElOSyJ9LAogICAgeyI3IiwgIitSRVZFUlNFIn0sCiAgICB7
IjgiLCAiK0lOVklTSUJMRSJ9LAogICAgeyI5IiwgIitERUxFVEVEIn0sCiAgICB7IjEwIiwgIk1B
SU4tRk9OVCJ9LAogICAgeyIxMSIsICJBTFQtRk9OVC0xIn0sCiAgICB7IjEyIiwgIkFMVC1GT05U
LTIifSwKICAgIHsiMTMiLCAiQUxULUZPTlQtMyJ9LAogICAgeyIxNCIsICJBTFQtRk9OVC00In0s
CiAgICB7IjE1IiwgIkFMVC1GT05ULTUifSwKICAgIHsiMTYiLCAiQUxULUZPTlQtNiJ9LAogICAg
eyIxNyIsICJBTFQtRk9OVC03In0sCiAgICB7IjE4IiwgIkFMVC1GT05ULTEifSwKICAgIHsiMTki
LCAiQUxULUZPTlQtMSJ9LAogICAgeyIyMCIsICJGUkFLVFVSIn0sCiAgICB7IjIxIiwgIkRPVUJM
RVVOREVSIn0sCiAgICB7IjIyIiwgIi1ESU0ifSwKICAgIHsiMjMiLCAiLUlUQUxJQyJ9LAogICAg
eyIyNCIsICItVU5ERVJMSU5FIn0sCiAgICB7IjI1IiwgIi1CTElOSyJ9LAogICAgeyIyNiIsICIt
RkFTVEJMSU5LIn0sCiAgICB7IjI3IiwgIi1SRVZFUlNFIn0sCiAgICB7IjI4IiwgIi1JTlZJU0lC
TEUifSwKICAgIHsiMjkiLCAiLURFTEVURUQifSwKICAgIHsoY2hhciAqKSAwLCAoY2hhciAqKSAw
fQp9OwoKc3RhdGljIHZvaWQKYW5hbHl6ZV9zdHJpbmcoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg
Y2hhciAqY2FwLCBURVJNVFlQRSAqIHRwKQp7CiAgICBjaGFyIGJ1Zls0MDk2XTsKICAgIGNoYXIg
YnVmMls0MDk2XTsKICAgIGNvbnN0IGNoYXIgKnNwLCAqZXA7CiAgICBjb25zdCBhc3NvYyAqYXA7
CgogICAgaWYgKGNhcCA9PSAoY2hhciAqKTAgfHwgY2FwID09IChjaGFyICopKC0xKSkKICAgICAg
ICByZXR1cm47CiAgICAodm9pZCkgZnByaW50ZiAoc3Rkb3V0LCAiJXM6ICIsIG5hbWUpOwoKICAg
IGJ1ZlswXSA9ICdcMCc7CiAgICBmb3IgKHNwID0gY2FwOyAqc3A7IHNwKyspIHsKICAgICAgICBp
bnQgaTsKICAgICAgICBzaXplX3QgbGVuID0gMDsKICAgICAgICBjb25zdCBjaGFyICpleHBhbnNp
b24gPSAwOwoKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IDQxNDsgaSsrKSB7CiAgICAgICAgICAg
IGNoYXIgKmNwID0gdHAtPlN0cmluZ3NbaV07CgoKICAgICAgICAgICAgaWYgKHN0cm5hbWVzW2ld
WzBdID09ICdrJyAmJiBzdHJuYW1lc1tpXVswXSA9PSAnZicpCiAgICAgICAgICAgICAgICBjb250
aW51ZTsKCiAgICAgICAgICAgIGlmIChjcCAhPSAoY2hhciAqKTAgJiYgY3AgIT0gKGNoYXIgKiko
LTEpICYmIGNwWzBdICYmIGNwCiAgICAgICAgICAgICAgICAhPSBjYXApIHsKICAgICAgICAgICAg
ICAgIGxlbiA9IHN0cmxlbihjcCk7CiAgICAgICAgICAgICAgICAodm9pZCkgc3RybmNweShidWYy
LCBzcCwgbGVuKTsKICAgICAgICAgICAgICAgIGJ1ZjJbbGVuXSA9ICdcMCc7CgogICAgICAgICAg
ICAgICAgaWYgKF9uY19jYXBjbXAoY3AsIGJ1ZjIpKQogICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwojIDU3OCAiLi4vcHJvZ3MvaW5mb2NtcC5jIgogICAgICAgICAgICAgICAgaWYgKCghc3Ry
bmNtcCgobmFtZSksICJpcyIsIDIpIHx8ICFzdHJuY21wKChuYW1lKSwgInJzIiwgMikpIHx8ICgh
c3RybmNtcCgoc3RybmFtZXNbaV0pLCAiaXMiLCAyKSB8fCAhc3RybmNtcCgoc3RybmFtZXNbaV0p
LCAicnMiLCAyKSkpCiAgICAgICAgICAgICAgICAgICAgaWYgKGNhcCA8IGNwKQogICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKCgogICAgICAgICAgICAgICAgZXhwYW5zaW9uID0gc3Ry
bmFtZXNbaV07CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0K
CgogICAgICAgIGlmICghZXhwYW5zaW9uKQogICAgICAgICAgICBmb3IgKGFwID0gc3RkX2NhcHM7
IGFwLT5mcm9tOyBhcCsrKSB7CiAgICAgICAgICAgICAgICBsZW4gPSBzdHJsZW4oYXAtPmZyb20p
OwoKICAgICAgICAgICAgICAgIGlmIChzdHJuY21wKGFwLT5mcm9tLCBzcCwgbGVuKSA9PSAwKSB7
CiAgICAgICAgICAgICAgICAgICAgZXhwYW5zaW9uID0gYXAtPnRvOwogICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgoKICAgICAgICBpZiAo
IWV4cGFuc2lvbgogICAgICAgICAgICAmJiBzcFswXSA9PSAnXDAzMycgJiYgc3BbMV0gPT0gJ1sn
ICYmIHNwWzJdID09ICc/JwogICAgICAgICAgICAmJiAobGVuID0gc3Ryc3BuKHNwICsgMywgIjAx
MjM0NTY3ODk7IikpCiAgICAgICAgICAgICYmICgoc3BbMyArIGxlbl0gPT0gJ2gnKSB8fCAoc3Bb
MyArIGxlbl0gPT0gJ2wnKSkpIHsKICAgICAgICAgICAgY2hhciBidWYzWzQwOTZdOwoKICAgICAg
ICAgICAgKHZvaWQpIHN0cmNweShidWYyLCAoc3BbMyArIGxlbl0gPT0gJ2gnKSA/ICJERUMrIiA6
ICJERUMtIik7CiAgICAgICAgICAgICh2b2lkKSBzdHJuY3B5KGJ1ZjMsIHNwICsgMywgbGVuKTsK
ICAgICAgICAgICAgbGVuICs9IDQ7CiAgICAgICAgICAgIGJ1ZjNbbGVuXSA9ICdcMCc7CgogICAg
ICAgICAgICBlcCA9IHN0cnRvayhidWYzLCAiOyIpOwogICAgICAgICAgICBkbyB7CiAgICAgICAg
ICAgICAgICBOQ1VSU0VTX0JPT0wgZm91bmQgPSAwOwoKICAgICAgICAgICAgICAgIGZvciAoYXAg
PSBwcml2YXRlX21vZGVzOyBhcC0+ZnJvbTsgYXArKykgewogICAgICAgICAgICAgICAgICAgIHNp
emVfdCB0bGVuID0gc3RybGVuKGFwLT5mcm9tKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0
cm5jbXAoYXAtPmZyb20sIGVwLCB0bGVuKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICh2b2lkKSBzdHJjYXQoYnVmMiwgYXAtPnRvKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm91
bmQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKICAgICAg
ICAgICAgICAgICAgICAodm9pZCkgc3RyY2F0KGJ1ZjIsIGVwKTsKICAgICAgICAgICAgICAgICh2
b2lkKSBzdHJjYXQoYnVmMiwgIjsiKTsKICAgICAgICAgICAgfSB3aGlsZQogICAgICAgICAgICAg
ICAgKChlcCA9IHN0cnRvaygoY2hhciAqKSAwLCAiOyIpKSk7CiAgICAgICAgICAgIGJ1ZjJbc3Ry
bGVuKGJ1ZjIpIC0gMV0gPSAnXDAnOwogICAgICAgICAgICBleHBhbnNpb24gPSBidWYyOwogICAg
ICAgIH0KCgogICAgICAgIGlmICghZXhwYW5zaW9uCiAgICAgICAgICAgICYmIHNwWzBdID09ICdc
MDMzJyAmJiBzcFsxXSA9PSAnWycKICAgICAgICAgICAgJiYgKGxlbiA9IHN0cnNwbihzcCArIDIs
ICIwMTIzNDU2Nzg5OyIpKQogICAgICAgICAgICAmJiBzcFsyICsgbGVuXSA9PSAnbScpIHsKICAg
ICAgICAgICAgY2hhciBidWYzWzQwOTZdOwoKICAgICAgICAgICAgKHZvaWQpIHN0cmNweShidWYy
LCAiU0dSOiIpOwogICAgICAgICAgICAodm9pZCkgc3RybmNweShidWYzLCBzcCArIDIsIGxlbik7
CiAgICAgICAgICAgIGxlbiArPSAzOwogICAgICAgICAgICBidWYzW2xlbl0gPSAnXDAnOwoKICAg
ICAgICAgICAgZXAgPSBzdHJ0b2soYnVmMywgIjsiKTsKICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgTkNVUlNFU19CT09MIGZvdW5kID0gMDsKCiAgICAgICAgICAgICAgICBmb3IgKGFw
ID0gZWNtYV9oaWdobGlnaHRzOyBhcC0+ZnJvbTsgYXArKykgewogICAgICAgICAgICAgICAgICAg
IHNpemVfdCB0bGVuID0gc3RybGVuKGFwLT5mcm9tKTsKCiAgICAgICAgICAgICAgICAgICAgaWYg
KHN0cm5jbXAoYXAtPmZyb20sIGVwLCB0bGVuKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICh2b2lkKSBzdHJjYXQoYnVmMiwgYXAtPnRvKTsKICAgICAgICAgICAgICAgICAgICAgICAg
Zm91bmQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKICAg
ICAgICAgICAgICAgICAgICAodm9pZCkgc3RyY2F0KGJ1ZjIsIGVwKTsKICAgICAgICAgICAgICAg
ICh2b2lkKSBzdHJjYXQoYnVmMiwgIjsiKTsKICAgICAgICAgICAgfSB3aGlsZQogICAgICAgICAg
ICAgICAgKChlcCA9IHN0cnRvaygoY2hhciAqKSAwLCAiOyIpKSk7CgogICAgICAgICAgICBidWYy
W3N0cmxlbihidWYyKSAtIDFdID0gJ1wwJzsKICAgICAgICAgICAgZXhwYW5zaW9uID0gYnVmMjsK
ICAgICAgICB9CgogICAgICAgIGlmICghZXhwYW5zaW9uKSB7CiAgICAgICAgICAgICh2b2lkKSBz
cHJpbnRmKGJ1ZjIsICJcMDMzWzE7JWRyIiwgdHAtPk51bWJlcnNbMl0pOwogICAgICAgICAgICBs
ZW4gPSBzdHJsZW4oYnVmMik7CiAgICAgICAgICAgIGlmIChzdHJuY21wKGJ1ZjIsIHNwLCBsZW4p
ID09IDApCiAgICAgICAgICAgICAgICBleHBhbnNpb24gPSAiUlNSIjsKICAgICAgICB9CgoKICAg
ICAgICBpZiAoIWV4cGFuc2lvbikgewogICAgICAgICAgICAodm9pZCkgc3ByaW50ZihidWYyLCAi
XDAzM1slZDsxSCIsIHRwLT5OdW1iZXJzWzJdKTsKICAgICAgICAgICAgbGVuID0gc3RybGVuKGJ1
ZjIpOwogICAgICAgICAgICBpZiAoc3RybmNtcChidWYyLCBzcCwgbGVuKSA9PSAwKQogICAgICAg
ICAgICAgICAgZXhwYW5zaW9uID0gIkxMIjsKICAgICAgICB9CgoKICAgICAgICBpZiAoZXhwYW5z
aW9uKSB7CiAgICAgICAgICAgICh2b2lkKSBzcHJpbnRmKGJ1ZiArIHN0cmxlbihidWYpLCAieyVz
fSIsIGV4cGFuc2lvbik7CiAgICAgICAgICAgIHNwICs9IGxlbiAtIDE7CiAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICBidWYyWzBdID0gKnNwOwogICAg
ICAgICAgICBidWYyWzFdID0gJ1wwJzsKICAgICAgICAgICAgKHZvaWQpIHN0cmNhdChidWYsIF9u
Y190aWNfZXhwYW5kKGJ1ZjIsIG91dGZvcm09PTAsIG51bWJlcnMpKTsKICAgICAgICB9CiAgICB9
CiAgICAodm9pZCkgZnByaW50ZiAoc3Rkb3V0LCAiJXNcbiIsIGJ1Zik7Cn0KCgoKCgoKCnN0YXRp
YyB2b2lkCmZpbGVfY29tcGFyaXNvbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CgoKICAgIGlu
dCBmaWxlY291bnQgPSAwOwogICAgRU5UUlkgKmhlYWRzWzJdOwogICAgRU5UUlkgKnFwLCAqcnA7
CiAgICBpbnQgaSwgbjsKCiAgICBkdW1wX2luaXQoKGNoYXIgKikgMCwgNCwgMiwgMCwgaXRyYWNl
LCAwKTsKCiAgICBmb3IgKG4gPSAwOyBuIDwgYXJnYyAmJiBuIDwgMjsgbisrKSB7CiAgICAgICAg
aWYgKGZyZW9wZW4oYXJndltuXSwgInIiLCBzdGRpbikgPT0gMCkKICAgICAgICAgICAgX25jX2Vy
cl9hYm9ydCgiQ2FuJ3Qgb3BlbiAlcyIsIGFyZ3Zbbl0pOwoKICAgICAgICBfbmNfaGVhZCA9IF9u
Y190YWlsID0gMDsKCgogICAgICAgIF9uY19zZXRfc291cmNlKGFyZ3Zbbl0pOwogICAgICAgIF9u
Y19yZWFkX2VudHJ5X3NvdXJjZShzdGRpbiwgKCh2b2lkICopMCksIDEsIDAsIChOQ1VSU0VTX0JP
T0woKikoRU5UUlkgKikpMCk7CgogICAgICAgIGlmIChpdHJhY2UpCiAgICAgICAgICAgICh2b2lk
KSBmcHJpbnRmKHN0ZGVyciwgIlJlc29sdmluZyBmaWxlICVkLi4uXG4iLCBuIC0gMCk7CgoKICAg
ICAgICBpZiAoIV9uY19yZXNvbHZlX3VzZXMoIWxpbWl0ZWQpKSB7CiAgICAgICAgICAgICh2b2lk
KSBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZXJlIGFyZSB1
bnJlc29sdmVkIHVzZSBlbnRyaWVzIGluICVzOlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJndltuXSk7CiAgICAgICAgICAgIGZvciAocXAgPSBfbmNfaGVhZDsgcXA7IHFwID0gcXAt
Pm5leHQpIHsKICAgICAgICAgICAgICAgIGlmIChxcC0+bnVzZXMpIHsKICAgICAgICAgICAgICAg
ICAgICAodm9pZCkgZnB1dHMocXAtPnR0ZXJtLnRlcm1fbmFtZXMsIHN0ZGVycik7CiAgICAgICAg
ICAgICAgICAgICAgKHZvaWQpIGZwdXRjKCdcbicsIHN0ZGVycik7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICB9CgogICAgICAgIGhl
YWRzW2ZpbGVjb3VudF0gPSBfbmNfaGVhZDsKICAgICAgICBmaWxlY291bnQrKzsKICAgIH0KCgog
ICAgaWYgKGl0cmFjZSkKICAgICAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsICJFbnRyaWVzIGFy
ZSBub3cgaW4gY29yZS4uLlxuIik7CgoKICAgIGZvciAocXAgPSBoZWFkc1swXTsgcXA7IHFwID0g
cXAtPm5leHQpIHsKICAgICAgICBmb3IgKHJwID0gaGVhZHNbMV07IHJwOyBycCA9IHJwLT5uZXh0
KQogICAgICAgICAgICBpZiAoX25jX2VudHJ5X21hdGNoKHFwLT50dGVybS50ZXJtX25hbWVzLCBy
cC0+dHRlcm0udGVybV9uYW1lcykpIHsKICAgICAgICAgICAgICAgIGlmIChxcC0+bmNyb3NzbGlu
a3MgPCAxNikKICAgICAgICAgICAgICAgICAgICBxcC0+Y3Jvc3NsaW5rc1txcC0+bmNyb3NzbGlu
a3NdID0gcnA7CiAgICAgICAgICAgICAgICBxcC0+bmNyb3NzbGlua3MrKzsKCiAgICAgICAgICAg
ICAgICBpZiAocnAtPm5jcm9zc2xpbmtzIDwgMTYpCiAgICAgICAgICAgICAgICAgICAgcnAtPmNy
b3NzbGlua3NbcnAtPm5jcm9zc2xpbmtzXSA9IHFwOwogICAgICAgICAgICAgICAgcnAtPm5jcm9z
c2xpbmtzKys7CiAgICAgICAgICAgIH0KICAgIH0KCgogICAgaWYgKGl0cmFjZSkKICAgICAgICAo
dm9pZCkgZnByaW50ZihzdGRlcnIsICJOYW1lIG1hdGNoZXMgYXJlIGRvbmUuLi5cbiIpOwoKICAg
IGZvciAocXAgPSBoZWFkc1swXTsgcXA7IHFwID0gcXAtPm5leHQpIHsKICAgICAgICBpZiAocXAt
Pm5jcm9zc2xpbmtzID4gMSkgewogICAgICAgICAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBpbiBmaWxlIDEgKCVzKSBoYXMgJWQgbWF0Y2hl
cyBpbiBmaWxlIDIgKCVzKTpcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uY19maXJz
dF9uYW1lKHFwLT50dGVybS50ZXJtX25hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJndlswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcXAtPm5jcm9zc2xpbmtzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmd2WzFdKTsKICAgICAgICAgICAgZm9yIChpID0gMDsg
aSA8IHFwLT5uY3Jvc3NsaW5rczsgaSsrKQogICAgICAgICAgICAgICAgKHZvaWQpIGZwcmludGYo
c3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx0JXNcbiIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfbmNfZmlyc3RfbmFtZSgocXAtPmNyb3NzbGlua3NbaV0p
LT50dGVybS50ZXJtX25hbWVzKSk7CiAgICAgICAgfQogICAgfQoKICAgIGZvciAocnAgPSBoZWFk
c1sxXTsgcnA7IHJwID0gcnAtPm5leHQpIHsKICAgICAgICBpZiAocnAtPm5jcm9zc2xpbmtzID4g
MSkgewogICAgICAgICAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIlcyBpbiBmaWxlIDIgKCVzKSBoYXMgJWQgbWF0Y2hlcyBpbiBmaWxlIDEgKCVz
KTpcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uY19maXJzdF9uYW1lKHJwLT50dGVy
bS50ZXJtX25hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndlsxXSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnAtPm5jcm9zc2xpbmtzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmd2WzBdKTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJwLT5uY3Jvc3Ns
aW5rczsgaSsrKQogICAgICAgICAgICAgICAgKHZvaWQpIGZwcmludGYoc3RkZXJyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlx0JXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfbmNfZmlyc3RfbmFtZSgocnAtPmNyb3NzbGlua3NbaV0pLT50dGVybS50ZXJtX25h
bWVzKSk7CiAgICAgICAgfQogICAgfQoKICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJJbiBm
aWxlIDEgKCVzKSBvbmx5OlxuIiwgYXJndlswXSk7CiAgICBmb3IgKHFwID0gaGVhZHNbMF07IHFw
OyBxcCA9IHFwLT5uZXh0KQogICAgICAgIGlmIChxcC0+bmNyb3NzbGlua3MgPT0gMCkKICAgICAg
ICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIlx0JXNcbiIsIF9uY19maXJzdF9uYW1lKHFw
LT50dGVybS50ZXJtX25hbWVzKSk7CgoKICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJJbiBm
aWxlIDIgKCVzKSBvbmx5OlxuIiwgYXJndlsxXSk7CiAgICBmb3IgKHJwID0gaGVhZHNbMV07IHJw
OyBycCA9IHJwLT5uZXh0KQogICAgICAgIGlmIChycC0+bmNyb3NzbGlua3MgPT0gMCkKICAgICAg
ICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIlx0JXNcbiIsIF9uY19maXJzdF9uYW1lKHJw
LT50dGVybS50ZXJtX25hbWVzKSk7CgoKICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJUaGUg
Zm9sbG93aW5nIGVudHJpZXMgYXJlIGVxdWl2YWxlbnQ6XG4iKTsKICAgIGZvciAocXAgPSBoZWFk
c1swXTsgcXA7IHFwID0gcXAtPm5leHQpIHsKICAgICAgICBycCA9IHFwLT5jcm9zc2xpbmtzWzBd
OwoKICAgICAgICBpZiAocXAtPm5jcm9zc2xpbmtzID09IDEpIHsKICAgICAgICAgICAgcnAgPSBx
cC0+Y3Jvc3NsaW5rc1swXTsKCiAgICAgICAgICAgIHJlcGFpcl9hY3NjKCZxcC0+dHRlcm0pOwog
ICAgICAgICAgICByZXBhaXJfYWNzYygmcnAtPnR0ZXJtKTsKCiAgICAgICAgICAgIF9uY19hbGln
bl90ZXJtdHlwZSgmcXAtPnR0ZXJtLCAmcnAtPnR0ZXJtKTsKCiAgICAgICAgICAgIGlmIChlbnRy
eWVxKCZxcC0+dHRlcm0sICZycC0+dHRlcm0pICYmIHVzZWVxKHFwLCBycCkpIHsKICAgICAgICAg
ICAgICAgIGNoYXIgbmFtZTFbMjU2XSwgbmFtZTJbMjU2XTsKCiAgICAgICAgICAgICAgICAodm9p
ZCkgY2Fub25pY2FsX25hbWUocXAtPnR0ZXJtLnRlcm1fbmFtZXMsIG5hbWUxKTsKICAgICAgICAg
ICAgICAgICh2b2lkKSBjYW5vbmljYWxfbmFtZShycC0+dHRlcm0udGVybV9uYW1lcywgbmFtZTIp
OwoKICAgICAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICIlcyA9ICVzXG4iLCBu
YW1lMSwgbmFtZTIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICh2b2lkKSBm
cHJpbnRmIChzdGRvdXQsICJEaWZmZXJpbmcgZW50cmllczpcbiIpOwogICAgdGVybWNvdW50ID0g
MjsKICAgIGZvciAocXAgPSBoZWFkc1swXTsgcXA7IHFwID0gcXAtPm5leHQpIHsKCiAgICAgICAg
aWYgKHFwLT5uY3Jvc3NsaW5rcyA9PSAxKSB7CiAgICAgICAgICAgIHJwID0gcXAtPmNyb3NzbGlu
a3NbMF07CgoKICAgICAgICAgICAgX25jX2FsaWduX3Rlcm10eXBlKCZxcC0+dHRlcm0sICZycC0+
dHRlcm0pOwoKICAgICAgICAgICAgaWYgKCEoZW50cnllcSgmcXAtPnR0ZXJtLCAmcnAtPnR0ZXJt
KSAmJiB1c2VlcShxcCwgcnApKSkgewogICAgICAgICAgICAgICAgY2hhciBuYW1lMVsyNTZdLCBu
YW1lMlsyNTZdOwoKICAgICAgICAgICAgICAgIGVudHJpZXNbMF0gPSAqcXA7CiAgICAgICAgICAg
ICAgICBlbnRyaWVzWzFdID0gKnJwOwoKICAgICAgICAgICAgICAgICh2b2lkKSBjYW5vbmljYWxf
bmFtZShxcC0+dHRlcm0udGVybV9uYW1lcywgbmFtZTEpOwogICAgICAgICAgICAgICAgKHZvaWQp
IGNhbm9uaWNhbF9uYW1lKHJwLT50dGVybS50ZXJtX25hbWVzLCBuYW1lMik7CgogICAgICAgICAg
ICAgICAgc3dpdGNoIChjb21wYXJlKSB7CiAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAg
ICAgICAgICAgICAgaWYgKGl0cmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGZw
cmludGYoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5m
b2NtcDogZHVtcGluZyBkaWZmZXJlbmNlc1xuIik7CiAgICAgICAgICAgICAgICAgICAgKHZvaWQp
IGZwcmludGYgKHN0ZG91dCwgImNvbXBhcmluZyAlcyB0byAlcy5cbiIsIG5hbWUxLCBuYW1lMik7
CiAgICAgICAgICAgICAgICAgICAgY29tcGFyZV9lbnRyeShjb21wYXJlX3ByZWRpY2F0ZSwgJmVu
dHJpZXMtPnR0ZXJtLCBxdWlldCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg
ICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgIGlmIChpdHJhY2UpCiAgICAgICAg
ICAgICAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImluZm9jbXA6IGR1bXBpbmcgY29tbW9uIGNhcGFiaWxpdGll
c1xuIik7CiAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgImNvbXBh
cmluZyAlcyB0byAlcy5cbiIsIG5hbWUxLCBuYW1lMik7CiAgICAgICAgICAgICAgICAgICAgY29t
cGFyZV9lbnRyeShjb21wYXJlX3ByZWRpY2F0ZSwgJmVudHJpZXMtPnR0ZXJtLCBxdWlldCk7CiAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAg
ICAgICAgICAgICAgIGlmIChpdHJhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBm
cHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlu
Zm9jbXA6IGR1bXBpbmcgZGlmZmVyZW5jZXNcbiIpOwogICAgICAgICAgICAgICAgICAgICh2b2lk
KSBmcHJpbnRmIChzdGRvdXQsICJjb21wYXJpbmcgJXMgdG8gJXMuXG4iLCBuYW1lMSwgbmFtZTIp
OwogICAgICAgICAgICAgICAgICAgIGNvbXBhcmVfZW50cnkoY29tcGFyZV9wcmVkaWNhdGUsICZl
bnRyaWVzLT50dGVybSwgcXVpZXQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKc3RhdGljIHZvaWQK
dXNhZ2Uodm9pZCkKewogICAgc3RhdGljIGNvbnN0IGNoYXIgKnRibFtdID0KICAgIHsKICAgICAg
ICAiVXNhZ2U6IGluZm9jbXAgW29wdGlvbnNdIFstQSBkaXJlY3RvcnldIFstQiBkaXJlY3Rvcnld
IFt0ZXJtbmFtZS4uLl0iCiAgICAgICAgLCIiCiAgICAgICAgLCJPcHRpb25zOiIKICAgICAgICAs
IiAgLTEgICAgcHJpbnQgc2luZ2xlLWNvbHVtbiIKICAgICAgICAsIiAgLUMgICAgdXNlIHRlcm1j
YXAtbmFtZXMiCiAgICAgICAgLCIgIC1GICAgIGNvbXBhcmUgdGVybWluZm8tZmlsZXMiCiAgICAg
ICAgLCIgIC1JICAgIHVzZSB0ZXJtaW5mby1uYW1lcyIKICAgICAgICAsIiAgLUwgICAgdXNlIGxv
bmcgbmFtZXMiCiAgICAgICAgLCIgIC1SIHN1YnNldCAoc2VlIG1hbnBhZ2UpIgogICAgICAgICwi
ICAtVCAgICBlbGltaW5hdGUgc2l6ZSBsaW1pdHMgKHRlc3QpIgogICAgICAgICwiICAtViAgICBw
cmludCB2ZXJzaW9uIgoKICAgICAgICAsIiAgLWEgICAgd2l0aCAtRiwgbGlzdCBjb21tZW50ZWQt
b3V0IGNhcHMiCgogICAgICAgICwiICAtYyAgICBsaXN0IGNvbW1vbiBjYXBhYmlsaXRpZXMiCiAg
ICAgICAgLCIgIC1kICAgIGxpc3QgZGlmZmVyZW50IGNhcGFiaWxpdGllcyIKICAgICAgICAsIiAg
LWUgICAgZm9ybWF0IG91dHB1dCBmb3IgQyBpbml0aWFsaXplciIKICAgICAgICAsIiAgLUUgICAg
Zm9ybWF0IG91dHB1dCBhcyBDIHRhYmxlcyIKICAgICAgICAsIiAgLWYgICAgd2l0aCAtMSwgZm9y
bWF0IGNvbXBsZXggc3RyaW5ncyIKICAgICAgICAsIiAgLUcgICAgZm9ybWF0ICV7bnVtYmVyfSB0
byAlJ2NoYXInIgogICAgICAgICwiICAtZyAgICBmb3JtYXQgJSdjaGFyJyB0byAle251bWJlcn0i
CiAgICAgICAgLCIgIC1pICAgIGFuYWx5emUgaW5pdGlhbGl6YXRpb24vcmVzZXQiCiAgICAgICAg
LCIgIC1sICAgIG91dHB1dCB0ZXJtaW5mbyBuYW1lcyIKICAgICAgICAsIiAgLW4gICAgbGlzdCBj
YXBhYmlsaXRpZXMgaW4gbmVpdGhlciIKICAgICAgICAsIiAgLXAgICAgaWdub3JlIHBhZGRpbmcg
c3BlY2lmaWVycyIKICAgICAgICAsIiAgLXEgICAgYnJpZWYgbGlzdGluZywgcmVtb3ZlcyBoZWFk
ZXJzIgogICAgICAgICwiICAtciAgICB3aXRoIC1DLCBvdXRwdXQgaW4gdGVybWNhcCBmb3JtIgog
ICAgICAgICwiICAtciAgICB3aXRoIC1GLCByZXNvbHZlIHVzZS1yZWZlcmVuY2VzIgogICAgICAg
ICwiICAtcyBbZHxpfGx8Y10gc29ydCBmaWVsZHMiCgogICAgICAgICwiICAtdCAgICBzdXBwcmVz
cyBjb21tZW50ZWQtb3V0IGNhcGFiaWxpdGllcyIKCiAgICAgICAgLCIgIC11ICAgIHByb2R1Y2Ug
c291cmNlIHdpdGggJ3VzZT0nIgogICAgICAgICwiICAtdiBudW1iZXIgICh2ZXJib3NlKSIKICAg
ICAgICAsIiAgLXcgbnVtYmVyICAod2lkdGgpIgogICAgfTsKICAgIGNvbnN0IHNpemVfdCBmaXJz
dCA9IDM7CiAgICBjb25zdCBzaXplX3QgbGFzdCA9IChzaXplb2YodGJsKS9zaXplb2YodGJsWzBd
KSk7CiAgICBjb25zdCBzaXplX3QgbGVmdCA9IChsYXN0IC0gZmlyc3QgKyAxKSAvIDIgKyBmaXJz
dDsKICAgIHNpemVfdCBuOwoKICAgIGZvciAobiA9IDA7IG4gPCBsZWZ0OyBuKyspIHsKICAgICAg
ICBzaXplX3QgbSA9IChuIDwgZmlyc3QpID8gbGFzdCA6IG4gKyBsZWZ0IC0gZmlyc3Q7CiAgICAg
ICAgaWYgKG0gPCBsYXN0KQogICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiUtNDAuNDBzJXNc
biIsIHRibFtuXSwgdGJsW21dKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiJXNcbiIsIHRibFtuXSk7CiAgICB9CiAgICBleGl0KDEpOwp9CgpzdGF0aWMgY2hhciAq
CmFueV9pbml0aWFsaXplcihjb25zdCBjaGFyICpmbXQsIGNvbnN0IGNoYXIgKnR5cGUpCnsKICAg
IHN0YXRpYyBjaGFyICppbml0aWFsaXplcjsKICAgIGNoYXIgKnM7CgogICAgaWYgKGluaXRpYWxp
emVyID09IDApCiAgICAgICAgaW5pdGlhbGl6ZXIgPSAoY2hhciAqKSBtYWxsb2Moc3RybGVuKGVu
dHJpZXMtPnR0ZXJtLnRlcm1fbmFtZXMpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJsZW4odHlwZSkgKyBzdHJsZW4oZm10KSk7CgogICAgKHZvaWQpIHN0cmNweShp
bml0aWFsaXplciwgZW50cmllcy0+dHRlcm0udGVybV9uYW1lcyk7CiAgICBmb3IgKHMgPSBpbml0
aWFsaXplcjsgKnMgIT0gMCAmJiAqcyAhPSAnfCc7IHMrKykgewogICAgICAgIGlmICghKF9fY3R5
cGVfYlsoaW50KSAoKCgodW5zaWduZWQgY2hhcikoKnMpKSkpXSAmICh1bnNpZ25lZCBzaG9ydCBp
bnQpIF9JU2FsbnVtKSkKICAgICAgICAgICAgKnMgPSAnXyc7CiAgICB9CiAgICAqcyA9IDA7CiAg
ICAodm9pZCkgc3ByaW50ZihzLCBmbXQsIHR5cGUpOwogICAgcmV0dXJuIGluaXRpYWxpemVyOwp9
CgpzdGF0aWMgY2hhciAqCm5hbWVfaW5pdGlhbGl6ZXIoY29uc3QgY2hhciAqdHlwZSkKewogICAg
cmV0dXJuIGFueV9pbml0aWFsaXplcigiXyVzX2RhdGEiLCB0eXBlKTsKfQoKc3RhdGljIGNoYXIg
KgpzdHJpbmdfdmFyaWFibGUoY29uc3QgY2hhciAqdHlwZSkKewogICAgcmV0dXJuIGFueV9pbml0
aWFsaXplcigiX3NfJXMiLCB0eXBlKTsKfQoKCnN0YXRpYyB2b2lkCmR1bXBfaW5pdGlhbGl6ZXJz
KFRFUk1UWVBFICogdGVybSkKewogICAgaW50IG47CiAgICBpbnQgc2l6ZTsKICAgIGNvbnN0IGNo
YXIgKnN0ciA9IDA7CgogICAgZnByaW50ZiAoc3Rkb3V0LCAiXG5zdGF0aWMgY2hhciAlc1tdID0g
XCIlc1wiO1xuXG4iLCBuYW1lX2luaXRpYWxpemVyKCJhbGlhcyIpLCBlbnRyaWVzLT50dGVybS50
ZXJtX25hbWVzKTsKCgogICAgZm9yKG4gPSAwOyBuIDwgKHRlcm0pLT5udW1fU3RyaW5nczsgbisr
KSB7CiAgICAgICAgY2hhciBidWZbMTAyNF0sICpzcCwgKnRwOwoKICAgICAgICBpZiAoKCh0ZXJt
LT5TdHJpbmdzW25dKSAhPSAoY2hhciAqKSgtMSkgJiYgKHRlcm0tPlN0cmluZ3Nbbl0pICE9IChj
aGFyICopMCkpIHsKICAgICAgICAgICAgdHAgPSBidWY7CiAgICAgICAgICAgICp0cCsrID0gJyIn
OwogICAgICAgICAgICBmb3IgKHNwID0gdGVybS0+U3RyaW5nc1tuXTsKICAgICAgICAgICAgICAg
ICAqc3AgIT0gMCAmJiAodHAgLSBidWYpIDwgMTAyNCAtIDY7CiAgICAgICAgICAgICAgICAgc3Ar
KykgewogICAgICAgICAgICAgICAgaWYgKCgoKCgodW5zaWduZWQgY2hhcikoKnNwKSkpICYgfjB4
N2YpID09IDApCiAgICAgICAgICAgICAgICAgICAgJiYgKF9fY3R5cGVfYlsoaW50KSAoKCgodW5z
aWduZWQgY2hhcikoKnNwKSkpKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSBfSVNwcmludCkKICAg
ICAgICAgICAgICAgICAgICAmJiAqc3AgIT0gJ1xcJwogICAgICAgICAgICAgICAgICAgICYmICpz
cCAhPSAnIicpCiAgICAgICAgICAgICAgICAgICAgKnRwKysgPSAqc3A7CiAgICAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAodm9pZCkgc3ByaW50Zih0cCwgIlxcJTAzbyIs
ICgodW5zaWduZWQgY2hhcikoKnNwKSkpOwogICAgICAgICAgICAgICAgICAgIHRwICs9IDQ7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgKnRwKysgPSAnIic7CiAg
ICAgICAgICAgICp0cCA9ICdcMCc7CiAgICAgICAgICAgIHNpemUgKz0gKHN0cmxlbih0ZXJtLT5T
dHJpbmdzW25dKSArIDEpOwogICAgICAgICAgICAodm9pZCkgZnByaW50ZiAoc3Rkb3V0LCAic3Rh
dGljIGNoYXIgJS0yMHNbXSA9ICVzO1xuIiwgc3RyaW5nX3ZhcmlhYmxlKChuID49IDQxNCkgPyB0
ZXJtLT5leHRfTmFtZXNbKG4gLSAodGVybS0+bnVtX1N0cmluZ3MgLSB0ZXJtLT5leHRfU3RyaW5n
cykpICsgKHRlcm0tPmV4dF9OdW1iZXJzICsgdGVybS0+ZXh0X0Jvb2xlYW5zKV0gOiBzdHJuYW1l
c1tuXSksIGJ1Zik7CgogICAgICAgIH0KICAgIH0KICAgIGZwcmludGYgKHN0ZG91dCwgIlxuIik7
CgogICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgInN0YXRpYyBjaGFyICVzW10gPSAlc1xuIiwg
bmFtZV9pbml0aWFsaXplcigiYm9vbCIpLCAieyIpOwoKICAgIGZvcihuID0gMDsgbiA8ICh0ZXJt
KS0+bnVtX0Jvb2xlYW5zOyBuKyspIHsKICAgICAgICBzd2l0Y2ggKChpbnQpICh0ZXJtLT5Cb29s
ZWFuc1tuXSkpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHN0ciA9ICJUUlVFIjsKICAg
ICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgc3RyID0gIkZBTFNF
IjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgKC0xKToKICAgICAgICAgICAgc3Ry
ID0gIkFCU0VOVF9CT09MRUFOIjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgKGNo
YXIpKC0yKToKICAgICAgICAgICAgc3RyID0gIkNBTkNFTExFRF9CT09MRUFOIjsKICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJcdC8q
ICUzZDogJS04cyAqL1x0JXMsXG4iLCBuLCAobiA+PSA0NCkgPyB0ZXJtLT5leHRfTmFtZXNbKG4g
LSAodGVybS0+bnVtX0Jvb2xlYW5zIC0gdGVybS0+ZXh0X0Jvb2xlYW5zKSldIDogYm9vbG5hbWVz
W25dLCBzdHIpOwoKICAgIH0KICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICIlcztcbiIsICJ9
Iik7CgogICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgInN0YXRpYyBzaG9ydCAlc1tdID0gJXNc
biIsIG5hbWVfaW5pdGlhbGl6ZXIoIm51bWJlciIpLCAieyIpOwoKICAgIGZvcihuID0gMDsgbiA8
ICh0ZXJtKS0+bnVtX051bWJlcnM7IG4rKykgewogICAgICAgIGNoYXIgYnVmWzgxOTJdOwogICAg
ICAgIHN3aXRjaCAodGVybS0+TnVtYmVyc1tuXSkgewogICAgICAgIGNhc2UgKC0xKToKICAgICAg
ICAgICAgc3RyID0gIkFCU0VOVF9OVU1FUklDIjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
Y2FzZSAoLTIpOgogICAgICAgICAgICBzdHIgPSAiQ0FOQ0VMTEVEX05VTUVSSUMiOwogICAgICAg
ICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBzcHJpbnRmKGJ1ZiwgIiVk
IiwgdGVybS0+TnVtYmVyc1tuXSk7CiAgICAgICAgICAgIHN0ciA9IGJ1ZjsKICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQogICAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJcdC8qICUz
ZDogJS04cyAqL1x0JXMsXG4iLCBuLCAobiA+PSAzOSkgPyB0ZXJtLT5leHRfTmFtZXNbKG4gLSAo
dGVybS0+bnVtX051bWJlcnMgLSB0ZXJtLT5leHRfTnVtYmVycykpICsgdGVybS0+ZXh0X0Jvb2xl
YW5zXSA6IG51bW5hbWVzW25dLCBzdHIpOwoKICAgIH0KICAgICh2b2lkKSBmcHJpbnRmIChzdGRv
dXQsICIlcztcbiIsICJ9Iik7CgogICAgc2l6ZSA9IHNpemVvZihURVJNVFlQRSkKICAgICAgICAr
ICgodGVybSktPm51bV9Cb29sZWFucyAqIHNpemVvZih0ZXJtLT5Cb29sZWFuc1swXSkpCiAgICAg
ICAgKyAoKHRlcm0pLT5udW1fTnVtYmVycyAqIHNpemVvZih0ZXJtLT5OdW1iZXJzWzBdKSk7Cgog
ICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgInN0YXRpYyBjaGFyICogJXNbXSA9ICVzXG4iLCBu
YW1lX2luaXRpYWxpemVyKCJzdHJpbmciKSwgInsiKTsKCiAgICBmb3IobiA9IDA7IG4gPCAodGVy
bSktPm51bV9TdHJpbmdzOyBuKyspIHsKCiAgICAgICAgaWYgKHRlcm0tPlN0cmluZ3Nbbl0gPT0g
KGNoYXIgKikwKQogICAgICAgICAgICBzdHIgPSAiQUJTRU5UX1NUUklORyI7CiAgICAgICAgZWxz
ZSBpZiAodGVybS0+U3RyaW5nc1tuXSA9PSAoY2hhciAqKSgtMSkpCiAgICAgICAgICAgIHN0ciA9
ICJDQU5DRUxMRURfU1RSSU5HIjsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgc3RyID0gc3Ry
aW5nX3ZhcmlhYmxlKChuID49IDQxNCkgPyB0ZXJtLT5leHRfTmFtZXNbKG4gLSAodGVybS0+bnVt
X1N0cmluZ3MgLSB0ZXJtLT5leHRfU3RyaW5ncykpICsgKHRlcm0tPmV4dF9OdW1iZXJzICsgdGVy
bS0+ZXh0X0Jvb2xlYW5zKV0gOiBzdHJuYW1lc1tuXSk7CiAgICAgICAgfQogICAgICAgICh2b2lk
KSBmcHJpbnRmIChzdGRvdXQsICJcdC8qICUzZDogJS04cyAqL1x0JXMsXG4iLCBuLCAobiA+PSA0
MTQpID8gdGVybS0+ZXh0X05hbWVzWyhuIC0gKHRlcm0tPm51bV9TdHJpbmdzIC0gdGVybS0+ZXh0
X1N0cmluZ3MpKSArICh0ZXJtLT5leHRfTnVtYmVycyArIHRlcm0tPmV4dF9Cb29sZWFucyldIDog
c3RybmFtZXNbbl0sIHN0cik7CgogICAgfQogICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIiVz
O1xuIiwgIn0iKTsKCgogICAgaWYgKCgodGVybSktPm51bV9Cb29sZWFucyAhPSA0NCkKICAgICAg
ICB8fCAoKHRlcm0pLT5udW1fTnVtYmVycyAhPSAzOSkKICAgICAgICB8fCAoKHRlcm0pLT5udW1f
U3RyaW5ncyAhPSA0MTQpKSB7CiAgICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgInN0YXRp
YyBjaGFyICogJXNbXSA9ICVzXG4iLCBuYW1lX2luaXRpYWxpemVyKCJzdHJpbmdfZXh0IiksICJ7
Iik7CgogICAgICAgIGZvciAobiA9IDQ0OyBuIDwgKHRlcm0pLT5udW1fQm9vbGVhbnM7ICsrbikg
ewogICAgICAgICAgICAodm9pZCkgZnByaW50ZiAoc3Rkb3V0LCAiXHQvKiAlM2Q6IGJvb2wgKi9c
dFwiJXNcIixcbiIsIG4sIChuID49IDQ0KSA/IHRlcm0tPmV4dF9OYW1lc1sobiAtICh0ZXJtLT5u
dW1fQm9vbGVhbnMgLSB0ZXJtLT5leHRfQm9vbGVhbnMpKV0gOiBib29sbmFtZXNbbl0pOwoKICAg
ICAgICB9CiAgICAgICAgZm9yIChuID0gMzk7IG4gPCAodGVybSktPm51bV9OdW1iZXJzOyArK24p
IHsKICAgICAgICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIlx0LyogJTNkOiBudW0gKi9c
dFwiJXNcIixcbiIsIG4sIChuID49IDM5KSA/IHRlcm0tPmV4dF9OYW1lc1sobiAtICh0ZXJtLT5u
dW1fTnVtYmVycyAtIHRlcm0tPmV4dF9OdW1iZXJzKSkgKyB0ZXJtLT5leHRfQm9vbGVhbnNdIDog
bnVtbmFtZXNbbl0pOwoKICAgICAgICB9CiAgICAgICAgZm9yIChuID0gNDE0OyBuIDwgKHRlcm0p
LT5udW1fU3RyaW5nczsgKytuKSB7CiAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQs
ICJcdC8qICUzZDogc3RyICovXHRcIiVzXCIsXG4iLCBuLCAobiA+PSA0MTQpID8gdGVybS0+ZXh0
X05hbWVzWyhuIC0gKHRlcm0tPm51bV9TdHJpbmdzIC0gdGVybS0+ZXh0X1N0cmluZ3MpKSArICh0
ZXJtLT5leHRfTnVtYmVycyArIHRlcm0tPmV4dF9Cb29sZWFucyldIDogc3RybmFtZXNbbl0pOwoK
ICAgICAgICB9CiAgICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIiVzO1xuIiwgIn0iKTsK
ICAgIH0KCn0KCgpzdGF0aWMgdm9pZApkdW1wX3Rlcm10eXBlKFRFUk1UWVBFICogdGVybSkKewog
ICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIlx0JXNcblx0XHQlcyxcbiIsICJ7IiwgbmFtZV9p
bml0aWFsaXplcigiYWxpYXMiKSk7CiAgICAodm9pZCkgZnByaW50ZiAoc3Rkb3V0LCAiXHRcdChj
aGFyICopMCxcdC8qIHBvaW50ZXIgdG8gc3RyaW5nIHRhYmxlICovXG4iKTsKCiAgICAodm9pZCkg
ZnByaW50ZiAoc3Rkb3V0LCAiXHRcdCVzLFxuIiwgbmFtZV9pbml0aWFsaXplcigiYm9vbCIpKTsK
ICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJcdFx0JXMsXG4iLCBuYW1lX2luaXRpYWxpemVy
KCJudW1iZXIiKSk7CgogICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIlx0XHQlcyxcbiIsIG5h
bWVfaW5pdGlhbGl6ZXIoInN0cmluZyIpKTsKCgogICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwg
IiNpZiBOQ1VSU0VTX1hOQU1FU1xuIik7CiAgICAodm9pZCkgZnByaW50ZiAoc3Rkb3V0LCAiXHRc
dChjaGFyICopMCxcdC8qIHBvaW50ZXIgdG8gZXh0ZW5kZWQgc3RyaW5nIHRhYmxlICovXG4iKTsK
ICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJcdFx0JXMsXHQvKiAuLi5jb3JyZXNwb25kaW5n
IG5hbWVzICovXG4iLCAoKCh0ZXJtKS0+bnVtX0Jvb2xlYW5zICE9IDQ0KSB8fCAoKHRlcm0pLT5u
dW1fTnVtYmVycyAhPSAzOSkgfHwgKCh0ZXJtKS0+bnVtX1N0cmluZ3MgIT0gNDE0KSkgPyBuYW1l
X2luaXRpYWxpemVyKCJzdHJpbmdfZXh0IikgOiAiKGNoYXIgKiopMCIpOwoKCgoKCgogICAgKHZv
aWQpIGZwcmludGYgKHN0ZG91dCwgIlx0XHQlZCxcdFx0LyogY291bnQgdG90YWwgQm9vbGVhbnMg
Ki9cbiIsICh0ZXJtKS0+bnVtX0Jvb2xlYW5zKTsKICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQs
ICJcdFx0JWQsXHRcdC8qIGNvdW50IHRvdGFsIE51bWJlcnMgKi9cbiIsICh0ZXJtKS0+bnVtX051
bWJlcnMpOwogICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIlx0XHQlZCxcdFx0LyogY291bnQg
dG90YWwgU3RyaW5ncyAqL1xuIiwgKHRlcm0pLT5udW1fU3RyaW5ncyk7CgogICAgKHZvaWQpIGZw
cmludGYgKHN0ZG91dCwgIlx0XHQlZCxcdFx0LyogY291bnQgZXh0ZW5zaW9ucyB0byBCb29sZWFu
cyAqL1xuIiwgKHRlcm0pLT5udW1fQm9vbGVhbnMgLSA0NCk7CgogICAgKHZvaWQpIGZwcmludGYg
KHN0ZG91dCwgIlx0XHQlZCxcdFx0LyogY291bnQgZXh0ZW5zaW9ucyB0byBOdW1iZXJzICovXG4i
LCAodGVybSktPm51bV9OdW1iZXJzIC0gMzkpOwoKICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQs
ICJcdFx0JWQsXHRcdC8qIGNvdW50IGV4dGVuc2lvbnMgdG8gU3RyaW5ncyAqL1xuIiwgKHRlcm0p
LT5udW1fU3RyaW5ncyAtIDQxNCk7CgoKICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICIjZW5k
aWYgLyogTkNVUlNFU19YTkFNRVMgKi9cbiIpOwoKICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQs
ICJcdCVzXG4iLCAifSIpOwp9CgpzdGF0aWMgaW50Cm9wdGFyZ190b19udW1iZXIodm9pZCkKewog
ICAgY2hhciAqdGVtcCA9IDA7CiAgICBsb25nIHZhbHVlID0gc3RydG9sKG9wdGFyZywgJnRlbXAs
IDApOwoKICAgIGlmICh0ZW1wID09IDAgfHwgdGVtcCA9PSBvcHRhcmcgfHwgKnRlbXAgIT0gMCkg
ewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXhwZWN0ZWQgYSBudW1iZXIsIG5vdCBcIiVzXCJc
biIsIG9wdGFyZyk7CiAgICAgICAgZXhpdCgxKTsKICAgIH0KICAgIHJldHVybiAoaW50KSB2YWx1
ZTsKfQoKCgoKCgoKaW50Cm1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgY2hhciAq
dGVybWluYWwsICpmaXJzdGRpciwgKnJlc3RkaXI7CgoKICAgIHBhdGggKnRmaWxlID0gKHBhdGgg
KikgbWFsbG9jKHNpemVvZihwYXRoKSAqIDMyKTsKICAgIGludCBjLCBpLCBsZW47CiAgICBOQ1VS
U0VTX0JPT0wgZm9ybWF0dGVkID0gMDsKICAgIE5DVVJTRVNfQk9PTCBmaWxlY29tcGFyZSA9IDA7
CiAgICBpbnQgaW5pdGR1bXAgPSAwOwogICAgTkNVUlNFU19CT09MIGluaXRfYW5hbHl6ZSA9IDA7
CiAgICBOQ1VSU0VTX0JPT0wgc3VwcHJlc3NfdW50cmFuc2xhdGFibGUgPSAwOwoKICAgIGlmICgo
dGVybWluYWwgPSBnZXRlbnYoIlRFUk0iKSkgPT0gMCkgewogICAgICAgICh2b2lkKSBmcHJpbnRm
KHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAiaW5mb2NtcDogZW52aXJvbm1lbnQgdmFy
aWFibGUgVEVSTSBub3Qgc2V0XG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCgogICAgcmVz
dGRpciA9IGZpcnN0ZGlyID0gMDsKCiAgICB3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywKICAgICAg
ICAgICAgICAgICAgICAgICBhcmd2LAogICAgICAgICAgICAgICAgICAgICAgICIxQTphQjpDY2RF
ZUZmR2dJaUxsbnBxUjpyczpUdHVWdjp3OiIpKSAhPSAoLTEpKQogICAgICAgIHN3aXRjaCAoYykg
ewogICAgICAgIGNhc2UgJzEnOgogICAgICAgICAgICBtd2lkdGggPSAwOwogICAgICAgICAgICBi
cmVhazsKCiAgICAgICAgY2FzZSAnQSc6CiAgICAgICAgICAgIGZpcnN0ZGlyID0gb3B0YXJnOwog
ICAgICAgICAgICBicmVhazsKCgogICAgICAgIGNhc2UgJ2EnOgogICAgICAgICAgICBfbmNfZGlz
YWJsZV9wZXJpb2QgPSAxOwogICAgICAgICAgICB1c2VfZXh0ZW5kZWRfbmFtZXMoMSk7CiAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdCJzoKICAgICAgICAgICAgcmVzdGRpciA9IG9w
dGFyZzsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ0MnOgogICAgICAgICAgICBv
dXRmb3JtID0gMjsKICAgICAgICAgICAgdHZlcnNpb24gPSAiQlNEIjsKICAgICAgICAgICAgaWYg
KHNvcnRtb2RlID09IDApCiAgICAgICAgICAgICAgICBzb3J0bW9kZSA9IDQ7CiAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgY29tcGFyZSA9IDI7CiAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICAgY29tcGFyZSA9IDE7
CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdFJzoKICAgICAgICAgICAgaW5pdGR1
bXAgfD0gMjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAg
ICBpbml0ZHVtcCB8PSAxOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnRic6CiAg
ICAgICAgICAgIGZpbGVjb21wYXJlID0gMTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgJ2YnOgogICAgICAgICAgICBmb3JtYXR0ZWQgPSAxOwogICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgY2FzZSAnRyc6CiAgICAgICAgICAgIG51bWJlcnMgPSAxOwogICAgICAgICAgICBicmVh
azsKCiAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgIG51bWJlcnMgPSAtMTsKICAgICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ0knOgogICAgICAgICAgICBvdXRmb3JtID0gMDsKICAg
ICAgICAgICAgaWYgKHNvcnRtb2RlID09IDApCiAgICAgICAgICAgICAgICBzb3J0bW9kZSA9IDM7
CiAgICAgICAgICAgIHR2ZXJzaW9uID0gMDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgJ2knOgogICAgICAgICAgICBpbml0X2FuYWx5emUgPSAxOwogICAgICAgICAgICBicmVhazsK
CiAgICAgICAgY2FzZSAnTCc6CiAgICAgICAgICAgIG91dGZvcm0gPSAxOwogICAgICAgICAgICBp
ZiAoc29ydG1vZGUgPT0gMCkKICAgICAgICAgICAgICAgIHNvcnRtb2RlID0gMzsKICAgICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2wnOgogICAgICAgICAgICBvdXRmb3JtID0gMDsKICAg
ICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICBjb21wYXJlID0g
MzsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3AnOgogICAgICAgICAgICBpZ25v
cmVwYWRzID0gMTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3EnOgogICAgICAg
ICAgICBxdWlldCA9IDE7CiAgICAgICAgICAgIHNfYWJzZW50ID0gIi0iOwogICAgICAgICAgICBz
X2NhbmNlbCA9ICJAIjsKICAgICAgICAgICAgYm9vbF9zZXAgPSAiLCAiOwogICAgICAgICAgICBi
cmVhazsKCiAgICAgICAgY2FzZSAnUic6CiAgICAgICAgICAgIHR2ZXJzaW9uID0gb3B0YXJnOwog
ICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgIHR2ZXJzaW9u
ID0gMDsKICAgICAgICAgICAgbGltaXRlZCA9IDA7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlICdzJzoKICAgICAgICAgICAgaWYgKCpvcHRhcmcgPT0gJ2QnKQogICAgICAgICAgICAg
ICAgc29ydG1vZGUgPSAxOwogICAgICAgICAgICBlbHNlIGlmICgqb3B0YXJnID09ICdpJykKICAg
ICAgICAgICAgICAgIHNvcnRtb2RlID0gMjsKICAgICAgICAgICAgZWxzZSBpZiAoKm9wdGFyZyA9
PSAnbCcpCiAgICAgICAgICAgICAgICBzb3J0bW9kZSA9IDM7CiAgICAgICAgICAgIGVsc2UgaWYg
KCpvcHRhcmcgPT0gJ2MnKQogICAgICAgICAgICAgICAgc29ydG1vZGUgPSA0OwogICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJpbmZvY21wOiB1bmtub3duIHNvcnQgbW9kZVxuIik7CiAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsK
CiAgICAgICAgY2FzZSAnVCc6CiAgICAgICAgICAgIGxpbWl0ZWQgPSAwOwogICAgICAgICAgICBi
cmVhazsKCgogICAgICAgIGNhc2UgJ3QnOgogICAgICAgICAgICBfbmNfZGlzYWJsZV9wZXJpb2Qg
PSAwOwogICAgICAgICAgICBzdXBwcmVzc191bnRyYW5zbGF0YWJsZSA9IDE7CiAgICAgICAgICAg
IGJyZWFrOwoKCiAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgIGNvbXBhcmUgPSA0OwogICAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnVic6CiAgICAgICAgICAgIHB1dHMoY3Vyc2Vz
X3ZlcnNpb24oKSk7CiAgICAgICAgICAgIGV4aXQoMCk7CgogICAgICAgIGNhc2UgJ3YnOgogICAg
ICAgICAgICBpdHJhY2UgPSBvcHRhcmdfdG9fbnVtYmVyKCk7CiAgICAgICAgICAgIF9uY190cmFj
aW5nICY9ICgoMTUpIDw8IDEzKSwgX25jX3RyYWNpbmcgfD0gKChpdHJhY2UpIDw8IDEzKTsKICAg
ICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICBtd2lkdGggPSBv
cHRhcmdfdG9fbnVtYmVyKCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICB1c2FnZSgpOwogICAgICAgIH0KCgogICAgaWYgKHNvcnRtb2RlID09IDApCiAg
ICAgICAgc29ydG1vZGUgPSAyOwoKCiAgICBkdW1wX2luaXQodHZlcnNpb24sIG91dGZvcm0sIHNv
cnRtb2RlLCBtd2lkdGgsIGl0cmFjZSwgZm9ybWF0dGVkKTsKCgogICAgaWYgKG9wdGluZCA+PSBh
cmdjKQogICAgICAgIGFyZ3ZbYXJnYysrXSA9IHRlcm1pbmFsOwoKCiAgICBpZiAoY29tcGFyZSAh
PSAwICYmIG9wdGluZCA+PSBhcmdjIC0gMSkKICAgICAgICBhcmd2W2FyZ2MrK10gPSB0ZXJtaW5h
bDsKCgogICAgaWYgKGFyZ2MgLSBvcHRpbmQgPT0gMiAmJiBjb21wYXJlID09IDApCiAgICAgICAg
Y29tcGFyZSA9IDE7CgogICAgaWYgKCFmaWxlY29tcGFyZSkgewoKICAgICAgICB0ZXJtY291bnQg
PSAwOwogICAgICAgIGZvciAoOyBvcHRpbmQgPCBhcmdjOyBvcHRpbmQrKykgewogICAgICAgICAg
ICBpZiAodGVybWNvdW50ID49IDMyKSB7CiAgICAgICAgICAgICAgICAodm9pZCkgZnByaW50Zihz
dGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5mb2NtcDogdG9vIG1hbnkg
dGVybWluYWwgdHlwZSBhcmd1bWVudHNcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkaXJlY3Rvcnkg
PSB0ZXJtY291bnQgPyByZXN0ZGlyIDogZmlyc3RkaXI7CiAgICAgICAgICAgICAgICBpbnQgc3Rh
dHVzOwoKICAgICAgICAgICAgICAgIHRuYW1lW3Rlcm1jb3VudF0gPSBhcmd2W29wdGluZF07Cgog
ICAgICAgICAgICAgICAgaWYgKGRpcmVjdG9yeSkgewogICAgICAgICAgICAgICAgICAgICh2b2lk
KSBzcHJpbnRmKHRmaWxlW3Rlcm1jb3VudF0sICIlcy8lYy8lcyIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICphcmd2W29wdGluZF0sIGFyZ3Zbb3B0aW5kXSk7CiAgICAgICAgICAgICAgICAgICAg
aWYgKGl0cmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGZwcmludGYoc3RkZXJy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5mb2NtcDogcmVhZGlu
ZyBlbnRyeSAlcyBmcm9tIGZpbGUgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3Zbb3B0aW5kXSwgdGZpbGVbdGVybWNvdW50XSk7CgogICAgICAgICAgICAg
ICAgICAgIHN0YXR1cyA9IF9uY19yZWFkX2ZpbGVfZW50cnkodGZpbGVbdGVybWNvdW50XSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbnRyaWVzW3Rl
cm1jb3VudF0udHRlcm0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICBpZiAoaXRyYWNlKQogICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgZnByaW50Zihz
dGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmZvY21wOiBy
ZWFkaW5nIGVudHJ5ICVzIGZyb20gc3lzdGVtIGRpcmVjdG9yaWVzICVzXG4iLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd2W29wdGluZF0sIHRuYW1lW3Rlcm1jb3Vu
dF0pOwoKICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBfbmNfcmVhZF9lbnRyeSh0bmFtZVt0
ZXJtY291bnRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRm
aWxlW3Rlcm1jb3VudF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmVudHJpZXNbdGVybWNvdW50XS50dGVybSk7CiAgICAgICAgICAgICAgICAgICAgZGlyZWN0
b3J5ID0gIi91c3Ivc2hhcmUvdGVybWluZm8iOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgIGlmIChzdGF0dXMgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICh2b2lkKSBmcHJp
bnRmKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5mb2NtcDog
Y291bGRuJ3Qgb3BlbiB0ZXJtaW5mbyBmaWxlICVzLlxuIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZmlsZVt0ZXJtY291bnRdKTsKICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlcGFpcl9hY3NjKCZlbnRy
aWVzW3Rlcm1jb3VudF0udHRlcm0pOwogICAgICAgICAgICAgICAgdGVybWNvdW50Kys7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICBpZiAodGVybWNvdW50ID4gMSkKICAgICAgICAg
ICAgX25jX2FsaWduX3Rlcm10eXBlKCZlbnRyaWVzWzBdLnR0ZXJtLCAmZW50cmllc1sxXS50dGVy
bSk7CgoKCiAgICAgICAgaWYgKGluaXRkdW1wKSB7CiAgICAgICAgICAgIGlmIChpbml0ZHVtcCAm
IDEpCiAgICAgICAgICAgICAgICBkdW1wX3Rlcm10eXBlKCZlbnRyaWVzWzBdLnR0ZXJtKTsKICAg
ICAgICAgICAgaWYgKGluaXRkdW1wICYgMikKICAgICAgICAgICAgICAgIGR1bXBfaW5pdGlhbGl6
ZXJzKCZlbnRyaWVzWzBdLnR0ZXJtKTsKICAgICAgICAgICAgZXhpdCgwKTsKICAgICAgICB9CgoK
ICAgICAgICBpZiAoaW5pdF9hbmFseXplKSB7CgoKICAgICAgICAgICAgYW5hbHl6ZV9zdHJpbmco
ImlzMSIsIGVudHJpZXNbMF0udHRlcm0uIFN0cmluZ3NbNDhdLCAmZW50cmllc1swXS50dGVybSk7
CiAgICAgICAgICAgIGFuYWx5emVfc3RyaW5nKCJpczIiLCBlbnRyaWVzWzBdLnR0ZXJtLiBTdHJp
bmdzWzQ5XSwgJmVudHJpZXNbMF0udHRlcm0pOwogICAgICAgICAgICBhbmFseXplX3N0cmluZygi
aXMzIiwgZW50cmllc1swXS50dGVybS4gU3RyaW5nc1s1MF0sICZlbnRyaWVzWzBdLnR0ZXJtKTsK
ICAgICAgICAgICAgYW5hbHl6ZV9zdHJpbmcoInJzMSIsIGVudHJpZXNbMF0udHRlcm0uIFN0cmlu
Z3NbMTIyXSwgJmVudHJpZXNbMF0udHRlcm0pOwogICAgICAgICAgICBhbmFseXplX3N0cmluZygi
cnMyIiwgZW50cmllc1swXS50dGVybS4gU3RyaW5nc1sxMjNdLCAmZW50cmllc1swXS50dGVybSk7
CiAgICAgICAgICAgIGFuYWx5emVfc3RyaW5nKCJyczMiLCBlbnRyaWVzWzBdLnR0ZXJtLiBTdHJp
bmdzWzEyNF0sICZlbnRyaWVzWzBdLnR0ZXJtKTsKICAgICAgICAgICAgYW5hbHl6ZV9zdHJpbmco
InNtY3VwIiwgZW50cmllc1swXS50dGVybS4gU3RyaW5nc1syOF0sICZlbnRyaWVzWzBdLnR0ZXJt
KTsKICAgICAgICAgICAgYW5hbHl6ZV9zdHJpbmcoInJtY3VwIiwgZW50cmllc1swXS50dGVybS4g
U3RyaW5nc1s0MF0sICZlbnRyaWVzWzBdLnR0ZXJtKTsKCiAgICAgICAgICAgIGV4aXQoMCk7CiAg
ICAgICAgfQoKCgoKICAgICAgICBzd2l0Y2ggKGNvbXBhcmUpIHsKICAgICAgICBjYXNlIDA6CiAg
ICAgICAgICAgIGlmIChpdHJhY2UpCiAgICAgICAgICAgICAgICAodm9pZCkgZnByaW50ZihzdGRl
cnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5mb2NtcDogYWJvdXQgdG8gZHVt
cCAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuYW1lWzBdKTsKICAgICAg
ICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIiNcdFJlY29uc3RydWN0ZWQgdmlhIGluZm9j
bXAgZnJvbSBmaWxlOiAlc1xuIiwgdGZpbGVbMF0pOwoKICAgICAgICAgICAgbGVuID0gZHVtcF9l
bnRyeSgmZW50cmllc1swXS50dGVybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBw
cmVzc191bnRyYW5zbGF0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVtYmVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKSk7
CiAgICAgICAgICAgIHB1dGNoYXIoJ1xuJyk7CiAgICAgICAgICAgIGlmIChpdHJhY2UpCiAgICAg
ICAgICAgICAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsICJpbmZvY21wOiBsZW5ndGggJWRcbiIs
IGxlbik7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGlm
IChpdHJhY2UpCiAgICAgICAgICAgICAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsICJpbmZvY21w
OiBkdW1waW5nIGRpZmZlcmVuY2VzXG4iKTsKICAgICAgICAgICAgKHZvaWQpIGZwcmludGYgKHN0
ZG91dCwgImNvbXBhcmluZyAlcyB0byAlcy5cbiIsIHRuYW1lWzBdLCB0bmFtZVsxXSk7CiAgICAg
ICAgICAgIGNvbXBhcmVfZW50cnkoY29tcGFyZV9wcmVkaWNhdGUsICZlbnRyaWVzLT50dGVybSwg
cXVpZXQpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBp
ZiAoaXRyYWNlKQogICAgICAgICAgICAgICAgKHZvaWQpIGZwcmludGYoc3RkZXJyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImluZm9jbXA6IGR1bXBpbmcgY29tbW9uIGNhcGFiaWxp
dGllc1xuIik7CiAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICJjb21wYXJpbmcg
JXMgdG8gJXMuXG4iLCB0bmFtZVswXSwgdG5hbWVbMV0pOwogICAgICAgICAgICBjb21wYXJlX2Vu
dHJ5KGNvbXBhcmVfcHJlZGljYXRlLCAmZW50cmllcy0+dHRlcm0sIHF1aWV0KTsKICAgICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgaWYgKGl0cmFjZSkKICAgICAg
ICAgICAgICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJpbmZvY21wOiBkdW1waW5nIGRpZmZlcmVuY2VzXG4iKTsKICAgICAgICAgICAgKHZv
aWQpIGZwcmludGYgKHN0ZG91dCwgImNvbXBhcmluZyAlcyB0byAlcy5cbiIsIHRuYW1lWzBdLCB0
bmFtZVsxXSk7CiAgICAgICAgICAgIGNvbXBhcmVfZW50cnkoY29tcGFyZV9wcmVkaWNhdGUsICZl
bnRyaWVzLT50dGVybSwgcXVpZXQpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0
OgogICAgICAgICAgICBpZiAoaXRyYWNlKQogICAgICAgICAgICAgICAgKHZvaWQpIGZwcmludGYo
c3RkZXJyLCAiaW5mb2NtcDogZHVtcGluZyB1c2UgZW50cnlcbiIpOwogICAgICAgICAgICBsZW4g
PSBkdW1wX2VudHJ5KCZlbnRyaWVzWzBdLnR0ZXJtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1cHByZXNzX3VudHJhbnNsYXRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbWl0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudW1iZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9w
cmVkaWNhdGUpOwogICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgdGVybWNvdW50OyBpKyspCiAg
ICAgICAgICAgICAgICBsZW4gKz0gZHVtcF91c2VzKHRuYW1lW2ldLCAhKG91dGZvcm0gPT0gMgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBvdXRmb3JtID09
IDMpKTsKICAgICAgICAgICAgcHV0Y2hhcignXG4nKTsKICAgICAgICAgICAgaWYgKGl0cmFjZSkK
ICAgICAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgImluZm9jbXA6IGxlbmd0aCAl
ZFxuIiwgbGVuKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfSBlbHNlIGlmIChj
b21wYXJlID09IDQpCiAgICAgICAgKHZvaWQpIGZwcmludGYoc3RkZXJyLCAiU29ycnksIC11IGRv
ZXNuJ3Qgd29yayB3aXRoIC1GXG4iKTsKICAgIGVsc2UgaWYgKGNvbXBhcmUgPT0gMCkKICAgICAg
ICAodm9pZCkgZnByaW50ZihzdGRlcnIsICJVc2UgYHRpYyAtW0NJXSA8ZmlsZT4nIGZvciB0aGlz
LlxuIik7CiAgICBlbHNlIGlmIChhcmdjIC0gb3B0aW5kICE9IDIpCiAgICAgICAgKHZvaWQpIGZw
cmludGYoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICJGaWxlIGNvbXBhcmlzb24gbmVl
ZHMgZXhhY3RseSB0d28gZmlsZSBhcmd1bWVudHMuXG4iKTsKICAgIGVsc2UKICAgICAgICBmaWxl
X2NvbXBhcmlzb24oYXJnYyAtIG9wdGluZCwgYXJndiArIG9wdGluZCk7CgogICAgZXhpdCgwKTsK
fQo=


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