public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/4359: internal compiler error / segmentation fault
@ 2001-09-19  4:56 Otto Skrove Bagge
  0 siblings, 0 replies; 4+ messages in thread
From: Otto Skrove Bagge @ 2001-09-19  4:56 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/4359; it has been noted by GNATS.

From: Otto Skrove Bagge <otto@ii.uib.no>
To: gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: c/4359: internal compiler error / segmentation fault 
Date: Wed, 19 Sep 2001 13:55:19 +0200

 >
 >Thank you very much for your problem report.
 >It has the internal identification `c/4359'.
 >The individual assigned to look at your
 >report is: unassigned. 
 >
 >>Category:       c
 >>Responsible:    unassigned
 >>Synopsis:       internal compiler error / segmentation fault
 >>Arrival-Date:   Wed Sep 19 04:46:03 PDT 2001
 
 I forgot to mention that the problem occurs only with -O4 and -O3, not
 with -O2, -O1 or no optimisation.
 
 -otto
 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: c/4359: internal compiler error / segmentation fault
@ 2001-12-07 18:06 rodrigc
  0 siblings, 0 replies; 4+ messages in thread
From: rodrigc @ 2001-12-07 18:06 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/4359; it has been noted by GNATS.

From: rodrigc@gcc.gnu.org
To: gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org,
  nobody@gcc.gnu.org, otto@ii.uib.no
Cc:  
Subject: Re: c/4359: internal compiler error / segmentation fault
Date: 8 Dec 2001 02:02:34 -0000

 Synopsis: internal compiler error / segmentation fault
 
 State-Changed-From-To: open->closed
 State-Changed-By: rodrigc
 State-Changed-When: Fri Dec  7 18:02:34 2001
 State-Changed-Why:
     Duplicate of PR 4014:
     http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4014&database=gcc
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4359&database=gcc


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: c/4359: internal compiler error / segmentation fault
@ 2001-12-07 18:02 rodrigc
  0 siblings, 0 replies; 4+ messages in thread
From: rodrigc @ 2001-12-07 18:02 UTC (permalink / raw)
  To: gcc-bugs, gcc-gnats, gcc-prs, nobody, otto

Synopsis: internal compiler error / segmentation fault

State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Fri Dec  7 18:02:34 2001
State-Changed-Why:
    Duplicate of PR 4014:
    http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4014&database=gcc

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4359&database=gcc


^ permalink raw reply	[flat|nested] 4+ messages in thread

* c/4359: internal compiler error / segmentation fault
@ 2001-09-19  4:46 otto
  0 siblings, 0 replies; 4+ messages in thread
From: otto @ 2001-09-19  4:46 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4359
>Category:       c
>Synopsis:       internal compiler error / segmentation fault
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Sep 19 04:46:03 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     otto@ii.uib.no
>Release:        gcc version 3.0
>Organization:
>Environment:
mips-sgi-irix6.5

uname -a:  IRIX64 gridur 6.5 07091544 IP35

>Description:
Running gcc like this:

gcc    -Wall -O4    -DPACKAGE=\"aterm\" -DVERSION=\"1.6.3\" -DHAVE_STRDUP=1 -DHAVE_LRAND48=1 -DHAVE_SRAND48=1  -I. -I.  -DNDEBUG       -c bafio.c -o bafio-gcc.o --save-temps -v

gives this output:

Reading specs from /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.0/specs
Configured with: ../configure --prefix=/usr/freeware --enable-version-specific-runtime-libs --disable-shared --enable-threads --enable-haifa
Thread model: single
gcc version 3.0
 /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.0/cpp0 -lang-c -v -I. -I. -D__GNUC
__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=0 -Dunix -Dmips -Dsgi -Dhost_mips 
-DMIPSEB -D_MIPSEB -DSYSTYPE_SVR4 -D_LONGLONG -D_SVR4_SOURCE -D_MODERN_C -D__DSO
__ -D__unix__ -D__mips__ -D__sgi__ -D__host_mips__ -D__MIPSEB__ -D_MIPSEB -D__SY
STYPE_SVR4__ -D_LONGLONG -D_SVR4_SOURCE -D_MODERN_C -D__DSO__ -D__unix -D__mips 
-D__sgi -D__host_mips -D__MIPSEB -D__SYSTYPE_SVR4 -Asystem=unix -Asystem=svr4 -A
cpu=mips -Amachine=sgi -D__CHAR_UNSIGNED__ -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -W
all -D__LANGUAGE_C -D_LANGUAGE_C -DLANGUAGE_C -D__SIZE_TYPE__=unsigned int -D__P
TRDIFF_TYPE__=int -D__WCHAR_TYPE__=long int -D__WINT_TYPE__=long int -D__EXTENSI
ONS__ -D_SGI_SOURCE -D_MIPS_FPSET=32 -D_MIPS_ISA=_MIPS_ISA_MIPS3 -D_ABIN32=2 -D_
MIPS_SIM=_ABIN32 -D_MIPS_SZINT=32 -D_MIPS_SZLONG=32 -D_MIPS_SZPTR=32 -D_COMPILER
_VERSION=601 -U__mips -D__mips=3 -D__mips64 -DPACKAGE="aterm" -DVERSION="1.6.3" 
-DHAVE_STRDUP=1 -DHAVE_LRAND48=1 -DHAVE_SRAND48=1 -DNDEBUG bafio.c bafio.i
GNU CPP version 3.0 (cpplib) [AL 1.1, MM 40] SGI running IRIX 6.x
ignoring nonexistent directory "/usr/freeware/mips-sgi-irix6.5/include"
ignoring duplicate directory "."
#include "..." search starts here:
#include <...> search starts here:
 .
 /usr/local/include
 /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.0/include
 /usr/include
End of search list.
 /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.0/cc1 -fpreprocessed bafio.i -quie
t -dumpbase bafio.c -O4 -Wall -version -o bafio.s
GNU CPP version 3.0 (cpplib) [AL 1.1, MM 40] SGI running IRIX 6.x
GNU C version 3.0 (mips-sgi-irix6.5)
        compiled by GNU C version 3.0.
bafio.c: In function `write_baf':
bafio.c:1149: Internal error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.


>How-To-Repeat:
Try compiling attached file.
>Fix:

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

IyAzICJiYWZpby5jIgojIDEgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJp
eDYuNS8zLjAvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAxNCAiL3Vzci9mcmVld2FyZS9saWIvZ2Nj
LWxpYi9taXBzLXNnaS1pcml4Ni41LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2Zy
ZWV3YXJlL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMy4wL2luY2x1ZGUvc3RkYXJnLmgi
IDEgMwojIDQzICIvdXNyL2ZyZWV3YXJlL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMy4w
L2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFf
bGlzdDsKIyAxNSAiL3Vzci9mcmVld2FyZS9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzMu
MC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiNpZGVudCAiJFJldmlzaW9uOiAxLjc2ICQiCiMg
NTAgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8zLjAvaW5jbHVk
ZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0YW5kYXJkcy5oIiAxIDMKIyAxOSAiL3Vz
ci9pbmNsdWRlL3N0YW5kYXJkcy5oIiAzCiNpZGVudCAiJElkOiBzdGFuZGFyZHMuaCx2IDEuMTkg
MTk5Ny8xMi8xNSAyMTozMDoyNSBqcGggRXhwICQiCiMgNTEgIi91c3IvZnJlZXdhcmUvbGliL2dj
Yy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8zLjAvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyAxICIvdXNy
L2luY2x1ZGUvc2dpZGVmcy5oIiAxIDMKIyAxOSAiL3Vzci9pbmNsdWRlL3NnaWRlZnMuaCIgMwoj
aWRlbnQgIiRSZXZpc2lvbjogMS4xMSAkIgojIDEzNiAiL3Vzci9pbmNsdWRlL3NnaWRlZnMuaCIg
Mwp0eXBlZGVmIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgX191aW50MzJfdDsKIyAx
ODMgIi91c3IvaW5jbHVkZS9zZ2lkZWZzLmgiIDMKdHlwZWRlZiBsb25nIGxvbmcgX19pbnQ2NF90
Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VpbnQ2NF90OwojIDIxOSAiL3Vzci9pbmNs
dWRlL3NnaWRlZnMuaCIgMwp0eXBlZGVmIF9faW50MzJfdCBfX3BzaW50X3Q7CnR5cGVkZWYgX191
aW50MzJfdCBfX3BzdW5zaWduZWRfdDsKIyAyNDEgIi91c3IvaW5jbHVkZS9zZ2lkZWZzLmgiIDMK
dHlwZWRlZiBfX2ludDMyX3QgX19zY2ludF90Owp0eXBlZGVmIF9fdWludDMyX3QgX19zY3Vuc2ln
bmVkX3Q7CiMgNTIgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8z
LjAvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7
CiMgNjcgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8zLjAvaW5j
bHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgaW50IHNzaXplX3Q7CiMgNzYgIi91c3IvZnJlZXdhcmUv
bGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8zLjAvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVk
ZWYgX19pbnQ2NF90IGZwb3NfdDsKIyA4NiAiL3Vzci9mcmVld2FyZS9saWIvZ2NjLWxpYi9taXBz
LXNnaS1pcml4Ni41LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfX2ludDY0X3Qgb2Zm
NjRfdDsKIyA5NiAiL3Vzci9mcmVld2FyZS9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzMu
MC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfX2ludDY0X3Qgb2ZmX3Q7CiMgMTA4ICIvdXNy
L2ZyZWV3YXJlL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMy4wL2luY2x1ZGUvc3RkaW8u
aCIgMwp0eXBlZGVmIF9faW50NjRfdCBmcG9zNjRfdDsKIyAxMTcgIi91c3IvZnJlZXdhcmUvbGli
L2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8zLjAvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYg
Y2hhciAqX19ub3RfdmFfbGlzdF9fOwojIDE4NyAiL3Vzci9mcmVld2FyZS9saWIvZ2NjLWxpYi9t
aXBzLXNnaS1pcml4Ni41LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKIyAx
OTcgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8zLjAvaW5jbHVk
ZS9zdGRpby5oIiAzCl9fZmlsZV9zCgp7CgogICAgICAgIGludCBfY250OwoKCgoKICAgICAgICB1
bnNpZ25lZCBjaGFyICpfcHRyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9iYXNlOwoKCgoKCiAg
ICAgICAgdW5zaWduZWQgY2hhciBfZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9vX2ZpbGU7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX2ZpbGU7CgoKCgp9IEZJTEU7CgpleHRlcm4gRklMRSBf
X2lvYlsxMDBdOwoKZXh0ZXJuIEZJTEUgKl9sYXN0YnVmOwpleHRlcm4gdW5zaWduZWQgY2hhciAq
X2J1ZmVuZHRhYltdOwpleHRlcm4gdW5zaWduZWQgY2hhciBfc2lidWZbXSwgX3NvYnVmW107CgoK
ZXh0ZXJuIGludCByZW1vdmUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCByZW5hbWUoY29uc3Qg
Y2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklMRSAqdG1wZmlsZSh2b2lkKTsKZXh0ZXJu
IGNoYXIgKnRtcG5hbShjaGFyICopOwpleHRlcm4gaW50IGZjbG9zZShGSUxFICopOwpleHRlcm4g
aW50IGZmbHVzaChGSUxFICopOwpleHRlcm4gRklMRSAqZm9wZW4oY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICopOwpleHRlcm4gRklMRSAqZnJlb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
KiwgRklMRSAqKTsKZXh0ZXJuIHZvaWQgc2V0YnVmKEZJTEUgKiwgY2hhciAqKTsKZXh0ZXJuIGlu
dCBzZXR2YnVmKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7CgpleHRlcm4gaW50IGZwcmlu
dGYoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IGZzY2FuZihGSUxFICos
IGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgcHJpbnRmKGNvbnN0IGNoYXIgKiwgLi4u
KTsKCmV4dGVybiBpbnQgc2NhbmYoY29uc3QgY2hhciAqLCAuLi4pOwoKCmV4dGVybiBpbnQgc25w
cmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgLi4uKTsKCgpleHRlcm4gaW50IHNw
cmludGYoY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IHNzY2FuZihjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCB2ZnByaW50ZihGSUxFICos
IGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwpleHRlcm4gaW50IHZwcmludGYoY29uc3Qg
Y2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CgpleHRlcm4gaW50IHZzbnByaW50ZihjaGFyICosIHNp
emVfdCwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CgpleHRlcm4gaW50IHZzcHJpbnRm
KGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CiMgMjcxICIvdXNyL2ZyZWV3
YXJlL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gaW50IGZnZXRjKEZJTEUgKik7CmV4dGVybiBjaGFyICpmZ2V0cyhjaGFyICosIGludCwg
RklMRSAqKTsKZXh0ZXJuIGludCBmcHV0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgZnB1dHMo
Y29uc3QgY2hhciAqLCBGSUxFICopOwpleHRlcm4gaW50IGdldGMoRklMRSAqKTsKZXh0ZXJuIGlu
dCBnZXRjaGFyKHZvaWQpOwpleHRlcm4gY2hhciAqZ2V0cyhjaGFyICopOwpleHRlcm4gaW50IHB1
dGMoaW50LCBGSUxFICopOwpleHRlcm4gaW50IHB1dGNoYXIoaW50KTsKZXh0ZXJuIGludCBwdXRz
KGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdW5nZXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIHNp
emVfdCBmcmVhZCh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwojcHJhZ21hIGludF90
b191bnNpZ25lZCBmcmVhZApleHRlcm4gc2l6ZV90IGZ3cml0ZShjb25zdCB2b2lkICosIHNpemVf
dCwgc2l6ZV90LCBGSUxFICopOwojcHJhZ21hIGludF90b191bnNpZ25lZCBmd3JpdGUKZXh0ZXJu
IGludCBmZ2V0cG9zKEZJTEUgKiwgZnBvc190ICopOwpleHRlcm4gaW50IGZzZWVrKEZJTEUgKiwg
bG9uZywgaW50KTsKZXh0ZXJuIGludCBmc2V0cG9zKEZJTEUgKiwgY29uc3QgZnBvc190ICopOwpl
eHRlcm4gbG9uZyBmdGVsbChGSUxFICopOwpleHRlcm4gdm9pZCByZXdpbmQoRklMRSAqKTsKZXh0
ZXJuIHZvaWQgY2xlYXJlcnIoRklMRSAqKTsKZXh0ZXJuIGludCBmZW9mKEZJTEUgKik7CmV4dGVy
biBpbnQgZmVycm9yKEZJTEUgKik7CmV4dGVybiB2b2lkIHBlcnJvcihjb25zdCBjaGFyICopOwoK
ZXh0ZXJuIGludCBfX2ZpbGJ1ZihGSUxFICopOwpleHRlcm4gaW50IF9fZmxzYnVmKGludCwgRklM
RSAqKTsKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbihpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBp
bnQgZmlsZW5vKEZJTEUgKik7CgoKCgpleHRlcm4gdm9pZCBmbG9ja2ZpbGUoRklMRSAqKTsKZXh0
ZXJuIGludCBmdHJ5bG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUoRklM
RSAqKTsKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkKEZJTEUgKik7CmV4dGVybiBpbnQgcHV0Y191
bmxvY2tlZChpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCh2b2lkKTsK
ZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkKGludCk7CgoKCmV4dGVybiBGSUxFICpwb3Blbihj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcGNsb3NlKEZJTEUgKik7CgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMKCgojaWRlbnQgIiRSZXZpc2lvbjogMS4x
MSAkIgojIDI3ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3Rh
bmRhcmRzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDIgMwoKZXh0ZXJuIGlu
dCBnZXRvcHQoaW50LCBjaGFyICpjb25zdCAqLCBjb25zdCBjaGFyICopOwoKZXh0ZXJuIGNoYXIg
Km9wdGFyZzsKZXh0ZXJuIGludCBvcHRlcnI7CmV4dGVybiBpbnQgb3B0aW5kOwpleHRlcm4gaW50
IG9wdG9wdDsKIyA0NSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBpbnQgZ2V0c3Vi
b3B0KGNoYXIgKiosIGNoYXIgKmNvbnN0ICosIGNoYXIgKiopOwpleHRlcm4gdm9pZCBnZXRvcHRy
ZXNldCh2b2lkKTsKIyAzMjMgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJp
eDYuNS8zLjAvaW5jbHVkZS9zdGRpby5oIiAyIDMKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQoY2hhciAq
KTsKZXh0ZXJuIGNoYXIgKmN1c2VyaWQoY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnRlbXBuYW0oY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGdldHcoRklMRSAqKTsKZXh0ZXJu
IGludCBwdXR3KGludCwgRklMRSAqKTsKCgoKCgpleHRlcm4gY2hhciAqbWt0ZW1wKGNoYXIgKik7
CmV4dGVybiBpbnQgbWtzdGVtcChjaGFyICopOwpleHRlcm4gaW50IHNldGJ1ZmZlcihGSUxFICos
IGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBzZXRsaW5lYnVmKEZJTEUgKik7CmV4dGVybiBpbnQg
c3lzdGVtKGNvbnN0IGNoYXIgKik7CgoKCgpleHRlcm4gb2ZmX3QgZnRlbGxvKEZJTEUgKik7CmV4
dGVybiBpbnQgZnNlZWtvKEZJTEUgKiwgb2ZmX3QsIGludCk7CgoKCgpleHRlcm4gaW50IGZnZXRw
b3M2NChGSUxFICosIGZwb3M2NF90ICopOwpleHRlcm4gRklMRSAqZm9wZW42NChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiBpbnQgZnNlZWs2NChGSUxFICosIF9faW50NjRf
dCwgaW50KTsKZXh0ZXJuIGludCBmc2Vla282NChGSUxFICosIG9mZjY0X3QsIGludCk7CmV4dGVy
biBpbnQgZnNldHBvczY0KEZJTEUgKiwgY29uc3QgZnBvczY0X3QgKik7CmV4dGVybiBfX2ludDY0
X3QgZnRlbGw2NChGSUxFICopOwpleHRlcm4gb2ZmNjRfdCBmdGVsbG82NChGSUxFICopOwpleHRl
cm4gRklMRSAqdG1wZmlsZTY0KHZvaWQpOwoKCgpleHRlcm4gaW50IF9fc2VtcHV0YyhpbnQsIEZJ
TEUgKik7CmV4dGVybiBpbnQgX19zZW1nZXRjKEZJTEUgKik7CmV4dGVybiBpbnQgX191c19yc3Ro
cmVhZF9zdGRpbzsKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWRfcihjaGFyICopOwojIDQgImJhZmlv
LmMiIDIKIyAxICIvdXNyL2ZyZWV3YXJlL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMy4w
L2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDE1ICIvdXNyL2ZyZWV3YXJlL2xpYi9nY2MtbGliL21p
cHMtc2dpLWlyaXg2LjUvMy4wL2luY2x1ZGUvc3RkbGliLmgiIDMKI2lkZW50ICIkUmV2aXNpb246
IDEuNzggJCIKIyA0MyAiL3Vzci9mcmVld2FyZS9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41
LzMuMC9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0YW5kYXJkcy5oIiAx
IDMKIyA0NCAiL3Vzci9mcmVld2FyZS9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzMuMC9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc2dpZGVmcy5oIiAxIDMKIyA0
NSAiL3Vzci9mcmVld2FyZS9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzMuMC9pbmNsdWRl
L3N0ZGxpYi5oIiAyIDMKIyA5OSAiL3Vzci9mcmVld2FyZS9saWIvZ2NjLWxpYi9taXBzLXNnaS1p
cml4Ni41LzMuMC9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICAg
aW50IHF1b3Q7CiAgICAgICAgIGludCByZW07CiAgICAgICAgfSBkaXZfdDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICAgbG9uZyBxdW90OwogICAgICAgICBsb25nIHJlbTsKICAgICAgICB9IGxk
aXZfdDsKIyAxNDUgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8z
LjAvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CiMgMTYyICIv
dXNyL2ZyZWV3YXJlL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMy4wL2luY2x1ZGUvc3Rk
bGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbG9jYWxlX2F0dHIuaCIgMSAzCiMgMTYgIi91c3Iv
aW5jbHVkZS9sb2NhbGVfYXR0ci5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3NnaWRlZnMuaCIgMSAz
CiMgMTcgIi91c3IvaW5jbHVkZS9sb2NhbGVfYXR0ci5oIiAyIDMKCgoKCiNpZGVudCAiJFJldmlz
aW9uOiAxLjQgJCIKIyA0NCAiL3Vzci9pbmNsdWRlL2xvY2FsZV9hdHRyLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgewoKICAgIHVuc2lnbmVkIGludCBfY2xhc3MgWyAyNTcgXTsKICAgIHNpZ25lZCBzaG9y
dCBfbG93ZXIgWyAyNTcgXTsKICAgIHNpZ25lZCBzaG9ydCBfdXBwZXIgWyAyNTcgXTsKCiAgICBj
aGFyIF9jc3dpZHRoIFsgNyBdOwogICAgY2hhciBfZmlsbCBbIDEgXTsKCgoKfSBfX2N0eXBlX3Q7
CgoKdHlwZWRlZiBpbnQgKCpfX2lzc2V0X2Z1bmNfdCkoaW50KTsKCgoKCiAgICAgICAgdHlwZWRl
ZiBsb25nIHdpbnRfdDsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2lzY29kZXNldF9mdW5jX3QpKGlu
dCwgd2ludF90KTsKCgp0eXBlZGVmIHN0cnVjdCBfX2F0dHIgewoKICAgIF9fY3R5cGVfdCAqIF9j
dHlwZV90Ymw7CgogICAgc3RydWN0IF9jc2luZm8gewogICAgICAgIHVuc2lnbmVkIGNoYXIgX2V1
Y3dpZHRoWzNdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgX3NjcndpZHRoWzNdOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgX21iX2N1cl9tYXg7CiAgICB9IF9jc2luZm87CgogICAgc3RydWN0IF9ldWNf
ZnVuYyB7CiAgICAgICAgaW50IF9pc19ldWM7CiAgICAgICAgX19pc3NldF9mdW5jX3QgX2lzc2V0
MjsKICAgICAgICBfX2lzc2V0X2Z1bmNfdCBfaXNzZXQzOwogICAgICAgIF9faXNjb2Rlc2V0X2Z1
bmNfdCBfaXNjb2Rlc2V0OwogICAgfSBfZXVjX2Z1bmM7CgogICAgc3RydWN0IF9jb2xsYXRlX3Jl
cyB7CiAgICAgICAgdW5zaWduZWQgY2hhciBfY29sbF9hc19jbXA7CiAgICB9IF9jb2xsYXRlX3Jl
czsKCiAgICB2b2lkICogX2ZpbGxbMTVdOwp9IF9fYXR0cl90OwoKCgoKZXh0ZXJuIF9fYXR0cl90
IF9fbGliY19hdHRyOwojIDE2MyAiL3Vzci9mcmVld2FyZS9saWIvZ2NjLWxpYi9taXBzLXNnaS1p
cml4Ni41LzMuMC9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxNzMgIi91c3IvZnJlZXdhcmUvbGli
L2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8zLjAvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
ZG91YmxlIGF0b2YoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBhdG9pKGNvbnN0IGNoYXIgKik7
CmV4dGVybiBsb25nIGludCBhdG9sKGNvbnN0IGNoYXIgKik7CmV4dGVybiBkb3VibGUgc3RydG9k
KGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CmV4dGVybiBsb25nIGludCBzdHJ0b2woY29uc3QgY2hh
ciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bChjb25z
dCBjaGFyICosIGNoYXIgKiosIGludCk7CmV4dGVybiBpbnQgcmFuZCh2b2lkKTsKZXh0ZXJuIHZv
aWQgc3JhbmQodW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgKmNhbGxvYyhzaXplX3QsIHNpemVf
dCk7CmV4dGVybiB2b2lkIGZyZWUodm9pZCAqKTsKZXh0ZXJuIHZvaWQgKm1hbGxvYyhzaXplX3Qp
OwpleHRlcm4gdm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CgoKCgoKCgpleHRlcm4gdm9p
ZCBhYm9ydCh2b2lkKTsKZXh0ZXJuIGludCBhdGV4aXQodm9pZCAoKikodm9pZCkpOwpleHRlcm4g
dm9pZCBleGl0KGludCk7CgoKCgpleHRlcm4gY2hhciAqZ2V0ZW52KGNvbnN0IGNoYXIgKik7CmV4
dGVybiBpbnQgc3lzdGVtKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkICpic2VhcmNoKGNvbnN0
IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwKICAgICAgICBpbnQgKCopKGNv
bnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CmV4dGVybiB2b2lkIHFzb3J0KHZvaWQgKiwgc2l6
ZV90LCBzaXplX3QsCiAgICAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikp
OwoKCgoKCgoKZXh0ZXJuIGludCBhYnMoaW50KTsKCgoKCgoKZXh0ZXJuIGRpdl90IGRpdihpbnQs
IGludCk7CmV4dGVybiBsb25nIGludCBsYWJzKGxvbmcpOwoKCgoKZXh0ZXJuIGxkaXZfdCBsZGl2
KGxvbmcsIGxvbmcpOwpleHRlcm4gaW50IG1idG93Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90KTsKZXh0ZXJuIGludCBtYmxlbihjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBp
bnQgd2N0b21iKGNoYXIgKiwgd2NoYXJfdCk7CmV4dGVybiBzaXplX3QgbWJzdG93Y3Mod2NoYXJf
dCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBzaXplX3Qgd2NzdG9tYnMoY2hhciAq
LCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CgoKCmV4dGVybiBpbnQgcHV0ZW52KGNvbnN0IGNo
YXIgKik7CmV4dGVybiBkb3VibGUgZHJhbmQ0OCh2b2lkKTsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4
KHVuc2lnbmVkIHNob3J0IFszXSk7CmV4dGVybiBsb25nIGxyYW5kNDgodm9pZCk7CmV4dGVybiBs
b25nIG5yYW5kNDgodW5zaWduZWQgc2hvcnQgWzNdKTsKZXh0ZXJuIGxvbmcgbXJhbmQ0OCh2b2lk
KTsKZXh0ZXJuIGxvbmcganJhbmQ0OCh1bnNpZ25lZCBzaG9ydCBbM10pOwpleHRlcm4gdm9pZCBz
cmFuZDQ4KGxvbmcpOwpleHRlcm4gdm9pZCBsY29uZzQ4KHVuc2lnbmVkIHNob3J0IGludCBbN10p
OwpleHRlcm4gdm9pZCBzZXRrZXkoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0
ICogc2VlZDQ4KHVuc2lnbmVkIHNob3J0IGludCBbM10pOwoKCgoKZXh0ZXJuIGxvbmcgYTY0bChj
b25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqZWN2dChkb3VibGUsIGludCwgaW50ICosIGludCAq
KTsKZXh0ZXJuIGNoYXIgKmZjdnQoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBj
aGFyICpnY3Z0KGRvdWJsZSwgaW50LCBjaGFyICopOwpleHRlcm4gaW50IGdldHN1Ym9wdChjaGFy
ICoqLCBjaGFyICogY29uc3QgKiwgY2hhciAqKik7CmV4dGVybiBpbnQgZ3JhbnRwdChpbnQpOwpl
eHRlcm4gY2hhciAqaW5pdHN0YXRlKHVuc2lnbmVkIGludCwgY2hhciAqLCBzaXplX3QpOwpleHRl
cm4gY2hhciAqbDY0YShsb25nKTsKZXh0ZXJuIGNoYXIgKm1rdGVtcChjaGFyICopOwpleHRlcm4g
aW50IG1rc3RlbXAoY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnB0c25hbWUoaW50KTsKZXh0ZXJuIGxv
bmcgcmFuZG9tKHZvaWQpOwpleHRlcm4gY2hhciAqcmVhbHBhdGgoY29uc3QgY2hhciAqLCBjaGFy
ICopOwpleHRlcm4gY2hhciAqc2V0c3RhdGUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgc3Jh
bmRvbSh1bnNpZ25lZCk7CmV4dGVybiBpbnQgdHR5c2xvdCh2b2lkKTsKZXh0ZXJuIGludCB1bmxv
Y2twdChpbnQpOwpleHRlcm4gdm9pZCAqdmFsbG9jKHNpemVfdCk7CgoKCgoKCgpleHRlcm4gaW50
IHJhbmRfcih1bnNpZ25lZCBpbnQgKik7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIg
MSAzCiMgMjgwICIvdXNyL2ZyZWV3YXJlL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMy4w
L2luY2x1ZGUvc3RkbGliLmgiIDIgMwpleHRlcm4gaW50IGF0Y2hlY2twb2ludCh2b2lkICgqKSh2
b2lkKSk7CmV4dGVybiBpbnQgYXRyZXN0YXJ0KHZvaWQgKCopKHZvaWQpKTsKZXh0ZXJuIGludCBk
dXAyKGludCwgaW50KTsKZXh0ZXJuIGludCBnZXRwdyhpbnQsIGNoYXIgKik7CmV4dGVybiBjaGFy
ICpnZXRjd2QoY2hhciAqLCBzaXplX3QpOwpleHRlcm4gY2hhciAqZ2V0bG9naW4odm9pZCk7CmV4
dGVybiBjaGFyICpnZXRwYXNzKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgaXNhdHR5KGludCk7
CmV4dGVybiB2b2lkIGwzdG9sKGxvbmcgKiwgY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gdm9p
ZCBsdG9sMyhjaGFyICosIGNvbnN0IGxvbmcgKiwgaW50KTsKZXh0ZXJuIHZvaWQgKm1lbWFsaWdu
KHNpemVfdCwgc2l6ZV90KTsKIyAzMDAgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIvbWlwcy1z
Z2ktaXJpeDYuNS8zLjAvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgYXRv
bGQoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGQoY29uc3QgY2hhciAq
bnB0ciwgY2hhciAqKmVuZHB0cik7CmV4dGVybiBjaGFyICpxZWN2dChsb25nIGRvdWJsZSwgaW50
LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAqcWZjdnQobG9uZyBkb3VibGUsIGludCwgaW50
ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKnFnY3Z0KGxvbmcgZG91YmxlLCBpbnQsIGNoYXIgKik7
CmV4dGVybiBjaGFyICplY3Z0bChsb25nIGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRl
cm4gY2hhciAqZmN2dGwobG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNo
YXIgKmdjdnRsKGxvbmcgZG91YmxlLCBpbnQsIGNoYXIgKik7CiMgMzIwICIvdXNyL2ZyZWV3YXJl
L2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMy4wL2luY2x1ZGUvc3RkbGliLmgiIDMKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgICBfX2ludDY0X3QgcXVvdDsKICAgICAgICAgX19pbnQ2NF90
IHJlbTsKICAgICAgICB9IGxsZGl2X3Q7CgpleHRlcm4gX19pbnQ2NF90IGF0b2xsKGNvbnN0IGNo
YXIgKik7CmV4dGVybiBfX2ludDY0X3Qgc3RydG9sbChjb25zdCBjaGFyICosIGNoYXIgKiosIGlu
dCk7CmV4dGVybiBfX3VpbnQ2NF90IHN0cnRvdWxsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50
KTsKZXh0ZXJuIF9faW50NjRfdCBsbGFicyhfX2ludDY0X3QpOwoKCgoKZXh0ZXJuIGxsZGl2X3Qg
bGxkaXYoX19pbnQ2NF90LCBfX2ludDY0X3QpOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmVjdnRfcihk
b3VibGUsIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwpleHRlcm4gY2hhciAqZmN2dF9yKGRv
dWJsZSwgaW50LCBpbnQgKiwgaW50ICosIGNoYXIgKik7CgpleHRlcm4gY2hhciAqcWVjdnRfcihs
b25nIGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICosIGNoYXIgKik7CmV4dGVybiBjaGFyICpxZmN2
dF9yKGxvbmcgZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIg
KmVjdnRsX3IobG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwpleHRlcm4g
Y2hhciAqZmN2dGxfcihsb25nIGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICosIGNoYXIgKik7CiMg
NSAiYmFmaW8uYyIgMgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzCiMgMjQgIi91c3Iv
aW5jbHVkZS9hc3NlcnQuaCIgMwojaWRlbnQgIiRSZXZpc2lvbjogMS4xNyAkIgojIDYgImJhZmlv
LmMiIDIKCgoKCgoKIyAxICJfYXRlcm0uaCIgMQoKCgojIDEgImF0ZXJtMi5oIiAxCiMgMTQgImF0
ZXJtMi5oIgojIDEgImF0ZXJtMS5oIiAxCiMgOSAiYXRlcm0xLmgiCiMgMSAiL3Vzci9mcmVld2Fy
ZS9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDEgMwoj
IDEwICJhdGVybTEuaCIgMgojIDEgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIvbWlwcy1zZ2kt
aXJpeDYuNS8zLjAvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgMTEwICIvdXNyL2ZyZWV3YXJlL2xp
Yi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMy4wL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRl
ZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICJhdGVybTEuaCIgMgojIDEgImVuY29kaW5n
LmgiIDEKIyA5NyAiZW5jb2RpbmcuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgaGVhZGVyX3R5cGU7
CiMgMTIgImF0ZXJtMS5oIiAyCiMgMSAiYWJvb2wuaCIgMQoKCgp0eXBlZGVmIGVudW0geyBBVGZh
bHNlPTAsIEFUdHJ1ZSB9IEFUYm9vbDsKIyAxMyAiYXRlcm0xLmgiIDIKIyAyNCAiYXRlcm0xLmgi
CnR5cGVkZWYgc3RydWN0IF9BVGVybQp7CiAgICAgICAgaGVhZGVyX3R5cGUgaGVhZGVyOwogICAg
ICAgIHN0cnVjdCBfQVRlcm0gKm5leHQ7Cn0gKkFUZXJtOwojIDM4ICJhdGVybTEuaCIKQVRlcm0g
QVRtYWtlKGNvbnN0IGNoYXIgKnBhdHRlcm4sIC4uLik7CkFUYm9vbCBBVG1hdGNoKEFUZXJtIHQs
IGNvbnN0IGNoYXIgKnBhdHRlcm4sIC4uLik7CgpBVGVybSBBVG1ha2VUZXJtKEFUZXJtIHBhdCwg
Li4uKTsKQVRib29sIEFUbWF0Y2hUZXJtKEFUZXJtIHQsIEFUZXJtIHBhdCwgLi4uKTsKQVRlcm0g
QVR2bWFrZShjb25zdCBjaGFyICpwYXQpOwpBVGVybSBBVHZtYWtlVGVybShBVGVybSBwYXQpOwp2
b2lkIEFUX3ZtYWtlU2V0QXJncyh2YV9saXN0ICphcmdzKTsKQVRib29sIEFUdm1hdGNoKEFUZXJt
IHQsIGNvbnN0IGNoYXIgKnBhdCk7CkFUYm9vbCBBVHZtYXRjaFRlcm0oQVRlcm0gdCwgQVRlcm0g
cGF0KTsKCkFUZXJtIEFUcmVhZEZyb21UZXh0RmlsZShGSUxFICpmaWxlKTsKQVRlcm0gQVRyZWFk
RnJvbVNoYXJlZFRleHRGaWxlKEZJTEUgKmYpOwpBVGVybSBBVHJlYWRGcm9tQmluYXJ5RmlsZShG
SUxFICpmaWxlKTsKQVRlcm0gQVRyZWFkRnJvbUZpbGUoRklMRSAqZmlsZSk7CkFUZXJtIEFUcmVh
ZEZyb21OYW1lZEZpbGUoY29uc3QgY2hhciAqbmFtZSk7CkFUZXJtIEFUcmVhZEZyb21TdHJpbmco
Y29uc3QgY2hhciAqc3RyaW5nKTsKQVRlcm0gQVRyZWFkRnJvbVNoYXJlZFN0cmluZyhjaGFyICpz
LCBpbnQgc2l6ZSk7CkFUZXJtIEFUcmVhZEZyb21CaW5hcnlTdHJpbmcoY2hhciAqcywgaW50IHNp
emUpOwojIDc1ICJhdGVybTEuaCIKQVRib29sIEFUd3JpdGVUb1RleHRGaWxlKEFUZXJtIHQsIEZJ
TEUgKmZpbGUpOwpsb25nIEFUd3JpdGVUb1NoYXJlZFRleHRGaWxlKEFUZXJtIHQsIEZJTEUgKmYp
OwpBVGJvb2wgQVR3cml0ZVRvQmluYXJ5RmlsZShBVGVybSB0LCBGSUxFICpmaWxlKTsKQVRib29s
IEFUd3JpdGVUb05hbWVkVGV4dEZpbGUoQVRlcm0gdCwgY29uc3QgY2hhciAqbmFtZSk7CkFUYm9v
bCBBVHdyaXRlVG9OYW1lZEJpbmFyeUZpbGUoQVRlcm0gdCwgY29uc3QgY2hhciAqbmFtZSk7CmNo
YXIgKkFUd3JpdGVUb1N0cmluZyhBVGVybSB0KTsKY2hhciAqQVR3cml0ZVRvU2hhcmVkU3RyaW5n
KEFUZXJtIHQsIGludCAqbGVuKTsKY2hhciAqQVR3cml0ZVRvQmluYXJ5U3RyaW5nKEFUZXJtIHQs
IGludCAqbGVuKTsKQVRlcm0gQVRzZXRBbm5vdGF0aW9uKEFUZXJtIHQsIEFUZXJtIGxhYmVsLCBB
VGVybSBhbm5vKTsKQVRlcm0gQVRnZXRBbm5vdGF0aW9uKEFUZXJtIHQsIEFUZXJtIGxhYmVsKTsK
QVRlcm0gQVRyZW1vdmVBbm5vdGF0aW9uKEFUZXJtIHQsIEFUZXJtIGxhYmVsKTsKCnZvaWQgQVRw
cm90ZWN0KEFUZXJtICphdHApOwp2b2lkIEFUdW5wcm90ZWN0KEFUZXJtICphdHApOwp2b2lkIEFU
cHJvdGVjdEFycmF5KEFUZXJtICpzdGFydCwgaW50IHNpemUpOwp2b2lkIEFUdW5wcm90ZWN0QXJy
YXkoQVRlcm0gKnN0YXJ0KTsKCgoKCgoKCnZvaWQgQVRpbml0KGludCBhcmdjLCBjaGFyICphcmd2
W10sIEFUZXJtICpib3R0b21PZlN0YWNrKTsKdm9pZCBBVGluaXRpYWxpemUoaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSk7CnZvaWQgQVRzZXRXYXJuaW5nSGFuZGxlcih2b2lkICgqaGFuZGxlcikoY29u
c3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpKTsKdm9pZCBBVHNldEVycm9ySGFuZGxlcih2
b2lkICgqaGFuZGxlcikoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpKTsKdm9pZCBB
VHNldEFib3J0SGFuZGxlcih2b2lkICgqaGFuZGxlcikoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9s
aXN0IGFyZ3MpKTsKdm9pZCBBVHdhcm5pbmcoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwp2b2lk
IEFUZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwp2b2lkIEFUYWJvcnQoY29uc3QgY2hh
ciAqZm9ybWF0LCAuLi4pOwppbnQgQVRwcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwpp
bnQgQVRmcHJpbnRmKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwppbnQg
QVR2ZnByaW50ZihGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdz
KTsKIyAxNSAiYXRlcm0yLmgiIDIKIyAxICJhZnVuLmgiIDEKCgoKIyAxICJhdHlwZXMuaCIgMQoK
CgojIDEgImFib29sLmgiIDEKIyA1ICJhdHlwZXMuaCIgMgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
U2hvcnRIYXNoTnVtYmVyOwoKCgoKCgoKdHlwZWRlZiBpbnQgTWFjaGluZVdvcmQ7CnR5cGVkZWYg
dW5zaWduZWQgaW50IEhhc2hOdW1iZXI7CiMgNSAiYWZ1bi5oIiAyCiMgMSAiZW5jb2RpbmcuaCIg
MQojIDYgImFmdW4uaCIgMgojIDE3ICJhZnVuLmgiCnR5cGVkZWYgTWFjaGluZVdvcmQgQUZ1bjsK
Cgp0eXBlZGVmIHN0cnVjdCBfU3ltRW50cnkKewogIGhlYWRlcl90eXBlIGhlYWRlcjsKICBzdHJ1
Y3QgX1N5bUVudHJ5ICpuZXh0OwogIEFGdW4gaWQ7CiAgY2hhciAqbmFtZTsKICBpbnQgY291bnQ7
CiAgaW50IGluZGV4Owp9ICpTeW1FbnRyeTsKIyAzOSAiYWZ1bi5oIgpzdHJ1Y3QgX0FUZXJtOwpl
eHRlcm4gc3RydWN0IF9BVGVybSAqKmF0X2xvb2t1cF90YWJsZV9hbGlhczsKZXh0ZXJuIFN5bUVu
dHJ5ICphdF9sb29rdXBfdGFibGU7Cgp1bnNpZ25lZCBpbnQgQVRfc3ltYm9sVGFibGVTaXplKCk7
CnZvaWQgQVRfaW5pdFN5bWJvbChpbnQgYXJnYywgY2hhciAqYXJndltdKTsKaW50IEFUX3ByaW50
U3ltYm9sKEFGdW4gc3ltLCBGSUxFICpmKTsKQVRib29sIEFUX2lzVmFsaWRTeW1ib2woQUZ1biBz
eW0pOwoKQVRib29sIEFUX2lzTWFya2VkU3ltYm9sKEFGdW4gc3ltKTsKdm9pZCBBVF9mcmVlU3lt
Ym9sKFN5bUVudHJ5IHN5bSk7CnZvaWQgQVRfbWFya1Byb3RlY3RlZFN5bWJvbHMoKTsKdW5zaWdu
ZWQgaW50IEFUX2hhc2hTeW1ib2woY2hhciAqbmFtZSwgaW50IGFyaXR5KTsKQVRib29sIEFUX2Zp
bmRTeW1ib2woY2hhciAqbmFtZSwgaW50IGFyaXR5LCBBVGJvb2wgcXVvdGVkKTsKIyAxNiAiYXRl
cm0yLmgiIDIKIyAxICJhYm9vbC5oIiAxCiMgMTcgImF0ZXJtMi5oIiAyCgoKCgoKdHlwZWRlZiBz
dHJ1Y3QKewogICAgICAgIGhlYWRlcl90eXBlIGhlYWRlcjsKICAgICAgICBBVGVybSBuZXh0Owog
ICAgICAgIGludCB2YWx1ZTsKfSAqQVRlcm1JbnQ7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAg
aGVhZGVyX3R5cGUgaGVhZGVyOwogICAgICAgIEFUZXJtIG5leHQ7CiAgICAgICAgZG91YmxlIHZh
bHVlOwp9ICpBVGVybVJlYWw7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgaGVhZGVyX3R5cGUg
aGVhZGVyOwogICAgICAgIEFUZXJtIG5leHQ7Cn0gKkFUZXJtQXBwbDsKCnR5cGVkZWYgc3RydWN0
IF9BVGVybUxpc3QKewogICAgICAgIGhlYWRlcl90eXBlIGhlYWRlcjsKICAgICAgICBBVGVybSBu
ZXh0OwogICAgICAgIEFUZXJtIGhlYWQ7CiAgICAgICAgc3RydWN0IF9BVGVybUxpc3QgKnRhaWw7
Cn0gKkFUZXJtTGlzdDsKCnR5cGVkZWYgc3RydWN0CnsKICAgICAgICBoZWFkZXJfdHlwZSBoZWFk
ZXI7CiAgICAgICAgQVRlcm0gbmV4dDsKICAgICAgICBBVGVybSBwaF90eXBlOwp9ICpBVGVybVBs
YWNlaG9sZGVyOwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIGhlYWRlcl90eXBlIGhlYWRlcjsK
ICAgICAgICBBVGVybSBuZXh0OwogICAgICAgIHZvaWQgKmRhdGE7Cn0gKkFUZXJtQmxvYjsKCnN0
cnVjdCBfQVRlcm1UYWJsZTsKCnR5cGVkZWYgc3RydWN0IF9BVGVybVRhYmxlICpBVGVybUluZGV4
ZWRTZXQ7CnR5cGVkZWYgc3RydWN0IF9BVGVybVRhYmxlICpBVGVybVRhYmxlOwojIDc3ICJhdGVy
bTIuaCIKQVRlcm1JbnQgQVRtYWtlSW50KGludCB2YWx1ZSk7CgoKCgpBVGVybVJlYWwgQVRtYWtl
UmVhbChkb3VibGUgdmFsdWUpOwoKCgoKQVRlcm1BcHBsIEFUbWFrZUFwcGwoQUZ1biBzeW0sIC4u
Lik7CkFUZXJtQXBwbCBBVG1ha2VBcHBsMChBRnVuIHN5bSk7CkFUZXJtQXBwbCBBVG1ha2VBcHBs
MShBRnVuIHN5bSwgQVRlcm0gYXJnMCk7CkFUZXJtQXBwbCBBVG1ha2VBcHBsMihBRnVuIHN5bSwg
QVRlcm0gYXJnMCwgQVRlcm0gYXJnMSk7CkFUZXJtQXBwbCBBVG1ha2VBcHBsMyhBRnVuIHN5bSwg
QVRlcm0gYXJnMCwgQVRlcm0gYXJnMSwgQVRlcm0gYXJnMik7CkFUZXJtQXBwbCBBVG1ha2VBcHBs
NChBRnVuIHN5bSwgQVRlcm0gYXJnMCwgQVRlcm0gYXJnMSwgQVRlcm0gYXJnMiwKICAgICAgICAg
ICAgICAgICAgICAgICBBVGVybSBhcmczKTsKQVRlcm1BcHBsIEFUbWFrZUFwcGw1KEFGdW4gc3lt
LCBBVGVybSBhcmcwLCBBVGVybSBhcmcxLCBBVGVybSBhcmcyLAogICAgICAgICAgICAgICAgICAg
ICAgIEFUZXJtIGFyZzQsIEFUZXJtIGFyZzUpOwpBVGVybUFwcGwgQVRtYWtlQXBwbDYoQUZ1biBz
eW0sIEFUZXJtIGFyZzAsIEFUZXJtIGFyZzEsIEFUZXJtIGFyZzIsCiAgICAgICAgICAgICAgICAg
ICAgICAgQVRlcm0gYXJnNCwgQVRlcm0gYXJnNSwgQVRlcm0gYXJnNik7CgoKCgoKCgpBVGVybUFw
cGwgQVRzZXRBcmd1bWVudChBVGVybUFwcGwgYXBwbCwgQVRlcm0gYXJnLCBpbnQgbik7CgoKQVRl
cm1MaXN0IEFUZ2V0QXJndW1lbnRzKEFUZXJtQXBwbCBhcHBsKTsKQVRlcm1BcHBsIEFUbWFrZUFw
cGxMaXN0KEFGdW4gc3ltLCBBVGVybUxpc3QgYXJncyk7CkFUZXJtQXBwbCBBVG1ha2VBcHBsQXJy
YXkoQUZ1biBzeW0sIEFUZXJtIGFyZ3NbXSk7CgoKZXh0ZXJuIEFUZXJtTGlzdCBBVGVtcHR5OwoK
QVRlcm1MaXN0IEFUbWFrZUxpc3QoaW50IG4sIC4uLik7CgoKCgpBVGVybUxpc3QgQVRtYWtlTGlz
dDEoQVRlcm0gZWwwKTsKIyAxNDQgImF0ZXJtMi5oIgpBVGVybUxpc3QgQVRnZXRUYWlsKEFUZXJt
TGlzdCBsaXN0LCBpbnQgc3RhcnQpOwpBVGVybUxpc3QgQVRyZXBsYWNlVGFpbChBVGVybUxpc3Qg
bGlzdCwgQVRlcm1MaXN0IG5ld3RhaWwsIGludCBzdGFydCk7CkFUZXJtTGlzdCBBVGdldFByZWZp
eChBVGVybUxpc3QgbGlzdCk7CkFUZXJtIEFUZ2V0TGFzdChBVGVybUxpc3QgbGlzdCk7CkFUZXJt
TGlzdCBBVGdldFNsaWNlKEFUZXJtTGlzdCBsaXN0LCBpbnQgc3RhcnQsIGludCBlbmQpOwpBVGVy
bUxpc3QgQVRpbnNlcnQoQVRlcm1MaXN0IGxpc3QsIEFUZXJtIGVsKTsKQVRlcm1MaXN0IEFUaW5z
ZXJ0QXQoQVRlcm1MaXN0IGxpc3QsIEFUZXJtIGVsLCBpbnQgaW5kZXgpOwpBVGVybUxpc3QgQVRh
cHBlbmQoQVRlcm1MaXN0IGxpc3QsIEFUZXJtIGVsKTsKQVRlcm1MaXN0IEFUY29uY2F0KEFUZXJt
TGlzdCBsaXN0MSwgQVRlcm1MaXN0IGxpc3QyKTsKaW50IEFUaW5kZXhPZihBVGVybUxpc3QgbGlz
dCwgQVRlcm0gZWwsIGludCBzdGFydCk7CmludCBBVGxhc3RJbmRleE9mKEFUZXJtTGlzdCBsaXN0
LCBBVGVybSBlbCwgaW50IHN0YXJ0KTsKQVRlcm0gQVRlbGVtZW50QXQoQVRlcm1MaXN0IGxpc3Qs
IGludCBpbmRleCk7CkFUZXJtTGlzdCBBVHJlbW92ZUVsZW1lbnQoQVRlcm1MaXN0IGxpc3QsIEFU
ZXJtIGVsKTsKQVRlcm1MaXN0IEFUcmVtb3ZlRWxlbWVudEF0KEFUZXJtTGlzdCBsaXN0LCBpbnQg
aWR4KTsKQVRlcm1MaXN0IEFUcmVtb3ZlQWxsKEFUZXJtTGlzdCBsaXN0LCBBVGVybSBlbCk7CkFU
ZXJtTGlzdCBBVHJlcGxhY2UoQVRlcm1MaXN0IGxpc3QsIEFUZXJtIGVsLCBpbnQgaWR4KTsKQVRl
cm1MaXN0IEFUcmV2ZXJzZShBVGVybUxpc3QgbGlzdCk7CkFUZXJtTGlzdCBBVHNvcnQoQVRlcm1M
aXN0IGxpc3QsIGludCAoKmNvbXBhcmUpKGNvbnN0IEFUZXJtIHQxLCBjb25zdCBBVGVybSB0Mikp
OwppbnQgQVRjb21wYXJlKEFUZXJtIHQxLCBBVGVybSB0Mik7CkFUZXJtIEFUZGljdENyZWF0ZSgp
OwpBVGVybSBBVGRpY3RHZXQoQVRlcm0gZGljdCwgQVRlcm0ga2V5KTsKQVRlcm0gQVRkaWN0UHV0
KEFUZXJtIGRpY3QsIEFUZXJtIGtleSwgQVRlcm0gdmFsdWUpOwpBVGVybSBBVGRpY3RSZW1vdmUo
QVRlcm0gZGljdCwgQVRlcm0ga2V5KTsKCkFUZXJtVGFibGUgQVR0YWJsZUNyZWF0ZShsb25nIGlu
aXRpYWxfc2l6ZSwgaW50IG1heF9sb2FkX3BjdCk7CnZvaWQgQVR0YWJsZURlc3Ryb3koQVRlcm1U
YWJsZSB0YWJsZSk7CnZvaWQgQVR0YWJsZVJlc2V0KEFUZXJtVGFibGUgdGFibGUpOwp2b2lkIEFU
dGFibGVQdXQoQVRlcm1UYWJsZSB0YWJsZSwgQVRlcm0ga2V5LCBBVGVybSB2YWx1ZSk7CkFUZXJt
IEFUdGFibGVHZXQoQVRlcm1UYWJsZSB0YWJsZSwgQVRlcm0ga2V5KTsKdm9pZCBBVHRhYmxlUmVt
b3ZlKEFUZXJtVGFibGUgdGFibGUsIEFUZXJtIGtleSk7CkFUZXJtTGlzdCBBVHRhYmxlS2V5cyhB
VGVybVRhYmxlIHRhYmxlKTsKQVRlcm1MaXN0IEFUdGFibGVWYWx1ZXMoQVRlcm1UYWJsZSB0YWJs
ZSk7CgpBVGVybUluZGV4ZWRTZXQKICAgICAgICAgICBBVGluZGV4ZWRTZXRDcmVhdGUobG9uZyBp
bml0aWFsX3NpemUsIGludCBtYXhfbG9hZF9wY3QpOwp2b2lkIEFUaW5kZXhlZFNldERlc3Ryb3ko
QVRlcm1JbmRleGVkU2V0IHNldCk7CnZvaWQgQVRpbmRleGVkU2V0UmVzZXQoQVRlcm1JbmRleGVk
U2V0IHNldCk7CmxvbmcgQVRpbmRleGVkU2V0UHV0KEFUZXJtSW5kZXhlZFNldCBzZXQsIEFUZXJt
IGVsZW0sIEFUYm9vbCAqaXNuZXcpOwpsb25nIEFUaW5kZXhlZFNldEdldEluZGV4KEFUZXJtSW5k
ZXhlZFNldCBzZXQsIEFUZXJtIGVsZW0pOwp2b2lkIEFUaW5kZXhlZFNldFJlbW92ZShBVGVybUlu
ZGV4ZWRTZXQgc2V0LCBBVGVybSBlbGVtKTsKQVRlcm1MaXN0IEFUaW5kZXhlZFNldEVsZW1lbnRz
KEFUZXJtSW5kZXhlZFNldCBzZXQpOwpBVGVybSBBVGluZGV4ZWRTZXRHZXRFbGVtKEFUZXJtSW5k
ZXhlZFNldCBzZXQsIGxvbmcgaW5kZXgpOwoKCkFUZXJtTGlzdCBBVGZpbHRlcihBVGVybUxpc3Qg
bGlzdCwgQVRib29sICgqcHJlZGljYXRlKShBVGVybSkpOwoKCkFUZXJtUGxhY2Vob2xkZXIgQVRt
YWtlUGxhY2Vob2xkZXIoQVRlcm0gdHlwZSk7CgoKCgpBVGVybUJsb2IgQVRtYWtlQmxvYihpbnQg
c2l6ZSwgdm9pZCAqZGF0YSk7CgoKCgoKdm9pZCBBVHJlZ2lzdGVyQmxvYkRlc3RydWN0b3IoQVRi
b29sICgqZGVzdHJ1Y3RvcikoQVRlcm1CbG9iKSk7CnZvaWQgQVR1bnJlZ2lzdGVyQmxvYkRlc3Ry
dWN0b3IoQVRib29sICgqZGVzdHJ1Y3RvcikoQVRlcm1CbG9iKSk7CgpBRnVuIEFUbWFrZUFGdW4o
Y2hhciAqbmFtZSwgaW50IGFyaXR5LCBBVGJvb2wgcXVvdGVkKTsKIyAyMTUgImF0ZXJtMi5oIgp2
b2lkIEFUcHJvdGVjdEFGdW4oQUZ1biBzeW0pOwoKdm9pZCBBVHVucHJvdGVjdEFGdW4oQUZ1biBz
eW0pOwoKdm9pZCBBVHByb3RlY3RNZW1vcnkodm9pZCAqc3RhcnQsIGludCBzaXplKTsKdm9pZCBB
VHVucHJvdGVjdE1lbW9yeSh2b2lkICpzdGFydCk7CgoKCgoKCkFUZXJtIEFUX2dldEFubm90YXRp
b25zKEFUZXJtIHQpOwpBVGVybSBBVF9zZXRBbm5vdGF0aW9ucyhBVGVybSB0LCBBVGVybSBhbm5v
cyk7CkFUZXJtIEFUX3JlbW92ZUFubm90YXRpb25zKEFUZXJtIHQpOwoKCkFUZXJtIEFUcmVtb3Zl
QWxsQW5ub3RhdGlvbnMoQVRlcm0gdCk7CgoKCgp1bnNpZ25lZCBjaGFyICpBVGNoZWNrc3VtKEFU
ZXJtIHQpOwpBVGJvb2wgQVRkaWZmKEFUZXJtIHQxLCBBVGVybSB0MiwgQVRlcm0gKnRlbXBsLCBB
VGVybSAqZGlmZnMpOwoKdm9pZCBBVHNldENoZWNraW5nKEFUYm9vbCBvbik7CkFUYm9vbCBBVGdl
dENoZWNraW5nKHZvaWQpOwoKCmV4dGVybiBpbnQgYXRfZ2NfY291bnQ7CgoKaW50IEFUY2FsY1Vu
aXF1ZVN1YnRlcm1zKEFUZXJtIHQpOwppbnQgQVRjYWxjVW5pcXVlU3ltYm9scyhBVGVybSB0KTsK
CmludCBBVGNhbGNUZXh0U2l6ZShBVGVybSB0KTsKCnZvaWQgQVRfd3JpdGVUb1N0cmluZ0J1ZmZl
cihBVGVybSB0LCBjaGFyICpidWZmZXIpOwojIDUgIl9hdGVybS5oIiAyCgp0eXBlZGVmIHN0cnVj
dCBQcm90RW50cnkKewogICAgICAgIHN0cnVjdCBQcm90RW50cnkgKm5leHQ7CiAgICAgICAgQVRl
cm0gKnN0YXJ0OwogICAgICAgIGludCBzaXplOwp9IFByb3RFbnRyeTsKCgoKCmV4dGVybiBBVGJv
b2wgc2lsZW50OwpleHRlcm4gUHJvdEVudHJ5ICoqYXRfcHJvdF90YWJsZTsKZXh0ZXJuIGludCBh
dF9wcm90X3RhYmxlX3NpemU7CmV4dGVybiBQcm90RW50cnkgKmF0X3Byb3RfbWVtb3J5OwoKdm9p
ZCBBVF9tYXJrVGVybShBVGVybSB0KTsKdm9pZCBBVF91bm1hcmtUZXJtKEFUZXJtIHQpOwp2b2lk
IEFUX3VubWFya0lmQWxsTWFya2VkKEFUZXJtIHQpOwppbnQgQVRfY2FsY1RleHRTaXplKEFUZXJt
IHQpOwppbnQgQVRfY2FsY0NvcmVTaXplKEFUZXJtIHQpOwppbnQgQVRfY2FsY1N1YnRlcm1zKEFU
ZXJtIHQpOwppbnQgQVRfY2FsY1VuaXF1ZVN1YnRlcm1zKEFUZXJtIHQpOwppbnQgQVRfY2FsY1Vu
aXF1ZVN5bWJvbHMoQVRlcm0gdCk7CmludCBBVF9jYWxjVGVybURlcHRoKEFUZXJtIHQpOwp2b2lk
IEFUX2Fzc2VydFVubWFya2VkKEFUZXJtIHQpOwp2b2lkIEFUX2Fzc2VydE1hcmtlZChBVGVybSB0
KTsKaW50IEFUX2NhbGNBbGxvY2F0ZWRTaXplKCk7CiMgMTMgImJhZmlvLmMiIDIKIyAxICJhdGVy
bTIuaCIgMQojIDE0ICJiYWZpby5jIiAyCiMgMSAibWVtb3J5LmgiIDEKCgoKIyAxICJhdGVybTIu
aCIgMQojIDUgIm1lbW9yeS5oIiAyCiMgMTggIm1lbW9yeS5oIgp0eXBlZGVmIHN0cnVjdCBCbG9j
awp7CiAgaW50IHNpemU7CiAgc3RydWN0IEJsb2NrICpuZXh0X2J5X3NpemU7CiAgc3RydWN0IEJs
b2NrICpuZXh0X2JlZm9yZTsKICBzdHJ1Y3QgQmxvY2sgKm5leHRfYWZ0ZXI7CiAgaGVhZGVyX3R5
cGUgZGF0YVsoMTw8MTYpXTsKfSBCbG9jazsKCnR5cGVkZWYgc3RydWN0IEJsb2NrQnVja2V0CnsK
ICBzdHJ1Y3QgQmxvY2sgKmZpcnN0X2JlZm9yZTsKICBzdHJ1Y3QgQmxvY2sgKmZpcnN0X2FmdGVy
Owp9IEJsb2NrQnVja2V0OwoKZXh0ZXJuIEJsb2NrICphdF9ibG9ja3NbKDI1NiArMyldOwpleHRl
cm4gaW50IGF0X25yYmxvY2tzWygyNTYgKzMpXTsKZXh0ZXJuIEFUZXJtIGF0X2ZyZWVsaXN0Wygy
NTYgKzMpXTsKZXh0ZXJuIEJsb2NrQnVja2V0IGJsb2NrX3RhYmxlWzQwOTldOwoKdm9pZCBBVF9p
bml0TWVtb3J5KGludCBhcmdjLCBjaGFyICphcmd2W10pOwp2b2lkIEFUX2NsZWFudXBNZW1vcnko
KTsKSGFzaE51bWJlciBBVF9oYXNobnVtYmVyKEFUZXJtIHQpOwpBVGVybSBBVF9hbGxvY2F0ZShp
bnQgc2l6ZSk7CnZvaWQgQVRfZnJlZVRlcm0oaW50IHNpemUsIEFUZXJtIHQpOwp2b2lkIEFUX2Nv
bGxlY3QoaW50IHNpemUpOwpBVGJvb2wgQVRfaXNWYWxpZFRlcm0oQVRlcm0gdGVybSk7CkFUZXJt
IEFUX2lzSW5zaWRlVmFsaWRUZXJtKEFUZXJtIHRlcm0pOwp2b2lkIEFUX3ZhbGlkYXRlRnJlZUxp
c3QoaW50IHNpemUpOwppbnQgQVRfaW5BbnlGcmVlTGlzdChBVGVybSB0KTsKdm9pZCBBVF9wcmlu
dEFsbFRlcm1zKEZJTEUgKmZpbGUpOwp2b2lkIEFUX3ByaW50QWxsQUZ1bkNvdW50cyhGSUxFICpm
aWxlKTsKIyAxNSAiYmFmaW8uYyIgMgojIDEgImFmdW4uaCIgMQojIDE2ICJiYWZpby5jIiAyCiMg
MSAidXRpbC5oIiAxCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMKCgoKCgojaWRl
bnQgIiRSZXZpc2lvbjogMS40MSAkIgojIDM4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvc3RhbmRhcmRzLmgiIDEgMwojIDM5ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDIgMwojIDY3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIHZvaWQgKm1lbWNw
eSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbW1vdmUodm9p
ZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CmV4dGVybiBjaGFyICpzdHJjcHkoY2hhciAqLCBj
b25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqc3RybmNweShjaGFyICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90KTsKZXh0ZXJuIGNoYXIgKnN0cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVy
biBjaGFyICpzdHJuY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gdm9p
ZCAqbWVtY2NweSh2b2lkICosIGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwpleHRlcm4gaW50
IG1lbWNtcChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBz
dHJjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHN0cmNvbGwoY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHN0cm5jbXAoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBzaXplX3Qgc3RyeGZybShjaGFyICosIGNv
bnN0IGNoYXIgKiwgc2l6ZV90KTsKCmV4dGVybiB2b2lkICptZW1jaHIoY29uc3Qgdm9pZCAqLCBp
bnQsIHNpemVfdCk7CmV4dGVybiBjaGFyICpzdHJjaHIoY29uc3QgY2hhciAqLCBpbnQpOwoKZXh0
ZXJuIHNpemVfdCBzdHJjc3BuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKI3ByYWdtYSBp
bnRfdG9fdW5zaWduZWQgc3RyY3NwbgoKZXh0ZXJuIGNoYXIgKnN0cnBicmsoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqc3RycmNocihjb25zdCBjaGFyICosIGludCk7
CgpleHRlcm4gc2l6ZV90IHN0cnNwbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiNwcmFn
bWEgaW50X3RvX3Vuc2lnbmVkIHN0cnNwbgoKZXh0ZXJuIGNoYXIgKnN0cnN0cihjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CgpleHRlcm4gY2hhciAqc3RydG9rKGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICosIGludCwgc2l6ZV90KTsKZXh0ZXJuIGNo
YXIgKnN0cmVycm9yKGludCk7CmV4dGVybiBzaXplX3Qgc3RybGVuKGNvbnN0IGNoYXIgKik7CiNw
cmFnbWEgaW50X3RvX3Vuc2lnbmVkIHN0cmxlbgoKCmV4dGVybiBpbnQgZmZzKGludCk7CgpleHRl
cm4gaW50IHN0cmNhc2VjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50
IHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoKCgpleHRl
cm4gY2hhciAqc3RyZHVwKGNvbnN0IGNoYXIgKik7CgoKCmV4dGVybiBjaGFyICpzdHJ0b2tfcihj
aGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CiMgNSAidXRpbC5oIiAyCiMgMTcgImJhZmlv
LmMiIDIKIyAxICJieXRlaW8uaCIgMQoKCgojIDEgIi91c3IvZnJlZXdhcmUvbGliL2djYy1saWIv
bWlwcy1zZ2ktaXJpeDYuNS8zLjAvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyA1ICJieXRlaW8uaCIg
MgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCB0eXBlOwogIHVuaW9uIHsKICAgIEZJTEUg
KmZpbGVfZGF0YTsKICAgIHN0cnVjdCB7CiAgICAgIGNoYXIgKmJ1ZjsKICAgICAgaW50IG1heF9z
aXplOwogICAgICBpbnQgY3VyX3NpemU7CiAgICB9IHN0cmluZ19kYXRhOwogIH0gdTsKfSBieXRl
X3dyaXRlcjsKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgdHlwZTsKICBsb25nIGJ5dGVzX3JlYWQ7
CiAgdW5pb24gewogICAgRklMRSAqZmlsZV9kYXRhOwogICAgc3RydWN0IHsKICAgICAgY2hhciAq
YnVmOwogICAgICBpbnQgaW5kZXg7CiAgICAgIGludCBzaXplOwogICAgfSBzdHJpbmdfZGF0YTsK
ICB9IHU7Cn0gYnl0ZV9yZWFkZXI7CgppbnQgd3JpdGVfYnl0ZShpbnQgYnl0ZSwgYnl0ZV93cml0
ZXIgKndyaXRlcik7CmludCB3cml0ZV9ieXRlcyhjb25zdCBjaGFyICpidWYsIGludCBjb3VudCwg
Ynl0ZV93cml0ZXIgKndyaXRlcik7CmludCByZWFkX2J5dGUoYnl0ZV9yZWFkZXIgKnJlYWRlcik7
CmludCByZWFkX2J5dGVzKGNoYXIgKmJ1ZiwgaW50IGNvdW50LCBieXRlX3JlYWRlciAqcmVhZGVy
KTsKdm9pZCBpbml0X2ZpbGVfcmVhZGVyKGJ5dGVfcmVhZGVyICpyZWFkZXIsIEZJTEUgKmZpbGUp
Owp2b2lkIGluaXRfc3RyaW5nX3JlYWRlcihieXRlX3JlYWRlciAqcmVhZGVyLCBjaGFyICpidWYs
IGludCBtYXhfc2l6ZSk7CiMgMTggImJhZmlvLmMiIDIKIyA1NCAiYmFmaW8uYyIKdHlwZWRlZiBz
dHJ1Y3QgX3RybV9idWNrZXQKewogIHN0cnVjdCBfdHJtX2J1Y2tldCAqbmV4dDsKICBBVGVybSB0
Owp9IHRybV9idWNrZXQ7Cgp0eXBlZGVmIHN0cnVjdCBfdG9wX3N5bWJvbAp7CiAgc3RydWN0IF90
b3Bfc3ltYm9sICpuZXh0OwogIEFGdW4gczsKCiAgaW50IGluZGV4OwogIGludCBjb3VudDsKCiAg
aW50IGNvZGVfd2lkdGg7CiAgaW50IGNvZGU7Cn0gdG9wX3N5bWJvbDsKCnR5cGVkZWYgc3RydWN0
CnsKICBpbnQgbnJfc3ltYm9sczsKICB0b3Bfc3ltYm9sICpzeW1ib2xzOwoKICBpbnQgdG9wdGFi
bGVfc2l6ZTsKICB0b3Bfc3ltYm9sICoqdG9wdGFibGU7Cn0gdG9wX3N5bWJvbHM7Cgp0eXBlZGVm
IHN0cnVjdCBfc3ltX2VudHJ5CnsKICBBRnVuIGlkOwogIGludCBhcml0eTsKCiAgaW50IG5yX3Rl
cm1zOwogIHRybV9idWNrZXQgKnRlcm1zOwoKICB0b3Bfc3ltYm9scyAqdG9wX3N5bWJvbHM7Cgog
IGludCB0ZXJtdGFibGVfc2l6ZTsKICB0cm1fYnVja2V0ICoqdGVybXRhYmxlOwoKICBpbnQgdGVy
bV93aWR0aDsKCiAgaW50IGN1cl9pbmRleDsKICBpbnQgbnJfdGltZXNfdG9wOwoKICBzdHJ1Y3Qg
X3N5bV9lbnRyeSAqbmV4dF90b3BzeW07Cn0gc3ltX2VudHJ5OwoKdHlwZWRlZiBzdHJ1Y3QKewog
IEFGdW4gc3ltOwogIGludCBhcml0eTsKICBpbnQgbnJfdGVybXM7CiAgaW50IHRlcm1fd2lkdGg7
CiAgQVRlcm0gKnRlcm1zOwogIGludCAqbnJfdG9wc3ltczsKICBpbnQgKnN5bV93aWR0aDsKICBp
bnQgKip0b3BzeW1zOwp9IHN5bV9yZWFkX2VudHJ5OwoKCgoKY2hhciBiYWZpb19pZFtdID0gIiRJ
ZDogYmFmaW8uYyx2IDEuMzkgMjAwMS8wOC8wNyAxNToxOToxNiBqb25nIEV4cCAkIjsKCnN0YXRp
YyBpbnQgbnJfdW5pcXVlX3N5bWJvbHMgPSAtMTsKc3RhdGljIHN5bV9yZWFkX2VudHJ5ICpyZWFk
X3N5bWJvbHM7CnN0YXRpYyBzeW1fZW50cnkgKnN5bV9lbnRyaWVzID0gMEw7CnN0YXRpYyBzeW1f
ZW50cnkgKmZpcnN0X3RvcHN5bSA9IDBMOwoKc3RhdGljIGNoYXIgKnRleHRfYnVmZmVyID0gMEw7
CnN0YXRpYyBpbnQgdGV4dF9idWZmZXJfc2l6ZSA9IDA7CgpzdGF0aWMgdW5zaWduZWQgY2hhciBi
aXRfYnVmZmVyID0gJ1wwJzsKc3RhdGljIGludCBiaXRzX2luX2J1ZmZlciA9IDA7CiMgMTM4ICJi
YWZpby5jIgp2b2lkIEFUX2luaXRCYWZJTyhpbnQgYXJnYywgY2hhciAqYXJndltdKQp7Cn0KCgoK
Cgp2b2lkCkFUX2dldEJhZlZlcnNpb24oaW50ICptYWpvciwgaW50ICptaW5vcikKewogICptYWpv
ciA9IDB4MDMwMCA+PiA4OwogICptaW5vciA9IDB4MDMwMCAmIDB4ZmY7Cn0KCgoKCgpzdGF0aWMK
aW50CndyaXRlSW50VG9CdWYodW5zaWduZWQgaW50IHZhbCwgdW5zaWduZWQgY2hhciAqYnVmKQp7
CiAgaWYgKHZhbCA8ICgxIDw8IDcpKQogICAgewogICAgICBidWZbMF0gPSAodW5zaWduZWQgY2hh
cikgdmFsOwogICAgICByZXR1cm4gMTsKICAgIH0KCiAgaWYgKHZhbCA8ICgxIDw8IDE0KSkKICAg
IHsKICAgICAgYnVmWzBdID0gKHZhbCA+PiA4KSB8IDB4ODA7CiAgICAgIGJ1ZlsxXSA9ICh2YWwg
Pj4gMCkgJiAweGZmOwogICAgICByZXR1cm4gMjsKICAgIH0KCiAgaWYgKHZhbCA8ICgxIDw8IDIx
KSkKICAgIHsKICAgICAgYnVmWzBdID0gKHZhbCA+PiAxNikgfCAweGMwOwogICAgICBidWZbMV0g
PSAodmFsID4+IDgpICYgMHhmZjsKICAgICAgYnVmWzJdID0gKHZhbCA+PiAwKSAmIDB4ZmY7CiAg
ICAgIHJldHVybiAzOwogICAgfQoKICBpZiAodmFsIDwgKDEgPDwgMjgpKQogICAgewogICAgICBi
dWZbMF0gPSAodmFsID4+IDI0KSB8IDB4ZTA7CiAgICAgIGJ1ZlsxXSA9ICh2YWwgPj4gMTYpICYg
MHhmZjsKICAgICAgYnVmWzJdID0gKHZhbCA+PiA4KSAmIDB4ZmY7CiAgICAgIGJ1ZlszXSA9ICh2
YWwgPj4gMCkgJiAweGZmOwogICAgICByZXR1cm4gNDsKICAgIH0KCiAgYnVmWzBdID0gMHhmMDsK
ICBidWZbMV0gPSAodmFsID4+IDI0KSAmIDB4ZmY7CiAgYnVmWzJdID0gKHZhbCA+PiAxNikgJiAw
eGZmOwogIGJ1ZlszXSA9ICh2YWwgPj4gOCkgJiAweGZmOwogIGJ1Zls0XSA9ICh2YWwgPj4gMCkg
JiAweGZmOwogIHJldHVybiA1Owp9CgoKCgoKc3RhdGljCmludAp3cml0ZUJpdHModW5zaWduZWQg
aW50IHZhbCwgaW50IG5yX2JpdHMsIGJ5dGVfd3JpdGVyICp3cml0ZXIpCnsKICBpbnQgY3VyX2Jp
dDsKCiAgZm9yIChjdXJfYml0PTA7IGN1cl9iaXQ8bnJfYml0czsgY3VyX2JpdCsrKSB7CiAgICBi
aXRfYnVmZmVyIDw8PSAxOwogICAgYml0X2J1ZmZlciB8PSAodmFsICYgMHgwMSk7CiAgICB2YWwg
Pj49IDE7CiAgICBpZiAoKytiaXRzX2luX2J1ZmZlciA9PSA4KSB7CiAgICAgIGlmICh3cml0ZV9i
eXRlKChpbnQpYml0X2J1ZmZlciwgd3JpdGVyKSA9PSAtMSkKICAgICAgICByZXR1cm4gLTE7CiAg
ICAgIGJpdHNfaW5fYnVmZmVyID0gMDsKICAgICAgYml0X2J1ZmZlciA9ICdcMCc7CiAgICB9CiAg
fQoKCiAgcmV0dXJuIDA7Cn0KCgoKCnN0YXRpYwppbnQKZmx1c2hCaXRzVG9Xcml0ZXIoYnl0ZV93
cml0ZXIgKndyaXRlcikKewogIGludCByZXN1bHQgPSAwOwogIGlmKGJpdHNfaW5fYnVmZmVyID4g
MCkgewogICAgaW50IGxlZnQgPSA4LWJpdHNfaW5fYnVmZmVyOwogICAgYml0X2J1ZmZlciA8PD0g
bGVmdDsKICAgIHJlc3VsdCA9ICh3cml0ZV9ieXRlKChpbnQpYml0X2J1ZmZlciwgd3JpdGVyKSA9
PSAoLTEpKSA/IC0xIDogMDsKICAgIGJpdHNfaW5fYnVmZmVyID0gMDsKICAgIGJpdF9idWZmZXIg
PSAnXDAnOwogIH0KCiAgcmV0dXJuIHJlc3VsdDsKfQoKCgoKc3RhdGljCmludApyZWFkQml0cyh1
bnNpZ25lZCBpbnQgKnZhbCwgaW50IG5yX2JpdHMsIGJ5dGVfcmVhZGVyICpyZWFkZXIpCnsKICBp
bnQgY3VyX2JpdCwgbWFzayA9IDE7CgogICp2YWwgPSAwOwogIGZvciAoY3VyX2JpdD0wOyBjdXJf
Yml0PG5yX2JpdHM7IGN1cl9iaXQrKykgewogICAgaWYgKGJpdHNfaW5fYnVmZmVyID09IDApIHsK
ICAgICAgaW50IHZhbCA9IHJlYWRfYnl0ZShyZWFkZXIpOwogICAgICBpZiAodmFsID09ICgtMSkp
CiAgICAgICAgcmV0dXJuIC0xOwogICAgICBiaXRfYnVmZmVyID0gKGNoYXIpIHZhbDsKICAgICAg
Yml0c19pbl9idWZmZXIgPSA4OwogICAgfQogICAgKnZhbCB8PSAoYml0X2J1ZmZlciAmIDB4ODAg
PyBtYXNrIDogMCk7CiAgICBtYXNrIDw8PSAxOwogICAgYml0X2J1ZmZlciA8PD0gMTsKICAgIGJp
dHNfaW5fYnVmZmVyLS07CiAgfQoKCiAgcmV0dXJuIDA7Cn0KCgoKCnN0YXRpYwppbnQKZmx1c2hC
aXRzRnJvbVJlYWRlcihieXRlX3JlYWRlciAqcmVhZGVyKQp7CiAgYml0c19pbl9idWZmZXIgPSAw
OwogIHJldHVybiAwOwp9CgoKCgpzdGF0aWMKaW50CndyaXRlSW50KHVuc2lnbmVkIGludCB2YWws
IGJ5dGVfd3JpdGVyICp3cml0ZXIpCnsKICBpbnQgbnJfaXRlbXM7CiAgdW5zaWduZWQgY2hhciBi
dWZbOF07CgogIG5yX2l0ZW1zID0gd3JpdGVJbnRUb0J1Zih2YWwsIGJ1Zik7CiAgaWYod3JpdGVf
Ynl0ZXMoKGNoYXIgKilidWYsIG5yX2l0ZW1zLCB3cml0ZXIpICE9IG5yX2l0ZW1zKQogICAgcmV0
dXJuIC0xOwoKCiAgcmV0dXJuIDA7Cn0KCgoKCnN0YXRpYwppbnQKcmVhZEludCh1bnNpZ25lZCBp
bnQgKnZhbCwgYnl0ZV9yZWFkZXIgKnJlYWRlcikKewogIGludCBidWZbOF07CgoKICBpZiAoIChi
dWZbMF0gPSByZWFkX2J5dGUocmVhZGVyKSkgPT0gKC0xKSApCiAgICByZXR1cm4gKC0xKTsKCgog
IGlmICggKGJ1ZlswXSAmIDB4ODApID09IDAgKQogICAgewogICAgICAqdmFsID0gYnVmWzBdOwog
ICAgICByZXR1cm4gMTsKICAgIH0KCgogIGlmICggKGJ1ZlsxXSA9IHJlYWRfYnl0ZShyZWFkZXIp
KSA9PSAoLTEpICkKICAgIHJldHVybiAoLTEpOwoKCiAgaWYgKCAoYnVmWzBdICYgMHg0MCkgPT0g
MCApCiAgICB7CiAgICAgICp2YWwgPSBidWZbMV0gKyAoKGJ1ZlswXSAmIH4weGMwKSA8PCA4KTsK
ICAgICAgcmV0dXJuIDI7CiAgICB9CgoKICBpZiAoIChidWZbMl0gPSByZWFkX2J5dGUocmVhZGVy
KSkgPT0gKC0xKSApCiAgICByZXR1cm4gKC0xKTsKCgogIGlmICggKGJ1ZlswXSAmIDB4MjApID09
IDAgKQogICAgewogICAgICAqdmFsID0gYnVmWzJdICsgKGJ1ZlsxXSA8PCA4KSArICgoYnVmWzBd
ICYgfjB4ZTApIDw8IDE2KTsKICAgICAgcmV0dXJuIDM7CiAgICB9CgoKICBpZiAoIChidWZbM10g
PSByZWFkX2J5dGUocmVhZGVyKSkgPT0gKC0xKSApCiAgICByZXR1cm4gKC0xKTsKCgogIGlmICgg
KGJ1ZlswXSAmIDB4MTApID09IDAgKQogICAgewogICAgICAqdmFsID0gYnVmWzNdICsgKGJ1Zlsy
XSA8PCA4KSArIChidWZbMV0gPDwgMTYpICsKICAgICAgICAoKGJ1ZlswXSAmIH4weGYwKSA8PCAy
NCk7CiAgICAgIHJldHVybiA0OwogICAgfQoKCiAgaWYgKCAoYnVmWzRdID0gcmVhZF9ieXRlKHJl
YWRlcikpID09ICgtMSkgKQogICAgcmV0dXJuICgtMSk7CgoKICAqdmFsID0gYnVmWzRdICsgKGJ1
ZlszXSA8PCA4KSArIChidWZbMl0gPDwgMTYpICsgKGJ1ZlsxXSA8PCAyNCk7CiAgcmV0dXJuIDU7
Cn0KCgoKCnN0YXRpYwppbnQKd3JpdGVTdHJpbmcoY29uc3QgY2hhciAqc3RyLCBpbnQgbGVuLCBi
eXRlX3dyaXRlciAqd3JpdGVyKQp7CgogIGlmICh3cml0ZUludChsZW4sIHdyaXRlcikgPCAwKQog
ICAgcmV0dXJuIC0xOwoKCiAgaWYgKHdyaXRlX2J5dGVzKHN0ciwgbGVuLCB3cml0ZXIpICE9IGxl
bikKICAgIHJldHVybiAtMTsKCgogIHJldHVybiAwOwp9CgoKCgpzdGF0aWMKaW50CnJlYWRTdHJp
bmcoYnl0ZV9yZWFkZXIgKnJlYWRlcikKewogIHVuc2lnbmVkIGludCBsZW47CgoKICBpZiAocmVh
ZEludCgmbGVuLCByZWFkZXIpIDwgMCkKICAgIHJldHVybiAtMTsKCgogIGlmICh0ZXh0X2J1ZmZl
cl9zaXplIDwgKGxlbisxKSkKICAgIHsKICAgICAgdGV4dF9idWZmZXJfc2l6ZSA9IGxlbioxLjU7
CiAgICAgIHRleHRfYnVmZmVyID0gKGNoYXIgKikgcmVhbGxvYyh0ZXh0X2J1ZmZlciwgdGV4dF9i
dWZmZXJfc2l6ZSk7CiAgICAgIGlmKCF0ZXh0X2J1ZmZlcikKICAgICAgICBBVGVycm9yKCJvdXQg
b2YgbWVtb3J5IGluIHJlYWRTdHJpbmcgKCVkKVxuIiwgdGV4dF9idWZmZXJfc2l6ZSk7CiAgICB9
CgoKICBpZiAocmVhZF9ieXRlcyh0ZXh0X2J1ZmZlciwgbGVuLCByZWFkZXIpICE9IGxlbikKICAg
IHJldHVybiAtMTsKCgogIHJldHVybiBsZW47Cn0KIyA0MjEgImJhZmlvLmMiCnN0YXRpYyBBVGJv
b2wgd3JpdGVfc3ltYm9sKEFGdW4gc3ltLCBieXRlX3dyaXRlciAqd3JpdGVyKQp7CiAgY2hhciAq
bmFtZSA9IChhdF9sb29rdXBfdGFibGVbKHN5bSldLT5uYW1lKTsKICBpZih3cml0ZVN0cmluZyhu
YW1lLCBzdHJsZW4obmFtZSksIHdyaXRlcikgPCAwKQogICAgcmV0dXJuIEFUZmFsc2U7CgogIGlm
KHdyaXRlSW50KCgoYXRfbG9va3VwX3RhYmxlX2FsaWFzWyhzeW0pXS0+aGVhZGVyKSA+PiA4KSwg
d3JpdGVyKSA8IDApCiAgICByZXR1cm4gQVRmYWxzZTsKCiAgaWYod3JpdGVJbnQoKCgoYXRfbG9v
a3VwX3RhYmxlX2FsaWFzWyhzeW0pXS0+aGVhZGVyKSAmICgxPDwwKSkgPyBBVHRydWUgOiBBVGZh
bHNlKSwgd3JpdGVyKSA8IDApCiAgICByZXR1cm4gQVRmYWxzZTsKCiAgcmV0dXJuIEFUdHJ1ZTsK
fQoKCgoKdm9pZApBVF9wcmludF9zeW1fZW50cmllcygpCnsKICBpbnQgY3VyX3N5bSwgY3VyX2Fy
ZzsKCiAgZm9yKGN1cl9zeW09MDsgY3VyX3N5bTxucl91bmlxdWVfc3ltYm9sczsgY3VyX3N5bSsr
KSB7CiAgICBzeW1fZW50cnkgKmN1cl9lbnRyeSA9ICZzeW1fZW50cmllc1tjdXJfc3ltXTsKICAg
IEFUZnByaW50ZigoJl9faW9iWzJdKSwgInN5bWJvbCAleTogIz0lZCwgd2lkdGg6ICVkXG4iLAog
ICAgICAgICAgICAgIGN1cl9lbnRyeS0+aWQsIGN1cl9lbnRyeS0+bnJfdGVybXMsIGN1cl9lbnRy
eS0+dGVybV93aWR0aCk7CiMgNDU3ICJiYWZpby5jIgogICAgQVRmcHJpbnRmKCgmX19pb2JbMl0p
LCAiICBhcml0eTogJWRcbiIsIGN1cl9lbnRyeS0+YXJpdHkpOwogICAgZm9yIChjdXJfYXJnPTA7
IGN1cl9hcmc8Y3VyX2VudHJ5LT5hcml0eTsgY3VyX2FyZysrKSB7CiAgICAgIGludCBzeW07CiAg
ICAgIHRvcF9zeW1ib2xzICp0c3MgPSAmY3VyX2VudHJ5LT50b3Bfc3ltYm9sc1tjdXJfYXJnXTsK
ICAgICAgQVRmcHJpbnRmKCgmX19pb2JbMl0pLCAiICAgICVkIHN5bWJvbHM6ICIsIHRzcy0+bnJf
c3ltYm9scyk7CiAgICAgIGZvciAoc3ltPTA7IHN5bTx0c3MtPm5yX3N5bWJvbHM7IHN5bSsrKSB7
CiAgICAgICAgdG9wX3N5bWJvbCAqdHMgPSAmdHNzLT5zeW1ib2xzW3N5bV07CiAgICAgICAgQVRm
cHJpbnRmKCgmX19pb2JbMl0pLCAiJXk6ICM9JWQsIHdpZHRoOiAlZCwgIiwKICAgICAgICAgICAg
ICAgICAgc3ltX2VudHJpZXNbdHMtPmluZGV4XS5pZCwgdHMtPmNvdW50LCB0cy0+Y29kZV93aWR0
aCk7CiAgICAgIH0KICAgICAgQVRmcHJpbnRmKCgmX19pb2JbMl0pLCAiXG4iKTsKICAgIH0KICB9
Cn0KIyA0ODAgImJhZmlvLmMiCnN0YXRpYyBzeW1fZW50cnkgKmdldF90b3Bfc3ltYm9sKEFUZXJt
IHQsIEFUYm9vbCBhbm5vX2RvbmUpCnsKICBBRnVuIHN5bTsKCiAgaWYgKCgodC0+aGVhZGVyKSAm
ICgxPDwwKSkgJiYgIWFubm9fZG9uZSkKICAgIHN5bSA9IDY7CiAgZWxzZSB7CiAgICBzd2l0Y2gg
KCgoKCh0KS0+aGVhZGVyKSAmICgoMTw8NSkgfCAoMTw8NikgfCAoMTw8NykpKSA+PiA1KSkgewog
ICAgY2FzZSAyOgogICAgICBzeW0gPSAwOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAg
c3ltID0gMTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIHN5bSA9IDI7CiAgICAgIGJy
ZWFrOwogICAgY2FzZSA1OgogICAgICBzeW0gPSAzOwogICAgICBicmVhazsKICAgIGNhc2UgNDoK
ICAgICAgc3ltID0gKCgoQVRib29sKSgoKEFUZXJtTGlzdCkoKEFUZXJtTGlzdCl0KSktPmhlYWQg
PT0gMEwgJiYgKChBVGVybUxpc3QpKChBVGVybUxpc3QpdCkpLT50YWlsID09IDBMKSkgPyA1IDog
NCk7CiAgICAgIGJyZWFrOwogICAgY2FzZSAxOgogICAgICBzeW0gPSAoKCgoQVRlcm1BcHBsKXQp
LT5oZWFkZXIpID4+IDgpOwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIEFUYWJvcnQo
ImdldF90b3Bfc3ltYm9sOiBpbGxlZ2FsIHRlcm0gKCVuKVxuIiwgdCk7CiAgICAgIHN5bSA9IC0x
OwogICAgICBicmVhazsKICAgIH0KICB9CgogIHJldHVybiAmc3ltX2VudHJpZXNbYXRfbG9va3Vw
X3RhYmxlW3N5bV0tPmluZGV4XTsKfQoKCgoKCnN0YXRpYyBpbnQgYml0X3dpZHRoKGludCB2YWwp
CnsKICBpbnQgbnJfYml0cyA9IDA7CgogIGlmICh2YWwgPD0gMSkKICAgIHJldHVybiAwOwoKICB3
aGlsZSAodmFsKSB7CiAgICB2YWw+Pj0xOwogICAgbnJfYml0cysrOwogIH0KCiAgcmV0dXJuIG5y
X2JpdHM7Cn0KIyA1NDMgImJhZmlvLmMiCnZvaWQgZ2F0aGVyX3RvcF9zeW1ib2xzKHN5bV9lbnRy
eSAqY3VyX2VudHJ5LCBpbnQgY3VyX2FyZywKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRv
dGFsX3RvcF9zeW1ib2xzKQp7CiAgaW50IGluZGV4OwogIHVuc2lnbmVkIGludCBobnI7CiAgdG9w
X3N5bWJvbHMgKnRzczsKICBzeW1fZW50cnkgKnRvcF9lbnRyeTsKCiAgdHNzID0gJmN1cl9lbnRy
eS0+dG9wX3N5bWJvbHNbY3VyX2FyZ107CiAgdHNzLT5ucl9zeW1ib2xzID0gdG90YWxfdG9wX3N5
bWJvbHM7CiAgdHNzLT5zeW1ib2xzID0gKHRvcF9zeW1ib2wgKikgY2FsbG9jKHRvdGFsX3RvcF9z
eW1ib2xzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodG9w
X3N5bWJvbCkpOwogIGlmICghdHNzLT5zeW1ib2xzKQogICAgQVRlcnJvcigiYnVpbGRfYXJnX3Rh
Ymxlczogb3V0IG9mIG1lbW9yeSAodG9wX3N5bWJvbHM6ICVkKVxuIiwKICAgICAgICAgICAgdG90
YWxfdG9wX3N5bWJvbHMpOwogIHRzcy0+dG9wdGFibGVfc2l6ZSA9ICh0b3RhbF90b3Bfc3ltYm9s
cyo1KS80OwogIHRzcy0+dG9wdGFibGUgPSAodG9wX3N5bWJvbCAqKikgY2FsbG9jKHRzcy0+dG9w
dGFibGVfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
b2YodG9wX3N5bWJvbCAqKSk7CiAgaWYgKCF0c3MtPnRvcHRhYmxlKQogICAgQVRlcnJvcigiYnVp
bGRfYXJnX3RhYmxlczogb3V0IG9mIG1lbW9yeSAodGFibGVfc2l6ZTogJWQpXG4iLAogICAgICAg
ICAgICB0c3MtPnRvcHRhYmxlX3NpemUpOwoKICBpbmRleCA9IDA7CiAgZm9yKHRvcF9lbnRyeT1m
aXJzdF90b3BzeW07IHRvcF9lbnRyeTsgdG9wX2VudHJ5PXRvcF9lbnRyeS0+bmV4dF90b3BzeW0p
IHsKCgogICAgdG9wX3N5bWJvbCAqdHM7CiAgICB0cyA9ICZjdXJfZW50cnktPnRvcF9zeW1ib2xz
W2N1cl9hcmddLnN5bWJvbHNbaW5kZXhdOwogICAgdHMtPmluZGV4ID0gdG9wX2VudHJ5LXN5bV9l
bnRyaWVzOwogICAgdHMtPmNvdW50ID0gdG9wX2VudHJ5LT5ucl90aW1lc190b3A7CiAgICB0cy0+
Y29kZV93aWR0aCA9IGJpdF93aWR0aCh0b3RhbF90b3Bfc3ltYm9scyk7CiAgICB0cy0+Y29kZSA9
IGluZGV4OwogICAgdHMtPnMgPSB0b3BfZW50cnktPmlkOwoKICAgIGhuciA9IHRzLT5zICUgdHNz
LT50b3B0YWJsZV9zaXplOwogICAgdHMtPm5leHQgPSB0c3MtPnRvcHRhYmxlW2hucl07CiAgICB0
c3MtPnRvcHRhYmxlW2hucl0gPSB0czsKCiAgICB0b3BfZW50cnktPm5yX3RpbWVzX3RvcCA9IDA7
CiAgICBpbmRleCsrOwogIH0KfQoKc3RhdGljIHZvaWQgYnVpbGRfYXJnX3RhYmxlcygpCnsKICBp
bnQgY3VyX3N5bSwgY3VyX2FyZywgY3VyX3RybTsKICBzeW1fZW50cnkgKnRvcHN5bTsKCiAgZm9y
KGN1cl9zeW09MDsgY3VyX3N5bTxucl91bmlxdWVfc3ltYm9sczsgY3VyX3N5bSsrKSB7CiAgICBz
eW1fZW50cnkgKmN1cl9lbnRyeSA9ICZzeW1fZW50cmllc1tjdXJfc3ltXTsKICAgIGludCBhcml0
eSA9IGN1cl9lbnRyeS0+YXJpdHk7CgogICAgKCh2b2lkKTApOwoKICAgIGlmKGFyaXR5ID09IDAp
CiAgICAgIGN1cl9lbnRyeS0+dG9wX3N5bWJvbHMgPSAwTDsKICAgIGVsc2UgewogICAgICBjdXJf
ZW50cnktPnRvcF9zeW1ib2xzID0gKHRvcF9zeW1ib2xzICopY2FsbG9jKGFyaXR5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0b3Bf
c3ltYm9scykpOwogICAgICBpZighY3VyX2VudHJ5LT50b3Bfc3ltYm9scykKICAgICAgICBBVGVy
cm9yKCJidWlsZF9hcmdfdGFibGVzOiBvdXQgb2YgbWVtb3J5IChhcml0eTogJWQpXG4iLCBhcml0
eSk7CiAgICB9CgogICAgZm9yKGN1cl9hcmc9MDsgY3VyX2FyZzxhcml0eTsgY3VyX2FyZysrKSB7
CiAgICAgIGludCB0b3RhbF90b3Bfc3ltYm9scyA9IDA7CiAgICAgIGZpcnN0X3RvcHN5bSA9IDBM
OwogICAgICBmb3IoY3VyX3RybT0wOyBjdXJfdHJtPGN1cl9lbnRyeS0+bnJfdGVybXM7IGN1cl90
cm0rKykgewogICAgICAgIEFUZXJtIHRlcm0gPSBjdXJfZW50cnktPnRlcm1zW2N1cl90cm1dLnQ7
CiAgICAgICAgQVRlcm0gYXJnID0gMEw7CiAgICAgICAgaWYgKHN5bV9lbnRyaWVzW2N1cl9zeW1d
LmlkID09IDYpIHsKICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgIGlmIChjdXJfYXJnID09
IDApCiAgICAgICAgICAgIGFyZyA9IHRlcm07CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGFy
ZyA9IEFUX2dldEFubm90YXRpb25zKHRlcm0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBz
d2l0Y2goKCgoKHRlcm0pLT5oZWFkZXIpICYgKCgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSkpID4+
IDUpKSB7CiAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBBVGVy
bUxpc3QgbGlzdCA9IChBVGVybUxpc3QpdGVybTsKICAgICAgICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICAgIGlmIChjdXJfYXJnID09IDApCiAg
ICAgICAgICAgICAgICBhcmcgPSAoKGxpc3QpLT5oZWFkKTsKICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICBhcmcgPSAoQVRlcm0pKChsaXN0KS0+dGFpbCk7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICgodm9pZCkw
KTsKICAgICAgICAgICAgYXJnID0gKCgoQVRlcm1QbGFjZWhvbGRlcil0ZXJtKS0+cGhfdHlwZSk7
CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBhcmcgPSAo
KigoQVRlcm0gKikoKEFUZXJtQXBwbCl0ZXJtKSArIDIgKyAoY3VyX2FyZykpKTsKICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBBVGVycm9yKCJidWlsZF9h
cmdfdGFibGVzOiBpbGxlZ2FsIHRlcm1cbiIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAg
IH0KICAgICAgICB9CiAgICAgICAgdG9wc3ltID0gZ2V0X3RvcF9zeW1ib2woYXJnLCBzeW1fZW50
cmllc1tjdXJfc3ltXS5pZCA9PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgPyBB
VHRydWUgOiBBVGZhbHNlKTsKICAgICAgICBpZiAoIXRvcHN5bS0+bnJfdGltZXNfdG9wKyspIHsK
ICAgICAgICAgIHRvdGFsX3RvcF9zeW1ib2xzKys7CiAgICAgICAgICB0b3BzeW0tPm5leHRfdG9w
c3ltID0gZmlyc3RfdG9wc3ltOwogICAgICAgICAgZmlyc3RfdG9wc3ltID0gdG9wc3ltOwogICAg
ICAgIH0KICAgICAgfQoKICAgICAgZ2F0aGVyX3RvcF9zeW1ib2xzKGN1cl9lbnRyeSwgY3VyX2Fy
ZywgdG90YWxfdG9wX3N5bWJvbHMpOwogICAgfQogIH0KfQoKCgoKCgoKc3RhdGljIHZvaWQgYWRk
X3Rlcm0oc3ltX2VudHJ5ICplbnRyeSwgQVRlcm0gdCkKewogIHVuc2lnbmVkIGludCBobnIgPSBB
VF9oYXNobnVtYmVyKHQpICUgZW50cnktPnRlcm10YWJsZV9zaXplOwogIGVudHJ5LT50ZXJtc1tl
bnRyeS0+Y3VyX2luZGV4XS50ID0gdDsKICBlbnRyeS0+dGVybXNbZW50cnktPmN1cl9pbmRleF0u
bmV4dCA9IGVudHJ5LT50ZXJtdGFibGVbaG5yXTsKICBlbnRyeS0+dGVybXRhYmxlW2hucl0gPSAm
ZW50cnktPnRlcm1zW2VudHJ5LT5jdXJfaW5kZXhdOwogIGVudHJ5LT5jdXJfaW5kZXgrKzsKfQoj
IDY3OSAiYmFmaW8uYyIKc3RhdGljIHZvaWQgY29sbGVjdF90ZXJtcyhBVGVybSB0KQp7CiAgQUZ1
biBzeW0gPSAtMTsKICBBVGVybSBhbm5vczsKICBzeW1fZW50cnkgKmVudHJ5OwoKICBpZiAoISgo
KHQtPmhlYWRlcikgJiAoMTw8MSkpID8gQVR0cnVlIDogQVRmYWxzZSkpIHsKICAgIHN3aXRjaCgo
KCgodCktPmhlYWRlcikgJiAoKDE8PDUpIHwgKDE8PDYpIHwgKDE8PDcpKSkgPj4gNSkpIHsKICAg
IGNhc2UgMjoKICAgICAgc3ltID0gMDsKICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAgIHN5
bSA9IDE7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBzeW0gPSAyOwogICAgICBicmVh
azsKICAgIGNhc2UgNToKICAgICAgc3ltID0gMzsKICAgICAgY29sbGVjdF90ZXJtcygoKChBVGVy
bVBsYWNlaG9sZGVyKXQpLT5waF90eXBlKSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAg
ICB7CiAgICAgICAgQVRlcm1MaXN0IGxpc3QgPSAoQVRlcm1MaXN0KXQ7CiAgICAgICAgaWYoKChB
VGJvb2wpKCgoQVRlcm1MaXN0KShsaXN0KSktPmhlYWQgPT0gMEwgJiYgKChBVGVybUxpc3QpKGxp
c3QpKS0+dGFpbCA9PSAwTCkpKSB7CiAgICAgICAgICBzeW0gPSA1OwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICBzeW0gPSA0OwogICAgICAgICAgY29sbGVjdF90ZXJtcygoKGxpc3QpLT5oZWFk
KSk7CiAgICAgICAgICBjb2xsZWN0X3Rlcm1zKChBVGVybSkoKGxpc3QpLT50YWlsKSk7CiAgICAg
ICAgfQogICAgICB9CiAgICAgIGJyZWFrOwogICAgY2FzZSAxOgogICAgICB7CiAgICAgICAgQVRl
cm1BcHBsIGFwcGwgPSAoQVRlcm1BcHBsKXQ7CiAgICAgICAgaW50IGN1cl9hcml0eSwgY3VyX2Fy
ZzsKCiAgICAgICAgc3ltID0gKCgoYXBwbCktPmhlYWRlcikgPj4gOCk7CiAgICAgICAgY3VyX2Fy
aXR5ID0gKChhdF9sb29rdXBfdGFibGVfYWxpYXNbKHN5bSldLT5oZWFkZXIpID4+IDgpOwogICAg
ICAgIGZvcihjdXJfYXJnPTA7IGN1cl9hcmc8Y3VyX2FyaXR5OyBjdXJfYXJnKyspCiAgICAgICAg
ICBjb2xsZWN0X3Rlcm1zKCgqKChBVGVybSAqKShhcHBsKSArIDIgKyAoY3VyX2FyZykpKSk7CiAg
ICAgIH0KICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICBBVGVycm9yKCJjb2xsZWN0X3Rl
cm1zOiBpbGxlZ2FsIHRlcm1cbiIpOwogICAgICBicmVhazsKICAgIH0KICAgIGVudHJ5ID0gJnN5
bV9lbnRyaWVzW2F0X2xvb2t1cF90YWJsZVtzeW1dLT5pbmRleF07CgoKCiAgICAoKHZvaWQpMCk7
CiAgICBhZGRfdGVybShlbnRyeSwgdCk7CgoKICAgIGFubm9zID0gQVRfZ2V0QW5ub3RhdGlvbnMo
dCk7CiAgICBpZiAoYW5ub3MpIHsKICAgICAgZW50cnkgPSAmc3ltX2VudHJpZXNbYXRfbG9va3Vw
X3RhYmxlWzZdLT5pbmRleF07CiAgICAgICgodm9pZCkwKTsKICAgICAgY29sbGVjdF90ZXJtcygo
QVRlcm0pYW5ub3MpOwogICAgICBhZGRfdGVybShlbnRyeSwgdCk7CiAgICB9CgogICAgKCh0LT5o
ZWFkZXIpIHw9ICgxPDwxKSk7CiAgfQp9CiMgNzU0ICJiYWZpby5jIgpzdGF0aWMgQVRib29sIHdy
aXRlX3N5bWJvbHMoYnl0ZV93cml0ZXIgKndyaXRlcikKewogIGludCBzeW1faWR4LCBhcmdfaWR4
LCB0b3BfaWR4OwoKICBmb3Ioc3ltX2lkeD0wOyBzeW1faWR4PG5yX3VuaXF1ZV9zeW1ib2xzOyBz
eW1faWR4KyspIHsKICAgIHN5bV9lbnRyeSAqY3VyX3N5bSA9ICZzeW1fZW50cmllc1tzeW1faWR4
XTsKICAgIGlmICghd3JpdGVfc3ltYm9sKGN1cl9zeW0tPmlkLCB3cml0ZXIpKQogICAgICByZXR1
cm4gQVRmYWxzZTsKICAgIGlmICh3cml0ZUludChjdXJfc3ltLT5ucl90ZXJtcywgd3JpdGVyKSA8
IDApCiAgICAgIHJldHVybiBBVGZhbHNlOwoKICAgIGZvcihhcmdfaWR4PTA7IGFyZ19pZHg8Y3Vy
X3N5bS0+YXJpdHk7IGFyZ19pZHgrKykgewogICAgICBpbnQgbnJfc3ltYm9scyA9IGN1cl9zeW0t
PnRvcF9zeW1ib2xzW2FyZ19pZHhdLm5yX3N5bWJvbHM7CiAgICAgIGlmKHdyaXRlSW50KG5yX3N5
bWJvbHMsIHdyaXRlcik8MCkKICAgICAgICByZXR1cm4gQVRmYWxzZTsKICAgICAgZm9yKHRvcF9p
ZHg9MDsgdG9wX2lkeDxucl9zeW1ib2xzOyB0b3BfaWR4KyspIHsKICAgICAgICB0b3Bfc3ltYm9s
ICp0cyA9ICZjdXJfc3ltLT50b3Bfc3ltYm9sc1thcmdfaWR4XS5zeW1ib2xzW3RvcF9pZHhdOwog
ICAgICAgIGlmICh3cml0ZUludCh0cy0+aW5kZXgsIHdyaXRlcik8MCkKICAgICAgICAgIHJldHVy
biBBVGZhbHNlOwoKCgoKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIEFUdHJ1ZTsKfQojIDc5
MSAiYmFmaW8uYyIKc3RhdGljIGludCBmaW5kX3Rlcm0oc3ltX2VudHJ5ICplbnRyeSwgQVRlcm0g
dCkKewogIHVuc2lnbmVkIGludCBobnIgPSBBVF9oYXNobnVtYmVyKHQpICUgZW50cnktPnRlcm10
YWJsZV9zaXplOwogIHRybV9idWNrZXQgKmN1ciA9IGVudHJ5LT50ZXJtdGFibGVbaG5yXTsKCiAg
KCh2b2lkKTApOwogIHdoaWxlIChjdXItPnQgIT0gdCkgewogICAgY3VyID0gY3VyLT5uZXh0Owog
ICAgKCh2b2lkKTApOwogIH0KCiAgcmV0dXJuIGN1ciAtIGVudHJ5LT50ZXJtczsKfQojIDgxMiAi
YmFmaW8uYyIKc3RhdGljIHRvcF9zeW1ib2wgKmZpbmRfdG9wX3N5bWJvbCh0b3Bfc3ltYm9scyAq
c3ltcywgQUZ1biBzeW0pCnsKICB1bnNpZ25lZCBpbnQgaG5yID0gc3ltICUgc3ltcy0+dG9wdGFi
bGVfc2l6ZTsKICB0b3Bfc3ltYm9sICpjdXIgPSBzeW1zLT50b3B0YWJsZVtobnJdOwoKICAoKHZv
aWQpMCk7CiAgd2hpbGUgKGN1ci0+cyAhPSBzeW0pIHsKICAgIGN1ciA9IGN1ci0+bmV4dDsKICAg
ICgodm9pZCkwKTsKICB9CgogIHJldHVybiBjdXI7Cn0KIyA4MzQgImJhZmlvLmMiCnN0YXRpYyBB
VGJvb2wgd3JpdGVfdGVybShBVGVybSwgYnl0ZV93cml0ZXIgKiwgQVRib29sKTsKCnN0YXRpYyBB
VGJvb2wgd3JpdGVfYXJnKHN5bV9lbnRyeSAqdHJtX3N5bSwgQVRlcm0gYXJnLCBpbnQgYXJnX2lk
eCwKICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV93cml0ZXIgKndyaXRlciwgQVRib29sIGFu
bm9fZG9uZSkKewogIHRvcF9zeW1ib2wgKnRzOwogIHN5bV9lbnRyeSAqYXJnX3N5bTsKICBpbnQg
YXJnX3RybV9pZHg7CiAgQUZ1biBzeW07CgogIHN5bSA9IGdldF90b3Bfc3ltYm9sKGFyZywgYW5u
b19kb25lKS0+aWQ7CiAgdHMgPSBmaW5kX3RvcF9zeW1ib2woJnRybV9zeW0tPnRvcF9zeW1ib2xz
W2FyZ19pZHhdLCBzeW0pOwoKCiAgaWYod3JpdGVCaXRzKHRzLT5jb2RlLCB0cy0+Y29kZV93aWR0
aCwgd3JpdGVyKTwwKQogICAgcmV0dXJuIEFUZmFsc2U7CgogIGFyZ19zeW0gPSAmc3ltX2VudHJp
ZXNbdHMtPmluZGV4XTsKCiAgYXJnX3RybV9pZHggPSBmaW5kX3Rlcm0oYXJnX3N5bSwgYXJnKTsK
CgogIGlmICh3cml0ZUJpdHMoYXJnX3RybV9pZHgsIGFyZ19zeW0tPnRlcm1fd2lkdGgsIHdyaXRl
cik8MCkgewoKICAgIHJldHVybiBBVGZhbHNlOwogIH0KCgoKICBpZiAoYXJnX3RybV9pZHggPj0g
YXJnX3N5bS0+Y3VyX2luZGV4ICYmCiAgICAgIXdyaXRlX3Rlcm0oYXJnLCB3cml0ZXIsIGFubm9f
ZG9uZSkpIHsKCiAgICByZXR1cm4gQVRmYWxzZTsKICB9CgogIHJldHVybiBBVHRydWU7Cn0KIyA4
NzkgImJhZmlvLmMiCnN0YXRpYyBBVGJvb2wgd3JpdGVfdGVybShBVGVybSB0LCBieXRlX3dyaXRl
ciAqd3JpdGVyLCBBVGJvb2wgYW5ub19kb25lKQp7CiAgaW50IGFyZ19pZHg7CiAgc3ltX2VudHJ5
ICp0cm1fc3ltID0gMEw7CiAgQVRlcm0gYW5ub3M7CgogIGFubm9zID0gQVRfZ2V0QW5ub3RhdGlv
bnModCk7CgoKICBpZighYW5ub19kb25lICYmIGFubm9zKSB7CgoKICAgIHRybV9zeW0gPSAmc3lt
X2VudHJpZXNbYXRfbG9va3VwX3RhYmxlWzZdLT5pbmRleF07CiAgICBpZighd3JpdGVfYXJnKHRy
bV9zeW0sIHQsIDAsIHdyaXRlciwgQVR0cnVlKSkgewogICAgICByZXR1cm4gQVRmYWxzZTsKICAg
IH0KICAgIGlmKCF3cml0ZV9hcmcodHJtX3N5bSwgYW5ub3MsIDEsIHdyaXRlciwgQVRmYWxzZSkp
IHsKICAgICAgcmV0dXJuIEFUZmFsc2U7CiAgICB9CiAgfSBlbHNlIHsKICAgIHN3aXRjaCgoKCgo
dCktPmhlYWRlcikgJiAoKDE8PDUpIHwgKDE8PDYpIHwgKDE8PDcpKSkgPj4gNSkpIHsKICAgIGNh
c2UgMjoKICAgICAgaWYod3JpdGVCaXRzKCgoKEFUZXJtSW50KXQpLT52YWx1ZSksIDMyLCB3cml0
ZXIpIDwgMCkgewogICAgICAgIHJldHVybiBBVGZhbHNlOwogICAgICB9CgoKCgoKCiAgICAgIHRy
bV9zeW0gPSAmc3ltX2VudHJpZXNbYXRfbG9va3VwX3RhYmxlWzBdLT5pbmRleF07CiAgICAgIGJy
ZWFrOwogICAgY2FzZSAzOgogICAgICB7CiAgICAgICAgc3RhdGljIGNoYXIgYnVmWzY0XTsKICAg
ICAgICBzcHJpbnRmKGJ1ZiwgIiUuMTVlIiwgKCgoQVRlcm1SZWFsKXQpLT52YWx1ZSkpOwogICAg
ICAgIGlmIChmbHVzaEJpdHNUb1dyaXRlcih3cml0ZXIpPDApCiAgICAgICAgICByZXR1cm4gQVRm
YWxzZTsKICAgICAgICBpZiAod3JpdGVTdHJpbmcoYnVmLCBzdHJsZW4oYnVmKSwgd3JpdGVyKSA8
IDApCiAgICAgICAgICByZXR1cm4gQVRmYWxzZTsKICAgICAgICB0cm1fc3ltID0gJnN5bV9lbnRy
aWVzW2F0X2xvb2t1cF90YWJsZVsxXS0+aW5kZXhdOwogICAgICB9CiAgICAgIGJyZWFrOwogICAg
Y2FzZSA2OgogICAgICB7CiAgICAgICAgQVRlcm1CbG9iIGJsb2IgPSAoQVRlcm1CbG9iKXQ7CiAg
ICAgICAgaWYgKGZsdXNoQml0c1RvV3JpdGVyKHdyaXRlcik8MCkKICAgICAgICAgIHJldHVybiBB
VGZhbHNlOwogICAgICAgIGlmICh3cml0ZVN0cmluZygoKGJsb2IpLT5kYXRhKSwgKChpbnQpKCgo
YmxvYiktPmhlYWRlcikgPj4gOCkpLCB3cml0ZXIpPDApCiAgICAgICAgICByZXR1cm4gQVRmYWxz
ZTsKICAgICAgICB0cm1fc3ltID0gJnN5bV9lbnRyaWVzW2F0X2xvb2t1cF90YWJsZVsyXS0+aW5k
ZXhdOwogICAgICB9CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICB7CiAgICAgICAgQVRl
cm0gdHlwZSA9ICgoKEFUZXJtUGxhY2Vob2xkZXIpdCktPnBoX3R5cGUpOwogICAgICAgIHRybV9z
eW0gPSAmc3ltX2VudHJpZXNbYXRfbG9va3VwX3RhYmxlWzNdLT5pbmRleF07CiAgICAgICAgaWYo
IXdyaXRlX2FyZyh0cm1fc3ltLCB0eXBlLCAwLCB3cml0ZXIsIEFUZmFsc2UpKQogICAgICAgICAg
cmV0dXJuIEFUZmFsc2U7CiAgICAgIH0KICAgICAgYnJlYWs7CiAgICBjYXNlIDQ6CiAgICAgIHsK
ICAgICAgICBBVGVybUxpc3QgbGlzdCA9IChBVGVybUxpc3QpdDsKICAgICAgICBpZiAoKChBVGJv
b2wpKCgoQVRlcm1MaXN0KShsaXN0KSktPmhlYWQgPT0gMEwgJiYgKChBVGVybUxpc3QpKGxpc3Qp
KS0+dGFpbCA9PSAwTCkpKQogICAgICAgICAgdHJtX3N5bSA9ICZzeW1fZW50cmllc1thdF9sb29r
dXBfdGFibGVbNV0tPmluZGV4XTsKICAgICAgICBlbHNlIHsKICAgICAgICAgIHRybV9zeW0gPSAm
c3ltX2VudHJpZXNbYXRfbG9va3VwX3RhYmxlWzRdLT5pbmRleF07CiAgICAgICAgICBpZighd3Jp
dGVfYXJnKHRybV9zeW0sICgobGlzdCktPmhlYWQpLCAwLCB3cml0ZXIsIEFUZmFsc2UpKSB7CiAg
ICAgICAgICAgIHJldHVybiBBVGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgaWYoIXdyaXRl
X2FyZyh0cm1fc3ltLCAoQVRlcm0pKChsaXN0KS0+dGFpbCksIDEsIHdyaXRlciwgQVRmYWxzZSkp
IHsKICAgICAgICAgICAgcmV0dXJuIEFUZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgfQogICAg
ICB9CiAgICAgIGJyZWFrOwogICAgY2FzZSAxOgogICAgICB7CiAgICAgICAgaW50IGFyaXR5Owog
ICAgICAgIEFGdW4gc3ltID0gKCgodCktPmhlYWRlcikgPj4gOCk7CiAgICAgICAgdHJtX3N5bSA9
ICZzeW1fZW50cmllc1thdF9sb29rdXBfdGFibGVbc3ltXS0+aW5kZXhdOwogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICBhcml0eSA9ICgoYXRfbG9va3VwX3RhYmxlX2FsaWFzWyhzeW0pXS0+aGVh
ZGVyKSA+PiA4KTsKICAgICAgICBmb3IgKGFyZ19pZHg9MDsgYXJnX2lkeDxhcml0eTsgYXJnX2lk
eCsrKSB7CiAgICAgICAgICBBVGVybSBjdXJfYXJnID0gKCooKEFUZXJtICopKChBVGVybUFwcGwp
dCkgKyAyICsgKGFyZ19pZHgpKSk7CiAgICAgICAgICBpZighd3JpdGVfYXJnKHRybV9zeW0sIGN1
cl9hcmcsIGFyZ19pZHgsIHdyaXRlciwgQVRmYWxzZSkpIHsKICAgICAgICAgICAgcmV0dXJuIEFU
ZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGJyZWFrOwogICAgZGVm
YXVsdDoKICAgICAgQVRlcnJvcigid3JpdGVfdGVybTogaWxsZWdhbCB0ZXJtXG4iKTsKICAgICAg
YnJlYWs7CiAgICB9CiAgfQogIGlmKHRybV9zeW0tPnRlcm1zW3RybV9zeW0tPmN1cl9pbmRleF0u
dCAhPSB0KSB7CiAgICBBVGVycm9yKCJ0ZXJtcyBvdXQgb2Ygc3luYyBhdCBwb3MgJWQgb2Ygc3lt
ICV5LCAiCiAgICAgICAgICAgICJ0ZXJtIGluIHRhYmxlIHdhcyAlZCwgZXhwZWN0ZWQgJXRcbiIs
IHRybV9zeW0tPmN1cl9pbmRleCwKICAgICAgICAgICAgdHJtX3N5bS0+aWQsIHRybV9zeW0tPnRl
cm1zW3RybV9zeW0tPmN1cl9pbmRleF0udCwgdCk7CiAgfQogIHRybV9zeW0tPmN1cl9pbmRleCsr
OwoKCgogIHJldHVybiBBVHRydWU7Cn0KIyA5OTcgImJhZmlvLmMiCnN0YXRpYyB2b2lkIGZyZWVf
d3JpdGVfc3BhY2UoKQp7CiAgaW50IGksIGo7CgogIGZvcihpPTA7IGk8bnJfdW5pcXVlX3N5bWJv
bHM7IGkrKykgewogICAgc3ltX2VudHJ5ICplbnRyeSA9ICZzeW1fZW50cmllc1tpXTsKCiAgICBm
cmVlKGVudHJ5LT50ZXJtcyk7CiAgICBlbnRyeS0+dGVybXMgPSAwTDsKICAgIGZyZWUoZW50cnkt
PnRlcm10YWJsZSk7CiAgICBlbnRyeS0+dGVybXRhYmxlID0gMEw7CgogICAgZm9yKGo9MDsgajxl
bnRyeS0+YXJpdHk7IGorKykgewogICAgICB0b3Bfc3ltYm9scyAqdG9wc3ltcyA9ICZlbnRyeS0+
dG9wX3N5bWJvbHNbal07CiAgICAgIGlmKHRvcHN5bXMtPnN5bWJvbHMpIHsKICAgICAgICBmcmVl
KHRvcHN5bXMtPnN5bWJvbHMpOwogICAgICAgIHRvcHN5bXMtPnN5bWJvbHMgPSAwTDsKICAgICAg
fQogICAgICBpZih0b3BzeW1zLT50b3B0YWJsZSkgewogICAgICAgIGZyZWUodG9wc3ltcy0+dG9w
dGFibGUpOwogICAgICAgIHRvcHN5bXMtPnRvcHRhYmxlID0gMEw7CiAgICAgIH0KCiAgICB9Cgog
ICAgaWYoZW50cnktPnRvcF9zeW1ib2xzKSB7CiAgICAgIGZyZWUoZW50cnktPnRvcF9zeW1ib2xz
KTsKICAgICAgZW50cnktPnRvcF9zeW1ib2xzID0gMEw7CiAgICB9CiAgfQogIGZyZWUoc3ltX2Vu
dHJpZXMpOwoKICBzeW1fZW50cmllcyA9IDBMOwp9CgoKCgpBVGJvb2wKd3JpdGVfYmFmKEFUZXJt
IHQsIGJ5dGVfd3JpdGVyICp3cml0ZXIpCnsKICBpbnQgbnJfdW5pcXVlX3Rlcm1zID0gMDsKICBp
bnQgbnJfc3ltYm9scyA9IEFUX3N5bWJvbFRhYmxlU2l6ZSgpOwogIGludCBsY3YsIGN1cjsKICBp
bnQgbnJfYml0czsKICBBRnVuIHN5bTsKCgogIGJpdF9idWZmZXIgPSAnXDAnOwogIGJpdHNfaW5f
YnVmZmVyID0gMDsKCiAgZm9yKGxjdj0wOyBsY3Y8bnJfc3ltYm9sczsgbGN2KyspIHsKICAgIGlm
KCEoKChNYWNoaW5lV29yZCkoYXRfbG9va3VwX3RhYmxlW2xjdl0pICYgMSkgPT0gMSkpCiAgICAg
IGF0X2xvb2t1cF90YWJsZVtsY3ZdLT5jb3VudCA9IDA7CiAgfQogIG5yX3VuaXF1ZV9zeW1ib2xz
ID0gQVRfY2FsY1VuaXF1ZVN5bWJvbHModCk7CgogIHN5bV9lbnRyaWVzID0gKHN5bV9lbnRyeSAq
KSBjYWxsb2MobnJfdW5pcXVlX3N5bWJvbHMsIHNpemVvZihzeW1fZW50cnkpKTsKICBpZighc3lt
X2VudHJpZXMpCiAgICBBVGVycm9yKCJ3cml0ZV9iYWY6IG91dCBvZiBtZW1vcnkgKCVkIHVuaXF1
ZSBzeW1ib2xzIVxuIiwKICAgICAgICAgICAgbnJfdW5pcXVlX3N5bWJvbHMpOwoKICBucl9iaXRz
ID0gYml0X3dpZHRoKG5yX3VuaXF1ZV9zeW1ib2xzKTsKCgoKICBmb3IobGN2PWN1cj0wOyBsY3Y8
bnJfc3ltYm9sczsgbGN2KyspIHsKICAgIFN5bUVudHJ5IGVudHJ5ID0gYXRfbG9va3VwX3RhYmxl
W2xjdl07CiAgICBpZighKCgoTWFjaGluZVdvcmQpKGVudHJ5KSAmIDEpID09IDEpICYmIGVudHJ5
LT5jb3VudD4wKSB7CiAgICAgICgodm9pZCkwKTsKICAgICAgbnJfdW5pcXVlX3Rlcm1zICs9IGVu
dHJ5LT5jb3VudDsKCiAgICAgIHN5bV9lbnRyaWVzW2N1cl0udGVybV93aWR0aCA9IGJpdF93aWR0
aChlbnRyeS0+Y291bnQpOwogICAgICBzeW1fZW50cmllc1tjdXJdLmlkID0gbGN2OwogICAgICBz
eW1fZW50cmllc1tjdXJdLmFyaXR5ID0gKChhdF9sb29rdXBfdGFibGVfYWxpYXNbKGxjdildLT5o
ZWFkZXIpID4+IDgpOwogICAgICBzeW1fZW50cmllc1tjdXJdLm5yX3Rlcm1zID0gZW50cnktPmNv
dW50OwogICAgICBzeW1fZW50cmllc1tjdXJdLnRlcm1zID0gKHRybV9idWNrZXQgKikgY2FsbG9j
KGVudHJ5LT5jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2YodHJtX2J1Y2tldCkpOwogICAgICBpZiAoIXN5bV9lbnRyaWVzW2N1
cl0udGVybXMpCiAgICAgICAgQVRlcnJvcigid3JpdGVfYmFmOiBvdXQgb2YgbWVtb3J5IChzeW06
ICVkLCB0ZXJtczogJWQpXG4iLAogICAgICAgICAgICAgICAgbGN2LCBlbnRyeS0+Y291bnQpOwog
ICAgICBzeW1fZW50cmllc1tjdXJdLnRlcm10YWJsZV9zaXplID0gKGVudHJ5LT5jb3VudCo1KS80
OwogICAgICBzeW1fZW50cmllc1tjdXJdLnRlcm10YWJsZSA9CiAgICAgICAgKHRybV9idWNrZXQg
KiopIGNhbGxvYyhzeW1fZW50cmllc1tjdXJdLnRlcm10YWJsZV9zaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRybV9idWNrZXQgKikpOwogICAgICBpZiAoIXN5bV9l
bnRyaWVzW2N1cl0udGVybXRhYmxlKQogICAgICAgIEFUZXJyb3IoIndyaXRlX2JhZjogb3V0IG9m
IG1lbW9yeSAodGVybXRhYmxlX3NpemU6ICVkXG4iLAogICAgICAgICAgICAgICAgc3ltX2VudHJp
ZXNbY3VyXS50ZXJtdGFibGVfc2l6ZSk7CgogICAgICBlbnRyeS0+aW5kZXggPSBjdXI7CiAgICAg
IGVudHJ5LT5jb3VudCA9IDA7CgogICAgICBjdXIrKzsKICAgIH0KICB9CgogICgodm9pZCkwKTsK
CgoKCgoKCiAgY29sbGVjdF90ZXJtcyh0KTsKICBBVF91bm1hcmtJZkFsbE1hcmtlZCh0KTsKCgog
IGZvcihsY3Y9MDsgbGN2IDwgbnJfdW5pcXVlX3N5bWJvbHM7IGxjdisrKQogICAgc3ltX2VudHJp
ZXNbbGN2XS5jdXJfaW5kZXggPSAwOwoKICBidWlsZF9hcmdfdGFibGVzKCk7CgoKCgogIGlmKHdy
aXRlSW50KDAsIHdyaXRlcikgPCAwKQogICAgcmV0dXJuIEFUZmFsc2U7CgogIGlmKHdyaXRlSW50
KDB4YmFmLCB3cml0ZXIpIDwgMCkKICAgIHJldHVybiBBVGZhbHNlOwoKICBpZih3cml0ZUludCgw
eDAzMDAsIHdyaXRlcikgPCAwKQogICAgcmV0dXJuIEFUZmFsc2U7CgogIGlmKHdyaXRlSW50KG5y
X3VuaXF1ZV9zeW1ib2xzLCB3cml0ZXIpIDwgMCkKICAgIHJldHVybiBBVGZhbHNlOwoKICBpZih3
cml0ZUludChucl91bmlxdWVfdGVybXMsIHdyaXRlcikgPCAwKQogICAgcmV0dXJuIEFUZmFsc2U7
CgoKCiAgaWYoIXdyaXRlX3N5bWJvbHMod3JpdGVyKSkgewogICAgcmV0dXJuIEFUZmFsc2U7CiAg
fQoKCiAgc3ltID0gZ2V0X3RvcF9zeW1ib2wodCwgQVRmYWxzZSktPmlkOwogIGlmKHdyaXRlSW50
KGdldF90b3Bfc3ltYm9sKHQsIEFUZmFsc2UpLXN5bV9lbnRyaWVzLCB3cml0ZXIpIDwgMCkKICAg
IHJldHVybiBBVGZhbHNlOwoKICBpZiAoIXdyaXRlX3Rlcm0odCwgd3JpdGVyLCBBVGZhbHNlKSkg
ewogICAgcmV0dXJuIEFUZmFsc2U7CiAgfQoKICBpZiAoZmx1c2hCaXRzVG9Xcml0ZXIod3JpdGVy
KTwwKQogICAgcmV0dXJuIEFUZmFsc2U7CgogIGZyZWVfd3JpdGVfc3BhY2UoKTsKCiAgcmV0dXJu
IEFUdHJ1ZTsKfQoKCgoKCmNoYXIgKkFUd3JpdGVUb0JpbmFyeVN0cmluZyhBVGVybSB0LCBpbnQg
KmxlbikKewogIHN0YXRpYyBieXRlX3dyaXRlciB3cml0ZXI7CiAgc3RhdGljIEFUYm9vbCBpbml0
aWFsaXplZCA9IEFUZmFsc2U7CgogIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgIHdyaXRlci50eXBl
ID0gMTsKICAgIHdyaXRlci51LnN0cmluZ19kYXRhLmJ1ZiA9IChjaGFyICopY2FsbG9jKDQwOTYs
IDEpOwogICAgd3JpdGVyLnUuc3RyaW5nX2RhdGEubWF4X3NpemUgPSA0MDk2OwogICAgaW5pdGlh
bGl6ZWQgPSBBVHRydWU7CiAgfQogIHdyaXRlci51LnN0cmluZ19kYXRhLmN1cl9zaXplID0gMDsK
CiAgaWYgKCF3cml0ZV9iYWYodCwgJndyaXRlcikpIHsKICAgIHJldHVybiAwTDsKICB9CgogIGlm
IChsZW4gIT0gMEwpIHsKICAgICpsZW4gPSB3cml0ZXIudS5zdHJpbmdfZGF0YS5jdXJfc2l6ZTsK
ICB9CgogIHJldHVybiB3cml0ZXIudS5zdHJpbmdfZGF0YS5idWY7Cn0KCgoKCkFUYm9vbCBBVHdy
aXRlVG9CaW5hcnlGaWxlKEFUZXJtIHQsIEZJTEUgKmZpbGUpCnsKICBzdGF0aWMgYnl0ZV93cml0
ZXIgd3JpdGVyOwogIHN0YXRpYyBBVGJvb2wgaW5pdGlhbGl6ZWQgPSBBVGZhbHNlOwoKICBpZiAo
IWluaXRpYWxpemVkKSB7CiAgICB3cml0ZXIudHlwZSA9IDA7CiAgICBpbml0aWFsaXplZCA9IEFU
dHJ1ZTsKICB9CiAgd3JpdGVyLnUuZmlsZV9kYXRhID0gZmlsZTsKCgoKCgoKCiAgcmV0dXJuIHdy
aXRlX2JhZih0LCAmd3JpdGVyKTsKfQojIDEyMTAgImJhZmlvLmMiCkFUYm9vbCBBVHdyaXRlVG9O
YW1lZEJpbmFyeUZpbGUoQVRlcm0gdCwgY29uc3QgY2hhciAqbmFtZSkKewogIEZJTEUgKmY7CiAg
QVRib29sIHJlc3VsdDsKCiAgaWYoIXN0cmNtcChuYW1lLCAiLSIpKQogICAgcmV0dXJuIEFUd3Jp
dGVUb0JpbmFyeUZpbGUodCwgKCZfX2lvYlsxXSkpOwoKICBpZighKGYgPSBmb3BlbihuYW1lLCAi
dyIpKSkgewogICAgcmV0dXJuIEFUZmFsc2U7CiAgfQoKICByZXN1bHQgPSBBVHdyaXRlVG9CaW5h
cnlGaWxlKHQsIGYpOwogIGZjbG9zZShmKTsKCiAgcmV0dXJuIHJlc3VsdDsKfQojIDEyMzYgImJh
ZmlvLmMiCkFGdW4gcmVhZF9zeW1ib2woYnl0ZV9yZWFkZXIgKnJlYWRlcikKewogIHVuc2lnbmVk
IGludCBhcml0eSwgcXVvdGVkOwogIGludCBsZW47CgogIGlmKChsZW4gPSByZWFkU3RyaW5nKHJl
YWRlcikpIDwgMCkKICAgIHJldHVybiAtMTsKCiAgdGV4dF9idWZmZXJbbGVuXSA9ICdcMCc7Cgog
IGlmKHJlYWRJbnQoJmFyaXR5LCByZWFkZXIpIDwgMCkKICAgIHJldHVybiAtMTsKCiAgaWYocmVh
ZEludCgmcXVvdGVkLCByZWFkZXIpIDwgMCkKICAgIHJldHVybiAtMTsKCiAgcmV0dXJuIEFUbWFr
ZUFGdW4odGV4dF9idWZmZXIsIGFyaXR5LCBxdW90ZWQgPyBBVHRydWUgOiBBVGZhbHNlKTsKfQoj
IDEyNjMgImJhZmlvLmMiCkFUYm9vbCByZWFkX2FsbF9zeW1ib2xzKGJ5dGVfcmVhZGVyICpyZWFk
ZXIpCnsKICB1bnNpZ25lZCBpbnQgdmFsOwogIGludCBpLCBqLCBrLCBhcml0eTsKCiAgZm9yKGk9
MDsgaTxucl91bmlxdWVfc3ltYm9sczsgaSsrKSB7CgoKICAgIEFGdW4gc3ltID0gcmVhZF9zeW1i
b2wocmVhZGVyKTsKICAgIGlmKHN5bSA8IDApCiAgICAgIEFUZXJyb3IoInJlYWRfc3ltYm9sczog
ZXJyb3IgcmVhZGluZyBzeW1ib2wsIGdpdmluZyB1cC5cbiIpOwoKICAgIHJlYWRfc3ltYm9sc1tp
XS5zeW0gPSBzeW07CiAgICBBVHByb3RlY3RBRnVuKHN5bSk7CiAgICBhcml0eSA9ICgoYXRfbG9v
a3VwX3RhYmxlX2FsaWFzWyhzeW0pXS0+aGVhZGVyKSA+PiA4KTsKICAgIHJlYWRfc3ltYm9sc1tp
XS5hcml0eSA9IGFyaXR5OwoKCgoKICAgIGlmKHJlYWRJbnQoJnZhbCwgcmVhZGVyKSA8IDApCiAg
ICAgIHJldHVybiBBVGZhbHNlOwogICAgcmVhZF9zeW1ib2xzW2ldLm5yX3Rlcm1zID0gdmFsOwog
ICAgcmVhZF9zeW1ib2xzW2ldLnRlcm1fd2lkdGggPSBiaXRfd2lkdGgodmFsKTsKICAgIGlmKHZh
bCA9PSAwKQogICAgICByZWFkX3N5bWJvbHNbaV0udGVybXMgPSAwTDsKICAgIGVsc2UKICAgICAg
cmVhZF9zeW1ib2xzW2ldLnRlcm1zID0gKEFUZXJtICopY2FsbG9jKHZhbCwgc2l6ZW9mKEFUZXJt
KSk7CiAgICBpZighcmVhZF9zeW1ib2xzW2ldLnRlcm1zKQogICAgICBBVGVycm9yKCJyZWFkX3N5
bWJvbHM6IGNvdWxkIG5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgJWQgdGVybXMuXG4iLCB2YWwpOwog
ICAgQVRwcm90ZWN0QXJyYXkocmVhZF9zeW1ib2xzW2ldLnRlcm1zLCB2YWwpOwoKCgoKCiAgICBp
Zihhcml0eSA9PSAwKSB7CiAgICAgIHJlYWRfc3ltYm9sc1tpXS5ucl90b3BzeW1zID0gMEw7CiAg
ICAgIHJlYWRfc3ltYm9sc1tpXS5zeW1fd2lkdGggPSAwTDsKICAgICAgcmVhZF9zeW1ib2xzW2ld
LnRvcHN5bXMgPSAwTDsKICAgIH0gZWxzZSB7CiAgICAgIHJlYWRfc3ltYm9sc1tpXS5ucl90b3Bz
eW1zID0gKGludCAqKWNhbGxvYyhhcml0eSwgc2l6ZW9mKGludCkpOwogICAgICBpZighcmVhZF9z
eW1ib2xzW2ldLm5yX3RvcHN5bXMpCiAgICAgICAgQVRlcnJvcigicmVhZF9hbGxfc3ltYm9sczog
b3V0IG9mIG1lbW9yeSB0cnlpbmcgdG8gYWxsb2NhdGUgIgogICAgICAgICAgICAgICAgInNwYWNl
IGZvciAlZCBhcmd1bWVudHMuXG4iLCBhcml0eSk7CgogICAgICByZWFkX3N5bWJvbHNbaV0uc3lt
X3dpZHRoID0gKGludCAqKWNhbGxvYyhhcml0eSwgc2l6ZW9mKGludCkpOwogICAgICBpZighcmVh
ZF9zeW1ib2xzW2ldLnN5bV93aWR0aCkKICAgICAgICBBVGVycm9yKCJyZWFkX2FsbF9zeW1ib2xz
OiBvdXQgb2YgbWVtb3J5IHRyeWluZyB0byBhbGxvY2F0ZSAiCiAgICAgICAgICAgICAgICAic3Bh
Y2UgZm9yICVkIGFyZ3VtZW50cyAuXG4iLCBhcml0eSk7CgogICAgICByZWFkX3N5bWJvbHNbaV0u
dG9wc3ltcyA9IChpbnQgKiopY2FsbG9jKGFyaXR5LCBzaXplb2YoaW50ICopKTsKICAgICAgaWYo
IXJlYWRfc3ltYm9sc1tpXS50b3BzeW1zKQogICAgICAgIEFUZXJyb3IoInJlYWRfYWxsX3N5bWJv
bHM6IG91dCBvZiBtZW1vcnkgdHJ5aW5nIHRvIGFsbG9jYXRlICIKICAgICAgICAgICAgICAgICJz
cGFjZSBmb3IgJWQgYXJndW1lbnRzLlxuIiwgYXJpdHkpOwogICAgfQoKCgogICAgZm9yKGo9MDsg
ajxyZWFkX3N5bWJvbHNbaV0uYXJpdHk7IGorKykgewogICAgICBpZihyZWFkSW50KCZ2YWwsIHJl
YWRlcikgPCAwKQogICAgICAgIHJldHVybiBBVGZhbHNlOwoKICAgICAgcmVhZF9zeW1ib2xzW2ld
Lm5yX3RvcHN5bXNbal0gPSB2YWw7CiAgICAgIHJlYWRfc3ltYm9sc1tpXS5zeW1fd2lkdGhbal0g
PSBiaXRfd2lkdGgodmFsKTsKICAgICAgcmVhZF9zeW1ib2xzW2ldLnRvcHN5bXNbal0gPSAoaW50
ICopY2FsbG9jKHZhbCwgc2l6ZW9mKGludCkpOwogICAgICBpZighcmVhZF9zeW1ib2xzW2ldLnRv
cHN5bXNbal0pCiAgICAgICAgQVRlcnJvcigicmVhZF9zeW1ib2xzOiBjb3VsZCBub3QgYWxsb2Nh
dGUgc3BhY2UgZm9yICVkIHRvcCBzeW1ib2xzLlxuIiwKICAgICAgICAgICAgICAgIHZhbCk7Cgog
ICAgICBmb3Ioaz0wOyBrPHJlYWRfc3ltYm9sc1tpXS5ucl90b3BzeW1zW2pdOyBrKyspIHsKICAg
ICAgICBpZihyZWFkSW50KCZ2YWwsIHJlYWRlcikgPCAwKQogICAgICAgICAgcmV0dXJuIEFUZmFs
c2U7CiAgICAgICAgcmVhZF9zeW1ib2xzW2ldLnRvcHN5bXNbal1ba10gPSB2YWw7CiAgICAgIH0K
ICAgIH0KCgoKCgoKCiAgfQoKICByZXR1cm4gQVR0cnVlOwp9CgoKCgpBVGVybSByZWFkX3Rlcm0o
c3ltX3JlYWRfZW50cnkgKnN5bSwgYnl0ZV9yZWFkZXIgKnJlYWRlcikKewogIHVuc2lnbmVkIGlu
dCB2YWw7CiAgaW50IGksIGFyaXR5ID0gc3ltLT5hcml0eTsKICBzeW1fcmVhZF9lbnRyeSAqYXJn
X3N5bTsKICBBVGVybSBpbmxpbmVfYXJnc1s2XTsKICBBVGVybSAqYXJncyA9IGlubGluZV9hcmdz
OwogIEFUZXJtIHJlc3VsdDsKCiAgaWYoYXJpdHkgPiA2KSB7CiAgICBhcmdzID0gY2FsbG9jKGFy
aXR5LCBzaXplb2YoQVRlcm0pKTsKICAgIEFUcHJvdGVjdEFycmF5KGFyZ3MsIGFyaXR5KTsKICAg
IGlmKCFhcmdzKQogICAgICBBVGVycm9yKCJjb3VsZCBub3QgYWxsb2NhdGUgc3BhY2UgZm9yICVk
IGFyZ3VtZW50cy5cbiIsIGFyaXR5KTsKICB9CgoKICBmb3IoaT0wOyBpPGFyaXR5OyBpKyspIHsK
CiAgICBpZihyZWFkQml0cygmdmFsLCBzeW0tPnN5bV93aWR0aFtpXSwgcmVhZGVyKSA8IDApCiAg
ICAgIHJldHVybiAwTDsKICAgIGFyZ19zeW0gPSAmcmVhZF9zeW1ib2xzW3N5bS0+dG9wc3ltc1tp
XVt2YWxdXTsKCgoKCgogICAgaWYocmVhZEJpdHMoJnZhbCwgYXJnX3N5bS0+dGVybV93aWR0aCwg
cmVhZGVyKSA8IDApCiAgICAgIHJldHVybiAwTDsKCiAgICBpZighYXJnX3N5bS0+dGVybXNbdmFs
XSkgewogICAgICBhcmdfc3ltLT50ZXJtc1t2YWxdID0gcmVhZF90ZXJtKGFyZ19zeW0sIHJlYWRl
cik7CiAgICAgIGlmKCFhcmdfc3ltLT50ZXJtc1t2YWxdKQogICAgICAgIHJldHVybiAwTDsKCgog
ICAgfQoKICAgIGFyZ3NbaV0gPSBhcmdfc3ltLT50ZXJtc1t2YWxdOwogIH0KCiAgc3dpdGNoKHN5
bS0+c3ltKSB7CiAgY2FzZSAwOgoKCiAgICBpZihyZWFkQml0cygmdmFsLCAzMiwgcmVhZGVyKSA8
IDApCiAgICAgIHJldHVybiAwTDsKCiAgICByZXN1bHQgPSAoQVRlcm0pQVRtYWtlSW50KChpbnQp
dmFsKTsKCgogICAgYnJlYWs7CiAgY2FzZSAxOgoKCiAgICB7CiAgICAgIGRvdWJsZSByZWFsOwog
ICAgICBpbnQgbGVuOwoKICAgICAgaWYoZmx1c2hCaXRzRnJvbVJlYWRlcihyZWFkZXIpIDwgMCkK
ICAgICAgICByZXR1cm4gMEw7CiAgICAgIGlmKChsZW4gPSByZWFkU3RyaW5nKHJlYWRlcikpIDwg
MCkKICAgICAgICByZXR1cm4gMEw7CgogICAgICB0ZXh0X2J1ZmZlcltsZW5dID0gJ1wwJzsKCiAg
ICAgIHNzY2FuZih0ZXh0X2J1ZmZlciwgIiVsZiIsICZyZWFsKTsKICAgICAgcmVzdWx0ID0gKEFU
ZXJtKUFUbWFrZVJlYWwocmVhbCk7CiAgICB9CgoKICAgIGJyZWFrOwogIGNhc2UgMjoKCgogICAg
ewogICAgICBpbnQgbGVuOwogICAgICBjaGFyICpkYXRhOwoKICAgICAgaWYoZmx1c2hCaXRzRnJv
bVJlYWRlcihyZWFkZXIpIDwgMCkKICAgICAgICByZXR1cm4gMEw7CiAgICAgIGlmKChsZW4gPSBy
ZWFkU3RyaW5nKHJlYWRlcikpIDwgMCkKICAgICAgICByZXR1cm4gMEw7CgogICAgICBkYXRhID0g
bWFsbG9jKGxlbik7CiAgICAgIGlmKCFkYXRhKQogICAgICAgIEFUZXJyb3IoImNvdWxkIG5vdCBh
bGxvY2F0ZSBzcGFjZSBmb3IgYmxvYiBvZiBzaXplICVkXG4iLCBsZW4pOwoKICAgICAgcmVzdWx0
ID0gKEFUZXJtKUFUbWFrZUJsb2IobGVuLCBkYXRhKTsKICAgIH0KCgogICAgYnJlYWs7CiAgY2Fz
ZSAzOgogICAgcmVzdWx0ID0gKEFUZXJtKUFUbWFrZVBsYWNlaG9sZGVyKGFyZ3NbMF0pOwogICAg
YnJlYWs7CiAgY2FzZSA0OgogICAgcmVzdWx0ID0gKEFUZXJtKUFUaW5zZXJ0KChBVGVybUxpc3Qp
YXJnc1sxXSwgYXJnc1swXSk7CiAgICBicmVhazsKICBjYXNlIDU6CiAgICByZXN1bHQgPSAoQVRl
cm0pQVRlbXB0eTsKICAgIGJyZWFrOwogIGNhc2UgNjoKICAgIHJlc3VsdCA9IEFUX3NldEFubm90
YXRpb25zKGFyZ3NbMF0sIGFyZ3NbMV0pOwogICAgYnJlYWs7CiAgZGVmYXVsdDoKCiAgICByZXN1
bHQgPSAoQVRlcm0pQVRtYWtlQXBwbEFycmF5KHN5bS0+c3ltLCBhcmdzKTsKIyAxNDcwICJiYWZp
by5jIgogIH0KCiAgaWYoYXJpdHkgPiA2KSB7CiAgICBBVHVucHJvdGVjdEFycmF5KGFyZ3MpOwog
ICAgZnJlZShhcmdzKTsKICB9CgogIHJldHVybiByZXN1bHQ7Cn0KIyAxNDg4ICJiYWZpby5jIgpz
dGF0aWMgdm9pZCBmcmVlX3JlYWRfc3BhY2UoKQp7CiAgaW50IGksIGo7CgogIGZvcihpPTA7IGk8
bnJfdW5pcXVlX3N5bWJvbHM7IGkrKykgewogICAgc3ltX3JlYWRfZW50cnkgKmVudHJ5ID0gJnJl
YWRfc3ltYm9sc1tpXTsKCiAgICBBVHVucHJvdGVjdEFycmF5KGVudHJ5LT50ZXJtcyk7CiAgICBp
ZihlbnRyeS0+dGVybXMpCiAgICAgIGZyZWUoZW50cnktPnRlcm1zKTsKICAgIGlmKGVudHJ5LT5u
cl90b3BzeW1zKQogICAgICBmcmVlKGVudHJ5LT5ucl90b3BzeW1zKTsKICAgIGlmKGVudHJ5LT5z
eW1fd2lkdGgpCiAgICAgIGZyZWUoZW50cnktPnN5bV93aWR0aCk7CgogICAgZm9yKGo9MDsgajxl
bnRyeS0+YXJpdHk7IGorKykKICAgICAgZnJlZShlbnRyeS0+dG9wc3ltc1tqXSk7CiAgICBpZihl
bnRyeS0+dG9wc3ltcykKICAgICAgZnJlZShlbnRyeS0+dG9wc3ltcyk7CiAgfQogIGZyZWUocmVh
ZF9zeW1ib2xzKTsKfQojIDE1MTkgImJhZmlvLmMiCkFUZXJtIHJlYWRfYmFmKGJ5dGVfcmVhZGVy
ICpyZWFkZXIpCnsKICB1bnNpZ25lZCBpbnQgdmFsLCBucl91bmlxdWVfdGVybXM7CiAgQVRlcm0g
cmVzdWx0ID0gMEw7CgoKICBiaXRfYnVmZmVyID0gJ1wwJzsKICBiaXRzX2luX2J1ZmZlciA9IDA7
CgoKCiAgaWYgKHJlYWRJbnQoJnZhbCwgcmVhZGVyKSA8IDApIHsKICAgIHJldHVybiAwTDsKICB9
CgogIGlmICh2YWwgPT0gMCkgewogICAgaWYgKHJlYWRJbnQoJnZhbCwgcmVhZGVyKSA8IDApCiAg
ICAgIHJldHVybiAwTDsKICB9CgogIGlmICh2YWwgIT0gMHhiYWYpIHsKICAgIEFUd2FybmluZygi
cmVhZF9iYWY6IGlucHV0IGlzIG5vdCBpbiBCQUYhXG4iKTsKICAgIHJldHVybiAwTDsKICB9Cgog
IGlmIChyZWFkSW50KCZ2YWwsIHJlYWRlcikgPCAwKSB7CiAgICByZXR1cm4gMEw7CiAgfQoKICBp
ZiAodmFsICE9IDB4MDMwMCkgewogICAgQVR3YXJuaW5nKCJyZWFkX2JhZjogd3JvbmcgQkFGIHZl
cnNpb24sIGdpdmluZyB1cCFcbiIpOwogICAgcmV0dXJuIDBMOwogIH0KCiAgaWYgKHJlYWRJbnQo
JnZhbCwgcmVhZGVyKSA8IDApIHsKICAgIHJldHVybiAwTDsKICB9CiAgbnJfdW5pcXVlX3N5bWJv
bHMgPSB2YWw7CgogIGlmIChyZWFkSW50KCZucl91bmlxdWVfdGVybXMsIHJlYWRlcikgPCAwKSB7
CiAgICByZXR1cm4gMEw7CiAgfQoKICBpZiAoIXNpbGVudCkgewogICAgZnByaW50ZigoJl9faW9i
WzJdKSwgInJlYWRpbmcgJWQgdW5pcXVlIHN5bWJvbHMgYW5kICVkIHVuaXF1ZSB0ZXJtcy5cbiIs
CiAgICAgICAgICAgIG5yX3VuaXF1ZV9zeW1ib2xzLCBucl91bmlxdWVfdGVybXMpOwogIH0KCgoK
CiAgcmVhZF9zeW1ib2xzID0gKHN5bV9yZWFkX2VudHJ5ICopY2FsbG9jKG5yX3VuaXF1ZV9zeW1i
b2xzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3lt
X3JlYWRfZW50cnkpKTsKICBpZiAoIXJlYWRfc3ltYm9scykgewogICAgQVRlcnJvcigicmVhZF9i
YWY6IG91dCBvZiBtZW1vcnkgd2hlbiBhbGxvY2F0aW5nICVkIHN5bXMuXG4iLAogICAgICAgICAg
ICBucl91bmlxdWVfc3ltYm9scyk7CiAgfQoKCgogIGlmICghcmVhZF9hbGxfc3ltYm9scyhyZWFk
ZXIpKSB7CiAgICByZXR1cm4gMEw7CiAgfQoKICBpZiAocmVhZEludCgmdmFsLCByZWFkZXIpIDwg
MCkgewogICAgcmV0dXJuIDBMOwogIH0KCiAgcmVzdWx0ID0gcmVhZF90ZXJtKCZyZWFkX3N5bWJv
bHNbdmFsXSwgcmVhZGVyKTsKCiAgZnJlZV9yZWFkX3NwYWNlKCk7CgogIHJldHVybiByZXN1bHQ7
Cn0KCgoKCgpBVGVybSBBVHJlYWRGcm9tQmluYXJ5U3RyaW5nKGNoYXIgKnMsIGludCBzaXplKQp7
CiAgYnl0ZV9yZWFkZXIgcmVhZGVyOwoKICBpbml0X3N0cmluZ19yZWFkZXIoJnJlYWRlciwgcywg
c2l6ZSk7CgogIHJldHVybiByZWFkX2JhZigmcmVhZGVyKTsKfQoKCgoKQVRlcm0gQVRyZWFkRnJv
bUJpbmFyeUZpbGUoRklMRSAqZmlsZSkKewogIGJ5dGVfcmVhZGVyIHJlYWRlcjsKCiAgaW5pdF9m
aWxlX3JlYWRlcigmcmVhZGVyLCBmaWxlKTsKIyAxNjIzICJiYWZpby5jIgogIHJldHVybiByZWFk
X2JhZigmcmVhZGVyKTsKfQo=


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2001-12-08  2:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-09-19  4:56 c/4359: internal compiler error / segmentation fault Otto Skrove Bagge
  -- strict thread matches above, loose matches on Subject: below --
2001-12-07 18:06 rodrigc
2001-12-07 18:02 rodrigc
2001-09-19  4:46 otto

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