From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13300 invoked by alias); 28 Oct 2011 19:46:51 -0000 Received: (qmail 13223 invoked by uid 22791); 28 Oct 2011 19:46:44 -0000 X-SWARE-Spam-Status: No, hits=2.9 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KAM_STOCKTIP,RCVD_IN_DNSWL_LOW,TW_BJ,TW_GB,TW_YM X-Spam-Check-By: sourceware.org Received: from mail-fx0-f41.google.com (HELO mail-fx0-f41.google.com) (209.85.161.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 28 Oct 2011 19:46:24 +0000 Received: by faat2 with SMTP id t2so1651742faa.0 for ; Fri, 28 Oct 2011 12:46:22 -0700 (PDT) Received: by 10.223.15.10 with SMTP id i10mr8157719faa.17.1319831182301; Fri, 28 Oct 2011 12:46:22 -0700 (PDT) MIME-Version: 1.0 Received: by 10.152.10.106 with HTTP; Fri, 28 Oct 2011 12:46:01 -0700 (PDT) In-Reply-To: References: <4E8DCE67.80507@earthlink.net> <4E92E639.7000402@earthlink.net> <83ipnjs9i1.fsf@gnu.org> <83ipndc92n.fsf@gnu.org> <83ehy0ded8.fsf@gnu.org> <4EA753C4.60408@mentor.com> From: Justin Lebar Date: Fri, 28 Oct 2011 19:48:00 -0000 Message-ID: Subject: Re: Status of 'blacklist' patch? To: Tom Tromey Cc: Eli Zaretskii , Stan Shebs , gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=001517448214c8dae604b061245c X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-10/txt/msg00777.txt.bz2 --001517448214c8dae604b061245c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 3733 I'm sorry about all the formatting issues; it's hard to keep multiple styles in my head at once! I need a set of git hooks to pester me, I guess. > Blank line between intro comment and the start of the function. > I think there are a few instances of this. Only for function definitions, not declarations, right? I don't see blank lines in breakpoint.h, for example. -Justin On Fri, Oct 28, 2011 at 2:13 PM, Tom Tromey wrote: >>>>>> "Justin" =3D=3D Justin Lebar writes: > > Justin> Thanks for the testing advice; I ran the test many times on my > Justin> machine, and it now works without error every time. > > Justin> New roll-up patch is attached. =C2=A0The only difference from v4 = is > Justin> in skip.exp. > > Thanks for persevering. > > Your test cases seem nicely comprehensive; thanks for making the extra > effort. > > I think one more iteration; I would approve-it-with-changes but there is > one non-cosmetic issue. =C2=A0It isn't too major. > > Justin> +/* Attempt to determine architecture of location identified by S= AL. =C2=A0*/ > Justin> +extern struct gdbarch * > Justin> +get_sal_arch (struct symtab_and_line sal); > > In a case like this, indent the continuation line a bit. > > Justin> + =C2=A0 =C2=A0 =C2=A0TRY_CATCH (decode_exception, NOT_FOUND_ERRO= R) > > The second argument to TRY_CATCH actually must be one of the > RETURN_MASK_* constants. =C2=A0Here I suggest RETURN_MASK_ERROR. > > Justin> + =C2=A0 =C2=A0 =C2=A0if (decode_exception.reason < 0) > Justin> + =C2=A0 =C2=A0 =C2=A0 =C2=A0{ > > Then here you can: > > =C2=A0 =C2=A0if (decode_exception.reason < 0) > =C2=A0 =C2=A0 =C2=A0{ > =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (decode_exception.error !=3D NOT_FOUND_ERR= OR) > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 throw_exception (decode_exception); > =C2=A0 =C2=A0 =C2=A0 =C2=A0 ... > > Justin> + =C2=A0ALL_SKIPLIST_ENTRIES (e) > Justin> + =C2=A0 =C2=A0if (arg =3D=3D 0 || number_is_in_list(arg, e->numb= er)) > > Space before the open paren. > > Justin> + =C2=A0 =C2=A0 =C2=A0if (arg !=3D 0 && !number_is_in_list(arg, e= ->number)) > > Likewise. > > This appears in a few more places -- all uses of number_is_in_list. > > Justin> +/* Create a skiplist entry for the given pc corresponding to the= given > Justin> + =C2=A0 function name and add it to the list. */ > Justin> +static void > Justin> +skip_function_pc (CORE_ADDR pc, char *name, struct gdbarch *arch, > > Blank line between intro comment and the start of the function. > I think there are a few instances of this. > > Justin> +gdb_start > Justin> +gdb_load ${binfile_main} > > Use clean_restart here instead. > > Justin> +gdb_test "skip file ${srcfile_lib}" \ > Justin> +"File ${srcfile_lib} will be skipped when stepping." \ > Justin> +"ignoring file in solib" \ > Justin> +"No source file named ${srcfile_lib}.* > Justin> +Ignore file pending future shared library load.*"\ > Justin> +"y" > > Code like this is more readable if you indent the continuation lines. > I realize this can't be done for every line here, and that is ok -- but > the lines following a "\" should be indented. > There should be a space before the last "\". > > Justin> +gdb_test "info skip" \ > Justin> +"Num\\s+Type\\s+Enb\\s+Address\\s+What\\s* > Justin> +1\\s+file\\s+y\\s+\\s+${srcfile_lib} \\(PENDING\\)\\s*" \ > Justin> +"info skip with pending file" > > Indentation. > > Justin> +gdb_test "info skip" \ > Justin> +"Num\\s+Type\\s+Enb\\s+Address\\s+What\\s* > Justin> +1\\s+file\\s+y\\s+\\s+.*${srcfile_lib}\\s*" \ > Justin> +"info skip with pending file" > > Indentation. > > There are a few more of these. > > Justin> +gdb_exit > Justin> +gdb_start > Justin> +gdb_load ${binfile_main} > > clean_restart > > Tom > --001517448214c8dae604b061245c Content-Type: text/x-patch; charset=US-ASCII; name="skip-6.diff" Content-Disposition: attachment; filename="skip-6.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gublcxju0 Content-length: 76690 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IGExNjZkMTQuLjBmMTAyMjUgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEx LTEwLTA2ICBKdXN0aW4gTGViYXIgIDxqdXN0aW4ubGViYXJAZ21haWwuY29t PgorCisJKiBNYWtlZmlsZS5pbjogKFNGSUxFUyk6IEFkZCBza2lwLmMuCisJ KEhGSUxFU19OT19TUkNESVIpOiBBZGQgc2tpcC5oLgorCShDT01NT05fT0JT KTogQWRkIHNraXAuby4KKwkqIHNraXAuaCwgc2tpcC5jOiBOZXcuCisJKiBi cmVha3BvaW50LmggKHNldF9kZWZhdWx0X2JyZWFrcG9pbnQpOiBSZW1vdmUu CisJKGdldF9zYWxfYXJjaCk6IERlY2xhcmUuCisJKiBicmVha3BvaW50LmM6 IFJlbW92ZSBkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQsCisJZGVmYXVsdF9i cmVha3BvaW50X2FkZHJlc3MsIGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWIs CisJZGVmYXVsdF9icmVha3BvaW50X2xpbmUsIGRlZmF1bHRfYnJlYWtwb2lu dF9wc3BhY2UgdmFyaWFibGVzLgorCShnZXRfc2FsX2FyY2gpOiBNYWtlIHB1 YmxpYy4KKwkoc2V0X2RlZmF1bHRfYnJlYWtwb2ludCk6IFJlbW92ZS4KKwko cGFyc2VfYnJlYWtwb2ludF9zYWxzLCBjcmVhdGVfYnJlYWtwb2ludCwgY2xl YXJfY29tbWFuZCwKKwlkZWNvZGVfbGluZV9zcGVjXzEpOiBSZW1vdmUgdXNl cyBvZiBkZWZhdWx0X2JyZWFrcG9pbnQgdmFyaWFibGVzOworCXJlcGxhY2Vk IHdpdGggZnVuY3Rpb24gY2FsbHMgaW50byBzdGFjay5jLgorCSogY2xpL2Ns aS1jbWRzLmg6IEFkZCBjbWRfbGlzdF9lbGVtZW50ICpza2lwbGlzdC4KKwkq IGNsaS9jbGktY21kcy5jOiBBZGQgc2tpcGxpc3QuCisJKGluaXRfY21kX2xp c3RzKTogSW5pdGlhbGl6ZSBza2lwbGlzdC4KKwkoaW5pdF9jbGlfY21kcyk6 IEZpeCBjb21tZW50IChjbGFzc2VzIG9mIGNvbW1hbmRzIGFwcGVhciBpbgor CWFscGhhYmV0aWNhbCBvcmRlcikuCisJKiBpbmZydW4uYyAoaGFuZGxlX2lu ZmVyaW9yX2V2ZW50KTogQWRkIGNoZWNrIHRoYXQgd2UgZG9uJ3Qgc3RlcCBp bnRvCisJYSBmdW5jdGlvbiB3aG9zZSBwYyBpcyBtYXJrZWQgZm9yIHNraXAu CisJKiBzdGFjay5jOiBEZWNsYXJlIGxhc3RfZGlzcGxheWVkX3NhbF92YWxp ZCwgbGFzdF9kaXNwbGF5ZWRfcHNwYWNlLAorCWxhc3RfZGlzcGxheWVkX2Fk ZHIsIGxhc3RfZGlzcGxheWVkX3N5bXRhYiwgbGFzdF9kaXNwbGF5ZWRfbGlu ZQorCXZhcmlhYmxlcy4KKwkoc2V0X2xhc3RfZGlzcGxheWVkX3NhbCk6IE5l dyBzdGF0aWMgZnVuY3Rpb24uCisJKHByaW50X2ZyYW1lX2luZm8pOiBTd2l0 Y2ggY2FsbCB0byBzZXRfZGVmYXVsdF9icmVha3BvaW50IHRvIGNhbGwgdG8K KwlzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsLgorCShjbGVhcl9sYXN0X2Rpc3Bs YXllZF9zYWwsIGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCwKKwlnZXRf bGFzdF9kaXNwbGF5ZWRfcHNwYWNlLCBnZXRfbGFzdF9kaXNwbGF5ZWRfYWRk ciwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiLCBnZXRfbGFzdF9kaXNw bGF5ZWRfbGluZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsKTogTmV3IHB1 YmxpYyBmdW5jdGlvbnMuCisJKiBzdGFjay5oIChjbGVhcl9sYXN0X2Rpc3Bs YXllZF9zYWwsIGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCwKKwlnZXRf bGFzdF9kaXNwbGF5ZWRfcHNwYWNlLCBnZXRfbGFzdF9kaXNwbGF5ZWRfYWRk ciwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiLCBnZXRfbGFzdF9kaXNw bGF5ZWRfbGluZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsKTogRGVjbGFy ZS4KKwogMjAxMS0xMC0wNSAgVHJpc3RhbiBHaW5nb2xkICA8Z2luZ29sZEBh ZGFjb3JlLmNvbT4KIAogCSogYWRhLXRhc2tzLmMgKHJlYWRfYXRjYik6IE1h a2UgcmF2ZW5zY2FyX3Rhc2tfbmFtZSBzdGF0aWMuCmRpZmYgLS1naXQgYS9n ZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KaW5kZXggODI2ZDMz OS4uZDZiMDA0YiAxMDA2NDQKLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKyBi L2dkYi9NYWtlZmlsZS5pbgpAQCAtNzE5LDcgKzcxOSw3IEBAIFNGSUxFUyA9 IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFs cHJpbnQuYyBhZGEtdGFza3MuYyBcCiAJcHJvbG9ndWUtdmFsdWUuYyBwc3lt dGFiLmMgXAogCXJlZ2NhY2hlLmMgcmVnZ3JvdXBzLmMgcmVtb3RlLmMgcmVt b3RlLWZpbGVpby5jIHJldmVyc2UuYyBcCiAJc2VudGluZWwtZnJhbWUuYyBc Ci0Jc2VyaWFsLmMgc2VyLWJhc2UuYyBzZXItdW5peC5jIFwKKwlzZXJpYWwu YyBzZXItYmFzZS5jIHNlci11bml4LmMgc2tpcC5jIFwKIAlzb2xpYi5jIHNv bGliLXRhcmdldC5jIHNvdXJjZS5jIFwKIAlzdGFic3JlYWQuYyBzdGFjay5j IHN0ZC1yZWdzLmMgc3ltZmlsZS5jIHN5bWZpbGUtbWVtLmMgc3ltbWlzYy5j IFwKIAlzeW10YWIuYyBcCkBAIC04MTksNyArODE5LDcgQEAgb3NkYXRhLmgg cHJvY2ZzLmggcHl0aG9uL3B5LWV2ZW50LmggcHl0aG9uL3B5LWV2ZW50cy5o IHB5dGhvbi9weS1zdG9wZXZlbnQuaCBcCiBweXRob24vcHl0aG9uLWludGVy bmFsLmggcHl0aG9uL3B5dGhvbi5oIHJhdmVuc2Nhci10aHJlYWQuaCByZWNv cmQuaCBcCiBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhwdXguaCBzb2xp Yi1zcHUuaCB3aW5kb3dzLW5hdC5oIHhjb2ZmcmVhZC5oIFwKIGdudWxpYi9l eHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9jKytkZWZzLmggZ251 bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAotZ251bGliL3N0ZGRlZi5pbi5o IGlubGluZS1mcmFtZS5oIFwKK2dudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUt ZnJhbWUuaCBza2lwLmggXAogY29tbW9uL2NvbW1vbi11dGlscy5oIGNvbW1v bi94bWwtdXRpbHMuaCBjb21tb24vYnVmZmVyLmggY29tbW9uL3B0aWQuaCBc CiBjb21tb24vbGludXgtb3NkYXRhLmgKIApAQCAtOTA3LDcgKzkwNyw3IEBA IENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMpICQoWVlP QkopIFwKIAl4bWwtc3VwcG9ydC5vIHhtbC1zeXNjYWxsLm8geG1sLXV0aWxz Lm8gXAogCXRhcmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQtbWVtb3J5Lm8g eG1sLXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCiAJaW5mZXJpb3IubyBvc2Rh dGEubyBnZGJfdXNsZWVwLm8gcmVjb3JkLm8gZ2NvcmUubyBcCi0Jaml0Lm8g cHJvZ3NwYWNlLm8gXAorCWppdC5vIHByb2dzcGFjZS5vIHNraXAubyBcCiAJ Y29tbW9uLXV0aWxzLm8gYnVmZmVyLm8gcHRpZC5vCiAKIFRTT0JTID0gaW5m bG93Lm8KZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MKaW5kZXgg NGQ0MzRjNS4uODIyNWNmOCAxMDA2NDQKLS0tIGEvZ2RiL05FV1MKKysrIGIv Z2RiL05FV1MKQEAgLTMsNiArMyw5IEBACiAKICoqKiBDaGFuZ2VzIHNpbmNl IEdEQiA3LjMuMQogCisqIEdEQiBub3cgYWxsb3dzIHlvdSB0byBza2lwIHVu aW50ZXJlc3RpbmcgZnVuY3Rpb25zIGFuZCBmaWxlcyB3aGVuCisgIHN0ZXBw aW5nIHdpdGggdGhlICJza2lwIGZ1bmN0aW9uIiBhbmQgInNraXAgZmlsZSIg Y29tbWFuZHMuCisKICogR0RCIGhhcyB0d28gbmV3IGNvbW1hbmRzOiAic2V0 IHJlbW90ZSBoYXJkd2FyZS13YXRjaHBvaW50LWxlbmd0aC1saW1pdCIKICAg YW5kICJzaG93IHJlbW90ZSBoYXJkd2FyZS13YXRjaHBvaW50LWxlbmd0aC1s aW1pdCIuICBUaGVzZSBhbGxvd3MgdG8KICAgc2V0IG9yIHNob3cgdGhlIG1h eGltdW0gbGVuZ3RoIGxpbWl0IChpbiBieXRlcykgb2YgYSByZW1vdGUKZGlm ZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5j CmluZGV4IDA4ZmY2OWIuLmI0MWZiNzkgMTAwNjQ0Ci0tLSBhL2dkYi9icmVh a3BvaW50LmMKKysrIGIvZ2RiL2JyZWFrcG9pbnQuYwpAQCAtNjUsNiArNjUs OCBAQAogI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCiAjaW5jbHVkZSAiY2xp L2NsaS11dGlscy5oIgogI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIKKyNp bmNsdWRlICJzdGFjay5oIgorI2luY2x1ZGUgInNraXAuaCIKIAogLyogcmVh ZGxpbmUgaW5jbHVkZSBmaWxlcyAqLwogI2luY2x1ZGUgInJlYWRsaW5lL3Jl YWRsaW5lLmgiCkBAIC01NzIsMTkgKzU3NCw2IEBAIG1ha2VfY2xlYW51cF9k ZWNyZWZfY291bnRlZF9jb21tYW5kX2xpbmUgKHN0cnVjdCBjb3VudGVkX2Nv bW1hbmRfbGluZSAqKmNtZHApCiAgIHJldHVybiBtYWtlX2NsZWFudXAgKGRv X2NsZWFudXBfY291bnRlZF9jb21tYW5kX2xpbmUsIGNtZHApOwogfQogCi0v KiBEZWZhdWx0IGFkZHJlc3MsIHN5bXRhYiBhbmQgbGluZSB0byBwdXQgYSBi cmVha3BvaW50IGF0Ci0gICBmb3IgImJyZWFrIiBjb21tYW5kIHdpdGggbm8g YXJnLgotICAgSWYgZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkIGlzIHplcm8s IHRoZSBvdGhlciB0aHJlZSBhcmUKLSAgIG5vdCB2YWxpZCwgYW5kICJicmVh ayIgd2l0aCBubyBhcmcgaXMgYW4gZXJyb3IuCi0KLSAgIFRoaXMgc2V0IGJ5 IHByaW50X3N0YWNrX2ZyYW1lLCB3aGljaCBjYWxscyBzZXRfZGVmYXVsdF9i cmVha3BvaW50LiAgKi8KLQotaW50IGRlZmF1bHRfYnJlYWtwb2ludF92YWxp ZDsKLUNPUkVfQUREUiBkZWZhdWx0X2JyZWFrcG9pbnRfYWRkcmVzczsKLXN0 cnVjdCBzeW10YWIgKmRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7Ci1pbnQg ZGVmYXVsdF9icmVha3BvaW50X2xpbmU7Ci1zdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsKLQogDAogLyogUmV0dXJu IHRoZSBicmVha3BvaW50IHdpdGggdGhlIHNwZWNpZmllZCBudW1iZXIsIG9y IE5VTEwKICAgIGlmIHRoZSBudW1iZXIgZG9lcyBub3QgcmVmZXIgdG8gYW4g ZXhpc3RpbmcgYnJlYWtwb2ludC4gICovCkBAIC01MzM5LDIwICs1MzI4LDYg QEAgZGVzY3JpYmVfb3RoZXJfYnJlYWtwb2ludHMgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAogICAgIH0KIH0KIAwKLS8qIFNldCB0aGUgZGVmYXVsdCBw bGFjZSB0byBwdXQgYSBicmVha3BvaW50Ci0gICBmb3IgdGhlIGBicmVhaycg Y29tbWFuZCB3aXRoIG5vIGFyZ3VtZW50cy4gICovCi0KLXZvaWQKLXNldF9k ZWZhdWx0X2JyZWFrcG9pbnQgKGludCB2YWxpZCwgc3RydWN0IHByb2dyYW1f c3BhY2UgKnBzcGFjZSwKLQkJCUNPUkVfQUREUiBhZGRyLCBzdHJ1Y3Qgc3lt dGFiICpzeW10YWIsCi0JCQlpbnQgbGluZSkKLXsKLSAgZGVmYXVsdF9icmVh a3BvaW50X3ZhbGlkID0gdmFsaWQ7Ci0gIGRlZmF1bHRfYnJlYWtwb2ludF9w c3BhY2UgPSBwc3BhY2U7Ci0gIGRlZmF1bHRfYnJlYWtwb2ludF9hZGRyZXNz ID0gYWRkcjsKLSAgZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYiA9IHN5bXRh YjsKLSAgZGVmYXVsdF9icmVha3BvaW50X2xpbmUgPSBsaW5lOwotfQogCiAv KiBSZXR1cm4gdHJ1ZSBpZmYgaXQgaXMgbWVhbmluZ2Z1bCB0byB1c2UgdGhl IGFkZHJlc3MgbWVtYmVyIG9mCiAgICBCUFQuICBGb3Igc29tZSBicmVha3Bv aW50IHR5cGVzLCB0aGUgYWRkcmVzcyBtZW1iZXIgaXMgaXJyZWxldmFudApA QCAtNTc2NCw3ICs1NzM5LDcgQEAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25f ZnVuY3Rpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jLCBpbnQgZXhwbGlj aXRfbG9jKQogfQogCiAvKiBBdHRlbXB0IHRvIGRldGVybWluZSBhcmNoaXRl Y3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwuICAqLwotc3Rh dGljIHN0cnVjdCBnZGJhcmNoICoKK3N0cnVjdCBnZGJhcmNoICoKIGdldF9z YWxfYXJjaCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWwpCiB7CiAgIGlm IChzYWwuc2VjdGlvbikKQEAgLTc1NDMsMjQgKzc1MTgsMjYgQEAgcGFyc2Vf YnJlYWtwb2ludF9zYWxzIChjaGFyICoqYWRkcmVzcywKICAgaWYgKCgqYWRk cmVzcykgPT0gTlVMTAogICAgICAgfHwgKHN0cm5jbXAgKCgqYWRkcmVzcyks ICJpZiIsIDIpID09IDAgJiYgaXNzcGFjZSAoKCphZGRyZXNzKVsyXSkpKQog ICAgIHsKLSAgICAgIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCisg ICAgICAvKiBUaGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50LCBpZiBpdCdz IHZhbGlkLCBpcyBvdXIgZGVmYXVsdCBicmVha3BvaW50CisgICAgICAgICBh ZGRyZXNzLiAqLworICAgICAgaWYgKGxhc3RfZGlzcGxheWVkX3NhbF9pc192 YWxpZCAoKSkKIAl7CiAJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsK IAogCSAgaW5pdF9zYWwgKCZzYWwpOwkJLyogSW5pdGlhbGl6ZSB0byB6ZXJv ZXMuICAqLwogCSAgc2Fscy0+c2FscyA9IChzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lICopCiAJICAgIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHN5bXRhYl9h bmRfbGluZSkpOwotCSAgc2FsLnBjID0gZGVmYXVsdF9icmVha3BvaW50X2Fk ZHJlc3M7Ci0JICBzYWwubGluZSA9IGRlZmF1bHRfYnJlYWtwb2ludF9saW5l OwotCSAgc2FsLnN5bXRhYiA9IGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7 Ci0JICBzYWwucHNwYWNlID0gZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsK LQkgIHNhbC5zZWN0aW9uID0gZmluZF9wY19vdmVybGF5IChzYWwucGMpOwor CisJICAvKiBTZXQgc2FsJ3MgcHNwYWNlLCBwYywgc3ltdGFiLCBhbmQgbGlu ZSB0byB0aGUgdmFsdWVzCisJICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBs YXN0IGNhbGwgdG8gcHJpbnRfZnJhbWVfaW5mby4gKi8KKwkgIGdldF9sYXN0 X2Rpc3BsYXllZF9zYWwgKCZzYWwpOworICAgICAgICAgIHNhbC5zZWN0aW9u ID0gZmluZF9wY19vdmVybGF5IChzYWwucGMpOwogCiAJICAvKiAiYnJlYWsi IHdpdGhvdXQgYXJndW1lbnRzIGlzIGVxdWl2YWxlbnQgdG8gImJyZWFrICpQ QyIKLQkgICAgIHdoZXJlIFBDIGlzIHRoZSBkZWZhdWx0X2JyZWFrcG9pbnRf YWRkcmVzcy4gIFNvIG1ha2Ugc3VyZQotCSAgICAgdG8gc2V0IHNhbC5leHBs aWNpdF9wYyB0byBwcmV2ZW50IEdEQiBmcm9tIHRyeWluZyB0bwotCSAgICAg ZXhwYW5kIHRoZSBsaXN0IG9mIHNhbHMgdG8gaW5jbHVkZSBhbGwgb3RoZXIg aW5zdGFuY2VzCi0JICAgICB3aXRoIHRoZSBzYW1lIHN5bXRhYiBhbmQgbGlu ZS4gICovCisJICAgICB3aGVyZSBQQyBpcyB0aGUgbGFzdCBkaXNwbGF5ZWQg Y29kZXBvaW50J3MgYWRkcmVzcy4gIFNvCisJICAgICBtYWtlIHN1cmUgdG8g c2V0IHNhbC5leHBsaWNpdF9wYyB0byBwcmV2ZW50IEdEQiBmcm9tCisJICAg ICB0cnlpbmcgdG8gZXhwYW5kIHRoZSBsaXN0IG9mIHNhbHMgdG8gaW5jbHVk ZSBhbGwgb3RoZXIKKwkgICAgIGluc3RhbmNlcyB3aXRoIHRoZSBzYW1lIHN5 bXRhYiBhbmQgbGluZS4gICovCiAJICBzYWwuZXhwbGljaXRfcGMgPSAxOwog CiAJICBzYWxzLT5zYWxzWzBdID0gc2FsOwpAQCAtNzU3NCwxOSArNzU1MSwy MiBAQCBwYXJzZV9icmVha3BvaW50X3NhbHMgKGNoYXIgKiphZGRyZXNzLAog ICAgICAgLyogRm9yY2UgYWxtb3N0IGFsbCBicmVha3BvaW50cyB0byBiZSBp biB0ZXJtcyBvZiB0aGUKICAgICAgICAgIGN1cnJlbnRfc291cmNlX3N5bXRh YiAod2hpY2ggaXMgZGVjb2RlX2xpbmVfMSdzIGRlZmF1bHQpLgogICAgICAg ICAgVGhpcyBzaG91bGQgcHJvZHVjZSB0aGUgcmVzdWx0cyB3ZSB3YW50IGFs bW9zdCBhbGwgb2YgdGhlCi0gICAgICAgICB0aW1lIHdoaWxlIGxlYXZpbmcg ZGVmYXVsdF9icmVha3BvaW50XyogYWxvbmUuCisJIHRpbWUgd2hpbGUgbGVh dmluZyB0aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50IHBvaW50ZXJzCisJ IGFsb25lLgogCiAgICAgICAgICBPYmpDOiBIb3dldmVyLCBkb24ndCBtYXRj aCBhbiBPYmplY3RpdmUtQyBtZXRob2QgbmFtZSB3aGljaAogICAgICAgICAg bWF5IGhhdmUgYSAnKycgb3IgJy0nIHN1Y2NlZWRlZCBieSBhICdbJyAqLwog CSAKICAgICAgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgY3Vyc2FsID0gZ2V0 X2N1cnJlbnRfc291cmNlX3N5bXRhYl9hbmRfbGluZSAoKTsKIAkJCQotICAg ICAgaWYgKGRlZmF1bHRfYnJlYWtwb2ludF92YWxpZAorICAgICAgaWYgKGxh c3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKQogCSAgJiYgKCFjdXJzYWwu c3ltdGFiCiAgCSAgICAgIHx8ICgoc3RyY2hyICgiKy0iLCAoKmFkZHJlc3Mp WzBdKSAhPSBOVUxMKQogIAkJICAmJiAoKCphZGRyZXNzKVsxXSAhPSAnWycp KSkpCi0JKnNhbHMgPSBkZWNvZGVfbGluZV8xIChhZGRyZXNzLCAxLCBkZWZh dWx0X2JyZWFrcG9pbnRfc3ltdGFiLAotCQkJICAgICAgIGRlZmF1bHRfYnJl YWtwb2ludF9saW5lLCBjYW5vbmljYWwpOworCSpzYWxzID0gZGVjb2RlX2xp bmVfMSAoYWRkcmVzcywgMSwKKwkJCSAgICAgICBnZXRfbGFzdF9kaXNwbGF5 ZWRfc3ltdGFiICgpLAorCQkJICAgICAgIGdldF9sYXN0X2Rpc3BsYXllZF9s aW5lICgpLAorCQkJICAgICAgIGNhbm9uaWNhbCk7CiAgICAgICBlbHNlCiAJ KnNhbHMgPSBkZWNvZGVfbGluZV8xIChhZGRyZXNzLCAxLCAoc3RydWN0IHN5 bXRhYiAqKSBOVUxMLCAwLAogCQkgICAgICAgICAgICAgICBjYW5vbmljYWwp OwpAQCAtOTYxMSw5ICs5NTkxLDExIEBAIHVudGlsX2JyZWFrX2NvbW1hbmQg KGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgIC8q IFNldCBhIGJyZWFrcG9pbnQgd2hlcmUgdGhlIHVzZXIgd2FudHMgaXQgYW5k IGF0IHJldHVybiBmcm9tCiAgICAgIHRoaXMgZnVuY3Rpb24uICAqLwogCi0g IGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCi0gICAgc2FscyA9IGRl Y29kZV9saW5lXzEgKCZhcmcsIDEsIGRlZmF1bHRfYnJlYWtwb2ludF9zeW10 YWIsCi0JCQkgIGRlZmF1bHRfYnJlYWtwb2ludF9saW5lLCBOVUxMKTsKKyAg aWYgKGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKSkKKyAgICBzYWxz ID0gZGVjb2RlX2xpbmVfMSAoJmFyZywgMSwKKwkJCSAgZ2V0X2xhc3RfZGlz cGxheWVkX3N5bXRhYiAoKSwKKwkJCSAgZ2V0X2xhc3RfZGlzcGxheWVkX2xp bmUgKCksCisJCQkgIE5VTEwpOwogICBlbHNlCiAgICAgc2FscyA9IGRlY29k ZV9saW5lXzEgKCZhcmcsIDEsIChzdHJ1Y3Qgc3ltdGFiICopIE5VTEwsIDAs IE5VTEwpOwogCkBAIC0xMDEzNSwxMCArMTAxMTcsMTEgQEAgY2xlYXJfY29t bWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiAJeG1hbGxvYyAoc2l6 ZW9mIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lKSk7CiAgICAgICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBzYWxzLnNhbHMpOwogICAgICAgaW5pdF9zYWwgKCZz YWwpOwkJLyogSW5pdGlhbGl6ZSB0byB6ZXJvZXMuICAqLwotICAgICAgc2Fs LmxpbmUgPSBkZWZhdWx0X2JyZWFrcG9pbnRfbGluZTsKLSAgICAgIHNhbC5z eW10YWIgPSBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFiOwotICAgICAgc2Fs LnBjID0gZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3M7Ci0gICAgICBzYWwu cHNwYWNlID0gZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsKKworICAgICAg LyogU2V0IHNhbCdzIGxpbmUsIHN5bXRhYiwgcGMsIGFuZCBwc3BhY2UgdG8g dGhlIHZhbHVlcworCSBjb3JyZXNwb25kaW5nIHRvIHRoZSBsYXN0IGNhbGwg dG8gcHJpbnRfZnJhbWVfaW5mby4gIElmIHRoZQorCSBjb2RlcG9pbnQgaXMg bm90IHZhbGlkLCB0aGlzIHdpbGwgc2V0IGFsbCB0aGUgZmllbGRzIHRvIDAu ICovCisgICAgICBnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsICgmc2FsKTsKICAg ICAgIGlmIChzYWwuc3ltdGFiID09IDApCiAJZXJyb3IgKF8oIk5vIHNvdXJj ZSBmaWxlIHNwZWNpZmllZC4iKSk7CiAKQEAgLTExOTg2LDYgKzExOTY5LDkg QEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCiAgIGNyZWF0ZV9sb25nam1w X21hc3Rlcl9icmVha3BvaW50ICgpOwogICBjcmVhdGVfc3RkX3Rlcm1pbmF0 ZV9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKICAgY3JlYXRlX2V4Y2VwdGlvbl9t YXN0ZXJfYnJlYWtwb2ludCAoKTsKKworICAvKiBXaGlsZSB3ZSdyZSBhdCBp dCwgcmVzZXQgdGhlIHNraXAgbGlzdCB0b28uICovCisgIHNraXBfcmVfc2V0 ICgpOwogfQogDAogLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2YgdGhp cyBicmVha3BvaW50OgpAQCAtMTI0MzUsNyArMTI0MjEsOCBAQCBpbnZhbGlk YXRlX2JwX3ZhbHVlX29uX21lbW9yeV9jaGFuZ2UgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuLAogICAgICAgfQogfQogCi0vKiBVc2UgZGVmYXVsdF9icmVh a3BvaW50XydzLCBvciBub3RoaW5nIGlmIHRoZXkgYXJlbid0IHZhbGlkLiAg Ki8KKy8qIFVzZSB0aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50J3MgdmFs dWVzLCBvciBub3RoaW5nCisgICBpZiB0aGV5IGFyZW4ndCB2YWxpZC4gKi8K IAogc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzCiBkZWNvZGVfbGluZV9zcGVj XzEgKGNoYXIgKnN0cmluZywgaW50IGZ1bmZpcnN0bGluZSkKQEAgLTEyNDQ0 LDEwICsxMjQzMSwxMCBAQCBkZWNvZGVfbGluZV9zcGVjXzEgKGNoYXIgKnN0 cmluZywgaW50IGZ1bmZpcnN0bGluZSkKIAogICBpZiAoc3RyaW5nID09IDAp CiAgICAgZXJyb3IgKF8oIkVtcHR5IGxpbmUgc3BlY2lmaWNhdGlvbi4iKSk7 Ci0gIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCisgIGlmIChsYXN0 X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQgKCkpCiAgICAgc2FscyA9IGRlY29k ZV9saW5lXzEgKCZzdHJpbmcsIGZ1bmZpcnN0bGluZSwKLQkJCSAgZGVmYXVs dF9icmVha3BvaW50X3N5bXRhYiwKLQkJCSAgZGVmYXVsdF9icmVha3BvaW50 X2xpbmUsCisJCQkgIGdldF9sYXN0X2Rpc3BsYXllZF9zeW10YWIgKCksCisJ CQkgIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lICgpLAogCQkJICBOVUxMKTsK ICAgZWxzZQogICAgIHNhbHMgPSBkZWNvZGVfbGluZV8xICgmc3RyaW5nLCBm dW5maXJzdGxpbmUsCmRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5oIGIv Z2RiL2JyZWFrcG9pbnQuaAppbmRleCA1ZTVkMWI5Li5kOGE3NjAxIDEwMDY0 NAotLS0gYS9nZGIvYnJlYWtwb2ludC5oCisrKyBiL2dkYi9icmVha3BvaW50 LmgKQEAgLTEwMzMsOSArMTAzMyw2IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtw b2ludCAqY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVh a3BvaW50ICpicGt0KTsKIAogZXh0ZXJuIHZvaWQgc2V0X2lnbm9yZV9jb3Vu dCAoaW50LCBpbnQsIGludCk7CiAKLWV4dGVybiB2b2lkIHNldF9kZWZhdWx0 X2JyZWFrcG9pbnQgKGludCwgc3RydWN0IHByb2dyYW1fc3BhY2UgKiwKLQkJ CQkgICAgQ09SRV9BRERSLCBzdHJ1Y3Qgc3ltdGFiICosIGludCk7Ci0KIGV4 dGVybiB2b2lkIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51bSBpbmZf Y29udGV4dCk7CiAKIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVh bnVwX2RlbGV0ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsK QEAgLTEzNTksNCArMTM1Niw3IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2lu dCAqaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRzIChpbnQgKCopIChzdHJ1Y3Qg YnJlYWtwb2ludCAqCiAKIGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3Ag KHN0cnVjdCBicmVha3BvaW50ICopOwogCisvKiBBdHRlbXB0IHRvIGRldGVy bWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBT QUwuICAqLworZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICpnZXRfc2FsX2FyY2gg KHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsKTsKKwogI2VuZGlmIC8qICFk ZWZpbmVkIChCUkVBS1BPSU5UX0gpICovCmRpZmYgLS1naXQgYS9nZGIvY2xp L2NsaS1jbWRzLmMgYi9nZGIvY2xpL2NsaS1jbWRzLmMKaW5kZXggY2NmNmVh Ni4uZGFiM2ExMiAxMDA2NDQKLS0tIGEvZ2RiL2NsaS9jbGktY21kcy5jCisr KyBiL2dkYi9jbGkvY2xpLWNtZHMuYwpAQCAtMTg1LDYgKzE4NSw4IEBAIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzZXRjaGVja2xpc3Q7CiAKIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpzaG93Y2hlY2tsaXN0OwogCitzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqc2tpcGxpc3Q7CisKIC8qIENvbW1hbmQgdHJh Y2luZyBzdGF0ZS4gICovCiAKIGludCBzb3VyY2VfdmVyYm9zZSA9IDA7CkBA IC0xMzI5LDYgKzEzMzEsNyBAQCBpbml0X2NtZF9saXN0cyAodm9pZCkKICAg c2hvd3ByaW50bGlzdCA9IE5VTEw7CiAgIHNldGNoZWNrbGlzdCA9IE5VTEw7 CiAgIHNob3djaGVja2xpc3QgPSBOVUxMOworICBza2lwbGlzdCA9IE5VTEw7 CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMzk0LDcgKzEzOTcsNyBAQCBpbml0 X2NsaV9jbWRzICh2b2lkKQogICBjaGFyICpzb3VyY2VfaGVscF90ZXh0Owog CiAgIC8qIERlZmluZSB0aGUgY2xhc3NlcyBvZiBjb21tYW5kcy4KLSAgICAg VGhleSB3aWxsIGFwcGVhciBpbiB0aGUgaGVscCBsaXN0IGluIHRoZSByZXZl cnNlIG9mIHRoaXMgb3JkZXIuICAqLworICAgICBUaGV5IHdpbGwgYXBwZWFy IGluIHRoZSBoZWxwIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLiAgKi8K IAogICBhZGRfY21kICgiaW50ZXJuYWxzIiwgY2xhc3NfbWFpbnRlbmFuY2Us IE5VTEwsIF8oIlwKIE1haW50ZW5hbmNlIGNvbW1hbmRzLlxuXApkaWZmIC0t Z2l0IGEvZ2RiL2NsaS9jbGktY21kcy5oIGIvZ2RiL2NsaS9jbGktY21kcy5o CmluZGV4IGU3OWRjZjAuLjczY2NkZDIgMTAwNjQ0Ci0tLSBhL2dkYi9jbGkv Y2xpLWNtZHMuaAorKysgYi9nZGIvY2xpL2NsaS1jbWRzLmgKQEAgLTEwNiw2 ICsxMDYsOCBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNl dGNoZWNrbGlzdDsKIAogZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpzaG93Y2hlY2tsaXN0OwogCitleHRlcm4gc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKnNraXBsaXN0OworCiAvKiBFeHBvcnRlZCB0byBnZGIvdG9wLmMg Ki8KIAogdm9pZCBpbml0X2NtZF9saXN0cyAodm9pZCk7CmRpZmYgLS1naXQg YS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpp bmRleCBkZDBmN2Y2Li4zODJkZmQ0IDEwMDY0NAotLS0gYS9nZGIvZG9jL2dk Yi50ZXhpbmZvCisrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KQEAgLTQ4NTQs NiArNDg1NCwxMTEgQEAgcHJvY2VlZCB1bnRpbCB0aGUgZnVuY3Rpb24gcmV0 dXJucy4KIEFuIGFyZ3VtZW50IGlzIGEgcmVwZWF0IGNvdW50LCBhcyBpbiBA Y29kZXtuZXh0fS4KIEBlbmQgdGFibGUKIAorQG5vZGUgU2tpcHBpbmcgT3Zl ciBGdW5jdGlvbnMgYW5kIEZpbGVzCitAc3Vic2VjdGlvbiBTa2lwcGluZyBP dmVyIEZ1bmN0aW9ucyBhbmQgRmlsZXMKK0BjaW5kZXggc2tpcHBpbmcgb3Zl ciBmdW5jdGlvbnMgYW5kIGZpbGVzCisKK1RoZSBwcm9ncmFtIHlvdSBhcmUg ZGVidWdnaW5nIG1heSBjb250YWluIHNvbWUgZnVuY3Rpb25zIHdoaWNoIGFy ZQordW5pbnRlcmVzdGluZyB0byBkZWJ1Zy4gIFRoZSBAY29kZXtza2lwfSBj b21hbmQgbGV0cyB5b3UgdGVsbCBAdmFsdWV7R0RCTn0gdG8KK3NraXAgYSBm dW5jdGlvbiBvciBhbGwgZnVuY3Rpb25zIGluIGEgZmlsZSB3aGVuIHN0ZXBw aW5nLgorCitGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBD IGZ1bmN0aW9uOgorCitAc21hbGxleGFtcGxlCisxMDEgICAgIGludCBmdW5j KCkKKzEwMiAgICAgQHsKKzEwMyAgICAgICAgIGZvbyhib3JpbmcoKSk7Cisx MDQgICAgICAgICBiYXIoYm9yaW5nKCkpOworMTA1ICAgICBAfQorQGVuZCBz bWFsbGV4YW1wbGUKKworQG5vaW5kZW50CitTdXBwb3NlIHlvdSB3aXNoIHRv IHN0ZXAgaW50byB0aGUgZnVuY3Rpb25zIEBjb2Rle2Zvb30gYW5kIEBjb2Rl e2Jhcn0sIGJ1dCB5b3UKK2FyZSBub3QgaW50ZXJlc3RlZCBpbiBzdGVwcGlu ZyB0aHJvdWdoIEBjb2Rle2JvcmluZ30uICBJZiB5b3UgcnVuIEBjb2Rle3N0 ZXB9CithdCBsaW5lIDEwMywgeW91J2xsIGVudGVyIEBjb2Rle2JvcmluZygp fSwgYnV0IGlmIHlvdSBydW4gQGNvZGV7bmV4dH0sIHlvdSdsbAorc3RlcCBv dmVyIGJvdGggQGNvZGV7Zm9vfSBhbmQgQGNvZGV7Ym9yaW5nfSEKKworT25l IHNvbHV0aW9uIGlzIHRvIEBjb2Rle3N0ZXB9IGludG8gQGNvZGV7Ym9yaW5n fSBhbmQgdXNlIHRoZSBAY29kZXtmaW5pc2h9Citjb21tYW5kIHRvIGltbWVk aWF0ZWx5IGV4aXQgaXQuICBCdXQgdGhpcyBjYW4gYmVjb21lIHRlZGlvdXMg aWYgQGNvZGV7Ym9yaW5nfQoraXMgY2FsbGVkIGZyb20gbWFueSBwbGFjZXMu CisKK0EgbW9yZSBmbGV4aWJsZSBzb2x1dGlvbiBpcyB0byBleGVjdXRlIEBr YmR7c2tpcCBib3Jpbmd9LiAgVGhpcyBpbnN0cnVjdHMKK0B2YWx1ZXtHREJO fSBuZXZlciB0byBzdGVwIGludG8gQGNvZGV7Ym9yaW5nfS4gIE5vdyB3aGVu IHlvdSBleGVjdXRlCitAY29kZXtzdGVwfSBhdCBsaW5lIDEwMywgeW91J2xs IHN0ZXAgb3ZlciBAY29kZXtib3Jpbmd9IGFuZCBkaXJlY3RseSBpbnRvCitA Y29kZXtmb299LgorCitZb3UgY2FuIGFsc28gaW5zdHJ1Y3QgQHZhbHVle0dE Qk59IHRvIHNraXAgYWxsIGZ1bmN0aW9ucyBpbiBhIGZpbGUsIHdpdGgsIGZv cgorZXhhbXBsZSwgQGNvZGV7c2tpcCBmaWxlIGJvcmluZy5jfS4KKworQHRh YmxlIEBjb2RlCitAa2luZGV4IHNraXAgZnVuY3Rpb24KK0BpdGVtIHNraXAg QHJ7W31AdmFye2xpbmVzcGVjfUBye119CitAaXRlbXggc2tpcCBmdW5jdGlv biBAcntbfUB2YXJ7bGluZXNwZWN9QHJ7XX0KK0FmdGVyIHJ1bm5pbmcgdGhp cyBjb21tYW5kLCB0aGUgZnVuY3Rpb24gbmFtZWQgYnkgQHZhcntsaW5lc3Bl Y30gb3IgdGhlCitmdW5jdGlvbiBjb250YWluaW5nIHRoZSBsaW5lIG5hbWVk IGJ5IEB2YXJ7bGluZXNwZWN9IHdpbGwgYmUgc2tpcHBlZCBvdmVyIHdoZW4K K3N0ZXBwaW5nLiAgQHhyZWZ7U3BlY2lmeSBMb2NhdGlvbn0KKworSWYgeW91 IGRvIG5vdCBzcGVjaWZ5IEB2YXJ7bGluZXNwZWN9LCB0aGUgZnVuY3Rpb24g eW91J3JlIGN1cnJlbnRseSBkZWJ1Z2dpbmcKK3dpbGwgYmUgc2tpcHBlZC4K KworKElmIHlvdSBoYXZlIGEgZnVuY3Rpb24gY2FsbGVkIEBjb2Rle2ZpbGV9 IHRoYXQgeW91IHdhbnQgdG8gc2tpcCwgdXNlCitAa2Jke3NraXAgZnVuY3Rp b24gZmlsZX0uKQorCitAa2luZGV4IHNraXAgZmlsZQorQGl0ZW0gc2tpcCBm aWxlIEBye1t9QHZhcntmaWxlbmFtZX1AcntdfQorQWZ0ZXIgcnVubmluZyB0 aGlzIGNvbW1hbmQsIGFueSBmdW5jdGlvbiB3aG9zZSBzb3VyY2UgbGl2ZXMg aW4gQHZhcntmaWxlbmFtZX0KK3dpbGwgYmUgc2tpcHBlZCBvdmVyIHdoZW4g c3RlcHBpbmcuCisKK0lmIHlvdSBkbyBub3Qgc3BlY2lmeSBAdmFye2ZpbGVu YW1lfSwgZnVuY3Rpb25zIHdob3NlIHNvdXJjZSBsaXZlcyBpbiB0aGUgZmls ZQoreW91J3JlIGN1cnJlbnRseSBkZWJ1Z2dpbmcgd2lsbCBiZSBza2lwcGVk LgorQGVuZCB0YWJsZQorCitTa2lwcyBjYW4gYmUgbGlzdGVkLCBkZWxldGVk LCBkaXNhYmxlZCwgYW5kIGVuYWJsZWQsIG11Y2ggbGlrZSBicmVha3BvaW50 cy4KK1RoZXNlIGFyZSB0aGUgY29tbWFuZHMgZm9yIG1hbmFnaW5nIHlvdXIg bGlzdCBvZiBza2lwczoKKworQHRhYmxlIEBjb2RlCitAa2luZGV4IGluZm8g c2tpcAorQGl0ZW0gaW5mbyBza2lwIEBye1t9QHZhcntyYW5nZX1AcntdfQor UHJpbnQgZGV0YWlscyBhYm91dCB0aGUgc3BlY2lmaWVkIHNraXAocykuICBJ ZiBAdmFye3JhbmdlfSBpcyBub3Qgc3BlY2lmaWVkLAorcHJpbnQgYSB0YWJs ZSB3aXRoIGRldGFpbHMgYWJvdXQgYWxsIGZ1bmN0aW9ucyBhbmQgZmlsZXMg bWFya2VkIGZvciBza2lwcGluZy4KK0Bjb2Rle2luZm8gc2tpcH0gcHJpbnRz IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBza2lwOgor CitAdGFibGUgQGVtcGgKK0BpdGVtIElkZW50aWZpZXIKK0EgbnVtYmVyIGlk ZW50aWZ5aW5nIHRoaXMgc2tpcC4KK0BpdGVtIFR5cGUKK1RoZSB0eXBlIG9m IHRoaXMgc2tpcCwgZWl0aGVyIEBzYW1we2Z1bmN0aW9ufSBvciBAc2FtcHtm aWxlfS4KK0BpdGVtIEVuYWJsZWQgb3IgRGlzYWJsZWQKK0VuYWJsZWQgc2tp cHMgYXJlIG1hcmtlZCB3aXRoIEBzYW1we3l9LiAgRGlzYWJsZWQgc2tpcHMg YXJlIG1hcmtlZCB3aXRoIEBzYW1we259LgorQGl0ZW0gQWRkcmVzcworRm9y IGZ1bmN0aW9uIHNraXBzLCB0aGlzIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIGFk ZHJlc3MgaW4gbWVtb3J5IG9mIHRoZSBmdW5jdGlvbgorYmVpbmcgc2tpcHBl ZC4gIElmIHlvdSd2ZSBzZXQgYSBmdW5jdGlvbiBza2lwIG9uIGEgZnVuY3Rp b24gd2hpY2ggaGFzIG5vdCB5ZXQKK2JlZW4gbG9hZGVkLCB0aGlzIGZpZWxk IHdpbGwgY29udGFpbiBAc2FtcHs8UEVORElORz59LiAgT25jZSBhIHNoYXJl ZCBsaWJyYXJ5Cit3aGljaCBoYXMgdGhlIGZ1bmN0aW9uIGlzIGxvYWRlZCwg QGNvZGV7aW5mbyBza2lwfSB3aWxsIHNob3cgdGhlIGZ1bmN0aW9uJ3MKK2Fk ZHJlc3MgaGVyZS4KK0BpdGVtIFdoYXQKK0ZvciBmaWxlIHNraXBzLCB0aGlz IGZpZWxkIGNvbnRhaW5zIHRoZSBmaWxlbmFtZSBiZWluZyBza2lwcGVkLiAg Rm9yIGZ1bmN0aW9ucworc2tpcHMsIHRoaXMgZmllbGQgY29udGFpbnMgdGhl IGZ1bmN0aW9uIG5hbWUgYW5kIGl0cyBsaW5lIG51bWJlciBpbiB0aGUgZmls ZQord2hlcmUgaXQgaXMgZGVmaW5lZC4KK0BlbmQgdGFibGUKKworQGtpbmRl eCBza2lwIGRlbGV0ZQorQGl0ZW0gc2tpcCBkZWxldGUgQHJ7W31AdmFye3Jh bmdlfUBye119CitEZWxldGUgdGhlIHNwZWNpZmllZCBza2lwKHMpLiAgSWYg QHZhcntyYW5nZX0gaXMgbm90IHNwZWNpZmllZCwgZGVsZXRlIGFsbAorc2tp cHMuCisKK0BraW5kZXggc2tpcCBlbmFibGUKK0BpdGVtIHNraXAgZW5hYmxl IEBye1t9QHZhcntyYW5nZX1AcntdfQorRW5hYmxlIHRoZSBzcGVjaWZpZWQg c2tpcChzKS4gIElmIEB2YXJ7cmFuZ2V9IGlzIG5vdCBzcGVjaWZpZWQsIGVu YWJsZSBhbGwKK3NraXBzLgorCitAa2luZGV4IHNraXAgZGlzYWJsZQorQGl0 ZW0gc2tpcCBkaXNhYmxlIEBye1t9QHZhcntyYW5nZX1AcntdfQorRGlzYWJs ZSB0aGUgc3BlY2lmaWVkIHNraXAocykuICBJZiBAdmFye3JhbmdlfSBpcyBu b3Qgc3BlY2lmaWVkLCBkaXNhYmxlIGFsbAorc2tpcHMuCisKK0BlbmQgdGFi bGUKKwogQG5vZGUgU2lnbmFscwogQHNlY3Rpb24gU2lnbmFscwogQGNpbmRl eCBzaWduYWxzCmRpZmYgLS1naXQgYS9nZGIvZ2RiY21kLmggYi9nZGIvZ2Ri Y21kLmgKaW5kZXggYzAyY2U2OS4uNjA2YjgxMiAxMDA2NDQKLS0tIGEvZ2Ri L2dkYmNtZC5oCisrKyBiL2dkYi9nZGJjbWQuaApAQCAtMTI0LDYgKzEyNCw4 IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2V0Y2hlY2ts aXN0OwogCiBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNob3dj aGVja2xpc3Q7CiAKK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq c2tpcGxpc3Q7CisKIC8qIENoYWluIGNvbnRhaW5pbmcgYWxsIGRlZmluZWQg InNhdmUiIHN1YmNvbW1hbmRzLiAgKi8KIAogZXh0ZXJuIHN0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICpzYXZlX2NtZGxpc3Q7CmRpZmYgLS1naXQgYS9nZGIv aW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKaW5kZXggMjI1MDM0Yy4uZThiZTEy MSAxMDA2NDQKLS0tIGEvZ2RiL2luZnJ1bi5jCisrKyBiL2dkYi9pbmZydW4u YwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgInRyYWNlcG9pbnQuaCIK ICNpbmNsdWRlICJjb250aW51YXRpb25zLmgiCiAjaW5jbHVkZSAiaW50ZXJw cy5oIgorI2luY2x1ZGUgInNraXAuaCIKIAogLyogUHJvdG90eXBlcyBmb3Ig bG9jYWwgZnVuY3Rpb25zICovCiAKQEAgLTQ4MjksNyArNDgzMCw4IEBAIHBy b2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogCX0KIAogICAgICAgLyogSWYgd2Ug aGF2ZSBsaW5lIG51bWJlciBpbmZvcm1hdGlvbiBmb3IgdGhlIGZ1bmN0aW9u IHdlIGFyZQotICAgICAgICAgdGhpbmtpbmcgb2Ygc3RlcHBpbmcgaW50bywg c3RlcCBpbnRvIGl0LgorCSB0aGlua2luZyBvZiBzdGVwcGluZyBpbnRvIGFu ZCB0aGUgZnVuY3Rpb24gaXNuJ3Qgb24gdGhlIHNraXAKKwkgbGlzdCwgc3Rl cCBpbnRvIGl0LgogCiAgICAgICAgICBJZiB0aGVyZSBhcmUgc2V2ZXJhbCBz eW10YWJzIGF0IHRoYXQgUEMgKGUuZy4gd2l0aCBpbmNsdWRlCiAgICAgICAg ICBmaWxlcyksIGp1c3Qgd2FudCB0byBrbm93IHdoZXRoZXIgKmFueSogb2Yg dGhlbSBoYXZlIGxpbmUKQEAgLTQ4MzgsNyArNDg0MCw4IEBAIHByb2Nlc3Nf ZXZlbnRfc3RvcF90ZXN0OgogCXN0cnVjdCBzeW10YWJfYW5kX2xpbmUgdG1w X3NhbDsKIAogCXRtcF9zYWwgPSBmaW5kX3BjX2xpbmUgKGVjcy0+c3RvcF9m dW5jX3N0YXJ0LCAwKTsKLQlpZiAodG1wX3NhbC5saW5lICE9IDApCisJaWYg KHRtcF9zYWwubGluZSAhPSAwICYmCisJICAgICFmdW5jdGlvbl9wY19pc19t YXJrZWRfZm9yX3NraXAgKGVjcy0+c3RvcF9mdW5jX3N0YXJ0KSkKIAkgIHsK IAkgICAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19SRVZFUlNF KQogCSAgICAgIGhhbmRsZV9zdGVwX2ludG9fZnVuY3Rpb25fYmFja3dhcmQg KGdkYmFyY2gsIGVjcyk7CmRpZmYgLS1naXQgYS9nZGIvc2tpcC5jIGIvZ2Ri L3NraXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 N2NjYzY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3NraXAuYwpAQCAtMCww ICsxLDYwNCBAQAorLyogU2tpcHBpbmcgdW5pbnRlcmVzdGluZyBmaWxlcyBh bmQgZnVuY3Rpb25zIHdoaWxlIHN0ZXBwaW5nLgorCisgICBDb3B5cmlnaHQg KEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlICJkZWZzLmgi CisjaW5jbHVkZSAic2tpcC5oIgorI2luY2x1ZGUgInZhbHVlLmgiCisjaW5j bHVkZSAidmFscHJpbnQuaCIKKyNpbmNsdWRlICJ1aS1vdXQuaCIKKyNpbmNs dWRlICJnZGJfc3RyaW5nLmgiCisjaW5jbHVkZSAic3ltdGFiLmgiCisjaW5j bHVkZSAiZ2RiY21kLmgiCisjaW5jbHVkZSAiY29tbWFuZC5oIgorI2luY2x1 ZGUgImNvbXBsZXRlci5oIgorI2luY2x1ZGUgInN0YWNrLmgiCisjaW5jbHVk ZSAiY2xpL2NsaS11dGlscy5oIgorI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIK KyNpbmNsdWRlICJsaW5lc3BlYy5oIgorI2luY2x1ZGUgIm9iamZpbGVzLmgi CisjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgImJyZWFrcG9p bnQuaCIgLyogZm9yIGdldF9zYWxfYXJjaCAoKSAqLworCitzdHJ1Y3Qgc2tp cGxpc3RfZW50cnkKK3sKKyAgaW50IG51bWJlcjsKKworICAvKiBOVUxMIGlm IHRoaXMgaXNuJ3QgYSBza2lwbGlzdCBlbnRyeSBmb3IgYW4gZW50aXJlIGZp bGUuCisgICAgIFRoZSBza2lwbGlzdCBlbnRyeSBvd25zIHRoaXMgcG9pbnRl ci4gICovCisgIGNoYXIgKmZpbGVuYW1lOworCisgIC8qIFRoZSBuYW1lIG9m IHRoZSBtYXJrZWQtZm9yLXNraXAgZnVuY3Rpb24sIGlmIHRoaXMgaXMgYSBz a2lwbGlzdAorICAgICBlbnRyeSBmb3IgYSBmdW5jdGlvbi4gIE5vdGUgdGhh dCB0aGlzIG1pZ2h0IGJlIG5vbi1udWxsIGV2ZW4gaWYKKyAgICAgdGhlIHBj IGlzIDAgaWYgdGhlIGVudHJ5IGlzIHBlbmRpbmcgYSBzaGFyZWQgbGlicmFy eSBsb2FkLgorCisgICAgIFRoZSBza2lwbGlzdCBlbnRyeSBvd25zIHRoaXMg cG9pbnRlci4gICovCisgIGNoYXIgKmZ1bmN0aW9uX25hbWU7CisKKyAgLyog MCBpZiB0aGlzIGlzIGEgc2tpcGxpc3QgZW50cnkgZm9yIGFuIGVudGlyZSBm aWxlLCBvciBpZiB0aGlzCisgICAgIGVudHJ5IHdpbGwgYmUgb24gYSBmdW5j dGlvbiwgcGVuZGluZyBhIHNoYXJlZCBsaWJyYXJ5IGxvYWQuICAqLworICBD T1JFX0FERFIgcGM7CisKKyAgLyogQXJjaGl0ZWN0dXJlIHdlIHVzZWQgdG8g Y3JlYXRlIHRoZSBza2lwbGlzdCBlbnRyeS4gTWF5IGJlIG51bGwKKyAgICAg aWYgdGhlIGVudHJ5IGlzIHBlbmRpbmcgYSBzaGFyZWQgbGlicmFyeSBsb2Fk LiAgKi8KKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7CisKKyAgaW50IGVu YWJsZWQ7CisgIGludCBwZW5kaW5nOworCisgIHN0cnVjdCBza2lwbGlzdF9l bnRyeSAqbmV4dDsKK307CisKK3N0YXRpYyB2b2lkIHNraXBfZnVuY3Rpb25f Y29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOworc3RhdGljIHZv aWQgc2tpcF9maWxlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5 KTsKK3N0YXRpYyB2b2lkIHNraXBfaW5mbyAoY2hhciAqYXJnLCBpbnQgZnJv bV90dHkpOworCitzdGF0aWMgdm9pZCBhZGRfc2tpcGxpc3RfZW50cnkgKHN0 cnVjdCBza2lwbGlzdF9lbnRyeSAqZSk7CitzdGF0aWMgdm9pZCBza2lwX2Z1 bmN0aW9uX3BjIChDT1JFX0FERFIgcGMsIGNoYXIgKm5hbWUsCisJCQkgICAg ICBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCwKKwkJCSAgICAgIGludCBwZW5kaW5n KTsKKworc3RhdGljIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqc2tpcGxpc3Rf ZW50cnlfY2hhaW47CitzdGF0aWMgaW50IHNraXBsaXN0X2VudHJ5X2NvdW50 OworCisjZGVmaW5lIEFMTF9TS0lQTElTVF9FTlRSSUVTKEUpIFwKKyAgZm9y IChFID0gc2tpcGxpc3RfZW50cnlfY2hhaW47IEU7IEUgPSBFLT5uZXh0KQor CisjZGVmaW5lIEFMTF9TS0lQTElTVF9FTlRSSUVTX1NBRkUoRSxUTVApIFwK KyAgZm9yIChFID0gc2tpcGxpc3RfZW50cnlfY2hhaW47ICAgICAgICAgXAor ICAgICAgIEUgPyAoVE1QID0gRS0+bmV4dCwgMSkgOiAwOyAgICAgICBcCisg ICAgICAgRSA9IFRNUCkKKworc3RhdGljIHZvaWQKK3NraXBfZmlsZV9jb21t YW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0IHNr aXBsaXN0X2VudHJ5ICplOworICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7Cisg IGludCBwZW5kaW5nID0gMDsKKyAgY2hhciAqZmlsZW5hbWUgPSAwOworCisg IC8qIElmIG5vIGFyZ3VtZW50IHdhcyBnaXZlbiwgdHJ5IHRvIGRlZmF1bHQg dG8gdGhlIGxhc3QKKyAgICAgZGlzcGxheWVkIGNvZGVwb2ludC4gKi8KKyAg aWYgKGFyZyA9PSAwKQorICAgIHsKKyAgICAgIHN5bXRhYiA9IGdldF9sYXN0 X2Rpc3BsYXllZF9zeW10YWIgKCk7CisgICAgICBpZiAoc3ltdGFiID09IDAp CisJZXJyb3IgKF8oIk5vIGRlZmF1bHQgZmlsZSBub3cuIikpOworICAgICAg ZWxzZQorCWZpbGVuYW1lID0gc3ltdGFiLT5maWxlbmFtZTsKKyAgICB9Cisg IGVsc2UKKyAgICB7CisgICAgICBzeW10YWIgPSBsb29rdXBfc3ltdGFiIChh cmcpOworICAgICAgaWYgKHN5bXRhYiA9PSAwKQorCXsKKwkgIGZwcmludGZf ZmlsdGVyZWQgKGdkYl9zdGRlcnIsIF8oIk5vIHNvdXJjZSBmaWxlIG5hbWVk ICVzLlxuIiksIGFyZyk7CisJICBpZiAoIW5xdWVyeSAoXygiXAorSWdub3Jl IGZpbGUgcGVuZGluZyBmdXR1cmUgc2hhcmVkIGxpYnJhcnkgbG9hZD8gIikp KQorCSAgICByZXR1cm47CisKKwkgIHBlbmRpbmcgPSAxOworCSAgZmlsZW5h bWUgPSBhcmc7CisJfQorICAgICAgZWxzZQorCWZpbGVuYW1lID0gc3ltdGFi LT5maWxlbmFtZTsKKyAgICB9CisKKyAgZSA9IFhaQUxMT0MgKHN0cnVjdCBz a2lwbGlzdF9lbnRyeSk7CisgIGUtPmZpbGVuYW1lID0geHN0cmR1cCAoZmls ZW5hbWUpOworICBlLT5lbmFibGVkID0gMTsKKyAgZS0+cGVuZGluZyA9IHBl bmRpbmc7CisgIGlmIChzeW10YWIgIT0gMCkKKyAgICBlLT5nZGJhcmNoID0g Z2V0X29iamZpbGVfYXJjaCAoc3ltdGFiLT5vYmpmaWxlKTsKKworICBhZGRf c2tpcGxpc3RfZW50cnkgKGUpOworCisgIHByaW50Zl9maWx0ZXJlZCAoXygi RmlsZSAlcyB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZy5cbiIpLCBm aWxlbmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkCitza2lwX2Z1bmN0aW9uX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBDT1JFX0FE RFIgZnVuY19wYzsKKyAgY2hhciAqbmFtZSA9IE5VTEw7CisKKyAgLyogRGVm YXVsdCB0byB0aGUgY3VycmVudCBmdW5jdGlvbiBpZiBubyBhcmd1bWVudCBp cyBnaXZlbi4gKi8KKyAgaWYgKGFyZyA9PSAwKQorICAgIHsKKyAgICAgIENP UkVfQUREUiBwYzsKKyAgICAgIGlmICghbGFzdF9kaXNwbGF5ZWRfc2FsX2lz X3ZhbGlkICgpKQorCWVycm9yIChfKCJObyBkZWZhdWx0IGZ1bmN0aW9uIG5v dy4iKSk7CisKKyAgICAgIHBjID0gZ2V0X2xhc3RfZGlzcGxheWVkX2FkZHIg KCk7CisgICAgICBpZiAoIWZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMs ICZuYW1lLCAmZnVuY19wYywgMCkpCisJeworCSAgZXJyb3IgKF8oIk5vIGZ1 bmN0aW9uIGZvdW5kIGNvbnRhaW5pbmcgY3VycmVudCBwcm9ncmFtIHBvaW50 ICVzLiIpLAorCQkgIHBhZGRyZXNzIChnZXRfY3VycmVudF9hcmNoICgpLCBw YykpOworCX0KKyAgICAgIHNraXBfZnVuY3Rpb25fcGMgKGZ1bmNfcGMsIG5h bWUsIGdldF9jdXJyZW50X2FyY2ggKCksIDApOworICAgIH0KKyAgZWxzZQor ICAgIHsKKyAgICAgIC8qIERlY29kZSBhcmcuICBXZSBzZXQgZnVuZmlyc3Rs aW5lPTEgc28gZGVjb2RlX2xpbmVfMSB3aWxsIGdpdmUgdXMgdGhlCisJIGZp cnN0IGxpbmUgb2YgdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCwgaWYgaXQgY2Fu LCBhbmQgc28gdGhhdCB3ZSdsbAorCSByZWplY3QgdmFyaWFibGUgbmFtZXMg YW5kIHRoZSBsaWtlLiAqLworCisgICAgICBpbnQgaTsKKyAgICAgIGludCBw ZW5kaW5nID0gMDsKKyAgICAgIGNoYXIgKm9yaWdfYXJnID0gYXJnOyAvKiBk ZWNvZGVfbGluZV8xIG1vZGlmaWVzIHRoZSBhcmcgcG9pbnRlci4gKi8KKyAg ICAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGRlY29kZV9leGNl cHRpb247CisgICAgICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2FsczsK KworICAgICAgVFJZX0NBVENIIChkZWNvZGVfZXhjZXB0aW9uLCBSRVRVUk5f TUFTS19FUlJPUikKKwl7CisJICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJmFy ZywgMSwgMCwgMCwgMCk7CisJfQorCisgICAgICBpZiAoZGVjb2RlX2V4Y2Vw dGlvbi5yZWFzb24gPCAwKQorICAgICAgICB7CisgICAgICAgICAgaWYgKGRl Y29kZV9leGNlcHRpb24uZXJyb3IgIT0gTk9UX0ZPVU5EX0VSUk9SKQorICAg ICAgICAgICAgdGhyb3dfZXhjZXB0aW9uIChkZWNvZGVfZXhjZXB0aW9uKTsK KworCSAgZnByaW50Zl9maWx0ZXJlZCAoZ2RiX3N0ZGVyciwKKwkJCSAgICBf KCJObyBmdW5jdGlvbiBmb3VuZCBuYW1lZCAlcy5cbiIpLCBvcmlnX2FyZyk7 CisKKwkgIGlmIChucXVlcnkgKF8oIlwKK0lnbm9yZSBmdW5jdGlvbiBwZW5k aW5nIGZ1dHVyZSBzaGFyZWQgbGlicmFyeSBsb2FkPyAiKSkpCisJICAgIHsK KwkgICAgICAvKiBBZGQgdGhlIHBlbmRpbmcgc2tpcGxpc3QgZW50cnkuICov CisJICAgICAgc2tpcF9mdW5jdGlvbl9wYyAoMCwgb3JpZ19hcmcsIDAsIDEp OworCSAgICB9CisKKwkgIHJldHVybjsKKwl9CisKKyAgICAgIGlmIChzYWxz Lm5lbHRzID4gMSkKKwllcnJvciAoXygiU3BlY2lmeSBqdXN0IG9uZSBmdW5j dGlvbiBhdCBhIHRpbWUuIikpOworICAgICAgaWYgKHN0cmxlbiAoYXJnKSAh PSAwKQorCWVycm9yIChfKCJKdW5rIGF0IGVuZCBvZiBhcmd1bWVudHMuIikp OworCisgICAgICAvKiBUaGUgcGMgZGVjb2RlX2xpbmVfMSBnaXZlcyB1cyBp cyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgZnVuY3Rpb24sCisJIGJ1dCB3ZSBh Y3R1YWxseSB3YW50IHRoZSBsaW5lIGJlZm9yZSB0aGF0LiAgVGhlIGNhbGwg dG8KKwkgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIGdldHMgdXMgdGhlIHZh bHVlIHdlIGFjdHVhbGx5IHdhbnQuICovCisgICAgICB7CisJc3RydWN0IHN5 bXRhYl9hbmRfbGluZSBzYWwgPSBzYWxzLnNhbHNbMF07CisJQ09SRV9BRERS IHBjID0gc2FsLnBjOworCUNPUkVfQUREUiBmdW5jX3N0YXJ0ID0gMDsKKwlz dHJ1Y3QgZ2RiYXJjaCAqYXJjaCA9IGdldF9zYWxfYXJjaCAoc2FsKTsKKwor CWlmICghZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsICZm dW5jX3N0YXJ0LCAwKSkKKwkgIHsKKwkgICAgZXJyb3IgKF8oIk5vIGZ1bmN0 aW9uIGZvdW5kIGNvbnRhaW5pbmcgcHJvZ3JhbSBwb2ludCAlcy4iKSwKKwkJ ICAgICBwYWRkcmVzcyAoYXJjaCwgcGMpKTsKKwkgIH0KKworCXNraXBfZnVu Y3Rpb25fcGMgKGZ1bmNfc3RhcnQsIG5hbWUsIGFyY2gsIDApOworICAgICAg fQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK3NraXBfaW5mbyAoY2hhciAq YXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRy eSAqZTsKKyAgaW50IG51bV9wcmludGFibGVfZW50cmllcyA9IDA7CisgIGlu dCBhZGRyZXNzX3dpZHRoID0gMTA7CisgIHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zIG9wdHM7CisgIHN0cnVjdCBjbGVhbnVwICp0YmxfY2hhaW47CisK KyAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOworCisgIC8qIENv dW50IHRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgdGFibGUgYW5kIHNlZSBp ZiB3ZSBuZWVkIHNwYWNlIGZvciBhCisgICAgIDY0LWJpdCBhZGRyZXNzIGFu eXdoZXJlLiAqLworICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkKKyAgICBp ZiAoYXJnID09IDAgfHwgbnVtYmVyX2lzX2luX2xpc3QgKGFyZywgZS0+bnVt YmVyKSkKKyAgICAgIHsKKwludW1fcHJpbnRhYmxlX2VudHJpZXMrKzsKKwlp ZiAoZS0+Z2RiYXJjaCAmJiBnZGJhcmNoX2FkZHJfYml0IChlLT5nZGJhcmNo KSA+IDMyKQorCSAgYWRkcmVzc193aWR0aCA9IDE4OworICAgICAgfQorCisg IGlmIChudW1fcHJpbnRhYmxlX2VudHJpZXMgPT0gMCkKKyAgICB7CisgICAg ICBpZiAoYXJnID09IDApCisJdWlfb3V0X21lc3NhZ2UgKGN1cnJlbnRfdWlv dXQsIDAsIF8oIlwKK05vdCBza2lwcGluZyBhbnkgZmlsZXMgb3IgZnVuY3Rp b25zLlxuIikpOworICAgICAgZWxzZQorCXVpX291dF9tZXNzYWdlIChjdXJy ZW50X3Vpb3V0LCAwLAorCQkJXygiTm8gc2tpcGxpc3QgZW50cmllcyBmb3Vu ZCB3aXRoIG51bWJlciAlcy5cbiIpLCBhcmcpOworCisgICAgICByZXR1cm47 CisgICAgfQorCisgIGlmIChvcHRzLmFkZHJlc3NwcmludCkKKyAgICB0Ymxf Y2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAo Y3VycmVudF91aW91dCwgNSwKKwkJCQkJCSAgICAgbnVtX3ByaW50YWJsZV9l bnRyaWVzLAorCQkJCQkJICAgICAiU2tpcGxpc3RUYWJsZSIpOworICBlbHNl CisgICAgdGJsX2NoYWluCisgICAgICAgPSBtYWtlX2NsZWFudXBfdWlfb3V0 X3RhYmxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwgNCwKKwkJCQkJICAg ICAgbnVtX3ByaW50YWJsZV9lbnRyaWVzLAorCQkJCQkgICAgICAiU2tpcGxp c3RUYWJsZSIpOworCisgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRf dWlvdXQsIDcsIHVpX2xlZnQsICJudW1iZXIiLCAiTnVtIik7ICAgICAgLyog MSAqLworICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAx NCwgdWlfbGVmdCwgInR5cGUiLCAiVHlwZSIpOyAgICAgIC8qIDIgKi8KKyAg dWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgMywgdWlfbGVm dCwgImVuYWJsZWQiLCAiRW5iIik7ICAgICAvKiAzICovCisgIGlmIChvcHRz LmFkZHJlc3NwcmludCkKKyAgICB7CisgICAgICB1aV9vdXRfdGFibGVfaGVh ZGVyIChjdXJyZW50X3Vpb3V0LCBhZGRyZXNzX3dpZHRoLCB1aV9sZWZ0LAor CQkJICAgImFkZHIiLCAiQWRkcmVzcyIpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIDQgKi8KKyAgICB9CisgIHVpX291dF90YWJsZV9oZWFkZXIg KGN1cnJlbnRfdWlvdXQsIDQwLCB1aV9ub2FsaWduLCAid2hhdCIsICJXaGF0 Iik7ICAgLyogNSAqLworICB1aV9vdXRfdGFibGVfYm9keSAoY3VycmVudF91 aW91dCk7CisKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisgICAgewor ICAgICAgc3RydWN0IGNsZWFudXAgKmVudHJ5X2NoYWluOworCisgICAgICBR VUlUOworICAgICAgaWYgKGFyZyAhPSAwICYmICFudW1iZXJfaXNfaW5fbGlz dCAoYXJnLCBlLT5udW1iZXIpKQorCWNvbnRpbnVlOworCisgICAgICBlbnRy eV9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5k IChjdXJyZW50X3Vpb3V0LAorCQkJCQkJCSAiYmxrbHN0LWVudHJ5Iik7Cisg ICAgICB1aV9vdXRfZmllbGRfaW50IChjdXJyZW50X3Vpb3V0LCAibnVtYmVy IiwgZS0+bnVtYmVyKTsgICAgICAgICAgICAgLyogMSAqLworCisgICAgICBp ZiAoZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorCXVpX291dF9maWVsZF9zdHJp bmcgKGN1cnJlbnRfdWlvdXQsICJ0eXBlIiwgImZ1bmN0aW9uIik7ICAgICAg ICAgLyogMiAqLworICAgICAgZWxzZSBpZiAoZS0+ZmlsZW5hbWUgIT0gMCkK Kwl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAidHlwZSIs ICJmaWxlIik7ICAgICAgICAgICAgIC8qIDIgKi8KKyAgICAgIGVsc2UKKwlp bnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJcCitTa2lw bGlzdCBlbnRyeSBzaG91bGQgaGF2ZSBlaXRoZXIgYSBmaWxlbmFtZSBvciBh IGZ1bmN0aW9uIG5hbWUuIikpOworCisgICAgICBpZiAoZS0+ZW5hYmxlZCkK Kwl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAiZW5hYmxl ZCIsICJ5Iik7ICAgICAgICAgICAgIC8qIDMgKi8KKyAgICAgIGVsc2UKKwl1 aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAiZW5hYmxlZCIs ICJuIik7ICAgICAgICAgICAgIC8qIDMgKi8KKworICAgICAgaWYgKG9wdHMu YWRkcmVzc3ByaW50KQorCXsKKwkgIGlmIChlLT5wYyAhPSAwKQorCSAgICB1 aV9vdXRfZmllbGRfY29yZV9hZGRyIChjdXJyZW50X3Vpb3V0LCAiYWRkciIs CisJCQkJICAgIGUtPmdkYmFyY2gsIGUtPnBjKTsgICAgICAgICAgICAgICAg ICAvKiA0ICovCisJICBlbHNlCisJICAgIHVpX291dF9maWVsZF9zdHJpbmcg KGN1cnJlbnRfdWlvdXQsICJhZGRyIiwgIiIpOyAgICAgICAgICAgICAvKiA0 ICovCisJfQorCisgICAgICBpZiAoIWUtPnBlbmRpbmcgJiYgZS0+ZnVuY3Rp b25fbmFtZSAhPSAwKQorCXsKKwkgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisK KwkgICBnZGJfYXNzZXJ0IChlLT5wYyAhPSAwKTsKKwkgICBzeW0gPSBmaW5k X3BjX2Z1bmN0aW9uIChlLT5wYyk7CisJICAgaWYgKHN5bSkKKwkgICAgIHVp X291dF9maWVsZF9mbXQgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgIiVzIGF0 ICVzOiVkIiwKKwkJCSAgICAgICBzeW0tPmdpbmZvLm5hbWUsCisJCQkgICAg ICAgc3ltLT5zeW10YWItPmZpbGVuYW1lLAorCQkJICAgICAgIHN5bS0+bGlu ZSk7CisJICAgZWxzZQorCSAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3Vy cmVudF91aW91dCwgIndoYXQiLCAiPyIpOworCX0KKyAgICAgIGVsc2UgaWYg KGUtPnBlbmRpbmcgJiYgZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorCXsKKwkg IHVpX291dF9maWVsZF9mbXQgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgIiVz IChQRU5ESU5HKSIsCisJCQkgICAgZS0+ZnVuY3Rpb25fbmFtZSk7CisJfQor ICAgICAgZWxzZSBpZiAoIWUtPnBlbmRpbmcgJiYgZS0+ZmlsZW5hbWUgIT0g MCkKKwl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAid2hh dCIsIGUtPmZpbGVuYW1lKTsKKyAgICAgIGVsc2UgaWYgKGUtPnBlbmRpbmcg JiYgZS0+ZmlsZW5hbWUgIT0gMCkKKwl1aV9vdXRfZmllbGRfZm10IChjdXJy ZW50X3Vpb3V0LCAid2hhdCIsICIlcyAoUEVORElORykiLAorCQkJICBlLT5m aWxlbmFtZSk7CisKKyAgICAgIHVpX291dF90ZXh0IChjdXJyZW50X3Vpb3V0 LCAiXG4iKTsKKyAgICAgIGRvX2NsZWFudXBzIChlbnRyeV9jaGFpbik7Cisg ICAgfQorCisgIGRvX2NsZWFudXBzICh0YmxfY2hhaW4pOworfQorCitzdGF0 aWMgdm9pZAorc2tpcF9lbmFibGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQg ZnJvbV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZTsKKyAg aW50IGZvdW5kID0gMDsKKworICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkK KyAgICBpZiAoYXJnID09IDAgfHwgbnVtYmVyX2lzX2luX2xpc3QgKGFyZywg ZS0+bnVtYmVyKSkKKyAgICAgIHsKKyAgICAgICAgZS0+ZW5hYmxlZCA9IDE7 CisgICAgICAgIGZvdW5kID0gMTsKKyAgICAgIH0KKworICBpZiAoIWZvdW5k KQorICAgIGVycm9yIChfKCJObyBza2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdp dGggbnVtYmVyICVzLiIpLCBhcmcpOworfQorCitzdGF0aWMgdm9pZAorc2tp cF9kaXNhYmxlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQor eworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmU7CisgIGludCBmb3VuZCA9 IDA7CisKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisgICAgaWYgKGFy ZyA9PSAwIHx8IG51bWJlcl9pc19pbl9saXN0IChhcmcsIGUtPm51bWJlcikp CisgICAgICB7CisJZS0+ZW5hYmxlZCA9IDA7CisgICAgICAgIGZvdW5kID0g MTsKKyAgICAgIH0KKworICBpZiAoIWZvdW5kKQorICAgIGVycm9yIChfKCJO byBza2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdpdGggbnVtYmVyICVzLiIpLCBh cmcpOworfQorCitzdGF0aWMgdm9pZAorc2tpcF9kZWxldGVfY29tbWFuZCAo Y2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlz dF9lbnRyeSAqZSwgKnRlbXAsICpiX3ByZXY7CisgIGludCBmb3VuZCA9IDA7 CisKKyAgYl9wcmV2ID0gMDsKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVNfU0FG RSAoZSwgdGVtcCkKKyAgICBpZiAoYXJnID09IDAgfHwgbnVtYmVyX2lzX2lu X2xpc3QgKGFyZywgZS0+bnVtYmVyKSkKKyAgICAgIHsKKwlpZiAoYl9wcmV2 ICE9IDApCisJICBiX3ByZXYtPm5leHQgPSBlLT5uZXh0OworCWVsc2UKKwkg IHNraXBsaXN0X2VudHJ5X2NoYWluID0gZS0+bmV4dDsKKworCXhmcmVlIChl LT5mdW5jdGlvbl9uYW1lKTsKKwl4ZnJlZSAoZS0+ZmlsZW5hbWUpOworCXhm cmVlIChlKTsKKyAgICAgICAgZm91bmQgPSAxOworICAgICAgfQorICAgIGVs c2UKKyAgICAgIHsKKwliX3ByZXYgPSBlOworICAgICAgfQorCisgIGlmICgh Zm91bmQpCisgICAgZXJyb3IgKF8oIk5vIHNraXBsaXN0IGVudHJpZXMgZm91 bmQgd2l0aCBudW1iZXIgJXMuIiksIGFyZyk7Cit9CisKKy8qIENyZWF0ZSBh IHNraXBsaXN0IGVudHJ5IGZvciB0aGUgZ2l2ZW4gcGMgY29ycmVzcG9uZGlu ZyB0byB0aGUgZ2l2ZW4KKyAgIGZ1bmN0aW9uIG5hbWUgYW5kIGFkZCBpdCB0 byB0aGUgbGlzdC4gKi8KKworc3RhdGljIHZvaWQKK3NraXBfZnVuY3Rpb25f cGMgKENPUkVfQUREUiBwYywgY2hhciAqbmFtZSwgc3RydWN0IGdkYmFyY2gg KmFyY2gsCisJCSAgaW50IHBlbmRpbmcpCit7CisgIHN0cnVjdCBza2lwbGlz dF9lbnRyeSAqZSA9IFhaQUxMT0MgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSk7 CisKKyAgZS0+cGMgPSBwYzsKKyAgZS0+Z2RiYXJjaCA9IGFyY2g7CisgIGUt PmVuYWJsZWQgPSAxOworICBlLT5wZW5kaW5nID0gcGVuZGluZzsKKyAgZS0+ ZnVuY3Rpb25fbmFtZSA9IHhzdHJkdXAgKG5hbWUpOworCisgIGFkZF9za2lw bGlzdF9lbnRyeSAoZSk7CisKKyAgaWYgKCFwZW5kaW5nKQorICAgIHByaW50 Zl9maWx0ZXJlZCAoXygiRnVuY3Rpb24gJXMgYXQgJXMgd2lsbCBiZSBza2lw cGVkIHdoZW4gc3RlcHBpbmcuXG4iKSwKKwkJICAgICBuYW1lLCBwYWRkcmVz cyAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgcGMpKTsKKyAgZWxzZQorICAgIHBy aW50Zl9maWx0ZXJlZCAoXygiRnVuY3Rpb24gJXMgd2lsbCBiZSBza2lwcGVk IHdoZW4gc3RlcHBpbmcsICIKKwkJICAgICAgICJwZW5kaW5nIHNoYXJlZCBs aWJyYXJ5IGxvYWQuXG4iKSwKKwkJICAgICBuYW1lKTsKK30KKworLyogQWRk IHRoZSBnaXZlbiBza2lwbGlzdCBlbnRyeSB0byBvdXIgbGlzdCwgYW5kIHNl dCB0aGUgZW50cnkncyBudW1iZXIuICovCisKK3N0YXRpYyB2b2lkCithZGRf c2tpcGxpc3RfZW50cnkgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSkKK3sK KyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICplMTsKKworICBlLT5udW1iZXIg PSArK3NraXBsaXN0X2VudHJ5X2NvdW50OworCisgIC8qIEFkZCB0byB0aGUg ZW5kIG9mIHRoZSBjaGFpbiBzbyB0aGF0IHRoZSBsaXN0IG9mCisgICAgIHNr aXBsaXN0IGVudHJpZXMgd2lsbCBiZSBpbiBudW1lcmljYWwgb3JkZXIuICov CisKKyAgZTEgPSBza2lwbGlzdF9lbnRyeV9jaGFpbjsKKyAgaWYgKGUxID09 IDApCisgICAgc2tpcGxpc3RfZW50cnlfY2hhaW4gPSBlOworICBlbHNlCisg ICAgeworICAgICAgd2hpbGUgKGUxLT5uZXh0KQorCWUxID0gZTEtPm5leHQ7 CisgICAgICBlMS0+bmV4dCA9IGU7CisgICAgfQorfQorCisvKiBEb2VzIHRo ZSBnaXZlbiBwYyBjb3JyZXNwb25kIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSBz a2lwcGVkIGZ1bmN0aW9uPyAqLworCitpbnQKK2Z1bmN0aW9uX3BjX2lzX21h cmtlZF9mb3Jfc2tpcCAoQ09SRV9BRERSIHBjKQoreworICBpbnQgc2VhcmNo ZWRfZm9yX3NhbCA9IDA7CisgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2Fs OworICBjaGFyICpmaWxlbmFtZSA9IE5VTEw7CisgIHN0cnVjdCBza2lwbGlz dF9lbnRyeSAqZTsKKworICBzYWwgPSBmaW5kX3BjX2xpbmUgKHBjLCAwKTsK KyAgZmlsZW5hbWUgPSBzYWwuc3ltdGFiLT5maWxlbmFtZTsKKworICBBTExf U0tJUExJU1RfRU5UUklFUyAoZSkKKyAgICB7CisgICAgICBpZiAoIWUtPmVu YWJsZWQgfHwgZS0+cGVuZGluZykKKwljb250aW51ZTsKKworICAgICAgLyog RG9lcyB0aGUgcGMgd2UncmUgc3RlcHBpbmcgaW50byBtYXRjaCBlJ3Mgc3Rv cmVkIHBjPyAqLworICAgICAgaWYgKGUtPnBjICE9IDAgJiYgcGMgPT0gZS0+ cGMpCisJcmV0dXJuIDE7CisKKyAgICAgIGlmIChlLT5maWxlbmFtZSAhPSAw KQorCXsKKwkgIC8qIEdldCB0aGUgZmlsZW5hbWUgY29ycmVzcG9uZGluZyB0 byB0aGlzIHBjLCBpZiB3ZSBoYXZlbid0CisJICAgKiB5ZXQuICovCisJICBp ZiAoIXNlYXJjaGVkX2Zvcl9zYWwpCisJICAgIHsKKwkgICAgICBzYWwgPSBm aW5kX3BjX2xpbmUgKHBjLCAwKTsKKwkgICAgICBmaWxlbmFtZSA9IHNhbC5z eW10YWItPmZpbGVuYW1lOworCSAgICAgIHNlYXJjaGVkX2Zvcl9zYWwgPSAx OworCSAgICB9CisJICBpZiAoZmlsZW5hbWUgIT0gMCAmJiBzdHJjbXAgKGZp bGVuYW1lLCBlLT5maWxlbmFtZSkgPT0gMCkKKwkgICAgcmV0dXJuIDE7CisJ fQorICAgIH0KKworICByZXR1cm4gMDsKK30KKworLyogUmUtc2V0IHRoZSBz a2lwIGxpc3QgYWZ0ZXIgc3ltYm9scyBoYXZlIGJlZW4gcmUtbG9hZGVkLiAq Lwordm9pZAorc2tpcF9yZV9zZXQgKHZvaWQpCit7CisgIHN0cnVjdCBza2lw bGlzdF9lbnRyeSAqZTsKKworICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkK KyAgICB7CisgICAgICBpZiAoZS0+ZmlsZW5hbWUgIT0gMCkKKwl7CisJICAv KiBJZiBpdCdzIGFuIGVudHJ5IHRlbGxpbmcgdXMgdG8gc2tpcCBhIGZpbGUs IGJ1dCB0aGUgZW50cnkgaXMKKwkgICAgIGN1cnJlbnRseSBwZW5kaW5nIGEg c29saWIgbG9hZCwgbGV0J3Mgc2VlIGlmIHdlIG5vdyBrbm93CisJICAgICBh Ym91dCB0aGUgZmlsZS4gKi8KKwkgIHN0cnVjdCBzeW10YWIgKnN5bXRhYiA9 IGxvb2t1cF9zeW10YWIgKGUtPmZpbGVuYW1lKTsKKwkgIGlmIChzeW10YWIg IT0gMCkKKwkgICAgeworCSAgICAgIHhmcmVlIChlLT5maWxlbmFtZSk7CisJ ICAgICAgZS0+ZmlsZW5hbWUgPSB4c3RyZHVwIChzeW10YWItPmZpbGVuYW1l KTsKKwkgICAgICBlLT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAoc3lt dGFiLT5vYmpmaWxlKTsKKwkgICAgICBlLT5wZW5kaW5nID0gMDsKKwkgICAg fQorCSAgZWxzZQorCSAgICB7CisJICAgICAgZS0+cGVuZGluZyA9IDE7CisJ ICAgIH0KKwl9CisgICAgICBlbHNlIGlmIChlLT5mdW5jdGlvbl9uYW1lICE9 IDApCisgICAgICAgIHsKKwkgIGNoYXIgKmZ1bmNfbmFtZSA9IGUtPmZ1bmN0 aW9uX25hbWU7CisJICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2FsczsK KwkgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGRlY29kZV9leGNl cHRpb247CisKKwkgIFRSWV9DQVRDSCAoZGVjb2RlX2V4Y2VwdGlvbiwgUkVU VVJOX01BU0tfRVJST1IpCisJICAgIHsKKwkgICAgICBzYWxzID0gZGVjb2Rl X2xpbmVfMSAoJmZ1bmNfbmFtZSwgMSwgMCwgMCwgMCk7CisJICAgIH0KKwor CSAgaWYgKGRlY29kZV9leGNlcHRpb24ucmVhc29uID49IDAKKyAgICAgICAg ICAgICAgJiYgc2Fscy5uZWx0cyA9PSAxICYmIHN0cmxlbiAoZnVuY19uYW1l KSA9PSAwKQorCSAgICB7CisJICAgICAgc3RydWN0IHN5bXRhYl9hbmRfbGlu ZSBzYWwgPSBzYWxzLnNhbHNbMF07CisJICAgICAgQ09SRV9BRERSIHBjID0g c2FsLnBjOworCSAgICAgIENPUkVfQUREUiBmdW5jX3N0YXJ0ID0gMDsKKwkg ICAgICBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCA9IGdldF9zYWxfYXJjaCAoc2Fs KTsKKyAgICAgICAgICAgICAgY2hhciAqZnVuY19uYW1lOworCisJICAgICAg aWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZmdW5jX25hbWUs ICZmdW5jX3N0YXJ0LCAwKSkKKwkJeworCQkgIGUtPnBlbmRpbmcgPSAwOwor ICAgICAgICAgICAgICAgICAgZS0+ZnVuY3Rpb25fbmFtZSA9IHhzdHJkdXAg KGZ1bmNfbmFtZSk7CisJCSAgZS0+cGMgPSBmdW5jX3N0YXJ0OworCQkgIGUt PmdkYmFyY2ggPSBhcmNoOworCQl9CisJICAgIH0KKwkgIGVsc2UKKwkgICAg eworCSAgICAgIGUtPnBlbmRpbmcgPSAxOworCSAgICB9CisgICAgICAgIH0K KyAgICB9Cit9CisKK3ZvaWQKK19pbml0aWFsaXplX3N0ZXBfc2tpcCAodm9p ZCkKK3sKKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmM7CisKKyAgc2tp cGxpc3RfZW50cnlfY2hhaW4gPSAwOworICBza2lwbGlzdF9lbnRyeV9jb3Vu dCA9IDA7CisKKyAgYWRkX3ByZWZpeF9jbWQgKCJza2lwIiwgY2xhc3NfYnJl YWtwb2ludCwgc2tpcF9mdW5jdGlvbl9jb21tYW5kLCBfKCJcCitJZ25vcmUg YSBmdW5jdGlvbiB3aGlsZSBzdGVwcGluZy5cblwKK1VzYWdlOiBza2lwIFtG VU5DVElPTiBOQU1FXVxuXAorSWYgbm8gZnVuY3Rpb24gbmFtZSBpcyBnaXZl biwgaWdub3JlIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiIpLAorICAgICAgICAg ICAgICAgICAgJnNraXBsaXN0LCAic2tpcCAiLCAxLCAmY21kbGlzdCk7CisK KyAgYyA9IGFkZF9jbWQgKCJmaWxlIiwgY2xhc3NfYnJlYWtwb2ludCwgc2tp cF9maWxlX2NvbW1hbmQsIF8oIlwKK0lnbm9yZSBhIGZpbGUgd2hpbGUgc3Rl cHBpbmcuXG5cCitVc2FnZTogc2tpcCBmaWxlIFtGSUxFTkFNRV1cblwKK0lm IG5vIGZpbGVuYW1lIGlzIGdpdmVuLCBpZ25vcmUgdGhlIGN1cnJlbnQgZmls ZS4iKSwKKwkgICAgICAgJnNraXBsaXN0KTsKKyAgc2V0X2NtZF9jb21wbGV0 ZXIgKGMsIGZpbGVuYW1lX2NvbXBsZXRlcik7CisKKyAgYyA9IGFkZF9jbWQg KCJmdW5jdGlvbiIsIGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZnVuY3Rpb25f Y29tbWFuZCwgXygiXAorSWdub3JlIGEgZnVuY3Rpb24gd2hpbGUgc3RlcHBp bmcuXG5cCitVc2FnZTogc2tpcCBmdW5jdGlvbiBbRlVOQ1RJT04gTkFNRV1c blwKK0lmIG5vIGZ1bmN0aW9uIG5hbWUgaXMgZ2l2ZW4sIHNraXAgdGhlIGN1 cnJlbnQgZnVuY3Rpb24uIiksCisJICAgICAgICZza2lwbGlzdCk7CisgIHNl dF9jbWRfY29tcGxldGVyIChjLCBsb2NhdGlvbl9jb21wbGV0ZXIpOworCisg IGFkZF9jbWQgKCJlbmFibGUiLCBjbGFzc19icmVha3BvaW50LCBza2lwX2Vu YWJsZV9jb21tYW5kLCBfKCJcCitFbmFibGUgc2tpcCBlbnRyaWVzLiAgWW91 IGNhbiBzcGVjaWZ5IG51bWJlcnMgKGUuZy4gXCJza2lwIGVuYWJsZSAxIDNc IiksIFwKK3JhbmdlcyAoZS5nLiBcInNraXAgZW5hYmxlIDQtOFwiKSwgb3Ig Ym90aCAoZS5nLiBcInNraXAgZW5hYmxlIDEgMyA0LThcIikuXG5cblwKK0lm IHlvdSBkb24ndCBzcGVjaWZ5IGFueSBudW1iZXJzIG9yIHJhbmdlcywgd2Un bGwgZW5hYmxlIGFsbCBza2lwIGVudHJpZXMuXG5cblwKK1VzYWdlOiBza2lw IGVuYWJsZSBbTlVNQkVSUyBBTkQvT1IgUkFOR0VTXSIpLAorCSAgICZza2lw bGlzdCk7CisKKyAgYWRkX2NtZCAoImRpc2FibGUiLCBjbGFzc19icmVha3Bv aW50LCBza2lwX2Rpc2FibGVfY29tbWFuZCwgXygiXAorRGlzYWJsZSBza2lw IGVudHJpZXMuICBZb3UgY2FuIHNwZWNpZnkgbnVtYmVycyAoZS5nLiBcInNr aXAgZGlzYWJsZSAxIDNcIiksIFwKK3JhbmdlcyAoZS5nLiBcInNraXAgZGlz YWJsZSA0LThcIiksIG9yIGJvdGggKGUuZy4gXCJza2lwIGRpc2FibGUgMSAz IDQtOFwiKS5cblxuXAorSWYgeW91IGRvbid0IHNwZWNpZnkgYW55IG51bWJl cnMgb3IgcmFuZ2VzLCB3ZSdsbCBkaXNhYmxlIGFsbCBza2lwIGVudHJpZXMu XG5cblwKK1VzYWdlOiBza2lwIGRpc2FibGUgW05VTUJFUlMgQU5EL09SIFJB TkdFU10iKSwKKwkgICAmc2tpcGxpc3QpOworCisgIGFkZF9jbWQgKCJkZWxl dGUiLCBjbGFzc19icmVha3BvaW50LCBza2lwX2RlbGV0ZV9jb21tYW5kLCBf KCJcCitEZWxldGUgc2tpcCBlbnRyaWVzLiAgWW91IGNhbiBzcGVjaWZ5IG51 bWJlcnMgKGUuZy4gXCJza2lwIGRlbGV0ZSAxIDNcIiksIFwKK3JhbmdlcyAo ZS5nLiBcInNraXAgZGVsZXRlIDQtOFwiKSwgb3IgYm90aCAoZS5nLiBcInNr aXAgZGVsZXRlIDEgMyA0LThcIikuXG5cblwKK0lmIHlvdSBkb24ndCBzcGVj aWZ5IGFueSBudW1iZXJzIG9yIHJhbmdlcywgd2UnbGwgZGVsZXRlIGFsbCBz a2lwIGVudHJpZXMuXG5cblwKK1VzYWdlOiBza2lwIGRlbGV0ZSBbTlVNQkVS UyBBTkQvT1IgUkFOR0VTXSIpLAorICAgICAgICAgICAmc2tpcGxpc3QpOwor CisgIGFkZF9pbmZvICgic2tpcCIsIHNraXBfaW5mbywgXygiXAorRGlzcGxh eSB0aGUgc3RhdHVzIG9mIHNraXBzLiAgWW91IGNhbiBzcGVjaWZ5IG51bWJl cnMgKGUuZy4gXCJza2lwIGluZm8gMSAzXCIpLCBcCityYW5nZXMgKGUuZy4g XCJza2lwIGluZm8gNC04XCIpLCBvciBib3RoIChlLmcuIFwic2tpcCBpbmZv IDEgMyA0LThcIikuXG5cblwKK0lmIHlvdSBkb24ndCBzcGVjaWZ5IGFueSBu dW1iZXJzIG9yIHJhbmdlcywgd2UnbGwgc2hvdyBhbGwgc2tpcHMuXG5cblwK K1VzYWdlOiBza2lwIGluZm8gW05VTUJFUlMgQU5EL09SIFJBTkdFU11cblwK K1RoZSBcIlR5cGVcIiBjb2x1bW4gaW5kaWNhdGVzIG9uZSBvZjpcblwKK1x0 ZmlsZSAgICAgICAgLSBpZ25vcmVkIGZpbGVcblwKK1x0ZnVuY3Rpb24gICAg LSBpZ25vcmVkIGZ1bmN0aW9uIikpOworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Nr aXAuaCBiL2dkYi9za2lwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMTQzZjdlZAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9za2lw LmgKQEAgLTAsMCArMSwyOCBAQAorLyogSGVhZGVyIGZvciBza2lwcGluZyBv dmVyIHVuaW50ZXJlc3RpbmcgZmlsZXMgYW5kIGZ1bmN0aW9ucyB3aGVuIGRl YnVnZ2luZy4KKworICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworCisjaWYgIWRlZmluZWQgKFNLSVBfSCkKKyNkZWZpbmUgU0tJUF9I CisKKy8qIFJldHVybnMgMSBpZiB0aGUgZ2l2ZW4gcGMgaXMgbWFya2VkIGZv ciBza2lwIGFuZCBzaG91bGRuJ3QgYmUKKyAgIHN0ZXBwZWQgaW50by4gIE90 aGVyd2lzZSwgcmV0dXJucyAwLiAqLworaW50IGZ1bmN0aW9uX3BjX2lzX21h cmtlZF9mb3Jfc2tpcCAoQ09SRV9BRERSIHBjKTsKKworLyogUmUtc2V0IHRo ZSBza2lwIGxpc3QgYWZ0ZXIgc3ltYm9scyBoYXZlIGJlZW4gcmVsb2FkZWQu ICovCit2b2lkIHNraXBfcmVfc2V0ICh2b2lkKTsKKworI2VuZGlmIC8qICFk ZWZpbmVkIChTS0lQX0gpICovCmRpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBi L2dkYi9zdGFjay5jCmluZGV4IDE1NjY2ZWUuLjBhZDI5MjYgMTAwNjQ0Ci0t LSBhL2dkYi9zdGFjay5jCisrKyBiL2dkYi9zdGFjay5jCkBAIC03Myw2ICs3 MywxMiBAQCBzdGF0aWMgdm9pZCBwcmludF9mcmFtZSAoc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lLCBpbnQgcHJpbnRfbGV2ZWwsCiAJCQkgZW51bSBwcmlu dF93aGF0IHByaW50X3doYXQsICBpbnQgcHJpbnRfYXJncywKIAkJCSBzdHJ1 Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7CiAKK3N0YXRpYyB2b2lkIHNldF9s YXN0X2Rpc3BsYXllZF9zYWwgKGludCB2YWxpZCwKKwkJCQkgICAgc3RydWN0 IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwKKwkJCQkgICAgQ09SRV9BRERSIGFk ZHIsCisJCQkJICAgIHN0cnVjdCBzeW10YWIgKnN5bXRhYiwKKwkJCQkgICAg aW50IGxpbmUpOworCiAvKiBaZXJvIG1lYW5zIGRvIHRoaW5ncyBub3JtYWxs eTsgd2UgYXJlIGludGVyYWN0aW5nIGRpcmVjdGx5IHdpdGggdGhlCiAgICB1 c2VyLiAgT25lIG1lYW5zIHByaW50IHRoZSBmdWxsIGZpbGVuYW1lIGFuZCBs aW5lbnVtYmVyIHdoZW4gYQogICAgZnJhbWUgaXMgcHJpbnRlZCwgYW5kIGRv IHNvIGluIGEgZm9ybWF0IGVtYWNzMTgvZW1hY3MxOS4yMiBjYW4KQEAgLTgw LDYgKzg2LDE0IEBAIHN0YXRpYyB2b2lkIHByaW50X2ZyYW1lIChzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUsIGludCBwcmludF9sZXZlbCwKICAgIGNhc2Vz IGFuZCBpbiBhIHNsaWdodGx5IGRpZmZlcmVudCBzeW50YXguICAqLwogCiBp bnQgYW5ub3RhdGlvbl9sZXZlbCA9IDA7CisKKy8qIFRoZXNlIHZhcmlhYmxl cyBob2xkIHRoZSBsYXN0IHN5bXRhYiBhbmQgbGluZSB3ZSBkaXNwbGF5ZWQg dG8gdGhlIHVzZXIuCisgKiBUaGlzIGlzIHdoZXJlIHdlIGluc2VydCBhIGJy ZWFrcG9pbnQgb3IgYSBza2lwbGlzdCBlbnRyeSBieSBkZWZhdWx0LiAqLwor c3RhdGljIGludCBsYXN0X2Rpc3BsYXllZF9zYWxfdmFsaWQgPSAwOworc3Rh dGljIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpsYXN0X2Rpc3BsYXllZF9wc3Bh Y2UgPSAwOworc3RhdGljIENPUkVfQUREUiBsYXN0X2Rpc3BsYXllZF9hZGRy ID0gMDsKK3N0YXRpYyBzdHJ1Y3Qgc3ltdGFiICpsYXN0X2Rpc3BsYXllZF9z eW10YWIgPSAwOworc3RhdGljIGludCBsYXN0X2Rpc3BsYXllZF9saW5lID0g MDsKIAwKIAogLyogUmV0dXJuIDEgaWYgd2Ugc2hvdWxkIGRpc3BsYXkgdGhl IGFkZHJlc3MgaW4gYWRkaXRpb24gdG8gdGhlIGxvY2F0aW9uLApAQCAtNTk5 LDkgKzYxMyw5IEBAIHByaW50X2ZyYW1lX2luZm8gKHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSwgaW50IHByaW50X2xldmVsLAogICAgICAgQ09SRV9BRERS IHBjOwogCiAgICAgICBpZiAoZ2V0X2ZyYW1lX3BjX2lmX2F2YWlsYWJsZSAo ZnJhbWUsICZwYykpCi0Jc2V0X2RlZmF1bHRfYnJlYWtwb2ludCAoMSwgc2Fs LnBzcGFjZSwgcGMsIHNhbC5zeW10YWIsIHNhbC5saW5lKTsKKwlzZXRfbGFz dF9kaXNwbGF5ZWRfc2FsICgxLCBzYWwucHNwYWNlLCBwYywgc2FsLnN5bXRh Yiwgc2FsLmxpbmUpOwogICAgICAgZWxzZQotCXNldF9kZWZhdWx0X2JyZWFr cG9pbnQgKDAsIDAsIDAsIDAsIDApOworCXNldF9sYXN0X2Rpc3BsYXllZF9z YWwgKDAsIDAsIDAsIDAsIDApOwogICAgIH0KIAogICBhbm5vdGF0ZV9mcmFt ZV9lbmQgKCk7CkBAIC02MDksNiArNjIzLDEwNiBAQCBwcmludF9mcmFtZV9p bmZvIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCBwcmludF9sZXZl bCwKICAgZ2RiX2ZsdXNoIChnZGJfc3Rkb3V0KTsKIH0KIAorLyogUmVtZW1i ZXIgdGhlIGxhc3Qgc3ltdGFiIGFuZCBsaW5lIHdlIGRpc3BsYXllZCwgd2hp Y2ggd2UgdXNlIGUuZy4KKyAqIGFzIHRoZSBwbGFjZSB0byBwdXQgYSBicmVh a3BvaW50IHdoZW4gdGhlIGBicmVhaycgY29tbWFuZCBpcworICogaW52b2tl ZCB3aXRoIG5vIGFyZ3VtZW50cy4gICovCisKK3N0YXRpYyB2b2lkCitzZXRf bGFzdF9kaXNwbGF5ZWRfc2FsIChpbnQgdmFsaWQsIHN0cnVjdCBwcm9ncmFt X3NwYWNlICpwc3BhY2UsCisJCQlDT1JFX0FERFIgYWRkciwgc3RydWN0IHN5 bXRhYiAqc3ltdGFiLAorCQkJaW50IGxpbmUpCit7CisgIGxhc3RfZGlzcGxh eWVkX3NhbF92YWxpZCA9IHZhbGlkOworICBsYXN0X2Rpc3BsYXllZF9wc3Bh Y2UgPSBwc3BhY2U7CisgIGxhc3RfZGlzcGxheWVkX2FkZHIgPSBhZGRyOwor ICBsYXN0X2Rpc3BsYXllZF9zeW10YWIgPSBzeW10YWI7CisgIGxhc3RfZGlz cGxheWVkX2xpbmUgPSBsaW5lOworfQorCisvKiBGb3JnZXQgdGhlIGxhc3Qg c2FsIHdlIGRpc3BsYXllZC4gICovCisKK3ZvaWQKK2NsZWFyX2xhc3RfZGlz cGxheWVkX3NhbCAodm9pZCkKK3sKKyAgbGFzdF9kaXNwbGF5ZWRfc2FsX3Zh bGlkID0gMDsKKyAgbGFzdF9kaXNwbGF5ZWRfcHNwYWNlID0gMDsKKyAgbGFz dF9kaXNwbGF5ZWRfYWRkciA9IDA7CisgIGxhc3RfZGlzcGxheWVkX3N5bXRh YiA9IDA7CisgIGxhc3RfZGlzcGxheWVkX2xpbmUgPSAwOworfQorCisvKiBJ cyBvdXIgcmVjb3JkIG9mIHRoZSBsYXN0IHNhbCB3ZSBkaXNwbGF5ZWQgdmFs aWQ/ICBJZiBub3QsCisgKiB0aGUgZ2V0X2xhc3RfZGlzcGxheWVkXyogZnVu Y3Rpb25zIHdpbGwgcmV0dXJuIE5VTEwgb3IgMCwgYXMKKyAqIGFwcHJvcHJp YXRlLiAgKi8KKworaW50CitsYXN0X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQg KHZvaWQpCit7CisgIHJldHVybiBsYXN0X2Rpc3BsYXllZF9zYWxfdmFsaWQ7 Cit9CisKKy8qIEdldCB0aGUgcHNwYWNlIG9mIHRoZSBsYXN0IHNhbCB3ZSBk aXNwbGF5ZWQsIGlmIGl0J3MgdmFsaWQuICAqLworCitzdHJ1Y3QgcHJvZ3Jh bV9zcGFjZSAqCitnZXRfbGFzdF9kaXNwbGF5ZWRfcHNwYWNlICh2b2lkKQor eworICBpZiAobGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkKQorICAgIHJldHVy biBsYXN0X2Rpc3BsYXllZF9wc3BhY2U7CisgIHJldHVybiAwOworfQorCisv KiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGxhc3Qgc2FsIHdlIGRpc3BsYXll ZCwgaWYgaXQncyB2YWxpZC4gICovCisKK0NPUkVfQUREUgorZ2V0X2xhc3Rf ZGlzcGxheWVkX2FkZHIgKHZvaWQpCit7CisgIGlmIChsYXN0X2Rpc3BsYXll ZF9zYWxfdmFsaWQpCisgICAgcmV0dXJuIGxhc3RfZGlzcGxheWVkX2FkZHI7 CisgIHJldHVybiAwOworfQorCisvKiBHZXQgdGhlIHN5bXRhYiBvZiB0aGUg bGFzdCBzYWwgd2UgZGlzcGxheWVkLCBpZiBpdCdzIHZhbGlkLiAgKi8KKwor c3RydWN0IHN5bXRhYioKK2dldF9sYXN0X2Rpc3BsYXllZF9zeW10YWIgKHZv aWQpCit7CisgIGlmIChsYXN0X2Rpc3BsYXllZF9zYWxfdmFsaWQpCisgICAg cmV0dXJuIGxhc3RfZGlzcGxheWVkX3N5bXRhYjsKKyAgcmV0dXJuIDA7Cit9 CisKKy8qIEdldCB0aGUgbGluZSBvZiB0aGUgbGFzdCBzYWwgd2UgZGlzcGxh eWVkLCBpZiBpdCdzIHZhbGlkLiAgKi8KKworaW50CitnZXRfbGFzdF9kaXNw bGF5ZWRfbGluZSAodm9pZCkKK3sKKyAgaWYgKGxhc3RfZGlzcGxheWVkX3Nh bF92YWxpZCkKKyAgICByZXR1cm4gbGFzdF9kaXNwbGF5ZWRfbGluZTsKKyAg cmV0dXJuIDA7Cit9CisKKy8qIEdldCB0aGUgbGFzdCBzYWwgd2UgZGlzcGxh eWVkLCBpZiBpdCdzIHZhbGlkLiAgKi8KKwordm9pZAorZ2V0X2xhc3RfZGlz cGxheWVkX3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKQorewor ICBpZiAobGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkKQorICAgIHsKKyAgICAg IHNhbC0+cHNwYWNlID0gbGFzdF9kaXNwbGF5ZWRfcHNwYWNlOworICAgICAg c2FsLT5wYyA9IGxhc3RfZGlzcGxheWVkX2FkZHI7CisgICAgICBzYWwtPnN5 bXRhYiA9IGxhc3RfZGlzcGxheWVkX3N5bXRhYjsKKyAgICAgIHNhbC0+bGlu ZSA9IGxhc3RfZGlzcGxheWVkX2xpbmU7CisgICAgfQorICBlbHNlCisgICAg eworICAgICAgc2FsLT5wc3BhY2UgPSAwOworICAgICAgc2FsLT5wYyA9IDA7 CisgICAgICBzYWwtPnN5bXRhYiA9IDA7CisgICAgICBzYWwtPmxpbmUgPSAw OworICAgIH0KK30KKworCiAvKiBBdHRlbXB0IHRvIG9idGFpbiB0aGUgRlVO TkFNRSwgRlVOTEFORyBhbmQgb3B0aW9uYWxseSBGVU5DUCBvZiB0aGUgZnVu Y3Rpb24KICAgIGNvcnJlc3BvbmRpbmcgdG8gRlJBTUUuICAqLwogCmRpZmYg LS1naXQgYS9nZGIvc3RhY2suaCBiL2dkYi9zdGFjay5oCmluZGV4IDNjY2U2 MjMuLjMxMmU4ZmYgMTAwNjQ0Ci0tLSBhL2dkYi9zdGFjay5oCisrKyBiL2dk Yi9zdGFjay5oCkBAIC0zOCw0ICszOCwxNCBAQCB2b2lkIGl0ZXJhdGVfb3Zl cl9ibG9ja19sb2NhbF92YXJzIChzdHJ1Y3QgYmxvY2sgKmJsb2NrLAogCQkJ CSAgICBpdGVyYXRlX292ZXJfYmxvY2tfYXJnX2xvY2FsX3ZhcnNfY2IgY2Is CiAJCQkJICAgIHZvaWQgKmNiX2RhdGEpOwogCisvKiBHZXQgb3Igc2V0IHRo ZSBsYXN0IGRpc3BsYXllZCBzeW10YWIgYW5kIGxpbmUsIHdoaWNoIGlzLCBl LmcuIHdoZXJlIHdlIHNldCBhCisgKiBicmVha3BvaW50IHdoZW4gYGJyZWFr JyBpcyBzdXBwbGllZCB3aXRoIG5vIGFyZ3VtZW50cy4gICovCit2b2lkIGNs ZWFyX2xhc3RfZGlzcGxheWVkX3NhbCAodm9pZCk7CitpbnQgbGFzdF9kaXNw bGF5ZWRfc2FsX2lzX3ZhbGlkICh2b2lkKTsKK3N0cnVjdCBwcm9ncmFtX3Nw YWNlKiBnZXRfbGFzdF9kaXNwbGF5ZWRfcHNwYWNlICh2b2lkKTsKK0NPUkVf QUREUiBnZXRfbGFzdF9kaXNwbGF5ZWRfYWRkciAodm9pZCk7CitzdHJ1Y3Qg c3ltdGFiKiBnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiICh2b2lkKTsKK2lu dCBnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAodm9pZCk7Cit2b2lkIGdldF9s YXN0X2Rpc3BsYXllZF9zYWwgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNh bCk7CisKICNlbmRpZiAvKiAjaWZuZGVmIFNUQUNLX0ggKi8KZGlmZiAtLWdp dCBhL2dkYi9zeW1maWxlLmMgYi9nZGIvc3ltZmlsZS5jCmluZGV4IDE1NDBj YjcuLjFjNGQwYzkgMTAwNjQ0Ci0tLSBhL2dkYi9zeW1maWxlLmMKKysrIGIv Z2RiL3N5bWZpbGUuYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgImVs Zi1iZmQuaCIKICNpbmNsdWRlICJzb2xpYi5oIgogI2luY2x1ZGUgInJlbW90 ZS5oIgorI2luY2x1ZGUgInN0YWNrLmgiCiAKICNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KICNpbmNsdWRlIDxmY250bC5oPgpAQCAtMjc4MCw3ICsyNzgxLDcg QEAgY2xlYXJfc3ltdGFiX3VzZXJzIChpbnQgYWRkX2ZsYWdzKQogICBjbGVh cl9kaXNwbGF5cyAoKTsKICAgaWYgKChhZGRfZmxhZ3MgJiBTWU1GSUxFX0RF RkVSX0JQX1JFU0VUKSA9PSAwKQogICAgIGJyZWFrcG9pbnRfcmVfc2V0ICgp OwotICBzZXRfZGVmYXVsdF9icmVha3BvaW50ICgwLCBOVUxMLCAwLCAwLCAw KTsKKyAgY2xlYXJfbGFzdF9kaXNwbGF5ZWRfc2FsICgpOwogICBjbGVhcl9w Y19mdW5jdGlvbl9jYWNoZSAoKTsKICAgb2JzZXJ2ZXJfbm90aWZ5X25ld19v YmpmaWxlIChOVUxMKTsKIApkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwppbmRleCA4Zjll ZmQxLi43ZGVlYTNlIDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1aXRlL0NoYW5n ZUxvZworKysgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwpAQCAtMSwzICsx LDE0IEBACisyMDExLTEwLTA2ICBKdXN0aW4gTGViYXIgPGp1c3Rpbi5sZWJh ckBnbWFpbC5jb20+CisKKwlBZGQgdGVzdHMgZm9yIHNraXAgY29tbWFuZC4K KwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLWxpYi5jOiBOZXcK KwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLW1haW4uYzogTmV3 CisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi5leHA6IE5ldwor CSogdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuYzogTmV3CisJKiB0ZXN0c3Vp dGUvZ2RiLmJhc2Uvc2tpcC5leHA6IE5ldworCSogdGVzdHN1aXRlL2dkYi5i YXNlL3NraXAxLmM6IE5ldworCSogdGVzdHN1aXRlL2dkYi5iYXNlL01ha2Vm aWxlLmluOiBBZGRpbmcgbmV3IGZpbGVzLgorCiAyMDExLTEwLTA1ICBQaWVy cmUgTXVsbGVyICA8bXVsbGVyQGljcy51LXN0cmFzYmcuZnI+CiAKIAlBZGQg dGVzdHMgZm9yIHBhc3Npbmcgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRv IGluZmVyaW9yLgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9NYWtlZmlsZS5pbiBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvTWFrZWZp bGUuaW4KaW5kZXggNzJmMWJhNC4uN2NlYjEyMSAxMDA2NDQKLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtlZmlsZS5pbgorKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL01ha2VmaWxlLmluCkBAIC0zMCw4ICszMCw4IEBA IEVYRUNVVEFCTEVTID0gYTItcnVuIGFkdmFuY2UgYWxsLXR5cGVzIGFubm90 YTEgYW5ub3RhMS13YXRjaF90aHJlYWRfbnVtIFwKIAlzZXBzeW10YWIuZGVi dWcgc2Vwc3ltdGFiLnN0cmlwcGVkIHNldHNob3cgc2V0dmFyIHNobWFpbiBz aHJlbG9jIFwKIAlzaWdhbGwgc2lnYWx0c3RhY2sgc2lnYnB0IHNpZ2NobGQg c2lnaW5mbyBzaWdpbmZvLWFkZHIgXAogCXNpZ2luZm8taW5mY2FsbCBzaWdp bmZvLW9iaiBzaWduYWxzIHNpZ251bGwgc2lncmVwZWF0IHNpZ3N0ZXAgXAot CXNpemVvZiBzb2xpYiBzb2xpYi1jb3JydXB0ZWQgc29saWItZGlzcGxheS1t YWluIHNvbGliLW5vZGlyIFwKLQlzb2xpYi1vdmVybGFwLW1haW4tMHg0MDAw MDAwMCBzb2xpYi1zeW1ib2wtbWFpbiBzb2xpYi13ZWFrIFwKKwlzaXplb2Yg c2tpcCBza2lwLXNvbGliIHNvbGliIHNvbGliLWNvcnJ1cHRlZCBzb2xpYi1k aXNwbGF5LW1haW4KKwlzb2xpYi1ub2RpciBzb2xpYi1vdmVybGFwLW1haW4t MHg0MDAwMDAwMCBzb2xpYi1zeW1ib2wtbWFpbiBzb2xpYi13ZWFrIFwKIAlz b2xpYi13ZWFrLWxpYjIgc29saWJfc2wgc28taW1wbC1sZCBzby1pbmRyLWNs IFwKIAlzdGFjay1jaGVja2luZyBzdGFydCBzdGVwLWJyZWFrIHN0ZXAtYnQg c3RlcC1saW5lIHN0ZXAtcmVzdW1lLWluZmNhbGwgXAogCXN0ZXAtdGVzdCBz dG9yZSBzdHJ1Y3RzLXQqIHN0cnVjdHMyIHN0cnVjdHMzIFwKZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1saWIuYyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1saWIuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTJjZDAxCi0tLSAv ZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNv bGliLWxpYi5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qIFNpbXBsZSBzaGFyZWQg bGlicmFyeSAqLworCitpbnQgc3F1YXJlKGludCBudW0pCit7CisgIHJldHVy biBtdWx0aXBseShudW0sIG51bSk7Cit9CisKK2ludCBtdWx0aXBseShpbnQg YSwgaW50IGIpCit7CisgIHJldHVybiBhICogYjsKK30KZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1tYWluLmMgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbWFpbi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NmJiNWYKLS0tIC9k ZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29s aWItbWFpbi5jCkBAIC0wLDAgKzEsNiBAQAoraW50IHNxdWFyZShpbnQgbnVt KTsKKworaW50IG1haW4oKQoreworICByZXR1cm4gc3F1YXJlKDApOworfQpk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGli LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi5leHAK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZlMjVhNAot LS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tp cC1zb2xpYi5leHAKQEAgLTAsMCArMSwxMzAgQEAKKyMgICBDb3B5cmlnaHQg MjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor IworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKworIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSnVzdGlu IExlYmFyLiAoanVzdGluLmxlYmFyQGdtYWlsLmNvbSkKKworIworIyBUZXN0 cyBza2lwcGluZyBzaGFyZWQgbGlicmFyaWVzLgorIworCisjIFRoaXMgb25s eSB3b3JrcyBvbiBHTlUvTGludXguCitpZiB7ICFbaXNuYXRpdmVdIHx8IFtp c19yZW1vdGUgaG9zdF0gfHwgIVtpc3RhcmdldCAqLWxpbnV4Kl0gfHwgW3Nr aXBfc2hsaWJfdGVzdHNdfSB7CisgICAgY29udGludWUKK30KKworc2V0IHRl c3QgInNraXAtc29saWIiCitzZXQgc3JjZmlsZV9tYWluICIke3Rlc3R9LW1h aW4uYyIKK3NldCBiaW5maWxlX21haW4gIiR7dGVzdH0tdGVzdCIKK3NldCBz cmNmaWxlX2xpYiAiJHt0ZXN0fS1saWIuYyIKK3NldCBsaWJuYW1lICJsaWIk e3Rlc3R9Igorc2V0IGJpbmZpbGVfbGliICR7b2JqZGlyfS8ke3N1YmRpcn0v JHtsaWJuYW1lfS5zbworCisjCisjIENvbXBpbGUgb3VyIHByb2dyYW0gdW5k ZXIgdGVzdC4gIFRoZSBtYWluIHByb2dyYW0gcmVmZXJlbmNlcyBhIHNoYXJl ZCBsaWJyYXJ5CisjIGxpYnNraXAtc29saWIuc28sIHdoaWNoIGNvbnRhaW5z IHR3byBmdW5jdGlvbnMsIHNxdWFyZSgpLCB3aGljaCBpcworIyByZWZlcmVu Y2VkIGJ5IHRoZSBtYWluIHByb2dyYW0sIGFuZCBtdWx0aXBseSgpLCB3aGlj aCBpcyBub3QgcmVmZXJlbmNlZCBieQorIyB0aGUgbWFpbiBwcm9ncmFtLgor IworCitpZiB7W2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNmaWxlX2xpYn0gJHtiaW5maWxlX2xpYn0gW2xpc3QgZGVidWcg YWRkaXRpb25hbF9mbGFncz0tZlBJQyAtV2wsLXNvbmFtZSwke2xpYm5hbWV9 LnNvXV0gIT0gIiJ9IHsKKyAgICByZXR1cm4gLTEKK30KKworaWYge1tnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGVfbWFpbn0i ICIke2JpbmZpbGVfbWFpbn0ubyIgb2JqZWN0IGRlYnVnXSAhPSAiIn0gewor ICAgIHJldHVybiAtMQorfQorCitpZiB7W2dkYl9jb21waWxlICIke2JpbmZp bGVfbWFpbn0ubyIgIiR7YmluZmlsZV9tYWlufSIgZXhlY3V0YWJsZSBcCisg ICAgICAgICAgICAgICAgIFtsaXN0IGRlYnVnICJhZGRpdGlvbmFsX2ZsYWdz PS1MJHtvYmpkaXJ9LyR7c3ViZGlyfSAtbCR7dGVzdH0gXAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV2wsLXJw YXRoPSR7b2JqZGlyfS8ke3N1YmRpcn0iXV0gIT0gIiJ9IHsKKyAgICByZXR1 cm4gLTEKK30KKworZ2RiX3N0YXJ0CitjbGVhbl9yZXN0YXJ0ICR7YmluZmls ZV9tYWlufQorCisjCisjIEF0IHRoaXMgcG9pbnQsIGlmIHdlIHRyeSB0byBz a2lwIHRoZSBmaWxlICR7c3JjZmlsZV9saWJ9IG9yIHRoZSBmdW5jdGlvbgor IyBtdWx0aXBseSgpLCB3ZSBzaG91bGQgZ2V0IGEgcHJvbXB0IGFza2luZyB1 cyBpZiB3ZSB3YW50IHRvIGVuYWJsZSB0aGUKKyMgc2tpcCBlbnRyeSBwZW5k aW5nIGEgc2hhcmVkIGxpYnJhcnkgbG9hZC4KKyMKKworZ2RiX3Rlc3QgInNr aXAgZmlsZSAke3NyY2ZpbGVfbGlifSIgXAorICAiRmlsZSAke3NyY2ZpbGVf bGlifSB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZy4iIFwKKyAgImln bm9yaW5nIGZpbGUgaW4gc29saWIiIFwKKyAgIk5vIHNvdXJjZSBmaWxlIG5h bWVkICR7c3JjZmlsZV9saWJ9LioKK0lnbm9yZSBmaWxlIHBlbmRpbmcgZnV0 dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQuKiIgXAorICAieSIKKworIworIyBE b2VzIGluZm8gc2tpcCBsaXN0IHRoaXMgZW50cnkgYXMgcGVuZGluZz8KKyMK K2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyAgIk51bVxccytUeXBlXFxzK0Vu YlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisxXFxzK2ZpbGVcXHMreVxccytc XHMrJHtzcmNmaWxlX2xpYn0gXFwoUEVORElOR1xcKVxccyoiIFwKKyAgImlu Zm8gc2tpcCB3aXRoIHBlbmRpbmcgZmlsZSIKKworaWYgIVtydW50b19tYWlu XSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorCisjCisjIFdl IHNob3VsZG4ndCBzdGVwIGludG8gc3F1YXJlKCksIHNpbmNlIHdlIHNraXBw ZWQgc2tpcC1zb2xpYi1saWIuYy4KKyMKK2dkYl90ZXN0ICJzdGVwIiAiIgor Z2RiX3Rlc3QgImJ0IiAiIzBcXHMrbWFpbi4qIiAic3RlcCBhZnRlciBpZ25v cmluZyBzb2xpYiBmaWxlLiIKKworIworIyBPdXIgZW50cnkgc2hvdWxkIG5v IGxvbmdlciBiZSBwZW5kaW5nLiAgTm90ZSB0aGF0IHdlIHVuZm9ydHVuYXRl bHkgbmVlZCB0byBkbworIyBhdCBsZWFzdCBvbmUgc3RlcCBiZWZvcmUgdGhl IGVudHJ5IHdpbGwgYmUgdW5tYXJrZWQgYXMgcGVuZGluZy4KKyMKK2dkYl90 ZXN0ICJpbmZvIHNraXAiIFwKKyAgIk51bVxccytUeXBlXFxzK0VuYlxccytB ZGRyZXNzXFxzK1doYXRcXHMqCisxXFxzK2ZpbGVcXHMreVxccytcXHMrLiok e3NyY2ZpbGVfbGlifVxccyoiIFwKKyAgImluZm8gc2tpcCB3aXRoIHBlbmRp bmcgZmlsZSIKKworIworIyBOb3cgcmVzdGFydCBnZGIgYW5kIHRlc3Rpbmcg aWdub3Jpbmcgb2YgYSBmdW5jdGlvbiBpbnNpZGUgYSBzb2xpYi4KKyMKK2dk Yl9leGl0CitnZGJfc3RhcnQKK2NsZWFuX3Jlc3RhcnQgJHtiaW5maWxlX21h aW59CisKK2dkYl90ZXN0ICJza2lwIGZ1bmN0aW9uIG11bHRpcGx5IiBcCisg ICJGdW5jdGlvbiBtdWx0aXBseSB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVw cGluZywgcGVuZGluZyBzaGFyZWQgbGlicmFyeSBsb2FkLiIgXAorICAiaWdu b3JpbmcgZnVuY3Rpb24gaW4gc29saWIiIFwKKyJObyBmdW5jdGlvbiBmb3Vu ZCBuYW1lZCBtdWx0aXBseS4uKgorSWdub3JlIGZ1bmN0aW9uIHBlbmRpbmcg ZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQuKiIgXAorICAieSIKKworaWYg IVtydW50b19tYWluXSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIg fQorCisjCisjIE91ciBmaXJzdCBzdGVwIHNob3VsZCB0YWtlIHVzIGludG8g c3F1YXJlLgorIworZ2RiX3Rlc3QgInN0ZXAiICJzcXVhcmUuKiIKKworIwor IyBOb3cgb3VyIGVudHJ5IHNob3VsZCBubyBsb25nZXIgYmUgcGVuZGluZy4K KyMKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyAgIk51bVxccytUeXBlXFxz K0VuYlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisxXFxzK2Z1bmN0aW9uXFxz K3lcXHMrMHhcWzAtOWEtZlxdK1xccyttdWx0aXBseSBhdCAuKiR7c3JjZmls ZV9saWJ9Oi4qXFxzKiIgXAorICAic2tpcCBzaG91bGQgbm8gbG9uZ2VyIGJl IHBlbmRpbmcuIgorCisjCisjIFRoaXMgc3RlcCBzaG91bGRuJ3QgZ28gaW50 byBtdWx0aXBseSAtLSB3ZSBzaG91bGQgc2tpcCBpdCBhbmQgZ28gb24gdG8g dGhlCisjIGxhc3QgbGluZSBvZiBzcXVhcmUuCisjCitnZGJfdGVzdCAic3Rl cCIgIiIKK2dkYl90ZXN0ICJidCIgIiMwXFxzK3NxdWFyZS4qIgpkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NraXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi41NjViYTkzCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmMKQEAgLTAsMCArMSwxMyBAQAor aW50IGZvbygpOworaW50IGJhcigpOworaW50IGJheihpbnQsIGludCk7CisK K2ludCBtYWluKCkKK3sKKyAgcmV0dXJuIGJheihmb28oKSwgYmFyKCkpOwor fQorCitpbnQgZm9vKCkKK3sKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9za2lwLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi43YzY5OWViCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmV4cApAQCAtMCwwICsxLDE3OSBA QAorIyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIFRoaXMgZmlsZSB3YXMg d3JpdHRlbiBieSBKdXN0aW4gTGViYXIuIChqdXN0aW4ubGViYXJAZ21haWwu Y29tKQorCitpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nIHNraXAuZXhwICJz a2lwIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHtza2lwLmMgc2tp cDEuYyB9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAge2RlYnVnIG5v d2FybmluZ3N9XSB9IHsKKyAgICByZXR1cm4gLTEKK30KKworc2V0IHNyY2Zp bGUgc2tpcC5jCitzZXQgc3JjZmlsZTEgc2tpcDEuYworCisjCisjIFJpZ2h0 IGFmdGVyIHdlIHN0YXJ0IGdkYiwgdGhlcmUncyBubyBkZWZhdWx0IGZpbGUg b3IgZnVuY3Rpb24gdG8gc2tpcC4KKyMKK2dkYl90ZXN0ICJza2lwIGZpbGUi ICJObyBkZWZhdWx0IGZpbGUgbm93LiIKK2dkYl90ZXN0ICJza2lwIGZ1bmN0 aW9uIiAiTm8gZGVmYXVsdCBmdW5jdGlvbiBub3cuIgorZ2RiX3Rlc3QgInNr aXAiICJObyBkZWZhdWx0IGZ1bmN0aW9uIG5vdy4iCisKK2lmICFbcnVudG9f bWFpbl0geyBmYWlsICJza2lwIHRlc3RzIHN1cHByZXNzZWQiIH0KKworIwor IyBUZXN0IHxpbmZvIHNraXB8IHdpdGggYW4gZW1wdHkgc2tpcGxpc3QuCisj CitnZGJfdGVzdCAiaW5mbyBza2lwIiAiTm90IHNraXBwaW5nIGFueSBmaWxl cyBvciBmdW5jdGlvbnNcLiIgImluZm8gc2tpcCBlbXB0eSIKKworIworIyBD cmVhdGUgYSBza2lwbGlzdCBlbnRyeSBmb3IgdGhlIGN1cnJlbnQgZmlsZSBh bmQgZnVuY3Rpb24uCisjCitnZGJfdGVzdCAic2tpcCBmaWxlIiAiRmlsZSAu KiRzcmNmaWxlIHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nXC4iCitn ZGJfdGVzdCAic2tpcCIgIkZ1bmN0aW9uIG1haW4gYXQgLiogd2lsbCBiZSBz a2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIKKworIworIyBDcmVhdGUgYSBza2lw bGlzdCBlbnRyeSBmb3IgYSBzcGVjaWZpZWQgZmlsZSBhbmQgZnVuY3Rpb24u CisjCitnZGJfdGVzdCAic2tpcCBmaWxlIHNraXAxLmMiICJGaWxlIC4qJHNy Y2ZpbGUxIHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nXC4iCitnZGJf dGVzdCAic2tpcCBmdW5jdGlvbiBiYXoiICJGdW5jdGlvbiBiYXogYXQgLiog d2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIKKworIworIyBUZXN0 IGJhZCBza2lwbGlzdCBlbnRyeSBtb2RpZmljYXRpb24gY29tbWFuZHMKKyMK K2dkYl90ZXN0ICJza2lwIGVuYWJsZSA5OTkiICJObyBza2lwbGlzdCBlbnRy aWVzIGZvdW5kIHdpdGggbnVtYmVyIDk5OS4iCitnZGJfdGVzdCAic2tpcCBk aXNhYmxlIDk5OSIgIk5vIHNraXBsaXN0IGVudHJpZXMgZm91bmQgd2l0aCBu dW1iZXIgOTk5LiIKK2dkYl90ZXN0ICJza2lwIGRlbGV0ZSA5OTkiICJObyBz a2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdpdGggbnVtYmVyIDk5OS4iCitnZGJf dGVzdCAic2tpcCBlbmFibGUgYSIgIkFyZ3MgbXVzdCBiZSBudW1iZXJzIG9y ICdcXCQnIHZhcmlhYmxlcy4iCitnZGJfdGVzdCAic2tpcCBkaXNhYmxlIGEi ICJBcmdzIG11c3QgYmUgbnVtYmVycyBvciAnXFwkJyB2YXJpYWJsZXMuIgor Z2RiX3Rlc3QgInNraXAgZGVsZXRlIGEiICJBcmdzIG11c3QgYmUgbnVtYmVy cyBvciAnXFwkJyB2YXJpYWJsZXMuIgorCisjCisjIEFzayBmb3IgaW5mbyBv biBhIHNraXBsaXN0IGVudHJ5IHdoaWNoIGRvZXNuJ3QgZXhpc3QuCisjCitn ZGJfdGVzdCAiaW5mbyBza2lwIDk5OSIgIk5vIHNraXBsaXN0IGVudHJpZXMg Zm91bmQgd2l0aCBudW1iZXIgOTk5LiIKKworIworIyBEb2VzIHxpbmZvIHNr aXB8IGxvb2sgcmlnaHQ/CisjCitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisg ICJOdW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgor MVxccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZVxccyoKKzJcXHMrZnVuY3Rp b25cXHMreVxccysweFxbMC05YS1mXF0rIG1haW4gYXQgLiokc3JjZmlsZTpc WzAtOVxdK1xccyoKKzNcXHMrZmlsZVxccyt5XFxzKy4qJHNyY2ZpbGUxXFxz KgorNFxccytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZcXSsgYmF6IGF0 IC4qJHNyY2ZpbGUxOlxbMC05XF0rXFxzKiIKKworIworIyBSaWdodCBub3cs IHdlIGhhdmUgYW4gb3V0c3RhbmRpbmcgc2tpcGxpc3QgZW50cnkgb24gYm90 aCBzb3VyY2UKKyMgZmlsZXMsIHNvIHdoZW4gd2Ugc3RlcCBpbnRvIHRoZSBm aXJzdCBsaW5lIGluIG1haW4oKSwgd2Ugc2hvdWxkIHN0ZXAKKyMgcmlnaHQg b3ZlciBpdCBhbmQgZ28gdG8gdGhlIHNlY29uZCBsaW5lIG9mIG1haW4oKS4K KyMKKworaWYgIVtydW50b19tYWluXSB7IGZhaWwgInNraXAgdGVzdHMgc3Vw cHJlc3NlZCIgfQorZ2RiX3Rlc3QgInN0ZXAiCitnZGJfdGVzdCAiYnQiICJc XHMqXFwjMFxccyttYWluLioiICJzdGVwIGFmdGVyIGFsbCBpZ25vcmVkIgor CisjCisjIE5vdyByZW1vdmUgc2tpcC5jIGZyb20gdGhlIHNraXBsaXN0LiAg T3VyIGZpcnN0IHN0ZXAgc2hvdWxkIHRha2UgdXMKKyMgaW50byBmb28oKSwg YW5kIG91ciBzZWNvbmQgc3RlcCBzaG91bGQgdGFrZSB1cyB0byB0aGUgbmV4 dCBsaW5lIGluCisjIG1haW4oKS4KKyMKK2dkYl90ZXN0ICJza2lwIGRlbGV0 ZSAxIgorIyBDaGVjayB0aGF0IGVudHJ5IDEgaXMgbWlzc2luZyBmcm9tIHxp bmZvIHNraXB8CitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisgICJOdW1cXHMr VHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxccytmdW5j dGlvblxccyt5XFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNmaWxl OlxbMC05XF0rXFxzKgorM1xccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZTFc XHMqCis0XFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdKyBiYXog YXQgLiokc3JjZmlsZTE6XFswLTlcXStcXHMqIgorCitpZiAhW3J1bnRvX21h aW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9CitnZGJfdGVz dCAic3RlcCIgImZvbyBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIgZGVsZXRp bmcgMSAoMSkiCitnZGJfdGVzdCAic3RlcCI7ICMgUmV0dXJuIGZyb20gZm9v KCkKK2dkYl90ZXN0ICJzdGVwIiAibWFpbiBcXChcXCkgYXQuKiIgInN0ZXAg YWZ0ZXIgZGVsZXRpbmcgMSAoMikiCisKKyMKKyMgTm93IGRpc2FibGUgdGhl IHNraXBsaXN0IGVudHJ5IGZvciAgc2tpcDEuYy4gIFdlIHNob3VsZCBub3cK KyMgc3RlcCBpbnRvIGZvbygpLCB0aGVuIGludG8gYmFyKCksIGJ1dCBub3Qg aW50byBiYXooKS4KKyMKK2dkYl90ZXN0ICJza2lwIGRpc2FibGUgMyIKKyMg SXMgZW50cnkgMyBkaXNhYmxlZCBpbiB8aW5mbyBza2lwfD8KK2dkYl90ZXN0 ICJpbmZvIHNraXAgMyIgIi4qXFxuM1xccytmaWxlXFxzK24uKiIgXAorICAi aW5mbyBza2lwIHNob3dzIGVudHJ5IGFzIGRpc2FibGVkIgorCitpZiAhW3J1 bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9Citn ZGJfdGVzdCAic3RlcCIgImJhciBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIg ZGlzYWJsaW5nIDMgKDEpIgorZ2RiX3Rlc3QgInN0ZXAiOyAjIFJldHVybiBm cm9tIGZvbygpCitnZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQuKiIg InN0ZXAgYWZ0ZXIgZGlzYWJsaW5nIDMgKDIpIgorZ2RiX3Rlc3QgInN0ZXAi OyAjIFJldHVybiBmcm9tIGJhcigpCitnZGJfdGVzdCAic3RlcCIgIm1haW4g XFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRpc2FibGluZyAzICgzKSIKKwor IworIyBFbmFibGUgc2tpcGxpc3QgZW50cnkgMyBhbmQgbWFrZSBzdXJlIHdl IHN0ZXAgb3ZlciBpdCBsaWtlIGJlZm9yZS4KKyMKK2dkYl90ZXN0ICJza2lw IGVuYWJsZSAzIgorIyBJcyBlbnRyeSAzIGVuYWJsZWQgaW4gfGluZm8gc2tp cHw/CitnZGJfdGVzdCAiaW5mbyBza2lwIDMiICIuKlxcbjNcXHMrZmlsZVxc cyt5LioiIFwKKyAgImluZm8gc2tpcCBzaG93cyBlbnRyeSBhcyBlbmFibGVk IgoraWYgIVtydW50b19tYWluXSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJl c3NlZCIgfQorZ2RiX3Rlc3QgInN0ZXAiICJmb28gXFwoXFwpIGF0LioiICJz dGVwIGFmdGVyIGRlbGV0aW5nIDEgKDEpIgorZ2RiX3Rlc3QgInN0ZXAiOyAj IFJldHVybiBmcm9tIGZvbygpCitnZGJfdGVzdCAic3RlcCIgIm1haW4gXFwo XFwpIGF0LioiICJzdGVwIGFmdGVyIGRlbGV0aW5nIDEgKDIpIgorCitnZGJf dGVzdCAic2tpcCBkaXNhYmxlIgorZ2RiX3Rlc3QgImluZm8gc2tpcCIgXAor ICAiTnVtXFxzK1R5cGVcXHMrRW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoK KzJcXHMrZnVuY3Rpb25cXHMrblxccysweFxbMC05YS1mXF0rIG1haW4gYXQg Liokc3JjZmlsZTpcWzAtOVxdK1xccyoKKzNcXHMrZmlsZVxccytuXFxzKy4q JHNyY2ZpbGUxXFxzKgorNFxccytmdW5jdGlvblxccytuXFxzKzB4XFswLTlh LWZcXSsgYmF6IGF0IC4qJHNyY2ZpbGUxOlxbMC05XF0rXFxzKiIgXAorICAi aW5mbyBza2lwIGFmdGVyIGRpc2FibGluZyBhbGwiCisKK2dkYl90ZXN0ICJz a2lwIGVuYWJsZSIKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyAgIk51bVxc cytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisyXFxzK2Z1 bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdKyBtYWluIGF0IC4qJHNyY2Zp bGU6XFswLTlcXStcXHMqCiszXFxzK2ZpbGVcXHMreVxccysuKiRzcmNmaWxl MVxccyoKKzRcXHMrZnVuY3Rpb25cXHMreVxccysweFxbMC05YS1mXF0rIGJh eiBhdCAuKiRzcmNmaWxlMTpcWzAtOVxdK1xccyoiIFwKKyAgImluZm8gc2tp cCBhZnRlciBlbmFibGluZyBhbGwiCisKK2dkYl90ZXN0ICJza2lwIGRpc2Fi bGUgNCAyLTMiCitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisgICJOdW1cXHMr VHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxccytmdW5j dGlvblxccytuXFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNmaWxl OlxbMC05XF0rXFxzKgorM1xccytmaWxlXFxzK25cXHMrLiokc3JjZmlsZTFc XHMqCis0XFxzK2Z1bmN0aW9uXFxzK25cXHMrMHhcWzAtOWEtZlxdKyBiYXog YXQgLiokc3JjZmlsZTE6XFswLTlcXStcXHMqIiBcCisgICJpbmZvIHNraXAg YWZ0ZXIgZGlzYWJsaW5nIDQgMi0zIgorCitnZGJfdGVzdCAic2tpcCBlbmFi bGUgMi0zIgorZ2RiX3Rlc3QgImluZm8gc2tpcCIgXAorICAiTnVtXFxzK1R5 cGVcXHMrRW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzJcXHMrZnVuY3Rp b25cXHMreVxccysweFxbMC05YS1mXF0rIG1haW4gYXQgLiokc3JjZmlsZTpc WzAtOVxdK1xccyoKKzNcXHMrZmlsZVxccyt5XFxzKy4qJHNyY2ZpbGUxXFxz KgorNFxccytmdW5jdGlvblxccytuXFxzKzB4XFswLTlhLWZcXSsgYmF6IGF0 IC4qJHNyY2ZpbGUxOlxbMC05XF0rXFxzKiIgXAorICAiaW5mbyBza2lwIGFm dGVyIGVuYWJsaW5nIDItMyIKKworZ2RiX3Rlc3QgImluZm8gc2tpcCAyLTMi IFwKKyAgIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1doYXRc XHMqCisyXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdKyBtYWlu IGF0IC4qJHNyY2ZpbGU6XFswLTlcXStcXHMqCiszXFxzK2ZpbGVcXHMreVxc cysuKiRzcmNmaWxlMVxccyoiIFwKKyAgImluZm8gc2tpcCAyLTMiCisKK2dk Yl90ZXN0ICJza2lwIGRlbGV0ZSAyIDMiCitnZGJfdGVzdCAiaW5mbyBza2lw IiBcCisgICI0XFxzK2Z1bmN0aW9uXFxzK25cXHMrMHhcWzAtOWEtZlxdKyBi YXogYXQgLiokc3JjZmlsZTE6XFswLTlcXStcXHMqIiBcCisgICJpbmZvIHNr aXAgYWZ0ZXIgZGVsZXRpbmcgMiAzIgorCitnZGJfdGVzdCAic2tpcCBkZWxl dGUiCitnZGJfdGVzdCAiaW5mbyBza2lwIiAiTm90IHNraXBwaW5nIGFueSBm aWxlcyBvciBmdW5jdGlvbnNcLiIgXAorICAiaW5mbyBza2lwIGFmdGVyIGRl bGV0aW5nIGFsbCIKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc2tpcDEuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcDEuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGFiNWMzCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lw MS5jCkBAIC0wLDAgKzEsOSBAQAoraW50IGJhcigpCit7CisgIHJldHVybiAx OworfQorCitpbnQgYmF6KGludCBhLCBpbnQgYikKK3sKKyAgcmV0dXJuIGEg KyBiOworfQo= --001517448214c8dae604b061245c--