www.delorie.com/archives/browse.cgi   search  
Mail Archives: pgcc/1999/02/28/09:38:28

From: "Justin R. Smith" <jsmith AT mcs DOT drexel DOT edu>
Organization: Drexel University
To: pgcc AT delorie DOT com
Subject: Bug in pgcc
Date: Sun, 28 Feb 1999 09:25:24 -0500
X-Mailer: KMail [version 1.0.17]
MIME-Version: 1.0
Message-Id: <99022809341601.18499@jsmith.org>
Reply-To: pgcc AT delorie DOT com

--Boundary-=_BbmQBhCDarzOwKkYHIDdqSCDXrJm
Content-Type: text/plain
Content-Transfer-Encoding: 8bit

I am not on the mailing list, so please reply to me personally.

I am running 

gcc version pgcc-2.91.60 19981201 (egcs-1.1.1 release) 

and trying to compile teTeX 0.9.   Most of the compile ran fine, until it
reached the end, at which point it died with 

./../egcs-1.1.1/gcc/caller-save.c:657: Internal compiler error in function insert_save_restore 

The command line that created this error:
gcc -DHAVE_CONFIG_H  -I. -I. -I../../libs/libwww -I./../../libs/libwww -DHAVE_LIBWWW -DHAVE_WWWLIB_H -DPS_GS  -DOmega -I.. -I./..  -g -O2  -c special.c 

The source file (with -E option passed to gcc) is attached. Thank you!


 --
______________________________________________________________________
                                	|
Time blows wildly against my door       | Justin R. Smith
Stirring discarded sorrows      	| Department of Mathematics and
Like dead leaves of summers past        |     Computer Science
Memories of forgotten lore          	| Drexel University
Making way for new tomorrows         	| Philadelphia, PA 19104
New hopes, new fears,                   |
         and new ways that last         | Office: (215) 895-1847
                                        |
c Justin R. Smith, March 14, 1994       | Fax:    (215) 895-1582

My home page: http://www.mcs.drexel.edu/~jsmith

--Boundary-=_BbmQBhCDarzOwKkYHIDdqSCDXrJm
Content-Type: text/plain;
  name="zz"
Content-Transfer-Encoding: base64
Content-Description: Offending source file
Content-Disposition: attachment; filename="zz"

IyAxICJzcGVjaWFsLmMiCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiMgMSAieGR2aS1jb25maWcuaCIgMQogCgoKCgoKCgogCiMgMSAiLi4v
a3BhdGhzZWEvYy1hdXRvLmgiIDEKIAogCiAKCgoKCgogCgoKCiAKCiAKCgogCgoKCgoKCgoKCgog
CiAKCiAKIAoKIAoKCiAKCgogCgoKCgoKIAoKCiAKCiAKCgoKIAoKCgoKCgoKIAoKCiAKCgogCgoK
IAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgog
CgoKIAoKCiAKCgogCiAKCiAKCgogCgoKIAoKCiAKIAoKIAogCgogCgoKIAoKCiMgMTAgInhkdmkt
Y29uZmlnLmgiIDIKCiMgMSAiLi4va3BhdGhzZWEvY29uZmlnLmgiIDEKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCiMgMSAiYy1hdXRvLmgiIDEKIAogCgog
CiAKCiAKCgogCiAKCiAKCgogCiAKCiAKCgogCiAKCiAKCgogCiAKCiAKCiAKCiAKIAoKIAoKCiAK
CgogCgoKCiAKCgoKIAoKCiAKIAoKIAoKCiAKCgogCgoKIAoKIAoKIAoKCgoKCgoKIAogCgogCgoK
IAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKIAoKIAoKCiAKIAoKIAogCgogCiAKCiAKIAoK
IAogCgogCiAKIyA0NiAiLi4va3BhdGhzZWEvY29uZmlnLmgiIDIKCgoKCgoKCgoKCgogCiAKCgoK
CiMgMSAiLi4va3BhdGhzZWEvYy1zdGQuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAK
CgojIDEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCgoKCiAKCgoKCgogCgoKCiAKCgoKCgoKCiAKIyAxMTcgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAzCgoKIAoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCiAKCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIyAyMjIgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAzCgojIDIyICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIgMwoK
CiAKCgoKCgoKCiMgNTQgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCiAKCgoKCgoKCiAK
CgoKIyA4NiAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKCiAKCgoKCgoKCgogCgoKCgoK
CgojIDIwNSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwoKCgogCgogCgoKCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIyAyMTkgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKCgoKCiMgMjcgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDIgMwoKCiAKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL2h1Z2VfdmFsLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgojIDY4ICIv
dXNyL2luY2x1ZGUvaHVnZV92YWwuaCIgMwoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9tYXRoY2FsbHMu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhY29zICAgICAgICAgIChkb3VibGUgIF9feCkg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Fjb3MgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXNpbiAgICAgICAgICAoZG91Ymxl
ICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19hc2luICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW4gICAgICAgICAg
KGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXRhbiAgICAgICAg
ICAoZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhdGFuMiAg
ICAgICAgICAoZG91YmxlICBfX3ksIGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fYXRhbjIgICAgICAgICAgKGRvdWJsZSAgX195LCBkb3VibGUgIF9feCkgICAgICA7
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjb3MgICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fY29zICAgICAgICAgIChkb3VibGUgIF9feCkg
ICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNpbiAgICAgICAgICAoZG91YmxlICBf
X3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19zaW4gICAgICAgICAgKGRvdWJsZSAg
X194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgdGFuICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3RhbiAgICAgICAgICAoZG91
YmxlICBfX3gpICAgICAgOwoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvc2ggICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fY29zaCAg
ICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBz
aW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X3NpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAg
ICAgICAgdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgX190YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBk
b3VibGUgICAgICAgICAgYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAg
IGRvdWJsZSAgICAgICAgIF9fYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApl
eHRlcm4gICBkb3VibGUgICAgICAgICAgYXNpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbmggICAgICAgICAgKGRvdWJsZSAg
X194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXRhbmggICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBleHAgICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZXhwICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmcmV4
cCAgICAgICAgICAoZG91YmxlICBfX3gsIGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2ZyZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50ICpfX2V4cG9u
ZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxkZXhwICAgICAgICAgIChk
b3VibGUgIF9feCwgaW50IF9fZXhwb25lbnQpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X19sZGV4cCAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxvZyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsg
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sb2cgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxvZzEwICAgICAgICAgIChkb3VibGUgIF9f
eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZzEwICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZXhwbTEgICAgICAgICAg
KGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZXhwbTEgICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxvZzFw
ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xv
ZzFwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICBsb2diICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAg
ICAgICBfX2xvZ2IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgogCmV4dGVybiAgIGRv
dWJsZSAgICAgICAgICBtb2RmICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19pcHRy
KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbW9kZiAgICAgICAgICAoZG91YmxlICBf
X3gsIGRvdWJsZSAgKl9faXB0cikgICAgICA7CgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAg
ICAgcG93ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19wb3cgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkg
ICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzcXJ0ICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NxcnQgICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjYnJ0ICAgICAgICAg
IChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NicnQgICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAg
Y2VpbCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X19jZWlsICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAg
ICAgICAgICBmYWJzICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX2ZhYnMgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgIGZsb29yICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX2Zsb29yICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7Cgog
CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmbW9kICAgICAgICAgIChkb3VibGUgIF9feCwgZG91
YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19mbW9kICAgICAgICAgIChk
b3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCgoKIAoKZXh0ZXJuICAgaW50ICAgICAg
ICBpc2luZiAgICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICA7IGV4dGVybiAgIGludCAgICAgICAg
X19pc2luZiAgICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICAgOwoKIApleHRlcm4gICBpbnQgICAg
ICAgIGZpbml0ZSAgICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICA7IGV4dGVybiAgIGludCAgICAg
ICAgX19maW5pdGUgICAgICAgIChkb3VibGUgIF9fdmFsdWUpICAgIDsKCiAKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIGNvcHlzaWduICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kp
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19jb3B5c2lnbiAgICAgICAgICAoZG91Ymxl
ICBfX3gsIGRvdWJsZSAgX195KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNj
YWxibiAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX24pICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19zY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19uKSAgICAgIDsK
CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGRyZW0gICAgICAgICAgKGRvdWJsZSAgX194LCBk
b3VibGUgIF9feSkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2RyZW0gICAgICAgICAg
KGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICBzaWduaWZpY2FuZCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91
YmxlICAgICAgICAgX19zaWduaWZpY2FuZCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoK
CgoKCiAKZXh0ZXJuICAgaW50ICAgICAgICBpc25hbiAgICAgICAgKGRvdWJsZSAgX192YWx1ZSkg
ICA7IGV4dGVybiAgIGludCAgICAgICAgX19pc25hbiAgICAgICAgKGRvdWJsZSAgX192YWx1ZSkg
ICAgOwoKIApleHRlcm4gICBpbnQgICAgICAgIGlsb2diICAgICAgICAoZG91YmxlICBfX3gpICAg
OyBleHRlcm4gICBpbnQgICAgICAgIF9faWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkgICAgOwoK
IApleHRlcm4gICBkb3VibGUgICAgICAgICAgaHlwb3QgICAgICAgICAgKGRvdWJsZSAgX194LCBk
b3VibGUgIF9feSkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2h5cG90ICAgICAgICAg
IChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGVyZiAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAg
ICBfX2VyZiAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAg
ICBlcmZjICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
ZXJmYyAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBn
YW1tYSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2dh
bW1hICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGow
ICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fajAgICAg
ICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgajEgICAgICAg
ICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19qMSAgICAgICAgICAo
ZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBqbiAgICAgICAgICAoaW50
LCBkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fam4gICAgICAgICAgKGlu
dCwgZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBsZ2FtbWEgICAgICAg
ICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZ2FtbWEgICAgICAg
ICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgeTAgICAgICAgICAg
KGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX195MCAgICAgICAgICAoZG91
YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB5MSAgICAgICAgICAoZG91Ymxl
ICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3kxICAgICAgICAgIChkb3VibGUgKSAg
ICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHluICAgICAgICAgIChpbnQsIGRvdWJsZSAp
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX195biAgICAgICAgICAoaW50LCBkb3VibGUg
KSAgICAgIDsKCgoKCiAKCgpleHRlcm4gICBkb3VibGUgICAgICAgICAgZ2FtbWFfciAgICAgICAg
ICAgICAgKGRvdWJsZSAsIGludCAqKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZ2Ft
bWFfciAgICAgICAgICAgICAgKGRvdWJsZSAsIGludCAqKSAgICAgIDsKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIGxnYW1tYV9yICAgICAgICAgICAgICAoZG91YmxlICwgaW50ICopICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19sZ2FtbWFfciAgICAgICAgICAgICAgKGRvdWJsZSAsIGlu
dCAqKSAgICAgIDsKCgoKCgogCgpleHRlcm4gICBkb3VibGUgICAgICAgICAgcmludCAgICAgICAg
ICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yaW50ICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzY2Fs
YiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX19uKSAgICA7IGV4dGVybiAgIGRvdWJs
ZSAgICAgICAgIF9fc2NhbGIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9fbikgICAg
ICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBuZXh0YWZ0ZXIgICAgICAgICAgKGRvdWJs
ZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX25leHRh
ZnRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgIDsKCiAKZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgIHJlbWFpbmRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcmVtYWluZGVyICAgICAgICAg
IChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCgojIDU2ICIvdXNyL2luY2x1ZGUv
bWF0aC5oIiAyIDMKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9tYXRoY2Fs
bHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGFjb3NmICAgICAgICAgKGZsb2F0ICAgX194
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hY29zZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYXNpbmYgICAgICAgICAoZmxvYXQg
ICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2FzaW5mICAgICAgICAgKGZsb2F0
ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhdGFuZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbmYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW4yZiAgICAg
ICAgIChmbG9hdCAgIF9feSwgZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX2F0YW4yZiAgICAgICAgIChmbG9hdCAgIF9feSwgZmxvYXQgICBfX3gpICAgICAgOwoKIApl
eHRlcm4gICBmbG9hdCAgICAgICAgICBjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBzaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7
IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg
IDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICB0YW5mICAgICAgICAgKGZsb2F0ICAgX194KSAg
ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX190YW5mICAgICAgICAgKGZsb2F0ICAgX194KSAg
ICAgIDsKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNvc2hmICAgICAgICAgKGZsb2F0
ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NoZiAgICAgICAgIChmbG9h
dCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2luaGYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NpbmhmICAgICAgICAg
KGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICB0YW5oZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fdGFuaGYgICAg
ICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYWNv
c2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19h
Y29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGFzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fYXNpbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBhdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2F0YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKIAoKIApl
eHRlcm4gICBmbG9hdCAgICAgICAgICBleHBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX19leHBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK
CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZnJleHBmICAgICAgICAgKGZsb2F0ICAgX194LCBp
bnQgKl9fZXhwb25lbnQpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2ZyZXhwZiAgICAg
ICAgIChmbG9hdCAgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxv
YXQgICAgICAgICAgbGRleHBmICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19leHBvbmVudCkg
ICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGRleHBmICAgICAgICAgKGZsb2F0ICAgX194
LCBpbnQgX19leHBvbmVudCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZ2Yg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZ2Yg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBs
b2cxMGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBf
X2xvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBleHBtMWYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2V4cG0xZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIGxvZzFwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4g
ICBmbG9hdCAgICAgICAgIF9fbG9nMXBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAK
ZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9nYmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsg
ZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZ2JmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg
IDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIG1vZGZmICAgICAgICAgKGZsb2F0ICAgX194
LCBmbG9hdCAgICpfX2lwdHIpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX21vZGZmICAg
ICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgICpfX2lwdHIpICAgICAgOwoKCiAKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgcG93ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kp
ICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3Bvd2YgICAgICAgICAoZmxvYXQgICBfX3gs
IGZsb2F0ICAgX195KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc3FydGYgICAg
ICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NxcnRmICAg
ICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNi
cnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19j
YnJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKCiAKCiAKZXh0ZXJuICAgZmxvYXQg
ICAgICAgICAgY2VpbGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2NlaWxmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAg
ZmxvYXQgICAgICAgICAgZmFic2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX2ZhYnNmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgZmxvb3JmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX19mbG9vcmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAg
OwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbW9kZiAgICAgICAgIChmbG9hdCAgIF9feCwg
ZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2Ztb2RmICAgICAgICAg
KGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKCgogCgpleHRlcm4gICBpbnQgICAg
ICAgaXNpbmZmICAgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgOyBleHRlcm4gICBpbnQgICAgICAg
X19pc2luZmYgICAgICAgKGZsb2F0ICAgX192YWx1ZSkgICAgOwoKIApleHRlcm4gICBpbnQgICAg
ICAgZmluaXRlZiAgICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIDsgZXh0ZXJuICAgaW50ICAgICAg
IF9fZmluaXRlZiAgICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgICA7CgogCmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIGNvcHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAg
IDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2NvcHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9f
eCwgZmxvYXQgICBfX3kpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBzY2FsYm5m
ICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19uKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAg
ICAgX19zY2FsYm5mICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19uKSAgICAgIDsKCiAKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgZHJlbWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAg
X195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19kcmVtZiAgICAgICAgIChmbG9hdCAg
IF9feCwgZmxvYXQgICBfX3kpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBzaWdu
aWZpY2FuZGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX3NpZ25pZmljYW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKCgoKIApleHRl
cm4gICBpbnQgICAgICAgaXNuYW5mICAgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgOyBleHRlcm4g
ICBpbnQgICAgICAgX19pc25hbmYgICAgICAgKGZsb2F0ICAgX192YWx1ZSkgICAgOwoKIApleHRl
cm4gICBpbnQgICAgICAgaWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICA7IGV4dGVybiAgIGlu
dCAgICAgICBfX2lsb2diZiAgICAgICAoZmxvYXQgICBfX3gpICAgIDsKCiAKZXh0ZXJuICAgZmxv
YXQgICAgICAgICAgaHlwb3RmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9faHlwb3RmICAgICAgICAgKGZsb2F0ICAgX194LCBm
bG9hdCAgIF9feSkgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBlcmZmICAgICAg
ICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2VyZmYgICAgICAgICAo
ZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGVyZmNmICAgICAgICAgKGZs
b2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2VyZmNmICAgICAgICAgKGZsb2F0
ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBnYW1tYWYgICAgICAgICAoZmxvYXQg
ICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZ2FtbWFmICAgICAgICAgKGZsb2F0ICAp
ICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBqMGYgICAgICAgICAoZmxvYXQgICkgICAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fajBmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpl
eHRlcm4gICBmbG9hdCAgICAgICAgICBqMWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4g
ICBmbG9hdCAgICAgICAgIF9fajFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBm
bG9hdCAgICAgICAgICBqbmYgICAgICAgICAoaW50LCBmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX19qbmYgICAgICAgICAoaW50LCBmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAg
ZmxvYXQgICAgICAgICAgbGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX19sZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBm
bG9hdCAgICAgICAgICB5MGYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9feTBmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAg
ICAgICB5MWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9f
eTFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB5bmYg
ICAgICAgICAoaW50LCBmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195bmYg
ICAgICAgICAoaW50LCBmbG9hdCAgKSAgICAgIDsKCgoKCiAKCgpleHRlcm4gICBmbG9hdCAgICAg
ICAgICBnYW1tYWZfciAgICAgICAgICAgIChmbG9hdCAgLCBpbnQgKikgICAgOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9fZ2FtbWFmX3IgICAgICAgICAgICAoZmxvYXQgICwgaW50ICopICAgICAg
OwpleHRlcm4gICBmbG9hdCAgICAgICAgICBsZ2FtbWFmX3IgICAgICAgICAgICAoZmxvYXQgICwg
aW50ICopICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xnYW1tYWZfciAgICAgICAgICAg
IChmbG9hdCAgLCBpbnQgKikgICAgICA7CgoKCgoKIAoKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
cmludGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBf
X3JpbnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAg
ICAgICAgc2NhbGJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9fbikgICAgOyBleHRl
cm4gICBmbG9hdCAgICAgICAgIF9fc2NhbGJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAg
IF9fbikgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIG5leHRhZnRlcmYgICAgICAg
ICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg
X19uZXh0YWZ0ZXJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7Cgog
CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHJlbWFpbmRlcmYgICAgICAgICAoZmxvYXQgICBfX3gs
IGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19yZW1haW5kZXJmICAg
ICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKCiMgNzUgIi91c3IvaW5j
bHVkZS9tYXRoLmgiIDIgMwoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL21hdGhj
YWxscy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgYWNvc2wgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Fjb3Ns
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgICBhc2lubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXNpbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp
ICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGF0YW5sICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hdGFu
bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICAgYXRhbjJsICAgICAgICAgKGxvbmcgZG91YmxlICAgX195LCBsb25nIGRvdWJs
ZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXRhbjJsICAgICAg
ICAgKGxvbmcgZG91YmxlICAgX195LCBsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgogCmV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgIGNvc2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Nvc2wgICAgICAgICAobG9uZyBk
b3VibGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHNpbmwg
ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICBfX3NpbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgIHRhbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3RhbmwgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gpICAgICAgOwoKCiAKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY29z
aGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICBfX2Nvc2hsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRl
cm4gICBsb25nIGRvdWJsZSAgICAgICAgICBzaW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc2luaGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHRh
bmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgX190YW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgoKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhY29zaGwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Fjb3NobCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICAgYXNpbmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcg
ZG91YmxlICAgICAgICAgX19hc2luaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAg
OwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGF0YW5obCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXRhbmhsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgIGV4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJu
ICAgbG9uZyBkb3VibGUgICAgICAgICBfX2V4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp
ICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBmcmV4cGwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gsIGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgIF9fZnJleHBsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBpbnQgKl9f
ZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsZGV4cGwg
ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGludCBfX2V4cG9uZW50KSAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19sZGV4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gs
IGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
bG9nbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgIF9fbG9nbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgogCmV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGxvZzEwbCAgICAgICAgIChsb25nIGRvdWJsZSAg
IF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fbG9nMTBsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGV4cG0xbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgIF9fZXhwbTFsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbG9nMXBsICAgICAgICAgKGxvbmcg
ZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sb2cxcGwg
ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgICBsb2dibCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgIF9fbG9nYmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp
ICAgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbW9kZmwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgKl9faXB0cikgICAgOyBleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgIF9fbW9kZmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxv
bmcgZG91YmxlICAgKl9faXB0cikgICAgICA7CgoKIAoKIApleHRlcm4gICBsb25nIGRvdWJsZSAg
ICAgICAgICBwb3dsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9f
eSkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fcG93bCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgOwoKIApleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgICBzcXJ0bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc3FydGwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY2JydGwgICAg
ICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICBfX2NicnRsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCgoKIAoKIApleHRl
cm4gICBsb25nIGRvdWJsZSAgICAgICAgICBjZWlsbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fY2VpbGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBm
YWJzbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgIF9fZmFic2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBmbG9vcmwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Zsb29ybCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGZtb2RsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkg
ICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZm1vZGwgICAgICAgICAobG9uZyBk
b3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgIDsKCgoKCiAKCmV4dGVybiAgIGlu
dCAgICAgICBpc2luZmwgICAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgICA7IGV4dGVybiAg
IGludCAgICAgICBfX2lzaW5mbCAgICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgICA7Cgog
CmV4dGVybiAgIGludCAgICAgICBmaW5pdGVsICAgICAgIChsb25nIGRvdWJsZSAgIF9fdmFsdWUp
ICAgOyBleHRlcm4gICBpbnQgICAgICAgX19maW5pdGVsICAgICAgIChsb25nIGRvdWJsZSAgIF9f
dmFsdWUpICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY29weXNpZ25sICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgOyBleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgIF9fY29weXNpZ25sICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIHNjYWxibmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGludCBfX24pICAgIDsg
ZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3NjYWxibmwgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gsIGludCBfX24pICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
ICBkcmVtbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2RyZW1sICAgICAgICAgKGxvbmcgZG91
YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgIHNpZ25pZmljYW5kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAg
OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc2lnbmlmaWNhbmRsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICAgIDsKCgoKCgogCmV4dGVybiAgIGludCAgICAgICBpc25hbmwg
ICAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgICA7IGV4dGVybiAgIGludCAgICAgICBfX2lz
bmFubCAgICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgICA7CgogCmV4dGVybiAgIGludCAg
ICAgICBpbG9nYmwgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgIDsgZXh0ZXJuICAgaW50ICAg
ICAgIF9faWxvZ2JsICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOwoKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBoeXBvdGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxv
bmcgZG91YmxlICAgX195KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19oeXBv
dGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgIDsK
CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGVyZmwgICAgICAgICAobG9uZyBkb3Vi
bGUgICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZXJmbCAgICAgICAgIChs
b25nIGRvdWJsZSAgKSAgICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZXJmY2wg
ICAgICAgICAobG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
IF9fZXJmY2wgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7CmV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgIGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19nYW1tYWwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAg
ICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGowbCAgICAgICAgIChsb25nIGRvdWJs
ZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19qMGwgICAgICAgICAobG9u
ZyBkb3VibGUgICkgICAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGoxbCAgICAg
ICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19q
MWwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIGpubCAgICAgICAgIChpbnQsIGxvbmcgZG91YmxlICApICAgIDsgZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICBfX2pubCAgICAgICAgIChpbnQsIGxvbmcgZG91YmxlICApICAgICAg
OwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsZ2FtbWFsICAgICAgICAgKGxvbmcgZG91
YmxlICApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xnYW1tYWwgICAgICAg
ICAobG9uZyBkb3VibGUgICkgICAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHkw
bCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgX195MGwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7CmV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgIHkxbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxv
bmcgZG91YmxlICAgICAgICAgX195MWwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7CmV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHlubCAgICAgICAgIChpbnQsIGxvbmcgZG91Ymxl
ICApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3lubCAgICAgICAgIChpbnQs
IGxvbmcgZG91YmxlICApICAgICAgOwoKCgoKIAoKCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGdhbW1hbF9yICAgICAgICAgICAgKGxvbmcgZG91YmxlICAsIGludCAqKSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19nYW1tYWxfciAgICAgICAgICAgIChsb25nIGRvdWJs
ZSAgLCBpbnQgKikgICAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGxnYW1tYWxf
ciAgICAgICAgICAgIChsb25nIGRvdWJsZSAgLCBpbnQgKikgICAgOyBleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgIF9fbGdhbW1hbF9yICAgICAgICAgICAgKGxvbmcgZG91YmxlICAsIGludCAq
KSAgICAgIDsKCgoKCgogCgpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICByaW50bCAgICAg
ICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
IF9fcmludGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBzY2FsYmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxv
bmcgZG91YmxlICAgX19uKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zY2Fs
YmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX19uKSAgICAgIDsK
CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbmV4dGFmdGVybCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX25leHRhZnRlcmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcg
ZG91YmxlICAgX195KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgcmVt
YWluZGVybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3JlbWFpbmRlcmwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgIDsKCgoKIyA5MSAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMiAzCgoKCgoKCgoKIApleHRlcm4gaW50IHNpZ25nYW07CgoKCgogCgp0
eXBlZGVmIGVudW0geyBfSUVFRV8gPSAtMSwgX1NWSURfLCBfWE9QRU5fLCBfUE9TSVhfIH0gX0xJ
Ql9WRVJTSU9OX1RZUEU7CgogCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lP
TjsKCgoKCiAKCgoKCgoKCnN0cnVjdCBleGNlcHRpb24KCiAgewogICAgaW50IHR5cGU7CiAgICBj
aGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3VibGUgYXJnMjsKICAgIGRvdWJsZSBy
ZXR2YWw7CiAgfTsKCgoKCgpleHRlcm4gaW50IF9fbWF0aGVyciAgKHN0cnVjdCBleGNlcHRpb24g
KikgIDsKZXh0ZXJuIGludCBtYXRoZXJyICAoc3RydWN0IGV4Y2VwdGlvbiAqKSAgOwoKCgoKIAoK
CgoKCgoKIAoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2lu
Y2x1ZGUvZmxvYXQuaCIgMSAzCiAKCgoKIAoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAg
ICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgoKICAgIAoKCiAg
ICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKCiAg
ICAKCgogICAgCgoKICAgIAoKCgp1bmlvbiBfX2NvbnZlcnRfbG9uZ19kb3VibGUgewogIHVuc2ln
bmVkIF9fY29udmVydF9sb25nX2RvdWJsZV9pWzRdOwogIGxvbmcgZG91YmxlIF9fY29udmVydF9s
b25nX2RvdWJsZV9kOwp9OwoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAg
IAoKCgoKIyAxNTUgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCiMgMTY1ICIvdXNyL2luY2x1
ZGUvbWF0aC5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgojIDIwMiAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwoKCgogCgoKIyAxICIvdXNyL2luY2x1ZGUvX19tYXRoLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lICBkb3VibGUg
Y29zIChkb3VibGUpOwpleHRlcm4gX19pbmxpbmUgIGRvdWJsZSBzaW4gKGRvdWJsZSk7CgoKZXh0
ZXJuIF9faW5saW5lICBkb3VibGUgX19leHBtMSAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lubGlu
ZSAgZG91YmxlCl9fZXhwbTEgKGRvdWJsZSBfX3gpCnsKICByZWdpc3RlciBkb3VibGUgX192YWx1
ZSwgX19leHBvbmVudCwgX190ZW1wOwogIF9fYXNtIF9fdm9sYXRpbGVfXwogICAgKCJmbGRsMmUJ
CQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAxXG5cdCIKICAgICAiZm11bAklJXN0KDEp
CQkjIHggKiBsb2cyKGUpXG5cdCIKICAgICAiZnN0bAklJXN0KDEpXG5cdCIKICAgICAiZnJuZGlu
dAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiCiAgICAgImZ4Y2hcblx0IgogICAgICJmc3ViCSUl
c3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIKICAgICAiZjJ4bTEJCQkjIDJeKGZyYWN0
KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIKICAgICAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkg
LSAyXihpbnQoeCAqIGxvZzIoZSkpKVxuXHQiCiAgICAgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAo
X19leHBvbmVudCkgOiAiMCIgKF9feCkpOwogIF9fYXNtIF9fdm9sYXRpbGVfXwogICAgKCJmc2Nh
bGUJCQkjIDJeaW50KHggKiBsb2cyKGUpKVxuXHQiCiAgICAgOiAiPXQiIChfX3RlbXApIDogIjAi
ICgxLjApLCAidSIgKF9fZXhwb25lbnQpKTsKICBfX3RlbXAgLT0gMS4wOwoKICByZXR1cm4gX190
ZW1wICsgX192YWx1ZTsKfQoKZXh0ZXJuIF9faW5saW5lICBkb3VibGUgX19zZ24xIChkb3VibGUg
X194KTsKZXh0ZXJuIF9faW5saW5lICBkb3VibGUKX19zZ24xIChkb3VibGUgX194KQp7CiAgcmV0
dXJuIF9feCA+PSAwLjAgPyAxLjAgOiAtMS4wOwp9CgpleHRlcm4gX19pbmxpbmUgIGRvdWJsZSBz
cXJ0IChkb3VibGUgX194KTsKZXh0ZXJuIF9faW5saW5lICBkb3VibGUKc3FydCAoZG91YmxlIF9f
eCkKewogIHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOwogIF9fYXNtIF9fdm9sYXRpbGVfXwogICAg
KCJmc3FydCIKICAgICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsKCiAgcmV0dXJuIF9f
dmFsdWU7Cn0KCmV4dGVybiBfX2lubGluZSAgZG91YmxlIGZhYnMgKGRvdWJsZSBfX3gpOwpleHRl
cm4gX19pbmxpbmUgIGRvdWJsZQpmYWJzIChkb3VibGUgX194KQp7CiAgcmVnaXN0ZXIgZG91Ymxl
IF9fdmFsdWU7CiAgX19hc20gX192b2xhdGlsZV9fCiAgICAoImZhYnMiCiAgICAgOiAiPXQiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSk7CgogIHJldHVybiBfX3ZhbHVlOwp9CgpleHRlcm4gX19pbmxp
bmUgIGRvdWJsZSBzaW4gKGRvdWJsZSBfX3gpOwpleHRlcm4gX19pbmxpbmUgIGRvdWJsZQpzaW4g
KGRvdWJsZSBfX3gpCnsKICByZWdpc3RlciBkb3VibGUgX192YWx1ZTsKICBfX2FzbSBfX3ZvbGF0
aWxlX18KICAgICgiZnNpbiIKICAgICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsKCiAg
cmV0dXJuIF9fdmFsdWU7Cn0KCmV4dGVybiBfX2lubGluZSAgZG91YmxlIGNvcyAoZG91YmxlIF9f
eCk7CmV4dGVybiBfX2lubGluZSAgZG91YmxlCmNvcyAoZG91YmxlIF9feCkKewogIHJlZ2lzdGVy
IGRvdWJsZSBfX3ZhbHVlOwogIF9fYXNtIF9fdm9sYXRpbGVfXwogICAgKCJmY29zIgogICAgIDog
Ij10IiAoX192YWx1ZSk6ICIwIiAoX194KSk7CgogIHJldHVybiBfX3ZhbHVlOwp9CgpleHRlcm4g
X19pbmxpbmUgIGRvdWJsZSB0YW4gKGRvdWJsZSBfX3gpOwpleHRlcm4gX19pbmxpbmUgIGRvdWJs
ZQp0YW4gKGRvdWJsZSBfX3gpCnsKICByZWdpc3RlciBkb3VibGUgX192YWx1ZTsKICByZWdpc3Rl
ciBkb3VibGUgX192YWx1ZTIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICBfX2FzbSBf
X3ZvbGF0aWxlX18KICAgICgiZnB0YW4iCiAgICAgOiAiPXQiIChfX3ZhbHVlMiksICI9dSIgKF9f
dmFsdWUpIDogIjAiIChfX3gpKTsKCiAgcmV0dXJuIF9fdmFsdWU7Cn0KCmV4dGVybiBfX2lubGlu
ZSAgZG91YmxlIGF0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KTsKZXh0ZXJuIF9faW5saW5l
ICBkb3VibGUKYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpCnsKICByZWdpc3RlciBkb3Vi
bGUgX192YWx1ZTsKICBfX2FzbSBfX3ZvbGF0aWxlX18KICAgICgiZnBhdGFuXG5cdCIKICAgICA6
ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsKCiAgcmV0
dXJuIF9fdmFsdWU7Cn0KCmV4dGVybiBfX2lubGluZSAgZG91YmxlIGFzaW4gKGRvdWJsZSBfX3gp
OwpleHRlcm4gX19pbmxpbmUgIGRvdWJsZQphc2luIChkb3VibGUgX194KQp7CiAgcmV0dXJuIGF0
YW4yIChfX3gsIHNxcnQgKDEuMCAtIF9feCAqIF9feCkpOwp9CgpleHRlcm4gX19pbmxpbmUgIGRv
dWJsZSBhY29zIChkb3VibGUgX194KTsKZXh0ZXJuIF9faW5saW5lICBkb3VibGUKYWNvcyAoZG91
YmxlIF9feCkKewogIHJldHVybiBhdGFuMiAoc3FydCAoMS4wIC0gX194ICogX194KSwgX194KTsK
fQoKZXh0ZXJuIF9faW5saW5lICBkb3VibGUgYXRhbiAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lu
bGluZSAgZG91YmxlCmF0YW4gKGRvdWJsZSBfX3gpCnsKICByZWdpc3RlciBkb3VibGUgX192YWx1
ZTsKICBfX2FzbSBfX3ZvbGF0aWxlX18KICAgICgiZmxkMVxuXHQiCiAgICAgImZwYXRhbiIKICAg
ICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsKCiAgcmV0dXJuIF9fdmFsdWU7Cn0KCmV4
dGVybiBfX2lubGluZSAgZG91YmxlIGV4cCAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lubGluZSAg
ZG91YmxlCmV4cCAoZG91YmxlIF9feCkKewogIHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlLCBfX2V4
cG9uZW50OwogIF9fYXNtIF9fdm9sYXRpbGVfXwogICAgKCJmbGRsMmUJCQkjIGVeeCA9IDJeKHgg
KiBsb2cyKGUpKVxuXHQiCiAgICAgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiCiAg
ICAgImZzdGwJJSVzdCgxKVxuXHQiCiAgICAgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlc
blx0IgogICAgICJmeGNoXG5cdCIKICAgICAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cy
KGUpKVxuXHQiCiAgICAgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQi
CiAgICAgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOwog
IF9fdmFsdWUgKz0gMS4wOwogIF9fYXNtIF9fdm9sYXRpbGVfXwogICAgKCJmc2NhbGUiCiAgICAg
OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOwoKICBy
ZXR1cm4gX192YWx1ZTsKfQoKZXh0ZXJuIF9faW5saW5lICBkb3VibGUgc2luaCAoZG91YmxlIF9f
eCk7CmV4dGVybiBfX2lubGluZSAgZG91YmxlCnNpbmggKGRvdWJsZSBfX3gpCnsKICByZWdpc3Rl
ciBkb3VibGUgX19leG0xID0gX19leHBtMSAoZmFicyAoX194KSk7CgogIHJldHVybiAwLjUgKiAo
X19leG0xIC8gKF9fZXhtMSArIDEuMCkgKyBfX2V4bTEpICogX19zZ24xIChfX3gpOwp9CgpleHRl
cm4gX19pbmxpbmUgIGRvdWJsZSBjb3NoIChkb3VibGUgX194KTsKZXh0ZXJuIF9faW5saW5lICBk
b3VibGUKY29zaCAoZG91YmxlIF9feCkKewogIHJlZ2lzdGVyIGRvdWJsZSBfX2V4ID0gZXhwIChf
X3gpOwoKICByZXR1cm4gMC41ICogKF9fZXggKyAxLjAgLyBfX2V4KTsKfQoKZXh0ZXJuIF9faW5s
aW5lICBkb3VibGUgdGFuaCAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lubGluZSAgZG91YmxlCnRh
bmggKGRvdWJsZSBfX3gpCnsKICByZWdpc3RlciBkb3VibGUgX19leG0xID0gX19leHBtMSAoLWZh
YnMgKF9feCArIF9feCkpOwoKICByZXR1cm4gX19leG0xIC8gKF9fZXhtMSArIDIuMCkgKiBfX3Nn
bjEgKC1fX3gpOwp9CgpleHRlcm4gX19pbmxpbmUgIGRvdWJsZSBsb2cgKGRvdWJsZSBfX3gpOwpl
eHRlcm4gX19pbmxpbmUgIGRvdWJsZQpsb2cgKGRvdWJsZSBfX3gpCnsKICByZWdpc3RlciBkb3Vi
bGUgX192YWx1ZTsKICBfX2FzbSBfX3ZvbGF0aWxlX18KICAgICgiZmxkbG4yXG5cdCIKICAgICAi
ZnhjaFxuXHQiCiAgICAgImZ5bDJ4IgogICAgIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkp
OwoKICByZXR1cm4gX192YWx1ZTsKfQoKZXh0ZXJuIF9faW5saW5lICBkb3VibGUgbG9nMTAgKGRv
dWJsZSBfX3gpOwpleHRlcm4gX19pbmxpbmUgIGRvdWJsZQpsb2cxMCAoZG91YmxlIF9feCkKewog
IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOwogIF9fYXNtIF9fdm9sYXRpbGVfXwogICAgKCJmbGRs
ZzJcblx0IgogICAgICJmeGNoXG5cdCIKICAgICAiZnlsMngiCiAgICAgOiAiPXQiIChfX3ZhbHVl
KSA6ICIwIiAoX194KSk7CgogIHJldHVybiBfX3ZhbHVlOwp9CgpleHRlcm4gX19pbmxpbmUgIGRv
dWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpOwpleHRlcm4gX19pbmxpbmUgIGRvdWJsZQpfX2xvZzIg
KGRvdWJsZSBfX3gpCnsKICByZWdpc3RlciBkb3VibGUgX192YWx1ZTsKICBfX2FzbSBfX3ZvbGF0
aWxlX18KICAgICgiZmxkMVxuXHQiCiAgICAgImZ4Y2hcblx0IgogICAgICJmeWwyeCIKICAgICA6
ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsKCiAgcmV0dXJuIF9fdmFsdWU7Cn0KCmV4dGVy
biBfX2lubGluZSAgZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwpleHRlcm4g
X19pbmxpbmUgIGRvdWJsZQpmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KQp7CiAgcmVnaXN0
ZXIgZG91YmxlIF9fdmFsdWU7CiAgX19hc20gX192b2xhdGlsZV9fCiAgICAoIjE6CWZwcmVtXG5c
dCIKICAgICAiZnN0c3cJJSVheFxuXHQiCiAgICAgInNhaGZcblx0IgogICAgICJqcAkxYiIKICAg
ICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsK
CiAgcmV0dXJuIF9fdmFsdWU7Cn0KCmV4dGVybiBfX2lubGluZSAgZG91YmxlIGxkZXhwIChkb3Vi
bGUgX194LCBpbnQgX195KTsKZXh0ZXJuIF9faW5saW5lICBkb3VibGUKbGRleHAgKGRvdWJsZSBf
X3gsIGludCBfX3kpCnsKICByZWdpc3RlciBkb3VibGUgX192YWx1ZTsKICBfX2FzbSBfX3ZvbGF0
aWxlX18KICAgICgiZnNjYWxlIgogICAgIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1
IiAoKGRvdWJsZSkgX195KSk7CgogIHJldHVybiBfX3ZhbHVlOwp9CgpleHRlcm4gX19pbmxpbmUg
IGRvdWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwpleHRlcm4gX19pbmxpbmUgIGRv
dWJsZQpwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpCnsKICByZWdpc3RlciBkb3VibGUgX192
YWx1ZSwgX19leHBvbmVudDsKICBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBf
X3k7CgogIGlmIChfX3ggPT0gMC4wICYmIF9feSA+IDAuMCkKICAgIHJldHVybiAwLjA7CiAgaWYg
KF9feSA9PSAoZG91YmxlKSBfX3ApCiAgICB7CiAgICAgIGRvdWJsZSBfX3IgPSAxLjA7CiAgICAg
IGlmIChfX3AgPT0gMCkKCXJldHVybiAxLjA7CiAgICAgIGlmIChfX3AgPCAwKQoJewoJICBfX3Ag
PSAtX19wOwoJICBfX3ggPSAxLjAgLyBfX3g7Cgl9CiAgICAgIHdoaWxlICgxKQoJewoJICBpZiAo
X19wICYgMSkKCSAgICBfX3IgKj0gX194OwoJICBfX3AgPj49IDE7CgkgIGlmIChfX3AgPT0gMCkK
CSAgICByZXR1cm4gX19yOwoJICBfX3ggKj0gX194OwoJfQogICAgICAgCiAgICB9CiAgX19hc20g
X192b2xhdGlsZV9fCiAgICAoImZtdWwJJSVzdCgxKQkJIyB5ICogbG9nMih4KVxuXHQiCiAgICAg
ImZzdGwJJSVzdCgxKVxuXHQiCiAgICAgImZybmRpbnQJCQkjIGludCh5ICogbG9nMih4KSlcblx0
IgogICAgICJmeGNoXG5cdCIKICAgICAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHkgKiBsb2cyKHgp
KVxuXHQiCiAgICAgImYyeG0xCQkJIyAyXihmcmFjdCh5ICogbG9nMih4KSkpIC0gMVxuXHQiCiAg
ICAgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAgIjAiIChfX2xvZzIgKF9f
eCkpLCAiMSIgKF9feSkpOwogIF9fdmFsdWUgKz0gMS4wOwogIF9fYXNtIF9fdm9sYXRpbGVfXwog
ICAgKCJmc2NhbGUiCiAgICAgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAo
X19leHBvbmVudCkpOwoKICByZXR1cm4gX192YWx1ZTsKfQoKZXh0ZXJuIF9faW5saW5lICBkb3Vi
bGUgZmxvb3IgKGRvdWJsZSBfX3gpOwpleHRlcm4gX19pbmxpbmUgIGRvdWJsZQpmbG9vciAoZG91
YmxlIF9feCkKewogIHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOwogIF9fdm9sYXRpbGUgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fY3csIF9fY3d0bXA7CgogIF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cg
JTAiIDogIj1tIiAoX19jdykpOwogIF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7
ICAKICBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsKICBf
X2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7
CiAgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7CgogIHJldHVy
biBfX3ZhbHVlOwp9CgpleHRlcm4gX19pbmxpbmUgIGRvdWJsZSBjZWlsIChkb3VibGUgX194KTsK
ZXh0ZXJuIF9faW5saW5lICBkb3VibGUKY2VpbCAoZG91YmxlIF9feCkKewogIHJlZ2lzdGVyIGRv
dWJsZSBfX3ZhbHVlOwogIF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3csIF9fY3d0
bXA7CgogIF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOwogIF9f
Y3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7ICAKICBfX2FzbSBfX3ZvbGF0aWxlICgi
ZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsKICBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGlu
dCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7CiAgX19hc20gX192b2xhdGlsZSAoImZs
ZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7CgogIHJldHVybiBfX3ZhbHVlOwp9CgoKIAoKCmV4dGVy
biBfX2lubGluZSAgZG91YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KTsKZXh0ZXJu
IF9faW5saW5lICBkb3VibGUKaHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpCnsKICByZXR1
cm4gc3FydCAoX194ICogX194ICsgX195ICogX195KTsKfQoKIAoKCgpleHRlcm4gX19pbmxpbmUg
IGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lubGluZSAgZG91YmxlCmxvZzFw
IChkb3VibGUgX194KQp7CiAgcmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7CgogIGlmIChmYWJzIChf
X3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMICkKICAgIF9fdmFsdWUg
PSBsb2cgKDEuMCArIF9feCk7CiAgZWxzZQogICAgX19hc20gX192b2xhdGlsZV9fCiAgICAgICgi
ZmxkbG4yXG5cdCIKICAgICAgICJmeGNoXG5cdCIKICAgICAgICJmeWwyeHAxIgogICAgICAgOiAi
PXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7CgogIHJldHVybiBfX3ZhbHVlOwp9CgpleHRlcm4g
X19pbmxpbmUgIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lubGluZSAgZG91
YmxlCmFzaW5oIChkb3VibGUgX194KQp7CiAgcmVnaXN0ZXIgZG91YmxlIF9feSA9IGZhYnMgKF9f
eCk7CgogIHJldHVybiBsb2cxcCAoKF9feSAqIF9feSAvIChzcXJ0IChfX3kgKiBfX3kgKyAxLjAp
ICsgMS4wKSArIF9feSkKCQkqIF9fc2duMSAoX194KSk7Cn0KCmV4dGVybiBfX2lubGluZSAgZG91
YmxlIGFjb3NoIChkb3VibGUgX194KTsKZXh0ZXJuIF9faW5saW5lICBkb3VibGUKYWNvc2ggKGRv
dWJsZSBfX3gpCnsKICByZXR1cm4gbG9nIChfX3ggKyBzcXJ0IChfX3ggLSAxLjApICogc3FydCAo
X194ICsgMS4wKSk7Cn0KCmV4dGVybiBfX2lubGluZSAgZG91YmxlIGF0YW5oIChkb3VibGUgX194
KTsKZXh0ZXJuIF9faW5saW5lICBkb3VibGUKYXRhbmggKGRvdWJsZSBfX3gpCnsKICByZWdpc3Rl
ciBkb3VibGUgX195ID0gZmFicyAoX194KTsKCiAgcmV0dXJuIC0wLjUgKiBfX2xvZzFwICgtKF9f
eSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjEgKF9feCk7Cn0KCmV4dGVybiBfX2lubGlu
ZSAgZG91YmxlIGNvc2htMSAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lubGluZSAgZG91YmxlCmNv
c2htMSAoZG91YmxlIF9feCkKewogIHJlZ2lzdGVyIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xIChm
YWJzIChfX3gpKTsKCiAgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSkgKiBf
X2V4bTE7Cn0KCmV4dGVybiBfX2lubGluZSAgZG91YmxlIGFjb3NoMXAgKGRvdWJsZSBfX3gpOwpl
eHRlcm4gX19pbmxpbmUgIGRvdWJsZQphY29zaDFwIChkb3VibGUgX194KQp7CiAgcmV0dXJuIF9f
bG9nMXAgKF9feCArIHNxcnQgKF9feCkgKiBzcXJ0IChfX3ggKyAyLjApKTsKfQoKZXh0ZXJuIF9f
aW5saW5lICBkb3VibGUgbG9nYiAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lubGluZSAgZG91Ymxl
CmxvZ2IgKGRvdWJsZSBfX3gpCnsKICByZWdpc3RlciBkb3VibGUgX192YWx1ZSwgX19qdW5rOwog
IF9fYXNtIF9fdm9sYXRpbGVfXwogICAgKCJmeHRyYWN0XG5cdCIKICAgICA6ICI9dCIgKF9fanVu
ayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsKCiAgcmV0dXJuIF9fdmFsdWU7Cn0KCmV4
dGVybiBfX2lubGluZSAgZG91YmxlIGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwpleHRl
cm4gX19pbmxpbmUgIGRvdWJsZQpkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KQp7CiAgcmVn
aXN0ZXIgZG91YmxlIF9fdmFsdWU7CiAgX19hc20gX192b2xhdGlsZV9fCiAgICAoIjE6CWZwcmVt
MVxuXHQiCiAgICAgImZzdHN3CSUlYXhcblx0IgogICAgICJzYWhmXG5cdCIKICAgICAianAJMWIi
CiAgICAgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImF4IiwgImNj
Iik7CgogIHJldHVybiBfX3ZhbHVlOwp9CgpleHRlcm4gX19pbmxpbmUgIHZvaWQgc2luY29zIChk
b3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nvc3gpOwpleHRlcm4gX19pbmxp
bmUgIHZvaWQKc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nv
c3gpCnsKICByZWdpc3RlciBkb3VibGUgX19jb3NyLCBfX3NpbnI7CiAgX19hc20gX192b2xhdGls
ZV9fCiAgICAoImZzaW5jb3MiCiAgICAgOiAiPXQiIChfX2Nvc3IpLCAiPXUiIChfX3NpbnIpIDog
IjAiIChfX3gpKTsKCiAgKl9fc2lueCA9IF9fc2lucjsKICAqX19jb3N4ID0gX19jb3NyOwp9Cgpl
eHRlcm4gX19pbmxpbmUgIGRvdWJsZSBfX3NnbiAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lubGlu
ZSAgZG91YmxlCl9fc2duIChkb3VibGUgX194KQp7CiAgcmV0dXJuIChfX3ggPT0gMC4wID8gMC4w
IDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApKTsKfQoKZXh0ZXJuIF9faW5saW5lICBkb3VibGUg
cG93MiAoZG91YmxlIF9feCk7CmV4dGVybiBfX2lubGluZSAgZG91YmxlCnBvdzIgKGRvdWJsZSBf
X3gpCnsKICByZWdpc3RlciBkb3VibGUgX192YWx1ZSwgX19leHBvbmVudDsKICBpbnQgX19wID0g
KGludCkgX194OwoKICBpZiAoX194ID09IChkb3VibGUpIF9fcCkKICAgIHJldHVybiBsZGV4cCAo
MS4wLCBfX3ApOwoKICBfX2FzbSBfX3ZvbGF0aWxlX18KICAgICgiZmxkbAklJXN0KDApXG5cdCIK
ICAgICAiZnJuZGludAkJCSMgaW50KHgpXG5cdCIKICAgICAiZnhjaFxuXHQiCiAgICAgImZzdWIJ
JSVzdCgxKQkJIyBmcmFjdCh4KVxuXHQiCiAgICAgImYyeG0xCQkJIyAyXihmcmFjdCh4KSkgLSAx
XG5cdCIKICAgICA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194
KSk7CiAgX192YWx1ZSArPSAxLjA7CiAgX19hc20gX192b2xhdGlsZV9fCiAgICAoImZzY2FsZSIK
ICAgICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7
CgogIHJldHVybiBfX3ZhbHVlOwp9CgoKCgoKCgojIDIwOCAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MiAzCgoKCgogCgoKCiMgMjggIi4uL2twYXRoc2VhL2Mtc3RkLmgiIDIKCgojIDEgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwogCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1
ZGUvZ251L3R5cGVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCnR5cGVkZWYgdW5z
aWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9u
ZzsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90Owp0eXBlZGVmIGxv
bmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDEgIi91c3IvaW5jbHVkZS9nbnUvdHlwZXMuaCIgMwoK
dHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7
CQkgCnR5cGVkZWYgX191X2ludCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsJ
CSAKdHlwZWRlZiBfX3VfbG9uZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7
CQkgCnR5cGVkZWYgX191X2ludCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcgaW50IF9fb2Zm
X3Q7CQkgCnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50IF9fcGlkX3Q7
CQkJIAp0eXBlZGVmIGludCBfX3NzaXplX3Q7CQkJIAoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBp
bnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsJCQkJIAoKIAp0eXBlZGVmIGludCBfX2RhZGRyX3Q7
CQkJIAp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsK
dHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CQkgCgwKdHlwZWRlZiBsb25nIGludCBfX2Nsb2Nr
X3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mZF9tYXNrOwoKIAoKCiAKCgoKCiAK
dHlwZWRlZiBzdHJ1Y3QKICB7CiAgICAgCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAgLyAo
OCAqIHNpemVvZiAoX19mZF9tYXNrKSkgXTsKICB9IF9fZmRfc2V0OwoKCnR5cGVkZWYgaW50IF9f
a2V5X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgojIDkgIi91
c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4
Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5
ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4
L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdj
Yy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2Mt
Mi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50
ICB3aW50X3Q7CgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3Bn
Y2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiMgMTMgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKdHlw
ZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsK
dHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykp
KTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k
ZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKIAoKCgoK
CgoKCgoKCgoKCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoKCgoKCgoKCgog
CgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9z
dGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsK
CgoKIAoKIyAxMTYgIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5j
bHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyMDIgIi91c3IvbGliL2djYy1s
aWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKIyA0NyAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwoKCgoKCgoKIyA2NCAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA5OCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCnN0cnVjdCBfSU9fanVtcF90OyAgc3RydWN0IF9JT19GSUxFOwoKIAoKCgp0eXBlZGVmIHZv
aWQgX0lPX2xvY2tfdDsKCgoKIAoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFy
a2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwogICAKCiAgIAogIGludCBfcG9z
OwojIDE4MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewog
IGludCBfZmxhZ3M7CQkgCgoKICAgCiAgIAogIGNoYXIqIF9JT19yZWFkX3B0cjsJIAogIGNoYXIq
IF9JT19yZWFkX2VuZDsJIAogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CSAKICBjaGFyKiBfSU9fd3Jp
dGVfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9wdHI7CSAKICBjaGFyKiBfSU9fd3JpdGVfZW5k
OwkgCiAgY2hhciogX0lPX2J1Zl9iYXNlOwkgCiAgY2hhciogX0lPX2J1Zl9lbmQ7CSAKICAgCiAg
Y2hhciAqX0lPX3NhdmVfYmFzZTsgIAogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsgICAKICBjaGFy
ICpfSU9fc2F2ZV9lbmQ7ICAKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1
Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9f
b2ZmX3QgICBfb2Zmc2V0OwoKCiAgIAogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIGNo
YXIgX3VudXNlZDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCiAgIAoKICBfSU9fbG9ja190ICpfbG9j
azsKfTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJ
TEVfcGx1czsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT19zdGRpbl8sIF9JT19zdGRv
dXRfLCBfSU9fc3RkZXJyXzsKCgoKCgogCnR5cGVkZWYgc3RydWN0CnsKICBfX3NzaXplX3QgICAo
KnJlYWQpICAoc3RydWN0IF9JT19GSUxFICosIHZvaWQgKiwgX19zc2l6ZV90ICApICA7CiAgX19z
c2l6ZV90ICAgKCp3cml0ZSkgIChzdHJ1Y3QgX0lPX0ZJTEUgKiwgY29uc3Qgdm9pZCAqLCBfX3Nz
aXplX3QgICkgIDsKICBfX29mZl90ICAgKCpzZWVrKSAgKHN0cnVjdCBfSU9fRklMRSAqLCBfX29m
Zl90ICAsIGludCkgIDsKICBpbnQgKCpjbG9zZSkgIChzdHJ1Y3QgX0lPX0ZJTEUgKikgIDsKfSBf
SU9fY29va2llX2lvX2Z1bmN0aW9uc190OwoKIApzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlIHsKICBz
dHJ1Y3QgX0lPX0ZJTEUgZmlsZTsKICBjb25zdCB2b2lkICp2dGFibGU7CiAgdm9pZCAqY29va2ll
OwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgaW9fZnVuY3Rpb25zOwp9OwoKCgoKCgpleHRl
cm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJTEUqKSAgOwpleHRlcm4gaW50IF9fdWZsb3cgIChf
SU9fRklMRSopICA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAgKF9JT19GSUxFKiwgaW50KSAgOwoK
CgoKCgoKCgoKCgoKCgoKCmV4dGVybiBpbnQgX0lPX2dldGMgIChfSU9fRklMRSAqX19mcCkgIDsK
ZXh0ZXJuIGludCBfSU9fcHV0YyAgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSAgOwpleHRlcm4g
aW50IF9JT19mZW9mICAoX0lPX0ZJTEUgKl9fZnApICA7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAg
KF9JT19GSUxFICpfX2ZwKSAgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkICAoX0lPX0ZJ
TEUgKl9fZnApICA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAq
KSAgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgOwpleHRlcm4g
aW50IF9JT19mdHJ5bG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgOwoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgpleHRlcm4gaW50IF9JT192ZnNjYW5mICAoX0lPX0ZJTEUqLCBjb25zdCBjaGFyKiwg
X19nbnVjX3ZhX2xpc3QgLCBpbnQqKSAgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAgKF9JT19G
SUxFKiwgY29uc3QgY2hhciosIF9fZ251Y192YV9saXN0ICkgIDsKZXh0ZXJuIF9fc3NpemVfdCAg
IF9JT19wYWRuICAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QgICkgIDsKZXh0ZXJuIHNpemVf
dCAgIF9JT19zZ2V0biAgKF9JT19GSUxFICosIHZvaWQqLCBzaXplX3QgICkgIDsKCmV4dGVybiBf
X29mZl90ICAgX0lPX3NlZWtvZmYgIChfSU9fRklMRSosIF9fb2ZmX3QgICwgaW50LCBpbnQpICA7
CmV4dGVybiBfX29mZl90ICAgX0lPX3NlZWtwb3MgIChfSU9fRklMRSosIF9fb2ZmX3QgICwgaW50
KSAgOwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgIChfSU9fRklMRSopICA7CgoK
CgoKCiMgMjkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAgCiMgNjkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKdHlwZWRlZiBzdHJ1Y3QgX0lP
X0ZJTEUgRklMRTsKdHlwZWRlZiBfX29mZl90ICAgZnBvc190OwoKIyAxICIvdXNyL2luY2x1ZGUv
c3RkaW9fbGltLmgiIDEgMwoKCgoKCgoKCgoKCgoKCgoKCiMgNzQgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAyIDMKCgoKIAoKCgogCmV4dGVybiBGSUxFICpzdGRpbiwgKnN0ZG91dCwgKnN0ZGVycjsg
IAoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyICAoRklMRSopICA7CmV4dGVy
biBpbnQgZmNsb3NlICAoRklMRSopICA7CmV4dGVybiBpbnQgZmVvZiAgKEZJTEUqKSAgOwpleHRl
cm4gaW50IGZlcnJvciAgKEZJTEUqKSAgOwpleHRlcm4gaW50IGZmbHVzaCAgKEZJTEUqKSAgOwpl
eHRlcm4gaW50IGZnZXRjICAoRklMRSAqKSAgOwpleHRlcm4gaW50IGZnZXRwb3MgIChGSUxFKiBm
cCwgZnBvc190ICpfX3BvcykgIDsKZXh0ZXJuIGNoYXIqIGZnZXRzICAoY2hhciosIGludCwgRklM
RSopICA7CmV4dGVybiBGSUxFKiBmb3BlbiAgKF9fY29uc3QgY2hhciosIF9fY29uc3QgY2hhciop
ICA7CmV4dGVybiBGSUxFKiBmb3BlbmNvb2tpZSAgKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNo
YXIgKl9fbW9kZSwKCQkJICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5j
dGlvbnMpICA7CmV4dGVybiBpbnQgZnByaW50ZiAgKEZJTEUqLCBfX2NvbnN0IGNoYXIqIF9fZm9y
bWF0LCAuLi4pICA7CmV4dGVybiBpbnQgZnB1dGMgIChpbnQsIEZJTEUqKSAgOwpleHRlcm4gaW50
IGZwdXRzICAoX19jb25zdCBjaGFyICpfX3N0ciwgRklMRSAqX19mcCkgIDsKZXh0ZXJuIHNpemVf
dCBmcmVhZCAgKHZvaWQqLCBzaXplX3QsIHNpemVfdCwgRklMRSopICA7CmV4dGVybiBGSUxFKiBm
cmVvcGVuICAoX19jb25zdCBjaGFyKiwgX19jb25zdCBjaGFyKiwgRklMRSopICA7CmV4dGVybiBp
bnQgZnNjYW5mICAoRklMRSAqX19mcCwgX19jb25zdCBjaGFyKiBfX2Zvcm1hdCwgLi4uKSAgOwpl
eHRlcm4gaW50IGZzZWVrICAoRklMRSogX19mcCwgbG9uZyBpbnQgX19vZmZzZXQsIGludCBfX3do
ZW5jZSkgIDsKZXh0ZXJuIGludCBmc2V0cG9zICAoRklMRSogX19mcCwgX19jb25zdCBmcG9zX3Qg
Kl9fcG9zKSAgOwpleHRlcm4gbG9uZyBpbnQgZnRlbGwgIChGSUxFKiBfX2ZwKSAgOwpleHRlcm4g
c2l6ZV90IGZ3cml0ZSAgKF9fY29uc3Qgdm9pZCosIHNpemVfdCwgc2l6ZV90LCBGSUxFKikgIDsK
ZXh0ZXJuIGludCBnZXRjICAoRklMRSAqKSAgOwpleHRlcm4gaW50IGdldGNoYXIgICh2b2lkKSAg
OwpleHRlcm4gY2hhciogZ2V0cyAgKGNoYXIqKSAgOwpleHRlcm4gdm9pZCBwZXJyb3IgIChfX2Nv
bnN0IGNoYXIgKikgIDsKZXh0ZXJuIGludCBwcmludGYgIChfX2NvbnN0IGNoYXIqIF9fZm9ybWF0
LCAuLi4pICA7CmV4dGVybiBpbnQgcHV0YyAgKGludCwgRklMRSAqKSAgOwpleHRlcm4gaW50IHB1
dGNoYXIgIChpbnQpICA7CmV4dGVybiBpbnQgcHV0cyAgKF9fY29uc3QgY2hhciAqX19zdHIpICA7
CmV4dGVybiBpbnQgcmVtb3ZlICAoX19jb25zdCBjaGFyKikgIDsKZXh0ZXJuIGludCByZW5hbWUg
IChfX2NvbnN0IGNoYXIqIF9fb2xkLCBfX2NvbnN0IGNoYXIqIF9fbmV3KSAgOwpleHRlcm4gdm9p
ZCByZXdpbmQgIChGSUxFKikgIDsKZXh0ZXJuIGludCBzY2FuZiAgKF9fY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pICA7CmV4dGVybiB2b2lkIHNldGJ1ZiAgKEZJTEUqLCBjaGFyKikgIDsKZXh0ZXJu
IHZvaWQgc2V0bGluZWJ1ZiAgKEZJTEUqKSAgOwpleHRlcm4gdm9pZCBzZXRidWZmZXIgIChGSUxF
KiwgY2hhciosIGludCkgIDsKZXh0ZXJuIGludCBzZXR2YnVmICAoRklMRSosIGNoYXIqLCBpbnQg
X19tb2RlLCBzaXplX3QgX19zaXplKSAgOwpleHRlcm4gaW50IHNwcmludGYgIChjaGFyKiwgX19j
b25zdCBjaGFyKiBfX2Zvcm1hdCwgLi4uKSAgOwpleHRlcm4gaW50IHNzY2FuZiAgKF9fY29uc3Qg
Y2hhciogc3RyaW5nLCBfX2NvbnN0IGNoYXIqIF9fZm9ybWF0LCAuLi4pICA7CmV4dGVybiBGSUxF
KiB0bXBmaWxlICAodm9pZCkgIDsKZXh0ZXJuIGNoYXIqIHRtcG5hbSAgKGNoYXIqKSAgOwoKZXh0
ZXJuIGNoYXIqIHRtcG5hbV9yICAoY2hhciopICA7CgoKZXh0ZXJuIGNoYXIgKnRlbXBuYW0gIChf
X2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KSAgOwoKZXh0ZXJuIGNoYXIg
Kl9fc3RkaW9fZ2VuX3RlbXBuYW1lICAoY2hhciAqX19idWYsIHNpemVfdCBidWZzaXplLAoJCQkJ
CV9fY29uc3QgY2hhciAqZGlyLCBfX2NvbnN0IGNoYXIgKnBmeCwKCQkJCQlpbnQgZGlyX3NlYXJj
aCwgc2l6ZV90ICpsZW5wdHIsCgkJCQkJRklMRSAqKnN0cmVhbXB0cikgIDsKZXh0ZXJuIGludCB1
bmdldGMgIChpbnQgYywgRklMRSogZnApICA7CmV4dGVybiBpbnQgdmZwcmludGYgIChGSUxFICpm
cCwgY2hhciBfX2NvbnN0ICpmbXQwLCBfX2dudWNfdmFfbGlzdCApICA7CmV4dGVybiBpbnQgdnBy
aW50ZiAgKGNoYXIgX19jb25zdCAqZm10LCBfX2dudWNfdmFfbGlzdCApICA7CmV4dGVybiBpbnQg
dnNwcmludGYgIChjaGFyKiBzdHJpbmcsIF9fY29uc3QgY2hhciogZm9ybWF0LCBfX2dudWNfdmFf
bGlzdCApICA7CmV4dGVybiB2b2lkIF9fbGliY19mYXRhbCAgKF9fY29uc3QgY2hhciAqX19tZXNz
YWdlKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCmV4dGVybiBpbnQg
ZHByaW50ZiAgKGludCwgX19jb25zdCBjaGFyICosIC4uLikgIDsKZXh0ZXJuIGludCB2ZHByaW50
ZiAgKGludCwgX19jb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0ICkgIDsKZXh0ZXJuIGludCB2
ZnNjYW5mICAoRklMRSosIF9fY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCApICA7CmV4dGVy
biBpbnQgX192ZnNjYW5mICAoRklMRSosIF9fY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCAp
ICA7CmV4dGVybiBpbnQgdnNjYW5mICAoX19jb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0ICkg
IDsKZXh0ZXJuIGludCB2c3NjYW5mICAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqLCBf
X2dudWNfdmFfbGlzdCApICA7CmV4dGVybiBpbnQgX192c3NjYW5mICAoX19jb25zdCBjaGFyICos
IF9fY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCApICA7CgoKIyAxNzcgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAzCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gIChpbnQsIF9fY29uc3QgY2hhciAq
KSAgOwpleHRlcm4gaW50IGZpbGVubyAgKEZJTEUqKSAgOwpleHRlcm4gRklMRSogcG9wZW4gIChf
X2NvbnN0IGNoYXIqLCBfX2NvbnN0IGNoYXIqKSAgOwpleHRlcm4gaW50IHBjbG9zZSAgKEZJTEUq
KSAgOwoKCgoKIApleHRlcm4gY2hhciAqY3Rlcm1pZCAgKGNoYXIgKl9fYnVmKSAgOwoKIApleHRl
cm4gY2hhciAqY3VzZXJpZCAgKGNoYXIgKiBfX2J1ZikgIDsKCgoKZXh0ZXJuIGludCBzbnByaW50
ZiAgKGNoYXIgKiwgc2l6ZV90LCBfX2NvbnN0IGNoYXIgKiwgLi4uKSAgOwpleHRlcm4gaW50IF9f
c25wcmludGYgIChjaGFyICosIHNpemVfdCwgX19jb25zdCBjaGFyICosIC4uLikgIDsKZXh0ZXJu
IGludCB2c25wcmludGYgIChjaGFyICosIHNpemVfdCwgX19jb25zdCBjaGFyICosIF9fZ251Y192
YV9saXN0ICkgIDsKZXh0ZXJuIGludCBfX3ZzbnByaW50ZiAgKGNoYXIgKiwgc2l6ZV90LCBfX2Nv
bnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QgKSAgOwoKCiMgMjE0ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMwoKCmV4dGVybiBpbnQgX191bmRlcmZsb3cgIChzdHJ1Y3QgX0lPX0ZJTEUqKSAgOwpl
eHRlcm4gaW50IF9fb3ZlcmZsb3cgIChzdHJ1Y3QgX0lPX0ZJTEUqLCBpbnQpICA7CgoKZXh0ZXJu
IGludCBzeXNfbmVycjsKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19lcnJsaXN0W107CgoK
CgoKCiAKCmV4dGVybiB2b2lkIGNsZWFyZXJyX2xvY2tlZCAgKEZJTEUgKikgIDsKZXh0ZXJuIHZv
aWQgY2xlYXJlcnJfdW5sb2NrZWQgIChGSUxFICopICA7CmV4dGVybiBpbnQgZmVvZl9sb2NrZWQg
IChGSUxFICopICA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAgKEZJTEUgKikgIDsKZXh0ZXJu
IGludCBmZXJyb3JfbG9ja2VkICAoRklMRSopICA7CmV4dGVybiBpbnQgZmVycm9yX3VubG9ja2Vk
ICAoRklMRSopICA7CmV4dGVybiBpbnQgZmlsZW5vX2xvY2tlZCAgKEZJTEUgKikgIDsKZXh0ZXJu
IGludCBmaWxlbm9fdW5sb2NrZWQgIChGSUxFICopICA7CmV4dGVybiBpbnQgZmNsb3NlX3VubG9j
a2VkICAoRklMRSAqKSAgOwpleHRlcm4gaW50IGZmbHVzaF9sb2NrZWQgIChGSUxFICopICA7CmV4
dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkICAoRklMRSAqKSAgOwpleHRlcm4gc2l6ZV90IGZyZWFk
X3VubG9ja2VkICAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAqKSAgOwpleHRlcm4gc2l6
ZV90IGZ3cml0ZV91bmxvY2tlZCAgKGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUg
KikgIDsKCmV4dGVybiBpbnQgZnB1dGNfbG9ja2VkICAoaW50LCBGSUxFKikgIDsKZXh0ZXJuIGlu
dCBmcHV0Y191bmxvY2tlZCAgKGludCwgRklMRSopICA7CmV4dGVybiBpbnQgZ2V0Y19sb2NrZWQg
IChGSUxFICopICA7CmV4dGVybiBpbnQgZ2V0Y2hhcl9sb2NrZWQgICh2b2lkKSAgOwpleHRlcm4g
aW50IHB1dGNfbG9ja2VkICAoaW50LCBGSUxFICopICA7CmV4dGVybiBpbnQgcHV0Y2hhcl9sb2Nr
ZWQgIChpbnQpICA7CgoKCgoKCgoKCiAKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlICAoRklMRSAqKSAg
OwpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAgKEZJTEUgKikgIDsKZXh0ZXJuIGludCBmdHJ5bG9j
a2ZpbGUgIChGSUxFICopICA7CgpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgIChGSUxFICopICA7
CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAgKHZvaWQpICA7CmV4dGVybiBpbnQgcHV0Y191
bmxvY2tlZCAgKGludCwgRklMRSAqKSAgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgIChp
bnQpICA7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMwICIuLi9rcGF0aHNlYS9jLXN0ZC5oIiAy
CgoKIAojIDEgIi4uL2twYXRoc2VhL2MtdW5pc3RkLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCiMgMSAiLi4va3BhdGhzZWEvc3lzdHlwZXMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKIAoKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0
IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7
CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5
cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKdHlwZWRlZiBf
X2dpZF90IGdpZF90Owp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CnR5cGVkZWYgX19tb2RlX3QgbW9k
ZV90Owp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190Owp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CnR5
cGVkZWYgX19sb2ZmX3QgbG9mZl90Owp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CnR5cGVkZWYgX191
aWRfdCB1aWRfdDsKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2Rh
ZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBfX2tl
eV90IGtleV90OwoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTYgIi91c3IvaW5jbHVkZS90aW1lLmgi
IDMKCgoKIyA2OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgoKCgogCnR5cGVkZWYgX190
aW1lX3QgdGltZV90OwoKCgoKCiMgOTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgojIDEy
NSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDI4MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MwoKCgojIDY3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgojIDEgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoK
CgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2k2
ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODgg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdj
Yy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDcwICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDIgMwoKCgogCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgog
CgojIDk1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgogCgoKCgoKdHlwZWRlZiBpbnQg
aW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyAp
KSkgOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJ
X18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChf
X21vZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9f
ICgoX19tb2RlX18gKCAgX19TSV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9fICkpKSA7CnR5cGVkZWYgaW50IGlu
dDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElfXyApKSkgOwp0eXBlZGVmIHVu
c2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElfXyAp
KSkgOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f
d29yZF9fKSkpOwoKCiAKCgoKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2J5dGVz
ZXguaCIgMSAzCiAKCgojIDM0ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwoKCgoKCgoKCgoK
IyAxMjMgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVk
ZS9zeXMvc2VsZWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCiAKIyAx
ICIvdXNyL2luY2x1ZGUvc2VsZWN0Yml0cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIyA1MCAiL3Vzci9pbmNsdWRlL3NlbGVjdGJpdHMuaCIgMwoKIyA2
NSAiL3Vzci9pbmNsdWRlL3NlbGVjdGJpdHMuaCIgMwoKCgojIDMxICIvdXNyL2luY2x1ZGUvc3lz
L3NlbGVjdC5oIiAyIDMKCgogCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTYgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKCgoKIyA2OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDgwICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAzCgoKCgoKCgoKCiAKCnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIGxvbmcg
aW50IHR2X3NlYzsJCSAKICAgIGxvbmcgaW50IHR2X25zZWM7CQkgCiAgfTsKCgoKCgoKIyAxMjUg
Ii91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAyODEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMK
CgoKIyAzNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIAoKIAoKCgpzdHJ1Y3Qg
dGltZXZhbDsKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgogCnR5cGVkZWYgX19mZF9zZXQg
ZmRfc2V0OwoKIAoKCgogCgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBpbnQgX19zZWxlY3QgIChp
bnQgX19uZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLAoJCQkgIF9fZmRfc2V0ICpfX3dyaXRlZmRz
LCBfX2ZkX3NldCAqX19leGNlcHRmZHMsCgkJCSAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkg
IDsKZXh0ZXJuIGludCBzZWxlY3QgIChpbnQgX19uZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLAoJ
CQlfX2ZkX3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLAoJCQlzdHJ1Y3Qg
dGltZXZhbCAqX190aW1lb3V0KSAgOwoKIAoKCmV4dGVybiBpbnQgX19wc2VsZWN0ICAoaW50IF9f
bmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJICAgX19mZF9zZXQgKl9fd3JpdGVmZHMsIF9f
ZmRfc2V0ICpfX2V4Y2VwdGZkcywKCQkJICAgc3RydWN0IHRpbWVzcGVjICpfX3RpbWVvdXQpICA7
CmV4dGVybiBpbnQgcHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJ
CSBfX2ZkX3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLAoJCQkgc3RydWN0
IHRpbWVzcGVjICpfX3RpbWVvdXQpICA7CgoKIAoKCiMgMTI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDIgMwoKCgoKIAoKCiMgMjQgIi4uL2twYXRoc2VhL3N5c3R5cGVzLmgiIDIKCgogCgoK
CgojIDI0ICIuLi9rcGF0aHNlYS9jLXVuaXN0ZC5oIiAyCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgogCgoKIAoKCgogCgoK
CgogCgoKCiAKCgoKIAoKCgogCgoKCiAKCgogCgoKIAoKCgoKIAoKCiAKCgogCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvcG9zaXhfb3B0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgog
CgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgog
CgoKIAoKCgogCgoKIAogCgoKIyAxMzcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKCiAK
CgoKCgogCgoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIu
OTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2Mt
bGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAK
CgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAK
CiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51
eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIv
dXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNs
dWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51
eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgojIDE1NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKIAoKCgoKCgogCmV4dGVy
biBpbnQgX19hY2Nlc3MgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgIDsKZXh0
ZXJuIGludCBhY2Nlc3MgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgIDsKCgoK
CgoKCgoKIAoKCgoKCgoKIAoKCgoKCgogCgoKCgpleHRlcm4gX19vZmZfdCBfX2xzZWVrICAoaW50
IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgIDsKZXh0ZXJuIF9fb2ZmX3Qg
bHNlZWsgIChpbnQgX19mZCwgX19vZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSAgOwoKIApl
eHRlcm4gaW50IF9fY2xvc2UgIChpbnQgX19mZCkgIDsKZXh0ZXJuIGludCBjbG9zZSAgKGludCBf
X2ZkKSAgOwoKIAoKZXh0ZXJuIHNzaXplX3QgIF9fcmVhZCAgKGludCBfX2ZkLCB2b2lkICogIF9f
YnVmLCBzaXplX3QgX19uYnl0ZXMpICA7CmV4dGVybiBzc2l6ZV90ICByZWFkICAoaW50IF9fZmQs
IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX25ieXRlcykgIDsKCiAKZXh0ZXJuIHNzaXplX3QgIF9f
d3JpdGUgIChpbnQgX19mZCwgX19jb25zdCB2b2lkICogIF9fYnVmLCBzaXplX3QgX19uKSAgOwpl
eHRlcm4gc3NpemVfdCAgd3JpdGUgIChpbnQgX19mZCwgX19jb25zdCB2b2lkICogIF9fYnVmLCBz
aXplX3QgX19uKSAgOwoKCiAKCgoKZXh0ZXJuIGludCBfX3BpcGUgIChpbnQgX19waXBlZGVzWzJd
KSAgOwpleHRlcm4gaW50IHBpcGUgIChpbnQgX19waXBlZGVzWzJdKSAgOwoKIAoKCgoKCgpleHRl
cm4gdW5zaWduZWQgaW50IGFsYXJtICAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgIDsKCiAKCgoK
CgoKZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpICA7
CgoKIAoKCgpleHRlcm4gdW5zaWduZWQgaW50IHVhbGFybSAgKHVuc2lnbmVkIGludCBfX3ZhbHVl
LAoJCQkJIHVuc2lnbmVkIGludCBfX2ludGVydmFsKSAgOwoKIAoKZXh0ZXJuIHZvaWQgdXNsZWVw
ICAodW5zaWduZWQgaW50IF9fdXNlY29uZHMpICA7CgoKCiAKCmV4dGVybiBpbnQgcGF1c2UgICh2
b2lkKSAgOwoKCiAKZXh0ZXJuIGludCBfX2Nob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsCgkJ
CSBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkgIDsKZXh0ZXJuIGludCBjaG93biAg
KF9fY29uc3QgY2hhciAqX19maWxlLAoJCSAgICAgICBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3Qg
X19ncm91cCkgIDsKCgogCmV4dGVybiBpbnQgX19mY2hvd24gIChpbnQgX19mZCwKCQkJICBfX3Vp
ZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkgIDsKZXh0ZXJuIGludCBmY2hvd24gIChpbnQg
X19mZCwKCQkJX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApICA7CgoKIAoKZXh0ZXJu
IGludCBfX2xjaG93biAgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3duZXIsCgkJ
CSAgX19naWRfdCBfX2dyb3VwKSAgOwpleHRlcm4gaW50IGxjaG93biAgKF9fY29uc3QgY2hhciAq
X19maWxlLCBfX3VpZF90IF9fb3duZXIsCgkJCV9fZ2lkX3QgX19ncm91cCkgIDsKCgoKIApleHRl
cm4gaW50IF9fY2hkaXIgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgIDsKZXh0ZXJuIGludCBjaGRp
ciAgKF9fY29uc3QgY2hhciAqX19wYXRoKSAgOwoKCiAKZXh0ZXJuIGludCBmY2hkaXIgIChpbnQg
X19mZCkgIDsKCgogCgoKCgoKCmV4dGVybiBjaGFyICpfX2dldGN3ZCAgKGNoYXIgKl9fYnVmLCBz
aXplX3QgX19zaXplKSAgOwpleHRlcm4gY2hhciAqZ2V0Y3dkICAoY2hhciAqX19idWYsIHNpemVf
dCBfX3NpemUpICA7CgojIDMxNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoKCiAKCgpleHRl
cm4gY2hhciAqZ2V0d2QgIChjaGFyICpfX2J1ZikgIDsKCgoKIApleHRlcm4gaW50IF9fZHVwICAo
aW50IF9fZmQpICA7CmV4dGVybiBpbnQgZHVwICAoaW50IF9fZmQpICA7CgogCmV4dGVybiBpbnQg
X19kdXAyICAoaW50IF9fZmQsIGludCBfX2ZkMikgIDsKZXh0ZXJuIGludCBkdXAyICAoaW50IF9f
ZmQsIGludCBfX2ZkMikgIDsKCiAKZXh0ZXJuIGNoYXIgKipfX2Vudmlyb247CgoKCgoKIAoKZXh0
ZXJuIGludCBfX2V4ZWN2ZSAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9f
YXJndltdLAoJCQkgIGNoYXIgKl9fY29uc3QgX19lbnZwW10pICA7CmV4dGVybiBpbnQgZXhlY3Zl
ICAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCgkJCWNoYXIg
Kl9fY29uc3QgX19lbnZwW10pICA7CgoKCgoKCgoKCgogCmV4dGVybiBpbnQgZXhlY3YgIChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgIDsKCiAKCmV4dGVybiBp
bnQgZXhlY2xlICAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29uc3QgY2hhciAqX19hcmcsIC4u
LikgIDsKCiAKCmV4dGVybiBpbnQgZXhlY2wgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25z
dCBjaGFyICpfX2FyZywgLi4uKSAgOwoKIAoKZXh0ZXJuIGludCBleGVjdnAgIChfX2NvbnN0IGNo
YXIgKl9fZmlsZSwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgIDsKCiAKCgpleHRlcm4gaW50IGV4
ZWNscCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pICA7
CgoKCiAKZXh0ZXJuIGludCBuaWNlICAoaW50IF9faW5jKSAgOwoKCgogCmV4dGVybiB2b2lkIF9l
eGl0ICAoaW50IF9fc3RhdHVzKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgog
CgoKIyAxICIvdXNyL2luY2x1ZGUvY29uZm5hbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
IAplbnVtCiAgewogICAgX1BDX0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BD
X01BWF9JTlBVVCwKCiAgICBfUENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9Q
Q19QSVBFX0JVRiwKCiAgICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMs
CgogICAgX1BDX1ZESVNBQkxFLAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywK
CiAgICBfUENfUFJJT19JTywKCiAgICBfUENfU09DS19NQVhCVUYKCiAgfTsKCiAKZW51bQogIHsK
ICAgIF9TQ19BUkdfTUFYLAoKICAgIF9TQ19DSElMRF9NQVgsCgogICAgX1NDX0NMS19UQ0ssCgog
ICAgX1NDX05HUk9VUFNfTUFYLAoKICAgIF9TQ19PUEVOX01BWCwKCiAgICBfU0NfU1RSRUFNX01B
WCwKCiAgICBfU0NfVFpOQU1FX01BWCwKCiAgICBfU0NfSk9CX0NPTlRST0wsCgogICAgX1NDX1NB
VkVEX0lEUywKCiAgICBfU0NfUkVBTFRJTUVfU0lHTkFMUywKCiAgICBfU0NfUFJJT1JJVFlfU0NI
RURVTElORywKCiAgICBfU0NfVElNRVJTLAoKICAgIF9TQ19BU1lOQ0hST05PVVNfSU8sCgogICAg
X1NDX1BSSU9SSVRJWkVEX0lPLAoKICAgIF9TQ19TWU5DSFJPTklaRURfSU8sCgogICAgX1NDX0ZT
WU5DLAoKICAgIF9TQ19NQVBQRURfRklMRVMsCgogICAgX1NDX01FTUxPQ0ssCgogICAgX1NDX01F
TUxPQ0tfUkFOR0UsCgogICAgX1NDX01FTU9SWV9QUk9URUNUSU9OLAoKICAgIF9TQ19NRVNTQUdF
X1BBU1NJTkcsCgogICAgX1NDX1NFTUFQSE9SRVMsCgogICAgX1NDX1NIQVJFRF9NRU1PUllfT0JK
RUNUUywKCiAgICBfU0NfQUlPX0xJU1RJT19NQVgsCgogICAgX1NDX0FJT19NQVgsCgogICAgX1ND
X0FJT19QUklPX0RFTFRBX01BWCwKCiAgICBfU0NfREVMQVlUSU1FUl9NQVgsCgogICAgX1NDX01R
X09QRU5fTUFYLAoKICAgIF9TQ19NUV9QUklPX01BWCwKCiAgICBfU0NfVkVSU0lPTiwKCiAgICBf
U0NfUEFHRVNJWkUsCgoKICAgIF9TQ19SVFNJR19NQVgsCgogICAgX1NDX1NFTV9OU0VNU19NQVgs
CgogICAgX1NDX1NFTV9WQUxVRV9NQVgsCgogICAgX1NDX1NJR1FVRVVFX01BWCwKCiAgICBfU0Nf
VElNRVJfTUFYLAoKCiAgICAgCgogICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1f
TUFYLAoKICAgIF9TQ19CQ19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAg
X1NDX0NPTExfV0VJR0hUU19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCiAgICBfU0Nf
RVhQUl9ORVNUX01BWCwKCiAgICBfU0NfTElORV9NQVgsCgogICAgX1NDX1JFX0RVUF9NQVgsCgog
ICAgX1NDX0NIQVJDTEFTU19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVSU0lPTiwKCiAgICBfU0Nf
Ml9DX0JJTkQsCgogICAgX1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9SVF9ERVYsCgogICAgX1ND
XzJfRk9SVF9SVU4sCgogICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18yX0xPQ0FMRURFRiwKCgog
ICAgX1NDX1BJSSwKCiAgICBfU0NfUElJX1hUSSwKCiAgICBfU0NfUElJX1NPQ0tFVCwKCiAgICBf
U0NfUElJX0lOVEVSTkVULAoKICAgIF9TQ19QSUlfT1NJLAoKICAgIF9TQ19QT0xMLAoKICAgIF9T
Q19TRUxFQ1QsCgogICAgX1NDX1VJT19NQVhJT1YsCgogICAgX1NDX1BJSV9JTlRFUk5FVF9TVFJF
QU0sCgogICAgX1NDX1BJSV9JTlRFUk5FVF9ER1JBTSwKCiAgICBfU0NfUElJX09TSV9DT1RTLAoK
ICAgIF9TQ19QSUlfT1NJX0NMVFMsCgogICAgX1NDX1BJSV9PU0lfTSwKCiAgICBfU0NfVF9JT1Zf
TUFYLAoKCiAgICAgCiAgICBfU0NfVEhSRUFEUywKCiAgICBfU0NfVEhSRUFEX1NBRkVfRlVOQ1RJ
T05TLAoKICAgIF9TQ19HRVRHUl9SX1NJWkVfTUFYLAoKICAgIF9TQ19HRVRQV19SX1NJWkVfTUFY
LAoKICAgIF9TQ19MT0dJTl9OQU1FX01BWCwKCiAgICBfU0NfVFRZX05BTUVfTUFYLAoKICAgIF9T
Q19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TLAoKICAgIF9TQ19USFJFQURfS0VZU19NQVgs
CgogICAgX1NDX1RIUkVBRF9TVEFDS19NSU4sCgogICAgX1NDX1RIUkVBRF9USFJFQURTX01BWCwK
CiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFD
S1NJWkUsCgogICAgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9TQ19USFJF
QURfUFJJT19JTkhFUklULAoKICAgIF9TQ19USFJFQURfUFJJT19QUk9URUNULAoKICAgIF9TQ19U
SFJFQURfUFJPQ0VTU19TSEFSRUQsCgoKICAgIF9TQ19OUFJPQ0VTU09SU19DT05GLAoKICAgIF9T
Q19OUFJPQ0VTU09SU19PTkxOLAoKICAgIF9TQ19QSFlTX1BBR0VTLAoKICAgIF9TQ19BVlBIWVNf
UEFHRVMsCgogICAgX1NDX0FURVhJVF9NQVgsCgogICAgX1NDX1BBU1NfTUFYLAoKCiAgICBfU0Nf
WE9QRU5fVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fWENVX1ZFUlNJT04sCgogICAgX1NDX1hPUEVO
X1VOSVgsCgogICAgX1NDX1hPUEVOX0NSWVBULAoKICAgIF9TQ19YT1BFTl9FTkhfSTE4TiwKCiAg
ICBfU0NfWE9QRU5fU0hNLAoKCiAgICBfU0NfMl9DSEFSX1RFUk0sCgogICAgX1NDXzJfQ19WRVJT
SU9OLAoKICAgIF9TQ18yX1VQRSwKCgogICAgX1NDX1hPUEVOX1hQRzIsCgogICAgX1NDX1hPUEVO
X1hQRzMsCgogICAgX1NDX1hPUEVOX1hQRzQsCgoKICAgIF9TQ19DSEFSX0JJVCwKCiAgICBfU0Nf
Q0hBUl9NQVgsCgogICAgX1NDX0NIQVJfTUlOLAoKICAgIF9TQ19JTlRfTUFYLAoKICAgIF9TQ19J
TlRfTUlOLAoKICAgIF9TQ19MT05HX0JJVCwKCiAgICBfU0NfV09SRF9CSVQsCgogICAgX1NDX01C
X0xFTl9NQVgsCgogICAgX1NDX05aRVJPLAoKICAgIF9TQ19TU0laRV9NQVgsCgogICAgX1NDX1ND
SEFSX01BWCwKCiAgICBfU0NfU0NIQVJfTUlOLAoKICAgIF9TQ19TSFJUX01BWCwKCiAgICBfU0Nf
U0hSVF9NSU4sCgogICAgX1NDX1VDSEFSX01BWCwKCiAgICBfU0NfVUlOVF9NQVgsCgogICAgX1ND
X1VMT05HX01BWCwKCiAgICBfU0NfVVNIUlRfTUFYLAoKCiAgICBfU0NfTkxfQVJHTUFYLAoKICAg
IF9TQ19OTF9MQU5HTUFYLAoKICAgIF9TQ19OTF9NU0dNQVgsCgogICAgX1NDX05MX05NQVgsCgog
ICAgX1NDX05MX1NFVE1BWCwKCiAgICBfU0NfTkxfVEVYVE1BWAoKICB9OwoKCiAKZW51bQogIHsK
ICAgIF9DU19QQVRICQkJIAoKICB9OwoKIyAzOTIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAz
CgoKIApleHRlcm4gbG9uZyBpbnQgX19wYXRoY29uZiAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBp
bnQgX19uYW1lKSAgOwpleHRlcm4gbG9uZyBpbnQgcGF0aGNvbmYgIChfX2NvbnN0IGNoYXIgKl9f
cGF0aCwgaW50IF9fbmFtZSkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IF9fZnBhdGhjb25mICAoaW50
IF9fZmQsIGludCBfX25hbWUpICA7CmV4dGVybiBsb25nIGludCBmcGF0aGNvbmYgIChpbnQgX19m
ZCwgaW50IF9fbmFtZSkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IF9fc3lzY29uZiAgKGludCBfX25h
bWUpICA7CmV4dGVybiBsb25nIGludCBzeXNjb25mICAoaW50IF9fbmFtZSkgIDsKCgogCmV4dGVy
biBzaXplX3QgY29uZnN0ciAgKGludCBfX25hbWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4p
ICA7CgoKCiAKZXh0ZXJuIF9fcGlkX3QgX19nZXRwaWQgICh2b2lkKSAgOwpleHRlcm4gX19waWRf
dCBnZXRwaWQgICh2b2lkKSAgOwoKIApleHRlcm4gX19waWRfdCBfX2dldHBwaWQgICh2b2lkKSAg
OwpleHRlcm4gX19waWRfdCBnZXRwcGlkICAodm9pZCkgIDsKCiAKZXh0ZXJuIF9fcGlkX3QgZ2V0
cGdycCAgKHZvaWQpICA7CgogCgoKZXh0ZXJuIGludCBzZXRwZ2lkICAoX19waWRfdCBfX3BpZCwg
X19waWRfdCBfX3BnaWQpICA7CgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAgKF9fcGlkX3Qg
X19waWQpICA7CgoKCgoKIAoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgc2V0cGdycCAgKHZvaWQp
ICA7CgoKCgoKCgoKCiAKCgpleHRlcm4gX19waWRfdCBfX3NldHNpZCAgKHZvaWQpICA7CmV4dGVy
biBfX3BpZF90IHNldHNpZCAgKHZvaWQpICA7CgoKCgoKCiAKZXh0ZXJuIF9fdWlkX3QgX19nZXR1
aWQgICh2b2lkKSAgOwpleHRlcm4gX191aWRfdCBnZXR1aWQgICh2b2lkKSAgOwoKIApleHRlcm4g
X191aWRfdCBfX2dldGV1aWQgICh2b2lkKSAgOwpleHRlcm4gX191aWRfdCBnZXRldWlkICAodm9p
ZCkgIDsKCiAKZXh0ZXJuIF9fZ2lkX3QgX19nZXRnaWQgICh2b2lkKSAgOwpleHRlcm4gX19naWRf
dCBnZXRnaWQgICh2b2lkKSAgOwoKIApleHRlcm4gX19naWRfdCBfX2dldGVnaWQgICh2b2lkKSAg
OwpleHRlcm4gX19naWRfdCBnZXRlZ2lkICAodm9pZCkgIDsKCiAKCgpleHRlcm4gaW50IF9fZ2V0
Z3JvdXBzICAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgIDsKZXh0ZXJuIGludCBnZXRn
cm91cHMgIChpbnQgX19zaXplLCBfX2dpZF90IF9fbGlzdFtdKSAgOwoKCgoKCgoKIAoKCgpleHRl
cm4gaW50IF9fc2V0dWlkICAoX191aWRfdCBfX3VpZCkgIDsKZXh0ZXJuIGludCBzZXR1aWQgIChf
X3VpZF90IF9fdWlkKSAgOwoKCiAKCmV4dGVybiBpbnQgX19zZXRyZXVpZCAgKF9fdWlkX3QgX19y
dWlkLCBfX3VpZF90IF9fZXVpZCkgIDsKZXh0ZXJuIGludCBzZXRyZXVpZCAgKF9fdWlkX3QgX19y
dWlkLCBfX3VpZF90IF9fZXVpZCkgIDsKCgoKIApleHRlcm4gaW50IHNldGV1aWQgIChfX3VpZF90
IF9fdWlkKSAgOwoKCiAKCgoKZXh0ZXJuIGludCBfX3NldGdpZCAgKF9fZ2lkX3QgX19naWQpICA7
CmV4dGVybiBpbnQgc2V0Z2lkICAoX19naWRfdCBfX2dpZCkgIDsKCgogCgpleHRlcm4gaW50IF9f
c2V0cmVnaWQgIChfX2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpICA7CmV4dGVybiBpbnQg
c2V0cmVnaWQgIChfX2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpICA7CgoKCiAKZXh0ZXJu
IGludCBzZXRlZ2lkICAoX19naWRfdCBfX2dpZCkgIDsKCgoKIAoKCmV4dGVybiBfX3BpZF90IF9f
Zm9yayAgKHZvaWQpICA7CmV4dGVybiBfX3BpZF90IGZvcmsgICh2b2lkKSAgOwoKCiAKCgoKZXh0
ZXJuIF9fcGlkX3QgX192Zm9yayAgKHZvaWQpICA7CmV4dGVybiBfX3BpZF90IHZmb3JrICAodm9p
ZCkgIDsKCgoKIAoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgIChpbnQgX19mZCkgIDsKCiAKCmV4dGVy
biBpbnQgX190dHluYW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxl
bikgIDsKZXh0ZXJuIGludCB0dHluYW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVf
dCBfX2J1ZmxlbikgIDsKCiAKCmV4dGVybiBpbnQgX19pc2F0dHkgIChpbnQgX19mZCkgIDsKZXh0
ZXJuIGludCBpc2F0dHkgIChpbnQgX19mZCkgIDsKCgogCgpleHRlcm4gaW50IHR0eXNsb3QgICh2
b2lkKSAgOwoKCgogCmV4dGVybiBpbnQgX19saW5rICAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9f
Y29uc3QgY2hhciAqX190bykgIDsKZXh0ZXJuIGludCBsaW5rICAoX19jb25zdCBjaGFyICpfX2Zy
b20sIF9fY29uc3QgY2hhciAqX190bykgIDsKCgogCmV4dGVybiBpbnQgX19zeW1saW5rICAoX19j
b25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgIDsKZXh0ZXJuIGludCBzeW1s
aW5rICAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgIDsKCiAKCgpl
eHRlcm4gaW50IF9fcmVhZGxpbmsgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19idWYs
IHNpemVfdCBfX2xlbikgIDsKZXh0ZXJuIGludCByZWFkbGluayAgKF9fY29uc3QgY2hhciAqX19w
YXRoLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgOwoKCiAKZXh0ZXJuIGludCBfX3VubGlu
ayAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgOwpleHRlcm4gaW50IHVubGluayAgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSAgOwoKIApleHRlcm4gaW50IF9fcm1kaXIgIChfX2NvbnN0IGNoYXIgKl9f
cGF0aCkgIDsKZXh0ZXJuIGludCBybWRpciAgKF9fY29uc3QgY2hhciAqX19wYXRoKSAgOwoKCiAK
ZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwICAoaW50IF9fZmQpICA7CgogCmV4dGVybiBpbnQgdGNz
ZXRwZ3JwICAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSAgOwoKCiAKZXh0ZXJuIGNoYXIg
KmdldGxvZ2luICAodm9pZCkgIDsKCgoKCgoKCgogCmV4dGVybiBpbnQgc2V0bG9naW4gIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgIDsKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJu
IGludCBnZXRvcHQgIChpbnQgX19hcmdjLCBjaGFyICpfX2NvbnN0ICogX19hcmd2LAoJCQlfX2Nv
bnN0IGNoYXIgKl9fb3B0cykgIDsKZXh0ZXJuIGludCBvcHRlcnI7CmV4dGVybiBpbnQgb3B0aW5k
OwpleHRlcm4gaW50IG9wdG9wdDsKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKCgoKCgogCgoKZXh0ZXJu
IGludCBfX2dldGhvc3RuYW1lICAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pICA7CmV4dGVy
biBpbnQgZ2V0aG9zdG5hbWUgIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgIDsKCiAKCmV4
dGVybiBpbnQgc2V0aG9zdG5hbWUgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVu
KSAgOwoKIAoKZXh0ZXJuIGludCBzZXRob3N0aWQgIChsb25nIGludCBfX2lkKSAgOwoKCiAKCgpl
eHRlcm4gaW50IGdldGRvbWFpbm5hbWUgIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgIDsK
ZXh0ZXJuIGludCBzZXRkb21haW5uYW1lICAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBf
X2xlbikgIDsKCgogCmV4dGVybiBpbnQgZnN5bmMgIChpbnQgX19mZCkgIDsKCgogCgoKZXh0ZXJu
IGludCB2aGFuZ3VwICAodm9pZCkgIDsKCiAKZXh0ZXJuIGludCByZXZva2UgIChfX2NvbnN0IGNo
YXIgKl9fZmlsZSkgIDsKCgogCgoKCgpleHRlcm4gaW50IHByb2ZpbCAgKHVuc2lnbmVkIHNob3J0
IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAoJCQlzaXplX3QgX19vZmZzZXQs
IHVuc2lnbmVkIGludCBfX3NjYWxlKSAgOwoKCiAKCgpleHRlcm4gaW50IGFjY3QgIChfX2NvbnN0
IGNoYXIgKl9fbmFtZSkgIDsKCiAKCmV4dGVybiBpbnQgY2hyb290ICAoX19jb25zdCBjaGFyICpf
X3BhdGgpICA7CgoKIApleHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICAodm9pZCkgIDsKZXh0ZXJu
IHZvaWQgZW5kdXNlcnNoZWxsICAodm9pZCkgIDsgIApleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwg
ICh2b2lkKSAgOyAgCgoKIAoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgIChfX2NvbnN0IGNoYXIgKl9f
cHJvbXB0KSAgOwoKIAoKCmV4dGVybiBpbnQgZGFlbW9uICAoaW50IF9fbm9jaGRpciwgaW50IF9f
bm9jbG9zZSkgIDsKCgoKCgoKIApleHRlcm4gbG9uZyBpbnQgZ2V0aG9zdGlkICAodm9pZCkgIDsK
CiAKZXh0ZXJuIGludCBzeW5jICAodm9pZCkgIDsKCgogCgpleHRlcm4gaW50IF9fZ2V0cGFnZXNp
emUgICh2b2lkKSAgOwpleHRlcm4gaW50IGdldHBhZ2VzaXplICAodm9pZCkgIDsKCgogCmV4dGVy
biBpbnQgdHJ1bmNhdGUgIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmZfdCBfX2xlbmd0aCkg
IDsKCiAKZXh0ZXJuIGludCBmdHJ1bmNhdGUgIChpbnQgX19mZCwgX19vZmZfdCBfX2xlbmd0aCkg
IDsKCgogCgpleHRlcm4gaW50IF9fZ2V0ZHRhYmxlc2l6ZSAgKHZvaWQpICA7CmV4dGVybiBpbnQg
Z2V0ZHRhYmxlc2l6ZSAgKHZvaWQpICA7CgoKCgoKCiAKCmV4dGVybiBpbnQgX19icmsgICh2b2lk
ICogIF9fYWRkcikgIDsKZXh0ZXJuIGludCBicmsgICh2b2lkICogIF9fYWRkcikgIDsKCgojIDEg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0y
LjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9s
aWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
IAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgogCgoKCgogCgogCgojIDE5MCAiL3Vz
ci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkx
LjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxp
bnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDc2OCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAy
IDMKCgogCgoKCmV4dGVybiB2b2lkICogIF9fc2JyayAgKHB0cmRpZmZfdCBfX2RlbHRhKSAgOwpl
eHRlcm4gdm9pZCAqICBzYnJrICAocHRyZGlmZl90IF9fZGVsdGEpICA7CgoKCgogCgoKCgoKCgoK
CmV4dGVybiBsb25nIGludCBzeXNjYWxsICAobG9uZyBpbnQgX19zeXNubywgLi4uKSAgOwoKCgoK
CgogCgoKCiAKCgoKCgoKCgpleHRlcm4gaW50IGxvY2tmICAoaW50IF9fZmQsIGludCBfX2NtZCwg
X19vZmZfdCBfX2xlbikgIDsKCgoKIyA4MzMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCgog
CgpleHRlcm4gaW50IGZkYXRhc3luYyAgKGludCBfX2ZpbGRlcykgIDsKCgoKIAoKIyA4NjEgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCiAKCgojIDI3ICIuLi9rcGF0aHNlYS9jLXVuaXN0ZC5o
IiAyCgoKCiMgMSAiLi4va3BhdGhzZWEvYy1zdGQuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKIyAx
MDIgIi4uL2twYXRoc2VhL2Mtc3RkLmgiCgojIDMwICIuLi9rcGF0aHNlYS9jLXVuaXN0ZC5oIiAy
CgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyAzMyAiLi4va3BhdGhzZWEvYy1zdGQuaCIgMgoK
CgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKIAoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2k2
ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgog
CgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMg
MTMxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2Nj
LTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBsb25nIGlu
dCB3Y2hhcl90OwoKCgoKCgoKCgoKCgoKCgoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
bGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vz
ci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MiAzCgoKIAoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwkJCSAKICAgIGludCBy
ZW07CQkJIAogIH0gZGl2X3Q7CgogCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVv
dDsJCSAKICAgIGxvbmcgaW50IHJlbTsJCSAKICB9IGxkaXZfdDsKCgoKCgoKCgoKCgogCgoKCiAK
CgoKCgogCgpleHRlcm4gaW50IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggICh2b2lkKSAgOwoKCiAK
ZXh0ZXJuIGRvdWJsZSBhdG9mICAoX19jb25zdCBjaGFyICpfX25wdHIpICA7CiAKZXh0ZXJuIGlu
dCBhdG9pICAoX19jb25zdCBjaGFyICpfX25wdHIpICA7CiAKZXh0ZXJuIGxvbmcgaW50IGF0b2wg
IChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIDsKCgogCmV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xs
ICAoX19jb25zdCBjaGFyICpfX25wdHIpICA7CgoKIApleHRlcm4gZG91YmxlIHN0cnRvZCAgKF9f
Y29uc3QgY2hhciAqX19ucHRyLCBjaGFyICoqX19lbmRwdHIpICA7CgoKCgoKCgogCmV4dGVybiBs
b25nIGludCBzdHJ0b2wgIChfX2NvbnN0IGNoYXIgKl9fbnB0ciwgY2hhciAqKl9fZW5kcHRyLAoJ
CQkgICAgIGludCBfX2Jhc2UpICA7CiAKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwg
IChfX2NvbnN0IGNoYXIgKl9fbnB0ciwKCQkJCSAgICAgICBjaGFyICoqX19lbmRwdHIsIGludCBf
X2Jhc2UpICA7CgoKIApleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgIChfX2NvbnN0IGNoYXIg
Kl9fbnB0ciwgY2hhciAqKl9fZW5kcHRyLAoJCQkJICBpbnQgX19iYXNlKSAgOwogCmV4dGVybiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgIChfX2NvbnN0IGNoYXIgKl9fbnB0ciwKCQkJ
CQkgICAgY2hhciAqKl9fZW5kcHRyLCBpbnQgX19iYXNlKSAgOwoKCgogCgogCmV4dGVybiBsb25n
IGxvbmcgaW50IHN0cnRvbGwgIChfX2NvbnN0IGNoYXIgKl9fbnB0ciwgY2hhciAqKl9fZW5kcHRy
LAoJCQkJICAgaW50IF9fYmFzZSkgIDsKIApleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBz
dHJ0b3VsbCAgKF9fY29uc3QgY2hhciAqX19ucHRyLAoJCQkJCSAgICAgY2hhciAqKl9fZW5kcHRy
LCBpbnQgX19iYXNlKSAgOwoKCgoKIAoKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfaW50ZXJuYWwg
IChfX2NvbnN0IGNoYXIgKl9fbnB0ciwKCQkJCSAgICAgIGNoYXIgKipfX2VuZHB0ciwgaW50IF9f
Z3JvdXApICA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAq
X19ucHRyLCBjaGFyICoqX19lbmRwdHIsCgkJCQkgICAgIGludCBfX2dyb3VwKSAgOwpleHRlcm4g
bG9uZyBkb3VibGUgIF9fc3RydG9sZF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqX19ucHRyLAoJ
CQkJCQljaGFyICoqX19lbmRwdHIsIGludCBfX2dyb3VwKSAgOwpleHRlcm4gbG9uZyBpbnQgX19z
dHJ0b2xfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKl9fbnB0ciwgY2hhciAqKl9fZW5kcHRyLAoJ
CQkJCWludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQg
X19zdHJ0b3VsX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX25wdHIsCgkJCQkJCSAgY2hhciAq
Kl9fZW5kcHRyLCBpbnQgX19iYXNlLAoJCQkJCQkgIGludCBfX2dyb3VwKSAgOwoKZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgX19zdHJ0b3FfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKl9fbnB0ciwKCQkJ
CQkgICAgIGNoYXIgKipfX2VuZHB0ciwgaW50IF9fYmFzZSwKCQkJCQkgICAgIGludCBfX2dyb3Vw
KSAgOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdXFfaW50ZXJuYWwgIChf
X2NvbnN0IGNoYXIgKl9fbnB0ciwKCQkJCQkJICAgICAgIGNoYXIgKipfX2VuZHB0ciwKCQkJCQkJ
ICAgICAgIGludCBfX2Jhc2UsCgkJCQkJCSAgICAgICBpbnQgX19ncm91cCkgIDsKCgoKIAoKZXh0
ZXJuIF9faW5saW5lIGRvdWJsZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19ucHRyLCBjaGFyICoq
X19lbmRwdHIpCnsgcmV0dXJuIF9fc3RydG9kX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAw
KTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0
ciwKCQkJCSBjaGFyICoqX19lbmRwdHIsIGludCBfX2Jhc2UpCnsgcmV0dXJuIF9fc3RydG9sX2lu
dGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOyB9CmV4dGVybiBfX2lubGluZSB1
bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fbnB0ciwKCQkJCQkgICBj
aGFyICoqX19lbmRwdHIsIGludCBfX2Jhc2UpCnsgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAo
X19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsgfQoKCgoKCgoKCgpleHRlcm4gX19pbmxpbmUg
bG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19ucHRyLCBjaGFyICoqX19lbmRw
dHIsCgkJCQkgICAgICBpbnQgX19iYXNlKQp7IHJldHVybiBfX3N0cnRvcV9pbnRlcm5hbCAoX19u
cHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsgfQpleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9u
ZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fbnB0ciwKCQkJCQkJY2hhciAqKl9f
ZW5kcHRyLCBpbnQgX19iYXNlKQp7IHJldHVybiBfX3N0cnRvdXFfaW50ZXJuYWwgKF9fbnB0ciwg
X19lbmRwdHIsIF9fYmFzZSwgMCk7IH0KCgoKZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQg
c3RydG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIsIGNoYXIgKipfX2VuZHB0ciwKCQkJCSAgICAg
ICBpbnQgX19iYXNlKQp7IHJldHVybiBfX3N0cnRvcV9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgX19iYXNlLCAwKTsgfQpleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludCBz
dHJ0b3VsbCAoX19jb25zdCBjaGFyICpfX25wdHIsCgkJCQkJCSBjaGFyICoqX19lbmRwdHIsIGlu
dCBfX2Jhc2UpCnsgcmV0dXJuIF9fc3RydG91cV9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
X19iYXNlLCAwKTsgfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXRvZiAoX19jb25zdCBjaGFy
ICpfX25wdHIpCnsgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkg
KTsgfQpleHRlcm4gX19pbmxpbmUgaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7IHJl
dHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApICwgMTApOyB9
CmV4dGVybiBfX2lubGluZSBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKeyBy
ZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsgfQoKCmV4
dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikK
eyByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkgLCAxMCk7IH0K
CgoKCgogCgoKZXh0ZXJuIGNoYXIgKmw2NGEgIChsb25nIGludCBfX24pICA7CgogCmV4dGVybiBs
b25nIGludCBhNjRsICAoX19jb25zdCBjaGFyICpfX3MpICA7CgoKCgogCgoKCiAKZXh0ZXJuIGlu
dDMyX3QgX19yYW5kb20gICh2b2lkKSAgOwpleHRlcm4gaW50MzJfdCByYW5kb20gICh2b2lkKSAg
OwoKIApleHRlcm4gdm9pZCBfX3NyYW5kb20gICh1bnNpZ25lZCBpbnQgX19zZWVkKSAgOwpleHRl
cm4gdm9pZCBzcmFuZG9tICAodW5zaWduZWQgaW50IF9fc2VlZCkgIDsKCiAKCgoKZXh0ZXJuIHZv
aWQgKiAgX19pbml0c3RhdGUgICh1bnNpZ25lZCBpbnQgX19zZWVkLCB2b2lkICogIF9fc3RhdGVi
dWYsCgkJCQkgc2l6ZV90IF9fc3RhdGVsZW4pICA7CmV4dGVybiB2b2lkICogIGluaXRzdGF0ZSAg
KHVuc2lnbmVkIGludCBfX3NlZWQsIHZvaWQgKiAgX19zdGF0ZWJ1ZiwKCQkJICAgICAgIHNpemVf
dCBfX3N0YXRlbGVuKSAgOwoKIAoKZXh0ZXJuIHZvaWQgKiAgX19zZXRzdGF0ZSAgKHZvaWQgKiAg
X19zdGF0ZWJ1ZikgIDsKZXh0ZXJuIHZvaWQgKiAgc2V0c3RhdGUgICh2b2lkICogIF9fc3RhdGVi
dWYpICA7CgoKCiAKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsJ
CSAKICAgIGludDMyX3QgKnJwdHI7CQkgCiAgICBpbnQzMl90ICpzdGF0ZTsJCSAKICAgIGludCBy
YW5kX3R5cGU7CQkgCiAgICBpbnQgcmFuZF9kZWc7CQkgCiAgICBpbnQgcmFuZF9zZXA7CQkgCiAg
ICBpbnQzMl90ICplbmRfcHRyOwkJIAogIH07CgpleHRlcm4gaW50IF9fcmFuZG9tX3IgIChzdHJ1
Y3QgcmFuZG9tX2RhdGEgKl9fYnVmLCBpbnQzMl90ICpfX3Jlc3VsdCkgIDsKZXh0ZXJuIGludCBy
YW5kb21fciAgKHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYsIGludDMyX3QgKl9fcmVzdWx0KSAg
OwoKZXh0ZXJuIGludCBfX3NyYW5kb21fciAgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCBy
YW5kb21fZGF0YSAqX19idWYpICA7CmV4dGVybiBpbnQgc3JhbmRvbV9yICAodW5zaWduZWQgaW50
IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgIDsKCmV4dGVybiBpbnQgX19pbml0
c3RhdGVfciAgKHVuc2lnbmVkIGludCBfX3NlZWQsIHZvaWQgKiAgX19zdGF0ZWJ1ZiwKCQkJICAg
ICAgIHNpemVfdCBfX3N0YXRlbGVuLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSAgOwpleHRl
cm4gaW50IGluaXRzdGF0ZV9yICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqICBfX3N0YXRl
YnVmLAoJCQkgICAgIHNpemVfdCBfX3N0YXRlbGVuLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVm
KSAgOwoKZXh0ZXJuIGludCBfX3NldHN0YXRlX3IgICh2b2lkICogIF9fc3RhdGVidWYsIHN0cnVj
dCByYW5kb21fZGF0YSAqX19idWYpICA7CmV4dGVybiBpbnQgc2V0c3RhdGVfciAgKHZvaWQgKiAg
X19zdGF0ZWJ1Ziwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgIDsKCgoKCiAKZXh0ZXJuIGlu
dCByYW5kICAodm9pZCkgIDsKIApleHRlcm4gdm9pZCBzcmFuZCAgKHVuc2lnbmVkIGludCBfX3Nl
ZWQpICA7CgoKIApleHRlcm4gaW50IF9fcmFuZF9yICAodW5zaWduZWQgaW50ICpfX3NlZWQpICA7
CmV4dGVybiBpbnQgcmFuZF9yICAodW5zaWduZWQgaW50ICpfX3NlZWQpICA7CgoKCgogCgogCmV4
dGVybiBkb3VibGUgZHJhbmQ0OCAgKHZvaWQpICA7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAgKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSAgOwoKIApleHRlcm4gbG9uZyBscmFuZDQ4ICAo
dm9pZCkgIDsKZXh0ZXJuIGxvbmcgbnJhbmQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp
WzNdKSAgOwoKIApleHRlcm4gbG9uZyBtcmFuZDQ4ICAodm9pZCkgIDsKZXh0ZXJuIGxvbmcganJh
bmQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSAgOwoKIApleHRlcm4gdm9pZCBz
cmFuZDQ4ICAobG9uZyBfX3NlZWR2YWwpICA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNl
ZWQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10pICA7CmV4dGVybiB2b2lkIGxj
b25nNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgIDsKCiAKc3RydWN0IGRyYW5k
NDhfZGF0YQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB4WzNdOwkgCiAgICB1bnNpZ25lZCBz
aG9ydCBpbnQgYVszXTsJIAogICAgdW5zaWduZWQgc2hvcnQgaW50IGM7CSAKICAgIHVuc2lnbmVk
IHNob3J0IGludCBvbGRfeFszXTsgIAogICAgaW50IGluaXQ7CQkJIAogIH07CgoKIApleHRlcm4g
aW50IGRyYW5kNDhfciAgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyLCBkb3VibGUgKl9f
cmVzdWx0KSAgOwpleHRlcm4gaW50IGVyYW5kNDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAoJCQkgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlciwgZG91YmxlICpfX3Jl
c3VsdCkgIDsKCiAKZXh0ZXJuIGludCBscmFuZDQ4X3IgIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X2J1ZmZlciwgbG9uZyAqX19yZXN1bHQpICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWdu
ZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVm
ZmVyLCBsb25nICpfX3Jlc3VsdCkgIDsKCiAKZXh0ZXJuIGludCBtcmFuZDQ4X3IgIChzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX2J1ZmZlciwgbG9uZyAqX19yZXN1bHQpICA7CmV4dGVybiBpbnQganJh
bmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fYnVmZmVyLCBsb25nICpfX3Jlc3VsdCkgIDsKCiAKZXh0ZXJuIGludCBzcmFu
ZDQ4X3IgIChsb25nIF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpICA7
CmV4dGVybiBpbnQgc2VlZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAoJ
CQkgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgOwpleHRlcm4gaW50IGxjb25nNDhf
ciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAoJCQkgICBzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX2J1ZmZlcikgIDsKCgogCmV4dGVybiBpbnQgX19kcmFuZDQ4X2l0ZXJhdGUgICh1bnNp
Z25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
YnVmZmVyKSAgOwoKCgogCmV4dGVybiB2b2lkICogIG1hbGxvYyAgKHNpemVfdCBfX3NpemUpICA7
CiAKCmV4dGVybiB2b2lkICogIHJlYWxsb2MgICh2b2lkICogIF9fcHRyLCBzaXplX3QgX19zaXpl
KSAgOwogCmV4dGVybiB2b2lkICogIGNhbGxvYyAgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19z
aXplKSAgOwogCmV4dGVybiB2b2lkIGZyZWUgICh2b2lkICogIF9fcHRyKSAgOwoKCiAKZXh0ZXJu
IHZvaWQgY2ZyZWUgICh2b2lkICogIF9fcHRyKSAgOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxv
Y2EuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoj
IDE5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxp
bnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgv
cGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGli
L2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoK
CiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYw
L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4
L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDI1ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoK
CiAKCiAKCgoKIApleHRlcm4gdm9pZCAqICBfX2FsbG9jYSAgKHNpemVfdCBfX3NpemUpICA7CmV4
dGVybiB2b2lkICogIGFsbG9jYSAgKHNpemVfdCBfX3NpemUpICA7CgoKCgoKCiAKCgojIDM2MCAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCiAKZXh0ZXJuIHZvaWQgKiAgdmFsbG9jICAo
c2l6ZV90IF9fc2l6ZSkgIDsKCgoKIApleHRlcm4gdm9pZCBhYm9ydCAgKHZvaWQpICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAKZXh0ZXJuIGludCBhdGV4aXQgICh2b2lkICgq
X19mdW5jKSAodm9pZCkpICA7CgoKIAoKZXh0ZXJuIGludCBfX29uX2V4aXQgICh2b2lkICgqX19m
dW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICogIF9fYXJnKSwKCQkJICAgdm9pZCAqICBfX2FyZykg
IDsKZXh0ZXJuIGludCBvbl9leGl0ICAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9p
ZCAqICBfX2FyZyksCgkJCSB2b2lkICogIF9fYXJnKSAgOwoKCiAKCgpleHRlcm4gdm9pZCBleGl0
ICAoaW50IF9fc3RhdHVzKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogCmV4
dGVybiBjaGFyICpnZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIDsKCiAKCmV4dGVybiBj
aGFyICpfX3NlY3VyZV9nZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIDsKCgogCiAKCmV4
dGVybiBpbnQgcHV0ZW52ICAoX19jb25zdCBjaGFyICpfX3N0cmluZykgIDsKCgoKIAoKZXh0ZXJu
IGludCBzZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVl
LAoJCQlpbnQgX19yZXBsYWNlKSAgOwoKIApleHRlcm4gdm9pZCB1bnNldGVudiAgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSAgOwoKCgogCgoKZXh0ZXJuIGludCBfX2NsZWFyZW52ICAodm9pZCkgIDsK
ZXh0ZXJuIGludCBjbGVhcmVudiAgKHZvaWQpICA7CgoKCgogCgoKCmV4dGVybiBjaGFyICpta3Rl
bXAgIChjaGFyICpfX3RlbXBsYXRlKSAgOwoKIAoKCgoKZXh0ZXJuIGludCBta3N0ZW1wICAoY2hh
ciAqX190ZW1wbGF0ZSkgIDsKCgoKIApleHRlcm4gaW50IHN5c3RlbSAgKF9fY29uc3QgY2hhciAq
X19jb21tYW5kKSAgOwoKCgoKCgoKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAgKF9f
Y29uc3QgY2hhciAqX19uYW1lLCBjaGFyICpfX3Jlc29sdmVkKSAgOwoKCgogCgoKdHlwZWRlZiBp
bnQgKCpfX2NvbXBhcl9mbl90KSAgKF9fY29uc3Qgdm9pZCAqICwgX19jb25zdCB2b2lkICogKSAg
OwoKCgoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNoICAoX19jb25zdCB2b2lkICogIF9fa2V5
LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3Qg
X19zaXplLAoJCQkgICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpICA7CgogCgpleHRlcm4gdm9p
ZCBxc29ydCAgKHZvaWQgKiAgX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwK
CQkJX19jb21wYXJfZm5fdCBfX2NvbXBhcikgIDsKCgogCmV4dGVybiBpbnQgYWJzICAoaW50IF9f
eCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsb25nIGludCBsYWJzICAo
bG9uZyBpbnQgX194KSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgogCgogCmV4
dGVybiBkaXZfdCBkaXYgIChpbnQgX19udW1lciwgaW50IF9fZGVub20pICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgIChsb25nIGludCBfX251bWVyLCBs
b25nIGludCBfX2Rlbm9tKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKIAoK
CiAKCgpleHRlcm4gY2hhciAqZWN2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGlu
dCAqX19kZWNwdCwKCQkJaW50ICpfX3NpZ24pICA7CgogCgoKZXh0ZXJuIGNoYXIgKmZjdnQgIChk
b3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fZGVjcHQsCgkJCWludCAqX19zaWdu
KSAgOwoKIAoKCmV4dGVybiBjaGFyICpnY3Z0ICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp
dCwgY2hhciAqX19idWYpICA7CgogCmV4dGVybiBjaGFyICpxZWN2dCAgKGxvbmcgZG91YmxlICBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19kZWNwdCwKCQkJIGludCAqX19zaWduKSAgOwpl
eHRlcm4gY2hhciAqcWZjdnQgIChsb25nIGRvdWJsZSAgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBp
bnQgKl9fZGVjcHQsCgkJCSBpbnQgKl9fc2lnbikgIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0ICAobG9u
ZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpICA7CgoKCiAKCmV4
dGVybiBpbnQgZWN2dF9yICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX2Rl
Y3B0LAoJCQlpbnQgKl9fc2lnbiwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgIDsKZXh0ZXJu
IGludCBmY3Z0X3IgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fZGVjcHQs
CgkJCWludCAqX19zaWduLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgOwoKZXh0ZXJuIGlu
dCBxZWN2dF9yICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX2Rl
Y3B0LAoJCQkgaW50ICpfX3NpZ24sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pICA7CmV4dGVy
biBpbnQgcWZjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAq
X19kZWNwdCwKCQkJIGludCAqX19zaWduLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgOwoK
CgoKIAoKZXh0ZXJuIGludCBtYmxlbiAgKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSAg
OwogCgpleHRlcm4gaW50IG1idG93YyAgKHdjaGFyX3QgKl9fcHdjLCBfX2NvbnN0IGNoYXIgKl9f
cywgc2l6ZV90IF9fbikgIDsKIAoKZXh0ZXJuIGludCB3Y3RvbWIgIChjaGFyICpfX3MsIHdjaGFy
X3QgX193Y2hhcikgIDsKCgogCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgICh3Y2hhcl90ICpfX3B3
Y3MsIF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSAgOwogCmV4dGVybiBzaXplX3Qgd2Nz
dG9tYnMgIChjaGFyICpfX3MsIF9fY29uc3Qgd2NoYXJfdCAqX19wd2NzLCBzaXplX3QgX19uKSAg
OwoKCgogCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkg
IDsKCgoKIyA1ODIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKCgoKCgoKIAoKCiMgMzYg
Ii4uL2twYXRoc2VhL2Mtc3RkLmgiIDIKCiAKCgoKCgoKCgoKCgojIDU4ICIuLi9rcGF0aHNlYS9j
LXN0ZC5oIgoKCgogCgoKIyA3MiAiLi4va3BhdGhzZWEvYy1zdGQuaCIKCgogCiMgMSAiLi4va3Bh
dGhzZWEvYy1tZW1zdHIuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDEgIi91c3Iv
aW5jbHVkZS9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKIAoK
CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9w
Z2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzMgIi91c3Iv
aW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtY3B5ICAodm9pZCAq
ICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgIHNpemVfdCBfX24pICA7CiAK
CmV4dGVybiB2b2lkICogIG1lbW1vdmUgICh2b2lkICogIF9fZGVzdCwgX19jb25zdCB2b2lkICog
IF9fc3JjLAoJCQkgICAgIHNpemVfdCBfX24pICA7CgogCgoKZXh0ZXJuIHZvaWQgKiAgX19tZW1j
Y3B5ICAodm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICAgIGlu
dCBfX2MsIHNpemVfdCBfX24pICA7CgpleHRlcm4gdm9pZCAqICBtZW1jY3B5ICAodm9pZCAqICBf
X2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBpbnQgX19jLCBzaXplX3QgX19u
KSAgOwoKCgogCmV4dGVybiB2b2lkICogIG1lbXNldCAgKHZvaWQgKiAgX19zLCBpbnQgX19jLCBz
aXplX3QgX19uKSAgOwoKIApleHRlcm4gaW50IG1lbWNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3Mx
LCBfX2NvbnN0IHZvaWQgKiAgX19zMiwKCQkJc2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIHZvaWQg
KiAgbWVtY2hyICAoX19jb25zdCB2b2lkICogIF9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgIDsK
CgogCmV4dGVybiBjaGFyICpzdHJjcHkgIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19z
cmMpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hh
ciAqX19zcmMsIHNpemVfdCBfX24pICA7CgogCmV4dGVybiBjaGFyICpzdHJjYXQgIChjaGFyICpf
X2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgIChj
aGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMsIHNpemVfdCBfX24pICA7CgogCmV4dGVy
biBpbnQgc3RyY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICA7
CiAKZXh0ZXJuIGludCBzdHJuY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIsIHNpemVfdCBfX24pICA7CgogCmV4dGVybiBpbnQgc3RyY29sbCAgKF9fY29uc3QgY2hh
ciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAgOwogCmV4dGVybiBzaXplX3Qgc3RyeGZybSAg
KGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYywgc2l6ZV90IF9fbikgIDsKCgogCmV4
dGVybiBjaGFyICpfX3N0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgOwpleHRlcm4gY2hhciAq
c3RyZHVwICAoX19jb25zdCBjaGFyICpfX3MpICA7CgoKIAoKCmV4dGVybiBjaGFyICpfX3N0cm5k
dXAgIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKSAgOwoKCgoKIyAxMjEgIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCiAKZXh0ZXJuIGNoYXIgKnN0cmNociAgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19jKSAgOwogCmV4dGVybiBjaGFyICpzdHJyY2hyICAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX2MpICA7CgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0
IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkgIDsKIAoKZXh0ZXJuIHNpemVfdCBz
dHJzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkgIDsKIApl
eHRlcm4gY2hhciAqc3RycGJyayAgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9f
YWNjZXB0KSAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3Rh
Y2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cnRvayAgKGNo
YXIgKl9fcywgX19jb25zdCBjaGFyICpfX2RlbGltKSAgOwoKCiAKCmV4dGVybiBjaGFyICpzdHJ0
b2tfciAgKGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2RlbGltLAoJCQkgICAgY2hhciAqKl9f
c2F2ZV9wdHIpICA7CgoKCgoKCgoKCgoKIApleHRlcm4gc2l6ZV90IHN0cmxlbiAgKF9fY29uc3Qg
Y2hhciAqX19zKSAgOwoKIyAxNzMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCmV4dGVy
biBjaGFyICpzdHJlcnJvciAgKGludCBfX2Vycm51bSkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0
cmVycm9yX3IgIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICA7
CmV4dGVybiBjaGFyICpzdHJlcnJvcl9yICAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fYnVmbGVuKSAgOwoKCgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICog
IF9fc3JjLCB2b2lkICogIF9fZGVzdCwgc2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIHZvaWQgYnpl
cm8gICh2b2lkICogIF9fcywgc2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIGludCBiY21wICAoX19j
b25zdCB2b2lkICogIF9fczEsIF9fY29uc3Qgdm9pZCAqICBfX3MyLCBzaXplX3QgX19uKSAgOwoK
IApleHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIDsKCiAK
ZXh0ZXJuIGNoYXIgKnJpbmRleCAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSAgOwoKIAoK
ZXh0ZXJuIGludCBmZnMgIChpbnQgX19pKSAgOwoKIApleHRlcm4gaW50IF9fc3RyY2FzZWNtcCAg
KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAgOwpleHRlcm4gaW50IHN0
cmNhc2VjbXAgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIDsKCiAK
ZXh0ZXJuIGludCBfX3N0cm5jYXNlY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsCgkJCSAgICAgICBzaXplX3QgX19uKSAgOwpleHRlcm4gaW50IHN0cm5jYXNlY21w
ICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCSAgICAgc2l6ZV90
IF9fbikgIDsKCgoKIAoKZXh0ZXJuIGNoYXIgKl9fc3Ryc2VwICAoY2hhciAqKl9fc3RyaW5ncCwg
X19jb25zdCBjaGFyICpfX2RlbGltKSAgOwpleHRlcm4gY2hhciAqc3Ryc2VwICAoY2hhciAqKl9f
c3RyaW5ncCwgX19jb25zdCBjaGFyICpfX2RlbGltKSAgOwoKCiMgMjQxICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDMKCgoKIApleHRlcm4gY2hhciAqYmFzZW5hbWUgIChfX2NvbnN0IGNoYXIgKl9f
ZmlsZW5hbWUpICA7CgoKIAoKCiMgMjYgIi4uL2twYXRoc2VhL2MtbWVtc3RyLmgiIDIKCgoKCgog
CgoKCgogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDc1
ICIuLi9rcGF0aHNlYS9jLXN0ZC5oIiAyCgoKIAojIDEgIi4uL2twYXRoc2VhL2MtZXJybm8uaCIg
MQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgogCgogCgojIDEgIi91c3IvaW5jbHVkZS9l
cnJub3MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2xp
bnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMSAzCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiMgNCAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIgMwoKCiMg
MTQgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAzCgoKCiMgMjQgIi91c3IvaW5jbHVkZS9l
cnJub3MuaCIgMiAzCgoKCiAKZXh0ZXJuIGludCBlcnJubzsKCiAKZXh0ZXJuIGludCAqX19lcnJu
b19sb2NhdGlvbiAgKHZvaWQpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIyA0NCAi
L3Vzci9pbmNsdWRlL2Vycm5vcy5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKIyAzNiAiL3Vzci9pbmNs
dWRlL2Vycm5vLmgiIDIgMwoKCgoKCiAKCgoKCgoKCgojIDYzICIvdXNyL2luY2x1ZGUvZXJybm8u
aCIgMwoKCgogCgoKIyAyMiAiLi4va3BhdGhzZWEvYy1lcnJuby5oIiAyCgoKCgoKCiMgNzggIi4u
L2twYXRoc2VhL2Mtc3RkLmgiIDIKCgogCiMgMSAiLi4va3BhdGhzZWEvYy1taW5tYXguaCIgMQog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4va3BhdGhzZWEvYy1saW1pdHMuaCIgMQogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2Mt
Mi45MS42MC9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCiAKCgoKCgogCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N5c2xpbWl0cy5oIiAxIDMK
IAoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNs
dWRlL2xpbWl0cy5oIiAxIDMKIAoKCiAKCiMgMTE0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGlu
dXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUv
bGltaXRzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCiMgMSAiL3Vzci9pbmNs
dWRlL3Bvc2l4MV9saW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKIAoK
CiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAK
CgogCgoKCiAKCgogCgoKIAoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2xvY2FsX2xpbS5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAx
IDMKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjEgIi91c3IvaW5jbHVkZS9sb2NhbF9saW0uaCIgMiAz
CgoKIAoKIAoKCiAKCiAKCgogCgogCgojIDkyICIvdXNyL2luY2x1ZGUvcG9zaXgxX2xpbS5oIiAy
IDMKCgoKCgoKCgogCgoKCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoK
IyAxICIvdXNyL2luY2x1ZGUvcG9zaXgyX2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKCiAKCgoKCiAKCgoKIAoKCiAKCgoKIAoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMxICIvdXNyL2luY2x1ZGUvbGltaXRz
LmgiIDIgMwoKCgoKCgoKCgoKICAKIAogCiAKIAojIDUzICIvdXNyL2luY2x1ZGUvbGltaXRzLmgi
IDMKCgojIDEyOSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCgojIDExNyAiL3Vzci9saWIvZ2Nj
LWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMg
NyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N5c2xp
bWl0cy5oIiAyIDMKCgojIDExICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkx
LjYwL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoKCiAKCgoKIAoKCgogCgoKCgogCgoKCgoKIAoK
CgogCgoKCgoKCgoKCgoKCiAKCiAKCgoKCiAKCgoKIAoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoK
CgoKIAoKCgojIDEwNyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9p
bmNsdWRlL2xpbWl0cy5oIiAzCgoKCgogCgoKCgoKCgoKCiMgMjMgIi4uL2twYXRoc2VhL2MtbGlt
aXRzLmgiIDIKCgoKCgoKCgogCgoKCgoKIyAyMyAiLi4va3BhdGhzZWEvYy1taW5tYXguaCIgMgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKIyA4MSAiLi4va3BhdGhzZWEvYy1zdGQuaCIgMgoKCiAKCiMgMSAiL3Vzci9pbmNsdWRl
L2Fzc2VydC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyAzMiAiL3Vzci9pbmNsdWRl
L2Fzc2VydC5oIiAzCgoKCgoKIAoKCgoKIyA1NiAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzCgoK
IAoKIApleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsICAoX19jb25zdCBjaGFyICpfX2Fzc2VydGlv
biwKCQkJCV9fY29uc3QgY2hhciAqX19maWxlLAoJCQkJdW5zaWduZWQgaW50IF9fbGluZSwKCQkJ
CV9fY29uc3QgY2hhciAqX19mdW5jdGlvbikgIAogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0
dXJuX18pKTsKCiAKZXh0ZXJuIHZvaWQgX19hc3NlcnRfcGVycm9yX2ZhaWwgIChpbnQgX19lcnJu
dW0sCgkJCQkgICAgICAgX19jb25zdCBjaGFyICpfX2ZpbGUsCgkJCQkgICAgICAgdW5zaWduZWQg
aW50IF9fbGluZSwKCQkJCSAgICAgICBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pICAKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKIyA4NSAiLi4va3BhdGhzZWEvYy1zdGQuaCIgMgoKCgoKCgoKCgoKIAoKZXh0ZXJuIEZJTEUg
KnBvcGVuICgpOwpleHRlcm4gaW50IHBjbG9zZSAoKTsKCgoKCiMgNjMgIi4uL2twYXRoc2VhL2Nv
bmZpZy5oIiAyCgoKIyAxICIuLi9rcGF0aHNlYS9jLXByb3RvLmgiIDEKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgMzIgIi4uL2twYXRoc2VhL2MtcHJvdG8uaCIKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMTA0ICIuLi9rcGF0aHNlYS9jLXByb3RvLmgiCgoKCiMgNjUg
Ii4uL2twYXRoc2VhL2NvbmZpZy5oIiAyCgoKIyAxICIuLi9rcGF0aHNlYS9kZWJ1Zy5oIiAxCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgojIDEgIi4uL2twYXRoc2VhL3R5cGVzLmgiIDEKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCnR5cGVkZWYgZW51bSB7IGZhbHNlID0gMCwg
dHJ1ZSA9IDEgfSBib29sZWFuOwoKCgogCgoKCgoKCiAKdHlwZWRlZiBjaGFyICpzdHJpbmc7Cgog
Cgp0eXBlZGVmIGNvbnN0IGNoYXIgKmNvbnN0X3N0cmluZzsKCiAKdHlwZWRlZiB2b2lkICphZGRy
ZXNzOwoKCiMgMjcgIi4uL2twYXRoc2VhL2RlYnVnLmgiIDIKCgojIDUwICIuLi9rcGF0aHNlYS9k
ZWJ1Zy5oIgoKCiAKCgogCmV4dGVybiAgIHVuc2lnbmVkIGtwYXRoc2VhX2RlYnVnOwoKIAoKCiAK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBGSUxFICoga3BzZV9mb3Blbl90
cmFjZSAgKCBjb25zdF9zdHJpbmcgZmlsZW5hbWUgLCAgIGNvbnN0X3N0cmluZyBtb2RlICkgOwoK
CmV4dGVybiAgIGludCBrcHNlX2ZjbG9zZV90cmFjZSAgKCBGSUxFICogKSA7CgoKCgojIDY3ICIu
Li9rcGF0aHNlYS9jb25maWcuaCIgMgoKIyAxICIuLi9rcGF0aHNlYS9saWIuaCIgMQogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCiAgICAgIAogCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgwKIApleHRlcm4gICBzdHJp
bmcgY29uY2F0ICggY29uc3Rfc3RyaW5nIHMxICwgICBjb25zdF9zdHJpbmcgczIgKSA7CmV4dGVy
biAgIHN0cmluZyBjb25jYXQzICggY29uc3Rfc3RyaW5nICwgICBjb25zdF9zdHJpbmcgLCAgIGNv
bnN0X3N0cmluZyApIDsKIAoKCiAKZXh0ZXJuICAgc3RyaW5nIHhzdHJkdXAgKCBjb25zdF9zdHJp
bmcgcyApIDsKCiAKZXh0ZXJuICAgc3RyaW5nIHVwcGVyY2FzaWZ5ICggY29uc3Rfc3RyaW5nIHMg
KSA7CgogCmV4dGVybiAgIHVuc2lnbmVkIGF0b3UgKCBjb25zdF9zdHJpbmcgKSA7CgogCgoKZXh0
ZXJuICAgYm9vbGVhbiBzYW1lX2ZpbGVfcCAoIGNvbnN0X3N0cmluZyBmaWxlbmFtZTEgLCAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nIGZpbGVu
YW1lMiApIDsKCiAKCmV4dGVybiAgIGNvbnN0X3N0cmluZyB4YmFzZW5hbWUgKCBjb25zdF9zdHJp
bmcgbmFtZSApIDsKCiAKZXh0ZXJuICAgc3RyaW5nIHhkaXJuYW1lICggY29uc3Rfc3RyaW5nIG5h
bWUgKSA7CgoKCgoKIAoKZXh0ZXJuICAgc3RyaW5nIGZpbmRfc3VmZml4ICggY29uc3Rfc3RyaW5n
IG5hbWUgKSA7CgogCmV4dGVybiAgIHN0cmluZyByZW1vdmVfc3VmZml4ICggY29uc3Rfc3RyaW5n
IG5hbWUgKSA7CgogCgoKZXh0ZXJuICAgc3RyaW5nIG1ha2Vfc3VmZml4ICggY29uc3Rfc3RyaW5n
IHMgLCAgICBjb25zdF9zdHJpbmcgc3VmZml4ICkgOwoKIAoKCmV4dGVybiAgIHN0cmluZyBtYWtl
X3ByZWZpeCAoIHN0cmluZyBzdGVtX3ByZWZpeCAsICAgc3RyaW5nIG5hbWUgKSA7CgogCgpleHRl
cm4gICBzdHJpbmcgZXh0ZW5kX2ZpbGVuYW1lICggY29uc3Rfc3RyaW5nIG5hbWUgLCAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nIHN1ZmZp
eCApIDsKDAogCmV4dGVybiAgIHZvaWQgeHB1dGVudiAoIGNvbnN0X3N0cmluZyB2YXIgLCAgIGNv
bnN0X3N0cmluZyB2YWx1ZSApIDsKZXh0ZXJuICAgdm9pZCB4cHV0ZW52X2ludCAoIGNvbnN0X3N0
cmluZyB2YXIgLCAgIGludCB2YWx1ZSApIDsKCiAKZXh0ZXJuICAgc3RyaW5nIHhnZXRjd2QgKCB2
b2lkICkgOwoKIApleHRlcm4gICBib29sZWFuIGRpcl9wICggY29uc3Rfc3RyaW5nIGZuICkgOwoK
IAoKZXh0ZXJuICAgaW50IGRpcl9saW5rcyAoIGNvbnN0X3N0cmluZyBmbiApIDsKCiAKCmV4dGVy
biAgIEZJTEUgKnhmb3BlbiAoIGNvbnN0X3N0cmluZyBmaWxlbmFtZSAsICAgY29uc3Rfc3RyaW5n
IG1vZGUgKSA7CmV4dGVybiAgIHZvaWQgeGZjbG9zZSAoIEZJTEUgKiAsICAgY29uc3Rfc3RyaW5n
IGZpbGVuYW1lICkgOwpleHRlcm4gICB2b2lkIHhmc2VlayAoIEZJTEUgKiAsICAgbG9uZyAsICAg
aW50ICwgICBzdHJpbmcgZmlsZW5hbWUgKSA7CmV4dGVybiAgIHVuc2lnbmVkIGxvbmcgeGZ0ZWxs
ICggRklMRSAqICwgICBzdHJpbmcgZmlsZW5hbWUgKSA7CgogCgoKZXh0ZXJuICAgYWRkcmVzcyB4
bWFsbG9jICggdW5zaWduZWQgc2l6ZSApIDsKZXh0ZXJuICAgYWRkcmVzcyB4cmVhbGxvYyAoIGFk
ZHJlc3Mgb2xkX2FkZHJlc3MgLCAgIHVuc2lnbmVkIG5ld19zaXplICkgOwpleHRlcm4gICBhZGRy
ZXNzIHhjYWxsb2MgKCB1bnNpZ25lZCBuZWxlbSAsICAgdW5zaWduZWQgZWxzaXplICkgOwoKIAoK
CgoKCiMgNjggIi4uL2twYXRoc2VhL2NvbmZpZy5oIiAyCgoKIyAxICIuLi9rcGF0aHNlYS9wcm9n
bmFtZS5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBzdHJpbmcgcHJvZ3Jh
bV9pbnZvY2F0aW9uX25hbWU7CmV4dGVybiAgIHN0cmluZyBwcm9ncmFtX2ludm9jYXRpb25fc2hv
cnRfbmFtZTsKZXh0ZXJuICAgc3RyaW5nIGtwc2VfcHJvZ3JhbV9uYW1lOwoKIAoKCgoKCmV4dGVy
biAgIHZvaWQga3BzZV9zZXRfcHJvZ3JhbV9uYW1lICggY29uc3Rfc3RyaW5nIGFyZ3YwICwgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3N0cmluZyBwcm9nbmFt
ZSApIDsKCiAKCgoKCgogCgoKCgoKZXh0ZXJuICAgdm9pZCBrcHNlX3NldF9wcm9nbmFtZSAoIGNv
bnN0X3N0cmluZyBhcmd2MCApIDsKCgojIDcwICIuLi9rcGF0aHNlYS9jb25maWcuaCIgMgoKCiAg
IAogCgoKCgogCgoKCgoKCgoKCgoKCgojIDEwNSAiLi4va3BhdGhzZWEvY29uZmlnLmgiCgoKCiMg
MTEgInhkdmktY29uZmlnLmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKIAojIDEgIi91c3IvaW5jbHVkZS9qbXBfYnVm
LmgiIDEgMwogCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgX19qbXBfYnVmWzZdOwoKCiAKCgoKIyAz
MSAiL3Vzci9pbmNsdWRlL3NldGptcC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3NpZ3NldC5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsK
CiAKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0
IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpIF07CiAgfSBfX3NpZ3NldF90OwoK
CgoKIAoKCgoKCiMgMTIzICIvdXNyL2luY2x1ZGUvc2lnc2V0LmgiIDMKCiMgMzIgIi91c3IvaW5j
bHVkZS9zZXRqbXAuaCIgMiAzCgoKIAp0eXBlZGVmIHN0cnVjdCBfX2ptcF9idWZfdGFnCSAKICB7
CiAgICAgCgoKICAgIF9fam1wX2J1ZiBfX2ptcGJ1ZjsJCSAKICAgIGludCBfX21hc2tfd2FzX3Nh
dmVkOwkgCiAgICBfX3NpZ3NldF90IF9fc2F2ZWRfbWFzazsJIAogIH0gam1wX2J1ZlsxXTsKCgog
CgoKZXh0ZXJuIGludCBfX3NpZ3NldGptcCAgKGptcF9idWYgX19lbnYsIGludCBfX3NhdmVtYXNr
KSAgOwoKCiAKCgoKCgoKCgoKCiAKCgoKCgogCgpleHRlcm4gdm9pZCBsb25nam1wICAoam1wX2J1
ZiBfX2VudiwgaW50IF9fdmFsKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykp
OwoKIAoKCmV4dGVybiB2b2lkIF9sb25nam1wICAoam1wX2J1ZiBfX2VudiwgaW50IF9fdmFsKSAg
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAKZXh0ZXJuIHZvaWQgX19s
b25nam1wICAoX19qbXBfYnVmIF9fZW52LCBpbnQgX192YWwpICAKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CgogCgoKCmV4dGVybiBpbnQgX19zaWdqbXBfc2F2ZSAgKGptcF9i
dWYgX19lbnYsIGludCBfX3NhdmVtYXNrKSAgOwoKCgogCgoKdHlwZWRlZiBqbXBfYnVmIHNpZ2pt
cF9idWY7CgogCgoKCiAKCgoKZXh0ZXJuIHZvaWQgc2lnbG9uZ2ptcCAgKHNpZ2ptcF9idWYgX19l
bnYsIGludCBfX3ZhbCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgog
CgoKIyAxMyAieGR2aS1jb25maWcuaCIgMgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKIAojIDEgInhkdmkuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgogCgoKCiMgMSAiYy1hdXRvLmgiIDEKIAogCgogCiAKCiAKCgogCiAKCiAKCgogCiAKCiAKCgog
CiAKCiAKCgogCiAKCiAKCiAKCiAKIAoKIAoKCiAKCgogCgoKCiAKCgoKIAoKCiAKIAoKIAoKCiAK
CgogCgoKIAoKIAoKIAoKCgoKCgoKIAogCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoK
CiAKIAoKIAoKCiAKIAoKIAogCgogCiAKCiAKIAoKIAogCgogCiAKIyAzOSAieGR2aS5oIiAyCgoK
CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCgoKCgoKIAoKIAoKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vz
ci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0y
LjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoK
CgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2Nj
LTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
IyA0MiAieGR2aS5oIiAyCgoKCSAKIyAxICIvdXNyL2luY2x1ZGUvWDExL1guaCIgMSAzCiAKCgoK
IAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKIAoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSUQ7CnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBNYXNrOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgQXRvbTsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IFZpc3VhbElEOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVGltZTsKCgoKCgoKCgoKdHlwZWRlZiBY
SUQgV2luZG93Owp0eXBlZGVmIFhJRCBEcmF3YWJsZTsKdHlwZWRlZiBYSUQgRm9udDsKdHlwZWRl
ZiBYSUQgUGl4bWFwOwp0eXBlZGVmIFhJRCBDdXJzb3I7CnR5cGVkZWYgWElEIENvbG9ybWFwOwp0
eXBlZGVmIFhJRCBHQ29udGV4dDsKdHlwZWRlZiBYSUQgS2V5U3ltOwoKdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIEtleUNvZGU7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKIAoKCgoKCgoKCQkgICAgICAgCiAKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgogCgoKCgoK
IAoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgoK
CgoKCgojIDM0NSAiL3Vzci9pbmNsdWRlL1gxMS9YLmgiIDMKCgoKCgoKCgoKCgogCgoKCiAKIAoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKIAoK
CgoKCiAKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKCgoKIAoKCgoKIAoKCgoKCiAKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgogCgoKCgoKIAoKCgoKCgogCgoKCgogCgoKCgog
CgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKIAoKCgoKCgogCgoKCiAKCgoKCgogCgoKCiAKCgoKCgogCgoKCgoKIAoKCgogCgoKCgoKIAoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgog
CgoKCgogCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKCiMgNDUgInhkdmkuaCIgMgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL1gxMS9Yb3NkZWZzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAKCgoKCgoK
CgojIDkzICIvdXNyL2luY2x1ZGUvWDExL1hvc2RlZnMuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDQ3ICJ4ZHZpLmgiIDIKCgoKCgoKCgoKCiAKCgogCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDEgMwogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9YMTEv
WGZ1bmNwcm90by5oIiAxIDMKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTkg
Ii91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAyIDMKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
MzQyICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCiMgNzMgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAyIDMKCgoKCgoKCgoKCgoK
CgoKCgoKdHlwZWRlZiBjaGFyICpYUG9pbnRlcjsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCnR5cGVkZWYgc3Ry
dWN0IF9YRXh0RGF0YSB7CglpbnQgbnVtYmVyOwkJIAoJc3RydWN0IF9YRXh0RGF0YSAqbmV4dDsJ
IAoJaW50ICgqZnJlZV9wcml2YXRlKSgJIAoKCXN0cnVjdCBfWEV4dERhdGEgKmV4dGVuc2lvbgoK
CSk7CglYUG9pbnRlciBwcml2YXRlX2RhdGE7CSAKfSBYRXh0RGF0YTsKCiAKCgp0eXBlZGVmIHN0
cnVjdCB7CQkgCglpbnQgZXh0ZW5zaW9uOwkJIAoJaW50IG1ham9yX29wY29kZTsJIAoJaW50IGZp
cnN0X2V2ZW50OwkgCglpbnQgZmlyc3RfZXJyb3I7CSAKfSBYRXh0Q29kZXM7CgogCgoKCnR5cGVk
ZWYgc3RydWN0IHsKICAgIGludCBkZXB0aDsKICAgIGludCBiaXRzX3Blcl9waXhlbDsKICAgIGlu
dCBzY2FubGluZV9wYWQ7Cn0gWFBpeG1hcEZvcm1hdFZhbHVlczsKCgogCgoKdHlwZWRlZiBzdHJ1
Y3QgewoJaW50IGZ1bmN0aW9uOwkJIAoJdW5zaWduZWQgbG9uZyBwbGFuZV9tYXNrOyAKCXVuc2ln
bmVkIGxvbmcgZm9yZWdyb3VuZDsgCgl1bnNpZ25lZCBsb25nIGJhY2tncm91bmQ7IAoJaW50IGxp
bmVfd2lkdGg7CQkgCglpbnQgbGluZV9zdHlsZTsJIAkgCglpbnQgY2FwX3N0eWxlOwkgIAkgCgoJ
aW50IGpvaW5fc3R5bGU7CSAJIAoJaW50IGZpbGxfc3R5bGU7CSAJIAoKCWludCBmaWxsX3J1bGU7
CSAgCSAKCWludCBhcmNfbW9kZTsJCSAKCVBpeG1hcCB0aWxlOwkJIAoJUGl4bWFwIHN0aXBwbGU7
CQkgCglpbnQgdHNfeF9vcmlnaW47CSAKCWludCB0c195X29yaWdpbjsKICAgICAgICBGb250IGZv
bnQ7CSAgICAgICAgIAoJaW50IHN1YndpbmRvd19tb2RlOyAgICAgIAoJaW50ICBncmFwaGljc19l
eHBvc3VyZXM7IAoJaW50IGNsaXBfeF9vcmlnaW47CSAKCWludCBjbGlwX3lfb3JpZ2luOwoJUGl4
bWFwIGNsaXBfbWFzazsJIAoJaW50IGRhc2hfb2Zmc2V0OwkgCgljaGFyIGRhc2hlczsKfSBYR0NW
YWx1ZXM7CgogCgoKCgp0eXBlZGVmIHN0cnVjdCBfWEdDCgoKCgoKCgoqR0M7CgogCgoKdHlwZWRl
ZiBzdHJ1Y3QgewoJWEV4dERhdGEgKmV4dF9kYXRhOwkgCglWaXN1YWxJRCB2aXN1YWxpZDsJIAoK
CgoJaW50IGNsYXNzOwkJIAoKCXVuc2lnbmVkIGxvbmcgcmVkX21hc2ssIGdyZWVuX21hc2ssIGJs
dWVfbWFzazsJIAoJaW50IGJpdHNfcGVyX3JnYjsJIAoJaW50IG1hcF9lbnRyaWVzOwkgCn0gVmlz
dWFsOwoKIAoKCQp0eXBlZGVmIHN0cnVjdCB7CglpbnQgZGVwdGg7CQkgCglpbnQgbnZpc3VhbHM7
CQkgCglWaXN1YWwgKnZpc3VhbHM7CSAKfSBEZXB0aDsKCiAKCgoKCgpzdHJ1Y3QgX1hEaXNwbGF5
OwkJIAoKdHlwZWRlZiBzdHJ1Y3QgewoJWEV4dERhdGEgKmV4dF9kYXRhOwkgCglzdHJ1Y3QgX1hE
aXNwbGF5ICpkaXNwbGF5OyAKCVdpbmRvdyByb290OwkJIAoJaW50IHdpZHRoLCBoZWlnaHQ7CSAK
CWludCBtd2lkdGgsIG1oZWlnaHQ7CSAKCWludCBuZGVwdGhzOwkJIAoJRGVwdGggKmRlcHRoczsJ
CSAKCWludCByb290X2RlcHRoOwkJIAoJVmlzdWFsICpyb290X3Zpc3VhbDsJIAoJR0MgZGVmYXVs
dF9nYzsJCSAKCUNvbG9ybWFwIGNtYXA7CQkgCgl1bnNpZ25lZCBsb25nIHdoaXRlX3BpeGVsOwoJ
dW5zaWduZWQgbG9uZyBibGFja19waXhlbDsJIAoJaW50IG1heF9tYXBzLCBtaW5fbWFwczsJIAoJ
aW50IGJhY2tpbmdfc3RvcmU7CSAKCWludCAgc2F2ZV91bmRlcnM7CQoJbG9uZyByb290X2lucHV0
X21hc2s7CSAKfSBTY3JlZW47CgogCgoKdHlwZWRlZiBzdHJ1Y3QgewoJWEV4dERhdGEgKmV4dF9k
YXRhOwkgCglpbnQgZGVwdGg7CQkgCglpbnQgYml0c19wZXJfcGl4ZWw7CSAKCWludCBzY2FubGlu
ZV9wYWQ7CSAKfSBTY3JlZW5Gb3JtYXQ7CgogCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgUGl4bWFw
IGJhY2tncm91bmRfcGl4bWFwOwkgCiAgICB1bnNpZ25lZCBsb25nIGJhY2tncm91bmRfcGl4ZWw7
CSAKICAgIFBpeG1hcCBib3JkZXJfcGl4bWFwOwkgCiAgICB1bnNpZ25lZCBsb25nIGJvcmRlcl9w
aXhlbDsJIAogICAgaW50IGJpdF9ncmF2aXR5OwkJIAogICAgaW50IHdpbl9ncmF2aXR5OwkJIAog
ICAgaW50IGJhY2tpbmdfc3RvcmU7CQkgCiAgICB1bnNpZ25lZCBsb25nIGJhY2tpbmdfcGxhbmVz
OyAKICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19waXhlbDsgCiAgICBpbnQgIHNhdmVfdW5kZXI7
CQkgCiAgICBsb25nIGV2ZW50X21hc2s7CQkgCiAgICBsb25nIGRvX25vdF9wcm9wYWdhdGVfbWFz
azsJIAogICAgaW50ICBvdmVycmlkZV9yZWRpcmVjdDsJIAogICAgQ29sb3JtYXAgY29sb3JtYXA7
CQkgCiAgICBDdXJzb3IgY3Vyc29yOwkJIAp9IFhTZXRXaW5kb3dBdHRyaWJ1dGVzOwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgaW50IHgsIHk7CQkJIAogICAgaW50IHdpZHRoLCBoZWlnaHQ7CQkgCiAg
ICBpbnQgYm9yZGVyX3dpZHRoOwkJIAogICAgaW50IGRlcHRoOyAgICAgICAgICAJIAogICAgVmlz
dWFsICp2aXN1YWw7CQkgCiAgICBXaW5kb3cgcm9vdDsgICAgICAgIAkgCgoKCiAgICBpbnQgY2xh
c3M7CQkJIAoKICAgIGludCBiaXRfZ3Jhdml0eTsJCSAKICAgIGludCB3aW5fZ3Jhdml0eTsJCSAK
ICAgIGludCBiYWNraW5nX3N0b3JlOwkJIAogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3BsYW5l
czsgCiAgICB1bnNpZ25lZCBsb25nIGJhY2tpbmdfcGl4ZWw7IAogICAgaW50ICBzYXZlX3VuZGVy
OwkJIAogICAgQ29sb3JtYXAgY29sb3JtYXA7CQkgCiAgICBpbnQgIG1hcF9pbnN0YWxsZWQ7CQkg
CiAgICBpbnQgbWFwX3N0YXRlOwkJIAogICAgbG9uZyBhbGxfZXZlbnRfbWFza3M7CSAKICAgIGxv
bmcgeW91cl9ldmVudF9tYXNrOwkgCiAgICBsb25nIGRvX25vdF9wcm9wYWdhdGVfbWFzazsgIAog
ICAgaW50ICBvdmVycmlkZV9yZWRpcmVjdDsJIAogICAgU2NyZWVuICpzY3JlZW47CQkgCn0gWFdp
bmRvd0F0dHJpYnV0ZXM7CgogCgoKCgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgZmFtaWx5OwkJIAoJ
aW50IGxlbmd0aDsJCSAKCWNoYXIgKmFkZHJlc3M7CQkgCn0gWEhvc3RBZGRyZXNzOwoKIAoKCnR5
cGVkZWYgc3RydWN0IF9YSW1hZ2UgewogICAgaW50IHdpZHRoLCBoZWlnaHQ7CQkgCiAgICBpbnQg
eG9mZnNldDsJCSAKICAgIGludCBmb3JtYXQ7CQkJIAogICAgY2hhciAqZGF0YTsJCQkgCiAgICBp
bnQgYnl0ZV9vcmRlcjsJCSAKICAgIGludCBiaXRtYXBfdW5pdDsJCSAKICAgIGludCBiaXRtYXBf
Yml0X29yZGVyOwkgCiAgICBpbnQgYml0bWFwX3BhZDsJCSAKICAgIGludCBkZXB0aDsJCQkgCiAg
ICBpbnQgYnl0ZXNfcGVyX2xpbmU7CQkgCiAgICBpbnQgYml0c19wZXJfcGl4ZWw7CQkgCiAgICB1
bnNpZ25lZCBsb25nIHJlZF9tYXNrOwkgCiAgICB1bnNpZ25lZCBsb25nIGdyZWVuX21hc2s7CiAg
ICB1bnNpZ25lZCBsb25nIGJsdWVfbWFzazsKICAgIFhQb2ludGVyIG9iZGF0YTsJCSAKICAgIHN0
cnVjdCBmdW5jcyB7CQkgCgoJc3RydWN0IF9YSW1hZ2UgKigqY3JlYXRlX2ltYWdlKSgKCQlzdHJ1
Y3QgX1hEaXNwbGF5KiAgLAoJCVZpc3VhbCoJCSAsCgkJdW5zaWduZWQgaW50CSAsCgkJaW50CQkg
LAoJCWludAkJICwKCQljaGFyKgkJICwKCQl1bnNpZ25lZCBpbnQJICwKCQl1bnNpZ25lZCBpbnQJ
ICwKCQlpbnQJCSAsCgkJaW50CQkgKTsKCWludCAoKmRlc3Ryb3lfaW1hZ2UpICAgICAgICAoc3Ry
dWN0IF9YSW1hZ2UgKik7Cgl1bnNpZ25lZCBsb25nICgqZ2V0X3BpeGVsKSAgKHN0cnVjdCBfWElt
YWdlICosIGludCwgaW50KTsKCWludCAoKnB1dF9waXhlbCkgICAgICAgICAgICAoc3RydWN0IF9Y
SW1hZ2UgKiwgaW50LCBpbnQsIHVuc2lnbmVkIGxvbmcpOwoJc3RydWN0IF9YSW1hZ2UgKigqc3Vi
X2ltYWdlKShzdHJ1Y3QgX1hJbWFnZSAqLCBpbnQsIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25l
ZCBpbnQpOwoJaW50ICgqYWRkX3BpeGVsKSAgICAgICAgICAgIChzdHJ1Y3QgX1hJbWFnZSAqLCBs
b25nKTsKCgoKCgoKCgoJfSBmOwp9IFhJbWFnZTsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBp
bnQgeCwgeTsKICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgaW50IGJvcmRlcl93aWR0aDsKICAg
IFdpbmRvdyBzaWJsaW5nOwogICAgaW50IHN0YWNrX21vZGU7Cn0gWFdpbmRvd0NoYW5nZXM7Cgog
CgoKdHlwZWRlZiBzdHJ1Y3QgewoJdW5zaWduZWQgbG9uZyBwaXhlbDsKCXVuc2lnbmVkIHNob3J0
IHJlZCwgZ3JlZW4sIGJsdWU7CgljaGFyIGZsYWdzOyAgIAoJY2hhciBwYWQ7Cn0gWENvbG9yOwoK
IAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgc2hvcnQgeDEsIHkxLCB4MiwgeTI7Cn0gWFNlZ21l
bnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBzaG9ydCB4LCB5Owp9IFhQb2ludDsKICAgIAp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBzaG9ydCB4LCB5OwogICAgdW5zaWduZWQgc2hvcnQgd2lkdGgsIGhl
aWdodDsKfSBYUmVjdGFuZ2xlOwogICAgCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IHgsIHk7
CiAgICB1bnNpZ25lZCBzaG9ydCB3aWR0aCwgaGVpZ2h0OwogICAgc2hvcnQgYW5nbGUxLCBhbmds
ZTI7Cn0gWEFyYzsKCgogCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGtleV9jbGlja19w
ZXJjZW50OwogICAgICAgIGludCBiZWxsX3BlcmNlbnQ7CiAgICAgICAgaW50IGJlbGxfcGl0Y2g7
CiAgICAgICAgaW50IGJlbGxfZHVyYXRpb247CiAgICAgICAgaW50IGxlZDsKICAgICAgICBpbnQg
bGVkX21vZGU7CiAgICAgICAgaW50IGtleTsKICAgICAgICBpbnQgYXV0b19yZXBlYXRfbW9kZTsg
ICAgCn0gWEtleWJvYXJkQ29udHJvbDsKCiAKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQg
a2V5X2NsaWNrX3BlcmNlbnQ7CglpbnQgYmVsbF9wZXJjZW50OwoJdW5zaWduZWQgaW50IGJlbGxf
cGl0Y2gsIGJlbGxfZHVyYXRpb247Cgl1bnNpZ25lZCBsb25nIGxlZF9tYXNrOwoJaW50IGdsb2Jh
bF9hdXRvX3JlcGVhdDsKCWNoYXIgYXV0b19yZXBlYXRzWzMyXTsKfSBYS2V5Ym9hcmRTdGF0ZTsK
CiAKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBUaW1lIHRpbWU7CglzaG9ydCB4LCB5Owp9IFhU
aW1lQ29vcmQ7CgogCgp0eXBlZGVmIHN0cnVjdCB7CiAJaW50IG1heF9rZXlwZXJtb2Q7CSAKIAlL
ZXlDb2RlICptb2RpZmllcm1hcDsJIAp9IFhNb2RpZmllcktleW1hcDsKCgogCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CgoKc3RydWN0IF9YUHJpdmF0ZTsJCSAKc3RydWN0
IF9Ycm1IYXNoQnVja2V0UmVjOwoKdHlwZWRlZiBzdHJ1Y3QgCgoKCnsKCVhFeHREYXRhICpleHRf
ZGF0YTsJIAoJc3RydWN0IF9YUHJpdmF0ZSAqcHJpdmF0ZTE7CglpbnQgZmQ7CQkJIAoJaW50IHBy
aXZhdGUyOwoJaW50IHByb3RvX21ham9yX3ZlcnNpb247IAoJaW50IHByb3RvX21pbm9yX3ZlcnNp
b247IAoJY2hhciAqdmVuZG9yOwkJIAogICAgICAgIFhJRCBwcml2YXRlMzsKCVhJRCBwcml2YXRl
NDsKCVhJRCBwcml2YXRlNTsKCWludCBwcml2YXRlNjsKCVhJRCAoKnJlc291cmNlX2FsbG9jKSgJ
IAoKCQlzdHJ1Y3QgX1hEaXNwbGF5KgoKCSk7CglpbnQgYnl0ZV9vcmRlcjsJCSAKCWludCBiaXRt
YXBfdW5pdDsJIAoJaW50IGJpdG1hcF9wYWQ7CQkgCglpbnQgYml0bWFwX2JpdF9vcmRlcjsJIAoJ
aW50IG5mb3JtYXRzOwkJIAoJU2NyZWVuRm9ybWF0ICpwaXhtYXBfZm9ybWF0OwkgCglpbnQgcHJp
dmF0ZTg7CglpbnQgcmVsZWFzZTsJCSAKCXN0cnVjdCBfWFByaXZhdGUgKnByaXZhdGU5LCAqcHJp
dmF0ZTEwOwoJaW50IHFsZW47CQkgCgl1bnNpZ25lZCBsb25nIGxhc3RfcmVxdWVzdF9yZWFkOyAg
Cgl1bnNpZ25lZCBsb25nIHJlcXVlc3Q7CSAKCVhQb2ludGVyIHByaXZhdGUxMTsKCVhQb2ludGVy
IHByaXZhdGUxMjsKCVhQb2ludGVyIHByaXZhdGUxMzsKCVhQb2ludGVyIHByaXZhdGUxNDsKCXVu
c2lnbmVkIG1heF9yZXF1ZXN0X3NpemU7ICAKCXN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyAqZGI7
CglpbnQgKCpwcml2YXRlMTUpKAoKCQlzdHJ1Y3QgX1hEaXNwbGF5KgoKCQkpOwoJY2hhciAqZGlz
cGxheV9uYW1lOwkgCglpbnQgZGVmYXVsdF9zY3JlZW47CSAKCWludCBuc2NyZWVuczsJCSAKCVNj
cmVlbiAqc2NyZWVuczsJIAoJdW5zaWduZWQgbG9uZyBtb3Rpb25fYnVmZmVyOwkgCgl1bnNpZ25l
ZCBsb25nIHByaXZhdGUxNjsKCWludCBtaW5fa2V5Y29kZTsJIAoJaW50IG1heF9rZXljb2RlOwkg
CglYUG9pbnRlciBwcml2YXRlMTc7CglYUG9pbnRlciBwcml2YXRlMTg7CglpbnQgcHJpdmF0ZTE5
OwoJY2hhciAqeGRlZmF1bHRzOwkgCgkgCn0KCgoKKl9YUHJpdkRpc3BsYXk7CgoKCgoKIAoKCnR5
cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwkJIAoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWlu
dCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHdpbmRvdzsJICAg
ICAgICAgCglXaW5kb3cgcm9vdDsJICAgICAgICAgCglXaW5kb3cgc3Vid2luZG93OwkgCglUaW1l
IHRpbWU7CQkgCglpbnQgeCwgeTsJCSAKCWludCB4X3Jvb3QsIHlfcm9vdDsJIAoJdW5zaWduZWQg
aW50IHN0YXRlOwkgCgl1bnNpZ25lZCBpbnQga2V5Y29kZTsJIAoJaW50ICBzYW1lX3NjcmVlbjsJ
IAp9IFhLZXlFdmVudDsKdHlwZWRlZiBYS2V5RXZlbnQgWEtleVByZXNzZWRFdmVudDsKdHlwZWRl
ZiBYS2V5RXZlbnQgWEtleVJlbGVhc2VkRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlw
ZTsJCSAKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURpc3Bs
YXkgKmRpc3BsYXk7CSAKCVdpbmRvdyB3aW5kb3c7CSAgICAgICAgIAoJV2luZG93IHJvb3Q7CSAg
ICAgICAgIAoJV2luZG93IHN1YndpbmRvdzsJIAoJVGltZSB0aW1lOwkJIAoJaW50IHgsIHk7CQkg
CglpbnQgeF9yb290LCB5X3Jvb3Q7CSAKCXVuc2lnbmVkIGludCBzdGF0ZTsJIAoJdW5zaWduZWQg
aW50IGJ1dHRvbjsJIAoJaW50ICBzYW1lX3NjcmVlbjsJIAp9IFhCdXR0b25FdmVudDsKdHlwZWRl
ZiBYQnV0dG9uRXZlbnQgWEJ1dHRvblByZXNzZWRFdmVudDsKdHlwZWRlZiBYQnV0dG9uRXZlbnQg
WEJ1dHRvblJlbGVhc2VkRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlwZTsJCSAKCXVu
c2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkgKmRpc3Bs
YXk7CSAKCVdpbmRvdyB3aW5kb3c7CSAgICAgICAgIAoJV2luZG93IHJvb3Q7CSAgICAgICAgIAoJ
V2luZG93IHN1YndpbmRvdzsJIAoJVGltZSB0aW1lOwkJIAoJaW50IHgsIHk7CQkgCglpbnQgeF9y
b290LCB5X3Jvb3Q7CSAKCXVuc2lnbmVkIGludCBzdGF0ZTsJIAoJY2hhciBpc19oaW50OwkJIAoJ
aW50ICBzYW1lX3NjcmVlbjsJIAp9IFhNb3Rpb25FdmVudDsKdHlwZWRlZiBYTW90aW9uRXZlbnQg
WFBvaW50ZXJNb3ZlZEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7CQkgCgl1bnNp
Z25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5
OwkgCglXaW5kb3cgd2luZG93OwkgICAgICAgICAKCVdpbmRvdyByb290OwkgICAgICAgICAKCVdp
bmRvdyBzdWJ3aW5kb3c7CSAKCVRpbWUgdGltZTsJCSAKCWludCB4LCB5OwkJIAoJaW50IHhfcm9v
dCwgeV9yb290OwkgCglpbnQgbW9kZTsJCSAKCWludCBkZXRhaWw7CgkgCgoKCglpbnQgIHNhbWVf
c2NyZWVuOwkgCglpbnQgIGZvY3VzOwkJIAoJdW5zaWduZWQgaW50IHN0YXRlOwkgCn0gWENyb3Nz
aW5nRXZlbnQ7CnR5cGVkZWYgWENyb3NzaW5nRXZlbnQgWEVudGVyV2luZG93RXZlbnQ7CnR5cGVk
ZWYgWENyb3NzaW5nRXZlbnQgWExlYXZlV2luZG93RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7Cglp
bnQgdHlwZTsJCSAKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAK
CURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyB3aW5kb3c7CQkgCglpbnQgbW9kZTsJCSAKCWlu
dCBkZXRhaWw7CgkgCgoKCgp9IFhGb2N1c0NoYW5nZUV2ZW50Owp0eXBlZGVmIFhGb2N1c0NoYW5n
ZUV2ZW50IFhGb2N1c0luRXZlbnQ7CnR5cGVkZWYgWEZvY3VzQ2hhbmdlRXZlbnQgWEZvY3VzT3V0
RXZlbnQ7CgogCnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJp
YWw7CSAKCWludCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHdp
bmRvdzsKCWNoYXIga2V5X3ZlY3RvclszMl07Cn0gWEtleW1hcEV2ZW50OwkKCnR5cGVkZWYgc3Ry
dWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWludCAgc2VuZF9ldmVu
dDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHdpbmRvdzsKCWludCB4LCB5OwoJaW50
IHdpZHRoLCBoZWlnaHQ7CglpbnQgY291bnQ7CQkgCn0gWEV4cG9zZUV2ZW50OwoKdHlwZWRlZiBz
dHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2
ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglEcmF3YWJsZSBkcmF3YWJsZTsKCWludCB4LCB5
OwoJaW50IHdpZHRoLCBoZWlnaHQ7CglpbnQgY291bnQ7CQkgCglpbnQgbWFqb3JfY29kZTsJCSAK
CWludCBtaW5vcl9jb2RlOwkJIAp9IFhHcmFwaGljc0V4cG9zZUV2ZW50OwoKdHlwZWRlZiBzdHJ1
Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2ZW50
OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglEcmF3YWJsZSBkcmF3YWJsZTsKCWludCBtYWpvcl9j
b2RlOwkJIAoJaW50IG1pbm9yX2NvZGU7CQkgCn0gWE5vRXhwb3NlRXZlbnQ7Cgp0eXBlZGVmIHN0
cnVjdCB7CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZl
bnQ7CSAKCURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyB3aW5kb3c7CglpbnQgc3RhdGU7CQkg
Cn0gWFZpc2liaWxpdHlFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWdu
ZWQgbG9uZyBzZXJpYWw7CSAKCWludCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJ
IAoJV2luZG93IHBhcmVudDsJCSAKCVdpbmRvdyB3aW5kb3c7CQkgCglpbnQgeCwgeTsJCSAKCWlu
dCB3aWR0aCwgaGVpZ2h0OwkgCglpbnQgYm9yZGVyX3dpZHRoOwkgCglpbnQgIG92ZXJyaWRlX3Jl
ZGlyZWN0OwkgCn0gWENyZWF0ZVdpbmRvd0V2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5
cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5
ICpkaXNwbGF5OwkgCglXaW5kb3cgZXZlbnQ7CglXaW5kb3cgd2luZG93Owp9IFhEZXN0cm95V2lu
ZG93RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyBl
dmVudDsKCVdpbmRvdyB3aW5kb3c7CglpbnQgIGZyb21fY29uZmlndXJlOwp9IFhVbm1hcEV2ZW50
OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJ
aW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgZXZlbnQ7CglX
aW5kb3cgd2luZG93OwoJaW50ICBvdmVycmlkZV9yZWRpcmVjdDsJIAp9IFhNYXBFdmVudDsKCnR5
cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWludCAg
c2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHBhcmVudDsKCVdpbmRv
dyB3aW5kb3c7Cn0gWE1hcFJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBl
OwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWludCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAq
ZGlzcGxheTsJIAoJV2luZG93IGV2ZW50OwoJV2luZG93IHdpbmRvdzsKCVdpbmRvdyBwYXJlbnQ7
CglpbnQgeCwgeTsKCWludCAgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWFJlcGFyZW50RXZlbnQ7Cgp0
eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQg
IHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyBldmVudDsKCVdpbmRv
dyB3aW5kb3c7CglpbnQgeCwgeTsKCWludCB3aWR0aCwgaGVpZ2h0OwoJaW50IGJvcmRlcl93aWR0
aDsKCVdpbmRvdyBhYm92ZTsKCWludCAgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWENvbmZpZ3VyZUV2
ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJ
IAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgZXZlbnQ7
CglXaW5kb3cgd2luZG93OwoJaW50IHgsIHk7Cn0gWEdyYXZpdHlFdmVudDsKCnR5cGVkZWYgc3Ry
dWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWludCAgc2VuZF9ldmVu
dDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHdpbmRvdzsKCWludCB3aWR0aCwgaGVp
Z2h0Owp9IFhSZXNpemVSZXF1ZXN0RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlwZTsK
CXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkgKmRp
c3BsYXk7CSAKCVdpbmRvdyBwYXJlbnQ7CglXaW5kb3cgd2luZG93OwoJaW50IHgsIHk7CglpbnQg
d2lkdGgsIGhlaWdodDsKCWludCBib3JkZXJfd2lkdGg7CglXaW5kb3cgYWJvdmU7CglpbnQgZGV0
YWlsOwkJIAoJdW5zaWduZWQgbG9uZyB2YWx1ZV9tYXNrOwp9IFhDb25maWd1cmVSZXF1ZXN0RXZl
bnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkg
CglpbnQgIHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyBldmVudDsK
CVdpbmRvdyB3aW5kb3c7CglpbnQgcGxhY2U7CQkgCn0gWENpcmN1bGF0ZUV2ZW50OwoKdHlwZWRl
ZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5k
X2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgcGFyZW50OwoJV2luZG93IHdp
bmRvdzsKCWludCBwbGFjZTsJCSAKfSBYQ2lyY3VsYXRlUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBz
dHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2
ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgd2luZG93OwoJQXRvbSBhdG9tOwoJ
VGltZSB0aW1lOwoJaW50IHN0YXRlOwkJIAp9IFhQcm9wZXJ0eUV2ZW50OwoKdHlwZWRlZiBzdHJ1
Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2ZW50
OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgd2luZG93OwoJQXRvbSBzZWxlY3Rpb247
CglUaW1lIHRpbWU7Cn0gWFNlbGVjdGlvbkNsZWFyRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7Cglp
bnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURp
c3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyBvd25lcjsKCVdpbmRvdyByZXF1ZXN0b3I7CglBdG9t
IHNlbGVjdGlvbjsKCUF0b20gdGFyZ2V0OwoJQXRvbSBwcm9wZXJ0eTsKCVRpbWUgdGltZTsKfSBY
U2VsZWN0aW9uUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNp
Z25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5
OwkgCglXaW5kb3cgcmVxdWVzdG9yOwoJQXRvbSBzZWxlY3Rpb247CglBdG9tIHRhcmdldDsKCUF0
b20gcHJvcGVydHk7CQkgCglUaW1lIHRpbWU7Cn0gWFNlbGVjdGlvbkV2ZW50OwoKdHlwZWRlZiBz
dHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2
ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgd2luZG93OwoJQ29sb3JtYXAgY29s
b3JtYXA7CSAKCgoKCWludCAgbmV3OwoKCWludCBzdGF0ZTsJCSAKfSBYQ29sb3JtYXBFdmVudDsK
CnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWlu
dCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHdpbmRvdzsKCUF0
b20gbWVzc2FnZV90eXBlOwoJaW50IGZvcm1hdDsKCXVuaW9uIHsKCQljaGFyIGJbMjBdOwoJCXNo
b3J0IHNbMTBdOwoJCWxvbmcgbFs1XTsKCQl9IGRhdGE7Cn0gWENsaWVudE1lc3NhZ2VFdmVudDsK
CnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWlu
dCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHdpbmRvdzsJCSAK
CWludCByZXF1ZXN0OwkJIAoKCWludCBmaXJzdF9rZXljb2RlOwkgCglpbnQgY291bnQ7CQkgCn0g
WE1hcHBpbmdFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwoJRGlzcGxheSAqZGlz
cGxheTsJIAoJWElEIHJlc291cmNlaWQ7CQkgCgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJdW5z
aWduZWQgY2hhciBlcnJvcl9jb2RlOwkgCgl1bnNpZ25lZCBjaGFyIHJlcXVlc3RfY29kZTsJIAoJ
dW5zaWduZWQgY2hhciBtaW5vcl9jb2RlOwkgCn0gWEVycm9yRXZlbnQ7Cgp0eXBlZGVmIHN0cnVj
dCB7CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7
CSAKCURpc3BsYXkgKmRpc3BsYXk7IAoJV2luZG93IHdpbmRvdzsJIAp9IFhBbnlFdmVudDsKCiAK
CgoKdHlwZWRlZiB1bmlvbiBfWEV2ZW50IHsKICAgICAgICBpbnQgdHlwZTsJCSAKCVhBbnlFdmVu
dCB4YW55OwoJWEtleUV2ZW50IHhrZXk7CglYQnV0dG9uRXZlbnQgeGJ1dHRvbjsKCVhNb3Rpb25F
dmVudCB4bW90aW9uOwoJWENyb3NzaW5nRXZlbnQgeGNyb3NzaW5nOwoJWEZvY3VzQ2hhbmdlRXZl
bnQgeGZvY3VzOwoJWEV4cG9zZUV2ZW50IHhleHBvc2U7CglYR3JhcGhpY3NFeHBvc2VFdmVudCB4
Z3JhcGhpY3NleHBvc2U7CglYTm9FeHBvc2VFdmVudCB4bm9leHBvc2U7CglYVmlzaWJpbGl0eUV2
ZW50IHh2aXNpYmlsaXR5OwoJWENyZWF0ZVdpbmRvd0V2ZW50IHhjcmVhdGV3aW5kb3c7CglYRGVz
dHJveVdpbmRvd0V2ZW50IHhkZXN0cm95d2luZG93OwoJWFVubWFwRXZlbnQgeHVubWFwOwoJWE1h
cEV2ZW50IHhtYXA7CglYTWFwUmVxdWVzdEV2ZW50IHhtYXByZXF1ZXN0OwoJWFJlcGFyZW50RXZl
bnQgeHJlcGFyZW50OwoJWENvbmZpZ3VyZUV2ZW50IHhjb25maWd1cmU7CglYR3Jhdml0eUV2ZW50
IHhncmF2aXR5OwoJWFJlc2l6ZVJlcXVlc3RFdmVudCB4cmVzaXplcmVxdWVzdDsKCVhDb25maWd1
cmVSZXF1ZXN0RXZlbnQgeGNvbmZpZ3VyZXJlcXVlc3Q7CglYQ2lyY3VsYXRlRXZlbnQgeGNpcmN1
bGF0ZTsKCVhDaXJjdWxhdGVSZXF1ZXN0RXZlbnQgeGNpcmN1bGF0ZXJlcXVlc3Q7CglYUHJvcGVy
dHlFdmVudCB4cHJvcGVydHk7CglYU2VsZWN0aW9uQ2xlYXJFdmVudCB4c2VsZWN0aW9uY2xlYXI7
CglYU2VsZWN0aW9uUmVxdWVzdEV2ZW50IHhzZWxlY3Rpb25yZXF1ZXN0OwoJWFNlbGVjdGlvbkV2
ZW50IHhzZWxlY3Rpb247CglYQ29sb3JtYXBFdmVudCB4Y29sb3JtYXA7CglYQ2xpZW50TWVzc2Fn
ZUV2ZW50IHhjbGllbnQ7CglYTWFwcGluZ0V2ZW50IHhtYXBwaW5nOwoJWEVycm9yRXZlbnQgeGVy
cm9yOwoJWEtleW1hcEV2ZW50IHhrZXltYXA7Cglsb25nIHBhZFsyNF07Cn0gWEV2ZW50OwoKCgoK
IAoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0CWxiZWFyaW5nOwkgCiAgICBzaG9ydAlyYmVh
cmluZzsJIAogICAgc2hvcnQJd2lkdGg7CQkgCiAgICBzaG9ydAlhc2NlbnQ7CQkgCiAgICBzaG9y
dAlkZXNjZW50OwkgCiAgICB1bnNpZ25lZCBzaG9ydCBhdHRyaWJ1dGVzOwkgCn0gWENoYXJTdHJ1
Y3Q7CgogCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIEF0b20gbmFtZTsKICAgIHVuc2lnbmVkIGxv
bmcgY2FyZDMyOwp9IFhGb250UHJvcDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFhFeHREYXRhCSpl
eHRfZGF0YTsJIAogICAgRm9udCAgICAgICAgZmlkOyAgICAgICAgICAgICAKICAgIHVuc2lnbmVk
CWRpcmVjdGlvbjsJIAogICAgdW5zaWduZWQJbWluX2NoYXJfb3JfYnl0ZTI7IAogICAgdW5zaWdu
ZWQJbWF4X2NoYXJfb3JfYnl0ZTI7IAogICAgdW5zaWduZWQJbWluX2J5dGUxOwkgCiAgICB1bnNp
Z25lZAltYXhfYnl0ZTE7CSAKICAgIGludCAJYWxsX2NoYXJzX2V4aXN0OyAKICAgIHVuc2lnbmVk
CWRlZmF1bHRfY2hhcjsJIAogICAgaW50ICAgICAgICAgbl9wcm9wZXJ0aWVzOyAgICAKICAgIFhG
b250UHJvcAkqcHJvcGVydGllczsJIAogICAgWENoYXJTdHJ1Y3QJbWluX2JvdW5kczsJIAogICAg
WENoYXJTdHJ1Y3QJbWF4X2JvdW5kczsJIAogICAgWENoYXJTdHJ1Y3QJKnBlcl9jaGFyOwkgCiAg
ICBpbnQJCWFzY2VudDsJCSAKICAgIGludAkJZGVzY2VudDsJIAp9IFhGb250U3RydWN0OwoKIAoK
CnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgKmNoYXJzOwkJIAogICAgaW50IG5jaGFyczsJCQkg
CiAgICBpbnQgZGVsdGE7CQkJIAogICAgRm9udCBmb250OwkJCSAKfSBYVGV4dEl0ZW07Cgp0eXBl
ZGVmIHN0cnVjdCB7CQkgCiAgICB1bnNpZ25lZCBjaGFyIGJ5dGUxOwogICAgdW5zaWduZWQgY2hh
ciBieXRlMjsKfSBYQ2hhcjJiOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgWENoYXIyYiAqY2hhcnM7
CQkgCiAgICBpbnQgbmNoYXJzOwkJCSAKICAgIGludCBkZWx0YTsJCQkgCiAgICBGb250IGZvbnQ7
CQkJIAp9IFhUZXh0SXRlbTE2OwoKCnR5cGVkZWYgdW5pb24geyBEaXNwbGF5ICpkaXNwbGF5OwoJ
CUdDIGdjOwoJCVZpc3VhbCAqdmlzdWFsOwoJCVNjcmVlbiAqc2NyZWVuOwoJCVNjcmVlbkZvcm1h
dCAqcGl4bWFwX2Zvcm1hdDsKCQlYRm9udFN0cnVjdCAqZm9udDsgfSBYRURhdGFPYmplY3Q7Cgp0
eXBlZGVmIHN0cnVjdCB7CiAgICBYUmVjdGFuZ2xlICAgICAgbWF4X2lua19leHRlbnQ7CiAgICBY
UmVjdGFuZ2xlICAgICAgbWF4X2xvZ2ljYWxfZXh0ZW50Owp9IFhGb250U2V0RXh0ZW50czsKCiAK
CgoKdHlwZWRlZiBzdHJ1Y3QgX1hPTSAqWE9NOwp0eXBlZGVmIHN0cnVjdCBfWE9DICpYT0MsICpY
Rm9udFNldDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgICAgICAgICAgICpjaGFyczsKICAg
IGludCAgICAgICAgICAgICBuY2hhcnM7CiAgICBpbnQgICAgICAgICAgICAgZGVsdGE7CiAgICBY
Rm9udFNldCAgICAgICAgZm9udF9zZXQ7Cn0gWG1iVGV4dEl0ZW07Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICB3Y2hhcl90ICAgICAgICAqY2hhcnM7CiAgICBpbnQgICAgICAgICAgICAgbmNoYXJzOwog
ICAgaW50ICAgICAgICAgICAgIGRlbHRhOwogICAgWEZvbnRTZXQgICAgICAgIGZvbnRfc2V0Owp9
IFh3Y1RleHRJdGVtOwoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgY2hhcnNl
dF9jb3VudDsKICAgIGNoYXIgKipjaGFyc2V0X2xpc3Q7Cn0gWE9NQ2hhclNldExpc3Q7Cgp0eXBl
ZGVmIGVudW0gewogICAgWE9NT3JpZW50YXRpb25fTFRSX1RUQiwKICAgIFhPTU9yaWVudGF0aW9u
X1JUTF9UVEIsCiAgICBYT01PcmllbnRhdGlvbl9UVEJfTFRSLAogICAgWE9NT3JpZW50YXRpb25f
VFRCX1JUTCwKICAgIFhPTU9yaWVudGF0aW9uX0NvbnRleHQKfSBYT3JpZW50YXRpb247Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBpbnQgbnVtX29yaWVudGF0aW9uOwogICAgWE9yaWVudGF0aW9uICpv
cmllbnRhdGlvbjsJIAp9IFhPTU9yaWVudGF0aW9uOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50
IG51bV9mb250OwogICAgWEZvbnRTdHJ1Y3QgKipmb250X3N0cnVjdF9saXN0OwogICAgY2hhciAq
KmZvbnRfbmFtZV9saXN0Owp9IFhPTUZvbnRJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX1hJTSAqWElN
Owp0eXBlZGVmIHN0cnVjdCBfWElDICpYSUM7Cgp0eXBlZGVmIHZvaWQgKCpYSU1Qcm9jKSgKCiAg
ICBYSU0sCiAgICBYUG9pbnRlciwKICAgIFhQb2ludGVyCgopOwoKdHlwZWRlZiBpbnQgICgqWElD
UHJvYykoCgogICAgWElDLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYg
dm9pZCAoKlhJRFByb2MpKAoKICAgIERpc3BsYXkqLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRl
cgoKKTsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1TdHlsZTsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgIHVuc2lnbmVkIHNob3J0IGNvdW50X3N0eWxlczsKICAgIFhJTVN0eWxlICpzdXBwb3J0ZWRf
c3R5bGVzOwp9IFhJTVN0eWxlczsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKlhWYU5lc3RlZExpc3Q7CgoK
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYUG9pbnRlciBjbGllbnRfZGF0YTsKICAgIFhJTVByb2Mg
Y2FsbGJhY2s7Cn0gWElNQ2FsbGJhY2s7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYUG9pbnRlciBj
bGllbnRfZGF0YTsKICAgIFhJQ1Byb2MgY2FsbGJhY2s7Cn0gWElDQ2FsbGJhY2s7Cgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgWElNRmVlZGJhY2s7CgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1hJ
TVRleHQgewogICAgdW5zaWduZWQgc2hvcnQgbGVuZ3RoOwogICAgWElNRmVlZGJhY2sgKmZlZWRi
YWNrOwogICAgaW50ICBlbmNvZGluZ19pc193Y2hhcjsgCiAgICB1bmlvbiB7CgljaGFyICptdWx0
aV9ieXRlOwoJd2NoYXJfdCAqd2lkZV9jaGFyOwogICAgfSBzdHJpbmc7IAp9IFhJTVRleHQ7Cgp0
eXBlZGVmCXVuc2lnbmVkIGxvbmcJIFhJTVByZWVkaXRTdGF0ZTsKCgoKCgp0eXBlZGVmCXN0cnVj
dAlfWElNUHJlZWRpdFN0YXRlTm90aWZ5Q2FsbGJhY2tTdHJ1Y3QgewogICAgWElNUHJlZWRpdFN0
YXRlIHN0YXRlOwp9IFhJTVByZWVkaXRTdGF0ZU5vdGlmeUNhbGxiYWNrU3RydWN0OwoKdHlwZWRl
Zgl1bnNpZ25lZCBsb25nCSBYSU1SZXNldFN0YXRlOwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IFhJTVN0cmluZ0NvbnZlcnNpb25GZWVkYmFjazsKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfWElN
U3RyaW5nQ29udmVyc2lvblRleHQgewogICAgdW5zaWduZWQgc2hvcnQgbGVuZ3RoOwogICAgWElN
U3RyaW5nQ29udmVyc2lvbkZlZWRiYWNrICpmZWVkYmFjazsKICAgIGludCAgZW5jb2RpbmdfaXNf
d2NoYXI7IAogICAgdW5pb24gewoJY2hhciAqbWJzOwoJd2NoYXJfdCAqd2NzOwogICAgfSBzdHJp
bmc7IAp9IFhJTVN0cmluZ0NvbnZlcnNpb25UZXh0OwoKdHlwZWRlZgl1bnNpZ25lZCBzaG9ydAlY
SU1TdHJpbmdDb252ZXJzaW9uUG9zaXRpb247Cgp0eXBlZGVmCXVuc2lnbmVkIHNob3J0CVhJTVN0
cmluZ0NvbnZlcnNpb25UeXBlOwoKCgoKCgp0eXBlZGVmCXVuc2lnbmVkIHNob3J0CVhJTVN0cmlu
Z0NvbnZlcnNpb25PcGVyYXRpb247CgoKCgp0eXBlZGVmIGVudW0gewogICAgWElNRm9yd2FyZENo
YXIsIFhJTUJhY2t3YXJkQ2hhciwKICAgIFhJTUZvcndhcmRXb3JkLCBYSU1CYWNrd2FyZFdvcmQs
CiAgICBYSU1DYXJldFVwLCBYSU1DYXJldERvd24sCiAgICBYSU1OZXh0TGluZSwgWElNUHJldmlv
dXNMaW5lLAogICAgWElNTGluZVN0YXJ0LCBYSU1MaW5lRW5kLCAKICAgIFhJTUFic29sdXRlUG9z
aXRpb24sCiAgICBYSU1Eb250Q2hhbmdlCn0gWElNQ2FyZXREaXJlY3Rpb247Cgp0eXBlZGVmIHN0
cnVjdCBfWElNU3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0IHsKICAgIFhJTVN0cmluZ0Nv
bnZlcnNpb25Qb3NpdGlvbiBwb3NpdGlvbjsKICAgIFhJTUNhcmV0RGlyZWN0aW9uIGRpcmVjdGlv
bjsKICAgIFhJTVN0cmluZ0NvbnZlcnNpb25PcGVyYXRpb24gb3BlcmF0aW9uOwogICAgdW5zaWdu
ZWQgc2hvcnQgZmFjdG9yOwogICAgWElNU3RyaW5nQ29udmVyc2lvblRleHQgKnRleHQ7Cn0gWElN
U3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBzdHJ1Y3QgX1hJTVByZWVk
aXREcmF3Q2FsbGJhY2tTdHJ1Y3QgewogICAgaW50IGNhcmV0OwkJIAogICAgaW50IGNoZ19maXJz
dDsJIAogICAgaW50IGNoZ19sZW5ndGg7CSAKICAgIFhJTVRleHQgKnRleHQ7Cn0gWElNUHJlZWRp
dERyYXdDYWxsYmFja1N0cnVjdDsKCnR5cGVkZWYgZW51bSB7CiAgICBYSU1Jc0ludmlzaWJsZSwJ
ICAKICAgIFhJTUlzUHJpbWFyeSwJIAogICAgWElNSXNTZWNvbmRhcnkJIAp9IFhJTUNhcmV0U3R5
bGU7Cgp0eXBlZGVmIHN0cnVjdCBfWElNUHJlZWRpdENhcmV0Q2FsbGJhY2tTdHJ1Y3QgewogICAg
aW50IHBvc2l0aW9uOwkJICAKICAgIFhJTUNhcmV0RGlyZWN0aW9uIGRpcmVjdGlvbjsgIAogICAg
WElNQ2FyZXRTdHlsZSBzdHlsZTsJICAKfSBYSU1QcmVlZGl0Q2FyZXRDYWxsYmFja1N0cnVjdDsK
CnR5cGVkZWYgZW51bSB7CiAgICBYSU1UZXh0VHlwZSwKICAgIFhJTUJpdG1hcFR5cGUKfSBYSU1T
dGF0dXNEYXRhVHlwZTsKCQp0eXBlZGVmIHN0cnVjdCBfWElNU3RhdHVzRHJhd0NhbGxiYWNrU3Ry
dWN0IHsKICAgIFhJTVN0YXR1c0RhdGFUeXBlIHR5cGU7CiAgICB1bmlvbiB7CglYSU1UZXh0ICp0
ZXh0OwoJUGl4bWFwICBiaXRtYXA7CiAgICB9IGRhdGE7Cn0gWElNU3RhdHVzRHJhd0NhbGxiYWNr
U3RydWN0OwoKdHlwZWRlZiBzdHJ1Y3QgX1hJTUhvdEtleVRyaWdnZXIgewogICAgS2V5U3ltCSBr
ZXlzeW07CiAgICBpbnQJCSBtb2RpZmllcjsKICAgIGludAkJIG1vZGlmaWVyX21hc2s7Cn0gWElN
SG90S2V5VHJpZ2dlcjsKCnR5cGVkZWYgc3RydWN0IF9YSU1Ib3RLZXlUcmlnZ2VycyB7CiAgICBp
bnQJCQkgbnVtX2hvdF9rZXk7CiAgICBYSU1Ib3RLZXlUcmlnZ2VyCSprZXk7Cn0gWElNSG90S2V5
VHJpZ2dlcnM7Cgp0eXBlZGVmCXVuc2lnbmVkIGxvbmcJIFhJTUhvdEtleVN0YXRlOwoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgdW5zaWduZWQgc2hvcnQgY291bnRfdmFsdWVzOwogICAgY2hhciAq
KnN1cHBvcnRlZF92YWx1ZXM7Cn0gWElNVmFsdWVzTGlzdDsKCiAKCgoKCgpleHRlcm4gaW50IF9Y
ZGVidWc7CgpleHRlcm4gWEZvbnRTdHJ1Y3QgKlhMb2FkUXVlcnlGb250KAoKICAgIERpc3BsYXkq
CQkgLAogICAgY29uc3QgIGNoYXIqCSAKCik7CgpleHRlcm4gWEZvbnRTdHJ1Y3QgKlhRdWVyeUZv
bnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBYSUQJCQkgCgopOwoKCmV4dGVybiBYVGltZUNvb3Jk
ICpYR2V0TW90aW9uRXZlbnRzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAg
VGltZQkJICwKICAgIFRpbWUJCSAsCiAgICBpbnQqCQkgCgopOwoKZXh0ZXJuIFhNb2RpZmllcktl
eW1hcCAqWERlbGV0ZU1vZGlmaWVybWFwRW50cnkoCgogICAgWE1vZGlmaWVyS2V5bWFwKgkgLAoK
ICAgIHVuc2lnbmVkIGludAkgLAoKCgogICAgaW50CQkJIAoKKTsKCmV4dGVybiBYTW9kaWZpZXJL
ZXltYXAJKlhHZXRNb2RpZmllck1hcHBpbmcoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4g
WE1vZGlmaWVyS2V5bWFwCSpYSW5zZXJ0TW9kaWZpZXJtYXBFbnRyeSgKCiAgICBYTW9kaWZpZXJL
ZXltYXAqCSAsCgogICAgdW5zaWduZWQgaW50CSAsCgoKCiAgICBpbnQJCQkgICAgIAoKKTsKCmV4
dGVybiBYTW9kaWZpZXJLZXltYXAgKlhOZXdNb2RpZmllcm1hcCgKCiAgICBpbnQJCQkgCgopOwoK
ZXh0ZXJuIFhJbWFnZSAqWENyZWF0ZUltYWdlKAoKICAgIERpc3BsYXkqCQkgLAogICAgVmlzdWFs
KgkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBj
aGFyKgkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBpbnQJ
CQkgLAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIGludCAgWEluaXRJbWFnZSgKCiAgICBYSW1hZ2Uq
CQkgCgopOwpleHRlcm4gWEltYWdlICpYR2V0SW1hZ2UoCgogICAgRGlzcGxheSoJCSAsCiAgICBE
cmF3YWJsZQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWduZWQgaW50CSAs
CiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGxvbmcJICwKICAgIGludAkJCSAKCik7
CmV4dGVybiBYSW1hZ2UgKlhHZXRTdWJJbWFnZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdh
YmxlCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAg
IHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgbG9uZwkgLAogICAgaW50CQkJICwKICAgIFhJ
bWFnZSoJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsKCiAKCgpleHRlcm4gRGlzcGxh
eSAqWE9wZW5EaXNwbGF5KAoKICAgIGNvbnN0ICBjaGFyKgkgCgopOwoKZXh0ZXJuIHZvaWQgWHJt
SW5pdGlhbGl6ZSgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIGNoYXIgKlhGZXRjaEJ5dGVzKAoKICAg
IERpc3BsYXkqCQkgLAogICAgaW50KgkJIAoKKTsKZXh0ZXJuIGNoYXIgKlhGZXRjaEJ1ZmZlcigK
CiAgICBEaXNwbGF5KgkJICwKICAgIGludCoJCSAsCiAgICBpbnQJCQkgCgopOwpleHRlcm4gY2hh
ciAqWEdldEF0b21OYW1lKAoKICAgIERpc3BsYXkqCQkgLAogICAgQXRvbQkJIAoKKTsKZXh0ZXJu
IGludCAgWEdldEF0b21OYW1lcygKCiAgICBEaXNwbGF5KgkJICwKICAgIEF0b20qCQkgLAogICAg
aW50CQkJICwKICAgIGNoYXIqKgkJIAoKKTsKZXh0ZXJuIGNoYXIgKlhHZXREZWZhdWx0KAoKICAg
IERpc3BsYXkqCQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBjb25zdCAgY2hhcioJIAkJICAK
Cik7CmV4dGVybiBjaGFyICpYRGlzcGxheU5hbWUoCgogICAgY29uc3QgIGNoYXIqCSAKCik7CmV4
dGVybiBjaGFyICpYS2V5c3ltVG9TdHJpbmcoCgogICAgS2V5U3ltCQkgCgopOwoKZXh0ZXJuIGlu
dCAoKlhTeW5jaHJvbml6ZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIGludCAJCSAKCikpKAoKICAg
IERpc3BsYXkqCQkgCgopOwpleHRlcm4gaW50ICgqWFNldEFmdGVyRnVuY3Rpb24oCgogICAgRGlz
cGxheSoJCSAsCiAgICBpbnQgKCopICgKCgkgICAgIERpc3BsYXkqCSAKCiAgICAgICAgICAgICkJ
CSAKCikpKAoKICAgIERpc3BsYXkqCQkgCgopOwpleHRlcm4gQXRvbSBYSW50ZXJuQXRvbSgKCiAg
ICBEaXNwbGF5KgkJICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgaW50IAkJIAkJIAoKKTsKZXh0
ZXJuIGludCAgWEludGVybkF0b21zKAoKICAgIERpc3BsYXkqCQkgLAogICAgY2hhcioqCQkgLAog
ICAgaW50CQkJICwKICAgIGludCAJCSAsCiAgICBBdG9tKgkJIAoKKTsKZXh0ZXJuIENvbG9ybWFw
IFhDb3B5Q29sb3JtYXBBbmRGcmVlKAoKICAgIERpc3BsYXkqCQkgLAogICAgQ29sb3JtYXAJCSAK
Cik7CmV4dGVybiBDb2xvcm1hcCBYQ3JlYXRlQ29sb3JtYXAoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBXaW5kb3cJCSAsCiAgICBWaXN1YWwqCQkgLAogICAgaW50CQkJIAkJCSAKCik7CmV4dGVybiBD
dXJzb3IgWENyZWF0ZVBpeG1hcEN1cnNvcigKCiAgICBEaXNwbGF5KgkJICwKICAgIFBpeG1hcAkJ
ICwKICAgIFBpeG1hcAkJICwKICAgIFhDb2xvcioJCSAsCiAgICBYQ29sb3IqCQkgLAogICAgdW5z
aWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJIAkJCSAgIAoKKTsKZXh0ZXJuIEN1cnNvciBY
Q3JlYXRlR2x5cGhDdXJzb3IoCgogICAgRGlzcGxheSoJCSAsCiAgICBGb250CQkgLAogICAgRm9u
dAkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBYQ29sb3Iq
CQkgLAogICAgWENvbG9yKgkJIAoKKTsKZXh0ZXJuIEN1cnNvciBYQ3JlYXRlRm9udEN1cnNvcigK
CiAgICBEaXNwbGF5KgkJICwKICAgIHVuc2lnbmVkIGludAkgCgopOwpleHRlcm4gRm9udCBYTG9h
ZEZvbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBjb25zdCAgY2hhcioJIAoKKTsKZXh0ZXJuIEdD
IFhDcmVhdGVHQygKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgdW5zaWdu
ZWQgbG9uZwkgLAogICAgWEdDVmFsdWVzKgkJIAoKKTsKZXh0ZXJuIEdDb250ZXh0IFhHQ29udGV4
dEZyb21HQygKCiAgICBHQwkJCSAKCik7CmV4dGVybiB2b2lkIFhGbHVzaEdDKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgR0MJCQkgCgopOwpleHRlcm4gUGl4bWFwIFhDcmVhdGVQaXhtYXAoCgogICAg
RGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5z
aWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJIAkJICAgICAgICAKCik7CmV4dGVybiBQaXht
YXAgWENyZWF0ZUJpdG1hcEZyb21EYXRhKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJ
CSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQg
aW50CSAKCik7CmV4dGVybiBQaXhtYXAgWENyZWF0ZVBpeG1hcEZyb21CaXRtYXBEYXRhKAoKICAg
IERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBjaGFyKgkJICwKICAgIHVuc2lnbmVk
IGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBsb25nCSAsCiAgICB1bnNp
Z25lZCBsb25nCSAsCiAgICB1bnNpZ25lZCBpbnQJIAoKKTsKZXh0ZXJuIFdpbmRvdyBYQ3JlYXRl
U2ltcGxlV2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJ
ICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgLAog
ICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBsb25nCSAsCiAgICB1bnNpZ25lZCBsb25n
CSAKCik7CmV4dGVybiBXaW5kb3cgWEdldFNlbGVjdGlvbk93bmVyKAoKICAgIERpc3BsYXkqCQkg
LAogICAgQXRvbQkJIAoKKTsKZXh0ZXJuIFdpbmRvdyBYQ3JlYXRlV2luZG93KAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICB1bnNp
Z25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBp
bnQJCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBWaXN1YWwqCQkgLAogICAgdW5zaWduZWQg
bG9uZwkgLAogICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMqCSAKCik7IApleHRlcm4gQ29sb3JtYXAg
KlhMaXN0SW5zdGFsbGVkQ29sb3JtYXBzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkg
LAogICAgaW50KgkJIAoKKTsKZXh0ZXJuIGNoYXIgKipYTGlzdEZvbnRzKAoKICAgIERpc3BsYXkq
CQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkgLAogICAgaW50KgkJIAoKKTsKZXh0
ZXJuIGNoYXIgKipYTGlzdEZvbnRzV2l0aEluZm8oCgogICAgRGlzcGxheSoJCSAsCiAgICBjb25z
dCAgY2hhcioJICwKICAgIGludAkJCSAsCiAgICBpbnQqCQkgLAogICAgWEZvbnRTdHJ1Y3QqKgkg
CgopOwpleHRlcm4gY2hhciAqKlhHZXRGb250UGF0aCgKCiAgICBEaXNwbGF5KgkJICwKICAgIGlu
dCoJCSAKCik7CmV4dGVybiBjaGFyICoqWExpc3RFeHRlbnNpb25zKAoKICAgIERpc3BsYXkqCQkg
LAogICAgaW50KgkJIAoKKTsKZXh0ZXJuIEF0b20gKlhMaXN0UHJvcGVydGllcygKCiAgICBEaXNw
bGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGludCoJCSAKCik7CmV4dGVybiBYSG9zdEFkZHJl
c3MgKlhMaXN0SG9zdHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQqCQkgLAogICAgaW50ICoJ
CSAKCik7CmV4dGVybiBLZXlTeW0gWEtleWNvZGVUb0tleXN5bSgKCiAgICBEaXNwbGF5KgkJICwK
CiAgICB1bnNpZ25lZCBpbnQJICwKCgoKICAgIGludAkJCSAKCik7CmV4dGVybiBLZXlTeW0gWExv
b2t1cEtleXN5bSgKCiAgICBYS2V5RXZlbnQqCQkgLAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIEtl
eVN5bSAqWEdldEtleWJvYXJkTWFwcGluZygKCiAgICBEaXNwbGF5KgkJICwKCiAgICB1bnNpZ25l
ZCBpbnQJICwKCgoKICAgIGludAkJCSAsCiAgICBpbnQqCQkgCgopOwpleHRlcm4gS2V5U3ltIFhT
dHJpbmdUb0tleXN5bSgKCiAgICBjb25zdCAgY2hhcioJIAoKKTsKZXh0ZXJuIGxvbmcgWE1heFJl
cXVlc3RTaXplKAoKICAgIERpc3BsYXkqCQkgCgopOwpleHRlcm4gbG9uZyBYRXh0ZW5kZWRNYXhS
ZXF1ZXN0U2l6ZSgKCiAgICBEaXNwbGF5KgkJIAoKKTsKZXh0ZXJuIGNoYXIgKlhSZXNvdXJjZU1h
bmFnZXJTdHJpbmcoCgogICAgRGlzcGxheSoJCSAKCik7CmV4dGVybiBjaGFyICpYU2NyZWVuUmVz
b3VyY2VTdHJpbmcoCgoJU2NyZWVuKgkJIAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWERpc3Bs
YXlNb3Rpb25CdWZmZXJTaXplKAoKICAgIERpc3BsYXkqCQkgCgopOwpleHRlcm4gVmlzdWFsSUQg
WFZpc3VhbElERnJvbVZpc3VhbCgKCiAgICBWaXN1YWwqCQkgCgopOwoKIAoKZXh0ZXJuIGludCAg
WEluaXRUaHJlYWRzKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBYTG9ja0Rpc3BsYXkoCgog
ICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gdm9pZCBYVW5sb2NrRGlzcGxheSgKCiAgICBEaXNw
bGF5KgkJIAoKKTsKCiAKCmV4dGVybiBYRXh0Q29kZXMgKlhJbml0RXh0ZW5zaW9uKAoKICAgIERp
c3BsYXkqCQkgLAogICAgY29uc3QgIGNoYXIqCSAKCik7CgpleHRlcm4gWEV4dENvZGVzICpYQWRk
RXh0ZW5zaW9uKAoKICAgIERpc3BsYXkqCQkgCgopOwpleHRlcm4gWEV4dERhdGEgKlhGaW5kT25F
eHRlbnNpb25MaXN0KAoKICAgIFhFeHREYXRhKioJCSAsCiAgICBpbnQJCQkgCgopOwpleHRlcm4g
WEV4dERhdGEgKipYRUhlYWRPZkV4dGVuc2lvbkxpc3QoCgogICAgWEVEYXRhT2JqZWN0CSAKCik7
CgogCmV4dGVybiBXaW5kb3cgWFJvb3RXaW5kb3coCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJ
CQkgCgopOwpleHRlcm4gV2luZG93IFhEZWZhdWx0Um9vdFdpbmRvdygKCiAgICBEaXNwbGF5KgkJ
IAoKKTsKZXh0ZXJuIFdpbmRvdyBYUm9vdFdpbmRvd09mU2NyZWVuKAoKICAgIFNjcmVlbioJCSAK
Cik7CmV4dGVybiBWaXN1YWwgKlhEZWZhdWx0VmlzdWFsKAoKICAgIERpc3BsYXkqCQkgLAogICAg
aW50CQkJIAoKKTsKZXh0ZXJuIFZpc3VhbCAqWERlZmF1bHRWaXN1YWxPZlNjcmVlbigKCiAgICBT
Y3JlZW4qCQkgCgopOwpleHRlcm4gR0MgWERlZmF1bHRHQygKCiAgICBEaXNwbGF5KgkJICwKICAg
IGludAkJCSAKCik7CmV4dGVybiBHQyBYRGVmYXVsdEdDT2ZTY3JlZW4oCgogICAgU2NyZWVuKgkJ
IAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEJsYWNrUGl4ZWwoCgogICAgRGlzcGxheSoJCSAs
CiAgICBpbnQJCQkgCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYV2hpdGVQaXhlbCgKCiAgICBE
aXNwbGF5KgkJICwKICAgIGludAkJCSAKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhBbGxQbGFu
ZXMoCgogICAgdm9pZAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEJsYWNrUGl4ZWxPZlNjcmVl
bigKCiAgICBTY3JlZW4qCQkgCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYV2hpdGVQaXhlbE9m
U2NyZWVuKAoKICAgIFNjcmVlbioJCSAKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhOZXh0UmVx
dWVzdCgKCiAgICBEaXNwbGF5KgkJIAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWExhc3RLbm93
blJlcXVlc3RQcm9jZXNzZWQoCgogICAgRGlzcGxheSoJCSAKCik7CmV4dGVybiBjaGFyICpYU2Vy
dmVyVmVuZG9yKAoKICAgIERpc3BsYXkqCQkgCgopOwpleHRlcm4gY2hhciAqWERpc3BsYXlTdHJp
bmcoCgogICAgRGlzcGxheSoJCSAKCik7CmV4dGVybiBDb2xvcm1hcCBYRGVmYXVsdENvbG9ybWFw
KAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIENvbG9ybWFwIFhEZWZh
dWx0Q29sb3JtYXBPZlNjcmVlbigKCiAgICBTY3JlZW4qCQkgCgopOwpleHRlcm4gRGlzcGxheSAq
WERpc3BsYXlPZlNjcmVlbigKCiAgICBTY3JlZW4qCQkgCgopOwpleHRlcm4gU2NyZWVuICpYU2Ny
ZWVuT2ZEaXNwbGF5KAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIFNj
cmVlbiAqWERlZmF1bHRTY3JlZW5PZkRpc3BsYXkoCgogICAgRGlzcGxheSoJCSAKCik7CmV4dGVy
biBsb25nIFhFdmVudE1hc2tPZlNjcmVlbigKCiAgICBTY3JlZW4qCQkgCgopOwoKZXh0ZXJuIGlu
dCBYU2NyZWVuTnVtYmVyT2ZTY3JlZW4oCgogICAgU2NyZWVuKgkJIAoKKTsKCnR5cGVkZWYgaW50
ICgqWEVycm9ySGFuZGxlcikgKAkgICAgIAoKICAgIERpc3BsYXkqCQkgLAogICAgWEVycm9yRXZl
bnQqCSAKCik7CgpleHRlcm4gWEVycm9ySGFuZGxlciBYU2V0RXJyb3JIYW5kbGVyICgKCiAgICBY
RXJyb3JIYW5kbGVyCSAKCik7CgoKdHlwZWRlZiBpbnQgKCpYSU9FcnJvckhhbmRsZXIpICggICAg
IAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJuIFhJT0Vycm9ySGFuZGxlciBYU2V0SU9FcnJv
ckhhbmRsZXIgKAoKICAgIFhJT0Vycm9ySGFuZGxlcgkgCgopOwoKCmV4dGVybiBYUGl4bWFwRm9y
bWF0VmFsdWVzICpYTGlzdFBpeG1hcEZvcm1hdHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQq
CQkgCgopOwpleHRlcm4gaW50ICpYTGlzdERlcHRocygKCiAgICBEaXNwbGF5KgkJICwKICAgIGlu
dAkJCSAsCiAgICBpbnQqCQkgCgopOwoKIAogCmV4dGVybiBpbnQgIFhSZWNvbmZpZ3VyZVdNV2lu
ZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJICwKICAgIHVu
c2lnbmVkIGludAkgLAogICAgWFdpbmRvd0NoYW5nZXMqCSAKCik7CgpleHRlcm4gaW50ICBYR2V0
V01Qcm90b2NvbHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBBdG9tKioJ
CSAsCiAgICBpbnQqCQkgCgopOwpleHRlcm4gaW50ICBYU2V0V01Qcm90b2NvbHMoCgogICAgRGlz
cGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBBdG9tKgkJICwKICAgIGludAkJCSAKCik7CmV4
dGVybiBpbnQgIFhJY29uaWZ5V2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkg
LAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIGludCAgWFdpdGhkcmF3V2luZG93KAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIGludCAgWEdldENv
bW1hbmQoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBjaGFyKioqCQkgLAog
ICAgaW50KgkJIAoKKTsKZXh0ZXJuIGludCAgWEdldFdNQ29sb3JtYXBXaW5kb3dzKAoKICAgIERp
c3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgV2luZG93KioJCSAsCiAgICBpbnQqCQkgCgop
OwpleHRlcm4gaW50ICBYU2V0V01Db2xvcm1hcFdpbmRvd3MoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBXaW5kb3cJCSAsCiAgICBXaW5kb3cqCQkgLAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIHZvaWQg
WEZyZWVTdHJpbmdMaXN0KAoKICAgIGNoYXIqKgkJIAoKKTsKZXh0ZXJuIGludCBYU2V0VHJhbnNp
ZW50Rm9ySGludCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFdpbmRvdwkJ
IAoKKTsKCiAKCmV4dGVybiBpbnQgWEFjdGl2YXRlU2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSoJ
CSAKCik7CgpleHRlcm4gaW50IFhBZGRIb3N0KAoKICAgIERpc3BsYXkqCQkgLAogICAgWEhvc3RB
ZGRyZXNzKgkgCgopOwoKZXh0ZXJuIGludCBYQWRkSG9zdHMoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBYSG9zdEFkZHJlc3MqCSAsCiAgICBpbnQJCQkgICAgIAoKKTsKCmV4dGVybiBpbnQgWEFkZFRv
RXh0ZW5zaW9uTGlzdCgKCiAgICBzdHJ1Y3QgX1hFeHREYXRhKioJICwKICAgIFhFeHREYXRhKgkJ
IAoKKTsKCmV4dGVybiBpbnQgWEFkZFRvU2F2ZVNldCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdp
bmRvdwkJIAoKKTsKCmV4dGVybiBpbnQgIFhBbGxvY0NvbG9yKAoKICAgIERpc3BsYXkqCQkgLAog
ICAgQ29sb3JtYXAJCSAsCiAgICBYQ29sb3IqCQkgCgopOwoKZXh0ZXJuIGludCAgWEFsbG9jQ29s
b3JDZWxscygKCiAgICBEaXNwbGF5KgkJICwKICAgIENvbG9ybWFwCQkgLAogICAgaW50IAkgICAg
ICAgICAsCiAgICB1bnNpZ25lZCBsb25nKgkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNp
Z25lZCBsb25nKgkgLAogICAgdW5zaWduZWQgaW50IAkgCgopOwoKZXh0ZXJuIGludCAgWEFsbG9j
Q29sb3JQbGFuZXMoCgogICAgRGlzcGxheSoJCSAsCiAgICBDb2xvcm1hcAkJICwKICAgIGludCAJ
CSAsCiAgICB1bnNpZ25lZCBsb25nKgkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBp
bnQJCQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGxvbmcqCSAsCiAgICB1bnNpZ25lZCBs
b25nKgkgLAogICAgdW5zaWduZWQgbG9uZyoJIAoKKTsKCmV4dGVybiBpbnQgIFhBbGxvY05hbWVk
Q29sb3IoCgogICAgRGlzcGxheSoJCSAsCiAgICBDb2xvcm1hcAkJICwKICAgIGNvbnN0ICBjaGFy
KgkgLAogICAgWENvbG9yKgkJICwKICAgIFhDb2xvcioJCSAKCik7CgpleHRlcm4gaW50IFhBbGxv
d0V2ZW50cygKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAsCiAgICBUaW1lCQkgCgopOwoK
ZXh0ZXJuIGludCBYQXV0b1JlcGVhdE9mZigKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBp
bnQgWEF1dG9SZXBlYXRPbigKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBpbnQgWEJlbGwo
CgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYQml0bWFwQml0
T3JkZXIoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhCaXRtYXBQYWQoCgogICAg
RGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhCaXRtYXBVbml0KAoKICAgIERpc3BsYXkqCQkg
CgopOwoKZXh0ZXJuIGludCBYQ2VsbHNPZlNjcmVlbigKCiAgICBTY3JlZW4qCQkgCgopOwoKZXh0
ZXJuIGludCBYQ2hhbmdlQWN0aXZlUG9pbnRlckdyYWIoCgogICAgRGlzcGxheSoJCSAsCiAgICB1
bnNpZ25lZCBpbnQJICwKICAgIEN1cnNvcgkJICwKICAgIFRpbWUJCSAKCik7CgpleHRlcm4gaW50
IFhDaGFuZ2VHQygKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIHVuc2lnbmVkIGxv
bmcJICwKICAgIFhHQ1ZhbHVlcyoJCSAKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VLZXlib2FyZENv
bnRyb2woCgogICAgRGlzcGxheSoJCSAsCiAgICB1bnNpZ25lZCBsb25nCSAsCiAgICBYS2V5Ym9h
cmRDb250cm9sKgkgCgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlS2V5Ym9hcmRNYXBwaW5nKAoKICAg
IERpc3BsYXkqCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBLZXlTeW0qCQkgLAog
ICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWENoYW5nZVBvaW50ZXJDb250cm9sKAoKICAgIERp
c3BsYXkqCQkgLAogICAgaW50IAkJICwKICAgIGludCAJCSAsCiAgICBpbnQJCQkgLAogICAgaW50
CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VQcm9wZXJ0eSgKCiAgICBE
aXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIEF0b20JCSAsCiAgICBBdG9tCQkgLAogICAg
aW50CQkJICwKICAgIGludAkJCSAsCiAgICBjb25zdCAgdW5zaWduZWQgY2hhcioJICwKICAgIGlu
dAkJCSAKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VTYXZlU2V0KAoKICAgIERpc3BsYXkqCQkgLAog
ICAgV2luZG93CQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWENoYW5nZVdpbmRvd0F0
dHJpYnV0ZXMoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICB1bnNpZ25lZCBs
b25nCSAsCiAgICBYU2V0V2luZG93QXR0cmlidXRlcyogIAoKKTsKCmV4dGVybiBpbnQgIFhDaGVj
a0lmRXZlbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBYRXZlbnQqCQkgLAogICAgaW50ICAoKikg
KAoKCSAgICAgICBEaXNwbGF5KgkJCSAsCiAgICAgICAgICAgICAgIFhFdmVudCoJCQkgLAogICAg
ICAgICAgICAgICBYUG9pbnRlcgkJCSAKCiAgICAgICAgICAgICApCQkgLAogICAgWFBvaW50ZXIJ
CSAKCik7CgpleHRlcm4gaW50ICBYQ2hlY2tNYXNrRXZlbnQoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBsb25nCQkgLAogICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBpbnQgIFhDaGVja1R5cGVkRXZl
bnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkgLAogICAgWEV2ZW50KgkJIAoKKTsKCmV4
dGVybiBpbnQgIFhDaGVja1R5cGVkV2luZG93RXZlbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBX
aW5kb3cJCSAsCiAgICBpbnQJCQkgLAogICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBpbnQgIFhD
aGVja1dpbmRvd0V2ZW50KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgbG9u
ZwkJICwKICAgIFhFdmVudCoJCSAKCik7CgpleHRlcm4gaW50IFhDaXJjdWxhdGVTdWJ3aW5kb3dz
KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVy
biBpbnQgWENpcmN1bGF0ZVN1YndpbmRvd3NEb3duKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2lu
ZG93CQkgCgopOwoKZXh0ZXJuIGludCBYQ2lyY3VsYXRlU3Vid2luZG93c1VwKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgCgopOwoKZXh0ZXJuIGludCBYQ2xlYXJBcmVhKAoKICAgIERp
c3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICB1
bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgaW50IAkJIAoKKTsKCmV4dGVy
biBpbnQgWENsZWFyV2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgCgopOwoK
ZXh0ZXJuIGludCBYQ2xvc2VEaXNwbGF5KAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJuIGlu
dCBYQ29uZmlndXJlV2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAg
dW5zaWduZWQgaW50CSAsCiAgICBYV2luZG93Q2hhbmdlcyoJIAkJIAoKKTsKCmV4dGVybiBpbnQg
WENvbm5lY3Rpb25OdW1iZXIoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhDb252
ZXJ0U2VsZWN0aW9uKAoKICAgIERpc3BsYXkqCQkgLAogICAgQXRvbQkJICwKICAgIEF0b20gCQkg
LAogICAgQXRvbQkJICwKICAgIFdpbmRvdwkJICwKICAgIFRpbWUJCSAKCik7CgpleHRlcm4gaW50
IFhDb3B5QXJlYSgKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgRHJhd2Fi
bGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVk
IGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsK
CmV4dGVybiBpbnQgWENvcHlHQygKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIHVu
c2lnbmVkIGxvbmcJICwKICAgIEdDCQkJIAoKKTsKCmV4dGVybiBpbnQgWENvcHlQbGFuZSgKCiAg
ICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJ
CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5z
aWduZWQgaW50CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGxvbmcJ
IAoKKTsKCmV4dGVybiBpbnQgWERlZmF1bHREZXB0aCgKCiAgICBEaXNwbGF5KgkJICwKICAgIGlu
dAkJCSAKCik7CgpleHRlcm4gaW50IFhEZWZhdWx0RGVwdGhPZlNjcmVlbigKCiAgICBTY3JlZW4q
CQkgCgopOwoKZXh0ZXJuIGludCBYRGVmYXVsdFNjcmVlbigKCiAgICBEaXNwbGF5KgkJIAoKKTsK
CmV4dGVybiBpbnQgWERlZmluZUN1cnNvcigKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJ
ICwKICAgIEN1cnNvcgkJIAoKKTsKCmV4dGVybiBpbnQgWERlbGV0ZVByb3BlcnR5KAoKICAgIERp
c3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVybiBpbnQgWERl
c3Ryb3lXaW5kb3coCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAKCik7CgpleHRlcm4g
aW50IFhEZXN0cm95U3Vid2luZG93cygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJIAoK
KTsKCmV4dGVybiBpbnQgWERvZXNCYWNraW5nU3RvcmUoCgogICAgU2NyZWVuKgkJICAgICAKCik7
CgpleHRlcm4gaW50ICBYRG9lc1NhdmVVbmRlcnMoCgogICAgU2NyZWVuKgkJIAoKKTsKCmV4dGVy
biBpbnQgWERpc2FibGVBY2Nlc3NDb250cm9sKAoKICAgIERpc3BsYXkqCQkgCgopOwoKCmV4dGVy
biBpbnQgWERpc3BsYXlDZWxscygKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAKCik7Cgpl
eHRlcm4gaW50IFhEaXNwbGF5SGVpZ2h0KAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJIAoK
KTsKCmV4dGVybiBpbnQgWERpc3BsYXlIZWlnaHRNTSgKCiAgICBEaXNwbGF5KgkJICwKICAgIGlu
dAkJCSAKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5S2V5Y29kZXMoCgogICAgRGlzcGxheSoJCSAs
CiAgICBpbnQqCQkgLAogICAgaW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWERpc3BsYXlQbGFuZXMo
CgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVdp
ZHRoKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWERpc3Bs
YXlXaWR0aE1NKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQg
WERyYXdBcmMoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIEdDCQkJICwK
ICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25l
ZCBpbnQJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYRHJhd0Fy
Y3MoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIEdDCQkJICwKICAgIFhB
cmMqCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWERyYXdJbWFnZVN0cmluZygKCiAg
ICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJICwK
ICAgIGludAkJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4g
aW50IFhEcmF3SW1hZ2VTdHJpbmcxNigKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkg
LAogICAgR0MJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBjb25zdCAgWENoYXIy
YioJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhEcmF3TGluZSgKCiAgICBEaXNwbGF5
KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJ
CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWERyYXdMaW5lcygK
CiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgWFBvaW50
KgkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYRHJhd1BvaW50
KAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJ
CQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWERyYXdQb2ludHMoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIEdDCQkJICwKICAgIFhQb2ludCoJCSAsCiAgICBp
bnQJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWERyYXdSZWN0YW5nbGUoCgogICAg
RGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAg
ICBpbnQJCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJIAoKKTsKCmV4
dGVybiBpbnQgWERyYXdSZWN0YW5nbGVzKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJ
CSAsCiAgICBHQwkJCSAsCiAgICBYUmVjdGFuZ2xlKgkJICwKICAgIGludAkJCSAKCik7CgpleHRl
cm4gaW50IFhEcmF3U2VnbWVudHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwK
ICAgIEdDCQkJICwKICAgIFhTZWdtZW50KgkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50
IFhEcmF3U3RyaW5nKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJ
CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgaW50
CQkJIAoKKTsKCmV4dGVybiBpbnQgWERyYXdTdHJpbmcxNigKCiAgICBEaXNwbGF5KgkJICwKICAg
IERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBj
b25zdCAgWENoYXIyYioJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhEcmF3VGV4dCgK
CiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJ
ICwKICAgIGludAkJCSAsCiAgICBYVGV4dEl0ZW0qCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVy
biBpbnQgWERyYXdUZXh0MTYoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAg
IEdDCQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgWFRleHRJdGVtMTYqCSAsCiAg
ICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYRW5hYmxlQWNjZXNzQ29udHJvbCgKCiAgICBEaXNw
bGF5KgkJIAoKKTsKCmV4dGVybiBpbnQgWEV2ZW50c1F1ZXVlZCgKCiAgICBEaXNwbGF5KgkJICwK
ICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50ICBYRmV0Y2hOYW1lKAoKICAgIERpc3BsYXkqCQkg
LAogICAgV2luZG93CQkgLAogICAgY2hhcioqCQkgCgopOwoKZXh0ZXJuIGludCBYRmlsbEFyYygK
CiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJ
ICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgLAog
ICAgaW50CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhGaWxsQXJjcygKCiAgICBE
aXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgWEFyYyoJCSAsCiAg
ICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYRmlsbFBvbHlnb24oCgogICAgRGlzcGxheSoJCSAs
CiAgICBEcmF3YWJsZQkJICwKICAgIEdDCQkJICwKICAgIFhQb2ludCoJCSAsCiAgICBpbnQJCQkg
LAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhGaWxsUmVjdGFuZ2xl
KAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJ
CQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAK
Cik7CgpleHRlcm4gaW50IFhGaWxsUmVjdGFuZ2xlcygKCiAgICBEaXNwbGF5KgkJICwKICAgIERy
YXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgWFJlY3RhbmdsZSoJCSAsCiAgICBpbnQJCQkgCgop
OwoKZXh0ZXJuIGludCBYRmx1c2goCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhG
b3JjZVNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVy
biBpbnQgWEZyZWUoCgogICAgdm9pZCoJCSAKCik7CgpleHRlcm4gaW50IFhGcmVlQ29sb3JtYXAo
CgogICAgRGlzcGxheSoJCSAsCiAgICBDb2xvcm1hcAkJIAoKKTsKCmV4dGVybiBpbnQgWEZyZWVD
b2xvcnMoCgogICAgRGlzcGxheSoJCSAsCiAgICBDb2xvcm1hcAkJICwKICAgIHVuc2lnbmVkIGxv
bmcqCSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWduZWQgbG9uZwkgCgopOwoKZXh0ZXJuIGludCBY
RnJlZUN1cnNvcigKCiAgICBEaXNwbGF5KgkJICwKICAgIEN1cnNvcgkJIAoKKTsKCmV4dGVybiBp
bnQgWEZyZWVFeHRlbnNpb25MaXN0KAoKICAgIGNoYXIqKgkJICAgICAKCik7CgpleHRlcm4gaW50
IFhGcmVlRm9udCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFhGb250U3RydWN0KgkgCgopOwoKZXh0
ZXJuIGludCBYRnJlZUZvbnRJbmZvKAoKICAgIGNoYXIqKgkJICwKICAgIFhGb250U3RydWN0Kgkg
LAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250TmFtZXMoCgogICAgY2hhcioq
CQkgCgopOwoKZXh0ZXJuIGludCBYRnJlZUZvbnRQYXRoKAoKICAgIGNoYXIqKgkJIAoKKTsKCmV4
dGVybiBpbnQgWEZyZWVHQygKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJIAoKKTsKCmV4dGVy
biBpbnQgWEZyZWVNb2RpZmllcm1hcCgKCiAgICBYTW9kaWZpZXJLZXltYXAqCSAKCik7CgpleHRl
cm4gaW50IFhGcmVlUGl4bWFwKAoKICAgIERpc3BsYXkqCQkgLAogICAgUGl4bWFwCQkgCgopOwoK
ZXh0ZXJuIGludCBYR2VvbWV0cnkoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkgLAogICAg
Y29uc3QgIGNoYXIqCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIHVuc2lnbmVkIGludAkgLAog
ICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIGludAkJCSAsCiAgICBp
bnQJCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJ
IAoKKTsKCmV4dGVybiBpbnQgWEdldEVycm9yRGF0YWJhc2VUZXh0KAoKICAgIERpc3BsYXkqCQkg
LAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGNvbnN0ICBjaGFy
KgkgLAogICAgY2hhcioJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYR2V0RXJyb3JU
ZXh0KAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJICwKICAgIGNoYXIqCQkgLAogICAgaW50
CQkJIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRGb250UHJvcGVydHkoCgogICAgWEZvbnRTdHJ1Y3Qq
CSAsCiAgICBBdG9tCQkgLAogICAgdW5zaWduZWQgbG9uZyoJIAoKKTsKCmV4dGVybiBpbnQgIFhH
ZXRHQ1ZhbHVlcygKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIHVuc2lnbmVkIGxv
bmcJICwKICAgIFhHQ1ZhbHVlcyoJCSAKCik7CgpleHRlcm4gaW50ICBYR2V0R2VvbWV0cnkoCgog
ICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIFdpbmRvdyoJCSAsCiAgICBpbnQq
CQkgLAogICAgaW50KgkJICwKICAgIHVuc2lnbmVkIGludCoJICwKICAgIHVuc2lnbmVkIGludCoJ
ICwKICAgIHVuc2lnbmVkIGludCoJICwKICAgIHVuc2lnbmVkIGludCoJIAoKKTsKCmV4dGVybiBp
bnQgIFhHZXRJY29uTmFtZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGNo
YXIqKgkJIAoKKTsKCmV4dGVybiBpbnQgWEdldElucHV0Rm9jdXMoCgogICAgRGlzcGxheSoJCSAs
CiAgICBXaW5kb3cqCQkgLAogICAgaW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWEdldEtleWJvYXJk
Q29udHJvbCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFhLZXlib2FyZFN0YXRlKgkgCgopOwoKZXh0
ZXJuIGludCBYR2V0UG9pbnRlckNvbnRyb2woCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQqCQkg
LAogICAgaW50KgkJICwKICAgIGludCoJCSAKCik7CgpleHRlcm4gaW50IFhHZXRQb2ludGVyTWFw
cGluZygKCiAgICBEaXNwbGF5KgkJICwKICAgIHVuc2lnbmVkIGNoYXIqCSAsCiAgICBpbnQJCQkg
CgopOwoKZXh0ZXJuIGludCBYR2V0U2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSoJCSAsCiAgICBp
bnQqCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAgICBpbnQqCQkgCgopOwoKZXh0ZXJu
IGludCAgWEdldFRyYW5zaWVudEZvckhpbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJ
CSAsCiAgICBXaW5kb3cqCQkgCgopOwoKZXh0ZXJuIGludCBYR2V0V2luZG93UHJvcGVydHkoCgog
ICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBBdG9tCQkgLAogICAgbG9uZwkJICwK
ICAgIGxvbmcJCSAsCiAgICBpbnQgCQkgLAogICAgQXRvbQkJICwKICAgIEF0b20qCQkgLAogICAg
aW50KgkJICwKICAgIHVuc2lnbmVkIGxvbmcqCSAsCiAgICB1bnNpZ25lZCBsb25nKgkgLAogICAg
dW5zaWduZWQgY2hhcioqCSAKCik7CgpleHRlcm4gaW50ICBYR2V0V2luZG93QXR0cmlidXRlcygK
CiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhXaW5kb3dBdHRyaWJ1dGVzKgkg
CgopOwoKZXh0ZXJuIGludCBYR3JhYkJ1dHRvbigKCiAgICBEaXNwbGF5KgkJICwKICAgIHVuc2ln
bmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBXaW5kb3cJCSAsCiAgICBpbnQgCQkg
LAogICAgdW5zaWduZWQgaW50CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIFdpbmRv
dwkJICwKICAgIEN1cnNvcgkJIAoKKTsKCmV4dGVybiBpbnQgWEdyYWJLZXkoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBXaW5kb3cJCSAsCiAg
ICBpbnQgCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhHcmFi
S2V5Ym9hcmQoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBpbnQgCQkgLAog
ICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBUaW1lCQkgCgopOwoKZXh0ZXJuIGludCBYR3Jh
YlBvaW50ZXIoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBpbnQgCQkgLAog
ICAgdW5zaWduZWQgaW50CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIFdpbmRvdwkJ
ICwKICAgIEN1cnNvcgkJICwKICAgIFRpbWUJCSAKCik7CgpleHRlcm4gaW50IFhHcmFiU2VydmVy
KAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJuIGludCBYSGVpZ2h0TU1PZlNjcmVlbigKCiAg
ICBTY3JlZW4qCQkgCgopOwoKZXh0ZXJuIGludCBYSGVpZ2h0T2ZTY3JlZW4oCgogICAgU2NyZWVu
KgkJIAoKKTsKCmV4dGVybiBpbnQgWElmRXZlbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBYRXZl
bnQqCQkgLAogICAgaW50ICAoKikgKAoKCSAgICAgICBEaXNwbGF5KgkJCSAsCiAgICAgICAgICAg
ICAgIFhFdmVudCoJCQkgLAogICAgICAgICAgICAgICBYUG9pbnRlcgkJCSAKCiAgICAgICAgICAg
ICApCQkgLAogICAgWFBvaW50ZXIJCSAKCik7CgpleHRlcm4gaW50IFhJbWFnZUJ5dGVPcmRlcigK
CiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBpbnQgWEluc3RhbGxDb2xvcm1hcCgKCiAgICBE
aXNwbGF5KgkJICwKICAgIENvbG9ybWFwCQkgCgopOwoKZXh0ZXJuIEtleUNvZGUgWEtleXN5bVRv
S2V5Y29kZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIEtleVN5bQkJIAoKKTsKCmV4dGVybiBpbnQg
WEtpbGxDbGllbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBYSUQJCQkgCgopOwoKZXh0ZXJuIGlu
dCAgWExvb2t1cENvbG9yKAoKICAgIERpc3BsYXkqCQkgLAogICAgQ29sb3JtYXAJCSAsCiAgICBj
b25zdCAgY2hhcioJICwKICAgIFhDb2xvcioJCSAsCiAgICBYQ29sb3IqCQkgCgopOwoKZXh0ZXJu
IGludCBYTG93ZXJXaW5kb3coCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAKCik7Cgpl
eHRlcm4gaW50IFhNYXBSYWlzZWQoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAKCik7
CgpleHRlcm4gaW50IFhNYXBTdWJ3aW5kb3dzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93
CQkgCgopOwoKZXh0ZXJuIGludCBYTWFwV2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2lu
ZG93CQkgCgopOwoKZXh0ZXJuIGludCBYTWFza0V2ZW50KAoKICAgIERpc3BsYXkqCQkgLAogICAg
bG9uZwkJICwKICAgIFhFdmVudCoJCSAKCik7CgpleHRlcm4gaW50IFhNYXhDbWFwc09mU2NyZWVu
KAoKICAgIFNjcmVlbioJCSAKCik7CgpleHRlcm4gaW50IFhNaW5DbWFwc09mU2NyZWVuKAoKICAg
IFNjcmVlbioJCSAKCik7CgpleHRlcm4gaW50IFhNb3ZlUmVzaXplV2luZG93KAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICB1bnNp
Z25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgCgopOwoKZXh0ZXJuIGludCBYTW92ZVdpbmRv
dygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGludAkJCSAsCiAgICBpbnQJ
CQkgCgopOwoKZXh0ZXJuIGludCBYTmV4dEV2ZW50KAoKICAgIERpc3BsYXkqCQkgLAogICAgWEV2
ZW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWE5vT3AoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRl
cm4gaW50ICBYUGFyc2VDb2xvcigKCiAgICBEaXNwbGF5KgkJICwKICAgIENvbG9ybWFwCQkgLAog
ICAgY29uc3QgIGNoYXIqCSAsCiAgICBYQ29sb3IqCQkgCgopOwoKZXh0ZXJuIGludCBYUGFyc2VH
ZW9tZXRyeSgKCiAgICBjb25zdCAgY2hhcioJICwKICAgIGludCoJCSAsCiAgICBpbnQqCQkgLAog
ICAgdW5zaWduZWQgaW50KgkgLAogICAgdW5zaWduZWQgaW50KgkgCgopOwoKZXh0ZXJuIGludCBY
UGVla0V2ZW50KAoKICAgIERpc3BsYXkqCQkgLAogICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBp
bnQgWFBlZWtJZkV2ZW50KAoKICAgIERpc3BsYXkqCQkgLAogICAgWEV2ZW50KgkJICwKICAgIGlu
dCAgKCopICgKCgkgICAgICAgRGlzcGxheSoJCSAsCiAgICAgICAgICAgICAgIFhFdmVudCoJCSAs
CiAgICAgICAgICAgICAgIFhQb2ludGVyCQkgCgogICAgICAgICAgICAgKQkJICwKICAgIFhQb2lu
dGVyCQkgCgopOwoKZXh0ZXJuIGludCBYUGVuZGluZygKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4
dGVybiBpbnQgWFBsYW5lc09mU2NyZWVuKAoKICAgIFNjcmVlbioJCSAKICAgIAoKKTsKCmV4dGVy
biBpbnQgWFByb3RvY29sUmV2aXNpb24oCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50
IFhQcm90b2NvbFZlcnNpb24oCgogICAgRGlzcGxheSoJCSAKCik7CgoKZXh0ZXJuIGludCBYUHV0
QmFja0V2ZW50KAoKICAgIERpc3BsYXkqCQkgLAogICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBp
bnQgWFB1dEltYWdlKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJ
CSAsCiAgICBYSW1hZ2UqCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkg
LAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAJICAK
Cik7CgpleHRlcm4gaW50IFhRTGVuZ3RoKAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJuIGlu
dCAgWFF1ZXJ5QmVzdEN1cnNvcigKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAog
ICAgdW5zaWduZWQgaW50ICAgICAgICAgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25l
ZCBpbnQqCSAsCiAgICB1bnNpZ25lZCBpbnQqCSAKCik7CgpleHRlcm4gaW50ICBYUXVlcnlCZXN0
U2l6ZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAsCiAgICBEcmF3YWJsZQkJICwKICAg
IHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQqCSAs
CiAgICB1bnNpZ25lZCBpbnQqCSAKCik7CgpleHRlcm4gaW50ICBYUXVlcnlCZXN0U3RpcHBsZSgK
CiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAg
ICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludCoJICwKICAgIHVuc2lnbmVkIGludCoJ
IAoKKTsKCmV4dGVybiBpbnQgIFhRdWVyeUJlc3RUaWxlKAoKICAgIERpc3BsYXkqCQkgLAogICAg
RHJhd2FibGUJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAg
dW5zaWduZWQgaW50KgkgLAogICAgdW5zaWduZWQgaW50KgkgCgopOwoKZXh0ZXJuIGludCBYUXVl
cnlDb2xvcigKCiAgICBEaXNwbGF5KgkJICwKICAgIENvbG9ybWFwCQkgLAogICAgWENvbG9yKgkJ
IAoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5Q29sb3JzKAoKICAgIERpc3BsYXkqCQkgLAogICAgQ29s
b3JtYXAJCSAsCiAgICBYQ29sb3IqCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgIFhR
dWVyeUV4dGVuc2lvbigKCiAgICBEaXNwbGF5KgkJICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAg
aW50KgkJICwKICAgIGludCoJCSAsCiAgICBpbnQqCQkgCgopOwoKZXh0ZXJuIGludCBYUXVlcnlL
ZXltYXAoCgogICAgRGlzcGxheSoJCSAsCiAgICBjaGFyIFszMl0JCSAKCik7CgpleHRlcm4gaW50
ICBYUXVlcnlQb2ludGVyKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgV2lu
ZG93KgkJICwKICAgIFdpbmRvdyoJCSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJICwKICAgIGlu
dCoJCSAsCiAgICBpbnQqCQkgLAogICAgdW5zaWduZWQgaW50KiAgICAgICAgCgopOwoKZXh0ZXJu
IGludCBYUXVlcnlUZXh0RXh0ZW50cygKCiAgICBEaXNwbGF5KgkJICwKICAgIFhJRAkJCSAsCiAg
ICBjb25zdCAgY2hhcioJICwKICAgIGludAkJCSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJICwK
ICAgIGludCoJCSAsCiAgICBYQ2hhclN0cnVjdCoJICAgICAKCik7CgpleHRlcm4gaW50IFhRdWVy
eVRleHRFeHRlbnRzMTYoCgogICAgRGlzcGxheSoJCSAsCiAgICBYSUQJCQkgLAogICAgY29uc3Qg
IFhDaGFyMmIqCSAsCiAgICBpbnQJCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAgICBp
bnQqCQkgLAogICAgWENoYXJTdHJ1Y3QqCSAKCik7CgpleHRlcm4gaW50ICBYUXVlcnlUcmVlKAoK
ICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgV2luZG93KgkJICwKICAgIFdpbmRv
dyoJCSAsCiAgICBXaW5kb3cqKgkJICwKICAgIHVuc2lnbmVkIGludCoJIAoKKTsKCmV4dGVybiBp
bnQgWFJhaXNlV2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgCgopOwoKZXh0
ZXJuIGludCBYUmVhZEJpdG1hcEZpbGUoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZSAJ
CSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIHVuc2lnbmVkIGludCoJICwKICAgIHVuc2lnbmVk
IGludCoJICwKICAgIFBpeG1hcCoJCSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJIAoKKTsKCmV4
dGVybiBpbnQgWFJlYWRCaXRtYXBGaWxlRGF0YSgKCiAgICBjb25zdCAgY2hhcioJICwKICAgIHVu
c2lnbmVkIGludCoJICwKICAgIHVuc2lnbmVkIGludCoJICwKICAgIHVuc2lnbmVkIGNoYXIqKgkg
LAogICAgaW50KgkJICwKICAgIGludCoJCSAKCik7CgpleHRlcm4gaW50IFhSZWJpbmRLZXlzeW0o
CgogICAgRGlzcGxheSoJCSAsCiAgICBLZXlTeW0JCSAsCiAgICBLZXlTeW0qCQkgLAogICAgaW50
CQkJICwKICAgIGNvbnN0ICB1bnNpZ25lZCBjaGFyKgkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVy
biBpbnQgWFJlY29sb3JDdXJzb3IoCgogICAgRGlzcGxheSoJCSAsCiAgICBDdXJzb3IJCSAsCiAg
ICBYQ29sb3IqCQkgLAogICAgWENvbG9yKgkJIAoKKTsKCmV4dGVybiBpbnQgWFJlZnJlc2hLZXli
b2FyZE1hcHBpbmcoCgogICAgWE1hcHBpbmdFdmVudCoJICAgICAKCik7CgpleHRlcm4gaW50IFhS
ZW1vdmVGcm9tU2F2ZVNldCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJIAoKKTsKCmV4
dGVybiBpbnQgWFJlbW92ZUhvc3QoCgogICAgRGlzcGxheSoJCSAsCiAgICBYSG9zdEFkZHJlc3Mq
CSAKCik7CgpleHRlcm4gaW50IFhSZW1vdmVIb3N0cygKCiAgICBEaXNwbGF5KgkJICwKICAgIFhI
b3N0QWRkcmVzcyoJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhSZXBhcmVudFdpbmRv
dygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFdpbmRvdwkJICwKICAgIGlu
dAkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYUmVzZXRTY3JlZW5TYXZlcigKCiAg
ICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBpbnQgWFJlc2l6ZVdpbmRvdygKCiAgICBEaXNwbGF5
KgkJICwKICAgIFdpbmRvdwkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50
CSAKCik7CgpleHRlcm4gaW50IFhSZXN0YWNrV2luZG93cygKCiAgICBEaXNwbGF5KgkJICwKICAg
IFdpbmRvdyoJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYUm90YXRlQnVmZmVycygK
CiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhSb3RhdGVXaW5k
b3dQcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgQXRvbSoJ
CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWFNjcmVlbkNvdW50
KAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJuIGludCBYU2VsZWN0SW5wdXQoCgogICAgRGlz
cGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBsb25nCQkgCgopOwoKZXh0ZXJuIGludCAgWFNl
bmRFdmVudCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGludCAJCSAsCiAg
ICBsb25nCQkgLAogICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWFNldEFjY2Vzc0NvbnRy
b2woCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0QXJj
TW9kZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAKCik7CgpleHRl
cm4gaW50IFhTZXRCYWNrZ3JvdW5kKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAg
dW5zaWduZWQgbG9uZwkgCgopOwoKZXh0ZXJuIGludCBYU2V0Q2xpcE1hc2soCgogICAgRGlzcGxh
eSoJCSAsCiAgICBHQwkJCSAsCiAgICBQaXhtYXAJCSAKCik7CgpleHRlcm4gaW50IFhTZXRDbGlw
T3JpZ2luKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJICwKICAgIGlu
dAkJCSAKCik7CgpleHRlcm4gaW50IFhTZXRDbGlwUmVjdGFuZ2xlcygKCiAgICBEaXNwbGF5KgkJ
ICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgWFJlY3RhbmdsZSoJ
CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWFNldENsb3NlRG93
bk1vZGUoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0
Q29tbWFuZCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGNoYXIqKgkJICwK
ICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhTZXREYXNoZXMoCgogICAgRGlzcGxheSoJCSAs
CiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkg
CgopOwoKZXh0ZXJuIGludCBYU2V0RmlsbFJ1bGUoCgogICAgRGlzcGxheSoJCSAsCiAgICBHQwkJ
CSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0RmlsbFN0eWxlKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWFNldEZvbnQo
CgogICAgRGlzcGxheSoJCSAsCiAgICBHQwkJCSAsCiAgICBGb250CQkgCgopOwoKZXh0ZXJuIGlu
dCBYU2V0Rm9udFBhdGgoCgogICAgRGlzcGxheSoJCSAsCiAgICBjaGFyKioJCSAsCiAgICBpbnQJ
CQkgCSAgICAgCgopOwoKZXh0ZXJuIGludCBYU2V0Rm9yZWdyb3VuZCgKCiAgICBEaXNwbGF5KgkJ
ICwKICAgIEdDCQkJICwKICAgIHVuc2lnbmVkIGxvbmcJIAoKKTsKCmV4dGVybiBpbnQgWFNldEZ1
bmN0aW9uKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4
dGVybiBpbnQgWFNldEdyYXBoaWNzRXhwb3N1cmVzKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJ
CQkgLAogICAgaW50IAkJIAoKKTsKCmV4dGVybiBpbnQgWFNldEljb25OYW1lKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgLAogICAgY29uc3QgIGNoYXIqCSAKCik7CgpleHRlcm4gaW50
IFhTZXRJbnB1dEZvY3VzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50
CQkJICwKICAgIFRpbWUJCSAKCik7CgpleHRlcm4gaW50IFhTZXRMaW5lQXR0cmlidXRlcygKCiAg
ICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgaW50CQkJ
ICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0TW9kaWZpZXJN
YXBwaW5nKAoKICAgIERpc3BsYXkqCQkgLAogICAgWE1vZGlmaWVyS2V5bWFwKgkgCgopOwoKZXh0
ZXJuIGludCBYU2V0UGxhbmVNYXNrKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAg
dW5zaWduZWQgbG9uZwkgCgopOwoKZXh0ZXJuIGludCBYU2V0UG9pbnRlck1hcHBpbmcoCgogICAg
RGlzcGxheSoJCSAsCiAgICBjb25zdCAgdW5zaWduZWQgY2hhcioJICwKICAgIGludAkJCSAKCik7
CgpleHRlcm4gaW50IFhTZXRTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJ
CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50
IFhTZXRTZWxlY3Rpb25Pd25lcigKCiAgICBEaXNwbGF5KgkJICwKICAgIEF0b20JICAgICAgICAg
LAogICAgV2luZG93CQkgLAogICAgVGltZQkJIAoKKTsKCmV4dGVybiBpbnQgWFNldFN0YXRlKAoK
ICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAgdW5zaWduZWQgbG9uZyAJICwKICAgIHVu
c2lnbmVkIGxvbmcJICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBsb25nCSAKCik7CgpleHRl
cm4gaW50IFhTZXRTdGlwcGxlKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAgUGl4
bWFwCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0U3Vid2luZG93TW9kZSgKCiAgICBEaXNwbGF5KgkJ
ICwKICAgIEdDCQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhTZXRUU09yaWdpbigK
CiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgop
OwoKZXh0ZXJuIGludCBYU2V0VGlsZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAg
IFBpeG1hcAkJIAoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRvd0JhY2tncm91bmQoCgogICAgRGlz
cGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICB1bnNpZ25lZCBsb25nCSAKCik7CgpleHRlcm4g
aW50IFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFwKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2lu
ZG93CQkgLAogICAgUGl4bWFwCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0V2luZG93Qm9yZGVyKAoK
ICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgdW5zaWduZWQgbG9uZwkgCgopOwoK
ZXh0ZXJuIGludCBYU2V0V2luZG93Qm9yZGVyUGl4bWFwKAoKICAgIERpc3BsYXkqCQkgLAogICAg
V2luZG93CQkgLAogICAgUGl4bWFwCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0V2luZG93Qm9yZGVy
V2lkdGgoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICB1bnNpZ25lZCBpbnQJ
IAoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRvd0NvbG9ybWFwKAoKICAgIERpc3BsYXkqCQkgLAog
ICAgV2luZG93CQkgLAogICAgQ29sb3JtYXAJCSAKCik7CgpleHRlcm4gaW50IFhTdG9yZUJ1ZmZl
cigKCiAgICBEaXNwbGF5KgkJICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgaW50CQkJICwKICAg
IGludAkJCSAKCik7CgpleHRlcm4gaW50IFhTdG9yZUJ5dGVzKAoKICAgIERpc3BsYXkqCQkgLAog
ICAgY29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYU3RvcmVDb2xv
cigKCiAgICBEaXNwbGF5KgkJICwKICAgIENvbG9ybWFwCQkgLAogICAgWENvbG9yKgkJIAoKKTsK
CmV4dGVybiBpbnQgWFN0b3JlQ29sb3JzKAoKICAgIERpc3BsYXkqCQkgLAogICAgQ29sb3JtYXAJ
CSAsCiAgICBYQ29sb3IqCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWFN0b3JlTmFt
ZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGNvbnN0ICBjaGFyKgkgCgop
OwoKZXh0ZXJuIGludCBYU3RvcmVOYW1lZENvbG9yKAoKICAgIERpc3BsYXkqCQkgLAogICAgQ29s
b3JtYXAJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIHVuc2lnbmVkIGxvbmcJICwKICAgIGlu
dAkJCSAKCik7CgpleHRlcm4gaW50IFhTeW5jKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50IAkJ
IAoKKTsKCmV4dGVybiBpbnQgWFRleHRFeHRlbnRzKAoKICAgIFhGb250U3RydWN0KgkgLAogICAg
Y29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAg
ICBpbnQqCQkgLAogICAgWENoYXJTdHJ1Y3QqCSAKCik7CgpleHRlcm4gaW50IFhUZXh0RXh0ZW50
czE2KAoKICAgIFhGb250U3RydWN0KgkgLAogICAgY29uc3QgIFhDaGFyMmIqCSAsCiAgICBpbnQJ
CQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAgICBpbnQqCQkgLAogICAgWENoYXJTdHJ1
Y3QqCSAKCik7CgpleHRlcm4gaW50IFhUZXh0V2lkdGgoCgogICAgWEZvbnRTdHJ1Y3QqCSAsCiAg
ICBjb25zdCAgY2hhcioJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhUZXh0V2lkdGgx
NigKCiAgICBYRm9udFN0cnVjdCoJICwKICAgIGNvbnN0ICBYQ2hhcjJiKgkgLAogICAgaW50CQkJ
IAoKKTsKCmV4dGVybiBpbnQgIFhUcmFuc2xhdGVDb29yZGluYXRlcygKCiAgICBEaXNwbGF5KgkJ
ICwKICAgIFdpbmRvdwkJICwKICAgIFdpbmRvdwkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkg
LAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAgICBXaW5kb3cqCQkgCgopOwoKZXh0ZXJuIGlu
dCBYVW5kZWZpbmVDdXJzb3IoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAKCik7Cgpl
eHRlcm4gaW50IFhVbmdyYWJCdXR0b24oCgogICAgRGlzcGxheSoJCSAsCiAgICB1bnNpZ25lZCBp
bnQJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgV2luZG93CQkgCgopOwoKZXh0ZXJuIGludCBY
VW5ncmFiS2V5KAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGlu
dAkgLAogICAgV2luZG93CQkgCgopOwoKZXh0ZXJuIGludCBYVW5ncmFiS2V5Ym9hcmQoCgogICAg
RGlzcGxheSoJCSAsCiAgICBUaW1lCQkgCgopOwoKZXh0ZXJuIGludCBYVW5ncmFiUG9pbnRlcigK
CiAgICBEaXNwbGF5KgkJICwKICAgIFRpbWUJCSAKCik7CgpleHRlcm4gaW50IFhVbmdyYWJTZXJ2
ZXIoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhVbmluc3RhbGxDb2xvcm1hcCgK
CiAgICBEaXNwbGF5KgkJICwKICAgIENvbG9ybWFwCQkgCgopOwoKZXh0ZXJuIGludCBYVW5sb2Fk
Rm9udCgKCiAgICBEaXNwbGF5KgkJICwKICAgIEZvbnQJCSAKCik7CgpleHRlcm4gaW50IFhVbm1h
cFN1YndpbmRvd3MoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAKCik7CgpleHRlcm4g
aW50IFhVbm1hcFdpbmRvdygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJIAoKKTsKCmV4
dGVybiBpbnQgWFZlbmRvclJlbGVhc2UoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50
IFhXYXJwUG9pbnRlcigKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFdpbmRv
dwkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1
bnNpZ25lZCBpbnQJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCSAgICAgCgopOwoKZXh0ZXJu
IGludCBYV2lkdGhNTU9mU2NyZWVuKAoKICAgIFNjcmVlbioJCSAKCik7CgpleHRlcm4gaW50IFhX
aWR0aE9mU2NyZWVuKAoKICAgIFNjcmVlbioJCSAKCik7CgpleHRlcm4gaW50IFhXaW5kb3dFdmVu
dCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGxvbmcJCSAsCiAgICBYRXZl
bnQqCQkgCgopOwoKZXh0ZXJuIGludCBYV3JpdGVCaXRtYXBGaWxlKAoKICAgIERpc3BsYXkqCQkg
LAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBQaXhtYXAJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwK
ICAgIHVuc2lnbmVkIGludAkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAJCSAgICAgCgopOwoK
ZXh0ZXJuIGludCAgWFN1cHBvcnRzTG9jYWxlKAoKICAgIHZvaWQKCik7CgpleHRlcm4gY2hhciAq
WFNldExvY2FsZU1vZGlmaWVycygKCiAgICBjb25zdCAgY2hhcioJIAoKKTsKCmV4dGVybiBYT00g
WE9wZW5PTSgKCiAgICBEaXNwbGF5KgkJCSAsCiAgICBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMq
CSAsCiAgICBjb25zdCAgY2hhcioJCSAsCiAgICBjb25zdCAgY2hhcioJCSAKCik7CgpleHRlcm4g
aW50ICBYQ2xvc2VPTSgKCiAgICBYT00JCQkgCgopOwoKZXh0ZXJuIGNoYXIgKlhTZXRPTVZhbHVl
cygKCiAgICBYT00JCQkgLAogICAgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhHZXRPTVZhbHVlcygK
CiAgICBYT00JCQkgLAogICAgLi4uCgopOwoKZXh0ZXJuIERpc3BsYXkgKlhEaXNwbGF5T2ZPTSgK
CiAgICBYT00JCQkgCgopOwoKZXh0ZXJuIGNoYXIgKlhMb2NhbGVPZk9NKAoKICAgIFhPTQkJCSAK
Cik7CgpleHRlcm4gWE9DIFhDcmVhdGVPQygKCiAgICBYT00JCQkgLAogICAgLi4uCgopOwoKZXh0
ZXJuIHZvaWQgWERlc3Ryb3lPQygKCiAgICBYT0MJCQkgCgopOwoKZXh0ZXJuIFhPTSBYT01PZk9D
KAoKICAgIFhPQwkJCSAKCik7CgpleHRlcm4gY2hhciAqWFNldE9DVmFsdWVzKAoKICAgIFhPQwkJ
CSAsCiAgICAuLi4KCik7CgpleHRlcm4gY2hhciAqWEdldE9DVmFsdWVzKAoKICAgIFhPQwkJCSAs
CiAgICAuLi4KCik7CgpleHRlcm4gWEZvbnRTZXQgWENyZWF0ZUZvbnRTZXQoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGNoYXIqKioJCSAsCiAgICBpbnQqCQkgLAog
ICAgY2hhcioqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWEZyZWVGb250U2V0KAoKICAgIERpc3BsYXkq
CQkgLAogICAgWEZvbnRTZXQJCSAKCik7CgpleHRlcm4gaW50IFhGb250c09mRm9udFNldCgKCiAg
ICBYRm9udFNldAkJICwKICAgIFhGb250U3RydWN0KioqCSAsCiAgICBjaGFyKioqCQkgCgopOwoK
ZXh0ZXJuIGNoYXIgKlhCYXNlRm9udE5hbWVMaXN0T2ZGb250U2V0KAoKICAgIFhGb250U2V0CQkg
CgopOwoKZXh0ZXJuIGNoYXIgKlhMb2NhbGVPZkZvbnRTZXQoCgogICAgWEZvbnRTZXQJCSAKCik7
CgpleHRlcm4gaW50ICBYQ29udGV4dERlcGVuZGVudERyYXdpbmcoCgogICAgWEZvbnRTZXQJCSAK
Cik7CgpleHRlcm4gaW50ICBYRGlyZWN0aW9uYWxEZXBlbmRlbnREcmF3aW5nKAoKICAgIFhGb250
U2V0CQkgCgopOwoKZXh0ZXJuIGludCAgWENvbnRleHR1YWxEcmF3aW5nKAoKICAgIFhGb250U2V0
CQkgCgopOwoKZXh0ZXJuIFhGb250U2V0RXh0ZW50cyAqWEV4dGVudHNPZkZvbnRTZXQoCgogICAg
WEZvbnRTZXQJCSAKCik7CgpleHRlcm4gaW50IFhtYlRleHRFc2NhcGVtZW50KAoKICAgIFhGb250
U2V0CQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBY
d2NUZXh0RXNjYXBlbWVudCgKCiAgICBYRm9udFNldAkJICwKICAgIGNvbnN0ICB3Y2hhcl90Kgkg
LAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWG1iVGV4dEV4dGVudHMoCgogICAgWEZvbnRT
ZXQJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGludAkJCSAsCiAgICBYUmVjdGFuZ2xlKgkJ
ICwKICAgIFhSZWN0YW5nbGUqCQkgCgopOwoKZXh0ZXJuIGludCBYd2NUZXh0RXh0ZW50cygKCiAg
ICBYRm9udFNldAkJICwKICAgIGNvbnN0ICB3Y2hhcl90KgkgLAogICAgaW50CQkJICwKICAgIFhS
ZWN0YW5nbGUqCQkgLAogICAgWFJlY3RhbmdsZSoJCSAKCik7CgpleHRlcm4gaW50ICBYbWJUZXh0
UGVyQ2hhckV4dGVudHMoCgogICAgWEZvbnRTZXQJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAg
IGludAkJCSAsCiAgICBYUmVjdGFuZ2xlKgkJICwKICAgIFhSZWN0YW5nbGUqCQkgLAogICAgaW50
CQkJICwKICAgIGludCoJCSAsCiAgICBYUmVjdGFuZ2xlKgkJICwKICAgIFhSZWN0YW5nbGUqCQkg
CgopOwoKZXh0ZXJuIGludCAgWHdjVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhGb250U2V0CQkg
LAogICAgY29uc3QgIHdjaGFyX3QqCSAsCiAgICBpbnQJCQkgLAogICAgWFJlY3RhbmdsZSoJCSAs
CiAgICBYUmVjdGFuZ2xlKgkJICwKICAgIGludAkJCSAsCiAgICBpbnQqCQkgLAogICAgWFJlY3Rh
bmdsZSoJCSAsCiAgICBYUmVjdGFuZ2xlKgkJIAoKKTsKCmV4dGVybiB2b2lkIFhtYkRyYXdUZXh0
KAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJ
CQkgLAogICAgaW50CQkJICwKICAgIFhtYlRleHRJdGVtKgkgLAogICAgaW50CQkJIAoKKTsKCmV4
dGVybiB2b2lkIFh3Y0RyYXdUZXh0KAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAs
CiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIFh3Y1RleHRJdGVtKgkg
LAogICAgaW50CQkJIAoKKTsKCmV4dGVybiB2b2lkIFhtYkRyYXdTdHJpbmcoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIFhGb250U2V0CQkgLAogICAgR0MJCQkgLAogICAg
aW50CQkJICwKICAgIGludAkJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGludAkJCSAKCik7
CgpleHRlcm4gdm9pZCBYd2NEcmF3U3RyaW5nKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2Fi
bGUJCSAsCiAgICBYRm9udFNldAkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJ
CQkgLAogICAgY29uc3QgIHdjaGFyX3QqCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WG1iRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAg
ICBYRm9udFNldAkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAg
Y29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHdjRHJhd0ltYWdl
U3RyaW5nKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBYRm9udFNldAkJ
ICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgY29uc3QgIHdjaGFy
X3QqCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIFhJTSBYT3BlbklNKAoKICAgIERpc3BsYXkq
CQkJICwKICAgIHN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyoJICwKICAgIGNoYXIqCQkJICwKICAg
IGNoYXIqCQkJIAoKKTsKCmV4dGVybiBpbnQgIFhDbG9zZUlNKAoKICAgIFhJTSAgCgopOwoKZXh0
ZXJuIGNoYXIgKlhHZXRJTVZhbHVlcygKCiAgICBYSU0gICwgLi4uCgopOwoKZXh0ZXJuIERpc3Bs
YXkgKlhEaXNwbGF5T2ZJTSgKCiAgICBYSU0gIAoKKTsKCmV4dGVybiBjaGFyICpYTG9jYWxlT2ZJ
TSgKCiAgICBYSU0gIAoKKTsKCmV4dGVybiBYSUMgWENyZWF0ZUlDKAoKICAgIFhJTSAgLCAuLi4K
Cik7CgpleHRlcm4gdm9pZCBYRGVzdHJveUlDKAoKICAgIFhJQyAgCgopOwoKZXh0ZXJuIHZvaWQg
WFNldElDRm9jdXMoCgogICAgWElDICAKCik7CgpleHRlcm4gdm9pZCBYVW5zZXRJQ0ZvY3VzKAoK
ICAgIFhJQyAgCgopOwoKZXh0ZXJuIHdjaGFyX3QgKlh3Y1Jlc2V0SUMoCgogICAgWElDICAKCik7
CgpleHRlcm4gY2hhciAqWG1iUmVzZXRJQygKCiAgICBYSUMgIAoKKTsKCmV4dGVybiBjaGFyICpY
U2V0SUNWYWx1ZXMoCgogICAgWElDICAsIC4uLgoKKTsKCmV4dGVybiBjaGFyICpYR2V0SUNWYWx1
ZXMoCgogICAgWElDICAsIC4uLgoKKTsKCmV4dGVybiBYSU0gWElNT2ZJQygKCiAgICBYSUMgIAoK
KTsKCmV4dGVybiBpbnQgIFhGaWx0ZXJFdmVudCgKCiAgICBYRXZlbnQqCSAsCiAgICBXaW5kb3cJ
IAoKKTsKCmV4dGVybiBpbnQgWG1iTG9va3VwU3RyaW5nKAoKICAgIFhJQwkJCSAsCiAgICBYS2V5
UHJlc3NlZEV2ZW50KgkgLAogICAgY2hhcioJCSAsCiAgICBpbnQJCQkgLAogICAgS2V5U3ltKgkJ
ICwKICAgIGludCAqCQkgCgopOwoKZXh0ZXJuIGludCBYd2NMb29rdXBTdHJpbmcoCgogICAgWElD
CQkJICwKICAgIFhLZXlQcmVzc2VkRXZlbnQqCSAsCiAgICB3Y2hhcl90KgkJICwKICAgIGludAkJ
CSAsCiAgICBLZXlTeW0qCQkgLAogICAgaW50ICoJCSAKCik7CgpleHRlcm4gWFZhTmVzdGVkTGlz
dCBYVmFDcmVhdGVOZXN0ZWRMaXN0KAoKICAgIGludCAgLCAuLi4KCik7CgogCgpleHRlcm4gaW50
ICBYUmVnaXN0ZXJJTUluc3RhbnRpYXRlQ2FsbGJhY2soCgogICAgRGlzcGxheSoJCQkgLAogICAg
c3RydWN0IF9Ycm1IYXNoQnVja2V0UmVjKgkgLAogICAgY2hhcioJCQkgLAogICAgY2hhcioJCQkg
LAogICAgWElEUHJvYwkJCSAsCiAgICBYUG9pbnRlcgkJCSAKCik7CgpleHRlcm4gaW50ICBYVW5y
ZWdpc3RlcklNSW5zdGFudGlhdGVDYWxsYmFjaygKCiAgICBEaXNwbGF5KgkJCSAsCiAgICBzdHJ1
Y3QgX1hybUhhc2hCdWNrZXRSZWMqCSAsCiAgICBjaGFyKgkJCSAsCiAgICBjaGFyKgkJCSAsCiAg
ICBYSURQcm9jCQkJICwKICAgIFhQb2ludGVyCQkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlhDb25u
ZWN0aW9uV2F0Y2hQcm9jKSgKCiAgICBEaXNwbGF5KgkJCSAsCiAgICBYUG9pbnRlcgkJCSAsCiAg
ICBpbnQJCQkJICwKICAgIGludCAJCQkgLAkgIAogICAgWFBvaW50ZXIqCQkJICAgCgopOwogICAg
CgpleHRlcm4gaW50ICBYSW50ZXJuYWxDb25uZWN0aW9uTnVtYmVycygKCiAgICBEaXNwbGF5KgkJ
CSAsCiAgICBpbnQqKgkJCSAsCiAgICBpbnQqCQkJIAoKKTsKCmV4dGVybiB2b2lkIFhQcm9jZXNz
SW50ZXJuYWxDb25uZWN0aW9uKAoKICAgIERpc3BsYXkqCQkJICwKICAgIGludAkJCQkgCgopOwoK
ZXh0ZXJuIGludCAgWEFkZENvbm5lY3Rpb25XYXRjaCgKCiAgICBEaXNwbGF5KgkJCSAsCiAgICBY
Q29ubmVjdGlvbldhdGNoUHJvYwkgLAogICAgWFBvaW50ZXIJCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WFJlbW92ZUNvbm5lY3Rpb25XYXRjaCgKCiAgICBEaXNwbGF5KgkJCSAsCiAgICBYQ29ubmVjdGlv
bldhdGNoUHJvYwkgLAogICAgWFBvaW50ZXIJCQkgCgopOwoKIAoKCiMgNjQgInhkdmkuaCIgMgoK
IyAxICIvdXNyL2luY2x1ZGUvWDExL1h1dGlsLmgiIDEgMwogCiAKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCgoKCgoKCgoKCgoKCiAKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgCWxvbmcgZmxhZ3M7CSAKCWludCB4LCB5OwkJIAoJaW50IHdp
ZHRoLCBoZWlnaHQ7CSAKCWludCBtaW5fd2lkdGgsIG1pbl9oZWlnaHQ7CglpbnQgbWF4X3dpZHRo
LCBtYXhfaGVpZ2h0OwogICAgCWludCB3aWR0aF9pbmMsIGhlaWdodF9pbmM7CglzdHJ1Y3QgewoJ
CWludCB4OwkgCgkJaW50IHk7CSAKCX0gbWluX2FzcGVjdCwgbWF4X2FzcGVjdDsKCWludCBiYXNl
X3dpZHRoLCBiYXNlX2hlaWdodDsJCSAKCWludCB3aW5fZ3Jhdml0eTsJCQkgCn0gWFNpemVIaW50
czsKCiAKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoJbG9uZyBmbGFn
czsJIAoJaW50ICBpbnB1dDsJIAoKCWludCBpbml0aWFsX3N0YXRlOwkgCglQaXhtYXAgaWNvbl9w
aXhtYXA7CSAKCVdpbmRvdyBpY29uX3dpbmRvdzsgCSAKCWludCBpY29uX3gsIGljb25feTsgCSAK
CVBpeG1hcCBpY29uX21hc2s7CSAKCVhJRCB3aW5kb3dfZ3JvdXA7CSAKCSAKfSBYV01IaW50czsK
CiAKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgkJCSAKCgogCgoKCnR5cGVkZWYgc3RydWN0IHsK
ICAgIHVuc2lnbmVkIGNoYXIgKnZhbHVlOwkJIAogICAgQXRvbSBlbmNvZGluZzsJCQkgCiAgICBp
bnQgZm9ybWF0OwkJCQkgCiAgICB1bnNpZ25lZCBsb25nIG5pdGVtczsJCSAKfSBYVGV4dFByb3Bl
cnR5OwoKCgoKCnR5cGVkZWYgZW51bSB7CiAgICBYU3RyaW5nU3R5bGUsCQkgCiAgICBYQ29tcG91
bmRUZXh0U3R5bGUsCQkgCiAgICBYVGV4dFN0eWxlLAkJCSAKICAgIFhTdGRJQ0NUZXh0U3R5bGUJ
CSAKfSBYSUNDRW5jb2RpbmdTdHlsZTsKCnR5cGVkZWYgc3RydWN0IHsKCWludCBtaW5fd2lkdGgs
IG1pbl9oZWlnaHQ7CglpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0OwoJaW50IHdpZHRoX2luYywg
aGVpZ2h0X2luYzsKfSBYSWNvblNpemU7Cgp0eXBlZGVmIHN0cnVjdCB7CgljaGFyICpyZXNfbmFt
ZTsKCWNoYXIgKnJlc19jbGFzczsKfSBYQ2xhc3NIaW50OwoKIAoKCgoKCgoKCgoKCgoKCiAKCgp0
eXBlZGVmIHN0cnVjdCBfWENvbXBvc2VTdGF0dXMgewogICAgWFBvaW50ZXIgY29tcG9zZV9wdHI7
CSAKICAgIGludCBjaGFyc19tYXRjaGVkOwkJIAp9IFhDb21wb3NlU3RhdHVzOwoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKdHlwZWRlZiBzdHJ1Y3QgX1hSZWdpb24gKlJlZ2lvbjsgCgog
CiAKCgoKIAoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIFZpc3VhbCAqdmlzdWFsOwogIFZpc3Vh
bElEIHZpc3VhbGlkOwogIGludCBzY3JlZW47CiAgaW50IGRlcHRoOwoKCgogIGludCBjbGFzczsK
CiAgdW5zaWduZWQgbG9uZyByZWRfbWFzazsKICB1bnNpZ25lZCBsb25nIGdyZWVuX21hc2s7CiAg
dW5zaWduZWQgbG9uZyBibHVlX21hc2s7CiAgaW50IGNvbG9ybWFwX3NpemU7CiAgaW50IGJpdHNf
cGVyX3JnYjsKfSBYVmlzdWFsSW5mbzsKCgoKCgoKCgoKCgoKCiAKCgoKdHlwZWRlZiBzdHJ1Y3Qg
ewoJQ29sb3JtYXAgY29sb3JtYXA7Cgl1bnNpZ25lZCBsb25nIHJlZF9tYXg7Cgl1bnNpZ25lZCBs
b25nIHJlZF9tdWx0OwoJdW5zaWduZWQgbG9uZyBncmVlbl9tYXg7Cgl1bnNpZ25lZCBsb25nIGdy
ZWVuX211bHQ7Cgl1bnNpZ25lZCBsb25nIGJsdWVfbWF4OwoJdW5zaWduZWQgbG9uZyBibHVlX211
bHQ7Cgl1bnNpZ25lZCBsb25nIGJhc2VfcGl4ZWw7CglWaXN1YWxJRCB2aXN1YWxpZDsJCSAKCVhJ
RCBraWxsaWQ7CQkJIAp9IFhTdGFuZGFyZENvbG9ybWFwOwoKCgoKIAoKCgoKCgoKIAoKCgoKCgog
CgoKCgoKdHlwZWRlZiBpbnQgWENvbnRleHQ7CgoKCgogCgogCgpleHRlcm4gWENsYXNzSGludCAq
WEFsbG9jQ2xhc3NIaW50ICgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFhJY29uU2l6ZSAqWEFsbG9j
SWNvblNpemUgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFNpemVIaW50cyAqWEFsbG9jU2l6ZUhp
bnRzICgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFhTdGFuZGFyZENvbG9ybWFwICpYQWxsb2NTdGFu
ZGFyZENvbG9ybWFwICgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFhXTUhpbnRzICpYQWxsb2NXTUhp
bnRzICgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIGludCBYQ2xpcEJveCgKCiAgICBSZWdpb24JCSAs
CiAgICBYUmVjdGFuZ2xlKgkJIAoKKTsKCmV4dGVybiBSZWdpb24gWENyZWF0ZVJlZ2lvbigKCiAg
ICB2b2lkCgopOwoKZXh0ZXJuIGNoYXIgKlhEZWZhdWx0U3RyaW5nKAoKICAgIHZvaWQKCik7Cgpl
eHRlcm4gaW50IFhEZWxldGVDb250ZXh0KAoKICAgIERpc3BsYXkqCQkgLAogICAgWElECQkJICwK
ICAgIFhDb250ZXh0CQkgCgopOwoKZXh0ZXJuIGludCBYRGVzdHJveVJlZ2lvbigKCiAgICBSZWdp
b24JCSAKCik7CgpleHRlcm4gaW50IFhFbXB0eVJlZ2lvbigKCiAgICBSZWdpb24JCSAKCik7Cgpl
eHRlcm4gaW50IFhFcXVhbFJlZ2lvbigKCiAgICBSZWdpb24JCSAsCiAgICBSZWdpb24JCSAKCik7
CgpleHRlcm4gaW50IFhGaW5kQ29udGV4dCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFhJRAkJCSAs
CiAgICBYQ29udGV4dAkJICwKICAgIFhQb2ludGVyKgkJIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRD
bGFzc0hpbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYQ2xhc3NIaW50
KgkJIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRJY29uU2l6ZXMoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBXaW5kb3cJCSAsCiAgICBYSWNvblNpemUqKgkJICwKICAgIGludCoJCSAKCik7CgpleHRlcm4g
aW50ICBYR2V0Tm9ybWFsSGludHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAg
ICBYU2l6ZUhpbnRzKgkJIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRSR0JDb2xvcm1hcHMoCgogICAg
RGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYU3RhbmRhcmRDb2xvcm1hcCoqICAsCiAg
ICBpbnQqCQkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRTaXplSGludHMoCgog
ICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYU2l6ZUhpbnRzKgkJICwKICAgIEF0
b20JCSAKCik7CgpleHRlcm4gaW50ICBYR2V0U3RhbmRhcmRDb2xvcm1hcCgKCiAgICBEaXNwbGF5
KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhTdGFuZGFyZENvbG9ybWFwKgkgLAogICAgQXRvbQkJ
IAkJCSAgICAKCik7CgpleHRlcm4gaW50ICBYR2V0VGV4dFByb3BlcnR5KAoKICAgIERpc3BsYXkq
CQkgLAogICAgV2luZG93CQkgLAogICAgWFRleHRQcm9wZXJ0eSoJICwKICAgIEF0b20JCSAKCik7
CgpleHRlcm4gWFZpc3VhbEluZm8gKlhHZXRWaXN1YWxJbmZvKAoKICAgIERpc3BsYXkqCQkgLAog
ICAgbG9uZwkJICwKICAgIFhWaXN1YWxJbmZvKgkgLAogICAgaW50KgkJIAoKKTsKCmV4dGVybiBp
bnQgIFhHZXRXTUNsaWVudE1hY2hpbmUoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAs
CiAgICBYVGV4dFByb3BlcnR5KgkgCgopOwoKZXh0ZXJuIFhXTUhpbnRzICpYR2V0V01IaW50cygK
CiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJIAkJICAgICAgCgopOwoKZXh0ZXJuIGludCAg
WEdldFdNSWNvbk5hbWUoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYVGV4
dFByb3BlcnR5KgkgCgopOwoKZXh0ZXJuIGludCAgWEdldFdNTmFtZSgKCiAgICBEaXNwbGF5KgkJ
ICwKICAgIFdpbmRvdwkJICwKICAgIFhUZXh0UHJvcGVydHkqCSAKCik7CgpleHRlcm4gaW50ICBY
R2V0V01Ob3JtYWxIaW50cygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhT
aXplSGludHMqCQkgLAogICAgbG9uZyoJCSAgCgopOwoKZXh0ZXJuIGludCAgWEdldFdNU2l6ZUhp
bnRzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgWFNpemVIaW50cyoJCSAs
CiAgICBsb25nKgkJICwKICAgIEF0b20JCSAKCik7CgpleHRlcm4gaW50ICBYR2V0Wm9vbUhpbnRz
KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgWFNpemVIaW50cyoJCSAKCik7
CgpleHRlcm4gaW50IFhJbnRlcnNlY3RSZWdpb24oCgogICAgUmVnaW9uCQkgLAogICAgUmVnaW9u
CQkgLAogICAgUmVnaW9uCQkgCgopOwoKZXh0ZXJuIHZvaWQgWENvbnZlcnRDYXNlKAoKICAgIEtl
eVN5bQkJICwKICAgIEtleVN5bSoJCSAsCiAgICBLZXlTeW0qCQkgCgopOwoKZXh0ZXJuIGludCBY
TG9va3VwU3RyaW5nKAoKICAgIFhLZXlFdmVudCoJCSAsCiAgICBjaGFyKgkJICwKICAgIGludAkJ
CSAsCiAgICBLZXlTeW0qCQkgLAogICAgWENvbXBvc2VTdGF0dXMqCSAKCik7CgpleHRlcm4gaW50
ICBYTWF0Y2hWaXN1YWxJbmZvKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJICwKICAgIGlu
dAkJCSAsCiAgICBpbnQJCQkgLAogICAgWFZpc3VhbEluZm8qCSAKCik7CgpleHRlcm4gaW50IFhP
ZmZzZXRSZWdpb24oCgogICAgUmVnaW9uCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7
CgpleHRlcm4gaW50ICBYUG9pbnRJblJlZ2lvbigKCiAgICBSZWdpb24JCSAsCiAgICBpbnQJCQkg
LAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBSZWdpb24gWFBvbHlnb25SZWdpb24oCgogICAgWFBv
aW50KgkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYUmVjdElu
UmVnaW9uKAoKICAgIFJlZ2lvbgkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgdW5z
aWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJIAoKKTsKCmV4dGVybiBpbnQgWFNhdmVDb250
ZXh0KAoKICAgIERpc3BsYXkqCQkgLAogICAgWElECQkJICwKICAgIFhDb250ZXh0CQkgLAogICAg
Y29uc3QgIGNoYXIqCSAKCik7CgpleHRlcm4gaW50IFhTZXRDbGFzc0hpbnQoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYQ2xhc3NIaW50KgkJIAoKKTsKCmV4dGVybiBpbnQg
WFNldEljb25TaXplcygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhJY29u
U2l6ZSoJCSAsCiAgICBpbnQJCQkgICAgIAoKKTsKCmV4dGVybiBpbnQgWFNldE5vcm1hbEhpbnRz
KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgWFNpemVIaW50cyoJCSAKCik7
CgpleHRlcm4gdm9pZCBYU2V0UkdCQ29sb3JtYXBzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2lu
ZG93CQkgLAogICAgWFN0YW5kYXJkQ29sb3JtYXAqCSAsCiAgICBpbnQJCQkgLAogICAgQXRvbQkJ
IAoKKTsKCmV4dGVybiBpbnQgWFNldFNpemVIaW50cygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdp
bmRvdwkJICwKICAgIFhTaXplSGludHMqCQkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVybiBpbnQg
WFNldFN0YW5kYXJkUHJvcGVydGllcygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwK
ICAgIGNvbnN0ICBjaGFyKgkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBQaXhtYXAJCSAsCiAg
ICBjaGFyKioJCSAsCiAgICBpbnQJCQkgLAogICAgWFNpemVIaW50cyoJCSAKCik7CgpleHRlcm4g
dm9pZCBYU2V0VGV4dFByb3BlcnR5KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAog
ICAgWFRleHRQcm9wZXJ0eSoJICwKICAgIEF0b20JCSAKCik7CgpleHRlcm4gdm9pZCBYU2V0V01D
bGllbnRNYWNoaW5lKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgWFRleHRQ
cm9wZXJ0eSoJIAoKKTsKCmV4dGVybiBpbnQgWFNldFdNSGludHMoCgogICAgRGlzcGxheSoJCSAs
CiAgICBXaW5kb3cJCSAsCiAgICBYV01IaW50cyoJCSAKCik7CgpleHRlcm4gdm9pZCBYU2V0V01J
Y29uTmFtZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhUZXh0UHJvcGVy
dHkqCSAKCik7CgpleHRlcm4gdm9pZCBYU2V0V01OYW1lKAoKICAgIERpc3BsYXkqCQkgLAogICAg
V2luZG93CQkgLAogICAgWFRleHRQcm9wZXJ0eSoJIAoKKTsKCmV4dGVybiB2b2lkIFhTZXRXTU5v
cm1hbEhpbnRzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgWFNpemVIaW50
cyoJCSAKCik7CgpleHRlcm4gdm9pZCBYU2V0V01Qcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkqCQkg
LAogICAgV2luZG93CQkgLAogICAgWFRleHRQcm9wZXJ0eSoJICwKICAgIFhUZXh0UHJvcGVydHkq
CSAsCiAgICBjaGFyKioJCSAsCiAgICBpbnQJCQkgLAogICAgWFNpemVIaW50cyoJCSAsCiAgICBY
V01IaW50cyoJCSAsCiAgICBYQ2xhc3NIaW50KgkJIAoKKTsKCmV4dGVybiB2b2lkIFhtYlNldFdN
UHJvcGVydGllcygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGNvbnN0ICBj
aGFyKgkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBjaGFyKioJCSAsCiAgICBpbnQJCQkgLAog
ICAgWFNpemVIaW50cyoJCSAsCiAgICBYV01IaW50cyoJCSAsCiAgICBYQ2xhc3NIaW50KgkJIAoK
KTsKCmV4dGVybiB2b2lkIFhTZXRXTVNpemVIaW50cygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdp
bmRvdwkJICwKICAgIFhTaXplSGludHMqCQkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVybiBpbnQg
WFNldFJlZ2lvbigKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIFJlZ2lvbgkJIAoK
KTsKCmV4dGVybiB2b2lkIFhTZXRTdGFuZGFyZENvbG9ybWFwKAoKICAgIERpc3BsYXkqCQkgLAog
ICAgV2luZG93CQkgLAogICAgWFN0YW5kYXJkQ29sb3JtYXAqCSAsCiAgICBBdG9tCQkgCgopOwoK
ZXh0ZXJuIGludCBYU2V0Wm9vbUhpbnRzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkg
LAogICAgWFNpemVIaW50cyoJCSAKCik7CgpleHRlcm4gaW50IFhTaHJpbmtSZWdpb24oCgogICAg
UmVnaW9uCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50ICBYU3Ry
aW5nTGlzdFRvVGV4dFByb3BlcnR5KAoKICAgIGNoYXIqKgkJICwKICAgIGludAkJCSAsCiAgICBY
VGV4dFByb3BlcnR5KgkgCgopOwoKZXh0ZXJuIGludCBYU3VidHJhY3RSZWdpb24oCgogICAgUmVn
aW9uCQkgLAogICAgUmVnaW9uCQkgLAogICAgUmVnaW9uCQkgCgopOwoKZXh0ZXJuIGludCBYbWJU
ZXh0TGlzdFRvVGV4dFByb3BlcnR5KAoKICAgIERpc3BsYXkqCQkgLAogICAgY2hhcioqCQkgLAog
ICAgaW50CQkJICwKICAgIFhJQ0NFbmNvZGluZ1N0eWxlCSAsCiAgICBYVGV4dFByb3BlcnR5Kgkg
CgopOwoKZXh0ZXJuIGludCBYd2NUZXh0TGlzdFRvVGV4dFByb3BlcnR5KAoKICAgIERpc3BsYXkq
CQkgLAogICAgd2NoYXJfdCoqCQkgLAogICAgaW50CQkJICwKICAgIFhJQ0NFbmNvZGluZ1N0eWxl
CSAsCiAgICBYVGV4dFByb3BlcnR5KgkgCgopOwoKZXh0ZXJuIHZvaWQgWHdjRnJlZVN0cmluZ0xp
c3QoCgogICAgd2NoYXJfdCoqCQkgCgopOwoKZXh0ZXJuIGludCAgWFRleHRQcm9wZXJ0eVRvU3Ry
aW5nTGlzdCgKCiAgICBYVGV4dFByb3BlcnR5KgkgLAogICAgY2hhcioqKgkJICwKICAgIGludCoJ
CSAKCik7CgpleHRlcm4gaW50IFhtYlRleHRQcm9wZXJ0eVRvVGV4dExpc3QoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBYVGV4dFByb3BlcnR5KgkgLAogICAgY2hhcioqKgkJICwKICAgIGludCoJCSAK
Cik7CgpleHRlcm4gaW50IFh3Y1RleHRQcm9wZXJ0eVRvVGV4dExpc3QoCgogICAgRGlzcGxheSoJ
CSAsCiAgICBYVGV4dFByb3BlcnR5KgkgLAogICAgd2NoYXJfdCoqKgkJICwKICAgIGludCoJCSAK
Cik7CgpleHRlcm4gaW50IFhVbmlvblJlY3RXaXRoUmVnaW9uKAoKICAgIFhSZWN0YW5nbGUqCQkg
LAogICAgUmVnaW9uCQkgLAogICAgUmVnaW9uCQkgCgopOwoKZXh0ZXJuIGludCBYVW5pb25SZWdp
b24oCgogICAgUmVnaW9uCQkgLAogICAgUmVnaW9uCQkgLAogICAgUmVnaW9uCQkgCgopOwoKZXh0
ZXJuIGludCBYV01HZW9tZXRyeSgKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAsCiAgICBj
b25zdCAgY2hhcioJICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgdW5zaWduZWQgaW50CSAsCiAg
ICBYU2l6ZUhpbnRzKgkJICwKICAgIGludCoJCSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJICwK
ICAgIGludCoJCSAsCiAgICBpbnQqCQkgCgopOwoKZXh0ZXJuIGludCBYWG9yUmVnaW9uKAoKICAg
IFJlZ2lvbgkJICwKICAgIFJlZ2lvbgkJICwKICAgIFJlZ2lvbgkJIAoKKTsKCiAKCgojIDY1ICJ4
ZHZpLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL1gxMS9Yb3MuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCiMgNTQgIi91c3IvaW5jbHVkZS9YMTEv
WG9zLmgiIDMKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg
MTE0ICIvdXNyL2luY2x1ZGUvWDExL1hvcy5oIiAzCgoKIAoKCgoKCgoKCgoKCiAKCgojIDE0MSAi
L3Vzci9pbmNsdWRlL1gxMS9Yb3MuaCIgMwoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZmNudGwu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAogCgogCgojIDEgIi91c3IvaW5j
bHVkZS9mY250bGJpdHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoKCiAKCgoKIAoKCgoKCgpzdHJ1Y3Qg
ZmxvY2sKICB7CiAgICBzaG9ydCBpbnQgbF90eXBlOwogICAgc2hvcnQgaW50IGxfd2hlbmNlOwog
ICAgX19vZmZfdCBsX3N0YXJ0OwogICAgX19vZmZfdCBsX2xlbjsKICAgIF9fcGlkX3QgbF9waWQ7
CiAgfTsKCgogCgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzCgoKCgoK
CgoKCgoKCgogCgpleHRlcm4gaW50IF9fZmNudGwgIChpbnQgX19mZCwgaW50IF9fY21kLCAuLi4p
ICA7CmV4dGVybiBpbnQgZmNudGwgIChpbnQgX19mZCwgaW50IF9fY21kLCAuLi4pICA7CgogCgoK
ZXh0ZXJuIGludCBfX29wZW4gIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4u
LikgIDsKZXh0ZXJuIGludCBvcGVuICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX29mbGFn
LCAuLi4pICA7CgogCgoKZXh0ZXJuIGludCBjcmVhdCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBf
X21vZGVfdCBfX21vZGUpICA7CgojIDc3ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwoKCiAKCgoj
IDE0OCAiL3Vzci9pbmNsdWRlL1gxMS9Yb3MuaCIgMiAzCgoKCgoKCgoKCgogCgoKCiMgMTkxICIv
dXNyL2luY2x1ZGUvWDExL1hvcy5oIiAzCgoKCgoKCgoKCgoKCgoKIyAyMjEgIi91c3IvaW5jbHVk
ZS9YMTEvWG9zLmgiIDMKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgogCgoKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoK
CgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNs
dWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvaTY4
Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgoj
IDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRlL3N0
ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGlu
dXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAK
CiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMzggIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDIgMwoKCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvdGltZWJpdHMuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMiAiL3Vzci9pbmNsdWRlL3RpbWViaXRzLmgiIDMKCgoK
CgoKIAoKCiAKCgoKCiAKCgoKCiMgNDcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCiAKCgoK
CgoKCgoKCgoKCgoKIAp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190OwoKCgoKIyA4MCAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMwoKCgoKIyA5NyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgog
CnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsJCQkgCiAgaW50IHRtX21pbjsJCQkgCiAgaW50IHRt
X2hvdXI7CQkJIAogIGludCB0bV9tZGF5OwkJCSAKICBpbnQgdG1fbW9uOwkJCSAKICBpbnQgdG1f
eWVhcjsJCQkgCiAgaW50IHRtX3dkYXk7CQkJIAogIGludCB0bV95ZGF5OwkJCSAKICBpbnQgdG1f
aXNkc3Q7CQkJIAoKCiAgbG9uZyBpbnQgdG1fZ210b2ZmOwkJIAogIF9fY29uc3QgY2hhciAqdG1f
em9uZTsJIAoKCgoKfTsKCgoKCgogCgpleHRlcm4gY2xvY2tfdCBjbG9jayAgKHZvaWQpICA7Cgog
CmV4dGVybiB0aW1lX3QgdGltZSAgKHRpbWVfdCAqX190aW1lcikgIDsKCiAKZXh0ZXJuIGRvdWJs
ZSBkaWZmdGltZSAgKHRpbWVfdCBfX3RpbWUxLCB0aW1lX3QgX190aW1lMCkgIAogICAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuIHRpbWVfdCBta3RpbWUgIChzdHJ1Y3Qg
dG0gKl9fdHApICA7CgogCgoKZXh0ZXJuIHRpbWVfdCBfX21rdGltZV9pbnRlcm5hbCAgKHN0cnVj
dCB0bSAqX190cCwKCQkJCSAgICAgIHN0cnVjdCB0bSAqKCpfX2Z1bmMpIChjb25zdCB0aW1lX3Qg
KiwKCQkJCQkJCSAgICBzdHJ1Y3QgdG0gKiksCgkJCQkgICAgICB0aW1lX3QgKl9fb2Zmc2V0KSAg
OwoKCiAKCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lICAoY2hhciAqX19zLCBzaXplX3QgX19tYXhz
aXplLAoJCQkgICAgIF9fY29uc3QgY2hhciAqX19mb3JtYXQsIF9fY29uc3Qgc3RydWN0IHRtICpf
X3RwKSAgOwoKCgoKCgoKCgogCgpleHRlcm4gc3RydWN0IHRtICpnbXRpbWUgIChfX2NvbnN0IHRp
bWVfdCAqX190aW1lcikgIDsKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZSAgKF9fY29u
c3QgdGltZV90ICpfX3RpbWVyKSAgOwoKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKl9fZ210aW1lX3Ig
IChfX2NvbnN0IHRpbWVfdCAqX190aW1lciwKCQkJCSAgIHN0cnVjdCB0bSAqX190cCkgIDsKZXh0
ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX190aW1lciwKCQkJCSBz
dHJ1Y3QgdG0gKl9fdHApICA7CgogCgpleHRlcm4gc3RydWN0IHRtICpfX2xvY2FsdGltZV9yICAo
X19jb25zdCB0aW1lX3QgKl9fdGltZXIsCgkJCQkgICAgICBzdHJ1Y3QgdG0gKl9fdHApICA7CmV4
dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yICAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIsCgkJ
CQkgICAgc3RydWN0IHRtICpfX3RwKSAgOwoKCiAKCgpleHRlcm4gaW50IF9fb2ZmdGltZSAgKF9f
Y29uc3QgdGltZV90ICpfX3RpbWVyLAoJCQkgICBsb25nIGludCBfX29mZnNldCwKCQkJICAgc3Ry
dWN0IHRtICpfX1RQKSAgOwoKIAoKZXh0ZXJuIGNoYXIgKmFzY3RpbWUgIChfX2NvbnN0IHN0cnVj
dCB0bSAqX190cCkgIDsKCiAKZXh0ZXJuIGNoYXIgKmN0aW1lICAoX19jb25zdCB0aW1lX3QgKl9f
dGltZXIpICA7CgoKIAoKIAoKZXh0ZXJuIGNoYXIgKl9fYXNjdGltZV9yICAoX19jb25zdCBzdHJ1
Y3QgdG0gKl9fdHAsIGNoYXIgKl9fYnVmKSAgOwpleHRlcm4gY2hhciAqYXNjdGltZV9yICAoX19j
b25zdCBzdHJ1Y3QgdG0gKl9fdHAsIGNoYXIgKl9fYnVmKSAgOwoKIApleHRlcm4gY2hhciAqY3Rp
bWVfciAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyLCBjaGFyICpfX2J1ZikgIDsKCgoKIApleHRl
cm4gY2hhciAqX190em5hbWVbMl07CSAKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwkJIApleHRlcm4g
bG9uZyBpbnQgX190aW1lem9uZTsJIAoKIAoKZXh0ZXJuIHZvaWQgX190enNldCAgKHZvaWQpICA7
CgoKIApleHRlcm4gY2hhciAqdHpuYW1lWzJdOwoKIAoKZXh0ZXJuIGxvbmcgaW50IF9fdHpuYW1l
X21heCAgKHZvaWQpICA7CgpleHRlcm4gdm9pZCB0enNldCAgKHZvaWQpICA7CgoKCmV4dGVybiBp
bnQgZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9uZTsKCgoKIAoKZXh0ZXJuIGludCBz
dGltZSAgKF9fY29uc3QgdGltZV90ICpfX3doZW4pICA7CgoKCiAKCgoKCgoKIAoKCiAKZXh0ZXJu
IHRpbWVfdCB0aW1lZ20gIChzdHJ1Y3QgdG0gKl9fdHApICA7CgogCmV4dGVybiB0aW1lX3QgdGlt
ZWxvY2FsICAoc3RydWN0IHRtICpfX3RwKSAgOwoKIApleHRlcm4gaW50IGR5c2l6ZSAgKGludCBf
X3llYXIpICA7CgoKCgogCmV4dGVybiBpbnQgX19uYW5vc2xlZXAgIChfX2NvbnN0IHN0cnVjdCB0
aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKCQkJICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVt
YWluaW5nKSAgOwpleHRlcm4gaW50IG5hbm9zbGVlcCAgKF9fY29uc3Qgc3RydWN0IHRpbWVzcGVj
ICpfX3JlcXVlc3RlZF90aW1lLAoJCQkgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSAg
OwoKCgogCgoKCgojIDI0ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKCgojIDEgIi91
c3IvaW5jbHVkZS90aW1lYml0cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKc3Ry
dWN0IHRpbWV2YWwKICB7CiAgICB0aW1lX3QgdHZfc2VjOwkJIAogICAgdGltZV90IHR2X3VzZWM7
CQkgCiAgfTsKCgoKCiMgNTAgIi91c3IvaW5jbHVkZS90aW1lYml0cy5oIiAzCgojIDI4ICIvdXNy
L2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKCiAKCiAKCgoKCgoKCgoKCiAKCnN0cnVjdCB0aW1l
em9uZQogIHsKICAgIGludCB0el9taW51dGVzd2VzdDsJCSAKICAgIGludCB0el9kc3R0aW1lOwkJ
IAogIH07CgogCgoKCgpleHRlcm4gaW50IF9fZ2V0dGltZW9mZGF5ICAoc3RydWN0IHRpbWV2YWwg
Kl9fdHYsCgkJCQlzdHJ1Y3QgdGltZXpvbmUgKl9fdHopICA7CmV4dGVybiBpbnQgZ2V0dGltZW9m
ZGF5ICAoc3RydWN0IHRpbWV2YWwgKl9fdHYsCgkJCSAgICAgIHN0cnVjdCB0aW1lem9uZSAqX190
eikgIDsKCiAKCmV4dGVybiBpbnQgX19zZXR0aW1lb2ZkYXkgIChfX2NvbnN0IHN0cnVjdCB0aW1l
dmFsICpfX3R2LAoJCQkJX19jb25zdCBzdHJ1Y3QgdGltZXpvbmUgKl9fdHopICA7CmV4dGVybiBp
bnQgc2V0dGltZW9mZGF5ICAoX19jb25zdCBzdHJ1Y3QgdGltZXZhbCAqX190diwKCQkJICAgICAg
X19jb25zdCBzdHJ1Y3QgdGltZXpvbmUgKl9fdHopICA7CgogCgoKCmV4dGVybiBpbnQgX19hZGp0
aW1lICAoX19jb25zdCBzdHJ1Y3QgdGltZXZhbCAqX19kZWx0YSwKCQkJICAgc3RydWN0IHRpbWV2
YWwgKl9fb2xkZGVsdGEpICA7CmV4dGVybiBpbnQgYWRqdGltZSAgKF9fY29uc3Qgc3RydWN0IHRp
bWV2YWwgKl9fZGVsdGEsCgkJCSBzdHJ1Y3QgdGltZXZhbCAqX19vbGRkZWx0YSkgIDsKCgogCmVu
dW0gX19pdGltZXJfd2hpY2gKICB7CiAgICAgCiAgICBJVElNRVJfUkVBTCA9IDAsCgogICAgIAog
ICAgSVRJTUVSX1ZJUlRVQUwgPSAxLAoKICAgICAKCiAgICBJVElNRVJfUFJPRiA9IDIKCiAgfTsK
CiAKCnN0cnVjdCBpdGltZXJ2YWwKICB7CiAgICAgCiAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRl
cnZhbDsKICAgICAKICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwogIH07CgogCgpleHRlcm4g
aW50IF9fZ2V0aXRpbWVyICAoZW51bSBfX2l0aW1lcl93aGljaCBfX3doaWNoLAoJCQkgICAgIHN0
cnVjdCBpdGltZXJ2YWwgKl9fdmFsdWUpICA7CmV4dGVybiBpbnQgZ2V0aXRpbWVyICAoZW51bSBf
X2l0aW1lcl93aGljaCBfX3doaWNoLAoJCQkgICBzdHJ1Y3QgaXRpbWVydmFsICpfX3ZhbHVlKSAg
OwoKIAoKCmV4dGVybiBpbnQgX19zZXRpdGltZXIgIChlbnVtIF9faXRpbWVyX3doaWNoIF9fd2hp
Y2gsCgkJCSAgICAgX19jb25zdCBzdHJ1Y3QgaXRpbWVydmFsICpfX25ldywKCQkJICAgICBzdHJ1
Y3QgaXRpbWVydmFsICpfX29sZCkgIDsKZXh0ZXJuIGludCBzZXRpdGltZXIgIChlbnVtIF9faXRp
bWVyX3doaWNoIF9fd2hpY2gsCgkJCSAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqX19uZXcs
CgkJCSAgIHN0cnVjdCBpdGltZXJ2YWwgKl9fb2xkKSAgOwoKIAoKZXh0ZXJuIGludCBfX3V0aW1l
cyAgKF9fY29uc3QgY2hhciAqX19maWxlLCBzdHJ1Y3QgdGltZXZhbCBfX3R2cFsyXSkgIDsKZXh0
ZXJuIGludCB1dGltZXMgIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgc3RydWN0IHRpbWV2YWwgX190
dnBbMl0pICA7CgoKIAoKCgoKCgoKCiMgMTQ1ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwoK
IyAxNTQgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCgogCgoKIyAyMzMgIi91c3IvaW5jbHVk
ZS9YMTEvWG9zLmgiIDIgMwoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgojIDI4NyAiL3Vzci9pbmNs
dWRlL1gxMS9Yb3MuaCIgMwoKCgoKCgogCgoKCgoKCgoKCgojIDMxNSAiL3Vzci9pbmNsdWRlL1gx
MS9Yb3MuaCIgMwoKCgojIDY2ICJ4ZHZpLmgiIDIKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL1gxMS9Y
ZnVuY3MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDk4ICIvdXNyL2lu
Y2x1ZGUvWDExL1hmdW5jcy5oIiAzCgojIDcwICJ4ZHZpLmgiIDIKCgoKCgojIDEgIi91c3IvaW5j
bHVkZS9YMTEvSW50cmluc2ljLmgiIDEgMwogCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL1gxMS9YcmVz
b3VyY2UuaCIgMSAzCiAKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCiAKCgoKCgoKCgoKIAoKIAoKCgoKCmV4dGVybiBjaGFyICpYcGVybWFs
bG9jKAoKICAgIHVuc2lnbmVkIGludAkgCgopOwoKIAoKCgoKCnR5cGVkZWYgaW50ICAgICBYcm1R
dWFyaywgKlhybVF1YXJrTGlzdDsKCgp0eXBlZGVmIGNoYXIgKlhybVN0cmluZzsKCgogCmV4dGVy
biBYcm1RdWFyayBYcm1TdHJpbmdUb1F1YXJrKAoKICAgIGNvbnN0ICBjaGFyKiAJIAoKKTsKCmV4
dGVybiBYcm1RdWFyayBYcm1QZXJtU3RyaW5nVG9RdWFyaygKCiAgICBjb25zdCAgY2hhciogCSAK
Cik7CgogCmV4dGVybiBYcm1TdHJpbmcgWHJtUXVhcmtUb1N0cmluZygKCiAgICBYcm1RdWFyayAJ
CSAKCik7CgpleHRlcm4gWHJtUXVhcmsgWHJtVW5pcXVlUXVhcmsoCgogICAgdm9pZAoKKTsKCgoK
CiAKCgoKCgp0eXBlZGVmIGVudW0ge1hybUJpbmRUaWdodGx5LCBYcm1CaW5kTG9vc2VseX0gWHJt
QmluZGluZywgKlhybUJpbmRpbmdMaXN0OwoKZXh0ZXJuIHZvaWQgWHJtU3RyaW5nVG9RdWFya0xp
c3QoCgogICAgY29uc3QgIGNoYXIqCSAsCiAgICBYcm1RdWFya0xpc3QJIAoKKTsKCmV4dGVybiB2
b2lkIFhybVN0cmluZ1RvQmluZGluZ1F1YXJrTGlzdCgKCiAgICBjb25zdCAgY2hhcioJICwKICAg
IFhybUJpbmRpbmdMaXN0CSAsCiAgICBYcm1RdWFya0xpc3QJIAoKKTsKCiAKCgoKCgp0eXBlZGVm
IFhybVF1YXJrICAgICBYcm1OYW1lOwp0eXBlZGVmIFhybVF1YXJrTGlzdCBYcm1OYW1lTGlzdDsK
CgoKCnR5cGVkZWYgWHJtUXVhcmsgICAgIFhybUNsYXNzOwp0eXBlZGVmIFhybVF1YXJrTGlzdCBY
cm1DbGFzc0xpc3Q7CgoKCgoKCiAKCgoKCgp0eXBlZGVmIFhybVF1YXJrICAgICBYcm1SZXByZXNl
bnRhdGlvbjsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgdW5zaWduZWQgaW50ICAgIHNpemU7CiAg
ICBYUG9pbnRlcgkgICAgYWRkcjsKfSBYcm1WYWx1ZSwgKlhybVZhbHVlUHRyOwoKCiAKCgoKCgp0
eXBlZGVmIHN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyAqWHJtSGFzaEJ1Y2tldDsKdHlwZWRlZiBY
cm1IYXNoQnVja2V0ICpYcm1IYXNoVGFibGU7CnR5cGVkZWYgWHJtSGFzaFRhYmxlIFhybVNlYXJj
aExpc3RbXTsKdHlwZWRlZiBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMgKlhybURhdGFiYXNlOwoK
CmV4dGVybiB2b2lkIFhybURlc3Ryb3lEYXRhYmFzZSgKCiAgICBYcm1EYXRhYmFzZQkJICAgICAK
Cik7CgpleHRlcm4gdm9pZCBYcm1RUHV0UmVzb3VyY2UoCgogICAgWHJtRGF0YWJhc2UqCSAsCiAg
ICBYcm1CaW5kaW5nTGlzdAkgLAogICAgWHJtUXVhcmtMaXN0CSAsCiAgICBYcm1SZXByZXNlbnRh
dGlvbgkgLAogICAgWHJtVmFsdWUqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHJtUHV0UmVzb3VyY2Uo
CgogICAgWHJtRGF0YWJhc2UqCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGNvbnN0ICBjaGFy
KgkgLAogICAgWHJtVmFsdWUqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHJtUVB1dFN0cmluZ1Jlc291
cmNlKAoKICAgIFhybURhdGFiYXNlKgkgLAogICAgWHJtQmluZGluZ0xpc3QgICAgICAgLAogICAg
WHJtUXVhcmtMaXN0CSAsCiAgICBjb25zdCAgY2hhcioJIAoKKTsKCmV4dGVybiB2b2lkIFhybVB1
dFN0cmluZ1Jlc291cmNlKAoKICAgIFhybURhdGFiYXNlKgkgLAogICAgY29uc3QgIGNoYXIqCSAs
CiAgICBjb25zdCAgY2hhcioJIAoKKTsKCmV4dGVybiB2b2lkIFhybVB1dExpbmVSZXNvdXJjZSgK
CiAgICBYcm1EYXRhYmFzZSoJICwKICAgIGNvbnN0ICBjaGFyKgkgCgopOwoKZXh0ZXJuIGludCAg
WHJtUUdldFJlc291cmNlKAoKICAgIFhybURhdGFiYXNlCQkgLAogICAgWHJtTmFtZUxpc3QJCSAs
CiAgICBYcm1DbGFzc0xpc3QJICwKICAgIFhybVJlcHJlc2VudGF0aW9uKgkgLAogICAgWHJtVmFs
dWUqCQkgCgopOwoKZXh0ZXJuIGludCAgWHJtR2V0UmVzb3VyY2UoCgogICAgWHJtRGF0YWJhc2UJ
CSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgY2hhcioqCQkg
LAogICAgWHJtVmFsdWUqCQkgCgopOwoKZXh0ZXJuIGludCAgWHJtUUdldFNlYXJjaExpc3QoCgog
ICAgWHJtRGF0YWJhc2UJCSAsCiAgICBYcm1OYW1lTGlzdAkJICwKICAgIFhybUNsYXNzTGlzdAkg
LAogICAgWHJtU2VhcmNoTGlzdAkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgIFhybVFH
ZXRTZWFyY2hSZXNvdXJjZSgKCiAgICBYcm1TZWFyY2hMaXN0CSAsCiAgICBYcm1OYW1lCQkgLAog
ICAgWHJtQ2xhc3MJCSAsCiAgICBYcm1SZXByZXNlbnRhdGlvbioJICwKICAgIFhybVZhbHVlKgkJ
IAoKKTsKCiAKCgoKCgpleHRlcm4gdm9pZCBYcm1TZXREYXRhYmFzZSgKCiAgICBEaXNwbGF5KgkJ
ICwKICAgIFhybURhdGFiYXNlCQkgCgopOwoKZXh0ZXJuIFhybURhdGFiYXNlIFhybUdldERhdGFi
YXNlKAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJuIFhybURhdGFiYXNlIFhybUdldEZpbGVE
YXRhYmFzZSgKCiAgICBjb25zdCAgY2hhcioJIAoKKTsKCmV4dGVybiBpbnQgIFhybUNvbWJpbmVG
aWxlRGF0YWJhc2UoCgogICAgY29uc3QgIGNoYXIqIAkgLAogICAgWHJtRGF0YWJhc2UqCSAsCiAg
ICBpbnQgCQkgCgopOwoKZXh0ZXJuIFhybURhdGFiYXNlIFhybUdldFN0cmluZ0RhdGFiYXNlKAoK
ICAgIGNvbnN0ICBjaGFyKgkgICAgCgopOwoKZXh0ZXJuIHZvaWQgWHJtUHV0RmlsZURhdGFiYXNl
KAoKICAgIFhybURhdGFiYXNlCQkgLAogICAgY29uc3QgIGNoYXIqCSAKCik7CgpleHRlcm4gdm9p
ZCBYcm1NZXJnZURhdGFiYXNlcygKCiAgICBYcm1EYXRhYmFzZQkJICwKICAgIFhybURhdGFiYXNl
KgkgCgopOwoKZXh0ZXJuIHZvaWQgWHJtQ29tYmluZURhdGFiYXNlKAoKICAgIFhybURhdGFiYXNl
CQkgLAogICAgWHJtRGF0YWJhc2UqCSAsCiAgICBpbnQgCQkgCgopOwoKCgoKZXh0ZXJuIGludCAg
WHJtRW51bWVyYXRlRGF0YWJhc2UoCgogICAgWHJtRGF0YWJhc2UJCSAsCiAgICBYcm1OYW1lTGlz
dAkJICwKICAgIFhybUNsYXNzTGlzdAkgLAogICAgaW50CQkJICwKICAgIGludCAgKCopKAoKCSAg
ICAgWHJtRGF0YWJhc2UqCSAsCgkgICAgIFhybUJpbmRpbmdMaXN0CSAsCgkgICAgIFhybVF1YXJr
TGlzdAkgLAoJICAgICBYcm1SZXByZXNlbnRhdGlvbioJICwKCSAgICAgWHJtVmFsdWUqCQkgLAoJ
ICAgICBYUG9pbnRlcgkJIAoKCSAgICAgKQkJICwKICAgIFhQb2ludGVyCQkgCgopOwoKZXh0ZXJu
IGNoYXIgKlhybUxvY2FsZU9mRGF0YWJhc2UoCgogICAgWHJtRGF0YWJhc2UgCSAKCik7CgoKIAoK
CgoKCnR5cGVkZWYgZW51bSB7CiAgICBYcm1vcHRpb25Ob0FyZywJIAogICAgWHJtb3B0aW9uSXNB
cmcsICAgICAgCiAgICBYcm1vcHRpb25TdGlja3lBcmcsICAKICAgIFhybW9wdGlvblNlcEFyZywg
ICAgIAogICAgWHJtb3B0aW9uUmVzQXJnLAkgCiAgICBYcm1vcHRpb25Ta2lwQXJnLCAgICAKICAg
IFhybW9wdGlvblNraXBMaW5lLCAgIAogICAgWHJtb3B0aW9uU2tpcE5BcmdzCSAKCn0gWHJtT3B0
aW9uS2luZDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIJICAgICpvcHRpb247CSAgICAgCiAg
ICBjaGFyCSAgICAqc3BlY2lmaWVyOyAgICAgIAogICAgWHJtT3B0aW9uS2luZCAgIGFyZ0tpbmQ7
CSAgICAgCiAgICBYUG9pbnRlcgkgICAgdmFsdWU7CSAgICAgCn0gWHJtT3B0aW9uRGVzY1JlYywg
KlhybU9wdGlvbkRlc2NMaXN0OwoKCmV4dGVybiB2b2lkIFhybVBhcnNlQ29tbWFuZCgKCiAgICBY
cm1EYXRhYmFzZSoJICwKICAgIFhybU9wdGlvbkRlc2NMaXN0CSAsCiAgICBpbnQJCQkgLAogICAg
Y29uc3QgIGNoYXIqCSAsCiAgICBpbnQqCQkgLAogICAgY2hhcioqCQkgCQkgICAgIAoKKTsKCiAK
CgogCiMgNTkgIi91c3IvaW5jbHVkZS9YMTEvSW50cmluc2ljLmgiIDIgMwoKCgoKCgoKCgoKCgoK
CgoKCgoKdHlwZWRlZiBjaGFyICpTdHJpbmc7CgoKCiAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9XaWRnZXRSZWMgKldpZGdldDsKdHlw
ZWRlZiBXaWRnZXQgKldpZGdldExpc3Q7CnR5cGVkZWYgc3RydWN0IF9XaWRnZXRDbGFzc1JlYyAq
V2lkZ2V0Q2xhc3M7CnR5cGVkZWYgc3RydWN0IF9Db21wb3NpdGVSZWMgKkNvbXBvc2l0ZVdpZGdl
dDsKdHlwZWRlZiBzdHJ1Y3QgX1h0QWN0aW9uc1JlYyAqWHRBY3Rpb25MaXN0Owp0eXBlZGVmIHN0
cnVjdCBfWHRFdmVudFJlYyAqWHRFdmVudFRhYmxlOwoKdHlwZWRlZiBzdHJ1Y3QgX1h0QXBwU3Ry
dWN0ICpYdEFwcENvbnRleHQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZwlYdFZhbHVlTWFzazsKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nCVh0SW50ZXJ2YWxJZDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nCVh0
SW5wdXRJZDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nCVh0V29ya1Byb2NJZDsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nCVh0U2lnbmFsSWQ7CnR5cGVkZWYgdW5zaWduZWQgaW50CVh0R2VvbWV0cnlNYXNr
Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcJWHRHQ01hc2s7ICAgIAp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcJUGl4ZWw7CSAgICAgCnR5cGVkZWYgaW50CQlYdENhY2hlVHlwZTsKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGNoYXIJCUJvb2xlYW47CnR5cGVkZWYgbG9uZwkJWHRB
cmdWYWw7CnR5cGVkZWYgdW5zaWduZWQgY2hhcglYdEVudW07CgoKdHlwZWRlZiB1bnNpZ25lZCBp
bnQJQ2FyZGluYWw7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQJRGltZW5zaW9uOyAgIAp0eXBlZGVm
IHNob3J0CQlQb3NpdGlvbjsgICAgCgoKdHlwZWRlZiB2b2lkKgkJWHRQb2ludGVyOwoKCgoKIAog
CnR5cGVkZWYgWHRQb2ludGVyCU9wYXF1ZTsKCiMgMSAiL3Vzci9pbmNsdWRlL1gxMS9Db3JlLmgi
IDEgMwogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1dpZGdldENsYXNzUmVjICpDb3JlV2lkZ2V0Q2xhc3M7CnR5
cGVkZWYgc3RydWN0IF9XaWRnZXRSZWMgKkNvcmVXaWRnZXQ7CmV4dGVybiAgV2lkZ2V0Q2xhc3Mg
Y29yZVdpZGdldENsYXNzOwoKCmV4dGVybiAgV2lkZ2V0Q2xhc3Mgd2lkZ2V0Q2xhc3M7CgoKCgog
CiMgMTkyICIvdXNyL2luY2x1ZGUvWDExL0ludHJpbnNpYy5oIiAyIDMKCiMgMSAiL3Vzci9pbmNs
dWRlL1gxMS9Db21wb3NpdGUuaCIgMSAzCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfQ29tcG9zaXRlQ2xhc3NSZWMg
KkNvbXBvc2l0ZVdpZGdldENsYXNzOwoKdHlwZWRlZiBDYXJkaW5hbCAoKlh0T3JkZXJQcm9jKSgK
CiAgICBXaWRnZXQgCSAKCik7CgogCgpleHRlcm4gdm9pZCBYdE1hbmFnZUNoaWxkcmVuKAoKICAg
IFdpZGdldExpc3QgCQkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRNYW5h
Z2VDaGlsZCgKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRVbm1hbmFnZUNoaWxk
cmVuKAoKICAgIFdpZGdldExpc3QgCQkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIHZv
aWQgWHRVbm1hbmFnZUNoaWxkKAoKICAgIFdpZGdldCAJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpY
dERvQ2hhbmdlUHJvYykoCgogICAgV2lkZ2V0CQkgLAogICAgV2lkZ2V0TGlzdAkJICwKICAgIENh
cmRpbmFsICoJCSAsCiAgICBXaWRnZXRMaXN0CQkgLAogICAgQ2FyZGluYWwgKgkJICwKICAgIFh0
UG9pbnRlcgkJIAoKKTsKCmV4dGVybiB2b2lkIFh0Q2hhbmdlTWFuYWdlZFNldCgKCiAgICBXaWRn
ZXRMaXN0CQkgLAogICAgQ2FyZGluYWwJCSAsCiAgICBYdERvQ2hhbmdlUHJvYwkgLAogICAgWHRQ
b2ludGVyCQkgLAogICAgV2lkZ2V0TGlzdAkJICwKICAgIENhcmRpbmFsCQkgCgopOwoKIAoKCmV4
dGVybiAgV2lkZ2V0Q2xhc3MgY29tcG9zaXRlV2lkZ2V0Q2xhc3M7CgoKCiAKIyAxOTMgIi91c3Iv
aW5jbHVkZS9YMTEvSW50cmluc2ljLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvWDExL0NvbnN0
cmFpbnQuaCIgMSAzCiAKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0NvbnN0cmFpbnRDbGFzc1JlYyAqQ29uc3RyYWlu
dFdpZGdldENsYXNzOwoKCmV4dGVybiAgV2lkZ2V0Q2xhc3MgY29uc3RyYWludFdpZGdldENsYXNz
OwoKCgogCiMgMTk0ICIvdXNyL2luY2x1ZGUvWDExL0ludHJpbnNpYy5oIiAyIDMKCiMgMSAiL3Vz
ci9pbmNsdWRlL1gxMS9PYmplY3QuaCIgMSAzCiAKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX09iamVjdFJlYyAqT2Jq
ZWN0Owp0eXBlZGVmIHN0cnVjdCBfT2JqZWN0Q2xhc3NSZWMgKk9iamVjdENsYXNzOwoKCmV4dGVy
biAgV2lkZ2V0Q2xhc3Mgb2JqZWN0Q2xhc3M7CgoKIAojIDE5NSAiL3Vzci9pbmNsdWRlL1gxMS9J
bnRyaW5zaWMuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9YMTEvUmVjdE9iai5oIiAxIDMKIAog
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBl
ZGVmIHN0cnVjdCBfUmVjdE9ialJlYyAqUmVjdE9iajsKdHlwZWRlZiBzdHJ1Y3QgX1JlY3RPYmpD
bGFzc1JlYyAqUmVjdE9iakNsYXNzOwoKCmV4dGVybiAgV2lkZ2V0Q2xhc3MgcmVjdE9iakNsYXNz
OwoKCiAKIyAxOTYgIi91c3IvaW5jbHVkZS9YMTEvSW50cmluc2ljLmgiIDIgMwoKCnR5cGVkZWYg
c3RydWN0IF9UcmFuc2xhdGlvbkRhdGEgKlh0VHJhbnNsYXRpb25zOwp0eXBlZGVmIHN0cnVjdCBf
VHJhbnNsYXRpb25EYXRhICpYdEFjY2VsZXJhdG9yczsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgTW9k
aWZpZXJzOwoKdHlwZWRlZiB2b2lkICgqWHRBY3Rpb25Qcm9jKSgKCiAgICBXaWRnZXQgCQkgLAog
ICAgWEV2ZW50KgkJICwKICAgIFN0cmluZyoJCSAsCiAgICBDYXJkaW5hbCoJCSAKCik7Cgp0eXBl
ZGVmIFh0QWN0aW9uUHJvYyogWHRCb3VuZEFjdGlvbnM7Cgp0eXBlZGVmIHN0cnVjdCBfWHRBY3Rp
b25zUmVjewogICAgU3RyaW5nCSBzdHJpbmc7CiAgICBYdEFjdGlvblByb2MgcHJvYzsKfSBYdEFj
dGlvbnNSZWM7Cgp0eXBlZGVmIGVudW0gewogCiAKICAgIFh0QWRkcmVzcywJCSAKICAgIFh0QmFz
ZU9mZnNldCwJIAogICAgWHRJbW1lZGlhdGUsCSAKICAgIFh0UmVzb3VyY2VTdHJpbmcsCSAKICAg
IFh0UmVzb3VyY2VRdWFyaywJIAogICAgWHRXaWRnZXRCYXNlT2Zmc2V0LAkgCiAgICBYdFByb2Nl
ZHVyZUFyZwkgCn0gWHRBZGRyZXNzTW9kZTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFh0QWRkcmVz
c01vZGUgICBhZGRyZXNzX21vZGU7CiAgICBYdFBvaW50ZXIJICAgIGFkZHJlc3NfaWQ7CiAgICBD
YXJkaW5hbAkgICAgc2l6ZTsKfSBYdENvbnZlcnRBcmdSZWMsICpYdENvbnZlcnRBcmdMaXN0OwoK
dHlwZWRlZiB2b2lkICgqWHRDb252ZXJ0QXJnUHJvYykoCgogICAgV2lkZ2V0IAkJICwKICAgIENh
cmRpbmFsKgkJICwKICAgIFhybVZhbHVlKgkJIAoKKTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFh0
R2VvbWV0cnlNYXNrIHJlcXVlc3RfbW9kZTsKICAgIFBvc2l0aW9uIHgsIHk7CiAgICBEaW1lbnNp
b24gd2lkdGgsIGhlaWdodCwgYm9yZGVyX3dpZHRoOwogICAgV2lkZ2V0IHNpYmxpbmc7CiAgICBp
bnQgc3RhY2tfbW9kZTsgICAgCn0gWHRXaWRnZXRHZW9tZXRyeTsKCiAKCgogCgoKdHlwZWRlZiB2
b2lkICgqWHRDb252ZXJ0ZXIpKCAgCgogICAgWHJtVmFsdWUqCQkgLAogICAgQ2FyZGluYWwqCQkg
LAogICAgWHJtVmFsdWUqCQkgLAogICAgWHJtVmFsdWUqCQkgCgopOwoKdHlwZWRlZiBCb29sZWFu
ICgqWHRUeXBlQ29udmVydGVyKSgKCiAgICBEaXNwbGF5KgkJICwKICAgIFhybVZhbHVlKgkJICwK
ICAgIENhcmRpbmFsKgkJICwKICAgIFhybVZhbHVlKgkJICwKICAgIFhybVZhbHVlKgkJICwKICAg
IFh0UG9pbnRlcioJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpYdERlc3RydWN0b3IpKAoKICAgIFh0
QXBwQ29udGV4dAkgLAogICAgWHJtVmFsdWUqCQkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFhy
bVZhbHVlKgkJICwKICAgIENhcmRpbmFsKgkJIAoKKTsKCnR5cGVkZWYgT3BhcXVlIFh0Q2FjaGVS
ZWY7Cgp0eXBlZGVmIE9wYXF1ZSBYdEFjdGlvbkhvb2tJZDsKCnR5cGVkZWYgdm9pZCAoKlh0QWN0
aW9uSG9va1Byb2MpKAoKICAgIFdpZGdldAkJICwKICAgIFh0UG9pbnRlcgkJICwKICAgIFN0cmlu
ZwkJICwKICAgIFhFdmVudCoJCSAsCiAgICBTdHJpbmcqCQkgLAogICAgQ2FyZGluYWwqCQkgCgop
OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFh0QmxvY2tIb29rSWQ7Cgp0eXBlZGVmIHZvaWQgKCpY
dEJsb2NrSG9va1Byb2MpKAoKICAgIFh0UG9pbnRlcgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0
S2V5UHJvYykoCgogICAgRGlzcGxheSoJCSAsCiAgICB1bnNpZ25lZCBpbnQgIAkJICwKICAgIE1v
ZGlmaWVycwkJICwKICAgIE1vZGlmaWVycyoJCSAsCiAgICBLZXlTeW0qCQkgCgopOwoKdHlwZWRl
ZiB2b2lkICgqWHRDYXNlUHJvYykoCgogICAgRGlzcGxheSoJCSAsCiAgICBLZXlTeW0JCSAsCiAg
ICBLZXlTeW0qCQkgLAogICAgS2V5U3ltKgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0RXZlbnRI
YW5kbGVyKSgKCiAgICBXaWRnZXQgCQkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFhFdmVudCoJ
CSAsCiAgICBCb29sZWFuKgkJIAoKKTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEV2ZW50TWFzazsK
CnR5cGVkZWYgZW51bSB7WHRMaXN0SGVhZCwgWHRMaXN0VGFpbCB9IFh0TGlzdFBvc2l0aW9uOwoK
dHlwZWRlZiB1bnNpZ25lZCBsb25nCVh0SW5wdXRNYXNrOwoKCgoKCnR5cGVkZWYgdm9pZCAoKlh0
VGltZXJDYWxsYmFja1Byb2MpKAoKICAgIFh0UG9pbnRlciAJCSAsCiAgICBYdEludGVydmFsSWQq
CSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpYdElucHV0Q2FsbGJhY2tQcm9jKSgKCiAgICBYdFBvaW50
ZXIgCQkgLAogICAgaW50KgkJICwKICAgIFh0SW5wdXRJZCoJCSAKCik7Cgp0eXBlZGVmIHZvaWQg
KCpYdFNpZ25hbENhbGxiYWNrUHJvYykoCgogICAgWHRQb2ludGVyCQkgLAogICAgWHRTaWduYWxJ
ZCoJCSAKCik7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBTdHJpbmcJbmFtZTsKICAgIFh0QXJnVmFs
CXZhbHVlOwp9IEFyZywgKkFyZ0xpc3Q7Cgp0eXBlZGVmIFh0UG9pbnRlcglYdFZhckFyZ3NMaXN0
OwoKdHlwZWRlZiB2b2lkICgqWHRDYWxsYmFja1Byb2MpKAoKICAgIFdpZGdldCAJCSAsCiAgICBY
dFBvaW50ZXIgCQkgLAkgCiAgICBYdFBvaW50ZXIgCQkgCSAKCik7Cgp0eXBlZGVmIHN0cnVjdCBf
WHRDYWxsYmFja1JlYyB7CiAgICBYdENhbGxiYWNrUHJvYyAgY2FsbGJhY2s7CiAgICBYdFBvaW50
ZXIJICAgIGNsb3N1cmU7Cn0gWHRDYWxsYmFja1JlYywgKlh0Q2FsbGJhY2tMaXN0OwoKdHlwZWRl
ZiBlbnVtIHsKCVh0Q2FsbGJhY2tOb0xpc3QsCglYdENhbGxiYWNrSGFzTm9uZSwKCVh0Q2FsbGJh
Y2tIYXNTb21lCn0gWHRDYWxsYmFja1N0YXR1czsKCnR5cGVkZWYgZW51bSAgewogICAgWHRHZW9t
ZXRyeVllcywJICAgCiAgICBYdEdlb21ldHJ5Tm8sCSAgIAogICAgWHRHZW9tZXRyeUFsbW9zdCwJ
ICAgCiAgICBYdEdlb21ldHJ5RG9uZQkgICAKfSBYdEdlb21ldHJ5UmVzdWx0OwoKdHlwZWRlZiBl
bnVtIHtYdEdyYWJOb25lLCBYdEdyYWJOb25leGNsdXNpdmUsIFh0R3JhYkV4Y2x1c2l2ZX0gWHRH
cmFiS2luZDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFdpZGdldCAgc2hlbGxfd2lkZ2V0OwogICAg
V2lkZ2V0ICBlbmFibGVfd2lkZ2V0Owp9IFh0UG9wZG93bklEUmVjLCAqWHRQb3Bkb3duSUQ7Cgp0
eXBlZGVmIHN0cnVjdCBfWHRSZXNvdXJjZSB7CiAgICBTdHJpbmcJcmVzb3VyY2VfbmFtZTsJIAog
ICAgU3RyaW5nCXJlc291cmNlX2NsYXNzOwkgCiAgICBTdHJpbmcJcmVzb3VyY2VfdHlwZTsJIAog
ICAgQ2FyZGluYWwJcmVzb3VyY2Vfc2l6ZTsJIAogICAgQ2FyZGluYWwJcmVzb3VyY2Vfb2Zmc2V0
OyAKICAgIFN0cmluZwlkZWZhdWx0X3R5cGU7CSAKICAgIFh0UG9pbnRlcglkZWZhdWx0X2FkZHI7
CSAKfSBYdFJlc291cmNlLCAqWHRSZXNvdXJjZUxpc3Q7Cgp0eXBlZGVmIHZvaWQgKCpYdFJlc291
cmNlRGVmYXVsdFByb2MpKAoKICAgIFdpZGdldAkgLAogICAgaW50CQkgLAogICAgWHJtVmFsdWUq
CSAKCik7Cgp0eXBlZGVmIFN0cmluZyAoKlh0TGFuZ3VhZ2VQcm9jKSgKCiAgICBEaXNwbGF5Kgkg
LAogICAgU3RyaW5nCSAsCiAgICBYdFBvaW50ZXIJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0RXJy
b3JNc2dIYW5kbGVyKSgKCiAgICBTdHJpbmcgCQkgLAogICAgU3RyaW5nCQkgLAogICAgU3RyaW5n
CQkgLAogICAgU3RyaW5nCQkgLAogICAgU3RyaW5nKgkJICwKICAgIENhcmRpbmFsKgkJIAoKKTsK
CnR5cGVkZWYgdm9pZCAoKlh0RXJyb3JIYW5kbGVyKSgKCiAgU3RyaW5nCQkgCgopOwoKdHlwZWRl
ZiB2b2lkICgqWHRDcmVhdGVQb3B1cENoaWxkUHJvYykoCgogICAgV2lkZ2V0CSAKCik7Cgp0eXBl
ZGVmIEJvb2xlYW4gKCpYdFdvcmtQcm9jKSgKCiAgICBYdFBvaW50ZXIgCQkgCSAKCik7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBjaGFyIG1hdGNoOwogICAgU3RyaW5nIHN1YnN0aXR1dGlvbjsKfSBT
dWJzdGl0dXRpb25SZWMsICpTdWJzdGl0dXRpb247Cgp0eXBlZGVmIEJvb2xlYW4gKCpYdEZpbGVQ
cmVkaWNhdGUpKAoKICAgU3RyaW5nICAKCik7Cgp0eXBlZGVmIFh0UG9pbnRlciBYdFJlcXVlc3RJ
ZDsKCnR5cGVkZWYgQm9vbGVhbiAoKlh0Q29udmVydFNlbGVjdGlvblByb2MpKAoKICAgIFdpZGdl
dCAJCSAsCiAgICBBdG9tKgkJICwKICAgIEF0b20qCQkgLAogICAgQXRvbSoJCSAsCiAgICBYdFBv
aW50ZXIqCQkgLAogICAgdW5zaWduZWQgbG9uZyoJICwKICAgIGludCoJCSAKCik7Cgp0eXBlZGVm
IHZvaWQgKCpYdExvc2VTZWxlY3Rpb25Qcm9jKSgKCiAgICBXaWRnZXQgCQkgLAogICAgQXRvbSoJ
CSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpYdFNlbGVjdGlvbkRvbmVQcm9jKSgKCiAgICBXaWRnZXQg
CQkgLAogICAgQXRvbSoJCSAsCiAgICBBdG9tKgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0U2Vs
ZWN0aW9uQ2FsbGJhY2tQcm9jKSgKCiAgICBXaWRnZXQgCQkgLAogICAgWHRQb2ludGVyIAkJICwK
ICAgIEF0b20qCQkgLAogICAgQXRvbSoJCSAsCiAgICBYdFBvaW50ZXIgCQkgLAogICAgdW5zaWdu
ZWQgbG9uZyoJICwKICAgIGludCoJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpYdExvc2VTZWxlY3Rp
b25JbmNyUHJvYykoCgogICAgV2lkZ2V0IAkJICwKICAgIEF0b20qCQkgLAogICAgWHRQb2ludGVy
IAkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0U2VsZWN0aW9uRG9uZUluY3JQcm9jKSgKCiAgICBX
aWRnZXQgCQkgLAogICAgQXRvbSoJCSAsCiAgICBBdG9tKgkJICwKICAgIFh0UmVxdWVzdElkKgkg
LAogICAgWHRQb2ludGVyIAkJIAoKKTsKCnR5cGVkZWYgQm9vbGVhbiAoKlh0Q29udmVydFNlbGVj
dGlvbkluY3JQcm9jKSgKCiAgICBXaWRnZXQgCQkgLAogICAgQXRvbSoJCSAsCiAgICBBdG9tKgkJ
ICwKICAgIEF0b20qCQkgLAogICAgWHRQb2ludGVyKgkJICwKICAgIHVuc2lnbmVkIGxvbmcqCSAs
CiAgICBpbnQqCQkgLAogICAgdW5zaWduZWQgbG9uZyoJICwKICAgIFh0UG9pbnRlciAJCSAsCiAg
ICBYdFJlcXVlc3RJZCoJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0Q2FuY2VsQ29udmVydFNlbGVj
dGlvblByb2MpKAoKICAgIFdpZGdldCAJCSAsCiAgICBBdG9tKgkJICwKICAgIEF0b20qCQkgLAog
ICAgWHRSZXF1ZXN0SWQqCSAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKdHlwZWRlZiBCb29sZWFu
ICgqWHRFdmVudERpc3BhdGNoUHJvYykoCgogICAgWEV2ZW50KgkJIAoKKTsKCnR5cGVkZWYgdm9p
ZCAoKlh0RXh0ZW5zaW9uU2VsZWN0UHJvYykoCgogICAgV2lkZ2V0CQkgLAogICAgaW50KgkJICwK
ICAgIFh0UG9pbnRlcioJCSAsCiAgICBpbnQJCQkgLAogICAgWHRQb2ludGVyCQkgCgopOwoKIAoK
CgoKCiAKCmV4dGVybiBCb29sZWFuIFh0Q29udmVydEFuZFN0b3JlKAoKICAgIFdpZGdldCAJCSAs
CiAgICBjb25zdCAgY2hhciogIAkgLAogICAgWHJtVmFsdWUqCQkgLAogICAgY29uc3QgIGNoYXIq
ICAJICwKICAgIFhybVZhbHVlKgkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q2FsbENvbnZlcnRl
cigKCiAgICBEaXNwbGF5KgkJICwKICAgIFh0VHlwZUNvbnZlcnRlciAJICwKICAgIFhybVZhbHVl
UHRyIAkgLAogICAgQ2FyZGluYWwgCQkgLAogICAgWHJtVmFsdWVQdHIgCSAsCiAgICBYcm1WYWx1
ZSoJCSAsCiAgICBYdENhY2hlUmVmKgkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0RGlzcGF0Y2hF
dmVudCgKCiAgICBYRXZlbnQqIAkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q2FsbEFjY2VwdEZv
Y3VzKAoKICAgIFdpZGdldCAJCSAsCiAgICBUaW1lKgkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0
UGVla0V2ZW50KCAgCgogICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0QXBwUGVl
a0V2ZW50KAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIFhFdmVudCoJCSAKCik7CgpleHRlcm4g
Qm9vbGVhbiBYdElzU3ViY2xhc3MoCgogICAgV2lkZ2V0IAkJICwKICAgIFdpZGdldENsYXNzIAkg
CgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRJc09iamVjdCgKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0
ZXJuIEJvb2xlYW4gX1h0Q2hlY2tTdWJjbGFzc0ZsYWcoICAKCiAgICBXaWRnZXQJCSAsCiAgICB1
bnNpZ25lZCBpbnQgCQkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gX1h0SXNTdWJjbGFzc09mKCAgCgog
ICAgV2lkZ2V0CQkgLAogICAgV2lkZ2V0Q2xhc3MJCSAsCiAgICBXaWRnZXRDbGFzcwkJICwKICAg
IHVuc2lnbmVkIGludCAJCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdElzTWFuYWdlZCgKCiAgICBX
aWRnZXQgCQkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRJc1JlYWxpemVkKAoKICAgIFdpZGdldCAJ
CSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdElzU2Vuc2l0aXZlKAoKICAgIFdpZGdldCAJCSAKCik7
CgpleHRlcm4gQm9vbGVhbiBYdE93blNlbGVjdGlvbigKCiAgICBXaWRnZXQgCQkgLAogICAgQXRv
bSAJCSAsCiAgICBUaW1lIAkJICwKICAgIFh0Q29udmVydFNlbGVjdGlvblByb2MgICwKICAgIFh0
TG9zZVNlbGVjdGlvblByb2MJICwKICAgIFh0U2VsZWN0aW9uRG9uZVByb2MgIAoKKTsKCmV4dGVy
biBCb29sZWFuIFh0T3duU2VsZWN0aW9uSW5jcmVtZW50YWwoCgogICAgV2lkZ2V0IAkJICwKICAg
IEF0b20gCQkgLAogICAgVGltZSAJCSAsCiAgICBYdENvbnZlcnRTZWxlY3Rpb25JbmNyUHJvYwkg
LAogICAgWHRMb3NlU2VsZWN0aW9uSW5jclByb2MJICwKICAgIFh0U2VsZWN0aW9uRG9uZUluY3JQ
cm9jCSAsCiAgICBYdENhbmNlbENvbnZlcnRTZWxlY3Rpb25Qcm9jICAsCiAgICBYdFBvaW50ZXIg
CQkgCgopOwoKZXh0ZXJuIFh0R2VvbWV0cnlSZXN1bHQgWHRNYWtlUmVzaXplUmVxdWVzdCgKCiAg
ICBXaWRnZXQgCQkgLAogICAgdW5zaWduZWQgaW50IAkgLAogICAgdW5zaWduZWQgaW50IAkgLAog
ICAgRGltZW5zaW9uKgkJICwKICAgIERpbWVuc2lvbioJCSAKCik7CgpleHRlcm4gdm9pZCBYdFRy
YW5zbGF0ZUNvb3JkcygKCiAgICBXaWRnZXQgCQkgLAogICAgaW50IAkJICwKICAgIGludCAJCSAs
CiAgICBQb3NpdGlvbioJCSAsCiAgICBQb3NpdGlvbioJCSAKCik7CgpleHRlcm4gS2V5U3ltKiBY
dEdldEtleXN5bVRhYmxlKAoKICAgIERpc3BsYXkqCQkgLAogICAgS2V5Q29kZSoJCSAsCiAgICBp
bnQqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRLZXlzeW1Ub0tleWNvZGVMaXN0KAoKICAgIERpc3Bs
YXkqCQkgLAogICAgS2V5U3ltIAkJICwKICAgIEtleUNvZGUqKgkJICwKICAgIENhcmRpbmFsKgkJ
IAoKKTsKCmV4dGVybiB2b2lkIFh0U3RyaW5nQ29udmVyc2lvbldhcm5pbmcoICAKCiAgICBjb25z
dCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciogCSAKCik7CgpleHRlcm4gdm9pZCBYdERpc3Bs
YXlTdHJpbmdDb252ZXJzaW9uV2FybmluZygKCiAgICBEaXNwbGF5KgkgCSAsCiAgICBjb25zdCAg
Y2hhciogCSAsCiAgICBjb25zdCAgY2hhciogCSAKCik7CgoKZXh0ZXJuICBYdENvbnZlcnRBcmdS
ZWMgY29uc3QgY29sb3JDb252ZXJ0QXJnc1tdOwpleHRlcm4gIFh0Q29udmVydEFyZ1JlYyBjb25z
dCBzY3JlZW5Db252ZXJ0QXJnW107CgoKCgoKZXh0ZXJuIHZvaWQgWHRBcHBBZGRDb252ZXJ0ZXIo
ICAKCiAgICBYdEFwcENvbnRleHQJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIGNvbnN0ICBj
aGFyKiAJICwKICAgIFh0Q29udmVydGVyIAkgLAogICAgWHRDb252ZXJ0QXJnTGlzdAkgLAogICAg
Q2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBZGRDb252ZXJ0ZXIoICAKCiAgICBjb25z
dCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAgWHRDb252ZXJ0ZXIgCSAsCiAg
ICBYdENvbnZlcnRBcmdMaXN0IAkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WHRTZXRUeXBlQ29udmVydGVyKAoKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBjb25zdCAgY2hh
ciogIAkgLAogICAgWHRUeXBlQ29udmVydGVyIAkgLAogICAgWHRDb252ZXJ0QXJnTGlzdCAJICwK
ICAgIENhcmRpbmFsIAkJICwKICAgIFh0Q2FjaGVUeXBlIAkgLAogICAgWHREZXN0cnVjdG9yIAkg
CgopOwoKZXh0ZXJuIHZvaWQgWHRBcHBTZXRUeXBlQ29udmVydGVyKAoKICAgIFh0QXBwQ29udGV4
dCAJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAgWHRU
eXBlQ29udmVydGVyIAkgLAogICAgWHRDb252ZXJ0QXJnTGlzdCAJICwKICAgIENhcmRpbmFsIAkJ
ICwKICAgIFh0Q2FjaGVUeXBlIAkgLAogICAgWHREZXN0cnVjdG9yIAkgCgopOwoKZXh0ZXJuIHZv
aWQgWHRDb252ZXJ0KCAgCgogICAgV2lkZ2V0IAkJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAg
ICBYcm1WYWx1ZSoJCSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAgWHJtVmFsdWUqCQkgCgop
OwoKZXh0ZXJuIHZvaWQgWHREaXJlY3RDb252ZXJ0KCAgCgogICAgWHRDb252ZXJ0ZXIgCSAsCiAg
ICBYcm1WYWx1ZVB0ciAJICwKICAgIENhcmRpbmFsIAkJICwKICAgIFhybVZhbHVlUHRyIAkgLAog
ICAgWHJtVmFsdWUqCQkgCgopOwoKIAoKCgoKCmV4dGVybiBYdFRyYW5zbGF0aW9ucyBYdFBhcnNl
VHJhbnNsYXRpb25UYWJsZSgKCiAgICBjb25zdCAgY2hhciogCSAKCik7CgpleHRlcm4gWHRBY2Nl
bGVyYXRvcnMgWHRQYXJzZUFjY2VsZXJhdG9yVGFibGUoCgogICAgY29uc3QgIGNoYXIqIAkgCgop
OwoKZXh0ZXJuIHZvaWQgWHRPdmVycmlkZVRyYW5zbGF0aW9ucygKCiAgICBXaWRnZXQgCQkgLAog
ICAgWHRUcmFuc2xhdGlvbnMgCSAKCik7CgpleHRlcm4gdm9pZCBYdEF1Z21lbnRUcmFuc2xhdGlv
bnMoCgogICAgV2lkZ2V0IAkJICwKICAgIFh0VHJhbnNsYXRpb25zIAkgCgopOwoKZXh0ZXJuIHZv
aWQgWHRJbnN0YWxsQWNjZWxlcmF0b3JzKAoKICAgIFdpZGdldCAJCSAsCiAgICBXaWRnZXQJCSAK
Cik7CgpleHRlcm4gdm9pZCBYdEluc3RhbGxBbGxBY2NlbGVyYXRvcnMoCgogICAgV2lkZ2V0IAkJ
ICwKICAgIFdpZGdldAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0VW5pbnN0YWxsVHJhbnNsYXRpb25z
KAoKICAgIFdpZGdldCAJCSAKCik7CgpleHRlcm4gdm9pZCBYdEFwcEFkZEFjdGlvbnMoCgogICAg
WHRBcHBDb250ZXh0IAkgLAogICAgWHRBY3Rpb25MaXN0IAkgLAogICAgQ2FyZGluYWwgCQkgCgop
OwoKZXh0ZXJuIHZvaWQgWHRBZGRBY3Rpb25zKCAgCgogICAgWHRBY3Rpb25MaXN0IAkgLAogICAg
Q2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIFh0QWN0aW9uSG9va0lkIFh0QXBwQWRkQWN0aW9uSG9v
aygKCiAgICBYdEFwcENvbnRleHQgCSAsCiAgICBYdEFjdGlvbkhvb2tQcm9jIAkgLAogICAgWHRQ
b2ludGVyIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0UmVtb3ZlQWN0aW9uSG9vaygKCiAgICBYdEFj
dGlvbkhvb2tJZCAJIAoKKTsKCmV4dGVybiB2b2lkIFh0R2V0QWN0aW9uTGlzdCgKCiAgICBXaWRn
ZXRDbGFzcwkJICwKICAgIFh0QWN0aW9uTGlzdCoJICwKICAgIENhcmRpbmFsKgkJIAoKKTsKCmV4
dGVybiB2b2lkIFh0Q2FsbEFjdGlvblByb2MoCgogICAgV2lkZ2V0CQkgLAogICAgY29uc3QgIGNo
YXIqIAkgLAogICAgWEV2ZW50KgkJICwKICAgIFN0cmluZyoJCSAsCiAgICBDYXJkaW5hbAkJIAoK
KTsKCmV4dGVybiB2b2lkIFh0UmVnaXN0ZXJHcmFiQWN0aW9uKAoKICAgIFh0QWN0aW9uUHJvYyAJ
ICwKICAgIGludCAgCQkgLAogICAgdW5zaWduZWQgaW50IAkgLAogICAgaW50CQkJICwKICAgIGlu
dAkgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRNdWx0aUNsaWNrVGltZSgKCiAgICBEaXNwbGF5
KgkJICwKICAgIGludCAJCSAKCik7CgpleHRlcm4gaW50IFh0R2V0TXVsdGlDbGlja1RpbWUoCgog
ICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gS2V5U3ltIFh0R2V0QWN0aW9uS2V5c3ltKAoKICAg
IFhFdmVudCoJCSAsCiAgICBNb2RpZmllcnMqCQkgCgopOwoKIAoKCgoKCmV4dGVybiB2b2lkIFh0
VHJhbnNsYXRlS2V5Y29kZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIHVuc2lnbmVkIGludCAgCQkg
LAogICAgTW9kaWZpZXJzIAkJICwKICAgIE1vZGlmaWVycyoJCSAsCiAgICBLZXlTeW0qCQkgCgop
OwoKZXh0ZXJuIHZvaWQgWHRUcmFuc2xhdGVLZXkoCgogICAgRGlzcGxheSoJCSAsCiAgICB1bnNp
Z25lZCBpbnQgCQkgLAogICAgTW9kaWZpZXJzCQkgLAogICAgTW9kaWZpZXJzKgkJICwKICAgIEtl
eVN5bSoJCSAKCik7CgpleHRlcm4gdm9pZCBYdFNldEtleVRyYW5zbGF0b3IoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBYdEtleVByb2MgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRSZWdpc3RlckNhc2VD
b252ZXJ0ZXIoCgogICAgRGlzcGxheSoJCSAsCiAgICBYdENhc2VQcm9jIAkJICwKICAgIEtleVN5
bSAJCSAsCiAgICBLZXlTeW0gCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRDb252ZXJ0Q2FzZSgKCiAg
ICBEaXNwbGF5KgkJICwKICAgIEtleVN5bSAJCSAsCiAgICBLZXlTeW0qCQkgLAogICAgS2V5U3lt
KgkJIAoKKTsKCiAKCgoKCgogCgoKCgpleHRlcm4gdm9pZCBYdEFkZEV2ZW50SGFuZGxlcigKCiAg
ICBXaWRnZXQgCQkgLAogICAgRXZlbnRNYXNrIAkJICwKICAgIGludCAgCQkgLAogICAgWHRFdmVu
dEhhbmRsZXIgCSAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRSZW1vdmVF
dmVudEhhbmRsZXIoCgogICAgV2lkZ2V0IAkJICwKICAgIEV2ZW50TWFzayAJCSAsCiAgICBpbnQg
IAkJICwKICAgIFh0RXZlbnRIYW5kbGVyIAkgLAogICAgWHRQb2ludGVyIAkJIAoKKTsKCmV4dGVy
biB2b2lkIFh0QWRkUmF3RXZlbnRIYW5kbGVyKAoKICAgIFdpZGdldCAJCSAsCiAgICBFdmVudE1h
c2sgCQkgLAogICAgaW50ICAJCSAsCiAgICBYdEV2ZW50SGFuZGxlciAJICwKICAgIFh0UG9pbnRl
ciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFJlbW92ZVJhd0V2ZW50SGFuZGxlcigKCiAgICBXaWRn
ZXQgCQkgLAogICAgRXZlbnRNYXNrIAkJICwKICAgIGludCAgCQkgLAogICAgWHRFdmVudEhhbmRs
ZXIgCSAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRJbnNlcnRFdmVudEhh
bmRsZXIoCgogICAgV2lkZ2V0IAkJICwKICAgIEV2ZW50TWFzayAJCSAsCiAgICBpbnQgIAkJICwK
ICAgIFh0RXZlbnRIYW5kbGVyIAkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFh0TGlzdFBvc2l0
aW9uIAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRJbnNlcnRSYXdFdmVudEhhbmRsZXIoCgogICAgV2lk
Z2V0IAkJICwKICAgIEV2ZW50TWFzayAJCSAsCiAgICBpbnQgIAkJICwKICAgIFh0RXZlbnRIYW5k
bGVyIAkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFh0TGlzdFBvc2l0aW9uIAkgCgopOwoKZXh0
ZXJuIFh0RXZlbnREaXNwYXRjaFByb2MgWHRTZXRFdmVudERpc3BhdGNoZXIoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBpbnQJCQkgLAogICAgWHRFdmVudERpc3BhdGNoUHJvYwkgCgopOwoKZXh0ZXJu
IEJvb2xlYW4gWHREaXNwYXRjaEV2ZW50VG9XaWRnZXQoCgogICAgV2lkZ2V0CQkgLAogICAgWEV2
ZW50KgkJIAoKKTsKCmV4dGVybiB2b2lkIFh0SW5zZXJ0RXZlbnRUeXBlSGFuZGxlcigKCiAgICBX
aWRnZXQJCSAsCiAgICBpbnQJCQkgLAogICAgWHRQb2ludGVyCQkgLAogICAgWHRFdmVudEhhbmRs
ZXIJICwKICAgIFh0UG9pbnRlcgkJICwKICAgIFh0TGlzdFBvc2l0aW9uCSAKCik7CgpleHRlcm4g
dm9pZCBYdFJlbW92ZUV2ZW50VHlwZUhhbmRsZXIoCgogICAgV2lkZ2V0CQkgLAogICAgaW50CQkJ
ICwKICAgIFh0UG9pbnRlcgkJICwKICAgIFh0RXZlbnRIYW5kbGVyCSAsCiAgICBYdFBvaW50ZXIJ
CSAKCik7CgpleHRlcm4gRXZlbnRNYXNrIFh0QnVpbGRFdmVudE1hc2soCgogICAgV2lkZ2V0IAkJ
IAoKKTsKCmV4dGVybiB2b2lkIFh0UmVnaXN0ZXJFeHRlbnNpb25TZWxlY3RvcigKCiAgICBEaXNw
bGF5KgkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgWHRFeHRlbnNpb25TZWxlY3RQ
cm9jICAsCiAgICBYdFBvaW50ZXIJCSAKCik7CgpleHRlcm4gdm9pZCBYdEFkZEdyYWIoCgogICAg
V2lkZ2V0IAkJICwKICAgIGludCAgCQkgLAogICAgaW50ICAJCSAKCik7CgpleHRlcm4gdm9pZCBY
dFJlbW92ZUdyYWIoCgogICAgV2lkZ2V0IAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0UHJvY2Vzc0V2
ZW50KCAgCgogICAgWHRJbnB1dE1hc2sgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBcHBQcm9jZXNz
RXZlbnQoCgogICAgWHRBcHBDb250ZXh0IAkJICwKICAgIFh0SW5wdXRNYXNrIAkJIAoKKTsKCmV4
dGVybiB2b2lkIFh0TWFpbkxvb3AoICAKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgWHRBcHBN
YWluTG9vcCgKCiAgICBYdEFwcENvbnRleHQgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBZGRFeHBv
c3VyZVRvUmVnaW9uKAoKICAgIFhFdmVudCoJCSAsCiAgICBSZWdpb24gCQkgCgopOwoKZXh0ZXJu
IHZvaWQgWHRTZXRLZXlib2FyZEZvY3VzKAoKICAgIFdpZGdldAkJICwKICAgIFdpZGdldCAJCSAK
Cik7CgpleHRlcm4gV2lkZ2V0IFh0R2V0S2V5Ym9hcmRGb2N1c1dpZGdldCgKCiAgICBXaWRnZXQJ
CSAKCik7CgpleHRlcm4gWEV2ZW50KiBYdExhc3RFdmVudFByb2Nlc3NlZCgKCiAgICBEaXNwbGF5
KgkJIAoKKTsKCmV4dGVybiBUaW1lIFh0TGFzdFRpbWVzdGFtcFByb2Nlc3NlZCgKCiAgICBEaXNw
bGF5KgkJIAoKKTsKCiAKCgoKCgpleHRlcm4gWHRJbnRlcnZhbElkIFh0QWRkVGltZU91dCggIAoK
ICAgIHVuc2lnbmVkIGxvbmcgCSAsCiAgICBYdFRpbWVyQ2FsbGJhY2tQcm9jICAsCiAgICBYdFBv
aW50ZXIgCQkgCgopOwoKZXh0ZXJuIFh0SW50ZXJ2YWxJZCBYdEFwcEFkZFRpbWVPdXQoCgogICAg
WHRBcHBDb250ZXh0IAkgLAogICAgdW5zaWduZWQgbG9uZyAJICwKICAgIFh0VGltZXJDYWxsYmFj
a1Byb2MgICwKICAgIFh0UG9pbnRlciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFJlbW92ZVRpbWVP
dXQoCgogICAgWHRJbnRlcnZhbElkIAkgCgopOwoKZXh0ZXJuIFh0SW5wdXRJZCBYdEFkZElucHV0
KCAgCgogICAgaW50IAkJICwKICAgIFh0UG9pbnRlciAJCSAsCiAgICBYdElucHV0Q2FsbGJhY2tQ
cm9jICAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIFh0SW5wdXRJZCBYdEFwcEFkZElu
cHV0KAoKICAgIFh0QXBwQ29udGV4dCAgICAgICAJICwKICAgIGludCAJCSAsCiAgICBYdFBvaW50
ZXIgCQkgLAogICAgWHRJbnB1dENhbGxiYWNrUHJvYyAgLAogICAgWHRQb2ludGVyIAkJIAoKKTsK
CmV4dGVybiB2b2lkIFh0UmVtb3ZlSW5wdXQoCgogICAgWHRJbnB1dElkIAkJIAoKKTsKCmV4dGVy
biBYdFNpZ25hbElkIFh0QXBwQWRkU2lnbmFsKAoKICAgIFh0QXBwQ29udGV4dCAgICAgICAJICwK
ICAgIFh0U2lnbmFsQ2FsbGJhY2tQcm9jICAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJu
IHZvaWQgWHRSZW1vdmVTaWduYWwoCgogICAgWHRTaWduYWxJZCAJCSAKCik7CgpleHRlcm4gdm9p
ZCBYdE5vdGljZVNpZ25hbCgKCiAgICBYdFNpZ25hbElkCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRO
ZXh0RXZlbnQoICAKCiAgICBYRXZlbnQqIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0QXBwTmV4dEV2
ZW50KAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIFhFdmVudCoJCSAKCik7CgoKCgoKCgpleHRl
cm4gWHRJbnB1dE1hc2sgWHRQZW5kaW5nKCAgCgogICAgdm9pZAoKKTsKCmV4dGVybiBYdElucHV0
TWFzayBYdEFwcFBlbmRpbmcoCgogICAgWHRBcHBDb250ZXh0IAkgCgopOwoKZXh0ZXJuIFh0Qmxv
Y2tIb29rSWQgWHRBcHBBZGRCbG9ja0hvb2soCgogICAgWHRBcHBDb250ZXh0IAkgLAogICAgWHRC
bG9ja0hvb2tQcm9jIAkgLAogICAgWHRQb2ludGVyIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0UmVt
b3ZlQmxvY2tIb29rKAoKICAgIFh0QmxvY2tIb29rSWQgCSAKCik7CgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgpleHRlcm4gdm9pZCBYdFJlYWxpemVXaWRnZXQoCgogICAgV2lkZ2V0IAkJ
IAoKKTsKCnZvaWQgWHRVbnJlYWxpemVXaWRnZXQoCgogICAgV2lkZ2V0IAkJIAoKKTsKCmV4dGVy
biB2b2lkIFh0RGVzdHJveVdpZGdldCgKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WHRTZXRTZW5zaXRpdmUoCgogICAgV2lkZ2V0IAkJICwKICAgIGludCAgCQkgCgopOwoKZXh0ZXJu
IHZvaWQgWHRTZXRNYXBwZWRXaGVuTWFuYWdlZCgKCiAgICBXaWRnZXQgCQkgLAogICAgaW50ICAJ
CSAKCik7CgpleHRlcm4gV2lkZ2V0IFh0TmFtZVRvV2lkZ2V0KAoKICAgIFdpZGdldCAJCSAsCiAg
ICBjb25zdCAgY2hhciogCSAKCik7CgpleHRlcm4gV2lkZ2V0IFh0V2luZG93VG9XaWRnZXQoCgog
ICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cgCQkgCgopOwoKZXh0ZXJuIFh0UG9pbnRlciBYdEdl
dENsYXNzRXh0ZW5zaW9uKAoKICAgIFdpZGdldENsYXNzCQkgLAogICAgQ2FyZGluYWwJCSAsCiAg
ICBYcm1RdWFyawkJICwKICAgIGxvbmcJCSAsCiAgICBDYXJkaW5hbAkJIAoKKTsKCiAKCgoKCgoK
CgoKZXh0ZXJuIEFyZ0xpc3QgWHRNZXJnZUFyZ0xpc3RzKAoKICAgIEFyZ0xpc3QgCQkgLAogICAg
Q2FyZGluYWwgCQkgLAogICAgQXJnTGlzdCAJCSAsCiAgICBDYXJkaW5hbCAJCSAKCik7CgogCgoK
CgoKCgoKZXh0ZXJuIFh0VmFyQXJnc0xpc3QgWHRWYUNyZWF0ZUFyZ3NMaXN0KAoKICAgIFh0UG9p
bnRlcgkJICwgLi4uCgopOwoKIAoKCgoKCgoKIAoKZXh0ZXJuIERpc3BsYXkgKlh0RGlzcGxheSgK
CiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIERpc3BsYXkgKlh0RGlzcGxheU9mT2JqZWN0KAoK
ICAgIFdpZGdldCAJCSAKCik7CgpleHRlcm4gU2NyZWVuICpYdFNjcmVlbigKCiAgICBXaWRnZXQg
CQkgCgopOwoKZXh0ZXJuIFNjcmVlbiAqWHRTY3JlZW5PZk9iamVjdCgKCiAgICBXaWRnZXQgCQkg
CgopOwoKZXh0ZXJuIFdpbmRvdyBYdFdpbmRvdygKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJu
IFdpbmRvdyBYdFdpbmRvd09mT2JqZWN0KAoKICAgIFdpZGdldCAJCSAKCik7CgpleHRlcm4gU3Ry
aW5nIFh0TmFtZSgKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIFdpZGdldENsYXNzIFh0U3Vw
ZXJjbGFzcygKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIFdpZGdldENsYXNzIFh0Q2xhc3Mo
CgogICAgV2lkZ2V0IAkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRQYXJlbnQoCgogICAgV2lkZ2V0
IAkJIAoKKTsKCgoKCgoKCmV4dGVybiB2b2lkIFh0QWRkQ2FsbGJhY2soCgogICAgV2lkZ2V0IAkJ
ICwKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBYdENhbGxiYWNrUHJvYyAJICwKICAgIFh0UG9p
bnRlciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFJlbW92ZUNhbGxiYWNrKAoKICAgIFdpZGdldCAJ
CSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAgWHRDYWxsYmFja1Byb2MgCSAsCiAgICBYdFBv
aW50ZXIgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBZGRDYWxsYmFja3MoCgogICAgV2lkZ2V0IAkJ
ICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIFh0Q2FsbGJhY2tMaXN0IAkgCgopOwoKZXh0ZXJu
IHZvaWQgWHRSZW1vdmVDYWxsYmFja3MoCgogICAgV2lkZ2V0IAkJICwKICAgIGNvbnN0ICBjaGFy
KiAgCSAsCiAgICBYdENhbGxiYWNrTGlzdCAJIAoKKTsKCmV4dGVybiB2b2lkIFh0UmVtb3ZlQWxs
Q2FsbGJhY2tzKAoKICAgIFdpZGdldCAJCSAsCiAgICBjb25zdCAgY2hhciogIAkgCgopOwoKCmV4
dGVybiB2b2lkIFh0Q2FsbENhbGxiYWNrcygKCiAgICBXaWRnZXQgCQkgLAogICAgY29uc3QgIGNo
YXIqICAJICwKICAgIFh0UG9pbnRlciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdENhbGxDYWxsYmFj
a0xpc3QoCgogICAgV2lkZ2V0CQkgLAogICAgWHRDYWxsYmFja0xpc3QgCSAsCiAgICBYdFBvaW50
ZXIgCQkgCgopOwoKZXh0ZXJuIFh0Q2FsbGJhY2tTdGF0dXMgWHRIYXNDYWxsYmFja3MoCgogICAg
V2lkZ2V0IAkJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAKCik7CgogCgoKCgoKCmV4dGVybiBYdEdl
b21ldHJ5UmVzdWx0IFh0TWFrZUdlb21ldHJ5UmVxdWVzdCgKCiAgICBXaWRnZXQgCQkgLAogICAg
WHRXaWRnZXRHZW9tZXRyeSoJICwKICAgIFh0V2lkZ2V0R2VvbWV0cnkqCSAKCik7CgpleHRlcm4g
WHRHZW9tZXRyeVJlc3VsdCBYdFF1ZXJ5R2VvbWV0cnkoCgogICAgV2lkZ2V0IAkJICwKICAgIFh0
V2lkZ2V0R2VvbWV0cnkqCSAsCiAgICBYdFdpZGdldEdlb21ldHJ5KgkgCgopOwoKZXh0ZXJuIFdp
ZGdldCBYdENyZWF0ZVBvcHVwU2hlbGwoCgogICAgY29uc3QgIGNoYXIqIAkgLAogICAgV2lkZ2V0
Q2xhc3MgCSAsCiAgICBXaWRnZXQgCQkgLAogICAgQXJnTGlzdCAJCSAsCiAgICBDYXJkaW5hbCAJ
CSAKCik7CgpleHRlcm4gV2lkZ2V0IFh0VmFDcmVhdGVQb3B1cFNoZWxsKAoKICAgIGNvbnN0ICBj
aGFyKiAJICwKICAgIFdpZGdldENsYXNzCQkgLAogICAgV2lkZ2V0CQkgLAogICAgLi4uCgopOwoK
ZXh0ZXJuIHZvaWQgWHRQb3B1cCgKCiAgICBXaWRnZXQgCQkgLAogICAgWHRHcmFiS2luZCAJCSAK
Cik7CgpleHRlcm4gdm9pZCBYdFBvcHVwU3ByaW5nTG9hZGVkKAoKICAgIFdpZGdldCAJCSAKCik7
CgpleHRlcm4gdm9pZCBYdENhbGxiYWNrTm9uZSgKCiAgICBXaWRnZXQgCQkgLAogICAgWHRQb2lu
dGVyIAkJICwKICAgIFh0UG9pbnRlciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdENhbGxiYWNrTm9u
ZXhjbHVzaXZlKAoKICAgIFdpZGdldCAJCSAsCiAgICBYdFBvaW50ZXIgCQkgLAogICAgWHRQb2lu
dGVyIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0Q2FsbGJhY2tFeGNsdXNpdmUoCgogICAgV2lkZ2V0
IAkJICwKICAgIFh0UG9pbnRlciAJCSAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIHZv
aWQgWHRQb3Bkb3duKAoKICAgIFdpZGdldCAJCSAKCik7CgpleHRlcm4gdm9pZCBYdENhbGxiYWNr
UG9wZG93bigKCiAgICBXaWRnZXQgCQkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFh0UG9pbnRl
ciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdE1lbnVQb3B1cEFjdGlvbigKCiAgICBXaWRnZXQgCQkg
LAogICAgWEV2ZW50KgkJICwKICAgIFN0cmluZyoJCSAsCiAgICBDYXJkaW5hbCoJCSAKCik7Cgpl
eHRlcm4gV2lkZ2V0IFh0Q3JlYXRlV2lkZ2V0KAoKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBX
aWRnZXRDbGFzcyAJICwKICAgIFdpZGdldCAJCSAsCiAgICBBcmdMaXN0IAkJICwKICAgIENhcmRp
bmFsIAkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRDcmVhdGVNYW5hZ2VkV2lkZ2V0KAoKICAgIGNv
bnN0ICBjaGFyKiAgCSAsCiAgICBXaWRnZXRDbGFzcyAJICwKICAgIFdpZGdldCAJCSAsCiAgICBB
cmdMaXN0IAkJICwKICAgIENhcmRpbmFsIAkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRWYUNyZWF0
ZVdpZGdldCgKCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBXaWRnZXRDbGFzcwkJICwKICAgIFdp
ZGdldAkJICwKICAgIC4uLgoKKTsKCmV4dGVybiBXaWRnZXQgWHRWYUNyZWF0ZU1hbmFnZWRXaWRn
ZXQoCgogICAgY29uc3QgIGNoYXIqIAkgLAogICAgV2lkZ2V0Q2xhc3MJCSAsCiAgICBXaWRnZXQJ
CSAsCiAgICAuLi4KCik7CgpleHRlcm4gV2lkZ2V0IFh0Q3JlYXRlQXBwbGljYXRpb25TaGVsbCgg
IAoKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBXaWRnZXRDbGFzcyAJICwKICAgIEFyZ0xpc3Qg
CQkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIFdpZGdldCBYdEFwcENyZWF0ZVNoZWxs
KAoKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIFdpZGdldENs
YXNzIAkgLAogICAgRGlzcGxheSoJCSAsCiAgICBBcmdMaXN0IAkJICwKICAgIENhcmRpbmFsIAkJ
IAoKKTsKCmV4dGVybiBXaWRnZXQgWHRWYUFwcENyZWF0ZVNoZWxsKAoKICAgIGNvbnN0ICBjaGFy
KiAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIFdpZGdldENsYXNzCQkgLAogICAgRGlzcGxh
eSoJCSAsCiAgICAuLi4KCik7CgogCgoKCgoKZXh0ZXJuIHZvaWQgWHRUb29sa2l0SW5pdGlhbGl6
ZSgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFh0TGFuZ3VhZ2VQcm9jIFh0U2V0TGFuZ3VhZ2VQcm9j
KAoKICAgIFh0QXBwQ29udGV4dAkgLAogICAgWHRMYW5ndWFnZVByb2MJICwKICAgIFh0UG9pbnRl
cgkJIAoKKTsKCmV4dGVybiB2b2lkIFh0RGlzcGxheUluaXRpYWxpemUoCgogICAgWHRBcHBDb250
ZXh0IAkgLAogICAgRGlzcGxheSoJCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBjb25zdCAg
Y2hhciogCSAsCiAgICBYcm1PcHRpb25EZXNjUmVjKiAJICwKICAgIENhcmRpbmFsIAkJICwKICAg
IGludCoJCSAsCiAgICBjaGFyKioJCSAKCik7CgpleHRlcm4gV2lkZ2V0IFh0T3BlbkFwcGxpY2F0
aW9uKAoKICAgIFh0QXBwQ29udGV4dCoJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIFhybU9w
dGlvbkRlc2NMaXN0IAkgLAogICAgQ2FyZGluYWwgCQkgLAogICAgaW50KgkJICwKICAgIFN0cmlu
ZyoJCSAsCiAgICBTdHJpbmcqCQkgLAogICAgV2lkZ2V0Q2xhc3MJCSAsCiAgICBBcmdMaXN0IAkJ
ICwKICAgIENhcmRpbmFsIAkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRWYU9wZW5BcHBsaWNhdGlv
bigKCiAgICBYdEFwcENvbnRleHQqCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBYcm1PcHRp
b25EZXNjTGlzdAkgLAogICAgQ2FyZGluYWwJCSAsCiAgICBpbnQqCQkgLAogICAgU3RyaW5nKgkJ
ICwKICAgIFN0cmluZyoJCSAsCiAgICBXaWRnZXRDbGFzcwkJICwKICAgIC4uLgoKKTsKCmV4dGVy
biBXaWRnZXQgWHRBcHBJbml0aWFsaXplKCAgCgogICAgWHRBcHBDb250ZXh0KgkgLAogICAgY29u
c3QgIGNoYXIqIAkgLAogICAgWHJtT3B0aW9uRGVzY0xpc3QgCSAsCiAgICBDYXJkaW5hbCAJCSAs
CiAgICBpbnQqCQkgLAogICAgU3RyaW5nKgkJICwKICAgIFN0cmluZyoJCSAsCiAgICBBcmdMaXN0
IAkJICwKICAgIENhcmRpbmFsIAkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRWYUFwcEluaXRpYWxp
emUoICAKCiAgICBYdEFwcENvbnRleHQqCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBYcm1P
cHRpb25EZXNjTGlzdAkgLAogICAgQ2FyZGluYWwJCSAsCiAgICBpbnQqCQkgLAogICAgU3RyaW5n
KgkJICwKICAgIFN0cmluZyoJCSAsCiAgICAuLi4KCik7CgpleHRlcm4gV2lkZ2V0IFh0SW5pdGlh
bGl6ZSggIAoKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAg
WHJtT3B0aW9uRGVzY1JlYyogCSAsCiAgICBDYXJkaW5hbCAJCSAsCiAgICBpbnQqCQkgLAogICAg
Y2hhcioqCQkgCgopOwoKZXh0ZXJuIERpc3BsYXkgKlh0T3BlbkRpc3BsYXkoCgogICAgWHRBcHBD
b250ZXh0IAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAg
Y29uc3QgIGNoYXIqIAkgLAogICAgWHJtT3B0aW9uRGVzY1JlYyoJICwKICAgIENhcmRpbmFsIAkJ
ICwKICAgIGludCoJCSAsCiAgICBjaGFyKioJCSAKCik7CgpleHRlcm4gWHRBcHBDb250ZXh0IFh0
Q3JlYXRlQXBwbGljYXRpb25Db250ZXh0KAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBYdEFw
cFNldEZhbGxiYWNrUmVzb3VyY2VzKAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIFN0cmluZyoJ
CSAKCik7CgpleHRlcm4gdm9pZCBYdERlc3Ryb3lBcHBsaWNhdGlvbkNvbnRleHQoCgogICAgWHRB
cHBDb250ZXh0IAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRJbml0aWFsaXplV2lkZ2V0Q2xhc3MoCgog
ICAgV2lkZ2V0Q2xhc3MgCSAKCik7CgpleHRlcm4gWHRBcHBDb250ZXh0IFh0V2lkZ2V0VG9BcHBs
aWNhdGlvbkNvbnRleHQoCgogICAgV2lkZ2V0IAkJIAoKKTsKCmV4dGVybiBYdEFwcENvbnRleHQg
WHREaXNwbGF5VG9BcHBsaWNhdGlvbkNvbnRleHQoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRl
cm4gWHJtRGF0YWJhc2UgWHREYXRhYmFzZSgKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBY
cm1EYXRhYmFzZSBYdFNjcmVlbkRhdGFiYXNlKAoKICAgIFNjcmVlbioJCSAKCik7CgpleHRlcm4g
dm9pZCBYdENsb3NlRGlzcGxheSgKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiB2b2lkIFh0
R2V0QXBwbGljYXRpb25SZXNvdXJjZXMoCgogICAgV2lkZ2V0IAkJICwKICAgIFh0UG9pbnRlciAJ
CSAsCiAgICBYdFJlc291cmNlTGlzdCAJICwKICAgIENhcmRpbmFsIAkJICwKICAgIEFyZ0xpc3Qg
CQkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRWYUdldEFwcGxpY2F0aW9u
UmVzb3VyY2VzKAoKICAgIFdpZGdldAkJICwKICAgIFh0UG9pbnRlcgkJICwKICAgIFh0UmVzb3Vy
Y2VMaXN0CSAsCiAgICBDYXJkaW5hbAkJICwKICAgIC4uLgoKKTsKCmV4dGVybiB2b2lkIFh0R2V0
U3VicmVzb3VyY2VzKAoKICAgIFdpZGdldCAJCSAsCiAgICBYdFBvaW50ZXIgCQkgLAogICAgY29u
c3QgIGNoYXIqICAJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBYdFJlc291cmNlTGlzdCAJ
ICwKICAgIENhcmRpbmFsIAkJICwKICAgIEFyZ0xpc3QgCQkgLAogICAgQ2FyZGluYWwgCQkgCgop
OwoKZXh0ZXJuIHZvaWQgWHRWYUdldFN1YnJlc291cmNlcygKCiAgICBXaWRnZXQJCSAsCiAgICBY
dFBvaW50ZXIJCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAg
ICBYdFJlc291cmNlTGlzdAkgLAogICAgQ2FyZGluYWwJCSAsCiAgICAuLi4KCik7CgpleHRlcm4g
dm9pZCBYdFNldFZhbHVlcygKCiAgICBXaWRnZXQgCQkgLAogICAgQXJnTGlzdCAJCSAsCiAgICBD
YXJkaW5hbCAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFZhU2V0VmFsdWVzKAoKICAgIFdpZGdldAkJ
ICwKICAgIC4uLgoKKTsKCmV4dGVybiB2b2lkIFh0R2V0VmFsdWVzKAoKICAgIFdpZGdldCAJCSAs
CiAgICBBcmdMaXN0IAkJICwKICAgIENhcmRpbmFsIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0VmFH
ZXRWYWx1ZXMoCgogICAgV2lkZ2V0CQkgLAogICAgLi4uCgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRT
dWJ2YWx1ZXMoCgogICAgWHRQb2ludGVyIAkJICwKICAgIFh0UmVzb3VyY2VMaXN0IAkgLAogICAg
Q2FyZGluYWwgCQkgLAogICAgQXJnTGlzdCAJCSAsCiAgICBDYXJkaW5hbCAJCSAKCik7CgpleHRl
cm4gdm9pZCBYdFZhU2V0U3VidmFsdWVzKAoKICAgIFh0UG9pbnRlcgkJICwKICAgIFh0UmVzb3Vy
Y2VMaXN0CSAsCiAgICBDYXJkaW5hbAkJICwKICAgIC4uLgoKKTsKCmV4dGVybiB2b2lkIFh0R2V0
U3VidmFsdWVzKAoKICAgIFh0UG9pbnRlciAJCSAsCiAgICBYdFJlc291cmNlTGlzdCAJICwKICAg
IENhcmRpbmFsIAkJICwKICAgIEFyZ0xpc3QgCQkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0
ZXJuIHZvaWQgWHRWYUdldFN1YnZhbHVlcygKCiAgICBYdFBvaW50ZXIJCSAsCiAgICBYdFJlc291
cmNlTGlzdAkgLAogICAgQ2FyZGluYWwJCSAsCiAgICAuLi4KCik7CgpleHRlcm4gdm9pZCBYdEdl
dFJlc291cmNlTGlzdCgKCiAgICBXaWRnZXRDbGFzcyAJICwKICAgIFh0UmVzb3VyY2VMaXN0Kgkg
LAogICAgQ2FyZGluYWwqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRHZXRDb25zdHJhaW50UmVzb3Vy
Y2VMaXN0KAoKICAgIFdpZGdldENsYXNzIAkgLAogICAgWHRSZXNvdXJjZUxpc3QqCSAsCiAgICBD
YXJkaW5hbCoJCSAKCik7CgoKCgoKCgoKCgoKIyAyMDc2ICIvdXNyL2luY2x1ZGUvWDExL0ludHJp
bnNpYy5oIiAzCgoKCgoKCgoKCgoKCgogCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1h0Q2hlY2twb2lu
dFRva2VuUmVjIHsKICAgIGludAkJc2F2ZV90eXBlOwogICAgaW50CQlpbnRlcmFjdF9zdHlsZTsK
ICAgIEJvb2xlYW4Jc2h1dGRvd247CiAgICBCb29sZWFuCWZhc3Q7CiAgICBCb29sZWFuCWNhbmNl
bF9zaHV0ZG93bjsKICAgIGludAkJcGhhc2U7CiAgICBpbnQJCWludGVyYWN0X2RpYWxvZ190eXBl
OwkgCiAgICBCb29sZWFuCXJlcXVlc3RfY2FuY2VsOwkJIAogICAgQm9vbGVhbglyZXF1ZXN0X25l
eHRfcGhhc2U7CSAKICAgIEJvb2xlYW4Jc2F2ZV9zdWNjZXNzOwkJIAogICAgaW50CQl0eXBlOwkJ
IAogICAgV2lkZ2V0CXdpZGdldDsJCSAKfSBYdENoZWNrcG9pbnRUb2tlblJlYywgKlh0Q2hlY2tw
b2ludFRva2VuOwoKWHRDaGVja3BvaW50VG9rZW4gWHRTZXNzaW9uR2V0VG9rZW4oCgogICAgV2lk
Z2V0CQkgCgopOwoKdm9pZCBYdFNlc3Npb25SZXR1cm5Ub2tlbigKCiAgICBYdENoZWNrcG9pbnRU
b2tlbgkgCgopOwoKIAoKCgoKCmV4dGVybiBYdEVycm9yTXNnSGFuZGxlciBYdEFwcFNldEVycm9y
TXNnSGFuZGxlcigKCiAgICBYdEFwcENvbnRleHQgCSAsCiAgICBYdEVycm9yTXNnSGFuZGxlciAJ
IAoKKTsKCmV4dGVybiB2b2lkIFh0U2V0RXJyb3JNc2dIYW5kbGVyKCAgCgogICAgWHRFcnJvck1z
Z0hhbmRsZXIgCSAKCik7CgpleHRlcm4gWHRFcnJvck1zZ0hhbmRsZXIgWHRBcHBTZXRXYXJuaW5n
TXNnSGFuZGxlcigKCiAgICBYdEFwcENvbnRleHQgCSAsCiAgICBYdEVycm9yTXNnSGFuZGxlciAJ
IAoKKTsKCmV4dGVybiB2b2lkIFh0U2V0V2FybmluZ01zZ0hhbmRsZXIoICAKCiAgICBYdEVycm9y
TXNnSGFuZGxlciAJIAoKKTsKCmV4dGVybiB2b2lkIFh0QXBwRXJyb3JNc2coCgogICAgWHRBcHBD
b250ZXh0IAkgLAogICAgY29uc3QgIGNoYXIqICAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAg
IGNvbnN0ICBjaGFyKiAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIFN0cmluZyoJCSAsCiAg
ICBDYXJkaW5hbCoJCSAKCik7CgpleHRlcm4gdm9pZCBYdEVycm9yTXNnKCAgCgogICAgY29uc3Qg
IGNoYXIqICAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAg
IGNvbnN0ICBjaGFyKiAJICwKICAgIFN0cmluZyoJCSAsCiAgICBDYXJkaW5hbCoJCSAKCik7Cgpl
eHRlcm4gdm9pZCBYdEFwcFdhcm5pbmdNc2coCgogICAgWHRBcHBDb250ZXh0IAkgLAogICAgY29u
c3QgIGNoYXIqICAJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBjb25zdCAgY2hhciogIAkg
LAogICAgY29uc3QgIGNoYXIqICAJICwKICAgIFN0cmluZyoJCSAsCiAgICBDYXJkaW5hbCoJCSAK
Cik7CgpleHRlcm4gdm9pZCBYdFdhcm5pbmdNc2coICAKCiAgICBjb25zdCAgY2hhciogCSAsCiAg
ICBjb25zdCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciog
CSAsCiAgICBTdHJpbmcqCQkgLAogICAgQ2FyZGluYWwqCQkgCgopOwoKZXh0ZXJuIFh0RXJyb3JI
YW5kbGVyIFh0QXBwU2V0RXJyb3JIYW5kbGVyKAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIFh0
RXJyb3JIYW5kbGVyIAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRFcnJvckhhbmRsZXIoICAKCiAg
ICBYdEVycm9ySGFuZGxlciAJIAoKKTsKCmV4dGVybiBYdEVycm9ySGFuZGxlciBYdEFwcFNldFdh
cm5pbmdIYW5kbGVyKAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIFh0RXJyb3JIYW5kbGVyIAkg
CgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRXYXJuaW5nSGFuZGxlciggIAoKICAgIFh0RXJyb3JIYW5k
bGVyIAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBcHBFcnJvcigKCiAgICBYdEFwcENvbnRleHQgCSAs
CiAgICBjb25zdCAgY2hhciogCSAKCik7CgpleHRlcm4gdm9pZCBYdEVycm9yKCAgCgogICAgY29u
c3QgIGNoYXIqIAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBcHBXYXJuaW5nKAoKICAgIFh0QXBwQ29u
dGV4dCAJICwKICAgIGNvbnN0ICBjaGFyKiAJIAoKKTsKCmV4dGVybiB2b2lkIFh0V2FybmluZygg
IAoKICAgIGNvbnN0ICBjaGFyKiAJIAoKKTsKCmV4dGVybiBYcm1EYXRhYmFzZSAqWHRBcHBHZXRF
cnJvckRhdGFiYXNlKAoKICAgIFh0QXBwQ29udGV4dCAJIAoKKTsKCmV4dGVybiBYcm1EYXRhYmFz
ZSAqWHRHZXRFcnJvckRhdGFiYXNlKCAgCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIFh0QXBw
R2V0RXJyb3JEYXRhYmFzZVRleHQoCgogICAgWHRBcHBDb250ZXh0IAkgLAogICAgY29uc3QgIGNo
YXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgY29u
c3QgIGNoYXIqICAJICwKICAgIFN0cmluZyAJCSAsCiAgICBpbnQgCQkgLAogICAgWHJtRGF0YWJh
c2UgCSAKCik7CgpleHRlcm4gdm9pZCBYdEdldEVycm9yRGF0YWJhc2VUZXh0KCAgCgogICAgY29u
c3QgIGNoYXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAog
ICAgY29uc3QgIGNoYXIqICAJICwKICAgIFN0cmluZyAJCSAsCiAgICBpbnQgCQkgCgopOwoKIAoK
CgoKCmV4dGVybiBjaGFyICpYdE1hbGxvYygKCiAgICBDYXJkaW5hbCAJCSAKCik7CgpleHRlcm4g
Y2hhciAqWHRDYWxsb2MoCgogICAgQ2FyZGluYWwJCSAsCiAgICBDYXJkaW5hbCAJCSAKCik7Cgpl
eHRlcm4gY2hhciAqWHRSZWFsbG9jKAoKICAgIGNoYXIqIAkJICwKICAgIENhcmRpbmFsIAkJIAoK
KTsKCmV4dGVybiB2b2lkIFh0RnJlZSgKCiAgICBjaGFyKgkJIAoKKTsKCiMgMjM1OSAiL3Vzci9p
bmNsdWRlL1gxMS9JbnRyaW5zaWMuaCIgMwoKCgoKCgogCgoKCgoKZXh0ZXJuIFh0V29ya1Byb2NJ
ZCBYdEFkZFdvcmtQcm9jKCAgCgogICAgWHRXb3JrUHJvYyAJCSAsCiAgICBYdFBvaW50ZXIgCQkg
CgopOwoKZXh0ZXJuIFh0V29ya1Byb2NJZCBYdEFwcEFkZFdvcmtQcm9jKAoKICAgIFh0QXBwQ29u
dGV4dCAJICwKICAgIFh0V29ya1Byb2MgCQkgLAogICAgWHRQb2ludGVyIAkJIAoKKTsKCmV4dGVy
biB2b2lkICBYdFJlbW92ZVdvcmtQcm9jKAoKICAgIFh0V29ya1Byb2NJZCAJIAoKKTsKCgogCgoK
CgpleHRlcm4gR0MgWHRHZXRHQygKCiAgICBXaWRnZXQgCQkgLAogICAgWHRHQ01hc2sgCQkgLAog
ICAgWEdDVmFsdWVzKiAJCSAKCik7CgpleHRlcm4gR0MgWHRBbGxvY2F0ZUdDKAoKICAgIFdpZGdl
dCAJCSAsCiAgICBDYXJkaW5hbAkJICwKICAgIFh0R0NNYXNrIAkJICwKICAgIFhHQ1ZhbHVlcyog
CQkgLAogICAgWHRHQ01hc2sJCSAsCiAgICBYdEdDTWFzawkJIAoKKTsKCiAKCgoKZXh0ZXJuIHZv
aWQgWHREZXN0cm95R0MoICAKCiAgICBHQyAJCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRSZWxlYXNl
R0MoCgogICAgV2lkZ2V0IAkJICwKICAgIEdDIAkJCSAKCik7CgoKCmV4dGVybiB2b2lkIFh0QXBw
UmVsZWFzZUNhY2hlUmVmcygKCiAgICBYdEFwcENvbnRleHQJICwKICAgIFh0Q2FjaGVSZWYqCQkg
CgopOwoKZXh0ZXJuIHZvaWQgWHRDYWxsYmFja1JlbGVhc2VDYWNoZVJlZigKCiAgICBXaWRnZXQg
CQkgLAogICAgWHRQb2ludGVyIAkJICwJIAogICAgWHRQb2ludGVyIAkJIAoKKTsKCmV4dGVybiB2
b2lkIFh0Q2FsbGJhY2tSZWxlYXNlQ2FjaGVSZWZMaXN0KAoKICAgIFdpZGdldCAJCSAsCiAgICBY
dFBvaW50ZXIgCQkgLAkgCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRX
TUNvbG9ybWFwV2luZG93cygKCiAgICBXaWRnZXQgCQkgLAogICAgV2lkZ2V0KgkJICwKICAgIENh
cmRpbmFsCQkgCgopOwoKZXh0ZXJuIFN0cmluZyBYdEZpbmRGaWxlKAoKICAgIGNvbnN0ICBjaGFy
KiAJICwKICAgIFN1YnN0aXR1dGlvbgkgLAogICAgQ2FyZGluYWwgCQkgLAogICAgWHRGaWxlUHJl
ZGljYXRlCSAKCik7CgpleHRlcm4gU3RyaW5nIFh0UmVzb2x2ZVBhdGhuYW1lKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgY29u
c3QgIGNoYXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgU3Vic3RpdHV0aW9uCSAsCiAg
ICBDYXJkaW5hbAkJICwKICAgIFh0RmlsZVByZWRpY2F0ZSAJIAoKKTsKCiAKCgoKCgoKICAgIApl
eHRlcm4gdm9pZCBYdERpc293blNlbGVjdGlvbigKCiAgICBXaWRnZXQgCQkgLAogICAgQXRvbSAJ
CSAsCiAgICBUaW1lIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0R2V0U2VsZWN0aW9uVmFsdWUoCgog
ICAgV2lkZ2V0IAkJICwKICAgIEF0b20gCQkgLAogICAgQXRvbSAJCSAsCiAgICBYdFNlbGVjdGlv
bkNhbGxiYWNrUHJvYyAgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFRpbWUgCQkgCgopOwoKZXh0
ZXJuIHZvaWQgWHRHZXRTZWxlY3Rpb25WYWx1ZXMoCgogICAgV2lkZ2V0IAkJICwKICAgIEF0b20g
CQkgLAogICAgQXRvbSoJCSAsCiAgICBpbnQgCQkgLAogICAgWHRTZWxlY3Rpb25DYWxsYmFja1By
b2MgICwKICAgIFh0UG9pbnRlcioJCSAsCiAgICBUaW1lIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0
QXBwU2V0U2VsZWN0aW9uVGltZW91dCgKCiAgICBYdEFwcENvbnRleHQgCSAsCiAgICB1bnNpZ25l
ZCBsb25nIAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRTZWxlY3Rpb25UaW1lb3V0KCAgCgogICAg
dW5zaWduZWQgbG9uZyAJIAoKKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIFh0QXBwR2V0U2VsZWN0
aW9uVGltZW91dCgKCiAgICBYdEFwcENvbnRleHQgCSAKCik7CgpleHRlcm4gdW5zaWduZWQgbG9u
ZyBYdEdldFNlbGVjdGlvblRpbWVvdXQoICAKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFhTZWxlY3Rp
b25SZXF1ZXN0RXZlbnQgKlh0R2V0U2VsZWN0aW9uUmVxdWVzdCgKCiAgICBXaWRnZXQgCQkgLAog
ICAgQXRvbSAJCSAsCiAgICBYdFJlcXVlc3RJZCAJIAoKKTsKCmV4dGVybiB2b2lkIFh0R2V0U2Vs
ZWN0aW9uVmFsdWVJbmNyZW1lbnRhbCgKCiAgICBXaWRnZXQgCQkgLAogICAgQXRvbSAJCSAsCiAg
ICBBdG9tIAkJICwKICAgIFh0U2VsZWN0aW9uQ2FsbGJhY2tQcm9jICAsCiAgICBYdFBvaW50ZXIg
CQkgLAogICAgVGltZSAJCSAKCik7CgpleHRlcm4gdm9pZCBYdEdldFNlbGVjdGlvblZhbHVlc0lu
Y3JlbWVudGFsKAoKICAgIFdpZGdldCAJCSAsCiAgICBBdG9tIAkJICwKICAgIEF0b20qCQkgLAog
ICAgaW50IAkJICwKICAgIFh0U2VsZWN0aW9uQ2FsbGJhY2tQcm9jICAsCiAgICBYdFBvaW50ZXIq
CQkgLAogICAgVGltZSAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFNldFNlbGVjdGlvblBhcmFtZXRl
cnMoCgogICAgV2lkZ2V0CQkgLAogICAgQXRvbQkJICwKICAgIEF0b20JCSAsCiAgICBYdFBvaW50
ZXIJCSAsCiAgICB1bnNpZ25lZCBsb25nCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WHRHZXRTZWxlY3Rpb25QYXJhbWV0ZXJzKAoKICAgIFdpZGdldAkJICwKICAgIEF0b20JCSAsCiAg
ICBYdFJlcXVlc3RJZAkJICwKICAgIEF0b20qCQkgLAogICAgWHRQb2ludGVyKgkJICwKICAgIHVu
c2lnbmVkIGxvbmcqCSAsCiAgICBpbnQqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRDcmVhdGVTZWxl
Y3Rpb25SZXF1ZXN0KAoKICAgIFdpZGdldAkJICwKICAgIEF0b20JCSAKCik7CgpleHRlcm4gdm9p
ZCBYdFNlbmRTZWxlY3Rpb25SZXF1ZXN0KAoKICAgIFdpZGdldAkJICwKICAgIEF0b20JCSAsCiAg
ICBUaW1lCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRDYW5jZWxTZWxlY3Rpb25SZXF1ZXN0KAoKICAg
IFdpZGdldAkJICwKICAgIEF0b20JCSAKCik7CgpleHRlcm4gQXRvbSBYdFJlc2VydmVQcm9wZXJ0
eUF0b20oCgogICAgV2lkZ2V0CQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRSZWxlYXNlUHJvcGVydHlB
dG9tKAoKICAgIFdpZGdldAkJICwKICAgIEF0b20JCSAKCik7CgpleHRlcm4gdm9pZCBYdEdyYWJL
ZXkoCgogICAgV2lkZ2V0IAkJICwKICAgIHVuc2lnbmVkIGludCAgCQkgLAogICAgTW9kaWZpZXJz
CSAJICwKICAgIGludCAgCQkgLAogICAgaW50IAkJICwKICAgIGludCAJCSAKCik7CgpleHRlcm4g
dm9pZCBYdFVuZ3JhYktleSgKCiAgICBXaWRnZXQgCQkgLAogICAgdW5zaWduZWQgaW50ICAJCSAs
CiAgICBNb2RpZmllcnMJIAkgCgopOwoKZXh0ZXJuIGludCBYdEdyYWJLZXlib2FyZCgKCiAgICBX
aWRnZXQgCQkgLAogICAgaW50ICAJCSAsCiAgICBpbnQgCQkgLAogICAgaW50IAkJICwKICAgIFRp
bWUgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRVbmdyYWJLZXlib2FyZCgKCiAgICBXaWRnZXQgCQkg
LAogICAgVGltZSAJCSAKCik7CgpleHRlcm4gdm9pZCBYdEdyYWJCdXR0b24oCgogICAgV2lkZ2V0
IAkJICwKICAgIGludCAJCSAsCiAgICBNb2RpZmllcnMJIAkgLAogICAgaW50ICAJCSAsCiAgICB1
bnNpZ25lZCBpbnQJICwKICAgIGludCAJCSAsCiAgICBpbnQgCQkgLAogICAgV2luZG93IAkJICwK
ICAgIEN1cnNvciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFVuZ3JhYkJ1dHRvbigKCiAgICBXaWRn
ZXQgCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBNb2RpZmllcnMJIAkgCgopOwoKZXh0ZXJu
IGludCBYdEdyYWJQb2ludGVyKAoKICAgIFdpZGdldCAJCSAsCiAgICBpbnQgIAkJICwKICAgIHVu
c2lnbmVkIGludAkgLAogICAgaW50IAkJICwKICAgIGludCAJCSAsCiAgICBXaW5kb3cgCQkgLAog
ICAgQ3Vyc29yIAkJICwKICAgIFRpbWUgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRVbmdyYWJQb2lu
dGVyKAoKICAgIFdpZGdldCAJCSAsCiAgICBUaW1lIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0R2V0
QXBwbGljYXRpb25OYW1lQW5kQ2xhc3MoCgogICAgRGlzcGxheSoJCSAsCiAgICBTdHJpbmcqCQkg
LAogICAgU3RyaW5nKgkJIAoKKTsKCmV4dGVybiB2b2lkIFh0UmVnaXN0ZXJEcmF3YWJsZSgKCiAg
ICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgV2lkZ2V0CQkgCgopOwoKZXh0ZXJu
IHZvaWQgWHRVbnJlZ2lzdGVyRHJhd2FibGUoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJs
ZQkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRIb29rc09mRGlzcGxheSgKCiAgICBEaXNwbGF5KgkJ
IAoKKTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFN0cmluZyB0eXBlOwogICAgV2lkZ2V0IHdpZGdl
dDsKICAgIEFyZ0xpc3QgYXJnczsKICAgIENhcmRpbmFsIG51bV9hcmdzOwp9IFh0Q3JlYXRlSG9v
a0RhdGFSZWMsICpYdENyZWF0ZUhvb2tEYXRhOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgU3RyaW5n
IHR5cGU7CiAgICBXaWRnZXQgd2lkZ2V0OwogICAgWHRQb2ludGVyIGV2ZW50X2RhdGE7CiAgICBD
YXJkaW5hbCBudW1fZXZlbnRfZGF0YTsKfSBYdENoYW5nZUhvb2tEYXRhUmVjLCAqWHRDaGFuZ2VI
b29rRGF0YTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFdpZGdldCBvbGQsIHJlcTsKICAgIEFyZ0xp
c3QgYXJnczsKICAgIENhcmRpbmFsIG51bV9hcmdzOwp9IFh0Q2hhbmdlSG9va1NldFZhbHVlc0Rh
dGFSZWMsICpYdENoYW5nZUhvb2tTZXRWYWx1ZXNEYXRhOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAg
U3RyaW5nIHR5cGU7CiAgICBXaWRnZXQgd2lkZ2V0OwogICAgWHRHZW9tZXRyeU1hc2sgY2hhbmdl
TWFzazsKICAgIFhXaW5kb3dDaGFuZ2VzIGNoYW5nZXM7Cn0gWHRDb25maWd1cmVIb29rRGF0YVJl
YywgKlh0Q29uZmlndXJlSG9va0RhdGE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBTdHJpbmcgdHlw
ZTsKICAgIFdpZGdldCB3aWRnZXQ7CiAgICBYdFdpZGdldEdlb21ldHJ5KiByZXF1ZXN0OwogICAg
WHRXaWRnZXRHZW9tZXRyeSogcmVwbHk7CiAgICBYdEdlb21ldHJ5UmVzdWx0IHJlc3VsdDsKfSBY
dEdlb21ldHJ5SG9va0RhdGFSZWMsICpYdEdlb21ldHJ5SG9va0RhdGE7Cgp0eXBlZGVmIHN0cnVj
dCB7CiAgICBTdHJpbmcgdHlwZTsKICAgIFdpZGdldCB3aWRnZXQ7Cn0gWHREZXN0cm95SG9va0Rh
dGFSZWMsICpYdERlc3Ryb3lIb29rRGF0YTsKCmV4dGVybiB2b2lkIFh0R2V0RGlzcGxheXMoCgog
ICAgWHRBcHBDb250ZXh0CSAsCiAgICBEaXNwbGF5KioqCQkgLAogICAgQ2FyZGluYWwqCQkgCgop
OwoKZXh0ZXJuIEJvb2xlYW4gWHRUb29sa2l0VGhyZWFkSW5pdGlhbGl6ZSgKCiAgICB2b2lkCgop
OwoKZXh0ZXJuIHZvaWQgWHRBcHBTZXRFeGl0RmxhZygKCiAgICBYdEFwcENvbnRleHQJIAoKKTsK
CmV4dGVybiBCb29sZWFuIFh0QXBwR2V0RXhpdEZsYWcoCgogICAgWHRBcHBDb250ZXh0CSAKCik7
CgpleHRlcm4gdm9pZCBYdEFwcExvY2soCgogICAgWHRBcHBDb250ZXh0CSAKCik7CgpleHRlcm4g
dm9pZCBYdEFwcFVubG9jaygKCiAgICBYdEFwcENvbnRleHQJIAoKKTsKCiAKCgoKCiAKCmV4dGVy
biBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9BY2NlbGVyYXRvclRhYmxlKAoKICAgIERpc3BsYXkqCSAs
CiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRy
CSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xl
YW4gWHRDdnRTdHJpbmdUb0F0b20oCgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRyICAs
CSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRy
CSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dFN0cmluZ1RvQm9v
bCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAg
ICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJ
IAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9Cb29sZWFuKAoKICAgIERpc3BsYXkq
CSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVl
UHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJv
b2xlYW4gWHRDdnRTdHJpbmdUb0NvbW1hbmRBcmdBcnJheSgKCiAgICBEaXNwbGF5KgkgLAogICAg
WHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAog
ICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0
Q3Z0U3RyaW5nVG9DdXJzb3IoCgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAK
ICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAs
CiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dFN0cmluZ1RvRGltZW5z
aW9uKAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCog
ICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVy
KgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb0RpcmVjdG9yeVN0cmluZygKCiAg
ICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAg
ICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsK
CmV4dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9EaXNwbGF5KAoKICAgIERpc3BsYXkqCSAsCiAg
ICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAs
CiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4g
WHRDdnRTdHJpbmdUb0ZpbGUoCgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAK
ICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAs
CiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dFN0cmluZ1RvRmxvYXQo
CgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRpbmFsKiAgICAs
CQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAK
Cik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dFN0cmluZ1RvRm9udCgKCiAgICBEaXNwbGF5KgkgLAog
ICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkg
LAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFu
IFh0Q3Z0U3RyaW5nVG9Gb250U2V0KAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAg
LAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0
cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb0Zv
bnRTdHJ1Y3QoCgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRp
bmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBv
aW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dFN0cmluZ1RvR3Jhdml0eSgKCiAgICBE
aXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJt
VmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRl
cm4gQm9vbGVhbiBYdEN2dFN0cmluZ1RvSW5pdGlhbFN0YXRlKAoKICAgIERpc3BsYXkqCSAsCiAg
ICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAs
CiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4g
WHRDdnRTdHJpbmdUb0ludCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAog
ICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwK
ICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9QaXhlbCgK
CiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJ
CiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoK
KTsKCgoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb1Jlc3RhcnRTdHlsZSgKCiAgICBEaXNw
bGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1W
YWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVy
biBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9TaG9ydCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFs
dWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJt
VmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0U3Ry
aW5nVG9UcmFuc2xhdGlvblRhYmxlKAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAg
LAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0
cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb1Vu
c2lnbmVkQ2hhcigKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2Fy
ZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0
UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9WaXN1YWwoCgogICAg
RGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAg
WHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7Cgog
CgpleHRlcm4gQm9vbGVhbiBYdEN2dEludFRvQm9vbCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJt
VmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAg
WHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0
SW50VG9Cb29sZWFuKAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBD
YXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAg
WHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRJbnRUb0NvbG9yKAoKICAgIERp
c3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhy
bVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKCgpl
eHRlcm4gQm9vbGVhbiBYdEN2dEludFRvRmxvYXQoCgogICAgRGlzcGxheSoJICwKICAgIFhybVZh
bHVlUHRyICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhy
bVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dElu
dFRvRm9udCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGlu
YWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9p
bnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0SW50VG9QaXhlbCgKCiAgICBEaXNwbGF5
KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1
ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBC
b29sZWFuIFh0Q3Z0SW50VG9QaXhtYXAoCgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRy
ICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVl
UHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgoKCmV4dGVybiBCb29sZWFuIFh0Q3Z0SW50VG9T
aG9ydCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwq
ICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRl
cioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0SW50VG9VbnNpZ25lZENoYXIoCgogICAgRGlz
cGxheSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJt
VmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgogCgpl
eHRlcm4gQm9vbGVhbiBYdEN2dENvbG9yVG9QaXhlbCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJt
VmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAg
WHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCiAKCgoKCiAKCgogCiMgNzUgInhk
dmkuaCIgMgoKCgoKCgojIDkyICJ4ZHZpLmgiCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmCWNoYXIJ
CUJvb2wzOwkJIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9kaXJlbnQu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgogCgoKCgoKCgoKCgoKCgoK
IyAxICIvdXNyL2luY2x1ZGUvZGlyZW50cnkuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgpz
dHJ1Y3QgZGlyZW50CiAgewogICAgbG9uZyBpbnQgZF9pbm87CiAgICBfX29mZl90IGRfb2ZmOwog
ICAgdW5zaWduZWQgc2hvcnQgaW50IGRfcmVjbGVuOwogICAgdW5zaWduZWQgY2hhciBkX3R5cGU7
CiAgICBjaGFyIGRfbmFtZVsyNTZdOwkJIAogIH07CgoKCgoKCgoKIyA0NyAiL3Vzci9pbmNsdWRl
L2RpcmVudC5oIiAyIDMKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAplbnVt
CiAgewogICAgRFRfVU5LTk9XTiA9IDAsCgogICAgRFRfRklGTyA9IDEsCgogICAgRFRfQ0hSID0g
MiwKCiAgICBEVF9ESVIgPSA0LAoKICAgIERUX0JMSyA9IDYsCgogICAgRFRfUkVHID0gOCwKCiAg
ICBEVF9MTksgPSAxMCwKCiAgICBEVF9TT0NLID0gMTIKCiAgfTsKCiAKCgoKCgogCgp0eXBlZGVm
IHN0cnVjdCBfX2RpcnN0cmVhbSBESVI7CgogCgpleHRlcm4gRElSICpfX29wZW5kaXIgIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgIDsKZXh0ZXJuIERJUiAqb3BlbmRpciAgKF9fY29uc3QgY2hhciAq
X19uYW1lKSAgOwoKIAoKZXh0ZXJuIGludCBfX2Nsb3NlZGlyICAoRElSICpfX2RpcnApICA7CmV4
dGVybiBpbnQgY2xvc2VkaXIgIChESVIgKl9fZGlycCkgIDsKCiAKCgoKZXh0ZXJuIHN0cnVjdCBk
aXJlbnQgKl9fcmVhZGRpciAgKERJUiAqX19kaXJwKSAgOwpleHRlcm4gc3RydWN0IGRpcmVudCAq
cmVhZGRpciAgKERJUiAqX19kaXJwKSAgOwoKCiAKCmV4dGVybiBpbnQgX19yZWFkZGlyX3IgIChE
SVIgKl9fZGlycCwgc3RydWN0IGRpcmVudCAqX19lbnRyeSwKCQkJICAgICBzdHJ1Y3QgZGlyZW50
ICoqX19yZXN1bHQpICA7CmV4dGVybiBpbnQgcmVhZGRpcl9yICAoRElSICpfX2RpcnAsIHN0cnVj
dCBkaXJlbnQgKl9fZW50cnksCgkJCSAgIHN0cnVjdCBkaXJlbnQgKipfX3Jlc3VsdCkgIDsKCgog
CmV4dGVybiB2b2lkIHJld2luZGRpciAgKERJUiAqX19kaXJwKSAgOwoKCgogCmV4dGVybiBpbnQg
ZGlyZmQgIChESVIgKl9fZGlycCkgIDsKCgoKCgoKIAoKCiAKCgoKCgoKCgoKIyAxICIvdXNyL2xp
Yi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoK
CgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1s
aWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAK
CgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LWxpbnV4L3BnY2MtMi45MS42MC9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
bGludXgvcGdjYy0yLjkxLjYwL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAK
CiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtbGludXgvcGdjYy0yLjkxLjYwL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMTY1ICIvdXNyL2lu
Y2x1ZGUvZGlyZW50LmgiIDIgMwoKCiAKZXh0ZXJuIHZvaWQgc2Vla2RpciAgKERJUiAqX19kaXJw
LCBfX29mZl90IF9fcG9zKSAgOwoKIApleHRlcm4gX19vZmZfdCB0ZWxsZGlyICAoRElSICpfX2Rp
cnApICA7CgogCgoKCmV4dGVybiBpbnQgc2NhbmRpciAgKF9fY29uc3QgY2hhciAqX19kaXIsCgkJ
CSBzdHJ1Y3QgZGlyZW50ICoqKl9fbmFtZWxpc3QsCgkJCSBpbnQgKCpfX3NlbGVjdG9yKSAgKHN0
cnVjdCBkaXJlbnQgKikgICwKCQkJIGludCAoKl9fY21wKSAgKF9fY29uc3Qgdm9pZCAqICwKCQkJ
CQkgICAgX19jb25zdCB2b2lkICogKSAgKSAgOwoKIApleHRlcm4gaW50IGFscGhhc29ydCAgKF9f
Y29uc3Qgdm9pZCAqICwgX19jb25zdCB2b2lkICogKSAgOwoKCiAKCgoKZXh0ZXJuIF9fc3NpemVf
dCBfX2dldGRpcmVudHJpZXMgIChpbnQgX19mZCwgY2hhciAqX19idWYsCgkJCQkgICAgICAgc2l6
ZV90IF9fbmJ5dGVzLCBfX29mZl90ICpfX2Jhc2VwKSAgOwpleHRlcm4gX19zc2l6ZV90IGdldGRp
cmVudHJpZXMgIChpbnQgX19mZCwgY2hhciAqX19idWYsCgkJCQkgICAgIHNpemVfdCBfX25ieXRl
cywgX19vZmZfdCAqX19iYXNlcCkgIDsKCgoKCiAKCgojIDEzMCAieGR2aS5oIiAyCgoKIyAxNDQg
InhkdmkuaCIKCgogCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiMgMTkzICJ4ZHZpLmgiCgoKCgoK
CiMgMSAiLi4va3BhdGhzZWEvYy12YXJhcmcuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVk
ZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCnZv
aWQgdmFfZW5kIChfX2dudWNfdmFfbGlzdCk7CQkgCgoKIAoKCgogCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKCgoKCgoKCgoKIyAxNjggIi91c3IvbGliL2djYy1s
aWIvaTY4Ni1saW51eC9wZ2NjLTIuOTEuNjAvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCiAKCgoKCiAK
CiAKCiAKCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIyAyOSAiLi4va3BhdGhzZWEvYy12YXJhcmcuaCIgMgoKCgoKCgoKCgoKCgoKIyA1OSAi
Li4va3BhdGhzZWEvYy12YXJhcmcuaCIKCgoKIyAxOTkgInhkdmkuaCIgMgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmNoYXIgKnVybG9jYWxp
emUgIChjb25zdCAgY2hhciAqZmlsZW5hbWUpICA7CmludCBsYXN0d3d3b3BlbjsKCgogCgoKCgoK
CgoKCgp0eXBlZGVmCXVuc2lnbmVkIGNoYXIJdWJ5dGU7CgoKdHlwZWRlZgl1bnNpZ25lZCBpbnQJ
d2lkZV91Ynl0ZTsKdHlwZWRlZglpbnQJCXdpZGVfYm9vbDsKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKZXh0ZXJuCXVuc2lnbmVkIGludCAgCWJpdF9tYXNrc1soOCAqIDQgKSAgKyAxXTsK
CnN0cnVjdCBmcmFtZSB7CglzdHJ1Y3QgZnJhbWVkYXRhIHsKCQlsb25nIGR2aV9oLCBkdmlfdiwg
dywgeCwgeSwgejsKCQlpbnQgcHhsX3Y7Cgl9IGRhdGE7CglzdHJ1Y3QgZnJhbWUgKm5leHQsICpw
cmV2Owp9OwoKCgoKdHlwZWRlZgl2b2lkCSgqc2V0X2NoYXJfcHJvYykgICh3aWRlX3VieXRlLCB3
aWRlX3VieXRlKSAgOwoKCnN0cnVjdCBkcmF3aW5mIHsJIAoJc3RydWN0IGZyYW1lZGF0YSBkYXRh
OwoJc3RydWN0IGZvbnQJKmZvbnRwOwoJc2V0X2NoYXJfcHJvYwlzZXRfY2hhcl9wOwoJaW50CQl0
bl90YWJsZV9sZW47CglzdHJ1Y3QgZm9udAkqKnRuX3RhYmxlOwoJc3RydWN0IHRuCSp0bl9oZWFk
OwoJdWJ5dGUJCSpwb3MsICplbmQ7CglzdHJ1Y3QgZm9udAkqdmlydHVhbDsKCglpbnQJCWRpcjsK
Cn07CgpleHRlcm4gCXN0cnVjdCBkcmF3aW5mCWN1cnJpbmY7CgogCgoKCgoKCgoKCgoKCmV4dGVy
biAJaW50CWN1cnJlbnRfcGFnZTsKZXh0ZXJuIAlpbnQJdG90YWxfcGFnZXM7CmV4dGVybiAJaW50
CXBhZ2Vub19jb3JyZWN0CSA7CmV4dGVybiAJbG9uZwltYWduaWZpY2F0aW9uOwpleHRlcm4gCWRv
dWJsZQlkaW1jb252OwpleHRlcm4gCWRvdWJsZQl0cGljX2NvbnY7CmV4dGVybiAJaW50CW5fZmls
ZXNfbGVmdDsJIApleHRlcm4gCXRpbWVfdAlkdmlfdGltZTsJCSAKZXh0ZXJuIAl1bnNpZ25lZCBp
bnQJcGFnZV93LCBwYWdlX2g7CgoKCgoKCgoKCgoKCmV4dGVybiAJaW50CXNjYW5uZWRfcGFnZTsJ
CSAKZXh0ZXJuIAlpbnQJc2Nhbm5lZF9wYWdlX2JhazsJIApleHRlcm4gCWludAlzY2FubmVkX3Bh
Z2VfcmVzZXQ7CSAKCgogCgoKCmV4dGVybiAJbG9uZwkqcGFnZV9vZmZzZXQ7CgogCgoKZXh0ZXJu
IAlCb29sZWFuCXdhcm5fc3BlY19ub3c7CgogCgoKZXh0ZXJuIAlCb29sZWFuCXBzZmlnX2JlZ3Vu
CSA7CgoKIAoKCnN0cnVjdCBiaXRtYXAgewoJdW5zaWduZWQgc2hvcnQJdywgaDsJCSAKCXNob3J0
CQlieXRlc193aWRlOwkgCgljaGFyCQkqYml0czsJCSAKfTsKCiAKCgoKCgoKc3RydWN0IGdseXBo
IHsKCWxvbmcgYWRkcjsJCSAKCWxvbmcgZHZpX2FkdjsJCSAKCXNob3J0IHgsIHk7CQkgCglzdHJ1
Y3QgYml0bWFwIGJpdG1hcDsJIAoJc2hvcnQgeDIsIHkyOwkJIAoKCVhJbWFnZSAqaW1hZ2UyOwoJ
Y2hhciAqcGl4bWFwMjsKCWNoYXIgKnBpeG1hcDJfdDsKCglzdHJ1Y3QgYml0bWFwIGJpdG1hcDI7
CSAKfTsKCiAKCgpzdHJ1Y3QgbWFjcm8gewoJdWJ5dGUJKnBvczsJCSAKCXVieXRlCSplbmQ7CQkg
Cglsb25nCWR2aV9hZHY7CSAKCUJvb2xlYW4JZnJlZV9tZTsJIAoJCQkJIAp9OwoKIAoKCgoKCgoK
CgoKCgoKCnR5cGVkZWYJdm9pZCAoKnJlYWRfY2hhcl9wcm9jKSAgKHJlZ2lzdGVyIHN0cnVjdCBm
b250ICosIHdpZGVfdWJ5dGUpICA7CgpzdHJ1Y3QgZm9udCB7CglzdHJ1Y3QgZm9udCAqbmV4dDsJ
CSAKCWNoYXIgKmZvbnRuYW1lOwkJCSAKCWZsb2F0IGZzaXplOwkJCSAKCWludCBtYWdzdGVwdmFs
OwkJCSAKCUZJTEUgKmZpbGU7CQkJIAoJY2hhciAqZmlsZW5hbWU7CQkJIAoJbG9uZyBjaGVja3N1
bTsJCQkgCgl1bnNpZ25lZCBzaG9ydCB0aW1lc3RhbXA7CSAKCXVieXRlIGZsYWdzOwkJCSAKCgl3
aWRlX3VieXRlIG1heGNoYXI7CQkJIAoKCgoJZG91YmxlIGRpbWNvbnY7CQkJIAoJc2V0X2NoYXJf
cHJvYyBzZXRfY2hhcl9wOwkgCgkJIAoJcmVhZF9jaGFyX3Byb2MgcmVhZF9jaGFyOwkgCglzdHJ1
Y3QgZ2x5cGggKmdseXBoOwoJCSAKCXN0cnVjdCBmb250ICoqdmZfdGFibGU7CQkgCglzdHJ1Y3Qg
dG4gKnZmX2NoYWluOwkJIAoJc3RydWN0IGZvbnQgKmZpcnN0X2ZvbnQ7CSAKCXN0cnVjdCBtYWNy
byAqbWFjcm87CgkJIAoJCSAKfTsKCgoKCgoKCgpzdHJ1Y3QgdG4gewoJc3RydWN0IHRuICpuZXh0
OwkJIAoJaW50IFRlWG51bWJlcjsJCQkgCglzdHJ1Y3QgZm9udCAqZm9udHA7CQkgCn07CgpleHRl
cm4gCXN0cnVjdCBmb250CSp0bl90YWJsZVszMCBdOwpleHRlcm4gCXN0cnVjdCBmb250CSpmb250
X2hlYWQJIDsKZXh0ZXJuIAlzdHJ1Y3QgdG4JKnRuX2hlYWQJIDsKCmV4dGVybiAJd2lkZV91Ynl0
ZQkJbWF4Y2hhcjsKCgoKZXh0ZXJuIAl1bnNpZ25lZCBzaG9ydAljdXJyZW50X3RpbWVzdGFtcCAg
OwoKIAoKCgpleHRlcm4Jc3RydWN0IF9yZXNvdXJjZSB7CgoKCgoJaW50CQlzaHJpbmtmYWN0b3I7
CgoJaW50CQlfZGVuc2l0eTsKCglmbG9hdAkJX2dhbW1hOwoKCWludAkJX3BpeGVsc19wZXJfaW5j
aDsKCUJvb2xlYW4JCV9kZWxheV9ydWxlcnM7CglpbnQJCV90aWNrX2xlbmd0aDsKCWNoYXIJCSpf
dGlja191bml0czsKCWNvbnN0IAljaGFyCSpzaWRlbWFyZ2luOwoJY29uc3QgCWNoYXIJKnRvcG1h
cmdpbjsKCWNvbnN0IAljaGFyCSp4b2Zmc2V0OwoJY29uc3QgCWNoYXIJKnlvZmZzZXQ7Cgljb25z
dCAJY2hhcgkqcGFwZXI7Cgljb25zdCAJY2hhcgkqX2FsdF9mb250OwoJQm9vbGVhbgkJbWFrZXBr
OwoJY29uc3QgCWNoYXIJKm1mbW9kZTsKCUJvb2xlYW4JCV9saXN0X2ZvbnRzOwoJQm9vbGVhbgkJ
cmV2ZXJzZTsKCUJvb2xlYW4JCV93YXJuX3NwZWM7CglCb29sZWFuCQlfaHVzaF9jaGFyczsKCUJv
b2xlYW4JCV9odXNoX2NoazsKCUJvb2xlYW4JCXNhZmVyOwoKCgoKCVBpeGVsCQlfZm9yZV9QaXhl
bDsKCVBpeGVsCQlfYmFja19QaXhlbDsKCglQaXhlbAkJX2JyZHJfUGl4ZWw7CglQaXhlbAkJX2hs
X1BpeGVsOwoJUGl4ZWwJCV9jcl9QaXhlbDsKCgljb25zdCAJY2hhcgkqaWNvbl9nZW9tZXRyeTsK
CUJvb2xlYW4JCWtlZXBfZmxhZzsKCUJvb2xlYW4JCWNvcHk7CglCb29sZWFuCQl0aG9yb3VnaDsK
CgkgCgoJQm9vbGVhbgkJX3Bvc3RzY3JpcHQ7CglCb29sZWFuCQlwcmVzY2FuOwoJQm9vbGVhbgkJ
YWxsb3dfc2hlbGw7CgoKCgoKCgoJQm9vbGVhbgkJdXNlR1M7CglCb29sZWFuCQlnc19zYWZlcjsK
CUJvb2xlYW4JCWdzX2FscGhhOwoJY29uc3QgCWNoYXIJKmdzX3BhdGg7Cgljb25zdCAJY2hhcgkq
Z3NfcGFsZXR0ZTsKCgoJY29uc3QgCWNoYXIJKmRlYnVnX2FyZzsKCUJvb2xlYW4JCXZlcnNpb25f
ZmxhZzsKCglCb29sZWFuCQlleHBlcnQ7CglpbnQJCXNocmlua2J1dHRvbls0XTsKCgljb25zdCAJ
Y2hhcgkqbWdfYXJnWzVdOwoKCUJvb2xlYW4JCV91c2VfZ3JleTsKCUJvb2wzCQlpbnN0YWxsOwoK
CglpbnQgX2dyaWRfbW9kZTsKCWNoYXIgKmdyaWQxX2NvbG9yLCAqZ3JpZDJfY29sb3IsICpncmlk
M19jb2xvcjsKCglQaXhlbAlfZ3JpZDFfUGl4ZWwsIF9ncmlkMl9QaXhlbCwgX2dyaWQzX1BpeGVs
OwoKCgoJQm9vbGVhbglfdW5kZXJsaW5lX2xpbms7CgljaGFyCSpfYnJvd3NlcjsKCWNoYXIJKl9V
UkxiYXNlOwoJY2hhcgkqX3Njcm9sbF9wYWdlczsKCn0gcmVzb3VyY2U7CgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAJUGl4ZWwJCXBsYW5lX21hc2tzWzRdOwpl
eHRlcm4gCVhDb2xvcgkJZm9yZV9jb2xvcl9kYXRhLCBiYWNrX2NvbG9yX2RhdGE7CgoKZXh0ZXJu
CXN0cnVjdAltZ19zaXplX3JlYyB7CglpbnQJCXc7CglpbnQJCWg7Cn0KCW1nX3NpemVbNV07Cgpl
eHRlcm4gCWludAkJZGVidWcJCSA7CgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIAlpbnQJCW9m
ZnNldF94LCBvZmZzZXRfeTsKZXh0ZXJuIAl1bnNpZ25lZCBpbnQJdW5zaHJ1bmtfcGFwZXJfdywg
dW5zaHJ1bmtfcGFwZXJfaDsKZXh0ZXJuIAl1bnNpZ25lZCBpbnQJdW5zaHJ1bmtfcGFnZV93LCB1
bnNocnVua19wYWdlX2g7CgpleHRlcm4gICB1bnNpZ25lZCBpbnQJdW5zaHJ1bmtfcGFwZXJfdW5p
dDsKCgoKZXh0ZXJuIAlpbnQJSFRlWG5leHRfZXh0ZXJuOyAgCmV4dGVybiAJY2hhcgkqdGVtcG9y
YXJ5X2RpcgkgOwpleHRlcm4gCWNoYXIJKmFuY2hvcl9uYW1lCSA7CmV4dGVybiAJQm9vbGVhbglV
UkxfYXdhcmUJIDsKZXh0ZXJuIAlCb29sZWFuCWhpZ2hsaWdodAkgOwpleHRlcm4gaW50IEhUZVhB
bmVzdGxldmVsOwkgCmV4dGVybiBpbnQgSFRlWHJlZmxldmVsOwkgCgoKZXh0ZXJuIAljaGFyCQkq
ZHZpX25hbWUJIDsKZXh0ZXJuIAlGSUxFCQkqZHZpX2ZpbGU7CQkgCmV4dGVybiAJY29uc3QgIGNo
YXIJKnByb2c7CmV4dGVybiAJaW50CQliYWtfc2hyaW5rOwkJIApleHRlcm4gCURpbWVuc2lvbgl3
aW5kb3dfdywgd2luZG93X2g7CmV4dGVybiAJWEltYWdlCQkqaW1hZ2U7CmV4dGVybiAJaW50CQli
YWNraW5nX3N0b3JlOwpleHRlcm4gCWludAkJaG9tZV94LCBob21lX3k7CgpleHRlcm4gCURpc3Bs
YXkJCSpESVNQOwpleHRlcm4gCVNjcmVlbgkJKlNDUk47CgpleHRlcm4gCWludAkJc2NyZWVuX251
bWJlcjsKZXh0ZXJuIAlWaXN1YWwJCSpvdXJfdmlzdWFsOwpleHRlcm4gCXVuc2lnbmVkIGludAlv
dXJfZGVwdGg7CmV4dGVybiAJQ29sb3JtYXAJb3VyX2NvbG9ybWFwOwpleHRlcm4gCUdDCQljb3B5
R0M7CgoKCgoKCmV4dGVybiAJR0MJCXJ1bGVHQzsKZXh0ZXJuIAlHQwkJZm9yZUdDLCBoaWdoR0M7
CmV4dGVybiAJR0MJCWZvcmVHQzI7CgpleHRlcm4gICBHQyAgICAgIGdyaWQxR0MsIGdyaWQyR0Ms
IGdyaWQzR0M7CgpleHRlcm4gCUJvb2xlYW4JCWNvcHk7CgpleHRlcm4gCUN1cnNvcgkJcmVkcmF3
X2N1cnNvciwgcmVhZHlfY3Vyc29yOwoKCmV4dGVybiAJUGl4ZWwJCSpwaXhlbHRibDsKZXh0ZXJu
IAlQaXhlbAkJKnBpeGVsdGJsX3Q7CgoKZXh0ZXJuIAlCb29sZWFuCQljYW5pdAkJIDsKZXh0ZXJu
IAlqbXBfYnVmCQljYW5pdF9lbnY7CmV4dGVybiAJdm9sYXRpbGUgIHNob3J0CWV2ZW50X2NvdW50
ZXIJIDsKCnN0cnVjdAlXaW5kb3dSZWMgewoJV2luZG93CQl3aW47CglpbnQJCXNocmlua2ZhY3Rv
cjsKCWludAkJYmFzZV94LCBiYXNlX3k7Cgl1bnNpZ25lZCBpbnQJd2lkdGgsIGhlaWdodDsKCWlu
dAltaW5feCwgbWF4X3gsIG1pbl95LCBtYXhfeTsJIAp9OwoKZXh0ZXJuCXN0cnVjdCBXaW5kb3dS
ZWMgbWFuZSwgYWx0LCBjdXJyd2luOwpleHRlcm4gCWludAkJbWluX3gsIG1heF94LCBtaW5feSwg
bWF4X3k7CgoKCgpleHRlcm4gCVdpZGdldAkJdG9wX2xldmVsLCB2cG9ydF93aWRnZXQsIGRyYXdf
d2lkZ2V0LCBjbGlwX3dpZGdldDsKCmV4dGVybiAJV2lkZ2V0CXBhbmVfd2lkZ2V0LCBhbmNob3Jf
c2VhcmNoLCBhbmNob3JfaW5mbzsKCgoKCgoKCgoKCgpleHRlcm4gCVdpZGdldAlmb3JtX3dpZGdl
dDsKCgoKCgoKCgpleHRlcm4gCWptcF9idWYJCWR2aV9lbnY7CSAKZXh0ZXJuIAljb25zdCAJY2hh
cgkqZHZpX29vcHNfbXNnOwkgCgpleHRlcm4gCWNoYXIJKmZmbGluZQkgOwkgCgkJCQkJIAoJCQkJ
CSAKCQkJCQkgCmV4dGVybiAJaW50CWZmbGluZV9sZW4gIDsJIAoKCgoKCgoKCgoKCgoKCgkKZXh0
ZXJuCXN0cnVjdCBwc3Byb2NzCXsKCXZvaWQJKCp0b2dnbGUpICAodm9pZCkgIDsKCXZvaWQJKCpk
ZXN0cm95KSAgKHZvaWQpICA7Cgl2b2lkCSgqaW50ZXJydXB0KSAgKHZvaWQpICA7Cgl2b2lkCSgq
ZW5kcGFnZSkgICh2b2lkKSAgOwoJdm9pZAkoKmRyYXdiZWdpbikgIChpbnQsIGludCwgY29uc3Qg
IGNoYXIgKikgIDsKCXZvaWQJKCpkcmF3cmF3KSAgKGNvbnN0ICBjaGFyICopICA7Cgl2b2lkCSgq
ZHJhd2ZpbGUpICAoY29uc3QgIGNoYXIgKiwgRklMRSAqKSAgOwoJdm9pZAkoKmRyYXdlbmQpICAo
Y29uc3QgIGNoYXIgKikgIDsKCXZvaWQJKCpiZWdpbmhlYWRlcikgICh2b2lkKSAgOwoJdm9pZAko
KmVuZGhlYWRlcikgICh2b2lkKSAgOwoJdm9pZAkoKm5ld2RvYykgICh2b2lkKSAgOwp9CXBzcCwg
bm9fcHNfcHJvY3M7CgoKCiAKCgoKIAoKZXh0ZXJuCXZvaWQJY3JlYXRlX2J1dHRvbnMgIChYdEFy
Z1ZhbCkgIDsKCgpleHRlcm4Jdm9pZAlpbml0X3BsYW5lX21hc2tzICAodm9pZCkgIDsKCmV4dGVy
bgl2b2lkCWluaXRfY29sb3JzICAodm9pZCkgIDsKZXh0ZXJuCXZvaWQJcmVjb25maWcgICh2b2lk
KSAgOwoKZXh0ZXJuCXZvaWQJaGFuZGxlX2tleSAgKFdpZGdldCwgWHRQb2ludGVyLCBYRXZlbnQg
KiwgQm9vbGVhbiAqKSAgOwpleHRlcm4Jdm9pZAloYW5kbGVfcmVzaXplICAoV2lkZ2V0LCBYdFBv
aW50ZXIsIFhFdmVudCAqLCBCb29sZWFuICopICA7CmV4dGVybgl2b2lkCWhhbmRsZV9idXR0b24g
IChXaWRnZXQsIFh0UG9pbnRlciwgWEV2ZW50ICosIEJvb2xlYW4gKikgIDsKZXh0ZXJuCXZvaWQJ
aGFuZGxlX21vdGlvbiAgKFdpZGdldCwgWHRQb2ludGVyLCBYRXZlbnQgKiwgQm9vbGVhbiAqKSAg
OwpleHRlcm4Jdm9pZAloYW5kbGVfcmVsZWFzZSAgKFdpZGdldCwgWHRQb2ludGVyLCBYRXZlbnQg
KiwgQm9vbGVhbiAqKSAgOwpleHRlcm4Jdm9pZAloYW5kbGVfZXhwICAoV2lkZ2V0LCBYdFBvaW50
ZXIsIFhFdmVudCAqLCBCb29sZWFuICopICA7CgoKCgoKCgpleHRlcm4Jdm9pZAlzaG93bWVzc2Fn
ZSAgKGNvbnN0ICBjaGFyICopICA7CgpleHRlcm4Jdm9pZAlwc19yZWFkX2V2ZW50cyAgKHdpZGVf
Ym9vbCwgd2lkZV9ib29sKSAgOwoKCgoKZXh0ZXJuCXZvaWQJcmVkcmF3X3BhZ2UgICh2b2lkKSAg
OwpleHRlcm4Jdm9pZAlkb19wYWdlcyAgKHZvaWQpICA7CmV4dGVybgl2b2lkCXJlc2V0X2ZvbnRz
ICAodm9pZCkgIDsKZXh0ZXJuCXZvaWQJcmVhbGxvY19mb250ICAoc3RydWN0IGZvbnQgKiwgd2lk
ZV91Ynl0ZSkgIDsKZXh0ZXJuCXZvaWQJcmVhbGxvY192aXJ0dWFsX2ZvbnQgIChzdHJ1Y3QgZm9u
dCAqLCB3aWRlX3VieXRlKSAgOwpleHRlcm4JQm9vbGVhbglsb2FkX2ZvbnQgIChzdHJ1Y3QgZm9u
dCAqKSAgOwpleHRlcm4Jc3RydWN0IGZvbnQJKmRlZmluZV9mb250ICAoRklMRSAqLCB3aWRlX3Vi
eXRlLAoJCQlzdHJ1Y3QgZm9udCAqLCBzdHJ1Y3QgZm9udCAqKiwgdW5zaWduZWQgaW50LAoJCQlz
dHJ1Y3QgdG4gKiopICA7CmV4dGVybgl2b2lkCWluaXRfcGFnZSAgKHZvaWQpICA7CmV4dGVybgl2
b2lkCW9wZW5fZHZpX2ZpbGUgICh2b2lkKSAgOwpleHRlcm4JQm9vbGVhbgljaGVja19kdmlfZmls
ZSAgKHZvaWQpICA7CgpleHRlcm4Jdm9pZAlwdXRfZ3JpZCAgKGludCwgaW50LCB1bnNpZ25lZCBp
bnQsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBHQywgR0MsIEdDKSAgOwoKCgoKCgpleHRl
cm4Jdm9pZAlzZXRfY2hhciAgKHdpZGVfdWJ5dGUsIHdpZGVfdWJ5dGUpICA7CmV4dGVybgl2b2lk
CWxvYWRfbl9zZXRfY2hhciAgKHdpZGVfdWJ5dGUsIHdpZGVfdWJ5dGUpICA7CmV4dGVybgl2b2lk
CXNldF92Zl9jaGFyICAod2lkZV91Ynl0ZSwgd2lkZV91Ynl0ZSkgIDsKCmV4dGVybgl2b2lkCWRy
YXdfcGFnZSAgKHZvaWQpICA7CgoKCgoKCgoKZXh0ZXJuCXZvaWQJaW5pdF9mb250X29wZW4gICh2
b2lkKSAgOwpleHRlcm4JRklMRQkqZm9udF9vcGVuICAoY29uc3QgIGNoYXIgKiwgY2hhciAqKiwg
ZG91YmxlLCBpbnQgKiwgaW50LAoJCQljaGFyICoqKSAgOwoKZXh0ZXJuCXZvaWQJcHNfbmV3ZG9j
ICAodm9pZCkgIDsKZXh0ZXJuCXZvaWQJcHNfZGVzdHJveSAgKHZvaWQpICA7CgpleHRlcm4Jdm9p
ZAlhcHBsaWNhdGlvbkRvU3BlY2lhbCAgKGNoYXIgKikgIDsKCmV4dGVybgl2b2lkCXNjYW5fc3Bl
Y2lhbCAgKGNoYXIgKikgIDsKCmV4dGVybgl2b2xhdGlsZSAgdm9pZAlvb3BzICAoY29uc3QgIGNo
YXIgKm1lc3NhZ2UsIC4uLikgIDsKCgoKCgoKZXh0ZXJuCXZvaWQJZXhwYW5kbGluZSAgKGludCkg
IDsKZXh0ZXJuCXZvaWQJYWxsb2NfYml0bWFwICAoc3RydWN0IGJpdG1hcCAqKSAgOwoKCgpleHRl
cm4JaW50CW1lbWljbXAgIChjb25zdCAgY2hhciAqLCBjb25zdCAgY2hhciAqLCBzaXplX3QpICA7
CmV4dGVybglGSUxFCSogeGR2aV94Zm9wZW4gICAoY29uc3QgIGNoYXIgKiwgY29uc3QgIGNoYXIg
KiApICA7CgpleHRlcm4JRklMRQkqeGZvcGVuX2xvY2FsICAoY29uc3QgIGNoYXIgKiwgY29uc3Qg
IGNoYXIgKiApICA7CgoKCmV4dGVybglpbnQJeHBpcGUgIChpbnQgKikgIDsKZXh0ZXJuCURJUgkq
eGR2aV94b3BlbmRpciAgKGNvbnN0ICBjaGFyICopICA7CmV4dGVybgljb25zdCAJc3RydWN0IHBh
c3N3ZCAqZmZfZ2V0cHcgIChjb25zdCAgY2hhciAqKiwgY29uc3QgIGNoYXIgKikgIDsKZXh0ZXJu
CXVuc2lnbmVkIGxvbmcJbnVtICAoRklMRSAqLCBpbnQpICA7CmV4dGVybglsb25nCXNudW0gIChG
SUxFICosIGludCkgIDsKZXh0ZXJuCXZvaWQJcmVhZF9QS19pbmRleCAgKHN0cnVjdCBmb250ICos
IHdpZGVfYm9vbCkgIDsKZXh0ZXJuCXZvaWQJcmVhZF9HRl9pbmRleCAgKHN0cnVjdCBmb250ICos
IHdpZGVfYm9vbCkgIDsKCmV4dGVybgl1bnNpZ25lZCBsb25nIHJlYWRfVkZfaW5kZXggIChzdHJ1
Y3QgZm9udCAqLCB3aWRlX2Jvb2wpICA7CgoKCgoKZXh0ZXJuCXZvaWQJZHJhd2JlZ2luX25vbmUg
IChpbnQsIGludCwgY29uc3QgIGNoYXIgKikgIDsKZXh0ZXJuCXZvaWQJZHJhd19iYm94ICAodm9p
ZCkgIDsKZXh0ZXJuCXZvaWQJTnVsbFByb2MgICh2b2lkKSAgOwoKCgoKCgoKZXh0ZXJuCUJvb2xl
YW4JaW5pdEdTICAodm9pZCkgIDsKCgoKZXh0ZXJuCWludAlvcGVuX3d3d19maWxlICAodm9pZCkg
IDsKZXh0ZXJuCXZvaWQJY2xlYW51cF9hbmRfZXhpdCAgKGludCkgIDsKZXh0ZXJuCXZvaWQJaHRl
eF9jYW5faXQgICh2b2lkKSAgOwpleHRlcm4Jdm9pZAlzZWFyY2hfY2FsbGJhY2sgIChXaWRnZXQs
IFh0UG9pbnRlciwgWHRQb2ludGVyKSAgOwpleHRlcm4Jdm9pZAlkZXRhY2hfYW5jaG9yICAodm9p
ZCkgIDsKZXh0ZXJuCUZJTEUJKnhmb3Blbl9sb2NhbCAgKGNvbnN0ICBjaGFyICosIGNvbnN0ICBj
aGFyICogKSAgOwpleHRlcm4JY2hhcgkqTXlTdHJBbGxvY0NvcHkgIChjaGFyICoqLCBjaGFyICop
ICA7CmV4dGVybglpbnQJcG9pbnRlcmxvY2F0ZSAgKGludCAqLCBpbnQgKikgIDsKZXh0ZXJuCXZv
aWQJaHRleF9yZWNvcmRiaXRzICAoaW50LCBpbnQsIGludCwgaW50KSAgOwpleHRlcm4Jdm9pZAlo
dGV4X2luaXRwYWdlICAodm9pZCkgIDsKZXh0ZXJuCXZvaWQJaHRleF9kb25lcGFnZSAgKGludCwg
aW50KSAgOwpleHRlcm4Jdm9pZAlodGV4X3BhcnNlcGFnZXMgICh2b2lkKSAgOwpleHRlcm4Jdm9p
ZAlodGV4X3BhcnNlX3BhZ2UgIChpbnQpICA7CmV4dGVybgl2b2lkCWh0ZXhfc2NhbnBhZ2UgIChp
bnQpICA7CmV4dGVybgl2b2lkCWh0ZXhfc2NhbnBhZ2UgIChpbnQpICA7CmV4dGVybgl2b2lkCWh0
ZXhfZG9zcGVjaWFsICAobG9uZywgaW50KSAgOwpleHRlcm4Jdm9pZAlodGV4X3JlaW5pdCAgKHZv
aWQpICA7CmV4dGVybgl2b2lkCWh0ZXhfZG9fbG9jICAoY2hhciAqKSAgOwpleHRlcm4Jdm9pZAlh
ZGRfc2VhcmNoICAoY2hhciAqLCBpbnQpICA7CmV4dGVybglpbnQJaHRleF9oYW5kbGVyZWYgIChp
bnQsIGludCwgaW50KSAgOwpleHRlcm4Jdm9pZAlodGV4X2Rpc3BsYXlhbmNob3IgIChpbnQsIGlu
dCwgaW50KSAgOwpleHRlcm4Jdm9pZAlodGV4X2dvYmFjayAgKHZvaWQpICA7CmV4dGVybglpbnQJ
Y2hlY2tIeXBlclRlWCAgKGNoYXIgKiwgaW50KSAgOwpleHRlcm4Jdm9pZAlodGV4X2hhbmRsZXRh
ZyAgKGNoYXIgKiwgaW50KSAgOwpleHRlcm4Jdm9pZAlodGV4X2FuY2hvciAgKGludCwgY2hhciAq
LCBpbnQpICA7CmV4dGVybgl2b2lkCWh0ZXhfZG9ocmVmICAoY2hhciAqKSAgOwpleHRlcm4Jdm9p
ZAlodGV4X2RyYXdib3hlcyAgKHZvaWQpICA7CmV4dGVybgl2b2lkCWh0ZXhfdG9fcGFnZSAgKGlu
dCkgIDsKZXh0ZXJuCXZvaWQJaHRleF90b19hbmNob3IgIChpbnQsIGludCkgIDsKZXh0ZXJuCWlu
dAlodGV4X2lzX3VybCAgKGNvbnN0IGNoYXIgKikgIDsKZXh0ZXJuCXZvaWQJaHRleF9kb191cmwg
IChjaGFyICopICA7CmV4dGVybiAgdm9pZCAJcGFpbnRfYW5jaG9yICAoY2hhciAqKSAgOwpleHRl
cm4JaW50CWZldGNoX3JlbGF0aXZlX3VybCAgKGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICop
ICA7CmV4dGVybgl2b2lkCXdhaXRfZm9yX3VybHMgICh2b2lkKSAgOwpjaGFyICpmaWd1cmVfbWlt
ZV90eXBlICAoY2hhciAqKSAgOwoKCgoKCgogCgoKCgoKCgoKCiAKIAp0eXBlZGVmIHN0cnVjdCB7
CgljaGFyICp1cmw7ICAgICAKCWNoYXIgKmZpbGU7ICAgIAp9IEZpbGV0b1VSTGNvbnY7CgoKZXh0
ZXJuICBGaWxldG9VUkxjb252ICpmaWxlbGlzdCAgOwpleHRlcm4gIGludCBuVVJMcyAgOwoKCgoK
CiMgNDkgInhkdmktY29uZmlnLmgiIDIKCgoKIyA1NiAic3BlY2lhbC5jIiAyCgojIDEgIi4uL2tw
YXRoc2VhL2MtZm9wZW4uaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgojIDgwICIuLi9rcGF0aHNlYS9j
LWZvcGVuLmgiCgoKCgoKCgoKIyA1NyAic3BlY2lhbC5jIiAyCgojIDEgIi4uL2twYXRoc2VhL2Mt
Y3R5cGUuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgpl
bnVtCnsKICBfSVN1cHBlciA9ICggMCAgPCA4ID8gKCgxIDw8ICAwICkgPDwgOCkgOiAoKDEgPDwg
IDAgKSA+PiA4KSkgLAkgCiAgX0lTbG93ZXIgPSAoIDEgIDwgOCA/ICgoMSA8PCAgMSApIDw8IDgp
IDogKCgxIDw8ICAxICkgPj4gOCkpICwJIAogIF9JU2FscGhhID0gKCAyICA8IDggPyAoKDEgPDwg
IDIgKSA8PCA4KSA6ICgoMSA8PCAgMiApID4+IDgpKSAsCSAKICBfSVNkaWdpdCA9ICggMyAgPCA4
ID8gKCgxIDw8ICAzICkgPDwgOCkgOiAoKDEgPDwgIDMgKSA+PiA4KSkgLAkgCiAgX0lTeGRpZ2l0
ID0gKCA0ICA8IDggPyAoKDEgPDwgIDQgKSA8PCA4KSA6ICgoMSA8PCAgNCApID4+IDgpKSAsCSAK
ICBfSVNzcGFjZSA9ICggNSAgPCA4ID8gKCgxIDw8ICA1ICkgPDwgOCkgOiAoKDEgPDwgIDUgKSA+
PiA4KSkgLAkgCiAgX0lTcHJpbnQgPSAoIDYgIDwgOCA/ICgoMSA8PCAgNiApIDw8IDgpIDogKCgx
IDw8ICA2ICkgPj4gOCkpICwJIAogIF9JU2dyYXBoID0gKCA3ICA8IDggPyAoKDEgPDwgIDcgKSA8
PCA4KSA6ICgoMSA8PCAgNyApID4+IDgpKSAsCSAKICBfSVNibGFuayA9ICggOCAgPCA4ID8gKCgx
IDw8ICA4ICkgPDwgOCkgOiAoKDEgPDwgIDggKSA+PiA4KSkgLAkgCiAgX0lTY250cmwgPSAoIDkg
IDwgOCA/ICgoMSA8PCAgOSApIDw8IDgpIDogKCgxIDw8ICA5ICkgPj4gOCkpICwJIAogIF9JU3B1
bmN0ID0gKCAxMCAgPCA4ID8gKCgxIDw8ICAxMCApIDw8IDgpIDogKCgxIDw8ICAxMCApID4+IDgp
KSAsCSAKICBfSVNhbG51bSA9ICggMTEgIDwgOCA/ICgoMSA8PCAgMTEgKSA8PCA4KSA6ICgoMSA8
PCAgMTEgKSA+PiA4KSkgCSAKfTsKCgogCgoKCgoKCgoKCgpleHRlcm4gX19jb25zdCB1bnNpZ25l
ZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsJIApleHRlcm4gX19jb25zdCBpbnQgKl9fY3R5cGVfdG9s
b3dlcjsgIApleHRlcm4gX19jb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsgIAoKCgoKCgoKCgoK
CgogCgoKCmV4dGVybiBpbnQgIGlzYWxudW0gICAoaW50KSAgIDsKZXh0ZXJuIGludCAgaXNhbHBo
YSAgIChpbnQpICAgOwpleHRlcm4gaW50ICBpc2NudHJsICAgKGludCkgICA7CmV4dGVybiBpbnQg
IGlzZGlnaXQgICAoaW50KSAgIDsKZXh0ZXJuIGludCAgaXNsb3dlciAgIChpbnQpICAgOwpleHRl
cm4gaW50ICBpc2dyYXBoICAgKGludCkgICA7CmV4dGVybiBpbnQgIGlzcHJpbnQgICAoaW50KSAg
IDsKZXh0ZXJuIGludCAgaXNwdW5jdCAgIChpbnQpICAgOwpleHRlcm4gaW50ICBpc3NwYWNlICAg
KGludCkgICA7CmV4dGVybiBpbnQgIGlzdXBwZXIgICAoaW50KSAgIDsKZXh0ZXJuIGludCAgaXN4
ZGlnaXQgICAoaW50KSAgIDsKCgoKCgoKIApleHRlcm4gaW50IHRvbG93ZXIgIChpbnQgX19jKSAg
OwoKIApleHRlcm4gaW50IHRvdXBwZXIgIChpbnQgX19jKSAgOwoKCgoKIAoKZXh0ZXJuIGludCBp
c2FzY2lpICAoaW50IF9fYykgIDsKCiAKCmV4dGVybiBpbnQgdG9hc2NpaSAgKGludCBfX2MpICA7
CgoKCgogCmV4dGVybiBpbnQgIF90b3VwcGVyICAgKGludCkgICA7CmV4dGVybiBpbnQgIF90b2xv
d2VyICAgKGludCkgICA7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgMjIgIi4u
L2twYXRoc2VhL2MtY3R5cGUuaCIgMgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogIAoKIyA1OCAic3BlY2lhbC5jIiAyCgojIDEg
Ii4uL2twYXRoc2VhL2Mtc3RhdC5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgog
CgojIDEgIi91c3IvaW5jbHVkZS9zdGF0YnVmLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCiAKCgoKCgpzdHJ1Y3Qgc3RhdAogIHsKICAgIF9fZGV2X3Qgc3RfZGV2OwkJCSAKICAg
IHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDE7CiAgICBfX2lub190IHN0X2lubzsJCQkgCiAgICBf
X21vZGVfdCBzdF9tb2RlOwkJCSAKICAgIF9fbmxpbmtfdCBzdF9ubGluazsJCQkgCiAgICBfX3Vp
ZF90IHN0X3VpZDsJCQkgCiAgICBfX2dpZF90IHN0X2dpZDsJCQkgCiAgICBfX2Rldl90IHN0X3Jk
ZXY7CQkJIAogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMjsKICAgIF9fb2ZmX3Qgc3Rfc2l6
ZTsJCQkgCiAgICB1bnNpZ25lZCBsb25nIGludCBzdF9ibGtzaXplOwkgCgoKICAgIHVuc2lnbmVk
IGxvbmcgaW50IHN0X2Jsb2NrczsJIAogICAgX190aW1lX3Qgc3RfYXRpbWU7CQkJIAogICAgdW5z
aWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CQkJIAogICAg
dW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogICAgX190aW1lX3Qgc3RfY3RpbWU7CQkJIAog
ICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191
bnVzZWQ0OwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ1OwogIH07CgogCgoKCiAKCgoK
CgoKIAoKCgogCgoKCgoKCgoKCiMgMzIgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoK
CgoKCgoKCgoKCiAKCgoKCgogCgoKCgogCgoKCgoKCgoKIApleHRlcm4gaW50IF9fc3RhdCAgKF9f
Y29uc3QgY2hhciAqX19maWxlLCBzdHJ1Y3Qgc3RhdCAqX19idWYpICA7CmV4dGVybiBpbnQgc3Rh
dCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBzdHJ1Y3Qgc3RhdCAqX19idWYpICA7CgogCgpleHRl
cm4gaW50IF9fZnN0YXQgIChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSAgOwpleHRlcm4g
aW50IGZzdGF0ICAoaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX2J1ZikgIDsKCiAKCmV4dGVybiBp
bnQgX19sc3RhdCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBzdHJ1Y3Qgc3RhdCAqX19idWYpICA7
CgpleHRlcm4gaW50IGxzdGF0ICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIHN0cnVjdCBzdGF0ICpf
X2J1ZikgIDsKCgogCgoKZXh0ZXJuIGludCBfX2NobW9kICAoX19jb25zdCBjaGFyICpfX2ZpbGUs
IF9fbW9kZV90IF9fbW9kZSkgIDsKZXh0ZXJuIGludCBjaG1vZCAgKF9fY29uc3QgY2hhciAqX19m
aWxlLCBfX21vZGVfdCBfX21vZGUpICA7CgogCmV4dGVybiBpbnQgX19mY2htb2QgIChpbnQgX19m
ZCwgX19tb2RlX3QgX19tb2RlKSAgOwoKZXh0ZXJuIGludCBmY2htb2QgIChpbnQgX19mZCwgX19t
b2RlX3QgX19tb2RlKSAgOwoKCgogCgpleHRlcm4gX19tb2RlX3QgX191bWFzayAgKF9fbW9kZV90
IF9fbWFzaykgIDsKZXh0ZXJuIF9fbW9kZV90IHVtYXNrICAoX19tb2RlX3QgX19tYXNrKSAgOwoK
CgoKCgoKIApleHRlcm4gaW50IF9fbWtkaXIgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2Rl
X3QgX19tb2RlKSAgOwpleHRlcm4gaW50IG1rZGlyICAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9f
bW9kZV90IF9fbW9kZSkgIDsKCiAKCgpleHRlcm4gaW50IF9fbWtub2QgIChfX2NvbnN0IGNoYXIg
Kl9fcGF0aCwKCQkJIF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCBfX2RldikgIDsKCmV4dGVybiBp
bnQgbWtub2QgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKCQkgICAgICAgX19tb2RlX3QgX19tb2Rl
LCBfX2Rldl90IF9fZGV2KSAgOwoKCgogCmV4dGVybiBpbnQgbWtmaWZvICAoX19jb25zdCBjaGFy
ICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgIDsKDAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIApl
eHRlcm4gaW50IF9fZnhzdGF0ICAoaW50IF9fdmVyLCBpbnQgX19maWxkZXMsCgkJCSAgc3RydWN0
IHN0YXQgKl9fc3RhdF9idWYpICA7CmV4dGVybiBpbnQgX194c3RhdCAgKGludCBfX3ZlciwgX19j
b25zdCBjaGFyICpfX2ZpbGVuYW1lLAoJCQkgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpICA7CmV4
dGVybiBpbnQgX19seHN0YXQgIChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwK
CQkJICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgIDsKZXh0ZXJuIGludCBfX3hta25vZCAgKGlu
dCBfX3ZlciwgX19jb25zdCBjaGFyICpfX3BhdGgsCgkJCSAgX19tb2RlX3QgX19tb2RlLCBfX2Rl
dl90ICpfX2RldikgIDsKCgogCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgX19zdGF0IChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikKeyByZXR1cm4gX194c3RhdCAo
MyAgLCBfX3BhdGgsIF9fc3RhdGJ1Zik7IH0KZXh0ZXJuIF9faW5saW5lX18gaW50IHN0YXQgKF9f
Y29uc3QgY2hhciAqX19wYXRoLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7IHJldHVybiBfX3hz
dGF0ICgzICAsIF9fcGF0aCwgX19zdGF0YnVmKTsgfQoKZXh0ZXJuIF9faW5saW5lX18gaW50IF9f
bHN0YXQoX19jb25zdCBjaGFyICpfX3BhdGgsIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpCnsgcmV0
dXJuIF9fbHhzdGF0ICgzICAsIF9fcGF0aCwgX19zdGF0YnVmKTsgfQoKZXh0ZXJuIF9faW5saW5l
X18gaW50IGxzdGF0KF9fY29uc3QgY2hhciAqX19wYXRoLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVm
KQp7IHJldHVybiBfX2x4c3RhdCAoMyAgLCBfX3BhdGgsIF9fc3RhdGJ1Zik7IH0KCgpleHRlcm4g
X19pbmxpbmVfXyBpbnQgX19mc3RhdCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYp
CnsgcmV0dXJuIF9fZnhzdGF0ICgzICAsIF9fZmQsIF9fc3RhdGJ1Zik7IH0KZXh0ZXJuIF9faW5s
aW5lX18gaW50IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikKeyByZXR1
cm4gX19meHN0YXQgKDMgICwgX19mZCwgX19zdGF0YnVmKTsgfQoKZXh0ZXJuIF9faW5saW5lX18g
aW50IF9fbWtub2QgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsCgkJCSAg
ICAgICBfX2Rldl90IF9fZGV2KQp7IHJldHVybiBfX3hta25vZCAoMSAgLCBfX3BhdGgsIF9fbW9k
ZSwgJl9fZGV2KTsgfQoKZXh0ZXJuIF9faW5saW5lX18gaW50IG1rbm9kIChfX2NvbnN0IGNoYXIg
Kl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAoJCQkgICAgIF9fZGV2X3QgX19kZXYpCnsgcmV0dXJu
IF9feG1rbm9kICgxICAsIF9fcGF0aCwgX19tb2RlLCAmX19kZXYpOyB9CgoKCgogCgoKCiMgMjMg
Ii4uL2twYXRoc2VhL2Mtc3RhdC5oIiAyCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgNTkgInNwZWNpYWwuYyIgMgoKIyAxICIuLi9rcGF0aHNlYS9saW5lLmgiIDEKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKZXh0ZXJuICAgc3RyaW5nIHJlYWRfbGluZSAoIEZJ
TEUgKmYgKSA7CgoKIyA2MCAic3BlY2lhbC5jIiAyCgojIDEgIi4uL2twYXRoc2VhL3RleC1maWxl
LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCmV4dGVybiBjb25zdF9zdHJpbmcga3Bz
ZV9mYWxsYmFja19mb250OwoKCiAKCgpleHRlcm4gICBjb25zdF9zdHJpbmcga3BzZV9mYWxsYmFj
a19yZXNvbHV0aW9uc19zdHJpbmc7CgogCgpleHRlcm4gdW5zaWduZWQgKmtwc2VfZmFsbGJhY2tf
cmVzb2x1dGlvbnM7CgogCgoKZXh0ZXJuIHZvaWQga3BzZV9pbml0X2ZhbGxiYWNrX3Jlc29sdXRp
b25zICggc3RyaW5nIGVudnZhciApIDsKDAogCgoKdHlwZWRlZiBlbnVtCnsKICBrcHNlX2dmX2Zv
cm1hdCwKICBrcHNlX3BrX2Zvcm1hdCwKICBrcHNlX2FueV9nbHlwaF9mb3JtYXQsCSAKICBrcHNl
X3RmbV9mb3JtYXQsIAogIGtwc2VfYWZtX2Zvcm1hdCwgCiAga3BzZV9iYXNlX2Zvcm1hdCwgCiAg
a3BzZV9iaWJfZm9ybWF0LCAKICBrcHNlX2JzdF9mb3JtYXQsIAogIGtwc2VfY25mX2Zvcm1hdCwK
ICBrcHNlX2RiX2Zvcm1hdCwKICBrcHNlX2ZtdF9mb3JtYXQsCiAga3BzZV9mb250bWFwX2Zvcm1h
dCwKICBrcHNlX21lbV9mb3JtYXQsCiAga3BzZV9tZl9mb3JtYXQsIAogIGtwc2VfbWZwb29sX2Zv
cm1hdCwgCiAga3BzZV9tZnRfZm9ybWF0LCAKICBrcHNlX21wX2Zvcm1hdCwgCiAga3BzZV9tcHBv
b2xfZm9ybWF0LCAKICBrcHNlX21wc3VwcG9ydF9mb3JtYXQsCiAga3BzZV9vY3BfZm9ybWF0LAog
IGtwc2Vfb2ZtX2Zvcm1hdCwgCiAga3BzZV9vcGxfZm9ybWF0LAogIGtwc2Vfb3RwX2Zvcm1hdCwK
ICBrcHNlX292Zl9mb3JtYXQsCiAga3BzZV9vdnBfZm9ybWF0LAogIGtwc2VfcGljdF9mb3JtYXQs
CiAga3BzZV90ZXhfZm9ybWF0LAogIGtwc2VfdGV4ZG9jX2Zvcm1hdCwKICBrcHNlX3RleHBvb2xf
Zm9ybWF0LAogIGtwc2VfdGV4c291cmNlX2Zvcm1hdCwKICBrcHNlX3RleF9wc19oZWFkZXJfZm9y
bWF0LAogIGtwc2VfdHJvZmZfZm9udF9mb3JtYXQsCiAga3BzZV90eXBlMV9mb3JtYXQsIAogIGtw
c2VfdmZfZm9ybWF0LAogIGtwc2VfZHZpcHNfY29uZmlnX2Zvcm1hdCwKICBrcHNlX2lzdF9mb3Jt
YXQsCiAga3BzZV90cnVldHlwZV9mb3JtYXQsCiAga3BzZV90eXBlNDJfZm9ybWF0LAogIGtwc2Vf
d2ViMmNfZm9ybWF0LAogIGtwc2VfcHJvZ3JhbV90ZXh0X2Zvcm1hdCwKICBrcHNlX3Byb2dyYW1f
YmluYXJ5X2Zvcm1hdCwKICBrcHNlX2xhc3RfZm9ybWF0ICAKfSBrcHNlX2ZpbGVfZm9ybWF0X3R5
cGU7CgoKIAoKdHlwZWRlZiBlbnVtCnsKICBrcHNlX3NyY19pbXBsaWNpdCwgICAgCiAga3BzZV9z
cmNfY29tcGlsZSwgICAgIAogIGtwc2Vfc3JjX3RleG1mX2NuZiwgICAKICBrcHNlX3NyY19jbGll
bnRfY25mLCAgCiAga3BzZV9zcmNfZW52LCAgICAgICAgIAogIGtwc2Vfc3JjX3gsICAgICAgICAg
ICAKICBrcHNlX3NyY19jbWRsaW5lICAgICAgCn0ga3BzZV9zcmNfdHlwZTsKCgogCgoKCgoKCnR5
cGVkZWYgc3RydWN0CnsKICBjb25zdF9zdHJpbmcgdHlwZTsJCSAKICBjb25zdF9zdHJpbmcgcGF0
aDsJCSAKICBjb25zdF9zdHJpbmcgcmF3X3BhdGg7CSAKICBjb25zdF9zdHJpbmcgcGF0aF9zb3Vy
Y2U7CSAKICBjb25zdF9zdHJpbmcgb3ZlcnJpZGVfcGF0aDsJIAogIGNvbnN0X3N0cmluZyBjbGll
bnRfcGF0aDsJIAogIGNvbnN0X3N0cmluZyBjbmZfcGF0aDsJIAogIGNvbnN0X3N0cmluZyBkZWZh
dWx0X3BhdGg7CSAKICBjb25zdF9zdHJpbmcgKnN1ZmZpeDsJCSAKICBjb25zdF9zdHJpbmcgKmFs
dF9zdWZmaXg7CSAKICBib29sZWFuIHN1ZmZpeF9zZWFyY2hfb25seTsJIAogIGNvbnN0X3N0cmlu
ZyBwcm9ncmFtOwkJIAogIGNvbnN0X3N0cmluZyBwcm9ncmFtX2FyZ3M7CSAKICBib29sZWFuIHBy
b2dyYW1fZW5hYmxlZF9wOwkgCiAga3BzZV9zcmNfdHlwZSBwcm9ncmFtX2VuYWJsZV9sZXZlbDsg
IAogIGJvb2xlYW4gYmlubW9kZTsgICAgICAgICAgICAgICAKfSBrcHNlX2Zvcm1hdF9pbmZvX3R5
cGU7CgogCgpleHRlcm4gICBrcHNlX2Zvcm1hdF9pbmZvX3R5cGUga3BzZV9mb3JtYXRfaW5mb1tr
cHNlX2xhc3RfZm9ybWF0XTsKCgogCgpleHRlcm4gICB2b2lkIGtwc2Vfc2V0X3Byb2dyYW1fZW5h
YmxlZCAoIGtwc2VfZmlsZV9mb3JtYXRfdHlwZSBmbXQgLCAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB2YWx1ZSAsICAga3BzZV9zcmNfdHlwZSBsZXZl
bCApIDsKIAoKZXh0ZXJuICAgdm9pZCBrcHNlX21ha2V0ZXhfb3B0aW9uICggY29uc3Rfc3RyaW5n
IGZtdG5hbWUgLCAgICBib29sZWFuIHZhbHVlICkgOwoKIAoKCmV4dGVybiAgIGNvbnN0X3N0cmlu
ZyBrcHNlX2luaXRfZm9ybWF0ICgga3BzZV9maWxlX2Zvcm1hdF90eXBlICkgOwoKIAoKCmV4dGVy
biAgIHN0cmluZyBrcHNlX2ZpbmRfZmlsZSAoIGNvbnN0X3N0cmluZyBuYW1lICwgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrcHNlX2ZpbGVfZm9ybWF0X3R5cGUgZm9ybWF0ICwgICAg
Ym9vbGVhbiBtdXN0X2V4aXN0ICkgOwoKIAoKCgoKCgoKIAoKCgoKCiAKZXh0ZXJuICAgRklMRSAq
a3BzZV9vcGVuX2ZpbGUgKCBjb25zdF9zdHJpbmcgLCAgIGtwc2VfZmlsZV9mb3JtYXRfdHlwZSAp
IDsKCiAKCgoKZXh0ZXJuICAgdm9pZCBrcHNlX3Jlc2V0X3Byb2dyYW1fbmFtZSAoIGNvbnN0X3N0
cmluZyBwcm9nbmFtZSApIDsKCgojIDYxICJzcGVjaWFsLmMiIDIKCgoKCgoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvc3lzL3dhaXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoK
CgogCgojIDEgIi91c3IvaW5jbHVkZS93YWl0ZmxhZ3MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKIyAzNCAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMwoKCgoKIAoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIyA3MSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMK
CgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvd2FpdHN0YXR1cy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgogCgoKIAoKCiAKCgogCgoKIAoKCgoKCgoKCiAKCgogCgoKIAoKCgoK
CgoKCgp1bmlvbiB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3RydWN0CiAgICAgIHsK
Cgl1bnNpZ25lZCBpbnQgX193X3Rlcm1zaWc6NzsgIAoJdW5zaWduZWQgaW50IF9fd19jb3JlZHVt
cDoxOyAgCgl1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6ODsgIAoJdW5zaWduZWQgaW50OjE2OwoK
CgoKCgoKICAgICAgfSBfX3dhaXRfdGVybWluYXRlZDsKICAgIHN0cnVjdAogICAgICB7CgoJdW5z
aWduZWQgaW50IF9fd19zdG9wdmFsOjg7ICAKCXVuc2lnbmVkIGludCBfX3dfc3RvcHNpZzo4OyAg
Cgl1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCiAgICAgIH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKCgoK
CgoKCgoKCgojIDgyICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAzCgoKCgoKCgoKCgoKCgoK
CgoKIAoKZXh0ZXJuIF9fcGlkX3QgX193YWl0ICAodm9pZCAqICAgX19zdGF0X2xvYykgIDsKZXh0
ZXJuIF9fcGlkX3Qgd2FpdCAgKHZvaWQgKiAgIF9fc3RhdF9sb2MpICA7CgoKIAoKCgoKIAoKCgoK
CgoKCgoKCmV4dGVybiBfX3BpZF90IF9fd2FpdHBpZCAgKF9fcGlkX3QgX19waWQsIGludCAqX19z
dGF0X2xvYywKCQkJICAgICAgIGludCBfX29wdGlvbnMpICA7CmV4dGVybiBfX3BpZF90IHdhaXRw
aWQgIChfX3BpZF90IF9fcGlkLCBpbnQgKl9fc3RhdF9sb2MsCgkJCSAgICAgaW50IF9fb3B0aW9u
cykgIDsKCgogCgpzdHJ1Y3QgcnVzYWdlOwoKIAoKCgoKZXh0ZXJuIF9fcGlkX3QgX193YWl0MyAg
KHZvaWQgKiAgIF9fc3RhdF9sb2MsCgkJCSAgICAgaW50IF9fb3B0aW9ucywgc3RydWN0IHJ1c2Fn
ZSAqIF9fdXNhZ2UpICA7CmV4dGVybiBfX3BpZF90IHdhaXQzICAodm9pZCAqICAgX19zdGF0X2xv
YywKCQkJICAgaW50IF9fb3B0aW9ucywgc3RydWN0IHJ1c2FnZSAqIF9fdXNhZ2UpICA7CgoKCiAK
CnN0cnVjdCBydXNhZ2U7CgogCmV4dGVybiBfX3BpZF90IF9fd2FpdDQgIChfX3BpZF90IF9fcGlk
LCB2b2lkICogICBfX3N0YXRfbG9jLAoJCQkgICAgIGludCBfX29wdGlvbnMsIHN0cnVjdCBydXNh
Z2UgKl9fdXNhZ2UpICA7CmV4dGVybiBfX3BpZF90IHdhaXQ0ICAoX19waWRfdCBfX3BpZCwgdm9p
ZCAqICAgX19zdGF0X2xvYywKCQkJICAgaW50IF9fb3B0aW9ucywgc3RydWN0IHJ1c2FnZSAqX191
c2FnZSkgIDsKCgoKIAoKCiMgNzAgInNwZWNpYWwuYyIgMgoKCgoKCgoKCgoKCgoKZXh0ZXJuCWRv
dWJsZQlmbG9vciAgKGRvdWJsZSkgIDsKCgpzdGF0aWMJaW50CXh4WzMwMCBdLCB5eVszMDAgXTsJ
IApzdGF0aWMJaW50CXBhdGhfbGVuID0gMDsJIApzdGF0aWMJaW50CXBlbl9zaXplID0gMTsJIAoK
c3RhdGljCUJvb2xlYW4Jd2hpdGVuID0gMCA7CnN0YXRpYwlCb29sZWFuCXNoYWRlID0gMCA7CnN0
YXRpYwlCb29sZWFuCWJsYWNrZW4gPSAwIDsKCiAKCgoKCgoKCiAKCgoKc3RhdGljCXZvaWQKV2Fy
bmluZyhmbXQsIG1zZykKCWNoYXIJKmZtdCwgKm1zZzsKewoJKHZvaWQpIGZwcmludGYgKCgoX0lP
X0ZJTEUqKSgmX0lPX3N0ZGVycl8pKSAgLCAiJXM6ICIsIHByb2cpOwoJKHZvaWQpIGZwcmludGYg
KCgoX0lPX0ZJTEUqKSgmX0lPX3N0ZGVycl8pKSAgLCBmbXQsIG1zZyk7Cgkodm9pZCkgZnB1dGMo
J1xuJywgKChfSU9fRklMRSopKCZfSU9fc3RkZXJyXykpICApOwp9CgoKIAoKCgoKCgoKIAoKCgpz
dGF0aWMJdm9pZApsaW5lX2J0dyhmeCwgZnksIHR4LCB0eSkKaW50IGZ4LCBmeSwgdHgsIHR5Owp7
CglyZWdpc3RlciBpbnQJZmN4ID0gKCgoaW50KSAoKCB0cGljX2NvbnYqKCBmeCApICkgKyAwLjUp
KSAvIGN1cnJ3aW4uc2hyaW5rZmFjdG9yICArICgoaW50KSAoKCBjdXJyaW5mLmRhdGEuZHZpX2gg
KSAvIGN1cnJ3aW4uc2hyaW5rZmFjdG9yICA+PiAxNikpICApICwKCQkJdGN4ID0gKCgoaW50KSAo
KCB0cGljX2NvbnYqKCB0eCApICkgKyAwLjUpKSAvIGN1cnJ3aW4uc2hyaW5rZmFjdG9yICArICgo
aW50KSAoKCBjdXJyaW5mLmRhdGEuZHZpX2ggKSAvIGN1cnJ3aW4uc2hyaW5rZmFjdG9yICA+PiAx
NikpICApICwKCQkJZmN5ID0gKCgoaW50KSAoKCB0cGljX2NvbnYqKCBmeSApICkgKyAwLjUpKSAv
IGN1cnJ3aW4uc2hyaW5rZmFjdG9yICArIGN1cnJpbmYuZGF0YS5weGxfdiApICwKCQkJdGN5ID0g
KCgoaW50KSAoKCB0cGljX2NvbnYqKCB0eSApICkgKyAwLjUpKSAvIGN1cnJ3aW4uc2hyaW5rZmFj
dG9yICArIGN1cnJpbmYuZGF0YS5weGxfdiApIDsKCglpZiAoKGZjeCA8IG1heF94IHx8IHRjeCA8
IG1heF94KSAmJiAoZmN4ID49IG1pbl94IHx8IHRjeCA+PSBtaW5feCkgJiYKCSAgICAoZmN5IDwg
bWF4X3kgfHwgdGN5IDwgbWF4X3kpICYmIChmY3kgPj0gbWluX3kgfHwgdGN5ID49IG1pbl95KSkK
CQlYRHJhd0xpbmUoRElTUCwgY3Vycndpbi53aW4sIHJ1bGVHQywKCQkgICAgZmN4IC0gY3Vycndp
bi5iYXNlX3gsIGZjeSAtIGN1cnJ3aW4uYmFzZV95LAoJCSAgICB0Y3ggLSBjdXJyd2luLmJhc2Vf
eCwgdGN5IC0gY3Vycndpbi5iYXNlX3kpOwp9CgogCgoKc3RhdGljCXZvaWQKZG90X2F0KHgsIHkp
CglpbnQJeCwgeTsKewoJcmVnaXN0ZXIgaW50CWN4ID0gKCgoaW50KSAoKCB0cGljX2NvbnYqKCB4
ICkgKSArIDAuNSkpIC8gY3Vycndpbi5zaHJpbmtmYWN0b3IgICsgKChpbnQpICgoIGN1cnJpbmYu
ZGF0YS5kdmlfaCApIC8gY3Vycndpbi5zaHJpbmtmYWN0b3IgID4+IDE2KSkgICkgLAoJCQljeSA9
ICgoKGludCkgKCggdHBpY19jb252KiggeSApICkgKyAwLjUpKSAvIGN1cnJ3aW4uc2hyaW5rZmFj
dG9yICArIGN1cnJpbmYuZGF0YS5weGxfdiApIDsKCglpZiAoY3ggPCBtYXhfeCAmJiBjeCA+PSBt
aW5feCAmJiBjeSA8IG1heF95ICYmIGN5ID49IG1pbl95KQoJICAgIFhEcmF3UG9pbnQoRElTUCwg
Y3Vycndpbi53aW4sIHJ1bGVHQywKCQljeCAtIGN1cnJ3aW4uYmFzZV94LCBjeSAtIGN1cnJ3aW4u
YmFzZV95KTsKfQoKIAoKCgoKCSAKc3RhdGljCXZvaWQKZG9fYXR0cmlidXRlX3BhdGgobGFzdF9t
aW5feCwgbGFzdF9tYXhfeCwgbGFzdF9taW5feSwgbGFzdF9tYXhfeSkKaW50IGxhc3RfbWluX3gs
IGxhc3RfbWF4X3gsIGxhc3RfbWluX3ksIGxhc3RfbWF4X3k7CnsKfQoKIAoKCgogCnN0YXRpYwl2
b2lkCnNldF9wZW5fc2l6ZShjcCkKCWNoYXIJKmNwOwp7CglpbnQJcHM7CgoJaWYgKHNzY2FuZihj
cCwgIiAlZCAiLCAmcHMpICE9IDEpIHsKCSAgICBXYXJuaW5nKCJpbnZhbGlkIC5wcyBjb21tYW5k
IGZvcm1hdDogJXMiLCBjcCk7CgkgICAgcmV0dXJuOwoJfQoJcGVuX3NpemUgPSAocHMgKiAoKHJl
c291cmNlLl9waXhlbHNfcGVyX2luY2ggLyBjdXJyd2luLnNocmlua2ZhY3RvciApICArIChyZXNv
dXJjZS5fcGl4ZWxzX3Blcl9pbmNoIC8gY3Vycndpbi5zaHJpbmtmYWN0b3IgKSApICsgMTAwMCkg
LyAyMDAwOwoJaWYgKHBlbl9zaXplIDwgMSkgcGVuX3NpemUgPSAxOwoJZWxzZSBpZiAocGVuX3Np
emUgPiA3ICkgcGVuX3NpemUgPSA3IDsKfQoKCiAKCgoKc3RhdGljCXZvaWQKZmx1c2hfcGF0aCgp
CnsKCXJlZ2lzdGVyIGludCBpOwoJaW50CWxhc3RfbWluX3gsIGxhc3RfbWF4X3gsIGxhc3RfbWlu
X3ksIGxhc3RfbWF4X3k7CgoJbGFzdF9taW5feCA9IDMwMDAwOwoJbGFzdF9taW5feSA9IDMwMDAw
OwoJbGFzdF9tYXhfeCA9IC0zMDAwMDsKCWxhc3RfbWF4X3kgPSAtMzAwMDA7Cglmb3IgKGkgPSAx
OyBpIDwgcGF0aF9sZW47IGkrKykgewoJICAgIGlmICh4eFtpXSA+IGxhc3RfbWF4X3gpIGxhc3Rf
bWF4X3ggPSB4eFtpXTsKCSAgICBpZiAoeHhbaV0gPCBsYXN0X21pbl94KSBsYXN0X21pbl94ID0g
eHhbaV07CgkgICAgaWYgKHl5W2ldID4gbGFzdF9tYXhfeSkgbGFzdF9tYXhfeSA9IHl5W2ldOwoJ
ICAgIGlmICh5eVtpXSA8IGxhc3RfbWluX3kpIGxhc3RfbWluX3kgPSB5eVtpXTsKCSAgICBsaW5l
X2J0dyh4eFtpXSwgeXlbaV0sIHh4W2krMV0sIHl5W2krMV0pOwoJfQoJaWYgKHh4W3BhdGhfbGVu
XSA+IGxhc3RfbWF4X3gpIGxhc3RfbWF4X3ggPSB4eFtwYXRoX2xlbl07CglpZiAoeHhbcGF0aF9s
ZW5dIDwgbGFzdF9taW5feCkgbGFzdF9taW5feCA9IHh4W3BhdGhfbGVuXTsKCWlmICh5eVtwYXRo
X2xlbl0gPiBsYXN0X21heF95KSBsYXN0X21heF95ID0geXlbcGF0aF9sZW5dOwoJaWYgKHl5W3Bh
dGhfbGVuXSA8IGxhc3RfbWluX3kpIGxhc3RfbWluX3kgPSB5eVtwYXRoX2xlbl07CglwYXRoX2xl
biA9IDA7Cglkb19hdHRyaWJ1dGVfcGF0aChsYXN0X21pbl94LCBsYXN0X21heF94LCBsYXN0X21p
bl95LCBsYXN0X21heF95KTsKfQoKCiAKCgoKCnN0YXRpYwl2b2lkCmZsdXNoX2Rhc2hlZChjcCwg
ZG90dGVkKQoJY2hhcgkqY3A7CglCb29sZWFuCWRvdHRlZDsKewoJaW50CWk7CglpbnQJbnVtZG90
czsKCWludAlseDAsIGx5MCwgbHgxLCBseTE7CglpbnQJY3gwLCBjeTAsIGN4MSwgY3kxOwoJZmxv
YXQJaW5jaGVzcGVyZGFzaDsKCWRvdWJsZQlkLCBzcGFjZXNpemUsIGEsIGIsIGR4LCBkeSwgbWls
bGlwZXJkYXNoOwoKCWlmIChzc2NhbmYoY3AsICIgJWYgIiwgJmluY2hlc3BlcmRhc2gpICE9IDEp
IHsKCSAgICBXYXJuaW5nKCJpbnZhbGlkIGZvcm1hdCBmb3IgZG90dGVkL2Rhc2hlZCBsaW5lOiAl
cyIsIGNwKTsKCSAgICByZXR1cm47Cgl9CglpZiAocGF0aF9sZW4gPD0gMSB8fCBpbmNoZXNwZXJk
YXNoIDw9IDAuMCkgewoJICAgIFdhcm5pbmcoImludmFsaWQgY29uZGl0aW9ucyBmb3IgZG90dGVk
L2Rhc2hlZCBsaW5lIiwgIiIpOwoJICAgIHJldHVybjsKCX0KCW1pbGxpcGVyZGFzaCA9IGluY2hl
c3BlcmRhc2ggKiAxMDAwLjA7CglseDAgPSB4eFsxXTsJbHkwID0geXlbMV07CglseDEgPSB4eFsy
XTsJbHkxID0geXlbMl07CglkeCA9IGx4MSAtIGx4MDsKCWR5ID0gbHkxIC0gbHkwOwoJaWYgKGRv
dHRlZCkgewoJICAgIG51bWRvdHMgPSBzcXJ0KGR4KmR4ICsgZHkqZHkpIC8gbWlsbGlwZXJkYXNo
ICsgMC41OwoJICAgIGlmIChudW1kb3RzID09IDApIG51bWRvdHMgPSAxOwoJICAgIGZvciAoaSA9
IDA7IGkgPD0gbnVtZG90czsgaSsrKSB7CgkJYSA9IChmbG9hdCkgaSAvIChmbG9hdCkgbnVtZG90
czsKCQljeDAgPSBseDAgKyBhICogZHggKyAwLjU7CgkJY3kwID0gbHkwICsgYSAqIGR5ICsgMC41
OwoJCWRvdF9hdChjeDAsIGN5MCk7CgkgICAgfQoJfQoJZWxzZSB7CgkgICAgZCA9IHNxcnQoZHgq
ZHggKyBkeSpkeSk7CgkgICAgbnVtZG90cyA9IGQgLyAoMi4wICogbWlsbGlwZXJkYXNoKSArIDEu
MDsKCSAgICBpZiAobnVtZG90cyA8PSAxKQoJCWxpbmVfYnR3KGx4MCwgbHkwLCBseDEsIGx5MSk7
CgkgICAgZWxzZSB7CgkJc3BhY2VzaXplID0gKGQgLSBudW1kb3RzICogbWlsbGlwZXJkYXNoKSAv
IChudW1kb3RzIC0gMSk7CgkJZm9yIChpID0gMDsgaSA8IG51bWRvdHMgLSAxOyBpKyspIHsKCQkg
ICAgYSA9IGkgKiAobWlsbGlwZXJkYXNoICsgc3BhY2VzaXplKSAvIGQ7CgkJICAgIGIgPSBhICsg
bWlsbGlwZXJkYXNoIC8gZDsKCQkgICAgY3gwID0gbHgwICsgYSAqIGR4ICsgMC41OwoJCSAgICBj
eTAgPSBseTAgKyBhICogZHkgKyAwLjU7CgkJICAgIGN4MSA9IGx4MCArIGIgKiBkeCArIDAuNTsK
CQkgICAgY3kxID0gbHkwICsgYiAqIGR5ICsgMC41OwoJCSAgICBsaW5lX2J0dyhjeDAsIGN5MCwg
Y3gxLCBjeTEpOwoJCSAgICBiICs9IHNwYWNlc2l6ZSAvIGQ7CgkJfQoJCWN4MCA9IGx4MCArIGIg
KiBkeCArIDAuNTsKCQljeTAgPSBseTAgKyBiICogZHkgKyAwLjU7CgkJbGluZV9idHcoY3gwLCBj
eTAsIGx4MSwgbHkxKTsKCSAgICB9Cgl9CglwYXRoX2xlbiA9IDA7Cn0KCgogCgoKCnN0YXRpYwl2
b2lkCmFkZF9wYXRoKGNwKQoJY2hhcgkqY3A7CnsKCWludAlwYXRoeCwgcGF0aHk7CgoJaWYgKCsr
cGF0aF9sZW4gPj0gMzAwICkgb29wcygiVG9vIG1hbnkgcG9pbnRzIik7CglpZiAoc3NjYW5mKGNw
LCAiICVkICVkICIsICZwYXRoeCwgJnBhdGh5KSAhPSAyKQoJICAgIG9vcHMoIk1hbGZvcm1lZCBw
YXRoIGNvbW1hbmQiKTsKCXh4W3BhdGhfbGVuXSA9IHBhdGh4OwoJeXlbcGF0aF9sZW5dID0gcGF0
aHk7Cn0KCgogCgoKCnN0YXRpYyB2b2lkCmltX2ZkcmF3KHgsIHkpCglkb3VibGUJeCx5Owp7Cglp
ZiAoKytwYXRoX2xlbiA+PSAzMDAgKSBvb3BzKCJUb28gbWFueSBhcmMgcG9pbnRzIik7Cgl4eFtw
YXRoX2xlbl0gPSB4ICsgMC41OwoJeXlbcGF0aF9sZW5dID0geSArIDAuNTsKfQoKCiAKCgoKc3Rh
dGljCXZvaWQKZHJhd19lbGxpcHNlKHhjLCB5YywgeHIsIHlyKQoJaW50CXhjLCB5YywgeHIsIHly
Owp7Cglkb3VibGUJYW5nbGUsIHRoZXRhOwoJaW50CW47CglpbnQJcHgwLCBweTAsIHB4MSwgcHkx
OwoKCWFuZ2xlID0gKHhyICsgeXIpIC8gMi4wOwoJdGhldGEgPSBzcXJ0KDEuMCAvIGFuZ2xlKTsK
CW4gPSAoMy4xNDE1OTI2NTM1OSAqIDIuMCkgIC8gdGhldGEgKyAwLjU7CglpZiAobiA8IDEyKSBu
ID0gMTI7CgllbHNlIGlmIChuID4gODApIG4gPSA4MDsKCW4gLz0gMjsKCXRoZXRhID0gKDMuMTQx
NTkyNjUzNTkgKiAyLjApICAvIG47CgoJYW5nbGUgPSAwLjA7CglweDAgPSB4YyArIHhyOwkJIAoJ
cHkwID0geWM7CQkgCgl3aGlsZSAoKGFuZ2xlICs9IHRoZXRhKSA8PSAoMy4xNDE1OTI2NTM1OSAq
IDIuMCkgKSB7CgkgICAgcHgxID0geGMgKyB4cipjb3MoYW5nbGUpICsgMC41OwoJICAgIHB5MSA9
IHljICsgeXIqc2luKGFuZ2xlKSArIDAuNTsKCSAgICBsaW5lX2J0dyhweDAsIHB5MCwgcHgxLCBw
eTEpOwoJICAgIHB4MCA9IHB4MTsKCSAgICBweTAgPSBweTE7Cgl9CglsaW5lX2J0dyhweDAsIHB5
MCwgeGMgKyB4ciwgeWMpOwp9CgogCgoKCnN0YXRpYwl2b2lkCmFyYyhjcCwgaW52aXMpCgljaGFy
CSpjcDsKCUJvb2xlYW4JaW52aXM7CnsKCWludAl4YywgeWMsIHhyYWQsIHlyYWQsIG47CglmbG9h
dAlzdGFydF9hbmdsZSwgZW5kX2FuZ2xlLCBhbmdsZSwgdGhldGEsIHI7Cglkb3VibGUJeHJhZGl1
cywgeXJhZGl1cywgeGNlbnRlciwgeWNlbnRlcjsKCglpZiAoc3NjYW5mKGNwLCAiICVkICVkICVk
ICVkICVmICVmICIsICZ4YywgJnljLCAmeHJhZCwgJnlyYWQsCgkJJnN0YXJ0X2FuZ2xlLCAmZW5k
X2FuZ2xlKSAhPSA2KSB7CgkgICAgV2FybmluZygiaW52YWxpZCBhcmMgc3BlY2lmaWNhdGlvbjog
JXMiLCBjcCk7CgkgICAgcmV0dXJuOwoJfQoKCWlmIChpbnZpcykgcmV0dXJuOwoKCSAKCWlmIChz
dGFydF9hbmdsZSA8PSAwLjAgJiYgZW5kX2FuZ2xlID49IDYuMjgyKSB7CgkgICAgZHJhd19lbGxp
cHNlKHhjLCB5YywgeHJhZCwgeXJhZCk7CgkgICAgcmV0dXJuOwoJfQoJeGNlbnRlciA9IHhjOwoJ
eWNlbnRlciA9IHljOwoJeHJhZGl1cyA9IHhyYWQ7Cgl5cmFkaXVzID0geXJhZDsKCXIgPSAoeHJh
ZGl1cyArIHlyYWRpdXMpIC8gMi4wOwoJdGhldGEgPSBzcXJ0KDEuMCAvIHIpOwoJbiA9IDAuMyAq
ICgzLjE0MTU5MjY1MzU5ICogMi4wKSAgLyB0aGV0YSArIDAuNTsKCWlmIChuIDwgMTIpIG4gPSAx
MjsKCWVsc2UgaWYgKG4gPiA4MCkgbiA9IDgwOwoJbiAvPSAyOwoJdGhldGEgPSAoMy4xNDE1OTI2
NTM1OSAqIDIuMCkgIC8gbjsKCWZsdXNoX3BhdGgoKTsKCWltX2ZkcmF3KHhjZW50ZXIgKyB4cmFk
aXVzICogY29zKHN0YXJ0X2FuZ2xlKSwKCSAgICB5Y2VudGVyICsgeXJhZGl1cyAqIHNpbihzdGFy
dF9hbmdsZSkpOwoJYW5nbGUgPSBzdGFydF9hbmdsZSArIHRoZXRhOwoJaWYgKGVuZF9hbmdsZSA8
IHN0YXJ0X2FuZ2xlKSBlbmRfYW5nbGUgKz0gKDMuMTQxNTkyNjUzNTkgKiAyLjApIDsKCXdoaWxl
IChhbmdsZSA8IGVuZF9hbmdsZSkgewoJICAgIGltX2ZkcmF3KHhjZW50ZXIgKyB4cmFkaXVzICog
Y29zKGFuZ2xlKSwKCQl5Y2VudGVyICsgeXJhZGl1cyAqIHNpbihhbmdsZSkpOwoJICAgIGFuZ2xl
ICs9IHRoZXRhOwoJfQoJaW1fZmRyYXcoeGNlbnRlciArIHhyYWRpdXMgKiBjb3MoZW5kX2FuZ2xl
KSwKCSAgICB5Y2VudGVyICsgeXJhZGl1cyAqIHNpbihlbmRfYW5nbGUpKTsKCWZsdXNoX3BhdGgo
KTsKfQoKCiAKCgoKCgoKIAoKCgpzdGF0aWMJdm9pZApmbHVzaF9zcGxpbmUoKQp7CglpbnQJeHAs
IHlwOwoJaW50CU47CglpbnQJbGFzdHgsIGxhc3R5OwoJQm9vbGVhbglsYXN0dmFsaWQgPSAwIDsK
CWludAl0MSwgdDIsIHQzOwoJaW50CXN0ZXBzOwoJaW50CWo7CglyZWdpc3RlciBpbnQgaSwgdzsK
CgoKCglOID0gcGF0aF9sZW4gKyAxOwoJeHhbMF0gPSB4eFsxXTsKCXl5WzBdID0geXlbMV07Cgl4
eFtOXSA9IHh4W04tMV07Cgl5eVtOXSA9IHl5W04tMV07Cglmb3IgKGkgPSAwOyBpIDwgTiAtIDE7
IGkrKykgewkgCgkgICAgc3RlcHMgPSAoKGFicyggeHhbaV0gIC0gICB4eFtpKzFdICkgKyBhYnMo
ICB5eVtpXSAgLSAgIHl5W2krMV0gKSkgICsKCQkoYWJzKCB4eFtpKzFdICAtICAgeHhbaSsyXSAp
ICsgYWJzKCAgeXlbaSsxXSAgLSAgIHl5W2krMl0gKSkgKSAvIDgwOwoJICAgIGZvciAoaiA9IDA7
IGogPCBzdGVwczsgaisrKSB7CSAKCQl3ID0gKGogKiAxMDAwICsgNTAwKSAvIHN0ZXBzOwoJCXQx
ID0gdyAqIHcgLyAyMDsKCQl3IC09IDUwMDsKCQl0MiA9ICg3NTAwMDAgLSB3ICogdykgLyAxMDsK
CQl3IC09IDUwMDsKCQl0MyA9IHcgKiB3IC8gMjA7CgkJeHAgPSAodDEqeHhbaSsyXSArIHQyKnh4
W2krMV0gKyB0Myp4eFtpXSArIDUwMDAwKSAvIDEwMDAwMDsKCQl5cCA9ICh0MSp5eVtpKzJdICsg
dDIqeXlbaSsxXSArIHQzKnl5W2ldICsgNTAwMDApIC8gMTAwMDAwOwoJCWlmIChsYXN0dmFsaWQp
IGxpbmVfYnR3KGxhc3R4LCBsYXN0eSwgeHAsIHlwKTsKCQlsYXN0eCA9IHhwOwoJCWxhc3R5ID0g
eXA7CgkJbGFzdHZhbGlkID0gMSA7CgkgICAgfQoJfQoJcGF0aF9sZW4gPSAwOwp9CgoKIAoKCgpz
dGF0aWMJdm9pZApzaGFkZV9sYXN0KCkKewoJYmxhY2tlbiA9IHdoaXRlbiA9IDAgOwoJc2hhZGUg
PSAxIDsKfQoKCiAKCgoKc3RhdGljCXZvaWQKd2hpdGVuX2xhc3QoKQp7Cgl3aGl0ZW4gPSAxIDsK
CWJsYWNrZW4gPSBzaGFkZSA9IDAgOwp9CgoKIAoKCgpzdGF0aWMJdm9pZApibGFja2VuX2xhc3Qo
KQp7CglibGFja2VuID0gMSA7Cgl3aGl0ZW4gPSBzaGFkZSA9IDAgOwp9CgoKIAoKCgoKCiAKCgoK
c3RhdGljCWNvbnN0IAljaGFyCW5vX2Zfc3RyX3BzW10JPSAiLyVmIjsKCnN0YXRpYwl2b2lkCXBz
X3N0YXJ0dXAgIChpbnQsIGludCwgY29uc3QgIGNoYXIgKikgIDsKc3RhdGljCXZvaWQJcHNfc3Rh
cnR1cDIgICh2b2lkKSAgOwp2b2lkCU51bGxQcm9jICAodm9pZCkgICB7fQogCnN0YXRpYwl2b2lk
CU51bGxQcm9jMiAgKGNvbnN0ICBjaGFyICopICA7CgpzdHJ1Y3QgcHNwcm9jcwlwc3AgPSB7CQkg
CgkgCQlOdWxsUHJvYywKCSAJCU51bGxQcm9jLAoJIAkJTnVsbFByb2MsCgkgCQlOdWxsUHJvYywK
CSAJCXBzX3N0YXJ0dXAsCgkgCQlOdWxsUHJvYzIsCgkgCQkoKHZvaWQgKikwKSAsCgkgCQlOdWxs
UHJvYzIsCgkgCXBzX3N0YXJ0dXAyLAoJIAkJTnVsbFByb2MsCgkgCQlOdWxsUHJvY307CgpzdHJ1
Y3QgcHNwcm9jcwlub19wc19wcm9jcyA9IHsJCSAKCSAJCU51bGxQcm9jLAoJIAkJTnVsbFByb2Ms
CgkgCQlOdWxsUHJvYywKCSAJCU51bGxQcm9jLAoJIAkJZHJhd2JlZ2luX25vbmUsCgkgCQlOdWxs
UHJvYzIsCgkgCQkoKHZvaWQgKikwKSAsCgkgCQlOdWxsUHJvYzIsCgkgCU51bGxQcm9jLAoJIAkJ
TnVsbFByb2MsCgkgCQlOdWxsUHJvY307CgoKCnN0YXRpYwlCb29sZWFuCQliYm94X3ZhbGlkOwpz
dGF0aWMJdW5zaWduZWQgaW50CWJib3hfd2lkdGg7CnN0YXRpYwl1bnNpZ25lZCBpbnQJYmJveF9o
ZWlnaHQ7CnN0YXRpYwlpbnQJCWJib3hfYW5nbGU7CnN0YXRpYwlpbnQJCWJib3hfdm9mZnNldDsK
CnZvaWQKZHJhd19iYm94KCkKewoJaW50CXhjb3JuZXIsIHljb3JuZXI7CgoJaWYgKGJib3hfdmFs
aWQpIHsKCgkgICAgeGNvcm5lciA9ICgoaW50KSAoKCBjdXJyaW5mLmRhdGEuZHZpX2ggKSAvIGN1
cnJ3aW4uc2hyaW5rZmFjdG9yICA+PiAxNikpICAgLSBjdXJyd2luLmJhc2VfeDsKCSAgICB5Y29y
bmVyID0gY3VycmluZi5kYXRhLnB4bF92ICAtIGN1cnJ3aW4uYmFzZV95OwoKCSAgICBpZiAoYmJv
eF9hbmdsZSA9PSAwKSB7CgkJeWNvcm5lciAtPSBiYm94X3ZvZmZzZXQ7CgkJWERyYXdMaW5lKERJ
U1AsIGN1cnJ3aW4ud2luLCBydWxlR0MsCgkJICB4Y29ybmVyLCB5Y29ybmVyLAoJCSAgeGNvcm5l
ciArIGJib3hfd2lkdGgsIHljb3JuZXIpOwoJCVhEcmF3TGluZShESVNQLCBjdXJyd2luLndpbiwg
cnVsZUdDLAoJCSAgeGNvcm5lciArIGJib3hfd2lkdGgsIHljb3JuZXIsCgkJICB4Y29ybmVyICsg
YmJveF93aWR0aCwgeWNvcm5lciArIGJib3hfaGVpZ2h0KTsKCQlYRHJhd0xpbmUoRElTUCwgY3Vy
cndpbi53aW4sIHJ1bGVHQywKCQkgIHhjb3JuZXIgKyBiYm94X3dpZHRoLCB5Y29ybmVyICsgYmJv
eF9oZWlnaHQsCgkJICB4Y29ybmVyLCB5Y29ybmVyICsgYmJveF9oZWlnaHQpOwoJCVhEcmF3TGlu
ZShESVNQLCBjdXJyd2luLndpbiwgcnVsZUdDLAoJCSAgeGNvcm5lciwgeWNvcm5lciArIGJib3hf
aGVpZ2h0LAoJCSAgeGNvcm5lciwgeWNvcm5lcik7CgkgICAgfQoJICAgIGVsc2UgewoJCWZsb2F0
CXNpbl9hCT0gc2luKGJib3hfYW5nbGUgKiAoKDMuMTQxNTkyNjUzNTkgKiAyLjApICAvIDM2MCkp
OwoJCWZsb2F0CWNvc19hCT0gY29zKGJib3hfYW5nbGUgKiAoKDMuMTQxNTkyNjUzNTkgKiAyLjAp
ICAvIDM2MCkpOwoJCWZsb2F0CWEsIGIsIGMsIGQ7CgoJCWEgPSBjb3NfYSAqIGJib3hfd2lkdGg7
CgkJYiA9IC1zaW5fYSAqIGJib3hfd2lkdGg7CgkJYyA9IC1zaW5fYSAqIGJib3hfaGVpZ2h0OwoJ
CWQgPSAtY29zX2EgKiBiYm94X2hlaWdodDsKCgkJWERyYXdMaW5lKERJU1AsIGN1cnJ3aW4ud2lu
LCBydWxlR0MsCgkJICB4Y29ybmVyLCB5Y29ybmVyLAoJCSAgeGNvcm5lciArIChpbnQpIGZsb29y
KCggYSApICsgMC41KSAsIHljb3JuZXIgKyAoaW50KSBmbG9vcigoIGIgKSArIDAuNSkgKTsKCQlY
RHJhd0xpbmUoRElTUCwgY3Vycndpbi53aW4sIHJ1bGVHQywKCQkgIHhjb3JuZXIgKyAoaW50KSBm
bG9vcigoIGEgKSArIDAuNSkgLCB5Y29ybmVyICsgKGludCkgZmxvb3IoKCBiICkgKyAwLjUpICwK
CQkgIHhjb3JuZXIgKyAoaW50KSBmbG9vcigoIGEgKyBjICkgKyAwLjUpICwgeWNvcm5lciArIChp
bnQpIGZsb29yKCggYiArIGQgKSArIDAuNSkgKTsKCQlYRHJhd0xpbmUoRElTUCwgY3Vycndpbi53
aW4sIHJ1bGVHQywKCQkgIHhjb3JuZXIgKyAoaW50KSBmbG9vcigoIGEgKyBjICkgKyAwLjUpICwg
eWNvcm5lciArIChpbnQpIGZsb29yKCggYiArIGQgKSArIDAuNSkgLAoJCSAgeGNvcm5lciArIChp
bnQpIGZsb29yKCggYyApICsgMC41KSAsIHljb3JuZXIgKyAoaW50KSBmbG9vcigoIGQgKSArIDAu
NSkgKTsKCQlYRHJhd0xpbmUoRElTUCwgY3Vycndpbi53aW4sIHJ1bGVHQywKCQkgIHhjb3JuZXIg
KyAoaW50KSBmbG9vcigoIGMgKSArIDAuNSkgLCB5Y29ybmVyICsgKGludCkgZmxvb3IoKCBkICkg
KyAwLjUpICwKCQkgIHhjb3JuZXIsIHljb3JuZXIpOwoJICAgIH0KCSAgICBiYm94X3ZhbGlkID0g
MCA7Cgl9Cn0KCgoKc3RhdGljCXZvaWQKYWN0dWFsX3N0YXJ0dXAoKQp7CgkgCgoKCgoKCglpZiAo
ISgKCgoKCgoKCgoKCgoKCgoKCSAgICAocmVzb3VyY2UudXNlR1MgJiYgaW5pdEdTKCkpCgoKCSAg
ICApKQoJICAgIHBzcCA9IG5vX3BzX3Byb2NzOwp9CgpzdGF0aWMJdm9pZApwc19zdGFydHVwKHh1
bCwgeXVsLCBjcCkKCWludAkJeHVsLCB5dWw7Cgljb25zdCAJY2hhcgkqY3A7CnsKCWlmICghcmVz
b3VyY2UuX3Bvc3RzY3JpcHQpIHsKCSAgICBwc3AudG9nZ2xlID0gYWN0dWFsX3N0YXJ0dXA7Cgkg
ICAgZHJhd19iYm94KCk7CgkgICAgcmV0dXJuOwoJfQoJYWN0dWFsX3N0YXJ0dXAoKTsKCXBzcC5k
cmF3YmVnaW4oeHVsLCB5dWwsIGNwKTsKfQoKc3RhdGljCXZvaWQKcHNfc3RhcnR1cDIoKQp7Cglh
Y3R1YWxfc3RhcnR1cCgpOwoJcHNwLmJlZ2luaGVhZGVyKCk7Cn0KCiAKc3RhdGljCXZvaWQKTnVs
bFByb2MyKGNwKQoJY29uc3QgCWNoYXIJKmNwOwp7fQoKc3RhdGljCXZvaWQKcHNfcGFyc2VyYXco
UG9zdFNjcmlwdF9jbWQpCgljb25zdCAJY2hhcgkqUG9zdFNjcmlwdF9jbWQ7CnsKCWNvbnN0IAlj
aGFyCSpwOwoKCSAKCWJib3hfYW5nbGUgPSAwOwoJcCA9IHN0cnN0cihQb3N0U2NyaXB0X2NtZCwg
InJvdGF0ZSIpOwoJaWYgKHAgIT0gKCh2b2lkICopMCkgKSB7CgkgICAgd2hpbGUgKCpwICE9ICdc
MCcgJiYgISAoX19jdHlwZV9iWyhpbnQpICggKCAqcCApICldICYgKHVuc2lnbmVkIHNob3J0IGlu
dCkgICBfSVNkaWdpdCApICApIC0tcDsKCSAgICB3aGlsZSAoKnAgIT0gJ1wwJyAmJiAoX19jdHlw
ZV9iWyhpbnQpICggKCAqcCApICldICYgKHVuc2lnbmVkIHNob3J0IGludCkgICBfSVNkaWdpdCAp
ICApIC0tcDsKCSAgICBpZiAoKnAgIT0gJysnICYmICpwICE9ICctJykgKytwOwoJICAgIHNzY2Fu
ZihwLCAiJWQgbmVnIHJvdGF0ZSIsICZiYm94X2FuZ2xlKTsKCX0KfQoKCiAKdm9pZAoKZHJhd2Jl
Z2luX25vbmUoaW50IHh1bCwgaW50IHl1bCwgY29uc3QgIGNoYXIgKmNwKQoKCgoKCnsKCWRyYXdf
YmJveCgpOwp9CgoKc3RydWN0IHRpY2tyZWMgewoJc3RydWN0IHRpY2tyZWMJKm5leHQ7CglpbnQJ
CXBhZ2VubzsKCWNoYXIJKmNvbW1hbmQ7Cgljb25zdCAgY2hhcgkqdG1wbmFtZTsKfTsKCnN0YXRp
YwlzdHJ1Y3QgdGlja3JlYwkqdGlja2hlYWQJPSAoKHZvaWQgKikwKSA7CSAKCQkJCQkJIApzdGF0
aWMJaW50CQludGlja3MJCT0gMDsJIAoKCgoKCnN0YXRpYwlzdHJ1Y3QgdGlja3JlYyAqCmNhY2hl
dGljayhmaWxlbmFtZSwgcGF0aGluZm8sIGZwKQoJY29uc3QgIGNoYXIJKmZpbGVuYW1lOwoJa3Bz
ZV9maWxlX2Zvcm1hdF90eXBlIHBhdGhpbmZvOwoJRklMRQkJKipmcDsKewoJc3RydWN0IHRpY2ty
ZWMJKipsaW5rcDsKCXN0cnVjdCB0aWNrcmVjCSp0aWtwOwoJc3RydWN0IHRpY2tyZWMJKipmcmVl
cmVjcDsKCglsaW5rcCA9ICZ0aWNraGVhZDsKCWZyZWVyZWNwID0gKCh2b2lkICopMCkgOwoJZm9y
ICg7OykgewkJIAoJICAgIHRpa3AgPSAqbGlua3A7CgkgICAgaWYgKHRpa3AgPT0gKCh2b2lkICop
MCkgKSB7CSAKCQlpZiAobnRpY2tzID49IDMgICYmIGZyZWVyZWNwICE9ICgodm9pZCAqKTApICkg
ewoJCSAgICB0aWtwID0gKmZyZWVyZWNwOwoJCSAgICAqZnJlZXJlY3AgPSB0aWtwLT5uZXh0OwoJ
CSAgICBmcmVlKHRpa3AtPmNvbW1hbmQpOwoJCX0KCQllbHNlIHsKCQkgICAgdGlrcCA9IChzdHJ1
Y3QgdGlja3JlYyAqKQoJCQl4bWFsbG9jKHNpemVvZihzdHJ1Y3QgdGlja3JlYykpOwoJCSAgICB0
aWtwLT50bXBuYW1lID0gdGVtcG5hbSh0ZW1wb3JhcnlfZGlyLCAieGR2aWsiKTsKCQkgICAgdGlr
cC0+cGFnZW5vID0gLTE7CgkJICAgIGlmICh0aWtwLT50bXBuYW1lID09ICgodm9pZCAqKTApICkg
ewoJCQkodm9pZCkgZnB1dHMgKCJDYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBmaWxlIG5hbWUuXG4i
LCAoKF9JT19GSUxFKikoJl9JT19zdGRlcnJfKSkgICk7CgkJCWZyZWUoKGNoYXIgKikgdGlrcCk7
CgkJCXJldHVybiAoKHZvaWQgKikwKSA7CgkJICAgIH0KCQkgICAgKytudGlja3M7CgkJfQoJCXRp
a3AtPmNvbW1hbmQgPSB4bWFsbG9jKCh1bnNpZ25lZCkgc3RybGVuKGZpbGVuYW1lKSArIDEpOwoJ
CSh2b2lkKSBzdHJjcHkgKHRpa3AtPmNvbW1hbmQsIGZpbGVuYW1lKTsKCQkqZnAgPSAoKHZvaWQg
KikwKSA7CgkJYnJlYWs7CgkgICAgfQoJICAgIGlmIChzdHJjbXAoZmlsZW5hbWUsIHRpa3AtPmNv
bW1hbmQpID09IDApIHsJIAoJCSpsaW5rcCA9IHRpa3AtPm5leHQ7CSAKCQkqZnAgPSB4ZHZpX3hm
b3BlbiAodGlrcC0+dG1wbmFtZSwgInIiICApOwoJCWlmICgqZnAgPT0gKCh2b2lkICopMCkgKSBw
ZXJyb3IodGlrcC0+dG1wbmFtZSk7CgkJYnJlYWs7CgkgICAgfQoJICAgIGlmICh0aWtwLT5wYWdl
bm8gIT0gY3VycmVudF9wYWdlKSBmcmVlcmVjcCA9IGxpbmtwOwoJICAgIGxpbmtwID0gJnRpa3At
Pm5leHQ7Cgl9Cgl0aWtwLT5uZXh0ID0gdGlja2hlYWQ7CQkgCgl0aWNraGVhZCA9IHRpa3A7Cgl0
aWtwLT5wYWdlbm8gPSAKCSAgcGF0aGluZm8gIT0ga3BzZV90ZXhfcHNfaGVhZGVyX2Zvcm1hdCA/
IGN1cnJlbnRfcGFnZSA6IC0xOwoJcmV0dXJuIHRpa3A7Cn0KCgoKCgoKCgoKCgoKCnN0YXRpYwl2
b2lkCnNlbmRmaWxlKGZpbGVuYW1lLCBwYXRoaW5mbykKCWNvbnN0ICBjaGFyCSpmaWxlbmFtZTsK
CWtwc2VfZmlsZV9mb3JtYXRfdHlwZSBwYXRoaW5mbzsKewoJRklMRQkJKmY7CglzdGF0aWMgY29u
c3QgIGNoYXIgKmFyZ3ZbXQk9IHsoKHZvaWQgKikwKSAsICItYyIsICgodm9pZCAqKTApICwgKCh2
b2lkICopMCkgfTsKCWNvbnN0ICBjaGFyCSpidWZwOwoJc3RydWN0IHRpY2tyZWMJKnRpa3A7Cglp
bnQJCWxlbjsKCWNoYXIJCW1hZ2ljMSwgbWFnaWMyLCBtYWdpYzM7CgoJaWYgKHBzcC5kcmF3Zmls
ZSA9PSAoKHZvaWQgKikwKSAgfHwgIXJlc291cmNlLl9wb3N0c2NyaXB0KSByZXR1cm47CgoKCglm
aWxlbmFtZT11cmxvY2FsaXplKGZpbGVuYW1lKTsKCQoJaWYgKCgocmVzb3VyY2UuX1VSTGJhc2Ug
ICE9ICgodm9pZCAqKTApICkgJiYgaHRleF9pc191cmwodXJsb2NhbGl6ZShyZXNvdXJjZS5fVVJM
YmFzZSApKSkgfHwKCSAgICAoaHRleF9pc191cmwoZmlsZW5hbWUpKSkgewoJICAgCgkgIFVSTF9h
d2FyZT0xOwoJICBmID0geGR2aV94Zm9wZW4gKGZpbGVuYW1lLCAiciIgICk7CgkgIGJ1ZnA9Zmls
ZWxpc3RbbGFzdHd3d29wZW5dLmZpbGU7CgkgIFVSTF9hd2FyZT0wOwoJfSBlbHNlCgoJaWYgKGZp
bGVuYW1lWzBdID09ICdgJykgewoJICAgIGlmICghcmVzb3VyY2UuYWxsb3dfc2hlbGwpIHsKCQlp
ZiAod2Fybl9zcGVjX25vdykKCQkgICAgKHZvaWQpIGZwcmludGYgKCgoX0lPX0ZJTEUqKSgmX0lP
X3N0ZGVycl8pKSAgLAoJCQkiJXM6IHNoZWxsIGVzY2FwZSBkaXNhbGxvd2VkIGZvciBzcGVjaWFs
IFwiJXNcIlxuIiwKCQkJcHJvZywgZmlsZW5hbWUpOwoJCXJldHVybjsKCSAgICB9CgoJICAgIHRp
a3AgPSBjYWNoZXRpY2soZmlsZW5hbWUsIHBhdGhpbmZvLCAmZik7CgkgICAgaWYgKHRpa3AgPT0g
KCh2b2lkICopMCkgKQoJCXJldHVybjsKCSAgICBpZiAoZiA9PSAoKHZvaWQgKikwKSApIHsKCQls
ZW4gPSBzdHJsZW4oZmlsZW5hbWUpICsgc3RybGVuKHRpa3AtPnRtcG5hbWUpICsgKDQgLSAxKTsK
CQlpZiAobGVuID4gZmZsaW5lX2xlbikKCQkgICAgZXhwYW5kbGluZShsZW4pOwoJCSh2b2lkKSBz
cHJpbnRmIChmZmxpbmUsICIlcyA+ICVzIiwgZmlsZW5hbWUgKyAxLCB0aWtwLT50bXBuYW1lKTsK
CQkodm9pZCkgc3lzdGVtKGZmbGluZSk7CgkJZiA9IHhkdmlfeGZvcGVuICh0aWtwLT50bXBuYW1l
LCAiciIgICk7CgkJaWYgKGYgPT0gKCh2b2lkICopMCkgKSB7CgkJICAgIHBlcnJvcih0aWtwLT50
bXBuYW1lKTsKCQkgICAgcmV0dXJuOwoJCX0KCSAgICB9CgkgICAgYnVmcCA9IHRpa3AtPnRtcG5h
bWU7Cgl9CgllbHNlIHsKCgkgICAgYnVmcCA9IGtwc2VfZmluZF9maWxlIChmaWxlbmFtZSwgcGF0
aGluZm8sIHRydWUpOwogICAgICAgICAgICBmID0gYnVmcCA/IHhkdmlfeGZvcGVuICAoYnVmcCwg
InIiICApIDogKCh2b2lkICopMCkgOwogICAKCSAgICAgCgkgICAgaWYgKGYgPT0gKCh2b2lkICop
MCkgKSB7CgkJKHZvaWQpIGZwcmludGYgKCgoX0lPX0ZJTEUqKSgmX0lPX3N0ZGVycl8pKSAgLCAi
JXM6IGNhbm5vdCBmaW5kIFBTIGZpbGUgYCVzJy5cbiIsCgkJICAgIHByb2csIGZpbGVuYW1lKTsK
CQlkcmF3X2Jib3goKTsKCQlyZXR1cm47CgkgICAgfQoKCSAgICAgCgkgICAgbGVuID0gc3RybGVu
KGZpbGVuYW1lKTsKCSAgICBtYWdpYzEgPSAnXDAzNyc7CgkgICAgbWFnaWMzID0gJ1wwJzsKCSAg
ICBpZiAoKGxlbiA+IDIgJiYgc3RyY21wKGZpbGVuYW1lICsgbGVuIC0gMiwgIi5aIikgPT0gMAoJ
CSAgICAgICYmIChhcmd2WzBdID0gInVuY29tcHJlc3MiICwgbWFnaWMyID0gJ1wyMzUnLCAxICkp
CgkJICAgIHx8IChsZW4gPiAzICYmIHN0cmNtcChmaWxlbmFtZSArIGxlbiAtIDMsICIuZ3oiKSA9
PSAwCgkJICAgICAgJiYgKGFyZ3ZbMF0gPSAiZ3VuemlwIiAsIG1hZ2ljMiA9ICdcMjEzJywgMSAp
KQoJCSAgICB8fCAobGVuID4gNCAmJiBzdHJjbXAoZmlsZW5hbWUgKyBsZW4gLSA0LCAiLmJ6MiIp
ID09IDAKCQkgICAgICAmJiAoYXJndlswXSA9ICJidW56aXAyIiAsIG1hZ2ljMSA9ICdCJywgbWFn
aWMyID0gJ1onLAoJCQltYWdpYzMgPSAnaCcsIDEgKSkpIHsKCQlpZiAoX0lPX2dldGMgKCAgZiAg
KSAgICE9IG1hZ2ljMSB8fCAoY2hhcikgX0lPX2dldGMgKCAgZiAgKSAgICE9IG1hZ2ljMgoJCSAg
fHwgKG1hZ2ljMyAhPSAnXDAnICYmIF9JT19nZXRjICggIGYgICkgICAhPSBtYWdpYzMpKQoJCSAg
ICByZXdpbmQoZik7CgkJZWxzZSB7CgkJICAgICh2b2lkKSBrcHNlX2ZjbG9zZV90cmFjZSAgKGYp
OwoJCSAgICArK25fZmlsZXNfbGVmdDsKCQkgICAgdGlrcCA9IGNhY2hldGljayhmaWxlbmFtZSwg
cGF0aGluZm8sICZmKTsKCQkgICAgaWYgKHRpa3AgPT0gKCh2b2lkICopMCkgKQoJCQlyZXR1cm47
CgkJICAgIGlmIChmID09ICgodm9pZCAqKTApICkgewoJCQlwaWRfdAlwaWQ7CgkJCWludAloYW5k
bGU7CgkJCWludAlzdGF0dXM7CgoJCQlhcmd2WzJdID0gYnVmcDsKCQkJaGFuZGxlID0gb3Blbih0
aWtwLT50bXBuYW1lLCAwMjAwICB8IDAxMDAgIHwgCgkJCQkgICAgICAwMiAgfCAwMTAwMCAsIAoJ
CQkJICAgICAgMDQwMCAgIHwgMDIwMCAgKTsKCQkJaWYgKGhhbmRsZSA9PSAtMSkgewoJCQkgICAg
cGVycm9yKHRpa3AtPnRtcG5hbWUpOwoJCQkgICAgcmV0dXJuOwoJCQl9CgkJCSh2b2lkKSBmZmx1
c2ggKCgoX0lPX0ZJTEUqKSgmX0lPX3N0ZGVycl8pKSAgKTsJIAoJCQlwaWQgPSB2Zm9yaygpOwoJ
CQlpZiAocGlkID09IDApIHsJIAoJCQkgICAgKHZvaWQpIGR1cDIoaGFuZGxlLCAxKTsKCQkJICAg
ICh2b2lkKSBleGVjdnAoYXJndlswXSwgKGNoYXIgKiopIGFyZ3YpOwoJCQkgICAgKHZvaWQpIGZw
cmludGYgKCgoX0lPX0ZJTEUqKSgmX0lPX3N0ZGVycl8pKSAgLCAiRXhlY3ZwIG9mICVzIGZhaWxl
ZC5cbiIsIGFyZ3ZbMF0pOwoJCQkgICAgKHZvaWQpIGZmbHVzaCAoKChfSU9fRklMRSopKCZfSU9f
c3RkZXJyXykpICApOwoJCQkgICAgX2V4aXQoMSk7CgkJCX0KCQkJKHZvaWQpIGNsb3NlKGhhbmRs
ZSk7CgkJCWZvciAoOzspIHsKCgkJCSAgICBpZiAod2FpdHBpZChwaWQsICZzdGF0dXMsIDApICE9
IC0xKSBicmVhazsKIyA4OTcgInNwZWNpYWwuYyIKCgkJCSAgICBpZiAoKCpfX2Vycm5vX2xvY2F0
aW9uICgpKSAgPT0gNCApIGNvbnRpbnVlOwoJCQkgICAgcGVycm9yKCJbeGR2aWtdIHdhaXRwaWQi
KTsKCQkJICAgIHJldHVybjsKCQkJfQoJCQlmID0geGR2aV94Zm9wZW4gKHRpa3AtPnRtcG5hbWUs
ICJyIiAgKTsKCQkJaWYgKGYgPT0gKCh2b2lkICopMCkgKSB7CgkJCSAgICBwZXJyb3IodGlrcC0+
dG1wbmFtZSk7CgkJCSAgICByZXR1cm47CgkJCX0KCQkgICAgfQoJCSAgICBidWZwID0gdGlrcC0+
dG1wbmFtZTsKCQl9CgkgICAgfQoJfQoKCSAKCXBzcC5kcmF3ZmlsZShidWZwLCBmKTsJIAp9CgoK
dm9pZApwc19uZXdkb2MoKQp7CglzdHJ1Y3QgdGlja3JlYwkqdGlrcDsKCglzY2FubmVkX3BhZ2Ug
PSBzY2FubmVkX3BhZ2VfYmFrID0gc2Nhbm5lZF9wYWdlX3Jlc2V0ID0KCSAgICByZXNvdXJjZS5w
cmVzY2FuID8gLTEgOiB0b3RhbF9wYWdlczsKCWZvciAodGlrcCA9IHRpY2toZWFkOyB0aWtwICE9
ICgodm9pZCAqKTApIDsgdGlrcCA9IHRpa3AtPm5leHQpCgkgICAgdGlrcC0+cGFnZW5vID0gLTE7
Cglwc3AubmV3ZG9jKCk7Cn0KCgp2b2lkCnBzX2Rlc3Ryb3koKQp7CglzdHJ1Y3QgdGlja3JlYwkq
dGlrcDsKCglwc3AuZGVzdHJveSgpOwoJZm9yICh0aWtwID0gdGlja2hlYWQ7IHRpa3AgIT0gKCh2
b2lkICopMCkgOyB0aWtwID0gdGlrcC0+bmV4dCkKCSAgICBpZiAodW5saW5rKHRpa3AtPnRtcG5h
bWUpIDwgMCkKCQlwZXJyb3IodGlrcC0+dG1wbmFtZSk7Cn0KCgoKCnN0YXRpYwl2b2lkCnBzZmln
X3NwZWNpYWwoY3ApCgljaGFyCSpjcDsKewoJY2hhcgkqZmlsZW5hbWU7CglpbnQJcmF3dywgcmF3
aDsKCglpZiAoc3RybmNtcChjcCwgIjpbYmVnaW5dIiwgOCkgPT0gMCkgewoJICAgIGNwICs9IDg7
CgkgICAgYmJveF92YWxpZCA9IDAgOwoJICAgIGJib3hfYW5nbGUgPSAwOwoJICAgIGlmIChzc2Nh
bmYoY3AsIiVkICVkXG4iLCAmcmF3dywgJnJhd2gpID49IDIpIHsKCQliYm94X3ZhbGlkID0gMSA7
CgkJYmJveF93aWR0aCA9ICgoaW50KSAoKCAoKGxvbmcpICggIHJhd3cgICAqICAgZGltY29udiAp
KSAgICkgLyBjdXJyd2luLnNocmlua2ZhY3RvciAgPj4gMTYpKSA7CgkJYmJveF9oZWlnaHQgPSAo
KGludCkgKCggKChsb25nKSAoICByYXdoICAgKiAgIGRpbWNvbnYgKSkgICApIC8gY3Vycndpbi5z
aHJpbmtmYWN0b3IgID4+IDE2KSkgOwoJCWJib3hfdm9mZnNldCA9IDA7CgkgICAgfQoJICAgIGlm
IChjdXJyd2luLndpbiA9PSBtYW5lLndpbikKCgkJcHNwLmRyYXdiZWdpbigoKGludCkgKCggY3Vy
cmluZi5kYXRhLmR2aV9oICkgLyBjdXJyd2luLnNocmlua2ZhY3RvciAgPj4gMTYpKSAgIC0gY3Vy
cndpbi5iYXNlX3gsIGN1cnJpbmYuZGF0YS5weGxfdiAgLSBjdXJyd2luLmJhc2VfeSwKCQkgICAg
Y3ApOwoKCgoJICAgIHBzZmlnX2JlZ3VuID0gMSA7Cgl9IGVsc2UgaWYgKHN0cm5jbXAoY3AsICIg
cGxvdGZpbGUgIiwgMTApID09IDApIHsKCSAgICBjcCArPSAxMDsKCSAgICB3aGlsZSAoKF9fY3R5
cGVfYlsoaW50KSAoICggKmNwICkgKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSAgIF9JU3NwYWNl
ICkgICkgY3ArKzsKCSAgICAgCgkgICAgaWYgKCpjcCA9PSAnIicpIHsKCQljcCsrOwoJCWZvciAo
ZmlsZW5hbWUgPSBjcDsgKmNwICYmICgqY3AgIT0gJyInKTsgKytjcCk7CgkgICAgfSBlbHNlIHsK
CQlmb3IgKGZpbGVuYW1lID0gY3A7ICpjcCAmJiAhIChfX2N0eXBlX2JbKGludCkgKCAoICpjcCAp
ICldICYgKHVuc2lnbmVkIHNob3J0IGludCkgICBfSVNzcGFjZSApICA7ICsrY3ApOwoJICAgIH0K
CSAgICAqY3AgPSAnXDAnOwoKCSAgICBpZiAoY3Vycndpbi53aW4gPT0gbWFuZS53aW4pIHNlbmRm
aWxlKGZpbGVuYW1lLCBrcHNlX3BpY3RfZm9ybWF0KTsKCgl9IGVsc2UgaWYgKHN0cm5jbXAoY3As
ICI6W2VuZF0iLCA2KSA9PSAwKSB7CgkgICAgY3AgKz0gNjsKCgkgICAgaWYgKGN1cnJ3aW4ud2lu
ID09IG1hbmUud2luKSBwc3AuZHJhd2VuZChjcCk7CgoJICAgIGJib3hfdmFsaWQgPSAwIDsKCSAg
ICBwc2ZpZ19iZWd1biA9IDAgOwoJfSBlbHNlIHsgIAoJICBpZiAoKmNwID09ICc6JykKCSAgICAr
K2NwOwkgCgoJICAgIGlmIChjdXJyd2luLndpbiA9PSBtYW5lLndpbikgewoJCXBzX3BhcnNlcmF3
KGNwKTsKCQlpZiAocHNmaWdfYmVndW4pIHBzcC5kcmF3cmF3KGNwKTsKCQllbHNlIHsKCQkgICAg
cHNwLmRyYXdiZWdpbigoKGludCkgKCggY3VycmluZi5kYXRhLmR2aV9oICkgLyBjdXJyd2luLnNo
cmlua2ZhY3RvciAgPj4gMTYpKSAgIC0gY3Vycndpbi5iYXNlX3gsCgkJCWN1cnJpbmYuZGF0YS5w
eGxfdiAgLSBjdXJyd2luLmJhc2VfeSwgY3ApOwoJCSAgICBwc3AuZHJhd2VuZCgiIik7CgkJfQoJ
ICAgIH0KCgl9Cn0KCgogCgpzdGF0aWMJY29uc3QgCWNoYXIJKmtleXRhYltdCT0geyJjbGlwIiwK
CQkJCQkgICAibGx4IiwKCQkJCQkgICAibGx5IiwKCQkJCQkgICAidXJ4IiwKCQkJCQkgICAidXJ5
IiwKCQkJCQkgICAicndpIiwKCQkJCQkgICAicmhpIiwKCQkJCQkgICAiaHNpemUiLAoJCQkJCSAg
ICJ2c2l6ZSIsCgkJCQkJICAgImhvZmZzZXQiLAoJCQkJCSAgICJ2b2Zmc2V0IiwKCQkJCQkgICAi
aHNjYWxlIiwKCQkJCQkgICAidnNjYWxlIiwKCQkJCQkgICAiYW5nbGUifTsKCgoKCgoKCgoKCgpz
dGF0aWMJdm9pZAplcHNmX3NwZWNpYWwoY3ApCgljaGFyCSpjcDsKewoJY2hhcgkqZmlsZW5hbWU7
CglzdGF0aWMJY2hhcgkJKmJ1ZmZlcjsKCXN0YXRpYwl1bnNpZ25lZCBpbnQJYnVmbGVuCT0gMDsK
CXVuc2lnbmVkIGludAkJbGVuOwoJY2hhcgkqcTsKCWludAlmbGFncwk9IDA7Cglkb3VibGUJa2V5
dmFsWzZdOwoKCWZpbGVuYW1lID0gY3A7CglpZiAoKmNwID09ICdcJycgfHwgKmNwID09ICciJykg
ewoJICAgIGRvICsrY3A7CgkgICAgd2hpbGUgKCpjcCAhPSAnXDAnICYmICpjcCAhPSAqZmlsZW5h
bWUpOwoJICAgICsrZmlsZW5hbWU7Cgl9CgllbHNlCgkgICAgd2hpbGUgKCpjcCAhPSAnXDAnICYm
ICpjcCAhPSAnICcgJiYgKmNwICE9ICdcdCcpICsrY3A7CglpZiAoKmNwICE9ICdcMCcpICpjcCsr
ID0gJ1wwJzsKCXdoaWxlICgqY3AgPT0gJyAnIHx8ICpjcCA9PSAnXHQnKSArK2NwOwoJbGVuID0g
c3RybGVuKGNwKSArIChzaXplb2Yoa2V5dGFiKS9zaXplb2YoKmtleXRhYikpICArIDMwOwoJaWYg
KGJ1ZmxlbiA8IGxlbikgewoJICAgIGlmIChidWZsZW4gIT0gMCkgZnJlZShidWZmZXIpOwoJICAg
IGJ1ZmxlbiA9IGxlbjsKCSAgICBidWZmZXIgPSB4bWFsbG9jKGJ1Zmxlbik7Cgl9Cgkodm9pZCkg
c3RyY3B5IChidWZmZXIsICJAYmVnaW5zcGVjaWFsIik7CglxID0gYnVmZmVyICsgc3RybGVuKGJ1
ZmZlcik7Cgl3aGlsZSAoKmNwICE9ICdcMCcpIHsKCSAgICBjaGFyICpwMSA9IGNwOwoJICAgIGlu
dCBrZXlubzsKCgkgICAgd2hpbGUgKCpwMSAhPSAnPScgJiYgISAoX19jdHlwZV9iWyhpbnQpICgg
KCAqcDEgKSApXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpICAgX0lTc3BhY2UgKSAgICYmICpwMSAh
PSAnXDAnKSArK3AxOwoJICAgIGZvciAoa2V5bm8gPSAwOzsgKytrZXlubykgewoJCWlmIChrZXlu
byA+PSAoc2l6ZW9mKGtleXRhYikvc2l6ZW9mKCprZXl0YWIpKSApIHsKCQkgICAgaWYgKHdhcm5f
c3BlY19ub3cpCgkJCSh2b2lkKSBmcHJpbnRmICgoKF9JT19GSUxFKikoJl9JT19zdGRlcnJfKSkg
ICwKCQkJICAgICIlczogdW5rbm93biBrZXl3b3JkICglKnMpIGluIFxcc3BlY2lhbCB3aWxsIGJl
IGlnbm9yZWRcbiIsCgkJCSAgICBwcm9nLCAoaW50KSAocDEgLSBjcCksIGNwKTsKCQkgICAgYnJl
YWs7CgkJfQoJCWlmIChtZW1jbXAoY3AsIGtleXRhYltrZXlub10sIHAxIC0gY3ApID09IDApIHsK
CQkgICAgaWYgKGtleW5vID49IDEgKSB7CgkJCXdoaWxlICgoX19jdHlwZV9iWyhpbnQpICggKCAq
cDEgKSApXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpICAgX0lTc3BhY2UgKSAgKSArK3AxOwoJCQlp
ZiAoKnAxID09ICc9JykgewoJCQkgICAgKytwMTsKCQkJICAgIHdoaWxlICgoX19jdHlwZV9iWyhp
bnQpICggKCAqcDEgKSApXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpICAgX0lTc3BhY2UgKSAgKSAr
K3AxOwoJCQl9CgkJCWlmIChrZXlubyA8IDEgICsgNikgewoJCQkgICAga2V5dmFsW2tleW5vIC0g
MSBdID0gYXRvZihwMSk7CgkJCSAgICBmbGFncyB8PSAoMSA8PCAoa2V5bm8gLSAxICkpOwoJCQl9
CgkJCSpxKysgPSAnICc7CgkJCXdoaWxlICghIChfX2N0eXBlX2JbKGludCkgKCAoICpwMSApICld
ICYgKHVuc2lnbmVkIHNob3J0IGludCkgICBfSVNzcGFjZSApICAgJiYgKnAxICE9ICdcMCcpICpx
KysgPSAqcDErKzsKCQkgICAgfQoJCSAgICAqcSsrID0gJyAnOwoJCSAgICAqcSsrID0gJ0AnOwoJ
CSAgICAodm9pZCkgc3RyY3B5IChxLCBrZXl0YWJba2V5bm9dKTsKCQkgICAgcSArPSBzdHJsZW4o
cSk7CgkJICAgIGJyZWFrOwoJCX0KCSAgICB9CgkgICAgY3AgPSBwMTsKCSAgICB3aGlsZSAoISAo
X19jdHlwZV9iWyhpbnQpICggKCAqY3AgKSApXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpICAgX0lT
c3BhY2UgKSAgICYmICpjcCAhPSAnXDAnKSArK2NwOwoJICAgIHdoaWxlICgoX19jdHlwZV9iWyhp
bnQpICggKCAqY3AgKSApXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpICAgX0lTc3BhY2UgKSAgKSAr
K2NwOwoJfQoJKHZvaWQpIHN0cmNweSAocSwgIiBAc2V0c3BlY2lhbFxuIik7CgoJYmJveF92YWxp
ZCA9IDAgOwoJaWYgKChmbGFncyAmIDB4MzApID09IDB4MzAgfHwgKChmbGFncyAmIDB4MzApICYm
IChmbGFncyAmIDB4ZikgPT0gMHhmKSl7CgkgICAgYmJveF92YWxpZCA9IDEgOwoJICAgIGJib3hf
d2lkdGggPSAwLjEgKiAoKGZsYWdzICYgMHgxMCkgPyBrZXl2YWxbNF0gCgkJOiBrZXl2YWxbNV0g
ICogKGtleXZhbFsyXSAgLSBrZXl2YWxbMF0gKSAvIChrZXl2YWxbM10gIC0ga2V5dmFsWzFdICkp
CgkJKiBkaW1jb252IC8gY3Vycndpbi5zaHJpbmtmYWN0b3IgICsgMC41OwoJICAgIGJib3hfdm9m
ZnNldCA9IGJib3hfaGVpZ2h0ID0gMC4xICogKChmbGFncyAmIDB4MjApID8ga2V5dmFsWzVdIAoJ
CToga2V5dmFsWzRdICAqIChrZXl2YWxbM10gIC0ga2V5dmFsWzFdICkgLyAoa2V5dmFsWzJdICAt
IGtleXZhbFswXSApKQoJCSogZGltY29udiAvIGN1cnJ3aW4uc2hyaW5rZmFjdG9yICArIDAuNTsK
CX0KCglpZiAoZmlsZW5hbWUgJiYgY3Vycndpbi53aW4gPT0gbWFuZS53aW4pIHsKCgkgICAgcHNw
LmRyYXdiZWdpbigoKGludCkgKCggY3VycmluZi5kYXRhLmR2aV9oICkgLyBjdXJyd2luLnNocmlu
a2ZhY3RvciAgPj4gMTYpKSAgIC0gY3Vycndpbi5iYXNlX3gsIGN1cnJpbmYuZGF0YS5weGxfdiAg
LSBjdXJyd2luLmJhc2VfeSwKCQlidWZmZXIpOwoJICAgICAKCSAgICBzZW5kZmlsZShmaWxlbmFt
ZSwga3BzZV9waWN0X2Zvcm1hdCk7CgkgICAgcHNwLmRyYXdlbmQoIiBAZW5kc3BlY2lhbCIpOwoK
CgoJfQoJYmJveF92YWxpZCA9IDAgOwp9CgoKc3RhdGljCXZvaWQKcXVvdGVfc3BlY2lhbChjcCkK
CWNoYXIJKmNwOwp7CgliYm94X3ZhbGlkID0gMCA7CgoKCWlmIChjdXJyd2luLndpbiA9PSBtYW5l
LndpbikgewoJICAgIHBzcC5kcmF3YmVnaW4oKChpbnQpICgoIGN1cnJpbmYuZGF0YS5kdmlfaCAp
IC8gY3Vycndpbi5zaHJpbmtmYWN0b3IgID4+IDE2KSkgICAtIGN1cnJ3aW4uYmFzZV94LCBjdXJy
aW5mLmRhdGEucHhsX3YgIC0gY3Vycndpbi5iYXNlX3ksCgkJIkBiZWdpbnNwZWNpYWwgQHNldHNw
ZWNpYWwgIik7CgkgICAgIAoJICAgIHBzcC5kcmF3cmF3KGNwICsgMSk7CgkgICAgcHNwLmRyYXdl
bmQoIiBAZW5kc3BlY2lhbCIpOwoJfQoKCgkgCn0KCgoKc3RhdGljCXZvaWQKc2Nhbl9oZWFkZXIo
Y3ApCgljaGFyCSpjcDsKewoJY2hhcgkqZmlsZW5hbWU7CgoJZmlsZW5hbWUgPSBjcDsKCWlmICgq
Y3AgPT0gJ1wnJyB8fCAqY3AgPT0gJyInKSB7CgkgICAgZG8gKytjcDsKCSAgICB3aGlsZSAoKmNw
ICE9ICdcMCcgJiYgKmNwICE9ICpmaWxlbmFtZSk7CgkgICAgKmNwID0gJ1wwJzsKCSAgICArK2Zp
bGVuYW1lOwoJfQoKCXBzcC5iZWdpbmhlYWRlcigpOwoJc2VuZGZpbGUoZmlsZW5hbWUsIGtwc2Vf
dGV4X3BzX2hlYWRlcl9mb3JtYXQpOwp9CgpzdGF0aWMJdm9pZApzY2FuX2JhbmcoY3ApCgljaGFy
CSpjcDsKewoJcHNwLmJlZ2luaGVhZGVyKCk7Cglwc3AuZHJhd3JhdyhjcCArIDEpOwp9CgoKCiAK
CgoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgpzdGF0aWMJY2hhciAqCmVuZG9mY29tbWFuZChjcCkK
CWNoYXIJKmNwOwp7Cgl3aGlsZSAoKF9fY3R5cGVfYlsoaW50KSAoICggKmNwICkgKV0gJiAodW5z
aWduZWQgc2hvcnQgaW50KSAgIF9JU3NwYWNlICkgICkgKytjcDsKCWlmICgqY3AgIT0gJz0nKSBy
ZXR1cm4gKCh2b2lkICopMCkgOwoJZG8gKytjcDsgd2hpbGUgKChfX2N0eXBlX2JbKGludCkgKCAo
ICpjcCApICldICYgKHVuc2lnbmVkIHNob3J0IGludCkgICBfSVNzcGFjZSApICApOwoJcmV0dXJu
IGNwOwp9CgoKCnZvaWQKYXBwbGljYXRpb25Eb1NwZWNpYWwoY3ApCgljaGFyCSpjcDsKewoJY2hh
cgkqcDsKICAKCSAKCXdoaWxlICgqY3AgPT0gJyAnIHx8ICpjcCA9PSAnXHQnKSArK2NwOwoKCSAK
CglpZiAoKmNwID09ICciJykgewoJICAgIHF1b3RlX3NwZWNpYWwoY3ApOwoJICAgIHJldHVybjsK
CX0KCWlmIChtZW1pY21wKGNwLCAicHM6IiwgMykgPT0gMCkgewoJICAgIHBzZmlnX3NwZWNpYWwo
Y3AgKyAzKTsKCSAgICByZXR1cm47Cgl9CglpZiAobWVtaWNtcChjcCwgInBzZmlsZSIsIDYpID09
IDAKCQkmJiAocCA9IGVuZG9mY29tbWFuZChjcCArIDYpKSAhPSAoKHZvaWQgKikwKSApIHsKCSAg
ICBlcHNmX3NwZWNpYWwocCk7CgkgICAgcmV0dXJuOwoJfQoKCSAKCglpZiAoKmNwID09ICchJwoJ
ICB8fCAobWVtaWNtcChjcCwgImhlYWRlciIsIDYpID09IDAgJiYgZW5kb2Zjb21tYW5kKGNwICsg
NikgIT0gKCh2b2lkICopMCkgKSkgewoKCSAgICBpZiAocmVzb3VyY2UuX3Bvc3RzY3JpcHQgJiYg
c2Nhbm5lZF9wYWdlX3Jlc2V0ID49IDApIHsKCQkgCgkJc2Nhbm5lZF9wYWdlID0gc2Nhbm5lZF9w
YWdlX2JhayA9IHNjYW5uZWRfcGFnZV9yZXNldCA9IC0xOwoJCXBzcC5pbnRlcnJ1cHQoKTsKCQlj
YW5pdCA9IDEgOwoJCWxvbmdqbXAoY2FuaXRfZW52LCAxKTsKCSAgICB9CgoJICAgIHJldHVybjsK
CX0KCgoJaWYgKGNoZWNrSHlwZXJUZVgoY3AsIGN1cnJlbnRfcGFnZSkpIHJldHVybjsKCgoJIAoK
CWlmICgqY3AgPj0gJ2EnICYmICpjcCA8PSAneicgJiYgY3BbMV0gPj0gJ2EnICYmIGNwWzFdIDw9
ICd6JyAmJgoJCSgoX19jdHlwZV9iWyhpbnQpICggKCBjcFsyXSApICldICYgKHVuc2lnbmVkIHNo
b3J0IGludCkgICBfSVNzcGFjZSApICAgfHwgY3BbMl0gPT0gJ1wwJykpIHsKCSAgICBzd2l0Y2gg
KCgoICpjcCApIDw8IDggfCAoICBjcFsxXSApKSApIHsKCQljYXNlICgoICdwJyApIDw8IDggfCAo
ICduJyApKSA6IHNldF9wZW5fc2l6ZShjcCArIDIpOyByZXR1cm47CgkJY2FzZSAoKCAnZicgKSA8
PCA4IHwgKCAncCcgKSkgOiBmbHVzaF9wYXRoKCk7IHJldHVybjsKCQljYXNlICgoICdkJyApIDw8
IDggfCAoICdhJyApKSA6IGZsdXNoX2Rhc2hlZChjcCArIDIsIDAgKTsgcmV0dXJuOwoJCWNhc2Ug
KCggJ2QnICkgPDwgOCB8ICggJ3QnICkpIDogZmx1c2hfZGFzaGVkKGNwICsgMiwgMSApOyByZXR1
cm47CgkJY2FzZSAoKCAncCcgKSA8PCA4IHwgKCAnYScgKSkgOiBhZGRfcGF0aChjcCArIDIpOyBy
ZXR1cm47CgkJY2FzZSAoKCAnYScgKSA8PCA4IHwgKCAncicgKSkgOiBhcmMoY3AgKyAyLCAwICk7
IHJldHVybjsKCQljYXNlICgoICdpJyApIDw8IDggfCAoICdhJyApKSA6IGFyYyhjcCArIDIsIDEg
KTsgcmV0dXJuOwoJCWNhc2UgKCggJ3MnICkgPDwgOCB8ICggJ3AnICkpIDogZmx1c2hfc3BsaW5l
KCk7IHJldHVybjsKCQljYXNlICgoICdzJyApIDw8IDggfCAoICdoJyApKSA6IHNoYWRlX2xhc3Qo
KTsgcmV0dXJuOwoJCWNhc2UgKCggJ3cnICkgPDwgOCB8ICggJ2gnICkpIDogd2hpdGVuX2xhc3Qo
KTsgcmV0dXJuOwoJCWNhc2UgKCggJ2InICkgPDwgOCB8ICggJ2snICkpIDogYmxhY2tlbl9sYXN0
KCk7IHJldHVybjsKCQljYXNlICgoICdpJyApIDw8IDggfCAoICdwJyApKSA6ICAKCQkgICAgcGF0
aF9sZW4gPSAwOyByZXR1cm47CgkgICAgfQoJfQoKCWlmICh3YXJuX3NwZWNfbm93KQoJICAgICh2
b2lkKSBmcHJpbnRmICgoKF9JT19GSUxFKikoJl9JT19zdGRlcnJfKSkgICwgIiVzOiAgc3BlY2lh
bCBcIiVzXCIgbm90IGltcGxlbWVudGVkXG4iLCBwcm9nLCBjcCk7Cn0KCgoKCnZvaWQKc2Nhbl9z
cGVjaWFsKGNwKQoJY2hhcgkqY3A7CnsKCWNoYXIJKnA7CgoJIAoJd2hpbGUgKCpjcCA9PSAnICcg
fHwgKmNwID09ICdcdCcpICsrY3A7CgoJaWYgKGRlYnVnICYgNjQgKQoJICAgICh2b2lkKSBwcmlu
dGYgKCJTY2FubmluZyBzcGVjaWFsIGAlcycuXG4iLCBjcCk7CgoJaWYgKCpjcCA9PSAnIScpCgkg
ICAgc2Nhbl9iYW5nKGNwKTsKCWVsc2UgaWYgKG1lbWljbXAoY3AsICJoZWFkZXIiLCA2KSA9PSAw
CgkgICYmIChwID0gZW5kb2Zjb21tYW5kKGNwICsgNikpICE9ICgodm9pZCAqKTApICkKCSAgICBz
Y2FuX2hlYWRlcihwKTsKfQoK

--Boundary-=_BbmQBhCDarzOwKkYHIDdqSCDXrJm--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019