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]

c/5203: initializer element is not constant



>Number:         5203
>Category:       c
>Synopsis:       initializer element is not constant
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 27 02:26:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     georg.wild@gmx.de
>Release:        latest cvs
>Organization:
>Environment:
glibc-2.2.90 i686-pc-linux-gnu
>Description:
I don't exactly know whether this is really a bug! It might also be possible that this is only because of less error tolerance.
When I compile the attachment with gcc 3.0.1 it works, with current cvs I got errors in the following manor:
libsmb/errormap.c:1357: initializer element is not constant
libsmb/errormap.c:1357: (near initialization for `ntstatus_to_werror_map[531]')
>How-To-Repeat:
gcc errormap.i
>Fix:

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

IyAxICJsaWJzbWIvZXJyb3JtYXAuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxp
bmU+IgojIDEgImxpYnNtYi9lcnJvcm1hcC5jIgojIDIyICJsaWJzbWIvZXJyb3JtYXAuYyIKIyAx
ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDEKIyAyNSAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEgImlu
Y2x1ZGUvY29uZmlnLmgiIDEKIyAyNiAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKIyAxICJpbmNs
dWRlL2xvY2FsLmgiIDEKIyAyOSAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgNzYgImluY2x1ZGUv
aW5jbHVkZXMuaCIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI2
ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjkxICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjkyICIvdXNyL2xv
Y2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzIwICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzIx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjcgIi91c3IvbG9jYWwvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKIyAxICIv
dXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRl
L3N0ZGRlZi5oIiAxIDMKIyAyMDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
c2l6ZV90OwojIDMwICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3No
b3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
X191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBf
X3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsK
IyA0OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBj
aGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNp
Z25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3Vp
bnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50
IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
X191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1
YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9f
Z2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90
Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5
cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50
IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90
IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsK
ICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsK
dHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25k
c190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9j
a190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsK
CgoKCgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBf
X2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYg
bG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlw
ZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250
NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90
IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRl
ZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2lu
dHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiMgMjMgIi91c3IvbG9jYWwv
aW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp
dHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMK
c3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9Owoj
IDI0ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3RydWN0
IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlubG9j
azsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRf
ZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0
YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19z
Y2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3Qg
X19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsK
ICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0
CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3Ig
X19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQg
X19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRo
cmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsKICBp
bnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tpbmQ7
CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsK
CgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0
cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKCnR5cGVkZWYgc3RydWN0IF9w
dGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19yd19sb2NrOwog
IGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZXI7CiAgX3B0aHJl
YWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZV93
YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNoYXJlZDsKfSBwdGhyZWFkX3J3
bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9fcHNo
YXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVkZWYgdm9sYXRpbGUgaW50IHB0
aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgc3RydWN0IF9wdGhyZWFkX2Zh
c3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsKICBpbnQgX19iYV9wcmVzZW50
OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhyZWFkX2JhcnJpZXJfdDsKCgp0
eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7
CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyAzMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5
cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3No
b3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xv
bmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7
CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoK
CgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vX3Q7CgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90
OwoKCgoKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoK
CgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190
OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgoKCgoKdHlwZWRlZiBfX29mZjY0X3Qgb2Zm
X3Q7CgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBp
ZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXpl
X3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2Fk
ZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNyL2xvY2FsL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA1
OSAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190
OwojIDcwICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX190aW1lX3QgdGlt
ZV90OwojIDgyICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX19jbG9ja2lk
X3QgY2xvY2tpZF90OwojIDk0ICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYg
X190aW1lcl90IHRpbWVyX3Q7CiMgMTMzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVmIF9fc3Vz
ZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91
c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdWludDsKIyAxOTAgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
Mwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7
CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7
CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7
CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7
CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9f
ICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGlu
dCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CiMgMjEy
ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvZW5kaWFuLmgiIDEgMwojIDM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3IvbG9jYWwv
aW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMjEzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMzEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiMgMzIgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwojIDIz
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwp0eXBlZGVmIGludCBfX3NpZ19h
dG9taWNfdDsKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgX192
YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwogIH0gX19zaWdz
ZXRfdDsKIyAzNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCnR5cGVk
ZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1l
LmgiIDEgMwojIDEwNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNw
ZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMg
NDUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKIyAxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDY3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90
aW1lLmgiIDMKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1
c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxl
Y3QuaCIgMiAzCiMgNTUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKdHlwZWRl
ZiBsb25nIGludCBfX2ZkX21hc2s7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKCgoKICAgIF9f
ZmRfbWFzayBmZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsKCgoKCgog
IH0gZmRfc2V0OwoKCgoKCgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwojIDk1ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCgoKCgoKCgpleHRlcm4gaW50IHNlbGVjdCAoaW50
IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAg
IGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgZmRfc2V0
ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2
YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSA7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQg
X19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAg
IGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3Nl
dCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1
Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIGNv
bnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKSA7CgoKCiMgMjE2ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5
cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjE5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CiMgMjQzICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250X3Q7CgoK
CnR5cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250
NjRfdCBmc2ZpbGNudF90OwoKCgoKCnR5cGVkZWYgX19ibGtjbnQ2NF90IGJsa2NudDY0X3Q7CnR5
cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNmaWxjbnQ2NF90
IGZzZmlsY250NjRfdDsKCgoKIyA3NyAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9z
eXMvdGltZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMjcgIi91
c3IvbG9jYWwvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl
L2JpdHMvdGltZS5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90aW1lLmgiIDIg
MwojIDM4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwoKIyA1NiAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N5cy90aW1lLmgiIDMKc3RydWN0IHRpbWV6b25lCiAgewogICAgaW50IHR6X21p
bnV0ZXN3ZXN0OwogICAgaW50IHR6X2RzdHRpbWU7CiAgfTsKCnR5cGVkZWYgc3RydWN0IHRpbWV6
b25lICpfX3Jlc3RyaWN0IF9fdGltZXpvbmVfcHRyX3Q7CiMgNzIgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zeXMvdGltZS5oIiAzCmV4dGVybiBpbnQgZ2V0dGltZW9mZGF5IChzdHJ1Y3QgdGltZXZhbCAq
X19yZXN0cmljdCBfX3R2LAogICAgICAgICAgICAgICAgICAgICAgICAgX190aW1lem9uZV9wdHJf
dCBfX3R6KSA7CgoKCgpleHRlcm4gaW50IHNldHRpbWVvZmRheSAoX19jb25zdCBzdHJ1Y3QgdGlt
ZXZhbCAqX190diwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRpbWV6
b25lICpfX3R6KSA7CgoKCgoKZXh0ZXJuIGludCBhZGp0aW1lIChfX2NvbnN0IHN0cnVjdCB0aW1l
dmFsICpfX2RlbHRhLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX29sZGRl
bHRhKSA7CgoKCgplbnVtIF9faXRpbWVyX3doaWNoCiAgewoKICAgIElUSU1FUl9SRUFMID0gMCwK
CgogICAgSVRJTUVSX1ZJUlRVQUwgPSAxLAoKCgogICAgSVRJTUVSX1BST0YgPSAyCgogIH07CgoK
CnN0cnVjdCBpdGltZXJ2YWwKICB7CgogICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7Cgog
ICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7CiAgfTsKCgoKCnR5cGVkZWYgZW51bSBfX2l0aW1l
cl93aGljaCBfX2l0aW1lcl93aGljaF90OwoKCgoKCgpleHRlcm4gaW50IGdldGl0aW1lciAoX19p
dGltZXJfd2hpY2hfdCBfX3doaWNoLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1l
cnZhbCAqX192YWx1ZSkgOwoKCgoKZXh0ZXJuIGludCBzZXRpdGltZXIgKF9faXRpbWVyX3doaWNo
X3QgX193aGljaCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnZh
bCAqX19yZXN0cmljdCBfX25ldywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJ2
YWwgKl9fcmVzdHJpY3QgX19vbGQpIDsKCgoKZXh0ZXJuIGludCB1dGltZXMgKF9fY29uc3QgY2hh
ciAqX19maWxlLCBfX2NvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZwWzJdKQogICAgIDsKIyAxNzEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdGltZS5oIiAzCgojIDgwICJpbmNsdWRlL2luY2x1ZGVz
LmgiIDIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAzMCAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzkgIi91
c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDIgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9i
aXRzL3RpbWUuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDIgMwojIDEx
OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7
CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9u
OwogIGludCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9p
c2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CgoK
Cgp9OwoKCgoKc3RydWN0IGl0aW1lcnNwZWMKICB7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50
ZXJ2YWw7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7CiAgfTsKCgpzdHJ1Y3Qgc2lnZXZl
bnQ7CiMgMTYzICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBjbG9ja190IGNs
b2NrICh2b2lkKSA7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3QgKl9fdGltZXIpIDsKCgpl
eHRlcm4gZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiB0aW1lX3QgbWt0aW1lIChz
dHJ1Y3QgdG0gKl9fdHApIDsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoKCgpleHRlcm4gY2hhciAqc3Ry
cHRpbWUgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHApCiAgICAg
OwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIp
IDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1l
cikgOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jl
c3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9f
cmVzdHJpY3QgX190cCkgOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfciAoX19jb25z
dCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoKCgpleHRlcm4gY2hhciAqYXNjdGlt
ZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4gY2hhciAqY3RpbWUgKF9fY29u
c3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lX3IgKF9fY29u
c3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgpleHRlcm4gY2hhciAqY3RpbWVfciAoX19jb25zdCB0
aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9f
cmVzdHJpY3QgX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsKZXh0ZXJuIGlu
dCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsKCgoKCmV4dGVybiBjaGFy
ICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQg
ZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0aW1l
IChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSA7CiMgMjcxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGlt
ZS5oIiAzCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4g
dGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0ZXJuIGludCBkeXNpemUg
KGludCBfX3llYXIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50
IG5hbm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVzdGVkX3RpbWUsCiAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSA7CgoKCmV4
dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVz
cGVjICpfX3JlcykgOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZSAoY2xvY2tpZF90IF9fY2xv
Y2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGlt
ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQog
ICAgIDsKCgoKZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNsb2NraWRfdCBfX2Nsb2NrX2lk
LCBpbnQgX19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0
IHRpbWVzcGVjICpfX3JlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1l
c3BlYyAqX19yZW0pIDsKCgpleHRlcm4gaW50IGNsb2NrX2dldGNwdWNsb2NraWQgKHBpZF90IF9f
cGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIDsKCgoKCmV4dGVybiBpbnQgdGltZXJfY3JlYXRl
IChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
aWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVy
X3QgKl9fcmVzdHJpY3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUgKHRp
bWVyX3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lICh0aW1lcl90IF9f
dGltZXJpZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBz
dHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fb3ZhbHVlKSA7CgoKZXh0ZXJu
IGludCB0aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMg
Kl9fdmFsdWUpCiAgICAgOwoKCmV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1biAodGltZXJfdCBf
X3RpbWVyaWQpIDsKIyAzNDIgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIGlu
dCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlIChfX2NvbnN0IGNo
YXIgKl9fc3RyaW5nKSA7CiMgMzU3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVy
biBpbnQgZ2V0ZGF0ZV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKSA7CgoKCgoj
IDgxICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyA5MCAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwv
aW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Jl
c291cmNlLmgiIDEgMwojIDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAz
CmVudW0gX19ybGltaXRfcmVzb3VyY2UKewoKICBSTElNSVRfQ1BVID0gMCwKCgoKICBSTElNSVRf
RlNJWkUgPSAxLAoKCgogIFJMSU1JVF9EQVRBID0gMiwKCgoKICBSTElNSVRfU1RBQ0sgPSAzLAoK
CgogIFJMSU1JVF9DT1JFID0gNCwKCgoKCgoKICBSTElNSVRfUlNTID0gNSwKCgoKICBSTElNSVRf
Tk9GSUxFID0gNywKICBSTElNSVRfT0ZJTEUgPSBSTElNSVRfTk9GSUxFLAoKCgoKICBSTElNSVRf
QVMgPSA5LAoKCgogIFJMSU1JVF9OUFJPQyA9IDYsCgoKCiAgUkxJTUlUX01FTUxPQ0sgPSA4LAoK
CgogIFJMSU1JVF9MT0NLUyA9IDEwLAoKCiAgUkxJTUlUX05MSU1JVFMgPSAxMSwKICBSTElNX05M
SU1JVFMgPSBSTElNSVRfTkxJTUlUUwoKCn07CiMgMTA5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0
cy9yZXNvdXJjZS5oIiAzCnR5cGVkZWYgX19ybGltNjRfdCBybGltX3Q7CgoKdHlwZWRlZiBfX3Js
aW02NF90IHJsaW02NF90OwoKCnN0cnVjdCBybGltaXQKICB7CgogICAgcmxpbV90IHJsaW1fY3Vy
OwoKICAgIHJsaW1fdCBybGltX21heDsKICB9OwoKCnN0cnVjdCBybGltaXQ2NAogIHsKCiAgICBy
bGltNjRfdCBybGltX2N1cjsKCiAgICBybGltNjRfdCBybGltX21heDsKIH07CgoKCmVudW0gX19y
dXNhZ2Vfd2hvCnsKCiAgUlVTQUdFX1NFTEYgPSAwLAoKCgogIFJVU0FHRV9DSElMRFJFTiA9IC0x
LAoKCgogIFJVU0FHRV9CT1RIID0gLTIKCn07CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0
cy90aW1lLmgiIDEgMwojIDE1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvcmVzb3VyY2UuaCIg
MiAzCgoKc3RydWN0IHJ1c2FnZQogIHsKCiAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKCiAg
ICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKCiAgICBsb25nIGludCBydV9tYXhyc3M7CgoKICAg
IGxvbmcgaW50IHJ1X2l4cnNzOwoKICAgIGxvbmcgaW50IHJ1X2lkcnNzOwoKICAgIGxvbmcgaW50
IHJ1X2lzcnNzOwoKCiAgICBsb25nIGludCBydV9taW5mbHQ7CgogICAgbG9uZyBpbnQgcnVfbWFq
Zmx0OwoKICAgIGxvbmcgaW50IHJ1X25zd2FwOwoKCiAgICBsb25nIGludCBydV9pbmJsb2NrOwoK
ICAgIGxvbmcgaW50IHJ1X291YmxvY2s7CgogICAgbG9uZyBpbnQgcnVfbXNnc25kOwoKICAgIGxv
bmcgaW50IHJ1X21zZ3JjdjsKCiAgICBsb25nIGludCBydV9uc2lnbmFsczsKCgoKICAgIGxvbmcg
aW50IHJ1X252Y3N3OwoKCiAgICBsb25nIGludCBydV9uaXZjc3c7CiAgfTsKCgoKCgoKCmVudW0g
X19wcmlvcml0eV93aGljaAp7CiAgUFJJT19QUk9DRVNTID0gMCwKCiAgUFJJT19QR1JQID0gMSwK
CiAgUFJJT19VU0VSID0gMgoKfTsKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9yZXNvdXJj
ZS5oIiAyIDMKCgoKCgoKCgoKCgoKCnR5cGVkZWYgZW51bSBfX3JsaW1pdF9yZXNvdXJjZSBfX3Js
aW1pdF9yZXNvdXJjZV90Owp0eXBlZGVmIGVudW0gX19ydXNhZ2Vfd2hvIF9fcnVzYWdlX3dob190
Owp0eXBlZGVmIGVudW0gX19wcmlvcml0eV93aGljaCBfX3ByaW9yaXR5X3doaWNoX3Q7CiMgNTUg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwpleHRlcm4gaW50IGdldHJsaW1p
dCAoX19ybGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLCBzdHJ1Y3QgcmxpbWl0ICpfX3JsaW1p
dHMpIF9fYXNtX18gKCIiICJnZXRybGltaXQ2NCIpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRybGlt
aXQ2NCAoX19ybGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAogICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgcmxpbWl0NjQgKl9fcmxpbWl0cykgOwojIDc1ICIvdXNyL2xvY2FsL2luY2x1
ZGUvc3lzL3Jlc291cmNlLmgiIDMKZXh0ZXJuIGludCBzZXRybGltaXQgKF9fcmxpbWl0X3Jlc291
cmNlX3QgX19yZXNvdXJjZSwgX19jb25zdCBzdHJ1Y3QgcmxpbWl0ICpfX3JsaW1pdHMpIF9fYXNt
X18gKCIiICJzZXRybGltaXQ2NCIpOwoKCgoKCgoKZXh0ZXJuIGludCBzZXRybGltaXQ2NCAoX19y
bGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHN0cnVjdCBybGltaXQ2NCAqX19ybGltaXRzKSA7CgoKCgpleHRlcm4gaW50IGdldHJ1c2Fn
ZSAoX19ydXNhZ2Vfd2hvX3QgX193aG8sIHN0cnVjdCBydXNhZ2UgKl9fdXNhZ2UpIDsKCgoKCgpl
eHRlcm4gaW50IGdldHByaW9yaXR5IChfX3ByaW9yaXR5X3doaWNoX3QgX193aGljaCwgaWRfdCBf
X3dobykgOwoKCgpleHRlcm4gaW50IHNldHByaW9yaXR5IChfX3ByaW9yaXR5X3doaWNoX3QgX193
aGljaCwgaWRfdCBfX3dobywgaW50IF9fcHJpbykKICAgICA7CgoKIyA5MSAiaW5jbHVkZS9pbmNs
dWRlcy5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIyAyOCAi
L3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCgojIDE3NSAiL3Vzci9sb2NhbC9pbmNsdWRl
L3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvcG9zaXhfb3B0LmgiIDEg
MwojIDE3NiAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKIyAxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMSAzCiMgMjMgIi91c3IvbG9jYWwvaW5j
bHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMv
d29yZHNpemUuaCIgMSAzCiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50
cy5oIiAyIDMKIyAxODAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMTk5ICIv
dXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMDAg
Ii91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMjQwICIvdXNyL2xvY2FsL2luY2x1
ZGUvdW5pc3RkLmgiIDMKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoKCgoKCgp0eXBlZGVm
IF9fc29ja2xlbl90IHNvY2tsZW5fdDsKIyAyNjAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gaW50IGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUp
IDsKCgoKCmV4dGVybiBpbnQgZXVpZGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBf
X3R5cGUpIDsKIyAyOTMgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19v
ZmY2NF90IGxzZWVrIChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2Up
IF9fYXNtX18gKCIiICJsc2VlazY0Iik7CiMgMzAyICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIF9fb2ZmNjRfdCBsc2VlazY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zm
c2V0LCBpbnQgX193aGVuY2UpIDsKCgoKZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQpIDsKCgoK
ZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0
ZXMpIDsKCgpleHRlcm4gc3NpemVfdCB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19i
dWYsIHNpemVfdCBfX24pIDsKIyAzMjMgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0
ZXMsIF9fb2ZmNjRfdCBfX29mZnNldCkgX19hc21fXyAoIiIgInByZWFkNjQiKTsKCgpleHRlcm4g
c3NpemVfdCBwd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19u
Ynl0ZXMsIF9fb2ZmNjRfdCBfX29mZnNldCkgX19hc21fXyAoIiIgInB3cml0ZTY0Iik7CiMgMzQw
ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NCAo
aW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCmV4dGVybiBzc2l6ZV90IHB3cml0ZTY0IChp
bnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCgoKCgoKZXh0ZXJuIGludCBwaXBlIChp
bnQgX19waXBlZGVzWzJdKSA7CiMgMzYyICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMK
ZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgOwojIDM3
MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiB1bnNpZ25lZCBpbnQgc2xl
ZXAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKCgoKCgoKZXh0ZXJuIF9fdXNlY29uZHNfdCB1
YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBfX3VzZWNvbmRzX3QgX19pbnRlcnZhbCkKICAg
ICA7CgoKCmV4dGVybiBpbnQgdXNsZWVwIChfX3VzZWNvbmRzX3QgX191c2Vjb25kcykgOwoKCgoK
CmV4dGVybiBpbnQgcGF1c2UgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBjaG93biAoX19jb25zdCBj
aGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIDsKCgoK
ZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19n
cm91cCkgOwoKCgoKZXh0ZXJuIGludCBsY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3Vp
ZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICA7CgoKCgpleHRlcm4gaW50IGNoZGly
IChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gaW50IGZjaGRpciAoaW50IF9fZmQp
IDsKIyA0MjMgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gY2hhciAqZ2V0
Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwoKCgoKCmV4dGVybiBjaGFyICpnZXRf
Y3VycmVudF9kaXJfbmFtZSAodm9pZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0d2QgKGNoYXIg
Kl9fYnVmKSA7CgoKCgpleHRlcm4gaW50IGR1cCAoaW50IF9fZmQpIDsKCgpleHRlcm4gaW50IGR1
cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIDsKCgpleHRlcm4gY2hhciAqKl9fZW52aXJvbjsKCmV4
dGVybiBjaGFyICoqZW52aXJvbjsKCgoKCgpleHRlcm4gaW50IGV4ZWN2ZSAoX19jb25zdCBjaGFy
ICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCiAgICAgICAgICAgICAgICAgICBjaGFy
ICpfX2NvbnN0IF9fZW52cFtdKSA7CgoKCgpleHRlcm4gaW50IGZleGVjdmUgKGludCBfX2ZkLCBj
aGFyICpfX2NvbnN0IF9fYXJndltdLCBjaGFyICpfX2NvbnN0IF9fZW52cFtdKQogICAgIDsKCgoK
CmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9f
YXJndltdKSA7CgoKCmV4dGVybiBpbnQgZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19j
b25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY2wgKF9fY29uc3QgY2hh
ciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBleGVj
dnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSA7CgoKCgpl
eHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAqX19h
cmcsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIDsKCgoKCmV4dGVybiB2
b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK
CgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwojIDI1ICIv
dXNyL2xvY2FsL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAgICBfUENfTElO
S19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19O
QU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19D
SE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgog
ICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAg
IF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9QQ19SRUNfSU5D
Ul9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUlO
X1hGRVJfU0laRSwKCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCgogICAgX1BDX0FMTE9DX1NJWkVf
TUlOLAoKICAgIF9QQ19TWU1MSU5LX01BWAoKICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01B
WCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBT
X01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1Ra
TkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAg
X1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAg
X1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpF
RF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0Nf
TUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoK
ICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAg
IF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1ND
X0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxU
QV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAg
ICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoK
CiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1f
VkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgoK
CiAgICBfU0NfQkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1ND
QUxFX01BWCwKCiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01B
WCwKCiAgICBfU0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAg
IF9TQ19MSU5FX01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05B
TUVfTUFYLAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0Nf
Ml9DX0RFViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBf
U0NfMl9TV19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAgIF9T
Q19QSUlfWFRJLAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJORVQsCgog
ICAgX1NDX1BJSV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwKCiAgICBfU0Nf
VUlPX01BWElPViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19Q
SUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1ND
X1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00s
CgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19USFJFQURf
U0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1NDX0dFVFBX
X1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9N
QVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVB
RF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RI
UkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVB
RF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgog
ICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1Qs
CgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NP
TkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAg
X1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgs
CgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAg
ICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVOX0VO
SF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwKCiAgICBf
U0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBHMiwKCiAg
ICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NIQVJfQklU
LAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lOVF9NQVgs
CgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JEX0JJVCwK
CiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpFX01BWCwK
CiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NIUlRfTUFY
LAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01B
WCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9B
UkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0Nf
TkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBf
U0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1ND
X1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19Y
T1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFM
VElNRV9USFJFQURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklFUlMs
CgogICAgX1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xBTkdf
U1VQUE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUsCgog
ICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RFVklD
RV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZEX01HTVQs
CgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRUUklCVVRFUywK
CiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAgICBfU0NfTU9O
T1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAgIF9TQ19TSU5HTEVfUFJP
Q0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUywK
CiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19SRUdFWF9WRVJT
SU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0NfU1BBV04sCgog
ICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwK
CiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAg
ICBfU0NfVElNRU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19V
U0VSX0dST1VQUywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9QQlMsCgogICAg
X1NDXzJfUEJTX0FDQ09VTlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAgICBfU0NfMl9Q
QlNfTUVTU0FHRSwKCiAgICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxPT1BfTUFYLAoK
ICAgIF9TQ19TVFJFQU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAgICBfU0NfVjZf
SUxQMzJfT0ZGMzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0NfVjZfTFA2NF9P
RkY2NCwKCiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9OQU1FX01BWCwK
CiAgICBfU0NfVFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAgICBfU0NfVFJB
Q0VfSU5IRVJJVCwKCiAgICBfU0NfVFJBQ0VfTE9HCgogIH07CgoKCgoKZW51bQogIHsKICAgIF9D
U19QQVRILAoKCgoKICAgIF9DU19MRlNfQ0ZMQUdTID0gMTAwMCwKCiAgICBfQ1NfTEZTX0xERkxB
R1MsCgogICAgX0NTX0xGU19MSUJTLAoKICAgIF9DU19MRlNfTElOVEZMQUdTLAoKICAgIF9DU19M
RlM2NF9DRkxBR1MsCgogICAgX0NTX0xGUzY0X0xERkxBR1MsCgogICAgX0NTX0xGUzY0X0xJQlMs
CgogICAgX0NTX0xGUzY0X0xJTlRGTEFHUywKCgoKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9D
RkxBR1MgPSAxMTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAgX0NT
X1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxB
R1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAz
Ml9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUywKCiAgICBf
Q1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRf
Q0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9M
UDY0X09GRjY0X0xJQlMsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAg
X0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdf
TERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9M
UEJJR19PRkZCSUdfTElOVEZMQUdTLAoKCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0NG
TEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTERGTEFHUywKCiAgICBfQ1NfUE9T
SVhfVjZfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElO
VEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19Q
T1NJWF9WNl9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZG
QklHX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSU5URkxBR1MsCgogICAg
X0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09G
RjY0X0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1Nf
UE9TSVhfVjZfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09G
RkJJR19DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZMQUdTLAoKICAg
IF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdf
T0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMKCiAg
fTsKIyA1MDEgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxvbmcg
aW50IHBhdGhjb25mIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkgOwoKCmV4dGVy
biBsb25nIGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJuIGxv
bmcgaW50IHN5c2NvbmYgKGludCBfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19uYW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fbGVuKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwaWQgKHZvaWQpIDsKCgpleHRlcm4gX19w
aWRfdCBnZXRwcGlkICh2b2lkKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwZ3JwICh2b2lkKSA7
CiMgNTM2ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3QgX19n
ZXRwZ2lkIChfX3BpZF90IF9fcGlkKSA7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90
IF9fcGlkKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0cGdpZCAoX19waWRfdCBfX3BpZCwgX19waWRf
dCBfX3BnaWQpIDsKIyA1NjIgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g
aW50IHNldHBncnAgKHZvaWQpIDsKIyA1ODAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIg
MwpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIDsKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0c2lk
IChfX3BpZF90IF9fcGlkKSA7CgoKCmV4dGVybiBfX3VpZF90IGdldHVpZCAodm9pZCkgOwoKCmV4
dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRnaWQgKHZv
aWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRlZ2lkICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdl
dGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgOwoKCgpleHRlcm4gaW50IGdy
b3VwX21lbWJlciAoX19naWRfdCBfX2dpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldHVpZCAoX191
aWRfdCBfX3VpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRyZXVpZCAoX191aWRfdCBfX3J1aWQsIF9f
dWlkX3QgX19ldWlkKSA7CgoKCgpleHRlcm4gaW50IHNldGV1aWQgKF9fdWlkX3QgX191aWQpIDsK
CgoKCgoKZXh0ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19naWQpIDsKCgoKCmV4dGVybiBpbnQg
c2V0cmVnaWQgKF9fZ2lkX3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCkgOwoKCgoKZXh0ZXJuIGlu
dCBzZXRlZ2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgoKCmV4dGVybiBfX3BpZF90IGZvcmsgKHZv
aWQpIDsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQpIDsKCgoKCgpleHRlcm4gY2hh
ciAqdHR5bmFtZSAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBfX2Zk
LCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoKCmV4dGVybiBpbnQgaXNhdHR5IChp
bnQgX19mZCkgOwoKCgoKCmV4dGVybiBpbnQgdHR5c2xvdCAodm9pZCkgOwoKCgoKZXh0ZXJuIGlu
dCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7CgoKCmV4
dGVybiBpbnQgc3ltbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190
bykgOwoKCgoKZXh0ZXJuIGludCByZWFkbGluayAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cGF0aCwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgdW5saW5rIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoK
CmV4dGVybiBpbnQgcm1kaXIgKF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBfX3Bp
ZF90IHRjZ2V0cGdycCAoaW50IF9fZmQpIDsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9f
ZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSA7CgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCkg
OwoKCgoKZXh0ZXJuIGludCBnZXRsb2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVfdCBfX25hbWVf
bGVuKSA7CgoKCgpleHRlcm4gaW50IHNldGxvZ2luIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoj
IDcyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNs
dWRlL2dldG9wdC5oIiAxIDMKIyA0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2dldG9wdC5oIiAzCmV4
dGVybiBjaGFyICpvcHRhcmc7CiMgNjEgIi91c3IvbG9jYWwvaW5jbHVkZS9nZXRvcHQuaCIgMwpl
eHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKCgpleHRlcm4gaW50IG9w
dG9wdDsKIyAxNDUgIi91c3IvbG9jYWwvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IGdl
dG9wdCAoaW50IF9fX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX19hcmd2LCBjb25zdCBjaGFyICpfX3No
b3J0b3B0cyk7CiMgNzI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgoKCgoK
ZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKCgoK
CgoKZXh0ZXJuIGludCBzZXRob3N0bmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBf
X2xlbikgOwoKCgpleHRlcm4gaW50IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgOwoKCgoKCmV4
dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKZXh0
ZXJuIGludCBzZXRkb21haW5uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVu
KSA7CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lkKSA7CgoKZXh0ZXJuIGludCByZXZva2Ug
KF9fY29uc3QgY2hhciAqX19maWxlKSA7CgoKCgoKCgpleHRlcm4gaW50IHByb2ZpbCAodW5zaWdu
ZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg
ICAgICAgICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKSA7CgoKCgoKZXh0
ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpleHRlcm4gY2hhciAqZ2V0
dXNlcnNoZWxsICh2b2lkKSA7CmV4dGVybiB2b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgOwpleHRl
cm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4gaW50IGRhZW1vbiAoaW50
IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgOwoKCgoKCgpleHRlcm4gaW50IGNocm9vdCAoX19j
b25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgKF9fY29uc3QgY2hh
ciAqX19wcm9tcHQpIDsKCgoKCgpleHRlcm4gaW50IGZzeW5jIChpbnQgX19mZCkgOwoKCgoKCgpl
eHRlcm4gbG9uZyBpbnQgZ2V0aG9zdGlkICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9p
ZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKCgoKZXh0ZXJuIGludCB0cnVuY2F0ZSAoX19jb25zdCBjaGFyICpfX2Zp
bGUsIF9fb2ZmNjRfdCBfX2xlbmd0aCkgX19hc21fXyAoIiIgInRydW5jYXRlNjQiKTsKCgoKCgoK
CmV4dGVybiBpbnQgdHJ1bmNhdGU2NCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmNjRfdCBf
X2xlbmd0aCkgOwoKCgoKCgoKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGludCBfX2ZkLCBfX29mZjY0
X3QgX19sZW5ndGgpIF9fYXNtX18gKCIiICJmdHJ1bmNhdGU2NCIpOwoKCgoKCgpleHRlcm4gaW50
IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgoKZXh0ZXJu
IGludCBnZXRkdGFibGVzaXplICh2b2lkKSA7CiMgODY2ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIGludCBicmsgKHZvaWQgKl9fYWRkcikgOwoKCgoKCmV4dGVybiB2b2lk
ICpzYnJrIChpbnRwdHJfdCBfX2RlbHRhKSA7CiMgODg3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikg
OwojIDkxMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgbG9ja2Yg
KGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgX19hc21fXyAoIiIgImxvY2tm
NjQiKTsKCgoKCgoKZXh0ZXJuIGludCBsb2NrZjY0IChpbnQgX19mZCwgaW50IF9fY21kLCBfX29m
ZjY0X3QgX19sZW4pIDsKIyA5MzggIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRl
cm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKSA7CgoKCgoKCgpleHRlcm4gY2hhciAqY3J5
cHQgKF9fY29uc3QgY2hhciAqX19rZXksIF9fY29uc3QgY2hhciAqX19zYWx0KSA7CgoKCmV4dGVy
biB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBfX2VkZmxhZykgOwoKCgoKCgpleHRl
cm4gdm9pZCBzd2FiIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19mcm9tLCB2b2lkICpfX3Jl
c3RyaWN0IF9fdG8sCiAgICAgICAgICAgICAgICAgIHNzaXplX3QgX19uKSA7CgoKCgoKCgpleHRl
cm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CiMgOTgzICIvdXNyL2xvY2FsL2luY2x1ZGUv
dW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJlcGFyZSkg
KHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19wYXJlbnQpICh2b2lk
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgOwoK
CgojIDk1ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9z
dGRpby5oIiAxIDMKIyAzMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCiMgMSAi
L3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMzUgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA0
NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUg
RklMRTsKIyA1NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg
X0lPX0ZJTEUgX19GSUxFOwojIDY1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAzMiAiL3Vzci9sb2NhbC9pbmNsdWRl
L2xpYmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDE0
ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8z
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAyOTMgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4x
L2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDMyMCAiL3Vz
ci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9z
dGRkZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvbG9jYWwv
aW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19jb25m
aWcuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9s
b2NhbC9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9s
b2NhbC9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy93
Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDY3ICIv
dXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291
bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9
IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19jb25m
aWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3RhdGVf
dCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3Bv
czsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2NvbnYuaCIg
MSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9nY29udi5oIiAzCiMgMSAiL3Vzci9sb2NhbC9p
bmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMwoj
IDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ5ICIvdXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMiAz
CiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9nY29udi5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwv
Z2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51bQp7CiAg
X19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NP
TlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwK
ICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoKICBf
X0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07CgoK
CmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJP
UlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3Rl
cF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFu
c19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3Rl
cCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50
LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19n
Y29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19n
Y29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9f
Z2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90
cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGlu
dCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBl
ZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2Nv
bnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2Nv
bnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5z
X2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29u
dl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVj
dCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAq
X19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFy
ICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19p
bml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVk
ZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsK
ICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0
YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291
dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoK
ICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBf
X21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252
X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBz
OwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAq
X19nY29udl90OwojIDQ1ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBl
ZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAg
c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9f
ZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2lu
dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0
eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fU0lfXykpKTsKIyAzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUzICIv
dXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIv
dXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRl
L3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMg
NTQgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAyIDMKIyAxNjAgIi91c3IvbG9jYWwvaW5j
bHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTcw
ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsK
CgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0
cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTkzICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0
X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRf
bm9jb252Cn07CiMgMjYxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lP
X0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBf
SU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFz
ZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciog
X0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNl
OwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVj
dCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGlu
dCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVu
c2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0Owog
IGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQg
Kl9fcGFkMTsKICB2b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsx
NSAqIHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0
cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBz
dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklM
RV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y
XzFfc3RkZXJyXzsKIyAzNDQgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYg
X19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9p
ZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2
b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQg
X19pb19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRfZm4g
Y29va2llX3JlYWRfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93cml0
ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fc2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlvbl90
Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4gY29va2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlwZWRl
ZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9mbiAqcmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0ZTsK
ICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAgX19pb19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nvb2tp
ZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRlZiBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNvb2tp
ZV9pb19mdW5jdGlvbnNfdDsKCnN0cnVjdCBfSU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZvaWQg
X0lPX2Nvb2tpZV9pbml0IChzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQgX19y
ZWFkX3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fY29va2llLCBf
SU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9fZm5zKTsKCgoKCgoKCmV4dGVybiBpbnQgX191bmRl
cmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7CmV4
dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX193
dW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxF
ICopIDsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CiMg
NDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT19nZXRjIChf
SU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAq
X19mcCkgOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50
IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2Nr
ZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lP
X0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0
ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSA7CiMgNDU2ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9f
cmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAg
ICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7CmV4dGVybiBpbnQgX0lPX3ZmcHJp
bnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7CmV4dGVybiBfX3NzaXplX3QgX0lP
X3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7CmV4dGVybiBzaXplX3QgX0lPX3Nn
ZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9f
c2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwpleHRlcm4gX19vZmY2
NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgOwoKZXh0ZXJuIHZv
aWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIDsKIyA2NiAiL3Vzci9sb2NhbC9p
bmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0Owoj
IDgyICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIF9HX2Zwb3M2NF90IGZw
b3NfdDsKCgp0eXBlZGVmIF9HX2Zwb3M2NF90IGZwb3M2NF90OwojIDEyOSAiL3Vzci9sb2NhbC9p
bmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdGRpb19saW0u
aCIgMSAzCiMgMTMwICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVybiBG
SUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoK
CgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJu
IGludCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsK
CgoKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSBfX2FzbV9fICgiIiAidG1wZmlsZTY0
Iik7CgoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkgOwoKCmV4dGVybiBjaGFyICp0
bXBuYW0gKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3Mp
IDsKIyAxNzggIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1w
bmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19z
dHJlYW0pIDsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4g
aW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmNs
b3NlYWxsICh2b2lkKSA7CiMgMjA5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgX19hc21fXyAoIiIgImZvcGVuNjQiKTsKCgpl
eHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSBfX2FzbV9fICgiIiAiZnJlb3BlbjY0Iik7CiMgMjIyICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19tb2RlcykgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0
IGNoYXIgKl9fbW9kZXMpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW5jb29raWUgKHZvaWQgKl9f
cmVzdHJpY3QgX19tYWdpY19jb29raWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0lP
X2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lvX2Z1bmNzKSA7CgoKZXh0ZXJuIEZJTEUgKmZtZW1v
cGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoK
CgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fYnVmbG9j
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX3NpemVs
b2MpIDsKCgoKCgpleHRlcm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAg
ICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSA7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZm
ZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgOwoKCmV4dGVybiB2b2lkIHNldGxp
bmVidWYgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIC4uLikgOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAg
OwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xp
c3QgX19hcmcpIDsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3Ms
IHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGlu
dCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mLAogICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVy
biBpbnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNw
cmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IHZkcHJpbnRmIChpbnQg
X19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAgICAgICAgICAgICAgICAg
ICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAo
X19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2FuZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpOwoKCmV4dGVybiBp
bnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9f
YXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7
CgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGMg
KEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSA7CgoKCgoKCgpl
eHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0
Y2hhcl91bmxvY2tlZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3Ry
ZWFtKSA7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgpleHRl
cm4gaW50IHB1dGNoYXIgKGludCBfX2MpIDsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2Nr
ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2Nr
ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tl
ZCAoaW50IF9fYykgOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIDsKCgpl
eHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hh
ciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKQogICAgIDsKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19z
KSA7CiMgNDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gX19zc2l6ZV90
IF9fZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p
IDsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGlu
dCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKSA7CgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0
cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVz
dHJpY3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CgoKCmV4dGVybiBpbnQgZnB1
dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBw
dXRzIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmlj
dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoKCmV4dGVybiBzaXpl
X3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9p
ZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4
dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hl
bmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4g
dm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNTAyICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBf
X29mZiwgaW50IF9fd2hlbmNlKSBfX2FzbV9fICgiIiAiZnNlZWtvNjQiKTsKCgpleHRlcm4gX19v
ZmY2NF90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0pIF9fYXNtX18gKCIiICJmdGVsbG82NCIpOwoK
ZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9f
cmVzdHJpY3QgX19wb3MpIF9fYXNtX18gKCIiICJmZ2V0cG9zNjQiKTsKCmV4dGVybiBpbnQgZnNl
dHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgX19hc21fXyAoIiIg
ImZzZXRwb3M2NCIpOwojIDUyMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu
IGludCBmc2Vla282NCAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hl
bmNlKSA7CmV4dGVybiBfX29mZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVy
biBpbnQgZmdldHBvczY0IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19y
ZXN0cmljdCBfX3BvcykKICAgICA7CmV4dGVybiBpbnQgZnNldHBvczY0IChGSUxFICpfX3N0cmVh
bSwgX19jb25zdCBmcG9zNjRfdCAqX19wb3MpIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJ
TEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRl
cm4gaW50IGZlcnJvciAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJf
dW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt
KSA7CgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpleHRl
cm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0
W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qg
X3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgoK
ZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFy
ICpfX21vZGVzKSA7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoK
ZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgOwoKCgoKCmV4dGVybiBjaGFyICpjdXNl
cmlkIChjaGFyICpfX3MpIDsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFj
a19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IDsKZXh0ZXJuIGludCBvYnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0
IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9s
aXN0IF9fYXJncykgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVh
bSkgOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRl
cm4gdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKIyA2MzAgIi91c3IvbG9jYWwv
aW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RkaW8uaCIg
MSAzCiMgMzMgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJuIF9faW5s
aW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251Y192
YV9saXN0IF9fYXJnKQp7CiAgcmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9fZm10LCBfX2FyZyk7
Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXIgKHZvaWQpCnsKICByZXR1cm4gX0lPX2dl
dGMgKHN0ZGluKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjX3VubG9ja2VkIChGSUxF
ICpfX2ZwKQp7CiAgcmV0dXJuICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19y
ZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lP
X3JlYWRfcHRyKyspOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyX3VubG9ja2VkICh2
b2lkKQp7CiAgcmV0dXJuICgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3Jl
YWRfZW5kID8gX191ZmxvdyAoc3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChzdGRpbiktPl9J
T19yZWFkX3B0cisrKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyIChpbnQgX19j
KQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJu
ICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5k
KSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2ln
bmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoK
CmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJl
YW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSkt
Pl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAo
X19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAo
X19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19j
KQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193
cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDog
KHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0K
CgoKCgpleHRlcm4gX19pbmxpbmUgX19zc2l6ZV90CmdldGxpbmUgKGNoYXIgKipfX2xpbmVwdHIs
IHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiBfX2dldGRlbGltIChfX2xp
bmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGludApm
ZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9m
bGFncyAmIDB4MTApICE9IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApmZXJyb3JfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgy
MCkgIT0gMCk7Cn0KIyA2MzEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKIyA5
OCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICIvdXNy
L2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0
ZGRlZi5oIiAzCnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyA5OSAiaW5jbHVkZS9pbmNsdWRlcy5o
IiAyCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMwojIDIyICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGlt
aXRzLmgiIDEgMwojIDEyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vz
ci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9s
aW1pdHMuaCIgMSAzCiMgMTI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDE0
NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl
L2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIyAxMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Bv
c2l4MV9saW0uaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAx
IDMKIyAzNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDMKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwojIDM3ICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9sb2NhbF9saW0uaCIgMiAzCiMgMTI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9w
b3NpeDFfbGltLmgiIDIgMwojIDE0NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAyIDMK
CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMwojIDE0OSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy94b3Blbl9saW0uaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3hv
cGVuX2xpbS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEg
MwojIDM1ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMiAzCiMgMTUzICIv
dXNyL2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDIzICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3lzL3BhcmFtLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGludXgvcGFyYW0uaCIg
MSAzCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxIDMKIyA1ICIvdXNy
L2xvY2FsL2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMiAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zeXMvcGFyYW0uaCIgMiAzCiMgMTAyICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDMzICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3RkbGliLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9sb2NhbC9pbmNsdWRl
L3N0ZGxpYi5oIiAyIDMKCgoKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3dhaXRm
bGFncy5oIiAxIDMKIyA0MyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDEgMwojIDY1ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0
YXR1czsKICAgIHN0cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNp
Zzo3OwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgX193X3JldGNvZGU6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAg
ICB9IF9fd2FpdF90ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWdu
ZWQgaW50IF9fd19zdG9wdmFsOjg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7
CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwog
IH07CiMgNDQgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgNjggIi91c3IvbG9j
YWwvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHVuaW9uCiAgewogICAgdW5pb24gd2FpdCAq
X191cHRyOwogICAgaW50ICpfX2lwdHI7CiAgfSBfX1dBSVRfU1RBVFVTIF9fYXR0cmlidXRlX18g
KChfX3RyYW5zcGFyZW50X3VuaW9uX18pKTsKIyA5NCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxp
Yi5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0g
ZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcg
aW50IHJlbTsKICB9IGxkaXZfdDsKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0CiAg
ewogICAgbG9uZyBsb25nIGludCBxdW90OwogICAgbG9uZyBsb25nIGludCByZW07CiAgfSBsbGRp
dl90OwojIDEzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBzaXplX3Qg
X19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9f
Y29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBp
bnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBh
dG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsK
CgoKZXh0ZXJuIGZsb2F0IHN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCmV4dGVy
biBsb25nIGRvdWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsK
CgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgOwoKCgpfX2V4dGVu
c2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQg
bG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
c3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50
IF9fYmFzZSkKICAgICA7CiMgMjExICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAyOCAiL3Vzci9sb2NhbC9pbmNs
dWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1
Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBp
bnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQg
Kl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAyMTIgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9sIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0
b3VsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xv
YykgOwoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwoKX19leHRlbnNpb25f
XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAg
ICA7CgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgOwoKZXh0ZXJuIGxv
bmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCgoK
CgoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGZsb2F0IF9fc3RydG9m
X2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91
cCkKICAgICA7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCkgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s
X2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoK
CmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2Jhc2UsIGludCBfX2dyb3VwKQogICAgIDsKCgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUK
c3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50
IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
X19iYXNlLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChf
X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0
cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIpCnsKICByZXR1cm4gX19zdHJ0b2ZfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZQpzdHJ0b2xkIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVy
biBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CgoKCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBp
bnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBs
b25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJu
IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoK
X19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b2xsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
ICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0
ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg
dW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmlj
dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgaW50IF9fYmFz
ZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jh
c2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9f
bnB0cikKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApKTsK
fQpleHRlcm4gX19pbmxpbmUgaW50CmF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0
dXJuIChpbnQpIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQpl
eHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICBy
ZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CgoKX19l
eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBj
aGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lk
ICopMCksIDEwKTsKfQojIDM4NCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biBjaGFyICpsNjRhIChsb25nIGludCBfX24pIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19j
b25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDM5NyAiL3Vzci9s
b2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIDsK
CgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoKZXh0ZXJu
IGNoYXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwK
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0ZXJuIGNo
YXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2Rh
dGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3Qg
KnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5k
X3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0
cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVu
c2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4dGVybiBp
bnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19z
dGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1Zikg
OwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm
KSA7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5z
aWduZWQgaW50IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpf
X3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91
YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxv
bmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVk
IHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQp
IDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNd
KSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1
bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlsz
XSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkg
OwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194
WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9y
dCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVk
IHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5k
NDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
bG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
IGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3Ig
KHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5k
NDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNy
YW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl
cikKICAgICA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVk
MTZ2WzNdLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl
cikgOwoKZXh0ZXJuIGludCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzdd
LAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsK
IyA1MjcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9j
IChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZv
aWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19w
dHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4g
dm9pZCBmcmVlICh2b2lkICpfX3B0cikgOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19w
dHIpIDsKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDI1ICIvdXNy
L2xvY2FsL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNiAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgoKCgoKCmV4dGVybiB2b2lkICphbGxvY2Eg
KHNpemVfdCBfX3NpemUpIDsKCgoKCgoKIyA1NDcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIu
aCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbiAodm9pZCAq
Kl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0
cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpf
X2Z1bmMpICh2b2lkKSkgOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAo
aW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIDsKCgoKCgpleHRl
cm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18p
KTsKCgoKCmV4dGVybiB2b2lkIF9FeGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChf
X25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lKSA7CgoKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lKSA7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNoYXIgKl9fc3RyaW5nKSA7CgoKCgoKZXh0
ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFs
dWUsIGludCBfX3JlcGxhY2UpCiAgICAgOwoKCmV4dGVybiBpbnQgdW5zZXRlbnYgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSA7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIDsKIyA2MjMg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFy
ICpfX3RlbXBsYXRlKSA7CiMgNjM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0
ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSBfX2FzbV9fICgiIiAibWtzdGVtcDY0
Iik7CgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NTAg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hh
ciAqX190ZW1wbGF0ZSkgOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19j
b21tYW5kKSA7CgoKCgoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgOwojIDY3MiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIDsKCgoK
CgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qg
dm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9mbl90OwoKCgoKCmV4
dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9f
YmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXpl
LCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9f
YmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBf
X2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9f
eCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9u
ZyBsb25nIGludCBsbGFicyAobG9uZyBsb25nIGludCBfX3gpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9f
ZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxk
aXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9u
ZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoj
IDcyOCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICplY3Z0IChk
b3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAg
ICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFy
ICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19k
ZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4
dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1
ZikgOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAq
X19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25n
IGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4g
aW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CmV4
dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24s
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4p
IDsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVz
dHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs
IHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19j
b25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1idG93YyAod2NoYXJf
dCAqX19yZXN0cmljdCBfX3B3YywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19z
LCB3Y2hhcl90IF9fd2NoYXIpIDsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAq
X19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgoKCmV4dGVybiBp
bnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgODA4ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fb3B0aW9ucCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgKl9fcmVz
dHJpY3QgX190b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X3ZhbHVlcCkgOwoKCgoKCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFyICpfX2tleSkg
OwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSA7CgoKCgoKCgpl
eHRlcm4gaW50IGdyYW50cHQgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdW5sb2NrcHQgKGlu
dCBfX2ZkKSA7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIDsKCgoKCgoKZXh0
ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu
KSA7CgoKZXh0ZXJuIGludCBnZXRwdCAodm9pZCkgOwoKCgoKCgpleHRlcm4gaW50IGdldGxvYWRh
dmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKCgoKCgoKIyAxMDYgImluY2x1
ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc29ja2V0Lmgi
IDEgMwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3Vpby5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5
cy91aW8uaCIgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Vpby5oIiAxIDMKIyA0
MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdWlvLmgiIDMKc3RydWN0IGlvdmVjCiAgewogICAg
dm9pZCAqaW92X2Jhc2U7CiAgICBzaXplX3QgaW92X2xlbjsKICB9OwojIDMwICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3lzL3Vpby5oIiAyIDMKCgoKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWR2IChpbnQg
X19mZCwgX19jb25zdCBzdHJ1Y3QgaW92ZWMgKl9fdmVjdG9yLCBpbnQgX19jb3VudCkKICAgICA7
CgoKCgoKCmV4dGVybiBzc2l6ZV90IHdyaXRldiAoaW50IF9fZmQsIF9fY29uc3Qgc3RydWN0IGlv
dmVjICpfX3ZlY3RvciwgaW50IF9fY291bnQpCiAgICAgOwoKCiMgMjggIi91c3IvbG9jYWwvaW5j
bHVkZS9zeXMvc29ja2V0LmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9s
b2NhbC9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9zb2NrZXQuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tl
dC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRz
L3NvY2tldC5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAz
MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDIgMwojIDQxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMwplbnVtIF9fc29ja2V0X3R5cGUKewogIFNPQ0tfU1RS
RUFNID0gMSwKCgogIFNPQ0tfREdSQU0gPSAyLAoKCiAgU09DS19SQVcgPSAzLAoKICBTT0NLX1JE
TSA9IDQsCgogIFNPQ0tfU0VRUEFDS0VUID0gNSwKCgogIFNPQ0tfUEFDS0VUID0gMTAKCgoKfTsK
IyAxNDIgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvc29ja2FkZHIuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9i
aXRzL3NvY2thZGRyLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5X3Q7
CiMgMTQzICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzCgoKc3RydWN0IHNv
Y2thZGRyCiAgewogICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5OwogICAgY2hhciBzYV9kYXRhWzE0
XTsKICB9OwojIDE2MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMKc3RydWN0
IHNvY2thZGRyX3N0b3JhZ2UKICB7CiAgICBzYV9mYW1pbHlfdCBzc19mYW1pbHk7CiAgICBfX3Vp
bnQzMl90IF9fc3NfYWxpZ247CiAgICBjaGFyIF9fc3NfcGFkZGluZ1soMTI4IC0gKDIgKiBzaXpl
b2YgKF9fdWludDMyX3QpKSldOwogIH07CgoKCmVudW0KICB7CiAgICBNU0dfT09CID0gMHgwMSwK
CiAgICBNU0dfUEVFSyA9IDB4MDIsCgogICAgTVNHX0RPTlRST1VURSA9IDB4MDQsCgoKCiAgICBN
U0dfVFJZSEFSRCA9IE1TR19ET05UUk9VVEUsCgoKICAgIE1TR19DVFJVTkMgPSAweDA4LAoKICAg
IE1TR19QUk9YWSA9IDB4MTAsCgogICAgTVNHX1RSVU5DID0gMHgyMCwKCiAgICBNU0dfRE9OVFdB
SVQgPSAweDQwLAoKICAgIE1TR19FT1IgPSAweDgwLAoKICAgIE1TR19XQUlUQUxMID0gMHgxMDAs
CgogICAgTVNHX0ZJTiA9IDB4MjAwLAoKICAgIE1TR19TWU4gPSAweDQwMCwKCiAgICBNU0dfQ09O
RklSTSA9IDB4ODAwLAoKICAgIE1TR19SU1QgPSAweDEwMDAsCgogICAgTVNHX0VSUlFVRVVFID0g
MHgyMDAwLAoKICAgIE1TR19OT1NJR05BTCA9IDB4NDAwMCwKCiAgICBNU0dfTU9SRSA9IDB4ODAw
MAoKICB9OwoKCgoKc3RydWN0IG1zZ2hkcgogIHsKICAgIHZvaWQgKm1zZ19uYW1lOwogICAgc29j
a2xlbl90IG1zZ19uYW1lbGVuOwoKICAgIHN0cnVjdCBpb3ZlYyAqbXNnX2lvdjsKICAgIGludCBt
c2dfaW92bGVuOwoKICAgIHZvaWQgKm1zZ19jb250cm9sOwogICAgc29ja2xlbl90IG1zZ19jb250
cm9sbGVuOwoKICAgIGludCBtc2dfZmxhZ3M7CiAgfTsKCgpzdHJ1Y3QgY21zZ2hkcgogIHsKICAg
IHNpemVfdCBjbXNnX2xlbjsKCiAgICBpbnQgY21zZ19sZXZlbDsKICAgIGludCBjbXNnX3R5cGU7
CgogICAgX19leHRlbnNpb25fXyB1bnNpZ25lZCBjaGFyIF9fY21zZ19kYXRhIFtdOwoKICB9Owoj
IDI1NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMKZXh0ZXJuIHN0cnVjdCBj
bXNnaGRyICpfX2Ntc2dfbnh0aGRyIChzdHJ1Y3QgbXNnaGRyICpfX21oZHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNtc2doZHIgKl9fY21zZykgOwoKCgoK
ZXh0ZXJuIF9faW5saW5lIHN0cnVjdCBjbXNnaGRyICoKX19jbXNnX254dGhkciAoc3RydWN0IG1z
Z2hkciAqX19taGRyLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgaWYgKChzaXplX3QpIF9f
Y21zZy0+Y21zZ19sZW4gPCBzaXplb2YgKHN0cnVjdCBjbXNnaGRyKSkKCiAgICByZXR1cm4gMDsK
CiAgX19jbXNnID0gKHN0cnVjdCBjbXNnaGRyICopICgodW5zaWduZWQgY2hhciAqKSBfX2Ntc2cK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKCgoX19jbXNnLT5jbXNnX2xlbikgKyBz
aXplb2YgKHNpemVfdCkgLSAxKSAmIChzaXplX3QpIH4oc2l6ZW9mIChzaXplX3QpIC0gMSkpKTsK
ICBpZiAoKHVuc2lnbmVkIGNoYXIgKikgKF9fY21zZyArIDEpID4gKCh1bnNpZ25lZCBjaGFyICop
IF9fbWhkci0+bXNnX2NvbnRyb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICsgX19taGRyLT5tc2dfY29udHJvbGxlbikKICAgICAgfHwgKCh1bnNpZ25lZCBjaGFyICop
IF9fY21zZyArICgoKF9fY21zZy0+Y21zZ19sZW4pICsgc2l6ZW9mIChzaXplX3QpIC0gMSkgJiAo
c2l6ZV90KSB+KHNpemVvZiAoc2l6ZV90KSAtIDEpKQogICAgICAgICAgPiAoKHVuc2lnbmVkIGNo
YXIgKikgX19taGRyLT5tc2dfY29udHJvbCArIF9fbWhkci0+bXNnX2NvbnRyb2xsZW4pKSkKCiAg
ICByZXR1cm4gMDsKICByZXR1cm4gX19jbXNnOwp9CgoKCgplbnVtCiAgewogICAgU0NNX1JJR0hU
UyA9IDB4MDEsCgoKICAgIFNDTV9DUkVERU5USUFMUyA9IDB4MDIsCgoKICAgIF9fU0NNX0NPTk5F
Q1QgPSAweDAzCiAgfTsKCgoKc3RydWN0IHVjcmVkCnsKICBwaWRfdCBwaWQ7CiAgdWlkX3QgdWlk
OwogIGdpZF90IGdpZDsKfTsKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hc20vc29ja2V0Lmgi
IDEgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxIDMKIyA1ICIv
dXNyL2xvY2FsL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyIDMKIyAzMDYgIi91c3IvbG9jYWwvaW5j
bHVkZS9iaXRzL3NvY2tldC5oIiAyIDMKCgoKc3RydWN0IGxpbmdlcgogIHsKICAgIGludCBsX29u
b2ZmOwogICAgaW50IGxfbGluZ2VyOwogIH07CiMgMzYgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMv
c29ja2V0LmgiIDIgMwoKCgoKc3RydWN0IG9zb2NrYWRkcgogIHsKICAgIHVuc2lnbmVkIHNob3J0
IGludCBzYV9mYW1pbHk7CiAgICB1bnNpZ25lZCBjaGFyIHNhX2RhdGFbMTRdOwogIH07CgoKCgpl
bnVtCnsKICBTSFVUX1JEID0gMCwKCiAgU0hVVF9XUiwKCiAgU0hVVF9SRFdSCgp9OwojIDg3ICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCnR5cGVkZWYgdW5pb24geyBzdHJ1Y3Qg
c29ja2FkZHIgKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9fOyBzdHJ1Y3Qgc29ja2FkZHJfYXQgKl9f
cmVzdHJpY3QgX19zb2NrYWRkcl9hdF9fOyBzdHJ1Y3Qgc29ja2FkZHJfYXgyNSAqX19yZXN0cmlj
dCBfX3NvY2thZGRyX2F4MjVfXzsgc3RydWN0IHNvY2thZGRyX2RsICpfX3Jlc3RyaWN0IF9fc29j
a2FkZHJfZGxfXzsgc3RydWN0IHNvY2thZGRyX2VvbiAqX19yZXN0cmljdCBfX3NvY2thZGRyX2Vv
bl9fOyBzdHJ1Y3Qgc29ja2FkZHJfaW4gKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9pbl9fOyBzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfaW42X187IHN0cnVjdCBzb2Nr
YWRkcl9pbmFycCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luYXJwX187IHN0cnVjdCBzb2NrYWRk
cl9pcHggKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9pcHhfXzsgc3RydWN0IHNvY2thZGRyX2lzbyAq
X19yZXN0cmljdCBfX3NvY2thZGRyX2lzb19fOyBzdHJ1Y3Qgc29ja2FkZHJfbnMgKl9fcmVzdHJp
Y3QgX19zb2NrYWRkcl9uc19fOyBzdHJ1Y3Qgc29ja2FkZHJfdW4gKl9fcmVzdHJpY3QgX19zb2Nr
YWRkcl91bl9fOyBzdHJ1Y3Qgc29ja2FkZHJfeDI1ICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfeDI1
X187CiAgICAgICAgICAgICAgfSBfX1NPQ0tBRERSX0FSRyBfX2F0dHJpYnV0ZV9fICgoX190cmFu
c3BhcmVudF91bmlvbl9fKSk7CgoKdHlwZWRlZiB1bmlvbiB7IF9fY29uc3Qgc3RydWN0IHNvY2th
ZGRyICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfXzsgX19jb25zdCBzdHJ1Y3Qgc29ja2FkZHJfYXQg
Kl9fcmVzdHJpY3QgX19zb2NrYWRkcl9hdF9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9heDI1
ICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfYXgyNV9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9k
bCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2RsX187IF9fY29uc3Qgc3RydWN0IHNvY2thZGRyX2Vv
biAqX19yZXN0cmljdCBfX3NvY2thZGRyX2Vvbl9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9p
biAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luX187IF9fY29uc3Qgc3RydWN0IHNvY2thZGRyX2lu
NiAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luNl9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9p
bmFycCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luYXJwX187IF9fY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2lweCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2lweF9fOyBfX2NvbnN0IHN0cnVjdCBzb2Nr
YWRkcl9pc28gKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9pc29fXzsgX19jb25zdCBzdHJ1Y3Qgc29j
a2FkZHJfbnMgKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9uc19fOyBfX2NvbnN0IHN0cnVjdCBzb2Nr
YWRkcl91biAqX19yZXN0cmljdCBfX3NvY2thZGRyX3VuX187IF9fY29uc3Qgc3RydWN0IHNvY2th
ZGRyX3gyNSAqX19yZXN0cmljdCBfX3NvY2thZGRyX3gyNV9fOwogICAgICAgICAgICAgIH0gX19D
T05TVF9TT0NLQUREUl9BUkcgX19hdHRyaWJ1dGVfXyAoKF9fdHJhbnNwYXJlbnRfdW5pb25fXykp
OwoKCgoKCgoKZXh0ZXJuIGludCBzb2NrZXQgKGludCBfX2RvbWFpbiwgaW50IF9fdHlwZSwgaW50
IF9fcHJvdG9jb2wpIDsKCgoKCgpleHRlcm4gaW50IHNvY2tldHBhaXIgKGludCBfX2RvbWFpbiwg
aW50IF9fdHlwZSwgaW50IF9fcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
ZmRzWzJdKSA7CgoKZXh0ZXJuIGludCBiaW5kIChpbnQgX19mZCwgX19DT05TVF9TT0NLQUREUl9B
UkcgX19hZGRyLCBzb2NrbGVuX3QgX19sZW4pCiAgICAgOwoKCmV4dGVybiBpbnQgZ2V0c29ja25h
bWUgKGludCBfX2ZkLCBfX1NPQ0tBRERSX0FSRyBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgIHNvY2tsZW5fdCAqX19yZXN0cmljdCBfX2xlbikgOwoKCgoKCmV4dGVybiBpbnQgY29ubmVj
dCAoaW50IF9fZmQsIF9fQ09OU1RfU09DS0FERFJfQVJHIF9fYWRkciwgc29ja2xlbl90IF9fbGVu
KQogICAgIDsKCgoKZXh0ZXJuIGludCBnZXRwZWVybmFtZSAoaW50IF9fZmQsIF9fU09DS0FERFJf
QVJHIF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90ICpfX3Jlc3RyaWN0
IF9fbGVuKSA7CgoKCmV4dGVybiBzc2l6ZV90IHNlbmQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQg
Kl9fYnVmLCBzaXplX3QgX19uLCBpbnQgX19mbGFncykKICAgICA7CgoKCmV4dGVybiBzc2l6ZV90
IHJlY3YgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwgaW50IF9fZmxhZ3MpCiAg
ICAgOwoKCgpleHRlcm4gc3NpemVfdCBzZW5kdG8gKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9f
YnVmLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdzLCBfX0NP
TlNUX1NPQ0tBRERSX0FSRyBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90
IF9fYWRkcl9sZW4pIDsKCgoKCgpleHRlcm4gc3NpemVfdCByZWN2ZnJvbSAoaW50IF9fZmQsIHZv
aWQgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX24sIGludCBfX2ZsYWdzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgX19TT0NLQUREUl9BUkcgX19hZGRyLCBzb2NrbGVuX3QgKl9fcmVzdHJp
Y3QgX19hZGRyX2xlbikKICAgICA7CgoKCgpleHRlcm4gc3NpemVfdCBzZW5kbXNnIChpbnQgX19m
ZCwgX19jb25zdCBzdHJ1Y3QgbXNnaGRyICpfX21lc3NhZ2UsIGludCBfX2ZsYWdzKQogICAgIDsK
CgoKZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAoaW50IF9fZmQsIHN0cnVjdCBtc2doZHIgKl9fbWVz
c2FnZSwgaW50IF9fZmxhZ3MpCiAgICAgOwoKCgoKCmV4dGVybiBpbnQgZ2V0c29ja29wdCAoaW50
IF9fZmQsIGludCBfX2xldmVsLCBpbnQgX19vcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKl9fcmVzdHJpY3QgX19vcHR2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja2xl
bl90ICpfX3Jlc3RyaWN0IF9fb3B0bGVuKSA7CgoKCgpleHRlcm4gaW50IHNldHNvY2tvcHQgKGlu
dCBfX2ZkLCBpbnQgX19sZXZlbCwgaW50IF9fb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHZvaWQgKl9fb3B0dmFsLCBzb2NrbGVuX3QgX19vcHRsZW4pIDsKCgoKCgpleHRl
cm4gaW50IGxpc3RlbiAoaW50IF9fZmQsIGludCBfX24pIDsKCgoKCgoKZXh0ZXJuIGludCBhY2Nl
cHQgKGludCBfX2ZkLCBfX1NPQ0tBRERSX0FSRyBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICBz
b2NrbGVuX3QgKl9fcmVzdHJpY3QgX19hZGRyX2xlbikKICAgICA7CgoKCgoKCgpleHRlcm4gaW50
IHNodXRkb3duIChpbnQgX19mZCwgaW50IF9faG93KSA7CgoKCgpleHRlcm4gaW50IHNvY2thdG1h
cmsgKGludCBfX2ZkKSA7CgoKCgoKCgpleHRlcm4gaW50IGlzZmR0eXBlIChpbnQgX19mZCwgaW50
IF9fZmR0eXBlKSA7CgoKCiMgMTEwICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3VuLmgiIDEgMwojIDI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lz
L3VuLmgiIDMKCgoKc3RydWN0IHNvY2thZGRyX3VuCiAgewogICAgc2FfZmFtaWx5X3Qgc3VuX2Zh
bWlseTsKICAgIGNoYXIgc3VuX3BhdGhbMTA4XTsKICB9OwoKCgojIDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9zdHJpbmcuaCIgMSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMwoK
CgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcu
aCIgMiAzCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAog
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVf
dCBfX24pIDsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZv
aWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAo
dm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywK
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKZXh0
ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSA7CgoKZXh0
ZXJuIGludCBtZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBz
aXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lk
ICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiB2b2lkICpyYXdtZW1jaHIgKF9f
Y29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBf
X24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0
cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3NyYykKICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMs
IHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFy
ICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBp
bnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9f
czEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u
KSA7CiMgMTExICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBfX3N0
cmNvbGxfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxl
X3QgX19sKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBf
X3N0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbCkgOwoKCgoKZXh0ZXJu
IGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5n
LCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTU1ICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu
IGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBzaXpl
X3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9f
Y29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19z
LCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0
IGNoYXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRl
cm4gY2hhciAqc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNo
YXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4g
Y2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVsaW0pCiAgICAgOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBf
X3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1l
bW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxl
bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19t
ZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4dGVybiB2b2lk
ICptZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoKZXh0ZXJu
IHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywg
c2l6ZV90IF9fbWF4bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0
ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIgKnN0cmVy
cm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgoK
ZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiB2
b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24p
IDsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJu
IGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90
IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqaW5k
ZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9f
bCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50
IGZmc2xsIChsb25nIGxvbmcgaW50IF9fbGwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
aW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwg
c2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4g
aW50IF9fc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19z
MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3Ry
aW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVs
aW0pIDsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv
bnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQog
ICAgIDsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cG5j
cHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIGNoYXIgKnN0
cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIg
KnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAodm9pZCAq
X19zLCBzaXplX3QgX19uKSA7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoX19jb25zdCBj
aGFyICpfX2ZpbGVuYW1lKSA7CiMgMzU3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMK
IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzU4ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAxIDMKIyAyMjEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MwpleHRlcm4gX19pbmxpbmUgdm9pZCAqX19tZW1wY3B5X3NtYWxsICh2b2lkICosIGNoYXIsIGNo
YXIsIGNoYXIsIGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
dWludDE2X3QsIF9fdWludDE2X3QsIF9fdWludDMyX3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSB2b2lk
ICoKX19tZW1wY3B5X3NtYWxsICh2b2lkICpfX2Rlc3QxLAogICAgICAgICAgICAgICAgIGNoYXIg
X19zcmMwXzEsIGNoYXIgX19zcmMyXzEsIGNoYXIgX19zcmM0XzEsIGNoYXIgX19zcmM2XzEsCiAg
ICAgICAgICAgICAgICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191aW50MTZfdCBfX3NyYzRfMiwK
ICAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80
LAogICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWlu
dDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7
CiAgICB1bnNpZ25lZCBjaGFyIF9fYzsKICB9ICpfX3UgPSBfX2Rlc3QxOwogIHN3aXRjaCAoKHVu
c2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X19jID0g
X19zcmMwXzE7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwog
ICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgYnJlYWs7CiAg
ICBjYXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X19jID0gX19zcmMyXzE7CiAg
ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsK
ICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBicmVhazsKICAgIGNhc2UgNToKICAg
ICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fYyA9IF9fc3JjNF8xOwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAg
ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX2MgPSBfX3Ny
YzZfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAg
IGJyZWFrOwogICAgY2FzZSA4OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191aSA9IF9f
c3JjNF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAg
ICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuICh2b2lkICopIF9fdTsKfQojIDM3NyAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29u
c3Qgdm9pZCAqX19zLCBpbnQgX19jKTsKIyA0MDUgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0
cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwg
X191aW50MTZfdCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX3VpbnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hh
ciAqCl9fc3RyY3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQx
Nl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50
MzJfdCBfX3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVf
dCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2
X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19k
ZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6
CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBf
X3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3Ut
Pl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoK
ICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAg
ICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2Fz
ZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25f
XyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAg
YnJlYWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9f
c3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAg
ICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+
X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwogICAgfQogIHJl
dHVybiBfX2Rlc3Q7Cn0KIyA1NzAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHBjcHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZf
dCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Vp
bnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Rw
Y3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3Jj
MF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBfX3Ny
YzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xl
bikKewogIHVuaW9uIHsKICAgIHVuc2lnbmVkIGludCBfX3VpOwogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9fdXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogICAgY2hhciBfX2M7CiAgfSAqX191
ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAg
ICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAg
Y2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAg
X191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNl
IDQ6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9f
ICgodm9pZCAqKSBfX3UgKyAzKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+
X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAg
ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1ww
JzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80Owog
ICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5f
X3VpID0gX19zcmM0XzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr
IDMpOwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4gJl9fdS0+X19jOwp9CiMgODkzICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBf
X3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QpOwpleHRlcm4gX19p
bmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVj
dCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3Vs
dF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsK
ICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2My
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9f
c3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsIGludCBfX3JlamVj
dDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1
bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19z
W19fcmVzdWx0XSAhPSBfX3JlamVjdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IF9fcmVqZWN0MiwgaW50IF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19z
dHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0
MiwKICAgICAgICAgICAgICBpbnQgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVz
dWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0g
IT0gX19yZWplY3QxCiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyICYmIF9f
c1tfX3Jlc3VsdF0gIT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1
bHQ7Cn0KIyA5NTAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4g
X19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNj
ZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpf
X3MsIGludCBfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdo
aWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4g
X19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAo
X19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIpCnsKICByZWdp
c3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2Fj
Y2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJl
dHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMyAoX19j
b25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUg
c2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50
IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9
IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRd
ID09IF9fYWNjZXB0MgogICAgICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAg
ICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTAwNyAiL3Vzci9sb2NhbC9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19z
dHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0
MikKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3Mg
IT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAq
KTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19z
dHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykK
ewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0g
X19hY2NlcHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0
dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9
CiMgMTA1OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lu
bGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipf
X25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFyICpfX3Ms
IGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9f
cyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgqX19zID09IF9f
c2VwKQogICAgKytfX3M7CiAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcyAhPSAn
XDAnKQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fcysrOwogICAgICB3aGlsZSAoKl9fcyAhPSAn
XDAnKQogICAgICAgIGlmICgqX19zKysgPT0gX19zZXApCiAgICAgICAgICB7CiAgICAgICAgICAg
IF9fc1stMV0gPSAnXDAnOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgKl9f
bmV4dHAgPSBfX3M7CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTA5MSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cnNlcF9nIChjaGFy
ICoqX19zdHJpbmdwLCBfX2NvbnN0IGNoYXIgKl9fZGVsaW0pOwojIDExMDkgIi91c3IvbG9jYWwv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBf
MWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAq
X19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSAmJiAoKl9fcyA9
IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmIChfX3Jl
amVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3Qp
IDogc3RyY2hyIChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgodm9pZCAqKTApKQogICAgKigq
X19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFy
ICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3Qy
KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBf
X3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAq
X19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0ZXIg
Y2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAgICAg
ICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAgICAgICAgICAgIF9fY3AgPSAo
KHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICBpZiAo
Kl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MikKICAgICAgICAgICAgewog
ICAgICAgICAgICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICB9CiAgICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAgICAqX19zID0gX19jcDsKICAg
IH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8z
YyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5l
IGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19y
ZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9f
czsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNo
YXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAgICAgICAgewogICAgICAgICAg
aWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX2NwID0gKCh2
b2lkICopMCk7CiAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCpf
X2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIgfHwgKl9fY3AgPT0gX19yZWpl
Y3QzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgKl9fY3ArKyA9ICdcMCc7CiAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICsrX19jcDsKICAgICAgICB9CiAg
ICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQojIDExOTAgIi91c3Iv
bG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9f
Y29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIw
OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0
cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAzNjEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIg
MiAzCgoKCgojIDM5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3VuLmgiIDIgMwoKCgoKCgoKIyAx
MTQgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMv
c3lzY2FsbC5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zeXNjYWxsLmgiIDMK
IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL3VuaXN0ZC5oIiAxIDMKIyAyNiAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N5cy9zeXNjYWxsLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS9iaXRzL3N5c2NhbGwuaCIgMSAzCiMgMzMgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3lzY2Fs
bC5oIiAyIDMKIyAxMTggImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEyNyAiaW5jbHVkZS9pbmNs
dWRlcy5oIgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmdzLmgiIDEgMwojIDEyOCAiaW5j
bHVkZS9pbmNsdWRlcy5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL21lbW9yeS5oIiAx
IDMKIyAxMzIgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvZmNudGwuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9mY250bC5oIiAzCgoK
CgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDEgMwojIDEzNiAiL3Vzci9s
b2NhbC9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMwpzdHJ1Y3QgZmxvY2sKICB7CiAgICBzaG9ydCBp
bnQgbF90eXBlOwogICAgc