other/7814: incorrect scheduling for glibc-2.2.92 stpcpy test

glen@imodulo.com glen@imodulo.com
Mon Sep 2 12:26:00 GMT 2002


>Number:         7814
>Category:       other
>Synopsis:       incorrect scheduling for glibc-2.2.92 stpcpy test
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Mon Sep 02 12:26:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     glibc-2.2.92 testsuite
>Release:        gcc 3.2
>Organization:
>Environment:
i586-pc-linux-gnu
>Description:
GCC incorrectly generates scheduling dependencies...

test_stpcpy:
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %edi
        pushl   %esi
        movl    $1, %esi
        pushl   %ebx
        movl    $one, %ebx
        subl    %ebx, %esi
        subl    $20, %esp
        movl    $.LC2, it
        leal    (%ebx,%esi), %edi
        pushl   $1
        cmpl    $1, %edi
        addl    $one+2, %esi      << incorrectly clobbers CC
        sete    %al
        andl    $255, %eax
        pushl   %eax
        movw    $97, one
        call    check
        addl    $12, %esp
>How-To-Repeat:
bash:~# gcc -O2 -mcpu=i586 stpcpy.i
bash:~# ./a.out
stpcpy flunked test 1
1 errors.
>Fix:
I'm testing a patch to sched-deps.c which I'll post soon.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="stpcpy.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="stpcpy.i"

IyAxICJzdHBjcHkuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEg
InN0cGNweS5jIgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDI4ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyODMg
Ii91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5o
IiAxIDMKIyAyODQgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAzMTIgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAz
MTMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDIgMwoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LzMuMi4xL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIwMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4
LzMuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90Owoj
IDM1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LzMuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMw
ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
X191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2ln
bmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVu
c2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBp
bnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRlbnNp
b25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25f
XyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19x
dWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9f
dV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcg
X19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlu
a190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7
CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3Vf
bG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191
X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9f
ZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7
CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29u
ZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9f
c3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgaW50IF9fY2xv
Y2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKdHlwZWRlZiBpbnQgX19rZXlf
dDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBs
b25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlw
ZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25n
IF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVk
ZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoK
dHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
X190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlw
ZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS9iaXRzL3Nj
aGVkLmgiIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0
eTsKICB9OwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3Ry
dWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlu
bG9jazsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJl
YWRfZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9f
ZGV0YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0g
X19zY2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXpl
X3QgX19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRk
cjsKICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3Ry
dWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVz
Y3IgX19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBp
bnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
cHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsK
ICBpbnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tp
bmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhf
dDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4
YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKCnR5cGVkZWYgc3RydWN0
IF9wdGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19yd19sb2Nr
OwogIGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZXI7CiAgX3B0
aHJlYWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0
ZV93YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNoYXJlZDsKfSBwdGhyZWFk
X3J3bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9f
cHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVkZWYgdm9sYXRpbGUgaW50
IHB0aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgc3RydWN0IF9wdGhyZWFk
X2Zhc3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsKICBpbnQgX19iYV9wcmVz
ZW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhyZWFkX2JhcnJpZXJfdDsK
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX2JhcnJpZXJhdHRy
X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyAzNyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIg
MwojIDQ1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBG
SUxFOwojIDU1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklM
RSBfX0ZJTEU7CiMgNjUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9fR19jb25maWcuaCIgMSAzCiMgMTQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwoj
IDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMKIyAyOTQgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC8zLjIuMS9pbmNsdWRl
L3N0ZGRlZi5oIiAzCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKIyAzMjEgIi91c3IvbGliL2dj
Yy1saWIvaTU4Ni1wYy1saW51eC8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5z
aWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKIyAy
NCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgi
IDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIv
aTU4Ni1wYy1saW51eC8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9pbmNs
dWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMKIyA1
MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDY3ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg
Mwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3Qg
X193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMg
MjUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19v
ZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBz
dHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zw
b3M2NF90OwojIDQ0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZ2NvbnYuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9nY29udi5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91
c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDI5ICIvdXNyL2luY2x1ZGUvZ2NvbnYu
aCIgMiAzCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgvMy4yLjEvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgplbnVt
CnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIsCiAg
X19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBfX0dDT05WX0ZVTExfT1VU
UFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQs
CgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJST1IK
fTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZfSUdOT1JF
X0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwOwpzdHJ1Y3QgX19nY29u
dl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3Q7CnN0cnVjdCBfX2djb252
X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3QgX19nY29u
dl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiosIHNpemVfdCAq
LCBpbnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0KSAoc3RydWN0IF9f
Z2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0KSAoc3RydWN0IF9f
Z2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2ZjdCkgKHN0cnVj
dCBfX2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICoqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50
ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19jb25zdCB1bnNpZ25lZCBj
aGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2dj
b252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVk
ZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNvbnN0IGNoYXIgKik7
CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhCnsKCiAgX19nY29udl90cmFuc19mY3QgX190cmFuc19mY3Q7CiAg
X19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0OwogIF9fZ2NvbnZf
dHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRhOwogIHN0cnVjdCBf
X2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcAp7CiAg
c3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7CiAgX19jb25zdCBj
aGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNoYXIgKl9fZnJvbV9uYW1lOwog
IGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2Zj
dCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCiAgaW50IF9fbWlu
X25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5fbmVlZGVk
X3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAq
X19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIg
Kl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdz
OwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7
CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0
cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9f
Z2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9f
c3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhIFtd
Owp9ICpfX2djb252X3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCnR5cGVk
ZWYgdW5pb24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7CiAgICBz
dHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19k
YXRhOwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRlZiBpbnQgX0dfaW50MTZf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50
MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
X19TSV9fKSkpOwojIDMzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgNTMgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LzMuMi4x
L2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgvMy4yLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9f
Z251Y192YV9saXN0OwojIDU0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgMTYwICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwoj
IDE3MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoK
CgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1
Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwojIDE5MyAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBf
X2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9
OwojIDI2MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxFIHsKICBpbnQg
X2ZsYWdzOwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3JlYWRfZW5kOwog
IGNoYXIqIF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAgY2hhciogX0lP
X3dyaXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19idWZfYmFzZTsK
ICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBjaGFyICpfSU9f
YmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lPX21hcmtlciAq
X21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBp
bnQgX2Jsa3NpemU7CiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25lZCBzaG9ydCBf
Y3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1
ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMDUgIi91c3IvaW5jbHVkZS9saWJpby5o
IiAzCiAgX19vZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAgdm9pZCAqX19w
YWQyOwoKICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2YgKGludCkgLSAy
ICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJ
TEU7CgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMg
X0lPXzJfMV9zdGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91
dF87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQ0ICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZv
aWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVk
ZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIg
Kl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKCgoK
CgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAq
X19wb3MsIGludCBfX3cpOwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29v
a2llKTsKCgoKCnR5cGVkZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5
cGVkZWYgX19pb193cml0ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lv
X3NlZWtfZm4gY29va2llX3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNv
b2tpZV9jbG9zZV9mdW5jdGlvbl90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4g
KnJlYWQ7CiAgX19pb193cml0ZV9mbiAqd3JpdGU7CiAgX19pb19zZWVrX2ZuICpzZWVrOwogIF9f
aW9fY2xvc2VfZm4gKmNsb3NlOwp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYg
X0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7CgpzdHJ1Y3Qg
X0lPX2Nvb2tpZV9maWxlOwoKCmV4dGVybiB2b2lkIF9JT19jb29raWVfaW5pdCAoc3RydWN0IF9J
T19jb29raWVfZmlsZSAqX19jZmlsZSwgaW50IF9fcmVhZF93cml0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpfX2Nvb2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBf
X2Zucyk7CgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVy
biBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9JT19G
SUxFICosIGludCkgOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpl
eHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193b3Zl
cmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwojIDQyNiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9f
cHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lP
X0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgOwoK
ZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCkgOwoKCgoKCmV4dGVy
biB2b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxv
Y2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJ
TEUgKikgOwojIDQ1NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fdmZz
Y2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0cmljdCkgOwpl
eHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgOwpl
eHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgOwpl
eHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4
dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBp
bnQpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90
LCBpbnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7
CiMgNjYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xp
c3QgdmFfbGlzdDsKIyA4MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfR19mcG9z
X3QgZnBvc190OwoKCgoKdHlwZWRlZiBfR19mcG9zNjRfdCBmcG9zNjRfdDsKIyAxMjkgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEg
MwojIDEzMCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRlcm4gRklMRSAqc3RkaW47
CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7CgoKCgoKCmV4dGVybiBp
bnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKCmV4dGVybiBpbnQgcmVuYW1l
IChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSA7CgoKCgpleHRlcm4g
RklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDE1OCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0
ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkgOwoKCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIg
Kl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIDsKIyAxNzggIi91
c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIg
Kl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBp
bnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZmbHVzaF91bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmNsb3NlYWxsICh2b2lkKSA7CgoK
CgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFt
ZSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2Rlcykg
OwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9k
ZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CiMg
MjIyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW42NCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4g
KGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9w
ZW5jb29raWUgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdpY19jb29raWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lvX2Z1bmNzKSA7CgoK
ZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgX19jb25zdCBj
aGFyICpfX21vZGVzKSA7CgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIgKipf
X3Jlc3RyaWN0IF9fYnVmbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAq
X19yZXN0cmljdCBfX3NpemVsb2MpIDsKCgoKCgpleHRlcm4gdm9pZCBzZXRidWYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGlu
dCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLAogICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSA7CgoKCgpl
eHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9f
cmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgOwoK
CmV4dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50
IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgcHJp
bnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGlu
dCBzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCmV4dGVybiBpbnQgdmZwcmlu
dGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgpleHRlcm4g
aW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3Zh
X2xpc3QgX19hcmcpCiAgICAgOwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50
ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3Qg
X19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDAp
KSk7CgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgICAgICAgICAgICAgICAgX19nbnVj
X3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10
LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMp
KSk7CmV4dGVybiBpbnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4g
aW50IHZkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAog
ICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRm
IChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgpleHRlcm4g
aW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNj
YW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGlu
dCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCgpleHRlcm4gaW50
IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4g
aW50IHZzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFf
bGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAx
LCAwKSkpOwoKCmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3NjYW5mX18sIDIsIDApKSk7CgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkg
OwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBnZXRjaGFy
ICh2b2lkKSA7CgoKCgoKCgpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt
KSA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBm
Z2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGlu
dCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpIDsKCgoKCgoKCmV4dGVy
biBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRl
cm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBp
bnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykgOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklM
RSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFt
KSA7CgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19u
LCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIDsKCgoKZXh0ZXJuIGNoYXIgKmZnZXRz
X3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hh
ciAqZ2V0cyAoY2hhciAqX19zKSA7CiMgNDI2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gX19zc2l6ZV90IF9fZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBf
X2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIDsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJp
Y3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0
cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRsaW5lIChj
aGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgKl9fcmVzdHJpY3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CgoKCmV4
dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoK
ZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0
YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9p
ZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBm
d3JpdGUgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoK
CmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNp
emVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQg
KF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0pIDsKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29m
ZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFt
KSA7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNDg5ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2Zm
X3QgX19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxFICpf
X3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICA7CgpleHRlcm4gaW50IGZzZXRwb3Mg
KEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpIDsKIyA1MjMgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvNjQgKEZJTEUgKl9fc3RyZWFtLCBfX29m
ZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSkgOwpleHRlcm4gX19vZmY2NF90IGZ0ZWxsbzY0IChG
SUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZnZXRwb3M2NCAoRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgOwpleHRlcm4gaW50IGZz
ZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvczY0X3QgKl9fcG9zKSA7CgoKCmV4
dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZW9mIChG
SUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSA7CgoK
CmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4g
aW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVycm9yX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0
IGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hh
ciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5c19uZXJyOwpleHRlcm4g
X19jb25zdCBjaGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwoKCgoKCmV4dGVybiBpbnQgZmls
ZW5vIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJ
TEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBjaGFyICpf
X2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCmV4dGVybiBpbnQgcGNsb3NlIChG
SUxFICpfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsK
CgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSA7CgoKCgpzdHJ1Y3Qgb2JzdGFj
azsKCgpleHRlcm4gaW50IG9ic3RhY2tfcHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmlj
dCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CmV4dGVybiBpbnQgb2JzdGFja192cHJpbnRmIChzdHJ1
Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZ3MpIDsKCgoKCgoKCmV4dGVybiB2b2lkIGZs
b2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJ
TEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFt
KSA7CiMgNjMwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3N0ZGlvLmgiIDEgMwojIDMzICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzCmV4dGVybiBf
X2lubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2du
dWNfdmFfbGlzdCBfX2FyZykKewogIHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19h
cmcpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyICh2b2lkKQp7CiAgcmV0dXJuIF9J
T19nZXRjIChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y191bmxvY2tlZCAo
RklMRSAqX19mcCkKewogIHJldHVybiAoKF9fZnApLT5fSU9fcmVhZF9wdHIgPj0gKF9fZnApLT5f
SU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2ZwKSA6ICoodW5zaWduZWQgY2hhciAqKSAoX19mcCkt
Pl9JT19yZWFkX3B0cisrKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhcl91bmxvY2tl
ZCAodm9pZCkKewogIHJldHVybiAoKHN0ZGluKS0+X0lPX3JlYWRfcHRyID49IChzdGRpbiktPl9J
T19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4p
LT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hhciAoaW50
IF9fYykKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQpOwp9CgoKCgpleHRlcm4gX19p
bmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJl
dHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRl
X2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1
bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0K
CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9f
c3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJl
YW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hh
cikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisr
ID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hhcl91bmxvY2tlZCAoaW50
IF9fYykKewogIHJldHVybiAoKChzdGRvdXQpLT5fSU9fd3JpdGVfcHRyID49IChzdGRvdXQpLT5f
SU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVuc2lnbmVkIGNoYXIpIChfX2Mp
KSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkp
Owp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fc3NpemVfdApnZXRsaW5lIChjaGFyICoqX19saW5l
cHRyLCBzaXplX3QgKl9fbiwgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gX19nZXRkZWxpbSAo
X19saW5lcHRyLCBfX24sICdcbicsIF9fc3RyZWFtKTsKfQoKCgoKCmV4dGVybiBfX2lubGluZSBp
bnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0p
LT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZmVycm9yX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAm
IDB4MjApICE9IDApOwp9CiMgNjMxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCiMgNCAi
c3RwY3B5LmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI4ICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDMKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0cmluZy5o
IiAyIDMKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90
IF9fbikgOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9p
ZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2
b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAog
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICA7CgoKCgpleHRl
cm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIDsKCgpleHRl
cm4gaW50IG1lbWNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNp
emVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQg
Km1lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAoX19j
b25zdCB2b2lkICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4
dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9f
bikKICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gY2hhciAqc3Ry
Y3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
c3JjKQogICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz
dCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywg
c2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19k
ZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgOwoKZXh0ZXJuIGNoYXIg
KnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGlu
dCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChfX2NvbnN0IGNo
YXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
IDsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1
ZGUveGxvY2FsZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CgogIHN0cnVj
dCBsb2NhbGVfZGF0YSAqX19sb2NhbGVzWzEzXTsKCgogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGlu
dCAqX19jdHlwZV9iOwogIGNvbnN0IGludCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGludCAq
X19jdHlwZV90b3VwcGVyOwp9ICpfX2xvY2FsZV90OwojIDEwOSAiL3Vzci9pbmNsdWRlL3N0cmlu
Zy5oIiAyIDMKCgpleHRlcm4gaW50IF9fc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19zcmMsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sKSA7CgoKCgpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9f
cykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0cm5k
dXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4g
Y2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNo
cm51bCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25z
dCBjaGFyICpfX3JlamVjdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRl
cm4gc2l6ZV90IHN0cnNwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2Nl
cHQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJy
ayAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIg
Kl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKCmV4dGVybiBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9f
aGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCmV4dGVybiBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkKICAgICA7CgoKCmV4dGVybiBjaGFyICpf
X3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19y
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0s
CiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoK
CgoKCgpleHRlcm4gdm9pZCAqbWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5c3RhY2ssIHNpemVf
dCBfX2hheXN0YWNrbGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fbmVl
ZGxlLCBzaXplX3QgX19uZWVkbGVsZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKCmV4dGVybiB2b2lkICpfX21lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVf
dCBfX24pIDsKZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAog
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXpl
X3QgX19uKSA7CgoKCgpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJubGVuIChfX2Nv
bnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhsZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgOwoK
CgpleHRlcm4gY2hhciAqc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fYnVmbGVuKSA7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVf
dCBfX24pIDsKCgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQg
Kl9fZGVzdCwgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3MsIHNp
emVfdCBfX24pIDsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25z
dCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3QgY2hh
ciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGlu
dCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBp
bnQgZmZzbCAobG9uZyBpbnQgX19sKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4
dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwg
X19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgoKCmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2Fs
ZV90IF9fbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJu
Y2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hh
ciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgOwoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIDsKCgpleHRl
cm4gY2hhciAqX19zdHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMpCiAgICAgOwpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jl
c3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCgoK
ZXh0ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9f
bikgOwpleHRlcm4gY2hhciAqc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pIDsKCgpleHRlcm4gY2hhciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykgOwoKCmV4dGVybiB2
b2lkICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgoKCgoKZXh0ZXJuIGNoYXIg
KmJhc2VuYW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKIyAzNTcgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZy5oIiAxIDMKIyAzNTgg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp
bmcyLmgiIDEgMwojIDUyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9lbmRp
YW4uaCIgMiAzCiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCiMgMjIxICIv
dXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHZvaWQgKl9fbWVt
cGNweV9zbWFsbCAodm9pZCAqLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQxNl90LCBfX3VpbnQxNl90LCBfX3VpbnQz
Ml90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90LCBz
aXplX3QpOwpleHRlcm4gX19pbmxpbmUgdm9pZCAqCl9fbWVtcGNweV9zbWFsbCAodm9pZCAqX19k
ZXN0MSwKICAgICAgICAgICAgICAgICBjaGFyIF9fc3JjMF8xLCBjaGFyIF9fc3JjMl8xLCBjaGFy
IF9fc3JjNF8xLCBjaGFyIF9fc3JjNl8xLAogICAgICAgICAgICAgICAgIF9fdWludDE2X3QgX19z
cmMwXzIsIF9fdWludDE2X3QgX19zcmM0XzIsCiAgICAgICAgICAgICAgICAgX191aW50MzJfdCBf
X3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgICBzaXplX3QgX19z
cmNsZW4pCnsKICB1bmlvbiB7CiAgICBfX3VpbnQzMl90IF9fdWk7CiAgICBfX3VpbnQxNl90IF9f
dXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogICAgdW5zaWduZWQgY2hhciBfX2M7CiAgfSAq
X191ID0gX19kZXN0MTsKICBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQogICAgewog
ICAgY2FzZSAxOgogICAgICBfX3UtPl9fYyA9IF9fc3JjMF8xOwogICAgICBfX3UgPSBfX2V4dGVu
c2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2Ug
MjoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9f
ICh2b2lkICopKChjaGFyICopIF9fdSArIDIpOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAg
ICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lk
ICopKChjaGFyICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fYyA9IF9fc3JjMl8xOwogICAgICBf
X3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDEpOwogICAgICBicmVh
azsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7CiAgICAgIGJyZWFrOwogICAg
Y2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNp
b25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX2MgPSBfX3NyYzRf
MTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAxKTsK
ICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOwogICAgICBf
X3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKiko
KGNoYXIgKikgX191ICsgMik7CiAgICAgIGJyZWFrOwogICAgY2FzZSA3OgogICAgICBfX3UtPl9f
dWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAq
KSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fYyA9IF9f
c3JjNl8xOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSAr
IDEpOwogICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7
CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7CiAg
ICAgIF9fdS0+X191aSA9IF9fc3JjNF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lk
ICopKChjaGFyICopIF9fdSArIDQpOwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4gKHZvaWQg
KikgX191Owp9CiMgMzc3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIHZv
aWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOwojIDQwNSAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cmNweV9z
bWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVy
biBfX2lubGluZSBjaGFyICoKX19zdHJjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwKICAgICAgICAg
ICAgICAgIF9fdWludDE2X3QgX19zcmMwXzIsIF9fdWludDE2X3QgX19zcmM0XzIsCiAgICAgICAg
ICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80LAogICAgICAg
ICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50MzJfdCBfX3Vp
OwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICB9ICpfX3Ug
PSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikKICAg
IHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgYnJlYWs7CiAgICBjYXNl
IDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNpb25f
XyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAg
ICAgYnJlYWs7CiAgICBjYXNlIDQ6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBi
cmVhazsKICAgIGNhc2UgNToKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9
IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191
YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3Ny
YzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0
KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBicmVhazsKICAgIGNhc2UgNzoK
ICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZv
aWQgKikoKGNoYXIgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAg
ICAgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAyKTsKICAgICAg
X191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191
aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICop
IF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAgYnJlYWs7CiAgICB9
CiAgcmV0dXJuIF9fZGVzdDsKfQojIDU3MCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAz
CmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cGNweV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90
LCBfX3VpbnQxNl90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdWlu
dDMyX3QsIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHBj
cHlfc21hbGwgKGNoYXIgKl9fZGVzdCwKICAgICAgICAgICAgICAgIF9fdWludDE2X3QgX19zcmMw
XzIsIF9fdWludDE2X3QgX19zcmM0XzIsCiAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3Jj
MF80LCBfX3VpbnQzMl90IF9fc3JjNF80LAogICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVu
KQp7CiAgdW5pb24gewogICAgdW5zaWduZWQgaW50IF9fdWk7CiAgICB1bnNpZ25lZCBzaG9ydCBp
bnQgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgICBjaGFyIF9fYzsKICB9ICpfX3Ug
PSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikKICAg
IHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNp
b25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDM6
CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAo
dm9pZCAqKSgoY2hhciAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAg
YnJlYWs7CiAgICBjYXNlIDQ6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDMpOwogICAgICBicmVhazsK
ICAgIGNhc2UgNToKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdc
MCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsK
ICAgICAgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsKICAg
ICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lk
ICopKChjaGFyICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgX191
LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNo
YXIgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgX191ID0g
X19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3Vj
ID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj
MF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQp
OwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAo
dm9pZCAqKSgoY2hhciAqKSBfX3UgKyAzKTsKICAgICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuICZf
X3UtPl9fYzsKfQojIDg5MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBf
X2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVq
ZWN0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19yZWplY3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdo
aWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkK
ICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6
ZV90IF9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19yZWplY3QyKTsKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWpl
Y3QxLCBpbnQgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3
aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3Qx
CiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyKQogICAgKytfX3Jlc3VsdDsK
ICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2Mz
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX3JlamVjdDIsIGludCBfX3JlamVjdDMpOwpleHRlcm4gX19p
bmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVj
dDEsIGludCBfX3JlamVjdDIsCiAgICAgICAgICAgICAgaW50IF9fcmVqZWN0MykKewogIHJlZ2lz
dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9
IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MykKICAgICsrX19yZXN1bHQ7
CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgOTUwICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi
IDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3Ms
IGludCBfX2FjY2VwdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzEgKF9fY29u
c3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQg
PSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19yZXN1bHQ7
CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2My
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19z
dHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQy
KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3Vs
dF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyKQogICAgKytfX3Jl
c3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJz
cG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQzKTsKZXh0ZXJu
IF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Fj
Y2VwdDEsIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpCnsKICByZWdpc3RlciBzaXplX3Qg
X19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19z
W19fcmVzdWx0XSA9PSBfX2FjY2VwdDIKICAgICAgICAgfHwgX19zW19fcmVzdWx0XSA9PSBfX2Fj
Y2VwdDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDEwMDcgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJwYnJr
X2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAq
Cl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2Fj
Y2VwdDIpCnsKCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAq
X19zICE9IF9fYWNjZXB0MikKICAgICsrX19zOwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZv
aWQgKikwKSA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIg
Kl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQz
KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19z
LCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyLAogICAgICAgICAgICAgIGludCBfX2FjY2Vw
dDMpCnsKCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19z
ICE9IF9fYWNjZXB0MgogICAgICAgICAmJiAqX19zICE9IF9fYWNjZXB0MykKICAgICsrX19zOwog
IHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSA6IChjaGFyICopIChzaXplX3QpIF9f
czsKfQojIDEwNTkgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxp
bmUgY2hhciAqX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19u
ZXh0cCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBj
aGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCkKewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChfX3Mg
PT0gKCh2b2lkICopMCkpCiAgICBfX3MgPSAqX19uZXh0cDsKICB3aGlsZSAoKl9fcyA9PSBfX3Nl
cCkKICAgICsrX19zOwogIF9fcmVzdWx0ID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3MgIT0gJ1ww
JykKICAgIHsKICAgICAgX19yZXN1bHQgPSBfX3MrKzsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1ww
JykKICAgICAgICBpZiAoKl9fcysrID09IF9fc2VwKQogICAgICAgICAgewogICAgICAgICAgICBf
X3NbLTFdID0gJ1wwJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICpfX25l
eHRwID0gX19zOwogICAgfQogIHJldHVybiBfX3Jlc3VsdDsKfQojIDEwOTEgIi91c3IvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19zdHJzZXBfZyAoY2hhciAqKl9fc3Ry
aW5ncCwgX19jb25zdCBjaGFyICpfX2RlbGltKTsKIyAxMTA5ICIvdXNyL2luY2x1ZGUvYml0cy9z
dHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzFjIChjaGFyICoqX19z
LCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8xYyAoY2hh
ciAqKl9fcywgY2hhciBfX3JlamVjdCkKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9f
czsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkgJiYgKCpfX3MgPSAoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoX19yZWplY3QpID09ICdcMCcg
PyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0cmNociAoX19y
ZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAgICooKl9fcykrKyA9ICdcMCc7
CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMmMg
KGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lu
bGluZSBjaGFyICoKX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFy
IF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19y
ZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBf
X3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAgICAgICAgewogICAgICAgICAgaWYgKCpfX2NwID09
ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX2NwID0gKCh2b2lkICopMCk7CiAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCpfX2NwID09IF9fcmVq
ZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAq
X19jcCsrID0gJ1wwJzsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAg
ICAgKytfX2NwOwogICAgICAgIH0KICAgICAgKl9fcyA9IF9fY3A7CiAgICB9CiAgcmV0dXJuIF9f
cmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2MgKGNoYXIgKipfX3Ms
IGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJz
ZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwgY2hhciBf
X3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0
dmFsICE9ICgodm9pZCAqKTApKQogICAgewogICAgICByZWdpc3RlciBjaGFyICpfX2NwID0gX19y
ZXR2YWw7CiAgICAgIHdoaWxlICgxKQogICAgICAgIHsKICAgICAgICAgIGlmICgqX19jcCA9PSAn
XDAnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgX19jcCA9ICgodm9pZCAqKTApOwogICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIGlmICgqX19jcCA9PSBfX3JlamVj
dDEgfHwgKl9fY3AgPT0gX19yZWplY3QyIHx8ICpfX2NwID09IF9fcmVqZWN0MykKICAgICAgICAg
ICAgewogICAgICAgICAgICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICB9CiAgICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAgICAqX19zID0gX19j
cDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KIyAxMTg1ICIvdXNyL2luY2x1ZGUvYml0cy9z
dHJpbmcyLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDMzICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgvMy4y
LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz
CgoKIyA1MjcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9jIChz
aXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQg
KmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKIyA4NjQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKIyAxMTg2
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwoKCgoKZXh0ZXJuIGNoYXIgKl9fc3Ry
ZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp
OwojIDEyMDkgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19z
dHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmli
dXRlX18gKChfX21hbGxvY19fKSk7CiMgMzYxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoK
CgoKIyA1ICJzdHBjcHkuYyIgMgoKY29uc3QgY2hhciAqaXQgPSAiPFVOU0VUPiI7CnNpemVfdCBl
cnJvcnMgPSAwOwoKCnN0YXRpYyB2b2lkCmNoZWNrIChpbnQgdGhpbmcsIGludCBudW1iZXIpCnsK
ICBpZiAoIXRoaW5nKQogICAgewogICAgICBwcmludGYoIiVzIGZsdW5rZWQgdGVzdCAlZFxuIiwg
aXQsIG51bWJlcik7CiAgICAgICsrZXJyb3JzOwogICAgfQp9CgoKc3RhdGljIHZvaWQKZXF1YWwg
KGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIsIGludCBudW1iZXIpCnsKICBjaGVjayhhICE9
ICgodm9pZCAqKTApICYmIGIgIT0gKCh2b2lkICopMCkgJiYgKF9fZXh0ZW5zaW9uX18gKHsgc2l6
ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChhKSAmJiBfX2J1
aWx0aW5fY29uc3RhbnRfcCAoYikgJiYgKF9fczFfbGVuID0gc3RybGVuIChhKSwgX19zMl9sZW4g
PSBzdHJsZW4gKGIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChhKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKShhKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKChiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShiKSA9PSAx
KSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKGEpLCAoX19j
b25zdCBjaGFyICopIChiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJf
bGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChhKSAmJiAoKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgoYSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoYSkgPT0gMSkgJiYgKF9f
czFfbGVuID0gc3RybGVuIChhKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoYikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGIpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKGIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGEpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoYikpWzBdKTsg
aWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGEpKVsxXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGIpKVsxXSk7IGlmIChfX3MxX2xlbiA+
IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChhKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0
ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGEpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKGIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25z
dCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGEpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChhKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVu
ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChhKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoYikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoYikgPT0gMSkgJiYgKF9fczJfbGVu
ID0gc3RybGVuIChiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYSkg
JiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGEpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKGEpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGEpKVswXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoYikpWzBdKTsgaWYgKF9f
czJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGEpKVsxXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChhKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KGEpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGIp
KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNp
Z25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChhKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYg
X19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0
cmNtcCAoYSwgYikpKSk7IH0pID09IDApLCBudW1iZXIpOwp9CgpjaGFyIG9uZVs1MF07CmNoYXIg
dHdvWzUwXTsKY2hhciAqY3A7CiMgNDAgInN0cGNweS5jIgpzdGF0aWMgdm9pZAp0ZXN0X3N0cGNw
eSAodm9pZCkKewogIGl0ID0gInN0cGNweSI7CiAgY2hlY2sgKCgoX19leHRlbnNpb25fXyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKCJhIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJhIikg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImEiKSA9PSAxKSAmJiBzdHJsZW4gKCJhIikg
KyAxIDw9IDggPyBfX2J1aWx0aW5fc3RyY3B5IChvbmUsICJhIikgKyBzdHJsZW4gKCJhIikgOiAo
KGNoYXIgKikgKF9fbWVtcGNweSkgKG9uZSwgImEiLCBzdHJsZW4gKCJhIikgKyAxKSAtIDEpKSA6
IF9fc3RwY3B5IChvbmUsICJhIikpKSAtIG9uZSkgPT0gMSwgMSk7CiAgZXF1YWwgKG9uZSwgImEi
LCAyKTsKCiAgY2hlY2sgKCgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJh
YiIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYWIiKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgiYWIiKSA9PSAxKSAmJiBzdHJsZW4gKCJhYiIpICsgMSA8PSA4ID8gX19idWls
dGluX3N0cmNweSAob25lLCAiYWIiKSArIHN0cmxlbiAoImFiIikgOiAoKGNoYXIgKikgKF9fbWVt
cGNweSkgKG9uZSwgImFiIiwgc3RybGVuICgiYWIiKSArIDEpIC0gMSkpIDogX19zdHBjcHkgKG9u
ZSwgImFiIikpKSAtIG9uZSkgPT0gMiwgMyk7CiAgZXF1YWwgKG9uZSwgImFiIiwgNCk7CgogIGNo
ZWNrICgoKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiYWJjIikgPyAoKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKCJhYmMiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgiYWJjIikgPT0gMSkgJiYgc3RybGVuICgiYWJjIikgKyAxIDw9IDggPyBfX2J1aWx0aW5fc3Ry
Y3B5IChvbmUsICJhYmMiKSArIHN0cmxlbiAoImFiYyIpIDogKChjaGFyICopIChfX21lbXBjcHkp
IChvbmUsICJhYmMiLCBzdHJsZW4gKCJhYmMiKSArIDEpIC0gMSkpIDogX19zdHBjcHkgKG9uZSwg
ImFiYyIpKSkgLSBvbmUpID09IDMsIDUpOwogIGVxdWFsIChvbmUsICJhYmMiLCA2KTsKCiAgY2hl
Y2sgKCgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhYmNkIikgPyAoKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKCJhYmNkIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikoImFiY2QiKSA9PSAxKSAmJiBzdHJsZW4gKCJhYmNkIikgKyAxIDw9IDggPyBfX2J1aWx0aW5f
c3RyY3B5IChvbmUsICJhYmNkIikgKyBzdHJsZW4gKCJhYmNkIikgOiAoKGNoYXIgKikgKF9fbWVt
cGNweSkgKG9uZSwgImFiY2QiLCBzdHJsZW4gKCJhYmNkIikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5
IChvbmUsICJhYmNkIikpKSAtIG9uZSkgPT0gNCwgNyk7CiAgZXF1YWwgKG9uZSwgImFiY2QiLCA4
KTsKCiAgY2hlY2sgKCgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhYmNk
ZSIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYWJjZGUiKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgiYWJjZGUiKSA9PSAxKSAmJiBzdHJsZW4gKCJhYmNkZSIpICsgMSA8PSA4
ID8gX19idWlsdGluX3N0cmNweSAob25lLCAiYWJjZGUiKSArIHN0cmxlbiAoImFiY2RlIikgOiAo
KGNoYXIgKikgKF9fbWVtcGNweSkgKG9uZSwgImFiY2RlIiwgc3RybGVuICgiYWJjZGUiKSArIDEp
IC0gMSkpIDogX19zdHBjcHkgKG9uZSwgImFiY2RlIikpKSAtIG9uZSkgPT0gNSwgOSk7CiAgZXF1
YWwgKG9uZSwgImFiY2RlIiwgMTApOwoKICBjaGVjayAoKChfX2V4dGVuc2lvbl9fIChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoImFiY2RlZiIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYWJj
ZGVmIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImFiY2RlZiIpID09IDEpICYmIHN0
cmxlbiAoImFiY2RlZiIpICsgMSA8PSA4ID8gX19idWlsdGluX3N0cmNweSAob25lLCAiYWJjZGVm
IikgKyBzdHJsZW4gKCJhYmNkZWYiKSA6ICgoY2hhciAqKSAoX19tZW1wY3B5KSAob25lLCAiYWJj
ZGVmIiwgc3RybGVuICgiYWJjZGVmIikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUsICJhYmNk
ZWYiKSkpIC0gb25lKSA9PSA2LCAxMSk7CiAgZXF1YWwgKG9uZSwgImFiY2RlZiIsIDEyKTsKCiAg
Y2hlY2sgKCgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhYmNkZWZnIikg
PyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJhYmNkZWZnIikgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikoImFiY2RlZmciKSA9PSAxKSAmJiBzdHJsZW4gKCJhYmNkZWZnIikgKyAxIDw9
IDggPyBfX2J1aWx0aW5fc3RyY3B5IChvbmUsICJhYmNkZWZnIikgKyBzdHJsZW4gKCJhYmNkZWZn
IikgOiAoKGNoYXIgKikgKF9fbWVtcGNweSkgKG9uZSwgImFiY2RlZmciLCBzdHJsZW4gKCJhYmNk
ZWZnIikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUsICJhYmNkZWZnIikpKSAtIG9uZSkgPT0g
NywgMTMpOwogIGVxdWFsIChvbmUsICJhYmNkZWZnIiwgMTQpOwoKICBjaGVjayAoKChfX2V4dGVu
c2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImFiY2RlZmdoIikgPyAoKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCJhYmNkZWZnaCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJh
YmNkZWZnaCIpID09IDEpICYmIHN0cmxlbiAoImFiY2RlZmdoIikgKyAxIDw9IDggPyBfX2J1aWx0
aW5fc3RyY3B5IChvbmUsICJhYmNkZWZnaCIpICsgc3RybGVuICgiYWJjZGVmZ2giKSA6ICgoY2hh
ciAqKSAoX19tZW1wY3B5KSAob25lLCAiYWJjZGVmZ2giLCBzdHJsZW4gKCJhYmNkZWZnaCIpICsg
MSkgLSAxKSkgOiBfX3N0cGNweSAob25lLCAiYWJjZGVmZ2giKSkpIC0gb25lKSA9PSA4LCAxNSk7
CiAgZXF1YWwgKG9uZSwgImFiY2RlZmdoIiwgMTYpOwoKICBjaGVjayAoKChfX2V4dGVuc2lvbl9f
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImFiY2RlZmdoaSIpID8gKCgoc2l6ZV90KShjb25zdCB2
b2lkICopKCgiYWJjZGVmZ2hpIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImFiY2Rl
ZmdoaSIpID09IDEpICYmIHN0cmxlbiAoImFiY2RlZmdoaSIpICsgMSA8PSA4ID8gX19idWlsdGlu
X3N0cmNweSAob25lLCAiYWJjZGVmZ2hpIikgKyBzdHJsZW4gKCJhYmNkZWZnaGkiKSA6ICgoY2hh
ciAqKSAoX19tZW1wY3B5KSAob25lLCAiYWJjZGVmZ2hpIiwgc3RybGVuICgiYWJjZGVmZ2hpIikg
KyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUsICJhYmNkZWZnaGkiKSkpIC0gb25lKSA9PSA5LCAx
Nyk7CiAgZXF1YWwgKG9uZSwgImFiY2RlZmdoaSIsIDE4KTsKCiAgY2hlY2sgKCgoX19leHRlbnNp
b25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJ4IikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCJ4IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIngiKSA9PSAxKSAmJiBzdHJs
ZW4gKCJ4IikgKyAxIDw9IDggPyBfX2J1aWx0aW5fc3RyY3B5IChvbmUsICJ4IikgKyBzdHJsZW4g
KCJ4IikgOiAoKGNoYXIgKikgKF9fbWVtcGNweSkgKG9uZSwgIngiLCBzdHJsZW4gKCJ4IikgKyAx
KSAtIDEpKSA6IF9fc3RwY3B5IChvbmUsICJ4IikpKSAtIG9uZSkgPT0gMSwgMTkpOwogIGVxdWFs
IChvbmUsICJ4IiwgMjApOwogIGVxdWFsIChvbmUrMiwgImNkZWZnaGkiLCAyMSk7CgogIGNoZWNr
ICgoKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgieHgiKSA/ICgoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgoInh4IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInh4
IikgPT0gMSkgJiYgc3RybGVuICgieHgiKSArIDEgPD0gOCA/IF9fYnVpbHRpbl9zdHJjcHkgKG9u
ZSwgInh4IikgKyBzdHJsZW4gKCJ4eCIpIDogKChjaGFyICopIChfX21lbXBjcHkpIChvbmUsICJ4
eCIsIHN0cmxlbiAoInh4IikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUsICJ4eCIpKSkgLSBv
bmUpID09IDIsIDIyKTsKICBlcXVhbCAob25lLCAieHgiLCAyMyk7CiAgZXF1YWwgKG9uZSszLCAi
ZGVmZ2hpIiwgMjQpOwoKICBjaGVjayAoKChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoInh4eCIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgieHh4IikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoInh4eCIpID09IDEpICYmIHN0cmxlbiAoInh4eCIpICsgMSA8
PSA4ID8gX19idWlsdGluX3N0cmNweSAob25lLCAieHh4IikgKyBzdHJsZW4gKCJ4eHgiKSA6ICgo
Y2hhciAqKSAoX19tZW1wY3B5KSAob25lLCAieHh4Iiwgc3RybGVuICgieHh4IikgKyAxKSAtIDEp
KSA6IF9fc3RwY3B5IChvbmUsICJ4eHgiKSkpIC0gb25lKSA9PSAzLCAyNSk7CiAgZXF1YWwgKG9u
ZSwgInh4eCIsIDI2KTsKICBlcXVhbCAob25lKzQsICJlZmdoaSIsIDI3KTsKCiAgY2hlY2sgKCgo
X19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJ4eHh4IikgPyAoKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKCJ4eHh4IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInh4
eHgiKSA9PSAxKSAmJiBzdHJsZW4gKCJ4eHh4IikgKyAxIDw9IDggPyBfX2J1aWx0aW5fc3RyY3B5
IChvbmUsICJ4eHh4IikgKyBzdHJsZW4gKCJ4eHh4IikgOiAoKGNoYXIgKikgKF9fbWVtcGNweSkg
KG9uZSwgInh4eHgiLCBzdHJsZW4gKCJ4eHh4IikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUs
ICJ4eHh4IikpKSAtIG9uZSkgPT0gNCwgMjgpOwogIGVxdWFsIChvbmUsICJ4eHh4IiwgMjkpOwog
IGVxdWFsIChvbmUrNSwgImZnaGkiLCAzMCk7CgogIGNoZWNrICgoKF9fZXh0ZW5zaW9uX18gKF9f
YnVpbHRpbl9jb25zdGFudF9wICgieHh4eHgiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
Inh4eHh4IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInh4eHh4IikgPT0gMSkgJiYg
c3RybGVuICgieHh4eHgiKSArIDEgPD0gOCA/IF9fYnVpbHRpbl9zdHJjcHkgKG9uZSwgInh4eHh4
IikgKyBzdHJsZW4gKCJ4eHh4eCIpIDogKChjaGFyICopIChfX21lbXBjcHkpIChvbmUsICJ4eHh4
eCIsIHN0cmxlbiAoInh4eHh4IikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUsICJ4eHh4eCIp
KSkgLSBvbmUpID09IDUsIDMxKTsKICBlcXVhbCAob25lLCAieHh4eHgiLCAzMik7CiAgZXF1YWwg
KG9uZSs2LCAiZ2hpIiwgMzMpOwoKICBjaGVjayAoKChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoInh4eHh4eCIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgieHh4eHh4
IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInh4eHh4eCIpID09IDEpICYmIHN0cmxl
biAoInh4eHh4eCIpICsgMSA8PSA4ID8gX19idWlsdGluX3N0cmNweSAob25lLCAieHh4eHh4Iikg
KyBzdHJsZW4gKCJ4eHh4eHgiKSA6ICgoY2hhciAqKSAoX19tZW1wY3B5KSAob25lLCAieHh4eHh4
Iiwgc3RybGVuICgieHh4eHh4IikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUsICJ4eHh4eHgi
KSkpIC0gb25lKSA9PSA2LCAzNCk7CiAgZXF1YWwgKG9uZSwgInh4eHh4eCIsIDM1KTsKICBlcXVh
bCAob25lKzcsICJoaSIsIDM2KTsKCiAgY2hlY2sgKCgoX19leHRlbnNpb25fXyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCJ4eHh4eHh4IikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJ4eHh4
eHh4IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInh4eHh4eHgiKSA9PSAxKSAmJiBz
dHJsZW4gKCJ4eHh4eHh4IikgKyAxIDw9IDggPyBfX2J1aWx0aW5fc3RyY3B5IChvbmUsICJ4eHh4
eHh4IikgKyBzdHJsZW4gKCJ4eHh4eHh4IikgOiAoKGNoYXIgKikgKF9fbWVtcGNweSkgKG9uZSwg
Inh4eHh4eHgiLCBzdHJsZW4gKCJ4eHh4eHh4IikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUs
ICJ4eHh4eHh4IikpKSAtIG9uZSkgPT0gNywgMzcpOwogIGVxdWFsIChvbmUsICJ4eHh4eHh4Iiwg
MzgpOwogIGVxdWFsIChvbmUrOCwgImkiLCAzOSk7CgogIGNoZWNrICgoKF9fZXh0ZW5zaW9uX18g
KF9fYnVpbHRpbl9jb25zdGFudF9wICgiYyIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgi
YyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJjIikgPT0gMSkgJiYgc3RybGVuICgi
YyIpICsgMSA8PSA4ID8gX19idWlsdGluX3N0cmNweSAoKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRp
bl9jb25zdGFudF9wICgiYiIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYiIpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJiIikgPT0gMSkgJiYgc3RybGVuICgiYiIpICsgMSA8
PSA4ID8gX19idWlsdGluX3N0cmNweSAoKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgiYSIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYSIpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKCJhIikgPT0gMSkgJiYgc3RybGVuICgiYSIpICsgMSA8PSA4ID8gX19i
dWlsdGluX3N0cmNweSAob25lLCAiYSIpICsgc3RybGVuICgiYSIpIDogKChjaGFyICopIChfX21l
bXBjcHkpIChvbmUsICJhIiwgc3RybGVuICgiYSIpICsgMSkgLSAxKSkgOiBfX3N0cGNweSAob25l
LCAiYSIpKSksICJiIikgKyBzdHJsZW4gKCJiIikgOiAoKGNoYXIgKikgKF9fbWVtcGNweSkgKChf
X2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImEiKSA/ICgoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoImEiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYSIpID09IDEp
ICYmIHN0cmxlbiAoImEiKSArIDEgPD0gOCA/IF9fYnVpbHRpbl9zdHJjcHkgKG9uZSwgImEiKSAr
IHN0cmxlbiAoImEiKSA6ICgoY2hhciAqKSAoX19tZW1wY3B5KSAob25lLCAiYSIsIHN0cmxlbiAo
ImEiKSArIDEpIC0gMSkpIDogX19zdHBjcHkgKG9uZSwgImEiKSkpLCAiYiIsIHN0cmxlbiAoImIi
KSArIDEpIC0gMSkpIDogX19zdHBjcHkgKChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoImEiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImEiKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgiYSIpID09IDEpICYmIHN0cmxlbiAoImEiKSArIDEgPD0gOCA/IF9f
YnVpbHRpbl9zdHJjcHkgKG9uZSwgImEiKSArIHN0cmxlbiAoImEiKSA6ICgoY2hhciAqKSAoX19t
ZW1wY3B5KSAob25lLCAiYSIsIHN0cmxlbiAoImEiKSArIDEpIC0gMSkpIDogX19zdHBjcHkgKG9u
ZSwgImEiKSkpLCAiYiIpKSksICJjIikgKyBzdHJsZW4gKCJjIikgOiAoKGNoYXIgKikgKF9fbWVt
cGNweSkgKChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImIiKSA/ICgoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoImIiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi
YiIpID09IDEpICYmIHN0cmxlbiAoImIiKSArIDEgPD0gOCA/IF9fYnVpbHRpbl9zdHJjcHkgKChf
X2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImEiKSA/ICgoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoImEiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYSIpID09IDEp
ICYmIHN0cmxlbiAoImEiKSArIDEgPD0gOCA/IF9fYnVpbHRpbl9zdHJjcHkgKG9uZSwgImEiKSAr
IHN0cmxlbiAoImEiKSA6ICgoY2hhciAqKSAoX19tZW1wY3B5KSAob25lLCAiYSIsIHN0cmxlbiAo
ImEiKSArIDEpIC0gMSkpIDogX19zdHBjcHkgKG9uZSwgImEiKSkpLCAiYiIpICsgc3RybGVuICgi
YiIpIDogKChjaGFyICopIChfX21lbXBjcHkpICgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKCJhIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJhIikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoImEiKSA9PSAxKSAmJiBzdHJsZW4gKCJhIikgKyAxIDw9IDgg
PyBfX2J1aWx0aW5fc3RyY3B5IChvbmUsICJhIikgKyBzdHJsZW4gKCJhIikgOiAoKGNoYXIgKikg
KF9fbWVtcGNweSkgKG9uZSwgImEiLCBzdHJsZW4gKCJhIikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5
IChvbmUsICJhIikpKSwgImIiLCBzdHJsZW4gKCJiIikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5ICgo
X19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhIikgPyAoKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCJhIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImEiKSA9PSAx
KSAmJiBzdHJsZW4gKCJhIikgKyAxIDw9IDggPyBfX2J1aWx0aW5fc3RyY3B5IChvbmUsICJhIikg
KyBzdHJsZW4gKCJhIikgOiAoKGNoYXIgKikgKF9fbWVtcGNweSkgKG9uZSwgImEiLCBzdHJsZW4g
KCJhIikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUsICJhIikpKSwgImIiKSkpLCAiYyIsIHN0
cmxlbiAoImMiKSArIDEpIC0gMSkpIDogX19zdHBjcHkgKChfX2V4dGVuc2lvbl9fIChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoImIiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImIiKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYiIpID09IDEpICYmIHN0cmxlbiAoImIiKSArIDEg
PD0gOCA/IF9fYnVpbHRpbl9zdHJjcHkgKChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoImEiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImEiKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgiYSIpID09IDEpICYmIHN0cmxlbiAoImEiKSArIDEgPD0gOCA/IF9f
YnVpbHRpbl9zdHJjcHkgKG9uZSwgImEiKSArIHN0cmxlbiAoImEiKSA6ICgoY2hhciAqKSAoX19t
ZW1wY3B5KSAob25lLCAiYSIsIHN0cmxlbiAoImEiKSArIDEpIC0gMSkpIDogX19zdHBjcHkgKG9u
ZSwgImEiKSkpLCAiYiIpICsgc3RybGVuICgiYiIpIDogKChjaGFyICopIChfX21lbXBjcHkpICgo
X19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhIikgPyAoKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCJhIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImEiKSA9PSAx
KSAmJiBzdHJsZW4gKCJhIikgKyAxIDw9IDggPyBfX2J1aWx0aW5fc3RyY3B5IChvbmUsICJhIikg
KyBzdHJsZW4gKCJhIikgOiAoKGNoYXIgKikgKF9fbWVtcGNweSkgKG9uZSwgImEiLCBzdHJsZW4g
KCJhIikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChvbmUsICJhIikpKSwgImIiLCBzdHJsZW4gKCJi
IikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5ICgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0
YW50X3AgKCJhIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJhIikgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoImEiKSA9PSAxKSAmJiBzdHJsZW4gKCJhIikgKyAxIDw9IDggPyBf
X2J1aWx0aW5fc3RyY3B5IChvbmUsICJhIikgKyBzdHJsZW4gKCJhIikgOiAoKGNoYXIgKikgKF9f
bWVtcGNweSkgKG9uZSwgImEiLCBzdHJsZW4gKCJhIikgKyAxKSAtIDEpKSA6IF9fc3RwY3B5IChv
bmUsICJhIikpKSwgImIiKSkpLCAiYyIpKSkgLSBvbmUpID09IDMsIDQwKTsKICBlcXVhbCAob25l
LCAiYWJjIiwgNDEpOwogIGVxdWFsIChvbmUgKyA0LCAieHh4IiwgNDIpOwp9CgppbnQKbWFpbiAo
dm9pZCkKewogIGludCBzdGF0dXM7CgoKICB0ZXN0X3N0cGNweSAoKTsKCiAgaWYgKGVycm9ycyA9
PSAwKQogICAgewogICAgICBzdGF0dXMgPSAwOwogICAgICBwdXRzKCJObyBlcnJvcnMuIik7CiAg
ICB9CiAgZWxzZQogICAgewogICAgICBzdGF0dXMgPSAxOwogICAgICBwcmludGYoIiVaZCBlcnJv
cnMuXG4iLCBlcnJvcnMpOwogICAgfQoKICByZXR1cm4gc3RhdHVzOwp9Cg==



More information about the Gcc-bugs mailing list