Date: Wed, 14 Apr 1999 14:26:44 -0400 (EDT) From: root To: pgcc AT delorie DOT com Subject: Internal Compiler Error Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="42040716-1647221785-924114404=:19269" Reply-To: pgcc AT delorie DOT com This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime AT docserver DOT cac DOT washington DOT edu for more info. --42040716-1647221785-924114404=:19269 Content-Type: TEXT/PLAIN; charset=US-ASCII egcs-1.1.2 with the pgcc patch on a Pentium 2 / 400 (Deschutes), running Linux 2.2.5, glibc2.1 (redhat 5.9) ../egcs-1.1.2/configure --prefix=/usr/share/egcs/ --enable-shared --enable-threads --enable-version-specific-runtime-libs then make bootstrap... this error does NOT occur when I compile the source without the patch... the error is at the end, but there is some weirdness prior, so you get the whole nine yards... thanx Rahul Sinha rsinha AT glue DOT umd DOT edu ------beginning of buffer dump from the actual compile mv *.o insn-flags.h insn-config.h insn-codes.h insn-output.c insn-recog.c insn-e mit.c insn-extract.c insn-peep.c insn-attr.h insn-attrtab.c insn-opinit.c genrtl .c genrtl.h tree-check.h s-flags s-config s-codes s-mlib s-under s-output s-reco g s-emit s-extract s-peep s-check s-attr s-attrtab s-opinit s-crt s-crtS s-crt0 genemit genoutput genrecog genextract genflags gencodes genconfig genpeep genatt rtab genattr genopinit gengenrtl gencheck xgcc cc1 cpp crtbegin.o crtbeginS.o c rtend.o crtendS.o gcc-cross cccp cc1obj enquire protoize unprotoize specs colle ct2 collect2 underscore.c gcov *.bp *.greg *.lreg *.combine *.flow *.cse *.jump *.rtl *.tree *.loop *.dbr *.jump2 *.sched *.cse2 *.sched2 *.stack *.gcse *.[si] g++ g++-cross cc1plus g77 g77-cross f771 stage1 mv: s-crt: No such file or directory mv: s-crt0: No such file or directory mv: crtbegin.o: No such file or directory mv: crtbeginS.o: No such file or directory mv: crtend.o: No such file or directory mv: crtendS.o: No such file or directory mv: gcc-cross: No such file or directory mv: cc1obj: No such file or directory mv: enquire: No such file or directory mv: protoize: No such file or directory mv: unprotoize: No such file or directory mv: collect2: No such file or directory mv: gcov: No such file or directory mv: *.bp: No such file or directory mv: *.greg: No such file or directory mv: *.lreg: No such file or directory mv: *.combine: No such file or directory mv: *.flow: No such file or directory mv: *.cse: No such file or directory mv: *.jump: No such file or directory mv: *.rtl: No such file or directory mv: *.tree: No such file or directory mv: *.loop: No such file or directory mv: *.dbr: No such file or directory mv: *.jump2: No such file or directory mv: *.sched: No such file or directory mv: *.cse2: No such file or directory mv: *.sched2: No such file or directory mv: *.stack: No such file or directory mv: *.gcse: No such file or directory mv: *.[si]: No such file or directory mv: g++-cross: No such file or directory mv: cc1plus: No such file or directory mv: g77: No such file or directory mv: g77-cross: No such file or directory mv: f771: No such file or directory make[2]: [stage1-start] Error 1 (ignored) if [ -f as ] ; then ln -s ../as stage1 ; else true ; fi if [ -f ld ] ; then ln -s ../ld stage1 ; else true ; fi if [ -f collect-ld ] ; then ln -s ../collect-ld stage1 ; else true ; fi rm -f stage1/libgcc.a cp libgcc.a stage1 if [ -f ` if [ -f /home/root/nc/egcs_out/gcc/../binutils/ranlib ] ; then echo /h ome/root/nc/egcs_out/gcc/../binutils/ranlib ; else if [ "i686-pc-linux-gnu" = "i 686-pc-linux-gnu" ] ; then echo ranlib; else t='s,x,x,'; echo ranlib | sed -e $t ; fi; fi` ] || ( [ "i686-pc-linux-gnu" = "i686-pc-linux-gnu" ] && [ -f /usr/bin /ranlib -o -f /bin/ranlib ] ) ; then ` if [ -f /home/root/nc/egcs_out/gcc/../bin utils/ranlib ] ; then echo /home/root/nc/egcs_out/gcc/../binutils/ranlib ; else if [ "i686-pc-linux-gnu" = "i686-pc-linux-gnu" ] ; then echo ranlib; else t='s,x ,x,'; echo ranlib | sed -e $t ; fi; fi` stage1/libgcc.a; else true; fi for f in .. ; do if [ x${f} != x.. ]; then \ cp stage1/${f} . ; \ else true; \ fi; done mv cp/*.o stage1/cp mv: cp/*.o: No such file or directory make[2]: [c++.stage1] Error 1 (ignored) if [ -f lang-f77 ]; then \ mv -f f/*.o f/fini f/stamp-str f/str-*.h f/str-*.j lang-f77 g77.c g77.o g77spe c.o g77version.o stage1/f; \ fi mv objc/*.o stage1/objc mv: objc/*.o: No such file or directory make[2]: [objc.stage1] Error 1 (ignored) mv cc1obj stage1 mv: cc1obj: No such file or directory make[2]: [objc.stage1] Error 1 (ignored) mv libobjc.a stage1 mv: libobjc.a: No such file or directory make[2]: [objc.stage1] Error 1 (ignored) make[2]: Leaving directory `/home/root/nc/egcs_out/gcc' make CC="stage1/xgcc -Bstage1/" CFLAGS=" -O2 -g -O2" LDFLAGS="" libdir=/usr/shar e/egcs//lib STAGE_PREFIX=stage1/ LANGUAGES="c proto gcov c++ f77 objc" make[2]: Entering directory `/home/root/nc/egcs_out/gcc' stage1/xgcc -Bstage1/ -DIN_GCC -O2 -g -O2 -DHAVE_CONFIG_H -DHAIFA -I. - I../../egcs-1.1.2/gcc -I../../egcs-1.1.2/gcc/config \ -DGCC_INCLUDE_DIR=\"/usr/share/egcs//lib/gcc-lib/i686-pc-linux-gnu/pgcc-2.91.6 6/include\" \ -DGPLUSPLUS_INCLUDE_DIR=\"/usr/share/egcs//lib/gcc-lib/i686-pc-linux-gnu/pgcc- 2.91.66/include/g++\" \ -DOLD_GPLUSPLUS_INCLUDE_DIR=\"/usr/share/egcs//lib/g++-include\" \ -DLOCAL_INCLUDE_DIR=\"/usr/local/include\" \ -DCROSS_INCLUDE_DIR=\"/usr/share/egcs//i686-pc-linux-gnu/sys-include\" \ -DTOOL_INCLUDE_DIR=\"/usr/share/egcs//i686-pc-linux-gnu/include\" \ -c `echo ../../egcs-1.1.2/gcc/cccp.c | sed 's,^\./,,'` stage1/xgcc -Bstage1/ -DIN_GCC -O2 -g -O2 -DHAVE_CONFIG_H -DHAIFA -I. - I../../egcs-1.1.2/gcc -I../../egcs-1.1.2/gcc/config -c ../../egcs-1.1.2/gcc/cexp .c ../../egcs-1.1.2/gcc/haifa-sched.c:8259: Internal compiler error in function upd ate_flow_info make[2]: *** [cexp.o] Error 1 make[2]: Leaving directory `/home/root/nc/egcs_out/gcc' make[1]: *** [bootstrap] Error 2 make[1]: Leaving directory `/home/root/nc/egcs_out/gcc' make: *** [bootstrap] Error 2 [root AT sparky egcs_out]# --42040716-1647221785-924114404=:19269 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="pgcc.error.report" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: PREPROCESSOR RESULTS Content-Disposition: attachment; filename="pgcc.error.report" IyAxICIuLi8uLi9lZ2NzLTEuMS4yL2djYy9jZXhwLmMiDQoNCiANCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAyNiAiY2V4cC55 Ig0KDQoNCg0KDQojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt bGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkYXJnLmgiIDEgMw0KIA0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0K DQp0eXBlZGVmIHZvaWQgKl9fZ251Y192YV9saXN0Ow0KDQoNCg0KIA0KDQoN Cg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnZvaWQgdmFfZW5k IChfX2dudWNfdmFfbGlzdCk7CQkgDQoNCg0KIA0KDQoNCg0KIA0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQogDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCiMgMTY4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp bnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGFyZy5oIiAzDQoNCg0KIA0K DQoNCg0KDQogDQoNCiANCg0KIA0KDQp0eXBlZGVmIF9fZ251Y192YV9saXN0 IHZhX2xpc3Q7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQojIDMwICJjZXhwLnkiIDINCg0KDQoNCg0KDQoNCg0K DQoNCiMgMSAiLi4vLi4vZWdjcy0xLjEuMi9nY2Mvc3lzdGVtLmgiIDENCiAN Cg0KDQoNCg0KDQoNCg0KDQojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRp by5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQogDQoNCg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Zl YXR1cmVzLmgiIDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0K DQoNCg0KIA0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQogDQojIDEzNyAiL3Vz ci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMNCg0KDQogDQoNCg0KDQoN Cg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAxOTUgIi91 c3IvbG9jYWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAzDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCiANCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0K DQoNCiANCg0KIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL2NkZWZzLmgi IDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCiANCg0KDQoNCg0KIA0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0K DQogDQoNCg0KDQoNCiMgNzEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvY2Rl ZnMuaCIgMw0KDQoNCiANCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KIyAxMDMg Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMw0KDQoNCg0KIA0K DQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCiANCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KIA0K DQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQojIDI0OSAiL3Vz ci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMw0KDQoNCiANCg0KDQoN Cg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQogDQoNCg0KDQoNCg0KDQoN Cg0KIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMw0K IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAyNzcgIi91c3IvbG9j YWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMNCg0KDQoNCg0KIyAyNyAiL3Vz ci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KDQoNCiANCg0KDQoNCiMg MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIu OTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQoNCg0KDQoNCg0KDQogDQoN Cg0KIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9l Z2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KIA0KDQoN CiANCg0KDQoNCg0KDQogDQoNCg0KIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9p Mzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu aCIgMw0KDQoNCiANCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQogDQoNCiMgMTMx ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45 MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KIA0KDQogDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K IA0KDQoNCg0KDQogDQoNCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAz DQoNCg0KIyAyODMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQogDQoN CiANCg0KIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQoNCg0K IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K IyAzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KDQoNCg0K DQoNCg0KDQojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgi IDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAN Cg0KDQoNCg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2 LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIg MSAzDQoNCg0KDQoNCg0KDQogDQoNCg0KIyAxOSAiL3Vzci9saWIvZ2NjLWxp Yi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRk ZWYuaCIgMw0KDQoNCg0KIA0KDQoNCiANCg0KDQoNCg0KDQogDQoNCg0KIyA2 MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIu OTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCiANCg0KDQoNCg0KDQog DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0K DQoNCg0KIA0KDQogDQoNCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAz DQoNCg0KIA0KDQogDQoNCg0KIyAxODggIi91c3IvbGliL2djYy1saWIvaTM4 Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgi IDMNCg0KDQoNCg0KDQogDQoNCg0KDQoNCiANCg0KIyAyNzEgIi91c3IvbGli L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1 ZGUvc3RkZGVmLmgiIDMNCg0KDQojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9p Mzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu aCIgMw0KDQoNCiANCg0KIA0KDQojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9p Mzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu aCIgMw0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQojIDI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90 eXBlcy5oIiAyIDMNCg0KDQogDQp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191 X2NoYXI7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsNCnR5 cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7DQp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgX191X2xvbmc7DQoNCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNp Z25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7DQpfX2V4dGVuc2lvbl9f IHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsNCiMgNDggIi91c3Iv bG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMNCg0KdHlwZWRlZiBzaWdu ZWQgY2hhciBfX2ludDhfdDsNCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3Vp bnQ4X3Q7DQp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Ow0K dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsNCnR5cGVk ZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGlu dCBfX3VpbnQzMl90Ow0KDQpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVk IGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90Ow0KX19leHRlbnNpb25fXyB0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsNCg0KdHlw ZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90Ow0KDQp0eXBlZGVmIF9fdV9xdWFk X3QgX19kZXZfdDsJCSANCnR5cGVkZWYgX191X2ludCBfX3VpZF90OwkJIA0K dHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CQkgDQp0eXBlZGVmIF9fdV9sb25n IF9faW5vX3Q7CQkgDQp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CQkgDQp0 eXBlZGVmIF9fdV9pbnQgX19ubGlua190OyAJCSANCnR5cGVkZWYgbG9uZyBp bnQgX19vZmZfdDsJCSANCnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkg DQp0eXBlZGVmIGludCBfX3BpZF90OwkJCSANCnR5cGVkZWYgaW50IF9fc3Np emVfdDsJCQkgDQp0eXBlZGVmIGxvbmcgaW50IF9fcmxpbV90OwkJIA0KdHlw ZWRlZiBfX3F1YWRfdCBfX3JsaW02NF90OwkJIA0KdHlwZWRlZiBfX3VfaW50 IF9faWRfdDsJCQkgDQoNCnR5cGVkZWYgc3RydWN0DQogIHsNCiAgICBpbnQg X192YWxbMl07DQogIH0gX19mc2lkX3Q7CQkJCSANCg0KIA0KdHlwZWRlZiBp bnQgX19kYWRkcl90OwkJCSANCnR5cGVkZWYgY2hhciAqX19jYWRkcl90Ow0K dHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsNCnR5cGVkZWYgbG9uZyBpbnQg X19zd2Jsa190OwkJIA0KDA0KdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7 DQoNCiANCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mZF9tYXNrOw0K DQogDQoNCg0KIA0KDQoNCg0KDQogDQp0eXBlZGVmIHN0cnVjdA0KICB7DQog ICAgIA0KDQoNCg0KDQoNCiAgICBfX2ZkX21hc2sgX19mZHNfYml0c1sxMDI0 ICAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKSBdOw0KDQoNCiAgfSBfX2Zk X3NldDsNCg0KDQp0eXBlZGVmIGludCBfX2tleV90Ow0KDQogDQp0eXBlZGVm IHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsNCg0KDQogDQoNCiAN CnR5cGVkZWYgX191X2xvbmcgX19ibGtjbnRfdDsNCnR5cGVkZWYgX191X3F1 YWRfdCBfX2Jsa2NudDY0X3Q7DQoNCiANCnR5cGVkZWYgbG9uZyBpbnQgX19m c2Jsa2NudF90Ow0KdHlwZWRlZiBfX3F1YWRfdCBfX2ZzYmxrY250NjRfdDsN Cg0KIA0KdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7DQp0eXBlZGVm IF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7DQoNCiANCnR5cGVkZWYgX191 X2xvbmcgX19pbm82NF90Ow0KDQogDQp0eXBlZGVmIF9fbG9mZl90IF9fb2Zm NjRfdDsNCg0KIA0KdHlwZWRlZiBpbnQgX190X3NjYWxhcl90Ow0KdHlwZWRl ZiB1bnNpZ25lZCBpbnQgX190X3VzY2FsYXJfdDsNCg0KIA0KdHlwZWRlZiBp bnQgX19pbnRwdHJfdDsNCg0KDQogDQoNCg0KDQoNCg0KIyA0MCAiL3Vzci9s b2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KDQoNCg0KDQoNCg0KDQogDQp0 eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOw0KDQoNCg0KDQoNCg0KDQoN CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDEgMw0KIA0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19jb25maWcuaCIg MSAzDQogDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KIyAxICIvdXNyL2xp Yi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNs dWRlL3N0ZGRlZi5oIiAxIDMNCg0KDQoNCg0KDQoNCiANCg0KDQojIDE5ICIv dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42 Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KDQogDQoNCg0KIA0KDQoNCg0K DQoNCiANCg0KDQojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0 LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0K IA0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCiANCg0KDQoNCg0KDQogDQoNCiANCg0KIyAxMzEgIi91c3IvbGli L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1 ZGUvc3RkZGVmLmgiIDMNCg0KDQogDQoNCiANCg0KDQojIDE4OCAiL3Vzci9s aWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5j bHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KDQoNCiANCg0KDQoNCg0KIA0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7 DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQp0eXBlZGVmIHVuc2lnbmVkIGludCAgd2ludF90Ow0KDQoNCg0KDQog DQoNCiANCg0KIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt bGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQoN Cg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KIyAxNCAiL3Vzci9sb2NhbC9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5 cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f IChfX0hJX18pKSk7DQp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOw0KdHlwZWRlZiB1bnNpZ25l ZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf X0hJX18pKSk7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBf X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsNCg0KDQoNCg0K IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoN Cg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAzMCAiL3Vz ci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDIgMw0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KIyA2NyAiL3Vz ci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDMNCg0KDQogDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyA5OCAiL3Vzci9sb2NhbC9pbmNs dWRlL2xpYmlvLmgiIDMNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQog DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnN0cnVj dCBfSU9fanVtcF90OyAgc3RydWN0IF9JT19GSUxFOw0KDQogDQoNCg0KDQoN Cg0KDQoNCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190Ow0KDQoNCg0KIA0KDQpz dHJ1Y3QgX0lPX21hcmtlciB7DQogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4 dDsNCiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsNCiAgIA0KDQogICANCiAg aW50IF9wb3M7DQojIDE4NiAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgi IDMNCg0KfTsNCg0Kc3RydWN0IF9JT19GSUxFIHsNCiAgaW50IF9mbGFnczsJ CSANCg0KDQogICANCiAgIA0KICBjaGFyKiBfSU9fcmVhZF9wdHI7CSANCiAg Y2hhciogX0lPX3JlYWRfZW5kOwkgDQogIGNoYXIqIF9JT19yZWFkX2Jhc2U7 CSANCiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CSANCiAgY2hhciogX0lPX3dy aXRlX3B0cjsJIA0KICBjaGFyKiBfSU9fd3JpdGVfZW5kOwkgDQogIGNoYXIq IF9JT19idWZfYmFzZTsJIA0KICBjaGFyKiBfSU9fYnVmX2VuZDsJIA0KICAg DQogIGNoYXIgKl9JT19zYXZlX2Jhc2U7ICANCiAgY2hhciAqX0lPX2JhY2t1 cF9iYXNlOyAgIA0KICBjaGFyICpfSU9fc2F2ZV9lbmQ7ICANCg0KICBzdHJ1 Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7DQoNCiAgc3RydWN0IF9JT19GSUxF ICpfY2hhaW47DQoNCiAgaW50IF9maWxlbm87DQogIGludCBfYmxrc2l6ZTsN CiAgX19vZmZfdCAgIF9vbGRfb2Zmc2V0OyAgDQoNCg0KICAgDQogIHVuc2ln bmVkIHNob3J0IF9jdXJfY29sdW1uOw0KICBzaWduZWQgY2hhciBfdnRhYmxl X29mZnNldDsNCiAgY2hhciBfc2hvcnRidWZbMV07DQoNCiAgIA0KDQogIF9J T19sb2NrX3QgKl9sb2NrOw0KDQoNCg0KDQoNCg0KDQoNCiAgX19vZmY2NF90 ICAgX29mZnNldDsNCiAgIA0KICBpbnQgX3VudXNlZDJbMTZdOw0KDQp9Ow0K DQoNCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOw0KDQoNCnN0 cnVjdCBfSU9fRklMRV9wbHVzOw0KZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w bHVzIF9JT18yXzFfc3RkaW5fOw0KZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w bHVzIF9JT18yXzFfc3Rkb3V0XzsNCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVf cGx1cyBfSU9fMl8xX3N0ZGVycl87DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K IyAyNzYgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAzDQoNCg0KDQoN Cg0KDQoNCmV4dGVybiBpbnQgX191bmRlcmZsb3cgIChfSU9fRklMRSAqKSAg ICA7DQpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgICA7DQpl eHRlcm4gaW50IF9fb3ZlcmZsb3cgIChfSU9fRklMRSAqLCBpbnQpICAgIDsN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBf SU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgICA7DQpleHRlcm4gaW50IF9J T19wdXRjICAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApICAgIDsNCmV4dGVy biBpbnQgX0lPX2Zlb2YgIChfSU9fRklMRSAqX19mcCkgICAgOw0KZXh0ZXJu IGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9fZnApICAgIDsNCg0KZXh0 ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkICAoX0lPX0ZJTEUgKl9fZnApICAg IDsNCg0KIA0KDQoNCg0KZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAgKF9J T19GSUxFICopICAgIDsNCmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAg KF9JT19GSUxFICopICAgIDsNCmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmls ZSAgKF9JT19GSUxFICopICAgIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN CmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgIChfSU9fRklMRSAqICAsIGNvbnN0 IGNoYXIgKiAgLA0KCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqICAp ICAgIDsNCmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmICAoX0lPX0ZJTEUgKiAg LCBjb25zdCBjaGFyICogICwNCgkJCSAgICAgIF9fZ251Y192YV9saXN0ICkg ICAgOw0KZXh0ZXJuIF9fc3NpemVfdCAgIF9JT19wYWRuICAoX0lPX0ZJTEUg KiwgaW50LCBfX3NzaXplX3QgICkgICAgOw0KZXh0ZXJuIHNpemVfdCAgIF9J T19zZ2V0biAgKF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90ICApICAgIDsN Cg0KZXh0ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUg KiwgX19vZmY2NF90ICAsIGludCwgaW50KSAgICA7DQpleHRlcm4gX19vZmY2 NF90ICAgX0lPX3NlZWtwb3MgIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwg aW50KSAgICA7DQoNCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVh ICAoX0lPX0ZJTEUgKikgICAgOw0KDQoNCg0KDQoNCg0KIyA1NyAiL3Vzci9s b2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KDQoNCiANCg0KdHlwZWRlZiBf X29mZl90ICBmcG9zX3Q7DQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQog DQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQog DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQojIDEgIi91c3IvbG9jYWwv aW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMNCiANCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCiMgMTEwICIvdXNyL2xvY2FsL2luY2x1ZGUvc3Rk aW8uaCIgMiAzDQoNCg0KDQogDQpleHRlcm4gRklMRSAqc3RkaW47CQkgDQpl eHRlcm4gRklMRSAqc3Rkb3V0OwkJIA0KZXh0ZXJuIEZJTEUgKnN0ZGVycjsJ CSANCg0KDQogDQpleHRlcm4gaW50IHJlbW92ZSAgKF9fY29uc3QgY2hhciAq X19maWxlbmFtZSkgICAgOw0KIA0KZXh0ZXJuIGludCByZW5hbWUgIChfX2Nv bnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSAgICA7DQoN Cg0KIA0KDQpleHRlcm4gRklMRSAqdG1wZmlsZSAgKHZvaWQpICAgIDsNCg0K DQoNCg0KDQoNCg0KDQoNCg0KIA0KZXh0ZXJuIGNoYXIgKnRtcG5hbSAgKGNo YXIgKl9fcykgICAgOw0KDQoNCiANCg0KZXh0ZXJuIGNoYXIgKnRtcG5hbV9y ICAoY2hhciAqX19zKSAgICA7DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCmV4 dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25zdCBjaGFyICpfX2RpciwgX19j b25zdCBjaGFyICpfX3BmeCkgICAgOw0KDQoNCg0KIA0KZXh0ZXJuIGludCBm Y2xvc2UgIChGSUxFICpfX3N0cmVhbSkgICAgOw0KIA0KZXh0ZXJuIGludCBm Zmx1c2ggIChGSUxFICpfX3N0cmVhbSkgICAgOw0KDQoNCiANCmV4dGVybiBp bnQgZmZsdXNoX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICAgIDsNCg0K DQoNCg0KDQoNCg0KDQoNCiANCmV4dGVybiBGSUxFICpmb3BlbiAgKF9fY29u c3QgY2hhciAqICAgX19maWxlbmFtZSwNCgkJCSBfX2NvbnN0IGNoYXIgKiAg IF9fbW9kZXMpICAgIDsNCiANCmV4dGVybiBGSUxFICpmcmVvcGVuICAoX19j b25zdCBjaGFyICogICBfX2ZpbGVuYW1lLA0KCQkJICAgX19jb25zdCBjaGFy ICogICBfX21vZGVzLA0KCQkJICAgRklMRSAqICAgX19zdHJlYW0pICAgIDsN CiMgMTk3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMw0KDQoNCg0K DQoNCg0KDQoNCg0KDQogDQpleHRlcm4gRklMRSAqZmRvcGVuICAoaW50IF9f ZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgICAgOw0KDQoNCiMgMjIzICIv dXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMw0KDQoNCg0KIA0KDQpleHRl cm4gdm9pZCBzZXRidWYgIChGSUxFICogICBfX3N0cmVhbSwgY2hhciAqICAg X19idWYpICAgIDsNCiANCg0KDQpleHRlcm4gaW50IHNldHZidWYgIChGSUxF ICogICBfX3N0cmVhbSwgY2hhciAqICAgX19idWYsDQoJCQkgaW50IF9fbW9k ZXMsIHNpemVfdCBfX24pICAgIDsNCg0KDQogDQoNCmV4dGVybiB2b2lkIHNl dGJ1ZmZlciAgKEZJTEUgKiAgIF9fc3RyZWFtLCBjaGFyICogICBfX2J1ZiwN CgkJCSAgICBzaXplX3QgX19zaXplKSAgICA7DQoNCiANCmV4dGVybiB2b2lk IHNldGxpbmVidWYgIChGSUxFICpfX3N0cmVhbSkgICAgOw0KDQoNCg0KIA0K ZXh0ZXJuIGludCBmcHJpbnRmICAoRklMRSAqICAgX19zdHJlYW0sDQoJCQkg X19jb25zdCBjaGFyICogICBfX2Zvcm1hdCwgLi4uKSAgICA7DQogDQpleHRl cm4gaW50IHByaW50ZiAgKF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4u LikgICAgOw0KIA0KZXh0ZXJuIGludCBzcHJpbnRmICAoY2hhciAqICAgX19z LA0KCQkJIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgICAgOw0K DQogDQpleHRlcm4gaW50IHZmcHJpbnRmICAoRklMRSAqICAgX19zLA0KCQkJ ICBfX2NvbnN0IGNoYXIgKiAgIF9fZm9ybWF0LA0KCQkJICBfX2dudWNfdmFf bGlzdCAgX19hcmcpICAgIDsNCiANCmV4dGVybiBpbnQgdnByaW50ZiAgKF9f Y29uc3QgY2hhciAqICAgX19mb3JtYXQsDQoJCQkgX19nbnVjX3ZhX2xpc3Qg IF9fYXJnKSAgICA7DQogDQpleHRlcm4gaW50IHZzcHJpbnRmICAoY2hhciAq ICAgX19zLA0KCQkJICBfX2NvbnN0IGNoYXIgKiAgIF9fZm9ybWF0LA0KCQkJ ICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICAgIDsNCg0KDQogDQpleHRlcm4g aW50IHNucHJpbnRmICAoY2hhciAqICAgX19zLCBzaXplX3QgX19tYXhsZW4s DQoJCQkgIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgICAgDQog ICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAz LCA0KSkpOw0KDQpleHRlcm4gaW50IF9fdnNucHJpbnRmICAoY2hhciAqICAg X19zLCBzaXplX3QgX19tYXhsZW4sDQoJCQkgICAgIF9fY29uc3QgY2hhciAq ICAgX19mb3JtYXQsDQoJCQkgICAgIF9fZ251Y192YV9saXN0ICBfX2FyZykg ICAgDQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50 Zl9fLCAzLCAwKSkpOw0KZXh0ZXJuIGludCB2c25wcmludGYgIChjaGFyICog ICBfX3MsIHNpemVfdCBfX21heGxlbiwNCgkJCSAgIF9fY29uc3QgY2hhciAq ICAgX19mb3JtYXQsDQoJCQkgICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICAg IA0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZf XywgMywgMCkpKTsNCg0KDQojIDMwMiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0 ZGlvLmgiIDMNCg0KDQoNCiANCmV4dGVybiBpbnQgZnNjYW5mICAoRklMRSAq ICAgX19zdHJlYW0sDQoJCQlfX2NvbnN0IGNoYXIgKiAgIF9fZm9ybWF0LCAu Li4pICAgIDsNCiANCmV4dGVybiBpbnQgc2NhbmYgIChfX2NvbnN0IGNoYXIg KiAgIF9fZm9ybWF0LCAuLi4pICAgIDsNCiANCmV4dGVybiBpbnQgc3NjYW5m ICAoX19jb25zdCBjaGFyICogICBfX3MsDQoJCQlfX2NvbnN0IGNoYXIgKiAg IF9fZm9ybWF0LCAuLi4pICAgIDsNCg0KIyAzMzAgIi91c3IvbG9jYWwvaW5j bHVkZS9zdGRpby5oIiAzDQoNCg0KDQogDQpleHRlcm4gaW50IGZnZXRjICAo RklMRSAqX19zdHJlYW0pICAgIDsNCmV4dGVybiBpbnQgZ2V0YyAgKEZJTEUg Kl9fc3RyZWFtKSAgICA7DQoNCiANCmV4dGVybiBpbnQgZ2V0Y2hhciAgKHZv aWQpICAgIDsNCg0KIA0KDQoNCg0KDQogDQpleHRlcm4gaW50IGdldGNfdW5s b2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAgOw0KZXh0ZXJuIGludCBnZXRj aGFyX3VubG9ja2VkICAodm9pZCkgICAgOw0KDQoNCg0KIA0KZXh0ZXJuIGlu dCBmZ2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgICA7DQoNCg0K DQogDQpleHRlcm4gaW50IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJl YW0pICAgIDsNCmV4dGVybiBpbnQgcHV0YyAgKGludCBfX2MsIEZJTEUgKl9f c3RyZWFtKSAgICA7DQoNCiANCmV4dGVybiBpbnQgcHV0Y2hhciAgKGludCBf X2MpICAgIDsNCg0KIA0KDQoNCg0KDQogDQpleHRlcm4gaW50IGZwdXRjX3Vu bG9ja2VkICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsNCg0KDQoN CiANCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAgKGludCBfX2MsIEZJTEUg Kl9fc3RyZWFtKSAgICA7DQpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQg IChpbnQgX19jKSAgICA7DQoNCg0KDQoNCiANCmV4dGVybiBpbnQgZ2V0dyAg KEZJTEUgKl9fc3RyZWFtKSAgICA7DQoNCiANCmV4dGVybiBpbnQgcHV0dyAg KGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSAgICA7DQoNCg0KDQogDQpleHRl cm4gY2hhciAqZmdldHMgIChjaGFyICogICBfX3MsIGludCBfX24sDQoJCQkg RklMRSAqICAgX19zdHJlYW0pICAgIDsNCg0KDQoNCg0KDQoNCg0KIA0KDQpl eHRlcm4gY2hhciAqZ2V0cyAgKGNoYXIgKl9fcykgICAgOw0KDQoNCiMgNDIw ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMw0KDQoNCg0KIA0KZXh0 ZXJuIGludCBmcHV0cyAgKF9fY29uc3QgY2hhciAqICAgX19zLA0KCQkgICAg ICAgRklMRSAqICAgX19zdHJlYW0pICAgIDsNCg0KDQoNCg0KDQoNCg0KIA0K ZXh0ZXJuIGludCBwdXRzICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsNCg0K DQogDQpleHRlcm4gaW50IHVuZ2V0YyAgKGludCBfX2MsIEZJTEUgKl9fc3Ry ZWFtKSAgICA7DQoNCg0KIA0KZXh0ZXJuIHNpemVfdCBmcmVhZCAgKHZvaWQg KiAgIF9fcHRyLCBzaXplX3QgX19zaXplLA0KCQkJICBzaXplX3QgX19uLCBG SUxFICogICBfX3N0cmVhbSkgICAgOw0KIA0KZXh0ZXJuIHNpemVfdCBmd3Jp dGUgIChfX2NvbnN0IHZvaWQgKiAgIF9fcHRyLCBzaXplX3QgX19zaXplLA0K CQkJICAgc2l6ZV90IF9fbiwgRklMRSAqICAgX19zKSAgICA7DQoNCg0KIA0K ZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAgKHZvaWQgKiAgIF9fcHRy LCBzaXplX3QgX19zaXplLA0KCQkJCSAgIHNpemVfdCBfX24sIEZJTEUgKiAg IF9fc3RyZWFtKSAgICA7DQpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tl ZCAgKF9fY29uc3Qgdm9pZCAqICAgX19wdHIsDQoJCQkJICAgIHNpemVfdCBf X3NpemUsIHNpemVfdCBfX24sDQoJCQkJICAgIEZJTEUgKiAgIF9fc3RyZWFt KSAgICA7DQoNCg0KDQogDQpleHRlcm4gaW50IGZzZWVrICAoRklMRSAqX19z dHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpICAgIDsNCiAN CmV4dGVybiBsb25nIGludCBmdGVsbCAgKEZJTEUgKl9fc3RyZWFtKSAgICA7 DQogDQpleHRlcm4gdm9pZCByZXdpbmQgIChGSUxFICpfX3N0cmVhbSkgICAg Ow0KDQogDQoNCg0KDQoNCiANCg0KDQp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7 DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0K ZXh0ZXJuIGludCBmZ2V0cG9zICAoRklMRSAqICAgX19zdHJlYW0sDQoJCQkg ZnBvc190ICogICBfX3BvcykgICAgOw0KIA0KZXh0ZXJuIGludCBmc2V0cG9z ICAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgICAg Ow0KIyA1MTkgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzDQoNCg0K IyA1MjkgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzDQoNCg0KIA0K ZXh0ZXJuIHZvaWQgY2xlYXJlcnIgIChGSUxFICpfX3N0cmVhbSkgICAgOw0K IA0KZXh0ZXJuIGludCBmZW9mICAoRklMRSAqX19zdHJlYW0pICAgIDsNCiAN CmV4dGVybiBpbnQgZmVycm9yICAoRklMRSAqX19zdHJlYW0pICAgIDsNCg0K DQogDQpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAgKEZJTEUgKl9f c3RyZWFtKSAgICA7DQpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgIChGSUxF ICpfX3N0cmVhbSkgICAgOw0KZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQg IChGSUxFICpfX3N0cmVhbSkgICAgOw0KDQoNCg0KIA0KZXh0ZXJuIHZvaWQg cGVycm9yICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsNCg0KIA0KDQoNCmV4 dGVybiBpbnQgc3lzX25lcnI7DQpleHRlcm4gX19jb25zdCBjaGFyICpfX2Nv bnN0IHN5c19lcnJsaXN0W107DQoNCg0KDQoNCg0KDQoNCg0KIA0KZXh0ZXJu IGludCBmaWxlbm8gIChGSUxFICpfX3N0cmVhbSkgICAgOw0KDQoNCg0KIA0K ZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkg ICAgOw0KDQoNCg0KDQoNCiANCmV4dGVybiBGSUxFICpwb3BlbiAgKF9fY29u c3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpICAg IDsNCg0KIA0KZXh0ZXJuIGludCBwY2xvc2UgIChGSUxFICpfX3N0cmVhbSkg ICAgOw0KDQoNCg0KDQogDQpleHRlcm4gY2hhciAqY3Rlcm1pZCAgKGNoYXIg Kl9fcykgICAgOw0KDQoNCg0KDQoNCg0KDQoNCg0KIyA2MDMgIi91c3IvbG9j YWwvaW5jbHVkZS9zdGRpby5oIiAzDQoNCg0KDQoNCiANCg0KIA0KZXh0ZXJu IHZvaWQgZmxvY2tmaWxlICAoRklMRSAqX19zdHJlYW0pICAgIDsNCg0KIA0K DQpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAgKEZJTEUgKl9fc3RyZWFtKSAg ICA7DQoNCiANCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlICAoRklMRSAqX19z dHJlYW0pICAgIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCiMgMSAi L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAzDQogDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KIA0KZXh0ZXJuIF9faW5saW5lICBpbnQNCnZwcmludGYgKF9f Y29uc3QgY2hhciAqICAgX19mbXQsIF9fZ251Y192YV9saXN0ICBfX2FyZykg IA0Kew0KICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJn KTsNCn0NCg0KIA0KZXh0ZXJuIF9faW5saW5lICBpbnQNCmdldGNoYXIgKHZv aWQpICANCnsNCiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7DQp9DQoNCg0K DQogDQpleHRlcm4gX19pbmxpbmUgIGludA0KZ2V0Y191bmxvY2tlZCAoRklM RSAqX19mcCkgIA0Kew0KICByZXR1cm4gKCggX19mcCApLT5fSU9fcmVhZF9w dHIgPj0gKCBfX2ZwICktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKCBfX2Zw ICkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKCBfX2ZwICktPl9JT19yZWFkX3B0 cisrKSA7DQp9DQoNCiANCmV4dGVybiBfX2lubGluZSAgaW50DQpnZXRjaGFy X3VubG9ja2VkICh2b2lkKSAgDQp7DQogIHJldHVybiAoKCBzdGRpbiApLT5f SU9fcmVhZF9wdHIgPj0gKCBzdGRpbiApLT5fSU9fcmVhZF9lbmQgPyBfX3Vm bG93ICggc3RkaW4gKSA6ICoodW5zaWduZWQgY2hhciAqKSAoIHN0ZGluICkt Pl9JT19yZWFkX3B0cisrKSA7DQp9DQoNCg0KDQogDQpleHRlcm4gX19pbmxp bmUgIGludA0KcHV0Y2hhciAoaW50IF9fYykgIA0Kew0KICByZXR1cm4gX0lP X3B1dGMgKF9fYywgc3Rkb3V0KTsNCn0NCg0KDQoNCiANCmV4dGVybiBfX2lu bGluZSAgaW50DQpmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19z dHJlYW0pICANCnsNCiAgcmV0dXJuICgoKCAgX19zdHJlYW0gKS0+X0lPX3dy aXRlX3B0ciA+PSAoICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfZW5kKSA/IF9f b3ZlcmZsb3cgKCAgX19zdHJlYW0gLCAodW5zaWduZWQgY2hhcikgKCBfX2Mg KSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVhbSApLT5fSU9fd3Jp dGVfcHRyKysgPSAoIF9fYyApKSkgOw0KfQ0KDQoNCg0KDQogDQpleHRlcm4g X19pbmxpbmUgIGludA0KcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq X19zdHJlYW0pICANCnsNCiAgcmV0dXJuICgoKCAgX19zdHJlYW0gKS0+X0lP X3dyaXRlX3B0ciA+PSAoICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfZW5kKSA/ IF9fb3ZlcmZsb3cgKCAgX19zdHJlYW0gLCAodW5zaWduZWQgY2hhcikgKCBf X2MgKSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVhbSApLT5fSU9f d3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOw0KfQ0KDQogDQpleHRlcm4gX19p bmxpbmUgIGludA0KcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykgIA0Kew0K ICByZXR1cm4gKCgoICBzdGRvdXQgKS0+X0lPX3dyaXRlX3B0ciA+PSAoICBz dGRvdXQgKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93ICggIHN0ZG91 dCAsICh1bnNpZ25lZCBjaGFyKSAoIF9fYyApKSA6ICh1bnNpZ25lZCBjaGFy KSAoKiggIHN0ZG91dCApLT5fSU9fd3JpdGVfcHRyKysgPSAoIF9fYyApKSkg Ow0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCmV4dGVybiBf X2lubGluZSAgaW50DQpmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkg IA0Kew0KICByZXR1cm4gKCgoIF9fc3RyZWFtICktPl9mbGFncyAmIDB4MTAg KSAhPSAwKSA7DQp9DQoNCiANCmV4dGVybiBfX2lubGluZSAgaW50DQpmZXJy b3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSAgDQp7DQogIHJldHVybiAo KCggX19zdHJlYW0gKS0+X2ZsYWdzICYgMHgyMCApICE9IDApIDsNCn0NCg0K DQoNCg0KDQoNCiANCg0KIyAxNDkgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRz L3N0ZGlvLmgiIDMNCg0KDQojIDE2NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp dHMvc3RkaW8uaCIgMw0KDQoNCiANCg0KIyA2MzEgIi91c3IvbG9jYWwvaW5j bHVkZS9zdGRpby5oIiAyIDMNCg0KDQoNCiANCg0KDQoNCg0KIyAxMCAiLi4v Li4vZWdjcy0xLjEuMi9nY2Mvc3lzdGVtLmgiIDINCg0KDQogDQoNCg0KDQoN CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgiIDEgMw0KIA0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoN Cg0KDQoNCiANCg0KDQogDQoNCg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9sb2Nh bC9pbmNsdWRlL2VuZGlhbi5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoN Cg0KIA0KIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIg MSAzDQogDQoNCg0KDQoNCg0KDQojIDM1ICIvdXNyL2xvY2FsL2luY2x1ZGUv ZW5kaWFuLmgiIDIgMw0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KIyA0MCAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgiIDIgMw0KDQoN Cg0KDQoNCg0KDQplbnVtDQp7DQogIF9JU3VwcGVyID0gKCggMCApIDwgOCA/ ICgoMSA8PCAoIDAgKSkgPDwgOCkgOiAoKDEgPDwgKCAwICkpID4+IDgpKSAs CSANCiAgX0lTbG93ZXIgPSAoKCAxICkgPCA4ID8gKCgxIDw8ICggMSApKSA8 PCA4KSA6ICgoMSA8PCAoIDEgKSkgPj4gOCkpICwJIA0KICBfSVNhbHBoYSA9 ICgoIDIgKSA8IDggPyAoKDEgPDwgKCAyICkpIDw8IDgpIDogKCgxIDw8ICgg MiApKSA+PiA4KSkgLAkgDQogIF9JU2RpZ2l0ID0gKCggMyApIDwgOCA/ICgo MSA8PCAoIDMgKSkgPDwgOCkgOiAoKDEgPDwgKCAzICkpID4+IDgpKSAsCSAN CiAgX0lTeGRpZ2l0ID0gKCggNCApIDwgOCA/ICgoMSA8PCAoIDQgKSkgPDwg OCkgOiAoKDEgPDwgKCA0ICkpID4+IDgpKSAsCSANCiAgX0lTc3BhY2UgPSAo KCA1ICkgPCA4ID8gKCgxIDw8ICggNSApKSA8PCA4KSA6ICgoMSA8PCAoIDUg KSkgPj4gOCkpICwJIA0KICBfSVNwcmludCA9ICgoIDYgKSA8IDggPyAoKDEg PDwgKCA2ICkpIDw8IDgpIDogKCgxIDw8ICggNiApKSA+PiA4KSkgLAkgDQog IF9JU2dyYXBoID0gKCggNyApIDwgOCA/ICgoMSA8PCAoIDcgKSkgPDwgOCkg OiAoKDEgPDwgKCA3ICkpID4+IDgpKSAsCSANCiAgX0lTYmxhbmsgPSAoKCA4 ICkgPCA4ID8gKCgxIDw8ICggOCApKSA8PCA4KSA6ICgoMSA8PCAoIDggKSkg Pj4gOCkpICwJIA0KICBfSVNjbnRybCA9ICgoIDkgKSA8IDggPyAoKDEgPDwg KCA5ICkpIDw8IDgpIDogKCgxIDw8ICggOSApKSA+PiA4KSkgLAkgDQogIF9J U3B1bmN0ID0gKCggMTAgKSA8IDggPyAoKDEgPDwgKCAxMCApKSA8PCA4KSA6 ICgoMSA8PCAoIDEwICkpID4+IDgpKSAsCSANCiAgX0lTYWxudW0gPSAoKCAx MSApIDwgOCA/ICgoMSA8PCAoIDExICkpIDw8IDgpIDogKCgxIDw8ICggMTEg KSkgPj4gOCkpIAkgDQp9Ow0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0K ZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7 CSANCmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAqX19jdHlwZV90b2xvd2Vy OyAgDQpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG91cHBl cjsgIA0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KZXh0ZXJuIGludCAg aXNhbG51bSAgIChpbnQpICAgICA7DQpleHRlcm4gaW50ICBpc2FscGhhICAg KGludCkgICAgIDsNCmV4dGVybiBpbnQgIGlzY250cmwgICAoaW50KSAgICAg Ow0KZXh0ZXJuIGludCAgaXNkaWdpdCAgIChpbnQpICAgICA7DQpleHRlcm4g aW50ICBpc2xvd2VyICAgKGludCkgICAgIDsNCmV4dGVybiBpbnQgIGlzZ3Jh cGggICAoaW50KSAgICAgOw0KZXh0ZXJuIGludCAgaXNwcmludCAgIChpbnQp ICAgICA7DQpleHRlcm4gaW50ICBpc3B1bmN0ICAgKGludCkgICAgIDsNCmV4 dGVybiBpbnQgIGlzc3BhY2UgICAoaW50KSAgICAgOw0KZXh0ZXJuIGludCAg aXN1cHBlciAgIChpbnQpICAgICA7DQpleHRlcm4gaW50ICBpc3hkaWdpdCAg IChpbnQpICAgICA7DQoNCg0KDQoNCg0KDQogDQpleHRlcm4gaW50IHRvbG93 ZXIgIChpbnQgX19jKSAgICA7DQoNCiANCmV4dGVybiBpbnQgdG91cHBlciAg KGludCBfX2MpICAgIDsNCg0KDQoNCg0KIA0KDQpleHRlcm4gaW50IGlzYXNj aWkgIChpbnQgX19jKSAgICA7DQoNCiANCg0KZXh0ZXJuIGludCB0b2FzY2lp ICAoaW50IF9fYykgICAgOw0KDQoNCg0KDQogDQoNCmV4dGVybiBpbnQgIF90 b3VwcGVyICAgKGludCkgICAgIDsNCmV4dGVybiBpbnQgIF90b2xvd2VyICAg KGludCkgICAgIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCmV4dGVybiBfX2lubGluZSBpbnQNCnRvbG93ZXIgKGludCBf X2MpDQp7DQogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBf X2N0eXBlX3RvbG93ZXJbX19jXSA6IF9fYzsNCn0NCg0KZXh0ZXJuIF9faW5s aW5lIGludA0KdG91cHBlciAoaW50IF9fYykNCnsNCiAgcmV0dXJuIF9fYyA+ PSAtMTI4ICYmIF9fYyA8IDI1NiA/IF9fY3R5cGVfdG91cHBlcltfX2NdIDog X19jOw0KfQ0KDQoNCg0KDQojIDE4MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0 eXBlLmgiIDMNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAy NzIgIi91c3IvbG9jYWwvaW5jbHVkZS9jdHlwZS5oIiAzDQoNCg0KIA0KDQoN CiMgMTcgIi4uLy4uL2VnY3MtMS4xLjIvZ2NjL3N5c3RlbS5oIiAyDQoNCg0K IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9sb2NhbC9p bmNsdWRlL3N5cy90eXBlcy5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0K DQp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsNCnR5cGVkZWYgX191X3Nob3J0 IHVfc2hvcnQ7DQp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7DQp0eXBlZGVmIF9f dV9sb25nIHVfbG9uZzsNCnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Ow0KdHlw ZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Ow0KdHlwZWRlZiBfX2ZzaWRfdCBm c2lkX3Q7DQoNCg0KdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7DQoNCg0KDQp0 eXBlZGVmIF9faW5vX3QgaW5vX3Q7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5 cGVkZWYgX19kZXZfdCBkZXZfdDsNCg0KDQoNCg0KdHlwZWRlZiBfX2dpZF90 IGdpZF90Ow0KDQoNCg0KDQp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsNCg0K DQoNCg0KdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsNCg0KDQoNCg0KdHlw ZWRlZiBfX3VpZF90IHVpZF90Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCnR5cGVkZWYgX19waWRfdCBwaWRfdDsNCg0KDQoNCg0KdHlw ZWRlZiBfX2lkX3QgaWRfdDsNCg0KDQoNCnR5cGVkZWYgX19zc2l6ZV90IHNz aXplX3Q7DQoNCg0KDQoNCnR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7DQp0 eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90Ow0KDQoNCg0KdHlwZWRlZiBfX2tl eV90IGtleV90Ow0KDQoNCg0KDQoNCg0KIyAxICIvdXNyL2xvY2FsL2luY2x1 ZGUvdGltZS5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyA1MSAi L3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMw0KDQoNCg0KIyA2MiAiL3Vz ci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMw0KDQoNCg0KDQoNCg0KDQoNCiAN CnR5cGVkZWYgX190aW1lX3QgdGltZV90Ow0KDQoNCg0KDQoNCiMgODkgIi91 c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDMNCg0KDQoNCg0KIyAyNzkgIi91 c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDMNCg0KDQoNCiMgMTIxICIvdXNy L2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMw0KDQoNCg0KIyAxICIv dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42 Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMNCg0KDQoNCg0KDQoNCiANCg0KDQoj IDE5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3Mt Mi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KDQogDQoNCg0KIA0K DQoNCg0KDQoNCiANCg0KDQojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAz DQoNCg0KIA0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQogDQoNCiANCg0KIyAxMzEgIi91 c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2 L2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQogDQoNCiANCg0KDQojIDE4OCAi L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEu NjYvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KDQoNCiANCg0KDQoNCg0K IA0KDQojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51 eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCiMgMjgz ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45 MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KIA0KDQogDQoNCiMgMzE3 ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45 MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KDQoNCiANCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgMTI0ICIvdXNy L2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMw0KDQoNCg0KIA0KdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsNCnR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgaW50IHVzaG9ydDsNCnR5cGVkZWYgdW5zaWduZWQgaW50IHVp bnQ7DQoNCg0KIA0KDQojIDE1OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90 eXBlcy5oIiAzDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGludCBp bnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkg Ow0KdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl X18gKCAgX19ISV9fICkpKSA7DQp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0 cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsNCnR5cGVkZWYg aW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElf XyApKSkgOw0KDQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9f YXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsNCnR5cGVk ZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19t b2RlX18gKCAgX19ISV9fICkpKSA7DQp0eXBlZGVmIHVuc2lnbmVkIGludCB1 X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lfXyAp KSkgOw0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmli dXRlX18gKChfX21vZGVfXyAoICBfX0RJX18gKSkpIDsNCg0KdHlwZWRlZiBp bnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29y ZF9fKSkpOw0KDQoNCiANCg0KDQoNCg0KDQoNCiANCg0KDQogDQojIDEgIi91 c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMw0KIA0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0K IA0KDQoNCiANCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2VsZWN0 LmgiIDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQojIDM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0 cy9zZWxlY3QuaCIgMw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyA1NyAi L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMNCg0KIyA3MyAi L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMNCg0KIyAzMSAi L3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzDQoNCg0KIA0K IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzDQog DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0 eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsNCg0KIA0KDQoNCnR5cGVkZWYg c3RydWN0DQogIHsNCiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAy NCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKSBdOw0KICB9 IF9fc2lnc2V0X3Q7DQoNCg0KDQoNCiANCg0KDQoNCg0KDQojIDEyNSAiL3Vz ci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMNCg0KIyAzNCAiL3Vz ci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzDQoNCg0KIA0KDQoj IDEgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDEgMw0KIA0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQojIDUxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5o IiAzDQoNCg0KDQojIDYyICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAz DQoNCg0KDQojIDczICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzDQoN Cg0KDQoNCg0KDQoNCg0KIA0KDQpzdHJ1Y3QgdGltZXNwZWMNCiAgew0KICAg IGxvbmcgaW50IHR2X3NlYzsJCSANCiAgICBsb25nIGludCB0dl9uc2VjOwkJ IA0KICB9Ow0KDQoNCg0KDQoNCiMgMjc5ICIvdXNyL2xvY2FsL2luY2x1ZGUv dGltZS5oIiAzDQoNCg0KDQojIDM4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lz L3NlbGVjdC5oIiAyIDMNCg0KDQogDQoNCiANCg0KDQoNCnN0cnVjdCB0aW1l dmFsOw0KDQp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOw0KDQogDQp0eXBl ZGVmIF9fZmRfc2V0IGZkX3NldDsNCg0KIA0KDQoNCg0KIA0KDQoNCg0KDQog DQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCmV4dGVybiBpbnQgX19zZWxlY3Qg IChpbnQgX19uZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLA0KCQkJICBfX2Zk X3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLA0KCQkJ ICBzdHJ1Y3QgdGltZXZhbCAqX190aW1lb3V0KSAgICA7DQpleHRlcm4gaW50 IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsDQoJ CQlfX2ZkX3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRz LA0KCQkJc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgICAgOw0KDQojIDkx ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzDQoNCg0KIA0K DQoNCiMgMTkzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg Mw0KDQoNCiANCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zeXNtYWNy b3MuaCIgMSAzDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAx OTYgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzDQoNCg0K DQoNCiANCg0KdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwkgIA0KdHlw ZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsgIA0KdHlwZWRlZiBfX2Zz ZmlsY250X3QgZnNmaWxjbnRfdDsgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KIA0KDQoNCiMgNzcgIi4uLy4uL2VnY3MtMS4xLjIvZ2NjL3N5c3RlbS5o IiAyDQoNCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Vycm5vLmgiIDEgMw0K IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoN Cg0KDQogDQoNCg0KDQoNCg0KDQogDQoNCiANCg0KIyAxICIvdXNyL2xvY2Fs L2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDEgIi91c3IvbG9j YWwvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMNCg0KDQoNCiMgMSAiL3Vz ci9sb2NhbC9pbmNsdWRlL2FzbS9lcnJuby5oIiAxIDMNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgNCAiL3Vzci9sb2NhbC9p bmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIgMw0KDQoNCiMgMTQgIi91c3IvbG9j YWwvaW5jbHVkZS9saW51eC9lcnJuby5oIiAzDQoNCg0KDQojIDI1ICIvdXNy L2xvY2FsL2luY2x1ZGUvYml0cy9lcnJuby5oIiAyIDMNCg0KDQogDQoNCg0K IA0KDQoNCg0KDQogDQpleHRlcm4gaW50IGVycm5vOw0KDQogDQpleHRlcm4g aW50ICpfX2Vycm5vX2xvY2F0aW9uICAodm9pZCkgICAgIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQojIDM2ICIvdXNyL2xvY2FsL2luY2x1ZGUvZXJy bm8uaCIgMiAzDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCiANCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0K IyA3OCAiLi4vLi4vZWdjcy0xLjEuMi9nY2Mvc3lzdGVtLmgiIDINCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBp bnQgc3lzX25lcnI7DQpleHRlcm4gY2hhciAqc3lzX2Vycmxpc3RbXTsNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0K DQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQojIDM5ICJjZXhwLnkiIDIN Cg0KIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc2V0am1wLmgiIDEgMw0KIA0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0K DQoNCg0KDQogDQoNCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2V0 am1wLmgiIDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYg aW50IF9fam1wX2J1Zls2XTsNCg0KDQogDQoNCg0KDQojIDMwICIvdXNyL2xv Y2FsL2luY2x1ZGUvc2V0am1wLmgiIDIgMw0KDQojIDEgIi91c3IvbG9jYWwv aW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgMzMgIi91c3IvbG9jYWwvaW5jbHVk ZS9iaXRzL3NpZ3NldC5oIiAzDQoNCg0KDQogDQoNCg0KDQoNCg0KIyAxMjUg Ii91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzDQoNCiMgMzEg Ii91c3IvbG9jYWwvaW5jbHVkZS9zZXRqbXAuaCIgMiAzDQoNCg0KIA0KdHlw ZWRlZiBzdHJ1Y3QgX19qbXBfYnVmX3RhZwkgDQogIHsNCiAgICAgDQoNCg0K ICAgIF9fam1wX2J1ZiBfX2ptcGJ1ZjsJCSANCiAgICBpbnQgX19tYXNrX3dh c19zYXZlZDsJIA0KICAgIF9fc2lnc2V0X3QgX19zYXZlZF9tYXNrOwkgDQog IH0gam1wX2J1ZlsxXTsNCg0KDQogDQoNCg0KZXh0ZXJuIGludCBfX3NpZ3Nl dGptcCAgKGptcF9idWYgX19lbnYsIGludCBfX3NhdmVtYXNrKSAgICA7DQoN Cg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQpl eHRlcm4gdm9pZCBsb25nam1wICAoam1wX2J1ZiBfX2VudiwgaW50IF9fdmFs KSAgICANCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOw0K DQogDQoNCg0KZXh0ZXJuIHZvaWQgX2xvbmdqbXAgIChqbXBfYnVmIF9fZW52 LCBpbnQgX192YWwpICAgIA0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Jl dHVybl9fKSk7DQoNCg0KDQoNCiANCg0KDQp0eXBlZGVmIGptcF9idWYgc2ln am1wX2J1ZjsNCg0KIA0KDQoNCg0KIA0KDQoNCg0KZXh0ZXJuIHZvaWQgc2ln bG9uZ2ptcCAgKHNpZ2ptcF9idWYgX19lbnYsIGludCBfX3ZhbCkgICAgDQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsNCg0KDQogDQoN Cg0KIyA0MCAiY2V4cC55IiAyDQoNCiANCg0KDQoNCg0KDQojIDEgIi4uLy4u L2VnY3MtMS4xLjIvZ2NjL2dhbnNpZGVjbC5oIiAxDQogDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCiAN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgNDcgImNl eHAueSIgMg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgY2hhciBVX0NIQVI7DQoN CiANCnN0cnVjdCBhcmdsaXN0IHsNCiAgc3RydWN0IGFyZ2xpc3QgKm5leHQ7 DQogIFVfQ0hBUiAqbmFtZTsNCiAgaW50IGxlbmd0aDsNCiAgaW50IGFyZ25v Ow0KfTsNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmludCAgcGFyc2VfY19l eHByZXNzaW9uICAoY2hhciAqLCBpbnQpICA7DQoNCnN0YXRpYyBpbnQgeXls ZXggICh2b2lkKSAgOw0Kc3RhdGljIHZvaWQgeXllcnJvciAgKGNoYXIgKikg ICBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsNCnN0YXRpYyBpbnQgIGV4 cHJlc3Npb25fdmFsdWU7DQoNCg0KDQoNCnN0YXRpYyBqbXBfYnVmIHBhcnNl X3JldHVybl9lcnJvcjsNCg0KIA0Kc3RhdGljIGludCBrZXl3b3JkX3BhcnNp bmcgPSAwOw0KDQogDQoNCnN0YXRpYyBpbnQgc2tpcF9ldmFsdWF0aW9uOw0K DQogDQpzdGF0aWMgaW50IHdhcm5fdW5kZWY7DQoNCiANCmV4dGVybiB1bnNp Z25lZCBjaGFyIGlzX2lkc3RhcnRbXSwgaXNfaWRjaGFyW10sIGlzX3NwYWNl W107DQoNCiANCmV4dGVybiBpbnQgcGVkYW50aWM7DQoNCiANCmV4dGVybiBp bnQgdHJhZGl0aW9uYWw7DQoNCiANCmV4dGVybiBpbnQgYzg5Ow0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoN Cg0KDQoNCnN0cnVjdCBjb25zdGFudDsNCg0Kdm9pZCAqICB4bWFsbG9jICAo c2l6ZV90KSAgOw0KaW50ICBwYXJzZV9lc2NhcGUgIChjaGFyICoqLCBpbnQg KSAgOw0KaW50IGNoZWNrX2Fzc2VydGlvbiAgKFVfQ0hBUiAqLCBpbnQsIGlu dCwgc3RydWN0IGFyZ2xpc3QgKikgIDsNCnN0cnVjdCBoYXNobm9kZSAqbG9v a3VwICAoVV9DSEFSICosIGludCwgaW50KSAgOw0Kdm9pZCBlcnJvciAgICAo Y2hhciAqLCAuLi4pICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChfX3By aW50Zl9fLCAgICAxICAsICAgICAyICApKSkgICA7DQp2b2lkIHBlZHdhcm4g ICAgKGNoYXIgKiwgLi4uKSAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAo X19wcmludGZfXywgICAgMSAgLCAgICAgMiAgKSkpICAgOw0Kdm9pZCB3YXJu aW5nICAgIChjaGFyICosIC4uLikgICAgIF9fYXR0cmlidXRlX18gKChmb3Jt YXQgKF9fcHJpbnRmX18sICAgIDEgICwgICAgIDIgICkpKSAgIDsNCg0Kc3Rh dGljIGludCBwYXJzZV9udW1iZXIgIChpbnQpICA7DQpzdGF0aWMgaW50ICBs ZWZ0X3NoaWZ0ICAoc3RydWN0IGNvbnN0YW50ICosIHVuc2lnbmVkIGludCAg KSAgOw0Kc3RhdGljIGludCAgcmlnaHRfc2hpZnQgIChzdHJ1Y3QgY29uc3Rh bnQgKiwgdW5zaWduZWQgaW50ICApICA7DQpzdGF0aWMgdm9pZCBpbnRlZ2Vy X292ZXJmbG93ICAodm9pZCkgIDsNCg0KIA0KDQoNCg0KIyAyNTAgImNleHAu eSINCg0KdHlwZWRlZiB1bmlvbiB7DQogIHN0cnVjdCBjb25zdGFudCB7aW50 ICB2YWx1ZTsgaW50IHNpZ25lZHA7fSBpbnRlZ2VyOw0KICBzdHJ1Y3QgbmFt ZSB7VV9DSEFSICphZGRyZXNzOyBpbnQgbGVuZ3RoO30gbmFtZTsNCiAgc3Ry dWN0IGFyZ2xpc3QgKmtleXdvcmRzOw0KfSBZWVNUWVBFOw0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpzdGF0aWMgY29uc3QgY2hhciB5eXRy YW5zbGF0ZVtdID0geyAgICAgMCwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg MiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgIDI5LCAgICAgMiwgICAg MzEsICAgICAyLCAgICAyNywgICAgMTQsICAgICAyLCAgICAzMiwNCiAgICAz MywgICAgMjUsICAgIDIzLCAgICAgOSwgICAgMjQsICAgICAyLCAgICAyNiwg ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDgsICAgICAyLCAgICAx NywNCiAgICAgMiwgICAgMTgsICAgICA3LCAgICAgMiwgICAgIDIsICAgICAy LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAg MiwgICAgIDIsICAgICAyLCAgICAxMywgICAgIDIsICAgICAyLCAgICAgMiwg ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg MiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs ICAgICAyLCAgICAxMiwgICAgIDIsICAgIDMwLCAgICAgMiwgICAgIDIsICAg ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAg MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg MiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAg MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg MiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAg MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg ICAgMiwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAg NSwNCiAgICAgNiwgICAgMTAsICAgIDExLCAgICAxNSwgICAgMTYsICAgIDE5 LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyOA0KfTsNCg0KIyAzMjcgImNl eHAueSINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCnN0YXRpYyBjb25zdCBzaG9ydCB5eXIxW10gPSB7ICAgICAwLA0KICAg IDM0LCAgICAzNSwgICAgMzUsICAgIDM2LCAgICAzNiwgICAgMzYsICAgIDM2 LCAgICAzNiwgICAgMzcsICAgIDM2LA0KICAgIDM2LCAgICAzNiwgICAgMzYs ICAgIDM2LCAgICAzNiwgICAgMzYsICAgIDM2LCAgICAzNiwgICAgMzYsICAg IDM2LA0KICAgIDM2LCAgICAzNiwgICAgMzYsICAgIDM2LCAgICAzNiwgICAg MzYsICAgIDM2LCAgICAzOCwgICAgMzYsICAgIDM5LA0KICAgIDM2LCAgICA0 MCwgICAgNDEsICAgIDM2LCAgICAzNiwgICAgMzYsICAgIDM2LCAgICA0Miwg ICAgNDIsICAgIDQyDQp9Ow0KDQpzdGF0aWMgY29uc3Qgc2hvcnQgeXlyMltd ID0geyAgICAgMCwNCiAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMiwgICAg IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAwLCAgICAgNiwNCiAgICAg MywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywg ICAgIDMsICAgICAzLCAgICAgMywNCiAgICAgMywgICAgIDMsICAgICAzLCAg ICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDAsICAgICA0LCAgICAg MCwNCiAgICAgNCwgICAgIDAsICAgICAwLCAgICAgNywgICAgIDEsICAgICAx LCAgICAgMSwgICAgIDAsICAgICA0LCAgICAgMg0KfTsNCg0Kc3RhdGljIGNv bnN0IHNob3J0IHl5ZGVmYWN0W10gPSB7ICAgICAwLA0KICAgIDM1LCAgICAz NiwgICAgMzcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg ICAgIDAsICAgICAxLA0KICAgICAyLCAgICAgNiwgICAgIDQsICAgICA1LCAg ICAgNywgICAgIDgsICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMwLA0KICAg IDI4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw LCAgICAgMCwgICAgIDAsICAgICAwLA0KICAgICAwLCAgICAgMCwgICAgIDAs ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAg ICAzLA0KICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI3LCAgICAyNiwgICAg MjUsICAgIDE5LCAgICAyMCwgICAgMjMsICAgIDI0LA0KICAgIDIxLCAgICAy MiwgICAgMTcsICAgIDE4LCAgICAxNSwgICAgMTYsICAgIDEyLCAgICAxMywg ICAgMTQsICAgIDM4LA0KICAgICAwLCAgICAzMSwgICAgMjksICAgIDM4LCAg ICAzOCwgICAgIDAsICAgIDMzLCAgICA0MCwgICAgIDAsICAgIDEwLA0KICAg ICAwLCAgICAzOCwgICAgMzQsICAgIDM5LCAgICAgMCwgICAgIDAsICAgICAw DQp9Ow0KDQpzdGF0aWMgY29uc3Qgc2hvcnQgeXlkZWZnb3RvW10gPSB7ICAg IDc1LA0KICAgIDEwLCAgICAxMSwgICAgMzgsICAgIDQzLCAgICA0MiwgICAg NDEsICAgIDcxLCAgICA2Ng0KfTsNCg0Kc3RhdGljIGNvbnN0IHNob3J0IHl5 cGFjdFtdID0geyAgICAxMiwNCi0zMjc2OCwtMzI3NjgsLTMyNzY4LCAgICAx MiwgICAgMTIsICAgIDEyLCAgICAxMiwgICAgIDEsICAgIDEyLCAgICAgNCwN CiAgICA3OSwtMzI3NjgsLTMyNzY4LC0zMjc2OCwtMzI3NjgsICAgLTIxLCAg ICAzMSwgICAgMTIsLTMyNzY4LC0zMjc2OCwNCi0zMjc2OCwgICAgMTIsICAg IDEyLCAgICAxMiwgICAgMTIsICAgIDEyLCAgICAxMiwgICAgMTIsICAgIDEy LCAgICAxMiwNCiAgICAxMiwgICAgMTIsICAgIDEyLCAgICAxMiwgICAgMTIs ICAgIDEyLCAgICAxMiwgICAgMzAsLTMyNzY4LCAgICA3OSwNCiAgICAxMiwg ICAgMTIsICAgIDEyLCAgIDExMCwgICAxMjQsICAgMTM3LCAgIDE0OCwgICAx NDgsICAgMTU1LCAgIDE1NSwNCiAgIDE1NSwgICAxNTUsICAgMTYwLCAgIDE2 MCwgICAtMTcsICAgLTE3LC0zMjc2OCwtMzI3NjgsLTMyNzY4LCAgICAgMiwN CiAgICA1OCwgICAgMzQsICAgIDk1LCAgICAgMiwgICAgIDIsICAgIDU0LC0z Mjc2OCwtMzI3NjgsICAgIDU1LC0zMjc2OCwNCiAgICAxMiwgICAgIDIsICAg IDc5LC0zMjc2OCwgICAgNjMsICAgMTg4LC0zMjc2OA0KfTsNCg0Kc3RhdGlj IGNvbnN0IHNob3J0IHl5cGdvdG9bXSA9IHstMzI3NjgsDQogICAxODAsICAg IC00LC0zMjc2OCwtMzI3NjgsLTMyNzY4LC0zMjc2OCwtMzI3NjgsICAgLTYw DQp9Ow0KDQoNCg0KDQoNCnN0YXRpYyBjb25zdCBzaG9ydCB5eXRhYmxlW10g PSB7ICAgIDEyLA0KICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDY4LCAgICA2 OSwgICAgMTYsICAgIDY0LCAgICAzNSwgICAgMzYsICAgIDM3LA0KICAgIC05 LCAgICA3NCwgICAgMTgsICAgIDQwLCAgICAgMSwgICAgIDIsICAgICAzLCAg ICA0NCwgICAgNDUsICAgIDQ2LA0KICAgIDQ3LCAgICA0OCwgICAgNDksICAg IDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2 LA0KICAgIDU3LCAgICA1OCwgICAgNTksICAgIDY1LCAgICAgNCwgICAgIDUs ICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDE4LA0KICAgICA2LCAgICAgNywg ICAgIDgsICAgICA5LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAg MjUsICAgIDI2LA0KICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAz MSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LA0KICAgIDM3 LCAgICA2MCwgICAgNzYsICAgIDM5LCAgICAxOSwgICAgNjcsICAgIDczLCAg ICAyMCwgICAgMjEsICAgIDIyLA0KICAgIDIzLCAgICAyNCwgICAgMjUsICAg IDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy LA0KICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMTks ICAgIDcwLCAgICA3MiwgICAgMjAsICAgIDIxLA0KICAgIDIyLCAgICAyMywg ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg MzAsICAgIDMxLA0KICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAz NiwgICAgMzcsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LA0KICAgIDI2 LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg ICAzMywgICAgMzQsICAgIDM1LA0KICAgIDM2LCAgICAzNywgICAgMjMsICAg IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw LA0KICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs ICAgIDM3LCAgICAyNCwgICAgMjUsICAgIDI2LA0KICAgIDI3LCAgICAyOCwg ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAg MzUsICAgIDM2LA0KICAgIDM3LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLA0KICAgIDM0 LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAyNywgICAgMjgsICAgIDI5LCAg ICAzMCwgICAgMzEsICAgIDMyLA0KICAgIDMzLCAgICAzNCwgICAgMzUsICAg IDM2LCAgICAzNywgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1 LA0KICAgIDM2LCAgICAzNywgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs ICAgIDM3LCAgICA3NywgICAgMTcNCn07DQoNCnN0YXRpYyBjb25zdCBzaG9y dCB5eWNoZWNrW10gPSB7ICAgICA0LA0KICAgICA1LCAgICAgNiwgICAgIDcs ICAgIDY0LCAgICA2NSwgICAgIDUsICAgICA1LCAgICAyNSwgICAgMjYsICAg IDI3LA0KICAgIDMyLCAgICA3MiwgICAgIDksICAgIDE4LCAgICAgMywgICAg IDQsICAgICA1LCAgICAyMiwgICAgMjMsICAgIDI0LA0KICAgIDI1LCAgICAy NiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg ICAgMzMsICAgIDM0LA0KICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDMyLCAg ICAyMywgICAgMjQsICAgIDQxLCAgICA0MiwgICAgNDMsICAgICA5LA0KICAg IDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAxMSwgICAgMTIsICAgIDEz LCAgICAxNCwgICAgMTUsICAgIDE2LA0KICAgIDE3LCAgICAxOCwgICAgMTks ICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAg IDI2LA0KICAgIDI3LCAgICAzMiwgICAgIDAsICAgIDMzLCAgICAgNywgICAg IDgsICAgIDcxLCAgICAxMCwgICAgMTEsICAgIDEyLA0KICAgIDEzLCAgICAx NCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg ICAgMjEsICAgIDIyLA0KICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg ICAyNywgICAgIDcsICAgIDMzLCAgICAzMywgICAgMTAsICAgIDExLA0KICAg IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4 LCAgICAxOSwgICAgMjAsICAgIDIxLA0KICAgIDIyLCAgICAyMywgICAgMjQs ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDEyLCAgICAxMywgICAgMTQsICAg IDE1LA0KICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LA0KICAgIDI2LCAgICAy NywgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg ICAgMTksICAgIDIwLA0KICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAg ICAyNSwgICAgMjYsICAgIDI3LCAgICAxNCwgICAgMTUsICAgIDE2LA0KICAg IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIz LCAgICAyNCwgICAgMjUsICAgIDI2LA0KICAgIDI3LCAgICAxNSwgICAgMTYs ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg IDIzLA0KICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAxNywgICAg MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLA0KICAgIDIzLCAgICAy NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjEsICAgIDIyLCAgICAyMywg ICAgMjQsICAgIDI1LA0KICAgIDI2LCAgICAyNywgICAgMjMsICAgIDI0LCAg ICAyNSwgICAgMjYsICAgIDI3LCAgICAgMCwgICAgIDkNCn07DQogDQojIDIg Ii91c3IvY3lnbnVzL2xhdGVzdC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxl Ig0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0K DQoNCg0KDQoNCg0KDQojIDUyICIvdXNyL2N5Z251cy9sYXRlc3QtOTQwMTAz L3NoYXJlL2Jpc29uLnNpbXBsZSINCg0KDQoNCiANCg0KDQoNCg0KIA0KDQoN Cg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQojIDg4ICIvdXNyL2N5 Z251cy9sYXRlc3QtOTQwMTAzL3NoYXJlL2Jpc29uLnNpbXBsZSINCg0KDQoN Cg0KDQoNCg0KDQojIDExMCAiL3Vzci9jeWdudXMvbGF0ZXN0LTk0MDEwMy9z aGFyZS9iaXNvbi5zaW1wbGUiDQoNCg0KIA0KDQoNCg0KaW50CXl5Y2hhcjsJ CQkgDQpZWVNUWVBFCXl5bHZhbDsJCQkgDQoJCQkJIA0KDQoNCg0KDQoNCg0K aW50IHl5bmVycnM7CQkJIA0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0K DQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KaW50IHl5cGFyc2UgKHZv aWQpOw0KDQoMDQoNCg0KIyAxOTMgIi91c3IvY3lnbnVzL2xhdGVzdC05NDAx MDMvc2hhcmUvYmlzb24uc2ltcGxlIg0KDQoMDQojIDE5NSAiL3Vzci9jeWdu dXMvbGF0ZXN0LTk0MDEwMy9zaGFyZS9iaXNvbi5zaW1wbGUiDQoNCg0KIA0K DQoNCg0KDQoNCiMgMjExICIvdXNyL2N5Z251cy9sYXRlc3QtOTQwMTAzL3No YXJlL2Jpc29uLnNpbXBsZSINCg0KDQoNCg0KDQppbnQNCnl5cGFyc2UoICkN CiAgICAgIA0Kew0KICByZWdpc3RlciBpbnQgeXlzdGF0ZTsNCiAgcmVnaXN0 ZXIgaW50IHl5bjsNCiAgcmVnaXN0ZXIgc2hvcnQgKnl5c3NwOw0KICByZWdp c3RlciBZWVNUWVBFICp5eXZzcDsNCiAgaW50IHl5ZXJyc3RhdHVzOwkgDQog IGludCB5eWNoYXIxID0gMDsJCSANCg0KICBzaG9ydAl5eXNzYVsyMDAgXTsJ IA0KICBZWVNUWVBFIHl5dnNhWzIwMCBdOwkgDQoNCiAgc2hvcnQgKnl5c3Mg PSB5eXNzYTsJCSANCiAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwkgDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KICBpbnQgeXlzdGFja3NpemUgPSAyMDAgOw0K DQoNCg0KDQoNCg0KDQoNCg0KDQogIFlZU1RZUEUgeXl2YWw7CQkgDQoJCQkJ IA0KCQkJCSANCg0KICBpbnQgeXlsZW47DQoNCg0KDQoNCg0KDQogIHl5c3Rh dGUgPSAwOw0KICB5eWVycnN0YXR1cyA9IDA7DQogIHl5bmVycnMgPSAwOw0K ICB5eWNoYXIgPSAtMiA7CQkgDQoNCiAgIA0KDQoNCg0KDQogIHl5c3NwID0g eXlzcyAtIDE7DQogIHl5dnNwID0geXl2czsNCg0KDQoNCg0KIA0KIA0KDQp5 eW5ld3N0YXRlOg0KDQogICorK3l5c3NwID0geXlzdGF0ZTsNCg0KICBpZiAo eXlzc3AgPj0geXlzcyArIHl5c3RhY2tzaXplIC0gMSkNCiAgICB7DQogICAg ICAgDQogICAgICAgDQogICAgICBZWVNUWVBFICp5eXZzMSA9IHl5dnM7DQog ICAgICBzaG9ydCAqeXlzczEgPSB5eXNzOw0KDQoNCg0KDQogICAgICAgDQog ICAgICBpbnQgc2l6ZSA9IHl5c3NwIC0geXlzcyArIDE7DQoNCiMgMzIzICIv dXNyL2N5Z251cy9sYXRlc3QtOTQwMTAzL3NoYXJlL2Jpc29uLnNpbXBsZSIN Cg0KICAgICAgIA0KICAgICAgaWYgKHl5c3RhY2tzaXplID49IDEwMDAwICkN Cgl7DQoJICB5eWVycm9yKCJwYXJzZXIgc3RhY2sgb3ZlcmZsb3ciKTsNCgkg IHJldHVybiAyOw0KCX0NCiAgICAgIHl5c3RhY2tzaXplICo9IDI7DQogICAg ICBpZiAoeXlzdGFja3NpemUgPiAxMDAwMCApDQoJeXlzdGFja3NpemUgPSAx MDAwMCA7DQogICAgICB5eXNzID0gKHNob3J0ICopIF9fYnVpbHRpbl9hbGxv Y2EgICh5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKnl5c3NwKSk7DQogICAgICBf X2J1aWx0aW5fbWVtY3B5KCAoY2hhciAqKXl5c3MgLCAgKGNoYXIgKil5eXNz MSAsICBzaXplICogc2l6ZW9mICgqeXlzc3ApICkgOw0KICAgICAgeXl2cyA9 IChZWVNUWVBFICopIF9fYnVpbHRpbl9hbGxvY2EgICh5eXN0YWNrc2l6ZSAq IHNpemVvZiAoKnl5dnNwKSk7DQogICAgICBfX2J1aWx0aW5fbWVtY3B5KCAo Y2hhciAqKXl5dnMgLCAgKGNoYXIgKil5eXZzMSAsICBzaXplICogc2l6ZW9m ICgqeXl2c3ApICkgOw0KDQoNCg0KDQoNCg0KICAgICAgeXlzc3AgPSB5eXNz ICsgc2l6ZSAtIDE7DQogICAgICB5eXZzcCA9IHl5dnMgKyBzaXplIC0gMTsN Cg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgIGlmICh5eXNzcCA+PSB5eXNzICsg eXlzdGFja3NpemUgLSAxKQ0KCXJldHVybigxKSA7DQogICAgfQ0KDQoNCg0K DQoNCg0KICBnb3RvIHl5YmFja3VwOw0KIHl5YmFja3VwOg0KDQogDQogDQog DQoNCiAgIA0KDQogIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsNCiAgaWYgKHl5 biA9PSAtMzI3NjggKQ0KICAgIGdvdG8geXlkZWZhdWx0Ow0KDQogICANCg0K ICAgDQoNCg0KICBpZiAoeXljaGFyID09IC0yICkNCiAgICB7DQoNCg0KDQoN CiAgICAgIHl5Y2hhciA9IHl5bGV4KCkgOw0KICAgIH0NCg0KICAgDQoNCiAg aWYgKHl5Y2hhciA8PSAwKQkJIA0KICAgIHsNCiAgICAgIHl5Y2hhcjEgPSAw Ow0KICAgICAgeXljaGFyID0gMCA7CQkgDQoNCg0KDQoNCg0KICAgIH0NCiAg ZWxzZQ0KICAgIHsNCiAgICAgIHl5Y2hhcjEgPSAoKHVuc2lnbmVkKSggeXlj aGFyICkgPD0gMjcwID8geXl0cmFuc2xhdGVbIHl5Y2hhciBdIDogNDMpIDsN Cg0KIyA0MTcgIi91c3IvY3lnbnVzL2xhdGVzdC05NDAxMDMvc2hhcmUvYmlz b24uc2ltcGxlIg0KDQogICAgfQ0KDQogIHl5biArPSB5eWNoYXIxOw0KICBp ZiAoeXluIDwgMCB8fCB5eW4gPiAxODkgIHx8IHl5Y2hlY2tbeXluXSAhPSB5 eWNoYXIxKQ0KICAgIGdvdG8geXlkZWZhdWx0Ow0KDQogIHl5biA9IHl5dGFi bGVbeXluXTsNCg0KICAgDQoNCg0KDQoNCg0KDQogIGlmICh5eW4gPCAwKQ0K ICAgIHsNCiAgICAgIGlmICh5eW4gPT0gLTMyNzY4ICkNCglnb3RvIHl5ZXJy bGFiOw0KICAgICAgeXluID0gLXl5bjsNCiAgICAgIGdvdG8geXlyZWR1Y2U7 DQogICAgfQ0KICBlbHNlIGlmICh5eW4gPT0gMCkNCiAgICBnb3RvIHl5ZXJy bGFiOw0KDQogIGlmICh5eW4gPT0gNzcgKQ0KICAgIHJldHVybigwKSA7DQoN CiAgIA0KDQoNCg0KDQoNCg0KICAgDQogIGlmICh5eWNoYXIgIT0gMCApDQog ICAgeXljaGFyID0gLTIgOw0KDQogICorK3l5dnNwID0geXlsdmFsOw0KDQoN Cg0KDQogICANCiAgaWYgKHl5ZXJyc3RhdHVzKSB5eWVycnN0YXR1cy0tOw0K DQogIHl5c3RhdGUgPSB5eW47DQogIGdvdG8geXluZXdzdGF0ZTsNCg0KIA0K eXlkZWZhdWx0Og0KDQogIHl5biA9IHl5ZGVmYWN0W3l5c3RhdGVdOw0KICBp ZiAoeXluID09IDApDQogICAgZ290byB5eWVycmxhYjsNCg0KIA0KeXlyZWR1 Y2U6DQogIHl5bGVuID0geXlyMlt5eW5dOw0KICBpZiAoeXlsZW4gPiAwKQ0K ICAgIHl5dmFsID0geXl2c3BbMS15eWxlbl07ICANCg0KIyA0OTQgIi91c3Iv Y3lnbnVzL2xhdGVzdC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxlIg0KDQoN Cg0KICBzd2l0Y2ggKHl5bikgew0KDQpjYXNlIDE6DQojIDI4MSAiY2V4cC55 Ig0KDQp7DQoJCSAgZXhwcmVzc2lvbl92YWx1ZSA9IHl5dnNwWzBdLmludGVn ZXIudmFsdWU7DQoNCg0KDQoJCTsNCiAgICBicmVhazt9DQpjYXNlIDM6DQoj IDI5MiAiY2V4cC55Ig0KDQp7IGlmIChwZWRhbnRpYykNCgkJCSAgICBwZWR3 YXJuICgiY29tbWEgb3BlcmF0b3IgaW4gb3BlcmFuZCBvZiBgI2lmJyIpOw0K CQkJICB5eXZhbC5pbnRlZ2VyID0geXl2c3BbMF0uaW50ZWdlcjsgOw0KICAg IGJyZWFrO30NCmNhc2UgNDoNCiMgMjk5ICJjZXhwLnkiDQoNCnsgeXl2YWwu aW50ZWdlci52YWx1ZSA9IC0geXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJ CSAgeXl2YWwuaW50ZWdlci5zaWduZWRwID0geXl2c3BbMF0uaW50ZWdlci5z aWduZWRwOw0KCQkJICBpZiAoKHl5dmFsLmludGVnZXIudmFsdWUgJiB5eXZz cFswXS5pbnRlZ2VyLnZhbHVlICYgeXl2YWwuaW50ZWdlci5zaWduZWRwKSA8 IDApDQoJCQkgICAgaW50ZWdlcl9vdmVyZmxvdyAoKTsgOw0KICAgIGJyZWFr O30NCmNhc2UgNToNCiMgMzA0ICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdl ci52YWx1ZSA9ICEgeXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJCSAgeXl2 YWwuaW50ZWdlci5zaWduZWRwID0gKH4wKSA7IDsNCiAgICBicmVhazt9DQpj YXNlIDY6DQojIDMwNyAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIgPSB5 eXZzcFswXS5pbnRlZ2VyOyA7DQogICAgYnJlYWs7fQ0KY2FzZSA3Og0KIyAz MDkgImNleHAueSINCg0KeyB5eXZhbC5pbnRlZ2VyLnZhbHVlID0gfiB5eXZz cFswXS5pbnRlZ2VyLnZhbHVlOw0KCQkJICB5eXZhbC5pbnRlZ2VyLnNpZ25l ZHAgPSB5eXZzcFswXS5pbnRlZ2VyLnNpZ25lZHA7IDsNCiAgICBicmVhazt9 DQpjYXNlIDg6DQojIDMxMiAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIu dmFsdWUgPSBjaGVja19hc3NlcnRpb24gKHl5dnNwWzBdLm5hbWUuYWRkcmVz cywgeXl2c3BbMF0ubmFtZS5sZW5ndGgsDQoJCQkJCQkgICAgICAwLCAoKHZv aWQgKiApIDApICk7DQoJCQkgIHl5dmFsLmludGVnZXIuc2lnbmVkcCA9ICh+ MCkgOyA7DQogICAgYnJlYWs7fQ0KY2FzZSA5Og0KIyAzMTYgImNleHAueSIN Cg0KeyBrZXl3b3JkX3BhcnNpbmcgPSAxOyA7DQogICAgYnJlYWs7fQ0KY2Fz ZSAxMDoNCiMgMzE4ICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdlci52YWx1 ZSA9IGNoZWNrX2Fzc2VydGlvbiAoeXl2c3BbLTRdLm5hbWUuYWRkcmVzcywg eXl2c3BbLTRdLm5hbWUubGVuZ3RoLA0KCQkJCQkJICAgICAgMSwgeXl2c3Bb LTFdLmtleXdvcmRzKTsNCgkJCSAga2V5d29yZF9wYXJzaW5nID0gMDsNCgkJ CSAgeXl2YWwuaW50ZWdlci5zaWduZWRwID0gKH4wKSA7IDsNCiAgICBicmVh azt9DQpjYXNlIDExOg0KIyAzMjMgImNleHAueSINCg0KeyB5eXZhbC5pbnRl Z2VyID0geXl2c3BbLTFdLmludGVnZXI7IDsNCiAgICBicmVhazt9DQpjYXNl IDEyOg0KIyAzMjggImNleHAueSINCg0KeyB5eXZhbC5pbnRlZ2VyLnNpZ25l ZHAgPSB5eXZzcFstMl0uaW50ZWdlci5zaWduZWRwICYgeXl2c3BbMF0uaW50 ZWdlci5zaWduZWRwOw0KCQkJICBpZiAoeXl2YWwuaW50ZWdlci5zaWduZWRw KQ0KCQkJICAgIHsNCgkJCSAgICAgIHl5dmFsLmludGVnZXIudmFsdWUgPSB5 eXZzcFstMl0uaW50ZWdlci52YWx1ZSAqIHl5dnNwWzBdLmludGVnZXIudmFs dWU7DQoJCQkgICAgICBpZiAoeXl2c3BbLTJdLmludGVnZXIudmFsdWUNCgkJ CQkgICYmICh5eXZhbC5pbnRlZ2VyLnZhbHVlIC8geXl2c3BbLTJdLmludGVn ZXIudmFsdWUgIT0geXl2c3BbMF0uaW50ZWdlci52YWx1ZQ0KCQkJCSAgICAg IHx8ICh5eXZhbC5pbnRlZ2VyLnZhbHVlICYgeXl2c3BbLTJdLmludGVnZXIu dmFsdWUgJiB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlKSA8IDApKQ0KCQkJCWlu dGVnZXJfb3ZlcmZsb3cgKCk7DQoJCQkgICAgfQ0KCQkJICBlbHNlDQoJCQkg ICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9ICgodW5zaWduZWQgaW50ICApIHl5 dnNwWy0yXS5pbnRlZ2VyLnZhbHVlDQoJCQkJCSogeXl2c3BbMF0uaW50ZWdl ci52YWx1ZSk7IDsNCiAgICBicmVhazt9DQpjYXNlIDEzOg0KIyAzNDEgImNl eHAueSINCg0KeyBpZiAoeXl2c3BbMF0uaW50ZWdlci52YWx1ZSA9PSAwKQ0K CQkJICAgIHsNCgkJCSAgICAgIGlmICghc2tpcF9ldmFsdWF0aW9uKQ0KCQkJ CWVycm9yICgiZGl2aXNpb24gYnkgemVybyBpbiAjaWYiKTsNCgkJCSAgICAg IHl5dnNwWzBdLmludGVnZXIudmFsdWUgPSAxOw0KCQkJICAgIH0NCgkJCSAg eXl2YWwuaW50ZWdlci5zaWduZWRwID0geXl2c3BbLTJdLmludGVnZXIuc2ln bmVkcCAmIHl5dnNwWzBdLmludGVnZXIuc2lnbmVkcDsNCgkJCSAgaWYgKHl5 dmFsLmludGVnZXIuc2lnbmVkcCkNCgkJCSAgICB7DQoJCQkgICAgICB5eXZh bC5pbnRlZ2VyLnZhbHVlID0geXl2c3BbLTJdLmludGVnZXIudmFsdWUgLyB5 eXZzcFswXS5pbnRlZ2VyLnZhbHVlOw0KCQkJICAgICAgaWYgKCh5eXZhbC5p bnRlZ2VyLnZhbHVlICYgeXl2c3BbLTJdLmludGVnZXIudmFsdWUgJiB5eXZz cFswXS5pbnRlZ2VyLnZhbHVlKSA8IDApDQoJCQkJaW50ZWdlcl9vdmVyZmxv dyAoKTsNCgkJCSAgICB9DQoJCQkgIGVsc2UNCgkJCSAgICB5eXZhbC5pbnRl Z2VyLnZhbHVlID0gKCh1bnNpZ25lZCBpbnQgICkgeXl2c3BbLTJdLmludGVn ZXIudmFsdWUNCgkJCQkJLyB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlKTsgOw0K ICAgIGJyZWFrO30NCmNhc2UgMTQ6DQojIDM1OCAiY2V4cC55Ig0KDQp7IGlm ICh5eXZzcFswXS5pbnRlZ2VyLnZhbHVlID09IDApDQoJCQkgICAgew0KCQkJ ICAgICAgaWYgKCFza2lwX2V2YWx1YXRpb24pDQoJCQkJZXJyb3IgKCJkaXZp c2lvbiBieSB6ZXJvIGluICNpZiIpOw0KCQkJICAgICAgeXl2c3BbMF0uaW50 ZWdlci52YWx1ZSA9IDE7DQoJCQkgICAgfQ0KCQkJICB5eXZhbC5pbnRlZ2Vy LnNpZ25lZHAgPSB5eXZzcFstMl0uaW50ZWdlci5zaWduZWRwICYgeXl2c3Bb MF0uaW50ZWdlci5zaWduZWRwOw0KCQkJICBpZiAoeXl2YWwuaW50ZWdlci5z aWduZWRwKQ0KCQkJICAgIHl5dmFsLmludGVnZXIudmFsdWUgPSB5eXZzcFst Ml0uaW50ZWdlci52YWx1ZSAlIHl5dnNwWzBdLmludGVnZXIudmFsdWU7DQoJ CQkgIGVsc2UNCgkJCSAgICB5eXZhbC5pbnRlZ2VyLnZhbHVlID0gKCh1bnNp Z25lZCBpbnQgICkgeXl2c3BbLTJdLmludGVnZXIudmFsdWUNCgkJCQkJJSB5 eXZzcFswXS5pbnRlZ2VyLnZhbHVlKTsgOw0KICAgIGJyZWFrO30NCmNhc2Ug MTU6DQojIDM3MSAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIudmFsdWUg PSB5eXZzcFstMl0uaW50ZWdlci52YWx1ZSArIHl5dnNwWzBdLmludGVnZXIu dmFsdWU7DQoJCQkgIHl5dmFsLmludGVnZXIuc2lnbmVkcCA9IHl5dnNwWy0y XS5pbnRlZ2VyLnNpZ25lZHAgJiB5eXZzcFswXS5pbnRlZ2VyLnNpZ25lZHA7 DQoJCQkgIGlmICgoKH4oKCB5eXZzcFstMl0uaW50ZWdlci52YWx1ZSApIF4g KCAgeXl2c3BbMF0uaW50ZWdlci52YWx1ZSApKSAmICgoIHl5dnNwWy0yXS5p bnRlZ2VyLnZhbHVlICkgXiAoIA0KCQkJCQkJIHl5dmFsLmludGVnZXIudmFs dWUgKSkgJiAoICB5eXZhbC5pbnRlZ2VyLnNpZ25lZHAgKSkgPCAwKSApDQoJ CQkgICAgaW50ZWdlcl9vdmVyZmxvdyAoKTsgOw0KICAgIGJyZWFrO30NCmNh c2UgMTY6DQojIDM3NyAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIudmFs dWUgPSB5eXZzcFstMl0uaW50ZWdlci52YWx1ZSAtIHl5dnNwWzBdLmludGVn ZXIudmFsdWU7DQoJCQkgIHl5dmFsLmludGVnZXIuc2lnbmVkcCA9IHl5dnNw Wy0yXS5pbnRlZ2VyLnNpZ25lZHAgJiB5eXZzcFswXS5pbnRlZ2VyLnNpZ25l ZHA7DQoJCQkgIGlmICgoKH4oKCB5eXZhbC5pbnRlZ2VyLnZhbHVlICkgXiAo ICB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlICkpICYgKCggeXl2YWwuaW50ZWdl ci52YWx1ZSApIF4gKCANCgkJCQkJCSB5eXZzcFstMl0uaW50ZWdlci52YWx1 ZSApKSAmICggIHl5dmFsLmludGVnZXIuc2lnbmVkcCApKSA8IDApICkNCgkJ CSAgICBpbnRlZ2VyX292ZXJmbG93ICgpOyA7DQogICAgYnJlYWs7fQ0KY2Fz ZSAxNzoNCiMgMzgzICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdlci5zaWdu ZWRwID0geXl2c3BbLTJdLmludGVnZXIuc2lnbmVkcDsNCgkJCSAgaWYgKCh5 eXZzcFswXS5pbnRlZ2VyLnZhbHVlICYgeXl2c3BbMF0uaW50ZWdlci5zaWdu ZWRwKSA8IDApDQoJCQkgICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9IHJpZ2h0 X3NoaWZ0ICgmeXl2c3BbLTJdLmludGVnZXIsIC15eXZzcFswXS5pbnRlZ2Vy LnZhbHVlKTsNCgkJCSAgZWxzZQ0KCQkJICAgIHl5dmFsLmludGVnZXIudmFs dWUgPSBsZWZ0X3NoaWZ0ICgmeXl2c3BbLTJdLmludGVnZXIsIHl5dnNwWzBd LmludGVnZXIudmFsdWUpOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAxODoNCiMg Mzg5ICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdlci5zaWduZWRwID0geXl2 c3BbLTJdLmludGVnZXIuc2lnbmVkcDsNCgkJCSAgaWYgKCh5eXZzcFswXS5p bnRlZ2VyLnZhbHVlICYgeXl2c3BbMF0uaW50ZWdlci5zaWduZWRwKSA8IDAp DQoJCQkgICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9IGxlZnRfc2hpZnQgKCZ5 eXZzcFstMl0uaW50ZWdlciwgLXl5dnNwWzBdLmludGVnZXIudmFsdWUpOw0K CQkJICBlbHNlDQoJCQkgICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9IHJpZ2h0 X3NoaWZ0ICgmeXl2c3BbLTJdLmludGVnZXIsIHl5dnNwWzBdLmludGVnZXIu dmFsdWUpOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAxOToNCiMgMzk1ICJjZXhw LnkiDQoNCnsgeXl2YWwuaW50ZWdlci52YWx1ZSA9ICh5eXZzcFstMl0uaW50 ZWdlci52YWx1ZSA9PSB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlKTsNCgkJCSAg eXl2YWwuaW50ZWdlci5zaWduZWRwID0gKH4wKSA7IDsNCiAgICBicmVhazt9 DQpjYXNlIDIwOg0KIyAzOTggImNleHAueSINCg0KeyB5eXZhbC5pbnRlZ2Vy LnZhbHVlID0gKHl5dnNwWy0yXS5pbnRlZ2VyLnZhbHVlICE9IHl5dnNwWzBd LmludGVnZXIudmFsdWUpOw0KCQkJICB5eXZhbC5pbnRlZ2VyLnNpZ25lZHAg PSAofjApIDsgOw0KICAgIGJyZWFrO30NCmNhc2UgMjE6DQojIDQwMSAiY2V4 cC55Ig0KDQp7IHl5dmFsLmludGVnZXIuc2lnbmVkcCA9ICh+MCkgOw0KCQkJ ICBpZiAoeXl2c3BbLTJdLmludGVnZXIuc2lnbmVkcCAmIHl5dnNwWzBdLmlu dGVnZXIuc2lnbmVkcCkNCgkJCSAgICB5eXZhbC5pbnRlZ2VyLnZhbHVlID0g eXl2c3BbLTJdLmludGVnZXIudmFsdWUgPD0geXl2c3BbMF0uaW50ZWdlci52 YWx1ZTsNCgkJCSAgZWxzZQ0KCQkJICAgIHl5dmFsLmludGVnZXIudmFsdWUg PSAoKHVuc2lnbmVkIGludCAgKSB5eXZzcFstMl0uaW50ZWdlci52YWx1ZQ0K CQkJCQk8PSB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlKTsgOw0KICAgIGJyZWFr O30NCmNhc2UgMjI6DQojIDQwOCAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVn ZXIuc2lnbmVkcCA9ICh+MCkgOw0KCQkJICBpZiAoeXl2c3BbLTJdLmludGVn ZXIuc2lnbmVkcCAmIHl5dnNwWzBdLmludGVnZXIuc2lnbmVkcCkNCgkJCSAg ICB5eXZhbC5pbnRlZ2VyLnZhbHVlID0geXl2c3BbLTJdLmludGVnZXIudmFs dWUgPj0geXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJCSAgZWxzZQ0KCQkJ ICAgIHl5dmFsLmludGVnZXIudmFsdWUgPSAoKHVuc2lnbmVkIGludCAgKSB5 eXZzcFstMl0uaW50ZWdlci52YWx1ZQ0KCQkJCQk+PSB5eXZzcFswXS5pbnRl Z2VyLnZhbHVlKTsgOw0KICAgIGJyZWFrO30NCmNhc2UgMjM6DQojIDQxNSAi Y2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIuc2lnbmVkcCA9ICh+MCkgOw0K CQkJICBpZiAoeXl2c3BbLTJdLmludGVnZXIuc2lnbmVkcCAmIHl5dnNwWzBd LmludGVnZXIuc2lnbmVkcCkNCgkJCSAgICB5eXZhbC5pbnRlZ2VyLnZhbHVl ID0geXl2c3BbLTJdLmludGVnZXIudmFsdWUgPCB5eXZzcFswXS5pbnRlZ2Vy LnZhbHVlOw0KCQkJICBlbHNlDQoJCQkgICAgeXl2YWwuaW50ZWdlci52YWx1 ZSA9ICgodW5zaWduZWQgaW50ICApIHl5dnNwWy0yXS5pbnRlZ2VyLnZhbHVl DQoJCQkJCTwgeXl2c3BbMF0uaW50ZWdlci52YWx1ZSk7IDsNCiAgICBicmVh azt9DQpjYXNlIDI0Og0KIyA0MjIgImNleHAueSINCg0KeyB5eXZhbC5pbnRl Z2VyLnNpZ25lZHAgPSAofjApIDsNCgkJCSAgaWYgKHl5dnNwWy0yXS5pbnRl Z2VyLnNpZ25lZHAgJiB5eXZzcFswXS5pbnRlZ2VyLnNpZ25lZHApDQoJCQkg ICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9IHl5dnNwWy0yXS5pbnRlZ2VyLnZh bHVlID4geXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJCSAgZWxzZQ0KCQkJ ICAgIHl5dmFsLmludGVnZXIudmFsdWUgPSAoKHVuc2lnbmVkIGludCAgKSB5 eXZzcFstMl0uaW50ZWdlci52YWx1ZQ0KCQkJCQk+IHl5dnNwWzBdLmludGVn ZXIudmFsdWUpOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAyNToNCiMgNDI5ICJj ZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdlci52YWx1ZSA9IHl5dnNwWy0yXS5p bnRlZ2VyLnZhbHVlICYgeXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJCSAg eXl2YWwuaW50ZWdlci5zaWduZWRwID0geXl2c3BbLTJdLmludGVnZXIuc2ln bmVkcCAmIHl5dnNwWzBdLmludGVnZXIuc2lnbmVkcDsgOw0KICAgIGJyZWFr O30NCmNhc2UgMjY6DQojIDQzMiAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVn ZXIudmFsdWUgPSB5eXZzcFstMl0uaW50ZWdlci52YWx1ZSBeIHl5dnNwWzBd LmludGVnZXIudmFsdWU7DQoJCQkgIHl5dmFsLmludGVnZXIuc2lnbmVkcCA9 IHl5dnNwWy0yXS5pbnRlZ2VyLnNpZ25lZHAgJiB5eXZzcFswXS5pbnRlZ2Vy LnNpZ25lZHA7IDsNCiAgICBicmVhazt9DQpjYXNlIDI3Og0KIyA0MzUgImNl eHAueSINCg0KeyB5eXZhbC5pbnRlZ2VyLnZhbHVlID0geXl2c3BbLTJdLmlu dGVnZXIudmFsdWUgfCB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlOw0KCQkJICB5 eXZhbC5pbnRlZ2VyLnNpZ25lZHAgPSB5eXZzcFstMl0uaW50ZWdlci5zaWdu ZWRwICYgeXl2c3BbMF0uaW50ZWdlci5zaWduZWRwOyA7DQogICAgYnJlYWs7 fQ0KY2FzZSAyODoNCiMgNDM4ICJjZXhwLnkiDQoNCnsgc2tpcF9ldmFsdWF0 aW9uICs9ICF5eXZzcFstMV0uaW50ZWdlci52YWx1ZTsgOw0KICAgIGJyZWFr O30NCmNhc2UgMjk6DQojIDQ0MCAiY2V4cC55Ig0KDQp7IHNraXBfZXZhbHVh dGlvbiAtPSAheXl2c3BbLTNdLmludGVnZXIudmFsdWU7DQoJCQkgIHl5dmFs LmludGVnZXIudmFsdWUgPSAoeXl2c3BbLTNdLmludGVnZXIudmFsdWUgJiYg eXl2c3BbMF0uaW50ZWdlci52YWx1ZSk7DQoJCQkgIHl5dmFsLmludGVnZXIu c2lnbmVkcCA9ICh+MCkgOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAzMDoNCiMg NDQ0ICJjZXhwLnkiDQoNCnsgc2tpcF9ldmFsdWF0aW9uICs9ICEheXl2c3Bb LTFdLmludGVnZXIudmFsdWU7IDsNCiAgICBicmVhazt9DQpjYXNlIDMxOg0K IyA0NDYgImNleHAueSINCg0KeyBza2lwX2V2YWx1YXRpb24gLT0gISF5eXZz cFstM10uaW50ZWdlci52YWx1ZTsNCgkJCSAgeXl2YWwuaW50ZWdlci52YWx1 ZSA9ICh5eXZzcFstM10uaW50ZWdlci52YWx1ZSB8fCB5eXZzcFswXS5pbnRl Z2VyLnZhbHVlKTsNCgkJCSAgeXl2YWwuaW50ZWdlci5zaWduZWRwID0gKH4w KSA7IDsNCiAgICBicmVhazt9DQpjYXNlIDMyOg0KIyA0NTAgImNleHAueSIN Cg0KeyBza2lwX2V2YWx1YXRpb24gKz0gIXl5dnNwWy0xXS5pbnRlZ2VyLnZh bHVlOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAzMzoNCiMgNDUyICJjZXhwLnki DQoNCnsgc2tpcF9ldmFsdWF0aW9uICs9ICEheXl2c3BbLTRdLmludGVnZXIu dmFsdWUgLSAheXl2c3BbLTRdLmludGVnZXIudmFsdWU7IDsNCiAgICBicmVh azt9DQpjYXNlIDM0Og0KIyA0NTQgImNleHAueSINCg0KeyBza2lwX2V2YWx1 YXRpb24gLT0gISF5eXZzcFstNl0uaW50ZWdlci52YWx1ZTsNCgkJCSAgeXl2 YWwuaW50ZWdlci52YWx1ZSA9IHl5dnNwWy02XS5pbnRlZ2VyLnZhbHVlID8g eXl2c3BbLTNdLmludGVnZXIudmFsdWUgOiB5eXZzcFswXS5pbnRlZ2VyLnZh bHVlOw0KCQkJICB5eXZhbC5pbnRlZ2VyLnNpZ25lZHAgPSB5eXZzcFstM10u aW50ZWdlci5zaWduZWRwICYgeXl2c3BbMF0uaW50ZWdlci5zaWduZWRwOyA7 DQogICAgYnJlYWs7fQ0KY2FzZSAzNToNCiMgNDU4ICJjZXhwLnkiDQoNCnsg eXl2YWwuaW50ZWdlciA9IHl5bHZhbC5pbnRlZ2VyOyA7DQogICAgYnJlYWs7 fQ0KY2FzZSAzNjoNCiMgNDYwICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdl ciA9IHl5bHZhbC5pbnRlZ2VyOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAzNzoN CiMgNDYyICJjZXhwLnkiDQoNCnsgaWYgKHdhcm5fdW5kZWYgJiYgIXNraXBf ZXZhbHVhdGlvbikNCgkJCSAgICB3YXJuaW5nICgiYCUuKnMnIGlzIG5vdCBk ZWZpbmVkIiwNCgkJCQkgICAgIHl5dnNwWzBdLm5hbWUubGVuZ3RoLCB5eXZz cFswXS5uYW1lLmFkZHJlc3MpOw0KCQkJICB5eXZhbC5pbnRlZ2VyLnZhbHVl ID0gMDsNCgkJCSAgeXl2YWwuaW50ZWdlci5zaWduZWRwID0gKH4wKSA7IDsN CiAgICBicmVhazt9DQpjYXNlIDM4Og0KIyA0NzAgImNleHAueSINCg0KeyB5 eXZhbC5rZXl3b3JkcyA9IDA7IDsNCiAgICBicmVhazt9DQpjYXNlIDM5Og0K IyA0NzIgImNleHAueSINCg0KeyBzdHJ1Y3QgYXJnbGlzdCAqdGVtcDsNCgkJ CSAgeXl2YWwua2V5d29yZHMgPSAoc3RydWN0IGFyZ2xpc3QgKikgeG1hbGxv YyAoc2l6ZW9mIChzdHJ1Y3QgYXJnbGlzdCkpOw0KCQkJICB5eXZhbC5rZXl3 b3Jkcy0+bmV4dCA9IHl5dnNwWy0yXS5rZXl3b3JkczsNCgkJCSAgeXl2YWwu a2V5d29yZHMtPm5hbWUgPSAoVV9DSEFSICopICIoIjsNCgkJCSAgeXl2YWwu a2V5d29yZHMtPmxlbmd0aCA9IDE7DQoJCQkgIHRlbXAgPSB5eXZhbC5rZXl3 b3JkczsNCgkJCSAgd2hpbGUgKHRlbXAgIT0gMCAmJiB0ZW1wLT5uZXh0ICE9 IDApDQoJCQkgICAgdGVtcCA9IHRlbXAtPm5leHQ7DQoJCQkgIHRlbXAtPm5l eHQgPSAoc3RydWN0IGFyZ2xpc3QgKikgeG1hbGxvYyAoc2l6ZW9mIChzdHJ1 Y3QgYXJnbGlzdCkpOw0KCQkJICB0ZW1wLT5uZXh0LT5uZXh0ID0geXl2c3Bb MF0ua2V5d29yZHM7DQoJCQkgIHRlbXAtPm5leHQtPm5hbWUgPSAoVV9DSEFS ICopICIpIjsNCgkJCSAgdGVtcC0+bmV4dC0+bGVuZ3RoID0gMTsgOw0KICAg IGJyZWFrO30NCmNhc2UgNDA6DQojIDQ4NSAiY2V4cC55Ig0KDQp7IHl5dmFs LmtleXdvcmRzID0gKHN0cnVjdCBhcmdsaXN0ICopIHhtYWxsb2MgKHNpemVv ZiAoc3RydWN0IGFyZ2xpc3QpKTsNCgkJCSAgeXl2YWwua2V5d29yZHMtPm5h bWUgPSB5eXZzcFstMV0ubmFtZS5hZGRyZXNzOw0KCQkJICB5eXZhbC5rZXl3 b3Jkcy0+bGVuZ3RoID0geXl2c3BbLTFdLm5hbWUubGVuZ3RoOw0KCQkJICB5 eXZhbC5rZXl3b3Jkcy0+bmV4dCA9IHl5dnNwWzBdLmtleXdvcmRzOyA7DQog ICAgYnJlYWs7fQ0KfQ0KICAgIA0KIyA0OTcgIi91c3IvY3lnbnVzL2xhdGVz dC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxlIg0KDQoMDQogIHl5dnNwIC09 IHl5bGVuOw0KICB5eXNzcCAtPSB5eWxlbjsNCg0KDQoNCg0KIyA1MTQgIi91 c3IvY3lnbnVzL2xhdGVzdC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxlIg0K DQoNCiAgKisreXl2c3AgPSB5eXZhbDsNCg0KIyA1MzMgIi91c3IvY3lnbnVz L2xhdGVzdC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxlIg0KDQoNCiAgIA0K DQoNCg0KDQogIHl5biA9IHl5cjFbeXluXTsNCg0KICB5eXN0YXRlID0geXlw Z290b1t5eW4gLSAzNCBdICsgKnl5c3NwOw0KICBpZiAoeXlzdGF0ZSA+PSAw ICYmIHl5c3RhdGUgPD0gMTg5ICAmJiB5eWNoZWNrW3l5c3RhdGVdID09ICp5 eXNzcCkNCiAgICB5eXN0YXRlID0geXl0YWJsZVt5eXN0YXRlXTsNCiAgZWxz ZQ0KICAgIHl5c3RhdGUgPSB5eWRlZmdvdG9beXluIC0gMzQgXTsNCg0KICBn b3RvIHl5bmV3c3RhdGU7DQoNCnl5ZXJybGFiOiAgICANCg0KICBpZiAoISB5 eWVycnN0YXR1cykNCiAgICAgDQogICAgew0KICAgICAgKyt5eW5lcnJzOw0K DQojIDU5NyAiL3Vzci9jeWdudXMvbGF0ZXN0LTk0MDEwMy9zaGFyZS9iaXNv bi5zaW1wbGUiDQoNCgl5eWVycm9yKCJwYXJzZSBlcnJvciIpOw0KICAgIH0N Cg0KICBnb3RvIHl5ZXJybGFiMTsNCnl5ZXJybGFiMTogICAgDQoNCiAgaWYg KHl5ZXJyc3RhdHVzID09IDMpDQogICAgew0KICAgICAgIA0KDQogICAgICAg DQogICAgICBpZiAoeXljaGFyID09IDAgKQ0KCXJldHVybigxKSA7DQoNCg0K DQoNCg0KDQogICAgICB5eWNoYXIgPSAtMiA7DQogICAgfQ0KDQogICANCg0K DQogIHl5ZXJyc3RhdHVzID0gMzsJCSANCg0KICBnb3RvIHl5ZXJyaGFuZGxl Ow0KDQp5eWVycmRlZmF1bHQ6ICAgDQoNCg0KDQoNCg0KDQoNCg0KeXllcnJw b3A6ICAgIA0KDQogIGlmICh5eXNzcCA9PSB5eXNzKSByZXR1cm4oMSkgOw0K ICB5eXZzcC0tOw0KICB5eXN0YXRlID0gKi0teXlzc3A7DQoNCg0KDQoNCiMg NjU0ICIvdXNyL2N5Z251cy9sYXRlc3QtOTQwMTAzL3NoYXJlL2Jpc29uLnNp bXBsZSINCg0KDQp5eWVycmhhbmRsZToNCg0KICB5eW4gPSB5eXBhY3RbeXlz dGF0ZV07DQogIGlmICh5eW4gPT0gLTMyNzY4ICkNCiAgICBnb3RvIHl5ZXJy ZGVmYXVsdDsNCg0KICB5eW4gKz0gMSA7DQogIGlmICh5eW4gPCAwIHx8IHl5 biA+IDE4OSAgfHwgeXljaGVja1t5eW5dICE9IDEgKQ0KICAgIGdvdG8geXll cnJkZWZhdWx0Ow0KDQogIHl5biA9IHl5dGFibGVbeXluXTsNCiAgaWYgKHl5 biA8IDApDQogICAgew0KICAgICAgaWYgKHl5biA9PSAtMzI3NjggKQ0KCWdv dG8geXllcnJwb3A7DQogICAgICB5eW4gPSAteXluOw0KICAgICAgZ290byB5 eXJlZHVjZTsNCiAgICB9DQogIGVsc2UgaWYgKHl5biA9PSAwKQ0KICAgIGdv dG8geXllcnJwb3A7DQoNCiAgaWYgKHl5biA9PSA3NyApDQogICAgcmV0dXJu KDApIDsNCg0KDQoNCg0KDQoNCiAgKisreXl2c3AgPSB5eWx2YWw7DQoNCg0K DQoNCiAgeXlzdGF0ZSA9IHl5bjsNCiAgZ290byB5eW5ld3N0YXRlOw0KfQ0K IyA0OTAgImNleHAueSINCg0KDQoMDQogDQoNCg0Kc3RhdGljIGNoYXIgKmxl eHB0cjsNCg0KIA0KDQoNCg0KIA0KDQpzdGF0aWMgaW50DQpwYXJzZV9udW1i ZXIgKG9sZW4pDQogICAgIGludCBvbGVuOw0Kew0KICByZWdpc3RlciBjaGFy ICpwID0gbGV4cHRyOw0KICByZWdpc3RlciBpbnQgYzsNCiAgcmVnaXN0ZXIg dW5zaWduZWQgaW50ICAgbiA9IDAsIG5kLCBtYXhfb3Zlcl9iYXNlOw0KICBy ZWdpc3RlciBpbnQgYmFzZSA9IDEwOw0KICByZWdpc3RlciBpbnQgbGVuID0g b2xlbjsNCiAgcmVnaXN0ZXIgaW50IG92ZXJmbG93ID0gMDsNCiAgcmVnaXN0 ZXIgaW50IGRpZ2l0LCBsYXJnZXN0X2RpZ2l0ID0gMDsNCiAgaW50IHNwZWNf bG9uZyA9IDA7DQoNCiAgeXlsdmFsLmludGVnZXIuc2lnbmVkcCA9ICh+MCkg Ow0KDQogIGlmICgqcCA9PSAnMCcpIHsNCiAgICBiYXNlID0gODsNCiAgICBp ZiAobGVuID49IDMgJiYgKHBbMV0gPT0gJ3gnIHx8IHBbMV0gPT0gJ1gnKSkg ew0KICAgICAgcCArPSAyOw0KICAgICAgYmFzZSA9IDE2Ow0KICAgICAgbGVu IC09IDI7DQogICAgfQ0KICB9DQoNCiAgbWF4X292ZXJfYmFzZSA9ICh1bnNp Z25lZCBpbnQgICkgLTEgLyBiYXNlOw0KDQogIGZvciAoOyBsZW4gPiAwOyBs ZW4tLSkgew0KICAgIGMgPSAqcCsrOw0KDQogICAgaWYgKGMgPj0gJzAnICYm IGMgPD0gJzknKQ0KICAgICAgZGlnaXQgPSBjIC0gJzAnOw0KICAgIGVsc2Ug aWYgKGJhc2UgPT0gMTYgJiYgYyA+PSAnYScgJiYgYyA8PSAnZicpDQogICAg ICBkaWdpdCA9IGMgLSAnYScgKyAxMDsNCiAgICBlbHNlIGlmIChiYXNlID09 IDE2ICYmIGMgPj0gJ0EnICYmIGMgPD0gJ0YnKQ0KICAgICAgZGlnaXQgPSBj IC0gJ0EnICsgMTA7DQogICAgZWxzZSB7DQogICAgICAgDQogICAgICB3aGls ZSAoMSkgew0KCWlmIChjID09ICdsJyB8fCBjID09ICdMJykNCgkgIHsNCgkg ICAgaWYgKCFwZWRhbnRpYyA8IHNwZWNfbG9uZykNCgkgICAgICB5eWVycm9y ICgidG9vIG1hbnkgYGwncyBpbiBpbnRlZ2VyIGNvbnN0YW50Iik7DQoJICAg IHNwZWNfbG9uZysrOw0KCSAgfQ0KCWVsc2UgaWYgKGMgPT0gJ3UnIHx8IGMg PT0gJ1UnKQ0KCSAgew0KCSAgICBpZiAoISB5eWx2YWwuaW50ZWdlci5zaWdu ZWRwKQ0KCSAgICAgIHl5ZXJyb3IgKCJ0d28gYHUncyBpbiBpbnRlZ2VyIGNv bnN0YW50Iik7DQoJICAgIHl5bHZhbC5pbnRlZ2VyLnNpZ25lZHAgPSAwIDsN CgkgIH0NCgllbHNlIHsNCgkgIGlmIChjID09ICcuJyB8fCBjID09ICdlJyB8 fCBjID09ICdFJyB8fCBjID09ICdwJyB8fCBjID09ICdQJykNCgkgICAgeXll cnJvciAoIkZsb2F0aW5nIHBvaW50IG51bWJlcnMgbm90IGFsbG93ZWQgaW4g I2lmIGV4cHJlc3Npb25zIik7DQoJICBlbHNlIHsNCgkgICAgY2hhciAqYnVm ID0gKGNoYXIgKikgX19idWlsdGluX2FsbG9jYSAgKHAgLSBsZXhwdHIgKyA0 MCk7DQoJICAgIHNwcmludGYgKGJ1ZiwgIm1pc3Npbmcgd2hpdGUgc3BhY2Ug YWZ0ZXIgbnVtYmVyIGAlLipzJyIsDQoJCSAgICAgKGludCkgKHAgLSBsZXhw dHIgLSAxKSwgbGV4cHRyKTsNCgkgICAgeXllcnJvciAoYnVmKTsNCgkgIH0N Cgl9DQoNCglpZiAoLS1sZW4gPT0gMCkNCgkgIGJyZWFrOw0KCWMgPSAqcCsr Ow0KICAgICAgfQ0KICAgICAgIA0KICAgICAgYnJlYWs7DQogICAgfQ0KICAg IGlmIChsYXJnZXN0X2RpZ2l0IDwgZGlnaXQpDQogICAgICBsYXJnZXN0X2Rp Z2l0ID0gZGlnaXQ7DQogICAgbmQgPSBuICogYmFzZSArIGRpZ2l0Ow0KICAg IG92ZXJmbG93IHw9IChtYXhfb3Zlcl9iYXNlIDwgbikgfCAobmQgPCBuKTsN CiAgICBuID0gbmQ7DQogIH0NCg0KICBpZiAoYmFzZSA8PSBsYXJnZXN0X2Rp Z2l0KQ0KICAgIHBlZHdhcm4gKCJpbnRlZ2VyIGNvbnN0YW50IGNvbnRhaW5z IGRpZ2l0cyBiZXlvbmQgdGhlIHJhZGl4Iik7DQoNCiAgaWYgKG92ZXJmbG93 KQ0KICAgIHBlZHdhcm4gKCJpbnRlZ2VyIGNvbnN0YW50IG91dCBvZiByYW5n ZSIpOw0KDQogICANCiAgaWYgKCgoaW50ICkgbiAmIHl5bHZhbC5pbnRlZ2Vy LnNpZ25lZHApIDwgMCkNCiAgICB7DQogICAgICBpZiAoYmFzZSA9PSAxMCkN Cgl3YXJuaW5nICgiaW50ZWdlciBjb25zdGFudCBpcyBzbyBsYXJnZSB0aGF0 IGl0IGlzIHVuc2lnbmVkIik7DQogICAgICB5eWx2YWwuaW50ZWdlci5zaWdu ZWRwID0gMCA7DQogICAgfQ0KDQogIGxleHB0ciA9IHA7DQogIHl5bHZhbC5p bnRlZ2VyLnZhbHVlID0gbjsNCiAgcmV0dXJuIDI1OCA7DQp9DQoNCnN0cnVj dCB0b2tlbiB7DQogIGNoYXIgKm9wZXJhdG9yOw0KICBpbnQgdG9rZW47DQp9 Ow0KDQpzdGF0aWMgc3RydWN0IHRva2VuIHRva2VudGFiMltdID0gew0KICB7 IiYmIiwgMjYzIH0sDQogIHsifHwiLCAyNjIgfSwNCiAgeyI8PCIsIDI2OCB9 LA0KICB7Ij4+IiwgMjY5IH0sDQogIHsiPT0iLCAyNjQgfSwNCiAgeyIhPSIs IDI2NSB9LA0KICB7Ijw9IiwgMjY2IH0sDQogIHsiPj0iLCAyNjcgfSwNCiAg eyIrKyIsIDI2MSB9LA0KICB7Ii0tIiwgMjYxIH0sDQogIHsoKHZvaWQgKikw KSAsIDI2MSB9DQp9Ow0KDQogDQoNCnN0YXRpYyBpbnQNCnl5bGV4ICgpDQp7 DQogIHJlZ2lzdGVyIGludCBjOw0KICByZWdpc3RlciBpbnQgbmFtZWxlbjsN CiAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqdG9rc3RhcnQ7DQogIHJlZ2lz dGVyIHN0cnVjdCB0b2tlbiAqdG9rdGFiOw0KICBpbnQgd2lkZV9mbGFnOw0K ICBpbnQgIG1hc2s7DQoNCiByZXRyeToNCg0KICB0b2tzdGFydCA9ICh1bnNp Z25lZCBjaGFyICopIGxleHB0cjsNCiAgYyA9ICp0b2tzdGFydDsNCiAgIA0K ICBpZiAoISBrZXl3b3JkX3BhcnNpbmcpDQogICAgZm9yICh0b2t0YWIgPSB0 b2tlbnRhYjI7IHRva3RhYi0+b3BlcmF0b3IgIT0gKCh2b2lkICopMCkgOyB0 b2t0YWIrKykNCiAgICAgIGlmIChjID09ICp0b2t0YWItPm9wZXJhdG9yICYm IHRva3N0YXJ0WzFdID09IHRva3RhYi0+b3BlcmF0b3JbMV0pIHsNCglsZXhw dHIgKz0gMjsNCglpZiAodG9rdGFiLT50b2tlbiA9PSAyNjEgKQ0KCSAgew0K CSAgICBjaGFyICpidWYgPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhICAo NDApOw0KCSAgICBzcHJpbnRmIChidWYsICJgJXMnIG5vdCBhbGxvd2VkIGlu IG9wZXJhbmQgb2YgYCNpZiciLCB0b2t0YWItPm9wZXJhdG9yKTsNCgkgICAg eXllcnJvciAoYnVmKTsNCgkgIH0NCglyZXR1cm4gdG9rdGFiLT50b2tlbjsN CiAgICAgIH0NCg0KICBzd2l0Y2ggKGMpIHsNCiAgY2FzZSAnXG4nOg0KICAg IHJldHVybiAwOw0KICAgIA0KICBjYXNlICcgJzoNCiAgY2FzZSAnXHQnOg0K ICBjYXNlICdccic6DQogICAgbGV4cHRyKys7DQogICAgZ290byByZXRyeTsN CiAgICANCiAgY2FzZSAnTCc6DQogICAgIA0KICAgIGlmIChsZXhwdHJbMV0g PT0gJ1wnJykNCiAgICAgIHsNCglsZXhwdHIrKzsNCgl3aWRlX2ZsYWcgPSAx Ow0KCW1hc2sgPSAoQklUU19QRVJfV09SRCAgICA8ICg4ICAqIHNpemVvZiAo aW50ICkpICA/IH4gKH4gKGludCApIDAgPDwgQklUU19QRVJfV09SRCAgICkg OiB+IChpbnQgKSAwKSA7DQoJZ290byBjaGFyX2NvbnN0YW50Ow0KICAgICAg fQ0KICAgIGlmIChsZXhwdHJbMV0gPT0gJyInKQ0KICAgICAgew0KCWxleHB0 cisrOw0KCXdpZGVfZmxhZyA9IDE7DQoJbWFzayA9IChCSVRTX1BFUl9XT1JE ICAgIDwgKDggICogc2l6ZW9mIChpbnQgKSkgID8gfiAofiAoaW50ICkgMCA8 PCBCSVRTX1BFUl9XT1JEICAgKSA6IH4gKGludCApIDApIDsNCglnb3RvIHN0 cmluZ19jb25zdGFudDsNCiAgICAgIH0NCiAgICBicmVhazsNCg0KICBjYXNl ICdcJyc6DQogICAgd2lkZV9mbGFnID0gMDsNCiAgICBtYXNrID0gKEJJVFNf UEVSX1VOSVQgICA8ICg4ICAqIHNpemVvZiAoaW50ICkpICA/ICh+ICh+IChp bnQgKSAwIDw8IEJJVFNfUEVSX1VOSVQgICkpIDogfiAoaW50ICkgMCkgOw0K ICBjaGFyX2NvbnN0YW50Og0KICAgIGxleHB0cisrOw0KICAgIGlmIChrZXl3 b3JkX3BhcnNpbmcpIHsNCiAgICAgIGNoYXIgKnN0YXJ0X3B0ciA9IGxleHB0 ciAtIDE7DQogICAgICB3aGlsZSAoMSkgew0KCWMgPSAqbGV4cHRyKys7DQoJ aWYgKGMgPT0gJ1xcJykNCgkgIGMgPSBwYXJzZV9lc2NhcGUgKCZsZXhwdHIs IG1hc2spOw0KCWVsc2UgaWYgKGMgPT0gJ1wnJykNCgkgIGJyZWFrOw0KICAg ICAgfQ0KICAgICAgeXlsdmFsLm5hbWUuYWRkcmVzcyA9IHRva3N0YXJ0Ow0K ICAgICAgeXlsdmFsLm5hbWUubGVuZ3RoID0gbGV4cHRyIC0gc3RhcnRfcHRy Ow0KICAgICAgcmV0dXJuIDI2MCA7DQogICAgfQ0KDQogICAgIA0KDQoNCiAg ICB7DQogICAgICByZWdpc3RlciBpbnQgIHJlc3VsdCA9IDA7DQogICAgICBy ZWdpc3RlciBpbnQgbnVtX2NoYXJzID0gMDsNCiAgICAgIHVuc2lnbmVkIHdp ZHRoID0gQklUU19QRVJfVU5JVCAgOw0KICAgICAgaW50IG1heF9jaGFyczsN CiAgICAgIGNoYXIgKnRva2VuX2J1ZmZlcjsNCg0KICAgICAgaWYgKHdpZGVf ZmxhZykNCgl7DQoJICB3aWR0aCA9IEJJVFNfUEVSX1dPUkQgICA7DQoNCg0K DQoJICBtYXhfY2hhcnMgPSAxOw0KDQoJfQ0KICAgICAgZWxzZQ0KCW1heF9j aGFycyA9IEJJVFNfUEVSX1dPUkQgICAvIHdpZHRoOw0KDQogICAgICB0b2tl bl9idWZmZXIgPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhICAobWF4X2No YXJzICsgMSk7DQoNCiAgICAgIHdoaWxlICgxKQ0KCXsNCgkgIGMgPSAqbGV4 cHRyKys7DQoNCgkgIGlmIChjID09ICdcJycgfHwgYyA9PSAoLTEpICkNCgkg ICAgYnJlYWs7DQoNCgkgIGlmIChjID09ICdcXCcpDQoJICAgIHsNCgkgICAg ICBjID0gcGFyc2VfZXNjYXBlICgmbGV4cHRyLCBtYXNrKTsNCgkgICAgfQ0K DQoJICBudW1fY2hhcnMrKzsNCg0KCSAgIA0KCSAgaWYgKG51bV9jaGFycyA8 PSBtYXhfY2hhcnMpDQoJICAgIHsNCgkgICAgICBpZiAod2lkdGggPCAoOCAg KiBzaXplb2YgKGludCApKSApDQoJCXJlc3VsdCA9IChyZXN1bHQgPDwgd2lk dGgpIHwgYzsNCgkgICAgICBlbHNlDQoJCXJlc3VsdCA9IGM7DQoJICAgICAg dG9rZW5fYnVmZmVyW251bV9jaGFycyAtIDFdID0gYzsNCgkgICAgfQ0KCX0N Cg0KICAgICAgdG9rZW5fYnVmZmVyW251bV9jaGFyc10gPSAwOw0KDQogICAg ICBpZiAoYyAhPSAnXCcnKQ0KCWVycm9yICgibWFsZm9ybWF0dGVkIGNoYXJh Y3RlciBjb25zdGFudCIpOw0KICAgICAgZWxzZSBpZiAobnVtX2NoYXJzID09 IDApDQoJZXJyb3IgKCJlbXB0eSBjaGFyYWN0ZXIgY29uc3RhbnQiKTsNCiAg ICAgIGVsc2UgaWYgKG51bV9jaGFycyA+IG1heF9jaGFycykNCgl7DQoJICBu dW1fY2hhcnMgPSBtYXhfY2hhcnM7DQoJICBlcnJvciAoImNoYXJhY3RlciBj b25zdGFudCB0b28gbG9uZyIpOw0KCX0NCiAgICAgIGVsc2UgaWYgKG51bV9j aGFycyAhPSAxICYmICEgdHJhZGl0aW9uYWwpDQoJd2FybmluZyAoIm11bHRp LWNoYXJhY3RlciBjaGFyYWN0ZXIgY29uc3RhbnQiKTsNCg0KICAgICAgIA0K ICAgICAgaWYgKCEgd2lkZV9mbGFnKQ0KCXsNCgkgIGludCBudW1fYml0cyA9 IG51bV9jaGFycyAqIHdpZHRoOw0KDQoJICBpZiAobG9va3VwICgoVV9DSEFS ICopICJfX0NIQVJfVU5TSUdORURfXyIsDQoJCSAgICAgIHNpemVvZiAoIl9f Q0hBUl9VTlNJR05FRF9fIikgLSAxLCAtMSkNCgkgICAgICB8fCAoKHJlc3Vs dCA+PiAobnVtX2JpdHMgLSAxKSkgJiAxKSA9PSAwKQ0KCSAgICB5eWx2YWwu aW50ZWdlci52YWx1ZQ0KCSAgICAgID0gcmVzdWx0ICYgKH4gKHVuc2lnbmVk IGludCAgKSAwDQoJCQkgID4+ICgoOCAgKiBzaXplb2YgKGludCApKSAgLSBu dW1fYml0cykpOw0KCSAgZWxzZQ0KCSAgICB5eWx2YWwuaW50ZWdlci52YWx1 ZQ0KCSAgICAgID0gcmVzdWx0IHwgfih+ICh1bnNpZ25lZCBpbnQgICkgMA0K CQkJICAgPj4gKCg4ICAqIHNpemVvZiAoaW50ICkpICAtIG51bV9iaXRzKSk7 DQoJfQ0KICAgICAgZWxzZQ0KCXsNCiMgNzkwICJjZXhwLnkiDQoNCgkgIHl5 bHZhbC5pbnRlZ2VyLnZhbHVlID0gcmVzdWx0Ow0KCX0NCiAgICB9DQoNCiAg ICAgDQogICAgeXlsdmFsLmludGVnZXIuc2lnbmVkcCA9ICh+MCkgOw0KICAg IA0KICAgIHJldHVybiAyNTkgOw0KDQogICAgIA0KDQogIGNhc2UgJy8nOg0K ICBjYXNlICcrJzoNCiAgY2FzZSAnLSc6DQogIGNhc2UgJyonOg0KICBjYXNl ICclJzoNCiAgY2FzZSAnfCc6DQogIGNhc2UgJyYnOg0KICBjYXNlICdeJzoN CiAgY2FzZSAnfic6DQogIGNhc2UgJyEnOg0KICBjYXNlICdAJzoNCiAgY2Fz ZSAnPCc6DQogIGNhc2UgJz4nOg0KICBjYXNlICdbJzoNCiAgY2FzZSAnXSc6 DQogIGNhc2UgJy4nOg0KICBjYXNlICc/JzoNCiAgY2FzZSAnOic6DQogIGNh c2UgJz0nOg0KICBjYXNlICd7JzoNCiAgY2FzZSAnfSc6DQogIGNhc2UgJywn Og0KICBjYXNlICcjJzoNCiAgICBpZiAoa2V5d29yZF9wYXJzaW5nKQ0KICAg ICAgYnJlYWs7DQogIGNhc2UgJygnOg0KICBjYXNlICcpJzoNCiAgICBsZXhw dHIrKzsNCiAgICByZXR1cm4gYzsNCg0KICBjYXNlICciJzoNCiAgICBtYXNr ID0gKEJJVFNfUEVSX1VOSVQgICA8ICg4ICAqIHNpemVvZiAoaW50ICkpICA/ ICh+ICh+IChpbnQgKSAwIDw8IEJJVFNfUEVSX1VOSVQgICkpIDogfiAoaW50 ICkgMCkgOw0KICBzdHJpbmdfY29uc3RhbnQ6DQogICAgaWYgKGtleXdvcmRf cGFyc2luZykgew0KICAgICAgY2hhciAqc3RhcnRfcHRyID0gbGV4cHRyOw0K ICAgICAgbGV4cHRyKys7DQogICAgICB3aGlsZSAoMSkgew0KCWMgPSAqbGV4 cHRyKys7DQoJaWYgKGMgPT0gJ1xcJykNCgkgIGMgPSBwYXJzZV9lc2NhcGUg KCZsZXhwdHIsIG1hc2spOw0KCWVsc2UgaWYgKGMgPT0gJyInKQ0KCSAgYnJl YWs7DQogICAgICB9DQogICAgICB5eWx2YWwubmFtZS5hZGRyZXNzID0gdG9r c3RhcnQ7DQogICAgICB5eWx2YWwubmFtZS5sZW5ndGggPSBsZXhwdHIgLSBz dGFydF9wdHI7DQogICAgICByZXR1cm4gMjYwIDsNCiAgICB9DQogICAgeXll cnJvciAoInN0cmluZyBjb25zdGFudHMgbm90IGFsbG93ZWQgaW4gI2lmIGV4 cHJlc3Npb25zIik7DQogICAgcmV0dXJuIDI2MSA7DQogIH0NCg0KICBpZiAo YyA+PSAnMCcgJiYgYyA8PSAnOScgJiYgIWtleXdvcmRfcGFyc2luZykgew0K ICAgICANCiAgICBmb3IgKG5hbWVsZW4gPSAxOyA7IG5hbWVsZW4rKykgew0K ICAgICAgaW50IGQgPSB0b2tzdGFydFtuYW1lbGVuXTsNCiAgICAgIGlmICgh ICgoaXNfaWRjaGFyW2RdIHx8IGQgPT0gJy4nKQ0KCSAgICAgfHwgKChkID09 ICctJyB8fCBkID09ICcrJykNCgkJICYmIChjID09ICdlJyB8fCBjID09ICdF Jw0KCQkgICAgIHx8ICgoYyA9PSAncCcgfHwgYyA9PSAnUCcpICYmICEgYzg5 KSkNCgkJICYmICEgdHJhZGl0aW9uYWwpKSkNCglicmVhazsNCiAgICAgIGMg PSBkOw0KICAgIH0NCiAgICByZXR1cm4gcGFyc2VfbnVtYmVyIChuYW1lbGVu KTsNCiAgfQ0KDQogICANCg0KICBpZiAoa2V5d29yZF9wYXJzaW5nKSB7DQog ICAgZm9yIChuYW1lbGVuID0gMDs7IG5hbWVsZW4rKykgew0KICAgICAgaWYg KGlzX3NwYWNlW3Rva3N0YXJ0W25hbWVsZW5dXSkNCglicmVhazsNCiAgICAg IGlmICh0b2tzdGFydFtuYW1lbGVuXSA9PSAnKCcgfHwgdG9rc3RhcnRbbmFt ZWxlbl0gPT0gJyknKQ0KCWJyZWFrOw0KICAgICAgaWYgKHRva3N0YXJ0W25h bWVsZW5dID09ICciJyB8fCB0b2tzdGFydFtuYW1lbGVuXSA9PSAnXCcnKQ0K CWJyZWFrOw0KICAgIH0NCiAgfSBlbHNlIHsNCiAgICBpZiAoIWlzX2lkc3Rh cnRbY10pIHsNCiAgICAgIHl5ZXJyb3IgKCJJbnZhbGlkIHRva2VuIGluIGV4 cHJlc3Npb24iKTsNCiAgICAgIHJldHVybiAyNjEgOw0KICAgIH0NCg0KICAg IGZvciAobmFtZWxlbiA9IDA7IGlzX2lkY2hhclt0b2tzdGFydFtuYW1lbGVu XV07IG5hbWVsZW4rKykNCiAgICAgIDsNCiAgfQ0KICANCiAgbGV4cHRyICs9 IG5hbWVsZW47DQogIHl5bHZhbC5uYW1lLmFkZHJlc3MgPSB0b2tzdGFydDsN CiAgeXlsdmFsLm5hbWUubGVuZ3RoID0gbmFtZWxlbjsNCiAgcmV0dXJuIDI2 MCA7DQp9DQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQppbnQgDQpwYXJzZV9lc2NhcGUgKHN0cmluZ19wdHIsIHJlc3VsdF9tYXNr KQ0KICAgICBjaGFyICoqc3RyaW5nX3B0cjsNCiAgICAgaW50ICByZXN1bHRf bWFzazsNCnsNCiAgcmVnaXN0ZXIgaW50IGMgPSAqKCpzdHJpbmdfcHRyKSsr Ow0KICBzd2l0Y2ggKGMpDQogICAgew0KICAgIGNhc2UgJ2EnOg0KICAgICAg cmV0dXJuIFRBUkdFVF9CRUxMOw0KICAgIGNhc2UgJ2InOg0KICAgICAgcmV0 dXJuIFRBUkdFVF9CUzsNCiAgICBjYXNlICdlJzoNCiAgICBjYXNlICdFJzoN CiAgICAgIGlmIChwZWRhbnRpYykNCglwZWR3YXJuICgibm9uLUFOU0ktc3Rh bmRhcmQgZXNjYXBlIHNlcXVlbmNlLCBgXFwlYyciLCBjKTsNCiAgICAgIHJl dHVybiAwMzM7DQogICAgY2FzZSAnZic6DQogICAgICByZXR1cm4gVEFSR0VU X0ZGOw0KICAgIGNhc2UgJ24nOg0KICAgICAgcmV0dXJuIFRBUkdFVF9ORVdM SU5FOw0KICAgIGNhc2UgJ3InOg0KICAgICAgcmV0dXJuIFRBUkdFVF9DUjsN CiAgICBjYXNlICd0JzoNCiAgICAgIHJldHVybiBUQVJHRVRfVEFCOw0KICAg IGNhc2UgJ3YnOg0KICAgICAgcmV0dXJuIFRBUkdFVF9WVDsNCiAgICBjYXNl ICdcbic6DQogICAgICByZXR1cm4gLTI7DQogICAgY2FzZSAwOg0KICAgICAg KCpzdHJpbmdfcHRyKS0tOw0KICAgICAgcmV0dXJuIDA7DQogICAgICANCiAg ICBjYXNlICcwJzoNCiAgICBjYXNlICcxJzoNCiAgICBjYXNlICcyJzoNCiAg ICBjYXNlICczJzoNCiAgICBjYXNlICc0JzoNCiAgICBjYXNlICc1JzoNCiAg ICBjYXNlICc2JzoNCiAgICBjYXNlICc3JzoNCiAgICAgIHsNCglyZWdpc3Rl ciBpbnQgIGkgPSBjIC0gJzAnOw0KCXJlZ2lzdGVyIGludCBjb3VudCA9IDA7 DQoJd2hpbGUgKCsrY291bnQgPCAzKQ0KCSAgew0KCSAgICBjID0gKigqc3Ry aW5nX3B0cikrKzsNCgkgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzcnKQ0K CSAgICAgIGkgPSAoaSA8PCAzKSArIGMgLSAnMCc7DQoJICAgIGVsc2UNCgkg ICAgICB7DQoJCSgqc3RyaW5nX3B0ciktLTsNCgkJYnJlYWs7DQoJICAgICAg fQ0KCSAgfQ0KCWlmIChpICE9IChpICYgcmVzdWx0X21hc2spKQ0KCSAgew0K CSAgICBpICY9IHJlc3VsdF9tYXNrOw0KCSAgICBwZWR3YXJuICgib2N0YWwg ZXNjYXBlIHNlcXVlbmNlIG91dCBvZiByYW5nZSIpOw0KCSAgfQ0KCXJldHVy biBpOw0KICAgICAgfQ0KICAgIGNhc2UgJ3gnOg0KICAgICAgew0KCXJlZ2lz dGVyIHVuc2lnbmVkIGludCAgIGkgPSAwLCBvdmVyZmxvdyA9IDA7DQoJcmVn aXN0ZXIgaW50IGRpZ2l0c19mb3VuZCA9IDAsIGRpZ2l0Ow0KCWZvciAoOzsp DQoJICB7DQoJICAgIGMgPSAqKCpzdHJpbmdfcHRyKSsrOw0KCSAgICBpZiAo YyA+PSAnMCcgJiYgYyA8PSAnOScpDQoJICAgICAgZGlnaXQgPSBjIC0gJzAn Ow0KCSAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykNCgkgICAg ICBkaWdpdCA9IGMgLSAnYScgKyAxMDsNCgkgICAgZWxzZSBpZiAoYyA+PSAn QScgJiYgYyA8PSAnRicpDQoJICAgICAgZGlnaXQgPSBjIC0gJ0EnICsgMTA7 DQoJICAgIGVsc2UNCgkgICAgICB7DQoJCSgqc3RyaW5nX3B0ciktLTsNCgkJ YnJlYWs7DQoJICAgICAgfQ0KCSAgICBvdmVyZmxvdyB8PSBpIF4gKGkgPDwg NCA+PiA0KTsNCgkgICAgaSA9IChpIDw8IDQpICsgZGlnaXQ7DQoJICAgIGRp Z2l0c19mb3VuZCA9IDE7DQoJICB9DQoJaWYgKCFkaWdpdHNfZm91bmQpDQoJ ICB5eWVycm9yICgiXFx4IHVzZWQgd2l0aCBubyBmb2xsb3dpbmcgaGV4IGRp Z2l0cyIpOw0KCWlmIChvdmVyZmxvdyB8IChpICE9IChpICYgcmVzdWx0X21h c2spKSkNCgkgIHsNCgkgICAgaSAmPSByZXN1bHRfbWFzazsNCgkgICAgcGVk d2FybiAoImhleCBlc2NhcGUgc2VxdWVuY2Ugb3V0IG9mIHJhbmdlIik7DQoJ ICB9DQoJcmV0dXJuIGk7DQogICAgICB9DQogICAgZGVmYXVsdDoNCiAgICAg IHJldHVybiBjOw0KICAgIH0NCn0NCg0Kc3RhdGljIHZvaWQNCnl5ZXJyb3Ig KHMpDQogICAgIGNoYXIgKnM7DQp7DQogIGVycm9yICgiJXMiLCBzKTsNCiAg c2tpcF9ldmFsdWF0aW9uID0gMDsNCiAgbG9uZ2ptcCAocGFyc2VfcmV0dXJu X2Vycm9yLCAxKTsNCn0NCg0Kc3RhdGljIHZvaWQNCmludGVnZXJfb3ZlcmZs b3cgKCkNCnsNCiAgaWYgKCFza2lwX2V2YWx1YXRpb24gJiYgcGVkYW50aWMp DQogICAgcGVkd2FybiAoImludGVnZXIgb3ZlcmZsb3cgaW4gcHJlcHJvY2Vz c29yIGV4cHJlc3Npb24iKTsNCn0NCg0Kc3RhdGljIGludCANCmxlZnRfc2hp ZnQgKGEsIGIpDQogICAgIHN0cnVjdCBjb25zdGFudCAqYTsNCiAgICAgdW5z aWduZWQgaW50ICAgYjsNCnsNCiAgICANCg0KDQogIGlmIChiID49ICg4ICAq IHNpemVvZiAoaW50ICkpICkNCiAgICByZXR1cm4gMDsNCiAgZWxzZQ0KICAg IHJldHVybiAodW5zaWduZWQgaW50ICApIGEtPnZhbHVlIDw8IGI7DQp9DQoN CnN0YXRpYyBpbnQgDQpyaWdodF9zaGlmdCAoYSwgYikNCiAgICAgc3RydWN0 IGNvbnN0YW50ICphOw0KICAgICB1bnNpZ25lZCBpbnQgICBiOw0Kew0KICBp ZiAoYiA+PSAoOCAgKiBzaXplb2YgKGludCApKSApDQogICAgcmV0dXJuIGEt PnNpZ25lZHAgPyBhLT52YWx1ZSA+PiAoKDggICogc2l6ZW9mIChpbnQgKSkg IC0gMSkgOiAwOw0KICBlbHNlIGlmIChhLT5zaWduZWRwKQ0KICAgIHJldHVy biBhLT52YWx1ZSA+PiBiOw0KICBlbHNlDQogICAgcmV0dXJuICh1bnNpZ25l ZCBpbnQgICkgYS0+dmFsdWUgPj4gYjsNCn0NCgwNCiANCg0KIA0KDQoNCg0K DQoNCg0KDQppbnQgDQpwYXJzZV9jX2V4cHJlc3Npb24gKHN0cmluZywgd2Fy bl91bmRlZmluZWQpDQogICAgIGNoYXIgKnN0cmluZzsNCiAgICAgaW50IHdh cm5fdW5kZWZpbmVkOw0Kew0KICBsZXhwdHIgPSBzdHJpbmc7DQogIHdhcm5f dW5kZWYgPSB3YXJuX3VuZGVmaW5lZDsNCg0KICAgDQoNCg0KICBpZiAoX19z aWdzZXRqbXAgKCggcGFyc2VfcmV0dXJuX2Vycm9yICksIDApICkNCiAgICBy ZXR1cm4gMDsNCg0KICBpZiAoeXlwYXJzZSAoKSAhPSAwKQ0KICAgIChmcHJp bnRmIChzdGRlcnIsCSIlczolZDogSW50ZXJuYWwgY29tcGlsZXIgZXJyb3Ig aW4gZnVuY3Rpb24gJXNcbiIsCSJjZXhwLnkiLCAxMDc5LCBfX1BSRVRUWV9G VU5DVElPTl9fKSwJZXhpdCAoRkFUQUxfRVhJVF9DT0RFKSkgOw0KDQogIGlm ICgqbGV4cHRyICE9ICdcbicpDQogICAgZXJyb3IgKCJKdW5rIGFmdGVyIGVu ZCBvZiBleHByZXNzaW9uLiIpOw0KDQogIHJldHVybiBleHByZXNzaW9uX3Zh bHVlOwkgDQp9DQoMDQojIDEyODAgImNleHAueSINCg0KZWdjczogZmlsZSBw YXRoIHByZWZpeCBgc3RhZ2UxLycgbmV2ZXIgdXNlZA0K --42040716-1647221785-924114404=:19269--