From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8832 invoked by alias); 14 Dec 2018 22:48:42 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 1387 invoked by uid 89); 14 Dec 2018 22:48:27 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.0 required=5.0 tests=BAYES_20,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=bai, save_expr, typos, ARRAY_REF X-HELO: mail-ot1-f65.google.com Received: from mail-ot1-f65.google.com (HELO mail-ot1-f65.google.com) (209.85.210.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 14 Dec 2018 22:48:24 +0000 Received: by mail-ot1-f65.google.com with SMTP id n8so6966084otl.6 for ; Fri, 14 Dec 2018 14:48:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=PG3faoBMQsTiH1e9ZO4lJWPMvs/wC+xeMxItQbfoaog=; b=uG2MP1/Y3Hxq81L5gzPn7sTYWEvWSOdNsBXaH0csAP6s16n+CNdZwV0rJUCyWPEyxa en/ABjF37MAqh68nOV2WepmTKgy0bHpCTdOe4UwcfJj4DMPvr9ft/3msWNcckYHZuujM OyzsL5zXiGGf28SwDo4zW8XusD7Zr1s11hB3Fb56FKK/RnN/ACXlhIMGyh3VoB2ahJsb RXHUsjFmqdRgHIkhdxuTvKIOsDrHSKdcfh6M1Aa41fj2i3fF70LL+Ub4c/Kr7jIUxxN5 49+FNWWIHmPUTQG+Q3xMcX2EpIRZJWZBWbjsPMKGVnY9rvYQyc6s415bpaQLcpPesWU6 Xvrw== MIME-Version: 1.0 References: <24f8a201-bb3e-3acb-b679-570a8796358d@redhat.com> In-Reply-To: <24f8a201-bb3e-3acb-b679-570a8796358d@redhat.com> From: "H.J. Lu" Date: Fri, 14 Dec 2018 22:48:00 -0000 Message-ID: Subject: V6 [PATCH] C/C++: Add -Waddress-of-packed-member To: Jason Merrill Cc: "Joseph S. Myers" , Martin Sebor , GCC Patches Content-Type: multipart/mixed; boundary="000000000000fd6f86057d0339ea" X-IsSubscribed: yes X-SW-Source: 2018-12/txt/msg01121.txt.bz2 --000000000000fd6f86057d0339ea Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 5308 On Fri, Dec 14, 2018 at 2:10 PM Jason Merrill wrote: > > On 12/13/18 6:56 PM, H.J. Lu wrote: > > On Thu, Dec 13, 2018 at 12:50 PM Jason Merrill wrote: > >> > >> On 9/25/18 11:46 AM, H.J. Lu wrote: > >>> On Fri, Aug 31, 2018 at 2:04 PM, Jason Merrill wro= te: > >>>> On 07/23/2018 05:24 PM, H.J. Lu wrote: > >>>>> > >>>>> On Mon, Jun 18, 2018 at 12:26 PM, Joseph Myers > >>>>> wrote: > >>>>>> > >>>>>> On Mon, 18 Jun 2018, Jason Merrill wrote: > >>>>>> > >>>>>>> On Mon, Jun 18, 2018 at 11:59 AM, Joseph Myers > >>>>>>> wrote: > >>>>>>>> > >>>>>>>> On Mon, 18 Jun 2018, Jason Merrill wrote: > >>>>>>>> > >>>>>>>>>> + if (TREE_CODE (rhs) =3D=3D COND_EXPR) > >>>>>>>>>> + { > >>>>>>>>>> + /* Check the THEN path first. */ > >>>>>>>>>> + tree op1 =3D TREE_OPERAND (rhs, 1); > >>>>>>>>>> + context =3D check_address_of_packed_member (type, op1); > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> This should handle the GNU extension of re-using operand 0 if o= perand > >>>>>>>>> 1 is omitted. > >>>>>>>> > >>>>>>>> > >>>>>>>> Doesn't that just use a SAVE_EXPR? > >>>>>>> > >>>>>>> > >>>>>>> Hmm, I suppose it does, but many places in the compiler seem to e= xpect > >>>>>>> that it produces a COND_EXPR with TREE_OPERAND 1 as NULL_TREE. > >>>>>> > >>>>>> > >>>>>> Maybe that's used somewhere inside the C++ front end. For C a SAV= E_EXPR > >>>>>> is produced directly. > >>>>> > >>>>> > >>>>> Here is the updated patch. Changes from the last one: > >>>>> > >>>>> 1. Handle COMPOUND_EXPR. > >>>>> 2. Fixed typos in comments. > >>>>> 3. Combined warn_for_pointer_of_packed_member and > >>>>> warn_for_address_of_packed_member into > >>>>> warn_for_address_or_pointer_of_packed_member. > >>>> > >>>> > >>>>> c.i:4:33: warning: converting a packed =E2=80=98struct C *=E2=80=99= pointer increases the > >>>>> alignment of =E2=80=98long int *=E2=80=99 pointer from 1 to 8 [-Wad= dress-of-packed-member] > >>>> > >>>> > >>>> I think this would read better as > >>>> > >>>> c.i:4:33: warning: converting a packed =E2=80=98struct C *=E2=80=99 = pointer (alignment 1) to > >>>> =E2=80=98long int *=E2=80=99 (alignment 8) may result in an unaligne= d pointer value > >>>> [-Waddress-of-packed-member] > >>> > >>> Fixed. > >>> > >>>>> + while (TREE_CODE (base) =3D=3D ARRAY_REF) > >>>>> + base =3D TREE_OPERAND (base, 0); > >>>>> + if (TREE_CODE (base) !=3D COMPONENT_REF) > >>>>> + return NULL_TREE; > >>>> > >>>> > >>>> Are you deliberately not handling the other handled_component_p case= s? If > >>>> so, there should be a comment. > >>> > >>> I changed it to > >>> > >>> while (handled_component_p (base)) > >>> { > >>> enum tree_code code =3D TREE_CODE (base); > >>> if (code =3D=3D COMPONENT_REF) > >>> break; > >>> switch (code) > >>> { > >>> case ARRAY_REF: > >>> base =3D TREE_OPERAND (base, 0); > >>> break; > >>> default: > >>> /* FIXME: Can it ever happen? */ > >>> gcc_unreachable (); > >>> break; > >>> } > >>> } > >>> > >>> Is there a testcase to trigger this ICE? I couldn't find one. > >> > >> You can take the address of an element of complex: > >> > >> __complex int i; > >> int *p =3D &__real(i); > >> > >> You may get VIEW_CONVERT_EXPR with location wrappers. > > > > Fixed. I replaced gcc_unreachable with return NULL_TREE; > > Then we're back to my earlier question: are you deliberately not > handling the other cases? Why not look through them as well? What if > e.g. the operand of __real is a packed field? > Here is the updated patch with diff --git a/gcc/c-family/c-warn.c b/gcc/c-family/c-warn.c index 615134cfdac..f105742598e 100644 --- a/gcc/c-family/c-warn.c +++ b/gcc/c-family/c-warn.c @@ -2669,6 +2669,9 @@ check_address_of_packed_member (tree type, tree rhs) switch (code) { case ARRAY_REF: + case REALPART_EXPR: + case IMAGPART_EXPR: + case VIEW_CONVERT_EXPR: base =3D TREE_OPERAND (base, 0); break; default: Now I got [hjl@gnu-cfl-1 pr51628-6]$ cat foo.i struct A { __complex int i; }; struct B { struct A a; }; struct C { struct B b __attribute__ ((packed)); }; extern struct C *p; int* foo1 (void) { return &__real(p->b.a.i); } int* foo2 (void) { return &__imag(p->b.a.i); } [hjl@gnu-cfl-1 pr51628-6]$ make foo.s /export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/ -O2 -S foo.i foo.i: In function =E2=80=98foo1=E2=80=99: foo.i:10:10: warning: taking address of packed member of =E2=80=98struct C= =E2=80=99 may result in an unaligned pointer value [-Waddress-of-packed-member] 10 | return &__real(p->b.a.i); | ^~~~~~~~~~~~~~~~~ foo.i: In function =E2=80=98foo2=E2=80=99: foo.i:15:10: warning: taking address of packed member of =E2=80=98struct C= =E2=80=99 may result in an unaligned pointer value [-Waddress-of-packed-member] 15 | return &__imag(p->b.a.i); | ^~~~~~~~~~~~~~~~~ [hjl@gnu-cfl-1 pr51628-6]$ OK for trunk? --=20 H.J. --000000000000fd6f86057d0339ea Content-Type: application/x-patch; name="0001-C-C-Add-Waddress-of-packed-member.patch" Content-Disposition: attachment; filename="0001-C-C-Add-Waddress-of-packed-member.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jpomdgtq0 Content-length: 68556 RnJvbSBjZDQ5YWIxNDZkMmNlODgzYjg4NzA3ZDNkMjUzOGU5OTc2YzZjNWNj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTIgSmFuIDIwMTggMjE6 MTI6MDUgLTA4MDAKU3ViamVjdDogW1BBVENIXSBDL0MrKzogQWRkIC1XYWRk cmVzcy1vZi1wYWNrZWQtbWVtYmVyCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRy YW5zZmVyLUVuY29kaW5nOiA4Yml0CgpXaGVuIGFkZHJlc3Mgb2YgcGFja2Vk IG1lbWJlciBvZiBzdHJ1Y3Qgb3IgdW5pb24gaXMgdGFrZW4sIGl0IG1heSBy ZXN1bHQKaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUuICBUaGlzIHBh dGNoIGFkZHMgLVdhZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIKdG8gY2hlY2sg YWxpZ25tZW50IGF0IHBvaW50ZXIgYXNzaWdubWVudCBhbmQgd2FybiB1bmFs aWduZWQgYWRkcmVzcyBhcwp3ZWxsIGFzIHVuYWxpZ25lZCBwb2ludGVyOgoK JCBjYXQgeC5pCnN0cnVjdCBwYWlyX3QKewogIGNoYXIgYzsKICBpbnQgaTsK fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CgpleHRlcm4gc3RydWN0IHBh aXJfdCBwOwppbnQgKmFkZHIgPSAmcC5pOwokIGdjYyAtTzIgLVMgeC5pCngu aTo4OjEzOiB3YXJuaW5nOiB0YWtpbmcgYWRkcmVzcyBvZiBwYWNrZWQgbWVt YmVyIG9mIOKAmHN0cnVjdCBwYWlyX3TigJkgbWF5IHJlc3VsdCBpbiBhbiB1 bmFsaWduZWQgcG9pbnRlciB2YWx1ZSBbLVdhZGRyZXNzLW9mLXBhY2tlZC1t ZW1iZXJdCjggfCBpbnQgKmFkZHIgPSAmcC5pOwogIHwgICAgICAgICAgICAg XgoKJCBjYXQgYy5pCnN0cnVjdCBCIHsgaW50IGk7IH07CnN0cnVjdCBDIHsg c3RydWN0IEIgYjsgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7Cgpsb25n KiBnOCAoc3RydWN0IEMgKnApIHsgcmV0dXJuIHA7IH0KJCBnY2MgLU8yIC1T IGMuaSAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzCmMuaTogSW4g ZnVuY3Rpb24g4oCYZzjigJk6CmMuaTo0OjE4OiB3YXJuaW5nOiBjb252ZXJ0 aW5nIGEgcGFja2VkIOKAmHN0cnVjdCBDICrigJkgcG9pbnRlciAoYWxpZ25t ZW50IDEpIHRvIOKAmGxvbmcgaW50ICrigJkgKGFsaWdubWVudCA4KSBtYXkg bWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSBbLVdh ZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXJdCjQgfCBsb25nKiBnOCAoc3RydWN0 IEMgKnApIHsgcmV0dXJuIHA7IH0KICB8ICAgICAgICAgICAgICAgICAgXgpj Lmk6Mjo4OiBub3RlOiBkZWZpbmVkIGhlcmUKMiB8IHN0cnVjdCBDIHsgc3Ry dWN0IEIgYjsgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgfCAgICAg ICAgXgokCgpUaGlzIHdhcm5pbmcgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiAg U2luY2UgcmVhZF9lbmNvZGVkX3ZhbHVlX3dpdGhfYmFzZQppbiB1bndpbmQt cGUuaCBoYXMKCiAgdW5pb24gdW5hbGlnbmVkCiAgICB7CiAgICAgIHZvaWQg KnB0cjsKICAgICAgdW5zaWduZWQgdTIgX19hdHRyaWJ1dGVfXyAoKG1vZGUg KEhJKSkpOwogICAgICB1bnNpZ25lZCB1NCBfX2F0dHJpYnV0ZV9fICgobW9k ZSAoU0kpKSk7CiAgICAgIHVuc2lnbmVkIHU4IF9fYXR0cmlidXRlX18gKCht b2RlIChESSkpKTsKICAgICAgc2lnbmVkIHMyIF9fYXR0cmlidXRlX18gKCht b2RlIChISSkpKTsKICAgICAgc2lnbmVkIHM0IF9fYXR0cmlidXRlX18gKCht b2RlIChTSSkpKTsKICAgICAgc2lnbmVkIHM4IF9fYXR0cmlidXRlX18gKCht b2RlIChESSkpKTsKICAgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykp OwogIF9VbndpbmRfSW50ZXJuYWxfUHRyIHJlc3VsdDsKCmFuZCBHQ0Mgd2Fy bnM6CgpnY2MvbGliZ2NjL3Vud2luZC1wZS5oOjIxMDozNzogd2FybmluZzog dGFraW5nIGFkZHJlc3Mgb2YgcGFja2VkIG1lbWJlciBvZiAndW5pb24gdW5h bGlnbmVkJyBtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZh bHVlIFstV2FkZHJlc3Mtb2YtcGFja2VkLW1lbWJlcl0KICAgIHJlc3VsdCA9 IChfVW53aW5kX0ludGVybmFsX1B0cikgdS0+cHRyOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCndlIG5lZWQgdG8gYWRkIEdDQyBw cmFnbWEgdG8gaWdub3JlIC1XYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyLgoK Z2NjL2MvCgoJUFIgYy81MTYyOAoJKiBkb2MvaW52b2tlLnRleGk6IERvY3Vt ZW50IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyLgoKZ2NjL2MtZmFt aWx5LwoKCVBSIGMvNTE2MjgKCSogYy1jb21tb24uaCAod2Fybl9mb3JfYWRk cmVzc19vcl9wb2ludGVyX29mX3BhY2tlZF9tZW1iZXIpOiBOZXcuCgkqIGMt d2Fybi5jIChjaGVja19hbGlnbm1lbnRfb2ZfcGFja2VkX21lbWJlcik6IE5l dyBmdW5jdGlvbi4KCShjaGVja19hZGRyZXNzX29mX3BhY2tlZF9tZW1iZXIp OiBMaWtld2lzZS4KCShjaGVja19hbmRfd2Fybl9hZGRyZXNzX29mX3BhY2tl ZF9tZW1iZXIpOiBMaWtld2lzZS4KCSh3YXJuX2Zvcl9hZGRyZXNzX29yX3Bv aW50ZXJfb2ZfcGFja2VkX21lbWJlcik6IExpa2V3aXNlLgoJKiBjLm9wdDog QWRkIC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyLgoKZ2NjL2MvCgoJ UFIgYy81MTYyOAoJKiBjLXR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25t ZW50KTogQ2FsbAoJd2Fybl9mb3JfYWRkcmVzc19vcl9wb2ludGVyX29mX3Bh Y2tlZF9tZW1iZXIuCgpnY2MvY3AvCgoJUFIgYy81MTYyOAoJKiBjYWxsLmMg KGNvbnZlcnRfZm9yX2FyZ19wYXNzaW5nKTogQ2FsbAoJd2Fybl9mb3JfYWRk cmVzc19vcl9wb2ludGVyX29mX3BhY2tlZF9tZW1iZXIuCgkqIHR5cGVjay5j IChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgpnY2MvdGVz dHN1aXRlLwoKCVBSIGMvNTE2MjgKCSogYy1jKystY29tbW9uL3ByNTE2Mjgt MS5jOiBOZXcgdGVzdC4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtMi5jOiBM aWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtMy5jOiBMaWtld2lz ZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtNC5jOiBMaWtld2lzZS4KCSog Yy1jKystY29tbW9uL3ByNTE2MjgtNS5jOiBMaWtld2lzZS4KCSogYy1jKyst Y29tbW9uL3ByNTE2MjgtNi5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9u L3ByNTE2MjgtNy5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2 MjgtOC5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtOS5j OiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtMTAuYzogTGlr ZXdpc2UuCgkqIGMtYysrLWNvbW1vbi9wcjUxNjI4LTExLmM6IExpa2V3aXNl LgoJKiBjLWMrKy1jb21tb24vcHI1MTYyOC0xMi5jOiBMaWtld2lzZS4KCSog Yy1jKystY29tbW9uL3ByNTE2MjgtMTMuYzogTGlrZXdpc2UuCgkqIGMtYysr LWNvbW1vbi9wcjUxNjI4LTE0LmM6IExpa2V3aXNlLgoJKiBjLWMrKy1jb21t b24vcHI1MTYyOC0xNS5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3By NTE2MjgtMjYuYzogTGlrZXdpc2UuCgkqIGMtYysrLWNvbW1vbi9wcjUxNjI4 LTI3LmM6IExpa2V3aXNlLgoJKiBjLWMrKy1jb21tb24vcHI1MTYyOC0yOC5j OiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtMjkuYzogTGlr ZXdpc2UuCgkqIGMtYysrLWNvbW1vbi9wcjUxNjI4LTMwLmM6IExpa2V3aXNl LgoJKiBnY2MuZGcvcHI1MTYyOC0xNy5jOiBMaWtld2lzZS4KCSogZ2NjLmRn L3ByNTE2MjgtMTguYzogTGlrZXdpc2UuCgkqIGdjYy5kZy9wcjUxNjI4LTE5 LmM6IExpa2V3aXNlLgoJKiBnY2MuZGcvcHI1MTYyOC0yMC5jOiBMaWtld2lz ZS4KCSogZ2NjLmRnL3ByNTE2MjgtMjEuYzogTGlrZXdpc2UuCgkqIGdjYy5k Zy9wcjUxNjI4LTIyLmM6IExpa2V3aXNlLgoJKiBnY2MuZGcvcHI1MTYyOC0y My5jOiBMaWtld2lzZS4KCSogZ2NjLmRnL3ByNTE2MjgtMjQuYzogTGlrZXdp c2UuCgkqIGdjYy5kZy9wcjUxNjI4LTI1LmM6IExpa2V3aXNlLgoJKiBjLWMr Ky1jb21tb24vYXNhbi9taXNhbGlnbi0xLmM6IEFkZAoJLVduby1hZGRyZXNz LW9mLXBhY2tlZC1tZW1iZXIuCgkqIGMtYysrLWNvbW1vbi9hc2FuL21pc2Fs aWduLTIuYzogTGlrZXdpc2UuCgkqIGMtYysrLWNvbW1vbi91YnNhbi9hbGln bi0yLmM6IExpa2V3aXNlLgoJKiBjLWMrKy1jb21tb24vdWJzYW4vYWxpZ24t NC5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTYu YzogTGlrZXdpc2UuCgkqIGMtYysrLWNvbW1vbi91YnNhbi9hbGlnbi03LmM6 IExpa2V3aXNlLgoJKiBjLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tOC5jOiBM aWtld2lzZS4KCSogYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTEwLmM6IExp a2V3aXNlLgoJKiBnKysuZGcvdWJzYW4vYWxpZ24tMi5DOiBMaWtld2lzZS4K CSogZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmJ3LXZtb3ZkcXUxNi0yLmM6IExp a2V3aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvYXZ4NTEyZi12bW92ZHF1MzIt Mi5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmYtdm1v dmRxdTY0LTIuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvaTM4Ni9hdng1 MTJ2bC12bW92ZHF1MTYtMi5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9p Mzg2L2F2eDUxMnZsLXZtb3ZkcXUzMi0yLmM6IExpa2V3aXNlLgoJKiBnY2Mu dGFyZ2V0L2kzODYvYXZ4NTEydmwtdm1vdmRxdTY0LTIuYzogTGlrZXdpc2Uu CgpsaWJnY2MvCgoJKiB1bndpbmQtcGUuaCAocmVhZF9lbmNvZGVkX3ZhbHVl X3dpdGhfYmFzZSk6IEFkZCBHQ0MgcHJhZ21hCgl0byBpZ25vcmUgLVdhZGRy ZXNzLW9mLXBhY2tlZC1tZW1iZXIuCi0tLQogZ2NjL2MtZmFtaWx5L2MtY29t bW9uLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGdjYy9jLWZh bWlseS9jLXdhcm4uYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDE5NSAr KysrKysrKysrKysrKysrKysKIGdjYy9jLWZhbWlseS9jLm9wdCAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBnY2MvYy9jLXR5cGVjay5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIGdjYy9j cC9jYWxsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MyArCiBnY2MvY3AvdHlwZWNrLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKwogZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA4ICsKIGdjYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2FzYW4vbWlzYWxpZ24tMS5jICB8ICAgMiArLQogZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vYXNhbi9taXNhbGlnbi0yLmMgIHwgICAyICst CiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTEuYyAgICAg ICAgfCAgMjkgKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUx NjI4LTEwLmMgICAgICAgfCAgMjQgKysrCiBnY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9wcjUxNjI4LTExLmMgICAgICAgfCAgMTcgKysKIGdjYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTIuYyAgICAgICB8ICAxOCAr KwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMy5jICAg ICAgIHwgICA5ICsKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2 MjgtMTQuYyAgICAgICB8ICAgOSArCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9wcjUxNjI4LTE1LmMgICAgICAgfCAgMTQgKysKIGdjYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTYuYyAgICAgICB8ICAxMyArKwog Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yLmMgICAgICAg IHwgIDI5ICsrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYy OC0yNi5jICAgICAgIHwgIDMzICsrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vcHI1MTYyOC0yNy5jICAgICAgIHwgIDEyICsrCiBnY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTI4LmMgICAgICAgfCAgMTcgKysK IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMjkuYyAgICAg ICB8ICAxNiArKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYy OC0zLmMgICAgICAgIHwgIDM1ICsrKysKIGdjYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3ByNTE2MjgtMzAuYyAgICAgICB8ICAyMyArKysKIGdjYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNC5jICAgICAgICB8ICAzNSAr KysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTUuYyAg ICAgICAgfCAgMzUgKysrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v cHI1MTYyOC02LmMgICAgICAgIHwgIDM1ICsrKysKIGdjYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL3ByNTE2MjgtNy5jICAgICAgICB8ICAyOSArKysKIGdj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtOC5jICAgICAgICB8 ICAzNiArKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4 LTkuYyAgICAgICAgfCAgMzYgKysrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vdWJzYW4vYWxpZ24tMTAuYyAgIHwgICAyICstCiBnY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi0yLmMgICAgfCAgIDIgKy0K IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTQuYyAg ICB8ICAgMiArLQogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4v YWxpZ24tNi5jICAgIHwgICAyICstCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi91YnNhbi9hbGlnbi03LmMgICAgfCAgIDIgKy0KIGdjYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTguYyAgICB8ICAgMiArLQog Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvdWJzYW4vYWxpZ24tMi5DICAgICAgICAg IHwgICAyICstCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTE3LmMg ICAgICAgICAgICAgfCAgMTAgKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1 MTYyOC0xOC5jICAgICAgICAgICAgIHwgIDIzICsrKwogZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcHI1MTYyOC0xOS5jICAgICAgICAgICAgIHwgIDI2ICsrKwog Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MTYyOC0yMC5jICAgICAgICAgICAg IHwgIDExICsKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjEuYyAg ICAgICAgICAgICB8ICAxMSArCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUx NjI4LTIyLmMgICAgICAgICAgICAgfCAgIDkgKwogZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvcHI1MTYyOC0yMy5jICAgICAgICAgICAgIHwgICA5ICsKIGdjYy90 ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjQuYyAgICAgICAgICAgICB8ICAx MCArCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTI1LmMgICAgICAg ICAgICAgfCAgIDkgKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdng1MTJidy12 bW92ZHF1MTYtMi5jICAgIHwgICAyICstCiAuLi4vZ2NjLnRhcmdldC9pMzg2 L2F2eDUxMmYtdm1vdmRxdTMyLTIuYyAgICAgfCAgIDIgKy0KIC4uLi9nY2Mu dGFyZ2V0L2kzODYvYXZ4NTEyZi12bW92ZHF1NjQtMi5jICAgICB8ICAgMiAr LQogLi4uL2djYy50YXJnZXQvaTM4Ni9hdng1MTJ2bC12bW92ZHF1MTYtMi5j ICAgIHwgICAyICstCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F2eDUxMnZsLXZt b3ZkcXUzMi0yLmMgICAgfCAgIDIgKy0KIC4uLi9nY2MudGFyZ2V0L2kzODYv YXZ4NTEydmwtdm1vdmRxdTY0LTIuYyAgICB8ICAgMiArLQogbGliZ2NjL3Vu d2luZC1wZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsK IDUzIGZpbGVzIGNoYW5nZWQsIDg2NSBpbnNlcnRpb25zKCspLCAxNiBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9wcjUxNjI4LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTAuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2 MjgtMTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3ByNTE2MjgtMTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTMuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2 MjgtMTQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3ByNTE2MjgtMTUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTYuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2 MjgtMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vcHI1MTYyOC0yNi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yNy5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYy OC0yOC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vcHI1MTYyOC0yOS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0zLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4 LTMwLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9wcjUxNjI4LTQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC02 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9wcjUxNjI4LTcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtOC5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC05LmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUx NjI4LTE3LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9wcjUxNjI4LTE4LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy5kZy9wcjUxNjI4LTE5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTIwLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTIxLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUx NjI4LTIyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9wcjUxNjI4LTIzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy5kZy9wcjUxNjI4LTI0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTI1LmMKCmRpZmYgLS1n aXQgYS9nY2MvYy1mYW1pbHkvYy1jb21tb24uaCBiL2djYy9jLWZhbWlseS9j LWNvbW1vbi5oCmluZGV4IDQxODczNDNjMGIzLi5lYjBhZDYwOTQwZCAxMDA2 NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmgKKysrIGIvZ2NjL2Mt ZmFtaWx5L2MtY29tbW9uLmgKQEAgLTEyODIsNiArMTI4Miw3IEBAIGV4dGVy biB2b2lkIGNfZG9fc3dpdGNoX3dhcm5pbmdzIChzcGxheV90cmVlLCBsb2Nh dGlvbl90LCB0cmVlLCB0cmVlLCBib29sLAogCQkJCSAgYm9vbCk7CiBleHRl cm4gdm9pZCB3YXJuX2Zvcl9vbWl0dGVkX2NvbmRvcCAobG9jYXRpb25fdCwg dHJlZSk7CiBleHRlcm4gYm9vbCB3YXJuX2Zvcl9yZXN0cmljdCAodW5zaWdu ZWQsIHRyZWUgKiwgdW5zaWduZWQpOworZXh0ZXJuIHZvaWQgd2Fybl9mb3Jf YWRkcmVzc19vcl9wb2ludGVyX29mX3BhY2tlZF9tZW1iZXIgKGJvb2wsIHRy ZWUsIHRyZWUpOwogCiAvKiBQbGFjZXMgd2hlcmUgYW4gbHZhbHVlLCBvciBt b2RpZmlhYmxlIGx2YWx1ZSwgbWF5IGJlIHJlcXVpcmVkLgogICAgVXNlZCB0 byBzZWxlY3QgZGlhZ25vc3RpYyBtZXNzYWdlcyBpbiBsdmFsdWVfZXJyb3Ig YW5kCmRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy13YXJuLmMgYi9nY2Mv Yy1mYW1pbHkvYy13YXJuLmMKaW5kZXggNzk4YWQxYmNiMzkuLmYxMDU3NDI1 OThlIDEwMDY0NAotLS0gYS9nY2MvYy1mYW1pbHkvYy13YXJuLmMKKysrIGIv Z2NjL2MtZmFtaWx5L2Mtd2Fybi5jCkBAIC0yNjE2LDMgKzI2MTYsMTk4IEBA IHdhcm5fZm9yX211bHRpc3RhdGVtZW50X21hY3JvcyAobG9jYXRpb25fdCBi b2R5X2xvYywgbG9jYXRpb25fdCBuZXh0X2xvYywKICAgICBpbmZvcm0gKGd1 YXJkX2xvYywgInNvbWUgcGFydHMgb2YgbWFjcm8gZXhwYW5zaW9uIGFyZSBu b3QgZ3VhcmRlZCBieSAiCiAJICAgICJ0aGlzICVxcyBjbGF1c2UiLCBndWFy ZF90aW5mb190b19zdHJpbmcgKGtleXdvcmQpKTsKIH0KKworLyogUmV0dXJu IHN0cnVjdCBvciB1bmlvbiB0eXBlIGlmIHRoZSBhbGlnbm1lbnQgb2YgZGF0 YSBtZW1lYmVyLCBGSUVMRCwKKyAgIGlzIGxlc3MgdGhhbiB0aGUgYWxpZ25t ZW50IG9mIFRZUEUuICBPdGhlcndpc2UsIHJldHVybiBOVUxMX1RSRUUuICAq LworCitzdGF0aWMgdHJlZQorY2hlY2tfYWxpZ25tZW50X29mX3BhY2tlZF9t ZW1iZXIgKHRyZWUgdHlwZSwgdHJlZSBmaWVsZCkKK3sKKyAgLyogQ2hlY2sg YWxpZ25tZW50IG9mIHRoZSBkYXRhIG1lbWJlci4gICovCisgIGlmIChUUkVF X0NPREUgKGZpZWxkKSA9PSBGSUVMRF9ERUNMCisgICAgICAmJiAoREVDTF9Q QUNLRUQgKGZpZWxkKQorCSAgfHwgVFlQRV9QQUNLRUQgKFRSRUVfVFlQRSAo ZmllbGQpKSkpCisgICAgeworICAgICAgLyogQ2hlY2sgdGhlIGV4cGVjdGVk IGFsaWdubWVudCBhZ2FpbnN0IHRoZSBmaWVsZCBhbGlnbm1lbnQuICAqLwor ICAgICAgdW5zaWduZWQgaW50IHR5cGVfYWxpZ24gPSBUWVBFX0FMSUdOICh0 eXBlKTsKKyAgICAgIHRyZWUgY29udGV4dCA9IERFQ0xfQ09OVEVYVCAoZmll bGQpOworICAgICAgdW5zaWduZWQgaW50IHJlY29yZF9hbGlnbiA9IFRZUEVf QUxJR04gKGNvbnRleHQpOworICAgICAgaWYgKChyZWNvcmRfYWxpZ24gJSB0 eXBlX2FsaWduKSAhPSAwKQorCXJldHVybiBjb250ZXh0OworICAgICAgdHJl ZSBmaWVsZF9vZmYgPSBieXRlX3Bvc2l0aW9uIChmaWVsZCk7CisgICAgICBp ZiAoIW11bHRpcGxlX29mX3AgKFRSRUVfVFlQRSAoZmllbGRfb2ZmKSwgZmll bGRfb2ZmLAorCQkJICBzaXplX2ludCAodHlwZV9hbGlnbiAvIEJJVFNfUEVS X1VOSVQpKSkKKwlyZXR1cm4gY29udGV4dDsKKyAgICB9CisKKyAgcmV0dXJu IE5VTExfVFJFRTsKK30KKworLyogUmV0dXJuIHN0cnVjdCBvciB1bmlvbiB0 eXBlIGlmIHRoZSByaWdodCBoYW5kIHZhbHVlLCBSSFMsIHRha2VzIHRoZQor ICAgdW5hbGlnbmVkIGFkZHJlc3Mgb2YgcGFja2VkIG1lbWJlciBvZiBzdHJ1 Y3Qgb3IgdW5pb24gd2hlbiBhc3NpZ25pbmcKKyAgIHRvIFRZUEUuICBPdGhl cndpc2UsIHJldHVybiBOVUxMX1RSRUUuICAqLworCitzdGF0aWMgdHJlZQor Y2hlY2tfYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyICh0cmVlIHR5cGUsIHRy ZWUgcmhzKQoreworICB0cmVlIGJhc2U7CisgIHRyZWUgb2JqZWN0OworICB0 cmVlIGZpZWxkOworCisgIGlmIChJTkRJUkVDVF9SRUZfUCAocmhzKSkKKyAg ICByaHMgPSBUUkVFX09QRVJBTkQgKHJocywgMCk7CisKKyAgc3dpdGNoIChU UkVFX0NPREUgKHJocykpCisgICAgeworICAgIGNhc2UgQUREUl9FWFBSOgor ICAgICAgYmFzZSA9IFRSRUVfT1BFUkFORCAocmhzLCAwKTsKKyAgICAgIHdo aWxlIChoYW5kbGVkX2NvbXBvbmVudF9wIChiYXNlKSkKKwl7CisJICBlbnVt IHRyZWVfY29kZSBjb2RlID0gVFJFRV9DT0RFIChiYXNlKTsKKwkgIGlmIChj b2RlID09IENPTVBPTkVOVF9SRUYpCisJICAgIGJyZWFrOworCSAgc3dpdGNo IChjb2RlKQorCSAgICB7CisJICAgIGNhc2UgQVJSQVlfUkVGOgorCSAgICBj YXNlIFJFQUxQQVJUX0VYUFI6CisJICAgIGNhc2UgSU1BR1BBUlRfRVhQUjoK KwkgICAgY2FzZSBWSUVXX0NPTlZFUlRfRVhQUjoKKwkgICAgICBiYXNlID0g VFJFRV9PUEVSQU5EIChiYXNlLCAwKTsKKwkgICAgICBicmVhazsKKwkgICAg ZGVmYXVsdDoKKwkgICAgICByZXR1cm4gTlVMTF9UUkVFOworCSAgICB9CisJ fQorICAgICAgaWYgKFRSRUVfQ09ERSAoYmFzZSkgIT0gQ09NUE9ORU5UX1JF RikKKwlyZXR1cm4gTlVMTF9UUkVFOworICAgICAgb2JqZWN0ID0gVFJFRV9P UEVSQU5EIChiYXNlLCAwKTsKKyAgICAgIGZpZWxkID0gVFJFRV9PUEVSQU5E IChiYXNlLCAxKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ09NUE9ORU5U X1JFRjoKKyAgICAgIG9iamVjdCA9IFRSRUVfT1BFUkFORCAocmhzLCAwKTsK KyAgICAgIGZpZWxkID0gVFJFRV9PUEVSQU5EIChyaHMsIDEpOworICAgICAg YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBOVUxMX1RSRUU7 CisgICAgfQorCisgIHRyZWUgY29udGV4dCA9IGNoZWNrX2FsaWdubWVudF9v Zl9wYWNrZWRfbWVtYmVyICh0eXBlLCBmaWVsZCk7CisgIGlmIChjb250ZXh0 KQorICAgIHJldHVybiBjb250ZXh0OworCisgIC8qIENoZWNrIGFsaWdubWVu dCBvZiB0aGUgb2JqZWN0LiAgKi8KKyAgd2hpbGUgKFRSRUVfQ09ERSAob2Jq ZWN0KSA9PSBDT01QT05FTlRfUkVGKQorICAgIHsKKyAgICAgIGZpZWxkID0g VFJFRV9PUEVSQU5EIChvYmplY3QsIDEpOworICAgICAgY29udGV4dCA9IGNo ZWNrX2FsaWdubWVudF9vZl9wYWNrZWRfbWVtYmVyICh0eXBlLCBmaWVsZCk7 CisgICAgICBpZiAoY29udGV4dCkKKwlyZXR1cm4gY29udGV4dDsKKyAgICAg IG9iamVjdCA9IFRSRUVfT1BFUkFORCAob2JqZWN0LCAwKTsKKyAgICB9CisK KyAgcmV0dXJuIE5VTExfVFJFRTsKK30KKworLyogQ2hlY2sgYW5kIHdhcm4g aWYgdGhlIHJpZ2h0IGhhbmQgdmFsdWUsIFJIUywgdGFrZXMgdGhlIHVuYWxp Z25lZAorICAgYWRkcmVzcyBvZiBwYWNrZWQgbWVtYmVyIG9mIHN0cnVjdCBv ciB1bmlvbiB3aGVuIGFzc2lnbmluZyB0byBUWVBFLiAgKi8KKworc3RhdGlj IHZvaWQKK2NoZWNrX2FuZF93YXJuX2FkZHJlc3Nfb2ZfcGFja2VkX21lbWJl ciAodHJlZSB0eXBlLCB0cmVlIHJocykKK3sKKyAgaWYgKFRSRUVfQ09ERSAo cmhzKSAhPSBDT05EX0VYUFIpCisgICAgeworICAgICAgdHJlZSBjb250ZXh0 ID0gY2hlY2tfYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyICh0eXBlLCByaHMp OworICAgICAgaWYgKGNvbnRleHQpCisJeworCSAgbG9jYXRpb25fdCBsb2Mg PSBFWFBSX0xPQ19PUl9MT0MgKHJocywgaW5wdXRfbG9jYXRpb24pOworCSAg d2FybmluZ19hdCAobG9jLCBPUFRfV2FkZHJlc3Nfb2ZfcGFja2VkX21lbWJl ciwKKwkJICAgICAgInRha2luZyBhZGRyZXNzIG9mIHBhY2tlZCBtZW1iZXIg b2YgJXFUIG1heSByZXN1bHQgIgorCQkgICAgICAiaW4gYW4gdW5hbGlnbmVk IHBvaW50ZXIgdmFsdWUiLAorCQkgICAgICBjb250ZXh0KTsKKwl9CisgICAg ICByZXR1cm47CisgICAgfQorCisgIC8qIENoZWNrIHRoZSBUSEVOIHBhdGgu ICAqLworICBjaGVja19hbmRfd2Fybl9hZGRyZXNzX29mX3BhY2tlZF9tZW1i ZXIgKHR5cGUsIFRSRUVfT1BFUkFORCAocmhzLCAxKSk7CisKKyAgLyogQ2hl Y2sgdGhlIEVMU0UgcGF0aC4gICovCisgIGNoZWNrX2FuZF93YXJuX2FkZHJl c3Nfb2ZfcGFja2VkX21lbWJlciAodHlwZSwgVFJFRV9PUEVSQU5EIChyaHMs IDIpKTsKK30KKworLyogV2FybiBpZiB0aGUgcmlnaHQgaGFuZCB2YWx1ZSwg UkhTOgorICAgMS4gRm9yIENPTlZFUlRfUCA9PSB0cnVlLCBpcyBhIHBvaW50 ZXIgdmFsdWUgd2hpY2ggaXNuJ3QgYWxpZ25lZCB0byBhCisgICAgICBwb2lu dGVyIHR5cGUgVFlQRS4KKyAgIDIuIEZvciBDT05WRVJUX1AgPT0gZmFsc2Us IGlzIGFuIGFkZHJlc3Mgd2hpY2ggdGFrZXMgdGhlIHVuYWxpZ25lZAorICAg ICAgYWRkcmVzcyBvZiBwYWNrZWQgbWVtYmVyIG9mIHN0cnVjdCBvciB1bmlv biB3aGVuIGFzc2lnbmluZyB0byBUWVBFLgorKi8KKwordm9pZAord2Fybl9m b3JfYWRkcmVzc19vcl9wb2ludGVyX29mX3BhY2tlZF9tZW1iZXIgKGJvb2wg Y29udmVydF9wLCB0cmVlIHR5cGUsCisJCQkJCSAgICAgIHRyZWUgcmhzKQor eworICBpZiAoIXdhcm5fYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyKQorICAg IHJldHVybjsKKworICAvKiBEb24ndCB3YXJuIGlmIHdlIGRvbid0IGFzc2ln biBSSFMgdG8gYSBwb2ludGVyLiAgKi8KKyAgaWYgKCFQT0lOVEVSX1RZUEVf UCAodHlwZSkpCisgICAgcmV0dXJuOworCisgIHdoaWxlIChUUkVFX0NPREUg KHJocykgPT0gQ09NUE9VTkRfRVhQUikKKyAgICByaHMgPSBUUkVFX09QRVJB TkQgKHJocywgMSk7CisKKyAgaWYgKGNvbnZlcnRfcCkKKyAgICB7CisgICAg ICBib29sIHJoc3BvaW50ZXJfcDsKKyAgICAgIHRyZWUgcmhzdHlwZTsKKwor ICAgICAgLyogQ2hlY2sgdGhlIG9yaWdpbmFsIHR5cGUgb2YgUkhTLiAgKi8K KyAgICAgIHN3aXRjaCAoVFJFRV9DT0RFIChyaHMpKQorCXsKKwljYXNlIFBB Uk1fREVDTDoKKwljYXNlIFZBUl9ERUNMOgorCSAgcmhzdHlwZSA9IFRSRUVf VFlQRSAocmhzKTsKKwkgIHJoc3BvaW50ZXJfcCA9IFBPSU5URVJfVFlQRV9Q IChyaHN0eXBlKTsKKwkgIGJyZWFrOworCWNhc2UgTk9QX0VYUFI6CisJICBy aHMgPSBUUkVFX09QRVJBTkQgKHJocywgMCk7CisJICBpZiAoVFJFRV9DT0RF IChyaHMpID09IEFERFJfRVhQUikKKwkgICAgcmhzID0gVFJFRV9PUEVSQU5E IChyaHMsIDApOworCSAgcmhzdHlwZSA9IFRSRUVfVFlQRSAocmhzKTsKKwkg IHJoc3BvaW50ZXJfcCA9IFRSRUVfQ09ERSAocmhzdHlwZSkgPT0gQVJSQVlf VFlQRTsKKwkgIGJyZWFrOworCWRlZmF1bHQ6CisJICByZXR1cm47CisJfQor CisgICAgICBpZiAocmhzcG9pbnRlcl9wICYmIFRZUEVfUEFDS0VEIChUUkVF X1RZUEUgKHJoc3R5cGUpKSkKKwl7CisJICB1bnNpZ25lZCBpbnQgdHlwZV9h bGlnbiA9IFRZUEVfQUxJR05fVU5JVCAoVFJFRV9UWVBFICh0eXBlKSk7CisJ ICB1bnNpZ25lZCBpbnQgcmhzX2FsaWduID0gVFlQRV9BTElHTl9VTklUIChU UkVFX1RZUEUgKHJoc3R5cGUpKTsKKwkgIGlmICgocmhzX2FsaWduICUgdHlw ZV9hbGlnbikgIT0gMCkKKwkgICAgeworCSAgICAgIGxvY2F0aW9uX3QgbG9j YXRpb24gPSBFWFBSX0xPQ19PUl9MT0MgKHJocywgaW5wdXRfbG9jYXRpb24p OworCSAgICAgIHdhcm5pbmdfYXQgKGxvY2F0aW9uLCBPUFRfV2FkZHJlc3Nf b2ZfcGFja2VkX21lbWJlciwKKwkJCSAgImNvbnZlcnRpbmcgYSBwYWNrZWQg JXFUIHBvaW50ZXIgKGFsaWdubWVudCAlZCkgIgorCQkJICAidG8gJXFUIChh bGlnbm1lbnQgJWQpIG1heSBtYXkgcmVzdWx0IGluIGFuICIKKwkJCSAgInVu YWxpZ25lZCBwb2ludGVyIHZhbHVlIiwKKwkJCSAgcmhzdHlwZSwgcmhzX2Fs aWduLCB0eXBlLCB0eXBlX2FsaWduKTsKKwkgICAgICB0cmVlIGRlY2wgPSBU WVBFX1NUVUJfREVDTCAoVFJFRV9UWVBFIChyaHN0eXBlKSk7CisJICAgICAg aW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoZGVjbCksICJkZWZpbmVk IGhlcmUiKTsKKwkgICAgICBkZWNsID0gVFlQRV9TVFVCX0RFQ0wgKFRSRUVf VFlQRSAodHlwZSkpOworCSAgICAgIGlmIChkZWNsKQorCQlpbmZvcm0gKERF Q0xfU09VUkNFX0xPQ0FUSU9OIChkZWNsKSwgImRlZmluZWQgaGVyZSIpOwor CSAgICB9CisJfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIEdl dCB0aGUgdHlwZSBvZiB0aGUgcG9pbnRlciBwb2ludGluZyB0by4gICovCisg ICAgICB0eXBlID0gVFJFRV9UWVBFICh0eXBlKTsKKworICAgICAgaWYgKFRS RUVfQ09ERSAocmhzKSA9PSBOT1BfRVhQUikKKwlyaHMgPSBUUkVFX09QRVJB TkQgKHJocywgMCk7CisKKyAgICAgIGNoZWNrX2FuZF93YXJuX2FkZHJlc3Nf b2ZfcGFja2VkX21lbWJlciAodHlwZSwgcmhzKTsKKyAgICB9Cit9CmRpZmYg LS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5v cHQKaW5kZXggMDdmZjFjODRmOTYuLjIyY2NmOTEwYTg1IDEwMDY0NAotLS0g YS9nY2MvYy1mYW1pbHkvYy5vcHQKKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0 CkBAIC02MjUsNiArNjI1LDEwIEBAIFdpbmNvbXBhdGlibGUtcG9pbnRlci10 eXBlcwogQyBPYmpDIFZhcih3YXJuX2luY29tcGF0aWJsZV9wb2ludGVyX3R5 cGVzKSBJbml0KDEpIFdhcm5pbmcKIFdhcm4gd2hlbiB0aGVyZSBpcyBhIGNv bnZlcnNpb24gYmV0d2VlbiBwb2ludGVycyB0aGF0IGhhdmUgaW5jb21wYXRp YmxlIHR5cGVzLgogCitXYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyCitDIE9i akMgQysrIE9iakMrKyBWYXIod2Fybl9hZGRyZXNzX29mX3BhY2tlZF9tZW1i ZXIpIEluaXQoMSkgV2FybmluZworV2FybiB3aGVuIHRoZSBhZGRyZXNzIG9m IHBhY2tlZCBtZW1iZXIgb2Ygc3RydWN0IG9yIHVuaW9uIGlzIHRha2VuLgor CiBXaW5pdC1zZWxmCiBDIE9iakMgQysrIE9iakMrKyBWYXIod2Fybl9pbml0 X3NlbGYpIFdhcm5pbmcgTGFuZ0VuYWJsZWRCeShDKysgT2JqQysrLFdhbGwp CiBXYXJuIGFib3V0IHZhcmlhYmxlcyB3aGljaCBhcmUgaW5pdGlhbGl6ZWQg dG8gdGhlbXNlbHZlcy4KZGlmZiAtLWdpdCBhL2djYy9jL2MtdHlwZWNrLmMg Yi9nY2MvYy9jLXR5cGVjay5jCmluZGV4IDFhODk3MjczMDg4Li5kYTRhODE2 OWQ1NiAxMDA2NDQKLS0tIGEvZ2NjL2MvYy10eXBlY2suYworKysgYi9nY2Mv Yy9jLXR5cGVjay5jCkBAIC02NzI0LDcgKzY3MjQsMTEgQEAgY29udmVydF9m b3JfYXNzaWdubWVudCAobG9jYXRpb25fdCBsb2NhdGlvbiwgbG9jYXRpb25f dCBleHByX2xvYywgdHJlZSB0eXBlLAogICAgIH0KIAogICBpZiAoVFlQRV9N QUlOX1ZBUklBTlQgKHR5cGUpID09IFRZUEVfTUFJTl9WQVJJQU5UIChyaHN0 eXBlKSkKLSAgICByZXR1cm4gcmhzOworICAgIHsKKyAgICAgIHdhcm5fZm9y X2FkZHJlc3Nfb3JfcG9pbnRlcl9vZl9wYWNrZWRfbWVtYmVyIChmYWxzZSwg dHlwZSwKKwkJCQkJCSAgICBvcmlnX3Jocyk7CisgICAgICByZXR1cm4gcmhz OworICAgIH0KIAogICBpZiAoY29kZXIgPT0gVk9JRF9UWVBFKQogICAgIHsK QEAgLTcyNzksNiArNzI4MywxMSBAQCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50 IChsb2NhdGlvbl90IGxvY2F0aW9uLCBsb2NhdGlvbl90IGV4cHJfbG9jLCB0 cmVlIHR5cGUsCiAJICAgIH0KIAl9CiAKKyAgICAgIC8qIElmIFJIUyBpcyd0 IGFuIGFkZHJlc3MsIGNoZWNrIHBvaW50ZXIgb3IgYXJyYXkgb2YgcGFja2Vk CisJIHN0cnVjdCBvciB1bmlvbi4gICovCisgICAgICB3YXJuX2Zvcl9hZGRy ZXNzX29yX3BvaW50ZXJfb2ZfcGFja2VkX21lbWJlcgorCShUUkVFX0NPREUg KG9yaWdfcmhzKSAhPSBBRERSX0VYUFIsIHR5cGUsIG9yaWdfcmhzKTsKKwog ICAgICAgcmV0dXJuIGNvbnZlcnQgKHR5cGUsIHJocyk7CiAgICAgfQogICBl bHNlIGlmIChjb2RlbCA9PSBQT0lOVEVSX1RZUEUgJiYgY29kZXIgPT0gQVJS QVlfVFlQRSkKZGlmZiAtLWdpdCBhL2djYy9jcC9jYWxsLmMgYi9nY2MvY3Av Y2FsbC5jCmluZGV4IDYzMjhhMzZiNjA0Li40MGZmYzg2MzA5MSAxMDA2NDQK LS0tIGEvZ2NjL2NwL2NhbGwuYworKysgYi9nY2MvY3AvY2FsbC5jCkBAIC03 NjE4LDYgKzc2MTgsOSBAQCBjb252ZXJ0X2Zvcl9hcmdfcGFzc2luZyAodHJl ZSB0eXBlLCB0cmVlIHZhbCwgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAJ fQogICAgICAgbWF5YmVfd2Fybl9wYXJtX2FiaSAodHlwZSwgY3BfZXhwcl9s b2Nfb3JfbG9jICh2YWwsIGlucHV0X2xvY2F0aW9uKSk7CiAgICAgfQorCisg IHdhcm5fZm9yX2FkZHJlc3Nfb3JfcG9pbnRlcl9vZl9wYWNrZWRfbWVtYmVy IChmYWxzZSwgdHlwZSwgdmFsKTsKKwogICByZXR1cm4gdmFsOwogfQogCmRp ZmYgLS1naXQgYS9nY2MvY3AvdHlwZWNrLmMgYi9nY2MvY3AvdHlwZWNrLmMK aW5kZXggYWMwYzgxMTU1YjUuLjkzYjI5NWFkZTkwIDEwMDY0NAotLS0gYS9n Y2MvY3AvdHlwZWNrLmMKKysrIGIvZ2NjL2NwL3R5cGVjay5jCkBAIC05MDIz LDYgKzkwMjMsOCBAQCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50ICh0cmVlIHR5 cGUsIHRyZWUgcmhzLAogICAgICAgVFJFRV9OT19XQVJOSU5HIChyaHMpID0g MTsKICAgICB9CiAKKyAgd2Fybl9mb3JfYWRkcmVzc19vcl9wb2ludGVyX29m X3BhY2tlZF9tZW1iZXIgKGZhbHNlLCB0eXBlLCByaHMpOworCiAgIHJldHVy biBwZXJmb3JtX2ltcGxpY2l0X2NvbnZlcnNpb25fZmxhZ3MgKHN0cmlwX3Rv cF9xdWFscyAodHlwZSksIHJocywKIAkJCQkJICAgIGNvbXBsYWluLCBmbGFn cyk7CiB9CmRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2Nj L2RvYy9pbnZva2UudGV4aQppbmRleCA5YTE0MTcwZDA4NC4uMjRmY2U5YjM3 YmQgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrIGIvZ2Nj L2RvYy9pbnZva2UudGV4aQpAQCAtMzU4LDYgKzM1OCw3IEBAIE9iamVjdGl2 ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KIC1XdXNlbGVzcy1j YXN0ICAtV3ZhcmlhZGljLW1hY3JvcyAgLVd2ZWN0b3Itb3BlcmF0aW9uLXBl cmZvcm1hbmNlIEBnb2wKIC1XdmxhICAtV3ZsYS1sYXJnZXItdGhhbj1AdmFy e2J5dGUtc2l6ZX0gIC1Xdm9sYXRpbGUtcmVnaXN0ZXItdmFyIEBnb2wKIC1X d3JpdGUtc3RyaW5ncyBAZ29sCistV2FkZHJlc3Mtb2YtcGFja2VkLW1lbWJl ciBAZ29sCiAtV3plcm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0YW50ICAtV2hz YX0KIAogQGl0ZW0gQyBhbmQgT2JqZWN0aXZlLUMtb25seSBXYXJuaW5nIE9w dGlvbnMKQEAgLTY5ODEsNiArNjk4MiwxMyBAQCBiZWhhdmlvciBhbmQgYXJl IG5vdCBwb3J0YWJsZSBpbiBDLCBzbyB0aGV5IHVzdWFsbHkgaW5kaWNhdGUg dGhhdCB0aGUKIHByb2dyYW1tZXIgaW50ZW5kZWQgdG8gdXNlIEBjb2Rle3N0 cmNtcH0uICBUaGlzIHdhcm5pbmcgaXMgZW5hYmxlZCBieQogQG9wdGlvbnst V2FsbH0uCiAKK0BpdGVtIC1XYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyCitA b3BpbmRleCBXYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyCitAb3BpbmRleCBX bm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyCitXYXJuIHdoZW4gdGhlIGFk ZHJlc3Mgb2YgcGFja2VkIG1lbWJlciBvZiBzdHJ1Y3Qgb3IgdW5pb24gaXMg dGFrZW4sCit3aGljaCB1c3VhbGx5IHJlc3VsdHMgaW4gYW4gdW5hbGlnbmVk IHBvaW50ZXIgdmFsdWUuICBUaGlzIGlzCitlbmFibGVkIGJ5IGRlZmF1bHQu CisKIEBpdGVtIC1XbG9naWNhbC1vcAogQG9waW5kZXggV2xvZ2ljYWwtb3AK IEBvcGluZGV4IFduby1sb2dpY2FsLW9wCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9hc2FuL21pc2FsaWduLTEuYyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2FzYW4vbWlzYWxpZ24tMS5jCmluZGV4 IDVjZDYwNWFjMDQ1Li5lYmViMDMwNjcwNiAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vYXNhbi9taXNhbGlnbi0xLmMKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXNhbi9taXNhbGlnbi0xLmMK QEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IGls cDMyIHx8IGxwNjQgfSB9IH0gKi8KLS8qIHsgZGctc2tpcC1pZiAiIiB7ICot Ki0qIH0gIHsgIioiIH0geyAiLU8yIiB9IH0gKi8KKy8qIHsgZGctc2tpcC1p ZiAiIiB7ICotKi0qIH0gIHsgIioiIH0geyAiLU8yIC1Xbm8tYWRkcmVzcy1v Zi1wYWNrZWQtbWVtYmVyIiB9IH0gKi8KIC8qIHsgZGctYWRkaXRpb25hbC1v cHRpb25zICItZm5vLW9taXQtZnJhbWUtcG9pbnRlciIgeyB0YXJnZXQgKi0q LWRhcndpbiogfSB9ICovCiAvKiB7IGRnLXNob3VsZGZhaWwgImFzYW4iIH0g Ki8KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v YXNhbi9taXNhbGlnbi0yLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9hc2FuL21pc2FsaWduLTIuYwppbmRleCBhNmVkNDliYWMwNS4uYjI3ZTIy ZDM1YTggMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2FzYW4vbWlzYWxpZ24tMi5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2FzYW4vbWlzYWxpZ24tMi5jCkBAIC0xLDUgKzEsNSBAQAogLyog eyBkZy1kbyBydW4geyB0YXJnZXQgeyBpbHAzMiB8fCBscDY0IH0gfSB9ICov Ci0vKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9ICB7ICIqIiB9IHsgIi1P MiIgfSB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9ICB7ICIq IiB9IHsgIi1PMiAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIgfSB9 ICovCiAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZuby1vbWl0LWZy YW1lLXBvaW50ZXIiIHsgdGFyZ2V0ICotKi1kYXJ3aW4qIH0gfSAqLwogLyog eyBkZy1zaG91bGRmYWlsICJhc2FuIiB9ICovCiAKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMS5jIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUzMjRmOWNjOTY0Ci0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1 MTYyOC0xLmMKQEAgLTAsMCArMSwyOSBAQAorLyogUFIgYy81MTYyOC4gICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt TyIgfSAqLworCitzdHJ1Y3QgcGFpcl90Cit7CisgIGludCB4OworICBpbnQg aTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkLCBhbGlnbmVkICg0KSkpOwor CitleHRlcm4gc3RydWN0IHBhaXJfdCBwOworZXh0ZXJuIGludCAqeDsKK2V4 dGVybiB2b2lkIGJhciAoaW50ICopOworCitpbnQgKmFkZHIgPSAmcC5pOwor CitpbnQgKgorZm9vICh2b2lkKQoreworICBzdHJ1Y3QgcGFpcl90IGFyclsy XSA9IHsgeyAxLCAxMCB9LCB7IDIsIDIwIH0gfTsKKyAgaW50ICpwMCwgKnAx OworICBwMCA9ICZhcnJbMF0uaTsKKyAgYmFyIChwMCk7CisgIHAxID0gJmFy clsxXS5pOworICBiYXIgKHAxKTsKKyAgYmFyICgmcC5pKTsKKyAgeCA9ICZw Lmk7CisgIHJldHVybiAmcC5pOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMC5jIGIvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wODVmZTE2MDhjNAotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2Mjgt MTAuYwpAQCAtMCwwICsxLDI0IEBACisvKiBQUiBjLzUxNjI4LiAgKi8KKy8q IHsgZGctZG8gcnVuIHsgdGFyZ2V0IGludDEyOCB9IH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8yIiB9ICovCisKK3N0cnVjdCBwYWlyX3QKK3sKKyAgY2hh ciBjOworICBfX2ludDEyOF90IGk7Cit9IF9fYXR0cmlidXRlX18gKChwYWNr ZWQpKTsKKwordHlwZWRlZiBzdHJ1Y3QgdW5hbGlnbmVkX2ludDEyOF90Xwor eworICBfX2ludDEyOF90IHZhbHVlOworfSBfX2F0dHJpYnV0ZV9fKChwYWNr ZWQpKSB1bmFsaWduZWRfaW50MTI4X3Q7CisKK3N0cnVjdCBwYWlyX3QgcCA9 IHswLCAxfTsKK3VuYWxpZ25lZF9pbnQxMjhfdCAqYWRkciA9ICh1bmFsaWdu ZWRfaW50MTI4X3QgKikgJnAuaTsKKworaW50IAorbWFpbigpIAoreworICBh ZGRyLT52YWx1ZSA9IH4oX19pbnQxMjhfdCkwOworICByZXR1cm4gKHAuaSAh PSAxKSA/IDAgOiAxOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vcHI1MTYyOC0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vcHI1MTYyOC0xMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi43NjYxMjMyYWM4OAotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTEuYwpA QCAtMCwwICsxLDE3IEBACisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGct ZG8gY29tcGlsZSB7IHRhcmdldCBpbnQxMjggfSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PIiB9ICovCisKK3N0cnVjdCB0dXBsZV90Cit7CisgIGNoYXIg Y1sxMl07CisgIF9faW50MTI4X3QgaTsKK30gX19hdHRyaWJ1dGVfXygocGFj a2VkLCBhbGlnbmVkICg4KSkpOworCit0eXBlZGVmIHN0cnVjdCB1bmFsaWdu ZWRfaW50MTI4X3RfCit7CisgIF9faW50MTI4X3QgdmFsdWU7Cit9IF9fYXR0 cmlidXRlX18gKChwYWNrZWQsIGFsaWduZWQoNCkpKSB1bmFsaWduZWRfaW50 MTI4X3Q7CisKK3N0cnVjdCB0dXBsZV90IHAgPSB7ezB9LCAxfTsKK3VuYWxp Z25lZF9pbnQxMjhfdCAqYWRkciA9ICh1bmFsaWduZWRfaW50MTI4X3QgKiko JnAuaSk7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9wcjUxNjI4LTEyLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9w cjUxNjI4LTEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmJjMjIxZmE4N2VmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMi5jCkBAIC0wLDAgKzEs MTggQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxl IHsgdGFyZ2V0IGludDEyOCB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8i IH0gKi8KKworc3RydWN0IHR1cGxlX3QKK3sKKyAgY2hhciBjWzEwXTsKKyAg X19pbnQxMjhfdCBpOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQsIGFsaWdu ZWQgKDgpKSk7CisKK3R5cGVkZWYgc3RydWN0IHVuYWxpZ25lZF9pbnQxMjhf dF8KK3sKKyAgX19pbnQxMjhfdCB2YWx1ZTsKK30gX19hdHRyaWJ1dGVfXyAo KHBhY2tlZCwgYWxpZ25lZCg0KSkpIHVuYWxpZ25lZF9pbnQxMjhfdDsKKwor c3RydWN0IHR1cGxlX3QgcCA9IHt7MH0sIDF9OwordW5hbGlnbmVkX2ludDEy OF90ICphZGRyID0gKHVuYWxpZ25lZF9pbnQxMjhfdCAqKSgmcC5pKTsKKy8q IHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9p bnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0x My5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMy5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wZWRk NWU3Zjg0ZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3ByNTE2MjgtMTMuYwpAQCAtMCwwICsxLDkgQEAKKy8qIFBS IGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3RydWN0IEIgeyBpbnQgaTsgfTsK K3N0cnVjdCBDIHsgc3RydWN0IEIgYjsgfSBfX2F0dHJpYnV0ZV9fICgocGFj a2VkKSk7CisKK2ludCogaDQgKHN0cnVjdCBDICpwKSB7IHJldHVybiAmcC0+ Yi5pOyB9CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5h bGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L3ByNTE2MjgtMTQuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3By NTE2MjgtMTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZjUwMzc4Yjg2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTE0LmMKQEAgLTAsMCArMSw5 IEBACisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3N0cnVjdCBBIHsK KyAgaW50IGk7Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKwordm9p ZCogZjAgKHN0cnVjdCBBICpwKSB7IHJldHVybiAmcC0+aTsgfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xNS5j IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xNS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iY2FjNmQ3 MGFkNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3ByNTE2MjgtMTUuYwpAQCAtMCwwICsxLDE0IEBACisvKiBQUiBj LzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PIiB9ICovCisKK3N0cnVjdCBBIHsKKyAgaW50IGk7Cit9 IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworaW50KgorZiAoc3RydWN0 IEEgKnAsIGludCAqcSkKK3sKKyAgcmV0dXJuIHEgPyBxIDogJnAtPmk7Cisv KiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBv aW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KK30K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2 MjgtMTYuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2Mjgt MTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u Y2Q1MDJmZTc2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9wcjUxNjI4LTE2LmMKQEAgLTAsMCArMSwxMyBAQAor LyogUFIgYy81MTYyOC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItTyIgfSAqLworCitzdHJ1Y3QgX19hdHRyaWJ1 dGVfXyAoKHBhY2tlZCkpIEEgeyBpbnQgaTsgfTsKK3N0cnVjdCBCIHsKKyAg c3RydWN0IEEgYTsKK30gYjsKKworaW50ICpwID0gKGludCopJmIuYS5pOwor LyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBw b2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCitp bnQgKnEgPSAoaW50KikmYi5hOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVz dWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9wcjUxNjI4LTIuYyBiL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3ByNTE2MjgtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5hYmZiODRkZGQwNQotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMi5jCkBA IC0wLDAgKzEsMjkgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKwor c3RydWN0IHBhaXJfdAoreworICBpbnQgeDsKKyAgaW50IGk7Cit9IF9fYXR0 cmlidXRlX18oKHBhY2tlZCwgYWxpZ25lZCAoOCkpKTsKKworZXh0ZXJuIHN0 cnVjdCBwYWlyX3QgcDsKK2V4dGVybiBpbnQgKng7CitleHRlcm4gdm9pZCBi YXIgKGludCAqKTsKKworaW50ICphZGRyID0gJnAuaTsKKworaW50ICoKK2Zv byAodm9pZCkKK3sKKyAgc3RydWN0IHBhaXJfdCBhcnJbMl0gPSB7IHsgMSwg MTAgfSwgeyAyLCAyMCB9IH07CisgIGludCAqcDAsICpwMTsKKyAgcDAgPSAm YXJyWzBdLmk7CisgIGJhciAocDApOworICBwMSA9ICZhcnJbMV0uaTsKKyAg YmFyIChwMSk7CisgIGJhciAoJnAuaSk7CisgIHggPSAmcC5pOworICByZXR1 cm4gJnAuaTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3ByNTE2MjgtMjYuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL3ByNTE2MjgtMjYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMjA0MjM3OTg2MGEKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTI2LmMKQEAgLTAs MCArMSwzMyBAQAorLyogUFIgYy81MTYyOC4gICovCisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyIgfSAqLworCitzdHJ1 Y3QgQSB7CisgIGludCBpOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7 CisKK3N0cnVjdCBBIHAgPSB7MX07CitpbnQgKmFkZHI7CisKK2ludCBpLCBq OworCit2b2lkCitmb28xICh2b2lkKQoreworICBhZGRyID0gKGkgPSAtMSwg JnAuaSk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5h bGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0gKi8KK30KKwordm9pZAorZm9vMiAodm9pZCkKK3sKKyAgYWRkciA9IChp ID0gLTEsIGogPSAtMiwgJnAuaSk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSBy ZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0gKi8KK30KKwordm9pZAorZm9vMyAodm9pZCkK K3sKKyAgYWRkciA9IChpID0gLTEsIChqID0gLTIsICZwLmkpKTsKKy8qIHsg ZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRl ciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0y Ny5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yNy5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45YWUx ZWZkN2FmYgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3ByNTE2MjgtMjcuYwpAQCAtMCwwICsxLDEyIEBACisvKiBQ UiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3N0cnVjdCBBIHsgaW50IGk7IH0g X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworc3RydWN0IEIgeyBzdHJ1Y3Qg QSBhOyB9Oworc3RydWN0IEMgeyBzdHJ1Y3QgQiBiOyB9OworCitleHRlcm4g c3RydWN0IEMgKnA7CisKK2ludCogZzggKHZvaWQpIHsgcmV0dXJuICZwLT5i LmEuaTsgfQorLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVu YWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9wcjUxNjI4LTI4LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9w cjUxNjI4LTI4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmU4Yzc1MmQwYjEyCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yOC5jCkBAIC0wLDAgKzEs MTcgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxl IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3RydWN0IEEg eyAKKyAgaW50IGk7Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKwor aW50ICoKK2ZvbzMgKHN0cnVjdCBBICpwMSwgaW50ICpxMSwgaW50ICpxMiwg c3RydWN0IEEgKnAyKSAKK3sKKyAgcmV0dXJuIChxMSAKKwkgID8gJnAxLT5p CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVk IHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8K KwkgIDogKHEyID8gJnAyLT5pIDogcTIpKTsKKy8qIHsgZGctd2FybmluZyAi bWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworfQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yOS5jIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yOS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45NGIzNzIyZDJjOAotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3By NTE2MjgtMjkuYwpAQCAtMCwwICsxLDE2IEBACisvKiBQUiBjLzUxNjI4LiAg Ki8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1PIiB9ICovCisKK3N0cnVjdCBBIHsgaW50IGk7IH07CitzdHJ1Y3QgQiB7 IHN0cnVjdCBBIGE7IH07CitzdHJ1Y3QgQyB7IHN0cnVjdCBCIGIgX19hdHRy aWJ1dGVfXyAoKHBhY2tlZCkpOyB9OworCitleHRlcm4gc3RydWN0IEMgKnA7 CisKK2ludCoKK2c4ICh2b2lkKQoreworICByZXR1cm4gJnAtPmIuYS5pOwor LyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBw b2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCit9 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUx NjI4LTMuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2Mjgt My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4w ZWE5NGM4NDVhMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL3ByNTE2MjgtMy5jCkBAIC0wLDAgKzEsMzUgQEAKKy8q IFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3RydWN0IHBhaXJfdAorewor ICBpbnQgeDsKKyAgaW50IGk7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCwg YWxpZ25lZCAoMikpKTsKKworZXh0ZXJuIHN0cnVjdCBwYWlyX3QgcDsKK2V4 dGVybiBpbnQgKng7CitleHRlcm4gdm9pZCBiYXIgKGludCAqKTsKKworaW50 ICphZGRyID0gJnAuaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBp biBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0q LSogfSAuLTEgfSAqLworCitpbnQgKgorZm9vICh2b2lkKQoreworICBzdHJ1 Y3QgcGFpcl90IGFyclsyXSA9IHsgeyAxLCAxMCB9LCB7IDIsIDIwIH0gfTsK KyAgaW50ICpwMCwgKnAxOworICBwMCA9ICZhcnJbMF0uaTsKKy8qIHsgZGct d2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2 YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBiYXIgKHAw KTsKKyAgcDEgPSAmYXJyWzFdLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSBy ZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgYmFyIChwMSk7CisgIGJhciAoJnAu aSk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGln bmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0g Ki8KKyAgeCA9ICZwLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQg aW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0xIH0gKi8KKyAgcmV0dXJuICZwLmk7CisvKiB7IGRnLXdhcm5p bmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUi ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KK30KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMzAuYyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMzAuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTc4ZWRmNGU4ZjkK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9wcjUxNjI4LTMwLmMKQEAgLTAsMCArMSwyMyBAQAorLyogUFIgYy81MTYy OC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItTyIgfSAqLworCitzdHJ1Y3QgQSB7IF9fY29tcGxleCBpbnQgaTsg fTsKK3N0cnVjdCBCIHsgc3RydWN0IEEgYTsgfTsKK3N0cnVjdCBDIHsgc3Ry dWN0IEIgYiBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7IH07CisKK2V4dGVy biBzdHJ1Y3QgQyAqcDsKKworaW50KgorZm9vMSAodm9pZCkKK3sKKyAgcmV0 dXJuICZfX3JlYWwocC0+Yi5hLmkpOworLyogeyBkZy13YXJuaW5nICJtYXkg cmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRh cmdldCAqLSotKiB9IC4tMSB9ICovCit9CisKK2ludCoKK2ZvbzIgKHZvaWQp Cit7CisgIHJldHVybiAmX19pbWFnKHAtPmIuYS5pKTsKKy8qIHsgZGctd2Fy bmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1 ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC00LmMgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTQuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzRjMWZiNzJkNmQK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9wcjUxNjI4LTQuYwpAQCAtMCwwICsxLDM1IEBACisvKiBQUiBjLzUxNjI4 LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PIiB9ICovCisKK3N0cnVjdCBwYWlyX3QKK3sKKyAgaW50IHg7Cisg IGludCBpOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworZXh0ZXJu IHN0cnVjdCBwYWlyX3QgcDsKK2V4dGVybiBpbnQgKng7CitleHRlcm4gdm9p ZCBiYXIgKGludCAqKTsKKworaW50ICphZGRyID0gJnAuaTsKKy8qIHsgZGct d2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2 YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworCitpbnQgKgor Zm9vICh2b2lkKQoreworICBzdHJ1Y3QgcGFpcl90IGFyclsyXSA9IHsgeyAx LCAxMCB9LCB7IDIsIDIwIH0gfTsKKyAgaW50ICpwMCwgKnAxOworICBwMCA9 ICZhcnJbMF0uaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBh biB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLworICBiYXIgKHAwKTsKKyAgcDEgPSAmYXJyWzFdLmk7Cisv KiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBv aW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAg YmFyIChwMSk7CisgIGJhciAoJnAuaSk7CisvKiB7IGRnLXdhcm5pbmcgIm1h eSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgeCA9ICZwLmk7CisvKiB7IGRn LXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIg dmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgcmV0dXJu ICZwLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5h bGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL3ByNTE2MjgtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v cHI1MTYyOC01LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjlkN2MzMDlhMGVmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC01LmMKQEAgLTAsMCArMSwz NSBAQAorLyogUFIgYy81MTYyOC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItTyIgfSAqLworCitzdHJ1Y3QgcGFp cl90Cit7CisgIGNoYXIgeDsKKyAgaW50IGk7Cit9IF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOworCitleHRlcm4gc3RydWN0IHBhaXJfdCBwOworZXh0ZXJu IGludCAqeDsKK2V4dGVybiB2b2lkIGJhciAoaW50ICopOworCitpbnQgKmFk ZHIgPSAmcC5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFu IHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCisKK2ludCAqCitmb28gKHZvaWQpCit7CisgIHN0cnVjdCBw YWlyX3QgYXJyWzJdID0geyB7IDEsIDEwIH0sIHsgMiwgMjAgfSB9OworICBp bnQgKnAwLCAqcDE7CisgIHAwID0gJmFyclswXS5pOworLyogeyBkZy13YXJu aW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVl IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIGJhciAocDApOwor ICBwMSA9ICZhcnJbMV0uaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3Vs dCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLworICBiYXIgKHAxKTsKKyAgYmFyICgmcC5pKTsK Ky8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQg cG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwor ICB4ID0gJnAuaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBh biB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLworICByZXR1cm4gJnAuaTsKKy8qIHsgZGctd2FybmluZyAi bWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworfQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC02LmMgYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTYuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTJhYTA3YTRjZjMKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUx NjI4LTYuYwpAQCAtMCwwICsxLDM1IEBACisvKiBQUiBjLzUxNjI4LiAgKi8K Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P IiB9ICovCisKK3N0cnVjdCBwYWlyX3QKK3sKKyAgY2hhciB4OworICBpbnQg aTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkLCBhbGlnbmVkICg0KSkpOwor CitleHRlcm4gc3RydWN0IHBhaXJfdCBwOworZXh0ZXJuIGludCAqeDsKK2V4 dGVybiB2b2lkIGJhciAoaW50ICopOworCitpbnQgKmFkZHIgPSAmcC5pOwor LyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBw b2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisK K2ludCAqCitmb28gKHZvaWQpCit7CisgIHN0cnVjdCBwYWlyX3QgYXJyWzJd ID0geyB7IDEsIDEwIH0sIHsgMiwgMjAgfSB9OworICBpbnQgKnAwLCAqcDE7 CisgIHAwID0gJmFyclswXS5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVz dWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovCisgIGJhciAocDApOworICBwMSA9ICZhcnJb MV0uaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFs aWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLworICBiYXIgKHAxKTsKKyAgYmFyICgmcC5pKTsKKy8qIHsgZGctd2Fy bmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1 ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICB4ID0gJnAuaTsK Ky8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQg cG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwor ICByZXR1cm4gJnAuaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBp biBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0q LSogfSAuLTEgfSAqLworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vcHI1MTYyOC03LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9wcjUxNjI4LTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYWU0YTY4MWY5NjYKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTcuYwpAQCAt MCwwICsxLDI5IEBACisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3N0 cnVjdCBwYWlyX3QKK3sKKyAgaW50IHg7CisgIGludCBpWzRdOworfSBfX2F0 dHJpYnV0ZV9fKChwYWNrZWQsIGFsaWduZWQgKDQpKSk7CisKK2V4dGVybiBz dHJ1Y3QgcGFpcl90IHA7CitleHRlcm4gaW50ICp4OworZXh0ZXJuIHZvaWQg YmFyIChpbnQgKik7CisKK2ludCAqYWRkciA9IHAuaTsKKworaW50ICoKK2Zv byAoc3RydWN0IHBhaXJfdCAqcCkKK3sKKyAgaW50ICpwMCwgKnAxOworICBw MCA9IHAtPmk7CisgIGJhciAocDApOworICBwMSA9ICZwLT5pWzFdOworICBi YXIgKHAxKTsKKyAgYmFyIChwLT5pKTsKKyAgYmFyICgmcC0+aVsyXSk7Cisg IHggPSBwLT5pOworICByZXR1cm4gJnAtPmlbM107Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTguYyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtOC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jYzJkYWUwOTZhZQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L3ByNTE2MjgtOC5jCkBAIC0wLDAgKzEsMzYgQEAKKy8qIFBSIGMvNTE2Mjgu ICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8iIH0gKi8KKworc3RydWN0IHBhaXJfdAoreworICBjaGFyIHg7Cisg IGludCBpWzRdOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkLCBhbGlnbmVk ICg0KSkpOworCitleHRlcm4gc3RydWN0IHBhaXJfdCBwOworZXh0ZXJuIGlu dCAqeDsKK2V4dGVybiB2b2lkIGJhciAoaW50ICopOworCitpbnQgKmFkZHIg PSBwLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5h bGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0gKi8KKworaW50ICoKK2ZvbyAoc3RydWN0IHBhaXJfdCAqcCkKK3sKKyAg aW50ICpwMCwgKnAxOworICBwMCA9IHAtPmk7CisvKiB7IGRnLXdhcm5pbmcg Im1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgYmFyIChwMCk7CisgIHAx ID0gJnAtPmlbMV07CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4g YW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0gKi8KKyAgYmFyIChwMSk7CisgIGJhciAocC0+aSk7CisvKiB7 IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50 ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgYmFy ICgmcC0+aVsyXSk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4g YW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0gKi8KKyAgeCA9IHAtPmk7CisvKiB7IGRnLXdhcm5pbmcgIm1h eSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgcmV0dXJuICZwLT5pWzNdOwor LyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBw b2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCit9 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUx NjI4LTkuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2Mjgt OS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4w NDcwYWEzYjkzZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL3ByNTE2MjgtOS5jCkBAIC0wLDAgKzEsMzYgQEAKKy8q IFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3RydWN0IHBhaXJfdAorewor ICBpbnQgeDsKKyAgaW50IGlbNF07Cit9IF9fYXR0cmlidXRlX18gKChwYWNr ZWQpKTsKKworZXh0ZXJuIHN0cnVjdCBwYWlyX3QgcDsKK2V4dGVybiBpbnQg Kng7CitleHRlcm4gdm9pZCBiYXIgKGludCAqKTsKKworaW50ICphZGRyID0g cC5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxp Z25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCisKK2ludCAqCitmb28gKHN0cnVjdCBwYWlyX3QgKnApCit7CisgIGlu dCAqcDAsICpwMTsKKyAgcDAgPSBwLT5pOworLyogeyBkZy13YXJuaW5nICJt YXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIGJhciAocDApOworICBwMSA9 ICZwLT5pWzFdOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFu IHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCisgIGJhciAocDEpOworICBiYXIgKHAtPmkpOworLyogeyBk Zy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVy IHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIGJhciAo JnAtPmlbMl0pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFu IHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCisgIHggPSBwLT5pOworLyogeyBkZy13YXJuaW5nICJtYXkg cmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRh cmdldCAqLSotKiB9IC4tMSB9ICovCisgIHJldHVybiAmcC0+aVszXTsKKy8q IHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9p bnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworfQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4v YWxpZ24tMTAuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2Fu L2FsaWduLTEwLmMKaW5kZXggNTZhZTllYmZlMzAuLjYyMTA1MzMxNzNjIDEw MDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9h bGlnbi0xMC5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vi c2FuL2FsaWduLTEwLmMKQEAgLTEsNiArMSw2IEBACiAvKiBMaW1pdCB0aGlz IHRvIGtub3duIG5vbi1zdHJpY3QgYWxpZ25tZW50IHRhcmdldHMuICAqLwog LyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyBpPzg2LSotbGludXgqIHg4Nl82 NC0qLWxpbnV4KiB9IH0gfSAqLwotLyogeyBkZy1vcHRpb25zICItTyAtZnNh bml0aXplPWFsaWdubWVudCAtZnNhbml0aXplLXJlY292ZXI9YWxpZ25tZW50 IiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mc2FuaXRpemU9YWxpZ25t ZW50IC1mc2FuaXRpemUtcmVjb3Zlcj1hbGlnbm1lbnQgLVduby1hZGRyZXNz LW9mLXBhY2tlZC1tZW1iZXIiIH0gKi8KIAogc3RydWN0IFIgeyBpbnQgYTsg fSByOwogc3RydWN0IFMgeyBzdHJ1Y3QgUiBhOyBjaGFyIGI7IGxvbmcgbG9u ZyBjOyBzaG9ydCBkWzEwXTsgfTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTIuYyBiL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTIuYwppbmRleCAwNzFkZThj MjAyYS4uMzM2YjFjM2M5MDcgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL3Vic2FuL2FsaWduLTIuYworKysgYi9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi0yLmMKQEAgLTEsNiArMSw2 IEBACiAvKiBMaW1pdCB0aGlzIHRvIGtub3duIG5vbi1zdHJpY3QgYWxpZ25t ZW50IHRhcmdldHMuICAqLwogLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyBp Pzg2LSotbGludXgqIHg4Nl82NC0qLWxpbnV4KiB9IH0gfSAqLwotLyogeyBk Zy1vcHRpb25zICItZnNhbml0aXplPWFsaWdubWVudCIgfSAqLworLyogeyBk Zy1vcHRpb25zICItZnNhbml0aXplPWFsaWdubWVudCAtV25vLWFkZHJlc3Mt b2YtcGFja2VkLW1lbWJlciIgfSAqLwogCiBzdHJ1Y3QgUyB7IGludCBhOyBj aGFyIGI7IGxvbmcgbG9uZyBjOyBzaG9ydCBkWzEwXTsgfTsKIHN0cnVjdCBU IHsgY2hhciBhOyBsb25nIGxvbmcgYjsgfTsKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTQuYyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTQuYwppbmRleCAz MjUyNTk1ZDMzMC4uZDVmZWVlZTI5YzYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTQuYworKysgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi00LmMKQEAgLTEs NiArMSw2IEBACiAvKiBMaW1pdCB0aGlzIHRvIGtub3duIG5vbi1zdHJpY3Qg YWxpZ25tZW50IHRhcmdldHMuICAqLwogLyogeyBkZy1kbyBydW4geyB0YXJn ZXQgeyBpPzg2LSotbGludXgqIHg4Nl82NC0qLWxpbnV4KiB9IH0gfSAqLwot LyogeyBkZy1vcHRpb25zICItZnNhbml0aXplPW51bGwsYWxpZ25tZW50IiB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mc2FuaXRpemU9bnVsbCxhbGlnbm1l bnQgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiIH0gKi8KIAogI2lu Y2x1ZGUgImFsaWduLTIuYyIKIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tNi5jIGIvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tNi5jCmluZGV4IDMzNjQ3NDZm YjI3Li4wMzAyYjdiODg5NCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vdWJzYW4vYWxpZ24tNi5jCisrKyBiL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTYuYwpAQCAtMSw2ICsxLDYg QEAKIC8qIExpbWl0IHRoaXMgdG8ga25vd24gbm9uLXN0cmljdCBhbGlnbm1l bnQgdGFyZ2V0cy4gICovCiAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IGk/ ODYtKi1saW51eCogeDg2XzY0LSotbGludXgqIH0gfSB9ICovCi0vKiB7IGRn LW9wdGlvbnMgIi1PIC1mc2FuaXRpemU9YWxpZ25tZW50IC1mc2FuaXRpemUt cmVjb3Zlcj1hbGlnbm1lbnQiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8g LWZzYW5pdGl6ZT1hbGlnbm1lbnQgLWZzYW5pdGl6ZS1yZWNvdmVyPWFsaWdu bWVudCAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIgfSAqLwogCiBz dHJ1Y3QgUyB7IGludCBhOyBjaGFyIGI7IGxvbmcgbG9uZyBjOyBzaG9ydCBk WzEwXTsgfTsKIHN0cnVjdCBUIHsgY2hhciBhOyBsb25nIGxvbmcgYjsgfTsK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2Fu L2FsaWduLTcuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2Fu L2FsaWduLTcuYwppbmRleCBlYzRlODdmNTZkNS4uZGQxZThjOTFjZWYgMTAw NjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2Fs aWduLTcuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNh bi9hbGlnbi03LmMKQEAgLTEsNiArMSw2IEBACiAvKiBMaW1pdCB0aGlzIHRv IGtub3duIG5vbi1zdHJpY3QgYWxpZ25tZW50IHRhcmdldHMuICAqLwogLyog eyBkZy1kbyBydW4geyB0YXJnZXQgeyBpPzg2LSotbGludXgqIHg4Nl82NC0q LWxpbnV4KiB9IH0gfSAqLwotLyogeyBkZy1vcHRpb25zICItTyAtZnNhbml0 aXplPWFsaWdubWVudCAtZm5vLXNhbml0aXplLXJlY292ZXI9YWxpZ25tZW50 IC1mZHVtcC10cmVlLXNhbm9wdC1kZXRhaWxzIiB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PIC1mc2FuaXRpemU9YWxpZ25tZW50IC1mbm8tc2FuaXRpemUt cmVjb3Zlcj1hbGlnbm1lbnQgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1i ZXIgLWZkdW1wLXRyZWUtc2Fub3B0LWRldGFpbHMiIH0gKi8KIC8qIHsgZGct c2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLWZsdG8gLWZuby1mYXQtbHRvLW9i amVjdHMiIH0gfSAqLwogLyogeyBkZy1zaG91bGRmYWlsICJ1YnNhbiIgfSAq LwogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91 YnNhbi9hbGlnbi04LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91 YnNhbi9hbGlnbi04LmMKaW5kZXggNjFjMWNlYjY2ODIuLjVmZTBlMGZlOTMx IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNh bi9hbGlnbi04LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v dWJzYW4vYWxpZ24tOC5jCkBAIC0xLDYgKzEsNiBAQAogLyogTGltaXQgdGhp cyB0byBrbm93biBub24tc3RyaWN0IGFsaWdubWVudCB0YXJnZXRzLiAgKi8K IC8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgaT84Ni0qLWxpbnV4KiB4ODZf NjQtKi1saW51eCogfSB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8gLWZz YW5pdGl6ZT1hbGlnbm1lbnQgLWZzYW5pdGl6ZS11bmRlZmluZWQtdHJhcC1v bi1lcnJvciAtZmR1bXAtdHJlZS1zYW5vcHQtZGV0YWlscyIgfSAqLworLyog eyBkZy1vcHRpb25zICItTyAtZnNhbml0aXplPWFsaWdubWVudCAtZnNhbml0 aXplLXVuZGVmaW5lZC10cmFwLW9uLWVycm9yIC1Xbm8tYWRkcmVzcy1vZi1w YWNrZWQtbWVtYmVyIC1mZHVtcC10cmVlLXNhbm9wdC1kZXRhaWxzIiB9ICov CiAvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1mbHRvIC1mbm8t ZmF0LWx0by1vYmplY3RzIiB9IH0gKi8KIC8qIHsgZGctc2hvdWxkZmFpbCAi dWJzYW4iIH0gKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvdWJzYW4vYWxpZ24tMi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdWJz YW4vYWxpZ24tMi5DCmluZGV4IDNlNGY1NDg1ZDAyLi5jOTdlZGU4ODM5MiAx MDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdWJzYW4vYWxpZ24t Mi5DCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3Vic2FuL2FsaWduLTIu QwpAQCAtMSw2ICsxLDYgQEAKIC8vIExpbWl0IHRoaXMgdG8ga25vd24gbm9u LXN0cmljdCBhbGlnbm1lbnQgdGFyZ2V0cy4KIC8vIHsgZGctZG8gcnVuIHsg dGFyZ2V0IHsgaT84Ni0qLWxpbnV4KiB4ODZfNjQtKi1saW51eCogfSB9IH0K LS8vIHsgZGctb3B0aW9ucyAiLWZzYW5pdGl6ZT1hbGlnbm1lbnQgLVdhbGwg LVduby11bnVzZWQtdmFyaWFibGUgLXN0ZD1jKysxMSIgfQorLy8geyBkZy1v cHRpb25zICItZnNhbml0aXplPWFsaWdubWVudCAtV2FsbCAtV25vLXVudXNl ZC12YXJpYWJsZSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciAtc3Rk PWMrKzExIiB9CiAKIHR5cGVkZWYgY29uc3QgbG9uZyBpbnQgTDsKIHN0cnVj dCBTIHsgbG9uZyBpbnQgbDsgY2hhciBidWZbMSArIHNpemVvZiAoaW50KSAr IHNpemVvZiAoTCldOyB9IHM7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy5kZy9wcjUxNjI4LTE3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9w cjUxNjI4LTE3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjBiZTk1YjIyOTRlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvcHI1MTYyOC0xNy5jCkBAIC0wLDAgKzEsMTAgQEAK Ky8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8gLVduby1pbmNvbXBhdGlibGUtcG9pbnRl ci10eXBlcyIgfSAqLworCitzdHJ1Y3QgQSB7CisgIGludCBpOworfSBfX2F0 dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK2xvbmcqIGY4IChzdHJ1Y3QgQSAq cCkgeyByZXR1cm4gJnAtPmk7IH0KKy8qIHsgZGctd2FybmluZyAibWF5IHJl c3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcHI1MTYyOC0xOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv cHI1MTYyOC0xOC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4wM2EwNGVmZjc1YwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTguYwpAQCAtMCwwICsxLDIzIEBA CisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3ZvaWQgZm9vIChpbnQg Kik7CisKK2ludCAqCitiYXIgKGludCBuLCBpbnQgaywgdm9pZCAqcHRyKQor eworICBzdHJ1Y3QgQQorICB7CisgICAgaW50IGNba107CisgICAgaW50IHhb bl07CisgIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCAoNCkp KTsKKyAgc3RydWN0IEEgKnAgPSAoc3RydWN0IEEgKikgcHRyOworCisgIGlu dCAqcDAsICpwMTsKKyAgcDAgPSBwLT54OworICBmb28gKHAwKTsKKyAgcDEg PSAmcC0+eFsxXTsKKyAgZm9vIChwMSk7CisgIHJldHVybiAmcC0+eFsxXTsK K30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2Mjgt MTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTkuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2ZmMDNlODVj ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9w cjUxNjI4LTE5LmMKQEAgLTAsMCArMSwyNiBAQAorLyogUFIgYy81MTYyOC4g ICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItTyIgfSAqLworCit2b2lkIGZvbyAoaW50ICopOworCitpbnQgKgorYmFy IChpbnQgbiwgaW50IGssIHZvaWQgKnB0cikKK3sKKyAgc3RydWN0IEEKKyAg eworICAgIGNoYXIgY1trXTsKKyAgICBpbnQgeFtuXTsKKyAgfSBfX2F0dHJp YnV0ZV9fICgocGFja2VkKSk7CisgIHN0cnVjdCBBICpwID0gKHN0cnVjdCBB ICopIHB0cjsKKworICBpbnQgKnAwLCAqcDE7CisgIHAwID0gcC0+eDsKKy8q IHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9p bnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBm b28gKHAwKTsKKyAgcDEgPSAmcC0+eFsxXTsKKy8qIHsgZGctd2FybmluZyAi bWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBmb28gKHAxKTsKKyAgcmV0 dXJuICZwLT54WzFdOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGlu IGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9wcjUxNjI4LTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUx NjI4LTIwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjgwODg4MjgzYjczCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvcHI1MTYyOC0yMC5jCkBAIC0wLDAgKzEsMTEgQEAKKy8q IFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8gLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10 eXBlcyIgfSAqLworCitzdHJ1Y3QgQiB7IGludCBpOyB9Oworc3RydWN0IEMg eyBzdHJ1Y3QgQiBiOyB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKwor ZXh0ZXJuIHN0cnVjdCBDICpwOworCitsb25nKiBnOCAodm9pZCkgeyByZXR1 cm4gcDsgfQorLyogeyBkZy13YXJuaW5nICJtYXkgbWF5IHJlc3VsdCBpbiBh biB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv cHI1MTYyOC0yMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MTYyOC0y MS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z MDc3ZTcyYzhkNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3ByNTE2MjgtMjEuYwpAQCAtMCwwICsxLDExIEBACisvKiBQUiBj LzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PIC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMi IH0gKi8KKworc3RydWN0IEIgeyBpbnQgaTsgfTsKK3N0cnVjdCBDIHsgc3Ry dWN0IEIgYjsgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK2V4dGVy biBzdHJ1Y3QgQyBwW107CisKK2xvbmcqIGc4ICh2b2lkKSB7IHJldHVybiBw OyB9CisvKiB7IGRnLXdhcm5pbmcgIm1heSBtYXkgcmVzdWx0IGluIGFuIHVu YWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUx NjI4LTIyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTIyLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFiZDVk NzkxNjM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvcHI1MTYyOC0yMi5jCkBAIC0wLDAgKzEsOSBAQAorLyogUFIgYy81MTYy OC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItTyAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzIiB9ICov CisKK3N0cnVjdCBCIHsgaW50IGk7IH07CitzdHJ1Y3QgQyB7IHN0cnVjdCBC IGI7IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitpbnQqIGc0IChz dHJ1Y3QgQyAqcCkgeyByZXR1cm4gJnAtPmI7IH0KKy8qIHsgZGctd2Fybmlu ZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MTYyOC0yMy5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcHI1MTYyOC0yMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi41NzA5YmU2MGFjOAotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjMuYwpAQCAtMCww ICsxLDkgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVduby1pbmNvbXBhdGli bGUtcG9pbnRlci10eXBlcyIgfSAqLworCitzdHJ1Y3QgQSB7CisgIGludCBp OworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK2NoYXIqIGYwIChz dHJ1Y3QgQSAqcCkgeyByZXR1cm4gJnAtPmk7IH0KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjQuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3ByNTE2MjgtMjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uM2FkOTljZDJmMTYKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTI0LmMKQEAgLTAs MCArMSwxMCBAQAorLyogUFIgYy81MTYyOC4gICovCisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV25vLWluY29tcGF0 aWJsZS1wb2ludGVyLXR5cGVzIiB9ICovCisKK3N0cnVjdCBBIHsKKyAgaW50 IGk7Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworc2hvcnQqIGYy IChzdHJ1Y3QgQSAqcCkgeyByZXR1cm4gJnAtPmk7IH0KKy8qIHsgZGctd2Fy bmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1 ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MTYyOC0yNS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvcHI1MTYyOC0yNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi4yZmM1YzAyODcxMQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjUuYwpAQCAt MCwwICsxLDkgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVduby1pbmNvbXBh dGlibGUtcG9pbnRlci10eXBlcyIgfSAqLworCitzdHJ1Y3QgQiB7IGludCBp OyB9Oworc3RydWN0IEMgeyBzdHJ1Y3QgQiBiOyB9IF9fYXR0cmlidXRlX18g KChwYWNrZWQpKTsKKworbG9uZyogZzggKHN0cnVjdCBDICpwKSB7IHJldHVy biBwOyB9CisvKiB7IGRnLXdhcm5pbmcgIm1heSBtYXkgcmVzdWx0IGluIGFu IHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9hdng1MTJidy12bW92ZHF1MTYtMi5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEyYnctdm1vdmRxdTE2LTIuYwppbmRl eCBhNjE2MDljNDBkMi4uYzZlM2ViZGM1MDcgMTAwNjQ0Ci0tLSBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmJ3LXZtb3ZkcXUxNi0y LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEy Ynctdm1vdmRxdTE2LTIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8g cnVuIH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4NTEyYnciIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4NTEyYncgLVduby1hZGRy ZXNzLW9mLXBhY2tlZC1tZW1iZXIiIH0gKi8KIC8qIHsgZGctcmVxdWlyZS1l ZmZlY3RpdmUtdGFyZ2V0IGF2eDUxMmJ3IH0gKi8KIAogI2RlZmluZSBBVlg1 MTJCVwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvYXZ4NTEyZi12bW92ZHF1MzItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYXZ4NTEyZi12bW92ZHF1MzItMi5jCmluZGV4IGYyZWRj M2RmZjdiLi45NWE2NTdmYzVmZiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEyZi12bW92ZHF1MzItMi5jCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmYtdm1vdmRx dTMyLTIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gcnVuIH0gKi8K LS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4NTEyZiIgfSAqLworLyogeyBk Zy1vcHRpb25zICItTzIgLW1hdng1MTJmIC1Xbm8tYWRkcmVzcy1vZi1wYWNr ZWQtbWVtYmVyIiB9ICovCiAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRh cmdldCBhdng1MTJmIH0gKi8KIAogI2RlZmluZSBBVlg1MTJGCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJmLXZt b3ZkcXU2NC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9h dng1MTJmLXZtb3ZkcXU2NC0yLmMKaW5kZXggMTQxNzY5NjVhY2UuLjk1NGIw OTFkOTc2IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdng1MTJmLXZtb3ZkcXU2NC0yLmMKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEyZi12bW92ZHF1NjQtMi5jCkBAIC0x LDUgKzEsNSBAQAogLyogeyBkZy1kbyBydW4gfSAqLwotLyogeyBkZy1vcHRp b25zICItTzIgLW1hdng1MTJmIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P MiAtbWF2eDUxMmYgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiIH0g Ki8KIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGF2eDUxMmYg fSAqLwogCiAjZGVmaW5lIEFWWDUxMkYKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMnZsLXZtb3ZkcXUxNi0yLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJ2bC12bW92 ZHF1MTYtMi5jCmluZGV4IDQ1YWU4M2Q0NTUyLi44MTQ2NWY4ZDlhMCAxMDA2 NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEy dmwtdm1vdmRxdTE2LTIuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9hdng1MTJ2bC12bW92ZHF1MTYtMi5jCkBAIC0xLDUgKzEsNSBA QAogLyogeyBkZy1kbyBydW4gfSAqLwotLyogeyBkZy1vcHRpb25zICItTzIg LW1hdng1MTJidyAtbWF2eDUxMnZsIiB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1PMiAtbWF2eDUxMmJ3IC1tYXZ4NTEydmwgLVduby1hZGRyZXNzLW9mLXBh Y2tlZC1tZW1iZXIiIH0gKi8KIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IGF2eDUxMnZsIH0gKi8KIC8qIHsgZGctcmVxdWlyZS1lZmZlY3Rp dmUtdGFyZ2V0IGF2eDUxMmJ3IH0gKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEydmwtdm1vdmRxdTMyLTIu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMnZsLXZt b3ZkcXUzMi0yLmMKaW5kZXggNGI5MjhkMGNkNDIuLjE5MzkwNjY0YmQwIDEw MDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1 MTJ2bC12bW92ZHF1MzItMi5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F2eDUxMnZsLXZtb3ZkcXUzMi0yLmMKQEAgLTEsNSArMSw1 IEBACiAvKiB7IGRnLWRvIHJ1biB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1P MiAtbWF2eDUxMnZsIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWF2 eDUxMnZsIC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIiB9ICovCiAv KiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhdng1MTJ2bCB9ICov CiAKICNkZWZpbmUgQVZYNTEyVkwKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMnZsLXZtb3ZkcXU2NC0yLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJ2bC12bW92ZHF1 NjQtMi5jCmluZGV4IDE4NjNlZDM2MTZmLi5hZWEwYzEyYTVmZiAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEydmwt dm1vdmRxdTY0LTIuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdng1MTJ2bC12bW92ZHF1NjQtMi5jCkBAIC0xLDUgKzEsNSBAQAog LyogeyBkZy1kbyBydW4gfSAqLwotLyogeyBkZy1vcHRpb25zICItTzIgLW1h dng1MTJ2bCIgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hdng1MTJ2 bCAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIgfSAqLwogLyogeyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXZ4NTEydmwgfSAqLwogCiAj ZGVmaW5lIEFWWDUxMlZMCmRpZmYgLS1naXQgYS9saWJnY2MvdW53aW5kLXBl LmggYi9saWJnY2MvdW53aW5kLXBlLmgKaW5kZXggZGQ1YWU5NWZjMmMuLjA1 YzJmYjRkZDUwIDEwMDY0NAotLS0gYS9saWJnY2MvdW53aW5kLXBlLmgKKysr IGIvbGliZ2NjL3Vud2luZC1wZS5oCkBAIC0xNzcsNiArMTc3LDkgQEAgcmVh ZF9zbGViMTI4IChjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBfc2xlYjEyOF90 ICp2YWwpCiAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBQIGluY3JlbWVudGVk IHBhc3QgdGhlIHZhbHVlLiAgQkFTRSBpcyBhcyBnaXZlbgogICAgYnkgYmFz ZV9vZl9lbmNvZGVkX3ZhbHVlIGZvciB0aGlzIGVuY29kaW5nIGluIHRoZSBh cHByb3ByaWF0ZSBjb250ZXh0LiAgKi8KIAorI3ByYWdtYSBHQ0MgZGlhZ25v c3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X YWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIgorCiBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciAqCiByZWFkX2VuY29kZWRfdmFsdWVfd2l0aF9iYXNlICh1 bnNpZ25lZCBjaGFyIGVuY29kaW5nLCBfVW53aW5kX1B0ciBiYXNlLAogCQkJ ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCwgX1Vud2luZF9QdHIgKnZh bCkKQEAgLTI3MCw2ICsyNzMsOCBAQCByZWFkX2VuY29kZWRfdmFsdWVfd2l0 aF9iYXNlICh1bnNpZ25lZCBjaGFyIGVuY29kaW5nLCBfVW53aW5kX1B0ciBi YXNlLAogICByZXR1cm4gcDsKIH0KIAorI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp YyBwb3AKKwogI2lmbmRlZiBOT19CQVNFX09GX0VOQ09ERURfVkFMVUUKIAog LyogTGlrZSByZWFkX2VuY29kZWRfdmFsdWVfd2l0aF9iYXNlLCBidXQgZ2V0 IHRoZSBiYXNlIGZyb20gdGhlIGNvbnRleHQKLS0gCjIuMTkuMgoK --000000000000fd6f86057d0339ea--