Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w1PMZ-000HCa-05 for pgsql-hackers@arkaria.postgresql.org; Sat, 14 Mar 2026 13:49:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w1PMY-001q3A-07 for pgsql-hackers@arkaria.postgresql.org; Sat, 14 Mar 2026 13:49:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w1PMX-001q32-1U for pgsql-hackers@lists.postgresql.org; Sat, 14 Mar 2026 13:49:06 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w1PMT-0000000084Y-3cBW for pgsql-hackers@lists.postgresql.org; Sat, 14 Mar 2026 13:49:05 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-6616cb8c80cso4770750a12.0 for ; Sat, 14 Mar 2026 06:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1773496141; x=1774100941; darn=lists.postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=JjFAHtmXEO7oV9J3aAVPlzZtYfsxw9u+wPSvRJG1J98=; b=qrjSN52TlwXEZjhdgwdOPjCXP1rn4GLjVsDNf8zYR41mCU5D8krVvMAssVE8t0y1Yx HI3BQuMfRwI8mWSx6xr59Ln8ieq2Ct30fXQ/hE9kzT6n7lISO54RYbKW6AYCUhN1Yp/V uzf/+bI1wXq7zxBuJPsabh4RRnYzFnfK0DPqkedRZ8KKvWClOiJmSIJpcbA+eQ2/xIC9 doEoZyVzMYhDVaIvp+Iz2g0nc56fQFAEWRxQh2QtnejysI2LmPCpyx1KwJSEaene0rf3 iuYvjVfn1/05eMFuvtK45jj73p/LeokhMkHI4mpE1U1lv9+b1HoWS7YjhMjIdKhAmlKB 1raQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773496141; x=1774100941; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=JjFAHtmXEO7oV9J3aAVPlzZtYfsxw9u+wPSvRJG1J98=; b=gTdCw83DLPr3k8ZULQPe1iwhsfF1cSSW2GhhY0LM9IG+XDnirf7YH/bVTX7jo8i507 PXiGVxLyD7Qfq+BXLEUcwqPBpplKPFboEV4uIlEDNcHKkQkkhtaDgOsfEbz6+6sYpkqf txkbLFCECPFt9RrSedsLocjw7gxav1IwSdBxQimDnyYT6TciZnICEEyuQTtk+wLy2US+ eH0GUv45JWhQIq0qjTYszfzx4xOOCcjD0UzTwMgc4v4UMltXEB3XPZPw+BADx2V3x3bD GgWbLAZltZDVjAowrArK4ENAqBIYUpJJoF9QK/s4V18Q70qIThSbtW84QXC8uI6TCRLG Jpdw== X-Forwarded-Encrypted: i=1; AJvYcCX4zR4R2UzE79ONpT70dUFDaAoWjDzxxl2f3lmK5yfIz7vrF1XNHvd/KI7SM40F72cC6blAh8RLbHIzj1Fc@lists.postgresql.org X-Gm-Message-State: AOJu0YxqCx6/6hNlDXzfcz7gyNBlpd119tdyE4NStm9WBT41FIWip6pC rq+D3jtWsstR2Ht6gB88bwk6Zlv9ZxS0bhWGjRvgC5fibB0GqhWiTR/fY9oQhcrRyg8= X-Gm-Gg: ATEYQzzSxKDKs16CGeJqwuc5vp4BMzIxKigOS9Qyly2uA/mR9rQqV37LRk+8XgksjTm WKpL9xMadOqei0z0iKlIsXivLRZ+LzNNg5yzFHZb6PJQaekhQ1eqCWgaKybtAIsDIs0IXzGXmNX rMC5IuBLZ1ssJPs1YT4D26JGz0FFz4GK/Azzh59wllpub+asUxlc2finmYaLtIlLhfz0O4S5DTA 2sYVSnqVyp9fm9OwuYvqXfTMg7uCJ+7MwO1GqEtv9z3QqHXIGN8xSb9Voy3/gNMEauYPkp6ehSh cPyO7A2VqQovrXbcYYdRBRnwlZf9GXla+0d97aHJNOhhQHO0zab9dbgoU0cSrOrLrWYe7UmpL3K HE0qEvdODDPbRkTFpO56Q+3J3B+RbKEpgMUCUkhY1TPV2x2KZFGUuahY/s+P1Vcy+DskJp3k+Fv HKtWXnweL/c8BKboWlp7MFlsqzc7Ngty14h6n2WhCHh7S28QMIDuMmcw1tY9c= X-Received: by 2002:a05:6402:518c:b0:663:9209:d98e with SMTP id 4fb4d7f45d1cf-663ba0e803bmr3937223a12.2.1773496140444; Sat, 14 Mar 2026 06:49:00 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6634fbb9bedsm2582454a12.3.2026.03.14.06.48.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 14 Mar 2026 06:48:59 -0700 (PDT) Content-Type: multipart/mixed; boundary=fa477b38488948ff15b3b48282d6687669f99a2f4e6f04695d67f6869b31 Mime-Version: 1.0 Date: Sat, 14 Mar 2026 14:48:58 +0100 Message-Id: Cc: "Bertrand Drouvot" , "Thomas Munro" , Subject: Re: Safer hash table initialization macro To: "Chao Li" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <2903820E-A053-4FF8-BEB7-DCECFBB6A21A@gmail.com> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --fa477b38488948ff15b3b48282d6687669f99a2f4e6f04695d67f6869b31 Content-Type: multipart/alternative; boundary=f4e8a309b1768058093ea2edd5280d134bb89c16a655f126cf826c8335f1 --f4e8a309b1768058093ea2edd5280d134bb89c16a655f126cf826c8335f1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Tue Jan 27, 2026 at 7:10 PM CET, Jelte Fennema-Nio wrote: > Good suggestion. Done. Newly attached version that fixes a rebase conclict. Including a few small additions: 1. Use foreach_hash in async.c (in recently introduced code from 282b1cde9ded) 2. Reference foreach_hash in code comments instead of hash_seq_search 3. Add a note about the reason for the double for loop in foreach_hash macro code comment (same comment as for foreach_internal in pg_list.h) --f4e8a309b1768058093ea2edd5280d134bb89c16a655f126cf826c8335f1-- --fa477b38488948ff15b3b48282d6687669f99a2f4e6f04695d67f6869b31 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v11-0001-Add-hash_make-macros.patch Content-Type: text/x-patch; charset=utf-8; name=v11-0001-Add-hash_make-macros.patch RnJvbSA2ZmM1ZTNkODQ4OTM3NDhmMzFlM2Y5NmU4NzI3MTEzN2ZlMjE5OGNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzU6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MSAxLzVdIEFkZCBoYXNoX21ha2UgbWFjcm9zCgpUaGlzIGFkZHMgYSBidW5jaCBvZiBoYXNoX21h a2UqIGFuZCBzaG1lbV9oYXNoX21ha2UqIG1hY3JvcyB0byBtYWtlIGl0CmVhc2llciBhbmQgbGVz cyBlcnJvciBwcm9uZSB0byBjcmVhdGUgSFRBQnMuIFRoZXNlIG1hY3JvcyBhcmUKaW1wbGVtZW50 ZWQgYXMgd3JhcHBlcnMgYXJvdW5kIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGhhc2hfY3JlYXRlCmZ1 bmN0aW9uLiBVc2luZyB0aGUgbmV3IG1hY3JvcyBpcyBwcmVmZXJyZWQsIGR1ZSB0byB0aGUgYWRk aXRpb25hbApjb21waWxlIHRpbWUgY2hlY2tzIHRoYXQgdGhleSBicmluZy4KCkNvLUF1dGhvcmVk LUJ5OiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2b3QucGdAZ21haWwuY29tPgotLS0K IGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQv dXRpbHMvaGFzaC9keW5haGFzaC5jIHwgMTE1ICsrKysrKysrKysrKysrKysrKysrKwogc3JjL2lu Y2x1ZGUvYy5oICAgICAgICAgICAgICAgICAgIHwgIDMyICsrKysrKwogc3JjL2luY2x1ZGUvc3Rv cmFnZS9zaG1lbS5oICAgICAgIHwgIDMyICsrKysrKwogc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJj aC5oICAgICAgIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMzQ1IGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5 c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IGU1 ZmU0MjNmYzYxLi4wMDZiMjkwMDVhMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12 aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtNDI1NCw3 ICs0MjU0LDEwIEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBh cmVkX3hhY3RzIHBweAogICA8cGFyYT4KICAgIEFub255bW91cyBhbGxvY2F0aW9ucyBhcmUgYWxs b2NhdGlvbnMgdGhhdCBoYXZlIGJlZW4gbWFkZQogICAgd2l0aCA8bGl0ZXJhbD5TaG1lbUFsbG9j KCk8L2xpdGVyYWw+IGRpcmVjdGx5LCByYXRoZXIgdGhhbiB2aWEKLSAgIDxsaXRlcmFsPlNobWVt SW5pdFN0cnVjdCgpPC9saXRlcmFsPiBvcgorICAgPGxpdGVyYWw+U2htZW1Jbml0U3RydWN0KCk8 L2xpdGVyYWw+LAorICAgPGxpdGVyYWw+c2htZW1faGFzaF9tYWtlKCk8L2xpdGVyYWw+LAorICAg PGxpdGVyYWw+c2htZW1faGFzaF9tYWtlX2V4dCgpPC9saXRlcmFsPiwKKyAgIG9yCiAgICA8bGl0 ZXJhbD5TaG1lbUluaXRIYXNoKCk8L2xpdGVyYWw+LgogICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hh c2gvZHluYWhhc2guYwppbmRleCAxMWY1Nzc4ZWJhMS4uZjliN2YxNjY5ZmEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2VuZC91dGls cy9oYXNoL2R5bmFoYXNoLmMKQEAgLTYzMSw2ICs2MzEsMTIxIEBAIGhhc2hfY3JlYXRlKGNvbnN0 IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxh Z3MpCiAJcmV0dXJuIGhhc2hwOwogfQogCisvKgorICogaGFzaF9vcHRzX2luaXQgLS0gaW5pdGlh bGl6ZSBIQVNIQ1RMIGFuZCBmbGFncyBmcm9tIEhBU0hPUFRTCisgKgorICogVGhpcyBwcm9jZXNz ZXMgSEFTSE9QVFMgZmllbGRzIGludG8gSEFTSENUTCBhbmQgZmxhZ3MuIEl0J3MgdXNlZCBieSBj b2RlCisgKiB0aGF0IG5lZWRzIHRvIGNhbGwgdGhlIGxvdy1sZXZlbCBoYXNoX2NyZWF0ZSBmdW5j dGlvbi4KKyAqLwordm9pZAoraGFzaF9vcHRzX2luaXQoSEFTSENUTCAqY3RsLCBpbnQgKmZsYWdz LAorCQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAor CQkJICAgY29uc3QgSEFTSE9QVFMgKm9wdHMpCit7CisJTWVtU2V0KGN0bCwgMCwgc2l6ZW9mKCpj dGwpKTsKKwljdGwtPmtleXNpemUgPSBrZXlzaXplOworCWN0bC0+ZW50cnlzaXplID0gZW50cnlz aXplOworCisJKmZsYWdzID0gSEFTSF9FTEVNOworCisJaWYgKG9wdHMgPT0gTlVMTCkKKwl7CisJ CSpmbGFncyB8PSBzdHJpbmdfa2V5ID8gSEFTSF9TVFJJTkdTIDogSEFTSF9CTE9CUzsKKwkJcmV0 dXJuOworCX0KKworCWlmIChvcHRzLT5oYXNoICE9IE5VTEwpCisJeworCQkvKiBmb3JjZV9ibG9i cyBvbmx5IGFmZmVjdHMgZGVmYXVsdCBoYXNoIHNlbGVjdGlvbiwgbm90IGN1c3RvbSBoYXNoICov CisJCUFzc2VydCghb3B0cy0+Zm9yY2VfYmxvYnMpOworCQljdGwtPmhhc2ggPSBvcHRzLT5oYXNo OworCQkqZmxhZ3MgfD0gSEFTSF9GVU5DVElPTjsKKwl9CisJZWxzZSBpZiAob3B0cy0+Zm9yY2Vf YmxvYnMpCisJeworCQkqZmxhZ3MgfD0gSEFTSF9CTE9CUzsKKwl9CisJZWxzZQorCXsKKwkJKmZs YWdzIHw9IHN0cmluZ19rZXkgPyBIQVNIX1NUUklOR1MgOiBIQVNIX0JMT0JTOworCX0KKworCWlm IChvcHRzLT5tYXRjaCAhPSBOVUxMKQorCXsKKwkJY3RsLT5tYXRjaCA9IG9wdHMtPm1hdGNoOwor CQkqZmxhZ3MgfD0gSEFTSF9DT01QQVJFOworCX0KKworCWlmIChvcHRzLT5rZXljb3B5ICE9IE5V TEwpCisJeworCQljdGwtPmtleWNvcHkgPSBvcHRzLT5rZXljb3B5OworCQkqZmxhZ3MgfD0gSEFT SF9LRVlDT1BZOworCX0KKworCWlmIChvcHRzLT5hbGxvYyAhPSBOVUxMKQorCXsKKwkJY3RsLT5h bGxvYyA9IG9wdHMtPmFsbG9jOworCQkqZmxhZ3MgfD0gSEFTSF9BTExPQzsKKwl9CisKKwlpZiAo b3B0cy0+bnVtX3BhcnRpdGlvbnMgPiAwKQorCXsKKwkJY3RsLT5udW1fcGFydGl0aW9ucyA9IG9w dHMtPm51bV9wYXJ0aXRpb25zOworCQkqZmxhZ3MgfD0gSEFTSF9QQVJUSVRJT047CisJfQorCisJ aWYgKG9wdHMtPmZpeGVkX3NpemUpCisJCSpmbGFncyB8PSBIQVNIX0ZJWEVEX1NJWkU7Cit9CisK Ky8qCisgKiBoYXNoX21ha2VfaW1wbCAtLSBzaW1wbGlmaWVkIGhhc2ggdGFibGUgY3JlYXRpb24K KyAqCisgKiBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGhhc2hf bWFrZSgpIGFuZCBoYXNoX21ha2VfZXh0KCkKKyAqIG1hY3Jvcy4gSXQgY3JlYXRlcyBhIGhhc2gg dGFibGUgd2l0aCBzZW5zaWJsZSBkZWZhdWx0cy4KKyAqCisgKiBJZiBzdHJpbmdfa2V5IGlzIHRy dWUsIHRoZSBrZXkgaXMgdHJlYXRlZCBhcyBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcKKyAqICh1 c2VzIEhBU0hfU1RSSU5HUykuIE90aGVyd2lzZSwgdGhlIGtleSBpcyB0cmVhdGVkIGFzIGEgYmlu YXJ5IGJsb2IKKyAqICh1c2VzIEhBU0hfQkxPQlMpLgorICoKKyAqIFBhc3MgTlVMTCBmb3Igb3B0 cyB0byB1c2UgYWxsIGRlZmF1bHRzLgorICovCitIVEFCICoKK2hhc2hfbWFrZV9pbXBsKGNvbnN0 IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAorCQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVu dHJ5c2l6ZSwKKwkJCSAgIGJvb2wgc3RyaW5nX2tleSwKKwkJCSAgIGNvbnN0IEhBU0hPUFRTICpv cHRzLAorCQkJICAgTWVtb3J5Q29udGV4dCBtY3h0KQoreworCUhBU0hDVEwJCWN0bDsKKwlpbnQJ CQlmbGFnczsKKworCWhhc2hfb3B0c19pbml0KCZjdGwsICZmbGFncywga2V5c2l6ZSwgZW50cnlz aXplLCBzdHJpbmdfa2V5LCBvcHRzKTsKKworCWN0bC5oY3h0ID0gbWN4dDsKKwlmbGFncyB8PSBI QVNIX0NPTlRFWFQ7CisKKwlyZXR1cm4gaGFzaF9jcmVhdGUodGFibmFtZSwgbmVsZW0sICZjdGws IGZsYWdzKTsKK30KKworLyoKKyAqIGhhc2hfbWFrZV9mbl9pbXBsIC0tIGNyZWF0ZSBhIGhhc2gg dGFibGUgd2l0aCBjdXN0b20gZnVuY3Rpb25zCisgKi8KK0hUQUIgKgoraGFzaF9tYWtlX2ZuX2lt cGwoY29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQgbmVsZW0sCisJCQkJICBTaXplIGtleXNpemUs IFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19rZXksCisJCQkJICBIYXNoVmFsdWVGdW5jIGhh c2hmbiwgSGFzaENvbXBhcmVGdW5jIG1hdGNoZm4sCisJCQkJICBNZW1vcnlDb250ZXh0IG1jeHQp Cit7CisJSEFTSE9QVFMJb3B0cyA9IHsKKwkJLmhhc2ggPSBoYXNoZm4sCisJCS5tYXRjaCA9IG1h dGNoZm4KKwl9OworCisJcmV0dXJuIGhhc2hfbWFrZV9pbXBsKHRhYm5hbWUsIG5lbGVtLCBrZXlz aXplLCBlbnRyeXNpemUsCisJCQkJCQkgIHN0cmluZ19rZXksICZvcHRzLCBtY3h0KTsKK30KKwog LyoKICAqIFNldCBkZWZhdWx0IEhBU0hIRFIgcGFyYW1ldGVycy4KICAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYy5oIGIvc3JjL2luY2x1ZGUvYy5oCmluZGV4IDJhYWI3NGQ4YjBlLi4zZDk5 ZTQ0YzViOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2Mu aApAQCAtODMsNiArODMsMTIgQEAKICNpZmRlZiBFTkFCTEVfTkxTCiAjaW5jbHVkZSA8bGliaW50 bC5oPgogI2VuZGlmCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQysrIgoreworI2luY2x1 ZGUgPHR5cGVfdHJhaXRzPgorfQorI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJu ICJDKysiCkBAIC0zODcsNiArMzkzLDMyIEBAIGV4dGVybiAiQysrIgogI2RlZmluZSBIQVZFX1BH X0lOVEVHRVJfQ09OU1RBTlRfUAogI2VuZGlmCiAKKy8qCisgKiBwZ19leHByX2hhc190eXBlX3Ao ZXhwciwgdHlwZSkgLSBDaGVjayBpZiBhbiBleHByZXNzaW9uIGhhcyBhIHNwZWNpZmljIHR5cGUu CisgKgorICogU2ltaWxhciB0byBwZ19pc19zYW1lLCBidXQgdGFrZXMgYW4gZXhwcmVzc2lvbiBp bnN0ZWFkIG9mIGEgdHlwZSBhcyB0aGUKKyAqIGZpcnN0IGFyZ3VtZW50LiBUaGlzIGlzIHVzZWZ1 bCB3aGVuIHlvdSBoYXZlIGFuIGV4cHJlc3Npb24gYW5kIHdhbnQgdG8KKyAqIGNoZWNrIGl0cyB0 eXBlIHdpdGhvdXQgbmVlZGluZyB0eXBlb2YvZGVjbHR5cGUuCisgKi8KKyNpZiBkZWZpbmVkKF9f Y3BsdXNwbHVzKQorI2RlZmluZSBwZ19leHByX2hhc190eXBlX3AoZXhwciwgdHlwZSkgKHN0ZDo6 aXNfc2FtZTxkZWNsdHlwZShleHByKSwgdHlwZT46OnZhbHVlKQorI2Vsc2UKKyNkZWZpbmUgcGdf ZXhwcl9oYXNfdHlwZV9wKGV4cHIsIHR5cGUpIFwKKwlfR2VuZXJpYygoZXhwciksIHR5cGU6IDEs IGRlZmF1bHQ6IDApCisjZW5kaWYKKworLyoKKyAqIHBnX251bGxwdHJfb2YodHlwZSkgLSBDcmVh dGUgYSBudWxsIHBvaW50ZXIgb2YgdGhlIGdpdmVuIHR5cGUuCisgKgorICogSW4gQywgKHR5cGUg KikgTlVMTCB3b3JrcyBmb3IgYWxsIHR5cGVzLiBJbiBDKyssIHRoaXMgc3ludGF4IGZhaWxzIGZv ciB0eXBlcworICogY29udGFpbmluZyBicmFja2V0cyAobGlrZSBjaGFyWzY0XSksIHNvIHdlIHVz ZSBzdGQ6OmFkZF9wb2ludGVyX3QgaW5zdGVhZC4KKyAqLworI2lmIGRlZmluZWQoX19jcGx1c3Bs dXMpCisjZGVmaW5lIHBnX251bGxwdHJfb2YodHlwZSkgKHN0YXRpY19jYXN0PHN0ZDo6YWRkX3Bv aW50ZXJfdDx0eXBlPj4obnVsbHB0cikpCisjZWxzZQorI2RlZmluZSBwZ19udWxscHRyX29mKHR5 cGUpICgodHlwZSAqKSBOVUxMKQorI2VuZGlmCisKIC8qCiAgKiBwZ19hc3N1bWUoZXhwcikgc3Rh dGVzIHRoYXQgd2UgYXNzdW1lIGBleHByYCB0byBldmFsdWF0ZSB0byB0cnVlLiBJbiBhc3NlcnQK ICAqIGVuYWJsZWQgYnVpbGRzIHBnX2Fzc3VtZSgpIGlzIHR1cm5lZCBpbnRvIGFuIGFzc2VydGlv biwgaW4gb3B0aW1pemVkIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9z aG1lbS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCmluZGV4IDg5ZDQ1Mjg3YzE3Li5k YTFkOTAxMjk2YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaApAQCAtNDIsNiArNDIsMzggQEAgZXh0ZXJuIFNp emUgbXVsX3NpemUoU2l6ZSBzMSwgU2l6ZSBzMik7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBTaXpl IHBnX2dldF9zaG1lbV9wYWdlc2l6ZSh2b2lkKTsKIAorLyoKKyAqIFNpbXBsaWZpZWQgc2hhcmVk IG1lbW9yeSBoYXNoIHRhYmxlIGNyZWF0aW9uIEFQSQorICoKKyAqIFRoZXNlIG1hY3JvcyBwcm92 aWRlIGEgc2ltcGxlciB3YXkgdG8gY3JlYXRlIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZXMgYnk6 CisgKiAtIEF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5pbmcga2V5c2l6ZSBhbmQgZW50cnlzaXplIGZy b20gdHlwZSBpbmZvcm1hdGlvbgorICogLSBBdXRvbWF0aWNhbGx5IGNob29zaW5nIEhBU0hfU1RS SU5HUyB2cyBIQVNIX0JMT0JTIGJhc2VkIG9uIGtleSB0eXBlCisgKiAtIEVsaW1pbmF0aW5nIHRo ZSBuZWVkIGZvciBleHBsaWNpdCBIQVNIQ1RMIGFuZCBmbGFncyBpbiBjb21tb24gY2FzZXMKKyAq CisgKiBVc2FnZToKKyAqICAgSFRBQiAqaGFzaCA9IHNobWVtX2hhc2hfbWFrZShNeUVudHJ5LCBr ZXlmaWVsZCwgIk15IGhhc2giLCA2NCwgMTI4KTsKKyAqCisgKiBGb3IgbW9yZSBvcHRpb25zIChw YXJ0aXRpb25pbmcsIGZpeGVkIHNpemUsIGN1c3RvbSBoYXNoKToKKyAqICAgSEFTSE9QVFMgb3B0 cyA9IHsubnVtX3BhcnRpdGlvbnMgPSAxNiwgLmZpeGVkX3NpemUgPSB0cnVlfTsKKyAqICAgSFRB QiAqaGFzaCA9IHNobWVtX2hhc2hfbWFrZV9leHQoTXlFbnRyeSwga2V5ZmllbGQsICJNeSBoYXNo IiwgNjQsIDEyOCwgJm9wdHMpOworICovCisjZGVmaW5lIHNobWVtX2hhc2hfbWFrZShlbnRyeXR5 cGUsIGtleW1lbWJlciwgdGFibmFtZSwgaW5pdF9zaXplLCBtYXhfc2l6ZSkgXAorCXNobWVtX2hh c2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIGluaXRfc2l6ZSwgbWF4 X3NpemUsIE5VTEwpCisKKyNkZWZpbmUgc2htZW1faGFzaF9tYWtlX2V4dChlbnRyeXR5cGUsIGtl eW1lbWJlciwgdGFibmFtZSwgaW5pdF9zaXplLCBtYXhfc2l6ZSwgb3B0cykgXAorCShTdGF0aWNB c3NlcnRFeHByKG9mZnNldG9mKGVudHJ5dHlwZSwga2V5bWVtYmVyKSA9PSAwLCBcCisJCQkJCQkg I2tleW1lbWJlciAiIG11c3QgYmUgZmlyc3QgbWVtYmVyIGluICIgI2VudHJ5dHlwZSksIFwKKwlz aG1lbV9oYXNoX21ha2VfaW1wbCggXAorCQkodGFibmFtZSksIChpbml0X3NpemUpLCAobWF4X3Np emUpLCBcCisJCXNpemVvZigoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIpLCBcCisJCXNpemVv ZihlbnRyeXR5cGUpLCBcCisJCUhBU0hfS0VZX0FTX1NUUklORyhlbnRyeXR5cGUsIGtleW1lbWJl ciksIFwKKwkJKG9wdHMpKSkKKworZXh0ZXJuIEhUQUIgKnNobWVtX2hhc2hfbWFrZV9pbXBsKGNv bnN0IGNoYXIgKm5hbWUsIGludDY0IGluaXRfc2l6ZSwgaW50NjQgbWF4X3NpemUsCisJCQkJCQkJ CSAgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCQkJ CQkgIGNvbnN0IEhBU0hPUFRTICpvcHRzKTsKKwogLyogaXBjaS5jICovCiBleHRlcm4gdm9pZCBS ZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKFNpemUgc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL2hzZWFyY2guaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaAppbmRleCBj ZGM1MzBmYjczMi4uNzFjOTc4MDEzMmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2hz ZWFyY2guaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKQEAgLTE1LDYgKzE1LDkg QEAKICNkZWZpbmUgSFNFQVJDSF9ICiAKIAorLyogSGFzaCB0YWJsZSBjb250cm9sIHN0cnVjdCBp cyBhbiBvcGFxdWUgdHlwZSBrbm93biBvbmx5IHdpdGhpbiBkeW5haGFzaC5jICovCit0eXBlZGVm IHN0cnVjdCBIVEFCIEhUQUI7CisKIC8qCiAgKiBIYXNoIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhp cyBzaWduYXR1cmUuCiAgKi8KQEAgLTQzLDYgKzQ2LDE1NiBAQCB0eXBlZGVmIHZvaWQgKigqSGFz aENvcHlGdW5jKSAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBTaXplIGtleXNpemUpOwog ICovCiB0eXBlZGVmIHZvaWQgKigqSGFzaEFsbG9jRnVuYykgKFNpemUgcmVxdWVzdCk7CiAKKy8q CisgKiBIYXNoIG9wdGlvbnMgZm9yIGhhc2hfbWFrZV9leHQgYW5kIHNobWVtX2hhc2hfbWFrZV9l eHQgbWFjcm9zLgorICogQ29udGFpbnMgbGVzcyBjb21tb25seSBuZWVkZWQgb3B0aW9ucyB0aGF0 IGFyZW4ndCBjb3ZlcmVkIGJ5IHRoZSBiYXNpYyBtYWNyb3MuCisgKiBBbGwgZmllbGRzIGRlZmF1 bHQgdG8gTlVMTC8wL2ZhbHNlIHdoZW4gemVyby1pbml0aWFsaXplZC4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgSEFTSE9QVFMKK3sKKwlIYXNoVmFsdWVGdW5jIGhhc2g7CQkJLyogY3VzdG9tIGhhc2gg ZnVuY3Rpb24gKE5VTEwgZm9yIGRlZmF1bHQpICovCisJSGFzaENvbXBhcmVGdW5jIG1hdGNoOwkJ LyogY3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gKE5VTEwgZm9yCisJCQkJCQkJCSAqIGRlZmF1 bHQpICovCisJSGFzaENvcHlGdW5jIGtleWNvcHk7CQkvKiBjdXN0b20ga2V5IGNvcHkgZnVuY3Rp b24gKE5VTEwgZm9yIGRlZmF1bHQpICovCisJSGFzaEFsbG9jRnVuYyBhbGxvYzsJCS8qIGN1c3Rv bSBhbGxvY2F0b3IgKE5VTEwgZm9yIGRlZmF1bHQpICovCisJaW50NjQJCW51bV9wYXJ0aXRpb25z OyAvKiBwYXJ0aXRpb24gY291bnQgKDAgZm9yIG5vbmUpICovCisJYm9vbAkJZml4ZWRfc2l6ZTsJ CS8qIGlmIHRydWUsIGhhc2ggdGFibGUgY2Fubm90IGdyb3cgKi8KKwlib29sCQlmb3JjZV9ibG9i czsJLyogaWYgdHJ1ZSwgdXNlIEhBU0hfQkxPQlMgZXZlbiBmb3Igc3RyaW5nCisJCQkJCQkJCSAq IHR5cGVzICovCit9IEhBU0hPUFRTOworCisvKgorICogSGVscGVycyB0byBkZXRlY3QgaWYgYSB0 eXBlIHNob3VsZCBiZSBoYXNoZWQgYXMgYSBzdHJpbmcuCisgKgorICogU3RyaW5nIHR5cGVzIGlu Y2x1ZGU6IGNoYXIgYXJyYXlzIGFuZCBOYW1lRGF0YS4KKyAqIEV2ZXJ5dGhpbmcgZWxzZSBpcyB0 cmVhdGVkIGFzIGEgYmluYXJ5IGJsb2IgKEhBU0hfQkxPQlMpLgorICovCisjZGVmaW5lIEhBU0hf UFRSX0FTX1NUUklORyhwdHIsIHNpemUpIFwKKwkocGdfZXhwcl9oYXNfdHlwZV9wKChwdHIpLCBj aGFyKCopW3NpemVdKSB8fCBwZ19leHByX2hhc190eXBlX3AoKHB0ciksIE5hbWVEYXRhICopKQor I2RlZmluZSBIQVNIX0tFWV9BU19TVFJJTkcoZW50cnl0eXBlLCBrZXltZW1iZXIpIFwKKwlIQVNI X1BUUl9BU19TVFJJTkcoJigoZW50cnl0eXBlICopMCktPmtleW1lbWJlciwgXAorCQkJCQkgICBz aXplb2YoKChlbnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyKSkKKyNkZWZpbmUgSEFTSF9UWVBFX0FT X1NUUklORyh0eXBlKSBcCisJSEFTSF9QVFJfQVNfU1RSSU5HKHBnX251bGxwdHJfb2YodHlwZSks IHNpemVvZih0eXBlKSkKKworLyoKKyAqIENyZWF0ZSBhIGhhc2ggdGFibGUgd2l0aCBtaW5pbWFs IGJvaWxlcnBsYXRlLgorICoKKyAqIFRoaXMgaXMgdGhlIHNpbXBsZXN0IHdheSB0byBjcmVhdGUg YSBoYXNoIHRhYmxlLiBJdDoKKyAqIC0gRGVyaXZlcyBrZXlzaXplIGZyb20gdGhlIGtleW1lbWJl cidzIGFjdHVhbCB0eXBlCisgKiAtIERlcml2ZXMgZW50cnlzaXplIGZyb20gdGhlIGVudHJ5dHlw ZQorICogLSBBdXRvbWF0aWNhbGx5IGNob29zZXMgSEFTSF9TVFJJTkdTIG9yIEhBU0hfQkxPQlMg YmFzZWQgb24ga2V5IHR5cGUgKGNoYXIgYXJyYXlzIGFuZCBOYW1lRGF0YSBhcmUgdHJlYXRlZCBh cyBzdHJpbmdzKQorICogLSBVc2VzIEN1cnJlbnRNZW1vcnlDb250ZXh0IChub3QgVG9wTWVtb3J5 Q29udGV4dCkKKyAqIC0gVmFsaWRhdGVzIHRoYXQga2V5bWVtYmVyIGlzIGF0IG9mZnNldCAwCisg KgorICogTk9URTogSWYgeW91IHVzZSBjaGFyW05dIHRvIHN0b3JlIGJpbmFyeSBkYXRhIHRoYXQg bWlnaHQgY29udGFpbiBudWxsIGJ5dGVzCisgKiBhbmQvb3IgaXMgbm90IG51bGwgdGVybWluYXRl ZCwgdGhlIGF1dG9tYXRpYyBkZXRlY3Rpb24gd2lsbCBpbmNvcnJlY3RseQorICogdHJlYXQgaXQg YXMgYSBzdHJpbmcgYW5kIHVzZSBzdHJpbmcgY29tcGFyaXNvbi4gSW4gc3VjaCBjYXNlcywgdXNl CisgKiBoYXNoX21ha2VfZXh0KCkgd2l0aCAuZm9yY2VfYmxvYnMgPSB0cnVlIHRvIG92ZXJyaWRl IHRoZSBhdXRvbWF0aWMKKyAqIGRldGVjdGlvbi4KKyAqCisgKiBVc2FnZToKKyAqICAgdHlwZWRl ZiBzdHJ1Y3QgeyBPaWQgb2lkOyBjaGFyICpkYXRhOyB9IE15RW50cnk7CisgKiAgIEhUQUIgKmgg PSBoYXNoX21ha2UoTXlFbnRyeSwgb2lkLCAibXkgdGFibGUiLCA2NCk7CisgKi8KKyNkZWZpbmUg aGFzaF9tYWtlKGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSkgXAorCWhhc2hf bWFrZV9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBDdXJyZW50TWVt b3J5Q29udGV4dCkKKworLyoKKyAqIExpa2UgaGFzaF9tYWtlLCBidXQgYWxsb3dzIHNwZWNpZnlp bmcgYSBtZW1vcnkgY29udGV4dC4KKyAqLworI2RlZmluZSBoYXNoX21ha2VfY3h0KGVudHJ5dHlw ZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgbWN4dCkgXAorCWhhc2hfbWFrZV9leHRfY3h0 KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgTlVMTCwgbWN4dCkKKworLyoK KyAqIEhhc2ggdGFibGUgd2l0aCBjdXN0b20gaGFzaCBhbmQvb3IgbWF0Y2ggZnVuY3Rpb25zLgor ICoKKyAqIExpa2UgaGFzaF9tYWtlLCBidXQgYWNjZXB0cyBjdXN0b20gaGFzaCBhbmQgbWF0Y2gg ZnVuY3Rpb24gcG9pbnRlcnMuCisgKiBQYXNzIE5VTEwgZm9yIGhhc2hmbiB0byB1c2UgdGhlIGRl ZmF1bHQgaGFzaCAoYmFzZWQgb24ga2V5IHR5cGUpLAorICogb3IgTlVMTCBmb3IgbWF0Y2hmbiB0 byB1c2UgdGhlIGRlZmF1bHQgbWVtY21wLWJhc2VkIGNvbXBhcmlzb24uCisgKi8KKyNkZWZpbmUg aGFzaF9tYWtlX2ZuKGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZu LCBtYXRjaGZuKSBcCisJaGFzaF9tYWtlX2ZuX2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFi bmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbiwgXAorCQkJCQkgQ3VycmVudE1lbW9yeUNvbnRl eHQpCisjZGVmaW5lIGhhc2hfbWFrZV9mbl9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5h bWUsIG5lbGVtLCBoYXNoZm4sIG1hdGNoZm4sIG1jeHQpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihv ZmZzZXRvZihlbnRyeXR5cGUsIGtleW1lbWJlcikgPT0gMCwgXAorCQkJCQkgICNrZXltZW1iZXIg IiBtdXN0IGJlIGZpcnN0IG1lbWJlciBpbiAiICNlbnRyeXR5cGUpLCBcCisJIGhhc2hfbWFrZV9m bl9pbXBsKCh0YWJuYW1lKSwgKG5lbGVtKSwgXAorCQkJCQkgICBzaXplb2YoKChlbnRyeXR5cGUg KikwKS0+a2V5bWVtYmVyKSwgXAorCQkJCQkgICBzaXplb2YoZW50cnl0eXBlKSwgXAorCQkJCQkg ICBIQVNIX0tFWV9BU19TVFJJTkcoZW50cnl0eXBlLCBrZXltZW1iZXIpLCBcCisJCQkJCSAgICho YXNoZm4pLCAobWF0Y2hmbiksIChtY3h0KSkpCisKKy8qCisgKiBIYXNoIHRhYmxlIHdpdGggZXh0 ZW5kZWQgb3B0aW9ucyB2aWEgSEFTSE9QVFMgc3RydWN0LgorICoKKyAqIExpa2UgaGFzaF9tYWtl LCBidXQgYWNjZXB0cyBhZGRpdGlvbmFsIG9wdGlvbnMgdmlhIEhBU0hPUFRTIHN0cnVjdCBwb2lu dGVyLgorICogUGFzcyBOVUxMIGZvciBvcHRzIHRvIHVzZSBhbGwgZGVmYXVsdHMuCisgKgorICog RXhhbXBsZSB1c2FnZToKKyAqICAgSEFTSE9QVFMgb3B0cyA9IHswfTsKKyAqICAgb3B0cy5oYXNo ID0gbXlfaGFzaF9mdW5jOworICogICBvcHRzLm51bV9wYXJ0aXRpb25zID0gMTY7CisgKiAgIEhU QUIgKmggPSBoYXNoX21ha2VfZXh0KE15RW50cnksIGtleSwgIm15IHRhYmxlIiwgNjQsICZvcHRz KTsKKyAqLworI2RlZmluZSBoYXNoX21ha2VfZXh0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJu YW1lLCBuZWxlbSwgb3B0cykgXAorCWhhc2hfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwga2V5bWVt YmVyLCB0YWJuYW1lLCBuZWxlbSwgb3B0cywgQ3VycmVudE1lbW9yeUNvbnRleHQpCisKKyNkZWZp bmUgaGFzaF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVt LCBvcHRzLCBtY3h0KSBcCisJKFN0YXRpY0Fzc2VydEV4cHIob2Zmc2V0b2YoZW50cnl0eXBlLCBr ZXltZW1iZXIpID09IDAsIFwKKwkJCQkJCSAja2V5bWVtYmVyICIgbXVzdCBiZSBmaXJzdCBtZW1i ZXIgaW4gIiAjZW50cnl0eXBlKSwgXAorCWhhc2hfbWFrZV9pbXBsKCBcCisJCSh0YWJuYW1lKSwg KG5lbGVtKSwgXAorCQlzaXplb2YoKChlbnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyKSwgXAorCQlz aXplb2YoZW50cnl0eXBlKSwgXAorCQlIQVNIX0tFWV9BU19TVFJJTkcoZW50cnl0eXBlLCBrZXlt ZW1iZXIpLCBcCisJCShvcHRzKSwgXAorCQkobWN4dCkpKQorCisKKy8qCisgKiBDcmVhdGUgYSBo YXNoIHNldCB3aGVyZSB0aGUgZW50aXJlIGVudHJ5IGlzIHRoZSBrZXkuIFRoaXMgaXMKKyAqIGxp a2UgaGFzaF9tYWtlLCBidXQgd2hlcmUgdGhlIGtleSBpcyBhbHNvIHRoZSBlbnRyeS4KKyAqLwor I2RlZmluZSBoYXNoc2V0X21ha2UoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSkgXAorCWhhc2hz ZXRfbWFrZV9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgQ3VycmVudE1lbW9yeUNvbnRl eHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwg bWN4dCkgXAorCWhhc2hzZXRfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0s IE5VTEwsIG1jeHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9mbihlbnRyeXR5cGUsIHRhYm5hbWUs IG5lbGVtLCBoYXNoZm4sIG1hdGNoZm4pIFwKKwloYXNoc2V0X21ha2VfZm5fY3h0KGVudHJ5dHlw ZSwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbiwgXAorCQkJCQkJCUN1cnJlbnRNZW1v cnlDb250ZXh0KQorI2RlZmluZSBoYXNoc2V0X21ha2VfZm5fY3h0KGVudHJ5dHlwZSwgdGFibmFt ZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbiwgbWN4dCkgXAorCWhhc2hfbWFrZV9mbl9pbXBsKCh0 YWJuYW1lKSwgKG5lbGVtKSwgc2l6ZW9mKGVudHJ5dHlwZSksIHNpemVvZihlbnRyeXR5cGUpLCBc CisJCQkJCQkgSEFTSF9UWVBFX0FTX1NUUklORyhlbnRyeXR5cGUpLCAoaGFzaGZuKSwgKG1hdGNo Zm4pLCBcCisJCQkJCQkgbWN4dCkKKyNkZWZpbmUgaGFzaHNldF9tYWtlX2V4dChlbnRyeXR5cGUs IHRhYm5hbWUsIG5lbGVtLCBvcHRzKSBcCisJaGFzaHNldF9tYWtlX2V4dF9jeHQoZW50cnl0eXBl LCB0YWJuYW1lLCBuZWxlbSwgb3B0cywgXAorCQkJCQkJCUN1cnJlbnRNZW1vcnlDb250ZXh0KQor I2RlZmluZSBoYXNoc2V0X21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBv cHRzLCBtY3h0KSBcCisJaGFzaF9tYWtlX2ltcGwoKHRhYm5hbWUpLCAobmVsZW0pLCBzaXplb2Yo ZW50cnl0eXBlKSwgc2l6ZW9mKGVudHJ5dHlwZSksIFwKKwkJCQkgICBIQVNIX1RZUEVfQVNfU1RS SU5HKGVudHJ5dHlwZSksIG9wdHMsIChtY3h0KSkKKworLyoKKyAqIEltcGxlbWVudGF0aW9uIGZ1 bmN0aW9uIGZvciBoYXNoX21ha2UgbWFjcm9zLiBOb3QgbWVhbnQgdG8gYmUgY2FsbGVkCisgKiBk aXJlY3RseS4KKyAqCisgKiBJZiBzdHJpbmdfa2V5IGlzIHRydWUsIHRoZSBrZXkgaXMgdHJlYXRl ZCBhcyBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcuCisgKiBQYXNzIE5VTEwgZm9yIG9wdHMgdG8g dXNlIGFsbCBkZWZhdWx0cy4KKyAqLworZXh0ZXJuIEhUQUIgKmhhc2hfbWFrZV9pbXBsKGNvbnN0 IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAorCQkJCQkJCVNpemUga2V5c2l6ZSwgU2l6ZSBl bnRyeXNpemUsCisJCQkJCQkJYm9vbCBzdHJpbmdfa2V5LAorCQkJCQkJCWNvbnN0IEhBU0hPUFRT ICpvcHRzLAorCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCk7CisKKy8qCisgKiBJbXBsZW1lbnRh dGlvbiBmdW5jdGlvbiBmb3IgaGFzaF9tYWtlX2ZuIG1hY3Jvcy4KKyAqLworZXh0ZXJuIEhUQUIg Kmhhc2hfbWFrZV9mbl9pbXBsKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAorCQkJ CQkJCSAgIFNpemUga2V5c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJ CQkJCQkgICBIYXNoVmFsdWVGdW5jIGhhc2hmbiwgSGFzaENvbXBhcmVGdW5jIG1hdGNoZm4sCisJ CQkJCQkJICAgTWVtb3J5Q29udGV4dCBtY3h0KTsKKwogLyoKICAqIEhBU0hFTEVNRU5UIGlzIHRo ZSBwcml2YXRlIHBhcnQgb2YgYSBoYXNodGFibGUgZW50cnkuICBUaGUgY2FsbGVyJ3MgZGF0YQog ICogZm9sbG93cyB0aGUgSEFTSEVMRU1FTlQgc3RydWN0dXJlIChvbiBhIE1BWEFMSUdOJ2QgYm91 bmRhcnkpLiAgVGhlIGhhc2gga2V5CkBAIC01NywxMSArMjEwLDExIEBAIHR5cGVkZWYgc3RydWN0 IEhBU0hFTEVNRU5UCiAvKiBIYXNoIHRhYmxlIGhlYWRlciBzdHJ1Y3QgaXMgYW4gb3BhcXVlIHR5 cGUga25vd24gb25seSB3aXRoaW4gZHluYWhhc2guYyAqLwogdHlwZWRlZiBzdHJ1Y3QgSEFTSEhE UiBIQVNISERSOwogCi0vKiBIYXNoIHRhYmxlIGNvbnRyb2wgc3RydWN0IGlzIGFuIG9wYXF1ZSB0 eXBlIGtub3duIG9ubHkgd2l0aGluIGR5bmFoYXNoLmMgKi8KLXR5cGVkZWYgc3RydWN0IEhUQUIg SFRBQjsKLQotLyogUGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGZvciBoYXNoX2NyZWF0ZSAqLwot LyogT25seSB0aG9zZSBmaWVsZHMgaW5kaWNhdGVkIGJ5IGhhc2hfZmxhZ3MgbmVlZCBiZSBzZXQg Ki8KKy8qCisgKiBQYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUgZm9yIGhhc2hfY3JlYXRlICh3aGlj aCBpcyB0aGUgbG93LWxldmVsIG1ldGhvZCBvZgorICogaW5pdGlhbGl6aW5nIGhhc2ggdGFibGVz LCBoYXNoX21ha2UgbWFjcm9zIGFyZSBwcmVmZXJyZWQpCisgKiBPbmx5IHRob3NlIGZpZWxkcyBp bmRpY2F0ZWQgYnkgaGFzaF9mbGFncyBuZWVkIGJlIHNldAorICovCiB0eXBlZGVmIHN0cnVjdCBI QVNIQ1RMCiB7CiAJLyogVXNlZCBpZiBIQVNIX1BBUlRJVElPTiBmbGFnIGlzIHNldDogKi8KQEAg LTEzMSw2ICsyODQsOSBAQCB0eXBlZGVmIHN0cnVjdAogICovCiBleHRlcm4gSFRBQiAqaGFzaF9j cmVhdGUoY29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQgbmVsZW0sCiAJCQkJCQkgY29uc3QgSEFT SENUTCAqaW5mbywgaW50IGZsYWdzKTsKK2V4dGVybiB2b2lkIGhhc2hfb3B0c19pbml0KEhBU0hD VEwgKmN0bCwgaW50ICpmbGFncywKKwkJCQkJCSAgIFNpemUga2V5c2l6ZSwgU2l6ZSBlbnRyeXNp emUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCSAgIGNvbnN0IEhBU0hPUFRTICpvcHRzKTsKIGV4 dGVybiB2b2lkIGhhc2hfZGVzdHJveShIVEFCICpoYXNocCk7CiBleHRlcm4gdm9pZCBoYXNoX3N0 YXRzKGNvbnN0IGNoYXIgKmNhbGxlciwgSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQgKmhhc2hf c2VhcmNoKEhUQUIgKmhhc2hwLCBjb25zdCB2b2lkICprZXlQdHIsIEhBU0hBQ1RJT04gYWN0aW9u LApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBlYzg1MTNkOTBiNS4uMTg0ODRlYjNkODAg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTYzLDYgKzExNjMsNyBAQCBIQVNIQlVD S0VUCiBIQVNIQ1RMCiBIQVNIRUxFTUVOVAogSEFTSEhEUgorSEFTSE9QVFMKIEhBU0hTRUdNRU5U CiBIQVNIX1NFUV9TVEFUVVMKIEhFCgpiYXNlLWNvbW1pdDogYWU1ODE4OWE0ZDUyM2YwMTU2ZWJl MzBmNDUzNDE4MDU1NTY2OWU4OAotLSAKMi41My4wCgo= --fa477b38488948ff15b3b48282d6687669f99a2f4e6f04695d67f6869b31 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v11-0002-Add-foreach_hash-macro.patch Content-Type: text/x-patch; charset=utf-8; name=v11-0002-Add-foreach_hash-macro.patch RnJvbSA4YzUzNmEyNzU0N2RkMjk0ZDNjOTAxMGJmMDM3ZDQ4YzdkNjExY2JhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MSAyLzVdIEFkZCBmb3JlYWNoX2hhc2ggbWFjcm8KCkZvciBsaXN0cyB3ZSd2ZSBoYWQgYSBuZXcg Zm9yZWFjaCBzdHlsZSBtYWNyb3Mgc2luY2UgMTRkZDBmMjdkNy4gVGhpcwphZGRzIGEgc2ltaWxh ciBtYWNybyBmb3IgaGFzaCB0YWJsZXMuIFRoaXMgbmV3IGZvcmVhY2hfaGFzaCBtYWNybyBtYWtl cwppdGVyYXRpbmcgb3ZlciB0aGUgaXRlbXMgaW4gYW4gSFRBQiBhcyBzaW1wbGUgYXMgaXRlcmF0 aW5nIG92ZXIgdGhlCml0ZW1zIGluIGEgTGlzdC4gVGhlIG9ubHkgYWRkaXRpb25hbCB0aGluZyB0 byBrZWVwIGluIG1pbmQgaXMgdGhhdCB3aGVuCmV4aXRpbmcgdGhlIGxvb3AgZWFybHkgeW91IG5l ZWQgdG8gY2FsbCBmb3JlYWNoX2hhc2hfdGVybS4KLS0tCiBzcmMvaW5jbHVkZS91dGlscy9oc2Vh cmNoLmggfCA4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUg Y2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaApp bmRleCA3MWM5NzgwMTMyZi4uOGQ1YzIxOGZmNGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL2hzZWFyY2guaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKQEAgLTI3OSw2 ICsyNzksODYgQEAgdHlwZWRlZiBzdHJ1Y3QKIAl1aW50MzIJCWhhc2h2YWx1ZTsJCS8qIGhhc2h2 YWx1ZSB0byBzdGFydCBzZXFzY2FuIG92ZXIgaGFzaCAqLwogfSBIQVNIX1NFUV9TVEFUVVM7CiAK K2V4dGVybiB2b2lkIGhhc2hfc2VxX2luaXQoSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMsIEhUQUIg Kmhhc2hwKTsKKworLyoKKyAqIFNhbWUgYXMgaGFzaF9zZXFfaW5pdCgpLCBidXQgcmV0dXJucyB0 aGUgc3RhdHVzIHN0cnVjdCBpbnN0ZWFkIG9mIHRha2luZyBhCisgKiBwb2ludGVyLiBUaGlzIHdh eSB3ZSBjYW4gdXNlIGl0IGluIHRoZSBpbml0aWFsaXphdGlvbiBjbGF1c2Ugb2YgYSBmb3IgbG9v cCwKKyAqIHdoaWNoIHdlIG5lZWQgaW4gdGhlIGZvcmVhY2hfaGFzaCBtYWNyby4KKyAqCisgKiBO b3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IHVzZXIgY29kZS4KKyAqLworc3Rh dGljIGlubGluZSBIQVNIX1NFUV9TVEFUVVMKK2ZvcmVhY2hfaGFzaF9zdGFydChIVEFCICpoYXNo cCkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCisJaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBoYXNocCk7CisJcmV0dXJuIHN0YXR1czsKK30KKworCisvKgorICogZm9yZWFjaF9oYXNoIC0g aXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzIGluIGEgaGFzaCB0YWJsZQorICoKKyAqIFRoaXMgbWFj cm8gc2ltcGxpZmllcyBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBieSBjb21iaW5pbmcgaGFzaF9zZXFf aW5pdAorICogYW5kIGhhc2hfc2VxX3NlYXJjaCBpbnRvIGEgc2luZ2xlIGZvci1sb29wIGNvbnN0 cnVjdC4KKyAqCisgKiBVc2FnZToKKyAqICAgZm9yZWFjaF9oYXNoKE15RW50cnksIGVudHJ5LCBt eV9oYXNodGFibGUpCisgKiAgIHsKKyAqICAgICAgIC8vIHVzZSBlbnRyeQorICogICB9CisgKgor ICogVGhpcyByZXBsYWNlcyB0aGUgbW9yZSB2ZXJib3NlIHBhdHRlcm46CisgKiAgIEhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7CisgKiAgIE15RW50cnkgKmVudHJ5OworICogICBoYXNoX3NlcV9pbml0 KCZzdGF0dXMsIG15X2hhc2h0YWJsZSk7CisgKiAgIHdoaWxlICgoZW50cnkgPSAoTXlFbnRyeSAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisgKiAgIHsKKyAqICAgICAgIC8v IHVzZSBlbnRyeQorICogICB9CisgKgorICogRm9yIGVhcmx5IHRlcm1pbmF0aW9uLCB1c2UgZm9y ZWFjaF9oYXNoX3Rlcm0oKSBiZWZvcmUgYnJlYWs6CisgKiAgIGZvcmVhY2hfaGFzaChNeUVudHJ5 LCBlbnRyeSwgbXlfaGFzaHRhYmxlKQorICogICB7CisgKiAgICAgICBpZiAoZm91bmRfaXQpCisg KiAgICAgICB7CisgKiAgICAgICAgICAgZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOworICogICAg ICAgICAgIGJyZWFrOworICogICAgICAgfQorICogICB9CisgKgorICogVGhpcyBtYWNybyBhY3R1 YWxseSBnZW5lcmF0ZXMgdHdvIGxvb3BzIGluIG9yZGVyIHRvIGRlY2xhcmUgdHdvIHZhcmlhYmxl cyBvZgorICogZGlmZmVyZW50IHR5cGVzLiAgVGhlIG91dGVyIGxvb3Agb25seSBpdGVyYXRlcyBv bmNlLCBzbyB3ZSBleHBlY3Qgb3B0aW1pemluZworICogY29tcGlsZXJzIHdpbGwgdW5yb2xsIGl0 LCB0aGVyZWJ5IG9wdGltaXppbmcgaXQgYXdheS4gKFRoaXMgaXMgdGhlIHNhbWUKKyAqIHRyaWNr IHRoYXQncyB1c2VkIGluIHRoZSBmb3JlYWNoX2ludGVybmFsIG1hY3JvIGluIHBnX2xpc3QuaCkK KyAqLworI2RlZmluZSBmb3JlYWNoX2hhc2godHlwZSwgdmFyLCBodGFiKSBcCisJZm9yICh0eXBl ICp2YXIgPSBOVUxMLCAqdmFyIyNfX291dGVybG9vcCA9ICh0eXBlICopIDE7IFwKKwkJIHZhciMj X19vdXRlcmxvb3A7IFwKKwkJIHZhciMjX19vdXRlcmxvb3AgPSAwKSBcCisJCWZvciAoSEFTSF9T RVFfU1RBVFVTIHZhciMjX19zdGF0dXMgPSBmb3JlYWNoX2hhc2hfc3RhcnQoaHRhYik7IFwKKwkJ CSAodmFyID0gKHR5cGUgKikgaGFzaF9zZXFfc2VhcmNoKCZ2YXIjI19fc3RhdHVzKSkgIT0gTlVM TDsgKQorCisvKgorICogZm9yZWFjaF9oYXNoX3Rlcm0gLSB0ZXJtaW5hdGUgYSBmb3JlYWNoX2hh c2ggbG9vcCBlYXJseQorICoKKyAqIEFsd2F5cyBjYWxsIHRoaXMgYmVmb3JlIGJyZWFraW5nIG91 dCBvZiBhIGZvcmVhY2hfaGFzaCBsb29wLCB3aGV0aGVyIGRvbmUgYnkKKyAqIHVzaW5nICJicmVh ayIsICJyZXR1cm4iIG9yICJnb3RvIi4gKE5vdCBuZWVkZWQgd2hlbiB1c2luZyAiY29udGludWUi KQorICovCisjZGVmaW5lIGZvcmVhY2hfaGFzaF90ZXJtKHZhcikgaGFzaF9zZXFfdGVybSgmdmFy IyNfX3N0YXR1cykKKworLyoKKyAqIGZvcmVhY2hfaGFzaF9yZXN0YXJ0IC0gcmVzdGFydCBpdGVy YXRpb24gZnJvbSB0aGUgYmVnaW5uaW5nCisgKgorICogVXNlIHdoZW4gbW9kaWZpY2F0aW9ucyBk dXJpbmcgaXRlcmF0aW9uIG1heSBoYXZlIGludmFsaWRhdGVkIHRoZSBzY2FuLgorICogVGhlIG5l eHQgaXRlcmF0aW9uIHdpbGwgc3RhcnQgZnJvbSB0aGUgZmlyc3QgZW50cnkgYWdhaW4uCisgKi8K KyNkZWZpbmUgZm9yZWFjaF9oYXNoX3Jlc3RhcnQodmFyLCBodGFiKSBcCisJKGhhc2hfc2VxX3Rl cm0oJnZhciMjX19zdGF0dXMpLCBcCisJIGhhc2hfc2VxX2luaXQoJnZhciMjX19zdGF0dXMsIGh0 YWIpKQorCiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGR5bmFoYXNoLmMKICAq LwpAQCAtMjk4LDcgKzM3OCw2IEBAIGV4dGVybiB2b2lkICpoYXNoX3NlYXJjaF93aXRoX2hhc2hf dmFsdWUoSFRBQiAqaGFzaHAsIGNvbnN0IHZvaWQgKmtleVB0ciwKIGV4dGVybiBib29sIGhhc2hf dXBkYXRlX2hhc2hfa2V5KEhUQUIgKmhhc2hwLCB2b2lkICpleGlzdGluZ0VudHJ5LAogCQkJCQkJ CQkgY29uc3Qgdm9pZCAqbmV3S2V5UHRyKTsKIGV4dGVybiBpbnQ2NCBoYXNoX2dldF9udW1fZW50 cmllcyhIVEFCICpoYXNocCk7Ci1leHRlcm4gdm9pZCBoYXNoX3NlcV9pbml0KEhBU0hfU0VRX1NU QVRVUyAqc3RhdHVzLCBIVEFCICpoYXNocCk7CiBleHRlcm4gdm9pZCBoYXNoX3NlcV9pbml0X3dp dGhfaGFzaF92YWx1ZShIQVNIX1NFUV9TVEFUVVMgKnN0YXR1cywKIAkJCQkJCQkJCQkgIEhUQUIg Kmhhc2hwLAogCQkJCQkJCQkJCSAgdWludDMyIGhhc2h2YWx1ZSk7Ci0tIAoyLjUzLjAKCg== --fa477b38488948ff15b3b48282d6687669f99a2f4e6f04695d67f6869b31 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v11-0003-Use-hash_make-macros-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v11-0003-Use-hash_make-macros-throughout-the-codebase.patch RnJvbSA1NGMwODAyNTk1NjYzZWVkODMwZTMzYzE2NGY3Nzc3ZjE1M2I1YjYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzY6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MSAzLzVdIFVzZSBoYXNoX21ha2UgbWFjcm9zIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlCgpUaGlz IHNob3dzIGhvdyBvdXIgY29kZSBiYXNlIGxvb2tzIHdoZW4gdXNpbmcgdGhlIG5ldyBBUElzLiBU aGlzIGhhcwpzb21lIHR5cGVzYWZldHksIHJlYWRhYmlsaXR5IGFuZCBtYWludGFuYWJpbGl0eSBi ZW5lZml0cywgYnV0IGl0IGFsc28KaW50cm9kdWNlcyBzb21lIGJhY2twYXRjaGluZyBwcm9ibGVt cy4gVGhlc2UgYmFja3BhdGNoaW5nIHByb2JsZW1zCmNhbm5vdCBiZSByZXNvbHZlZCBieSBiYWNr cG9ydGluZyB0aGUgbmV3IGhhc2hfbWFrZSBtYWNyb3MsIGJlY2F1c2Ugc29tZQpvZiB0aGVtIHJl cXVpcmUgQzExICh3aGljaCB3ZSBvbmx5IHJlcXVpcmUgb24gbWFzdGVyIGZvciBub3cpLiBJIHRo aW5rCml0J3MgdW5saWtlbHkgdGhhdCB3ZSdsbCBuZWVkIHRvIGJhY2twYXRjaCB0aGluZ3MgaW4g Y29kZSB0aGF0IGNyZWF0ZXMKaGFzaHRhYmxlcyB0aG91Z2gsIHNvIGl0IGNvdWxkIHN0aWxsIGJl IHdvcnRoIGl0IHRvIGRvIHRoaXMgY29tcGxldGUKcmVmYWN0b3IuCgpBdCB0aGUgdmVyeSBsZWFz dCB3ZSBzaG91bGQgY2hvb3NlIGEgZmV3IHBsYWNlcyB3aGVyZSB3ZSB1c2UgdGhlIG5ldwptYWNy b3MgdG8gbWFrZSBzdXJlIHRoZXkgaGF2ZSBjb3ZlcmFnZS4KCkRvIG5vdGUgdGhhdCB0aGVzZSBu ZXcgbWFjcm9zIGFyZSBub3QganVzdCBxdWFsaXR5LW9mLWxpZmUsIGJ1dCB0aGV5CmFsc28gY2Fs Y3VsYXRlIHRoZSBrZXkgYW5kIGVudHJ5IHNpemVzIGF1dG9tYXRpY2FsbHkuIFRodXMgbWFraW5n IHRoZW0KbGVzcyBlcnJvciBwcm9uZSB0byBtYWludGFpbiBpbiBjYXNlIG9mIGNoYW5nZXMgdG8g dGhlIHVuZGVybHlpbmcKc3RydWN0cy4KLS0tCiBjb250cmliL2RibGluay9kYmxpbmsuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAxMCArLS0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3Rh dF9zdGF0ZW1lbnRzLmMgICB8IDEwICstLQogY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMg ICAgICAgICAgICAgICAgIHwgIDkgKy0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9u LmMgICAgICAgICAgICAgfCAxMCArLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5j ICAgICAgICAgICAgICB8IDEwICsrLQogY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMgICAg ICAgICAgICAgICAgIHwgMTcgKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1 cGxlLmMgICAgICAgICB8IDEzICstLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jICAgICAgICAgICB8IDExICstLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZGJ1ZmZlcnMuYyAgICB8IDEwICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2Uu YyAgICAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhl YXAuYyAgICAgICAgIHwgMzkgKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dwcmVmZXRjaGVyLmMgICB8ICA4ICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ3V0aWxzLmMgICAgICAgIHwgMTMgKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVt LmMgICAgICAgICAgICAgICAgIHwgMjQgKystLS0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19p bmhlcml0cy5jICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9y YWdlLmMgICAgICAgICAgICAgICAgIHwgMjEgKystLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9h c3luYy5jICAgICAgICAgICAgICAgICAgfCA0OSArKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgMTIgKy0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2VxdWVuY2UuYyAgICAgICAgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAxNiArLS0tLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9u b2Rlcy9leHRlbnNpYmxlLmMgICAgICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BsYW5jYXQuYyAgICAgICAgICB8IDE3ICsrLS0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3JlbG5vZGUuYyAgICAgICAgICB8IDEzICstLS0KIHNyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9vcGVyLmMgICAgICAgICAgICAgICB8IDEwICsrLQogc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRkZXNjLmMgICAgICAgICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAyMiArKy0tLS0tCiBzcmMvYmFja2VuZC9w b3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jICAgICAgICAgfCAxMiArLS0tCiAuLi4vcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAyMiArKy0tLS0tCiAuLi4vcmVwbGlj YXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAyOSArKy0tLS0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgMTAgKystCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAxMSArLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYyAgICAgICAgfCAxNSArKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYyAgICAgICAgIHwgMTEgKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9maWxlL3JlaW5pdC5jICAgICAgICAgICAgIHwgIDggKy0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAgICAgICAgfCAzMyArKysrKysrLS0tCiBz cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAgfCAyMCArKy0tLS0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgICAgICAgICAgICAgICB8IDU1ICsrKysr LS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYyAgICAgICAgICAg ICB8ICA4ICstLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jICAgICAgICAg IHwgNjYgKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3Iu YyAgICAgICAgICAgICAgIHwgMTAgKystCiBzcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5j ICAgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5 emUuYyAgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMgICAgICAgfCAyMyArKystLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlf dHlwYW5hbHl6ZS5jICAgICAgfCAyMyArKy0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNv bi5jICAgICAgICAgICAgICAgICAgfCAxNSArLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25mdW5jcy5jICAgICAgICAgICAgIHwgMjAgKystLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQv bWN4dGZ1bmNzLmMgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCAyOSArKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgMjMgKystLS0tLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvYXR0b3B0Y2FjaGUuYyAgICAgICAgIHwgMTYgKystLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2V2dGNhY2hlLmMgICAgICAgICAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvZnVuY2NhY2hlLmMgICAgICAgICAgIHwgMTQgKystLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgMTkgKystLS0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3NwY2NhY2hlLmMgICAgICAgICAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvdHNfY2FjaGUuYyAgICAgICAgICAgIHwgMjcgKysrLS0tLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICB8IDMzICsrKystLS0tLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYyAgICAgICAgICAgICAgICB8IDEyICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jICAgICAgICAgICAgICAgICB8IDExICstLS0KIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMgICAgICB8IDE0ICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAgICB8IDEwICstLQogc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jICAgICAgICAgICAgIHwgMTMgKy0tLQogc3JjL3Bs L3BscGVybC9wbHBlcmwuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIgKysrLS0tLS0tCiBz cmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jICAgICAgICAgICAgICAgICAgfCAzMiArKysrLS0t LS0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYyAgICAgICAgICAgICB8ICA5ICsr LQogc3JjL3BsL3BscHl0aG9uL3BscHlfcHJvY2VkdXJlLmMgICAgICAgICAgICAgIHwgIDkgKy0t CiBzcmMvcGwvdGNsL3BsdGNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOSArKy0t LS0KIHNyYy90aW1lem9uZS9wZ3R6LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICst LS0KIDcyIGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCspLCA4NTQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMgYi9jb250cmliL2RibGluay9k YmxpbmsuYwppbmRleCAyNDk4ZDgwYzhlNy4uMzZkNGMzYTE4NDcgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvZGJsaW5rL2RibGluay5jCisrKyBiL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCkBAIC0yNTQy LDEzICsyNTQyLDkgQEAgZ2V0Q29ubmVjdGlvbkJ5TmFtZShjb25zdCBjaGFyICpuYW1lKQogc3Rh dGljIEhUQUIgKgogY3JlYXRlQ29ubkhhc2godm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQlj dGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YocmVtb3Rl Q29ubkhhc2hFbnQpOwotCi0JcmV0dXJuIGhhc2hfY3JlYXRlKCJSZW1vdGUgQ29uIGhhc2giLCBO VU1DT05OLCAmY3RsLAotCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCXJldHVy biBoYXNoX21ha2VfY3h0KHJlbW90ZUNvbm5IYXNoRW50LCBuYW1lLAorCQkJCQkJICJSZW1vdGUg Q29uIGhhc2giLCBOVU1DT05OLAorCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiBzdGF0 aWMgcmVtb3RlQ29ubiAqCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9w Z19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRf c3RhdGVtZW50cy5jCmluZGV4IDRhNDI3NTMzYmQ4Li44YTY3MzkwZTU2MSAxMDA2NDQKLS0tIGEv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTUxNyw3ICs1 MTcsNiBAQCBzdGF0aWMgdm9pZAogcGdzc19zaG1lbV9zdGFydHVwKHZvaWQpCiB7CiAJYm9vbAkJ Zm91bmQ7Ci0JSEFTSENUTAkJaW5mbzsKIAlGSUxFCSAgICpmaWxlID0gTlVMTDsKIAlGSUxFCSAg ICpxZmlsZSA9IE5VTEw7CiAJdWludDMyCQloZWFkZXI7CkBAIC01NTcsMTIgKzU1Niw5IEBAIHBn c3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogCQlwZ3NzLT5zdGF0cy5zdGF0c19yZXNldCA9IEdldEN1 cnJlbnRUaW1lc3RhbXAoKTsKIAl9CiAKLQlpbmZvLmtleXNpemUgPSBzaXplb2YocGdzc0hhc2hL ZXkpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKHBnc3NFbnRyeSk7Ci0JcGdzc19oYXNoID0g U2htZW1Jbml0SGFzaCgicGdfc3RhdF9zdGF0ZW1lbnRzIGhhc2giLAotCQkJCQkJCSAgcGdzc19t YXgsIHBnc3NfbWF4LAotCQkJCQkJCSAgJmluZm8sCi0JCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwlwZ3NzX2hhc2ggPSBzaG1lbV9oYXNoX21ha2UocGdzc0VudHJ5LCBrZXksCisJ CQkJCQkJCSJwZ19zdGF0X3N0YXRlbWVudHMgaGFzaCIsCisJCQkJCQkJCXBnc3NfbWF4LCBwZ3Nz X21heCk7CiAKIAlMV0xvY2tSZWxlYXNlKEFkZGluU2htZW1Jbml0TG9jayk7CiAKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21f cmVnZXhwLmMKaW5kZXggYjRlYWVlYzYwOTAuLjM4M2NlNmIzMWIxIDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdl eHAuYwpAQCAtODk2LDcgKzg5Niw2IEBAIGNvbnZlcnRQZ1djaGFyKHBnX3djaGFyIGMsIHRyZ21f bWJfY2hhciAqcmVzdWx0KQogc3RhdGljIHZvaWQKIHRyYW5zZm9ybUdyYXBoKFRyZ21ORkEgKnRy Z21ORkEpCiB7Ci0JSEFTSENUTAkJaGFzaEN0bDsKIAlUcmdtU3RhdGVLZXkgaW5pdGtleTsKIAlU cmdtU3RhdGUgICppbml0c3RhdGU7CiAJTGlzdENlbGwgICAqbGM7CkBAIC05MDgsMTMgKzkwNyw3 IEBAIHRyYW5zZm9ybUdyYXBoKFRyZ21ORkEgKnRyZ21ORkEpCiAJdHJnbU5GQS0+b3ZlcmZsb3dl ZCA9IGZhbHNlOwogCiAJLyogQ3JlYXRlIGhhc2h0YWJsZSBmb3Igc3RhdGVzICovCi0JaGFzaEN0 bC5rZXlzaXplID0gc2l6ZW9mKFRyZ21TdGF0ZUtleSk7Ci0JaGFzaEN0bC5lbnRyeXNpemUgPSBz aXplb2YoVHJnbVN0YXRlKTsKLQloYXNoQ3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsK LQl0cmdtTkZBLT5zdGF0ZXMgPSBoYXNoX2NyZWF0ZSgiVHJpZ3JhbSBORkEiLAotCQkJCQkJCQkg IDEwMjQsCi0JCQkJCQkJCSAgJmhhc2hDdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJdHJnbU5GQS0+c3RhdGVzID0gaGFzaF9tYWtlKFRyZ21T dGF0ZSwgc3RhdGVLZXksICJUcmlncmFtIE5GQSIsIDEwMjQpOwogCXRyZ21ORkEtPm5zdGF0ZXMg PSAwOwogCiAJLyogQ3JlYXRlIGluaXRpYWwgc3RhdGU6IGFtYmlndW91cyBwcmVmaXgsIE5GQSdz IGluaXRpYWwgc3RhdGUgKi8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5l Y3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA3ZTJiODIy ZDE2MS4uOTc1Mzk0ZmEzYjEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5l Y3Rpb24uYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTIxNiwx NyArMjE2LDEzIEBAIEdldENvbm5lY3Rpb24oVXNlck1hcHBpbmcgKnVzZXIsIGJvb2wgd2lsbF9w cmVwX3N0bXQsIFBnRmR3Q29ublN0YXRlICoqc3RhdGUpCiAJLyogRmlyc3QgdGltZSB0aHJvdWdo LCBpbml0aWFsaXplIGNvbm5lY3Rpb24gY2FjaGUgaGFzaHRhYmxlICovCiAJaWYgKENvbm5lY3Rp b25IYXNoID09IE5VTEwpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0KIAkJaWYgKHBnZmR3X3dlX2dl dF9yZXN1bHQgPT0gMCkKIAkJCXBnZmR3X3dlX2dldF9yZXN1bHQgPQogCQkJCVdhaXRFdmVudEV4 dGVuc2lvbk5ldygiUG9zdGdyZXNGZHdHZXRSZXN1bHQiKTsKIAotCQljdGwua2V5c2l6ZSA9IHNp emVvZihDb25uQ2FjaGVLZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKENvbm5DYWNoZUVu dHJ5KTsKLQkJQ29ubmVjdGlvbkhhc2ggPSBoYXNoX2NyZWF0ZSgicG9zdGdyZXNfZmR3IGNvbm5l Y3Rpb25zIiwgOCwKLQkJCQkJCQkJCSAmY3RsLAotCQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMpOworCQlDb25uZWN0aW9uSGFzaCA9IGhhc2hfbWFrZV9jeHQoQ29ubkNhY2hlRW50cnks IGtleSwKKwkJCQkJCQkJCSAgICJwb3N0Z3Jlc19mZHcgY29ubmVjdGlvbnMiLCA4LAorCQkJCQkJ CQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkJLyoKIAkJICogUmVnaXN0ZXIgc29tZSBjYWxs YmFjayBmdW5jdGlvbnMgdGhhdCBtYW5hZ2UgY29ubmVjdGlvbiBjbGVhbnVwLgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9zaGlwcGFibGUuYwppbmRleCAyNTBmNTRmZWEzMi4uY2JhMWMwOTY3YTkgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3NoaXBwYWJsZS5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXNfZmR3 LmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgogCiAvKiBIYXNoIHRhYmxlIGZvciBjYWNoaW5nIHRoZSByZXN1bHRzIG9mIHNoaXBwYWJpbGl0 eSBsb29rdXBzICovCkBAIC05MSwxMyArOTIsMTAgQEAgSW52YWxpZGF0ZVNoaXBwYWJsZUNhY2hl Q2FsbGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwKIHN0YXRpYyB2 b2lkCiBJbml0aWFsaXplU2hpcHBhYmxlQ2FjaGUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0K IAkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoU2hp cHBhYmxlQ2FjaGVLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2hpcHBhYmxlQ2FjaGVF bnRyeSk7Ci0JU2hpcHBhYmxlQ2FjaGVIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlNoaXBwYWJpbGl0 eSBjYWNoZSIsIDI1NiwgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJU2hpcHBhYmxl Q2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChTaGlwcGFibGVDYWNoZUVudHJ5LCBrZXksCisJCQkJ CQkJCQkgICAiU2hpcHBhYmlsaXR5IGNhY2hlIiwgMjU2LAorCQkJCQkJCQkJICAgVG9wTWVtb3J5 Q29udGV4dCk7CiAKIAkvKiBTZXQgdXAgaW52YWxpZGF0aW9uIGNhbGxiYWNrIG9uIHBnX2ZvcmVp Z25fc2VydmVyLiAqLwogCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKEZPUkVJR05TRVJW RVJPSUQsCmRpZmYgLS1naXQgYS9jb250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYyBiL2NvbnRy aWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCmluZGV4IGNhMjQzNGM2ZTE5Li40MjZmNGIyMzZhMiAx MDA2NDQKLS0tIGEvY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMKKysrIGIvY29udHJpYi90 YWJsZWZ1bmMvdGFibGVmdW5jLmMKQEAgLTcwNSwyNCArNzA1LDE3IEBAIHN0YXRpYyBIVEFCICoK IGxvYWRfY2F0ZWdvcmllc19oYXNoKGNoYXIgKmNhdHNfc3FsLCBNZW1vcnlDb250ZXh0IHBlcl9x dWVyeV9jdHgpCiB7CiAJSFRBQgkgICAqY3Jvc3N0YWJfaGFzaDsKLQlIQVNIQ1RMCQljdGw7CiAJ aW50CQkJcmV0OwogCXVpbnQ2NAkJcHJvYzsKIAlNZW1vcnlDb250ZXh0IFNQSWNvbnRleHQ7CiAK LQkvKiBpbml0aWFsaXplIHRoZSBjYXRlZ29yeSBoYXNoIHRhYmxlICovCi0JY3RsLmtleXNpemUg PSBNQVhfQ0FUTkFNRV9MRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihjcm9zc3RhYl9IYXNo RW50KTsKLQljdGwuaGN4dCA9IHBlcl9xdWVyeV9jdHg7Ci0KIAkvKgotCSAqIHVzZSBJTklUX0NB VFMsIGRlZmluZWQgYWJvdmUgYXMgYSBndWVzcyBvZiBob3cgbWFueSBoYXNoIHRhYmxlIGVudHJp ZXMKLQkgKiB0byBjcmVhdGUsIGluaXRpYWxseQorCSAqIEluaXRpYWxpemUgdGhlIGNhdGVnb3J5 IGhhc2ggdGFibGUuIFVzZSBJTklUX0NBVFMsIGRlZmluZWQgYWJvdmUgYXMgYQorCSAqIGd1ZXNz IG9mIGhvdyBtYW55IGhhc2ggdGFibGUgZW50cmllcyB0byBjcmVhdGUsIGluaXRpYWxseS4KIAkg Ki8KLQljcm9zc3RhYl9oYXNoID0gaGFzaF9jcmVhdGUoImNyb3NzdGFiIGhhc2giLAotCQkJCQkJ CQlJTklUX0NBVFMsCi0JCQkJCQkJCSZjdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RS SU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJY3Jvc3N0YWJfaGFzaCA9IGhhc2hfbWFrZV9jeHQoY3Jv c3N0YWJfSGFzaEVudCwgaW50ZXJuYWxfY2F0bmFtZSwKKwkJCQkJCQkJICAiY3Jvc3N0YWIgaGFz aCIsIElOSVRfQ0FUUywKKwkJCQkJCQkJICBwZXJfcXVlcnlfY3R4KTsKIAogCS8qIENvbm5lY3Qg dG8gU1BJIG1hbmFnZXIgKi8KIAlTUElfY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v aGVhcHR1cGxlLmMKaW5kZXggMTFiZWMyMGU4MmUuLmU2NDgwMDFmMTFiIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9jb21tb24vaGVhcHR1cGxlLmMKQEAgLTEyNSwxOCArMTI1LDkgQEAgbWlzc2luZ19tYXRj aChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtleXNpemUpCiBzdGF0 aWMgdm9pZAogaW5pdF9taXNzaW5nX2NhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7 Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKG1pc3NpbmdfY2FjaGVfa2V5KTsKLQloYXNo X2N0bC5lbnRyeXNpemUgPSBzaXplb2YobWlzc2luZ19jYWNoZV9rZXkpOwotCWhhc2hfY3RsLmhj eHQgPSBUb3BNZW1vcnlDb250ZXh0OwotCWhhc2hfY3RsLmhhc2ggPSBtaXNzaW5nX2hhc2g7Ci0J aGFzaF9jdGwubWF0Y2ggPSBtaXNzaW5nX21hdGNoOwogCW1pc3NpbmdfY2FjaGUgPQotCQloYXNo X2NyZWF0ZSgiTWlzc2luZyBWYWx1ZXMgQ2FjaGUiLAotCQkJCQkzMiwKLQkJCQkJJmhhc2hfY3Rs LAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0NPTlRFWFQgfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9D T01QQVJFKTsKKwkJaGFzaHNldF9tYWtlX2ZuX2N4dChtaXNzaW5nX2NhY2hlX2tleSwgIk1pc3Np bmcgVmFsdWVzIENhY2hlIiwgMzIsCisJCQkJCQkJbWlzc2luZ19oYXNoLCBtaXNzaW5nX21hdGNo LCBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0YnVpbGQuYwppbmRleCA3ZjU3Yzc4N2Y0Yy4uMDlmMTFjNDU5ZDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RidWlsZC5jCkBAIC0xNTE1LDE1ICsxNTE1LDggQEAgdHlwZWRlZiBzdHJ1Y3QK IHN0YXRpYyB2b2lkCiBnaXN0SW5pdFBhcmVudE1hcChHSVNUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSkKIHsKLQlIQVNIQ1RMCQloYXNoQ3RsOwotCi0JaGFzaEN0bC5rZXlzaXplID0gc2l6ZW9mKEJs b2NrTnVtYmVyKTsKLQloYXNoQ3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQYXJlbnRNYXBFbnRyeSk7 Ci0JaGFzaEN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JYnVpbGRzdGF0ZS0+cGFy ZW50TWFwID0gaGFzaF9jcmVhdGUoImdpc3RidWlsZCBwYXJlbnQgbWFwIiwKLQkJCQkJCQkJCQkx MDI0LAotCQkJCQkJCQkJCSZoYXNoQ3RsLAotCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX0NPTlRFWFQpOworCWJ1aWxkc3RhdGUtPnBhcmVudE1hcCA9IGhhc2hfbWFrZShQ YXJlbnRNYXBFbnRyeSwgY2hpbGRibGtubywKKwkJCQkJCQkJCSAgImdpc3RidWlsZCBwYXJlbnQg bWFwIiwgMTAyNCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0YnVpbGRidWZmZXJzLmMKaW5kZXggMzIxM2NmNDVhYTYuLjAyOWFmODU0MmY5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jCkBAIC00NCw3ICs0NCw2IEBA IEdJU1RCdWlsZEJ1ZmZlcnMgKgogZ2lzdEluaXRCdWlsZEJ1ZmZlcnMoaW50IHBhZ2VzUGVyQnVm ZmVyLCBpbnQgbGV2ZWxTdGVwLCBpbnQgbWF4TGV2ZWwpCiB7CiAJR0lTVEJ1aWxkQnVmZmVycyAq Z2ZiYjsKLQlIQVNIQ1RMCQloYXNoQ3RsOwogCiAJZ2ZiYiA9IHBhbGxvY19vYmplY3QoR0lTVEJ1 aWxkQnVmZmVycyk7CiAJZ2ZiYi0+cGFnZXNQZXJCdWZmZXIgPSBwYWdlc1BlckJ1ZmZlcjsKQEAg LTcyLDEzICs3MSw4IEBAIGdpc3RJbml0QnVpbGRCdWZmZXJzKGludCBwYWdlc1BlckJ1ZmZlciwg aW50IGxldmVsU3RlcCwgaW50IG1heExldmVsKQogCSAqIG5vZGVCdWZmZXJzVGFiIGhhc2ggaXMg YXNzb2NpYXRpb24gYmV0d2VlbiBpbmRleCBibG9ja3MgYW5kIGl0J3MKIAkgKiBidWZmZXJzLgog CSAqLwotCWhhc2hDdGwua2V5c2l6ZSA9IHNpemVvZihCbG9ja051bWJlcik7Ci0JaGFzaEN0bC5l bnRyeXNpemUgPSBzaXplb2YoR0lTVE5vZGVCdWZmZXIpOwotCWhhc2hDdGwuaGN4dCA9IEN1cnJl bnRNZW1vcnlDb250ZXh0OwotCWdmYmItPm5vZGVCdWZmZXJzVGFiID0gaGFzaF9jcmVhdGUoImdp c3RidWlsZGJ1ZmZlcnMiLAotCQkJCQkJCQkJICAgMTAyNCwKLQkJCQkJCQkJCSAgICZoYXNoQ3Rs LAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJ Z2ZiYi0+bm9kZUJ1ZmZlcnNUYWIgPSBoYXNoX21ha2UoR0lTVE5vZGVCdWZmZXIsIG5vZGVCbG9j a251bSwKKwkJCQkJCQkJCSAiZ2lzdGJ1aWxkYnVmZmVycyIsIDEwMjQpOwogCiAJZ2ZiYi0+YnVm ZmVyRW1wdHlpbmdRdWV1ZSA9IE5JTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaHBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKaW5k ZXggOGUyMjBhM2FlMTYuLjk5ZWIyOTFlODMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNocGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdl LmMKQEAgLTEzNTYsNyArMTM1Niw2IEBAIHZvaWQKIF9oYXNoX2ZpbmlzaF9zcGxpdChSZWxhdGlv biByZWwsIEJ1ZmZlciBtZXRhYnVmLCBCdWZmZXIgb2J1ZiwgQnVja2V0IG9idWNrZXQsCiAJCQkJ ICAgdWludDMyIG1heGJ1Y2tldCwgdWludDMyIGhpZ2htYXNrLCB1aW50MzIgbG93bWFzaykKIHsK LQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlIVEFCCSAgICp0aWRodGFiOwogCUJ1ZmZlcgkJYnVja2V0 X25idWYgPSBJbnZhbGlkQnVmZmVyOwogCUJ1ZmZlcgkJbmJ1ZjsKQEAgLTEzNjcsMTYgKzEzNjYs OCBAQCBfaGFzaF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVm ZmVyIG9idWYsIEJ1Y2tldCBvYnVja2V0LAogCUJ1Y2tldAkJbmJ1Y2tldDsKIAlib29sCQlmb3Vu ZDsKIAotCS8qIEluaXRpYWxpemUgaGFzaCB0YWJsZXMgdXNlZCB0byB0cmFjayBUSURzICovCi0J aGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihJdGVtUG9pbnRlckRhdGEpOwotCWhhc2hfY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihJdGVtUG9pbnRlckRhdGEpOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJy ZW50TWVtb3J5Q29udGV4dDsKLQotCXRpZGh0YWIgPQotCQloYXNoX2NyZWF0ZSgiYnVja2V0IGN0 aWRzIiwKLQkJCQkJMjU2LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwotCQkJCQkmaGFz aF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCS8q IEluaXRpYWxpemUgaGFzaCB0YWJsZXMgdXNlZCB0byB0cmFjayBUSURzICh3aXRoIGFyYml0cmFy eSBpbml0aWFsIHNpemUpICovCisJdGlkaHRhYiA9IGhhc2hzZXRfbWFrZShJdGVtUG9pbnRlckRh dGEsICJidWNrZXQgY3RpZHMiLCAyNTYpOwogCiAJYnVja2V0X25ibGtubyA9IG5ibGtubyA9IF9o YXNoX2dldF9uZXdibG9ja19mcm9tX29sZGJ1Y2tldChyZWwsIG9idWNrZXQpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwppbmRleCA2YjE5YWMzMDMwZC4uMzNiZTA4ZGUzNjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwpAQCAtMjM4LDcgKzIzOCw2IEBA IGJlZ2luX2hlYXBfcmV3cml0ZShSZWxhdGlvbiBvbGRfaGVhcCwgUmVsYXRpb24gbmV3X2hlYXAs IFRyYW5zYWN0aW9uSWQgb2xkZXN0X3htCiAJUmV3cml0ZVN0YXRlIHN0YXRlOwogCU1lbW9yeUNv bnRleHQgcndfY3h0OwogCU1lbW9yeUNvbnRleHQgb2xkX2N4dDsKLQlIQVNIQ1RMCQloYXNoX2N0 bDsKIAogCS8qCiAJICogVG8gZWFzZSBjbGVhbnVwLCBtYWtlIGEgc2VwYXJhdGUgY29udGV4dCB0 aGF0IHdpbGwgY29udGFpbiB0aGUKQEAgLTI2MywyNCArMjYyLDE5IEBAIGJlZ2luX2hlYXBfcmV3 cml0ZShSZWxhdGlvbiBvbGRfaGVhcCwgUmVsYXRpb24gbmV3X2hlYXAsIFRyYW5zYWN0aW9uSWQg b2xkZXN0X3htCiAJc3RhdGUtPnJzX2N4dCA9IHJ3X2N4dDsKIAlzdGF0ZS0+cnNfYnVsa3N0YXRl ID0gc21ncl9idWxrX3N0YXJ0X3JlbChuZXdfaGVhcCwgTUFJTl9GT1JLTlVNKTsKIAotCS8qIElu aXRpYWxpemUgaGFzaCB0YWJsZXMgdXNlZCB0byB0cmFjayB1cGRhdGUgY2hhaW5zICovCi0JaGFz aF9jdGwua2V5c2l6ZSA9IHNpemVvZihUaWRIYXNoS2V5KTsKLQloYXNoX2N0bC5lbnRyeXNpemUg PSBzaXplb2YoVW5yZXNvbHZlZFR1cERhdGEpOwotCWhhc2hfY3RsLmhjeHQgPSBzdGF0ZS0+cnNf Y3h0OwotCisJLyoKKwkgKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgdXBk YXRlIGNoYWlucyAod2l0aCBhcmJpdHJhcnkKKwkgKiBpbml0aWFsIHNpemVzKQorCSAqLwogCXN0 YXRlLT5yc191bnJlc29sdmVkX3R1cHMgPQotCQloYXNoX2NyZWF0ZSgiUmV3cml0ZSAvIFVucmVz b2x2ZWQgY3RpZHMiLAotCQkJCQkxMjgsCQkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXplICovCi0J CQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7Ci0KLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoT2xkVG9OZXdNYXBwaW5nRGF0YSk7 CisJCWhhc2hfbWFrZV9jeHQoVW5yZXNvbHZlZFR1cERhdGEsIGtleSwKKwkJCQkJICAiUmV3cml0 ZSAvIFVucmVzb2x2ZWQgY3RpZHMiLCAxMjgsCisJCQkJCSAgc3RhdGUtPnJzX2N4dCk7CiAKIAlz dGF0ZS0+cnNfb2xkX25ld190aWRfbWFwID0KLQkJaGFzaF9jcmVhdGUoIlJld3JpdGUgLyBPbGQg dG8gbmV3IHRpZCBtYXAiLAotCQkJCQkxMjgsCQkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXplICov Ci0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09O VEVYVCk7CisJCWhhc2hfbWFrZV9jeHQoT2xkVG9OZXdNYXBwaW5nRGF0YSwga2V5LAorCQkJCQkg ICJSZXdyaXRlIC8gT2xkIHRvIG5ldyB0aWQgbWFwIiwgMTI4LAorCQkJCQkgIHN0YXRlLT5yc19j eHQpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jeHQpOwogCkBAIC03NjEsNyArNzU1 LDYgQEAgcmF3X2hlYXBfaW5zZXJ0KFJld3JpdGVTdGF0ZSBzdGF0ZSwgSGVhcFR1cGxlIHR1cCkK IHN0YXRpYyB2b2lkCiBsb2dpY2FsX2JlZ2luX2hlYXBfcmV3cml0ZShSZXdyaXRlU3RhdGUgc3Rh dGUpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJVHJhbnNhY3Rpb25JZCBsb2dpY2FsX3htaW47 CiAKIAkvKgpAQCAtNzkyLDE1ICs3ODUsMTEgQEAgbG9naWNhbF9iZWdpbl9oZWFwX3Jld3JpdGUo UmV3cml0ZVN0YXRlIHN0YXRlKQogCXN0YXRlLT5yc19iZWdpbl9sc24gPSBHZXRYTG9nSW5zZXJ0 UmVjUHRyKCk7CiAJc3RhdGUtPnJzX251bV9yZXdyaXRlX21hcHBpbmdzID0gMDsKIAotCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXpl ID0gc2l6ZW9mKFJld3JpdGVNYXBwaW5nRmlsZSk7Ci0JaGFzaF9jdGwuaGN4dCA9IHN0YXRlLT5y c19jeHQ7Ci0KIAlzdGF0ZS0+cnNfbG9naWNhbF9tYXBwaW5ncyA9Ci0JCWhhc2hfY3JlYXRlKCJM b2dpY2FsIHJld3JpdGUgbWFwcGluZyIsCi0JCQkJCTEyOCwJCS8qIGFyYml0cmFyeSBpbml0aWFs IHNpemUgKi8KLQkJCQkJJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwg SEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChSZXdyaXRlTWFwcGluZ0ZpbGUsIHhpZCwK KwkJCQkJICAiTG9naWNhbCByZXdyaXRlIG1hcHBpbmciLAorCQkJCQkgIDEyOCwJCS8qIGFyYml0 cmFyeSBpbml0aWFsIHNpemUgKi8KKwkJCQkJICBzdGF0ZS0+cnNfY3h0KTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVyLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jCmluZGV4IDI0Y2ZhOTZk NzM3Li5mZWU0MGFmYzc2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ3ByZWZldGNoZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJl ZmV0Y2hlci5jCkBAIC0zNjIsMTUgKzM2MiwxMyBAQCBYTG9nUHJlZmV0Y2hlciAqCiBYTG9nUHJl ZmV0Y2hlckFsbG9jYXRlKFhMb2dSZWFkZXJTdGF0ZSAqcmVhZGVyKQogewogCVhMb2dQcmVmZXRj aGVyICpwcmVmZXRjaGVyOwotCUhBU0hDVEwJCWN0bDsKIAogCXByZWZldGNoZXIgPSBwYWxsb2Mw X29iamVjdChYTG9nUHJlZmV0Y2hlcik7CiAJcHJlZmV0Y2hlci0+cmVhZGVyID0gcmVhZGVyOwog Ci0JY3RsLmtleXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3IpOwotCWN0bC5lbnRyeXNpemUg PSBzaXplb2YoWExvZ1ByZWZldGNoZXJGaWx0ZXIpOwotCXByZWZldGNoZXItPmZpbHRlcl90YWJs ZSA9IGhhc2hfY3JlYXRlKCJYTG9nUHJlZmV0Y2hlckZpbHRlclRhYmxlIiwgMTAyNCwKLQkJCQkJ CQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwcmVmZXRjaGVyLT5maWx0 ZXJfdGFibGUgPSBoYXNoX21ha2VfY3h0KFhMb2dQcmVmZXRjaGVyRmlsdGVyLCBybG9jYXRvciwK KwkJCQkJCQkJCQkJICJYTG9nUHJlZmV0Y2hlckZpbHRlclRhYmxlIiwgMTAyNCwKKwkJCQkJCQkJ CQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCWRsaXN0X2luaXQoJnByZWZldGNoZXItPmZpbHRlcl9x dWV1ZSk7CiAKIAlTaGFyZWRTdGF0cy0+d2FsX2Rpc3RhbmNlID0gMDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggNWZiZTM5MTMzYjguLmQxMWU0MmM5NDkwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwpAQCAtMjcsNiArMjcsNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRl ICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKIAogCkBAIC0xMzEsMTUgKzEzMiw5IEBAIGxvZ19pbnZhbGlkX3BhZ2Uo UmVsRmlsZUxvY2F0b3IgbG9jYXRvciwgRm9ya051bWJlciBmb3Jrbm8sIEJsb2NrTnVtYmVyIGJs a25vLAogCWlmIChpbnZhbGlkX3BhZ2VfdGFiID09IE5VTEwpCiAJewogCQkvKiBjcmVhdGUgaGFz aCB0YWJsZSB3aGVuIGZpcnN0IG5lZWRlZCAqLwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtl eXNpemUgPSBzaXplb2YoeGxfaW52YWxpZF9wYWdlX2tleSk7Ci0JCWN0bC5lbnRyeXNpemUgPSBz aXplb2YoeGxfaW52YWxpZF9wYWdlKTsKLQotCQlpbnZhbGlkX3BhZ2VfdGFiID0gaGFzaF9jcmVh dGUoIlhMT0cgaW52YWxpZC1wYWdlIHRhYmxlIiwKLQkJCQkJCQkJCSAgIDEwMCwKLQkJCQkJCQkJ CSAgICZjdGwsCi0JCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJaW52YWxp ZF9wYWdlX3RhYiA9IGhhc2hfbWFrZV9jeHQoeGxfaW52YWxpZF9wYWdlLCBrZXksCisJCQkJCQkJ CQkJICJYTE9HIGludmFsaWQtcGFnZSB0YWJsZSIsIDEwMCwKKwkJCQkJCQkJCQkgVG9wTWVtb3J5 Q29udGV4dCk7CiAJfQogCiAJLyogd2UgY3VycmVudGx5IGFzc3VtZSB4bF9pbnZhbGlkX3BhZ2Vf a2V5IGNvbnRhaW5zIG5vIHBhZGRpbmcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfZW51bS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKaW5kZXggMzNhNDYx NDg0ZDQuLjg2YzhiYWRhNTU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Vu dW0uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYwpAQCAtMjY3LDE1ICsyNjcs OSBAQCBFbnVtVmFsdWVzRGVsZXRlKE9pZCBlbnVtVHlwZU9pZCkKIHN0YXRpYyB2b2lkCiBpbml0 X3VuY29tbWl0dGVkX2VudW1fdHlwZXModm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQot CWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBz aXplb2YoT2lkKTsKLQloYXNoX2N0bC5oY3h0ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0OwotCXVu Y29tbWl0dGVkX2VudW1fdHlwZXMgPSBoYXNoX2NyZWF0ZSgiVW5jb21taXR0ZWQgZW51bSB0eXBl cyIsCi0JCQkJCQkJCQkJIDMyLAotCQkJCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJCQkJIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXVuY29tbWl0dGVkX2VudW1f dHlwZXMgPSBoYXNoc2V0X21ha2VfY3h0KE9pZCwKKwkJCQkJCQkJCQkJICAiVW5jb21taXR0ZWQg ZW51bSB0eXBlcyIsIDMyLAorCQkJCQkJCQkJCQkgIFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiB9 CiAKIC8qCkBAIC0yODQsMTUgKzI3OCw5IEBAIGluaXRfdW5jb21taXR0ZWRfZW51bV90eXBlcyh2 b2lkKQogc3RhdGljIHZvaWQKIGluaXRfdW5jb21taXR0ZWRfZW51bV92YWx1ZXModm9pZCkKIHsK LQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsK LQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5oY3h0ID0gVG9w VHJhbnNhY3Rpb25Db250ZXh0OwotCXVuY29tbWl0dGVkX2VudW1fdmFsdWVzID0gaGFzaF9jcmVh dGUoIlVuY29tbWl0dGVkIGVudW0gdmFsdWVzIiwKLQkJCQkJCQkJCQkgIDMyLAotCQkJCQkJCQkJ CSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hf Q09OVEVYVCk7CisJdW5jb21taXR0ZWRfZW51bV92YWx1ZXMgPSBoYXNoc2V0X21ha2VfY3h0KE9p ZCwKKwkJCQkJCQkJCQkJICAgIlVuY29tbWl0dGVkIGVudW0gdmFsdWVzIiwgMzIsCisJCQkJCQkJ CQkJCSAgIFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX2luaGVyaXRzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2lu aGVyaXRzLmMKaW5kZXggY2VmODA2MzMxNTcuLjUzNzc2OWIzOWFlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX2luaGVyaXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19pbmhlcml0cy5jCkBAIC0yNTYsMTkgKzI1NiwxMiBAQCBmaW5kX2FsbF9pbmhlcml0b3JzKE9p ZCBwYXJlbnRyZWxJZCwgTE9DS01PREUgbG9ja21vZGUsIExpc3QgKipudW1wYXJlbnRzKQogewog CS8qIGhhc2ggdGFibGUgZm9yIE8oMSkgcmVsX29pZCAtPiByZWxfbnVtcGFyZW50cyBjZWxsIGxv b2t1cCAqLwogCUhUQUIJICAgKnNlZW5fcmVsczsKLQlIQVNIQ1RMCQljdGw7CiAJTGlzdAkgICAq cmVsc19saXN0LAogCQkJICAgKnJlbF9udW1wYXJlbnRzOwogCUxpc3RDZWxsICAgKmw7CiAKLQlj dGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2VlblJl bHNFbnRyeSk7Ci0JY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCXNlZW5fcmVs cyA9IGhhc2hfY3JlYXRlKCJmaW5kX2FsbF9pbmhlcml0b3JzIHRlbXBvcmFyeSB0YWJsZSIsCi0J CQkJCQkJMzIsIC8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KLQkJCQkJCQkmY3RsLAotCQkJ CQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXNlZW5fcmVscyA9 IGhhc2hfbWFrZShTZWVuUmVsc0VudHJ5LCByZWxfaWQsCisJCQkJCQkgICJmaW5kX2FsbF9pbmhl cml0b3JzIHRlbXBvcmFyeSB0YWJsZSIsIDMyKTsKIAogCS8qCiAJICogV2UgYnVpbGQgYSBsaXN0 IHN0YXJ0aW5nIHdpdGggdGhlIGdpdmVuIHJlbCBhbmQgYWRkaW5nIGFsbCBkaXJlY3QgYW5kCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3RvcmFnZS5jCmluZGV4IGU0NDNhNDk5M2M1Li5kYjNlMDgzMTliNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zdG9yYWdlLmMKQEAgLTkwLDE1ICs5MCw5IEBAIEFkZFBlbmRpbmdTeW5jKGNvbnN0IFJlbEZp bGVMb2NhdG9yICpybG9jYXRvcikKIAogCS8qIGNyZWF0ZSB0aGUgaGFzaCBpZiBub3QgeWV0ICov CiAJaWYgKCFwZW5kaW5nU3luY0hhc2gpCi0JewotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtl eXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3IpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9m KFBlbmRpbmdSZWxTeW5jKTsKLQkJY3RsLmhjeHQgPSBUb3BUcmFuc2FjdGlvbkNvbnRleHQ7Ci0J CXBlbmRpbmdTeW5jSGFzaCA9IGhhc2hfY3JlYXRlKCJwZW5kaW5nIHN5bmMgaGFzaCIsIDE2LCAm Y3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK LQl9CisJCXBlbmRpbmdTeW5jSGFzaCA9IGhhc2hfbWFrZV9jeHQoUGVuZGluZ1JlbFN5bmMsIHJs b2NhdG9yLAorCQkJCQkJCQkJCSJwZW5kaW5nIHN5bmMgaGFzaCIsIDE2LAorCQkJCQkJCQkJCVRv cFRyYW5zYWN0aW9uQ29udGV4dCk7CiAKIAlwZW5kaW5nID0gaGFzaF9zZWFyY2gocGVuZGluZ1N5 bmNIYXNoLCBybG9jYXRvciwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKIAlBc3NlcnQoIWZvdW5kKTsK QEAgLTYwMCw3ICs1OTQsNiBAQCB2b2lkCiBTZXJpYWxpemVQZW5kaW5nU3luY3MoU2l6ZSBtYXhT aXplLCBjaGFyICpzdGFydEFkZHJlc3MpCiB7CiAJSFRBQgkgICAqdG1waGFzaDsKLQlIQVNIQ1RM CQljdGw7CiAJSEFTSF9TRVFfU1RBVFVTIHNjYW47CiAJUGVuZGluZ1JlbFN5bmMgKnN5bmM7CiAJ UGVuZGluZ1JlbERlbGV0ZSAqZGVsZXRlOwpAQCAtNjExLDEyICs2MDQsOCBAQCBTZXJpYWxpemVQ ZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpzdGFydEFkZHJlc3MpCiAJCWdvdG8gdGVy bWluYXRlOwogCiAJLyogQ3JlYXRlIHRlbXBvcmFyeSBoYXNoIHRvIGNvbGxlY3QgYWN0aXZlIHJl bGZpbGVsb2NhdG9ycyAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsK LQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQljdGwuaGN4dCA9IEN1 cnJlbnRNZW1vcnlDb250ZXh0OwotCXRtcGhhc2ggPSBoYXNoX2NyZWF0ZSgidG1wIHJlbGZpbGVs b2NhdG9ycyIsCi0JCQkJCQkgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5jSGFzaCks ICZjdGwsCi0JCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwor CXRtcGhhc2ggPSBoYXNoc2V0X21ha2UoUmVsRmlsZUxvY2F0b3IsICJ0bXAgcmVsZmlsZWxvY2F0 b3JzIiwKKwkJCQkJCSAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5jSGFzaCkpOwog CiAJLyogY29sbGVjdCBhbGwgcmxvY2F0b3IgZnJvbSBwZW5kaW5nIHN5bmNzICovCiAJaGFzaF9z ZXFfaW5pdCgmc2NhbiwgcGVuZGluZ1N5bmNIYXNoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDVj OWE1NmMzZDQwLi4wYzIxZjUyODQ5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv YXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCkBAIC03MzcsMjEgKzcz NywxNSBAQCBpbml0R2xvYmFsQ2hhbm5lbFRhYmxlKHZvaWQpCiBzdGF0aWMgdm9pZAogaW5pdExv Y2FsQ2hhbm5lbFRhYmxlKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KIAkvKiBRdWlj ayBleGl0IGlmIHdlIGFscmVhZHkgZGlkIHRoaXMgKi8KIAlpZiAobG9jYWxDaGFubmVsVGFibGUg IT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJLyogSW5pdGlhbGl6ZSBsb2NhbCBoYXNoIHRhYmxlIGZv ciB0aGlzIGJhY2tlbmQncyBsaXN0ZW5lZCBjaGFubmVscyAqLwotCWhhc2hfY3RsLmtleXNpemUg PSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoQ2hhbm5lbE5hbWUp OwotCiAJbG9jYWxDaGFubmVsVGFibGUgPQotCQloYXNoX2NyZWF0ZSgiTG9jYWwgTGlzdGVuIENo YW5uZWxzIiwKLQkJCQkJNjQsCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFT SF9TVFJJTkdTKTsKKwkJaGFzaF9tYWtlX2N4dChDaGFubmVsTmFtZSwgY2hhbm5lbCwgIkxvY2Fs IExpc3RlbiBDaGFubmVscyIsCisJCQkJCSAgNjQsCisJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7 CiB9CiAKIC8qCkBAIC03NjMsMjAgKzc1NywxMyBAQCBpbml0TG9jYWxDaGFubmVsVGFibGUodm9p ZCkKIHN0YXRpYyB2b2lkCiBpbml0UGVuZGluZ0xpc3RlbkFjdGlvbnModm9pZCkKIHsKLQlIQVNI Q1RMCQloYXNoX2N0bDsKLQogCWlmIChwZW5kaW5nTGlzdGVuQWN0aW9ucyAhPSBOVUxMKQogCQly ZXR1cm47CiAKLQloYXNoX2N0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50 cnlzaXplID0gc2l6ZW9mKFBlbmRpbmdMaXN0ZW5FbnRyeSk7Ci0JaGFzaF9jdGwuaGN4dCA9IEN1 clRyYW5zYWN0aW9uQ29udGV4dDsKLQogCXBlbmRpbmdMaXN0ZW5BY3Rpb25zID0KLQkJaGFzaF9j cmVhdGUoIlBlbmRpbmcgTGlzdGVuIEFjdGlvbnMiLAotCQkJCQlsaXN0X2xlbmd0aChwZW5kaW5n QWN0aW9ucy0+YWN0aW9ucyksCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFT SF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChQZW5kaW5nTGlzdGVu RW50cnksIGNoYW5uZWwsICJQZW5kaW5nIExpc3RlbiBBY3Rpb25zIiwKKwkJCQkJICBsaXN0X2xl bmd0aChwZW5kaW5nQWN0aW9ucy0+YWN0aW9ucyksCisJCQkJCSAgQ3VyVHJhbnNhY3Rpb25Db250 ZXh0KTsKIH0KIAogLyoKQEAgLTMxNzEsMzEgKzMxNTgsMjEgQEAgQWRkRXZlbnRUb1BlbmRpbmdO b3RpZmllcyhOb3RpZmljYXRpb24gKm4pCiAJaWYgKGxpc3RfbGVuZ3RoKHBlbmRpbmdOb3RpZmll cy0+ZXZlbnRzKSA+PSBNSU5fSEFTSEFCTEVfTk9USUZJRVMgJiYKIAkJcGVuZGluZ05vdGlmaWVz LT5oYXNodGFiID09IE5VTEwpCiAJewotCQlIQVNIQ1RMCQloYXNoX2N0bDsKIAkJTGlzdENlbGwg ICAqbDsKIAogCQkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgKi8KLQkJaGFzaF9jdGwua2V5c2l6 ZSA9IHNpemVvZihOb3RpZmljYXRpb24gKik7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihzdHJ1Y3QgTm90aWZpY2F0aW9uSGFzaCk7Ci0JCWhhc2hfY3RsLmhhc2ggPSBub3RpZmljYXRp b25faGFzaDsKLQkJaGFzaF9jdGwubWF0Y2ggPSBub3RpZmljYXRpb25fbWF0Y2g7Ci0JCWhhc2hf Y3RsLmhjeHQgPSBDdXJUcmFuc2FjdGlvbkNvbnRleHQ7CiAJCXBlbmRpbmdOb3RpZmllcy0+aGFz aHRhYiA9Ci0JCQloYXNoX2NyZWF0ZSgiUGVuZGluZyBOb3RpZmllcyIsCi0JCQkJCQkyNTZMLAot CQkJCQkJJmhhc2hfY3RsLAotCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hf Q09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJCQloYXNoX21ha2VfZm5fY3h0KHN0cnVjdCBOb3Rp ZmljYXRpb25IYXNoLCBldmVudCwKKwkJCQkJCQkgIlBlbmRpbmcgTm90aWZpZXMiLCAyNTYsCisJ CQkJCQkJIG5vdGlmaWNhdGlvbl9oYXNoLCBub3RpZmljYXRpb25fbWF0Y2gsCisJCQkJCQkJIEN1 clRyYW5zYWN0aW9uQ29udGV4dCk7CiAKIAkJLyogQ3JlYXRlIHRoZSB1bmlxdWUgY2hhbm5lbCBu YW1lIHRhYmxlICovCiAJCUFzc2VydChwZW5kaW5nTm90aWZpZXMtPnVuaXF1ZUNoYW5uZWxIYXNo ID09IE5VTEwpOwotCQloYXNoX2N0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JCWhhc2hfY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihDaGFubmVsTmFtZSk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBDdXJU cmFuc2FjdGlvbkNvbnRleHQ7CiAJCXBlbmRpbmdOb3RpZmllcy0+dW5pcXVlQ2hhbm5lbEhhc2gg PQotCQkJaGFzaF9jcmVhdGUoIlBlbmRpbmcgTm90aWZ5IENoYW5uZWwgTmFtZXMiLAotCQkJCQkJ NjRMLAotCQkJCQkJJmhhc2hfY3RsLAotCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwg SEFTSF9DT05URVhUKTsKKwkJCWhhc2hfbWFrZV9jeHQoQ2hhbm5lbE5hbWUsIGNoYW5uZWwsICJQ ZW5kaW5nIE5vdGlmeSBDaGFubmVsIE5hbWVzIiwKKwkJCQkJCSAgNjRMLAorCQkJCQkJICBDdXJU cmFuc2FjdGlvbkNvbnRleHQpOwogCiAJCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3Rp bmcgZXZlbnRzICovCiAJCWZvcmVhY2gobCwgcGVuZGluZ05vdGlmaWVzLT5ldmVudHMpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMKaW5kZXggNWI4NmE3Mjc1ODcuLmViMWE3ZWNmZWJjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHJlcGFyZS5jCkBAIC0zNzEsMTUgKzM3MSw5IEBAIEV2YWx1YXRlUGFyYW1zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgUHJlcGFyZWRTdGF0ZW1lbnQgKnBzdG10LCBMaXN0ICpwYXJhbXMsCiBzdGF0 aWMgdm9pZAogSW5pdFF1ZXJ5SGFzaFRhYmxlKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7 Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50cnlzaXpl ID0gc2l6ZW9mKFByZXBhcmVkU3RhdGVtZW50KTsKLQotCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNo X2NyZWF0ZSgiUHJlcGFyZWQgUXVlcmllcyIsCi0JCQkJCQkJCSAgIDMyLAotCQkJCQkJCQkgICAm aGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJcHJlcGFy ZWRfcXVlcmllcyA9IGhhc2hfbWFrZV9jeHQoUHJlcGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwK KwkJCQkJCQkJCSAiUHJlcGFyZWQgUXVlcmllcyIsIDMyLAorCQkJCQkJCQkJIFRvcE1lbW9yeUNv bnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVu Y2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggZTFiODA4YmJiNjAu LjVhMjY4M2MwNzM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTExMTMsMTMgKzExMTMs OSBAQCBsb2NrX2FuZF9vcGVuX3NlcXVlbmNlKFNlcVRhYmxlIHNlcSkKIHN0YXRpYyB2b2lkCiBj cmVhdGVfc2VxX2hhc2h0YWJsZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQotCWN0bC5rZXlz aXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihTZXFUYWJsZURhdGEp OwotCi0Jc2VxaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJTZXF1ZW5jZSB2YWx1ZXMiLCAxNiwgJmN0 bCwKLQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJc2VxaGFzaHRhYiA9IGhhc2hf bWFrZV9jeHQoU2VxVGFibGVEYXRhLCByZWxpZCwKKwkJCQkJCQkgICAiU2VxdWVuY2UgdmFsdWVz IiwgMTYsCisJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCmluZGV4IGNkNmQ3MjAzODZmLi5jNDRkNTY3NjU3ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKQEAgLTIxNzgsMTkgKzIxNzgsOSBAQCBFeGVjdXRlVHJ1bmNhdGVHdXRz KExpc3QgKmV4cGxpY2l0X3JlbHMsCiAKIAkJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlh bGl6ZSBoYXNodGFibGUgZm9yIGZvcmVpZ24gdGFibGVzICovCiAJCQlpZiAoIWZ0X2h0YWIpCi0J CQl7Ci0JCQkJSEFTSENUTAkJaGN0bDsKLQotCQkJCW1lbXNldCgmaGN0bCwgMCwgc2l6ZW9mKEhB U0hDVEwpKTsKLQkJCQloY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJCQloY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihGb3JlaWduVHJ1bmNhdGVJbmZvKTsKLQkJCQloY3RsLmhjeHQgPSBDdXJy ZW50TWVtb3J5Q29udGV4dDsKLQotCQkJCWZ0X2h0YWIgPSBoYXNoX2NyZWF0ZSgiVFJVTkNBVEUg Zm9yIEZvcmVpZ24gVGFibGVzIiwKLQkJCQkJCQkJCSAgMzIsCS8qIHN0YXJ0IHNtYWxsIGFuZCBl eHRlbmQgKi8KLQkJCQkJCQkJCSAgJmhjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOwotCQkJfQorCQkJCWZ0X2h0YWIgPSBoYXNoX21ha2UoRm9y ZWlnblRydW5jYXRlSW5mbywgc2VydmVyaWQsCisJCQkJCQkJCQkiVFJVTkNBVEUgZm9yIEZvcmVp Z24gVGFibGVzIiwKKwkJCQkJCQkJCTMyKTsJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwog CiAJCQkvKiBGaW5kIG9yIGNyZWF0ZSBjYWNoZWQgZW50cnkgZm9yIHRoZSBmb3JlaWduIHRhYmxl ICovCiAJCQlmdF9pbmZvID0gaGFzaF9zZWFyY2goZnRfaHRhYiwgJnNlcnZlcmlkLCBIQVNIX0VO VEVSLCAmZm91bmQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAz MjdjMjdhYmZmOS4uN2E5NWNhNzMxOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jCkBAIC01MzQ5LDE1ICs1MzQ5LDkgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlU YWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAjZW5kaWYKIAlpZiAobnJl bHMgPj0gTVRfTlJFTFNfSEFTSCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9m KE1UVGFyZ2V0UmVsTG9va3VwKTsKLQkJaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250 ZXh0OwogCQltdHN0YXRlLT5tdF9yZXN1bHRPaWRIYXNoID0KLQkJCWhhc2hfY3JlYXRlKCJNb2Rp ZnlUYWJsZSB0YXJnZXQgaGFzaCIsCi0JCQkJCQlucmVscywgJmhhc2hfY3RsLAotCQkJCQkJSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCQloYXNoX21ha2UoTVRUYXJn ZXRSZWxMb29rdXAsIHJlbGF0aW9uT2lkLAorCQkJCQkgICJNb2RpZnlUYWJsZSB0YXJnZXQgaGFz aCIsIG5yZWxzKTsKIAkJZm9yIChpID0gMDsgaSA8IG5yZWxzOyBpKyspCiAJCXsKIAkJCU9pZAkJ CWhhc2hrZXk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9leHRlbnNpYmxlLmMgYi9z cmMvYmFja2VuZC9ub2Rlcy9leHRlbnNpYmxlLmMKaW5kZXggMGQ0M2Q2NmMxY2QuLmJmMGI5NGQz YzcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9leHRlbnNpYmxlLmMKKysrIGIvc3Jj L2JhY2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRl ICJub2Rlcy9leHRlbnNpYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgorI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIHN0YXRpYyBIVEFCICpleHRlbnNpYmxlX25vZGVfbWV0 aG9kcyA9IE5VTEw7CiBzdGF0aWMgSFRBQiAqY3VzdG9tX3NjYW5fbWV0aG9kcyA9IE5VTEw7CkBA IC00NSwxMyArNDYsOCBAQCBSZWdpc3RlckV4dGVuc2libGVOb2RlRW50cnkoSFRBQiAqKnBfaHRh YmxlLCBjb25zdCBjaGFyICpodGFibGVfbGFiZWwsCiAKIAlpZiAoKnBfaHRhYmxlID09IE5VTEwp CiAJewotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBFWFROT0RFTkFNRV9NQVhf TEVOOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEV4dGVuc2libGVOb2RlRW50cnkpOwotCi0J CSpwX2h0YWJsZSA9IGhhc2hfY3JlYXRlKGh0YWJsZV9sYWJlbCwgMTAwLCAmY3RsLAotCQkJCQkJ CQlIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCQkqcF9odGFibGUgPSBoYXNoX21ha2VfY3h0 KEV4dGVuc2libGVOb2RlRW50cnksIGV4dG5vZGVuYW1lLAorCQkJCQkJCQkgIGh0YWJsZV9sYWJl bCwgMTAwLCBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAlpZiAoc3RybGVuKGV4dG5vZGVuYW1l KSA+PSBFWFROT0RFTkFNRV9NQVhfTEVOKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5j CmluZGV4IGIyZmJkNmEwODJiLi43M2ViNTcwMjNhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3BsYW5jYXQuYwpAQCAtNzAyLDE5ICs3MDIsMTAgQEAgZ2V0X3JlbGF0aW9uX25vdG51bGxhdHRz KFBsYW5uZXJJbmZvICpyb290LCBSZWxhdGlvbiByZWxhdGlvbikKIAkvKiBjcmVhdGUgdGhlIGhh c2ggdGFibGUgaWYgaXQgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQgKi8KIAlpZiAocm9vdC0+Z2xv Yi0+cmVsX25vdG51bGxhdHRzX2hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhUQUIJICAgKmhhc2h0YWI7 Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE5vdG51bGxIYXNoRW50cnkpOwotCQlo YXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQkJaGFzaHRhYiA9IGhhc2hf Y3JlYXRlKCJSZWxhdGlvbiBOT1QgTlVMTCBhdHRudW1zIiwKLQkJCQkJCQkgIDY0TCwJLyogYXJi aXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwotCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCSAgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7Ci0KLQkJcm9vdC0+Z2xvYi0+cmVs X25vdG51bGxhdHRzX2hhc2ggPSBoYXNodGFiOworCQlyb290LT5nbG9iLT5yZWxfbm90bnVsbGF0 dHNfaGFzaCA9CisJCQloYXNoX21ha2UoTm90bnVsbEhhc2hFbnRyeSwgcmVsaWQsCisJCQkJCSAg IlJlbGF0aW9uIE5PVCBOVUxMIGF0dG51bXMiLAorCQkJCQkgIDY0TCk7CQkvKiBhcmJpdHJhcnkg aW5pdGlhbCBzaXplICovCiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3ByZWR0ZXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVz dC5jCmluZGV4IGZlMTU4ODFhZjRlLi4xMjgwNjc5YWIyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wcmVkdGVzdC5jCkBAIC0yMTE4LDEyICsyMTE4LDkgQEAgbG9va3VwX3Byb29mX2NhY2hl KE9pZCBwcmVkX29wLCBPaWQgY2xhdXNlX29wLCBib29sIHJlZnV0ZV9pdCkKIAlpZiAoT3ByUHJv b2ZDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlh bGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUg PSBzaXplb2YoT3ByUHJvb2ZDYWNoZUtleSk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoT3By UHJvb2ZDYWNoZUVudHJ5KTsKLQkJT3ByUHJvb2ZDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiQnRy ZWUgcHJvb2YgbG9va3VwIGNhY2hlIiwgMjU2LAotCQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMpOworCQlPcHJQcm9vZkNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoT3ByUHJv b2ZDYWNoZUVudHJ5LCBrZXksCisJCQkJCQkJCQkJICAiQnRyZWUgcHJvb2YgbG9va3VwIGNhY2hl IiwgMjU2LAorCQkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkJLyogQXJyYW5nZSB0 byBmbHVzaCBjYWNoZSBvbiBwZ19hbW9wIGNoYW5nZXMgKi8KIAkJQ2FjaGVSZWdpc3RlclN5c2Nh Y2hlQ2FsbGJhY2soQU1PUE9QSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9yZWxub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKaW5k ZXggOTFiY2RhMzRhMzcuLmM2ODY0NTg2OTYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9yZWxub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVs bm9kZS5jCkBAIC02MTYsMTkgKzYxNiwxMiBAQCBzdGF0aWMgdm9pZAogYnVpbGRfam9pbl9yZWxf aGFzaChQbGFubmVySW5mbyAqcm9vdCkKIHsKIAlIVEFCCSAgICpoYXNodGFiOwotCUhBU0hDVEwJ CWhhc2hfY3RsOwogCUxpc3RDZWxsICAgKmw7CiAKIAkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUg Ki8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFJlbGlkcyk7Ci0JaGFzaF9jdGwuZW50cnlz aXplID0gc2l6ZW9mKEpvaW5IYXNoRW50cnkpOwotCWhhc2hfY3RsLmhhc2ggPSBiaXRtYXBfaGFz aDsKLQloYXNoX2N0bC5tYXRjaCA9IGJpdG1hcF9tYXRjaDsKLQloYXNoX2N0bC5oY3h0ID0gQ3Vy cmVudE1lbW9yeUNvbnRleHQ7Ci0JaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJKb2luUmVsSGFzaFRh YmxlIiwKLQkJCQkJCSAgMjU2TCwKLQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJICBIQVNIX0VM RU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwloYXNo dGFiID0gaGFzaF9tYWtlX2ZuKEpvaW5IYXNoRW50cnksIGpvaW5fcmVsaWRzLAorCQkJCQkJICAg IkpvaW5SZWxIYXNoVGFibGUiLCAyNTYsCisJCQkJCQkgICBiaXRtYXBfaGFzaCwgYml0bWFwX21h dGNoKTsKIAogCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3Rpbmcgam9pbnJlbHMgKi8K IAlmb3JlYWNoKGwsIHJvb3QtPmpvaW5fcmVsX2xpc3QpCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2Vfb3Blci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYwpp bmRleCBhNmI0MDJmMmQ3Yi4uOTY4NjlkNWRmNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9vcGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYwpA QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi dXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAi dXRpbHMvdHlwY2FjaGUuaCIKIApAQCAtMTAyOSwxMiArMTAzMCw5IEBAIGZpbmRfb3Blcl9jYWNo ZV9lbnRyeShPcHJDYWNoZUtleSAqa2V5KQogCWlmIChPcHJDYWNoZUhhc2ggPT0gTlVMTCkKIAl7 CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwot CQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT3ByQ2FjaGVLZXkpOwot CQljdGwuZW50cnlzaXplID0gc2l6ZW9mKE9wckNhY2hlRW50cnkpOwotCQlPcHJDYWNoZUhhc2gg PSBoYXNoX2NyZWF0ZSgiT3BlcmF0b3IgbG9va3VwIGNhY2hlIiwgMjU2LAotCQkJCQkJCQkgICAm Y3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJT3ByQ2FjaGVIYXNoID0gaGFzaF9tYWtl X2N4dChPcHJDYWNoZUVudHJ5LCBrZXksCisJCQkJCQkJCQkgIk9wZXJhdG9yIGxvb2t1cCBjYWNo ZSIsIDI1NiwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBcnJhbmdlIHRv IGZsdXNoIGNhY2hlIG9uIHBnX29wZXJhdG9yIGFuZCBwZ19jYXN0IGNoYW5nZXMgKi8KIAkJQ2Fj aGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soT1BFUk5BTUVOU1AsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0ZGVzYy5jCmluZGV4IGMzZDI3NWY4NzI2Li5kYjI2ZTRhODJiNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRkZXNjLmMKQEAgLTQyNCwxNyArNDI0LDEyIEBAIENyZWF0ZVBhcnRpdGlv bkRpcmVjdG9yeShNZW1vcnlDb250ZXh0IG1jeHQsIGJvb2wgb21pdF9kZXRhY2hlZCkKIHsKIAlN ZW1vcnlDb250ZXh0IG9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWN4dCk7CiAJ UGFydGl0aW9uRGlyZWN0b3J5IHBkaXI7Ci0JSEFTSENUTAkJY3RsOwogCiAJcGRpciA9IHBhbGxv Y19vYmplY3QoUGFydGl0aW9uRGlyZWN0b3J5RGF0YSk7CiAJcGRpci0+cGRpcl9tY3h0ID0gbWN4 dDsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSk7Ci0JY3RsLmhjeHQgPSBtY3h0OwotCi0JcGRpci0+ cGRpcl9oYXNoID0gaGFzaF9jcmVhdGUoInBhcnRpdGlvbiBkaXJlY3RvcnkiLCAyNTYsICZjdGws Ci0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJcGRp ci0+cGRpcl9oYXNoID0gaGFzaF9tYWtlX2N4dChQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSwgcmVs b2lkLAorCQkJCQkJCQkJInBhcnRpdGlvbiBkaXJlY3RvcnkiLCAyNTYsIG1jeHQpOwogCXBkaXIt Pm9taXRfZGV0YWNoZWQgPSBvbWl0X2RldGFjaGVkOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCA2OTVlMTg3 YmExMS4uYjY1NWUyNjQzODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC05 MDQsNyArOTA0LDYgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAlNZW1vcnlD b250ZXh0IG5ld2N4dDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlNZW1vcnlDb250ZXh0IHRt cGN4dDsKLQlIQVNIQ1RMCQloY3RsOwogCWludAkJCXNjb3JlOwogCWludAkJCW5lbGVtczsKIAlI VEFCCSAgICpkYmhhc2g7CkBAIC05MzQsMTIgKzkzMywxMCBAQCByZWJ1aWxkX2RhdGFiYXNlX2xp c3QoT2lkIG5ld2RiKQogCSAqIHNjb3JlLCBhbmQgZmluYWxseSBwdXQgdGhlIGFycmF5IGVsZW1l bnRzIGludG8gdGhlIG5ldyBkb3VibHkgbGlua2VkCiAJICogbGlzdC4KIAkgKi8KLQloY3RsLmtl eXNpemUgPSBzaXplb2YoT2lkKTsKLQloY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihhdmxfZGJhc2Up OwotCWhjdGwuaGN4dCA9IHRtcGN4dDsKLQlkYmhhc2ggPSBoYXNoX2NyZWF0ZSgiYXV0b3ZhY3V1 bSBkYiBoYXNoIiwgMjAsICZoY3RsLAkvKiBtYWdpYyBudW1iZXIgaGVyZQotCQkJCQkJCQkJCQkJ CQkJICogRklYTUUgKi8KLQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05U RVhUKTsKKwlkYmhhc2ggPSBoYXNoX21ha2VfY3h0KGF2bF9kYmFzZSwgYWRsX2RhdGlkLAorCQkJ CQkJICAgImF1dG92YWN1dW0gZGIgaGFzaCIsCisJCQkJCQkgICAyMCwJLyogbWFnaWMgbnVtYmVy IGhlcmUgRklYTUUgKi8KKwkJCQkJCSAgIHRtcGN4dCk7CiAKIAkvKiBzdGFydCBieSBpbnNlcnRp bmcgdGhlIG5ldyBkYXRhYmFzZSAqLwogCXNjb3JlID0gMDsKQEAgLTE4ODEsNyArMTg3OCw2IEBA IGRvX2F1dG92YWN1dW0odm9pZCkKIAlGb3JtX3BnX2RhdGFiYXNlIGRiRm9ybTsKIAlMaXN0CSAg ICp0YWJsZV9vaWRzID0gTklMOwogCUxpc3QJICAgKm9ycGhhbl9vaWRzID0gTklMOwotCUhBU0hD VEwJCWN0bDsKIAlIVEFCCSAgICp0YWJsZV90b2FzdF9tYXA7CiAJTGlzdENlbGwgICAqdm9sYXRp bGUgY2VsbDsKIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7CkBAIC0xOTU0LDEzICsx OTUwLDkgQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCXBnX2NsYXNzX2Rlc2MgPSBDcmVhdGVUdXBs ZURlc2NDb3B5KFJlbGF0aW9uR2V0RGVzY3IoY2xhc3NSZWwpKTsKIAogCS8qIGNyZWF0ZSBoYXNo IHRhYmxlIGZvciB0b2FzdCA8LT4gbWFpbiByZWxpZCBtYXBwaW5nICovCi0JY3RsLmtleXNpemUg PSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKGF2X3JlbGF0aW9uKTsKLQot CXRhYmxlX3RvYXN0X21hcCA9IGhhc2hfY3JlYXRlKCJUT0FTVCB0byBtYWluIHJlbGlkIG1hcCIs Ci0JCQkJCQkJCSAgMTAwLAotCQkJCQkJCQkgICZjdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyk7CisJdGFibGVfdG9hc3RfbWFwID0gaGFzaF9tYWtlX2N4dChhdl9yZWxhdGlv biwgYXJfdG9hc3RyZWxpZCwKKwkJCQkJCQkJCSJUT0FTVCB0byBtYWluIHJlbGlkIG1hcCIsIDEw MCwKKwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoKIAkgKiBTY2FuIHBnX2NsYXNz IHRvIGRldGVybWluZSB3aGljaCB0YWJsZXMgdG8gdmFjdXVtLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Y2hlY2twb2ludGVyLmMKaW5kZXggM2M5ODJjNmZmYWMuLmE0YWY0N2IwODY2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAgLTEzMDksNyArMTMwOSw2IEBAIENvbXBhY3RD aGVja3BvaW50ZXJSZXF1ZXN0UXVldWUodm9pZCkKIAlpbnQJCQludW1fcmVxdWVzdHM7CiAJaW50 CQkJcmVhZF9pZHgsCiAJCQkJd3JpdGVfaWR4OwotCUhBU0hDVEwJCWN0bDsKIAlIVEFCCSAgICpo dGFiOwogCWJvb2wJICAgKnNraXBfc2xvdDsKIApAQCAtMTMyOSwxNCArMTMyOCw5IEBAIENvbXBh Y3RDaGVja3BvaW50ZXJSZXF1ZXN0UXVldWUodm9pZCkKIAloZWFkID0gQ2hlY2twb2ludGVyU2ht ZW0tPmhlYWQ7CiAKIAkvKiBJbml0aWFsaXplIHRlbXBvcmFyeSBoYXNoIHRhYmxlICovCi0JY3Rs LmtleXNpemUgPSBzaXplb2YoQ2hlY2twb2ludGVyUmVxdWVzdCk7Ci0JY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihzdHJ1Y3QgQ2hlY2twb2ludGVyU2xvdE1hcHBpbmcpOwotCWN0bC5oY3h0ID0gQ3Vy cmVudE1lbW9yeUNvbnRleHQ7Ci0KLQlodGFiID0gaGFzaF9jcmVhdGUoIkNvbXBhY3RDaGVja3Bv aW50ZXJSZXF1ZXN0UXVldWUiLAotCQkJCQkgICBDaGVja3BvaW50ZXJTaG1lbS0+bnVtX3JlcXVl c3RzLAotCQkJCQkgICAmY3RsLAotCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFT SF9DT05URVhUKTsKKwlodGFiID0gaGFzaF9tYWtlKHN0cnVjdCBDaGVja3BvaW50ZXJTbG90TWFw cGluZywgcmVxdWVzdCwKKwkJCQkJICJDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVlIiwK KwkJCQkJIENoZWNrcG9pbnRlclNobWVtLT5udW1fcmVxdWVzdHMpOwogCiAJLyoKIAkgKiBUaGUg YmFzaWMgaWRlYSBoZXJlIGlzIHRoYXQgYSByZXF1ZXN0IGNhbiBiZSBza2lwcGVkIGlmIGl0J3Mg Zm9sbG93ZWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMKaW5kZXggZDc4NjkzZmZhOGUuLjUwNzc1N2RiN2ViIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYwpAQCAtNDg3LDE2ICs0ODcsOSBAQCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25J ZCB4aWQpCiAJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBzdGF0ZSBoYXNodGFibGUuICovCiAJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFzaCkK IAl7Ci0JCUhBU0hDVEwJCWN0bDsKLQotCQlNZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOwot CQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkpOwotCQljdGwuaGN4dCA9IEFwcGx5Q29u dGV4dDsKLQotCQlQYXJhbGxlbEFwcGx5VHhuSGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzaCIsCi0JCQkJCQkJCQkJICAgMTYs ICZjdGwsCi0JCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7CisJCVBhcmFsbGVsQXBwbHlUeG5IYXNoID0gaGFzaF9tYWtlX2N4dChQYXJhbGxlbEFwcGx5 V29ya2VyRW50cnksIHhpZCwKKwkJCQkJCQkJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgaGFzaCIsCisJCQkJCQkJCQkJCSAxNiwgQXBwbHlDb250ZXh0KTsK IAl9CiAKIAkvKiBDcmVhdGUgYW4gZW50cnkgZm9yIHRoZSByZXF1ZXN0ZWQgdHJhbnNhY3Rpb24u ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9u LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKaW5kZXggMGIx ZDgwYjViMGYuLmZjZjI5NWYxZGYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9yZWxhdGlvbi5jCkBAIC0xMDUsOCArMTA1LDYgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW52YWxp ZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF9y ZWxtYXBfaW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQogCWlmICghTG9naWNhbFJlcFJl bE1hcENvbnRleHQpCiAJCUxvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0KIAkJCUFsbG9jU2V0Q29u dGV4dENyZWF0ZShDYWNoZU1lbW9yeUNvbnRleHQsCkBAIC0xMTQsMTIgKzExMiw5IEBAIGxvZ2lj YWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIAkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVT KTsKIAogCS8qIEluaXRpYWxpemUgdGhlIHJlbGF0aW9uIGhhc2ggdGFibGUuICovCi0JY3RsLmtl eXNpemUgPSBzaXplb2YoTG9naWNhbFJlcFJlbElkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9m KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSk7Ci0JY3RsLmhjeHQgPSBMb2dpY2FsUmVwUmVsTWFwQ29u dGV4dDsKLQotCUxvZ2ljYWxSZXBSZWxNYXAgPSBoYXNoX2NyZWF0ZSgibG9naWNhbHJlcCByZWxh dGlvbiBtYXAgY2FjaGUiLCAxMjgsICZjdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCUxvZ2ljYWxSZXBSZWxNYXAgPSBoYXNoX21ha2VfY3h0 KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSwgcmVtb3RlcmVsLnJlbW90ZWlkLAorCQkJCQkJCQkJICJs b2dpY2FscmVwIHJlbGF0aW9uIG1hcCBjYWNoZSIsIDEyOCwKKwkJCQkJCQkJCSBMb2dpY2FsUmVw UmVsTWFwQ29udGV4dCk7CiAKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9uIGV2ZW50cy4gKi8K IAlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlk YXRlX2NiLApAQCAtNjExLDggKzYwNiw2IEBAIGxvZ2ljYWxyZXBfcGFydG1hcF9yZXNldF9yZWxt YXAoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpCiBzdGF0aWMgdm9pZAogbG9naWNhbHJl cF9wYXJ0bWFwX2luaXQodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAlpZiAoIUxvZ2ljYWxS ZXBQYXJ0TWFwQ29udGV4dCkKIAkJTG9naWNhbFJlcFBhcnRNYXBDb250ZXh0ID0KIAkJCUFsbG9j U2V0Q29udGV4dENyZWF0ZShDYWNoZU1lbW9yeUNvbnRleHQsCkBAIC02MjAsMTIgKzYxMyw5IEBA IGxvZ2ljYWxyZXBfcGFydG1hcF9pbml0KHZvaWQpCiAJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVM VF9TSVpFUyk7CiAKIAkvKiBJbml0aWFsaXplIHRoZSByZWxhdGlvbiBoYXNoIHRhYmxlLiAqLwot CWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7CS8qIHBhcnRpdGlvbiBPSUQgKi8KLQljdGwuZW50 cnlzaXplID0gc2l6ZW9mKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkpOwotCWN0bC5oY3h0ID0gTG9n aWNhbFJlcFBhcnRNYXBDb250ZXh0OwotCi0JTG9naWNhbFJlcFBhcnRNYXAgPSBoYXNoX2NyZWF0 ZSgibG9naWNhbHJlcCBwYXJ0aXRpb24gbWFwIGNhY2hlIiwgNjQsICZjdGwsCi0JCQkJCQkJCQlI QVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlMb2dpY2FsUmVwUGFydE1h cCA9IGhhc2hfbWFrZV9jeHQoTG9naWNhbFJlcFBhcnRNYXBFbnRyeSwgcGFydG9pZCwKKwkJCQkJ CQkJCSAgImxvZ2ljYWxyZXAgcGFydGl0aW9uIG1hcCBjYWNoZSIsIDY0LAorCQkJCQkJCQkJICBM b2dpY2FsUmVwUGFydE1hcENvbnRleHQpOwogCiAJLyogV2F0Y2ggZm9yIGludmFsaWRhdGlvbiBl dmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2sobG9naWNhbHJlcF9wYXJ0 bWFwX2ludmFsaWRhdGVfY2IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVvcmRlcmJ1ZmZlci5jCmluZGV4IDRjMjMwYmNjOGU0Li5mOGI4ZjhjNjJjNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTMyNSw3 ICszMjUsNiBAQCBSZW9yZGVyQnVmZmVyICoKIFJlb3JkZXJCdWZmZXJBbGxvY2F0ZSh2b2lkKQog ewogCVJlb3JkZXJCdWZmZXIgKmJ1ZmZlcjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlNZW1vcnlD b250ZXh0IG5ld19jdHg7CiAKIAlBc3NlcnQoTXlSZXBsaWNhdGlvblNsb3QgIT0gTlVMTCk7CkBA IC0zMzgsOCArMzM3LDYgQEAgUmVvcmRlckJ1ZmZlckFsbG9jYXRlKHZvaWQpCiAJYnVmZmVyID0K IAkJKFJlb3JkZXJCdWZmZXIgKikgTWVtb3J5Q29udGV4dEFsbG9jKG5ld19jdHgsIHNpemVvZihS ZW9yZGVyQnVmZmVyKSk7CiAKLQltZW1zZXQoJmhhc2hfY3RsLCAwLCBzaXplb2YoaGFzaF9jdGwp KTsKLQogCWJ1ZmZlci0+Y29udGV4dCA9IG5ld19jdHg7CiAKIAlidWZmZXItPmNoYW5nZV9jb250 ZXh0ID0gU2xhYkNvbnRleHRDcmVhdGUobmV3X2N0eCwKQEAgLTM2OCwxMiArMzY1LDggQEAgUmVv cmRlckJ1ZmZlckFsbG9jYXRlKHZvaWQpCiAJCQkJCQkJCQkJCQkgIFNMQUJfREVGQVVMVF9CTE9D S19TSVpFLAogCQkJCQkJCQkJCQkJICBTTEFCX0RFRkFVTFRfQkxPQ0tfU0laRSk7CiAKLQloYXNo X2N0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVyVFhOQnlJZEVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9IGJ1 ZmZlci0+Y29udGV4dDsKLQotCWJ1ZmZlci0+YnlfdHhuID0gaGFzaF9jcmVhdGUoIlJlb3JkZXJC dWZmZXJCeVhpZCIsIDEwMDAsICZoYXNoX2N0bCwKLQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWJ1ZmZlci0+YnlfdHhuID0gaGFzaF9tYWtlX2N4dChS ZW9yZGVyQnVmZmVyVFhOQnlJZEVudCwgeGlkLAorCQkJCQkJCQkgICAiUmVvcmRlckJ1ZmZlckJ5 WGlkIiwgMTAwMCwgYnVmZmVyLT5jb250ZXh0KTsKIAogCWJ1ZmZlci0+YnlfdHhuX2xhc3RfeGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJYnVmZmVyLT5ieV90eG5fbGFzdF90eG4gPSBOVUxM OwpAQCAtMTgzNywyMiArMTgzMCwxNyBAQCBzdGF0aWMgdm9pZAogUmVvcmRlckJ1ZmZlckJ1aWxk VHVwbGVDaWRIYXNoKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCiB7 CiAJZGxpc3RfaXRlcglpdGVyOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJaWYgKCFyYnR4bl9o YXNfY2F0YWxvZ19jaGFuZ2VzKHR4bikgfHwgZGxpc3RfaXNfZW1wdHkoJnR4bi0+dHVwbGVjaWRz KSkKIAkJcmV0dXJuOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVy VHVwbGVDaWRLZXkpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVy VHVwbGVDaWRFbnQpOwotCWhhc2hfY3RsLmhjeHQgPSByYi0+Y29udGV4dDsKLQogCS8qCiAJICog Y3JlYXRlIHRoZSBoYXNoIHdpdGggdGhlIGV4YWN0IG51bWJlciBvZiB0by1iZS1zdG9yZWQgdHVw bGVjaWRzIGZyb20KIAkgKiB0aGUgc3RhcnQKIAkgKi8KIAl0eG4tPnR1cGxlY2lkX2hhc2ggPQot CQloYXNoX2NyZWF0ZSgiUmVvcmRlckJ1ZmZlclR1cGxlQ2lkIiwgdHhuLT5udHVwbGVjaWRzLCAm aGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwor CQloYXNoX21ha2VfY3h0KFJlb3JkZXJCdWZmZXJUdXBsZUNpZEVudCwga2V5LAorCQkJCQkgICJS ZW9yZGVyQnVmZmVyVHVwbGVDaWQiLCB0eG4tPm50dXBsZWNpZHMsIHJiLT5jb250ZXh0KTsKIAog CWRsaXN0X2ZvcmVhY2goaXRlciwgJnR4bi0+dHVwbGVjaWRzKQogCXsKQEAgLTQ5NzYsMTUgKzQ5 NjQsMTAgQEAgU3RhcnR1cFJlb3JkZXJCdWZmZXIodm9pZCkKIHN0YXRpYyB2b2lkCiBSZW9yZGVy QnVmZmVyVG9hc3RJbml0SGFzaChSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAq dHhuKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJQXNzZXJ0KHR4bi0+dG9hc3RfaGFzaCA9 PSBOVUxMKTsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5l bnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclRvYXN0RW50KTsKLQloYXNoX2N0bC5oY3h0 ID0gcmItPmNvbnRleHQ7Ci0JdHhuLT50b2FzdF9oYXNoID0gaGFzaF9jcmVhdGUoIlJlb3JkZXJC dWZmZXJUb2FzdEhhc2giLCA1LCAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJdHhuLT50b2FzdF9oYXNoID0gaGFzaF9tYWtlX2N4 dChSZW9yZGVyQnVmZmVyVG9hc3RFbnQsIGNodW5rX2lkLAorCQkJCQkJCQkJIlJlb3JkZXJCdWZm ZXJUb2FzdEhhc2giLCA1LCByYi0+Y29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCBmNDlhNDg1MmVjYi4uYTgzZTUwOWYy MDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAt MTE4LDYgKzExOCw3IEBACiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRpbHMv c25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCkBAIC0zOTAsMTIgKzM5MSw5 IEBAIFByb2Nlc3NTeW5jaW5nVGFibGVzRm9yQXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikK IAkgKi8KIAlpZiAodGFibGVfc3RhdGVzX25vdF9yZWFkeSAhPSBOSUwgJiYgIWxhc3Rfc3RhcnRf dGltZXMpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihzdHJ1Y3QgdGFibGVzeW5jX3N0YXJ0X3RpbWVf bWFwcGluZyk7Ci0JCWxhc3Rfc3RhcnRfdGltZXMgPSBoYXNoX2NyZWF0ZSgiTG9naWNhbCByZXBs aWNhdGlvbiB0YWJsZSBzeW5jIHdvcmtlciBzdGFydCB0aW1lcyIsCi0JCQkJCQkJCQkgICAyNTYs ICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlsYXN0X3N0YXJ0X3RpbWVzID0gaGFz aF9tYWtlX2N4dChzdHJ1Y3QgdGFibGVzeW5jX3N0YXJ0X3RpbWVfbWFwcGluZywgcmVsaWQsCisJ CQkJCQkJCQkJICJMb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmMgd29ya2VyIHN0YXJ0IHRp bWVzIiwKKwkJCQkJCQkJCQkgMjU2LCBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggODU3ZWJmN2Q2 ZmIuLjEzMmI1MmUzNjExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKQEAgLTE5NzQsNyArMTk3NCw2IEBAIHBnb3V0cHV0X3N0cmVhbV9wcmVwYXJlX3R4 bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiBzdGF0aWMgdm9pZAogaW5pdF9yZWxfc3lu Y19jYWNoZShNZW1vcnlDb250ZXh0IGNhY2hlY3R4KQogewotCUhBU0hDVEwJCWN0bDsKIAlzdGF0 aWMgYm9vbCByZWxhdGlvbl9jYWxsYmFja3NfcmVnaXN0ZXJlZCA9IGZhbHNlOwogCiAJLyogTm90 aGluZyB0byBkbyBpZiBoYXNoIHRhYmxlIGFscmVhZHkgZXhpc3RzICovCkBAIC0xOTgyLDEzICsx OTgxLDkgQEAgaW5pdF9yZWxfc3luY19jYWNoZShNZW1vcnlDb250ZXh0IGNhY2hlY3R4KQogCQly ZXR1cm47CiAKIAkvKiBNYWtlIGEgbmV3IGhhc2ggdGFibGUgZm9yIHRoZSBjYWNoZSAqLwotCWN0 bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxhdGlv blN5bmNFbnRyeSk7Ci0JY3RsLmhjeHQgPSBjYWNoZWN0eDsKLQotCVJlbGF0aW9uU3luY0NhY2hl ID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwgcmVwbGljYXRpb24gb3V0cHV0IHJlbGF0aW9uIGNhY2hl IiwKLQkJCQkJCQkJCTEyOCwgJmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQ09OVEVY VCB8IEhBU0hfQkxPQlMpOworCVJlbGF0aW9uU3luY0NhY2hlID0gaGFzaF9tYWtlX2N4dChSZWxh dGlvblN5bmNFbnRyeSwgcmVsaWQsCisJCQkJCQkJCQkgICJsb2dpY2FsIHJlcGxpY2F0aW9uIG91 dHB1dCByZWxhdGlvbiBjYWNoZSIsCisJCQkJCQkJCQkgIDEyOCwgY2FjaGVjdHgpOwogCiAJQXNz ZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9IE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2J1Zl90YWJsZS5jCmluZGV4IDIzZDg1ZmQzMmUyLi45NTY1Mzk0NGE5ZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMKQEAgLTUwLDE5ICs1MCwxNiBAQCBCdWZUYWJsZVNo bWVtU2l6ZShpbnQgc2l6ZSkKIHZvaWQKIEluaXRCdWZUYWJsZShpbnQgc2l6ZSkKIHsKLQlIQVNI Q1RMCQlpbmZvOworCUhBU0hPUFRTCW9wdHMgPSB7MH07CiAKIAkvKiBhc3N1bWUgbm8gbG9ja2lu ZyBpcyBuZWVkZWQgeWV0ICovCiAKIAkvKiBCdWZmZXJUYWcgbWFwcyB0byBCdWZmZXIgKi8KLQlp bmZvLmtleXNpemUgPSBzaXplb2YoQnVmZmVyVGFnKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVv ZihCdWZmZXJMb29rdXBFbnQpOwotCWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fQlVGRkVSX1BB UlRJVElPTlM7Ci0KLQlTaGFyZWRCdWZIYXNoID0gU2htZW1Jbml0SGFzaCgiU2hhcmVkIEJ1ZmZl ciBMb29rdXAgVGFibGUiLAotCQkJCQkJCQkgIHNpemUsIHNpemUsCi0JCQkJCQkJCSAgJmluZm8s Ci0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfUEFSVElUSU9OIHwgSEFT SF9GSVhFRF9TSVpFKTsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0gTlVNX0JVRkZFUl9QQVJUSVRJ T05TOworCW9wdHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJU2hhcmVkQnVmSGFzaCA9IHNobWVtX2hh c2hfbWFrZV9leHQoQnVmZmVyTG9va3VwRW50LCBrZXksCisJCQkJCQkJCQkJIlNoYXJlZCBCdWZm ZXIgTG9va3VwIFRhYmxlIiwKKwkJCQkJCQkJCQlzaXplLCBzaXplLCAmb3B0cyk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwppbmRleCA0MDRjNmJjY2JkZC4uN2Y1 ZjFmYjBhYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVm LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwpAQCAtNzI4LDcg KzcyOCw2IEBAIHN0YXRpYyB2b2lkCiBJbml0TG9jYWxCdWZmZXJzKHZvaWQpCiB7CiAJaW50CQkJ bmJ1ZnMgPSBudW1fdGVtcF9idWZmZXJzOwotCUhBU0hDVEwJCWluZm87CiAJaW50CQkJaTsKIAog CS8qCkBAIC03NzksMTMgKzc3OCw5IEBAIEluaXRMb2NhbEJ1ZmZlcnModm9pZCkKIAl9CiAKIAkv KiBDcmVhdGUgdGhlIGxvb2t1cCBoYXNoIHRhYmxlICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9m KEJ1ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoTG9jYWxCdWZmZXJMb29rdXBF bnQpOwotCi0JTG9jYWxCdWZIYXNoID0gaGFzaF9jcmVhdGUoIkxvY2FsIEJ1ZmZlciBMb29rdXAg VGFibGUiLAotCQkJCQkJCSAgIG5idWZzLAotCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCSAgIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCUxvY2FsQnVmSGFzaCA9IGhhc2hfbWFrZV9jeHQoTG9j YWxCdWZmZXJMb29rdXBFbnQsIGtleSwKKwkJCQkJCQkJICJMb2NhbCBCdWZmZXIgTG9va3VwIFRh YmxlIiwgbmJ1ZnMsCisJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCWlmICghTG9jYWxC dWZIYXNoKQogCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGluaXRpYWxpemUgbG9jYWwgYnVmZmVy IGhhc2ggdGFibGUiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWlu aXQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYwppbmRleCAyNWZhMjE1MTMw OS4uMjZlODEwZTZiNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWlu aXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvcmVpbml0LmMKQEAgLTE3NSw3ICsx NzUsNiBAQCBSZXNldFVubG9nZ2VkUmVsYXRpb25zSW5EYnNwYWNlRGlyKGNvbnN0IGNoYXIgKmRi c3BhY2VkaXJuYW1lLCBpbnQgb3ApCiAJaWYgKChvcCAmIFVOTE9HR0VEX1JFTEFUSU9OX0NMRUFO VVApICE9IDApCiAJewogCQlIVEFCCSAgICpoYXNoOwotCQlIQVNIQ1RMCQljdGw7CiAKIAkJLyoK IAkJICogSXQncyBwb3NzaWJsZSB0aGF0IHNvbWVvbmUgY291bGQgY3JlYXRlIGEgdG9uIG9mIHVu bG9nZ2VkIHJlbGF0aW9ucwpAQCAtMTg0LDExICsxODMsOCBAQCBSZXNldFVubG9nZ2VkUmVsYXRp b25zSW5EYnNwYWNlRGlyKGNvbnN0IGNoYXIgKmRic3BhY2VkaXJuYW1lLCBpbnQgb3ApCiAJCSAq IG5lZWQgdG8gYmUgcmVzZXQuICBPdGhlcndpc2UsIHRoaXMgY2xlYW51cCBvcGVyYXRpb24gd291 bGQgYmUKIAkJICogTyhuXjIpLgogCQkgKi8KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsK LQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZih1bmxvZ2dlZF9yZWxhdGlvbl9lbnRyeSk7Ci0JCWN0 bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JCWhhc2ggPSBoYXNoX2NyZWF0ZSgidW5s b2dnZWQgcmVsYXRpb24gT0lEcyIsIDMyLCAmY3RsLAotCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCWhhc2ggPSBoYXNoX21ha2UodW5sb2dnZWRfcmVs YXRpb25fZW50cnksIHJlbG51bWJlciwKKwkJCQkJCSAidW5sb2dnZWQgcmVsYXRpb24gT0lEcyIs IDMyKTsKIAogCQkvKiBTY2FuIHRoZSBkaXJlY3RvcnkuICovCiAJCWRic3BhY2VfZGlyID0gQWxs b2NhdGVEaXIoZGJzcGFjZWRpcm5hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggNTVl NGE1NDIxZGUuLjA4MzQ5ODAzZTI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTI3Myw4 ICsyNzMsNiBAQCBTaG1lbUFkZHJJc1ZhbGlkKGNvbnN0IHZvaWQgKmFkZHIpCiB2b2lkCiBJbml0 U2htZW1JbmRleCh2b2lkKQogewotCUhBU0hDVEwJCWluZm87Ci0KIAkvKgogCSAqIENyZWF0ZSB0 aGUgc2hhcmVkIG1lbW9yeSBzaG1lbSBpbmRleC4KIAkgKgpAQCAtMjgzLDEzICsyODEsOCBAQCBJ bml0U2htZW1JbmRleCh2b2lkKQogCSAqIGluaXRpYWxpemluZyB0aGUgU2htZW1JbmRleCBpdHNl bGYuICBUaGUgc3BlY2lhbCAiU2htZW1JbmRleCIgaGFzaAogCSAqIHRhYmxlIG5hbWUgd2lsbCB0 ZWxsIFNobWVtSW5pdFN0cnVjdCB0byBmYWtlIGl0LgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IFNI TUVNX0lOREVYX0tFWVNJWkU7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoU2htZW1JbmRleEVu dCk7Ci0KLQlTaG1lbUluZGV4ID0gU2htZW1Jbml0SGFzaCgiU2htZW1JbmRleCIsCi0JCQkJCQkJ ICAgU0hNRU1fSU5ERVhfU0laRSwgU0hNRU1fSU5ERVhfU0laRSwKLQkJCQkJCQkgICAmaW5mbywK LQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCVNobWVtSW5kZXggPSBzaG1l bV9oYXNoX21ha2UoU2htZW1JbmRleEVudCwga2V5LCAiU2htZW1JbmRleCIsCisJCQkJCQkJCSBT SE1FTV9JTkRFWF9TSVpFLCBTSE1FTV9JTkRFWF9TSVpFKTsKIH0KIAogLyoKQEAgLTM1OCw2ICsz NTEsMjggQEAgU2htZW1Jbml0SGFzaChjb25zdCBjaGFyICpuYW1lLAkJLyogdGFibGUgc3RyaW5n IG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAJcmV0dXJuIGhhc2hfY3JlYXRlKG5hbWUsIGluaXRf c2l6ZSwgaW5mb1AsIGhhc2hfZmxhZ3MpOwogfQogCisvKgorICogSW1wbGVtZW50YXRpb24gZnVu Y3Rpb24gZm9yIHNobWVtX2hhc2hfbWFrZSBtYWNyb3MuCisgKgorICogQ3JlYXRlcyBhIHNoYXJl ZCBtZW1vcnkgaGFzaCB0YWJsZSB3aXRoIHNpbXBsaWZpZWQgcGFyYW1ldGVycy4KKyAqIFBhc3Mg TlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRlZmF1bHRzLgorICovCitIVEFCICoKK3NobWVtX2hh c2hfbWFrZV9pbXBsKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IGluaXRfc2l6ZSwgaW50NjQgbWF4 X3NpemUsCisJCQkJCSBTaXplIGtleXNpemUsIFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19r ZXksCisJCQkJCSBjb25zdCBIQVNIT1BUUyAqb3B0cykKK3sKKwlIQVNIQ1RMCQljdGw7CisJaW50 CQkJZmxhZ3M7CisKKwkvKiBTaGFyZWQgbWVtb3J5IGhhc2ggdGFibGVzIHVzZSBTaG1lbUFsbG9j Tm9FcnJvciwgbm90IGEgY3VzdG9tIGFsbG9jYXRvciAqLworCUFzc2VydChvcHRzID09IE5VTEwg fHwgb3B0cy0+YWxsb2MgPT0gTlVMTCk7CisKKwloYXNoX29wdHNfaW5pdCgmY3RsLCAmZmxhZ3Ms IGtleXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5nX2tleSwgb3B0cyk7CisKKwlyZXR1cm4gU2htZW1J bml0SGFzaChuYW1lLCBpbml0X3NpemUsIG1heF9zaXplLCAmY3RsLCBmbGFncyk7Cit9CisKIC8q CiAgKiBTaG1lbUluaXRTdHJ1Y3QgLS0gQ3JlYXRlL2F0dGFjaCB0byBhIHN0cnVjdHVyZSBpbiBz aGFyZWQgbWVtb3J5LgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0 YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBmM2FkOTBj N2M3YS4uMWM0MWQ1MWY5ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0 YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTMyLDYg KzMyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9o c2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCisjaW5jbHVkZSAi dXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRl ICJ1dGlscy90aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCkBAIC05Niw3 ICs5Nyw2IEBAIHZvaWQKIEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCkK IHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJ QXNzZXJ0KFJlY292ZXJ5TG9ja0hhc2ggPT0gTlVMTCk7CS8qIGRvbid0IHJ1biB0aGlzIHR3aWNl ICovCiAKQEAgLTEwNCwxOCArMTA0LDEyIEBAIEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJv bm1lbnQodm9pZCkKIAkgKiBJbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlcyBmb3IgdHJhY2tpbmcg dGhlIGxvY2tzIGhlbGQgYnkgZWFjaAogCSAqIHRyYW5zYWN0aW9uLgogCSAqLwotCWhhc2hfY3Rs LmtleXNpemUgPSBzaXplb2YoeGxfc3RhbmRieV9sb2NrKTsKLQloYXNoX2N0bC5lbnRyeXNpemUg PSBzaXplb2YoUmVjb3ZlcnlMb2NrRW50cnkpOwotCVJlY292ZXJ5TG9ja0hhc2ggPSBoYXNoX2Ny ZWF0ZSgiUmVjb3ZlcnlMb2NrSGFzaCIsCi0JCQkJCQkJCSAgIDY0LAotCQkJCQkJCQkgICAmaGFz aF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwotCWhhc2hfY3RsLmtl eXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKFJlY292ZXJ5TG9ja1hpZEVudHJ5KTsKLQlSZWNvdmVyeUxvY2tYaWRIYXNoID0gaGFzaF9j cmVhdGUoIlJlY292ZXJ5TG9ja1hpZEhhc2giLAotCQkJCQkJCQkJICA2NCwKLQkJCQkJCQkJCSAg Jmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlSZWNvdmVy eUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChSZWNvdmVyeUxvY2tFbnRyeSwga2V5LAorCQkJCQkJ CQkJICJSZWNvdmVyeUxvY2tIYXNoIiwgNjQsCisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7 CisJUmVjb3ZlcnlMb2NrWGlkSGFzaCA9IGhhc2hfbWFrZV9jeHQoUmVjb3ZlcnlMb2NrWGlkRW50 cnksIHhpZCwKKwkJCQkJCQkJCQkiUmVjb3ZlcnlMb2NrWGlkSGFzaCIsIDY0LAorCQkJCQkJCQkJ CVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNoYXJlZCBpbnZhbGlk YXRpb24gbWFuYWdlbWVudCBmb3IgU3RhcnR1cCBwcm9jZXNzLCBiZWluZwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sb2NrLmMKaW5kZXggZDkzMGM2NmNkYmQuLjkxOTExYWE4YTJkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sb2NrLmMKQEAgLTQ0Myw3ICs0NDMsNyBAQCBzdGF0aWMgdm9pZCBHZXRTaW5nbGVQcm9jQmxv Y2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9ja2VkX3Byb2MsCiB2b2lkCiBMb2NrTWFuYWdlclNo bWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWluZm87CisJSEFTSE9QVFMJb3B0czsKIAlpbnQ2 NAkJaW5pdF90YWJsZV9zaXplLAogCQkJCW1heF90YWJsZV9zaXplOwogCWJvb2wJCWZvdW5kOwpA QCAtNDU5LDE1ICs0NTksMTEgQEAgTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCkKIAkgKiBBbGxv Y2F0ZSBoYXNoIHRhYmxlIGZvciBMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXItbG9ja2Vk LW9iamVjdAogCSAqIGluZm9ybWF0aW9uLgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihM T0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihMT0NLKTsKLQlpbmZvLm51bV9wYXJ0 aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tNZXRob2RMb2NrSGFzaCA9IFNo bWVtSW5pdEhhc2goIkxPQ0sgaGFzaCIsCi0JCQkJCQkJCQkgICBpbml0X3RhYmxlX3NpemUsCi0J CQkJCQkJCQkgICBtYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCQkJ ICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfUEFSVElUSU9OKTsKKwlNZW1TZXQoJm9w dHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BB UlRJVElPTlM7CisJTG9ja01ldGhvZExvY2tIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChMT0NL LCB0YWcsICJMT0NLIGhhc2giLAorCQkJCQkJCQkJCQkgaW5pdF90YWJsZV9zaXplLCBtYXhfdGFi bGVfc2l6ZSwKKwkJCQkJCQkJCQkJICZvcHRzKTsKIAogCS8qIEFzc3VtZSBhbiBhdmVyYWdlIG9m IDIgaG9sZGVycyBwZXIgbG9jayAqLwogCW1heF90YWJsZV9zaXplICo9IDI7CkBAIC00NzcsMTYg KzQ3MywxMiBAQCBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2gg dGFibGUgZm9yIFBST0NMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcwogCSAqIHBlci1sb2NrLXBl ci1ob2xkZXIgaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBST0NM T0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQUk9DTE9DSyk7Ci0JaW5mby5oYXNo ID0gcHJvY2xvY2tfaGFzaDsKLQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElU SU9OUzsKLQotCUxvY2tNZXRob2RQcm9jTG9ja0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUk9DTE9D SyBoYXNoIiwKLQkJCQkJCQkJCQkgICBpbml0X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAgbWF4 X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAgJmluZm8sCi0JCQkJCQkJCQkJICAgSEFTSF9FTEVN IHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfUEFSVElUSU9OKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNp emVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0gcHJvY2xvY2tfaGFzaDsKKwlvcHRzLm51bV9wYXJ0 aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKKwlMb2NrTWV0aG9kUHJvY0xvY2tIYXNoID0g c2htZW1faGFzaF9tYWtlX2V4dChQUk9DTE9DSywgdGFnLCAiUFJPQ0xPQ0sgaGFzaCIsCisJCQkJ CQkJCQkJCQkgaW5pdF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJCSAm b3B0cyk7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGZhc3QtcGF0aCBzdHJ1Y3R1cmVzLgpAQCAtNTA4 LDE1ICs1MDAsOSBAQCBJbml0TG9ja01hbmFnZXJBY2Nlc3Modm9pZCkKIAkgKiBBbGxvY2F0ZSBu b24tc2hhcmVkIGhhc2ggdGFibGUgZm9yIExPQ0FMTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMg bG9jawogCSAqIGNvdW50cyBhbmQgcmVzb3VyY2Ugb3duZXIgaW5mb3JtYXRpb24uCiAJICovCi0J SEFTSENUTAkJaW5mbzsKLQotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihMT0NBTExPQ0tUQUcpOwot CWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExPQ0FMTE9DSyk7Ci0KLQlMb2NrTWV0aG9kTG9jYWxI YXNoID0gaGFzaF9jcmVhdGUoIkxPQ0FMTE9DSyBoYXNoIiwKLQkJCQkJCQkJCSAgMTYsCi0JCQkJ CQkJCQkgICZpbmZvLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlMb2Nr TWV0aG9kTG9jYWxIYXNoID0gaGFzaF9tYWtlX2N4dChMT0NBTExPQ0ssIHRhZywKKwkJCQkJCQkJ CQkiTE9DQUxMT0NLIGhhc2giLCAxNiwKKwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIH0K IAogCkBAIC0zMzk0LDIwICszMzgwLDEzIEBAIENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2 b2lkKQogCQlib29sCQl4YWN0TG9jazsJLyogaXMgYW55IGxvY2ttb2RlIGhlbGQgYXQgeGFjdCBs ZXZlbD8gKi8KIAl9IFBlckxvY2tUYWdFbnRyeTsKIAotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUhU QUIJICAgKmxvY2todGFiOwogCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CiAJTE9DQUxMT0NLICAq bG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEgbG9jYWwgaGFzaCB0YWJsZSBrZXllZCBieSBMT0NL VEFHIG9ubHkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKExPQ0tUQUcpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZXJMb2NrVGFnRW50cnkpOwotCWhhc2hfY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCWxvY2todGFiID0gaGFzaF9jcmVhdGUoIkNoZWNr Rm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJsZSIsCi0JCQkJCQkgICAyNTYsIC8qIGFyYml0cmFy eSBpbml0aWFsIHNpemUgKi8KLQkJCQkJCSAgICZoYXNoX2N0bCwKLQkJCQkJCSAgIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWxvY2todGFiID0gaGFzaF9tYWtlKFBl ckxvY2tUYWdFbnRyeSwgbG9jaywKKwkJCQkJCSAiQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tz IHRhYmxlIiwgMjU2KTsKIAogCS8qIFNjYW4gbG9jYWwgbG9jayB0YWJsZSB0byBmaW5kIGVudHJp ZXMgZm9yIGVhY2ggTE9DS1RBRyAqLwogCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhv ZExvY2FsSGFzaCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2Nr LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKaW5kZXggNDkzODJkZTg4ZmMu Ljc3Yzc3MTJjYzYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2Nr LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCkBAIC0yODYsNyArMjg2 LDYgQEAgc3RhdGljIGx3bG9ja19zdGF0cyAqIGdldF9sd2xvY2tfc3RhdHNfZW50cnkoTFdMb2Nr ICpsb2NrKTsKIHN0YXRpYyB2b2lkCiBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogewotCUhBU0hD VEwJCWN0bDsKIAlzdGF0aWMgTWVtb3J5Q29udGV4dCBsd2xvY2tfc3RhdHNfY3h0ID0gTlVMTDsK IAlzdGF0aWMgYm9vbCBleGl0X3JlZ2lzdGVyZWQgPSBmYWxzZTsKIApAQCAtMzA2LDExICszMDUs OCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVM VF9TSVpFUyk7CiAJTWVtb3J5Q29udGV4dEFsbG93SW5Dcml0aWNhbFNlY3Rpb24obHdsb2NrX3N0 YXRzX2N4dCwgdHJ1ZSk7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihsd2xvY2tfc3RhdHNfa2V5 KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKGx3bG9ja19zdGF0cyk7Ci0JY3RsLmhjeHQgPSBs d2xvY2tfc3RhdHNfY3h0OwotCWx3bG9ja19zdGF0c19odGFiID0gaGFzaF9jcmVhdGUoImx3bG9j ayBzdGF0cyIsIDE2Mzg0LCAmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJbHdsb2NrX3N0YXRzX2h0YWIgPSBoYXNoX21ha2VfY3h0KGx3bG9j a19zdGF0cywga2V5LAorCQkJCQkJCQkJICAibHdsb2NrIHN0YXRzIiwgMTYzODQsIGx3bG9ja19z dGF0c19jeHQpOwogCWlmICghZXhpdF9yZWdpc3RlcmVkKQogCXsKIAkJb25fc2htZW1fZXhpdChw cmludF9sd2xvY2tfc3RhdHMsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmlu ZGV4IGVkYWJiZjRjYTMxLi4zMTZjYTJjMjY5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVk aWNhdGUuYwpAQCAtMjEyLDYgKzIxMiw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3Mu aCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgog I2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50Lmgi CkBAIC0xMTU1LDcgKzExNTYsNyBAQCBDaGVja1BvaW50UHJlZGljYXRlKHZvaWQpCiB2b2lkCiBQ cmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiB7Ci0JSEFTSENUTAkJaW5mbzsKKwlIQVNIT1BU UwlvcHRzOwogCWludDY0CQltYXhfdGFibGVfc2l6ZTsKIAlTaXplCQlyZXF1ZXN0U2l6ZTsKIAli b29sCQlmb3VuZDsKQEAgLTExNzQsMTYgKzExNzUsMTMgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5p dCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFBSRURJQ0FURUxPQ0tUQVJHRVQg c3RydWN0cy4gIFRoaXMgc3RvcmVzCiAJICogcGVyLXByZWRpY2F0ZS1sb2NrLXRhcmdldCBpbmZv cm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdF VFRBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVCk7Ci0J aW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlM7Ci0KLQlQ cmVkaWNhdGVMb2NrVGFyZ2V0SGFzaCA9IFNobWVtSW5pdEhhc2goIlBSRURJQ0FURUxPQ0tUQVJH RVQgaGFzaCIsCi0JCQkJCQkJCQkJCW1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJCQltYXhfdGFi bGVfc2l6ZSwKLQkJCQkJCQkJCQkJJmluZm8sCi0JCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfAotCQkJCQkJCQkJCQlIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7CisJ TWVtU2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOworCW9wdHMubnVtX3BhcnRpdGlvbnMgPSBO VU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOworCW9wdHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJ UHJlZGljYXRlTG9ja1RhcmdldEhhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0KFBSRURJQ0FURUxP Q0tUQVJHRVQsIHRhZywKKwkJCQkJCQkJCQkJCSAgIlBSRURJQ0FURUxPQ0tUQVJHRVQgaGFzaCIs CisJCQkJCQkJCQkJCQkgIG1heF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJ CQkJCSAgJm9wdHMpOwogCiAJLyoKIAkgKiBSZXNlcnZlIGEgZHVtbXkgZW50cnkgaW4gdGhlIGhh c2ggdGFibGU7IHdlIHVzZSBpdCB0byBtYWtlIHN1cmUgdGhlcmUncwpAQCAtMTIwNiwyMCArMTIw NCwxNyBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJICogQWxsb2NhdGUgaGFzaCB0 YWJsZSBmb3IgUFJFRElDQVRFTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyCiAJICogeGFj dC1sb2NrLW9mLWEtdGFyZ2V0IGluZm9ybWF0aW9uLgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IHNp emVvZihQUkVESUNBVEVMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQUkVESUNB VEVMT0NLKTsKLQlpbmZvLmhhc2ggPSBwcmVkaWNhdGVsb2NrX2hhc2g7Ci0JaW5mby5udW1fcGFy dGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlM7Ci0KIAkvKiBBc3N1bWUgYW4g YXZlcmFnZSBvZiAyIHhhY3RzIHBlciB0YXJnZXQgKi8KIAltYXhfdGFibGVfc2l6ZSAqPSAyOwog Ci0JUHJlZGljYXRlTG9ja0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLIGhhc2gi LAotCQkJCQkJCQkJICBtYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCSAgbWF4X3RhYmxlX3NpemUs Ci0JCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9O IHwKLQkJCQkJCQkJCSAgSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUpOworCU1lbVNl dCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlvcHRzLmhhc2ggPSBwcmVkaWNhdGVsb2NrX2hh c2g7CisJb3B0cy5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlM7 CisJb3B0cy5maXhlZF9zaXplID0gdHJ1ZTsKKwlQcmVkaWNhdGVMb2NrSGFzaCA9IHNobWVtX2hh c2hfbWFrZV9leHQoUFJFRElDQVRFTE9DSywgdGFnLAorCQkJCQkJCQkJCQkiUFJFRElDQVRFTE9D SyBoYXNoIiwKKwkJCQkJCQkJCQkJbWF4X3RhYmxlX3NpemUsIG1heF90YWJsZV9zaXplLAorCQkJ CQkJCQkJCQkmb3B0cyk7CiAKIAkvKgogCSAqIENvbXB1dGUgc2l6ZSBmb3Igc2VyaWFsaXphYmxl IHRyYW5zYWN0aW9uIGhhc2h0YWJsZS4gTm90ZSB0aGVzZQpAQCAtMTI5MywxNSArMTI4OCwxMiBA QCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJICogQWxsb2NhdGUgaGFzaCB0YWJsZSBm b3IgU0VSSUFMSVpBQkxFWElEIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXIteGlkCiAJICogaW5m b3JtYXRpb24gZm9yIHNlcmlhbGl6YWJsZSB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2ZSBhY2Nlc3Nl ZCBkYXRhLgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSURUQUcp OwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFNFUklBTElaQUJMRVhJRCk7Ci0KLQlTZXJpYWxp emFibGVYaWRIYXNoID0gU2htZW1Jbml0SGFzaCgiU0VSSUFMSVpBQkxFWElEIGhhc2giLAotCQkJ CQkJCQkJCW1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJCW1heF90YWJsZV9zaXplLAotCQkJCQkJ CQkJCSZpbmZvLAotCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJ CUhBU0hfRklYRURfU0laRSk7CisJTWVtU2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOworCW9w dHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJU2VyaWFsaXphYmxlWGlkSGFzaCA9IHNobWVtX2hhc2hf bWFrZV9leHQoU0VSSUFMSVpBQkxFWElELCB0YWcsCisJCQkJCQkJCQkJCSAgIlNFUklBTElaQUJM RVhJRCBoYXNoIiwKKwkJCQkJCQkJCQkJICBtYXhfdGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUs CisJCQkJCQkJCQkJCSAgJm9wdHMpOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdHJh Y2tpbmcgcnctY29uZmxpY3RzIGluIGxpc3RzIGF0dGFjaGVkIHRvIHRoZQpAQCAtMTk0OCwxNiAr MTk0MCwxMiBAQCBHZXRTZXJpYWxpemFibGVUcmFuc2FjdGlvblNuYXBzaG90SW50KFNuYXBzaG90 IHNuYXBzaG90LAogc3RhdGljIHZvaWQKIENyZWF0ZUxvY2FsUHJlZGljYXRlTG9ja0hhc2godm9p ZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQogCS8qIEluaXRpYWxpemUgdGhlIGJhY2tlbmQt bG9jYWwgaGFzaCB0YWJsZSBvZiBwYXJlbnQgbG9ja3MgKi8KIAlBc3NlcnQoTG9jYWxQcmVkaWNh dGVMb2NrSGFzaCA9PSBOVUxMKTsKLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FU RUxPQ0tUQVJHRVRUQUcpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihMT0NBTFBSRURJ Q0FURUxPQ0spOwotCUxvY2FsUHJlZGljYXRlTG9ja0hhc2ggPSBoYXNoX2NyZWF0ZSgiTG9jYWwg cHJlZGljYXRlIGxvY2siLAotCQkJCQkJCQkJCSBtYXhfcHJlZGljYXRlX2xvY2tzX3Blcl94YWN0 LAotCQkJCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOworCUxvY2FsUHJlZGljYXRlTG9ja0hhc2ggPSBoYXNoX21ha2VfY3h0KExPQ0FMUFJFRElD QVRFTE9DSywgdGFnLAorCQkJCQkJCQkJCSAgICJMb2NhbCBwcmVkaWNhdGUgbG9jayIsCisJCQkJ CQkJCQkJICAgbWF4X3ByZWRpY2F0ZV9sb2Nrc19wZXJfeGFjdCwKKwkJCQkJCQkJCQkgICBUb3BN ZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv c21nci9zbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCmluZGV4IDUzOTE2 NDBkODYxLi5lNDhiMzgzYjQ2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdy L3NtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCkBAIC03Myw2ICs3 Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJj aC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKIAogCiAvKgpAQCAtMjUwLDEyICsyNTEsOSBAQCBzbWdyb3BlbihSZWxGaWxlTG9jYXRvciBy bG9jYXRvciwgUHJvY051bWJlciBiYWNrZW5kKQogCWlmIChTTWdyUmVsYXRpb25IYXNoID09IE5V TEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFi bGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVM b2NhdG9yQmFja2VuZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU01nclJlbGF0aW9uRGF0 YSk7Ci0JCVNNZ3JSZWxhdGlvbkhhc2ggPSBoYXNoX2NyZWF0ZSgic21nciByZWxhdGlvbiB0YWJs ZSIsIDQwMCwKLQkJCQkJCQkJCSAgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlT TWdyUmVsYXRpb25IYXNoID0gaGFzaF9tYWtlX2N4dChTTWdyUmVsYXRpb25EYXRhLCBzbWdyX3Js b2NhdG9yLAorCQkJCQkJCQkJCSAic21nciByZWxhdGlvbiB0YWJsZSIsIDQwMCwKKwkJCQkJCQkJ CQkgVG9wTWVtb3J5Q29udGV4dCk7CiAJCWRsaXN0X2luaXQoJnVucGlubmVkX3JlbG5zKTsKIAl9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCmluZGV4IDJjOTY0YjZmM2Q5Li5iOGYzMTM2ZTMxZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCkBAIC0xMzEsOCArMTMxLDYgQEAgSW5pdFN5bmModm9p ZCkKIAkgKi8KIAlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyIHx8IEFtQ2hlY2twb2ludGVyUHJvY2Vz cygpKQogCXsKLQkJSEFTSENUTAkJaGFzaF9jdGw7Ci0KIAkJLyoKIAkJICogWFhYOiBUaGUgY2hl Y2twb2ludGVyIG5lZWRzIHRvIGFkZCBlbnRyaWVzIHRvIHRoZSBwZW5kaW5nIG9wcyB0YWJsZQog CQkgKiB3aGVuIGFic29yYmluZyBmc3luYyByZXF1ZXN0cy4gIFRoYXQgaXMgZG9uZSB3aXRoaW4g YSBjcml0aWNhbApAQCAtMTQ3LDEzICsxNDUsOCBAQCBJbml0U3luYyh2b2lkKQogCQkJCQkJCQkJ CQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCQlNZW1vcnlDb250ZXh0QWxsb3dJbkNyaXRp Y2FsU2VjdGlvbihwZW5kaW5nT3BzQ3h0LCB0cnVlKTsKIAotCQloYXNoX2N0bC5rZXlzaXplID0g c2l6ZW9mKEZpbGVUYWcpOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUGVuZGluZ0Zz eW5jRW50cnkpOwotCQloYXNoX2N0bC5oY3h0ID0gcGVuZGluZ09wc0N4dDsKLQkJcGVuZGluZ09w cyA9IGhhc2hfY3JlYXRlKCJQZW5kaW5nIE9wcyBUYWJsZSIsCi0JCQkJCQkJCSAxMDBMLAotCQkJ CQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hf Q09OVEVYVCk7CisJCXBlbmRpbmdPcHMgPSBoYXNoX21ha2VfY3h0KFBlbmRpbmdGc3luY0VudHJ5 LCB0YWcsCisJCQkJCQkJCSAgICJQZW5kaW5nIE9wcyBUYWJsZSIsIDEwMEwsIHBlbmRpbmdPcHND eHQpOwogCQlwZW5kaW5nVW5saW5rcyA9IE5JTDsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlw YW5hbHl6ZS5jCmluZGV4IDQ4ZWUwNTBlMzdmLi40OWVjNGFiNGRiNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJj aC90c190eXBhbmFseXplLmMKQEAgLTE0OSw3ICsxNDksNiBAQCBjb21wdXRlX3RzdmVjdG9yX3N0 YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAKIAkvKiBUaGlzIGlzIEQgZnJvbSB0aGUgTEMgYWxn b3JpdGhtLiAqLwogCUhUQUIJICAgKmxleGVtZXNfdGFiOwotCUhBU0hDVEwJCWhhc2hfY3RsOwog CUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAogCS8qIFRoaXMgaXMgdGhlIGN1cnJlbnQg YnVja2V0IG51bWJlciBmcm9tIHRoZSBMQyBhbGdvcml0aG0gKi8KQEAgLTE4MCwxNSArMTc5LDkg QEAgY29tcHV0ZV90c3ZlY3Rvcl9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLAogCSAqIHdvcnJ5 IGFib3V0IG92ZXJmbG93aW5nIHRoZSBpbml0aWFsIHNpemUuIEFsc28gd2UgZG9uJ3QgbmVlZCB0 byBwYXkgYW55CiAJICogYXR0ZW50aW9uIHRvIGxvY2tpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50 LgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoTGV4ZW1lSGFzaEtleSk7Ci0JaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFRyYWNrSXRlbSk7Ci0JaGFzaF9jdGwuaGFzaCA9IGxl eGVtZV9oYXNoOwotCWhhc2hfY3RsLm1hdGNoID0gbGV4ZW1lX21hdGNoOwotCWhhc2hfY3RsLmhj eHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQlsZXhlbWVzX3RhYiA9IGhhc2hfY3JlYXRlKCJB bmFseXplZCBsZXhlbWVzIHRhYmxlIiwKLQkJCQkJCQkgIG51bV9tY2VsZW0sCi0JCQkJCQkJICAm aGFzaF9jdGwsCi0JCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01Q QVJFIHwgSEFTSF9DT05URVhUKTsKKwlsZXhlbWVzX3RhYiA9IGhhc2hfbWFrZV9mbihUcmFja0l0 ZW0sIGtleSwKKwkJCQkJCQkgICAiQW5hbHl6ZWQgbGV4ZW1lcyB0YWJsZSIsIG51bV9tY2VsZW0s CisJCQkJCQkJICAgbGV4ZW1lX2hhc2gsIGxleGVtZV9tYXRjaCk7CiAKIAkvKiBJbml0aWFsaXpl IGNvdW50ZXJzLiAqLwogCWJfY3VycmVudCA9IDE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMKaW5kZXggYWNhMmM4ZmM3NDIuLjMzNjEwMTQwZTRhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0xMTksNyArMTE5LDYgQEAgdm9pZAogV2Fp dEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpCiB7CiAJYm9vbAkJZm91bmQ7Ci0JSEFTSENUTAkJ aW5mbzsKIAogCVdhaXRFdmVudEN1c3RvbUNvdW50ZXIgPSAoV2FpdEV2ZW50Q3VzdG9tQ291bnRl ckRhdGEgKikKIAkJU2htZW1Jbml0U3RydWN0KCJXYWl0RXZlbnRDdXN0b21Db3VudGVyRGF0YSIs CkBAIC0xMzMsMjQgKzEzMiwxOCBAQCBXYWl0RXZlbnRDdXN0b21TaG1lbUluaXQodm9pZCkKIAl9 CiAKIAkvKiBpbml0aWFsaXplIG9yIGF0dGFjaCB0aGUgaGFzaCB0YWJsZXMgdG8gc3RvcmUgY3Vz dG9tIHdhaXQgZXZlbnRzICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKHVpbnQzMik7Ci0JaW5m by5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeUluZm8pOwogCVdhaXRF dmVudEN1c3RvbUhhc2hCeUluZm8gPQotCQlTaG1lbUluaXRIYXNoKCJXYWl0RXZlbnRDdXN0b20g aGFzaCBieSB3YWl0IGV2ZW50IGluZm9ybWF0aW9uIiwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RP TV9IQVNIX0lOSVRfU0laRSwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpF LAotCQkJCQkgICZpbmZvLAotCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlzaG1l bV9oYXNoX21ha2UoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeUluZm8sIHdhaXRfZXZlbnRfaW5mbywK KwkJCQkJCSJXYWl0RXZlbnRDdXN0b20gaGFzaCBieSB3YWl0IGV2ZW50IGluZm9ybWF0aW9uIiwK KwkJCQkJCVdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfSU5JVF9TSVpFLAorCQkJCQkJV0FJVF9FVkVO VF9DVVNUT01fSEFTSF9NQVhfU0laRSk7CiAKIAkvKiBrZXkgaXMgYSBOVUxMLXRlcm1pbmF0ZWQg c3RyaW5nICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKGNoYXJbTkFNRURBVEFMRU5dKTsKLQlp bmZvLmVudHJ5c2l6ZSA9IHNpemVvZihXYWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSk7CiAJV2Fp dEV2ZW50Q3VzdG9tSGFzaEJ5TmFtZSA9Ci0JCVNobWVtSW5pdEhhc2goIldhaXRFdmVudEN1c3Rv bSBoYXNoIGJ5IG5hbWUiLAotCQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfSU5JVF9TSVpF LAotCQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfTUFYX1NJWkUsCi0JCQkJCSAgJmluZm8s Ci0JCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkJc2htZW1faGFzaF9tYWtlKFdh aXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lLCB3YWl0X2V2ZW50X25hbWUsCisJCQkJCQkiV2FpdEV2 ZW50Q3VzdG9tIGhhc2ggYnkgbmFtZSIsCisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lO SVRfU0laRSwKKwkJCQkJCVdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfTUFYX1NJWkUpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKaW5kZXggN2JiMDAwZGRi ZDMuLmJkYzdlMjIzN2Y2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlf dHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXpl LmMKQEAgLTIyMyw3ICsyMjMsNiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAq c3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAogCS8qIFRoaXMgaXMgRCBm cm9tIHRoZSBMQyBhbGdvcml0aG0uICovCiAJSFRBQgkgICAqZWxlbWVudHNfdGFiOwotCUhBU0hD VEwJCWVsZW1faGFzaF9jdGw7CiAJSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwogCiAJLyog VGhpcyBpcyB0aGUgY3VycmVudCBidWNrZXQgbnVtYmVyIGZyb20gdGhlIExDIGFsZ29yaXRobSAq LwpAQCAtMjM2LDcgKzIzNSw2IEBAIGNvbXB1dGVfYXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpz dGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0Y2hmdW5jLAogCVRyYWNrSXRlbSAgKml0ZW07 CiAJaW50CQkJc2xvdF9pZHg7CiAJSFRBQgkgICAqY291bnRfdGFiOwotCUhBU0hDVEwJCWNvdW50 X2hhc2hfY3RsOwogCURFQ291bnRJdGVtICpjb3VudF9pdGVtOwogCiAJZXh0cmFfZGF0YSA9IChB cnJheUFuYWx5emVFeHRyYURhdGEgKikgc3RhdHMtPmV4dHJhX2RhdGE7CkBAIC0yNzYsMjQgKzI3 NCwxMyBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVB dHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAkgKiB3b3JyeSBhYm91dCBvdmVyZmxvd2luZyB0aGUg aW5pdGlhbCBzaXplLiBBbHNvIHdlIGRvbid0IG5lZWQgdG8gcGF5IGFueQogCSAqIGF0dGVudGlv biB0byBsb2NraW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4KIAkgKi8KLQllbGVtX2hhc2hfY3Rs LmtleXNpemUgPSBzaXplb2YoRGF0dW0pOwotCWVsZW1faGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKFRyYWNrSXRlbSk7Ci0JZWxlbV9oYXNoX2N0bC5oYXNoID0gZWxlbWVudF9oYXNoOwotCWVs ZW1faGFzaF9jdGwubWF0Y2ggPSBlbGVtZW50X21hdGNoOwotCWVsZW1faGFzaF9jdGwuaGN4dCA9 IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWVsZW1lbnRzX3RhYiA9IGhhc2hfY3JlYXRlKCJBbmFs eXplZCBlbGVtZW50cyB0YWJsZSIsCi0JCQkJCQkJICAgbnVtX21jZWxlbSwKLQkJCQkJCQkgICAm ZWxlbV9oYXNoX2N0bCwKLQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFT SF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwllbGVtZW50c190YWIgPSBoYXNoX21ha2VfZm4o VHJhY2tJdGVtLCBrZXksCisJCQkJCQkJCSJBbmFseXplZCBlbGVtZW50cyB0YWJsZSIsIG51bV9t Y2VsZW0sCisJCQkJCQkJCWVsZW1lbnRfaGFzaCwgZWxlbWVudF9tYXRjaCk7CiAKIAkvKiBoYXNo dGFibGUgZm9yIGFycmF5IGRpc3RpbmN0IGVsZW1lbnRzIGNvdW50cyAqLwotCWNvdW50X2hhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YoaW50KTsKLQljb3VudF9oYXNoX2N0bC5lbnRyeXNpemUgPSBz aXplb2YoREVDb3VudEl0ZW0pOwotCWNvdW50X2hhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5 Q29udGV4dDsKLQljb3VudF90YWIgPSBoYXNoX2NyZWF0ZSgiQXJyYXkgZGlzdGluY3QgZWxlbWVu dCBjb3VudCB0YWJsZSIsCi0JCQkJCQkJNjQsCi0JCQkJCQkJJmNvdW50X2hhc2hfY3RsLAotCQkJ CQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWNvdW50X3RhYiA9 IGhhc2hfbWFrZShERUNvdW50SXRlbSwgY291bnQsCisJCQkJCQkgICJBcnJheSBkaXN0aW5jdCBl bGVtZW50IGNvdW50IHRhYmxlIiwgNjQpOwogCiAJLyogSW5pdGlhbGl6ZSBjb3VudGVycy4gKi8K IAliX2N1cnJlbnQgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24u YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKaW5kZXggMGIxNjEzOTg0NjUuLjc4YWRj YzM4YTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKQEAgLTkzMywxOSArOTMzLDggQEAganNvbl91bmlx dWVfaGFzaF9tYXRjaChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtl eXNpemUpCiBzdGF0aWMgdm9pZAoganNvbl91bmlxdWVfY2hlY2tfaW5pdChKc29uVW5pcXVlQ2hl Y2tTdGF0ZSAqY3h0KQogewotCUhBU0hDVEwJCWN0bDsKLQotCW1lbXNldCgmY3RsLCAwLCBzaXpl b2YoY3RsKSk7Ci0JY3RsLmtleXNpemUgPSBzaXplb2YoSnNvblVuaXF1ZUhhc2hFbnRyeSk7Ci0J Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihKc29uVW5pcXVlSGFzaEVudHJ5KTsKLQljdGwuaGN4dCA9 IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWN0bC5oYXNoID0ganNvbl91bmlxdWVfaGFzaDsKLQlj dGwubWF0Y2ggPSBqc29uX3VuaXF1ZV9oYXNoX21hdGNoOwotCi0JKmN4dCA9IGhhc2hfY3JlYXRl KCJqc29uIG9iamVjdCBoYXNodGFibGUiLAotCQkJCQkgICAzMiwKLQkJCQkJICAgJmN0bCwKLQkJ CQkJICAgSEFTSF9FTEVNIHwgSEFTSF9DT05URVhUIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09N UEFSRSk7CisJKmN4dCA9IGhhc2hzZXRfbWFrZV9mbihKc29uVW5pcXVlSGFzaEVudHJ5LCAianNv biBvYmplY3QgaGFzaHRhYmxlIiwgMzIsCisJCQkJCQkgICBqc29uX3VuaXF1ZV9oYXNoLCBqc29u X3VuaXF1ZV9oYXNoX21hdGNoKTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u ZnVuY3MuYwppbmRleCBkNWI2NGQ3ZmNhNS4uMjIzMGI0MmViYWUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmZ1bmNzLmMKQEAgLTM4MDgsMTggKzM4MDgsMTIgQEAgc3RhdGljIEhUQUIgKgogZ2V0X2pz b25fb2JqZWN0X2FzX2hhc2goY29uc3QgY2hhciAqanNvbiwgaW50IGxlbiwgY29uc3QgY2hhciAq ZnVuY25hbWUsCiAJCQkJCQlOb2RlICplc2NvbnRleHQpCiB7Ci0JSEFTSENUTAkJY3RsOwogCUhU QUIJICAgKnRhYjsKIAlKSGFzaFN0YXRlICpzdGF0ZTsKIAlKc29uU2VtQWN0aW9uICpzZW07CiAK LQljdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNv bkhhc2hFbnRyeSk7Ci0JY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQl0YWIgPSBo YXNoX2NyZWF0ZSgianNvbiBvYmplY3QgaGFzaHRhYmxlIiwKLQkJCQkJICAxMDAsCi0JCQkJCSAg JmN0bCwKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOwor CXRhYiA9IGhhc2hfbWFrZShKc29uSGFzaEVudHJ5LCBmbmFtZSwKKwkJCQkJImpzb24gb2JqZWN0 IGhhc2h0YWJsZSIsIDEwMCk7CiAKIAlzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KEpIYXNoU3RhdGUp OwogCXNlbSA9IHBhbGxvYzBfb2JqZWN0KEpzb25TZW1BY3Rpb24pOwpAQCAtNDIxMyw3ICs0MjA3 LDYgQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X29iamVjdF9zdGFydCh2b2lkICpzdGF0ZSkKIHsKIAlQ b3B1bGF0ZVJlY29yZHNldFN0YXRlICpfc3RhdGUgPSAoUG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAq KSBzdGF0ZTsKIAlpbnQJCQlsZXhfbGV2ZWwgPSBfc3RhdGUtPmxleC0+bGV4X2xldmVsOwotCUhB U0hDVEwJCWN0bDsKIAogCS8qIFJlamVjdCBvYmplY3QgYXQgdG9wIGxldmVsOiB3ZSBtdXN0IGhh dmUgYW4gYXJyYXkgYXQgbGV2ZWwgMCAqLwogCWlmIChsZXhfbGV2ZWwgPT0gMCkKQEAgLTQyMjcs MTMgKzQyMjAsOCBAQCBwb3B1bGF0ZV9yZWNvcmRzZXRfb2JqZWN0X3N0YXJ0KHZvaWQgKnN0YXRl KQogCQlyZXR1cm4gSlNPTl9TVUNDRVNTOwogCiAJLyogT2JqZWN0IGF0IGxldmVsIDE6IHNldCB1 cCBhIG5ldyBoYXNoIHRhYmxlIGZvciB0aGlzIG9iamVjdCAqLwotCWN0bC5rZXlzaXplID0gTkFN RURBVEFMRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihKc29uSGFzaEVudHJ5KTsKLQljdGwu aGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCV9zdGF0ZS0+anNvbl9oYXNoID0gaGFzaF9j cmVhdGUoImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsCi0JCQkJCQkJCQkxMDAsCi0JCQkJCQkJCQkm Y3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsK Kwlfc3RhdGUtPmpzb25faGFzaCA9IGhhc2hfbWFrZShKc29uSGFzaEVudHJ5LCBmbmFtZSwKKwkJ CQkJCQkJICAianNvbiBvYmplY3QgaGFzaHRhYmxlIiwgMTAwKTsKIAogCXJldHVybiBKU09OX1NV Q0NFU1M7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKaW5kZXggYzdmN2I4YmMyZGQuLjRi MGZkZTNhZmNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCkBAIC0xODYsMTcgKzE4Niwx MCBAQCBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykKIAlS ZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGlu Zm87CiAJaW50CQkJY29udGV4dF9pZDsKIAlMaXN0CSAgICpjb250ZXh0czsKLQlIQVNIQ1RMCQlj dGw7CiAJSFRBQgkgICAqY29udGV4dF9pZF9sb29rdXA7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVv ZihNZW1vcnlDb250ZXh0KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKE1lbW9yeUNvbnRleHRJ ZCk7Ci0JY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCWNvbnRleHRfaWRfbG9v a3VwID0gaGFzaF9jcmVhdGUoInBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cyIsCi0JCQkJ CQkJCQkyNTYsCi0JCQkJCQkJCQkmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9C UyB8IEhBU0hfQ09OVEVYVCk7CisJY29udGV4dF9pZF9sb29rdXAgPSBoYXNoX21ha2UoTWVtb3J5 Q29udGV4dElkLCBjb250ZXh0LAorCQkJCQkJCQkgICJwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29u dGV4dHMiLCAyNTYpOwogCiAJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IGQyMmI4ZWY3ZjNjLi5iMzJjNWI5NzFkNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTI4NjEsMzAgKzI4NjEsMjUgQEAg cmlfTnVsbENoZWNrKFR1cGxlRGVzYyB0dXBEZXNjLAogc3RhdGljIHZvaWQKIHJpX0luaXRIYXNo VGFibGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2Yo T2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJJX0NvbnN0cmFpbnRJbmZvKTsKLQlyaV9j b25zdHJhaW50X2NhY2hlID0gaGFzaF9jcmVhdGUoIlJJIGNvbnN0cmFpbnQgY2FjaGUiLAotCQkJ CQkJCQkJICBSSV9JTklUX0NPTlNUUkFJTlRIQVNIU0laRSwKLQkJCQkJCQkJCSAgJmN0bCwgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcmlfY29uc3RyYWludF9jYWNoZSA9IGhhc2hfbWFrZV9j eHQoUklfQ29uc3RyYWludEluZm8sIGNvbnN0cmFpbnRfaWQsCisJCQkJCQkJCQkJIlJJIGNvbnN0 cmFpbnQgY2FjaGUiLAorCQkJCQkJCQkJCVJJX0lOSVRfQ09OU1RSQUlOVEhBU0hTSVpFLAorCQkJ CQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyogQXJyYW5nZSB0byBmbHVzaCBjYWNoZSBv biBwZ19jb25zdHJhaW50IGNoYW5nZXMgKi8KIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFj ayhDT05TVFJPSUQsCiAJCQkJCQkJCSAgSW52YWxpZGF0ZUNvbnN0cmFpbnRDYWNoZUNhbGxCYWNr LAogCQkJCQkJCQkgIChEYXR1bSkgMCk7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihSSV9RdWVy eUtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSSV9RdWVyeUhhc2hFbnRyeSk7Ci0Jcmlf cXVlcnlfY2FjaGUgPSBoYXNoX2NyZWF0ZSgiUkkgcXVlcnkgY2FjaGUiLAotCQkJCQkJCQkgUklf SU5JVF9RVUVSWUhBU0hTSVpFLAotCQkJCQkJCQkgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9C Uyk7Ci0KLQljdGwua2V5c2l6ZSA9IHNpemVvZihSSV9Db21wYXJlS2V5KTsKLQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFJJX0NvbXBhcmVIYXNoRW50cnkpOwotCXJpX2NvbXBhcmVfY2FjaGUgPSBo YXNoX2NyZWF0ZSgiUkkgY29tcGFyZSBjYWNoZSIsCisJcmlfcXVlcnlfY2FjaGUgPSBoYXNoX21h a2VfY3h0KFJJX1F1ZXJ5SGFzaEVudHJ5LCBrZXksCisJCQkJCQkJCSAgICJSSSBxdWVyeSBjYWNo ZSIsCiAJCQkJCQkJCSAgIFJJX0lOSVRfUVVFUllIQVNIU0laRSwKLQkJCQkJCQkJICAgJmN0bCwg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwor CisJcmlfY29tcGFyZV9jYWNoZSA9IGhhc2hfbWFrZV9jeHQoUklfQ29tcGFyZUhhc2hFbnRyeSwg a2V5LAorCQkJCQkJCQkJICJSSSBjb21wYXJlIGNhY2hlIiwKKwkJCQkJCQkJCSBSSV9JTklUX1FV RVJZSEFTSFNJWkUsCisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDYyOThhMzdmODhlLi45ZmI0YWQ3OGU1NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzg4OCw3ICszODg4LDYgQEAgc3RhdGljIHZvaWQK IHNldF9ydGFibGVfbmFtZXMoZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnMsIExpc3QgKnBhcmVudF9u YW1lc3BhY2VzLAogCQkJCSBCaXRtYXBzZXQgKnJlbHNfdXNlZCkKIHsKLQlIQVNIQ1RMCQloYXNo X2N0bDsKIAlIVEFCCSAgICpuYW1lc19oYXNoOwogCU5hbWVIYXNoRW50cnkgKmhlbnRyeTsKIAli b29sCQlmb3VuZDsKQEAgLTM5MDQsMTMgKzM5MDMsOSBAQCBzZXRfcnRhYmxlX25hbWVzKGRlcGFy c2VfbmFtZXNwYWNlICpkcG5zLCBMaXN0ICpwYXJlbnRfbmFtZXNwYWNlcywKIAkgKiBXZSB1c2Ug YSBoYXNoIHRhYmxlIHRvIGhvbGQga25vd24gbmFtZXMsIHNvIHRoYXQgdGhpcyBwcm9jZXNzIGlz IE8oTikKIAkgKiBub3QgTyhOXjIpIGZvciBOIG5hbWVzLgogCSAqLwotCWhhc2hfY3RsLmtleXNp emUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoTmFtZUhhc2hF bnRyeSk7Ci0JaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCW5hbWVzX2hh c2ggPSBoYXNoX2NyZWF0ZSgic2V0X3J0YWJsZV9uYW1lcyBuYW1lcyIsCi0JCQkJCQkJIGxpc3Rf bGVuZ3RoKGRwbnMtPnJ0YWJsZSksCi0JCQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkgSEFTSF9F TEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsKKwluYW1lc19oYXNoID0gaGFzaF9t YWtlKE5hbWVIYXNoRW50cnksIG5hbWUsCisJCQkJCQkgICAic2V0X3J0YWJsZV9uYW1lcyBuYW1l cyIsCisJCQkJCQkgICBsaXN0X2xlbmd0aChkcG5zLT5ydGFibGUpKTsKIAogCS8qIFByZWxvYWQg dGhlIGhhc2ggdGFibGUgd2l0aCBuYW1lcyBhcHBlYXJpbmcgaW4gcGFyZW50X25hbWVzcGFjZXMg Ki8KIAlmb3JlYWNoKGxjLCBwYXJlbnRfbmFtZXNwYWNlcykKQEAgLTQ5ODEsNyArNDk3Niw2IEBA IGV4cGFuZF9jb2xuYW1lc19hcnJheV90byhkZXBhcnNlX2NvbHVtbnMgKmNvbGluZm8sIGludCBu KQogc3RhdGljIHZvaWQKIGJ1aWxkX2NvbGluZm9fbmFtZXNfaGFzaChkZXBhcnNlX2NvbHVtbnMg KmNvbGluZm8pCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJaW50CQkJaTsKIAlMaXN0Q2VsbCAg ICpsYzsKIApAQCAtNDk5NywxMyArNDk5MSwxMCBAQCBidWlsZF9jb2xpbmZvX25hbWVzX2hhc2go ZGVwYXJzZV9jb2x1bW5zICpjb2xpbmZvKQogCSAqIFNldCB1cCB0aGUgaGFzaCB0YWJsZS4gIFRo ZSBlbnRyaWVzIGFyZSBqdXN0IHN0cmluZ3Mgd2l0aCBubyBvdGhlcgogCSAqIHBheWxvYWQuCiAJ ICovCi0JaGFzaF9jdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsK LQljb2xpbmZvLT5uYW1lc19oYXNoID0gaGFzaF9jcmVhdGUoImRlcGFyc2VfY29sdW1ucyBuYW1l cyIsCi0JCQkJCQkJCQkgIGNvbGluZm8tPm51bV9jb2xzICsgY29saW5mby0+bnVtX25ld19jb2xz LAotCQkJCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RS SU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJY29saW5mby0+bmFtZXNfaGFzaCA9CisJCWhhc2hzZXRf bWFrZV9jeHQoTmFtZURhdGEsICJkZXBhcnNlX2NvbHVtbnMgbmFtZXMiLAorCQkJCQkJIGNvbGlu Zm8tPm51bV9jb2xzICsgY29saW5mby0+bnVtX25ld19jb2xzLAorCQkJCQkJIEN1cnJlbnRNZW1v cnlDb250ZXh0KTsKIAogCS8qCiAJICogUHJlbG9hZCB0aGUgaGFzaCB0YWJsZSB3aXRoIGFueSBu YW1lcyBhbHJlYWR5IHByZXNlbnQgKHRoZXNlIHdvdWxkIGhhdmUKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9hdHRvcHRjYWNoZS5jCmluZGV4IDkyNDRhMjMwMTNlLi40MTcxMjE4MGIxYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvYXR0b3B0Y2FjaGUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9hdHRvcHRjYWNoZS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAi dXRpbHMvY2F0Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAi dXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0 aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCiAKQEAgLTk3LDIyICs5OCwxNSBA QCByZWxhdHRfY2FjaGVfc3lzaGFzaChjb25zdCB2b2lkICprZXksIFNpemUga2V5c2l6ZSkKIHN0 YXRpYyB2b2lkCiBJbml0aWFsaXplQXR0b3B0Q2FjaGUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7 Ci0KLQkvKiBJbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKEF0dG9wdENhY2hlS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEF0dG9wdENhY2hl RW50cnkpOwotCiAJLyoKIAkgKiBBdHRvcHRDYWNoZUVudHJ5IHRha2VzIGhhc2ggdmFsdWUgZnJv bSB0aGUgc3lzdGVtIGNhY2hlLiBGb3IKIAkgKiBBdHRvcHRDYWNoZUhhc2ggd2UgdXNlIHRoZSBz YW1lIGhhc2ggaW4gb3JkZXIgdG8gc3BlZWR1cCBzZWFyY2ggYnkgaGFzaAogCSAqIHZhbHVlLiBU aGlzIGlzIHVzZWQgYnkgaGFzaF9zZXFfaW5pdF93aXRoX2hhc2hfdmFsdWUoKS4KIAkgKi8KLQlj dGwuaGFzaCA9IHJlbGF0dF9jYWNoZV9zeXNoYXNoOwotCi0JQXR0b3B0Q2FjaGVIYXNoID0KLQkJ aGFzaF9jcmVhdGUoIkF0dG9wdCBjYWNoZSIsIDI1NiwgJmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwg SEFTSF9GVU5DVElPTik7CisJQXR0b3B0Q2FjaGVIYXNoID0gaGFzaF9tYWtlX2ZuX2N4dChBdHRv cHRDYWNoZUVudHJ5LCBrZXksCisJCQkJCQkJCQkgICAiQXR0b3B0IGNhY2hlIiwgMjU2LAorCQkJ CQkJCQkJICAgcmVsYXR0X2NhY2hlX3N5c2hhc2gsIE5VTEwsCisJCQkJCQkJCQkgICBUb3BNZW1v cnlDb250ZXh0KTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSd2ZSBpbml0aWFsaXplZCBDYWNoZU1lbW9y eUNvbnRleHQuICovCiAJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv ZXZ0Y2FjaGUuYwppbmRleCAzZmU4OWM5Yzk4Zi4uYjViNzJhNmE0N2UgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvZXZ0Y2FjaGUuYwpAQCAtNzcsNyArNzcsNiBAQCBFdmVudENhY2hlTG9va3VwKEV2ZW50 VHJpZ2dlckV2ZW50IGV2ZW50KQogc3RhdGljIHZvaWQKIEJ1aWxkRXZlbnRUcmlnZ2VyQ2FjaGUo dm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqY2FjaGU7CiAJUmVsYXRpb24JcmVs OwogCVJlbGF0aW9uCWlyZWw7CkBAIC0xMTQsMTEgKzExMyw5IEBAIEJ1aWxkRXZlbnRUcmlnZ2Vy Q2FjaGUodm9pZCkKIAlFdmVudFRyaWdnZXJDYWNoZVN0YXRlID0gRVRDU19SRUJVSUxEX1NUQVJU RUQ7CiAKIAkvKiBDcmVhdGUgbmV3IGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXpl b2YoRXZlbnRUcmlnZ2VyRXZlbnQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoRXZlbnRUcmln Z2VyQ2FjaGVFbnRyeSk7Ci0JY3RsLmhjeHQgPSBFdmVudFRyaWdnZXJDYWNoZUNvbnRleHQ7Ci0J Y2FjaGUgPSBoYXNoX2NyZWF0ZSgiRXZlbnRUcmlnZ2VyQ2FjaGVIYXNoIiwgMzIsICZjdGwsCi0J CQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwljYWNoZSA9IGhh c2hfbWFrZV9jeHQoRXZlbnRUcmlnZ2VyQ2FjaGVFbnRyeSwgZXZlbnQsCisJCQkJCQkgICJFdmVu dFRyaWdnZXJDYWNoZUhhc2giLCAzMiwKKwkJCQkJCSAgRXZlbnRUcmlnZ2VyQ2FjaGVDb250ZXh0 KTsKIAogCS8qCiAJICogUHJlcGFyZSB0byBzY2FuIHBnX2V2ZW50X3RyaWdnZXIgaW4gbmFtZSBv cmRlci4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMKaW5kZXggNzAxYzI5NGI4OGQuLmJl ZjkzOGMzN2MwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYwpAQCAtNTgsMTkgKzU4 LDEzIEBAIHN0YXRpYyBpbnQJY2Z1bmNfbWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9p ZCAqa2V5MiwgU2l6ZSBrZXlzaXplKTsKIHN0YXRpYyB2b2lkCiBjZnVuY19oYXNodGFibGVfaW5p dCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQogCS8qIGRvbid0IGFsbG93IGRvdWJsZS1pbml0 aWFsaXphdGlvbiAqLwogCUFzc2VydChjZnVuY19oYXNodGFibGUgPT0gTlVMTCk7CiAKLQljdGwu a2V5c2l6ZSA9IHNpemVvZihDYWNoZWRGdW5jdGlvbkhhc2hLZXkpOwotCWN0bC5lbnRyeXNpemUg PSBzaXplb2YoQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnkpOwotCWN0bC5oYXNoID0gY2Z1bmNfaGFz aDsKLQljdGwubWF0Y2ggPSBjZnVuY19tYXRjaDsKLQljZnVuY19oYXNodGFibGUgPSBoYXNoX2Ny ZWF0ZSgiQ2FjaGVkIGZ1bmN0aW9uIGhhc2giLAotCQkJCQkJCQkgIEZVTkNTX1BFUl9VU0VSLAot CQkJCQkJCQkgICZjdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSk7CisJY2Z1bmNfaGFzaHRhYmxlID0gaGFzaF9tYWtlX2ZuX2N4dChDYWNoZWRG dW5jdGlvbkhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkJICAgIkNhY2hlZCBmdW5jdGlvbiBoYXNo IiwgRlVOQ1NfUEVSX1VTRVIsCisJCQkJCQkJCQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwK KwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMKaW5kZXggYTFjODhjNmIxYjYuLjc5M2IyZTZjYmQzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMKQEAgLTE2NzIsMTcgKzE2NzIsMTQgQEAgTG9va3VwT3BjbGFzc0lu Zm8oT2lkIG9wZXJhdG9yQ2xhc3NPaWQsCiAKIAlpZiAoT3BDbGFzc0NhY2hlID09IE5VTEwpCiAJ ewotCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIG9wY2xhc3MgY2FjaGUg Ki8KLQkJSEFTSENUTAkJY3RsOwotCiAJCS8qIEFsc28gbWFrZSBzdXJlIENhY2hlTWVtb3J5Q29u dGV4dCBleGlzdHMgKi8KIAkJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCiAJCQlDcmVhdGVDYWNo ZU1lbW9yeUNvbnRleHQoKTsKIAotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwu ZW50cnlzaXplID0gc2l6ZW9mKE9wQ2xhc3NDYWNoZUVudCk7Ci0JCU9wQ2xhc3NDYWNoZSA9IGhh c2hfY3JlYXRlKCJPcGVyYXRvciBjbGFzcyBjYWNoZSIsIDY0LAotCQkJCQkJCQkgICAmY3RsLCBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFs aXplIHRoZSBvcGNsYXNzIGNhY2hlICovCisJCU9wQ2xhc3NDYWNoZSA9IGhhc2hfbWFrZV9jeHQo T3BDbGFzc0NhY2hlRW50LCBvcGNsYXNzb2lkLAorCQkJCQkJCQkJICJPcGVyYXRvciBjbGFzcyBj YWNoZSIsIDY0LAorCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCW9wY2VudHJ5 ID0gKE9wQ2xhc3NDYWNoZUVudCAqKSBoYXNoX3NlYXJjaChPcENsYXNzQ2FjaGUsCkBAIC0zOTk2 LDcgKzM5OTMsNiBAQCBSZWxhdGlvbkFzc3VtZU5ld1JlbGZpbGVsb2NhdG9yKFJlbGF0aW9uIHJl bGF0aW9uKQogdm9pZAogUmVsYXRpb25DYWNoZUluaXRpYWxpemUodm9pZCkKIHsKLQlIQVNIQ1RM CQljdGw7CiAJaW50CQkJYWxsb2NzaXplOwogCiAJLyoKQEAgLTQwMDgsMTAgKzQwMDQsOSBAQCBS ZWxhdGlvbkNhY2hlSW5pdGlhbGl6ZSh2b2lkKQogCS8qCiAJICogY3JlYXRlIGhhc2h0YWJsZSB0 aGF0IGluZGV4ZXMgdGhlIHJlbGNhY2hlCiAJICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbElkQ2FjaGVFbnQpOwotCVJlbGF0aW9uSWRD YWNoZSA9IGhhc2hfY3JlYXRlKCJSZWxjYWNoZSBieSBPSUQiLCBJTklUUkVMQ0FDSEVTSVpFLAot CQkJCQkJCQkgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVJlbGF0aW9uSWRDYWNo ZSA9IGhhc2hfbWFrZV9jeHQoUmVsSWRDYWNoZUVudCwgcmVsb2lkLAorCQkJCQkJCQkJIlJlbGNh Y2hlIGJ5IE9JRCIsIElOSVRSRUxDQUNIRVNJWkUsCisJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0 KTsKIAogCS8qCiAJICogcmVzZXJ2ZSBlbm91Z2ggaW5fcHJvZ3Jlc3NfbGlzdCBzbG90cyBmb3Ig bWFueSBjYXNlcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51 bWJlcm1hcC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCmlu ZGV4IDZmOTcwZmFmYTA1Li4wOWIwNWRlYzlkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGZpbGVudW1iZXJtYXAuYwpAQCAtODUsNyArODUsNiBAQCBSZWxmaWxlbnVtYmVyTWFwSW52 YWxpZGF0ZUNhbGxiYWNrKERhdHVtIGFyZywgT2lkIHJlbGlkKQogc3RhdGljIHZvaWQKIEluaXRp YWxpemVSZWxmaWxlbnVtYmVyTWFwKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwogCWludAkJCWk7 CiAKIAkvKiBNYWtlIHN1cmUgd2UndmUgaW5pdGlhbGl6ZWQgQ2FjaGVNZW1vcnlDb250ZXh0LiAq LwpAQCAtMTEzLDEzICsxMTIsOSBAQCBJbml0aWFsaXplUmVsZmlsZW51bWJlck1hcCh2b2lkKQog CSAqIGluaXRpYWxpemVkIHdoZW4gZm1ncl9pbmZvX2N4dCgpIGFib3ZlIEVSUk9ScyBvdXQgd2l0 aCBhbiBvdXQgb2YgbWVtb3J5CiAJICogZXJyb3IuCiAJICovCi0JY3RsLmtleXNpemUgPSBzaXpl b2YoUmVsZmlsZW51bWJlck1hcEtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxmaWxl bnVtYmVyTWFwRW50cnkpOwotCWN0bC5oY3h0ID0gQ2FjaGVNZW1vcnlDb250ZXh0OwotCiAJUmVs ZmlsZW51bWJlck1hcEhhc2ggPQotCQloYXNoX2NyZWF0ZSgiUmVsZmlsZW51bWJlck1hcCBjYWNo ZSIsIDY0LCAmY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKKwkJaGFzaF9tYWtlX2N4dChSZWxmaWxlbnVtYmVyTWFwRW50cnksIGtleSwKKwkJCQkJICAi UmVsZmlsZW51bWJlck1hcCBjYWNoZSIsIDY0LCBDYWNoZU1lbW9yeUNvbnRleHQpOwogCiAJLyog V2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hl Q2FsbGJhY2soUmVsZmlsZW51bWJlck1hcEludmFsaWRhdGVDYWxsYmFjaywKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9zcGNjYWNoZS5jCmluZGV4IDM2MjE2OWI3ZDk3Li5hY2ZmNjJhMzhiZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9zcGNjYWNoZS5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAidXRpbHMv Y2F0Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMv aW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Nw Y2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ2YXJhdHQu aCIKQEAgLTc4LDE0ICs3OSwxMCBAQCBJbnZhbGlkYXRlVGFibGVTcGFjZUNhY2hlQ2FsbGJhY2so RGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwKIHN0YXRpYyB2b2lkCiBJbml0 aWFsaXplVGFibGVTcGFjZUNhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJLyogSW5p dGlhbGl6ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwot CWN0bC5lbnRyeXNpemUgPSBzaXplb2YoVGFibGVTcGFjZUNhY2hlRW50cnkpOwogCVRhYmxlU3Bh Y2VDYWNoZUhhc2ggPQotCQloYXNoX2NyZWF0ZSgiVGFibGVTcGFjZSBjYWNoZSIsIDE2LCAmY3Rs LAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJaGFzaF9tYWtlX2N4dChUYWJsZVNw YWNlQ2FjaGVFbnRyeSwgb2lkLAorCQkJCQkgICJUYWJsZVNwYWNlIGNhY2hlIiwgMTYsIFRvcE1l bW9yeUNvbnRleHQpOwogCiAJLyogTWFrZSBzdXJlIHdlJ3ZlIGluaXRpYWxpemVkIENhY2hlTWVt b3J5Q29udGV4dC4gKi8KIAlpZiAoIUNhY2hlTWVtb3J5Q29udGV4dCkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS90c19jYWNoZS5jCmluZGV4IDc0NGM4ZTcxZDcxLi42MzYxMTkzYWVmOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS90c19jYWNoZS5jCkBAIC0xMTcsMTIgKzExNyw5IEBAIGxvb2t1cF90c19wYXJzZXJf Y2FjaGUoT2lkIHByc0lkKQogCWlmIChUU1BhcnNlckNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJ LyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhB U0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFRTUGFyc2VyQ2FjaGVFbnRyeSk7Ci0JCVRTUGFyc2VyQ2FjaGVIYXNoID0g aGFzaF9jcmVhdGUoIlRzZWFyY2ggcGFyc2VyIGNhY2hlIiwgNCwKLQkJCQkJCQkJCQkmY3RsLCBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJVFNQYXJzZXJDYWNoZUhhc2ggPSBoYXNoX21ha2Vf Y3h0KFRTUGFyc2VyQ2FjaGVFbnRyeSwgcHJzSWQsCisJCQkJCQkJCQkJICAiVHNlYXJjaCBwYXJz ZXIgY2FjaGUiLCA0LAorCQkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAJCS8qIEZsdXNo IGNhY2hlIG9uIHBnX3RzX3BhcnNlciBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFRTUEFSU0VST0lELCBJbnZhbGlkYXRlVFNDYWNoZUNhbGxCYWNrLAogCQkJCQkJ CQkJICBQb2ludGVyR2V0RGF0dW0oVFNQYXJzZXJDYWNoZUhhc2gpKTsKQEAgLTIxMiwxMiArMjA5 LDkgQEAgbG9va3VwX3RzX2RpY3Rpb25hcnlfY2FjaGUoT2lkIGRpY3RJZCkKIAlpZiAoVFNEaWN0 aW9uYXJ5Q2FjaGVIYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGlu aXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlz aXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoVFNEaWN0aW9uYXJ5 Q2FjaGVFbnRyeSk7Ci0JCVRTRGljdGlvbmFyeUNhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJUc2Vh cmNoIGRpY3Rpb25hcnkgY2FjaGUiLCA4LAotCQkJCQkJCQkJCQkmY3RsLCBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTKTsKKwkJVFNEaWN0aW9uYXJ5Q2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChUU0Rp Y3Rpb25hcnlDYWNoZUVudHJ5LCBkaWN0SWQsCisJCQkJCQkJCQkJCSAgIlRzZWFyY2ggZGljdGlv bmFyeSBjYWNoZSIsIDgsCisJCQkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAJCS8qIEZs dXNoIGNhY2hlIG9uIHBnX3RzX2RpY3QgYW5kIHBnX3RzX3RlbXBsYXRlIGNoYW5nZXMgKi8KIAkJ Q2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soVFNESUNUT0lELCBJbnZhbGlkYXRlVFNDYWNo ZUNhbGxCYWNrLAogCQkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0oVFNEaWN0aW9uYXJ5Q2FjaGVI YXNoKSk7CkBAIC0zNjMsMTIgKzM1Nyw5IEBAIGxvb2t1cF90c19kaWN0aW9uYXJ5X2NhY2hlKE9p ZCBkaWN0SWQpCiBzdGF0aWMgdm9pZAogaW5pdF90c19jb25maWdfY2FjaGUodm9pZCkKIHsKLQlI QVNIQ1RMCQljdGw7Ci0KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNp emUgPSBzaXplb2YoVFNDb25maWdDYWNoZUVudHJ5KTsKLQlUU0NvbmZpZ0NhY2hlSGFzaCA9IGhh c2hfY3JlYXRlKCJUc2VhcmNoIGNvbmZpZ3VyYXRpb24gY2FjaGUiLCAxNiwKLQkJCQkJCQkJCSZj dGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVRTQ29uZmlnQ2FjaGVIYXNoID0gaGFzaF9t YWtlX2N4dChUU0NvbmZpZ0NhY2hlRW50cnksIGNmZ0lkLAorCQkJCQkJCQkJICAiVHNlYXJjaCBj b25maWd1cmF0aW9uIGNhY2hlIiwgMTYsCisJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwog CS8qIEZsdXNoIGNhY2hlIG9uIHBnX3RzX2NvbmZpZyBhbmQgcGdfdHNfY29uZmlnX21hcCBjaGFu Z2VzICovCiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soVFNDT05GSUdPSUQsIEludmFs aWRhdGVUU0NhY2hlQ2FsbEJhY2ssCiAJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTQ29uZmln Q2FjaGVIYXNoKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwppbmRleCBjZWJlN2E5MTZm Yi4uNWU2NjUwNDA0ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwpAQCAtMzk1LDI4 ICszOTUsMjMgQEAgbG9va3VwX3R5cGVfY2FjaGUoT2lkIHR5cGVfaWQsIGludCBmbGFncykKIAlp ZiAoVHlwZUNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBp bml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKIAkJaW50CQkJYWxs b2NzaXplOwogCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUg PSBzaXplb2YoVHlwZUNhY2hlRW50cnkpOwotCiAJCS8qCiAJCSAqIFR5cGVDYWNoZUVudHJ5IHRh a2VzIGhhc2ggdmFsdWUgZnJvbSB0aGUgc3lzdGVtIGNhY2hlLiBGb3IKIAkJICogVHlwZUNhY2hl SGFzaCB3ZSB1c2UgdGhlIHNhbWUgaGFzaCBpbiBvcmRlciB0byBzcGVlZHVwIHNlYXJjaCBieQog CQkgKiBoYXNoIHZhbHVlLiBUaGlzIGlzIHVzZWQgYnkgaGFzaF9zZXFfaW5pdF93aXRoX2hhc2hf dmFsdWUoKS4KIAkJICovCi0JCWN0bC5oYXNoID0gdHlwZV9jYWNoZV9zeXNoYXNoOwotCi0JCVR5 cGVDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiVHlwZSBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAot CQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTik7CisJCVR5cGVDYWNoZUhh c2ggPSBoYXNoX21ha2VfZm5fY3h0KFR5cGVDYWNoZUVudHJ5LCB0eXBlX2lkLAorCQkJCQkJCQkJ CSAiVHlwZSBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAorCQkJCQkJCQkJCSB0eXBlX2NhY2hlX3N5 c2hhc2gsIE5VTEwsCisJCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCUFzc2VydChS ZWxJZFRvVHlwZUlkQ2FjaGVIYXNoID09IE5VTEwpOwogCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9m KE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsSWRUb1R5cGVJZENhY2hlRW50cnkp OwotCQlSZWxJZFRvVHlwZUlkQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIk1hcCBmcm9tIHJlbGlk IHRvIE9JRCBvZiBjYWNoZWQgY29tcG9zaXRlIHR5cGUiLCA2NCwKLQkJCQkJCQkJCQkJICZjdGws IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlSZWxJZFRvVHlwZUlkQ2FjaGVIYXNoID0gaGFz aF9tYWtlX2N4dChSZWxJZFRvVHlwZUlkQ2FjaGVFbnRyeSwgcmVsaWQsCisJCQkJCQkJCQkJCSAg ICJNYXAgZnJvbSByZWxpZCB0byBPSUQgb2YgY2FjaGVkIGNvbXBvc2l0ZSB0eXBlIiwKKwkJCQkJ CQkJCQkJICAgNjQsIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFsc28gc2V0IHVwIGNhbGxi YWNrcyBmb3IgU0kgaW52YWxpZGF0aW9ucyAqLwogCQlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxs YmFjayhUeXBlQ2FjaGVSZWxDYWxsYmFjaywgKERhdHVtKSAwKTsKQEAgLTIwNzYsMTUgKzIwNzEs MTEgQEAgYXNzaWduX3JlY29yZF90eXBlX3R5cG1vZChUdXBsZURlc2MgdHVwRGVzYykKIAlpZiAo UmVjb3JkQ2FjaGVIYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGlu aXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlz aXplID0gc2l6ZW9mKFR1cGxlRGVzYyk7CS8qIGp1c3QgdGhlIHBvaW50ZXIgKi8KLQkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihSZWNvcmRDYWNoZUVudHJ5KTsKLQkJY3RsLmhhc2ggPSByZWNvcmRf dHlwZV90eXBtb2RfaGFzaDsKLQkJY3RsLm1hdGNoID0gcmVjb3JkX3R5cGVfdHlwbW9kX2NvbXBh cmU7Ci0JCVJlY29yZENhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJSZWNvcmQgaW5mb3JtYXRpb24g Y2FjaGUiLCA2NCwKLQkJCQkJCQkJCSAgJmN0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFT SF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSk7CisJCVJlY29yZENhY2hlSGFzaCA9IGhhc2hfbWFr ZV9mbl9jeHQoUmVjb3JkQ2FjaGVFbnRyeSwgdHVwZGVzYywKKwkJCQkJCQkJCQkgICAiUmVjb3Jk IGluZm9ybWF0aW9uIGNhY2hlIiwgNjQsCisJCQkJCQkJCQkJICAgcmVjb3JkX3R5cGVfdHlwbW9k X2hhc2gsCisJCQkJCQkJCQkJICAgcmVjb3JkX3R5cGVfdHlwbW9kX2NvbXBhcmUsCisJCQkJCQkJ CQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkJLyogQWxzbyBtYWtlIHN1cmUgQ2FjaGVNZW1v cnlDb250ZXh0IGV4aXN0cyAqLwogCQlpZiAoIUNhY2hlTWVtb3J5Q29udGV4dCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Zt Z3IvZGZtZ3IuYwppbmRleCBlNjM2Y2M4MWNmOC4uNWQ5OTQ2N2UyYmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9mbWdy L2RmbWdyLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAKIC8qIHNpZ25hdHVyZSBmb3IgUG9zdGdyZVNRTC1z cGVjaWZpYyBsaWJyYXJ5IGluaXQgZnVuY3Rpb24gKi8KQEAgLTY3MSwxNCArNjcyLDkgQEAgZmlu ZF9yZW5kZXp2b3VzX3ZhcmlhYmxlKGNvbnN0IGNoYXIgKnZhck5hbWUpCiAJLyogQ3JlYXRlIGEg aGFzaHRhYmxlIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSBkb25lIHNvIGluIHRoaXMgcHJvY2VzcyAq LwogCWlmIChyZW5kZXp2b3VzSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCi0J CWN0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YocmVu ZGV6dm91c0hhc2hFbnRyeSk7Ci0JCXJlbmRlenZvdXNIYXNoID0gaGFzaF9jcmVhdGUoIlJlbmRl enZvdXMgdmFyaWFibGUgaGFzaCIsCi0JCQkJCQkJCQkgMTYsCi0JCQkJCQkJCQkgJmN0bCwKLQkJ CQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCQlyZW5kZXp2b3VzSGFzaCA9IGhh c2hfbWFrZV9jeHQocmVuZGV6dm91c0hhc2hFbnRyeSwgdmFyTmFtZSwKKwkJCQkJCQkJCSAgICJS ZW5kZXp2b3VzIHZhcmlhYmxlIGhhc2giLCAxNiwKKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRl eHQpOwogCX0KIAogCS8qIEZpbmQgb3IgY3JlYXRlIHRoZSBoYXNodGFibGUgZW50cnkgZm9yIHRo aXMgdmFyTmFtZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMg Yi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwppbmRleCA0ZTI2ZGY3YzYzYS4uN2M1MGQz OGE5ODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi dXRpbHMvZm1ncnRhYi5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxz L2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRp bHMvc3lzY2FjaGUuaCIKIAogLyoKQEAgLTU0NywxNCArNTQ4LDggQEAgcmVjb3JkX0NfZnVuYyhI ZWFwVHVwbGUgcHJvY2VkdXJlVHVwbGUsCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGlmIGl0 IGRvZXNuJ3QgZXhpc3QgeWV0ICovCiAJaWYgKENGdW5jSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFT SENUTAkJaGFzaF9jdGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQlo YXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoQ0Z1bmNIYXNoVGFiRW50cnkpOwotCQlDRnVuY0hh c2ggPSBoYXNoX2NyZWF0ZSgiQ0Z1bmNIYXNoIiwKLQkJCQkJCQkJMTAwLAotCQkJCQkJCQkmaGFz aF9jdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlDRnVuY0hhc2ggPSBo YXNoX21ha2VfY3h0KENGdW5jSGFzaFRhYkVudHJ5LCBmbl9vaWQsCisJCQkJCQkJCSAgIkNGdW5j SGFzaCIsIDEwMCwgVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJZW50cnkgPSAoQ0Z1bmNIYXNo VGFiRW50cnkgKikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGQ3NzUwMjgzOGM0Li4yNjhiNWYzNWUw OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC04NzEsNyArODcxLDYgQEAgYnVpbGRfZ3VjX3Zhcmlh Ymxlcyh2b2lkKQogewogCWludAkJCXNpemVfdmFyczsKIAlpbnQJCQludW1fdmFycyA9IDA7Ci0J SEFTSENUTAkJaGFzaF9jdGw7CiAJR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAJYm9vbAkJZm91bmQ7 CiAKQEAgLTg5NCwxNSArODkzLDEwIEBAIGJ1aWxkX2d1Y192YXJpYWJsZXModm9pZCkKIAkgKi8K IAlzaXplX3ZhcnMgPSBudW1fdmFycyArIG51bV92YXJzIC8gNDsKIAotCWhhc2hfY3RsLmtleXNp emUgPSBzaXplb2YoY2hhciAqKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoR1VDSGFz aEVudHJ5KTsKLQloYXNoX2N0bC5oYXNoID0gZ3VjX25hbWVfaGFzaDsKLQloYXNoX2N0bC5tYXRj aCA9IGd1Y19uYW1lX21hdGNoOwotCWhhc2hfY3RsLmhjeHQgPSBHVUNNZW1vcnlDb250ZXh0Owot CWd1Y19oYXNodGFiID0gaGFzaF9jcmVhdGUoIkdVQyBoYXNoIHRhYmxlIiwKLQkJCQkJCQkgIHNp emVfdmFycywKLQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hf RlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBIQVNIX0NPTlRFWFQpOworCWd1Y19oYXNodGFiID0g aGFzaF9tYWtlX2ZuX2N4dChHVUNIYXNoRW50cnksIGd1Y25hbWUsCisJCQkJCQkJCSAgICJHVUMg aGFzaCB0YWJsZSIsIHNpemVfdmFycywKKwkJCQkJCQkJICAgZ3VjX25hbWVfaGFzaCwgZ3VjX25h bWVfbWF0Y2gsCisJCQkJCQkJCSAgIEdVQ01lbW9yeUNvbnRleHQpOwogCiAJZm9yIChpbnQgaSA9 IDA7IENvbmZpZ3VyZU5hbWVzW2ldLm5hbWU7IGkrKykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9pbmplY3Rpb25fcG9pbnQuYwppbmRleCBjMDZiMGU5YjgwMC4uYTZjYjQ2NDAyYWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYwpAQCAtMTI3LDE2ICsxMjcsMTAg QEAgaW5qZWN0aW9uX3BvaW50X2NhY2hlX2FkZChjb25zdCBjaGFyICpuYW1lLAogCS8qIElmIGZp cnN0IHRpbWUsIGluaXRpYWxpemUgKi8KIAlpZiAoSW5qZWN0aW9uUG9pbnRDYWNoZSA9PSBOVUxM KQogCXsKLQkJSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVv ZihjaGFyW0lOSl9OQU1FX01BWExFTl0pOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2Yo SW5qZWN0aW9uUG9pbnRDYWNoZUVudHJ5KTsKLQkJaGFzaF9jdGwuaGN4dCA9IFRvcE1lbW9yeUNv bnRleHQ7Ci0KLQkJSW5qZWN0aW9uUG9pbnRDYWNoZSA9IGhhc2hfY3JlYXRlKCJJbmplY3Rpb25Q b2ludCBjYWNoZSBoYXNoIiwKLQkJCQkJCQkJCQkgIE1BWF9JTkpFQ1RJT05fUE9JTlRTLAotCQkJ CQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdT IHwgSEFTSF9DT05URVhUKTsKKwkJSW5qZWN0aW9uUG9pbnRDYWNoZSA9IGhhc2hfbWFrZV9jeHQo SW5qZWN0aW9uUG9pbnRDYWNoZUVudHJ5LCBuYW1lLAorCQkJCQkJCQkJCQkiSW5qZWN0aW9uUG9p bnQgY2FjaGUgaGFzaCIsCisJCQkJCQkJCQkJCU1BWF9JTkpFQ1RJT05fUE9JTlRTLAorCQkJCQkJ CQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAllbnRyeSA9IChJbmplY3Rpb25Qb2ludENh Y2hlRW50cnkgKikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVt LmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IGMxYTUzZTY1OGNi Li5lZDYxNGNmNWMyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxt ZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0xMDMsMjMg KzEwMywxOSBAQCBzdGF0aWMgTWVtb3J5Q29udGV4dCBUb3BQb3J0YWxDb250ZXh0ID0gTlVMTDsK IHZvaWQKIEVuYWJsZVBvcnRhbE1hbmFnZXIodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAlB c3NlcnQoVG9wUG9ydGFsQ29udGV4dCA9PSBOVUxMKTsKIAogCVRvcFBvcnRhbENvbnRleHQgPSBB bGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKIAkJCQkJCQkJCQkJICJUb3BQ b3J0YWxDb250ZXh0IiwKIAkJCQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCi0J Y3RsLmtleXNpemUgPSBNQVhfUE9SVEFMTkFNRV9MRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihQb3J0YWxIYXNoRW50KTsKLQogCS8qCiAJICogdXNlIFBPUlRBTFNfUEVSX1VTRVIgYXMgYSBn dWVzcyBvZiBob3cgbWFueSBoYXNoIHRhYmxlIGVudHJpZXMgdG8KIAkgKiBjcmVhdGUsIGluaXRp YWxseQogCSAqLwotCVBvcnRhbEhhc2hUYWJsZSA9IGhhc2hfY3JlYXRlKCJQb3J0YWwgaGFzaCIs IFBPUlRBTFNfUEVSX1VTRVIsCi0JCQkJCQkJCSAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9TVFJJ TkdTKTsKKwlQb3J0YWxIYXNoVGFibGUgPSBoYXNoX21ha2VfY3h0KFBvcnRhbEhhc2hFbnQsIHBv cnRhbG5hbWUsCisJCQkJCQkJCQkiUG9ydGFsIGhhc2giLCBQT1JUQUxTX1BFUl9VU0VSLAorCQkJ CQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy90aW1lL2NvbWJvY2lkLmMgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lk LmMKaW5kZXggNjE0YjdjMTAwNmIuLjRjMzE2NzU1MzVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy90aW1lL2NvbWJvY2lkLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9jb21i b2NpZC5jCkBAIC0yMTQsOCArMjE0LDYgQEAgR2V0Q29tYm9Db21tYW5kSWQoQ29tbWFuZElkIGNt aW4sIENvbW1hbmRJZCBjbWF4KQogCSAqLwogCWlmIChjb21ib0hhc2ggPT0gTlVMTCkKIAl7Ci0J CUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJCS8qIE1ha2UgYXJyYXkgZmlyc3Q7IGV4aXN0ZW5jZSBv ZiBoYXNoIHRhYmxlIGFzc2VydHMgYXJyYXkgZXhpc3RzICovCiAJCWNvbWJvQ2lkcyA9IChDb21i b0NpZEtleURhdGEgKikKIAkJCU1lbW9yeUNvbnRleHRBbGxvYyhUb3BUcmFuc2FjdGlvbkNvbnRl eHQsCkBAIC0yMjMsMTQgKzIyMSw5IEBAIEdldENvbWJvQ29tbWFuZElkKENvbW1hbmRJZCBjbWlu LCBDb21tYW5kSWQgY21heCkKIAkJc2l6ZUNvbWJvQ2lkcyA9IENDSURfQVJSQVlfU0laRTsKIAkJ dXNlZENvbWJvQ2lkcyA9IDA7CiAKLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihDb21ib0Np ZEtleURhdGEpOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoQ29tYm9DaWRFbnRyeURh dGEpOwotCQloYXNoX2N0bC5oY3h0ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0OwotCi0JCWNvbWJv SGFzaCA9IGhhc2hfY3JlYXRlKCJDb21ibyBDSURzIiwKLQkJCQkJCQkJQ0NJRF9IQVNIX1NJWkUs Ci0JCQkJCQkJCSZoYXNoX2N0bCwKLQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhB U0hfQ09OVEVYVCk7CisJCWNvbWJvSGFzaCA9IGhhc2hfbWFrZV9jeHQoQ29tYm9DaWRFbnRyeURh dGEsIGtleSwKKwkJCQkJCQkJICAiQ29tYm8gQ0lEcyIsIENDSURfSEFTSF9TSVpFLAorCQkJCQkJ CQkgIFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9w bC9wbHBlcmwvcGxwZXJsLmMgYi9zcmMvcGwvcGxwZXJsL3BscGVybC5jCmluZGV4IDAyZWNlZDNi MmM1Li40OTA0NGJjODA4YiAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGVybC9wbHBlcmwuYworKysg Yi9zcmMvcGwvcGxwZXJsL3BscGVybC5jCkBAIC0zOTAsNyArMzkwLDYgQEAgX1BHX2luaXQodm9p ZCkKIAkgKiAicGxwZXJsLnVzZV9zdHJpY3QiCiAJICovCiAJc3RhdGljIGJvb2wgaW5pdGVkID0g ZmFsc2U7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAKIAlpZiAoaW5pdGVkKQogCQlyZXR1cm47CkBA IC00NjAsMTkgKzQ1OSwxMyBAQCBfUEdfaW5pdCh2b2lkKQogCS8qCiAJICogQ3JlYXRlIGhhc2gg dGFibGVzLgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0 bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZXJsX2ludGVycF9kZXNjKTsKLQlwbHBlcmxfaW50ZXJw X2hhc2ggPSBoYXNoX2NyZWF0ZSgiUEwvUGVybCBpbnRlcnByZXRlcnMiLAotCQkJCQkJCQkJIDgs Ci0JCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMp OwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihwbHBlcmxfcHJvY19rZXkpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBlcmxfcHJvY19wdHIpOwotCXBscGVybF9wcm9jX2hh c2ggPSBoYXNoX2NyZWF0ZSgiUEwvUGVybCBwcm9jZWR1cmVzIiwKLQkJCQkJCQkJICAgMzIsCi0J CQkJCQkJCSAgICZoYXNoX2N0bCwKLQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7 CisJcGxwZXJsX2ludGVycF9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBlcmxfaW50ZXJwX2Rlc2Ms IHVzZXJfaWQsCisJCQkJCQkJCQkgICAiUEwvUGVybCBpbnRlcnByZXRlcnMiLCA4LAorCQkJCQkJ CQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CisKKwlwbHBlcmxfcHJvY19oYXNoID0gaGFzaF9tYWtl X2N4dChwbHBlcmxfcHJvY19wdHIsIHByb2Nfa2V5LAorCQkJCQkJCQkJICJQTC9QZXJsIHByb2Nl ZHVyZXMiLCAzMiwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qCiAJICogU2F2 ZSB0aGUgZGVmYXVsdCBvcG1hc2suCkBAIC01NzgsMTQgKzU3MSw5IEBAIHNlbGVjdF9wZXJsX2Nv bnRleHQoYm9vbCB0cnVzdGVkKQogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgcXVlcnlfaGFzaCBm b3IgdGhpcyBpbnRlcnByZXRlciAqLwogCWlmIChpbnRlcnBfZGVzYy0+cXVlcnlfaGFzaCA9PSBO VUxMKQogCXsKLQkJSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IE5B TUVEQVRBTEVOOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZXJsX3F1ZXJ5X2Vu dHJ5KTsKLQkJaW50ZXJwX2Rlc2MtPnF1ZXJ5X2hhc2ggPSBoYXNoX2NyZWF0ZSgiUEwvUGVybCBx dWVyaWVzIiwKLQkJCQkJCQkJCQkJICAzMiwKLQkJCQkJCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJ CQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkJaW50ZXJwX2Rlc2MtPnF1ZXJ5 X2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGVybF9xdWVyeV9lbnRyeSwgcXVlcnlfbmFtZSwKKwkJ CQkJCQkJCQkJCSJQTC9QZXJsIHF1ZXJpZXMiLCAzMiwKKwkJCQkJCQkJCQkJCVRvcE1lbW9yeUNv bnRleHQpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhl Yy5jIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwppbmRleCA4NDU1MmUzMmM4Ny4uY2Ix MmRiYTlmZDUgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKKysrIGIv c3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwpAQCAtMzk4MSw4ICszOTgxLDYgQEAgcGxwZ3Nx bF9lc3RhdGVfc2V0dXAoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJCQkJIEVTdGF0ZSAq c2ltcGxlX2V2YWxfZXN0YXRlLAogCQkJCQkgUmVzb3VyY2VPd25lciBzaW1wbGVfZXZhbF9yZXNv d25lcikKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAkvKiB0aGlzIGxpbmsgd2lsbCBiZSByZXN0b3Jl ZCBhdCBleGl0IGZyb20gcGxwZ3NxbF9jYWxsX2hhbmRsZXIgKi8KIAlmdW5jLT5jdXJfZXN0YXRl ID0gZXN0YXRlOwogCkBAIC00MDM3LDEyICs0MDM1LDEwIEBAIHBscGdzcWxfZXN0YXRlX3NldHVw KFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJLyogQ3JlYXRlIHRoZSBzZXNzaW9uLXdpZGUg Y2FzdC1leHByZXNzaW9uIGhhc2ggaWYgd2UgZGlkbid0IGFscmVhZHkgKi8KIAlpZiAoY2FzdF9l eHByX2hhc2ggPT0gTlVMTCkKIAl7Ci0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2Fz dEhhc2hLZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEV4cHJIYXNo RW50cnkpOwotCQljYXN0X2V4cHJfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTHBnU1FMIGNhc3QgZXhw cmVzc2lvbnMiLAotCQkJCQkJCQkJIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0J CQkJCQkJCQkgJmN0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJY2Fz dF9leHByX2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGdzcWxfQ2FzdEV4cHJIYXNoRW50cnksIGtl eSwKKwkJCQkJCQkJCSAgICJQTHBnU1FMIGNhc3QgZXhwcmVzc2lvbnMiLAorCQkJCQkJCQkJICAg MTYsCS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNv bnRleHQpOwogCX0KIAogCS8qIHNldCB1cCBmb3IgdXNlIG9mIGFwcHJvcHJpYXRlIHNpbXBsZS1l eHByZXNzaW9uIEVTdGF0ZSBhbmQgY2FzdCBoYXNoICovCkBAIC00MDUwLDEzICs0MDQ2LDkgQEAg cGxwZ3NxbF9lc3RhdGVfc2V0dXAoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAl7CiAJCWVz dGF0ZS0+c2ltcGxlX2V2YWxfZXN0YXRlID0gc2ltcGxlX2V2YWxfZXN0YXRlOwogCQkvKiBQcml2 YXRlIGNhc3QgaGFzaCBqdXN0IGxpdmVzIGluIGZ1bmN0aW9uJ3MgbWFpbiBjb250ZXh0ICovCi0J CWN0bC5rZXlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEhhc2hLZXkpOwotCQljdGwuZW50cnlz aXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEhhc2hFbnRyeSk7Ci0JCWN0bC5oY3h0ID0gQ3VycmVu dE1lbW9yeUNvbnRleHQ7Ci0JCWVzdGF0ZS0+Y2FzdF9oYXNoID0gaGFzaF9jcmVhdGUoIlBMcGdT UUwgcHJpdmF0ZSBjYXN0IGNhY2hlIiwKLQkJCQkJCQkJCQkxNiwgLyogc3RhcnQgc21hbGwgYW5k IGV4dGVuZCAqLwotCQkJCQkJCQkJCSZjdGwsCi0JCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCWVzdGF0ZS0+Y2FzdF9oYXNoID0gaGFzaF9tYWtlKHBs cGdzcWxfQ2FzdEhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkJICAiUExwZ1NRTCBwcml2YXRlIGNh c3QgY2FjaGUiLAorCQkJCQkJCQkJICAxNik7CS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8K IAl9CiAJZWxzZQogCXsKQEAgLTQwNjQsMTIgKzQwNTYsMTAgQEAgcGxwZ3NxbF9lc3RhdGVfc2V0 dXAoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJLyogQ3JlYXRlIHRoZSBzZXNzaW9uLXdp ZGUgY2FzdC1pbmZvIGhhc2ggdGFibGUgaWYgd2UgZGlkbid0IGFscmVhZHkgKi8KIAkJaWYgKHNo YXJlZF9jYXN0X2hhc2ggPT0gTlVMTCkKIAkJewotCQkJY3RsLmtleXNpemUgPSBzaXplb2YocGxw Z3NxbF9DYXN0SGFzaEtleSk7Ci0JCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2Fz dEhhc2hFbnRyeSk7Ci0JCQlzaGFyZWRfY2FzdF9oYXNoID0gaGFzaF9jcmVhdGUoIlBMcGdTUUwg Y2FzdCBjYWNoZSIsCi0JCQkJCQkJCQkJICAgMTYsCS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQg Ki8KLQkJCQkJCQkJCQkgICAmY3RsLAotCQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOworCQkJc2hhcmVkX2Nhc3RfaGFzaCA9IGhhc2hfbWFrZV9jeHQocGxwZ3NxbF9DYXN0SGFz aEVudHJ5LCBrZXksCisJCQkJCQkJCQkJCSAiUExwZ1NRTCBjYXN0IGNhY2hlIiwKKwkJCQkJCQkJ CQkJIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCisJCQkJCQkJCQkJCSBUb3BNZW1v cnlDb250ZXh0KTsKIAkJfQogCQllc3RhdGUtPmNhc3RfaGFzaCA9IHNoYXJlZF9jYXN0X2hhc2g7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcGxweW1vZHVsZS5jIGIvc3Jj L3BsL3BscHl0aG9uL3BscHlfcGxweW1vZHVsZS5jCmluZGV4IDcyODA2YzE3ZTE3Li43MWE3NmI4 NWVjOCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcGxweW1vZHVsZS5jCisrKyBi L3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwpAQCAtMTYsNiArMTYsNyBAQAogI2lu Y2x1ZGUgInBscHlfc3VieGFjdG9iamVjdC5oIgogI2luY2x1ZGUgInBscHlfdXRpbC5oIgogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAog SFRBQgkgICAqUEx5X3NwaV9leGNlcHRpb25zID0gTlVMTDsKIApAQCAtMTQ1LDcgKzE0Niw2IEBA IHN0YXRpYyB2b2lkCiBQTHlfYWRkX2V4Y2VwdGlvbnMoUHlPYmplY3QgKnBscHkpCiB7CiAJUHlP YmplY3QgICAqZXhjbW9kOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJUEx5X2V4Y19lcnJvciA9 IFBMeV9jcmVhdGVfZXhjZXB0aW9uKCJwbHB5LkVycm9yIiwgTlVMTCwgTlVMTCwKIAkJCQkJCQkJ CQkgIkVycm9yIiwgcGxweSk7CkBAIC0xNTgsMTAgKzE1OCw5IEBAIFBMeV9hZGRfZXhjZXB0aW9u cyhQeU9iamVjdCAqcGxweSkKIAlpZiAoZXhjbW9kID09IE5VTEwpCiAJCVBMeV9lbG9nKEVSUk9S LCAiY291bGQgbm90IGNyZWF0ZSB0aGUgc3BpZXhjZXB0aW9ucyBtb2R1bGUiKTsKIAotCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YoaW50KTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2Yo UEx5RXhjZXB0aW9uRW50cnkpOwotCVBMeV9zcGlfZXhjZXB0aW9ucyA9IGhhc2hfY3JlYXRlKCJQ TC9QeXRob24gU1BJIGV4Y2VwdGlvbnMiLCAyNTYsCi0JCQkJCQkJCQkgJmhhc2hfY3RsLCBIQVNI X0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlQTHlfc3BpX2V4Y2VwdGlvbnMgPSBoYXNoX21ha2VfY3h0 KFBMeUV4Y2VwdGlvbkVudHJ5LCBzcWxzdGF0ZSwKKwkJCQkJCQkJCSAgICJQTC9QeXRob24gU1BJ IGV4Y2VwdGlvbnMiLCAyNTYsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIAogCVBM eV9nZW5lcmF0ZV9zcGlfZXhjZXB0aW9ucyhleGNtb2QsIFBMeV9leGNfc3BpX2Vycm9yKTsKIApk aWZmIC0tZ2l0IGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcHJvY2VkdXJlLmMgYi9zcmMvcGwvcGxw eXRob24vcGxweV9wcm9jZWR1cmUuYwppbmRleCA3NTBiYTU4NmUwYy4uZmM3MjhmN2FiOGEgMTAw NjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jCisrKyBiL3NyYy9wbC9w bHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jCkBAIC0yOSwxMiArMjksOSBAQCBzdGF0aWMgY2hhciAq UEx5X3Byb2NlZHVyZV9tdW5nZV9zb3VyY2UoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAq c3JjKTsKIHZvaWQKIGluaXRfcHJvY2VkdXJlX2NhY2hlcyh2b2lkKQogewotCUhBU0hDVEwJCWhh c2hfY3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihQTHlQcm9jZWR1cmVLZXkpOwot CWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQTHlQcm9jZWR1cmVFbnRyeSk7Ci0JUEx5X3By b2NlZHVyZV9jYWNoZSA9IGhhc2hfY3JlYXRlKCJQTC9QeXRob24gcHJvY2VkdXJlcyIsIDMyLCAm aGFzaF9jdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVBMeV9wcm9j ZWR1cmVfY2FjaGUgPSBoYXNoX21ha2VfY3h0KFBMeVByb2NlZHVyZUVudHJ5LCBrZXksCisJCQkJ CQkJCQkJIlBML1B5dGhvbiBwcm9jZWR1cmVzIiwgMzIsCisJCQkJCQkJCQkJVG9wTWVtb3J5Q29u dGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvcGwvdGNsL3BsdGNsLmMgYi9zcmMvcGwv dGNsL3BsdGNsLmMKaW5kZXggYjczMThmNzI2MWUuLjc2ZDE1ZjE1MzhlIDEwMDY0NAotLS0gYS9z cmMvcGwvdGNsL3BsdGNsLmMKKysrIGIvc3JjL3BsL3RjbC9wbHRjbC5jCkBAIC00MDgsNyArNDA4 LDYgQEAgdm9pZAogX1BHX2luaXQodm9pZCkKIHsKIAlUY2xfTm90aWZpZXJQcm9jcyBub3RpZmll cjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAogCS8qIEJlIHN1cmUgd2UgZG8gaW5pdGlhbGl6YXRp b24gb25seSBvbmNlIChzaG91bGQgYmUgcmVkdW5kYW50IG5vdykgKi8KIAlpZiAocGx0Y2xfcG1f aW5pdF9kb25lKQpAQCAtNDQ2LDIyICs0NDUsMTYgQEAgX1BHX2luaXQodm9pZCkKIAkvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJ ICogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGZvciB3b3JraW5nIGludGVycHJldGVycwogCSAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihwbHRjbF9pbnRlcnBfZGVzYyk7Ci0JcGx0Y2xfaW50ZXJwX2h0YWIgPSBoYXNoX2Ny ZWF0ZSgiUEwvVGNsIGludGVycHJldGVycyIsCi0JCQkJCQkJCQk4LAotCQkJCQkJCQkJJmhhc2hf Y3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcGx0Y2xfaW50ZXJwX2h0 YWIgPSBoYXNoX21ha2VfY3h0KHBsdGNsX2ludGVycF9kZXNjLCB1c2VyX2lkLAorCQkJCQkJCQkJ ICAiUEwvVGNsIGludGVycHJldGVycyIsIDgsCisJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQp OwogCiAJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgogCSAqIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBmb3IgZnVuY3Rpb24gbG9va3Vw CiAJICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKHBsdGNsX3Byb2Nfa2V5KTsKLQlo YXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGx0Y2xfcHJvY19wdHIpOwotCXBsdGNsX3Byb2Nf aHRhYiA9IGhhc2hfY3JlYXRlKCJQTC9UY2wgZnVuY3Rpb25zIiwKLQkJCQkJCQkJICAxMDAsCi0J CQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwor CXBsdGNsX3Byb2NfaHRhYiA9IGhhc2hfbWFrZV9jeHQocGx0Y2xfcHJvY19wdHIsIHByb2Nfa2V5 LAorCQkJCQkJCQkJIlBML1RjbCBmdW5jdGlvbnMiLCAxMDAsCisJCQkJCQkJCQlUb3BNZW1vcnlD b250ZXh0KTsKIAogCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKIAkgKiBEZWZpbmUgUEwvVGNsJ3MgY3VzdG9tIEdVQ3MKZGlmZiAt LWdpdCBhL3NyYy90aW1lem9uZS9wZ3R6LmMgYi9zcmMvdGltZXpvbmUvcGd0ei5jCmluZGV4IGVh Yzk4OGMyMWU3Li5jNjhkZTkzYjUzNSAxMDA2NDQKLS0tIGEvc3JjL3RpbWV6b25lL3BndHouYwor KysgYi9zcmMvdGltZXpvbmUvcGd0ei5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAicGd0 ei5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogCiAvKiBDdXJyZW50IHNlc3Npb24gdGlt ZXpvbmUgKGNvbnRyb2xsZWQgYnkgVGltZVpvbmUgR1VDKSAqLwpAQCAtMjAxLDE1ICsyMDIsOCBA QCBzdGF0aWMgSFRBQiAqdGltZXpvbmVfY2FjaGUgPSBOVUxMOwogc3RhdGljIGJvb2wKIGluaXRf dGltZXpvbmVfaGFzaHRhYmxlKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQloYXNo X2N0bC5rZXlzaXplID0gVFpfU1RSTEVOX01BWCArIDE7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0g c2l6ZW9mKHBnX3R6X2NhY2hlKTsKLQotCXRpbWV6b25lX2NhY2hlID0gaGFzaF9jcmVhdGUoIlRp bWV6b25lcyIsCi0JCQkJCQkJCSA0LAotCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkgSEFT SF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwl0aW1lem9uZV9jYWNoZSA9IGhhc2hfbWFrZV9jeHQo cGdfdHpfY2FjaGUsIHR6bmFtZXVwcGVyLAorCQkJCQkJCQkgICAiVGltZXpvbmVzIiwgNCwgVG9w TWVtb3J5Q29udGV4dCk7CiAJaWYgKCF0aW1lem9uZV9jYWNoZSkKIAkJcmV0dXJuIGZhbHNlOwog Ci0tIAoyLjUzLjAKCg== --fa477b38488948ff15b3b48282d6687669f99a2f4e6f04695d67f6869b31 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v11-0004-Use-foreach_hash-macro-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v11-0004-Use-foreach_hash-macro-throughout-the-codebase.patch RnJvbSBiNGJiOWEyZTcyNmNjMTdjY2NlZTU4NjY5MDVhZjJiY2NiZjIzN2IzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MSA0LzVdIFVzZSBmb3JlYWNoX2hhc2ggbWFjcm8gdGhyb3VnaG91dCB0aGUgY29kZWJhc2UKClRo aXMgc3RhcnRzIHVzaW5nIHRoZSBuZXcgZm9yZWFjaF9oYXNoIG1hY3JvIHRocm91Z2hvdXQgdGhl IGNvZGViYXNlLgpUaGlzIG1ha2VzIGNvZGUgZWFzaWVyIHRvIHJlYWQsIGJ1dCBvYnZpb3VzbHkg ZG9lcyBpbnRyb2R1Y2UKYmFja3BhdGNoaW5nIHByb2JsZW1zLiBXZSBjYW4gY2hvb3NlIG5vdCB0 byBkbyB0aGlzIHJlZmFjdG9yIHRvIGF2b2lkCnRoYXQuIE9yIHdlIGNvdWxkIGluc3RlYWQgY2hv b3NlIHRvIGRvIHRoZSByZWZhY3RvciBhbmQgdGhlbiBiYWNrcGF0Y2gKdGhlc2UgbmV3IG1hY3Jv cyBzbyB0aGV5IGNhbiBiZSB1c2VkIGluIGJhY2twYXRjaGVkIGNvZGUuCgpBdCB0aGUgdmVyeSBs ZWFzdCB3ZSBzaG91bGQgY2hvb3NlIGEgZmV3IHBsYWNlcyB3aGVyZSB3ZSB1c2UgdGhlIG5ldwpt YWNyb3MgdG8gbWFrZSBzdXJlIHRoZXkgaGF2ZSBjb3ZlcmFnZS4KLS0tCiBjb250cmliL2RibGlu ay9kYmxpbmsuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArLQogLi4uL3BnX3N0YXRfc3Rh dGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgMzkgKysrLS0tLS0tCiBjb250cmliL3Bn X3RyZ20vdHJnbV9yZWdleHAuYyAgICAgICAgICAgICAgICAgfCAxOCArLS0tCiBjb250cmliL3Bv c3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgICAgICAgICAgICAgfCAyNiArKy0tLS0KIGNvbnRyaWIv cG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAxOCArLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyAgICAgICAgfCAyMCArLS0tLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19lbnVtLmMgICAgICAgICAgICAgICAgIHwgMTYgKystLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9zdG9yYWdlLmMgICAgICAgICAgICAgICAgIHwgMTggKystLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvYXN5bmMuYyAgICAgICAgICAgICAgICAgIHwgMjEgKystLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2Vfb3Blci5jICAgICAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRkZXNjLmMgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jICAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAzNyArKy0tLS0tLQogLi4uL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAyNCArKy0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9sb2NrLmMgICAgICAgICAgICAgICB8IDY3ICsrKy0tLS0tLS0tLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgICAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jICAgICAgICAgIHwgMTggKy0tLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9zbWdyL3NtZ3IuYyAgICAgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5k L3N0b3JhZ2Uvc3luYy9zeW5jLmMgICAgICAgICAgICAgICB8IDE3ICsrLS0KIHNyYy9iYWNrZW5k L3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jICAgICAgICAgICB8IDExICstLQogc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMgICAgICB8IDE3ICsrLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8IDY3ICsrKysrLS0tLS0tLS0tCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMgICAgfCAgNiArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAxNCArLS0KIHNyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8IDMwICsrLS0tLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAgICB8IDg3ICsrKystLS0tLS0tLS0t LS0tLS0KIHNyYy9wbC9wbHBlcmwvcGxwZXJsLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2 ICstCiAzNyBmaWxlcyBjaGFuZ2VkLCAxNTQgaW5zZXJ0aW9ucygrKSwgNTQ3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9kYmxpbmsv ZGJsaW5rLmMKaW5kZXggMzZkNGMzYTE4NDcuLjQ2Njk0OGE2NTliIDEwMDY0NAotLS0gYS9jb250 cmliL2RibGluay9kYmxpbmsuYworKysgYi9jb250cmliL2RibGluay9kYmxpbmsuYwpAQCAtMTI3 NSwxNCArMTI3NSwxMSBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGRibGlua19nZXRfY29ubmVjdGlv bnMpOwogRGF0dW0KIGRibGlua19nZXRfY29ubmVjdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCXJlbW90ZUNvbm5IYXNoRW50ICpoZW50cnk7CiAJ QXJyYXlCdWlsZFN0YXRlICphc3RhdGUgPSBOVUxMOwogCiAJaWYgKHJlbW90ZUNvbm5IYXNoKQog CXsKLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCByZW1vdGVDb25uSGFzaCk7Ci0JCXdoaWxlICgo aGVudHJ5ID0gKHJlbW90ZUNvbm5IYXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKHJlbW90ZUNvbm5IYXNoRW50LCBoZW50cnksIHJlbW90 ZUNvbm5IYXNoKQogCQl7CiAJCQkvKiBpZ25vcmUgaXQgaWYgaXQncyBub3QgYW4gb3BlbiBjb25u ZWN0aW9uICovCiAJCQlpZiAoaGVudHJ5LT5yY29ubi5jb25uID09IE5VTEwpCmRpZmYgLS1naXQg YS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRy aWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDhhNjczOTBl NTYxLi45MTkzZDNkMThjMyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTc0MSw5ICs3NDEsNyBAQCBwZ3NzX3NobWVtX3NodXRkb3du KGludCBjb2RlLCBEYXR1bSBhcmcpCiAJRklMRQkgICAqZmlsZTsKIAljaGFyCSAgICpxYnVmZmVy ID0gTlVMTDsKIAlTaXplCQlxYnVmZmVyX3NpemUgPSAwOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNo X3NlcTsKIAlpbnQzMgkJbnVtX2VudHJpZXM7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAKIAkvKiBE b24ndCB0cnkgdG8gZHVtcCBkdXJpbmcgYSBjcmFzaC4gKi8KIAlpZiAoY29kZSkKQEAgLTc3Nyw4 ICs3NzUsNyBAQCBwZ3NzX3NobWVtX3NodXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJICog V2hlbiBzZXJpYWxpemluZyB0byBkaXNrLCB3ZSBzdG9yZSBxdWVyeSB0ZXh0cyBpbW1lZGlhdGVs eSBhZnRlciB0aGVpcgogCSAqIGVudHJ5IGRhdGEuICBBbnkgb3JwaGFuZWQgcXVlcnkgdGV4dHMg YXJlIHRoZXJlYnkgZXhjbHVkZWQuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIHBn c3NfaGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAh PSBOVUxMKQorCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJewog CQlpbnQJCQlsZW4gPSBlbnRyeS0+cXVlcnlfbGVuOwogCQljaGFyCSAgICpxc3RyID0gcXRleHRf ZmV0Y2goZW50cnktPnF1ZXJ5X29mZnNldCwgbGVuLApAQCAtNzkwLDggKzc4Nyw4IEBAIHBnc3Nf c2htZW1fc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAkJaWYgKGZ3cml0ZShlbnRyeSwg c2l6ZW9mKHBnc3NFbnRyeSksIDEsIGZpbGUpICE9IDEgfHwKIAkJCWZ3cml0ZShxc3RyLCAxLCBs ZW4gKyAxLCBmaWxlKSAhPSBsZW4gKyAxKQogCQl7Ci0JCQkvKiBub3RlOiB3ZSBhc3N1bWUgaGFz aF9zZXFfdGVybSB3b24ndCBjaGFuZ2UgZXJybm8gKi8KLQkJCWhhc2hfc2VxX3Rlcm0oJmhhc2hf c2VxKTsKKwkJCS8qIG5vdGU6IHdlIGFzc3VtZSBmb3JlYWNoX2hhc2hfdGVybSB3b24ndCBjaGFu Z2UgZXJybm8gKi8KKwkJCWZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5KTsKIAkJCWdvdG8gZXJyb3I7 CiAJCX0KIAl9CkBAIC0xNjk1LDggKzE2OTIsNiBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJu YWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJU2l6ZQkJcWJ1ZmZlcl9zaXplID0gMDsKIAlT aXplCQlleHRlbnQgPSAwOwogCWludAkJCWdjX2NvdW50ID0gMDsKLQlIQVNIX1NFUV9TVEFUVVMg aGFzaF9zZXE7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAKIAkvKgogCSAqIFN1cGVydXNlcnMgb3Ig cm9sZXMgd2l0aCB0aGUgcHJpdmlsZWdlcyBvZiBwZ19yZWFkX2FsbF9zdGF0cyBtZW1iZXJzCkBA IC0xODI1LDggKzE4MjAsNyBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJuYWwoRnVuY3Rpb25D YWxsSW5mbyBmY2luZm8sCiAJCX0KIAl9CiAKLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdz c19oYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJ CURhdHVtCQl2YWx1ZXNbUEdfU1RBVF9TVEFURU1FTlRTX0NPTFNdOwogCQlib29sCQludWxsc1tQ R19TVEFUX1NUQVRFTUVOVFNfQ09MU107CkBAIC0yMTcwLDkgKzIxNjQsNyBAQCBlbnRyeV9jbXAo Y29uc3Qgdm9pZCAqbGhzLCBjb25zdCB2b2lkICpyaHMpCiBzdGF0aWMgdm9pZAogZW50cnlfZGVh bGxvYyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsKIAlwZ3NzRW50cnkgKipl bnRyaWVzOwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCWludAkJCW52aWN0aW1zOwogCWludAkJCWk7 CiAJU2l6ZQkJdG90dGV4dGxlbjsKQEAgLTIxOTYsOCArMjE4OCw3IEBAIGVudHJ5X2RlYWxsb2Mo dm9pZCkKIAl0b3R0ZXh0bGVuID0gMDsKIAludmFsaWR0ZXh0cyA9IDA7CiAKLQloYXNoX3NlcV9p bml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2Vh cmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnks IHBnc3NfaGFzaCkKIAl7CiAJCWVudHJpZXNbaSsrXSA9IGVudHJ5OwogCQkvKiAiU3RpY2t5IiBl bnRyaWVzIGdldCBhIGRpZmZlcmVudCB1c2FnZSBkZWNheSByYXRlLiAqLwpAQCAtMjUwOSw4ICsy NTAwLDYgQEAgZ2NfcXRleHRzKHZvaWQpCiAJY2hhcgkgICAqcWJ1ZmZlcjsKIAlTaXplCQlxYnVm ZmVyX3NpemU7CiAJRklMRQkgICAqcWZpbGUgPSBOVUxMOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNo X3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAlTaXplCQlleHRlbnQ7CiAJaW50CQkJbmVudHJp ZXM7CiAKQEAgLTI1NTIsOCArMjU0MSw3IEBAIGdjX3F0ZXh0cyh2b2lkKQogCWV4dGVudCA9IDA7 CiAJbmVudHJpZXMgPSAwOwogCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIHBnc3NfaGFzaCk7 Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJewogCQlpbnQJCQlx dWVyeV9sZW4gPSBlbnRyeS0+cXVlcnlfbGVuOwogCQljaGFyCSAgICpxcnkgPSBxdGV4dF9mZXRj aChlbnRyeS0+cXVlcnlfb2Zmc2V0LApAQCAtMjU3Niw3ICsyNTY0LDcgQEAgZ2NfcXRleHRzKHZv aWQpCiAJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3Vs ZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwKIAkJCQkJCQlQR1NTX1RFWFRfRklMRSkpKTsK LQkJCWhhc2hfc2VxX3Rlcm0oJmhhc2hfc2VxKTsKKwkJCWZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5 KTsKIAkJCWdvdG8gZ2NfZmFpbDsKIAkJfQogCkBAIC0yNjQzLDggKzI2MzEsNyBAQCBnY19mYWls OgogCSAqIFNpbmNlIHRoZSBjb250ZW50cyBvZiB0aGUgZXh0ZXJuYWwgZmlsZSBhcmUgbm93IHVu Y2VydGFpbiwgbWFyayBhbGwKIAkgKiBoYXNodGFibGUgZW50cmllcyBhcyBoYXZpbmcgaW52YWxp ZCB0ZXh0cy4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3 aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWVudHJ5LT5xdWVy eV9vZmZzZXQgPSAwOwogCQllbnRyeS0+cXVlcnlfbGVuID0gLTE7CkBAIC0yNzA4LDggKzI2OTUs NiBAQCBpZiAoZSkgeyBcCiBzdGF0aWMgVGltZXN0YW1wVHoKIGVudHJ5X3Jlc2V0KE9pZCB1c2Vy aWQsIE9pZCBkYmlkLCBpbnQ2NCBxdWVyeWlkLCBib29sIG1pbm1heF9vbmx5KQogewotCUhBU0hf U0VRX1NUQVRVUyBoYXNoX3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAlGSUxFCSAgICpxZmls ZTsKIAlpbnQ2NAkJbnVtX2VudHJpZXM7CiAJaW50NjQJCW51bV9yZW1vdmUgPSAwOwpAQCAtMjcy OSw2ICsyNzE0LDggQEAgZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1 ZXJ5aWQsIGJvb2wgbWlubWF4X29ubHkpCiAJaWYgKHVzZXJpZCAhPSAwICYmIGRiaWQgIT0gMCAm JiBxdWVyeWlkICE9IElOVDY0Q09OU1QoMCkpCiAJewogCQkvKiBJZiBhbGwgdGhlIHBhcmFtZXRl cnMgYXJlIGF2YWlsYWJsZSwgdXNlIHRoZSBmYXN0IHBhdGguICovCisJCXBnc3NFbnRyeSAgKmVu dHJ5OworCiAJCW1lbXNldCgma2V5LCAwLCBzaXplb2YocGdzc0hhc2hLZXkpKTsKIAkJa2V5LnVz ZXJpZCA9IHVzZXJpZDsKIAkJa2V5LmRiaWQgPSBkYmlkOwpAQCAtMjc1Miw4ICsyNzM5LDcgQEAg ZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlu bWF4X29ubHkpCiAJZWxzZSBpZiAodXNlcmlkICE9IDAgfHwgZGJpZCAhPSAwIHx8IHF1ZXJ5aWQg IT0gSU5UNjRDT05TVCgwKSkKIAl7CiAJCS8qIFJlc2V0IGVudHJpZXMgY29ycmVzcG9uZGluZyB0 byB2YWxpZCBwYXJhbWV0ZXJzLiAqLwotCQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19o YXNoKTsKLQkJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBO VUxMKQorCQlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCQl7CiAJ CQlpZiAoKCF1c2VyaWQgfHwgZW50cnktPmtleS51c2VyaWQgPT0gdXNlcmlkKSAmJgogCQkJCSgh ZGJpZCB8fCBlbnRyeS0+a2V5LmRiaWQgPT0gZGJpZCkgJiYKQEAgLTI3NjYsOCArMjc1Miw3IEBA IGVudHJ5X3Jlc2V0KE9pZCB1c2VyaWQsIE9pZCBkYmlkLCBpbnQ2NCBxdWVyeWlkLCBib29sIG1p bm1heF9vbmx5KQogCWVsc2UKIAl7CiAJCS8qIFJlc2V0IGFsbCBlbnRyaWVzLiAqLwotCQloYXNo X3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQkJd2hpbGUgKChlbnRyeSA9IGhhc2hf c2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2gocGdzc0VudHJ5 LCBlbnRyeSwgcGdzc19oYXNoKQogCQl7CiAJCQlTSU5HTEVfRU5UUllfUkVTRVQoZW50cnkpOwog CQl9CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIv cGdfdHJnbS90cmdtX3JlZ2V4cC5jCmluZGV4IDM4M2NlNmIzMWIxLi4yNjQwM2Y4YjAyYSAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190 cmdtL3RyZ21fcmVnZXhwLmMKQEAgLTE0NTIsMTAgKzE0NTIsOCBAQCBwcmVmaXhDb250YWlucyhU cmdtUHJlZml4ICpwcmVmaXgxLCBUcmdtUHJlZml4ICpwcmVmaXgyKQogc3RhdGljIGJvb2wKIHNl bGVjdENvbG9yVHJpZ3JhbXMoVHJnbU5GQSAqdHJnbU5GQSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMg c2Nhbl9zdGF0dXM7CiAJaW50CQkJYXJjc0NvdW50ID0gdHJnbU5GQS0+YXJjc0NvdW50LAogCQkJ CWk7Ci0JVHJnbVN0YXRlICAqc3RhdGU7CiAJQ29sb3JUcmdtSW5mbyAqY29sb3JUcmdtczsKIAlp bnQ2NAkJdG90YWxUcmdtQ291bnQ7CiAJZmxvYXQ0CQl0b3RhbFRyZ21QZW5hbHR5OwpAQCAtMTQ2 Niw4ICsxNDY0LDcgQEAgc2VsZWN0Q29sb3JUcmlncmFtcyhUcmdtTkZBICp0cmdtTkZBKQogCXRy Z21ORkEtPmNvbG9yVHJnbXMgPSBjb2xvclRyZ21zOwogCiAJaSA9IDA7Ci0JaGFzaF9zZXFfaW5p dCgmc2Nhbl9zdGF0dXMsIHRyZ21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0ZSA9IChUcmdt U3RhdGUgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFRyZ21TdGF0ZSwgc3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJCUxpc3RDZWxs ICAgKmNlbGw7CiAKQEAgLTE5MjksOCArMTkyNiw2IEBAIHBhY2tHcmFwaChUcmdtTkZBICp0cmdt TkZBLCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQogCWludAkJCXNudW1iZXIgPSAyLAogCQkJCWFy Y0luZGV4LAogCQkJCWFyY3NDb3VudDsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7Ci0J VHJnbVN0YXRlICAqc3RhdGU7CiAJVHJnbVBhY2tBcmNJbmZvICphcmNzOwogCVRyZ21QYWNrZWRB cmMgKnBhY2tlZEFyY3M7CiAJVHJnbVBhY2tlZEdyYXBoICpyZXN1bHQ7CkBAIC0xOTM4LDggKzE5 MzMsNyBAQCBwYWNrR3JhcGgoVHJnbU5GQSAqdHJnbU5GQSwgTWVtb3J5Q29udGV4dCByY29udGV4 dCkKIAkJCQlqOwogCiAJLyogRW51bWVyYXRlIHN1cnZpdmluZyBzdGF0ZXMsIGdpdmluZyBpbml0 IGFuZCBmaW4gcmVzZXJ2ZWQgbnVtYmVycyAqLwotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVz LCB0cmdtTkZBLT5zdGF0ZXMpOwotCXdoaWxlICgoc3RhdGUgPSAoVHJnbVN0YXRlICopIGhhc2hf c2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChUcmdtU3Rh dGUsIHN0YXRlLCB0cmdtTkZBLT5zdGF0ZXMpCiAJewogCQl3aGlsZSAoc3RhdGUtPnBhcmVudCkK IAkJCXN0YXRlID0gc3RhdGUtPnBhcmVudDsKQEAgLTE5NjEsOCArMTk1NSw3IEBAIHBhY2tHcmFw aChUcmdtTkZBICp0cmdtTkZBLCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQogCS8qIENvbGxlY3Qg YXJyYXkgb2YgYWxsIGFyY3MgKi8KIAlhcmNzID0gcGFsbG9jX2FycmF5KFRyZ21QYWNrQXJjSW5m bywgdHJnbU5GQS0+YXJjc0NvdW50KTsKIAlhcmNJbmRleCA9IDA7Ci0JaGFzaF9zZXFfaW5pdCgm c2Nhbl9zdGF0dXMsIHRyZ21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0ZSA9IChUcmdtU3Rh dGUgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9o YXNoKFRyZ21TdGF0ZSwgc3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJCVRyZ21TdGF0ZSAg KnNvdXJjZSA9IHN0YXRlOwogCQlMaXN0Q2VsbCAgICpjZWxsOwpAQCAtMjIwMSwxNiArMjE5NCwx MyBAQCBzdGF0aWMgdm9pZAogcHJpbnRUcmdtTkZBKFRyZ21ORkEgKnRyZ21ORkEpCiB7CiAJU3Ry aW5nSW5mb0RhdGEgYnVmOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlUcmdtU3Rh dGUgICpzdGF0ZTsKIAlUcmdtU3RhdGUgICppbml0c3RhdGUgPSBOVUxMOwogCiAJaW5pdFN0cmlu Z0luZm8oJmJ1Zik7CiAKIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICJcbmRpZ3JhcGgg dHJhbnNmb3JtZWRORkEge1xuIik7CiAKLQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgdHJn bU5GQS0+c3RhdGVzKTsKLQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAqKSBoYXNoX3NlcV9z ZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJnbVN0YXRlLCBz dGF0ZSwgdHJnbU5GQS0+c3RhdGVzKQogCXsKIAkJTGlzdENlbGwgICAqY2VsbDsKIApkaWZmIC0t Z2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvY29ubmVjdGlvbi5jCmluZGV4IDk3NTM5NGZhM2IxLi5kYzNhNWU1ODc4MyAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCisrKyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwpAQCAtMTA2NSw4ICsxMDY1LDYgQEAgcGdmZHdfcmVwb3J0 X2ludGVybmFsKGludCBlbGV2ZWwsIFBHcmVzdWx0ICpyZXMsIFBHY29ubiAqY29ubiwKIHN0YXRp YyB2b2lkCiBwZ2Zkd194YWN0X2NhbGxiYWNrKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKIAlMaXN0 CSAgICpwZW5kaW5nX2VudHJpZXMgPSBOSUw7CiAJTGlzdAkgICAqY2FuY2VsX3JlcXVlc3RlZCA9 IE5JTDsKIApAQCAtMTA3OCw4ICsxMDc2LDcgQEAgcGdmZHdfeGFjdF9jYWxsYmFjayhYYWN0RXZl bnQgZXZlbnQsIHZvaWQgKmFyZykKIAkgKiBTY2FuIGFsbCBjb25uZWN0aW9uIGNhY2hlIGVudHJp ZXMgdG8gZmluZCBvcGVuIHJlbW90ZSB0cmFuc2FjdGlvbnMsIGFuZAogCSAqIGNsb3NlIHRoZW0u CiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgQ29ubmVjdGlvbkhhc2gpOwotCXdoaWxlICgo ZW50cnkgPSAoQ29ubkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9y ZWFjaF9oYXNoKENvbm5DYWNoZUVudHJ5LCBlbnRyeSwgQ29ubmVjdGlvbkhhc2gpCiAJewogCQlQ R3Jlc3VsdCAgICpyZXM7CiAKQEAgLTEyMTYsOCArMTIxMyw2IEBAIHN0YXRpYyB2b2lkCiBwZ2Zk d19zdWJ4YWN0X2NhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwgU3ViVHJhbnNhY3Rpb25JZCBt eVN1YmlkLAogCQkJCQkgICBTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkLCB2b2lkICphcmcp CiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCWlu dAkJCWN1cmxldmVsOwogCUxpc3QJICAgKnBlbmRpbmdfZW50cmllcyA9IE5JTDsKIAlMaXN0CSAg ICpjYW5jZWxfcmVxdWVzdGVkID0gTklMOwpAQCAtMTIzNiw4ICsxMjMxLDcgQEAgcGdmZHdfc3Vi eGFjdF9jYWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJp ZCwKIAkgKiBvZiB0aGUgY3VycmVudCBsZXZlbCwgYW5kIGNsb3NlIHRoZW0uCiAJICovCiAJY3Vy bGV2ZWwgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25OZXN0TGV2ZWwoKTsKLQloYXNoX3NlcV9pbml0 KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRy eSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50 cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCWNoYXIJCXNxbFsxMDBdOwogCkBAIC0x MzI4LDE0ICsxMzIyLDEwIEBAIHBnZmR3X3N1YnhhY3RfY2FsbGJhY2soU3ViWGFjdEV2ZW50IGV2 ZW50LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiBzdGF0aWMgdm9pZAogcGdmZHdfaW52YWxf Y2FsbGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhh c2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlDb25uQ2FjaGVFbnRyeSAqZW50 cnk7Ci0KIAlBc3NlcnQoY2FjaGVpZCA9PSBGT1JFSUdOU0VSVkVST0lEIHx8IGNhY2hlaWQgPT0g VVNFUk1BUFBJTkdPSUQpOwogCiAJLyogQ29ubmVjdGlvbkhhc2ggbXVzdCBleGlzdCBhbHJlYWR5 LCBpZiB3ZSdyZSByZWdpc3RlcmVkICovCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgQ29ubmVjdGlv bkhhc2gpOwotCXdoaWxlICgoZW50cnkgPSAoQ29ubkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2Vh cmNoKCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKENvbm5DYWNoZUVudHJ5LCBlbnRyeSwgQ29ubmVj dGlvbkhhc2gpCiAJewogCQkvKiBJZ25vcmUgaW52YWxpZCBlbnRyaWVzICovCiAJCWlmIChlbnRy eS0+Y29ubiA9PSBOVUxMKQpAQCAtMjE4Niw4ICsyMTc2LDYgQEAgcG9zdGdyZXNfZmR3X2dldF9j b25uZWN0aW9uc19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCQkJCQkJCSAg ZW51bSBwZ2Zkd1ZlcnNpb24gYXBpX3ZlcnNpb24pCiB7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZv ID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwotCUhBU0hfU0VRX1NUQVRV UyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKIAogCUluaXRNYXRlcmlhbGl6ZWRTUkYo ZmNpbmZvLCAwKTsKIApAQCAtMjIxMCw4ICsyMTk4LDcgQEAgcG9zdGdyZXNfZmR3X2dldF9jb25u ZWN0aW9uc19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCWVsb2coRVJST1Is ICJpbmNvcnJlY3QgbnVtYmVyIG9mIG91dHB1dCBhcmd1bWVudHMiKTsKIAl9CiAKLQloYXNoX3Nl cV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2Fj aGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNh Y2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCUZvcmVpZ25TZXJ2ZXIgKnNl cnZlcjsKIAkJRGF0dW0JCXZhbHVlc1tQT1NUR1JFU19GRFdfR0VUX0NPTk5FQ1RJT05TX0NPTFNd ID0gezB9OwpAQCAtMjQ2Myw4ICsyNDUwLDYgQEAgcG9zdGdyZXNfZmR3X2Rpc2Nvbm5lY3RfYWxs KFBHX0ZVTkNUSU9OX0FSR1MpCiBzdGF0aWMgYm9vbAogZGlzY29ubmVjdF9jYWNoZWRfY29ubmVj dGlvbnMoT2lkIHNlcnZlcmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNo ZUVudHJ5ICplbnRyeTsKIAlib29sCQlhbGwgPSAhT2lkSXNWYWxpZChzZXJ2ZXJpZCk7CiAJYm9v bAkJcmVzdWx0ID0gZmFsc2U7CiAKQEAgLTI0NzUsOCArMjQ2MCw3IEBAIGRpc2Nvbm5lY3RfY2Fj aGVkX2Nvbm5lY3Rpb25zKE9pZCBzZXJ2ZXJpZCkKIAlpZiAoIUNvbm5lY3Rpb25IYXNoKQogCQly ZXR1cm4gZmFsc2U7CiAKLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0J d2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4p KSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkK IAl7CiAJCS8qIElnbm9yZSBjYWNoZSBlbnRyeSBpZiBubyBvcGVuIGNvbm5lY3Rpb24gcmlnaHQg bm93LiAqLwogCQlpZiAoIWVudHJ5LT5jb25uKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvc2hpcHBhYmxlLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYwppbmRl eCBjYmExYzA5NjdhOS4uMDE0YzUzNzExNWEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3NoaXBwYWJsZS5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCkBA IC02NiwxNyArNjYsMTMgQEAgc3RhdGljIHZvaWQKIEludmFsaWRhdGVTaGlwcGFibGVDYWNoZUNh bGxiYWNrKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsCiAJCQkJCQkJCSB1 aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JU2hpcHBhYmxl Q2FjaGVFbnRyeSAqZW50cnk7Ci0KIAkvKgogCSAqIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBmbHVz aCBvbmx5IGNhY2hlIGVudHJpZXMgcmVsYXRpbmcgdG8gdGhlCiAJICogcGdfZm9yZWlnbl9zZXJ2 ZXIgZW50cnkgYmVpbmcgb3V0ZGF0ZWQ7IGJ1dCB0aGF0IHdvdWxkIGJlIG1vcmUKIAkgKiBjb21w bGljYXRlZCwgYW5kIGl0J3MgcHJvYmFibHkgbm90IHdvcnRoIHRoZSB0cm91YmxlLiAgU28gZm9y IG5vdywganVzdAogCSAqIGZsdXNoIGFsbCBlbnRyaWVzLgogCSAqLwotCWhhc2hfc2VxX2luaXQo JnN0YXR1cywgU2hpcHBhYmxlQ2FjaGVIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFNoaXBwYWJs ZUNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVh Y2hfaGFzaChTaGlwcGFibGVDYWNoZUVudHJ5LCBlbnRyeSwgU2hpcHBhYmxlQ2FjaGVIYXNoKQog CXsKIAkJaWYgKGhhc2hfc2VhcmNoKFNoaXBwYWJsZUNhY2hlSGFzaCwKIAkJCQkJCSZlbnRyeS0+ a2V5LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKaW5kZXggMzNiZTA4ZGUzNjIu LjhlMjc0NjViMGI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRl aGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKQEAgLTI5 MSwxNiArMjkxLDExIEBAIGJlZ2luX2hlYXBfcmV3cml0ZShSZWxhdGlvbiBvbGRfaGVhcCwgUmVs YXRpb24gbmV3X2hlYXAsIFRyYW5zYWN0aW9uSWQgb2xkZXN0X3htCiB2b2lkCiBlbmRfaGVhcF9y ZXdyaXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2VxX3N0YXR1 czsKLQlVbnJlc29sdmVkVHVwIHVucmVzb2x2ZWQ7Ci0KIAkvKgogCSAqIFdyaXRlIGFueSByZW1h aW5pbmcgdHVwbGVzIGluIHRoZSBVbnJlc29sdmVkVHVwcyB0YWJsZS4gSWYgd2UgaGF2ZSBhbnkK IAkgKiBsZWZ0LCB0aGV5IHNob3VsZCBpbiBmYWN0IGJlIGRlYWQsIGJ1dCBsZXQncyBlcnIgb24g dGhlIHNhZmUgc2lkZS4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFfc3RhdHVzLCBzdGF0ZS0+ cnNfdW5yZXNvbHZlZF90dXBzKTsKLQotCXdoaWxlICgodW5yZXNvbHZlZCA9IGhhc2hfc2VxX3Nl YXJjaCgmc2VxX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFVucmVzb2x2ZWRUdXBE YXRhLCB1bnJlc29sdmVkLCBzdGF0ZS0+cnNfdW5yZXNvbHZlZF90dXBzKQogCXsKIAkJSXRlbVBv aW50ZXJTZXRJbnZhbGlkKCZ1bnJlc29sdmVkLT50dXBsZS0+dF9kYXRhLT50X2N0aWQpOwogCQly YXdfaGVhcF9pbnNlcnQoc3RhdGUsIHVucmVzb2x2ZWQtPnR1cGxlKTsKQEAgLTc5OCw4ICs3OTMs NiBAQCBsb2dpY2FsX2JlZ2luX2hlYXBfcmV3cml0ZShSZXdyaXRlU3RhdGUgc3RhdGUpCiBzdGF0 aWMgdm9pZAogbG9naWNhbF9oZWFwX3Jld3JpdGVfZmx1c2hfbWFwcGluZ3MoUmV3cml0ZVN0YXRl IHN0YXRlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVJld3JpdGVNYXBwaW5n RmlsZSAqc3JjOwogCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwogCiAJQXNzZXJ0KHN0YXRlLT5y c19sb2dpY2FsX3Jld3JpdGUpOwpAQCAtODExLDggKzgwNCw3IEBAIGxvZ2ljYWxfaGVhcF9yZXdy aXRlX2ZsdXNoX21hcHBpbmdzKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIAllbG9nKERFQlVHMSwgImZs dXNoaW5nICV1IGxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIGVudHJpZXMiLAogCQkgc3RhdGUtPnJz X251bV9yZXdyaXRlX21hcHBpbmdzKTsKIAotCWhhc2hfc2VxX2luaXQoJnNlcV9zdGF0dXMsIHN0 YXRlLT5yc19sb2dpY2FsX21hcHBpbmdzKTsKLQl3aGlsZSAoKHNyYyA9IChSZXdyaXRlTWFwcGlu Z0ZpbGUgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFfc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2goUmV3cml0ZU1hcHBpbmdGaWxlLCBzcmMsIHN0YXRlLT5yc19sb2dpY2FsX21hcHBpbmdz KQogCXsKIAkJY2hhcgkgICAqd2FsZGF0YTsKIAkJY2hhcgkgICAqd2FsZGF0YV9zdGFydDsKQEAg LTg5Niw5ICs4ODgsNiBAQCBsb2dpY2FsX2hlYXBfcmV3cml0ZV9mbHVzaF9tYXBwaW5ncyhSZXdy aXRlU3RhdGUgc3RhdGUpCiBzdGF0aWMgdm9pZAogbG9naWNhbF9lbmRfaGVhcF9yZXdyaXRlKFJl d3JpdGVTdGF0ZSBzdGF0ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2VxX3N0YXR1czsKLQlSZXdy aXRlTWFwcGluZ0ZpbGUgKnNyYzsKLQogCS8qIGRvbmUsIG5vIGxvZ2ljYWwgcmV3cml0ZSBpbiBw cm9ncmVzcyAqLwogCWlmICghc3RhdGUtPnJzX2xvZ2ljYWxfcmV3cml0ZSkKIAkJcmV0dXJuOwpA QCAtOTA4LDggKzg5Nyw3IEBAIGxvZ2ljYWxfZW5kX2hlYXBfcmV3cml0ZShSZXdyaXRlU3RhdGUg c3RhdGUpCiAJCWxvZ2ljYWxfaGVhcF9yZXdyaXRlX2ZsdXNoX21hcHBpbmdzKHN0YXRlKTsKIAog CS8qIEl0ZXJhdGUgb3ZlciBhbGwgbWFwcGluZ3Mgd2UgaGF2ZSB3cml0dGVuIGFuZCBmc3luYyB0 aGUgZmlsZXMuICovCi0JaGFzaF9zZXFfaW5pdCgmc2VxX3N0YXR1cywgc3RhdGUtPnJzX2xvZ2lj YWxfbWFwcGluZ3MpOwotCXdoaWxlICgoc3JjID0gKFJld3JpdGVNYXBwaW5nRmlsZSAqKSBoYXNo X3NlcV9zZWFyY2goJnNlcV9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZXdyaXRl TWFwcGluZ0ZpbGUsIHNyYywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpCiAJewogCQlpZiAo RmlsZVN5bmMoc3JjLT52ZmQsIFdBSVRfRVZFTlRfTE9HSUNBTF9SRVdSSVRFX1NZTkMpICE9IDAp CiAJCQllcmVwb3J0KGRhdGFfc3luY19lbGV2ZWwoRVJST1IpLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ndXRpbHMuYwppbmRleCBkMTFlNDJjOTQ5MC4uM2M3ZmM2NWI4ZDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCkBAIC0xNjAsMTUgKzE2MCwxMCBAQCBzdGF0 aWMgdm9pZAogZm9yZ2V0X2ludmFsaWRfcGFnZXMoUmVsRmlsZUxvY2F0b3IgbG9jYXRvciwgRm9y a051bWJlciBmb3Jrbm8sCiAJCQkJCSBCbG9ja051bWJlciBtaW5ibGtubykKIHsKLQlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOwotCXhsX2ludmFsaWRfcGFnZSAqaGVudHJ5OwotCiAJaWYgKGludmFs aWRfcGFnZV90YWIgPT0gTlVMTCkKIAkJcmV0dXJuOwkJCQkJLyogbm90aGluZyB0byBkbyAqLwog Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBpbnZhbGlkX3BhZ2VfdGFiKTsKLQotCXdoaWxlICgo aGVudHJ5ID0gKHhsX2ludmFsaWRfcGFnZSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKHhsX2ludmFsaWRfcGFnZSwgaGVudHJ5LCBpbnZhbGlkX3Bh Z2VfdGFiKQogCXsKIAkJaWYgKFJlbEZpbGVMb2NhdG9yRXF1YWxzKGhlbnRyeS0+a2V5LmxvY2F0 b3IsIGxvY2F0b3IpICYmCiAJCQloZW50cnktPmtleS5mb3Jrbm8gPT0gZm9ya25vICYmCkBAIC0x OTAsMTUgKzE4NSwxMCBAQCBmb3JnZXRfaW52YWxpZF9wYWdlcyhSZWxGaWxlTG9jYXRvciBsb2Nh dG9yLCBGb3JrTnVtYmVyIGZvcmtubywKIHN0YXRpYyB2b2lkCiBmb3JnZXRfaW52YWxpZF9wYWdl c19kYihPaWQgZGJpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCXhsX2ludmFsaWRf cGFnZSAqaGVudHJ5OwotCiAJaWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkKIAkJcmV0dXJu OwkJCQkJLyogbm90aGluZyB0byBkbyAqLwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBpbnZh bGlkX3BhZ2VfdGFiKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKHhsX2ludmFsaWRfcGFnZSAqKSBo YXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHhsX2ludmFs aWRfcGFnZSwgaGVudHJ5LCBpbnZhbGlkX3BhZ2VfdGFiKQogCXsKIAkJaWYgKGhlbnRyeS0+a2V5 LmxvY2F0b3IuZGJPaWQgPT0gZGJpZCkKIAkJewpAQCAtMjI4LDIwICsyMTgsMTYgQEAgWExvZ0hh dmVJbnZhbGlkUGFnZXModm9pZCkKIHZvaWQKIFhMb2dDaGVja0ludmFsaWRQYWdlcyh2b2lkKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxpZF9wYWdlICpoZW50cnk7CiAJ Ym9vbAkJZm91bmRvbmUgPSBmYWxzZTsKIAogCWlmIChpbnZhbGlkX3BhZ2VfdGFiID09IE5VTEwp CiAJCXJldHVybjsJCQkJCS8qIG5vdGhpbmcgdG8gZG8gKi8KIAotCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgaW52YWxpZF9wYWdlX3RhYik7Ci0KIAkvKgogCSAqIE91ciBzdHJhdGVneSBpcyB0byBl bWl0IFdBUk5JTkcgbWVzc2FnZXMgZm9yIGFsbCByZW1haW5pbmcgZW50cmllcyBhbmQKIAkgKiBv bmx5IFBBTklDIGFmdGVyIHdlJ3ZlIGR1bXBlZCBhbGwgdGhlIGF2YWlsYWJsZSBpbmZvLgogCSAq LwotCXdoaWxlICgoaGVudHJ5ID0gKHhsX2ludmFsaWRfcGFnZSAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHhsX2ludmFsaWRfcGFnZSwgaGVudHJ5 LCBpbnZhbGlkX3BhZ2VfdGFiKQogCXsKIAkJcmVwb3J0X2ludmFsaWRfcGFnZShXQVJOSU5HLCBo ZW50cnktPmtleS5sb2NhdG9yLCBoZW50cnktPmtleS5mb3Jrbm8sCiAJCQkJCQkJaGVudHJ5LT5r ZXkuYmxrbm8sIGhlbnRyeS0+cHJlc2VudCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2VudW0uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jCmluZGV4IDg2Yzhi YWRhNTU3Li5iZTRhOGVjZDllNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19l bnVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKQEAgLTgzOCwxMiArODM4 LDEwIEBAIFNlcmlhbGl6ZVVuY29tbWl0dGVkRW51bXModm9pZCAqc3BhY2UsIFNpemUgc2l6ZSkK IAkvKiBXcml0ZSBvdXQgYWxsIHRoZSBPSURzIGZyb20gdGhlIHR5cGVzIGhhc2ggdGFibGUsIGlm IHRoZXJlIGlzIG9uZS4gKi8KIAlpZiAodW5jb21taXR0ZWRfZW51bV90eXBlcykKIAl7Ci0JCUhB U0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JCU9pZAkJICAgKnZhbHVlOwotCi0JCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgdW5jb21taXR0ZWRfZW51bV90eXBlcyk7Ci0JCXdoaWxlICgodmFsdWUgPSAo T2lkICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkpCisJCWZvcmVhY2hfaGFzaChPaWQsIHZh bHVlLCB1bmNvbW1pdHRlZF9lbnVtX3R5cGVzKQorCQl7CiAJCQkqc2VyaWFsaXplZCsrID0gKnZh bHVlOworCQl9CiAJfQogCiAJLyogV3JpdGUgb3V0IHRoZSB0ZXJtaW5hdG9yLiAqLwpAQCAtODUy LDEyICs4NTAsMTAgQEAgU2VyaWFsaXplVW5jb21taXR0ZWRFbnVtcyh2b2lkICpzcGFjZSwgU2l6 ZSBzaXplKQogCS8qIFdyaXRlIG91dCBhbGwgdGhlIE9JRHMgZnJvbSB0aGUgdmFsdWVzIGhhc2gg dGFibGUsIGlmIHRoZXJlIGlzIG9uZS4gKi8KIAlpZiAodW5jb21taXR0ZWRfZW51bV92YWx1ZXMp CiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCQlPaWQJCSAgICp2YWx1ZTsKLQotCQlo YXNoX3NlcV9pbml0KCZzdGF0dXMsIHVuY29tbWl0dGVkX2VudW1fdmFsdWVzKTsKLQkJd2hpbGUg KCh2YWx1ZSA9IChPaWQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkKKwkJZm9yZWFjaF9o YXNoKE9pZCwgdmFsdWUsIHVuY29tbWl0dGVkX2VudW1fdmFsdWVzKQorCQl7CiAJCQkqc2VyaWFs aXplZCsrID0gKnZhbHVlOworCQl9CiAJfQogCiAJLyogV3JpdGUgb3V0IHRoZSB0ZXJtaW5hdG9y LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N0b3JhZ2UuYwppbmRleCBkYjNlMDgzMTliNS4uMjdkMjFiNTU2YmUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3RvcmFnZS5jCkBAIC01OTQsMTAgKzU5NCw3IEBAIHZvaWQKIFNlcmlhbGl6ZVBl bmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNoYXIgKnN0YXJ0QWRkcmVzcykKIHsKIAlIVEFCCSAg ICp0bXBoYXNoOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCVBlbmRpbmdSZWxTeW5jICpzeW5j OwogCVBlbmRpbmdSZWxEZWxldGUgKmRlbGV0ZTsKLQlSZWxGaWxlTG9jYXRvciAqc3JjOwogCVJl bEZpbGVMb2NhdG9yICpkZXN0ID0gKFJlbEZpbGVMb2NhdG9yICopIHN0YXJ0QWRkcmVzczsKIAog CWlmICghcGVuZGluZ1N5bmNIYXNoKQpAQCAtNjA4LDkgKzYwNSwxMCBAQCBTZXJpYWxpemVQZW5k aW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpzdGFydEFkZHJlc3MpCiAJCQkJCQkgICBoYXNo X2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hhc2gpKTsKIAogCS8qIGNvbGxlY3QgYWxsIHJs b2NhdG9yIGZyb20gcGVuZGluZyBzeW5jcyAqLwotCWhhc2hfc2VxX2luaXQoJnNjYW4sIHBlbmRp bmdTeW5jSGFzaCk7Ci0Jd2hpbGUgKChzeW5jID0gKFBlbmRpbmdSZWxTeW5jICopIGhhc2hfc2Vx X3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChQZW5kaW5nUmVsU3luYywgc3luYywgcGVu ZGluZ1N5bmNIYXNoKQorCXsKIAkJKHZvaWQpIGhhc2hfc2VhcmNoKHRtcGhhc2gsICZzeW5jLT5y bG9jYXRvciwgSEFTSF9FTlRFUiwgTlVMTCk7CisJfQogCiAJLyogcmVtb3ZlIGRlbGV0ZWQgcm5v ZGVzICovCiAJZm9yIChkZWxldGUgPSBwZW5kaW5nRGVsZXRlczsgZGVsZXRlICE9IE5VTEw7IGRl bGV0ZSA9IGRlbGV0ZS0+bmV4dCkKQEAgLTYxOCw5ICs2MTYsMTAgQEAgU2VyaWFsaXplUGVuZGlu Z1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogCQkJKHZvaWQpIGhhc2hf c2VhcmNoKHRtcGhhc2gsICZkZWxldGUtPnJsb2NhdG9yLAogCQkJCQkJCSAgIEhBU0hfUkVNT1ZF LCBOVUxMKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIHRtcGhhc2gpOwotCXdoaWxlICgoc3Jj ID0gKFJlbEZpbGVMb2NhdG9yICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hf aGFzaChSZWxGaWxlTG9jYXRvciwgc3JjLCB0bXBoYXNoKQorCXsKIAkJKmRlc3QrKyA9ICpzcmM7 CisJfQogCiAJaGFzaF9kZXN0cm95KHRtcGhhc2gpOwogCkBAIC03MzMsOCArNzMyLDYgQEAgc21n ckRvUGVuZGluZ1N5bmNzKGJvb2wgaXNDb21taXQsIGJvb2wgaXNQYXJhbGxlbFdvcmtlcikKIAlp bnQJCQlucmVscyA9IDAsCiAJCQkJbWF4cmVscyA9IDA7CiAJU01nclJlbGF0aW9uICpzcmVscyA9 IE5VTEw7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JUGVuZGluZ1JlbFN5bmMgKnBlbmRpbmdz eW5jOwogCiAJQXNzZXJ0KEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgpID09IDEpOwog CkBAIC03NjMsOCArNzYwLDcgQEAgc21nckRvUGVuZGluZ1N5bmNzKGJvb2wgaXNDb21taXQsIGJv b2wgaXNQYXJhbGxlbFdvcmtlcikKIAkJCSh2b2lkKSBoYXNoX3NlYXJjaChwZW5kaW5nU3luY0hh c2gsICZwZW5kaW5nLT5ybG9jYXRvciwKIAkJCQkJCQkgICBIQVNIX1JFTU9WRSwgTlVMTCk7CiAK LQloYXNoX3NlcV9pbml0KCZzY2FuLCBwZW5kaW5nU3luY0hhc2gpOwotCXdoaWxlICgocGVuZGlu Z3N5bmMgPSAoUGVuZGluZ1JlbFN5bmMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9y ZWFjaF9oYXNoKFBlbmRpbmdSZWxTeW5jLCBwZW5kaW5nc3luYywgcGVuZGluZ1N5bmNIYXNoKQog CXsKIAkJRm9ya051bWJlcglmb3JrOwogCQlCbG9ja051bWJlciBuYmxvY2tzW01BWF9GT1JLTlVN ICsgMV07CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRleCAwYzIxZjUyODQ5OC4uMWUxNmFmYTBiYWIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYXN5bmMuYwpAQCAtMTIyOSwxNCArMTIyOSwxMCBAQCBQcmVDb21taXRfTm90aWZ5 KHZvaWQpCiAJCXBlbmRpbmdOb3RpZmllcy0+dW5pcXVlQ2hhbm5lbE5hbWVzID0gTklMOwogCQlp ZiAocGVuZGluZ05vdGlmaWVzLT51bmlxdWVDaGFubmVsSGFzaCAhPSBOVUxMKQogCQl7Ci0JCQlI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCQkJQ2hhbm5lbE5hbWUgKmNoYW5uZWxFbnRyeTsKLQot CQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBwZW5kaW5nTm90aWZpZXMtPnVuaXF1ZUNoYW5uZWxI YXNoKTsKLQkJCXdoaWxlICgoY2hhbm5lbEVudHJ5ID0gKENoYW5uZWxOYW1lICopIGhhc2hfc2Vx X3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJCWZvcmVhY2hfaGFzaChDaGFubmVsTmFtZSwg Y2hhbm5lbEVudHJ5LCBwZW5kaW5nTm90aWZpZXMtPnVuaXF1ZUNoYW5uZWxIYXNoKQogCQkJCXBl bmRpbmdOb3RpZmllcy0+dW5pcXVlQ2hhbm5lbE5hbWVzID0KLQkJCQkJbGFwcGVuZChwZW5kaW5n Tm90aWZpZXMtPnVuaXF1ZUNoYW5uZWxOYW1lcywKLQkJCQkJCQljaGFubmVsRW50cnktPmNoYW5u ZWwpOworCQkJCWxhcHBlbmQocGVuZGluZ05vdGlmaWVzLT51bmlxdWVDaGFubmVsTmFtZXMsCisJ CQkJCQljaGFubmVsRW50cnktPmNoYW5uZWwpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTY1Myw4 ICsxNjQ5LDYgQEAgUHJlcGFyZVRhYmxlRW50cmllc0ZvclVubGlzdGVuKGNvbnN0IGNoYXIgKmNo YW5uZWwpCiBzdGF0aWMgdm9pZAogUHJlcGFyZVRhYmxlRW50cmllc0ZvclVubGlzdGVuQWxsKHZv aWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcTsKLQlDaGFubmVsTmFtZSAqY2hhbm5lbEVudHJ5 OwogCVBlbmRpbmdMaXN0ZW5FbnRyeSAqcGVuZGluZzsKIAogCS8qCkBAIC0xNjYyLDggKzE2NTYs NyBAQCBQcmVwYXJlVGFibGVFbnRyaWVzRm9yVW5saXN0ZW5BbGwodm9pZCkKIAkgKiB3ZSBhcmUg bGlzdGVuaW5nIG9uIG9yIGhhdmUgcHJlcGFyZWQgdG8gbGlzdGVuIG9uLiAgUmVjb3JkIGFuIFVO TElTVEVOCiAJICogYWN0aW9uIGZvciBlYWNoIG9uZSwgb3ZlcndyaXRpbmcgYW55IGVhcmxpZXIg YXR0ZW1wdCB0byBMSVNURU4uCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc2VxLCBsb2NhbENoYW5u ZWxUYWJsZSk7Ci0Jd2hpbGUgKChjaGFubmVsRW50cnkgPSAoQ2hhbm5lbE5hbWUgKikgaGFzaF9z ZXFfc2VhcmNoKCZzZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChDaGFubmVsTmFtZSwgY2hh bm5lbEVudHJ5LCBsb2NhbENoYW5uZWxUYWJsZSkKIAl7CiAJCXBlbmRpbmcgPSAoUGVuZGluZ0xp c3RlbkVudHJ5ICopCiAJCQloYXNoX3NlYXJjaChwZW5kaW5nTGlzdGVuQWN0aW9ucywgY2hhbm5l bEVudHJ5LT5jaGFubmVsLCBIQVNIX0VOVEVSLCBOVUxMKTsKQEAgLTE3MTAsOSArMTcwMyw2IEBA IFJlbW92ZUxpc3RlbmVyRnJvbUNoYW5uZWwoR2xvYmFsQ2hhbm5lbEVudHJ5ICoqZW50cnlfcHRy LAogc3RhdGljIHZvaWQKIEFwcGx5UGVuZGluZ0xpc3RlbkFjdGlvbnMoYm9vbCBpc0NvbW1pdCkK IHsKLQlIQVNIX1NFUV9TVEFUVVMgc2VxOwotCVBlbmRpbmdMaXN0ZW5FbnRyeSAqcGVuZGluZzsK LQogCS8qIFF1aWNrIGV4aXQgaWYgbm90aGluZyB0byBkbyAqLwogCWlmIChwZW5kaW5nTGlzdGVu QWN0aW9ucyA9PSBOVUxMKQogCQlyZXR1cm47CkBAIC0xNzIyLDggKzE3MTIsNyBAQCBBcHBseVBl bmRpbmdMaXN0ZW5BY3Rpb25zKGJvb2wgaXNDb21taXQpCiAJCWVsb2coUEFOSUMsICJnbG9iYWwg Y2hhbm5lbCB0YWJsZSBtaXNzaW5nIHBvc3QtY29tbWl0L2Fib3J0Iik7CiAKIAkvKiBGb3IgZWFj aCBzdGFnZWQgYWN0aW9uIC4uLiAqLwotCWhhc2hfc2VxX2luaXQoJnNlcSwgcGVuZGluZ0xpc3Rl bkFjdGlvbnMpOwotCXdoaWxlICgocGVuZGluZyA9IChQZW5kaW5nTGlzdGVuRW50cnkgKikgaGFz aF9zZXFfc2VhcmNoKCZzZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQZW5kaW5nTGlzdGVu RW50cnksIHBlbmRpbmcsIHBlbmRpbmdMaXN0ZW5BY3Rpb25zKQogCXsKIAkJR2xvYmFsQ2hhbm5l bEtleSBrZXk7CiAJCUdsb2JhbENoYW5uZWxFbnRyeSAqZW50cnk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJl LmMKaW5kZXggZWIxYTdlY2ZlYmMuLjRhZDljMTBhN2Y4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j CkBAIC01MzMsMTYgKzUzMywxMiBAQCBEcm9wUHJlcGFyZWRTdGF0ZW1lbnQoY29uc3QgY2hhciAq c3RtdF9uYW1lLCBib29sIHNob3dFcnJvcikKIHZvaWQKIERyb3BBbGxQcmVwYXJlZFN0YXRlbWVu dHModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2VxOwotCVByZXBhcmVkU3RhdGVtZW50ICpl bnRyeTsKLQogCS8qIG5vdGhpbmcgY2FjaGVkICovCiAJaWYgKCFwcmVwYXJlZF9xdWVyaWVzKQog CQlyZXR1cm47CiAKIAkvKiB3YWxrIG92ZXIgY2FjaGUgKi8KLQloYXNoX3NlcV9pbml0KCZzZXEs IHByZXBhcmVkX3F1ZXJpZXMpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnNl cSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFByZXBhcmVkU3RhdGVtZW50LCBlbnRyeSwgcHJl cGFyZWRfcXVlcmllcykKIAl7CiAJCS8qIFJlbGVhc2UgdGhlIHBsYW5jYWNoZSBlbnRyeSAqLwog CQlEcm9wQ2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSk7CkBAIC02ODksMTEgKzY4NSw3IEBA IHBnX3ByZXBhcmVkX3N0YXRlbWVudChQR19GVU5DVElPTl9BUkdTKQogCS8qIGhhc2ggdGFibGUg bWlnaHQgYmUgdW5pbml0aWFsaXplZCAqLwogCWlmIChwcmVwYXJlZF9xdWVyaWVzKQogCXsKLQkJ SEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCQlQcmVwYXJlZFN0YXRlbWVudCAqcHJlcF9zdG10 OwotCi0JCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwcmVwYXJlZF9xdWVyaWVzKTsKLQkJd2hp bGUgKChwcmVwX3N0bXQgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwkJ Zm9yZWFjaF9oYXNoKFByZXBhcmVkU3RhdGVtZW50LCBwcmVwX3N0bXQsIHByZXBhcmVkX3F1ZXJp ZXMpCiAJCXsKIAkJCVR1cGxlRGVzYwlyZXN1bHRfZGVzYzsKIAkJCURhdHVtCQl2YWx1ZXNbOF07 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGM0NGQ1Njc2NTdmLi5iYmE2MDdmZTdhYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIyNjAsMTQgKzIyNjAsOSBAQCBFeGVjdXRl VHJ1bmNhdGVHdXRzKExpc3QgKmV4cGxpY2l0X3JlbHMsCiAJLyogTm93IGdvIHRocm91Z2ggdGhl IGhhc2ggdGFibGUsIGFuZCB0cnVuY2F0ZSBmb3JlaWduIHRhYmxlcyAqLwogCWlmIChmdF9odGFi KQogCXsKLQkJRm9yZWlnblRydW5jYXRlSW5mbyAqZnRfaW5mbzsKLQkJSEFTSF9TRVFfU1RBVFVT IHNlcTsKLQotCQloYXNoX3NlcV9pbml0KCZzZXEsIGZ0X2h0YWIpOwotCiAJCVBHX1RSWSgpOwog CQl7Ci0JCQl3aGlsZSAoKGZ0X2luZm8gPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwp CisJCQlmb3JlYWNoX2hhc2goRm9yZWlnblRydW5jYXRlSW5mbywgZnRfaW5mbywgZnRfaHRhYikK IAkJCXsKIAkJCQlGZHdSb3V0aW5lICpyb3V0aW5lID0gR2V0RmR3Um91dGluZUJ5U2VydmVySWQo ZnRfaW5mby0+c2VydmVyaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wcmVkdGVzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwpp bmRleCAxMjgwNjc5YWIyOC4uMDU4MzM0NmQ3NWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3ByZWR0ZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cHJlZHRlc3QuYwpAQCAtMjM0NCwxNSArMjM0NCwxMCBAQCBzdGF0aWMgdm9pZAogSW52YWxpZGF0 ZU9wclByb29mQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBjYWNo ZWlkLAogCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JT3ByUHJvb2ZDYWNoZUVudHJ5ICpoZW50cnk7Ci0KIAlBc3NlcnQoT3ByUHJvb2ZDYWNo ZUhhc2ggIT0gTlVMTCk7CiAKIAkvKiBDdXJyZW50bHkgd2UganVzdCByZXNldCBhbGwgZW50cmll czsgaGFyZCB0byBiZSBzbWFydGVyIC4uLiAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgT3By UHJvb2ZDYWNoZUhhc2gpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoT3ByUHJvb2ZDYWNoZUVudHJ5 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goT3By UHJvb2ZDYWNoZUVudHJ5LCBoZW50cnksIE9wclByb29mQ2FjaGVIYXNoKQogCXsKIAkJaGVudHJ5 LT5oYXZlX2ltcGxpYyA9IGZhbHNlOwogCQloZW50cnktPmhhdmVfcmVmdXRlID0gZmFsc2U7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX29wZXIuYwppbmRleCA5Njg2OWQ1ZGY1Yi4uMjBkZTUwYjkzY2MgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX29wZXIuYwpAQCAtMTA3OCwxNSArMTA3OCwxMCBAQCBzdGF0aWMgdm9pZAog SW52YWxpZGF0ZU9wckNhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIg Y2FjaGVpZCwKIAkJCQkJCSAgIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlPcHJDYWNoZUVudHJ5ICpoZW50cnk7Ci0KIAlBc3NlcnQoT3ByQ2FjaGVIYXNo ICE9IE5VTEwpOwogCiAJLyogQ3VycmVudGx5IHdlIGp1c3QgZmx1c2ggYWxsIGVudHJpZXM7IGhh cmQgdG8gYmUgc21hcnRlciAuLi4gKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIE9wckNhY2hl SGFzaCk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChPcHJDYWNoZUVudHJ5ICopIGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goT3ByQ2FjaGVFbnRyeSwgaGVu dHJ5LCBPcHJDYWNoZUhhc2gpCiAJewogCQlpZiAoaGFzaF9zZWFyY2goT3ByQ2FjaGVIYXNoLAog CQkJCQkJJmhlbnRyeS0+a2V5LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5n L3BhcnRkZXNjLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwppbmRleCBk YjI2ZTRhODJiNi4uM2VjYzkzODcyM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5j CkBAIC00NzgsMTEgKzQ3OCw3IEBAIFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChQYXJ0aXRpb25E aXJlY3RvcnkgcGRpciwgUmVsYXRpb24gcmVsKQogdm9pZAogRGVzdHJveVBhcnRpdGlvbkRpcmVj dG9yeShQYXJ0aXRpb25EaXJlY3RvcnkgcGRpcikKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCVBhcnRpdGlvbkRpcmVjdG9yeUVudHJ5ICpwZGU7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIHBkaXItPnBkaXJfaGFzaCk7Ci0Jd2hpbGUgKChwZGUgPSBoYXNoX3NlcV9zZWFyY2goJnN0 YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBhcnRpdGlvbkRpcmVjdG9yeUVudHJ5LCBw ZGUsIHBkaXItPnBkaXJfaGFzaCkKIAkJUmVsYXRpb25EZWNyZW1lbnRSZWZlcmVuY2VDb3VudChw ZGUtPnJlbCk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggYjY1NWUy NjQzODguLjg5YzM3YTczYjEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAt MTAxOCw4ICsxMDE4LDYgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkJVGlt ZXN0YW1wVHogY3VycmVudF90aW1lOwogCQlpbnQJCQltaWxsaXNfaW5jcmVtZW50OwogCQlhdmxf ZGJhc2UgICpkYmFyeTsKLQkJYXZsX2RiYXNlICAqZGI7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzZXE7 CiAJCWludAkJCWk7CiAKIAkJLyogcHV0IGFsbCB0aGUgaGFzaCBlbGVtZW50cyBpbnRvIGFuIGFy cmF5ICovCkBAIC0xMDMwLDggKzEwMjgsNyBAQCByZWJ1aWxkX2RhdGFiYXNlX2xpc3QoT2lkIG5l d2RiKQogI2VuZGlmCiAKIAkJaSA9IDA7Ci0JCWhhc2hfc2VxX2luaXQoJnNlcSwgZGJoYXNoKTsK LQkJd2hpbGUgKChkYiA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkgIT0gTlVMTCkKKwkJZm9yZWFj aF9oYXNoKGF2bF9kYmFzZSwgZGIsIGRiaGFzaCkKIAkJCW1lbWNweSgmKGRiYXJ5W2krK10pLCBk Yiwgc2l6ZW9mKGF2bF9kYmFzZSkpOwogCiAJCS8qIHNvcnQgdGhlIGFycmF5ICovCkBAIC0xMDU2 LDcgKzEwNTMsNyBAQCByZWJ1aWxkX2RhdGFiYXNlX2xpc3QoT2lkIG5ld2RiKQogCQkgKi8KIAkJ Zm9yIChpID0gMDsgaSA8IG5lbGVtczsgaSsrKQogCQl7Ci0JCQlkYiA9ICYoZGJhcnlbaV0pOwor CQkJYXZsX2RiYXNlICAqZGIgPSAmKGRiYXJ5W2ldKTsKIAogCQkJY3VycmVudF90aW1lID0gVGlt ZXN0YW1wVHpQbHVzTWlsbGlzZWNvbmRzKGN1cnJlbnRfdGltZSwKIAkJCQkJCQkJCQkJCQkgICBt aWxsaXNfaW5jcmVtZW50KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRp b24uYwppbmRleCBmY2YyOTVmMWRmMS4uZmVmOWMzNTdhM2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTY0LDI1ICs2NCwxOSBAQCBzdGF0aWMgT2lk CUZpbmRMb2dpY2FsUmVwTG9jYWxJbmRleChSZWxhdGlvbiBsb2NhbHJlbCwgTG9naWNhbFJlcFJl bGF0aW9uICpyZW1vdAogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVf Y2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogewotCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50 cnk7Ci0KIAkvKiBKdXN0IHRvIGJlIHN1cmUuICovCiAJaWYgKExvZ2ljYWxSZXBSZWxNYXAgPT0g TlVMTCkKIAkJcmV0dXJuOwogCiAJaWYgKHJlbG9pZCAhPSBJbnZhbGlkT2lkKQogCXsKLQkJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxS ZXBSZWxNYXApOwotCiAJCS8qIFRPRE8sIHVzZSBpbnZlcnNlIGxvb2t1cCBoYXNodGFibGU/ICov Ci0JCXdoaWxlICgoZW50cnkgPSAoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICopIGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKExvZ2ljYWxSZXBSZWxNYXBF bnRyeSwgZW50cnksIExvZ2ljYWxSZXBSZWxNYXApCiAJCXsKIAkJCWlmIChlbnRyeS0+bG9jYWxy ZWxvaWQgPT0gcmVsb2lkKQogCQkJewogCQkJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gZmFsc2U7 Ci0JCQkJaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKKwkJCQlmb3JlYWNoX2hhc2hfdGVybShlbnRy eSk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTkwLDExICs4NCw3IEBAIGxvZ2ljYWxyZXBf cmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogCWVsc2UKIAl7CiAJ CS8qIGludmFsaWRhdGUgYWxsIGNhY2hlIGVudHJpZXMgKi8KLQkJSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxSZXBSZWxNYXApOwotCi0J CXdoaWxlICgoZW50cnkgPSAoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKExvZ2ljYWxSZXBSZWxNYXBFbnRy eSwgZW50cnksIExvZ2ljYWxSZXBSZWxNYXApCiAJCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IGZh bHNlOwogCX0KIH0KQEAgLTUzMSwyNSArNTIxLDE5IEBAIGxvZ2ljYWxyZXBfcmVsX2Nsb3NlKExv Z2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsLCBMT0NLTU9ERSBsb2NrbW9kZSkKIHN0YXRpYyB2b2lk CiBsb2dpY2FscmVwX3BhcnRtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQp CiB7Ci0JTG9naWNhbFJlcFBhcnRNYXBFbnRyeSAqZW50cnk7Ci0KIAkvKiBKdXN0IHRvIGJlIHN1 cmUuICovCiAJaWYgKExvZ2ljYWxSZXBQYXJ0TWFwID09IE5VTEwpCiAJCXJldHVybjsKIAogCWlm IChyZWxvaWQgIT0gSW52YWxpZE9pZCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0K LQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUGFydE1hcCk7Ci0KIAkJLyogVE9E TywgdXNlIGludmVyc2UgbG9va3VwIGhhc2h0YWJsZT8gKi8KLQkJd2hpbGUgKChlbnRyeSA9IChM b2dpY2FsUmVwUGFydE1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVM TCkKKwkJZm9yZWFjaF9oYXNoKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnksIGVudHJ5LCBMb2dpY2Fs UmVwUGFydE1hcCkKIAkJewogCQkJaWYgKGVudHJ5LT5yZWxtYXBlbnRyeS5sb2NhbHJlbG9pZCA9 PSByZWxvaWQpCiAJCQl7CiAJCQkJZW50cnktPnJlbG1hcGVudHJ5LmxvY2FscmVsdmFsaWQgPSBm YWxzZTsKLQkJCQloYXNoX3NlcV90ZXJtKCZzdGF0dXMpOworCQkJCWZvcmVhY2hfaGFzaF90ZXJt KGVudHJ5KTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQpAQCAtNTU3LDExICs1NDEsNyBAQCBsb2dp Y2FscmVwX3BhcnRtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiAJZWxz ZQogCXsKIAkJLyogaW52YWxpZGF0ZSBhbGwgY2FjaGUgZW50cmllcyAqLwotCQlIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFBhcnRN YXApOwotCi0JCXdoaWxlICgoZW50cnkgPSAoTG9naWNhbFJlcFBhcnRNYXBFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVw UGFydE1hcEVudHJ5LCBlbnRyeSwgTG9naWNhbFJlcFBhcnRNYXApCiAJCQllbnRyeS0+cmVsbWFw ZW50cnkubG9jYWxyZWx2YWxpZCA9IGZhbHNlOwogCX0KIH0KQEAgLTU3OSwxNSArNTU5LDEyIEBA IGxvZ2ljYWxyZXBfcGFydG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkK IHZvaWQKIGxvZ2ljYWxyZXBfcGFydG1hcF9yZXNldF9yZWxtYXAoTG9naWNhbFJlcFJlbGF0aW9u ICpyZW1vdGVyZWwpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlMb2dpY2FsUmVwUGFy dE1hcEVudHJ5ICpwYXJ0X2VudHJ5OwogCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnk7CiAK IAlpZiAoTG9naWNhbFJlcFBhcnRNYXAgPT0gTlVMTCkKIAkJcmV0dXJuOwogCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUGFydE1hcCk7Ci0Jd2hpbGUgKChwYXJ0X2VudHJ5ID0g KExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBO VUxMKQorCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUGFydE1hcEVudHJ5LCBwYXJ0X2VudHJ5LCBM b2dpY2FsUmVwUGFydE1hcCkKIAl7CiAJCWVudHJ5ID0gJnBhcnRfZW50cnktPnJlbG1hcGVudHJ5 OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5j CmluZGV4IGY4YjhmOGM2MmM2Li42NDNhNDQxMGZhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTUyNDksMTUgKzUyNDksMTEgQEAg UmVvcmRlckJ1ZmZlclRvYXN0UmVwbGFjZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogc3RhdGljIHZvaWQKIFJlb3JkZXJCdWZmZXJUb2FzdFJlc2V0KFJlb3JkZXJC dWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhz dGF0OwotCVJlb3JkZXJCdWZmZXJUb2FzdEVudCAqZW50OwotCiAJaWYgKHR4bi0+dG9hc3RfaGFz aCA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAkvKiBzZXF1ZW50aWFsbHkgd2FsayBvdmVyIHRoZSBo YXNoIGFuZCBmcmVlIGV2ZXJ5dGhpbmcgKi8KLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgdHhuLT50 b2FzdF9oYXNoKTsKLQl3aGlsZSAoKGVudCA9IChSZW9yZGVyQnVmZmVyVG9hc3RFbnQgKikgaGFz aF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlb3JkZXJCdWZm ZXJUb2FzdEVudCwgZW50LCB0eG4tPnRvYXN0X2hhc2gpCiAJewogCQlkbGlzdF9tdXRhYmxlX2l0 ZXIgaXQ7CiAKQEAgLTUzMjAsMTEgKzUzMTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZXdyaXRlTWFw cGluZ0ZpbGUKIHN0YXRpYyB2b2lkCiBEaXNwbGF5TWFwcGluZyhIVEFCICp0dXBsZWNpZF9kYXRh KQogewotCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsKLQlSZW9yZGVyQnVmZmVyVHVwbGVDaWRFbnQg KmVudDsKLQotCWhhc2hfc2VxX2luaXQoJmhzdGF0LCB0dXBsZWNpZF9kYXRhKTsKLQl3aGlsZSAo KGVudCA9IChSZW9yZGVyQnVmZmVyVHVwbGVDaWRFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3Rh dCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlb3JkZXJCdWZmZXJUdXBsZUNpZEVudCwgZW50 LCB0dXBsZWNpZF9kYXRhKQogCXsKIAkJZWxvZyhERUJVRzMsICJtYXBwaW5nOiBub2RlOiAldS8l dS8ldSB0aWQ6ICV1LyV1IGNtaW46ICV1LCBjbWF4OiAldSIsCiAJCQkgZW50LT5rZXkucmxvY2F0 b3IuZGJPaWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpp bmRleCAxMzJiNTJlMzYxMS4uZTE5ZGY4ZDU1NmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjM3NywxMyArMjM3Nyw5IEBAIGdldF9yZWxfc3lu Y19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogc3RhdGljIHZv aWQKIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgaXNfY29t bWl0KQogewotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsKLQlSZWxhdGlvblN5bmNFbnRyeSAq ZW50cnk7Ci0KIAlBc3NlcnQoUmVsYXRpb25TeW5jQ2FjaGUgIT0gTlVMTCk7CiAKLQloYXNoX3Nl cV9pbml0KCZoYXNoX3NlcSwgUmVsYXRpb25TeW5jQ2FjaGUpOwotCXdoaWxlICgoZW50cnkgPSBo YXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsYXRp b25TeW5jRW50cnksIGVudHJ5LCBSZWxhdGlvblN5bmNDYWNoZSkKIAl7CiAJCS8qCiAJCSAqIFdl IGNhbiBzZXQgdGhlIHNjaGVtYV9zZW50IGZsYWcgZm9yIGFuIGVudHJ5IHRoYXQgaGFzIGNvbW1p dHRlZCB4aWQKQEAgLTI0MTIsOCArMjQwOCw2IEBAIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUoVHJh bnNhY3Rpb25JZCB4aWQsIGJvb2wgaXNfY29tbWl0KQogc3RhdGljIHZvaWQKIHJlbF9zeW5jX2Nh Y2hlX3JlbGF0aW9uX2NiKERhdHVtIGFyZywgT2lkIHJlbGlkKQogewotCVJlbGF0aW9uU3luY0Vu dHJ5ICplbnRyeTsKLQogCS8qCiAJICogV2UgY2FuIGdldCBoZXJlIGlmIHRoZSBwbHVnaW4gd2Fz IHVzZWQgaW4gU1FMIGludGVyZmFjZSBhcyB0aGUKIAkgKiBSZWxhdGlvblN5bmNDYWNoZSBpcyBk ZXN0cm95ZWQgd2hlbiB0aGUgZGVjb2RpbmcgZmluaXNoZXMsIGJ1dCB0aGVyZSBpcwpAQCAtMjQz NiwxOCArMjQzMCwxNiBAQCByZWxfc3luY19jYWNoZV9yZWxhdGlvbl9jYihEYXR1bSBhcmcsIE9p ZCByZWxpZCkKIAkJICogR2V0dGluZyBpbnZhbGlkYXRpb25zIGZvciByZWxhdGlvbnMgdGhhdCBh cmVuJ3QgaW4gdGhlIHRhYmxlIGlzCiAJCSAqIGVudGlyZWx5IG5vcm1hbC4gIFNvIHdlIGRvbid0 IGNhcmUgaWYgaXQncyBmb3VuZCBvciBub3QuCiAJCSAqLwotCQllbnRyeSA9IChSZWxhdGlvblN5 bmNFbnRyeSAqKSBoYXNoX3NlYXJjaChSZWxhdGlvblN5bmNDYWNoZSwgJnJlbGlkLAotCQkJCQkJ CQkJCQkJICBIQVNIX0ZJTkQsIE5VTEwpOworCQlSZWxhdGlvblN5bmNFbnRyeSAqZW50cnkgPSBo YXNoX3NlYXJjaChSZWxhdGlvblN5bmNDYWNoZSwgJnJlbGlkLAorCQkJCQkJCQkJCQkgICBIQVNI X0ZJTkQsIE5VTEwpOworCiAJCWlmIChlbnRyeSAhPSBOVUxMKQogCQkJZW50cnktPnJlcGxpY2F0 ZV92YWxpZCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewogCQkvKiBXaG9sZSBjYWNoZSBtdXN0IGJl IGZsdXNoZWQuICovCi0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCBSZWxhdGlvblN5bmNDYWNoZSk7Ci0JCXdoaWxlICgoZW50cnkgPSAoUmVsYXRp b25TeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3Jl YWNoX2hhc2goUmVsYXRpb25TeW5jRW50cnksIGVudHJ5LCBSZWxhdGlvblN5bmNDYWNoZSkKIAkJ ewogCQkJZW50cnktPnJlcGxpY2F0ZV92YWxpZCA9IGZhbHNlOwogCQl9CkBAIC0yNDYzLDkgKzI0 NTUsNiBAQCBzdGF0aWMgdm9pZAogcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0g YXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwKIAkJCQkJCQkgIHVpbnQzMiBoYXNodmFs dWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWxhdGlvblN5bmNFbnRyeSAqZW50 cnk7Ci0KIAkvKgogCSAqIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgcGx1Z2luIHdhcyB1c2VkIGlu IFNRTCBpbnRlcmZhY2UgYXMgdGhlCiAJICogUmVsYXRpb25TeW5jQ2FjaGUgaXMgZGVzdHJveWVk IHdoZW4gdGhlIGRlY29kaW5nIGZpbmlzaGVzLCBidXQgdGhlcmUgaXMKQEAgLTI0NzgsOCArMjQ2 Nyw3IEBAIHJlbF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFyZywgU3lzQ2FjaGVJ ZGVudGlmaWVyIGNhY2hlaWQsCiAJICogV2UgaGF2ZSBubyBlYXN5IHdheSB0byBpZGVudGlmeSB3 aGljaCBjYWNoZSBlbnRyaWVzIHRoaXMgaW52YWxpZGF0aW9uCiAJICogZXZlbnQgbWlnaHQgaGF2 ZSBhZmZlY3RlZCwgc28ganVzdCBtYXJrIHRoZW0gYWxsIGludmFsaWQuCiAJICovCi0JaGFzaF9z ZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvblN5bmNDYWNoZSk7Ci0Jd2hpbGUgKChlbnRyeSA9IChS ZWxhdGlvblN5bmNFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ Zm9yZWFjaF9oYXNoKFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2FjaGUp CiAJewogCQllbnRyeS0+cmVwbGljYXRlX3ZhbGlkID0gZmFsc2U7CiAJfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKaW5kZXggMDgzNDk4MDNlMjYuLmZkZGY1YjE3ZDQ3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKQEAgLTUyNiw4ICs1MjYsNiBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdf RlVOQ1RJT05fQVJHUykKIHsKICNkZWZpbmUgUEdfR0VUX1NITUVNX1NJWkVTX0NPTFMgNAogCVJl dHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5m bzsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCVNpemUJ CW5hbWVkX2FsbG9jYXRlZCA9IDA7CiAJRGF0dW0JCXZhbHVlc1tQR19HRVRfU0hNRU1fU0laRVNf Q09MU107CiAJYm9vbAkJbnVsbHNbUEdfR0VUX1NITUVNX1NJWkVTX0NPTFNdOwpAQCAtNTM2LDEx ICs1MzQsOSBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAog CUxXTG9ja0FjcXVpcmUoU2htZW1JbmRleExvY2ssIExXX1NIQVJFRCk7CiAKLQloYXNoX3NlcV9p bml0KCZoc3RhdCwgU2htZW1JbmRleCk7Ci0KIAkvKiBvdXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRy aWVzICovCiAJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKLQl3aGlsZSAoKGVudCA9 IChTaG1lbUluZGV4RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChTaG1lbUluZGV4RW50LCBlbnQsIFNobWVtSW5kZXgpCiAJewogCQl2YWx1ZXNb MF0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGVudC0+a2V5KTsKIAkJdmFsdWVzWzFdID0gSW50NjRH ZXREYXR1bSgoY2hhciAqKSBlbnQtPmxvY2F0aW9uIC0gKGNoYXIgKikgU2htZW1TZWdIZHIpOwpA QCAtNTgzLDggKzU3OSw2IEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAjZGVmaW5lIFBHX0dFVF9TSE1FTV9OVU1BX1NJWkVTX0NPTFMgMwogCVJl dHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5m bzsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCURhdHVt CQl2YWx1ZXNbUEdfR0VUX1NITUVNX05VTUFfU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNbUEdf R0VUX1NITUVNX05VTUFfU0laRVNfQ09MU107CiAJU2l6ZQkJb3NfcGFnZV9zaXplOwpAQCAtNjM0 LDEwICs2MjgsOCBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElPTl9B UkdTKQogCiAJTFdMb2NrQWNxdWlyZShTaG1lbUluZGV4TG9jaywgTFdfU0hBUkVEKTsKIAotCWhh c2hfc2VxX2luaXQoJmhzdGF0LCBTaG1lbUluZGV4KTsKLQogCS8qIG91dHB1dCBhbGwgYWxsb2Nh dGVkIGVudHJpZXMgKi8KLQl3aGlsZSAoKGVudCA9IChTaG1lbUluZGV4RW50ICopIGhhc2hfc2Vx X3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChTaG1lbUluZGV4RW50LCBl bnQsIFNobWVtSW5kZXgpCiAJewogCQlpbnQJCQlpOwogCQljaGFyCSAgICpzdGFydHB0ciwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCAxYzQxZDUxZjlkMC4uZWQxYzE0MWQ1MmYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTExMDAsMTMgKzExMDAsOSBAQCBTdGFuZGJ5 UmVsZWFzZUxvY2tUcmVlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnN1YnhpZHMsIFRyYW5zYWN0 aW9uSWQgKnN1YnhpZHMpCiB2b2lkCiBTdGFuZGJ5UmVsZWFzZUFsbExvY2tzKHZvaWQpCiB7Ci0J SEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWNvdmVyeUxvY2tYaWRFbnRyeSAqZW50cnk7Ci0K IAllbG9nKERFQlVHMiwgInJlbGVhc2UgYWxsIHN0YW5kYnkgbG9ja3MiKTsKIAotCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgUmVjb3ZlcnlMb2NrWGlkSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkpCisJZm9yZWFjaF9oYXNoKFJlY292ZXJ5TG9ja1hpZEVu dHJ5LCBlbnRyeSwgUmVjb3ZlcnlMb2NrWGlkSGFzaCkKIAl7CiAJCVN0YW5kYnlSZWxlYXNlWGlk RW50cnlMb2NrcyhlbnRyeSk7CiAJCWhhc2hfc2VhcmNoKFJlY292ZXJ5TG9ja1hpZEhhc2gsIGVu dHJ5LCBIQVNIX1JFTU9WRSwgTlVMTCk7CkBAIC0xMTI0LDExICsxMTIwLDcgQEAgU3RhbmRieVJl bGVhc2VBbGxMb2Nrcyh2b2lkKQogdm9pZAogU3RhbmRieVJlbGVhc2VPbGRMb2NrcyhUcmFuc2Fj dGlvbklkIG9sZHhpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlY292ZXJ5TG9j a1hpZEVudHJ5ICplbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVjb3ZlcnlMb2Nr WGlkSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkpCisJ Zm9yZWFjaF9oYXNoKFJlY292ZXJ5TG9ja1hpZEVudHJ5LCBlbnRyeSwgUmVjb3ZlcnlMb2NrWGlk SGFzaCkKIAl7CiAJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChlbnRyeS0+eGlkKSk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IDkxOTExYWE4YTJkLi4yMWFmYWUyZWZkNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jCkBAIC0yMjkyLDExICsyMjkyLDkgQEAgTG9ja1JlbGVhc2Uo Y29uc3QgTE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgc2Vzc2lvbkxv Y2spCiB2b2lkCiBMb2NrUmVsZWFzZUFsbChMT0NLTUVUSE9ESUQgbG9ja21ldGhvZGlkLCBib29s IGFsbExvY2tzKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CiAJTG9ja01ldGhvZAlsb2Nr TWV0aG9kVGFibGU7CiAJaW50CQkJaSwKIAkJCQludW1Mb2NrTW9kZXM7Ci0JTE9DQUxMT0NLICAq bG9jYWxsb2NrOwogCUxPQ0sJICAgKmxvY2s7CiAJaW50CQkJcGFydGl0aW9uOwogCWJvb2wJCWhh dmVfZmFzdF9wYXRoX2x3bG9jayA9IGZhbHNlOwpAQCAtMjMyOSw5ICsyMzI3LDcgQEAgTG9ja1Jl bGVhc2VBbGwoTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCwgYm9vbCBhbGxMb2NrcykKIAkgKiBw b2ludGVycy4gIEZhc3QtcGF0aCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBkdXJpbmcgdGhlIGxvY2Fs bG9jayB0YWJsZQogCSAqIHNjYW4sIHRob3VnaC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxM T0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go TE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJewogCQkvKgogCQkg KiBJZiB0aGUgTE9DQUxMT0NLIGVudHJ5IGlzIHVudXNlZCwgc29tZXRoaW5nIG11c3QndmUgZ29u ZSB3cm9uZwpAQCAtMjU2NiwxNSArMjU2MiwxMCBAQCBMb2NrUmVsZWFzZUFsbChMT0NLTUVUSE9E SUQgbG9ja21ldGhvZGlkLCBib29sIGFsbExvY2tzKQogdm9pZAogTG9ja1JlbGVhc2VTZXNzaW9u KExPQ0tNRVRIT0RJRCBsb2NrbWV0aG9kaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7Ci0KIAlpZiAobG9ja21ldGhvZGlkIDw9IDAgfHwgbG9j a21ldGhvZGlkID49IGxlbmd0aG9mKExvY2tNZXRob2RzKSkKIAkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBsb2NrIG1ldGhvZDogJWQiLCBsb2NrbWV0aG9kaWQpOwogCi0JaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgobG9jYWxsb2NrID0g KExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCXsKIAkJ LyogSWdub3JlIGl0ZW1zIHRoYXQgYXJlIG5vdCBvZiB0aGUgc3BlY2lmaWVkIGxvY2sgbWV0aG9k ICovCiAJCWlmIChMT0NBTExPQ0tfTE9DS01FVEhPRCgqbG9jYWxsb2NrKSAhPSBsb2NrbWV0aG9k aWQpCkBAIC0yNTk4LDEyICsyNTg5LDcgQEAgTG9ja1JlbGVhc2VDdXJyZW50T3duZXIoTE9DQUxM T0NLICoqbG9jYWxsb2NrcywgaW50IG5sb2NrcykKIHsKIAlpZiAobG9jYWxsb2NrcyA9PSBOVUxM KQogCXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJTE9DQUxMT0NLICAqbG9jYWxsb2Nr OwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7Ci0KLQkJ d2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0 aG9kTG9jYWxIYXNoKQogCQkJUmVsZWFzZUxvY2tJZkhlbGQobG9jYWxsb2NrLCBmYWxzZSk7CiAJ fQogCWVsc2UKQEAgLTI2OTcsMTIgKzI2ODMsNyBAQCBMb2NrUmVhc3NpZ25DdXJyZW50T3duZXIo TE9DQUxMT0NLICoqbG9jYWxsb2NrcywgaW50IG5sb2NrcykKIAogCWlmIChsb2NhbGxvY2tzID09 IE5VTEwpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCQlMT0NBTExPQ0sgICpsb2Nh bGxvY2s7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsK LQotCQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZz dGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExv Y2tNZXRob2RMb2NhbEhhc2gpCiAJCQlMb2NrUmVhc3NpZ25Pd25lcihsb2NhbGxvY2ssIHBhcmVu dCk7CiAJfQogCWVsc2UKQEAgLTMzODEsMTcgKzMzNjIsMTMgQEAgQ2hlY2tGb3JTZXNzaW9uQW5k WGFjdExvY2tzKHZvaWQpCiAJfSBQZXJMb2NrVGFnRW50cnk7CiAKIAlIVEFCCSAgICpsb2NraHRh YjsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAog CS8qIENyZWF0ZSBhIGxvY2FsIGhhc2ggdGFibGUga2V5ZWQgYnkgTE9DS1RBRyBvbmx5ICovCiAJ bG9ja2h0YWIgPSBoYXNoX21ha2UoUGVyTG9ja1RhZ0VudHJ5LCBsb2NrLAogCQkJCQkJICJDaGVj a0ZvclNlc3Npb25BbmRYYWN0TG9ja3MgdGFibGUiLCAyNTYpOwogCiAJLyogU2NhbiBsb2NhbCBs b2NrIHRhYmxlIHRvIGZpbmQgZW50cmllcyBmb3IgZWFjaCBMT0NLVEFHICovCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgobG9jYWxsb2Nr ID0gKExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCXsK IAkJTE9DQUxMT0NLT1dORVIgKmxvY2tPd25lcnMgPSBsb2NhbGxvY2stPmxvY2tPd25lcnM7CiAJ CVBlckxvY2tUYWdFbnRyeSAqaGVudHJ5OwpAQCAtMzQ1NCwxNiArMzQzMSwxMSBAQCBDaGVja0Zv clNlc3Npb25BbmRYYWN0TG9ja3Modm9pZCkKIHZvaWQKIEF0UHJlcGFyZV9Mb2Nrcyh2b2lkKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwotCiAJ LyogRmlyc3QsIHZlcmlmeSB0aGVyZSBhcmVuJ3QgbG9ja3Mgb2YgYm90aCB4YWN0IGFuZCBzZXNz aW9uIGxldmVsICovCiAJQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tzKCk7CiAKIAkvKiBOb3cg ZG8gdGhlIHBlci1sb2NhbGxvY2sgY2xlYW51cCB3b3JrICovCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FM TE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNo KExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCXsKIAkJVHdvUGhh c2VMb2NrUmVjb3JkIHJlY29yZDsKIAkJTE9DQUxMT0NLT1dORVIgKmxvY2tPd25lcnMgPSBsb2Nh bGxvY2stPmxvY2tPd25lcnM7CkBAIC0zNTUxLDggKzM1MjMsNiBAQCB2b2lkCiBQb3N0UHJlcGFy ZV9Mb2NrcyhGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKQogewogCVBHUFJPQwkgICAqbmV3cHJvYyA9 IFR3b1BoYXNlR2V0RHVtbXlQcm9jKGZ4aWQsIGZhbHNlKTsKLQlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAlMT0NLCSAgICpsb2NrOwogCVBST0NMT0NL ICAgKnByb2Nsb2NrOwogCVBST0NMT0NLVEFHIHByb2Nsb2NrdGFnOwpAQCAtMzU3NCw5ICszNTQ0 LDcgQEAgUG9zdFByZXBhcmVfTG9ja3MoRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCkKIAkgKiBwb2lu dGluZyB0byB0aGUgc2FtZSBwcm9jbG9jaywgYW5kIHdlIGRhcmVuJ3QgZW5kIHVwIHdpdGggYW55 IGRhbmdsaW5nCiAJICogcG9pbnRlcnMuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBM b2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FMTE9DSyAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKExPQ0FM TE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCXsKIAkJTE9DQUxMT0NLT1dO RVIgKmxvY2tPd25lcnMgPSBsb2NhbGxvY2stPmxvY2tPd25lcnM7CiAJCWJvb2wJCWhhdmVTZXNz aW9uTG9jazsKQEAgLTM3NzIsOCArMzc0MCw2IEBAIExvY2tEYXRhICoKIEdldExvY2tTdGF0dXNE YXRhKHZvaWQpCiB7CiAJTG9ja0RhdGEgICAqZGF0YTsKLQlQUk9DTE9DSyAgICpwcm9jbG9jazsK LQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKIAlpbnQJCQllbHM7CiAJaW50CQkJZWw7CiAJaW50 CQkJaTsKQEAgLTM5MDksOSArMzg3NSw3IEBAIEdldExvY2tTdGF0dXNEYXRhKHZvaWQpCiAJfQog CiAJLyogTm93IHNjYW4gdGhlIHRhYmxlcyB0byBjb3B5IHRoZSBkYXRhICovCi0JaGFzaF9zZXFf aW5pdCgmc2Vxc3RhdCwgTG9ja01ldGhvZFByb2NMb2NrSGFzaCk7Ci0KLQl3aGlsZSAoKHByb2Ns b2NrID0gKFBST0NMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVhY2hf aGFzaChQUk9DTE9DSywgcHJvY2xvY2ssIExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQlQ R1BST0MJICAgKnByb2MgPSBwcm9jbG9jay0+dGFnLm15UHJvYzsKIAkJTE9DSwkgICAqbG9jayA9 IHByb2Nsb2NrLT50YWcubXlMb2NrOwpAQCAtNDE0OSw4ICs0MTEzLDYgQEAgeGxfc3RhbmRieV9s b2NrICoKIEdldFJ1bm5pbmdUcmFuc2FjdGlvbkxvY2tzKGludCAqbmxvY2tzKQogewogCXhsX3N0 YW5kYnlfbG9jayAqYWNjZXNzRXhjbHVzaXZlTG9ja3M7Ci0JUFJPQ0xPQ0sgICAqcHJvY2xvY2s7 Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7CiAJaW50CQkJaTsKIAlpbnQJCQlpbmRleDsKIAlp bnQJCQllbHM7CkBAIC00MTcyLDEwICs0MTM0LDkgQEAgR2V0UnVubmluZ1RyYW5zYWN0aW9uTG9j a3MoaW50ICpubG9ja3MpCiAJICovCiAJYWNjZXNzRXhjbHVzaXZlTG9ja3MgPSBwYWxsb2MoZWxz ICogc2l6ZW9mKHhsX3N0YW5kYnlfbG9jaykpOwogCi0JLyogTm93IHNjYW4gdGhlIHRhYmxlcyB0 byBjb3B5IHRoZSBkYXRhICovCi0JaGFzaF9zZXFfaW5pdCgmc2Vxc3RhdCwgTG9ja01ldGhvZFBy b2NMb2NrSGFzaCk7Ci0KIAkvKgorCSAqIE5vdyBzY2FuIHRoZSB0YWJsZXMgdG8gY29weSB0aGUg ZGF0YS4KKwkgKgogCSAqIElmIGxvY2sgaXMgYSBjdXJyZW50bHkgZ3JhbnRlZCBBY2Nlc3NFeGNs dXNpdmVMb2NrIHRoZW4gaXQgd2lsbCBoYXZlCiAJICoganVzdCBvbmUgcHJvY2xvY2sgaG9sZGVy LCBzbyBsb2NrcyBhcmUgbmV2ZXIgYWNjZXNzZWQgdHdpY2UgaW4gdGhpcwogCSAqIHBhcnRpY3Vs YXIgY2FzZS4gRG9uJ3QgY29weSB0aGlzIGNvZGUgZm9yIHVzZSBlbHNld2hlcmUgYmVjYXVzZSBp biB0aGUKQEAgLTQxODMsNyArNDE0NCw3IEBAIEdldFJ1bm5pbmdUcmFuc2FjdGlvbkxvY2tzKGlu dCAqbmxvY2tzKQogCSAqIG5vbi1leGNsdXNpdmUgbG9jayB0eXBlcy4KIAkgKi8KIAlpbmRleCA9 IDA7Ci0Jd2hpbGUgKChwcm9jbG9jayA9IChQUk9DTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnNl cXN0YXQpKSkKKwlmb3JlYWNoX2hhc2goUFJPQ0xPQ0ssIHByb2Nsb2NrLCBMb2NrTWV0aG9kUHJv Y0xvY2tIYXNoKQogCXsKIAkJLyogbWFrZSBzdXJlIHRoaXMgZGVmaW5pdGlvbiBtYXRjaGVzIHRo ZSBvbmUgdXNlZCBpbiBMb2NrQWNxdWlyZSAqLwogCQlpZiAoKHByb2Nsb2NrLT5ob2xkTWFzayAm IExPQ0tCSVRfT04oQWNjZXNzRXhjbHVzaXZlTG9jaykpICYmCkBAIC00Mjc4LDE4ICs0MjM5LDE0 IEBAIHZvaWQKIER1bXBBbGxMb2Nrcyh2b2lkKQogewogCVBHUFJPQwkgICAqcHJvYzsKLQlQUk9D TE9DSyAgICpwcm9jbG9jazsKIAlMT0NLCSAgICpsb2NrOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7CiAKIAlwcm9jID0gTXlQcm9jOwogCiAJaWYgKHByb2MgJiYgcHJvYy0+d2FpdExvY2spCiAJ CUxPQ0tfUFJJTlQoIkR1bXBBbGxMb2Nrczogd2FpdGluZyBvbiIsIHByb2MtPndhaXRMb2NrLCAw KTsKIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZFByb2NMb2NrSGFzaCk7Ci0K LQl3aGlsZSAoKHByb2Nsb2NrID0gKFBST0NMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUFJPQ0xPQ0ssIHByb2Nsb2NrLCBMb2NrTWV0aG9k UHJvY0xvY2tIYXNoKQogCXsKIAkJUFJPQ0xPQ0tfUFJJTlQoIkR1bXBBbGxMb2NrcyIsIHByb2Ns b2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCmluZGV4IDc3Yzc3MTJjYzYwLi41MWQ5 MjdlZWIzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwpAQCAtMzE3LDE1ICszMTcsMTAg QEAgaW5pdF9sd2xvY2tfc3RhdHModm9pZCkKIHN0YXRpYyB2b2lkCiBwcmludF9sd2xvY2tfc3Rh dHMoaW50IGNvZGUsIERhdHVtIGFyZykKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlsd2xv Y2tfc3RhdHMgKmx3c3RhdHM7Ci0KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBsd2xvY2tfc3RhdHNf aHRhYik7Ci0KIAkvKiBHcmFiIGFuIExXTG9jayB0byBrZWVwIGRpZmZlcmVudCBiYWNrZW5kcyBm cm9tIG1peGluZyByZXBvcnRzICovCiAJTFdMb2NrQWNxdWlyZSgmTWFpbkxXTG9ja0FycmF5WzBd LmxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKLQl3aGlsZSAoKGx3c3RhdHMgPSAobHdsb2NrX3N0YXRz ICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKGx3bG9j a19zdGF0cywgbHdzdGF0cywgbHdsb2NrX3N0YXRzX2h0YWIpCiAJewogCQlmcHJpbnRmKHN0ZGVy ciwKIAkJCQkiUElEICVkIGx3bG9jayAlcyAlcDogc2hhY3EgJXUgZXhhY3EgJXUgYmxrICV1IHNw aW5kZWxheSAldSBkZXF1ZXVlIHNlbGYgJXVcbiIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGlj YXRlLmMKaW5kZXggMzE2Y2EyYzI2OTIuLmJlODI2N2UzZjlmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3ByZWRpY2F0ZS5jCkBAIC0xNDUxLDggKzE0NTEsNiBAQCBHZXRQcmVkaWNhdGVMb2NrU3Rh dHVzRGF0YSh2b2lkKQogCWludAkJCWk7CiAJaW50CQkJZWxzLAogCQkJCWVsOwotCUhBU0hfU0VR X1NUQVRVUyBzZXFzdGF0OwotCVBSRURJQ0FURUxPQ0sgKnByZWRsb2NrOwogCiAJZGF0YSA9IHBh bGxvY19vYmplY3QoUHJlZGljYXRlTG9ja0RhdGEpOwogCkBAIC0xNDcyLDExICsxNDcwLDkgQEAg R2V0UHJlZGljYXRlTG9ja1N0YXR1c0RhdGEodm9pZCkKIAogCiAJLyogU2NhbiB0aHJvdWdoIFBy ZWRpY2F0ZUxvY2tIYXNoIGFuZCBjb3B5IGNvbnRlbnRzICovCi0JaGFzaF9zZXFfaW5pdCgmc2Vx c3RhdCwgUHJlZGljYXRlTG9ja0hhc2gpOwotCiAJZWwgPSAwOwogCi0Jd2hpbGUgKChwcmVkbG9j ayA9IChQUkVESUNBVEVMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVh Y2hfaGFzaChQUkVESUNBVEVMT0NLLCBwcmVkbG9jaywgUHJlZGljYXRlTG9ja0hhc2gpCiAJewog CQlkYXRhLT5sb2NrdGFnc1tlbF0gPSBwcmVkbG9jay0+dGFnLm15VGFyZ2V0LT50YWc7CiAJCWRh dGEtPnhhY3RzW2VsXSA9ICpwcmVkbG9jay0+dGFnLm15WGFjdDsKQEAgLTI5MzMsOCArMjkyOSw2 IEBAIGV4aXQ6CiBzdGF0aWMgdm9pZAogRHJvcEFsbFByZWRpY2F0ZUxvY2tzRnJvbVRhYmxlKFJl bGF0aW9uIHJlbGF0aW9uLCBib29sIHRyYW5zZmVyKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXFz dGF0OwotCVBSRURJQ0FURUxPQ0tUQVJHRVQgKm9sZHRhcmdldDsKIAlQUkVESUNBVEVMT0NLVEFS R0VUICpoZWFwdGFyZ2V0OwogCU9pZAkJCWRiSWQ7CiAJT2lkCQkJcmVsSWQ7CkBAIC0yOTkwLDkg KzI5ODQsNyBAQCBEcm9wQWxsUHJlZGljYXRlTG9ja3NGcm9tVGFibGUoUmVsYXRpb24gcmVsYXRp b24sIGJvb2wgdHJhbnNmZXIpCiAJCVJlbW92ZVNjcmF0Y2hUYXJnZXQodHJ1ZSk7CiAKIAkvKiBT Y2FuIHRocm91Z2ggdGFyZ2V0IG1hcCAqLwotCWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIFByZWRp Y2F0ZUxvY2tUYXJnZXRIYXNoKTsKLQotCXdoaWxlICgob2xkdGFyZ2V0ID0gKFBSRURJQ0FURUxP Q0tUQVJHRVQgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9yZWFjaF9oYXNoKFBS RURJQ0FURUxPQ0tUQVJHRVQsIG9sZHRhcmdldCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpCiAJ ewogCQlkbGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsKIApAQCAtNDQxNSw4ICs0NDA3LDYgQEAgQ2hl Y2tGb3JTZXJpYWxpemFibGVDb25mbGljdEluKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKnRpZCwgQmwKIHZvaWQKIENoZWNrVGFibGVGb3JTZXJpYWxpemFibGVDb25m bGljdEluKFJlbGF0aW9uIHJlbGF0aW9uKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXFzdGF0Owot CVBSRURJQ0FURUxPQ0tUQVJHRVQgKnRhcmdldDsKIAlPaWQJCQlkYklkOwogCU9pZAkJCWhlYXBJ ZDsKIAlpbnQJCQlpOwpAQCAtNDQ1MCw5ICs0NDQwLDcgQEAgQ2hlY2tUYWJsZUZvclNlcmlhbGl6 YWJsZUNvbmZsaWN0SW4oUmVsYXRpb24gcmVsYXRpb24pCiAJTFdMb2NrQWNxdWlyZShTZXJpYWxp emFibGVYYWN0SGFzaExvY2ssIExXX0VYQ0xVU0lWRSk7CiAKIAkvKiBTY2FuIHRocm91Z2ggdGFy Z2V0IGxpc3QgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0LCBQcmVkaWNhdGVMb2NrVGFyZ2V0 SGFzaCk7Ci0KLQl3aGlsZSAoKHRhcmdldCA9IChQUkVESUNBVEVMT0NLVEFSR0VUICopIGhhc2hf c2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVhY2hfaGFzaChQUkVESUNBVEVMT0NLVEFSR0VU LCB0YXJnZXQsIFByZWRpY2F0ZUxvY2tUYXJnZXRIYXNoKQogCXsKIAkJZGxpc3RfbXV0YWJsZV9p dGVyIGl0ZXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCmluZGV4IGU0OGIzODNiNDY2Li5kMWFk OGI1ZTExNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCkBAIC00MDksOSArNDA5LDYgQEAgc21n cmRlc3Ryb3lhbGwodm9pZCkKIHZvaWQKIHNtZ3JyZWxlYXNlYWxsKHZvaWQpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKLQlTTWdyUmVsYXRpb24gcmVsbjsKLQogCS8qIE5vdGhpbmcgdG8g ZG8gaWYgaGFzaHRhYmxlIG5vdCBzZXQgdXAgKi8KIAlpZiAoU01nclJlbGF0aW9uSGFzaCA9PSBO VUxMKQogCQlyZXR1cm47CkBAIC00MTksOSArNDE2LDcgQEAgc21ncnJlbGVhc2VhbGwodm9pZCkK IAkvKiBzZWVtcyB1bnNhZmUgdG8gYWNjZXB0IGludGVycnVwdHMgd2hpbGUgaXRlcmF0aW5nICov CiAJSE9MRF9JTlRFUlJVUFRTKCk7CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFNNZ3JSZWxh dGlvbkhhc2gpOwotCi0Jd2hpbGUgKChyZWxuID0gKFNNZ3JSZWxhdGlvbikgaGFzaF9zZXFfc2Vh cmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChTTWdyUmVsYXRpb25EYXRhLCBy ZWxuLCBTTWdyUmVsYXRpb25IYXNoKQogCXsKIAkJc21ncnJlbGVhc2UocmVsbik7CiAJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2Uvc3luYy9zeW5jLmMKaW5kZXggYjhmMzEzNmUzMWQuLmFmY2E4MGQyY2ZmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2Uvc3luYy9zeW5jLmMKQEAgLTI4MSw4ICsyODEsNiBAQCBQcm9jZXNzU3luY1JlcXVlc3Rz KHZvaWQpCiB7CiAJc3RhdGljIGJvb2wgc3luY19pbl9wcm9ncmVzcyA9IGZhbHNlOwogCi0JSEFT SF9TRVFfU1RBVFVTIGhzdGF0OwotCVBlbmRpbmdGc3luY0VudHJ5ICplbnRyeTsKIAlpbnQJCQlh YnNvcmJfY291bnRlcjsKIAogCS8qIFN0YXRpc3RpY3Mgb24gc3luYyB0aW1lcyAqLwpAQCAtMzM5 LDggKzMzNyw3IEBAIFByb2Nlc3NTeW5jUmVxdWVzdHModm9pZCkKIAlpZiAoc3luY19pbl9wcm9n cmVzcykKIAl7CiAJCS8qIHByaW9yIHRyeSBmYWlsZWQsIHNvIHVwZGF0ZSBhbnkgc3RhbGUgY3lj bGVfY3RyIHZhbHVlcyAqLwotCQloYXNoX3NlcV9pbml0KCZoc3RhdCwgcGVuZGluZ09wcyk7Ci0J CXdoaWxlICgoZW50cnkgPSAoUGVuZGluZ0ZzeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZo c3RhdCkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChQZW5kaW5nRnN5bmNFbnRyeSwgZW50cnks IHBlbmRpbmdPcHMpCiAJCXsKIAkJCWVudHJ5LT5jeWNsZV9jdHIgPSBzeW5jX2N5Y2xlX2N0cjsK IAkJfQpAQCAtMzU0LDggKzM1MSw3IEBAIFByb2Nlc3NTeW5jUmVxdWVzdHModm9pZCkKIAogCS8q IE5vdyBzY2FuIHRoZSBoYXNodGFibGUgZm9yIGZzeW5jIHJlcXVlc3RzIHRvIHByb2Nlc3MgKi8K IAlhYnNvcmJfY291bnRlciA9IEZTWU5DU19QRVJfQUJTT1JCOwotCWhhc2hfc2VxX2luaXQoJmhz dGF0LCBwZW5kaW5nT3BzKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFBlbmRpbmdGc3luY0VudHJ5ICop IGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQZW5kaW5n RnN5bmNFbnRyeSwgZW50cnksIHBlbmRpbmdPcHMpCiAJewogCQlpbnQJCQlmYWlsdXJlczsKIApA QCAtMzgxLDggKzM3Nyw4IEBAIFByb2Nlc3NTeW5jUmVxdWVzdHModm9pZCkKIAkJCSAqIElmIGlu IGNoZWNrcG9pbnRlciwgd2Ugd2FudCB0byBhYnNvcmIgcGVuZGluZyByZXF1ZXN0cyBldmVyeSBz bwogCQkJICogb2Z0ZW4gdG8gcHJldmVudCBvdmVyZmxvdyBvZiB0aGUgZnN5bmMgcmVxdWVzdCBx dWV1ZS4gIEl0IGlzCiAJCQkgKiB1bnNwZWNpZmllZCB3aGV0aGVyIG5ld2x5LWFkZGVkIGVudHJp ZXMgd2lsbCBiZSB2aXNpdGVkIGJ5Ci0JCQkgKiBoYXNoX3NlcV9zZWFyY2gsIGJ1dCB3ZSBkb24n dCBjYXJlIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8KLQkJCSAqIHByb2Nlc3MgdGhlbSBhbnl3YXku CisJCQkgKiBmb3JlYWNoX2hhc2gsIGJ1dCB3ZSBkb24ndCBjYXJlIHNpbmNlIHdlIGRvbid0IG5l ZWQgdG8gcHJvY2VzcworCQkJICogdGhlbSBhbnl3YXkuCiAJCQkgKi8KIAkJCWlmICgtLWFic29y Yl9jb3VudGVyIDw9IDApCiAJCQl7CkBAIC00OTYsMTMgKzQ5MiwxMCBAQCBSZW1lbWJlclN5bmNS ZXF1ZXN0KGNvbnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKQogCX0KIAll bHNlIGlmICh0eXBlID09IFNZTkNfRklMVEVSX1JFUVVFU1QpCiAJewotCQlIQVNIX1NFUV9TVEFU VVMgaHN0YXQ7Ci0JCVBlbmRpbmdGc3luY0VudHJ5ICpwZmU7CiAJCUxpc3RDZWxsICAgKmNlbGw7 CiAKIAkJLyogQ2FuY2VsIG1hdGNoaW5nIGZzeW5jIHJlcXVlc3RzICovCi0JCWhhc2hfc2VxX2lu aXQoJmhzdGF0LCBwZW5kaW5nT3BzKTsKLQkJd2hpbGUgKChwZmUgPSAoUGVuZGluZ0ZzeW5jRW50 cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChQ ZW5kaW5nRnN5bmNFbnRyeSwgcGZlLCBwZW5kaW5nT3BzKQogCQl7CiAJCQlpZiAocGZlLT50YWcu aGFuZGxlciA9PSBmdGFnLT5oYW5kbGVyICYmCiAJCQkJc3luY3N3W2Z0YWctPmhhbmRsZXJdLnN5 bmNfZmlsZXRhZ21hdGNoZXMoZnRhZywgJnBmZS0+dGFnKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBh bmFseXplLmMKaW5kZXggNDllYzRhYjRkYjUuLjFkMDRmNWZkMzEwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNo L3RzX3R5cGFuYWx5emUuYwpAQCAtMTQ5LDcgKzE0OSw2IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3Rh dHMoVmFjQXR0clN0YXRzICpzdGF0cywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdv cml0aG0uICovCiAJSFRBQgkgICAqbGV4ZW1lc190YWI7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5f c3RhdHVzOwogCiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBidWNrZXQgbnVtYmVyIGZyb20gdGhl IExDIGFsZ29yaXRobSAqLwogCWludAkJCWJfY3VycmVudDsKQEAgLTI4OCw3ICsyODcsNiBAQCBj b21wdXRlX3RzdmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWludAkJCW5vbm51 bGxfY250ID0gc2FtcGxlcm93cyAtIG51bGxfY250OwogCQlpbnQJCQlpOwogCQlUcmFja0l0ZW0g Kipzb3J0X3RhYmxlOwotCQlUcmFja0l0ZW0gICppdGVtOwogCQlpbnQJCQl0cmFja19sZW47CiAJ CWludAkJCWN1dG9mZl9mcmVxOwogCQlpbnQJCQltaW5mcmVxLApAQCAtMzE1LDEwICszMTMsOSBA QCBjb21wdXRlX3RzdmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWkgPSBoYXNo X2dldF9udW1fZW50cmllcyhsZXhlbWVzX3RhYik7CS8qIHN1cmVseSBlbm91Z2ggc3BhY2UgKi8K IAkJc29ydF90YWJsZSA9IHBhbGxvY19hcnJheShUcmFja0l0ZW0gKiwgaSk7CiAKLQkJaGFzaF9z ZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIGxleGVtZXNfdGFiKTsKIAkJdHJhY2tfbGVuID0gMDsKIAkJ bWF4ZnJlcSA9IDA7Ci0JCXdoaWxlICgoaXRlbSA9IChUcmFja0l0ZW0gKikgaGFzaF9zZXFfc2Vh cmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChUcmFja0l0ZW0sIGl0 ZW0sIGxleGVtZXNfdGFiKQogCQl7CiAJCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2Zy ZXEpCiAJCQl7CkBAIC00NjIsMTEgKzQ1OSw3IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFj QXR0clN0YXRzICpzdGF0cywKIHN0YXRpYyB2b2lkCiBwcnVuZV9sZXhlbWVzX2hhc2h0YWJsZShI VEFCICpsZXhlbWVzX3RhYiwgaW50IGJfY3VycmVudCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nh bl9zdGF0dXM7Ci0JVHJhY2tJdGVtICAqaXRlbTsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3Rh dHVzLCBsZXhlbWVzX3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3Nl cV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVt LCBpdGVtLCBsZXhlbWVzX3RhYikKIAl7CiAJCWlmIChpdGVtLT5mcmVxdWVuY3kgKyBpdGVtLT5k ZWx0YSA8PSBiX2N1cnJlbnQpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZl bnQuYwppbmRleCAzMzYxMDE0MGU0YS4uMDUxNzllMzE4MTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTI5OSw4ICsyOTksNiBAQCBjaGFyCSAgKioKIEdldFdh aXRFdmVudEN1c3RvbU5hbWVzKHVpbnQzMiBjbGFzc0lkLCBpbnQgKm53YWl0ZXZlbnRzKQogewog CWNoYXIJICAqKndhaXRldmVudG5hbWVzOwotCVdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lICpo ZW50cnk7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCWludAkJCWluZGV4OwogCWludAkJ CWVsczsKIApAQCAtMzEzLDEwICszMTEsOCBAQCBHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50 MzIgY2xhc3NJZCwgaW50ICpud2FpdGV2ZW50cykKIAl3YWl0ZXZlbnRuYW1lcyA9IHBhbGxvY19h cnJheShjaGFyICosIGVscyk7CiAKIAkvKiBOb3cgc2NhbiB0aGUgaGFzaCB0YWJsZSB0byBjb3B5 IHRoZSBkYXRhICovCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIFdhaXRFdmVudEN1c3RvbUhh c2hCeU5hbWUpOwotCiAJaW5kZXggPSAwOwotCXdoaWxlICgoaGVudHJ5ID0gKFdhaXRFdmVudEN1 c3RvbUVudHJ5QnlOYW1lICopIGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChXYWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSwgaGVudHJ5LCBXYWl0RXZl bnRDdXN0b21IYXNoQnlOYW1lKQogCXsKIAkJaWYgKChoZW50cnktPndhaXRfZXZlbnRfaW5mbyAm IFdBSVRfRVZFTlRfQ0xBU1NfTUFTSykgIT0gY2xhc3NJZCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKaW5kZXggYmRjN2UyMjM3ZjYuLjI4MWY2 ODAwMzEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6 ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKQEAgLTIy Myw3ICsyMjMsNiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFu YWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBM QyBhbGdvcml0aG0uICovCiAJSFRBQgkgICAqZWxlbWVudHNfdGFiOwotCUhBU0hfU0VRX1NUQVRV UyBzY2FuX3N0YXR1czsKIAogCS8qIFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBm cm9tIHRoZSBMQyBhbGdvcml0aG0gKi8KIAlpbnQJCQliX2N1cnJlbnQ7CkBAIC0yMzIsMTAgKzIz MSw4IEBAIGNvbXB1dGVfYXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0 dHJGZXRjaEZ1bmMgZmV0Y2hmdW5jLAogCWludAkJCWJ1Y2tldF93aWR0aDsKIAlpbnQJCQlhcnJh eV9ubzsKIAlpbnQ2NAkJZWxlbWVudF9ubzsKLQlUcmFja0l0ZW0gICppdGVtOwogCWludAkJCXNs b3RfaWR4OwogCUhUQUIJICAgKmNvdW50X3RhYjsKLQlERUNvdW50SXRlbSAqY291bnRfaXRlbTsK IAogCWV4dHJhX2RhdGEgPSAoQXJyYXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9k YXRhOwogCkBAIC0zMDAsNiArMjk3LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3Rh dHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWludDY0CQlwcmV2 X2VsZW1lbnRfbm8gPSBlbGVtZW50X25vOwogCQlpbnQJCQlkaXN0aW5jdF9jb3VudDsKIAkJYm9v bAkJY291bnRfaXRlbV9mb3VuZDsKKwkJREVDb3VudEl0ZW0gKmNvdW50X2l0ZW07CiAKIAkJdmFj dXVtX2RlbGF5X3BvaW50KHRydWUpOwogCkBAIC0zMzgsNiArMzM2LDcgQEAgY29tcHV0ZV9hcnJh eV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1 bmMsCiAJCXsKIAkJCURhdHVtCQllbGVtX3ZhbHVlOwogCQkJYm9vbAkJZm91bmQ7CisJCQlUcmFj a0l0ZW0gICppdGVtOwogCiAJCQkvKiBObyBudWxsIGVsZW1lbnQgcHJvY2Vzc2luZyBvdGhlciB0 aGFuIGZsYWcgc2V0dGluZyBoZXJlICovCiAJCQlpZiAoZWxlbV9udWxsc1tqXSkKQEAgLTQ1OCwx MCArNDU3LDkgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFs eXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWkgPSBoYXNoX2dldF9udW1fZW50cmllcyhl bGVtZW50c190YWIpOyAvKiBzdXJlbHkgZW5vdWdoIHNwYWNlICovCiAJCXNvcnRfdGFibGUgPSBw YWxsb2NfYXJyYXkoVHJhY2tJdGVtICosIGkpOwogCi0JCWhhc2hfc2VxX2luaXQoJnNjYW5fc3Rh dHVzLCBlbGVtZW50c190YWIpOwogCQl0cmFja19sZW4gPSAwOwogCQltYXhmcmVxID0gMDsKLQkJ d2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVz KSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFRyYWNrSXRlbSwgaXRlbSwgZWxlbWVudHNfdGFi KQogCQl7CiAJCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7CkBAIC01 OTQsOSArNTkyLDggQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBB bmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCQkgKiBpbmNyZWFzaW5nIGNvdW50IG9y ZGVyLgogCQkJICovCiAJCQlzb3J0ZWRfY291bnRfaXRlbXMgPSBwYWxsb2NfYXJyYXkoREVDb3Vu dEl0ZW0gKiwgY291bnRfaXRlbXNfY291bnQpOwotCQkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0 dXMsIGNvdW50X3RhYik7CiAJCQlqID0gMDsKLQkJCXdoaWxlICgoY291bnRfaXRlbSA9IChERUNv dW50SXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJCWZv cmVhY2hfaGFzaChERUNvdW50SXRlbSwgY291bnRfaXRlbSwgY291bnRfdGFiKQogCQkJewogCQkJ CXNvcnRlZF9jb3VudF9pdGVtc1tqKytdID0gY291bnRfaXRlbTsKIAkJCX0KQEAgLTY4MywxMSAr NjgwLDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXpl QXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiBzdGF0aWMgdm9pZAogcHJ1bmVfZWxlbWVudF9oYXNo dGFibGUoSFRBQiAqZWxlbWVudHNfdGFiLCBpbnQgYl9jdXJyZW50KQogewotCUhBU0hfU0VRX1NU QVRVUyBzY2FuX3N0YXR1czsKLQlUcmFja0l0ZW0gICppdGVtOwotCi0JaGFzaF9zZXFfaW5pdCgm c2Nhbl9zdGF0dXMsIGVsZW1lbnRzX3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAq KSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go VHJhY2tJdGVtLCBpdGVtLCBlbGVtZW50c190YWIpCiAJewogCQlpZiAoaXRlbS0+ZnJlcXVlbmN5 ICsgaXRlbS0+ZGVsdGEgPD0gYl9jdXJyZW50KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYwppbmRleCA3OTNiMmU2Y2JkMy4uNzIwODk3MTdiZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsY2FjaGUuYwpAQCAtMTc1LDcgKzE3NSw3IEBAIHN0YXRpYyBpbnQJaW5fcHJvZ3Jlc3NfbGlz dF9tYXhsZW47CiAgKiBlb3hhY3RfbGlzdFtdIHN0b3JlcyB0aGUgT0lEcyBvZiByZWxhdGlvbnMg dGhhdCAobWlnaHQpIG5lZWQgQXRFT1hhY3QKICAqIGNsZWFudXAgd29yay4gIFRoaXMgbGlzdCBp bnRlbnRpb25hbGx5IGhhcyBsaW1pdGVkIHNpemU7IGlmIGl0IG92ZXJmbG93cywKICAqIHdlIGZh bGwgYmFjayB0byBzY2FubmluZyB0aGUgd2hvbGUgaGFzaHRhYmxlLiAgVGhlcmUgaXMgbm8gdmFs dWUgaW4gYSB2ZXJ5Ci0gKiBsYXJnZSBsaXN0IGJlY2F1c2UgKDEpIGF0IHNvbWUgcG9pbnQsIGEg aGFzaF9zZXFfc2VhcmNoIHNjYW4gaXMgZmFzdGVyIHRoYW4KKyAqIGxhcmdlIGxpc3QgYmVjYXVz ZSAoMSkgYXQgc29tZSBwb2ludCwgYSBmb3JlYWNoX2hhc2ggc2NhbiBpcyBmYXN0ZXIgdGhhbgog ICogcmV0YWlsIGxvb2t1cHMsIGFuZCAoMikgdGhlIHZhbHVlIG9mIHRoaXMgaXMgdG8gcmVkdWNl IEVPWGFjdCB3b3JrIGZvcgogICogc2hvcnQgdHJhbnNhY3Rpb25zLCB3aGljaCBjYW4ndCBoYXZl IGRpcnRpZWQgYWxsIHRoYXQgbWFueSB0YWJsZXMgYW55d2F5LgogICogRU9YYWN0TGlzdEFkZCgp IGRvZXMgbm90IGJvdGhlciB0byBwcmV2ZW50IGR1cGxpY2F0ZSBsaXN0IGVudHJpZXMsIHNvIHRo ZQpAQCAtMjk2MiwxMyArMjk2MiwxMyBAQCBSZWxhdGlvbkNhY2hlSW52YWxpZGF0ZUVudHJ5KE9p ZCByZWxhdGlvbklkKQogICoKICAqCSBXZSBkbyB0aGlzIGluIHR3byBwaGFzZXM6IHRoZSBmaXJz dCBwYXNzIGRlbGV0ZXMgZGVsZXRhYmxlIGl0ZW1zLCBhbmQKICAqCSB0aGUgc2Vjb25kIG9uZSBy ZWJ1aWxkcyB0aGUgcmVidWlsZGFibGUgaXRlbXMuICBUaGlzIGlzIGVzc2VudGlhbCBmb3IKLSAq CSBzYWZldHksIGJlY2F1c2UgaGFzaF9zZXFfc2VhcmNoIG9ubHkgY29wZXMgd2l0aCBjb25jdXJy ZW50IGRlbGV0aW9uIG9mCisgKgkgc2FmZXR5LCBiZWNhdXNlIGZvcmVhY2hfaGFzaCBvbmx5IGNv cGVzIHdpdGggY29uY3VycmVudCBkZWxldGlvbiBvZgogICoJIHRoZSBlbGVtZW50IGl0IGlzIGN1 cnJlbnRseSB2aXNpdGluZy4gIElmIGEgc2Vjb25kIFNJIG92ZXJmbG93IHdlcmUgdG8KICAqCSBv Y2N1ciB3aGlsZSB3ZSBhcmUgd2Fsa2luZyB0aGUgdGFibGUsIHJlc3VsdGluZyBpbiByZWN1cnNp dmUgZW50cnkgdG8KICAqCSB0aGlzIHJvdXRpbmUsIHdlIGNvdWxkIGNyYXNoIGJlY2F1c2UgdGhl IGlubmVyIGludm9jYXRpb24gYmxvd3MgYXdheQogICoJIHRoZSBlbnRyeSBuZXh0IHRvIGJlIHZp c2l0ZWQgYnkgdGhlIG91dGVyIHNjYW4uICBCdXQgdGhpcyB3YXkgaXMgT0ssCiAgKgkgYmVjYXVz ZSAoYSkgZHVyaW5nIHRoZSBmaXJzdCBwYXNzIHdlIHdvbid0IHByb2Nlc3MgYW55IG1vcmUgU0kg bWVzc2FnZXMsCi0gKgkgc28gaGFzaF9zZXFfc2VhcmNoIHdpbGwgY29tcGxldGUgc2FmZWx5OyAo YikgZHVyaW5nIHRoZSBzZWNvbmQgcGFzcyB3ZQorICoJIHNvIGZvcmVhY2hfaGFzaCB3aWxsIGNv bXBsZXRlIHNhZmVseTsgKGIpIGR1cmluZyB0aGUgc2Vjb25kIHBhc3Mgd2UKICAqCSBvbmx5IGhv bGQgb250byBwb2ludGVycyB0byBub25kZWxldGFibGUgZW50cmllcy4KICAqCiAgKgkgVGhlIHR3 by1waGFzZSBhcHByb2FjaCBhbHNvIG1ha2VzIGl0IGVhc3kgdG8gdXBkYXRlIHJlbGZpbGVudW1i ZXJzIGZvcgpAQCAtMjk4NSw4ICsyOTg1LDYgQEAgUmVsYXRpb25DYWNoZUludmFsaWRhdGVFbnRy eShPaWQgcmVsYXRpb25JZCkKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKGJvb2wgZGVi dWdfZGlzY2FyZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQg KmlkaGVudHJ5OwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUxpc3QJICAgKnJlYnVpbGRGaXJzdExp c3QgPSBOSUw7CiAJTGlzdAkgICAqcmVidWlsZExpc3QgPSBOSUw7CkBAIC0yOTk5LDkgKzI5OTcs NyBAQCBSZWxhdGlvbkNhY2hlSW52YWxpZGF0ZShib29sIGRlYnVnX2Rpc2NhcmQpCiAJUmVsYXRp b25NYXBJbnZhbGlkYXRlQWxsKCk7CiAKIAkvKiBQaGFzZSAxICovCi0JaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENh Y2hlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goUmVsSWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9uSWRDYWNoZSkKIAl7CiAJCXJlbGF0 aW9uID0gaWRoZW50cnktPnJlbGRlc2M7CiAKQEAgLTMxNDYsMTIgKzMxNDIsOSBAQCBBc3NlcnRQ ZW5kaW5nU3luY0NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbGF0aW9uKQogdm9pZAogQXNzZXJ0UGVu ZGluZ1N5bmNzX1JlbGF0aW9uQ2FjaGUodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAlSZWxhdGlvbiAgICpyZWxzOwogCWludAkJCW1h eHJlbHM7CiAJaW50CQkJbnJlbHM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJ aTsKIAogCS8qCkBAIC0zMTY1LDggKzMxNTgsNyBAQCBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRp b25DYWNoZSh2b2lkKQogCW1heHJlbHMgPSAxOwogCXJlbHMgPSBwYWxsb2MobWF4cmVscyAqIHNp emVvZigqcmVscykpOwogCW5yZWxzID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIEdldExv Y2tNZXRob2RMb2NhbEhhc2goKSk7Ci0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxM T0NLLCBsb2NhbGxvY2ssIEdldExvY2tNZXRob2RMb2NhbEhhc2goKSkKIAl7CiAJCU9pZAkJCXJl bGlkOwogCQlSZWxhdGlvbglyOwpAQCAtMzE4OCw4ICszMTgwLDcgQEAgQXNzZXJ0UGVuZGluZ1N5 bmNzX1JlbGF0aW9uQ2FjaGUodm9pZCkKIAkJcmVsc1tucmVscysrXSA9IHI7CiAJfQogCi0JaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCXdoaWxlICgoaWRoZW50cnkg PSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ Zm9yZWFjaF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJ CUFzc2VydFBlbmRpbmdTeW5jQ29uc2lzdGVuY3koaWRoZW50cnktPnJlbGRlc2MpOwogCiAJZm9y IChpID0gMDsgaSA8IG5yZWxzOyBpKyspCkBAIC0zMjE3LDggKzMyMDgsNiBAQCBBc3NlcnRQZW5k aW5nU3luY3NfUmVsYXRpb25DYWNoZSh2b2lkKQogdm9pZAogQXRFT1hhY3RfUmVsYXRpb25DYWNo ZShib29sIGlzQ29tbWl0KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNo ZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMjMwLDcgKzMyMTksNyBAQCBB dEVPWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAKIAkvKgogCSAqIFVubGVzcyB0 aGUgZW94YWN0X2xpc3RbXSBvdmVyZmxvd2VkLCB3ZSBvbmx5IG5lZWQgdG8gZXhhbWluZSB0aGUg cmVscwotCSAqIGxpc3RlZCBpbiBpdC4gIE90aGVyd2lzZSBmYWxsIGJhY2sgb24gYSBoYXNoX3Nl cV9zZWFyY2ggc2Nhbi4KKwkgKiBsaXN0ZWQgaW4gaXQuICBPdGhlcndpc2UgZmFsbCBiYWNrIG9u IGEgZm9yZWFjaF9oYXNoIHNjYW4uCiAJICoKIAkgKiBGb3Igc2ltcGxpY2l0eSwgZW94YWN0X2xp c3RbXSBlbnRyaWVzIGFyZSBub3QgZGVsZXRlZCB0aWxsIGVuZCBvZgogCSAqIHRvcC1sZXZlbCB0 cmFuc2FjdGlvbiwgZXZlbiB0aG91Z2ggd2UgY291bGQgcmVtb3ZlIHRoZW0gYXQKQEAgLTMyNDEs OCArMzIzMCw3IEBAIEF0RU9YYWN0X1JlbGF0aW9uQ2FjaGUoYm9vbCBpc0NvbW1pdCkKIAkgKi8K IAlpZiAoZW94YWN0X2xpc3Rfb3ZlcmZsb3dlZCkKIAl7Ci0JCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgUmVsYXRpb25JZENhY2hlKTsKLQkJd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFJl bElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCXsKIAkJCUF0RU9YYWN0 X2NsZWFudXAoaWRoZW50cnktPnJlbGRlc2MsIGlzQ29tbWl0KTsKIAkJfQpAQCAtMzI1MSwxMCAr MzIzOSwxMSBAQCBBdEVPWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAJewogCQlm b3IgKGkgPSAwOyBpIDwgZW94YWN0X2xpc3RfbGVuOyBpKyspCiAJCXsKLQkJCWlkaGVudHJ5ID0g KFJlbElkQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goUmVsYXRpb25JZENhY2hlLAotCQkJCQkJCQkJ CQkJCSAmZW94YWN0X2xpc3RbaV0sCi0JCQkJCQkJCQkJCQkJIEhBU0hfRklORCwKLQkJCQkJCQkJ CQkJCQkgTlVMTCk7CisJCQlSZWxJZENhY2hlRW50ICppZGhlbnRyeSA9IGhhc2hfc2VhcmNoKFJl bGF0aW9uSWRDYWNoZSwKKwkJCQkJCQkJCQkJCSAgJmVveGFjdF9saXN0W2ldLAorCQkJCQkJCQkJ CQkJICBIQVNIX0ZJTkQsCisJCQkJCQkJCQkJCQkgIE5VTEwpOworCiAJCQlpZiAoaWRoZW50cnkg IT0gTlVMTCkKIAkJCQlBdEVPWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0NvbW1p dCk7CiAJCX0KQEAgLTMzNzAsOCArMzM1OSw2IEBAIHZvaWQKIEF0RU9TdWJYYWN0X1JlbGF0aW9u Q2FjaGUoYm9vbCBpc0NvbW1pdCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQkJCQkJICBT dWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMzg0LDEz ICszMzcxLDEyIEBAIEF0RU9TdWJYYWN0X1JlbGF0aW9uQ2FjaGUoYm9vbCBpc0NvbW1pdCwgU3Vi VHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCiAJLyoKIAkgKiBVbmxlc3MgdGhlIGVveGFjdF9saXN0 W10gb3ZlcmZsb3dlZCwgd2Ugb25seSBuZWVkIHRvIGV4YW1pbmUgdGhlIHJlbHMKLQkgKiBsaXN0 ZWQgaW4gaXQuICBPdGhlcndpc2UgZmFsbCBiYWNrIG9uIGEgaGFzaF9zZXFfc2VhcmNoIHNjYW4u ICBTYW1lCi0JICogbG9naWMgYXMgaW4gQXRFT1hhY3RfUmVsYXRpb25DYWNoZS4KKwkgKiBsaXN0 ZWQgaW4gaXQuICBPdGhlcndpc2UgZmFsbCBiYWNrIG9uIGEgZm9yZWFjaF9oYXNoIHNjYW4uICBT YW1lIGxvZ2ljCisJICogYXMgaW4gQXRFT1hhY3RfUmVsYXRpb25DYWNoZS4KIAkgKi8KIAlpZiAo ZW94YWN0X2xpc3Rfb3ZlcmZsb3dlZCkKIAl7Ci0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVs YXRpb25JZENhY2hlKTsKLQkJd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFJlbElkQ2Fj aGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCXsKIAkJCUF0RU9TdWJYYWN0X2Ns ZWFudXAoaWRoZW50cnktPnJlbGRlc2MsIGlzQ29tbWl0LAogCQkJCQkJCQlteVN1YmlkLCBwYXJl bnRTdWJpZCk7CkBAIC0zNDAwLDYgKzMzODYsOCBAQCBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hl KGJvb2wgaXNDb21taXQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAl7CiAJCWZvciAoaSA9 IDA7IGkgPCBlb3hhY3RfbGlzdF9sZW47IGkrKykKIAkJeworCQkJUmVsSWRDYWNoZUVudCAqaWRo ZW50cnk7CisKIAkJCWlkaGVudHJ5ID0gKFJlbElkQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goUmVs YXRpb25JZENhY2hlLAogCQkJCQkJCQkJCQkJCSAmZW94YWN0X2xpc3RbaV0sCiAJCQkJCQkJCQkJ CQkJIEhBU0hfRklORCwKQEAgLTQwOTYsOCArNDA4NCw2IEBAIFJlbGF0aW9uQ2FjaGVJbml0aWFs aXplUGhhc2UyKHZvaWQpCiB2b2lkCiBSZWxhdGlvbkNhY2hlSW5pdGlhbGl6ZVBoYXNlMyh2b2lk KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7 CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJYm9vbAkJbmVlZE5ld0NhY2hlRmlsZSA9ICFjcml0 aWNhbFNoYXJlZFJlbGNhY2hlc0J1aWx0OwogCkBAIC00MjI4LDE1ICs0MjE0LDEzIEBAIFJlbGF0 aW9uQ2FjaGVJbml0aWFsaXplUGhhc2UzKHZvaWQpCiAJICoKIAkgKiBXaGVuZXZlciB3ZSBhY2Nl c3MgdGhlIGNhdGFsb2dzIHRvIHJlYWQgZGF0YSwgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvZgog CSAqIGEgc2hhcmVkLWludmFsIGNhY2hlIGZsdXNoIGNhdXNpbmcgcmVsY2FjaGUgZW50cmllcyB0 byBiZSByZW1vdmVkLgotCSAqIFNpbmNlIGhhc2hfc2VxX3NlYXJjaCBvbmx5IGd1YXJhbnRlZXMg dG8gc3RpbGwgd29yayBhZnRlciB0aGUgKmN1cnJlbnQqCisJICogU2luY2UgZm9yZWFjaF9oYXNo IG9ubHkgZ3VhcmFudGVlcyB0byBzdGlsbCB3b3JrIGFmdGVyIHRoZSAqY3VycmVudCoKIAkgKiBl bnRyeSBpcyByZW1vdmVkLCBpdCdzIHVuc2FmZSB0byBjb250aW51ZSB0aGUgaGFzaHRhYmxlIHNj YW4gYWZ0ZXJ3YXJkLgogCSAqIFdlIGhhbmRsZSB0aGlzIGJ5IHJlc3RhcnRpbmcgdGhlIHNjYW4g ZnJvbSBzY3JhdGNoIGFmdGVyIGVhY2ggYWNjZXNzLgogCSAqIFRoaXMgaXMgdGhlb3JldGljYWxs eSBPKE5eMiksIGJ1dCB0aGUgbnVtYmVyIG9mIGVudHJpZXMgdGhhdCBhY3R1YWxseQogCSAqIG5l ZWQgdG8gYmUgZml4ZWQgaXMgc21hbGwgZW5vdWdoIHRoYXQgaXQgZG9lc24ndCBtYXR0ZXIuCiAJ ICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUg KChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsSWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9u SWRDYWNoZSkKIAl7CiAJCVJlbGF0aW9uCXJlbGF0aW9uID0gaWRoZW50cnktPnJlbGRlc2M7CiAJ CWJvb2wJCXJlc3RhcnQgPSBmYWxzZTsKQEAgLTQzNDYsMTAgKzQzMzAsNyBAQCBSZWxhdGlvbkNh Y2hlSW5pdGlhbGl6ZVBoYXNlMyh2b2lkKQogCiAJCS8qIE5vdywgcmVzdGFydCB0aGUgaGFzaHRh YmxlIHNjYW4gaWYgbmVlZGVkICovCiAJCWlmIChyZXN0YXJ0KQotCQl7Ci0JCQloYXNoX3NlcV90 ZXJtKCZzdGF0dXMpOwotCQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUp OwotCQl9CisJCQlmb3JlYWNoX2hhc2hfcmVzdGFydChpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hl KTsKIAl9CiAKIAkvKgpAQCAtNjYwMSw4ICs2NTgyLDYgQEAgd3JpdGVfcmVsY2FjaGVfaW5pdF9m aWxlKGJvb2wgc2hhcmVkKQogCWNoYXIJCXRlbXBmaWxlbmFtZVtNQVhQR1BBVEhdOwogCWNoYXIJ CWZpbmFsZmlsZW5hbWVbTUFYUEdQQVRIXTsKIAlpbnQJCQltYWdpYzsKLQlIQVNIX1NFUV9TVEFU VVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlkaGVudHJ5OwogCWludAkJCWk7CiAKIAkvKgpA QCAtNjY2Miw5ICs2NjQxLDcgQEAgd3JpdGVfcmVsY2FjaGVfaW5pdF9maWxlKGJvb2wgc2hhcmVk KQogCS8qCiAJICogV3JpdGUgYWxsIHRoZSBhcHByb3ByaWF0ZSByZWxkZXNjcyAoaW4gbm8gcGFy dGljdWxhciBvcmRlcikuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklk Q2FjaGUpOwotCi0Jd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2Vx X3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsSWRDYWNoZUVudCwg aWRoZW50cnksIFJlbGF0aW9uSWRDYWNoZSkKIAl7CiAJCVJlbGF0aW9uCXJlbCA9IGlkaGVudHJ5 LT5yZWxkZXNjOwogCQlGb3JtX3BnX2NsYXNzIHJlbGZvcm0gPSByZWwtPnJkX3JlbDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYwppbmRleCAwOWIwNWRlYzlkMC4u MDBkZjdkYjQ4MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVu dW1iZXJtYXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFw LmMKQEAgLTUxLDE0ICs1MSwxMCBAQCB0eXBlZGVmIHN0cnVjdAogc3RhdGljIHZvaWQKIFJlbGZp bGVudW1iZXJNYXBJbnZhbGlkYXRlQ2FsbGJhY2soRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiB7Ci0J SEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWxmaWxlbnVtYmVyTWFwRW50cnkgKmVudHJ5Owot CiAJLyogY2FsbGJhY2sgb25seSBnZXRzIHJlZ2lzdGVyZWQgYWZ0ZXIgY3JlYXRpbmcgdGhlIGhh c2ggKi8KIAlBc3NlcnQoUmVsZmlsZW51bWJlck1hcEhhc2ggIT0gTlVMTCk7CiAKLQloYXNoX3Nl cV9pbml0KCZzdGF0dXMsIFJlbGZpbGVudW1iZXJNYXBIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0g KFJlbGZpbGVudW1iZXJNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKFJlbGZpbGVudW1iZXJNYXBFbnRyeSwgZW50cnksIFJlbGZpbGVu dW1iZXJNYXBIYXNoKQogCXsKIAkJLyoKIAkJICogSWYgcmVsaWQgaXMgSW52YWxpZE9pZCwgc2ln bmFsaW5nIGEgY29tcGxldGUgcmVzZXQsIHdlIG11c3QgcmVtb3ZlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv c3BjY2FjaGUuYwppbmRleCBhY2ZmNjJhMzhiZS4uMDg4YzBmNjljY2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvc3BjY2FjaGUuYwpAQCAtNTYsMTEgKzU2LDcgQEAgc3RhdGljIHZvaWQKIEludmFsaWRh dGVUYWJsZVNwYWNlQ2FjaGVDYWxsYmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBj YWNoZWlkLAogCQkJCQkJCQkgIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlUYWJsZVNwYWNlQ2FjaGVFbnRyeSAqc3BjOwotCi0JaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBUYWJsZVNwYWNlQ2FjaGVIYXNoKTsKLQl3aGlsZSAoKHNwYyA9IChUYWJsZVNwYWNl Q2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFRhYmxlU3BhY2VDYWNoZUVudHJ5LCBzcGMsIFRhYmxlU3BhY2VDYWNoZUhhc2gpCiAJ ewogCQlpZiAoc3BjLT5vcHRzKQogCQkJcGZyZWUoc3BjLT5vcHRzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS90c19jYWNoZS5jCmluZGV4IDYzNjExOTNhZWY5Li4xY2RkYmQ5OGQ3YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS90c19jYWNoZS5jCkBAIC05NCwxMSArOTQsOCBAQCBzdGF0aWMgdm9pZAogSW52YWxp ZGF0ZVRTQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZWlk LCB1aW50MzIgaGFzaHZhbHVlKQogewogCUhUQUIJICAgKmhhc2ggPSAoSFRBQiAqKSBEYXR1bUdl dFBvaW50ZXIoYXJnKTsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVRTQW55Q2FjaGVFbnRy eSAqZW50cnk7CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGhhc2gpOwotCXdoaWxlICgoZW50 cnkgPSAoVFNBbnlDYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2goVFNBbnlDYWNoZUVudHJ5LCBlbnRyeSwgaGFzaCkKIAkJZW50cnkt PmlzdmFsaWQgPSBmYWxzZTsKIAogCS8qIEFsc28gaW52YWxpZGF0ZSB0aGUgY3VycmVudC1jb25m aWcgY2FjaGUgaWYgaXQncyBwZ190c19jb25maWcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNo ZS5jCmluZGV4IDVlNjY1MDQwNGY0Li42NjZkNDJiYWQ0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90 eXBjYWNoZS5jCkBAIC0yNDM1LDE0ICsyNDM1LDEzIEBAIEludmFsaWRhdGVDb21wb3NpdGVUeXBl Q2FjaGVFbnRyeShUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnkpCiBzdGF0aWMgdm9pZAogVHlwZUNh Y2hlUmVsQ2FsbGJhY2soRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiB7Ci0JVHlwZUNhY2hlRW50cnkg KnR5cGVudHJ5OwotCiAJLyoKIAkgKiBSZWxJZFRvVHlwZUlkQ2FjaGVIYXNoIGFuZCBUeXBlQ2Fj aGVIYXNoIHNob3VsZCBleGlzdCwgb3RoZXJ3aXNlIHRoaXMKIAkgKiBjYWxsYmFjayB3b3VsZG4n dCBiZSByZWdpc3RlcmVkCiAJICovCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCXsKKwkJVHlw ZUNhY2hlRW50cnkgKnR5cGVudHJ5OwogCQlSZWxJZFRvVHlwZUlkQ2FjaGVFbnRyeSAqcmVsZW50 cnk7CiAKIAkJLyoKQEAgLTI0OTAsMTUgKzI0ODksMTIgQEAgVHlwZUNhY2hlUmVsQ2FsbGJhY2so RGF0dW0gYXJnLCBPaWQgcmVsaWQpCiAJfQogCWVsc2UKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBz dGF0dXM7Ci0KIAkJLyoKIAkJICogUmVsaWQgaXMgaW52YWxpZC4gQnkgY29udmVudGlvbiwgd2Ug bmVlZCB0byByZXNldCBhbGwgY29tcG9zaXRlCiAJCSAqIHR5cGVzIGluIGNhY2hlLiBBbHNvLCB3 ZSBzaG91bGQgcmVzZXQgZmxhZ3MgZm9yIGRvbWFpbiB0eXBlcywgYW5kCiAJCSAqIHdlIGxvb3Ag b3ZlciBhbGwgZW50cmllcyBpbiBoYXNoLCBzbywgZG8gaXQgaW4gYSBzaW5nbGUgc2Nhbi4KIAkJ ICovCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgVHlwZUNhY2hlSGFzaCk7Ci0JCXdoaWxlICgo dHlwZW50cnkgPSAoVHlwZUNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAh PSBOVUxMKQorCQlmb3JlYWNoX2hhc2goVHlwZUNhY2hlRW50cnksIHR5cGVudHJ5LCBUeXBlQ2Fj aGVIYXNoKQogCQl7CiAJCQlpZiAodHlwZW50cnktPnR5cHR5cGUgPT0gVFlQVFlQRV9DT01QT1NJ VEUpCiAJCQl7CkBAIC0yNTg4LDEyICsyNTg0LDggQEAgVHlwZUNhY2hlVHlwQ2FsbGJhY2soRGF0 dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHN0 YXRpYyB2b2lkCiBUeXBlQ2FjaGVPcGNDYWxsYmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRp ZmllciBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5OwotCiAJLyogVHlwZUNhY2hlSGFzaCBtdXN0 IGV4aXN0LCBlbHNlIHRoaXMgY2FsbGJhY2sgd291bGRuJ3QgYmUgcmVnaXN0ZXJlZCAqLwotCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgVHlwZUNhY2hlSGFzaCk7Ci0Jd2hpbGUgKCh0eXBlbnRyeSA9 IChUeXBlQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ Zm9yZWFjaF9oYXNoKFR5cGVDYWNoZUVudHJ5LCB0eXBlbnRyeSwgVHlwZUNhY2hlSGFzaCkKIAl7 CiAJCWJvb2wJCWhhZE9wY2xhc3MgPSAodHlwZW50cnktPmZsYWdzICYgVENGTEFHU19PUEVSQVRP Ul9GTEFHUyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IDI2OGI1ZjM1ZTA5Li45ZGYxM2RlOTAx MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0yODgsOCArMjg4LDYgQEAgUHJvY2Vzc0NvbmZpZ0Zp bGVJbnRlcm5hbChHdWNDb250ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0aW5ncywgaW50IGVs ZXZlbCkKIAljb25zdCBjaGFyICpDb25mRmlsZVdpdGhFcnJvcjsKIAlDb25maWdWYXJpYWJsZSAq aGVhZCwKIAkJCSAgICp0YWlsOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JR1VDSGFzaEVu dHJ5ICpoZW50cnk7CiAKIAkvKiBQYXJzZSB0aGUgbWFpbiBjb25maWcgZmlsZSBpbnRvIGEgbGlz dCBvZiBvcHRpb24gbmFtZXMgYW5kIHZhbHVlcyAqLwogCUNvbmZGaWxlV2l0aEVycm9yID0gQ29u ZmlnRmlsZU5hbWU7CkBAIC0zNjQsOCArMzYyLDcgQEAgUHJvY2Vzc0NvbmZpZ0ZpbGVJbnRlcm5h bChHdWNDb250ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0aW5ncywgaW50IGVsZXZlbCkKIAkg KiBuZWVkIHRoaXMgc28gdGhhdCB3ZSBjYW4gdGVsbCBiZWxvdyB3aGljaCBvbmVzIGhhdmUgYmVl biByZW1vdmVkIGZyb20KIAkgKiB0aGUgZmlsZSBzaW5jZSB3ZSBsYXN0IHByb2Nlc3NlZCBpdC4K IAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhl bnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxM KQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewog CQlzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKmdjb25mID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTQ0 OSw4ICs0NDYsNyBAQCBQcm9jZXNzQ29uZmlnRmlsZUludGVybmFsKEd1Y0NvbnRleHQgY29udGV4 dCwgYm9vbCBhcHBseVNldHRpbmdzLCBpbnQgZWxldmVsKQogCSAqIGJvb3QtdGltZSBkZWZhdWx0 cy4gIElmIHN1Y2ggYSB2YXJpYWJsZSBjYW4ndCBiZSBjaGFuZ2VkIGFmdGVyIHN0YXJ0dXAsCiAJ ICogcmVwb3J0IHRoYXQgYW5kIGNvbnRpbnVlLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdVQ0hhc2hFbnRy eSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCXN0cnVjdCBjb25maWdfZ2VuZXJpYyAqZ2Nv bmYgPSBoZW50cnktPmd1Y3ZhcjsKIApAQCAtODM5LDggKzgzNSw2IEBAIHN0cnVjdCBjb25maWdf Z2VuZXJpYyAqKgogZ2V0X2d1Y192YXJpYWJsZXMoaW50ICpudW1fdmFycykKIHsKIAlzdHJ1Y3Qg Y29uZmlnX2dlbmVyaWMgKipyZXN1bHQ7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNI YXNoRW50cnkgKmhlbnRyeTsKIAlpbnQJCQlpOwogCiAJKm51bV92YXJzID0gaGFzaF9nZXRfbnVt X2VudHJpZXMoZ3VjX2hhc2h0YWIpOwpAQCAtODQ4LDggKzg0Miw3IEBAIGdldF9ndWNfdmFyaWFi bGVzKGludCAqbnVtX3ZhcnMpCiAKIAkvKiBFeHRyYWN0IHBvaW50ZXJzIGZyb20gdGhlIGhhc2gg dGFibGUgKi8KIAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsK LQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hh c2h0YWIpCiAJCXJlc3VsdFtpKytdID0gaGVudHJ5LT5ndWN2YXI7CiAJQXNzZXJ0KGkgPT0gKm51 bV92YXJzKTsKIApAQCAtMTQwMCw5ICsxMzkzLDYgQEAgY2hlY2tfR1VDX2luaXQoY29uc3Qgc3Ry dWN0IGNvbmZpZ19nZW5lcmljICpnY29uZikKIHZvaWQKIEluaXRpYWxpemVHVUNPcHRpb25zKHZv aWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsK LQogCS8qCiAJICogQmVmb3JlIGxvZ19saW5lX3ByZWZpeCBjb3VsZCBwb3NzaWJseSByZWNlaXZl IGEgbm9uZW1wdHkgc2V0dGluZywgbWFrZQogCSAqIHN1cmUgdGhhdCB0aW1lem9uZSBwcm9jZXNz aW5nIGlzIG1pbmltYWxseSBhbGl2ZSAoc2VlIGVsb2cuYykuCkBAIC0xNDE4LDggKzE0MDgsNyBA QCBJbml0aWFsaXplR1VDT3B0aW9ucyh2b2lkKQogCSAqIExvYWQgYWxsIHZhcmlhYmxlcyB3aXRo IHRoZWlyIGNvbXBpbGVkLWluIGRlZmF1bHRzLCBhbmQgaW5pdGlhbGl6ZQogCSAqIHN0YXR1cyBm aWVsZHMgYXMgbmVlZGVkLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgZ3VjX2hhc2h0 YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdVQ0hhc2hFbnRyeSwgaGVudHJ5LCBn dWNfaGFzaHRhYikKIAl7CiAJCS8qIENoZWNrIG1hcHBpbmcgYmV0d2VlbiBpbml0aWFsIGFuZCBk ZWZhdWx0IHZhbHVlICovCiAJCUFzc2VydChjaGVja19HVUNfaW5pdChoZW50cnktPmd1Y3Zhcikp OwpAQCAtMjQxNCw5ICsyNDAzLDYgQEAgQXRFT1hhY3RfR1VDKGJvb2wgaXNDb21taXQsIGludCBu ZXN0TGV2ZWwpCiB2b2lkCiBCZWdpblJlcG9ydGluZ0dVQ09wdGlvbnModm9pZCkKIHsKLQlIQVNI X1NFUV9TVEFUVVMgc3RhdHVzOwotCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwotCiAJLyoKIAkgKiBE b24ndCBkbyBhbnl0aGluZyB1bmxlc3MgdGFsa2luZyB0byBhbiBpbnRlcmFjdGl2ZSBmcm9udGVu ZC4KIAkgKi8KQEAgLTI0MzgsOCArMjQyNCw3IEBAIEJlZ2luUmVwb3J0aW5nR1VDT3B0aW9ucyh2 b2lkKQogCQkJCQkJUEdDX0lOVEVSTkFMLCBQR0NfU19PVkVSUklERSk7CiAKIAkvKiBUcmFuc21p dCBpbml0aWFsIHZhbHVlcyBvZiBpbnRlcmVzdGluZyB2YXJpYWJsZXMgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50 cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChH VUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dl bmVyaWMgKmNvbmYgPSBoZW50cnktPmd1Y3ZhcjsKIApAQCAtNTE0MiwxNiArNTEyNywxMyBAQCB2 b2lkCiBNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoY29uc3QgY2hhciAqY2xhc3NOYW1lKQogewogCWlu dAkJCWNsYXNzTGVuID0gc3RybGVuKGNsYXNzTmFtZSk7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1 czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAK IAkvKgogCSAqIENoZWNrIGZvciBleGlzdGluZyBwbGFjZWhvbGRlcnMuICBXZSBtdXN0IGFjdHVh bGx5IHJlbW92ZSBpbnZhbGlkCiAJICogcGxhY2Vob2xkZXJzLCBlbHNlIGZ1dHVyZSBwYXJhbGxl bCB3b3JrZXIgc3RhcnR1cHMgd2lsbCBmYWlsLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdVQ0hhc2hFbnRy eSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCXN0cnVjdCBjb25maWdfZ2VuZXJpYyAqdmFy ID0gaGVudHJ5LT5ndWN2YXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IGVk NjE0Y2Y1YzI3Li4yNDc5Yjc0YTY3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBA IC0zMyw3ICszMyw3IEBACiAgKiB1c2VkIGluIGluaXRpYWxseSBzaXppbmcgdGhlIFBvcnRhbEhh c2hUYWJsZSBpbiBFbmFibGVQb3J0YWxNYW5hZ2VyKCkuCiAgKiBTaW5jZSB0aGUgaGFzaCB0YWJs ZSBjYW4gZXhwYW5kLCB0aGVyZSdzIG5vIG5lZWQgdG8gbWFrZSB0aGlzIG92ZXJseQogICogZ2Vu ZXJvdXMsIGFuZCBrZWVwaW5nIGl0IHNtYWxsIGF2b2lkcyB1bm5lY2Vzc2FyeSBvdmVyaGVhZCBp biB0aGUKLSAqIGhhc2hfc2VxX3NlYXJjaCgpIGNhbGxzIGV4ZWN1dGVkIGR1cmluZyB0cmFuc2Fj dGlvbiBlbmQuCisgKiBmb3JlYWNoX2hhc2ggbG9vcHMgZXhlY3V0ZWQgZHVyaW5nIHRyYW5zYWN0 aW9uIGVuZC4KICAqLwogI2RlZmluZSBQT1JUQUxTX1BFUl9VU0VSCSAgIDE2CiAKQEAgLTYwMSwx NCArNjAxLDEwIEBAIFBvcnRhbERyb3AoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcENvbW1pdCkK IHZvaWQKIFBvcnRhbEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCiAJaWYgKFBvcnRhbEhhc2hUYWJs ZSA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhh c2hUYWJsZSk7Ci0Jd2hpbGUgKChoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRh YmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtNjE5LDgg KzYxNSw3IEBAIFBvcnRhbEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKQogCQlQb3J0YWxEcm9wKHBv cnRhbCwgZmFsc2UpOwogCiAJCS8qIFJlc3RhcnQgdGhlIGl0ZXJhdGlvbiBpbiBjYXNlIHRoYXQg bGVkIHRvIG90aGVyIGRyb3BzICovCi0JCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7Ci0JCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKKwkJZm9yZWFjaF9oYXNoX3Jlc3Rh cnQoaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpOwogCX0KIH0KIApAQCAtNjcyLDEyICs2NjcsOCBA QCBib29sCiBQcmVDb21taXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSkKIHsKIAlib29sCQlyZXN1 bHQgPSBmYWxzZTsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhl bnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKIAotCXdo aWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhh c2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTc1 OSw4ICs3NTAsNyBAQCBQcmVDb21taXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSkKIAkJICogaXRl cmF0aW9uLCBiZWNhdXNlIHdlIGNvdWxkIGhhdmUgaW52b2tlZCB1c2VyLWRlZmluZWQgY29kZSB0 aGF0CiAJCSAqIGNhdXNlZCBhIGRyb3Agb2YgdGhlIG5leHQgcG9ydGFsIGluIHRoZSBoYXNoIGNo YWluLgogCQkgKi8KLQkJaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKLQkJaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOworCQlmb3JlYWNoX2hhc2hfcmVzdGFydChoZW50cnks IFBvcnRhbEhhc2hUYWJsZSk7CiAJfQogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTc3NSwxMiArNzY1 LDcgQEAgUHJlQ29tbWl0X1BvcnRhbHMoYm9vbCBpc1ByZXBhcmUpCiB2b2lkCiBBdEFib3J0X1Bv cnRhbHModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQg KmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQot CXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRh bEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAg LTg1MywxMiArODM4LDcgQEAgQXRBYm9ydF9Qb3J0YWxzKHZvaWQpCiB2b2lkCiBBdENsZWFudXBf UG9ydGFscyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVu dCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwot Ci0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0 YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9y dGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApA QCAtOTEyLDEyICs4OTIsNyBAQCBBdENsZWFudXBfUG9ydGFscyh2b2lkKQogdm9pZAogUG9ydGFs RXJyb3JDbGVhbnVwKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxI YXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJs ZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVudHJ5 LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFs OwogCkBAIC05NDEsMTIgKzkxNiw3IEBAIEF0U3ViQ29tbWl0X1BvcnRhbHMoU3ViVHJhbnNhY3Rp b25JZCBteVN1YmlkLAogCQkJCQlpbnQgcGFyZW50TGV2ZWwsCiAJCQkJCVJlc291cmNlT3duZXIg cGFyZW50WGFjdE93bmVyKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFz aEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUp OwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwg UG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsK IApAQCAtOTc3LDEyICs5NDcsNyBAQCBBdFN1YkFib3J0X1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25J ZCBteVN1YmlkLAogCQkJCSAgIFJlc291cmNlT3duZXIgbXlYYWN0T3duZXIsCiAJCQkJICAgUmVz b3VyY2VPd25lciBwYXJlbnRYYWN0T3duZXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRh bEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVu dCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRy eS0+cG9ydGFsOwogCkBAIC0xMDg3LDEyICsxMDUyLDcgQEAgQXRTdWJBYm9ydF9Qb3J0YWxzKFN1 YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIHZvaWQKIEF0U3ViQ2xlYW51cF9Qb3J0YWxzKFN1YlRy YW5zYWN0aW9uSWQgbXlTdWJpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRh bEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRh YmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2Vh cmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50 cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0 YWw7CiAKQEAgLTExMjcsOCArMTA4Nyw2IEBAIERhdHVtCiBwZ19jdXJzb3IoUEdfRlVOQ1RJT05f QVJHUykKIHsKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2lu Zm8tPnJlc3VsdGluZm87Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCVBvcnRhbEhhc2hF bnQgKmhlbnRyeTsKIAogCS8qCiAJICogV2UgcHV0IGFsbCB0aGUgdHVwbGVzIGludG8gYSB0dXBs ZXN0b3JlIGluIG9uZSBzY2FuIG9mIHRoZSBoYXNodGFibGUuCkBAIC0xMTM2LDggKzEwOTQsNyBA QCBwZ19jdXJzb3IoUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAlJbml0TWF0ZXJpYWxpemVkU1JG KGZjaW5mbywgMCk7CiAKLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgUG9ydGFsSGFzaFRhYmxl KTsKLQl3aGlsZSAoKGhlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxM KQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkK IAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAJCURhdHVtCQl2YWx1ZXNb Nl07CkBAIC0xMTY2LDEyICsxMTIzLDcgQEAgcGdfY3Vyc29yKFBHX0ZVTkNUSU9OX0FSR1MpCiBi b29sCiBUaGVyZUFyZU5vUmVhZHlQb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFs SGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9 IGhlbnRyeS0+cG9ydGFsOwogCkBAIC0xMjAyLDEyICsxMTU0LDcgQEAgVGhlcmVBcmVOb1JlYWR5 UG9ydGFscyh2b2lkKQogdm9pZAogSG9sZFBpbm5lZFBvcnRhbHModm9pZCkKIHsKLQlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRh bEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRh bAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEyNTEsMTUgKzExOTgsMTEgQEAgSG9s ZFBpbm5lZFBvcnRhbHModm9pZCkKIHZvaWQKIEZvcmdldFBvcnRhbFNuYXBzaG90cyh2b2lkKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwogCWlu dAkJCW51bVBvcnRhbFNuYXBzID0gMDsKIAlpbnQJCQludW1BY3RpdmVTbmFwcyA9IDA7CiAKIAkv KiBGaXJzdCwgc2NhbiBQb3J0YWxIYXNoVGFibGUgYW5kIGNsZWFyIHBvcnRhbFNuYXBzaG90IGZp ZWxkcyAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdo aWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhh c2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKZGlmZiAt LWdpdCBhL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMgYi9zcmMvcGwvcGxwZXJsL3BscGVybC5jCmlu ZGV4IDQ5MDQ0YmM4MDhiLi4yY2ZkZjIzOWVlNCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGVybC9w bHBlcmwuYworKysgYi9zcmMvcGwvcGxwZXJsL3BscGVybC5jCkBAIC01MDMsOSArNTAzLDYgQEAg c2V0X2ludGVycF9yZXF1aXJlKGJvb2wgdHJ1c3RlZCkKIHN0YXRpYyB2b2lkCiBwbHBlcmxfZmlu aShpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsKLQlw bHBlcmxfaW50ZXJwX2Rlc2MgKmludGVycF9kZXNjOwotCiAJZWxvZyhERUJVRzMsICJwbHBlcmxf ZmluaSIpOwogCiAJLyoKQEAgLTUyNyw4ICs1MjQsNyBAQCBwbHBlcmxfZmluaShpbnQgY29kZSwg RGF0dW0gYXJnKQogCXBscGVybF9kZXN0cm95X2ludGVycCgmcGxwZXJsX2hlbGRfaW50ZXJwKTsK IAogCS8qIFphcCBhbnkgZnVsbHktaW5pdGlhbGl6ZWQgaW50ZXJwcmV0ZXJzICovCi0JaGFzaF9z ZXFfaW5pdCgmaGFzaF9zZXEsIHBscGVybF9pbnRlcnBfaGFzaCk7Ci0Jd2hpbGUgKChpbnRlcnBf ZGVzYyA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChwbHBlcmxfaW50ZXJwX2Rlc2MsIGludGVycF9kZXNjLCBwbHBlcmxfaW50ZXJwX2hhc2gpCiAJ ewogCQlpZiAoaW50ZXJwX2Rlc2MtPmludGVycCkKIAkJewotLSAKMi41My4wCgo= --fa477b38488948ff15b3b48282d6687669f99a2f4e6f04695d67f6869b31 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v11-0005-Inline-functions-that-have-now-become-trivial.patch Content-Type: text/x-patch; charset=utf-8; name=v11-0005-Inline-functions-that-have-now-become-trivial.patch RnJvbSBmNTUyY2E0NTVlNDhkMDU1MjIxMmE3Y2EwMzAwMjMxYTcwM2VhOGQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMjM6MzM6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MSA1LzVdIElubGluZSBmdW5jdGlvbnMgdGhhdCBoYXZlIG5vdyBiZWNvbWUgdHJpdmlhbAoKLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICB8IDE3ICsrKy0tLS0tLS0tLS0t LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jICAgICB8IDE2ICsrKy0tLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jIHwgMjIgKysrKy0tLS0t LS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0NSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggNGFkOWMxMGE3ZjguLmFkMmYyYWIx M2VjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC00Niw3ICs0Niw2IEBACiAgKi8KIHN0YXRp YyBIVEFCICpwcmVwYXJlZF9xdWVyaWVzID0gTlVMTDsKIAotc3RhdGljIHZvaWQgSW5pdFF1ZXJ5 SGFzaFRhYmxlKHZvaWQpOwogc3RhdGljIFBhcmFtTGlzdEluZm8gRXZhbHVhdGVQYXJhbXMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJUHJlcGFyZWRTdGF0ZW1lbnQgKnBzdG10LCBMaXN0 ICpwYXJhbXMsCiAJCQkJCQkJCQlFU3RhdGUgKmVzdGF0ZSk7CkBAIC0zNjQsMTggKzM2Myw2IEBA IEV2YWx1YXRlUGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUHJlcGFyZWRTdGF0ZW1lbnQgKnBz dG10LCBMaXN0ICpwYXJhbXMsCiAJcmV0dXJuIHBhcmFtTEk7CiB9CiAKLQotLyoKLSAqIEluaXRp YWxpemUgcXVlcnkgaGFzaCB0YWJsZSB1cG9uIGZpcnN0IHVzZS4KLSAqLwotc3RhdGljIHZvaWQK LUluaXRRdWVyeUhhc2hUYWJsZSh2b2lkKQotewotCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX21h a2VfY3h0KFByZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCi0JCQkJCQkJCQkgIlByZXBhcmVk IFF1ZXJpZXMiLCAzMiwKLQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKLX0KLQogLyoKICAq IFN0b3JlIGFsbCB0aGUgZGF0YSBwZXJ0YWluaW5nIHRvIGEgcXVlcnkgaW4gdGhlIGhhc2ggdGFi bGUgdXNpbmcKICAqIHRoZSBzcGVjaWZpZWQga2V5LiAgVGhlIHBhc3NlZCBDYWNoZWRQbGFuU291 cmNlIHNob3VsZCBiZSAidW5zYXZlZCIKQEAgLTM5Myw3ICszODAsOSBAQCBTdG9yZVByZXBhcmVk U3RhdGVtZW50KGNvbnN0IGNoYXIgKnN0bXRfbmFtZSwKIAogCS8qIEluaXRpYWxpemUgdGhlIGhh c2ggdGFibGUsIGlmIG5lY2Vzc2FyeSAqLwogCWlmICghcHJlcGFyZWRfcXVlcmllcykKLQkJSW5p dFF1ZXJ5SGFzaFRhYmxlKCk7CisJCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX21ha2VfY3h0KFBy ZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCisJCQkJCQkJCQkJICJQcmVwYXJlZCBRdWVyaWVz IiwgMzIsCisJCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyogQWRkIGVudHJ5IHRv IGhhc2ggdGFibGUgKi8KIAllbnRyeSA9IChQcmVwYXJlZFN0YXRlbWVudCAqKSBoYXNoX3NlYXJj aChwcmVwYXJlZF9xdWVyaWVzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggNWEyNjgzYzA3 MzUuLjc0ZjVhYTQ5ZDU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5j ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTg5LDcgKzg5LDYg QEAgc3RhdGljIFNlcVRhYmxlRGF0YSAqbGFzdF91c2VkX3NlcSA9IE5VTEw7CiBzdGF0aWMgdm9p ZCBmaWxsX3NlcV93aXRoX2RhdGEoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwbGUpOwogc3Rh dGljIHZvaWQgZmlsbF9zZXFfZm9ya193aXRoX2RhdGEoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUg dHVwbGUsIEZvcmtOdW1iZXIgZm9ya051bSk7CiBzdGF0aWMgUmVsYXRpb24gbG9ja19hbmRfb3Bl bl9zZXF1ZW5jZShTZXFUYWJsZSBzZXEpOwotc3RhdGljIHZvaWQgY3JlYXRlX3NlcV9oYXNodGFi bGUodm9pZCk7CiBzdGF0aWMgdm9pZCBpbml0X3NlcXVlbmNlKE9pZCByZWxpZCwgU2VxVGFibGUg KnBfZWxtLCBSZWxhdGlvbiAqcF9yZWwpOwogc3RhdGljIEZvcm1fcGdfc2VxdWVuY2VfZGF0YSBy ZWFkX3NlcV90dXBsZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCUJ1ZmZlciAqYnVmLCBIZWFw VHVwbGUgc2VxZGF0YXR1cGxlKTsKQEAgLTExMDcsMTcgKzExMDYsNiBAQCBsb2NrX2FuZF9vcGVu X3NlcXVlbmNlKFNlcVRhYmxlIHNlcSkKIAlyZXR1cm4gc2VxdWVuY2Vfb3BlbihzZXEtPnJlbGlk LCBOb0xvY2spOwogfQogCi0vKgotICogQ3JlYXRlcyB0aGUgaGFzaCB0YWJsZSBmb3Igc3Rvcmlu ZyBzZXF1ZW5jZSBkYXRhCi0gKi8KLXN0YXRpYyB2b2lkCi1jcmVhdGVfc2VxX2hhc2h0YWJsZSh2 b2lkKQotewotCXNlcWhhc2h0YWIgPSBoYXNoX21ha2VfY3h0KFNlcVRhYmxlRGF0YSwgcmVsaWQs Ci0JCQkJCQkJICAgIlNlcXVlbmNlIHZhbHVlcyIsIDE2LAotCQkJCQkJCSAgIFRvcE1lbW9yeUNv bnRleHQpOwotfQotCiAvKgogICogR2l2ZW4gYSByZWxhdGlvbiBPSUQsIG9wZW4gYW5kIGxvY2sg dGhlIHNlcXVlbmNlLiAgcF9lbG0gYW5kIHBfcmVsIGFyZQogICogb3V0cHV0IHBhcmFtZXRlcnMu CkBAIC0xMTMxLDcgKzExMTksOSBAQCBpbml0X3NlcXVlbmNlKE9pZCByZWxpZCwgU2VxVGFibGUg KnBfZWxtLCBSZWxhdGlvbiAqcF9yZWwpCiAKIAkvKiBGaW5kIG9yIGNyZWF0ZSBhIGhhc2ggdGFi bGUgZW50cnkgZm9yIHRoaXMgc2VxdWVuY2UgKi8KIAlpZiAoc2VxaGFzaHRhYiA9PSBOVUxMKQot CQljcmVhdGVfc2VxX2hhc2h0YWJsZSgpOworCQlzZXFoYXNodGFiID0gaGFzaF9tYWtlX2N4dChT ZXFUYWJsZURhdGEsIHJlbGlkLAorCQkJCQkJCQkgICAiU2VxdWVuY2UgdmFsdWVzIiwgMTYsCisJ CQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJZWxtID0gKFNlcVRhYmxlKSBoYXNoX3Nl YXJjaChzZXFoYXNodGFiLCAmcmVsaWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvZnVuY2NhY2hlLmMKaW5kZXggYmVmOTM4YzM3YzAuLjBlNWJmYTJhNTZhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYwpAQCAtNTAsMjMgKzUwLDYgQEAgc3RhdGljIHVp bnQzMiBjZnVuY19oYXNoKGNvbnN0IHZvaWQgKmtleSwgU2l6ZSBrZXlzaXplKTsKIHN0YXRpYyBp bnQJY2Z1bmNfbWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBr ZXlzaXplKTsKIAogCi0vKgotICogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSBvbiBmaXJzdCB1 c2UuCi0gKgotICogVGhlIGhhc2ggdGFibGUgd2lsbCBiZSBpbiBUb3BNZW1vcnlDb250ZXh0IHJl Z2FyZGxlc3Mgb2YgY2FsbGVyJ3MgY29udGV4dC4KLSAqLwotc3RhdGljIHZvaWQKLWNmdW5jX2hh c2h0YWJsZV9pbml0KHZvaWQpCi17Ci0JLyogZG9uJ3QgYWxsb3cgZG91YmxlLWluaXRpYWxpemF0 aW9uICovCi0JQXNzZXJ0KGNmdW5jX2hhc2h0YWJsZSA9PSBOVUxMKTsKLQotCWNmdW5jX2hhc2h0 YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnksIGtleSwKLQkJ CQkJCQkJCSAgICJDYWNoZWQgZnVuY3Rpb24gaGFzaCIsIEZVTkNTX1BFUl9VU0VSLAotCQkJCQkJ CQkJICAgY2Z1bmNfaGFzaCwgY2Z1bmNfbWF0Y2gsCi0JCQkJCQkJCQkgICBUb3BNZW1vcnlDb250 ZXh0KTsKLX0KLQogLyoKICAqIGNmdW5jX2hhc2g6IGhhc2ggZnVuY3Rpb24gZm9yIGNmdW5jIGhh c2ggdGFibGUKICAqCkBAIC0xNjUsNyArMTQ4LDEwIEBAIGNmdW5jX2hhc2h0YWJsZV9pbnNlcnQo Q2FjaGVkRnVuY3Rpb24gKmZ1bmN0aW9uLAogCWJvb2wJCWZvdW5kOwogCiAJaWYgKGNmdW5jX2hh c2h0YWJsZSA9PSBOVUxMKQotCQljZnVuY19oYXNodGFibGVfaW5pdCgpOworCQljZnVuY19oYXNo dGFibGUgPSBoYXNoX21ha2VfZm5fY3h0KENhY2hlZEZ1bmN0aW9uSGFzaEVudHJ5LCBrZXksCisJ CQkJCQkJCQkJICAgIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwgRlVOQ1NfUEVSX1VTRVIsCisJCQkJ CQkJCQkJICAgY2Z1bmNfaGFzaCwgY2Z1bmNfbWF0Y2gsCisJCQkJCQkJCQkJICAgVG9wTWVtb3J5 Q29udGV4dCk7CiAKIAloZW50cnkgPSAoQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnkgKikgaGFzaF9z ZWFyY2goY2Z1bmNfaGFzaHRhYmxlLAogCQkJCQkJCQkJCQkJCSBmdW5jX2tleSwKLS0gCjIuNTMu MAoK --fa477b38488948ff15b3b48282d6687669f99a2f4e6f04695d67f6869b31--