From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd2d.google.com (mail-io1-xd2d.google.com [IPv6:2607:f8b0:4864:20::d2d]) by sourceware.org (Postfix) with ESMTPS id 418B0385DC00 for ; Wed, 1 Apr 2020 03:31:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 418B0385DC00 Received: by mail-io1-xd2d.google.com with SMTP id i3so15003689ioo.13 for ; Tue, 31 Mar 2020 20:31:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=McO4IekAOAvGBwXSdZaHiddyqRywQ7QWPpvn5bmwizY=; b=ooOgUrlNd9S3jr/AC3tWkskIXFlvs2vngzG7+Izkg7ul965V3TNiHMuv+tGsghA/Do JZ2n0s20YmX/oXg62BJX2QZSy0b1XfGHGPW9JfVr7WREDgCzk32c7meTOEqXzRo2A1Zm BhOdYNkio1XFCtsto4SsPnFQdn9IhgheoIpNz3c09TvhwOeQvy7WvhsIP/t4SouhdU0K s/ISzWtukaqd+ZT4vlZ7LXL853N9xDeZ2h9T6X5HlW0CACJUrNdvtMD/rgtj28/vnnAe eXmdSsZ4EIqDO35Ex4UX7/8xyyfAyuZ9zsZtp92wJQ0Y7LeJHkIDPYXTdqFcFdo4Dnfy envw== X-Gm-Message-State: ANhLgQ2SDwZIId2F+BlbyLsDXA0uK5cX0EgBY0F2YXehWjcXZFRkLGR/ CJcKaoqmPMffrYkbzUmQlJ13eyuPyabh8zdQMF3kh3Z4 X-Google-Smtp-Source: ADFU+vtE3Uo3z4c10c9cJ85A5zrCEZUhoSh+52sh2OZyIoC1NynQKljszOh//Dvat03Z+FhVSTD4eZwWGJi7ZqMhMd4= X-Received: by 2002:a02:b783:: with SMTP id f3mr7021528jam.4.1585711881622; Tue, 31 Mar 2020 20:31:21 -0700 (PDT) MIME-Version: 1.0 References: <20200331044350.808132-1-hjl.tools@gmail.com> <20200331061751.qjcv7z5z4rbyu45l@gmail.com> In-Reply-To: From: "H.J. Lu" Date: Tue, 31 Mar 2020 20:30:45 -0700 Message-ID: Subject: V4 [PATCH] x86: Only allow S - A relocations against absolute symbol To: Fangrui Song Cc: "H.J. Lu via Binutils" Content-Type: multipart/mixed; boundary="0000000000006c55d505a23251ef" X-Spam-Status: No, score=-19.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Apr 2020 03:31:25 -0000 --0000000000006c55d505a23251ef Content-Type: text/plain; charset="UTF-8" On Tue, Mar 31, 2020 at 4:25 PM H.J. Lu wrote: > > On Tue, Mar 31, 2020 at 7:31 AM H.J. Lu wrote: > > > > On Mon, Mar 30, 2020 at 11:18 PM Fangrui Song wrote: > > > > > > On 2020-03-30, H.J. Lu via Binutils wrote: > > > >Since value of non-preemptible absolute symbol (SHN_ABS) won't change, > > > >only S - A relocations against non-preemptible absolute symbol are > > > >allowed in PIE and shared library. > > > > > > Thanks for the patch. At some point we should define some generic > > > relocation categories (https://reviews.llvm.org/rL266158). For example, > > > > > > - R_ABS: R_X86_64_8, R_X86_64_16, R_X86_64_32, R_X86_64_64 > > > R_AARCH64_ABS16, R_AARCH64_ABS32, R_AARCH64_ABS64 > > > R_PPC64_ADDR16, R_PPC64_ADDR16_DS, R_PPC64_ADDR16_HA, ... > > > - R_PCREL: R_X86_64_PC8, R_X86_64_PC16, R_X86_64_PC32, R_X86_64_PC64 > > > R_AARCH64_PREL16, R_AARCH64_PREL32, R_AARCH64_PREL64 > > > - R_PLT_PCREL: R_X86_64_PLT32, R_AARCH64_CALL26 > > > - R_GOT_PCREL: R_X86_64_GOTPCREL, R_X86_64_GOTPCRELX > > > > > > Define a property is_preemptible as a more appropriate level of > > > abstraction for GENERATE_DYNAMIC_RELOCATION_P and some use cases of bfd_link_pic and bfd_link_executable... > > > > Current BFD linker delegates most, if not all, of relocation to each backend. > > There are many similar codes in backends. I am sharing as much codes > > between i386 and x86-64 backends as I can. > > > > This is the patch I am checking in. > > Here is the updated patch to include the fix for > > https://sourceware.org/bugzilla/show_bug.cgi?id=25754 > Another update to allow GOTPCREL relocations. -- H.J. --0000000000006c55d505a23251ef Content-Type: text/x-patch; charset="US-ASCII"; name="0001-x86-Only-allow-S-A-relocations-against-absolute-symb.patch" Content-Disposition: attachment; filename="0001-x86-Only-allow-S-A-relocations-against-absolute-symb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k8grv4hl0 RnJvbSBjYTViMTZjYTE4ZjE2NzUxYTUxZjY3MzJjNjE3MDQ4OGQwMTJmYjA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMzAgTWFyIDIwMjAgMTg6MzY6MzkgLTA3MDAKU3ViamVjdDogW1BBVENIXSB4ODY6IE9u bHkgYWxsb3cgUyArIEEgcmVsb2NhdGlvbnMgYWdhaW5zdCBhYnNvbHV0ZSBzeW1ib2wKClNpbmNl IHZhbHVlIG9mIG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wgKFNITl9BQlMpIHdvbid0 IGNoYW5nZSwKb25seSByZWxvY2F0aW9ucywgd2hpY2ggY2FuIGJlIHJlc29sdmVkIGFzIGFic29s dXRlIHZhbHVlICsgYWRkZW5kLCBhbmQKR09UUENSRUwgcmVsb2NhdGlvbnMsIHdoZXJlIGFic29s dXRlIHZhbHVlICsgYWRkZW5kIGlzIHN0b3JlZCBpbiB0aGUgR09UCnNsb3QsIGFnYWluc3Qgbm9u LXByZWVtcHRpYmxlIGFic29sdXRlIHN5bWJvbCBhcmUgYWxsb3dlZCBpbiBQSUUgYW5kCnNoYXJl ZCBsaWJyYXJ5LiAgQWxzbyBjb252ZXJ0IGxvYWQgcmVsb2NhdGlvbiB0byBSXzM4Nl8zMiwgUl9Y ODZfNjRfMzJTCm9yIFJfWDg2XzY0XzMyIGZvciByZWxvY2F0aW9uIGFnYWluc3Qgbm9uLXByZWVt cHRpYmxlIGFic29sdXRlIHN5bWJvbC4KCmJmZC8KCglQUiBsZC8yNTc0OQoJUFIgbGQvMjU3NTQK CSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9jb252ZXJ0X2xvYWRfcmVsb2MpOiBDb252ZXJ0IGxv YWQKCXJlbG9jYXRpb24gdG8gUl8zODZfMzIgZm9yIHJlbG9jYXRpb24gYWdhaW5zdCBub24tcHJl ZW1wdGlibGUKCWFic29sdXRlIHN5bWJvbC4KCShlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBDYWxs CglfYmZkX2VsZl94ODZfdmFsaWRfcmVsb2NfcC4gIERvbid0IGFsbG9jYXRlIGR5bmFtaWMgcmVs b2NhdGlvbgoJZm9yIG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wuCgkoZWxmX2kzODZf cmVsb2NhdGVfc2VjdGlvbik6IFBhc3Mgc2VjIHRvCglHRU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJ T05fUC4KCSogZWxmNjQteDg2LTY0LmMgKFJfWDg2XzY0X2NvbnZlcnRlZF9yZWxvY19iaXQpOiBN b3ZlZC4KCShlbGZfeDg2XzY0X2NvbnZlcnRfbG9hZF9yZWxvYyk6IENvdmVydCBsb2FkIHJlbG9j YXRpb24gdG8KCVJfWDg2XzY0XzMyUyBvciBSX1g4Nl82NF8zMiBmb3IgcmVsb2NhdGlvbiBhZ2Fp bnN0IG5vbi1wcmVlbXB0aWJsZQoJYWJzb2x1dGUgc3ltYm9sLgoJKGVsZl94ODZfNjRfY2hlY2tf cmVsb2NzKTogQ2FsbAoJX2JmZF9lbGZfeDg2X3ZhbGlkX3JlbG9jX3AuICBEb24ndCBhbGxvY2F0 ZSBkeW5hbWljIHJlbG9jYXRpb24KCWZvciBub24tcHJlZW1wdGlibGUgYWJzb2x1dGUgc3ltYm9s LgoJKGVsZl94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IFBhc3Mgc2VjIHRvCglHRU5FUkFURV9E WU5BTUlDX1JFTE9DQVRJT05fUC4KCSogZWxmeHgteDg2LmMgKGVsZl94ODZfYWxsb2NhdGVfZHlu cmVsb2NzKTogTm8gZHluYW1pYyByZWxvY2F0aW9uCglhZ2FpbnN0IG5vbi1wcmVlbXB0aWJsZSBh YnNvbHV0ZSBzeW1ib2wuCgkoX2JmZF9lbGZfeDg2X3ZhbGlkX3JlbG9jX3ApOiBOZXcgZnVuY3Rp b24uCgkqIGVsZnh4LXg4Ni5oIChHRU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJT05fUCk6IEFkZCBh biBTRUMKCWFyZ3VtZW50LiAgRG9uJ3QgZ2VuZXJhdGUgZHluYW1pYyByZWxvY2F0aW9uIGFnYWlu c3QKCW5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wuCgkoR0VORVJBVEVfUkVMQVRJVkVf UkVMT0NfUCk6IERvbid0IGdlbmVyYXRlIHJlbGF0aXZlIHJlbG9jYXRpb24KCWFnYWluc3Qgbm9u LXByZWVtcHRpYmxlIGFic29sdXRlIHN5bWJvbC4KCShSX1g4Nl82NF9jb252ZXJ0ZWRfcmVsb2Nf Yml0KTogTmV3LiAgTW92ZWQgZnJvbSBlbGY2NC14ODYtNjQuYy4KCShfYmZkX2VsZl94ODZfdmFs aWRfcmVsb2NfcCk6IExpa2V3aXNlLgoKbGQvCgoJUFIgbGQvMjU3NDkKCVBSIGxkLzI1NzU0Cgkq IHRlc3RzdWl0ZS9sZC1lbGYvbGludXgteDg2LmV4cDogUnVuIGxkLzI1NzQ5IHRlc3RzLgoJKiB0 ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMS5jOiBOZXcgZmlsZS4KCSogdGVzdHN1aXRlL2xkLWVs Zi9wcjI1NzQ5LTFhLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWIu YzogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYi5lcnI6IExpa2V3aXNl LgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWMuYzogTGlrZXdpc2UuCgkqIHRlc3RzdWl0 ZS9sZC1lbGYvcHIyNTc0OS0yLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3 NDktMmEuczogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yYi5zOiBMaWtl d2lzZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LnJkOiBMaWtld2lzZS4KCSogdGVzdHN1 aXRlL2xkLWVsZi9wcjI1NzU0LTFhLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3By MjU3NTQtMWIuczogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0yYS5jOiBM aWtld2lzZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTJiLmVycjogTGlrZXdpc2UuCgkq IHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0yYi5zOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL2xk LWVsZi9wcjI1NzU0LTNhLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQt M2IuczogTGlrZXdpc2UuCi0tLQogYmZkL2VsZjMyLWkzODYuYyAgICAgICAgICAgICAgICAgICB8 ICA0MCArKysrKy0tLQogYmZkL2VsZjY0LXg4Ni02NC5jICAgICAgICAgICAgICAgICB8ICAzMSAr KysrLS0KIGJmZC9lbGZ4eC14ODYuYyAgICAgICAgICAgICAgICAgICAgfCAxMDEgKysrKysrKysr KysrKysrKysrLQogYmZkL2VsZnh4LXg4Ni5oICAgICAgICAgICAgICAgICAgICB8ICAyMiArKysr LQogbGQvdGVzdHN1aXRlL2xkLWVsZi9saW51eC14ODYuZXhwICB8IDE1MCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTEuYyAgICB8ICAx MiArKysKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYS5jICAgfCAgMTEgKysrCiBsZC90 ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWIuYyAgIHwgICA5ICsrCiBsZC90ZXN0c3VpdGUvbGQt ZWxmL3ByMjU3NDktMWIuZXJyIHwgICAzICsKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0x Yy5jICAgfCAgIDkgKysKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yLmMgICAgfCAgMTIg KysrCiBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMmEucyAgIHwgICA2ICsrCiBsZC90ZXN0 c3VpdGUvbGQtZWxmL3ByMjU3NDktMmIucyAgIHwgICA3ICsrCiBsZC90ZXN0c3VpdGUvbGQtZWxm L3ByMjU3NDkucmQgICAgIHwgICA0ICsKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0xYS5j ICAgfCAgMTkgKysrKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTFiLnMgICB8ICAgMyAr CiBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMmEuYyAgIHwgIDE5ICsrKysKIGxkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc1NC0yYi5lcnIgfCAgIDMgKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9w cjI1NzU0LTJiLnMgICB8ICAgMyArCiBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtM2EuYyAg IHwgIDE5ICsrKysKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0zYi5zICAgfCAgIDMgKwog MjEgZmlsZXMgY2hhbmdlZCwgNDYxIGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWEuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYi5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFiLmVycgogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQv dGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc0OS0yYS5zCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRl L2xkLWVsZi9wcjI1NzQ5LTJiLnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQt ZWxmL3ByMjU3NDkucmQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3By MjU3NTQtMWEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1 NC0xYi5zCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTJh LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMmIuZXJy CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTJiLnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtM2EuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0zYi5zCgpkaWZmIC0tZ2l0 IGEvYmZkL2VsZjMyLWkzODYuYyBiL2JmZC9lbGYzMi1pMzg2LmMKaW5kZXggZWI3ZTFmOGIzNC4u MjBkZmE0YjRmNCAxMDA2NDQKLS0tIGEvYmZkL2VsZjMyLWkzODYuYworKysgYi9iZmQvZWxmMzIt aTM4Ni5jCkBAIC0xMjI2LDYgKzEyMjYsNyBAQCBlbGZfaTM4Nl9jb252ZXJ0X2xvYWRfcmVsb2Mg KGJmZCAqYWJmZCwgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHIsCiAgIGJmZF92bWEgbm9w X29mZnNldDsKICAgYmZkX2Jvb2xlYW4gaXNfcGljOwogICBiZmRfYm9vbGVhbiB0b19yZWxvY18z MjsKKyAgYmZkX2Jvb2xlYW4gYWJzX3N5bWJvbDsKICAgdW5zaWduZWQgaW50IHJfdHlwZTsKICAg dW5zaWduZWQgaW50IHJfc3ltbmR4OwogICBiZmRfdm1hIHJvZmYgPSBpcmVsLT5yX29mZnNldDsK QEAgLTEyNDksNiArMTI1MCwyMSBAQCBlbGZfaTM4Nl9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAq YWJmZCwgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHIsCiAgIG1vZHJtID0gYmZkX2dldF84 IChhYmZkLCBjb250ZW50cyArIHJvZmYgLSAxKTsKICAgYmFzZWxlc3MgPSAobW9kcm0gJiAweGM3 KSA9PSAweDU7CiAKKyAgaWYgKGgpCisgICAgeworICAgICAgLyogTkI6IEFsc28gc2V0IGxpbmtl cl9kZWYgdmlhIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMX1AuICAqLworICAgICAgbG9jYWxfcmVm ID0gU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUxfUCAobGlua19pbmZvLCBoKTsKKyAgICAgIGlzeW0g PSBOVUxMOworICAgICAgYWJzX3N5bWJvbCA9IGJmZF9pc19hYnNfc3ltYm9sICgmaC0+cm9vdCk7 CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgbG9jYWxfcmVmID0gVFJVRTsKKyAgICAgIGlz eW0gPSBiZmRfc3ltX2Zyb21fcl9zeW1uZHggKCZodGFiLT5zeW1fY2FjaGUsIGFiZmQsCisJCQkJ ICAgIHJfc3ltbmR4KTsKKyAgICAgIGFic19zeW1ib2wgPSBpc3ltLT5zdF9zaG5keCA9PSBTSE5f QUJTOworICAgIH0KKwogICBpZiAoYmFzZWxlc3MgJiYgaXNfcGljKQogICAgIHsKICAgICAgIC8q IEZvciBQSUMsIGRpc2FsbG93IFJfMzg2X0dPVDMyWCB3aXRob3V0IGEgYmFzZSByZWdpc3RlcgpA QCAtMTI1NiwxMSArMTI3Miw3IEBAIGVsZl9pMzg2X2NvbnZlcnRfbG9hZF9yZWxvYyAoYmZkICph YmZkLCBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkciwKICAgICAgIGNvbnN0IGNoYXIgKm5h bWU7CiAKICAgICAgIGlmIChoID09IE5VTEwpCi0JewotCSAgaXN5bSA9IGJmZF9zeW1fZnJvbV9y X3N5bW5keCAoJmh0YWItPnN5bV9jYWNoZSwgYWJmZCwKLQkJCQkJcl9zeW1uZHgpOwotCSAgbmFt ZSA9IGJmZF9lbGZfc3ltX25hbWUgKGFiZmQsIHN5bXRhYl9oZHIsIGlzeW0sIE5VTEwpOwotCX0K KwluYW1lID0gYmZkX2VsZl9zeW1fbmFtZSAoYWJmZCwgc3ltdGFiX2hkciwgaXN5bSwgTlVMTCk7 CiAgICAgICBlbHNlCiAJbmFtZSA9IGgtPnJvb3Qucm9vdC5zdHJpbmc7CiAKQEAgLTEyOTQsOSAr MTMwNiw2IEBAIGVsZl9pMzg2X2NvbnZlcnRfbG9hZF9yZWxvYyAoYmZkICphYmZkLCBFbGZfSW50 ZXJuYWxfU2hkciAqc3ltdGFiX2hkciwKIAlnb3RvIGNvbnZlcnRfbG9hZDsKICAgICB9CiAKLSAg LyogTkI6IEFsc28gc2V0IGxpbmtlcl9kZWYgdmlhIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMX1Au ICAqLwotICBsb2NhbF9yZWYgPSBTWU1CT0xfUkVGRVJFTkNFU19MT0NBTF9QIChsaW5rX2luZm8s IGgpOwotCiAgIC8qIFVuZGVmaW5lZCB3ZWFrIHN5bWJvbCBpcyBvbmx5IGJvdW5kIGxvY2FsbHkg aW4gZXhlY3V0YWJsZQogICAgICBhbmQgaXRzIHJlZmVyZW5jZSBpcyByZXNvbHZlZCBhcyAwLiAg Ki8KICAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhawpAQCAtMTM5 Niw2ICsxNDA1LDkgQEAgZWxmX2kzODZfY29udmVydF9sb2FkX3JlbG9jIChiZmQgKmFiZmQsIEVs Zl9JbnRlcm5hbF9TaGRyICpzeW10YWJfaGRyLAogCWNvbnZlcnRfbG9hZDoKIAkgIGlmIChvcGNv ZGUgPT0gMHg4YikKIAkgICAgeworCSAgICAgIGlmIChhYnNfc3ltYm9sICYmIGxvY2FsX3JlZikK KwkJdG9fcmVsb2NfMzIgPSBUUlVFOworCiAJICAgICAgaWYgKHRvX3JlbG9jXzMyKQogCQl7CiAJ CSAgLyogQ29udmVydCAibW92IGZvb0BHT1RbKCVyZWcxKV0sICVyZWcyIiB0bwpAQCAtMTUxOSw2 ICsxNTMxLDcgQEAgZWxmX2kzODZfY2hlY2tfcmVsb2NzIChiZmQgKmFiZmQsCiAgICAgICBFbGZf SW50ZXJuYWxfU3ltICppc3ltOwogICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgIGJmZF9i b29sZWFuIHNpemVfcmVsb2M7CisgICAgICBiZmRfYm9vbGVhbiBub19keW5yZWxvYzsKIAogICAg ICAgcl9zeW1uZHggPSBFTEYzMl9SX1NZTSAocmVsLT5yX2luZm8pOwogICAgICAgcl90eXBlID0g RUxGMzJfUl9UWVBFIChyZWwtPnJfaW5mbyk7CkBAIC0xNTg3LDYgKzE2MDAsMTAgQEAgZWxmX2kz ODZfY2hlY2tfcmVsb2NzIChiZmQgKmFiZmQsCiAJICAgIGdvdG8gZXJyb3JfcmV0dXJuOwogCX0K IAorICAgICAgaWYgKCFfYmZkX2VsZl94ODZfdmFsaWRfcmVsb2NfcCAoc2VjLCBpbmZvLCBodGFi LCByZWwsIGgsIGlzeW0sCisJCQkJICAgICAgIHN5bXRhYl9oZHIsICZub19keW5yZWxvYykpCisJ cmV0dXJuIEZBTFNFOworCiAgICAgICBpZiAoISBlbGZfaTM4Nl90bHNfdHJhbnNpdGlvbiAoaW5m bywgYWJmZCwgc2VjLCBjb250ZW50cywKIAkJCQkgICAgIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMs CiAJCQkJICAgICAmcl90eXBlLCBHT1RfVU5LTk9XTiwKQEAgLTE4MjcsOCArMTg0NCw5IEBAIGVs Zl9pMzg2X2NoZWNrX3JlbG9jcyAoYmZkICphYmZkLAogCiAJICBzaXplX3JlbG9jID0gRkFMU0U7 CiAJZG9fc2l6ZToKLQkgIGlmIChORUVEX0RZTkFNSUNfUkVMT0NBVElPTl9QIChpbmZvLCBGQUxT RSwgaCwgc2VjLCByX3R5cGUsCi0JCQkJCSBSXzM4Nl8zMikpCisJICBpZiAoIW5vX2R5bnJlbG9j CisJICAgICAgJiYgTkVFRF9EWU5BTUlDX1JFTE9DQVRJT05fUCAoaW5mbywgRkFMU0UsIGgsIHNl Yywgcl90eXBlLAorCQkJCQkgICAgUl8zODZfMzIpKQogCSAgICB7CiAJICAgICAgc3RydWN0IGVs Zl9keW5fcmVsb2NzICpwOwogCSAgICAgIHN0cnVjdCBlbGZfZHluX3JlbG9jcyAqKmhlYWQ7CkBA IC0yNzA0LDcgKzI3MjIsNyBAQCBlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1 dF9iZmQsCiAJICAgICAgfHwgaXNfdnh3b3Jrc190bHMpCiAJICAgIGJyZWFrOwogCi0JICBpZiAo R0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8sIGVoLCByX3R5cGUsCisJICBpZiAo R0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8sIGVoLCByX3R5cGUsIHNlYywKIAkJ CQkJICAgICBGQUxTRSwgcmVzb2x2ZWRfdG9femVybywKIAkJCQkJICAgICAocl90eXBlID09IFJf Mzg2X1BDMzIpKSkKIAkgICAgewpkaWZmIC0tZ2l0IGEvYmZkL2VsZjY0LXg4Ni02NC5jIGIvYmZk L2VsZjY0LXg4Ni02NC5jCmluZGV4IDkwZTI3MDIzMzQuLjY4ZjAwYzE5NzMgMTAwNjQ0Ci0tLSBh L2JmZC9lbGY2NC14ODYtNjQuYworKysgYi9iZmQvZWxmNjQteDg2LTY0LmMKQEAgLTE5Niw5ICsx OTYsNiBAQCBzdGF0aWMgcmVsb2NfaG93dG9fdHlwZSB4ODZfNjRfZWxmX2hvd3RvX3RhYmxlW10g PQogCUZBTFNFKQogfTsKIAotLyogU2V0IGlmIGEgcmVsb2NhdGlvbiBpcyBjb252ZXJ0ZWQgZnJv bSBhIEdPVFBDUkVMIHJlbG9jYXRpb24uICAqLwotI2RlZmluZSBSX1g4Nl82NF9jb252ZXJ0ZWRf cmVsb2NfYml0ICgxIDw8IDcpCi0KICNkZWZpbmUgWDg2X1BDUkVMX1RZUEVfUChUWVBFKQkJXAog ICAoICAgKChUWVBFKSA9PSBSX1g4Nl82NF9QQzgpCQlcCiAgICB8fCAoKFRZUEUpID09IFJfWDg2 XzY0X1BDMTYpCQlcCkBAIC0xNTA5LDYgKzE1MDYsOCBAQCBlbGZfeDg2XzY0X2NvbnZlcnRfbG9h ZF9yZWxvYyAoYmZkICphYmZkLAogICBiZmRfYm9vbGVhbiBub19vdmVyZmxvdzsKICAgYmZkX2Jv b2xlYW4gcmVsb2N4OwogICBiZmRfYm9vbGVhbiB0b19yZWxvY19wYzMyOworICBiZmRfYm9vbGVh biBhYnNfc3ltYm9sOworICBiZmRfYm9vbGVhbiBsb2NhbF9yZWY7CiAgIGFzZWN0aW9uICp0c2Vj OwogICBiZmRfc2lnbmVkX3ZtYSByYWRkZW5kOwogICB1bnNpZ25lZCBpbnQgb3Bjb2RlOwpAQCAt MTU1OSw2ICsxNTU4LDggQEAgZWxmX3g4Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJm ZCwKIAkJICAgfHwgbm9fb3ZlcmZsb3cKIAkJICAgfHwgaXNfcGljKTsKIAorICBhYnNfc3ltYm9s ID0gRkFMU0U7CisKICAgLyogR2V0IHRoZSBzeW1ib2wgcmVmZXJyZWQgdG8gYnkgdGhlIHJlbG9j LiAgKi8KICAgaWYgKGggPT0gTlVMTCkKICAgICB7CkBAIC0xNTY5LDggKzE1NzAsMTIgQEAgZWxm X3g4Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJmZCwKICAgICAgIGlmIChpc3ltLT5z dF9zaG5keCA9PSBTSE5fVU5ERUYpCiAJcmV0dXJuIFRSVUU7CiAKKyAgICAgIGxvY2FsX3JlZiA9 IFRSVUU7CiAgICAgICBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX0FCUykKLQl0c2VjID0gYmZk X2Fic19zZWN0aW9uX3B0cjsKKwl7CisJICB0c2VjID0gYmZkX2Fic19zZWN0aW9uX3B0cjsKKwkg IGFic19zeW1ib2wgPSBUUlVFOworCX0KICAgICAgIGVsc2UgaWYgKGlzeW0tPnN0X3NobmR4ID09 IFNITl9DT01NT04pCiAJdHNlYyA9IGJmZF9jb21fc2VjdGlvbl9wdHI7CiAgICAgICBlbHNlIGlm IChpc3ltLT5zdF9zaG5keCA9PSBTSE5fWDg2XzY0X0xDT01NT04pCkBAIC0xNTg2LDkgKzE1OTEs MTAgQEAgZWxmX3g4Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJmZCwKIAkgR09UUENS RUxYIHJlbG9jYXRpb25zIHNpbmNlIHdlIG5lZWQgdG8gbW9kaWZ5IFJFWCBieXRlLgogCSBJdCBp cyBPSyBjb252ZXJ0IG1vdiB3aXRoIFJfWDg2XzY0X0dPVFBDUkVMIHRvCiAJIFJfWDg2XzY0X1BD MzIuICAqLwotICAgICAgYmZkX2Jvb2xlYW4gbG9jYWxfcmVmOwogICAgICAgc3RydWN0IGVsZl94 ODZfbGlua19oYXNoX2VudHJ5ICplaCA9IGVsZl94ODZfaGFzaF9lbnRyeSAoaCk7CiAKKyAgICAg IGFic19zeW1ib2wgPSBiZmRfaXNfYWJzX3N5bWJvbCAoJmgtPnJvb3QpOworCiAgICAgICAvKiBO QjogQWxzbyBzZXQgbGlua2VyX2RlZiB2aWEgU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUxfUC4gICov CiAgICAgICBsb2NhbF9yZWYgPSBTWU1CT0xfUkVGRVJFTkNFU19MT0NBTF9QIChsaW5rX2luZm8s IGgpOwogICAgICAgaWYgKChyZWxvY3ggfHwgb3Bjb2RlID09IDB4OGIpCkBAIC0xNzI4LDYgKzE3 MzQsOSBAQCBlbGZfeDg2XzY0X2NvbnZlcnRfbG9hZF9yZWxvYyAoYmZkICphYmZkLAogCiAgICAg ICBpZiAob3Bjb2RlID09IDB4OGIpCiAJeworCSAgaWYgKGFic19zeW1ib2wgJiYgbG9jYWxfcmVm KQorCSAgICB0b19yZWxvY19wYzMyID0gRkFMU0U7CisKIAkgIGlmICh0b19yZWxvY19wYzMyKQog CSAgICB7CiAJICAgICAgLyogQ29udmVydCAibW92IGZvb0BHT1RQQ1JFTCglcmlwKSwgJXJlZyIg dG8KQEAgLTE4NzksNiArMTg4OCw3IEBAIGVsZl94ODZfNjRfY2hlY2tfcmVsb2NzIChiZmQgKmFi ZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAogICAgICAgY29uc3QgY2hhciAqbmFtZTsK ICAgICAgIGJmZF9ib29sZWFuIHNpemVfcmVsb2M7CiAgICAgICBiZmRfYm9vbGVhbiBjb252ZXJ0 ZWRfcmVsb2M7CisgICAgICBiZmRfYm9vbGVhbiBub19keW5yZWxvYzsKIAogICAgICAgcl9zeW1u ZHggPSBodGFiLT5yX3N5bSAocmVsLT5yX2luZm8pOwogICAgICAgcl90eXBlID0gRUxGMzJfUl9U WVBFIChyZWwtPnJfaW5mbyk7CkBAIC0xOTgzLDYgKzE5OTMsMTAgQEAgZWxmX3g4Nl82NF9jaGVj a19yZWxvY3MgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAJICAgIGNv bnZlcnRlZCA9IFRSVUU7CiAJfQogCisgICAgICBpZiAoIV9iZmRfZWxmX3g4Nl92YWxpZF9yZWxv Y19wIChzZWMsIGluZm8sIGh0YWIsIHJlbCwgaCwgaXN5bSwKKwkJCQkgICAgICAgc3ltdGFiX2hk ciwgJm5vX2R5bnJlbG9jKSkKKwlyZXR1cm4gRkFMU0U7CisKICAgICAgIGlmICghIGVsZl94ODZf NjRfdGxzX3RyYW5zaXRpb24gKGluZm8sIGFiZmQsIHNlYywgY29udGVudHMsCiAJCQkJICAgICAg IHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCiAJCQkJICAgICAgICZyX3R5cGUsIEdPVF9VTktOT1dO LApAQCAtMjI0NSw4ICsyMjU5LDkgQEAgZWxmX3g4Nl82NF9jaGVja19yZWxvY3MgKGJmZCAqYWJm ZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAKIAkgIHNpemVfcmVsb2MgPSBGQUxTRTsK IAlkb19zaXplOgotCSAgaWYgKE5FRURfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8sIFRSVUUs IGgsIHNlYywgcl90eXBlLAotCQkJCQkgaHRhYi0+cG9pbnRlcl9yX3R5cGUpKQorCSAgaWYgKCFu b19keW5yZWxvYworCSAgICAgICYmIE5FRURfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8sIFRS VUUsIGgsIHNlYywgcl90eXBlLAorCQkJCQkgICAgaHRhYi0+cG9pbnRlcl9yX3R5cGUpKQogCSAg ICB7CiAJICAgICAgc3RydWN0IGVsZl9keW5fcmVsb2NzICpwOwogCSAgICAgIHN0cnVjdCBlbGZf ZHluX3JlbG9jcyAqKmhlYWQ7CkBAIC0zMTc1LDcgKzMxOTAsNyBAQCBlbGZfeDg2XzY0X3JlbG9j YXRlX3NlY3Rpb24gKGJmZCAqb3V0cHV0X2JmZCwKIAkJCQkgICAgJiYgKFg4Nl9QQ1JFTF9UWVBF X1AgKHJfdHlwZSkKIAkJCQkJfHwgWDg2X1NJWkVfVFlQRV9QIChyX3R5cGUpKSk7CiAKLQkgIGlm IChHRU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJT05fUCAoaW5mbywgZWgsIHJfdHlwZSwKKwkgIGlm IChHRU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJT05fUCAoaW5mbywgZWgsIHJfdHlwZSwgc2VjLAog CQkJCQkgICAgIG5lZWRfY29weV9yZWxvY19pbl9waWUsCiAJCQkJCSAgICAgcmVzb2x2ZWRfdG9f emVybywgRkFMU0UpKQogCSAgICB7CmRpZmYgLS1naXQgYS9iZmQvZWxmeHgteDg2LmMgYi9iZmQv ZWxmeHgteDg2LmMKaW5kZXggMTA4ZTA0YTE1OC4uOGViYmJlMmZkNSAxMDA2NDQKLS0tIGEvYmZk L2VsZnh4LXg4Ni5jCisrKyBiL2JmZC9lbGZ4eC14ODYuYwpAQCAtMzQ3LDcgKzM0Nyw4IEBAIGVs Zl94ODZfYWxsb2NhdGVfZHlucmVsb2NzIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwg dm9pZCAqaW5mKQogCSAoYnV0IGlmIGJvdGggUl8zODZfVExTX0lFXzMyIGFuZCBSXzM4Nl9UTFNf SUUgaXMgcHJlc2VudCwgd2UKIAkgbmVlZCB0d28pLCBSXzM4Nl9UTFNfR0QgYW5kIFJfWDg2XzY0 X1RMU0dEIG5lZWQgb25lIGlmIGxvY2FsCiAJIHN5bWJvbCBhbmQgdHdvIGlmIGdsb2JhbC4gIE5v IGR5bmFtaWMgcmVsb2NhdGlvbiBhZ2FpbnN0Ci0JIHJlc29sdmVkIHVuZGVmaW5lZCB3ZWFrIHN5 bWJvbCBpbiBleGVjdXRhYmxlLiAgKi8KKwkgcmVzb2x2ZWQgdW5kZWZpbmVkIHdlYWsgc3ltYm9s IGluIGV4ZWN1dGFibGUuICBObyBkeW5hbWljCisJIHJlbG9jYXRpb24gYWdhaW5zdCBub24tcHJl ZW1wdGlibGUgYWJzb2x1dGUgc3ltYm9sLiAgKi8KICAgICAgIGlmICh0bHNfdHlwZSA9PSBHT1Rf VExTX0lFX0JPVEgpCiAJaHRhYi0+ZWxmLnNyZWxnb3QtPnNpemUgKz0gMiAqIGh0YWItPnNpemVv Zl9yZWxvYzsKICAgICAgIGVsc2UgaWYgKChHT1RfVExTX0dEX1AgKHRsc190eXBlKSAmJiBoLT5k eW5pbmR4ID09IC0xKQpAQCAtMzU5LDcgKzM2MCw5IEBAIGVsZl94ODZfYWxsb2NhdGVfZHlucmVs b2NzIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwgdm9pZCAqaW5mKQogCSAgICAgICAm JiAoKEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcikgPT0gU1RWX0RFRkFVTFQKIAkJICAgICYm ICFyZXNvbHZlZF90b196ZXJvKQogCQkgICB8fCBoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFz aF91bmRlZndlYWspCi0JICAgICAgICYmIChiZmRfbGlua19waWMgKGluZm8pCisJICAgICAgICYm ICgoYmZkX2xpbmtfcGljIChpbmZvKQorCQkgICAgJiYgIShoLT5keW5pbmR4ID09IC0xCisJCQkg JiYgYmZkX2lzX2Fic19zeW1ib2wgKCZoLT5yb290KSkpCiAJCSAgIHx8IFdJTExfQ0FMTF9GSU5J U0hfRFlOQU1JQ19TWU1CT0wgKGR5biwgMCwgaCkpKQogCWh0YWItPmVsZi5zcmVsZ290LT5zaXpl ICs9IGh0YWItPnNpemVvZl9yZWxvYzsKICAgICAgIGlmIChHT1RfVExTX0dERVNDX1AgKHRsc190 eXBlKSkKQEAgLTk1Miw2ICs5NTUsMTAwIEBAIF9iZmRfeDg2X2VsZl9saW5rX2NoZWNrX3JlbG9j cyAoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbykKICAgcmV0dXJuIF9iZmRf ZWxmX2xpbmtfY2hlY2tfcmVsb2NzIChhYmZkLCBpbmZvKTsKIH0KIAorYmZkX2Jvb2xlYW4KK19i ZmRfZWxmX3g4Nl92YWxpZF9yZWxvY19wIChhc2VjdGlvbiAqaW5wdXRfc2VjdGlvbiwKKwkJCSAg ICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKKwkJCSAgICBzdHJ1Y3QgZWxmX3g4Nl9saW5r X2hhc2hfdGFibGUgKmh0YWIsCisJCQkgICAgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKnJlbCwK KwkJCSAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwKKwkJCSAgICBFbGZfSW50ZXJu YWxfU3ltICpzeW0sCisJCQkgICAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHIsCisJCQkg ICAgYmZkX2Jvb2xlYW4gKm5vX2R5bnJlbG9jX3ApCit7CisgIGJmZF9ib29sZWFuIHZhbGlkX3Ag PSBUUlVFOworCisgICpub19keW5yZWxvY19wID0gRkFMU0U7CisKKyAgLyogQ2hlY2sgSWYgcmVs b2NhdGlvbiBhZ2FpbnN0IG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wgaXMKKyAgICAg dmFsaWQgaW4gUElDLiAgRklYTUU6IENhbid0IHVzZSBTWU1CT0xfUkVGRVJFTkNFU19MT0NBTF9Q IHNpbmNlCisgICAgIGl0IG1heSBjYWxsIF9iZmRfZWxmX2xpbmtfaGlkZV9zeW1fYnlfdmVyc2lv biBhbmQgcmVzdWx0IGluCisgICAgIGxkLWVsZnZlcnMvIHZlcnMyMSB0ZXN0IGZhaWx1cmUuICAq LworICBpZiAoYmZkX2xpbmtfcGljIChpbmZvKQorICAgICAgJiYgKGggPT0gTlVMTCB8fCBTWU1C T0xfUkVGRVJFTkNFU19MT0NBTCAoaW5mbywgaCkpKQorICAgIHsKKyAgICAgIGNvbnN0IHN0cnVj dCBlbGZfYmFja2VuZF9kYXRhICpiZWQ7CisgICAgICB1bnNpZ25lZCBpbnQgcl90eXBlOworICAg ICAgRWxmX0ludGVybmFsX1JlbGEgaXJlbDsKKworICAgICAgLyogU2tpcCBub24tYWJzb2x1dGUg c3ltYm9sLiAgKi8KKyAgICAgIGlmIChoKQorCXsKKwkgIGlmICghYmZkX2lzX2Fic19zeW1ib2wg KCZoLT5yb290KSkKKwkgICAgcmV0dXJuIHZhbGlkX3A7CisJfQorICAgICAgZWxzZSBpZiAoc3lt LT5zdF9zaG5keCAhPSBTSE5fQUJTKQorCXJldHVybiB2YWxpZF9wOworCisgICAgICBiZWQgPSBn ZXRfZWxmX2JhY2tlbmRfZGF0YSAoaW5wdXRfc2VjdGlvbi0+b3duZXIpOworICAgICAgcl90eXBl ID0gRUxGMzJfUl9UWVBFIChyZWwtPnJfaW5mbyk7CisgICAgICBpcmVsID0gKnJlbDsKKworICAg ICAgLyogT25seSBhbGxvdyByZWxvY2F0aW9ucyBhZ2FpbnN0IGFic29sdXRlIHN5bWJvbCwgd2hp Y2ggY2FuIGJlCisJIHJlc29sdmVkIGFzIGFic29sdXRlIHZhbHVlICsgYWRkZW5kLiAgR09UUENS RUwgcmVsb2NhdGlvbnMKKwkgYXJlIGFsbG93ZWQgc2luY2UgYWJzb2x1dGUgdmFsdWUgKyBhZGRl bmQgaXMgc3RvcmVkIGluIHRoZQorCSBHT1Qgc2xvdC4gICovCisgICAgICBpZiAoYmVkLT50YXJn ZXRfaWQgPT0gWDg2XzY0X0VMRl9EQVRBKQorCXsKKwkgIHJfdHlwZSAmPSB+Ul9YODZfNjRfY29u dmVydGVkX3JlbG9jX2JpdDsKKwkgIHZhbGlkX3AgPSAocl90eXBlID09IFJfWDg2XzY0XzY0CisJ CSAgICAgfHwgcl90eXBlID09IFJfWDg2XzY0XzMyCisJCSAgICAgfHwgcl90eXBlID09IFJfWDg2 XzY0XzMyUworCQkgICAgIHx8IHJfdHlwZSA9PSBSX1g4Nl82NF8xNgorCQkgICAgIHx8IHJfdHlw ZSA9PSBSX1g4Nl82NF84CisJCSAgICAgfHwgcl90eXBlID09IFJfWDg2XzY0X0dPVFBDUkVMCisJ CSAgICAgfHwgcl90eXBlID09IFJfWDg2XzY0X0dPVFBDUkVMWAorCQkgICAgIHx8IHJfdHlwZSA9 PSBSX1g4Nl82NF9SRVhfR09UUENSRUxYKTsKKwkgIGlmICghdmFsaWRfcCkKKwkgICAgeworCSAg ICAgIHVuc2lnbmVkIGludCByX3N5bW5keCA9IGh0YWItPnJfc3ltIChyZWwtPnJfaW5mbyk7CisJ ICAgICAgaXJlbC5yX2luZm8gPSBodGFiLT5yX2luZm8gKHJfc3ltbmR4LCByX3R5cGUpOworCSAg ICB9CisJfQorICAgICAgZWxzZQorCXZhbGlkX3AgPSAocl90eXBlID09IFJfMzg2XzMyCisJCSAg IHx8IHJfdHlwZSA9PSBSXzM4Nl8xNgorCQkgICB8fCByX3R5cGUgPT0gUl8zODZfOCk7CisKKyAg ICAgIGlmICh2YWxpZF9wKQorCSpub19keW5yZWxvY19wID0gVFJVRTsKKyAgICAgIGVsc2UKKwl7 CisJICBjb25zdCBjaGFyICpuYW1lOworCSAgYXJlbGVudCBpbnRlcm5hbF9yZWxvYzsKKworCSAg aWYgKCFiZWQtPmVsZl9pbmZvX3RvX2hvd3RvIChpbnB1dF9zZWN0aW9uLT5vd25lciwKKwkJCQkg ICAgICAgJmludGVybmFsX3JlbG9jLCAmaXJlbCkKKwkgICAgICB8fCBpbnRlcm5hbF9yZWxvYy5o b3d0byA9PSBOVUxMKQorCSAgICBhYm9ydCAoKTsKKworCSAgaWYgKGgpCisJICAgIG5hbWUgPSBo LT5yb290LnJvb3Quc3RyaW5nOworCSAgZWxzZQorCSAgICBuYW1lID0gYmZkX2VsZl9zeW1fbmFt ZSAoaW5wdXRfc2VjdGlvbi0+b3duZXIsIHN5bXRhYl9oZHIsCisJCQkJICAgICBzeW0sIE5VTEwp OworCSAgaW5mby0+Y2FsbGJhY2tzLT5laW5mbworCSAgICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAq LworCSAgICAoXygiJUYlUDogJXBCOiByZWxvY2F0aW9uICVzIGFnYWluc3QgYWJzb2x1dGUgc3lt Ym9sICIKKwkgICAgICAgImAlcycgaW4gc2VjdGlvbiBgJXBBJyBpcyBkaXNhbGxvd2VkXG4iKSwK KwkgICAgIGlucHV0X3NlY3Rpb24tPm93bmVyLCBpbnRlcm5hbF9yZWxvYy5ob3d0by0+bmFtZSwg bmFtZSwKKwkgICAgIGlucHV0X3NlY3Rpb24pOworCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9y X2JhZF92YWx1ZSk7CisJfQorICAgIH0KKworICByZXR1cm4gdmFsaWRfcDsKK30KKwogLyogU2V0 IHRoZSBzaXplcyBvZiB0aGUgZHluYW1pYyBzZWN0aW9ucy4gICovCiAKIGJmZF9ib29sZWFuCmRp ZmYgLS1naXQgYS9iZmQvZWxmeHgteDg2LmggYi9iZmQvZWxmeHgteDg2LmgKaW5kZXggYmVmMTdk YzJiYS4uNDc1N2Y3NzBlNiAxMDA2NDQKLS0tIGEvYmZkL2VsZnh4LXg4Ni5oCisrKyBiL2JmZC9l bGZ4eC14ODYuaApAQCAtMTE5LDExICsxMTksMTUgQEAKICAgIENvcHkgZHluYW1pYyBmdW5jdGlv biBwb2ludGVyIHJlbG9jYXRpb25zLiAgRG9uJ3QgZ2VuZXJhdGUgZHluYW1pYwogICAgcmVsb2Nh dGlvbnMgYWdhaW5zdCByZXNvbHZlZCB1bmRlZmluZWQgd2VhayBzeW1ib2xzIGluIFBJRSwgZXhj ZXB0CiAgICB3aGVuIFBDMzJfUkVMT0MgaXMgVFJVRS4gIFVuZGVmaW5lZCB3ZWFrIHN5bWJvbCBp cyBib3VuZCBsb2NhbGx5Ci0gICB3aGVuIFBJQyBpcyBmYWxzZS4gICovCi0jZGVmaW5lIEdFTkVS QVRFX0RZTkFNSUNfUkVMT0NBVElPTl9QKElORk8sIEVILCBSX1RZUEUsIFwKKyAgIHdoZW4gUElD IGlzIGZhbHNlLiAgRG9uJ3QgZ2VuZXJhdGUgZHluYW1pYyByZWxvY2F0aW9ucyBhZ2FpbnN0Cisg ICBub24tcHJlZW1wdGlibGUgYWJzb2x1dGUgc3ltYm9sLiAgKi8KKyNkZWZpbmUgR0VORVJBVEVf RFlOQU1JQ19SRUxPQ0FUSU9OX1AoSU5GTywgRUgsIFJfVFlQRSwgU0VDLCBcCiAJCQkJICAgICAg TkVFRF9DT1BZX1JFTE9DX0lOX1BJRSwgXAogCQkJCSAgICAgIFJFU09MVkVEX1RPX1pFUk8sIFBD MzJfUkVMT0MpIFwKICAgKChiZmRfbGlua19waWMgKElORk8pIFwKKyAgICAmJiAhKGJmZF9pc19h YnNfc2VjdGlvbiAoU0VDKSBcCisJICYmICgoRUgpID09IE5VTEwgXAorCSAgICAgfHwgU1lNQk9M X1JFRkVSRU5DRVNfTE9DQUwgKElORk8sICYoRUgpLT5lbGYpKSkgXAogICAgICYmICEoTkVFRF9D T1BZX1JFTE9DX0lOX1BJRSkgXAogICAgICYmICgoRUgpID09IE5VTEwgXAogCXx8ICgoRUxGX1NU X1ZJU0lCSUxJVFkgKChFSCktPmVsZi5vdGhlcikgPT0gU1RWX0RFRkFVTFQgXApAQCAtMTc1LDEy ICsxNzksMTQgQEAKICAgIHByb2JsZW0gd2hlbiAidGltZSIgb3IgInRpbWVzIiBpcyBkZWZpbmVk IGFzIGEgdmFyaWFibGUgaW4gYW4KICAgIGV4ZWN1dGFibGUsIGNsYXNoaW5nIHdpdGggZnVuY3Rp b25zIG9mIHRoZSBzYW1lIG5hbWUgaW4gbGliYy4gIElmIGEKICAgIHN5bWJvbCBpc24ndCB1bmRl ZmluZWQgd2VhayBzeW1ib2wsIGRvbid0IG1ha2UgaXQgZHluYW1pYyBpbiBQSUMgYW5kCi0gICBn ZW5lcmF0ZSByZWxhdGl2ZSByZWxvY2F0aW9uLiAgKi8KKyAgIGdlbmVyYXRlIHJlbGF0aXZlIHJl bG9jYXRpb24uICAgRG9uJ3QgZ2VuZXJhdGUgcmVsYXRpdmUgcmVsb2NhdGlvbgorICAgYWdhaW5z dCBub24tcHJlZW1wdGlibGUgYWJzb2x1dGUgc3ltYm9sLiAgKi8KICNkZWZpbmUgR0VORVJBVEVf UkVMQVRJVkVfUkVMT0NfUChJTkZPLCBIKSBcCiAgICgoSCktPmR5bmluZHggPT0gLTEgXAogICAg JiYgIShIKS0+Zm9yY2VkX2xvY2FsIFwKICAgICYmIChIKS0+cm9vdC50eXBlICE9IGJmZF9saW5r X2hhc2hfdW5kZWZ3ZWFrIFwKLSAgICYmIGJmZF9saW5rX3BpYyAoSU5GTykpCisgICAmJiBiZmRf bGlua19waWMgKElORk8pIFwKKyAgICYmICFiZmRfaXNfYWJzX3N5bWJvbCAoJihIKS0+cm9vdCkp CiAKIC8qIFRSVUUgaWYgdGhpcyBpcyBhIHBvaW50ZXIgcmVmZXJlbmNlIHRvIGEgbG9jYWwgSUZV TkMuICAqLwogI2RlZmluZSBQT0lOVEVSX0xPQ0FMX0lGVU5DX1AoSU5GTywgSCkgXApAQCAtNjAx LDYgKzYwNyw5IEBAIHN0cnVjdCBlbGZfeDg2X3BsdAogICBsb25nIGNvdW50OwogfTsKIAorLyog U2V0IGlmIGEgcmVsb2NhdGlvbiBpcyBjb252ZXJ0ZWQgZnJvbSBhIEdPVFBDUkVMIHJlbG9jYXRp b24uICAqLworI2RlZmluZSBSX1g4Nl82NF9jb252ZXJ0ZWRfcmVsb2NfYml0ICgxIDw8IDcpCisK ICNkZWZpbmUgZWxmX3g4Nl90ZGF0YShhYmZkKSBcCiAgICgoc3RydWN0IGVsZl94ODZfb2JqX3Rk YXRhICopIChhYmZkKS0+dGRhdGEuYW55KQogCkBAIC02NTIsNiArNjYxLDExIEBAIGV4dGVybiBp bnQgX2JmZF94ODZfZWxmX2NvbXBhcmVfcmVsb2NzCiBleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF94 ODZfZWxmX2xpbmtfY2hlY2tfcmVsb2NzCiAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8g Kik7CiAKK2V4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZl94ODZfdmFsaWRfcmVsb2NfcAorICAo YXNlY3Rpb24gKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IGVsZl94ODZfbGlua19o YXNoX3RhYmxlICosCisgICBjb25zdCBFbGZfSW50ZXJuYWxfUmVsYSAqLCBzdHJ1Y3QgZWxmX2xp bmtfaGFzaF9lbnRyeSAqLAorICAgRWxmX0ludGVybmFsX1N5bSAqLCBFbGZfSW50ZXJuYWxfU2hk ciAqLCBiZmRfYm9vbGVhbiAqKTsKKwogZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfeDg2X2VsZl9z aXplX2R5bmFtaWNfc2VjdGlvbnMKICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsK IApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9saW51eC14ODYuZXhwIGIvbGQvdGVz dHN1aXRlL2xkLWVsZi9saW51eC14ODYuZXhwCmluZGV4IDYzYTMyMWI5NjYuLjdlYzZhMGM4ZTkg MTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvbGludXgteDg2LmV4cAorKysgYi9sZC90 ZXN0c3VpdGUvbGQtZWxmL2xpbnV4LXg4Ni5leHAKQEAgLTExNSwzICsxMTUsMTUzIEBAIGVsZmVk aXRfdGVzdCAiLS1kaXNhYmxlLXg4Ni1mZWF0dXJlIHNoc3RrIiB4ODYtZmVhdHVyZS0xIHg4Ni1m ZWF0dXJlLTFjCiBlbGZlZGl0X3Rlc3QgIi0tZGlzYWJsZS14ODYtZmVhdHVyZSBpYnQiIHg4Ni1m ZWF0dXJlLTEgeDg2LWZlYXR1cmUtMWQKIGVsZmVkaXRfdGVzdCAiLS1lbmFibGUteDg2LWZlYXR1 cmUgaWJ0IC0tZW5hYmxlLXg4Ni1mZWF0dXJlIHNoc3RrIiBcCiAJCXg4Ni1mZWF0dXJlLTEgeDg2 LWZlYXR1cmUtMWUKKworcHJvYyBjaGVja19wcjI1NzQ5YSB7dGVzdG5hbWUgc3JjZmlsZWEgc3Jj ZmlsZWIgY2ZsYWdzIGxkZmxhZ3MgbGRlcnJvcn0geworICAgIGdsb2JhbCBvYmpjb3B5CisgICAg Z2xvYmFsIHNyY2RpcgorICAgIGdsb2JhbCBzdWJkaXIKKworICAgIGlmIHsgW2lzdGFyZ2V0ICJp Pzg2LSotbGludXgqIl0gfSB7CisJc2V0IG91dHB1dF9hcmNoICJpMzg2OmkzODYiCisJc2V0IG91 dHB1dF90YXJnZXQgImVsZjMyLWkzODYiCisgICAgfSBlbHNlIHsKKwlzZXQgb3V0cHV0X2FyY2gg ImkzODY6eDg2LTY0IgorCWlmIHtbaXN0YXJnZXQgIng4Nl82NC0qLWxpbnV4Ki1nbnV4MzIiXX0g eworCSAgICBzZXQgb3V0cHV0X3RhcmdldCAiZWxmMzIteDg2LTY0IgorCX0gZWxzZSB7CisJICAg IHNldCBvdXRwdXRfdGFyZ2V0ICJlbGY2NC14ODYtNjQiCisJfQorICAgIH0KKworICAgIGV4ZWMg Y3AgJHNyY2Rpci8kc3ViZGlyLyRzcmNmaWxlYSAkc3JjZmlsZWEKKyAgICBzZXQgcHIyNTc0OV9i aW4gIiRvYmpjb3B5IC1CICRvdXRwdXRfYXJjaCAtSSBiaW5hcnkgLU8gJG91dHB1dF90YXJnZXQg JHNyY2ZpbGVhIHRtcGRpci9wcjI1NzQ5LWJpbi5vIgorICAgIHNlbmRfbG9nICIkcHIyNTc0OV9i aW5cbiIKKyAgICBzZXQgZ290IFtyZW1vdGVfZXhlYyBob3N0ICIkcHIyNTc0OV9iaW4iXQorICAg IGlmIHsgW2xpbmRleCAkZ290IDBdICE9IDAgfHwgIVtzdHJpbmcgbWF0Y2ggIiIgW2xpbmRleCAk Z290IDFdXSB9IHRoZW4geworCXNlbmRfbG9nICIkZ290XG4iCisJZmFpbCAiQ29udmVydCAkc3Jj ZmlsZWEgdG8gJG91dHB1dF90YXJnZXQiCisJcmV0dXJuCisgICAgfQorCisgICAgaWYgeyIkbGRl cnJvciIgPT0gIiJ9IHsKKwlydW5fY2NfbGlua190ZXN0cyBbbGlzdCBcCisJICAgIFtsaXN0IFwK KwkJIkJ1aWxkICR0ZXN0bmFtZSAoJGxkZmxhZ3MgJGNmbGFncykiIFwKKwkJIiRsZGZsYWdzIHRt cGRpci9wcjI1NzQ5LWJpbi5vIiBcCisJCSIkY2ZsYWdzIiBcCisJCVtsaXN0ICRzcmNmaWxlYSAk c3JjZmlsZWJdXAorCQl7e3JlYWRlbGYgey1Xcn0gcHIyNTc0OS5yZH19ICBcCisJCSIkdGVzdG5h bWUiIFwKKwkgICAgXSBcCisJXQorCXJ1bl9sZF9saW5rX2V4ZWNfdGVzdHMgW2xpc3QgXAorCSAg ICBbbGlzdCBcCisJCSJSdW4gJHt0ZXN0bmFtZX1hICgkbGRmbGFncyAkY2ZsYWdzKSIgXAorCQki JGxkZmxhZ3MgdG1wZGlyL3ByMjU3NDktYmluLm8iIFwKKwkJIiIgXAorCQlbbGlzdCAkc3JjZmls ZWEgJHNyY2ZpbGViXVwKKwkJIiR7dGVzdG5hbWV9YSIgXAorCQkicGFzcy5vdXQiIFwKKwkJIiRj ZmxhZ3MiIFwKKwkgICAgXSBcCisJXQorICAgIH0gZWxzZSB7CisJcnVuX2NjX2xpbmtfdGVzdHMg W2xpc3QgXAorCSAgICBbbGlzdCBcCisJCSJCdWlsZCAkdGVzdG5hbWUgKCRsZGZsYWdzICRjZmxh Z3MpIiBcCisJCSIkbGRmbGFncyB0bXBkaXIvcHIyNTc0OS1iaW4ubyIgXAorCQkiJGNmbGFncyIg XAorCQlbbGlzdCAkc3JjZmlsZWEgJHNyY2ZpbGViXVwKKwkJW2xpc3QgW2xpc3QgZXJyb3Jfb3V0 cHV0ICRsZGVycm9yXV0gXAorCQkiJHRlc3RuYW1lIiBcCisJICAgIF0gXAorCV0KKyAgICB9Cit9 CisKK2NoZWNrX3ByMjU3NDlhICJwcjI1NzQ5LTFhIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFh LmMiICIkTk9QSUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiICIiCitjaGVja19wcjI1NzQ5YSAi cHIyNTc0OS0xYSIgInByMjU3NDktMS5jIiAicHIyNTc0OS0xYS5jIiAiLWZQSUUiICItcGllIiAi IgorY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMWIiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWIu YyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2lmIHsgW2lzdGFyZ2V0ICJp Pzg2LSotbGludXgqIl0gfSB7CisgICAgY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMWIiICJwcjI1 NzQ5LTEuYyIgInByMjU3NDktMWIuYyIgIi1mUElFIiAiLXBpZSIgIiIKK30gZWxzZSB7CisgICAg Y2hlY2tfcHIyNTc0OWEgInByMjU3NDktMWIiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWIuYyIg Ii1mUElFIiAiLXBpZSIgInByMjU3NDktMWIuZXJyIgorfQorY2hlY2tfcHIyNTc0OWEgInByMjU3 NDktMWMiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWMuYyIgIi1mUElDIiAiLXNoYXJlZCIgInBy MjU3NDktMWIuZXJyIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMmEiICJwcjI1NzQ5LTIuYyIg InByMjU3NDktMmEucyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2NoZWNr X3ByMjU3NDlhICJwcjI1NzQ5LTJhIiAicHIyNTc0OS0yLmMiICJwcjI1NzQ5LTJhLnMiICItZlBJ RSIgIi1waWUiICIiCitjaGVja19wcjI1NzQ5YSAicHIyNTc0OS0yYiIgInByMjU3NDktMi5jIiAi cHIyNTc0OS0yYi5zIiAiJE5PUElFX0NGTEFHUyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tf cHIyNTc0OWEgInByMjU3NDktMmIiICJwcjI1NzQ5LTIuYyIgInByMjU3NDktMmIucyIgIi1mUElF IiAiLXBpZSIgIiIKK2NoZWNrX3ByMjU3NDlhICJwcjI1NzU0LTFhIiAicHIyNTc1NC0xYS5jIiAi cHIyNTc1NC0xYi5zIiAiJE5PUElFX0NGTEFHUyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tf cHIyNTc0OWEgInByMjU3NTQtMWIiICJwcjI1NzU0LTFhLmMiICJwcjI1NzU0LTFiLnMiICItZlBJ RSIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NTQtMWMiICJwcjI1 NzU0LTFhLmMiICJwcjI1NzU0LTFiLnMiICItZlBJQyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hl Y2tfcHIyNTc0OWEgInByMjU3NTQtMWQiICJwcjI1NzU0LTFhLmMiICJwcjI1NzU0LTFiLnMiICIt ZlBJQyIgIi1waWUiICIiCitpZiB7ICFbaXN0YXJnZXQgImk/ODYtKi1saW51eCoiXSAmJiAhW2lz dGFyZ2V0ICJ4ODZfNjQtKi1saW51eCotZ251eDMyIl19IHsKKyAgICBjaGVja19wcjI1NzQ5YSAi cHIyNTc1NC0yYSIgInByMjU3NTQtMmEuYyIgInByMjU3NTQtMmIucyIgIi1mUElDIiAiJE5PUElF X0xERkxBR1MgLVdsLC0tbm8tcmVsYXgiICIiCisgICAgY2hlY2tfcHIyNTc0OWEgInByMjU3NTQt MmIiICJwcjI1NzU0LTJhLmMiICJwcjI1NzU0LTJiLnMiICItZlBJQyIgIi1waWUgLVdsLC0tbm8t cmVsYXgiICIiCisgICAgY2hlY2tfcHIyNTc0OWEgInByMjU3NTQtMmMiICJwcjI1NzU0LTJhLmMi ICJwcjI1NzU0LTJiLnMiICItZlBJQyIgIi1waWUiICJwcjI1NzU0LTJiLmVyciIKK30gZWxzZSB7 CisgICAgY2hlY2tfcHIyNTc0OWEgInByMjU3NTQtM2EiICJwcjI1NzU0LTNhLmMiICJwcjI1NzU0 LTNiLnMiICItZlBJQyIgIiROT1BJRV9MREZMQUdTIiAiIgorICAgIGNoZWNrX3ByMjU3NDlhICJw cjI1NzU0LTNiIiAicHIyNTc1NC0zYS5jIiAicHIyNTc1NC0zYi5zIiAiLWZQSUMiICItcGllIiAi IgorfQorCitwcm9jIGNoZWNrX3ByMjU3NDliIHt0ZXN0bmFtZSBzcmNmaWxlYSBzcmNmaWxlYiBj ZmxhZ3MgbGRmbGFncyBkc29sZGZsYWdzfSB7CisgICAgZ2xvYmFsIG9iamNvcHkKKyAgICBnbG9i YWwgc3JjZGlyCisgICAgZ2xvYmFsIHN1YmRpcgorCisgICAgaWYgeyBbaXN0YXJnZXQgImk/ODYt Ki1saW51eCoiXSB9IHsKKwlzZXQgb3V0cHV0X2FyY2ggImkzODY6aTM4NiIKKwlzZXQgb3V0cHV0 X3RhcmdldCAiZWxmMzItaTM4NiIKKyAgICB9IGVsc2UgeworCXNldCBvdXRwdXRfYXJjaCAiaTM4 Njp4ODYtNjQiCisJaWYge1tpc3RhcmdldCAieDg2XzY0LSotbGludXgqLWdudXgzMiJdfSB7CisJ ICAgIHNldCBvdXRwdXRfdGFyZ2V0ICJlbGYzMi14ODYtNjQiCisJfSBlbHNlIHsKKwkgICAgc2V0 IG91dHB1dF90YXJnZXQgImVsZjY0LXg4Ni02NCIKKwl9CisgICAgfQorCisgICAgZXhlYyBjcCAk c3JjZGlyLyRzdWJkaXIvJHNyY2ZpbGVhICRzcmNmaWxlYQorICAgIHNldCBwcjI1NzQ5X2JpbiAi JG9iamNvcHkgLUIgJG91dHB1dF9hcmNoIC1JIGJpbmFyeSAtTyAkb3V0cHV0X3RhcmdldCAkc3Jj ZmlsZWEgdG1wZGlyL3ByMjU3NDktYmluLm8iCisgICAgc2VuZF9sb2cgIiRwcjI1NzQ5X2Jpblxu IgorICAgIHNldCBnb3QgW3JlbW90ZV9leGVjIGhvc3QgIiRwcjI1NzQ5X2JpbiJdCisgICAgaWYg eyBbbGluZGV4ICRnb3QgMF0gIT0gMCB8fCAhW3N0cmluZyBtYXRjaCAiIiBbbGluZGV4ICRnb3Qg MV1dIH0gdGhlbiB7CisJc2VuZF9sb2cgIiRnb3RcbiIKKwlmYWlsICJDb252ZXJ0ICRzcmNmaWxl YSB0byAkb3V0cHV0X3RhcmdldCIKKwlyZXR1cm4KKyAgICB9CisKKyAgICBydW5fY2NfbGlua190 ZXN0cyBbbGlzdCBcCisJW2xpc3QgXAorCSAgICAiQnVpbGQgbGliJHt0ZXN0bmFtZX0uc28gKCRk c29sZGZsYWdzKSIgXAorCSAgICAiLXNoYXJlZCAkZHNvbGRmbGFncyB0bXBkaXIvcHIyNTc0OS1i aW4ubyIgXAorCSAgICAiLWZQSUMiIFwKKwkgICAgW2xpc3QgJHNyY2ZpbGViXSBcCisJICAgIHt7 cmVhZGVsZiB7LVdyfSBwcjI1NzQ5LnJkfX0gIFwKKwkgICAgImxpYiR7dGVzdG5hbWV9LnNvIiBc CisJXSBcCisgICAgXQorICAgIHJ1bl9sZF9saW5rX2V4ZWNfdGVzdHMgW2xpc3QgXAorCVtsaXN0 IFwKKwkgICAgIlJ1biAke3Rlc3RuYW1lfWIgKCRsZGZsYWdzICRjZmxhZ3MpIiBcCisJICAgICIk bGRmbGFncyAtV2wsLS1uby1hcy1uZWVkZWQgdG1wZGlyL2xpYiR7dGVzdG5hbWV9LnNvIiBcCisJ ICAgICIiIFwKKwkgICAgW2xpc3QgJHNyY2ZpbGVhXVwKKwkgICAgIiR7dGVzdG5hbWV9YiIgXAor CSAgICAicGFzcy5vdXQiIFwKKwkgICAgIiRjZmxhZ3MiIFwKKwldIFwKKyAgICBdCit9CisKK2No ZWNrX3ByMjU3NDliICJwcjI1NzQ5LTFhIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFhLmMiICIk Tk9QSUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiICIiCitjaGVja19wcjI1NzQ5YiAicHIyNTc0 OS0xYSIgInByMjU3NDktMS5jIiAicHIyNTc0OS0xYS5jIiAiLWZQSUUiICItcGllIiAiIgorY2hl Y2tfcHIyNTc0OWIgInByMjU3NDktMWEiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWEuYyIgIi1m UElFIiAiLXBpZSIgIi1XbCwtQnN5bWJvbGljIgorY2hlY2tfcHIyNTc0OWIgInByMjU3NDktMWIi ICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWIuYyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERG TEFHUyIgIiIKK2NoZWNrX3ByMjU3NDliICJwcjI1NzQ5LTFiIiAicHIyNTc0OS0xLmMiICJwcjI1 NzQ5LTFiLmMiICItZlBJRSIgIi1waWUiICIiCitjaGVja19wcjI1NzQ5YiAicHIyNTc0OS0xYiIg InByMjU3NDktMS5jIiAicHIyNTc0OS0xYi5jIiAiLWZQSUUiICItcGllIiAiLVdsLC1Cc3ltYm9s aWMiCitjaGVja19wcjI1NzQ5YiAicHIyNTc0OS0yYSIgInByMjU3NDktMi5jIiAicHIyNTc0OS0y YS5zIiAiJE5PUElFX0NGTEFHUyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tfcHIyNTc0OWIg InByMjU3NDktMmEiICJwcjI1NzQ5LTIuYyIgInByMjU3NDktMmEucyIgIi1mUElFIiAiLXBpZSIg IiIKK2NoZWNrX3ByMjU3NDliICJwcjI1NzQ5LTJiIiAicHIyNTc0OS0yLmMiICJwcjI1NzQ5LTJi LnMiICIkTk9QSUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiICIiCitjaGVja19wcjI1NzQ5YiAi cHIyNTc0OS0yYiIgInByMjU3NDktMi5jIiAicHIyNTc0OS0yYi5zIiAiLWZQSUUiICItcGllIiAi IgpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTEuYyBiL2xkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc0OS0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNWIzN2FmMDhjNgotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYv cHIyNTc0OS0xLmMKQEAgLTAsMCArMSwxMiBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVk ZSA8YmZkX3N0ZGludC5oPgorCitleHRlcm4gaW50cHRyX3Qgc2l6ZSAodm9pZCk7CisKK2ludAor bWFpbiAoKQoreworICBpZiAoc2l6ZSAoKSA9PSAxNDcpCisgICAgcHJpbnRmICgiUEFTU1xuIik7 CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5 LTFhLmMgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWEuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi43NzU2MjNiOGM5Ci0tLSAvZGV2L251bGwKKysrIGIvbGQv dGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFhLmMKQEAgLTAsMCArMSwxMSBAQAorI2luY2x1ZGUg PGJmZF9zdGRpbnQuaD4KKworZXh0ZXJuIHZvaWQgKl9iaW5hcnlfcHIyNTc0OV8xX2Nfc3RhcnQ7 CitleHRlcm4gdm9pZCAqX2JpbmFyeV9wcjI1NzQ5XzFfY19lbmQ7CisKK2ludHB0cl90CitzaXpl ICh2b2lkKQoreworICByZXR1cm4gKChpbnRwdHJfdCkgJl9iaW5hcnlfcHIyNTc0OV8xX2NfZW5k CisJICAtIChpbnRwdHJfdCkgJl9iaW5hcnlfcHIyNTc0OV8xX2Nfc3RhcnQpOworfQpkaWZmIC0t Z2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFiLmMgYi9sZC90ZXN0c3VpdGUvbGQt ZWxmL3ByMjU3NDktMWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5m MDJhNDA4NzAwCi0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5 LTFiLmMKQEAgLTAsMCArMSw5IEBACisjaW5jbHVkZSA8YmZkX3N0ZGludC5oPgorCitleHRlcm4g dm9pZCAqX2JpbmFyeV9wcjI1NzQ5XzFfY19zaXplOworCitpbnRwdHJfdAorc2l6ZSAodm9pZCkK K3sKKyAgcmV0dXJuIChpbnRwdHJfdCkgJl9iaW5hcnlfcHIyNTc0OV8xX2Nfc2l6ZTsKK30KZGlm ZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYi5lcnIgYi9sZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NDktMWIuZXJyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLmJiMzg5MTcyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxm L3ByMjU3NDktMWIuZXJyCkBAIC0wLDAgKzEsMyBAQAorIy4uLgorLio6IC4qIGFnYWluc3QgYWJz b2x1dGUgc3ltYm9sIGBfYmluYXJ5X3ByMjU3NDlfMV9jX3NpemUnIC4qIGlzIGRpc2FsbG93ZWQK KyNwYXNzCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWMuYyBiL2xk L3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLmYyODQ3ZDdmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUv bGQtZWxmL3ByMjU3NDktMWMuYwpAQCAtMCwwICsxLDkgQEAKKyNpbmNsdWRlIDxiZmRfc3RkaW50 Lmg+CisKK2V4dGVybiB2b2lkICpfYmluYXJ5X3ByMjU3NDlfMV9jX3NpemUgX19hdHRyaWJ1dGVf XyAoKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CisKK2ludHB0cl90CitzaXplICh2b2lkKQorewor ICByZXR1cm4gKGludHB0cl90KSAmX2JpbmFyeV9wcjI1NzQ5XzFfY19zaXplOworfQpkaWZmIC0t Z2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTIuYyBiL2xkL3Rlc3RzdWl0ZS9sZC1l bGYvcHIyNTc0OS0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODIw YmViYzE2NwotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0y LmMKQEAgLTAsMCArMSwxMiBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8YmZkX3N0 ZGludC5oPgorCitleHRlcm4gaW50cHRyX3Qgc2l6ZTsKKworaW50CittYWluICgpCit7CisgIGlm IChzaXplID09IDEzNykKKyAgICBwcmludGYgKCJQQVNTXG4iKTsKKyAgcmV0dXJuIDA7Cit9CmRp ZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMmEucyBiL2xkL3Rlc3RzdWl0 ZS9sZC1lbGYvcHIyNTc0OS0yYS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLmRmNDg2ZmUzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3By MjU3NDktMmEucwpAQCAtMCwwICsxLDYgQEAKKwkuZGF0YQorCS5nbG9ibAlzaXplCisJLnR5cGUJ c2l6ZSwgJW9iamVjdAorc2l6ZToKKwkuZGMuYQlfYmluYXJ5X3ByMjU3NDlfMl9jX3NpemUKKwku c2l6ZSBzaXplLCAuLXNpemUKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0 OS0yYi5zIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJiLnMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYmE4MmM0NTBiYwotLS0gL2Rldi9udWxsCisrKyBiL2xk L3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yYi5zCkBAIC0wLDAgKzEsNyBAQAorCS5kYXRhCisJ LmhpZGRlbiBfYmluYXJ5X3ByMjU3NDlfMl9jX3NpemUKKwkuZ2xvYmwJc2l6ZQorCS50eXBlCXNp emUsICVvYmplY3QKK3NpemU6CisJLmRjLmEJX2JpbmFyeV9wcjI1NzQ5XzJfY19zaXplCisJLnNp emUgc2l6ZSwgLi1zaXplCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDku cmQgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDkucmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uZmJjNjhiZjI2OAotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc0OS5yZApAQCAtMCwwICsxLDQgQEAKKyNmYWlsaWYKKyMuLi4KK1sw LTlhLWYgXStSXy4qX05PTkUuKgorIy4uLgpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVs Zi9wcjI1NzU0LTFhLmMgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMWEuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yNjZhMWUzNjBiCi0tLSAvZGV2L251bGwK KysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTFhLmMKQEAgLTAsMCArMSwxOSBAQAor I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8YmZkX3N0ZGludC5oPgorCitleHRlcm4gaW50 cHRyX3QgYmFyOworCitpbnRwdHJfdCAqCitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsIG5vY2xv bmUpKQorZ2V0X2JhciAodm9pZCkKK3sKKyAgcmV0dXJuICZiYXI7Cit9CisKK2ludAorbWFpbiAo KQoreworICBpZiAoKGludHB0cl90KSBnZXRfYmFyICgpID09IDQyKQorICAgIHByaW50ZiAoIlBB U1NcbiIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYv cHIyNTc1NC0xYi5zIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTFiLnMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOTlkNTg1ZDZiNQotLS0gL2Rldi9udWxsCisr KyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0xYi5zCkBAIC0wLDAgKzEsMyBAQAorCS5k YXRhCisJLmdsb2JhbCBiYXIKKwliYXIgPSA0MgpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xk LWVsZi9wcjI1NzU0LTJhLmMgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMmEuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wOTk3OTc2NzJhCi0tLSAvZGV2L251 bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTJhLmMKQEAgLTAsMCArMSwxOSBA QAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8YmZkX3N0ZGludC5oPgorCitleHRlcm4g aW50cHRyX3QgYmFyOworCitpbnRwdHJfdCAqCitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsIG5v Y2xvbmUpKQorZ2V0X2JhciAodm9pZCkKK3sKKyAgcmV0dXJuICZiYXI7Cit9CisKK2ludAorbWFp biAoKQoreworICBpZiAoKGludHB0cl90KSBnZXRfYmFyICgpID09IC0weDgwMDAwMDAxTCkKKyAg ICBwcmludGYgKCJQQVNTXG4iKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9sZC90ZXN0 c3VpdGUvbGQtZWxmL3ByMjU3NTQtMmIuZXJyIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0 LTJiLmVycgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jMTczMTIyZWUz Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTJiLmVycgpA QCAtMCwwICsxLDMgQEAKKyMuLi4KKy4qOiBmYWlsZWQgdG8gY29udmVydCBHT1RQQ1JFTCByZWxv Y2F0aW9uOyByZWxpbmsgd2l0aCAtLW5vLXJlbGF4CisjcGFzcwpkaWZmIC0tZ2l0IGEvbGQvdGVz dHN1aXRlL2xkLWVsZi9wcjI1NzU0LTJiLnMgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQt MmIucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hYWQzZTQ1ZTBmCi0t LSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTJiLnMKQEAgLTAs MCArMSwzIEBACisJLmRhdGEKKwkuZ2xvYmFsIGJhcgorCWJhciA9IC0weDgwMDAwMDAxCmRpZmYg LS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtM2EuYyBiL2xkL3Rlc3RzdWl0ZS9s ZC1lbGYvcHIyNTc1NC0zYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjcyYzYyMGM4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3 NTQtM2EuYwpAQCAtMCwwICsxLDE5IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxi ZmRfc3RkaW50Lmg+CisKK2V4dGVybiBpbnRwdHJfdCBiYXI7CisKK2ludHB0cl90ICoKK19fYXR0 cmlidXRlX18gKChub2lubGluZSwgbm9jbG9uZSkpCitnZXRfYmFyICh2b2lkKQoreworICByZXR1 cm4gJmJhcjsKK30KKworaW50CittYWluICgpCit7CisgIGlmICgoaW50cHRyX3QpIGdldF9iYXIg KCkgPT0gMHhmZmZmZmZmMFUpCisgICAgcHJpbnRmICgiUEFTU1xuIik7CisgIHJldHVybiAwOwor fQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTNiLnMgYi9sZC90ZXN0 c3VpdGUvbGQtZWxmL3ByMjU3NTQtM2IucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi45Y2FiOTkzMDNlCi0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVs Zi9wcjI1NzU0LTNiLnMKQEAgLTAsMCArMSwzIEBACisJLmRhdGEKKwkuZ2xvYmFsIGJhcgorCWJh ciA9IDB4ZmZmZmZmZjAKLS0gCjIuMjUuMQoK --0000000000006c55d505a23251ef--