Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pYPxE-0003dw-J9 for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Mar 2023 11:21:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pYPxC-00034t-Ef for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Mar 2023 11:21:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pYPxB-00034k-Pr for pgsql-hackers@lists.postgresql.org; Sat, 04 Mar 2023 11:21:30 +0000 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pYPx0-0006jZ-Hq for pgsql-hackers@postgresql.org; Sat, 04 Mar 2023 11:21:28 +0000 Received: by mail-wm1-x32c.google.com with SMTP id l7-20020a05600c4f0700b003e79fa98ce1so2606432wmq.2 for ; Sat, 04 Mar 2023 03:21:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677928876; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=4N2BsR0OZuAIPTDcgewL40TCX1X6tagZW0eoVRNN21M=; b=Ho+JBm+EUf3J39pJYGMqiXlk42doahdZY3FnzcebhnTmvhwfhU2Ji2MtWoVOSCNg21 DhXoB5Rh7lVGlJocNiMJp+6zTLHkXfdynYGtlbEeUjrl5B5BdL4WmqnuSDqbWQgZcLzR RpYGZnihYU+7VDVMhA7NZuvNXqRDhG8EWNxNEklHJmvDMRSWH/KHdGBQYAVbGKdxzwnh vh6lXihgVlBD9VLQCa8uAJPQOeIRN/ynjc/L1cM0lI2an99S2JD4Kq24NpXe4XaJfbHB j/5wgNk95T3hhtdCFTYns3u8X3gKQI/366qDSGKRXVolMF+yZ0hlCEAsUxOJwL3vZUXb QSmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677928876; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4N2BsR0OZuAIPTDcgewL40TCX1X6tagZW0eoVRNN21M=; b=tk7yYHIhsCwiCXkRNAQeTuUCMCJ3Z0XIiWnGwpsOfvQ3JjQR74Wycy+231Ac+G6a7u NBV7ucQeE8wRkUHSivr9jusIB0vkXqouyhiNaz6THdnTc0CAgm6sXTJa/+3KvZWHJCcV O69cmO62QHopcwy94q0zmFtJUz+XwmJm3+JDJqkOmLEGoNa1Da+qYInfejqOxXEf1D0P Xfw389wza1wXc/GVeL/W0SnXjcnrqjKme/VdSWyl9LDvpj4IiEWZgJs9bduE7rHFB3iJ cnylbWR/ZQs1JQMW17ks0mpnY4UVh9+q76v2Ikp0hH8s4CBa2YaYswChpREBqkFBsFdN vCuQ== X-Gm-Message-State: AO0yUKWRyKAKjOYPfjrXgU1LukvkkVoB588iYnNFxT9g0AQ+aBrgZK6D q7PwqEvPvAXqJ8EtDicT/Wo= X-Google-Smtp-Source: AK7set9usbrdi/1RUNG4S5TOjgRvt7GGAvOLv3sUAFbA6Ew/qlScQd+GJAyXkVjSID71nuR1VliO+Q== X-Received: by 2002:a05:600c:358a:b0:3ea:c101:72b with SMTP id p10-20020a05600c358a00b003eac101072bmr3838902wmq.17.1677928875983; Sat, 04 Mar 2023 03:21:15 -0800 (PST) Received: from [192.168.20.139] ([54.239.6.186]) by smtp.gmail.com with ESMTPSA id e41-20020a05600c4ba900b003e1f2e43a1csm4704020wmp.48.2023.03.04.03.21.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 04 Mar 2023 03:21:15 -0800 (PST) Content-Type: multipart/mixed; boundary="------------81CZJfcmj1oWXKlVi25CTUV4" Message-ID: Date: Sat, 4 Mar 2023 12:19:57 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: Minimal logical decoding on standbys From: "Drouvot, Bertrand" To: Jeff Davis , Andres Freund Cc: Robert Haas , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <05c0c4f3-82eb-bc6d-c876-5a265c05927b@gmail.com> <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> <490206c5-bcde-e558-628a-dc67dae4d439@gmail.com> <20230119024617.jzsgpcrgjdc6ysge@awork3.anarazel.de> <94d9d47e-72f4-393a-246e-e3fe8db7b741@gmail.com> <2d314c22b9e03415aa1c7d8fd1f698dae60effa7.camel@j-davis.com> <061eeb26-156e-6011-02b6-b4b1422e2aa6@gmail.com> <8a7da0c2-b7fe-1c78-4e47-a16239bf4839@gmail.com> <6ab352de1553c1e3d0c7d97c038dc470ca51e772.camel@j-davis.com> <4df984c8-3adb-3b69-0e4e-a491097862ce@gmail.com> Content-Language: en-US In-Reply-To: <4df984c8-3adb-3b69-0e4e-a491097862ce@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------81CZJfcmj1oWXKlVi25CTUV4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 3/3/23 5:26 PM, Drouvot, Bertrand wrote: > Hi, > > On 3/3/23 8:58 AM, Jeff Davis wrote: >> On Thu, 2023-03-02 at 11:45 -0800, Jeff Davis wrote: >>> In this case it looks easier to add the right API than to be sure >>> about >>> whether it's needed or not. >> >> I attached a sketch of one approach. > > Oh, that's very cool, thanks a lot! > >> I'm not very confident that it's >> the right API or even that it works as I intended it, but if others >> like the approach I can work on it some more. >> > > I'll look at it early next week. > Just attaching a tiny rebase due to ebd551f586 breaking 0001 (did not look at your patch yet). Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------81CZJfcmj1oWXKlVi25CTUV4 Content-Type: text/plain; charset=UTF-8; name="v52-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v52-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmYWRlZGEwNGFlZmJhZDgyMDJhZmZlZWE0MTY3ZWE5MTViN2U4MGIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDE0OjA4OjExICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTIgNi82XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjIgKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDRlOTEyYjRiZDQuLjNkYTI1NGVkMWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjggQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlCisgICAgIGNvbm5lY3Rpb24g aXMgYWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4g RXhpc3RpbmcKKyAgICAgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGludmFs aWRhdGVkIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8KKyAgICAgbGVz cyB0aGFuICdsb2dpY2FsJy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9y IGEgbG9naWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNu YXBzaG90LCBmb3Igd2hpY2gKKyAgICAgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50 bHkgcnVubmluZyB0cmFuc2FjdGlvbnMgaXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5 LCB0aGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMg aW5mb3JtYXRpb24KKyAgICAgaGFzIHRvIGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28s IHNsb3QgY3JlYXRpb24gbWF5IHdhaXQgZm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFw cGVuIG9uIHRoZSBwcmltYXJ5LiBJZiB0aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBh CisgICAgIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0 aW1lLiBPbmUgb3B0aW9uIHRvIHNwZWVkIGl0CisgICAgIGlzIHRvIGNhbGwgdGhlIDxmdW5j dGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvZnVuY3Rpb24+IG9uIHRoZSBwcmltYXJ5 LgorICAgIDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAgIFJl cGxpY2F0aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90aGlu ZyBhYm91dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------81CZJfcmj1oWXKlVi25CTUV4 Content-Type: text/plain; charset=UTF-8; name="v52-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v52-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA1MjMwOTkxNjkyNWVmNzExNTk0ODM0ZmIxM2MxOGM0ZTMyOTkzMWRmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjA0OjEyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTIgNS82XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkluIGFkZGl0aW9uIHRvIHRoZSBuZXcgVEFQIHRlc3QsIHRoaXMgY29tbWl0IGludHJv ZHVjZXMgYSBuZXcgcGdfbG9nX3N0YW5kYnlfc25hcHNob3QoKQpmdW5jdGlvbi4KClRoZSBp ZGVhIGlzIHRvIGJlIGFibGUgdG8gdGFrZSBhIHNuYXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNh Y3Rpb25zIGFuZCB3cml0ZSB0aGlzCnRvIFdBTCB3aXRob3V0IHJlcXVlc3RpbmcgZm9yIGEg KGNvc3RseSkgY2hlY2twb2ludC4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRl ciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJy aXppbyBkZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nZnVuY3MuYyAgICAgICAgfCAgMzIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f ZnVuY3Rpb25zLnNxbCAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9DbHVzdGVyLnBtICAgICAgfCAgMzcgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2lj YWxfZGVjb2RpbmcucGwgICAgICAgICB8IDcxMCArKysrKysrKysrKysrKysrKysKIDcgZmls ZXMgY2hhbmdlZCwgODAwIGluc2VydGlvbnMoKykKICAgMy4xJSBzcmMvYmFja2VuZC8KICAg NC4wJSBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC8KICA4OS43JSBzcmMvdGVzdC9y ZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDk3YjNmMWMxYTYuLmJmNGVmM2ZhOTggMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMu c2dtbApAQCAtMjY1NTcsNiArMjY1NTcsMjEgQEAgcG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6 OnBnX2xzbiArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9mZnNl dAogICAgICAgICBwcmVwYXJlZCB3aXRoIDx4cmVmIGxpbmtlbmQ9InNxbC1wcmVwYXJlLXRy YW5zYWN0aW9uIi8+LgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+Cisg ICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAg ICA8cHJpbWFyeT5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvcHJpbWFyeT4KKyAgICAgICAg PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hv dDwvZnVuY3Rpb24+ICgpCisgICAgICAgIDxyZXR1cm52YWx1ZT5wZ19sc248L3JldHVybnZh bHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGFrZSBhIHNu YXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGFuZCB3cml0ZSB0aGlzIHRvIFdBTCB3 aXRob3V0CisgICAgICAgIGhhdmluZyB0byB3YWl0IGJnd3JpdGVyIG9yIGNoZWNrcG9pbnRl ciB0byBsb2cgb25lLiBUaGlzIG9uZSBpcyB1c2VmdWwgZm9yCisgICAgICAgIGxvZ2ljYWwg ZGVjb2Rpbmcgb24gc3RhbmRieSBmb3Igd2hpY2ggbG9naWNhbCBzbG90IGNyZWF0aW9uIGlz IGhhbmdpbmcKKyAgICAgICAgdW50aWwgc3VjaCBhIHJlY29yZCBpcyByZXBsYXllZCBvbiB0 aGUgc3RhbmRieS4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAg ICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggYzA3ZGFhODc0Zi4uNDgxZTlhNDdkYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKQEAgLTM4LDYgKzM4 LDcgQEAKICNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKICNpbmNsdWRlICJ1dGlscy90aW1l c3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9zdGFuZGJ5LmgiCiAKIC8qCiAgKiBCYWNrdXAtcmVsYXRlZCB2YXJpYWJsZXMuCkBA IC0xOTYsNiArMTk3LDM3IEBAIHBnX3N3aXRjaF93YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlQ R19SRVRVUk5fTFNOKHN3aXRjaHBvaW50KTsKIH0KIAorLyoKKyAqIHBnX2xvZ19zdGFuZGJ5 X3NuYXBzaG90OiBjYWxsIExvZ1N0YW5kYnlTbmFwc2hvdCgpCisgKgorICogUGVybWlzc2lv biBjaGVja2luZyBmb3IgdGhpcyBmdW5jdGlvbiBpcyBtYW5hZ2VkIHRocm91Z2ggdGhlIG5v cm1hbAorICogR1JBTlQgc3lzdGVtLgorICovCitEYXR1bQorcGdfbG9nX3N0YW5kYnlfc25h cHNob3QoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlYTG9nUmVjUHRyCXJlY3B0cjsKKworCWlm IChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJyZWNvdmVyeSBpcyBpbiBwcm9ncmVzcyIpLAorCQkJCSBlcnJoaW50KCJwZ19sb2df c3RhbmRieV9zbmFwc2hvdCgpIGNhbm5vdCBiZSBleGVjdXRlZCBkdXJpbmcgcmVjb3Zlcnku IikpKTsKKworCWlmICghWExvZ1N0YW5kYnlJbmZvQWN0aXZlKCkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJIGVycm1zZygid2FsX2xldmVsIGlzIG5vdCBpbiBkZXNpcmVkIHN0YXRl IiksCisJCQkJIGVycmhpbnQoIndhbF9sZXZlbCBoYXMgdG8gYmUgPj0gV0FMX0xFVkVMX1JF UExJQ0EuIikpKTsKKworCXJlY3B0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJLyoK KwkgKiBBcyBhIGNvbnZlbmllbmNlLCByZXR1cm4gdGhlIFdBTCBsb2NhdGlvbiBvZiB0aGUg bGFzdCBpbnNlcnRlZCByZWNvcmQKKwkgKi8KKwlQR19SRVRVUk5fTFNOKHJlY3B0cik7Cit9 CisKIC8qCiAgKiBwZ19jcmVhdGVfcmVzdG9yZV9wb2ludDogYSBuYW1lZCBwb2ludCBmb3Ig cmVzdG9yZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1 bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3Fs CmluZGV4IDgzY2E4OTM0NDQuLmI3YzY1ZWEzN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApAQCAtNjQ0LDYgKzY0NCw4IEBAIFJFVk9LRSBFWEVD VVRFIE9OIEZVTkNUSU9OIHBnX2NyZWF0ZV9yZXN0b3JlX3BvaW50KHRleHQpIEZST00gcHVi bGljOwogCiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19zd2l0Y2hfd2FsKCkgRlJP TSBwdWJsaWM7CiAKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19zdGFuZGJ5 X3NuYXBzaG90KCkgRlJPTSBwdWJsaWM7CisKIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9O IHBnX3dhbF9yZXBsYXlfcGF1c2UoKSBGUk9NIHB1YmxpYzsKIAogUkVWT0tFIEVYRUNVVEUg T04gRlVOQ1RJT04gcGdfd2FsX3JlcGxheV9yZXN1bWUoKSBGUk9NIHB1YmxpYzsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGFiZGM2ZTIzZjIuLjM5Y2IzYzBkMjYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNjM5Myw2ICs2MzkzLDkgQEAKIHsgb2lkID0+ ICcyODQ4JywgZGVzY3IgPT4gJ3N3aXRjaCB0byBuZXcgd2FsIGZpbGUnLAogICBwcm9uYW1l ID0+ICdwZ19zd2l0Y2hfd2FsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ ICdwZ19sc24nLAogICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwZ19zd2l0Y2hf d2FsJyB9LAoreyBvaWQgPT4gJzk2NTgnLCBkZXNjciA9PiAnbG9nIGRldGFpbHMgb2YgdGhl IGN1cnJlbnQgc25hcHNob3QgdG8gV0FMJywKKyAgcHJvbmFtZSA9PiAncGdfbG9nX3N0YW5k Ynlfc25hcHNob3QnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3BnX2xz bicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3BnX2xvZ19zdGFuZGJ5X3Nu YXBzaG90JyB9LAogeyBvaWQgPT4gJzMwOTgnLCBkZXNjciA9PiAnY3JlYXRlIGEgbmFtZWQg cmVzdG9yZSBwb2ludCcsCiAgIHByb25hbWUgPT4gJ3BnX2NyZWF0ZV9yZXN0b3JlX3BvaW50 JywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9h cmd0eXBlcyA9PiAndGV4dCcsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1 c3Rlci5wbQppbmRleCAzZTJhMjdmYjcxLi5kYTU4MjU3ZjRmIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwNjAsNiArMzA2MCw0MyBAQCAk U0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAkbm9kZS0+ Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIHByaW1hcnksIHNsb3RfbmFt ZSwgZGJuYW1lKQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIGdpdmVu IHN0YW5kYnkKKworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5 Cit7CisJbXkgKCRzZWxmLCAkcHJpbWFyeSwgJHNsb3RfbmFtZSwgJGRibmFtZSkgPSBAXzsK KwlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhhbmRsZSA9 IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYtPmNvbm5z dHIoJGRibmFtZSksICctUCcsICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3RfbmFtZSwg Jy0tY3JlYXRlLXNsb3QnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOworCisJ IyBPbmNlIHNsb3QgcmVzdGFydF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkgbG9va3Mg Zm9yIHhsX3J1bm5pbmdfeGFjdHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVzdGFydF9s c24gb253YXJkcy4gU28gZmlyc3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMgcmVzdGFy dF9sc24gaXMgZXZhbHVhdGVkLgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdw b3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwKKwkJRlJP TSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICck c2xvdF9uYW1lJworCV0pIG9yIGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxvZ2ljYWwg c2xvdCB0byBjYWxjdWxhdGUgaXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFycmFuZ2Ug Zm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVjdmxvZ2lj YWwKKwkjIGlzIHdhaXRpbmcuCisJJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn U0VMRUNUIHBnX2xvZ19zdGFuZGJ5X3NuYXBzaG90KCknKTsKKworCSRoYW5kbGUtPmZpbmlz aCgpOworCisJaXMoJHNlbGYtPnNsb3QoJHNsb3RfbmFtZSktPnsnc2xvdF90eXBlJ30sICds b2dpY2FsJywgJHNsb3RfbmFtZSAuICcgb24gc3RhbmRieSBjcmVhdGVkJykKKwkJb3IgZGll ICJjb3VsZCBub3QgY3JlYXRlIHNsb3QiIC4gJHNsb3RfbmFtZTsKK30KKworPXBvZAorCiA9 YmFjawogCiA9Y3V0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4IDU5NDY1Yjk3ZjMuLmU4 MzRhZDVlMGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisr KyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC00MCw2ICs0MCw3IEBAIHRl c3RzICs9IHsKICAgICAgICd0LzAzMl9yZWxmaWxlbm9kZV9yZXVzZS5wbCcsCiAgICAgICAn dC8wMzNfcmVwbGF5X3RzcF9kcm9wcy5wbCcsCiAgICAgICAndC8wMzRfY3JlYXRlX2RhdGFi YXNlLnBsJywKKyAgICAgICd0LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwnLAog ICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uOGM0NTE4MGMzNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMCwwICsxLDcx MCBAQAorIyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgOiB0ZXN0IGxvZ2ljYWwgZGVj b2RpbmcsCisjIHJlY292ZXJ5IGNvbmZsaWN0IGFuZCBzdGFuZGJ5IHByb21vdGlvbi4KKwor dXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZSB0 ZXN0cyA9PiA2NzsKKworbXkgKCRzdGRpbiwgJHN0ZG91dCwgJHN0ZGVyciwgJGNhc2NhZGlu Z19zdGRvdXQsICRjYXNjYWRpbmdfc3RkZXJyLCAkcmV0LCAkaGFuZGxlLCAkc2xvdCk7CisK K215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3By aW1hcnknKTsKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3N0YW5kYnknKTsKK215ICRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5ID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdjYXNjYWRpbmdfc3RhbmRieScpOworbXkgJGRl ZmF1bHRfdGltZW91dCA9ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZh dWx0OworbXkgJHJlczsKKworIyBOYW1lIGZvciB0aGUgcGh5c2ljYWwgc2xvdCBvbiBwcmlt YXJ5CitteSAkcHJpbWFyeV9zbG90bmFtZSA9ICdwcmltYXJ5X3BoeXNpY2FsJzsKK215ICRz dGFuZGJ5X3BoeXNpY2FsX3Nsb3RuYW1lID0gJ3N0YW5kYnlfcGh5c2ljYWwnOworCisjIGZp bmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2RlIGFmdGVyICRvZmYtdGggYnl0ZQorc3ViIGZp bmRfaW5fbG9nCit7CisJbXkgKCRub2RlLCAkcGF0LCAkb2ZmKSA9IEBfOworCisJJG9mZiA9 IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKKwlteSAkbG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOworCXJldHVybiAwIGlmIChsZW5n dGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9nID0gc3Vic3RyKCRsb2csICRvZmYpOworCisJ cmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30KKworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJv bSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgor IyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSBy ZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgorc3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkg KCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19leHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxf cXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIK KwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3Rf bmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9y IHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9CisKKyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBs b2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sK KwlteSAoJG5vZGUpID0gQF87CisJJG5vZGUtPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieSgkbm9kZV9wcmltYXJ5LCAnaW5hY3RpdmVzbG90JywgJ3Rlc3RkYicpOworCSRub2Rl LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2 ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgRHJvcCB0aGUgbG9naWNhbCBzbG90cyBvbiBz dGFuZGJ5Lgorc3ViIGRyb3BfbG9naWNhbF9zbG90cworeworCSRub2RlX3N0YW5kYnktPnBz cWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdpbmFj dGl2ZXNsb3QnKV0pOworCSRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxF Q1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsKK30KKworIyBB Y3F1aXJlIG9uZSBvZiB0aGUgc3RhbmRieSBsb2dpY2FsIHNsb3RzIGNyZWF0ZWQgYnkgY3Jl YXRlX2xvZ2ljYWxfc2xvdHMoKS4KKyMgSW4gY2FzZSB3YWl0IGlzIHRydWUgd2UgYXJlIHdh aXRpbmcgZm9yIGFuIGFjdGl2ZSBwaWQgb24gdGhlICdhY3RpdmVzbG90JyBzbG90LgorIyBJ ZiB3YWl0IGlzIG5vdCB0cnVlIGl0IG1lYW5zIHdlIGFyZSB0ZXN0aW5nIGEga25vd24gZmFp bHVyZSBzY2VuYXJpby4KK3N1YiBtYWtlX3Nsb3RfYWN0aXZlCit7CisJbXkgKCRub2RlLCAk d2FpdCwgJHRvX3N0ZG91dCwgJHRvX3N0ZGVycikgPSBAXzsKKwlteSAkc2xvdF91c2VyX2hh bmRsZTsKKworCSRzbG90X3VzZXJfaGFuZGxlID0gSVBDOjpSdW46OnN0YXJ0KFsncGdfcmVj dmxvZ2ljYWwnLCAnLWQnLCAkbm9kZS0+Y29ubnN0cigndGVzdGRiJyksICctUycsICdhY3Rp dmVzbG90JywgJy1vJywgJ2luY2x1ZGUteGlkcz0wJywgJy1vJywgJ3NraXAtZW1wdHkteGFj dHM9MScsICctLW5vLWxvb3AnLCAnLS1zdGFydCcsICctZicsICctJ10sICc+JywgJHRvX3N0 ZG91dCwgJzI+JywgJHRvX3N0ZGVycik7CisKKwlpZiAoJHdhaXQpCisJeworCQkjIG1ha2Ug c3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQorCQkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgn dGVzdGRiJywKKwkJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0 aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVzbG90JyBBTkQgYWN0aXZlX3Bp ZCBJUyBOT1QgTlVMTCkiCisJCSkgb3IgZGllICJzbG90IG5ldmVyIGJlY2FtZSBhY3RpdmUi OworCX0KKwlyZXR1cm4gJHNsb3RfdXNlcl9oYW5kbGU7Cit9CisKKyMgQ2hlY2sgcGdfcmVj dmxvZ2ljYWwgc3RkZXJyCitzdWIgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyCit7CisJ bXkgKCRzbG90X3VzZXJfaGFuZGxlLCAkY2hlY2tfc3RkZXJyKSA9IEBfOworCW15ICRyZXR1 cm47CisKKwkjIG91ciBjbGllbnQgc2hvdWxkJ3ZlIHRlcm1pbmF0ZWQgaW4gcmVzcG9uc2Ug dG8gdGhlIHdhbHNlbmRlciBlcnJvcgorCSRzbG90X3VzZXJfaGFuZGxlLT5maW5pc2g7CisJ JHJldHVybiA9ICQ/OworCWNtcF9vaygkcmV0dXJuLCAiIT0iLCAwLCAicGdfcmVjdmxvZ2lj YWwgZXhpdGVkIG5vbi16ZXJvIik7CisJaWYgKCRyZXR1cm4pIHsKKwkJbGlrZSgkc3RkZXJy LCBxci8kY2hlY2tfc3RkZXJyLywgJ3Nsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQnKTsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKworIyBDaGVjayBpZiBhbGwgdGhlIHNsb3RzIG9uIHN0YW5k YnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3RpdmVzbG90JworIyB0aGF0 IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFuZCB0aGUgbm9uLWFjdGl2 ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGVja19zbG90c19kcm9wcGVkCit7CisJbXkgKCRz bG90X3VzZXJfaGFuZGxlKSA9IEBfOworCisJaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgnaW5h Y3RpdmVzbG90JyktPnsnc2xvdF90eXBlJ30sICcnLCAnaW5hY3RpdmVzbG90IG9uIHN0YW5k YnkgZHJvcHBlZCcpOworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2FjdGl2ZXNsb3QnKS0+ eydzbG90X3R5cGUnfSwgJycsICdhY3RpdmVzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcpOwor CisJY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRzbG90X3VzZXJfaGFuZGxlLCAiY29u ZmxpY3Qgd2l0aCByZWNvdmVyeSIpOworfQorCisjIENoZWNrIGlmIGFsbCB0aGUgc2xvdHMg b24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0aGUgJ2FjdGl2ZXNsb3Qn CisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3RpdmUoKSwgYW5kIHRoZSBu b24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoYW5nZV9ob3Rfc3RhbmRieV9mZWVk YmFja19hbmRfd2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJGhzZiwgJGludmFsaWRhdGVkKSA9 IEBfOworCisJJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics cXFbCisJaG90X3N0YW5kYnlfZmVlZGJhY2sgPSAkaHNmCisJXSk7CisKKwkkbm9kZV9zdGFu ZGJ5LT5yZWxvYWQ7CisKKwlpZiAoJGhzZiAmJiAkaW52YWxpZGF0ZWQpCisJeworCQkjIFdp dGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFkdmFuY2UsCisJCSMg YnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwgc2luY2UgdGhlcmUg aXMgbm8gbG9naWNhbCBzbG90LgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAk cHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9n X3htaW4gSVMgTlVMTCIpOworCX0KKwllbHNpZiAoJGhzZikKKwl7CisJCSMgV2l0aCBob3Rf c3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBhbmQgY2F0YWxvZ194bWluIHNob3VsZCBhZHZh bmNlLgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFt ZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTk9UIE5V TEwiKTsKKwl9CisJZWxzZQorCXsKKwkJIyBCb3RoIHNob3VsZCBiZSBOVUxMIHNpbmNlIGhz X2ZlZWRiYWNrIGlzIG9mZgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJp bWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJ UyBOVUxMIik7CisKKwl9Cit9CisKKyMgQ2hlY2sgY29uZmxpY3Rpbmcgc3RhdHVzIGluIHBn X3JlcGxpY2F0aW9uX3Nsb3RzLgorc3ViIGNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1 cworeworCW15ICgkY29uZmxpY3RpbmcpID0gQF87CisKKwlpZiAoJGNvbmZsaWN0aW5nKQor CXsKKwkJJHJlcyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkJCQkncG9zdGdyZXMn LCBxcSgKKwkJCQkgc2VsZWN0IGJvb2xfYW5kKGNvbmZsaWN0aW5nKSBmcm9tIHBnX3JlcGxp Y2F0aW9uX3Nsb3RzOykpOworCisJCWlzKCRyZXMsICd0JywKKwkJCSJMb2dpY2FsIHNsb3Rz IGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyIpOworCX0KKwllbHNlCisJeworCQkkcmVz ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCQkJCSdwb3N0Z3JlcycsIHFxKAorCQkJ CXNlbGVjdCBib29sX29yKGNvbmZsaWN0aW5nKSBmcm9tIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz OykpOworCisJCWlzKCRyZXMsICdmJywKKwkJCSJMb2dpY2FsIHNsb3RzIGFyZSByZXBvcnRl ZCBhcyBub24gY29uZmxpY3RpbmciKTsKKwl9Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBoYXNf YXJjaGl2aW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9z bG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVi dWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9IHZlcmJvc2UKK30pOworJG5vZGVfcHJpbWFy eS0+ZHVtcF9pbmZvOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyRub2RlX3ByaW1hcnkt PnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVh dGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHByaW1hcnlfc2xvdG5hbWUnKTtdKTsK KworIyBDaGVjayBjb25mbGljdGluZyBpcyBOVUxMIGZvciBwaHlzaWNhbCBzbG90CiskcmVz ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcVsKKwkJIFNF TEVDVCBjb25mbGljdGluZyBpcyBudWxsIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgd2hl cmUgc2xvdF9uYW1lID0gJyRwcmltYXJ5X3Nsb3RuYW1lJztdKTsKKworaXMoJHJlcywgJ3Qn LAorCSJQaHlzaWNhbCBzbG90IHJlcG9ydHMgY29uZmxpY3RpbmcgYXMgTlVMTCIpOworCitt eSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBf bmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUgc3RhbmRi eSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9zdGFuZGJ5LT5pbml0 X2Zyb21fYmFja3VwKAorCSRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3Ry ZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1hcnlfc2xvdF9uYW1lID0g JyRwcmltYXJ5X3Nsb3RuYW1lJ10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7Ciskbm9kZV9w cmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKyRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVh dGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHN0YW5kYnlfcGh5c2ljYWxfc2xvdG5h bWUnKTtdKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBjYXNj YWRpbmcgc3RhbmRieSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworJG5vZGVfc3Rh bmRieS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7Ciskbm9kZV9jYXNjYWRpbmdfc3RhbmRieS0+ aW5pdF9mcm9tX2JhY2t1cCgKKwkkbm9kZV9zdGFuZGJ5LCAkYmFja3VwX25hbWUsCisJaGFz X3N0cmVhbWluZyA9PiAxLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7Ciskbm9kZV9jYXNjYWRp bmdfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFbcHJpbWFy eV9zbG90X25hbWUgPSAnJHN0YW5kYnlfcGh5c2ljYWxfc2xvdG5hbWUnXSk7Ciskbm9kZV9j YXNjYWRpbmdfc3RhbmRieS0+c3RhcnQ7Ciskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9yZXBs YXlfY2F0Y2h1cCgkbm9kZV9jYXNjYWRpbmdfc3RhbmRieSwgJG5vZGVfcHJpbWFyeSk7CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdGhhdCBsb2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5CisjIGJlaGF2ZXMg Y29ycmVjdGx5LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2Fs X3Nsb3RzKCRub2RlX3N0YW5kYnkpOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rl c3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190ZXN0KHggaW50ZWdlciwgeSB0ZXh0 KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElO VE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9j YXRjaHVwKCRub2RlX3N0YW5kYnkpOworCitteSAkcmVzdWx0ID0gJG5vZGVfc3RhbmRieS0+ c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2No YW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKTtdKTsKKworIyB0ZXN0IGlmIGJhc2lj IGRlY29kaW5nIHdvcmtzCitpcyhzY2FsYXIobXkgQGZvb2JhciA9IHNwbGl0IC9eL20sICRy ZXN1bHQpLAorCTE0LCAnRGVjb2RpbmcgcHJvZHVjZWQgMTQgcm93cyAoMiBCRUdJTi9DT01N SVQgYW5kIDEwIHJvd3MpJyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhbmQgdmVyaWZ5IHRo YXQgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgZnJvbSBwZ19yZWN2bG9naWNhbAorIyBhbmQg dGhlIFNRTCBpbnRlcmZhY2UuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics CisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0 IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCitteSAkZXhwZWN0ZWQgPSBx e0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJd OjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhb aW50ZWdlcl06MiB5W3RleHRdOicyJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElO U0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4dF06JzMnCit0YWJsZSBwdWJsaWMuZGVjb2Rpbmdf dGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjQgeVt0ZXh0XTonNCcKK0NPTU1JVH07CisKKyRu b2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwor CitteSAkc3Rkb3V0X3NxbCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywK KwlxcVtTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2Fj dGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0 eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dv dCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbicpOworCitteSAk ZW5kcG9zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCSJTRUxFQ1Qg bHNuIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5V TEwsIE5VTEwpIE9SREVSIEJZIGxzbiBERVNDIExJTUlUIDE7IgorKTsKKworIyBJbnNlcnQg c29tZSByb3dzIGFmdGVyICRlbmRwb3MsIHdoaWNoIHdlIHdvbid0IHJlYWQuCiskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2Rpbmdf dGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNTAp IHM7XQorKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFu ZGJ5KTsKKworbXkgJHN0ZG91dF9yZWN2ID0gJG5vZGVfc3RhbmRieS0+cGdfcmVjdmxvZ2lj YWxfdXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNsb3QnLCAkZW5kcG9zLCAkZGVmYXVs dF90aW1lb3V0LAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAnMCcsCisgICAgJ3NraXAt ZW1wdHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3JlY3YpOworaXMoJHN0ZG91 dF9yZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9t IHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKworJG5vZGVfc3RhbmRieS0+ cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEg RlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnYWN0aXZlc2xv dCcgQU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9yIGRpZSAic2xvdCBuZXZlciBiZWNh bWUgaW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5LT5wZ19yZWN2 bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRlbmRwb3MsICRk ZWZhdWx0X3RpbWVvdXQsCisgICAgJ2luY2x1ZGUteGlkcycgICAgID0+ICcwJywKKyAgICAn c2tpcC1lbXB0eS14YWN0cycgPT4gJzEnKTsKK2Nob21wKCRzdGRvdXRfcmVjdik7Citpcygk c3Rkb3V0X3JlY3YsICcnLCAncGdfcmVjdmxvZ2ljYWwgYWNrbm93bGVkZ2VkIGNoYW5nZXMn KTsKKworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgREFU QUJBU0Ugb3RoZXJkYicpOworCitpcyggJG5vZGVfcHJpbWFyeS0+cHNxbCgKKyAgICAgICAg J290aGVyZGInLAorICAgICAgICAiU0VMRUNUIGxzbiBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9w ZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKSBPUkRFUiBCWSBsc24gREVT QyBMSU1JVCAxOyIKKyAgICApLAorICAgIDMsCisgICAgJ3JlcGxheWluZyBsb2dpY2FsIHNs b3QgZnJvbSBhbm90aGVyIGRhdGFiYXNlIGZhaWxzJyk7CisKKyMgZHJvcCB0aGUgbG9naWNh bCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJ bnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisj IFNjZW5hcmlvIDE6IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9mZiBhbmQgdmFjdXVtIEZVTEwK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygkbm9k ZV9zdGFuZGJ5KTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxpY3Qg aXMgdG8gY3JlYXRlL2Ryb3AgYSByZWxhdGlvbiBhbmQKKyMgbGF1bmNoIGEgdmFjdXVtIGZ1 bGwgb24gcGdfY2xhc3Mgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2ZmIG9u CisjIHRoZSBzdGFuZGJ5LgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0 X2Zvcl94bWlucygwLDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9z dGFuZGJ5LCAxLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworCisjIFRoaXMgc2hvdWxkIHRyaWdn ZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFx W0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbRFJPUCBUQUJMRSBjb25mbGlj dF90ZXN0O10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVN IGZ1bGwgcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9j YXRjaHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAor b2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBz bG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVy eSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRo IHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRu b2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNh dXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90IHNsb3Qg aW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7 CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5w b2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZl X2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVy ZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNs b3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xv Z2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0 ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3Rz X2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUo JG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKworIyBXZSBhcmUgbm90 IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVk CitjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZy b20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMgVHVy biBob3Rfc3RhbmRieV9mZWVkYmFjayBiYWNrIG9uCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVl ZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDEsMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJ bnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisj IFNjZW5hcmlvIDI6IGNvbmZsaWN0IGR1ZSB0byByb3cgcmVtb3ZhbCB3aXRoIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIG9mZi4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBp biB0aGUgc3RhbmRieSBsb2dmaWxlCitteSAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5 LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9z bG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxf c2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292ZXJ5 IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kCisjIGxhdW5jaCBh IHZhY3V1bSBvbiBwZ19jbGFzcyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5lZCBv ZmYgb24gdGhlIHN0YW5kYnkuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dh aXRfZm9yX3htaW5zKDAsMSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2Rl X3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQgdHJp Z2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywg cXFbQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOwor JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtEUk9QIFRBQkxFIGNvbmZs aWN0X3Rlc3Q7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNV VU0gcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRj aHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2so IGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90 IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs ICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9n Z2VkIHdpdGggdmFjdXVtIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAg ICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBi ZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxvZ3N0YXJ0KSwKKyAgJ2Fj dGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGggdmFjdXVtIG9uIHBn X2NsYXNzJyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMu Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IGV4 cGVjdCAyIGNvbmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9z cyByZWxvYWRzCitvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9z dGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20g cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwg J3QnKSwKKwknY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRp bWVkIG91dCB3YWl0aW5nIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVk IjsKKworIyBWZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nIGluIHBn X3JlcGxpY2F0aW9uX3Nsb3RzCitjaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMoMSk7 CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDAsIFwkc3Rk b3V0LCBcJHN0ZGVycik7CisKKyMgV2UgYXJlIG5vdCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUg c2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxf c3RkZXJyKCRoYW5kbGUsICJjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24g c2xvdCBcImFjdGl2ZXNsb3RcIiIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogU2FtZSBhcyBT Y2VuYXJpbyAyIGJ1dCBvbiBhIG5vbiBjYXRhbG9nIHRhYmxlCisjIFNjZW5hcmlvIDM6IE5v IGNvbmZsaWN0IGV4cGVjdGVkLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9t IGluIHRoZSBzdGFuZGJ5IGxvZ2ZpbGUKKyRsb2dzdGFydCA9IC1zICRub2RlX3N0YW5kYnkt PmxvZ2ZpbGU7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Ns b3RzKCk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9z bG90cygkbm9kZV9zdGFuZGJ5KTsKKworIyBwdXQgaG90IHN0YW5kYnkgZmVlZGJhY2sgdG8g b2ZmCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDAs MSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwk c3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBjb25m bGljdAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFC TEUgY29uZmxpY3RfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0lOU0VSVCBJTlRPIGNvbmZsaWN0X3Rlc3QoeCx5 KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XSk7Cisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBjb25mbGljdF90 ZXN0IHNldCB4PTEsIHk9MTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgJ1ZBQ1VVTSBjb25mbGljdF90ZXN0OycpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKworIyBtZXNzYWdlIHNob3VsZCBu b3QgYmUgaXNzdWVkCitvayggIWZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAg ImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGlj dHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBp bnZhbGlkYXRpb24gaXMgbm90IGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBjb25mbGljdF90ZXN0 Jyk7CisKK29rKCAhZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxp ZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9u IGlzIG5vdCBsb2dnZWQgd2l0aCB2YWN1dW0gb24gY29uZmxpY3RfdGVzdCcpOworCisjIFZl cmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dp Y2Fsc2xvdCBoYXMgbm90IGJlZW4gdXBkYXRlZAorIyB3ZSBub3cgc3RpbGwgZXhwZWN0IDIg Y29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNyb3NzIHJlbG9h ZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3Jlcycs CisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMikgZnJvbSBwZ19zdGF0 X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAor CSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3Qgbm90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVk IG91dCB3YWl0aW5nIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsK KworIyBWZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIG5vbiBjb25mbGljdGluZyBpbiBw Z19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDAp OworCisjIFR1cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorY2hhbmdlX2hvdF9z dGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucygxLCAwKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3Zlcnkg Y29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11 c2Ugc2xvdHMKKyMgU2NlbmFyaW8gNDogY29uZmxpY3QgZHVlIHRvIG9uLWFjY2VzcyBwcnVu aW5nLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGluIHRoZSBzdGFuZGJ5 IGxvZ2ZpbGUKKyRsb2dzdGFydCA9IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CisKKyMg ZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgY3Jl YXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygkbm9kZV9zdGFu ZGJ5KTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxpY3QgaXMgdG8g dHJpZ2dlciBhbiBvbi1hY2Nlc3MgcHJ1bmluZworIyBvbiBhIHJlbGF0aW9uIG1hcmtlZCBh cyB1c2VyX2NhdGFsb2dfdGFibGUuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5k X3dhaXRfZm9yX3htaW5zKDAsMCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRu b2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQg dHJpZ2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgcXFbQ1JFQVRFIFRBQkxFIHBydW4oaWQgaW50ZWdlciwgcyBjaGFyKDIwMDApKSBXSVRI IChmaWxsZmFjdG9yID0gNzUsIHVzZXJfY2F0YWxvZ190YWJsZSA9IHRydWUpO10pOworJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtJTlNFUlQgSU5UTyBwcnVuIFZB TFVFUyAoMSwgJ0EnKTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywg cXFbVVBEQVRFIHBydW4gU0VUIHMgPSAnQic7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0MnO10pOworJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtVUERBVEUgcHJ1biBTRVQgcyA9ICdEJztd KTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIHBydW4g U0VUIHMgPSAnRSc7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRj aHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2so IGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90 IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs ICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9n Z2VkIHdpdGggb24tYWNjZXNzIHBydW5pbmcnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAg JG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJl Y2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0 aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCBvbi1hY2Nlc3MgcHJ1 bmluZycpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNv bmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBl Y3QgMyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3Mg cmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3Rn cmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAzKSBmcm9tIHBn X3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0 JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1l ZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7 CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19y ZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOwor CiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAwLCBcJHN0ZG91 dCwgXCRzdGRlcnIpOworCisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNs b3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0 ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNs b3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJh Y2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMo MSwgMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNs b3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDU6IGluY29ycmVjdCB3 YWxfbGV2ZWwgb24gcHJpbWFyeS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJv bSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5 LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9z bG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxf c2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRu b2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgTWFrZSBwcmltYXJ5 IHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0Lgor JG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9s ZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKwor IyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2Rl X3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1 c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3Rp dmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCBkdWUgdG8gd2FsX2xldmVsJyk7 CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRp bmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292 ZXJ5IiwgJGxvZ3N0YXJ0KSwKKyAgJ2FjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMg bG9nZ2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2Rh dGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgaGFzIGJlZW4gdXBk YXRlZAorIyB3ZSBub3cgZXhwZWN0IDMgY29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3Vu dGVyIHBlcnNpc3QgYWNyb3NzIHJlbG9hZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1 ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2lj YWxzbG90ID0gNCkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRu YW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBk YXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxz bG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMg Y29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZs aWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVf c3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKyMgV2UgYXJlIG5vdCBhYmxlIHRv IHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCByZXF1aXJlcyB3YWxfbGV2ZWwgYXQgbGVhc3Qg bG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0 ZGVycigkaGFuZGxlLCAibG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdh bF9sZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlciIp OworCisjIFJlc3RvcmUgcHJpbWFyeSB3YWxfbGV2ZWwKKyRub2RlX3ByaW1hcnktPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK10p OworJG5vZGVfcHJpbWFyeS0+cmVzdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3Jl cGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2Fj dGl2ZSgkbm9kZV9zdGFuZGJ5LCAwLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworIyBhcyB0aGUg c2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCB3ZSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVh ZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3QgcmVhZCBm cm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOworCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBEUk9Q IERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcgYWN0aXZlIHNs b3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCitkcm9wX2xvZ2ljYWxfc2xvdHMoKTsK KworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRu b2RlX3N0YW5kYnkpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFu ZGJ5LCAxLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworIyBDcmVhdGUgYSBzbG90IG9uIGEgZGF0 YWJhc2UgdGhhdCB3b3VsZCBub3QgYmUgZHJvcHBlZC4gVGhpcyBzbG90IHNob3VsZCBub3QK KyMgZ2V0IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29u X3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ290aGVyc2xvdCcsICdwb3N0Z3JlcycpOworCisj IGRyb3BkYiBvbiB0aGUgcHJpbWFyeSB0byB2ZXJpZnkgc2xvdHMgYXJlIGRyb3BwZWQgb24g c3RhbmRieQorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFbRFJPUCBE QVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2Nh dGNodXAoJG5vZGVfc3RhbmRieSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXFbU0VMRUNUIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNl IFdIRVJFIGRhdG5hbWUgPSAndGVzdGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVk IG9uIHN0YW5kYnknKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMo JG5vZGVfc3RhbmRieS0+c2xvdCgnb3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dp Y2FsJywKKwknb3RoZXJzbG90IG9uIHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVh bnVwIDogbWFudWFsbHkgZHJvcCB0aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRu b2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNh dGlvbl9zbG90KCdvdGhlcnNsb3QnKV0pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHN0YW5kYnkgcHJvbW90aW9uIGFu ZCBsb2dpY2FsIGRlY29kaW5nIGJlaGF2aW9yCisjIGFmdGVyIHRoZSBzdGFuZGJ5IGdldHMg cHJvbW90ZWQuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisjIHJlZHVjZSB3YWxfc2VuZGVyX3RpbWVvdXQgdG8gbm90IHdhaXQgdG9v IGxvbmcgYWZ0ZXIgcHJvbW90aW9uCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJyxxcVsKKwl3YWxfc2VuZGVyX3RpbWVvdXQgPSAxcworXSk7CisKKyRu b2RlX3N0YW5kYnktPnJlbG9hZDsKKworJG5vZGVfcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMn LCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rlc3QoeCBpbnRlZ2VyLCB5 IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2lj YWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3Rz IG9uIHRoZSBjYXNjYWRpbmcgc3RhbmRieSB0b28KK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRu b2RlX2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworIyBNYWtlIHNsb3RzIGFjdGl2ZXMKKyRoYW5k bGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0 ZGVycik7CitteSAkY2FzY2FkaW5nX2hhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVf Y2FzY2FkaW5nX3N0YW5kYnksIDEsIFwkY2FzY2FkaW5nX3N0ZG91dCwgXCRjYXNjYWRpbmdf c3RkZXJyKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9yZSB0aGUgcHJvbW90aW9uCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVj b2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsNCkgcztdCispOworCisjIFdhaXQgZm9yIGJvdGggc3RhbmRieXMgdG8gY2F0Y2h1cAor JG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7 Ciskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9jYXNjYWRp bmdfc3RhbmRieSwgJG5vZGVfcHJpbWFyeSk7CisKKyMgcHJvbW90ZQorJG5vZGVfc3RhbmRi eS0+cHJvbW90ZTsKKworIyBpbnNlcnQgc29tZSByb3dzIG9uIHByb21vdGVkIHN0YW5kYnkK KyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJTlNFUlQgSU5UTyBk ZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNSw3KSBzO10KKyk7CisKKyMgV2FpdCBmb3IgdGhlIGNhc2NhZGluZyBzdGFuZGJ5IHRv IGNhdGNodXAKKyRub2RlX3N0YW5kYnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2Rl X2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworJGV4cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0 YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0 XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06 MyB5W3RleHRdOiczJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtp bnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01NSVQKK0JFR0lOCit0YWJsZSBwdWJsaWMuZGVj b2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjUgeVt0ZXh0XTonNScKK3RhYmxlIHB1 YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NiB5W3RleHRdOic2Jwor dGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo3IHlbdGV4 dF06JzcnCitDT01NSVR9OworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBh bmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworJHN0ZG91dF9zcWwgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKwor aXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBT UUwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBwcm9tb3RlZCBzdGFuZGJ5Jyk7CisKKyMgY2hlY2sg dGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJlIGFuZCBwb3N0IHByb21vdGlvbiBpbnNlcnRlZCBy b3dzCisjIHdpdGggcGdfcmVjdmxvZ2ljYWwgdGhhdCBoYXMgc3RhcnRlZCBiZWZvcmUgdGhl IHByb21vdGlvbgorbXkgJHB1bXBfdGltZW91dCA9IElQQzo6UnVuOjp0aW1lcigkUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKK29rKCBwdW1wX3VudGls KAorICAgICAgICAkaGFuZGxlLCAkcHVtcF90aW1lb3V0LCBcJHN0ZG91dCwgcXIvXi4qQ09N TUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNh bCBvdXRwdXQnKTsKKworY2hvbXAoJHN0ZG91dCk7Citpcygkc3Rkb3V0LCAkZXhwZWN0ZWQs CisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRl Y29kaW5nIHNlc3Npb24nKTsKKworIyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUg YW5kIHBvc3QgcHJvbW90aW9uIGluc2VydGVkIHJvd3Mgb24gdGhlIGNhc2NhZGluZyBzdGFu ZGJ5Ciskc3Rkb3V0X3NxbCA9ICRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19j aGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAn LCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRl eHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lv biBvbiBjYXNjYWRpbmcgc3RhbmRieScpOworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29k aW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworIyB3aXRoIHBnX3Jl Y3Zsb2dpY2FsIHRoYXQgaGFzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcm9tb3Rpb24gb24gdGhl IGNhc2NhZGluZyBzdGFuZGJ5CitvayggcHVtcF91bnRpbCgKKyAgICAgICAgJGNhc2NhZGlu Z19oYW5kbGUsICRwdW1wX3RpbWVvdXQsIFwkY2FzY2FkaW5nX3N0ZG91dCwgcXIvXi4qQ09N TUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNh bCBvdXRwdXQnKTsKKworY2hvbXAoJGNhc2NhZGluZ19zdGRvdXQpOworaXMoJGNhc2NhZGlu Z19zdGRvdXQsICRleHBlY3RlZCwKKyAgICAnZ290IHNhbWUgZXhwZWN0ZWQgb3V0cHV0IGZy b20gcGdfcmVjdmxvZ2ljYWwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBjYXNjYWRpbmcgc3RhbmRi eScpOwotLSAKMi4zNC4xCgo= --------------81CZJfcmj1oWXKlVi25CTUV4 Content-Type: text/plain; charset=UTF-8; name="v52-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v52-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiZDdiY2IwOGJlZDBkZjdjODBlODZiYzIyMzI3NTkzMTE2OTg2ZmVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjAwOjI5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTIgNC82XSBGaXhpbmcgV2Fsc2VuZGVyIGNvcm5lciBjYXNlIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbgogc3RhbmRieS4KClRoZSBwcm9ibGVtIGlzIHRoYXQgV2FsU25kV2FpdEZv cldhbCgpIHdhaXRzIGZvciB0aGUgKnJlcGxheSogTFNOIHRvCmluY3JlYXNlLCBidXQgZ2V0 cyB3b2tlbiB1cCBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJlZW4KZmx1c2hl ZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkgd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tl biB1cCBhdCB0aGUKc2FtZSB0aW1lIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyB3aWxsIGJl IC0gd2hpY2ggbWVhbnMgdGhhdCBieSB0aGUKdGltZSB0aGUgbG9naWNhbCB3YWxzZW5kZXIg Y2hlY2tzIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdzIHVubGlrZWx5CnRoYXQgdGhlIHN0 YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQK WExvZ0N0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyLgoKSW50cm9kdWNpbmcgYSBuZXcgY29u ZGl0aW9uIHZhcmlhYmxlIHRvIGZpeCB0aGlzIGNvcm5lciBjYXNlLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgMjggKysrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgfCAzNCAr KysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgfCAgMyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5o ICAgICAgICAgfCAgMyArKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgg ICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAg ICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKICA0My4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICA0Ni4xJSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KICAgMy44JSBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS8KICAgMy43JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCiAgIDMuMSUgc3JjL2luY2x1ZGUvCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBkYmU5 Mzk0NzYyLi44YTk1MDVhNTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYwpAQCAtMzU4LDYgKzM1OCw5IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dS ZWNvdmVyeUN0bERhdGEKIAlSZWNvdmVyeVBhdXNlU3RhdGUgcmVjb3ZlcnlQYXVzZVN0YXRl OwogCUNvbmRpdGlvblZhcmlhYmxlIHJlY292ZXJ5Tm90UGF1c2VkQ1Y7CiAKKwkvKiBSZXBs YXkgc3RhdGUgKHNlZSBjaGVja19mb3JfcmVwbGF5KCkgZm9yIG1vcmUgZXhwbGFuYXRpb24p ICovCisJQ29uZGl0aW9uVmFyaWFibGUgcmVwbGF5ZWRDVjsKKwogCXNsb2NrX3QJCWluZm9f bGNrOwkJLyogbG9ja3Mgc2hhcmVkIHZhcmlhYmxlcyBzaG93biBhYm92ZSAqLwogfSBYTG9n UmVjb3ZlcnlDdGxEYXRhOwogCkBAIC00NjgsNiArNDcxLDcgQEAgWExvZ1JlY292ZXJ5U2ht ZW1Jbml0KHZvaWQpCiAJU3BpbkxvY2tJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNr KTsKIAlJbml0U2hhcmVkTGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBM YXRjaCk7CiAJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292 ZXJ5Tm90UGF1c2VkQ1YpOworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZXBsYXllZENWKTsKIH0KIAogLyoKQEAgLTE5MzUsNiArMTkzOSwxMSBAQCBBcHBs eVdhbFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJl Y29yZCwgVGltZUxpbmVJRCAqcmVwbAogCVhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVk VExJID0gKnJlcGxheVRMSTsKIAlTcGluTG9ja1JlbGVhc2UoJlhMb2dSZWNvdmVyeUN0bC0+ aW5mb19sY2spOwogCisJLyoKKwkgKiB3YWtlIHVwIHdhbHNlbmRlcihzKSB1c2VkIGJ5IGxv Z2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieS4KKwkgKi8KKwlDb25kaXRpb25WYXJpYWJsZUJy b2FkY2FzdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZXBsYXllZENWKTsKKwogCS8qCiAJICogSWYg cm1fcmVkbyBjYWxsZWQgWExvZ1JlcXVlc3RXYWxSZWNlaXZlclJlcGx5LCB0aGVuIHdlIHdh a2UgdXAgdGhlCiAJICogcmVjZWl2ZXIgc28gdGhhdCBpdCBub3RpY2VzIHRoZSB1cGRhdGVk IGxhc3RSZXBsYXllZEVuZFJlY1B0ciBhbmQgc2VuZHMKQEAgLTQ5NDIsMyArNDk1MSwyMiBA QCBhc3NpZ25fcmVjb3ZlcnlfdGFyZ2V0X3hpZChjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQg KmV4dHJhKQogCWVsc2UKIAkJcmVjb3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJHRVRfVU5T RVQ7CiB9CisKKy8qCisgKiBSZXR1cm4gdGhlIENvbmRpdGlvblZhcmlhYmxlIGluZGljYXRp bmcgdGhhdCBhIHJlcGxheSBoYXMgYmVlbiBkb25lLgorICoKKyAqIFRoaXMgaXMgbmVlZGVk IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuIEluZGVlZCB0aGUgInByb2JsZW0i IGlzIHRoYXQKKyAqIFdhbFNuZFdhaXRGb3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkq IExTTiB0byBpbmNyZWFzZSwgYnV0IGdldHMgd29rZW4gdXAKKyAqIGJ5IHdhbHJlY2VpdmVy IHdoZW4gbmV3IFdBTCBoYXMgYmVlbiBmbHVzaGVkLiBXaGljaCBtZWFucyB0aGF0IHR5cGlj YWxseQorICogd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tlbiB1cCBhdCB0aGUgc2FtZSB0aW1l IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcworICogd2lsbCBiZSAtIHdoaWNoIG1lYW5zIHRo YXQgYnkgdGhlIHRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVyIGNoZWNrcworICogR2V0WExv Z1JlcGxheVJlY1B0cigpIGl0J3MgdW5saWtlbHkgdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNz IGFscmVhZHkgcmVwbGF5ZWQKKyAqIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQgWExvZ0N0bC0+ bGFzdFJlcGxheWVkRW5kUmVjUHRyLgorICoKKyAqIFRoZSBDb25kaXRpb25WYXJpYWJsZSBY TG9nUmVjb3ZlcnlDdGwtPnJlcGxheWVkQ1Ygc29sdmVzIHRoaXMgY29ybmVyIGNhc2UuCisg Ki8KK0NvbmRpdGlvblZhcmlhYmxlICoKK2NoZWNrX2Zvcl9yZXBsYXkodm9pZCkKK3sKKwly ZXR1cm4gJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVjsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggMzA0MmU1YmQ2NC4uNTAzNDE5NGUxYiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTE1NTIsNiArMTU1Miw3IEBAIFdh bFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiB7CiAJaW50CQkJd2FrZUV2ZW50czsK IAlzdGF0aWMgWExvZ1JlY1B0ciBSZWNlbnRGbHVzaFB0ciA9IEludmFsaWRYTG9nUmVjUHRy OworCUNvbmRpdGlvblZhcmlhYmxlICpyZXBsYXllZENWID0gY2hlY2tfZm9yX3JlcGxheSgp OwogCiAJLyoKIAkgKiBGYXN0IHBhdGggdG8gYXZvaWQgYWNxdWlyaW5nIHRoZSBzcGlubG9j ayBpbiBjYXNlIHdlIGFscmVhZHkga25vdyB3ZQpAQCAtMTU2NiwxMCArMTU2NywxNSBAQCBX YWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCWlmICghUmVjb3ZlcnlJblByb2dy ZXNzKCkpCiAJCVJlY2VudEZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CiAJZWxz ZQorCXsKIAkJUmVjZW50Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOwor CQkvKiBQcmVwYXJlIHRoZSByZXBsYXllZENWIHRvIHNsZWVwICovCisJCUNvbmRpdGlvblZh cmlhYmxlUHJlcGFyZVRvU2xlZXAocmVwbGF5ZWRDVik7CisJfQogCiAJZm9yICg7OykKIAl7 CisKIAkJbG9uZwkJc2xlZXB0aW1lOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRp bmcgd2FrZXVwcyAqLwpAQCAtMTY1MywyMSArMTY1OSwzMyBAQCBXYWxTbmRXYWl0Rm9yV2Fs KFhMb2dSZWNQdHIgbG9jKQogCQkvKiBTZW5kIGtlZXBhbGl2ZSBpZiB0aGUgdGltZSBoYXMg Y29tZSAqLwogCQlXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSgpOwogCisJCXNsZWVwdGlt ZSA9IFdhbFNuZENvbXB1dGVTbGVlcHRpbWUoR2V0Q3VycmVudFRpbWVzdGFtcCgpKTsKIAkJ LyoKLQkJICogU2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQu ICBBbHNvIHdhaXQgZm9yIHRoZQotCQkgKiBzb2NrZXQgYmVjb21pbmcgd3JpdGFibGUsIGlm IHRoZXJlJ3Mgc3RpbGwgcGVuZGluZyBvdXRwdXQuCisJCSAqIFdoZW4gbm90IGluIHJlY292 ZXJ5LCBzbGVlcCB1bnRpbCBzb21ldGhpbmcgaGFwcGVucyBvciB3ZSB0aW1lIG91dC4KKwkJ ICogQWxzbyB3YWl0IGZvciB0aGUgc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVy ZSdzIHN0aWxsIHBlbmRpbmcgb3V0cHV0LgogCQkgKiBPdGhlcndpc2Ugd2UgbWlnaHQgc2l0 IG9uIHNlbmRhYmxlIG91dHB1dCBkYXRhIHdoaWxlIHdhaXRpbmcgZm9yCiAJCSAqIG5ldyBX QUwgdG8gYmUgZ2VuZXJhdGVkLiAgKEJ1dCBpZiB3ZSBoYXZlIG5vdGhpbmcgdG8gc2VuZCwg d2UgZG9uJ3QKIAkJICogd2FudCB0byB3YWtlIG9uIHNvY2tldC13cml0YWJsZS4pCiAJCSAq LwotCQlzbGVlcHRpbWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1l c3RhbXAoKSk7Ci0KLQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJaWYg KCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJeworCQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tF VF9SRUFEQUJMRTsKIAotCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5nKCkpCi0JCQl3YWtlRXZl bnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CisJCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5n KCkpCisJCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOwogCi0JCVdhbFNu ZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfV0FJ VF9XQUwpOworCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUsIFdBSVRfRVZF TlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJ ICogV2UgYXJlIGluIHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgY2FzZS4KKwkJ CSAqIFdlIGFyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnR1cCBwcm9jZXNzIHRvIHJlcGxheSB3 YWwgcmVjb3JkKHMpIHVzaW5nCisJCQkgKiBhIHRpbWVvdXQgaW4gY2FzZSB3ZSBhcmUgcmVx dWVzdGVkIHRvIHN0b3AuCisJCQkgKi8KKwkJCUNvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVl cChyZXBsYXllZENWLCBzbGVlcHRpbWUsCisJCQkJCQkJCQkJV0FJVF9FVkVOVF9XQUxfU0VO REVSX1dBSVRfUkVQTEFZKTsKKwkJfQogCX0KIAogCS8qIHJlYWN0aXZhdGUgbGF0Y2ggc28g V2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IGNiOTljYzYzMzkuLmUxYjgwZTYyMDIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTQ2Niw2ICs0NjYs OSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRf RVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQ6CiAJCQlldmVudF9uYW1lID0gIldhbFJl Y2VpdmVyV2FpdFN0YXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRfV0FMX1NF TkRFUl9XQUlUX1JFUExBWToKKwkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2ZXJXYWl0UmVw bGF5IjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERBVEU6 CiAJCQlldmVudF9uYW1lID0gIlhhY3RHcm91cFVwZGF0ZSI7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCA0N2MyOTM1MGY1Li4yYmZlYWFhMDBmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8u aCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2Nv bmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogUmVjb3ZlcnkgdGFyZ2V0IHR5cGUuCkBA IC0xNTUsNCArMTU2LDYgQEAgZXh0ZXJuIHZvaWQgUmVjb3ZlcnlSZXF1aXJlc0ludFBhcmFt ZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLAogCiBleHRlcm4g dm9pZCB4bG9nX291dGRlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKTsKIAorZXh0ZXJuIENvbmRpdGlvblZhcmlhYmxlICpjaGVja19mb3JfcmVwbGF5KHZv aWQpOworCiAjZW5kaWYJCQkJCQkJLyogWExPR1JFQ09WRVJZX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggNTJiYjNlMmFhZS4uMmZkNzQ1ZmU3MiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTEzLDYgKzEzLDcgQEAKICNk ZWZpbmUgX1dBTFNFTkRFUl9ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlICJz dG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogV2hhdCB0byBkbyB3aXRo IGEgc25hcHNob3QgaW4gY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgY29tbWFuZC4KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaAppbmRleCA5YWIyM2UxYzRhLi41NDhlZjQxZGNhIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMzEsNiArMTMxLDcgQEAgdHlwZWRlZiBlbnVtCiAJ V0FJVF9FVkVOVF9TWU5DX1JFUCwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9FWElULAog CVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQsCisJV0FJVF9FVkVOVF9XQUxf U0VOREVSX1dBSVRfUkVQTEFZLAogCVdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERBVEUKIH0g V2FpdEV2ZW50SVBDOwogCi0tIAoyLjM0LjEKCg== --------------81CZJfcmj1oWXKlVi25CTUV4 Content-Type: text/plain; charset=UTF-8; name="v52-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v52-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA1NmE5NTU5NTU1OTE4YTk5YzIwMmEwOTI0ZjdiMmVkZTlkZTRlNzVkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU5OjQ3ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTIgMy82XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQg KGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZv dApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0 IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgICAgfCAxMSArKysrKwogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYyAgfCAyMiArKysrKysrKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIHwgMzcgKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICB8IDU3ICsrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICB8IDQxICsrKysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAg ICAgICAgICAgICAgIHwgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygr KSwgNTggZGVsZXRpb25zKC0pCiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v CiAgMzguNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1NS42JSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5k ZXggZGUwY2JlNWUyNy4uMzNhMWI2ZjBlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYwpAQCAtNDQ2Nyw2ICs0NDY3LDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJv b2wgcmVzZXQpCiAJUmVhZENvbnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdh bF9sZXZlbCBmcm9tIHRoZSBjb250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFs dWUgc2hvdWxkIGJlCisgKiBjb25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBi ZWNhdXNlIGl0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxs eSBjb25maWd1cmVkIG9uIHN0YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxM ZXZlbE9uU3RhbmRieSh2b2lkKQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVs OworfQorCiAvKgogICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExP RwogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRl eCA4ZmU3YmI2NWYxLi44NDU3ZWVjNGM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTE1MiwxMSArMTUyLDMxIEBAIHhsb2dfZGVjb2RlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJ ICogY2FuIHJlc3RhcnQgZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7CisJCWNhc2Ug WExPR19QQVJBTUVURVJfQ0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJfY2hhbmdlICp4 bHJlYyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dldERhdGEoYnVm LT5yZWNvcmQpOworCisJCQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMg cmVkdWNlZCB0byBsZXNzIHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICogd2FudCB0byBw cmV2ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2VkLgorCQkJICog RXhpc3RpbmcgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlkYXRlZCB3aGVu IHRoaXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0aGVyLCBzbG90 IGNyZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMgbm90IHN1ZmZp Y2llbnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkgKiBzeW5jaHJv bml6ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUgd2FsX2xl dmVsCisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJhIGNoZWNrLgor CQkJICovCisJCQlpZiAoeGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rp bmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgIgorCQkJCQkJCQkidG8gYmUgYXQg bGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOworCQkJYnJlYWs7CisJ CX0KIAkJY2FzZSBYTE9HX05PT1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhM T0dfU1dJVENIOgogCQljYXNlIFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFN RVRFUl9DSEFOR0U6CiAJCWNhc2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0df RlBXX0NIQU5HRToKIAkJY2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggYzNlYzk3YTBhNi4uNzQzZDEy YmExNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMK QEAgLTEyNCwyMyArMTI0LDIyIEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRz KHZvaWQpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCiAJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRh dGFiYXNlIGNvbm5lY3Rpb24iKSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0 byBjaGFuZ2UgdGhhdCBzb21lZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNh bGx5IHRocmVlIHRoaW5ncyBtaXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVl ZCB0byBiZSBhYmxlIHRvIGNvcnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGlt ZWxpbmUgYQotCSAqCSAgTFNOIGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNl IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0J ICoJICB0aGUgcHJpbWFyeSBjYW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBz dXBwb3J0IGRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFi YXNlLCBpbgotCSAqCSAgZGJhc2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBv bmVzIGR1ZSB0byBIUyByZWNvdmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3Vs ZCBiZSByZWxhdGl2ZWx5IGVhc3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUlu UHJvZ3Jlc3MoKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBj YW5ub3QgYmUgdXNlZCB3aGlsZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBU aGlzIGNoZWNrIG1heSBoYXZlIHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAq IFhMT0dfUEFSQU1FVEVSX0NIQU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNo YW5nZWQsIHdlCisJCSAqIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dp Y2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5k IGNyZWF0aW5nIGEgbmV3IHNsb3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWly ZW1lbnRzKCkgaXMgY2FsbGVkIG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90 LCBhbmQgb25jZSB3aGVuIGxvZ2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5n IHVwLgorCQkgKi8KKwkJaWYgKEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxf TEVWRUxfTE9HSUNBTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJs b2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsICIKKwkJCQkJ CQkidG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOwor CX0KIH0KIAogLyoKQEAgLTM0Miw2ICszNDEsMTIgQEAgQ3JlYXRlSW5pdERlY29kaW5nQ29u dGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgorCSAqIE9uIHN0YW5kYnks IHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVhdGluZyB0aGUgc2xvdC4g Q2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlvbi4KKwkgKi8KKwlDaGVj a0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyogc2hvcnRlciBsaW5lcy4u LiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCmluZGV4IDM4YzZmMTg4ODYuLjI5MGQ0YjQ1ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogCiAvKgogICogUmVwbGlj YXRpb24gc2xvdCBvbi1kaXNrIGRhdGEgc3RydWN0dXJlLgpAQCAtMTE3NywzNyArMTE3OCwy OCBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAJCS8qCiAJCSAqIEZvciBs b2dpY2FsIHNsb3RzIGxvZyBhIHN0YW5kYnkgc25hcHNob3QgYW5kIHN0YXJ0IGxvZ2ljYWwg ZGVjb2RpbmcKIAkJICogYXQgZXhhY3RseSB0aGF0IHBvc2l0aW9uLiBUaGF0IGFsbG93cyB0 aGUgc2xvdCB0byBzdGFydCB1cCBtb3JlCi0JCSAqIHF1aWNrbHkuCisJCSAqIHF1aWNrbHku IEJ1dCBvbiBhIHN0YW5kYnkgd2UgY2Fubm90IGRvIFdBTCB3cml0ZXMsIHNvIGp1c3QgdXNl IHRoZQorCQkgKiByZXBsYXkgcG9pbnRlcjsgZWZmZWN0aXZlbHksIGFuIGF0dGVtcHQgdG8g Y3JlYXRlIGEgbG9naWNhbCBzbG90IG9uCisJCSAqIHN0YW5kYnkgd2lsbCBjYXVzZSBpdCB0 byB3YWl0IGZvciBhbiB4bF9ydW5uaW5nX3hhY3QgcmVjb3JkIHRvIGJlCisJCSAqIGxvZ2dl ZCBpbmRlcGVuZGVudGx5IG9uIHRoZSBwcmltYXJ5LCBzbyB0aGF0IGEgc25hcHNob3QgY2Fu IGJlIGJ1aWx0CisJCSAqIHVzaW5nIHRoZSByZWNvcmQuCiAJCSAqCi0JCSAqIFRoYXQncyBu b3QgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzIHRo ZXknbGwKLQkJICogc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50 IGFueXdheS4gSW5zdGVhZCByZXR1cm4KLQkJICogdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0 IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5IGluY3JlYXNlcwotCQkgKiB0aGUgY2hh bmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwIGhh cyB0bwotCQkgKiBzdGFydCByZXBsYXkgYXQuCisJCSAqIE5vbmUgb2YgdGhpcyBpcyBuZWVk ZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBmb3IgcGh5c2ljYWwgc2xvdHMgYXMKKwkJICogdGhl eSdsbCBzdGFydCByZXBsYXkgYXQgdGhlIGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5 LiBJbnN0ZWFkCisJCSAqIHJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBM U04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkKKwkJICogaW5jcmVhc2VzIHRoZSBjaGFuY2UgdGhh dCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdzIHdoZXJlIGEgYmFzZSBiYWNrdXAKKwkJICogaGFz IHRvIHN0YXJ0IHJlcGxheSBhdC4KIAkJICovCi0JCWlmICghUmVjb3ZlcnlJblByb2dyZXNz KCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKLQkJewotCQkJWExvZ1JlY1B0cglmbHVzaHB0 cjsKLQotCQkJLyogc3RhcnQgYXQgY3VycmVudCBpbnNlcnQgcG9zaXRpb24gKi8KKwkJaWYg KFNsb3RJc1BoeXNpY2FsKHNsb3QpKQorCQkJcmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRy KCk7CisJCWVsc2UgaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQkJcmVzdGFydF9sc24g PSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQllbHNlCiAJCQlyZXN0YXJ0X2xzbiA9 IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0 ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3Bp bkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0KLQkJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZl IGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFydCAqLwotCQkJZmx1c2hwdHIgPSBMb2dTdGFu ZGJ5U25hcHNob3QoKTsKIAotCQkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8g ZGlzayAqLwotCQkJWExvZ0ZsdXNoKGZsdXNocHRyKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJ CXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOwotCQkJU3BpbkxvY2tBY3F1aXJlKCZz bG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247 Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQkJfQorCQlTcGluTG9ja0Fj cXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3Rh cnRfbHNuOworCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAogCQkvKiBwcmV2 ZW50IFdBTCByZW1vdmFsIGFzIGZhc3QgYXMgcG9zc2libGUgKi8KIAkJUmVwbGljYXRpb25T bG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwpAQCAtMTIyMyw2ICsxMjE1LDE3IEBAIFJlcGxp Y2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIAkJaWYgKFhMb2dHZXRMYXN0UmVtb3ZlZFNl Z25vKCkgPCBzZWdubykKIAkJCWJyZWFrOwogCX0KKworCWlmICghUmVjb3ZlcnlJblByb2dy ZXNzKCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKKwl7CisJCVhMb2dSZWNQdHIJZmx1c2hw dHI7CisKKwkJLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0 YXJ0ICovCisJCWZsdXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7CisKKwkJLyogYW5k IG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8gZGlzayAqLworCQlYTG9nRmx1c2goZmx1c2hw dHIpOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5k ZXggYzI1MjNjNWNhZi4uMzA0MmU1YmQ2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKQEAgLTkwNiwyMyArOTA2LDMxIEBAIGxvZ2ljYWxfcmVhZF94bG9nX3BhZ2Uo WExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQg cmVxCiAJaW50CQkJY291bnQ7CiAJV0FMUmVhZEVycm9yIGVycmluZm87CiAJWExvZ1NlZ05v CXNlZ25vOwotCVRpbWVMaW5lSUQJY3VyclRMSSA9IEdldFdBTEluc2VydGlvblRpbWVMaW5l KCk7CisJVGltZUxpbmVJRAljdXJyVExJOwogCiAJLyoKLQkgKiBTaW5jZSBsb2dpY2FsIGRl Y29kaW5nIGlzIG9ubHkgcGVybWl0dGVkIG9uIGEgcHJpbWFyeSBzZXJ2ZXIsIHdlIGtub3cK LQkgKiB0aGF0IHRoZSBjdXJyZW50IHRpbWVsaW5lIElEIGNhbid0IGJlIGNoYW5naW5nIGFu eSBtb3JlLiBJZiB3ZSBkaWQgdGhpcwotCSAqIG9uIGEgc3RhbmRieSwgd2UnZCBoYXZlIHRv IHdvcnJ5IGFib3V0IHRoZSB2YWx1ZXMgd2UgY29tcHV0ZSBoZXJlCi0JICogYmVjb21pbmcg aW52YWxpZCBkdWUgdG8gYSBwcm9tb3Rpb24gb3IgdGltZWxpbmUgY2hhbmdlLgorCSAqIFNp bmNlIGxvZ2ljYWwgZGVjb2RpbmcgaXMgYWxzbyBwZXJtaXR0ZWQgb24gYSBzdGFuZGJ5IHNl cnZlciwgd2UgbmVlZAorCSAqIHRvIGNoZWNrIGlmIHRoZSBzZXJ2ZXIgaXMgaW4gcmVjb3Zl cnkgdG8gZGVjaWRlIGhvdyB0byBnZXQgdGhlIGN1cnJlbnQKKwkgKiB0aW1lbGluZSBJRCAo c28gdGhhdCBpdCBhbHNvIGNvdmVyIHRoZSBwcm9tb3Rpb24gb3IgdGltZWxpbmUgY2hhbmdl IGNhc2VzKS4KIAkgKi8KKworCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBXQUwgYXZh aWxhYmxlICovCisJZmx1c2hwdHIgPSBXYWxTbmRXYWl0Rm9yV2FsKHRhcmdldFBhZ2VQdHIg KyByZXFMZW4pOworCisJLyogdGhlIHN0YW5kYnkgY291bGQgaGF2ZSBiZWVuIHByb21vdGVk LCBzbyBjaGVjayBpZiBzdGlsbCBpbiByZWNvdmVyeSAqLworCWFtX2Nhc2NhZGluZ193YWxz ZW5kZXIgPSBSZWNvdmVyeUluUHJvZ3Jlc3MoKTsKKworCWlmIChhbV9jYXNjYWRpbmdfd2Fs c2VuZGVyKQorCQlHZXRYTG9nUmVwbGF5UmVjUHRyKCZjdXJyVExJKTsKKwllbHNlCisJCWN1 cnJUTEkgPSBHZXRXQUxJbnNlcnRpb25UaW1lTGluZSgpOworCiAJWExvZ1JlYWREZXRlcm1p bmVUaW1lbGluZShzdGF0ZSwgdGFyZ2V0UGFnZVB0ciwgcmVxTGVuLCBjdXJyVExJKTsKIAlz ZW5kVGltZUxpbmVJc0hpc3RvcmljID0gKHN0YXRlLT5jdXJyVExJICE9IGN1cnJUTEkpOwog CXNlbmRUaW1lTGluZSA9IHN0YXRlLT5jdXJyVExJOwogCXNlbmRUaW1lTGluZVZhbGlkVXB0 byA9IHN0YXRlLT5jdXJyVExJVmFsaWRVbnRpbDsKIAlzZW5kVGltZUxpbmVOZXh0VExJID0g c3RhdGUtPm5leHRUTEk7CiAKLQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggV0FMIGF2 YWlsYWJsZSAqLwotCWZsdXNocHRyID0gV2FsU25kV2FpdEZvcldhbCh0YXJnZXRQYWdlUHRy ICsgcmVxTGVuKTsKLQogCS8qIGZhaWwgaWYgbm90IChpbXBsaWVzIHdlIGFyZSBnb2luZyB0 byBzaHV0IGRvd24pICovCiAJaWYgKGZsdXNocHRyIDwgdGFyZ2V0UGFnZVB0ciArIHJlcUxl bikKIAkJcmV0dXJuIC0xOwpAQCAtOTM3LDcgKzk0NSw3IEBAIGxvZ2ljYWxfcmVhZF94bG9n X3BhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRy LCBpbnQgcmVxCiAJCQkJIGN1cl9wYWdlLAogCQkJCSB0YXJnZXRQYWdlUHRyLAogCQkJCSBY TE9HX0JMQ0tTWiwKLQkJCQkgc3RhdGUtPnNlZy53c190bGksIC8qIFBhc3MgdGhlIGN1cnJl bnQgVExJIGJlY2F1c2Ugb25seQorCQkJCSBjdXJyVExJLCAJCQkvKiBQYXNzIHRoZSBjdXJy ZW50IFRMSSBiZWNhdXNlIG9ubHkKIAkJCQkJCQkJCSAqIFdhbFNuZFNlZ21lbnRPcGVuIGNv bnRyb2xzIHdoZXRoZXIgbmV3CiAJCQkJCQkJCQkgKiBUTEkgaXMgbmVlZGVkLiAqLwogCQkJ CSAmZXJyaW5mbykpCkBAIC0zMDc0LDEwICszMDgyLDE0IEBAIFhMb2dTZW5kTG9naWNhbCh2 b2lkKQogCSAqIElmIGZpcnN0IHRpbWUgdGhyb3VnaCBpbiB0aGlzIHNlc3Npb24sIGluaXRp YWxpemUgZmx1c2hQdHIuICBPdGhlcndpc2UsCiAJICogd2Ugb25seSBuZWVkIHRvIHVwZGF0 ZSBmbHVzaFB0ciBpZiBFbmRSZWNQdHIgaXMgcGFzdCBpdC4KIAkgKi8KLQlpZiAoZmx1c2hQ dHIgPT0gSW52YWxpZFhMb2dSZWNQdHIpCi0JCWZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIo TlVMTCk7Ci0JZWxzZSBpZiAobG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVj UHRyID49IGZsdXNoUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOwor CWlmIChmbHVzaFB0ciA9PSBJbnZhbGlkWExvZ1JlY1B0ciB8fAorCQlsb2dpY2FsX2RlY29k aW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCisJeworCQlpZiAoYW1f Y2FzY2FkaW5nX3dhbHNlbmRlcikKKwkJCWZsdXNoUHRyID0gR2V0U3RhbmRieUZsdXNoUmVj UHRyKE5VTEwpOworCQllbHNlCisJCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwp OworCX0KIAogCS8qIElmIEVuZFJlY1B0ciBpcyBzdGlsbCBwYXN0IG91ciBmbHVzaFB0ciwg aXQgbWVhbnMgd2UgY2F1Z2h0IHVwLiAqLwogCWlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+ cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCkBAIC0zMTY4LDcgKzMxODAsOCBAQCBH ZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoVGltZUxpbmVJRCAqdGxpKQogCXJlY2VpdmVQdHIgPSBH ZXRXYWxSY3ZGbHVzaFJlY1B0cihOVUxMLCAmcmVjZWl2ZVRMSSk7CiAJcmVwbGF5UHRyID0g R2V0WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5VExJKTsKIAotCSp0bGkgPSByZXBsYXlUTEk7 CisJaWYgKHRsaSkKKwkJKnRsaSA9IHJlcGxheVRMSTsKIAogCXJlc3VsdCA9IHJlcGxheVB0 cjsKIAlpZiAocmVjZWl2ZVRMSSA9PSByZXBsYXlUTEkgJiYgcmVjZWl2ZVB0ciA+IHJlcGxh eVB0cikKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IGNmZTU0MDk3MzguLjQ4Y2E4NTIzODEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3hsb2cuaApAQCAtMjMwLDYgKzIzMCw3IEBAIGV4dGVybiB2b2lkIFhMT0dTaG1lbUlu aXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZv aWQgSW5pdGlhbGl6ZVdhbENvbnNpc3RlbmN5Q2hlY2tpbmcodm9pZCk7CiBleHRlcm4gdm9p ZCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKK2V4dGVybiBXYWxMZXZl bCBHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0 dXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25YTE9HKGludCBjb2RlLCBEYXR1 bSBhcmcpOwogZXh0ZXJuIHZvaWQgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpOwotLSAK Mi4zNC4xCgo= --------------81CZJfcmj1oWXKlVi25CTUV4 Content-Type: text/plain; charset=UTF-8; name="v52-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v52-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAyOWU1ZWFlMmE1MGQzNmZlMDJkMzhlYTBmOWRiMjFkYTVkYzVlMWVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU3OjU2ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTIgMi82XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmludmFsaWRhdGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGlu ZyBpZiB3YWxfbGV2ZWwgb24gdGhlIHByaW1hcnkgc2VydmVyCmlzIHJlZHVjZWQgdG8gYmVs b3cgbG9naWNhbCBhbmQgdGhlcmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3Rh bmRieS4gSW50cm9kdWNlIGEgbmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QK Y29uZmxpY3QgcmVjb3ZlcnkuIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZGF0YWJhc2Vf Y29uZmxpY3RzIGZpZWxkOgpjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QuCgpBZGQgYSBuZXcg ZmllbGQgImNvbmZsaWN0aW5nIiBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cy4KCkF1dGhvcjog QW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBC ZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMg RnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8sCkJoYXJhdGgg UnVwaXJlZGR5Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAg ICAgICAgIHwgIDExICsKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAg ICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAg ICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAg ICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cu YyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9n LmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YyAgICAgICAgICAgICB8ICAyNCArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3Zp ZXdzLnNxbCAgICAgICAgICB8ICAgNiArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbGZ1bmNzLmMgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMgICAgICAgICAgICAgICAgfCAxOTggKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8ICAgOCArCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgIDEzICstCiBz cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMjQgKysr CiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYyAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgIHwgICAz ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAx MSArLQogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8 ICAgNSArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAg IHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oICAgICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAg ICAgfCAgIDggKy0KIDI0IGZpbGVzIGNoYW5nZWQsIDMwNCBpbnNlcnRpb25zKCspLCA2MyBk ZWxldGlvbnMoLSkKICAgNS40JSBkb2Mvc3JjL3NnbWwvCiAgIDcuMiUgc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vCiAgIDQuNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC8KICA1Ni44JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8KICAgNC41JSBzcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy8KICAgNi41JSBzcmMvYmFja2VuZC90Y29wLwogICA1LjQlIHNyYy9i YWNrZW5kLwogICAzLjklIHNyYy9pbmNsdWRlL2NhdGFsb2cvCiAgIDMuMCUgc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcu c2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggNjI0OWJiNTBkMC4u Y2RmN2MwOWI0YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC00NjYzLDYgKzQ2NjMsMTcg QEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3Rh dF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICBkZWFkbG9ja3MKICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90 PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIGFjdGl2ZSBsb2dpY2FsIHNsb3RzIGluIHRo aXMgZGF0YWJhc2UgdGhhdCBoYXZlIGJlZW4KKyAgICAgICBpbnZhbGlkYXRlZCBiZWNhdXNl IHRoZXkgY29uZmxpY3Qgd2l0aCByZWNvdmVyeSAobm90ZSB0aGF0IGluYWN0aXZlIG9uZXMK KyAgICAgICBhcmUgYWxzbyBpbnZhbGlkYXRlZCBidXQgZG8gbm90IGluY3JlbWVudCB0aGlz IGNvdW50ZXIpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgPC90 Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21s CmluZGV4IDdjOGZjM2Y2NTQuLjIzOWY3MTMyOTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwKQEAgLTI1MTYsNiArMjUxNiwxNiBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExF RlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKICAgICAgICBmYWxzZSBmb3IgcGh5c2lj YWwgc2xvdHMuCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsaWN0 aW5nPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhpcyBsb2dpY2FsIHNsb3QgY29uZmxpY3Rl ZCB3aXRoIHJlY292ZXJ5IChhbmQgc28gaXMgbm93CisgICAgICAgaW52YWxpZGF0ZWQpLiBB bHdheXMgTlVMTCBmb3IgcGh5c2ljYWwgc2xvdHMuCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggYjc2NzhmM2MxNC4uOWE4NmZi M2ZlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTcsNiArMTk3 LDcgQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ CVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7 CiAKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dSZWws CiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKQEAgLTM5MCw2ICszOTEsNyBAQCBnaXN0 UmVkb1BhZ2VSZXVzZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5I b3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxY aWQoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAgeGxy ZWMtPmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwppbmRleCAwOGNlYjkxMjg4Li5i ODU2MzA0NzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwpAQCAtMTAw Myw2ICsxMDAzLDcgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0 b3IsIE5VTEwsIE5VTEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hv dCh4bGRhdGEtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bGRhdGEt PmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwppbmRleCA2YzM2YjNhMzI2Li4yMGZiNjg5ZTdmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtODY3Nyw2ICs4Njc3LDcgQEAgaGVhcF94bG9n X3BydW5lKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJbkhvdFN0YW5k YnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPmlzQ2F0YWxvZ1JlbCwK IAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCiAJLyoKQEAgLTg4NDYsNiArODg0Nyw3IEBAIGhl YXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs cmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPmZsYWdz ICYgVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JFTCwKIAkJCQkJCQkJCQkJcmxvY2F0b3Ip OwogCiAJLyoKQEAgLTg5NjMsNiArODk2NSw3IEBAIGhlYXBfeGxvZ19mcmVlemVfcGFnZShY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3Jk LCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJ CQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKaW5kZXggNDE0Y2E0ZjZkZS4uYzg3 ZTQ2ZWQ2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKQEAgLTY2OSw2 ICs2NjksNyBAQCBidHJlZV94bG9nX2RlbGV0ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxM KTsKIAogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25h cHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWws CiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKQEAgLTEwMDcsNiArMTAwOCw3IEBAIGJ0 cmVlX3hsb2dfcmV1c2VfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkgICB4 bHJlYy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQkJICAgeGxyZWMtPmxvY2F0b3IpOwog fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCmluZGV4IGIwNzFiNTljOGEu LjQ1OWFjOTI5YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCkBAIC04 NzksNiArODc5LDcgQEAgc3BnUmVkb1ZhY3V1bVJlZGlyZWN0KFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZsb2NhdG9yLCBO VUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxk YXRhLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0Nh dGFsb2dSZWwsCiAJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jCmluZGV4IDg3YWY2MDhkMTUuLmRlMGNiZTVlMjcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTY0NDcsNiArNjQ0Nyw3IEBAIENyZWF0ZUNoZWNr UG9pbnQoaW50IGZsYWdzKQogCVZpcnR1YWxUcmFuc2FjdGlvbklkICp2eGlkczsKIAlpbnQJ CQludnhpZHM7CiAJaW50CQkJb2xkWExvZ0FsbG93ZWQgPSAwOworCWJvb2wJCWludmFsaWRh dGVkID0gZmFsc2U7CiAKIAkvKgogCSAqIEFuIGVuZC1vZi1yZWNvdmVyeSBjaGVja3BvaW50 IGlzIHJlYWxseSBhIHNodXRkb3duIGNoZWNrcG9pbnQsIGp1c3QKQEAgLTY4MDcsNyArNjgw OCw4IEBAIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCSAqLwogCVhMQnl0ZVRvU2Vn KFJlZG9SZWNQdHIsIF9sb2dTZWdObywgd2FsX3NlZ21lbnRfc2l6ZSk7CiAJS2VlcExvZ1Nl ZyhyZWNwdHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNh dGlvblNsb3RzKF9sb2dTZWdObykpCisJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25T bG90cyhfbG9nU2VnTm8sICZpbnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVMTCk7CisJaWYg KGludmFsaWRhdGVkKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZlIGJlZW4gaW52 YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzA4Niw2ICs3MDg4 LDcgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlYTG9nUmVjUHRyCWVuZHB0 cjsKIAlYTG9nU2VnTm8JX2xvZ1NlZ05vOwogCVRpbWVzdGFtcFR6IHh0aW1lOworCWJvb2wJ CWludmFsaWRhdGVkID0gZmFsc2U7CiAKIAkvKiBDb25jdXJyZW50IGNoZWNrcG9pbnQvcmVz dGFydHBvaW50IGNhbm5vdCBoYXBwZW4gKi8KIAlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVy IHx8IE15QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BPSU5URVIpOwpAQCAtNzI1MSw3ICs3MjU0 LDggQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlyZXBsYXlQdHIgPSBHZXRY TG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkpOwogCWVuZHB0ciA9IChyZWNlaXZlUHRyIDwg cmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6IHJlY2VpdmVQdHI7CiAJS2VlcExvZ1NlZyhlbmRw dHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNs b3RzKF9sb2dTZWdObykpCisJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhf bG9nU2VnTm8sICZpbnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVMTCk7CisJaWYgKGludmFs aWRhdGVkKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0 ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzk2NCw2ICs3OTY4LDIyIEBA IHhsb2dfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJLyogVXBkYXRlIG91ciBj b3B5IG9mIHRoZSBwYXJhbWV0ZXJzIGluIHBnX2NvbnRyb2wgKi8KIAkJbWVtY3B5KCZ4bHJl YywgWExvZ1JlY0dldERhdGEocmVjb3JkKSwgc2l6ZW9mKHhsX3BhcmFtZXRlcl9jaGFuZ2Up KTsKIAorCQkvKgorCQkgKiBJbnZhbGlkYXRlIGxvZ2ljYWwgc2xvdHMgaWYgd2UgYXJlIGlu IGhvdCBzdGFuZGJ5IGFuZCB0aGUgcHJpbWFyeSBkb2VzIG5vdAorCQkgKiBoYXZlIGEgV0FM IGxldmVsIHN1ZmZpY2llbnQgZm9yIGxvZ2ljYWwgZGVjb2RpbmcuIE5vIG5lZWQgdG8gc2Vh cmNoCisJCSAqIGZvciBwb3RlbnRpYWxseSBjb25mbGljdGluZyBsb2dpY2FsbHkgc2xvdHMg aWYgc3RhbmRieSBpcyBydW5uaW5nCisJCSAqIHdpdGggd2FsX2xldmVsIGxvd2VyIHRoYW4g bG9naWNhbCwgYmVjYXVzZSBpbiB0aGF0IGNhc2UsIHdlIHdvdWxkCisJCSAqIGhhdmUgZWl0 aGVyIGRpc2FsbG93ZWQgY3JlYXRpb24gb2YgbG9naWNhbCBzbG90cyBvciBpbnZhbGlkYXRl ZCBleGlzdGluZworCQkgKiBvbmVzLgorCQkgKi8KKwkJaWYgKEluUmVjb3ZlcnkgJiYgSW5I b3RTdGFuZGJ5ICYmCisJCQl4bHJlYy53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCAm JgorCQkJd2FsX2xldmVsID49IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQl7CisJCQlUcmFuc2Fj dGlvbklkIENvbmZsaWN0SG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJSW52 YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhJbnZhbGlkWExvZ1JlY1B0ciwgTlVM TCwgSW52YWxpZE9pZCwgJkNvbmZsaWN0SG9yaXpvbik7CisJCX0KKwogCQlMV0xvY2tBY3F1 aXJlKENvbnRyb2xGaWxlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAkJQ29udHJvbEZpbGUtPk1h eENvbm5lY3Rpb25zID0geGxyZWMuTWF4Q29ubmVjdGlvbnM7CiAJCUNvbnRyb2xGaWxlLT5t YXhfd29ya2VyX3Byb2Nlc3NlcyA9IHhscmVjLm1heF93b3JrZXJfcHJvY2Vzc2VzOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDM0Y2EwZTczOWYuLjIwYzcw YmU1YTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk5Nyw3 ICs5OTcsOCBAQCBDUkVBVEUgVklFVyBwZ19yZXBsaWNhdGlvbl9zbG90cyBBUwogICAgICAg ICAgICAgTC5jb25maXJtZWRfZmx1c2hfbHNuLAogICAgICAgICAgICAgTC53YWxfc3RhdHVz LAogICAgICAgICAgICAgTC5zYWZlX3dhbF9zaXplLAotICAgICAgICAgICAgTC50d29fcGhh c2UKKyAgICAgICAgICAgIEwudHdvX3BoYXNlLAorICAgICAgICAgICAgTC5jb25mbGljdGlu ZwogICAgIEZST00gcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKCkgQVMgTAogICAgICAgICAg ICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIEQgT04gKEwuZGF0b2lkID0gRC5vaWQpOwogCkBA IC0xMDY1LDcgKzEwNjYsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZs aWN0cyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9p ZCkgQVMgY29uZmxfbG9jaywKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X3NuYXBzaG90KEQub2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0 YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbihELm9pZCkgQVMgY29uZmxfYnVmZmVycGlu LAotICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9j ayhELm9pZCkgQVMgY29uZmxfZGVhZGxvY2sKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Ri X2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAor ICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQp IEFTIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0YWJhc2UgRDsK IAogQ1JFQVRFIFZJRVcgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggZmExYjY0 MWEyYi4uMDcwZmQzNzhlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0yMTYsOSArMjE2LDkgQEAgcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29u ZmlybSwgYm9vbCBiaW4KIAogCQkvKgogCQkgKiBBZnRlciB0aGUgc2FuaXR5IGNoZWNrcyBp biBDcmVhdGVEZWNvZGluZ0NvbnRleHQsIG1ha2Ugc3VyZSB0aGUKLQkJICogcmVzdGFydF9s c24gaXMgdmFsaWQuICBBdm9pZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRo aXMKLQkJICogZXJybXNnIGJlY2F1c2UgdGhhdCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91 cyBhYm91dCBubyBjaGFuZ2VzCi0JCSAqIGJlaW5nIGF2YWlsYWJsZS4KKwkJICogcmVzdGFy dF9sc24gaXMgdmFsaWQgb3IgYm90aCB4bWluIGFuZCBjYXRhbG9nX3htaW4gYXJlIHZhbGlk LiBBdm9pZAorCQkgKiAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMgZXJy bXNnIGJlY2F1c2UgdGhhdCdkIGJlCisJCSAqIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91 dCBubyBjaGFuZ2VzIGJlaW5nIGF2YWlsYWJsZS4KIAkJICovCiAJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJCWVy ZXBvcnQoRVJST1IsCkBAIC0yMjcsNiArMjI3LDEzIEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRf Y2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJv b2wgYmluCiAJCQkJCQkJTmFtZVN0cigqbmFtZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGlz IHNsb3QgaGFzIG5ldmVyIHByZXZpb3VzbHkgcmVzZXJ2ZWQgV0FMLCBvciBpdCBoYXMgYmVl biBpbnZhbGlkYXRlZC4iKSkpOwogCisJCWlmIChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJ bnZhbGlkKE15UmVwbGljYXRpb25TbG90KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJ CQkgZXJybXNnKCJjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIiLAorCQkJCQkJCU5hbWVTdHIoKm5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhp cyBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5n IHdpdGggcmVjb3ZlcnkuIikpKTsKKwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjg2OTE4ZjY5 Li4zOGM2ZjE4ODg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC04NTUsOCArODU1 LDEwIEBAIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGJvb2wgYWxyZWFk eV9sb2NrZWQpCiAJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOwogCQllZmZlY3RpdmVf eG1pbiA9IHMtPmVmZmVjdGl2ZV94bWluOwogCQllZmZlY3RpdmVfY2F0YWxvZ194bWluID0g cy0+ZWZmZWN0aXZlX2NhdGFsb2dfeG1pbjsKLQkJaW52YWxpZGF0ZWQgPSAoIVhMb2dSZWNQ dHJJc0ludmFsaWQocy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCkgJiYKLQkJCQkJICAgWExvZ1Jl Y1B0cklzSW52YWxpZChzLT5kYXRhLnJlc3RhcnRfbHNuKSk7CisJCWludmFsaWRhdGVkID0g KCghWExvZ1JlY1B0cklzSW52YWxpZChzLT5kYXRhLmludmFsaWRhdGVkX2F0KSAmJgorCQkJ CQkJWExvZ1JlY1B0cklzSW52YWxpZChzLT5kYXRhLnJlc3RhcnRfbHNuKSkKKwkJCQkJICAg fHwgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5kYXRhLnhtaW4pICYmCisJCQkJCQkgICAh VHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS5jYXRhbG9nX3htaW4pKSk7CiAJCVNwaW5M b2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwogCiAJCS8qIGludmFsaWRhdGVkIHNsb3RzIG5lZWQg bm90IGFwcGx5ICovCkBAIC0xMjI0LDIwICsxMjI2LDIxIEBAIFJlcGxpY2F0aW9uU2xvdFJl c2VydmVXYWwodm9pZCkKIH0KIAogLyoKLSAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29s ZXRlUmVwbGljYXRpb25TbG90cyAtLSBhY3F1aXJlcyB0aGUgZ2l2ZW4gc2xvdAotICogYW5k IG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KKyAqIEhlbHBl ciBmb3IgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cworICoKKyAqIEFjcXVp cmVzIHRoZSBnaXZlbiBzbG90IGFuZCBtYXJrIGl0IGludmFsaWQsIGlmIG5lY2Vzc2FyeSBh bmQgcG9zc2libGUuCiAgKgogICogUmV0dXJucyB3aGV0aGVyIFJlcGxpY2F0aW9uU2xvdENv bnRyb2xMb2NrIHdhcyByZWxlYXNlZCBpbiB0aGUgaW50ZXJpbSAoYW5kCiAgKiBpbiB0aGF0 IGNhc2Ugd2UncmUgbm90IGhvbGRpbmcgdGhlIGxvY2sgYXQgcmV0dXJuLCBvdGhlcndpc2Ug d2UgYXJlKS4KICAqCi0gKiBTZXRzICppbnZhbGlkYXRlZCB0cnVlIGlmIHRoZSBzbG90IHdh cyBpbnZhbGlkYXRlZC4gKFVudG91Y2hlZCBvdGhlcndpc2UuKQorICogU2V0cyAqaW52YWxp ZGF0ZWQgdHJ1ZSBpZiBhbiBvYnNvbGV0ZSBzbG90IHdhcyBpbnZhbGlkYXRlZC4gKFVudG91 Y2hlZCBvdGhlcndpc2UuKQogICoKICAqIFRoaXMgaXMgaW5oZXJlbnRseSByYWN5LCBiZWNh dXNlIHdlIHJlbGVhc2UgdGhlIExXTG9jawogICogZm9yIHN5c2NhbGxzLCBzbyBjYWxsZXIg bXVzdCByZXN0YXJ0IGlmIHdlIHJldHVybiB0cnVlLgogICovCiBzdGF0aWMgYm9vbAotSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1Jl Y1B0ciBvbGRlc3RMU04sCi0JCQkJCQkJICAgYm9vbCAqaW52YWxpZGF0ZWQpCitJbnZhbGlk YXRlUG9zc2libHlPYnNvbGV0ZU9yQ29uZmxpY3RpbmdMb2dpY2FsU2xvdChSZXBsaWNhdGlv blNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAorCQkJCQkJCQkJCQkJICAgYm9vbCAq aW52YWxpZGF0ZWQsIFRyYW5zYWN0aW9uSWQgKnhpZCkKIHsKIAlpbnQJCQlsYXN0X3NpZ25h bGVkX3BpZCA9IDA7CiAJYm9vbAkJcmVsZWFzZWRfbG9jayA9IGZhbHNlOwpAQCAtMTI0NSw2 ICsxMjQ4LDkgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9u U2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiAJZm9yICg7OykKIAl7CiAJCVhMb2dS ZWNQdHIJcmVzdGFydF9sc247CisJCVRyYW5zYWN0aW9uSWQgc2xvdF94bWluOworCQlUcmFu c2FjdGlvbklkIHNsb3RfY2F0YWxvZ194bWluOworCiAJCU5hbWVEYXRhCXNsb3RuYW1lOwog CQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKIApAQCAtMTI2MSwxOCArMTI2NywzMyBAQCBJbnZh bGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVj UHRyIG9sZGVzdExTTiwKIAkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52 YWxpZGF0ZWQuIElmIGl0IG5lZWRzIHRvIGJlCiAJCSAqIGludmFsaWRhdGVkLCBhbmQgaXMg bm90IGN1cnJlbnRseSBhY3F1aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBpdAogCQkgKiBh cyBoYXZpbmcgYmVlbiBpbnZhbGlkYXRlZC4gIFdlIGRvIHRoaXMgd2l0aCB0aGUgc3Bpbmxv Y2sgaGVsZCB0bwotCQkgKiBhdm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUg dGhlIHJlc3RhcnRfbHNuIGNvdWxkIG1vdmUKLQkJICogZm9yd2FyZCwgb3IgdGhlIHNsb3Qg Y291bGQgYmUgZHJvcHBlZC4KKwkJICogYXZvaWQgcmFjZSBjb25kaXRpb25zIC0tIGZvciBl eGFtcGxlIHRoZSByZXN0YXJ0X2xzbiAob3IgdGhlCisJCSAqIHhtaW4ocykgY291bGQpIG1v dmUgZm9yd2FyZCBvciB0aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgogCQkgKi8KIAkJU3Bp bkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CiAKIAkJcmVzdGFydF9sc24gPSBzLT5kYXRhLnJl c3RhcnRfbHNuOworCQlzbG90X3htaW4gPSBzLT5kYXRhLnhtaW47CisJCXNsb3RfY2F0YWxv Z194bWluID0gcy0+ZGF0YS5jYXRhbG9nX3htaW47CisKKwkJLyogc2xvdCBoYXMgYmVlbiBp bnZhbGlkYXRlZCAobG9naWNhbCBkZWNvZGluZyBjb25mbGljdCBjYXNlKSAqLworCQlpZiAo KHhpZCAmJgorCQkJICgoTG9naWNhbFJlcGxpY2F0aW9uU2xvdElzSW52YWxpZChzKSkKKwkJ CSAgfHwKIAogCQkvKgotCQkgKiBJZiB0aGUgc2xvdCBpcyBhbHJlYWR5IGludmFsaWQgb3Ig aXMgZnJlc2ggZW5vdWdoLCB3ZSBkb24ndCBuZWVkIHRvCi0JCSAqIGRvIGFueXRoaW5nLgor CQkgKiBXZSBhcmUgbm90IGZvcmNpbmcgZm9yIGludmFsaWRhdGlvbiBiZWNhdXNlIHRoZSB4 aWQgaXMgdmFsaWQgYW5kCisJCSAqIHRoaXMgaXMgYSBub24gY29uZmxpY3Rpbmcgc2xvdC4K IAkJICovCi0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlc3RhcnRfbHNuKSB8fCByZXN0 YXJ0X2xzbiA+PSBvbGRlc3RMU04pCisJCQkgIChUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGlk KSAmJiAhKAorCQkJCQkJCQkJCQkgICAoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF94bWlu KSAmJiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X3htaW4sICp4aWQpKQor CQkJCQkJCQkJCQkgICB8fAorCQkJCQkJCQkJCQkgICAoVHJhbnNhY3Rpb25JZElzVmFsaWQo c2xvdF9jYXRhbG9nX3htaW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNs b3RfY2F0YWxvZ194bWluLCAqeGlkKSkKKwkJCQkJCQkJCQkJICAgKSkKKwkJCSAgKSkKKwkJ CXx8CisJCS8qIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKG9ic29sZXRlIExTTiBjYXNl KSAqLworCQkJKCF4aWQgJiYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVzdGFydF9sc24pIHx8 IHJlc3RhcnRfbHNuID49IG9sZGVzdExTTikpKQogCQl7CiAJCQlTcGluTG9ja1JlbGVhc2Uo JnMtPm11dGV4KTsKIAkJCWlmIChyZWxlYXNlZF9sb2NrKQpAQCAtMTI5Miw5ICsxMzEzLDE2 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMs IFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQl7CiAJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7 CiAJCQlzLT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOwotCQkJcy0+ZGF0YS5pbnZhbGlkYXRl ZF9hdCA9IHJlc3RhcnRfbHNuOwotCQkJcy0+ZGF0YS5yZXN0YXJ0X2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOwotCisJCQlpZiAoeGlkKQorCQkJeworCQkJCXMtPmRhdGEueG1pbiA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCQkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcy0+ZGF0YS5pbnZh bGlkYXRlZF9hdCA9IHJlc3RhcnRfbHNuOworCQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJ bnZhbGlkWExvZ1JlY1B0cjsKKwkJCX0KIAkJCS8qIExldCBjYWxsZXIga25vdyAqLwogCQkJ KmludmFsaWRhdGVkID0gdHJ1ZTsKIAkJfQpAQCAtMTMyNywxNSArMTM1NSwzOSBAQCBJbnZh bGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVj UHRyIG9sZGVzdExTTiwKIAkJCSAqLwogCQkJaWYgKGxhc3Rfc2lnbmFsZWRfcGlkICE9IGFj dGl2ZV9waWQpCiAJCQl7Ci0JCQkJZXJlcG9ydChMT0csCi0JCQkJCQllcnJtc2coInRlcm1p bmF0aW5nIHByb2Nlc3MgJWQgdG8gcmVsZWFzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIs Ci0JCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkpLAotCQkJCQkJZXJy ZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2VlZHMgdGhlIGxpbWl0 IGJ5ICVsbHUgYnl0ZXMuIiwKLQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1MocmVzdGFydF9s c24pLAotCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIChvbGRlc3RMU04gLSByZXN0 YXJ0X2xzbikpLAotCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2Ug bWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQkJaWYgKHhpZCkKKwkJCQl7CisJCQkJ CWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9y dChMT0csCisJCQkJCQkJCWVycm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCBiZWNhdXNl IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwKKwkJ CQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQkJZXJy ZGV0YWlsKCJUaGUgc2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUuIiwKKwkJ CQkJCQkJCQkgICp4aWQpKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWVy ZXBvcnQoTE9HLAorCQkJCQkJCQllcnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgYmVj YXVzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs CisJCQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJ CWVycmRldGFpbCgiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9s ZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlciIpKTsK KwkJCQkJfQorCisJCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChhY3RpdmVfcGlkLCBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9ULCBJbnZhbGlkQmFja2VuZElkKTsK KwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJZXJy bXNnKCJ0ZXJtaW5hdGluZyBwcm9jZXNzICVkIHRvIHJlbGVhc2UgcmVwbGljYXRpb24gc2xv dCBcIiVzXCIiLAorCQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSks CisJCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2Vl ZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKKwkJCQkJCQkJCSAgTFNOX0ZPUk1BVF9B UkdTKHJlc3RhcnRfbHNuKSwKKwkJCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9s ZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCisJCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5l ZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisKKwkJCQkJKHZv aWQpIGtpbGwoYWN0aXZlX3BpZCwgU0lHVEVSTSk7CisJCQkJfQogCi0JCQkJKHZvaWQpIGtp bGwoYWN0aXZlX3BpZCwgU0lHVEVSTSk7CiAJCQkJbGFzdF9zaWduYWxlZF9waWQgPSBhY3Rp dmVfcGlkOwogCQkJfQogCkBAIC0xMzY5LDEzICsxNDIxLDMzIEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0 TFNOLAogCQkJUmVwbGljYXRpb25TbG90U2F2ZSgpOwogCQkJUmVwbGljYXRpb25TbG90UmVs ZWFzZSgpOwogCi0JCQllcmVwb3J0KExPRywKLQkJCQkJZXJybXNnKCJpbnZhbGlkYXRpbmcg b2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAotCQkJCQkJICAgTmFtZVN0cihz bG90bmFtZSkpLAotCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgv JVggZXhjZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAotCQkJCQkJCSAgTFNOX0ZP Uk1BVF9BUkdTKHJlc3RhcnRfbHNuKSwKLQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcp IChvbGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAotCQkJCQllcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKwkJCWlmICh4 aWQpCisJCQl7CisJCQkJcGdzdGF0X2Ryb3BfcmVwbHNsb3Qocyk7CisKKwkJCQlpZiAoVHJh bnNhY3Rpb25JZElzVmFsaWQoKnhpZCkpCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJ CQkJCQllcnJtc2coImludmFsaWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNlIGl0IGNvbmZs aWN0cyB3aXRoIHJlY292ZXJ5IiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJCWVycmRl dGFpbCgiVGhlIHNsb3QgY29uZmxpY3RlZCB3aXRoIHhpZCBob3Jpem9uICV1LiIsICp4aWQp KTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJ ZXJybXNnKCJpbnZhbGlkYXRpbmcgc2xvdCBcIiVzXCIgYmVjYXVzZSBpdCBjb25mbGljdHMg d2l0aCByZWNvdmVyeSIsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQllcnJkZXRhaWwo IkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgdG8gYmUg YXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSk7CisJCQkJfQorCQkJ fQorCQkJZWxzZQorCQkJeworCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJZXJybXNnKCJpbnZh bGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCSAg IE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0 YXJ0X2xzbiAlWC8lWCBleGNlZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCisJCQkJ CQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRfbHNuKSwKKwkJCQkJCQkJICAodW5zaWdu ZWQgbG9uZyBsb25nKSAob2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKSwKKwkJCQkJCWVycmhp bnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUu IikpOworCQkJfQogCiAJCQkvKiBkb25lIHdpdGggdGhpcyBzbG90IGZvciBub3cgKi8KIAkJ CWJyZWFrOwpAQCAtMTM4OCwyMCArMTQ2MCw0MCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIH0K IAogLyoKLSAqIE1hcmsgYW55IHNsb3QgdGhhdCBwb2ludHMgdG8gYW4gTFNOIG9sZGVyIHRo YW4gdGhlIGdpdmVuIHNlZ21lbnQKLSAqIGFzIGludmFsaWQ7IGl0IHJlcXVpcmVzIFdBTCB0 aGF0J3MgYWJvdXQgdG8gYmUgcmVtb3ZlZC4KKyAqIEludmFsaWRhdGUgT2Jzb2xldGUgc2xv dHMgb3IgcmVzb2x2ZSByZWNvdmVyeSBjb25mbGljdHMgd2l0aCBsb2dpY2FsIHNsb3RzLgog ICoKLSAqIFJldHVybnMgdHJ1ZSB3aGVuIGFueSBzbG90IGhhdmUgZ290IGludmFsaWRhdGVk LgorICogT2Jzb2xldGUgY2FzZSAoYWthIHhpZCBpcyBOVUxMKToKICAqCi0gKiBOQiAtIHRo aXMgcnVucyBhcyBwYXJ0IG9mIGNoZWNrcG9pbnQsIHNvIGF2b2lkIHJhaXNpbmcgZXJyb3Jz IGlmIHBvc3NpYmxlLgorICoJIE1hcmsgYW55IHNsb3QgdGhhdCBwb2ludHMgdG8gYW4gTFNO IG9sZGVyIHRoYW4gdGhlIGdpdmVuIHNlZ21lbnQKKyAqCSBhcyBpbnZhbGlkOyBpdCByZXF1 aXJlcyBXQUwgdGhhdCdzIGFib3V0IHRvIGJlIHJlbW92ZWQuCisgKgkgaW52YWxpZGF0ZWQg aXMgc2V0IHRvIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRlZC4KKyAq CisgKiAgTG9naWNhbCByZXBsaWNhdGlvbiBzbG90IGNhc2U6CisgKgorICoJIFdoZW4geGlk IGlzIHZhbGlkLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBhYm91dCB0byByZW1vdmUgcm93cyBv bGRlciB0aGFuIHhpZC4KKyAqCSBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNs b3RzIHRoYXQgZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICoJIFdoZW4geGlkIGlz IGludmFsaWQsIGludmFsaWRhdGUgYWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWly ZWQgd2hlbiB0aGUKKyAqCSBtYXN0ZXIgd2FsX2xldmVsIGlzIHNldCBiYWNrIHRvIHJlcGxp Y2EsIHNvIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgbmVlZCB0bworICoJIGJlIGludmFsaWRh dGVkLgogICovCi1ib29sCi1JbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhM b2dTZWdObyBvbGRlc3RTZWdubykKK3ZvaWQKK0ludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0 aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vLCBib29sICppbnZhbGlkYXRlZCwgT2lk IGRib2lkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7Ci0JWExvZ1JlY1B0cglvbGRlc3RMU047 Ci0JYm9vbAkJaW52YWxpZGF0ZWQgPSBmYWxzZTsKIAotCVhMb2dTZWdOb09mZnNldFRvUmVj UHRyKG9sZGVzdFNlZ25vLCAwLCB3YWxfc2VnbWVudF9zaXplLCBvbGRlc3RMU04pOworCVhM b2dSZWNQdHIJb2xkZXN0TFNOID0gSW52YWxpZFhMb2dSZWNQdHI7CisJYm9vbCBsb2dpY2Fs X3Nsb3RfaW52YWxpZGF0ZWQgPSBmYWxzZTsKKworCUFzc2VydChtYXhfcmVwbGljYXRpb25f c2xvdHMgPj0gMCk7CisKKwlpZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID09IDApCisJCXJl dHVybjsKKworCWlmICgheGlkKQorCXsKKwkJQXNzZXJ0KGludmFsaWRhdGVkKTsKKwkJKmlu dmFsaWRhdGVkID0gZmFsc2U7CisJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKG9sZGVzdFNl Z25vLCAwLCB3YWxfc2VnbWVudF9zaXplLCBvbGRlc3RMU04pOworCX0KIAogcmVzdGFydDoK IAlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQp OwpAQCAtMTQxMiwyNCArMTUwNCwzNiBAQCByZXN0YXJ0OgogCQlpZiAoIXMtPmluX3VzZSkK IAkJCWNvbnRpbnVlOwogCi0JCWlmIChJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3Qo cywgb2xkZXN0TFNOLCAmaW52YWxpZGF0ZWQpKQorCQlpZiAoeGlkKQogCQl7Ci0JCQkvKiBp ZiB0aGUgbG9jayB3YXMgcmVsZWFzZWQsIHN0YXJ0IGZyb20gc2NyYXRjaCAqLwotCQkJZ290 byByZXN0YXJ0OworCQkJLyogd2UgYXJlIG9ubHkgZGVhbGluZyB3aXRoICpsb2dpY2FsKiBz bG90IGNvbmZsaWN0cyAqLworCQkJaWYgKCFTbG90SXNMb2dpY2FsKHMpKQorCQkJCWNvbnRp bnVlOworCisJCQkvKgorCQkJICogbm90IHRoZSBkYXRhYmFzZSBvZiBpbnRlcmVzdCBhbmQg d2UgZG9uJ3Qgd2FudCBhbGwgdGhlCisJCQkgKiBkYXRhYmFzZSwgc2tpcAorCQkJICovCisJ CQlpZiAocy0+ZGF0YS5kYXRhYmFzZSAhPSBkYm9pZCAmJiBUcmFuc2FjdGlvbklkSXNWYWxp ZCgqeGlkKSkKKwkJCQljb250aW51ZTsKIAkJfQorCisJCWlmIChJbnZhbGlkYXRlUG9zc2li bHlPYnNvbGV0ZU9yQ29uZmxpY3RpbmdMb2dpY2FsU2xvdChzLCBvbGRlc3RMU04sIGludmFs aWRhdGVkID8gaW52YWxpZGF0ZWQgOiAmbG9naWNhbF9zbG90X2ludmFsaWRhdGVkLCB4aWQp KQorCQkJCWdvdG8gcmVzdGFydDsKIAl9CisKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9u U2xvdENvbnRyb2xMb2NrKTsKIAogCS8qCi0JICogSWYgYW55IHNsb3RzIGhhdmUgYmVlbiBp bnZhbGlkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHJlc291cmNlIGxpbWl0cy4KKwkgKiBJZiBh bnkgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0aGUgcmVxdWly ZWQgeG1pbgorCSAqIGFuZCB0aGUgcmVxdWlyZWQgbHNuIChpZiBhcHByb3ByaWF0ZSkuCiAJ ICovCi0JaWYgKGludmFsaWRhdGVkKQorCWlmICgoIXhpZCAmJiAqaW52YWxpZGF0ZWQpIHx8 ICh4aWQgJiYgbG9naWNhbF9zbG90X2ludmFsaWRhdGVkKSkKIAl7CiAJCVJlcGxpY2F0aW9u U2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGZhbHNlKTsKLQkJUmVwbGljYXRpb25TbG90c0Nv bXB1dGVSZXF1aXJlZExTTigpOworCQlpZiAoIXhpZCAmJiAqaW52YWxpZGF0ZWQpCisJCQlS ZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CiAJfQotCi0JcmV0dXJuIGlu dmFsaWRhdGVkOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpp bmRleCAyZjNjOTY0ODI0Li40NDE5MmJjMzJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90ZnVuY3MuYwpAQCAtMjMyLDcgKzIzMiw3IEBAIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xv dChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQ R19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNf Q09MUyAxNAorI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyAxNQogCVJl dHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0 aW5mbzsKIAlYTG9nUmVjUHRyCWN1cnJsc247CiAJaW50CQkJc2xvdG5vOwpAQCAtNDA0LDYg KzQwNCwxNyBAQCBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoUEdfRlVOQ1RJT05fQVJHUykK IAogCQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShzbG90X2NvbnRlbnRzLmRhdGEudHdv X3BoYXNlKTsKIAorCQlpZiAoc2xvdF9jb250ZW50cy5kYXRhLmRhdGFiYXNlID09IEludmFs aWRPaWQpCisJCQludWxsc1tpKytdID0gdHJ1ZTsKKwkJZWxzZQorCQl7CisJCQlpZiAoc2xv dF9jb250ZW50cy5kYXRhLnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQgJiYKKwkJCQlz bG90X2NvbnRlbnRzLmRhdGEuY2F0YWxvZ194bWluID09IEludmFsaWRUcmFuc2FjdGlvbklk KQorCQkJCXZhbHVlc1tpKytdID0gQm9vbEdldERhdHVtKHRydWUpOworCQkJZWxzZQorCQkJ CXZhbHVlc1tpKytdID0gQm9vbEdldERhdHVtKGZhbHNlKTsKKwkJfQorCiAJCUFzc2VydChp ID09IFBHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19DT0xTKTsKIAogCQl0dXBsZXN0b3JlX3B1 dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA3NWU4MzYzZTI0Li5jMjUyM2M1Y2FmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMTI1Myw2ICsxMjUzLDE0 IEBAIFN0YXJ0TG9naWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkK IAogCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY21kLT5zbG90bmFtZSwgdHJ1ZSk7CiAKKwlp ZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnhtaW4p CisJCSAmJiAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEu Y2F0YWxvZ194bWluKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjYW5u b3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJ Y21kLT5zbG90bmFtZSksCisJCQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBiZWVuIGlu dmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5nIHdpdGggcmVjb3ZlcnkuIikp KTsKKwogCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRh LnJlc3RhcnRfbHNuKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYwppbmRleCAzOTViMmNmNjkwLi5jODVjYjVjYzE4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC02NzMsNiArNjczLDkgQEAgcHJv Y3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1Np Z25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKSkKIAkJUmVjb3ZlcnlD b25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKTsK IAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJ Q0FMU0xPVCkpCisJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSykpCiAJCVJlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURM T0NLKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDlhNzNhZTY3ZDAu LmRiNWMzMzMzY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTM1LDYg KzM1LDcgQEAKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGls cy90aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAi cmVwbGljYXRpb24vc2xvdC5oIgogCiAvKiBVc2VyLXNldHRhYmxlIEdVQyBwYXJhbWV0ZXJz ICovCiBpbnQJCQl2YWN1dW1fZGVmZXJfY2xlYW51cF9hZ2U7CkBAIC00NjYsNiArNDY3LDcg QEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoVmlydHVhbFRyYW5z YWN0aW9uSWQgKndhaXRsaXN0LAogICovCiB2b2lkCiBSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAor CQkJCQkJCQkJYm9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQlSZWxGaWxlTG9jYXRvciBs b2NhdG9yKQogewogCVZpcnR1YWxUcmFuc2FjdGlvbklkICpiYWNrZW5kczsKQEAgLTQ5MSw2 ICs0OTMsOSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQkJCQkJCSAgIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJCQkJCQkJICAgV0FJVF9FVkVOVF9S RUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJCQkJCQkgICB0cnVlKTsKKworCWlm ICh3YWxfbGV2ZWwgPj0gV0FMX0xFVkVMX0xPR0lDQUwgJiYgaXNDYXRhbG9nUmVsKQorCQlJ bnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKEludmFsaWRYTG9nUmVjUHRyLCBO VUxMLCBsb2NhdG9yLmRiT2lkLCAmc25hcHNob3RDb25mbGljdEhvcml6b24pOwogfQogCiAv KgpAQCAtNDk5LDYgKzUwNCw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAgKi8KIHZvaWQK IFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNh Y3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkgICBib29sIGlz Q2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKQogewog CS8qCkBAIC01MTcsNyArNTIzLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3IKIAkJ VHJhbnNhY3Rpb25JZCB0cnVuY2F0ZWQ7CiAKIAkJdHJ1bmNhdGVkID0gWGlkRnJvbUZ1bGxU cmFuc2FjdGlvbklkKHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKLQkJUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLCBsb2NhdG9yKTsKKwkJUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLAorCQkJCQkJCQkJCQlp c0NhdGFsb2dSZWwsCisJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIH0KIApAQCAtMTQ3OCw2 ICsxNDg2LDkgQEAgZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNv biByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoK IAkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiBzbmFwc2hvdCIpOwog CQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VDoKKwkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiByZXBsaWNhdGlv biBzbG90Iik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NUQVJUVVBfREVBRExPQ0s6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxp Y3Qgb24gYnVmZmVyIGRlYWRsb2NrIik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpp bmRleCBjYWI3MDliMDdiLi5iNWY5YWEyODVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0y NDg4LDYgKzI0ODgsOSBAQCBlcnJkZXRhaWxfcmVjb3ZlcnlfY29uZmxpY3Qodm9pZCkKIAkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZXJyZGV0YWls KCJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cgdmVyc2lvbnMgdGhh dCBtdXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyB1c2lu ZyB0aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBiZSBkcm9wcGVkLiIpOworCQkJYnJlYWs7 CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgog CQkJZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sg d2l0aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpAQCAtMzA1Nyw2ICszMDYwLDI3IEBAIFJl Y292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQlj YXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWNhc2UgUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0xPR0lDQUxTTE9UOgorCisJCQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3RzIHRoYXQgcmVx dWlyZSBhIGxvZ2ljYWwgc2xvdCB0byBiZQorCQkJCSAqIGludmFsaWRhdGVkLCB0aGUgcmVx dWlyZW1lbnQgaXMgZm9yIHRoZSBzaWduYWwgcmVjZWl2ZXIgdG8KKwkJCQkgKiByZWxlYXNl IHRoZSBzbG90LCBzbyB0aGF0IGl0IGNvdWxkIGJlIGludmFsaWRhdGVkIGJ5IHRoZQorCQkJ CSAqIHNpZ25hbCBzZW5kZXIuIFNvIGZvciBub3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2Fj dGlvbgorCQkJCSAqIHNob3VsZCBiZSBhYm9ydGVkLCBqdXN0IGxpa2UgZm9yIG90aGVyIHJl Y292ZXJ5IGNvbmZsaWN0cy4KKwkJCQkgKiBCdXQgaWYgaXQncyB3YWxzZW5kZXIgb24gc3Rh bmRieSwgd2UgZG9uJ3Qgd2FudCB0byBnbworCQkJCSAqIHRocm91Z2ggdGhlIGZvbGxvd2lu ZyBJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkKKwkJCQkgKiBjaGVjaywgc28g YnJlYWsgaGVyZS4KKwkJCQkgKi8KKwkJCQlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciAm JgorCQkJCQlyZWFzb24gPT0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VCAmJgorCQkJCQlNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNMb2dpY2FsKE15UmVwbGlj YXRpb25TbG90KSkKKwkJCQl7CisJCQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1 ZTsKKwkJCQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJSW50ZXJydXB0UGVu ZGluZyA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KIAogCQkJCS8qCiAJCQkJICogSWYg d2UgYXJlbid0IGluIGEgdHJhbnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXgg NmU2NTBjZWFhZC4uNzE0OWYyMmY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAgLTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVw b3J0X3JlY292ZXJ5X2NvbmZsaWN0KGludCByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJw aW4rKzsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9H SUNBTFNMT1Q6CisJCQlkYmVudHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJl YWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NL OgogCQkJZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7 CkBAIC0zODcsNiArMzkwLDcgQEAgcGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9F bnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VO VChjb25mbGljdF90YWJsZXNwYWNlKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGlj dF9sb2NrKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJ UEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9B Q0NVTV9EQkNPVU5UKGNvbmZsaWN0X2J1ZmZlcnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09V TlQoY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMKaW5kZXggYjYxYTEyMzgyYi4uMTE5NjcxNjI1NSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTEwNjYsNiArMTA2Niw4IEBAIFBHX1NUQVRf R0VUX0RCRU5UUllfSU5UNjQoeGFjdF9jb21taXQpCiAvKiBwZ19zdGF0X2dldF9kYl94YWN0 X3JvbGxiYWNrICovCiBQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3Rfcm9sbGJhY2sp CiAKKy8qIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICovCitQR19TVEFU X0dFVF9EQkVOVFJZX0lOVDY0KGNvbmZsaWN0X2xvZ2ljYWxzbG90KQogCiBEYXR1bQogcGdf c3RhdF9nZXRfZGJfc3RhdF9yZXNldF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDk5 LDYgKzExMDEsNyBAQCBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05f QVJHUykKIAkJcmVzdWx0ID0gKGludDY0KSAoZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFj ZSArCiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5 LT5jb25mbGljdF9zbmFwc2hvdCArCisJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2lj YWxzbG90ICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJ CSAgZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CmluZGV4IDUwNTU5NTYyMGUuLmFiZGM2ZTIzZjIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdApAQCAtNTU3Nyw2ICs1NTc3LDExIEBACiAgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3Mn LAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0 eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9z bmFwc2hvdCcgfSwKK3sgb2lkID0+ICc5OTAxJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBs aWNhdGlvbiBzbG90JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rf bG9naWNhbHNsb3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdy JywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9z cmMgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQg PT4gJzMwNjgnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3Rz IGluIGRhdGFiYXNlIGNhdXNlZCBieSBzaGFyZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ ICdzJywKQEAgLTEwOTU5LDkgKzEwOTY0LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3Jl cGxpY2F0aW9uX3Nsb3RzJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZics CiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9 PiAncmVjb3JkJywKICAgcHJvYXJndHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ ICd7bmFtZSxuYW1lLHRleHQsb2lkLGJvb2wsYm9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBn X2xzbix0ZXh0LGludDgsYm9vbH0nLAotICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3Nsb3RfbmFtZSxwbHVn aW4sc2xvdF90eXBlLGRhdG9pZCx0ZW1wb3JhcnksYWN0aXZlLGFjdGl2ZV9waWQseG1pbixj YXRhbG9nX3htaW4scmVzdGFydF9sc24sY29uZmlybWVkX2ZsdXNoX2xzbix3YWxfc3RhdHVz LHNhZmVfd2FsX3NpemUsdHdvX3BoYXNlfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFt ZSxuYW1lLHRleHQsb2lkLGJvb2wsYm9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBnX2xzbix0 ZXh0LGludDgsYm9vbCxib29sfScsCisgIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1 Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4s Y2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1 cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZSxjb25mbGljdGluZ30nLAogICBwcm9zcmMgPT4g J3BnX2dldF9yZXBsaWNhdGlvbl9zbG90cycgfSwKIHsgb2lkID0+ICczNzg2JywgZGVzY3Ig PT4gJ3NldCB1cCBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcsCiAgIHByb25hbWUgPT4g J3BnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QnLCBwcm92b2xhdGlsZSA9PiAn dicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bn c3RhdC5oCmluZGV4IGY0M2ZhYzA5ZWQuLjNhYTAwOTI3NTEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0zMzgsNiAr MzM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXREQkVudHJ5CiAJUGdTdGF0X0Nv dW50ZXIgY29uZmxpY3RfdGFibGVzcGFjZTsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9s b2NrOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X3NuYXBzaG90OworCVBnU3RhdF9Db3Vu dGVyIGNvbmZsaWN0X2xvZ2ljYWxzbG90OwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2J1 ZmZlcnBpbjsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9zdGFydHVwX2RlYWRsb2NrOwog CVBnU3RhdF9Db3VudGVyIHRlbXBfZmlsZXM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5k ZXggODg3MmM4MGNkZi4uMjM2ZWJjZGJkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApA QCAtMTcsNiArMTcsOCBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAKKyNkZWZpbmUgTG9naWNhbFJlcGxpY2F0 aW9uU2xvdElzSW52YWxpZChzKSAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEueG1p bikgJiYgXAorCQkJCQkJCQkJCQkgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEuY2F0 YWxvZ194bWluKSkKIC8qCiAgKiBCZWhhdmlvdXIgb2YgcmVwbGljYXRpb24gc2xvdHMsIHVw b24gcmVsZWFzZSBvciBjcmFzaC4KICAqCkBAIC0yMTUsNyArMjE3LDcgQEAgZXh0ZXJuIHZv aWQgUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTih2b2lkKTsKIGV4dGVybiBY TG9nUmVjUHRyIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlTG9naWNhbFJlc3RhcnRMU04odm9p ZCk7CiBleHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3RzQ291bnREQlNsb3RzKE9pZCBkYm9p ZCwgaW50ICpuc2xvdHMsIGludCAqbmFjdGl2ZSk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlv blNsb3RzRHJvcERCU2xvdHMoT2lkIGRib2lkKTsKLWV4dGVybiBib29sIEludmFsaWRhdGVP YnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vKTsKK2V4dGVy biB2b2lkIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9s ZGVzdFNlZ25vLCBib29sICppbnZhbGlkYXRlZCwgT2lkIGRib2lkLCBUcmFuc2FjdGlvbklk ICp4aWQpOwogZXh0ZXJuIFJlcGxpY2F0aW9uU2xvdCAqU2VhcmNoTmFtZWRSZXBsaWNhdGlv blNsb3QoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBuZWVkX2xvY2spOwogZXh0ZXJuIGludAlS ZXBsaWNhdGlvblNsb3RJbmRleChSZXBsaWNhdGlvblNsb3QgKnNsb3QpOwogZXh0ZXJuIGJv b2wgUmVwbGljYXRpb25TbG90TmFtZShpbnQgaW5kZXgsIE5hbWUgbmFtZSk7CkBAIC0yMjcs NSArMjI5LDYgQEAgZXh0ZXJuIHZvaWQgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHModm9p ZCk7CiAKIGV4dGVybiB2b2lkIENoZWNrU2xvdFJlcXVpcmVtZW50cyh2b2lkKTsKIGV4dGVy biB2b2lkIENoZWNrU2xvdFBlcm1pc3Npb25zKHZvaWQpOworZXh0ZXJuIHZvaWQgUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9naWNhbFNsb3RzKE9pZCBkYm9pZCwgVHJhbnNhY3Rp b25JZCB4aWQsIGNoYXIgKnJlYXNvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBTTE9UX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggOTA1YWYyMjMxYi4uMmY1MjEwMGIw MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlw ZWRlZiBlbnVtCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAogCVBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX1NOQVBTSE9ULAorCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Qs CiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sCiAJUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLLAogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CmluZGV4IDJlZmZkZWExMjYuLjQxZjRkYzM3MmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvc3RhbmRieS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CkBAIC0zMCw4ICszMCwxMCBAQCBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlv bkVudmlyb25tZW50KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5z YWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiAKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sCisJCQkJCQkJCQkJCQlib29sIGlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCVJl bEZpbGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJCSAgIGJvb2wgaXNDYXRhbG9nUmVsLAogCQkJ CQkJCQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVGFibGVzcGFjZShPaWQgdHNpZCk7CiBleHRlcm4g dm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJpZCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IGU5NTNkMWY1MTUuLjFiNjYw MDg4NGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNDcyLDgg KzE0NzIsOSBAQCBwZ19yZXBsaWNhdGlvbl9zbG90c3wgU0VMRUNUIGwuc2xvdF9uYW1lLAog ICAgIGwuY29uZmlybWVkX2ZsdXNoX2xzbiwKICAgICBsLndhbF9zdGF0dXMsCiAgICAgbC5z YWZlX3dhbF9zaXplLAotICAgIGwudHdvX3BoYXNlCi0gICBGUk9NIChwZ19nZXRfcmVwbGlj YXRpb25fc2xvdHMoKSBsKHNsb3RfbmFtZSwgcGx1Z2luLCBzbG90X3R5cGUsIGRhdG9pZCwg dGVtcG9yYXJ5LCBhY3RpdmUsIGFjdGl2ZV9waWQsIHhtaW4sIGNhdGFsb2dfeG1pbiwgcmVz dGFydF9sc24sIGNvbmZpcm1lZF9mbHVzaF9sc24sIHdhbF9zdGF0dXMsIHNhZmVfd2FsX3Np emUsIHR3b19waGFzZSkKKyAgICBsLnR3b19waGFzZSwKKyAgICBsLmNvbmZsaWN0aW5nCisg ICBGUk9NIChwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoKSBsKHNsb3RfbmFtZSwgcGx1Z2lu LCBzbG90X3R5cGUsIGRhdG9pZCwgdGVtcG9yYXJ5LCBhY3RpdmUsIGFjdGl2ZV9waWQsIHht aW4sIGNhdGFsb2dfeG1pbiwgcmVzdGFydF9sc24sIGNvbmZpcm1lZF9mbHVzaF9sc24sIHdh bF9zdGF0dXMsIHNhZmVfd2FsX3NpemUsIHR3b19waGFzZSwgY29uZmxpY3RpbmcpCiAgICAg IExFRlQgSk9JTiBwZ19kYXRhYmFzZSBkIE9OICgobC5kYXRvaWQgPSBkLm9pZCkpKTsKIHBn X3JvbGVzfCBTRUxFQ1QgcGdfYXV0aGlkLnJvbG5hbWUsCiAgICAgcGdfYXV0aGlkLnJvbHN1 cGVyLApAQCAtMTg2OCw3ICsxODY5LDggQEAgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHN8 IFNFTEVDVCBvaWQgQVMgZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9j ayhvaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25h cHNob3Qob2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25m bGljdF9idWZmZXJwaW4ob2lkKSBBUyBjb25mbF9idWZmZXJwaW4sCi0gICAgcGdfc3RhdF9n ZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhvaWQpIEFTIGNvbmZsX2RlYWRsb2Nr CisgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhvaWQpIEFT IGNvbmZsX2RlYWRsb2NrLAorICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxz bG90KG9pZCkgQVMgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90CiAgICBGUk9NIHBnX2RhdGFi YXNlIGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHBpZCwKICAgICBnc3NfYXV0aCBBUyBn c3NfYXV0aGVudGljYXRlZCwKLS0gCjIuMzQuMQoK --------------81CZJfcmj1oWXKlVi25CTUV4 Content-Type: text/plain; charset=UTF-8; name="v52-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v52-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5ZTYyOTgzY2MxNzRhNGY2NDViNDdkODcxNmRjZTU3NTBlN2EyNGY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU1OjE5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTIgMS82XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3Ig bG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KTUlNRS1WZXJzaW9uOiAxLjAKQ29u dGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6IDhiaXQKCk92ZXJhbGwgZGVzaWduOgoKMS4gV2Ugd2FudCB0byBlbmFibGUg bG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5cywgYnV0IHJlcGxheSBvZiBXQUwKZnJvbSB0 aGUgcHJpbWFyeSBtaWdodCByZW1vdmUgZGF0YSB0aGF0IGlzIG5lZWRlZCBieSBsb2dpY2Fs IGRlY29kaW5nLApjYXVzaW5nIGVycm9yKHMpIG9uIHRoZSBzdGFuZGJ5LiBUbyBwcmV2ZW50 IHRob3NlIGVycm9ycywgYSBuZXcgcmVwbGljYXRpb24KY29uZmxpY3Qgc2NlbmFyaW8gbmVl ZHMgdG8gYmUgYWRkcmVzc2VkIChhcyBtdWNoIGFzIGhvdCBzdGFuZGJ5IGRvZXMpLgoKMi4g T3VyIGNob3NlbiBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRoIHRoaXMgdHlwZSBvZiByZXBs aWNhdGlvbiBzbG90CmlzIHRvIGludmFsaWRhdGUgbG9naWNhbCBzbG90cyBmb3Igd2hpY2gg bmVlZGVkIGRhdGEgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuIFRvIGRvIHRoaXMgd2UgbmVlZCB0 aGUgbGF0ZXN0UmVtb3ZlZFhpZCBmb3IgZWFjaCBjaGFuZ2UsIGp1c3QgYXMgd2UKZG8gZm9y IHBoeXNpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cywgYnV0IHdlIGFsc28gbmVlZCB0byBr bm93CndoZXRoZXIgYW55IHBhcnRpY3VsYXIgY2hhbmdlIHdhcyB0byBkYXRhIHRoYXQgbG9n aWNhbCByZXBsaWNhdGlvbgptaWdodCBhY2Nlc3MuIFRoYXQgd2F5LCBkdXJpbmcgV0FMIHJl cGxheSwgd2Uga25vdyB3aGVuIHRoZXJlIGlzIGEgcmlzayBvZgpjb25mbGljdCBhbmQsIGlm IHNvLCBpZiB0aGVyZSBpcyBhIGNvbmZsaWN0LgoKNC4gV2UgY2FuJ3QgcmVseSBvbiB0aGUg c3RhbmRieSdzIHJlbGNhY2hlIGVudHJpZXMgZm9yIHRoaXMgcHVycG9zZSBpbgphbnkgd2F5 LCBiZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuJ3QgYWNjZXNzIGNhdGFsb2cgY29u dGVudHMuCgo1LiBUaGVyZWZvcmUgZXZlcnkgV0FMIHJlY29yZCB0aGF0IHBvdGVudGlhbGx5 IHJlbW92ZXMgZGF0YSBmcm9tIHRoZQppbmRleCBvciBoZWFwIG11c3QgY2FycnkgYSBmbGFn IGluZGljYXRpbmcgd2hldGhlciBvciBub3QgaXQgaXMgb25lCnRoYXQgbWlnaHQgYmUgYWNj ZXNzZWQgZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcuCgpXaHkgZG8gd2UgbmVlZCB0aGlzIGZv ciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnk/CgpGaXJzdCwgbGV0J3MgZm9yZ2V0IGFi b3V0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBhbmQgcmVjYWxsIHRoYXQKb24gYSBw cmltYXJ5IGRhdGFiYXNlLCBhbnkgY2F0YWxvZyByb3dzIHRoYXQgbWF5IGJlIG5lZWRlZCBi eSBhIGxvZ2ljYWwKZGVjb2RpbmcgcmVwbGljYXRpb24gc2xvdCBhcmUgbm90IHJlbW92ZWQu CgpUaGlzIGlzIGRvbmUgdGhhbmtzIHRvIHRoZSBjYXRhbG9nX3htaW4gYXNzb2NpYXRlZCB3 aXRoIHRoZSBsb2dpY2FsCnJlcGxpY2F0aW9uIHNsb3QuCgpCdXQsIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5LCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgoKLSBob3Rfc3Rh bmRieV9mZWVkYmFjayBpcyBvZmYKLSBob3Rfc3RhbmRieV9mZWVkYmFjayBpcyBvbiBidXQg dGhlcmUgaXMgbm8gYSBwaHlzaWNhbCBzbG90IGJldHdlZW4KICB0aGUgcHJpbWFyeSBhbmQg dGhlIHN0YW5kYnkuIFRoZW4sIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHdpbGwgd29yaywKICBi dXQgb25seSB3aGlsZSB0aGUgY29ubmVjdGlvbiBpcyBhbGl2ZSAoZm9yIGV4YW1wbGUgYSBu b2RlIHJlc3RhcnQKICB3b3VsZCBicmVhayBpdCkKClRoZW4sIHRoZSBwcmltYXJ5IG1heSBk ZWxldGUgc3lzdGVtIGNhdGFsb2cgcm93cyB0aGF0IGNvdWxkIGJlIG5lZWRlZApieSB0aGUg bG9naWNhbCBkZWNvZGluZyBvbiB0aGUgc3RhbmRieSAoYXMgaXQgZG9lcyBub3Qga25vdyBh Ym91dCB0aGUKY2F0YWxvZ194bWluIG9uIHRoZSBzdGFuZGJ5KS4KClNvLCBpdOKAmXMgbWFu ZGF0b3J5IHRvIGlkZW50aWZ5IHRob3NlIHJvd3MgYW5kIGludmFsaWRhdGUgdGhlIHNsb3Rz CnRoYXQgbWF5IG5lZWQgdGhlbSBpZiBhbnkuIElkZW50aWZ5aW5nIHRob3NlIHJvd3MgaXMg dGhlIHB1cnBvc2Ugb2YKdGhpcyBjb21taXQuCgpJbXBsZW1lbnRhdGlvbjoKCldoZW4gYSBX QUwgcmVwbGF5IG9uIHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1 cGxlIGlzCnRvIGJlIGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEg bG9naWNhbCBzbG90J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3Qn cyBjYXRhbG9nX3htaW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8g aGFuZGxlIHRoZSBjb25mbGljdC4gV2hpbGUgc3Vic2VxdWVudCBjb21taXRzCndpbGwgZG8g dGhlIGFjdHVhbCBjb25mbGljdCBoYW5kbGluZywgdGhpcyBjb21taXQgYWRkcyBhIG5ldyBm aWVsZAppc0NhdGFsb2dSZWwgaW4gc3VjaCBXQUwgcmVjb3JkcyAoYW5kIGEgbmV3IGJpdCBz ZXQgaW4gdGhlCnhsX2hlYXBfdmlzaWJsZSBmbGFncyBmaWVsZCksIHRoYXQgaXMgdHJ1ZSBm b3IgY2F0YWxvZyB0YWJsZXMsIHNvIGFzIHRvCmFycmFuZ2UgZm9yIGNvbmZsaWN0IGhhbmRs aW5nLgoKVGhlIGFmZmVjdGVkIFdBTCByZWNvcmRzIGFyZSB0aGUgb25lcyB0aGF0IGFscmVh ZHkgY29udGFpbiB0aGUKc25hcHNob3RDb25mbGljdEhvcml6b24gZmllbGQsIG5hbWVseToK Ci0gZ2lzdHhsb2dEZWxldGUKLSBnaXN0eGxvZ1BhZ2VSZXVzZQotIHhsX2hhc2hfdmFjdXVt X29uZV9wYWdlCi0geGxfaGVhcF9wcnVuZQotIHhsX2hlYXBfZnJlZXplX3BhZ2UKLSB4bF9o ZWFwX3Zpc2libGUKLSB4bF9idHJlZV9yZXVzZV9wYWdlCi0geGxfYnRyZWVfZGVsZXRlCi0g c3BneGxvZ1ZhY3V1bVJlZGlyZWN0CgpEdWUgdG8gdGhpcyBuZXcgZmllbGQgYmVpbmcgYWRk ZWQsIHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIGFuZApnaXN0eGxvZ0RlbGV0ZSBkbyBub3cg Y29udGFpbiB0aGUgb2Zmc2V0cyB0byBiZSBkZWxldGVkIGFzIGEKRkxFWElCTEVfQVJSQVlf TUVNQkVSLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgY29ycmVjdCBhbGlnbmVtZW50LgpJ dCdzIG5vdCBuZWVkZWQgb24gdGhlIG90aGVycyBzdHJ1Y3Qgd2hlcmUgaXNDYXRhbG9nUmVs IGhhcwpiZWVuIGFkZGVkLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2 ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQtQnk6 IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXpp byBkZQpSb3llcyBNZWxsbywgTWVsYW5pZSBQbGFnZW1hbgotLS0KIGNvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICB8ICAxNSArLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3QuYyAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dXRpbC5jICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R4bG9nLmMgICAgICAgICB8ICAxNyArKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoX3hsb2cuYyAgICAgICAgfCAgMTIgKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoaW5zZXJ0LmMgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jICAgICAgfCAgOTEgKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAgICAgICB8IDExMSArKysrKysrKysrKy0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAgICB8ICAg NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyAgICAgIHwgIDUw ICsrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAg IHwgICA3ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgICAg fCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgIHwgICA2 ICsrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgfCAgIDIg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyB8ICAgNSAr LQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCAgICAgICAgICB8ICAgNyArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggICAgICAgICAgICAgIHwgIDExICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggICAgICAgICAgICAgfCAgIDggKy0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAgICB8ICAxMCArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL25idHJlZS5oICAgICAgICAgICAgICAgIHwgIDM3ICsrKystLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggICAgICAgICAgICAgICB8ICAgOCArLQog c3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oICAgICB8ICAxMCArLQogc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICB8ICAgNCArLQogMzUgZmls ZXMgY2hhbmdlZCwgMjYzIGluc2VydGlvbnMoKyksIDIwMSBkZWxldGlvbnMoLSkKICAgMy4z JSBjb250cmliL2FtY2hlY2svCiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvCiAg IDQuMSUgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvCiAgNTkuMCUgc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS8KICAgMy43JSBzcmMvYmFja2VuZC9hY2Nlc3MvCiAgMjIuMCUgc3JjL2lu Y2x1ZGUvYWNjZXNzLwoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0 cmVlLmMgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCmluZGV4IDI1N2NmZjY3 MWIuLmViMjgwZDQ4OTMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0 cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpAQCAtMTgzLDYg KzE4Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnZhcmlhbnRfbF9ub250YXJnZXRfb2Zm c2V0KEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsCiAJCQkJCQkJCQkJCQlPZmZzZXROdW1iZXIg dXBwZXJib3VuZCk7CiBzdGF0aWMgUGFnZSBwYWxsb2NfYnRyZWVfcGFnZShCdHJlZUNoZWNr U3RhdGUgKnN0YXRlLCBCbG9ja051bWJlciBibG9ja251bSk7CiBzdGF0aWMgaW5saW5lIEJU U2Nhbkluc2VydCBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goUmVsYXRpb24gcmVsLAorCQkJ CQkJCQkJCQkJCVJlbGF0aW9uIGhlYXByZWwsCiAJCQkJCQkJCQkJCQkJSW5kZXhUdXBsZSBp dHVwKTsKIHN0YXRpYyBJdGVtSWQgUGFnZUdldEl0ZW1JZENhcmVmdWwoQnRyZWVDaGVja1N0 YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxvY2ssCiAJCQkJCQkJCSAgIFBhZ2UgcGFnZSwg T2Zmc2V0TnVtYmVyIG9mZnNldCk7CkBAIC0zMzEsNyArMzMyLDcgQEAgYnRfaW5kZXhfY2hl Y2tfaW50ZXJuYWwoT2lkIGluZHJlbGlkLCBib29sIHBhcmVudGNoZWNrLCBib29sIGhlYXBh bGxpbmRleGVkLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpKSk7 CiAKIAkJLyogRXh0cmFjdCBtZXRhZGF0YSBmcm9tIG1ldGFwYWdlLCBhbmQgc2FuaXRpemUg aXQgaW4gcGFzc2luZyAqLwotCQlfYnRfbWV0YXZlcnNpb24oaW5kcmVsLCAmaGVhcGtleXNw YWNlLCAmYWxsZXF1YWxpbWFnZSk7CisJCV9idF9tZXRhdmVyc2lvbihpbmRyZWwsIGhlYXBy ZWwsICZoZWFwa2V5c3BhY2UsICZhbGxlcXVhbGltYWdlKTsKIAkJaWYgKGFsbGVxdWFsaW1h Z2UgJiYgIWhlYXBrZXlzcGFjZSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKQEAgLTEyNTgsNyArMTI1OSw3IEBAIGJ0X3Rh cmdldF9wYWdlX2NoZWNrKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUpCiAJCX0KIAogCQkvKiBC dWlsZCBpbnNlcnRpb24gc2NhbmtleSBmb3IgY3VycmVudCBwYWdlIG9mZnNldCAqLwotCQlz a2V5ID0gYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKHN0YXRlLT5yZWwsIGl0dXApOworCQlz a2V5ID0gYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKHN0YXRlLT5yZWwsIHN0YXRlLT5oZWFw cmVsLCBpdHVwKTsKIAogCQkvKgogCQkgKiBNYWtlIHN1cmUgdHVwbGUgc2l6ZSBkb2VzIG5v dCBleGNlZWQgdGhlIHJlbGV2YW50IEJUUkVFX1ZFUlNJT04KQEAgLTE3NjgsNyArMTc2OSw3 IEBAIGJ0X3JpZ2h0X3BhZ2VfY2hlY2tfc2NhbmtleShCdHJlZUNoZWNrU3RhdGUgKnN0YXRl KQogCSAqIG1lbW9yeSByZW1haW5pbmcgYWxsb2NhdGVkLgogCSAqLwogCWZpcnN0aXR1cCA9 IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShyaWdodHBhZ2UsIHJpZ2h0aXRlbSk7Ci0JcmV0 dXJuIGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBmaXJzdGl0dXApOwor CXJldHVybiBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwgc3RhdGUtPmhl YXByZWwsIGZpcnN0aXR1cCk7CiB9CiAKIC8qCkBAIC0yNjgxLDcgKzI2ODIsNyBAQCBidF9y b290ZGVzY2VuZChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBJbmRleFR1cGxlIGl0dXApCiAJ QnVmZmVyCQlsYnVmOwogCWJvb2wJCWV4aXN0czsKIAotCWtleSA9IF9idF9ta3NjYW5rZXko c3RhdGUtPnJlbCwgaXR1cCk7CisJa2V5ID0gX2J0X21rc2NhbmtleShzdGF0ZS0+cmVsLCBz dGF0ZS0+aGVhcHJlbCwgaXR1cCk7CiAJQXNzZXJ0KGtleS0+aGVhcGtleXNwYWNlICYmIGtl eS0+c2NhbnRpZCAhPSBOVUxMKTsKIAogCS8qCkBAIC0yNjk0LDcgKzI2OTUsNyBAQCBidF9y b290ZGVzY2VuZChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBJbmRleFR1cGxlIGl0dXApCiAJ ICovCiAJQXNzZXJ0KHN0YXRlLT5yZWFkb25seSAmJiBzdGF0ZS0+cm9vdGRlc2NlbmQpOwog CWV4aXN0cyA9IGZhbHNlOwotCXN0YWNrID0gX2J0X3NlYXJjaChzdGF0ZS0+cmVsLCBrZXks ICZsYnVmLCBCVF9SRUFELCBOVUxMKTsKKwlzdGFjayA9IF9idF9zZWFyY2goc3RhdGUtPnJl bCwgc3RhdGUtPmhlYXByZWwsIGtleSwgJmxidWYsIEJUX1JFQUQsIE5VTEwpOwogCiAJaWYg KEJ1ZmZlcklzVmFsaWQobGJ1ZikpCiAJewpAQCAtMzEzMywxMSArMzEzNCwxMSBAQCBwYWxs b2NfYnRyZWVfcGFnZShCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBCbG9ja051bWJlciBibG9j a251bSkKICAqIHRoZSBzY2Fua2V5IGlzIGdyZWF0ZXIuCiAgKi8KIHN0YXRpYyBpbmxpbmUg QlRTY2FuSW5zZXJ0Ci1idF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goUmVsYXRpb24gcmVsLCBJ bmRleFR1cGxlIGl0dXApCitidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwcmVsLCBJbmRleFR1cGxlIGl0dXApCiB7CiAJQlRTY2FuSW5zZXJ0 IHNrZXk7CiAKLQlza2V5ID0gX2J0X21rc2NhbmtleShyZWwsIGl0dXApOworCXNrZXkgPSBf YnRfbWtzY2Fua2V5KHJlbCwgaGVhcHJlbCwgaXR1cCk7CiAJc2tleS0+cGl2b3RzZWFyY2gg PSB0cnVlOwogCiAJcmV0dXJuIHNrZXk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKaW5kZXgg YmEzOTRmMDhmNi4uM2FjNjhlYzNiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwpAQCAt MzQ4LDcgKzM0OCw3IEBAIGdpc3RwbGFjZXRvcGFnZShSZWxhdGlvbiByZWwsIFNpemUgZnJl ZXNwYWNlLCBHSVNUU1RBVEUgKmdpc3RzdGF0ZSwKIAkJZm9yICg7IHB0cjsgcHRyID0gcHRy LT5uZXh0KQogCQl7CiAJCQkvKiBBbGxvY2F0ZSBuZXcgcGFnZSAqLwotCQkJcHRyLT5idWZm ZXIgPSBnaXN0TmV3QnVmZmVyKHJlbCk7CisJCQlwdHItPmJ1ZmZlciA9IGdpc3ROZXdCdWZm ZXIocmVsLCBoZWFwUmVsKTsKIAkJCUdJU1RJbml0QnVmZmVyKHB0ci0+YnVmZmVyLCAoaXNf bGVhZikgPyBGX0xFQUYgOiAwKTsKIAkJCXB0ci0+cGFnZSA9IEJ1ZmZlckdldFBhZ2UocHRy LT5idWZmZXIpOwogCQkJcHRyLT5ibG9jay5ibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVy KHB0ci0+YnVmZmVyKTsKQEAgLTE2OTQsNyArMTY5NCw4IEBAIGdpc3RwcnVuZXBhZ2UoUmVs YXRpb24gcmVsLCBQYWdlIHBhZ2UsIEJ1ZmZlciBidWZmZXIsIFJlbGF0aW9uIGhlYXBSZWwp CiAKIAkJCXJlY3B0ciA9IGdpc3RYTG9nRGVsZXRlKGJ1ZmZlciwKIAkJCQkJCQkJCWRlbGV0 YWJsZSwgbmRlbGV0YWJsZSwKLQkJCQkJCQkJCXNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsK KwkJCQkJCQkJCXNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJaGVhcFJlbCk7 CiAKIAkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0YnVpbGQuYwppbmRleCA3YTZkOTNiYjg3Li4xZjA0NDg0MGQ0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMjk4LDcgKzI5OCw3IEBAIGdpc3Ri dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleElu Zm8pCiAJCVBhZ2UJCXBhZ2U7CiAKIAkJLyogaW5pdGlhbGl6ZSB0aGUgcm9vdCBwYWdlICov Ci0JCWJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIoaW5kZXgpOworCQlidWZmZXIgPSBnaXN0TmV3 QnVmZmVyKGluZGV4LCBoZWFwKTsKIAkJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1 ZmZlcikgPT0gR0lTVF9ST09UX0JMS05PKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVm ZmVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKaW5kZXggYjRkODQzYTBm Zi4uYTYwNzQ2NGI5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dHV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCkBAIC04 MjEsNyArODIxLDcgQEAgZ2lzdGNoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYp CiAgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyB0aGUgcGFnZSBi eSBjYWxsaW5nIEdJU1RJbml0QnVmZmVyCiAgKi8KIEJ1ZmZlcgotZ2lzdE5ld0J1ZmZlcihS ZWxhdGlvbiByKQorZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByLCBSZWxhdGlvbiBoZWFwcmVs KQogewogCUJ1ZmZlcgkJYnVmZmVyOwogCWJvb2wJCW5lZWRMb2NrOwpAQCAtODY1LDcgKzg2 NSw3IEBAIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcikKIAkJCQkgKiBwYWdlJ3MgZGVsZXRl WGlkLgogCQkJCSAqLwogCQkJCWlmIChYTG9nU3RhbmRieUluZm9BY3RpdmUoKSAmJiBSZWxh dGlvbk5lZWRzV0FMKHIpKQotCQkJCQlnaXN0WExvZ1BhZ2VSZXVzZShyLCBibGtubywgR2lz dFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOworCQkJCQlnaXN0WExvZ1BhZ2VSZXVzZShyLCBo ZWFwcmVsLCBibGtubywgR2lzdFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOwogCiAJCQkJcmV0 dXJuIGJ1ZmZlcjsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4 IGY2NTg2NDI1NGEuLmI3Njc4ZjNjMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhs b2cuYwpAQCAtMTc3LDYgKzE3Nyw3IEBAIGdpc3RSZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCWdpc3R4bG9nRGVsZXRlICp4bGRhdGEgPSAoZ2lzdHhsb2dE ZWxldGUgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKIAlCdWZmZXIJCWJ1ZmZlcjsKIAlQ YWdlCQlwYWdlOworCU9mZnNldE51bWJlciAqdG9EZWxldGUgPSB4bGRhdGEtPm9mZnNldHM7 CiAKIAkvKgogCSAqIElmIHdlIGhhdmUgYW55IGNvbmZsaWN0IHByb2Nlc3NpbmcgdG8gZG8s IGl0IG11c3QgaGFwcGVuIGJlZm9yZSB3ZQpAQCAtMjAzLDE0ICsyMDQsNyBAQCBnaXN0UmVk b0RlbGV0ZVJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl7CiAJCXBhZ2UgPSAo UGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCi0JCWlmIChYTG9nUmVjR2V0RGF0YUxl bihyZWNvcmQpID4gU2l6ZU9mR2lzdHhsb2dEZWxldGUpCi0JCXsKLQkJCU9mZnNldE51bWJl ciAqdG9kZWxldGU7Ci0KLQkJCXRvZGVsZXRlID0gKE9mZnNldE51bWJlciAqKSAoKGNoYXIg KikgeGxkYXRhICsgU2l6ZU9mR2lzdHhsb2dEZWxldGUpOwotCi0JCQlQYWdlSW5kZXhNdWx0 aURlbGV0ZShwYWdlLCB0b2RlbGV0ZSwgeGxkYXRhLT5udG9kZWxldGUpOwotCQl9CisJCVBh Z2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvRGVsZXRlLCB4bGRhdGEtPm50b2RlbGV0ZSk7 CiAKIAkJR2lzdENsZWFyUGFnZUhhc0dhcmJhZ2UocGFnZSk7CiAJCUdpc3RNYXJrVHVwbGVz RGVsZXRlZChwYWdlKTsKQEAgLTU5Nyw3ICs1OTEsOCBAQCBnaXN0WExvZ0Fzc2lnbkxTTih2 b2lkKQogICogV3JpdGUgWExPRyByZWNvcmQgYWJvdXQgcmV1c2Ugb2YgYSBkZWxldGVkIHBh Z2UuCiAgKi8KIHZvaWQKLWdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKK2dpc3RYTG9nUGFn ZVJldXNlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkgIEJsb2NrTnVt YmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBkZWxldGVYaWQpCiB7CiAJZ2lzdHhsb2dQ YWdlUmV1c2UgeGxyZWNfcmV1c2U7CiAKQEAgLTYwOCw2ICs2MDMsNyBAQCBnaXN0WExvZ1Bh Z2VSZXVzZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rp b25JZCBkZWxldGVYaWQpCiAJICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1 c2UuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGlu ZyhoZWFwcmVsKTsKIAl4bHJlY19yZXVzZS5sb2NhdG9yID0gcmVsLT5yZF9sb2NhdG9yOwog CXhscmVjX3JldXNlLmJsb2NrID0gYmxrbm87CiAJeGxyZWNfcmV1c2Uuc25hcHNob3RDb25m bGljdEhvcml6b24gPSBkZWxldGVYaWQ7CkBAIC02NzIsMTEgKzY2OCwxMiBAQCBnaXN0WExv Z1VwZGF0ZShCdWZmZXIgYnVmZmVyLAogICovCiBYTG9nUmVjUHRyCiBnaXN0WExvZ0RlbGV0 ZShCdWZmZXIgYnVmZmVyLCBPZmZzZXROdW1iZXIgKnRvZGVsZXRlLCBpbnQgbnRvZGVsZXRl LAotCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikKKwkJCSAg IFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJZ2lzdHhsb2dEZWxldGUgeGxyZWM7CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAK Kwl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERl Y29kaW5nKGhlYXByZWwpOwogCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25h cHNob3RDb25mbGljdEhvcml6b247CiAJeGxyZWMubnRvZGVsZXRlID0gbnRvZGVsZXRlOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCmluZGV4IGYzOGI0MmVmYjkuLjA4 Y2ViOTEyODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCkBAIC05ODAs OCArOTgwLDEwIEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJUGFnZQkJcGFnZTsKIAlYTG9nUmVkb0FjdGlvbiBhY3Rpb247CiAJSGFz aFBhZ2VPcGFxdWUgcGFnZW9wYXF1ZTsKKwlPZmZzZXROdW1iZXIgKnRvRGVsZXRlOwogCiAJ eGxkYXRhID0gKHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlICopIFhMb2dSZWNHZXREYXRhKHJl Y29yZCk7CisJdG9EZWxldGUgPSB4bGRhdGEtPm9mZnNldHM7CiAKIAkvKgogCSAqIElmIHdl IGhhdmUgYW55IGNvbmZsaWN0IHByb2Nlc3NpbmcgdG8gZG8sIGl0IG11c3QgaGFwcGVuIGJl Zm9yZSB3ZQpAQCAtMTAxMCwxNSArMTAxMiw3IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3Bh Z2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJewogCQlwYWdlID0gKFBhZ2UpIEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKIAotCQlpZiAoWExvZ1JlY0dldERhdGFMZW4ocmVjb3JkKSA+ IFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlKQotCQl7Ci0JCQlPZmZzZXROdW1iZXIgKnVudXNl ZDsKLQotCQkJdW51c2VkID0gKE9mZnNldE51bWJlciAqKSAoKGNoYXIgKikgeGxkYXRhICsg U2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2UpOwotCi0JCQlQYWdlSW5kZXhNdWx0aURlbGV0ZShw YWdlLCB1bnVzZWQsIHhsZGF0YS0+bnR1cGxlcyk7Ci0JCX0KLQorCQlQYWdlSW5kZXhNdWx0 aURlbGV0ZShwYWdlLCB0b0RlbGV0ZSwgeGxkYXRhLT5udHVwbGVzKTsKIAkJLyoKIAkJICog TWFyayB0aGUgcGFnZSBhcyBub3QgY29udGFpbmluZyBhbnkgTFBfREVBRCBpdGVtcy4gU2Vl IGNvbW1lbnRzIGluCiAJCSAqIF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSgpIGZvciBkZXRhaWxz LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCmluZGV4IGE2MDRlMzE4OTEu LjIyNjU2YjI0ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hp bnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAg LTQzMiw2ICs0MzIsNyBAQCBfaGFzaF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBocmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hf dmFjdXVtX29uZV9wYWdlIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhs cmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rp bmcoaHJlbCk7CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uOwogCQkJeGxyZWMubnR1cGxlcyA9IG5kZWxldGFibGU7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNGY1MGUwZGQzNC4uNmMzNmIzYTMyNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTY2NTgsNiArNjY1OCw3IEBAIGhl YXBfZnJlZXplX2V4ZWN1dGVfcHJlcGFyZWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmZmVy LAogCQlucGxhbnMgPSBoZWFwX2xvZ19mcmVlemVfcGxhbih0dXBsZXMsIG50dXBsZXMsIHBs YW5zLCBvZmZzZXRzKTsKIAogCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOworCQl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlv bklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCk7CiAJCXhscmVjLm5wbGFucyA9 IG5wbGFuczsKIAogCQlYTG9nQmVnaW5JbnNlcnQoKTsKQEAgLTgyMjgsNyArODIyOSw3IEBA IGJvdHRvbXVwX3NvcnRfYW5kX3NocmluayhUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkK ICAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgogICovCiBYTG9nUmVjUHRyCi1sb2df aGVhcF92aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBCdWZmZXIgaGVhcF9idWZm ZXIsIEJ1ZmZlciB2bV9idWZmZXIsCitsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAogCQkJCSBUcmFuc2FjdGlv bklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB1aW50OCB2bWZsYWdzKQogewogCXhsX2hl YXBfdmlzaWJsZSB4bHJlYzsKQEAgLTgyNDAsNiArODI0MSw4IEBAIGxvZ19oZWFwX3Zpc2li bGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVy IHZtX2J1ZmZlciwKIAogCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNo b3RDb25mbGljdEhvcml6b247CiAJeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOworCWlmIChSZWxh dGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCkpCisJCXhscmVjLmZsYWdz IHw9IFZJU0lCSUxJVFlNQVBfSVNfQ0FUQUxPR19SRUw7CiAJWExvZ0JlZ2luSW5zZXJ0KCk7 CiAJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIFNpemVPZkhlYXBWaXNpYmxl KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXgg YzRiMTkxNmQzNi4uMzkyYzZlNjU5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCkBAIC03MjAsOSArNzIwLDE0IEBAIGhlYXBhbV9yZWxhdGlvbl9j b3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAJ CQkJCQkJCSAqbXVsdGlfY3V0b2ZmKTsKIAogCi0JLyogU2V0IHVwIHNvcnRpbmcgaWYgd2Fu dGVkICovCisJLyoKKwkgKiBTZXQgdXAgc29ydGluZyBpZiB3YW50ZWQuIE5ld0hlYXAgaXMg YmVpbmcgcGFzc2VkIHRvCisJICogdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoKSwgaXQgY291 bGQgaGF2ZSBiZWVuIE9sZEhlYXAgdG9vLiBJdCBkb2VzIG5vdAorCSAqIHJlYWxseSBtYXR0 ZXIsIGFzIHRoZSBnb2FsIGlzIHRvIGhhdmUgYSBoZWFwIHJlbGF0aW9uIGJlaW5nIHBhc3Nl ZCB0bworCSAqIF9idF9sb2dfcmV1c2VfcGFnZSgpICh3aGljaCBzaG91bGQgbm90IGJlIGNh bGxlZCBmcm9tIHRoaXMgY29kZSBwYXRoKS4KKwkgKi8KIAlpZiAodXNlX3NvcnQpCi0JCXR1 cGxlc29ydCA9IHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKG9sZFR1cERlc2MsIE9sZEluZGV4 LAorCQl0dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihvbGRUdXBEZXNjLCBP bGRJbmRleCwgTmV3SGVhcCwKIAkJCQkJCQkJCQkJbWFpbnRlbmFuY2Vfd29ya19tZW0sCiAJ CQkJCQkJCQkJCU5VTEwsIFRVUExFU09SVF9OT05FKTsKIAllbHNlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDRlNjVjYmNhZGYuLjNmMDM0MjM1MWYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC00MTgsNiArNDE4LDcgQEAgaGVh cF9wYWdlX3BydW5lKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJeGxf aGVhcF9wcnVuZSB4bHJlYzsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwogCisJCQl4bHJlYy5p c0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJl bGF0aW9uKTsKIAkJCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gcHJzdGF0ZS5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAkJCXhscmVjLm5yZWRpcmVjdGVkID0gcHJzdGF0 ZS5ucmVkaXJlY3RlZDsKIAkJCXhscmVjLm5kZWFkID0gcHJzdGF0ZS5uZGVhZDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA4ZjE0Y2Y4NWYzLi5hZTYyOGQ3 NDdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yNzEwLDYg KzI3MTAsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVC VUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0 cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLmhlYXByZWwgPSB2YWNyZWwt PnJlbDsKIAogCS8qCiAJICogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4K QEAgLTI3NTksNiArMjc2MCw3IEBAIGxhenlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24g aW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCiAJaXZpbmZvLm51bV9o ZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJz dHJhdGVneTsKKwlpdmluZm8uaGVhcHJlbCA9IHZhY3JlbC0+cmVsOwogCiAJLyoKIAkgKiBV cGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDc0ZmYwMWJiMTcuLmQxYmE4NTk4NTEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTI4OCw4ICsy ODgsNyBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhl YXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVj cHRyKSkKIAkJCXsKIAkJCQlBc3NlcnQoIUluUmVjb3ZlcnkpOwotCQkJCXJlY3B0ciA9IGxv Z19oZWFwX3Zpc2libGUocmVsLT5yZF9sb2NhdG9yLCBoZWFwQnVmLCB2bUJ1ZiwKLQkJCQkJ CQkJCQkgIGN1dG9mZl94aWQsIGZsYWdzKTsKKwkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNp YmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKIAogCQkJCS8q CiAJCQkJICogSWYgZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGlu dHM9b24pLCB3ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRp bnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXgg ZjRjMWE5NzRlZi4uOGM2ZTg2N2M2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRpbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dGluc2VydC5jCkBAIC0zMCw3ICszMCw4IEBACiAjZGVmaW5lIEJUUkVFX0ZBU1RQQVRIX01J Tl9MRVZFTAkyCiAKIAotc3RhdGljIEJUU3RhY2sgX2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRp b24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKTsKK3N0YXRpYyBCVFN0YWNrIF9i dF9zZWFyY2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkJ CQkJIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOwogc3RhdGljIFRyYW5zYWN0aW9uSWQg X2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3Rh dGUsCiAJCQkJCQkJCQkgIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJCQkgIEluZGV4VW5p cXVlQ2hlY2sgY2hlY2tVbmlxdWUsIGJvb2wgKmlzX3VuaXF1ZSwKQEAgLTQxLDggKzQyLDkg QEAgc3RhdGljIE9mZnNldE51bWJlciBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWws CiAJCQkJCQkJCQkgIGJvb2wgaW5kZXhVbmNoYW5nZWQsCiAJCQkJCQkJCQkgIEJUU3RhY2sg c3RhY2ssCiAJCQkJCQkJCQkgIFJlbGF0aW9uIGhlYXBSZWwpOwotc3RhdGljIHZvaWQgX2J0 X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJU U3RhY2sgc3RhY2spOwotc3RhdGljIHZvaWQgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVs LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCitzdGF0aWMgdm9pZCBfYnRfc3RlcHJpZ2h0KFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkJCSAgQlRJbnNlcnRTdGF0ZSBp bnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjayk7CitzdGF0aWMgdm9pZCBfYnRfaW5zZXJ0b25w ZyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tl eSwKIAkJCQkJCSAgIEJ1ZmZlciBidWYsCiAJCQkJCQkgICBCdWZmZXIgY2J1ZiwKIAkJCQkJ CSAgIEJUU3RhY2sgc3RhY2ssCkBAIC01MSwxMyArNTMsMTMgQEAgc3RhdGljIHZvaWQgX2J0 X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCiAJCQkJ CQkgICBPZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwKIAkJCQkJCSAgIGludCBwb3N0aW5nb2Zm LAogCQkJCQkJICAgYm9vbCBzcGxpdF9vbmx5X3BhZ2UpOwotc3RhdGljIEJ1ZmZlciBfYnRf c3BsaXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYs Ci0JCQkJCQlCdWZmZXIgY2J1ZiwgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3 aXRlbXN6LAotCQkJCQkJSW5kZXhUdXBsZSBuZXdpdGVtLCBJbmRleFR1cGxlIG9yaWduZXdp dGVtLAorc3RhdGljIEJ1ZmZlciBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCisJCQkJCQlCdWZmZXIgYnVmLCBCdWZm ZXIgY2J1ZiwgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsCisJCQkJCQlTaXplIG5ld2l0ZW1z eiwgSW5kZXhUdXBsZSBuZXdpdGVtLCBJbmRleFR1cGxlIG9yaWduZXdpdGVtLAogCQkJCQkJ SW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYpOwotc3RhdGljIHZvaWQg X2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBCdWZmZXIgcmJ1 ZiwKLQkJCQkJCQkgIEJUU3RhY2sgc3RhY2ssIGJvb2wgaXNyb290LCBib29sIGlzb25seSk7 Ci1zdGF0aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYs IEJ1ZmZlciByYnVmKTsKK3N0YXRpYyB2b2lkIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9u IHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkgIEJ1ZmZlciBy YnVmLCBCVFN0YWNrIHN0YWNrLCBib29sIGlzcm9vdCwgYm9vbCBpc29ubHkpOworc3RhdGlj IEJ1ZmZlciBfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1 ZmZlciBsYnVmLCBCdWZmZXIgcmJ1Zik7CiBzdGF0aWMgaW5saW5lIGJvb2wgX2J0X3BnYWRk dHVwKFBhZ2UgcGFnZSwgU2l6ZSBpdGVtc2l6ZSwgSW5kZXhUdXBsZSBpdHVwLAogCQkJCQkJ CQlPZmZzZXROdW1iZXIgaXR1cF9vZmYsIGJvb2wgbmV3Zmlyc3RkYXRhaXRlbSk7CiBzdGF0 aWMgdm9pZCBfYnRfZGVsZXRlX29yX2RlZHVwX29uZV9wYWdlKFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gaGVhcFJlbCwKQEAgLTEwOCw3ICsxMTAsNyBAQCBfYnRfZG9pbnNlcnQoUmVsYXRp b24gcmVsLCBJbmRleFR1cGxlIGl0dXAsCiAJYm9vbAkJY2hlY2tpbmd1bmlxdWUgPSAoY2hl Y2tVbmlxdWUgIT0gVU5JUVVFX0NIRUNLX05PKTsKIAogCS8qIHdlIG5lZWQgYW4gaW5zZXJ0 aW9uIHNjYW4ga2V5IHRvIGRvIG91ciBzZWFyY2gsIHNvIGJ1aWxkIG9uZSAqLwotCWl0dXBf a2V5ID0gX2J0X21rc2NhbmtleShyZWwsIGl0dXApOworCWl0dXBfa2V5ID0gX2J0X21rc2Nh bmtleShyZWwsIGhlYXBSZWwsIGl0dXApOwogCiAJaWYgKGNoZWNraW5ndW5pcXVlKQogCXsK QEAgLTE2Miw3ICsxNjQsNyBAQCBzZWFyY2g6CiAJICogc2VhcmNoaW5nIGZyb20gdGhlIHJv b3QgcGFnZS4gIGluc2VydHN0YXRlLmJ1ZiB3aWxsIGhvbGQgYSBidWZmZXIgdGhhdAogCSAq IGlzIGxvY2tlZCBpbiBleGNsdXNpdmUgbW9kZSBhZnRlcndhcmRzLgogCSAqLwotCXN0YWNr ID0gX2J0X3NlYXJjaF9pbnNlcnQocmVsLCAmaW5zZXJ0c3RhdGUpOworCXN0YWNrID0gX2J0 X3NlYXJjaF9pbnNlcnQocmVsLCBoZWFwUmVsLCAmaW5zZXJ0c3RhdGUpOwogCiAJLyoKIAkg KiBjaGVja2luZ3VuaXF1ZSBpbnNlcnRzIGFyZSBub3QgYWxsb3dlZCB0byBnbyBhaGVhZCB3 aGVuIHR3byB0dXBsZXMgd2l0aApAQCAtMjU1LDggKzI1Nyw4IEBAIHNlYXJjaDoKIAkJICov CiAJCW5ld2l0ZW1vZmYgPSBfYnRfZmluZGluc2VydGxvYyhyZWwsICZpbnNlcnRzdGF0ZSwg Y2hlY2tpbmd1bmlxdWUsCiAJCQkJCQkJCQkgICBpbmRleFVuY2hhbmdlZCwgc3RhY2ssIGhl YXBSZWwpOwotCQlfYnRfaW5zZXJ0b25wZyhyZWwsIGl0dXBfa2V5LCBpbnNlcnRzdGF0ZS5i dWYsIEludmFsaWRCdWZmZXIsIHN0YWNrLAotCQkJCQkgICBpdHVwLCBpbnNlcnRzdGF0ZS5p dGVtc3osIG5ld2l0ZW1vZmYsCisJCV9idF9pbnNlcnRvbnBnKHJlbCwgaGVhcFJlbCwgaXR1 cF9rZXksIGluc2VydHN0YXRlLmJ1ZiwgSW52YWxpZEJ1ZmZlciwKKwkJCQkJICAgc3RhY2ss IGl0dXAsIGluc2VydHN0YXRlLml0ZW1zeiwgbmV3aXRlbW9mZiwKIAkJCQkJICAgaW5zZXJ0 c3RhdGUucG9zdGluZ29mZiwgZmFsc2UpOwogCX0KIAllbHNlCkBAIC0zMTIsNyArMzE0LDcg QEAgc2VhcmNoOgogICogc2luY2UgZWFjaCBwZXItYmFja2VuZCBjYWNoZSB3b24ndCBzdGF5 IHZhbGlkIGZvciBsb25nLgogICovCiBzdGF0aWMgQlRTdGFjawotX2J0X3NlYXJjaF9pbnNl cnQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKQorX2J0X3NlYXJj aF9pbnNlcnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVEluc2VydFN0YXRl IGluc2VydHN0YXRlKQogewogCUFzc2VydChpbnNlcnRzdGF0ZS0+YnVmID09IEludmFsaWRC dWZmZXIpOwogCUFzc2VydCghaW5zZXJ0c3RhdGUtPmJvdW5kc192YWxpZCk7CkBAIC0zNzUs OCArMzc3LDggQEAgX2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0 YXRlIGluc2VydHN0YXRlKQogCX0KIAogCS8qIENhbm5vdCB1c2Ugb3B0aW1pemF0aW9uIC0t IGRlc2NlbmQgdHJlZSwgcmV0dXJuIHByb3BlciBkZXNjZW50IHN0YWNrICovCi0JcmV0dXJu IF9idF9zZWFyY2gocmVsLCBpbnNlcnRzdGF0ZS0+aXR1cF9rZXksICZpbnNlcnRzdGF0ZS0+ YnVmLCBCVF9XUklURSwKLQkJCQkJICBOVUxMKTsKKwlyZXR1cm4gX2J0X3NlYXJjaChyZWws IGhlYXByZWwsIGluc2VydHN0YXRlLT5pdHVwX2tleSwgJmluc2VydHN0YXRlLT5idWYsCisJ CQkJCSAgQlRfV1JJVEUsIE5VTEwpOwogfQogCiAvKgpAQCAtODg1LDcgKzg4Nyw3IEBAIF9i dF9maW5kaW5zZXJ0bG9jKFJlbGF0aW9uIHJlbCwKIAkJCQkJX2J0X2NvbXBhcmUocmVsLCBp dHVwX2tleSwgcGFnZSwgUF9ISUtFWSkgPD0gMCkKIAkJCQkJYnJlYWs7CiAKLQkJCQlfYnRf c3RlcHJpZ2h0KHJlbCwgaW5zZXJ0c3RhdGUsIHN0YWNrKTsKKwkJCQlfYnRfc3RlcHJpZ2h0 KHJlbCwgaGVhcFJlbCwgaW5zZXJ0c3RhdGUsIHN0YWNrKTsKIAkJCQkvKiBVcGRhdGUgbG9j YWwgc3RhdGUgYWZ0ZXIgc3RlcHBpbmcgcmlnaHQgKi8KIAkJCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShpbnNlcnRzdGF0ZS0+YnVmKTsKIAkJCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUo cGFnZSk7CkBAIC05NjksNyArOTcxLDcgQEAgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24g cmVsLAogCQkJCXBnX3BybmdfdWludDMyKCZwZ19nbG9iYWxfcHJuZ19zdGF0ZSkgPD0gKFBH X1VJTlQzMl9NQVggLyAxMDApKQogCQkJCWJyZWFrOwogCi0JCQlfYnRfc3RlcHJpZ2h0KHJl bCwgaW5zZXJ0c3RhdGUsIHN0YWNrKTsKKwkJCV9idF9zdGVwcmlnaHQocmVsLCBoZWFwUmVs LCBpbnNlcnRzdGF0ZSwgc3RhY2spOwogCQkJLyogVXBkYXRlIGxvY2FsIHN0YXRlIGFmdGVy IHN0ZXBwaW5nIHJpZ2h0ICovCiAJCQlwYWdlID0gQnVmZmVyR2V0UGFnZShpbnNlcnRzdGF0 ZS0+YnVmKTsKIAkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKQEAgLTEwMjIs NyArMTAyNCw3IEBAIF9idF9maW5kaW5zZXJ0bG9jKFJlbGF0aW9uIHJlbCwKICAqIGluZGV4 ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfc3RlcHJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRJ bnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjaykKK19idF9zdGVwcmlnaHQo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0 YXRlLCBCVFN0YWNrIHN0YWNrKQogewogCVBhZ2UJCXBhZ2U7CiAJQlRQYWdlT3BhcXVlIG9w YXF1ZTsKQEAgLTEwNDgsNyArMTA1MCw3IEBAIF9idF9zdGVwcmlnaHQoUmVsYXRpb24gcmVs LCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKQogCQkgKi8KIAkJ aWYgKFBfSU5DT01QTEVURV9TUExJVChvcGFxdWUpKQogCQl7Ci0JCQlfYnRfZmluaXNoX3Nw bGl0KHJlbCwgcmJ1Ziwgc3RhY2spOworCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGhlYXBy ZWwsIHJidWYsIHN0YWNrKTsKIAkJCXJidWYgPSBJbnZhbGlkQnVmZmVyOwogCQkJY29udGlu dWU7CiAJCX0KQEAgLTEwOTksNiArMTEwMSw3IEBAIF9idF9zdGVwcmlnaHQoUmVsYXRpb24g cmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKQogICovCiBz dGF0aWMgdm9pZAogX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAorCQkJICAgUmVsYXRp b24gaGVhcHJlbCwKIAkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKIAkJCSAgIEJ1ZmZl ciBidWYsCiAJCQkgICBCdWZmZXIgY2J1ZiwKQEAgLTEyMDksOCArMTIxMiw4IEBAIF9idF9p bnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIAkJQXNzZXJ0KCFzcGxpdF9vbmx5X3BhZ2UpOwog CiAJCS8qIHNwbGl0IHRoZSBidWZmZXIgaW50byBsZWZ0IGFuZCByaWdodCBoYWx2ZXMgKi8K LQkJcmJ1ZiA9IF9idF9zcGxpdChyZWwsIGl0dXBfa2V5LCBidWYsIGNidWYsIG5ld2l0ZW1v ZmYsIGl0ZW1zeiwgaXR1cCwKLQkJCQkJCSBvcmlnaXR1cCwgbnBvc3RpbmcsIHBvc3Rpbmdv ZmYpOworCQlyYnVmID0gX2J0X3NwbGl0KHJlbCwgaGVhcHJlbCwgaXR1cF9rZXksIGJ1Ziwg Y2J1ZiwgbmV3aXRlbW9mZiwgaXRlbXN6LAorCQkJCQkJIGl0dXAsIG9yaWdpdHVwLCBucG9z dGluZywgcG9zdGluZ29mZik7CiAJCVByZWRpY2F0ZUxvY2tQYWdlU3BsaXQocmVsLAogCQkJ CQkJCSAgIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZiksCiAJCQkJCQkJICAgQnVmZmVyR2V0 QmxvY2tOdW1iZXIocmJ1ZikpOwpAQCAtMTIzMyw3ICsxMjM2LDcgQEAgX2J0X2luc2VydG9u cGcoUmVsYXRpb24gcmVsLAogCQkgKiBwYWdlLgogCQkgKi0tLS0tLS0tLS0KIAkJICovCi0J CV9idF9pbnNlcnRfcGFyZW50KHJlbCwgYnVmLCByYnVmLCBzdGFjaywgaXNyb290LCBpc29u bHkpOworCQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGhlYXByZWwsIGJ1ZiwgcmJ1Ziwgc3Rh Y2ssIGlzcm9vdCwgaXNvbmx5KTsKIAl9CiAJZWxzZQogCXsKQEAgLTEyNTQsNyArMTI1Nyw3 IEBAIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIAkJCUFzc2VydCghaXNsZWFmKTsK IAkJCUFzc2VydChCdWZmZXJJc1ZhbGlkKGNidWYpKTsKIAotCQkJbWV0YWJ1ZiA9IF9idF9n ZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQkJbWV0YWJ1ZiA9IF9i dF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOwogCQkJ bWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJCW1ldGFkID0gQlRQYWdlR2V0 TWV0YShtZXRhcGcpOwogCkBAIC0xNDE4LDcgKzE0MjEsNyBAQCBfYnRfaW5zZXJ0b25wZyhS ZWxhdGlvbiByZWwsCiAJCSAqIGNhbGwgX2J0X2dldHJvb3RoZWlnaHQgd2hpbGUgaG9sZGlu ZyBhIGJ1ZmZlciBsb2NrLgogCQkgKi8KIAkJaWYgKEJsb2NrTnVtYmVySXNWYWxpZChibG9j a2NhY2hlKSAmJgotCQkJX2J0X2dldHJvb3RoZWlnaHQocmVsKSA+PSBCVFJFRV9GQVNUUEFU SF9NSU5fTEVWRUwpCisJCQlfYnRfZ2V0cm9vdGhlaWdodChyZWwsIGhlYXByZWwpID49IEJU UkVFX0ZBU1RQQVRIX01JTl9MRVZFTCkKIAkJCVJlbGF0aW9uU2V0VGFyZ2V0QmxvY2socmVs LCBibG9ja2NhY2hlKTsKIAl9CiAKQEAgLTE0NTksOCArMTQ2Miw4IEBAIF9idF9pbnNlcnRv bnBnKFJlbGF0aW9uIHJlbCwKICAqCQlUaGUgcGluIGFuZCBsb2NrIG9uIGJ1ZiBhcmUgbWFp bnRhaW5lZC4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwg QlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVmLCBCdWZmZXIgY2J1ZiwKLQkJICBP ZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwgU2l6ZSBuZXdpdGVtc3osIEluZGV4VHVwbGUgbmV3 aXRlbSwKK19idF9zcGxpdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU2Nh bkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1ZiwKKwkJICBCdWZmZXIgY2J1ZiwgT2Zmc2V0 TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRlbXN6LCBJbmRleFR1cGxlIG5ld2l0ZW0s CiAJCSAgSW5kZXhUdXBsZSBvcmlnbmV3aXRlbSwgSW5kZXhUdXBsZSBucG9zdGluZywgdWlu dDE2IHBvc3RpbmdvZmYpCiB7CiAJQnVmZmVyCQlyYnVmOwpAQCAtMTcxMiw3ICsxNzE1LDcg QEAgX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZm ZXIgYnVmLCBCdWZmZXIgY2J1ZiwKIAkgKiB3YXkgYmVjYXVzZSBpdCBhdm9pZHMgYW4gdW5u ZWNlc3NhcnkgUEFOSUMgd2hlbiBlaXRoZXIgb3JpZ3BhZ2Ugb3IgaXRzCiAJICogZXhpc3Rp bmcgc2libGluZyBwYWdlIGFyZSBjb3JydXB0LgogCSAqLwotCXJidWYgPSBfYnRfZ2V0YnVm KHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXBy ZWwsIFBfTkVXLCBCVF9XUklURSk7CiAJcmlnaHRwYWdlID0gQnVmZmVyR2V0UGFnZShyYnVm KTsKIAlyaWdodHBhZ2VudW1iZXIgPSBCdWZmZXJHZXRCbG9ja051bWJlcihyYnVmKTsKIAkv KiByaWdodHBhZ2Ugd2FzIGluaXRpYWxpemVkIGJ5IF9idF9nZXRidWYgKi8KQEAgLTE4ODUs NyArMTg4OCw3IEBAIF9idF9zcGxpdChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVw X2tleSwgQnVmZmVyIGJ1ZiwgQnVmZmVyIGNidWYsCiAJICovCiAJaWYgKCFpc3JpZ2h0bW9z dCkKIAl7Ci0JCXNidWYgPSBfYnRfZ2V0YnVmKHJlbCwgb29wYXF1ZS0+YnRwb19uZXh0LCBC VF9XUklURSk7CisJCXNidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgb29wYXF1ZS0+ YnRwb19uZXh0LCBCVF9XUklURSk7CiAJCXNwYWdlID0gQnVmZmVyR2V0UGFnZShzYnVmKTsK IAkJc29wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShzcGFnZSk7CiAJCWlmIChzb3BhcXVlLT5i dHBvX3ByZXYgIT0gb3JpZ3BhZ2VudW1iZXIpCkBAIC0yMDkyLDYgKzIwOTUsNyBAQCBfYnRf c3BsaXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYs IEJ1ZmZlciBjYnVmLAogICovCiBzdGF0aWMgdm9pZAogX2J0X2luc2VydF9wYXJlbnQoUmVs YXRpb24gcmVsLAorCQkJCSAgUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkgIEJ1ZmZlciBidWYs CiAJCQkJICBCdWZmZXIgcmJ1ZiwKIAkJCQkgIEJUU3RhY2sgc3RhY2ssCkBAIC0yMTE4LDcg KzIxMjIsNyBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCUFzc2VydChz dGFjayA9PSBOVUxMKTsKIAkJQXNzZXJ0KGlzb25seSk7CiAJCS8qIGNyZWF0ZSBhIG5ldyBy b290IG5vZGUgYW5kIHVwZGF0ZSB0aGUgbWV0YXBhZ2UgKi8KLQkJcm9vdGJ1ZiA9IF9idF9u ZXdyb290KHJlbCwgYnVmLCByYnVmKTsKKwkJcm9vdGJ1ZiA9IF9idF9uZXdyb290KHJlbCwg aGVhcHJlbCwgYnVmLCByYnVmKTsKIAkJLyogcmVsZWFzZSB0aGUgc3BsaXQgYnVmZmVycyAq LwogCQlfYnRfcmVsYnVmKHJlbCwgcm9vdGJ1Zik7CiAJCV9idF9yZWxidWYocmVsLCByYnVm KTsKQEAgLTIxNTcsNyArMjE2MSw4IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJl bCwKIAkJCQkJIEJsb2NrTnVtYmVySXNWYWxpZChSZWxhdGlvbkdldFRhcmdldEJsb2NrKHJl bCkpKSk7CiAKIAkJCS8qIEZpbmQgdGhlIGxlZnRtb3N0IHBhZ2UgYXQgdGhlIG5leHQgbGV2 ZWwgdXAgKi8KLQkJCXBidWYgPSBfYnRfZ2V0X2VuZHBvaW50KHJlbCwgb3BhcXVlLT5idHBv X2xldmVsICsgMSwgZmFsc2UsIE5VTEwpOworCQkJcGJ1ZiA9IF9idF9nZXRfZW5kcG9pbnQo cmVsLCBoZWFwcmVsLCBvcGFxdWUtPmJ0cG9fbGV2ZWwgKyAxLCBmYWxzZSwKKwkJCQkJCQkJ CU5VTEwpOwogCQkJLyogU2V0IHVwIGEgcGhvbnkgc3RhY2sgZW50cnkgcG9pbnRpbmcgdGhl cmUgKi8KIAkJCXN0YWNrID0gJmZha2VzdGFjazsKIAkJCXN0YWNrLT5idHNfYmxrbm8gPSBC dWZmZXJHZXRCbG9ja051bWJlcihwYnVmKTsKQEAgLTIxODMsNyArMjE4OCw3IEBAIF9idF9p bnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKIAkJICogbmV3IGRvd25saW5rIHdpbGwgYmUg aW5zZXJ0ZWQgYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0LiBFdmVuIGJ1ZidzCiAJCSAqIHBhcmVu dCBtYXkgaGF2ZSBjaGFuZ2VkLgogCQkgKi8KLQkJcGJ1ZiA9IF9idF9nZXRzdGFja2J1Zihy ZWwsIHN0YWNrLCBia251bSk7CisJCXBidWYgPSBfYnRfZ2V0c3RhY2tidWYocmVsLCBoZWFw cmVsLCBzdGFjaywgYmtudW0pOwogCiAJCS8qCiAJCSAqIFVubG9jayB0aGUgcmlnaHQgY2hp bGQuICBUaGUgbGVmdCBjaGlsZCB3aWxsIGJlIHVubG9ja2VkIGluCkBAIC0yMjA3LDcgKzIy MTIsNyBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgYmtudW0sIHJia251bSkpKTsKIAogCQkvKiBS ZWN1cnNpdmVseSBpbnNlcnQgaW50byB0aGUgcGFyZW50ICovCi0JCV9idF9pbnNlcnRvbnBn KHJlbCwgTlVMTCwgcGJ1ZiwgYnVmLCBzdGFjay0+YnRzX3BhcmVudCwKKwkJX2J0X2luc2Vy dG9ucGcocmVsLCBoZWFwcmVsLCBOVUxMLCBwYnVmLCBidWYsIHN0YWNrLT5idHNfcGFyZW50 LAogCQkJCQkgICBuZXdfaXRlbSwgTUFYQUxJR04oSW5kZXhUdXBsZVNpemUobmV3X2l0ZW0p KSwKIAkJCQkJICAgc3RhY2stPmJ0c19vZmZzZXQgKyAxLCAwLCBpc29ubHkpOwogCkBAIC0y MjI3LDcgKzIyMzIsNyBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAgKiBh bmQgdW5waW5uZWQuCiAgKi8KIHZvaWQKLV9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykKK19idF9maW5pc2hfc3BsaXQoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykK IHsKIAlQYWdlCQlscGFnZSA9IEJ1ZmZlckdldFBhZ2UobGJ1Zik7CiAJQlRQYWdlT3BhcXVl IGxwYWdlb3AgPSBCVFBhZ2VHZXRPcGFxdWUobHBhZ2UpOwpAQCAtMjI0MCw3ICsyMjQ1LDcg QEAgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNr IHN0YWNrKQogCUFzc2VydChQX0lOQ09NUExFVEVfU1BMSVQobHBhZ2VvcCkpOwogCiAJLyog TG9jayByaWdodCBzaWJsaW5nLCB0aGUgb25lIG1pc3NpbmcgdGhlIGRvd25saW5rICovCi0J cmJ1ZiA9IF9idF9nZXRidWYocmVsLCBscGFnZW9wLT5idHBvX25leHQsIEJUX1dSSVRFKTsK KwlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIGxwYWdlb3AtPmJ0cG9fbmV4dCwg QlRfV1JJVEUpOwogCXJwYWdlID0gQnVmZmVyR2V0UGFnZShyYnVmKTsKIAlycGFnZW9wID0g QlRQYWdlR2V0T3BhcXVlKHJwYWdlKTsKIApAQCAtMjI1Miw3ICsyMjU3LDcgQEAgX2J0X2Zp bmlzaF9zcGxpdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKQog CQlCVE1ldGFQYWdlRGF0YSAqbWV0YWQ7CiAKIAkJLyogYWNxdWlyZSBsb2NrIG9uIHRoZSBt ZXRhcGFnZSAqLwotCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdF LCBCVF9XUklURSk7CisJCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRS RUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKIAkJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRh YnVmKTsKIAkJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAKQEAgLTIyNjksNyAr MjI3NCw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1Ziwg QlRTdGFjayBzdGFjaykKIAllbG9nKERFQlVHMSwgImZpbmlzaGluZyBpbmNvbXBsZXRlIHNw bGl0IG9mICV1LyV1IiwKIAkJIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGxidWYpLCBCdWZmZXJH ZXRCbG9ja051bWJlcihyYnVmKSk7CiAKLQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGxidWYs IHJidWYsIHN0YWNrLCB3YXNyb290LCB3YXNvbmx5KTsKKwlfYnRfaW5zZXJ0X3BhcmVudChy ZWwsIGhlYXByZWwsIGxidWYsIHJidWYsIHN0YWNrLCB3YXNyb290LCB3YXNvbmx5KTsKIH0K IAogLyoKQEAgLTIzMDQsNyArMjMwOSw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24g cmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykKICAqCQlvZmZzZXQgbnVtYmVyIGJ0 c19vZmZzZXQgKyAxLgogICovCiBCdWZmZXIKLV9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiBy ZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2NrTnVtYmVyIGNoaWxkKQorX2J0X2dldHN0YWNrYnVm KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tO dW1iZXIgY2hpbGQpCiB7CiAJQmxvY2tOdW1iZXIgYmxrbm87CiAJT2Zmc2V0TnVtYmVyIHN0 YXJ0OwpAQCAtMjMxOCwxMyArMjMyMywxMyBAQCBfYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24g cmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGlsZCkKIAkJUGFnZQkJcGFnZTsK IAkJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKIAotCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxr bm8sIEJUX1dSSVRFKTsKKwkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIGJsa25v LCBCVF9XUklURSk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCW9wYXF1ZSA9 IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIAogCQlpZiAoUF9JTkNPTVBMRVRFX1NQTElUKG9w YXF1ZSkpCiAJCXsKLQkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBidWYsIHN0YWNrLT5idHNf cGFyZW50KTsKKwkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBoZWFwcmVsLCBidWYsIHN0YWNr LT5idHNfcGFyZW50KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTI0MjgsNyArMjQzMyw3 IEBAIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2Nr TnVtYmVyIGNoaWxkKQogICoJCWxidWYsIHJidWYgJiByb290YnVmLgogICovCiBzdGF0aWMg QnVmZmVyCi1fYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCdWZmZXIg cmJ1ZikKK19idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVm ZmVyIGxidWYsIEJ1ZmZlciByYnVmKQogewogCUJ1ZmZlcgkJcm9vdGJ1ZjsKIAlQYWdlCQls cGFnZSwKQEAgLTI0NTQsMTIgKzI0NTksMTIgQEAgX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpCiAJbG9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1 ZShscGFnZSk7CiAKIAkvKiBnZXQgYSBuZXcgcm9vdCBwYWdlICovCi0Jcm9vdGJ1ZiA9IF9i dF9nZXRidWYocmVsLCBQX05FVywgQlRfV1JJVEUpOworCXJvb3RidWYgPSBfYnRfZ2V0YnVm KHJlbCwgaGVhcHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKIAlyb290cGFnZSA9IEJ1ZmZlckdl dFBhZ2Uocm9vdGJ1Zik7CiAJcm9vdGJsa251bSA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHJv b3RidWYpOwogCiAJLyogYWNxdWlyZSBsb2NrIG9uIHRoZSBtZXRhcGFnZSAqLwotCW1ldGFi dWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKKwltZXRh YnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklU RSk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAltZXRhZCA9IEJUUGFn ZUdldE1ldGEobWV0YXBnKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYwpp bmRleCAzZmVlZTI4ZDE5Li4xNTFhZDM3YTU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHBhZ2UuYwpAQCAtMzgsMjUgKzM4LDI0IEBACiAjaW5jbHVkZSAidXRpbHMvc25hcG1n ci5oIgogCiBzdGF0aWMgQlRNZXRhUGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJl bCwgQnVmZmVyIG1ldGFidWYpOwotc3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCitzdGF0aWMgdm9pZCBfYnRfbG9nX3Jl dXNlX3BhZ2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJlciBi bGtubywKIAkJCQkJCQkgICBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKTsKLXN0YXRpYyB2 b2lkIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorc3Rh dGljIHZvaWQgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhl YXByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b24sCiAJCQkJCQkJCU9mZnNldE51bWJlciAqZGVsZXRhYmxlLCBpbnQgbmRl bGV0YWJsZSwKIAkJCQkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBk YXRhYmxlKTsKIHN0YXRpYyBjaGFyICpfYnRfZGVsaXRlbXNfdXBkYXRlKEJUVmFjdXVtUG9z dGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSwKIAkJCQkJCQkJIE9mZnNldE51bWJl ciAqdXBkYXRlZG9mZnNldHMsCiAJCQkJCQkJCSBTaXplICp1cGRhdGVkYnVmbGVuLCBib29s IG5lZWRzd2FsKTsKLXN0YXRpYyBib29sIF9idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRp b24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwKLQkJCQkJCQkJICAgQlRTdGFjayBzdGFjayk7Citz dGF0aWMgYm9vbCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwKKwkJCQkJCQkJICAgQnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3RhY2sp Owogc3RhdGljIGJvb2wgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGxlYWZidWYsCiAJCQkJCQkJCQkgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogCQkJ CQkJCQkJIGJvb2wgKnJpZ2h0c2liX2VtcHR5LAogCQkJCQkJCQkJIEJUVmFjU3RhdGUgKnZz dGF0ZSk7Ci1zdGF0aWMgYm9vbCBfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGNoaWxkLAotCQkJCQkJCQkJQlRTdGFjayBzdGFjaywKLQkJCQkJ CQkJCUJ1ZmZlciAqc3VidHJlZXBhcmVudCwKLQkJCQkJCQkJCU9mZnNldE51bWJlciAqcG9m ZnNldCwKK3N0YXRpYyBib29sIF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkJCQkJCUJsb2NrTnVtYmVyIGNoaWxkLCBCVFN0 YWNrIHN0YWNrLAorCQkJCQkJCQkJQnVmZmVyICpzdWJ0cmVlcGFyZW50LCBPZmZzZXROdW1i ZXIgKnBvZmZzZXQsCiAJCQkJCQkJCQlCbG9ja051bWJlciAqdG9wcGFyZW50LAogCQkJCQkJ CQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVudHJpZ2h0c2liKTsKIHN0YXRpYyB2b2lkIF9idF9w ZW5kaW5nZnNtX2FkZChCVFZhY1N0YXRlICp2c3RhdGUsIEJsb2NrTnVtYmVyIHRhcmdldCwK QEAgLTE3OCw3ICsxNzcsNyBAQCBfYnRfZ2V0bWV0YShSZWxhdGlvbiByZWwsIEJ1ZmZlciBt ZXRhYnVmKQogICogaW5kZXggdHVwbGVzIG5lZWRlZCB0byBiZSBkZWxldGVkLgogICovCiBi b29sCi1fYnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQorX2J0X3ZhY3V1 bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlC dWZmZXIJCW1ldGFidWY7CiAJUGFnZQkJbWV0YXBnOwpAQCAtMTkxLDcgKzE5MCw3IEBAIF9i dF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpCiAJICoKIAkgKiBOb3RlIHRo YXQgd2UgZGVsaWJlcmF0ZWx5IGF2b2lkIHVzaW5nIGNhY2hlZCB2ZXJzaW9uIG9mIG1ldGFw YWdlIGhlcmUuCiAJICovCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRB UEFHRSwgQlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBC VFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRh YnVmKTsKIAltZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKIAlidG1fdmVyc2lvbiA9 IG1ldGFkLT5idG1fdmVyc2lvbjsKQEAgLTIzMSw3ICsyMzAsNyBAQCBfYnRfdmFjdXVtX25l ZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQogICogZmluYWxpemVkLgogICovCiB2b2lkCi1f YnRfc2V0X2NsZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxw YWdlcykKK19idF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVh cHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2VzKQogewogCUJ1ZmZlcgkJbWV0YWJ1ZjsK IAlQYWdlCQltZXRhcGc7CkBAIC0yNTUsNyArMjU0LDcgQEAgX2J0X3NldF9jbGVhbnVwX2lu Zm8oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiAJICogbm8gbG9u Z2VyIHVzZWQgYXMgb2YgUG9zdGdyZVNRTCAxNC4gIFdlIHNldCBpdCB0byAtMS4wIG9uIHJl d3JpdGUsIGp1c3QKIAkgKiB0byBiZSBjb25zaXN0ZW50LgogCSAqLwotCW1ldGFidWYgPSBf YnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBf YnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCW1l dGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRh KG1ldGFwZyk7CiAKQEAgLTM0MCw3ICszMzksNyBAQCBfYnRfc2V0X2NsZWFudXBfaW5mbyhS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKICAqCQlUaGUgbWV0YWRh dGEgcGFnZSBpcyBub3QgbG9ja2VkIG9yIHBpbm5lZCBvbiBleGl0LgogICovCiBCdWZmZXIK LV9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKK19idF9nZXRyb290KFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgaW50IGFjY2VzcykKIHsKIAlCdWZmZXIJ CW1ldGFidWY7CiAJQnVmZmVyCQlyb290YnVmOwpAQCAtMzcwLDcgKzM2OSw3IEBAIF9idF9n ZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJQXNzZXJ0KHJvb3RibGtubyAh PSBQX05PTkUpOwogCQlyb290bGV2ZWwgPSBtZXRhZC0+YnRtX2Zhc3RsZXZlbDsKIAotCQly b290YnVmID0gX2J0X2dldGJ1ZihyZWwsIHJvb3RibGtubywgQlRfUkVBRCk7CisJCXJvb3Ri dWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgcm9vdGJsa25vLCBCVF9SRUFEKTsKIAkJ cm9vdHBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0gQlRQ YWdlR2V0T3BhcXVlKHJvb3RwYWdlKTsKIApAQCAtMzk2LDcgKzM5NSw3IEBAIF9idF9nZXRy b290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJcmVsLT5yZF9hbWNhY2hlID0gTlVM TDsKIAl9CiAKLQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBC VF9SRUFEKTsKKwltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01F VEFQQUdFLCBCVF9SRUFEKTsKIAltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7 CiAKIAkvKiBpZiBubyByb290IHBhZ2UgaW5pdGlhbGl6ZWQgeWV0LCBkbyBpdCAqLwpAQCAt NDI5LDcgKzQyOCw3IEBAIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykK IAkJCSAqIHRvIG9wdGltaXplIHRoaXMgY2FzZS4pCiAJCQkgKi8KIAkJCV9idF9yZWxidWYo cmVsLCBtZXRhYnVmKTsKLQkJCXJldHVybiBfYnRfZ2V0cm9vdChyZWwsIGFjY2Vzcyk7CisJ CQlyZXR1cm4gX2J0X2dldHJvb3QocmVsLCBoZWFwcmVsLCBhY2Nlc3MpOwogCQl9CiAKIAkJ LyoKQEAgLTQzNyw3ICs0MzYsNyBAQCBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBh Y2Nlc3MpCiAJCSAqIHRoZSBuZXcgcm9vdCBwYWdlLiAgU2luY2UgdGhpcyBpcyB0aGUgZmly c3QgcGFnZSBpbiB0aGUgdHJlZSwgaXQncwogCQkgKiBhIGxlYWYgYXMgd2VsbCBhcyB0aGUg cm9vdC4KIAkJICovCi0JCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dS SVRFKTsKKwkJcm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBQX05FVywgQlRf V1JJVEUpOwogCQlyb290Ymxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihyb290YnVmKTsK IAkJcm9vdHBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0g QlRQYWdlR2V0T3BhcXVlKHJvb3RwYWdlKTsKQEAgLTU3NCw3ICs1NzMsNyBAQCBfYnRfZ2V0 cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAgKiBtb3ZpbmcgdG8gdGhlIHJvb3Qg LS0tIHRoYXQnZCBkZWFkbG9jayBhZ2FpbnN0IGFueSBjb25jdXJyZW50IHJvb3Qgc3BsaXQu KQogICovCiBCdWZmZXIKLV9idF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwpCitfYnRfZ2V0 dHJ1ZXJvb3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJ bWV0YWJ1ZjsKIAlQYWdlCQltZXRhcGc7CkBAIC01OTYsNyArNTk1LDcgQEAgX2J0X2dldHRy dWVyb290KFJlbGF0aW9uIHJlbCkKIAkJcGZyZWUocmVsLT5yZF9hbWNhY2hlKTsKIAlyZWwt PnJkX2FtY2FjaGUgPSBOVUxMOwogCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJF RV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFw cmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFn ZShtZXRhYnVmKTsKIAltZXRhb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKG1ldGFwZyk7CiAJ bWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CkBAIC02NjksNyArNjY4LDcgQEAgX2J0 X2dldHRydWVyb290KFJlbGF0aW9uIHJlbCkKICAqCQlhYm91dCB1cGRhdGluZyBwcmV2aW91 c2x5IGNhY2hlZCBkYXRhLgogICovCiBpbnQKLV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9u IHJlbCkKK19idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJl bCkKIHsKIAlCVE1ldGFQYWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTY3Nyw3ICs2NzYsNyBAQCBf YnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwpCiAJewogCQlCdWZmZXIJCW1ldGFidWY7 CiAKLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVB RCk7CisJCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBB R0UsIEJUX1JFQUQpOwogCQltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAK IAkJLyoKQEAgLTczMyw3ICs3MzIsNyBAQCBfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiBy ZWwpCiAgKgkJcGdfdXBncmFkZSdkIGZyb20gUG9zdGdyZXMgMTIuCiAgKi8KIHZvaWQKLV9i dF9tZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFjZSwgYm9vbCAq YWxsZXF1YWxpbWFnZSkKK19idF9tZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIFJlbGF0aW9u IGhlYXByZWwsIGJvb2wgKmhlYXBrZXlzcGFjZSwgYm9vbCAqYWxsZXF1YWxpbWFnZSkKIHsK IAlCVE1ldGFQYWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTc0MSw3ICs3NDAsNyBAQCBfYnRfbWV0 YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wgKmFsbGVx dWFsaW1hZ2UpCiAJewogCQlCdWZmZXIJCW1ldGFidWY7CiAKLQkJbWV0YWJ1ZiA9IF9idF9n ZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJCW1ldGFidWYgPSBfYnRf Z2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCQltZXRh ZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkJLyoKQEAgLTgyNSw3ICs4MjQs OCBAQCBfYnRfY2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZikKICAqIExvZyB0 aGUgcmV1c2Ugb2YgYSBwYWdlIGZyb20gdGhlIEZTTS4KICAqLwogc3RhdGljIHZvaWQKLV9i dF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxs VHJhbnNhY3Rpb25JZCBzYWZleGlkKQorX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCisJCQkJICAgRnVsbFRy YW5zYWN0aW9uSWQgc2FmZXhpZCkKIHsKIAl4bF9idHJlZV9yZXVzZV9wYWdlIHhscmVjX3Jl dXNlOwogCkBAIC04MzYsNiArODM2LDcgQEAgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpCiAJ ICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2UuaXNDYXRhbG9nUmVsID0g UmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAl4bHJl Y19yZXVzZS5sb2NhdG9yID0gcmVsLT5yZF9sb2NhdG9yOwogCXhscmVjX3JldXNlLmJsb2Nr ID0gYmxrbm87CiAJeGxyZWNfcmV1c2Uuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzYWZl eGlkOwpAQCAtODY4LDcgKzg2OSw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQogICoJ CWFzIF9idF9sb2NrYnVmKCkuCiAgKi8KIEJ1ZmZlcgotX2J0X2dldGJ1ZihSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNzKQorX2J0X2dldGJ1ZihSZWxhdGlv biByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNz KQogewogCUJ1ZmZlcgkJYnVmOwogCkBAIC05NDMsNyArOTQ0LDcgQEAgX2J0X2dldGJ1ZihS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNzKQogCQkJCQkgKiB0 aGFuIHNhZmV4aWQgdmFsdWUKIAkJCQkJICovCiAJCQkJCWlmIChYTG9nU3RhbmRieUluZm9B Y3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0JCQkJCQlfYnRfbG9nX3JldXNl X3BhZ2UocmVsLCBibGtubywKKwkJCQkJCV9idF9sb2dfcmV1c2VfcGFnZShyZWwsIGhlYXBy ZWwsIGJsa25vLAogCQkJCQkJCQkJCSAgIEJUUGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CiAK IAkJCQkJLyogT2theSB0byB1c2UgcGFnZS4gIFJlLWluaXRpYWxpemUgYW5kIHJldHVybiBp dC4gKi8KQEAgLTEyOTMsNyArMTI5NCw3IEBAIF9idF9kZWxpdGVtc192YWN1dW0oUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLAogICogY2xlYXIgcGFnZSdzIFZBQ1VVTSBjeWNsZSBJRC4K ICAqLwogc3RhdGljIHZvaWQKLV9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLAorX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIFJlbGF0aW9u IGhlYXByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b24sCiAJCQkJCU9mZnNldE51bWJlciAqZGVsZXRhYmxlLCBpbnQgbmRlbGV0 YWJsZSwKIAkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxl KQpAQCAtMTM1OCw2ICsxMzU5LDcgQEAgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4bF9idHJlZV9kZWxl dGUgeGxyZWNfZGVsZXRlOwogCisJCXhscmVjX2RlbGV0ZS5pc0NhdGFsb2dSZWwgPSBSZWxh dGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCQl4bHJlY19k ZWxldGUuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9yaXpv bjsKIAkJeGxyZWNfZGVsZXRlLm5kZWxldGVkID0gbmRlbGV0YWJsZTsKIAkJeGxyZWNfZGVs ZXRlLm51cGRhdGVkID0gbnVwZGF0YWJsZTsKQEAgLTE2ODQsOCArMTY4Niw4IEBAIF9idF9k ZWxpdGVtc19kZWxldGVfY2hlY2soUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlv biBoZWFwUmVsLAogCX0KIAogCS8qIFBoeXNpY2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElE cykgdXNpbmcgZGVsZXRhYmxlIChvciB1cGRhdGFibGUpICovCi0JX2J0X2RlbGl0ZW1zX2Rl bGV0ZShyZWwsIGJ1Ziwgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQlkZWxldGFi bGUsIG5kZWxldGFibGUsIHVwZGF0YWJsZSwgbnVwZGF0YWJsZSk7CisJX2J0X2RlbGl0ZW1z X2RlbGV0ZShyZWwsIGhlYXBSZWwsIGJ1Ziwgc25hcHNob3RDb25mbGljdEhvcml6b24sIGRl bGV0YWJsZSwKKwkJCQkJCW5kZWxldGFibGUsIHVwZGF0YWJsZSwgbnVwZGF0YWJsZSk7CiAK IAkvKiBiZSB0aWR5ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudXBkYXRhYmxlOyBpKysp CkBAIC0xNzA2LDcgKzE3MDgsOCBAQCBfYnRfZGVsaXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24gaGVhcFJlbCwKICAqIHNhbWUgbGV2ZWwg bXVzdCBhbHdheXMgYmUgbG9ja2VkIGxlZnQgdG8gcmlnaHQgdG8gYXZvaWQgZGVhZGxvY2tz LgogICovCiBzdGF0aWMgYm9vbAotX2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1iZXIgdGFyZ2V0KQorX2J0X2xlZnRz aWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1i ZXIgbGVmdHNpYiwKKwkJCQkJICBCbG9ja051bWJlciB0YXJnZXQpCiB7CiAJQnVmZmVyCQli dWY7CiAJUGFnZQkJcGFnZTsKQEAgLTE3MTcsNyArMTcyMCw3IEBAIF9idF9sZWZ0c2liX3Nw bGl0ZmxhZyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGxlZnRzaWIsIEJsb2NrTnVtYmVy IHRhcmdldCkKIAlpZiAobGVmdHNpYiA9PSBQX05PTkUpCiAJCXJldHVybiBmYWxzZTsKIAot CWJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWZ0c2liLCBCVF9SRUFEKTsKKwlidWYgPSBfYnRf Z2V0YnVmKHJlbCwgaGVhcHJlbCwgbGVmdHNpYiwgQlRfUkVBRCk7CiAJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmKTsKIAlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKQEAg LTE3NjMsNyArMTc2Niw3IEBAIF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGxlZnRzaWIsIEJsb2NrTnVtYmVyIHRhcmdldCkKICAqIHRvLWJlLWRl bGV0ZWQgc3VidHJlZS4pCiAgKi8KIHN0YXRpYyBib29sCi1fYnRfcmlnaHRzaWJfaGFsZmRl YWRmbGFnKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVhZnJpZ2h0c2liKQorX2J0X3Jp Z2h0c2liX2hhbGZkZWFkZmxhZyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJs b2NrTnVtYmVyIGxlYWZyaWdodHNpYikKIHsKIAlCdWZmZXIJCWJ1ZjsKIAlQYWdlCQlwYWdl OwpAQCAtMTc3Miw3ICsxNzc1LDcgQEAgX2J0X3JpZ2h0c2liX2hhbGZkZWFkZmxhZyhSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyIGxlYWZyaWdodHNpYikKIAogCUFzc2VydChsZWFmcmln aHRzaWIgIT0gUF9OT05FKTsKIAotCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWFmcmlnaHRz aWIsIEJUX1JFQUQpOworCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBsZWFmcmln aHRzaWIsIEJUX1JFQUQpOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJb3BhcXVl ID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCkBAIC0xOTYxLDE3ICsxOTY0LDE4IEBAIF9i dF9wYWdlZGVsKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUVmFjU3RhdGUgKnZz dGF0ZSkKIAkJCQkgKiBtYXJrZWQgd2l0aCBJTkNPTVBMRVRFX1NQTElUIGZsYWcgYmVmb3Jl IHByb2NlZWRpbmcKIAkJCQkgKi8KIAkJCQlBc3NlcnQobGVhZmJsa25vID09IHNjYW5ibGtu byk7Ci0JCQkJaWYgKF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWIsIGxlYWZi bGtubykpCisJCQkJaWYgKF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIHZzdGF0ZS0+aW5m by0+aGVhcHJlbCwgbGVmdHNpYiwgbGVhZmJsa25vKSkKIAkJCQl7CiAJCQkJCVJlbGVhc2VC dWZmZXIobGVhZmJ1Zik7CiAJCQkJCXJldHVybjsKIAkJCQl9CiAKIAkJCQkvKiB3ZSBuZWVk IGFuIGluc2VydGlvbiBzY2FuIGtleSBmb3IgdGhlIHNlYXJjaCwgc28gYnVpbGQgb25lICov Ci0JCQkJaXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgdGFyZ2V0a2V5KTsKKwkJCQlp dHVwX2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIHRh cmdldGtleSk7CiAJCQkJLyogZmluZCB0aGUgbGVmdG1vc3QgbGVhZiBwYWdlIHdpdGggbWF0 Y2hpbmcgcGl2b3QvaGlnaCBrZXkgKi8KIAkJCQlpdHVwX2tleS0+cGl2b3RzZWFyY2ggPSB0 cnVlOwotCQkJCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsIGl0dXBfa2V5LCAmc2xlYWZidWYs IEJUX1JFQUQsIE5VTEwpOworCQkJCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsIHZzdGF0ZS0+ aW5mby0+aGVhcHJlbCwgaXR1cF9rZXksCisJCQkJCQkJCSAgICZzbGVhZmJ1ZiwgQlRfUkVB RCwgTlVMTCk7CiAJCQkJLyogd29uJ3QgbmVlZCBhIHNlY29uZCBsb2NrIG9yIHBpbiBvbiBs ZWFmYnVmICovCiAJCQkJX2J0X3JlbGJ1ZihyZWwsIHNsZWFmYnVmKTsKIApAQCAtMjAwMiw3 ICsyMDA2LDcgQEAgX2J0X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1Ziwg QlRWYWNTdGF0ZSAqdnN0YXRlKQogCQkJICogbGVhZmJ1ZiBwYWdlIGhhbGYtZGVhZC4KIAkJ CSAqLwogCQkJQXNzZXJ0KFBfSVNMRUFGKG9wYXF1ZSkgJiYgIVBfSUdOT1JFKG9wYXF1ZSkp OwotCQkJaWYgKCFfYnRfbWFya19wYWdlX2hhbGZkZWFkKHJlbCwgbGVhZmJ1Ziwgc3RhY2sp KQorCQkJaWYgKCFfYnRfbWFya19wYWdlX2hhbGZkZWFkKHJlbCwgdnN0YXRlLT5pbmZvLT5o ZWFwcmVsLCBsZWFmYnVmLCBzdGFjaykpCiAJCQl7CiAJCQkJX2J0X3JlbGJ1ZihyZWwsIGxl YWZidWYpOwogCQkJCXJldHVybjsKQEAgLTIwNjUsNyArMjA2OSw3IEBAIF9idF9wYWdlZGVs KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUVmFjU3RhdGUgKnZzdGF0ZSkKIAkJ aWYgKCFyaWdodHNpYl9lbXB0eSkKIAkJCWJyZWFrOwogCi0JCWxlYWZidWYgPSBfYnRfZ2V0 YnVmKHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKKwkJbGVhZmJ1ZiA9IF9idF9nZXRidWYo cmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIHJpZ2h0c2liLCBCVF9XUklURSk7CiAJfQog fQogCkBAIC0yMDg0LDcgKzIwODgsOCBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2c3RhdGUpCiAgKiBzdWNjZXNzZnVsbHkuCiAg Ki8KIHN0YXRpYyBib29sCi1fYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3RhY2spCitfYnRfbWFya19wYWdlX2hhbGZkZWFk KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGxlYWZidWYsCisJCQkJ CSAgIEJUU3RhY2sgc3RhY2spCiB7CiAJQmxvY2tOdW1iZXIgbGVhZmJsa25vOwogCUJsb2Nr TnVtYmVyIGxlYWZyaWdodHNpYjsKQEAgLTIxMTksNyArMjEyNCw3IEBAIF9idF9tYXJrX3Bh Z2VfaGFsZmRlYWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRTdGFjayBzdGFj aykKIAkgKiBkZWxldGUgdGhlIGRvd25saW5rLiAgSXQgd291bGQgZmFpbCB0aGUgInJpZ2h0 IHNpYmxpbmcgb2YgdGFyZ2V0IHBhZ2UKIAkgKiBpcyBhbHNvIHRoZSBuZXh0IGNoaWxkIGlu IHBhcmVudCBwYWdlIiBjcm9zcy1jaGVjayBiZWxvdy4KIAkgKi8KLQlpZiAoX2J0X3JpZ2h0 c2liX2hhbGZkZWFkZmxhZyhyZWwsIGxlYWZyaWdodHNpYikpCisJaWYgKF9idF9yaWdodHNp Yl9oYWxmZGVhZGZsYWcocmVsLCBoZWFwcmVsLCBsZWFmcmlnaHRzaWIpKQogCXsKIAkJZWxv ZyhERUJVRzEsICJjb3VsZCBub3QgZGVsZXRlIHBhZ2UgJXUgYmVjYXVzZSBpdHMgcmlnaHQg c2libGluZyAldSBpcyBoYWxmLWRlYWQiLAogCQkJIGxlYWZibGtubywgbGVhZnJpZ2h0c2li KTsKQEAgLTIxNDMsNyArMjE0OCw3IEBAIF9idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRp b24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRTdGFjayBzdGFjaykKIAkgKi8KIAl0b3BwYXJl bnQgPSBsZWFmYmxrbm87CiAJdG9wcGFyZW50cmlnaHRzaWIgPSBsZWFmcmlnaHRzaWI7Ci0J aWYgKCFfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChyZWwsIGxlYWZibGtubywgc3RhY2ssCisJ aWYgKCFfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChyZWwsIGhlYXByZWwsIGxlYWZibGtubywg c3RhY2ssCiAJCQkJCQkJCSAmc3VidHJlZXBhcmVudCwgJnBvZmZzZXQsCiAJCQkJCQkJCSAm dG9wcGFyZW50LCAmdG9wcGFyZW50cmlnaHRzaWIpKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0y MzYzLDcgKzIzNjgsNyBAQCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogCQlBc3NlcnQodGFy Z2V0ICE9IGxlYWZibGtubyk7CiAKIAkJLyogRmV0Y2ggdGhlIGJsb2NrIG51bWJlciBvZiB0 aGUgdGFyZ2V0J3MgbGVmdCBzaWJsaW5nICovCi0JCWJ1ZiA9IF9idF9nZXRidWYocmVsLCB0 YXJnZXQsIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRlLT5pbmZv LT5oZWFwcmVsLCB0YXJnZXQsIEJUX1JFQUQpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShi dWYpOwogCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJCWxlZnRzaWIgPSBv cGFxdWUtPmJ0cG9fcHJldjsKQEAgLTIzOTAsNyArMjM5NSw3IEBAIF9idF91bmxpbmtfaGFs ZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051bWJlciBz Y2FuYmxrbm8sCiAJCV9idF9sb2NrYnVmKHJlbCwgbGVhZmJ1ZiwgQlRfV1JJVEUpOwogCWlm IChsZWZ0c2liICE9IFBfTk9ORSkKIAl7Ci0JCWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVm dHNpYiwgQlRfV1JJVEUpOworCQlsYnVmID0gX2J0X2dldGJ1ZihyZWwsIHZzdGF0ZS0+aW5m by0+aGVhcHJlbCwgbGVmdHNpYiwgQlRfV1JJVEUpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShsYnVmKTsKIAkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCQl3aGlsZSAo UF9JU0RFTEVURUQob3BhcXVlKSB8fCBvcGFxdWUtPmJ0cG9fbmV4dCAhPSB0YXJnZXQpCkBA IC0yNDQwLDcgKzI0NDUsNyBAQCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24g cmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogCQkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIAogCQkJLyogc3RlcCByaWdodCBvbmUgcGFnZSAqLwotCQkJ bGJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWZ0c2liLCBCVF9XUklURSk7CisJCQlsYnVmID0g X2J0X2dldGJ1ZihyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwgbGVmdHNpYiwgQlRfV1JJ VEUpOwogCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UobGJ1Zik7CiAJCQlvcGFxdWUgPSBCVFBh Z2VHZXRPcGFxdWUocGFnZSk7CiAJCX0KQEAgLTI1MDQsNyArMjUwOSw3IEBAIF9idF91bmxp bmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051 bWJlciBzY2FuYmxrbm8sCiAJICogQW5kIG5leHQgd3JpdGUtbG9jayB0aGUgKGN1cnJlbnQp IHJpZ2h0IHNpYmxpbmcuCiAJICovCiAJcmlnaHRzaWIgPSBvcGFxdWUtPmJ0cG9fbmV4dDsK LQlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIHJpZ2h0c2liLCBCVF9XUklURSk7CisJcmJ1ZiA9 IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIHJpZ2h0c2liLCBCVF9X UklURSk7CiAJcGFnZSA9IEJ1ZmZlckdldFBhZ2UocmJ1Zik7CiAJb3BhcXVlID0gQlRQYWdl R2V0T3BhcXVlKHBhZ2UpOwogCWlmIChvcGFxdWUtPmJ0cG9fcHJldiAhPSB0YXJnZXQpCkBA IC0yNTMzLDcgKzI1MzgsOCBAQCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24g cmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogCQlpZiAoUF9S SUdIVE1PU1Qob3BhcXVlKSkKIAkJewogCQkJLyogcmlnaHRzaWIgd2lsbCBiZSB0aGUgb25s eSBvbmUgbGVmdCBvbiB0aGUgbGV2ZWwgKi8KLQkJCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJl bCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKKwkJCW1ldGFidWYgPSBfYnRfZ2V0YnVm KHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwKKwkJCQkJCQkJ IEJUX1dSSVRFKTsKIAkJCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJCQlt ZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKIApAQCAtMjc3Myw5ICsyNzc5LDEwIEBA IF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAgKiBwYXJlbnQgYmxvY2sgaW4gdGhlIGxlYWZi dWYgcGFnZSB1c2luZyBCVHJlZVR1cGxlU2V0VG9wUGFyZW50KCkpLgogICovCiBzdGF0aWMg Ym9vbAotX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBjaGlsZCwgQlRTdGFjayBzdGFjaywKLQkJCQkJCUJ1ZmZlciAqc3VidHJlZXBhcmVudCwg T2Zmc2V0TnVtYmVyICpwb2Zmc2V0LAotCQkJCQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVudCwg QmxvY2tOdW1iZXIgKnRvcHBhcmVudHJpZ2h0c2liKQorX2J0X2xvY2tfc3VidHJlZV9wYXJl bnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJlciBjaGlsZCwK KwkJCQkJCUJUU3RhY2sgc3RhY2ssIEJ1ZmZlciAqc3VidHJlZXBhcmVudCwKKwkJCQkJCU9m ZnNldE51bWJlciAqcG9mZnNldCwgQmxvY2tOdW1iZXIgKnRvcHBhcmVudCwKKwkJCQkJCUJs b2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYikKIHsKIAlCbG9ja051bWJlciBwYXJlbnQs CiAJCQkJbGVmdHNpYnBhcmVudDsKQEAgLTI3ODksNyArMjc5Niw3IEBAIF9idF9sb2NrX3N1 YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgY2hpbGQsIEJUU3RhY2sg c3RhY2ssCiAJICogTG9jYXRlIHRoZSBwaXZvdCB0dXBsZSB3aG9zZSBkb3dubGluayBwb2lu dHMgdG8gImNoaWxkIi4gIFdyaXRlIGxvY2sKIAkgKiB0aGUgcGFyZW50IHBhZ2UgaXRzZWxm LgogCSAqLwotCXBidWYgPSBfYnRfZ2V0c3RhY2tidWYocmVsLCBzdGFjaywgY2hpbGQpOwor CXBidWYgPSBfYnRfZ2V0c3RhY2tidWYocmVsLCBoZWFwcmVsLCBzdGFjaywgY2hpbGQpOwog CWlmIChwYnVmID09IEludmFsaWRCdWZmZXIpCiAJewogCQkvKgpAQCAtMjg4OSwxMSArMjg5 NiwxMSBAQCBfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGNoaWxkLCBCVFN0YWNrIHN0YWNrLAogCSAqCiAJICogTm90ZTogV2UgZGVsaWJlcmF0 ZWx5IGF2b2lkIGNvbXBsZXRpbmcgaW5jb21wbGV0ZSBzcGxpdHMgaGVyZS4KIAkgKi8KLQlp ZiAoX2J0X2xlZnRzaWJfc3BsaXRmbGFnKHJlbCwgbGVmdHNpYnBhcmVudCwgcGFyZW50KSkK KwlpZiAoX2J0X2xlZnRzaWJfc3BsaXRmbGFnKHJlbCwgaGVhcHJlbCwgbGVmdHNpYnBhcmVu dCwgcGFyZW50KSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogUmVjdXJzZSB0byBleGFtaW5l IGNoaWxkIHBhZ2UncyBncmFuZHBhcmVudCBwYWdlICovCi0JcmV0dXJuIF9idF9sb2NrX3N1 YnRyZWVfcGFyZW50KHJlbCwgcGFyZW50LCBzdGFjay0+YnRzX3BhcmVudCwKKwlyZXR1cm4g X2J0X2xvY2tfc3VidHJlZV9wYXJlbnQocmVsLCBoZWFwcmVsLCBwYXJlbnQsIHN0YWNrLT5i dHNfcGFyZW50LAogCQkJCQkJCQkgICBzdWJ0cmVlcGFyZW50LCBwb2Zmc2V0LAogCQkJCQkJ CQkgICB0b3BwYXJlbnQsIHRvcHBhcmVudHJpZ2h0c2liKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHJlZS5jCmluZGV4IDNmN2I1NDFlOWQuLmEyMTM0MDdmZWUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwpAQCAtODM0LDcgKzgzNCw3IEBAIGJ0dmFjdXVt Y2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMpCiAJaWYgKHN0YXRzID09IE5VTEwpCiAJewogCQkvKiBDaGVjayBpZiBWQUNVVU0g b3BlcmF0aW9uIGNhbiBlbnRpcmVseSBhdm9pZCBidHZhY3V1bXNjYW4oKSBjYWxsICovCi0J CWlmICghX2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKGluZm8tPmluZGV4KSkKKwkJaWYgKCFf YnRfdmFjdXVtX25lZWRzX2NsZWFudXAoaW5mby0+aW5kZXgsIGluZm8tPmhlYXByZWwpKQog CQkJcmV0dXJuIE5VTEw7CiAKIAkJLyoKQEAgLTg3MCw3ICs4NzAsNyBAQCBidHZhY3V1bWNs ZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 YXRzKQogCSAqLwogCUFzc2VydChzdGF0cy0+cGFnZXNfZGVsZXRlZCA+PSBzdGF0cy0+cGFn ZXNfZnJlZSk7CiAJbnVtX2RlbHBhZ2VzID0gc3RhdHMtPnBhZ2VzX2RlbGV0ZWQgLSBzdGF0 cy0+cGFnZXNfZnJlZTsKLQlfYnRfc2V0X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgbnVt X2RlbHBhZ2VzKTsKKwlfYnRfc2V0X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgaW5mby0+ aGVhcHJlbCwgbnVtX2RlbHBhZ2VzKTsKIAogCS8qCiAJICogSXQncyBxdWl0ZSBwb3NzaWJs ZSBmb3IgdXMgdG8gYmUgZm9vbGVkIGJ5IGNvbmN1cnJlbnQgcGFnZSBzcGxpdHMgaW50bwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMKaW5kZXggYzQzYzFhMjgzMC4u NWM3MjhlMzUzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz ZWFyY2guYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCkBA IC00Miw3ICs0Miw4IEBAIHN0YXRpYyBib29sIF9idF9zdGVwcGFnZShJbmRleFNjYW5EZXNj IHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKTsKIHN0YXRpYyBib29sIF9idF9yZWFkbmV4dHBh Z2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywgU2NhbkRpcmVjdGlv biBkaXIpOwogc3RhdGljIGJvb2wgX2J0X3BhcmFsbGVsX3JlYWRwYWdlKEluZGV4U2NhbkRl c2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJCQkJCSAgU2NhbkRpcmVjdGlvbiBk aXIpOwotc3RhdGljIEJ1ZmZlciBfYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwgU25hcHNob3Qgc25hcHNob3QpOworc3RhdGljIEJ1ZmZlciBfYnRfd2Fsa19sZWZ0 KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQlT bmFwc2hvdCBzbmFwc2hvdCk7CiBzdGF0aWMgYm9vbCBfYnRfZW5kcG9pbnQoSW5kZXhTY2Fu RGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcik7CiBzdGF0aWMgaW5saW5lIHZvaWQgX2J0 X2luaXRpYWxpemVfbW9yZV9kYXRhKEJUU2Nhbk9wYXF1ZSBzbywgU2NhbkRpcmVjdGlvbiBk aXIpOwogCkBAIC05MywxNCArOTQsMTQgQEAgX2J0X2Ryb3BfbG9ja19hbmRfbWF5YmVfcGlu KEluZGV4U2NhbkRlc2Mgc2NhbiwgQlRTY2FuUG9zIHNwKQogICogZHVyaW5nIHRoZSBzZWFy Y2ggd2lsbCBiZSBmaW5pc2hlZC4KICAqLwogQlRTdGFjawotX2J0X3NlYXJjaChSZWxhdGlv biByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywKLQkJ ICAgU25hcHNob3Qgc25hcHNob3QpCitfYnRfc2VhcmNoKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLAorCQkgICBpbnQg YWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlCVFN0YWNrCQlzdGFja19pbiA9IE5V TEw7CiAJaW50CQkJcGFnZV9hY2Nlc3MgPSBCVF9SRUFEOwogCiAJLyogR2V0IHRoZSByb290 IHBhZ2UgdG8gc3RhcnQgd2l0aCAqLwotCSpidWZQID0gX2J0X2dldHJvb3QocmVsLCBhY2Nl c3MpOworCSpidWZQID0gX2J0X2dldHJvb3QocmVsLCBoZWFwcmVsLCBhY2Nlc3MpOwogCiAJ LyogSWYgaW5kZXggaXMgZW1wdHkgYW5kIGFjY2VzcyA9IEJUX1JFQUQsIG5vIHJvb3QgcGFn ZSBpcyBjcmVhdGVkLiAqLwogCWlmICghQnVmZmVySXNWYWxpZCgqYnVmUCkpCkBAIC0xMjks OCArMTMwLDggQEAgX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXks IEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywKIAkJICogYWxzbyB0YWtlbiBjYXJlIG9mIGlu IF9idF9nZXRzdGFja2J1ZikuICBCdXQgdGhpcyBpcyBhIGdvb2QKIAkJICogb3Bwb3J0dW5p dHkgdG8gZmluaXNoIHNwbGl0cyBvZiBpbnRlcm5hbCBwYWdlcyB0b28uCiAJCSAqLwotCQkq YnVmUCA9IF9idF9tb3ZlcmlnaHQocmVsLCBrZXksICpidWZQLCAoYWNjZXNzID09IEJUX1dS SVRFKSwgc3RhY2tfaW4sCi0JCQkJCQkJICBwYWdlX2FjY2Vzcywgc25hcHNob3QpOworCQkq YnVmUCA9IF9idF9tb3ZlcmlnaHQocmVsLCBoZWFwcmVsLCBrZXksICpidWZQLCAoYWNjZXNz ID09IEJUX1dSSVRFKSwKKwkJCQkJCQkgIHN0YWNrX2luLCBwYWdlX2FjY2Vzcywgc25hcHNo b3QpOwogCiAJCS8qIGlmIHRoaXMgaXMgYSBsZWFmIHBhZ2UsIHdlJ3JlIGRvbmUgKi8KIAkJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoKmJ1ZlApOwpAQCAtMTkwLDcgKzE5MSw3IEBAIF9idF9z ZWFyY2goUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsIGlu dCBhY2Nlc3MsCiAJCSAqIGJ1dCBiZWZvcmUgd2UgYWNxdWlyZWQgYSB3cml0ZSBsb2NrLiAg SWYgaXQgaGFzLCB3ZSBtYXkgbmVlZCB0bwogCQkgKiBtb3ZlIHJpZ2h0IHRvIGl0cyBuZXcg c2libGluZy4gIERvIHRoYXQuCiAJCSAqLwotCQkqYnVmUCA9IF9idF9tb3ZlcmlnaHQocmVs LCBrZXksICpidWZQLCB0cnVlLCBzdGFja19pbiwgQlRfV1JJVEUsCisJCSpidWZQID0gX2J0 X21vdmVyaWdodChyZWwsIGhlYXByZWwsIGtleSwgKmJ1ZlAsIHRydWUsIHN0YWNrX2luLCBC VF9XUklURSwKIAkJCQkJCQkgIHNuYXBzaG90KTsKIAl9CiAKQEAgLTIzNCw2ICsyMzUsNyBA QCBfYnRfc2VhcmNoKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpi dWZQLCBpbnQgYWNjZXNzLAogICovCiBCdWZmZXIKIF9idF9tb3ZlcmlnaHQoUmVsYXRpb24g cmVsLAorCQkJICBSZWxhdGlvbiBoZWFwcmVsLAogCQkJICBCVFNjYW5JbnNlcnQga2V5LAog CQkJICBCdWZmZXIgYnVmLAogCQkJICBib29sIGZvcnVwZGF0ZSwKQEAgLTI4OCwxMiArMjkw LDEyIEBAIF9idF9tb3ZlcmlnaHQoUmVsYXRpb24gcmVsLAogCQkJfQogCiAJCQlpZiAoUF9J TkNPTVBMRVRFX1NQTElUKG9wYXF1ZSkpCi0JCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGJ1 Ziwgc3RhY2spOworCQkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBoZWFwcmVsLCBidWYsIHN0 YWNrKTsKIAkJCWVsc2UKIAkJCQlfYnRfcmVsYnVmKHJlbCwgYnVmKTsKIAogCQkJLyogcmUt YWNxdWlyZSB0aGUgbG9jayBpbiB0aGUgcmlnaHQgbW9kZSwgYW5kIHJlLWNoZWNrICovCi0J CQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIGFjY2Vzcyk7CisJCQlidWYgPSBfYnRf Z2V0YnVmKHJlbCwgaGVhcHJlbCwgYmxrbm8sIGFjY2Vzcyk7CiAJCQljb250aW51ZTsKIAkJ fQogCkBAIC04NjAsNiArODYyLDcgQEAgYm9vbAogX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mg c2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiB7CiAJUmVsYXRpb24JcmVsID0gc2Nhbi0+aW5k ZXhSZWxhdGlvbjsKKwlSZWxhdGlvbiAJaGVhcHJlbCA9IHNjYW4tPmhlYXBSZWxhdGlvbjsK IAlCVFNjYW5PcGFxdWUgc28gPSAoQlRTY2FuT3BhcXVlKSBzY2FuLT5vcGFxdWU7CiAJQnVm ZmVyCQlidWY7CiAJQlRTdGFjawkJc3RhY2s7CkBAIC0xMzUyLDcgKzEzNTUsNyBAQCBfYnRf Zmlyc3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAl9CiAKIAkv KiBJbml0aWFsaXplIHJlbWFpbmluZyBpbnNlcnRpb24gc2NhbiBrZXkgZmllbGRzICovCi0J X2J0X21ldGF2ZXJzaW9uKHJlbCwgJmluc2tleS5oZWFwa2V5c3BhY2UsICZpbnNrZXkuYWxs ZXF1YWxpbWFnZSk7CisJX2J0X21ldGF2ZXJzaW9uKHJlbCwgaGVhcHJlbCwgJmluc2tleS5o ZWFwa2V5c3BhY2UsICZpbnNrZXkuYWxsZXF1YWxpbWFnZSk7CiAJaW5za2V5LmFueW51bGxr ZXlzID0gZmFsc2U7IC8qIHVudXNlZCAqLwogCWluc2tleS5uZXh0a2V5ID0gbmV4dGtleTsK IAlpbnNrZXkucGl2b3RzZWFyY2ggPSBmYWxzZTsKQEAgLTEzNjMsNyArMTM2Niw3IEBAIF9i dF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCSAqIFVz ZSB0aGUgbWFudWZhY3R1cmVkIGluc2VydGlvbiBzY2FuIGtleSB0byBkZXNjZW5kIHRoZSB0 cmVlIGFuZAogCSAqIHBvc2l0aW9uIG91cnNlbHZlcyBvbiB0aGUgdGFyZ2V0IGxlYWYgcGFn ZS4KIAkgKi8KLQlzdGFjayA9IF9idF9zZWFyY2gocmVsLCAmaW5za2V5LCAmYnVmLCBCVF9S RUFELCBzY2FuLT54c19zbmFwc2hvdCk7CisJc3RhY2sgPSBfYnRfc2VhcmNoKHJlbCwgaGVh cHJlbCwgJmluc2tleSwgJmJ1ZiwgQlRfUkVBRCwgc2Nhbi0+eHNfc25hcHNob3QpOwogCiAJ LyogZG9uJ3QgbmVlZCB0byBrZWVwIHRoZSBzdGFjayBhcm91bmQuLi4gKi8KIAlfYnRfZnJl ZXN0YWNrKHN0YWNrKTsKQEAgLTIwMDQsNyArMjAwNyw3IEBAIF9idF9yZWFkbmV4dHBhZ2Uo SW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywgU2NhbkRpcmVjdGlvbiBk aXIpCiAJCQkvKiBjaGVjayBmb3IgaW50ZXJydXB0cyB3aGlsZSB3ZSdyZSBub3QgaG9sZGlu ZyBhbnkgYnVmZmVyIGxvY2sgKi8KIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCQkv KiBzdGVwIHJpZ2h0IG9uZSBwYWdlICovCi0JCQlzby0+Y3VyclBvcy5idWYgPSBfYnRfZ2V0 YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQpOworCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dl dGJ1ZihyZWwsIHNjYW4tPmhlYXBSZWxhdGlvbiwgYmxrbm8sIEJUX1JFQUQpOwogCQkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2Uoc28tPmN1cnJQb3MuYnVmKTsKIAkJCVRlc3RGb3JPbGRTbmFw c2hvdChzY2FuLT54c19zbmFwc2hvdCwgcmVsLCBwYWdlKTsKIAkJCW9wYXF1ZSA9IEJUUGFn ZUdldE9wYXF1ZShwYWdlKTsKQEAgLTIwNzgsNyArMjA4MSw4IEBAIF9idF9yZWFkbmV4dHBh Z2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywgU2NhbkRpcmVjdGlv biBkaXIpCiAJCWlmIChCVFNjYW5Qb3NJc1Bpbm5lZChzby0+Y3VyclBvcykpCiAJCQlfYnRf bG9ja2J1ZihyZWwsIHNvLT5jdXJyUG9zLmJ1ZiwgQlRfUkVBRCk7CiAJCWVsc2UKLQkJCXNv LT5jdXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBzby0+Y3VyclBvcy5jdXJyUGFnZSwg QlRfUkVBRCk7CisJCQlzby0+Y3VyclBvcy5idWYgPSBfYnRfZ2V0YnVmKHJlbCwgc2Nhbi0+ aGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSBzby0+Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVB RCk7CiAKIAkJZm9yICg7OykKIAkJewpAQCAtMjA5Miw4ICsyMDk2LDggQEAgX2J0X3JlYWRu ZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGly ZWN0aW9uIGRpcikKIAkJCX0KIAogCQkJLyogU3RlcCB0byBuZXh0IHBoeXNpY2FsIHBhZ2Ug Ki8KLQkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF93YWxrX2xlZnQocmVsLCBzby0+Y3VyclBv cy5idWYsCi0JCQkJCQkJCQkJCXNjYW4tPnhzX3NuYXBzaG90KTsKKwkJCXNvLT5jdXJyUG9z LmJ1ZiA9IF9idF93YWxrX2xlZnQocmVsLCBzY2FuLT5oZWFwUmVsYXRpb24sCisJCQkJCQkJ CQkJCXNvLT5jdXJyUG9zLmJ1Ziwgc2Nhbi0+eHNfc25hcHNob3QpOwogCiAJCQkvKiBpZiB3 ZSdyZSBwaHlzaWNhbGx5IGF0IGVuZCBvZiBpbmRleCwgcmV0dXJuIGZhaWx1cmUgKi8KIAkJ CWlmIChzby0+Y3VyclBvcy5idWYgPT0gSW52YWxpZEJ1ZmZlcikKQEAgLTIxNDAsNyArMjE0 NCw4IEBAIF9idF9yZWFkbmV4dHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJl ciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpCiAJCQkJCUJUU2NhblBvc0ludmFsaWRhdGUo c28tPmN1cnJQb3MpOwogCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJfQotCQkJCXNvLT5jdXJy UG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgQlRfUkVBRCk7CisJCQkJc28tPmN1 cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIHNjYW4tPmhlYXBSZWxhdGlvbiwgYmxrbm8s CisJCQkJCQkJCQkJCSBCVF9SRUFEKTsKIAkJCX0KIAkJfQogCX0KQEAgLTIxODUsNyArMjE5 MCw3IEBAIF9idF9wYXJhbGxlbF9yZWFkcGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2Nr TnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0aW9uIGRpcikKICAqIGFnYWluIGlmIGl0J3MgaW1w b3J0YW50LgogICovCiBzdGF0aWMgQnVmZmVyCi1fYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNob3QpCitfYnRfd2Fsa19sZWZ0KFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNo b3QpCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMjIxMyw3 ICsyMjE4LDcgQEAgX2J0X3dhbGtfbGVmdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFNu YXBzaG90IHNuYXBzaG90KQogCQlfYnRfcmVsYnVmKHJlbCwgYnVmKTsKIAkJLyogY2hlY2sg Zm9yIGludGVycnVwdHMgd2hpbGUgd2UncmUgbm90IGhvbGRpbmcgYW55IGJ1ZmZlciBsb2Nr ICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCWJ1ZiA9IF9idF9nZXRidWYocmVs LCBibGtubywgQlRfUkVBRCk7CisJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBi bGtubywgQlRfUkVBRCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCVRlc3RG b3JPbGRTbmFwc2hvdChzbmFwc2hvdCwgcmVsLCBwYWdlKTsKIAkJb3BhcXVlID0gQlRQYWdl R2V0T3BhcXVlKHBhZ2UpOwpAQCAtMjMwNCw3ICsyMzA5LDcgQEAgX2J0X3dhbGtfbGVmdChS ZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90KQogICogVGhlIHJl dHVybmVkIGJ1ZmZlciBpcyBwaW5uZWQgYW5kIHJlYWQtbG9ja2VkLgogICovCiBCdWZmZXIK LV9idF9nZXRfZW5kcG9pbnQoUmVsYXRpb24gcmVsLCB1aW50MzIgbGV2ZWwsIGJvb2wgcmln aHRtb3N0LAorX2J0X2dldF9lbmRwb2ludChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXBy ZWwsIHVpbnQzMiBsZXZlbCwgYm9vbCByaWdodG1vc3QsCiAJCQkJIFNuYXBzaG90IHNuYXBz aG90KQogewogCUJ1ZmZlcgkJYnVmOwpAQCAtMjMyMCw5ICsyMzI1LDkgQEAgX2J0X2dldF9l bmRwb2ludChSZWxhdGlvbiByZWwsIHVpbnQzMiBsZXZlbCwgYm9vbCByaWdodG1vc3QsCiAJ ICogc21hcnRlciBhYm91dCBpbnRlcm1lZGlhdGUgbGV2ZWxzLikKIAkgKi8KIAlpZiAobGV2 ZWwgPT0gMCkKLQkJYnVmID0gX2J0X2dldHJvb3QocmVsLCBCVF9SRUFEKTsKKwkJYnVmID0g X2J0X2dldHJvb3QocmVsLCBoZWFwcmVsLCBCVF9SRUFEKTsKIAllbHNlCi0JCWJ1ZiA9IF9i dF9nZXR0cnVlcm9vdChyZWwpOworCQlidWYgPSBfYnRfZ2V0dHJ1ZXJvb3QocmVsLCBoZWFw cmVsKTsKIAogCWlmICghQnVmZmVySXNWYWxpZChidWYpKQogCQlyZXR1cm4gSW52YWxpZEJ1 ZmZlcjsKQEAgLTI0MDMsNyArMjQwOCw4IEBAIF9idF9lbmRwb2ludChJbmRleFNjYW5EZXNj IHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCSAqIHZlcnNpb24gb2YgX2J0X3NlYXJjaCgp LiAgV2UgZG9uJ3QgbWFpbnRhaW4gYSBzdGFjayBzaW5jZSB3ZSBrbm93IHdlCiAJICogd29u J3QgbmVlZCBpdC4KIAkgKi8KLQlidWYgPSBfYnRfZ2V0X2VuZHBvaW50KHJlbCwgMCwgU2Nh bkRpcmVjdGlvbklzQmFja3dhcmQoZGlyKSwgc2Nhbi0+eHNfc25hcHNob3QpOworCWJ1ZiA9 IF9idF9nZXRfZW5kcG9pbnQocmVsLCBzY2FuLT5oZWFwUmVsYXRpb24sIDAsCisJCQkJCQkg ICBTY2FuRGlyZWN0aW9uSXNCYWNrd2FyZChkaXIpLCBzY2FuLT54c19zbmFwc2hvdCk7CiAK IAlpZiAoIUJ1ZmZlcklzVmFsaWQoYnVmKSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jCmluZGV4IDAyYjk2MDFiZWMuLjEyMDdhNDk2ODkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC01NjYsNyArNTY2LDcgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAogCXdzdGF0ZS5oZWFw ID0gYnRzcG9vbC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKLQl3 c3RhdGUuaW5za2V5ID0gX2J0X21rc2NhbmtleSh3c3RhdGUuaW5kZXgsIE5VTEwpOworCXdz dGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fua2V5KHdzdGF0ZS5pbmRleCwgYnRzcG9vbC0+aGVh cCwgTlVMTCk7CiAJLyogX2J0X21rc2NhbmtleSgpIHdvbid0IHNldCBhbGxlcXVhbGltYWdl IHdpdGhvdXQgbWV0YXBhZ2UgKi8KIAl3c3RhdGUuaW5za2V5LT5hbGxlcXVhbGltYWdlID0g X2J0X2FsbGVxdWFsaW1hZ2Uod3N0YXRlLmluZGV4LCB0cnVlKTsKIAl3c3RhdGUuYnR3c191 c2Vfd2FsID0gUmVsYXRpb25OZWVkc1dBTCh3c3RhdGUuaW5kZXgpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnR1dGlscy5jCmluZGV4IDdkYTQ5OWM0ZGQuLjA1YWJmMzYwMzIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKQEAgLTg3LDcgKzg3LDcgQEAg c3RhdGljIGludAlfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsCiAgKgkJZmllbGQgdGhlbXNlbHZlcy4KICAqLwogQlRTY2FuSW5zZXJ0Ci1fYnRf bWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKQorX2J0X21rc2Nhbmtl eShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEluZGV4VHVwbGUgaXR1cCkKIHsK IAlCVFNjYW5JbnNlcnQga2V5OwogCVNjYW5LZXkJCXNrZXk7CkBAIC0xMTIsNyArMTEyLDcg QEAgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCkKIAlrZXkg PSBwYWxsb2Mob2Zmc2V0b2YoQlRTY2FuSW5zZXJ0RGF0YSwgc2NhbmtleXMpICsKIAkJCQkg c2l6ZW9mKFNjYW5LZXlEYXRhKSAqIGluZG5rZXlhdHRzKTsKIAlpZiAoaXR1cCkKLQkJX2J0 X21ldGF2ZXJzaW9uKHJlbCwgJmtleS0+aGVhcGtleXNwYWNlLCAma2V5LT5hbGxlcXVhbGlt YWdlKTsKKwkJX2J0X21ldGF2ZXJzaW9uKHJlbCwgaGVhcHJlbCwgJmtleS0+aGVhcGtleXNw YWNlLCAma2V5LT5hbGxlcXVhbGltYWdlKTsKIAllbHNlCiAJewogCQkvKiBVdGlsaXR5IHN0 YXRlbWVudCBjYWxsZXJzIGNhbiBzZXQgdGhlc2UgZmllbGRzIHRoZW1zZWx2ZXMgKi8KQEAg LTE3NjEsNyArMTc2MSw4IEBAIF9idF9raWxsaXRlbXMoSW5kZXhTY2FuRGVzYyBzY2FuKQog CiAJCWRyb3BwZWRwaW4gPSB0cnVlOwogCQkvKiBBdHRlbXB0IHRvIHJlLXJlYWQgdGhlIGJ1 ZmZlciwgZ2V0dGluZyBwaW4gYW5kIGxvY2suICovCi0JCWJ1ZiA9IF9idF9nZXRidWYoc2Nh bi0+aW5kZXhSZWxhdGlvbiwgc28tPmN1cnJQb3MuY3VyclBhZ2UsIEJUX1JFQUQpOworCQli dWYgPSBfYnRfZ2V0YnVmKHNjYW4tPmluZGV4UmVsYXRpb24sIHNjYW4tPmhlYXBSZWxhdGlv biwKKwkJCQkJCSBzby0+Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVBRCk7CiAKIAkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAkJaWYgKEJ1ZmZlckdldExTTkF0b21pYyhidWYpID09 IHNvLT5jdXJyUG9zLmxzbikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5j CmluZGV4IDNhZGIxOGYyZDguLjJmNGE0YWFkMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd2YWN1dW0uYwpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZhY3V1bUxlYWZSb290KHNw Z0J1bGtEZWxldGVTdGF0ZSAqYmRzLCBSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlcikK ICAqIFVubGlrZSB0aGUgcm91dGluZXMgYWJvdmUsIHRoaXMgd29ya3Mgb24gYm90aCBsZWFm IGFuZCBpbm5lciBwYWdlcy4KICAqLwogc3RhdGljIHZvaWQKLXZhY3V1bVJlZGlyZWN0QW5k UGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIpCit2YWN1dW1SZWRp cmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGluZGV4LCBSZWxhdGlvbiBoZWFwcmVsLCBC dWZmZXIgYnVmZmVyKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7 CiAJU3BHaXN0UGFnZU9wYXF1ZSBvcGFxdWUgPSBTcEdpc3RQYWdlR2V0T3BhcXVlKHBhZ2Up OwpAQCAtNTAzLDYgKzUwMyw3IEBAIHZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVs YXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIpCiAJc3BneGxvZ1ZhY3V1bVJlZGlyZWN0IHhs cmVjOwogCUdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0OwogCisJeGxyZWMuaXNDYXRhbG9nUmVs ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAl4 bHJlYy5uVG9QbGFjZWhvbGRlciA9IDA7CiAJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6 b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIApAQCAtNjQzLDEzICs2NDQsMTMgQEAgc3Bn dmFjdXVtcGFnZShzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcywgQmxvY2tOdW1iZXIgYmxrbm8p CiAJCWVsc2UKIAkJewogCQkJdmFjdXVtTGVhZlBhZ2UoYmRzLCBpbmRleCwgYnVmZmVyLCBm YWxzZSk7Ci0JCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBidWZmZXIp OworCQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYmRzLT5pbmZvLT5o ZWFwcmVsLCBidWZmZXIpOwogCQl9CiAJfQogCWVsc2UKIAl7CiAJCS8qIGlubmVyIHBhZ2Ug Ki8KLQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYnVmZmVyKTsKKwkJ dmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYmRzLT5pbmZvLT5oZWFwcmVs LCBidWZmZXIpOwogCX0KIAogCS8qCkBAIC03MTksNyArNzIwLDcgQEAgc3BncHJvY2Vzc3Bl bmRpbmcoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMpCiAJCQkvKiBkZWFsIHdpdGggYW55IGRl bGV0YWJsZSB0dXBsZXMgKi8KIAkJCXZhY3V1bUxlYWZQYWdlKGJkcywgaW5kZXgsIGJ1ZmZl ciwgdHJ1ZSk7CiAJCQkvKiBtaWdodCBhcyB3ZWxsIGRvIHRoaXMgd2hpbGUgd2UgYXJlIGhl cmUgKi8KLQkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1ZmZlcik7 CisJCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBiZHMtPmluZm8tPmhl YXByZWwsIGJ1ZmZlcik7CiAKIAkJCVNwR2lzdFNldExhc3RVc2VkUGFnZShpbmRleCwgYnVm ZmVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDc3NzdlN2VjNzcuLjk4YTcxMmY0ZWMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTMzNjUsNiArMzM2NSw3IEBAIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpdmlu Zm8ubWVzc2FnZV9sZXZlbCA9IERFQlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0g aGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBO VUxMOworCWl2aW5mby5oZWFwcmVsID0gaGVhcFJlbGF0aW9uOwogCiAJLyoKIAkgKiBFbmNv ZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVj dGx5IHNvcnRpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCA2NTc1MDk1OGJiLi4w MTc4MTg2ZDM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC03MTIsNiArNzEyLDcg QEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAkJCWl2aW5mby5tZXNzYWdlX2xldmVsID0gZWxldmVsOwogCQkJaXZpbmZvLm51bV9o ZWFwX3R1cGxlcyA9IG9uZXJlbC0+cmRfcmVsLT5yZWx0dXBsZXM7CiAJCQlpdmluZm8uc3Ry YXRlZ3kgPSB2YWNfc3RyYXRlZ3k7CisJCQlpdmluZm8uaGVhcHJlbCA9IG9uZXJlbDsKIAog CQkJc3RhdHMgPSBpbmRleF92YWN1dW1fY2xlYW51cCgmaXZpbmZvLCBOVUxMKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggYmNkNDBjODBhMS4uMmNk YmQxODJiNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0x NDgsNiArMTQ4LDkgQEAgc3RydWN0IFBhcmFsbGVsVmFjdXVtU3RhdGUKIAkvKiBOVUxMIGZv ciB3b3JrZXIgcHJvY2Vzc2VzICovCiAJUGFyYWxsZWxDb250ZXh0ICpwY3h0OwogCisJLyog UGFyZW50IEhlYXAgUmVsYXRpb24gKi8KKwlSZWxhdGlvbgloZWFwcmVsOworCiAJLyogVGFy Z2V0IGluZGV4ZXMgKi8KIAlSZWxhdGlvbiAgICppbmRyZWxzOwogCWludAkJCW5pbmRleGVz OwpAQCAtMjY2LDYgKzI2OSw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlwdnMtPm5pbmRleGVzID0g bmluZGV4ZXM7CiAJcHZzLT53aWxsX3BhcmFsbGVsX3ZhY3V1bSA9IHdpbGxfcGFyYWxsZWxf dmFjdXVtOwogCXB2cy0+YnN0cmF0ZWd5ID0gYnN0cmF0ZWd5OworCXB2cy0+aGVhcHJlbCA9 IHJlbDsKIAogCUVudGVyUGFyYWxsZWxNb2RlKCk7CiAJcGN4dCA9IENyZWF0ZVBhcmFsbGVs Q29udGV4dCgicG9zdGdyZXMiLCAicGFyYWxsZWxfdmFjdXVtX21haW4iLApAQCAtODM4LDYg Kzg0Miw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZh Y3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKIAlpdmluZm8uZXN0aW1hdGVkX2Nv dW50ID0gcHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudDsKIAlpdmluZm8ubnVtX2hlYXBf dHVwbGVzID0gcHZzLT5zaGFyZWQtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBw dnMtPmJzdHJhdGVneTsKKwlpdmluZm8uaGVhcHJlbCA9IHB2cy0+aGVhcHJlbDsKIAogCS8q IFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMtPmluZG5hbWUg PSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpAQCAtMTAwNyw2 ICsxMDEyLDcgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCXB2cy5kZWFkX2l0ZW1zID0gZGVhZF9pdGVtczsKIAlwdnMucmVsbmFt ZXNwYWNlID0gZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkp OwogCXB2cy5yZWxuYW1lID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KTsKKwlwdnMuaGVhcHJlbCA9IHJlbDsKIAogCS8qIFRoZXNlIGZpZWxkcyB3aWxsIGJlIGZp bGxlZCBkdXJpbmcgaW5kZXggdmFjdXVtIG9yIGNsZWFudXAgKi8KIAlwdnMuaW5kbmFtZSA9 IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggZDU4YzRh MTA3OC4uZTM4MjRlZmU5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcGxhbmNhdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YwpAQCAtNDYyLDcgKzQ2Miw3IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZvICpy b290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJCQkJCSAqIEZv ciBidHJlZXMsIGdldCB0cmVlIGhlaWdodCB3aGlsZSB3ZSBoYXZlIHRoZSBpbmRleAogCQkJ CQkgKiBvcGVuCiAJCQkJCSAqLwotCQkJCQlpbmZvLT50cmVlX2hlaWdodCA9IF9idF9nZXRy b290aGVpZ2h0KGluZGV4UmVsYXRpb24pOworCQkJCQlpbmZvLT50cmVlX2hlaWdodCA9IF9i dF9nZXRyb290aGVpZ2h0KGluZGV4UmVsYXRpb24sIHJlbGF0aW9uKTsKIAkJCQl9CiAJCQkJ ZWxzZQogCQkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVz b3J0dmFyaWFudHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFu dHMuYwppbmRleCBlYjZjZmNmZDAwLi4wMTg4MTA2OTI1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCkBAIC0yMDcsNiArMjA3LDcgQEAgdHVw bGVzb3J0X2JlZ2luX2hlYXAoVHVwbGVEZXNjIHR1cERlc2MsCiBUdXBsZXNvcnRzdGF0ZSAq CiB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywKIAkJCQkJCVJl bGF0aW9uIGluZGV4UmVsLAorCQkJCQkJUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCWludCB3 b3JrTWVtLAogCQkJCQkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZSwgaW50IHNvcnRvcHQp CiB7CkBAIC0yNjAsNyArMjYxLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoVHVwbGVE ZXNjIHR1cERlc2MsCiAKIAlhcmctPnR1cERlc2MgPSB0dXBEZXNjOwkJLyogYXNzdW1lIHdl IG5lZWQgbm90IGNvcHkgdHVwRGVzYyAqLwogCi0JaW5kZXhTY2FuS2V5ID0gX2J0X21rc2Nh bmtleShpbmRleFJlbCwgTlVMTCk7CisJaW5kZXhTY2FuS2V5ID0gX2J0X21rc2NhbmtleShp bmRleFJlbCwgaGVhcHJlbCwgTlVMTCk7CiAKIAlpZiAoYXJnLT5pbmRleEluZm8tPmlpX0V4 cHJlc3Npb25zICE9IE5VTEwpCiAJewpAQCAtMzYxLDcgKzM2Miw3IEBAIHR1cGxlc29ydF9i ZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCWFyZy0+ZW5mb3JjZVVuaXF1 ZSA9IGVuZm9yY2VVbmlxdWU7CiAJYXJnLT51bmlxdWVOdWxsc05vdERpc3RpbmN0ID0gdW5p cXVlTnVsbHNOb3REaXN0aW5jdDsKIAotCWluZGV4U2NhbktleSA9IF9idF9ta3NjYW5rZXko aW5kZXhSZWwsIE5VTEwpOworCWluZGV4U2NhbktleSA9IF9idF9ta3NjYW5rZXkoaW5kZXhS ZWwsIGhlYXBSZWwsIE5VTEwpOwogCiAJLyogUHJlcGFyZSBTb3J0U3VwcG9ydCBkYXRhIGZv ciBlYWNoIGNvbHVtbiAqLwogCWJhc2UtPnNvcnRLZXlzID0gKFNvcnRTdXBwb3J0KSBwYWxs b2MwKGJhc2UtPm5LZXlzICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5h bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggODNkYmVlMGZlNi4uNzcw OGI4MmQ3ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKQEAgLTUwLDYgKzUwLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgSW5kZXhWYWN1dW1JbmZvCiAJaW50CQkJbWVzc2FnZV9sZXZlbDsJLyogZXJlcG9y dCBsZXZlbCBmb3IgcHJvZ3Jlc3MgbWVzc2FnZXMgKi8KIAlkb3VibGUJCW51bV9oZWFwX3R1 cGxlczsJLyogdHVwbGVzIHJlbWFpbmluZyBpbiBoZWFwICovCiAJQnVmZmVyQWNjZXNzU3Ry YXRlZ3kgc3RyYXRlZ3k7CS8qIGFjY2VzcyBzdHJhdGVneSBmb3IgcmVhZHMgKi8KKwlSZWxh dGlvbiAJaGVhcHJlbDsJCS8qIHRoZSBoZWFwIHJlbGF0aW9uIHRoZSBpbmRleCBiZWxvbmdz IHRvICovCiB9IEluZGV4VmFjdXVtSW5mbzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3By aXZhdGUuaAppbmRleCA4YWYzM2Q3YjQwLi5lZTI3NTY1MGJkIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3RfcHJpdmF0ZS5oCkBAIC00NDAsNyArNDQwLDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIg Z2lzdFhMb2dQYWdlRGVsZXRlKEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgRnVsbFRyYW5z YWN0aW9uSWQgeGlkLCBCdWZmZXIgcGFyZW50QnVmZmVyLAogCQkJCQkJCQkJIE9mZnNldE51 bWJlciBkb3dubGlua09mZnNldCk7CiAKLWV4dGVybiB2b2lkIGdpc3RYTG9nUGFnZVJldXNl KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCitleHRlcm4gdm9pZCBnaXN0WExv Z1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVy IGJsa25vLAogCQkJCQkJCSAgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKTsKIAogZXh0 ZXJuIFhMb2dSZWNQdHIgZ2lzdFhMb2dVcGRhdGUoQnVmZmVyIGJ1ZmZlciwKQEAgLTQ0OSw3 ICs0NDksOCBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0ZShCdWZmZXIgYnVm ZmVyLAogCQkJCQkJCQkgQnVmZmVyIGxlZnRjaGlsZGJ1Zik7CiAKIGV4dGVybiBYTG9nUmVj UHRyIGdpc3RYTG9nRGVsZXRlKEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJlciAqdG9kZWxl dGUsCi0JCQkJCQkJCSBpbnQgbnRvZGVsZXRlLCBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uKTsKKwkJCQkJCQkJIGludCBudG9kZWxldGUsIFRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCSBSZWxhdGlvbiBoZWFwcmVsKTsK IAogZXh0ZXJuIFhMb2dSZWNQdHIgZ2lzdFhMb2dTcGxpdChib29sIHBhZ2VfaXNfbGVhZiwK IAkJCQkJCQkJU3BsaXRlZFBhZ2VMYXlvdXQgKmRpc3QsCkBAIC00ODUsNyArNDg2LDcgQEAg ZXh0ZXJuIGJvb2wgZ2lzdHByb3BlcnR5KE9pZCBpbmRleF9vaWQsIGludCBhdHRubywKIGV4 dGVybiBib29sIGdpc3RmaXRwYWdlKEluZGV4VHVwbGUgKml0dmVjLCBpbnQgbGVuKTsKIGV4 dGVybiBib29sIGdpc3Rub3NwYWNlKFBhZ2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR2ZWMsIGlu dCBsZW4sIE9mZnNldE51bWJlciB0b2RlbGV0ZSwgU2l6ZSBmcmVlc3BhY2UpOwogZXh0ZXJu IHZvaWQgZ2lzdGNoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpOwotZXh0ZXJu IEJ1ZmZlciBnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpOworZXh0ZXJuIEJ1ZmZlciBnaXN0 TmV3QnVmZmVyKFJlbGF0aW9uIHIsIFJlbGF0aW9uIGhlYXByZWwpOwogZXh0ZXJuIGJvb2wg Z2lzdFBhZ2VSZWN5Y2xhYmxlKFBhZ2UgcGFnZSk7CiBleHRlcm4gdm9pZCBnaXN0ZmlsbGJ1 ZmZlcihQYWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dXAsIGludCBsZW4sCiAJCQkJCQkgICBP ZmZzZXROdW1iZXIgb2ZmKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKaW5kZXggMmNlOTM2NjI3 Ny4uOTNmYjlkNDM4YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9n LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKQEAgLTUxLDExICs1MSwx NCBAQCB0eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ0RlbGV0ZQogewogCVRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1i ZXIgb2YgZGVsZXRlZCBvZmZzZXRzICovCisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwkv KiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwKKwkJCQkJCQkJ ICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCi0JLyogVE9ERUxFVEUgT0ZGU0VUIE5VTUJF UiBBUlJBWSBGT0xMT1dTICovCisJLyogVE9ERUxFVEUgT0ZGU0VUIE5VTUJFUlMgKi8KKwlP ZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSBnaXN0eGxv Z0RlbGV0ZTsKIAotI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0RlbGV0ZQkob2Zmc2V0b2YoZ2lz dHhsb2dEZWxldGUsIG50b2RlbGV0ZSkgKyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6 ZU9mR2lzdHhsb2dEZWxldGUJb2Zmc2V0b2YoZ2lzdHhsb2dEZWxldGUsIG9mZnNldHMpCiAK IC8qCiAgKiBCYWNrdXAgQmxrIDA6IElmIHRoaXMgb3BlcmF0aW9uIGNvbXBsZXRlcyBhIHBh Z2Ugc3BsaXQsIGJ5IGluc2VydGluZyBhCkBAIC05OCw5ICsxMDEsMTEgQEAgdHlwZWRlZiBz dHJ1Y3QgZ2lzdHhsb2dQYWdlUmV1c2UKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwogCUJs b2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uOworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292 ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0 YW5kYnkgKi8KIH0gZ2lzdHhsb2dQYWdlUmV1c2U7CiAKLSNkZWZpbmUgU2l6ZU9mR2lzdHhs b2dQYWdlUmV1c2UJKG9mZnNldG9mKGdpc3R4bG9nUGFnZVJldXNlLCBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbikgKyBzaXplb2YoRnVsbFRyYW5zYWN0aW9uSWQpKQorI2RlZmluZSBTaXpl T2ZHaXN0eGxvZ1BhZ2VSZXVzZQkob2Zmc2V0b2YoZ2lzdHhsb2dQYWdlUmV1c2UsIGlzQ2F0 YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIGV4dGVybiB2b2lkIGdpc3RfcmVkbyhYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBnaXN0X2Rlc2MoU3RyaW5nSW5m byBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oYXNoX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cu aAppbmRleCA5ODk0YWI5YWZlLi42YzU1MzVmZTczIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaF94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxv Zy5oCkBAIC0yNTIsMTIgKzI1MiwxNCBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1 bV9vbmVfcGFnZQogewogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247 CiAJdWludDE2CQkJbnR1cGxlczsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7ICAgLyog dG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJCSAq IGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAotCS8qIFRBUkdFVCBPRkZTRVQgTlVNQkVSUyBG T0xMT1cgQVQgVEhFIEVORCAqLworCS8qIFRBUkdFVCBPRkZTRVQgTlVNQkVSUyAqLworCU9m ZnNldE51bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IHhsX2hhc2hf dmFjdXVtX29uZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlIFwK LQkob2Zmc2V0b2YoeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UsIG50dXBsZXMpICsgc2l6ZW9m KHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlIG9mZnNldG9mKHhs X2hhc2hfdmFjdXVtX29uZV9wYWdlLCBvZmZzZXRzKQogCiBleHRlcm4gdm9pZCBoYXNoX3Jl ZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIHZvaWQgaGFzaF9kZXNjKFN0 cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW1feGxvZy5oCmluZGV4IGEyYzY3ZDFjZDMuLjA4ZGI3ZTYyZGQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yNDUsMTAgKzI0NSwxMiBAQCB0eXBlZGVmIHN0cnVj dCB4bF9oZWFwX3BydW5lCiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpv bjsKIAl1aW50MTYJCW5yZWRpcmVjdGVkOwogCXVpbnQxNgkJbmRlYWQ7CisJYm9vbCAgICAg ICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5n IGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCS8qIE9GRlNF VCBOVU1CRVJTIGFyZSBpbiB0aGUgYmxvY2sgcmVmZXJlbmNlIDAgKi8KIH0geGxfaGVhcF9w cnVuZTsKIAotI2RlZmluZSBTaXplT2ZIZWFwUHJ1bmUgKG9mZnNldG9mKHhsX2hlYXBfcHJ1 bmUsIG5kZWFkKSArIHNpemVvZih1aW50MTYpKQorI2RlZmluZSBTaXplT2ZIZWFwUHJ1bmUg KG9mZnNldG9mKHhsX2hlYXBfcHJ1bmUsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkp CiAKIC8qCiAgKiBUaGUgdmFjdXVtIHBhZ2UgcmVjb3JkIGlzIHNpbWlsYXIgdG8gdGhlIHBy dW5lIHJlY29yZCwgYnV0IGNhbiBvbmx5IG1hcmsKQEAgLTM0NCwxMyArMzQ2LDE1IEBAIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3BhZ2UKIHsKIAlUcmFuc2FjdGlvbklkIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnBsYW5zOworCWJvb2wgICAgICAg IGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBs b2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAogCS8qCiAJICog SW4gcGF5bG9hZCBvZiBibGsgMCA6IEZSRUVaRSBQTEFOUyBhbmQgT0ZGU0VUIE5VTUJFUiBB UlJBWQogCSAqLwogfSB4bF9oZWFwX2ZyZWV6ZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhl YXBGcmVlemVQYWdlIChvZmZzZXRvZih4bF9oZWFwX2ZyZWV6ZV9wYWdlLCBucGxhbnMpICsg c2l6ZW9mKHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkhlYXBGcmVlemVQYWdlCShvZmZzZXRv Zih4bF9oZWFwX2ZyZWV6ZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQog CiAvKgogICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEg dmlzaWJpbGl0eSBtYXAgYml0CkBAIC00MDksNyArNDEzLDcgQEAgZXh0ZXJuIHZvaWQgaGVh cDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0 ZXJuIGNvbnN0IGNoYXIgKmhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZv aWQgaGVhcF94bG9nX2xvZ2ljYWxfcmV3cml0ZShYTG9nUmVhZGVyU3RhdGUgKnIpOwogCi1l eHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2Nh dG9yLCBCdWZmZXIgaGVhcF9idWZmZXIsCitleHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92 aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAogCQkJCQkJCQkgICBC dWZmZXIgdm1fYnVmZmVyLAogCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRy ZWUuaAppbmRleCA4ZjQ4OTYwZjlkLi42ZGVlMzA3MDQyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5o CkBAIC0xMTgyLDggKzExODIsMTAgQEAgZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3N3YXBfcG9z dGluZyhJbmRleFR1cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3Bvc3RpbmcsCiBleHRlcm4g Ym9vbCBfYnRfZG9pbnNlcnQoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXAsCiAJCQkJ CQkgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCBpbmRleFVuY2hhbmdlZCwK IAkJCQkJCSBSZWxhdGlvbiBoZWFwUmVsKTsKLWV4dGVybiB2b2lkIF9idF9maW5pc2hfc3Bs aXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjayk7Ci1leHRlcm4g QnVmZmVyIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJs b2NrTnVtYmVyIGNoaWxkKTsKK2V4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgbGJ1ZiwKKwkJCQkJCQkgQlRTdGFj ayBzdGFjayk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWws IFJlbGF0aW9uIGhlYXByZWwsIEJUU3RhY2sgc3RhY2ssCisJCQkJCQkJICBCbG9ja051bWJl ciBjaGlsZCk7CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbmJ0c3Bs aXRsb2MuYwpAQCAtMTE5NywxNiArMTE5OSwxOCBAQCBleHRlcm4gT2Zmc2V0TnVtYmVyIF9i dF9maW5kc3BsaXRsb2MoUmVsYXRpb24gcmVsLCBQYWdlIG9yaWdwYWdlLAogICovCiBleHRl cm4gdm9pZCBfYnRfaW5pdG1ldGFwYWdlKFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgcm9vdGJr bnVtLCB1aW50MzIgbGV2ZWwsCiAJCQkJCQkJIGJvb2wgYWxsZXF1YWxpbWFnZSk7Ci1leHRl cm4gYm9vbCBfYnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKTsKLWV4dGVy biB2b2lkIF9idF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg bnVtX2RlbHBhZ2VzKTsKK2V4dGVybiBib29sIF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIHZvaWQgX2J0X3NldF9j bGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCQkJCQkg QmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2VzKTsKIGV4dGVybiB2b2lkIF9idF91cGdyYWRlbWV0 YXBhZ2UoUGFnZSBwYWdlKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24g cmVsLCBpbnQgYWNjZXNzKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJlbGF0 aW9uIHJlbCk7Ci1leHRlcm4gaW50CV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCk7 Ci1leHRlcm4gdm9pZCBfYnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFw a2V5c3BhY2UsCitleHRlcm4gQnVmZmVyIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gaGVhcHJlbCwgaW50IGFjY2Vzcyk7CitleHRlcm4gQnVmZmVyIF9idF9nZXR0cnVl cm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIGludAlfYnRf Z2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJu IHZvaWQgX2J0X21ldGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwg Ym9vbCAqaGVhcGtleXNwYWNlLAogCQkJCQkJCWJvb2wgKmFsbGVxdWFsaW1hZ2UpOwogZXh0 ZXJuIHZvaWQgX2J0X2NoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpOwotZXh0 ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8s IGludCBhY2Nlc3MpOworZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwg UmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCisJCQkJCQkgaW50IGFjY2Vz cyk7CiBleHRlcm4gQnVmZmVyIF9idF9yZWxhbmRnZXRidWYoUmVsYXRpb24gcmVsLCBCdWZm ZXIgb2J1ZiwKIAkJCQkJCQkgICBCbG9ja051bWJlciBibGtubywgaW50IGFjY2Vzcyk7CiBl eHRlcm4gdm9pZCBfYnRfcmVsYnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7CkBAIC0x MjI5LDIxICsxMjMzLDIyIEBAIGV4dGVybiB2b2lkIF9idF9wZW5kaW5nZnNtX2ZpbmFsaXpl KFJlbGF0aW9uIHJlbCwgQlRWYWNTdGF0ZSAqdnN0YXRlKTsKIC8qCiAgKiBwcm90b3R5cGVz IGZvciBmdW5jdGlvbnMgaW4gbmJ0c2VhcmNoLmMKICAqLwotZXh0ZXJuIEJUU3RhY2sgX2J0 X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwK LQkJCQkJCSAgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOwotZXh0ZXJuIEJ1ZmZl ciBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVy IGJ1ZiwKLQkJCQkJCQlib29sIGZvcnVwZGF0ZSwgQlRTdGFjayBzdGFjaywgaW50IGFjY2Vz cywgU25hcHNob3Qgc25hcHNob3QpOworZXh0ZXJuIEJUU3RhY2sgX2J0X3NlYXJjaChSZWxh dGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBrZXksCisJCQkJCQkg IEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOworZXh0ZXJu IEJ1ZmZlciBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwg QlRTY2FuSW5zZXJ0IGtleSwKKwkJCQkJCQlCdWZmZXIgYnVmLCBib29sIGZvcnVwZGF0ZSwg QlRTdGFjayBzdGFjaywKKwkJCQkJCQlpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7 CiBleHRlcm4gT2Zmc2V0TnVtYmVyIF9idF9iaW5zcmNoX2luc2VydChSZWxhdGlvbiByZWws IEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOwogZXh0ZXJuIGludDMyIF9idF9jb21wYXJl KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgUGFnZSBwYWdlLCBPZmZzZXROdW1i ZXIgb2ZmbnVtKTsKIGV4dGVybiBib29sIF9idF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4s IFNjYW5EaXJlY3Rpb24gZGlyKTsKIGV4dGVybiBib29sIF9idF9uZXh0KEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0X2Vu ZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKLQkJ CQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRfZW5k cG9pbnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCB1aW50MzIgbGV2ZWwsCisJ CQkJCQkJICAgYm9vbCByaWdodG1vc3QsIFNuYXBzaG90IHNuYXBzaG90KTsKIAogLyoKICAq IHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnR1dGlscy5jCiAgKi8KLWV4dGVybiBC VFNjYW5JbnNlcnQgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1 cCk7CitleHRlcm4gQlRTY2FuSW5zZXJ0IF9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBoZWFwcmVsLCBJbmRleFR1cGxlIGl0dXApOwogZXh0ZXJuIHZvaWQgX2J0X2Zy ZWVzdGFjayhCVFN0YWNrIHN0YWNrKTsKIGV4dGVybiB2b2lkIF9idF9wcmVwcm9jZXNzX2Fy cmF5X2tleXMoSW5kZXhTY2FuRGVzYyBzY2FuKTsKIGV4dGVybiB2b2lkIF9idF9zdGFydF9h cnJheV9rZXlzKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9uYnR4bG9nLmgKaW5kZXggN2RkNjcyNTdmMi4uODIzYzcwMGRlZSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0eGxvZy5oCkBAIC0xODgsOSArMTg4LDExIEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0 cmVlX3JldXNlX3BhZ2UKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwogCUJsb2NrTnVtYmVy IGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwor CWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZs aWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8K IH0geGxfYnRyZWVfcmV1c2VfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZCdHJlZVJldXNlUGFn ZQkoc2l6ZW9mKHhsX2J0cmVlX3JldXNlX3BhZ2UpKQorI2RlZmluZSBTaXplT2ZCdHJlZVJl dXNlUGFnZQkob2Zmc2V0b2YoeGxfYnRyZWVfcmV1c2VfcGFnZSwgaXNDYXRhbG9nUmVsKSAr IHNpemVvZihib29sKSkKIAogLyoKICAqIHhsX2J0cmVlX3ZhY3V1bSBhbmQgeGxfYnRyZWVf ZGVsZXRlIHJlY29yZHMgZGVzY3JpYmUgZGVsZXRpb24gb2YgaW5kZXgKQEAgLTIzNSw2ICsy MzcsOCBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIAlUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbmRlbGV0ZWQ7CiAJdWludDE2 CQludXBkYXRlZDsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7CS8qIHRvIGhhbmRsZSBy ZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJCQkJCQkgKiBkZWNvZGluZyBv biBzdGFuZGJ5ICovCiAKIAkvKi0tLS0KIAkgKiBJbiBwYXlsb2FkIG9mIGJsayAwIDoKQEAg LTI0NSw3ICsyNDksNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIAkgKi8K IH0geGxfYnRyZWVfZGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCShvZmZz ZXRvZih4bF9idHJlZV9kZWxldGUsIG51cGRhdGVkKSArIHNpemVvZih1aW50MTYpKQorI2Rl ZmluZSBTaXplT2ZCdHJlZURlbGV0ZQkob2Zmc2V0b2YoeGxfYnRyZWVfZGVsZXRlLCBpc0Nh dGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogVGhlIG9mZnNldHMgdGhhdCBh cHBlYXIgaW4geGxfYnRyZWVfdXBkYXRlIG1ldGFkYXRhIGFyZSBvZmZzZXRzIGludG8gdGhl CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3NwZ3hsb2cuaAppbmRleCBiOWQ2NzUzNTMzLi43NTI2N2E0OTE0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9zcGd4bG9nLmgKQEAgLTI0MCw2ICsyNDAsOCBAQCB0eXBlZGVmIHN0cnVjdCBz cGd4bG9nVmFjdXVtUmVkaXJlY3QKIAl1aW50MTYJCW5Ub1BsYWNlaG9sZGVyOyAvKiBudW1i ZXIgb2YgcmVkaXJlY3RzIHRvIG1ha2UgcGxhY2Vob2xkZXJzICovCiAJT2Zmc2V0TnVtYmVy IGZpcnN0UGxhY2Vob2xkZXI7CS8qIGZpcnN0IHBsYWNlaG9sZGVyIHR1cGxlIHRvIHJlbW92 ZSAqLwogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CS8qIG5ld2Vz dCBYSUQgb2YgcmVtb3ZlZCByZWRpcmVjdHMgKi8KKwlib29sICAgICAgICBpc0NhdGFsb2dS ZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJ CQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKIAkvKiBvZmZzZXRzIG9mIHJlZGly ZWN0IHR1cGxlcyB0byBtYWtlIHBsYWNlaG9sZGVycyBmb2xsb3cgKi8KIAlPZmZzZXROdW1i ZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv dmlzaWJpbGl0eW1hcGRlZnMuaAppbmRleCA5MTY1Yjk0NTZiLi43MzA2YTFjM2VlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaApAQCAtMTcsOSArMTcsMTEg QEAKICNkZWZpbmUgQklUU19QRVJfSEVBUEJMT0NLIDIKIAogLyogRmxhZ3MgZm9yIGJpdCBt YXAgKi8KLSNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRQkweDAxCi0jZGVmaW5l IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCi0jZGVmaW5lIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCi0JCQkJ CQkJCQkJCSAqIGZsYWdzIGJpdHMgKi8KKyNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfVklT SUJMRQkJCQkJCQkJMHgwMQorI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4JCQkJ CQkJCTB4MDIKKyNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCQkJCQkJCQkweDAz CS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCisJCQkJCQkJCQkJCQkJCQkJCQkg KiBmbGFncyBiaXRzICovCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfSVNfQ0FUQUxPR19SRUwJ CQkJCQkJMHgwNAkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2lj YWwKKwkJCQkJCQkJCQkJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAogI2Vu ZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggNjdm OTk0Y2IzZS4uNTI4NDU0OTdjYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNp bmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2NhdGFs b2cuaCIKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0 LmggYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAppbmRleCAxMjU3OGU0MmJjLi4z OTVhYmZlNTk2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApAQCAtMzk5LDcgKzM5OSw5IEBA IGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2hlYXAoVHVwbGVEZXNj IHR1cERlc2MsCiAJCQkJCQkJCQkJCWludCB3b3JrTWVtLCBTb3J0Q29vcmRpbmF0ZSBjb29y ZGluYXRlLAogCQkJCQkJCQkJCQlpbnQgc29ydG9wdCk7CiBleHRlcm4gVHVwbGVzb3J0c3Rh dGUgKnR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKFR1cGxlRGVzYyB0dXBEZXNjLAotCQkJCQkJ CQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbCwgaW50IHdvcmtNZW0sCisJCQkJCQkJCQkJCSAg IFJlbGF0aW9uIGluZGV4UmVsLAorCQkJCQkJCQkJCQkgICBSZWxhdGlvbiBoZWFwcmVsLAor CQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwKIAkJCQkJCQkJCQkJICAgU29ydENvb3JkaW5h dGUgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJICAgaW50IHNvcnRvcHQpOwogZXh0ZXJuIFR1 cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVh cFJlbCwKLS0gCjIuMzQuMQoK --------------81CZJfcmj1oWXKlVi25CTUV4--