From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 44184 invoked by alias); 15 Jan 2018 15:02:23 -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 44158 invoked by uid 89); 15 Jan 2018 15:02:22 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.1 required=5.0 tests=AWL,BAYES_00,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= X-HELO: mail-ot0-f179.google.com Received: from mail-ot0-f179.google.com (HELO mail-ot0-f179.google.com) (74.125.82.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 15 Jan 2018 15:02:13 +0000 Received: by mail-ot0-f179.google.com with SMTP id w4so10862314otg.3 for ; Mon, 15 Jan 2018 07:02:13 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=dETlU3KgyRPaLsb+FdxNhkP1bfp359y68gkxulpbn0c=; b=csp8pPZKpRqFuXLnND+LD6dOIVjd9K/nq4zUoaSj4NFrpIQ+rf1VkzaeOC8gIT/9aC V+qixbunvx/5k5WL5ZZ8cPaKdbS6IFIS1A4W2zj14HJmFdsQ/z+kpQz8INheK1JAttRD 9ZIBwnM+M+ho0XOpOgbCviZ5LTVIo+yEalD5g1Kig0qC5FCkNvQGjHWbzmCEzm5vi7oQ 55Ge5zM7Ic9YSMNy3D1zVL9Wl8TUT5g4h7Kejh/w01RdadCYNlgOhzIXLAAcuS8ewHqI Ns/EKeT9e6vpJZgAYWMck7lR0Q6Qh9/OrrNMVrOK6pDmKA9UG/pbc1E+p1ok6pEcX2vS KQiw== X-Gm-Message-State: AKwxyte7RZAvE90l0YNSrL3Ma0GpfdQvAw4YXCX9mmqqyEVoTRHFaUJ4 gcFtWMU25TjhxPwYN5PpSKaHvEphkF0PLMmhjaM= X-Google-Smtp-Source: ACJfBouyn8v4PHl/3VUpKepx4zMqqOCQ5QKMBIaPnwdk3gEZy7pJv5yO/ajR+ctvbO+sZZkfKLoiWXw8w+KHjAbGzJc= X-Received: by 10.157.37.8 with SMTP id k8mr12510514otb.392.1516028531649; Mon, 15 Jan 2018 07:02:11 -0800 (PST) MIME-Version: 1.0 Received: by 10.74.151.42 with HTTP; Mon, 15 Jan 2018 07:02:10 -0800 (PST) In-Reply-To: <20180115094206.GU2063@tucnak> References: <20180114142954.GA24647@gmail.com> <20180115094206.GU2063@tucnak> From: "H.J. Lu" Date: Mon, 15 Jan 2018 15:02:00 -0000 Message-ID: Subject: Re: [PATCH] C/C++: Add -Waddress-of-packed-member To: Jakub Jelinek Cc: GCC Patches Content-Type: multipart/mixed; boundary="001a1141b8ac1968960562d1e616" X-IsSubscribed: yes X-SW-Source: 2018-01/txt/msg01341.txt.bz2 --001a1141b8ac1968960562d1e616 Content-Type: text/plain; charset="UTF-8" Content-length: 1128 On Mon, Jan 15, 2018 at 1:42 AM, Jakub Jelinek wrote: > On Sun, Jan 14, 2018 at 06:29:54AM -0800, H.J. Lu wrote: >> + if (TREE_CODE (field) == FIELD_DECL && DECL_PACKED (field)) >> + { >> + tree field_type = TREE_TYPE (field); >> + unsigned int type_align = TYPE_ALIGN (field_type); >> + tree context = DECL_CONTEXT (field); >> + unsigned int record_align = TYPE_ALIGN (context); >> + if ((record_align % type_align) != 0) >> + return context; >> + type_align /= BITS_PER_UNIT; >> + unsigned HOST_WIDE_INT field_off >> + = (tree_to_uhwi (DECL_FIELD_OFFSET (field)) >> + + (tree_to_uhwi (DECL_FIELD_BIT_OFFSET (field)) >> + / BITS_PER_UNIT)); > > This has the same bug I've just created PR83844 for, you can't assume > DECL_FIELD_OFFSET is INTEGER_CST that fits into UHWI, and also we have > byte_position wrapper that should be used to compute the offset from > DECL_FIELD_*OFFSET. Here is the updated patch to use byte_position wrapper. OK for trunk? -- H.J. --001a1141b8ac1968960562d1e616 Content-Type: text/x-patch; charset="US-ASCII"; 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 X-Attachment-Id: f_jcgc80zr0 Content-length: 37869 RnJvbSAyYTI2ZWQ4MDlmN2FmNWY1MmEyNDM2N2JmYTBiMjk4OThhYzdmYTg3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTIgSmFuIDIwMTggMjE6 MTI6MDUgLTA4MDAKU3ViamVjdDogW1BBVENIXSBDL0MrKzogQWRkIC1XYWRk cmVzcy1vZi1wYWNrZWQtbWVtYmVyCgpXaGVuIGFkZHJlc3Mgb2YgcGFja2Vk IG1lbWJlciBvZiBzdHJ1Y3Qgb3IgdW5pb24gaXMgdGFrZW4sIGl0IG1heSBy ZXN1bHQKaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUuICBUaGlzIHBh dGNoIGFkZHMgLVdhZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIKdG8gd2FybiBp dDoKCiQgY2F0IHguaQpzdHJ1Y3QgcGFpcl90CnsKICBjaGFyIGM7CiAgaW50 IGk7Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKZXh0ZXJuIHN0cnVj dCBwYWlyX3QgcDsKaW50ICphZGRyID0gJnAuaTsKJCBnY2MgLU8yIC1TIHgu aQp4Lmk6ODoxMzogd2FybmluZzogaW5pdGlhbGl6YXRpb24gb2YgJ2ludCAq JyBmcm9tIGFkZHJlc3Mgb2YgcGFja2VkIG1lbWJlciBvZiAnc3RydWN0IHBh aXJfdCcgbWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1 ZSBbLVdhZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXJdCiBpbnQgKmFkZHIgPSAm cC5pOwogICAgICAgICAgICAgXgokCgpUaGlzIHdhcm5pbmcgaXMgZW5hYmxl ZCBieSBkZWZhdWx0LgoKZ2NjL2MvCgoJUFIgYy81MTYyOAoJKiBkb2MvaW52 b2tlLnRleGk6IERvY3VtZW50IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVt YmVyLgoKZ2NjL2MtZmFtaWx5LwoKCVBSIGMvNTE2MjgKCSogYy1jb21tb24u aCAod2Fybl9mb3JfYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyKTogTmV3LgoJ KiBjLXdhcm4uYyAod2Fybl9mb3JfYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVy KTogTmV3IGZ1bmN0aW9uLgoJKiBjLm9wdDogQWRkIC1Xbm8tYWRkcmVzcy1v Zi1wYWNrZWQtbWVtYmVyLgoKZ2NjL2MvCgoJUFIgYy81MTYyOAoJKiBjLXR5 cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQ2FsbAoJd2Fybl9m b3JfYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyLiAgSXNzdWUgYW4gd2Fybmlu ZyBpZiBhZGRyZXNzCglvZiBwYWNrZWQgbWVtYmVyIGlzIHRha2VuLgoKZ2Nj L2NwLwoKCVBSIGMvNTE2MjgKCSogY2FsbC5jIChjb252ZXJ0X2Zvcl9hcmdf cGFzc2luZyk6IENhbGwKCXdhcm5fZm9yX2FkZHJlc3Nfb2ZfcGFja2VkX21l bWJlci4gIElzc3VlIGFuIHdhcm5pbmcgaWYgYWRkcmVzcwoJb2YgcGFja2Vk IG1lbWJlciBpcyB0YWtlbi4KCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fz c2lnbm1lbnQpOiBMaWtld2lzZS4KCmdjYy90ZXN0c3VpdGUvCgoJUFIgYy81 MTYyOAoJKiBjLWMrKy1jb21tb24vcHI1MTYyOC0xLmM6IE5ldyB0ZXN0cy4K CSogYy1jKystY29tbW9uL3ByNTE2MjgtMi5jOiBMaWtld2lzZS4KCSogYy1j KystY29tbW9uL3ByNTE2MjgtMy5jOiBMaWtld2lzZS4KCSogYy1jKystY29t bW9uL3ByNTE2MjgtNC5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3By NTE2MjgtNS5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2Mjgt Ni5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtNy5jOiBM aWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtOC5jOiBMaWtld2lz ZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtOS5jOiBMaWtld2lzZS4KCSog Z2NjLmRnL3ByNTE2MjgtMTAuYzogTGlrZXdpc2UuCgkqIGdjYy5kZy9wcjUx NjI4LTExLmM6IExpa2V3aXNlLgoJKiBjLWMrKy1jb21tb24vdWJzYW4vYWxp Z24tMTAuYzogQWRkIC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyLgoJ KiBjLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tMi5jOiBMaWtld2lzZS4KCSog Yy1jKystY29tbW9uL3Vic2FuL2FsaWduLTQuYzogTGlrZXdpc2UuCgkqIGMt YysrLWNvbW1vbi91YnNhbi9hbGlnbi02LmM6IExpa2V3aXNlLgoJKiBjLWMr Ky1jb21tb24vdWJzYW4vYWxpZ24tNy5jOiBMaWtld2lzZS4KCSogYy1jKyst Y29tbW9uL3Vic2FuL2FsaWduLTguYzogTGlrZXdpc2UuCgkqIGcrKy5kZy91 YnNhbi9hbGlnbi0yLkM6IExpa2V3aXNlLgotLS0KIGdjYy9jLWZhbWlseS9j LWNvbW1vbi5oICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBnY2MvYy1m YW1pbHkvYy13YXJuLmMgICAgICAgICAgICAgICAgICAgICAgIHwgNTYgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIGdjYy9jLWZhbWlseS9jLm9w dCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKysKIGdjYy9jL2Mt dHlwZWNrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MCArKysr KysrKysrKysrKysrKysrKy0KIGdjYy9jcC9jYWxsLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgOCArKysrKwogZ2NjL2NwL3R5cGVjay5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQxICsrKysrKysrKysr KysrKysrKysrKwogZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAg ICAgICAgICAgICB8IDExICsrKystLQogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vcHI1MTYyOC0xLmMgICAgICB8IDI5ICsrKysrKysrKysrKysrKwog Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yLmMgICAgICB8 IDI5ICsrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vcHI1MTYyOC0zLmMgICAgICB8IDM1ICsrKysrKysrKysrKysrKysrKwog Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC00LmMgICAgICB8 IDM1ICsrKysrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vcHI1MTYyOC01LmMgICAgICB8IDM1ICsrKysrKysrKysrKysrKysr KwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC02LmMgICAg ICB8IDM1ICsrKysrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vcHI1MTYyOC03LmMgICAgICB8IDI5ICsrKysrKysrKysrKysr KwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC04LmMgICAg ICB8IDM2ICsrKysrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3ByNTE2MjgtOS5jICAgICAgfCAzNiArKysrKysrKysrKysr KysrKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGln bi0xMC5jIHwgIDIgKy0KIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vi c2FuL2FsaWduLTIuYyAgfCAgMiArLQogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vdWJzYW4vYWxpZ24tNC5jICB8ICAyICstCiBnY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi02LmMgIHwgIDIgKy0KIGdjYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTcuYyAgfCAgMiAr LQogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tOC5j ICB8ICAyICstCiBnY2MvdGVzdHN1aXRlL2crKy5kZy91YnNhbi9hbGlnbi0y LkMgICAgICAgIHwgIDIgKy0KIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2 MjgtMTAuYyAgICAgICAgICAgfCAyMyArKysrKysrKysrKysKIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTEuYyAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKwogMjUgZmlsZXMgY2hhbmdlZCwgNTEzIGluc2VydGlvbnMo KyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0y LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9wcjUxNjI4LTMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNC5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC01LmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9wcjUxNjI4LTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL3ByNTE2MjgtNy5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC04LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9w cjUxNjI4LTkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Z2NjLmRnL3ByNTE2MjgtMTAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTEuYwoKZGlmZiAtLWdpdCBhL2dj Yy9jLWZhbWlseS9jLWNvbW1vbi5oIGIvZ2NjL2MtZmFtaWx5L2MtY29tbW9u LmgKaW5kZXggZDA5MDg4MWU5NWQuLmVmMzFlNGQwYWEyIDEwMDY0NAotLS0g YS9nY2MvYy1mYW1pbHkvYy1jb21tb24uaAorKysgYi9nY2MvYy1mYW1pbHkv Yy1jb21tb24uaApAQCAtMTM4NCw2ICsxMzg0LDcgQEAgZXh0ZXJuIHZvaWQg Y19kb19zd2l0Y2hfd2FybmluZ3MgKHNwbGF5X3RyZWUsIGxvY2F0aW9uX3Qs IHRyZWUsIHRyZWUsIGJvb2wsCiAJCQkJICBib29sKTsKIGV4dGVybiB2b2lk IHdhcm5fZm9yX29taXR0ZWRfY29uZG9wIChsb2NhdGlvbl90LCB0cmVlKTsK IGV4dGVybiB2b2lkIHdhcm5fZm9yX3Jlc3RyaWN0ICh1bnNpZ25lZCwgdHJl ZSAqLCB1bnNpZ25lZCk7CitleHRlcm4gdHJlZSB3YXJuX2Zvcl9hZGRyZXNz X29mX3BhY2tlZF9tZW1iZXIgKHRyZWUgdHlwZSwgdHJlZSByaHMpOwogCiAv KiBQbGFjZXMgd2hlcmUgYW4gbHZhbHVlLCBvciBtb2RpZmlhYmxlIGx2YWx1 ZSwgbWF5IGJlIHJlcXVpcmVkLgogICAgVXNlZCB0byBzZWxlY3QgZGlhZ25v c3RpYyBtZXNzYWdlcyBpbiBsdmFsdWVfZXJyb3IgYW5kCmRpZmYgLS1naXQg YS9nY2MvYy1mYW1pbHkvYy13YXJuLmMgYi9nY2MvYy1mYW1pbHkvYy13YXJu LmMKaW5kZXggN2Q4N2M0NTVlYzAuLjA5ZjIxOTAxNGQ5IDEwMDY0NAotLS0g YS9nY2MvYy1mYW1pbHkvYy13YXJuLmMKKysrIGIvZ2NjL2MtZmFtaWx5L2Mt d2Fybi5jCkBAIC0yNTc2LDMgKzI1NzYsNTkgQEAgd2Fybl9mb3JfbXVsdGlz dGF0ZW1lbnRfbWFjcm9zIChsb2NhdGlvbl90IGJvZHlfbG9jLCBsb2NhdGlv bl90IG5leHRfbG9jLAogICAgIGluZm9ybSAoZ3VhcmRfbG9jLCAic29tZSBw YXJ0cyBvZiBtYWNybyBleHBhbnNpb24gYXJlIG5vdCBndWFyZGVkIGJ5ICIK IAkgICAgInRoaXMgJXFzIGNsYXVzZSIsIGd1YXJkX3RpbmZvX3RvX3N0cmlu ZyAoa2V5d29yZCkpOwogfQorCisvKiBSZXR1cm4gc3RydWN0IG9yIHVuaW9u IHR5cGUgaWYgdGhlIHJpZ2h0IGhhbmQgdHlwZSwgUkhTLCBpcyB0aGUKKyAg IGFkZHJlc3Mgb2YgcGFja2VkIG1lbWJlciBvZiBzdHJ1Y3Qgb3IgdW5pb24g d2hlbiBhc3NpZ25pbmcgdG8gVFlQRS4KKyAgIE90aGVyd2lzZSwgcmV0dXJu IE5VTExfVFJFRS4gICovCisKK3RyZWUKK3dhcm5fZm9yX2FkZHJlc3Nfb2Zf cGFja2VkX21lbWJlciAodHJlZSB0eXBlLCB0cmVlIHJocykKK3sKKyAgaWYg KCF3YXJuX2FkZHJlc3Nfb2ZfcGFja2VkX21lbWJlciB8fCAhUE9JTlRFUl9U WVBFX1AgKHR5cGUpKQorICAgIHJldHVybiBOVUxMX1RSRUU7CisKKyAgaWYg KFRSRUVfQ09ERSAocmhzKSA9PSBOT1BfRVhQUikKKyAgICByaHMgPSBUUkVF X09QRVJBTkQgKHJocywgMCk7CisKKyAgdHJlZSBiYXNlOworICB0cmVlIGZp ZWxkID0gTlVMTF9UUkVFOworICB0cmVlIHJoc190eXBlOworCisgIHN3aXRj aCAoVFJFRV9DT0RFIChyaHMpKQorICAgIHsKKyAgICBjYXNlIEFERFJfRVhQ UjoKKyAgICAgIGJhc2UgPSBUUkVFX09QRVJBTkQgKHJocywgMCk7CisgICAg ICB3aGlsZSAoVFJFRV9DT0RFIChiYXNlKSA9PSBBUlJBWV9SRUYpCisJYmFz ZSA9IFRSRUVfT1BFUkFORCAoYmFzZSwgMCk7CisgICAgICBpZiAoVFJFRV9D T0RFIChiYXNlKSAhPSBDT01QT05FTlRfUkVGKQorCXJldHVybiBOVUxMX1RS RUU7CisgICAgICBmaWVsZCA9IFRSRUVfT1BFUkFORCAoYmFzZSwgMSk7Cisg ICAgICBicmVhazsKKyAgICBjYXNlIENPTVBPTkVOVF9SRUY6CisgICAgICBy aHNfdHlwZSA9IFRSRUVfVFlQRSAocmhzKTsKKyAgICAgIGlmIChUUkVFX0NP REUgKHJoc190eXBlKSAhPSBBUlJBWV9UWVBFCisJICB8fCAoVFlQRV9NQUlO X1ZBUklBTlQgKFRSRUVfVFlQRSAodHlwZSkpCisJICAgICAgIT0gVFlQRV9N QUlOX1ZBUklBTlQgKFRSRUVfVFlQRSAocmhzX3R5cGUpKSkpCisJcmV0dXJu IE5VTExfVFJFRTsKKyAgICAgIGZpZWxkID0gVFJFRV9PUEVSQU5EIChyaHMs IDEpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVy biBOVUxMX1RSRUU7CisgICAgfQorCisgIGlmIChUUkVFX0NPREUgKGZpZWxk KSA9PSBGSUVMRF9ERUNMICYmIERFQ0xfUEFDS0VEIChmaWVsZCkpCisgICAg eworICAgICAgdHJlZSBmaWVsZF90eXBlID0gVFJFRV9UWVBFIChmaWVsZCk7 CisgICAgICB1bnNpZ25lZCBpbnQgdHlwZV9hbGlnbiA9IFRZUEVfQUxJR04g KGZpZWxkX3R5cGUpOworICAgICAgdHJlZSBjb250ZXh0ID0gREVDTF9DT05U RVhUIChmaWVsZCk7CisgICAgICB1bnNpZ25lZCBpbnQgcmVjb3JkX2FsaWdu ID0gVFlQRV9BTElHTiAoY29udGV4dCk7CisgICAgICBpZiAoKHJlY29yZF9h bGlnbiAlIHR5cGVfYWxpZ24pICE9IDApCisJcmV0dXJuIGNvbnRleHQ7Cisg ICAgICB0cmVlIGZpZWxkX29mZiA9IGJ5dGVfcG9zaXRpb24gKGZpZWxkKTsK KyAgICAgIGlmICghbXVsdGlwbGVfb2ZfcCAoVFJFRV9UWVBFIChmaWVsZF9v ZmYpLCBmaWVsZF9vZmYsCisJCQkgIHNpemVfaW50ICh0eXBlX2FsaWduIC8g QklUU19QRVJfVU5JVCkpKQorCXJldHVybiBjb250ZXh0OworICAgIH0KKwor ICByZXR1cm4gTlVMTF9UUkVFOworfQpkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFt aWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0CmluZGV4IDE2YTUxNWFm ZDU1Li42ODZkNTJhMjA1NSAxMDA2NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2Mu b3B0CisrKyBiL2djYy9jLWZhbWlseS9jLm9wdApAQCAtNTk5LDYgKzU5OSwx MCBAQCBXaW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMKIEMgT2JqQyBWYXIo d2Fybl9pbmNvbXBhdGlibGVfcG9pbnRlcl90eXBlcykgSW5pdCgxKSBXYXJu aW5nCiBXYXJuIHdoZW4gdGhlcmUgaXMgYSBjb252ZXJzaW9uIGJldHdlZW4g cG9pbnRlcnMgdGhhdCBoYXZlIGluY29tcGF0aWJsZSB0eXBlcy4KIAorV2Fk ZHJlc3Mtb2YtcGFja2VkLW1lbWJlcgorQyBPYmpDIEMrKyBPYmpDKysgVmFy KHdhcm5fYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyKSBJbml0KDEpIFdhcm5p bmcKK1dhcm4gd2hlbiB0aGUgYWRkcmVzcyBvZiBwYWNrZWQgbWVtYmVyIG9m IHN0cnVjdCBvciB1bmlvbiBpcyB0YWtlbi4KKwogV2luaXQtc2VsZgogQyBP YmpDIEMrKyBPYmpDKysgVmFyKHdhcm5faW5pdF9zZWxmKSBXYXJuaW5nIExh bmdFbmFibGVkQnkoQysrIE9iakMrKyxXYWxsKQogV2FybiBhYm91dCB2YXJp YWJsZXMgd2hpY2ggYXJlIGluaXRpYWxpemVkIHRvIHRoZW1zZWx2ZXMuCmRp ZmYgLS1naXQgYS9nY2MvYy9jLXR5cGVjay5jIGIvZ2NjL2MvYy10eXBlY2su YwppbmRleCBlMjJiYzc0MGJjYS4uOGUzMWQ2Y2M1ZmQgMTAwNjQ0Ci0tLSBh L2djYy9jL2MtdHlwZWNrLmMKKysrIGIvZ2NjL2MvYy10eXBlY2suYwpAQCAt NjQ5NSw3ICs2NDk1LDQ1IEBAIGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQgKGxv Y2F0aW9uX3QgbG9jYXRpb24sIGxvY2F0aW9uX3QgZXhwcl9sb2MsIHRyZWUg dHlwZSwKICAgICB9CiAKICAgaWYgKFRZUEVfTUFJTl9WQVJJQU5UICh0eXBl KSA9PSBUWVBFX01BSU5fVkFSSUFOVCAocmhzdHlwZSkpCi0gICAgcmV0dXJu IHJoczsKKyAgICB7CisgICAgICB0cmVlIGNvbnRleHQgPSB3YXJuX2Zvcl9h ZGRyZXNzX29mX3BhY2tlZF9tZW1iZXIgKHR5cGUsIG9yaWdfcmhzKTsKKyAg ICAgIGlmIChjb250ZXh0KQorCXN3aXRjaCAoZXJydHlwZSkKKwkgIHsKKwkg IGNhc2UgaWNfYXJncGFzczoKKwkgICAgd2FybmluZ19hdCAoZXhwcl9sb2Ms IE9QVF9XYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyLAorCQkJInBhc3Npbmcg YXJndW1lbnQgJWQgJXFUIG9mICVxRSBmcm9tIGFkZHJlc3MgIgorCQkJIm9m IHBhY2tlZCBtZW1iZXIgb2YgJXFUIG1heSByZXN1bHQgaW4gYW4gIgorCQkJ InVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiwKKwkJCXBhcm1udW0sIHR5cGUs IHJuYW1lLCBjb250ZXh0KTsKKwkgICAgYnJlYWs7CisJICBjYXNlIGljX2Fz c2lnbjoKKwkgICAgd2FybmluZ19hdCAobG9jYXRpb24sIE9QVF9XYWRkcmVz c19vZl9wYWNrZWRfbWVtYmVyLAorCQkJImFzc2lnbm1lbnQgdG8gJXFUIGZy b20gYWRkcmVzcyBvZiBwYWNrZWQgIgorCQkJIm1lbWJlciBvZiAlcVQgbWF5 IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgIgorCQkJInBvaW50ZXIgdmFsdWUi LAorCQkJdHlwZSwgY29udGV4dCk7CisJICAgIGJyZWFrOworCSAgY2FzZSBp Y19pbml0OgorCSAgICB3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhZGRy ZXNzX29mX3BhY2tlZF9tZW1iZXIsCisJCQkiaW5pdGlhbGl6YXRpb24gb2Yg JXFUIGZyb20gYWRkcmVzcyBvZiBwYWNrZWQgIgorCQkJIm1lbWJlciBvZiAl cVQgbWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgIgorCQkJInBvaW50ZXIg dmFsdWUiLAorCQkJdHlwZSwgY29udGV4dCk7CisJICAgIGJyZWFrOworCSAg Y2FzZSBpY19yZXR1cm46CisJICAgIHdhcm5pbmdfYXQgKGxvY2F0aW9uLCBP UFRfV2FkZHJlc3Nfb2ZfcGFja2VkX21lbWJlciwKKwkJCSJyZXR1cm5pbmcg YWRkcmVzcyBvZiBwYWNrZWQgbWVtYmVyIG9mICVxVCAiCisJCQkiZnJvbSBh IGZ1bmN0aW9uIHdpdGggcmV0dXJuIHR5cGUgJXFUIG1heSAiCisJCQkicmVz dWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiwKKwkJCWNvbnRl eHQsIHR5cGUpOworCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJICAgIGdj Y191bnJlYWNoYWJsZSAoKTsKKwkgIH0KKworICAgICAgcmV0dXJuIHJoczsK KyAgICB9CiAKICAgaWYgKGNvZGVyID09IFZPSURfVFlQRSkKICAgICB7CmRp ZmYgLS1naXQgYS9nY2MvY3AvY2FsbC5jIGIvZ2NjL2NwL2NhbGwuYwppbmRl eCBmNTU0Mjg1MGNlYS4uODY3MmFiMGQ1OGMgMTAwNjQ0Ci0tLSBhL2djYy9j cC9jYWxsLmMKKysrIGIvZ2NjL2NwL2NhbGwuYwpAQCAtNzQxNiw2ICs3NDE2 LDE0IEBAIGNvbnZlcnRfZm9yX2FyZ19wYXNzaW5nICh0cmVlIHR5cGUsIHRy ZWUgdmFsLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKIAl9CiAgICAgICBt YXliZV93YXJuX3Bhcm1fYWJpICh0eXBlLCBFWFBSX0xPQ19PUl9MT0MgKHZh bCwgaW5wdXRfbG9jYXRpb24pKTsKICAgICB9CisKKyAgdHJlZSBjb250ZXh0 ID0gd2Fybl9mb3JfYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyICh0eXBlLCB2 YWwpOworICBpZiAoY29udGV4dCkKKyAgICB3YXJuaW5nIChPUFRfV2FkZHJl c3Nfb2ZfcGFja2VkX21lbWJlciwKKwkgICAgICJwYXNzaW5nIGFyZ3VtZW50 IG9mIHR5cGUgJXFUIGZyb20gYWRkcmVzcyBvZiBtZW1iZXIgb2YgIgorCSAg ICAgInBhY2tlZCAlcVQgbWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9p bnRlciB2YWx1ZSIsCisJICAgICB0eXBlLCBjb250ZXh0KTsKKwogICByZXR1 cm4gdmFsOwogfQogCmRpZmYgLS1naXQgYS9nY2MvY3AvdHlwZWNrLmMgYi9n Y2MvY3AvdHlwZWNrLmMKaW5kZXggZjBkYzAzZGUxMTEuLjExOTljMjdkMmYw IDEwMDY0NAotLS0gYS9nY2MvY3AvdHlwZWNrLmMKKysrIGIvZ2NjL2NwL3R5 cGVjay5jCkBAIC04ODg3LDYgKzg4ODcsNDcgQEAgY29udmVydF9mb3JfYXNz aWdubWVudCAodHJlZSB0eXBlLCB0cmVlIHJocywKICAgICAgIFRSRUVfTk9f V0FSTklORyAocmhzKSA9IDE7CiAgICAgfQogCisgIHRyZWUgY29udGV4dCA9 IHdhcm5fZm9yX2FkZHJlc3Nfb2ZfcGFja2VkX21lbWJlciAodHlwZSwgcmhz KTsKKyAgaWYgKGNvbnRleHQpCisgICAgc3dpdGNoIChlcnJ0eXBlKQorICAg ICAgeworICAgICAgY2FzZSBJQ1JfQVJHUEFTUzoKKyAgICAgIGNhc2UgSUNS X0RFRkFVTFRfQVJHVU1FTlQ6CisJd2FybmluZyAoT1BUX1dhZGRyZXNzX29m X3BhY2tlZF9tZW1iZXIsCisJCSAicGFzc2luZyBhcmd1bWVudCAlZCAlcVQg b2YgJXFEIGZyb20gYWRkcmVzcyBvZiAiCisJCSAicGFja2VkIG1lbWJlciBv ZiAlcVQgbWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgIgorCQkgInBvaW50 ZXIgdmFsdWUiLAorCQkgcGFybW51bSwgdHlwZSwgZm5kZWNsLCBjb250ZXh0 KTsKKwlicmVhazsKKyAgICAgIGNhc2UgSUNSX0NPTlZFUlRJTkc6CisJd2Fy bmluZyAoT1BUX1dhZGRyZXNzX29mX3BhY2tlZF9tZW1iZXIsCisJCSAiY29u dmVydGluZyB0byAlcVQgZnJvbSBhZGRyZXNzIG9mIHBhY2tlZCBtZW1iZXIg b2YgIgorCQkgIiVxVCBtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2lu dGVyIHZhbHVlIiwKKwkJIHR5cGUsIGNvbnRleHQpOworCWJyZWFrOworICAg ICAgY2FzZSBJQ1JfQVNTSUdOOgorCXdhcm5pbmcgKE9QVF9XYWRkcmVzc19v Zl9wYWNrZWRfbWVtYmVyLAorCQkgImFzc2lnbm1lbnQgdG8gJXFUIGZyb20g YWRkcmVzcyBvZiBwYWNrZWQgbWVtYmVyIG9mICIKKwkJICIlcVQgbWF5IHJl c3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIsCisJCSB0eXBl LCBjb250ZXh0KTsKKwlicmVhazsKKyAgICAgIGNhc2UgSUNSX0lOSVQ6CisJ d2FybmluZyAoT1BUX1dhZGRyZXNzX29mX3BhY2tlZF9tZW1iZXIsCisJCSAi aW5pdGlhbGl6YXRpb24gb2YgJXFUIGZyb20gYWRkcmVzcyBvZiBwYWNrZWQg bWVtYmVyICIKKwkJICJvZiAlcVQgbWF5IHJlc3VsdCBpbiBhbiB1bmFsaWdu ZWQgcG9pbnRlciB2YWx1ZSIsCisJCSB0eXBlLCBjb250ZXh0KTsKKwlicmVh azsKKyAgICAgIGNhc2UgSUNSX1JFVFVSTjoKKwl3YXJuaW5nIChPUFRfV2Fk ZHJlc3Nfb2ZfcGFja2VkX21lbWJlciwKKwkJICJyZXR1cm5pbmcgYWRkcmVz cyBvZiBwYWNrZWQgbWVtYmVyIG9mICVxVCBmcm9tIGEgIgorCQkgImZ1bmN0 aW9uIHdpdGggcmV0dXJuIHR5cGUgJXFUIG1heSByZXN1bHQgaW4gYW4gIgor CQkgInVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiwKKwkJIGNvbnRleHQsIHR5 cGUpOworCWJyZWFrOworICAgICAgZGVmYXVsdDoKKwlnY2NfdW5yZWFjaGFi bGUgKCk7CisgICAgICB9CisKICAgcmV0dXJuIHBlcmZvcm1faW1wbGljaXRf Y29udmVyc2lvbl9mbGFncyAoc3RyaXBfdG9wX3F1YWxzICh0eXBlKSwgcmhz LAogCQkJCQkgICAgY29tcGxhaW4sIGZsYWdzKTsKIH0KZGlmZiAtLWdpdCBh L2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCmlu ZGV4IDk4YjczZGIxN2FmLi5iODNkMTEzYjc2ZCAxMDA2NDQKLS0tIGEvZ2Nj L2RvYy9pbnZva2UudGV4aQorKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCkBA IC0yNTksOCArMjU5LDggQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1D KysgRGlhbGVjdHN9LgogQHhyZWZ7V2FybmluZyBPcHRpb25zLCxPcHRpb25z IHRvIFJlcXVlc3Qgb3IgU3VwcHJlc3MgV2FybmluZ3N9LgogQGdjY29wdGxp c3R7LWZzeW50YXgtb25seSAgLWZtYXgtZXJyb3JzPUB2YXJ7bn0gIC1XcGVk YW50aWMgQGdvbAogLXBlZGFudGljLWVycm9ycyBAZ29sCi0tdyAgLVdleHRy YSAgLVdhbGwgIC1XYWRkcmVzcyAgLVdhZ2dyZWdhdGUtcmV0dXJuICBAZ29s Ci0tV2FsbG9jLXplcm8gIC1XYWxsb2Mtc2l6ZS1sYXJnZXItdGhhbj1AdmFy e259CistdyAgLVdleHRyYSAgLVdhbGwgIC1XYWRkcmVzcyAtV2FkZHJlc3Mt b2YtcGFja2VkLW1lbWJlciBAZ29sCistV2FnZ3JlZ2F0ZS1yZXR1cm4gLVdh bGxvYy16ZXJvIC1XYWxsb2Mtc2l6ZS1sYXJnZXItdGhhbj1AdmFye259IEBn b2wKIC1XYWxsb2NhICAtV2FsbG9jYS1sYXJnZXItdGhhbj1AdmFye259IEBn b2wKIC1Xbm8tYWdncmVzc2l2ZS1sb29wLW9wdGltaXphdGlvbnMgIC1XYXJy YXktYm91bmRzICAtV2FycmF5LWJvdW5kcz1AdmFye259IEBnb2wKIC1Xbm8t YXR0cmlidXRlcyAgLVdib29sLWNvbXBhcmUgIC1XYm9vbC1vcGVyYXRpb24g QGdvbApAQCAtNjM3OSw2ICs2Mzc5LDEzIEBAIGJlaGF2aW9yIGFuZCBhcmUg bm90IHBvcnRhYmxlIGluIEMsIHNvIHRoZXkgdXN1YWxseSBpbmRpY2F0ZSB0 aGF0IHRoZQogcHJvZ3JhbW1lciBpbnRlbmRlZCB0byB1c2UgQGNvZGV7c3Ry Y21wfS4gIFRoaXMgd2FybmluZyBpcyBlbmFibGVkIGJ5CiBAb3B0aW9uey1X YWxsfS4KIAorQGl0ZW0gLVdhZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIKK0Bv cGluZGV4IFdhZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIKK0BvcGluZGV4IFdu by1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIKK1dhcm4gd2hlbiB0aGUgYWRk cmVzcyBvZiBwYWNrZWQgbWVtYmVyIG9mIHN0cnVjdCBvciB1bmlvbiBpcyB0 YWtlbiwKK3doaWNoIHVzdWFsbHkgcmVzdWx0cyBpbiBhbiB1bmFsaWduZWQg cG9pbnRlciB2YWx1ZS4gIFRoaXMgaXMKK2VuYWJsZWQgYnkgZGVmYXVsdC4K KwogQGl0ZW0gLVdsb2dpY2FsLW9wCiBAb3BpbmRleCBXbG9naWNhbC1vcAog QG9waW5kZXggV25vLWxvZ2ljYWwtb3AKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMS5jIGIvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUzMjRmOWNjOTY0Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0x LmMKQEAgLTAsMCArMSwyOSBAQAorLyogUFIgYy81MTYyOC4gICovCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyIgfSAq LworCitzdHJ1Y3QgcGFpcl90Cit7CisgIGludCB4OworICBpbnQgaTsKK30g X19hdHRyaWJ1dGVfXygocGFja2VkLCBhbGlnbmVkICg0KSkpOworCitleHRl cm4gc3RydWN0IHBhaXJfdCBwOworZXh0ZXJuIGludCAqeDsKK2V4dGVybiB2 b2lkIGJhciAoaW50ICopOworCitpbnQgKmFkZHIgPSAmcC5pOworCitpbnQg KgorZm9vICh2b2lkKQoreworICBzdHJ1Y3QgcGFpcl90IGFyclsyXSA9IHsg eyAxLCAxMCB9LCB7IDIsIDIwIH0gfTsKKyAgaW50ICpwMCwgKnAxOworICBw MCA9ICZhcnJbMF0uaTsKKyAgYmFyIChwMCk7CisgIHAxID0gJmFyclsxXS5p OworICBiYXIgKHAxKTsKKyAgYmFyICgmcC5pKTsKKyAgeCA9ICZwLmk7Cisg IHJldHVybiAmcC5pOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vcHI1MTYyOC0yLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9wcjUxNjI4LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYWJmYjg0ZGRkMDUKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTIuYwpAQCAt MCwwICsxLDI5IEBACisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3N0 cnVjdCBwYWlyX3QKK3sKKyAgaW50IHg7CisgIGludCBpOworfSBfX2F0dHJp YnV0ZV9fKChwYWNrZWQsIGFsaWduZWQgKDgpKSk7CisKK2V4dGVybiBzdHJ1 Y3QgcGFpcl90IHA7CitleHRlcm4gaW50ICp4OworZXh0ZXJuIHZvaWQgYmFy IChpbnQgKik7CisKK2ludCAqYWRkciA9ICZwLmk7CisKK2ludCAqCitmb28g KHZvaWQpCit7CisgIHN0cnVjdCBwYWlyX3QgYXJyWzJdID0geyB7IDEsIDEw IH0sIHsgMiwgMjAgfSB9OworICBpbnQgKnAwLCAqcDE7CisgIHAwID0gJmFy clswXS5pOworICBiYXIgKHAwKTsKKyAgcDEgPSAmYXJyWzFdLmk7CisgIGJh ciAocDEpOworICBiYXIgKCZwLmkpOworICB4ID0gJnAuaTsKKyAgcmV0dXJu ICZwLmk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9wcjUxNjI4LTMuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L3ByNTE2MjgtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4wZWE5NGM4NDVhMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMy5jCkBAIC0wLDAgKzEs MzUgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxl IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3RydWN0IHBh aXJfdAoreworICBpbnQgeDsKKyAgaW50IGk7Cit9IF9fYXR0cmlidXRlX18o KHBhY2tlZCwgYWxpZ25lZCAoMikpKTsKKworZXh0ZXJuIHN0cnVjdCBwYWly X3QgcDsKK2V4dGVybiBpbnQgKng7CitleHRlcm4gdm9pZCBiYXIgKGludCAq KTsKKworaW50ICphZGRyID0gJnAuaTsKKy8qIHsgZGctd2FybmluZyAibWF5 IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0 YXJnZXQgKi0qLSogfSAuLTEgfSAqLworCitpbnQgKgorZm9vICh2b2lkKQor eworICBzdHJ1Y3QgcGFpcl90IGFyclsyXSA9IHsgeyAxLCAxMCB9LCB7IDIs IDIwIH0gfTsKKyAgaW50ICpwMCwgKnAxOworICBwMCA9ICZhcnJbMF0uaTsK Ky8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQg cG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwor ICBiYXIgKHAwKTsKKyAgcDEgPSAmYXJyWzFdLmk7CisvKiB7IGRnLXdhcm5p bmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUi ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgYmFyIChwMSk7Cisg IGJhciAoJnAuaSk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4g YW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0gKi8KKyAgeCA9ICZwLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1h eSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgcmV0dXJuICZwLmk7CisvKiB7 IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50 ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2Mjgt NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC00LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM0YzFm YjcyZDZkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vcHI1MTYyOC00LmMKQEAgLTAsMCArMSwzNSBAQAorLyogUFIg Yy81MTYyOC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItTyIgfSAqLworCitzdHJ1Y3QgcGFpcl90Cit7CisgIGlu dCB4OworICBpbnQgaTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisK K2V4dGVybiBzdHJ1Y3QgcGFpcl90IHA7CitleHRlcm4gaW50ICp4OworZXh0 ZXJuIHZvaWQgYmFyIChpbnQgKik7CisKK2ludCAqYWRkciA9ICZwLmk7Cisv KiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBv aW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKwor aW50ICoKK2ZvbyAodm9pZCkKK3sKKyAgc3RydWN0IHBhaXJfdCBhcnJbMl0g PSB7IHsgMSwgMTAgfSwgeyAyLCAyMCB9IH07CisgIGludCAqcDAsICpwMTsK KyAgcDAgPSAmYXJyWzBdLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1 bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KKyAgYmFyIChwMCk7CisgIHAxID0gJmFyclsx XS5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxp Z25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCisgIGJhciAocDEpOworICBiYXIgKCZwLmkpOworLyogeyBkZy13YXJu aW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVl IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIHggPSAmcC5pOwor LyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBw b2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisg IHJldHVybiAmcC5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGlu IGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9wcjUxNjI4LTUuYyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3ByNTE2MjgtNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi45ZDdjMzA5YTBlZgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNS5jCkBAIC0w LDAgKzEsMzUgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3Ry dWN0IHBhaXJfdAoreworICBjaGFyIHg7CisgIGludCBpOworfSBfX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsKKworZXh0ZXJuIHN0cnVjdCBwYWlyX3QgcDsK K2V4dGVybiBpbnQgKng7CitleHRlcm4gdm9pZCBiYXIgKGludCAqKTsKKwor aW50ICphZGRyID0gJnAuaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3Vs dCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLworCitpbnQgKgorZm9vICh2b2lkKQoreworICBz dHJ1Y3QgcGFpcl90IGFyclsyXSA9IHsgeyAxLCAxMCB9LCB7IDIsIDIwIH0g fTsKKyAgaW50ICpwMCwgKnAxOworICBwMCA9ICZhcnJbMF0uaTsKKy8qIHsg ZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRl ciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBiYXIg KHAwKTsKKyAgcDEgPSAmYXJyWzFdLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1h eSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgYmFyIChwMSk7CisgIGJhciAo JnAuaSk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5h bGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0gKi8KKyAgeCA9ICZwLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1 bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KKyAgcmV0dXJuICZwLmk7CisvKiB7IGRnLXdh cm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFs dWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KK30KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNi5jIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC02LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUyYWEwN2E0Y2Yz Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vcHI1MTYyOC02LmMKQEAgLTAsMCArMSwzNSBAQAorLyogUFIgYy81MTYy OC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItTyIgfSAqLworCitzdHJ1Y3QgcGFpcl90Cit7CisgIGNoYXIgeDsK KyAgaW50IGk7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCwgYWxpZ25lZCAo NCkpKTsKKworZXh0ZXJuIHN0cnVjdCBwYWlyX3QgcDsKK2V4dGVybiBpbnQg Kng7CitleHRlcm4gdm9pZCBiYXIgKGludCAqKTsKKworaW50ICphZGRyID0g JnAuaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFs aWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLworCitpbnQgKgorZm9vICh2b2lkKQoreworICBzdHJ1Y3QgcGFpcl90 IGFyclsyXSA9IHsgeyAxLCAxMCB9LCB7IDIsIDIwIH0gfTsKKyAgaW50ICpw MCwgKnAxOworICBwMCA9ICZhcnJbMF0uaTsKKy8qIHsgZGctd2FybmluZyAi bWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBiYXIgKHAwKTsKKyAgcDEg PSAmYXJyWzFdLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4g YW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0gKi8KKyAgYmFyIChwMSk7CisgIGJhciAoJnAuaSk7CisvKiB7 IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50 ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgeCA9 ICZwLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5h bGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0gKi8KKyAgcmV0dXJuICZwLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSBy ZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNy5jIGIvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vcHI1MTYyOC03LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFlNGE2ODFmOTY2Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC03 LmMKQEAgLTAsMCArMSwyOSBAQAorLyogUFIgYy81MTYyOC4gICovCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyIgfSAq LworCitzdHJ1Y3QgcGFpcl90Cit7CisgIGludCB4OworICBpbnQgaVs0XTsK K30gX19hdHRyaWJ1dGVfXygocGFja2VkLCBhbGlnbmVkICg0KSkpOworCitl eHRlcm4gc3RydWN0IHBhaXJfdCBwOworZXh0ZXJuIGludCAqeDsKK2V4dGVy biB2b2lkIGJhciAoaW50ICopOworCitpbnQgKmFkZHIgPSBwLmk7CisKK2lu dCAqCitmb28gKHN0cnVjdCBwYWlyX3QgKnApCit7CisgIGludCAqcDAsICpw MTsKKyAgcDAgPSBwLT5pOworICBiYXIgKHAwKTsKKyAgcDEgPSAmcC0+aVsx XTsKKyAgYmFyIChwMSk7CisgIGJhciAocC0+aSk7CisgIGJhciAoJnAtPmlb Ml0pOworICB4ID0gcC0+aTsKKyAgcmV0dXJuICZwLT5pWzNdOworfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC04 LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTguYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2MyZGFl MDk2YWUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9wcjUxNjI4LTguYwpAQCAtMCwwICsxLDM2IEBACisvKiBQUiBj LzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PIiB9ICovCisKK3N0cnVjdCBwYWlyX3QKK3sKKyAgY2hh ciB4OworICBpbnQgaVs0XTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwg YWxpZ25lZCAoNCkpKTsKKworZXh0ZXJuIHN0cnVjdCBwYWlyX3QgcDsKK2V4 dGVybiBpbnQgKng7CitleHRlcm4gdm9pZCBiYXIgKGludCAqKTsKKworaW50 ICphZGRyID0gcC5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGlu IGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9ICovCisKK2ludCAqCitmb28gKHN0cnVjdCBwYWlyX3QgKnAp Cit7CisgIGludCAqcDAsICpwMTsKKyAgcDAgPSBwLT5pOworLyogeyBkZy13 YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZh bHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIGJhciAocDAp OworICBwMSA9ICZwLT5pWzFdOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVz dWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovCisgIGJhciAocDEpOworICBiYXIgKHAtPmkp OworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25l ZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov CisgIGJhciAoJnAtPmlbMl0pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVz dWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovCisgIHggPSBwLT5pOworLyogeyBkZy13YXJu aW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVl IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIHJldHVybiAmcC0+ aVszXTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFs aWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vcHI1MTYyOC05LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9w cjUxNjI4LTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMDQ3MGFhM2I5M2QKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTkuYwpAQCAtMCwwICsxLDM2 IEBACisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3N0cnVjdCBwYWly X3QKK3sKKyAgaW50IHg7CisgIGludCBpWzRdOworfSBfX2F0dHJpYnV0ZV9f ICgocGFja2VkKSk7CisKK2V4dGVybiBzdHJ1Y3QgcGFpcl90IHA7CitleHRl cm4gaW50ICp4OworZXh0ZXJuIHZvaWQgYmFyIChpbnQgKik7CisKK2ludCAq YWRkciA9IHAuaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBh biB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLworCitpbnQgKgorZm9vIChzdHJ1Y3QgcGFpcl90ICpwKQor eworICBpbnQgKnAwLCAqcDE7CisgIHAwID0gcC0+aTsKKy8qIHsgZGctd2Fy bmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1 ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBiYXIgKHAwKTsK KyAgcDEgPSAmcC0+aVsxXTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3Vs dCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLworICBiYXIgKHAxKTsKKyAgYmFyIChwLT5pKTsK Ky8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQg cG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwor ICBiYXIgKCZwLT5pWzJdKTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3Vs dCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLworICB4ID0gcC0+aTsKKy8qIHsgZGctd2Fybmlu ZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICByZXR1cm4gJnAtPmlb M107CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGln bmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0g Ki8KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L3Vic2FuL2FsaWduLTEwLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi91YnNhbi9hbGlnbi0xMC5jCmluZGV4IDU2YWU5ZWJmZTMwLi42MjEwNTMz MTczYyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v dWJzYW4vYWxpZ24tMTAuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi91YnNhbi9hbGlnbi0xMC5jCkBAIC0xLDYgKzEsNiBAQAogLyogTGlt aXQgdGhpcyB0byBrbm93biBub24tc3RyaWN0IGFsaWdubWVudCB0YXJnZXRz LiAgKi8KIC8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgaT84Ni0qLWxpbnV4 KiB4ODZfNjQtKi1saW51eCogfSB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAi LU8gLWZzYW5pdGl6ZT1hbGlnbm1lbnQgLWZzYW5pdGl6ZS1yZWNvdmVyPWFs aWdubWVudCIgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtZnNhbml0aXpl PWFsaWdubWVudCAtZnNhbml0aXplLXJlY292ZXI9YWxpZ25tZW50IC1Xbm8t YWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIiB9ICovCiAKIHN0cnVjdCBSIHsg aW50IGE7IH0gcjsKIHN0cnVjdCBTIHsgc3RydWN0IFIgYTsgY2hhciBiOyBs b25nIGxvbmcgYzsgc2hvcnQgZFsxMF07IH07CmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi0yLmMgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi0yLmMKaW5kZXgg MDcxZGU4YzIwMmEuLjMzNmIxYzNjOTA3IDEwMDY0NAotLS0gYS9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi0yLmMKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tMi5jCkBAIC0x LDYgKzEsNiBAQAogLyogTGltaXQgdGhpcyB0byBrbm93biBub24tc3RyaWN0 IGFsaWdubWVudCB0YXJnZXRzLiAgKi8KIC8qIHsgZGctZG8gcnVuIHsgdGFy Z2V0IHsgaT84Ni0qLWxpbnV4KiB4ODZfNjQtKi1saW51eCogfSB9IH0gKi8K LS8qIHsgZGctb3B0aW9ucyAiLWZzYW5pdGl6ZT1hbGlnbm1lbnQiIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLWZzYW5pdGl6ZT1hbGlnbm1lbnQgLVduby1h ZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiIH0gKi8KIAogc3RydWN0IFMgeyBp bnQgYTsgY2hhciBiOyBsb25nIGxvbmcgYzsgc2hvcnQgZFsxMF07IH07CiBz dHJ1Y3QgVCB7IGNoYXIgYTsgbG9uZyBsb25nIGI7IH07CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi00LmMg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi00LmMK aW5kZXggMzI1MjU5NWQzMzAuLmQ1ZmVlZWUyOWM2IDEwMDY0NAotLS0gYS9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi00LmMKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tNC5j CkBAIC0xLDYgKzEsNiBAQAogLyogTGltaXQgdGhpcyB0byBrbm93biBub24t c3RyaWN0IGFsaWdubWVudCB0YXJnZXRzLiAgKi8KIC8qIHsgZGctZG8gcnVu IHsgdGFyZ2V0IHsgaT84Ni0qLWxpbnV4KiB4ODZfNjQtKi1saW51eCogfSB9 IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLWZzYW5pdGl6ZT1udWxsLGFsaWdu bWVudCIgfSAqLworLyogeyBkZy1vcHRpb25zICItZnNhbml0aXplPW51bGws YWxpZ25tZW50IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIiB9ICov CiAKICNpbmNsdWRlICJhbGlnbi0yLmMiCiAKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTYuYyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTYuYwppbmRleCAz MzY0NzQ2ZmIyNy4uMDMwMmI3Yjg4OTQgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTYuYworKysgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi02LmMKQEAgLTEs NiArMSw2IEBACiAvKiBMaW1pdCB0aGlzIHRvIGtub3duIG5vbi1zdHJpY3Qg YWxpZ25tZW50IHRhcmdldHMuICAqLwogLyogeyBkZy1kbyBydW4geyB0YXJn ZXQgeyBpPzg2LSotbGludXgqIHg4Nl82NC0qLWxpbnV4KiB9IH0gfSAqLwot LyogeyBkZy1vcHRpb25zICItTyAtZnNhbml0aXplPWFsaWdubWVudCAtZnNh bml0aXplLXJlY292ZXI9YWxpZ25tZW50IiB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PIC1mc2FuaXRpemU9YWxpZ25tZW50IC1mc2FuaXRpemUtcmVjb3Zl cj1hbGlnbm1lbnQgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiIH0g Ki8KIAogc3RydWN0IFMgeyBpbnQgYTsgY2hhciBiOyBsb25nIGxvbmcgYzsg c2hvcnQgZFsxMF07IH07CiBzdHJ1Y3QgVCB7IGNoYXIgYTsgbG9uZyBsb25n IGI7IH07CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi91YnNhbi9hbGlnbi03LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi91YnNhbi9hbGlnbi03LmMKaW5kZXggZWM0ZTg3ZjU2ZDUuLmRkMWU4Yzkx Y2VmIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91 YnNhbi9hbGlnbi03LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vdWJzYW4vYWxpZ24tNy5jCkBAIC0xLDYgKzEsNiBAQAogLyogTGltaXQg dGhpcyB0byBrbm93biBub24tc3RyaWN0IGFsaWdubWVudCB0YXJnZXRzLiAg Ki8KIC8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgaT84Ni0qLWxpbnV4KiB4 ODZfNjQtKi1saW51eCogfSB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8g LWZzYW5pdGl6ZT1hbGlnbm1lbnQgLWZuby1zYW5pdGl6ZS1yZWNvdmVyPWFs aWdubWVudCAtZmR1bXAtdHJlZS1zYW5vcHQtZGV0YWlscyIgfSAqLworLyog eyBkZy1vcHRpb25zICItTyAtZnNhbml0aXplPWFsaWdubWVudCAtZm5vLXNh bml0aXplLXJlY292ZXI9YWxpZ25tZW50IC1Xbm8tYWRkcmVzcy1vZi1wYWNr ZWQtbWVtYmVyIC1mZHVtcC10cmVlLXNhbm9wdC1kZXRhaWxzIiB9ICovCiAv KiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1mbHRvIC1mbm8tZmF0 LWx0by1vYmplY3RzIiB9IH0gKi8KIC8qIHsgZGctc2hvdWxkZmFpbCAidWJz YW4iIH0gKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vdWJzYW4vYWxpZ24tOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vdWJzYW4vYWxpZ24tOC5jCmluZGV4IDYxYzFjZWI2NjgyLi41ZmUw ZTBmZTkzMSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vdWJzYW4vYWxpZ24tOC5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3Vic2FuL2FsaWduLTguYwpAQCAtMSw2ICsxLDYgQEAKIC8qIExp bWl0IHRoaXMgdG8ga25vd24gbm9uLXN0cmljdCBhbGlnbm1lbnQgdGFyZ2V0 cy4gICovCiAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IGk/ODYtKi1saW51 eCogeDg2XzY0LSotbGludXgqIH0gfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMg Ii1PIC1mc2FuaXRpemU9YWxpZ25tZW50IC1mc2FuaXRpemUtdW5kZWZpbmVk LXRyYXAtb24tZXJyb3IgLWZkdW1wLXRyZWUtc2Fub3B0LWRldGFpbHMiIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZzYW5pdGl6ZT1hbGlnbm1lbnQg LWZzYW5pdGl6ZS11bmRlZmluZWQtdHJhcC1vbi1lcnJvciAtV25vLWFkZHJl c3Mtb2YtcGFja2VkLW1lbWJlciAtZmR1bXAtdHJlZS1zYW5vcHQtZGV0YWls cyIgfSAqLwogLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItZmx0 byAtZm5vLWZhdC1sdG8tb2JqZWN0cyIgfSB9ICovCiAvKiB7IGRnLXNob3Vs ZGZhaWwgInVic2FuIiB9ICovCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZysrLmRnL3Vic2FuL2FsaWduLTIuQyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL3Vic2FuL2FsaWduLTIuQwppbmRleCAzZTRmNTQ4NWQwMi4uYzk3ZWRl ODgzOTIgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRnL3Vic2Fu L2FsaWduLTIuQworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy91YnNhbi9h bGlnbi0yLkMKQEAgLTEsNiArMSw2IEBACiAvLyBMaW1pdCB0aGlzIHRvIGtu b3duIG5vbi1zdHJpY3QgYWxpZ25tZW50IHRhcmdldHMuCiAvLyB7IGRnLWRv IHJ1biB7IHRhcmdldCB7IGk/ODYtKi1saW51eCogeDg2XzY0LSotbGludXgq IH0gfSB9Ci0vLyB7IGRnLW9wdGlvbnMgIi1mc2FuaXRpemU9YWxpZ25tZW50 IC1XYWxsIC1Xbm8tdW51c2VkLXZhcmlhYmxlIC1zdGQ9YysrMTEiIH0KKy8v IHsgZGctb3B0aW9ucyAiLWZzYW5pdGl6ZT1hbGlnbm1lbnQgLVdhbGwgLVdu by11bnVzZWQtdmFyaWFibGUgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1i ZXIgLXN0ZD1jKysxMSIgfQogCiB0eXBlZGVmIGNvbnN0IGxvbmcgaW50IEw7 CiBzdHJ1Y3QgUyB7IGxvbmcgaW50IGw7IGNoYXIgYnVmWzEgKyBzaXplb2Yg KGludCkgKyBzaXplb2YgKEwpXTsgfSBzOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvcHI1MTYyOC0xMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvcHI1MTYyOC0xMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4wM2EwNGVmZjc1YwotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTAuYwpAQCAtMCwwICsx LDIzIEBACisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3ZvaWQgZm9v IChpbnQgKik7CisKK2ludCAqCitiYXIgKGludCBuLCBpbnQgaywgdm9pZCAq cHRyKQoreworICBzdHJ1Y3QgQQorICB7CisgICAgaW50IGNba107CisgICAg aW50IHhbbl07CisgIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25l ZCAoNCkpKTsKKyAgc3RydWN0IEEgKnAgPSAoc3RydWN0IEEgKikgcHRyOwor CisgIGludCAqcDAsICpwMTsKKyAgcDAgPSBwLT54OworICBmb28gKHAwKTsK KyAgcDEgPSAmcC0+eFsxXTsKKyAgZm9vIChwMSk7CisgIHJldHVybiAmcC0+ eFsxXTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3By NTE2MjgtMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTEu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2Zm MDNlODVjZWEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9wcjUxNjI4LTExLmMKQEAgLTAsMCArMSwyNiBAQAorLyogUFIgYy81 MTYyOC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1v cHRpb25zICItTyIgfSAqLworCit2b2lkIGZvbyAoaW50ICopOworCitpbnQg KgorYmFyIChpbnQgbiwgaW50IGssIHZvaWQgKnB0cikKK3sKKyAgc3RydWN0 IEEKKyAgeworICAgIGNoYXIgY1trXTsKKyAgICBpbnQgeFtuXTsKKyAgfSBf X2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisgIHN0cnVjdCBBICpwID0gKHN0 cnVjdCBBICopIHB0cjsKKworICBpbnQgKnAwLCAqcDE7CisgIHAwID0gcC0+ eDsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWdu ZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAq LworICBmb28gKHAwKTsKKyAgcDEgPSAmcC0+eFsxXTsKKy8qIHsgZGctd2Fy bmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1 ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBmb28gKHAxKTsK KyAgcmV0dXJuICZwLT54WzFdOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVz dWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovCit9Ci0tIAoyLjE0LjMKCg== --001a1141b8ac1968960562d1e616--