public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/8499: [mainline regression] Tree checking failure on after error reported
@ 2002-11-08  2:16 jh
  0 siblings, 0 replies; only message in thread
From: jh @ 2002-11-08  2:16 UTC (permalink / raw)
  To: gcc-gnats


>Number:         8499
>Category:       c
>Synopsis:       [mainline regression] Tree checking failure on after error reported
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-illegal-code
>Submitter-Id:   net
>Arrival-Date:   Fri Nov 08 02:16:06 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     jh@suse.cz
>Release:        mainline
>Organization:
>Environment:
mainline/x86-64
>Description:
Parser gets confused by invalid code
>How-To-Repeat:
gcc -O2 qq.i
>Fix:

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

IyAxICJ2ZnByaW50Zi5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCgoK
CgoKCiMgMSAiLi4vaW5jbHVkZS9saWJjLXN5bWJvbHMuaCIgMQojIDU2ICIuLi9pbmNsdWRlL2xp
YmMtc3ltYm9scy5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJjLTIuMy9jYy9j
b25maWcuaCIgMQojIDU3ICIuLi9pbmNsdWRlL2xpYmMtc3ltYm9scy5oIiAyCiMgOCAiPGNvbW1h
bmQgbGluZT4iIDIKIyAxICJ2ZnByaW50Zi5jIgojIDE5ICJ2ZnByaW50Zi5jIgojIDEgIi4uL2lu
Y2x1ZGUvY3R5cGUuaCIgMQoKCmV4dGVybiBpbnQgX19pc2N0eXBlIChpbnQgX19jLCBpbnQgX19t
YXNrKTsKIyAxNCAiLi4vaW5jbHVkZS9jdHlwZS5oIgojIDEgIi4uL2xvY2FsZS9sb2NhbGVpbmZv
LmgiIDEKIyAyMyAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCIKIyAxICIvdXNyL2xpYjY0L2djYy1s
aWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTUxICIv
dXNyL2xpYjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMgNAp0eXBlZGVmIGxvbmcgaW50IHB0cmRpZmZfdDsKIyAyMTMgIi91c3IvbGliNjQvZ2NjLWxp
Yi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgbG9u
ZyB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDMyNSAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1z
dXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBpbnQgd2NoYXJfdDsK
IyAyNCAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCIgMgojIDEgIi4uL2luY2x1ZGUvbGFuZ2luZm8u
aCIgMQoKCiMgMSAiLi4vbG9jYWxlL2xhbmdpbmZvLmgiIDEKIyAyNCAiLi4vbG9jYWxlL2xhbmdp
bmZvLmgiCiMgMSAiLi4vaW5jbHVkZS9ubF90eXBlcy5oIiAxCiMgMSAiLi4vY2F0Z2V0cy9ubF90
eXBlcy5oIiAxCiMgMjIgIi4uL2NhdGdldHMvbmxfdHlwZXMuaCIKIyAxICIuLi9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDEKIyAyOTEgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIKIyAxICIuLi9pbmNsdWRl
L3N5cy9jZGVmcy5oIiAxCiMgMSAiLi4vbWlzYy9zeXMvY2RlZnMuaCIgMQojIDIgIi4uL2luY2x1
ZGUvc3lzL2NkZWZzLmgiIDIKIyAyOTIgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIgMgojIDMxNCAi
Li4vaW5jbHVkZS9mZWF0dXJlcy5oIgojIDEgIi4uL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEKIyAz
MTUgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIgMgojIDIzICIuLi9jYXRnZXRzL25sX3R5cGVzLmgi
IDIKIyAzMSAiLi4vY2F0Z2V0cy9ubF90eXBlcy5oIgoKCgp0eXBlZGVmIHZvaWQgKm5sX2NhdGQ7
CgoKdHlwZWRlZiBpbnQgbmxfaXRlbTsKCgpleHRlcm4gbmxfY2F0ZCBjYXRvcGVuIChfX2NvbnN0
IGNoYXIgKl9fY2F0X25hbWUsIGludCBfX2ZsYWcpIDsKCgoKZXh0ZXJuIGNoYXIgKmNhdGdldHMg
KG5sX2NhdGQgX19jYXRhbG9nLCBpbnQgX19zZXQsIGludCBfX251bWJlciwKICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gaW50IGNhdGNsb3Nl
IChubF9jYXRkIF9fY2F0YWxvZykgOwoKCiMgMiAiLi4vaW5jbHVkZS9ubF90eXBlcy5oIiAyCiMg
MjUgIi4uL2xvY2FsZS9sYW5naW5mby5oIiAyCgojIDEgIi4uL2luY2x1ZGUvYml0cy9sb2NhbGUu
aCIgMQojIDEgIi4uL2xvY2FsZS9iaXRzL2xvY2FsZS5oIiAxCiMgMjcgIi4uL2xvY2FsZS9iaXRz
L2xvY2FsZS5oIgplbnVtCnsKICBfX0xDX0NUWVBFID0gMCwKICBfX0xDX05VTUVSSUMgPSAxLAog
IF9fTENfVElNRSA9IDIsCiAgX19MQ19DT0xMQVRFID0gMywKICBfX0xDX01PTkVUQVJZID0gNCwK
ICBfX0xDX01FU1NBR0VTID0gNSwKICBfX0xDX0FMTCA9IDYsCiAgX19MQ19QQVBFUiA9IDcsCiAg
X19MQ19OQU1FID0gOCwKICBfX0xDX0FERFJFU1MgPSA5LAogIF9fTENfVEVMRVBIT05FID0gMTAs
CiAgX19MQ19NRUFTVVJFTUVOVCA9IDExLAogIF9fTENfSURFTlRJRklDQVRJT04gPSAxMgp9Owoj
IDIgIi4uL2luY2x1ZGUvYml0cy9sb2NhbGUuaCIgMgojIDI3ICIuLi9sb2NhbGUvbGFuZ2luZm8u
aCIgMgoKCgojIDQzICIuLi9sb2NhbGUvbGFuZ2luZm8uaCIKZW51bQp7CgoKCiAgQUJEQVlfMSA9
ICgoKF9fTENfVElNRSkgPDwgMTYpIHwgKDApKSwKCiAgQUJEQVlfMiwKCiAgQUJEQVlfMywKCiAg
QUJEQVlfNCwKCiAgQUJEQVlfNSwKCiAgQUJEQVlfNiwKCiAgQUJEQVlfNywKCgoKICBEQVlfMSwK
CiAgREFZXzIsCgogIERBWV8zLAoKICBEQVlfNCwKCiAgREFZXzUsCgogIERBWV82LAoKICBEQVlf
NywKCgoKICBBQk1PTl8xLAoKICBBQk1PTl8yLAoKICBBQk1PTl8zLAoKICBBQk1PTl80LAoKICBB
Qk1PTl81LAoKICBBQk1PTl82LAoKICBBQk1PTl83LAoKICBBQk1PTl84LAoKICBBQk1PTl85LAoK
ICBBQk1PTl8xMCwKCiAgQUJNT05fMTEsCgogIEFCTU9OXzEyLAoKCgogIE1PTl8xLAoKICBNT05f
MiwKCiAgTU9OXzMsCgogIE1PTl80LAoKICBNT05fNSwKCiAgTU9OXzYsCgogIE1PTl83LAoKICBN
T05fOCwKCiAgTU9OXzksCgogIE1PTl8xMCwKCiAgTU9OXzExLAoKICBNT05fMTIsCgoKICBBTV9T
VFIsCgogIFBNX1NUUiwKCgogIERfVF9GTVQsCgogIERfRk1ULAoKICBUX0ZNVCwKCiAgVF9GTVRf
QU1QTSwKCgogIEVSQSwKCiAgX19FUkFfWUVBUiwKCgoKICBFUkFfRF9GTVQsCgogIEFMVF9ESUdJ
VFMsCgogIEVSQV9EX1RfRk1ULAoKICBFUkFfVF9GTVQsCgoKICBfTkxfVElNRV9FUkFfTlVNX0VO
VFJJRVMsCiAgX05MX1RJTUVfRVJBX0VOVFJJRVMsCgogIF9OTF9XQUJEQVlfMSwKICBfTkxfV0FC
REFZXzIsCiAgX05MX1dBQkRBWV8zLAogIF9OTF9XQUJEQVlfNCwKICBfTkxfV0FCREFZXzUsCiAg
X05MX1dBQkRBWV82LAogIF9OTF9XQUJEQVlfNywKCgogIF9OTF9XREFZXzEsCiAgX05MX1dEQVlf
MiwKICBfTkxfV0RBWV8zLAogIF9OTF9XREFZXzQsCiAgX05MX1dEQVlfNSwKICBfTkxfV0RBWV82
LAogIF9OTF9XREFZXzcsCgoKICBfTkxfV0FCTU9OXzEsCiAgX05MX1dBQk1PTl8yLAogIF9OTF9X
QUJNT05fMywKICBfTkxfV0FCTU9OXzQsCiAgX05MX1dBQk1PTl81LAogIF9OTF9XQUJNT05fNiwK
ICBfTkxfV0FCTU9OXzcsCiAgX05MX1dBQk1PTl84LAogIF9OTF9XQUJNT05fOSwKICBfTkxfV0FC
TU9OXzEwLAogIF9OTF9XQUJNT05fMTEsCiAgX05MX1dBQk1PTl8xMiwKCgogIF9OTF9XTU9OXzEs
CiAgX05MX1dNT05fMiwKICBfTkxfV01PTl8zLAogIF9OTF9XTU9OXzQsCiAgX05MX1dNT05fNSwK
ICBfTkxfV01PTl82LAogIF9OTF9XTU9OXzcsCiAgX05MX1dNT05fOCwKICBfTkxfV01PTl85LAog
IF9OTF9XTU9OXzEwLAogIF9OTF9XTU9OXzExLAogIF9OTF9XTU9OXzEyLAoKICBfTkxfV0FNX1NU
UiwKICBfTkxfV1BNX1NUUiwKCiAgX05MX1dEX1RfRk1ULAogIF9OTF9XRF9GTVQsCiAgX05MX1dU
X0ZNVCwKICBfTkxfV1RfRk1UX0FNUE0sCgogIF9OTF9XRVJBX1lFQVIsCiAgX05MX1dFUkFfRF9G
TVQsCiAgX05MX1dBTFRfRElHSVRTLAogIF9OTF9XRVJBX0RfVF9GTVQsCiAgX05MX1dFUkFfVF9G
TVQsCgogIF9OTF9USU1FX1dFRUtfTkRBWVMsCiAgX05MX1RJTUVfV0VFS18xU1REQVksCiAgX05M
X1RJTUVfV0VFS18xU1RXRUVLLAogIF9OTF9USU1FX0ZJUlNUX1dFRUtEQVksCiAgX05MX1RJTUVf
RklSU1RfV09SS0RBWSwKICBfTkxfVElNRV9DQUxfRElSRUNUSU9OLAogIF9OTF9USU1FX1RJTUVa
T05FLAoKICBfREFURV9GTVQsCgogIF9OTF9XX0RBVEVfRk1ULAoKICBfTkxfVElNRV9DT0RFU0VU
LAoKICBfTkxfTlVNX0xDX1RJTUUsCgoKCgogIF9OTF9DT0xMQVRFX05SVUxFUyA9ICgoKF9fTENf
Q09MTEFURSkgPDwgMTYpIHwgKDApKSwKICBfTkxfQ09MTEFURV9SVUxFU0VUUywKICBfTkxfQ09M
TEFURV9UQUJMRU1CLAogIF9OTF9DT0xMQVRFX1dFSUdIVE1CLAogIF9OTF9DT0xMQVRFX0VYVFJB
TUIsCiAgX05MX0NPTExBVEVfSU5ESVJFQ1RNQiwKICBfTkxfQ09MTEFURV9HQVAxLAogIF9OTF9D
T0xMQVRFX0dBUDIsCiAgX05MX0NPTExBVEVfR0FQMywKICBfTkxfQ09MTEFURV9UQUJMRVdDLAog
IF9OTF9DT0xMQVRFX1dFSUdIVFdDLAogIF9OTF9DT0xMQVRFX0VYVFJBV0MsCiAgX05MX0NPTExB
VEVfSU5ESVJFQ1RXQywKICBfTkxfQ09MTEFURV9TWU1CX0hBU0hfU0laRU1CLAogIF9OTF9DT0xM
QVRFX1NZTUJfVEFCTEVNQiwKICBfTkxfQ09MTEFURV9TWU1CX0VYVFJBTUIsCiAgX05MX0NPTExB
VEVfQ09MTFNFUU1CLAogIF9OTF9DT0xMQVRFX0NPTExTRVFXQywKICBfTkxfQ09MTEFURV9DT0RF
U0VULAogIF9OTF9OVU1fTENfQ09MTEFURSwKCgoKCiAgX05MX0NUWVBFX0NMQVNTID0gKCgoX19M
Q19DVFlQRSkgPDwgMTYpIHwgKDApKSwKICBfTkxfQ1RZUEVfVE9VUFBFUiwKICBfTkxfQ1RZUEVf
R0FQMSwKICBfTkxfQ1RZUEVfVE9MT1dFUiwKICBfTkxfQ1RZUEVfR0FQMiwKICBfTkxfQ1RZUEVf
Q0xBU1MzMiwKICBfTkxfQ1RZUEVfR0FQMywKICBfTkxfQ1RZUEVfR0FQNCwKICBfTkxfQ1RZUEVf
R0FQNSwKICBfTkxfQ1RZUEVfR0FQNiwKICBfTkxfQ1RZUEVfQ0xBU1NfTkFNRVMsCiAgX05MX0NU
WVBFX01BUF9OQU1FUywKICBfTkxfQ1RZUEVfV0lEVEgsCiAgX05MX0NUWVBFX01CX0NVUl9NQVgs
CiAgX05MX0NUWVBFX0NPREVTRVRfTkFNRSwKICBDT0RFU0VUID0gX05MX0NUWVBFX0NPREVTRVRf
TkFNRSwKCiAgX05MX0NUWVBFX1RPVVBQRVIzMiwKICBfTkxfQ1RZUEVfVE9MT1dFUjMyLAogIF9O
TF9DVFlQRV9DTEFTU19PRkZTRVQsCiAgX05MX0NUWVBFX01BUF9PRkZTRVQsCiAgX05MX0NUWVBF
X0lORElHSVRTX01CX0xFTiwKICBfTkxfQ1RZUEVfSU5ESUdJVFMwX01CLAogIF9OTF9DVFlQRV9J
TkRJR0lUUzFfTUIsCiAgX05MX0NUWVBFX0lORElHSVRTMl9NQiwKICBfTkxfQ1RZUEVfSU5ESUdJ
VFMzX01CLAogIF9OTF9DVFlQRV9JTkRJR0lUUzRfTUIsCiAgX05MX0NUWVBFX0lORElHSVRTNV9N
QiwKICBfTkxfQ1RZUEVfSU5ESUdJVFM2X01CLAogIF9OTF9DVFlQRV9JTkRJR0lUUzdfTUIsCiAg
X05MX0NUWVBFX0lORElHSVRTOF9NQiwKICBfTkxfQ1RZUEVfSU5ESUdJVFM5X01CLAogIF9OTF9D
VFlQRV9JTkRJR0lUU19XQ19MRU4sCiAgX05MX0NUWVBFX0lORElHSVRTMF9XQywKICBfTkxfQ1RZ
UEVfSU5ESUdJVFMxX1dDLAogIF9OTF9DVFlQRV9JTkRJR0lUUzJfV0MsCiAgX05MX0NUWVBFX0lO
RElHSVRTM19XQywKICBfTkxfQ1RZUEVfSU5ESUdJVFM0X1dDLAogIF9OTF9DVFlQRV9JTkRJR0lU
UzVfV0MsCiAgX05MX0NUWVBFX0lORElHSVRTNl9XQywKICBfTkxfQ1RZUEVfSU5ESUdJVFM3X1dD
LAogIF9OTF9DVFlQRV9JTkRJR0lUUzhfV0MsCiAgX05MX0NUWVBFX0lORElHSVRTOV9XQywKICBf
TkxfQ1RZUEVfT1VURElHSVQwX01CLAogIF9OTF9DVFlQRV9PVVRESUdJVDFfTUIsCiAgX05MX0NU
WVBFX09VVERJR0lUMl9NQiwKICBfTkxfQ1RZUEVfT1VURElHSVQzX01CLAogIF9OTF9DVFlQRV9P
VVRESUdJVDRfTUIsCiAgX05MX0NUWVBFX09VVERJR0lUNV9NQiwKICBfTkxfQ1RZUEVfT1VURElH
SVQ2X01CLAogIF9OTF9DVFlQRV9PVVRESUdJVDdfTUIsCiAgX05MX0NUWVBFX09VVERJR0lUOF9N
QiwKICBfTkxfQ1RZUEVfT1VURElHSVQ5X01CLAogIF9OTF9DVFlQRV9PVVRESUdJVDBfV0MsCiAg
X05MX0NUWVBFX09VVERJR0lUMV9XQywKICBfTkxfQ1RZUEVfT1VURElHSVQyX1dDLAogIF9OTF9D
VFlQRV9PVVRESUdJVDNfV0MsCiAgX05MX0NUWVBFX09VVERJR0lUNF9XQywKICBfTkxfQ1RZUEVf
T1VURElHSVQ1X1dDLAogIF9OTF9DVFlQRV9PVVRESUdJVDZfV0MsCiAgX05MX0NUWVBFX09VVERJ
R0lUN19XQywKICBfTkxfQ1RZUEVfT1VURElHSVQ4X1dDLAogIF9OTF9DVFlQRV9PVVRESUdJVDlf
V0MsCiAgX05MX0NUWVBFX1RSQU5TTElUX1RBQl9TSVpFLAogIF9OTF9DVFlQRV9UUkFOU0xJVF9G
Uk9NX0lEWCwKICBfTkxfQ1RZUEVfVFJBTlNMSVRfRlJPTV9UQkwsCiAgX05MX0NUWVBFX1RSQU5T
TElUX1RPX0lEWCwKICBfTkxfQ1RZUEVfVFJBTlNMSVRfVE9fVEJMLAogIF9OTF9DVFlQRV9UUkFO
U0xJVF9ERUZBVUxUX01JU1NJTkdfTEVOLAogIF9OTF9DVFlQRV9UUkFOU0xJVF9ERUZBVUxUX01J
U1NJTkcsCiAgX05MX0NUWVBFX1RSQU5TTElUX0lHTk9SRV9MRU4sCiAgX05MX0NUWVBFX1RSQU5T
TElUX0lHTk9SRSwKICBfTkxfQ1RZUEVfRVhUUkFfTUFQXzEsCiAgX05MX0NUWVBFX0VYVFJBX01B
UF8yLAogIF9OTF9DVFlQRV9FWFRSQV9NQVBfMywKICBfTkxfQ1RZUEVfRVhUUkFfTUFQXzQsCiAg
X05MX0NUWVBFX0VYVFJBX01BUF81LAogIF9OTF9DVFlQRV9FWFRSQV9NQVBfNiwKICBfTkxfQ1RZ
UEVfRVhUUkFfTUFQXzcsCiAgX05MX0NUWVBFX0VYVFJBX01BUF84LAogIF9OTF9DVFlQRV9FWFRS
QV9NQVBfOSwKICBfTkxfQ1RZUEVfRVhUUkFfTUFQXzEwLAogIF9OTF9DVFlQRV9FWFRSQV9NQVBf
MTEsCiAgX05MX0NUWVBFX0VYVFJBX01BUF8xMiwKICBfTkxfQ1RZUEVfRVhUUkFfTUFQXzEzLAog
IF9OTF9DVFlQRV9FWFRSQV9NQVBfMTQsCiAgX05MX05VTV9MQ19DVFlQRSwKCgoKCiAgX19JTlRf
Q1VSUl9TWU1CT0wgPSAoKChfX0xDX01PTkVUQVJZKSA8PCAxNikgfCAoMCkpLAoKCgogIF9fQ1VS
UkVOQ1lfU1lNQk9MLAoKCgogIF9fTU9OX0RFQ0lNQUxfUE9JTlQsCgoKCiAgX19NT05fVEhPVVNB
TkRTX1NFUCwKCgoKICBfX01PTl9HUk9VUElORywKCgoKICBfX1BPU0lUSVZFX1NJR04sCgoKCiAg
X19ORUdBVElWRV9TSUdOLAoKCgogIF9fSU5UX0ZSQUNfRElHSVRTLAoKCgogIF9fRlJBQ19ESUdJ
VFMsCgoKCiAgX19QX0NTX1BSRUNFREVTLAoKCgogIF9fUF9TRVBfQllfU1BBQ0UsCgoKCiAgX19O
X0NTX1BSRUNFREVTLAoKCgogIF9fTl9TRVBfQllfU1BBQ0UsCgoKCiAgX19QX1NJR05fUE9TTiwK
CgoKICBfX05fU0lHTl9QT1NOLAoKCgogIF9OTF9NT05FVEFSWV9DUk5DWVNUUiwKCiAgX19JTlRf
UF9DU19QUkVDRURFUywKCgoKICBfX0lOVF9QX1NFUF9CWV9TUEFDRSwKCgoKICBfX0lOVF9OX0NT
X1BSRUNFREVTLAoKCgogIF9fSU5UX05fU0VQX0JZX1NQQUNFLAoKCgogIF9fSU5UX1BfU0lHTl9Q
T1NOLAoKCgogIF9fSU5UX05fU0lHTl9QT1NOLAoKCgogIF9OTF9NT05FVEFSWV9EVU9fSU5UX0NV
UlJfU1lNQk9MLAogIF9OTF9NT05FVEFSWV9EVU9fQ1VSUkVOQ1lfU1lNQk9MLAogIF9OTF9NT05F
VEFSWV9EVU9fSU5UX0ZSQUNfRElHSVRTLAogIF9OTF9NT05FVEFSWV9EVU9fRlJBQ19ESUdJVFMs
CiAgX05MX01PTkVUQVJZX0RVT19QX0NTX1BSRUNFREVTLAogIF9OTF9NT05FVEFSWV9EVU9fUF9T
RVBfQllfU1BBQ0UsCiAgX05MX01PTkVUQVJZX0RVT19OX0NTX1BSRUNFREVTLAogIF9OTF9NT05F
VEFSWV9EVU9fTl9TRVBfQllfU1BBQ0UsCiAgX05MX01PTkVUQVJZX0RVT19JTlRfUF9DU19QUkVD
RURFUywKICBfTkxfTU9ORVRBUllfRFVPX0lOVF9QX1NFUF9CWV9TUEFDRSwKICBfTkxfTU9ORVRB
UllfRFVPX0lOVF9OX0NTX1BSRUNFREVTLAogIF9OTF9NT05FVEFSWV9EVU9fSU5UX05fU0VQX0JZ
X1NQQUNFLAogIF9OTF9NT05FVEFSWV9EVU9fUF9TSUdOX1BPU04sCiAgX05MX01PTkVUQVJZX0RV
T19OX1NJR05fUE9TTiwKICBfTkxfTU9ORVRBUllfRFVPX0lOVF9QX1NJR05fUE9TTiwKICBfTkxf
TU9ORVRBUllfRFVPX0lOVF9OX1NJR05fUE9TTiwKICBfTkxfTU9ORVRBUllfVU5PX1ZBTElEX0ZS
T00sCiAgX05MX01PTkVUQVJZX1VOT19WQUxJRF9UTywKICBfTkxfTU9ORVRBUllfRFVPX1ZBTElE
X0ZST00sCiAgX05MX01PTkVUQVJZX0RVT19WQUxJRF9UTywKICBfTkxfTU9ORVRBUllfQ09OVkVS
U0lPTl9SQVRFLAogIF9OTF9NT05FVEFSWV9ERUNJTUFMX1BPSU5UX1dDLAogIF9OTF9NT05FVEFS
WV9USE9VU0FORFNfU0VQX1dDLAogIF9OTF9NT05FVEFSWV9DT0RFU0VULAogIF9OTF9OVU1fTENf
TU9ORVRBUlksCgoKCiAgX19ERUNJTUFMX1BPSU5UID0gKCgoX19MQ19OVU1FUklDKSA8PCAxNikg
fCAoMCkpLAoKCgogIFJBRElYQ0hBUiA9IF9fREVDSU1BTF9QT0lOVCwKCiAgX19USE9VU0FORFNf
U0VQLAoKCgogIFRIT1VTRVAgPSBfX1RIT1VTQU5EU19TRVAsCgogIF9fR1JPVVBJTkcsCgoKCiAg
X05MX05VTUVSSUNfREVDSU1BTF9QT0lOVF9XQywKICBfTkxfTlVNRVJJQ19USE9VU0FORFNfU0VQ
X1dDLAogIF9OTF9OVU1FUklDX0NPREVTRVQsCiAgX05MX05VTV9MQ19OVU1FUklDLAoKICBfX1lF
U0VYUFIgPSAoKChfX0xDX01FU1NBR0VTKSA8PCAxNikgfCAoMCkpLAoKICBfX05PRVhQUiwKCiAg
X19ZRVNTVFIsCgoKCiAgX19OT1NUUiwKCgoKICBfTkxfTUVTU0FHRVNfQ09ERVNFVCwKICBfTkxf
TlVNX0xDX01FU1NBR0VTLAoKICBfTkxfUEFQRVJfSEVJR0hUID0gKCgoX19MQ19QQVBFUikgPDwg
MTYpIHwgKDApKSwKICBfTkxfUEFQRVJfV0lEVEgsCiAgX05MX1BBUEVSX0NPREVTRVQsCiAgX05M
X05VTV9MQ19QQVBFUiwKCiAgX05MX05BTUVfTkFNRV9GTVQgPSAoKChfX0xDX05BTUUpIDw8IDE2
KSB8ICgwKSksCiAgX05MX05BTUVfTkFNRV9HRU4sCiAgX05MX05BTUVfTkFNRV9NUiwKICBfTkxf
TkFNRV9OQU1FX01SUywKICBfTkxfTkFNRV9OQU1FX01JU1MsCiAgX05MX05BTUVfTkFNRV9NUywK
ICBfTkxfTkFNRV9DT0RFU0VULAogIF9OTF9OVU1fTENfTkFNRSwKCiAgX05MX0FERFJFU1NfUE9T
VEFMX0ZNVCA9ICgoKF9fTENfQUREUkVTUykgPDwgMTYpIHwgKDApKSwKICBfTkxfQUREUkVTU19D
T1VOVFJZX05BTUUsCiAgX05MX0FERFJFU1NfQ09VTlRSWV9QT1NULAogIF9OTF9BRERSRVNTX0NP
VU5UUllfQUIyLAogIF9OTF9BRERSRVNTX0NPVU5UUllfQUIzLAogIF9OTF9BRERSRVNTX0NPVU5U
UllfQ0FSLAogIF9OTF9BRERSRVNTX0NPVU5UUllfTlVNLAogIF9OTF9BRERSRVNTX0NPVU5UUllf
SVNCTiwKICBfTkxfQUREUkVTU19MQU5HX05BTUUsCiAgX05MX0FERFJFU1NfTEFOR19BQiwKICBf
TkxfQUREUkVTU19MQU5HX1RFUk0sCiAgX05MX0FERFJFU1NfTEFOR19MSUIsCiAgX05MX0FERFJF
U1NfQ09ERVNFVCwKICBfTkxfTlVNX0xDX0FERFJFU1MsCgogIF9OTF9URUxFUEhPTkVfVEVMX0lO
VF9GTVQgPSAoKChfX0xDX1RFTEVQSE9ORSkgPDwgMTYpIHwgKDApKSwKICBfTkxfVEVMRVBIT05F
X1RFTF9ET01fRk1ULAogIF9OTF9URUxFUEhPTkVfSU5UX1NFTEVDVCwKICBfTkxfVEVMRVBIT05F
X0lOVF9QUkVGSVgsCiAgX05MX1RFTEVQSE9ORV9DT0RFU0VULAogIF9OTF9OVU1fTENfVEVMRVBI
T05FLAoKICBfTkxfTUVBU1VSRU1FTlRfTUVBU1VSRU1FTlQgPSAoKChfX0xDX01FQVNVUkVNRU5U
KSA8PCAxNikgfCAoMCkpLAogIF9OTF9NRUFTVVJFTUVOVF9DT0RFU0VULAogIF9OTF9OVU1fTENf
TUVBU1VSRU1FTlQsCgogIF9OTF9JREVOVElGSUNBVElPTl9USVRMRSA9ICgoKF9fTENfSURFTlRJ
RklDQVRJT04pIDw8IDE2KSB8ICgwKSksCiAgX05MX0lERU5USUZJQ0FUSU9OX1NPVVJDRSwKICBf
TkxfSURFTlRJRklDQVRJT05fQUREUkVTUywKICBfTkxfSURFTlRJRklDQVRJT05fQ09OVEFDVCwK
ICBfTkxfSURFTlRJRklDQVRJT05fRU1BSUwsCiAgX05MX0lERU5USUZJQ0FUSU9OX1RFTCwKICBf
TkxfSURFTlRJRklDQVRJT05fRkFYLAogIF9OTF9JREVOVElGSUNBVElPTl9MQU5HVUFHRSwKICBf
TkxfSURFTlRJRklDQVRJT05fVEVSUklUT1JZLAogIF9OTF9JREVOVElGSUNBVElPTl9BVURJRU5D
RSwKICBfTkxfSURFTlRJRklDQVRJT05fQVBQTElDQVRJT04sCiAgX05MX0lERU5USUZJQ0FUSU9O
X0FCQlJFVklBVElPTiwKICBfTkxfSURFTlRJRklDQVRJT05fUkVWSVNJT04sCiAgX05MX0lERU5U
SUZJQ0FUSU9OX0RBVEUsCiAgX05MX0lERU5USUZJQ0FUSU9OX0NBVEVHT1JZLAogIF9OTF9JREVO
VElGSUNBVElPTl9DT0RFU0VULAogIF9OTF9OVU1fTENfSURFTlRJRklDQVRJT04sCgoKICBfTkxf
TlVNCn07CiMgNTc1ICIuLi9sb2NhbGUvbGFuZ2luZm8uaCIKZXh0ZXJuIGNoYXIgKm5sX2xhbmdp
bmZvIChubF9pdGVtIF9faXRlbSkgOwoKCgoKCgoKIyAxICIuLi9pbmNsdWRlL3hsb2NhbGUuaCIg
MQojIDEgIi4uL2xvY2FsZS94bG9jYWxlLmgiIDEKIyAyOCAiLi4vbG9jYWxlL3hsb2NhbGUuaCIK
dHlwZWRlZiBzdHJ1Y3QgX19sb2NhbGVfc3RydWN0CnsKCiAgc3RydWN0IGxvY2FsZV9kYXRhICpf
X2xvY2FsZXNbMTNdOwoKCiAgY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CiAg
Y29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvdXBwZXI7
CgoKICBjb25zdCBjaGFyICpfX25hbWVzWzEzXTsKfSAqX19sb2NhbGVfdDsKIyAyICIuLi9pbmNs
dWRlL3hsb2NhbGUuaCIgMgojIDU4NCAiLi4vbG9jYWxlL2xhbmdpbmZvLmgiIDIKCgpleHRlcm4g
Y2hhciAqbmxfbGFuZ2luZm9fbCAobmxfaXRlbSBfX2l0ZW0sIF9fbG9jYWxlX3QgbCk7CgoKCiMg
NCAiLi4vaW5jbHVkZS9sYW5naW5mby5oIiAyCgpleHRlcm4gX190eXBlb2YgKG5sX2xhbmdpbmZv
KSBfX0dJX25sX2xhbmdpbmZvOyBleHRlcm4gX190eXBlb2YgKG5sX2xhbmdpbmZvKSBubF9sYW5n
aW5mbyBfX2FzbV9fICgiIiAiX19HSV9ubF9sYW5naW5mbyIpIF9fYXR0cmlidXRlX18gKCh2aXNp
YmlsaXR5ICgiaGlkZGVuIikpKTsKCmV4dGVybiBfX3R5cGVvZiAobmxfbGFuZ2luZm9fbCkgX19u
bF9sYW5naW5mb19sOwojIDI1ICIuLi9sb2NhbGUvbG9jYWxlaW5mby5oIiAyCiMgMSAiLi4vaW5j
bHVkZS9saW1pdHMuaCIgMQojIDEyNCAiLi4vaW5jbHVkZS9saW1pdHMuaCIKIyAxICIvdXNyL2xp
YjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0
CiMgMTI1ICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCiMgMTQ0ICIuLi9pbmNsdWRlL2xpbWl0cy5o
IgojIDEgIi4uL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEKIyAxICIuLi9wb3NpeC9iaXRz
L3Bvc2l4MV9saW0uaCIgMQojIDEyNiAiLi4vcG9zaXgvYml0cy9wb3NpeDFfbGltLmgiCiMgMSAi
Li4vbGludXh0aHJlYWRzL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvbG9jYWxfbGltLmgi
IDEKIyAzNiAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvbG9j
YWxfbGltLmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQva2VybmVsLWhlYWRlcnMvbGlu
dXgvbGltaXRzLmgiIDEgMyA0CiMgMzcgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3VuaXgvc3lz
di9saW51eC9iaXRzL2xvY2FsX2xpbS5oIiAyCiMgMTI3ICIuLi9wb3NpeC9iaXRzL3Bvc2l4MV9s
aW0uaCIgMgojIDIgIi4uL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIKIyAxNDUgIi4uL2lu
Y2x1ZGUvbGltaXRzLmgiIDIKCgoKIyAxICIuLi9pbmNsdWRlL2JpdHMvcG9zaXgyX2xpbS5oIiAx
CiMgMSAiLi4vcG9zaXgvYml0cy9wb3NpeDJfbGltLmgiIDEKIyAyICIuLi9pbmNsdWRlL2JpdHMv
cG9zaXgyX2xpbS5oIiAyCiMgMTQ5ICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCgoKCiMgMSAiLi4v
aW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAxCiMgMzQgIi4uL2luY2x1ZGUvYml0cy94b3Blbl9s
aW0uaCIKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9nbGliYy0yLjMvY2MvYml0cy9zdGRp
b19saW0uaCIgMQojIDM1ICIuLi9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIKIyAxNTMgIi4u
L2luY2x1ZGUvbGltaXRzLmgiIDIKIyAyNiAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCIgMgojIDEg
Ii4uL2luY2x1ZGUvbG9jYWxlLmgiIDEKCiMgMSAiLi4vbG9jYWxlL2xvY2FsZS5oIiAxCiMgMjkg
Ii4uL2xvY2FsZS9sb2NhbGUuaCIKIyAxICIvdXNyL2xpYjY0L2djYy1saWIveDg2XzY0LXN1c2Ut
bGludXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzAgIi4uL2xvY2FsZS9sb2NhbGUu
aCIgMgojIDEgIi4uL2luY2x1ZGUvYml0cy9sb2NhbGUuaCIgMQojIDEgIi4uL2xvY2FsZS9iaXRz
L2xvY2FsZS5oIiAxCiMgMiAiLi4vaW5jbHVkZS9iaXRzL2xvY2FsZS5oIiAyCiMgMzEgIi4uL2xv
Y2FsZS9sb2NhbGUuaCIgMgoKCiMgNTIgIi4uL2xvY2FsZS9sb2NhbGUuaCIKc3RydWN0IGxjb252
CnsKCgogIGNoYXIgKmRlY2ltYWxfcG9pbnQ7CiAgY2hhciAqdGhvdXNhbmRzX3NlcDsKCgoKCgog
IGNoYXIgKmdyb3VwaW5nOwoKCgoKCiAgY2hhciAqaW50X2N1cnJfc3ltYm9sOwogIGNoYXIgKmN1
cnJlbmN5X3N5bWJvbDsKICBjaGFyICptb25fZGVjaW1hbF9wb2ludDsKICBjaGFyICptb25fdGhv
dXNhbmRzX3NlcDsKICBjaGFyICptb25fZ3JvdXBpbmc7CiAgY2hhciAqcG9zaXRpdmVfc2lnbjsK
ICBjaGFyICpuZWdhdGl2ZV9zaWduOwogIGNoYXIgaW50X2ZyYWNfZGlnaXRzOwogIGNoYXIgZnJh
Y19kaWdpdHM7CgogIGNoYXIgcF9jc19wcmVjZWRlczsKCiAgY2hhciBwX3NlcF9ieV9zcGFjZTsK
CiAgY2hhciBuX2NzX3ByZWNlZGVzOwoKICBjaGFyIG5fc2VwX2J5X3NwYWNlOwoKCgoKCgogIGNo
YXIgcF9zaWduX3Bvc247CiAgY2hhciBuX3NpZ25fcG9zbjsKCgogIGNoYXIgaW50X3BfY3NfcHJl
Y2VkZXM7CgogIGNoYXIgaW50X3Bfc2VwX2J5X3NwYWNlOwoKICBjaGFyIGludF9uX2NzX3ByZWNl
ZGVzOwoKICBjaGFyIGludF9uX3NlcF9ieV9zcGFjZTsKCgoKCgoKICBjaGFyIGludF9wX3NpZ25f
cG9zbjsKICBjaGFyIGludF9uX3NpZ25fcG9zbjsKIyAxMTkgIi4uL2xvY2FsZS9sb2NhbGUuaCIK
fTsKCgoKCgpleHRlcm4gY2hhciAqc2V0bG9jYWxlIChpbnQgX19jYXRlZ29yeSwgX19jb25zdCBj
aGFyICpfX2xvY2FsZSkgOwoKCmV4dGVybiBzdHJ1Y3QgbGNvbnYgKmxvY2FsZWNvbnYgKHZvaWQp
IDsKCgojIDE0NiAiLi4vbG9jYWxlL2xvY2FsZS5oIgojIDEgIi4uL2luY2x1ZGUveGxvY2FsZS5o
IiAxCiMgMTQ3ICIuLi9sb2NhbGUvbG9jYWxlLmgiIDIKCnR5cGVkZWYgX19sb2NhbGVfdCBsb2Nh
bGVfdDsKCgoKCgpleHRlcm4gX19sb2NhbGVfdCBuZXdsb2NhbGUgKGludCBfX2NhdGVnb3J5X21h
c2ssIF9fY29uc3QgY2hhciAqX19sb2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19sb2NhbGVfdCBfX2Jhc2UpIDsKIyAxODkgIi4uL2xvY2FsZS9sb2NhbGUuaCIKZXh0ZXJuIF9f
bG9jYWxlX3QgZHVwbG9jYWxlIChfX2xvY2FsZV90IF9fZGF0YXNldCkgOwoKCgpleHRlcm4gdm9p
ZCBmcmVlbG9jYWxlIChfX2xvY2FsZV90IF9fZGF0YXNldCkgOwoKCgoKCgpleHRlcm4gX19sb2Nh
bGVfdCB1c2Vsb2NhbGUgKF9fbG9jYWxlX3QgX19kYXRhc2V0KSA7CgoKCgoKCgoKIyAzICIuLi9p
bmNsdWRlL2xvY2FsZS5oIiAyCgpleHRlcm4gX190eXBlb2YgKHVzZWxvY2FsZSkgX191c2Vsb2Nh
bGU7CgpleHRlcm4gX190eXBlb2YgKHNldGxvY2FsZSkgX19HSV9zZXRsb2NhbGU7IGV4dGVybiBf
X3R5cGVvZiAoc2V0bG9jYWxlKSBzZXRsb2NhbGUgX19hc21fXyAoIiIgIl9fR0lfc2V0bG9jYWxl
IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKCgoKZXh0ZXJuIHN0
cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9sb2NhbGVfZmlsZV9saXN0W10gX19hdHRyaWJ1dGVf
XyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKCmV4dGVybiBzdHJ1Y3QgX19sb2NhbGVfc3Ry
dWN0IF9ubF9DX2xvY29iaiBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7
CgoKZXh0ZXJuIHN0cnVjdCBsY29udiAqX19sb2NhbGVjb252ICh2b2lkKTsKCgpleHRlcm4gY29u
c3QgY2hhciAqX19jdXJyZW50X2xvY2FsZV9uYW1lIChpbnQgY2F0ZWdvcnkpIF9fYXR0cmlidXRl
X18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKIyAyNyAiLi4vbG9jYWxlL2xvY2FsZWluZm8u
aCIgMgojIDEgIi4uL2luY2x1ZGUvdGltZS5oIiAxCgoKCgojIDEgIi4uL3RpbWUvdGltZS5oIiAx
CiMgMzAgIi4uL3RpbWUvdGltZS5oIgoKCgoKCgoKCiMgMSAiL3Vzci9saWI2NC9nY2MtbGliL3g4
Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM5ICIuLi90aW1l
L3RpbWUuaCIgMgoKCgojIDEgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3RpbWUuaCIgMQojIDQz
ICIuLi90aW1lL3RpbWUuaCIgMgojIDU2ICIuLi90aW1lL3RpbWUuaCIKIyAxICIuLi9zeXNkZXBz
L2dlbmVyaWMvYml0cy90eXBlcy5oIiAxCiMgMjggIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3R5
cGVzLmgiCiMgMSAiLi4vc3lzZGVwcy94ODZfNjQvYml0cy93b3Jkc2l6ZS5oIiAxCiMgMjkgIi4u
L3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3R5cGVzLmgiIDIKCgojIDEgIi91c3IvbGliNjQvZ2NjLWxp
Yi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzMiAiLi4v
c3lzZGVwcy9nZW5lcmljL2JpdHMvdHlwZXMuaCIgMgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBf
X3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191X3Nob3J0Owp0eXBlZGVmIHVu
c2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdV9sb25nOwoK
CnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3Vp
bnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7Cgp0eXBlZGVmIHNpZ25lZCBsb25nIGludCBf
X2ludDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX191aW50NjRfdDsKIyA1NyAiLi4v
c3lzZGVwcy9nZW5lcmljL2JpdHMvdHlwZXMuaCIKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcg
bG9uZyBpbnQgX19xdWFkX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgaW50IF9fdV9xdWFkX3Q7CiMgMTI4ICIuLi9zeXNkZXBzL2dlbmVyaWMvYml0cy90eXBlcy5o
IgojIDEgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3R5cGVzaXplcy5oIiAxCiMgMTI5ICIuLi9z
eXNkZXBzL2dlbmVyaWMvYml0cy90eXBlcy5oIiAyCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgaW50IF9fZGV2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWlkX3Q7CnR5cGVkZWYgdW5z
aWduZWQgaW50IF9fZ2lkX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19pbm9fdDsKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9faW5vNjRfdDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX19tb2RlX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19ubGlua190Owp0eXBlZGVm
IGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgbG9uZyBsb25nIGludCBfX29mZjY0X3Q7CnR5cGVk
ZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgc3RydWN0IHsgaW50IF9fdmFsWzJdOyB9IF9fZnNpZF90
Owp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBf
X3JsaW1fdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fcmxpbTY0X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9faWRfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRz
X3Q7Cgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190Owp0
eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYg
aW50IF9fdGltZXJfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRl
ZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19ibGtjbnQ2NF90
OwoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2Jsa2NudF90Owp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGludCBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX2ZzZmls
Y250NjRfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIF9fb2ZmNjRf
dCBfX2xvZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9f
Y2FkZHJfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX19zb2NrbGVuX3Q7CiMgNTcgIi4uL3RpbWUvdGltZS5oIiAyCgoKCnR5cGVkZWYgX19j
bG9ja190IGNsb2NrX3Q7CgoKCiMgNzQgIi4uL3RpbWUvdGltZS5oIgoKCnR5cGVkZWYgX190aW1l
X3QgdGltZV90OwoKCgojIDkyICIuLi90aW1lL3RpbWUuaCIKdHlwZWRlZiBfX2Nsb2NraWRfdCBj
bG9ja2lkX3Q7CiMgMTA0ICIuLi90aW1lL3RpbWUuaCIKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJf
dDsKIyAxMTYgIi4uL3RpbWUvdGltZS5oIgpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBfX3RpbWVf
dCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CgoKCgoKCgoKc3RydWN0IHRtCnsK
ICBpbnQgdG1fc2VjOwogIGludCB0bV9taW47CiAgaW50IHRtX2hvdXI7CiAgaW50IHRtX21kYXk7
CiAgaW50IHRtX21vbjsKICBpbnQgdG1feWVhcjsKICBpbnQgdG1fd2RheTsKICBpbnQgdG1feWRh
eTsKICBpbnQgdG1faXNkc3Q7CgoKICBsb25nIGludCB0bV9nbXRvZmY7CiAgX19jb25zdCBjaGFy
ICp0bV96b25lOwoKCgoKfTsKCgoKCgoKCgpzdHJ1Y3QgaXRpbWVyc3BlYwogIHsKICAgIHN0cnVj
dCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKICB9
OwoKCnN0cnVjdCBzaWdldmVudDsKCgoKCgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgoKCgoK
ZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQpIDsKCgpleHRlcm4gdGltZV90IHRpbWUgKHRpbWVf
dCAqX190aW1lcikgOwoKCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCBfX3RpbWUxLCB0
aW1lX3QgX190aW1lMCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu
IHRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgOwoKCgoKCmV4dGVybiBzaXplX3Qgc3Ry
ZnRpbWUgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoK
CgpleHRlcm4gY2hhciAqc3RycHRpbWUgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBzdHJ1
Y3QgdG0gKl9fdHApCiAgICAgOwoKCgoKCiMgMSAiLi4vaW5jbHVkZS94bG9jYWxlLmgiIDEKIyAy
MTIgIi4uL3RpbWUvdGltZS5oIiAyCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lX2wgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCmV4dGVybiBjaGFyICpzdHJwdGltZV9sIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0g
KmdtdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAq
bG9jYWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgoKCmV4dGVybiBzdHJ1Y3Qg
dG0gKmdtdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKZXh0
ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9f
dGltZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJp
Y3QgX190cCkgOwoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lIChfX2NvbnN0IHN0cnVjdCB0bSAq
X190cCkgOwoKCmV4dGVybiBjaGFyICpjdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIDsK
CgoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3Ry
aWN0IF9fdHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYp
IDsKCgpleHRlcm4gY2hhciAqY3RpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190
aW1lciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoK
CmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwpleHRlcm4g
bG9uZyBpbnQgX190aW1lem9uZTsKCgoKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKCmV4dGVy
biB2b2lkIHR6c2V0ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVybiBsb25n
IGludCB0aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX193
aGVuKSA7CiMgMzA3ICIuLi90aW1lL3RpbWUuaCIKZXh0ZXJuIHRpbWVfdCB0aW1lZ20gKHN0cnVj
dCB0bSAqX190cCkgOwoKCmV4dGVybiB0aW1lX3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKl9fdHAp
IDsKCgpleHRlcm4gaW50IGR5c2l6ZSAoaW50IF9feWVhcikgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgoKCmV4dGVybiBpbnQgbmFub3NsZWVwIChfX2NvbnN0IHN0cnVjdCB0aW1lc3Bl
YyAqX19yZXF1ZXN0ZWRfdGltZSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3Bl
YyAqX19yZW1haW5pbmcpIDsKCgoKZXh0ZXJuIGludCBjbG9ja19nZXRyZXMgKGNsb2NraWRfdCBf
X2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzKSA7CgoKZXh0ZXJuIGludCBjbG9ja19n
ZXR0aW1lIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3RwKSA7CgoK
ZXh0ZXJuIGludCBjbG9ja19zZXR0aW1lIChjbG9ja2lkX3QgX19jbG9ja19pZCwgX19jb25zdCBz
dHJ1Y3QgdGltZXNwZWMgKl9fdHApCiAgICAgOwoKCgpleHRlcm4gaW50IGNsb2NrX25hbm9zbGVl
cCAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIGludCBfX2ZsYWdzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbSkgOwoKCmV4dGVybiBpbnQgY2xvY2tf
Z2V0Y3B1Y2xvY2tpZCAocGlkX3QgX19waWQsIGNsb2NraWRfdCAqX19jbG9ja19pZCkgOwoKCgoK
ZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fZXZwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZXJfdCAqX19yZXN0cmljdCBfX3RpbWVyaWQpIDsKCgpleHRl
cm4gaW50IHRpbWVyX2RlbGV0ZSAodGltZXJfdCBfX3RpbWVyaWQpIDsKCgpleHRlcm4gaW50IHRp
bWVyX3NldHRpbWUgKHRpbWVyX3QgX190aW1lcmlkLCBpbnQgX19mbGFncywKICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fdmFs
dWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJp
Y3QgX19vdmFsdWUpIDsKCgpleHRlcm4gaW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3QgX190aW1l
cmlkLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqX192YWx1ZSkKICAgICA7CgoKZXh0ZXJuIGludCB0aW1l
cl9nZXRvdmVycnVuICh0aW1lcl90IF9fdGltZXJpZCkgOwojIDM3OCAiLi4vdGltZS90aW1lLmgi
CmV4dGVybiBpbnQgZ2V0ZGF0ZV9lcnI7CgoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0ZGF0ZSAo
X19jb25zdCBjaGFyICpfX3N0cmluZykgOwojIDM5MyAiLi4vdGltZS90aW1lLmgiCmV4dGVybiBp
bnQgZ2V0ZGF0ZV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcsCiAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKSA7CgoKCiMgNiAi
Li4vaW5jbHVkZS90aW1lLmgiIDIKCmV4dGVybiBfX3R5cGVvZiAoc3RyZnRpbWVfbCkgX19zdHJm
dGltZV9sOwpleHRlcm4gX190eXBlb2YgKHN0cnB0aW1lX2wpIF9fc3RycHRpbWVfbDsKCmV4dGVy
biBfX3R5cGVvZiAodGltZSkgX19HSV90aW1lOyBleHRlcm4gX190eXBlb2YgKHRpbWUpIHRpbWUg
X19hc21fXyAoIiIgIl9fR0lfdGltZSIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlk
ZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChhc2N0aW1lKSBfX0dJX2FzY3RpbWU7IGV4dGVybiBf
X3R5cGVvZiAoYXNjdGltZSkgYXNjdGltZSBfX2FzbV9fICgiIiAiX19HSV9hc2N0aW1lIikgX19h
dHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKG1r
dGltZSkgX19HSV9ta3RpbWU7IGV4dGVybiBfX3R5cGVvZiAobWt0aW1lKSBta3RpbWUgX19hc21f
XyAoIiIgIl9fR0lfbWt0aW1lIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4i
KSkpOwpleHRlcm4gX190eXBlb2YgKHRpbWVsb2NhbCkgX19HSV90aW1lbG9jYWw7IGV4dGVybiBf
X3R5cGVvZiAodGltZWxvY2FsKSB0aW1lbG9jYWwgX19hc21fXyAoIiIgIl9fR0lfdGltZWxvY2Fs
IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBl
b2YgKGxvY2FsdGltZSkgX19HSV9sb2NhbHRpbWU7IGV4dGVybiBfX3R5cGVvZiAobG9jYWx0aW1l
KSBsb2NhbHRpbWUgX19hc21fXyAoIiIgIl9fR0lfbG9jYWx0aW1lIikgX19hdHRyaWJ1dGVfXyAo
KHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKHN0cmZ0aW1lKSBfX0dJ
X3N0cmZ0aW1lOyBleHRlcm4gX190eXBlb2YgKHN0cmZ0aW1lKSBzdHJmdGltZSBfX2FzbV9fICgi
IiAiX19HSV9zdHJmdGltZSIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikp
KTsKZXh0ZXJuIF9fdHlwZW9mIChzdHJwdGltZSkgX19HSV9zdHJwdGltZTsgZXh0ZXJuIF9fdHlw
ZW9mIChzdHJwdGltZSkgc3RycHRpbWUgX19hc21fXyAoIiIgIl9fR0lfc3RycHRpbWUiKSBfX2F0
dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKc3RydWN0IHRtOwoKCmV4dGVy
biBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgX19tb25feWRheVsyXVsxM10gX19hdHRyaWJ1dGVf
XyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKCmV4dGVybiBzdHJ1Y3QgdG0gX3RtYnVmIF9f
YXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKCgpleHRlcm4gY2hhciAqX190
enN0cmluZyAoY29uc3QgY2hhciAqc3RyaW5nKTsKCgpleHRlcm4gc2l6ZV90IF9fdHpuYW1lX2N1
cl9tYXggX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKCmV4dGVybiBp
bnQgX191c2VfdHpmaWxlIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsK
CmV4dGVybiB2b2lkIF9fdHpmaWxlX3JlYWQgKGNvbnN0IGNoYXIgKmZpbGUsIHNpemVfdCBleHRy
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmV4dHJhcCk7CmV4dGVybiBpbnQg
X190emZpbGVfY29tcHV0ZSAodGltZV90IHRpbWVyLCBpbnQgdXNlX2xvY2FsdGltZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqbGVhcF9jb3JyZWN0LCBpbnQgKmxlYXBf
aGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqdHApOwpleHRlcm4g
dm9pZCBfX3R6ZmlsZV9kZWZhdWx0IChjb25zdCBjaGFyICpzdGQsIGNvbnN0IGNoYXIgKmRzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgc3Rkb2ZmLCBsb25nIGludCBk
c3RvZmYpOwoKCgoKZXh0ZXJuIHRpbWVfdCBfX21rdGltZV9pbnRlcm5hbCAoc3RydWN0IHRtICpf
X3RwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKigqX19mdW5j
KSAoY29uc3QgdGltZV90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWVfdCAqX19vZmZzZXQpOwpleHRlcm4gc3RydWN0IHRtICpfX2xvY2FsdGltZV9y
IChfX2NvbnN0IHRpbWVfdCAqX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHRtICpfX3RwKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIp
KSk7CgpleHRlcm4gc3RydWN0IHRtICpfX2dtdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0
cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9f
cmVzdHJpY3QgX190cCk7CmV4dGVybiBfX3R5cGVvZiAoX19nbXRpbWVfcikgX19HSV9fX2dtdGlt
ZV9yOyBleHRlcm4gX190eXBlb2YgKF9fZ210aW1lX3IpIF9fZ210aW1lX3IgX19hc21fXyAoIiIg
Il9fR0lfX19nbXRpbWVfciIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikp
KTsKCgoKCgpleHRlcm4gaW50IF9fb2ZmdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIsCiAg
ICAgICAgICAgICAgICAgICAgICBsb25nIGludCBfX29mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0bSAqX190cCk7CgpleHRlcm4gY2hhciAqX19hc2N0aW1lX3IgKF9fY29uc3Qg
c3RydWN0IHRtICpfX3RwLCBjaGFyICpfX2J1Zik7CmV4dGVybiB2b2lkIF9fdHpzZXQgKHZvaWQp
OwoKCmV4dGVybiBzdHJ1Y3QgdG0gKl9fdHpfY29udmVydCAoY29uc3QgdGltZV90ICp0aW1lciwg
aW50IHVzZV9sb2NhbHRpbWUsIHN0cnVjdCB0bSAqdHApOwoKCgpleHRlcm4gbG9uZyBpbnQgX190
em5hbWVfbWF4ICh2b2lkKTsKCmV4dGVybiBpbnQgX19uYW5vc2xlZXAgKF9fY29uc3Qgc3RydWN0
IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKTsKZXh0ZXJuIGludCBfX2dldGRhdGVfciAoX19jb25z
dCBjaGFyICpfX3N0cmluZywgc3RydWN0IHRtICpfX3Jlc2J1ZnApOwoKCgpleHRlcm4gaW50IF9f
Z2V0Y2xrdGNrICh2b2lkKTsKIyAyOCAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCIgMgojIDEgIi4u
L3N5c2RlcHMvZ2VuZXJpYy9zdGRpbnQuaCIgMQojIDI3ICIuLi9zeXNkZXBzL2dlbmVyaWMvc3Rk
aW50LmgiCiMgMSAiLi4vc3lzZGVwcy9nZW5lcmljL2JpdHMvd2NoYXIuaCIgMQojIDI4ICIuLi9z
eXNkZXBzL2dlbmVyaWMvc3RkaW50LmgiIDIKIyAxICIuLi9zeXNkZXBzL3g4Nl82NC9iaXRzL3dv
cmRzaXplLmgiIDEKIyAyOSAiLi4vc3lzZGVwcy9nZW5lcmljL3N0ZGludC5oIiAyCiMgMzcgIi4u
L3N5c2RlcHMvZ2VuZXJpYy9zdGRpbnQuaCIKdHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4X3Q7CnR5
cGVkZWYgc2hvcnQgaW50IGludDE2X3Q7CnR5cGVkZWYgaW50IGludDMyX3Q7Cgp0eXBlZGVmIGxv
bmcgaW50IGludDY0X3Q7CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdWludDE2X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1
aW50MzJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1aW50NjRfdDsKIyA2NiAiLi4v
c3lzZGVwcy9nZW5lcmljL3N0ZGludC5oIgp0eXBlZGVmIHNpZ25lZCBjaGFyIGludF9sZWFzdDhf
dDsKdHlwZWRlZiBzaG9ydCBpbnQgaW50X2xlYXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50X2xlYXN0
MzJfdDsKCnR5cGVkZWYgbG9uZyBpbnQgaW50X2xlYXN0NjRfdDsKCgoKCgoKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIHVpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVpbnRf
bGVhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBpbnQgdWludF9sZWFzdDY0X3Q7CiMgOTEgIi4uL3N5c2RlcHMvZ2VuZXJp
Yy9zdGRpbnQuaCIKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfZmFzdDhfdDsKCnR5cGVkZWYgbG9u
ZyBpbnQgaW50X2Zhc3QxNl90Owp0eXBlZGVmIGxvbmcgaW50IGludF9mYXN0MzJfdDsKdHlwZWRl
ZiBsb25nIGludCBpbnRfZmFzdDY0X3Q7CiMgMTA0ICIuLi9zeXNkZXBzL2dlbmVyaWMvc3RkaW50
LmgiCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50X2Zhc3Q4X3Q7Cgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IHVpbnRfZmFzdDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWludF9m
YXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1aW50X2Zhc3Q2NF90OwojIDEyMCAi
Li4vc3lzZGVwcy9nZW5lcmljL3N0ZGludC5oIgp0eXBlZGVmIGxvbmcgaW50IGludHB0cl90OwoK
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWludHB0cl90OwojIDEzNSAiLi4vc3lzZGVwcy9n
ZW5lcmljL3N0ZGludC5oIgp0eXBlZGVmIGxvbmcgaW50IGludG1heF90Owp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgaW50IHVpbnRtYXhfdDsKIyAyOSAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCIgMgoj
IDEgIi4uL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEKIyAxICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIg
MQojIDI5ICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIKCgoKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2No
YXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlw
ZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9f
dV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoKdHlwZWRlZiBf
X2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKCgoKdHlwZWRlZiBf
X2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYg
X19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBf
X25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVm
IF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYgX19vZmY2NF90IG9mZjY0X3Q7CiMgMTA1ICIu
Li9wb3NpeC9zeXMvdHlwZXMuaCIKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19z
c2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBf
X2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTM3ICIuLi9w
b3NpeC9zeXMvdHlwZXMuaCIKdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29uZHNfdDsKCgoKdHlw
ZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKCiMgMSAiL3Vzci9saWI2NC9nY2Mt
bGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE0OCAi
Li4vcG9zaXgvc3lzL3R5cGVzLmgiIDIKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9u
ZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB1aW50OwojIDE5NyAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiCnR5cGVkZWYgdW5zaWduZWQgaW50
IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVu
c2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7
CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwojIDIxMyAiLi4vcG9zaXgvc3lzL3R5cGVzLmgi
CiMgMSAiLi4vaW5jbHVkZS9lbmRpYW4uaCIgMQojIDEgIi4uL3N0cmluZy9lbmRpYW4uaCIgMQoj
IDM3ICIuLi9zdHJpbmcvZW5kaWFuLmgiCiMgMSAiLi4vc3lzZGVwcy94ODZfNjQvYml0cy9lbmRp
YW4uaCIgMQojIDM4ICIuLi9zdHJpbmcvZW5kaWFuLmgiIDIKIyAyICIuLi9pbmNsdWRlL2VuZGlh
bi5oIiAyCiMgMjE0ICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIgMgoKCiMgMSAiLi4vaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDEKCiMgMSAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiIDEKIyAzMSAiLi4vbWlz
Yy9zeXMvc2VsZWN0LmgiCiMgMSAiLi4vc3lzZGVwcy9nZW5lcmljL2JpdHMvc2VsZWN0LmgiIDEK
IyAzMiAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiIDIKCgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2
L2xpbnV4L2JpdHMvc2lnc2V0LmgiIDEKIyAyMyAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv
Yml0cy9zaWdzZXQuaCIKdHlwZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0
cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2Yg
KHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi4uL21pc2Mvc3lz
L3NlbGVjdC5oIiAyCgoKCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgoKCiMgMSAi
Li4vc3lzZGVwcy9nZW5lcmljL2JpdHMvdGltZS5oIiAxCiMgNjcgIi4uL3N5c2RlcHMvZ2VuZXJp
Yy9iaXRzL3RpbWUuaCIKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAg
ICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAiLi4vbWlzYy9zeXMvc2VsZWN0Lmgi
IDIKIyA1NSAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNr
OwojIDY3ICIuLi9taXNjL3N5cy9zZWxlY3QuaCIKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBf
X2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKCgoK
ICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA5OSAiLi4vbWlz
Yy9zeXMvc2VsZWN0LmgiCgoKCgoKCgpleHRlcm4gaW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRf
c2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19y
ZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0
IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJp
Y3QgX190aW1lb3V0KSA7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9z
ZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19y
ZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmlj
dCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMg
Kl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0
X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKSA7CgoKCiMgMyAiLi4vaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDIKCgpleHRlcm4gaW50IF9fcHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3JlYWRm
ZHMsCiAgICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fd3JpdGVmZHMsIGZkX3NldCAqX19l
eGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9f
dGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fc2lnbWFz
ayk7CgpleHRlcm4gaW50IF9fc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3Qg
X19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0
ZWZkcywKICAgICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRz
LAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVv
dXQpOwpleHRlcm4gX190eXBlb2YgKF9fc2VsZWN0KSBfX0dJX19fc2VsZWN0OyBleHRlcm4gX190
eXBlb2YgKF9fc2VsZWN0KSBfX3NlbGVjdCBfX2FzbV9fICgiIiAiX19HSV9fX3NlbGVjdCIpIF9f
YXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKIyAyMTcgIi4uL3Bvc2l4L3N5
cy90eXBlcy5oIiAyCgoKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zeXMvc3lzbWFj
cm9zLmgiIDEKIyAyMjAgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIiAyCgoKCgp0eXBlZGVmIF9fYmxr
c2l6ZV90IGJsa3NpemVfdDsKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwoKCgp0
eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNmaWxjbnRfdCBm
c2ZpbGNudF90OwojIDI1OCAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiCnR5cGVkZWYgX19ibGtjbnQ2
NF90IGJsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnQ2NF90Owp0eXBl
ZGVmIF9fZnNmaWxjbnQ2NF90IGZzZmlsY250NjRfdDsKCgoKCgojIDEgIi4uL2xpbnV4dGhyZWFk
cy9zeXNkZXBzL3B0aHJlYWQvYml0cy9wdGhyZWFkdHlwZXMuaCIgMQojIDIzICIuLi9saW51eHRo
cmVhZHMvc3lzZGVwcy9wdGhyZWFkL2JpdHMvcHRocmVhZHR5cGVzLmgiCiMgMSAiLi4vc3lzZGVw
cy91bml4L3N5c3YvbGludXgvYml0cy9zY2hlZC5oIiAxCiMgNjggIi4uL3N5c2RlcHMvdW5peC9z
eXN2L2xpbnV4L2JpdHMvc2NoZWQuaCIKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQg
X19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0ICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhy
ZWFkL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIKCgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewog
IGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1
Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0
cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hl
ZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5o
ZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19z
dGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsK
fSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9m
YXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFk
X2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29u
ZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJl
YWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFz
dGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAg
aW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0
aHJlYWRfb25jZV90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrX3QKewogIHN0
cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3X2xvY2s7CiAgaW50IF9fcndfcmVhZGVyczsKICBf
cHRocmVhZF9kZXNjciBfX3J3X3dyaXRlcjsKICBfcHRocmVhZF9kZXNjciBfX3J3X3JlYWRfd2Fp
dGluZzsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlX3dhaXRpbmc7CiAgaW50IF9fcndfa2lu
ZDsKICBpbnQgX19yd19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCnR5cGVkZWYgc3Ry
dWN0CnsKICBpbnQgX19sb2Nra2luZDsKICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2Nr
YXR0cl90OwoKCgoKdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190OwoKCnR5
cGVkZWYgc3RydWN0IHsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19iYV9sb2NrOwogIGlu
dCBfX2JhX3JlcXVpcmVkOwogIGludCBfX2JhX3ByZXNlbnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19i
YV93YWl0aW5nOwp9IHB0aHJlYWRfYmFycmllcl90OwoKCnR5cGVkZWYgc3RydWN0IHsKICBpbnQg
X19wc2hhcmVkOwp9IHB0aHJlYWRfYmFycmllcmF0dHJfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IHB0aHJlYWRfdDsKIyAyNjcgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIiAyCgoKCiMg
MiAiLi4vaW5jbHVkZS9zeXMvdHlwZXMuaCIgMgojIDMwICIuLi9sb2NhbGUvbG9jYWxlaW5mby5o
IiAyCgojIDEgIi4uL2ludGwvbG9hZGluZm8uaCIgMQojIDQ4ICIuLi9pbnRsL2xvYWRpbmZvLmgi
CnN0cnVjdCBsb2FkZWRfbDEwbmZpbGUKewogIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwogIGludCBk
ZWNpZGVkOwoKICBjb25zdCB2b2lkICpkYXRhOwoKICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpu
ZXh0OwogIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnN1Y2Nlc3NvclsxXTsKfTsKCgoKCgoKZXh0
ZXJuIGNvbnN0IGNoYXIgKl9ubF9ub3JtYWxpemVfY29kZXNldCAoY29uc3QgY2hhciAqY29kZXNl
dCwgc2l6ZV90IG5hbWVfbGVuKTsKCgpleHRlcm4gc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqCl9u
bF9tYWtlX2wxMG5mbGlzdCAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmwxMG5maWxlX2xpc3Qs
IGNvbnN0IGNoYXIgKmRpcmxpc3QsIHNpemVfdCBkaXJsaXN0X2xlbiwgaW50IG1hc2ssIGNvbnN0
IGNoYXIgKmxhbmd1YWdlLCBjb25zdCBjaGFyICp0ZXJyaXRvcnksIGNvbnN0IGNoYXIgKmNvZGVz
ZXQsIGNvbnN0IGNoYXIgKm5vcm1hbGl6ZWRfY29kZXNldCwgY29uc3QgY2hhciAqbW9kaWZpZXIs
IGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZG9fYWxsb2NhdGUpOwojIDc3ICIuLi9pbnRsL2xv
YWRpbmZvLmgiCmV4dGVybiBjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzIChjb25zdCBjaGFy
ICpuYW1lKTsKCgoKZXh0ZXJuIGludCBfbmxfZXhwbG9kZV9uYW1lIChjaGFyICpuYW1lLCBjb25z
dCBjaGFyICoqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKiptb2RpZmllciwgY29uc3QgY2hhciAqKnRl
cnJpdG9yeSwgY29uc3QgY2hhciAqKmNvZGVzZXQsIGNvbnN0IGNoYXIgKipub3JtYWxpemVkX2Nv
ZGVzZXQpOwoKCgoKCmV4dGVybiBjaGFyICpfbmxfZmluZF9sYW5ndWFnZSAoY29uc3QgY2hhciAq
bmFtZSk7CiMgMzIgIi4uL2xvY2FsZS9sb2NhbGVpbmZvLmgiIDIKIyA0NSAiLi4vbG9jYWxlL2xv
Y2FsZWluZm8uaCIKc3RydWN0IGxvY2FsZV9kYXRhCnsKICBjb25zdCBjaGFyICpuYW1lOwogIGNv
bnN0IGNoYXIgKmZpbGVkYXRhOwogIG9mZl90IGZpbGVzaXplOwogIGVudW0KICB7CiAgICBsZF9t
YWxsb2NlZCwKICAgIGxkX21hcHBlZCwKICAgIGxkX2FyY2hpdmUKICB9IGFsbG9jOwoKCgoKICBz
dHJ1Y3QKICB7CiAgICB2b2lkICgqY2xlYW51cCkgKHN0cnVjdCBsb2NhbGVfZGF0YSAqKSA7CiAg
ICB1bmlvbgogICAgewogICAgICB2b2lkICpkYXRhOwogICAgICBzdHJ1Y3QgbGNfdGltZV9kYXRh
ICp0aW1lOwogICAgICBjb25zdCBzdHJ1Y3QgZ2NvbnZfZmN0cyAqY3R5cGU7CiAgICB9OwogIH0g
cHJpdmF0ZTsKCiAgdW5zaWduZWQgaW50IHVzYWdlX2NvdW50OwoKICBpbnQgdXNlX3RyYW5zbGl0
OwoKCiAgdW5zaWduZWQgaW50IG5zdHJpbmdzOwogIHVuaW9uIGxvY2FsZV9kYXRhX3ZhbHVlCiAg
ewogICAgY29uc3QgdWludDMyX3QgKndzdHI7CiAgICBjb25zdCBjaGFyICpzdHJpbmc7CiAgICB1
bnNpZ25lZCBpbnQgd29yZDsKICB9CiAgdmFsdWVzIFtdOwp9OwoKCmVudW0gY29sbF9zb3J0X3J1
bGUKewogIGlsbGVnYWxfMF9fLAogIHNvcnRfZm9yd2FyZCwKICBzb3J0X2JhY2t3YXJkLAogIGls
bGVnYWxfM19fLAogIHNvcnRfcG9zaXRpb24sCiAgc29ydF9mb3J3YXJkX3Bvc2l0aW9uLAogIHNv
cnRfYmFja3dhcmRfcG9zaXRpb24sCiAgc29ydF9tYXNrCn07CgoKZW51bSB2YWx1ZV90eXBlCnsK
ICBub25lLAogIHN0cmluZywKICBzdHJpbmdhcnJheSwKICBieXRlLAogIGJ5dGVhcnJheSwKICB3
b3JkLAogIHN0cmluZ2xpc3QsCiAgd29yZGFycmF5LAogIHdzdHJpbmcsCiAgd3N0cmluZ2FycmF5
LAogIHdzdHJpbmdsaXN0Cn07CiMgMTI1ICIuLi9sb2NhbGUvbG9jYWxlaW5mby5oIgpzdHJ1Y3Qg
ZXJhX2VudHJ5CnsKICB1aW50MzJfdCBkaXJlY3Rpb247CiAgaW50MzJfdCBvZmZzZXQ7CiAgaW50
MzJfdCBzdGFydF9kYXRlWzNdOwogIGludDMyX3Qgc3RvcF9kYXRlWzNdOwogIGNvbnN0IGNoYXIg
KmVyYV9uYW1lOwogIGNvbnN0IGNoYXIgKmVyYV9mb3JtYXQ7CiAgY29uc3Qgd2NoYXJfdCAqZXJh
X3duYW1lOwogIGNvbnN0IHdjaGFyX3QgKmVyYV93Zm9ybWF0OwogIGludCBhYnNvbHV0ZV9kaXJl
Y3Rpb247CgoKCn07CgoKCnN0cnVjdCBsY190aW1lX2RhdGEKewogIHN0cnVjdCBlcmFfZW50cnkg
KmVyYXM7CiAgc2l6ZV90IG51bV9lcmFzOwogIGludCBlcmFfaW5pdGlhbGl6ZWQ7CgogIGNvbnN0
IGNoYXIgKiphbHRfZGlnaXRzOwogIGNvbnN0IHdjaGFyX3QgKip3YWx0X2RpZ2l0czsKICBpbnQg
YWx0X2RpZ2l0c19pbml0aWFsaXplZDsKICBpbnQgd2FsdF9kaWdpdHNfaW5pdGlhbGl6ZWQ7Cn07
CgoKCgplbnVtCnsKICBfX1RPV190b3VwcGVyID0gMCwKICBfX1RPV190b2xvd2VyID0gMQp9Owoj
IDE3MiAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCIKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IF9u
bF9jYXRlZ29yeV9uYW1lc1sxM10gX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4i
KSkpOwpleHRlcm4gY29uc3Qgc2l6ZV90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzWzEzXSBfX2F0
dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKZXh0ZXJuIGNvbnN0IGNoYXIg
X25sX0NfbmFtZVtdIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0
ZXJuIGNvbnN0IGNoYXIgX25sX1BPU0lYX25hbWVbXSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0
eSAoImhpZGRlbiIpKSk7CgoKZXh0ZXJuIGNvbnN0IGNoYXIgX25sX0NfY29kZXNldFtdIF9fYXR0
cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKCgoKCmV4dGVybiBzdHJ1Y3QgX19s
b2NhbGVfc3RydWN0IF9ubF9nbG9iYWxfbG9jYWxlIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5
ICgiaGlkZGVuIikpKTsKCgoKCiMgMSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9i
aXRzL2xpYmMtdHNkLmgiIDEKIyAyNCAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9i
aXRzL2xpYmMtdHNkLmgiCmVudW0gX19saWJjX3RzZF9rZXlfdCB7IF9MSUJDX1RTRF9LRVlfTUFM
TE9DID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgX0xJQkNfVFNEX0tFWV9ETF9FUlJPUiwK
ICAgICAgICAgICAgICAgICAgICAgICAgX0xJQkNfVFNEX0tFWV9SUENfVkFSUywKICAgICAgICAg
ICAgICAgICAgICAgICAgX0xJQkNfVFNEX0tFWV9MT0NBTEUsCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9MSUJDX1RTRF9LRVlfQ1RZUEVfQiwKICAgICAgICAgICAgICAgICAgICAgICAgX0xJQkNf
VFNEX0tFWV9DVFlQRV9UT0xPV0VSLAogICAgICAgICAgICAgICAgICAgICAgICBfTElCQ19UU0Rf
S0VZX0NUWVBFX1RPVVBQRVIsCiAgICAgICAgICAgICAgICAgICAgICAgIF9MSUJDX1RTRF9LRVlf
TiB9OwoKIyAxICIuLi9pbmNsdWRlL3Rscy5oIiAxCgoKIyAxICIuLi9saW51eHRocmVhZHMvc3lz
ZGVwcy94ODZfNjQvdGxzLmgiIDEKIyAyNSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMveDg2XzY0
L3Rscy5oIgojIDEgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3g4Nl82NC9wdC1tYWNoaW5lLmgi
IDEKIyAyNCAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMveDg2XzY0L3B0LW1hY2hpbmUuaCIKIyAx
ICIvdXNyL2xpYjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMyA0CiMgMjUgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3g4Nl82NC9wdC1tYWNoaW5l
LmgiIDIKIyAxICIuLi9pbmNsdWRlL3N0ZGxpYi5oIiAxCgoKCgoKCiMgMSAiL3Vzci9saWI2NC9n
Y2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDgg
Ii4uL2luY2x1ZGUvc3RkbGliLmgiIDIKIyAxICIuLi9zdGRsaWIvc3RkbGliLmgiIDEKIyAzMyAi
Li4vc3RkbGliL3N0ZGxpYi5oIgojIDEgIi91c3IvbGliNjQvZ2NjLWxpYi94ODZfNjQtc3VzZS1s
aW51eC8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzNCAiLi4vc3RkbGliL3N0ZGxpYi5o
IiAyCgoKCgoKCgoKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3dhaXRmbGFn
cy5oIiAxCiMgNDMgIi4uL3N0ZGxpYi9zdGRsaWIuaCIgMgojIDEgIi4uL3N5c2RlcHMvZ2VuZXJp
Yy9iaXRzL3dhaXRzdGF0dXMuaCIgMQojIDYzICIuLi9zeXNkZXBzL2dlbmVyaWMvYml0cy93YWl0
c3RhdHVzLmgiCiMgMSAiLi4vaW5jbHVkZS9lbmRpYW4uaCIgMQojIDY0ICIuLi9zeXNkZXBzL2dl
bmVyaWMvYml0cy93YWl0c3RhdHVzLmgiIDIKCnVuaW9uIHdhaXQKICB7CiAgICBpbnQgd19zdGF0
dXM7CiAgICBzdHJ1Y3QKICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3Rlcm1zaWc6
NzsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X2NvcmVkdW1wOjE7CiAgICAgICAgdW5zaWduZWQg
aW50IF9fd19yZXRjb2RlOjg7CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoKCgoKICAgICAg
fSBfX3dhaXRfdGVybWluYXRlZDsKICAgIHN0cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVk
IGludCBfX3dfc3RvcHZhbDo4OwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfc3RvcHNpZzo4Owog
ICAgICAgIHVuc2lnbmVkIGludDoxNjsKCgoKCgoKICAgICAgfSBfX3dhaXRfc3RvcHBlZDsKICB9
OwojIDQ0ICIuLi9zdGRsaWIvc3RkbGliLmgiIDIKIyA2OCAiLi4vc3RkbGliL3N0ZGxpYi5oIgp0
eXBlZGVmIHVuaW9uCiAgewogICAgdW5pb24gd2FpdCAqX191cHRyOwogICAgaW50ICpfX2lwdHI7
CiAgfSBfX1dBSVRfU1RBVFVTIF9fYXR0cmlidXRlX18gKChfX3RyYW5zcGFyZW50X3VuaW9uX18p
KTsKIyA5MyAiLi4vc3RkbGliL3N0ZGxpYi5oIgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50
IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAg
bG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKCgoKCgoKCl9fZXh0
ZW5zaW9uX18gdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICBs
b25nIGxvbmcgaW50IHJlbTsKICB9IGxsZGl2X3Q7CgoKIyAxMzcgIi4uL3N0ZGxpYi9zdGRsaWIu
aCIKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCgpleHRl
cm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCmV4dGVybiBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAq
X19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpfX2V4dGVuc2lvbl9fIGV4
dGVybiBsb25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyKSA7CgoKCgoKZXh0ZXJuIGZsb2F0IHN0cnRvZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCgoKCgpleHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50
IF9fYmFzZSkKICAgICA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0
cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19l
eHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgoK
CgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRl
cm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsKCiMgMjI1ICIuLi9zdGRs
aWIvc3RkbGliLmgiCiMgMSAiLi4vaW5jbHVkZS94bG9jYWxlLmgiIDEKIyAyMjYgIi4uL3N0ZGxp
Yi9zdGRsaWIuaCIgMgoKCgpleHRlcm4gbG9uZyBpbnQgc3RydG9sX2wgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19s
b2NhbGVfdCBfX2xvYykgOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWxfbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpIDsKCl9fZXh0ZW5z
aW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgOwoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2Rf
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgOwoK
ZXh0ZXJuIGZsb2F0IHN0cnRvZl9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2Fs
ZV90IF9fbG9jKSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZF9sIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2Nh
bGVfdCBfX2xvYykgOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgOwpleHRl
cm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9p
bnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSA7CgpleHRlcm4g
bG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwg
aW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRl
cm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGlu
dCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3Ry
dG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBp
bnQgX19ncm91cCkgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcg
aW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgOwoKCgoKCgoKCmV4dGVy
biBfX2lubGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvZF9pbnRlcm5h
bCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRv
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbF9pbnRlcm5hbCAo
X19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg
bG9uZyBpbnQKc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19z
dHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCgpleHRl
cm4gX19pbmxpbmUgZmxvYXQKc3RydG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvZl9pbnRlcm5h
bCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlCnN0
cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9sZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgMCk7Cn0KCgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQK
c3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRl
cm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVy
biBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBp
bnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KCgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcg
bG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19z
dHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91bGwgKF9f
Y29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwKICAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAo
X19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJs
ZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwg
KGNoYXIgKiopICgodm9pZCAqKTApKTsKfQpleHRlcm4gX19pbmxpbmUgaW50CmF0b2kgKF9fY29u
c3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIChpbnQpIHN0cnRvbCAoX19ucHRyLCAoY2hhciAq
KikgKCh2b2lkICopMCksIDEwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19j
b25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAo
KHZvaWQgKikwKSwgMTApOwp9CgoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25n
IGxvbmcgaW50CmF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2xs
IChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CgojIDQwOCAiLi4vc3RkbGli
L3N0ZGxpYi5oIgpleHRlcm4gY2hhciAqbDY0YSAobG9uZyBpbnQgX19uKSA7CgoKZXh0ZXJuIGxv
bmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgojIDEgIi4uL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEKIyA0MTUgIi4uL3N0ZGxpYi9zdGRs
aWIuaCIgMgoKCgoKCgpleHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSA7CgoKZXh0ZXJuIHZv
aWQgc3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgoKCmV4dGVybiBjaGFyICppbml0
c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSA7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0
ZSAoY2hhciAqX19zdGF0ZWJ1ZikgOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAg
aW50MzJfdCAqZnB0cjsKICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAg
IGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBp
bnQzMl90ICplbmRfcHRyOwogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9t
X2RhdGEgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKl9f
cmVzdHJpY3QgX19yZXN1bHQpIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1bnNpZ25lZCBpbnQg
X19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSA7CgpleHRlcm4gaW50IGluaXRzdGF0
ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuLAogICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsKCmV4dGVybiBp
bnQgc2V0c3RhdGVfciAoY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCgpl
eHRlcm4gaW50IHJhbmQgKHZvaWQpIDsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQg
X19zZWVkKSA7CgoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsK
CgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5k
NDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxy
YW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJu
IGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0
ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBz
aG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRl
cm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgOwoKCgoKCnN0
cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAg
dW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19j
OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX19hOwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEg
Kl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVz
dHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQg
Kl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhf
ZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBs
b25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5z
aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
bG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAo
bG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICA7
CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAog
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwoKZXh0
ZXJuIGludCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAogICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKCgoKCgoKCgoK
ZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19z
aXplKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKCgpleHRlcm4gdm9p
ZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChf
X21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgOwoKCgoKZXh0ZXJu
IHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSA7CgoKCiMgMSAiLi4vaW5jbHVkZS9hbGxvY2EuaCIg
MQoKCiMgMSAiLi4vc3RkbGliL2FsbG9jYS5oIiAxCiMgMjUgIi4uL3N0ZGxpYi9hbGxvY2EuaCIK
IyAxICIvdXNyL2xpYjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMyA0CiMgMjYgIi4uL3N0ZGxpYi9hbGxvY2EuaCIgMgoKCgoKCgoKZXh0ZXJuIHZv
aWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgOwoKCgoKCgojIDQgIi4uL2luY2x1ZGUvYWxsb2Nh
LmgiIDIKCgoKCmV4dGVybiB2b2lkICpfX2FsbG9jYSAoc2l6ZV90IF9fc2l6ZSk7CgoKCgoKZXh0
ZXJuIGludCBfX2xpYmNfdXNlX2FsbG9jYSAoc2l6ZV90IHNpemUpIF9fYXR0cmlidXRlX18gKChj
b25zdCkpOwpleHRlcm4gaW50IF9fbGliY19hbGxvY2FfY3V0b2ZmIChzaXplX3Qgc2l6ZSkgX19h
dHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgoKCiMgMSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvdW5p
eC9zeXN2L2xpbnV4L2FsbG9jYWxpbS5oIiAxCiMgMjAgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBz
L3VuaXgvc3lzdi9saW51eC9hbGxvY2FsaW0uaCIKIyAxICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAx
CiMgMTQ0ICIuLi9pbmNsdWRlL2xpbWl0cy5oIgojIDEgIi4uL2luY2x1ZGUvYml0cy9wb3NpeDFf
bGltLmgiIDEKIyAxNDUgIi4uL2luY2x1ZGUvbGltaXRzLmgiIDIKCgoKIyAxICIuLi9pbmNsdWRl
L2JpdHMvcG9zaXgyX2xpbS5oIiAxCiMgMTQ5ICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCiMgMjEg
Ii4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hbGxvY2FsaW0uaCIgMgoK
ZXh0ZXJuIGlubGluZSBpbnQgX19saWJjX3VzZV9hbGxvY2EgKHNpemVfdCBzaXplKQp7CiAgcmV0
dXJuIChfX2J1aWx0aW5fZXhwZWN0IChzaXplIDw9IDE2Mzg0IC8gNCwgMSkKICAgICAgICAgIHx8
IF9fbGliY19hbGxvY2FfY3V0b2ZmIChzaXplKSk7Cn0KIyAyMCAiLi4vaW5jbHVkZS9hbGxvY2Eu
aCIgMgojIDU3NyAiLi4vc3RkbGliL3N0ZGxpYi5oIiAyCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9j
IChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJu
IGludCBwb3NpeF9tZW1hbGlnbiAodm9pZCAqKl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQs
IHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4
dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoK
CmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIDsKCgoKCgpleHRlcm4g
aW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJnKSwg
dm9pZCAqX19hcmcpCiAgICAgOwoKCgoKCgpleHRlcm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMp
IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQg
KGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgpleHRl
cm4gY2hhciAqZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoKZXh0ZXJuIGNoYXIg
Kl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgpleHRlcm4gaW50
IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIDsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAg
ICA7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgoK
ZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgOwojIDY2MSAiLi4vc3RkbGliL3N0ZGxpYi5oIgpl
eHRlcm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CgoKCgoKCgpleHRlcm4gaW50
IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NzggIi4uL3N0ZGxpYi9zdGRsaWIuaCIK
ZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2ODggIi4uL3N0ZGxp
Yi9zdGRsaWIuaCIKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoK
CgpleHRlcm4gaW50IHN5c3RlbSAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQpIDsKCgoKCgoKCmV4
dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
OwojIDcxMiAiLi4vc3RkbGliL3N0ZGxpYi5oIgpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
X19yZXN0cmljdCBfX3Jlc29sdmVkKSA7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5f
dCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9m
bl90IGNvbXBhcmlzb25fZm5fdDsKCgoKCgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qg
dm9pZCAqX19rZXksIF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoK
CgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90
IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpl
eHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRl
cm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9u
ZyBpbnQgX194KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVy
biBkaXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3QgbGRpdiAobG9uZyBpbnQgX19udW1lciwgbG9u
ZyBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpfX2V4
dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2IChsb25nIGxvbmcgaW50IF9fbnVtZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBpbnQgX19kZW5vbSkK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgojIDc3NiAiLi4vc3RkbGliL3N0ZGxp
Yi5oIgpleHRlcm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduKSA7CgoKCgpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9u
ZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAq
X19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFy
ICpxZmN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAg
ICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7
CmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBj
aGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAg
ICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAg
ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBxZmN2
dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAg
ICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAg
ICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoK
CgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgOwoK
CmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKCmV4
dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoKCgpleHRlcm4g
c2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoK
ZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBf
X24pCiAgICAgOwoKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jl
c3BvbnNlKSA7CiMgODU4ICIuLi9zdGRsaWIvc3RkbGliLmgiCmV4dGVybiBpbnQgZ2V0c3Vib3B0
IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCiAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICpfX2NvbnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5zLAogICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX192YWx1ZXApIDsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkgKF9fY29u
c3QgY2hhciAqX19rZXkpIDsKCgoKCgoKCmV4dGVybiBpbnQgcG9zaXhfb3BlbnB0IChpbnQgX19v
ZmxhZykgOwoKCgoKCgoKZXh0ZXJuIGludCBncmFudHB0IChpbnQgX19mZCkgOwoKCgpleHRlcm4g
aW50IHVubG9ja3B0IChpbnQgX19mZCkgOwoKCgoKZXh0ZXJuIGNoYXIgKnB0c25hbWUgKGludCBf
X2ZkKSA7CgoKCgoKCmV4dGVybiBpbnQgcHRzbmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYs
IHNpemVfdCBfX2J1ZmxlbikgOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIDsKCgoKCgoKZXh0
ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVtKSA7CgoK
CgoKCiMgOSAiLi4vaW5jbHVkZS9zdGRsaWIuaCIgMgoKCgoKZXh0ZXJuIF9fdHlwZW9mIChzdHJ0
b2xfbCkgX19zdHJ0b2xfbDsKZXh0ZXJuIF9fdHlwZW9mIChzdHJ0b3VsX2wpIF9fc3RydG91bF9s
OwpleHRlcm4gX190eXBlb2YgKHN0cnRvbGxfbCkgX19zdHJ0b2xsX2w7CmV4dGVybiBfX3R5cGVv
ZiAoc3RydG91bGxfbCkgX19zdHJ0b3VsbF9sOwpleHRlcm4gX190eXBlb2YgKHN0cnRvZF9sKSBf
X3N0cnRvZF9sOwpleHRlcm4gX190eXBlb2YgKHN0cnRvZl9sKSBfX3N0cnRvZl9sOwpleHRlcm4g
X190eXBlb2YgKHN0cnRvbGRfbCkgX19zdHJ0b2xkX2w7CgpleHRlcm4gX190eXBlb2YgKGV4aXQp
IF9fR0lfZXhpdDsgZXh0ZXJuIF9fdHlwZW9mIChleGl0KSBleGl0IF9fYXNtX18gKCIiICJfX0dJ
X2V4aXQiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBf
X3R5cGVvZiAoYWJvcnQpIF9fR0lfYWJvcnQ7IGV4dGVybiBfX3R5cGVvZiAoYWJvcnQpIGFib3J0
IF9fYXNtX18gKCIiICJfX0dJX2Fib3J0IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJo
aWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKGdldGVudikgX19HSV9nZXRlbnY7IGV4dGVybiBf
X3R5cGVvZiAoZ2V0ZW52KSBnZXRlbnYgX19hc21fXyAoIiIgIl9fR0lfZ2V0ZW52IikgX19hdHRy
aWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKGJzZWFy
Y2gpIF9fR0lfYnNlYXJjaDsgZXh0ZXJuIF9fdHlwZW9mIChic2VhcmNoKSBic2VhcmNoIF9fYXNt
X18gKCIiICJfX0dJX2JzZWFyY2giKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRl
biIpKSk7CmV4dGVybiBfX3R5cGVvZiAocXNvcnQpIF9fR0lfcXNvcnQ7IGV4dGVybiBfX3R5cGVv
ZiAocXNvcnQpIHFzb3J0IF9fYXNtX18gKCIiICJfX0dJX3Fzb3J0IikgX19hdHRyaWJ1dGVfXyAo
KHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKGVjdnRfcikgX19HSV9l
Y3Z0X3I7IGV4dGVybiBfX3R5cGVvZiAoZWN2dF9yKSBlY3Z0X3IgX19hc21fXyAoIiIgIl9fR0lf
ZWN2dF9yIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4g
X190eXBlb2YgKGZjdnRfcikgX19HSV9mY3Z0X3I7IGV4dGVybiBfX3R5cGVvZiAoZmN2dF9yKSBm
Y3Z0X3IgX19hc21fXyAoIiIgIl9fR0lfZmN2dF9yIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxp
dHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKHFlY3Z0X3IpIF9fR0lfcWVjdnRfcjsg
ZXh0ZXJuIF9fdHlwZW9mIChxZWN2dF9yKSBxZWN2dF9yIF9fYXNtX18gKCIiICJfX0dJX3FlY3Z0
X3IiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5
cGVvZiAocWZjdnRfcikgX19HSV9xZmN2dF9yOyBleHRlcm4gX190eXBlb2YgKHFmY3Z0X3IpIHFm
Y3Z0X3IgX19hc21fXyAoIiIgIl9fR0lfcWZjdnRfciIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmls
aXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChscmFuZDQ4X3IpIF9fR0lfbHJhbmQ0
OF9yOyBleHRlcm4gX190eXBlb2YgKGxyYW5kNDhfcikgbHJhbmQ0OF9yIF9fYXNtX18gKCIiICJf
X0dJX2xyYW5kNDhfciIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsK
ZXh0ZXJuIF9fdHlwZW9mICh3Y3RvbWIpIF9fR0lfd2N0b21iOyBleHRlcm4gX190eXBlb2YgKHdj
dG9tYikgd2N0b21iIF9fYXNtX18gKCIiICJfX0dJX3djdG9tYiIpIF9fYXR0cmlidXRlX18gKCh2
aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3NlY3VyZV9nZXRlbnYp
IF9fR0lfX19zZWN1cmVfZ2V0ZW52OyBleHRlcm4gX190eXBlb2YgKF9fc2VjdXJlX2dldGVudikg
X19zZWN1cmVfZ2V0ZW52IF9fYXNtX18gKCIiICJfX0dJX19fc2VjdXJlX2dldGVudiIpIF9fYXR0
cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3N0
cnRvZl9pbnRlcm5hbCkgX19HSV9fX3N0cnRvZl9pbnRlcm5hbDsgZXh0ZXJuIF9fdHlwZW9mIChf
X3N0cnRvZl9pbnRlcm5hbCkgX19zdHJ0b2ZfaW50ZXJuYWwgX19hc21fXyAoIiIgIl9fR0lfX19z
dHJ0b2ZfaW50ZXJuYWwiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7
CmV4dGVybiBfX3R5cGVvZiAoX19zdHJ0b2RfaW50ZXJuYWwpIF9fR0lfX19zdHJ0b2RfaW50ZXJu
YWw7IGV4dGVybiBfX3R5cGVvZiAoX19zdHJ0b2RfaW50ZXJuYWwpIF9fc3RydG9kX2ludGVybmFs
IF9fYXNtX18gKCIiICJfX0dJX19fc3RydG9kX2ludGVybmFsIikgX19hdHRyaWJ1dGVfXyAoKHZp
c2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKF9fc3RydG9sZF9pbnRlcm5h
bCkgX19HSV9fX3N0cnRvbGRfaW50ZXJuYWw7IGV4dGVybiBfX3R5cGVvZiAoX19zdHJ0b2xkX2lu
dGVybmFsKSBfX3N0cnRvbGRfaW50ZXJuYWwgX19hc21fXyAoIiIgIl9fR0lfX19zdHJ0b2xkX2lu
dGVybmFsIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4g
X190eXBlb2YgKF9fc3RydG9sX2ludGVybmFsKSBfX0dJX19fc3RydG9sX2ludGVybmFsOyBleHRl
cm4gX190eXBlb2YgKF9fc3RydG9sX2ludGVybmFsKSBfX3N0cnRvbF9pbnRlcm5hbCBfX2FzbV9f
ICgiIiAiX19HSV9fX3N0cnRvbF9pbnRlcm5hbCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5
ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3N0cnRvbGxfaW50ZXJuYWwpIF9fR0lf
X19zdHJ0b2xsX2ludGVybmFsOyBleHRlcm4gX190eXBlb2YgKF9fc3RydG9sbF9pbnRlcm5hbCkg
X19zdHJ0b2xsX2ludGVybmFsIF9fYXNtX18gKCIiICJfX0dJX19fc3RydG9sbF9pbnRlcm5hbCIp
IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9m
IChfX3N0cnRvdWxfaW50ZXJuYWwpIF9fR0lfX19zdHJ0b3VsX2ludGVybmFsOyBleHRlcm4gX190
eXBlb2YgKF9fc3RydG91bF9pbnRlcm5hbCkgX19zdHJ0b3VsX2ludGVybmFsIF9fYXNtX18gKCIi
ICJfX0dJX19fc3RydG91bF9pbnRlcm5hbCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgi
aGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3N0cnRvdWxsX2ludGVybmFsKSBfX0dJX19f
c3RydG91bGxfaW50ZXJuYWw7IGV4dGVybiBfX3R5cGVvZiAoX19zdHJ0b3VsbF9pbnRlcm5hbCkg
X19zdHJ0b3VsbF9pbnRlcm5hbCBfX2FzbV9fICgiIiAiX19HSV9fX3N0cnRvdWxsX2ludGVybmFs
IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKZXh0ZXJuIGxvbmcg
aW50IF9fcmFuZG9tICh2b2lkKTsKZXh0ZXJuIHZvaWQgX19zcmFuZG9tICh1bnNpZ25lZCBpbnQg
X19zZWVkKTsKZXh0ZXJuIGNoYXIgKl9faW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBj
aGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRl
bGVuKTsKZXh0ZXJuIGNoYXIgKl9fc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpOwpleHRlcm4g
aW50IF9fcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYsIGludDMyX3QgKl9fcmVz
dWx0KTsKZXh0ZXJuIGludCBfX3NyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0
IHJhbmRvbV9kYXRhICpfX2J1Zik7CmV4dGVybiBpbnQgX19pbml0c3RhdGVfciAodW5zaWduZWQg
aW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19zdGF0ZWxlbiwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1Zik7CmV4dGVybiBpbnQg
X19zZXRzdGF0ZV9yIChjaGFyICpfX3N0YXRlYnVmLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVm
KTsKZXh0ZXJuIGludCBfX3JhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpOwpleHRlcm4gaW50
IF9fZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIsIGRvdWJsZSAqX19yZXN1
bHQpOwpleHRlcm4gaW50IF9fbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3VsdCk7CmV4dGVybiBpbnQg
X19qcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdWx0KTsKZXh0ZXJuIGludCBfX3NyYW5kNDhfciAobG9u
ZyBpbnQgX19zZWVkdmFsLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX2J1ZmZlcik7CmV4dGVybiBpbnQgX19zZWVkNDhfciAodW5zaWduZWQgc2hvcnQgaW50
IF9fc2VlZDE2dlszXSwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRh
ICpfX2J1ZmZlcik7CmV4dGVybiBpbnQgX19sY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBf
X3BhcmFtWzddLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X2J1ZmZlcik7CgoKZXh0ZXJuIGludCBfX2RyYW5kNDhfaXRlcmF0ZSAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fYnVmZmVyKTsKCgpleHRlcm4gc3RydWN0IGRyYW5kNDhfZGF0YSBfX2xpYmNf
ZHJhbmQ0OF9kYXRhIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKCmV4
dGVybiBpbnQgX19zZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0IGNoYXIgKl9f
dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgIGludCBfX3JlcGxhY2UpOwpleHRlcm4gaW50IF9f
dW5zZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKTsKZXh0ZXJuIGludCBfX2NsZWFyZW52ICh2
b2lkKTsKZXh0ZXJuIGNoYXIgKl9fY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoX19jb25zdCBjaGFy
ICpfX25hbWUpOwpleHRlcm4gY2hhciAqX19yZWFscGF0aCAoX19jb25zdCBjaGFyICpfX25hbWUs
IGNoYXIgKl9fcmVzb2x2ZWQpOwpleHRlcm4gaW50IF9fcHRzbmFtZV9yIChpbnQgX19mZCwgY2hh
ciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbik7CmV4dGVybiBpbnQgX19nZXRwdCAodm9pZCk7CmV4
dGVybiBpbnQgX19wb3NpeF9vcGVucHQgKGludCBfX29mbGFnKTsKCmV4dGVybiBpbnQgX19hZGRf
dG9fZW52aXJvbiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29tYmluZXMsIGludCByZXBsYWNlKTsK
CmV4dGVybiB2b2lkIF9xdWlja3NvcnQgKHZvaWQgKmNvbnN0IHBiYXNlLCBzaXplX3QgdG90YWxf
ZWxlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBfX2NvbXBhcl9mbl90
IGNtcCk7CgpleHRlcm4gaW50IF9fb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1
cywgdm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZyk7CgpleHRlcm4gaW50IF9fY3hhX2F0ZXhpdCAo
dm9pZCAoKmZ1bmMpICh2b2lkICopLCB2b2lkICphcmcsIHZvaWQgKmQpOwpleHRlcm4gaW50IF9f
Y3hhX2F0ZXhpdF9pbnRlcm5hbCAodm9pZCAoKmZ1bmMpICh2b2lkICopLCB2b2lkICphcmcsIHZv
aWQgKmQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKZXh0
ZXJuIHZvaWQgX19jeGFfZmluYWxpemUgKHZvaWQgKmQpOwoKZXh0ZXJuIGludCBfX3Bvc2l4X21l
bWFsaWduICh2b2lkICoqbWVtcHRyLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwpleHRlcm4gdm9pZCAqX19saWJjX21lbWFs
aWduIChzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19tYWxsb2NfXykpOwoKZXh0ZXJuIGludCBfX2xpYmNfc3lzdGVtIChjb25zdCBjaGFyICpsaW5l
KTsKCmV4dGVybiBkb3VibGUgX19fX3N0cnRvZF9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwpleHRlcm4gZmxvYXQgX19fX3N0
cnRvZl9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxl
X3QgX19sb2MpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fX19zdHJ0b2xkX2xfaW50ZXJuYWwgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwLCBfX2xvY2FsZV90IF9f
bG9jKQogICAgIDsKZXh0ZXJuIGxvbmcgaW50IF9fX19zdHJ0b2xfbF9pbnRlcm5hbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CmV4dGVybiB1bnNp
Z25lZCBsb25nIGludCBfX19fc3RydG91bF9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwpf
X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fX19zdHJ0b2xsX2xfaW50ZXJuYWwg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19n
cm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2Nh
bGVfdCBfX2xvYykgOwpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50
IF9fX19zdHJ0b3VsbF9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90
IF9fbG9jKQogICAgIDsKCmV4dGVybiBfX3R5cGVvZiAoX19fX3N0cnRvZl9sX2ludGVybmFsKSBf
X0dJX19fX19zdHJ0b2ZfbF9pbnRlcm5hbDsgZXh0ZXJuIF9fdHlwZW9mIChfX19fc3RydG9mX2xf
aW50ZXJuYWwpIF9fX19zdHJ0b2ZfbF9pbnRlcm5hbCBfX2FzbV9fICgiIiAiX19HSV9fX19fc3Ry
dG9mX2xfaW50ZXJuYWwiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7
CmV4dGVybiBfX3R5cGVvZiAoX19fX3N0cnRvZF9sX2ludGVybmFsKSBfX0dJX19fX19zdHJ0b2Rf
bF9pbnRlcm5hbDsgZXh0ZXJuIF9fdHlwZW9mIChfX19fc3RydG9kX2xfaW50ZXJuYWwpIF9fX19z
dHJ0b2RfbF9pbnRlcm5hbCBfX2FzbV9fICgiIiAiX19HSV9fX19fc3RydG9kX2xfaW50ZXJuYWwi
KSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVv
ZiAoX19fX3N0cnRvbGRfbF9pbnRlcm5hbCkgX19HSV9fX19fc3RydG9sZF9sX2ludGVybmFsOyBl
eHRlcm4gX190eXBlb2YgKF9fX19zdHJ0b2xkX2xfaW50ZXJuYWwpIF9fX19zdHJ0b2xkX2xfaW50
ZXJuYWwgX19hc21fXyAoIiIgIl9fR0lfX19fX3N0cnRvbGRfbF9pbnRlcm5hbCIpIF9fYXR0cmli
dXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX19fc3Ry
dG9sX2xfaW50ZXJuYWwpIF9fR0lfX19fX3N0cnRvbF9sX2ludGVybmFsOyBleHRlcm4gX190eXBl
b2YgKF9fX19zdHJ0b2xfbF9pbnRlcm5hbCkgX19fX3N0cnRvbF9sX2ludGVybmFsIF9fYXNtX18g
KCIiICJfX0dJX19fX19zdHJ0b2xfbF9pbnRlcm5hbCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmls
aXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX19fc3RydG9sbF9sX2ludGVybmFs
KSBfX0dJX19fX19zdHJ0b2xsX2xfaW50ZXJuYWw7IGV4dGVybiBfX3R5cGVvZiAoX19fX3N0cnRv
bGxfbF9pbnRlcm5hbCkgX19fX3N0cnRvbGxfbF9pbnRlcm5hbCBfX2FzbV9fICgiIiAiX19HSV9f
X19fc3RydG9sbF9sX2ludGVybmFsIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRk
ZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKF9fX19zdHJ0b3VsX2xfaW50ZXJuYWwpIF9fR0lfX19f
X3N0cnRvdWxfbF9pbnRlcm5hbDsgZXh0ZXJuIF9fdHlwZW9mIChfX19fc3RydG91bF9sX2ludGVy
bmFsKSBfX19fc3RydG91bF9sX2ludGVybmFsIF9fYXNtX18gKCIiICJfX0dJX19fX19zdHJ0b3Vs
X2xfaW50ZXJuYWwiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4
dGVybiBfX3R5cGVvZiAoX19fX3N0cnRvdWxsX2xfaW50ZXJuYWwpIF9fR0lfX19fX3N0cnRvdWxs
X2xfaW50ZXJuYWw7IGV4dGVybiBfX3R5cGVvZiAoX19fX3N0cnRvdWxsX2xfaW50ZXJuYWwpIF9f
X19zdHJ0b3VsbF9sX2ludGVybmFsIF9fYXNtX18gKCIiICJfX0dJX19fX19zdHJ0b3VsbF9sX2lu
dGVybmFsIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKZXh0ZXJu
IF9faW5saW5lIGRvdWJsZQpfX3N0cnRvZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgX19sb2NhbGVfdCBf
X2xvYykKewogIHJldHVybiBfX19fc3RydG9kX2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDAsIF9fbG9jKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKX19zdHJ0b2xfbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg
ICAgICAgICAgIGludCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpCnsKICByZXR1cm4gX19fX3N0
cnRvbF9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDAsIF9fbG9jKTsKfQpl
eHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKX19zdHJ0b3VsX2wgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg
ICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKewogIHJldHVybiBfX19fc3RydG91
bF9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDAsIF9fbG9jKTsKfQpleHRl
cm4gX19pbmxpbmUgZmxvYXQKX19zdHJ0b2ZfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgIF9fbG9jYWxlX3Qg
X19sb2MpCnsKICByZXR1cm4gX19fX3N0cnRvZl9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRy
LCAwLCBfX2xvYyk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlCl9fc3RydG9sZF9sIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwKICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpCnsKICByZXR1cm4gX19fX3N0cnRvbGRf
bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCwgX19sb2MpOwp9Cl9fZXh0ZW5zaW9uX18g
ZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAg
ICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKewogIHJldHVybiBfX19fc3RydG9sbF9s
X2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDAsIF9fbG9jKTsKfQpfX2V4dGVu
c2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50Cl9fc3RydG91bGxf
bCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgICAgIGludCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpCnsKICBy
ZXR1cm4gX19fX3N0cnRvdWxsX2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwg
MCwgX19sb2MpOwp9CiMgMTk5ICIuLi9pbmNsdWRlL3N0ZGxpYi5oIgpleHRlcm4gdm9pZCAqIF9f
ZGVmYXVsdF9tb3JlY29yZSAocHRyZGlmZl90KTsKZXh0ZXJuIF9fdHlwZW9mIChfX2RlZmF1bHRf
bW9yZWNvcmUpIF9fR0lfX19kZWZhdWx0X21vcmVjb3JlOyBleHRlcm4gX190eXBlb2YgKF9fZGVm
YXVsdF9tb3JlY29yZSkgX19kZWZhdWx0X21vcmVjb3JlIF9fYXNtX18gKCIiICJfX0dJX19fZGVm
YXVsdF9tb3JlY29yZSIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsK
IyAyNiAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMveDg2XzY0L3B0LW1hY2hpbmUuaCIgMgojIDEg
Ii91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2tlcm5lbC1oZWFkZXJzL2FzbS9wcmN0bC5oIiAxIDMg
NAoKCgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2tlcm5lbC1oZWFkZXJzL2FzbS14ODZf
NjQvcHJjdGwuaCIgMSAzIDQKIyA1ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9rZXJuZWwtaGVh
ZGVycy9hc20vcHJjdGwuaCIgMiAzIDQKIyAyNyAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMveDg2
XzY0L3B0LW1hY2hpbmUuaCIgMgoKCgoKCgpleHRlcm4gbG9uZyBpbnQgdGVzdGFuZHNldCAoaW50
ICpzcGlubG9jayk7CmV4dGVybiBpbnQgX19jb21wYXJlX2FuZF9zd2FwIChsb25nIGludCAqcCwg
bG9uZyBpbnQgb2xkdmFsLCBsb25nIGludCBuZXd2YWwpOwoKCgoKcmVnaXN0ZXIgY2hhciAqIHN0
YWNrX3BvaW50ZXIgX19hc21fXyAoIiVyc3AiKTsKCgoKZXh0ZXJuIGlubGluZSBsb25nIGludAp0
ZXN0YW5kc2V0IChpbnQgKnNwaW5sb2NrKQp7CiAgbG9uZyBpbnQgcmV0OwoKICBfX2FzbV9fIF9f
dm9sYXRpbGVfXyAoCiAgICAgICAgInhjaGdsICVrMCwgJTEiCiAgICAgICAgOiAiPXIiKHJldCks
ICI9bSIoKnNwaW5sb2NrKQogICAgICAgIDogIjAiKDEpLCAibSIoKnNwaW5sb2NrKQogICAgICAg
IDogIm1lbW9yeSIpOwoKICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0ZXJuIGlubGluZSBpbnQKX19j
b21wYXJlX2FuZF9zd2FwIChsb25nIGludCAqcCwgbG9uZyBpbnQgb2xkdmFsLCBsb25nIGludCBu
ZXd2YWwpCnsKICBjaGFyIHJldDsKICBsb25nIGludCByZWFkdmFsOwoKICBfX2FzbV9fIF9fdm9s
YXRpbGVfXyAoImxvY2s7IGNtcHhjaGdxICUzLCAlMTsgc2V0ZSAlMCIKICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiPXEiIChyZXQpLCAiPW0iICgqcCksICI9YSIgKHJlYWR2YWwpCiAgICAgICAg
ICAgICAgICAgICAgICAgIDogInIiIChuZXd2YWwpLCAibSIgKCpwKSwgImEiIChvbGR2YWwpCiAg
ICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogIHJldHVybiByZXQ7Cn0KIyA5MCAi
Li4vbGludXh0aHJlYWRzL3N5c2RlcHMveDg2XzY0L3B0LW1hY2hpbmUuaCIKZXh0ZXJuIGludCBf
X2FyY2hfcHJjdGwgKGludCBfX2NvZGUsIHVuc2lnbmVkIGxvbmcgX19hZGRyKTsKIyAyNiAiLi4v
bGludXh0aHJlYWRzL3N5c2RlcHMveDg2XzY0L3Rscy5oIiAyCiMgMSAiL3Vzci9saWI2NC9nY2Mt
bGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI3ICIu
Li9saW51eHRocmVhZHMvc3lzZGVwcy94ODZfNjQvdGxzLmgiIDIKCgp0eXBlZGVmIHVuaW9uIGR0
dgp7CiAgc2l6ZV90IGNvdW50ZXI7CiAgdm9pZCAqcG9pbnRlcjsKfSBkdHZfdDsKCgp0eXBlZGVm
IHN0cnVjdAp7CiAgdm9pZCAqdGNiOwoKICBkdHZfdCAqZHR2OwogIHZvaWQgKnNlbGY7Cn0gdGNi
aGVhZF90OwojIDQgIi4uL2luY2x1ZGUvdGxzLmgiIDIKIyAzNCAiLi4vbGludXh0aHJlYWRzL3N5
c2RlcHMvcHRocmVhZC9iaXRzL2xpYmMtdHNkLmgiIDIKIyA0MiAiLi4vbGludXh0aHJlYWRzL3N5
c2RlcHMvcHRocmVhZC9iaXRzL2xpYmMtdHNkLmgiCmV4dGVybiB2b2lkICooKl9fbGliY19pbnRl
cm5hbF90c2RfZ2V0KSAoZW51bSBfX2xpYmNfdHNkX2tleV90KSA7CmV4dGVybiBpbnQgKCpfX2xp
YmNfaW50ZXJuYWxfdHNkX3NldCkgKGVudW0gX19saWJjX3RzZF9rZXlfdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICopIDsKZXh0ZXJuIHZvaWQg
KiooKmNvbnN0IF9fbGliY19pbnRlcm5hbF90c2RfYWRkcmVzcykgKGVudW0gX19saWJjX3RzZF9r
ZXlfdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMTkxICIuLi9sb2NhbGUv
bG9jYWxlaW5mby5oIiAyCmV4dGVybiB2b2lkICpfX2xpYmNfdHNkX0xPQ0FMRV9kYXRhOwojIDI4
MSAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCIKZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRf
bG9jYWxlX3BhdGhbXSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoK
CgoKCgpleHRlcm4gc3RydWN0IGxvY2FsZV9kYXRhICpfbmxfZmluZF9sb2NhbGUgKGNvbnN0IGNo
YXIgKmxvY2FsZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsb2NhbGVfcGF0aF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICoqbmFtZSkKICAgICBfX2F0
dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKZXh0ZXJuIHZvaWQgX25sX2xv
YWRfbG9jYWxlIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpmaWxlLCBpbnQgY2F0ZWdvcnkpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKCmV4dGVybiB2b2lk
IF9ubF91bmxvYWRfbG9jYWxlIChzdHJ1Y3QgbG9jYWxlX2RhdGEgKmxvY2FsZSkKICAgICBfX2F0
dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKZXh0ZXJuIHZvaWQgX25sX3Jl
bW92ZV9sb2NhbGUgKGludCBsb2NhbGUsIHN0cnVjdCBsb2NhbGVfZGF0YSAqZGF0YSkKICAgICBf
X2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKCgoKCmV4dGVybiBzdHJ1
Y3QgbG9jYWxlX2RhdGEgKl9ubF9sb2FkX2xvY2FsZV9mcm9tX2FyY2hpdmUgKGludCBjYXRlZ29y
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqKm5hbWVwKQogICAgIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgi
aGlkZGVuIikpKTsKCgpleHRlcm4gdm9pZCBfbmxfYXJjaGl2ZV9zdWJmcmVlcmVzICh2b2lkKSBf
X2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKCgoKCmV4dGVybiBzdHJ1
Y3QgbG9jYWxlX2RhdGEgKl9ubF9pbnRlcm5fbG9jYWxlX2RhdGEgKGludCBjYXRlZ29yeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRhdGFzaXplKQogICAgIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlk
ZGVuIikpKTsKCgoKZXh0ZXJuIHN0cnVjdCBlcmFfZW50cnkgKl9ubF9nZXRfZXJhX2VudHJ5IChj
b25zdCBzdHJ1Y3QgdG0gKnRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBsb2NhbGVfZGF0YSAqbGNfdGltZSkKICAgICBfX2F0dHJpYnV0ZV9fICgo
dmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKZXh0ZXJuIHN0cnVjdCBlcmFfZW50cnkgKl9ubF9z
ZWxlY3RfZXJhX2VudHJ5IChpbnQgY250LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBsb2NhbGVfZGF0YSAqbGNfdGltZSkKICAgICAgICAgIF9f
YXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKCgpleHRlcm4gY29uc3QgY2hh
ciAqX25sX2dldF9hbHRfZGlnaXQgKHVuc2lnbmVkIGludCBudW1iZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxvY2FsZV9kYXRhICpsY190aW1lKQogICAg
ICAgICAgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKCmV4dGVybiBj
b25zdCB3Y2hhcl90ICpfbmxfZ2V0X3dhbHRfZGlnaXQgKHVuc2lnbmVkIGludCBudW1iZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsb2NhbGVfZGF0
YSAqbGNfdGltZSkKICAgICBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7
CgoKZXh0ZXJuIGludCBfbmxfcGFyc2VfYWx0X2RpZ2l0IChjb25zdCBjaGFyICoqc3RycCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKmxjX3RpbWUp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKCmV4dGVybiB2
b2lkIF9ubF9wb3N0bG9hZF9jdHlwZSAodm9pZCk7CgoKZXh0ZXJuIHZvaWQgX25sX2NsZWFudXBf
dGltZSAoc3RydWN0IGxvY2FsZV9kYXRhICopCiAgICAgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxp
dHkgKCJoaWRkZW4iKSkpOwojIDE1ICIuLi9pbmNsdWRlL2N0eXBlLmgiIDIKCgoKCgoKZXh0ZXJu
IHZvaWQgKl9fbGliY190c2RfQ1RZUEVfQl9kYXRhOwpleHRlcm4gdm9pZCAqX19saWJjX3RzZF9D
VFlQRV9UT1VQUEVSX2RhdGE7CmV4dGVybiB2b2lkICpfX2xpYmNfdHNkX0NUWVBFX1RPTE9XRVJf
ZGF0YTsKCmV4dGVybiBpbmxpbmUgY29uc3QgdWludDE2X3QgKiogX19hdHRyaWJ1dGVfXyAoKGNv
bnN0KSkKX19jdHlwZV9iX2xvYyAodm9pZCkKewogIGNvbnN0IHVpbnQxNl90ICoqdGFibGVwID0K
ICAgIChjb25zdCB1aW50MTZfdCAqKikgKF9fbGliY19pbnRlcm5hbF90c2RfYWRkcmVzcyAhPSAo
KHZvaWQgKikwKSA/IF9fbGliY19pbnRlcm5hbF90c2RfYWRkcmVzcyAoX0xJQkNfVFNEX0tFWV9D
VFlQRV9CKSA6ICZfX2xpYmNfdHNkX0NUWVBFX0JfZGF0YSk7CiAgaWYgKF9fYnVpbHRpbl9leHBl
Y3QgKCp0YWJsZXAgPT0gKCh2b2lkICopMCksIDApKQogICAgKnRhYmxlcCA9IChjb25zdCB1aW50
MTZfdCAqKSAoKCgoX19sb2NhbGVfdCkgKF9fbGliY19pbnRlcm5hbF90c2RfZ2V0ICE9ICgodm9p
ZCAqKTApID8gX19saWJjX2ludGVybmFsX3RzZF9nZXQgKF9MSUJDX1RTRF9LRVlfTE9DQUxFKSA6
IF9fbGliY190c2RfTE9DQUxFX2RhdGEpKS0+X19sb2NhbGVzW19fTENfQ1RZUEVdKS0+dmFsdWVz
WygoaW50KSAoX05MX0NUWVBFX0NMQVNTKSAmIDB4ZmZmZildLnN0cmluZykgKyAxMjg7CiAgcmV0
dXJuIHRhYmxlcDsKfQoKZXh0ZXJuIGlubGluZSBjb25zdCBpbnQzMl90ICoqIF9fYXR0cmlidXRl
X18gKChjb25zdCkpCl9fY3R5cGVfdG91cHBlcl9sb2MgKHZvaWQpCnsKICBjb25zdCBpbnQzMl90
ICoqdGFibGVwID0KICAgIChjb25zdCBpbnQzMl90ICoqKSAoX19saWJjX2ludGVybmFsX3RzZF9h
ZGRyZXNzICE9ICgodm9pZCAqKTApID8gX19saWJjX2ludGVybmFsX3RzZF9hZGRyZXNzIChfTElC
Q19UU0RfS0VZX0NUWVBFX1RPVVBQRVIpIDogJl9fbGliY190c2RfQ1RZUEVfVE9VUFBFUl9kYXRh
KTsKICBpZiAoX19idWlsdGluX2V4cGVjdCAoKnRhYmxlcCA9PSAoKHZvaWQgKikwKSwgMCkpCiAg
ICAqdGFibGVwID0gKChpbnQzMl90ICopICgoKChfX2xvY2FsZV90KSAoX19saWJjX2ludGVybmFs
X3RzZF9nZXQgIT0gKCh2b2lkICopMCkgPyBfX2xpYmNfaW50ZXJuYWxfdHNkX2dldCAoX0xJQkNf
VFNEX0tFWV9MT0NBTEUpIDogX19saWJjX3RzZF9MT0NBTEVfZGF0YSkpLT5fX2xvY2FsZXNbX19M
Q19DVFlQRV0pLT52YWx1ZXNbKChpbnQpIChfTkxfQ1RZUEVfVE9VUFBFUikgJiAweGZmZmYpXS5z
dHJpbmcpICsgMTI4KTsKICByZXR1cm4gdGFibGVwOwp9CgpleHRlcm4gaW5saW5lIGNvbnN0IGlu
dDMyX3QgKiogX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSkKX19jdHlwZV90b2xvd2VyX2xvYyAodm9p
ZCkKewogIGNvbnN0IGludDMyX3QgKip0YWJsZXAgPQogICAgKGNvbnN0IGludDMyX3QgKiopIChf
X2xpYmNfaW50ZXJuYWxfdHNkX2FkZHJlc3MgIT0gKCh2b2lkICopMCkgPyBfX2xpYmNfaW50ZXJu
YWxfdHNkX2FkZHJlc3MgKF9MSUJDX1RTRF9LRVlfQ1RZUEVfVE9MT1dFUikgOiAmX19saWJjX3Rz
ZF9DVFlQRV9UT0xPV0VSX2RhdGEpOwogIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgqdGFibGVwID09
ICgodm9pZCAqKTApLCAwKSkKICAgICp0YWJsZXAgPSAoKGludDMyX3QgKikgKCgoKF9fbG9jYWxl
X3QpIChfX2xpYmNfaW50ZXJuYWxfdHNkX2dldCAhPSAoKHZvaWQgKikwKSA/IF9fbGliY19pbnRl
cm5hbF90c2RfZ2V0IChfTElCQ19UU0RfS0VZX0xPQ0FMRSkgOiBfX2xpYmNfdHNkX0xPQ0FMRV9k
YXRhKSktPl9fbG9jYWxlc1tfX0xDX0NUWVBFXSktPnZhbHVlc1soKGludCkgKF9OTF9DVFlQRV9U
T0xPV0VSKSAmIDB4ZmZmZildLnN0cmluZykgKyAxMjgpOwogIHJldHVybiB0YWJsZXA7Cn0KCgoK
IyAxICIuLi9jdHlwZS9jdHlwZS5oIiAxCiMgMzAgIi4uL2N0eXBlL2N0eXBlLmgiCgojIDQxICIu
Li9jdHlwZS9jdHlwZS5oIgojIDEgIi4uL2luY2x1ZGUvZW5kaWFuLmgiIDEKIyA0MiAiLi4vY3R5
cGUvY3R5cGUuaCIgMgoKCgoKCgplbnVtCnsKICBfSVN1cHBlciA9ICgoMCkgPCA4ID8gKCgxIDw8
ICgwKSkgPDwgOCkgOiAoKDEgPDwgKDApKSA+PiA4KSksCiAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/
ICgoMSA8PCAoMSkpIDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAogIF9JU2FscGhhID0gKCgy
KSA8IDggPyAoKDEgPDwgKDIpKSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgpKSwKICBfSVNkaWdp
dCA9ICgoMykgPCA4ID8gKCgxIDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCiAg
X0lTeGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkpID4+
IDgpKSwKICBfSVNzcGFjZSA9ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwg
KDUpKSA+PiA4KSksCiAgX0lTcHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAoNikpIDw8IDgpIDog
KCgxIDw8ICg2KSkgPj4gOCkpLAogIF9JU2dyYXBoID0gKCg3KSA8IDggPyAoKDEgPDwgKDcpKSA8
PCA4KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKICBfSVNibGFuayA9ICgoOCkgPCA4ID8gKCgxIDw8
ICg4KSkgPDwgOCkgOiAoKDEgPDwgKDgpKSA+PiA4KSksCiAgX0lTY250cmwgPSAoKDkpIDwgOCA/
ICgoMSA8PCAoOSkpIDw8IDgpIDogKCgxIDw8ICg5KSkgPj4gOCkpLAogIF9JU3B1bmN0ID0gKCgx
MCkgPCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgpIDogKCgxIDw8ICgxMCkpID4+IDgpKSwKICBfSVNh
bG51bSA9ICgoMTEpIDwgOCA/ICgoMSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4
KSkKfTsKIyA4MSAiLi4vY3R5cGUvY3R5cGUuaCIKZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQgc2hv
cnQgaW50ICoqX19jdHlwZV9iX2xvYyAodm9pZCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dCkpOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKipfX2N0eXBlX3RvbG93ZXJfbG9jICh2b2lk
KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0KSk7CmV4dGVybiBfX2NvbnN0IF9faW50MzJf
dCAqKl9fY3R5cGVfdG91cHBlcl9sb2MgKHZvaWQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3QpKTsKIyA5NiAiLi4vY3R5cGUvY3R5cGUuaCIKCgoKCgoKZXh0ZXJuIGludCBpc2FsbnVtIChp
bnQpIDsKZXh0ZXJuIGludCBpc2FscGhhIChpbnQpIDsKZXh0ZXJuIGludCBpc2NudHJsIChpbnQp
IDsKZXh0ZXJuIGludCBpc2RpZ2l0IChpbnQpIDsKZXh0ZXJuIGludCBpc2xvd2VyIChpbnQpIDsK
ZXh0ZXJuIGludCBpc2dyYXBoIChpbnQpIDsKZXh0ZXJuIGludCBpc3ByaW50IChpbnQpIDsKZXh0
ZXJuIGludCBpc3B1bmN0IChpbnQpIDsKZXh0ZXJuIGludCBpc3NwYWNlIChpbnQpIDsKZXh0ZXJu
IGludCBpc3VwcGVyIChpbnQpIDsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSA7CgoKCmV4dGVy
biBpbnQgdG9sb3dlciAoaW50IF9fYykgOwoKCmV4dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykg
OwoKCgoKCgoKCmV4dGVybiBpbnQgaXNibGFuayAoaW50KSA7CgoKCgoKCmV4dGVybiBpbnQgaXNj
dHlwZSAoaW50IF9fYywgaW50IF9fbWFzaykgOwoKCgoKCgpleHRlcm4gaW50IGlzYXNjaWkgKGlu
dCBfX2MpIDsKCgoKZXh0ZXJuIGludCB0b2FzY2lpIChpbnQgX19jKSA7CgoKCmV4dGVybiBpbnQg
X3RvdXBwZXIgKGludCkgOwpleHRlcm4gaW50IF90b2xvd2VyIChpbnQpIDsKIyAxOTAgIi4uL2N0
eXBlL2N0eXBlLmgiCmV4dGVybiBfX2lubGluZSBpbnQKdG9sb3dlciAoaW50IF9fYykKewogIHJl
dHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyAoKl9fY3R5cGVfdG9sb3dlcl9sb2MgKCkp
W19fY10gOiBfX2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBlciAoaW50IF9fYykKewog
IHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyAoKl9fY3R5cGVfdG91cHBlcl9sb2Mg
KCkpW19fY10gOiBfX2M7Cn0KIyAyMzMgIi4uL2N0eXBlL2N0eXBlLmgiCiMgMSAiLi4vaW5jbHVk
ZS94bG9jYWxlLmgiIDEKIyAyMzQgIi4uL2N0eXBlL2N0eXBlLmgiIDIKIyAyNDcgIi4uL2N0eXBl
L2N0eXBlLmgiCmV4dGVybiBpbnQgaXNhbG51bV9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJu
IGludCBpc2FscGhhX2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IGlzY250cmxfbCAo
aW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgaXNkaWdpdF9sIChpbnQsIF9fbG9jYWxlX3Qp
IDsKZXh0ZXJuIGludCBpc2xvd2VyX2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IGlz
Z3JhcGhfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgaXNwcmludF9sIChpbnQsIF9f
bG9jYWxlX3QpIDsKZXh0ZXJuIGludCBpc3B1bmN0X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRl
cm4gaW50IGlzc3BhY2VfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgaXN1cHBlcl9s
IChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBpc3hkaWdpdF9sIChpbnQsIF9fbG9jYWxl
X3QpIDsKCmV4dGVybiBpbnQgaXNibGFua19sIChpbnQsIF9fbG9jYWxlX3QpIDsKCgoKZXh0ZXJu
IGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIDsKZXh0ZXJuIGludCB0
b2xvd2VyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSA7CgoKZXh0ZXJuIGludCBfX3RvdXBw
ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIDsKZXh0ZXJuIGludCB0b3VwcGVyX2wgKGlu
dCBfX2MsIF9fbG9jYWxlX3QgX19sKSA7CiMgMzIzICIuLi9jdHlwZS9jdHlwZS5oIgoKIyA1OCAi
Li4vaW5jbHVkZS9jdHlwZS5oIiAyCiMgMjAgInZmcHJpbnRmLmMiIDIKIyAxICIuLi9pbmNsdWRl
L2xpbWl0cy5oIiAxCiMgMTQ0ICIuLi9pbmNsdWRlL2xpbWl0cy5oIgojIDEgIi4uL2luY2x1ZGUv
Yml0cy9wb3NpeDFfbGltLmgiIDEKIyAxNDUgIi4uL2luY2x1ZGUvbGltaXRzLmgiIDIKCgoKIyAx
ICIuLi9pbmNsdWRlL2JpdHMvcG9zaXgyX2xpbS5oIiAxCiMgMTQ5ICIuLi9pbmNsdWRlL2xpbWl0
cy5oIiAyCiMgMjEgInZmcHJpbnRmLmMiIDIKIyAxICIuLi9pbmNsdWRlL3ByaW50Zi5oIiAxCgoK
IyAxICIuLi9zdGRpby1jb21tb24vcHJpbnRmLmgiIDEKIyAyNCAiLi4vc3RkaW8tY29tbW9uL3By
aW50Zi5oIgoKCgojIDEgIi4uL2luY2x1ZGUvc3RkaW8uaCIgMQoKCiMgMSAiLi4vbGliaW8vc3Rk
aW8uaCIgMQojIDQ0ICIuLi9saWJpby9zdGRpby5oIgoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxF
IEZJTEU7CgoKCgoKIyA0ICIuLi9pbmNsdWRlL3N0ZGlvLmgiIDIKIyAyOCAiLi4vc3RkaW8tY29t
bW9uL3ByaW50Zi5oIiAyCgoKIyAxICIvdXNyL2xpYjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGlu
dXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzEgIi4uL3N0ZGlvLWNvbW1vbi9wcmlu
dGYuaCIgMgoKCnN0cnVjdCBwcmludGZfaW5mbwp7CiAgaW50IHByZWM7CiAgaW50IHdpZHRoOwog
IHdjaGFyX3Qgc3BlYzsKICB1bnNpZ25lZCBpbnQgaXNfbG9uZ19kb3VibGU6MTsKICB1bnNpZ25l
ZCBpbnQgaXNfc2hvcnQ6MTsKICB1bnNpZ25lZCBpbnQgaXNfbG9uZzoxOwogIHVuc2lnbmVkIGlu
dCBhbHQ6MTsKICB1bnNpZ25lZCBpbnQgc3BhY2U6MTsKICB1bnNpZ25lZCBpbnQgbGVmdDoxOwog
IHVuc2lnbmVkIGludCBzaG93c2lnbjoxOwogIHVuc2lnbmVkIGludCBncm91cDoxOwogIHVuc2ln
bmVkIGludCBleHRyYToxOwogIHVuc2lnbmVkIGludCBpc19jaGFyOjE7CiAgdW5zaWduZWQgaW50
IHdpZGU6MTsKICB1bnNpZ25lZCBpbnQgaTE4bjoxOwogIHdjaGFyX3QgcGFkOwp9OwojIDY0ICIu
Li9zdGRpby1jb21tb24vcHJpbnRmLmgiCnR5cGVkZWYgaW50IHByaW50Zl9mdW5jdGlvbiAoRklM
RSAqX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3Qg
cHJpbnRmX2luZm8gKl9faW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHZvaWQgKl9fY29uc3QgKl9fYXJncyk7CgoKCgoKdHlwZWRlZiBpbnQgcHJpbnRmX2FyZ2luZm9f
ZnVuY3Rpb24gKF9fY29uc3Qgc3RydWN0IHByaW50Zl9pbmZvICpfX2luZm8sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBpbnQgKl9fYXJndHlwZXMpOwoK
CgoKCgpleHRlcm4gaW50IHJlZ2lzdGVyX3ByaW50Zl9mdW5jdGlvbiAoaW50IF9fc3BlYywgcHJp
bnRmX2Z1bmN0aW9uIF9fZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByaW50Zl9hcmdpbmZvX2Z1bmN0aW9uIF9fYXJnaW5mbyk7CiMgOTUgIi4uL3N0ZGlvLWNvbW1v
bi9wcmludGYuaCIKZXh0ZXJuIHNpemVfdCBwYXJzZV9wcmludGZfZm9ybWF0IChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mbXQsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fYXJndHlwZXMpIDsKCgoKCgoKCmVudW0Kewog
IFBBX0lOVCwKICBQQV9DSEFSLAogIFBBX1dDSEFSLAogIFBBX1NUUklORywKICBQQV9XU1RSSU5H
LAogIFBBX1BPSU5URVIsCiAgUEFfRkxPQVQsCiAgUEFfRE9VQkxFLAogIFBBX0xBU1QKfTsKIyAx
MzMgIi4uL3N0ZGlvLWNvbW1vbi9wcmludGYuaCIKZXh0ZXJuIGludCBwcmludGZfc2l6ZSAoRklM
RSAqX19yZXN0cmljdCBfX2ZwLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVj
dCBwcmludGZfaW5mbyAqX19pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZv
aWQgKl9fY29uc3QgKl9fcmVzdHJpY3QgX19hcmdzKSA7CgoKZXh0ZXJuIGludCBwcmludGZfc2l6
ZV9pbmZvIChfX2NvbnN0IHN0cnVjdCBwcmludGZfaW5mbyAqX19yZXN0cmljdAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9faW5mbywgc2l6ZV90IF9fbiwgaW50ICpfX3Jlc3RyaWN0IF9f
YXJndHlwZXMpCiAgICAgOwoKCgojIDQgIi4uL2luY2x1ZGUvcHJpbnRmLmgiIDIKCgpleHRlcm4g
aW50IF9fcHJpbnRmX2ZwaGV4IChGSUxFICosIGNvbnN0IHN0cnVjdCBwcmludGZfaW5mbyAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb25zdCAqKTsKZXh0ZXJuIGlu
dCBfX3ByaW50Zl9mcCAoRklMRSAqLCBjb25zdCBzdHJ1Y3QgcHJpbnRmX2luZm8gKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29uc3QgKik7CmV4dGVybiBfX3R5cGVvZiAo
X19wcmludGZfZnApIF9fR0lfX19wcmludGZfZnA7IGV4dGVybiBfX3R5cGVvZiAoX19wcmludGZf
ZnApIF9fcHJpbnRmX2ZwIF9fYXNtX18gKCIiICJfX0dJX19fcHJpbnRmX2ZwIikgX19hdHRyaWJ1
dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwojIDIyICJ2ZnByaW50Zi5jIiAyCiMgMSAi
L3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N0ZGFyZy5o
IiAxIDMgNAojIDQzICIvdXNyL2xpYjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2lu
Y2x1ZGUvc3RkYXJnLmgiIDMgNAp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9s
aXN0OwojIDEwNSAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNs
dWRlL3N0ZGFyZy5oIiAzIDQKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDIzICJ2
ZnByaW50Zi5jIiAyCgoKIyAxICIuLi9pbmNsdWRlL3N0cmluZy5oIiAxCgoKIyAxICIuLi9pbmNs
dWRlL3N5cy90eXBlcy5oIiAxCiMgNCAiLi4vaW5jbHVkZS9zdHJpbmcuaCIgMgoKZXh0ZXJuIHZv
aWQgKl9fbWVtY2NweSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pOwoKZXh0ZXJuIHNpemVfdCBf
X3N0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpfX3N0cnNlcCAoY2hhciAq
Kl9fc3RyaW5ncCwgX19jb25zdCBjaGFyICpfX2RlbGltKTsKCmV4dGVybiBpbnQgX19zdHJ2ZXJz
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2FzZWNtcCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQg
X19zdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpfX3N0cmNhc2VzdHIg
KF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25z
dCBjaGFyICpfX3N0cmluZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwpleHRl
cm4gY2hhciAqX19zdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqX19yYXdtZW1j
aHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKZXh0ZXJuIGNoYXIgKl9fc3RyY2hybnVsIChfX2NvbnN0IGNoYXIgKl9fcywgaW50
IF9fYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiB2b2lkICpfX21l
bXJjaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHZvaWQgKl9fbWVtY2hyIChfX2NvbnN0IHZv
aWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCmV4dGVybiBpbnQgX19mZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChjb25zdCkp
OwoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwg
c2l6ZV90IF9fYnVmbGVuKTsKCgoKIyAxICIuLi9zdHJpbmcvc3RyaW5nLmgiIDEKIyAyOCAiLi4v
c3RyaW5nL3N0cmluZy5oIgoKCgoKCiMgMSAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1zdXNl
LWxpbnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM0ICIuLi9zdHJpbmcvc3RyaW5n
LmgiIDIKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAog
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVf
dCBfX24pIDsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZv
aWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkg
KHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMs
CiAgICAgICAgICAgICAgICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgpl
eHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIDsKCgpl
eHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIs
IHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZv
aWQgKm1lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAg
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiB2b2lkICpyYXdtZW1jaHIg
KF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgpleHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVf
dCBfX24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFy
ICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zcmMpCiAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3Qg
X19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
c3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmlj
dCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgpleHRlcm4g
Y2hhciAqc3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIDsKCgpleHRl
cm4gaW50IHN0cmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90
IF9fbikgOwoKCgoKCgojIDEgIi4uL2luY2x1ZGUveGxvY2FsZS5oIiAxCiMgMTE1ICIuLi9zdHJp
bmcvc3RyaW5nLmgiIDIKCgpleHRlcm4gaW50IHN0cmNvbGxfbCAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxlX3QgX19sKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtX2wgKGNoYXIgKl9fZGVzdCwgX19j
b25zdCBjaGFyICpfX3NyYywgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sKSA7CgoKCgpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9f
cykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0cm5k
dXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKIyAxNjAgIi4uL3N0cmluZy9zdHJpbmcuaCIKCgpleHRlcm4gY2hh
ciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBf
X2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJu
dWwgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0
IGNoYXIgKl9fcmVqZWN0KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVy
biBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2Vw
dCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJwYnJr
IChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAq
X19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3Ms
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgIDsKCgoKCmV4dGVybiBjaGFy
ICpfX3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIgKnN0cnRv
a19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVs
aW0sCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikg
OwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNhc2VzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywg
X19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXpl
X3QgX19oYXlzdGFja2xlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25l
ZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCgpleHRlcm4gdm9pZCAqX19tZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXpl
X3QgX19uKSA7CmV4dGVybiB2b2lkICptZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwK
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6
ZV90IF9fbikgOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIHNpemVfdCBzdHJubGVuIChf
X2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhsZW4pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0p
IDsKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVm
LCBzaXplX3QgX19idWZsZW4pIDsKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywg
c2l6ZV90IF9fbikgOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywg
dm9pZCAqX19kZXN0LCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9f
cywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBf
X2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRl
cm4gaW50IGZmcyAoaW50IF9faSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0
ZXJuIGludCBmZnNsIChsb25nIGludCBfX2wpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGludCBmZnNsbCAobG9uZyBsb25nIGludCBfX2xsKQogICAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAo
X19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgX19sb2Nh
bGVfdCBfX2xvYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5j
YXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAq
Kl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSkgOwoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2NvbnN0
IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIDsKCgpleHRlcm4g
Y2hhciAqX19zdHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMpCiAgICAgOwpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCgoKZXh0
ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg
OwpleHRlcm4gY2hhciAqc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
IDsKCgpleHRlcm4gY2hhciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykgOwoKCmV4dGVybiB2b2lk
ICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmJh
c2VuYW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKIyAzNzIgIi4uL3N0cmluZy9zdHJp
bmcuaCIKIyAxICIuLi9zeXNkZXBzL3g4Nl82NC9iaXRzL3N0cmluZy5oIiAxCiMgMzczICIuLi9z
dHJpbmcvc3RyaW5nLmgiIDIKCgojIDEgIi4uL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDEKIyAx
ICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgiIDEKIyA1MiAiLi4vc3RyaW5nL2JpdHMvc3RyaW5n
Mi5oIgojIDEgIi4uL2luY2x1ZGUvZW5kaWFuLmgiIDEKIyA1MyAiLi4vc3RyaW5nL2JpdHMvc3Ry
aW5nMi5oIiAyCiMgMzg5ICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgiCmV4dGVybiB2b2lkICpf
X3Jhd21lbWNociAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKTsKIyA5MTkgIi4uL3N0cmluZy9i
aXRzL3N0cmluZzIuaCIKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29u
c3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ry
Y3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdCkKewogIHJlZ2lzdGVyIHNp
emVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3Nb
X19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7
Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9f
cywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsIGludCBfX3JlamVjdDIpCnsKICByZWdpc3RlciBz
aXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19z
W19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl
amVjdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5s
aW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3Qx
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVqZWN0MiwgaW50
IF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MzIChfX2NvbnN0
IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0MiwKICAgICAgICAgICAgICBp
bnQgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAo
X19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QxCiAgICAg
ICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19y
ZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5NzYgIi4uL3N0
cmluZy9iaXRzL3N0cmluZzIuaCIKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMSAo
X19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QK
X19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQpCnsKICByZWdpc3Rl
ciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2Vw
dCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUg
c2l6ZV90IF9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBf
X2lubGluZSBzaXplX3QKX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2Nl
cHQxLCBpbnQgX19hY2NlcHQyKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAg
d2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19h
Y2NlcHQyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lu
bGluZSBzaXplX3QgX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQx
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyLCBpbnQg
X19hY2NlcHQzKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMyAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpCnsK
ICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9
PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIKICAgICAgICAgfHwgX19z
W19fcmVzdWx0XSA9PSBfX2FjY2VwdDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQojIDEwMzMgIi4uL3N0cmluZy9iaXRzL3N0cmluZzIuaCIKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2Nl
cHQxLCBpbnQgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBf
X2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9
PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4dGVybiBf
X2lubGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2Nl
cHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Miwg
aW50IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MzIChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwKICAgICAgICAgICAg
ICBpbnQgX19hY2NlcHQzKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2Fj
Y2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAhPSBfX2FjY2VwdDMp
CiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAq
KSAoc2l6ZV90KSBfX3M7Cn0KIyAxMDg1ICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgiCmV4dGVy
biBfX2lubGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNo
YXIgKipfX25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFy
ICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAg
aWYgKF9fcyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgqX19z
ID09IF9fc2VwKQogICAgKytfX3M7CiAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9f
cyAhPSAnXDAnKQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fcysrOwogICAgICB3aGlsZSAoKl9f
cyAhPSAnXDAnKQogICAgICAgIGlmICgqX19zKysgPT0gX19zZXApCiAgICAgICAgICB7CiAgICAg
ICAgICAgIF9fc1stMV0gPSAnXDAnOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAg
ICAgKl9fbmV4dHAgPSBfX3M7CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTExNyAiLi4v
c3RyaW5nL2JpdHMvc3RyaW5nMi5oIgpleHRlcm4gY2hhciAqX19zdHJzZXBfZyAoY2hhciAqKl9f
c3RyaW5ncCwgX19jb25zdCBjaGFyICpfX2RlbGltKTsKIyAxMTM1ICIuLi9zdHJpbmcvYml0cy9z
dHJpbmcyLmgiCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywg
Y2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIg
KipfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7
CiAgaWYgKF9fcmV0dmFsICE9ICgodm9pZCAqKTApICYmICgqX19zID0gKF9fZXh0ZW5zaW9uX18g
KF9fYnVpbHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkgJiYgKF9fcmVqZWN0KSA9PSAnXDAnID8g
KGNoYXIgKikgX19yYXdtZW1jaHIgKF9fcmV0dmFsLCBfX3JlamVjdCkgOiBzdHJjaHIgKF9fcmV0
dmFsLCBfX3JlamVjdCkpKSkgIT0gKCh2b2lkICopMCkpCiAgICAqKCpfX3MpKysgPSAnXDAnOwog
IHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzJjIChj
aGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxp
bmUgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBf
X3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0
dmFsICE9ICgodm9pZCAqKTApKQogICAgewogICAgICByZWdpc3RlciBjaGFyICpfX2NwID0gX19y
ZXR2YWw7CiAgICAgIHdoaWxlICgxKQogICAgICAgIHsKICAgICAgICAgIGlmICgqX19jcCA9PSAn
XDAnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgX19jcCA9ICgodm9pZCAqKTApOwogICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIGlmICgqX19jcCA9PSBfX3JlamVj
dDEgfHwgKl9fY3AgPT0gX19yZWplY3QyKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgKl9f
Y3ArKyA9ICdcMCc7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICsrX19jcDsKICAgICAgICB9CiAgICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJldHVybiBfX3Jl
dHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBj
aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciBfX3JlamVjdDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2Vw
XzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsIGNoYXIgX19y
ZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZh
bCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0
dmFsOwogICAgICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAgICAgICBpZiAoKl9fY3AgPT0gJ1ww
JykKICAgICAgICAgICAgewogICAgICAgICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsKICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICBpZiAoKl9fY3AgPT0gX19yZWplY3Qx
IHx8ICpfX2NwID09IF9fcmVqZWN0MiB8fCAqX19jcCA9PSBfX3JlamVjdDMpCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAqX19jcCsrID0gJ1wwJzsKICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgfQogICAgICAgICAgKytfX2NwOwogICAgICAgIH0KICAgICAgKl9fcyA9IF9fY3A7
CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CiMgMTIxNiAiLi4vc3RyaW5nL2JpdHMvc3RyaW5n
Mi5oIgpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIzNSAiLi4vc3RyaW5nL2JpdHMvc3RyaW5nMi5o
IgpleHRlcm4gY2hhciAqX19zdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3Qg
X19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMiAiLi4vaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMgojIDM3NiAiLi4vc3RyaW5nL3N0cmluZy5oIiAyCgoKCgojIDUwICIu
Li9pbmNsdWRlL3N0cmluZy5oIiAyCgpleHRlcm4gX190eXBlb2YgKHN0cmNvbGxfbCkgX19zdHJj
b2xsX2w7CmV4dGVybiBfX3R5cGVvZiAoc3RyeGZybV9sKSBfX3N0cnhmcm1fbDsKZXh0ZXJuIF9f
dHlwZW9mIChzdHJjYXNlY21wX2wpIF9fc3RyY2FzZWNtcF9sOwpleHRlcm4gX190eXBlb2YgKHN0
cm5jYXNlY21wX2wpIF9fc3RybmNhc2VjbXBfbDsKIyA2OCAiLi4vaW5jbHVkZS9zdHJpbmcuaCIK
ZXh0ZXJuIF9fdHlwZW9mIChfX21lbXBjcHkpIF9fR0lfX19tZW1wY3B5OyBleHRlcm4gX190eXBl
b2YgKF9fbWVtcGNweSkgX19tZW1wY3B5IF9fYXNtX18gKCIiICJfX0dJX19fbWVtcGNweSIpIF9f
YXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChf
X3N0cGNweSkgX19HSV9fX3N0cGNweTsgZXh0ZXJuIF9fdHlwZW9mIChfX3N0cGNweSkgX19zdHBj
cHkgX19hc21fXyAoIiIgIl9fR0lfX19zdHBjcHkiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0
eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX19zdHBuY3B5KSBfX0dJX19fc3RwbmNw
eTsgZXh0ZXJuIF9fdHlwZW9mIChfX3N0cG5jcHkpIF9fc3RwbmNweSBfX2FzbV9fICgiIiAiX19H
SV9fX3N0cG5jcHkiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4
dGVybiBfX3R5cGVvZiAoX19yYXdtZW1jaHIpIF9fR0lfX19yYXdtZW1jaHI7IGV4dGVybiBfX3R5
cGVvZiAoX19yYXdtZW1jaHIpIF9fcmF3bWVtY2hyIF9fYXNtX18gKCIiICJfX0dJX19fcmF3bWVt
Y2hyIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190
eXBlb2YgKF9fc3RyY2FzZWNtcCkgX19HSV9fX3N0cmNhc2VjbXA7IGV4dGVybiBfX3R5cGVvZiAo
X19zdHJjYXNlY21wKSBfX3N0cmNhc2VjbXAgX19hc21fXyAoIiIgIl9fR0lfX19zdHJjYXNlY21w
IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBl
b2YgKF9fc3RyY2FzZWNtcF9sKSBfX0dJX19fc3RyY2FzZWNtcF9sOyBleHRlcm4gX190eXBlb2Yg
KF9fc3RyY2FzZWNtcF9sKSBfX3N0cmNhc2VjbXBfbCBfX2FzbV9fICgiIiAiX19HSV9fX3N0cmNh
c2VjbXBfbCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJu
IF9fdHlwZW9mIChfX3N0cm5jYXNlY21wX2wpIF9fR0lfX19zdHJuY2FzZWNtcF9sOyBleHRlcm4g
X190eXBlb2YgKF9fc3RybmNhc2VjbXBfbCkgX19zdHJuY2FzZWNtcF9sIF9fYXNtX18gKCIiICJf
X0dJX19fc3RybmNhc2VjbXBfbCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVu
IikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3N0cmR1cCkgX19HSV9fX3N0cmR1cDsgZXh0ZXJuIF9f
dHlwZW9mIChfX3N0cmR1cCkgX19zdHJkdXAgX19hc21fXyAoIiIgIl9fR0lfX19zdHJkdXAiKSBf
X2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAo
X19zdHJuZHVwKSBfX0dJX19fc3RybmR1cDsgZXh0ZXJuIF9fdHlwZW9mIChfX3N0cm5kdXApIF9f
c3RybmR1cCBfX2FzbV9fICgiIiAiX19HSV9fX3N0cm5kdXAiKSBfX2F0dHJpYnV0ZV9fICgodmlz
aWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX19zdHJlcnJvcl9yKSBfX0dJ
X19fc3RyZXJyb3JfcjsgZXh0ZXJuIF9fdHlwZW9mIChfX3N0cmVycm9yX3IpIF9fc3RyZXJyb3Jf
ciBfX2FzbV9fICgiIiAiX19HSV9fX3N0cmVycm9yX3IiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJp
bGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX19zdHJ2ZXJzY21wKSBfX0dJX19f
c3RydmVyc2NtcDsgZXh0ZXJuIF9fdHlwZW9mIChfX3N0cnZlcnNjbXApIF9fc3RydmVyc2NtcCBf
X2FzbV9fICgiIiAiX19HSV9fX3N0cnZlcnNjbXAiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0
eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoYmFzZW5hbWUpIF9fR0lfYmFzZW5hbWU7
IGV4dGVybiBfX3R5cGVvZiAoYmFzZW5hbWUpIGJhc2VuYW1lIF9fYXNtX18gKCIiICJfX0dJX2Jh
c2VuYW1lIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4g
X190eXBlb2YgKHN0cmNvbGwpIF9fR0lfc3RyY29sbDsgZXh0ZXJuIF9fdHlwZW9mIChzdHJjb2xs
KSBzdHJjb2xsIF9fYXNtX18gKCIiICJfX0dJX3N0cmNvbGwiKSBfX2F0dHJpYnV0ZV9fICgodmlz
aWJpbGl0eSAoImhpZGRlbiIpKSk7CiMgMjYgInZmcHJpbnRmLmMiIDIKIyAxICIuLi9pbmNsdWRl
L2Vycm5vLmgiIDEKCgojIDEgIi4uL3N0ZGxpYi9lcnJuby5oIiAxCiMgMzIgIi4uL3N0ZGxpYi9l
cnJuby5oIgoKCgoKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL2Vycm5vLmgi
IDEKIyAyNSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9lcnJuby5oIgojIDEgIi91
c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2tlcm5lbC1oZWFkZXJzL2xpbnV4L2Vycm5vLmgiIDEgMyA0
CgoKCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQva2VybmVsLWhlYWRlcnMvYXNtL2Vycm5v
LmgiIDEgMyA0CgoKCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQva2VybmVsLWhlYWRlcnMv
YXNtLXg4Nl82NC9lcnJuby5oIiAxIDMgNAojIDUgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2tl
cm5lbC1oZWFkZXJzL2FzbS9lcnJuby5oIiAyIDMgNAojIDUgIi91c3Ivc3JjL3BhY2thZ2VzL0JV
SUxEL2tlcm5lbC1oZWFkZXJzL2xpbnV4L2Vycm5vLmgiIDIgMyA0CiMgMjYgIi4uL3N5c2RlcHMv
dW5peC9zeXN2L2xpbnV4L2JpdHMvZXJybm8uaCIgMgojIDM4ICIuLi9zeXNkZXBzL3VuaXgvc3lz
di9saW51eC9iaXRzL2Vycm5vLmgiCmV4dGVybiBpbnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAzNyAiLi4vc3RkbGliL2Vycm5vLmgiIDIK
IyA1NSAiLi4vc3RkbGliL2Vycm5vLmgiCmV4dGVybiBjaGFyICpwcm9ncmFtX2ludm9jYXRpb25f
bmFtZSwgKnByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lOwoKCgoKIyA2OSAiLi4vc3RkbGli
L2Vycm5vLmgiCnR5cGVkZWYgaW50IGVycm9yX3Q7CiMgNCAiLi4vaW5jbHVkZS9lcnJuby5oIiAy
CiMgMjMgIi4uL2luY2x1ZGUvZXJybm8uaCIKIyAxICIuLi9pbmNsdWRlL3Rscy5oIiAxCiMgMjQg
Ii4uL2luY2x1ZGUvZXJybm8uaCIgMgojIDI3ICJ2ZnByaW50Zi5jIiAyCiMgMSAiLi4vaW5jbHVk
ZS93Y2hhci5oIiAxCgojIDEgIi4uL3djc21icy93Y2hhci5oIiAxCiMgMzcgIi4uL3djc21icy93
Y2hhci5oIgojIDEgIi4uL2luY2x1ZGUvc3RkaW8uaCIgMQoKCiMgMSAiLi4vbGliaW8vc3RkaW8u
aCIgMQojIDYyICIuLi9saWJpby9zdGRpby5oIgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJ
TEU7CiMgNCAiLi4vaW5jbHVkZS9zdGRpby5oIiAyCiMgMzggIi4uL3djc21icy93Y2hhci5oIiAy
CiMgNDggIi4uL3djc21icy93Y2hhci5oIgojIDEgIi91c3IvbGliNjQvZ2NjLWxpYi94ODZfNjQt
c3VzZS1saW51eC8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzNTQgIi91c3IvbGliNjQv
Z2NjLWxpYi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyA0OSAiLi4vd2NzbWJzL3djaGFyLmgiIDIKIyA2MyAi
Li4vd2NzbWJzL3djaGFyLmgiCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50
OwogIHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBf
X3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwojIDg4ICIuLi93Y3NtYnMvd2NoYXIuaCIKCgp0eXBlZGVm
IF9fbWJzdGF0ZV90IG1ic3RhdGVfdDsKCgoKIyAxMTMgIi4uL3djc21icy93Y2hhci5oIgoKCgoK
CnN0cnVjdCB0bTsKCgoKCgoKCgoKZXh0ZXJuIHdjaGFyX3QgKndjc2NweSAod2NoYXJfdCAqX19y
ZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAq
X19yZXN0cmljdCBfX3NyYykgOwoKZXh0ZXJuIHdjaGFyX3QgKndjc25jcHkgKHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQogICAgIDsKCgpleHRlcm4gd2NoYXJfdCAq
d2NzY2F0ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjKSA7CgpleHRlcm4gd2NoYXJfdCAq
d2NzbmNhdCAod2NoYXJfdCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAgICAg
OwoKCmV4dGVybiBpbnQgd2NzY21wIChfX2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2No
YXJfdCAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQg
d2NzbmNtcCAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIsIHNp
emVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gaW50
IHdjc2Nhc2VjbXAgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3My
KSA7CgoKZXh0ZXJuIGludCB3Y3NuY2FzZWNtcCAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBfX2Nv
bnN0IHdjaGFyX3QgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIDsK
CgoKIyAxICIuLi9pbmNsdWRlL3hsb2NhbGUuaCIgMQojIDE2MiAiLi4vd2NzbWJzL3djaGFyLmgi
IDIKCmV4dGVybiBpbnQgd2NzY2FzZWNtcF9sIChfX2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29u
c3Qgd2NoYXJfdCAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19s
b2MpIDsKCmV4dGVybiBpbnQgd2NzbmNhc2VjbXBfbCAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBf
X2NvbnN0IHdjaGFyX3QgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
biwgX19sb2NhbGVfdCBfX2xvYykgOwoKCgoKCmV4dGVybiBpbnQgd2NzY29sbCAoX19jb25zdCB3
Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIpIDsKCgoKZXh0ZXJuIHNpemVfdCB3
Y3N4ZnJtICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczEsCiAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczIsIHNpemVfdCBfX24pIDsKCgoKCgoKCgpl
eHRlcm4gaW50IHdjc2NvbGxfbCAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFy
X3QgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgoKCgpl
eHRlcm4gc2l6ZV90IHdjc3hmcm1fbCAod2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpf
X3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xv
YykgOwoKCmV4dGVybiB3Y2hhcl90ICp3Y3NkdXAgKF9fY29uc3Qgd2NoYXJfdCAqX19zKSBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIHdjaGFyX3QgKndjc2NociAoX19j
b25zdCB3Y2hhcl90ICpfX3djcywgd2NoYXJfdCBfX3djKQogICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIHdjaGFyX3QgKndjc3JjaHIgKF9fY29uc3Qgd2NoYXJfdCAqX193
Y3MsIHdjaGFyX3QgX193YykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpl
eHRlcm4gd2NoYXJfdCAqd2NzY2hybnVsIChfX2NvbnN0IHdjaGFyX3QgKl9fcywgd2NoYXJfdCBf
X3djKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBzaXplX3Qg
d2NzY3NwbiAoX19jb25zdCB3Y2hhcl90ICpfX3djcywgX19jb25zdCB3Y2hhcl90ICpfX3JlamVj
dCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gc2l6ZV90IHdjc3Nw
biAoX19jb25zdCB3Y2hhcl90ICpfX3djcywgX19jb25zdCB3Y2hhcl90ICpfX2FjY2VwdCkKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiB3Y2hhcl90ICp3Y3NwYnJrIChf
X2NvbnN0IHdjaGFyX3QgKl9fd2NzLCBfX2NvbnN0IHdjaGFyX3QgKl9fYWNjZXB0KQogICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHdjaGFyX3QgKndjc3N0ciAoX19jb25z
dCB3Y2hhcl90ICpfX2hheXN0YWNrLCBfX2NvbnN0IHdjaGFyX3QgKl9fbmVlZGxlKQogICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB3Y2hhcl90ICp3Y3N0b2sgKHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAq
Kl9fcmVzdHJpY3QgX19wdHIpIDsKCgpleHRlcm4gc2l6ZV90IHdjc2xlbiAoX19jb25zdCB3Y2hh
cl90ICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHdjaGFyX3Qg
Kndjc3djcyAoX19jb25zdCB3Y2hhcl90ICpfX2hheXN0YWNrLCBfX2NvbnN0IHdjaGFyX3QgKl9f
bmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVf
dCB3Y3NubGVuIChfX2NvbnN0IHdjaGFyX3QgKl9fcywgc2l6ZV90IF9fbWF4bGVuKQogICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiB3Y2hhcl90ICp3bWVtY2hyIChf
X2NvbnN0IHdjaGFyX3QgKl9fcywgd2NoYXJfdCBfX2MsIHNpemVfdCBfX24pCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCB3bWVtY21wIChfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19zMSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgpleHRlcm4gd2NoYXJfdCAqd21lbWNweSAod2NoYXJfdCAqX19yZXN0cmljdCBfX3Mx
LAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
czIsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJuIHdjaGFyX3QgKndtZW1tb3ZlICh3Y2hhcl90ICpf
X3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIsIHNpemVfdCBfX24pCiAgICAgOwoKCmV4dGVybiB3
Y2hhcl90ICp3bWVtc2V0ICh3Y2hhcl90ICpfX3MsIHdjaGFyX3QgX19jLCBzaXplX3QgX19uKSA7
CgoKCgoKZXh0ZXJuIHdjaGFyX3QgKndtZW1wY3B5ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
czIsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKCgpleHRlcm4gd2ludF90IGJ0b3djIChpbnQgX19j
KSA7CgoKCmV4dGVybiBpbnQgd2N0b2IgKHdpbnRfdCBfX2MpIDsKCgoKZXh0ZXJuIGludCBtYnNp
bml0IChfX2NvbnN0IG1ic3RhdGVfdCAqX19wcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKCmV4dGVybiBzaXplX3QgbWJydG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19uLAogICAgICAgICAgICAgICAgICAgICAgIG1ic3RhdGVfdCAqX19wKSA7CgoKZXh0ZXJuIHNp
emVfdCB3Y3J0b21iIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgd2NoYXJfdCBfX3djLAogICAgICAg
ICAgICAgICAgICAgICAgIG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSA7CgoKZXh0ZXJuIHNp
emVfdCBfX21icmxlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcHMpIDsKZXh0
ZXJuIHNpemVfdCBtYnJsZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBf
X24sCiAgICAgICAgICAgICAgICAgICAgICBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgOwoK
CgoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBtYnJsZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3MsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYnN0YXRl
X3QgKl9fcmVzdHJpY3QgX19wcykKeyByZXR1cm4gKF9fcHMgIT0gKCh2b2lkICopMCkKICAgICAg
ICAgID8gbWJydG93YyAoKCh2b2lkICopMCksIF9fcywgX19uLCBfX3BzKSA6IF9fbWJybGVuIChf
X3MsIF9fbiwgKCh2b2lkICopMCkpKTsgfQoKCgoKCmV4dGVybiBzaXplX3QgbWJzcnRvd2NzICh3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICoqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbGVuLAogICAgICAgICAgICAgICAg
ICAgICAgICAgbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcHMpIDsKCgoKZXh0ZXJuIHNpemVfdCB3
Y3NydG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19kc3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19sZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgOwoKCgoKCgpl
eHRlcm4gc2l6ZV90IG1ic25ydG93Y3MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICoqX19yZXN0cmljdCBfX3NyYywgc2l6
ZV90IF9fbm1jLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbiwgbWJzdGF0
ZV90ICpfX3Jlc3RyaWN0IF9fcHMpIDsKCgoKZXh0ZXJuIHNpemVfdCB3Y3NucnRvbWJzIChjaGFy
ICpfX3Jlc3RyaWN0IF9fZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2No
YXJfdCAqKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbndjLCBzaXplX3QgX19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWJzdGF0ZV90
ICpfX3Jlc3RyaWN0IF9fcHMpIDsKCgoKCgoKZXh0ZXJuIGludCB3Y3dpZHRoICh3Y2hhcl90IF9f
YykgOwoKCgpleHRlcm4gaW50IHdjc3dpZHRoIChfX2NvbnN0IHdjaGFyX3QgKl9fcywgc2l6ZV90
IF9fbikgOwoKCgoKCgpleHRlcm4gZG91YmxlIHdjc3RvZCAoX19jb25zdCB3Y2hhcl90ICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyKSA7CgoKCmV4dGVybiBmbG9hdCB3Y3N0b2YgKF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyKSA7CmV4dGVybiBsb25nIGRvdWJsZSB3Y3N0b2xkIChfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCgoKCgpleHRlcm4gbG9uZyBpbnQgd2NzdG9sIChfX2Nv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICB3
Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKCgpleHRlcm4gdW5z
aWduZWQgbG9uZyBpbnQgd2NzdG91bCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgd2NzdG9sbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIGludCBfX2Jhc2UpCiAgICAgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBs
b25nIGxvbmcgaW50IHdjc3RvdWxsIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19iYXNlKSA7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgd2Nz
dG9xIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQog
ICAgIDsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCB3Y3N0
b3VxIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSkgOwojIDQzOSAi
Li4vd2NzbWJzL3djaGFyLmgiCiMgMSAiLi4vaW5jbHVkZS94bG9jYWxlLmgiIDEKIyA0NDAgIi4u
L3djc21icy93Y2hhci5oIiAyCgoKCmV4dGVybiBsb25nIGludCB3Y3N0b2xfbCAoX19jb25zdCB3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hh
cl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgd2Nz
dG91bF9sIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBf
X2xvYykgOwoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCB3Y3N0b2xsX2wgKF9f
Y29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgOwoKX19leHRlbnNp
b25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCB3Y3N0b3VsbF9sIChfX2NvbnN0IHdj
aGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykK
ICAgICA7CgpleHRlcm4gZG91YmxlIHdjc3RvZF9sIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICA7CgpleHRlcm4gZmxvYXQgd2NzdG9mX2wg
KF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAg
OwoKZXh0ZXJuIGxvbmcgZG91YmxlIHdjc3RvbGRfbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3Qg
X19sb2MpIDsKCgoKCgpleHRlcm4gZG91YmxlIF9fd2NzdG9kX2ludGVybmFsIChfX2NvbnN0IHdj
aGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgOwpleHRl
cm4gZmxvYXQgX193Y3N0b2ZfaW50ZXJuYWwgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fd2Nz
dG9sZF9pbnRlcm5hbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3Vw
KSA7CgoKZXh0ZXJuIGxvbmcgaW50IF9fd2NzdG9sX2ludGVybmFsIChfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdj
aGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCmV4dGVybiB1bnNpZ25lZCBsb25n
IGludCBfX3djc3RvdWxfaW50ZXJuYWwgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25w
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIGxvbmcgbG9uZyBpbnQgX193Y3N0b2xsX2ludGVybmFsIChfX2NvbnN0IHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX193Y3N0b3VsbF9pbnRlcm5hbCAoX19j
b25zdCB3Y2hhcl90ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKioKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fZ3Jv
dXApIDsKCgoKCgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIHdjc3RvZCAoX19jb25zdCB3Y2hh
cl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdj
aGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7IHJldHVybiBfX3djc3RvZF9pbnRlcm5hbCAo
X19ucHRyLCBfX2VuZHB0ciwgMCk7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50IHdjc3RvbCAo
X19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UpCnsgcmV0dXJuIF9fd2NzdG9sX2ludGVybmFs
IChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOyB9CmV4dGVybiBfX2lubGluZSB1bnNpZ25l
ZCBsb25nIGludCB3Y3N0b3VsIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX19iYXNlKQp7IHJldHVybiBfX3djc3RvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7IH0KCgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0IHdjc3RvZiAoX19jb25z
dCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsgcmV0dXJuIF9fd2NzdG9mX2ludGVy
bmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
d2NzdG9sZCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7
IHJldHVybiBfX3djc3RvbGRfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOyB9CgoKX19l
eHRlbnNpb25fXwpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludCB3Y3N0b3EgKF9fY29uc3Qg
d2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSkKeyByZXR1cm4gX193Y3N0b2xsX2ludGVy
bmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOyB9Cl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgd2NzdG91cSAoX19jb25zdCB3Y2hhcl90
ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlKQp7IHJldHVybiBfX3djc3RvdWxs
X2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOyB9CgoKCgoKCgpleHRlcm4g
d2NoYXJfdCAqd2NwY3B5ICh3Y2hhcl90ICpfX2Rlc3QsIF9fY29uc3Qgd2NoYXJfdCAqX19zcmMp
IDsKCgoKZXh0ZXJuIHdjaGFyX3QgKndjcG5jcHkgKHdjaGFyX3QgKl9fZGVzdCwgX19jb25zdCB3
Y2hhcl90ICpfX3NyYywgc2l6ZV90IF9fbikKICAgICA7CgoKCgoKCgoKZXh0ZXJuIGludCBmd2lk
ZSAoX19GSUxFICpfX2ZwLCBpbnQgX19tb2RlKSA7CgoKCmV4dGVybiBpbnQgZndwcmludGYgKF9f
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgOwoKZXh0ZXJuIGludCB3cHJp
bnRmIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICA7Cgpl
eHRlcm4gaW50IHN3cHJpbnRmICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbiwK
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pCiAgICAgOwoKCmV4dGVybiBpbnQgdmZ3cHJpbnRmIChfX0ZJTEUgKl9fcmVzdHJpY3Qg
X19zLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAg
OwoKZXh0ZXJuIGludCB2d3ByaW50ZiAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICA7CgoK
ZXh0ZXJuIGludCB2c3dwcmludGYgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19u
LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgOwoK
CgpleHRlcm4gaW50IGZ3c2NhbmYgKF9fRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikK
ICAgICA7CgpleHRlcm4gaW50IHdzY2FuZiAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LCAuLi4pCiAgICAgOwoKZXh0ZXJuIGludCBzd3NjYW5mIChfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIDsKCgoKCgoKCgpleHRlcm4gaW50IHZmd3NjYW5m
IChfX0ZJTEUgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdj
aGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgIDsKCmV4dGVybiBpbnQgdndzY2FuZiAoX19jb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0
IF9fYXJnKQogICAgIDsKCmV4dGVybiBpbnQgdnN3c2NhbmYgKF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0
cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcp
CiAgICAgOwoKCgoKCgoKZXh0ZXJuIHdpbnRfdCBmZ2V0d2MgKF9fRklMRSAqX19zdHJlYW0pIDsK
ZXh0ZXJuIHdpbnRfdCBnZXR3YyAoX19GSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiB3aW50X3Qg
Z2V0d2NoYXIgKHZvaWQpIDsKCgoKZXh0ZXJuIHdpbnRfdCBmcHV0d2MgKHdjaGFyX3QgX193Yywg
X19GSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gd2ludF90IHB1dHdjICh3Y2hhcl90IF9fd2MsIF9f
RklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gd2ludF90IHB1dHdjaGFyICh3Y2hhcl90IF9fd2Mp
IDsKCgoKCmV4dGVybiB3Y2hhcl90ICpmZ2V0d3MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX193cywg
aW50IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSA7CgoKZXh0ZXJuIGludCBmcHV0d3MgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBf
X3dzLAogICAgICAgICAgICAgICAgICAgX19GSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoK
CmV4dGVybiB3aW50X3QgdW5nZXR3YyAod2ludF90IF9fd2MsIF9fRklMRSAqX19zdHJlYW0pIDsK
CgoKCgoKZXh0ZXJuIHdpbnRfdCBnZXR3Y191bmxvY2tlZCAoX19GSUxFICpfX3N0cmVhbSkgOwpl
eHRlcm4gd2ludF90IGdldHdjaGFyX3VubG9ja2VkICh2b2lkKSA7CgoKZXh0ZXJuIHdpbnRfdCBm
Z2V0d2NfdW5sb2NrZWQgKF9fRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gd2ludF90IGZwdXR3
Y191bmxvY2tlZCAod2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiB3
aW50X3QgcHV0d2NfdW5sb2NrZWQgKHdjaGFyX3QgX193YywgX19GSUxFICpfX3N0cmVhbSkgOwpl
eHRlcm4gd2ludF90IHB1dHdjaGFyX3VubG9ja2VkICh3Y2hhcl90IF9fd2MpIDsKCgoKZXh0ZXJu
IHdjaGFyX3QgKmZnZXR3c191bmxvY2tlZCAod2NoYXJfdCAqX19yZXN0cmljdCBfX3dzLCBpbnQg
X19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0pIDsKCgpleHRlcm4gaW50IGZwdXR3c191bmxvY2tlZCAoX19jb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0IF9fd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCgoKCmV4dGVybiBzaXplX3Qgd2NzZnRpbWUgKHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKIyAxICIu
Li9pbmNsdWRlL3hsb2NhbGUuaCIgMQojIDcxNyAiLi4vd2NzbWJzL3djaGFyLmgiIDIKCgoKZXh0
ZXJuIHNpemVfdCB3Y3NmdGltZV9sICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9f
bWF4c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVz
dHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3Qg
dG0gKl9fcmVzdHJpY3QgX190cCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90
IF9fbG9jKSA7CiMgNzM3ICIuLi93Y3NtYnMvd2NoYXIuaCIKCiMgMyAiLi4vaW5jbHVkZS93Y2hh
ci5oIiAyCgoKCmV4dGVybiBfX3R5cGVvZiAod2NzY2FzZWNtcF9sKSBfX3djc2Nhc2VjbXBfbDsK
ZXh0ZXJuIF9fdHlwZW9mICh3Y3NuY2FzZWNtcF9sKSBfX3djc25jYXNlY21wX2w7CmV4dGVybiBf
X3R5cGVvZiAod2NzY29sbF9sKSBfX3djc2NvbGxfbDsKZXh0ZXJuIF9fdHlwZW9mICh3Y3N4ZnJt
X2wpIF9fd2NzeGZybV9sOwpleHRlcm4gX190eXBlb2YgKHdjc3RvbF9sKSBfX3djc3RvbF9sOwpl
eHRlcm4gX190eXBlb2YgKHdjc3RvdWxfbCkgX193Y3N0b3VsX2w7CmV4dGVybiBfX3R5cGVvZiAo
d2NzdG9sbF9sKSBfX3djc3RvbGxfbDsKZXh0ZXJuIF9fdHlwZW9mICh3Y3N0b3VsbF9sKSBfX3dj
c3RvdWxsX2w7CmV4dGVybiBfX3R5cGVvZiAod2NzdG9kX2wpIF9fd2NzdG9kX2w7CmV4dGVybiBf
X3R5cGVvZiAod2NzdG9mX2wpIF9fd2NzdG9mX2w7CmV4dGVybiBfX3R5cGVvZiAod2NzdG9sZF9s
KSBfX3djc3RvbGRfbDsKZXh0ZXJuIF9fdHlwZW9mICh3Y3NmdGltZV9sKSBfX3djc2Z0aW1lX2w7
CgoKZXh0ZXJuIF9fdHlwZW9mIChfX3djc3RvZl9pbnRlcm5hbCkgX19HSV9fX3djc3RvZl9pbnRl
cm5hbDsgZXh0ZXJuIF9fdHlwZW9mIChfX3djc3RvZl9pbnRlcm5hbCkgX193Y3N0b2ZfaW50ZXJu
YWwgX19hc21fXyAoIiIgIl9fR0lfX193Y3N0b2ZfaW50ZXJuYWwiKSBfX2F0dHJpYnV0ZV9fICgo
dmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX193Y3N0b2RfaW50ZXJu
YWwpIF9fR0lfX193Y3N0b2RfaW50ZXJuYWw7IGV4dGVybiBfX3R5cGVvZiAoX193Y3N0b2RfaW50
ZXJuYWwpIF9fd2NzdG9kX2ludGVybmFsIF9fYXNtX18gKCIiICJfX0dJX19fd2NzdG9kX2ludGVy
bmFsIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190
eXBlb2YgKF9fd2NzdG9sZF9pbnRlcm5hbCkgX19HSV9fX3djc3RvbGRfaW50ZXJuYWw7IGV4dGVy
biBfX3R5cGVvZiAoX193Y3N0b2xkX2ludGVybmFsKSBfX3djc3RvbGRfaW50ZXJuYWwgX19hc21f
XyAoIiIgIl9fR0lfX193Y3N0b2xkX2ludGVybmFsIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxp
dHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKF9fd2NzdG9sX2ludGVybmFsKSBfX0dJ
X19fd2NzdG9sX2ludGVybmFsOyBleHRlcm4gX190eXBlb2YgKF9fd2NzdG9sX2ludGVybmFsKSBf
X3djc3RvbF9pbnRlcm5hbCBfX2FzbV9fICgiIiAiX19HSV9fX3djc3RvbF9pbnRlcm5hbCIpIF9f
YXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChf
X3djc3RvbGxfaW50ZXJuYWwpIF9fR0lfX193Y3N0b2xsX2ludGVybmFsOyBleHRlcm4gX190eXBl
b2YgKF9fd2NzdG9sbF9pbnRlcm5hbCkgX193Y3N0b2xsX2ludGVybmFsIF9fYXNtX18gKCIiICJf
X0dJX19fd2NzdG9sbF9pbnRlcm5hbCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlk
ZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3djc3RvdWxfaW50ZXJuYWwpIF9fR0lfX193Y3N0
b3VsX2ludGVybmFsOyBleHRlcm4gX190eXBlb2YgKF9fd2NzdG91bF9pbnRlcm5hbCkgX193Y3N0
b3VsX2ludGVybmFsIF9fYXNtX18gKCIiICJfX0dJX19fd2NzdG91bF9pbnRlcm5hbCIpIF9fYXR0
cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3dj
c3RvdWxsX2ludGVybmFsKSBfX0dJX19fd2NzdG91bGxfaW50ZXJuYWw7IGV4dGVybiBfX3R5cGVv
ZiAoX193Y3N0b3VsbF9pbnRlcm5hbCkgX193Y3N0b3VsbF9pbnRlcm5hbCBfX2FzbV9fICgiIiAi
X19HSV9fX3djc3RvdWxsX2ludGVybmFsIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJo
aWRkZW4iKSkpOwoKZXh0ZXJuIF9fdHlwZW9mIChfX3djc2Nhc2VjbXBfbCkgX19HSV9fX3djc2Nh
c2VjbXBfbDsgZXh0ZXJuIF9fdHlwZW9mIChfX3djc2Nhc2VjbXBfbCkgX193Y3NjYXNlY21wX2wg
X19hc21fXyAoIiIgIl9fR0lfX193Y3NjYXNlY21wX2wiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJp
bGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX193Y3NuY2FzZWNtcF9sKSBfX0dJ
X19fd2NzbmNhc2VjbXBfbDsgZXh0ZXJuIF9fdHlwZW9mIChfX3djc25jYXNlY21wX2wpIF9fd2Nz
bmNhc2VjbXBfbCBfX2FzbV9fICgiIiAiX19HSV9fX3djc25jYXNlY21wX2wiKSBfX2F0dHJpYnV0
ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgpleHRlcm4gX190eXBlb2YgKGZwdXR3c191
bmxvY2tlZCkgX19HSV9mcHV0d3NfdW5sb2NrZWQ7IGV4dGVybiBfX3R5cGVvZiAoZnB1dHdzX3Vu
bG9ja2VkKSBmcHV0d3NfdW5sb2NrZWQgX19hc21fXyAoIiIgIl9fR0lfZnB1dHdzX3VubG9ja2Vk
IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBl
b2YgKHB1dHdjX3VubG9ja2VkKSBfX0dJX3B1dHdjX3VubG9ja2VkOyBleHRlcm4gX190eXBlb2Yg
KHB1dHdjX3VubG9ja2VkKSBwdXR3Y191bmxvY2tlZCBfX2FzbV9fICgiIiAiX19HSV9wdXR3Y191
bmxvY2tlZCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJu
IF9fdHlwZW9mIChwdXR3YykgX19HSV9wdXR3YzsgZXh0ZXJuIF9fdHlwZW9mIChwdXR3YykgcHV0
d2MgX19hc21fXyAoIiIgIl9fR0lfcHV0d2MiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAo
ImhpZGRlbiIpKSk7CgpleHRlcm4gX190eXBlb2YgKHZzd3NjYW5mKSBfX0dJX3Zzd3NjYW5mOyBl
eHRlcm4gX190eXBlb2YgKHZzd3NjYW5mKSB2c3dzY2FuZiBfX2FzbV9fICgiIiAiX19HSV92c3dz
Y2FuZiIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKCmV4dGVybiBf
X3R5cGVvZiAobWJydG93YykgX19HSV9tYnJ0b3djOyBleHRlcm4gX190eXBlb2YgKG1icnRvd2Mp
IG1icnRvd2MgX19hc21fXyAoIiIgIl9fR0lfbWJydG93YyIpIF9fYXR0cmlidXRlX18gKCh2aXNp
YmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mICh3Y3J0b21iKSBfX0dJX3djcnRv
bWI7IGV4dGVybiBfX3R5cGVvZiAod2NydG9tYikgd2NydG9tYiBfX2FzbV9fICgiIiAiX19HSV93
Y3J0b21iIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4g
X190eXBlb2YgKHdjc2NtcCkgX19HSV93Y3NjbXA7IGV4dGVybiBfX3R5cGVvZiAod2NzY21wKSB3
Y3NjbXAgX19hc21fXyAoIiIgIl9fR0lfd2NzY21wIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxp
dHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKHdjc2Z0aW1lKSBfX0dJX3djc2Z0aW1l
OyBleHRlcm4gX190eXBlb2YgKHdjc2Z0aW1lKSB3Y3NmdGltZSBfX2FzbV9fICgiIiAiX19HSV93
Y3NmdGltZSIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJu
IF9fdHlwZW9mICh3Y3NzcG4pIF9fR0lfd2Nzc3BuOyBleHRlcm4gX190eXBlb2YgKHdjc3Nwbikg
d2Nzc3BuIF9fYXNtX18gKCIiICJfX0dJX3djc3NwbiIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmls
aXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mICh3Y3NjaHIpIF9fR0lfd2NzY2hyOyBl
eHRlcm4gX190eXBlb2YgKHdjc2Nocikgd2NzY2hyIF9fYXNtX18gKCIiICJfX0dJX3djc2NociIp
IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9m
ICh3Y3Njb2xsKSBfX0dJX3djc2NvbGw7IGV4dGVybiBfX3R5cGVvZiAod2NzY29sbCkgd2NzY29s
bCBfX2FzbV9fICgiIiAiX19HSV93Y3Njb2xsIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkg
KCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKHdjc3BicmspIF9fR0lfd2NzcGJyazsgZXh0
ZXJuIF9fdHlwZW9mICh3Y3NwYnJrKSB3Y3NwYnJrIF9fYXNtX18gKCIiICJfX0dJX3djc3Bicmsi
KSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgpleHRlcm4gX190eXBl
b2YgKHdtZW1jaHIpIF9fR0lfd21lbWNocjsgZXh0ZXJuIF9fdHlwZW9mICh3bWVtY2hyKSB3bWVt
Y2hyIF9fYXNtX18gKCIiICJfX0dJX3dtZW1jaHIiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0
eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAod21lbXNldCkgX19HSV93bWVtc2V0OyBl
eHRlcm4gX190eXBlb2YgKHdtZW1zZXQpIHdtZW1zZXQgX19hc21fXyAoIiIgIl9fR0lfd21lbXNl
dCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKCgpleHRlcm4gaW50
IF9fd2NzY2FzZWNtcCAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9f
czIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CmV4dGVybiBpbnQgX193Y3NuY2Fz
ZWNtcCAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKZXh0ZXJuIGludCBfX3djc2NvbGwgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19j
b25zdCB3Y2hhcl90ICpfX3MyKTsKZXh0ZXJuIHNpemVfdCBfX3djc2xlbiAoX19jb25zdCB3Y2hh
cl90ICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4gc2l6ZV90IF9fd2Nz
bmxlbiAoX19jb25zdCB3Y2hhcl90ICpfX3MsIHNpemVfdCBfX21heGxlbikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKZXh0ZXJuIHdjaGFyX3QgKl9fd2NzY2F0ICh3Y2hhcl90ICpk
ZXN0LCBjb25zdCB3Y2hhcl90ICpzcmMpOwpleHRlcm4gd2ludF90IF9fYnRvd2MgKGludCBfX2Mp
OwpleHRlcm4gaW50IF9fbWJzaW5pdCAoX19jb25zdCBfX21ic3RhdGVfdCAqX19wcyk7CmV4dGVy
biBzaXplX3QgX19tYnJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcCk7CmV4
dGVybiBfX3R5cGVvZiAoX19tYnJ0b3djKSBfX0dJX19fbWJydG93YzsgZXh0ZXJuIF9fdHlwZW9m
IChfX21icnRvd2MpIF9fbWJydG93YyBfX2FzbV9fICgiIiAiX19HSV9fX21icnRvd2MiKSBfX2F0
dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX19t
YnJsZW4pIF9fR0lfX19tYnJsZW47IGV4dGVybiBfX3R5cGVvZiAoX19tYnJsZW4pIF9fbWJybGVu
IF9fYXNtX18gKCIiICJfX0dJX19fbWJybGVuIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkg
KCJoaWRkZW4iKSkpOwpleHRlcm4gc2l6ZV90IF9fd2NydG9tYiAoY2hhciAqX19yZXN0cmljdCBf
X3MsIHdjaGFyX3QgX193YywKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWJzdGF0ZV90ICpf
X3Jlc3RyaWN0IF9fcHMpOwpleHRlcm4gc2l6ZV90IF9fbWJzcnRvd2NzICh3Y2hhcl90ICpfX3Jl
c3RyaWN0IF9fZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKipf
X3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4s
IF9fbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcHMpOwpleHRlcm4gc2l6ZV90IF9fd2NzcnRvbWJz
IChjaGFyICpfX3Jlc3RyaWN0IF9fZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19sZW4sIF9fbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcHMpOwpleHRlcm4gc2l6
ZV90IF9fbWJzbnJ0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX2RzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X25tYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbiwgX19tYnN0YXRl
X3QgKl9fcmVzdHJpY3QgX19wcyk7CmV4dGVybiBzaXplX3QgX193Y3NucnRvbWJzIChjaGFyICpf
X3Jlc3RyaWN0IF9fZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hh
cl90ICoqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX253Yywgc2l6ZV90IF9fbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYnN0
YXRlX3QgKl9fcmVzdHJpY3QgX19wcyk7CmV4dGVybiB3Y2hhcl90ICpfX3djcGNweSAod2NoYXJf
dCAqX19kZXN0LCBfX2NvbnN0IHdjaGFyX3QgKl9fc3JjKTsKZXh0ZXJuIHdjaGFyX3QgKl9fd2Nw
bmNweSAod2NoYXJfdCAqX19kZXN0LCBfX2NvbnN0IHdjaGFyX3QgKl9fc3JjLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKZXh0ZXJuIHdjaGFyX3QgKl9fd21lbWNweSAo
d2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpzMiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fbik7CmV4dGVybiB3Y2hhcl90ICpfX3dtZW1wY3B5ICh3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fczEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X24pOwpleHRlcm4gd2NoYXJfdCAqX193bWVtbW92ZSAod2NoYXJfdCAqX19zMSwgX19jb25zdCB3
Y2hhcl90ICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CmV4
dGVybiB3Y2hhcl90ICpfX3djc2Nocm51bCAoX19jb25zdCB3Y2hhcl90ICpfX3MsIHdjaGFyX3Qg
X193YykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX192Zndz
Y2FuZiAoX19GSUxFICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
X19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIGludCBfX3Zzd3ByaW50ZiAod2NoYXJfdCAq
X19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
X19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gaW50IF9fZndwcmludGYgKF9fRklMRSAq
X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gaW50IF9fdmZ3cHJpbnRmIChfX0ZJ
TEUgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCgoKZXh0ZXJuIHNpemVfdCBfX21ic3J0b3djc19sICh3Y2hhcl90
ICpkc3QsIGNvbnN0IGNoYXIgKipzcmMsIHNpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWJzdGF0ZV90ICpwcywgX19sb2NhbGVfdCBsKSBfX2F0dHJpYnV0ZV9fICgodmlz
aWJpbGl0eSAoImhpZGRlbiIpKSk7CiMgMjggInZmcHJpbnRmLmMiIDIKIyAxICIuLi9saW51eHRo
cmVhZHMvc3lzZGVwcy9wdGhyZWFkL2JpdHMvbGliYy1sb2NrLmgiIDEKIyAyNCAiLi4vbGludXh0
aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL2xpYmMtbG9jay5oIgojIDEgIi4uL2luY2x1ZGUv
cHRocmVhZC5oIiAxCiMgMSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFk
LmgiIDEKIyAyMCAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiCiMg
MSAiLi4vaW5jbHVkZS9zY2hlZC5oIiAxCgojIDEgIi4uL3Bvc2l4L3NjaGVkLmgiIDEKIyAzMiAi
Li4vcG9zaXgvc2NoZWQuaCIKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3Nj
aGVkLmgiIDEKIyA0NyAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zY2hlZC5oIgpz
dHJ1Y3Qgc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9OwoKCgoK
CmV4dGVybiBpbnQgY2xvbmUgKGludCAoKl9fZm4pICh2b2lkICpfX2FyZyksIHZvaWQgKl9fY2hp
bGRfc3RhY2ssCiAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdzLCB2b2lkICpfX2FyZykgOwoK
CgojIDMzICIuLi9wb3NpeC9zY2hlZC5oIiAyCgoKCgoKCgpleHRlcm4gaW50IHNjaGVkX3NldHBh
cmFtIChfX3BpZF90IF9fcGlkLCBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkK
ICAgICA7CgoKZXh0ZXJuIGludCBzY2hlZF9nZXRwYXJhbSAoX19waWRfdCBfX3BpZCwgc3RydWN0
IHNjaGVkX3BhcmFtICpfX3BhcmFtKSA7CgoKZXh0ZXJuIGludCBzY2hlZF9zZXRzY2hlZHVsZXIg
KF9fcGlkX3QgX19waWQsIGludCBfX3BvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSA7CgoKZXh0ZXJuIGludCBz
Y2hlZF9nZXRzY2hlZHVsZXIgKF9fcGlkX3QgX19waWQpIDsKCgpleHRlcm4gaW50IHNjaGVkX3lp
ZWxkICh2b2lkKSA7CgoKZXh0ZXJuIGludCBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IChpbnQgX19h
bGdvcml0aG0pIDsKCgpleHRlcm4gaW50IHNjaGVkX2dldF9wcmlvcml0eV9taW4gKGludCBfX2Fs
Z29yaXRobSkgOwoKCmV4dGVybiBpbnQgc2NoZWRfcnJfZ2V0X2ludGVydmFsIChfX3BpZF90IF9f
cGlkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdCkgOwoKCgoKZXh0ZXJuIGludCBzY2hlZF9zZXRhZmZp
bml0eSAoX19waWRfdCBfX3BpZCwgdW5zaWduZWQgbG9uZyBpbnQgX19sZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW50ICpfX21hc2spIDsKCgpleHRlcm4g
aW50IHNjaGVkX2dldGFmZmluaXR5IChfX3BpZF90IF9fcGlkLCB1bnNpZ25lZCBsb25nIGludCBf
X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgKl9f
bWFzaykgOwoKCgojIDMgIi4uL2luY2x1ZGUvc2NoZWQuaCIgMgoKCmV4dGVybiBpbnQgX19zY2hl
ZF9zZXRwYXJhbSAoX19waWRfdCBfX3BpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSk7CmV4dGVybiBpbnQgX19zY2hlZF9n
ZXRwYXJhbSAoX19waWRfdCBfX3BpZCwgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKTsKZXh0
ZXJuIGludCBfX3NjaGVkX3NldHNjaGVkdWxlciAoX19waWRfdCBfX3BpZCwgaW50IF9fcG9saWN5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9w
YXJhbSAqX19wYXJhbSk7CmV4dGVybiBfX3R5cGVvZiAoX19zY2hlZF9zZXRzY2hlZHVsZXIpIF9f
R0lfX19zY2hlZF9zZXRzY2hlZHVsZXI7IGV4dGVybiBfX3R5cGVvZiAoX19zY2hlZF9zZXRzY2hl
ZHVsZXIpIF9fc2NoZWRfc2V0c2NoZWR1bGVyIF9fYXNtX18gKCIiICJfX0dJX19fc2NoZWRfc2V0
c2NoZWR1bGVyIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRl
cm4gaW50IF9fc2NoZWRfZ2V0c2NoZWR1bGVyIChfX3BpZF90IF9fcGlkKTsKZXh0ZXJuIGludCBf
X3NjaGVkX3lpZWxkICh2b2lkKTsKZXh0ZXJuIGludCBfX3NjaGVkX2dldF9wcmlvcml0eV9tYXgg
KGludCBfX2FsZ29yaXRobSk7CmV4dGVybiBpbnQgX19zY2hlZF9nZXRfcHJpb3JpdHlfbWluIChp
bnQgX19hbGdvcml0aG0pOwpleHRlcm4gaW50IF9fc2NoZWRfcnJfZ2V0X2ludGVydmFsIChfX3Bp
ZF90IF9fcGlkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdCk7CgoKZXh0ZXJuIGludCBfX2Nsb25lIChp
bnQgKCpfX2ZuKSAodm9pZCAqX19hcmcpLCB2b2lkICpfX2NoaWxkX3N0YWNrLAogICAgICAgICAg
ICAgICAgICAgIGludCBfX2ZsYWdzLCB2b2lkICpfX2FyZywgLi4uKTsKZXh0ZXJuIGludCBfX2Ns
b25lMiAoaW50ICgqX19mbikgKHZvaWQgKl9fYXJnKSwgdm9pZCAqX19jaGlsZF9zdGFja19iYXNl
LAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19jaGlsZF9zdGFja19zaXplLCBpbnQgX19m
bGFncywgdm9pZCAqX19hcmcpOwojIDIxICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFk
L3B0aHJlYWQuaCIgMgoKCgojIDEgIi4uL2luY2x1ZGUvc2lnbmFsLmgiIDEKCgojIDEgIi4uL3Np
Z25hbC9zaWduYWwuaCIgMQojIDMxICIuLi9zaWduYWwvc2lnbmFsLmgiCgoKIyAxICIuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NpZ3NldC5oIiAxCiMgMzQgIi4uL3NpZ25hbC9zaWdu
YWwuaCIgMgojIDM3OCAiLi4vc2lnbmFsL3NpZ25hbC5oIgoKIyA0ICIuLi9pbmNsdWRlL3NpZ25h
bC5oIiAyCiMgMjUgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvcHRocmVhZC5oIiAy
CiMgMSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL3B0aHJlYWR0eXBlcy5o
IiAxCiMgMjYgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvcHRocmVhZC5oIiAyCiMg
MSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL2luaXRzcGluLmgiIDEKIyAy
NyAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiIDIKCgoKIyA1OSAi
Li4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiCmVudW0KewogIFBUSFJF
QURfQ1JFQVRFX0pPSU5BQkxFLAoKICBQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRAoKfTsKCmVudW0K
ewogIFBUSFJFQURfSU5IRVJJVF9TQ0hFRCwKCiAgUFRIUkVBRF9FWFBMSUNJVF9TQ0hFRAoKfTsK
CmVudW0KewogIFBUSFJFQURfU0NPUEVfU1lTVEVNLAoKICBQVEhSRUFEX1NDT1BFX1BST0NFU1MK
Cn07CgplbnVtCnsKICBQVEhSRUFEX01VVEVYX1RJTUVEX05QLAogIFBUSFJFQURfTVVURVhfUkVD
VVJTSVZFX05QLAogIFBUSFJFQURfTVVURVhfRVJST1JDSEVDS19OUCwKICBQVEhSRUFEX01VVEVY
X0FEQVBUSVZFX05QCgogICwKICBQVEhSRUFEX01VVEVYX05PUk1BTCA9IFBUSFJFQURfTVVURVhf
VElNRURfTlAsCiAgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUgPSBQVEhSRUFEX01VVEVYX1JFQ1VS
U0lWRV9OUCwKICBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0sgPSBQVEhSRUFEX01VVEVYX0VSUk9S
Q0hFQ0tfTlAsCiAgUFRIUkVBRF9NVVRFWF9ERUZBVUxUID0gUFRIUkVBRF9NVVRFWF9OT1JNQUwK
CgoKICAsIFBUSFJFQURfTVVURVhfRkFTVF9OUCA9IFBUSFJFQURfTVVURVhfQURBUFRJVkVfTlAK
Cn07CgplbnVtCnsKICBQVEhSRUFEX1BST0NFU1NfUFJJVkFURSwKCiAgUFRIUkVBRF9QUk9DRVNT
X1NIQVJFRAoKfTsKCgplbnVtCnsKICBQVEhSRUFEX1JXTE9DS19QUkVGRVJfUkVBREVSX05QLAog
IFBUSFJFQURfUldMT0NLX1BSRUZFUl9XUklURVJfTlAsCiAgUFRIUkVBRF9SV0xPQ0tfUFJFRkVS
X1dSSVRFUl9OT05SRUNVUlNJVkVfTlAsCiAgUFRIUkVBRF9SV0xPQ0tfREVGQVVMVF9OUCA9IFBU
SFJFQURfUldMT0NLX1BSRUZFUl9XUklURVJfTlAKfTsKIyAxMzEgIi4uL2xpbnV4dGhyZWFkcy9z
eXNkZXBzL3B0aHJlYWQvcHRocmVhZC5oIgpzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIK
ewogIHZvaWQgKCpfX3JvdXRpbmUpICh2b2lkICopOwogIHZvaWQgKl9fYXJnOwogIGludCBfX2Nh
bmNlbHR5cGU7CiAgc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpfX3ByZXY7Cn07CgoK
CmVudW0KewogIFBUSFJFQURfQ0FOQ0VMX0VOQUJMRSwKCiAgUFRIUkVBRF9DQU5DRUxfRElTQUJM
RQoKfTsKZW51bQp7CiAgUFRIUkVBRF9DQU5DRUxfREVGRVJSRUQsCgogIFBUSFJFQURfQ0FOQ0VM
X0FTWU5DSFJPTk9VUwoKfTsKIyAxNjMgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQv
cHRocmVhZC5oIgpleHRlcm4gaW50IHB0aHJlYWRfY3JlYXRlIChwdGhyZWFkX3QgKl9fcmVzdHJp
Y3QgX190aHJlYWRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHB0aHJlYWRf
YXR0cl90ICpfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqKCpfX3N0YXJ0X3JvdXRpbmUpICh2b2lkICopLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpfX3Jlc3RyaWN0IF9fYXJnKSA7CgoKZXh0ZXJuIHB0aHJlYWRfdCBwdGhyZWFkX3Nl
bGYgKHZvaWQpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfZXF1YWwgKHB0aHJlYWRfdCBfX3RocmVh
ZDEsIHB0aHJlYWRfdCBfX3RocmVhZDIpIDsKCgpleHRlcm4gdm9pZCBwdGhyZWFkX2V4aXQgKHZv
aWQgKl9fcmV0dmFsKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4
dGVybiBpbnQgcHRocmVhZF9qb2luIChwdGhyZWFkX3QgX190aCwgdm9pZCAqKl9fdGhyZWFkX3Jl
dHVybikgOwoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9kZXRhY2ggKHB0aHJlYWRfdCBfX3RoKSA7
CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9pbml0IChwdGhyZWFkX2F0dHJfdCAqX19h
dHRyKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZGVzdHJveSAocHRocmVhZF9hdHRyX3Qg
Kl9fYXR0cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlIChwdGhy
ZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IF9fZGV0YWNoc3RhdGUpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRkZXRh
Y2hzdGF0ZSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2RldGFjaHN0YXRlKSA7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwYXJhbSAocHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3Qg
X19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0
cnVjdCBzY2hlZF9wYXJhbSAqX19yZXN0cmljdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX3BhcmFtKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRw
YXJhbSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19yZXN0cmljdCBfX3BhcmFtKQogICAg
IDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBvbGljeSAocHRocmVhZF9hdHRy
X3QgKl9fYXR0ciwgaW50IF9fcG9saWN5KQogICAgIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0
cl9nZXRzY2hlZHBvbGljeSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyLCBpbnQgKl9fcmVzdHJp
Y3QgX19wb2xpY3kpCiAgICAgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGluaGVyaXRz
Y2hlZCAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgX19pbmhlcml0KSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJf
Z2V0aW5oZXJpdHNjaGVkIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyLCBpbnQgKl9fcmVzdHJp
Y3QgX19pbmhlcml0KQogICAgIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY29wZSAo
cHRocmVhZF9hdHRyX3QgKl9fYXR0ciwgaW50IF9fc2NvcGUpCiAgICAgOwoKCmV4dGVybiBpbnQg
cHRocmVhZF9hdHRyX2dldHNjb3BlIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0
IF9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX3Njb3BlKSA7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGd1YXJkc2l6ZSAocHRo
cmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19ndWFyZHNpemUpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRndWFy
ZHNpemUgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHIsIHNpemVfdCAqX19yZXN0cmljdCBfX2d1YXJk
c2l6ZSkKICAgICA7CgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHN0YWNrYWRkciAo
cHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpfX3N0YWNrYWRkcikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHN0
YWNrYWRkciAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0ciwgdm9pZCAqKl9fcmVzdHJpY3QgX19zdGFj
a2FkZHIpCiAgICAgOwoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHN0YWNrIChwdGhy
ZWFkX2F0dHJfdCAqX19hdHRyLCB2b2lkICpfX3N0YWNrYWRkciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YWNrc2l6ZSkgOwoKCmV4dGVybiBpbnQgcHRocmVh
ZF9hdHRyX2dldHN0YWNrIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0IF9fYXR0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipfX3Jlc3RyaWN0IF9f
c3RhY2thZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jl
c3RyaWN0IF9fc3RhY2tzaXplKSA7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3Rh
Y2tzaXplIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX3N0YWNrc2l6ZSkgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9h
dHRyX2dldHN0YWNrc2l6ZSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0ciwgc2l6ZV90ICpfX3Jlc3Ry
aWN0IF9fc3RhY2tzaXplKQogICAgIDsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2dldGF0dHJfbnAg
KHB0aHJlYWRfdCBfX3RoLCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyKSA7CgoKCgoKCmV4dGVybiBp
bnQgcHRocmVhZF9zZXRzY2hlZHBhcmFtIChwdGhyZWFkX3QgX190YXJnZXRfdGhyZWFkLCBpbnQg
X19wb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVj
dCBzY2hlZF9wYXJhbSAqX19wYXJhbSkKICAgICA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2dldHNj
aGVkcGFyYW0gKHB0aHJlYWRfdCBfX3RhcmdldF90aHJlYWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19wb2xpY3ksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcmVzdHJpY3QgX19wYXJhbSkK
ICAgICA7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9nZXRjb25jdXJyZW5jeSAodm9pZCkgOwoKCmV4
dGVybiBpbnQgcHRocmVhZF9zZXRjb25jdXJyZW5jeSAoaW50IF9fbGV2ZWwpIDsKCgoKCgoKCmV4
dGVybiBpbnQgcHRocmVhZF95aWVsZCAodm9pZCkgOwoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRf
bXV0ZXhfaW5pdCAocHRocmVhZF9tdXRleF90ICpfX3Jlc3RyaWN0IF9fbXV0ZXgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fcmVz
dHJpY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbXV0ZXhfYXR0cikgOwoKCmV4
dGVybiBpbnQgcHRocmVhZF9tdXRleF9kZXN0cm95IChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgp
IDsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayAocHRocmVhZF9tdXRleF90ICpf
X211dGV4KSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2xvY2sgKHB0aHJlYWRfbXV0ZXhf
dCAqX19tdXRleCkgOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfdGltZWRsb2NrIChwdGhy
ZWFkX211dGV4X3QgKl9fcmVzdHJpY3QgX19tdXRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hYnN0aW1lKSA7CgoKCmV4dGVybiBpbnQgcHRo
cmVhZF9tdXRleF91bmxvY2sgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgOwoKCgoKCgpleHRl
cm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0
cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAocHRocmVhZF9tdXRl
eGF0dHJfdCAqX19hdHRyKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwc2hh
cmVkIChfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19hdHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3BzaGFyZWQpIDsKCgpleHRl
cm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfbXV0ZXhhdHRyX3Qg
Kl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19w
c2hhcmVkKSA7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlIChwdGhy
ZWFkX211dGV4YXR0cl90ICpfX2F0dHIsIGludCBfX2tpbmQpCiAgICAgOwoKCmV4dGVybiBpbnQg
cHRocmVhZF9tdXRleGF0dHJfZ2V0dHlwZSAoX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpf
X3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyLCBp
bnQgKl9fcmVzdHJpY3QgX19raW5kKSA7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF9p
bml0IChwdGhyZWFkX2NvbmRfdCAqX19yZXN0cmljdCBfX2NvbmQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uZF9hdHRyKSA7CgoKZXh0ZXJuIGludCBwdGhy
ZWFkX2NvbmRfZGVzdHJveSAocHRocmVhZF9jb25kX3QgKl9fY29uZCkgOwoKCmV4dGVybiBpbnQg
cHRocmVhZF9jb25kX3NpZ25hbCAocHRocmVhZF9jb25kX3QgKl9fY29uZCkgOwoKCmV4dGVybiBp
bnQgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCAocHRocmVhZF9jb25kX3QgKl9fY29uZCkgOwoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfY29uZF93YWl0IChwdGhyZWFkX2NvbmRfdCAqX19yZXN0cmljdCBf
X2NvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdCAqX19y
ZXN0cmljdCBfX211dGV4KSA7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfdGltZWR3YWl0
IChwdGhyZWFkX2NvbmRfdCAqX19yZXN0cmljdCBfX2NvbmQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHRocmVhZF9tdXRleF90ICpfX3Jlc3RyaWN0IF9fbXV0ZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9f
cmVzdHJpY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Fic3RpbWUpIDsK
CgoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9pbml0IChwdGhyZWFkX2NvbmRhdHRyX3Qg
Kl9fYXR0cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95IChwdGhyZWFk
X2NvbmRhdHRyX3QgKl9fYXR0cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9nZXRw
c2hhcmVkIChfX2NvbnN0IHB0aHJlYWRfY29uZGF0dHJfdCAqCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3BzaGFyZWQpIDsKCgpleHRl
cm4gaW50IHB0aHJlYWRfY29uZGF0dHJfc2V0cHNoYXJlZCAocHRocmVhZF9jb25kYXR0cl90ICpf
X2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19wc2hh
cmVkKSA7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX2luaXQgKHB0aHJlYWRfcnds
b2NrX3QgKl9fcmVzdHJpY3QgX19yd2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19yZXN0cmljdAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fYXR0cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tf
ZGVzdHJveSAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spIDsKCgpleHRlcm4gaW50IHB0aHJl
YWRfcndsb2NrX3JkbG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spIDsKCgpleHRlcm4g
aW50IHB0aHJlYWRfcndsb2NrX3RyeXJkbG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2sp
IDsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jayAocHRocmVhZF9yd2xv
Y2tfdCAqX19yZXN0cmljdCBfX3J3bG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hYnN0aW1lKSA7CgoKCmV4dGVybiBpbnQgcHRo
cmVhZF9yd2xvY2tfd3Jsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykgOwoKCmV4dGVy
biBpbnQgcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9j
aykgOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX3RpbWVkd3Jsb2NrIChwdGhyZWFkX3J3
bG9ja190ICpfX3Jlc3RyaWN0IF9fcndsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Fic3RpbWUpIDsKCgoKZXh0ZXJuIGludCBw
dGhyZWFkX3J3bG9ja191bmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKSA7CgoKCgoK
ZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja2F0dHJfaW5pdCAocHRocmVhZF9yd2xvY2thdHRyX3Qg
Kl9fYXR0cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2thdHRyX2Rlc3Ryb3kgKHB0aHJl
YWRfcndsb2NrYXR0cl90ICpfX2F0dHIpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0
cl9nZXRwc2hhcmVkIChfX2NvbnN0IHB0aHJlYWRfcndsb2NrYXR0cl90ICoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX2F0dHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3BzaGFy
ZWQpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9zZXRwc2hhcmVkIChwdGhyZWFk
X3J3bG9ja2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19wc2hhcmVkKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja2F0dHJf
Z2V0a2luZF9ucCAoX19jb25zdCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcHJlZikgOwoKCmV4dGVy
biBpbnQgcHRocmVhZF9yd2xvY2thdHRyX3NldGtpbmRfbnAgKHB0aHJlYWRfcndsb2NrYXR0cl90
ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X3ByZWYpIDsKIyA1MDkgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvcHRocmVhZC5o
IgpleHRlcm4gaW50IHB0aHJlYWRfc3Bpbl9pbml0IChwdGhyZWFkX3NwaW5sb2NrX3QgKl9fbG9j
aywgaW50IF9fcHNoYXJlZCkKICAgICA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3NwaW5fZGVzdHJv
eSAocHRocmVhZF9zcGlubG9ja190ICpfX2xvY2spIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfc3Bp
bl9sb2NrIChwdGhyZWFkX3NwaW5sb2NrX3QgKl9fbG9jaykgOwoKCmV4dGVybiBpbnQgcHRocmVh
ZF9zcGluX3RyeWxvY2sgKHB0aHJlYWRfc3BpbmxvY2tfdCAqX19sb2NrKSA7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX3NwaW5fdW5sb2NrIChwdGhyZWFkX3NwaW5sb2NrX3QgKl9fbG9jaykgOwoKCgoK
ZXh0ZXJuIGludCBwdGhyZWFkX2JhcnJpZXJfaW5pdCAocHRocmVhZF9iYXJyaWVyX3QgKl9fcmVz
dHJpY3QgX19iYXJyaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHB0aHJlYWRfYmFycmllcmF0dHJfdCAqX19yZXN0cmljdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2F0dHIsIHVuc2lnbmVkIGludCBfX2NvdW50KSA7CgpleHRlcm4gaW50IHB0
aHJlYWRfYmFycmllcl9kZXN0cm95IChwdGhyZWFkX2JhcnJpZXJfdCAqX19iYXJyaWVyKSA7Cgpl
eHRlcm4gaW50IHB0aHJlYWRfYmFycmllcmF0dHJfaW5pdCAocHRocmVhZF9iYXJyaWVyYXR0cl90
ICpfX2F0dHIpIDsKCmV4dGVybiBpbnQgcHRocmVhZF9iYXJyaWVyYXR0cl9kZXN0cm95IChwdGhy
ZWFkX2JhcnJpZXJhdHRyX3QgKl9fYXR0cikgOwoKZXh0ZXJuIGludCBwdGhyZWFkX2JhcnJpZXJh
dHRyX2dldHBzaGFyZWQgKF9fY29uc3QgcHRocmVhZF9iYXJyaWVyYXR0cl90ICoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19hdHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
cHNoYXJlZCkgOwoKZXh0ZXJuIGludCBwdGhyZWFkX2JhcnJpZXJhdHRyX3NldHBzaGFyZWQgKHB0
aHJlYWRfYmFycmllcmF0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fcHNoYXJlZCkgOwoKZXh0ZXJuIGludCBwdGhyZWFkX2JhcnJp
ZXJfd2FpdCAocHRocmVhZF9iYXJyaWVyX3QgKl9fYmFycmllcikgOwojIDU1NiAiLi4vbGludXh0
aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiCmV4dGVybiBpbnQgcHRocmVhZF9rZXlf
Y3JlYXRlIChwdGhyZWFkX2tleV90ICpfX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKCpfX2Rlc3RyX2Z1bmN0aW9uKSAodm9pZCAqKSkgOwoKCmV4dGVybiBpbnQgcHRo
cmVhZF9rZXlfZGVsZXRlIChwdGhyZWFkX2tleV90IF9fa2V5KSA7CgoKZXh0ZXJuIGludCBwdGhy
ZWFkX3NldHNwZWNpZmljIChwdGhyZWFkX2tleV90IF9fa2V5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19wb2ludGVyKSA7CgoKZXh0ZXJuIHZvaWQgKnB0
aHJlYWRfZ2V0c3BlY2lmaWMgKHB0aHJlYWRfa2V5X3QgX19rZXkpIDsKIyA1NzYgIi4uL2xpbnV4
dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvcHRocmVhZC5oIgpleHRlcm4gaW50IHB0aHJlYWRfb25j
ZSAocHRocmVhZF9vbmNlX3QgKl9fb25jZV9jb250cm9sLAogICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAoKl9faW5pdF9yb3V0aW5lKSAodm9pZCkpIDsKCgoKCgoKZXh0ZXJuIGludCBwdGhy
ZWFkX3NldGNhbmNlbHN0YXRlIChpbnQgX19zdGF0ZSwgaW50ICpfX29sZHN0YXRlKSA7CgoKCmV4
dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWx0eXBlIChpbnQgX190eXBlLCBpbnQgKl9fb2xkdHlw
ZSkgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jYW5jZWwgKHB0aHJlYWRfdCBfX2NhbmNlbHRocmVh
ZCkgOwoKCgoKZXh0ZXJuIHZvaWQgcHRocmVhZF90ZXN0Y2FuY2VsICh2b2lkKSA7CiMgNjEwICIu
Li9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFkL3B0aHJlYWQuaCIKZXh0ZXJuIHZvaWQgX3B0
aHJlYWRfY2xlYW51cF9wdXNoIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX3JvdXRpbmUp
ICh2b2lkICopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fYXJn
KSA7CgoKCgoKCgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3BvcCAoc3RydWN0IF9wdGhy
ZWFkX2NsZWFudXBfYnVmZmVyICpfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBfX2V4ZWN1dGUpIDsKIyA2MzEgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0
aHJlYWQvcHRocmVhZC5oIgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3B1c2hfZGVmZXIg
KHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19idWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fcm91dGluZSkgKHZvaWQgKiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19hcmcpIDsKIyA2
NDIgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvcHRocmVhZC5oIgpleHRlcm4gdm9p
ZCBfcHRocmVhZF9jbGVhbnVwX3BvcF9yZXN0b3JlIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9i
dWZmZXIgKl9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX19leGVjdXRlKSA7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2dldGNwdWNsb2NraWQg
KHB0aHJlYWRfdCBfX3RocmVhZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsb2NraWRfdCAqX19jbG9ja19pZCkgOwoKCgoKIyAxICIuLi9saW51eHRocmVhZHMvc3lzZGVw
cy91bml4L3N5c3YvbGludXgvYml0cy9zaWd0aHJlYWQuaCIgMQojIDMxICIuLi9saW51eHRocmVh
ZHMvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zaWd0aHJlYWQuaCIKZXh0ZXJuIGludCBw
dGhyZWFkX3NpZ21hc2sgKGludCBfX2hvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgX19zaWdzZXRfdCAqX19yZXN0cmljdCBfX25ld21hc2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fb2xkbWFzayk7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2tpbGwgKHB0aHJlYWRfdCBfX3RocmVhZGlkLCBpbnQgX19zaWdubykgOwojIDY1
NiAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiIDIKIyA2NzEgIi4u
L2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvcHRocmVhZC5oIgpleHRlcm4gaW50IHB0aHJl
YWRfYXRmb3JrICh2b2lkICgqX19wcmVwYXJlKSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICgqX19jaGlsZCkgKHZvaWQpKSA7CgoKCgpleHRlcm4gdm9pZCBwdGhyZWFkX2tpbGxf
b3RoZXJfdGhyZWFkc19ucCAodm9pZCkgOwoKCiMgMiAiLi4vaW5jbHVkZS9wdGhyZWFkLmgiIDIK
CgpleHRlcm4gdm9pZCBfX3B0aHJlYWRfaW5pdGlhbGl6ZSAodm9pZCkgX19hdHRyaWJ1dGVfXyAo
KHdlYWspKTsKIyAyNSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL2xpYmMt
bG9jay5oIiAyCgoKCnR5cGVkZWYgcHRocmVhZF9tdXRleF90IF9fbGliY19sb2NrX3Q7CnR5cGVk
ZWYgc3RydWN0IHsgcHRocmVhZF9tdXRleF90IG11dGV4OyB9IF9fbGliY19sb2NrX3JlY3Vyc2l2
ZV90OwoKdHlwZWRlZiBwdGhyZWFkX3J3bG9ja190IF9fbGliY19yd2xvY2tfdDsKIyA0MiAiLi4v
bGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL2xpYmMtbG9jay5oIgp0eXBlZGVmIHB0
aHJlYWRfa2V5X3QgX19saWJjX2tleV90OwojIDIyMSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMv
cHRocmVhZC9iaXRzL2xpYmMtbG9jay5oIgpleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF9pbml0
IChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqX19tdXRleF9hdHRyKTsKCmV4dGVybiBp
bnQgX19wdGhyZWFkX211dGV4X2Rlc3Ryb3kgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCk7Cgpl
eHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF90cnlsb2NrIChwdGhyZWFkX211dGV4X3QgKl9fbXV0
ZXgpOwoKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfbG9jayAocHRocmVhZF9tdXRleF90ICpf
X211dGV4KTsKCmV4dGVybiBpbnQgX19wdGhyZWFkX211dGV4X3VubG9jayAocHRocmVhZF9tdXRl
eF90ICpfX211dGV4KTsKCmV4dGVybiBpbnQgX19wdGhyZWFkX211dGV4YXR0cl9pbml0IChwdGhy
ZWFkX211dGV4YXR0cl90ICpfX2F0dHIpOwoKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhhdHRy
X2Rlc3Ryb3kgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0cik7CgpleHRlcm4gaW50IF9fcHRo
cmVhZF9tdXRleGF0dHJfc2V0dHlwZSAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fa2luZCk7CgoKZXh0ZXJu
IGludCBfX3B0aHJlYWRfcndsb2NrX2luaXQgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBwdGhyZWFkX3J3bG9ja2F0
dHJfdCAqX19hdHRyKTsKCmV4dGVybiBpbnQgX19wdGhyZWFkX3J3bG9ja19kZXN0cm95IChwdGhy
ZWFkX3J3bG9ja190ICpfX3J3bG9jayk7CgpleHRlcm4gaW50IF9fcHRocmVhZF9yd2xvY2tfcmRs
b2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jayk7CgpleHRlcm4gaW50IF9fcHRocmVhZF9y
d2xvY2tfdHJ5cmRsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jayk7CgpleHRlcm4gaW50
IF9fcHRocmVhZF9yd2xvY2tfd3Jsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jayk7Cgpl
eHRlcm4gaW50IF9fcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrIChwdGhyZWFkX3J3bG9ja190ICpf
X3J3bG9jayk7CgpleHRlcm4gaW50IF9fcHRocmVhZF9yd2xvY2tfdW5sb2NrIChwdGhyZWFkX3J3
bG9ja190ICpfX3J3bG9jayk7CgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfa2V5X2NyZWF0ZSAocHRo
cmVhZF9rZXlfdCAqX19rZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KCpfX2Rlc3RyX2Z1bmN0aW9uKSAodm9pZCAqKSk7CgpleHRlcm4gaW50IF9fcHRocmVhZF9zZXRz
cGVjaWZpYyAocHRocmVhZF9rZXlfdCBfX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3Qgdm9pZCAqX19wb2ludGVyKTsKCmV4dGVybiB2b2lkICpfX3B0aHJlYWRf
Z2V0c3BlY2lmaWMgKHB0aHJlYWRfa2V5X3QgX19rZXkpOwoKZXh0ZXJuIGludCBfX3B0aHJlYWRf
b25jZSAocHRocmVhZF9vbmNlX3QgKl9fb25jZV9jb250cm9sLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICgqX19pbml0X3JvdXRpbmUpICh2b2lkKSk7CgpleHRlcm4gaW50IF9fcHRo
cmVhZF9hdGZvcmsgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICgqX19jaGlsZCkgKHZvaWQpKTsKIyAyNzggIi4uL2xpbnV4dGhyZWFkcy9z
eXNkZXBzL3B0aHJlYWQvYml0cy9saWJjLWxvY2suaCIKIyAxICIuLi9zeXNkZXBzL2dlbmVyaWMv
YnAtc3ltLmgiIDEKIyAyNzkgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvYml0cy9s
aWJjLWxvY2suaCIgMgoKCgphc20gKCIud2VhayAiICJfX3B0aHJlYWRfbXV0ZXhfaW5pdCIpOwph
c20gKCIud2VhayAiICJfX3B0aHJlYWRfbXV0ZXhfZGVzdHJveSIpOwphc20gKCIud2VhayAiICJf
X3B0aHJlYWRfbXV0ZXhfbG9jayIpOwphc20gKCIud2VhayAiICJfX3B0aHJlYWRfbXV0ZXhfdHJ5
bG9jayIpOwphc20gKCIud2VhayAiICJfX3B0aHJlYWRfbXV0ZXhfdW5sb2NrIik7CmFzbSAoIi53
ZWFrICIgIl9fcHRocmVhZF9tdXRleGF0dHJfaW5pdCIpOwphc20gKCIud2VhayAiICJfX3B0aHJl
YWRfbXV0ZXhhdHRyX2Rlc3Ryb3kiKTsKYXNtICgiLndlYWsgIiAiX19wdGhyZWFkX211dGV4YXR0
cl9zZXR0eXBlIik7CmFzbSAoIi53ZWFrICIgIl9fcHRocmVhZF9yd2xvY2tfaW5pdCIpOwphc20g
KCIud2VhayAiICJfX3B0aHJlYWRfcndsb2NrX2Rlc3Ryb3kiKTsKYXNtICgiLndlYWsgIiAiX19w
dGhyZWFkX3J3bG9ja19yZGxvY2siKTsKYXNtICgiLndlYWsgIiAiX19wdGhyZWFkX3J3bG9ja190
cnlyZGxvY2siKTsKYXNtICgiLndlYWsgIiAiX19wdGhyZWFkX3J3bG9ja193cmxvY2siKTsKYXNt
ICgiLndlYWsgIiAiX19wdGhyZWFkX3J3bG9ja190cnl3cmxvY2siKTsKYXNtICgiLndlYWsgIiAi
X19wdGhyZWFkX3J3bG9ja191bmxvY2siKTsKYXNtICgiLndlYWsgIiAiX19wdGhyZWFkX2tleV9j
cmVhdGUiKTsKYXNtICgiLndlYWsgIiAiX19wdGhyZWFkX3NldHNwZWNpZmljIik7CmFzbSAoIi53
ZWFrICIgIl9fcHRocmVhZF9nZXRzcGVjaWZpYyIpOwphc20gKCIud2VhayAiICJfX3B0aHJlYWRf
b25jZSIpOwphc20gKCIud2VhayAiICJfX3B0aHJlYWRfaW5pdGlhbGl6ZSIpOwphc20gKCIud2Vh
ayAiICJfX3B0aHJlYWRfYXRmb3JrIik7CmFzbSAoIi53ZWFrICIgIl9wdGhyZWFkX2NsZWFudXBf
cHVzaF9kZWZlciIpOwphc20gKCIud2VhayAiICJfcHRocmVhZF9jbGVhbnVwX3BvcF9yZXN0b3Jl
Iik7CiMgMjkgInZmcHJpbnRmLmMiIDIKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9z
eXMvcGFyYW0uaCIgMQojIDIyICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zeXMvcGFyYW0u
aCIKIyAxICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAxCiMgMTQ0ICIuLi9pbmNsdWRlL2xpbWl0cy5o
IgojIDEgIi4uL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEKIyAxNDUgIi4uL2luY2x1ZGUv
bGltaXRzLmgiIDIKCgoKIyAxICIuLi9pbmNsdWRlL2JpdHMvcG9zaXgyX2xpbS5oIiAxCiMgMTQ5
ICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCiMgMjMgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L3N5cy9wYXJhbS5oIiAyCgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2tlcm5lbC1oZWFk
ZXJzL2xpbnV4L3BhcmFtLmgiIDEgMyA0CgoKCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQv
a2VybmVsLWhlYWRlcnMvYXNtL3BhcmFtLmgiIDEgMyA0CgoKCiMgMSAiL3Vzci9zcmMvcGFja2Fn
ZXMvQlVJTEQva2VybmVsLWhlYWRlcnMvYXNtLXg4Nl82NC9wYXJhbS5oIiAxIDMgNAojIDUgIi91
c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2tlcm5lbC1oZWFkZXJzL2FzbS9wYXJhbS5oIiAyIDMgNAoj
IDUgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2tlcm5lbC1oZWFkZXJzL2xpbnV4L3BhcmFtLmgi
IDIgMyA0CiMgMjUgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3N5cy9wYXJhbS5oIiAyCiMg
NDIgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3N5cy9wYXJhbS5oIgojIDEgIi4uL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDEKIyA0MyAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvc3lzL3Bh
cmFtLmgiIDIKIyAzMCAidmZwcmludGYuYyIgMgojIDEgIl9pdG9hLmgiIDEKIyAyMiAiX2l0b2Eu
aCIKIyAxICIuLi9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxCiMgMjMgIl9pdG9hLmgiIDIKCgoKCgoK
ZXh0ZXJuIGNoYXIgKl9pdG9hICh1bnNpZ25lZCBsb25nIGxvbmcgaW50IHZhbHVlLCBjaGFyICpi
dWZsaW0sCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJhc2UsIGludCB1cHBlcl9j
YXNlKTsKCmV4dGVybiBjb25zdCBjaGFyIF9pdG9hX3VwcGVyX2RpZ2l0c1tdOwpleHRlcm4gY29u
c3QgY2hhciBfaXRvYV91cHBlcl9kaWdpdHNfaW50ZXJuYWxbXSBfX2F0dHJpYnV0ZV9fICgodmlz
aWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBjb25zdCBjaGFyIF9pdG9hX2xvd2VyX2RpZ2l0
c1tdOwpleHRlcm4gY29uc3QgY2hhciBfaXRvYV9sb3dlcl9kaWdpdHNfaW50ZXJuYWxbXSBfX2F0
dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgpzdGF0aWMgaW5saW5lIGNoYXIg
KiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKX2l0b2Ffd29yZCAodW5zaWduZWQgbG9uZyB2YWx1
ZSwgY2hhciAqYnVmbGltLAogICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZSwgaW50IHVwcGVy
X2Nhc2UpCnsKICBjb25zdCBjaGFyICpkaWdpdHMgPSAodXBwZXJfY2FzZQoKICAgICAgICAgICAg
ICAgICAgICAgICAgPyBfaXRvYV91cHBlcl9kaWdpdHNfaW50ZXJuYWwKICAgICAgICAgICAgICAg
ICAgICAgICAgOiBfaXRvYV9sb3dlcl9kaWdpdHNfaW50ZXJuYWwKCgoKCiAgICAgICAgICAgICAg
ICAgICAgICAgKTsKCiAgc3dpdGNoIChiYXNlKQogICAgewoKCgoKCgoKICAgICAgY2FzZSAxMDog
ZG8gKi0tYnVmbGltID0gZGlnaXRzW3ZhbHVlICUgMTBdOyB3aGlsZSAoKHZhbHVlIC89IDEwKSAh
PSAwKTsgYnJlYWs7CiAgICAgIGNhc2UgMTY6IGRvICotLWJ1ZmxpbSA9IGRpZ2l0c1t2YWx1ZSAl
IDE2XTsgd2hpbGUgKCh2YWx1ZSAvPSAxNikgIT0gMCk7IGJyZWFrOwogICAgICBjYXNlIDg6IGRv
ICotLWJ1ZmxpbSA9IGRpZ2l0c1t2YWx1ZSAlIDhdOyB3aGlsZSAoKHZhbHVlIC89IDgpICE9IDAp
OyBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIGRvCiAgICAgICAgKi0tYnVmbGltID0gZGlnaXRz
W3ZhbHVlICUgYmFzZV07CiAgICAgIHdoaWxlICgodmFsdWUgLz0gYmFzZSkgIT0gMCk7CiAgICB9
CiAgcmV0dXJuIGJ1ZmxpbTsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIF9fYXR0cmlidXRlX18g
KCh1bnVzZWQpKQpfZml0b2Ffd29yZCAodW5zaWduZWQgbG9uZyB2YWx1ZSwgY2hhciAqYnVmLCB1
bnNpZ25lZCBpbnQgYmFzZSwgaW50IHVwcGVyX2Nhc2UpCnsKICBjaGFyIHRtcGJ1ZltzaXplb2Yg
KHZhbHVlKSAqIDRdOwogIGNoYXIgKmNwID0gX2l0b2Ffd29yZCAodmFsdWUsIHRtcGJ1ZiArIHNp
emVvZiAodmFsdWUpICogNCwgYmFzZSwgdXBwZXJfY2FzZSk7CiAgd2hpbGUgKGNwIDwgdG1wYnVm
ICsgc2l6ZW9mICh2YWx1ZSkgKiA0KQogICAgKmJ1ZisrID0gKmNwKys7CiAgcmV0dXJuIGJ1ZjsK
fQoKc3RhdGljIGlubGluZSBjaGFyICogX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCl9maXRvYSAo
dW5zaWduZWQgbG9uZyBsb25nIHZhbHVlLCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBiYXNlLCBp
bnQgdXBwZXJfY2FzZSkKewogIGNoYXIgdG1wYnVmW3NpemVvZiAodmFsdWUpICogNF07CiAgY2hh
ciAqY3AgPSBfaXRvYSAodmFsdWUsIHRtcGJ1ZiArIHNpemVvZiAodmFsdWUpICogNCwgYmFzZSwg
dXBwZXJfY2FzZSk7CiAgd2hpbGUgKGNwIDwgdG1wYnVmICsgc2l6ZW9mICh2YWx1ZSkgKiA0KQog
ICAgKmJ1ZisrID0gKmNwKys7CiAgcmV0dXJuIGJ1ZjsKfQojIDMxICJ2ZnByaW50Zi5jIiAyCgoj
IDEgIi4uL2luY2x1ZGUvc3RkaW8uaCIgMQoKCgoKIyAxICIuLi9saWJpby9zdGRpby5oIiAxCiMg
MzAgIi4uL2xpYmlvL3N0ZGlvLmgiCgoKCgojIDEgIi91c3IvbGliNjQvZ2NjLWxpYi94ODZfNjQt
c3VzZS1saW51eC8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzNSAiLi4vbGliaW8vc3Rk
aW8uaCIgMgojIDcyICIuLi9saWJpby9zdGRpby5oIgojIDEgIi4uL2luY2x1ZGUvbGliaW8uaCIg
MQojIDEgIi4uL2xpYmlvL2xpYmlvLmgiIDEKIyAzMiAiLi4vbGliaW8vbGliaW8uaCIKIyAxICIu
Li9zeXNkZXBzL2dudS9fR19jb25maWcuaCIgMQojIDE0ICIuLi9zeXNkZXBzL2dudS9fR19jb25m
aWcuaCIKIyAxICIvdXNyL2xpYjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTUgIi4uL3N5c2RlcHMvZ251L19HX2NvbmZpZy5oIiAyCiMg
MjYgIi4uL3N5c2RlcHMvZ251L19HX2NvbmZpZy5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZf
dCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1
Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2
NF90OwojIDQ0ICIuLi9zeXNkZXBzL2dudS9fR19jb25maWcuaCIKIyAxICIuLi9pbmNsdWRlL2dj
b252LmgiIDEKIyAxICIuLi9pY29udi9nY29udi5oIiAxCiMgMzEgIi4uL2ljb252L2djb252Lmgi
CiMgMSAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMgNAojIDMyICIuLi9pY29udi9nY29udi5oIiAyCgoKCgoKZW51bQp7CiAgX19H
Q09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NPTlZf
Tk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwKICBf
X0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoKICBfX0dD
T05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07CgoKCmVu
dW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJPUlMg
PSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3RlcF9k
YXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFuc19k
YXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAq
LCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50LCBp
bnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0
ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0
ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19nY29u
dl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19nY29u
dl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2Nv
bnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFu
c19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAo
Kl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBlZGVm
IHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2NvbnZf
dHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2NvbnZf
dHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5zX2Vu
ZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29udl90
cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBf
X2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAqX19t
b2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFyICpf
X3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19pbml0
X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVkZWRf
ZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsKICBp
bnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsK
fTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1
ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoKICBp
bnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21i
c3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19n
Y29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252X2lu
Zm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBzOwog
IF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAqX19n
Y29udl90OwojIDIgIi4uL2luY2x1ZGUvZ2NvbnYuaCIgMgojIDQ1ICIuLi9zeXNkZXBzL2dudS9f
R19jb25maWcuaCIgMgp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7
CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9f
Z2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5
cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7
CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p
KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKIyAzMyAiLi4vbGliaW8vbGliaW8uaCIgMgoj
IDE2MiAiLi4vbGliaW8vbGliaW8uaCIKc3RydWN0IF9JT19qdW1wX3Q7IHN0cnVjdCBfSU9fRklM
RTsKIyAxNzIgIi4uL2xpYmlvL2xpYmlvLmgiCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoK
CnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0
IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTUgIi4uL2xpYmlvL2xpYmlvLmgi
Cn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0
X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9ub2NvbnYKfTsKCgoKCnN0
cnVjdCBfSU9fY29kZWN2dAp7CiAgdm9pZCAoKl9fY29kZWN2dF9kZXN0cikgKHN0cnVjdCBfSU9f
Y29kZWN2dCAqKTsKICBlbnVtIF9fY29kZWN2dF9yZXN1bHQgKCpfX2NvZGVjdnRfZG9fb3V0KSAo
c3RydWN0IF9JT19jb2RlY3Z0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fbWJzdGF0ZV90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90ICoqLCBjaGFyICosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgY2hhciAqKik7CiAg
ZW51bSBfX2NvZGVjdnRfcmVzdWx0ICgqX19jb2RlY3Z0X2RvX3Vuc2hpZnQpIChzdHJ1Y3QgX0lP
X2NvZGVjdnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fbWJzdGF0ZV90ICosIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgY2hhciAqKik7CiAgZW51bSBfX2NvZGVjdnRfcmVz
dWx0ICgqX19jb2RlY3Z0X2RvX2luKSAoc3RydWN0IF9JT19jb2RlY3Z0ICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYnN0YXRlX3QgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICoqLCB3Y2hhcl90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2NoYXJfdCAqLCB3Y2hhcl90ICoqKTsKICBpbnQgKCpfX2NvZGVjdnRfZG9fZW5jb2Rp
bmcpIChzdHJ1Y3QgX0lPX2NvZGVjdnQgKik7CiAgaW50ICgqX19jb2RlY3Z0X2RvX2Fsd2F5c19u
b2NvbnYpIChzdHJ1Y3QgX0lPX2NvZGVjdnQgKik7CiAgaW50ICgqX19jb2RlY3Z0X2RvX2xlbmd0
aCkgKHN0cnVjdCBfSU9fY29kZWN2dCAqLCBfX21ic3RhdGVfdCAqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICBpbnQg
KCpfX2NvZGVjdnRfZG9fbWF4X2xlbmd0aCkgKHN0cnVjdCBfSU9fY29kZWN2dCAqKTsKCiAgX0df
aWNvbnZfdCBfX2NkX2luOwogIF9HX2ljb252X3QgX19jZF9vdXQ7Cn07CgoKc3RydWN0IF9JT193
aWRlX2RhdGEKewogIHdjaGFyX3QgKl9JT19yZWFkX3B0cjsKICB3Y2hhcl90ICpfSU9fcmVhZF9l
bmQ7CiAgd2NoYXJfdCAqX0lPX3JlYWRfYmFzZTsKICB3Y2hhcl90ICpfSU9fd3JpdGVfYmFzZTsK
ICB3Y2hhcl90ICpfSU9fd3JpdGVfcHRyOwogIHdjaGFyX3QgKl9JT193cml0ZV9lbmQ7CiAgd2No
YXJfdCAqX0lPX2J1Zl9iYXNlOwogIHdjaGFyX3QgKl9JT19idWZfZW5kOwoKICB3Y2hhcl90ICpf
SU9fc2F2ZV9iYXNlOwogIHdjaGFyX3QgKl9JT19iYWNrdXBfYmFzZTsKCiAgd2NoYXJfdCAqX0lP
X3NhdmVfZW5kOwoKICBfX21ic3RhdGVfdCBfSU9fc3RhdGU7CiAgX19tYnN0YXRlX3QgX0lPX2xh
c3Rfc3RhdGU7CiAgc3RydWN0IF9JT19jb2RlY3Z0IF9jb2RlY3Z0OwoKICB3Y2hhcl90IF9zaG9y
dGJ1ZlsxXTsKCiAgc3RydWN0IF9JT19qdW1wX3QgKl93aWRlX3Z0YWJsZTsKfTsKCgpzdHJ1Y3Qg
X0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFy
KiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVf
YmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hh
ciogX0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9i
YXNlOwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0
cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47Cgog
IGludCBfZmlsZW5vOwoKCgogIGludCBfZmxhZ3MyOwoKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoK
CgogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zm
c2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMxMSAi
Li4vbGliaW8vbGliaW8uaCIKICBfX29mZjY0X3QgX29mZnNldDsKCgogIHN0cnVjdCBfSU9fY29k
ZWN2dCAqX2NvZGVjdnQ7CiAgc3RydWN0IF9JT193aWRlX2RhdGEgKl93aWRlX2RhdGE7CgoKCgog
IGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAoaW50KSAtIDIgKiBzaXpl
b2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpz
dHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8x
X3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0
ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKCgoKCgpleHRlcm4gX0lP
X0ZJTEUgKl9JT19zdGRpbiBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7
CmV4dGVybiBfSU9fRklMRSAqX0lPX3N0ZG91dCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAo
ImhpZGRlbiIpKSk7CmV4dGVybiBfSU9fRklMRSAqX0lPX3N0ZGVyciBfX2F0dHJpYnV0ZV9fICgo
dmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3Jl
YWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoK
CgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2Nv
bnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9f
b2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZv
aWQgKl9fY29va2llKTsKCgoKCnR5cGVkZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0
aW9uX3Q7CnR5cGVkZWYgX19pb193cml0ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlw
ZWRlZiBfX2lvX3NlZWtfZm4gY29va2llX3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Ns
b3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5jdGlvbl90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBfX2lv
X3JlYWRfZm4gKnJlYWQ7CiAgX19pb193cml0ZV9mbiAqd3JpdGU7CiAgX19pb19zZWVrX2ZuICpz
ZWVrOwogIF9faW9fY2xvc2VfZm4gKmNsb3NlOwp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Q7
CnR5cGVkZWYgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7
CgpzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlOwoKCmV4dGVybiB2b2lkIF9JT19jb29raWVfaW5pdCAo
c3RydWN0IF9JT19jb29raWVfZmlsZSAqX19jZmlsZSwgaW50IF9fcmVhZF93cml0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2Nvb2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5j
dGlvbnNfdCBfX2Zucyk7CgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAq
KSA7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZs
b3cgKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJ
TEUgKikgOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50
X3QgX193b3ZlcmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwojIDQzMiAiLi4vbGliaW8vbGli
aW8uaCIKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBf
SU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAo
X0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkg
OwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCkgOwoKCgoKCmV4
dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1
bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lP
X0ZJTEUgKikgOwojIDQ2MiAiLi4vbGliaW8vbGliaW8uaCIKZXh0ZXJuIGludCBfSU9fdmZzY2Fu
ZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0cmljdCkgOwpleHRl
cm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9f
cmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRl
cm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgOwpleHRl
cm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVy
biBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQp
IDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBp
bnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CgoK
ZXh0ZXJuIHdpbnRfdCBfSU9fZ2V0d2MgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiB3aW50X3Qg
X0lPX3B1dHdjICh3Y2hhcl90IF9fd2MsIF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lP
X2Z3aWRlIChfSU9fRklMRSAqX19mcCwgaW50IF9fbW9kZSkgOwoKCgoKIyAxICIuLi9pbmNsdWRl
L3NobGliLWNvbXBhdC5oIiAxCiMgMjYgIi4uL2luY2x1ZGUvc2hsaWItY29tcGF0LmgiCiMgMSAi
L3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvZ2xpYmMtMi4zL2NjL2FiaS12ZXJzaW9ucy5oIiAxCiMg
MjcgIi4uL2luY2x1ZGUvc2hsaWItY29tcGF0LmgiIDIKIyA0ODMgIi4uL2xpYmlvL2xpYmlvLmgi
IDIKIyA1MTEgIi4uL2xpYmlvL2xpYmlvLmgiCmV4dGVybiBpbnQgX0lPX3Zmd3NjYW5mIChfSU9f
RklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IHdjaGFyX3QgKiBfX3Jlc3RyaWN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0cmljdCkgOwpleHRlcm4g
aW50IF9JT192ZndwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCB3Y2hhcl90ICpf
X3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7CmV4
dGVybiBfX3NzaXplX3QgX0lPX3dwYWRuIChfSU9fRklMRSAqLCB3aW50X3QsIF9fc3NpemVfdCkg
OwpleHRlcm4gdm9pZCBfSU9fZnJlZV93YmFja3VwX2FyZWEgKF9JT19GSUxFICopIDsKIyAyICIu
Li9pbmNsdWRlL2xpYmlvLmgiIDIKCgoKCmV4dGVybiBfX3R5cGVvZiAoX19vdmVyZmxvdykgX19H
SV9fX292ZXJmbG93OyBleHRlcm4gX190eXBlb2YgKF9fb3ZlcmZsb3cpIF9fb3ZlcmZsb3cgX19h
c21fXyAoIiIgIl9fR0lfX19vdmVyZmxvdyIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgi
aGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3VuZGVyZmxvdykgX19HSV9fX3VuZGVyZmxv
dzsgZXh0ZXJuIF9fdHlwZW9mIChfX3VuZGVyZmxvdykgX191bmRlcmZsb3cgX19hc21fXyAoIiIg
Il9fR0lfX191bmRlcmZsb3ciKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIp
KSk7CmV4dGVybiBfX3R5cGVvZiAoX191ZmxvdykgX19HSV9fX3VmbG93OyBleHRlcm4gX190eXBl
b2YgKF9fdWZsb3cpIF9fdWZsb3cgX19hc21fXyAoIiIgIl9fR0lfX191ZmxvdyIpIF9fYXR0cmli
dXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3dvdmVy
ZmxvdykgX19HSV9fX3dvdmVyZmxvdzsgZXh0ZXJuIF9fdHlwZW9mIChfX3dvdmVyZmxvdykgX193
b3ZlcmZsb3cgX19hc21fXyAoIiIgIl9fR0lfX193b3ZlcmZsb3ciKSBfX2F0dHJpYnV0ZV9fICgo
dmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX193dW5kZXJmbG93KSBf
X0dJX19fd3VuZGVyZmxvdzsgZXh0ZXJuIF9fdHlwZW9mIChfX3d1bmRlcmZsb3cpIF9fd3VuZGVy
ZmxvdyBfX2FzbV9fICgiIiAiX19HSV9fX3d1bmRlcmZsb3ciKSBfX2F0dHJpYnV0ZV9fICgodmlz
aWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX193dWZsb3cpIF9fR0lfX193
dWZsb3c7IGV4dGVybiBfX3R5cGVvZiAoX193dWZsb3cpIF9fd3VmbG93IF9fYXNtX18gKCIiICJf
X0dJX19fd3VmbG93IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoj
IDczICIuLi9saWJpby9zdGRpby5oIiAyCiMgODYgIi4uL2xpYmlvL3N0ZGlvLmgiCgoKdHlwZWRl
ZiBfR19mcG9zX3QgZnBvc190OwoKCgoKCnR5cGVkZWYgX0dfZnBvczY0X3QgZnBvczY0X3Q7CiMg
MTM4ICIuLi9saWJpby9zdGRpby5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJj
LTIuMy9jYy9iaXRzL3N0ZGlvX2xpbS5oIiAxCiMgMTM5ICIuLi9saWJpby9zdGRpby5oIiAyCgoK
CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGluOwpleHRlcm4gc3RydWN0IF9JT19GSUxFICpz
dGRvdXQ7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGVycjsKCgoKCgoKCmV4dGVybiBpbnQg
cmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKCmV4dGVybiBpbnQgcmVuYW1lIChf
X2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSA7CgoKCgoKCmV4dGVybiBG
SUxFICp0bXBmaWxlICh2b2lkKSA7CiMgMTcxICIuLi9saWJpby9zdGRpby5oIgpleHRlcm4gY2hh
ciAqdG1wbmFtIChjaGFyICpfX3MpIDsKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkg
OwoKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSA7CiMgMTkzICIuLi9saWJp
by9zdGRpby5oIgpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19j
b25zdCBjaGFyICpfX3BmeCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoK
CmV4dGVybiBpbnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1c2gg
KEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmNsb3NlYWxsICh2b2lkKSA7CgoKCgoKCmV4dGVy
biBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKCmV4dGVy
biBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAg
ICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwojIDIzOSAiLi4v
bGliaW8vc3RkaW8uaCIKCgpleHRlcm4gRklMRSAqZm9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19tb2RlcykgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBf
X2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW5jb29raWUgKHZv
aWQgKl9fcmVzdHJpY3QgX19tYWdpY19jb29raWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lvX2Z1bmNzKSA7CgoKZXh0ZXJuIEZJTEUg
KmZtZW1vcGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgX19jb25zdCBjaGFyICpfX21vZGVz
KSA7CgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9f
YnVmbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBf
X3NpemVsb2MpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAo
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgOwoKCgoKCmV4dGVybiB2b2lk
IHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBf
X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKSA7CgoKZXh0ZXJuIHZv
aWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gaW50IGZwcmludGYg
KEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgcHJpbnRmIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzcHJpbnRm
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgpleHRlcm4gaW50IHZwcmlu
dGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19h
cmcpCiAgICAgOwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19n
bnVjX3ZhX2xpc3QgX19hcmcpIDsKCgoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgoK
CgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xp
c3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIs
IDApKSk7CmV4dGVybiBpbnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4p
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4
dGVybiBpbnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IHZk
cHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAgICAg
ICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQg
X19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgoKZXh0ZXJuIGludCBm
c2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzY2FuZiAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc3Nj
YW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgoKCgpleHRlcm4gaW50IHZm
c2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gaW50
IHZzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlz
dCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAw
KSkpOwoKCmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywK
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3Nj
YW5mX18sIDIsIDApKSk7CgoKCgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3RyZWFtKSA7
CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IGdldGNoYXIg
KHZvaWQpIDsKCgoKCgoKCgpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt
KSA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBm
Z2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gaW50IGZwdXRjIChp
bnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJTEUg
Kl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSA7CgoKCgoKCgoKZXh0
ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4
dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJu
IGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7CgoKCgoKZXh0ZXJuIGludCBnZXR3IChG
SUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJl
YW0pIDsKCgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIDsKCgoKZXh0ZXJuIGNoYXIgKmdl
dHMgKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CiMgNDYxICIuLi9saWJpby9zdGRpby5oIgpleHRlcm4g
X19zc2l6ZV90IF9fZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2Rl
bGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0pIDsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3Qg
X19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmlj
dCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRsaW5lIChjaGFy
ICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgKl9fcmVzdHJpY3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgOwoKCmV4dGVy
biBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoKZXh0ZXJuIGludCB1bmdldGMgKGlu
dCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9f
cmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCmV4dGVybiBzaXplX3QgZndyaXRl
IChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcykgOwoKCgoKZXh0
ZXJuIGludCBmcHV0c191bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoK
ZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6
ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAo
X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSkgOwoKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29m
ZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFt
KSA7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CgojIDUyOCAiLi4vbGli
aW8vc3RkaW8uaCIKZXh0ZXJuIGludCBmc2Vla28gKEZJTEUgKl9fc3RyZWFtLCBfX29mZl90IF9f
b2ZmLCBpbnQgX193aGVuY2UpIDsKCmV4dGVybiBfX29mZl90IGZ0ZWxsbyAoRklMRSAqX19zdHJl
YW0pIDsKIyA1NDQgIi4uL2xpYmlvL3N0ZGlvLmgiCgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIDsK
CmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3Bv
cykgOwojIDU2MyAiLi4vbGliaW8vc3RkaW8uaCIKCgoKZXh0ZXJuIGludCBmc2Vla282NCAoRklM
RSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CmV4dGVybiBfX29m
ZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmdldHBvczY0IChG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0cmljdCBfX3BvcykKICAg
ICA7CmV4dGVybiBpbnQgZnNldHBvczY0IChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zNjRf
dCAqX19wb3MpIDsKCgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoK
ZXh0ZXJuIGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJ
TEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpl
eHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4g
dm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgoKCiMgMSAiLi4vc3lzZGVwcy91
bml4L3N5c3YvbGludXgvYml0cy9zeXNfZXJybGlzdC5oIiAxCiMgMjcgIi4uL3N5c2RlcHMvdW5p
eC9zeXN2L2xpbnV4L2JpdHMvc3lzX2Vycmxpc3QuaCIKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0
ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5
c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwojIDYw
MCAiLi4vbGliaW8vc3RkaW8uaCIgMgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3Ry
ZWFtKSA7CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsK
CgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25z
dCBjaGFyICpfX21vZGVzKSA7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgOwoKCgoKCmV4dGVybiBjaGFy
ICpjdXNlcmlkIChjaGFyICpfX3MpIDsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQg
b2JzdGFja19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMp
KSk7CmV4dGVybiBpbnQgb2JzdGFja192cHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmlj
dCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFf
bGlzdCBfX2FyZ3MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18s
IDIsIDApKSk7CgoKCgoKCgpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiB2
b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwojIDY3NCAiLi4vbGliaW8vc3RkaW8u
aCIKIyAxICIuLi9saWJpby9iaXRzL3N0ZGlvLmgiIDEKIyAzMyAiLi4vbGliaW8vYml0cy9zdGRp
by5oIgpleHRlcm4gX19pbmxpbmUgaW50CnZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91
dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkK
ewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50Cmdl
dGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRy
ID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNo
YXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50Cmdl
dGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+
PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNo
YXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50
CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoK
CgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19z
dHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVh
bSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFy
KSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysg
PSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjX3VubG9ja2VkIChpbnQg
X19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9w
dHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwg
KHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9J
T193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXJf
dW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+
PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChzdGRvdXQsICh1bnNpZ25l
ZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooc3Rkb3V0KS0+X0lPX3dyaXRlX3B0
cisrID0gKF9fYykpKTsKfQoKCgoKCmV4dGVybiBfX2lubGluZSBfX3NzaXplX3QKZ2V0bGluZSAo
Y2hhciAqKl9fbGluZXB0ciwgc2l6ZV90ICpfX24sIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJu
IF9fZ2V0ZGVsaW0gKF9fbGluZXB0ciwgX19uLCAnXG4nLCBfX3N0cmVhbSk7Cn0KCgoKCgpleHRl
cm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJu
ICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgxMCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUg
aW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJl
YW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsKfQojIDY3NSAiLi4vbGliaW8vc3RkaW8uaCIgMgoK
CgojIDYgIi4uL2luY2x1ZGUvc3RkaW8uaCIgMgoKCmV4dGVybiBpbnQgX19mY2xvc2VhbGwgKHZv
aWQpOwpleHRlcm4gaW50IF9fc25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDMsIDQpKSk7CmV4dGVybiBpbnQgX192c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CmV4dGVybiBpbnQgX192ZnNj
YW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18s
IDIsIDApKSk7CmV4dGVybiBfX3R5cGVvZiAoX192ZnNjYW5mKSBfX0dJX19fdmZzY2FuZjsgZXh0
ZXJuIF9fdHlwZW9mIChfX3Zmc2NhbmYpIF9fdmZzY2FuZiBfX2FzbV9fICgiIiAiX19HSV9fX3Zm
c2NhbmYiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBp
bnQgX192c2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGxpbmUg
KGNoYXIgKipfX2xpbmVwdHIsIHNpemVfdCAqX19uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgX192c3NjYW5mIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19h
cmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsK
CgpleHRlcm4gRklMRSAqX19uZXdfdG1wZmlsZSAodm9pZCk7CmV4dGVybiBGSUxFICpfX29sZF90
bXBmaWxlICh2b2lkKTsKCgoKCiMgMSAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxp
bnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM4ICIuLi9pbmNsdWRlL3N0ZGlvLmgi
IDIKCmV4dGVybiBpbnQgX19wYXRoX3NlYXJjaCAoY2hhciAqX190bXBsLCBzaXplX3QgX190bXBs
X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2Nv
bnN0IGNoYXIgKl9fcGZ4LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3RyeV90ZW1w
ZGlyKTsKCmV4dGVybiBpbnQgX19nZW5fdGVtcG5hbWUgKGNoYXIgKl9fdG1wbCwgaW50IF9fa2lu
ZCk7CgoKCgoKCgpleHRlcm4gdm9pZCBfX2xpYmNfZmF0YWwgKF9fY29uc3QgY2hhciAqX19tZXNz
YWdlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9pZCBf
X2Zsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pOwoKCmV4dGVybiB2b2lkIF9fZnVubG9ja2ZpbGUg
KEZJTEUgKl9fc3RyZWFtKTsKCgoKZXh0ZXJuIGludCBfX2Z0cnlsb2NrZmlsZSAoRklMRSAqX19z
dHJlYW0pOwoKZXh0ZXJuIGludCBfX2dldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApOwpleHRlcm4g
d2ludF90IF9fZ2V0d2NfdW5sb2NrZWQgKEZJTEUgKl9fZnApOwoKCmV4dGVybiBfX2NvbnN0IGNo
YXIgKl9fY29uc3QgX3N5c19lcnJsaXN0X2ludGVybmFsW10gX19hdHRyaWJ1dGVfXyAoKHZpc2li
aWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gaW50IF9zeXNfbmVycl9pbnRlcm5hbCBfX2F0dHJp
YnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgpleHRlcm4gaW50IF9fYXNwcmludGZf
aW50ZXJuYWwgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIF9fYXR0
cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKSBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgoKCmV4dGVybiBfSU9fRklMRSAqX0lPX25ld19m
b3BlbiAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKSA7CgpleHRlcm4gX0lPX0ZJTEUgKl9JT19u
ZXdfZmRvcGVuIChpbnQsIGNvbnN0IGNoYXIqKSA7CgpleHRlcm4gaW50IF9JT19uZXdfZmNsb3Nl
IChfSU9fRklMRSopIDsKCmV4dGVybiBpbnQgX0lPX2ZwdXRzIChjb25zdCBjaGFyKiwgX0lPX0ZJ
TEUqKSA7CmV4dGVybiBfX3R5cGVvZiAoX0lPX2ZwdXRzKSBfX0dJX19JT19mcHV0czsgZXh0ZXJu
IF9fdHlwZW9mIChfSU9fZnB1dHMpIF9JT19mcHV0cyBfX2FzbV9fICgiIiAiX19HSV9fSU9fZnB1
dHMiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgpleHRlcm4gaW50
IF9JT19uZXdfZnNldHBvcyAoX0lPX0ZJTEUgKiwgY29uc3QgX0dfZnBvc190ICopIDsKCmV4dGVy
biBpbnQgX0lPX25ld19mZ2V0cG9zIChfSU9fRklMRSAqLCBfR19mcG9zX3QgKikgOwoKCgpleHRl
cm4gX190eXBlb2YgKGRwcmludGYpIF9fR0lfZHByaW50ZjsgZXh0ZXJuIF9fdHlwZW9mIChkcHJp
bnRmKSBkcHJpbnRmIF9fYXNtX18gKCIiICJfX0dJX2RwcmludGYiKSBfX2F0dHJpYnV0ZV9fICgo
dmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoZnByaW50ZikgX19HSV9m
cHJpbnRmOyBleHRlcm4gX190eXBlb2YgKGZwcmludGYpIGZwcmludGYgX19hc21fXyAoIiIgIl9f
R0lfZnByaW50ZiIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0
ZXJuIF9fdHlwZW9mICh2ZnByaW50ZikgX19HSV92ZnByaW50ZjsgZXh0ZXJuIF9fdHlwZW9mICh2
ZnByaW50ZikgdmZwcmludGYgX19hc21fXyAoIiIgIl9fR0lfdmZwcmludGYiKSBfX2F0dHJpYnV0
ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoc3ByaW50Zikg
X19HSV9zcHJpbnRmOyBleHRlcm4gX190eXBlb2YgKHNwcmludGYpIHNwcmludGYgX19hc21fXyAo
IiIgIl9fR0lfc3ByaW50ZiIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikp
KTsKZXh0ZXJuIF9fdHlwZW9mIChzc2NhbmYpIF9fR0lfc3NjYW5mOyBleHRlcm4gX190eXBlb2Yg
KHNzY2FuZikgc3NjYW5mIF9fYXNtX18gKCIiICJfX0dJX3NzY2FuZiIpIF9fYXR0cmlidXRlX18g
KCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChmd3JpdGUpIF9fR0lf
ZndyaXRlOyBleHRlcm4gX190eXBlb2YgKGZ3cml0ZSkgZndyaXRlIF9fYXNtX18gKCIiICJfX0dJ
X2Z3cml0ZSIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJu
IF9fdHlwZW9mIChwZXJyb3IpIF9fR0lfcGVycm9yOyBleHRlcm4gX190eXBlb2YgKHBlcnJvcikg
cGVycm9yIF9fYXNtX18gKCIiICJfX0dJX3BlcnJvciIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmls
aXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChyZW1vdmUpIF9fR0lfcmVtb3ZlOyBl
eHRlcm4gX190eXBlb2YgKHJlbW92ZSkgcmVtb3ZlIF9fYXNtX18gKCIiICJfX0dJX3JlbW92ZSIp
IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9m
IChyZXdpbmQpIF9fR0lfcmV3aW5kOyBleHRlcm4gX190eXBlb2YgKHJld2luZCkgcmV3aW5kIF9f
YXNtX18gKCIiICJfX0dJX3Jld2luZCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlk
ZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChmaWxlbm8pIF9fR0lfZmlsZW5vOyBleHRlcm4gX190
eXBlb2YgKGZpbGVubykgZmlsZW5vIF9fYXNtX18gKCIiICJfX0dJX2ZpbGVubyIpIF9fYXR0cmli
dXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChmd3JpdGUp
IF9fR0lfZndyaXRlOyBleHRlcm4gX190eXBlb2YgKGZ3cml0ZSkgZndyaXRlIF9fYXNtX18gKCIi
ICJfX0dJX2Z3cml0ZSIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsK
ZXh0ZXJuIF9fdHlwZW9mIChmc2VlaykgX19HSV9mc2VlazsgZXh0ZXJuIF9fdHlwZW9mIChmc2Vl
aykgZnNlZWsgX19hc21fXyAoIiIgIl9fR0lfZnNlZWsiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJp
bGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoZmZsdXNoX3VubG9ja2VkKSBfX0dJ
X2ZmbHVzaF91bmxvY2tlZDsgZXh0ZXJuIF9fdHlwZW9mIChmZmx1c2hfdW5sb2NrZWQpIGZmbHVz
aF91bmxvY2tlZCBfX2FzbV9fICgiIiAiX19HSV9mZmx1c2hfdW5sb2NrZWQiKSBfX2F0dHJpYnV0
ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoZnJlYWRfdW5s
b2NrZWQpIF9fR0lfZnJlYWRfdW5sb2NrZWQ7IGV4dGVybiBfX3R5cGVvZiAoZnJlYWRfdW5sb2Nr
ZWQpIGZyZWFkX3VubG9ja2VkIF9fYXNtX18gKCIiICJfX0dJX2ZyZWFkX3VubG9ja2VkIikgX19h
dHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKGZ3
cml0ZV91bmxvY2tlZCkgX19HSV9md3JpdGVfdW5sb2NrZWQ7IGV4dGVybiBfX3R5cGVvZiAoZndy
aXRlX3VubG9ja2VkKSBmd3JpdGVfdW5sb2NrZWQgX19hc21fXyAoIiIgIl9fR0lfZndyaXRlX3Vu
bG9ja2VkIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4g
X190eXBlb2YgKGZnZXRzX3VubG9ja2VkKSBfX0dJX2ZnZXRzX3VubG9ja2VkOyBleHRlcm4gX190
eXBlb2YgKGZnZXRzX3VubG9ja2VkKSBmZ2V0c191bmxvY2tlZCBfX2FzbV9fICgiIiAiX19HSV9m
Z2V0c191bmxvY2tlZCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsK
ZXh0ZXJuIF9fdHlwZW9mIChmcHV0c191bmxvY2tlZCkgX19HSV9mcHV0c191bmxvY2tlZDsgZXh0
ZXJuIF9fdHlwZW9mIChmcHV0c191bmxvY2tlZCkgZnB1dHNfdW5sb2NrZWQgX19hc21fXyAoIiIg
Il9fR0lfZnB1dHNfdW5sb2NrZWQiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRl
biIpKSk7CmV4dGVybiBfX3R5cGVvZiAob3Blbl9tZW1zdHJlYW0pIF9fR0lfb3Blbl9tZW1zdHJl
YW07IGV4dGVybiBfX3R5cGVvZiAob3Blbl9tZW1zdHJlYW0pIG9wZW5fbWVtc3RyZWFtIF9fYXNt
X18gKCIiICJfX0dJX29wZW5fbWVtc3RyZWFtIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkg
KCJoaWRkZW4iKSkpOwojIDMzICJ2ZnByaW50Zi5jIiAyCiMgNDQgInZmcHJpbnRmLmMiCiMgMSAi
Li4vbGliaW8vbGliaW9QLmgiIDEKIyAzOCAiLi4vbGliaW8vbGliaW9QLmgiCiMgMSAiLi4vbGli
aW8vaW9saWJpby5oIiAxCiMgMSAiLi4vaW5jbHVkZS9saWJpby5oIiAxCiMgMiAiLi4vbGliaW8v
aW9saWJpby5oIiAyCiMgMTAgIi4uL2xpYmlvL2lvbGliaW8uaCIKZXh0ZXJuIGludCBfSU9fZmNs
b3NlIChfSU9fRklMRSopIDsKZXh0ZXJuIGludCBfSU9fbmV3X2ZjbG9zZSAoX0lPX0ZJTEUqKSA7
CmV4dGVybiBpbnQgX0lPX29sZF9mY2xvc2UgKF9JT19GSUxFKikgOwpleHRlcm4gX0lPX0ZJTEUg
Kl9JT19mZG9wZW4gKGludCwgY29uc3QgY2hhciopIDsKZXh0ZXJuIF9JT19GSUxFICpfSU9fb2xk
X2Zkb3BlbiAoaW50LCBjb25zdCBjaGFyKikgOwpleHRlcm4gX0lPX0ZJTEUgKl9JT19uZXdfZmRv
cGVuIChpbnQsIGNvbnN0IGNoYXIqKSA7CmV4dGVybiBpbnQgX0lPX2ZmbHVzaCAoX0lPX0ZJTEUq
KSA7CmV4dGVybiBpbnQgX0lPX2ZnZXRwb3MgKF9JT19GSUxFKiwgX0dfZnBvc190KikgOwpleHRl
cm4gaW50IF9JT19mZ2V0cG9zNjQgKF9JT19GSUxFKiwgX0dfZnBvczY0X3QqKSA7CmV4dGVybiBj
aGFyKiBfSU9fZmdldHMgKGNoYXIqLCBpbnQsIF9JT19GSUxFKikgOwpleHRlcm4gX0lPX0ZJTEUg
Kl9JT19mb3BlbiAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKSA7CmV4dGVybiBfSU9fRklMRSAq
X0lPX29sZF9mb3BlbiAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKSA7CmV4dGVybiBfSU9fRklM
RSAqX0lPX25ld19mb3BlbiAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKSA7CmV4dGVybiBfSU9f
RklMRSAqX0lPX2ZvcGVuNjQgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikgOwpleHRlcm4gX0lP
X0ZJTEUgKl9fZm9wZW5faW50ZXJuYWwgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgaW50KSA7
CmV4dGVybiBfSU9fRklMRSAqX19mb3Blbl9tYXliZV9tbWFwIChfSU9fRklMRSAqKSA7CmV4dGVy
biBpbnQgX0lPX2ZwcmludGYgKF9JT19GSUxFKiwgY29uc3QgY2hhciosIC4uLikgOwpleHRlcm4g
aW50IF9JT19mcHV0cyAoY29uc3QgY2hhciosIF9JT19GSUxFKikgOwpleHRlcm4gX190eXBlb2Yg
KF9JT19mcHV0cykgX19HSV9fSU9fZnB1dHM7IGV4dGVybiBfX3R5cGVvZiAoX0lPX2ZwdXRzKSBf
SU9fZnB1dHMgX19hc21fXyAoIiIgIl9fR0lfX0lPX2ZwdXRzIikgX19hdHRyaWJ1dGVfXyAoKHZp
c2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gaW50IF9JT19mc2V0cG9zIChfSU9fRklMRSos
IGNvbnN0IF9HX2Zwb3NfdCAqKSA7CmV4dGVybiBpbnQgX0lPX2ZzZXRwb3M2NCAoX0lPX0ZJTEUq
LCBjb25zdCBfR19mcG9zNjRfdCAqKSA7CmV4dGVybiBsb25nIGludCBfSU9fZnRlbGwgKF9JT19G
SUxFKikgOwpleHRlcm4gc2l6ZV90IF9JT19mcmVhZCAodm9pZCosIHNpemVfdCwgc2l6ZV90LCBf
SU9fRklMRSopIDsKZXh0ZXJuIHNpemVfdCBfSU9fZndyaXRlIChjb25zdCB2b2lkKiwgc2l6ZV90
LCBzaXplX3QsIF9JT19GSUxFKikgOwoKZXh0ZXJuIGNoYXIqIF9JT19nZXRzIChjaGFyKikgOwpl
eHRlcm4gdm9pZCBfSU9fcGVycm9yIChjb25zdCBjaGFyKikgOwpleHRlcm4gaW50IF9JT19wcmlu
dGYgKGNvbnN0IGNoYXIqLCAuLi4pIDsKZXh0ZXJuIGludCBfSU9fcHV0cyAoY29uc3QgY2hhciop
IDsKZXh0ZXJuIGludCBfSU9fc2NhbmYgKGNvbnN0IGNoYXIqLCAuLi4pIDsKZXh0ZXJuIHZvaWQg
X0lPX3NldGJ1ZmZlciAoX0lPX0ZJTEUgKiwgY2hhciosIHNpemVfdCkgOwpleHRlcm4gaW50IF9J
T19zZXR2YnVmIChfSU9fRklMRSosIGNoYXIqLCBpbnQsIHNpemVfdCkgOwpleHRlcm4gaW50IF9J
T19zc2NhbmYgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgLi4uKSA7CmV4dGVybiBpbnQgX0lP
X3NwcmludGYgKGNoYXIgKiwgY29uc3QgY2hhciosIC4uLikgOwpleHRlcm4gaW50IF9JT191bmdl
dGMgKGludCwgX0lPX0ZJTEUqKSA7CmV4dGVybiBpbnQgX0lPX3Zzc2NhbmYgKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCkgOwpleHRlcm4gaW50IF9JT192c3ByaW50
ZiAoY2hhciosIGNvbnN0IGNoYXIqLCBfX2dudWNfdmFfbGlzdCkgOwpleHRlcm4gaW50IF9JT192
c3dwcmludGYgKHdjaGFyX3QqLCBzaXplX3QsIGNvbnN0IHdjaGFyX3QqLCBfX2dudWNfdmFfbGlz
dCkgOwoKCnN0cnVjdCBvYnN0YWNrOwpleHRlcm4gaW50IF9JT19vYnN0YWNrX3ZwcmludGYgKHN0
cnVjdCBvYnN0YWNrICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpIDsKCmV4dGVybiBp
bnQgX0lPX29ic3RhY2tfcHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqLCBjb25zdCBjaGFyICosIC4u
LikgOwojIDc0ICIuLi9saWJpby9pb2xpYmlvLmgiCmV4dGVybiBfSU9fRklMRSogX0lPX3BvcGVu
IChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopIDsKZXh0ZXJuIF9JT19GSUxFKiBfSU9fbmV3X3Bv
cGVuIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopIDsKZXh0ZXJuIF9JT19GSUxFKiBfSU9fb2xk
X3BvcGVuIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopIDsKZXh0ZXJuIGludCBfX25ld19wY2xv
c2UgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX29sZF9wY2xvc2UgKF9JT19GSUxFICopIDsK
CgoKCl9JT19GSUxFICpfX25ld19mcmVvcGVuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg
X0lPX0ZJTEUgKikgOwpfSU9fRklMRSAqX19vbGRfZnJlb3BlbiAoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICosIF9JT19GSUxFICopIDsKCgpleHRlcm4gdm9pZCBfSU9fc2V0YnVmZmVyX2ludGVy
bmFsIChfSU9fRklMRSAqLCBjaGFyKiwgc2l6ZV90KSA7CmV4dGVybiBzaXplX3QgX0lPX2ZyZWFk
X2ludGVybmFsICh2b2lkKiwgc2l6ZV90LCBzaXplX3QsIF9JT19GSUxFKikgOwoKZXh0ZXJuIF9J
T19GSUxFICpfSU9fZmRvcGVuX2ludGVybmFsIChpbnQsIGNvbnN0IGNoYXIqKSA7CmV4dGVybiBp
bnQgX0lPX3ZzcHJpbnRmX2ludGVybmFsIChjaGFyKiwgY29uc3QgY2hhciosIF9fZ251Y192YV9s
aXN0KSA7CmV4dGVybiBpbnQgX0lPX2ZmbHVzaF9pbnRlcm5hbCAoX0lPX0ZJTEUqKSA7CmV4dGVy
biBzaXplX3QgX0lPX2Z3cml0ZV9pbnRlcm5hbCAoY29uc3Qgdm9pZCosIHNpemVfdCwgc2l6ZV90
LCBfSU9fRklMRSopIDsKCmV4dGVybiBsb25nIGludCBfSU9fZnRlbGxfaW50ZXJuYWwgKF9JT19G
SUxFKikgOwpleHRlcm4gaW50IF9JT19mcHV0c19pbnRlcm5hbCAoY29uc3QgY2hhciosIF9JT19G
SUxFKikgOwpleHRlcm4gaW50IF9JT19zZXR2YnVmX2ludGVybmFsIChfSU9fRklMRSosIGNoYXIq
LCBpbnQsIHNpemVfdCkgOwojIDM5ICIuLi9saWJpby9saWJpb1AuaCIgMgojIDEzOSAiLi4vbGli
aW8vbGliaW9QLmgiCnR5cGVkZWYgdm9pZCAoKl9JT19maW5pc2hfdCkgKF9JT19GSUxFICosIGlu
dCk7CgoKCgoKCnR5cGVkZWYgaW50ICgqX0lPX292ZXJmbG93X3QpIChfSU9fRklMRSAqLCBpbnQp
OwoKCgoKCgoKdHlwZWRlZiBpbnQgKCpfSU9fdW5kZXJmbG93X3QpIChfSU9fRklMRSAqKTsKIyAx
NjggIi4uL2xpYmlvL2xpYmlvUC5oIgp0eXBlZGVmIGludCAoKl9JT19wYmFja2ZhaWxfdCkgKF9J
T19GSUxFICosIGludCk7CgoKCgoKCnR5cGVkZWYgc2l6ZV90ICgqX0lPX3hzcHV0bl90KSAoX0lP
X0ZJTEUgKkZQLCBjb25zdCB2b2lkICpEQVRBLCBzaXplX3QgTik7CgoKCgoKCgp0eXBlZGVmIHNp
emVfdCAoKl9JT194c2dldG5fdCkgKF9JT19GSUxFICpGUCwgdm9pZCAqREFUQSwgc2l6ZV90IE4p
OwojIDE5MyAiLi4vbGliaW8vbGliaW9QLmgiCnR5cGVkZWYgX19vZmY2NF90ICgqX0lPX3NlZWtv
ZmZfdCkgKF9JT19GSUxFICpGUCwgX19vZmY2NF90IE9GRiwgaW50IERJUiwgaW50IE1PREUpOwoj
IDIwMyAiLi4vbGliaW8vbGliaW9QLmgiCnR5cGVkZWYgX19vZmY2NF90ICgqX0lPX3NlZWtwb3Nf
dCkgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KTsKCgoKCgp0eXBlZGVmIF9JT19GSUxFKiAo
Kl9JT19zZXRidWZfdCkgKF9JT19GSUxFICosIGNoYXIgKiwgX19zc2l6ZV90KTsKCgoKCgoKdHlw
ZWRlZiBpbnQgKCpfSU9fc3luY190KSAoX0lPX0ZJTEUgKik7CgoKCgoKCnR5cGVkZWYgaW50ICgq
X0lPX2RvYWxsb2NhdGVfdCkgKF9JT19GSUxFICopOwojIDI0MiAiLi4vbGliaW8vbGliaW9QLmgi
CnR5cGVkZWYgX19zc2l6ZV90ICgqX0lPX3JlYWRfdCkgKF9JT19GSUxFICosIHZvaWQgKiwgX19z
c2l6ZV90KTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90ICgqX0lPX3dyaXRlX3QpIChfSU9fRklM
RSAqLCBjb25zdCB2b2lkICosIF9fc3NpemVfdCk7CiMgMjU5ICIuLi9saWJpby9saWJpb1AuaCIK
dHlwZWRlZiBfX29mZjY0X3QgKCpfSU9fc2Vla190KSAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBp
bnQpOwoKCgoKCgoKdHlwZWRlZiBpbnQgKCpfSU9fY2xvc2VfdCkgKF9JT19GSUxFICopOwoKCgoK
CgoKdHlwZWRlZiBpbnQgKCpfSU9fc3RhdF90KSAoX0lPX0ZJTEUgKiwgdm9pZCAqKTsKCgoKCgoK
dHlwZWRlZiBpbnQgKCpfSU9fc2hvd21hbnljX3QpIChfSU9fRklMRSAqKTsKCgoKCgp0eXBlZGVm
IHZvaWQgKCpfSU9faW1idWVfdCkgKF9JT19GSUxFICosIHZvaWQgKik7CgoKCgoKCgpzdHJ1Y3Qg
X0lPX2p1bXBfdAp7CiAgICBzaXplX3QgX19kdW1teTsKCiAgICBzaXplX3QgX19kdW1teTI7Cgog
ICAgX0lPX2ZpbmlzaF90IF9fZmluaXNoOwogICAgX0lPX292ZXJmbG93X3QgX19vdmVyZmxvdzsK
ICAgIF9JT191bmRlcmZsb3dfdCBfX3VuZGVyZmxvdzsKICAgIF9JT191bmRlcmZsb3dfdCBfX3Vm
bG93OwogICAgX0lPX3BiYWNrZmFpbF90IF9fcGJhY2tmYWlsOwoKICAgIF9JT194c3B1dG5fdCBf
X3hzcHV0bjsKICAgIF9JT194c2dldG5fdCBfX3hzZ2V0bjsKICAgIF9JT19zZWVrb2ZmX3QgX19z
ZWVrb2ZmOwogICAgX0lPX3NlZWtwb3NfdCBfX3NlZWtwb3M7CiAgICBfSU9fc2V0YnVmX3QgX19z
ZXRidWY7CiAgICBfSU9fc3luY190IF9fc3luYzsKICAgIF9JT19kb2FsbG9jYXRlX3QgX19kb2Fs
bG9jYXRlOwogICAgX0lPX3JlYWRfdCBfX3JlYWQ7CiAgICBfSU9fd3JpdGVfdCBfX3dyaXRlOwog
ICAgX0lPX3NlZWtfdCBfX3NlZWs7CiAgICBfSU9fY2xvc2VfdCBfX2Nsb3NlOwogICAgX0lPX3N0
YXRfdCBfX3N0YXQ7CiAgICBfSU9fc2hvd21hbnljX3QgX19zaG93bWFueWM7CiAgICBfSU9faW1i
dWVfdCBfX2ltYnVlOwoKCgoKfTsKCgoKCgoKc3RydWN0IF9JT19GSUxFX3BsdXMKewogIF9JT19G
SUxFIGZpbGU7CiAgY29uc3Qgc3RydWN0IF9JT19qdW1wX3QgKnZ0YWJsZTsKfTsKCgpzdHJ1Y3Qg
X0lPX2Nvb2tpZV9maWxlCnsKICBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfX2ZwOwogIHZvaWQgKl9f
Y29va2llOwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jdGlvbnM7Cn07Cgpf
SU9fRklMRSAqX0lPX2ZvcGVuY29va2llICh2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgaW9f
ZnVuY3Rpb25zKTsKCgoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFICpfSU9fSVRFUjsKCgoKZXh0
ZXJuIHZvaWQgX0lPX3N3aXRjaF90b19tYWluX2dldF9hcmVhIChfSU9fRklMRSAqKSA7CmV4dGVy
biB2b2lkIF9JT19zd2l0Y2hfdG9fYmFja3VwX2FyZWEgKF9JT19GSUxFICopIDsKZXh0ZXJuIGlu
dCBfSU9fc3dpdGNoX3RvX2dldF9tb2RlIChfSU9fRklMRSAqKSA7CmV4dGVybiB2b2lkIF9JT19p
bml0IChfSU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIGludCBfSU9fc3B1dGJhY2tjIChfSU9fRklM
RSAqLCBpbnQpIDsKZXh0ZXJuIGludCBfSU9fc3VuZ2V0YyAoX0lPX0ZJTEUgKikgOwpleHRlcm4g
dm9pZCBfSU9fdW5fbGluayAoc3RydWN0IF9JT19GSUxFX3BsdXMgKikgOwpleHRlcm4gdm9pZCBf
SU9fbGlua19pbiAoc3RydWN0IF9JT19GSUxFX3BsdXMgKikgOwpleHRlcm4gdm9pZCBfSU9fZG9h
bGxvY2J1ZiAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fdW5zYXZlX21hcmtlcnMgKF9J
T19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX3NldGIgKF9JT19GSUxFICosIGNoYXIgKiwgY2hh
ciAqLCBpbnQpIDsKZXh0ZXJuIHVuc2lnbmVkIF9JT19hZGp1c3RfY29sdW1uICh1bnNpZ25lZCwg
Y29uc3QgY2hhciAqLCBpbnQpIDsKCgpleHRlcm4gdm9pZCBfSU9fc3dpdGNoX3RvX21haW5fd2dl
dF9hcmVhIChfSU9fRklMRSAqKSA7CmV4dGVybiB2b2lkIF9JT19zd2l0Y2hfdG9fd2JhY2t1cF9h
cmVhIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX3N3aXRjaF90b193Z2V0X21vZGUgKF9J
T19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX3dzZXRiIChfSU9fRklMRSAqLCB3Y2hhcl90ICos
IHdjaGFyX3QgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX0lPX3NwdXRiYWNrd2MgKF9JT19GSUxF
ICosIHdpbnRfdCkgOwpleHRlcm4gd2ludF90IF9JT19zdW5nZXR3YyAoX0lPX0ZJTEUgKikgOwpl
eHRlcm4gdm9pZCBfSU9fd2RvYWxsb2NidWYgKF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lP
X3Vuc2F2ZV93bWFya2VycyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdW5zaWduZWQgX0lPX2FkanVz
dF93Y29sdW1uICh1bnNpZ25lZCwgY29uc3Qgd2NoYXJfdCAqLCBpbnQpIDsKCgoKZXh0ZXJuIHZv
aWQgX0lPX2luaXRfbWFya2VyIChzdHJ1Y3QgX0lPX21hcmtlciAqLCBfSU9fRklMRSAqKSA7CmV4
dGVybiB2b2lkIF9JT19pbml0X3dtYXJrZXIgKHN0cnVjdCBfSU9fbWFya2VyICosIF9JT19GSUxF
ICopIDsKZXh0ZXJuIHZvaWQgX0lPX3JlbW92ZV9tYXJrZXIgKHN0cnVjdCBfSU9fbWFya2VyICop
IDsKZXh0ZXJuIGludCBfSU9fbWFya2VyX2RpZmZlcmVuY2UgKHN0cnVjdCBfSU9fbWFya2VyICos
IHN0cnVjdCBfSU9fbWFya2VyICopIDsKCmV4dGVybiBpbnQgX0lPX21hcmtlcl9kZWx0YSAoc3Ry
dWN0IF9JT19tYXJrZXIgKikgOwpleHRlcm4gaW50IF9JT193bWFya2VyX2RlbHRhIChzdHJ1Y3Qg
X0lPX21hcmtlciAqKSA7CmV4dGVybiBpbnQgX0lPX3NlZWttYXJrIChfSU9fRklMRSAqLCBzdHJ1
Y3QgX0lPX21hcmtlciAqLCBpbnQpIDsKZXh0ZXJuIGludCBfSU9fc2Vla3dtYXJrIChfSU9fRklM
RSAqLCBzdHJ1Y3QgX0lPX21hcmtlciAqLCBpbnQpIDsKCgoKCmV4dGVybiBfSU9fSVRFUiBfSU9f
aXRlcl9iZWdpbiAodm9pZCkgOwpleHRlcm4gX0lPX0lURVIgX0lPX2l0ZXJfZW5kICh2b2lkKSA7
CmV4dGVybiBfSU9fSVRFUiBfSU9faXRlcl9uZXh0IChfSU9fSVRFUikgOwpleHRlcm4gX0lPX0ZJ
TEUgKl9JT19pdGVyX2ZpbGUgKF9JT19JVEVSKSA7CmV4dGVybiB2b2lkIF9JT19saXN0X2xvY2sg
KHZvaWQpIDsKZXh0ZXJuIHZvaWQgX0lPX2xpc3RfdW5sb2NrICh2b2lkKSA7CmV4dGVybiB2b2lk
IF9JT19saXN0X3Jlc2V0bG9jayAodm9pZCkgOwoKCgpleHRlcm4gaW50IF9JT19kZWZhdWx0X3Vu
ZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9JT19kZWZhdWx0X3VmbG93IChfSU9f
RklMRSAqKSA7CmV4dGVybiB3aW50X3QgX0lPX3dkZWZhdWx0X3VmbG93IChfSU9fRklMRSAqKSA7
CmV4dGVybiBpbnQgX0lPX2RlZmF1bHRfZG9hbGxvY2F0ZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4g
aW50IF9JT193ZGVmYXVsdF9kb2FsbG9jYXRlIChfSU9fRklMRSAqKSA7CmV4dGVybiB2b2lkIF9J
T19kZWZhdWx0X2ZpbmlzaCAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiB2b2lkIF9JT193ZGVm
YXVsdF9maW5pc2ggKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gaW50IF9JT19kZWZhdWx0X3Bi
YWNrZmFpbCAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX0lPX3dkZWZhdWx0X3Bi
YWNrZmFpbCAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CmV4dGVybiBfSU9fRklMRSogX0lPX2RlZmF1
bHRfc2V0YnVmIChfSU9fRklMRSAqLCBjaGFyICosIF9fc3NpemVfdCkgOwpleHRlcm4gc2l6ZV90
IF9JT19kZWZhdWx0X3hzcHV0biAoX0lPX0ZJTEUgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpIDsK
CmV4dGVybiBzaXplX3QgX0lPX3dkZWZhdWx0X3hzcHV0biAoX0lPX0ZJTEUgKiwgY29uc3Qgdm9p
ZCAqLCBzaXplX3QpIDsKCmV4dGVybiBzaXplX3QgX0lPX2RlZmF1bHRfeHNnZXRuIChfSU9fRklM
RSAqLCB2b2lkICosIHNpemVfdCkgOwpleHRlcm4gc2l6ZV90IF9JT193ZGVmYXVsdF94c2dldG4g
KF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90KSA7CmV4dGVybiBfX29mZjY0X3QgX0lPX2RlZmF1
bHRfc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwoKZXh0ZXJuIF9f
b2ZmNjRfdCBfSU9fZGVmYXVsdF9zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkg
OwpleHRlcm4gX19zc2l6ZV90IF9JT19kZWZhdWx0X3dyaXRlIChfSU9fRklMRSAqLCBjb25zdCB2
b2lkICosIF9fc3NpemVfdCkgOwoKZXh0ZXJuIF9fc3NpemVfdCBfSU9fZGVmYXVsdF9yZWFkIChf
SU9fRklMRSAqLCB2b2lkICosIF9fc3NpemVfdCkgOwpleHRlcm4gaW50IF9JT19kZWZhdWx0X3N0
YXQgKF9JT19GSUxFICosIHZvaWQgKikgOwpleHRlcm4gX19vZmY2NF90IF9JT19kZWZhdWx0X3Nl
ZWsgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KSA7CmV4dGVybiBpbnQgX0lPX2RlZmF1bHRf
c3luYyAoX0lPX0ZJTEUgKikgOwoKZXh0ZXJuIGludCBfSU9fZGVmYXVsdF9zaG93bWFueWMgKF9J
T19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX2RlZmF1bHRfaW1idWUgKF9JT19GSUxFICosIHZv
aWQgKikgOwoKZXh0ZXJuIHN0cnVjdCBfSU9fanVtcF90IF9JT19maWxlX2p1bXBzOwpleHRlcm4g
c3RydWN0IF9JT19qdW1wX3QgX0lPX2ZpbGVfanVtcHNfbW1hcCBfX2F0dHJpYnV0ZV9fICgodmlz
aWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBzdHJ1Y3QgX0lPX2p1bXBfdCBfSU9fZmlsZV9q
dW1wc19tYXliZV9tbWFwIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsK
ZXh0ZXJuIHN0cnVjdCBfSU9fanVtcF90IF9JT193ZmlsZV9qdW1wcyBfX2F0dHJpYnV0ZV9fICgo
dmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBzdHJ1Y3QgX0lPX2p1bXBfdCBfSU9fd2Zp
bGVfanVtcHNfbW1hcCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4
dGVybiBzdHJ1Y3QgX0lPX2p1bXBfdCBfSU9fd2ZpbGVfanVtcHNfbWF5YmVfbW1hcCBfX2F0dHJp
YnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBzdHJ1Y3QgX0lPX2p1bXBf
dCBfSU9fb2xkX2ZpbGVfanVtcHMgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4i
KSkpOwpleHRlcm4gc3RydWN0IF9JT19qdW1wX3QgX0lPX3N0cmVhbWJ1Zl9qdW1wczsKZXh0ZXJu
IHN0cnVjdCBfSU9fanVtcF90IF9JT19wcm9jX2p1bXBzIF9fYXR0cmlidXRlX18gKCh2aXNpYmls
aXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIHN0cnVjdCBfSU9fanVtcF90IF9JT19vbGRfcHJvY19q
dW1wcyBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBzdHJ1
Y3QgX0lPX2p1bXBfdCBfSU9fc3RyX2p1bXBzIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgi
aGlkZGVuIikpKTsKZXh0ZXJuIHN0cnVjdCBfSU9fanVtcF90IF9JT193c3RyX2p1bXBzIF9fYXR0
cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIHN0cnVjdCBfSU9fY29k
ZWN2dCBfX2xpYmlvX2NvZGVjdnQgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4i
KSkpOwpleHRlcm4gaW50IF9JT19kb193cml0ZSAoX0lPX0ZJTEUgKiwgY29uc3QgY2hhciAqLCBz
aXplX3QpIDsKZXh0ZXJuIGludCBfSU9fbmV3X2RvX3dyaXRlIChfSU9fRklMRSAqLCBjb25zdCBj
aGFyICosIHNpemVfdCkgOwpleHRlcm4gaW50IF9JT19vbGRfZG9fd3JpdGUgKF9JT19GSUxFICos
IGNvbnN0IGNoYXIgKiwgc2l6ZV90KSA7CmV4dGVybiBpbnQgX0lPX3dkb193cml0ZSAoX0lPX0ZJ
TEUgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpIDsKZXh0ZXJuIGludCBfSU9fZmx1c2hfYWxs
X2xvY2twIChpbnQpIDsKZXh0ZXJuIGludCBfSU9fZmx1c2hfYWxsICh2b2lkKSA7CmV4dGVybiBp
bnQgX0lPX2NsZWFudXAgKHZvaWQpIDsKZXh0ZXJuIHZvaWQgX0lPX2ZsdXNoX2FsbF9saW5lYnVm
ZmVyZWQgKHZvaWQpIDsKZXh0ZXJuIGludCBfSU9fbmV3X2ZnZXRwb3MgKF9JT19GSUxFICosIF9H
X2Zwb3NfdCAqKSA7CmV4dGVybiBpbnQgX0lPX29sZF9mZ2V0cG9zIChfSU9fRklMRSAqLCBfR19m
cG9zX3QgKikgOwpleHRlcm4gaW50IF9JT19uZXdfZnNldHBvcyAoX0lPX0ZJTEUgKiwgY29uc3Qg
X0dfZnBvc190ICopIDsKZXh0ZXJuIGludCBfSU9fb2xkX2ZzZXRwb3MgKF9JT19GSUxFICosIGNv
bnN0IF9HX2Zwb3NfdCAqKSA7CmV4dGVybiBpbnQgX0lPX25ld19mZ2V0cG9zNjQgKF9JT19GSUxF
ICosIF9HX2Zwb3M2NF90ICopIDsKZXh0ZXJuIGludCBfSU9fb2xkX2ZnZXRwb3M2NCAoX0lPX0ZJ
TEUgKiwgX0dfZnBvczY0X3QgKikgOwpleHRlcm4gaW50IF9JT19uZXdfZnNldHBvczY0IChfSU9f
RklMRSAqLCBjb25zdCBfR19mcG9zNjRfdCAqKSA7CmV4dGVybiBpbnQgX0lPX29sZF9mc2V0cG9z
NjQgKF9JT19GSUxFICosIGNvbnN0IF9HX2Zwb3M2NF90ICopIDsKIyA1MDcgIi4uL2xpYmlvL2xp
YmlvUC5oIgpleHRlcm4gaW50IF9JT19maWxlX2RvYWxsb2NhdGUgKF9JT19GSUxFICopIDsKZXh0
ZXJuIF9JT19GSUxFKiBfSU9fZmlsZV9zZXRidWYgKF9JT19GSUxFICosIGNoYXIgKiwgX19zc2l6
ZV90KSA7CmV4dGVybiBfX29mZjY0X3QgX0lPX2ZpbGVfc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19v
ZmY2NF90LCBpbnQsIGludCkgOwpleHRlcm4gX19vZmY2NF90IF9JT19maWxlX3NlZWtvZmZfbW1h
cCAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwoKZXh0ZXJuIF9fb2ZmNjRfdCBf
SU9fZmlsZV9zZWVrb2ZmX21heWJlX21tYXAgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBp
bnQpIDsKCmV4dGVybiBzaXplX3QgX0lPX2ZpbGVfeHNwdXRuIChfSU9fRklMRSAqLCBjb25zdCB2
b2lkICosIHNpemVfdCkgOwpleHRlcm4gc2l6ZV90IF9JT19maWxlX3hzZ2V0biAoX0lPX0ZJTEUg
Kiwgdm9pZCAqLCBzaXplX3QpIDsKZXh0ZXJuIGludCBfSU9fZmlsZV9zdGF0IChfSU9fRklMRSAq
LCB2b2lkICopIDsKZXh0ZXJuIGludCBfSU9fZmlsZV9jbG9zZSAoX0lPX0ZJTEUgKikgOwpleHRl
cm4gaW50IF9JT19maWxlX2Nsb3NlX21tYXAgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9f
ZmlsZV91bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9fZmlsZV91bmRlcmZs
b3dfbW1hcCAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9JT19maWxlX3VuZGVyZmxvd19tYXli
ZV9tbWFwIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX2ZpbGVfb3ZlcmZsb3cgKF9JT19G
SUxFICosIGludCkgOwoKZXh0ZXJuIHZvaWQgX0lPX2ZpbGVfaW5pdCAoc3RydWN0IF9JT19GSUxF
X3BsdXMgKikgOwpleHRlcm4gX0lPX0ZJTEUqIF9JT19maWxlX2F0dGFjaCAoX0lPX0ZJTEUgKiwg
aW50KSA7CmV4dGVybiBfSU9fRklMRSogX0lPX2ZpbGVfb3BlbiAoX0lPX0ZJTEUgKiwgY29uc3Qg
Y2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQpIDsKCmV4dGVybiBfSU9fRklMRSogX0lPX2ZpbGVf
Zm9wZW4gKF9JT19GSUxFICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpIDsKCmV4
dGVybiBfX3NzaXplX3QgX0lPX2ZpbGVfd3JpdGUgKF9JT19GSUxFICosIGNvbnN0IHZvaWQgKiwg
X19zc2l6ZV90KSA7CgpleHRlcm4gX19zc2l6ZV90IF9JT19maWxlX3JlYWQgKF9JT19GSUxFICos
IHZvaWQgKiwgX19zc2l6ZV90KSA7CmV4dGVybiBpbnQgX0lPX2ZpbGVfc3luYyAoX0lPX0ZJTEUg
KikgOwpleHRlcm4gaW50IF9JT19maWxlX2Nsb3NlX2l0IChfSU9fRklMRSAqKSA7CmV4dGVybiBf
X29mZjY0X3QgX0lPX2ZpbGVfc2VlayAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIDsKZXh0
ZXJuIHZvaWQgX0lPX2ZpbGVfZmluaXNoIChfSU9fRklMRSAqLCBpbnQpIDsKCmV4dGVybiBfSU9f
RklMRSogX0lPX25ld19maWxlX2F0dGFjaCAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiBpbnQg
X0lPX25ld19maWxlX2Nsb3NlX2l0IChfSU9fRklMRSAqKSA7CmV4dGVybiB2b2lkIF9JT19uZXdf
ZmlsZV9maW5pc2ggKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gX0lPX0ZJTEUqIF9JT19uZXdf
ZmlsZV9mb3BlbiAoX0lPX0ZJTEUgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCkg
OwoKZXh0ZXJuIHZvaWQgX0lPX25vX2luaXQgKF9JT19GSUxFICosIGludCwgaW50LCBzdHJ1Y3Qg
X0lPX3dpZGVfZGF0YSAqLCBzdHJ1Y3QgX0lPX2p1bXBfdCAqKSA7CgpleHRlcm4gdm9pZCBfSU9f
bmV3X2ZpbGVfaW5pdCAoc3RydWN0IF9JT19GSUxFX3BsdXMgKikgOwpleHRlcm4gX0lPX0ZJTEUq
IF9JT19uZXdfZmlsZV9zZXRidWYgKF9JT19GSUxFICosIGNoYXIgKiwgX19zc2l6ZV90KSA7CmV4
dGVybiBfSU9fRklMRSogX0lPX2ZpbGVfc2V0YnVmX21tYXAgKF9JT19GSUxFICosIGNoYXIgKiwg
X19zc2l6ZV90KSA7CmV4dGVybiBpbnQgX0lPX25ld19maWxlX3N5bmMgKF9JT19GSUxFICopIDsK
ZXh0ZXJuIGludCBfSU9fbmV3X2ZpbGVfdW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBp
bnQgX0lPX25ld19maWxlX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIF9fb2Zm
NjRfdCBfSU9fbmV3X2ZpbGVfc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGlu
dCkgOwpleHRlcm4gX19zc2l6ZV90IF9JT19uZXdfZmlsZV93cml0ZSAoX0lPX0ZJTEUgKiwgY29u
c3Qgdm9pZCAqLCBfX3NzaXplX3QpIDsKCmV4dGVybiBzaXplX3QgX0lPX25ld19maWxlX3hzcHV0
biAoX0lPX0ZJTEUgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVybiBfSU9fRklMRSog
X0lPX29sZF9maWxlX3NldGJ1ZiAoX0lPX0ZJTEUgKiwgY2hhciAqLCBfX3NzaXplX3QpIDsKZXh0
ZXJuIF9fb2ZmNjRfdCBfSU9fb2xkX2ZpbGVfc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90
LCBpbnQsIGludCkgOwoKZXh0ZXJuIHNpemVfdCBfSU9fb2xkX2ZpbGVfeHNwdXRuIChfSU9fRklM
RSAqLCBjb25zdCB2b2lkICosIHNpemVfdCkgOwoKZXh0ZXJuIGludCBfSU9fb2xkX2ZpbGVfdW5k
ZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX29sZF9maWxlX292ZXJmbG93IChf
SU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIHZvaWQgX0lPX29sZF9maWxlX2luaXQgKHN0cnVjdCBf
SU9fRklMRV9wbHVzICopIDsKZXh0ZXJuIF9JT19GSUxFKiBfSU9fb2xkX2ZpbGVfYXR0YWNoIChf
SU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIF9JT19GSUxFKiBfSU9fb2xkX2ZpbGVfZm9wZW4gKF9J
T19GSUxFICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSA7CgpleHRlcm4gX19zc2l6ZV90
IF9JT19vbGRfZmlsZV93cml0ZSAoX0lPX0ZJTEUgKiwgY29uc3Qgdm9pZCAqLCBfX3NzaXplX3Qp
IDsKCmV4dGVybiBpbnQgX0lPX29sZF9maWxlX3N5bmMgKF9JT19GSUxFICopIDsKZXh0ZXJuIGlu
dCBfSU9fb2xkX2ZpbGVfY2xvc2VfaXQgKF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX29s
ZF9maWxlX2ZpbmlzaCAoX0lPX0ZJTEUgKiwgaW50KSA7CgpleHRlcm4gaW50IF9JT193ZmlsZV9k
b2FsbG9jYXRlIChfSU9fRklMRSAqKSA7CmV4dGVybiBzaXplX3QgX0lPX3dmaWxlX3hzcHV0biAo
X0lPX0ZJTEUgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVybiBfSU9fRklMRSogX0lP
X3dmaWxlX3NldGJ1ZiAoX0lPX0ZJTEUgKiwgd2NoYXJfdCAqLCBfX3NzaXplX3QpIDsKZXh0ZXJu
IHdpbnRfdCBfSU9fd2ZpbGVfc3luYyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9JT193
ZmlsZV91bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfSU9fd2ZpbGVfb3Zl
cmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwpleHRlcm4gX19vZmY2NF90IF9JT193ZmlsZV9z
ZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSA7CgoKZXh0ZXJuIF9JT19G
SUxFKiBfSU9fcHJvY19vcGVuIChfSU9fRklMRSAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
KikgOwpleHRlcm4gX0lPX0ZJTEUqIF9JT19uZXdfcHJvY19vcGVuIChfSU9fRklMRSAqLCBjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKikgOwpleHRlcm4gX0lPX0ZJTEUqIF9JT19vbGRfcHJvY19v
cGVuIChfSU9fRklMRSAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikgOwpleHRlcm4gaW50
IF9JT19wcm9jX2Nsb3NlIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX25ld19wcm9jX2Ns
b3NlIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX29sZF9wcm9jX2Nsb3NlIChfSU9fRklM
RSAqKSA7CgoKZXh0ZXJuIGludCBfSU9fc3RyX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRl
cm4gaW50IF9JT19zdHJfb3ZlcmZsb3cgKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gaW50IF9J
T19zdHJfcGJhY2tmYWlsIChfSU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9f
c3RyX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIDsKZXh0ZXJuIHZv
aWQgX0lPX3N0cl9maW5pc2ggKF9JT19GSUxFICosIGludCkgOwoKCnN0cnVjdCBfSU9fc3RyZmls
ZV87CmV4dGVybiB2b2lkIF9JT19zdHJfaW5pdF9zdGF0aWMgKHN0cnVjdCBfSU9fc3RyZmlsZV8g
KiwgY2hhciAqLCBpbnQsIGNoYXIgKikgOwpleHRlcm4gdm9pZCBfSU9fc3RyX2luaXRfcmVhZG9u
bHkgKHN0cnVjdCBfSU9fc3RyZmlsZV8gKiwgY29uc3QgY2hhciAqLCBpbnQpIDsKZXh0ZXJuIF9f
c3NpemVfdCBfSU9fc3RyX2NvdW50IChfSU9fRklMRSAqKSA7CgoKZXh0ZXJuIHZvaWQgX0lPX3dz
dHJfaW5pdF9zdGF0aWMgKF9JT19GSUxFICosIHdjaGFyX3QgKiwgaW50LCB3Y2hhcl90ICopIDsK
ZXh0ZXJuIHZvaWQgX0lPX3dzdHJfaW5pdF9yZWFkb25seSAoX0lPX0ZJTEUgKiwgY29uc3QgY2hh
ciAqLCBpbnQpIDsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fd3N0cl9jb3VudCAoX0lPX0ZJTEUgKikg
OwpleHRlcm4gd2ludF90IF9JT193c3RyX292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIDsK
ZXh0ZXJuIHdpbnRfdCBfSU9fd3N0cl91bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIF9f
b2ZmNjRfdCBfSU9fd3N0cl9zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50
KSA7CmV4dGVybiB3aW50X3QgX0lPX3dzdHJfcGJhY2tmYWlsIChfSU9fRklMRSAqLCB3aW50X3Qp
IDsKZXh0ZXJuIHZvaWQgX0lPX3dzdHJfZmluaXNoIChfSU9fRklMRSAqLCBpbnQpIDsKCmV4dGVy
biBpbnQgX0lPX3Zhc3ByaW50ZiAoY2hhciAqKnJlc3VsdF9wdHIsIF9fY29uc3QgY2hhciAqZm9y
bWF0LCBfX2dudWNfdmFfbGlzdCBhcmdzKSA7CgpleHRlcm4gaW50IF9JT192ZHByaW50ZiAoaW50
IGQsIF9fY29uc3QgY2hhciAqZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBhcmcpIDsKZXh0ZXJuIGlu
dCBfSU9fdnNucHJpbnRmIChjaGFyICpzdHJpbmcsIHNpemVfdCBtYXhsZW4sIF9fY29uc3QgY2hh
ciAqZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBhcmdzKSA7CgoKCmV4dGVybiBzaXplX3QgX0lPX2dl
dGxpbmUgKF9JT19GSUxFICosY2hhciAqLCBzaXplX3QsIGludCwgaW50KSA7CmV4dGVybiBzaXpl
X3QgX0lPX2dldGxpbmVfaW5mbyAoX0lPX0ZJTEUgKixjaGFyICosIHNpemVfdCwgaW50LCBpbnQs
IGludCAqKSA7CgpleHRlcm4gX19zc2l6ZV90IF9JT19nZXRkZWxpbSAoY2hhciAqKiwgc2l6ZV90
ICosIGludCwgX0lPX0ZJTEUgKikgOwpleHRlcm4gc2l6ZV90IF9JT19nZXR3bGluZSAoX0lPX0ZJ
TEUgKix3Y2hhcl90ICosIHNpemVfdCwgd2ludF90LCBpbnQpIDsKCmV4dGVybiBzaXplX3QgX0lP
X2dldHdsaW5lX2luZm8gKF9JT19GSUxFICosd2NoYXJfdCAqLCBzaXplX3QsIHdpbnRfdCwgaW50
LCB3aW50X3QgKikgOwoKZXh0ZXJuIGRvdWJsZSBfSU9fc3RydG9kIChjb25zdCBjaGFyICosIGNo
YXIgKiopIDsKZXh0ZXJuIGNoYXIgKl9JT19kdG9hIChkb3VibGUgX19kLCBpbnQgX19tb2RlLCBp
bnQgX19uZGlnaXRzLCBpbnQgKl9fZGVjcHQsIGludCAqX19zaWduLCBjaGFyICoqX19ydmUpIDsK
CmV4dGVybiBpbnQgX0lPX291dGZsb2F0IChkb3VibGUgX192YWx1ZSwgX0lPX0ZJTEUgKl9fc2Is
IGludCBfX3R5cGUsIGludCBfX3dpZHRoLCBpbnQgX19wcmVjaXNpb24sIGludCBfX2ZsYWdzLCBp
bnQgX19zaWduX21vZGUsIGludCBfX2ZpbGwpIDsKCgoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzICpfSU9fbGlzdF9hbGw7CmV4dGVybiB2b2lkICgqX0lPX2NsZWFudXBfcmVnaXN0cmF0aW9u
X25lZWRlZCkgKHZvaWQpOwoKCmV4dGVybiBpbnQgX0lPX2ZsdXNoX2FsbF9pbnRlcm5hbCAodm9p
ZCkgOwpleHRlcm4gdW5zaWduZWQgX0lPX2FkanVzdF9jb2x1bW5faW50ZXJuYWwgKHVuc2lnbmVk
LCBjb25zdCBjaGFyICosIGludCkgOwoKZXh0ZXJuIGludCBfSU9fZGVmYXVsdF91Zmxvd19pbnRl
cm5hbCAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZGVmYXVsdF9maW5pc2hfaW50ZXJu
YWwgKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gaW50IF9JT19kZWZhdWx0X3BiYWNrZmFpbF9p
bnRlcm5hbCAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiBzaXplX3QgX0lPX2RlZmF1bHRfeHNw
dXRuX2ludGVybmFsIChfSU9fRklMRSAqLCBjb25zdCB2b2lkICosIHNpemVfdCkgOwoKZXh0ZXJu
IHNpemVfdCBfSU9fZGVmYXVsdF94c2dldG5faW50ZXJuYWwgKF9JT19GSUxFICosIHZvaWQgKiwg
c2l6ZV90KSA7CgpleHRlcm4gaW50IF9JT19kZWZhdWx0X2RvYWxsb2NhdGVfaW50ZXJuYWwgKF9J
T19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX3dkZWZhdWx0X2ZpbmlzaF9pbnRlcm5hbCAoX0lP
X0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX0lPX3dkZWZhdWx0X3BiYWNrZmFpbF9pbnRl
cm5hbCAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CmV4dGVybiBzaXplX3QgX0lPX3dkZWZhdWx0X3hz
cHV0bl9pbnRlcm5hbCAoX0lPX0ZJTEUgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVy
biBzaXplX3QgX0lPX3dkZWZhdWx0X3hzZ2V0bl9pbnRlcm5hbCAoX0lPX0ZJTEUgKiwgdm9pZCAq
LCBzaXplX3QpIDsKCmV4dGVybiBpbnQgX0lPX3dkZWZhdWx0X2RvYWxsb2NhdGVfaW50ZXJuYWwg
KF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfSU9fd2RlZmF1bHRfdWZsb3dfaW50ZXJuYWwg
KF9JT19GSUxFICopIDsKCmV4dGVybiBpbnQgX0lPX2ZpbGVfZG9hbGxvY2F0ZV9pbnRlcm5hbCAo
X0lPX0ZJTEUgKikgOwpleHRlcm4gX0lPX0ZJTEUqIF9JT19maWxlX3NldGJ1Zl9pbnRlcm5hbCAo
X0lPX0ZJTEUgKiwgY2hhciAqLCBfX3NzaXplX3QpIDsKCmV4dGVybiBfX29mZjY0X3QgX0lPX2Zp
bGVfc2Vla29mZl9pbnRlcm5hbCAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwoK
ZXh0ZXJuIHNpemVfdCBfSU9fZmlsZV94c3B1dG5faW50ZXJuYWwgKF9JT19GSUxFICosIGNvbnN0
IHZvaWQgKiwgc2l6ZV90KSA7CgpleHRlcm4gc2l6ZV90IF9JT19maWxlX3hzZ2V0bl9pbnRlcm5h
bCAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVybiBpbnQgX0lPX2ZpbGVfc3Rh
dF9pbnRlcm5hbCAoX0lPX0ZJTEUgKiwgdm9pZCAqKSA7CmV4dGVybiBpbnQgX0lPX2ZpbGVfY2xv
c2VfaW50ZXJuYWwgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9fZmlsZV9jbG9zZV9pdF9p
bnRlcm5hbCAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9JT19maWxlX3VuZGVyZmxvd19pbnRl
cm5hbCAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9JT19maWxlX292ZXJmbG93X2ludGVybmFs
IChfSU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIHZvaWQgX0lPX2ZpbGVfaW5pdF9pbnRlcm5hbCAo
c3RydWN0IF9JT19GSUxFX3BsdXMgKikgOwpleHRlcm4gX0lPX0ZJTEUqIF9JT19maWxlX2F0dGFj
aF9pbnRlcm5hbCAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiBfSU9fRklMRSogX0lPX2ZpbGVf
Zm9wZW5faW50ZXJuYWwgKF9JT19GSUxFICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBp
bnQpIDsKCmV4dGVybiBfX3NzaXplX3QgX0lPX2ZpbGVfcmVhZF9pbnRlcm5hbCAoX0lPX0ZJTEUg
Kiwgdm9pZCAqLCBfX3NzaXplX3QpIDsKCmV4dGVybiBpbnQgX0lPX2ZpbGVfc3luY19pbnRlcm5h
bCAoX0lPX0ZJTEUgKikgOwpleHRlcm4gX19vZmY2NF90IF9JT19maWxlX3NlZWtfaW50ZXJuYWwg
KF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KSA7CmV4dGVybiB2b2lkIF9JT19maWxlX2Zpbmlz
aF9pbnRlcm5hbCAoX0lPX0ZJTEUgKiwgaW50KSA7CgpleHRlcm4gc2l6ZV90IF9JT193ZmlsZV94
c3B1dG5faW50ZXJuYWwgKF9JT19GSUxFICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KSA7CgpleHRl
cm4gX19vZmY2NF90IF9JT193ZmlsZV9zZWVrb2ZmX2ludGVybmFsIChfSU9fRklMRSAqLCBfX29m
ZjY0X3QsIGludCwgaW50KSA7CgpleHRlcm4gd2ludF90IF9JT193ZmlsZV9zeW5jX2ludGVybmFs
IChfSU9fRklMRSAqKSA7CgpleHRlcm4gaW50IF9JT19zdHJfdW5kZXJmbG93X2ludGVybmFsIChf
SU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX3N0cl9vdmVyZmxvd19pbnRlcm5hbCAoX0lPX0ZJ
TEUgKiwgaW50KSA7CmV4dGVybiBpbnQgX0lPX3N0cl9wYmFja2ZhaWxfaW50ZXJuYWwgKF9JT19G
SUxFICosIGludCkgOwpleHRlcm4gX19vZmY2NF90IF9JT19zdHJfc2Vla29mZl9pbnRlcm5hbCAo
X0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwoKZXh0ZXJuIHZvaWQgX0lPX3N0cl9p
bml0X3N0YXRpY19pbnRlcm5hbCAoc3RydWN0IF9JT19zdHJmaWxlXyAqLCBjaGFyICosIGludCwg
Y2hhciAqKSA7CgoKZXh0ZXJuIHN0cnVjdCBfSU9fanVtcF90IF9JT19maWxlX2p1bXBzX2ludGVy
bmFsIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIHN0cnVj
dCBfSU9fanVtcF90IF9JT193ZmlsZV9qdW1wc19pbnRlcm5hbCBfX2F0dHJpYnV0ZV9fICgodmlz
aWJpbGl0eSAoImhpZGRlbiIpKSk7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgKl9JT19s
aXN0X2FsbF9pbnRlcm5hbCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7
CgpleHRlcm4gdm9pZCBfSU9fbGlua19pbl9pbnRlcm5hbCAoc3RydWN0IF9JT19GSUxFX3BsdXMg
KikgOwpleHRlcm4gaW50IF9JT19zcHV0YmFja2NfaW50ZXJuYWwgKF9JT19GSUxFICosIGludCkg
OwpleHRlcm4gdm9pZCBfSU9fd2RvYWxsb2NidWZfaW50ZXJuYWwgKF9JT19GSUxFICopIDsKCmV4
dGVybiBzaXplX3QgX0lPX3NnZXRuX2ludGVybmFsIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVf
dCk7CmV4dGVybiB2b2lkIF9JT19mbHVzaF9hbGxfbGluZWJ1ZmZlcmVkX2ludGVybmFsICh2b2lk
KSA7CmV4dGVybiBpbnQgX0lPX3N3aXRjaF90b193Z2V0X21vZGVfaW50ZXJuYWwgKF9JT19GSUxF
ICopIDsKZXh0ZXJuIHZvaWQgX0lPX3Vuc2F2ZV9tYXJrZXJzX2ludGVybmFsIChfSU9fRklMRSAq
KSA7CmV4dGVybiB2b2lkIF9JT19zd2l0Y2hfdG9fbWFpbl93Z2V0X2FyZWFfaW50ZXJuYWwgKF9J
T19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9fd2RvX3dyaXRlX2ludGVybmFsIChfSU9fRklMRSAq
LCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCkgOwoKZXh0ZXJuIGludCBfSU9fZG9fd3JpdGVfaW50
ZXJuYWwgKF9JT19GSUxFICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KSA7CmV4dGVybiBfX3NzaXpl
X3QgX0lPX3BhZG5faW50ZXJuYWwgKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KTsKZXh0ZXJu
IHNpemVfdCBfSU9fZ2V0bGluZV9pbmZvX2ludGVybmFsIChfSU9fRklMRSAqLGNoYXIgKiwgc2l6
ZV90LCBpbnQsIGludCwgaW50ICopIDsKCgpleHRlcm4gc2l6ZV90IF9JT19nZXRsaW5lX2ludGVy
bmFsIChfSU9fRklMRSAqLCBjaGFyICosIHNpemVfdCwgaW50LCBpbnQpIDsKCmV4dGVybiB2b2lk
IF9JT19mcmVlX3diYWNrdXBfYXJlYV9pbnRlcm5hbCAoX0lPX0ZJTEUgKik7CmV4dGVybiB2b2lk
IF9JT19mcmVlX2JhY2t1cF9hcmVhX2ludGVybmFsIChfSU9fRklMRSAqKTsKZXh0ZXJuIHZvaWQg
X0lPX3N3aXRjaF90b193YmFja3VwX2FyZWFfaW50ZXJuYWwgKF9JT19GSUxFICopIDsKZXh0ZXJu
IHZvaWQgX0lPX3NldGJfaW50ZXJuYWwgKF9JT19GSUxFICosIGNoYXIgKiwgY2hhciAqLCBpbnQp
IDsKZXh0ZXJuIHdpbnRfdCBfSU9fc3B1dGJhY2t3Y19pbnRlcm5hbCAoX0lPX0ZJTEUgKiwgd2lu
dF90KSA7CmV4dGVybiBpbnQgX0lPX3N3aXRjaF90b19nZXRfbW9kZV9pbnRlcm5hbCAoX0lPX0ZJ
TEUgKikgOwpleHRlcm4gaW50IF9JT192ZnNjYW5mX2ludGVybmFsIChfSU9fRklMRSAqIF9fcmVz
dHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBfX3Jl
c3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwg
aW50ICpfX3Jlc3RyaWN0KTsKZXh0ZXJuIGludCBfSU9fdmZwcmludGZfaW50ZXJuYWwgKF9JT19G
SUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QpOwpleHRlcm4gdm9pZCBfSU9fZG9hbGxv
Y2J1Zl9pbnRlcm5hbCAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fd3NldGJfaW50ZXJu
YWwgKF9JT19GSUxFICosIHdjaGFyX3QgKiwgd2NoYXJfdCAqLCBpbnQpIDsKZXh0ZXJuIF9fb2Zm
NjRfdCBfSU9fc2Vla29mZl91bmxvY2tlZCAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGlu
dCkKICAgICBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBf
X29mZjY0X3QgX0lPX3NlZWtwb3NfdW5sb2NrZWQgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50
KQogICAgIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIGlu
dCBfSU9fcHV0Y19pbnRlcm5hbCAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApOwpleHRlcm4gdm9p
ZCBfSU9faW5pdF9pbnRlcm5hbCAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiB2b2lkIF9JT191
bl9saW5rX2ludGVybmFsIChzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyAqKSA7CiMgNzU5ICIuLi9saWJp
by9saWJpb1AuaCIKIyAxICIuLi9pbmNsdWRlL3VuaXN0ZC5oIiAxCgojIDEgIi4uL3Bvc2l4L3Vu
aXN0ZC5oIiAxCiMgMjggIi4uL3Bvc2l4L3VuaXN0ZC5oIgoKIyAxNzUgIi4uL3Bvc2l4L3VuaXN0
ZC5oIgojIDEgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3Bv
c2l4X29wdC5oIiAxCiMgMTc2ICIuLi9wb3NpeC91bmlzdGQuaCIgMgoKCgojIDEgIi4uL3N5c2Rl
cHMvZ2VuZXJpYy9iaXRzL2Vudmlyb25tZW50cy5oIiAxCiMgMjMgIi4uL3N5c2RlcHMvZ2VuZXJp
Yy9iaXRzL2Vudmlyb25tZW50cy5oIgojIDEgIi4uL3N5c2RlcHMveDg2XzY0L2JpdHMvd29yZHNp
emUuaCIgMQojIDI0ICIuLi9zeXNkZXBzL2dlbmVyaWMvYml0cy9lbnZpcm9ubWVudHMuaCIgMgoj
IDE4MCAiLi4vcG9zaXgvdW5pc3RkLmgiIDIKIyAxOTkgIi4uL3Bvc2l4L3VuaXN0ZC5oIgojIDEg
Ii91c3IvbGliNjQvZ2NjLWxpYi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzIDQKIyAyMDAgIi4uL3Bvc2l4L3VuaXN0ZC5oIiAyCiMgMjQ3ICIuLi9wb3NpeC91bmlz
dGQuaCIKdHlwZWRlZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7CiMgMjYwICIuLi9wb3NpeC91bmlz
dGQuaCIKZXh0ZXJuIGludCBhY2Nlc3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBl
KSA7CgoKCgpleHRlcm4gaW50IGV1aWRhY2Nlc3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQg
X190eXBlKSA7CiMgMjkwICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0ZXJuIF9fb2ZmX3QgbHNlZWsg
KGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIDsKIyAzMDIgIi4uL3Bv
c2l4L3VuaXN0ZC5oIgpleHRlcm4gX19vZmY2NF90IGxzZWVrNjQgKGludCBfX2ZkLCBfX29mZjY0
X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgOwoKCgpleHRlcm4gaW50IGNsb3NlIChpbnQgX19m
ZCkgOwoKCgpleHRlcm4gc3NpemVfdCByZWFkIChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVf
dCBfX25ieXRlcykgOwoKCmV4dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2
b2lkICpfX2J1Ziwgc2l6ZV90IF9fbikgOwoKCgpleHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9f
ZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsIF9fb2ZmX3QgX19vZmZzZXQpCiAgICAg
OwpleHRlcm4gc3NpemVfdCBwd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBz
aXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKIyAz
NDAgIi4uL3Bvc2l4L3VuaXN0ZC5oIgpleHRlcm4gc3NpemVfdCBwcmVhZDY0IChpbnQgX19mZCwg
dm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgX19v
ZmY2NF90IF9fb2Zmc2V0KSA7CgoKZXh0ZXJuIHNzaXplX3QgcHdyaXRlNjQgKGludCBfX2ZkLCBf
X2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAg
X19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKCgoKCgpleHRlcm4gaW50IHBpcGUgKGludCBfX3BpcGVk
ZXNbMl0pIDsKIyAzNjIgIi4uL3Bvc2l4L3VuaXN0ZC5oIgpleHRlcm4gdW5zaWduZWQgaW50IGFs
YXJtICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSA7CiMgMzcxICIuLi9wb3NpeC91bmlzdGQuaCIK
ZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgOwoKCgoK
CgpleHRlcm4gX191c2Vjb25kc190IHVhbGFybSAoX191c2Vjb25kc190IF9fdmFsdWUsIF9fdXNl
Y29uZHNfdCBfX2ludGVydmFsKQogICAgIDsKCgoKZXh0ZXJuIGludCB1c2xlZXAgKF9fdXNlY29u
ZHNfdCBfX3VzZWNvbmRzKSA7CgoKCgoKZXh0ZXJuIGludCBwYXVzZSAodm9pZCkgOwoKCgpleHRl
cm4gaW50IGNob3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dp
ZF90IF9fZ3JvdXApCiAgICAgOwoKCgpleHRlcm4gaW50IGZjaG93biAoaW50IF9fZmQsIF9fdWlk
X3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSA7CgoKCgpleHRlcm4gaW50IGxjaG93biAoX19j
b25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAg
IDsKCgoKCmV4dGVybiBpbnQgY2hkaXIgKF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVy
biBpbnQgZmNoZGlyIChpbnQgX19mZCkgOwojIDQyMyAiLi4vcG9zaXgvdW5pc3RkLmgiCmV4dGVy
biBjaGFyICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXplKSA7CgoKCgoKZXh0ZXJu
IGNoYXIgKmdldF9jdXJyZW50X2Rpcl9uYW1lICh2b2lkKSA7CgoKCgoKCmV4dGVybiBjaGFyICpn
ZXR3ZCAoY2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBpbnQgZHVwIChpbnQgX19mZCkgOwoKCmV4
dGVybiBpbnQgZHVwMiAoaW50IF9fZmQsIGludCBfX2ZkMikgOwoKCmV4dGVybiBjaGFyICoqX19l
bnZpcm9uOwoKZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwoKCgoKCmV4dGVybiBpbnQgZXhlY3ZlIChf
X2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwKICAgICAgICAgICAg
ICAgICAgIGNoYXIgKl9fY29uc3QgX19lbnZwW10pIDsKCgoKCmV4dGVybiBpbnQgZmV4ZWN2ZSAo
aW50IF9fZmQsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sIGNoYXIgKl9fY29uc3QgX19lbnZwW10p
CiAgICAgOwoKCgoKZXh0ZXJuIGludCBleGVjdiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIg
Kl9fY29uc3QgX19hcmd2W10pIDsKCgoKZXh0ZXJuIGludCBleGVjbGUgKF9fY29uc3QgY2hhciAq
X19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBleGVjbCAo
X19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgOwoKCgpleHRl
cm4gaW50IGV4ZWN2cCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGNoYXIgKl9fY29uc3QgX19hcmd2
W10pIDsKCgoKCmV4dGVybiBpbnQgZXhlY2xwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25z
dCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCgpleHRlcm4gaW50IG5pY2UgKGludCBfX2luYykgOwoK
CgoKZXh0ZXJuIHZvaWQgX2V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKCgoKCiMgMSAiLi4vc3lzZGVwcy9nZW5lcmljL2JpdHMvY29uZm5hbWUuaCIg
MQojIDI1ICIuLi9zeXNkZXBzL2dlbmVyaWMvYml0cy9jb25mbmFtZS5oIgplbnVtCiAgewogICAg
X1BDX0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9JTlBVVCwKCiAg
ICBfUENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBFX0JVRiwKCiAg
ICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgogICAgX1BDX1ZESVNB
QkxFLAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywKCiAgICBfUENfUFJJT19J
TywKCiAgICBfUENfU09DS19NQVhCVUYsCgogICAgX1BDX0ZJTEVTSVpFQklUUywKCiAgICBfUENf
UkVDX0lOQ1JfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUFYX1hGRVJfU0laRSwKCiAgICBfUENf
UkVDX01JTl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19YRkVSX0FMSUdOLAoKICAgIF9QQ19BTExP
Q19TSVpFX01JTiwKCiAgICBfUENfU1lNTElOS19NQVgKCiAgfTsKCgplbnVtCiAgewogICAgX1ND
X0FSR19NQVgsCgogICAgX1NDX0NISUxEX01BWCwKCiAgICBfU0NfQ0xLX1RDSywKCiAgICBfU0Nf
TkdST1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFYLAoKICAgIF9TQ19TVFJFQU1fTUFYLAoKICAg
IF9TQ19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0JfQ09OVFJPTCwKCiAgICBfU0NfU0FWRURfSURT
LAoKICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoKICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5H
LAoKICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FTWU5DSFJPTk9VU19JTywKCiAgICBfU0NfUFJJ
T1JJVElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9OSVpFRF9JTywKCiAgICBfU0NfRlNZTkMsCgog
ICAgX1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0NfTUVNTE9DSywKCiAgICBfU0NfTUVNTE9DS19S
QU5HRSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sCgogICAgX1NDX01FU1NBR0VfUEFTU0lO
RywKCiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoK
ICAgIF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBfU0NfQUlPX01BWCwKCiAgICBfU0NfQUlPX1BS
SU9fREVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJTUVSX01BWCwKCiAgICBfU0NfTVFfT1BFTl9N
QVgsCgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoKICAgIF9TQ19QQUdF
U0laRSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1TX01BWCwKCiAgICBf
U0NfU0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAgIF9TQ19USU1FUl9N
QVgsCgoKCgogICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1fTUFYLAoKICAgIF9T
Q19CQ19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAgX1NDX0NPTExfV0VJ
R0hUU19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCiAgICBfU0NfRVhQUl9ORVNUX01B
WCwKCiAgICBfU0NfTElORV9NQVgsCgogICAgX1NDX1JFX0RVUF9NQVgsCgogICAgX1NDX0NIQVJD
TEFTU19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVSU0lPTiwKCiAgICBfU0NfMl9DX0JJTkQsCgog
ICAgX1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9SVF9ERVYsCgogICAgX1NDXzJfRk9SVF9SVU4s
CgogICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18yX0xPQ0FMRURFRiwKCgogICAgX1NDX1BJSSwK
CiAgICBfU0NfUElJX1hUSSwKCiAgICBfU0NfUElJX1NPQ0tFVCwKCiAgICBfU0NfUElJX0lOVEVS
TkVULAoKICAgIF9TQ19QSUlfT1NJLAoKICAgIF9TQ19QT0xMLAoKICAgIF9TQ19TRUxFQ1QsCgog
ICAgX1NDX1VJT19NQVhJT1YsCgogICAgX1NDX0lPVl9NQVggPSBfU0NfVUlPX01BWElPViwKCiAg
ICBfU0NfUElJX0lOVEVSTkVUX1NUUkVBTSwKCiAgICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAoK
ICAgIF9TQ19QSUlfT1NJX0NPVFMsCgogICAgX1NDX1BJSV9PU0lfQ0xUUywKCiAgICBfU0NfUElJ
X09TSV9NLAoKICAgIF9TQ19UX0lPVl9NQVgsCgoKCiAgICBfU0NfVEhSRUFEUywKCiAgICBfU0Nf
VEhSRUFEX1NBRkVfRlVOQ1RJT05TLAoKICAgIF9TQ19HRVRHUl9SX1NJWkVfTUFYLAoKICAgIF9T
Q19HRVRQV19SX1NJWkVfTUFYLAoKICAgIF9TQ19MT0dJTl9OQU1FX01BWCwKCiAgICBfU0NfVFRZ
X05BTUVfTUFYLAoKICAgIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TLAoKICAgIF9T
Q19USFJFQURfS0VZU19NQVgsCgogICAgX1NDX1RIUkVBRF9TVEFDS19NSU4sCgogICAgX1NDX1RI
UkVBRF9USFJFQURTX01BWCwKCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSLAoKICAgIF9T
Q19USFJFQURfQVRUUl9TVEFDS1NJWkUsCgogICAgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVM
SU5HLAoKICAgIF9TQ19USFJFQURfUFJJT19JTkhFUklULAoKICAgIF9TQ19USFJFQURfUFJJT19Q
Uk9URUNULAoKICAgIF9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQsCgoKICAgIF9TQ19OUFJPQ0VT
U09SU19DT05GLAoKICAgIF9TQ19OUFJPQ0VTU09SU19PTkxOLAoKICAgIF9TQ19QSFlTX1BBR0VT
LAoKICAgIF9TQ19BVlBIWVNfUEFHRVMsCgogICAgX1NDX0FURVhJVF9NQVgsCgogICAgX1NDX1BB
U1NfTUFYLAoKCiAgICBfU0NfWE9QRU5fVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fWENVX1ZFUlNJ
T04sCgogICAgX1NDX1hPUEVOX1VOSVgsCgogICAgX1NDX1hPUEVOX0NSWVBULAoKICAgIF9TQ19Y
T1BFTl9FTkhfSTE4TiwKCiAgICBfU0NfWE9QRU5fU0hNLAoKCiAgICBfU0NfMl9DSEFSX1RFUk0s
CgogICAgX1NDXzJfQ19WRVJTSU9OLAoKICAgIF9TQ18yX1VQRSwKCgogICAgX1NDX1hPUEVOX1hQ
RzIsCgogICAgX1NDX1hPUEVOX1hQRzMsCgogICAgX1NDX1hPUEVOX1hQRzQsCgoKICAgIF9TQ19D
SEFSX0JJVCwKCiAgICBfU0NfQ0hBUl9NQVgsCgogICAgX1NDX0NIQVJfTUlOLAoKICAgIF9TQ19J
TlRfTUFYLAoKICAgIF9TQ19JTlRfTUlOLAoKICAgIF9TQ19MT05HX0JJVCwKCiAgICBfU0NfV09S
RF9CSVQsCgogICAgX1NDX01CX0xFTl9NQVgsCgogICAgX1NDX05aRVJPLAoKICAgIF9TQ19TU0la
RV9NQVgsCgogICAgX1NDX1NDSEFSX01BWCwKCiAgICBfU0NfU0NIQVJfTUlOLAoKICAgIF9TQ19T
SFJUX01BWCwKCiAgICBfU0NfU0hSVF9NSU4sCgogICAgX1NDX1VDSEFSX01BWCwKCiAgICBfU0Nf
VUlOVF9NQVgsCgogICAgX1NDX1VMT05HX01BWCwKCiAgICBfU0NfVVNIUlRfTUFYLAoKCiAgICBf
U0NfTkxfQVJHTUFYLAoKICAgIF9TQ19OTF9MQU5HTUFYLAoKICAgIF9TQ19OTF9NU0dNQVgsCgog
ICAgX1NDX05MX05NQVgsCgogICAgX1NDX05MX1NFVE1BWCwKCiAgICBfU0NfTkxfVEVYVE1BWCwK
CgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAoK
ICAgIF9TQ19YQlM1X0xQNjRfT0ZGNjQsCgogICAgX1NDX1hCUzVfTFBCSUdfT0ZGQklHLAoKCiAg
ICBfU0NfWE9QRU5fTEVHQUNZLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRSwKCiAgICBfU0NfWE9Q
RU5fUkVBTFRJTUVfVEhSRUFEUywKCgogICAgX1NDX0FEVklTT1JZX0lORk8sCgogICAgX1NDX0JB
UlJJRVJTLAoKICAgIF9TQ19CQVNFLAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVCwKCiAgICBfU0Nf
Q19MQU5HX1NVUFBPUlRfUiwKCiAgICBfU0NfQ0xPQ0tfU0VMRUNUSU9OLAoKICAgIF9TQ19DUFVU
SU1FLAoKICAgIF9TQ19USFJFQURfQ1BVVElNRSwKCiAgICBfU0NfREVWSUNFX0lPLAoKICAgIF9T
Q19ERVZJQ0VfU1BFQ0lGSUMsCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLAoKICAgIF9TQ19G
RF9NR01ULAoKICAgIF9TQ19GSUZPLAoKICAgIF9TQ19QSVBFLAoKICAgIF9TQ19GSUxFX0FUVFJJ
QlVURVMsCgogICAgX1NDX0ZJTEVfTE9DS0lORywKCiAgICBfU0NfRklMRV9TWVNURU0sCgogICAg
X1NDX01PTk9UT05JQ19DTE9DSywKCiAgICBfU0NfTVVMVElfUFJPQ0VTUywKCiAgICBfU0NfU0lO
R0xFX1BST0NFU1MsCgogICAgX1NDX05FVFdPUktJTkcsCgogICAgX1NDX1JFQURFUl9XUklURVJf
TE9DS1MsCgogICAgX1NDX1NQSU5fTE9DS1MsCgogICAgX1NDX1JFR0VYUCwKCiAgICBfU0NfUkVH
RVhfVkVSU0lPTiwKCiAgICBfU0NfU0hFTEwsCgogICAgX1NDX1NJR05BTFMsCgogICAgX1NDX1NQ
QVdOLAoKICAgIF9TQ19TUE9SQURJQ19TRVJWRVIsCgogICAgX1NDX1RIUkVBRF9TUE9SQURJQ19T
RVJWRVIsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRSwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNF
X1IsCgogICAgX1NDX1RJTUVPVVRTLAoKICAgIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNUUywKCiAg
ICBfU0NfVVNFUl9HUk9VUFMsCgogICAgX1NDX1VTRVJfR1JPVVBTX1IsCgogICAgX1NDXzJfUEJT
LAoKICAgIF9TQ18yX1BCU19BQ0NPVU5USU5HLAoKICAgIF9TQ18yX1BCU19MT0NBVEUsCgogICAg
X1NDXzJfUEJTX01FU1NBR0UsCgogICAgX1NDXzJfUEJTX1RSQUNLLAoKICAgIF9TQ19TWU1MT09Q
X01BWCwKCiAgICBfU0NfU1RSRUFNUywKCiAgICBfU0NfMl9QQlNfQ0hFQ0tQT0lOVCwKCgogICAg
X1NDX1Y2X0lMUDMyX09GRjMyLAoKICAgIF9TQ19WNl9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1Y2
X0xQNjRfT0ZGNjQsCgogICAgX1NDX1Y2X0xQQklHX09GRkJJRywKCgogICAgX1NDX0hPU1RfTkFN
RV9NQVgsCgogICAgX1NDX1RSQUNFLAoKICAgIF9TQ19UUkFDRV9FVkVOVF9GSUxURVIsCgogICAg
X1NDX1RSQUNFX0lOSEVSSVQsCgogICAgX1NDX1RSQUNFX0xPRwoKICB9OwoKCgoKCmVudW0KICB7
CiAgICBfQ1NfUEFUSCwKCgoKCiAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCgogICAgX0NTX0xG
U19MREZMQUdTLAoKICAgIF9DU19MRlNfTElCUywKCiAgICBfQ1NfTEZTX0xJTlRGTEFHUywKCiAg
ICBfQ1NfTEZTNjRfQ0ZMQUdTLAoKICAgIF9DU19MRlM2NF9MREZMQUdTLAoKICAgIF9DU19MRlM2
NF9MSUJTLAoKICAgIF9DU19MRlM2NF9MSU5URkxBR1MsCgoKCgogICAgX0NTX1hCUzVfSUxQMzJf
T0ZGMzJfQ0ZMQUdTID0gMTEwMCwKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTLAoK
ICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJf
TElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hC
UzVfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMs
CgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0
X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MsCgogICAgX0NT
X1hCUzVfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdT
LAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdf
T0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NT
X1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9P
RkYzMl9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAg
X0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09G
RjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAg
ICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lM
UDMyX09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElOVEZMQUdT
LAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZf
TFA2NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJQlMsCgog
ICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9M
UEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTERGTEFH
UywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2
X0xQQklHX09GRkJJR19MSU5URkxBR1MsCgoKCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9F
TlZTCgogIH07CiMgNTAxICIuLi9wb3NpeC91bmlzdGQuaCIgMgoKCmV4dGVybiBsb25nIGludCBw
YXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpIDsKCgpleHRlcm4gbG9u
ZyBpbnQgZnBhdGhjb25mIChpbnQgX19mZCwgaW50IF9fbmFtZSkgOwoKCmV4dGVybiBsb25nIGlu
dCBzeXNjb25mIChpbnQgX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4
dGVybiBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xl
bikgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fcGlkX3Qg
Z2V0cHBpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgOwojIDUz
NiAiLi4vcG9zaXgvdW5pc3RkLmgiCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBf
X3BpZCkgOwoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkgOwoKCgoKCgpl
eHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSA7CiMgNTYy
ICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSA7CiMgNTgwICIu
Li9wb3NpeC91bmlzdGQuaCIKZXh0ZXJuIF9fcGlkX3Qgc2V0c2lkICh2b2lkKSA7CgoKCmV4dGVy
biBfX3BpZF90IGdldHNpZCAoX19waWRfdCBfX3BpZCkgOwoKCgpleHRlcm4gX191aWRfdCBnZXR1
aWQgKHZvaWQpIDsKCgpleHRlcm4gX191aWRfdCBnZXRldWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9f
Z2lkX3QgZ2V0Z2lkICh2b2lkKSA7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgOwoK
CgoKZXh0ZXJuIGludCBnZXRncm91cHMgKGludCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10pIDsK
CgoKZXh0ZXJuIGludCBncm91cF9tZW1iZXIgKF9fZ2lkX3QgX19naWQpIDsKCgoKCgoKZXh0ZXJu
IGludCBzZXR1aWQgKF9fdWlkX3QgX191aWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0cmV1aWQgKF9f
dWlkX3QgX19ydWlkLCBfX3VpZF90IF9fZXVpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRldWlkIChf
X3VpZF90IF9fdWlkKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0Z2lkIChfX2dpZF90IF9fZ2lkKSA7
CgoKCgpleHRlcm4gaW50IHNldHJlZ2lkIChfX2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQp
IDsKCgoKCmV4dGVybiBpbnQgc2V0ZWdpZCAoX19naWRfdCBfX2dpZCkgOwoKCgoKCmV4dGVybiBp
bnQgZ2V0cmVzdWlkIChfX3VpZF90ICpfX2V1aWQsIF9fdWlkX3QgKl9fcnVpZCwgX191aWRfdCAq
X19zdWlkKTsKCgoKZXh0ZXJuIGludCBnZXRyZXNnaWQgKF9fZ2lkX3QgKl9fZWdpZCwgX19naWRf
dCAqX19yZ2lkLCBfX2dpZF90ICpfX3NnaWQpOwoKCgpleHRlcm4gaW50IHNldHJlc3VpZCAoX191
aWRfdCBfX2V1aWQsIF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9fc3VpZCk7CgoKCmV4dGVybiBp
bnQgc2V0cmVzZ2lkIChfX2dpZF90IF9fZWdpZCwgX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19z
Z2lkKTsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgZm9yayAodm9pZCkgOwoKCgoKCgpleHRlcm4gX19w
aWRfdCB2Zm9yayAodm9pZCkgOwoKCgoKCmV4dGVybiBjaGFyICp0dHluYW1lIChpbnQgX19mZCkg
OwoKCgpleHRlcm4gaW50IHR0eW5hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3Qg
X19idWZsZW4pIDsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBfX2ZkKSA7CgoKCgoKZXh0ZXJu
IGludCB0dHlzbG90ICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGxpbmsgKF9fY29uc3QgY2hhciAq
X19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIDsKCgoKZXh0ZXJuIGludCBzeW1saW5rIChfX2Nv
bnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7CgoKCgpleHRlcm4gaW50IHJl
YWRsaW5rIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wYXRoLCBjaGFyICpfX3Jlc3RyaWN0
IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4pIDsKCgoKZXh0ZXJuIGlu
dCB1bmxpbmsgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKZXh0ZXJuIGludCBybWRpciAoX19j
b25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwIChpbnQgX19m
ZCkgOwoKCmV4dGVybiBpbnQgdGNzZXRwZ3JwIChpbnQgX19mZCwgX19waWRfdCBfX3BncnBfaWQp
IDsKCgoKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldGxv
Z2luX3IgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbmFtZV9sZW4pIDsKCgoKCmV4dGVybiBpbnQg
c2V0bG9naW4gKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CiMgNzQ0ICIuLi9wb3NpeC91bmlzdGQu
aCIKIyAxICIuLi9pbmNsdWRlL2dldG9wdC5oIiAxCgoKCiMgMSAiLi4vcG9zaXgvZ2V0b3B0Lmgi
IDEKIyA0NyAiLi4vcG9zaXgvZ2V0b3B0LmgiCmV4dGVybiBjaGFyICpvcHRhcmc7CiMgNjEgIi4u
L3Bvc2l4L2dldG9wdC5oIgpleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJy
OwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyAxNDUgIi4uL3Bvc2l4L2dldG9wdC5oIgpleHRlcm4g
aW50IGdldG9wdCAoaW50IF9fX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX19hcmd2LCBjb25zdCBjaGFy
ICpfX3Nob3J0b3B0cyk7CiMgNSAiLi4vaW5jbHVkZS9nZXRvcHQuaCIgMgojIDc0NSAiLi4vcG9z
aXgvdW5pc3RkLmgiIDIKCgoKCgoKCmV4dGVybiBpbnQgZ2V0aG9zdG5hbWUgKGNoYXIgKl9fbmFt
ZSwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0aG9zdG5hbWUgKF9fY29uc3Qg
Y2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKCgoKZXh0ZXJuIGludCBzZXRob3N0aWQgKGxv
bmcgaW50IF9faWQpIDsKCgoKCgpleHRlcm4gaW50IGdldGRvbWFpbm5hbWUgKGNoYXIgKl9fbmFt
ZSwgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgc2V0ZG9tYWlubmFtZSAoX19jb25zdCBjaGFy
ICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgoKCmV4dGVybiBpbnQgdmhhbmd1cCAodm9pZCkg
OwoKCmV4dGVybiBpbnQgcmV2b2tlIChfX2NvbnN0IGNoYXIgKl9fZmlsZSkgOwoKCgoKCgoKZXh0
ZXJuIGludCBwcm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXpl
X3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBp
bnQgX19zY2FsZSkgOwoKCgoKCmV4dGVybiBpbnQgYWNjdCAoX19jb25zdCBjaGFyICpfX25hbWUp
IDsKCgoKZXh0ZXJuIGNoYXIgKmdldHVzZXJzaGVsbCAodm9pZCkgOwpleHRlcm4gdm9pZCBlbmR1
c2Vyc2hlbGwgKHZvaWQpIDsKZXh0ZXJuIHZvaWQgc2V0dXNlcnNoZWxsICh2b2lkKSA7CgoKCgoK
ZXh0ZXJuIGludCBkYWVtb24gKGludCBfX25vY2hkaXIsIGludCBfX25vY2xvc2UpIDsKCgoKCgoK
ZXh0ZXJuIGludCBjaHJvb3QgKF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBjaGFy
ICpnZXRwYXNzIChfX2NvbnN0IGNoYXIgKl9fcHJvbXB0KSA7CgoKCgoKZXh0ZXJuIGludCBmc3lu
YyAoaW50IF9fZmQpIDsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9pZCkgOwoK
CmV4dGVybiB2b2lkIHN5bmMgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgZ2V0cGFnZXNpemUgKHZv
aWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgdHJ1bmNhdGUg
KF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZl90IF9fbGVuZ3RoKSA7CiMgODU0ICIuLi9wb3Np
eC91bmlzdGQuaCIKZXh0ZXJuIGludCB0cnVuY2F0ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwg
X19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgpleHRlcm4gaW50IGZ0cnVuY2F0ZSAoaW50IF9fZmQs
IF9fb2ZmX3QgX19sZW5ndGgpIDsKIyA4NjkgIi4uL3Bvc2l4L3VuaXN0ZC5oIgpleHRlcm4gaW50
IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgoKZXh0ZXJu
IGludCBnZXRkdGFibGVzaXplICh2b2lkKSA7CiMgODg0ICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0
ZXJuIGludCBicmsgKHZvaWQgKl9fYWRkcikgOwoKCgoKCmV4dGVybiB2b2lkICpzYnJrIChpbnRw
dHJfdCBfX2RlbHRhKSA7CiMgOTA1ICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0ZXJuIGxvbmcgaW50
IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgOwojIDkyNSAiLi4vcG9zaXgvdW5pc3Rk
LmgiCmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4p
IDsKIyA5MzUgIi4uL3Bvc2l4L3VuaXN0ZC5oIgpleHRlcm4gaW50IGxvY2tmNjQgKGludCBfX2Zk
LCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgOwojIDk1NiAiLi4vcG9zaXgvdW5pc3RkLmgi
CmV4dGVybiBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpIDsKCgoKCgoKCmV4dGVybiBjaGFy
ICpjcnlwdCAoX19jb25zdCBjaGFyICpfX2tleSwgX19jb25zdCBjaGFyICpfX3NhbHQpIDsKCgoK
ZXh0ZXJuIHZvaWQgZW5jcnlwdCAoY2hhciAqX19ibG9jaywgaW50IF9fZWRmbGFnKSA7CgoKCgoK
CmV4dGVybiB2b2lkIHN3YWIgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2Zyb20sIHZvaWQg
Kl9fcmVzdHJpY3QgX190bywKICAgICAgICAgICAgICAgICAgc3NpemVfdCBfX24pIDsKCgoKCgoK
CmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsKIyAxMDAxICIuLi9wb3NpeC91bmlz
dGQuaCIKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJlcGFyZSkgKHZvaWQp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgOwoKCgojIDMg
Ii4uL2luY2x1ZGUvdW5pc3RkLmgiIDIKCmV4dGVybiBfX3R5cGVvZiAoX2V4aXQpIF9fR0lfX2V4
aXQ7IGV4dGVybiBfX3R5cGVvZiAoX2V4aXQpIF9leGl0IF9fYXNtX18gKCIiICJfX0dJX19leGl0
IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSwgX19ub3JldHVybl9fKSk7
CmV4dGVybiBfX3R5cGVvZiAoYWxhcm0pIF9fR0lfYWxhcm07IGV4dGVybiBfX3R5cGVvZiAoYWxh
cm0pIGFsYXJtIF9fYXNtX18gKCIiICJfX0dJX2FsYXJtIikgX19hdHRyaWJ1dGVfXyAoKHZpc2li
aWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKGNvbmZzdHIpIF9fR0lfY29uZnN0
cjsgZXh0ZXJuIF9fdHlwZW9mIChjb25mc3RyKSBjb25mc3RyIF9fYXNtX18gKCIiICJfX0dJX2Nv
bmZzdHIiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBf
X3R5cGVvZiAoZXhlY2wpIF9fR0lfZXhlY2w7IGV4dGVybiBfX3R5cGVvZiAoZXhlY2wpIGV4ZWNs
IF9fYXNtX18gKCIiICJfX0dJX2V4ZWNsIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJo
aWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKGV4ZWNsZSkgX19HSV9leGVjbGU7IGV4dGVybiBf
X3R5cGVvZiAoZXhlY2xlKSBleGVjbGUgX19hc21fXyAoIiIgIl9fR0lfZXhlY2xlIikgX19hdHRy
aWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKGV4ZWNs
cCkgX19HSV9leGVjbHA7IGV4dGVybiBfX3R5cGVvZiAoZXhlY2xwKSBleGVjbHAgX19hc21fXyAo
IiIgIl9fR0lfZXhlY2xwIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkp
OwpleHRlcm4gX190eXBlb2YgKGV4ZWN2cCkgX19HSV9leGVjdnA7IGV4dGVybiBfX3R5cGVvZiAo
ZXhlY3ZwKSBleGVjdnAgX19hc21fXyAoIiIgIl9fR0lfZXhlY3ZwIikgX19hdHRyaWJ1dGVfXyAo
KHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKGdldHBpZCkgX19HSV9n
ZXRwaWQ7IGV4dGVybiBfX3R5cGVvZiAoZ2V0cGlkKSBnZXRwaWQgX19hc21fXyAoIiIgIl9fR0lf
Z2V0cGlkIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4g
X190eXBlb2YgKGdldHNpZCkgX19HSV9nZXRzaWQ7IGV4dGVybiBfX3R5cGVvZiAoZ2V0c2lkKSBn
ZXRzaWQgX19hc21fXyAoIiIgIl9fR0lfZ2V0c2lkIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxp
dHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKGdldGRvbWFpbm5hbWUpIF9fR0lfZ2V0
ZG9tYWlubmFtZTsgZXh0ZXJuIF9fdHlwZW9mIChnZXRkb21haW5uYW1lKSBnZXRkb21haW5uYW1l
IF9fYXNtX18gKCIiICJfX0dJX2dldGRvbWFpbm5hbWUiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJp
bGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoZ2V0bG9naW5fcikgX19HSV9nZXRs
b2dpbl9yOyBleHRlcm4gX190eXBlb2YgKGdldGxvZ2luX3IpIGdldGxvZ2luX3IgX19hc21fXyAo
IiIgIl9fR0lfZ2V0bG9naW5fciIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVu
IikpKTsKZXh0ZXJuIF9fdHlwZW9mIChzZXRldWlkKSBfX0dJX3NldGV1aWQ7IGV4dGVybiBfX3R5
cGVvZiAoc2V0ZXVpZCkgc2V0ZXVpZCBfX2FzbV9fICgiIiAiX19HSV9zZXRldWlkIikgX19hdHRy
aWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKHNldGVn
aWQpIF9fR0lfc2V0ZWdpZDsgZXh0ZXJuIF9fdHlwZW9mIChzZXRlZ2lkKSBzZXRlZ2lkIF9fYXNt
X18gKCIiICJfX0dJX3NldGVnaWQiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRl
biIpKSk7CmV4dGVybiBfX3R5cGVvZiAodGNnZXRwZ3JwKSBfX0dJX3RjZ2V0cGdycDsgZXh0ZXJu
IF9fdHlwZW9mICh0Y2dldHBncnApIHRjZ2V0cGdycCBfX2FzbV9fICgiIiAiX19HSV90Y2dldHBn
cnAiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKZXh0ZXJuIGlu
dCBfX2FjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpOwpleHRlcm4gaW50
IF9fZXVpZGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpOwpleHRlcm4g
X19vZmY2NF90IF9fbHNlZWs2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgaW50IF9f
d2hlbmNlKTsKZXh0ZXJuIF9fb2ZmX3QgX19sc2VlayAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZz
ZXQsIGludCBfX3doZW5jZSk7CmV4dGVybiBfX29mZl90IF9fbGliY19sc2VlayAoaW50IF9fZmQs
IF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSk7CmV4dGVybiBfX29mZjY0X3QgX19saWJj
X2xzZWVrNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSk7CmV4
dGVybiBzc2l6ZV90IF9fcHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5
dGVzLAogICAgICAgICAgICAgICAgICAgICAgICBfX29mZl90IF9fb2Zmc2V0KTsKZXh0ZXJuIHNz
aXplX3QgX19saWJjX3ByZWFkIChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRl
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX29mZl90IF9fb2Zmc2V0KTsKZXh0ZXJu
IHNzaXplX3QgX19wcmVhZDY0IChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRl
cywKICAgICAgICAgICAgICAgICAgICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQpOwpleHRlcm4g
c3NpemVfdCBfX2xpYmNfcHJlYWQ2NCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19u
Ynl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQp
OwpleHRlcm4gc3NpemVfdCBfX3B3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYs
IHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICBfX29mZl90IF9fb2Zmc2V0KTsK
ZXh0ZXJuIHNzaXplX3QgX19saWJjX3B3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19i
dWYsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmX3QgX19v
ZmZzZXQpOwpleHRlcm4gc3NpemVfdCBfX3B3cml0ZTY0IChpbnQgX19mZCwgX19jb25zdCB2b2lk
ICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19vZmY2NF90
IF9fb2Zmc2V0KTsKZXh0ZXJuIF9fdHlwZW9mIChfX3B3cml0ZTY0KSBfX0dJX19fcHdyaXRlNjQ7
IGV4dGVybiBfX3R5cGVvZiAoX19wd3JpdGU2NCkgX19wd3JpdGU2NCBfX2FzbV9fICgiIiAiX19H
SV9fX3B3cml0ZTY0IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpl
eHRlcm4gc3NpemVfdCBfX2xpYmNfcHdyaXRlNjQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9f
YnVmLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmNjRf
dCBfX29mZnNldCk7CmV4dGVybiBzc2l6ZV90IF9fbGliY19yZWFkIChpbnQgX19mZCwgdm9pZCAq
X19idWYsIHNpemVfdCBfX24pOwpleHRlcm4gX190eXBlb2YgKF9fbGliY19yZWFkKSBfX0dJX19f
bGliY19yZWFkOyBleHRlcm4gX190eXBlb2YgKF9fbGliY19yZWFkKSBfX2xpYmNfcmVhZCBfX2Fz
bV9fICgiIiAiX19HSV9fX2xpYmNfcmVhZCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgi
aGlkZGVuIikpKTsKZXh0ZXJuIHNzaXplX3QgX19saWJjX3dyaXRlIChpbnQgX19mZCwgX19jb25z
dCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbik7CmV4dGVybiBfX3R5cGVvZiAoX19saWJjX3dyaXRl
KSBfX0dJX19fbGliY193cml0ZTsgZXh0ZXJuIF9fdHlwZW9mIChfX2xpYmNfd3JpdGUpIF9fbGli
Y193cml0ZSBfX2FzbV9fICgiIiAiX19HSV9fX2xpYmNfd3JpdGUiKSBfX2F0dHJpYnV0ZV9fICgo
dmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBpbnQgX19waXBlIChpbnQgX19waXBlZGVz
WzJdKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3BpcGUpIF9fR0lfX19waXBlOyBleHRlcm4gX190eXBl
b2YgKF9fcGlwZSkgX19waXBlIF9fYXNtX18gKCIiICJfX0dJX19fcGlwZSIpIF9fYXR0cmlidXRl
X18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBfX3NsZWVw
ICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKTsKZXh0ZXJuIGludCBfX2Nob3duIChfX2NvbnN0IGNo
YXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3Qg
X19ncm91cCk7CmV4dGVybiBfX3R5cGVvZiAoX19jaG93bikgX19HSV9fX2Nob3duOyBleHRlcm4g
X190eXBlb2YgKF9fY2hvd24pIF9fY2hvd24gX19hc21fXyAoIiIgIl9fR0lfX19jaG93biIpIF9f
YXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIGludCBfX2ZjaG93
biAoaW50IF9fZmQsCiAgICAgICAgICAgICAgICAgICAgIF9fdWlkX3QgX19vd25lciwgX19naWRf
dCBfX2dyb3VwKTsKZXh0ZXJuIGludCBfX2xjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9f
dWlkX3QgX19vd25lciwKICAgICAgICAgICAgICAgICAgICAgX19naWRfdCBfX2dyb3VwKTsKZXh0
ZXJuIGludCBfX2NoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCk7CmV4dGVybiBpbnQgX19mY2hk
aXIgKGludCBfX2ZkKTsKZXh0ZXJuIGNoYXIgKl9fZ2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fc2l6ZSk7CmV4dGVybiBpbnQgX19ybWRpciAoY29uc3QgY2hhciAqX19wYXRoKTsKCgoKCgoK
CmNoYXIgKl9fY2Fub25pY2FsaXplX2RpcmVjdG9yeV9uYW1lX2ludGVybmFsIChfX2NvbnN0IGNo
YXIgKl9fdGhpc2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4i
KSkpOwoKZXh0ZXJuIGludCBfX2R1cCAoaW50IF9fZmQpOwpleHRlcm4gaW50IF9fZHVwMiAoaW50
IF9fZmQsIGludCBfX2ZkMik7CmV4dGVybiBfX3R5cGVvZiAoX19kdXAyKSBfX0dJX19fZHVwMjsg
ZXh0ZXJuIF9fdHlwZW9mIChfX2R1cDIpIF9fZHVwMiBfX2FzbV9fICgiIiAiX19HSV9fX2R1cDIi
KSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBpbnQgX19l
eGVjdmUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdLAogICAg
ICAgICAgICAgICAgICAgICBjaGFyICpfX2NvbnN0IF9fZW52cFtdKTsKZXh0ZXJuIGxvbmcgaW50
IF9fcGF0aGNvbmYgKF9fY29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19uYW1lKTsKZXh0ZXJuIGxv
bmcgaW50IF9fZnBhdGhjb25mIChpbnQgX19mZCwgaW50IF9fbmFtZSk7CmV4dGVybiBsb25nIGlu
dCBfX3N5c2NvbmYgKGludCBfX25hbWUpOwpleHRlcm4gX190eXBlb2YgKF9fc3lzY29uZikgX19H
SV9fX3N5c2NvbmY7IGV4dGVybiBfX3R5cGVvZiAoX19zeXNjb25mKSBfX3N5c2NvbmYgX19hc21f
XyAoIiIgIl9fR0lfX19zeXNjb25mIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRk
ZW4iKSkpOwpleHRlcm4gX19waWRfdCBfX2dldHBpZCAodm9pZCk7CmV4dGVybiBfX3R5cGVvZiAo
X19nZXRwaWQpIF9fR0lfX19nZXRwaWQ7IGV4dGVybiBfX3R5cGVvZiAoX19nZXRwaWQpIF9fZ2V0
cGlkIF9fYXNtX18gKCIiICJfX0dJX19fZ2V0cGlkIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxp
dHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX19waWRfdCBfX2dldHBwaWQgKHZvaWQpOwpleHRlcm4g
X19waWRfdCBfX3NldHNpZCAodm9pZCk7CmV4dGVybiBfX3VpZF90IF9fZ2V0dWlkICh2b2lkKTsK
ZXh0ZXJuIF9fdWlkX3QgX19nZXRldWlkICh2b2lkKTsKZXh0ZXJuIF9fZ2lkX3QgX19nZXRnaWQg
KHZvaWQpOwpleHRlcm4gX19naWRfdCBfX2dldGVnaWQgKHZvaWQpOwpleHRlcm4gaW50IF9fZ2V0
Z3JvdXBzIChpbnQgX19zaXplLCBfX2dpZF90IF9fbGlzdFtdKTsKZXh0ZXJuIF9fdHlwZW9mIChf
X2dldHBnaWQpIF9fR0lfX19nZXRwZ2lkOyBleHRlcm4gX190eXBlb2YgKF9fZ2V0cGdpZCkgX19n
ZXRwZ2lkIF9fYXNtX18gKCIiICJfX0dJX19fZ2V0cGdpZCIpIF9fYXR0cmlidXRlX18gKCh2aXNp
YmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIGludCBfX2dyb3VwX21lbWJlciAoX19naWRfdCBf
X2dpZCk7CmV4dGVybiBpbnQgX19zZXR1aWQgKF9fdWlkX3QgX191aWQpOwpleHRlcm4gaW50IF9f
c2V0cmV1aWQgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9fZXVpZCk7CmV4dGVybiBpbnQgX19z
ZXRnaWQgKF9fZ2lkX3QgX19naWQpOwpleHRlcm4gaW50IF9fc2V0cGdpZCAoX19waWRfdCBfX3Bp
ZCwgX19waWRfdCBfX3BnaWQpOwpleHRlcm4gX190eXBlb2YgKF9fc2V0cGdpZCkgX19HSV9fX3Nl
dHBnaWQ7IGV4dGVybiBfX3R5cGVvZiAoX19zZXRwZ2lkKSBfX3NldHBnaWQgX19hc21fXyAoIiIg
Il9fR0lfX19zZXRwZ2lkIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkp
OwpleHRlcm4gaW50IF9fc2V0cmVnaWQgKF9fZ2lkX3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCk7
CmV4dGVybiBpbnQgX19nZXRyZXN1aWQgKF9fdWlkX3QgKl9fZXVpZCwgX191aWRfdCAqX19ydWlk
LCBfX3VpZF90ICpfX3N1aWQpOwpleHRlcm4gaW50IF9fZ2V0cmVzZ2lkIChfX2dpZF90ICpfX2Vn
aWQsIF9fZ2lkX3QgKl9fcmdpZCwgX19naWRfdCAqX19zZ2lkKTsKZXh0ZXJuIGludCBfX3NldHJl
c3VpZCAoX191aWRfdCBfX2V1aWQsIF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9fc3VpZCk7CmV4
dGVybiBpbnQgX19zZXRyZXNnaWQgKF9fZ2lkX3QgX19lZ2lkLCBfX2dpZF90IF9fcmdpZCwgX19n
aWRfdCBfX3NnaWQpOwpleHRlcm4gX190eXBlb2YgKF9fZ2V0cmVzdWlkKSBfX0dJX19fZ2V0cmVz
dWlkOyBleHRlcm4gX190eXBlb2YgKF9fZ2V0cmVzdWlkKSBfX2dldHJlc3VpZCBfX2FzbV9fICgi
IiAiX19HSV9fX2dldHJlc3VpZCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVu
IikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX2dldHJlc2dpZCkgX19HSV9fX2dldHJlc2dpZDsgZXh0
ZXJuIF9fdHlwZW9mIChfX2dldHJlc2dpZCkgX19nZXRyZXNnaWQgX19hc21fXyAoIiIgIl9fR0lf
X19nZXRyZXNnaWQiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4
dGVybiBfX3R5cGVvZiAoX19zZXRyZXN1aWQpIF9fR0lfX19zZXRyZXN1aWQ7IGV4dGVybiBfX3R5
cGVvZiAoX19zZXRyZXN1aWQpIF9fc2V0cmVzdWlkIF9fYXNtX18gKCIiICJfX0dJX19fc2V0cmVz
dWlkIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190
eXBlb2YgKF9fc2V0cmVzZ2lkKSBfX0dJX19fc2V0cmVzZ2lkOyBleHRlcm4gX190eXBlb2YgKF9f
c2V0cmVzZ2lkKSBfX3NldHJlc2dpZCBfX2FzbV9fICgiIiAiX19HSV9fX3NldHJlc2dpZCIpIF9f
YXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fcGlkX3QgX192
Zm9yayAodm9pZCk7CmV4dGVybiBpbnQgX190dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1
Ziwgc2l6ZV90IF9fYnVmbGVuKTsKZXh0ZXJuIGludCBfX2lzYXR0eSAoaW50IF9fZmQpOwpleHRl
cm4gaW50IF9fbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190byk7
CmV4dGVybiBpbnQgX19zeW1saW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFy
ICpfX3RvKTsKZXh0ZXJuIGludCBfX3JlYWRsaW5rIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hh
ciAqX19idWYsIHNpemVfdCBfX2xlbik7CmV4dGVybiBpbnQgX191bmxpbmsgKF9fY29uc3QgY2hh
ciAqX19uYW1lKTsKZXh0ZXJuIGludCBfX2dldGhvc3RuYW1lIChjaGFyICpfX25hbWUsIHNpemVf
dCBfX2xlbik7CmV4dGVybiBpbnQgX19wcm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAqX19zYW1w
bGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19v
ZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKTsKZXh0ZXJuIGludCBfX2dldGR0YWJsZXNpemUg
KHZvaWQpOwpleHRlcm4gaW50IF9fYnJrICh2b2lkICpfX2FkZHIpOwpleHRlcm4gaW50IF9fY2xv
c2UgKGludCBfX2ZkKTsKZXh0ZXJuIF9fdHlwZW9mIChfX2Nsb3NlKSBfX0dJX19fY2xvc2U7IGV4
dGVybiBfX3R5cGVvZiAoX19jbG9zZSkgX19jbG9zZSBfX2FzbV9fICgiIiAiX19HSV9fX2Nsb3Nl
IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gc3NpemVf
dCBfX3JlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKZXh0ZXJu
IF9fdHlwZW9mIChfX3JlYWQpIF9fR0lfX19yZWFkOyBleHRlcm4gX190eXBlb2YgKF9fcmVhZCkg
X19yZWFkIF9fYXNtX18gKCIiICJfX0dJX19fcmVhZCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmls
aXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIHNzaXplX3QgX193cml0ZSAoaW50IF9fZmQsIF9fY29u
c3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24pOwpleHRlcm4gX190eXBlb2YgKF9fd3JpdGUpIF9f
R0lfX193cml0ZTsgZXh0ZXJuIF9fdHlwZW9mIChfX3dyaXRlKSBfX3dyaXRlIF9fYXNtX18gKCIi
ICJfX0dJX19fd3JpdGUiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7
CmV4dGVybiBfX3BpZF90IF9fZm9yayAodm9pZCk7CmV4dGVybiBpbnQgX19nZXRwYWdlc2l6ZSAo
dm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gX190eXBlb2YgKF9fZ2V0
cGFnZXNpemUpIF9fR0lfX19nZXRwYWdlc2l6ZTsgZXh0ZXJuIF9fdHlwZW9mIChfX2dldHBhZ2Vz
aXplKSBfX2dldHBhZ2VzaXplIF9fYXNtX18gKCIiICJfX0dJX19fZ2V0cGFnZXNpemUiKSBfX2F0
dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBpbnQgX19mdHJ1bmNh
dGUgKGludCBfX2ZkLCBfX29mZl90IF9fbGVuZ3RoKTsKZXh0ZXJuIGludCBfX2Z0cnVuY2F0ZTY0
IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKTsKZXh0ZXJuIHZvaWQgKl9fc2JyayAoaW50
cHRyX3QgX19kZWx0YSk7CmV4dGVybiBfX3R5cGVvZiAoX19zYnJrKSBfX0dJX19fc2JyazsgZXh0
ZXJuIF9fdHlwZW9mIChfX3NicmspIF9fc2JyayBfX2FzbV9fICgiIiAiX19HSV9fX3NicmsiKSBf
X2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKCgoKCgpleHRlcm4gaW50
IF9fbGliY19lbmFibGVfc2VjdXJlOwoKCgoKCgoKZXh0ZXJuIHZvaWQgX19saWJjX2NoZWNrX3N0
YW5kYXJkX2ZkcyAodm9pZCk7CgoKCmV4dGVybiB2b2lkIF9fZXhpdF90aHJlYWQgKGludCB2YWwp
IF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwoKCmV4dGVybiBfX3BpZF90IF9fbGliY19mb3Jr
ICh2b2lkKTsKCgoKZXh0ZXJuIGludCBfX2xpYmNfcGF1c2UgKHZvaWQpOwojIDc2MCAiLi4vbGli
aW8vbGliaW9QLmgiIDIKIyAxICIuLi9pbmNsdWRlL2ZjbnRsLmgiIDEKCiMgMSAiLi4vaW8vZmNu
dGwuaCIgMQojIDI5ICIuLi9pby9mY250bC5oIgoKCgoKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lz
di9saW51eC94ODZfNjQvYml0cy9mY250bC5oIiAxCiMgMjUgIi4uL3N5c2RlcHMvdW5peC9zeXN2
L2xpbnV4L3g4Nl82NC9iaXRzL2ZjbnRsLmgiCiMgMSAiLi4vaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MQojIDI2ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvYml0cy9mY250bC5oIiAy
CiMgMSAiLi4vc3lzZGVwcy94ODZfNjQvYml0cy93b3Jkc2l6ZS5oIiAxCiMgMjcgIi4uL3N5c2Rl
cHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9iaXRzL2ZjbnRsLmgiIDIKIyAxNDAgIi4uL3N5c2Rl
cHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9iaXRzL2ZjbnRsLmgiCnN0cnVjdCBmbG9jawogIHsK
ICAgIHNob3J0IGludCBsX3R5cGU7CiAgICBzaG9ydCBpbnQgbF93aGVuY2U7CgogICAgX19vZmZf
dCBsX3N0YXJ0OwogICAgX19vZmZfdCBsX2xlbjsKCgoKCiAgICBfX3BpZF90IGxfcGlkOwogIH07
CgoKc3RydWN0IGZsb2NrNjQKICB7CiAgICBzaG9ydCBpbnQgbF90eXBlOwogICAgc2hvcnQgaW50
IGxfd2hlbmNlOwogICAgX19vZmY2NF90IGxfc3RhcnQ7CiAgICBfX29mZjY0X3QgbF9sZW47CiAg
ICBfX3BpZF90IGxfcGlkOwogIH07CiMgMzQgIi4uL2lvL2ZjbnRsLmgiIDIKCgoKIyAxICIuLi9p
bmNsdWRlL3N5cy9zdGF0LmgiIDEKCiMgMSAiLi4vaW8vc3lzL3N0YXQuaCIgMQojIDk3ICIuLi9p
by9zeXMvc3RhdC5oIgoKCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L2Jp
dHMvc3RhdC5oIiAxCiMgNDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9iaXRz
L3N0YXQuaCIKc3RydWN0IHN0YXQKICB7CiAgICBfX2Rldl90IHN0X2RldjsKCgoKCiAgICBfX2lu
b190IHN0X2lubzsKCgoKCgoKCiAgICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX21vZGVfdCBz
dF9tb2RlOwoKICAgIF9fdWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7CgogICAgaW50
IHBhZDA7CgogICAgX19kZXZfdCBzdF9yZGV2OwoKCgoKICAgIF9fb2ZmX3Qgc3Rfc2l6ZTsKCgoK
ICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgogICAgX19ibGtjbnRfdCBzdF9ibG9ja3M7CgoK
CiAgICBfX3RpbWVfdCBzdF9hdGltZTsKICAgIGxvbmcgaW50IF9fcmVzZXJ2ZWQwOwogICAgX190
aW1lX3Qgc3RfbXRpbWU7CiAgICBsb25nIGludCBfX3Jlc2VydmVkMTsKICAgIF9fdGltZV90IHN0
X2N0aW1lOwogICAgbG9uZyBpbnQgX19yZXNlcnZlZDI7CgogICAgbG9uZyBpbnQgX191bnVzZWRb
M107CiMgOTUgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9iaXRzL3N0YXQuaCIK
ICB9OwoKCgpzdHJ1Y3Qgc3RhdDY0CiAgewogICAgX19kZXZfdCBzdF9kZXY7CgogICAgX19pbm82
NF90IHN0X2lubzsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKICAgIF9fbW9kZV90IHN0X21vZGU7
CgoKCgoKCiAgICBfX3VpZF90IHN0X3VpZDsKICAgIF9fZ2lkX3Qgc3RfZ2lkOwoKICAgIGludCBw
YWQwOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgX19vZmZfdCBzdF9zaXplOwoKCgoKCiAgICBf
X2Jsa3NpemVfdCBzdF9ibGtzaXplOwogICAgX19ibGtjbnQ2NF90IHN0X2Jsb2NrczsKICAgIF9f
dGltZV90IHN0X2F0aW1lOwogICAgbG9uZyBpbnQgX19yZXNlcnZlZDA7CiAgICBfX3RpbWVfdCBz
dF9tdGltZTsKICAgIGxvbmcgaW50IF9fcmVzZXJ2ZWQxOwogICAgX190aW1lX3Qgc3RfY3RpbWU7
CiAgICBsb25nIGludCBfX3Jlc2VydmVkMjsKCiAgICBsb25nIGludCBfX3VudXNlZFszXTsKCgoK
ICB9OwojIDEwMCAiLi4vaW8vc3lzL3N0YXQuaCIgMgojIDIwMSAiLi4vaW8vc3lzL3N0YXQuaCIK
ZXh0ZXJuIGludCBzdGF0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAg
ICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQg
ZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19idWYpIDsKIyAyMjAgIi4uL2lvL3N5cy9z
dGF0LmgiCmV4dGVybiBpbnQgc3RhdDY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxl
LAogICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBfX2J1ZikgOwpl
eHRlcm4gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpfX2J1ZikgOwoKCgoK
CgpleHRlcm4gaW50IGxzdGF0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1ZikgOwojIDI0MiAiLi4v
aW8vc3lzL3N0YXQuaCIKZXh0ZXJuIGludCBsc3RhdDY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19maWxlLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fcmVzdHJpY3Qg
X19idWYpIDsKCgoKCgpleHRlcm4gaW50IGNobW9kIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19t
b2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJuIGludCBsY2htb2QgKF9fY29uc3QgY2hhciAqX19m
aWxlLCBfX21vZGVfdCBfX21vZGUpIDsKCgoKCmV4dGVybiBpbnQgZmNobW9kIChpbnQgX19mZCwg
X19tb2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJuIF9fbW9kZV90IHVtYXNrIChfX21vZGVfdCBf
X21hc2spIDsKCgoKCmV4dGVybiBfX21vZGVfdCBnZXR1bWFzayAodm9pZCkgOwoKCgpleHRlcm4g
aW50IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKSA7CgoKCgoK
ZXh0ZXJuIGludCBta25vZCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwg
X19kZXZfdCBfX2RldikKICAgICA7CgoKCgpleHRlcm4gaW50IG1rZmlmbyAoX19jb25zdCBjaGFy
ICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgOwojIDMxMyAiLi4vaW8vc3lzL3N0YXQuaCIKZXh0
ZXJuIGludCBfX2Z4c3RhdCAoaW50IF9fdmVyLCBpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0ICpf
X3N0YXRfYnVmKSA7CmV4dGVybiBpbnQgX194c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIg
Kl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYp
IDsKZXh0ZXJuIGludCBfX2x4c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5h
bWUsCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CiMgMzM3
ICIuLi9pby9zeXMvc3RhdC5oIgpleHRlcm4gaW50IF9fZnhzdGF0NjQgKGludCBfX3ZlciwgaW50
IF9fZmlsZGVzLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRfYnVmKQogICAgIDsKZXh0ZXJuIGludCBf
X3hzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50IF9fbHhz
dGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpIDsKCmV4dGVybiBpbnQgX194bWtu
b2QgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAg
ICAgICAgICAgICAgICAgICAgX19kZXZfdCAqX19kZXYpIDsKCgoKCmV4dGVybiBfX2lubGluZV9f
IGludCBzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX194c3RhdCAoMSwgX19wYXRo
LCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGxzdGF0IChfX2NvbnN0IGNo
YXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19z
dGF0YnVmKQp7CiAgcmV0dXJuIF9fbHhzdGF0ICgxLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpl
eHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0
YnVmKQp7CiAgcmV0dXJuIF9fZnhzdGF0ICgxLCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJu
IF9faW5saW5lX18gaW50IG1rbm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19t
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGV2X3QgX19kZXYpCnsKICByZXR1
cm4gX194bWtub2QgKDAsIF9fcGF0aCwgX19tb2RlLCAmX19kZXYpOwp9CgoKCgoKZXh0ZXJuIF9f
aW5saW5lX18gaW50IHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX3hz
dGF0NjQgKDEsIF9fcGF0aCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBs
c3RhdDY0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3RhdDY0ICgxLCBf
X3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQ2NCAoaW50
IF9fZmQsIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2Z4c3RhdDY0ICgx
LCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoKCgoKIyAzICIuLi9pbmNsdWRlL3N5cy9zdGF0LmgiIDIK
CgpleHRlcm4gaW50IF9fc3RhdCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIHN0cnVjdCBzdGF0ICpf
X2J1Zik7CmV4dGVybiBpbnQgX19mc3RhdCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX2J1Zik7
CmV4dGVybiBpbnQgX19sc3RhdCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIHN0cnVjdCBzdGF0ICpf
X2J1Zik7CmV4dGVybiBpbnQgX19jaG1vZCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90
IF9fbW9kZSk7CmV4dGVybiBpbnQgX19mY2htb2QgKGludCBfX2ZkLCBfX21vZGVfdCBfX21vZGUp
OwpleHRlcm4gX19tb2RlX3QgX191bWFzayAoX19tb2RlX3QgX19tYXNrKTsKZXh0ZXJuIGludCBf
X21rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKTsKZXh0ZXJuIGlu
dCBfX21rbm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICBfX21v
ZGVfdCBfX21vZGUsIF9fZGV2X3QgX19kZXYpOwoKZXh0ZXJuIF9fdHlwZW9mIChfX2Z4c3RhdCkg
X19HSV9fX2Z4c3RhdDsgZXh0ZXJuIF9fdHlwZW9mIChfX2Z4c3RhdCkgX19meHN0YXQgX19hc21f
XyAoIiIgIl9fR0lfX19meHN0YXQiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRl
biIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX19meHN0YXQ2NCkgX19HSV9fX2Z4c3RhdDY0OyBleHRl
cm4gX190eXBlb2YgKF9fZnhzdGF0NjQpIF9fZnhzdGF0NjQgX19hc21fXyAoIiIgIl9fR0lfX19m
eHN0YXQ2NCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJu
IF9fdHlwZW9mIChfX2x4c3RhdCkgX19HSV9fX2x4c3RhdDsgZXh0ZXJuIF9fdHlwZW9mIChfX2x4
c3RhdCkgX19seHN0YXQgX19hc21fXyAoIiIgIl9fR0lfX19seHN0YXQiKSBfX2F0dHJpYnV0ZV9f
ICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBfX3R5cGVvZiAoX19seHN0YXQ2NCkg
X19HSV9fX2x4c3RhdDY0OyBleHRlcm4gX190eXBlb2YgKF9fbHhzdGF0NjQpIF9fbHhzdGF0NjQg
X19hc21fXyAoIiIgIl9fR0lfX19seHN0YXQ2NCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5
ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX3hzdGF0KSBfX0dJX19feHN0YXQ7IGV4
dGVybiBfX3R5cGVvZiAoX194c3RhdCkgX194c3RhdCBfX2FzbV9fICgiIiAiX19HSV9fX3hzdGF0
IikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwpleHRlcm4gX190eXBl
b2YgKF9feHN0YXQ2NCkgX19HSV9fX3hzdGF0NjQ7IGV4dGVybiBfX3R5cGVvZiAoX194c3RhdDY0
KSBfX3hzdGF0NjQgX19hc21fXyAoIiIgIl9fR0lfX194c3RhdDY0IikgX19hdHRyaWJ1dGVfXyAo
KHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwoKZXh0ZXJuIF9faW5saW5lX18gaW50IF9fc3RhdCAo
X19jb25zdCBjaGFyICpfX3BhdGgsIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpCnsKICByZXR1cm4g
X194c3RhdCAoMSwgX19wYXRoLCBfX3N0YXRidWYpOwp9CmV4dGVybiBfX3R5cGVvZiAoX194bWtu
b2QpIF9fR0lfX194bWtub2Q7IGV4dGVybiBfX3R5cGVvZiAoX194bWtub2QpIF9feG1rbm9kIF9f
YXNtX18gKCIiICJfX0dJX19feG1rbm9kIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJo
aWRkZW4iKSkpOwpleHRlcm4gX19pbmxpbmVfXyBpbnQgX19ta25vZCAoX19jb25zdCBjaGFyICpf
X3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
ZGV2X3QgX19kZXYpCnsKICByZXR1cm4gX194bWtub2QgKDAsIF9fcGF0aCwgX19tb2RlLCAmX19k
ZXYpOwp9CiMgMzggIi4uL2lvL2ZjbnRsLmgiIDIKIyA2MCAiLi4vaW8vZmNudGwuaCIKZXh0ZXJu
IGludCBmY250bCAoaW50IF9fZmQsIGludCBfX2NtZCwgLi4uKSA7CgoKCgoKZXh0ZXJuIGludCBv
cGVuIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikgOwojIDc2ICIuLi9p
by9mY250bC5oIgpleHRlcm4gaW50IG9wZW42NCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGludCBf
X29mbGFnLCAuLi4pIDsKCgoKCgoKZXh0ZXJuIGludCBjcmVhdCAoX19jb25zdCBjaGFyICpfX2Zp
bGUsIF9fbW9kZV90IF9fbW9kZSkgOwojIDkzICIuLi9pby9mY250bC5oIgpleHRlcm4gaW50IGNy
ZWF0NjQgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpIDsKIyAxMzAgIi4u
L2lvL2ZjbnRsLmgiCmV4dGVybiBpbnQgcG9zaXhfZmFkdmlzZSAoaW50IF9fZmQsIF9fb2ZmX3Qg
X19vZmZzZXQsIHNpemVfdCBfX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19h
ZHZpc2UpIDsKIyAxNDIgIi4uL2lvL2ZjbnRsLmgiCmV4dGVybiBpbnQgcG9zaXhfZmFkdmlzZTY0
IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBzaXplX3QgX19sZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgX19hZHZpc2UpIDsKCgoKCgpleHRlcm4gaW50IHBvc2l4X2Zh
bGxvY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbikgOwojIDE2
MCAiLi4vaW8vZmNudGwuaCIKZXh0ZXJuIGludCBwb3NpeF9mYWxsb2NhdGU2NCAoaW50IF9fZmQs
IF9fb2ZmNjRfdCBfX29mZnNldCwgc2l6ZV90IF9fbGVuKQogICAgIDsKCgoKCiMgMyAiLi4vaW5j
bHVkZS9mY250bC5oIiAyCgoKZXh0ZXJuIGludCBfX29wZW42NCAoX19jb25zdCBjaGFyICpfX2Zp
bGUsIGludCBfX29mbGFnLCAuLi4pOwpleHRlcm4gX190eXBlb2YgKF9fb3BlbjY0KSBfX0dJX19f
b3BlbjY0OyBleHRlcm4gX190eXBlb2YgKF9fb3BlbjY0KSBfX29wZW42NCBfX2FzbV9fICgiIiAi
X19HSV9fX29wZW42NCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsK
ZXh0ZXJuIGludCBfX2xpYmNfb3BlbjY0IChjb25zdCBjaGFyICpmaWxlLCBpbnQgb2ZsYWcsIC4u
Lik7CmV4dGVybiBpbnQgX19saWJjX29wZW4gKGNvbnN0IGNoYXIgKmZpbGUsIGludCBvZmxhZywg
Li4uKTsKZXh0ZXJuIF9fdHlwZW9mIChfX2xpYmNfb3BlbikgX19HSV9fX2xpYmNfb3BlbjsgZXh0
ZXJuIF9fdHlwZW9mIChfX2xpYmNfb3BlbikgX19saWJjX29wZW4gX19hc21fXyAoIiIgIl9fR0lf
X19saWJjX29wZW4iKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4
dGVybiBpbnQgX19saWJjX2ZjbnRsIChpbnQgZmQsIGludCBjbWQsIC4uLik7CmV4dGVybiBfX3R5
cGVvZiAoX19saWJjX2ZjbnRsKSBfX0dJX19fbGliY19mY250bDsgZXh0ZXJuIF9fdHlwZW9mIChf
X2xpYmNfZmNudGwpIF9fbGliY19mY250bCBfX2FzbV9fICgiIiAiX19HSV9fX2xpYmNfZmNudGwi
KSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBpbnQgX19v
cGVuIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLik7CmV4dGVybiBfX3R5
cGVvZiAoX19vcGVuKSBfX0dJX19fb3BlbjsgZXh0ZXJuIF9fdHlwZW9mIChfX29wZW4pIF9fb3Bl
biBfX2FzbV9fICgiIiAiX19HSV9fX29wZW4iKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAo
ImhpZGRlbiIpKSk7CmV4dGVybiBpbnQgX19mY250bCAoaW50IF9fZmQsIGludCBfX2NtZCwgLi4u
KTsKZXh0ZXJuIF9fdHlwZW9mIChfX2ZjbnRsKSBfX0dJX19fZmNudGw7IGV4dGVybiBfX3R5cGVv
ZiAoX19mY250bCkgX19mY250bCBfX2FzbV9fICgiIiAiX19HSV9fX2ZjbnRsIikgX19hdHRyaWJ1
dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwojIDc2MSAiLi4vbGliaW8vbGliaW9QLmgi
IDIKIyAxICIuLi9pbmNsdWRlL3N5cy9tbWFuLmgiIDEKCiMgMSAiLi4vbWlzYy9zeXMvbW1hbi5o
IiAxCiMgMjYgIi4uL21pc2Mvc3lzL21tYW4uaCIKIyAxICIvdXNyL2xpYjY0L2djYy1saWIveDg2
XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMjcgIi4uL21pc2Mv
c3lzL21tYW4uaCIgMgojIDQyICIuLi9taXNjL3N5cy9tbWFuLmgiCiMgMSAiLi4vc3lzZGVwcy91
bml4L3N5c3YvbGludXgveDg2XzY0L2JpdHMvbW1hbi5oIiAxCiMgNDMgIi4uL21pc2Mvc3lzL21t
YW4uaCIgMgoKCgoKCiMgNTggIi4uL21pc2Mvc3lzL21tYW4uaCIKZXh0ZXJuIHZvaWQgKm1tYXAg
KHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuLCBpbnQgX19wcm90LAogICAgICAgICAgICAgICAg
ICAgaW50IF9fZmxhZ3MsIGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0KSA7CiMgNzEgIi4uL21p
c2Mvc3lzL21tYW4uaCIKZXh0ZXJuIHZvaWQgKm1tYXA2NCAodm9pZCAqX19hZGRyLCBzaXplX3Qg
X19sZW4sIGludCBfX3Byb3QsCiAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdzLCBpbnQg
X19mZCwgX19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKCgpleHRlcm4gaW50IG11bm1hcCAodm9pZCAq
X19hZGRyLCBzaXplX3QgX19sZW4pIDsKCgoKCmV4dGVybiBpbnQgbXByb3RlY3QgKHZvaWQgKl9f
YWRkciwgc2l6ZV90IF9fbGVuLCBpbnQgX19wcm90KSA7CgoKCgpleHRlcm4gaW50IG1zeW5jICh2
b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fZmxhZ3MpIDsKCgoKCmV4dGVybiBpbnQg
bWFkdmlzZSAodm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4sIGludCBfX2FkdmljZSkgOwoKCgpl
eHRlcm4gaW50IHBvc2l4X21hZHZpc2UgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuLCBpbnQg
X19hZHZpY2UpIDsKCgoKCmV4dGVybiBpbnQgbWxvY2sgKF9fY29uc3Qgdm9pZCAqX19hZGRyLCBz
aXplX3QgX19sZW4pIDsKCgpleHRlcm4gaW50IG11bmxvY2sgKF9fY29uc3Qgdm9pZCAqX19hZGRy
LCBzaXplX3QgX19sZW4pIDsKCgoKCmV4dGVybiBpbnQgbWxvY2thbGwgKGludCBfX2ZsYWdzKSA7
CgoKCmV4dGVybiBpbnQgbXVubG9ja2FsbCAodm9pZCkgOwoKCgoKCmV4dGVybiB2b2lkICptcmVt
YXAgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fb2xkX2xlbiwgc2l6ZV90IF9fbmV3X2xlbiwKICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fbWF5X21vdmUpIDsKCgoKCgoKZXh0ZXJuIGludCBtaW5j
b3JlICh2b2lkICpfX3N0YXJ0LCBzaXplX3QgX19sZW4sIHVuc2lnbmVkIGNoYXIgKl9fdmVjKTsK
CgoKCmV4dGVybiBpbnQgc2htX29wZW4gKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX19vZmxh
ZywgbW9kZV90IF9fbW9kZSk7CgoKZXh0ZXJuIGludCBzaG1fdW5saW5rIChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSk7CgoKIyAzICIuLi9pbmNsdWRlL3N5cy9tbWFuLmgiIDIKCgpleHRlcm4gdm9pZCAq
X19tbWFwICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fcHJvdCwKICAgICAgICAg
ICAgICAgICAgICAgaW50IF9fZmxhZ3MsIGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0KTsKZXh0
ZXJuIHZvaWQgKl9fbW1hcDY0ICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fcHJv
dCwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19mbGFncywgaW50IF9fZmQsIF9fb2ZmNjRf
dCBfX29mZnNldCk7CmV4dGVybiBpbnQgX19tdW5tYXAgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9f
bGVuKTsKZXh0ZXJuIGludCBfX21wcm90ZWN0ICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwg
aW50IF9fcHJvdCk7CgoKZXh0ZXJuIHZvaWQgKl9fbXJlbWFwICh2b2lkICpfX2FkZHIsIHNpemVf
dCBfX29sZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbmV3X2xlbiwgaW50
IF9fbWF5X21vdmUpOwojIDc2MiAiLi4vbGliaW8vbGliaW9QLmgiIDIKIyA4MjggIi4uL2xpYmlv
L2xpYmlvUC5oIgpzdHJ1Y3Qgc3RhdDsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcmVhZCAoaW50LCB2
b2lkICosIHNpemVfdCkgOwpleHRlcm4gX19zc2l6ZV90IF9JT193cml0ZSAoaW50LCBjb25zdCB2
b2lkICosIHNpemVfdCkgOwpleHRlcm4gX19vZmY2NF90IF9JT19sc2VlayAoaW50LCBfX29mZjY0
X3QsIGludCkgOwpleHRlcm4gaW50IF9JT19jbG9zZSAoaW50KSA7CmV4dGVybiBpbnQgX0lPX2Zz
dGF0IChpbnQsIHN0cnVjdCBzdGF0ICopIDsKZXh0ZXJuIGludCBfSU9fdnNjYW5mIChjb25zdCBj
aGFyICosIF9fZ251Y192YV9saXN0KSA7CiMgOTI4ICIuLi9saWJpby9saWJpb1AuaCIKZXh0ZXJu
IHN0cnVjdCBfSU9fZmFrZV9zdGRpb2J1ZiBfSU9fc3RkaW5fYnVmLCBfSU9fc3Rkb3V0X2J1Ziwg
X0lPX3N0ZGVycl9idWY7CiMgNDUgInZmcHJpbnRmLmMiIDIKIyAxNTYgInZmcHJpbnRmLmMiCiMg
MSAiX2kxOG5fbnVtYmVyLmgiIDEKIyAyMCAiX2kxOG5fbnVtYmVyLmgiCiMgMSAiLi4vbG9jYWxl
L291dGRpZ2l0cy5oIiAxCiMgMjAgIi4uL2xvY2FsZS9vdXRkaWdpdHMuaCIKIyAxICIuLi9pbmNs
dWRlL2Fzc2VydC5oIiAxCiMgMSAiLi4vYXNzZXJ0L2Fzc2VydC5oIiAxCiMgNjUgIi4uL2Fzc2Vy
dC9hc3NlcnQuaCIKCgoKZXh0ZXJuIHZvaWQgX19hc3NlcnRfZmFpbCAoX19jb25zdCBjaGFyICpf
X2Fzc2VydGlvbiwgX19jb25zdCBjaGFyICpfX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBfX2xpbmUsIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKZXh0ZXJuIHZvaWQgX19hc3NlcnRfcGVy
cm9yX2ZhaWwgKGludCBfX2Vycm51bSwgX19jb25zdCBjaGFyICpfX2ZpbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19saW5lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQogICAgIF9fYXR0
cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0IChjb25z
dCBjaGFyICpfX2Fzc2VydGlvbiwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19saW5lKQogICAg
IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKIyAyICIuLi9pbmNsdWRlL2Fzc2Vy
dC5oIiAyCgoKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIgKl9fYXNz
ZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQogIF9fYXR0cmli
dXRlX18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFp
bCAoaW50IF9fZXJybnVtLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xpbmUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKCmV4dGVybiBfX3R5cGVvZiAoX19hc3NlcnRfZmFpbCkgX19H
SV9fX2Fzc2VydF9mYWlsOyBleHRlcm4gX190eXBlb2YgKF9fYXNzZXJ0X2ZhaWwpIF9fYXNzZXJ0
X2ZhaWwgX19hc21fXyAoIiIgIl9fR0lfX19hc3NlcnRfZmFpbCIpIF9fYXR0cmlidXRlX18gKCh2
aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKZXh0ZXJuIF9fdHlwZW9mIChfX2Fzc2VydF9wZXJyb3Jf
ZmFpbCkgX19HSV9fX2Fzc2VydF9wZXJyb3JfZmFpbDsgZXh0ZXJuIF9fdHlwZW9mIChfX2Fzc2Vy
dF9wZXJyb3JfZmFpbCkgX19hc3NlcnRfcGVycm9yX2ZhaWwgX19hc21fXyAoIiIgIl9fR0lfX19h
c3NlcnRfcGVycm9yX2ZhaWwiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIp
KSk7CiMgMjEgIi4uL2xvY2FsZS9vdXRkaWdpdHMuaCIgMgojIDMwICIuLi9sb2NhbGUvb3V0ZGln
aXRzLmgiCnN0YXRpYyBpbmxpbmUgY2hhciAqCm91dGRpZ2l0X3ZhbHVlIChjaGFyICpzLCBpbnQg
bikKewogIGNvbnN0IGNoYXIgKm91dGRpZ2l0OwogIHNpemVfdCBkbGVuOwoKICAoKHZvaWQpICgo
MCA8PSBuICYmIG4gPD0gOSkgPyAwIDogKF9fYXNzZXJ0X2ZhaWwgKCIwIDw9IG4gJiYgbiA8PSA5
IiwgIi4uL2xvY2FsZS9vdXRkaWdpdHMuaCIsIDM2LCBfX1BSRVRUWV9GVU5DVElPTl9fKSwgMCkp
KTsKICBvdXRkaWdpdCA9ICgoKChfX2xvY2FsZV90KSAoX19saWJjX2ludGVybmFsX3RzZF9nZXQg
IT0gKCh2b2lkICopMCkgPyBfX2xpYmNfaW50ZXJuYWxfdHNkX2dldCAoX0xJQkNfVFNEX0tFWV9M
T0NBTEUpIDogX19saWJjX3RzZF9MT0NBTEVfZGF0YSkpLT5fX2xvY2FsZXNbX19MQ19DVFlQRV0p
LT52YWx1ZXNbKChpbnQpIChfTkxfQ1RZUEVfT1VURElHSVQwX01CICsgbikgJiAweGZmZmYpXS5z
dHJpbmcpOwogIGRsZW4gPSBzdHJsZW4gKG91dGRpZ2l0KTsKCiAgcyAtPSBkbGVuOwogIHdoaWxl
IChkbGVuLS0gPiAwKQogICAgc1tkbGVuXSA9IG91dGRpZ2l0W2RsZW5dOwoKICByZXR1cm4gczsK
fQojIDIxICJfaTE4bl9udW1iZXIuaCIgMgojIDEgIi4uL2xvY2FsZS9vdXRkaWdpdHN3Yy5oIiAx
CiMgMjAgIi4uL2xvY2FsZS9vdXRkaWdpdHN3Yy5oIgojIDEgIi4uL2luY2x1ZGUvYXNzZXJ0Lmgi
IDEKIyAxICIuLi9hc3NlcnQvYXNzZXJ0LmgiIDEKIyA2NSAiLi4vYXNzZXJ0L2Fzc2VydC5oIgoK
CgpleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLCBf
X2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQogICAgIF9fYXR0cmlidXRlX18g
KChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAoaW50
IF9fZXJybnVtLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
bm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX19hc3NlcnQgKGNvbnN0IGNoYXIgKl9fYXNz
ZXJ0aW9uLCBjb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX2xpbmUpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKCgojIDIgIi4uL2luY2x1ZGUvYXNzZXJ0LmgiIDIKCgoKCmV4
dGVybiB2b2lkIF9fYXNzZXJ0X2ZhaWwgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24sIF9fY29u
c3QgY2hhciAqX19maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
X19saW5lLCBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pCiAgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0X3BlcnJvcl9mYWlsIChpbnQgX19lcnJu
dW0sIF9fY29uc3QgY2hhciAqX19maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IF9fbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVy
bl9fKSk7CgoKZXh0ZXJuIF9fdHlwZW9mIChfX2Fzc2VydF9mYWlsKSBfX0dJX19fYXNzZXJ0X2Zh
aWw7IGV4dGVybiBfX3R5cGVvZiAoX19hc3NlcnRfZmFpbCkgX19hc3NlcnRfZmFpbCBfX2FzbV9f
ICgiIiAiX19HSV9fX2Fzc2VydF9mYWlsIikgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJo
aWRkZW4iKSkpOwpleHRlcm4gX190eXBlb2YgKF9fYXNzZXJ0X3BlcnJvcl9mYWlsKSBfX0dJX19f
YXNzZXJ0X3BlcnJvcl9mYWlsOyBleHRlcm4gX190eXBlb2YgKF9fYXNzZXJ0X3BlcnJvcl9mYWls
KSBfX2Fzc2VydF9wZXJyb3JfZmFpbCBfX2FzbV9fICgiIiAiX19HSV9fX2Fzc2VydF9wZXJyb3Jf
ZmFpbCIpIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKTsKIyAyMSAiLi4v
bG9jYWxlL291dGRpZ2l0c3djLmgiIDIKIyAyOSAiLi4vbG9jYWxlL291dGRpZ2l0c3djLmgiCnN0
YXRpYyBpbmxpbmUgd2NoYXJfdApvdXRkaWdpdHdjX3ZhbHVlIChpbnQgbikKewogICgodm9pZCkg
KCgwIDw9IG4gJiYgbiA8PSA5KSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoIjAgPD0gbiAmJiBuIDw9
IDkiLCAiLi4vbG9jYWxlL291dGRpZ2l0c3djLmgiLCAzMiwgX19QUkVUVFlfRlVOQ1RJT05fXyks
IDApKSk7CgogIHJldHVybiAoKCgoX19sb2NhbGVfdCkgKF9fbGliY19pbnRlcm5hbF90c2RfZ2V0
ICE9ICgodm9pZCAqKTApID8gX19saWJjX2ludGVybmFsX3RzZF9nZXQgKF9MSUJDX1RTRF9LRVlf
TE9DQUxFKSA6IF9fbGliY190c2RfTE9DQUxFX2RhdGEpKS0+X19sb2NhbGVzW19fTENfQ1RZUEVd
KS0+dmFsdWVzWygoaW50KSAoX05MX0NUWVBFX09VVERJR0lUMF9XQyArIG4pICYgMHhmZmZmKV0u
d29yZCk7Cn0KIyAyMiAiX2kxOG5fbnVtYmVyLmgiIDIKCnN0YXRpYyBjaGFyICoKX2kxOG5fbnVt
YmVyX3Jld3JpdGUgKGNoYXIgKncsIGNoYXIgKnJlYXJfcHRyKQp7CiAgY2hhciAqc3JjLCAqczsK
CgogIHNyYyA9IChjaGFyICopIF9fYnVpbHRpbl9hbGxvY2EgKChyZWFyX3B0ciAtIHcpICogc2l6
ZW9mIChjaGFyKSk7CiAgcyA9IChjaGFyICopIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29u
c3RhbnRfcCAodykgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKChyZWFyX3B0ciAtIHcpICogc2l6
ZW9mIChjaGFyKSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHcpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKHcpID09IDEpICYmIChyZWFyX3B0ciAtIHcpICogc2l6ZW9mIChjaGFy
KSA8PSA4ID8gX19idWlsdGluX21lbWNweSAoc3JjLCB3LCAocmVhcl9wdHIgLSB3KSAqIHNpemVv
ZiAoY2hhcikpICsgKChyZWFyX3B0ciAtIHcpICogc2l6ZW9mIChjaGFyKSkgOiBfX21lbXBjcHkg
KHNyYywgdywgKHJlYXJfcHRyIC0gdykgKiBzaXplb2YgKGNoYXIpKSkpOwoKICB3ID0gcmVhcl9w
dHI7CgoKICB3aGlsZSAoLS1zID49IHNyYykKICAgIHsKICAgICAgaWYgKCpzID49ICcwJyAmJiAq
cyA8PSAnOScpCiAgICAgICAgewogICAgICAgICAgaWYgKHNpemVvZiAoY2hhcikgPT0gMSkKICAg
ICAgICAgICAgdyA9IChjaGFyICopIG91dGRpZ2l0X3ZhbHVlICgoY2hhciAqKSB3LCAqcyAtICcw
Jyk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICotLXcgPSAoY2hhcikgb3V0ZGlnaXR3Y192
YWx1ZSAoKnMgLSAnMCcpOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgICotLXcgPSAqczsK
ICAgIH0KCiAgcmV0dXJuIHc7Cn0KIyAxNTcgInZmcHJpbnRmLmMiIDIKCgojIDEgInByaW50Zi1w
YXJzZS5oIiAxCiMgMjEgInByaW50Zi1wYXJzZS5oIgojIDEgIi4uL2luY2x1ZGUvbGltaXRzLmgi
IDEKIyAxNDQgIi4uL2luY2x1ZGUvbGltaXRzLmgiCiMgMSAiLi4vaW5jbHVkZS9iaXRzL3Bvc2l4
MV9saW0uaCIgMQojIDE0NSAiLi4vaW5jbHVkZS9saW1pdHMuaCIgMgoKCgojIDEgIi4uL2luY2x1
ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEKIyAxNDkgIi4uL2luY2x1ZGUvbGltaXRzLmgiIDIKIyAy
MiAicHJpbnRmLXBhcnNlLmgiIDIKCgojIDEgIi91c3IvbGliNjQvZ2NjLWxpYi94ODZfNjQtc3Vz
ZS1saW51eC8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyNSAicHJpbnRmLXBhcnNlLmgi
IDIKCgoKIyAxICIuLi9pbmNsdWRlL2Fzc2VydC5oIiAxCiMgMSAiLi4vYXNzZXJ0L2Fzc2VydC5o
IiAxCiMgMiAiLi4vaW5jbHVkZS9hc3NlcnQuaCIgMgoKCgoKZXh0ZXJuIHZvaWQgX19hc3NlcnRf
ZmFpbCAoX19jb25zdCBjaGFyICpfX2Fzc2VydGlvbiwgX19jb25zdCBjaGFyICpfX2ZpbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xpbmUsIF9fY29uc3QgY2hh
ciAqX19mdW5jdGlvbikKICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKZXh0ZXJu
IHZvaWQgX19hc3NlcnRfcGVycm9yX2ZhaWwgKGludCBfX2Vycm51bSwgX19jb25zdCBjaGFyICpf
X2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19s
aW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX2Z1
bmN0aW9uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gX190
eXBlb2YgKF9fYXNzZXJ0X2ZhaWwpIF9fR0lfX19hc3NlcnRfZmFpbDsgZXh0ZXJuIF9fdHlwZW9m
IChfX2Fzc2VydF9mYWlsKSBfX2Fzc2VydF9mYWlsIF9fYXNtX18gKCIiICJfX0dJX19fYXNzZXJ0
X2ZhaWwiKSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CmV4dGVybiBf
X3R5cGVvZiAoX19hc3NlcnRfcGVycm9yX2ZhaWwpIF9fR0lfX19hc3NlcnRfcGVycm9yX2ZhaWw7
IGV4dGVybiBfX3R5cGVvZiAoX19hc3NlcnRfcGVycm9yX2ZhaWwpIF9fYXNzZXJ0X3BlcnJvcl9m
YWlsIF9fYXNtX18gKCIiICJfX0dJX19fYXNzZXJ0X3BlcnJvcl9mYWlsIikgX19hdHRyaWJ1dGVf
XyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpOwojIDI5ICJwcmludGYtcGFyc2UuaCIgMgoKCnN0
cnVjdCBwcmludGZfc3BlYwogIHsKCiAgICBzdHJ1Y3QgcHJpbnRmX2luZm8gaW5mbzsKCgoKICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZF9vZl9mbXQsICpuZXh0X2ZtdDsKCgoKICAgIGludCBw
cmVjX2FyZywgd2lkdGhfYXJnOwoKICAgIGludCBkYXRhX2FyZzsKICAgIGludCBkYXRhX2FyZ190
eXBlOwoKICAgIHNpemVfdCBuZGF0YV9hcmdzOwogIH07CgoKCnVuaW9uIHByaW50Zl9hcmcKICB7
CiAgICB1bnNpZ25lZCBjaGFyIHBhX2NoYXI7CiAgICB3Y2hhcl90IHBhX3djaGFyOwogICAgc2hv
cnQgaW50IHBhX3Nob3J0X2ludDsKICAgIGludCBwYV9pbnQ7CiAgICBsb25nIGludCBwYV9sb25n
X2ludDsKICAgIGxvbmcgbG9uZyBpbnQgcGFfbG9uZ19sb25nX2ludDsKICAgIHVuc2lnbmVkIHNo
b3J0IGludCBwYV91X3Nob3J0X2ludDsKICAgIHVuc2lnbmVkIGludCBwYV91X2ludDsKICAgIHVu
c2lnbmVkIGxvbmcgaW50IHBhX3VfbG9uZ19pbnQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50
IHBhX3VfbG9uZ19sb25nX2ludDsKICAgIGZsb2F0IHBhX2Zsb2F0OwogICAgZG91YmxlIHBhX2Rv
dWJsZTsKICAgIGxvbmcgZG91YmxlIHBhX2xvbmdfZG91YmxlOwogICAgY29uc3QgY2hhciAqcGFf
c3RyaW5nOwogICAgY29uc3Qgd2NoYXJfdCAqcGFfd3N0cmluZzsKICAgIHZvaWQgKnBhX3BvaW50
ZXI7CiAgfTsKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50CnJlYWRfaW50IChjb25zdCB1
bnNpZ25lZCBjaGFyICogKnBzdHIpCnsKICB1bnNpZ25lZCBpbnQgcmV0dmFsID0gKipwc3RyIC0g
JzAnOwoKICB3aGlsZSAoKCh1bnNpZ25lZCBpbnQpICgoKisrKCpwc3RyKSkgLSAnMCcpIDwgMTAp
KQogICAgewogICAgICByZXR2YWwgKj0gMTA7CiAgICAgIHJldHZhbCArPSAqKnBzdHIgLSAnMCc7
CiAgICB9CgogIHJldHVybiByZXR2YWw7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGNvbnN0IHVuc2ln
bmVkIGNoYXIgKgoKCgpmaW5kX3NwZWMgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZvcm1hdCwgbWJz
dGF0ZV90ICpwcykKCnsKCgoKICB3aGlsZSAoKmZvcm1hdCAhPSAnXDAnICYmICpmb3JtYXQgIT0g
JyUnKQogICAgewogICAgICBpbnQgbGVuOwoKCiAgICAgIHBzLT5fX2NvdW50ID0gMDsKICAgICAg
aWYgKCEgKCgoKmZvcm1hdCkgJiB+MHg3ZikgPT0gMCkgJiYgKGxlbiA9IF9fbWJybGVuIChmb3Jt
YXQsICgoKCgoX19sb2NhbGVfdCkgKF9fbGliY19pbnRlcm5hbF90c2RfZ2V0ICE9ICgodm9pZCAq
KTApID8gX19saWJjX2ludGVybmFsX3RzZF9nZXQgKF9MSUJDX1RTRF9LRVlfTE9DQUxFKSA6IF9f
bGliY190c2RfTE9DQUxFX2RhdGEpKS0+X19sb2NhbGVzW19fTENfQ1RZUEVdKS0+dmFsdWVzWygo
aW50KSAoX05MX0NUWVBFX01CX0NVUl9NQVgpICYgMHhmZmZmKV0ud29yZCkpLCBwcykpID4gMCkK
ICAgICAgICBmb3JtYXQgKz0gbGVuOwogICAgICBlbHNlCiAgICAgICAgKytmb3JtYXQ7CiAgICB9
CiAgcmV0dXJuIGZvcm1hdDsKCn0KCgoKZXh0ZXJuIHByaW50Zl9hcmdpbmZvX2Z1bmN0aW9uICoq
X19wcmludGZfYXJnaW5mb190YWJsZSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRl
biIpKSk7CmV4dGVybiBwcmludGZfZnVuY3Rpb24gKipfX3ByaW50Zl9mdW5jdGlvbl90YWJsZSBf
X2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSk7CgoKCgoKCgpzdGF0aWMgaW5s
aW5lIHNpemVfdAoKCgoKcGFyc2Vfb25lX3NwZWMgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZvcm1h
dCwgc2l6ZV90IHBvc24sIHN0cnVjdCBwcmludGZfc3BlYyAqc3BlYywKICAgICAgICAgICAgICAg
IHNpemVfdCAqbWF4X3JlZl9hcmcsIG1ic3RhdGVfdCAqcHMpCgp7CiAgdW5zaWduZWQgaW50IG47
CiAgc2l6ZV90IG5hcmdzID0gMDsKCgogICsrZm9ybWF0OwoKCiAgc3BlYy0+ZGF0YV9hcmcgPSAt
MTsKICBzcGVjLT5pbmZvLmFsdCA9IDA7CiAgc3BlYy0+aW5mby5zcGFjZSA9IDA7CiAgc3BlYy0+
aW5mby5sZWZ0ID0gMDsKICBzcGVjLT5pbmZvLnNob3dzaWduID0gMDsKICBzcGVjLT5pbmZvLmdy
b3VwID0gMDsKICBzcGVjLT5pbmZvLmkxOG4gPSAwOwogIHNwZWMtPmluZm8ucGFkID0gJyAnOwog
IHNwZWMtPmluZm8ud2lkZSA9IHNpemVvZiAodW5zaWduZWQgY2hhcikgPiAxOwoKCiAgaWYgKCgo
dW5zaWduZWQgaW50KSAoKCpmb3JtYXQpIC0gJzAnKSA8IDEwKSkKICAgIHsKICAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciAqYmVnaW4gPSBmb3JtYXQ7CgogICAgICBuID0gcmVhZF9pbnQgKCZmb3Jt
YXQpOwoKICAgICAgaWYgKG4gPiAwICYmICpmb3JtYXQgPT0gJyQnKQoKICAgICAgICB7CiAgICAg
ICAgICArK2Zvcm1hdDsKICAgICAgICAgIHNwZWMtPmRhdGFfYXJnID0gbiAtIDE7CiAgICAgICAg
ICAqbWF4X3JlZl9hcmcgPSAoKCgqbWF4X3JlZl9hcmcpPihuKSk/KCptYXhfcmVmX2FyZyk6KG4p
KTsKICAgICAgICB9CiAgICAgIGVsc2UKCgogICAgICAgIGZvcm1hdCA9IGJlZ2luOwogICAgfQoK
CiAgZG8KICAgIHsKICAgICAgc3dpdGNoICgqZm9ybWF0KQogICAgICAgIHsKICAgICAgICBjYXNl
ICcgJzoKCiAgICAgICAgICBzcGVjLT5pbmZvLnNwYWNlID0gMTsKICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgIGNhc2UgJysnOgoKICAgICAgICAgIHNwZWMtPmluZm8uc2hvd3NpZ24gPSAxOwog
ICAgICAgICAgY29udGludWU7CiAgICAgICAgY2FzZSAnLSc6CgogICAgICAgICAgc3BlYy0+aW5m
by5sZWZ0ID0gMTsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGNhc2UgJyMnOgoKCiAgICAg
ICAgICBzcGVjLT5pbmZvLmFsdCA9IDE7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICBjYXNl
ICcwJzoKCiAgICAgICAgICBzcGVjLT5pbmZvLnBhZCA9ICcwJzsKICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgIGNhc2UgJ1wnJzoKCgogICAgICAgICAgc3BlYy0+aW5mby5ncm91cCA9IDE7CiAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICBjYXNlICdJJzoKCgogICAgICAgICAgc3BlYy0+aW5m
by5pMThuID0gMTsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICBicmVhazsKICAgICAgICB9CiAgICAgIGJyZWFrOwogICAgfQogIHdoaWxlICgqKytmb3JtYXQp
OwoKICBpZiAoc3BlYy0+aW5mby5sZWZ0KQogICAgc3BlYy0+aW5mby5wYWQgPSAnICc7CgoKICBz
cGVjLT53aWR0aF9hcmcgPSAtMTsKICBzcGVjLT5pbmZvLndpZHRoID0gMDsKICBpZiAoKmZvcm1h
dCA9PSAnKicpCiAgICB7CgoKICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmVnaW4gPSArK2Zv
cm1hdDsKCiAgICAgIGlmICgoKHVuc2lnbmVkIGludCkgKCgqZm9ybWF0KSAtICcwJykgPCAxMCkp
CiAgICAgICAgewoKICAgICAgICAgIG4gPSByZWFkX2ludCAoJmZvcm1hdCk7CgogICAgICAgICAg
aWYgKG4gPiAwICYmICpmb3JtYXQgPT0gJyQnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAg
c3BlYy0+d2lkdGhfYXJnID0gbiAtIDE7CiAgICAgICAgICAgICAgKm1heF9yZWZfYXJnID0gKCgo
Km1heF9yZWZfYXJnKT4obikpPygqbWF4X3JlZl9hcmcpOihuKSk7CiAgICAgICAgICAgICAgKytm
b3JtYXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBpZiAoc3BlYy0+d2lkdGhfYXJn
IDwgMCkKICAgICAgICB7CgogICAgICAgICAgc3BlYy0+d2lkdGhfYXJnID0gcG9zbisrOwogICAg
ICAgICAgKytuYXJnczsKICAgICAgICAgIGZvcm1hdCA9IGJlZ2luOwogICAgICAgIH0KICAgIH0K
ICBlbHNlIGlmICgoKHVuc2lnbmVkIGludCkgKCgqZm9ybWF0KSAtICcwJykgPCAxMCkpCgogICAg
c3BlYy0+aW5mby53aWR0aCA9IHJlYWRfaW50ICgmZm9ybWF0KTsKCgogIHNwZWMtPnByZWNfYXJn
ID0gLTE7CgogIHNwZWMtPmluZm8ucHJlYyA9IC0xOwogIGlmICgqZm9ybWF0ID09ICcuJykKICAg
IHsKICAgICAgKytmb3JtYXQ7CiAgICAgIGlmICgqZm9ybWF0ID09ICcqJykKICAgICAgICB7Cgog
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmVnaW4gPSArK2Zvcm1hdDsKCiAgICAgICAg
ICBpZiAoKCh1bnNpZ25lZCBpbnQpICgoKmZvcm1hdCkgLSAnMCcpIDwgMTApKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgbiA9IHJlYWRfaW50ICgmZm9ybWF0KTsKCiAgICAgICAgICAgICAg
aWYgKG4gPiAwICYmICpmb3JtYXQgPT0gJyQnKQogICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICBzcGVjLT5wcmVjX2FyZyA9IG4gLSAxOwogICAgICAgICAgICAgICAgICAqbWF4X3Jl
Zl9hcmcgPSAoKCgqbWF4X3JlZl9hcmcpPihuKSk/KCptYXhfcmVmX2FyZyk6KG4pKTsKICAgICAg
ICAgICAgICAgICAgKytmb3JtYXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAg
ICAgICAgICBpZiAoc3BlYy0+cHJlY19hcmcgPCAwKQogICAgICAgICAgICB7CgogICAgICAgICAg
ICAgIHNwZWMtPnByZWNfYXJnID0gcG9zbisrOwogICAgICAgICAgICAgICsrbmFyZ3M7CiAgICAg
ICAgICAgICAgZm9ybWF0ID0gYmVnaW47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGVs
c2UgaWYgKCgodW5zaWduZWQgaW50KSAoKCpmb3JtYXQpIC0gJzAnKSA8IDEwKSkKICAgICAgICBz
cGVjLT5pbmZvLnByZWMgPSByZWFkX2ludCAoJmZvcm1hdCk7CiAgICAgIGVsc2UKCiAgICAgICAg
c3BlYy0+aW5mby5wcmVjID0gMDsKICAgIH0KCgogIHNwZWMtPmluZm8uaXNfbG9uZ19kb3VibGUg
PSAwOwogIHNwZWMtPmluZm8uaXNfc2hvcnQgPSAwOwogIHNwZWMtPmluZm8uaXNfbG9uZyA9IDA7
CiAgc3BlYy0+aW5mby5pc19jaGFyID0gMDsKCiAgc3dpdGNoICgqZm9ybWF0KyspCiAgICB7CiAg
ICBjYXNlICdoJzoKCiAgICAgIGlmICgqZm9ybWF0ICE9ICdoJykKICAgICAgICBzcGVjLT5pbmZv
LmlzX3Nob3J0ID0gMTsKICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICsrZm9ybWF0Owog
ICAgICAgICAgc3BlYy0+aW5mby5pc19jaGFyID0gMTsKICAgICAgICB9CiAgICAgIGJyZWFrOwog
ICAgY2FzZSAnbCc6CgogICAgICBzcGVjLT5pbmZvLmlzX2xvbmcgPSAxOwogICAgICBpZiAoKmZv
cm1hdCAhPSAnbCcpCiAgICAgICAgYnJlYWs7CiAgICAgICsrZm9ybWF0OwoKICAgIGNhc2UgJ0wn
OgoKICAgIGNhc2UgJ3EnOgoKICAgICAgc3BlYy0+aW5mby5pc19sb25nX2RvdWJsZSA9IDE7CiAg
ICAgIGJyZWFrOwogICAgY2FzZSAneic6CiAgICBjYXNlICdaJzoKCiAgICAgICgodm9pZCkgKDAp
KTsKCgoKICAgICAgc3BlYy0+aW5mby5pc19sb25nID0gc2l6ZW9mIChzaXplX3QpID4gc2l6ZW9m
ICh1bnNpZ25lZCBpbnQpOwogICAgICBicmVhazsKICAgIGNhc2UgJ3QnOgogICAgICAoKHZvaWQp
ICgwKSk7CgoKCiAgICAgIHNwZWMtPmluZm8uaXNfbG9uZyA9IHNpemVvZiAocHRyZGlmZl90KSA+
IHNpemVvZiAoaW50KTsKICAgICAgYnJlYWs7CiAgICBjYXNlICdqJzoKICAgICAgKCh2b2lkKSAo
MCkpOwoKCgoKICAgICAgc3BlYy0+aW5mby5pc19sb25nID0gc2l6ZW9mICh1aW50bWF4X3QpID4g
c2l6ZW9mICh1bnNpZ25lZCBpbnQpOwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CgogICAgICAt
LWZvcm1hdDsKICAgICAgYnJlYWs7CiAgICB9CgoKICBzcGVjLT5pbmZvLnNwZWMgPSAod2NoYXJf
dCkgKmZvcm1hdCsrOwogIGlmIChfX2J1aWx0aW5fZXhwZWN0IChfX3ByaW50Zl9mdW5jdGlvbl90
YWJsZSAhPSAoKHZvaWQgKikwKSwgMCkKICAgICAgJiYgc3BlYy0+aW5mby5zcGVjIDw9ICgxMjcg
KiAyICsgMSkKICAgICAgJiYgX19wcmludGZfYXJnaW5mb190YWJsZVtzcGVjLT5pbmZvLnNwZWNd
ICE9ICgodm9pZCAqKTApKQoKCiAgICBzcGVjLT5uZGF0YV9hcmdzID0gKCpfX3ByaW50Zl9hcmdp
bmZvX3RhYmxlW3NwZWMtPmluZm8uc3BlY10pCiAgICAgICgmc3BlYy0+aW5mbywgMSwgJnNwZWMt
PmRhdGFfYXJnX3R5cGUpOwogIGVsc2UKICAgIHsKCiAgICAgIHNwZWMtPm5kYXRhX2FyZ3MgPSAx
OwoKICAgICAgc3dpdGNoIChzcGVjLT5pbmZvLnNwZWMpCiAgICAgICAgewogICAgICAgIGNhc2Ug
TCdpJzoKICAgICAgICBjYXNlIEwnZCc6CiAgICAgICAgY2FzZSBMJ3UnOgogICAgICAgIGNhc2Ug
TCdvJzoKICAgICAgICBjYXNlIEwnWCc6CiAgICAgICAgY2FzZSBMJ3gnOgoKCgoKCiAgICAgICAg
ICAgIGlmIChzcGVjLT5pbmZvLmlzX2xvbmcpCiAgICAgICAgICAgICAgc3BlYy0+ZGF0YV9hcmdf
dHlwZSA9IFBBX0lOVHwoMSA8PCA5KTsKICAgICAgICAgICAgZWxzZSBpZiAoc3BlYy0+aW5mby5p
c19zaG9ydCkKICAgICAgICAgICAgICBzcGVjLT5kYXRhX2FyZ190eXBlID0gUEFfSU5UfCgxIDw8
IDEwKTsKICAgICAgICAgICAgZWxzZSBpZiAoc3BlYy0+aW5mby5pc19jaGFyKQogICAgICAgICAg
ICAgIHNwZWMtPmRhdGFfYXJnX3R5cGUgPSBQQV9DSEFSOwogICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgc3BlYy0+ZGF0YV9hcmdfdHlwZSA9IFBBX0lOVDsKICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgTCdlJzoKICAgICAgICBjYXNlIEwnRSc6CiAgICAgICAgY2FzZSBMJ2YnOgog
ICAgICAgIGNhc2UgTCdGJzoKICAgICAgICBjYXNlIEwnZyc6CiAgICAgICAgY2FzZSBMJ0cnOgog
ICAgICAgIGNhc2UgTCdhJzoKICAgICAgICBjYXNlIEwnQSc6CiAgICAgICAgICBpZiAoc3BlYy0+
aW5mby5pc19sb25nX2RvdWJsZSkKICAgICAgICAgICAgc3BlYy0+ZGF0YV9hcmdfdHlwZSA9IFBB
X0RPVUJMRXwoMSA8PCA4KTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgc3BlYy0+ZGF0YV9h
cmdfdHlwZSA9IFBBX0RPVUJMRTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgTCdjJzoK
ICAgICAgICAgIHNwZWMtPmRhdGFfYXJnX3R5cGUgPSBQQV9DSEFSOwogICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSBMJ0MnOgogICAgICAgICAgc3BlYy0+ZGF0YV9hcmdfdHlwZSA9IFBBX1dD
SEFSOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBMJ3MnOgogICAgICAgICAgc3BlYy0+
ZGF0YV9hcmdfdHlwZSA9IFBBX1NUUklORzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
TCdTJzoKICAgICAgICAgIHNwZWMtPmRhdGFfYXJnX3R5cGUgPSBQQV9XU1RSSU5HOwogICAgICAg
ICAgYnJlYWs7CiAgICAgICAgY2FzZSBMJ3AnOgogICAgICAgICAgc3BlYy0+ZGF0YV9hcmdfdHlw
ZSA9IFBBX1BPSU5URVI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIEwnbic6CiAgICAg
ICAgICBzcGVjLT5kYXRhX2FyZ190eXBlID0gUEFfSU5UfCgxIDw8IDExKTsKICAgICAgICAgIGJy
ZWFrOwoKICAgICAgICBjYXNlIEwnbSc6CiAgICAgICAgZGVmYXVsdDoKCiAgICAgICAgICBzcGVj
LT5uZGF0YV9hcmdzID0gMDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgaWYg
KHNwZWMtPmRhdGFfYXJnID09IC0xICYmIHNwZWMtPm5kYXRhX2FyZ3MgPiAwKQogICAgewoKCiAg
ICAgIHNwZWMtPmRhdGFfYXJnID0gcG9zbjsKICAgICAgbmFyZ3MgKz0gc3BlYy0+bmRhdGFfYXJn
czsKICAgIH0KCiAgaWYgKHNwZWMtPmluZm8uc3BlYyA9PSBMJ1wwJykKCiAgICBzcGVjLT5lbmRf
b2ZfZm10ID0gc3BlYy0+bmV4dF9mbXQgPSBmb3JtYXQgLSAxOwogIGVsc2UKICAgIHsKCiAgICAg
IHNwZWMtPmVuZF9vZl9mbXQgPSBmb3JtYXQ7CgoKCiAgICAgIHNwZWMtPm5leHRfZm10ID0gZmlu
ZF9zcGVjIChmb3JtYXQsIHBzKTsKCiAgICB9CgogIHJldHVybiBuYXJnczsKfQojIDE2MCAidmZw
cmludGYuYyIgMgojIDIwNyAidmZwcmludGYuYyIKc3RhdGljIGNvbnN0IGNoYXIgbnVsbFtdID0g
IihudWxsKSI7CgoKCnN0YXRpYyBpbnQgYnVmZmVyZWRfdmZwcmludGYgKF9JT19GSUxFICpzdHJl
YW0sIGNvbnN0IGNoYXIgKmZtdCwgX19nbnVjX3ZhX2xpc3QpCiAgICAgOwoKCnN0YXRpYyBpbnQg
cHJpbnRmX3Vua25vd24gKF9JT19GSUxFICosIGNvbnN0IHN0cnVjdCBwcmludGZfaW5mbyAqLCBj
b25zdCB2b2lkICpjb25zdCAqKSA7CgoKCgoKCgpzdGF0aWMgY2hhciAqZ3JvdXBfbnVtYmVyIChj
aGFyICosIGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopIDsKCgoKCgppbnQKX0lP
X3ZmcHJpbnRmIChfSU9fRklMRSAqcywgY29uc3QgY2hhciAqZm9ybWF0LCBfX2dudWNfdmFfbGlz
dCBhcCkKewoKCgoKICBjb25zdCBjaGFyICp0aG91c2FuZHNfc2VwID0gKCh2b2lkICopMCk7CgoK
CiAgY29uc3QgY2hhciAqZ3JvdXBpbmc7CgoKICBpbnQgZG9uZTsKCgogIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmY7CgoKICBjb25zdCB1bnNpZ25lZCBjaGFyICpsZWFkX3N0cl9lbmQ7CgoKICBjb25z
dCB1bnNpZ25lZCBjaGFyICplbmRfb2Zfc3BlYzsKCgogIGNoYXIgd29ya19idWZmZXJbMTAwMF07
CiAgY2hhciAqd29ya3N0YXJ0ID0gKCh2b2lkICopMCk7CiAgY2hhciAqd29ya2VuZDsKCgoKICBt
YnN0YXRlX3QgbWJzdGF0ZTsKCgoKICBfX2dudWNfdmFfbGlzdCBhcF9zYXZlOwoKCiAgaW50IG5z
cGVjc19kb25lOwoKCiAgaW50IHNhdmVfZXJybm8gPSAoKl9fZXJybm9fbG9jYXRpb24gKCkpOwoK
CgoKCiAgc3RhdGljIGNvbnN0IGludCBqdW1wX3RhYmxlW10gPQogIHsKICAgICAgICAgICAgICAg
MSwgMCwgMCwgNCwKICAgICAgICAgICAgICAgMCwgMTQsIDAsIDYsCiAgICAgICAgICAgICAgIDAs
IDAsIDcsIDIsCiAgICAgICAgICAgICAgIDAsIDMsIDksIDAsCiAgICAgICAgICAgICAgIDUsIDgs
IDgsIDgsCiAgICAgICAgICAgICAgIDgsIDgsIDgsIDgsCiAgICAgICAgICAgICAgIDgsIDgsIDAs
IDAsCiAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsCiAgICAgICAgICAgICAgIDAsIDI2LCAwLCAy
NSwKICAgICAgICAgICAgICAgMCwgMTksIDE5LCAxOSwKICAgICAgICAgICAgICAgMCwgMjksIDAs
IDAsCiAgICAgICAgICAgICAgMTIsIDAsIDAsIDAsCiAgICAgICAgICAgICAgIDAsIDAsIDAsIDIx
LAogICAgICAgICAgICAgICAwLCAwLCAwLCAwLAogICAgICAgICAgICAgIDE4LCAwLCAxMywgMCwK
ICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwKICAgICAgICAgICAgICAgMCwgMjYsIDAsIDIwLAog
ICAgICAgICAgICAgIDE1LCAxOSwgMTksIDE5LAogICAgICAgICAgICAgIDEwLCAxNSwgMjgsIDAs
CiAgICAgICAgICAgICAgMTEsIDI0LCAyMywgMTcsCiAgICAgICAgICAgICAgMjIsIDEyLCAwLCAy
MSwKICAgICAgICAgICAgICAyNywgMTYsIDAsIDAsCiAgICAgICAgICAgICAgMTgsIDAsIDEzCiAg
fTsKIyAxMjYyICJ2ZnByaW50Zi5jIgogIGlmIChzLT5fdnRhYmxlX29mZnNldCA9PSAwICYmICh7
IGludCBfX3Jlc3VsdCA9ICgtMSk7IGlmIChfX3Jlc3VsdCA8IDAgJiYgISAoMCkpIHsgaWYgKChz
KS0+X21vZGUgPT0gMCkgKHMpLT5fbW9kZSA9IC0xOyBfX3Jlc3VsdCA9IChzKS0+X21vZGU7IH0g
ZWxzZSBpZiAoX19idWlsdGluX2NvbnN0YW50X3AgKC0xKSAmJiAoLTEpID09IDApIF9fcmVzdWx0
ID0gKHMpLT5fbW9kZTsgZWxzZSBfX3Jlc3VsdCA9IF9JT19md2lkZSAocywgX19yZXN1bHQpOyBf
X3Jlc3VsdDsgfSkgIT0gLTEpIHJldHVybiAtMTsKCgoKICBkbyB7IDsgaWYgKHMtPl9mbGFncyAm
IDgpIHsgKCpfX2Vycm5vX2xvY2F0aW9uICgpKSA9ICg5KTsgcmV0dXJuIC0xOyB9IGlmIChmb3Jt
YXQgPT0gKCh2b2lkICopMCkpIHsgKCpfX2Vycm5vX2xvY2F0aW9uICgpKSA9ICgyMik7IHJldHVy
biAtMTsgfSB9IHdoaWxlICgwKTsKCgoKICBpZiAoCgogICAgICBzLT5fdnRhYmxlX29mZnNldCA9
PSAwICYmCgogICAgICAoeyBpbnQgX19yZXN1bHQgPSAoc2l6ZW9mIChjaGFyKSA9PSAxID8gLTEg
OiAxKTsgaWYgKF9fcmVzdWx0IDwgMCAmJiAhICgwKSkgeyBpZiAoKHMpLT5fbW9kZSA9PSAwKSAo
cyktPl9tb2RlID0gLTE7IF9fcmVzdWx0ID0gKHMpLT5fbW9kZTsgfSBlbHNlIGlmIChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoc2l6ZW9mIChjaGFyKSA9PSAxID8gLTEgOiAxKSAmJiAoc2l6ZW9mIChj
aGFyKSA9PSAxID8gLTEgOiAxKSA9PSAwKSBfX3Jlc3VsdCA9IChzKS0+X21vZGU7IGVsc2UgX19y
ZXN1bHQgPSBfSU9fZndpZGUgKHMsIF9fcmVzdWx0KTsgX19yZXN1bHQ7IH0pCiAgICAgICE9IChz
aXplb2YgKGNoYXIpID09IDEgPyAtMSA6IDEpKQoKICAgIHJldHVybiAoLTEpOwoKCiAgaWYgKCgo
cyktPl9mbGFncyAmIDIpKQoKCiAgICByZXR1cm4gYnVmZmVyZWRfdmZwcmludGYgKHMsIGZvcm1h
dCwgYXApOwoKCiAgZG9uZSA9IDA7CiAgZ3JvdXBpbmcgPSAoY29uc3QgY2hhciAqKSAtMTsKCgoK
ICBfX2J1aWx0aW5fdmFfY29weShhcF9zYXZlLGFwKTsKCgoKICBuc3BlY3NfZG9uZSA9IDA7CgoK
CgoKCiAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzaXplb2YgKG1ic3Rh
dGVfdCkpICYmIChzaXplb2YgKG1ic3RhdGVfdCkpIDw9IDE2ID8gKChzaXplb2YgKG1ic3RhdGVf
dCkpID09IDEgPyAoeyB2b2lkICpfX3MgPSAoJm1ic3RhdGUpOyAqKChfX3VpbnQ4X3QgKikgX19z
KSA9IChfX3VpbnQ4X3QpICdcMCc7IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAoJm1ic3RhdGUp
OyB1bmlvbiB7IHVuc2lnbmVkIGludCBfX3VpOyB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7IHVu
c2lnbmVkIGNoYXIgX191YzsgfSAqX191ID0gX19zOyBfX3VpbnQ4X3QgX19jID0gKF9fdWludDhf
dCkgKCdcMCcpOyBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIChzaXplb2YgKG1ic3RhdGVfdCkpKSB7
IGNhc2UgMTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDExOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA3OiBfX3Ut
Pl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICog
MHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsgX191LT5fX3Vj
ID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTQ6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNl
IDEwOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNp
ID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBicmVhazsgY2FzZSAxMzogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7IGNhc2UgOTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19l
eHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNTogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2Ug
MTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTY6IF9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDQpOyBjYXNlIDEyOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA0
OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJyZWFrOyB9IF9fczsgfSkp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgnXDAnKSAmJiAoJ1wwJykgPT0gJ1wwJyA/ICh7IHZv
aWQgKl9fcyA9ICgmbWJzdGF0ZSk7IF9fYnVpbHRpbl9tZW1zZXQgKF9fcywgJ1wwJywgc2l6ZW9m
IChtYnN0YXRlX3QpKTsgX19zOyB9KSA6IG1lbXNldCAoJm1ic3RhdGUsICdcMCcsIHNpemVvZiAo
bWJzdGF0ZV90KSkpKSk7CgoKICBmID0gbGVhZF9zdHJfZW5kID0gZmluZF9zcGVjIChmb3JtYXQs
ICZtYnN0YXRlKTsKCgoKCiAgeyBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgX2J1ZmZl
cjsgaW50IF9hdmFpbCA9ICgxKSAmJiBfcHRocmVhZF9jbGVhbnVwX3B1c2hfZGVmZXIgIT0gKCh2
b2lkICopMCk7IGlmIChfYXZhaWwpIHsgX3B0aHJlYWRfY2xlYW51cF9wdXNoX2RlZmVyICgmX2J1
ZmZlciwgKCh2b2lkICgqKSAodm9pZCAqKSkgJl9JT19mdW5sb2NrZmlsZSksIChzKSk7IH07CiAg
OwoKCgoKCgogIGRvIHsgaWYgKChzaXplX3QpICgoKihzdHJ1Y3QgX0lPX2p1bXBfdCAqKikgKCh2
b2lkICopICYoKHN0cnVjdCBfSU9fRklMRV9wbHVzICopICgocykpKS0+dnRhYmxlICsgKChzKSkt
Pl92dGFibGVfb2Zmc2V0KSktPl9feHNwdXRuKSAoKHMpLCAoKChjb25zdCB1bnNpZ25lZCBjaGFy
ICopIGZvcm1hdCkpLCAoKGxlYWRfc3RyX2VuZCAtIChjb25zdCB1bnNpZ25lZCBjaGFyICopIGZv
cm1hdCkpKSAhPSAoc2l6ZV90KSAobGVhZF9zdHJfZW5kIC0gKGNvbnN0IHVuc2lnbmVkIGNoYXIg
KikgZm9ybWF0KSkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZG9uZSArPSAobGVhZF9z
dHJfZW5kIC0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgZm9ybWF0KTsgfSB3aGlsZSAoMCk7CgoK
CiAgaWYgKCpmID09ICdcMCcpCiAgICBnb3RvIGFsbF9kb25lOwoKCiAgZG8KICAgIHsKCgoKCgoK
ICAgICAgc3RhdGljIGNvbnN0IGludCBzdGVwMF9qdW1wc1szMF0gPSB7ICYmZG9fZm9ybV91bmtu
b3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZmxhZ19zcGFjZSAtICYmZG9fZm9ybV91bmtu
b3duLCAmJmRvX2ZsYWdfcGx1cyAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2ZsYWdfbWludXMg
LSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mbGFnX2hhc2ggLSAmJmRvX2Zvcm1fdW5rbm93biwg
JiZkb19mbGFnX3plcm8gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mbGFnX3F1b3RlIC0gJiZk
b19mb3JtX3Vua25vd24sICYmZG9fd2lkdGhfYXN0ZXJpY3MgLSAmJmRvX2Zvcm1fdW5rbm93biwg
JiZkb193aWR0aCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX3ByZWNpc2lvbiAtICYmZG9fZm9y
bV91bmtub3duLCAmJmRvX21vZF9oYWxmIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fbW9kX2xv
bmcgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19tb2RfbG9uZ2xvbmcgLSAmJmRvX2Zvcm1fdW5r
bm93biwgJiZkb19tb2Rfc2l6ZV90IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9wZXJj
ZW50IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9pbnRlZ2VyIC0gJiZkb19mb3JtX3Vu
a25vd24sICYmZG9fZm9ybV91bnNpZ25lZCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1f
b2N0YWwgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX2hleGEgLSAmJmRvX2Zvcm1fdW5r
bm93biwgJiZkb19mb3JtX2Zsb2F0IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9jaGFy
YWN0ZXIgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3N0cmluZyAtICYmZG9fZm9ybV91
bmtub3duLCAmJmRvX2Zvcm1fcG9pbnRlciAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1f
bnVtYmVyIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9zdHJlcnJvciAtICYmZG9fZm9y
bV91bmtub3duLCAmJmRvX2Zvcm1fd2NoYXJhY3RlciAtICYmZG9fZm9ybV91bmtub3duLCAmJmRv
X2Zvcm1fZmxvYXRoZXggLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19tb2RfcHRyZGlmZl90IC0g
JiZkb19mb3JtX3Vua25vd24sICYmZG9fbW9kX2ludG1heF90IC0gJiZkb19mb3JtX3Vua25vd24s
ICYmZG9fZmxhZ19pMThuIC0gJiZkb19mb3JtX3Vua25vd24sIH07IHN0YXRpYyBjb25zdCBpbnQg
c3RlcDFfanVtcHNbMzBdID0geyAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3du
LCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93
biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtu
b3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5r
bm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91
bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1f
dW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX3ByZWNpc2lvbiAtICYmZG9fZm9ybV91
bmtub3duLCAmJmRvX21vZF9oYWxmIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fbW9kX2xvbmcg
LSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19tb2RfbG9uZ2xvbmcgLSAmJmRvX2Zvcm1fdW5rbm93
biwgJiZkb19tb2Rfc2l6ZV90IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9wZXJjZW50
IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9pbnRlZ2VyIC0gJiZkb19mb3JtX3Vua25v
d24sICYmZG9fZm9ybV91bnNpZ25lZCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fb2N0
YWwgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX2hleGEgLSAmJmRvX2Zvcm1fdW5rbm93
biwgJiZkb19mb3JtX2Zsb2F0IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9jaGFyYWN0
ZXIgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3N0cmluZyAtICYmZG9fZm9ybV91bmtu
b3duLCAmJmRvX2Zvcm1fcG9pbnRlciAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fbnVt
YmVyIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9zdHJlcnJvciAtICYmZG9fZm9ybV91
bmtub3duLCAmJmRvX2Zvcm1fd2NoYXJhY3RlciAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zv
cm1fZmxvYXRoZXggLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19tb2RfcHRyZGlmZl90IC0gJiZk
b19mb3JtX3Vua25vd24sICYmZG9fbW9kX2ludG1heF90IC0gJiZkb19mb3JtX3Vua25vd24sICYm
ZG9fZmxhZ19pMThuIC0gJiZkb19mb3JtX3Vua25vd24gfTsgc3RhdGljIGNvbnN0IGludCBzdGVw
Ml9qdW1wc1szMF0gPSB7ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYm
ZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0g
JiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24s
ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3du
IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25v
d24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtu
b3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vu
a25vd24sICYmZG9fbW9kX2hhbGYgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19tb2RfbG9uZyAt
ICYmZG9fZm9ybV91bmtub3duLCAmJmRvX21vZF9sb25nbG9uZyAtICYmZG9fZm9ybV91bmtub3du
LCAmJmRvX21vZF9zaXplX3QgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3BlcmNlbnQg
LSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX2ludGVnZXIgLSAmJmRvX2Zvcm1fdW5rbm93
biwgJiZkb19mb3JtX3Vuc2lnbmVkIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9vY3Rh
bCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1faGV4YSAtICYmZG9fZm9ybV91bmtub3du
LCAmJmRvX2Zvcm1fZmxvYXQgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX2NoYXJhY3Rl
ciAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fc3RyaW5nIC0gJiZkb19mb3JtX3Vua25v
d24sICYmZG9fZm9ybV9wb2ludGVyIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9udW1i
ZXIgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3N0cmVycm9yIC0gJiZkb19mb3JtX3Vu
a25vd24sICYmZG9fZm9ybV93Y2hhcmFjdGVyIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9y
bV9mbG9hdGhleCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX21vZF9wdHJkaWZmX3QgLSAmJmRv
X2Zvcm1fdW5rbm93biwgJiZkb19tb2RfaW50bWF4X3QgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZk
b19mbGFnX2kxOG4gLSAmJmRvX2Zvcm1fdW5rbm93biB9OyBzdGF0aWMgY29uc3QgaW50IHN0ZXAz
YV9qdW1wc1szMF0gPSB7ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYm
ZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0g
JiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24s
ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3du
IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25v
d24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtu
b3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vu
a25vd24sICYmZG9fbW9kX2hhbGZoYWxmIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91
bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3Jt
X3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9y
bV9wZXJjZW50IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9pbnRlZ2VyIC0gJiZkb19m
b3JtX3Vua25vd24sICYmZG9fZm9ybV91bnNpZ25lZCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRv
X2Zvcm1fb2N0YWwgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX2hleGEgLSAmJmRvX2Zv
cm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19m
b3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRv
X2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZk
b19mb3JtX251bWJlciAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYm
ZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAm
JmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAt
ICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3du
LCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duIH07IHN0YXRpYyBjb25zdCBp
bnQgc3RlcDNiX2p1bXBzWzMwXSA9IHsgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5r
bm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vu
a25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1f
dW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3Jt
X3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zv
cm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19m
b3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRv
X2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZk
b19tb2RfbG9uZ2xvbmcgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAm
JmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwg
JiZkb19mb3JtX3BlcmNlbnQgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX2ludGVnZXIg
LSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3Vuc2lnbmVkIC0gJiZkb19mb3JtX3Vua25v
d24sICYmZG9fZm9ybV9vY3RhbCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1faGV4YSAt
ICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fZmxvYXQgLSAmJmRvX2Zvcm1fdW5rbm93biwg
JiZkb19mb3JtX2NoYXJhY3RlciAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fc3RyaW5n
IC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9wb2ludGVyIC0gJiZkb19mb3JtX3Vua25v
d24sICYmZG9fZm9ybV9udW1iZXIgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3N0cmVy
cm9yIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV93Y2hhcmFjdGVyIC0gJiZkb19mb3Jt
X3Vua25vd24sICYmZG9fZm9ybV9mbG9hdGhleCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zv
cm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9f
Zm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duIH07CiAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgc3RlcDRfanVtcHNbMzBdID0geyAmJmRvX2Zvcm1fdW5rbm93
biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtu
b3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5r
bm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91
bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1f
dW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9y
bV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zv
cm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9f
Zm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRv
X2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5rbm93biAtICYm
ZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fcGVyY2VudCAtICYmZG9fZm9ybV91bmtub3duLCAm
JmRvX2Zvcm1faW50ZWdlciAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fdW5zaWduZWQg
LSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX29jdGFsIC0gJiZkb19mb3JtX3Vua25vd24s
ICYmZG9fZm9ybV9oZXhhIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV9mbG9hdCAtICYm
ZG9fZm9ybV91bmtub3duLCAmJmRvX2Zvcm1fY2hhcmFjdGVyIC0gJiZkb19mb3JtX3Vua25vd24s
ICYmZG9fZm9ybV9zdHJpbmcgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3BvaW50ZXIg
LSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX251bWJlciAtICYmZG9fZm9ybV91bmtub3du
LCAmJmRvX2Zvcm1fc3RyZXJyb3IgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX3djaGFy
YWN0ZXIgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkb19mb3JtX2Zsb2F0aGV4IC0gJiZkb19mb3Jt
X3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9y
bV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19m
b3JtX3Vua25vd24gfTsKCiAgICAgIHVuaW9uIHByaW50Zl9hcmcgKmFyZ3NfdmFsdWU7CiAgICAg
IGludCBpc19uZWdhdGl2ZTsKICAgICAgdW5pb24KICAgICAgewogICAgICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgbG9uZ2xvbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgd29yZDsKICAg
ICAgfSBudW1iZXI7CiAgICAgIGludCBiYXNlOwogICAgICB1bmlvbiBwcmludGZfYXJnIHRoZV9h
cmc7CiAgICAgIGNoYXIgKnN0cmluZzsKICAgICAgaW50IGFsdCA9IDA7CiAgICAgIGludCBzcGFj
ZSA9IDA7CiAgICAgIGludCBsZWZ0ID0gMDsKICAgICAgaW50IHNob3dzaWduID0gMDsKICAgICAg
aW50IGdyb3VwID0gMDsKICAgICAgaW50IGlzX2xvbmdfZG91YmxlID0gMDsKICAgICAgaW50IGlz
X3Nob3J0ID0gMDsKICAgICAgaW50IGlzX2xvbmcgPSAwOwogICAgICBpbnQgaXNfY2hhciA9IDA7
CiAgICAgIGludCB3aWR0aCA9IDA7CiAgICAgIGludCBwcmVjID0gLTE7CgoKICAgICAgaW50IHVz
ZV9vdXRkaWdpdHMgPSAwOwogICAgICB1bnNpZ25lZCBjaGFyIHBhZCA9ICcgJzsKICAgICAgY2hh
ciBzcGVjOwoKICAgICAgd29ya3N0YXJ0ID0gKCh2b2lkICopMCk7CiAgICAgIHdvcmtlbmQgPSAm
d29ya19idWZmZXJbc2l6ZW9mICh3b3JrX2J1ZmZlcikgLyBzaXplb2YgKGNoYXIpXTsKCgogICAg
ICBkbyB7IGludCBvZmZzZXQ7IHZvaWQgKiBwdHI7IHNwZWMgPSAoKisrZik7IG9mZnNldCA9ICgo
c3BlYykgPCAnICcgfHwgKHNwZWMpID4gJ3onKSA/ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19m
b3JtX3Vua25vd24gOiBzdGVwMF9qdW1wc1soanVtcF90YWJsZVsoaW50KSAoc3BlYykgLSAnICdd
KV07IHB0ciA9ICYmZG9fZm9ybV91bmtub3duICsgb2Zmc2V0OyBnb3RvICpwdHI7IH0gd2hpbGUg
KDApOwoKCiAgICBkb19mbGFnX3NwYWNlOgogICAgICBzcGFjZSA9IDE7CiAgICAgIGRvIHsgaW50
IG9mZnNldDsgdm9pZCAqIHB0cjsgc3BlYyA9ICgqKytmKTsgb2Zmc2V0ID0gKChzcGVjKSA8ICcg
JyB8fCAoc3BlYykgPiAneicpID8gJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93
biA6IHN0ZXAwX2p1bXBzWyhqdW1wX3RhYmxlWyhpbnQpIChzcGVjKSAtICcgJ10pXTsgcHRyID0g
JiZkb19mb3JtX3Vua25vd24gKyBvZmZzZXQ7IGdvdG8gKnB0cjsgfSB3aGlsZSAoMCk7CgoKICAg
IGRvX2ZsYWdfcGx1czoKICAgICAgc2hvd3NpZ24gPSAxOwogICAgICBkbyB7IGludCBvZmZzZXQ7
IHZvaWQgKiBwdHI7IHNwZWMgPSAoKisrZik7IG9mZnNldCA9ICgoc3BlYykgPCAnICcgfHwgKHNw
ZWMpID4gJ3onKSA/ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24gOiBzdGVw
MF9qdW1wc1soanVtcF90YWJsZVsoaW50KSAoc3BlYykgLSAnICddKV07IHB0ciA9ICYmZG9fZm9y
bV91bmtub3duICsgb2Zmc2V0OyBnb3RvICpwdHI7IH0gd2hpbGUgKDApOwoKCiAgICBkb19mbGFn
X21pbnVzOgogICAgICBsZWZ0ID0gMTsKICAgICAgcGFkID0gJyAnOwogICAgICBkbyB7IGludCBv
ZmZzZXQ7IHZvaWQgKiBwdHI7IHNwZWMgPSAoKisrZik7IG9mZnNldCA9ICgoc3BlYykgPCAnICcg
fHwgKHNwZWMpID4gJ3onKSA/ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24g
OiBzdGVwMF9qdW1wc1soanVtcF90YWJsZVsoaW50KSAoc3BlYykgLSAnICddKV07IHB0ciA9ICYm
ZG9fZm9ybV91bmtub3duICsgb2Zmc2V0OyBnb3RvICpwdHI7IH0gd2hpbGUgKDApOwoKCiAgICBk
b19mbGFnX2hhc2g6CiAgICAgIGFsdCA9IDE7CiAgICAgIGRvIHsgaW50IG9mZnNldDsgdm9pZCAq
IHB0cjsgc3BlYyA9ICgqKytmKTsgb2Zmc2V0ID0gKChzcGVjKSA8ICcgJyB8fCAoc3BlYykgPiAn
eicpID8gJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biA6IHN0ZXAwX2p1bXBz
WyhqdW1wX3RhYmxlWyhpbnQpIChzcGVjKSAtICcgJ10pXTsgcHRyID0gJiZkb19mb3JtX3Vua25v
d24gKyBvZmZzZXQ7IGdvdG8gKnB0cjsgfSB3aGlsZSAoMCk7CgoKICAgIGRvX2ZsYWdfemVybzoK
ICAgICAgaWYgKCFsZWZ0KQogICAgICAgIHBhZCA9ICcwJzsKICAgICAgZG8geyBpbnQgb2Zmc2V0
OyB2b2lkICogcHRyOyBzcGVjID0gKCorK2YpOyBvZmZzZXQgPSAoKHNwZWMpIDwgJyAnIHx8IChz
cGVjKSA+ICd6JykgPyAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duIDogc3Rl
cDBfanVtcHNbKGp1bXBfdGFibGVbKGludCkgKHNwZWMpIC0gJyAnXSldOyBwdHIgPSAmJmRvX2Zv
cm1fdW5rbm93biArIG9mZnNldDsgZ290byAqcHRyOyB9IHdoaWxlICgwKTsKCgogICAgZG9fZmxh
Z19xdW90ZToKICAgICAgZ3JvdXAgPSAxOwoKICAgICAgaWYgKGdyb3VwaW5nID09IChjb25zdCBj
aGFyICopIC0xKQogICAgICAgIHsKCgoKCiAgICAgICAgICB0aG91c2FuZHNfc2VwID0gKCgoKF9f
bG9jYWxlX3QpIChfX2xpYmNfaW50ZXJuYWxfdHNkX2dldCAhPSAoKHZvaWQgKikwKSA/IF9fbGli
Y19pbnRlcm5hbF90c2RfZ2V0IChfTElCQ19UU0RfS0VZX0xPQ0FMRSkgOiBfX2xpYmNfdHNkX0xP
Q0FMRV9kYXRhKSktPl9fbG9jYWxlc1tfX0xDX05VTUVSSUNdKS0+dmFsdWVzWygoaW50KSAoX19U
SE9VU0FORFNfU0VQKSAmIDB4ZmZmZildLnN0cmluZyk7CgoKICAgICAgICAgIGdyb3VwaW5nID0g
KCgoKF9fbG9jYWxlX3QpIChfX2xpYmNfaW50ZXJuYWxfdHNkX2dldCAhPSAoKHZvaWQgKikwKSA/
IF9fbGliY19pbnRlcm5hbF90c2RfZ2V0IChfTElCQ19UU0RfS0VZX0xPQ0FMRSkgOiBfX2xpYmNf
dHNkX0xPQ0FMRV9kYXRhKSktPl9fbG9jYWxlc1tfX0xDX05VTUVSSUNdKS0+dmFsdWVzWygoaW50
KSAoX19HUk9VUElORykgJiAweGZmZmYpXS5zdHJpbmcpOwogICAgICAgICAgaWYgKCpncm91cGlu
ZyA9PSAnXDAnIHx8ICpncm91cGluZyA9PSAxMjcKCgoKICAgICAgICAgICAgICB8fCAqdGhvdXNh
bmRzX3NlcCA9PSAnXDAnCgogICAgICAgICAgICAgICkKICAgICAgICAgICAgZ3JvdXBpbmcgPSAo
KHZvaWQgKikwKTsKICAgICAgICB9CiAgICAgIGRvIHsgaW50IG9mZnNldDsgdm9pZCAqIHB0cjsg
c3BlYyA9ICgqKytmKTsgb2Zmc2V0ID0gKChzcGVjKSA8ICcgJyB8fCAoc3BlYykgPiAneicpID8g
JiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biA6IHN0ZXAwX2p1bXBzWyhqdW1w
X3RhYmxlWyhpbnQpIChzcGVjKSAtICcgJ10pXTsgcHRyID0gJiZkb19mb3JtX3Vua25vd24gKyBv
ZmZzZXQ7IGdvdG8gKnB0cjsgfSB3aGlsZSAoMCk7CgogICAgZG9fZmxhZ19pMThuOgogICAgICB1
c2Vfb3V0ZGlnaXRzID0gMTsKICAgICAgZG8geyBpbnQgb2Zmc2V0OyB2b2lkICogcHRyOyBzcGVj
ID0gKCorK2YpOyBvZmZzZXQgPSAoKHNwZWMpIDwgJyAnIHx8IChzcGVjKSA+ICd6JykgPyAmJmRv
X2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duIDogc3RlcDBfanVtcHNbKGp1bXBfdGFi
bGVbKGludCkgKHNwZWMpIC0gJyAnXSldOyBwdHIgPSAmJmRvX2Zvcm1fdW5rbm93biArIG9mZnNl
dDsgZ290byAqcHRyOyB9IHdoaWxlICgwKTsKCgogICAgZG9fd2lkdGhfYXN0ZXJpY3M6CiAgICAg
IHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICp0bXA7CgogICAgICAgIHRtcCA9ICsrZjsK
ICAgICAgICBpZiAoKCh1bnNpZ25lZCBpbnQpICgoKnRtcCkgLSAnMCcpIDwgMTApICYmIHJlYWRf
aW50ICgmdG1wKSAmJiAqdG1wID09ICckJykKCiAgICAgICAgICBnb3RvIGRvX3Bvc2l0aW9uYWw7
CgogICAgICAgIHdpZHRoID0gX19idWlsdGluX3ZhX2FyZyhhcCxpbnQpOwoKCiAgICAgICAgaWYg
KHdpZHRoIDwgMCkKICAgICAgICAgIHsKICAgICAgICAgICAgd2lkdGggPSAtd2lkdGg7CiAgICAg
ICAgICAgIHBhZCA9ICcgJzsKICAgICAgICAgICAgbGVmdCA9IDE7CiAgICAgICAgICB9CgogICAg
ICAgIGlmICh3aWR0aCArIDMyID49IChpbnQpIChzaXplb2YgKHdvcmtfYnVmZmVyKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvIHNpemVvZiAod29ya19idWZmZXJbMF0pKSkKICAg
ICAgICAgIHsKCgogICAgICAgICAgICBpZiAoX19saWJjX3VzZV9hbGxvY2EgKCh3aWR0aCArIDMy
KSAqIHNpemVvZiAoY2hhcikpKQogICAgICAgICAgICAgIHdvcmtlbmQgPSAoKGNoYXIgKikgX19i
dWlsdGluX2FsbG9jYSAoKHdpZHRoICsgMzIpICogc2l6ZW9mIChjaGFyKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICsgKHdpZHRoICsgMzIpKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgIHdvcmtzdGFydCA9IChjaGFyICopIG1hbGxvYyAoKHdpZHRo
ICsgMzIpICogc2l6ZW9mIChjaGFyKSk7CiAgICAgICAgICAgICAgICBpZiAod29ya3N0YXJ0ID09
ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZG9u
ZSA9IC0xOwogICAgICAgICAgICAgICAgICAgIGdvdG8gYWxsX2RvbmU7CiAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIHdvcmtlbmQgPSB3b3Jrc3RhcnQgKyAod2lkdGggKyAzMik7
CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIGRvIHsgaW50IG9mZnNl
dDsgdm9pZCAqIHB0cjsgc3BlYyA9ICgqZik7IG9mZnNldCA9ICgoc3BlYykgPCAnICcgfHwgKHNw
ZWMpID4gJ3onKSA/ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24gOiBzdGVw
MV9qdW1wc1soanVtcF90YWJsZVsoaW50KSAoc3BlYykgLSAnICddKV07IHB0ciA9ICYmZG9fZm9y
bV91bmtub3duICsgb2Zmc2V0OyBnb3RvICpwdHI7IH0gd2hpbGUgKDApOwoKCiAgICBkb193aWR0
aDoKICAgICAgd2lkdGggPSByZWFkX2ludCAoJmYpOwoKICAgICAgaWYgKHdpZHRoICsgMzIgPj0g
KGludCkgKHNpemVvZiAod29ya19idWZmZXIpIC8gc2l6ZW9mICh3b3JrX2J1ZmZlclswXSkpKQog
ICAgICAgIHsKCgogICAgICAgICAgaWYgKF9fbGliY191c2VfYWxsb2NhICgod2lkdGggKyAzMikg
KiBzaXplb2YgKGNoYXIpKSkKICAgICAgICAgICAgd29ya2VuZCA9ICgoY2hhciAqKSBfX2J1aWx0
aW5fYWxsb2NhICgod2lkdGggKyAzMikgKiBzaXplb2YgKGNoYXIpKQogICAgICAgICAgICAgICAg
ICAgICAgICsgKHdpZHRoICsgMzIpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAg
ICAgICAgICAgIHdvcmtzdGFydCA9IChjaGFyICopIG1hbGxvYyAoKHdpZHRoICsgMzIpICogc2l6
ZW9mIChjaGFyKSk7CiAgICAgICAgICAgICAgaWYgKHdvcmtzdGFydCA9PSAoKHZvaWQgKikwKSkK
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgZG9uZSA9IC0xOwogICAgICAgICAg
ICAgICAgICBnb3RvIGFsbF9kb25lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHdv
cmtlbmQgPSB3b3Jrc3RhcnQgKyAod2lkdGggKyAzMik7CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgIGlmICgqZiA9PSAnJCcpCgogICAgICAgIGdvdG8gZG9fcG9zaXRpb25hbDsKICAgICAg
ZG8geyBpbnQgb2Zmc2V0OyB2b2lkICogcHRyOyBzcGVjID0gKCpmKTsgb2Zmc2V0ID0gKChzcGVj
KSA8ICcgJyB8fCAoc3BlYykgPiAneicpID8gJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1f
dW5rbm93biA6IHN0ZXAxX2p1bXBzWyhqdW1wX3RhYmxlWyhpbnQpIChzcGVjKSAtICcgJ10pXTsg
cHRyID0gJiZkb19mb3JtX3Vua25vd24gKyBvZmZzZXQ7IGdvdG8gKnB0cjsgfSB3aGlsZSAoMCk7
CgogICAgZG9fcHJlY2lzaW9uOgogICAgICArK2Y7CiAgICAgIGlmICgqZiA9PSAnKicpCiAgICAg
ICAgewogICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdG1wOwoKICAgICAgICAgIHRtcCA9
ICsrZjsKICAgICAgICAgIGlmICgoKHVuc2lnbmVkIGludCkgKCgqdG1wKSAtICcwJykgPCAxMCkg
JiYgcmVhZF9pbnQgKCZ0bXApID4gMCAmJiAqdG1wID09ICckJykKCiAgICAgICAgICAgIGdvdG8g
ZG9fcG9zaXRpb25hbDsKCiAgICAgICAgICBwcmVjID0gX19idWlsdGluX3ZhX2FyZyhhcCxpbnQp
OwoKCiAgICAgICAgICBpZiAocHJlYyA8IDApCiAgICAgICAgICAgIHByZWMgPSAtMTsKICAgICAg
ICB9CiAgICAgIGVsc2UgaWYgKCgodW5zaWduZWQgaW50KSAoKCpmKSAtICcwJykgPCAxMCkpCiAg
ICAgICAgcHJlYyA9IHJlYWRfaW50ICgmZik7CiAgICAgIGVsc2UKICAgICAgICBwcmVjID0gMDsK
ICAgICAgaWYgKHByZWMgPiB3aWR0aAogICAgICAgICAgJiYgcHJlYyArIDMyID4gKGludCkoc2l6
ZW9mICh3b3JrX2J1ZmZlcikgLyBzaXplb2YgKHdvcmtfYnVmZmVyWzBdKSkpCiAgICAgICAgewog
ICAgICAgICAgaWYgKF9fbGliY191c2VfYWxsb2NhICgocHJlYyArIDMyKSAqIHNpemVvZiAoY2hh
cikpKQogICAgICAgICAgICB3b3JrZW5kID0gKChjaGFyICopIF9fYnVpbHRpbl9hbGxvY2EgKChw
cmVjICsgMzIpICogc2l6ZW9mIChjaGFyKSkpCiAgICAgICAgICAgICAgICAgICAgICArIChwcmVj
ICsgMzIpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgd29ya3N0
YXJ0ID0gKGNoYXIgKikgbWFsbG9jICgocHJlYyArIDMyKSAqIHNpemVvZiAoY2hhcikpOwogICAg
ICAgICAgICAgIGlmICh3b3Jrc3RhcnQgPT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgIGRvbmUgPSAtMTsKICAgICAgICAgICAgICAgICAgZ290byBhbGxf
ZG9uZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB3b3JrZW5kID0gd29ya3N0YXJ0
ICsgKHByZWMgKyAzMik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGRvIHsgaW50IG9m
ZnNldDsgdm9pZCAqIHB0cjsgc3BlYyA9ICgqZik7IG9mZnNldCA9ICgoc3BlYykgPCAnICcgfHwg
KHNwZWMpID4gJ3onKSA/ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24gOiBz
dGVwMl9qdW1wc1soanVtcF90YWJsZVsoaW50KSAoc3BlYykgLSAnICddKV07IHB0ciA9ICYmZG9f
Zm9ybV91bmtub3duICsgb2Zmc2V0OyBnb3RvICpwdHI7IH0gd2hpbGUgKDApOwoKCiAgICBkb19t
b2RfaGFsZjoKICAgICAgaXNfc2hvcnQgPSAxOwogICAgICBkbyB7IGludCBvZmZzZXQ7IHZvaWQg
KiBwdHI7IHNwZWMgPSAoKisrZik7IG9mZnNldCA9ICgoc3BlYykgPCAnICcgfHwgKHNwZWMpID4g
J3onKSA/ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24gOiBzdGVwM2FfanVt
cHNbKGp1bXBfdGFibGVbKGludCkgKHNwZWMpIC0gJyAnXSldOyBwdHIgPSAmJmRvX2Zvcm1fdW5r
bm93biArIG9mZnNldDsgZ290byAqcHRyOyB9IHdoaWxlICgwKTsKCgogICAgZG9fbW9kX2hhbGZo
YWxmOgogICAgICBpc19zaG9ydCA9IDA7CiAgICAgIGlzX2NoYXIgPSAxOwogICAgICBkbyB7IGlu
dCBvZmZzZXQ7IHZvaWQgKiBwdHI7IHNwZWMgPSAoKisrZik7IG9mZnNldCA9ICgoc3BlYykgPCAn
ICcgfHwgKHNwZWMpID4gJ3onKSA/ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25v
d24gOiBzdGVwNF9qdW1wc1soanVtcF90YWJsZVsoaW50KSAoc3BlYykgLSAnICddKV07IHB0ciA9
ICYmZG9fZm9ybV91bmtub3duICsgb2Zmc2V0OyBnb3RvICpwdHI7IH0gd2hpbGUgKDApOwoKCiAg
ICBkb19tb2RfbG9uZzoKICAgICAgaXNfbG9uZyA9IDE7CiAgICAgIGRvIHsgaW50IG9mZnNldDsg
dm9pZCAqIHB0cjsgc3BlYyA9ICgqKytmKTsgb2Zmc2V0ID0gKChzcGVjKSA8ICcgJyB8fCAoc3Bl
YykgPiAneicpID8gJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biA6IHN0ZXAz
Yl9qdW1wc1soanVtcF90YWJsZVsoaW50KSAoc3BlYykgLSAnICddKV07IHB0ciA9ICYmZG9fZm9y
bV91bmtub3duICsgb2Zmc2V0OyBnb3RvICpwdHI7IH0gd2hpbGUgKDApOwoKCgogICAgZG9fbW9k
X2xvbmdsb25nOgogICAgICBpc19sb25nX2RvdWJsZSA9IDE7CiAgICAgIGlzX2xvbmcgPSAxOwog
ICAgICBkbyB7IGludCBvZmZzZXQ7IHZvaWQgKiBwdHI7IHNwZWMgPSAoKisrZik7IG9mZnNldCA9
ICgoc3BlYykgPCAnICcgfHwgKHNwZWMpID4gJ3onKSA/ICYmZG9fZm9ybV91bmtub3duIC0gJiZk
b19mb3JtX3Vua25vd24gOiBzdGVwNF9qdW1wc1soanVtcF90YWJsZVsoaW50KSAoc3BlYykgLSAn
ICddKV07IHB0ciA9ICYmZG9fZm9ybV91bmtub3duICsgb2Zmc2V0OyBnb3RvICpwdHI7IH0gd2hp
bGUgKDApOwoKICAgIGRvX21vZF9zaXplX3Q6CiAgICAgIGlzX2xvbmdfZG91YmxlID0gc2l6ZW9m
IChzaXplX3QpID4gc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCk7CiAgICAgIGlzX2xvbmcgPSBz
aXplb2YgKHNpemVfdCkgPiBzaXplb2YgKHVuc2lnbmVkIGludCk7CiAgICAgIGRvIHsgaW50IG9m
ZnNldDsgdm9pZCAqIHB0cjsgc3BlYyA9ICgqKytmKTsgb2Zmc2V0ID0gKChzcGVjKSA8ICcgJyB8
fCAoc3BlYykgPiAneicpID8gJiZkb19mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biA6
IHN0ZXA0X2p1bXBzWyhqdW1wX3RhYmxlWyhpbnQpIChzcGVjKSAtICcgJ10pXTsgcHRyID0gJiZk
b19mb3JtX3Vua25vd24gKyBvZmZzZXQ7IGdvdG8gKnB0cjsgfSB3aGlsZSAoMCk7CgogICAgZG9f
bW9kX3B0cmRpZmZfdDoKICAgICAgaXNfbG9uZ19kb3VibGUgPSBzaXplb2YgKHB0cmRpZmZfdCkg
PiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KTsKICAgICAgaXNfbG9uZyA9IHNpemVvZiAocHRy
ZGlmZl90KSA+IHNpemVvZiAodW5zaWduZWQgaW50KTsKICAgICAgZG8geyBpbnQgb2Zmc2V0OyB2
b2lkICogcHRyOyBzcGVjID0gKCorK2YpOyBvZmZzZXQgPSAoKHNwZWMpIDwgJyAnIHx8IChzcGVj
KSA+ICd6JykgPyAmJmRvX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duIDogc3RlcDRf
anVtcHNbKGp1bXBfdGFibGVbKGludCkgKHNwZWMpIC0gJyAnXSldOyBwdHIgPSAmJmRvX2Zvcm1f
dW5rbm93biArIG9mZnNldDsgZ290byAqcHRyOyB9IHdoaWxlICgwKTsKCiAgICBkb19tb2RfaW50
bWF4X3Q6CiAgICAgIGlzX2xvbmdfZG91YmxlID0gc2l6ZW9mIChpbnRtYXhfdCkgPiBzaXplb2Yg
KHVuc2lnbmVkIGxvbmcgaW50KTsKICAgICAgaXNfbG9uZyA9IHNpemVvZiAoaW50bWF4X3QpID4g
c2l6ZW9mICh1bnNpZ25lZCBpbnQpOwogICAgICBkbyB7IGludCBvZmZzZXQ7IHZvaWQgKiBwdHI7
IHNwZWMgPSAoKisrZik7IG9mZnNldCA9ICgoc3BlYykgPCAnICcgfHwgKHNwZWMpID4gJ3onKSA/
ICYmZG9fZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24gOiBzdGVwNF9qdW1wc1soanVt
cF90YWJsZVsoaW50KSAoc3BlYykgLSAnICddKV07IHB0ciA9ICYmZG9fZm9ybV91bmtub3duICsg
b2Zmc2V0OyBnb3RvICpwdHI7IH0gd2hpbGUgKDApOwoKCiAgICAgIHdoaWxlICgxKQogICAgICAg
IHsKICAgICAgICAgIGRvX2Zvcm1fcGVyY2VudDogZG8geyByZWdpc3RlciBjb25zdCBpbnQgb3V0
YyA9ICgnJScpOyBpZiAoKCgocyktPl9JT193cml0ZV9wdHIgPj0gKHMpLT5fSU9fd3JpdGVfZW5k
KSA/IF9fb3ZlcmZsb3cgKHMsICh1bnNpZ25lZCBjaGFyKSAob3V0YykpIDogKHVuc2lnbmVkIGNo
YXIpICgqKHMpLT5fSU9fd3JpdGVfcHRyKysgPSAob3V0YykpKSA9PSAoLTEpKSB7IGRvbmUgPSAt
MTsgZ290byBhbGxfZG9uZTsgfSBlbHNlICsrZG9uZTsgfSB3aGlsZSAoMCk7IGJyZWFrOyBkb19m
b3JtX2ludGVnZXI6IGJhc2UgPSAxMDsgaWYgKDApIHsgbG9uZyBsb25nIGludCBzaWduZWRfbnVt
YmVyOyBpZiAoKChzdHJ1Y3QgcHJpbnRmX3NwZWMgKikgKCh2b2lkICopMCkpID09ICgodm9pZCAq
KTApKSBzaWduZWRfbnVtYmVyID0gX19idWlsdGluX3ZhX2FyZyhhcCxsb25nIGxvbmcgaW50KTsg
ZWxzZSBzaWduZWRfbnVtYmVyID0gYXJnc192YWx1ZVsoKHN0cnVjdCBwcmludGZfc3BlYyAqKSAo
KHZvaWQgKikwKSktPmRhdGFfYXJnXS5wYV9sb25nX2xvbmdfaW50OyBpc19uZWdhdGl2ZSA9IHNp
Z25lZF9udW1iZXIgPCAwOyBudW1iZXIubG9uZ2xvbmcgPSBpc19uZWdhdGl2ZSA/ICgtIHNpZ25l
ZF9udW1iZXIpIDogc2lnbmVkX251bWJlcjsgZ290byBkb19sb25nbG9uZ19udW1iZXI7IH0gZWxz
ZSB7IGxvbmcgaW50IHNpZ25lZF9udW1iZXI7IGlmICgoKHN0cnVjdCBwcmludGZfc3BlYyAqKSAo
KHZvaWQgKikwKSkgPT0gKCh2b2lkICopMCkpIHsgaWYgKGlzX2xvbmcpIHNpZ25lZF9udW1iZXIg
PSBfX2J1aWx0aW5fdmFfYXJnKGFwLGxvbmcgaW50KTsgZWxzZSBzaWduZWRfbnVtYmVyID0gX19i
dWlsdGluX3ZhX2FyZyhhcCxpbnQpOyB9IGVsc2UgaWYgKGlzX2xvbmcpIHNpZ25lZF9udW1iZXIg
PSBhcmdzX3ZhbHVlWygoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+ZGF0YV9h
cmddLnBhX2xvbmdfaW50OyBlbHNlIGlmICghaXNfc2hvcnQpIHNpZ25lZF9udW1iZXIgPSBhcmdz
X3ZhbHVlWygoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+ZGF0YV9hcmddLnBh
X2ludDsgZWxzZSBzaWduZWRfbnVtYmVyID0gYXJnc192YWx1ZVsoKHN0cnVjdCBwcmludGZfc3Bl
YyAqKSAoKHZvaWQgKikwKSktPmRhdGFfYXJnXS5wYV9zaG9ydF9pbnQ7IGlzX25lZ2F0aXZlID0g
c2lnbmVkX251bWJlciA8IDA7IG51bWJlci53b3JkID0gaXNfbmVnYXRpdmUgPyAoLSBzaWduZWRf
bnVtYmVyKSA6IHNpZ25lZF9udW1iZXI7IGdvdG8gZG9fbnVtYmVyOyB9IGRvX2Zvcm1fdW5zaWdu
ZWQ6IGJhc2UgPSAxMDsgZ290byBkb191bnNpZ25lZF9udW1iZXI7IGRvX2Zvcm1fb2N0YWw6IGJh
c2UgPSA4OyBnb3RvIGRvX3Vuc2lnbmVkX251bWJlcjsgZG9fZm9ybV9oZXhhOiBiYXNlID0gMTY7
IGRvX3Vuc2lnbmVkX251bWJlcjogaXNfbmVnYXRpdmUgPSAwOyBzaG93c2lnbiA9IDA7IHNwYWNl
ID0gMDsgaWYgKDApIHsgaWYgKCgoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKSA9
PSAoKHZvaWQgKikwKSkgbnVtYmVyLmxvbmdsb25nID0gX19idWlsdGluX3ZhX2FyZyhhcCx1bnNp
Z25lZCBsb25nIGxvbmcgaW50KTsgZWxzZSBudW1iZXIubG9uZ2xvbmcgPSBhcmdzX3ZhbHVlWygo
c3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+ZGF0YV9hcmddLnBhX3VfbG9uZ19s
b25nX2ludDsgZG9fbG9uZ2xvbmdfbnVtYmVyOiBpZiAocHJlYyA8IDApIHByZWMgPSAxOyBlbHNl
IHBhZCA9ICcgJzsgaWYgKHByZWMgPT0gMCAmJiBudW1iZXIubG9uZ2xvbmcgPT0gMCkgeyBzdHJp
bmcgPSB3b3JrZW5kOyBpZiAoYmFzZSA9PSA4ICYmIGFsdCkgKi0tc3RyaW5nID0gJzAnOyB9IGVs
c2UgeyBzdHJpbmcgPSBfaXRvYSAobnVtYmVyLmxvbmdsb25nLCB3b3JrZW5kLCBiYXNlLCBzcGVj
ID09ICdYJyk7IGlmIChncm91cCAmJiBncm91cGluZykgc3RyaW5nID0gZ3JvdXBfbnVtYmVyIChz
dHJpbmcsIHdvcmtlbmQsIGdyb3VwaW5nLCB0aG91c2FuZHNfc2VwKTsgaWYgKHVzZV9vdXRkaWdp
dHMgJiYgYmFzZSA9PSAxMCkgc3RyaW5nID0gX2kxOG5fbnVtYmVyX3Jld3JpdGUgKHN0cmluZywg
d29ya2VuZCk7IH0gbnVtYmVyLndvcmQgPSBudW1iZXIubG9uZ2xvbmcgIT0gMDsgfSBlbHNlIHsg
aWYgKCgoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKSA9PSAoKHZvaWQgKikwKSkg
eyBpZiAoaXNfbG9uZykgbnVtYmVyLndvcmQgPSBfX2J1aWx0aW5fdmFfYXJnKGFwLHVuc2lnbmVk
IGxvbmcgaW50KTsgZWxzZSBpZiAoaXNfY2hhcikgbnVtYmVyLndvcmQgPSAodW5zaWduZWQgY2hh
cikgX19idWlsdGluX3ZhX2FyZyhhcCx1bnNpZ25lZCBpbnQpOyBlbHNlIGlmICghaXNfc2hvcnQp
IG51bWJlci53b3JkID0gX19idWlsdGluX3ZhX2FyZyhhcCx1bnNpZ25lZCBpbnQpOyBlbHNlIG51
bWJlci53b3JkID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19idWlsdGluX3ZhX2FyZyhhcCx1bnNp
Z25lZCBpbnQpOyB9IGVsc2UgaWYgKGlzX2xvbmcpIG51bWJlci53b3JkID0gYXJnc192YWx1ZVso
KHN0cnVjdCBwcmludGZfc3BlYyAqKSAoKHZvaWQgKikwKSktPmRhdGFfYXJnXS5wYV91X2xvbmdf
aW50OyBlbHNlIGlmIChpc19jaGFyKSBudW1iZXIud29yZCA9ICh1bnNpZ25lZCBjaGFyKSBhcmdz
X3ZhbHVlWygoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+ZGF0YV9hcmddLnBh
X2NoYXI7IGVsc2UgaWYgKCFpc19zaG9ydCkgbnVtYmVyLndvcmQgPSBhcmdzX3ZhbHVlWygoc3Ry
dWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+ZGF0YV9hcmddLnBhX3VfaW50OyBlbHNl
IG51bWJlci53b3JkID0gKHVuc2lnbmVkIHNob3J0IGludCkgYXJnc192YWx1ZVsoKHN0cnVjdCBw
cmludGZfc3BlYyAqKSAoKHZvaWQgKikwKSktPmRhdGFfYXJnXS5wYV91X3Nob3J0X2ludDsgZG9f
bnVtYmVyOiBpZiAocHJlYyA8IDApIHByZWMgPSAxOyBlbHNlIHBhZCA9ICcgJzsgaWYgKHByZWMg
PT0gMCAmJiBudW1iZXIud29yZCA9PSAwKSB7IHN0cmluZyA9IHdvcmtlbmQ7IGlmIChiYXNlID09
IDggJiYgYWx0KSAqLS1zdHJpbmcgPSAnMCc7IH0gZWxzZSB7IHN0cmluZyA9IF9pdG9hX3dvcmQg
KG51bWJlci53b3JkLCB3b3JrZW5kLCBiYXNlLCBzcGVjID09ICdYJyk7IGlmIChncm91cCAmJiBn
cm91cGluZykgc3RyaW5nID0gZ3JvdXBfbnVtYmVyIChzdHJpbmcsIHdvcmtlbmQsIGdyb3VwaW5n
LCB0aG91c2FuZHNfc2VwKTsgaWYgKHVzZV9vdXRkaWdpdHMgJiYgYmFzZSA9PSAxMCkgc3RyaW5n
ID0gX2kxOG5fbnVtYmVyX3Jld3JpdGUgKHN0cmluZywgd29ya2VuZCk7IH0gfSBpZiAocHJlYyA8
PSB3b3JrZW5kIC0gc3RyaW5nICYmIG51bWJlci53b3JkICE9IDAgJiYgYWx0ICYmIGJhc2UgPT0g
OCkgKi0tc3RyaW5nID0gJzAnOyBwcmVjID0gKCgoMCk+KHByZWMgLSAod29ya2VuZCAtIHN0cmlu
ZykpKT8oMCk6KHByZWMgLSAod29ya2VuZCAtIHN0cmluZykpKTsgaWYgKCFsZWZ0KSB7IHdpZHRo
IC09IHdvcmtlbmQgLSBzdHJpbmcgKyBwcmVjOyBpZiAobnVtYmVyLndvcmQgIT0gMCAmJiBhbHQg
JiYgYmFzZSA9PSAxNikgd2lkdGggLT0gMjsgaWYgKGlzX25lZ2F0aXZlIHx8IHNob3dzaWduIHx8
IHNwYWNlKSAtLXdpZHRoOyBpZiAocGFkID09ICcgJykgeyBpZiAod2lkdGggPiAwKSBkb25lICs9
IF9JT19wYWRuX2ludGVybmFsIChzLCAoJyAnKSwgd2lkdGgpOyB3aWR0aCA9IDA7IH0gaWYgKGlz
X25lZ2F0aXZlKSBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRjID0gKCctJyk7IGlmICgoKChz
KS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywg
KHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWduZWQgY2hhcikgKCoocyktPl9JT193cml0
ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9
IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsgZWxzZSBpZiAoc2hvd3NpZ24pIGRvIHsgcmVnaXN0
ZXIgY29uc3QgaW50IG91dGMgPSAoJysnKTsgaWYgKCgoKHMpLT5fSU9fd3JpdGVfcHRyID49IChz
KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChzLCAodW5zaWduZWQgY2hhcikgKG91dGMp
KSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzKS0+X0lPX3dyaXRlX3B0cisrID0gKG91dGMpKSkgPT0g
KC0xKSkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZWxzZSArK2RvbmU7IH0gd2hpbGUg
KDApOyBlbHNlIGlmIChzcGFjZSkgZG8geyByZWdpc3RlciBjb25zdCBpbnQgb3V0YyA9ICgnICcp
OyBpZiAoKCgocyktPl9JT193cml0ZV9wdHIgPj0gKHMpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3Zl
cmZsb3cgKHMsICh1bnNpZ25lZCBjaGFyKSAob3V0YykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHMp
LT5fSU9fd3JpdGVfcHRyKysgPSAob3V0YykpKSA9PSAoLTEpKSB7IGRvbmUgPSAtMTsgZ290byBh
bGxfZG9uZTsgfSBlbHNlICsrZG9uZTsgfSB3aGlsZSAoMCk7IGlmIChudW1iZXIud29yZCAhPSAw
ICYmIGFsdCAmJiBiYXNlID09IDE2KSB7IGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91dGMgPSAo
JzAnKTsgaWYgKCgoKHMpLT5fSU9fd3JpdGVfcHRyID49IChzKS0+X0lPX3dyaXRlX2VuZCkgPyBf
X292ZXJmbG93IChzLCAodW5zaWduZWQgY2hhcikgKG91dGMpKSA6ICh1bnNpZ25lZCBjaGFyKSAo
KihzKS0+X0lPX3dyaXRlX3B0cisrID0gKG91dGMpKSkgPT0gKC0xKSkgeyBkb25lID0gLTE7IGdv
dG8gYWxsX2RvbmU7IH0gZWxzZSArK2RvbmU7IH0gd2hpbGUgKDApOyBkbyB7IHJlZ2lzdGVyIGNv
bnN0IGludCBvdXRjID0gKHNwZWMpOyBpZiAoKCgocyktPl9JT193cml0ZV9wdHIgPj0gKHMpLT5f
SU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHMsICh1bnNpZ25lZCBjaGFyKSAob3V0YykpIDog
KHVuc2lnbmVkIGNoYXIpICgqKHMpLT5fSU9fd3JpdGVfcHRyKysgPSAob3V0YykpKSA9PSAoLTEp
KSB7IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSBlbHNlICsrZG9uZTsgfSB3aGlsZSAoMCk7
IH0gd2lkdGggKz0gcHJlYzsgaWYgKHdpZHRoID4gMCkgZG9uZSArPSBfSU9fcGFkbl9pbnRlcm5h
bCAocywgKCcwJyksIHdpZHRoKTsgZG8geyBpZiAoKHNpemVfdCkgKCgqKHN0cnVjdCBfSU9fanVt
cF90ICoqKSAoKHZvaWQgKikgJigoc3RydWN0IF9JT19GSUxFX3BsdXMgKikgKChzKSkpLT52dGFi
bGUgKyAoKHMpKS0+X3Z0YWJsZV9vZmZzZXQpKS0+X194c3B1dG4pICgocyksICgoc3RyaW5nKSks
ICgod29ya2VuZCAtIHN0cmluZykpKSAhPSAoc2l6ZV90KSAod29ya2VuZCAtIHN0cmluZykpIHsg
ZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGRvbmUgKz0gKHdvcmtlbmQgLSBzdHJpbmcpOyB9
IHdoaWxlICgwKTsgYnJlYWs7IH0gZWxzZSB7IGlmIChpc19uZWdhdGl2ZSkgeyBkbyB7IHJlZ2lz
dGVyIGNvbnN0IGludCBvdXRjID0gKCctJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAo
cyktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRj
KSkgOiAodW5zaWduZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09
ICgtMSkpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxl
ICgwKTsgLS13aWR0aDsgfSBlbHNlIGlmIChzaG93c2lnbikgeyBkbyB7IHJlZ2lzdGVyIGNvbnN0
IGludCBvdXRjID0gKCcrJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193
cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5z
aWduZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsg
ZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsgLS13
aWR0aDsgfSBlbHNlIGlmIChzcGFjZSkgeyBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRjID0g
KCcgJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQpID8g
X19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWduZWQgY2hhcikg
KCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9uZSA9IC0xOyBn
b3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsgLS13aWR0aDsgfSBpZiAo
bnVtYmVyLndvcmQgIT0gMCAmJiBhbHQgJiYgYmFzZSA9PSAxNikgeyBkbyB7IHJlZ2lzdGVyIGNv
bnN0IGludCBvdXRjID0gKCcwJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9J
T193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAo
dW5zaWduZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkp
IHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsg
ZG8geyByZWdpc3RlciBjb25zdCBpbnQgb3V0YyA9IChzcGVjKTsgaWYgKCgoKHMpLT5fSU9fd3Jp
dGVfcHRyID49IChzKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChzLCAodW5zaWduZWQg
Y2hhcikgKG91dGMpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzKS0+X0lPX3dyaXRlX3B0cisrID0g
KG91dGMpKSkgPT0gKC0xKSkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZWxzZSArK2Rv
bmU7IH0gd2hpbGUgKDApOyB3aWR0aCAtPSAyOyB9IHdpZHRoIC09IHdvcmtlbmQgLSBzdHJpbmcg
KyBwcmVjOyBpZiAocHJlYyA+IDApIHsgaW50IHRlbXAgPSB3aWR0aDsgd2lkdGggPSBwcmVjOyBp
ZiAod2lkdGggPiAwKSBkb25lICs9IF9JT19wYWRuX2ludGVybmFsIChzLCAoJzAnKSwgd2lkdGgp
Ozsgd2lkdGggPSB0ZW1wOyB9IGRvIHsgaWYgKChzaXplX3QpICgoKihzdHJ1Y3QgX0lPX2p1bXBf
dCAqKikgKCh2b2lkICopICYoKHN0cnVjdCBfSU9fRklMRV9wbHVzICopICgocykpKS0+dnRhYmxl
ICsgKChzKSktPl92dGFibGVfb2Zmc2V0KSktPl9feHNwdXRuKSAoKHMpLCAoKHN0cmluZykpLCAo
KHdvcmtlbmQgLSBzdHJpbmcpKSkgIT0gKHNpemVfdCkgKHdvcmtlbmQgLSBzdHJpbmcpKSB7IGRv
bmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSBkb25lICs9ICh3b3JrZW5kIC0gc3RyaW5nKTsgfSB3
aGlsZSAoMCk7IGlmICh3aWR0aCA+IDApIGRvbmUgKz0gX0lPX3BhZG5faW50ZXJuYWwgKHMsICgn
ICcpLCB3aWR0aCk7IGJyZWFrOyB9IGRvX2Zvcm1fZmxvYXQ6IHsgY29uc3Qgdm9pZCAqcHRyOyBp
bnQgZnVuY3Rpb25fZG9uZTsgaWYgKCgoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTAp
KSA9PSAoKHZvaWQgKikwKSkgeyBzdHJ1Y3QgcHJpbnRmX2luZm8gaW5mbyA9IHsgcHJlYzogcHJl
Yywgd2lkdGg6IHdpZHRoLCBzcGVjOiBzcGVjLCBpc19sb25nX2RvdWJsZTogaXNfbG9uZ19kb3Vi
bGUsIGlzX3Nob3J0OiBpc19zaG9ydCwgaXNfbG9uZzogaXNfbG9uZywgYWx0OiBhbHQsIHNwYWNl
OiBzcGFjZSwgbGVmdDogbGVmdCwgc2hvd3NpZ246IHNob3dzaWduLCBncm91cDogZ3JvdXAsIHBh
ZDogcGFkLCBleHRyYTogMCwgd2lkZTogc2l6ZW9mIChjaGFyKSAhPSAxIH07IGlmIChpc19sb25n
X2RvdWJsZSkgdGhlX2FyZy5wYV9sb25nX2RvdWJsZSA9IF9fYnVpbHRpbl92YV9hcmcoYXAsbG9u
ZyBkb3VibGUpOyBlbHNlIHRoZV9hcmcucGFfZG91YmxlID0gX19idWlsdGluX3ZhX2FyZyhhcCxk
b3VibGUpOyBwdHIgPSAoY29uc3Qgdm9pZCAqKSAmdGhlX2FyZzsgZnVuY3Rpb25fZG9uZSA9IF9f
cHJpbnRmX2ZwIChzLCAmaW5mbywgJnB0cik7IH0gZWxzZSB7IHB0ciA9IChjb25zdCB2b2lkICop
ICZhcmdzX3ZhbHVlWygoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+ZGF0YV9h
cmddOyBmdW5jdGlvbl9kb25lID0gX19wcmludGZfZnAgKHMsICYoKHN0cnVjdCBwcmludGZfc3Bl
YyAqKSAoKHZvaWQgKikwKSktPmluZm8sICZwdHIpOyB9IGlmIChmdW5jdGlvbl9kb25lIDwgMCkg
eyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZG9uZSArPSBmdW5jdGlvbl9kb25lOyB9IGJy
ZWFrOyBkb19mb3JtX2Zsb2F0aGV4OiB7IGNvbnN0IHZvaWQgKnB0cjsgaW50IGZ1bmN0aW9uX2Rv
bmU7IGlmICgoKHN0cnVjdCBwcmludGZfc3BlYyAqKSAoKHZvaWQgKikwKSkgPT0gKCh2b2lkICop
MCkpIHsgc3RydWN0IHByaW50Zl9pbmZvIGluZm8gPSB7IHByZWM6IHByZWMsIHdpZHRoOiB3aWR0
aCwgc3BlYzogc3BlYywgaXNfbG9uZ19kb3VibGU6IGlzX2xvbmdfZG91YmxlLCBpc19zaG9ydDog
aXNfc2hvcnQsIGlzX2xvbmc6IGlzX2xvbmcsIGFsdDogYWx0LCBzcGFjZTogc3BhY2UsIGxlZnQ6
IGxlZnQsIHNob3dzaWduOiBzaG93c2lnbiwgZ3JvdXA6IGdyb3VwLCBwYWQ6IHBhZCwgZXh0cmE6
IDAsIHdpZGU6IHNpemVvZiAoY2hhcikgIT0gMSB9OyBpZiAoaXNfbG9uZ19kb3VibGUpIHRoZV9h
cmcucGFfbG9uZ19kb3VibGUgPSBfX2J1aWx0aW5fdmFfYXJnKGFwLGxvbmcgZG91YmxlKTsgZWxz
ZSB0aGVfYXJnLnBhX2RvdWJsZSA9IF9fYnVpbHRpbl92YV9hcmcoYXAsZG91YmxlKTsgcHRyID0g
KGNvbnN0IHZvaWQgKikgJnRoZV9hcmc7IGZ1bmN0aW9uX2RvbmUgPSBfX3ByaW50Zl9mcGhleCAo
cywgJmluZm8sICZwdHIpOyB9IGVsc2UgeyBwdHIgPSAoY29uc3Qgdm9pZCAqKSAmYXJnc192YWx1
ZVsoKHN0cnVjdCBwcmludGZfc3BlYyAqKSAoKHZvaWQgKikwKSktPmRhdGFfYXJnXTsgZnVuY3Rp
b25fZG9uZSA9IF9fcHJpbnRmX2ZwaGV4IChzLCAmKChzdHJ1Y3QgcHJpbnRmX3NwZWMgKikgKCh2
b2lkICopMCkpLT5pbmZvLCAmcHRyKTsgfSBpZiAoZnVuY3Rpb25fZG9uZSA8IDApIHsgZG9uZSA9
IC0xOyBnb3RvIGFsbF9kb25lOyB9IGRvbmUgKz0gZnVuY3Rpb25fZG9uZTsgfSBicmVhazsgZG9f
Zm9ybV9wb2ludGVyOiB7IGNvbnN0IHZvaWQgKnB0cjsgaWYgKCgoc3RydWN0IHByaW50Zl9zcGVj
ICopICgodm9pZCAqKTApKSA9PSAoKHZvaWQgKikwKSkgcHRyID0gX19idWlsdGluX3ZhX2FyZyhh
cCx2b2lkICopOyBlbHNlIHB0ciA9IGFyZ3NfdmFsdWVbKChzdHJ1Y3QgcHJpbnRmX3NwZWMgKikg
KCh2b2lkICopMCkpLT5kYXRhX2FyZ10ucGFfcG9pbnRlcjsgaWYgKHB0ciAhPSAoKHZvaWQgKikw
KSkgeyBiYXNlID0gMTY7IG51bWJlci53b3JkID0gKHVuc2lnbmVkIGxvbmcgaW50KSBwdHI7IGlz
X25lZ2F0aXZlID0gMDsgYWx0ID0gMTsgZ3JvdXAgPSAwOyBzcGVjID0gJ3gnOyBnb3RvIGRvX251
bWJlcjsgfSBlbHNlIHsgc3RyaW5nID0gKGNoYXIgKikgIihuaWwpIjsgaWYgKHByZWMgPCA1KSBw
cmVjID0gNTsgaXNfbG9uZyA9IDA7IGdvdG8gZG9fcHJpbnRfc3RyaW5nOyB9IH0gZG9fZm9ybV9u
dW1iZXI6IGlmICgoKHN0cnVjdCBwcmludGZfc3BlYyAqKSAoKHZvaWQgKikwKSkgPT0gKCh2b2lk
ICopMCkpIHsgaWYgKDApICoobG9uZyBsb25nIGludCAqKSBfX2J1aWx0aW5fdmFfYXJnKGFwLHZv
aWQgKikgPSBkb25lOyBlbHNlIGlmIChpc19sb25nKSAqKGxvbmcgaW50ICopIF9fYnVpbHRpbl92
YV9hcmcoYXAsdm9pZCAqKSA9IGRvbmU7IGVsc2UgaWYgKGlzX2NoYXIpICooY2hhciAqKSBfX2J1
aWx0aW5fdmFfYXJnKGFwLHZvaWQgKikgPSBkb25lOyBlbHNlIGlmICghaXNfc2hvcnQpICooaW50
ICopIF9fYnVpbHRpbl92YV9hcmcoYXAsdm9pZCAqKSA9IGRvbmU7IGVsc2UgKihzaG9ydCBpbnQg
KikgX19idWlsdGluX3ZhX2FyZyhhcCx2b2lkICopID0gZG9uZTsgfSBlbHNlIGlmICgwKSAqKGxv
bmcgbG9uZyBpbnQgKikgYXJnc192YWx1ZVsoKHN0cnVjdCBwcmludGZfc3BlYyAqKSAoKHZvaWQg
KikwKSktPmRhdGFfYXJnXS5wYV9wb2ludGVyID0gZG9uZTsgZWxzZSBpZiAoaXNfbG9uZykgKihs
b25nIGludCAqKSBhcmdzX3ZhbHVlWygoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTAp
KS0+ZGF0YV9hcmddLnBhX3BvaW50ZXIgPSBkb25lOyBlbHNlIGlmIChpc19jaGFyKSAqKGNoYXIg
KikgYXJnc192YWx1ZVsoKHN0cnVjdCBwcmludGZfc3BlYyAqKSAoKHZvaWQgKikwKSktPmRhdGFf
YXJnXS5wYV9wb2ludGVyID0gZG9uZTsgZWxzZSBpZiAoIWlzX3Nob3J0KSAqKGludCAqKSBhcmdz
X3ZhbHVlWygoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+ZGF0YV9hcmddLnBh
X3BvaW50ZXIgPSBkb25lOyBlbHNlICooc2hvcnQgaW50ICopIGFyZ3NfdmFsdWVbKChzdHJ1Y3Qg
cHJpbnRmX3NwZWMgKikgKCh2b2lkICopMCkpLT5kYXRhX2FyZ10ucGFfcG9pbnRlciA9IGRvbmU7
IGJyZWFrOyBkb19mb3JtX3N0cmVycm9yOiBzdHJpbmcgPSAoY2hhciAqKSBfX3N0cmVycm9yX3Ig
KHNhdmVfZXJybm8sIChjaGFyICopIHdvcmtfYnVmZmVyLCBzaXplb2Ygd29ya19idWZmZXIpOyBp
c19sb25nID0gMDsgZ290byBkb19wcmludF9zdHJpbmc7CiAgICAgICAgICBkb19mb3JtX2NoYXJh
Y3RlcjogaWYgKGlzX2xvbmcpIGdvdG8gZG9fZm9ybV93Y2hhcmFjdGVyOyAtLXdpZHRoOyBpZiAo
IWxlZnQpIGlmICh3aWR0aCA+IDApIGRvbmUgKz0gX0lPX3BhZG5faW50ZXJuYWwgKHMsICgnICcp
LCB3aWR0aCk7IGlmICgoKHN0cnVjdCBwcmludGZfc3BlYyAqKSAoKHZvaWQgKikwKSkgPT0gKCh2
b2lkICopMCkpIGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91dGMgPSAoKHVuc2lnbmVkIGNoYXIp
IF9fYnVpbHRpbl92YV9hcmcoYXAsaW50KSk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAo
cyktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRj
KSkgOiAodW5zaWduZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09
ICgtMSkpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxl
ICgwKTsgZWxzZSBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRjID0gKCh1bnNpZ25lZCBjaGFy
KSBhcmdzX3ZhbHVlWygoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+ZGF0YV9h
cmddLnBhX2NoYXIpOyBpZiAoKCgocyktPl9JT193cml0ZV9wdHIgPj0gKHMpLT5fSU9fd3JpdGVf
ZW5kKSA/IF9fb3ZlcmZsb3cgKHMsICh1bnNpZ25lZCBjaGFyKSAob3V0YykpIDogKHVuc2lnbmVk
IGNoYXIpICgqKHMpLT5fSU9fd3JpdGVfcHRyKysgPSAob3V0YykpKSA9PSAoLTEpKSB7IGRvbmUg
PSAtMTsgZ290byBhbGxfZG9uZTsgfSBlbHNlICsrZG9uZTsgfSB3aGlsZSAoMCk7IGlmIChsZWZ0
KSBpZiAod2lkdGggPiAwKSBkb25lICs9IF9JT19wYWRuX2ludGVybmFsIChzLCAoJyAnKSwgd2lk
dGgpOyBicmVhazsgZG9fZm9ybV93Y2hhcmFjdGVyOiB7IGNoYXIgYnVmWygoKCgoX19sb2NhbGVf
dCkgKF9fbGliY19pbnRlcm5hbF90c2RfZ2V0ICE9ICgodm9pZCAqKTApID8gX19saWJjX2ludGVy
bmFsX3RzZF9nZXQgKF9MSUJDX1RTRF9LRVlfTE9DQUxFKSA6IF9fbGliY190c2RfTE9DQUxFX2Rh
dGEpKS0+X19sb2NhbGVzW19fTENfQ1RZUEVdKS0+dmFsdWVzWygoaW50KSAoX05MX0NUWVBFX01C
X0NVUl9NQVgpICYgMHhmZmZmKV0ud29yZCkpXTsgbWJzdGF0ZV90IG1ic3RhdGU7IHNpemVfdCBs
ZW47IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6ZW9mIChtYnN0YXRl
X3QpKSAmJiAoc2l6ZW9mIChtYnN0YXRlX3QpKSA8PSAxNiA/ICgoc2l6ZW9mIChtYnN0YXRlX3Qp
KSA9PSAxID8gKHsgdm9pZCAqX19zID0gKCZtYnN0YXRlKTsgKigoX191aW50OF90ICopIF9fcykg
PSAoX191aW50OF90KSAnXDAnOyBfX3M7IH0pIDogKHsgdm9pZCAqX19zID0gKCZtYnN0YXRlKTsg
dW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNp
Z25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191aW50OF90IF9fYyA9IChfX3VpbnQ4X3Qp
ICgnXDAnKTsgc3dpdGNoICgodW5zaWduZWQgaW50KSAoc2l6ZW9mIChtYnN0YXRlX3QpKSkgeyBj
YXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9f
ICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEw
MTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNzogX191LT5f
X3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191
ICsgNCk7IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7IF9fdS0+X191YyA9
ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE0OiBfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAx
MDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgNCk7IGNhc2UgNjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMjogX191LT5fX3VzaSA9
ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgYnJlYWs7IGNhc2UgMTM6IF9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDU6IF9fdS0+X191aSA9IF9fYyAqIDB4
MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDE6
IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE2OiBfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgODogX191LT5fX3VpID0gX19jICogMHgw
MTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNDog
X191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgY2FzZSAwOiBicmVhazsgfSBfX3M7IH0pKSA6
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoJ1wwJykgJiYgKCdcMCcpID09ICdcMCcgPyAoeyB2b2lk
ICpfX3MgPSAoJm1ic3RhdGUpOyBfX2J1aWx0aW5fbWVtc2V0IChfX3MsICdcMCcsIHNpemVvZiAo
bWJzdGF0ZV90KSk7IF9fczsgfSkgOiBtZW1zZXQgKCZtYnN0YXRlLCAnXDAnLCBzaXplb2YgKG1i
c3RhdGVfdCkpKSkpOyBsZW4gPSBfX3djcnRvbWIgKGJ1ZiwgKCgoc3RydWN0IHByaW50Zl9zcGVj
ICopICgodm9pZCAqKTApKSA9PSAoKHZvaWQgKikwKSA/IF9fYnVpbHRpbl92YV9hcmcoYXAsd2No
YXJfdCkgOiBhcmdzX3ZhbHVlWygoc3RydWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+
ZGF0YV9hcmddLnBhX3djaGFyKSwgJm1ic3RhdGUpOyBpZiAobGVuID09IChzaXplX3QpIC0xKSB7
IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSB3aWR0aCAtPSBsZW47IGlmICghbGVmdCkgaWYg
KHdpZHRoID4gMCkgZG9uZSArPSBfSU9fcGFkbl9pbnRlcm5hbCAocywgKCcgJyksIHdpZHRoKTsg
ZG8geyBpZiAoKHNpemVfdCkgKCgqKHN0cnVjdCBfSU9fanVtcF90ICoqKSAoKHZvaWQgKikgJigo
c3RydWN0IF9JT19GSUxFX3BsdXMgKikgKChzKSkpLT52dGFibGUgKyAoKHMpKS0+X3Z0YWJsZV9v
ZmZzZXQpKS0+X194c3B1dG4pICgocyksICgoYnVmKSksICgobGVuKSkpICE9IChzaXplX3QpIChs
ZW4pKSB7IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSBkb25lICs9IChsZW4pOyB9IHdoaWxl
ICgwKTsgaWYgKGxlZnQpIGlmICh3aWR0aCA+IDApIGRvbmUgKz0gX0lPX3BhZG5faW50ZXJuYWwg
KHMsICgnICcpLCB3aWR0aCk7IH0gYnJlYWs7IGRvX2Zvcm1fc3RyaW5nOiB7IHNpemVfdCBsZW47
IGludCBzdHJpbmdfbWFsbG9jZWQ7IGlmICgoKHN0cnVjdCBwcmludGZfc3BlYyAqKSAoKHZvaWQg
KikwKSkgPT0gKCh2b2lkICopMCkpIHN0cmluZyA9IChjaGFyICopIF9fYnVpbHRpbl92YV9hcmco
YXAsY29uc3QgY2hhciAqKTsgZWxzZSBzdHJpbmcgPSAoY2hhciAqKSBhcmdzX3ZhbHVlWygoc3Ry
dWN0IHByaW50Zl9zcGVjICopICgodm9pZCAqKTApKS0+ZGF0YV9hcmddLnBhX3N0cmluZzsgZG9f
cHJpbnRfc3RyaW5nOiBzdHJpbmdfbWFsbG9jZWQgPSAwOyBpZiAoc3RyaW5nID09ICgodm9pZCAq
KTApKSB7IGlmIChwcmVjID09IC0xIHx8IHByZWMgPj0gKGludCkgc2l6ZW9mIChudWxsKSAtIDEp
IHsgc3RyaW5nID0gKGNoYXIgKikgbnVsbDsgbGVuID0gc2l6ZW9mIChudWxsKSAtIDE7IH0gZWxz
ZSB7IHN0cmluZyA9IChjaGFyICopICIiOyBsZW4gPSAwOyB9IH0gZWxzZSBpZiAoIWlzX2xvbmcg
JiYgc3BlYyAhPSAnUycpIHsgaWYgKHByZWMgIT0gLTEpIHsgaWYgKCgoKChfX2xvY2FsZV90KSAo
X19saWJjX2ludGVybmFsX3RzZF9nZXQgIT0gKCh2b2lkICopMCkgPyBfX2xpYmNfaW50ZXJuYWxf
dHNkX2dldCAoX0xJQkNfVFNEX0tFWV9MT0NBTEUpIDogX19saWJjX3RzZF9MT0NBTEVfZGF0YSkp
LT5fX2xvY2FsZXNbX19MQ19DVFlQRV0pLT52YWx1ZXNbKChpbnQpIChfTkxfQ1RZUEVfTUJfQ1VS
X01BWCkgJiAweGZmZmYpXS53b3JkKSA9PSAxKSBsZW4gPSBfX3N0cm5sZW4gKHN0cmluZywgcHJl
Yyk7IGVsc2UgeyB3Y2hhcl90IGlnbm9yZVtwcmVjXTsgY29uc3QgY2hhciAqc3RyMiA9IHN0cmlu
ZzsgbWJzdGF0ZV90IHBzOyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHNp
emVvZiAocHMpKSAmJiAoc2l6ZW9mIChwcykpIDw9IDE2ID8gKChzaXplb2YgKHBzKSkgPT0gMSA/
ICh7IHZvaWQgKl9fcyA9ICgmcHMpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3Qp
ICdcMCc7IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAoJnBzKTsgdW5pb24geyB1bnNpZ25lZCBp
bnQgX191aTsgdW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0g
Kl9fdSA9IF9fczsgX191aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgnXDAnKTsgc3dpdGNoICgo
dW5zaWduZWQgaW50KSAoc2l6ZW9mIChwcykpKSB7IGNhc2UgMTU6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNl
IDExOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA3OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNp
ID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9f
ICgodm9pZCAqKSBfX3UgKyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJl
YWs7IGNhc2UgMTQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEwOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAx
MDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19j
ICogMHgwMTAxOyBicmVhazsgY2FzZSAxMzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsg
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgOTogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7IGNhc2UgNTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNo
YXIpIF9fYzsgYnJlYWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEyOiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0
KTsgY2FzZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBjYXNlIDA6IGJyZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgn
XDAnKSAmJiAoJ1wwJykgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9ICgmcHMpOyBfX2J1aWx0aW5f
bWVtc2V0IChfX3MsICdcMCcsIHNpemVvZiAocHMpKTsgX19zOyB9KSA6IG1lbXNldCAoJnBzLCAn
XDAnLCBzaXplb2YgKHBzKSkpKSk7IGlmIChfX21ic25ydG93Y3MgKGlnbm9yZSwgJnN0cjIsIHBy
ZWMsIHByZWMsICZwcykgPT0gKHNpemVfdCkgLTEpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25l
OyB9IGlmIChzdHIyID09ICgodm9pZCAqKTApKSBsZW4gPSBzdHJsZW4gKHN0cmluZyk7IGVsc2Ug
bGVuID0gc3RyMiAtIHN0cmluZyAtIChwcy5fX2NvdW50KTsgfSB9IGVsc2UgbGVuID0gc3RybGVu
IChzdHJpbmcpOyB9IGVsc2UgeyBjb25zdCB3Y2hhcl90ICpzMiA9IChjb25zdCB3Y2hhcl90ICop
IHN0cmluZzsgbWJzdGF0ZV90IG1ic3RhdGU7IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29u
c3RhbnRfcCAoc2l6ZW9mIChtYnN0YXRlX3QpKSAmJiAoc2l6ZW9mIChtYnN0YXRlX3QpKSA8PSAx
NiA/ICgoc2l6ZW9mIChtYnN0YXRlX3QpKSA9PSAxID8gKHsgdm9pZCAqX19zID0gKCZtYnN0YXRl
KTsgKigoX191aW50OF90ICopIF9fcykgPSAoX191aW50OF90KSAnXDAnOyBfX3M7IH0pIDogKHsg
dm9pZCAqX19zID0gKCZtYnN0YXRlKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191
aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgnXDAnKTsgc3dpdGNoICgodW5zaWduZWQgaW50KSAo
c2l6ZW9mIChtYnN0YXRlX3QpKSkgeyBjYXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7IGNhc2UgNzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19l
eHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNp
Z25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgMik7IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNl
IDE0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsg
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNjogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7IGNhc2UgMjogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEw
MTsgYnJlYWs7IGNhc2UgMTM6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNl
IDU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOyBjYXNlIDE6IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7
IGJyZWFrOyBjYXNlIDE2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2Ug
ODogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgNCk7IGNhc2UgNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgY2Fz
ZSAwOiBicmVhazsgfSBfX3M7IH0pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoJ1wwJykgJiYg
KCdcMCcpID09ICdcMCcgPyAoeyB2b2lkICpfX3MgPSAoJm1ic3RhdGUpOyBfX2J1aWx0aW5fbWVt
c2V0IChfX3MsICdcMCcsIHNpemVvZiAobWJzdGF0ZV90KSk7IF9fczsgfSkgOiBtZW1zZXQgKCZt
YnN0YXRlLCAnXDAnLCBzaXplb2YgKG1ic3RhdGVfdCkpKSkpOyBpZiAocHJlYyA+PSAwKSB7IGlm
IChfX2xpYmNfdXNlX2FsbG9jYSAocHJlYykpIHN0cmluZyA9IChjaGFyICopIF9fYnVpbHRpbl9h
bGxvY2EgKHByZWMpOyBlbHNlIGlmICgoc3RyaW5nID0gKGNoYXIgKikgbWFsbG9jIChwcmVjKSkg
PT0gKCh2b2lkICopMCkpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2Ugc3RyaW5n
X21hbGxvY2VkID0gMTsgbGVuID0gX193Y3NydG9tYnMgKHN0cmluZywgJnMyLCBwcmVjLCAmbWJz
dGF0ZSk7IH0gZWxzZSB7IGxlbiA9IF9fd2NzcnRvbWJzICgoKHZvaWQgKikwKSwgJnMyLCAwLCAm
bWJzdGF0ZSk7IGlmIChsZW4gIT0gKHNpemVfdCkgLTEpIHsgKCh2b2lkKSAoMCkpOyBzMiA9IChj
b25zdCB3Y2hhcl90ICopIHN0cmluZzsgaWYgKF9fbGliY191c2VfYWxsb2NhIChsZW4gKyAxKSkg
c3RyaW5nID0gKGNoYXIgKikgX19idWlsdGluX2FsbG9jYSAobGVuICsgMSk7IGVsc2UgaWYgKChz
dHJpbmcgPSAoY2hhciAqKSBtYWxsb2MgKGxlbiArIDEpKSA9PSAoKHZvaWQgKikwKSkgeyBkb25l
ID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZWxzZSBzdHJpbmdfbWFsbG9jZWQgPSAxOyAodm9pZCkg
X193Y3NydG9tYnMgKHN0cmluZywgJnMyLCBsZW4gKyAxLCAmbWJzdGF0ZSk7IH0gfSBpZiAobGVu
ID09IChzaXplX3QpIC0xKSB7IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSB9IGlmICgod2lk
dGggLT0gbGVuKSA8IDApIHsgZG8geyBpZiAoKHNpemVfdCkgKCgqKHN0cnVjdCBfSU9fanVtcF90
ICoqKSAoKHZvaWQgKikgJigoc3RydWN0IF9JT19GSUxFX3BsdXMgKikgKChzKSkpLT52dGFibGUg
KyAoKHMpKS0+X3Z0YWJsZV9vZmZzZXQpKS0+X194c3B1dG4pICgocyksICgoc3RyaW5nKSksICgo
bGVuKSkpICE9IChzaXplX3QpIChsZW4pKSB7IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSBk
b25lICs9IChsZW4pOyB9IHdoaWxlICgwKTsgYnJlYWs7IH0gaWYgKCFsZWZ0KSBpZiAod2lkdGgg
PiAwKSBkb25lICs9IF9JT19wYWRuX2ludGVybmFsIChzLCAoJyAnKSwgd2lkdGgpOyBkbyB7IGlm
ICgoc2l6ZV90KSAoKCooc3RydWN0IF9JT19qdW1wX3QgKiopICgodm9pZCAqKSAmKChzdHJ1Y3Qg
X0lPX0ZJTEVfcGx1cyAqKSAoKHMpKSktPnZ0YWJsZSArICgocykpLT5fdnRhYmxlX29mZnNldCkp
LT5fX3hzcHV0bikgKChzKSwgKChzdHJpbmcpKSwgKChsZW4pKSkgIT0gKHNpemVfdCkgKGxlbikp
IHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGRvbmUgKz0gKGxlbik7IH0gd2hpbGUgKDAp
OyBpZiAobGVmdCkgaWYgKHdpZHRoID4gMCkgZG9uZSArPSBfSU9fcGFkbl9pbnRlcm5hbCAocywg
KCcgJyksIHdpZHRoKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHN0cmluZ19tYWxsb2NlZCwgMCkp
IGZyZWUgKHN0cmluZyk7IH0gYnJlYWs7OwoKICAgICAgICBkb19mb3JtX3Vua25vd246CiAgICAg
ICAgICBpZiAoc3BlYyA9PSAnXDAnKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgIGRvbmUg
PSAtMTsKICAgICAgICAgICAgICBnb3RvIGFsbF9kb25lOwogICAgICAgICAgICB9CgoKCiAgICAg
ICAgICBnb3RvIGRvX3Bvc2l0aW9uYWw7CiAgICAgICAgfQoKCiAgICAgICsrbnNwZWNzX2RvbmU7
CgogICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAod29ya3N0YXJ0ICE9ICgodm9pZCAqKTApLCAw
KSkKICAgICAgICBmcmVlICh3b3Jrc3RhcnQpOwogICAgICB3b3Jrc3RhcnQgPSAoKHZvaWQgKikw
KTsKCgoKCgogICAgICBmID0gZmluZF9zcGVjICgoZW5kX29mX3NwZWMgPSArK2YpLCAmbWJzdGF0
ZSk7CgoKCiAgICAgIGRvIHsgaWYgKChzaXplX3QpICgoKihzdHJ1Y3QgX0lPX2p1bXBfdCAqKikg
KCh2b2lkICopICYoKHN0cnVjdCBfSU9fRklMRV9wbHVzICopICgocykpKS0+dnRhYmxlICsgKChz
KSktPl92dGFibGVfb2Zmc2V0KSktPl9feHNwdXRuKSAoKHMpLCAoKGVuZF9vZl9zcGVjKSksICgo
ZiAtIGVuZF9vZl9zcGVjKSkpICE9IChzaXplX3QpIChmIC0gZW5kX29mX3NwZWMpKSB7IGRvbmUg
PSAtMTsgZ290byBhbGxfZG9uZTsgfSBkb25lICs9IChmIC0gZW5kX29mX3NwZWMpOyB9IHdoaWxl
ICgwKTsKICAgIH0KICB3aGlsZSAoKmYgIT0gJ1wwJyk7CgoKICBnb3RvIGFsbF9kb25lOwoKCmRv
X3Bvc2l0aW9uYWw6CiAgewoKCiAgICBzaXplX3QgbnNwZWNzID0gMDsKICAgIHNpemVfdCBuc3Bl
Y3NfbWF4ID0gMzI7CiAgICBzdHJ1Y3QgcHJpbnRmX3NwZWMgKnNwZWNzCiAgICAgID0gX19idWls
dGluX2FsbG9jYSAobnNwZWNzX21heCAqIHNpemVvZiAoc3RydWN0IHByaW50Zl9zcGVjKSk7CgoK
CgogICAgc2l6ZV90IG5hcmdzID0gMDsKICAgIGludCAqYXJnc190eXBlOwogICAgdW5pb24gcHJp
bnRmX2FyZyAqYXJnc192YWx1ZSA9ICgodm9pZCAqKTApOwoKCgoKICAgIHNpemVfdCBtYXhfcmVm
X2FyZyA9IDA7CgoKICAgIHNpemVfdCBjbnQ7CgoKICAgIGlmIChncm91cGluZyA9PSAoY29uc3Qg
Y2hhciAqKSAtMSkKICAgICAgewoKCgoKICAgICAgICB0aG91c2FuZHNfc2VwID0gKCgoKF9fbG9j
YWxlX3QpIChfX2xpYmNfaW50ZXJuYWxfdHNkX2dldCAhPSAoKHZvaWQgKikwKSA/IF9fbGliY19p
bnRlcm5hbF90c2RfZ2V0IChfTElCQ19UU0RfS0VZX0xPQ0FMRSkgOiBfX2xpYmNfdHNkX0xPQ0FM
RV9kYXRhKSktPl9fbG9jYWxlc1tfX0xDX05VTUVSSUNdKS0+dmFsdWVzWygoaW50KSAoX19USE9V
U0FORFNfU0VQKSAmIDB4ZmZmZildLnN0cmluZyk7CgoKICAgICAgICBncm91cGluZyA9ICgoKChf
X2xvY2FsZV90KSAoX19saWJjX2ludGVybmFsX3RzZF9nZXQgIT0gKCh2b2lkICopMCkgPyBfX2xp
YmNfaW50ZXJuYWxfdHNkX2dldCAoX0xJQkNfVFNEX0tFWV9MT0NBTEUpIDogX19saWJjX3RzZF9M
T0NBTEVfZGF0YSkpLT5fX2xvY2FsZXNbX19MQ19OVU1FUklDXSktPnZhbHVlc1soKGludCkgKF9f
R1JPVVBJTkcpICYgMHhmZmZmKV0uc3RyaW5nKTsKICAgICAgICBpZiAoKmdyb3VwaW5nID09ICdc
MCcgfHwgKmdyb3VwaW5nID09IDEyNykKICAgICAgICAgIGdyb3VwaW5nID0gKCh2b2lkICopMCk7
CiAgICAgIH0KCiAgICBmb3IgKGYgPSBsZWFkX3N0cl9lbmQ7ICpmICE9ICdcMCc7IGYgPSBzcGVj
c1tuc3BlY3MrK10ubmV4dF9mbXQpCiAgICAgIHsKICAgICAgICBpZiAobnNwZWNzID49IG5zcGVj
c19tYXgpCiAgICAgICAgICB7CgogICAgICAgICAgICBzdHJ1Y3QgcHJpbnRmX3NwZWMgKm9sZCA9
IHNwZWNzOwoKICAgICAgICAgICAgbnNwZWNzX21heCAqPSAyOwogICAgICAgICAgICBzcGVjcyA9
IF9fYnVpbHRpbl9hbGxvY2EgKG5zcGVjc19tYXggKiBzaXplb2YgKHN0cnVjdCBwcmludGZfc3Bl
YykpOwoKICAgICAgICAgICAgaWYgKHNwZWNzID09ICZvbGRbbnNwZWNzXSkKCgogICAgICAgICAg
ICAgIG5zcGVjc19tYXggKz0gbnNwZWNzX21heCAvIDI7CiAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICB7CgogICAgICAgICAgICAgICAgbWVtY3B5IChzcGVjcywgb2xkLCBuc3BlY3MgKiBz
aXplb2YgKHN0cnVjdCBwcmludGZfc3BlYykpOwogICAgICAgICAgICAgICAgaWYgKG9sZCA9PSAm
c3BlY3NbbnNwZWNzXSkKCgoKICAgICAgICAgICAgICAgICAgbnNwZWNzX21heCArPSBuc3BlY3Nf
bWF4IC8gMjsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CgoKCgoKICAgICAgICBuYXJncyAr
PSBwYXJzZV9vbmVfc3BlYyAoZiwgbmFyZ3MsICZzcGVjc1tuc3BlY3NdLCAmbWF4X3JlZl9hcmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYnN0YXRlKTsKCiAgICAgIH0KCgog
ICAgbmFyZ3MgPSAoKChuYXJncyk+KG1heF9yZWZfYXJnKSk/KG5hcmdzKToobWF4X3JlZl9hcmcp
KTsKCgogICAgYXJnc190eXBlID0gX19idWlsdGluX2FsbG9jYSAobmFyZ3MgKiBzaXplb2YgKGlu
dCkpOwogICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYXJncyAqIHNp
emVvZiAoaW50KSkgJiYgKG5hcmdzICogc2l6ZW9mIChpbnQpKSA8PSAxNiA/ICgobmFyZ3MgKiBz
aXplb2YgKGludCkpID09IDEgPyAoeyB2b2lkICpfX3MgPSAoYXJnc190eXBlKTsgKigoX191aW50
OF90ICopIF9fcykgPSAoX191aW50OF90KSAwOyBfX3M7IH0pIDogKHsgdm9pZCAqX19zID0gKGFy
Z3NfdHlwZSk7IHVuaW9uIHsgdW5zaWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0IGludCBf
X3VzaTsgdW5zaWduZWQgY2hhciBfX3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBfX2MgPSAo
X191aW50OF90KSAoMCk7IHN3aXRjaCAoKHVuc2lnbmVkIGludCkgKG5hcmdzICogc2l6ZW9mIChp
bnQpKSkgeyBjYXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2Ug
NzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgNCk7IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQp
IF9fYyAqIDB4MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7IF9f
dS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE0OiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0
KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNjogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMjogX191
LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgYnJlYWs7IGNhc2Ug
MTM6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDU6IF9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OyBjYXNlIDE6IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE2
OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgODogX191LT5fX3VpID0g
X19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
IGNhc2UgNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgY2FzZSAwOiBicmVhazsgfSBf
X3M7IH0pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoMCkgJiYgKDApID09ICdcMCcgPyAoeyB2
b2lkICpfX3MgPSAoYXJnc190eXBlKTsgX19idWlsdGluX21lbXNldCAoX19zLCAnXDAnLCBuYXJn
cyAqIHNpemVvZiAoaW50KSk7IF9fczsgfSkgOiBtZW1zZXQgKGFyZ3NfdHlwZSwgMCwgbmFyZ3Mg
KiBzaXplb2YgKGludCkpKSkpOwogICAgYXJnc192YWx1ZSA9IF9fYnVpbHRpbl9hbGxvY2EgKG5h
cmdzICogc2l6ZW9mICh1bmlvbiBwcmludGZfYXJnKSk7CgoKCgoKCiAgICBmb3IgKGNudCA9IDA7
IGNudCA8IG5zcGVjczsgKytjbnQpCiAgICAgIHsKCiAgICAgICAgaWYgKHNwZWNzW2NudF0ud2lk
dGhfYXJnICE9IC0xKQogICAgICAgICAgYXJnc190eXBlW3NwZWNzW2NudF0ud2lkdGhfYXJnXSA9
IFBBX0lOVDsKCgogICAgICAgIGlmIChzcGVjc1tjbnRdLnByZWNfYXJnICE9IC0xKQogICAgICAg
ICAgYXJnc190eXBlW3NwZWNzW2NudF0ucHJlY19hcmddID0gUEFfSU5UOwoKICAgICAgICBzd2l0
Y2ggKHNwZWNzW2NudF0ubmRhdGFfYXJncykKICAgICAgICAgIHsKICAgICAgICAgIGNhc2UgMDoK
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGFyZ3NfdHlw
ZVtzcGVjc1tjbnRdLmRhdGFfYXJnXSA9IHNwZWNzW2NudF0uZGF0YV9hcmdfdHlwZTsKICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICBkZWZhdWx0OgoKCgogICAgICAgICAgICAodm9pZCkgKCpf
X3ByaW50Zl9hcmdpbmZvX3RhYmxlW3NwZWNzW2NudF0uaW5mby5zcGVjXSkKICAgICAgICAgICAg
ICAoJnNwZWNzW2NudF0uaW5mbywKICAgICAgICAgICAgICAgc3BlY3NbY250XS5uZGF0YV9hcmdz
LCAmYXJnc190eXBlW3NwZWNzW2NudF0uZGF0YV9hcmddKTsKICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICB9CiAgICAgIH0KCgoKICAgIGZvciAoY250ID0gMDsgY250IDwgbmFyZ3M7ICsrY250
KQogICAgICBzd2l0Y2ggKGFyZ3NfdHlwZVtjbnRdKQogICAgICAgIHsKCgoKCgogICAgICAgIGNh
c2UgUEFfQ0hBUjogYXJnc192YWx1ZVtjbnRdLnBhX2NoYXIgPSBfX2J1aWx0aW5fdmFfYXJnKGFw
X3NhdmUsaW50KTsgYnJlYWs7CiAgICAgICAgY2FzZSBQQV9XQ0hBUjogYXJnc192YWx1ZVtjbnRd
LnBhX3djaGFyID0gX19idWlsdGluX3ZhX2FyZyhhcF9zYXZlLHdpbnRfdCk7IGJyZWFrOwogICAg
ICAgIGNhc2UgUEFfSU5UfCgxIDw8IDEwKTogYXJnc192YWx1ZVtjbnRdLnBhX3Nob3J0X2ludCA9
IF9fYnVpbHRpbl92YV9hcmcoYXBfc2F2ZSxpbnQpOyBicmVhazsKICAgICAgICBjYXNlIFBBX0lO
VDogYXJnc192YWx1ZVtjbnRdLnBhX2ludCA9IF9fYnVpbHRpbl92YV9hcmcoYXBfc2F2ZSxpbnQp
OyBicmVhazsKICAgICAgICBjYXNlIFBBX0lOVHwoMSA8PCA5KTogYXJnc192YWx1ZVtjbnRdLnBh
X2xvbmdfaW50ID0gX19idWlsdGluX3ZhX2FyZyhhcF9zYXZlLGxvbmcgaW50KTsgYnJlYWs7CiAg
ICAgICAgY2FzZSBQQV9JTlR8KDEgPDwgOCk6IGFyZ3NfdmFsdWVbY250XS5wYV9sb25nX2xvbmdf
aW50ID0gX19idWlsdGluX3ZhX2FyZyhhcF9zYXZlLGxvbmcgbG9uZyBpbnQpOyBicmVhazsKICAg
ICAgICBjYXNlIFBBX0ZMT0FUOiBhcmdzX3ZhbHVlW2NudF0ucGFfZmxvYXQgPSBfX2J1aWx0aW5f
dmFfYXJnKGFwX3NhdmUsZG91YmxlKTsgYnJlYWs7CiAgICAgICAgY2FzZSBQQV9ET1VCTEU6IGFy
Z3NfdmFsdWVbY250XS5wYV9kb3VibGUgPSBfX2J1aWx0aW5fdmFfYXJnKGFwX3NhdmUsZG91Ymxl
KTsgYnJlYWs7CiAgICAgICAgY2FzZSBQQV9ET1VCTEV8KDEgPDwgOCk6IGFyZ3NfdmFsdWVbY250
XS5wYV9sb25nX2RvdWJsZSA9IF9fYnVpbHRpbl92YV9hcmcoYXBfc2F2ZSxsb25nIGRvdWJsZSk7
IGJyZWFrOwogICAgICAgIGNhc2UgUEFfU1RSSU5HOiBhcmdzX3ZhbHVlW2NudF0ucGFfc3RyaW5n
ID0gX19idWlsdGluX3ZhX2FyZyhhcF9zYXZlLGNvbnN0IGNoYXIgKik7IGJyZWFrOwogICAgICAg
IGNhc2UgUEFfV1NUUklORzogYXJnc192YWx1ZVtjbnRdLnBhX3dzdHJpbmcgPSBfX2J1aWx0aW5f
dmFfYXJnKGFwX3NhdmUsY29uc3Qgd2NoYXJfdCAqKTsgYnJlYWs7CiAgICAgICAgY2FzZSBQQV9Q
T0lOVEVSOiBhcmdzX3ZhbHVlW2NudF0ucGFfcG9pbnRlciA9IF9fYnVpbHRpbl92YV9hcmcoYXBf
c2F2ZSx2b2lkICopOyBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGlmICgoYXJn
c190eXBlW2NudF0gJiAoMSA8PCAxMSkpICE9IDApCiAgICAgICAgICAgIGFyZ3NfdmFsdWVbY250
XS5wYV9wb2ludGVyID0gX19idWlsdGluX3ZhX2FyZyhhcF9zYXZlLHZvaWQgKik7CiAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgIGFyZ3NfdmFsdWVbY250XS5wYV9sb25nX2RvdWJsZSA9IDAuMDsK
ICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCgogICAgZm9yICg7IChzaXplX3QpIG5zcGVjc19k
b25lIDwgbnNwZWNzOyArK25zcGVjc19kb25lKQogICAgICB7CiMgMTc3MiAidmZwcmludGYuYyIK
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IHN0ZXA0X2p1bXBzWzMwXSA9IHsgJiZkbzJfZm9ybV91
bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG8yX2Zvcm1fdW5rbm93biAtICYmZG9fZm9y
bV91bmtub3duLCAmJmRvMl9mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkbzJf
Zm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG8yX2Zvcm1fdW5rbm93biAtICYm
ZG9fZm9ybV91bmtub3duLCAmJmRvMl9mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5rbm93biwg
JiZkbzJfZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG8yX2Zvcm1fdW5rbm93
biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvMl9mb3JtX3Vua25vd24gLSAmJmRvX2Zvcm1fdW5r
bm93biwgJiZkbzJfZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG8yX2Zvcm1f
dW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvMl9mb3JtX3Vua25vd24gLSAmJmRvX2Zv
cm1fdW5rbm93biwgJiZkbzJfZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vua25vd24sICYmZG8y
X2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvMl9mb3JtX3BlcmNlbnQgLSAm
JmRvX2Zvcm1fdW5rbm93biwgJiZkbzJfZm9ybV9pbnRlZ2VyIC0gJiZkb19mb3JtX3Vua25vd24s
ICYmZG8yX2Zvcm1fdW5zaWduZWQgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkbzJfZm9ybV9vY3Rh
bCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvMl9mb3JtX2hleGEgLSAmJmRvX2Zvcm1fdW5rbm93
biwgJiZkbzJfZm9ybV9mbG9hdCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvMl9mb3JtX2NoYXJh
Y3RlciAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvMl9mb3JtX3N0cmluZyAtICYmZG9fZm9ybV91
bmtub3duLCAmJmRvMl9mb3JtX3BvaW50ZXIgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkbzJfZm9y
bV9udW1iZXIgLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkbzJfZm9ybV9zdHJlcnJvciAtICYmZG9f
Zm9ybV91bmtub3duLCAmJmRvMl9mb3JtX3djaGFyYWN0ZXIgLSAmJmRvX2Zvcm1fdW5rbm93biwg
JiZkbzJfZm9ybV9mbG9hdGhleCAtICYmZG9fZm9ybV91bmtub3duLCAmJmRvMl9mb3JtX3Vua25v
d24gLSAmJmRvX2Zvcm1fdW5rbm93biwgJiZkbzJfZm9ybV91bmtub3duIC0gJiZkb19mb3JtX3Vu
a25vd24sICYmZG8yX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91bmtub3duIH07CgogICAgICAg
IGludCBpc19uZWdhdGl2ZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQgbG9uZ2xvbmc7CiAgICAgICAgICB1bnNpZ25lZCBsb25nIGludCB3
b3JkOwogICAgICAgIH0gbnVtYmVyOwogICAgICAgIGludCBiYXNlOwogICAgICAgIHVuaW9uIHBy
aW50Zl9hcmcgdGhlX2FyZzsKICAgICAgICBjaGFyICpzdHJpbmc7CgoKICAgICAgICBpbnQgYWx0
ID0gc3BlY3NbbnNwZWNzX2RvbmVdLmluZm8uYWx0OwogICAgICAgIGludCBzcGFjZSA9IHNwZWNz
W25zcGVjc19kb25lXS5pbmZvLnNwYWNlOwogICAgICAgIGludCBsZWZ0ID0gc3BlY3NbbnNwZWNz
X2RvbmVdLmluZm8ubGVmdDsKICAgICAgICBpbnQgc2hvd3NpZ24gPSBzcGVjc1tuc3BlY3NfZG9u
ZV0uaW5mby5zaG93c2lnbjsKICAgICAgICBpbnQgZ3JvdXAgPSBzcGVjc1tuc3BlY3NfZG9uZV0u
aW5mby5ncm91cDsKICAgICAgICBpbnQgaXNfbG9uZ19kb3VibGUgPSBzcGVjc1tuc3BlY3NfZG9u
ZV0uaW5mby5pc19sb25nX2RvdWJsZTsKICAgICAgICBpbnQgaXNfc2hvcnQgPSBzcGVjc1tuc3Bl
Y3NfZG9uZV0uaW5mby5pc19zaG9ydDsKICAgICAgICBpbnQgaXNfY2hhciA9IHNwZWNzW25zcGVj
c19kb25lXS5pbmZvLmlzX2NoYXI7CiAgICAgICAgaW50IGlzX2xvbmcgPSBzcGVjc1tuc3BlY3Nf
ZG9uZV0uaW5mby5pc19sb25nOwogICAgICAgIGludCB3aWR0aCA9IHNwZWNzW25zcGVjc19kb25l
XS5pbmZvLndpZHRoOwogICAgICAgIGludCBwcmVjID0gc3BlY3NbbnNwZWNzX2RvbmVdLmluZm8u
cHJlYzsKICAgICAgICBpbnQgdXNlX291dGRpZ2l0cyA9IHNwZWNzW25zcGVjc19kb25lXS5pbmZv
LmkxOG47CiAgICAgICAgY2hhciBwYWQgPSBzcGVjc1tuc3BlY3NfZG9uZV0uaW5mby5wYWQ7CiAg
ICAgICAgY2hhciBzcGVjID0gc3BlY3NbbnNwZWNzX2RvbmVdLmluZm8uc3BlYzsKICAgICAgICBj
aGFyICp3b3Jrc3RhcnQgPSAoKHZvaWQgKikwKTsKCgogICAgICAgIGlmIChzcGVjc1tuc3BlY3Nf
ZG9uZV0ud2lkdGhfYXJnICE9IC0xKQogICAgICAgICAgewoKICAgICAgICAgICAgc3BlY3NbbnNw
ZWNzX2RvbmVdLmluZm8ud2lkdGggPQogICAgICAgICAgICAgIGFyZ3NfdmFsdWVbc3BlY3NbbnNw
ZWNzX2RvbmVdLndpZHRoX2FyZ10ucGFfaW50OwoKICAgICAgICAgICAgaWYgKHNwZWNzW25zcGVj
c19kb25lXS5pbmZvLndpZHRoIDwgMCkKCgogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
IHNwZWNzW25zcGVjc19kb25lXS5pbmZvLndpZHRoICo9IC0xOwogICAgICAgICAgICAgICAgbGVm
dCA9IHNwZWNzW25zcGVjc19kb25lXS5pbmZvLmxlZnQgPSAxOwogICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgd2lkdGggPSBzcGVjc1tuc3BlY3NfZG9uZV0uaW5mby53aWR0aDsKICAgICAgICAg
IH0KCiAgICAgICAgaWYgKHNwZWNzW25zcGVjc19kb25lXS5wcmVjX2FyZyAhPSAtMSkKICAgICAg
ICAgIHsKCiAgICAgICAgICAgIHNwZWNzW25zcGVjc19kb25lXS5pbmZvLnByZWMgPQogICAgICAg
ICAgICAgIGFyZ3NfdmFsdWVbc3BlY3NbbnNwZWNzX2RvbmVdLnByZWNfYXJnXS5wYV9pbnQ7Cgog
ICAgICAgICAgICBpZiAoc3BlY3NbbnNwZWNzX2RvbmVdLmluZm8ucHJlYyA8IDApCgoKICAgICAg
ICAgICAgICBzcGVjc1tuc3BlY3NfZG9uZV0uaW5mby5wcmVjID0gLTE7CgogICAgICAgICAgICBw
cmVjID0gc3BlY3NbbnNwZWNzX2RvbmVdLmluZm8ucHJlYzsKICAgICAgICAgIH0KCgogICAgICAg
IGlmICgoKChwcmVjKT4od2lkdGgpKT8ocHJlYyk6KHdpZHRoKSkgKyAzMiA+IChpbnQpIChzaXpl
b2YgKHdvcmtfYnVmZmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8gc2l6ZW9mIChjaGFyKSkpCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmIChfX2xpYmNf
dXNlX2FsbG9jYSAoKCgoKHByZWMpPih3aWR0aCkpPyhwcmVjKTood2lkdGgpKSArIDMyKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2l6ZW9mIChjaGFyKSkpCiAgICAgICAg
ICAgICAgd29ya2VuZCA9ICgoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhICgoKCgocHJlYyk+KHdp
ZHRoKSk/KHByZWMpOih3aWR0aCkpICsgMzIpICogc2l6ZW9mIChjaGFyKSkKCiAgICAgICAgICAg
ICAgICAgICAgICAgICArICgoKChwcmVjKT4od2lkdGgpKT8ocHJlYyk6KHdpZHRoKSkgKyAzMikp
OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgd29ya3N0
YXJ0ID0gKGNoYXIgKikgbWFsbG9jICgoKCgocHJlYyk+KHdpZHRoKSk/KHByZWMpOih3aWR0aCkp
ICsgMzIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBz
aXplb2YgKGNoYXIpKTsKICAgICAgICAgICAgICAgIHdvcmtlbmQgPSB3b3Jrc3RhcnQgKyAoKCgo
cHJlYyk+KHdpZHRoKSk/KHByZWMpOih3aWR0aCkpICsgMzIpOwogICAgICAgICAgICAgIH0KICAg
ICAgICAgIH0KCgogICAgICAgIHdoaWxlICgxKQogICAgICAgICAgewogICAgICAgICAgICBkbyB7
IGludCBvZmZzZXQ7IHZvaWQgKiBwdHI7IHNwZWMgPSAoc3BlYyk7IG9mZnNldCA9ICgoc3BlYykg
PCAnICcgfHwgKHNwZWMpID4gJ3onKSA/ICYmZG8yX2Zvcm1fdW5rbm93biAtICYmZG9fZm9ybV91
bmtub3duIDogc3RlcDRfanVtcHNbKGp1bXBfdGFibGVbKGludCkgKHNwZWMpIC0gJyAnXSldOyBw
dHIgPSAmJmRvX2Zvcm1fdW5rbm93biArIG9mZnNldDsgZ290byAqcHRyOyB9IHdoaWxlICgwKTsK
CiAgICAgICAgICAgIGRvMl9mb3JtX3BlcmNlbnQ6IGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91
dGMgPSAoJyUnKTsgaWYgKCgoKHMpLT5fSU9fd3JpdGVfcHRyID49IChzKS0+X0lPX3dyaXRlX2Vu
ZCkgPyBfX292ZXJmbG93IChzLCAodW5zaWduZWQgY2hhcikgKG91dGMpKSA6ICh1bnNpZ25lZCBj
aGFyKSAoKihzKS0+X0lPX3dyaXRlX3B0cisrID0gKG91dGMpKSkgPT0gKC0xKSkgeyBkb25lID0g
LTE7IGdvdG8gYWxsX2RvbmU7IH0gZWxzZSArK2RvbmU7IH0gd2hpbGUgKDApOyBicmVhazsgZG8y
X2Zvcm1faW50ZWdlcjogYmFzZSA9IDEwOyBpZiAoMCkgeyBsb25nIGxvbmcgaW50IHNpZ25lZF9u
dW1iZXI7IGlmICgoJnNwZWNzW25zcGVjc19kb25lXSkgPT0gKCh2b2lkICopMCkpIHNpZ25lZF9u
dW1iZXIgPSBfX2J1aWx0aW5fdmFfYXJnKGFwLGxvbmcgbG9uZyBpbnQpOyBlbHNlIHNpZ25lZF9u
dW1iZXIgPSBhcmdzX3ZhbHVlWygmc3BlY3NbbnNwZWNzX2RvbmVdKS0+ZGF0YV9hcmddLnBhX2xv
bmdfbG9uZ19pbnQ7IGlzX25lZ2F0aXZlID0gc2lnbmVkX251bWJlciA8IDA7IG51bWJlci5sb25n
bG9uZyA9IGlzX25lZ2F0aXZlID8gKC0gc2lnbmVkX251bWJlcikgOiBzaWduZWRfbnVtYmVyOyBn
b3RvIGRvMl9sb25nbG9uZ19udW1iZXI7IH0gZWxzZSB7IGxvbmcgaW50IHNpZ25lZF9udW1iZXI7
IGlmICgoJnNwZWNzW25zcGVjc19kb25lXSkgPT0gKCh2b2lkICopMCkpIHsgaWYgKGlzX2xvbmcp
IHNpZ25lZF9udW1iZXIgPSBfX2J1aWx0aW5fdmFfYXJnKGFwLGxvbmcgaW50KTsgZWxzZSBzaWdu
ZWRfbnVtYmVyID0gX19idWlsdGluX3ZhX2FyZyhhcCxpbnQpOyB9IGVsc2UgaWYgKGlzX2xvbmcp
IHNpZ25lZF9udW1iZXIgPSBhcmdzX3ZhbHVlWygmc3BlY3NbbnNwZWNzX2RvbmVdKS0+ZGF0YV9h
cmddLnBhX2xvbmdfaW50OyBlbHNlIGlmICghaXNfc2hvcnQpIHNpZ25lZF9udW1iZXIgPSBhcmdz
X3ZhbHVlWygmc3BlY3NbbnNwZWNzX2RvbmVdKS0+ZGF0YV9hcmddLnBhX2ludDsgZWxzZSBzaWdu
ZWRfbnVtYmVyID0gYXJnc192YWx1ZVsoJnNwZWNzW25zcGVjc19kb25lXSktPmRhdGFfYXJnXS5w
YV9zaG9ydF9pbnQ7IGlzX25lZ2F0aXZlID0gc2lnbmVkX251bWJlciA8IDA7IG51bWJlci53b3Jk
ID0gaXNfbmVnYXRpdmUgPyAoLSBzaWduZWRfbnVtYmVyKSA6IHNpZ25lZF9udW1iZXI7IGdvdG8g
ZG8yX251bWJlcjsgfSBkbzJfZm9ybV91bnNpZ25lZDogYmFzZSA9IDEwOyBnb3RvIGRvMl91bnNp
Z25lZF9udW1iZXI7IGRvMl9mb3JtX29jdGFsOiBiYXNlID0gODsgZ290byBkbzJfdW5zaWduZWRf
bnVtYmVyOyBkbzJfZm9ybV9oZXhhOiBiYXNlID0gMTY7IGRvMl91bnNpZ25lZF9udW1iZXI6IGlz
X25lZ2F0aXZlID0gMDsgc2hvd3NpZ24gPSAwOyBzcGFjZSA9IDA7IGlmICgwKSB7IGlmICgoJnNw
ZWNzW25zcGVjc19kb25lXSkgPT0gKCh2b2lkICopMCkpIG51bWJlci5sb25nbG9uZyA9IF9fYnVp
bHRpbl92YV9hcmcoYXAsdW5zaWduZWQgbG9uZyBsb25nIGludCk7IGVsc2UgbnVtYmVyLmxvbmds
b25nID0gYXJnc192YWx1ZVsoJnNwZWNzW25zcGVjc19kb25lXSktPmRhdGFfYXJnXS5wYV91X2xv
bmdfbG9uZ19pbnQ7IGRvMl9sb25nbG9uZ19udW1iZXI6IGlmIChwcmVjIDwgMCkgcHJlYyA9IDE7
IGVsc2UgcGFkID0gJyAnOyBpZiAocHJlYyA9PSAwICYmIG51bWJlci5sb25nbG9uZyA9PSAwKSB7
IHN0cmluZyA9IHdvcmtlbmQ7IGlmIChiYXNlID09IDggJiYgYWx0KSAqLS1zdHJpbmcgPSAnMCc7
IH0gZWxzZSB7IHN0cmluZyA9IF9pdG9hIChudW1iZXIubG9uZ2xvbmcsIHdvcmtlbmQsIGJhc2Us
IHNwZWMgPT0gJ1gnKTsgaWYgKGdyb3VwICYmIGdyb3VwaW5nKSBzdHJpbmcgPSBncm91cF9udW1i
ZXIgKHN0cmluZywgd29ya2VuZCwgZ3JvdXBpbmcsIHRob3VzYW5kc19zZXApOyBpZiAodXNlX291
dGRpZ2l0cyAmJiBiYXNlID09IDEwKSBzdHJpbmcgPSBfaTE4bl9udW1iZXJfcmV3cml0ZSAoc3Ry
aW5nLCB3b3JrZW5kKTsgfSBudW1iZXIud29yZCA9IG51bWJlci5sb25nbG9uZyAhPSAwOyB9IGVs
c2UgeyBpZiAoKCZzcGVjc1tuc3BlY3NfZG9uZV0pID09ICgodm9pZCAqKTApKSB7IGlmIChpc19s
b25nKSBudW1iZXIud29yZCA9IF9fYnVpbHRpbl92YV9hcmcoYXAsdW5zaWduZWQgbG9uZyBpbnQp
OyBlbHNlIGlmIChpc19jaGFyKSBudW1iZXIud29yZCA9ICh1bnNpZ25lZCBjaGFyKSBfX2J1aWx0
aW5fdmFfYXJnKGFwLHVuc2lnbmVkIGludCk7IGVsc2UgaWYgKCFpc19zaG9ydCkgbnVtYmVyLndv
cmQgPSBfX2J1aWx0aW5fdmFfYXJnKGFwLHVuc2lnbmVkIGludCk7IGVsc2UgbnVtYmVyLndvcmQg
PSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2J1aWx0aW5fdmFfYXJnKGFwLHVuc2lnbmVkIGludCk7
IH0gZWxzZSBpZiAoaXNfbG9uZykgbnVtYmVyLndvcmQgPSBhcmdzX3ZhbHVlWygmc3BlY3NbbnNw
ZWNzX2RvbmVdKS0+ZGF0YV9hcmddLnBhX3VfbG9uZ19pbnQ7IGVsc2UgaWYgKGlzX2NoYXIpIG51
bWJlci53b3JkID0gKHVuc2lnbmVkIGNoYXIpIGFyZ3NfdmFsdWVbKCZzcGVjc1tuc3BlY3NfZG9u
ZV0pLT5kYXRhX2FyZ10ucGFfY2hhcjsgZWxzZSBpZiAoIWlzX3Nob3J0KSBudW1iZXIud29yZCA9
IGFyZ3NfdmFsdWVbKCZzcGVjc1tuc3BlY3NfZG9uZV0pLT5kYXRhX2FyZ10ucGFfdV9pbnQ7IGVs
c2UgbnVtYmVyLndvcmQgPSAodW5zaWduZWQgc2hvcnQgaW50KSBhcmdzX3ZhbHVlWygmc3BlY3Nb
bnNwZWNzX2RvbmVdKS0+ZGF0YV9hcmddLnBhX3Vfc2hvcnRfaW50OyBkbzJfbnVtYmVyOiBpZiAo
cHJlYyA8IDApIHByZWMgPSAxOyBlbHNlIHBhZCA9ICcgJzsgaWYgKHByZWMgPT0gMCAmJiBudW1i
ZXIud29yZCA9PSAwKSB7IHN0cmluZyA9IHdvcmtlbmQ7IGlmIChiYXNlID09IDggJiYgYWx0KSAq
LS1zdHJpbmcgPSAnMCc7IH0gZWxzZSB7IHN0cmluZyA9IF9pdG9hX3dvcmQgKG51bWJlci53b3Jk
LCB3b3JrZW5kLCBiYXNlLCBzcGVjID09ICdYJyk7IGlmIChncm91cCAmJiBncm91cGluZykgc3Ry
aW5nID0gZ3JvdXBfbnVtYmVyIChzdHJpbmcsIHdvcmtlbmQsIGdyb3VwaW5nLCB0aG91c2FuZHNf
c2VwKTsgaWYgKHVzZV9vdXRkaWdpdHMgJiYgYmFzZSA9PSAxMCkgc3RyaW5nID0gX2kxOG5fbnVt
YmVyX3Jld3JpdGUgKHN0cmluZywgd29ya2VuZCk7IH0gfSBpZiAocHJlYyA8PSB3b3JrZW5kIC0g
c3RyaW5nICYmIG51bWJlci53b3JkICE9IDAgJiYgYWx0ICYmIGJhc2UgPT0gOCkgKi0tc3RyaW5n
ID0gJzAnOyBwcmVjID0gKCgoMCk+KHByZWMgLSAod29ya2VuZCAtIHN0cmluZykpKT8oMCk6KHBy
ZWMgLSAod29ya2VuZCAtIHN0cmluZykpKTsgaWYgKCFsZWZ0KSB7IHdpZHRoIC09IHdvcmtlbmQg
LSBzdHJpbmcgKyBwcmVjOyBpZiAobnVtYmVyLndvcmQgIT0gMCAmJiBhbHQgJiYgYmFzZSA9PSAx
Nikgd2lkdGggLT0gMjsgaWYgKGlzX25lZ2F0aXZlIHx8IHNob3dzaWduIHx8IHNwYWNlKSAtLXdp
ZHRoOyBpZiAocGFkID09ICcgJykgeyBpZiAod2lkdGggPiAwKSBkb25lICs9IF9JT19wYWRuX2lu
dGVybmFsIChzLCAoJyAnKSwgd2lkdGgpOyB3aWR0aCA9IDA7IH0gaWYgKGlzX25lZ2F0aXZlKSBk
byB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRjID0gKCctJyk7IGlmICgoKChzKS0+X0lPX3dyaXRl
X3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNo
YXIpIChvdXRjKSkgOiAodW5zaWduZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChv
dXRjKSkpID09ICgtMSkpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25l
OyB9IHdoaWxlICgwKTsgZWxzZSBpZiAoc2hvd3NpZ24pIGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50
IG91dGMgPSAoJysnKTsgaWYgKCgoKHMpLT5fSU9fd3JpdGVfcHRyID49IChzKS0+X0lPX3dyaXRl
X2VuZCkgPyBfX292ZXJmbG93IChzLCAodW5zaWduZWQgY2hhcikgKG91dGMpKSA6ICh1bnNpZ25l
ZCBjaGFyKSAoKihzKS0+X0lPX3dyaXRlX3B0cisrID0gKG91dGMpKSkgPT0gKC0xKSkgeyBkb25l
ID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZWxzZSArK2RvbmU7IH0gd2hpbGUgKDApOyBlbHNlIGlm
IChzcGFjZSkgZG8geyByZWdpc3RlciBjb25zdCBpbnQgb3V0YyA9ICgnICcpOyBpZiAoKCgocykt
Pl9JT193cml0ZV9wdHIgPj0gKHMpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHMsICh1
bnNpZ25lZCBjaGFyKSAob3V0YykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHMpLT5fSU9fd3JpdGVf
cHRyKysgPSAob3V0YykpKSA9PSAoLTEpKSB7IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSBl
bHNlICsrZG9uZTsgfSB3aGlsZSAoMCk7IGlmIChudW1iZXIud29yZCAhPSAwICYmIGFsdCAmJiBi
YXNlID09IDE2KSB7IGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91dGMgPSAoJzAnKTsgaWYgKCgo
KHMpLT5fSU9fd3JpdGVfcHRyID49IChzKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChz
LCAodW5zaWduZWQgY2hhcikgKG91dGMpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzKS0+X0lPX3dy
aXRlX3B0cisrID0gKG91dGMpKSkgPT0gKC0xKSkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7
IH0gZWxzZSArK2RvbmU7IH0gd2hpbGUgKDApOyBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRj
ID0gKHNwZWMpOyBpZiAoKCgocyktPl9JT193cml0ZV9wdHIgPj0gKHMpLT5fSU9fd3JpdGVfZW5k
KSA/IF9fb3ZlcmZsb3cgKHMsICh1bnNpZ25lZCBjaGFyKSAob3V0YykpIDogKHVuc2lnbmVkIGNo
YXIpICgqKHMpLT5fSU9fd3JpdGVfcHRyKysgPSAob3V0YykpKSA9PSAoLTEpKSB7IGRvbmUgPSAt
MTsgZ290byBhbGxfZG9uZTsgfSBlbHNlICsrZG9uZTsgfSB3aGlsZSAoMCk7IH0gd2lkdGggKz0g
cHJlYzsgaWYgKHdpZHRoID4gMCkgZG9uZSArPSBfSU9fcGFkbl9pbnRlcm5hbCAocywgKCcwJyks
IHdpZHRoKTsgZG8geyBpZiAoKHNpemVfdCkgKCgqKHN0cnVjdCBfSU9fanVtcF90ICoqKSAoKHZv
aWQgKikgJigoc3RydWN0IF9JT19GSUxFX3BsdXMgKikgKChzKSkpLT52dGFibGUgKyAoKHMpKS0+
X3Z0YWJsZV9vZmZzZXQpKS0+X194c3B1dG4pICgocyksICgoc3RyaW5nKSksICgod29ya2VuZCAt
IHN0cmluZykpKSAhPSAoc2l6ZV90KSAod29ya2VuZCAtIHN0cmluZykpIHsgZG9uZSA9IC0xOyBn
b3RvIGFsbF9kb25lOyB9IGRvbmUgKz0gKHdvcmtlbmQgLSBzdHJpbmcpOyB9IHdoaWxlICgwKTsg
YnJlYWs7IH0gZWxzZSB7IGlmIChpc19uZWdhdGl2ZSkgeyBkbyB7IHJlZ2lzdGVyIGNvbnN0IGlu
dCBvdXRjID0gKCctJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0
ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWdu
ZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9u
ZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsgLS13aWR0
aDsgfSBlbHNlIGlmIChzaG93c2lnbikgeyBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRjID0g
KCcrJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQpID8g
X19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWduZWQgY2hhcikg
KCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9uZSA9IC0xOyBn
b3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsgLS13aWR0aDsgfSBlbHNl
IGlmIChzcGFjZSkgeyBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRjID0gKCcgJyk7IGlmICgo
KChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAo
cywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWduZWQgY2hhcikgKCoocyktPl9JT193
cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25l
OyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsgLS13aWR0aDsgfSBpZiAobnVtYmVyLndvcmQg
IT0gMCAmJiBhbHQgJiYgYmFzZSA9PSAxNikgeyBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRj
ID0gKCcwJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQp
ID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWduZWQgY2hh
cikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9uZSA9IC0x
OyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsgZG8geyByZWdpc3Rl
ciBjb25zdCBpbnQgb3V0YyA9IChzcGVjKTsgaWYgKCgoKHMpLT5fSU9fd3JpdGVfcHRyID49IChz
KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChzLCAodW5zaWduZWQgY2hhcikgKG91dGMp
KSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzKS0+X0lPX3dyaXRlX3B0cisrID0gKG91dGMpKSkgPT0g
KC0xKSkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZWxzZSArK2RvbmU7IH0gd2hpbGUg
KDApOyB3aWR0aCAtPSAyOyB9IHdpZHRoIC09IHdvcmtlbmQgLSBzdHJpbmcgKyBwcmVjOyBpZiAo
cHJlYyA+IDApIHsgaW50IHRlbXAgPSB3aWR0aDsgd2lkdGggPSBwcmVjOyBpZiAod2lkdGggPiAw
KSBkb25lICs9IF9JT19wYWRuX2ludGVybmFsIChzLCAoJzAnKSwgd2lkdGgpOzsgd2lkdGggPSB0
ZW1wOyB9IGRvIHsgaWYgKChzaXplX3QpICgoKihzdHJ1Y3QgX0lPX2p1bXBfdCAqKikgKCh2b2lk
ICopICYoKHN0cnVjdCBfSU9fRklMRV9wbHVzICopICgocykpKS0+dnRhYmxlICsgKChzKSktPl92
dGFibGVfb2Zmc2V0KSktPl9feHNwdXRuKSAoKHMpLCAoKHN0cmluZykpLCAoKHdvcmtlbmQgLSBz
dHJpbmcpKSkgIT0gKHNpemVfdCkgKHdvcmtlbmQgLSBzdHJpbmcpKSB7IGRvbmUgPSAtMTsgZ290
byBhbGxfZG9uZTsgfSBkb25lICs9ICh3b3JrZW5kIC0gc3RyaW5nKTsgfSB3aGlsZSAoMCk7IGlm
ICh3aWR0aCA+IDApIGRvbmUgKz0gX0lPX3BhZG5faW50ZXJuYWwgKHMsICgnICcpLCB3aWR0aCk7
IGJyZWFrOyB9IGRvMl9mb3JtX2Zsb2F0OiB7IGNvbnN0IHZvaWQgKnB0cjsgaW50IGZ1bmN0aW9u
X2RvbmU7IGlmICgoJnNwZWNzW25zcGVjc19kb25lXSkgPT0gKCh2b2lkICopMCkpIHsgc3RydWN0
IHByaW50Zl9pbmZvIGluZm8gPSB7IHByZWM6IHByZWMsIHdpZHRoOiB3aWR0aCwgc3BlYzogc3Bl
YywgaXNfbG9uZ19kb3VibGU6IGlzX2xvbmdfZG91YmxlLCBpc19zaG9ydDogaXNfc2hvcnQsIGlz
X2xvbmc6IGlzX2xvbmcsIGFsdDogYWx0LCBzcGFjZTogc3BhY2UsIGxlZnQ6IGxlZnQsIHNob3dz
aWduOiBzaG93c2lnbiwgZ3JvdXA6IGdyb3VwLCBwYWQ6IHBhZCwgZXh0cmE6IDAsIHdpZGU6IHNp
emVvZiAoY2hhcikgIT0gMSB9OyBpZiAoaXNfbG9uZ19kb3VibGUpIHRoZV9hcmcucGFfbG9uZ19k
b3VibGUgPSBfX2J1aWx0aW5fdmFfYXJnKGFwLGxvbmcgZG91YmxlKTsgZWxzZSB0aGVfYXJnLnBh
X2RvdWJsZSA9IF9fYnVpbHRpbl92YV9hcmcoYXAsZG91YmxlKTsgcHRyID0gKGNvbnN0IHZvaWQg
KikgJnRoZV9hcmc7IGZ1bmN0aW9uX2RvbmUgPSBfX3ByaW50Zl9mcCAocywgJmluZm8sICZwdHIp
OyB9IGVsc2UgeyBwdHIgPSAoY29uc3Qgdm9pZCAqKSAmYXJnc192YWx1ZVsoJnNwZWNzW25zcGVj
c19kb25lXSktPmRhdGFfYXJnXTsgZnVuY3Rpb25fZG9uZSA9IF9fcHJpbnRmX2ZwIChzLCAmKCZz
cGVjc1tuc3BlY3NfZG9uZV0pLT5pbmZvLCAmcHRyKTsgfSBpZiAoZnVuY3Rpb25fZG9uZSA8IDAp
IHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGRvbmUgKz0gZnVuY3Rpb25fZG9uZTsgfSBi
cmVhazsgZG8yX2Zvcm1fZmxvYXRoZXg6IHsgY29uc3Qgdm9pZCAqcHRyOyBpbnQgZnVuY3Rpb25f
ZG9uZTsgaWYgKCgmc3BlY3NbbnNwZWNzX2RvbmVdKSA9PSAoKHZvaWQgKikwKSkgeyBzdHJ1Y3Qg
cHJpbnRmX2luZm8gaW5mbyA9IHsgcHJlYzogcHJlYywgd2lkdGg6IHdpZHRoLCBzcGVjOiBzcGVj
LCBpc19sb25nX2RvdWJsZTogaXNfbG9uZ19kb3VibGUsIGlzX3Nob3J0OiBpc19zaG9ydCwgaXNf
bG9uZzogaXNfbG9uZywgYWx0OiBhbHQsIHNwYWNlOiBzcGFjZSwgbGVmdDogbGVmdCwgc2hvd3Np
Z246IHNob3dzaWduLCBncm91cDogZ3JvdXAsIHBhZDogcGFkLCBleHRyYTogMCwgd2lkZTogc2l6
ZW9mIChjaGFyKSAhPSAxIH07IGlmIChpc19sb25nX2RvdWJsZSkgdGhlX2FyZy5wYV9sb25nX2Rv
dWJsZSA9IF9fYnVpbHRpbl92YV9hcmcoYXAsbG9uZyBkb3VibGUpOyBlbHNlIHRoZV9hcmcucGFf
ZG91YmxlID0gX19idWlsdGluX3ZhX2FyZyhhcCxkb3VibGUpOyBwdHIgPSAoY29uc3Qgdm9pZCAq
KSAmdGhlX2FyZzsgZnVuY3Rpb25fZG9uZSA9IF9fcHJpbnRmX2ZwaGV4IChzLCAmaW5mbywgJnB0
cik7IH0gZWxzZSB7IHB0ciA9IChjb25zdCB2b2lkICopICZhcmdzX3ZhbHVlWygmc3BlY3NbbnNw
ZWNzX2RvbmVdKS0+ZGF0YV9hcmddOyBmdW5jdGlvbl9kb25lID0gX19wcmludGZfZnBoZXggKHMs
ICYoJnNwZWNzW25zcGVjc19kb25lXSktPmluZm8sICZwdHIpOyB9IGlmIChmdW5jdGlvbl9kb25l
IDwgMCkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZG9uZSArPSBmdW5jdGlvbl9kb25l
OyB9IGJyZWFrOyBkbzJfZm9ybV9wb2ludGVyOiB7IGNvbnN0IHZvaWQgKnB0cjsgaWYgKCgmc3Bl
Y3NbbnNwZWNzX2RvbmVdKSA9PSAoKHZvaWQgKikwKSkgcHRyID0gX19idWlsdGluX3ZhX2FyZyhh
cCx2b2lkICopOyBlbHNlIHB0ciA9IGFyZ3NfdmFsdWVbKCZzcGVjc1tuc3BlY3NfZG9uZV0pLT5k
YXRhX2FyZ10ucGFfcG9pbnRlcjsgaWYgKHB0ciAhPSAoKHZvaWQgKikwKSkgeyBiYXNlID0gMTY7
IG51bWJlci53b3JkID0gKHVuc2lnbmVkIGxvbmcgaW50KSBwdHI7IGlzX25lZ2F0aXZlID0gMDsg
YWx0ID0gMTsgZ3JvdXAgPSAwOyBzcGVjID0gJ3gnOyBnb3RvIGRvMl9udW1iZXI7IH0gZWxzZSB7
IHN0cmluZyA9IChjaGFyICopICIobmlsKSI7IGlmIChwcmVjIDwgNSkgcHJlYyA9IDU7IGlzX2xv
bmcgPSAwOyBnb3RvIGRvMl9wcmludF9zdHJpbmc7IH0gfSBkbzJfZm9ybV9udW1iZXI6IGlmICgo
JnNwZWNzW25zcGVjc19kb25lXSkgPT0gKCh2b2lkICopMCkpIHsgaWYgKDApICoobG9uZyBsb25n
IGludCAqKSBfX2J1aWx0aW5fdmFfYXJnKGFwLHZvaWQgKikgPSBkb25lOyBlbHNlIGlmIChpc19s
b25nKSAqKGxvbmcgaW50ICopIF9fYnVpbHRpbl92YV9hcmcoYXAsdm9pZCAqKSA9IGRvbmU7IGVs
c2UgaWYgKGlzX2NoYXIpICooY2hhciAqKSBfX2J1aWx0aW5fdmFfYXJnKGFwLHZvaWQgKikgPSBk
b25lOyBlbHNlIGlmICghaXNfc2hvcnQpICooaW50ICopIF9fYnVpbHRpbl92YV9hcmcoYXAsdm9p
ZCAqKSA9IGRvbmU7IGVsc2UgKihzaG9ydCBpbnQgKikgX19idWlsdGluX3ZhX2FyZyhhcCx2b2lk
ICopID0gZG9uZTsgfSBlbHNlIGlmICgwKSAqKGxvbmcgbG9uZyBpbnQgKikgYXJnc192YWx1ZVso
JnNwZWNzW25zcGVjc19kb25lXSktPmRhdGFfYXJnXS5wYV9wb2ludGVyID0gZG9uZTsgZWxzZSBp
ZiAoaXNfbG9uZykgKihsb25nIGludCAqKSBhcmdzX3ZhbHVlWygmc3BlY3NbbnNwZWNzX2RvbmVd
KS0+ZGF0YV9hcmddLnBhX3BvaW50ZXIgPSBkb25lOyBlbHNlIGlmIChpc19jaGFyKSAqKGNoYXIg
KikgYXJnc192YWx1ZVsoJnNwZWNzW25zcGVjc19kb25lXSktPmRhdGFfYXJnXS5wYV9wb2ludGVy
ID0gZG9uZTsgZWxzZSBpZiAoIWlzX3Nob3J0KSAqKGludCAqKSBhcmdzX3ZhbHVlWygmc3BlY3Nb
bnNwZWNzX2RvbmVdKS0+ZGF0YV9hcmddLnBhX3BvaW50ZXIgPSBkb25lOyBlbHNlICooc2hvcnQg
aW50ICopIGFyZ3NfdmFsdWVbKCZzcGVjc1tuc3BlY3NfZG9uZV0pLT5kYXRhX2FyZ10ucGFfcG9p
bnRlciA9IGRvbmU7IGJyZWFrOyBkbzJfZm9ybV9zdHJlcnJvcjogc3RyaW5nID0gKGNoYXIgKikg
X19zdHJlcnJvcl9yIChzYXZlX2Vycm5vLCAoY2hhciAqKSB3b3JrX2J1ZmZlciwgc2l6ZW9mIHdv
cmtfYnVmZmVyKTsgaXNfbG9uZyA9IDA7IGdvdG8gZG8yX3ByaW50X3N0cmluZzsKICAgICAgICAg
ICAgZG8yX2Zvcm1fY2hhcmFjdGVyOiBpZiAoaXNfbG9uZykgZ290byBkbzJfZm9ybV93Y2hhcmFj
dGVyOyAtLXdpZHRoOyBpZiAoIWxlZnQpIGlmICh3aWR0aCA+IDApIGRvbmUgKz0gX0lPX3BhZG5f
aW50ZXJuYWwgKHMsICgnICcpLCB3aWR0aCk7IGlmICgoJnNwZWNzW25zcGVjc19kb25lXSkgPT0g
KCh2b2lkICopMCkpIGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91dGMgPSAoKHVuc2lnbmVkIGNo
YXIpIF9fYnVpbHRpbl92YV9hcmcoYXAsaW50KSk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+
PSAocyktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChv
dXRjKSkgOiAodW5zaWduZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkp
ID09ICgtMSkpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdo
aWxlICgwKTsgZWxzZSBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRjID0gKCh1bnNpZ25lZCBj
aGFyKSBhcmdzX3ZhbHVlWygmc3BlY3NbbnNwZWNzX2RvbmVdKS0+ZGF0YV9hcmddLnBhX2NoYXIp
OyBpZiAoKCgocyktPl9JT193cml0ZV9wdHIgPj0gKHMpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3Zl
cmZsb3cgKHMsICh1bnNpZ25lZCBjaGFyKSAob3V0YykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHMp
LT5fSU9fd3JpdGVfcHRyKysgPSAob3V0YykpKSA9PSAoLTEpKSB7IGRvbmUgPSAtMTsgZ290byBh
bGxfZG9uZTsgfSBlbHNlICsrZG9uZTsgfSB3aGlsZSAoMCk7IGlmIChsZWZ0KSBpZiAod2lkdGgg
PiAwKSBkb25lICs9IF9JT19wYWRuX2ludGVybmFsIChzLCAoJyAnKSwgd2lkdGgpOyBicmVhazsg
ZG8yX2Zvcm1fd2NoYXJhY3RlcjogeyBjaGFyIGJ1ZlsoKCgoKF9fbG9jYWxlX3QpIChfX2xpYmNf
aW50ZXJuYWxfdHNkX2dldCAhPSAoKHZvaWQgKikwKSA/IF9fbGliY19pbnRlcm5hbF90c2RfZ2V0
IChfTElCQ19UU0RfS0VZX0xPQ0FMRSkgOiBfX2xpYmNfdHNkX0xPQ0FMRV9kYXRhKSktPl9fbG9j
YWxlc1tfX0xDX0NUWVBFXSktPnZhbHVlc1soKGludCkgKF9OTF9DVFlQRV9NQl9DVVJfTUFYKSAm
IDB4ZmZmZildLndvcmQpKV07IG1ic3RhdGVfdCBtYnN0YXRlOyBzaXplX3QgbGVuOyAoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHNpemVvZiAobWJzdGF0ZV90KSkgJiYgKHNp
emVvZiAobWJzdGF0ZV90KSkgPD0gMTYgPyAoKHNpemVvZiAobWJzdGF0ZV90KSkgPT0gMSA/ICh7
IHZvaWQgKl9fcyA9ICgmbWJzdGF0ZSk7ICooKF9fdWludDhfdCAqKSBfX3MpID0gKF9fdWludDhf
dCkgJ1wwJzsgX19zOyB9KSA6ICh7IHZvaWQgKl9fcyA9ICgmbWJzdGF0ZSk7IHVuaW9uIHsgdW5z
aWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsgdW5zaWduZWQgY2hhciBf
X3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBfX2MgPSAoX191aW50OF90KSAoJ1wwJyk7IHN3
aXRjaCAoKHVuc2lnbmVkIGludCkgKHNpemVvZiAobWJzdGF0ZV90KSkpIHsgY2FzZSAxNTogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDc6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNl
IDM6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IF9fdSA9
IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQg
Y2hhcikgX19jOyBicmVhazsgY2FzZSAxNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsg
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTA6IF9fdS0+X191
aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr
IDQpOyBjYXNlIDY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAodW5zaWduZWQg
c2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkgPSBfX2Mg
KiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2Fz
ZSA5OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxOiBfX3UtPl9fdWMg
PSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNjogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2Ug
MTI6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOyBjYXNlIDg6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCdcMCcpICYmICgnXDAnKSA9PSAnXDAnID8gKHsgdm9pZCAqX19zID0gKCZt
YnN0YXRlKTsgX19idWlsdGluX21lbXNldCAoX19zLCAnXDAnLCBzaXplb2YgKG1ic3RhdGVfdCkp
OyBfX3M7IH0pIDogbWVtc2V0ICgmbWJzdGF0ZSwgJ1wwJywgc2l6ZW9mIChtYnN0YXRlX3QpKSkp
KTsgbGVuID0gX193Y3J0b21iIChidWYsICgoJnNwZWNzW25zcGVjc19kb25lXSkgPT0gKCh2b2lk
ICopMCkgPyBfX2J1aWx0aW5fdmFfYXJnKGFwLHdjaGFyX3QpIDogYXJnc192YWx1ZVsoJnNwZWNz
W25zcGVjc19kb25lXSktPmRhdGFfYXJnXS5wYV93Y2hhciksICZtYnN0YXRlKTsgaWYgKGxlbiA9
PSAoc2l6ZV90KSAtMSkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gd2lkdGggLT0gbGVu
OyBpZiAoIWxlZnQpIGlmICh3aWR0aCA+IDApIGRvbmUgKz0gX0lPX3BhZG5faW50ZXJuYWwgKHMs
ICgnICcpLCB3aWR0aCk7IGRvIHsgaWYgKChzaXplX3QpICgoKihzdHJ1Y3QgX0lPX2p1bXBfdCAq
KikgKCh2b2lkICopICYoKHN0cnVjdCBfSU9fRklMRV9wbHVzICopICgocykpKS0+dnRhYmxlICsg
KChzKSktPl92dGFibGVfb2Zmc2V0KSktPl9feHNwdXRuKSAoKHMpLCAoKGJ1ZikpLCAoKGxlbikp
KSAhPSAoc2l6ZV90KSAobGVuKSkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZG9uZSAr
PSAobGVuKTsgfSB3aGlsZSAoMCk7IGlmIChsZWZ0KSBpZiAod2lkdGggPiAwKSBkb25lICs9IF9J
T19wYWRuX2ludGVybmFsIChzLCAoJyAnKSwgd2lkdGgpOyB9IGJyZWFrOyBkbzJfZm9ybV9zdHJp
bmc6IHsgc2l6ZV90IGxlbjsgaW50IHN0cmluZ19tYWxsb2NlZDsgaWYgKCgmc3BlY3NbbnNwZWNz
X2RvbmVdKSA9PSAoKHZvaWQgKikwKSkgc3RyaW5nID0gKGNoYXIgKikgX19idWlsdGluX3ZhX2Fy
ZyhhcCxjb25zdCBjaGFyICopOyBlbHNlIHN0cmluZyA9IChjaGFyICopIGFyZ3NfdmFsdWVbKCZz
cGVjc1tuc3BlY3NfZG9uZV0pLT5kYXRhX2FyZ10ucGFfc3RyaW5nOyBkbzJfcHJpbnRfc3RyaW5n
OiBzdHJpbmdfbWFsbG9jZWQgPSAwOyBpZiAoc3RyaW5nID09ICgodm9pZCAqKTApKSB7IGlmIChw
cmVjID09IC0xIHx8IHByZWMgPj0gKGludCkgc2l6ZW9mIChudWxsKSAtIDEpIHsgc3RyaW5nID0g
KGNoYXIgKikgbnVsbDsgbGVuID0gc2l6ZW9mIChudWxsKSAtIDE7IH0gZWxzZSB7IHN0cmluZyA9
IChjaGFyICopICIiOyBsZW4gPSAwOyB9IH0gZWxzZSBpZiAoIWlzX2xvbmcgJiYgc3BlYyAhPSAn
UycpIHsgaWYgKHByZWMgIT0gLTEpIHsgaWYgKCgoKChfX2xvY2FsZV90KSAoX19saWJjX2ludGVy
bmFsX3RzZF9nZXQgIT0gKCh2b2lkICopMCkgPyBfX2xpYmNfaW50ZXJuYWxfdHNkX2dldCAoX0xJ
QkNfVFNEX0tFWV9MT0NBTEUpIDogX19saWJjX3RzZF9MT0NBTEVfZGF0YSkpLT5fX2xvY2FsZXNb
X19MQ19DVFlQRV0pLT52YWx1ZXNbKChpbnQpIChfTkxfQ1RZUEVfTUJfQ1VSX01BWCkgJiAweGZm
ZmYpXS53b3JkKSA9PSAxKSBsZW4gPSBfX3N0cm5sZW4gKHN0cmluZywgcHJlYyk7IGVsc2UgeyB3
Y2hhcl90IGlnbm9yZVtwcmVjXTsgY29uc3QgY2hhciAqc3RyMiA9IHN0cmluZzsgbWJzdGF0ZV90
IHBzOyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHNpemVvZiAocHMpKSAm
JiAoc2l6ZW9mIChwcykpIDw9IDE2ID8gKChzaXplb2YgKHBzKSkgPT0gMSA/ICh7IHZvaWQgKl9f
cyA9ICgmcHMpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpICdcMCc7IF9fczsg
fSkgOiAoeyB2b2lkICpfX3MgPSAoJnBzKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5z
aWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsg
X191aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgnXDAnKTsgc3dpdGNoICgodW5zaWduZWQgaW50
KSAoc2l6ZW9mIChwcykpKSB7IGNhc2UgMTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDExOiBfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSA3OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVu
c2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVk
IHNob3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTQ6
IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDQpOyBjYXNlIDEwOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBf
X2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsg
Y2FzZSAyOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBi
cmVhazsgY2FzZSAxMzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgOTogX191LT5fX3VpID0gX19jICogMHgw
MTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNTog
X191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJl
YWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEyOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAx
MDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA4OiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6
IGJyZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgnXDAnKSAmJiAoJ1ww
JykgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9ICgmcHMpOyBfX2J1aWx0aW5fbWVtc2V0IChfX3Ms
ICdcMCcsIHNpemVvZiAocHMpKTsgX19zOyB9KSA6IG1lbXNldCAoJnBzLCAnXDAnLCBzaXplb2Yg
KHBzKSkpKSk7IGlmIChfX21ic25ydG93Y3MgKGlnbm9yZSwgJnN0cjIsIHByZWMsIHByZWMsICZw
cykgPT0gKHNpemVfdCkgLTEpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGlmIChzdHIy
ID09ICgodm9pZCAqKTApKSBsZW4gPSBzdHJsZW4gKHN0cmluZyk7IGVsc2UgbGVuID0gc3RyMiAt
IHN0cmluZyAtIChwcy5fX2NvdW50KTsgfSB9IGVsc2UgbGVuID0gc3RybGVuIChzdHJpbmcpOyB9
IGVsc2UgeyBjb25zdCB3Y2hhcl90ICpzMiA9IChjb25zdCB3Y2hhcl90ICopIHN0cmluZzsgbWJz
dGF0ZV90IG1ic3RhdGU7IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6
ZW9mIChtYnN0YXRlX3QpKSAmJiAoc2l6ZW9mIChtYnN0YXRlX3QpKSA8PSAxNiA/ICgoc2l6ZW9m
IChtYnN0YXRlX3QpKSA9PSAxID8gKHsgdm9pZCAqX19zID0gKCZtYnN0YXRlKTsgKigoX191aW50
OF90ICopIF9fcykgPSAoX191aW50OF90KSAnXDAnOyBfX3M7IH0pIDogKHsgdm9pZCAqX19zID0g
KCZtYnN0YXRlKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hvcnQgaW50
IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191aW50OF90IF9fYyA9
IChfX3VpbnQ4X3QpICgnXDAnKTsgc3dpdGNoICgodW5zaWduZWQgaW50KSAoc2l6ZW9mIChtYnN0
YXRlX3QpKSkgeyBjYXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNh
c2UgNzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgNCk7IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBp
bnQpIF9fYyAqIDB4MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7
IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE0OiBfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNjogX191LT5fX3VpID0gX19jICogMHgw
MTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMjog
X191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgYnJlYWs7IGNh
c2UgMTM6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDU6IF9fdS0+X191
aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr
IDQpOyBjYXNlIDE6IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNl
IDE2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsg
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgODogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7IGNhc2UgNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgY2FzZSAwOiBicmVhazsg
fSBfX3M7IH0pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoJ1wwJykgJiYgKCdcMCcpID09ICdc
MCcgPyAoeyB2b2lkICpfX3MgPSAoJm1ic3RhdGUpOyBfX2J1aWx0aW5fbWVtc2V0IChfX3MsICdc
MCcsIHNpemVvZiAobWJzdGF0ZV90KSk7IF9fczsgfSkgOiBtZW1zZXQgKCZtYnN0YXRlLCAnXDAn
LCBzaXplb2YgKG1ic3RhdGVfdCkpKSkpOyBpZiAocHJlYyA+PSAwKSB7IGlmIChfX2xpYmNfdXNl
X2FsbG9jYSAocHJlYykpIHN0cmluZyA9IChjaGFyICopIF9fYnVpbHRpbl9hbGxvY2EgKHByZWMp
OyBlbHNlIGlmICgoc3RyaW5nID0gKGNoYXIgKikgbWFsbG9jIChwcmVjKSkgPT0gKCh2b2lkICop
MCkpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2Ugc3RyaW5nX21hbGxvY2VkID0g
MTsgbGVuID0gX193Y3NydG9tYnMgKHN0cmluZywgJnMyLCBwcmVjLCAmbWJzdGF0ZSk7IH0gZWxz
ZSB7IGxlbiA9IF9fd2NzcnRvbWJzICgoKHZvaWQgKikwKSwgJnMyLCAwLCAmbWJzdGF0ZSk7IGlm
IChsZW4gIT0gKHNpemVfdCkgLTEpIHsgKCh2b2lkKSAoMCkpOyBzMiA9IChjb25zdCB3Y2hhcl90
ICopIHN0cmluZzsgaWYgKF9fbGliY191c2VfYWxsb2NhIChsZW4gKyAxKSkgc3RyaW5nID0gKGNo
YXIgKikgX19idWlsdGluX2FsbG9jYSAobGVuICsgMSk7IGVsc2UgaWYgKChzdHJpbmcgPSAoY2hh
ciAqKSBtYWxsb2MgKGxlbiArIDEpKSA9PSAoKHZvaWQgKikwKSkgeyBkb25lID0gLTE7IGdvdG8g
YWxsX2RvbmU7IH0gZWxzZSBzdHJpbmdfbWFsbG9jZWQgPSAxOyAodm9pZCkgX193Y3NydG9tYnMg
KHN0cmluZywgJnMyLCBsZW4gKyAxLCAmbWJzdGF0ZSk7IH0gfSBpZiAobGVuID09IChzaXplX3Qp
IC0xKSB7IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSB9IGlmICgod2lkdGggLT0gbGVuKSA8
IDApIHsgZG8geyBpZiAoKHNpemVfdCkgKCgqKHN0cnVjdCBfSU9fanVtcF90ICoqKSAoKHZvaWQg
KikgJigoc3RydWN0IF9JT19GSUxFX3BsdXMgKikgKChzKSkpLT52dGFibGUgKyAoKHMpKS0+X3Z0
YWJsZV9vZmZzZXQpKS0+X194c3B1dG4pICgocyksICgoc3RyaW5nKSksICgobGVuKSkpICE9IChz
aXplX3QpIChsZW4pKSB7IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSBkb25lICs9IChsZW4p
OyB9IHdoaWxlICgwKTsgYnJlYWs7IH0gaWYgKCFsZWZ0KSBpZiAod2lkdGggPiAwKSBkb25lICs9
IF9JT19wYWRuX2ludGVybmFsIChzLCAoJyAnKSwgd2lkdGgpOyBkbyB7IGlmICgoc2l6ZV90KSAo
KCooc3RydWN0IF9JT19qdW1wX3QgKiopICgodm9pZCAqKSAmKChzdHJ1Y3QgX0lPX0ZJTEVfcGx1
cyAqKSAoKHMpKSktPnZ0YWJsZSArICgocykpLT5fdnRhYmxlX29mZnNldCkpLT5fX3hzcHV0bikg
KChzKSwgKChzdHJpbmcpKSwgKChsZW4pKSkgIT0gKHNpemVfdCkgKGxlbikpIHsgZG9uZSA9IC0x
OyBnb3RvIGFsbF9kb25lOyB9IGRvbmUgKz0gKGxlbik7IH0gd2hpbGUgKDApOyBpZiAobGVmdCkg
aWYgKHdpZHRoID4gMCkgZG9uZSArPSBfSU9fcGFkbl9pbnRlcm5hbCAocywgKCcgJyksIHdpZHRo
KTsgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHN0cmluZ19tYWxsb2NlZCwgMCkpIGZyZWUgKHN0cmlu
Zyk7IH0gYnJlYWs7OwoKICAgICAgICAgIGRvMl9mb3JtX3Vua25vd246CiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICBleHRlcm4gcHJpbnRmX2Z1bmN0aW9uICoqX19wcmludGZfZnVuY3Rpb25f
dGFibGU7CiAgICAgICAgICAgICAgaW50IGZ1bmN0aW9uX2RvbmU7CiAgICAgICAgICAgICAgcHJp
bnRmX2Z1bmN0aW9uICpmdW5jdGlvbjsKICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKICAg
ICAgICAgICAgICBjb25zdCB2b2lkICoqcHRyOwoKICAgICAgICAgICAgICBmdW5jdGlvbiA9CiAg
ICAgICAgICAgICAgICAoX19wcmludGZfZnVuY3Rpb25fdGFibGUgPT0gKCh2b2lkICopMCkgPyAo
KHZvaWQgKikwKSA6CiAgICAgICAgICAgICAgICAgX19wcmludGZfZnVuY3Rpb25fdGFibGVbc3Bl
Y3NbbnNwZWNzX2RvbmVdLmluZm8uc3BlY10pOwoKICAgICAgICAgICAgICBpZiAoZnVuY3Rpb24g
PT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICBmdW5jdGlvbiA9ICZwcmludGZfdW5rbm93
bjsKCiAgICAgICAgICAgICAgcHRyID0gX19idWlsdGluX2FsbG9jYSAoc3BlY3NbbnNwZWNzX2Rv
bmVdLm5kYXRhX2FyZ3MgKiBzaXplb2YgKGNvbnN0IHZvaWQgKikpOwoKCgogICAgICAgICAgICAg
IGZvciAoaSA9IDA7IGkgPCBzcGVjc1tuc3BlY3NfZG9uZV0ubmRhdGFfYXJnczsgKytpKQogICAg
ICAgICAgICAgICAgcHRyW2ldID0gJmFyZ3NfdmFsdWVbc3BlY3NbbnNwZWNzX2RvbmVdLmRhdGFf
YXJnICsgaV07CgoKICAgICAgICAgICAgICBmdW5jdGlvbl9kb25lID0gKCpmdW5jdGlvbikgKHMs
ICZzcGVjc1tuc3BlY3NfZG9uZV0uaW5mbywgcHRyKTsKCgoKICAgICAgICAgICAgICBpZiAoZnVu
Y3Rpb25fZG9uZSA8IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGRvbmUg
PSAtMTsKICAgICAgICAgICAgICAgICAgZ290byBhbGxfZG9uZTsKICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgZG9uZSArPSBmdW5jdGlvbl9kb25lOwogICAgICAgICAgICB9CiAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgfQoKICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAo
d29ya3N0YXJ0ICE9ICgodm9pZCAqKTApLCAwKSkKICAgICAgICAgIGZyZWUgKHdvcmtzdGFydCk7
CiAgICAgICAgd29ya3N0YXJ0ID0gKCh2b2lkICopMCk7CgoKICAgICAgICBkbyB7IGlmICgoc2l6
ZV90KSAoKCooc3RydWN0IF9JT19qdW1wX3QgKiopICgodm9pZCAqKSAmKChzdHJ1Y3QgX0lPX0ZJ
TEVfcGx1cyAqKSAoKHMpKSktPnZ0YWJsZSArICgocykpLT5fdnRhYmxlX29mZnNldCkpLT5fX3hz
cHV0bikgKChzKSwgKChzcGVjc1tuc3BlY3NfZG9uZV0uZW5kX29mX2ZtdCkpLCAoKHNwZWNzW25z
cGVjc19kb25lXS5uZXh0X2ZtdCAtIHNwZWNzW25zcGVjc19kb25lXS5lbmRfb2ZfZm10KSkpICE9
IChzaXplX3QpIChzcGVjc1tuc3BlY3NfZG9uZV0ubmV4dF9mbXQgLSBzcGVjc1tuc3BlY3NfZG9u
ZV0uZW5kX29mX2ZtdCkpIHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGRvbmUgKz0gKHNw
ZWNzW25zcGVjc19kb25lXS5uZXh0X2ZtdCAtIHNwZWNzW25zcGVjc19kb25lXS5lbmRfb2ZfZm10
KTsgfSB3aGlsZSAoMCk7CgoKICAgICAgfQogIH0KCmFsbF9kb25lOgogIGlmIChfX2J1aWx0aW5f
ZXhwZWN0ICh3b3Jrc3RhcnQgIT0gKCh2b2lkICopMCksIDApKQogICAgZnJlZSAod29ya3N0YXJ0
KTsKCgogIDsKCgoKICBpZiAoX2F2YWlsKSB7IF9wdGhyZWFkX2NsZWFudXBfcG9wX3Jlc3RvcmUg
KCZfYnVmZmVyLCAoMCkpOyB9IH07CgogIHJldHVybiBkb25lOwp9CgoKCnN0YXRpYyBpbnQKcHJp
bnRmX3Vua25vd24gKF9JT19GSUxFICpzLCBjb25zdCBzdHJ1Y3QgcHJpbnRmX2luZm8gKmluZm8s
CiAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb25zdCAqYXJncykKCnsKICBpbnQgZG9uZSA9
IDA7CiAgY2hhciB3b3JrX2J1ZmZlclsoKChpbmZvLT53aWR0aCk+KGluZm8tPnNwZWMpKT8oaW5m
by0+d2lkdGgpOihpbmZvLT5zcGVjKSkgKyAzMl07CiAgY2hhciAqY29uc3Qgd29ya2VuZAogICAg
PSAmd29ya19idWZmZXJbc2l6ZW9mICh3b3JrX2J1ZmZlcikgLyBzaXplb2YgKGNoYXIpXTsKICBy
ZWdpc3RlciBjaGFyICp3OwoKICBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRjID0gKCclJyk7
IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWduZWQgY2hhcikgKCoocykt
Pl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9uZSA9IC0xOyBnb3RvIGFs
bF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsKCiAgaWYgKGluZm8tPmFsdCkKICAg
IGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91dGMgPSAoJyMnKTsgaWYgKCgoKHMpLT5fSU9fd3Jp
dGVfcHRyID49IChzKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChzLCAodW5zaWduZWQg
Y2hhcikgKG91dGMpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzKS0+X0lPX3dyaXRlX3B0cisrID0g
KG91dGMpKSkgPT0gKC0xKSkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7IH0gZWxzZSArK2Rv
bmU7IH0gd2hpbGUgKDApOwogIGlmIChpbmZvLT5ncm91cCkKICAgIGRvIHsgcmVnaXN0ZXIgY29u
c3QgaW50IG91dGMgPSAoJ1wnJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9J
T193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAo
dW5zaWduZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkp
IHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsK
ICBpZiAoaW5mby0+c2hvd3NpZ24pCiAgICBkbyB7IHJlZ2lzdGVyIGNvbnN0IGludCBvdXRjID0g
KCcrJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQpID8g
X19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWduZWQgY2hhcikg
KCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9uZSA9IC0xOyBn
b3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsKICBlbHNlIGlmIChpbmZv
LT5zcGFjZSkKICAgIGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91dGMgPSAoJyAnKTsgaWYgKCgo
KHMpLT5fSU9fd3JpdGVfcHRyID49IChzKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChz
LCAodW5zaWduZWQgY2hhcikgKG91dGMpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzKS0+X0lPX3dy
aXRlX3B0cisrID0gKG91dGMpKSkgPT0gKC0xKSkgeyBkb25lID0gLTE7IGdvdG8gYWxsX2RvbmU7
IH0gZWxzZSArK2RvbmU7IH0gd2hpbGUgKDApOwogIGlmIChpbmZvLT5sZWZ0KQogICAgZG8geyBy
ZWdpc3RlciBjb25zdCBpbnQgb3V0YyA9ICgnLScpOyBpZiAoKCgocyktPl9JT193cml0ZV9wdHIg
Pj0gKHMpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHMsICh1bnNpZ25lZCBjaGFyKSAo
b3V0YykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHMpLT5fSU9fd3JpdGVfcHRyKysgPSAob3V0Yykp
KSA9PSAoLTEpKSB7IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSBlbHNlICsrZG9uZTsgfSB3
aGlsZSAoMCk7CiAgaWYgKGluZm8tPnBhZCA9PSAnMCcpCiAgICBkbyB7IHJlZ2lzdGVyIGNvbnN0
IGludCBvdXRjID0gKCcwJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193
cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5z
aWduZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsg
ZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsKICBp
ZiAoaW5mby0+aTE4bikKICAgIGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91dGMgPSAoJ0knKTsg
aWYgKCgoKHMpLT5fSU9fd3JpdGVfcHRyID49IChzKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJm
bG93IChzLCAodW5zaWduZWQgY2hhcikgKG91dGMpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzKS0+
X0lPX3dyaXRlX3B0cisrID0gKG91dGMpKSkgPT0gKC0xKSkgeyBkb25lID0gLTE7IGdvdG8gYWxs
X2RvbmU7IH0gZWxzZSArK2RvbmU7IH0gd2hpbGUgKDApOwoKICBpZiAoaW5mby0+d2lkdGggIT0g
MCkKICAgIHsKICAgICAgdyA9IF9pdG9hX3dvcmQgKGluZm8tPndpZHRoLCB3b3JrZW5kLCAxMCwg
MCk7CiAgICAgIHdoaWxlICh3IDwgd29ya2VuZCkKICAgICAgICBkbyB7IHJlZ2lzdGVyIGNvbnN0
IGludCBvdXRjID0gKCp3KyspOyBpZiAoKCgocyktPl9JT193cml0ZV9wdHIgPj0gKHMpLT5fSU9f
d3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHMsICh1bnNpZ25lZCBjaGFyKSAob3V0YykpIDogKHVu
c2lnbmVkIGNoYXIpICgqKHMpLT5fSU9fd3JpdGVfcHRyKysgPSAob3V0YykpKSA9PSAoLTEpKSB7
IGRvbmUgPSAtMTsgZ290byBhbGxfZG9uZTsgfSBlbHNlICsrZG9uZTsgfSB3aGlsZSAoMCk7CiAg
ICB9CgogIGlmIChpbmZvLT5wcmVjICE9IC0xKQogICAgewogICAgICBkbyB7IHJlZ2lzdGVyIGNv
bnN0IGludCBvdXRjID0gKCcuJyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9J
T193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAo
dW5zaWduZWQgY2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkp
IHsgZG9uZSA9IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsK
ICAgICAgdyA9IF9pdG9hX3dvcmQgKGluZm8tPnByZWMsIHdvcmtlbmQsIDEwLCAwKTsKICAgICAg
d2hpbGUgKHcgPCB3b3JrZW5kKQogICAgICAgIGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91dGMg
PSAoKncrKyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQp
ID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWduZWQgY2hh
cikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9uZSA9IC0x
OyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsKICAgIH0KCiAgaWYg
KGluZm8tPnNwZWMgIT0gJ1wwJykKICAgIGRvIHsgcmVnaXN0ZXIgY29uc3QgaW50IG91dGMgPSAo
aW5mby0+c3BlYyk7IGlmICgoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9l
bmQpID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChvdXRjKSkgOiAodW5zaWduZWQg
Y2hhcikgKCoocyktPl9JT193cml0ZV9wdHIrKyA9IChvdXRjKSkpID09ICgtMSkpIHsgZG9uZSA9
IC0xOyBnb3RvIGFsbF9kb25lOyB9IGVsc2UgKytkb25lOyB9IHdoaWxlICgwKTsKCiBhbGxfZG9u
ZToKICByZXR1cm4gZG9uZTsKfQoKCgpzdGF0aWMgY2hhciAqCgpncm91cF9udW1iZXIgKGNoYXIg
KncsIGNoYXIgKnJlYXJfcHRyLCBjb25zdCBjaGFyICpncm91cGluZywKCgoKICAgICAgICAgICAg
ICBjb25zdCBjaGFyICp0aG91c2FuZHNfc2VwCgogICAgICAgICAgICAgICkKewogIGludCBsZW47
CiAgY2hhciAqc3JjLCAqczsKCiAgaW50IHRsZW4gPSBzdHJsZW4gKHRob3VzYW5kc19zZXApOwoK
CgoKICBpZiAoKmdyb3VwaW5nID09IDEyNyB8fCAqZ3JvdXBpbmcgPD0gMCkKCiAgICByZXR1cm4g
dzsKCiAgbGVuID0gKmdyb3VwaW5nOwoKCiAgc3JjID0gKGNoYXIgKikgX19idWlsdGluX2FsbG9j
YSAoKHJlYXJfcHRyIC0gdykgKiBzaXplb2YgKGNoYXIpKTsKICBzID0gKGNoYXIgKikgKF9fZXh0
ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICh3KSAmJiBfX2J1aWx0aW5fY29uc3RhbnRf
cCAoKHJlYXJfcHRyIC0gdykgKiBzaXplb2YgKGNoYXIpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgodykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodykgPT0gMSkgJiYgKHJlYXJf
cHRyIC0gdykgKiBzaXplb2YgKGNoYXIpIDw9IDggPyBfX2J1aWx0aW5fbWVtY3B5IChzcmMsIHcs
IChyZWFyX3B0ciAtIHcpICogc2l6ZW9mIChjaGFyKSkgKyAoKHJlYXJfcHRyIC0gdykgKiBzaXpl
b2YgKGNoYXIpKSA6IF9fbWVtcGNweSAoc3JjLCB3LCAocmVhcl9wdHIgLSB3KSAqIHNpemVvZiAo
Y2hhcikpKSk7CgogIHcgPSByZWFyX3B0cjsKCgogIHdoaWxlIChzID4gc3JjKQogICAgewogICAg
ICAqLS13ID0gKi0tczsKCiAgICAgIGlmICgtLWxlbiA9PSAwICYmIHMgPiBzcmMpCiAgICAgICAg
ewoKCgoKICAgICAgICAgIGludCBjbnQgPSB0bGVuOwogICAgICAgICAgZG8KICAgICAgICAgICAg
Ki0tdyA9IHRob3VzYW5kc19zZXBbLS1jbnRdOwogICAgICAgICAgd2hpbGUgKGNudCA+IDApOwoK
CiAgICAgICAgICBsZW4gPSAqZ3JvdXBpbmcrKzsKICAgICAgICAgIGlmICgqZ3JvdXBpbmcgPT0g
J1wwJykKCiAgICAgICAgICAgIC0tZ3JvdXBpbmc7CiAgICAgICAgICBlbHNlIGlmICgqZ3JvdXBp
bmcgPT0gMTI3CgogICAgICAgICAgICAgICAgICAgfHwgKmdyb3VwaW5nIDwgMAoKICAgICAgICAg
ICAgICAgICAgICkKICAgICAgICAgICAgewoKCiAgICAgICAgICAgICAgZG8KICAgICAgICAgICAg
ICAgICotLXcgPSAqLS1zOwogICAgICAgICAgICAgIHdoaWxlIChzID4gc3JjKTsKICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICByZXR1cm4gdzsKfQoK
CgpzdHJ1Y3QgaGVscGVyX2ZpbGUKICB7CiAgICBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfZjsKCgoK
ICAgIF9JT19GSUxFICpfcHV0X3N0cmVhbTsKCgoKICB9OwoKc3RhdGljIGludApfSU9faGVscGVy
X292ZXJmbG93IChfSU9fRklMRSAqcywgaW50IGMpCnsKICBfSU9fRklMRSAqdGFyZ2V0ID0gKChz
dHJ1Y3QgaGVscGVyX2ZpbGUqKSBzKS0+X3B1dF9zdHJlYW07CiMgMjA3MCAidmZwcmludGYuYyIK
ICBpbnQgdXNlZCA9IHMtPl9JT193cml0ZV9wdHIgLSBzLT5fSU9fd3JpdGVfYmFzZTsKICBpZiAo
dXNlZCkKICAgIHsKICAgICAgc2l6ZV90IHdyaXR0ZW4gPSAoKCooc3RydWN0IF9JT19qdW1wX3Qg
KiopICgodm9pZCAqKSAmKChzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyAqKSAodGFyZ2V0KSktPnZ0YWJs
ZSArICh0YXJnZXQpLT5fdnRhYmxlX29mZnNldCkpLT5fX3hzcHV0bikgKHRhcmdldCwgcy0+X0lP
X3dyaXRlX2Jhc2UsIHVzZWQpOwogICAgICBzLT5fSU9fd3JpdGVfcHRyIC09IHdyaXR0ZW47CiAg
ICB9CgogIHJldHVybiAoKChzKS0+X0lPX3dyaXRlX3B0ciA+PSAocyktPl9JT193cml0ZV9lbmQp
ID8gX19vdmVyZmxvdyAocywgKHVuc2lnbmVkIGNoYXIpIChjKSkgOiAodW5zaWduZWQgY2hhcikg
KCoocyktPl9JT193cml0ZV9wdHIrKyA9IChjKSkpOwp9CiMgMjEwMyAidmZwcmludGYuYyIKc3Rh
dGljIGNvbnN0IHN0cnVjdCBfSU9fanVtcF90IF9JT19oZWxwZXJfanVtcHMgPQp7CiAgMCwgMCwK
ICBfSU9fZGVmYXVsdF9maW5pc2hfaW50ZXJuYWwsCiAgX0lPX2hlbHBlcl9vdmVyZmxvdywKICBf
SU9fZGVmYXVsdF91bmRlcmZsb3csCiAgX0lPX2RlZmF1bHRfdWZsb3dfaW50ZXJuYWwsCiAgX0lP
X2RlZmF1bHRfcGJhY2tmYWlsX2ludGVybmFsLAogIF9JT19kZWZhdWx0X3hzcHV0bl9pbnRlcm5h
bCwKICBfSU9fZGVmYXVsdF94c2dldG5faW50ZXJuYWwsCiAgX0lPX2RlZmF1bHRfc2Vla29mZiwK
ICBfSU9fZGVmYXVsdF9zZWVrcG9zLAogIF9JT19kZWZhdWx0X3NldGJ1ZiwKICBfSU9fZGVmYXVs
dF9zeW5jLAogIF9JT19kZWZhdWx0X2RvYWxsb2NhdGVfaW50ZXJuYWwsCiAgX0lPX2RlZmF1bHRf
cmVhZCwKICBfSU9fZGVmYXVsdF93cml0ZSwKICBfSU9fZGVmYXVsdF9zZWVrLAogICgoX0lPX2Ns
b3NlX3QpIF9JT19kZWZhdWx0X3N5bmMpLAogIF9JT19kZWZhdWx0X3N0YXQKfTsKCgpzdGF0aWMg
aW50CgpidWZmZXJlZF92ZnByaW50ZiAocmVnaXN0ZXIgX0lPX0ZJTEUgKnMsIGNvbnN0IGNoYXIg
KmZvcm1hdCwKICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IGFyZ3MpCnsKICBjaGFy
IGJ1Zls4MTkyXTsKICBzdHJ1Y3QgaGVscGVyX2ZpbGUgaGVscGVyOwogIHJlZ2lzdGVyIF9JT19G
SUxFICpocCA9IChfSU9fRklMRSAqKSAmaGVscGVyLl9mOwogIGludCByZXN1bHQsIHRvX2ZsdXNo
OwoKCgogIGlmIChzLT5fdnRhYmxlX29mZnNldCA9PSAwICYmICh7IGludCBfX3Jlc3VsdCA9ICgt
MSk7IGlmIChfX3Jlc3VsdCA8IDAgJiYgISAoMCkpIHsgaWYgKChzKS0+X21vZGUgPT0gMCkgKHMp
LT5fbW9kZSA9IC0xOyBfX3Jlc3VsdCA9IChzKS0+X21vZGU7IH0gZWxzZSBpZiAoX19idWlsdGlu
X2NvbnN0YW50X3AgKC0xKSAmJiAoLTEpID09IDApIF9fcmVzdWx0ID0gKHMpLT5fbW9kZTsgZWxz
ZSBfX3Jlc3VsdCA9IF9JT19md2lkZSAocywgX19yZXN1bHQpOyBfX3Jlc3VsdDsgfSkgIT0gLTEp
IHJldHVybiAtMTsKCgoKICBoZWxwZXIuX3B1dF9zdHJlYW0gPSBzOwoKCgoKCiAgKChocCktPl9J
T193cml0ZV9iYXNlID0gKGhwKS0+X0lPX3dyaXRlX3B0ciA9IGJ1ZiwgKGhwKS0+X0lPX3dyaXRl
X2VuZCA9IChidWYgKyBzaXplb2YgYnVmKSk7CiAgaHAtPl9tb2RlID0gLTE7CgogIGhwLT5fZmxh
Z3MgPSAweEZCQUQwMDAwfDR8MHg4MDAwOwoKICBocC0+X3Z0YWJsZV9vZmZzZXQgPSAwOwoKCgoK
ICAoJmhlbHBlci5fZiktPnZ0YWJsZSA9IChzdHJ1Y3QgX0lPX2p1bXBfdCAqKSAmX0lPX2hlbHBl
cl9qdW1wczsKCgoKICByZXN1bHQgPSBfSU9fdmZwcmludGZfaW50ZXJuYWwgKGhwLCBmb3JtYXQs
IGFyZ3MpOwoKCgoKCiAgeyBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgX2J1ZmZlcjsg
aW50IF9hdmFpbCA9ICgxKSAmJiBfcHRocmVhZF9jbGVhbnVwX3B1c2hfZGVmZXIgIT0gKCh2b2lk
ICopMCk7IGlmIChfYXZhaWwpIHsgX3B0aHJlYWRfY2xlYW51cF9wdXNoX2RlZmVyICgmX2J1ZmZl
ciwgKCh2b2lkICgqKSAodm9pZCAqKSkgJl9JT19mdW5sb2NrZmlsZSksIChzKSk7IH07CiAgOwoj
IDIxODEgInZmcHJpbnRmLmMiCiAgaWYgKCh0b19mbHVzaCA9IGhwLT5fSU9fd3JpdGVfcHRyIC0g
aHAtPl9JT193cml0ZV9iYXNlKSA+IDApCiAgICB7CiAgICAgIGlmICgoaW50KSAoKCooc3RydWN0
IF9JT19qdW1wX3QgKiopICgodm9pZCAqKSAmKChzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyAqKSAocykp
LT52dGFibGUgKyAocyktPl92dGFibGVfb2Zmc2V0KSktPl9feHNwdXRuKSAocywgaHAtPl9JT193
cml0ZV9iYXNlLCB0b19mbHVzaCkgIT0gdG9fZmx1c2gpCiAgICAgICAgcmVzdWx0ID0gLTE7CiAg
ICB9CgoKCiAgOwogIGlmIChfYXZhaWwpIHsgX3B0aHJlYWRfY2xlYW51cF9wb3BfcmVzdG9yZSAo
Jl9idWZmZXIsICgwKSk7IH0gfTsKCiAgcmV0dXJuIHJlc3VsdDsKfQojIDIyNjcgInZmcHJpbnRm
LmMiCmV4dGVybiBfX3R5cGVvZiAoX0lPX3ZmcHJpbnRmKSB2ZnByaW50ZiBfX2F0dHJpYnV0ZV9f
ICgoYWxpYXMgKCJfSU9fdmZwcmludGYiKSkpOzsKX19hc21fXyAoIi5nbG9ibCB2ZnByaW50ZiA7
IC5zZXQgdmZwcmludGYsIF9fR0lfdmZwcmludGYiKTsKZXh0ZXJuIF9fdHlwZW9mIChfSU9fdmZw
cmludGYpIF9JT192ZnByaW50Zl9pbnRlcm5hbCBfX2F0dHJpYnV0ZV9fICgoYWxpYXMgKCJfSU9f
dmZwcmludGYiKSkpOwo=


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-11-08 10:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-08  2:16 c/8499: [mainline regression] Tree checking failure on after error reported jh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).