X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-workers-bounces using -f X-Authentication-Warning: acp3bf.physik.rwth-aachen.de: broeker owned process doing -bs Date: Wed, 19 Dec 2001 16:15:43 +0100 (MET) From: Hans-Bernhard Broeker X-Sender: broeker AT acp3bf To: djgpp-workers AT delorie DOT com Subject: Re: regcomp NLS fix In-Reply-To: <6F32F7D2.12300D8B.09ACFA57@netscape.net> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-494318816-222447275-1008774943=:20191" Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk 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. ---494318816-222447275-1008774943=:20191 Content-Type: TEXT/PLAIN; charset=US-ASCII [The MIME/multipart stuff seems to have been broken somewhere in the mail chain, but I managed to extract and view the patch nevertheless.] On Tue, 18 Dec 2001, Alexander Aganichev wrote: > I have redone the patch (regex.nls+warning.diff) by casting all > ctype.h function's arguments to unsigned char. Also I have fix the > warnings caused by the missed brackets and unused values calculated. > There's 4 more warnings in pedantic mode about possible use of > uninitialized variables, but they seems to be safe to ignore. Most of those changes are OK, but of one, I'm quite sure we don't want to do that: @@ -865,11 +865,11 @@ static void ordinary(p, ch) register struct parse *p; -register int ch; { register cat_t *cap = p->g->categories; This would be a bad change, as it removes the type declaration for argument 'ch'. Implicit int declarations of return types and arguments are no longer allowed as of ANSI/ISO C99, if memory serves. Compiling patched sources with the fully pedantic warning set (both the XGCC=$(XLGCC) and CFLAGS=-w overrides commented out in the regex makefile), I receive a lot more warnings than just those 4 "might be used uninitialized" ones from my old GCC-2.8.1 Alpha-to-DJGPP cross compiler here: 2 cast discards `const' from pointer target type 4 might be used uninitialized in this function 132 initialization discards `const' from pointer target type Those `const' warnings come from cclass.h and cname.h, mainly. They happen because GCC detects that the code initializes a pointer to non-const char by a string literal, which is inherently const. I extended the fix work based on yours to fix all those const-ness issues (they tend to avalanche quite a bit). I managed to get away with only one call to DJ's unconst() macro (in regcomp(), where it assigns the 'next' pointer), and an otherwise clean build in fully pedantic mode. I think it's a useful achievement that this part now builds with full warning levels active, too. While at it, I also fixed some of the indentation, removed the remaining "uninitialized" warnings and removed some traditionalisms that do more harm than help, in a post-K&R1 C environment like DJGPP (casting arguments of free() and strlen(), return values of malloc(), and the likes). Patch is attached. Note that it also patches 'makefile' to no longer deactivate pedantic mode. > The second fix (regex.nls2.diff) is intended for the proper working in > NLS capable environment. I haven't really looked into that yet... -- Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de) Even if all the snow were burnt, ashes would remain. ---494318816-222447275-1008774943=:20191 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="regex.cleanup.20011219" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Updated patch Content-Disposition: attachment; filename="regex.cleanup.20011219" ZGlmZiAtdXJwIC14IENWUyAteCBjc2NvcGUub3V0IC1JIERKIERlbG9yaWUg cmVnZXgvY2NsYXNzLmggcmVnZXgubmV3L2NjbGFzcy5oDQotLS0gcmVnZXgv Y2NsYXNzLmgJTW9uIEp1bCAxMiAxNzowMjowMyAxOTk5DQorKysgcmVnZXgu bmV3L2NjbGFzcy5oCVdlZCBEZWMgMTkgMTQ6NTg6NDAgMjAwMQ0KQEAgLTEs MzIgKzEsMzIgQEANCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTggREogRGVsb3Jp ZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8NCiAvKiBjaGFyYWN0 ZXItY2xhc3MgdGFibGUgKi8NCiBzdGF0aWMgc3RydWN0IGNjbGFzcyB7DQot CWNoYXIgKm5hbWU7DQotCWNoYXIgKmNoYXJzOw0KLQljaGFyICptdWx0aXM7 DQorCWNvbnN0IGNoYXIgKm5hbWU7DQorCWNvbnN0IGNoYXIgKmNoYXJzOw0K Kwljb25zdCBjaGFyICptdWx0aXM7DQogfSBjY2xhc3Nlc1tdID0gew0KLQki YWxudW0iLAkiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlq a2xtbm9wcXJzdHV2d3h5elwNCi0wMTIzNDU2Nzg5IiwJCQkJIiIsDQotCSJh bHBoYSIsCSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6IiwNCi0JCQkJCSIiLA0KLQkiYmxhbmsiLAkiIFx0 IiwJCSIiLA0KLQkiY250cmwiLAkiXDAwN1xiXHRcblx2XGZcclwxXDJcM1w0 XDVcNlwxNlwxN1wyMFwyMVwyMlwyM1wyNFwNCi1cMjVcMjZcMjdcMzBcMzFc MzJcMzNcMzRcMzVcMzZcMzdcMTc3IiwJIiIsDQotCSJkaWdpdCIsCSIwMTIz NDU2Nzg5IiwJIiIsDQotCSJncmFwaCIsCSJBQkNERUZHSElKS0xNTk9QUVJT VFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XA0KKyAgIHsgImFs bnVtIiwgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6XA0KKzAxMjM0NTY3ODkiLCAgICAgICAgICAgICAg ICIiIH0sDQorICAgeyAiYWxwaGEiLCAgIkFCQ0RFRkdISUpLTE1OT1BRUlNU VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLA0KKyAgICAgICAg ICAgICAgICAgICAiIiB9LA0KKyAgIHsgImJsYW5rIiwgICIgXHQiLCAgICAg ICIiIH0sDQorICAgeyAiY250cmwiLCAgIlwwMDdcYlx0XG5cdlxmXHJcMVwy XDNcNFw1XDZcMTZcMTdcMjBcMjFcMjJcMjNcMjRcDQorXDI1XDI2XDI3XDMw XDMxXDMyXDMzXDM0XDM1XDM2XDM3XDE3NyIsICAgICIiIH0sDQorICAgeyAi ZGlnaXQiLCAgIjAxMjM0NTY3ODkiLCAgICIiIH0sDQorICAgeyAiZ3JhcGgi LCAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5v cHFyc3R1dnd4eXpcDQogMDEyMzQ1Njc4OSFcIiMkJSYnKCkqKywtLi86Ozw9 Pj9AW1xcXV5fYHt8fX4iLA0KLQkJCQkJIiIsDQotCSJsb3dlciIsCSJhYmNk ZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsDQotCQkJCQkiIiwNCi0JInByaW50 IiwJIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5v cHFyc3R1dnd4eXpcDQorICAgICAgICAgICAgICAgICAgICIiIH0sDQorICAg eyAibG93ZXIiLCAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwNCisg ICAgICAgICAgICAgICAgICAgIiIgfSwNCisgICB7ICJwcmludCIsICAiQUJD REVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2 d3h5elwNCiAwMTIzNDU2Nzg5IVwiIyQlJicoKSorLC0uLzo7PD0+P0BbXFxd Xl9ge3x9fiAiLA0KLQkJCQkJIiIsDQotCSJwdW5jdCIsCSIhXCIjJCUmJygp KissLS4vOjs8PT4/QFtcXF1eX2B7fH1+IiwNCi0JCQkJCSIiLA0KLQkic3Bh Y2UiLAkiXHRcblx2XGZcciAiLAkiIiwNCi0JInVwcGVyIiwJIkFCQ0RFRkdI SUpLTE1OT1BRUlNUVVZXWFlaIiwNCi0JCQkJCSIiLA0KLQkieGRpZ2l0IiwJ IjAxMjM0NTY3ODlBQkNERUZhYmNkZWYiLA0KLQkJCQkJIiIsDQotCU5VTEws CQkwLAkJIiINCisgICAgICAgICAgICAgICAgICAgIiIgfSwNCisgICB7ICJw dW5jdCIsICAiIVwiIyQlJicoKSorLC0uLzo7PD0+P0BbXFxdXl9ge3x9fiIs DQorICAgICAgICAgICAgICAgICAgICIiIH0sDQorICAgeyAic3BhY2UiLCAg Ilx0XG5cdlxmXHIgIiwgICIiIH0sDQorICAgeyAidXBwZXIiLCAgIkFCQ0RF RkdISUpLTE1OT1BRUlNUVVZXWFlaIiwNCisgICAgICAgICAgICAgICAgICAg IiIgfSwNCisgICB7ICJ4ZGlnaXQiLCAiMDEyMzQ1Njc4OUFCQ0RFRmFiY2Rl ZiIsDQorICAgICAgICAgICAgICAgICAgICIiIH0sDQorICAgeyBOVUxMLCAg ICAgMCwgICAgICAiIiB9DQogfTsNCmRpZmYgLXVycCAteCBDVlMgLXggY3Nj b3BlLm91dCAtSSBESiBEZWxvcmllIHJlZ2V4L2NuYW1lLmggcmVnZXgubmV3 L2NuYW1lLmgNCi0tLSByZWdleC9jbmFtZS5oCU1vbiBKdWwgMTIgMTc6MDI6 MDQgMTk5OQ0KKysrIHJlZ2V4Lm5ldy9jbmFtZS5oCVdlZCBEZWMgMTkgMTQ6 NTg6MDkgMjAwMQ0KQEAgLTEsMTAzICsxLDEwNCBAQA0KIC8qIENvcHlyaWdo dCAoQykgMTk5OCBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0 YWlscyAqLw0KIC8qIGNoYXJhY3Rlci1uYW1lIHRhYmxlICovDQogc3RhdGlj IHN0cnVjdCBjbmFtZSB7DQotCWNoYXIgKm5hbWU7DQorCWNvbnN0IGNoYXIg Km5hbWU7DQogCWNoYXIgY29kZTsNCiB9IGNuYW1lc1tdID0gew0KLQkiTlVM IiwJJ1wwJywNCi0JIlNPSCIsCSdcMDAxJywNCi0JIlNUWCIsCSdcMDAyJywN Ci0JIkVUWCIsCSdcMDAzJywNCi0JIkVPVCIsCSdcMDA0JywNCi0JIkVOUSIs CSdcMDA1JywNCi0JIkFDSyIsCSdcMDA2JywNCi0JIkJFTCIsCSdcMDA3JywN Ci0JImFsZXJ0IiwJJ1wwMDcnLA0KLQkiQlMiLAkJJ1wwMTAnLA0KLQkiYmFj a3NwYWNlIiwJJ1xiJywNCi0JIkhUIiwJCSdcMDExJywNCi0JInRhYiIsCQkn XHQnLA0KLQkiTEYiLAkJJ1wwMTInLA0KLQkibmV3bGluZSIsCSdcbicsDQot CSJWVCIsCQknXDAxMycsDQotCSJ2ZXJ0aWNhbC10YWIiLAknXHYnLA0KLQki RkYiLAkJJ1wwMTQnLA0KLQkiZm9ybS1mZWVkIiwJJ1xmJywNCi0JIkNSIiwJ CSdcMDE1JywNCi0JImNhcnJpYWdlLXJldHVybiIsCSdccicsDQotCSJTTyIs CSdcMDE2JywNCi0JIlNJIiwJJ1wwMTcnLA0KLQkiRExFIiwJJ1wwMjAnLA0K LQkiREMxIiwJJ1wwMjEnLA0KLQkiREMyIiwJJ1wwMjInLA0KLQkiREMzIiwJ J1wwMjMnLA0KLQkiREM0IiwJJ1wwMjQnLA0KLQkiTkFLIiwJJ1wwMjUnLA0K LQkiU1lOIiwJJ1wwMjYnLA0KLQkiRVRCIiwJJ1wwMjcnLA0KLQkiQ0FOIiwJ J1wwMzAnLA0KLQkiRU0iLAknXDAzMScsDQotCSJTVUIiLAknXDAzMicsDQot CSJFU0MiLAknXDAzMycsDQotCSJJUzQiLAknXDAzNCcsDQotCSJGUyIsCSdc MDM0JywNCi0JIklTMyIsCSdcMDM1JywNCi0JIkdTIiwJJ1wwMzUnLA0KLQki SVMyIiwJJ1wwMzYnLA0KLQkiUlMiLAknXDAzNicsDQotCSJJUzEiLAknXDAz NycsDQotCSJVUyIsCSdcMDM3JywNCi0JInNwYWNlIiwJCScgJywNCi0JImV4 Y2xhbWF0aW9uLW1hcmsiLAknIScsDQotCSJxdW90YXRpb24tbWFyayIsCSci JywNCi0JIm51bWJlci1zaWduIiwJCScjJywNCi0JImRvbGxhci1zaWduIiwJ CSckJywNCi0JInBlcmNlbnQtc2lnbiIsCQknJScsDQotCSJhbXBlcnNhbmQi LAkJJyYnLA0KLQkiYXBvc3Ryb3BoZSIsCQknXCcnLA0KLQkibGVmdC1wYXJl bnRoZXNpcyIsCScoJywNCi0JInJpZ2h0LXBhcmVudGhlc2lzIiwJJyknLA0K LQkiYXN0ZXJpc2siLAknKicsDQotCSJwbHVzLXNpZ24iLAknKycsDQotCSJj b21tYSIsCScsJywNCi0JImh5cGhlbiIsCSctJywNCi0JImh5cGhlbi1taW51 cyIsCSctJywNCi0JInBlcmlvZCIsCScuJywNCi0JImZ1bGwtc3RvcCIsCScu JywNCi0JInNsYXNoIiwJJy8nLA0KLQkic29saWR1cyIsCScvJywNCi0JInpl cm8iLAkJJzAnLA0KLQkib25lIiwJCScxJywNCi0JInR3byIsCQknMicsDQot CSJ0aHJlZSIsCSczJywNCi0JImZvdXIiLAkJJzQnLA0KLQkiZml2ZSIsCQkn NScsDQotCSJzaXgiLAkJJzYnLA0KLQkic2V2ZW4iLAknNycsDQotCSJlaWdo dCIsCSc4JywNCi0JIm5pbmUiLAkJJzknLA0KLQkiY29sb24iLAknOicsDQot CSJzZW1pY29sb24iLAknOycsDQotCSJsZXNzLXRoYW4tc2lnbiIsCSc8JywN Ci0JImVxdWFscy1zaWduIiwJCSc9JywNCi0JImdyZWF0ZXItdGhhbi1zaWdu IiwJJz4nLA0KLQkicXVlc3Rpb24tbWFyayIsCSc/JywNCi0JImNvbW1lcmNp YWwtYXQiLAknQCcsDQotCSJsZWZ0LXNxdWFyZS1icmFja2V0IiwJJ1snLA0K LQkiYmFja3NsYXNoIiwJCSdcXCcsDQotCSJyZXZlcnNlLXNvbGlkdXMiLAkn XFwnLA0KLQkicmlnaHQtc3F1YXJlLWJyYWNrZXQiLAknXScsDQotCSJjaXJj dW1mbGV4IiwJCSdeJywNCi0JImNpcmN1bWZsZXgtYWNjZW50IiwJJ14nLA0K LQkidW5kZXJzY29yZSIsCQknXycsDQotCSJsb3ctbGluZSIsCQknXycsDQot CSJncmF2ZS1hY2NlbnQiLAkJJ2AnLA0KLQkibGVmdC1icmFjZSIsCQkneycs DQotCSJsZWZ0LWN1cmx5LWJyYWNrZXQiLAkneycsDQotCSJ2ZXJ0aWNhbC1s aW5lIiwJJ3wnLA0KLQkicmlnaHQtYnJhY2UiLAkJJ30nLA0KLQkicmlnaHQt Y3VybHktYnJhY2tldCIsCSd9JywNCi0JInRpbGRlIiwJCSd+JywNCi0JIkRF TCIsCSdcMTc3JywNCi0JTlVMTCwJMCwNCisgICB7ICJOVUwiLCAgICAnXDAn IH0sDQorICAgeyAiU09IIiwgICAgJ1wwMDEnIH0sDQorICAgeyAiU1RYIiwg ICAgJ1wwMDInIH0sDQorICAgeyAiRVRYIiwgICAgJ1wwMDMnIH0sDQorICAg eyAiRU9UIiwgICAgJ1wwMDQnIH0sDQorICAgeyAiRU5RIiwgICAgJ1wwMDUn IH0sDQorICAgeyAiQUNLIiwgICAgJ1wwMDYnIH0sDQorICAgeyAiQkVMIiwg ICAgJ1wwMDcnIH0sDQorICAgeyAiYWxlcnQiLCAgJ1wwMDcnIH0sDQorICAg eyAiQlMiLCAgICAgJ1wwMTAnIH0sDQorICAgeyAiYmFja3NwYWNlIiwgICdc YicgfSwNCisgICB7ICJIVCIsICAgICAnXDAxMScgfSwNCisgICB7ICJ0YWIi LCAgICAgICAgJ1x0JyB9LA0KKyAgIHsgIkxGIiwgICAgICdcMDEyJyB9LA0K KyAgIHsgIm5ld2xpbmUiLCAgICAnXG4nIH0sDQorICAgeyAiVlQiLCAgICAg J1wwMTMnIH0sDQorICAgeyAidmVydGljYWwtdGFiIiwgICAnXHYnIH0sDQor ICAgeyAiRkYiLCAgICAgJ1wwMTQnIH0sDQorICAgeyAiZm9ybS1mZWVkIiwg ICdcZicgfSwNCisgICB7ICJDUiIsICAgICAnXDAxNScgfSwNCisgICB7ICJj YXJyaWFnZS1yZXR1cm4iLCAgICAnXHInIH0sDQorICAgeyAiU08iLCAnXDAx NicgfSwNCisgICB7ICJTSSIsICdcMDE3JyB9LA0KKyAgIHsgIkRMRSIsICAg ICdcMDIwJyB9LA0KKyAgIHsgIkRDMSIsICAgICdcMDIxJyB9LA0KKyAgIHsg IkRDMiIsICAgICdcMDIyJyB9LA0KKyAgIHsgIkRDMyIsICAgICdcMDIzJyB9 LA0KKyAgIHsgIkRDNCIsICAgICdcMDI0JyB9LA0KKyAgIHsgIk5BSyIsICAg ICdcMDI1JyB9LA0KKyAgIHsgIlNZTiIsICAgICdcMDI2JyB9LA0KKyAgIHsg IkVUQiIsICAgICdcMDI3JyB9LA0KKyAgIHsgIkNBTiIsICAgICdcMDMwJyB9 LA0KKyAgIHsgIkVNIiwgJ1wwMzEnIH0sDQorICAgeyAiU1VCIiwgICAgJ1ww MzInIH0sDQorICAgeyAiRVNDIiwgICAgJ1wwMzMnIH0sDQorICAgeyAiSVM0 IiwgICAgJ1wwMzQnIH0sDQorICAgeyAiRlMiLCAnXDAzNCcgfSwNCisgICB7 ICJJUzMiLCAgICAnXDAzNScgfSwNCisgICB7ICJHUyIsICdcMDM1JyB9LA0K KyAgIHsgIklTMiIsICAgICdcMDM2JyB9LA0KKyAgIHsgIlJTIiwgJ1wwMzYn IH0sDQorICAgeyAiSVMxIiwgICAgJ1wwMzcnIH0sDQorICAgeyAiVVMiLCAn XDAzNycgfSwNCisgICB7ICJzcGFjZSIsICAgICAgJyAnIH0sDQorICAgeyAi ZXhjbGFtYXRpb24tbWFyayIsICAgJyEnIH0sDQorICAgeyAicXVvdGF0aW9u LW1hcmsiLCAnXCInIH0sDQorICAgeyAibnVtYmVyLXNpZ24iLCAgICAgICAg JyMnIH0sDQorICAgeyAiZG9sbGFyLXNpZ24iLCAgICAgICAgJyQnIH0sDQor ICAgeyAicGVyY2VudC1zaWduIiwgICAgICAgJyUnIH0sDQorICAgeyAiYW1w ZXJzYW5kIiwgICAgICAnJicgfSwNCisgICB7ICJhcG9zdHJvcGhlIiwgICAg ICdcJycgfSwNCisgICB7ICJsZWZ0LXBhcmVudGhlc2lzIiwgICAnKCcgfSwN CisgICB7ICJyaWdodC1wYXJlbnRoZXNpcyIsICAnKScgfSwNCisgICB7ICJh c3RlcmlzayIsICAgJyonIH0sDQorICAgeyAicGx1cy1zaWduIiwgICcrJyB9 LA0KKyAgIHsgImNvbW1hIiwgICcsJyB9LA0KKyAgIHsgImh5cGhlbiIsICct JyB9LA0KKyAgIHsgImh5cGhlbi1taW51cyIsICAgJy0nIH0sDQorICAgeyAi cGVyaW9kIiwgJy4nIH0sDQorICAgeyAiZnVsbC1zdG9wIiwgICcuJyB9LA0K KyAgIHsgInNsYXNoIiwgICcvJyB9LA0KKyAgIHsgInNvbGlkdXMiLCAgICAn LycgfSwNCisgICB7ICJ6ZXJvIiwgICAgICAgJzAnIH0sDQorICAgeyAib25l IiwgICAgICAgICcxJyB9LA0KKyAgIHsgInR3byIsICAgICAgICAnMicgfSwN CisgICB7ICJ0aHJlZSIsICAnMycgfSwNCisgICB7ICJmb3VyIiwgICAgICAg JzQnIH0sDQorICAgeyAiZml2ZSIsICAgICAgICc1JyB9LA0KKyAgIHsgInNp eCIsICAgICAgICAnNicgfSwNCisgICB7ICJzZXZlbiIsICAnNycgfSwNCisg ICB7ICJlaWdodCIsICAnOCcgfSwNCisgICB7ICJuaW5lIiwgICAgICAgJzkn IH0sDQorICAgeyAiY29sb24iLCAgJzonIH0sDQorICAgeyAic2VtaWNvbG9u IiwgICc7JyB9LA0KKyAgIHsgImxlc3MtdGhhbi1zaWduIiwgJzwnIH0sDQor ICAgeyAiZXF1YWxzLXNpZ24iLCAgICAgICAgJz0nIH0sDQorICAgeyAiZ3Jl YXRlci10aGFuLXNpZ24iLCAgJz4nIH0sDQorICAgeyAicXVlc3Rpb24tbWFy ayIsICAnPycgfSwNCisgICB7ICJjb21tZXJjaWFsLWF0IiwgICdAJyB9LA0K KyAgIHsgImxlZnQtc3F1YXJlLWJyYWNrZXQiLCAgICAnWycgfSwNCisgICB7 ICJiYWNrc2xhc2giLCAgICAgICdcXCcgfSwNCisgICB7ICJyZXZlcnNlLXNv bGlkdXMiLCAgICAnXFwnIH0sDQorICAgeyAicmlnaHQtc3F1YXJlLWJyYWNr ZXQiLCAgICddJyB9LA0KKyAgIHsgImNpcmN1bWZsZXgiLCAgICAgJ14nIH0s DQorICAgeyAiY2lyY3VtZmxleC1hY2NlbnQiLCAgJ14nIH0sDQorICAgeyAi dW5kZXJzY29yZSIsICAgICAnXycgfSwNCisgICB7ICJsb3ctbGluZSIsICAg ICAgICdfJyB9LA0KKyAgIHsgImdyYXZlLWFjY2VudCIsICAgICAgICdgJyB9 LA0KKyAgIHsgImxlZnQtYnJhY2UiLCAgICAgJ3snIH0sDQorICAgeyAibGVm dC1jdXJseS1icmFja2V0IiwgJ3snIH0sDQorICAgeyAidmVydGljYWwtbGlu ZSIsICAnfCcgfSwNCisgICB7ICJyaWdodC1icmFjZSIsICAgICAgICAnfScg fSwNCisgICB7ICJyaWdodC1jdXJseS1icmFja2V0IiwgICAgJ30nIH0sDQor ICAgeyAidGlsZGUiLCAgICAgICd+JyB9LA0KKyAgIHsgIkRFTCIsICAgICdc MTc3JyB9LA0KKyAgIHsgTlVMTCwgMCwgfQ0KIH07DQorDQpkaWZmIC11cnAg LXggQ1ZTIC14IGNzY29wZS5vdXQgLUkgREogRGVsb3JpZSByZWdleC9kZWJ1 Zy5jIHJlZ2V4Lm5ldy9kZWJ1Zy5jDQotLS0gcmVnZXgvZGVidWcuYwlXZWQg RGVjIDE5IDE0OjMwOjIzIDIwMDENCisrKyByZWdleC5uZXcvZGVidWcuYwlX ZWQgRGVjIDE5IDE1OjM2OjQ4IDIwMDENCkBAIC0yMzUsNyArMjM1LDcgQEAg aW50IGNoOw0KIHsNCiAJc3RhdGljIGNoYXIgYnVmWzEwXTsNCiANCi0JaWYg KGlzcHJpbnQoY2gpIHx8IGNoID09ICcgJykNCisJaWYgKGlzcHJpbnQoKHVu c2lnbmVkIGNoYXIpIGNoKSB8fCBjaCA9PSAnICcpDQogCQlzcHJpbnRmKGJ1 ZiwgIiVjIiwgY2gpOw0KIAllbHNlDQogCQlzcHJpbnRmKGJ1ZiwgIlxcJW8i LCBjaCk7DQpkaWZmIC11cnAgLXggQ1ZTIC14IGNzY29wZS5vdXQgLUkgREog RGVsb3JpZSByZWdleC9lbmdpbmUuYyByZWdleC5uZXcvZW5naW5lLmMNCi0t LSByZWdleC9lbmdpbmUuYwlXZWQgRGVjIDE5IDE0OjMwOjI0IDIwMDENCisr KyByZWdleC5uZXcvZW5naW5lLmMJV2VkIERlYyAxOSAxNTo0MToyNSAyMDAx DQpAQCAtMzQsMTEgKzM0LDExIEBAIHN0cnVjdCBtYXRjaCB7DQogCXN0cnVj dCByZV9ndXRzICpnOw0KIAlpbnQgZWZsYWdzOw0KIAlyZWdtYXRjaF90ICpw bWF0Y2g7CS8qIFtuc3ViKzFdICgwIGVsZW1lbnQgdW51c2VkKSAqLw0KLQlj aGFyICpvZmZwOwkJLyogb2Zmc2V0cyB3b3JrIGZyb20gaGVyZSAqLw0KLQlj aGFyICpiZWdpbnA7CQkvKiBzdGFydCBvZiBzdHJpbmcgLS0gdmlydHVhbCBO VUwgcHJlY2VkZXMgKi8NCi0JY2hhciAqZW5kcDsJCS8qIGVuZCBvZiBzdHJp bmcgLS0gdmlydHVhbCBOVUwgaGVyZSAqLw0KLQljaGFyICpjb2xkcDsJCS8q IGNhbiBiZSBubyBtYXRjaCBzdGFydGluZyBiZWZvcmUgaGVyZSAqLw0KLQlj aGFyICoqbGFzdHBvczsJCS8qIFtucGx1cysxXSAqLw0KKwljb25zdCBjaGFy ICpvZmZwOwkvKiBvZmZzZXRzIHdvcmsgZnJvbSBoZXJlICovDQorCWNvbnN0 IGNoYXIgKmJlZ2lucDsJLyogc3RhcnQgb2Ygc3RyaW5nIC0tIHZpcnR1YWwg TlVMIHByZWNlZGVzICovDQorCWNvbnN0IGNoYXIgKmVuZHA7CS8qIGVuZCBv ZiBzdHJpbmcgLS0gdmlydHVhbCBOVUwgaGVyZSAqLw0KKwljb25zdCBjaGFy ICpjb2xkcDsJLyogY2FuIGJlIG5vIG1hdGNoIHN0YXJ0aW5nIGJlZm9yZSBo ZXJlICovDQorCWNvbnN0IGNoYXIgKipsYXN0cG9zOwkvKiBbbnBsdXMrMV0g Ki8NCiAJU1RBVEVWQVJTOw0KIAlzdGF0ZXMgc3Q7CQkvKiBjdXJyZW50IHN0 YXRlcyAqLw0KIAlzdGF0ZXMgZnJlc2g7CQkvKiBzdGF0ZXMgZm9yIGEgZnJl c2ggc3RhcnQgKi8NCkBAIC02MCwyNiArNjAsMjYgQEAgc3RydWN0IG1hdGNo IHsNCiANCiAvKg0KICAtIG1hdGNoZXIgLSB0aGUgYWN0dWFsIG1hdGNoaW5n IGVuZ2luZQ0KLSA9PSBzdGF0aWMgaW50IG1hdGNoZXIocmVnaXN0ZXIgc3Ry dWN0IHJlX2d1dHMgKmcsIGNoYXIgKnN0cmluZywgXA0KKyA9PSBzdGF0aWMg aW50IG1hdGNoZXIocmVnaXN0ZXIgc3RydWN0IHJlX2d1dHMgKmcsIGNvbnN0 IGNoYXIgKnN0cmluZywgXA0KICA9PQlzaXplX3Qgbm1hdGNoLCByZWdtYXRj aF90IHBtYXRjaFtdLCBpbnQgZWZsYWdzKTsNCiAgKi8NCiBzdGF0aWMgaW50 CQkJLyogMCBzdWNjZXNzLCBSRUdfTk9NQVRDSCBmYWlsdXJlICovDQogbWF0 Y2hlcihnLCBzdHJpbmcsIG5tYXRjaCwgcG1hdGNoLCBlZmxhZ3MpDQogcmVn aXN0ZXIgc3RydWN0IHJlX2d1dHMgKmc7DQotY2hhciAqc3RyaW5nOw0KK2Nv bnN0IGNoYXIgKnN0cmluZzsNCiBzaXplX3Qgbm1hdGNoOw0KIHJlZ21hdGNo X3QgcG1hdGNoW107DQogaW50IGVmbGFnczsNCiB7DQotCXJlZ2lzdGVyIGNo YXIgKmVuZHA7DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKmVuZHA7DQogCXJl Z2lzdGVyIGludCBpOw0KIAlzdHJ1Y3QgbWF0Y2ggbXY7DQogCXJlZ2lzdGVy IHN0cnVjdCBtYXRjaCAqbSA9ICZtdjsNCi0JcmVnaXN0ZXIgY2hhciAqZHA7 DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKmRwOw0KIAljb25zdCByZWdpc3Rl ciBzb3BubyBnZiA9IGctPmZpcnN0c3RhdGUrMTsJLyogKzEgZm9yIE9FTkQg Ki8NCiAJY29uc3QgcmVnaXN0ZXIgc29wbm8gZ2wgPSBnLT5sYXN0c3RhdGU7 DQotCWNoYXIgKnN0YXJ0Ow0KLQljaGFyICpzdG9wOw0KKwljb25zdCBjaGFy ICpzdGFydDsNCisJY29uc3QgY2hhciAqc3RvcDsNCiANCiAJLyogc2ltcGxp ZnkgdGhlIHNpdHVhdGlvbiB3aGVyZSBwb3NzaWJsZSAqLw0KIAlpZiAoZy0+ Y2ZsYWdzJlJFR19OT1NVQikNCkBAIC0xNTcsNyArMTU3LDcgQEAgaW50IGVm bGFnczsNCiAJCQlkcCA9IGRpc3NlY3QobSwgbS0+Y29sZHAsIGVuZHAsIGdm LCBnbCk7DQogCQl9IGVsc2Ugew0KIAkJCWlmIChnLT5ucGx1cyA+IDAgJiYg bS0+bGFzdHBvcyA9PSBOVUxMKQ0KLQkJCQltLT5sYXN0cG9zID0gKGNoYXIg KiopbWFsbG9jKChnLT5ucGx1cysxKSAqDQorCQkJCW0tPmxhc3Rwb3MgPSBt YWxsb2MoKGctPm5wbHVzKzEpICoNCiAJCQkJCQkJc2l6ZW9mKGNoYXIgKikp Ow0KIAkJCWlmIChnLT5ucGx1cyA+IDAgJiYgbS0+bGFzdHBvcyA9PSBOVUxM KSB7DQogCQkJCWZyZWUobS0+cG1hdGNoKTsNCkBAIC0yMTcsMzkgKzIxNywz OSBAQCBpbnQgZWZsYWdzOw0KIAl9DQogDQogCWlmIChtLT5wbWF0Y2ggIT0g TlVMTCkNCi0JCWZyZWUoKGNoYXIgKiltLT5wbWF0Y2gpOw0KKwkJZnJlZSht LT5wbWF0Y2gpOw0KIAlpZiAobS0+bGFzdHBvcyAhPSBOVUxMKQ0KLQkJZnJl ZSgoY2hhciAqKW0tPmxhc3Rwb3MpOw0KKwkJZnJlZShtLT5sYXN0cG9zKTsN CiAJU1RBVEVURUFSRE9XTihtKTsNCiAJcmV0dXJuKDApOw0KIH0NCiANCiAv Kg0KICAtIGRpc3NlY3QgLSBmaWd1cmUgb3V0IHdoYXQgbWF0Y2hlZCB3aGF0 LCBubyBiYWNrIHJlZmVyZW5jZXMNCi0gPT0gc3RhdGljIGNoYXIgKmRpc3Nl Y3QocmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjaGFyICpzdGFydCwgXA0K LSA9PQljaGFyICpzdG9wLCBzb3BubyBzdGFydHN0LCBzb3BubyBzdG9wc3Qp Ow0KKyA9PSBzdGF0aWMgY29uc3QgY2hhciAqZGlzc2VjdChyZWdpc3RlciBz dHJ1Y3QgbWF0Y2ggKm0sIGNvbnN0IGNoYXIgKnN0YXJ0LCBcDQorID09CWNv bnN0IGNoYXIgKnN0b3AsIHNvcG5vIHN0YXJ0c3QsIHNvcG5vIHN0b3BzdCk7 DQogICovDQotc3RhdGljIGNoYXIgKgkJCS8qID09IHN0b3AgKHN1Y2Nlc3Mp IGFsd2F5cyAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICoJCS8qID09IHN0b3Ag KHN1Y2Nlc3MpIGFsd2F5cyAqLw0KIGRpc3NlY3QobSwgc3RhcnQsIHN0b3As IHN0YXJ0c3QsIHN0b3BzdCkNCiByZWdpc3RlciBzdHJ1Y3QgbWF0Y2ggKm07 DQotY2hhciAqc3RhcnQ7DQotY2hhciAqc3RvcDsNCitjb25zdCBjaGFyICpz dGFydDsNCitjb25zdCBjaGFyICpzdG9wOw0KIHNvcG5vIHN0YXJ0c3Q7DQog c29wbm8gc3RvcHN0Ow0KIHsNCiAJcmVnaXN0ZXIgaW50IGk7DQogCXJlZ2lz dGVyIHNvcG5vIHNzOwkvKiBzdGFydCBzb3Agb2YgY3VycmVudCBzdWJSRSAq Lw0KIAlyZWdpc3RlciBzb3BubyBlczsJLyogZW5kIHNvcCBvZiBjdXJyZW50 IHN1YlJFICovDQotCXJlZ2lzdGVyIGNoYXIgKnNwOwkvKiBzdGFydCBvZiBz dHJpbmcgbWF0Y2hlZCBieSBpdCAqLw0KLQlyZWdpc3RlciBjaGFyICpzdHA7 CS8qIHN0cmluZyBtYXRjaGVkIGJ5IGl0IGNhbm5vdCBwYXNzIGhlcmUgKi8N Ci0JcmVnaXN0ZXIgY2hhciAqcmVzdDsJLyogc3RhcnQgb2YgcmVzdCBvZiBz dHJpbmcgKi8NCi0JcmVnaXN0ZXIgY2hhciAqdGFpbDsJLyogc3RyaW5nIHVu bWF0Y2hlZCBieSByZXN0IG9mIFJFICovDQorCXJlZ2lzdGVyIGNvbnN0IGNo YXIgKnNwOyAvKiBzdGFydCBvZiBzdHJpbmcgbWF0Y2hlZCBieSBpdCAqLw0K KwlyZWdpc3RlciBjb25zdCBjaGFyICpzdHA7IC8qIHN0cmluZyBtYXRjaGVk IGJ5IGl0IGNhbm5vdCBwYXNzIGhlcmUgKi8NCisJcmVnaXN0ZXIgY29uc3Qg Y2hhciAqcmVzdDsgLyogc3RhcnQgb2YgcmVzdCBvZiBzdHJpbmcgKi8NCisJ cmVnaXN0ZXIgY29uc3QgY2hhciAqdGFpbDsgLyogc3RyaW5nIHVubWF0Y2hl ZCBieSByZXN0IG9mIFJFICovDQogCXJlZ2lzdGVyIHNvcG5vIHNzdWI7CS8q IHN0YXJ0IHNvcCBvZiBzdWJzdWJSRSAqLw0KIAlyZWdpc3RlciBzb3BubyBl c3ViOwkvKiBlbmQgc29wIG9mIHN1YnN1YlJFICovDQotCXJlZ2lzdGVyIGNo YXIgKnNzcDsJLyogc3RhcnQgb2Ygc3RyaW5nIG1hdGNoZWQgYnkgc3Vic3Vi UkUgKi8NCi0JcmVnaXN0ZXIgY2hhciAqc2VwOwkvKiBlbmQgb2Ygc3RyaW5n IG1hdGNoZWQgYnkgc3Vic3ViUkUgKi8NCi0JcmVnaXN0ZXIgY2hhciAqb2xk c3NwOwkvKiBwcmV2aW91cyBzc3AgKi8NCi0JcmVnaXN0ZXIgY2hhciAqZHA7 DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKnNzcDsgLyogc3RhcnQgb2Ygc3Ry aW5nIG1hdGNoZWQgYnkgc3Vic3ViUkUgKi8NCisJcmVnaXN0ZXIgY29uc3Qg Y2hhciAqc2VwOyAvKiBlbmQgb2Ygc3RyaW5nIG1hdGNoZWQgYnkgc3Vic3Vi UkUgKi8NCisJcmVnaXN0ZXIgY29uc3QgY2hhciAqb2xkc3NwOyAvKiBwcmV2 aW91cyBzc3AgKi8NCisJcmVnaXN0ZXIgY29uc3QgY2hhciAqZHA7DQogDQog CUFUKCJkaXNzIiwgc3RhcnQsIHN0b3AsIHN0YXJ0c3QsIHN0b3BzdCk7DQog CXNwID0gc3RhcnQ7DQpAQCAtNDE0LDI1ICs0MTQsMjUgQEAgc29wbm8gc3Rv cHN0Ow0KIA0KIC8qDQogIC0gYmFja3JlZiAtIGZpZ3VyZSBvdXQgd2hhdCBt YXRjaGVkIHdoYXQsIGZpZ3VyaW5nIGluIGJhY2sgcmVmZXJlbmNlcw0KLSA9 PSBzdGF0aWMgY2hhciAqYmFja3JlZihyZWdpc3RlciBzdHJ1Y3QgbWF0Y2gg Km0sIGNoYXIgKnN0YXJ0LCBcDQotID09CWNoYXIgKnN0b3AsIHNvcG5vIHN0 YXJ0c3QsIHNvcG5vIHN0b3BzdCwgc29wbm8gbGV2KTsNCisgPT0gc3RhdGlj IGNvbnN0IGNoYXIgKmJhY2tyZWYocmVnaXN0ZXIgc3RydWN0IG1hdGNoICpt LCBjb25zdCBjaGFyICpzdGFydCwgXA0KKyA9PQljb25zdCBjaGFyICpzdG9w LCBzb3BubyBzdGFydHN0LCBzb3BubyBzdG9wc3QsIHNvcG5vIGxldik7DQog ICovDQotc3RhdGljIGNoYXIgKgkJCS8qID09IHN0b3AgKHN1Y2Nlc3MpIG9y IE5VTEwgKGZhaWx1cmUpICovDQorc3RhdGljIGNvbnN0IGNoYXIgKgkJLyog PT0gc3RvcCAoc3VjY2Vzcykgb3IgTlVMTCAoZmFpbHVyZSkgKi8NCiBiYWNr cmVmKG0sIHN0YXJ0LCBzdG9wLCBzdGFydHN0LCBzdG9wc3QsIGxldikNCiBy ZWdpc3RlciBzdHJ1Y3QgbWF0Y2ggKm07DQotY2hhciAqc3RhcnQ7DQotY2hh ciAqc3RvcDsNCitjb25zdCBjaGFyICpzdGFydDsNCitjb25zdCBjaGFyICpz dG9wOw0KIHNvcG5vIHN0YXJ0c3Q7DQogc29wbm8gc3RvcHN0Ow0KIHNvcG5v IGxldjsJCQkvKiBQTFVTIG5lc3RpbmcgbGV2ZWwgKi8NCiB7DQogCXJlZ2lz dGVyIGludCBpOw0KIAlyZWdpc3RlciBzb3BubyBzczsJLyogc3RhcnQgc29w IG9mIGN1cnJlbnQgc3ViUkUgKi8NCi0JcmVnaXN0ZXIgY2hhciAqc3A7CS8q IHN0YXJ0IG9mIHN0cmluZyBtYXRjaGVkIGJ5IGl0ICovDQorCXJlZ2lzdGVy IGNvbnN0IGNoYXIgKnNwOyAvKiBzdGFydCBvZiBzdHJpbmcgbWF0Y2hlZCBi eSBpdCAqLw0KIAlyZWdpc3RlciBzb3BubyBzc3ViOwkvKiBzdGFydCBzb3Ag b2Ygc3Vic3ViUkUgKi8NCiAJcmVnaXN0ZXIgc29wbm8gZXN1YjsJLyogZW5k IHNvcCBvZiBzdWJzdWJSRSAqLw0KLQlyZWdpc3RlciBjaGFyICpzc3A7CS8q IHN0YXJ0IG9mIHN0cmluZyBtYXRjaGVkIGJ5IHN1YnN1YlJFICovDQotCXJl Z2lzdGVyIGNoYXIgKmRwOw0KKwlyZWdpc3RlciBjb25zdCBjaGFyICpzc3A7 IC8qIHN0YXJ0IG9mIHN0cmluZyBtYXRjaGVkIGJ5IHN1YnN1YlJFICovDQor CXJlZ2lzdGVyIGNvbnN0IGNoYXIgKmRwOw0KIAlyZWdpc3RlciBzaXplX3Qg bGVuOw0KIAlyZWdpc3RlciBpbnQgaGFyZDsNCiAJcmVnaXN0ZXIgc29wIHM7 DQpAQCAtNjE0LDMxICs2MTQsMzEgQEAgc29wbm8gbGV2OwkJCS8qIFBMVVMg bmVzdGluZyBsZXZlbCAqLw0KIAkvKiAiY2FuJ3QgaGFwcGVuIiAqLw0KIAlh c3NlcnQobm9wZSk7DQogCS8qIE5PVFJFQUNIRUQgKi8NCi0JcmV0dXJuKChj aGFyICopTlVMTCk7CS8qIGR1bW15ICovDQorCXJldHVybihOVUxMKTsJLyog ZHVtbXkgKi8NCiB9DQogDQogLyoNCiAgLSBmYXN0IC0gc3RlcCB0aHJvdWdo IHRoZSBzdHJpbmcgYXQgdG9wIHNwZWVkDQotID09IHN0YXRpYyBjaGFyICpm YXN0KHJlZ2lzdGVyIHN0cnVjdCBtYXRjaCAqbSwgY2hhciAqc3RhcnQsIFwN Ci0gPT0JY2hhciAqc3RvcCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0 KTsNCisgPT0gc3RhdGljIGNvbnN0IGNoYXIgKmZhc3QocmVnaXN0ZXIgc3Ry dWN0IG1hdGNoICptLCBjb25zdCBjaGFyICpzdGFydCwgXA0KKyA9PQljb25z dCBjaGFyICpzdG9wLCBzb3BubyBzdGFydHN0LCBzb3BubyBzdG9wc3QpOw0K ICAqLw0KLXN0YXRpYyBjaGFyICoJCQkvKiB3aGVyZSB0ZW50YXRpdmUgbWF0 Y2ggZW5kZWQsIG9yIE5VTEwgKi8NCitzdGF0aWMgY29uc3QgY2hhciAqCQkv KiB3aGVyZSB0ZW50YXRpdmUgbWF0Y2ggZW5kZWQsIG9yIE5VTEwgKi8NCiBm YXN0KG0sIHN0YXJ0LCBzdG9wLCBzdGFydHN0LCBzdG9wc3QpDQogcmVnaXN0 ZXIgc3RydWN0IG1hdGNoICptOw0KLWNoYXIgKnN0YXJ0Ow0KLWNoYXIgKnN0 b3A7DQorY29uc3QgY2hhciAqc3RhcnQ7DQorY29uc3QgY2hhciAqc3RvcDsN CiBzb3BubyBzdGFydHN0Ow0KIHNvcG5vIHN0b3BzdDsNCiB7DQogCXJlZ2lz dGVyIHN0YXRlcyBzdCA9IG0tPnN0Ow0KIAlyZWdpc3RlciBzdGF0ZXMgZnJl c2ggPSBtLT5mcmVzaDsNCiAJcmVnaXN0ZXIgc3RhdGVzIHRtcCA9IG0tPnRt cDsNCi0JcmVnaXN0ZXIgY2hhciAqcCA9IHN0YXJ0Ow0KKwlyZWdpc3RlciBj b25zdCBjaGFyICpwID0gc3RhcnQ7DQogCXJlZ2lzdGVyIGludCBjID0gKHN0 YXJ0ID09IG0tPmJlZ2lucCkgPyBPVVQgOiAqKHN0YXJ0LTEpOw0KIAlyZWdp c3RlciBpbnQgbGFzdGM7CS8qIHByZXZpb3VzIGMgKi8NCiAJcmVnaXN0ZXIg aW50IGZsYWdjaDsNCiAJcmVnaXN0ZXIgaW50IGk7DQotCXJlZ2lzdGVyIGNo YXIgKmNvbGRwOwkvKiBsYXN0IHAgYWZ0ZXIgd2hpY2ggbm8gbWF0Y2ggd2Fz IHVuZGVyd2F5ICovDQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKmNvbGRwOyAv KiBsYXN0IHAgYWZ0ZXIgd2hpY2ggbm8gbWF0Y2ggd2FzIHVuZGVyd2F5ICov DQogDQogCUNMRUFSKHN0KTsNCiAJU0VUMShzdCwgc3RhcnRzdCk7DQpAQCAt NzEwLDI2ICs3MTAsMjYgQEAgc29wbm8gc3RvcHN0Ow0KIA0KIC8qDQogIC0g c2xvdyAtIHN0ZXAgdGhyb3VnaCB0aGUgc3RyaW5nIG1vcmUgZGVsaWJlcmF0 ZWx5DQotID09IHN0YXRpYyBjaGFyICpzbG93KHJlZ2lzdGVyIHN0cnVjdCBt YXRjaCAqbSwgY2hhciAqc3RhcnQsIFwNCi0gPT0JY2hhciAqc3RvcCwgc29w bm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0KTsNCisgPT0gc3RhdGljIGNvbnN0 IGNoYXIgKnNsb3cocmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjb25zdCBj aGFyICpzdGFydCwgXA0KKyA9PQljb25zdCBjaGFyICpzdG9wLCBzb3BubyBz dGFydHN0LCBzb3BubyBzdG9wc3QpOw0KICAqLw0KLXN0YXRpYyBjaGFyICoJ CQkvKiB3aGVyZSBpdCBlbmRlZCAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICoJ CS8qIHdoZXJlIGl0IGVuZGVkICovDQogc2xvdyhtLCBzdGFydCwgc3RvcCwg c3RhcnRzdCwgc3RvcHN0KQ0KIHJlZ2lzdGVyIHN0cnVjdCBtYXRjaCAqbTsN Ci1jaGFyICpzdGFydDsNCi1jaGFyICpzdG9wOw0KK2NvbnN0IGNoYXIgKnN0 YXJ0Ow0KK2NvbnN0IGNoYXIgKnN0b3A7DQogc29wbm8gc3RhcnRzdDsNCiBz b3BubyBzdG9wc3Q7DQogew0KIAlyZWdpc3RlciBzdGF0ZXMgc3QgPSBtLT5z dDsNCiAJcmVnaXN0ZXIgc3RhdGVzIGVtcHR5ID0gbS0+ZW1wdHk7DQogCXJl Z2lzdGVyIHN0YXRlcyB0bXAgPSBtLT50bXA7DQotCXJlZ2lzdGVyIGNoYXIg KnAgPSBzdGFydDsNCisJcmVnaXN0ZXIgY29uc3QgY2hhciAqcCA9IHN0YXJ0 Ow0KIAlyZWdpc3RlciBpbnQgYyA9IChzdGFydCA9PSBtLT5iZWdpbnApID8g T1VUIDogKihzdGFydC0xKTsNCiAJcmVnaXN0ZXIgaW50IGxhc3RjOwkvKiBw cmV2aW91cyBjICovDQogCXJlZ2lzdGVyIGludCBmbGFnY2g7DQogCXJlZ2lz dGVyIGludCBpOw0KLQlyZWdpc3RlciBjaGFyICptYXRjaHA7CS8qIGxhc3Qg cCBhdCB3aGljaCBhIG1hdGNoIGVuZGVkICovDQorCXJlZ2lzdGVyIGNvbnN0 IGNoYXIgKm1hdGNocDsgLyogbGFzdCBwIGF0IHdoaWNoIGEgbWF0Y2ggZW5k ZWQgKi8NCiANCiAJQVQoInNsb3ciLCBzdGFydCwgc3RvcCwgc3RhcnRzdCwg c3RvcHN0KTsNCiAJQ0xFQVIoc3QpOw0KQEAgLTkyNywxNCArOTI3LDE0IEBA IHJlZ2lzdGVyIHN0YXRlcyBhZnQ7CQkvKiBzdGF0ZXMgYWxyZWFkeSANCiAv Kg0KICAtIHByaW50IC0gcHJpbnQgYSBzZXQgb2Ygc3RhdGVzDQogID09ICNp ZmRlZiBSRURFQlVHDQotID09IHN0YXRpYyB2b2lkIHByaW50KHN0cnVjdCBt YXRjaCAqbSwgY2hhciAqY2FwdGlvbiwgc3RhdGVzIHN0LCBcDQorID09IHN0 YXRpYyB2b2lkIHByaW50KHN0cnVjdCBtYXRjaCAqbSwgY29uc3QgY2hhciAq Y2FwdGlvbiwgc3RhdGVzIHN0LCBcDQogID09CWludCBjaCwgRklMRSAqZCk7 DQogID09ICNlbmRpZg0KICAqLw0KIHN0YXRpYyB2b2lkDQogcHJpbnQobSwg Y2FwdGlvbiwgc3QsIGNoLCBkKQ0KIHN0cnVjdCBtYXRjaCAqbTsNCi1jaGFy ICpjYXB0aW9uOw0KK2NvbnN0IGNoYXIgKmNhcHRpb247DQogc3RhdGVzIHN0 Ow0KIGludCBjaDsNCiBGSUxFICpkOw0KQEAgLTk2MCwxNiArOTYwLDE3IEBA IEZJTEUgKmQ7DQogLyogDQogIC0gYXQgLSBwcmludCBjdXJyZW50IHNpdHVh dGlvbg0KICA9PSAjaWZkZWYgUkVERUJVRw0KLSA9PSBzdGF0aWMgdm9pZCBh dChzdHJ1Y3QgbWF0Y2ggKm0sIGNoYXIgKnRpdGxlLCBjaGFyICpzdGFydCwg Y2hhciAqc3RvcCwgXA0KLSA9PQkJCQkJCXNvcG5vIHN0YXJ0c3QsIHNvcG5v IHN0b3BzdCk7DQorID09IHN0YXRpYyB2b2lkIGF0KHN0cnVjdCBtYXRjaCAq bSwgY29uc3QgY2hhciAqdGl0bGUsIFwNCisgPT0JCQljb25zdCBjaGFyICpz dGFydCwgY29uc3QgY2hhciAqc3RvcCwgXA0KKyA9PQkJCXNvcG5vIHN0YXJ0 c3QsIHNvcG5vIHN0b3BzdCk7DQogID09ICNlbmRpZg0KICAqLw0KIHN0YXRp YyB2b2lkDQogYXQobSwgdGl0bGUsIHN0YXJ0LCBzdG9wLCBzdGFydHN0LCBz dG9wc3QpDQogc3RydWN0IG1hdGNoICptOw0KLWNoYXIgKnRpdGxlOw0KLWNo YXIgKnN0YXJ0Ow0KLWNoYXIgKnN0b3A7DQorY29uc3QgY2hhciAqdGl0bGU7 DQorY29uc3QgY2hhciAqc3RhcnQ7DQorY29uc3QgY2hhciAqc3RvcDsNCiBz b3BubyBzdGFydHN0Ow0KIHNvcG5vIHN0b3BzdDsNCiB7DQpAQCAtMTAwMCw3 ICsxMDAxLDcgQEAgaW50IGNoOw0KIHsNCiAJc3RhdGljIGNoYXIgcGJ1Zlsx MF07DQogDQotCWlmIChpc3ByaW50KGNoKSB8fCBjaCA9PSAnICcpDQorCWlm IChpc3ByaW50KCh1bnNpZ25lZCBjaGFyKWNoKSB8fCBjaCA9PSAnICcpDQog CQlzcHJpbnRmKHBidWYsICIlYyIsIGNoKTsNCiAJZWxzZQ0KIAkJc3ByaW50 ZihwYnVmLCAiXFwlbyIsIGNoKTsNCmRpZmYgLXVycCAteCBDVlMgLXggY3Nj b3BlLm91dCAtSSBESiBEZWxvcmllIHJlZ2V4L2VuZ2luZS5paCByZWdleC5u ZXcvZW5naW5lLmloDQotLS0gcmVnZXgvZW5naW5lLmloCU1vbiBKdWwgMTIg MTc6MDI6MDQgMTk5OQ0KKysrIHJlZ2V4Lm5ldy9lbmdpbmUuaWgJV2VkIERl YyAxOSAxNjowNzoxMiAyMDAxDQpAQCAtNCwxMSArNCwxMSBAQCBleHRlcm4g IkMiIHsNCiAjZW5kaWYNCiANCiAvKiA9PT0gZW5naW5lLmMgPT09ICovDQot c3RhdGljIGludCBtYXRjaGVyKHJlZ2lzdGVyIHN0cnVjdCByZV9ndXRzICpn LCBjaGFyICpzdHJpbmcsIHNpemVfdCBubWF0Y2gsIHJlZ21hdGNoX3QgcG1h dGNoW10sIGludCBlZmxhZ3MpOw0KLXN0YXRpYyBjaGFyICpkaXNzZWN0KHJl Z2lzdGVyIHN0cnVjdCBtYXRjaCAqbSwgY2hhciAqc3RhcnQsIGNoYXIgKnN0 b3AsIHNvcG5vIHN0YXJ0c3QsIHNvcG5vIHN0b3BzdCk7DQotc3RhdGljIGNo YXIgKmJhY2tyZWYocmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjaGFyICpz dGFydCwgY2hhciAqc3RvcCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0 LCBzb3BubyBsZXYpOw0KLXN0YXRpYyBjaGFyICpmYXN0KHJlZ2lzdGVyIHN0 cnVjdCBtYXRjaCAqbSwgY2hhciAqc3RhcnQsIGNoYXIgKnN0b3AsIHNvcG5v IHN0YXJ0c3QsIHNvcG5vIHN0b3BzdCk7DQotc3RhdGljIGNoYXIgKnNsb3co cmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjaGFyICpzdGFydCwgY2hhciAq c3RvcCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0KTsNCitzdGF0aWMg aW50IG1hdGNoZXIocmVnaXN0ZXIgc3RydWN0IHJlX2d1dHMgKmcsIGNvbnN0 IGNoYXIgKnN0cmluZywgc2l6ZV90IG5tYXRjaCwgcmVnbWF0Y2hfdCBwbWF0 Y2hbXSwgaW50IGVmbGFncyk7DQorc3RhdGljIGNvbnN0IGNoYXIgKmRpc3Nl Y3QocmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjb25zdCBjaGFyICpzdGFy dCwgY29uc3QgY2hhciAqc3RvcCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3Rv cHN0KTsNCitzdGF0aWMgY29uc3QgY2hhciAqYmFja3JlZihyZWdpc3RlciBz dHJ1Y3QgbWF0Y2ggKm0sIGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFy ICpzdG9wLCBzb3BubyBzdGFydHN0LCBzb3BubyBzdG9wc3QsIHNvcG5vIGxl dik7DQorc3RhdGljIGNvbnN0IGNoYXIgKmZhc3QocmVnaXN0ZXIgc3RydWN0 IG1hdGNoICptLCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqc3Rv cCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0KTsNCitzdGF0aWMgY29u c3QgY2hhciAqc2xvdyhyZWdpc3RlciBzdHJ1Y3QgbWF0Y2ggKm0sIGNvbnN0 IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICpzdG9wLCBzb3BubyBzdGFydHN0 LCBzb3BubyBzdG9wc3QpOw0KIHN0YXRpYyBzdGF0ZXMgc3RlcChyZWdpc3Rl ciBzdHJ1Y3QgcmVfZ3V0cyAqZywgc29wbm8gc3RhcnQsIHNvcG5vIHN0b3As IHJlZ2lzdGVyIHN0YXRlcyBiZWYsIGludCBjaCwgcmVnaXN0ZXIgc3RhdGVz IGFmdCk7DQogI2RlZmluZQlCT0wJKE9VVCsxKQ0KICNkZWZpbmUJRU9MCShC T0wrMSkNCkBAIC0yMCwxMCArMjAsMTEgQEAgc3RhdGljIHN0YXRlcyBzdGVw KHJlZ2lzdGVyIHN0cnVjdCByZV9ndQ0KICNkZWZpbmUJTk9OQ0hBUihjKQko KGMpID4gQ0hBUl9NQVgpDQogI2RlZmluZQlOTk9OQ0hBUgkoQ09ERU1BWC1D SEFSX01BWCkNCiAjaWZkZWYgUkVERUJVRw0KLXN0YXRpYyB2b2lkIHByaW50 KHN0cnVjdCBtYXRjaCAqbSwgY2hhciAqY2FwdGlvbiwgc3RhdGVzIHN0LCBp bnQgY2gsIEZJTEUgKmQpOw0KK3N0YXRpYyB2b2lkIHByaW50KHN0cnVjdCBt YXRjaCAqbSwgY29uc3QgY2hhciAqY2FwdGlvbiwgc3RhdGVzIHN0LCBpbnQg Y2gsIEZJTEUgKmQpOw0KICNlbmRpZg0KICNpZmRlZiBSRURFQlVHDQotc3Rh dGljIHZvaWQgYXQoc3RydWN0IG1hdGNoICptLCBjaGFyICp0aXRsZSwgY2hh ciAqc3RhcnQsIGNoYXIgKnN0b3AsIHNvcG5vIHN0YXJ0c3QsIHNvcG5vIHN0 b3BzdCk7DQorc3RhdGljIHZvaWQgYXQoc3RydWN0IG1hdGNoICptLCBjb25z dCBjaGFyICp0aXRsZSwgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIg KnN0b3AsIFwNCisJCXNvcG5vIHN0YXJ0c3QsIHNvcG5vIHN0b3BzdCk7DQog I2VuZGlmDQogI2lmZGVmIFJFREVCVUcNCiBzdGF0aWMgY2hhciAqcGNoYXIo aW50IGNoKTsNCmRpZmYgLXVycCAteCBDVlMgLXggY3Njb3BlLm91dCAtSSBE SiBEZWxvcmllIHJlZ2V4L21ha2VmaWxlIHJlZ2V4Lm5ldy9tYWtlZmlsZQ0K LS0tIHJlZ2V4L21ha2VmaWxlCVdlZCBEZWMgMTkgMTU6MzQ6MzQgMjAwMQ0K KysrIHJlZ2V4Lm5ldy9tYWtlZmlsZQlXZWQgRGVjIDE5IDE1OjQyOjA1IDIw MDENCkBAIC0zLDE1ICszLDkgQEANCiAjIENvcHlyaWdodCAoQykgMTk5NSBE SiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscw0KIFRPUD0u Li8uLg0KIA0KLSMgc3VwcmVzcyBhbGwgd2FybmluZ3MgaGVyZQ0KLUNGTEFH UyA9IC13DQotDQogU1JDICs9IHJlZ2NvbXAuYw0KIFNSQyArPSByZWdlcnJv ci5jDQogU1JDICs9IHJlZ2V4ZWMuYw0KIFNSQyArPSByZWdmcmVlLmMNCiAN CiBpbmNsdWRlICQoVE9QKS8uLi9tYWtlZmlsZS5pbmMNCi0NCi1YR0NDID0g JChYTEdDQykNCi0NCmRpZmYgLXVycCAteCBDVlMgLXggY3Njb3BlLm91dCAt SSBESiBEZWxvcmllIHJlZ2V4L21ha2VmaWxlLmJzZCByZWdleC5uZXcvbWFr ZWZpbGUuYnNkDQotLS0gcmVnZXgvbWFrZWZpbGUuYnNkCU1vbiBKdWwgMTIg MTc6MDI6MDQgMTk5OQ0KKysrIHJlZ2V4Lm5ldy9tYWtlZmlsZS5ic2QJV2Vk IERlYyAxOSAxNjowNDo0MCAyMDAxDQpAQCAtOCw3ICs4LDcgQEAgU0hFTEw9 L2Jpbi9zaA0KICMgUkVHQ0ZMQUdTIGlzbid0IGltcG9ydGFudCB0byB5b3Ug KGl0J3MgZm9yIG15IHVzZSBpbiBzb21lIHNwZWNpYWwgY29udGV4dHMpLg0K IA0KICMgQ0ZMQUdTPS1JLiAtRFBPU0lYX01JU1RBS0UgLURSRURFQlVHICQo UkVHQ0ZMQUdTKQ0KLUNGTEFHUz0tSS4gLURQT1NJWF9NSVNUQUtFIC1PMiAk KFJFR0NGTEFHUykNCitDRkxBR1M9LUkuIC1EUE9TSVhfTUlTVEFLRSAtTzIg JChSRUdDRkxBR1MpIC1JIC4uLy4uLy4uLy4uL2luY2x1ZGUNCiANCiAjIElm IHlvdSBoYXZlIGEgcHJlLUFOU0kgY29tcGlsZXIsIHB1dCAtbyBpbnRvIE1L SEZMQUdTLiAgSWYgeW91IHdhbnQNCiAjIHRoZSBCZXJrZWxleSBfX1AgbWFj cm8sIHB1dCAtYiBpbi4NCmRpZmYgLXVycCAteCBDVlMgLXggY3Njb3BlLm91 dCAtSSBESiBEZWxvcmllIHJlZ2V4L3JlZ2NvbXAuYyByZWdleC5uZXcvcmVn Y29tcC5jDQotLS0gcmVnZXgvcmVnY29tcC5jCVdlZCBEZWMgMTkgMTQ6MzA6 MjQgMjAwMQ0KKysrIHJlZ2V4Lm5ldy9yZWdjb21wLmMJV2VkIERlYyAxOSAx NjowNjo1OCAyMDAxDQpAQCAtOCw2ICs4LDggQEANCiAjaW5jbHVkZSA8c3Rk bGliLmg+DQogI2luY2x1ZGUgPHJlZ2V4Lmg+DQogDQorI2luY2x1ZGUgPGxp YmMvdW5jb25zdC5oPg0KKw0KICNpbmNsdWRlICJ1dGlscy5oIg0KICNpbmNs dWRlICJyZWdleDIuaCINCiANCkBAIC01MywxMCArNTUsMTAgQEAgc3RhdGlj IGNoYXIgbnVsc1sxMF07CQkvKiBwbGFjZSB0byBwb2ludA0KICNkZWZpbmUJ TkVYVG4obikJKHAtPm5leHQgKz0gKG4pKQ0KICNkZWZpbmUJR0VUTkVYVCgp CSgqcC0+bmV4dCsrKQ0KICNkZWZpbmUJU0VURVJST1IoZSkJc2V0ZXJyKHAs IChlKSkNCi0jZGVmaW5lCVJFUVVJUkUoY28sIGUpCSgoY28pIHx8IFNFVEVS Uk9SKGUpKQ0KLSNkZWZpbmUJTVVTVFNFRShjLCBlKQkoUkVRVUlSRShNT1JF KCkgJiYgUEVFSygpID09IChjKSwgZSkpDQotI2RlZmluZQlNVVNURUFUKGMs IGUpCShSRVFVSVJFKE1PUkUoKSAmJiBHRVRORVhUKCkgPT0gKGMpLCBlKSkN Ci0jZGVmaW5lCU1VU1ROT1RTRUUoYywgZSkJKFJFUVVJUkUoIU1PUkUoKSB8 fCBQRUVLKCkgIT0gKGMpLCBlKSkNCisjZGVmaW5lCVJFUVVJUkUoY28sIGUp ICBkbyB7IGlmICghY28pIFNFVEVSUk9SKGUpOyB9IHdoaWxlICgwKQ0KKyNk ZWZpbmUJTVVTVFNFRShjLCBlKQlSRVFVSVJFKE1PUkUoKSAmJiBQRUVLKCkg PT0gKGMpLCBlKQ0KKyNkZWZpbmUJTVVTVEVBVChjLCBlKQlSRVFVSVJFKE1P UkUoKSAmJiBHRVRORVhUKCkgPT0gKGMpLCBlKQ0KKyNkZWZpbmUJTVVTVE5P VFNFRShjLCBlKQlSRVFVSVJFKCFNT1JFKCkgfHwgUEVFSygpICE9IChjKSwg ZSkNCiAjZGVmaW5lCUVNSVQob3AsIHNvcG5kKQlkb2VtaXQocCwgKHNvcCko b3ApLCAoc2l6ZV90KShzb3BuZCkpDQogI2RlZmluZQlJTlNFUlQob3AsIHBv cykJZG9pbnNlcnQocCwgKHNvcCkob3ApLCBIRVJFKCktKHBvcykrMSwgcG9z KQ0KICNkZWZpbmUJQUhFQUQocG9zKQkJZG9md2QocCwgcG9zLCBIRVJFKCkt KHBvcykpDQpAQCAtMTEwLDcgKzExMiw3IEBAIGludCBjZmxhZ3M7DQogCQkJ cmV0dXJuKFJFR19JTlZBUkcpOw0KIAkJbGVuID0gcHJlZy0+cmVfZW5kcCAt IHBhdHRlcm47DQogCX0gZWxzZQ0KLQkJbGVuID0gc3RybGVuKChjaGFyICop cGF0dGVybik7DQorCQlsZW4gPSBzdHJsZW4ocGF0dGVybik7DQogDQogCS8q IGRvIHRoZSBtYWxsb2NzIGVhcmx5IHNvIGZhaWx1cmUgaGFuZGxpbmcgaXMg ZWFzeSAqLw0KIAlnID0gKHN0cnVjdCByZV9ndXRzICopbWFsbG9jKHNpemVv ZihzdHJ1Y3QgcmVfZ3V0cykgKw0KQEAgLTEyNyw3ICsxMjksNyBAQCBpbnQg Y2ZsYWdzOw0KIA0KIAkvKiBzZXQgdGhpbmdzIHVwICovDQogCXAtPmcgPSBn Ow0KLQlwLT5uZXh0ID0gKGNoYXIgKilwYXR0ZXJuOwkvKiBjb252ZW5pZW5j ZTsgd2UgZG8gbm90IG1vZGlmeSBpdCAqLw0KKwlwLT5uZXh0ID0gdW5jb25z dChwYXR0ZXJuLCBjaGFyICopOyAvKiBjb252ZW5pZW5jZTsgd2UgZG8gbm90 IG1vZGlmeSBpdCAqLw0KIAlwLT5lbmQgPSBwLT5uZXh0ICsgbGVuOw0KIAlw LT5lcnJvciA9IDA7DQogCXAtPm5jc2FsbG9jID0gMDsNCkBAIC0xOTQsOCAr MTk2LDggQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOw0KIGludCBzdG9w OwkJCS8qIGNoYXJhY3RlciB0aGlzIEVSRSBzaG91bGQgZW5kIGF0ICovDQog ew0KIAlyZWdpc3RlciBjaGFyIGM7DQotCXJlZ2lzdGVyIHNvcG5vIHByZXZi YWNrOw0KLQlyZWdpc3RlciBzb3BubyBwcmV2ZndkOw0KKwlyZWdpc3RlciBz b3BubyBwcmV2YmFjayA9IDA7DQorCXJlZ2lzdGVyIHNvcG5vIHByZXZmd2Qg PSAwOw0KIAlyZWdpc3RlciBzb3BubyBjb25jOw0KIAlyZWdpc3RlciBpbnQg Zmlyc3QgPSAxOwkJLyogaXMgdGhpcyB0aGUgZmlyc3QgYWx0ZXJuYXRpdmU/ ICovDQogDQpAQCAtMzEyLDcgKzMxNCw3IEBAIHJlZ2lzdGVyIHN0cnVjdCBw YXJzZSAqcDsNCiAJCW9yZGluYXJ5KHAsIGMpOw0KIAkJYnJlYWs7DQogCWNh c2UgJ3snOgkJLyogb2theSBhcyBvcmRpbmFyeSBleGNlcHQgaWYgZGlnaXQg Zm9sbG93cyAqLw0KLQkJUkVRVUlSRSghTU9SRSgpIHx8ICFpc2RpZ2l0KFBF RUsoKSksIFJFR19CQURSUFQpOw0KKwkJUkVRVUlSRSghTU9SRSgpIHx8ICFp c2RpZ2l0KCh1bnNpZ25lZCBjaGFyKVBFRUsoKSksIFJFR19CQURSUFQpOw0K IAkJLyogRkFMTFRIUk9VR0ggKi8NCiAJZGVmYXVsdDoNCiAJCW9yZGluYXJ5 KHAsIGMpOw0KQEAgLTMyNCw3ICszMjYsNyBAQCByZWdpc3RlciBzdHJ1Y3Qg cGFyc2UgKnA7DQogCWMgPSBQRUVLKCk7DQogCS8qIHdlIGNhbGwgeyBhIHJl cGV0aXRpb24gaWYgZm9sbG93ZWQgYnkgYSBkaWdpdCAqLw0KIAlpZiAoISgg YyA9PSAnKicgfHwgYyA9PSAnKycgfHwgYyA9PSAnPycgfHwNCi0JCQkJKGMg PT0gJ3snICYmIE1PUkUyKCkgJiYgaXNkaWdpdChQRUVLMigpKSkgKSkNCisJ ICAgICAgIChjID09ICd7JyAmJiBNT1JFMigpICYmIGlzZGlnaXQoKHVuc2ln bmVkIGNoYXIpUEVFSzIoKSkpICkpDQogCQlyZXR1cm47CQkvKiBubyByZXBl dGl0aW9uLCB3ZSdyZSBkb25lICovDQogCU5FWFQoKTsNCiANCkBAIC0zNTMs NyArMzU1LDcgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOw0KIAljYXNl ICd7JzoNCiAJCWNvdW50ID0gcF9jb3VudChwKTsNCiAJCWlmIChFQVQoJywn KSkgew0KLQkJCWlmIChpc2RpZ2l0KFBFRUsoKSkpIHsNCisJCQlpZiAoaXNk aWdpdCgodW5zaWduZWQgY2hhcilQRUVLKCkpKSB7DQogCQkJCWNvdW50MiA9 IHBfY291bnQocCk7DQogCQkJCVJFUVVJUkUoY291bnQgPD0gY291bnQyLCBS RUdfQkFEQlIpOw0KIAkJCX0gZWxzZQkJLyogc2luZ2xlIG51bWJlciB3aXRo IGNvbW1hICovDQpAQCAtMzc0LDcgKzM3Niw3IEBAIHJlZ2lzdGVyIHN0cnVj dCBwYXJzZSAqcDsNCiAJCXJldHVybjsNCiAJYyA9IFBFRUsoKTsNCiAJaWYg KCEoIGMgPT0gJyonIHx8IGMgPT0gJysnIHx8IGMgPT0gJz8nIHx8DQotCQkJ CShjID09ICd7JyAmJiBNT1JFMigpICYmIGlzZGlnaXQoUEVFSzIoKSkpICkg KQ0KKwkgICAgICAgKGMgPT0gJ3snICYmIE1PUkUyKCkgJiYgaXNkaWdpdCgo dW5zaWduZWQgY2hhcilQRUVLMigpKSkgKSApDQogCQlyZXR1cm47DQogCVNF VEVSUk9SKFJFR19CQURSUFQpOw0KIH0NCkBAIC01MzEsNyArNTMzLDcgQEAg aW50IHN0YXJvcmRpbmFyeTsJCS8qIGlzIGEgbGVhZGluZyAqIGFuIA0KIAl9 IGVsc2UgaWYgKEVBVFRXTygnXFwnLCAneycpKSB7DQogCQljb3VudCA9IHBf Y291bnQocCk7DQogCQlpZiAoRUFUKCcsJykpIHsNCi0JCQlpZiAoTU9SRSgp ICYmIGlzZGlnaXQoUEVFSygpKSkgew0KKwkJCWlmIChNT1JFKCkgJiYgaXNk aWdpdCgodW5zaWduZWQgY2hhcilQRUVLKCkpKSB7DQogCQkJCWNvdW50MiA9 IHBfY291bnQocCk7DQogCQkJCVJFUVVJUkUoY291bnQgPD0gY291bnQyLCBS RUdfQkFEQlIpOw0KIAkJCX0gZWxzZQkJLyogc2luZ2xlIG51bWJlciB3aXRo IGNvbW1hICovDQpAQCAtNTYyLDcgKzU2NCw3IEBAIHJlZ2lzdGVyIHN0cnVj dCBwYXJzZSAqcDsNCiAJcmVnaXN0ZXIgaW50IGNvdW50ID0gMDsNCiAJcmVn aXN0ZXIgaW50IG5kaWdpdHMgPSAwOw0KIA0KLQl3aGlsZSAoTU9SRSgpICYm IGlzZGlnaXQoUEVFSygpKSAmJiBjb3VudCA8PSBEVVBNQVgpIHsNCisJd2hp bGUgKE1PUkUoKSAmJiBpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKVBFRUsoKSkg JiYgY291bnQgPD0gRFVQTUFYKSB7DQogCQljb3VudCA9IGNvdW50KjEwICsg KEdFVE5FWFQoKSAtICcwJyk7DQogCQluZGlnaXRzKys7DQogCX0NCkBAIC02 MTcsNyArNjE5LDcgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOw0KIAkJ cmVnaXN0ZXIgaW50IGNpOw0KIA0KIAkJZm9yIChpID0gcC0+Zy0+Y3NldHNp emUgLSAxOyBpID49IDA7IGktLSkNCi0JCQlpZiAoQ0hJTihjcywgaSkgJiYg aXNhbHBoYShpKSkgew0KKwkJCWlmIChDSElOKGNzLCBpKSAmJiBpc2FscGhh KCh1bnNpZ25lZCBjaGFyKWkpKSB7DQogCQkJCWNpID0gb3RoZXJjYXNlKGkp Ow0KIAkJCQlpZiAoY2kgIT0gaSkNCiAJCQkJCUNIYWRkKGNzLCBjaSk7DQpA QCAtNzI2LDEwICs3MjgsMTAgQEAgcmVnaXN0ZXIgY3NldCAqY3M7DQogCXJl Z2lzdGVyIGNoYXIgKnNwID0gcC0+bmV4dDsNCiAJcmVnaXN0ZXIgc3RydWN0 IGNjbGFzcyAqY3A7DQogCXJlZ2lzdGVyIHNpemVfdCBsZW47DQotCXJlZ2lz dGVyIGNoYXIgKnU7DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKnU7DQogCXJl Z2lzdGVyIGNoYXIgYzsNCiANCi0Jd2hpbGUgKE1PUkUoKSAmJiBpc2FscGhh KFBFRUsoKSkpDQorCXdoaWxlIChNT1JFKCkgJiYgaXNhbHBoYSgodW5zaWdu ZWQgY2hhcilQRUVLKCkpKQ0KIAkJTkVYVCgpOw0KIAlsZW4gPSBwLT5uZXh0 IC0gc3A7DQogCWZvciAoY3AgPSBjY2xhc3NlczsgY3AtPm5hbWUgIT0gTlVM TDsgY3ArKykNCkBAIC04MjIsMTEgKzgyNCwxMSBAQCBzdGF0aWMgY2hhcgkJ CS8qIGlmIG5vIGNvdW50ZXJwYXJ0LCByZXR1DQogb3RoZXJjYXNlKGNoKQ0K IGludCBjaDsNCiB7DQotCWFzc2VydChpc2FscGhhKGNoKSk7DQotCWlmIChp c3VwcGVyKGNoKSkNCi0JCXJldHVybih0b2xvd2VyKGNoKSk7DQotCWVsc2Ug aWYgKGlzbG93ZXIoY2gpKQ0KLQkJcmV0dXJuKHRvdXBwZXIoY2gpKTsNCisJ YXNzZXJ0KGlzYWxwaGEoKHVuc2lnbmVkIGNoYXIpY2gpKTsNCisJaWYgKGlz dXBwZXIoKHVuc2lnbmVkIGNoYXIpY2gpKQ0KKwkJcmV0dXJuKHRvbG93ZXIo KHVuc2lnbmVkIGNoYXIpY2gpKTsNCisJZWxzZSBpZiAoaXNsb3dlcigodW5z aWduZWQgY2hhciljaCkpDQorCQlyZXR1cm4odG91cHBlcigodW5zaWduZWQg Y2hhciljaCkpOw0KIAllbHNlCQkJLyogcGVjdWxpYXIsIGJ1dCBjb3VsZCBo YXBwZW4gKi8NCiAJCXJldHVybihjaCk7DQogfQ0KQEAgLTg2OCw4ICs4NzAs OSBAQCByZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnA7DQogcmVnaXN0ZXIgaW50 IGNoOw0KIHsNCiAJcmVnaXN0ZXIgY2F0X3QgKmNhcCA9IHAtPmctPmNhdGVn b3JpZXM7DQotDQotCWlmICgocC0+Zy0+Y2ZsYWdzJlJFR19JQ0FTRSkgJiYg aXNhbHBoYShjaCkgJiYgb3RoZXJjYXNlKGNoKSAhPSBjaCkNCisJDQorCWlm ICgocC0+Zy0+Y2ZsYWdzJlJFR19JQ0FTRSkgJiYgaXNhbHBoYSgodW5zaWdu ZWQgY2hhciljaCkgJiYNCisJICAgIG90aGVyY2FzZShjaCkgIT0gY2gpDQog CQlib3RoY2FzZXMocCwgY2gpOw0KIAllbHNlIHsNCiAJCUVNSVQoT0NIQVIs ICh1bnNpZ25lZCBjaGFyKWNoKTsNCkBAIC0xMTQ3LDEzICsxMTUwLDEzIEBA IHJlZ2lzdGVyIGNzZXQgKmNzOw0KIC8qDQogIC0gbWNhZGQgLSBhZGQgYSBj b2xsYXRpbmcgZWxlbWVudCB0byBhIGNzZXQNCiAgPT0gc3RhdGljIHZvaWQg bWNhZGQocmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwLCByZWdpc3RlciBjc2V0 ICpjcywgXA0KLSA9PQlyZWdpc3RlciBjaGFyICpjcCk7DQorID09CXJlZ2lz dGVyIGNvbnN0IGNoYXIgKmNwKTsNCiAgKi8NCiBzdGF0aWMgdm9pZA0KIG1j YWRkKHAsIGNzLCBjcCkNCiByZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnA7DQog cmVnaXN0ZXIgY3NldCAqY3M7DQotcmVnaXN0ZXIgY2hhciAqY3A7DQorcmVn aXN0ZXIgY29uc3QgY2hhciAqY3A7DQogew0KIAlyZWdpc3RlciBzaXplX3Qg b2xkZW5kID0gY3MtPnNtdWx0aXM7DQogDQpAQCAtMTE3Miw2NCArMTE3NSw2 IEBAIHJlZ2lzdGVyIGNoYXIgKmNwOw0KIH0NCiANCiAvKg0KLSAtIG1jc3Vi IC0gc3VidHJhY3QgYSBjb2xsYXRpbmcgZWxlbWVudCBmcm9tIGEgY3NldA0K LSA9PSBzdGF0aWMgdm9pZCBtY3N1YihyZWdpc3RlciBjc2V0ICpjcywgcmVn aXN0ZXIgY2hhciAqY3ApOw0KLSAqLw0KLXN0YXRpYyB2b2lkDQotbWNzdWIo Y3MsIGNwKQ0KLXJlZ2lzdGVyIGNzZXQgKmNzOw0KLXJlZ2lzdGVyIGNoYXIg KmNwOw0KLXsNCi0JcmVnaXN0ZXIgY2hhciAqZnAgPSBtY2ZpbmQoY3MsIGNw KTsNCi0JcmVnaXN0ZXIgc2l6ZV90IGxlbiA9IHN0cmxlbihmcCk7DQotDQot CWFzc2VydChmcCAhPSBOVUxMKTsNCi0JKHZvaWQpIG1lbW1vdmUoZnAsIGZw ICsgbGVuICsgMSwNCi0JCQkJY3MtPnNtdWx0aXMgLSAoZnAgKyBsZW4gKyAx IC0gY3MtPm11bHRpcykpOw0KLQljcy0+c211bHRpcyAtPSBsZW47DQotDQot CWlmIChjcy0+c211bHRpcyA9PSAwKSB7DQotCQlmcmVlKGNzLT5tdWx0aXMp Ow0KLQkJY3MtPm11bHRpcyA9IE5VTEw7DQotCQlyZXR1cm47DQotCX0NCi0N Ci0JY3MtPm11bHRpcyA9IHJlYWxsb2MoY3MtPm11bHRpcywgY3MtPnNtdWx0 aXMpOw0KLQlhc3NlcnQoY3MtPm11bHRpcyAhPSBOVUxMKTsNCi19DQotDQot LyoNCi0gLSBtY2luIC0gaXMgYSBjb2xsYXRpbmcgZWxlbWVudCBpbiBhIGNz ZXQ/DQotID09IHN0YXRpYyBpbnQgbWNpbihyZWdpc3RlciBjc2V0ICpjcywg cmVnaXN0ZXIgY2hhciAqY3ApOw0KLSAqLw0KLXN0YXRpYyBpbnQNCi1tY2lu KGNzLCBjcCkNCi1yZWdpc3RlciBjc2V0ICpjczsNCi1yZWdpc3RlciBjaGFy ICpjcDsNCi17DQotCXJldHVybihtY2ZpbmQoY3MsIGNwKSAhPSBOVUxMKTsN Ci19DQotDQotLyoNCi0gLSBtY2ZpbmQgLSBmaW5kIGEgY29sbGF0aW5nIGVs ZW1lbnQgaW4gYSBjc2V0DQotID09IHN0YXRpYyBjaGFyICptY2ZpbmQocmVn aXN0ZXIgY3NldCAqY3MsIHJlZ2lzdGVyIGNoYXIgKmNwKTsNCi0gKi8NCi1z dGF0aWMgY2hhciAqDQotbWNmaW5kKGNzLCBjcCkNCi1yZWdpc3RlciBjc2V0 ICpjczsNCi1yZWdpc3RlciBjaGFyICpjcDsNCi17DQotCXJlZ2lzdGVyIGNo YXIgKnA7DQotDQotCWlmIChjcy0+bXVsdGlzID09IE5VTEwpDQotCQlyZXR1 cm4oTlVMTCk7DQotCWZvciAocCA9IGNzLT5tdWx0aXM7ICpwICE9ICdcMCc7 IHAgKz0gc3RybGVuKHApICsgMSkNCi0JCWlmIChzdHJjbXAoY3AsIHApID09 IDApDQotCQkJcmV0dXJuKHApOw0KLQlyZXR1cm4oTlVMTCk7DQotfQ0KLQ0K LS8qDQogIC0gbWNpbnZlcnQgLSBpbnZlcnQgdGhlIGxpc3Qgb2YgY29sbGF0 aW5nIGVsZW1lbnRzIGluIGEgY3NldA0KICA9PSBzdGF0aWMgdm9pZCBtY2lu dmVydChyZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnAsIHJlZ2lzdGVyIGNzZXQg KmNzKTsNCiAgKg0KQEAgLTE0OTcsOCArMTQ0Miw4IEBAIHN0cnVjdCBwYXJz ZSAqcDsNCiByZWdpc3RlciBzdHJ1Y3QgcmVfZ3V0cyAqZzsNCiB7DQogCXJl Z2lzdGVyIHNvcCAqc2NhbjsNCi0Jc29wICpzdGFydDsNCi0JcmVnaXN0ZXIg c29wICpuZXdzdGFydDsNCisJc29wICpzdGFydCA9IE5VTEw7DQorCXJlZ2lz dGVyIHNvcCAqbmV3c3RhcnQgPSBOVUxMOw0KIAlyZWdpc3RlciBzb3BubyBu ZXdsZW47DQogCXJlZ2lzdGVyIHNvcCBzOw0KIAlyZWdpc3RlciBjaGFyICpj cDsNCmRpZmYgLXVycCAteCBDVlMgLXggY3Njb3BlLm91dCAtSSBESiBEZWxv cmllIHJlZ2V4L3JlZ2NvbXAuaWggcmVnZXgubmV3L3JlZ2NvbXAuaWgNCi0t LSByZWdleC9yZWdjb21wLmloCU1vbiBKdWwgMTIgMTc6MDI6MDQgMTk5OQ0K KysrIHJlZ2V4Lm5ldy9yZWdjb21wLmloCVdlZCBEZWMgMTkgMTY6MDc6MDkg MjAwMQ0KQEAgLTI3LDEwICsyNyw3IEBAIHN0YXRpYyB2b2lkIGZyZWVzZXQo cmVnaXN0ZXIgc3RydWN0IHBhcnMNCiBzdGF0aWMgaW50IGZyZWV6ZXNldChy ZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnAsIHJlZ2lzdGVyIGNzZXQgKmNzKTsN CiBzdGF0aWMgaW50IGZpcnN0Y2gocmVnaXN0ZXIgc3RydWN0IHBhcnNlICpw LCByZWdpc3RlciBjc2V0ICpjcyk7DQogc3RhdGljIGludCBuY2gocmVnaXN0 ZXIgc3RydWN0IHBhcnNlICpwLCByZWdpc3RlciBjc2V0ICpjcyk7DQotc3Rh dGljIHZvaWQgbWNhZGQocmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwLCByZWdp c3RlciBjc2V0ICpjcywgcmVnaXN0ZXIgY2hhciAqY3ApOw0KLXN0YXRpYyB2 b2lkIG1jc3ViKHJlZ2lzdGVyIGNzZXQgKmNzLCByZWdpc3RlciBjaGFyICpj cCk7DQotc3RhdGljIGludCBtY2luKHJlZ2lzdGVyIGNzZXQgKmNzLCByZWdp c3RlciBjaGFyICpjcCk7DQotc3RhdGljIGNoYXIgKm1jZmluZChyZWdpc3Rl ciBjc2V0ICpjcywgcmVnaXN0ZXIgY2hhciAqY3ApOw0KK3N0YXRpYyB2b2lk IG1jYWRkKHJlZ2lzdGVyIHN0cnVjdCBwYXJzZSAqcCwgcmVnaXN0ZXIgY3Nl dCAqY3MsIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKmNwKTsNCiBzdGF0aWMgdm9p ZCBtY2ludmVydChyZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnAsIHJlZ2lzdGVy IGNzZXQgKmNzKTsNCiBzdGF0aWMgdm9pZCBtY2Nhc2UocmVnaXN0ZXIgc3Ry dWN0IHBhcnNlICpwLCByZWdpc3RlciBjc2V0ICpjcyk7DQogc3RhdGljIGlu dCBpc2luc2V0cyhyZWdpc3RlciBzdHJ1Y3QgcmVfZ3V0cyAqZywgaW50IGMp Ow0KZGlmZiAtdXJwIC14IENWUyAteCBjc2NvcGUub3V0IC1JIERKIERlbG9y aWUgcmVnZXgvcmVnZXJyb3IuYyByZWdleC5uZXcvcmVnZXJyb3IuYw0KLS0t IHJlZ2V4L3JlZ2Vycm9yLmMJTW9uIEp1bCAxMiAxNzowMjowNCAxOTk5DQor KysgcmVnZXgubmV3L3JlZ2Vycm9yLmMJV2VkIERlYyAxOSAxNToxMTo1OSAy MDAxDQpAQCAtMzMsMjcgKzMzLDI3IEBADQogICovDQogc3RhdGljIHN0cnVj dCByZXJyIHsNCiAJaW50IGNvZGU7DQotCWNoYXIgKm5hbWU7DQotCWNoYXIg KmV4cGxhaW47DQorCWNvbnN0IGNoYXIgKm5hbWU7DQorCWNvbnN0IGNoYXIg KmV4cGxhaW47DQogfSByZXJyc1tdID0gew0KLQlSRUdfT0tBWSwJIlJFR19P S0FZIiwJIm5vIGVycm9ycyBkZXRlY3RlZCIsDQotCVJFR19OT01BVENILAki UkVHX05PTUFUQ0giLAkicmVnZXhlYygpIGZhaWxlZCB0byBtYXRjaCIsDQot CVJFR19CQURQQVQsCSJSRUdfQkFEUEFUIiwJImludmFsaWQgcmVndWxhciBl eHByZXNzaW9uIiwNCi0JUkVHX0VDT0xMQVRFLAkiUkVHX0VDT0xMQVRFIiwJ ImludmFsaWQgY29sbGF0aW5nIGVsZW1lbnQiLA0KLQlSRUdfRUNUWVBFLAki UkVHX0VDVFlQRSIsCSJpbnZhbGlkIGNoYXJhY3RlciBjbGFzcyIsDQotCVJF R19FRVNDQVBFLAkiUkVHX0VFU0NBUEUiLAkidHJhaWxpbmcgYmFja3NsYXNo IChcXCkiLA0KLQlSRUdfRVNVQlJFRywJIlJFR19FU1VCUkVHIiwJImludmFs aWQgYmFja3JlZmVyZW5jZSBudW1iZXIiLA0KLQlSRUdfRUJSQUNLLAkiUkVH X0VCUkFDSyIsCSJicmFja2V0cyAoWyBdKSBub3QgYmFsYW5jZWQiLA0KLQlS RUdfRVBBUkVOLAkiUkVHX0VQQVJFTiIsCSJwYXJlbnRoZXNlcyBub3QgYmFs YW5jZWQiLA0KLQlSRUdfRUJSQUNFLAkiUkVHX0VCUkFDRSIsCSJicmFjZXMg bm90IGJhbGFuY2VkIiwNCi0JUkVHX0JBREJSLAkiUkVHX0JBREJSIiwJImlu dmFsaWQgcmVwZXRpdGlvbiBjb3VudChzKSIsDQotCVJFR19FUkFOR0UsCSJS RUdfRVJBTkdFIiwJImludmFsaWQgY2hhcmFjdGVyIHJhbmdlIiwNCi0JUkVH X0VTUEFDRSwJIlJFR19FU1BBQ0UiLAkib3V0IG9mIG1lbW9yeSIsDQotCVJF R19CQURSUFQsCSJSRUdfQkFEUlBUIiwJInJlcGV0aXRpb24tb3BlcmF0b3Ig b3BlcmFuZCBpbnZhbGlkIiwNCi0JUkVHX0VNUFRZLAkiUkVHX0VNUFRZIiwJ ImVtcHR5IChzdWIpZXhwcmVzc2lvbiIsDQotCVJFR19BU1NFUlQsCSJSRUdf QVNTRVJUIiwJIlwiY2FuJ3QgaGFwcGVuXCIgLS0geW91IGZvdW5kIGEgYnVn IiwNCi0JUkVHX0lOVkFSRywJIlJFR19JTlZBUkciLAkiaW52YWxpZCBhcmd1 bWVudCB0byByZWdleCByb3V0aW5lIiwNCi0JLTEsCQkiIiwJCSIqKiogdW5r bm93biByZWdleHAgZXJyb3IgY29kZSAqKioiLA0KKyAgIHsgUkVHX09LQVks ICJSRUdfT0tBWSIsICJubyBlcnJvcnMgZGV0ZWN0ZWQiIH0sDQorICAgeyBS RUdfTk9NQVRDSCwgICJSRUdfTk9NQVRDSCIsICAicmVnZXhlYygpIGZhaWxl ZCB0byBtYXRjaCIgfSwNCisgICB7IFJFR19CQURQQVQsICAgIlJFR19CQURQ QVQiLCAgICJpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiIgfSwNCisgICB7 IFJFR19FQ09MTEFURSwgIlJFR19FQ09MTEFURSIsICJpbnZhbGlkIGNvbGxh dGluZyBlbGVtZW50IiB9LA0KKyAgIHsgUkVHX0VDVFlQRSwgICAiUkVHX0VD VFlQRSIsICAgImludmFsaWQgY2hhcmFjdGVyIGNsYXNzIiB9LA0KKyAgIHsg UkVHX0VFU0NBUEUsICAiUkVHX0VFU0NBUEUiLCAgInRyYWlsaW5nIGJhY2tz bGFzaCAoXFwpIiB9LA0KKyAgIHsgUkVHX0VTVUJSRUcsICAiUkVHX0VTVUJS RUciLCAgImludmFsaWQgYmFja3JlZmVyZW5jZSBudW1iZXIiIH0sDQorICAg eyBSRUdfRUJSQUNLLCAgICJSRUdfRUJSQUNLIiwgICAiYnJhY2tldHMgKFsg XSkgbm90IGJhbGFuY2VkIiB9LA0KKyAgIHsgUkVHX0VQQVJFTiwgICAiUkVH X0VQQVJFTiIsICAgInBhcmVudGhlc2VzIG5vdCBiYWxhbmNlZCIgfSwNCisg ICB7IFJFR19FQlJBQ0UsICAgIlJFR19FQlJBQ0UiLCAgICJicmFjZXMgbm90 IGJhbGFuY2VkIiB9LA0KKyAgIHsgUkVHX0JBREJSLCAgICAiUkVHX0JBREJS IiwgICAgImludmFsaWQgcmVwZXRpdGlvbiBjb3VudChzKSIgfSwNCisgICB7 IFJFR19FUkFOR0UsICAgIlJFR19FUkFOR0UiLCAgICJpbnZhbGlkIGNoYXJh Y3RlciByYW5nZSIgfSwNCisgICB7IFJFR19FU1BBQ0UsICAgIlJFR19FU1BB Q0UiLCAgICJvdXQgb2YgbWVtb3J5IiB9LA0KKyAgIHsgUkVHX0JBRFJQVCwg ICAiUkVHX0JBRFJQVCIsICAgInJlcGV0aXRpb24tb3BlcmF0b3Igb3BlcmFu ZCBpbnZhbGlkIiB9LA0KKyAgIHsgUkVHX0VNUFRZLCAgICAiUkVHX0VNUFRZ IiwgICAgImVtcHR5IChzdWIpZXhwcmVzc2lvbiIgfSwNCisgICB7IFJFR19B U1NFUlQsICAgIlJFR19BU1NFUlQiLCAgICJcImNhbid0IGhhcHBlblwiIC0t IHlvdSBmb3VuZCBhIGJ1ZyIgfSwNCisgICB7IFJFR19JTlZBUkcsICAgIlJF R19JTlZBUkciLCAgICJpbnZhbGlkIGFyZ3VtZW50IHRvIHJlZ2V4IHJvdXRp bmUiIH0sDQorICAgeyAtMSwgICAgICAgIiIsICAgICAiKioqIHVua25vd24g cmVnZXhwIGVycm9yIGNvZGUgKioqIiB9DQogfTsNCiANCiAvKg0KQEAgLTcx LDcgKzcxLDcgQEAgc2l6ZV90IGVycmJ1Zl9zaXplOw0KIAlyZWdpc3RlciBz dHJ1Y3QgcmVyciAqcjsNCiAJcmVnaXN0ZXIgc2l6ZV90IGxlbjsNCiAJcmVn aXN0ZXIgaW50IHRhcmdldCA9IGVycmNvZGUgJn4gUkVHX0lUT0E7DQotCXJl Z2lzdGVyIGNoYXIgKnM7DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKnM7DQog CWNoYXIgY29udmJ1Zls1MF07DQogDQogCWlmIChlcnJjb2RlID09IFJFR19B VE9JKQ0KQEAgLTExOSw5ICsxMTksOSBAQCBjaGFyICpsb2NhbGJ1ZjsNCiAJ Zm9yIChyID0gcmVycnM7IHItPmNvZGUgPj0gMDsgcisrKQ0KIAkJaWYgKHN0 cmNtcChyLT5uYW1lLCBwcmVnLT5yZV9lbmRwKSA9PSAwKQ0KIAkJCWJyZWFr Ow0KLQlpZiAoci0+Y29kZSA8IDApDQotCQlyZXR1cm4oIjAiKTsNCi0NCi0J c3ByaW50Zihsb2NhbGJ1ZiwgIiVkIiwgci0+Y29kZSk7DQorCWlmIChyLT5j b2RlIDwgMCkgDQorCQlzdHJjcHkobG9jYWxidWYsICIwIik7DQorCWVsc2Ug DQorCQlzcHJpbnRmKGxvY2FsYnVmLCAiJWQiLCByLT5jb2RlKTsNCiAJcmV0 dXJuKGxvY2FsYnVmKTsNCiB9DQpkaWZmIC11cnAgLXggQ1ZTIC14IGNzY29w ZS5vdXQgLUkgREogRGVsb3JpZSByZWdleC9yZWdleDIuaCByZWdleC5uZXcv cmVnZXgyLmgNCi0tLSByZWdleC9yZWdleDIuaAlNb24gSnVsIDEyIDE3OjAy OjA1IDE5OTkNCisrKyByZWdleC5uZXcvcmVnZXgyLmgJV2VkIERlYyAxOSAx NjoxMDoyOSAyMDAxDQpAQCAtMTMyLDQgKzEzMiw0IEBAIHN0cnVjdCByZV9n dXRzIHsNCiANCiAvKiBtaXNjIHV0aWxpdGllcyAqLw0KICNkZWZpbmUJT1VU CShDSEFSX01BWCsxKQkvKiBhIG5vbi1jaGFyYWN0ZXIgdmFsdWUgKi8NCi0j ZGVmaW5lCUlTV09SRChjKQkoaXNhbG51bShjKSB8fCAoYykgPT0gJ18nKQ0K KyNkZWZpbmUJSVNXT1JEKGMpCShpc2FsbnVtKCh1bnNpZ25lZCBjaGFyKWMp IHx8IChjKSA9PSAnXycpDQpkaWZmIC11cnAgLXggQ1ZTIC14IGNzY29wZS5v dXQgLUkgREogRGVsb3JpZSByZWdleC9yZWdleGVjLmMgcmVnZXgubmV3L3Jl Z2V4ZWMuYw0KLS0tIHJlZ2V4L3JlZ2V4ZWMuYwlNb24gSnVsIDEyIDE3OjAy OjA1IDE5OTkNCisrKyByZWdleC5uZXcvcmVnZXhlYy5jCVdlZCBEZWMgMTkg MTU6MjY6MTQgMjAwMQ0KQEAgLTE3LDcgKzE3LDkgQEANCiAjaW5jbHVkZSAi dXRpbHMuaCINCiAjaW5jbHVkZSAicmVnZXgyLmgiDQogDQorI2lmbmRlZiBO REVCVUcNCiBzdGF0aWMgaW50IG5vcGUgPSAwOwkJLyogZm9yIHVzZSBpbiBh c3NlcnRzOyBzaHV0cyBsaW50IHVwICovDQorI2VuZGlmDQogDQogLyogbWFj cm9zIGZvciBtYW5pcHVsYXRpbmcgc3RhdGVzLCBzbWFsbCB2ZXJzaW9uICov DQogI2RlZmluZQlzdGF0ZXMJdW5zaWduZWQNCkBAIC0xMzMsNyArMTM1LDcg QEAgaW50IGVmbGFnczsNCiAJZWZsYWdzID0gR09PREZMQUdTKGVmbGFncyk7 DQogDQogCWlmIChnLT5uc3RhdGVzIDw9IENIQVJfQklUKnNpemVvZihzdGF0 ZXMxKSAmJiAhKGVmbGFncyZSRUdfTEFSR0UpKQ0KLQkJcmV0dXJuKHNtYXRj aGVyKGcsIChjaGFyICopc3RyaW5nLCBubWF0Y2gsIHBtYXRjaCwgZWZsYWdz KSk7DQorCQlyZXR1cm4oc21hdGNoZXIoZywgc3RyaW5nLCBubWF0Y2gsIHBt YXRjaCwgZWZsYWdzKSk7DQogCWVsc2UNCi0JCXJldHVybihsbWF0Y2hlcihn LCAoY2hhciAqKXN0cmluZywgbm1hdGNoLCBwbWF0Y2gsIGVmbGFncykpOw0K KwkJcmV0dXJuKGxtYXRjaGVyKGcsIHN0cmluZywgbm1hdGNoLCBwbWF0Y2gs IGVmbGFncykpOw0KIH0NCg== ---494318816-222447275-1008774943=:20191--