From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd41.google.com (mail-io1-xd41.google.com [IPv6:2607:f8b0:4864:20::d41]) by sourceware.org (Postfix) with ESMTPS id 0D3BA385BF83 for ; Tue, 31 Mar 2020 23:26:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0D3BA385BF83 Received: by mail-io1-xd41.google.com with SMTP id x9so17203942iom.10 for ; Tue, 31 Mar 2020 16:26:01 -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=r8WOCKkwMKzHZ7ZWwytpdSIJCCN2rzaU9s5KRUjTB2s=; b=MGyM0exLcgs7Z5wnYcZ/EfziicBsiNBa4bjmq85JGOURCioc9SXD3KD1vN8dBizq3/ hjZ5CfzW5fqeBfRcz8QDi+ckhWoP7lSJevjyBlNIJWERZoOSRAhzoGLizJx5oqciuwJX PNJfSfGitnsAjOx0h6YsP7nbI2mJuNLpChlNM0dSjMjxWASftBX0qgwjhsgq7Mtiixm9 a9SNMMu4O4GB0eFkVcKEWtkSTsDdlQZJnYvTFGj4dZjvRt3uM0JiDCeOxN2rsPKSkISR Ortb9ntccJfogyzqG/Rn4C2PPAyxA3KcYWpb/SRbsW7wNaA7HofLcLbf0VOiGUAQVmmC 2HWA== X-Gm-Message-State: ANhLgQ3OMpZzZzWMbS7TO7BVK/iL59NrbKxYmQ7EB8Z5QVD2e9OE7Zzt kq3AfbBpDEuWaOIvgevAsI96Sqvx81P5Pmg1kPa6hb9B X-Google-Smtp-Source: ADFU+vszhLZM/b7xOXffBrHZKBdAXn6SnKVypyMUp7JJuDf7l7ZQ3D9uNgT9zSc+VoaqJVM/sY9GuSOFTaLGu32gLxw= X-Received: by 2002:a5e:c70b:: with SMTP id f11mr17656723iop.28.1585697160366; Tue, 31 Mar 2020 16:26:00 -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 16:25:24 -0700 Message-ID: Subject: V3 [PATCH] x86: Only allow S - A relocations against absolute symbol To: Fangrui Song Cc: "H.J. Lu via Binutils" Content-Type: multipart/mixed; boundary="000000000000f7a92705a22ee376" X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, 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: Tue, 31 Mar 2020 23:26:16 -0000 --000000000000f7a92705a22ee376 Content-Type: text/plain; charset="UTF-8" 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 -- H.J. --000000000000f7a92705a22ee376 Content-Type: application/x-patch; 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_k8gj3k3h0 RnJvbSA0ODdiNDIwYzM0ODdmMjQyZTM4NjQxMjkxNzllZjMxMjM4ZjI4M2Q3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMzAgTWFyIDIwMjAgMTg6MzY6MzkgLTA3MDAKU3ViamVjdDogW1BBVENIXSB4ODY6IE9u bHkgYWxsb3cgUyArIEEgcmVsb2NhdGlvbnMgYWdhaW5zdCBhYnNvbHV0ZSBzeW1ib2wKClNpbmNl IHZhbHVlIG9mIG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wgKFNITl9BQlMpIHdvbid0 IGNoYW5nZSwKb25seSByZWxvY2F0aW9ucyBhZ2FpbnN0IG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0 ZSBzeW1ib2wsIHdoaWNoIGNhbiBiZQpyZXNvbHZlZCBhcyBhYnNvbHV0ZSB2YWx1ZSArIGFkZGVu ZCwgYXJlIGFsbG93ZWQgaW4gUElFIGFuZCBzaGFyZWQKbGlicmFyeS4gIEFsc28gY29udmVydCBs b2FkIHJlbG9jYXRpb24gdG8gUl8zODZfMzIsIFJfWDg2XzY0XzMyUyBvcgpSX1g4Nl82NF8zMiBm b3IgcmVsb2NhdGlvbiBhZ2FpbnN0IG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wuCgpi ZmQvCgoJUFIgbGQvMjU3NDkKCVBSIGxkLzI1NzU0CgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZf Y29udmVydF9sb2FkX3JlbG9jKTogQ29udmVydCBsb2FkCglyZWxvY2F0aW9uIHRvIFJfMzg2XzMy IGZvciByZWxvY2F0aW9uIGFnYWluc3Qgbm9uLXByZWVtcHRpYmxlCglhYnNvbHV0ZSBzeW1ib2wu CgkoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogQ2FsbAoJX2JmZF9lbGZfeDg2X3ZhbGlkX3JlbG9j X3AuICBEb24ndCBhbGxvY2F0ZSBkeW5hbWljIHJlbG9jYXRpb24KCWZvciBub24tcHJlZW1wdGli bGUgYWJzb2x1dGUgc3ltYm9sLgoJKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBQYXNzIHNl YyB0bwoJR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AuCgkqIGVsZjY0LXg4Ni02NC5jIChS X1g4Nl82NF9jb252ZXJ0ZWRfcmVsb2NfYml0KTogTW92ZWQuCgkoZWxmX3g4Nl82NF9jb252ZXJ0 X2xvYWRfcmVsb2MpOiBDb3ZlcnQgbG9hZCByZWxvY2F0aW9uIHRvCglSX1g4Nl82NF8zMlMgb3Ig Ul9YODZfNjRfMzIgZm9yIHJlbG9jYXRpb24gYWdhaW5zdCBub24tcHJlZW1wdGlibGUKCWFic29s dXRlIHN5bWJvbC4KCShlbGZfeDg2XzY0X2NoZWNrX3JlbG9jcyk6IENhbGwKCV9iZmRfZWxmX3g4 Nl92YWxpZF9yZWxvY19wLiAgRG9uJ3QgYWxsb2NhdGUgZHluYW1pYyByZWxvY2F0aW9uCglmb3Ig bm9uLXByZWVtcHRpYmxlIGFic29sdXRlIHN5bWJvbC4KCShlbGZfeDg2XzY0X3JlbG9jYXRlX3Nl Y3Rpb24pOiBQYXNzIHNlYyB0bwoJR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AuCgkqIGVs Znh4LXg4Ni5jIChfYmZkX2VsZl94ODZfdmFsaWRfcmVsb2NfcCk6IE5ldyBmdW5jdGlvbi4KCSog ZWxmeHgteDg2LmggKEdFTkVSQVRFX0RZTkFNSUNfUkVMT0NBVElPTl9QKTogQWRkIGFuIFNFQwoJ YXJndW1lbnQuICBEb24ndCBnZW5lcmF0ZSBkeW5hbWljIHJlbG9jYXRpb24gYWdhaW5zdAoJbm9u LXByZWVtcHRpYmxlIGFic29sdXRlIHN5bWJvbC4KCShfYmZkX2VsZl94ODZfdmFsaWRfcmVsb2Nf cCk6IE5ldy4KCShSX1g4Nl82NF9jb252ZXJ0ZWRfcmVsb2NfYml0KTogTGlrZXdpc2UuCgpsZC8K CglQUiBsZC8yNTc0OQoJUFIgbGQvMjU3NTQKCSogdGVzdHN1aXRlL2xkLWVsZi9saW51eC14ODYu ZXhwOiBSdW4gbGQvMjU3NDkgdGVzdHMuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xLmM6 IE5ldyBmaWxlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWEuYzogTGlrZXdpc2UuCgkq IHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYi5jOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL2xk LWVsZi9wcjI1NzQ5LTFiLmVycjogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0 OS0xYy5jOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTIuYzogTGlrZXdp c2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yYS5zOiBMaWtld2lzZS4KCSogdGVzdHN1 aXRlL2xkLWVsZi9wcjI1NzQ5LTJiLnM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3By MjU3NDkucmQ6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMWEuYzogTGlr ZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0xYi5zOiBMaWtld2lzZS4KLS0tCiBi ZmQvZWxmMzItaTM4Ni5jICAgICAgICAgICAgICAgICAgIHwgIDQwICsrKysrLS0tCiBiZmQvZWxm NjQteDg2LTY0LmMgICAgICAgICAgICAgICAgIHwgIDMxICsrKysrLS0KIGJmZC9lbGZ4eC14ODYu YyAgICAgICAgICAgICAgICAgICAgfCAgODkgKysrKysrKysrKysrKysrKysrCiBiZmQvZWxmeHgt eDg2LmggICAgICAgICAgICAgICAgICAgIHwgIDE2ICsrKy0KIGxkL3Rlc3RzdWl0ZS9sZC1lbGYv bGludXgteDg2LmV4cCAgfCAxNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxkL3Rl c3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xLmMgICAgfCAgMTIgKysrCiBsZC90ZXN0c3VpdGUvbGQt ZWxmL3ByMjU3NDktMWEuYyAgIHwgIDExICsrKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5 LTFiLmMgICB8ICAgOSArKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFiLmVyciB8ICAg MyArCiBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWMuYyAgIHwgICA5ICsrCiBsZC90ZXN0 c3VpdGUvbGQtZWxmL3ByMjU3NDktMi5jICAgIHwgIDEyICsrKwogbGQvdGVzdHN1aXRlL2xkLWVs Zi9wcjI1NzQ5LTJhLnMgICB8ICAgNiArKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJi LnMgICB8ICAgNyArKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LnJkICAgICB8ICAgNCAr CiBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMWEuYyAgIHwgIDE5ICsrKysKIGxkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc1NC0xYi5zICAgfCAgIDMgKwogMTYgZmlsZXMgY2hhbmdlZCwgMzky IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rl c3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NDktMWEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9s ZC1lbGYvcHIyNTc0OS0xYi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVs Zi9wcjI1NzQ5LTFiLmVycgogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYv cHIyNTc0OS0xYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1 NzQ5LTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0y YS5zCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJiLnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDkucmQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMWEuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0xYi5zCgpkaWZmIC0tZ2l0IGEv YmZkL2VsZjMyLWkzODYuYyBiL2JmZC9lbGYzMi1pMzg2LmMKaW5kZXggZWI3ZTFmOGIzNC4uMjBk ZmE0YjRmNCAxMDA2NDQKLS0tIGEvYmZkL2VsZjMyLWkzODYuYworKysgYi9iZmQvZWxmMzItaTM4 Ni5jCkBAIC0xMjI2LDYgKzEyMjYsNyBAQCBlbGZfaTM4Nl9jb252ZXJ0X2xvYWRfcmVsb2MgKGJm ZCAqYWJmZCwgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHIsCiAgIGJmZF92bWEgbm9wX29m ZnNldDsKICAgYmZkX2Jvb2xlYW4gaXNfcGljOwogICBiZmRfYm9vbGVhbiB0b19yZWxvY18zMjsK KyAgYmZkX2Jvb2xlYW4gYWJzX3N5bWJvbDsKICAgdW5zaWduZWQgaW50IHJfdHlwZTsKICAgdW5z aWduZWQgaW50IHJfc3ltbmR4OwogICBiZmRfdm1hIHJvZmYgPSBpcmVsLT5yX29mZnNldDsKQEAg LTEyNDksNiArMTI1MCwyMSBAQCBlbGZfaTM4Nl9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJm ZCwgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHIsCiAgIG1vZHJtID0gYmZkX2dldF84IChh YmZkLCBjb250ZW50cyArIHJvZmYgLSAxKTsKICAgYmFzZWxlc3MgPSAobW9kcm0gJiAweGM3KSA9 PSAweDU7CiAKKyAgaWYgKGgpCisgICAgeworICAgICAgLyogTkI6IEFsc28gc2V0IGxpbmtlcl9k ZWYgdmlhIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMX1AuICAqLworICAgICAgbG9jYWxfcmVmID0g U1lNQk9MX1JFRkVSRU5DRVNfTE9DQUxfUCAobGlua19pbmZvLCBoKTsKKyAgICAgIGlzeW0gPSBO VUxMOworICAgICAgYWJzX3N5bWJvbCA9IGJmZF9pc19hYnNfc3ltYm9sICgmaC0+cm9vdCk7Cisg ICAgfQorICBlbHNlCisgICAgeworICAgICAgbG9jYWxfcmVmID0gVFJVRTsKKyAgICAgIGlzeW0g PSBiZmRfc3ltX2Zyb21fcl9zeW1uZHggKCZodGFiLT5zeW1fY2FjaGUsIGFiZmQsCisJCQkJICAg IHJfc3ltbmR4KTsKKyAgICAgIGFic19zeW1ib2wgPSBpc3ltLT5zdF9zaG5keCA9PSBTSE5fQUJT OworICAgIH0KKwogICBpZiAoYmFzZWxlc3MgJiYgaXNfcGljKQogICAgIHsKICAgICAgIC8qIEZv ciBQSUMsIGRpc2FsbG93IFJfMzg2X0dPVDMyWCB3aXRob3V0IGEgYmFzZSByZWdpc3RlcgpAQCAt MTI1NiwxMSArMTI3Miw3IEBAIGVsZl9pMzg2X2NvbnZlcnRfbG9hZF9yZWxvYyAoYmZkICphYmZk LCBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkciwKICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7 CiAKICAgICAgIGlmIChoID09IE5VTEwpCi0JewotCSAgaXN5bSA9IGJmZF9zeW1fZnJvbV9yX3N5 bW5keCAoJmh0YWItPnN5bV9jYWNoZSwgYWJmZCwKLQkJCQkJcl9zeW1uZHgpOwotCSAgbmFtZSA9 IGJmZF9lbGZfc3ltX25hbWUgKGFiZmQsIHN5bXRhYl9oZHIsIGlzeW0sIE5VTEwpOwotCX0KKwlu YW1lID0gYmZkX2VsZl9zeW1fbmFtZSAoYWJmZCwgc3ltdGFiX2hkciwgaXN5bSwgTlVMTCk7CiAg ICAgICBlbHNlCiAJbmFtZSA9IGgtPnJvb3Qucm9vdC5zdHJpbmc7CiAKQEAgLTEyOTQsOSArMTMw Niw2IEBAIGVsZl9pMzg2X2NvbnZlcnRfbG9hZF9yZWxvYyAoYmZkICphYmZkLCBFbGZfSW50ZXJu YWxfU2hkciAqc3ltdGFiX2hkciwKIAlnb3RvIGNvbnZlcnRfbG9hZDsKICAgICB9CiAKLSAgLyog TkI6IEFsc28gc2V0IGxpbmtlcl9kZWYgdmlhIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMX1AuICAq LwotICBsb2NhbF9yZWYgPSBTWU1CT0xfUkVGRVJFTkNFU19MT0NBTF9QIChsaW5rX2luZm8sIGgp OwotCiAgIC8qIFVuZGVmaW5lZCB3ZWFrIHN5bWJvbCBpcyBvbmx5IGJvdW5kIGxvY2FsbHkgaW4g ZXhlY3V0YWJsZQogICAgICBhbmQgaXRzIHJlZmVyZW5jZSBpcyByZXNvbHZlZCBhcyAwLiAgKi8K ICAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhawpAQCAtMTM5Niw2 ICsxNDA1LDkgQEAgZWxmX2kzODZfY29udmVydF9sb2FkX3JlbG9jIChiZmQgKmFiZmQsIEVsZl9J bnRlcm5hbF9TaGRyICpzeW10YWJfaGRyLAogCWNvbnZlcnRfbG9hZDoKIAkgIGlmIChvcGNvZGUg PT0gMHg4YikKIAkgICAgeworCSAgICAgIGlmIChhYnNfc3ltYm9sICYmIGxvY2FsX3JlZikKKwkJ dG9fcmVsb2NfMzIgPSBUUlVFOworCiAJICAgICAgaWYgKHRvX3JlbG9jXzMyKQogCQl7CiAJCSAg LyogQ29udmVydCAibW92IGZvb0BHT1RbKCVyZWcxKV0sICVyZWcyIiB0bwpAQCAtMTUxOSw2ICsx NTMxLDcgQEAgZWxmX2kzODZfY2hlY2tfcmVsb2NzIChiZmQgKmFiZmQsCiAgICAgICBFbGZfSW50 ZXJuYWxfU3ltICppc3ltOwogICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgIGJmZF9ib29s ZWFuIHNpemVfcmVsb2M7CisgICAgICBiZmRfYm9vbGVhbiBub19keW5yZWxvYzsKIAogICAgICAg cl9zeW1uZHggPSBFTEYzMl9SX1NZTSAocmVsLT5yX2luZm8pOwogICAgICAgcl90eXBlID0gRUxG MzJfUl9UWVBFIChyZWwtPnJfaW5mbyk7CkBAIC0xNTg3LDYgKzE2MDAsMTAgQEAgZWxmX2kzODZf Y2hlY2tfcmVsb2NzIChiZmQgKmFiZmQsCiAJICAgIGdvdG8gZXJyb3JfcmV0dXJuOwogCX0KIAor ICAgICAgaWYgKCFfYmZkX2VsZl94ODZfdmFsaWRfcmVsb2NfcCAoc2VjLCBpbmZvLCBodGFiLCBy ZWwsIGgsIGlzeW0sCisJCQkJICAgICAgIHN5bXRhYl9oZHIsICZub19keW5yZWxvYykpCisJcmV0 dXJuIEZBTFNFOworCiAgICAgICBpZiAoISBlbGZfaTM4Nl90bHNfdHJhbnNpdGlvbiAoaW5mbywg YWJmZCwgc2VjLCBjb250ZW50cywKIAkJCQkgICAgIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCiAJ CQkJICAgICAmcl90eXBlLCBHT1RfVU5LTk9XTiwKQEAgLTE4MjcsOCArMTg0NCw5IEBAIGVsZl9p Mzg2X2NoZWNrX3JlbG9jcyAoYmZkICphYmZkLAogCiAJICBzaXplX3JlbG9jID0gRkFMU0U7CiAJ ZG9fc2l6ZToKLQkgIGlmIChORUVEX0RZTkFNSUNfUkVMT0NBVElPTl9QIChpbmZvLCBGQUxTRSwg aCwgc2VjLCByX3R5cGUsCi0JCQkJCSBSXzM4Nl8zMikpCisJICBpZiAoIW5vX2R5bnJlbG9jCisJ ICAgICAgJiYgTkVFRF9EWU5BTUlDX1JFTE9DQVRJT05fUCAoaW5mbywgRkFMU0UsIGgsIHNlYywg cl90eXBlLAorCQkJCQkgICAgUl8zODZfMzIpKQogCSAgICB7CiAJICAgICAgc3RydWN0IGVsZl9k eW5fcmVsb2NzICpwOwogCSAgICAgIHN0cnVjdCBlbGZfZHluX3JlbG9jcyAqKmhlYWQ7CkBAIC0y NzA0LDcgKzI3MjIsNyBAQCBlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9i ZmQsCiAJICAgICAgfHwgaXNfdnh3b3Jrc190bHMpCiAJICAgIGJyZWFrOwogCi0JICBpZiAoR0VO RVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8sIGVoLCByX3R5cGUsCisJICBpZiAoR0VO RVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8sIGVoLCByX3R5cGUsIHNlYywKIAkJCQkJ ICAgICBGQUxTRSwgcmVzb2x2ZWRfdG9femVybywKIAkJCQkJICAgICAocl90eXBlID09IFJfMzg2 X1BDMzIpKSkKIAkgICAgewpkaWZmIC0tZ2l0IGEvYmZkL2VsZjY0LXg4Ni02NC5jIGIvYmZkL2Vs ZjY0LXg4Ni02NC5jCmluZGV4IDkwZTI3MDIzMzQuLjY4ZjAwYzE5NzMgMTAwNjQ0Ci0tLSBhL2Jm ZC9lbGY2NC14ODYtNjQuYworKysgYi9iZmQvZWxmNjQteDg2LTY0LmMKQEAgLTE5Niw5ICsxOTYs NiBAQCBzdGF0aWMgcmVsb2NfaG93dG9fdHlwZSB4ODZfNjRfZWxmX2hvd3RvX3RhYmxlW10gPQog CUZBTFNFKQogfTsKIAotLyogU2V0IGlmIGEgcmVsb2NhdGlvbiBpcyBjb252ZXJ0ZWQgZnJvbSBh IEdPVFBDUkVMIHJlbG9jYXRpb24uICAqLwotI2RlZmluZSBSX1g4Nl82NF9jb252ZXJ0ZWRfcmVs b2NfYml0ICgxIDw8IDcpCi0KICNkZWZpbmUgWDg2X1BDUkVMX1RZUEVfUChUWVBFKQkJXAogICAo ICAgKChUWVBFKSA9PSBSX1g4Nl82NF9QQzgpCQlcCiAgICB8fCAoKFRZUEUpID09IFJfWDg2XzY0 X1BDMTYpCQlcCkBAIC0xNTA5LDYgKzE1MDYsOCBAQCBlbGZfeDg2XzY0X2NvbnZlcnRfbG9hZF9y ZWxvYyAoYmZkICphYmZkLAogICBiZmRfYm9vbGVhbiBub19vdmVyZmxvdzsKICAgYmZkX2Jvb2xl YW4gcmVsb2N4OwogICBiZmRfYm9vbGVhbiB0b19yZWxvY19wYzMyOworICBiZmRfYm9vbGVhbiBh YnNfc3ltYm9sOworICBiZmRfYm9vbGVhbiBsb2NhbF9yZWY7CiAgIGFzZWN0aW9uICp0c2VjOwog ICBiZmRfc2lnbmVkX3ZtYSByYWRkZW5kOwogICB1bnNpZ25lZCBpbnQgb3Bjb2RlOwpAQCAtMTU1 OSw2ICsxNTU4LDggQEAgZWxmX3g4Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJmZCwK IAkJICAgfHwgbm9fb3ZlcmZsb3cKIAkJICAgfHwgaXNfcGljKTsKIAorICBhYnNfc3ltYm9sID0g RkFMU0U7CisKICAgLyogR2V0IHRoZSBzeW1ib2wgcmVmZXJyZWQgdG8gYnkgdGhlIHJlbG9jLiAg Ki8KICAgaWYgKGggPT0gTlVMTCkKICAgICB7CkBAIC0xNTY5LDggKzE1NzAsMTIgQEAgZWxmX3g4 Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJmZCwKICAgICAgIGlmIChpc3ltLT5zdF9z aG5keCA9PSBTSE5fVU5ERUYpCiAJcmV0dXJuIFRSVUU7CiAKKyAgICAgIGxvY2FsX3JlZiA9IFRS VUU7CiAgICAgICBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX0FCUykKLQl0c2VjID0gYmZkX2Fi c19zZWN0aW9uX3B0cjsKKwl7CisJICB0c2VjID0gYmZkX2Fic19zZWN0aW9uX3B0cjsKKwkgIGFi c19zeW1ib2wgPSBUUlVFOworCX0KICAgICAgIGVsc2UgaWYgKGlzeW0tPnN0X3NobmR4ID09IFNI Tl9DT01NT04pCiAJdHNlYyA9IGJmZF9jb21fc2VjdGlvbl9wdHI7CiAgICAgICBlbHNlIGlmIChp c3ltLT5zdF9zaG5keCA9PSBTSE5fWDg2XzY0X0xDT01NT04pCkBAIC0xNTg2LDkgKzE1OTEsMTAg QEAgZWxmX3g4Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJmZCwKIAkgR09UUENSRUxY IHJlbG9jYXRpb25zIHNpbmNlIHdlIG5lZWQgdG8gbW9kaWZ5IFJFWCBieXRlLgogCSBJdCBpcyBP SyBjb252ZXJ0IG1vdiB3aXRoIFJfWDg2XzY0X0dPVFBDUkVMIHRvCiAJIFJfWDg2XzY0X1BDMzIu ICAqLwotICAgICAgYmZkX2Jvb2xlYW4gbG9jYWxfcmVmOwogICAgICAgc3RydWN0IGVsZl94ODZf bGlua19oYXNoX2VudHJ5ICplaCA9IGVsZl94ODZfaGFzaF9lbnRyeSAoaCk7CiAKKyAgICAgIGFi c19zeW1ib2wgPSBiZmRfaXNfYWJzX3N5bWJvbCAoJmgtPnJvb3QpOworCiAgICAgICAvKiBOQjog QWxzbyBzZXQgbGlua2VyX2RlZiB2aWEgU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUxfUC4gICovCiAg ICAgICBsb2NhbF9yZWYgPSBTWU1CT0xfUkVGRVJFTkNFU19MT0NBTF9QIChsaW5rX2luZm8sIGgp OwogICAgICAgaWYgKChyZWxvY3ggfHwgb3Bjb2RlID09IDB4OGIpCkBAIC0xNzI4LDYgKzE3MzQs OSBAQCBlbGZfeDg2XzY0X2NvbnZlcnRfbG9hZF9yZWxvYyAoYmZkICphYmZkLAogCiAgICAgICBp ZiAob3Bjb2RlID09IDB4OGIpCiAJeworCSAgaWYgKGFic19zeW1ib2wgJiYgbG9jYWxfcmVmKQor CSAgICB0b19yZWxvY19wYzMyID0gRkFMU0U7CisKIAkgIGlmICh0b19yZWxvY19wYzMyKQogCSAg ICB7CiAJICAgICAgLyogQ29udmVydCAibW92IGZvb0BHT1RQQ1JFTCglcmlwKSwgJXJlZyIgdG8K QEAgLTE4NzksNiArMTg4OCw3IEBAIGVsZl94ODZfNjRfY2hlY2tfcmVsb2NzIChiZmQgKmFiZmQs IHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAogICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAg ICAgIGJmZF9ib29sZWFuIHNpemVfcmVsb2M7CiAgICAgICBiZmRfYm9vbGVhbiBjb252ZXJ0ZWRf cmVsb2M7CisgICAgICBiZmRfYm9vbGVhbiBub19keW5yZWxvYzsKIAogICAgICAgcl9zeW1uZHgg PSBodGFiLT5yX3N5bSAocmVsLT5yX2luZm8pOwogICAgICAgcl90eXBlID0gRUxGMzJfUl9UWVBF IChyZWwtPnJfaW5mbyk7CkBAIC0xOTgzLDYgKzE5OTMsMTAgQEAgZWxmX3g4Nl82NF9jaGVja19y ZWxvY3MgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAJICAgIGNvbnZl cnRlZCA9IFRSVUU7CiAJfQogCisgICAgICBpZiAoIV9iZmRfZWxmX3g4Nl92YWxpZF9yZWxvY19w IChzZWMsIGluZm8sIGh0YWIsIHJlbCwgaCwgaXN5bSwKKwkJCQkgICAgICAgc3ltdGFiX2hkciwg Jm5vX2R5bnJlbG9jKSkKKwlyZXR1cm4gRkFMU0U7CisKICAgICAgIGlmICghIGVsZl94ODZfNjRf dGxzX3RyYW5zaXRpb24gKGluZm8sIGFiZmQsIHNlYywgY29udGVudHMsCiAJCQkJICAgICAgIHN5 bXRhYl9oZHIsIHN5bV9oYXNoZXMsCiAJCQkJICAgICAgICZyX3R5cGUsIEdPVF9VTktOT1dOLApA QCAtMjI0NSw4ICsyMjU5LDkgQEAgZWxmX3g4Nl82NF9jaGVja19yZWxvY3MgKGJmZCAqYWJmZCwg c3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAKIAkgIHNpemVfcmVsb2MgPSBGQUxTRTsKIAlk b19zaXplOgotCSAgaWYgKE5FRURfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8sIFRSVUUsIGgs IHNlYywgcl90eXBlLAotCQkJCQkgaHRhYi0+cG9pbnRlcl9yX3R5cGUpKQorCSAgaWYgKCFub19k eW5yZWxvYworCSAgICAgICYmIE5FRURfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8sIFRSVUUs IGgsIHNlYywgcl90eXBlLAorCQkJCQkgICAgaHRhYi0+cG9pbnRlcl9yX3R5cGUpKQogCSAgICB7 CiAJICAgICAgc3RydWN0IGVsZl9keW5fcmVsb2NzICpwOwogCSAgICAgIHN0cnVjdCBlbGZfZHlu X3JlbG9jcyAqKmhlYWQ7CkBAIC0zMTc1LDcgKzMxOTAsNyBAQCBlbGZfeDg2XzY0X3JlbG9jYXRl X3NlY3Rpb24gKGJmZCAqb3V0cHV0X2JmZCwKIAkJCQkgICAgJiYgKFg4Nl9QQ1JFTF9UWVBFX1Ag KHJfdHlwZSkKIAkJCQkJfHwgWDg2X1NJWkVfVFlQRV9QIChyX3R5cGUpKSk7CiAKLQkgIGlmIChH RU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJT05fUCAoaW5mbywgZWgsIHJfdHlwZSwKKwkgIGlmIChH RU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJT05fUCAoaW5mbywgZWgsIHJfdHlwZSwgc2VjLAogCQkJ CQkgICAgIG5lZWRfY29weV9yZWxvY19pbl9waWUsCiAJCQkJCSAgICAgcmVzb2x2ZWRfdG9femVy bywgRkFMU0UpKQogCSAgICB7CmRpZmYgLS1naXQgYS9iZmQvZWxmeHgteDg2LmMgYi9iZmQvZWxm eHgteDg2LmMKaW5kZXggMTA4ZTA0YTE1OC4uNzI4NDk3YzY4ZSAxMDA2NDQKLS0tIGEvYmZkL2Vs Znh4LXg4Ni5jCisrKyBiL2JmZC9lbGZ4eC14ODYuYwpAQCAtOTUyLDYgKzk1Miw5NSBAQCBfYmZk X3g4Nl9lbGZfbGlua19jaGVja19yZWxvY3MgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2lu Zm8gKmluZm8pCiAgIHJldHVybiBfYmZkX2VsZl9saW5rX2NoZWNrX3JlbG9jcyAoYWJmZCwgaW5m byk7CiB9CiAKK2JmZF9ib29sZWFuCitfYmZkX2VsZl94ODZfdmFsaWRfcmVsb2NfcCAoYXNlY3Rp b24gKmlucHV0X3NlY3Rpb24sCisJCQkgICAgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCisJ CQkgICAgc3RydWN0IGVsZl94ODZfbGlua19oYXNoX3RhYmxlICpodGFiLAorCQkJICAgIGNvbnN0 IEVsZl9JbnRlcm5hbF9SZWxhICpyZWwsCisJCQkgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50 cnkgKmgsCisJCQkgICAgRWxmX0ludGVybmFsX1N5bSAqc3ltLAorCQkJICAgIEVsZl9JbnRlcm5h bF9TaGRyICpzeW10YWJfaGRyLAorCQkJICAgIGJmZF9ib29sZWFuICpub19keW5yZWxvY19wKQor eworICBiZmRfYm9vbGVhbiB2YWxpZF9wID0gVFJVRTsKKworICAqbm9fZHlucmVsb2NfcCA9IEZB TFNFOworCisgIC8qIENoZWNrIElmIHJlbG9jYXRpb24gYWdhaW5zdCBub24tcHJlZW1wdGlibGUg YWJzb2x1dGUgc3ltYm9sIGlzCisgICAgIHZhbGlkIGluIFBJQy4gIEZJWE1FOiBDYW4ndCB1c2Ug U1lNQk9MX1JFRkVSRU5DRVNfTE9DQUxfUCBzaW5jZQorICAgICBpdCBtYXkgY2FsbCBfYmZkX2Vs Zl9saW5rX2hpZGVfc3ltX2J5X3ZlcnNpb24gYW5kIHJlc3VsdCBpbgorICAgICBsZC1lbGZ2ZXJz LyB2ZXJzMjEgdGVzdCBmYWlsdXJlLiAgKi8KKyAgaWYgKGJmZF9saW5rX3BpYyAoaW5mbykKKyAg ICAgICYmIChoID09IE5VTEwgfHwgU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUwgKGluZm8sIGgpKSkK KyAgICB7CisgICAgICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOworICAgICAg dW5zaWduZWQgaW50IHJfdHlwZTsKKyAgICAgIEVsZl9JbnRlcm5hbF9SZWxhIGlyZWw7CisKKyAg ICAgIC8qIFNraXAgbm9uLWFic29sdXRlIHN5bWJvbC4gICovCisgICAgICBpZiAoaCkKKwl7CisJ ICBpZiAoIWJmZF9pc19hYnNfc3ltYm9sICgmaC0+cm9vdCkpCisJICAgIHJldHVybiB2YWxpZF9w OworCX0KKyAgICAgIGVsc2UgaWYgKHN5bS0+c3Rfc2huZHggIT0gU0hOX0FCUykKKwlyZXR1cm4g dmFsaWRfcDsKKworICAgICAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGlucHV0X3NlY3Rp b24tPm93bmVyKTsKKyAgICAgIHJfdHlwZSA9IEVMRjMyX1JfVFlQRSAocmVsLT5yX2luZm8pOwor ICAgICAgaXJlbCA9ICpyZWw7CisKKyAgICAgIC8qIE9ubHkgYWxsb3cgcmVsb2NhdGlvbnMgYWdh aW5zdCBhYnNvbHV0ZSBzeW1ib2wsIHdoaWNoIGNhbiBiZQorCSByZXNvbHZlZCBhcyBhYnNvbHV0 ZSB2YWx1ZSArIGFkZGVuZC4gICovCisgICAgICBpZiAoYmVkLT50YXJnZXRfaWQgPT0gWDg2XzY0 X0VMRl9EQVRBKQorCXsKKwkgIHJfdHlwZSAmPSB+Ul9YODZfNjRfY29udmVydGVkX3JlbG9jX2Jp dDsKKwkgIHZhbGlkX3AgPSAocl90eXBlID09IFJfWDg2XzY0XzY0CisJCSAgICAgfHwgcl90eXBl ID09IFJfWDg2XzY0XzMyCisJCSAgICAgfHwgcl90eXBlID09IFJfWDg2XzY0XzMyUworCQkgICAg IHx8IHJfdHlwZSA9PSBSX1g4Nl82NF8xNgorCQkgICAgIHx8IHJfdHlwZSA9PSBSX1g4Nl82NF84 KTsKKwkgIGlmICghdmFsaWRfcCkKKwkgICAgeworCSAgICAgIHVuc2lnbmVkIGludCByX3N5bW5k eCA9IGh0YWItPnJfc3ltIChyZWwtPnJfaW5mbyk7CisJICAgICAgaXJlbC5yX2luZm8gPSBodGFi LT5yX2luZm8gKHJfc3ltbmR4LCByX3R5cGUpOworCSAgICB9CisJfQorICAgICAgZWxzZQorCXZh bGlkX3AgPSAocl90eXBlID09IFJfMzg2XzMyCisJCSAgIHx8IHJfdHlwZSA9PSBSXzM4Nl8xNgor CQkgICB8fCByX3R5cGUgPT0gUl8zODZfOCk7CisKKyAgICAgIGlmICh2YWxpZF9wKQorCSpub19k eW5yZWxvY19wID0gVFJVRTsKKyAgICAgIGVsc2UKKwl7CisJICBjb25zdCBjaGFyICpuYW1lOwor CSAgYXJlbGVudCBpbnRlcm5hbF9yZWxvYzsKKworCSAgaWYgKCFiZWQtPmVsZl9pbmZvX3RvX2hv d3RvIChpbnB1dF9zZWN0aW9uLT5vd25lciwKKwkJCQkgICAgICAgJmludGVybmFsX3JlbG9jLCAm aXJlbCkKKwkgICAgICB8fCBpbnRlcm5hbF9yZWxvYy5ob3d0byA9PSBOVUxMKQorCSAgICBhYm9y dCAoKTsKKworCSAgaWYgKGgpCisJICAgIG5hbWUgPSBoLT5yb290LnJvb3Quc3RyaW5nOworCSAg ZWxzZQorCSAgICBuYW1lID0gYmZkX2VsZl9zeW1fbmFtZSAoaW5wdXRfc2VjdGlvbi0+b3duZXIs IHN5bXRhYl9oZHIsCisJCQkJICAgICBzeW0sIE5VTEwpOworCSAgaW5mby0+Y2FsbGJhY2tzLT5l aW5mbworCSAgICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLworCSAgICAoXygiJVglUDogJXBCOiBy ZWxvY2F0aW9uICVzIGFnYWluc3QgYWJzb2x1dGUgc3ltYm9sICIKKwkgICAgICAgImAlcycgaW4g c2VjdGlvbiBgJXBBJyBpcyBkaXNhbGxvd2VkXG4iKSwKKwkgICAgIGlucHV0X3NlY3Rpb24tPm93 bmVyLCBpbnRlcm5hbF9yZWxvYy5ob3d0by0+bmFtZSwgbmFtZSwKKwkgICAgIGlucHV0X3NlY3Rp b24pOworCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7CisJfQorICAgIH0K KworICByZXR1cm4gdmFsaWRfcDsKK30KKwogLyogU2V0IHRoZSBzaXplcyBvZiB0aGUgZHluYW1p YyBzZWN0aW9ucy4gICovCiAKIGJmZF9ib29sZWFuCmRpZmYgLS1naXQgYS9iZmQvZWxmeHgteDg2 LmggYi9iZmQvZWxmeHgteDg2LmgKaW5kZXggYmVmMTdkYzJiYS4uMTg0NWEwNGYwMiAxMDA2NDQK LS0tIGEvYmZkL2VsZnh4LXg4Ni5oCisrKyBiL2JmZC9lbGZ4eC14ODYuaApAQCAtMTE5LDExICsx MTksMTUgQEAKICAgIENvcHkgZHluYW1pYyBmdW5jdGlvbiBwb2ludGVyIHJlbG9jYXRpb25zLiAg RG9uJ3QgZ2VuZXJhdGUgZHluYW1pYwogICAgcmVsb2NhdGlvbnMgYWdhaW5zdCByZXNvbHZlZCB1 bmRlZmluZWQgd2VhayBzeW1ib2xzIGluIFBJRSwgZXhjZXB0CiAgICB3aGVuIFBDMzJfUkVMT0Mg aXMgVFJVRS4gIFVuZGVmaW5lZCB3ZWFrIHN5bWJvbCBpcyBib3VuZCBsb2NhbGx5Ci0gICB3aGVu IFBJQyBpcyBmYWxzZS4gICovCi0jZGVmaW5lIEdFTkVSQVRFX0RZTkFNSUNfUkVMT0NBVElPTl9Q KElORk8sIEVILCBSX1RZUEUsIFwKKyAgIHdoZW4gUElDIGlzIGZhbHNlLiAgRG9uJ3QgZ2VuZXJh dGUgZHluYW1pYyByZWxvY2F0aW9ucyBhZ2FpbnN0CisgICBub24tcHJlZW1wdGlibGUgYWJzb2x1 dGUgc3ltYm9sLiAgKi8KKyNkZWZpbmUgR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AoSU5G TywgRUgsIFJfVFlQRSwgU0VDLCBcCiAJCQkJICAgICAgTkVFRF9DT1BZX1JFTE9DX0lOX1BJRSwg XAogCQkJCSAgICAgIFJFU09MVkVEX1RPX1pFUk8sIFBDMzJfUkVMT0MpIFwKICAgKChiZmRfbGlu a19waWMgKElORk8pIFwKKyAgICAmJiAhKGJmZF9pc19hYnNfc2VjdGlvbiAoU0VDKSBcCisJICYm ICgoRUgpID09IE5VTEwgXAorCSAgICAgfHwgU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUwgKElORk8s ICYoRUgpLT5lbGYpKSkgXAogICAgICYmICEoTkVFRF9DT1BZX1JFTE9DX0lOX1BJRSkgXAogICAg ICYmICgoRUgpID09IE5VTEwgXAogCXx8ICgoRUxGX1NUX1ZJU0lCSUxJVFkgKChFSCktPmVsZi5v dGhlcikgPT0gU1RWX0RFRkFVTFQgXApAQCAtNjAxLDYgKzYwNSw5IEBAIHN0cnVjdCBlbGZfeDg2 X3BsdAogICBsb25nIGNvdW50OwogfTsKIAorLyogU2V0IGlmIGEgcmVsb2NhdGlvbiBpcyBjb252 ZXJ0ZWQgZnJvbSBhIEdPVFBDUkVMIHJlbG9jYXRpb24uICAqLworI2RlZmluZSBSX1g4Nl82NF9j b252ZXJ0ZWRfcmVsb2NfYml0ICgxIDw8IDcpCisKICNkZWZpbmUgZWxmX3g4Nl90ZGF0YShhYmZk KSBcCiAgICgoc3RydWN0IGVsZl94ODZfb2JqX3RkYXRhICopIChhYmZkKS0+dGRhdGEuYW55KQog CkBAIC02NTIsNiArNjU5LDExIEBAIGV4dGVybiBpbnQgX2JmZF94ODZfZWxmX2NvbXBhcmVfcmVs b2NzCiBleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF94ODZfZWxmX2xpbmtfY2hlY2tfcmVsb2NzCiAg IChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CiAKK2V4dGVybiBiZmRfYm9vbGVhbiBf YmZkX2VsZl94ODZfdmFsaWRfcmVsb2NfcAorICAoYXNlY3Rpb24gKiwgc3RydWN0IGJmZF9saW5r X2luZm8gKiwgc3RydWN0IGVsZl94ODZfbGlua19oYXNoX3RhYmxlICosCisgICBjb25zdCBFbGZf SW50ZXJuYWxfUmVsYSAqLCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLAorICAgRWxmX0lu dGVybmFsX1N5bSAqLCBFbGZfSW50ZXJuYWxfU2hkciAqLCBiZmRfYm9vbGVhbiAqKTsKKwogZXh0 ZXJuIGJmZF9ib29sZWFuIF9iZmRfeDg2X2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMKICAgKGJm ZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKIApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRl L2xkLWVsZi9saW51eC14ODYuZXhwIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9saW51eC14ODYuZXhw CmluZGV4IDYzYTMyMWI5NjYuLjgwMzEzMTZhZWQgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9s ZC1lbGYvbGludXgteDg2LmV4cAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL2xpbnV4LXg4Ni5l eHAKQEAgLTExNSwzICsxMTUsMTQ1IEBAIGVsZmVkaXRfdGVzdCAiLS1kaXNhYmxlLXg4Ni1mZWF0 dXJlIHNoc3RrIiB4ODYtZmVhdHVyZS0xIHg4Ni1mZWF0dXJlLTFjCiBlbGZlZGl0X3Rlc3QgIi0t ZGlzYWJsZS14ODYtZmVhdHVyZSBpYnQiIHg4Ni1mZWF0dXJlLTEgeDg2LWZlYXR1cmUtMWQKIGVs ZmVkaXRfdGVzdCAiLS1lbmFibGUteDg2LWZlYXR1cmUgaWJ0IC0tZW5hYmxlLXg4Ni1mZWF0dXJl IHNoc3RrIiBcCiAJCXg4Ni1mZWF0dXJlLTEgeDg2LWZlYXR1cmUtMWUKKworcHJvYyBjaGVja19w cjI1NzQ5YSB7dGVzdG5hbWUgc3JjZmlsZWEgc3JjZmlsZWIgY2ZsYWdzIGxkZmxhZ3MgbGRlcnJv cn0geworICAgIGdsb2JhbCBvYmpjb3B5CisgICAgZ2xvYmFsIHNyY2RpcgorICAgIGdsb2JhbCBz dWJkaXIKKworICAgIGlmIHsgW2lzdGFyZ2V0ICJpPzg2LSotbGludXgqIl0gfSB7CisJc2V0IG91 dHB1dF9hcmNoICJpMzg2OmkzODYiCisJc2V0IG91dHB1dF90YXJnZXQgImVsZjMyLWkzODYiCisg ICAgfSBlbHNlIHsKKwlzZXQgb3V0cHV0X2FyY2ggImkzODY6eDg2LTY0IgorCWlmIHtbaXN0YXJn ZXQgIng4Nl82NC0qLWxpbnV4Ki1nbnV4MzIiXX0geworCSAgICBzZXQgb3V0cHV0X3RhcmdldCAi ZWxmMzIteDg2LTY0IgorCX0gZWxzZSB7CisJICAgIHNldCBvdXRwdXRfdGFyZ2V0ICJlbGY2NC14 ODYtNjQiCisJfQorICAgIH0KKworICAgIGV4ZWMgY3AgJHNyY2Rpci8kc3ViZGlyLyRzcmNmaWxl YSAkc3JjZmlsZWEKKyAgICBzZXQgcHIyNTc0OV9iaW4gIiRvYmpjb3B5IC1CICRvdXRwdXRfYXJj aCAtSSBiaW5hcnkgLU8gJG91dHB1dF90YXJnZXQgJHNyY2ZpbGVhIHRtcGRpci9wcjI1NzQ5LWJp bi5vIgorICAgIHNlbmRfbG9nICIkcHIyNTc0OV9iaW5cbiIKKyAgICBzZXQgZ290IFtyZW1vdGVf ZXhlYyBob3N0ICIkcHIyNTc0OV9iaW4iXQorICAgIGlmIHsgW2xpbmRleCAkZ290IDBdICE9IDAg fHwgIVtzdHJpbmcgbWF0Y2ggIiIgW2xpbmRleCAkZ290IDFdXSB9IHRoZW4geworCXNlbmRfbG9n ICIkZ290XG4iCisJZmFpbCAiQ29udmVydCAkc3JjZmlsZWEgdG8gJG91dHB1dF90YXJnZXQiCisJ cmV0dXJuCisgICAgfQorCisgICAgaWYgeyIkbGRlcnJvciIgPT0gIiJ9IHsKKwlydW5fY2NfbGlu a190ZXN0cyBbbGlzdCBcCisJICAgIFtsaXN0IFwKKwkJIkJ1aWxkICR0ZXN0bmFtZSAoJGxkZmxh Z3MgJGNmbGFncykiIFwKKwkJIiRsZGZsYWdzIHRtcGRpci9wcjI1NzQ5LWJpbi5vIiBcCisJCSIk Y2ZsYWdzIiBcCisJCVtsaXN0ICRzcmNmaWxlYSAkc3JjZmlsZWJdXAorCQl7e3JlYWRlbGYgey1X cn0gcHIyNTc0OS5yZH19ICBcCisJCSIkdGVzdG5hbWUiIFwKKwkgICAgXSBcCisJXQorCXJ1bl9s ZF9saW5rX2V4ZWNfdGVzdHMgW2xpc3QgXAorCSAgICBbbGlzdCBcCisJCSJSdW4gJHt0ZXN0bmFt ZX1hICgkbGRmbGFncyAkY2ZsYWdzKSIgXAorCQkiJGxkZmxhZ3MgdG1wZGlyL3ByMjU3NDktYmlu Lm8iIFwKKwkJIiIgXAorCQlbbGlzdCAkc3JjZmlsZWEgJHNyY2ZpbGViXVwKKwkJIiR7dGVzdG5h bWV9YSIgXAorCQkicGFzcy5vdXQiIFwKKwkJIiRjZmxhZ3MiIFwKKwkgICAgXSBcCisJXQorICAg IH0gZWxzZSB7CisJcnVuX2NjX2xpbmtfdGVzdHMgW2xpc3QgXAorCSAgICBbbGlzdCBcCisJCSJC dWlsZCAkdGVzdG5hbWUgKCRsZGZsYWdzICRjZmxhZ3MpIiBcCisJCSIkbGRmbGFncyB0bXBkaXIv cHIyNTc0OS1iaW4ubyIgXAorCQkiJGNmbGFncyIgXAorCQlbbGlzdCAkc3JjZmlsZWEgJHNyY2Zp bGViXVwKKwkJW2xpc3QgW2xpc3QgZXJyb3Jfb3V0cHV0ICRsZGVycm9yXV0gXAorCQkiJHRlc3Ru YW1lIiBcCisJICAgIF0gXAorCV0KKyAgICB9Cit9CisKK2NoZWNrX3ByMjU3NDlhICJwcjI1NzQ5 LTFhIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFhLmMiICIkTk9QSUVfQ0ZMQUdTIiAiJE5PUElF X0xERkxBR1MiICIiCitjaGVja19wcjI1NzQ5YSAicHIyNTc0OS0xYSIgInByMjU3NDktMS5jIiAi cHIyNTc0OS0xYS5jIiAiLWZQSUUiICItcGllIiAiIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NDkt MWIiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWIuYyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVf TERGTEFHUyIgIiIKK2lmIHsgW2lzdGFyZ2V0ICJpPzg2LSotbGludXgqIl0gfSB7CisgICAgY2hl Y2tfcHIyNTc0OWEgInByMjU3NDktMWIiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWIuYyIgIi1m UElFIiAiLXBpZSIgIiIKK30gZWxzZSB7CisgICAgY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMWIi ICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWIuYyIgIi1mUElFIiAiLXBpZSIgInByMjU3NDktMWIu ZXJyIgorfQorY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMWMiICJwcjI1NzQ5LTEuYyIgInByMjU3 NDktMWMuYyIgIi1mUElDIiAiLXNoYXJlZCIgInByMjU3NDktMWIuZXJyIgorY2hlY2tfcHIyNTc0 OWEgInByMjU3NDktMmEiICJwcjI1NzQ5LTIuYyIgInByMjU3NDktMmEucyIgIiROT1BJRV9DRkxB R1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3NDlhICJwcjI1NzQ5LTJhIiAicHIy NTc0OS0yLmMiICJwcjI1NzQ5LTJhLnMiICItZlBJRSIgIi1waWUiICIiCitjaGVja19wcjI1NzQ5 YSAicHIyNTc0OS0yYiIgInByMjU3NDktMi5jIiAicHIyNTc0OS0yYi5zIiAiJE5PUElFX0NGTEFH UyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMmIiICJwcjI1 NzQ5LTIuYyIgInByMjU3NDktMmIucyIgIi1mUElFIiAiLXBpZSIgIiIKK2NoZWNrX3ByMjU3NDlh ICJwcjI1NzU0LTFhIiAicHIyNTc1NC0xYS5jIiAicHIyNTc1NC0xYi5zIiAiJE5PUElFX0NGTEFH UyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NTQtMWIiICJwcjI1 NzU0LTFhLmMiICJwcjI1NzU0LTFiLnMiICItZlBJRSIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hl Y2tfcHIyNTc0OWEgInByMjU3NTQtMWMiICJwcjI1NzU0LTFhLmMiICJwcjI1NzU0LTFiLnMiICIt ZlBJQyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NTQtMWQiICJw cjI1NzU0LTFhLmMiICJwcjI1NzU0LTFiLnMiICItZlBJQyIgIi1waWUiICIiCisKK3Byb2MgY2hl Y2tfcHIyNTc0OWIge3Rlc3RuYW1lIHNyY2ZpbGVhIHNyY2ZpbGViIGNmbGFncyBsZGZsYWdzIGRz b2xkZmxhZ3N9IHsKKyAgICBnbG9iYWwgb2JqY29weQorICAgIGdsb2JhbCBzcmNkaXIKKyAgICBn bG9iYWwgc3ViZGlyCisKKyAgICBpZiB7IFtpc3RhcmdldCAiaT84Ni0qLWxpbnV4KiJdIH0gewor CXNldCBvdXRwdXRfYXJjaCAiaTM4NjppMzg2IgorCXNldCBvdXRwdXRfdGFyZ2V0ICJlbGYzMi1p Mzg2IgorICAgIH0gZWxzZSB7CisJc2V0IG91dHB1dF9hcmNoICJpMzg2Ong4Ni02NCIKKwlpZiB7 W2lzdGFyZ2V0ICJ4ODZfNjQtKi1saW51eCotZ251eDMyIl19IHsKKwkgICAgc2V0IG91dHB1dF90 YXJnZXQgImVsZjMyLXg4Ni02NCIKKwl9IGVsc2UgeworCSAgICBzZXQgb3V0cHV0X3RhcmdldCAi ZWxmNjQteDg2LTY0IgorCX0KKyAgICB9CisKKyAgICBleGVjIGNwICRzcmNkaXIvJHN1YmRpci8k c3JjZmlsZWEgJHNyY2ZpbGVhCisgICAgc2V0IHByMjU3NDlfYmluICIkb2JqY29weSAtQiAkb3V0 cHV0X2FyY2ggLUkgYmluYXJ5IC1PICRvdXRwdXRfdGFyZ2V0ICRzcmNmaWxlYSB0bXBkaXIvcHIy NTc0OS1iaW4ubyIKKyAgICBzZW5kX2xvZyAiJHByMjU3NDlfYmluXG4iCisgICAgc2V0IGdvdCBb cmVtb3RlX2V4ZWMgaG9zdCAiJHByMjU3NDlfYmluIl0KKyAgICBpZiB7IFtsaW5kZXggJGdvdCAw XSAhPSAwIHx8ICFbc3RyaW5nIG1hdGNoICIiIFtsaW5kZXggJGdvdCAxXV0gfSB0aGVuIHsKKwlz ZW5kX2xvZyAiJGdvdFxuIgorCWZhaWwgIkNvbnZlcnQgJHNyY2ZpbGVhIHRvICRvdXRwdXRfdGFy Z2V0IgorCXJldHVybgorICAgIH0KKworICAgIHJ1bl9jY19saW5rX3Rlc3RzIFtsaXN0IFwKKwlb bGlzdCBcCisJICAgICJCdWlsZCBsaWIke3Rlc3RuYW1lfS5zbyAoJGRzb2xkZmxhZ3MpIiBcCisJ ICAgICItc2hhcmVkICRkc29sZGZsYWdzIHRtcGRpci9wcjI1NzQ5LWJpbi5vIiBcCisJICAgICIt ZlBJQyIgXAorCSAgICBbbGlzdCAkc3JjZmlsZWJdIFwKKwkgICAge3tyZWFkZWxmIHstV3J9IHBy MjU3NDkucmR9fSAgXAorCSAgICAibGliJHt0ZXN0bmFtZX0uc28iIFwKKwldIFwKKyAgICBdCisg ICAgcnVuX2xkX2xpbmtfZXhlY190ZXN0cyBbbGlzdCBcCisJW2xpc3QgXAorCSAgICAiUnVuICR7 dGVzdG5hbWV9YiAoJGxkZmxhZ3MgJGNmbGFncykiIFwKKwkgICAgIiRsZGZsYWdzIC1XbCwtLW5v LWFzLW5lZWRlZCB0bXBkaXIvbGliJHt0ZXN0bmFtZX0uc28iIFwKKwkgICAgIiIgXAorCSAgICBb bGlzdCAkc3JjZmlsZWFdXAorCSAgICAiJHt0ZXN0bmFtZX1iIiBcCisJICAgICJwYXNzLm91dCIg XAorCSAgICAiJGNmbGFncyIgXAorCV0gXAorICAgIF0KK30KKworY2hlY2tfcHIyNTc0OWIgInBy MjU3NDktMWEiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWEuYyIgIiROT1BJRV9DRkxBR1MiICIk Tk9QSUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3NDliICJwcjI1NzQ5LTFhIiAicHIyNTc0OS0x LmMiICJwcjI1NzQ5LTFhLmMiICItZlBJRSIgIi1waWUiICIiCitjaGVja19wcjI1NzQ5YiAicHIy NTc0OS0xYSIgInByMjU3NDktMS5jIiAicHIyNTc0OS0xYS5jIiAiLWZQSUUiICItcGllIiAiLVds LC1Cc3ltYm9saWMiCitjaGVja19wcjI1NzQ5YiAicHIyNTc0OS0xYiIgInByMjU3NDktMS5jIiAi cHIyNTc0OS0xYi5jIiAiJE5PUElFX0NGTEFHUyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tf cHIyNTc0OWIgInByMjU3NDktMWIiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWIuYyIgIi1mUElF IiAiLXBpZSIgIiIKK2NoZWNrX3ByMjU3NDliICJwcjI1NzQ5LTFiIiAicHIyNTc0OS0xLmMiICJw cjI1NzQ5LTFiLmMiICItZlBJRSIgIi1waWUiICItV2wsLUJzeW1ib2xpYyIKK2NoZWNrX3ByMjU3 NDliICJwcjI1NzQ5LTJhIiAicHIyNTc0OS0yLmMiICJwcjI1NzQ5LTJhLnMiICIkTk9QSUVfQ0ZM QUdTIiAiJE5PUElFX0xERkxBR1MiICIiCitjaGVja19wcjI1NzQ5YiAicHIyNTc0OS0yYSIgInBy MjU3NDktMi5jIiAicHIyNTc0OS0yYS5zIiAiLWZQSUUiICItcGllIiAiIgorY2hlY2tfcHIyNTc0 OWIgInByMjU3NDktMmIiICJwcjI1NzQ5LTIuYyIgInByMjU3NDktMmIucyIgIiROT1BJRV9DRkxB R1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3NDliICJwcjI1NzQ5LTJiIiAicHIy NTc0OS0yLmMiICJwcjI1NzQ5LTJiLnMiICItZlBJRSIgIi1waWUiICIiCmRpZmYgLS1naXQgYS9s ZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMS5jIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1 NzQ5LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41YjM3YWYwOGM2 Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTEuYwpAQCAt MCwwICsxLDEyIEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+ CisKK2V4dGVybiBpbnRwdHJfdCBzaXplICh2b2lkKTsKKworaW50CittYWluICgpCit7CisgIGlm IChzaXplICgpID09IDE0NykKKyAgICBwcmludGYgKCJQQVNTXG4iKTsKKyAgcmV0dXJuIDA7Cit9 CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWEuYyBiL2xkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc0OS0xYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjc3NTYyM2I4YzkKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxm L3ByMjU3NDktMWEuYwpAQCAtMCwwICsxLDExIEBACisjaW5jbHVkZSA8YmZkX3N0ZGludC5oPgor CitleHRlcm4gdm9pZCAqX2JpbmFyeV9wcjI1NzQ5XzFfY19zdGFydDsKK2V4dGVybiB2b2lkICpf YmluYXJ5X3ByMjU3NDlfMV9jX2VuZDsKKworaW50cHRyX3QKK3NpemUgKHZvaWQpCit7CisgIHJl dHVybiAoKGludHB0cl90KSAmX2JpbmFyeV9wcjI1NzQ5XzFfY19lbmQKKwkgIC0gKGludHB0cl90 KSAmX2JpbmFyeV9wcjI1NzQ5XzFfY19zdGFydCk7Cit9CmRpZmYgLS1naXQgYS9sZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NDktMWIuYyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYwMmE0MDg3MDAKLS0tIC9k ZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWIuYwpAQCAtMCwwICsx LDkgQEAKKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiB2b2lkICpfYmluYXJ5X3By MjU3NDlfMV9jX3NpemU7CisKK2ludHB0cl90CitzaXplICh2b2lkKQoreworICByZXR1cm4gKGlu dHB0cl90KSAmX2JpbmFyeV9wcjI1NzQ5XzFfY19zaXplOworfQpkaWZmIC0tZ2l0IGEvbGQvdGVz dHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFiLmVyciBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0 OS0xYi5lcnIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYmIzODkxNzJm MQotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYi5lcnIK QEAgLTAsMCArMSwzIEBACisjLi4uCisuKjogLiogYWdhaW5zdCBhYnNvbHV0ZSBzeW1ib2wgYF9i aW5hcnlfcHIyNTc0OV8xX2Nfc2l6ZScgLiogaXMgZGlzYWxsb3dlZAorI3Bhc3MKZGlmZiAtLWdp dCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYy5jIGIvbGQvdGVzdHN1aXRlL2xkLWVs Zi9wcjI1NzQ5LTFjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjI4 NDdkN2Y2MgotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0x Yy5jCkBAIC0wLDAgKzEsOSBAQAorI2luY2x1ZGUgPGJmZF9zdGRpbnQuaD4KKworZXh0ZXJuIHZv aWQgKl9iaW5hcnlfcHIyNTc0OV8xX2Nfc2l6ZSBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSgi aGlkZGVuIikpKTsKKworaW50cHRyX3QKK3NpemUgKHZvaWQpCit7CisgIHJldHVybiAoaW50cHRy X3QpICZfYmluYXJ5X3ByMjU3NDlfMV9jX3NpemU7Cit9CmRpZmYgLS1naXQgYS9sZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NDktMi5jIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTIuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44MjBiZWJjMTY3Ci0tLSAvZGV2 L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTIuYwpAQCAtMCwwICsxLDEy IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVy biBpbnRwdHJfdCBzaXplOworCitpbnQKK21haW4gKCkKK3sKKyAgaWYgKHNpemUgPT0gMTM3KQor ICAgIHByaW50ZiAoIlBBU1NcbiIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xkL3Rl c3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yYS5zIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5 LTJhLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZGY0ODZmZTMyOQot LS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yYS5zCkBAIC0w LDAgKzEsNiBAQAorCS5kYXRhCisJLmdsb2JsCXNpemUKKwkudHlwZQlzaXplLCAlb2JqZWN0Citz aXplOgorCS5kYy5hCV9iaW5hcnlfcHIyNTc0OV8yX2Nfc2l6ZQorCS5zaXplIHNpemUsIC4tc2l6 ZQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJiLnMgYi9sZC90ZXN0 c3VpdGUvbGQtZWxmL3ByMjU3NDktMmIucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi5iYTgyYzQ1MGJjCi0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVs Zi9wcjI1NzQ5LTJiLnMKQEAgLTAsMCArMSw3IEBACisJLmRhdGEKKwkuaGlkZGVuIF9iaW5hcnlf cHIyNTc0OV8yX2Nfc2l6ZQorCS5nbG9ibAlzaXplCisJLnR5cGUJc2l6ZSwgJW9iamVjdAorc2l6 ZToKKwkuZGMuYQlfYmluYXJ5X3ByMjU3NDlfMl9jX3NpemUKKwkuc2l6ZSBzaXplLCAuLXNpemUK ZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS5yZCBiL2xkL3Rlc3RzdWl0 ZS9sZC1lbGYvcHIyNTc0OS5yZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li5mYmM2OGJmMjY4Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1 NzQ5LnJkCkBAIC0wLDAgKzEsNCBAQAorI2ZhaWxpZgorIy4uLgorWzAtOWEtZiBdK1JfLipfTk9O RS4qCisjLi4uCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMWEuYyBi L2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0xYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjI2NmExZTM2MGIKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NTQtMWEuYwpAQCAtMCwwICsxLDE5IEBACisjaW5jbHVkZSA8c3RkaW8u aD4KKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiBpbnRwdHJfdCBiYXI7CisKK2lu dHB0cl90ICoKK19fYXR0cmlidXRlX18gKChub2lubGluZSwgbm9jbG9uZSkpCitnZXRfYmFyICh2 b2lkKQoreworICByZXR1cm4gJmJhcjsKK30KKworaW50CittYWluICgpCit7CisgIGlmICgoaW50 cHRyX3QpIGdldF9iYXIgKCkgPT0gNDIpCisgICAgcHJpbnRmICgiUEFTU1xuIik7CisgIHJldHVy biAwOworfQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTFiLnMgYi9s ZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMWIucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi45OWQ1ODVkNmI1Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRl L2xkLWVsZi9wcjI1NzU0LTFiLnMKQEAgLTAsMCArMSwzIEBACisJLmRhdGEKKwkuZ2xvYmFsIGJh cgorCWJhciA9IDQyCi0tIAoyLjI1LjEKCg== --000000000000f7a92705a22ee376--