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 1w8IuP-000Oxt-11 for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 14:20:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8IuN-006N7f-0o for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 14:20:31 +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 1w8IuM-006N7W-2E for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 14:20:31 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8IuI-00000000DD6-0ecH for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 14:20:30 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-661b16ac011so1824133a12.2 for ; Thu, 02 Apr 2026 07:20:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1775139625; x=1775744425; darn=lists.postgresql.org; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Cvu6Q5ZdzknyU4C7YuteP6cq4dpDuKxHmbw7xdmD/xU=; b=JfVGaL7WUQqCwvc3nxiShLd7CMWeCR2kd+X/lVNFpmhPaCLIBgDrW62wMGe3wpCpNi R1irp2bRx4RemIItfhSr8Gs9d8fQEbw1hMnKDiLbTmmGdwg7/8GG2PVd5tTNVqLjY8A9 joIMtokNLa5WMt+kJq/wJjmUhrYff48KlJv6lB+iC1sQcBjx8M5oqNv5gy1Q4xaN/wow fVzUL03HLYiEPRTrY1ECVxAjL1bx5ESOzWqwJMm82C8r9XKn5rMKA/CoJt/Szg00HVyP ZwTtnwnUyzlcuh01mgjYzjTBYO62pjgWZPpEkcTIp63tQ0NblLySwa1U4pkK1vgUa5Ms bX+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775139625; x=1775744425; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Cvu6Q5ZdzknyU4C7YuteP6cq4dpDuKxHmbw7xdmD/xU=; b=qQlLxzleY0+79LSVB+0xyhHzpH/ZfEVWsqG4Q43HOTBAR1N7MEZU1+15jDuQqbSscO RkceRp+1qQCQfnpZOvXYljREON7fZpF+CP831MS5w+cGWbXfiGXZUwGcMdHUZrmdb2f9 ZZcHLTPkFwTDlkBO1+XytS4jtgFnm652VbI17bFPhUyUANBvjHOjTTVCUOvTbMm9S+AH mi5eNEBBHI0BgsC6paxjSpMiZEWJGDESLzWkpG/4NC9g2aRLiC35y3zAMmNphHIT3+TY ugglovZgzZfA3gILKwW9e2zE0Ay31KSnD1Zd/SAQUrZFQLHxq+KBJG+3R62tDO/F3dGj x8Wg== X-Forwarded-Encrypted: i=1; AJvYcCVeA0bUoZ5lNFkvuQkU6KbPwlBbK0DQxHiabD0zT95G2I0XogHAQdaYWYMy68XhxmpkWYQYjdOxE4EEg0L4@lists.postgresql.org X-Gm-Message-State: AOJu0YyvR2T9WeKNpnEDyNu041TVRt8e/hC8NGBVPeWJBZmsPD+9hLLp xfRmLDdKAeJo60BIRv29vAOteLjtbz6lpkFHpvdYVtDlW1bT5vGQuZlCRI6Fh8npIVg= X-Gm-Gg: ATEYQzzI1SMnoLep3Dwwe8PWkMBIjDYDdq0yl6zMTjACufyJ85H3bDn/Mn561oxlgfs yISrxbXhlXwpzKs6N4GBzLHzvUfbos//R/gdir2shOvGHU3xsv85Bt9sX7SOCoGJWCy75OLsBEH DVkMkp4vObXB/m4MgCdKMtK4WSPHGgWInfzdc0TKKKrrWBTlzUImFn5zH9RBVWsWqKSGJEfi/61 Uj6M361rcFWn7UJp44DBICEFy/7EPnxe3Fjq/xtIWKw5GvwqmZP/GadkkDY+Cek66n4MekV47Kd pFJtXoTkj/jnKvwaHZ3OZmbqw/jMUomdWACnBK+gEyZCxfkdeRUKCyRXjfBwN1aSCAqe+qI9NHs dvu30MlM8NHM7kgTdIb5Q931JoZg2ss4MiyK7ib7yqopYiWa19t4q6eLICAVGQYDPjuOy5xrOMS IQ9To8b7TqxQebzqoSlCrQ9jQz4LXMSTU0lIKPYj8XLZO1A78MV12zf2dx1dISmw== X-Received: by 2002:a05:6402:350f:b0:66b:a9bf:2f with SMTP id 4fb4d7f45d1cf-66dafeb831fmr4753340a12.2.1775139624169; Thu, 02 Apr 2026 07:20:24 -0700 (PDT) Received: from localhost (037153217001.static.ipv4.heldenvannu.net. [37.153.217.1]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-66e02d370dbsm778106a12.5.2026.04.02.07.20.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Apr 2026 07:20:22 -0700 (PDT) Content-Type: multipart/mixed; boundary=a91699ffa7e6cc4e3f5c5318326cd9392f0e1373c1b243d4367b86ee0bd6 Mime-Version: 1.0 Date: Thu, 02 Apr 2026 16:20:22 +0200 Message-Id: To: "Chao Li" From: "Jelte Fennema-Nio" Cc: "Bertrand Drouvot" , "Thomas Munro" , Subject: Re: Safer hash table initialization macro 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 --a91699ffa7e6cc4e3f5c5318326cd9392f0e1373c1b243d4367b86ee0bd6 Content-Type: multipart/alternative; boundary=7f39914b4ebd490dc70fccbeafd0b6bd33329ee948d5d5ab0a394201942f --7f39914b4ebd490dc70fccbeafd0b6bd33329ee948d5d5ab0a394201942f Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Wed Mar 18, 2026 at 11:52 AM CET, Jelte Fennema-Nio wrote: > On Sat, 14 Mar 2026 at 14:48, Jelte Fennema-Nio wrot= e: >> Newly attached version that fixes a rebase conclict. > > v12 attached builds on top of the patch I suggested in[1] (that patch is > icluded here as 0000). Also I added some tests for the new macros to the > test_cplusplusext test module. Rebased on top of the latest master. Sadly the new hash_make macros are failing to compile on C++ on MSVC 2019. = I'll investigate later what we can do about that. --7f39914b4ebd490dc70fccbeafd0b6bd33329ee948d5d5ab0a394201942f-- --a91699ffa7e6cc4e3f5c5318326cd9392f0e1373c1b243d4367b86ee0bd6 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0000-Replace-__builtin_types_compatible_p-with-_Gener.patch Content-Type: text/x-patch; charset=utf-8; name=v13-0000-Replace-__builtin_types_compatible_p-with-_Gener.patch RnJvbSAxNmMwYmY1MDQ1OTg0ZTM1OGRmODg2NDA5NDBkYjYwM2MwNThkZDFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDE4IE1hciAyMDI2IDA5OjM3OjMyICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MTMgMC81XSBSZXBsYWNlIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3Agd2l0aCBfR2VuZXJp YwoKUmVtb3ZlIGFsbCBvdXIgdXNlIG9mIEdDQyBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9w IGJ1aWx0aW4gd2l0aCBhCm5ldyBwZ19leHByX2hhc190eXBlX3AgbWFjcm8gdGhhdCByZWxpZXMg b24gc3RhbmRhcmQgQzExL0MrKzExIGZlYXR1cmVzLgpUaGlzIGFsbG93cyBvdXIgZXhpc3Rpbmcg dHlwZSBjaGVjayBtYWNyb3MgdG8gd29yayBvbiBWaXN1YWwgU3R1ZGlvIHRvby4KClNvbWUgZXhw bGljaXQgdGVzdHMgZm9yIHRoZSBuZXcgbWFjcm8gYXJlIGFkZGVkLCBib3RoIGZvciBDIGFuZCBD KysgdG8KZW5zdXJlIHRoZXkgYmVoYXZlIHRoZSBzYW1lLgotLS0KIGNvbmZpZy9jLWNvbXBpbGVy Lm00ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE5IC0tLS0tLS0tLS0KIGNvbmZpZ3VyZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMxICstLS0tLS0tLS0tLS0tLS0K IGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxIC0KIG1l c29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE1IC0tLS0tLS0t CiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNyArKysr KysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiAgICAgICAgICAgICAg ICAgICAgfCAgMyAtLQogLi4uL3Rlc3RfY3BsdXNwbHVzZXh0L3Rlc3RfY3BsdXNwbHVzZXh0LmNw cCAgIHwgMTcgKysrKysrKysrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0 X2V4dC5jICAgfCAxNiArKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCsp LCA3NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWcvYy1jb21waWxlci5tNCBiL2Nv bmZpZy9jLWNvbXBpbGVyLm00CmluZGV4IDYyOTU3MmVlMzUwLi5kMmQ5MzAwMjk4NSAxMDA2NDQK LS0tIGEvY29uZmlnL2MtY29tcGlsZXIubTQKKysrIGIvY29uZmlnL2MtY29tcGlsZXIubTQKQEAg LTI2NywyNSArMjY3LDYgQEAgZmldKSMgUEdBQ19DWFhfVFlQRU9GX1VOUVVBTAogCiAKIAotIyBQ R0FDX0NfVFlQRVNfQ09NUEFUSUJMRQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVj ayBpZiB0aGUgQyBjb21waWxlciB1bmRlcnN0YW5kcyBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJs ZV9wLAotIyBhbmQgZGVmaW5lIEhBVkVfX0JVSUxUSU5fVFlQRVNfQ09NUEFUSUJMRV9QIGlmIHNv LgotIwotIyBXZSBjaGVjayB1c2FnZSB3aXRoIF9fdHlwZW9mX18sIHRob3VnaCBpdCdzIHVubGlr ZWx5IGFueSBjb21waWxlciB3b3VsZAotIyBoYXZlIHRoZSBmb3JtZXIgYW5kIG5vdCB0aGUgbGF0 dGVyLgotQUNfREVGVU4oW1BHQUNfQ19UWVBFU19DT01QQVRJQkxFXSwKLVtBQ19DQUNIRV9DSEVD Syhmb3IgX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCwgcGdhY19jdl9fdHlwZXNfY29tcGF0 aWJsZSwKLVtBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLAotW1sgaW50IHg7 IHN0YXRpYyBpbnQgeVtfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKF9fdHlwZW9mX18oeCks IGludCldOyBdXSldLAotW3BnYWNfY3ZfX3R5cGVzX2NvbXBhdGlibGU9eWVzXSwKLVtwZ2FjX2N2 X190eXBlc19jb21wYXRpYmxlPW5vXSldKQotaWYgdGVzdCB4IiRwZ2FjX2N2X190eXBlc19jb21w YXRpYmxlIiA9IHh5ZXMgOyB0aGVuCi1BQ19ERUZJTkUoSEFWRV9fQlVJTFRJTl9UWVBFU19DT01Q QVRJQkxFX1AsIDEsCi0gICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdXIgY29tcGlsZXIgdW5k ZXJzdGFuZHMgX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcC5dKQotZmldKSMgUEdBQ19DX1RZ UEVTX0NPTVBBVElCTEUKLQotCiAjIFBHQUNfQ19CVUlMVElOX0NPTlNUQU5UX1AKICMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogIyBDaGVjayBpZiB0aGUgQyBjb21waWxlciB1bmRlcnN0YW5k cyBfX2J1aWx0aW5fY29uc3RhbnRfcCgpLApkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmln dXJlCmluZGV4IGZlMjJiYzcxZDBjLi5jZmY5YTZiYjRmMCAxMDA3NTUKLS0tIGEvY29uZmlndXJl CisrKyBiL2NvbmZpZ3VyZQpAQCAtMTUxODIsMzYgKzE1MTgyLDcgQEAgX0FDRU9GCiAKICAgZmkK IGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5n IGZvciBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wLi4uICIgPiY2OyB9Ci1pZiAke3BnYWNf Y3ZfX3R5cGVzX2NvbXBhdGlibGUrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNgotZWxzZQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotIGludCB4 OyBzdGF0aWMgaW50IHlbX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKHgp LCBpbnQpXTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29t cGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBwZ2FjX2N2X190eXBlc19jb21wYXRpYmxlPXllcwot ZWxzZQotICBwZ2FjX2N2X190eXBlc19jb21wYXRpYmxlPW5vCi1maQotcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQoteyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X190eXBl c19jb21wYXRpYmxlIiA+JjUKLSRhc19lY2hvICIkcGdhY19jdl9fdHlwZXNfY29tcGF0aWJsZSIg PiY2OyB9Ci1pZiB0ZXN0IHgiJHBnYWNfY3ZfX3R5cGVzX2NvbXBhdGlibGUiID0geHllcyA7IHRo ZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9fQlVJTFRJTl9UWVBFU19DT01QQVRJQkxFX1Ag MSIgPj5jb25mZGVmcy5oCi0KLWZpCitQR0FDX0NfVFlQRVNfQ09NUEFUSUJMRQogeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19idWlsdGluX2Nv bnN0YW50X3AiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9fYnVpbHRpbl9jb25zdGFu dF9wLi4uICIgPiY2OyB9CiBpZiAke3BnYWNfY3ZfX2J1aWx0aW5fY29uc3RhbnRfcCs6fSBmYWxz ZTsgdGhlbiA6CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXgg Njg3M2I3NTQ2ZGQuLjY2N2M1NjY1MjJhIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIv Y29uZmlndXJlLmFjCkBAIC0xNzI3LDcgKzE3MjcsNiBAQCBQR0FDX0NfVFlQRU9GCiBQR0FDX0NY WF9UWVBFT0YKIFBHQUNfQ19UWVBFT0ZfVU5RVUFMCiBQR0FDX0NYWF9UWVBFT0ZfVU5RVUFMCi1Q R0FDX0NfVFlQRVNfQ09NUEFUSUJMRQogUEdBQ19DX0JVSUxUSU5fQ09OU1RBTlRfUAogUEdBQ19D X0JVSUxUSU5fT1BfT1ZFUkZMT1cKIFBHQUNfQ19CVUlMVElOX1VOUkVBQ0hBQkxFCmRpZmYgLS1n aXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IDZiYzc0YzJiYTc5Li44MjJlZmNl OWJhMiAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTIwNzAs MjEgKzIwNzAsNiBAQCBmb3JlYWNoIGJ1aWx0aW4gOiBidWlsdGlucwogZW5kZm9yZWFjaAogCiAK LSMgQ2hlY2sgaWYgdGhlIEMgY29tcGlsZXIgdW5kZXJzdGFuZHMgX19idWlsdGluX3R5cGVzX2Nv bXBhdGlibGVfcCwKLSMgYW5kIGRlZmluZSBIQVZFX19CVUlMVElOX1RZUEVTX0NPTVBBVElCTEVf UCBpZiBzby4KLSMKLSMgV2UgY2hlY2sgdXNhZ2Ugd2l0aCBfX3R5cGVvZl9fLCB0aG91Z2ggaXQn cyB1bmxpa2VseSBhbnkgY29tcGlsZXIgd291bGQKLSMgaGF2ZSB0aGUgZm9ybWVyIGFuZCBub3Qg dGhlIGxhdHRlci4KLWlmIGNjLmNvbXBpbGVzKCcnJwotICAgIHN0YXRpYyBpbnQgeDsKLSAgICBz dGF0aWMgaW50IHlbX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKHgpLCBp bnQpXTsKLSAgICAnJycsCi0gICAgbmFtZTogJ19fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3An LAotICAgIGFyZ3M6IHRlc3RfY19hcmdzKQotICBjZGF0YS5zZXQoJ0hBVkVfX0JVSUxUSU5fVFlQ RVNfQ09NUEFUSUJMRV9QJywgMSkKLWVuZGlmCi0KLQogIyBDaGVjayBpZiB0aGUgQyBjb21waWxl ciB1bmRlcnN0YW5kcyBfX2J1aWx0aW5fJG9wX292ZXJmbG93KCksCiAjIGFuZCBkZWZpbmUgSEFW RV9fQlVJTFRJTl9PUF9PVkVSRkxPVyBpZiBzby4KICMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2MuaCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCA4OGQxM2VjOTk5My4uNmRiODg2NDQ0OTEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTM5Myw2 ICszOTMsMjMgQEAgZXh0ZXJuICJDKysiCiAjZGVmaW5lIEhBVkVfUEdfSU5URUdFUl9DT05TVEFO VF9QCiAjZW5kaWYKIAorLyoKKyAqIHBnX2V4cHJfaGFzX3R5cGVfcChleHByLCB0eXBlKSAtIENo ZWNrIGlmIGFuIGV4cHJlc3Npb24gaGFzIGEgc3BlY2lmaWMgdHlwZS4KKyAqCisgKiBUaGUgQyBp bXBsZW1lbnRhdGlvbiB1c2VzIF9HZW5lcmljLCB3aGljaCBhcHBsaWVzIGx2YWx1ZSBjb252ZXJz aW9uIHRvIHRoZQorICogY29udHJvbGxpbmcgZXhwcmVzc2lvbjogYXJyYXlzIGRlY2F5IHRvIHBv aW50ZXJzLCBmdW5jdGlvbnMgZGVjYXkgdG8gZnVuY3Rpb24KKyAqIHBvaW50ZXJzLCBhbmQgdG9w LWxldmVsIGN2LXF1YWxpZmllcnMgYXJlIHN0cmlwcGVkLiBUaGUgQysrIGltcGxlbWVudGF0aW9u CisgKiB1c2VzIHN0ZDo6ZGVjYXkgdG8gbWF0Y2ggdGhpcyBiZWhhdmlvci4gTm90ZSB0aGF0IG9u bHkgdG9wLWxldmVsIHF1YWxpZmllcnMKKyAqIGFyZSBzdHJpcHBlZCDigJQgcG9pbnRlZSBxdWFs aWZpZXJzIGFyZSBwcmVzZXJ2ZWQgKGUuZy4gY29uc3QgaW50ICogc3RheXMKKyAqIGNvbnN0IGlu dCAqLCBidXQgaW50ICpjb25zdCBiZWNvbWVzIGludCAqKS4KKyAqLworI2lmIGRlZmluZWQoX19j cGx1c3BsdXMpCisjZGVmaW5lIHBnX2V4cHJfaGFzX3R5cGVfcChleHByLCBfdHlwZSkgXAorCXN0 ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PGRlY2x0eXBlKGV4cHIpPjo6dHlwZSwgX3R5 cGU+Ojp2YWx1ZQorI2Vsc2UKKyNkZWZpbmUgcGdfZXhwcl9oYXNfdHlwZV9wKGV4cHIsIHR5cGUp IF9HZW5lcmljKChleHByKSwgdHlwZTogMSwgZGVmYXVsdDogMCkKKyNlbmRpZgorCiAvKgogICog cGdfYXNzdW1lKGV4cHIpIHN0YXRlcyB0aGF0IHdlIGFzc3VtZSBgZXhwcmAgdG8gZXZhbHVhdGUg dG8gdHJ1ZS4gSW4gYXNzZXJ0CiAgKiBlbmFibGVkIGJ1aWxkcyBwZ19hc3N1bWUoKSBpcyB0dXJu ZWQgaW50byBhbiBhc3NlcnRpb24sIGluIG9wdGltaXplZCBidWlsZHMKQEAgLTEwNTIsMjYgKzEw NjksMjggQEAgcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQgRXhjZXB0aW9uYWxDb25kaXRpb24oY29u c3QgY2hhciAqY29uZGl0aW9uTmFtZSwKICAqIFN0YXRpY0Fzc2VydFZhcmlhYmxlSXNPZlR5cGUo KSBjYW4gYmUgdXNlZCBhcyBhIGRlY2xhcmF0aW9uLgogICogU3RhdGljQXNzZXJ0VmFyaWFibGVJ c09mVHlwZU1hY3JvKCkgaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBtYWNyb3MsIGVnCiAgKgkJI2Rl ZmluZSBmb28oeCkgKFN0YXRpY0Fzc2VydFZhcmlhYmxlSXNPZlR5cGVNYWNybyh4LCBpbnQpLCBi YXIoeCkpCi0gKgotICogSWYgd2UgZG9uJ3QgaGF2ZSBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJs ZV9wLCB3ZSBjYW4gc3RpbGwgYXNzZXJ0IHRoYXQKLSAqIHRoZSB0eXBlcyBoYXZlIHRoZSBzYW1l IHNpemUuICBUaGlzIGlzIGZhciBmcm9tIGlkZWFsIChlc3BlY2lhbGx5IG9uIDMyLWJpdAotICog cGxhdGZvcm1zKSBidXQgaXQgcHJvdmlkZXMgYXQgbGVhc3Qgc29tZSBjb3ZlcmFnZS4KICAqLwot I2lmZGVmIEhBVkVfX0JVSUxUSU5fVFlQRVNfQ09NUEFUSUJMRV9QCisjaWYgIWRlZmluZWQoX01T Q19WRVIpIHx8IF9NU0NfVkVSID49IDE5MzMKICNkZWZpbmUgU3RhdGljQXNzZXJ0VmFyaWFibGVJ c09mVHlwZSh2YXJuYW1lLCB0eXBlbmFtZSkgXAotCVN0YXRpY0Fzc2VydERlY2woX19idWlsdGlu X3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YodmFybmFtZSksIHR5cGVuYW1lKSwgXAorCVN0YXRp Y0Fzc2VydERlY2wocGdfZXhwcl9oYXNfdHlwZV9wKHZhcm5hbWUsIHR5cGVuYW1lKSwgXAogCUNw cEFzU3RyaW5nKHZhcm5hbWUpICIgZG9lcyBub3QgaGF2ZSB0eXBlICIgQ3BwQXNTdHJpbmcodHlw ZW5hbWUpKQogI2RlZmluZSBTdGF0aWNBc3NlcnRWYXJpYWJsZUlzT2ZUeXBlTWFjcm8odmFybmFt ZSwgdHlwZW5hbWUpIFwKLQkoU3RhdGljQXNzZXJ0RXhwcihfX2J1aWx0aW5fdHlwZXNfY29tcGF0 aWJsZV9wKHR5cGVvZih2YXJuYW1lKSwgdHlwZW5hbWUpLCBcCisJKFN0YXRpY0Fzc2VydEV4cHIo cGdfZXhwcl9oYXNfdHlwZV9wKHZhcm5hbWUsIHR5cGVuYW1lKSwgXAogCSBDcHBBc1N0cmluZyh2 YXJuYW1lKSAiIGRvZXMgbm90IGhhdmUgdHlwZSAiIENwcEFzU3RyaW5nKHR5cGVuYW1lKSkpCi0j ZWxzZQkJCQkJCQkvKiAhSEFWRV9fQlVJTFRJTl9UWVBFU19DT01QQVRJQkxFX1AgKi8KKyNlbHNl CQkJCQkJCS8qIF9NU0NfVkVSIDwgMTkzMyAqLworLyoKKyAqIFRoaXMgY29tcGlsZXIgaXMgYnVn Z3kgYW5kIGZhaWxzIHRvIGNvbXBpbGUgdGhlIHByZXZpb3VzIHZhcmlhbnQ7IHVzZSBhCisgKiBm YWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0aGF0IGFzc2VydHMgdGhhdCB0aGUgdHlwZXMgaGF2ZSB0 aGUgc2FtZSBzaXplLgorICogVGhpcyBpcyBmYXIgZnJvbSBpZGVhbCAoZXNwZWNpYWxseSBvbiAz Mi1iaXQgcGxhdGZvcm1zKSBidXQgaXQgcHJvdmlkZXMgYXQKKyAqIGxlYXN0IHNvbWUgY292ZXJh Z2UuCisgKi8KICNkZWZpbmUgU3RhdGljQXNzZXJ0VmFyaWFibGVJc09mVHlwZSh2YXJuYW1lLCB0 eXBlbmFtZSkgXAogCVN0YXRpY0Fzc2VydERlY2woc2l6ZW9mKHZhcm5hbWUpID09IHNpemVvZih0 eXBlbmFtZSksIFwKIAlDcHBBc1N0cmluZyh2YXJuYW1lKSAiIGRvZXMgbm90IGhhdmUgdHlwZSAi IENwcEFzU3RyaW5nKHR5cGVuYW1lKSkKICNkZWZpbmUgU3RhdGljQXNzZXJ0VmFyaWFibGVJc09m VHlwZU1hY3JvKHZhcm5hbWUsIHR5cGVuYW1lKSBcCiAJKFN0YXRpY0Fzc2VydEV4cHIoc2l6ZW9m KHZhcm5hbWUpID09IHNpemVvZih0eXBlbmFtZSksIFwKIAkgQ3BwQXNTdHJpbmcodmFybmFtZSkg IiBkb2VzIG5vdCBoYXZlIHR5cGUgIiBDcHBBc1N0cmluZyh0eXBlbmFtZSkpKQotI2VuZGlmCQkJ CQkJCS8qIEhBVkVfX0JVSUxUSU5fVFlQRVNfQ09NUEFUSUJMRV9QICovCisjZW5kaWYJCQkJCQkJ LyogX01TQ19WRVIgPCAxOTMzICovCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGdfY29uZmlnLmguaW4gYi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgppbmRleCBk OGQ2MTkxOGFmZi4uY2Y3YWJjNTZjMWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZp Zy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCkBAIC01NDEsOSArNTQxLDYg QEAKIC8qIERlZmluZSB0byAxIGlmIHlvdXIgY29tcGlsZXIgdW5kZXJzdGFuZHMgX19idWlsdGlu XyRvcF9vdmVyZmxvdy4gKi8KICN1bmRlZiBIQVZFX19CVUlMVElOX09QX09WRVJGTE9XCiAKLS8q IERlZmluZSB0byAxIGlmIHlvdXIgY29tcGlsZXIgdW5kZXJzdGFuZHMgX19idWlsdGluX3R5cGVz X2NvbXBhdGlibGVfcC4gKi8KLSN1bmRlZiBIQVZFX19CVUlMVElOX1RZUEVTX0NPTVBBVElCTEVf UAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3VyIGNvbXBpbGVyIHVuZGVyc3RhbmRzIF9fYnVpbHRp bl91bnJlYWNoYWJsZS4gKi8KICN1bmRlZiBIQVZFX19CVUlMVElOX1VOUkVBQ0hBQkxFCiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jcGx1c3BsdXNleHQvdGVzdF9jcGx1c3Bs dXNleHQuY3BwIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NwbHVzcGx1c2V4dC90ZXN0X2NwbHVz cGx1c2V4dC5jcHAKaW5kZXggOTNjZDdkZDA3ZjcuLmRmN2E1OTJjYjcwIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfY3BsdXNwbHVzZXh0L3Rlc3RfY3BsdXNwbHVzZXh0LmNwcAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY3BsdXNwbHVzZXh0L3Rlc3RfY3BsdXNwbHVzZXh0 LmNwcApAQCAtMjcsNiArMjcsMjMgQEAgUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2NwbHVzcGx1 c19hZGQpOwogCiBTdGF0aWNBc3NlcnREZWNsKHNpemVvZihpbnQzMikgPT0gNCwgImludDMyIHNo b3VsZCBiZSA0IGJ5dGVzIik7CiAKKy8qIFNhbWUgdGVzdHMgYXMgaW4gdGVzdF9leHQuYywgYnV0 IGNvbXBpbGVkIHdpdGggYSBDKysgY29tcGlsZXIgdG8gdmVyaWZ5IHRoYXQKKyAqIHRoZSBwZ19l eHByX2hhc190eXBlX3AgbWFjcm8gd29ya3MgY29ycmVjdGx5IGluIEMrKy4gKi8KK1N0YXRpY0Fz c2VydERlY2wocGdfZXhwcl9oYXNfdHlwZV9wKChpbnQzMikgMTIzLCBpbnQzMiksICJpbnQzMiBl eHByZXNzaW9uIHNob3VsZCBiZSBpbnQzMiIpOworU3RhdGljQXNzZXJ0RGVjbCghcGdfZXhwcl9o YXNfdHlwZV9wKChpbnQzMikgMTIzLCBpbnQ2NCksICJpbnQzMiBleHByZXNzaW9uIHNob3VsZCBu b3QgYmUgaW50NjQiKTsKK1N0YXRpY0Fzc2VydERlY2wocGdfZXhwcl9oYXNfdHlwZV9wKCgoY2hh ciAoKilbMTBdKSBudWxscHRyKVswXSwgY2hhciAqKSwKKwkJCQkgImFycmF5IHNob3VsZCBkZWNh eSBpbnRvIHBvaW50ZXIiKTsKK1N0YXRpY0Fzc2VydERlY2wocGdfZXhwcl9oYXNfdHlwZV9wKChj aGFyICgqKVsxMF0pIG51bGxwdHIsIGNoYXIgKCopWzEwXSksCisJCQkJICJwb2ludGVyIHRvIGFu IGFyYXkgc2hvdWxkIHdvcmsgaWYgaXQgaGFzIHRoZSBzYW1lIHNpemUiKTsKK1N0YXRpY0Fzc2Vy dERlY2woIXBnX2V4cHJfaGFzX3R5cGVfcCgoY2hhciAoKilbNV0pIG51bGxwdHIsIGNoYXIgKCop WzEwXSksCisJCQkJICJwb2ludGVyIHRvIGFuIGFyYXkgc2hvdWxkIG5vdCBtYXRjaCBpZiBpdCBk b2VzIG5vdCBoYXZlIHRoZSBzYW1lIHNpemUiKTsKK1N0YXRpY0Fzc2VydERlY2wocGdfZXhwcl9o YXNfdHlwZV9wKChjb25zdCBpbnQgKikgbnVsbHB0ciwgY29uc3QgaW50ICopLAorCQkJCSAiY29u c3QgcG9pbnRlcnMgb2Ygc2FtZSB0eXBlIHNob3VsZCBtYXRjaCIpOworU3RhdGljQXNzZXJ0RGVj bCghcGdfZXhwcl9oYXNfdHlwZV9wKChjb25zdCBpbnQgKikgbnVsbHB0ciwgaW50ICopLAorCQkJ CSAiY29uc3QgcG9pbnRlciBzaG91bGQgbm90IG1hdGNoIG5vbi1jb25zdCBwb2ludGVyIik7CitT dGF0aWNBc3NlcnREZWNsKHBnX2V4cHJfaGFzX3R5cGVfcCgoY29uc3QgaW50KSAwLCBpbnQpLAor CQkJCSAidG9wLWxldmVsIGNvbnN0IHNob3VsZCBiZSBzdHJpcHBlZCIpOworCiAvKgogICogU2lt cGxlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgc3VtIG9mIHR3byBpbnRlZ2Vycy4gIFRoaXMg dmVyaWZpZXMgdGhhdAogICogQysrIGV4dGVuc2lvbiBtb2R1bGVzIGNhbiBiZSBsb2FkZWQgYW5k IGNhbGxlZCBjb3JyZWN0bHkgYXQgcnVudGltZS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dC5jCmluZGV4IGEyMzE2NWJhNjdhLi5kNTI4YTc3MGRlZSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHQuYworKysgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dC5jCkBAIC0xMyw2ICsxMywy MiBAQCBQR19NT0RVTEVfTUFHSUM7CiAKIFBHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9leHQpOwog CisvKiBDb25maXJtIHRoYXQgQyBpbXBsZW1lbnRhdGlvbiBvZiBwZ19leHByX2hhc190eXBlX3Ag d29ya3MgYXMgZXhwZWN0ZWQgb24gYWxsIGNvbXBpbGVycy4gKi8KK1N0YXRpY0Fzc2VydERlY2wo cGdfZXhwcl9oYXNfdHlwZV9wKChpbnQzMikgMTIzLCBpbnQzMiksICJpbnQzMiBleHByZXNzaW9u IHNob3VsZCBiZSBpbnQzMiIpOworU3RhdGljQXNzZXJ0RGVjbCghcGdfZXhwcl9oYXNfdHlwZV9w KChpbnQzMikgMTIzLCBpbnQ2NCksICJpbnQzMiBleHByZXNzaW9uIHNob3VsZCBub3QgYmUgaW50 NjQiKTsKK1N0YXRpY0Fzc2VydERlY2wocGdfZXhwcl9oYXNfdHlwZV9wKCgoY2hhciAoKilbMTBd KSBOVUxMKVswXSwgY2hhciAqKSwKKwkJCQkgImFycmF5IHNob3VsZCBkZWNheSBpbnRvIHBvaW50 ZXIiKTsKK1N0YXRpY0Fzc2VydERlY2wocGdfZXhwcl9oYXNfdHlwZV9wKChjaGFyICgqKVsxMF0p IE5VTEwsIGNoYXIgKCopWzEwXSksCisJCQkJICJwb2ludGVyIHRvIGFuIGFyYXkgc2hvdWxkIHdv cmsgaWYgaXQgaGFzIHRoZSBzYW1lIHNpemUiKTsKK1N0YXRpY0Fzc2VydERlY2woIXBnX2V4cHJf aGFzX3R5cGVfcCgoY2hhciAoKilbNV0pIE5VTEwsIGNoYXIgKCopWzEwXSksCisJCQkJICJwb2lu dGVyIHRvIGFuIGFyYXkgc2hvdWxkIG5vdCBtYXRjaCBpZiBpdCBkb2VzIG5vdCBoYXZlIHRoZSBz YW1lIHNpemUiKTsKK1N0YXRpY0Fzc2VydERlY2wocGdfZXhwcl9oYXNfdHlwZV9wKChjb25zdCBp bnQgKikgTlVMTCwgY29uc3QgaW50ICopLAorCQkJCSAiY29uc3QgcG9pbnRlcnMgb2Ygc2FtZSB0 eXBlIHNob3VsZCBtYXRjaCIpOworU3RhdGljQXNzZXJ0RGVjbCghcGdfZXhwcl9oYXNfdHlwZV9w KChjb25zdCBpbnQgKikgTlVMTCwgaW50ICopLAorCQkJCSAiY29uc3QgcG9pbnRlciBzaG91bGQg bm90IG1hdGNoIG5vbi1jb25zdCBwb2ludGVyIik7CitTdGF0aWNBc3NlcnREZWNsKHBnX2V4cHJf aGFzX3R5cGVfcCgoY29uc3QgaW50KSAwLCBpbnQpLAorCQkJCSAidG9wLWxldmVsIGNvbnN0IHNo b3VsZCBiZSBzdHJpcHBlZCIpOworCiBEYXR1bQogdGVzdF9leHQoUEdfRlVOQ1RJT05fQVJHUykK IHsKCmJhc2UtY29tbWl0OiBlZmZhYTQ2NGFmZDM1NWU4OTI3YmY0MzBjZmU2YTBkZGQyZWU1Njk1 Ci0tIAoyLjUzLjAKCg== --a91699ffa7e6cc4e3f5c5318326cd9392f0e1373c1b243d4367b86ee0bd6 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0001-Add-hash_make-macros.patch Content-Type: text/x-patch; charset=utf-8; name=v13-0001-Add-hash_make-macros.patch RnJvbSBhYzA4NTkyMzhkYmI4NWVkODMwZjc3Njk1ZDRmYzBiYjlmZmM3YzI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzU6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MyAxLzVdIEFkZCBoYXNoX21ha2UgbWFjcm9zCgpUaGlzIGFkZHMgYSBidW5jaCBvZiBoYXNoX21h a2UqIGFuZCBzaG1lbV9oYXNoX21ha2UqIG1hY3JvcyB0byBtYWtlIGl0CmVhc2llciBhbmQgbGVz cyBlcnJvciBwcm9uZSB0byBjcmVhdGUgSFRBQnMuIFRoZXNlIG1hY3JvcyBhcmUKaW1wbGVtZW50 ZWQgYXMgd3JhcHBlcnMgYXJvdW5kIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGhhc2hfY3JlYXRlCmZ1 bmN0aW9uLiBVc2luZyB0aGUgbmV3IG1hY3JvcyBpcyBwcmVmZXJyZWQsIGR1ZSB0byB0aGUgYWRk aXRpb25hbApjb21waWxlIHRpbWUgY2hlY2tzIHRoYXQgdGhleSBicmluZy4KCkNvLUF1dGhvcmVk LUJ5OiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2b3QucGdAZ21haWwuY29tPgotLS0K IGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAgICAgICB8ICAgNSArLQog c3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jICAgICAgICAgICAgIHwgMTE1ICsrKysr KysrKysrKwogc3JjL2luY2x1ZGUvYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDE4ICsrCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgICAgICAgICAgICAgfCAg MzIgKysrKwogc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oICAgICAgICAgICAgICAgICAgIHwg MTY2ICsrKysrKysrKysrKysrKysrLQogLi4uL3Rlc3RfY3BsdXNwbHVzZXh0L3Rlc3RfY3BsdXNw bHVzZXh0LmNwcCAgIHwgIDQ2ICsrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCAgICAgICAgICAgICAgfCAgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCAzNzcgaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdz LnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggOWVlMWEyYmZjNmEu LmM3YzA1OTU2ODIwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC00MjU0LDcgKzQyNTQsMTAg QEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMg cHB4CiAgIDxwYXJhPgogICAgQW5vbnltb3VzIGFsbG9jYXRpb25zIGFyZSBhbGxvY2F0aW9ucyB0 aGF0IGhhdmUgYmVlbiBtYWRlCiAgICB3aXRoIDxsaXRlcmFsPlNobWVtQWxsb2MoKTwvbGl0ZXJh bD4gZGlyZWN0bHksIHJhdGhlciB0aGFuIHZpYQotICAgPGxpdGVyYWw+U2htZW1Jbml0U3RydWN0 KCk8L2xpdGVyYWw+IG9yCisgICA8bGl0ZXJhbD5TaG1lbUluaXRTdHJ1Y3QoKTwvbGl0ZXJhbD4s CisgICA8bGl0ZXJhbD5zaG1lbV9oYXNoX21ha2UoKTwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5z aG1lbV9oYXNoX21ha2VfZXh0KCk8L2xpdGVyYWw+LAorICAgb3IKICAgIDxsaXRlcmFsPlNobWVt SW5pdEhhc2goKTwvbGl0ZXJhbD4uCiAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFz aC5jCmluZGV4IGY4MzE3YWRkNjhmLi40MDcxYmZlNDA0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvaGFzaC9keW5haGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHlu YWhhc2guYwpAQCAtNjIxLDYgKzYyMSwxMjEgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFi bmFtZSwgaW50NjQgbmVsZW0sIGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKIAlyZXR1 cm4gaGFzaHA7CiB9CiAKKy8qCisgKiBoYXNoX29wdHNfaW5pdCAtLSBpbml0aWFsaXplIEhBU0hD VEwgYW5kIGZsYWdzIGZyb20gSEFTSE9QVFMKKyAqCisgKiBUaGlzIHByb2Nlc3NlcyBIQVNIT1BU UyBmaWVsZHMgaW50byBIQVNIQ1RMIGFuZCBmbGFncy4gSXQncyB1c2VkIGJ5IGNvZGUKKyAqIHRo YXQgbmVlZHMgdG8gY2FsbCB0aGUgbG93LWxldmVsIGhhc2hfY3JlYXRlIGZ1bmN0aW9uLgorICov Cit2b2lkCitoYXNoX29wdHNfaW5pdChIQVNIQ1RMICpjdGwsIGludCAqZmxhZ3MsCisJCQkgICBT aXplIGtleXNpemUsIFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19rZXksCisJCQkgICBjb25z dCBIQVNIT1BUUyAqb3B0cykKK3sKKwlNZW1TZXQoY3RsLCAwLCBzaXplb2YoKmN0bCkpOworCWN0 bC0+a2V5c2l6ZSA9IGtleXNpemU7CisJY3RsLT5lbnRyeXNpemUgPSBlbnRyeXNpemU7CisKKwkq ZmxhZ3MgPSBIQVNIX0VMRU07CisKKwlpZiAob3B0cyA9PSBOVUxMKQorCXsKKwkJKmZsYWdzIHw9 IHN0cmluZ19rZXkgPyBIQVNIX1NUUklOR1MgOiBIQVNIX0JMT0JTOworCQlyZXR1cm47CisJfQor CisJaWYgKG9wdHMtPmhhc2ggIT0gTlVMTCkKKwl7CisJCS8qIGZvcmNlX2Jsb2JzIG9ubHkgYWZm ZWN0cyBkZWZhdWx0IGhhc2ggc2VsZWN0aW9uLCBub3QgY3VzdG9tIGhhc2ggKi8KKwkJQXNzZXJ0 KCFvcHRzLT5mb3JjZV9ibG9icyk7CisJCWN0bC0+aGFzaCA9IG9wdHMtPmhhc2g7CisJCSpmbGFn cyB8PSBIQVNIX0ZVTkNUSU9OOworCX0KKwllbHNlIGlmIChvcHRzLT5mb3JjZV9ibG9icykKKwl7 CisJCSpmbGFncyB8PSBIQVNIX0JMT0JTOworCX0KKwllbHNlCisJeworCQkqZmxhZ3MgfD0gc3Ry aW5nX2tleSA/IEhBU0hfU1RSSU5HUyA6IEhBU0hfQkxPQlM7CisJfQorCisJaWYgKG9wdHMtPm1h dGNoICE9IE5VTEwpCisJeworCQljdGwtPm1hdGNoID0gb3B0cy0+bWF0Y2g7CisJCSpmbGFncyB8 PSBIQVNIX0NPTVBBUkU7CisJfQorCisJaWYgKG9wdHMtPmtleWNvcHkgIT0gTlVMTCkKKwl7CisJ CWN0bC0+a2V5Y29weSA9IG9wdHMtPmtleWNvcHk7CisJCSpmbGFncyB8PSBIQVNIX0tFWUNPUFk7 CisJfQorCisJaWYgKG9wdHMtPmFsbG9jICE9IE5VTEwpCisJeworCQljdGwtPmFsbG9jID0gb3B0 cy0+YWxsb2M7CisJCSpmbGFncyB8PSBIQVNIX0FMTE9DOworCX0KKworCWlmIChvcHRzLT5udW1f cGFydGl0aW9ucyA+IDApCisJeworCQljdGwtPm51bV9wYXJ0aXRpb25zID0gb3B0cy0+bnVtX3Bh cnRpdGlvbnM7CisJCSpmbGFncyB8PSBIQVNIX1BBUlRJVElPTjsKKwl9CisKKwlpZiAob3B0cy0+ Zml4ZWRfc2l6ZSkKKwkJKmZsYWdzIHw9IEhBU0hfRklYRURfU0laRTsKK30KKworLyoKKyAqIGhh c2hfbWFrZV9pbXBsIC0tIHNpbXBsaWZpZWQgaGFzaCB0YWJsZSBjcmVhdGlvbgorICoKKyAqIFRo aXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgaGFzaF9tYWtlKCkgYW5k IGhhc2hfbWFrZV9leHQoKQorICogbWFjcm9zLiBJdCBjcmVhdGVzIGEgaGFzaCB0YWJsZSB3aXRo IHNlbnNpYmxlIGRlZmF1bHRzLgorICoKKyAqIElmIHN0cmluZ19rZXkgaXMgdHJ1ZSwgdGhlIGtl eSBpcyB0cmVhdGVkIGFzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZworICogKHVzZXMgSEFTSF9T VFJJTkdTKS4gT3RoZXJ3aXNlLCB0aGUga2V5IGlzIHRyZWF0ZWQgYXMgYSBiaW5hcnkgYmxvYgor ICogKHVzZXMgSEFTSF9CTE9CUykuCisgKgorICogUGFzcyBOVUxMIGZvciBvcHRzIHRvIHVzZSBh bGwgZGVmYXVsdHMuCisgKi8KK0hUQUIgKgoraGFzaF9tYWtlX2ltcGwoY29uc3QgY2hhciAqdGFi bmFtZSwgaW50NjQgbmVsZW0sCisJCQkgICBTaXplIGtleXNpemUsIFNpemUgZW50cnlzaXplLAor CQkJICAgYm9vbCBzdHJpbmdfa2V5LAorCQkJICAgY29uc3QgSEFTSE9QVFMgKm9wdHMsCisJCQkg ICBNZW1vcnlDb250ZXh0IG1jeHQpCit7CisJSEFTSENUTAkJY3RsOworCWludAkJCWZsYWdzOwor CisJaGFzaF9vcHRzX2luaXQoJmN0bCwgJmZsYWdzLCBrZXlzaXplLCBlbnRyeXNpemUsIHN0cmlu Z19rZXksIG9wdHMpOworCisJY3RsLmhjeHQgPSBtY3h0OworCWZsYWdzIHw9IEhBU0hfQ09OVEVY VDsKKworCXJldHVybiBoYXNoX2NyZWF0ZSh0YWJuYW1lLCBuZWxlbSwgJmN0bCwgZmxhZ3MpOwor fQorCisvKgorICogaGFzaF9tYWtlX2ZuX2ltcGwgLS0gY3JlYXRlIGEgaGFzaCB0YWJsZSB3aXRo IGN1c3RvbSBmdW5jdGlvbnMKKyAqLworSFRBQiAqCitoYXNoX21ha2VfZm5faW1wbChjb25zdCBj aGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKKwkJCQkgIFNpemUga2V5c2l6ZSwgU2l6ZSBlbnRy eXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCQkgIEhhc2hWYWx1ZUZ1bmMgaGFzaGZuLCBIYXNo Q29tcGFyZUZ1bmMgbWF0Y2hmbiwKKwkJCQkgIE1lbW9yeUNvbnRleHQgbWN4dCkKK3sKKwlIQVNI T1BUUwlvcHRzID0geworCQkuaGFzaCA9IGhhc2hmbiwKKwkJLm1hdGNoID0gbWF0Y2hmbgorCX07 CisKKwlyZXR1cm4gaGFzaF9tYWtlX2ltcGwodGFibmFtZSwgbmVsZW0sIGtleXNpemUsIGVudHJ5 c2l6ZSwKKwkJCQkJCSAgc3RyaW5nX2tleSwgJm9wdHMsIG1jeHQpOworfQorCiAvKgogICogU2V0 IGRlZmF1bHQgSEFTSEhEUiBwYXJhbWV0ZXJzLgogICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5kZXggNmRiODg2NDQ0OTEuLjE1NDUxOTM4ZTFlIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5oCkBAIC04Myw2 ICs4MywxMiBAQAogI2lmZGVmIEVOQUJMRV9OTFMKICNpbmNsdWRlIDxsaWJpbnRsLmg+CiAjZW5k aWYKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDKysiCit7CisjaW5jbHVkZSA8dHlwZV90 cmFpdHM+Cit9CisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMrKyIKQEAg LTQxMCw2ICs0MTYsMTggQEAgZXh0ZXJuICJDKysiCiAjZGVmaW5lIHBnX2V4cHJfaGFzX3R5cGVf cChleHByLCB0eXBlKSBfR2VuZXJpYygoZXhwciksIHR5cGU6IDEsIGRlZmF1bHQ6IDApCiAjZW5k aWYKIAorLyoKKyAqIHBnX251bGxwdHJfb2YodHlwZSkgLSBDcmVhdGUgYSBudWxsIHBvaW50ZXIg b2YgdGhlIGdpdmVuIHR5cGUuCisgKgorICogSW4gQywgKHR5cGUgKikgTlVMTCB3b3JrcyBmb3Ig YWxsIHR5cGVzLiBJbiBDKyssIHRoaXMgc3ludGF4IGZhaWxzIGZvciB0eXBlcworICogY29udGFp bmluZyBicmFja2V0cyAobGlrZSBjaGFyWzY0XSksIHNvIHdlIHVzZSBzdGQ6OmFkZF9wb2ludGVy X3QgaW5zdGVhZC4KKyAqLworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCisjZGVmaW5lIHBnX251 bGxwdHJfb2YodHlwZSkgKHN0YXRpY19jYXN0PHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlPj4obnVs bHB0cikpCisjZWxzZQorI2RlZmluZSBwZ19udWxscHRyX29mKHR5cGUpICgodHlwZSAqKSBOVUxM KQorI2VuZGlmCisKIC8qCiAgKiBwZ19hc3N1bWUoZXhwcikgc3RhdGVzIHRoYXQgd2UgYXNzdW1l IGBleHByYCB0byBldmFsdWF0ZSB0byB0cnVlLiBJbiBhc3NlcnQKICAqIGVuYWJsZWQgYnVpbGRz IHBnX2Fzc3VtZSgpIGlzIHR1cm5lZCBpbnRvIGFuIGFzc2VydGlvbiwgaW4gb3B0aW1pemVkIGJ1 aWxkcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9zaG1lbS5oCmluZGV4IDJhOWU5YmVjZDI2Li4xNjcyMTg1Y2RlMSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2Uvc2htZW0uaApAQCAtNDAsNiArNDAsMzggQEAgZXh0ZXJuIFNpemUgbXVsX3NpemUoU2l6ZSBz MSwgU2l6ZSBzMik7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBTaXplIHBnX2dldF9zaG1lbV9wYWdl c2l6ZSh2b2lkKTsKIAorLyoKKyAqIFNpbXBsaWZpZWQgc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxl IGNyZWF0aW9uIEFQSQorICoKKyAqIFRoZXNlIG1hY3JvcyBwcm92aWRlIGEgc2ltcGxlciB3YXkg dG8gY3JlYXRlIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZXMgYnk6CisgKiAtIEF1dG9tYXRpY2Fs bHkgZGV0ZXJtaW5pbmcga2V5c2l6ZSBhbmQgZW50cnlzaXplIGZyb20gdHlwZSBpbmZvcm1hdGlv bgorICogLSBBdXRvbWF0aWNhbGx5IGNob29zaW5nIEhBU0hfU1RSSU5HUyB2cyBIQVNIX0JMT0JT IGJhc2VkIG9uIGtleSB0eXBlCisgKiAtIEVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBleHBsaWNp dCBIQVNIQ1RMIGFuZCBmbGFncyBpbiBjb21tb24gY2FzZXMKKyAqCisgKiBVc2FnZToKKyAqICAg SFRBQiAqaGFzaCA9IHNobWVtX2hhc2hfbWFrZShNeUVudHJ5LCBrZXlmaWVsZCwgIk15IGhhc2gi LCA2NCwgMTI4KTsKKyAqCisgKiBGb3IgbW9yZSBvcHRpb25zIChwYXJ0aXRpb25pbmcsIGZpeGVk IHNpemUsIGN1c3RvbSBoYXNoKToKKyAqICAgSEFTSE9QVFMgb3B0cyA9IHsubnVtX3BhcnRpdGlv bnMgPSAxNiwgLmZpeGVkX3NpemUgPSB0cnVlfTsKKyAqICAgSFRBQiAqaGFzaCA9IHNobWVtX2hh c2hfbWFrZV9leHQoTXlFbnRyeSwga2V5ZmllbGQsICJNeSBoYXNoIiwgNjQsIDEyOCwgJm9wdHMp OworICovCisjZGVmaW5lIHNobWVtX2hhc2hfbWFrZShlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFi bmFtZSwgaW5pdF9zaXplLCBtYXhfc2l6ZSkgXAorCXNobWVtX2hhc2hfbWFrZV9leHQoZW50cnl0 eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUsIE5VTEwpCisKKyNk ZWZpbmUgc2htZW1faGFzaF9tYWtlX2V4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwg aW5pdF9zaXplLCBtYXhfc2l6ZSwgb3B0cykgXAorCShTdGF0aWNBc3NlcnRFeHByKG9mZnNldG9m KGVudHJ5dHlwZSwga2V5bWVtYmVyKSA9PSAwLCBcCisJCQkJCQkgI2tleW1lbWJlciAiIG11c3Qg YmUgZmlyc3QgbWVtYmVyIGluICIgI2VudHJ5dHlwZSksIFwKKwlzaG1lbV9oYXNoX21ha2VfaW1w bCggXAorCQkodGFibmFtZSksIChpbml0X3NpemUpLCAobWF4X3NpemUpLCBcCisJCXNpemVvZigo KGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIpLCBcCisJCXNpemVvZihlbnRyeXR5cGUpLCBcCisJ CUhBU0hfS0VZX0FTX1NUUklORyhlbnRyeXR5cGUsIGtleW1lbWJlciksIFwKKwkJKG9wdHMpKSkK KworZXh0ZXJuIEhUQUIgKnNobWVtX2hhc2hfbWFrZV9pbXBsKGNvbnN0IGNoYXIgKm5hbWUsIGlu dDY0IGluaXRfc2l6ZSwgaW50NjQgbWF4X3NpemUsCisJCQkJCQkJCSAgU2l6ZSBrZXlzaXplLCBT aXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCQkJCQkgIGNvbnN0IEhBU0hPUFRT ICpvcHRzKTsKKwogLyogaXBjaS5jICovCiBleHRlcm4gdm9pZCBSZXF1ZXN0QWRkaW5TaG1lbVNw YWNlKFNpemUgc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2gu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaAppbmRleCAzMzdiMmU0NDYyNS4uMzQ2MWNl ZGU2NWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9oc2VhcmNoLmgKQEAgLTE1LDYgKzE1LDkgQEAKICNkZWZpbmUgSFNFQVJD SF9ICiAKIAorLyogSGFzaCB0YWJsZSBjb250cm9sIHN0cnVjdCBpcyBhbiBvcGFxdWUgdHlwZSBr bm93biBvbmx5IHdpdGhpbiBkeW5haGFzaC5jICovCit0eXBlZGVmIHN0cnVjdCBIVEFCIEhUQUI7 CisKIC8qCiAgKiBIYXNoIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhpcyBzaWduYXR1cmUuCiAgKi8K QEAgLTQyLDYgKzQ1LDE1NiBAQCB0eXBlZGVmIHZvaWQgKigqSGFzaENvcHlGdW5jKSAodm9pZCAq ZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBTaXplIGtleXNpemUpOwogICovCiB0eXBlZGVmIHZvaWQg KigqSGFzaEFsbG9jRnVuYykgKFNpemUgcmVxdWVzdCwgdm9pZCAqYWxsb2NfYXJnKTsKIAorLyoK KyAqIEhhc2ggb3B0aW9ucyBmb3IgaGFzaF9tYWtlX2V4dCBhbmQgc2htZW1faGFzaF9tYWtlX2V4 dCBtYWNyb3MuCisgKiBDb250YWlucyBsZXNzIGNvbW1vbmx5IG5lZWRlZCBvcHRpb25zIHRoYXQg YXJlbid0IGNvdmVyZWQgYnkgdGhlIGJhc2ljIG1hY3Jvcy4KKyAqIEFsbCBmaWVsZHMgZGVmYXVs dCB0byBOVUxMLzAvZmFsc2Ugd2hlbiB6ZXJvLWluaXRpYWxpemVkLgorICovCit0eXBlZGVmIHN0 cnVjdCBIQVNIT1BUUworeworCUhhc2hWYWx1ZUZ1bmMgaGFzaDsJCQkvKiBjdXN0b20gaGFzaCBm dW5jdGlvbiAoTlVMTCBmb3IgZGVmYXVsdCkgKi8KKwlIYXNoQ29tcGFyZUZ1bmMgbWF0Y2g7CQkv KiBjdXN0b20gY29tcGFyaXNvbiBmdW5jdGlvbiAoTlVMTCBmb3IKKwkJCQkJCQkJICogZGVmYXVs dCkgKi8KKwlIYXNoQ29weUZ1bmMga2V5Y29weTsJCS8qIGN1c3RvbSBrZXkgY29weSBmdW5jdGlv biAoTlVMTCBmb3IgZGVmYXVsdCkgKi8KKwlIYXNoQWxsb2NGdW5jIGFsbG9jOwkJLyogY3VzdG9t IGFsbG9jYXRvciAoTlVMTCBmb3IgZGVmYXVsdCkgKi8KKwlpbnQ2NAkJbnVtX3BhcnRpdGlvbnM7 IC8qIHBhcnRpdGlvbiBjb3VudCAoMCBmb3Igbm9uZSkgKi8KKwlib29sCQlmaXhlZF9zaXplOwkJ LyogaWYgdHJ1ZSwgaGFzaCB0YWJsZSBjYW5ub3QgZ3JvdyAqLworCWJvb2wJCWZvcmNlX2Jsb2Jz OwkvKiBpZiB0cnVlLCB1c2UgSEFTSF9CTE9CUyBldmVuIGZvciBzdHJpbmcKKwkJCQkJCQkJICog dHlwZXMgKi8KK30gSEFTSE9QVFM7CisKKy8qCisgKiBIZWxwZXJzIHRvIGRldGVjdCBpZiBhIHR5 cGUgc2hvdWxkIGJlIGhhc2hlZCBhcyBhIHN0cmluZy4KKyAqCisgKiBTdHJpbmcgdHlwZXMgaW5j bHVkZTogY2hhciBhcnJheXMgYW5kIE5hbWVEYXRhLgorICogRXZlcnl0aGluZyBlbHNlIGlzIHRy ZWF0ZWQgYXMgYSBiaW5hcnkgYmxvYiAoSEFTSF9CTE9CUykuCisgKi8KKyNkZWZpbmUgSEFTSF9Q VFJfQVNfU1RSSU5HKHB0ciwgc2l6ZSkgXAorCShwZ19leHByX2hhc190eXBlX3AoKHB0ciksIGNo YXIoKilbc2l6ZV0pIHx8IHBnX2V4cHJfaGFzX3R5cGVfcCgocHRyKSwgTmFtZURhdGEgKikpCisj ZGVmaW5lIEhBU0hfS0VZX0FTX1NUUklORyhlbnRyeXR5cGUsIGtleW1lbWJlcikgXAorCUhBU0hf UFRSX0FTX1NUUklORygmKChlbnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyLCBcCisJCQkJCSAgIHNp emVvZigoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIpKQorI2RlZmluZSBIQVNIX1RZUEVfQVNf U1RSSU5HKHR5cGUpIFwKKwlIQVNIX1BUUl9BU19TVFJJTkcocGdfbnVsbHB0cl9vZih0eXBlKSwg c2l6ZW9mKHR5cGUpKQorCisvKgorICogQ3JlYXRlIGEgaGFzaCB0YWJsZSB3aXRoIG1pbmltYWwg Ym9pbGVycGxhdGUuCisgKgorICogVGhpcyBpcyB0aGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBh IGhhc2ggdGFibGUuIEl0OgorICogLSBEZXJpdmVzIGtleXNpemUgZnJvbSB0aGUga2V5bWVtYmVy J3MgYWN0dWFsIHR5cGUKKyAqIC0gRGVyaXZlcyBlbnRyeXNpemUgZnJvbSB0aGUgZW50cnl0eXBl CisgKiAtIEF1dG9tYXRpY2FsbHkgY2hvb3NlcyBIQVNIX1NUUklOR1Mgb3IgSEFTSF9CTE9CUyBi YXNlZCBvbiBrZXkgdHlwZSAoY2hhciBhcnJheXMgYW5kIE5hbWVEYXRhIGFyZSB0cmVhdGVkIGFz IHN0cmluZ3MpCisgKiAtIFVzZXMgQ3VycmVudE1lbW9yeUNvbnRleHQgKG5vdCBUb3BNZW1vcnlD b250ZXh0KQorICogLSBWYWxpZGF0ZXMgdGhhdCBrZXltZW1iZXIgaXMgYXQgb2Zmc2V0IDAKKyAq CisgKiBOT1RFOiBJZiB5b3UgdXNlIGNoYXJbTl0gdG8gc3RvcmUgYmluYXJ5IGRhdGEgdGhhdCBt aWdodCBjb250YWluIG51bGwgYnl0ZXMKKyAqIGFuZC9vciBpcyBub3QgbnVsbCB0ZXJtaW5hdGVk LCB0aGUgYXV0b21hdGljIGRldGVjdGlvbiB3aWxsIGluY29ycmVjdGx5CisgKiB0cmVhdCBpdCBh cyBhIHN0cmluZyBhbmQgdXNlIHN0cmluZyBjb21wYXJpc29uLiBJbiBzdWNoIGNhc2VzLCB1c2UK KyAqIGhhc2hfbWFrZV9leHQoKSB3aXRoIC5mb3JjZV9ibG9icyA9IHRydWUgdG8gb3ZlcnJpZGUg dGhlIGF1dG9tYXRpYworICogZGV0ZWN0aW9uLgorICoKKyAqIFVzYWdlOgorICogICB0eXBlZGVm IHN0cnVjdCB7IE9pZCBvaWQ7IGNoYXIgKmRhdGE7IH0gTXlFbnRyeTsKKyAqICAgSFRBQiAqaCA9 IGhhc2hfbWFrZShNeUVudHJ5LCBvaWQsICJteSB0YWJsZSIsIDY0KTsKKyAqLworI2RlZmluZSBo YXNoX21ha2UoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtKSBcCisJaGFzaF9t YWtlX2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIEN1cnJlbnRNZW1v cnlDb250ZXh0KQorCisvKgorICogTGlrZSBoYXNoX21ha2UsIGJ1dCBhbGxvd3Mgc3BlY2lmeWlu ZyBhIG1lbW9yeSBjb250ZXh0LgorICovCisjZGVmaW5lIGhhc2hfbWFrZV9jeHQoZW50cnl0eXBl LCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBtY3h0KSBcCisJaGFzaF9tYWtlX2V4dF9jeHQo ZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBOVUxMLCBtY3h0KQorCisvKgor ICogSGFzaCB0YWJsZSB3aXRoIGN1c3RvbSBoYXNoIGFuZC9vciBtYXRjaCBmdW5jdGlvbnMuCisg KgorICogTGlrZSBoYXNoX21ha2UsIGJ1dCBhY2NlcHRzIGN1c3RvbSBoYXNoIGFuZCBtYXRjaCBm dW5jdGlvbiBwb2ludGVycy4KKyAqIFBhc3MgTlVMTCBmb3IgaGFzaGZuIHRvIHVzZSB0aGUgZGVm YXVsdCBoYXNoIChiYXNlZCBvbiBrZXkgdHlwZSksCisgKiBvciBOVUxMIGZvciBtYXRjaGZuIHRv IHVzZSB0aGUgZGVmYXVsdCBtZW1jbXAtYmFzZWQgY29tcGFyaXNvbi4KKyAqLworI2RlZmluZSBo YXNoX21ha2VfZm4oZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBoYXNoZm4s IG1hdGNoZm4pIFwKKwloYXNoX21ha2VfZm5fY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJu YW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBcCisJCQkJCSBDdXJyZW50TWVtb3J5Q29udGV4 dCkKKyNkZWZpbmUgaGFzaF9tYWtlX2ZuX2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFt ZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbiwgbWN4dCkgXAorCShTdGF0aWNBc3NlcnRFeHByKG9m ZnNldG9mKGVudHJ5dHlwZSwga2V5bWVtYmVyKSA9PSAwLCBcCisJCQkJCSAgI2tleW1lbWJlciAi IG11c3QgYmUgZmlyc3QgbWVtYmVyIGluICIgI2VudHJ5dHlwZSksIFwKKwkgaGFzaF9tYWtlX2Zu X2ltcGwoKHRhYm5hbWUpLCAobmVsZW0pLCBcCisJCQkJCSAgIHNpemVvZigoKGVudHJ5dHlwZSAq KTApLT5rZXltZW1iZXIpLCBcCisJCQkJCSAgIHNpemVvZihlbnRyeXR5cGUpLCBcCisJCQkJCSAg IEhBU0hfS0VZX0FTX1NUUklORyhlbnRyeXR5cGUsIGtleW1lbWJlciksIFwKKwkJCQkJICAgKGhh c2hmbiksIChtYXRjaGZuKSwgKG1jeHQpKSkKKworLyoKKyAqIEhhc2ggdGFibGUgd2l0aCBleHRl bmRlZCBvcHRpb25zIHZpYSBIQVNIT1BUUyBzdHJ1Y3QuCisgKgorICogTGlrZSBoYXNoX21ha2Us IGJ1dCBhY2NlcHRzIGFkZGl0aW9uYWwgb3B0aW9ucyB2aWEgSEFTSE9QVFMgc3RydWN0IHBvaW50 ZXIuCisgKiBQYXNzIE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0cy4KKyAqCisgKiBF eGFtcGxlIHVzYWdlOgorICogICBIQVNIT1BUUyBvcHRzID0gezB9OworICogICBvcHRzLmhhc2gg PSBteV9oYXNoX2Z1bmM7CisgKiAgIG9wdHMubnVtX3BhcnRpdGlvbnMgPSAxNjsKKyAqICAgSFRB QiAqaCA9IGhhc2hfbWFrZV9leHQoTXlFbnRyeSwga2V5LCAibXkgdGFibGUiLCA2NCwgJm9wdHMp OworICovCisjZGVmaW5lIGhhc2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5h bWUsIG5lbGVtLCBvcHRzKSBcCisJaGFzaF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCBrZXltZW1i ZXIsIHRhYm5hbWUsIG5lbGVtLCBvcHRzLCBDdXJyZW50TWVtb3J5Q29udGV4dCkKKworI2RlZmlu ZSBoYXNoX21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0s IG9wdHMsIG1jeHQpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihvZmZzZXRvZihlbnRyeXR5cGUsIGtl eW1lbWJlcikgPT0gMCwgXAorCQkJCQkJICNrZXltZW1iZXIgIiBtdXN0IGJlIGZpcnN0IG1lbWJl ciBpbiAiICNlbnRyeXR5cGUpLCBcCisJaGFzaF9tYWtlX2ltcGwoIFwKKwkJKHRhYm5hbWUpLCAo bmVsZW0pLCBcCisJCXNpemVvZigoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIpLCBcCisJCXNp emVvZihlbnRyeXR5cGUpLCBcCisJCUhBU0hfS0VZX0FTX1NUUklORyhlbnRyeXR5cGUsIGtleW1l bWJlciksIFwKKwkJKG9wdHMpLCBcCisJCShtY3h0KSkpCisKKworLyoKKyAqIENyZWF0ZSBhIGhh c2ggc2V0IHdoZXJlIHRoZSBlbnRpcmUgZW50cnkgaXMgdGhlIGtleS4gVGhpcyBpcworICogbGlr ZSBoYXNoX21ha2UsIGJ1dCB3aGVyZSB0aGUga2V5IGlzIGFsc28gdGhlIGVudHJ5LgorICovCisj ZGVmaW5lIGhhc2hzZXRfbWFrZShlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtKSBcCisJaGFzaHNl dF9tYWtlX2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBDdXJyZW50TWVtb3J5Q29udGV4 dCkKKyNkZWZpbmUgaGFzaHNldF9tYWtlX2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBt Y3h0KSBcCisJaGFzaHNldF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwg TlVMTCwgbWN4dCkKKyNkZWZpbmUgaGFzaHNldF9tYWtlX2ZuKGVudHJ5dHlwZSwgdGFibmFtZSwg bmVsZW0sIGhhc2hmbiwgbWF0Y2hmbikgXAorCWhhc2hzZXRfbWFrZV9mbl9jeHQoZW50cnl0eXBl LCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBcCisJCQkJCQkJQ3VycmVudE1lbW9y eUNvbnRleHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9mbl9jeHQoZW50cnl0eXBlLCB0YWJuYW1l LCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBtY3h0KSBcCisJaGFzaF9tYWtlX2ZuX2ltcGwoKHRh Ym5hbWUpLCAobmVsZW0pLCBzaXplb2YoZW50cnl0eXBlKSwgc2l6ZW9mKGVudHJ5dHlwZSksIFwK KwkJCQkJCSBIQVNIX1RZUEVfQVNfU1RSSU5HKGVudHJ5dHlwZSksIChoYXNoZm4pLCAobWF0Y2hm biksIFwKKwkJCQkJCSBtY3h0KQorI2RlZmluZSBoYXNoc2V0X21ha2VfZXh0KGVudHJ5dHlwZSwg dGFibmFtZSwgbmVsZW0sIG9wdHMpIFwKKwloYXNoc2V0X21ha2VfZXh0X2N4dChlbnRyeXR5cGUs IHRhYm5hbWUsIG5lbGVtLCBvcHRzLCBcCisJCQkJCQkJQ3VycmVudE1lbW9yeUNvbnRleHQpCisj ZGVmaW5lIGhhc2hzZXRfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIG9w dHMsIG1jeHQpIFwKKwloYXNoX21ha2VfaW1wbCgodGFibmFtZSksIChuZWxlbSksIHNpemVvZihl bnRyeXR5cGUpLCBzaXplb2YoZW50cnl0eXBlKSwgXAorCQkJCSAgIEhBU0hfVFlQRV9BU19TVFJJ TkcoZW50cnl0eXBlKSwgb3B0cywgKG1jeHQpKQorCisvKgorICogSW1wbGVtZW50YXRpb24gZnVu Y3Rpb24gZm9yIGhhc2hfbWFrZSBtYWNyb3MuIE5vdCBtZWFudCB0byBiZSBjYWxsZWQKKyAqIGRp cmVjdGx5LgorICoKKyAqIElmIHN0cmluZ19rZXkgaXMgdHJ1ZSwgdGhlIGtleSBpcyB0cmVhdGVk IGFzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KKyAqIFBhc3MgTlVMTCBmb3Igb3B0cyB0byB1 c2UgYWxsIGRlZmF1bHRzLgorICovCitleHRlcm4gSFRBQiAqaGFzaF9tYWtlX2ltcGwoY29uc3Qg Y2hhciAqdGFibmFtZSwgaW50NjQgbmVsZW0sCisJCQkJCQkJU2l6ZSBrZXlzaXplLCBTaXplIGVu dHJ5c2l6ZSwKKwkJCQkJCQlib29sIHN0cmluZ19rZXksCisJCQkJCQkJY29uc3QgSEFTSE9QVFMg Km9wdHMsCisJCQkJCQkJTWVtb3J5Q29udGV4dCBtY3h0KTsKKworLyoKKyAqIEltcGxlbWVudGF0 aW9uIGZ1bmN0aW9uIGZvciBoYXNoX21ha2VfZm4gbWFjcm9zLgorICovCitleHRlcm4gSFRBQiAq aGFzaF9tYWtlX2ZuX2ltcGwoY29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQgbmVsZW0sCisJCQkJ CQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJ CQkJCSAgIEhhc2hWYWx1ZUZ1bmMgaGFzaGZuLCBIYXNoQ29tcGFyZUZ1bmMgbWF0Y2hmbiwKKwkJ CQkJCQkgICBNZW1vcnlDb250ZXh0IG1jeHQpOworCiAvKgogICogSEFTSEVMRU1FTlQgaXMgdGhl IHByaXZhdGUgcGFydCBvZiBhIGhhc2h0YWJsZSBlbnRyeS4gIFRoZSBjYWxsZXIncyBkYXRhCiAg KiBmb2xsb3dzIHRoZSBIQVNIRUxFTUVOVCBzdHJ1Y3R1cmUgKG9uIGEgTUFYQUxJR04nZCBib3Vu ZGFyeSkuICBUaGUgaGFzaCBrZXkKQEAgLTU2LDExICsyMDksMTEgQEAgdHlwZWRlZiBzdHJ1Y3Qg SEFTSEVMRU1FTlQKIC8qIEhhc2ggdGFibGUgaGVhZGVyIHN0cnVjdCBpcyBhbiBvcGFxdWUgdHlw ZSBrbm93biBvbmx5IHdpdGhpbiBkeW5haGFzaC5jICovCiB0eXBlZGVmIHN0cnVjdCBIQVNISERS IEhBU0hIRFI7CiAKLS8qIEhhc2ggdGFibGUgY29udHJvbCBzdHJ1Y3QgaXMgYW4gb3BhcXVlIHR5 cGUga25vd24gb25seSB3aXRoaW4gZHluYWhhc2guYyAqLwotdHlwZWRlZiBzdHJ1Y3QgSFRBQiBI VEFCOwotCi0vKiBQYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUgZm9yIGhhc2hfY3JlYXRlICovCi0v KiBPbmx5IHRob3NlIGZpZWxkcyBpbmRpY2F0ZWQgYnkgaGFzaF9mbGFncyBuZWVkIGJlIHNldCAq LworLyoKKyAqIFBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBmb3IgaGFzaF9jcmVhdGUgKHdoaWNo IGlzIHRoZSBsb3ctbGV2ZWwgbWV0aG9kIG9mCisgKiBpbml0aWFsaXppbmcgaGFzaCB0YWJsZXMs IGhhc2hfbWFrZSBtYWNyb3MgYXJlIHByZWZlcnJlZCkKKyAqIE9ubHkgdGhvc2UgZmllbGRzIGlu ZGljYXRlZCBieSBoYXNoX2ZsYWdzIG5lZWQgYmUgc2V0CisgKi8KIHR5cGVkZWYgc3RydWN0IEhB U0hDVEwKIHsKIAkvKiBVc2VkIGlmIEhBU0hfUEFSVElUSU9OIGZsYWcgaXMgc2V0OiAqLwpAQCAt MTI5LDYgKzI4Miw5IEBAIHR5cGVkZWYgc3RydWN0CiAgKi8KIGV4dGVybiBIVEFCICpoYXNoX2Ny ZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKIAkJCQkJCSBjb25zdCBIQVNI Q1RMICppbmZvLCBpbnQgZmxhZ3MpOworZXh0ZXJuIHZvaWQgaGFzaF9vcHRzX2luaXQoSEFTSENU TCAqY3RsLCBpbnQgKmZsYWdzLAorCQkJCQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6 ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCQkJICAgY29uc3QgSEFTSE9QVFMgKm9wdHMpOwogZXh0 ZXJuIHZvaWQgaGFzaF9kZXN0cm95KEhUQUIgKmhhc2hwKTsKIGV4dGVybiB2b2lkIGhhc2hfc3Rh dHMoY29uc3QgY2hhciAqY2FsbGVyLCBIVEFCICpoYXNocCk7CiBleHRlcm4gdm9pZCAqaGFzaF9z ZWFyY2goSFRBQiAqaGFzaHAsIGNvbnN0IHZvaWQgKmtleVB0ciwgSEFTSEFDVElPTiBhY3Rpb24s CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY3BsdXNwbHVzZXh0L3Rlc3RfY3Bs dXNwbHVzZXh0LmNwcCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jcGx1c3BsdXNleHQvdGVzdF9j cGx1c3BsdXNleHQuY3BwCmluZGV4IGRmN2E1OTJjYjcwLi44M2JiOTljNGQyZCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NwbHVzcGx1c2V4dC90ZXN0X2NwbHVzcGx1c2V4dC5j cHAKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NwbHVzcGx1c2V4dC90ZXN0X2NwbHVzcGx1 c2V4dC5jcHAKQEAgLTE5LDYgKzE5LDcgQEAgZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSAiZm1nci5o IgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKICNpbmNsdWRlICJub2Rlcy9wcmltbm9kZXMu aCIKKyNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAKIFBHX01PRFVMRV9NQUdJQzsKIApAQCAt NzUsNiArNzYsNTEgQEAgdGVzdF9jcGx1c3BsdXNfYWRkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcGZy ZWUobm9kZSk7CiAJcGZyZWUoY29weSk7CiAKKwkvKiBUZXN0IGhhc2ggbWFjcm9zIGNvbXBpbGUg dW5kZXIgQysrICovCisJeworCQl0eXBlZGVmIHN0cnVjdAorCQl7CisJCQlPaWQJCQlvaWQ7CisJ CQlpbnQJCQlkYXRhOworCQl9IE9pZEVudHJ5OworCisJCXR5cGVkZWYgc3RydWN0CisJCXsKKwkJ CWNoYXIJCW5hbWVbTkFNRURBVEFMRU5dOworCQkJaW50CQkJdmFsdWU7CisJCX0gTmFtZUVudHJ5 OworCisJCUhUQUIJICAgKmh0YWI7CisKKwkJU3RhdGljQXNzZXJ0U3RtdCghSEFTSF9LRVlfQVNf U1RSSU5HKE9pZEVudHJ5LCBvaWQpLAorCQkJCQkJICJPaWQga2V5IHNob3VsZCB1c2UgSEFTSF9C TE9CUyIpOworCQlTdGF0aWNBc3NlcnRTdG10KCFIQVNIX1RZUEVfQVNfU1RSSU5HKE9pZCksCisJ CQkJCQkgIk9pZCBoYXNoc2V0IHNob3VsZCB1c2UgSEFTSF9CTE9CUyIpOworCQlTdGF0aWNBc3Nl cnRTdG10KEhBU0hfS0VZX0FTX1NUUklORyhOYW1lRW50cnksIG5hbWUpLAorCQkJCQkJICJjaGFy W10ga2V5IHNob3VsZCB1c2UgSEFTSF9TVFJJTkdTIik7CisJCVN0YXRpY0Fzc2VydFN0bXQoSEFT SF9UWVBFX0FTX1NUUklORyhOYW1lRGF0YSksCisJCQkJCQkgIk5hbWVEYXRhIHNob3VsZCB1c2Ug SEFTSF9TVFJJTkdTIik7CisKKwkJaHRhYiA9IGhhc2hfbWFrZShPaWRFbnRyeSwgb2lkLCAiQysr IG9pZCBoYXNoIiwgOCk7CisJCWhhc2hfZGVzdHJveShodGFiKTsKKworCQlodGFiID0gaGFzaF9t YWtlKE5hbWVFbnRyeSwgbmFtZSwgIkMrKyBuYW1lIGhhc2giLCA4KTsKKwkJaGFzaF9kZXN0cm95 KGh0YWIpOworCisJCWh0YWIgPSBoYXNoX21ha2VfY3h0KE9pZEVudHJ5LCBvaWQsICJDKysgY3h0 IGhhc2giLCA4LAorCQkJCQkJCSBDdXJyZW50TWVtb3J5Q29udGV4dCk7CisJCWhhc2hfZGVzdHJv eShodGFiKTsKKworCQlodGFiID0gaGFzaF9tYWtlX2V4dChPaWRFbnRyeSwgb2lkLCAiQysrIGV4 dCBoYXNoIiwgOCwgTlVMTCk7CisJCWhhc2hfZGVzdHJveShodGFiKTsKKworCQlodGFiID0gaGFz aF9tYWtlX2ZuKE9pZEVudHJ5LCBvaWQsICJDKysgZm4gaGFzaCIsIDgsIE5VTEwsIE5VTEwpOwor CQloYXNoX2Rlc3Ryb3koaHRhYik7CisKKwkJaHRhYiA9IGhhc2hzZXRfbWFrZShPaWQsICJDKysg b2lkIGhhc2hzZXQiLCA4KTsKKwkJaGFzaF9kZXN0cm95KGh0YWIpOworCX0KKwogCXN3aXRjaCAo YSkKIAl7CiAJCWNhc2UgMToKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNWJjNTE3NjAy YjEuLmUwMjMxODIwN2U1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTE4Nyw2ICsx MTg3LDcgQEAgSEFTSEJVQ0tFVAogSEFTSENUTAogSEFTSEVMRU1FTlQKIEhBU0hIRFIKK0hBU0hP UFRTCiBIQVNIU0VHTUVOVAogSEFTSF9TRVFfU1RBVFVTCiBIRQotLSAKMi41My4wCgo= --a91699ffa7e6cc4e3f5c5318326cd9392f0e1373c1b243d4367b86ee0bd6 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0002-Add-foreach_hash-macro.patch Content-Type: text/x-patch; charset=utf-8; name=v13-0002-Add-foreach_hash-macro.patch RnJvbSBiNTdlNDgzOWNlZTUxNDQyNWRlNzRiMjYxNDE0MzZhMTg3YTUyNmRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MyAyLzVdIEFkZCBmb3JlYWNoX2hhc2ggbWFjcm8KCkZvciBsaXN0cyB3ZSd2ZSBoYWQgYSBuZXcg Zm9yZWFjaCBzdHlsZSBtYWNyb3Mgc2luY2UgMTRkZDBmMjdkNy4gVGhpcwphZGRzIGEgc2ltaWxh ciBtYWNybyBmb3IgaGFzaCB0YWJsZXMuIFRoaXMgbmV3IGZvcmVhY2hfaGFzaCBtYWNybyBtYWtl cwppdGVyYXRpbmcgb3ZlciB0aGUgaXRlbXMgaW4gYW4gSFRBQiBhcyBzaW1wbGUgYXMgaXRlcmF0 aW5nIG92ZXIgdGhlCml0ZW1zIGluIGEgTGlzdC4gVGhlIG9ubHkgYWRkaXRpb25hbCB0aGluZyB0 byBrZWVwIGluIG1pbmQgaXMgdGhhdCB3aGVuCmV4aXRpbmcgdGhlIGxvb3AgZWFybHkgeW91IG5l ZWQgdG8gY2FsbCBmb3JlYWNoX2hhc2hfdGVybS4KLS0tCiBzcmMvaW5jbHVkZS91dGlscy9oc2Vh cmNoLmggICAgICAgICAgICAgICAgICAgfCA4MSArKysrKysrKysrKysrKysrKystCiAuLi4vdGVz dF9jcGx1c3BsdXNleHQvdGVzdF9jcGx1c3BsdXNleHQuY3BwICAgfCAgNCArCiAyIGZpbGVzIGNo YW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9oc2VhcmNoLmggYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKaW5k ZXggMzQ2MWNlZGU2NWQuLmE2MjA4NjY0MTAxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9oc2VhcmNoLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCkBAIC0yNzcsNiAr Mjc3LDg2IEBAIHR5cGVkZWYgc3RydWN0CiAJdWludDMyCQloYXNodmFsdWU7CQkvKiBoYXNodmFs dWUgdG8gc3RhcnQgc2Vxc2NhbiBvdmVyIGhhc2ggKi8KIH0gSEFTSF9TRVFfU1RBVFVTOwogCitl eHRlcm4gdm9pZCBoYXNoX3NlcV9pbml0KEhBU0hfU0VRX1NUQVRVUyAqc3RhdHVzLCBIVEFCICpo YXNocCk7CisKKy8qCisgKiBTYW1lIGFzIGhhc2hfc2VxX2luaXQoKSwgYnV0IHJldHVybnMgdGhl IHN0YXR1cyBzdHJ1Y3QgaW5zdGVhZCBvZiB0YWtpbmcgYQorICogcG9pbnRlci4gVGhpcyB3YXkg d2UgY2FuIHVzZSBpdCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gY2xhdXNlIG9mIGEgZm9yIGxvb3As CisgKiB3aGljaCB3ZSBuZWVkIGluIHRoZSBmb3JlYWNoX2hhc2ggbWFjcm8uCisgKgorICogTm90 IGludGVuZGVkIHRvIGJlIGNhbGxlZCBkaXJlY3RseSBieSB1c2VyIGNvZGUuCisgKi8KK3N0YXRp YyBpbmxpbmUgSEFTSF9TRVFfU1RBVFVTCitmb3JlYWNoX2hhc2hfc3RhcnQoSFRBQiAqaGFzaHAp Cit7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg aGFzaHApOworCXJldHVybiBzdGF0dXM7Cit9CisKKworLyoKKyAqIGZvcmVhY2hfaGFzaCAtIGl0 ZXJhdGUgb3ZlciBhbGwgZW50cmllcyBpbiBhIGhhc2ggdGFibGUKKyAqCisgKiBUaGlzIG1hY3Jv IHNpbXBsaWZpZXMgaGFzaCB0YWJsZSBpdGVyYXRpb24gYnkgY29tYmluaW5nIGhhc2hfc2VxX2lu aXQKKyAqIGFuZCBoYXNoX3NlcV9zZWFyY2ggaW50byBhIHNpbmdsZSBmb3ItbG9vcCBjb25zdHJ1 Y3QuCisgKgorICogVXNhZ2U6CisgKiAgIGZvcmVhY2hfaGFzaChNeUVudHJ5LCBlbnRyeSwgbXlf aGFzaHRhYmxlKQorICogICB7CisgKiAgICAgICAvLyB1c2UgZW50cnkKKyAqICAgfQorICoKKyAq IFRoaXMgcmVwbGFjZXMgdGhlIG1vcmUgdmVyYm9zZSBwYXR0ZXJuOgorICogICBIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOworICogICBNeUVudHJ5ICplbnRyeTsKKyAqICAgaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBteV9oYXNodGFibGUpOworICogICB3aGlsZSAoKGVudHJ5ID0gKE15RW50cnkgKikg aGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorICogICB7CisgKiAgICAgICAvLyB1 c2UgZW50cnkKKyAqICAgfQorICoKKyAqIEZvciBlYXJseSB0ZXJtaW5hdGlvbiwgdXNlIGZvcmVh Y2hfaGFzaF90ZXJtKCkgYmVmb3JlIGJyZWFrOgorICogICBmb3JlYWNoX2hhc2goTXlFbnRyeSwg ZW50cnksIG15X2hhc2h0YWJsZSkKKyAqICAgeworICogICAgICAgaWYgKGZvdW5kX2l0KQorICog ICAgICAgeworICogICAgICAgICAgIGZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5KTsKKyAqICAgICAg ICAgICBicmVhazsKKyAqICAgICAgIH0KKyAqICAgfQorICoKKyAqIFRoaXMgbWFjcm8gYWN0dWFs bHkgZ2VuZXJhdGVzIHR3byBsb29wcyBpbiBvcmRlciB0byBkZWNsYXJlIHR3byB2YXJpYWJsZXMg b2YKKyAqIGRpZmZlcmVudCB0eXBlcy4gIFRoZSBvdXRlciBsb29wIG9ubHkgaXRlcmF0ZXMgb25j ZSwgc28gd2UgZXhwZWN0IG9wdGltaXppbmcKKyAqIGNvbXBpbGVycyB3aWxsIHVucm9sbCBpdCwg dGhlcmVieSBvcHRpbWl6aW5nIGl0IGF3YXkuIChUaGlzIGlzIHRoZSBzYW1lCisgKiB0cmljayB0 aGF0J3MgdXNlZCBpbiB0aGUgZm9yZWFjaF9pbnRlcm5hbCBtYWNybyBpbiBwZ19saXN0LmgpCisg Ki8KKyNkZWZpbmUgZm9yZWFjaF9oYXNoKHR5cGUsIHZhciwgaHRhYikgXAorCWZvciAodHlwZSAq dmFyID0gTlVMTCwgKnZhciMjX19vdXRlcmxvb3AgPSAodHlwZSAqKSAxOyBcCisJCSB2YXIjI19f b3V0ZXJsb29wOyBcCisJCSB2YXIjI19fb3V0ZXJsb29wID0gMCkgXAorCQlmb3IgKEhBU0hfU0VR X1NUQVRVUyB2YXIjI19fc3RhdHVzID0gZm9yZWFjaF9oYXNoX3N0YXJ0KGh0YWIpOyBcCisJCQkg KHZhciA9ICh0eXBlICopIGhhc2hfc2VxX3NlYXJjaCgmdmFyIyNfX3N0YXR1cykpICE9IE5VTEw7 ICkKKworLyoKKyAqIGZvcmVhY2hfaGFzaF90ZXJtIC0gdGVybWluYXRlIGEgZm9yZWFjaF9oYXNo IGxvb3AgZWFybHkKKyAqCisgKiBBbHdheXMgY2FsbCB0aGlzIGJlZm9yZSBicmVha2luZyBvdXQg b2YgYSBmb3JlYWNoX2hhc2ggbG9vcCwgd2hldGhlciBkb25lIGJ5CisgKiB1c2luZyAiYnJlYWsi LCAicmV0dXJuIiBvciAiZ290byIuIChOb3QgbmVlZGVkIHdoZW4gdXNpbmcgImNvbnRpbnVlIikK KyAqLworI2RlZmluZSBmb3JlYWNoX2hhc2hfdGVybSh2YXIpIGhhc2hfc2VxX3Rlcm0oJnZhciMj X19zdGF0dXMpCisKKy8qCisgKiBmb3JlYWNoX2hhc2hfcmVzdGFydCAtIHJlc3RhcnQgaXRlcmF0 aW9uIGZyb20gdGhlIGJlZ2lubmluZworICoKKyAqIFVzZSB3aGVuIG1vZGlmaWNhdGlvbnMgZHVy aW5nIGl0ZXJhdGlvbiBtYXkgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgc2Nhbi4KKyAqIFRoZSBuZXh0 IGl0ZXJhdGlvbiB3aWxsIHN0YXJ0IGZyb20gdGhlIGZpcnN0IGVudHJ5IGFnYWluLgorICovCisj ZGVmaW5lIGZvcmVhY2hfaGFzaF9yZXN0YXJ0KHZhciwgaHRhYikgXAorCShoYXNoX3NlcV90ZXJt KCZ2YXIjI19fc3RhdHVzKSwgXAorCSBoYXNoX3NlcV9pbml0KCZ2YXIjI19fc3RhdHVzLCBodGFi KSkKKwogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBkeW5haGFzaC5jCiAgKi8K QEAgLTI5Niw3ICszNzYsNiBAQCBleHRlcm4gdm9pZCAqaGFzaF9zZWFyY2hfd2l0aF9oYXNoX3Zh bHVlKEhUQUIgKmhhc2hwLCBjb25zdCB2b2lkICprZXlQdHIsCiBleHRlcm4gYm9vbCBoYXNoX3Vw ZGF0ZV9oYXNoX2tleShIVEFCICpoYXNocCwgdm9pZCAqZXhpc3RpbmdFbnRyeSwKIAkJCQkJCQkJ IGNvbnN0IHZvaWQgKm5ld0tleVB0cik7CiBleHRlcm4gaW50NjQgaGFzaF9nZXRfbnVtX2VudHJp ZXMoSFRBQiAqaGFzaHApOwotZXh0ZXJuIHZvaWQgaGFzaF9zZXFfaW5pdChIQVNIX1NFUV9TVEFU VVMgKnN0YXR1cywgSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQgaGFzaF9zZXFfaW5pdF93aXRo X2hhc2hfdmFsdWUoSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMsCiAJCQkJCQkJCQkJICBIVEFCICpo YXNocCwKIAkJCQkJCQkJCQkgIHVpbnQzMiBoYXNodmFsdWUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2NwbHVzcGx1c2V4dC90ZXN0X2NwbHVzcGx1c2V4dC5jcHAgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfY3BsdXNwbHVzZXh0L3Rlc3RfY3BsdXNwbHVzZXh0LmNwcAppbmRl eCA4M2JiOTljNGQyZC4uN2IyODFjYzM4MzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9jcGx1c3BsdXNleHQvdGVzdF9jcGx1c3BsdXNleHQuY3BwCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9jcGx1c3BsdXNleHQvdGVzdF9jcGx1c3BsdXNleHQuY3BwCkBAIC0xMDIsNiAr MTAyLDEwIEBAIHRlc3RfY3BsdXNwbHVzX2FkZChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJICJO YW1lRGF0YSBzaG91bGQgdXNlIEhBU0hfU1RSSU5HUyIpOwogCiAJCWh0YWIgPSBoYXNoX21ha2Uo T2lkRW50cnksIG9pZCwgIkMrKyBvaWQgaGFzaCIsIDgpOworCQlmb3JlYWNoX2hhc2goT2lkRW50 cnksIG15T2lkRW50cnksIGh0YWIpCisJCXsKKwkJCSh2b2lkKSBteU9pZEVudHJ5OworCQl9CiAJ CWhhc2hfZGVzdHJveShodGFiKTsKIAogCQlodGFiID0gaGFzaF9tYWtlKE5hbWVFbnRyeSwgbmFt ZSwgIkMrKyBuYW1lIGhhc2giLCA4KTsKLS0gCjIuNTMuMAoK --a91699ffa7e6cc4e3f5c5318326cd9392f0e1373c1b243d4367b86ee0bd6 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0003-Use-hash_make-macros-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v13-0003-Use-hash_make-macros-throughout-the-codebase.patch RnJvbSAxZGU5NjA3YzFiMDVmYTkxNmY5Y2Q1OTEwYjFkYmM4ZjhjYjZkZjcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzY6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MyAzLzVdIFVzZSBoYXNoX21ha2UgbWFjcm9zIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlCgpUaGlz 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 a2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAgICAgICAgfCAyNiArKysrKysrLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgMjAgKystLS0tCiBz cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA1NSArKysrKy0t LS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgICAgICAgICAgICAg fCAgOCArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgICAgICB8 IDY2ICsrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMg ICAgICAgICAgICAgICB8IDEwICsrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyAg ICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXpl LmMgICAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudC5jICAgICAgIHwgMjMgKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5 cGFuYWx5emUuYyAgICAgIHwgMjMgKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24u YyAgICAgICAgICAgICAgICAgIHwgMTUgKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u ZnVuY3MuYyAgICAgICAgICAgICB8IDIwICsrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21j eHRmdW5jcy5jICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jp X3RyaWdnZXJzLmMgICAgICAgICAgIHwgMjkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8IDIzICsrLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2F0dG9wdGNhY2hlLmMgICAgICAgICB8IDE2ICsrLS0tCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9ldnRjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2Z1bmNjYWNoZS5jICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8IDE5ICsrLS0tLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9zcGNjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3RzX2NhY2hlLmMgICAgICAgICAgICB8IDI3ICsrKy0tLS0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAzMyArKysrLS0tLS0tCiBzcmMvYmFj a2VuZC91dGlscy9mbWdyL2RmbWdyLmMgICAgICAgICAgICAgICAgfCAxMiArKy0tCiBzcmMvYmFj a2VuZC91dGlscy9mbWdyL2ZtZ3IuYyAgICAgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAxNCArKy0tCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jICAgICAgfCAxNCArKy0tCiBzcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL3RpbWUvY29tYm9jaWQuYyAgICAgICAgICAgICB8IDEzICstLS0KIHNyYy9wbC9w bHBlcmwvcGxwZXJsLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDMyICsrKy0tLS0tLQogc3Jj L3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAgICAgICAgICAgICAgICAgIHwgMzIgKysrKy0tLS0t CiBzcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMgICAgICAgICAgICAgfCAgOSArKy0K IHNyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jICAgICAgICAgICAgICB8ICA5ICstLQog c3JjL3BsL3RjbC9wbHRjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKystLS0t CiBzcmMvdGltZXpvbmUvcGd0ei5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiArLS0t CiA3MiBmaWxlcyBjaGFuZ2VkLCAzNzYgaW5zZXJ0aW9ucygrKSwgODQ3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9kYmxpbmsvZGJs aW5rLmMKaW5kZXggOTc5OGNiNTM1YmMuLjUzYTNhMDkwZDM0IDEwMDY0NAotLS0gYS9jb250cmli L2RibGluay9kYmxpbmsuYworKysgYi9jb250cmliL2RibGluay9kYmxpbmsuYwpAQCAtMjU0OCwx MyArMjU0OCw5IEBAIGdldENvbm5lY3Rpb25CeU5hbWUoY29uc3QgY2hhciAqbmFtZSkKIHN0YXRp YyBIVEFCICoKIGNyZWF0ZUNvbm5IYXNoKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCi0JY3Rs LmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHJlbW90ZUNv bm5IYXNoRW50KTsKLQotCXJldHVybiBoYXNoX2NyZWF0ZSgiUmVtb3RlIENvbiBoYXNoIiwgTlVN Q09OTiwgJmN0bCwKLQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwlyZXR1cm4g aGFzaF9tYWtlX2N4dChyZW1vdGVDb25uSGFzaEVudCwgbmFtZSwKKwkJCQkJCSAiUmVtb3RlIENv biBoYXNoIiwgTlVNQ09OTiwKKwkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogc3RhdGlj IHJlbW90ZUNvbm4gKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0 YXRlbWVudHMuYwppbmRleCA3OTc1NDc2Yjg5MC4uMmFmODI4YTk5OTEgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRy aWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC01MTgsNyArNTE4 LDYgQEAgc3RhdGljIHZvaWQKIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogewogCWJvb2wJCWZv dW5kOwotCUhBU0hDVEwJCWluZm87CiAJRklMRQkgICAqZmlsZSA9IE5VTEw7CiAJRklMRQkgICAq cWZpbGUgPSBOVUxMOwogCXVpbnQzMgkJaGVhZGVyOwpAQCAtNTU4LDEyICs1NTcsOSBAQCBwZ3Nz X3NobWVtX3N0YXJ0dXAodm9pZCkKIAkJcGdzcy0+c3RhdHMuc3RhdHNfcmVzZXQgPSBHZXRDdXJy ZW50VGltZXN0YW1wKCk7CiAJfQogCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKHBnc3NIYXNoS2V5 KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihwZ3NzRW50cnkpOwotCXBnc3NfaGFzaCA9IFNo bWVtSW5pdEhhc2goInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwKLQkJCQkJCQkgIHBnc3NfbWF4 LCBwZ3NzX21heCwKLQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyk7CisJcGdzc19oYXNoID0gc2htZW1faGFzaF9tYWtlKHBnc3NFbnRyeSwga2V5LAorCQkJ CQkJCQkicGdfc3RhdF9zdGF0ZW1lbnRzIGhhc2giLAorCQkJCQkJCQlwZ3NzX21heCwgcGdzc19t YXgpOwogCiAJTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOwogCmRpZmYgLS1naXQg YS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX3Jl Z2V4cC5jCmluZGV4IGI0ZWFlZWM2MDkwLi4zODNjZTZiMzFiMSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhw LmMKQEAgLTg5Niw3ICs4OTYsNiBAQCBjb252ZXJ0UGdXY2hhcihwZ193Y2hhciBjLCB0cmdtX21i X2NoYXIgKnJlc3VsdCkKIHN0YXRpYyB2b2lkCiB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0cmdt TkZBKQogewotCUhBU0hDVEwJCWhhc2hDdGw7CiAJVHJnbVN0YXRlS2V5IGluaXRrZXk7CiAJVHJn bVN0YXRlICAqaW5pdHN0YXRlOwogCUxpc3RDZWxsICAgKmxjOwpAQCAtOTA4LDEzICs5MDcsNyBA QCB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0cmdtTkZBKQogCXRyZ21ORkEtPm92ZXJmbG93ZWQg PSBmYWxzZTsKIAogCS8qIENyZWF0ZSBoYXNodGFibGUgZm9yIHN0YXRlcyAqLwotCWhhc2hDdGwu a2V5c2l6ZSA9IHNpemVvZihUcmdtU3RhdGVLZXkpOwotCWhhc2hDdGwuZW50cnlzaXplID0gc2l6 ZW9mKFRyZ21TdGF0ZSk7Ci0JaGFzaEN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0J dHJnbU5GQS0+c3RhdGVzID0gaGFzaF9jcmVhdGUoIlRyaWdyYW0gTkZBIiwKLQkJCQkJCQkJICAx MDI0LAotCQkJCQkJCQkgICZoYXNoQ3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX0NPTlRFWFQpOworCXRyZ21ORkEtPnN0YXRlcyA9IGhhc2hfbWFrZShUcmdtU3Rh dGUsIHN0YXRlS2V5LCAiVHJpZ3JhbSBORkEiLCAxMDI0KTsKIAl0cmdtTkZBLT5uc3RhdGVzID0g MDsKIAogCS8qIENyZWF0ZSBpbml0aWFsIHN0YXRlOiBhbWJpZ3VvdXMgcHJlZml4LCBORkEncyBp bml0aWFsIHN0YXRlICovCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0 aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKaW5kZXggMTkyZjgwMTEx NjAuLjBmYWY3ZTY5MjgwIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0 aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0yMTcsMTcg KzIxNywxMyBAQCBHZXRDb25uZWN0aW9uKFVzZXJNYXBwaW5nICp1c2VyLCBib29sIHdpbGxfcHJl cF9zdG10LCBQZ0Zkd0Nvbm5TdGF0ZSAqKnN0YXRlKQogCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwg aW5pdGlhbGl6ZSBjb25uZWN0aW9uIGNhY2hlIGhhc2h0YWJsZSAqLwogCWlmIChDb25uZWN0aW9u SGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCiAJCWlmIChwZ2Zkd193ZV9nZXRf cmVzdWx0ID09IDApCiAJCQlwZ2Zkd193ZV9nZXRfcmVzdWx0ID0KIAkJCQlXYWl0RXZlbnRFeHRl bnNpb25OZXcoIlBvc3RncmVzRmR3R2V0UmVzdWx0Iik7CiAKLQkJY3RsLmtleXNpemUgPSBzaXpl b2YoQ29ubkNhY2hlS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihDb25uQ2FjaGVFbnRy eSk7Ci0JCUNvbm5lY3Rpb25IYXNoID0gaGFzaF9jcmVhdGUoInBvc3RncmVzX2ZkdyBjb25uZWN0 aW9ucyIsIDgsCi0JCQkJCQkJCQkgJmN0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwkJQ29ubmVjdGlvbkhhc2ggPSBoYXNoX21ha2VfY3h0KENvbm5DYWNoZUVudHJ5LCBr ZXksCisJCQkJCQkJCQkgICAicG9zdGdyZXNfZmR3IGNvbm5lY3Rpb25zIiwgOCwKKwkJCQkJCQkJ CSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qCiAJCSAqIFJlZ2lzdGVyIHNvbWUgY2FsbGJh Y2sgZnVuY3Rpb25zIHRoYXQgbWFuYWdlIGNvbm5lY3Rpb24gY2xlYW51cC4KZGlmZiAtLWdpdCBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv c2hpcHBhYmxlLmMKaW5kZXggMjUwZjU0ZmVhMzIuLmNiYTFjMDk2N2E5IDEwMDY0NAotLS0gYS9j b250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9zaGlwcGFibGUuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzX2Zkdy5o IgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgor I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK IAogLyogSGFzaCB0YWJsZSBmb3IgY2FjaGluZyB0aGUgcmVzdWx0cyBvZiBzaGlwcGFiaWxpdHkg bG9va3VwcyAqLwpAQCAtOTEsMTMgKzkyLDEwIEBAIEludmFsaWRhdGVTaGlwcGFibGVDYWNoZUNh bGxiYWNrKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsCiBzdGF0aWMgdm9p ZAogSW5pdGlhbGl6ZVNoaXBwYWJsZUNhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJ LyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKFNoaXBw YWJsZUNhY2hlS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNoaXBwYWJsZUNhY2hlRW50 cnkpOwotCVNoaXBwYWJsZUNhY2hlSGFzaCA9Ci0JCWhhc2hfY3JlYXRlKCJTaGlwcGFiaWxpdHkg Y2FjaGUiLCAyNTYsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVNoaXBwYWJsZUNh Y2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoU2hpcHBhYmxlQ2FjaGVFbnRyeSwga2V5LAorCQkJCQkJ CQkJICAgIlNoaXBwYWJpbGl0eSBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNv bnRleHQpOwogCiAJLyogU2V0IHVwIGludmFsaWRhdGlvbiBjYWxsYmFjayBvbiBwZ19mb3JlaWdu X3NlcnZlci4gKi8KIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhGT1JFSUdOU0VSVkVS T0lELApkaWZmIC0tZ2l0IGEvY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMgYi9jb250cmli L3RhYmxlZnVuYy90YWJsZWZ1bmMuYwppbmRleCAzMWY3MGI3YmMxMC4uMDkyZmNlMDY5ZTAgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCisrKyBiL2NvbnRyaWIvdGFi bGVmdW5jL3RhYmxlZnVuYy5jCkBAIC03MDcsMjQgKzcwNywxNyBAQCBzdGF0aWMgSFRBQiAqCiBs b2FkX2NhdGVnb3JpZXNfaGFzaChjaGFyICpjYXRzX3NxbCwgTWVtb3J5Q29udGV4dCBwZXJfcXVl cnlfY3R4KQogewogCUhUQUIJICAgKmNyb3NzdGFiX2hhc2g7Ci0JSEFTSENUTAkJY3RsOwogCWlu dAkJCXJldDsKIAl1aW50NjQJCXByb2M7CiAJTWVtb3J5Q29udGV4dCBTUEljb250ZXh0OwogCi0J LyogaW5pdGlhbGl6ZSB0aGUgY2F0ZWdvcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlzaXplID0g TUFYX0NBVE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoY3Jvc3N0YWJfSGFzaEVu dCk7Ci0JY3RsLmhjeHQgPSBwZXJfcXVlcnlfY3R4OwotCiAJLyoKLQkgKiB1c2UgSU5JVF9DQVRT LCBkZWZpbmVkIGFib3ZlIGFzIGEgZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBlbnRyaWVz Ci0JICogdG8gY3JlYXRlLCBpbml0aWFsbHkKKwkgKiBJbml0aWFsaXplIHRoZSBjYXRlZ29yeSBo YXNoIHRhYmxlLiBVc2UgSU5JVF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEKKwkgKiBndWVzcyBv ZiBob3cgbWFueSBoYXNoIHRhYmxlIGVudHJpZXMgdG8gY3JlYXRlLCBpbml0aWFsbHkuCiAJICov Ci0JY3Jvc3N0YWJfaGFzaCA9IGhhc2hfY3JlYXRlKCJjcm9zc3RhYiBoYXNoIiwKLQkJCQkJCQkJ SU5JVF9DQVRTLAotCQkJCQkJCQkmY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX1NUUklO R1MgfCBIQVNIX0NPTlRFWFQpOworCWNyb3NzdGFiX2hhc2ggPSBoYXNoX21ha2VfY3h0KGNyb3Nz dGFiX0hhc2hFbnQsIGludGVybmFsX2NhdG5hbWUsCisJCQkJCQkJCSAgImNyb3NzdGFiIGhhc2gi LCBJTklUX0NBVFMsCisJCQkJCQkJCSAgcGVyX3F1ZXJ5X2N0eCk7CiAKIAkvKiBDb25uZWN0IHRv IFNQSSBtYW5hZ2VyICovCiAJU1BJX2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hl YXB0dXBsZS5jCmluZGV4IGYzMDM0NjQ2OWVkLi5iNzJiZGZkZTA2MSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL2hlYXB0dXBsZS5jCkBAIC0xMjUsMTggKzEyNSw5IEBAIG1pc3NpbmdfbWF0Y2go Y29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBrZXlzaXplKQogc3RhdGlj IHZvaWQKIGluaXRfbWlzc2luZ19jYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwot Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihtaXNzaW5nX2NhY2hlX2tleSk7Ci0JaGFzaF9j dGwuZW50cnlzaXplID0gc2l6ZW9mKG1pc3NpbmdfY2FjaGVfa2V5KTsKLQloYXNoX2N0bC5oY3h0 ID0gVG9wTWVtb3J5Q29udGV4dDsKLQloYXNoX2N0bC5oYXNoID0gbWlzc2luZ19oYXNoOwotCWhh c2hfY3RsLm1hdGNoID0gbWlzc2luZ19tYXRjaDsKIAltaXNzaW5nX2NhY2hlID0KLQkJaGFzaF9j cmVhdGUoIk1pc3NpbmcgVmFsdWVzIENhY2hlIiwKLQkJCQkJMzIsCi0JCQkJCSZoYXNoX2N0bCwK LQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9DT05URVhUIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09N UEFSRSk7CisJCWhhc2hzZXRfbWFrZV9mbl9jeHQobWlzc2luZ19jYWNoZV9rZXksICJNaXNzaW5n IFZhbHVlcyBDYWNoZSIsIDMyLAorCQkJCQkJCW1pc3NpbmdfaGFzaCwgbWlzc2luZ19tYXRjaCwg VG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dGJ1aWxkLmMKaW5kZXggN2Y1N2M3ODdmNGMuLjA5ZjExYzQ1OWQ3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0YnVpbGQuYwpAQCAtMTUxNSwxNSArMTUxNSw4IEBAIHR5cGVkZWYgc3RydWN0CiBz dGF0aWMgdm9pZAogZ2lzdEluaXRQYXJlbnRNYXAoR0lTVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUp CiB7Ci0JSEFTSENUTAkJaGFzaEN0bDsKLQotCWhhc2hDdGwua2V5c2l6ZSA9IHNpemVvZihCbG9j a051bWJlcik7Ci0JaGFzaEN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyZW50TWFwRW50cnkpOwot CWhhc2hDdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWJ1aWxkc3RhdGUtPnBhcmVu dE1hcCA9IGhhc2hfY3JlYXRlKCJnaXN0YnVpbGQgcGFyZW50IG1hcCIsCi0JCQkJCQkJCQkJMTAy NCwKLQkJCQkJCQkJCQkmaGFzaEN0bCwKLQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JT IHwgSEFTSF9DT05URVhUKTsKKwlidWlsZHN0YXRlLT5wYXJlbnRNYXAgPSBoYXNoX21ha2UoUGFy ZW50TWFwRW50cnksIGNoaWxkYmxrbm8sCisJCQkJCQkJCQkgICJnaXN0YnVpbGQgcGFyZW50IG1h cCIsIDEwMjQpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dGJ1aWxkYnVmZmVycy5jCmluZGV4IDMyMTNjZjQ1YWE2Li4wMjlhZjg1NDJmOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYwpAQCAtNDQsNyArNDQsNiBAQCBH SVNUQnVpbGRCdWZmZXJzICoKIGdpc3RJbml0QnVpbGRCdWZmZXJzKGludCBwYWdlc1BlckJ1ZmZl ciwgaW50IGxldmVsU3RlcCwgaW50IG1heExldmVsKQogewogCUdJU1RCdWlsZEJ1ZmZlcnMgKmdm YmI7Ci0JSEFTSENUTAkJaGFzaEN0bDsKIAogCWdmYmIgPSBwYWxsb2Nfb2JqZWN0KEdJU1RCdWls ZEJ1ZmZlcnMpOwogCWdmYmItPnBhZ2VzUGVyQnVmZmVyID0gcGFnZXNQZXJCdWZmZXI7CkBAIC03 MiwxMyArNzEsOCBAQCBnaXN0SW5pdEJ1aWxkQnVmZmVycyhpbnQgcGFnZXNQZXJCdWZmZXIsIGlu dCBsZXZlbFN0ZXAsIGludCBtYXhMZXZlbCkKIAkgKiBub2RlQnVmZmVyc1RhYiBoYXNoIGlzIGFz c29jaWF0aW9uIGJldHdlZW4gaW5kZXggYmxvY2tzIGFuZCBpdCdzCiAJICogYnVmZmVycy4KIAkg Ki8KLQloYXNoQ3RsLmtleXNpemUgPSBzaXplb2YoQmxvY2tOdW1iZXIpOwotCWhhc2hDdGwuZW50 cnlzaXplID0gc2l6ZW9mKEdJU1ROb2RlQnVmZmVyKTsKLQloYXNoQ3RsLmhjeHQgPSBDdXJyZW50 TWVtb3J5Q29udGV4dDsKLQlnZmJiLT5ub2RlQnVmZmVyc1RhYiA9IGhhc2hfY3JlYXRlKCJnaXN0 YnVpbGRidWZmZXJzIiwKLQkJCQkJCQkJCSAgIDEwMjQsCi0JCQkJCQkJCQkgICAmaGFzaEN0bCwK LQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWdm YmItPm5vZGVCdWZmZXJzVGFiID0gaGFzaF9tYWtlKEdJU1ROb2RlQnVmZmVyLCBub2RlQmxvY2tu dW0sCisJCQkJCQkJCQkgImdpc3RidWlsZGJ1ZmZlcnMiLCAxMDI0KTsKIAogCWdmYmItPmJ1ZmZl ckVtcHR5aW5nUXVldWUgPSBOSUw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2hwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jCmluZGV4 IDgwOTliMGQwMjFmLi5mZDY2YzA3MGNhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaHBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5j CkBAIC0xMzYwLDcgKzEzNjAsNiBAQCB2b2lkCiBfaGFzaF9maW5pc2hfc3BsaXQoUmVsYXRpb24g cmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIG9idWYsIEJ1Y2tldCBvYnVja2V0LAogCQkJCSAg IHVpbnQzMiBtYXhidWNrZXQsIHVpbnQzMiBoaWdobWFzaywgdWludDMyIGxvd21hc2spCiB7Ci0J SEFTSENUTAkJaGFzaF9jdGw7CiAJSFRBQgkgICAqdGlkaHRhYjsKIAlCdWZmZXIJCWJ1Y2tldF9u YnVmID0gSW52YWxpZEJ1ZmZlcjsKIAlCdWZmZXIJCW5idWY7CkBAIC0xMzcxLDE2ICsxMzcwLDgg QEAgX2hhc2hfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1ZmZl ciBvYnVmLCBCdWNrZXQgb2J1Y2tldCwKIAlCdWNrZXQJCW5idWNrZXQ7CiAJYm9vbAkJZm91bmQ7 CiAKLQkvKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAqLwotCWhh c2hfY3RsLmtleXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0bC5lbnRy eXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0gQ3VycmVu dE1lbW9yeUNvbnRleHQ7Ci0KLQl0aWRodGFiID0KLQkJaGFzaF9jcmVhdGUoImJ1Y2tldCBjdGlk cyIsCi0JCQkJCTI1NiwJCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJJmhhc2hf Y3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkvKiBJ bml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAod2l0aCBhcmJpdHJhcnkg aW5pdGlhbCBzaXplKSAqLworCXRpZGh0YWIgPSBoYXNoc2V0X21ha2UoSXRlbVBvaW50ZXJEYXRh LCAiYnVja2V0IGN0aWRzIiwgMjU2KTsKIAogCWJ1Y2tldF9uYmxrbm8gPSBuYmxrbm8gPSBfaGFz aF9nZXRfbmV3YmxvY2tfZnJvbV9vbGRidWNrZXQocmVsLCBvYnVja2V0KTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKaW5kZXggZjcwN2IxMDJjNzIuLmY1OGI0YjJiMjA1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKQEAgLTIzOCw3ICsyMzgsNiBAQCBi ZWdpbl9oZWFwX3Jld3JpdGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19oZWFwLCBU cmFuc2FjdGlvbklkIG9sZGVzdF94bQogCVJld3JpdGVTdGF0ZSBzdGF0ZTsKIAlNZW1vcnlDb250 ZXh0IHJ3X2N4dDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jeHQ7Ci0JSEFTSENUTAkJaGFzaF9jdGw7 CiAKIAkvKgogCSAqIFRvIGVhc2UgY2xlYW51cCwgbWFrZSBhIHNlcGFyYXRlIGNvbnRleHQgdGhh dCB3aWxsIGNvbnRhaW4gdGhlCkBAIC0yNjMsMjQgKzI2MiwxOSBAQCBiZWdpbl9oZWFwX3Jld3Jp dGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19oZWFwLCBUcmFuc2FjdGlvbklkIG9s ZGVzdF94bQogCXN0YXRlLT5yc19jeHQgPSByd19jeHQ7CiAJc3RhdGUtPnJzX2J1bGtzdGF0ZSA9 IHNtZ3JfYnVsa19zdGFydF9yZWwobmV3X2hlYXAsIE1BSU5fRk9SS05VTSk7CiAKLQkvKiBJbml0 aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgdXBkYXRlIGNoYWlucyAqLwotCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YoVGlkSGFzaEtleSk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0g c2l6ZW9mKFVucmVzb2x2ZWRUdXBEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0gc3RhdGUtPnJzX2N4 dDsKLQorCS8qCisJICogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNrIHVwZGF0 ZSBjaGFpbnMgKHdpdGggYXJiaXRyYXJ5CisJICogaW5pdGlhbCBzaXplcykKKwkgKi8KIAlzdGF0 ZS0+cnNfdW5yZXNvbHZlZF90dXBzID0KLQkJaGFzaF9jcmVhdGUoIlJld3JpdGUgLyBVbnJlc29s dmVkIGN0aWRzIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwotCQkJ CQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OwotCi0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE9sZFRvTmV3TWFwcGluZ0RhdGEpOwor CQloYXNoX21ha2VfY3h0KFVucmVzb2x2ZWRUdXBEYXRhLCBrZXksCisJCQkJCSAgIlJld3JpdGUg LyBVbnJlc29sdmVkIGN0aWRzIiwgMTI4LAorCQkJCQkgIHN0YXRlLT5yc19jeHQpOwogCiAJc3Rh dGUtPnJzX29sZF9uZXdfdGlkX21hcCA9Ci0JCWhhc2hfY3JlYXRlKCJSZXdyaXRlIC8gT2xkIHRv IG5ldyB0aWQgbWFwIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwot CQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRF WFQpOworCQloYXNoX21ha2VfY3h0KE9sZFRvTmV3TWFwcGluZ0RhdGEsIGtleSwKKwkJCQkJICAi UmV3cml0ZSAvIE9sZCB0byBuZXcgdGlkIG1hcCIsIDEyOCwKKwkJCQkJICBzdGF0ZS0+cnNfY3h0 KTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY3h0KTsKIApAQCAtNzYxLDcgKzc1NSw2 IEBAIHJhd19oZWFwX2luc2VydChSZXdyaXRlU3RhdGUgc3RhdGUsIEhlYXBUdXBsZSB0dXApCiBz dGF0aWMgdm9pZAogbG9naWNhbF9iZWdpbl9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRl KQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCVRyYW5zYWN0aW9uSWQgbG9naWNhbF94bWluOwog CiAJLyoKQEAgLTc5MiwxNSArNzg1LDExIEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdyaXRlKFJl d3JpdGVTdGF0ZSBzdGF0ZSkKIAlzdGF0ZS0+cnNfYmVnaW5fbHNuID0gR2V0WExvZ0luc2VydFJl Y1B0cigpOwogCXN0YXRlLT5yc19udW1fcmV3cml0ZV9tYXBwaW5ncyA9IDA7CiAKLQloYXNoX2N0 bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihSZXdyaXRlTWFwcGluZ0ZpbGUpOwotCWhhc2hfY3RsLmhjeHQgPSBzdGF0ZS0+cnNf Y3h0OwotCiAJc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MgPQotCQloYXNoX2NyZWF0ZSgiTG9n aWNhbCByZXdyaXRlIG1hcHBpbmciLAotCQkJCQkxMjgsCQkvKiBhcmJpdHJhcnkgaW5pdGlhbCBz aXplICovCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhB U0hfQ09OVEVYVCk7CisJCWhhc2hfbWFrZV9jeHQoUmV3cml0ZU1hcHBpbmdGaWxlLCB4aWQsCisJ CQkJCSAgIkxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIiwKKwkJCQkJICAxMjgsCQkvKiBhcmJpdHJh cnkgaW5pdGlhbCBzaXplICovCisJCQkJCSAgc3RhdGUtPnJzX2N4dCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYwppbmRleCBjMjM1ZWNhN2M1 MS4uZGYzNDhkNTcwMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dwcmVmZXRjaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZl dGNoZXIuYwpAQCAtMzY0LDE1ICszNjQsMTMgQEAgWExvZ1ByZWZldGNoZXIgKgogWExvZ1ByZWZl dGNoZXJBbGxvY2F0ZShYTG9nUmVhZGVyU3RhdGUgKnJlYWRlcikKIHsKIAlYTG9nUHJlZmV0Y2hl ciAqcHJlZmV0Y2hlcjsKLQlIQVNIQ1RMCQljdGw7CiAKIAlwcmVmZXRjaGVyID0gcGFsbG9jMF9v YmplY3QoWExvZ1ByZWZldGNoZXIpOwogCXByZWZldGNoZXItPnJlYWRlciA9IHJlYWRlcjsKIAot CWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQljdGwuZW50cnlzaXplID0g c2l6ZW9mKFhMb2dQcmVmZXRjaGVyRmlsdGVyKTsKLQlwcmVmZXRjaGVyLT5maWx0ZXJfdGFibGUg PSBoYXNoX2NyZWF0ZSgiWExvZ1ByZWZldGNoZXJGaWx0ZXJUYWJsZSIsIDEwMjQsCi0JCQkJCQkJ CQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcHJlZmV0Y2hlci0+ZmlsdGVy X3RhYmxlID0gaGFzaF9tYWtlX2N4dChYTG9nUHJlZmV0Y2hlckZpbHRlciwgcmxvY2F0b3IsCisJ CQkJCQkJCQkJCSAiWExvZ1ByZWZldGNoZXJGaWx0ZXJUYWJsZSIsIDEwMjQsCisJCQkJCQkJCQkJ CSBUb3BNZW1vcnlDb250ZXh0KTsKIAlkbGlzdF9pbml0KCZwcmVmZXRjaGVyLT5maWx0ZXJfcXVl dWUpOwogCiAJU2hhcmVkU3RhdHMtPndhbF9kaXN0YW5jZSA9IDA7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IDVmYmUzOTEzM2I4Li5kMTFlNDJjOTQ5MCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAi dXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCiAKIApAQCAtMTMxLDE1ICsxMzIsOSBAQCBsb2dfaW52YWxpZF9wYWdlKFJl bEZpbGVMb2NhdG9yIGxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya25vLCBCbG9ja051bWJlciBibGtu bywKIAlpZiAoaW52YWxpZF9wYWdlX3RhYiA9PSBOVUxMKQogCXsKIAkJLyogY3JlYXRlIGhhc2gg dGFibGUgd2hlbiBmaXJzdCBuZWVkZWQgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlz aXplID0gc2l6ZW9mKHhsX2ludmFsaWRfcGFnZV9rZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6 ZW9mKHhsX2ludmFsaWRfcGFnZSk7Ci0KLQkJaW52YWxpZF9wYWdlX3RhYiA9IGhhc2hfY3JlYXRl KCJYTE9HIGludmFsaWQtcGFnZSB0YWJsZSIsCi0JCQkJCQkJCQkgICAxMDAsCi0JCQkJCQkJCQkg ICAmY3RsLAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWludmFsaWRf cGFnZV90YWIgPSBoYXNoX21ha2VfY3h0KHhsX2ludmFsaWRfcGFnZSwga2V5LAorCQkJCQkJCQkJ CSAiWExPRyBpbnZhbGlkLXBhZ2UgdGFibGUiLCAxMDAsCisJCQkJCQkJCQkJIFRvcE1lbW9yeUNv bnRleHQpOwogCX0KIAogCS8qIHdlIGN1cnJlbnRseSBhc3N1bWUgeGxfaW52YWxpZF9wYWdlX2tl eSBjb250YWlucyBubyBwYWRkaW5nICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX2VudW0uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jCmluZGV4IDMzYTQ2MTQ4 NGQ0Li44NmM4YmFkYTU1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVt LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKQEAgLTI2NywxNSArMjY3LDkg QEAgRW51bVZhbHVlc0RlbGV0ZShPaWQgZW51bVR5cGVPaWQpCiBzdGF0aWMgdm9pZAogaW5pdF91 bmNvbW1pdHRlZF9lbnVtX3R5cGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsKLQl1bmNv bW1pdHRlZF9lbnVtX3R5cGVzID0gaGFzaF9jcmVhdGUoIlVuY29tbWl0dGVkIGVudW0gdHlwZXMi LAotCQkJCQkJCQkJCSAzMiwKLQkJCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSBIQVNI X0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl1bmNvbW1pdHRlZF9lbnVtX3R5 cGVzID0gaGFzaHNldF9tYWtlX2N4dChPaWQsCisJCQkJCQkJCQkJCSAgIlVuY29tbWl0dGVkIGVu dW0gdHlwZXMiLCAzMiwKKwkJCQkJCQkJCQkJICBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogfQog CiAvKgpAQCAtMjg0LDE1ICsyNzgsOSBAQCBpbml0X3VuY29tbWl0dGVkX2VudW1fdHlwZXModm9p ZCkKIHN0YXRpYyB2b2lkCiBpbml0X3VuY29tbWl0dGVkX2VudW1fdmFsdWVzKHZvaWQpCiB7Ci0J SEFTSENUTAkJaGFzaF9jdGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0J aGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuaGN4dCA9IFRvcFRy YW5zYWN0aW9uQ29udGV4dDsKLQl1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcyA9IGhhc2hfY3JlYXRl KCJVbmNvbW1pdHRlZCBlbnVtIHZhbHVlcyIsCi0JCQkJCQkJCQkJICAzMiwKLQkJCQkJCQkJCQkg ICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NP TlRFWFQpOworCXVuY29tbWl0dGVkX2VudW1fdmFsdWVzID0gaGFzaHNldF9tYWtlX2N4dChPaWQs CisJCQkJCQkJCQkJCSAgICJVbmNvbW1pdHRlZCBlbnVtIHZhbHVlcyIsIDMyLAorCQkJCQkJCQkJ CQkgICBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19pbmhlcml0cy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19pbmhl cml0cy5jCmluZGV4IDRiOTgwMmFhZmNjLi5lMzY0MTk3ODZkNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19pbmhlcml0cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf aW5oZXJpdHMuYwpAQCAtMjU3LDE5ICsyNTcsMTIgQEAgZmluZF9hbGxfaW5oZXJpdG9ycyhPaWQg cGFyZW50cmVsSWQsIExPQ0tNT0RFIGxvY2ttb2RlLCBMaXN0ICoqbnVtcGFyZW50cykKIHsKIAkv KiBoYXNoIHRhYmxlIGZvciBPKDEpIHJlbF9vaWQgLT4gcmVsX251bXBhcmVudHMgY2VsbCBsb29r dXAgKi8KIAlIVEFCCSAgICpzZWVuX3JlbHM7Ci0JSEFTSENUTAkJY3RsOwogCUxpc3QJICAgKnJl bHNfbGlzdCwKIAkJCSAgICpyZWxfbnVtcGFyZW50czsKIAlMaXN0Q2VsbCAgICpsOwogCi0JY3Rs LmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNlZW5SZWxz RW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQlzZWVuX3JlbHMg PSBoYXNoX2NyZWF0ZSgiZmluZF9hbGxfaW5oZXJpdG9ycyB0ZW1wb3JhcnkgdGFibGUiLAotCQkJ CQkJCTMyLCAvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJJmN0bCwKLQkJCQkJ CQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlzZWVuX3JlbHMgPSBo YXNoX21ha2UoU2VlblJlbHNFbnRyeSwgcmVsX2lkLAorCQkJCQkJICAiZmluZF9hbGxfaW5oZXJp dG9ycyB0ZW1wb3JhcnkgdGFibGUiLCAzMik7CiAKIAkvKgogCSAqIFdlIGJ1aWxkIGEgbGlzdCBz dGFydGluZyB3aXRoIHRoZSBnaXZlbiByZWwgYW5kIGFkZGluZyBhbGwgZGlyZWN0IGFuZApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N0b3JhZ2UuYwppbmRleCBlNDQzYTQ5OTNjNS4uZGIzZTA4MzE5YjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3RvcmFnZS5jCkBAIC05MCwxNSArOTAsOSBAQCBBZGRQZW5kaW5nU3luYyhjb25zdCBSZWxGaWxl TG9jYXRvciAqcmxvY2F0b3IpCiAKIAkvKiBjcmVhdGUgdGhlIGhhc2ggaWYgbm90IHlldCAqLwog CWlmICghcGVuZGluZ1N5bmNIYXNoKQotCXsKLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlz aXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQ ZW5kaW5nUmVsU3luYyk7Ci0JCWN0bC5oY3h0ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0OwotCQlw ZW5kaW5nU3luY0hhc2ggPSBoYXNoX2NyZWF0ZSgicGVuZGluZyBzeW5jIGhhc2giLCAxNiwgJmN0 bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7Ci0J fQorCQlwZW5kaW5nU3luY0hhc2ggPSBoYXNoX21ha2VfY3h0KFBlbmRpbmdSZWxTeW5jLCBybG9j YXRvciwKKwkJCQkJCQkJCQkicGVuZGluZyBzeW5jIGhhc2giLCAxNiwKKwkJCQkJCQkJCQlUb3BU cmFuc2FjdGlvbkNvbnRleHQpOwogCiAJcGVuZGluZyA9IGhhc2hfc2VhcmNoKHBlbmRpbmdTeW5j SGFzaCwgcmxvY2F0b3IsIEhBU0hfRU5URVIsICZmb3VuZCk7CiAJQXNzZXJ0KCFmb3VuZCk7CkBA IC02MDAsNyArNTk0LDYgQEAgdm9pZAogU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6 ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogewogCUhUQUIJICAgKnRtcGhhc2g7Ci0JSEFTSENUTAkJ Y3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwogCVBlbmRpbmdSZWxTeW5jICpzeW5jOwogCVBl bmRpbmdSZWxEZWxldGUgKmRlbGV0ZTsKQEAgLTYxMSwxMiArNjA0LDggQEAgU2VyaWFsaXplUGVu ZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogCQlnb3RvIHRlcm1p bmF0ZTsKIAogCS8qIENyZWF0ZSB0ZW1wb3JhcnkgaGFzaCB0byBjb2xsZWN0IGFjdGl2ZSByZWxm aWxlbG9jYXRvcnMgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0J Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0JY3RsLmhjeHQgPSBDdXJy ZW50TWVtb3J5Q29udGV4dDsKLQl0bXBoYXNoID0gaGFzaF9jcmVhdGUoInRtcCByZWxmaWxlbG9j YXRvcnMiLAotCQkJCQkJICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hhc2gpLCAm Y3RsLAotCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl0 bXBoYXNoID0gaGFzaHNldF9tYWtlKFJlbEZpbGVMb2NhdG9yLCAidG1wIHJlbGZpbGVsb2NhdG9y cyIsCisJCQkJCQkgICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hhc2gpKTsKIAog CS8qIGNvbGxlY3QgYWxsIHJsb2NhdG9yIGZyb20gcGVuZGluZyBzeW5jcyAqLwogCWhhc2hfc2Vx X2luaXQoJnNjYW4sIHBlbmRpbmdTeW5jSGFzaCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9hc3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRleCA1Yzlh NTZjM2Q0MC4uMGMyMWY1Mjg0OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fz eW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtNzM3LDIxICs3Mzcs MTUgQEAgaW5pdEdsb2JhbENoYW5uZWxUYWJsZSh2b2lkKQogc3RhdGljIHZvaWQKIGluaXRMb2Nh bENoYW5uZWxUYWJsZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJLyogUXVpY2sg ZXhpdCBpZiB3ZSBhbHJlYWR5IGRpZCB0aGlzICovCiAJaWYgKGxvY2FsQ2hhbm5lbFRhYmxlICE9 IE5VTEwpCiAJCXJldHVybjsKIAogCS8qIEluaXRpYWxpemUgbG9jYWwgaGFzaCB0YWJsZSBmb3Ig dGhpcyBiYWNrZW5kJ3MgbGlzdGVuZWQgY2hhbm5lbHMgKi8KLQloYXNoX2N0bC5rZXlzaXplID0g TkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENoYW5uZWxOYW1lKTsK LQogCWxvY2FsQ2hhbm5lbFRhYmxlID0KLQkJaGFzaF9jcmVhdGUoIkxvY2FsIExpc3RlbiBDaGFu bmVscyIsCi0JCQkJCTY0LAotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyk7CisJCWhhc2hfbWFrZV9jeHQoQ2hhbm5lbE5hbWUsIGNoYW5uZWwsICJMb2NhbCBM aXN0ZW4gQ2hhbm5lbHMiLAorCQkJCQkgIDY0LAorCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwog fQogCiAvKgpAQCAtNzYzLDIwICs3NTcsMTMgQEAgaW5pdExvY2FsQ2hhbm5lbFRhYmxlKHZvaWQp CiBzdGF0aWMgdm9pZAogaW5pdFBlbmRpbmdMaXN0ZW5BY3Rpb25zKHZvaWQpCiB7Ci0JSEFTSENU TAkJaGFzaF9jdGw7Ci0KIAlpZiAocGVuZGluZ0xpc3RlbkFjdGlvbnMgIT0gTlVMTCkKIAkJcmV0 dXJuOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihQZW5kaW5nTGlzdGVuRW50cnkpOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJU cmFuc2FjdGlvbkNvbnRleHQ7Ci0KIAlwZW5kaW5nTGlzdGVuQWN0aW9ucyA9Ci0JCWhhc2hfY3Jl YXRlKCJQZW5kaW5nIExpc3RlbiBBY3Rpb25zIiwKLQkJCQkJbGlzdF9sZW5ndGgocGVuZGluZ0Fj dGlvbnMtPmFjdGlvbnMpLAotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJCWhhc2hfbWFrZV9jeHQoUGVuZGluZ0xpc3RlbkVu dHJ5LCBjaGFubmVsLCAiUGVuZGluZyBMaXN0ZW4gQWN0aW9ucyIsCisJCQkJCSAgbGlzdF9sZW5n dGgocGVuZGluZ0FjdGlvbnMtPmFjdGlvbnMpLAorCQkJCQkgIEN1clRyYW5zYWN0aW9uQ29udGV4 dCk7CiB9CiAKIC8qCkBAIC0zMTcxLDMxICszMTU4LDIxIEBAIEFkZEV2ZW50VG9QZW5kaW5nTm90 aWZpZXMoTm90aWZpY2F0aW9uICpuKQogCWlmIChsaXN0X2xlbmd0aChwZW5kaW5nTm90aWZpZXMt PmV2ZW50cykgPj0gTUlOX0hBU0hBQkxFX05PVElGSUVTICYmCiAJCXBlbmRpbmdOb3RpZmllcy0+ aGFzaHRhYiA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJaGFzaF9jdGw7CiAJCUxpc3RDZWxsICAg Kmw7CiAKIAkJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlICovCi0JCWhhc2hfY3RsLmtleXNpemUg PSBzaXplb2YoTm90aWZpY2F0aW9uICopOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2Yo c3RydWN0IE5vdGlmaWNhdGlvbkhhc2gpOwotCQloYXNoX2N0bC5oYXNoID0gbm90aWZpY2F0aW9u X2hhc2g7Ci0JCWhhc2hfY3RsLm1hdGNoID0gbm90aWZpY2F0aW9uX21hdGNoOwotCQloYXNoX2N0 bC5oY3h0ID0gQ3VyVHJhbnNhY3Rpb25Db250ZXh0OwogCQlwZW5kaW5nTm90aWZpZXMtPmhhc2h0 YWIgPQotCQkJaGFzaF9jcmVhdGUoIlBlbmRpbmcgTm90aWZpZXMiLAotCQkJCQkJMjU2TCwKLQkJ CQkJCSZoYXNoX2N0bCwKLQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NP TVBBUkUgfCBIQVNIX0NPTlRFWFQpOworCQkJaGFzaF9tYWtlX2ZuX2N4dChzdHJ1Y3QgTm90aWZp Y2F0aW9uSGFzaCwgZXZlbnQsCisJCQkJCQkJICJQZW5kaW5nIE5vdGlmaWVzIiwgMjU2LAorCQkJ CQkJCSBub3RpZmljYXRpb25faGFzaCwgbm90aWZpY2F0aW9uX21hdGNoLAorCQkJCQkJCSBDdXJU cmFuc2FjdGlvbkNvbnRleHQpOwogCiAJCS8qIENyZWF0ZSB0aGUgdW5pcXVlIGNoYW5uZWwgbmFt ZSB0YWJsZSAqLwogCQlBc3NlcnQocGVuZGluZ05vdGlmaWVzLT51bmlxdWVDaGFubmVsSGFzaCA9 PSBOVUxMKTsKLQkJaGFzaF9jdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCQloYXNoX2N0bC5l bnRyeXNpemUgPSBzaXplb2YoQ2hhbm5lbE5hbWUpOwotCQloYXNoX2N0bC5oY3h0ID0gQ3VyVHJh bnNhY3Rpb25Db250ZXh0OwogCQlwZW5kaW5nTm90aWZpZXMtPnVuaXF1ZUNoYW5uZWxIYXNoID0K LQkJCWhhc2hfY3JlYXRlKCJQZW5kaW5nIE5vdGlmeSBDaGFubmVsIE5hbWVzIiwKLQkJCQkJCTY0 TCwKLQkJCQkJCSZoYXNoX2N0bCwKLQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhB U0hfQ09OVEVYVCk7CisJCQloYXNoX21ha2VfY3h0KENoYW5uZWxOYW1lLCBjaGFubmVsLCAiUGVu ZGluZyBOb3RpZnkgQ2hhbm5lbCBOYW1lcyIsCisJCQkJCQkgIDY0TCwKKwkJCQkJCSAgQ3VyVHJh bnNhY3Rpb25Db250ZXh0KTsKIAogCQkvKiBJbnNlcnQgYWxsIHRoZSBhbHJlYWR5LWV4aXN0aW5n IGV2ZW50cyAqLwogCQlmb3JlYWNoKGwsIHBlbmRpbmdOb3RpZmllcy0+ZXZlbnRzKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHJlcGFyZS5jCmluZGV4IDg3NmFhZDIxMDBhLi4wYWIwOGNjZWI5YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ByZXBhcmUuYwpAQCAtMzczLDE1ICszNzMsOSBAQCBFdmFsdWF0ZVBhcmFtcyhQYXJzZVN0YXRl ICpwc3RhdGUsIFByZXBhcmVkU3RhdGVtZW50ICpwc3RtdCwgTGlzdCAqcGFyYW1zLAogc3RhdGlj IHZvaWQKIEluaXRRdWVyeUhhc2hUYWJsZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwot Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihQcmVwYXJlZFN0YXRlbWVudCk7Ci0KLQlwcmVwYXJlZF9xdWVyaWVzID0gaGFzaF9j cmVhdGUoIlByZXBhcmVkIFF1ZXJpZXMiLAotCQkJCQkJCQkgICAzMiwKLQkJCQkJCQkJICAgJmhh c2hfY3RsLAotCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCXByZXBhcmVk X3F1ZXJpZXMgPSBoYXNoX21ha2VfY3h0KFByZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCisJ CQkJCQkJCQkgIlByZXBhcmVkIFF1ZXJpZXMiLCAzMiwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250 ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCmluZGV4IDU1MTY2NzY1MGJhLi5h ZjdhMjlkZjFmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCkBAIC0xMTEzLDEzICsxMTEzLDkg QEAgbG9ja19hbmRfb3Blbl9zZXF1ZW5jZShTZXFUYWJsZSBzZXEpCiBzdGF0aWMgdm9pZAogY3Jl YXRlX3NlcV9oYXNodGFibGUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQljdGwua2V5c2l6 ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2VxVGFibGVEYXRhKTsK LQotCXNlcWhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiU2VxdWVuY2UgdmFsdWVzIiwgMTYsICZjdGws Ci0JCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXNlcWhhc2h0YWIgPSBoYXNoX21h a2VfY3h0KFNlcVRhYmxlRGF0YSwgcmVsaWQsCisJCQkJCQkJICAgIlNlcXVlbmNlIHZhbHVlcyIs IDE2LAorCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwppbmRleCAwY2UyZTgxZjljMi4uY2I3ZTAwYWQwM2YgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCkBAIC0yMTkzLDE5ICsyMTkzLDkgQEAgRXhlY3V0ZVRydW5jYXRlR3V0cyhM aXN0ICpleHBsaWNpdF9yZWxzLAogCiAJCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxp emUgaGFzaHRhYmxlIGZvciBmb3JlaWduIHRhYmxlcyAqLwogCQkJaWYgKCFmdF9odGFiKQotCQkJ ewotCQkJCUhBU0hDVEwJCWhjdGw7Ci0KLQkJCQltZW1zZXQoJmhjdGwsIDAsIHNpemVvZihIQVNI Q1RMKSk7Ci0JCQkJaGN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCQkJaGN0bC5lbnRyeXNp emUgPSBzaXplb2YoRm9yZWlnblRydW5jYXRlSW5mbyk7Ci0JCQkJaGN0bC5oY3h0ID0gQ3VycmVu dE1lbW9yeUNvbnRleHQ7Ci0KLQkJCQlmdF9odGFiID0gaGFzaF9jcmVhdGUoIlRSVU5DQVRFIGZv ciBGb3JlaWduIFRhYmxlcyIsCi0JCQkJCQkJCQkgIDMyLAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0 ZW5kICovCi0JCQkJCQkJCQkgICZoY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTIHwgSEFTSF9DT05URVhUKTsKLQkJCX0KKwkJCQlmdF9odGFiID0gaGFzaF9tYWtlKEZvcmVp Z25UcnVuY2F0ZUluZm8sIHNlcnZlcmlkLAorCQkJCQkJCQkJIlRSVU5DQVRFIGZvciBGb3JlaWdu IFRhYmxlcyIsCisJCQkJCQkJCQkzMik7CS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KIAog CQkJLyogRmluZCBvciBjcmVhdGUgY2FjaGVkIGVudHJ5IGZvciB0aGUgZm9yZWlnbiB0YWJsZSAq LwogCQkJZnRfaW5mbyA9IGhhc2hfc2VhcmNoKGZ0X2h0YWIsICZzZXJ2ZXJpZCwgSEFTSF9FTlRF UiwgJmZvdW5kKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggZGZk N2IzM2FhOWIuLmFhOTNiNGYzNjU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYwpAQCAtNTcwMCwxNSArNTcwMCw5IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFi bGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogI2VuZGlmCiAJaWYgKG5yZWxz ID49IE1UX05SRUxTX0hBU0gpCiAJewotCQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCQloYXNoX2N0 bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihN VFRhcmdldFJlbExvb2t1cCk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4 dDsKIAkJbXRzdGF0ZS0+bXRfcmVzdWx0T2lkSGFzaCA9Ci0JCQloYXNoX2NyZWF0ZSgiTW9kaWZ5 VGFibGUgdGFyZ2V0IGhhc2giLAotCQkJCQkJbnJlbHMsICZoYXNoX2N0bCwKLQkJCQkJCUhBU0hf RUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQkJaGFzaF9tYWtlKE1UVGFyZ2V0 UmVsTG9va3VwLCByZWxhdGlvbk9pZCwKKwkJCQkJICAiTW9kaWZ5VGFibGUgdGFyZ2V0IGhhc2gi LCBucmVscyk7CiAJCWZvciAoaSA9IDA7IGkgPCBucmVsczsgaSsrKQogCQl7CiAJCQlPaWQJCQlo YXNoa2V5OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jCmluZGV4IDBkNDNkNjZjMWNkLi5iZjBiOTRkM2M3 MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL2V4dGVuc2libGUuYwpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAi bm9kZXMvZXh0ZW5zaWJsZS5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgogCiBzdGF0aWMgSFRBQiAqZXh0ZW5zaWJsZV9ub2RlX21ldGhv ZHMgPSBOVUxMOwogc3RhdGljIEhUQUIgKmN1c3RvbV9zY2FuX21ldGhvZHMgPSBOVUxMOwpAQCAt NDUsMTMgKzQ2LDggQEAgUmVnaXN0ZXJFeHRlbnNpYmxlTm9kZUVudHJ5KEhUQUIgKipwX2h0YWJs ZSwgY29uc3QgY2hhciAqaHRhYmxlX2xhYmVsLAogCiAJaWYgKCpwX2h0YWJsZSA9PSBOVUxMKQog CXsKLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gRVhUTk9ERU5BTUVfTUFYX0xF TjsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihFeHRlbnNpYmxlTm9kZUVudHJ5KTsKLQotCQkq cF9odGFibGUgPSBoYXNoX2NyZWF0ZShodGFibGVfbGFiZWwsIDEwMCwgJmN0bCwKLQkJCQkJCQkJ SEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkJKnBfaHRhYmxlID0gaGFzaF9tYWtlX2N4dChF eHRlbnNpYmxlTm9kZUVudHJ5LCBleHRub2RlbmFtZSwKKwkJCQkJCQkJICBodGFibGVfbGFiZWws IDEwMCwgVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJaWYgKHN0cmxlbihleHRub2RlbmFtZSkg Pj0gRVhUTk9ERU5BTUVfTUFYX0xFTikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwpp bmRleCA3YzRiZTE3NDg2OS4uODBmYzg2N2RhNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9w bGFuY2F0LmMKQEAgLTcwMiwxOSArNzAyLDEwIEBAIGdldF9yZWxhdGlvbl9ub3RudWxsYXR0cyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsYXRpb24gcmVsYXRpb24pCiAJLyogY3JlYXRlIHRoZSBoYXNo IHRhYmxlIGlmIGl0IGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0ICovCiAJaWYgKHJvb3QtPmdsb2It PnJlbF9ub3RudWxsYXR0c19oYXNoID09IE5VTEwpCiAJewotCQlIVEFCCSAgICpoYXNodGFiOwot CQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7 Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihOb3RudWxsSGFzaEVudHJ5KTsKLQkJaGFz aF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0JCWhhc2h0YWIgPSBoYXNoX2Ny ZWF0ZSgiUmVsYXRpb24gTk9UIE5VTEwgYXR0bnVtcyIsCi0JCQkJCQkJICA2NEwsCS8qIGFyYml0 cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkgIEhBU0hf RUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwotCi0JCXJvb3QtPmdsb2ItPnJlbF9u b3RudWxsYXR0c19oYXNoID0gaGFzaHRhYjsKKwkJcm9vdC0+Z2xvYi0+cmVsX25vdG51bGxhdHRz X2hhc2ggPQorCQkJaGFzaF9tYWtlKE5vdG51bGxIYXNoRW50cnksIHJlbGlkLAorCQkJCQkgICJS ZWxhdGlvbiBOT1QgTlVMTCBhdHRudW1zIiwKKwkJCQkJICA2NEwpOwkJLyogYXJiaXRyYXJ5IGlu aXRpYWwgc2l6ZSAqLwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wcmVkdGVzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3Qu YwppbmRleCA2OTBhMjNkNjE5YS4uMGNmNzczOTRhYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcHJlZHRlc3QuYwpAQCAtMjExOSwxMiArMjExOSw5IEBAIGxvb2t1cF9wcm9vZl9jYWNoZShP aWQgcHJlZF9vcCwgT2lkIGNsYXVzZV9vcCwgYm9vbCByZWZ1dGVfaXQpCiAJaWYgKE9wclByb29m Q2FjaGVIYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxp emUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0g c2l6ZW9mKE9wclByb29mQ2FjaGVLZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKE9wclBy b29mQ2FjaGVFbnRyeSk7Ci0JCU9wclByb29mQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIkJ0cmVl IHByb29mIGxvb2t1cCBjYWNoZSIsIDI1NiwKLQkJCQkJCQkJCQkmY3RsLCBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTKTsKKwkJT3ByUHJvb2ZDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KE9wclByb29m Q2FjaGVFbnRyeSwga2V5LAorCQkJCQkJCQkJCSAgIkJ0cmVlIHByb29mIGxvb2t1cCBjYWNoZSIs IDI1NiwKKwkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFycmFuZ2UgdG8g Zmx1c2ggY2FjaGUgb24gcGdfYW1vcCBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKEFNT1BPUElELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcmVsbm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4 IDkxYmNkYTM0YTM3Li5jNjg2NDU4Njk2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5v ZGUuYwpAQCAtNjE2LDE5ICs2MTYsMTIgQEAgc3RhdGljIHZvaWQKIGJ1aWxkX2pvaW5fcmVsX2hh c2goUGxhbm5lckluZm8gKnJvb3QpCiB7CiAJSFRBQgkgICAqaGFzaHRhYjsKLQlIQVNIQ1RMCQlo YXNoX2N0bDsKIAlMaXN0Q2VsbCAgICpsOwogCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlICov Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihSZWxpZHMpOwotCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihKb2luSGFzaEVudHJ5KTsKLQloYXNoX2N0bC5oYXNoID0gYml0bWFwX2hhc2g7 Ci0JaGFzaF9jdGwubWF0Y2ggPSBiaXRtYXBfbWF0Y2g7Ci0JaGFzaF9jdGwuaGN4dCA9IEN1cnJl bnRNZW1vcnlDb250ZXh0OwotCWhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiSm9pblJlbEhhc2hUYWJs ZSIsCi0JCQkJCQkgIDI1NkwsCi0JCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCSAgSEFTSF9FTEVN IHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJaGFzaHRh YiA9IGhhc2hfbWFrZV9mbihKb2luSGFzaEVudHJ5LCBqb2luX3JlbGlkcywKKwkJCQkJCSAgICJK b2luUmVsSGFzaFRhYmxlIiwgMjU2LAorCQkJCQkJICAgYml0bWFwX2hhc2gsIGJpdG1hcF9tYXRj aCk7CiAKIAkvKiBJbnNlcnQgYWxsIHRoZSBhbHJlYWR5LWV4aXN0aW5nIGpvaW5yZWxzICovCiAJ Zm9yZWFjaChsLCByb290LT5qb2luX3JlbF9saXN0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX29wZXIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKaW5k ZXggMmYyMThjMWFiOGIuLmQxZGQzNDJkOTQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2Vfb3Blci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKQEAg LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRp bHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvdHlwY2FjaGUuaCIKIApAQCAtMTAzMCwxMiArMTAzMSw5IEBAIGZpbmRfb3Blcl9jYWNoZV9l bnRyeShPcHJDYWNoZUtleSAqa2V5KQogCWlmIChPcHJDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJ CS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlI QVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT3ByQ2FjaGVLZXkpOwotCQlj dGwuZW50cnlzaXplID0gc2l6ZW9mKE9wckNhY2hlRW50cnkpOwotCQlPcHJDYWNoZUhhc2ggPSBo YXNoX2NyZWF0ZSgiT3BlcmF0b3IgbG9va3VwIGNhY2hlIiwgMjU2LAotCQkJCQkJCQkgICAmY3Rs LCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJT3ByQ2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4 dChPcHJDYWNoZUVudHJ5LCBrZXksCisJCQkJCQkJCQkgIk9wZXJhdG9yIGxvb2t1cCBjYWNoZSIs IDI1NiwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBcnJhbmdlIHRvIGZs dXNoIGNhY2hlIG9uIHBnX29wZXJhdG9yIGFuZCBwZ19jYXN0IGNoYW5nZXMgKi8KIAkJQ2FjaGVS ZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soT1BFUk5BTUVOU1AsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0ZGVzYy5jCmluZGV4IGMzZDI3NWY4NzI2Li5kYjI2ZTRhODJiNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0 aW9uaW5nL3BhcnRkZXNjLmMKQEAgLTQyNCwxNyArNDI0LDEyIEBAIENyZWF0ZVBhcnRpdGlvbkRp cmVjdG9yeShNZW1vcnlDb250ZXh0IG1jeHQsIGJvb2wgb21pdF9kZXRhY2hlZCkKIHsKIAlNZW1v cnlDb250ZXh0IG9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWN4dCk7CiAJUGFy dGl0aW9uRGlyZWN0b3J5IHBkaXI7Ci0JSEFTSENUTAkJY3RsOwogCiAJcGRpciA9IHBhbGxvY19v YmplY3QoUGFydGl0aW9uRGlyZWN0b3J5RGF0YSk7CiAJcGRpci0+cGRpcl9tY3h0ID0gbWN4dDsK IAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQ YXJ0aXRpb25EaXJlY3RvcnlFbnRyeSk7Ci0JY3RsLmhjeHQgPSBtY3h0OwotCi0JcGRpci0+cGRp cl9oYXNoID0gaGFzaF9jcmVhdGUoInBhcnRpdGlvbiBkaXJlY3RvcnkiLCAyNTYsICZjdGwsCi0J CQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJcGRpci0+ cGRpcl9oYXNoID0gaGFzaF9tYWtlX2N4dChQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSwgcmVsb2lk LAorCQkJCQkJCQkJInBhcnRpdGlvbiBkaXJlY3RvcnkiLCAyNTYsIG1jeHQpOwogCXBkaXItPm9t aXRfZGV0YWNoZWQgPSBvbWl0X2RldGFjaGVkOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCA2Njk0ZjQ4NTIx Ni4uNGNiYjdlYmYxOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC05MzQs NyArOTM0LDYgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAlNZW1vcnlDb250 ZXh0IG5ld2N4dDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlNZW1vcnlDb250ZXh0IHRtcGN4 dDsKLQlIQVNIQ1RMCQloY3RsOwogCWludAkJCXNjb3JlOwogCWludAkJCW5lbGVtczsKIAlIVEFC CSAgICpkYmhhc2g7CkBAIC05NjQsMTIgKzk2MywxMCBAQCByZWJ1aWxkX2RhdGFiYXNlX2xpc3Qo T2lkIG5ld2RiKQogCSAqIHNjb3JlLCBhbmQgZmluYWxseSBwdXQgdGhlIGFycmF5IGVsZW1lbnRz IGludG8gdGhlIG5ldyBkb3VibHkgbGlua2VkCiAJICogbGlzdC4KIAkgKi8KLQloY3RsLmtleXNp emUgPSBzaXplb2YoT2lkKTsKLQloY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihhdmxfZGJhc2UpOwot CWhjdGwuaGN4dCA9IHRtcGN4dDsKLQlkYmhhc2ggPSBoYXNoX2NyZWF0ZSgiYXV0b3ZhY3V1bSBk YiBoYXNoIiwgMjAsICZoY3RsLAkvKiBtYWdpYyBudW1iZXIgaGVyZQotCQkJCQkJCQkJCQkJCQkJ ICogRklYTUUgKi8KLQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKKwlkYmhhc2ggPSBoYXNoX21ha2VfY3h0KGF2bF9kYmFzZSwgYWRsX2RhdGlkLAorCQkJCQkJ ICAgImF1dG92YWN1dW0gZGIgaGFzaCIsCisJCQkJCQkgICAyMCwJLyogbWFnaWMgbnVtYmVyIGhl cmUgRklYTUUgKi8KKwkJCQkJCSAgIHRtcGN4dCk7CiAKIAkvKiBzdGFydCBieSBpbnNlcnRpbmcg dGhlIG5ldyBkYXRhYmFzZSAqLwogCXNjb3JlID0gMDsKQEAgLTE5MjQsNyArMTkyMSw2IEBAIGRv X2F1dG92YWN1dW0odm9pZCkKIAlGb3JtX3BnX2RhdGFiYXNlIGRiRm9ybTsKIAlMaXN0CSAgICp0 YWJsZXNfdG9fcHJvY2VzcyA9IE5JTDsKIAlMaXN0CSAgICpvcnBoYW5fb2lkcyA9IE5JTDsKLQlI QVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqdGFibGVfdG9hc3RfbWFwOwogCUxpc3RDZWxsICAgKnZv bGF0aWxlIGNlbGw7CiAJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5OwpAQCAtMTk5Nywx MyArMTk5Myw5IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAlwZ19jbGFzc19kZXNjID0gQ3JlYXRl VHVwbGVEZXNjQ29weShSZWxhdGlvbkdldERlc2NyKGNsYXNzUmVsKSk7CiAKIAkvKiBjcmVhdGUg aGFzaCB0YWJsZSBmb3IgdG9hc3QgPC0+IG1haW4gcmVsaWQgbWFwcGluZyAqLwotCWN0bC5rZXlz aXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihhdl9yZWxhdGlvbik7 Ci0KLQl0YWJsZV90b2FzdF9tYXAgPSBoYXNoX2NyZWF0ZSgiVE9BU1QgdG8gbWFpbiByZWxpZCBt YXAiLAotCQkJCQkJCQkgIDEwMCwKLQkJCQkJCQkJICAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMpOworCXRhYmxlX3RvYXN0X21hcCA9IGhhc2hfbWFrZV9jeHQoYXZfcmVs YXRpb24sIGFyX3RvYXN0cmVsaWQsCisJCQkJCQkJCQkiVE9BU1QgdG8gbWFpbiByZWxpZCBtYXAi LCAxMDAsCisJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qCiAJICogU2NhbiBwZ19j bGFzcyB0byBkZXRlcm1pbmUgd2hpY2ggdGFibGVzIHRvIHZhY3V1bS4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IDNjOTgyYzZmZmFjLi5hNGFmNDdiMDg2NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC0xMzA5LDcgKzEzMDksNiBAQCBDb21w YWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVlKHZvaWQpCiAJaW50CQkJbnVtX3JlcXVlc3RzOwog CWludAkJCXJlYWRfaWR4LAogCQkJCXdyaXRlX2lkeDsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkg ICAqaHRhYjsKIAlib29sCSAgICpza2lwX3Nsb3Q7CiAKQEAgLTEzMjksMTQgKzEzMjgsOSBAQCBD b21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVlKHZvaWQpCiAJaGVhZCA9IENoZWNrcG9pbnRl clNobWVtLT5oZWFkOwogCiAJLyogSW5pdGlhbGl6ZSB0ZW1wb3JhcnkgaGFzaCB0YWJsZSAqLwot CWN0bC5rZXlzaXplID0gc2l6ZW9mKENoZWNrcG9pbnRlclJlcXVlc3QpOwotCWN0bC5lbnRyeXNp emUgPSBzaXplb2Yoc3RydWN0IENoZWNrcG9pbnRlclNsb3RNYXBwaW5nKTsKLQljdGwuaGN4dCA9 IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0JaHRhYiA9IGhhc2hfY3JlYXRlKCJDb21wYWN0Q2hl Y2twb2ludGVyUmVxdWVzdFF1ZXVlIiwKLQkJCQkJICAgQ2hlY2twb2ludGVyU2htZW0tPm51bV9y ZXF1ZXN0cywKLQkJCQkJICAgJmN0bCwKLQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJaHRhYiA9IGhhc2hfbWFrZShzdHJ1Y3QgQ2hlY2twb2ludGVyU2xv dE1hcHBpbmcsIHJlcXVlc3QsCisJCQkJCSAiQ29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1 ZSIsCisJCQkJCSBDaGVja3BvaW50ZXJTaG1lbS0+bnVtX3JlcXVlc3RzKTsKIAogCS8qCiAJICog VGhlIGJhc2ljIGlkZWEgaGVyZSBpcyB0aGF0IGEgcmVxdWVzdCBjYW4gYmUgc2tpcHBlZCBpZiBp dCdzIGZvbGxvd2VkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGQ3ODY5M2ZmYThlLi41MDc3NTdkYjdlYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMKQEAgLTQ4NywxNiArNDg3LDkgQEAgcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0 aW9uSWQgeGlkKQogCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgc3RhdGUgaGFzaHRhYmxlLiAqLwogCWlmICghUGFyYWxsZWxBcHBseVR4bkhh c2gpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwp KTsKLQkJY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7Ci0JCWN0bC5lbnRyeXNp emUgPSBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5KTsKLQkJY3RsLmhjeHQgPSBBcHBs eUNvbnRleHQ7Ci0KLQkJUGFyYWxsZWxBcHBseVR4bkhhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2giLAotCQkJCQkJCQkJCSAg IDE2LCAmY3RsLAotCQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NP TlRFWFQpOworCQlQYXJhbGxlbEFwcGx5VHhuSGFzaCA9IGhhc2hfbWFrZV9jeHQoUGFyYWxsZWxB cHBseVdvcmtlckVudHJ5LCB4aWQsCisJCQkJCQkJCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBw YXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2giLAorCQkJCQkJCQkJCQkgMTYsIEFwcGx5Q29udGV4 dCk7CiAJfQogCiAJLyogQ3JlYXRlIGFuIGVudHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0 aW9uLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxh dGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4 IDBiMWQ4MGI1YjBmLi5mY2YyOTVmMWRmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVsYXRpb24uYwpAQCAtMTA1LDggKzEwNSw2IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2lu dmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxy ZXBfcmVsbWFwX2luaXQodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAlpZiAoIUxvZ2ljYWxS ZXBSZWxNYXBDb250ZXh0KQogCQlMb2dpY2FsUmVwUmVsTWFwQ29udGV4dCA9CiAJCQlBbGxvY1Nl dENvbnRleHRDcmVhdGUoQ2FjaGVNZW1vcnlDb250ZXh0LApAQCAtMTE0LDEyICsxMTIsOSBAQCBs b2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQpCiAJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9T SVpFUyk7CiAKIAkvKiBJbml0aWFsaXplIHRoZSByZWxhdGlvbiBoYXNoIHRhYmxlLiAqLwotCWN0 bC5rZXlzaXplID0gc2l6ZW9mKExvZ2ljYWxSZXBSZWxJZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihMb2dpY2FsUmVwUmVsTWFwRW50cnkpOwotCWN0bC5oY3h0ID0gTG9naWNhbFJlcFJlbE1h cENvbnRleHQ7Ci0KLQlMb2dpY2FsUmVwUmVsTWFwID0gaGFzaF9jcmVhdGUoImxvZ2ljYWxyZXAg cmVsYXRpb24gbWFwIGNhY2hlIiwgMTI4LCAmY3RsLAotCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlMb2dpY2FsUmVwUmVsTWFwID0gaGFzaF9tYWtl X2N4dChMb2dpY2FsUmVwUmVsTWFwRW50cnksIHJlbW90ZXJlbC5yZW1vdGVpZCwKKwkJCQkJCQkJ CSAibG9naWNhbHJlcCByZWxhdGlvbiBtYXAgY2FjaGUiLCAxMjgsCisJCQkJCQkJCQkgTG9naWNh bFJlcFJlbE1hcENvbnRleHQpOwogCiAJLyogV2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMu ICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2sobG9naWNhbHJlcF9yZWxtYXBfaW52 YWxpZGF0ZV9jYiwKQEAgLTYxMSw4ICs2MDYsNiBAQCBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRf cmVsbWFwKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKQogc3RhdGljIHZvaWQKIGxvZ2lj YWxyZXBfcGFydG1hcF9pbml0KHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJaWYgKCFMb2dp Y2FsUmVwUGFydE1hcENvbnRleHQpCiAJCUxvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4dCA9CiAJCQlB bGxvY1NldENvbnRleHRDcmVhdGUoQ2FjaGVNZW1vcnlDb250ZXh0LApAQCAtNjIwLDEyICs2MTMs OSBAQCBsb2dpY2FscmVwX3BhcnRtYXBfaW5pdCh2b2lkKQogCQkJCQkJCQkgIEFMTE9DU0VUX0RF RkFVTFRfU0laRVMpOwogCiAJLyogSW5pdGlhbGl6ZSB0aGUgcmVsYXRpb24gaGFzaCB0YWJsZS4g Ki8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwkvKiBwYXJ0aXRpb24gT0lEICovCi0JY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihMb2dpY2FsUmVwUGFydE1hcEVudHJ5KTsKLQljdGwuaGN4dCA9 IExvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4dDsKLQotCUxvZ2ljYWxSZXBQYXJ0TWFwID0gaGFzaF9j cmVhdGUoImxvZ2ljYWxyZXAgcGFydGl0aW9uIG1hcCBjYWNoZSIsIDY0LCAmY3RsLAotCQkJCQkJ CQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJTG9naWNhbFJlcFBh cnRNYXAgPSBoYXNoX21ha2VfY3h0KExvZ2ljYWxSZXBQYXJ0TWFwRW50cnksIHBhcnRvaWQsCisJ CQkJCQkJCQkgICJsb2dpY2FscmVwIHBhcnRpdGlvbiBtYXAgY2FjaGUiLCA2NCwKKwkJCQkJCQkJ CSAgTG9naWNhbFJlcFBhcnRNYXBDb250ZXh0KTsKIAogCS8qIFdhdGNoIGZvciBpbnZhbGlkYXRp b24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxyZXBf cGFydG1hcF9pbnZhbGlkYXRlX2NiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCA2ODJkMTNjOWYyMi4uOWZkYjVkNGQxNTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0z MjUsNyArMzI1LDYgQEAgUmVvcmRlckJ1ZmZlciAqCiBSZW9yZGVyQnVmZmVyQWxsb2NhdGUodm9p ZCkKIHsKIAlSZW9yZGVyQnVmZmVyICpidWZmZXI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJTWVt b3J5Q29udGV4dCBuZXdfY3R4OwogCiAJQXNzZXJ0KE15UmVwbGljYXRpb25TbG90ICE9IE5VTEwp OwpAQCAtMzM4LDggKzMzNyw2IEBAIFJlb3JkZXJCdWZmZXJBbGxvY2F0ZSh2b2lkKQogCWJ1ZmZl ciA9CiAJCShSZW9yZGVyQnVmZmVyICopIE1lbW9yeUNvbnRleHRBbGxvYyhuZXdfY3R4LCBzaXpl b2YoUmVvcmRlckJ1ZmZlcikpOwogCi0JbWVtc2V0KCZoYXNoX2N0bCwgMCwgc2l6ZW9mKGhhc2hf Y3RsKSk7Ci0KIAlidWZmZXItPmNvbnRleHQgPSBuZXdfY3R4OwogCiAJYnVmZmVyLT5jaGFuZ2Vf Y29udGV4dCA9IFNsYWJDb250ZXh0Q3JlYXRlKG5ld19jdHgsCkBAIC0zNjgsMTIgKzM2NSw4IEBA IFJlb3JkZXJCdWZmZXJBbGxvY2F0ZSh2b2lkKQogCQkJCQkJCQkJCQkJICBTTEFCX0RFRkFVTFRf QkxPQ0tfU0laRSwKIAkJCQkJCQkJCQkJCSAgU0xBQl9ERUZBVUxUX0JMT0NLX1NJWkUpOwogCi0J aGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKLQloYXNoX2N0bC5lbnRy eXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclRYTkJ5SWRFbnQpOwotCWhhc2hfY3RsLmhjeHQg PSBidWZmZXItPmNvbnRleHQ7Ci0KLQlidWZmZXItPmJ5X3R4biA9IGhhc2hfY3JlYXRlKCJSZW9y ZGVyQnVmZmVyQnlYaWQiLCAxMDAwLCAmaGFzaF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlidWZmZXItPmJ5X3R4biA9IGhhc2hfbWFrZV9j eHQoUmVvcmRlckJ1ZmZlclRYTkJ5SWRFbnQsIHhpZCwKKwkJCQkJCQkJICAgIlJlb3JkZXJCdWZm ZXJCeVhpZCIsIDEwMDAsIGJ1ZmZlci0+Y29udGV4dCk7CiAKIAlidWZmZXItPmJ5X3R4bl9sYXN0 X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCWJ1ZmZlci0+YnlfdHhuX2xhc3RfdHhuID0g TlVMTDsKQEAgLTE4MzcsMjIgKzE4MzAsMTcgQEAgc3RhdGljIHZvaWQKIFJlb3JkZXJCdWZmZXJC dWlsZFR1cGxlQ2lkSGFzaChSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu KQogewogCWRsaXN0X2l0ZXIJaXRlcjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAogCWlmICghcmJ0 eG5faGFzX2NhdGFsb2dfY2hhbmdlcyh0eG4pIHx8IGRsaXN0X2lzX2VtcHR5KCZ0eG4tPnR1cGxl Y2lkcykpCiAJCXJldHVybjsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUmVvcmRlckJ1 ZmZlclR1cGxlQ2lkS2V5KTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1 ZmZlclR1cGxlQ2lkRW50KTsKLQloYXNoX2N0bC5oY3h0ID0gcmItPmNvbnRleHQ7Ci0KIAkvKgog CSAqIGNyZWF0ZSB0aGUgaGFzaCB3aXRoIHRoZSBleGFjdCBudW1iZXIgb2YgdG8tYmUtc3RvcmVk IHR1cGxlY2lkcyBmcm9tCiAJICogdGhlIHN0YXJ0CiAJICovCiAJdHhuLT50dXBsZWNpZF9oYXNo ID0KLQkJaGFzaF9jcmVhdGUoIlJlb3JkZXJCdWZmZXJUdXBsZUNpZCIsIHR4bi0+bnR1cGxlY2lk cywgJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKKwkJaGFzaF9tYWtlX2N4dChSZW9yZGVyQnVmZmVyVHVwbGVDaWRFbnQsIGtleSwKKwkJCQkJ ICAiUmVvcmRlckJ1ZmZlclR1cGxlQ2lkIiwgdHhuLT5udHVwbGVjaWRzLCByYi0+Y29udGV4dCk7 CiAKIAlkbGlzdF9mb3JlYWNoKGl0ZXIsICZ0eG4tPnR1cGxlY2lkcykKIAl7CkBAIC00OTcyLDE1 ICs0OTYwLDEwIEBAIFN0YXJ0dXBSZW9yZGVyQnVmZmVyKHZvaWQpCiBzdGF0aWMgdm9pZAogUmVv cmRlckJ1ZmZlclRvYXN0SW5pdEhhc2goUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJU WE4gKnR4bikKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQogCUFzc2VydCh0eG4tPnRvYXN0X2hh c2ggPT0gTlVMTCk7CiAKLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9j dGwuZW50cnlzaXplID0gc2l6ZW9mKFJlb3JkZXJCdWZmZXJUb2FzdEVudCk7Ci0JaGFzaF9jdGwu aGN4dCA9IHJiLT5jb250ZXh0OwotCXR4bi0+dG9hc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJSZW9y ZGVyQnVmZmVyVG9hc3RIYXNoIiwgNSwgJmhhc2hfY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXR4bi0+dG9hc3RfaGFzaCA9IGhhc2hfbWFr ZV9jeHQoUmVvcmRlckJ1ZmZlclRvYXN0RW50LCBjaHVua19pZCwKKwkJCQkJCQkJCSJSZW9yZGVy QnVmZmVyVG9hc3RIYXNoIiwgNSwgcmItPmNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggZjQ5YTQ4NTJlY2IuLmE4M2U1 MDlmMjAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK QEAgLTExOCw2ICsxMTgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUgInV0 aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgpAQCAtMzkwLDEyICsz OTEsOSBAQCBQcm9jZXNzU3luY2luZ1RhYmxlc0ZvckFwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9s c24pCiAJICovCiAJaWYgKHRhYmxlX3N0YXRlc19ub3RfcmVhZHkgIT0gTklMICYmICFsYXN0X3N0 YXJ0X3RpbWVzKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9m KE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yoc3RydWN0IHRhYmxlc3luY19zdGFydF90 aW1lX21hcHBpbmcpOwotCQlsYXN0X3N0YXJ0X3RpbWVzID0gaGFzaF9jcmVhdGUoIkxvZ2ljYWwg cmVwbGljYXRpb24gdGFibGUgc3luYyB3b3JrZXIgc3RhcnQgdGltZXMiLAotCQkJCQkJCQkJICAg MjU2LCAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJbGFzdF9zdGFydF90aW1lcyA9 IGhhc2hfbWFrZV9jeHQoc3RydWN0IHRhYmxlc3luY19zdGFydF90aW1lX21hcHBpbmcsIHJlbGlk LAorCQkJCQkJCQkJCSAiTG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jIHdvcmtlciBzdGFy dCB0aW1lcyIsCisJCQkJCQkJCQkJIDI1NiwgVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDRlY2Zj YmZmN2FiLi42YmUyYWUwOTBjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jCkBAIC0xOTc0LDcgKzE5NzQsNiBAQCBwZ291dHB1dF9zdHJlYW1fcHJlcGFy ZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogc3RhdGljIHZvaWQKIGluaXRfcmVs X3N5bmNfY2FjaGUoTWVtb3J5Q29udGV4dCBjYWNoZWN0eCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJ c3RhdGljIGJvb2wgcmVsYXRpb25fY2FsbGJhY2tzX3JlZ2lzdGVyZWQgPSBmYWxzZTsKIAogCS8q IE5vdGhpbmcgdG8gZG8gaWYgaGFzaCB0YWJsZSBhbHJlYWR5IGV4aXN0cyAqLwpAQCAtMTk4Miwx MyArMTk4MSw5IEBAIGluaXRfcmVsX3N5bmNfY2FjaGUoTWVtb3J5Q29udGV4dCBjYWNoZWN0eCkK IAkJcmV0dXJuOwogCiAJLyogTWFrZSBhIG5ldyBoYXNoIHRhYmxlIGZvciB0aGUgY2FjaGUgKi8K LQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVs YXRpb25TeW5jRW50cnkpOwotCWN0bC5oY3h0ID0gY2FjaGVjdHg7Ci0KLQlSZWxhdGlvblN5bmND YWNoZSA9IGhhc2hfY3JlYXRlKCJsb2dpY2FsIHJlcGxpY2F0aW9uIG91dHB1dCByZWxhdGlvbiBj YWNoZSIsCi0JCQkJCQkJCQkxMjgsICZjdGwsCi0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0NP TlRFWFQgfCBIQVNIX0JMT0JTKTsKKwlSZWxhdGlvblN5bmNDYWNoZSA9IGhhc2hfbWFrZV9jeHQo UmVsYXRpb25TeW5jRW50cnksIHJlbGlkLAorCQkJCQkJCQkJICAibG9naWNhbCByZXBsaWNhdGlv biBvdXRwdXQgcmVsYXRpb24gY2FjaGUiLAorCQkJCQkJCQkJICAxMjgsIGNhY2hlY3R4KTsKIAog CUFzc2VydChSZWxhdGlvblN5bmNDYWNoZSAhPSBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZfdGFibGUuYwppbmRleCAyM2Q4NWZkMzJlMi4uOTU2NTM5NDRhOWQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJsZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJsZS5jCkBAIC01MCwxOSArNTAsMTYgQEAgQnVmVGFi bGVTaG1lbVNpemUoaW50IHNpemUpCiB2b2lkCiBJbml0QnVmVGFibGUoaW50IHNpemUpCiB7Ci0J SEFTSENUTAkJaW5mbzsKKwlIQVNIT1BUUwlvcHRzID0gezB9OwogCiAJLyogYXNzdW1lIG5vIGxv Y2tpbmcgaXMgbmVlZGVkIHlldCAqLwogCiAJLyogQnVmZmVyVGFnIG1hcHMgdG8gQnVmZmVyICov Ci0JaW5mby5rZXlzaXplID0gc2l6ZW9mKEJ1ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNpemUgPSBz aXplb2YoQnVmZmVyTG9va3VwRW50KTsKLQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0JVRkZF Ul9QQVJUSVRJT05TOwotCi0JU2hhcmVkQnVmSGFzaCA9IFNobWVtSW5pdEhhc2goIlNoYXJlZCBC dWZmZXIgTG9va3VwIFRhYmxlIiwKLQkJCQkJCQkJICBzaXplLCBzaXplLAotCQkJCQkJCQkgICZp bmZvLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTiB8 IEhBU0hfRklYRURfU0laRSk7CisJb3B0cy5udW1fcGFydGl0aW9ucyA9IE5VTV9CVUZGRVJfUEFS VElUSU9OUzsKKwlvcHRzLmZpeGVkX3NpemUgPSB0cnVlOworCVNoYXJlZEJ1Zkhhc2ggPSBzaG1l bV9oYXNoX21ha2VfZXh0KEJ1ZmZlckxvb2t1cEVudCwga2V5LAorCQkJCQkJCQkJCSJTaGFyZWQg QnVmZmVyIExvb2t1cCBUYWJsZSIsCisJCQkJCQkJCQkJc2l6ZSwgc2l6ZSwgJm9wdHMpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKaW5kZXggMzk2ZGE4NGIyNWMu LjZmNDAxZTk2NTZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2Nh bGJ1Zi5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKQEAgLTc0 NCw3ICs3NDQsNiBAQCBzdGF0aWMgdm9pZAogSW5pdExvY2FsQnVmZmVycyh2b2lkKQogewogCWlu dAkJCW5idWZzID0gbnVtX3RlbXBfYnVmZmVyczsKLQlIQVNIQ1RMCQlpbmZvOwogCWludAkJCWk7 CiAKIAkvKgpAQCAtNzk1LDEzICs3OTQsOSBAQCBJbml0TG9jYWxCdWZmZXJzKHZvaWQpCiAJfQog CiAJLyogQ3JlYXRlIHRoZSBsb29rdXAgaGFzaCB0YWJsZSAqLwotCWluZm8ua2V5c2l6ZSA9IHNp emVvZihCdWZmZXJUYWcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExvY2FsQnVmZmVyTG9v a3VwRW50KTsKLQotCUxvY2FsQnVmSGFzaCA9IGhhc2hfY3JlYXRlKCJMb2NhbCBCdWZmZXIgTG9v a3VwIFRhYmxlIiwKLQkJCQkJCQkgICBuYnVmcywKLQkJCQkJCQkgICAmaW5mbywKLQkJCQkJCQkg ICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlMb2NhbEJ1Zkhhc2ggPSBoYXNoX21ha2VfY3h0 KExvY2FsQnVmZmVyTG9va3VwRW50LCBrZXksCisJCQkJCQkJCSAiTG9jYWwgQnVmZmVyIExvb2t1 cCBUYWJsZSIsIG5idWZzLAorCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAlpZiAoIUxv Y2FsQnVmSGFzaCkKIAkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBpbml0aWFsaXplIGxvY2FsIGJ1 ZmZlciBoYXNoIHRhYmxlIik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUv cmVpbml0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvcmVpbml0LmMKaW5kZXggMjVmYTIx NTEzMDkuLjI2ZTgxMGU2YjUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUv cmVpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL3JlaW5pdC5jCkBAIC0xNzUs NyArMTc1LDYgQEAgUmVzZXRVbmxvZ2dlZFJlbGF0aW9uc0luRGJzcGFjZURpcihjb25zdCBjaGFy ICpkYnNwYWNlZGlybmFtZSwgaW50IG9wKQogCWlmICgob3AgJiBVTkxPR0dFRF9SRUxBVElPTl9D TEVBTlVQKSAhPSAwKQogCXsKIAkJSFRBQgkgICAqaGFzaDsKLQkJSEFTSENUTAkJY3RsOwogCiAJ CS8qCiAJCSAqIEl0J3MgcG9zc2libGUgdGhhdCBzb21lb25lIGNvdWxkIGNyZWF0ZSBhIHRvbiBv ZiB1bmxvZ2dlZCByZWxhdGlvbnMKQEAgLTE4NCwxMSArMTgzLDggQEAgUmVzZXRVbmxvZ2dlZFJl bGF0aW9uc0luRGJzcGFjZURpcihjb25zdCBjaGFyICpkYnNwYWNlZGlybmFtZSwgaW50IG9wKQog CQkgKiBuZWVkIHRvIGJlIHJlc2V0LiAgT3RoZXJ3aXNlLCB0aGlzIGNsZWFudXAgb3BlcmF0aW9u IHdvdWxkIGJlCiAJCSAqIE8obl4yKS4KIAkJICovCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YodW5sb2dnZWRfcmVsYXRpb25fZW50cnkpOwot CQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCQloYXNoID0gaGFzaF9jcmVhdGUo InVubG9nZ2VkIHJlbGF0aW9uIE9JRHMiLCAzMiwgJmN0bCwKLQkJCQkJCSAgIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQloYXNoID0gaGFzaF9tYWtlKHVubG9nZ2Vk X3JlbGF0aW9uX2VudHJ5LCByZWxudW1iZXIsCisJCQkJCQkgInVubG9nZ2VkIHJlbGF0aW9uIE9J RHMiLCAzMik7CiAKIAkJLyogU2NhbiB0aGUgZGlyZWN0b3J5LiAqLwogCQlkYnNwYWNlX2RpciA9 IEFsbG9jYXRlRGlyKGRic3BhY2VkaXJuYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4 IGE1YjczNjBlMmRjLi42NTEyOGIwZjUwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC0x NzksOCArMTc5LDggQEAgSW5pdFNobWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcikK IAkgKiBDcmVhdGUgKG9yIGF0dGFjaCB0bykgdGhlIHNoYXJlZCBtZW1vcnkgaW5kZXggb2Ygc2ht ZW0gYXJlYXMuCiAJICoKIAkgKiBUaGlzIGlzIHRoZSBzYW1lIGluaXRpYWxpemF0aW9uIGFzIFNo bWVtSW5pdEhhc2goKSBkb2VzLCBidXQgd2UgY2Fubm90Ci0JICogdXNlIFNobWVtSW5pdEhhc2go KSBoZXJlIGJlY2F1c2UgaXQgcmVsaWVzIG9uIFNobWVtSW5kZXggYmVpbmcgYWxyZWFkeQotCSAq IGluaXRpYWxpemVkLgorCSAqIHVzZSBTaG1lbUluaXRIYXNoKCkgbm9yIHNobWVtX2hhc2hfbWFr ZSgpIGhlcmUgYmVjYXVzZSBpdCByZWxpZXMgb24KKwkgKiBTaG1lbUluZGV4IGJlaW5nIGFscmVh ZHkgaW5pdGlhbGl6ZWQuCiAJICovCiAJaW5mby5rZXlzaXplID0gU0hNRU1fSU5ERVhfS0VZU0la RTsKIAlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTaG1lbUluZGV4RW50KTsKQEAgLTM4OCw2ICsz ODgsMjggQEAgU2htZW1Jbml0SGFzaChjb25zdCBjaGFyICpuYW1lLAkJLyogdGFibGUgc3RyaW5n IG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAJcmV0dXJuIGhhc2hfY3JlYXRlKG5hbWUsIGluaXRf c2l6ZSwgaW5mb1AsIGhhc2hfZmxhZ3MpOwogfQogCisvKgorICogSW1wbGVtZW50YXRpb24gZnVu Y3Rpb24gZm9yIHNobWVtX2hhc2hfbWFrZSBtYWNyb3MuCisgKgorICogQ3JlYXRlcyBhIHNoYXJl ZCBtZW1vcnkgaGFzaCB0YWJsZSB3aXRoIHNpbXBsaWZpZWQgcGFyYW1ldGVycy4KKyAqIFBhc3Mg TlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRlZmF1bHRzLgorICovCitIVEFCICoKK3NobWVtX2hh c2hfbWFrZV9pbXBsKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IGluaXRfc2l6ZSwgaW50NjQgbWF4 X3NpemUsCisJCQkJCSBTaXplIGtleXNpemUsIFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19r ZXksCisJCQkJCSBjb25zdCBIQVNIT1BUUyAqb3B0cykKK3sKKwlIQVNIQ1RMCQljdGw7CisJaW50 CQkJZmxhZ3M7CisKKwkvKiBTaGFyZWQgbWVtb3J5IGhhc2ggdGFibGVzIHVzZSBTaG1lbUFsbG9j Tm9FcnJvciwgbm90IGEgY3VzdG9tIGFsbG9jYXRvciAqLworCUFzc2VydChvcHRzID09IE5VTEwg fHwgb3B0cy0+YWxsb2MgPT0gTlVMTCk7CisKKwloYXNoX29wdHNfaW5pdCgmY3RsLCAmZmxhZ3Ms IGtleXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5nX2tleSwgb3B0cyk7CisKKwlyZXR1cm4gU2htZW1J bml0SGFzaChuYW1lLCBpbml0X3NpemUsIG1heF9zaXplLCAmY3RsLCBmbGFncyk7Cit9CisKIC8q CiAgKiBTaG1lbUluaXRTdHJ1Y3QgLS0gQ3JlYXRlL2F0dGFjaCB0byBhIHN0cnVjdHVyZSBpbiBz aGFyZWQgbWVtb3J5LgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0 YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBkZTkwOTJm ZGY1Yi4uNjUyNjQ5OTljOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0 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 ci9sb2NrLmMKaW5kZXggMjM0NjQzZTRkZDcuLjFkNWVhN2MwNTFjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sb2NrLmMKQEAgLTQ0NCw3ICs0NDQsNyBAQCBzdGF0aWMgdm9pZCBHZXRTaW5nbGVQcm9jQmxv Y2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9ja2VkX3Byb2MsCiB2b2lkCiBMb2NrTWFuYWdlclNo bWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWluZm87CisJSEFTSE9QVFMJb3B0czsKIAlpbnQ2 NAkJaW5pdF90YWJsZV9zaXplLAogCQkJCW1heF90YWJsZV9zaXplOwogCWJvb2wJCWZvdW5kOwpA QCAtNDYwLDE1ICs0NjAsMTEgQEAgTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCkKIAkgKiBBbGxv Y2F0ZSBoYXNoIHRhYmxlIGZvciBMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXItbG9ja2Vk LW9iamVjdAogCSAqIGluZm9ybWF0aW9uLgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihM T0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihMT0NLKTsKLQlpbmZvLm51bV9wYXJ0 aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tNZXRob2RMb2NrSGFzaCA9IFNo bWVtSW5pdEhhc2goIkxPQ0sgaGFzaCIsCi0JCQkJCQkJCQkgICBpbml0X3RhYmxlX3NpemUsCi0J CQkJCQkJCQkgICBtYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCQkJ ICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfUEFSVElUSU9OKTsKKwlNZW1TZXQoJm9w dHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BB UlRJVElPTlM7CisJTG9ja01ldGhvZExvY2tIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChMT0NL LCB0YWcsICJMT0NLIGhhc2giLAorCQkJCQkJCQkJCQkgaW5pdF90YWJsZV9zaXplLCBtYXhfdGFi bGVfc2l6ZSwKKwkJCQkJCQkJCQkJICZvcHRzKTsKIAogCS8qIEFzc3VtZSBhbiBhdmVyYWdlIG9m IDIgaG9sZGVycyBwZXIgbG9jayAqLwogCW1heF90YWJsZV9zaXplICo9IDI7CkBAIC00NzgsMTYg KzQ3NCwxMiBAQCBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2gg dGFibGUgZm9yIFBST0NMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcwogCSAqIHBlci1sb2NrLXBl ci1ob2xkZXIgaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBST0NM T0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQUk9DTE9DSyk7Ci0JaW5mby5oYXNo ID0gcHJvY2xvY2tfaGFzaDsKLQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElU SU9OUzsKLQotCUxvY2tNZXRob2RQcm9jTG9ja0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUk9DTE9D SyBoYXNoIiwKLQkJCQkJCQkJCQkgICBpbml0X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAgbWF4 X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAgJmluZm8sCi0JCQkJCQkJCQkJICAgSEFTSF9FTEVN IHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfUEFSVElUSU9OKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNp emVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0gcHJvY2xvY2tfaGFzaDsKKwlvcHRzLm51bV9wYXJ0 aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKKwlMb2NrTWV0aG9kUHJvY0xvY2tIYXNoID0g c2htZW1faGFzaF9tYWtlX2V4dChQUk9DTE9DSywgdGFnLCAiUFJPQ0xPQ0sgaGFzaCIsCisJCQkJ CQkJCQkJCQkgaW5pdF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJCSAm b3B0cyk7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGZhc3QtcGF0aCBzdHJ1Y3R1cmVzLgpAQCAtNTA5 LDE1ICs1MDEsOSBAQCBJbml0TG9ja01hbmFnZXJBY2Nlc3Modm9pZCkKIAkgKiBBbGxvY2F0ZSBu b24tc2hhcmVkIGhhc2ggdGFibGUgZm9yIExPQ0FMTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMg bG9jawogCSAqIGNvdW50cyBhbmQgcmVzb3VyY2Ugb3duZXIgaW5mb3JtYXRpb24uCiAJICovCi0J SEFTSENUTAkJaW5mbzsKLQotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihMT0NBTExPQ0tUQUcpOwot CWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExPQ0FMTE9DSyk7Ci0KLQlMb2NrTWV0aG9kTG9jYWxI YXNoID0gaGFzaF9jcmVhdGUoIkxPQ0FMTE9DSyBoYXNoIiwKLQkJCQkJCQkJCSAgMTYsCi0JCQkJ CQkJCQkgICZpbmZvLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlMb2Nr TWV0aG9kTG9jYWxIYXNoID0gaGFzaF9tYWtlX2N4dChMT0NBTExPQ0ssIHRhZywKKwkJCQkJCQkJ CQkiTE9DQUxMT0NLIGhhc2giLCAxNiwKKwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIH0K IAogCkBAIC0zNDA2LDIwICszMzkyLDEzIEBAIENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2 b2lkKQogCQlib29sCQl4YWN0TG9jazsJLyogaXMgYW55IGxvY2ttb2RlIGhlbGQgYXQgeGFjdCBs ZXZlbD8gKi8KIAl9IFBlckxvY2tUYWdFbnRyeTsKIAotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUhU QUIJICAgKmxvY2todGFiOwogCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CiAJTE9DQUxMT0NLICAq bG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEgbG9jYWwgaGFzaCB0YWJsZSBrZXllZCBieSBMT0NL VEFHIG9ubHkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKExPQ0tUQUcpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZXJMb2NrVGFnRW50cnkpOwotCWhhc2hfY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCWxvY2todGFiID0gaGFzaF9jcmVhdGUoIkNoZWNr Rm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJsZSIsCi0JCQkJCQkgICAyNTYsIC8qIGFyYml0cmFy eSBpbml0aWFsIHNpemUgKi8KLQkJCQkJCSAgICZoYXNoX2N0bCwKLQkJCQkJCSAgIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWxvY2todGFiID0gaGFzaF9tYWtlKFBl ckxvY2tUYWdFbnRyeSwgbG9jaywKKwkJCQkJCSAiQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tz IHRhYmxlIiwgMjU2KTsKIAogCS8qIFNjYW4gbG9jYWwgbG9jayB0YWJsZSB0byBmaW5kIGVudHJp ZXMgZm9yIGVhY2ggTE9DS1RBRyAqLwogCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhv ZExvY2FsSGFzaCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2Nr LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKaW5kZXggNWNiNjk2NDkwZDYu LjhmZWE4MTFlY2JlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2Nr LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCkBAIC0yOTQsNyArMjk0 LDYgQEAgc3RhdGljIGx3bG9ja19zdGF0cyAqIGdldF9sd2xvY2tfc3RhdHNfZW50cnkoTFdMb2Nr ICpsb2NrKTsKIHN0YXRpYyB2b2lkCiBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogewotCUhBU0hD VEwJCWN0bDsKIAlzdGF0aWMgTWVtb3J5Q29udGV4dCBsd2xvY2tfc3RhdHNfY3h0ID0gTlVMTDsK IAlzdGF0aWMgYm9vbCBleGl0X3JlZ2lzdGVyZWQgPSBmYWxzZTsKIApAQCAtMzE0LDExICszMTMs OCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVM VF9TSVpFUyk7CiAJTWVtb3J5Q29udGV4dEFsbG93SW5Dcml0aWNhbFNlY3Rpb24obHdsb2NrX3N0 YXRzX2N4dCwgdHJ1ZSk7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihsd2xvY2tfc3RhdHNfa2V5 KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKGx3bG9ja19zdGF0cyk7Ci0JY3RsLmhjeHQgPSBs d2xvY2tfc3RhdHNfY3h0OwotCWx3bG9ja19zdGF0c19odGFiID0gaGFzaF9jcmVhdGUoImx3bG9j ayBzdGF0cyIsIDE2Mzg0LCAmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJbHdsb2NrX3N0YXRzX2h0YWIgPSBoYXNoX21ha2VfY3h0KGx3bG9j a19zdGF0cywga2V5LAorCQkJCQkJCQkJICAibHdsb2NrIHN0YXRzIiwgMTYzODQsIGx3bG9ja19z dGF0c19jeHQpOwogCWlmICghZXhpdF9yZWdpc3RlcmVkKQogCXsKIAkJb25fc2htZW1fZXhpdChw cmludF9sd2xvY2tfc3RhdHMsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmlu ZGV4IGFlMGU5NmFlZTVmLi40NDdiMWUzOTgwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVk aWNhdGUuYwpAQCAtMjEyLDYgKzIxMiw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3Mu aCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgog I2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50Lmgi CkBAIC0xMTU1LDcgKzExNTYsNyBAQCBDaGVja1BvaW50UHJlZGljYXRlKHZvaWQpCiB2b2lkCiBQ cmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiB7Ci0JSEFTSENUTAkJaW5mbzsKKwlIQVNIT1BU UwlvcHRzOwogCWludDY0CQltYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0czsKIAlpbnQ2NAkJbWF4 X3ByZWRpY2F0ZV9sb2NrczsKIAlpbnQ2NAkJbWF4X3NlcmlhbGl6YWJsZV94YWN0czsKQEAgLTEx NzcsMTYgKzExNzgsMTMgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9j YXRlIGhhc2ggdGFibGUgZm9yIFBSRURJQ0FURUxPQ0tUQVJHRVQgc3RydWN0cy4gIFRoaXMgc3Rv cmVzCiAJICogcGVyLXByZWRpY2F0ZS1sb2NrLXRhcmdldCBpbmZvcm1hdGlvbi4KIAkgKi8KLQlp bmZvLmtleXNpemUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVFRBRyk7Ci0JaW5mby5lbnRy eXNpemUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVCk7Ci0JaW5mby5udW1fcGFydGl0aW9u cyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlM7Ci0KLQlQcmVkaWNhdGVMb2NrVGFyZ2V0 SGFzaCA9IFNobWVtSW5pdEhhc2goIlBSRURJQ0FURUxPQ0tUQVJHRVQgaGFzaCIsCi0JCQkJCQkJ CQkJCW1heF9wcmVkaWNhdGVfbG9ja190YXJnZXRzLAotCQkJCQkJCQkJCQltYXhfcHJlZGljYXRl X2xvY2tfdGFyZ2V0cywKLQkJCQkJCQkJCQkJJmluZm8sCi0JCQkJCQkJCQkJCUhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCQlIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0la RSk7CisJTWVtU2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOworCW9wdHMubnVtX3BhcnRpdGlv bnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOworCW9wdHMuZml4ZWRfc2l6ZSA9IHRy dWU7CisJUHJlZGljYXRlTG9ja1RhcmdldEhhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0KFBSRURJ Q0FURUxPQ0tUQVJHRVQsIHRhZywKKwkJCQkJCQkJCQkJCSAgIlBSRURJQ0FURUxPQ0tUQVJHRVQg aGFzaCIsCisJCQkJCQkJCQkJCQkgIG1heF9wcmVkaWNhdGVfbG9ja190YXJnZXRzLCBtYXhfcHJl ZGljYXRlX2xvY2tfdGFyZ2V0cywKKwkJCQkJCQkJCQkJCSAgJm9wdHMpOwogCiAJLyoKIAkgKiBS ZXNlcnZlIGEgZHVtbXkgZW50cnkgaW4gdGhlIGhhc2ggdGFibGU7IHdlIHVzZSBpdCB0byBtYWtl IHN1cmUgdGhlcmUncwpAQCAtMTIwOSwyMCArMTIwNywxNyBAQCBQcmVkaWNhdGVMb2NrU2htZW1J bml0KHZvaWQpCiAJICogQWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgUFJFRElDQVRFTE9DSyBzdHJ1 Y3RzLiAgVGhpcyBzdG9yZXMgcGVyCiAJICogeGFjdC1sb2NrLW9mLWEtdGFyZ2V0IGluZm9ybWF0 aW9uLgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFHKTsKLQlp bmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLKTsKLQlpbmZvLmhhc2ggPSBwcmVk aWNhdGVsb2NrX2hhc2g7Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NL X1BBUlRJVElPTlM7Ci0KIAkvKiBBc3N1bWUgYW4gYXZlcmFnZSBvZiAyIHhhY3RzIHBlciB0YXJn ZXQgKi8KIAltYXhfcHJlZGljYXRlX2xvY2tzID0gbWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHMg KiAyOwogCi0JUHJlZGljYXRlTG9ja0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NL IGhhc2giLAotCQkJCQkJCQkJICBtYXhfcHJlZGljYXRlX2xvY2tzLAotCQkJCQkJCQkJICBtYXhf cHJlZGljYXRlX2xvY2tzLAotCQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJCSAgSEFTSF9FTEVN IHwgSEFTSF9GVU5DVElPTiB8Ci0JCQkJCQkJCQkgIEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhF RF9TSVpFKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0g cHJlZGljYXRlbG9ja19oYXNoOworCW9wdHMubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRF TE9DS19QQVJUSVRJT05TOworCW9wdHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJUHJlZGljYXRlTG9j a0hhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0KFBSRURJQ0FURUxPQ0ssIHRhZywKKwkJCQkJCQkJ CQkJIlBSRURJQ0FURUxPQ0sgaGFzaCIsCisJCQkJCQkJCQkJCW1heF9wcmVkaWNhdGVfbG9ja3Ms IG1heF9wcmVkaWNhdGVfbG9ja3MsCisJCQkJCQkJCQkJCSZvcHRzKTsKIAogCS8qCiAJICogQ29t cHV0ZSBzaXplIGZvciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb24gaGFzaHRhYmxlLiBOb3RlIHRo ZXNlCkBAIC0xMjkzLDE1ICsxMjg4LDEyIEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkK IAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBTRVJJQUxJWkFCTEVYSUQgc3RydWN0cy4gIFRo aXMgc3RvcmVzIHBlci14aWQKIAkgKiBpbmZvcm1hdGlvbiBmb3Igc2VyaWFsaXphYmxlIHRyYW5z YWN0aW9ucyB3aGljaCBoYXZlIGFjY2Vzc2VkIGRhdGEuCiAJICovCi0JaW5mby5rZXlzaXplID0g c2l6ZW9mKFNFUklBTElaQUJMRVhJRFRBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoU0VS SUFMSVpBQkxFWElEKTsKLQotCVNlcmlhbGl6YWJsZVhpZEhhc2ggPSBTaG1lbUluaXRIYXNoKCJT RVJJQUxJWkFCTEVYSUQgaGFzaCIsCi0JCQkJCQkJCQkJbWF4X3NlcmlhbGl6YWJsZV94YWN0cywK LQkJCQkJCQkJCQltYXhfc2VyaWFsaXphYmxlX3hhY3RzLAotCQkJCQkJCQkJCSZpbmZvLAotCQkJ CQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCUhBU0hfRklYRURfU0la RSk7CisJTWVtU2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOworCW9wdHMuZml4ZWRfc2l6ZSA9 IHRydWU7CisJU2VyaWFsaXphYmxlWGlkSGFzaCA9IHNobWVtX2hhc2hfbWFrZV9leHQoU0VSSUFM SVpBQkxFWElELCB0YWcsCisJCQkJCQkJCQkJCSAgIlNFUklBTElaQUJMRVhJRCBoYXNoIiwKKwkJ CQkJCQkJCQkJICBtYXhfc2VyaWFsaXphYmxlX3hhY3RzLCBtYXhfc2VyaWFsaXphYmxlX3hhY3Rz LAorCQkJCQkJCQkJCQkgICZvcHRzKTsKIAogCS8qCiAJICogQWxsb2NhdGUgc3BhY2UgZm9yIHRy YWNraW5nIHJ3LWNvbmZsaWN0cyBpbiBsaXN0cyBhdHRhY2hlZCB0byB0aGUKQEAgLTE5NTAsMTYg KzE5NDIsMTIgQEAgR2V0U2VyaWFsaXphYmxlVHJhbnNhY3Rpb25TbmFwc2hvdEludChTbmFwc2hv dCBzbmFwc2hvdCwKIHN0YXRpYyB2b2lkCiBDcmVhdGVMb2NhbFByZWRpY2F0ZUxvY2tIYXNoKHZv aWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBiYWNrZW5k LWxvY2FsIGhhc2ggdGFibGUgb2YgcGFyZW50IGxvY2tzICovCiAJQXNzZXJ0KExvY2FsUHJlZGlj YXRlTG9ja0hhc2ggPT0gTlVMTCk7Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihQUkVESUNB VEVMT0NLVEFSR0VUVEFHKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoTE9DQUxQUkVE SUNBVEVMT0NLKTsKLQlMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9jcmVhdGUoIkxvY2Fs IHByZWRpY2F0ZSBsb2NrIiwKLQkJCQkJCQkJCQkgbWF4X3ByZWRpY2F0ZV9sb2Nrc19wZXJfeGFj dCwKLQkJCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwlMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChMT0NBTFBSRURJ Q0FURUxPQ0ssIHRhZywKKwkJCQkJCQkJCQkgICAiTG9jYWwgcHJlZGljYXRlIGxvY2siLAorCQkJ CQkJCQkJCSAgIG1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3hhY3QsCisJCQkJCQkJCQkJICAgVG9w TWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L3NtZ3Ivc21nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwppbmRleCA1Mzkx NjQwZDg2MS4uZTQ4YjM4M2I0NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21n ci9zbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwpAQCAtNzMsNiAr NzMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFy Y2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAKIAogLyoKQEAgLTI1MCwxMiArMjUxLDkgQEAgc21ncm9wZW4oUmVsRmlsZUxvY2F0b3Ig cmxvY2F0b3IsIFByb2NOdW1iZXIgYmFja2VuZCkKIAlpZiAoU01nclJlbGF0aW9uSGFzaCA9PSBO VUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRh YmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxl TG9jYXRvckJhY2tlbmQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNNZ3JSZWxhdGlvbkRh dGEpOwotCQlTTWdyUmVsYXRpb25IYXNoID0gaGFzaF9jcmVhdGUoInNtZ3IgcmVsYXRpb24gdGFi bGUiLCA0MDAsCi0JCQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJ U01nclJlbGF0aW9uSGFzaCA9IGhhc2hfbWFrZV9jeHQoU01nclJlbGF0aW9uRGF0YSwgc21ncl9y bG9jYXRvciwKKwkJCQkJCQkJCQkgInNtZ3IgcmVsYXRpb24gdGFibGUiLCA0MDAsCisJCQkJCQkJ CQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCQlkbGlzdF9pbml0KCZ1bnBpbm5lZF9yZWxucyk7CiAJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCAyYzk2NGI2ZjNkOS4uYjhmMzEzNmUzMWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtMTMxLDggKzEzMSw2IEBAIEluaXRTeW5jKHZv aWQpCiAJICovCiAJaWYgKCFJc1VuZGVyUG9zdG1hc3RlciB8fCBBbUNoZWNrcG9pbnRlclByb2Nl c3MoKSkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJCS8qCiAJCSAqIFhYWDogVGhlIGNo ZWNrcG9pbnRlciBuZWVkcyB0byBhZGQgZW50cmllcyB0byB0aGUgcGVuZGluZyBvcHMgdGFibGUK IAkJICogd2hlbiBhYnNvcmJpbmcgZnN5bmMgcmVxdWVzdHMuICBUaGF0IGlzIGRvbmUgd2l0aGlu IGEgY3JpdGljYWwKQEAgLTE0NywxMyArMTQ1LDggQEAgSW5pdFN5bmModm9pZCkKIAkJCQkJCQkJ CQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAkJTWVtb3J5Q29udGV4dEFsbG93SW5Dcml0 aWNhbFNlY3Rpb24ocGVuZGluZ09wc0N4dCwgdHJ1ZSk7CiAKLQkJaGFzaF9jdGwua2V5c2l6ZSA9 IHNpemVvZihGaWxlVGFnKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBlbmRpbmdG c3luY0VudHJ5KTsKLQkJaGFzaF9jdGwuaGN4dCA9IHBlbmRpbmdPcHNDeHQ7Ci0JCXBlbmRpbmdP cHMgPSBoYXNoX2NyZWF0ZSgiUGVuZGluZyBPcHMgVGFibGUiLAotCQkJCQkJCQkgMTAwTCwKLQkJ CQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCQlwZW5kaW5nT3BzID0gaGFzaF9tYWtlX2N4dChQZW5kaW5nRnN5bmNFbnRy eSwgdGFnLAorCQkJCQkJCQkgICAiUGVuZGluZyBPcHMgVGFibGUiLCAxMDBMLCBwZW5kaW5nT3Bz Q3h0KTsKIAkJcGVuZGluZ1VubGlua3MgPSBOSUw7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5 cGFuYWx5emUuYwppbmRleCA0OGVlMDUwZTM3Zi4uNDllYzRhYjRkYjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFy Y2gvdHNfdHlwYW5hbHl6ZS5jCkBAIC0xNDksNyArMTQ5LDYgQEAgY29tcHV0ZV90c3ZlY3Rvcl9z dGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLAogCiAJLyogVGhpcyBpcyBEIGZyb20gdGhlIExDIGFs Z29yaXRobS4gKi8KIAlIVEFCCSAgICpsZXhlbWVzX3RhYjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsK IAlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkvKiBUaGlzIGlzIHRoZSBjdXJyZW50 IGJ1Y2tldCBudW1iZXIgZnJvbSB0aGUgTEMgYWxnb3JpdGhtICovCkBAIC0xODAsMTUgKzE3OSw5 IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywKIAkgKiB3b3Jy eSBhYm91dCBvdmVyZmxvd2luZyB0aGUgaW5pdGlhbCBzaXplLiBBbHNvIHdlIGRvbid0IG5lZWQg dG8gcGF5IGFueQogCSAqIGF0dGVudGlvbiB0byBsb2NraW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVu dC4KIAkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKExleGVtZUhhc2hLZXkpOwotCWhh c2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihUcmFja0l0ZW0pOwotCWhhc2hfY3RsLmhhc2ggPSBs ZXhlbWVfaGFzaDsKLQloYXNoX2N0bC5tYXRjaCA9IGxleGVtZV9tYXRjaDsKLQloYXNoX2N0bC5o Y3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JbGV4ZW1lc190YWIgPSBoYXNoX2NyZWF0ZSgi QW5hbHl6ZWQgbGV4ZW1lcyB0YWJsZSIsCi0JCQkJCQkJICBudW1fbWNlbGVtLAotCQkJCQkJCSAg Jmhhc2hfY3RsLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09N UEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJbGV4ZW1lc190YWIgPSBoYXNoX21ha2VfZm4oVHJhY2tJ dGVtLCBrZXksCisJCQkJCQkJICAgIkFuYWx5emVkIGxleGVtZXMgdGFibGUiLCBudW1fbWNlbGVt LAorCQkJCQkJCSAgIGxleGVtZV9oYXNoLCBsZXhlbWVfbWF0Y2gpOwogCiAJLyogSW5pdGlhbGl6 ZSBjb3VudGVycy4gKi8KIAliX2N1cnJlbnQgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudC5jCmluZGV4IGU1YTIyODlmMGIwLi4zY2YyZDAyOWQwYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMTIwLDcgKzEyMCw2IEBAIHZvaWQKIFdh aXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkKQogewogCWJvb2wJCWZvdW5kOwotCUhBU0hDVEwJ CWluZm87CiAKIAlXYWl0RXZlbnRDdXN0b21Db3VudGVyID0gKFdhaXRFdmVudEN1c3RvbUNvdW50 ZXJEYXRhICopCiAJCVNobWVtSW5pdFN0cnVjdCgiV2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEi LApAQCAtMTM0LDI0ICsxMzMsMTggQEAgV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpCiAJ fQogCiAJLyogaW5pdGlhbGl6ZSBvciBhdHRhY2ggdGhlIGhhc2ggdGFibGVzIHRvIHN0b3JlIGN1 c3RvbSB3YWl0IGV2ZW50cyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZih1aW50MzIpOwotCWlu Zm8uZW50cnlzaXplID0gc2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvKTsKIAlXYWl0 RXZlbnRDdXN0b21IYXNoQnlJbmZvID0KLQkJU2htZW1Jbml0SGFzaCgiV2FpdEV2ZW50Q3VzdG9t IGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNU T01fSEFTSF9JTklUX1NJWkUsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9NQVhfU0la RSwKLQkJCQkJICAmaW5mbywKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJc2ht ZW1faGFzaF9tYWtlKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvLCB3YWl0X2V2ZW50X2luZm8s CisJCQkJCQkiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIs CisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0laRSwKKwkJCQkJCVdBSVRfRVZF TlRfQ1VTVE9NX0hBU0hfTUFYX1NJWkUpOwogCiAJLyoga2V5IGlzIGEgTlVMTC10ZXJtaW5hdGVk IHN0cmluZyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihjaGFyW05BTUVEQVRBTEVOXSk7Ci0J aW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeU5hbWUpOwogCVdh aXRFdmVudEN1c3RvbUhhc2hCeU5hbWUgPQotCQlTaG1lbUluaXRIYXNoKCJXYWl0RXZlbnRDdXN0 b20gaGFzaCBieSBuYW1lIiwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0la RSwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFLAotCQkJCQkgICZpbmZv LAotCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCXNobWVtX2hhc2hfbWFrZShX YWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSwgd2FpdF9ldmVudF9uYW1lLAorCQkJCQkJIldhaXRF dmVudEN1c3RvbSBoYXNoIGJ5IG5hbWUiLAorCQkJCQkJV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9J TklUX1NJWkUsCisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCmluZGV4IDdiYjAwMGRk YmQzLi5iZGM3ZTIyMzdmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6 ZS5jCkBAIC0yMjMsNyArMjIzLDYgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMg KnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAKIAkvKiBUaGlzIGlzIEQg ZnJvbSB0aGUgTEMgYWxnb3JpdGhtLiAqLwogCUhUQUIJICAgKmVsZW1lbnRzX3RhYjsKLQlIQVNI Q1RMCQllbGVtX2hhc2hfY3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAogCS8q IFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBMQyBhbGdvcml0aG0g Ki8KQEAgLTIzNiw3ICsyMzUsNiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAq c3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAlUcmFja0l0ZW0gICppdGVt OwogCWludAkJCXNsb3RfaWR4OwogCUhUQUIJICAgKmNvdW50X3RhYjsKLQlIQVNIQ1RMCQljb3Vu dF9oYXNoX2N0bDsKIAlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJhX2RhdGEgPSAo QXJyYXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwpAQCAtMjc2LDI0ICsy NzQsMTMgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXpl QXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJICogd29ycnkgYWJvdXQgb3ZlcmZsb3dpbmcgdGhl IGluaXRpYWwgc2l6ZS4gQWxzbyB3ZSBkb24ndCBuZWVkIHRvIHBheSBhbnkKIAkgKiBhdHRlbnRp b24gdG8gbG9ja2luZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuCiAJICovCi0JZWxlbV9oYXNoX2N0 bC5rZXlzaXplID0gc2l6ZW9mKERhdHVtKTsKLQllbGVtX2hhc2hfY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihUcmFja0l0ZW0pOwotCWVsZW1faGFzaF9jdGwuaGFzaCA9IGVsZW1lbnRfaGFzaDsKLQll bGVtX2hhc2hfY3RsLm1hdGNoID0gZWxlbWVudF9tYXRjaDsKLQllbGVtX2hhc2hfY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQllbGVtZW50c190YWIgPSBoYXNoX2NyZWF0ZSgiQW5h bHl6ZWQgZWxlbWVudHMgdGFibGUiLAotCQkJCQkJCSAgIG51bV9tY2VsZW0sCi0JCQkJCQkJICAg JmVsZW1faGFzaF9jdGwsCi0JCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJZWxlbWVudHNfdGFiID0gaGFzaF9tYWtlX2Zu KFRyYWNrSXRlbSwga2V5LAorCQkJCQkJCQkiQW5hbHl6ZWQgZWxlbWVudHMgdGFibGUiLCBudW1f bWNlbGVtLAorCQkJCQkJCQllbGVtZW50X2hhc2gsIGVsZW1lbnRfbWF0Y2gpOwogCiAJLyogaGFz aHRhYmxlIGZvciBhcnJheSBkaXN0aW5jdCBlbGVtZW50cyBjb3VudHMgKi8KLQljb3VudF9oYXNo X2N0bC5rZXlzaXplID0gc2l6ZW9mKGludCk7Ci0JY291bnRfaGFzaF9jdGwuZW50cnlzaXplID0g c2l6ZW9mKERFQ291bnRJdGVtKTsKLQljb3VudF9oYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9y eUNvbnRleHQ7Ci0JY291bnRfdGFiID0gaGFzaF9jcmVhdGUoIkFycmF5IGRpc3RpbmN0IGVsZW1l bnQgY291bnQgdGFibGUiLAotCQkJCQkJCTY0LAotCQkJCQkJCSZjb3VudF9oYXNoX2N0bCwKLQkJ CQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwljb3VudF90YWIg PSBoYXNoX21ha2UoREVDb3VudEl0ZW0sIGNvdW50LAorCQkJCQkJICAiQXJyYXkgZGlzdGluY3Qg ZWxlbWVudCBjb3VudCB0YWJsZSIsIDY0KTsKIAogCS8qIEluaXRpYWxpemUgY291bnRlcnMuICov CiAJYl9jdXJyZW50ID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDBmZWUxYjQwZDYzLi5kNmMw MThjYTUxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCkBAIC05MDEsMTkgKzkwMSw4IEBAIGpzb25fdW5p cXVlX2hhc2hfbWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBr ZXlzaXplKQogc3RhdGljIHZvaWQKIGpzb25fdW5pcXVlX2NoZWNrX2luaXQoSnNvblVuaXF1ZUNo ZWNrU3RhdGUgKmN4dCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQltZW1zZXQoJmN0bCwgMCwgc2l6 ZW9mKGN0bCkpOwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKEpzb25VbmlxdWVIYXNoRW50cnkpOwot CWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvblVuaXF1ZUhhc2hFbnRyeSk7Ci0JY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQljdGwuaGFzaCA9IGpzb25fdW5pcXVlX2hhc2g7Ci0J Y3RsLm1hdGNoID0ganNvbl91bmlxdWVfaGFzaF9tYXRjaDsKLQotCSpjeHQgPSBoYXNoX2NyZWF0 ZSgianNvbiBvYmplY3QgaGFzaHRhYmxlIiwKLQkJCQkJICAgMzIsCi0JCQkJCSAgICZjdGwsCi0J CQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQ09OVEVYVCB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NP TVBBUkUpOworCSpjeHQgPSBoYXNoc2V0X21ha2VfZm4oSnNvblVuaXF1ZUhhc2hFbnRyeSwgImpz b24gb2JqZWN0IGhhc2h0YWJsZSIsIDMyLAorCQkJCQkJICAganNvbl91bmlxdWVfaGFzaCwganNv bl91bmlxdWVfaGFzaF9tYXRjaCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMKaW5kZXggOTdjYzNkNjAzNDAuLmZjMmU1MzNhMDU0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jCkBAIC0zODExLDE4ICszODExLDEyIEBAIHN0YXRpYyBIVEFCICoKIGdldF9q c29uX29iamVjdF9hc19oYXNoKGNvbnN0IGNoYXIgKmpzb24sIGludCBsZW4sIGNvbnN0IGNoYXIg KmZ1bmNuYW1lLAogCQkJCQkJTm9kZSAqZXNjb250ZXh0KQogewotCUhBU0hDVEwJCWN0bDsKIAlI VEFCCSAgICp0YWI7CiAJSkhhc2hTdGF0ZSAqc3RhdGU7CiAJSnNvblNlbUFjdGlvbiAqc2VtOwog Ci0JY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEpz b25IYXNoRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JdGFiID0g aGFzaF9jcmVhdGUoImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsCi0JCQkJCSAgMTAwLAotCQkJCQkg ICZjdGwsCi0JCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsK Kwl0YWIgPSBoYXNoX21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJCQkJCSJqc29uIG9iamVj dCBoYXNodGFibGUiLCAxMDApOwogCiAJc3RhdGUgPSBwYWxsb2MwX29iamVjdChKSGFzaFN0YXRl KTsKIAlzZW0gPSBwYWxsb2MwX29iamVjdChKc29uU2VtQWN0aW9uKTsKQEAgLTQyMTYsNyArNDIx MCw2IEBAIHBvcHVsYXRlX3JlY29yZHNldF9vYmplY3Rfc3RhcnQodm9pZCAqc3RhdGUpCiB7CiAJ UG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAqX3N0YXRlID0gKFBvcHVsYXRlUmVjb3Jkc2V0U3RhdGUg Kikgc3RhdGU7CiAJaW50CQkJbGV4X2xldmVsID0gX3N0YXRlLT5sZXgtPmxleF9sZXZlbDsKLQlI QVNIQ1RMCQljdGw7CiAKIAkvKiBSZWplY3Qgb2JqZWN0IGF0IHRvcCBsZXZlbDogd2UgbXVzdCBo YXZlIGFuIGFycmF5IGF0IGxldmVsIDAgKi8KIAlpZiAobGV4X2xldmVsID09IDApCkBAIC00MjMw LDEzICs0MjIzLDggQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X29iamVjdF9zdGFydCh2b2lkICpzdGF0 ZSkKIAkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKIAogCS8qIE9iamVjdCBhdCBsZXZlbCAxOiBzZXQg dXAgYSBuZXcgaGFzaCB0YWJsZSBmb3IgdGhpcyBvYmplY3QgKi8KLQljdGwua2V5c2l6ZSA9IE5B TUVEQVRBTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvbkhhc2hFbnRyeSk7Ci0JY3Rs LmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQlfc3RhdGUtPmpzb25faGFzaCA9IGhhc2hf Y3JlYXRlKCJqc29uIG9iamVjdCBoYXNodGFibGUiLAotCQkJCQkJCQkJMTAwLAotCQkJCQkJCQkJ JmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7 CisJX3N0YXRlLT5qc29uX2hhc2ggPSBoYXNoX21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJ CQkJCQkJCSAgImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsIDEwMCk7CiAKIAlyZXR1cm4gSlNPTl9T VUNDRVNTOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4IDFhNGRiYmViOGRiLi40 ZDBjODExYmRkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTg4LDE3ICsxODgs MTAgQEAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ UmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOwogCWludAkJCWNvbnRleHRfaWQ7CiAJTGlzdAkgICAqY29udGV4dHM7Ci0JSEFTSENUTAkJ Y3RsOwogCUhUQUIJICAgKmNvbnRleHRfaWRfbG9va3VwOwogCi0JY3RsLmtleXNpemUgPSBzaXpl b2YoTWVtb3J5Q29udGV4dCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihNZW1vcnlDb250ZXh0 SWQpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQljb250ZXh0X2lkX2xv b2t1cCA9IGhhc2hfY3JlYXRlKCJwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMiLAotCQkJ CQkJCQkJMjU2LAotCQkJCQkJCQkJJmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX0NPTlRFWFQpOworCWNvbnRleHRfaWRfbG9va3VwID0gaGFzaF9tYWtlKE1lbW9y eUNvbnRleHRJZCwgY29udGV4dCwKKwkJCQkJCQkJICAicGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzIiwgMjU2KTsKIAogCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCAyZGUwOGRhNjUzOS4uMjQzZmIyYzQxOTcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0zMzA3LDMwICszMzA3LDI1IEBA IHJpX051bGxDaGVjayhUdXBsZURlc2MgdHVwRGVzYywKIHN0YXRpYyB2b2lkCiByaV9Jbml0SGFz aFRhYmxlcyh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQotCWN0bC5rZXlzaXplID0gc2l6ZW9m KE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSSV9Db25zdHJhaW50SW5mbyk7Ci0Jcmlf Y29uc3RyYWludF9jYWNoZSA9IGhhc2hfY3JlYXRlKCJSSSBjb25zdHJhaW50IGNhY2hlIiwKLQkJ CQkJCQkJCSAgUklfSU5JVF9DT05TVFJBSU5USEFTSFNJWkUsCi0JCQkJCQkJCQkgICZjdGwsIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXJpX2NvbnN0cmFpbnRfY2FjaGUgPSBoYXNoX21ha2Vf Y3h0KFJJX0NvbnN0cmFpbnRJbmZvLCBjb25zdHJhaW50X2lkLAorCQkJCQkJCQkJCSJSSSBjb25z dHJhaW50IGNhY2hlIiwKKwkJCQkJCQkJCQlSSV9JTklUX0NPTlNUUkFJTlRIQVNIU0laRSwKKwkJ CQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUg b24gcGdfY29uc3RyYWludCBjaGFuZ2VzICovCiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJh Y2soQ09OU1RST0lELAogCQkJCQkJCQkgIEludmFsaWRhdGVDb25zdHJhaW50Q2FjaGVDYWxsQmFj aywKIAkJCQkJCQkJICAoRGF0dW0pIDApOwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUklfUXVl cnlLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUklfUXVlcnlIYXNoRW50cnkpOwotCXJp X3F1ZXJ5X2NhY2hlID0gaGFzaF9jcmVhdGUoIlJJIHF1ZXJ5IGNhY2hlIiwKLQkJCQkJCQkJIFJJ X0lOSVRfUVVFUllIQVNIU0laRSwKLQkJCQkJCQkJICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUklfQ29tcGFyZUtleSk7Ci0JY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSSV9Db21wYXJlSGFzaEVudHJ5KTsKLQlyaV9jb21wYXJlX2NhY2hlID0g aGFzaF9jcmVhdGUoIlJJIGNvbXBhcmUgY2FjaGUiLAorCXJpX3F1ZXJ5X2NhY2hlID0gaGFzaF9t YWtlX2N4dChSSV9RdWVyeUhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkgICAiUkkgcXVlcnkgY2Fj aGUiLAogCQkJCQkJCQkgICBSSV9JTklUX1FVRVJZSEFTSFNJWkUsCi0JCQkJCQkJCSAgICZjdGws IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsK KworCXJpX2NvbXBhcmVfY2FjaGUgPSBoYXNoX21ha2VfY3h0KFJJX0NvbXBhcmVIYXNoRW50cnks IGtleSwKKwkJCQkJCQkJCSAiUkkgY29tcGFyZSBjYWNoZSIsCisJCQkJCQkJCQkgUklfSU5JVF9R VUVSWUhBU0hTSVpFLAorCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBhZWM1NTU2YjAwOC4uZjIyZDFiYjdjZTcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTQyNDYsNyArNDI0Niw2IEBAIHN0YXRpYyB2b2lk CiBzZXRfcnRhYmxlX25hbWVzKGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBMaXN0ICpwYXJlbnRf bmFtZXNwYWNlcywKIAkJCQkgQml0bWFwc2V0ICpyZWxzX3VzZWQpCiB7Ci0JSEFTSENUTAkJaGFz aF9jdGw7CiAJSFRBQgkgICAqbmFtZXNfaGFzaDsKIAlOYW1lSGFzaEVudHJ5ICpoZW50cnk7CiAJ Ym9vbAkJZm91bmQ7CkBAIC00MjYyLDEzICs0MjYxLDkgQEAgc2V0X3J0YWJsZV9uYW1lcyhkZXBh cnNlX25hbWVzcGFjZSAqZHBucywgTGlzdCAqcGFyZW50X25hbWVzcGFjZXMsCiAJICogV2UgdXNl IGEgaGFzaCB0YWJsZSB0byBob2xkIGtub3duIG5hbWVzLCBzbyB0aGF0IHRoaXMgcHJvY2VzcyBp cyBPKE4pCiAJICogbm90IE8oTl4yKSBmb3IgTiBuYW1lcy4KIAkgKi8KLQloYXNoX2N0bC5rZXlz aXplID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE5hbWVIYXNo RW50cnkpOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQluYW1lc19o YXNoID0gaGFzaF9jcmVhdGUoInNldF9ydGFibGVfbmFtZXMgbmFtZXMiLAotCQkJCQkJCSBsaXN0 X2xlbmd0aChkcG5zLT5ydGFibGUpLAotCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJIEhBU0hf RUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJbmFtZXNfaGFzaCA9IGhhc2hf bWFrZShOYW1lSGFzaEVudHJ5LCBuYW1lLAorCQkJCQkJICAgInNldF9ydGFibGVfbmFtZXMgbmFt ZXMiLAorCQkJCQkJICAgbGlzdF9sZW5ndGgoZHBucy0+cnRhYmxlKSk7CiAKIAkvKiBQcmVsb2Fk IHRoZSBoYXNoIHRhYmxlIHdpdGggbmFtZXMgYXBwZWFyaW5nIGluIHBhcmVudF9uYW1lc3BhY2Vz ICovCiAJZm9yZWFjaChsYywgcGFyZW50X25hbWVzcGFjZXMpCkBAIC01MzM5LDcgKzUzMzQsNiBA QCBleHBhbmRfY29sbmFtZXNfYXJyYXlfdG8oZGVwYXJzZV9jb2x1bW5zICpjb2xpbmZvLCBpbnQg bikKIHN0YXRpYyB2b2lkCiBidWlsZF9jb2xpbmZvX25hbWVzX2hhc2goZGVwYXJzZV9jb2x1bW5z ICpjb2xpbmZvKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCWludAkJCWk7CiAJTGlzdENlbGwg ICAqbGM7CiAKQEAgLTUzNTUsMTMgKzUzNDksMTAgQEAgYnVpbGRfY29saW5mb19uYW1lc19oYXNo KGRlcGFyc2VfY29sdW1ucyAqY29saW5mbykKIAkgKiBTZXQgdXAgdGhlIGhhc2ggdGFibGUuICBU aGUgZW50cmllcyBhcmUganVzdCBzdHJpbmdzIHdpdGggbm8gb3RoZXIKIAkgKiBwYXlsb2FkLgog CSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNp emUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7 Ci0JY29saW5mby0+bmFtZXNfaGFzaCA9IGhhc2hfY3JlYXRlKCJkZXBhcnNlX2NvbHVtbnMgbmFt ZXMiLAotCQkJCQkJCQkJICBjb2xpbmZvLT5udW1fY29scyArIGNvbGluZm8tPm51bV9uZXdfY29s cywKLQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX1NU UklOR1MgfCBIQVNIX0NPTlRFWFQpOworCWNvbGluZm8tPm5hbWVzX2hhc2ggPQorCQloYXNoc2V0 X21ha2VfY3h0KE5hbWVEYXRhLCAiZGVwYXJzZV9jb2x1bW5zIG5hbWVzIiwKKwkJCQkJCSBjb2xp bmZvLT5udW1fY29scyArIGNvbGluZm8tPm51bV9uZXdfY29scywKKwkJCQkJCSBDdXJyZW50TWVt b3J5Q29udGV4dCk7CiAKIAkvKgogCSAqIFByZWxvYWQgdGhlIGhhc2ggdGFibGUgd2l0aCBhbnkg bmFtZXMgYWxyZWFkeSBwcmVzZW50ICh0aGVzZSB3b3VsZCBoYXZlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9hdHRvcHRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvYXR0b3B0Y2FjaGUuYwppbmRleCA5MjQ0YTIzMDEzZS4uNDE3MTIxODBiMWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvYXR0b3B0Y2FjaGUuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUg InV0aWxzL2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUg InV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInZhcmF0dC5oIgogCkBAIC05NywyMiArOTgsMTUg QEAgcmVsYXR0X2NhY2hlX3N5c2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpCiBz dGF0aWMgdm9pZAogSW5pdGlhbGl6ZUF0dG9wdENhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCi0JLyogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNp emVvZihBdHRvcHRDYWNoZUtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBdHRvcHRDYWNo ZUVudHJ5KTsKLQogCS8qCiAJICogQXR0b3B0Q2FjaGVFbnRyeSB0YWtlcyBoYXNoIHZhbHVlIGZy b20gdGhlIHN5c3RlbSBjYWNoZS4gRm9yCiAJICogQXR0b3B0Q2FjaGVIYXNoIHdlIHVzZSB0aGUg c2FtZSBoYXNoIGluIG9yZGVyIHRvIHNwZWVkdXAgc2VhcmNoIGJ5IGhhc2gKIAkgKiB2YWx1ZS4g VGhpcyBpcyB1c2VkIGJ5IGhhc2hfc2VxX2luaXRfd2l0aF9oYXNoX3ZhbHVlKCkuCiAJICovCi0J Y3RsLmhhc2ggPSByZWxhdHRfY2FjaGVfc3lzaGFzaDsKLQotCUF0dG9wdENhY2hlSGFzaCA9Ci0J CWhhc2hfY3JlYXRlKCJBdHRvcHQgY2FjaGUiLCAyNTYsICZjdGwsCi0JCQkJCUhBU0hfRUxFTSB8 IEhBU0hfRlVOQ1RJT04pOworCUF0dG9wdENhY2hlSGFzaCA9IGhhc2hfbWFrZV9mbl9jeHQoQXR0 b3B0Q2FjaGVFbnRyeSwga2V5LAorCQkJCQkJCQkJICAgIkF0dG9wdCBjYWNoZSIsIDI1NiwKKwkJ CQkJCQkJCSAgIHJlbGF0dF9jYWNoZV9zeXNoYXNoLCBOVUxMLAorCQkJCQkJCQkJICAgVG9wTWVt b3J5Q29udGV4dCk7CiAKIAkvKiBNYWtlIHN1cmUgd2UndmUgaW5pdGlhbGl6ZWQgQ2FjaGVNZW1v cnlDb250ZXh0LiAqLwogCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2V2dGNhY2hlLmMKaW5kZXggM2ZlODljOWM5OGYuLmI1YjcyYTZhNDdlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2V2dGNhY2hlLmMKQEAgLTc3LDcgKzc3LDYgQEAgRXZlbnRDYWNoZUxvb2t1cChFdmVu dFRyaWdnZXJFdmVudCBldmVudCkKIHN0YXRpYyB2b2lkCiBCdWlsZEV2ZW50VHJpZ2dlckNhY2hl KHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwogCUhUQUIJICAgKmNhY2hlOwogCVJlbGF0aW9uCXJl bDsKIAlSZWxhdGlvbglpcmVsOwpAQCAtMTE0LDExICsxMTMsOSBAQCBCdWlsZEV2ZW50VHJpZ2dl ckNhY2hlKHZvaWQpCiAJRXZlbnRUcmlnZ2VyQ2FjaGVTdGF0ZSA9IEVUQ1NfUkVCVUlMRF9TVEFS VEVEOwogCiAJLyogQ3JlYXRlIG5ldyBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKEV2ZW50VHJpZ2dlckV2ZW50KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEV2ZW50VHJp Z2dlckNhY2hlRW50cnkpOwotCWN0bC5oY3h0ID0gRXZlbnRUcmlnZ2VyQ2FjaGVDb250ZXh0Owot CWNhY2hlID0gaGFzaF9jcmVhdGUoIkV2ZW50VHJpZ2dlckNhY2hlSGFzaCIsIDMyLCAmY3RsLAot CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY2FjaGUgPSBo YXNoX21ha2VfY3h0KEV2ZW50VHJpZ2dlckNhY2hlRW50cnksIGV2ZW50LAorCQkJCQkJICAiRXZl bnRUcmlnZ2VyQ2FjaGVIYXNoIiwgMzIsCisJCQkJCQkgIEV2ZW50VHJpZ2dlckNhY2hlQ29udGV4 dCk7CiAKIAkvKgogCSAqIFByZXBhcmUgdG8gc2NhbiBwZ19ldmVudF90cmlnZ2VyIGluIG5hbWUg b3JkZXIuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCmluZGV4IDcwMWMyOTRiODhkLi5i ZWY5MzhjMzdjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMKQEAgLTU4LDE5ICs1 OCwxMyBAQCBzdGF0aWMgaW50CWNmdW5jX21hdGNoKGNvbnN0IHZvaWQgKmtleTEsIGNvbnN0IHZv aWQgKmtleTIsIFNpemUga2V5c2l6ZSk7CiBzdGF0aWMgdm9pZAogY2Z1bmNfaGFzaHRhYmxlX2lu aXQodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAkvKiBkb24ndCBhbGxvdyBkb3VibGUtaW5p dGlhbGl6YXRpb24gKi8KIAlBc3NlcnQoY2Z1bmNfaGFzaHRhYmxlID09IE5VTEwpOwogCi0JY3Rs LmtleXNpemUgPSBzaXplb2YoQ2FjaGVkRnVuY3Rpb25IYXNoS2V5KTsKLQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKENhY2hlZEZ1bmN0aW9uSGFzaEVudHJ5KTsKLQljdGwuaGFzaCA9IGNmdW5jX2hh c2g7Ci0JY3RsLm1hdGNoID0gY2Z1bmNfbWF0Y2g7Ci0JY2Z1bmNfaGFzaHRhYmxlID0gaGFzaF9j cmVhdGUoIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwKLQkJCQkJCQkJICBGVU5DU19QRVJfVVNFUiwK LQkJCQkJCQkJICAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBI QVNIX0NPTVBBUkUpOworCWNmdW5jX2hhc2h0YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVk RnVuY3Rpb25IYXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgICJDYWNoZWQgZnVuY3Rpb24gaGFz aCIsIEZVTkNTX1BFUl9VU0VSLAorCQkJCQkJCQkJICAgY2Z1bmNfaGFzaCwgY2Z1bmNfbWF0Y2gs CisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCmluZGV4IGUxOWYwZDNlNTFjLi43OWEyOTEzMjRjMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCkBAIC0xNjY4LDE3ICsxNjY4LDE0IEBAIExvb2t1cE9wY2xhc3NJ bmZvKE9pZCBvcGVyYXRvckNsYXNzT2lkLAogCiAJaWYgKE9wQ2xhc3NDYWNoZSA9PSBOVUxMKQog CXsKLQkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBvcGNsYXNzIGNhY2hl ICovCi0JCUhBU0hDVEwJCWN0bDsKLQogCQkvKiBBbHNvIG1ha2Ugc3VyZSBDYWNoZU1lbW9yeUNv bnRleHQgZXhpc3RzICovCiAJCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQogCQkJQ3JlYXRlQ2Fj aGVNZW1vcnlDb250ZXh0KCk7CiAKLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihPcENsYXNzQ2FjaGVFbnQpOwotCQlPcENsYXNzQ2FjaGUgPSBo YXNoX2NyZWF0ZSgiT3BlcmF0b3IgY2xhc3MgY2FjaGUiLCA2NCwKLQkJCQkJCQkJICAgJmN0bCwg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlh bGl6ZSB0aGUgb3BjbGFzcyBjYWNoZSAqLworCQlPcENsYXNzQ2FjaGUgPSBoYXNoX21ha2VfY3h0 KE9wQ2xhc3NDYWNoZUVudCwgb3BjbGFzc29pZCwKKwkJCQkJCQkJCSAiT3BlcmF0b3IgY2xhc3Mg Y2FjaGUiLCA2NCwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAlvcGNlbnRy eSA9IChPcENsYXNzQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goT3BDbGFzc0NhY2hlLApAQCAtMzk5 Myw3ICszOTkwLDYgQEAgUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbG9jYXRvcihSZWxhdGlvbiBy ZWxhdGlvbikKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbml0aWFsaXplKHZvaWQpCiB7Ci0JSEFTSENU TAkJY3RsOwogCWludAkJCWFsbG9jc2l6ZTsKIAogCS8qCkBAIC00MDA1LDEwICs0MDAxLDkgQEAg UmVsYXRpb25DYWNoZUluaXRpYWxpemUodm9pZCkKIAkvKgogCSAqIGNyZWF0ZSBoYXNodGFibGUg dGhhdCBpbmRleGVzIHRoZSByZWxjYWNoZQogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxJZENhY2hlRW50KTsKLQlSZWxhdGlvbklk Q2FjaGUgPSBoYXNoX2NyZWF0ZSgiUmVsY2FjaGUgYnkgT0lEIiwgSU5JVFJFTENBQ0hFU0laRSwK LQkJCQkJCQkJICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlSZWxhdGlvbklkQ2Fj aGUgPSBoYXNoX21ha2VfY3h0KFJlbElkQ2FjaGVFbnQsIHJlbG9pZCwKKwkJCQkJCQkJCSJSZWxj YWNoZSBieSBPSUQiLCBJTklUUkVMQ0FDSEVTSVpFLAorCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4 dCk7CiAKIAkvKgogCSAqIHJlc2VydmUgZW5vdWdoIGluX3Byb2dyZXNzX2xpc3Qgc2xvdHMgZm9y IG1hbnkgY2FzZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVu dW1iZXJtYXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYwpp bmRleCA2Zjk3MGZhZmEwNS4uMDliMDVkZWM5ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxmaWxlbnVtYmVybWFwLmMKQEAgLTg1LDcgKzg1LDYgQEAgUmVsZmlsZW51bWJlck1hcElu dmFsaWRhdGVDYWxsYmFjayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHN0YXRpYyB2b2lkCiBJbml0 aWFsaXplUmVsZmlsZW51bWJlck1hcCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlpbnQJCQlp OwogCiAJLyogTWFrZSBzdXJlIHdlJ3ZlIGluaXRpYWxpemVkIENhY2hlTWVtb3J5Q29udGV4dC4g Ki8KQEAgLTExMywxMyArMTEyLDkgQEAgSW5pdGlhbGl6ZVJlbGZpbGVudW1iZXJNYXAodm9pZCkK IAkgKiBpbml0aWFsaXplZCB3aGVuIGZtZ3JfaW5mb19jeHQoKSBhYm92ZSBFUlJPUnMgb3V0IHdp dGggYW4gb3V0IG9mIG1lbW9yeQogCSAqIGVycm9yLgogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKFJlbGZpbGVudW1iZXJNYXBLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsZmls ZW51bWJlck1hcEVudHJ5KTsKLQljdGwuaGN4dCA9IENhY2hlTWVtb3J5Q29udGV4dDsKLQogCVJl bGZpbGVudW1iZXJNYXBIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlJlbGZpbGVudW1iZXJNYXAgY2Fj aGUiLCA2NCwgJmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7CisJCWhhc2hfbWFrZV9jeHQoUmVsZmlsZW51bWJlck1hcEVudHJ5LCBrZXksCisJCQkJCSAg IlJlbGZpbGVudW1iZXJNYXAgY2FjaGUiLCA2NCwgQ2FjaGVNZW1vcnlDb250ZXh0KTsKIAogCS8q IFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0ZXJSZWxjYWNo ZUNhbGxiYWNrKFJlbGZpbGVudW1iZXJNYXBJbnZhbGlkYXRlQ2FsbGJhY2ssCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvc3BjY2FjaGUuYwppbmRleCAzNjIxNjliN2Q5Ny4uYWNmZjYyYTM4YmUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvc3BjY2FjaGUuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxz L2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9z cGNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidmFyYXR0 LmgiCkBAIC03OCwxNCArNzksMTAgQEAgSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNoZUNhbGxiYWNr KERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsCiBzdGF0aWMgdm9pZAogSW5p dGlhbGl6ZVRhYmxlU3BhY2VDYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQogCS8qIElu aXRpYWxpemUgdGhlIGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsK LQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRhYmxlU3BhY2VDYWNoZUVudHJ5KTsKIAlUYWJsZVNw YWNlQ2FjaGVIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlRhYmxlU3BhY2UgY2FjaGUiLCAxNiwgJmN0 bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWhhc2hfbWFrZV9jeHQoVGFibGVT cGFjZUNhY2hlRW50cnksIG9pZCwKKwkJCQkJICAiVGFibGVTcGFjZSBjYWNoZSIsIDE2LCBUb3BN ZW1vcnlDb250ZXh0KTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSd2ZSBpbml0aWFsaXplZCBDYWNoZU1l bW9yeUNvbnRleHQuICovCiAJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvdHNfY2FjaGUuYwppbmRleCA5ZTI5ZjEzODZiMC4uNzFlNTcwNzYwMDIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvdHNfY2FjaGUuYwpAQCAtMTE4LDEyICsxMTgsOSBAQCBsb29rdXBfdHNfcGFyc2Vy X2NhY2hlKE9pZCBwcnNJZCkKIAlpZiAoVFNQYXJzZXJDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJ CS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlI QVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihUU1BhcnNlckNhY2hlRW50cnkpOwotCQlUU1BhcnNlckNhY2hlSGFzaCA9 IGhhc2hfY3JlYXRlKCJUc2VhcmNoIHBhcnNlciBjYWNoZSIsIDQsCi0JCQkJCQkJCQkJJmN0bCwg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCVRTUGFyc2VyQ2FjaGVIYXNoID0gaGFzaF9tYWtl X2N4dChUU1BhcnNlckNhY2hlRW50cnksIHByc0lkLAorCQkJCQkJCQkJCSAgIlRzZWFyY2ggcGFy c2VyIGNhY2hlIiwgNCwKKwkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkvKiBGbHVz aCBjYWNoZSBvbiBwZ190c19wYXJzZXIgY2hhbmdlcyAqLwogCQlDYWNoZVJlZ2lzdGVyU3lzY2Fj aGVDYWxsYmFjayhUU1BBUlNFUk9JRCwgSW52YWxpZGF0ZVRTQ2FjaGVDYWxsQmFjaywKIAkJCQkJ CQkJCSAgUG9pbnRlckdldERhdHVtKFRTUGFyc2VyQ2FjaGVIYXNoKSk7CkBAIC0yMTMsMTIgKzIx MCw5IEBAIGxvb2t1cF90c19kaWN0aW9uYXJ5X2NhY2hlKE9pZCBkaWN0SWQpCiAJaWYgKFRTRGlj dGlvbmFyeUNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBp bml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5 c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRTRGljdGlvbmFy eUNhY2hlRW50cnkpOwotCQlUU0RpY3Rpb25hcnlDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiVHNl YXJjaCBkaWN0aW9uYXJ5IGNhY2hlIiwgOCwKLQkJCQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyk7CisJCVRTRGljdGlvbmFyeUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoVFNE aWN0aW9uYXJ5Q2FjaGVFbnRyeSwgZGljdElkLAorCQkJCQkJCQkJCQkgICJUc2VhcmNoIGRpY3Rp b25hcnkgY2FjaGUiLCA4LAorCQkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkvKiBG bHVzaCBjYWNoZSBvbiBwZ190c19kaWN0IGFuZCBwZ190c190ZW1wbGF0ZSBjaGFuZ2VzICovCiAJ CUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTRElDVE9JRCwgSW52YWxpZGF0ZVRTQ2Fj aGVDYWxsQmFjaywKIAkJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTRGljdGlvbmFyeUNhY2hl SGFzaCkpOwpAQCAtMzY0LDEyICszNTgsOSBAQCBsb29rdXBfdHNfZGljdGlvbmFyeV9jYWNoZShP aWQgZGljdElkKQogc3RhdGljIHZvaWQKIGluaXRfdHNfY29uZmlnX2NhY2hlKHZvaWQpCiB7Ci0J SEFTSENUTAkJY3RsOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFRTQ29uZmlnQ2FjaGVFbnRyeSk7Ci0JVFNDb25maWdDYWNoZUhhc2ggPSBo YXNoX2NyZWF0ZSgiVHNlYXJjaCBjb25maWd1cmF0aW9uIGNhY2hlIiwgMTYsCi0JCQkJCQkJCQkm Y3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlUU0NvbmZpZ0NhY2hlSGFzaCA9IGhhc2hf bWFrZV9jeHQoVFNDb25maWdDYWNoZUVudHJ5LCBjZmdJZCwKKwkJCQkJCQkJCSAgIlRzZWFyY2gg Y29uZmlndXJhdGlvbiBjYWNoZSIsIDE2LAorCQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0KTsK IAkvKiBGbHVzaCBjYWNoZSBvbiBwZ190c19jb25maWcgYW5kIHBnX3RzX2NvbmZpZ19tYXAgY2hh bmdlcyAqLwogCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTQ09ORklHT0lELCBJbnZh bGlkYXRlVFNDYWNoZUNhbGxCYWNrLAogCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bShUU0NvbmZp Z0NhY2hlSGFzaCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggY2ViZTdhOTE2 ZmIuLjVlNjY1MDQwNGY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTM5NSwy OCArMzk1LDIzIEBAIGxvb2t1cF90eXBlX2NhY2hlKE9pZCB0eXBlX2lkLCBpbnQgZmxhZ3MpCiAJ aWYgKFR5cGVDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDog aW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7CiAJCWludAkJCWFs bG9jc2l6ZTsKIAotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKFR5cGVDYWNoZUVudHJ5KTsKLQogCQkvKgogCQkgKiBUeXBlQ2FjaGVFbnRyeSB0 YWtlcyBoYXNoIHZhbHVlIGZyb20gdGhlIHN5c3RlbSBjYWNoZS4gRm9yCiAJCSAqIFR5cGVDYWNo ZUhhc2ggd2UgdXNlIHRoZSBzYW1lIGhhc2ggaW4gb3JkZXIgdG8gc3BlZWR1cCBzZWFyY2ggYnkK IAkJICogaGFzaCB2YWx1ZS4gVGhpcyBpcyB1c2VkIGJ5IGhhc2hfc2VxX2luaXRfd2l0aF9oYXNo X3ZhbHVlKCkuCiAJCSAqLwotCQljdGwuaGFzaCA9IHR5cGVfY2FjaGVfc3lzaGFzaDsKLQotCQlU eXBlQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIlR5cGUgaW5mb3JtYXRpb24gY2FjaGUiLCA2NCwK LQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04pOworCQlUeXBlQ2FjaGVI YXNoID0gaGFzaF9tYWtlX2ZuX2N4dChUeXBlQ2FjaGVFbnRyeSwgdHlwZV9pZCwKKwkJCQkJCQkJ CQkgIlR5cGUgaW5mb3JtYXRpb24gY2FjaGUiLCA2NCwKKwkJCQkJCQkJCQkgdHlwZV9jYWNoZV9z eXNoYXNoLCBOVUxMLAorCQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQlBc3NlcnQo UmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9PSBOVUxMKTsKIAotCQljdGwua2V5c2l6ZSA9IHNpemVv ZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbElkVG9UeXBlSWRDYWNoZUVudHJ5 KTsKLQkJUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJNYXAgZnJvbSByZWxp ZCB0byBPSUQgb2YgY2FjaGVkIGNvbXBvc2l0ZSB0eXBlIiwgNjQsCi0JCQkJCQkJCQkJCSAmY3Rs LCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9IGhh c2hfbWFrZV9jeHQoUmVsSWRUb1R5cGVJZENhY2hlRW50cnksIHJlbGlkLAorCQkJCQkJCQkJCQkg ICAiTWFwIGZyb20gcmVsaWQgdG8gT0lEIG9mIGNhY2hlZCBjb21wb3NpdGUgdHlwZSIsCisJCQkJ CQkJCQkJCSAgIDY0LCBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBbHNvIHNldCB1cCBjYWxs YmFja3MgZm9yIFNJIGludmFsaWRhdGlvbnMgKi8KIAkJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2Fs bGJhY2soVHlwZUNhY2hlUmVsQ2FsbGJhY2ssIChEYXR1bSkgMCk7CkBAIC0yMDc2LDE1ICsyMDcx LDExIEBAIGFzc2lnbl9yZWNvcmRfdHlwZV90eXBtb2QoVHVwbGVEZXNjIHR1cERlc2MpCiAJaWYg KFJlY29yZENhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBp bml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5 c2l6ZSA9IHNpemVvZihUdXBsZURlc2MpOwkvKiBqdXN0IHRoZSBwb2ludGVyICovCi0JCWN0bC5l bnRyeXNpemUgPSBzaXplb2YoUmVjb3JkQ2FjaGVFbnRyeSk7Ci0JCWN0bC5oYXNoID0gcmVjb3Jk X3R5cGVfdHlwbW9kX2hhc2g7Ci0JCWN0bC5tYXRjaCA9IHJlY29yZF90eXBlX3R5cG1vZF9jb21w YXJlOwotCQlSZWNvcmRDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiUmVjb3JkIGluZm9ybWF0aW9u IGNhY2hlIiwgNjQsCi0JCQkJCQkJCQkgICZjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhB U0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUpOworCQlSZWNvcmRDYWNoZUhhc2ggPSBoYXNoX21h a2VfZm5fY3h0KFJlY29yZENhY2hlRW50cnksIHR1cGRlc2MsCisJCQkJCQkJCQkJICAgIlJlY29y ZCBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAorCQkJCQkJCQkJCSAgIHJlY29yZF90eXBlX3R5cG1v ZF9oYXNoLAorCQkJCQkJCQkJCSAgIHJlY29yZF90eXBlX3R5cG1vZF9jb21wYXJlLAorCQkJCQkJ CQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFsc28gbWFrZSBzdXJlIENhY2hlTWVt b3J5Q29udGV4dCBleGlzdHMgKi8KIAkJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy9m bWdyL2RmbWdyLmMKaW5kZXggZTYzNmNjODFjZjguLjVkOTk0NjdlMmJkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1n ci9kZm1nci5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogCiAvKiBzaWduYXR1cmUgZm9yIFBvc3RncmVTUUwt c3BlY2lmaWMgbGlicmFyeSBpbml0IGZ1bmN0aW9uICovCkBAIC02NzEsMTQgKzY3Miw5IEBAIGZp bmRfcmVuZGV6dm91c192YXJpYWJsZShjb25zdCBjaGFyICp2YXJOYW1lKQogCS8qIENyZWF0ZSBh IGhhc2h0YWJsZSBpZiB3ZSBoYXZlbid0IGFscmVhZHkgZG9uZSBzbyBpbiB0aGlzIHByb2Nlc3Mg Ki8KIAlpZiAocmVuZGV6dm91c0hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsKLQot CQljdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHJl bmRlenZvdXNIYXNoRW50cnkpOwotCQlyZW5kZXp2b3VzSGFzaCA9IGhhc2hfY3JlYXRlKCJSZW5k ZXp2b3VzIHZhcmlhYmxlIGhhc2giLAotCQkJCQkJCQkJIDE2LAotCQkJCQkJCQkJICZjdGwsCi0J CQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkJcmVuZGV6dm91c0hhc2ggPSBo YXNoX21ha2VfY3h0KHJlbmRlenZvdXNIYXNoRW50cnksIHZhck5hbWUsCisJCQkJCQkJCQkgICAi UmVuZGV6dm91cyB2YXJpYWJsZSBoYXNoIiwgMTYsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250 ZXh0KTsKIAl9CiAKIAkvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaGFzaHRhYmxlIGVudHJ5IGZvciB0 aGlzIHZhck5hbWUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKaW5kZXggYmZlY2ViN2E5MmYuLmRiOGM0 M2Q5MmNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg InV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0 aWxzL3N5c2NhY2hlLmgiCiAKIC8qCkBAIC01NDgsMTQgKzU0OSw4IEBAIHJlY29yZF9DX2Z1bmMo SGVhcFR1cGxlIHByb2NlZHVyZVR1cGxlLAogCS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBpZiBp dCBkb2Vzbid0IGV4aXN0IHlldCAqLwogCWlmIChDRnVuY0hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhB U0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJ aGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENGdW5jSGFzaFRhYkVudHJ5KTsKLQkJQ0Z1bmNI YXNoID0gaGFzaF9jcmVhdGUoIkNGdW5jSGFzaCIsCi0JCQkJCQkJCTEwMCwKLQkJCQkJCQkJJmhh c2hfY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJQ0Z1bmNIYXNoID0g aGFzaF9tYWtlX2N4dChDRnVuY0hhc2hUYWJFbnRyeSwgZm5fb2lkLAorCQkJCQkJCQkgICJDRnVu Y0hhc2giLCAxMDAsIFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCWVudHJ5ID0gKENGdW5jSGFz aFRhYkVudHJ5ICopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBlMTU0NmQ5Yzk3YS4uY2Q5OWQ3MmU4 YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtODcyLDcgKzg3Miw2IEBAIGJ1aWxkX2d1Y192YXJp YWJsZXModm9pZCkKIHsKIAlpbnQJCQlzaXplX3ZhcnM7CiAJaW50CQkJbnVtX3ZhcnMgPSAwOwot CUhBU0hDVEwJCWhhc2hfY3RsOwogCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwogCWJvb2wJCWZvdW5k OwogCkBAIC04OTUsMTUgKzg5NCwxMCBAQCBidWlsZF9ndWNfdmFyaWFibGVzKHZvaWQpCiAJICov CiAJc2l6ZV92YXJzID0gbnVtX3ZhcnMgKyBudW1fdmFycyAvIDQ7CiAKLQloYXNoX2N0bC5rZXlz aXplID0gc2l6ZW9mKGNoYXIgKik7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEdVQ0hh c2hFbnRyeSk7Ci0JaGFzaF9jdGwuaGFzaCA9IGd1Y19uYW1lX2hhc2g7Ci0JaGFzaF9jdGwubWF0 Y2ggPSBndWNfbmFtZV9tYXRjaDsKLQloYXNoX2N0bC5oY3h0ID0gR1VDTWVtb3J5Q29udGV4dDsK LQlndWNfaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJHVUMgaGFzaCB0YWJsZSIsCi0JCQkJCQkJICBz aXplX3ZhcnMsCi0JCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNI X0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwlndWNfaGFzaHRhYiA9 IGhhc2hfbWFrZV9mbl9jeHQoR1VDSGFzaEVudHJ5LCBndWNuYW1lLAorCQkJCQkJCQkgICAiR1VD IGhhc2ggdGFibGUiLCBzaXplX3ZhcnMsCisJCQkJCQkJCSAgIGd1Y19uYW1lX2hhc2gsIGd1Y19u YW1lX21hdGNoLAorCQkJCQkJCQkgICBHVUNNZW1vcnlDb250ZXh0KTsKIAogCWZvciAoaW50IGkg PSAwOyBDb25maWd1cmVOYW1lc1tpXS5uYW1lOyBpKyspCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvaW5qZWN0aW9uX3BvaW50LmMKaW5kZXggYzA2YjBlOWI4MDAuLmE2Y2I0NjQwMmFhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKQEAgLTEyNywxNiArMTI3LDEw IEBAIGluamVjdGlvbl9wb2ludF9jYWNoZV9hZGQoY29uc3QgY2hhciAqbmFtZSwKIAkvKiBJZiBm aXJzdCB0aW1lLCBpbml0aWFsaXplICovCiAJaWYgKEluamVjdGlvblBvaW50Q2FjaGUgPT0gTlVM TCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXpl b2YoY2hhcltJTkpfTkFNRV9NQVhMRU5dKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9m KEluamVjdGlvblBvaW50Q2FjaGVFbnRyeSk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBUb3BNZW1vcnlD b250ZXh0OwotCi0JCUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX2NyZWF0ZSgiSW5qZWN0aW9u UG9pbnQgY2FjaGUgaGFzaCIsCi0JCQkJCQkJCQkJICBNQVhfSU5KRUNUSU9OX1BPSU5UUywKLQkJ CQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5H UyB8IEhBU0hfQ09OVEVYVCk7CisJCUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX21ha2VfY3h0 KEluamVjdGlvblBvaW50Q2FjaGVFbnRyeSwgbmFtZSwKKwkJCQkJCQkJCQkJIkluamVjdGlvblBv aW50IGNhY2hlIGhhc2giLAorCQkJCQkJCQkJCQlNQVhfSU5KRUNUSU9OX1BPSU5UUywKKwkJCQkJ CQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJZW50cnkgPSAoSW5qZWN0aW9uUG9pbnRD YWNoZUVudHJ5ICopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCA0OTNmOWIwZWUx OS4uZjhhNmRiNTMxNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFs bWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMTA1LDIz ICsxMDUsMTkgQEAgc3RhdGljIE1lbW9yeUNvbnRleHQgVG9wUG9ydGFsQ29udGV4dCA9IE5VTEw7 CiB2b2lkCiBFbmFibGVQb3J0YWxNYW5hZ2VyKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJ QXNzZXJ0KFRvcFBvcnRhbENvbnRleHQgPT0gTlVMTCk7CiAKIAlUb3BQb3J0YWxDb250ZXh0ID0g QWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCSAiVG9w UG9ydGFsQ29udGV4dCIsCiAJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAot CWN0bC5rZXlzaXplID0gTUFYX1BPUlRBTE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXpl b2YoUG9ydGFsSGFzaEVudCk7Ci0KIAkvKgogCSAqIHVzZSBQT1JUQUxTX1BFUl9VU0VSIGFzIGEg Z3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBlbnRyaWVzIHRvCiAJICogY3JlYXRlLCBpbml0 aWFsbHkKIAkgKi8KLQlQb3J0YWxIYXNoVGFibGUgPSBoYXNoX2NyZWF0ZSgiUG9ydGFsIGhhc2gi LCBQT1JUQUxTX1BFUl9VU0VSLAotCQkJCQkJCQkgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfU1RS SU5HUyk7CisJUG9ydGFsSGFzaFRhYmxlID0gaGFzaF9tYWtlX2N4dChQb3J0YWxIYXNoRW50LCBw b3J0YWxuYW1lLAorCQkJCQkJCQkJIlBvcnRhbCBoYXNoIiwgUE9SVEFMU19QRVJfVVNFUiwKKwkJ CQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvdGltZS9jb21ib2NpZC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9jb21ib2Np ZC5jCmluZGV4IDYxNGI3YzEwMDZiLi40YzMxNjc1NTM1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvdGltZS9jb21ib2NpZC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvY29t Ym9jaWQuYwpAQCAtMjE0LDggKzIxNCw2IEBAIEdldENvbWJvQ29tbWFuZElkKENvbW1hbmRJZCBj bWluLCBDb21tYW5kSWQgY21heCkKIAkgKi8KIAlpZiAoY29tYm9IYXNoID09IE5VTEwpCiAJewot CQlIQVNIQ1RMCQloYXNoX2N0bDsKLQogCQkvKiBNYWtlIGFycmF5IGZpcnN0OyBleGlzdGVuY2Ug b2YgaGFzaCB0YWJsZSBhc3NlcnRzIGFycmF5IGV4aXN0cyAqLwogCQljb21ib0NpZHMgPSAoQ29t Ym9DaWRLZXlEYXRhICopCiAJCQlNZW1vcnlDb250ZXh0QWxsb2MoVG9wVHJhbnNhY3Rpb25Db250 ZXh0LApAQCAtMjIzLDE0ICsyMjEsOSBAQCBHZXRDb21ib0NvbW1hbmRJZChDb21tYW5kSWQgY21p biwgQ29tbWFuZElkIGNtYXgpCiAJCXNpemVDb21ib0NpZHMgPSBDQ0lEX0FSUkFZX1NJWkU7CiAJ CXVzZWRDb21ib0NpZHMgPSAwOwogCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoQ29tYm9D aWRLZXlEYXRhKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENvbWJvQ2lkRW50cnlE YXRhKTsKLQkJaGFzaF9jdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsKLQotCQljb21i b0hhc2ggPSBoYXNoX2NyZWF0ZSgiQ29tYm8gQ0lEcyIsCi0JCQkJCQkJCUNDSURfSEFTSF9TSVpF LAotCQkJCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOworCQljb21ib0hhc2ggPSBoYXNoX21ha2VfY3h0KENvbWJvQ2lkRW50cnlE YXRhLCBrZXksCisJCQkJCQkJCSAgIkNvbWJvIENJRHMiLCBDQ0lEX0hBU0hfU0laRSwKKwkJCQkJ CQkJICBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMv cGwvcGxwZXJsL3BscGVybC5jIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwppbmRleCAwNmViZmZh MTExYy4uYmM1YmQ1ZmEwNTEgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKKysr IGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwpAQCAtMzkxLDcgKzM5MSw2IEBAIF9QR19pbml0KHZv aWQpCiAJICogInBscGVybC51c2Vfc3RyaWN0IgogCSAqLwogCXN0YXRpYyBib29sIGluaXRlZCA9 IGZhbHNlOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJaWYgKGluaXRlZCkKIAkJcmV0dXJuOwpA QCAtNDYxLDE5ICs0NjAsMTMgQEAgX1BHX2luaXQodm9pZCkKIAkvKgogCSAqIENyZWF0ZSBoYXNo IHRhYmxlcy4KIAkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9j dGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGVybF9pbnRlcnBfZGVzYyk7Ci0JcGxwZXJsX2ludGVy cF9oYXNoID0gaGFzaF9jcmVhdGUoIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwKLQkJCQkJCQkJCSA4 LAotCQkJCQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JT KTsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YocGxwZXJsX3Byb2Nfa2V5KTsKLQloYXNo X2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZXJsX3Byb2NfcHRyKTsKLQlwbHBlcmxfcHJvY19o YXNoID0gaGFzaF9jcmVhdGUoIlBML1BlcmwgcHJvY2VkdXJlcyIsCi0JCQkJCQkJCSAgIDMyLAot CQkJCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMp OworCXBscGVybF9pbnRlcnBfaGFzaCA9IGhhc2hfbWFrZV9jeHQocGxwZXJsX2ludGVycF9kZXNj LCB1c2VyX2lkLAorCQkJCQkJCQkJICAgIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwgOCwKKwkJCQkJ CQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOworCisJcGxwZXJsX3Byb2NfaGFzaCA9IGhhc2hfbWFr ZV9jeHQocGxwZXJsX3Byb2NfcHRyLCBwcm9jX2tleSwKKwkJCQkJCQkJCSAiUEwvUGVybCBwcm9j ZWR1cmVzIiwgMzIsCisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKgogCSAqIFNh dmUgdGhlIGRlZmF1bHQgb3BtYXNrLgpAQCAtNTc5LDE0ICs1NzIsOSBAQCBzZWxlY3RfcGVybF9j b250ZXh0KGJvb2wgdHJ1c3RlZCkKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIHF1ZXJ5X2hhc2gg Zm9yIHRoaXMgaW50ZXJwcmV0ZXIgKi8KIAlpZiAoaW50ZXJwX2Rlc2MtPnF1ZXJ5X2hhc2ggPT0g TlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBO QU1FREFUQUxFTjsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGVybF9xdWVyeV9l bnRyeSk7Ci0JCWludGVycF9kZXNjLT5xdWVyeV9oYXNoID0gaGFzaF9jcmVhdGUoIlBML1Blcmwg cXVlcmllcyIsCi0JCQkJCQkJCQkJCSAgMzIsCi0JCQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJ CQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCWludGVycF9kZXNjLT5xdWVy eV9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBlcmxfcXVlcnlfZW50cnksIHF1ZXJ5X25hbWUsCisJ CQkJCQkJCQkJCQkiUEwvUGVybCBxdWVyaWVzIiwgMzIsCisJCQkJCQkJCQkJCQlUb3BNZW1vcnlD b250ZXh0KTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4 ZWMuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKaW5kZXggNjViMGZkMDc5MGYuLjU3 OWVlY2U0YzZmIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisrKyBi L3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKQEAgLTQwMTUsOCArNDAxNSw2IEBAIHBscGdz cWxfZXN0YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCSBFU3RhdGUg KnNpbXBsZV9ldmFsX2VzdGF0ZSwKIAkJCQkJIFJlc291cmNlT3duZXIgc2ltcGxlX2V2YWxfcmVz b3duZXIpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJLyogdGhpcyBsaW5rIHdpbGwgYmUgcmVzdG9y ZWQgYXQgZXhpdCBmcm9tIHBscGdzcWxfY2FsbF9oYW5kbGVyICovCiAJZnVuYy0+Y3VyX2VzdGF0 ZSA9IGVzdGF0ZTsKIApAQCAtNDA3MSwxMiArNDA2OSwxMCBAQCBwbHBnc3FsX2VzdGF0ZV9zZXR1 cChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCS8qIENyZWF0ZSB0aGUgc2Vzc2lvbi13aWRl IGNhc3QtZXhwcmVzc2lvbiBoYXNoIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJaWYgKGNhc3Rf ZXhwcl9oYXNoID09IE5VTEwpCiAJewotCQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nh c3RIYXNoS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RFeHBySGFz aEVudHJ5KTsKLQkJY2FzdF9leHByX2hhc2ggPSBoYXNoX2NyZWF0ZSgiUExwZ1NRTCBjYXN0IGV4 cHJlc3Npb25zIiwKLQkJCQkJCQkJCSAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwot CQkJCQkJCQkJICZjdGwsCi0JCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWNh c3RfZXhwcl9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBnc3FsX0Nhc3RFeHBySGFzaEVudHJ5LCBr ZXksCisJCQkJCQkJCQkgICAiUExwZ1NRTCBjYXN0IGV4cHJlc3Npb25zIiwKKwkJCQkJCQkJCSAg IDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCisJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKIAl9CiAKIAkvKiBzZXQgdXAgZm9yIHVzZSBvZiBhcHByb3ByaWF0ZSBzaW1wbGUt ZXhwcmVzc2lvbiBFU3RhdGUgYW5kIGNhc3QgaGFzaCAqLwpAQCAtNDA4NCwxMyArNDA4MCw5IEBA IHBscGdzcWxfZXN0YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJewogCQll c3RhdGUtPnNpbXBsZV9ldmFsX2VzdGF0ZSA9IHNpbXBsZV9ldmFsX2VzdGF0ZTsKIAkJLyogUHJp dmF0ZSBjYXN0IGhhc2gganVzdCBsaXZlcyBpbiBmdW5jdGlvbidzIG1haW4gY29udGV4dCAqLwot CQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoS2V5KTsKLQkJY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoRW50cnkpOwotCQljdGwuaGN4dCA9IEN1cnJl bnRNZW1vcnlDb250ZXh0OwotCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTHBn U1FMIHByaXZhdGUgY2FzdCBjYWNoZSIsCi0JCQkJCQkJCQkJMTYsIC8qIHN0YXJ0IHNtYWxsIGFu ZCBleHRlbmQgKi8KLQkJCQkJCQkJCQkmY3RsLAotCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfbWFrZShw bHBnc3FsX0Nhc3RIYXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgIlBMcGdTUUwgcHJpdmF0ZSBj YXN0IGNhY2hlIiwKKwkJCQkJCQkJCSAgMTYpOwkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICov CiAJfQogCWVsc2UKIAl7CkBAIC00MDk4LDEyICs0MDkwLDEwIEBAIHBscGdzcWxfZXN0YXRlX3Nl dHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCS8qIENyZWF0ZSB0aGUgc2Vzc2lvbi13 aWRlIGNhc3QtaW5mbyBoYXNoIHRhYmxlIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJCWlmIChz aGFyZWRfY2FzdF9oYXNoID09IE5VTEwpCiAJCXsKLQkJCWN0bC5rZXlzaXplID0gc2l6ZW9mKHBs cGdzcWxfQ2FzdEhhc2hLZXkpOwotCQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nh c3RIYXNoRW50cnkpOwotCQkJc2hhcmVkX2Nhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTHBnU1FM IGNhc3QgY2FjaGUiLAotCQkJCQkJCQkJCSAgIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5k ICovCi0JCQkJCQkJCQkJICAgJmN0bCwKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwkJCXNoYXJlZF9jYXN0X2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGdzcWxfQ2FzdEhh c2hFbnRyeSwga2V5LAorCQkJCQkJCQkJCQkgIlBMcGdTUUwgY2FzdCBjYWNoZSIsCisJCQkJCQkJ CQkJCSAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLworCQkJCQkJCQkJCQkgVG9wTWVt b3J5Q29udGV4dCk7CiAJCX0KIAkJZXN0YXRlLT5jYXN0X2hhc2ggPSBzaGFyZWRfY2FzdF9oYXNo OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYyBiL3Ny Yy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwppbmRleCA3MjgwNmMxN2UxNy4uNzFhNzZi ODVlYzggMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYworKysg Yi9zcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMKQEAgLTE2LDYgKzE2LDcgQEAKICNp bmNsdWRlICJwbHB5X3N1YnhhY3RvYmplY3QuaCIKICNpbmNsdWRlICJwbHB5X3V0aWwuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAK IEhUQUIJICAgKlBMeV9zcGlfZXhjZXB0aW9ucyA9IE5VTEw7CiAKQEAgLTE0NSw3ICsxNDYsNiBA QCBzdGF0aWMgdm9pZAogUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5KQogewogCVB5 T2JqZWN0ICAgKmV4Y21vZDsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAogCVBMeV9leGNfZXJyb3Ig PSBQTHlfY3JlYXRlX2V4Y2VwdGlvbigicGxweS5FcnJvciIsIE5VTEwsIE5VTEwsCiAJCQkJCQkJ CQkJICJFcnJvciIsIHBscHkpOwpAQCAtMTU4LDEwICsxNTgsOSBAQCBQTHlfYWRkX2V4Y2VwdGlv bnMoUHlPYmplY3QgKnBscHkpCiAJaWYgKGV4Y21vZCA9PSBOVUxMKQogCQlQTHlfZWxvZyhFUlJP UiwgImNvdWxkIG5vdCBjcmVhdGUgdGhlIHNwaWV4Y2VwdGlvbnMgbW9kdWxlIik7CiAKLQloYXNo X2N0bC5rZXlzaXplID0gc2l6ZW9mKGludCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9m KFBMeUV4Y2VwdGlvbkVudHJ5KTsKLQlQTHlfc3BpX2V4Y2VwdGlvbnMgPSBoYXNoX2NyZWF0ZSgi UEwvUHl0aG9uIFNQSSBleGNlcHRpb25zIiwgMjU2LAotCQkJCQkJCQkJICZoYXNoX2N0bCwgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJUEx5X3NwaV9leGNlcHRpb25zID0gaGFzaF9tYWtlX2N4 dChQTHlFeGNlcHRpb25FbnRyeSwgc3Fsc3RhdGUsCisJCQkJCQkJCQkgICAiUEwvUHl0aG9uIFNQ SSBleGNlcHRpb25zIiwgMjU2LAorCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAlQ THlfZ2VuZXJhdGVfc3BpX2V4Y2VwdGlvbnMoZXhjbW9kLCBQTHlfZXhjX3NwaV9lcnJvcik7CiAK ZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jIGIvc3JjL3BsL3Bs cHl0aG9uL3BscHlfcHJvY2VkdXJlLmMKaW5kZXggNzUwYmE1ODZlMGMuLmZjNzI4ZjdhYjhhIDEw MDY0NAotLS0gYS9zcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYworKysgYi9zcmMvcGwv cGxweXRob24vcGxweV9wcm9jZWR1cmUuYwpAQCAtMjksMTIgKzI5LDkgQEAgc3RhdGljIGNoYXIg KlBMeV9wcm9jZWR1cmVfbXVuZ2Vfc291cmNlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIg KnNyYyk7CiB2b2lkCiBpbml0X3Byb2NlZHVyZV9jYWNoZXModm9pZCkKIHsKLQlIQVNIQ1RMCQlo YXNoX2N0bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUEx5UHJvY2VkdXJlS2V5KTsK LQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUEx5UHJvY2VkdXJlRW50cnkpOwotCVBMeV9w cm9jZWR1cmVfY2FjaGUgPSBoYXNoX2NyZWF0ZSgiUEwvUHl0aG9uIHByb2NlZHVyZXMiLCAzMiwg Jmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlQTHlfcHJv Y2VkdXJlX2NhY2hlID0gaGFzaF9tYWtlX2N4dChQTHlQcm9jZWR1cmVFbnRyeSwga2V5LAorCQkJ CQkJCQkJCSJQTC9QeXRob24gcHJvY2VkdXJlcyIsIDMyLAorCQkJCQkJCQkJCVRvcE1lbW9yeUNv bnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3RjbC9wbHRjbC5jIGIvc3JjL3Bs L3RjbC9wbHRjbC5jCmluZGV4IDg1ZTgzYmJmMWUzLi44ZDVlOGVkYmZlMCAxMDA2NDQKLS0tIGEv c3JjL3BsL3RjbC9wbHRjbC5jCisrKyBiL3NyYy9wbC90Y2wvcGx0Y2wuYwpAQCAtNDEwLDcgKzQx MCw2IEBAIHZvaWQKIF9QR19pbml0KHZvaWQpCiB7CiAJVGNsX05vdGlmaWVyUHJvY3Mgbm90aWZp ZXI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAKIAkvKiBCZSBzdXJlIHdlIGRvIGluaXRpYWxpemF0 aW9uIG9ubHkgb25jZSAoc2hvdWxkIGJlIHJlZHVuZGFudCBub3cpICovCiAJaWYgKHBsdGNsX3Bt X2luaXRfZG9uZSkKQEAgLTQ0OCwyMiArNDQ3LDE2IEBAIF9QR19pbml0KHZvaWQpCiAJLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog CSAqIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBmb3Igd29ya2luZyBpbnRlcnByZXRlcnMKIAkgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUg PSBzaXplb2YocGx0Y2xfaW50ZXJwX2Rlc2MpOwotCXBsdGNsX2ludGVycF9odGFiID0gaGFzaF9j cmVhdGUoIlBML1RjbCBpbnRlcnByZXRlcnMiLAotCQkJCQkJCQkJOCwKLQkJCQkJCQkJCSZoYXNo X2N0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXBsdGNsX2ludGVycF9o dGFiID0gaGFzaF9tYWtlX2N4dChwbHRjbF9pbnRlcnBfZGVzYywgdXNlcl9pZCwKKwkJCQkJCQkJ CSAgIlBML1RjbCBpbnRlcnByZXRlcnMiLCA4LAorCQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0 KTsKIAogCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKIAkgKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIGZ1bmN0aW9uIGxvb2t1 cAogCSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihwbHRjbF9wcm9jX2tleSk7Ci0J aGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBsdGNsX3Byb2NfcHRyKTsKLQlwbHRjbF9wcm9j X2h0YWIgPSBoYXNoX2NyZWF0ZSgiUEwvVGNsIGZ1bmN0aW9ucyIsCi0JCQkJCQkJCSAgMTAwLAot CQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsK KwlwbHRjbF9wcm9jX2h0YWIgPSBoYXNoX21ha2VfY3h0KHBsdGNsX3Byb2NfcHRyLCBwcm9jX2tl eSwKKwkJCQkJCQkJCSJQTC9UY2wgZnVuY3Rpb25zIiwgMTAwLAorCQkJCQkJCQkJVG9wTWVtb3J5 Q29udGV4dCk7CiAKIAkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAJICogRGVmaW5lIFBML1RjbCdzIGN1c3RvbSBHVUNzCmRpZmYg LS1naXQgYS9zcmMvdGltZXpvbmUvcGd0ei5jIGIvc3JjL3RpbWV6b25lL3BndHouYwppbmRleCBl YWM5ODhjMjFlNy4uYzY4ZGU5M2I1MzUgMTAwNjQ0Ci0tLSBhL3NyYy90aW1lem9uZS9wZ3R6LmMK KysrIGIvc3JjL3RpbWV6b25lL3BndHouYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgInBn dHouaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5o IgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIAogLyogQ3VycmVudCBzZXNzaW9uIHRp bWV6b25lIChjb250cm9sbGVkIGJ5IFRpbWVab25lIEdVQykgKi8KQEAgLTIwMSwxNSArMjAyLDgg QEAgc3RhdGljIEhUQUIgKnRpbWV6b25lX2NhY2hlID0gTlVMTDsKIHN0YXRpYyBib29sCiBpbml0 X3RpbWV6b25lX2hhc2h0YWJsZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JaGFz aF9jdGwua2V5c2l6ZSA9IFRaX1NUUkxFTl9NQVggKyAxOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihwZ190el9jYWNoZSk7Ci0KLQl0aW1lem9uZV9jYWNoZSA9IGhhc2hfY3JlYXRlKCJU aW1lem9uZXMiLAotCQkJCQkJCQkgNCwKLQkJCQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJIEhB U0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJdGltZXpvbmVfY2FjaGUgPSBoYXNoX21ha2VfY3h0 KHBnX3R6X2NhY2hlLCB0em5hbWV1cHBlciwKKwkJCQkJCQkJICAgIlRpbWV6b25lcyIsIDQsIFRv cE1lbW9yeUNvbnRleHQpOwogCWlmICghdGltZXpvbmVfY2FjaGUpCiAJCXJldHVybiBmYWxzZTsK IAotLSAKMi41My4wCgo= --a91699ffa7e6cc4e3f5c5318326cd9392f0e1373c1b243d4367b86ee0bd6 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0004-Use-foreach_hash-macro-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v13-0004-Use-foreach_hash-macro-throughout-the-codebase.patch RnJvbSA2OGNhZDk1NmQyOTNiYjUxYzM1OTEwMjJmZTdlMzQ5MjgyZTVjMWYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MyA0LzVdIFVzZSBmb3JlYWNoX2hhc2ggbWFjcm8gdGhyb3VnaG91dCB0aGUgY29kZWJhc2UKClRo 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 ZGJsaW5rLmMKaW5kZXggNTNhM2EwOTBkMzQuLmQwMzY2OWQxNjNlIDEwMDY0NAotLS0gYS9jb250 cmliL2RibGluay9kYmxpbmsuYworKysgYi9jb250cmliL2RibGluay9kYmxpbmsuYwpAQCAtMTI3 OSwxNCArMTI3OSwxMSBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGRibGlua19nZXRfY29ubmVjdGlv bnMpOwogRGF0dW0KIGRibGlua19nZXRfY29ubmVjdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCXJlbW90ZUNvbm5IYXNoRW50ICpoZW50cnk7CiAJ QXJyYXlCdWlsZFN0YXRlICphc3RhdGUgPSBOVUxMOwogCiAJaWYgKHJlbW90ZUNvbm5IYXNoKQog CXsKLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCByZW1vdGVDb25uSGFzaCk7Ci0JCXdoaWxlICgo aGVudHJ5ID0gKHJlbW90ZUNvbm5IYXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKHJlbW90ZUNvbm5IYXNoRW50LCBoZW50cnksIHJlbW90 ZUNvbm5IYXNoKQogCQl7CiAJCQkvKiBpZ25vcmUgaXQgaWYgaXQncyBub3QgYW4gb3BlbiBjb25u ZWN0aW9uICovCiAJCQlpZiAoaGVudHJ5LT5yY29ubi5jb25uID09IE5VTEwpCmRpZmYgLS1naXQg YS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRy aWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDJhZjgyOGE5 OTkxLi45NjYyMWFmNTg3MSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTc0Miw5ICs3NDIsNyBAQCBwZ3NzX3NobWVtX3NodXRkb3du KGludCBjb2RlLCBEYXR1bSBhcmcpCiAJRklMRQkgICAqZmlsZTsKIAljaGFyCSAgICpxYnVmZmVy ID0gTlVMTDsKIAlTaXplCQlxYnVmZmVyX3NpemUgPSAwOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNo X3NlcTsKIAlpbnQzMgkJbnVtX2VudHJpZXM7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAKIAkvKiBE b24ndCB0cnkgdG8gZHVtcCBkdXJpbmcgYSBjcmFzaC4gKi8KIAlpZiAoY29kZSkKQEAgLTc3OCw4 ICs3NzYsNyBAQCBwZ3NzX3NobWVtX3NodXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJICog V2hlbiBzZXJpYWxpemluZyB0byBkaXNrLCB3ZSBzdG9yZSBxdWVyeSB0ZXh0cyBpbW1lZGlhdGVs eSBhZnRlciB0aGVpcgogCSAqIGVudHJ5IGRhdGEuICBBbnkgb3JwaGFuZWQgcXVlcnkgdGV4dHMg YXJlIHRoZXJlYnkgZXhjbHVkZWQuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIHBn c3NfaGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAh PSBOVUxMKQorCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJewog CQlpbnQJCQlsZW4gPSBlbnRyeS0+cXVlcnlfbGVuOwogCQljaGFyCSAgICpxc3RyID0gcXRleHRf ZmV0Y2goZW50cnktPnF1ZXJ5X29mZnNldCwgbGVuLApAQCAtNzkxLDggKzc4OCw4IEBAIHBnc3Nf c2htZW1fc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAkJaWYgKGZ3cml0ZShlbnRyeSwg c2l6ZW9mKHBnc3NFbnRyeSksIDEsIGZpbGUpICE9IDEgfHwKIAkJCWZ3cml0ZShxc3RyLCAxLCBs ZW4gKyAxLCBmaWxlKSAhPSBsZW4gKyAxKQogCQl7Ci0JCQkvKiBub3RlOiB3ZSBhc3N1bWUgaGFz aF9zZXFfdGVybSB3b24ndCBjaGFuZ2UgZXJybm8gKi8KLQkJCWhhc2hfc2VxX3Rlcm0oJmhhc2hf c2VxKTsKKwkJCS8qIG5vdGU6IHdlIGFzc3VtZSBmb3JlYWNoX2hhc2hfdGVybSB3b24ndCBjaGFu Z2UgZXJybm8gKi8KKwkJCWZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5KTsKIAkJCWdvdG8gZXJyb3I7 CiAJCX0KIAl9CkBAIC0xNjk3LDggKzE2OTQsNiBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJu YWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJU2l6ZQkJcWJ1ZmZlcl9zaXplID0gMDsKIAlT aXplCQlleHRlbnQgPSAwOwogCWludAkJCWdjX2NvdW50ID0gMDsKLQlIQVNIX1NFUV9TVEFUVVMg aGFzaF9zZXE7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAKIAkvKgogCSAqIFN1cGVydXNlcnMgb3Ig cm9sZXMgd2l0aCB0aGUgcHJpdmlsZWdlcyBvZiBwZ19yZWFkX2FsbF9zdGF0cyBtZW1iZXJzCkBA IC0xODI4LDggKzE4MjMsNyBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJuYWwoRnVuY3Rpb25D YWxsSW5mbyBmY2luZm8sCiAJCX0KIAl9CiAKLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdz c19oYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJ CURhdHVtCQl2YWx1ZXNbUEdfU1RBVF9TVEFURU1FTlRTX0NPTFNdOwogCQlib29sCQludWxsc1tQ R19TVEFUX1NUQVRFTUVOVFNfQ09MU107CkBAIC0yMTc0LDkgKzIxNjgsNyBAQCBlbnRyeV9jbXAo Y29uc3Qgdm9pZCAqbGhzLCBjb25zdCB2b2lkICpyaHMpCiBzdGF0aWMgdm9pZAogZW50cnlfZGVh bGxvYyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsKIAlwZ3NzRW50cnkgKipl bnRyaWVzOwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCWludAkJCW52aWN0aW1zOwogCWludAkJCWk7 CiAJU2l6ZQkJdG90dGV4dGxlbjsKQEAgLTIyMDAsOCArMjE5Miw3IEBAIGVudHJ5X2RlYWxsb2Mo dm9pZCkKIAl0b3R0ZXh0bGVuID0gMDsKIAludmFsaWR0ZXh0cyA9IDA7CiAKLQloYXNoX3NlcV9p bml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2Vh cmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnks IHBnc3NfaGFzaCkKIAl7CiAJCWVudHJpZXNbaSsrXSA9IGVudHJ5OwogCQkvKiAiU3RpY2t5IiBl bnRyaWVzIGdldCBhIGRpZmZlcmVudCB1c2FnZSBkZWNheSByYXRlLiAqLwpAQCAtMjUxMyw4ICsy NTA0LDYgQEAgZ2NfcXRleHRzKHZvaWQpCiAJY2hhcgkgICAqcWJ1ZmZlcjsKIAlTaXplCQlxYnVm ZmVyX3NpemU7CiAJRklMRQkgICAqcWZpbGUgPSBOVUxMOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNo X3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAlTaXplCQlleHRlbnQ7CiAJaW50CQkJbmVudHJp ZXM7CiAKQEAgLTI1NTYsOCArMjU0NSw3IEBAIGdjX3F0ZXh0cyh2b2lkKQogCWV4dGVudCA9IDA7 CiAJbmVudHJpZXMgPSAwOwogCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIHBnc3NfaGFzaCk7 Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJewogCQlpbnQJCQlx dWVyeV9sZW4gPSBlbnRyeS0+cXVlcnlfbGVuOwogCQljaGFyCSAgICpxcnkgPSBxdGV4dF9mZXRj aChlbnRyeS0+cXVlcnlfb2Zmc2V0LApAQCAtMjU4MCw3ICsyNTY4LDcgQEAgZ2NfcXRleHRzKHZv aWQpCiAJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3Vs ZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwKIAkJCQkJCQlQR1NTX1RFWFRfRklMRSkpKTsK LQkJCWhhc2hfc2VxX3Rlcm0oJmhhc2hfc2VxKTsKKwkJCWZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5 KTsKIAkJCWdvdG8gZ2NfZmFpbDsKIAkJfQogCkBAIC0yNjQ4LDggKzI2MzYsNyBAQCBnY19mYWls OgogCSAqIFNpbmNlIHRoZSBjb250ZW50cyBvZiB0aGUgZXh0ZXJuYWwgZmlsZSBhcmUgbm93IHVu Y2VydGFpbiwgbWFyayBhbGwKIAkgKiBoYXNodGFibGUgZW50cmllcyBhcyBoYXZpbmcgaW52YWxp ZCB0ZXh0cy4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3 aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWVudHJ5LT5xdWVy eV9vZmZzZXQgPSAwOwogCQllbnRyeS0+cXVlcnlfbGVuID0gLTE7CkBAIC0yNzEzLDggKzI3MDAs NiBAQCBpZiAoZSkgeyBcCiBzdGF0aWMgVGltZXN0YW1wVHoKIGVudHJ5X3Jlc2V0KE9pZCB1c2Vy aWQsIE9pZCBkYmlkLCBpbnQ2NCBxdWVyeWlkLCBib29sIG1pbm1heF9vbmx5KQogewotCUhBU0hf U0VRX1NUQVRVUyBoYXNoX3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAlGSUxFCSAgICpxZmls ZTsKIAlpbnQ2NAkJbnVtX2VudHJpZXM7CiAJaW50NjQJCW51bV9yZW1vdmUgPSAwOwpAQCAtMjcz NCw2ICsyNzE5LDggQEAgZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1 ZXJ5aWQsIGJvb2wgbWlubWF4X29ubHkpCiAJaWYgKHVzZXJpZCAhPSAwICYmIGRiaWQgIT0gMCAm JiBxdWVyeWlkICE9IElOVDY0Q09OU1QoMCkpCiAJewogCQkvKiBJZiBhbGwgdGhlIHBhcmFtZXRl cnMgYXJlIGF2YWlsYWJsZSwgdXNlIHRoZSBmYXN0IHBhdGguICovCisJCXBnc3NFbnRyeSAgKmVu dHJ5OworCiAJCW1lbXNldCgma2V5LCAwLCBzaXplb2YocGdzc0hhc2hLZXkpKTsKIAkJa2V5LnVz ZXJpZCA9IHVzZXJpZDsKIAkJa2V5LmRiaWQgPSBkYmlkOwpAQCAtMjc1Nyw4ICsyNzQ0LDcgQEAg ZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlu bWF4X29ubHkpCiAJZWxzZSBpZiAodXNlcmlkICE9IDAgfHwgZGJpZCAhPSAwIHx8IHF1ZXJ5aWQg IT0gSU5UNjRDT05TVCgwKSkKIAl7CiAJCS8qIFJlc2V0IGVudHJpZXMgY29ycmVzcG9uZGluZyB0 byB2YWxpZCBwYXJhbWV0ZXJzLiAqLwotCQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19o YXNoKTsKLQkJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBO VUxMKQorCQlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCQl7CiAJ CQlpZiAoKCF1c2VyaWQgfHwgZW50cnktPmtleS51c2VyaWQgPT0gdXNlcmlkKSAmJgogCQkJCSgh ZGJpZCB8fCBlbnRyeS0+a2V5LmRiaWQgPT0gZGJpZCkgJiYKQEAgLTI3NzEsOCArMjc1Nyw3IEBA 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 c19mZHcvY29ubmVjdGlvbi5jCmluZGV4IDBmYWY3ZTY5MjgwLi44ZmJhMmUyMzYwMyAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCisrKyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwpAQCAtMTA2Niw4ICsxMDY2LDYgQEAgcGdmZHdfcmVwb3J0 X2ludGVybmFsKGludCBlbGV2ZWwsIFBHcmVzdWx0ICpyZXMsIFBHY29ubiAqY29ubiwKIHN0YXRp YyB2b2lkCiBwZ2Zkd194YWN0X2NhbGxiYWNrKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKIAlMaXN0 CSAgICpwZW5kaW5nX2VudHJpZXMgPSBOSUw7CiAJTGlzdAkgICAqY2FuY2VsX3JlcXVlc3RlZCA9 IE5JTDsKIApAQCAtMTA3OSw4ICsxMDc3LDcgQEAgcGdmZHdfeGFjdF9jYWxsYmFjayhYYWN0RXZl bnQgZXZlbnQsIHZvaWQgKmFyZykKIAkgKiBTY2FuIGFsbCBjb25uZWN0aW9uIGNhY2hlIGVudHJp ZXMgdG8gZmluZCBvcGVuIHJlbW90ZSB0cmFuc2FjdGlvbnMsIGFuZAogCSAqIGNsb3NlIHRoZW0u CiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgQ29ubmVjdGlvbkhhc2gpOwotCXdoaWxlICgo ZW50cnkgPSAoQ29ubkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9y ZWFjaF9oYXNoKENvbm5DYWNoZUVudHJ5LCBlbnRyeSwgQ29ubmVjdGlvbkhhc2gpCiAJewogCQlQ R3Jlc3VsdCAgICpyZXM7CiAKQEAgLTEyMTcsOCArMTIxNCw2IEBAIHN0YXRpYyB2b2lkCiBwZ2Zk d19zdWJ4YWN0X2NhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwgU3ViVHJhbnNhY3Rpb25JZCBt eVN1YmlkLAogCQkJCQkgICBTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkLCB2b2lkICphcmcp CiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCWlu dAkJCWN1cmxldmVsOwogCUxpc3QJICAgKnBlbmRpbmdfZW50cmllcyA9IE5JTDsKIAlMaXN0CSAg ICpjYW5jZWxfcmVxdWVzdGVkID0gTklMOwpAQCAtMTIzNyw4ICsxMjMyLDcgQEAgcGdmZHdfc3Vi eGFjdF9jYWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJp ZCwKIAkgKiBvZiB0aGUgY3VycmVudCBsZXZlbCwgYW5kIGNsb3NlIHRoZW0uCiAJICovCiAJY3Vy bGV2ZWwgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25OZXN0TGV2ZWwoKTsKLQloYXNoX3NlcV9pbml0 KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRy eSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50 cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCWNoYXIJCXNxbFsxMDBdOwogCkBAIC0x MzI5LDE0ICsxMzIzLDEwIEBAIHBnZmR3X3N1YnhhY3RfY2FsbGJhY2soU3ViWGFjdEV2ZW50IGV2 ZW50LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiBzdGF0aWMgdm9pZAogcGdmZHdfaW52YWxf Y2FsbGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhh c2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlDb25uQ2FjaGVFbnRyeSAqZW50 cnk7Ci0KIAlBc3NlcnQoY2FjaGVpZCA9PSBGT1JFSUdOU0VSVkVST0lEIHx8IGNhY2hlaWQgPT0g VVNFUk1BUFBJTkdPSUQpOwogCiAJLyogQ29ubmVjdGlvbkhhc2ggbXVzdCBleGlzdCBhbHJlYWR5 LCBpZiB3ZSdyZSByZWdpc3RlcmVkICovCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgQ29ubmVjdGlv bkhhc2gpOwotCXdoaWxlICgoZW50cnkgPSAoQ29ubkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2Vh cmNoKCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKENvbm5DYWNoZUVudHJ5LCBlbnRyeSwgQ29ubmVj dGlvbkhhc2gpCiAJewogCQkvKiBJZ25vcmUgaW52YWxpZCBlbnRyaWVzICovCiAJCWlmIChlbnRy eS0+Y29ubiA9PSBOVUxMKQpAQCAtMjE4Nyw4ICsyMTc3LDYgQEAgcG9zdGdyZXNfZmR3X2dldF9j b25uZWN0aW9uc19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCQkJCQkJCSAg ZW51bSBwZ2Zkd1ZlcnNpb24gYXBpX3ZlcnNpb24pCiB7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZv ID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwotCUhBU0hfU0VRX1NUQVRV UyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKIAogCUluaXRNYXRlcmlhbGl6ZWRTUkYo ZmNpbmZvLCAwKTsKIApAQCAtMjIxMSw4ICsyMTk5LDcgQEAgcG9zdGdyZXNfZmR3X2dldF9jb25u ZWN0aW9uc19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCWVsb2coRVJST1Is ICJpbmNvcnJlY3QgbnVtYmVyIG9mIG91dHB1dCBhcmd1bWVudHMiKTsKIAl9CiAKLQloYXNoX3Nl cV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2Fj aGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNh Y2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCUZvcmVpZ25TZXJ2ZXIgKnNl cnZlcjsKIAkJRGF0dW0JCXZhbHVlc1tQT1NUR1JFU19GRFdfR0VUX0NPTk5FQ1RJT05TX0NPTFNd ID0gezB9OwpAQCAtMjQ2NCw4ICsyNDUxLDYgQEAgcG9zdGdyZXNfZmR3X2Rpc2Nvbm5lY3RfYWxs KFBHX0ZVTkNUSU9OX0FSR1MpCiBzdGF0aWMgYm9vbAogZGlzY29ubmVjdF9jYWNoZWRfY29ubmVj dGlvbnMoT2lkIHNlcnZlcmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNo ZUVudHJ5ICplbnRyeTsKIAlib29sCQlhbGwgPSAhT2lkSXNWYWxpZChzZXJ2ZXJpZCk7CiAJYm9v bAkJcmVzdWx0ID0gZmFsc2U7CiAKQEAgLTI0NzYsOCArMjQ2MSw3IEBAIGRpc2Nvbm5lY3RfY2Fj aGVkX2Nvbm5lY3Rpb25zKE9pZCBzZXJ2ZXJpZCkKIAlpZiAoIUNvbm5lY3Rpb25IYXNoKQogCQly ZXR1cm4gZmFsc2U7CiAKLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0J d2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4p KSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkK IAl7CiAJCS8qIElnbm9yZSBjYWNoZSBlbnRyeSBpZiBubyBvcGVuIGNvbm5lY3Rpb24gcmlnaHQg bm93LiAqLwogCQlpZiAoIWVudHJ5LT5jb25uKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvc2hpcHBhYmxlLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYwppbmRl eCBjYmExYzA5NjdhOS4uMDE0YzUzNzExNWEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3NoaXBwYWJsZS5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCkBA IC02NiwxNyArNjYsMTMgQEAgc3RhdGljIHZvaWQKIEludmFsaWRhdGVTaGlwcGFibGVDYWNoZUNh bGxiYWNrKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsCiAJCQkJCQkJCSB1 aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JU2hpcHBhYmxl Q2FjaGVFbnRyeSAqZW50cnk7Ci0KIAkvKgogCSAqIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBmbHVz aCBvbmx5IGNhY2hlIGVudHJpZXMgcmVsYXRpbmcgdG8gdGhlCiAJICogcGdfZm9yZWlnbl9zZXJ2 ZXIgZW50cnkgYmVpbmcgb3V0ZGF0ZWQ7IGJ1dCB0aGF0IHdvdWxkIGJlIG1vcmUKIAkgKiBjb21w bGljYXRlZCwgYW5kIGl0J3MgcHJvYmFibHkgbm90IHdvcnRoIHRoZSB0cm91YmxlLiAgU28gZm9y IG5vdywganVzdAogCSAqIGZsdXNoIGFsbCBlbnRyaWVzLgogCSAqLwotCWhhc2hfc2VxX2luaXQo JnN0YXR1cywgU2hpcHBhYmxlQ2FjaGVIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFNoaXBwYWJs ZUNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVh Y2hfaGFzaChTaGlwcGFibGVDYWNoZUVudHJ5LCBlbnRyeSwgU2hpcHBhYmxlQ2FjaGVIYXNoKQog CXsKIAkJaWYgKGhhc2hfc2VhcmNoKFNoaXBwYWJsZUNhY2hlSGFzaCwKIAkJCQkJCSZlbnRyeS0+ a2V5LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKaW5kZXggZjU4YjRiMmIyMDUu LmJjNTA5MDgyMTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRl 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 LmMKaW5kZXggMGFiMDhjY2ViOWMuLjk2OGNlYThjOTI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j CkBAIC01MzUsMTYgKzUzNSwxMiBAQCBEcm9wUHJlcGFyZWRTdGF0ZW1lbnQoY29uc3QgY2hhciAq c3RtdF9uYW1lLCBib29sIHNob3dFcnJvcikKIHZvaWQKIERyb3BBbGxQcmVwYXJlZFN0YXRlbWVu dHModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2VxOwotCVByZXBhcmVkU3RhdGVtZW50ICpl bnRyeTsKLQogCS8qIG5vdGhpbmcgY2FjaGVkICovCiAJaWYgKCFwcmVwYXJlZF9xdWVyaWVzKQog CQlyZXR1cm47CiAKIAkvKiB3YWxrIG92ZXIgY2FjaGUgKi8KLQloYXNoX3NlcV9pbml0KCZzZXEs IHByZXBhcmVkX3F1ZXJpZXMpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnNl cSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFByZXBhcmVkU3RhdGVtZW50LCBlbnRyeSwgcHJl cGFyZWRfcXVlcmllcykKIAl7CiAJCS8qIFJlbGVhc2UgdGhlIHBsYW5jYWNoZSBlbnRyeSAqLwog CQlEcm9wQ2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSk7CkBAIC02OTEsMTEgKzY4Nyw3IEBA IHBnX3ByZXBhcmVkX3N0YXRlbWVudChQR19GVU5DVElPTl9BUkdTKQogCS8qIGhhc2ggdGFibGUg bWlnaHQgYmUgdW5pbml0aWFsaXplZCAqLwogCWlmIChwcmVwYXJlZF9xdWVyaWVzKQogCXsKLQkJ SEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCQlQcmVwYXJlZFN0YXRlbWVudCAqcHJlcF9zdG10 OwotCi0JCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwcmVwYXJlZF9xdWVyaWVzKTsKLQkJd2hp bGUgKChwcmVwX3N0bXQgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwkJ Zm9yZWFjaF9oYXNoKFByZXBhcmVkU3RhdGVtZW50LCBwcmVwX3N0bXQsIHByZXBhcmVkX3F1ZXJp ZXMpCiAJCXsKIAkJCVR1cGxlRGVzYwlyZXN1bHRfZGVzYzsKIAkJCURhdHVtCQl2YWx1ZXNbOF07 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGNiN2UwMGFkMDNmLi5mNGJjMDJiYzRlOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIyNzUsMTQgKzIyNzUsOSBAQCBFeGVjdXRl VHJ1bmNhdGVHdXRzKExpc3QgKmV4cGxpY2l0X3JlbHMsCiAJLyogTm93IGdvIHRocm91Z2ggdGhl IGhhc2ggdGFibGUsIGFuZCB0cnVuY2F0ZSBmb3JlaWduIHRhYmxlcyAqLwogCWlmIChmdF9odGFi KQogCXsKLQkJRm9yZWlnblRydW5jYXRlSW5mbyAqZnRfaW5mbzsKLQkJSEFTSF9TRVFfU1RBVFVT IHNlcTsKLQotCQloYXNoX3NlcV9pbml0KCZzZXEsIGZ0X2h0YWIpOwotCiAJCVBHX1RSWSgpOwog CQl7Ci0JCQl3aGlsZSAoKGZ0X2luZm8gPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwp CisJCQlmb3JlYWNoX2hhc2goRm9yZWlnblRydW5jYXRlSW5mbywgZnRfaW5mbywgZnRfaHRhYikK IAkJCXsKIAkJCQlGZHdSb3V0aW5lICpyb3V0aW5lID0gR2V0RmR3Um91dGluZUJ5U2VydmVySWQo ZnRfaW5mby0+c2VydmVyaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wcmVkdGVzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwpp bmRleCAwY2Y3NzM5NGFiYy4uZDNhZjUwYjRmYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3ByZWR0ZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cHJlZHRlc3QuYwpAQCAtMjM0NSwxNSArMjM0NSwxMCBAQCBzdGF0aWMgdm9pZAogSW52YWxpZGF0 ZU9wclByb29mQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBjYWNo ZWlkLAogCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JT3ByUHJvb2ZDYWNoZUVudHJ5ICpoZW50cnk7Ci0KIAlBc3NlcnQoT3ByUHJvb2ZDYWNo ZUhhc2ggIT0gTlVMTCk7CiAKIAkvKiBDdXJyZW50bHkgd2UganVzdCByZXNldCBhbGwgZW50cmll czsgaGFyZCB0byBiZSBzbWFydGVyIC4uLiAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgT3By UHJvb2ZDYWNoZUhhc2gpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoT3ByUHJvb2ZDYWNoZUVudHJ5 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goT3By UHJvb2ZDYWNoZUVudHJ5LCBoZW50cnksIE9wclByb29mQ2FjaGVIYXNoKQogCXsKIAkJaGVudHJ5 LT5oYXZlX2ltcGxpYyA9IGZhbHNlOwogCQloZW50cnktPmhhdmVfcmVmdXRlID0gZmFsc2U7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX29wZXIuYwppbmRleCBkMWRkMzQyZDk0MC4uNWZmNmE2NjE1MmUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX29wZXIuYwpAQCAtMTA3OSwxNSArMTA3OSwxMCBAQCBzdGF0aWMgdm9pZAog SW52YWxpZGF0ZU9wckNhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIg Y2FjaGVpZCwKIAkJCQkJCSAgIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlPcHJDYWNoZUVudHJ5ICpoZW50cnk7Ci0KIAlBc3NlcnQoT3ByQ2FjaGVIYXNo ICE9IE5VTEwpOwogCiAJLyogQ3VycmVudGx5IHdlIGp1c3QgZmx1c2ggYWxsIGVudHJpZXM7IGhh cmQgdG8gYmUgc21hcnRlciAuLi4gKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIE9wckNhY2hl SGFzaCk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChPcHJDYWNoZUVudHJ5ICopIGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goT3ByQ2FjaGVFbnRyeSwgaGVu dHJ5LCBPcHJDYWNoZUhhc2gpCiAJewogCQlpZiAoaGFzaF9zZWFyY2goT3ByQ2FjaGVIYXNoLAog CQkJCQkJJmhlbnRyeS0+a2V5LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5n L3BhcnRkZXNjLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwppbmRleCBk YjI2ZTRhODJiNi4uM2VjYzkzODcyM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5j CkBAIC00NzgsMTEgKzQ3OCw3IEBAIFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChQYXJ0aXRpb25E aXJlY3RvcnkgcGRpciwgUmVsYXRpb24gcmVsKQogdm9pZAogRGVzdHJveVBhcnRpdGlvbkRpcmVj dG9yeShQYXJ0aXRpb25EaXJlY3RvcnkgcGRpcikKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCVBhcnRpdGlvbkRpcmVjdG9yeUVudHJ5ICpwZGU7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIHBkaXItPnBkaXJfaGFzaCk7Ci0Jd2hpbGUgKChwZGUgPSBoYXNoX3NlcV9zZWFyY2goJnN0 YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBhcnRpdGlvbkRpcmVjdG9yeUVudHJ5LCBw ZGUsIHBkaXItPnBkaXJfaGFzaCkKIAkJUmVsYXRpb25EZWNyZW1lbnRSZWZlcmVuY2VDb3VudChw ZGUtPnJlbCk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggNGNiYjdl YmYxOGMuLjBkZGMyMWMwOWFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAt MTA0OCw4ICsxMDQ4LDYgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkJVGlt ZXN0YW1wVHogY3VycmVudF90aW1lOwogCQlpbnQJCQltaWxsaXNfaW5jcmVtZW50OwogCQlhdmxf ZGJhc2UgICpkYmFyeTsKLQkJYXZsX2RiYXNlICAqZGI7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzZXE7 CiAJCWludAkJCWk7CiAKIAkJLyogcHV0IGFsbCB0aGUgaGFzaCBlbGVtZW50cyBpbnRvIGFuIGFy cmF5ICovCkBAIC0xMDYwLDggKzEwNTgsNyBAQCByZWJ1aWxkX2RhdGFiYXNlX2xpc3QoT2lkIG5l d2RiKQogI2VuZGlmCiAKIAkJaSA9IDA7Ci0JCWhhc2hfc2VxX2luaXQoJnNlcSwgZGJoYXNoKTsK LQkJd2hpbGUgKChkYiA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkgIT0gTlVMTCkKKwkJZm9yZWFj aF9oYXNoKGF2bF9kYmFzZSwgZGIsIGRiaGFzaCkKIAkJCW1lbWNweSgmKGRiYXJ5W2krK10pLCBk Yiwgc2l6ZW9mKGF2bF9kYmFzZSkpOwogCiAJCS8qIHNvcnQgdGhlIGFycmF5ICovCkBAIC0xMDg2 LDcgKzEwODMsNyBAQCByZWJ1aWxkX2RhdGFiYXNlX2xpc3QoT2lkIG5ld2RiKQogCQkgKi8KIAkJ 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 CmluZGV4IDlmZGI1ZDRkMTUyLi4yNWJkMGQ4ZjA4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTUyNDUsMTUgKzUyNDUsMTEgQEAg UmVvcmRlckJ1ZmZlclRvYXN0UmVwbGFjZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogc3RhdGljIHZvaWQKIFJlb3JkZXJCdWZmZXJUb2FzdFJlc2V0KFJlb3JkZXJC dWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhz dGF0OwotCVJlb3JkZXJCdWZmZXJUb2FzdEVudCAqZW50OwotCiAJaWYgKHR4bi0+dG9hc3RfaGFz aCA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAkvKiBzZXF1ZW50aWFsbHkgd2FsayBvdmVyIHRoZSBo YXNoIGFuZCBmcmVlIGV2ZXJ5dGhpbmcgKi8KLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgdHhuLT50 b2FzdF9oYXNoKTsKLQl3aGlsZSAoKGVudCA9IChSZW9yZGVyQnVmZmVyVG9hc3RFbnQgKikgaGFz aF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlb3JkZXJCdWZm ZXJUb2FzdEVudCwgZW50LCB0eG4tPnRvYXN0X2hhc2gpCiAJewogCQlkbGlzdF9tdXRhYmxlX2l0 ZXIgaXQ7CiAKQEAgLTUzMTYsMTEgKzUzMTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZXdyaXRlTWFw cGluZ0ZpbGUKIHN0YXRpYyB2b2lkCiBEaXNwbGF5TWFwcGluZyhIVEFCICp0dXBsZWNpZF9kYXRh KQogewotCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsKLQlSZW9yZGVyQnVmZmVyVHVwbGVDaWRFbnQg KmVudDsKLQotCWhhc2hfc2VxX2luaXQoJmhzdGF0LCB0dXBsZWNpZF9kYXRhKTsKLQl3aGlsZSAo KGVudCA9IChSZW9yZGVyQnVmZmVyVHVwbGVDaWRFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3Rh dCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlb3JkZXJCdWZmZXJUdXBsZUNpZEVudCwgZW50 LCB0dXBsZWNpZF9kYXRhKQogCXsKIAkJZWxvZyhERUJVRzMsICJtYXBwaW5nOiBub2RlOiAldS8l dS8ldSB0aWQ6ICV1LyV1IGNtaW46ICV1LCBjbWF4OiAldSIsCiAJCQkgZW50LT5rZXkucmxvY2F0 b3IuZGJPaWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpp bmRleCA2YmUyYWUwOTBjZi4uOWQ5MjBmZTBhZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl 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 L3NobWVtLmMKaW5kZXggNjUxMjhiMGY1MDguLjUwYWE4ZDExYTFmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKQEAgLTUzNCw4ICs1MzQsNiBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdf RlVOQ1RJT05fQVJHUykKIHsKICNkZWZpbmUgUEdfR0VUX1NITUVNX1NJWkVTX0NPTFMgNAogCVJl dHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5m bzsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCVNpemUJ CW5hbWVkX2FsbG9jYXRlZCA9IDA7CiAJRGF0dW0JCXZhbHVlc1tQR19HRVRfU0hNRU1fU0laRVNf Q09MU107CiAJYm9vbAkJbnVsbHNbUEdfR0VUX1NITUVNX1NJWkVTX0NPTFNdOwpAQCAtNTQ0LDEx ICs1NDIsOSBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAog CUxXTG9ja0FjcXVpcmUoU2htZW1JbmRleExvY2ssIExXX1NIQVJFRCk7CiAKLQloYXNoX3NlcV9p bml0KCZoc3RhdCwgU2htZW1JbmRleCk7Ci0KIAkvKiBvdXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRy aWVzICovCiAJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKLQl3aGlsZSAoKGVudCA9 IChTaG1lbUluZGV4RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChTaG1lbUluZGV4RW50LCBlbnQsIFNobWVtSW5kZXgpCiAJewogCQl2YWx1ZXNb MF0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGVudC0+a2V5KTsKIAkJdmFsdWVzWzFdID0gSW50NjRH ZXREYXR1bSgoY2hhciAqKSBlbnQtPmxvY2F0aW9uIC0gKGNoYXIgKikgU2htZW1TZWdIZHIpOwpA QCAtNTkxLDggKzU4Nyw2IEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAjZGVmaW5lIFBHX0dFVF9TSE1FTV9OVU1BX1NJWkVTX0NPTFMgMwogCVJl dHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5m bzsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCURhdHVt CQl2YWx1ZXNbUEdfR0VUX1NITUVNX05VTUFfU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNbUEdf R0VUX1NITUVNX05VTUFfU0laRVNfQ09MU107CiAJU2l6ZQkJb3NfcGFnZV9zaXplOwpAQCAtNjQy LDEwICs2MzYsOCBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElPTl9B UkdTKQogCiAJTFdMb2NrQWNxdWlyZShTaG1lbUluZGV4TG9jaywgTFdfU0hBUkVEKTsKIAotCWhh c2hfc2VxX2luaXQoJmhzdGF0LCBTaG1lbUluZGV4KTsKLQogCS8qIG91dHB1dCBhbGwgYWxsb2Nh dGVkIGVudHJpZXMgKi8KLQl3aGlsZSAoKGVudCA9IChTaG1lbUluZGV4RW50ICopIGhhc2hfc2Vx X3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChTaG1lbUluZGV4RW50LCBl bnQsIFNobWVtSW5kZXgpCiAJewogCQlpbnQJCQlpOwogCQljaGFyCSAgICpzdGFydHB0ciwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCA2NTI2NDk5OWM4YS4uMWYxNmE4ZGY1Y2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTExMDEsMTMgKzExMDEsOSBAQCBTdGFuZGJ5 UmVsZWFzZUxvY2tUcmVlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnN1YnhpZHMsIFRyYW5zYWN0 aW9uSWQgKnN1YnhpZHMpCiB2b2lkCiBTdGFuZGJ5UmVsZWFzZUFsbExvY2tzKHZvaWQpCiB7Ci0J SEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWNvdmVyeUxvY2tYaWRFbnRyeSAqZW50cnk7Ci0K IAllbG9nKERFQlVHMiwgInJlbGVhc2UgYWxsIHN0YW5kYnkgbG9ja3MiKTsKIAotCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgUmVjb3ZlcnlMb2NrWGlkSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkpCisJZm9yZWFjaF9oYXNoKFJlY292ZXJ5TG9ja1hpZEVu dHJ5LCBlbnRyeSwgUmVjb3ZlcnlMb2NrWGlkSGFzaCkKIAl7CiAJCVN0YW5kYnlSZWxlYXNlWGlk RW50cnlMb2NrcyhlbnRyeSk7CiAJCWhhc2hfc2VhcmNoKFJlY292ZXJ5TG9ja1hpZEhhc2gsIGVu dHJ5LCBIQVNIX1JFTU9WRSwgTlVMTCk7CkBAIC0xMTI1LDExICsxMTIxLDcgQEAgU3RhbmRieVJl bGVhc2VBbGxMb2Nrcyh2b2lkKQogdm9pZAogU3RhbmRieVJlbGVhc2VPbGRMb2NrcyhUcmFuc2Fj dGlvbklkIG9sZHhpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlY292ZXJ5TG9j a1hpZEVudHJ5ICplbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVjb3ZlcnlMb2Nr WGlkSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkpCisJ Zm9yZWFjaF9oYXNoKFJlY292ZXJ5TG9ja1hpZEVudHJ5LCBlbnRyeSwgUmVjb3ZlcnlMb2NrWGlk SGFzaCkKIAl7CiAJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChlbnRyeS0+eGlkKSk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IDFkNWVhN2MwNTFjLi5lNTcwNGNlZjkwZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jCkBAIC0yMzA0LDExICsyMzA0LDkgQEAgTG9ja1JlbGVhc2Uo Y29uc3QgTE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgc2Vzc2lvbkxv Y2spCiB2b2lkCiBMb2NrUmVsZWFzZUFsbChMT0NLTUVUSE9ESUQgbG9ja21ldGhvZGlkLCBib29s IGFsbExvY2tzKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CiAJTG9ja01ldGhvZAlsb2Nr TWV0aG9kVGFibGU7CiAJaW50CQkJaSwKIAkJCQludW1Mb2NrTW9kZXM7Ci0JTE9DQUxMT0NLICAq bG9jYWxsb2NrOwogCUxPQ0sJICAgKmxvY2s7CiAJaW50CQkJcGFydGl0aW9uOwogCWJvb2wJCWhh dmVfZmFzdF9wYXRoX2x3bG9jayA9IGZhbHNlOwpAQCAtMjM0MSw5ICsyMzM5LDcgQEAgTG9ja1Jl bGVhc2VBbGwoTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCwgYm9vbCBhbGxMb2NrcykKIAkgKiBw b2ludGVycy4gIEZhc3QtcGF0aCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBkdXJpbmcgdGhlIGxvY2Fs bG9jayB0YWJsZQogCSAqIHNjYW4sIHRob3VnaC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxM T0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go TE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJewogCQkvKgogCQkg KiBJZiB0aGUgTE9DQUxMT0NLIGVudHJ5IGlzIHVudXNlZCwgc29tZXRoaW5nIG11c3QndmUgZ29u ZSB3cm9uZwpAQCAtMjU3OCwxNSArMjU3NCwxMCBAQCBMb2NrUmVsZWFzZUFsbChMT0NLTUVUSE9E SUQgbG9ja21ldGhvZGlkLCBib29sIGFsbExvY2tzKQogdm9pZAogTG9ja1JlbGVhc2VTZXNzaW9u KExPQ0tNRVRIT0RJRCBsb2NrbWV0aG9kaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7Ci0KIAlpZiAobG9ja21ldGhvZGlkIDw9IDAgfHwgbG9j a21ldGhvZGlkID49IGxlbmd0aG9mKExvY2tNZXRob2RzKSkKIAkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBsb2NrIG1ldGhvZDogJWQiLCBsb2NrbWV0aG9kaWQpOwogCi0JaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgobG9jYWxsb2NrID0g KExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCXsKIAkJ LyogSWdub3JlIGl0ZW1zIHRoYXQgYXJlIG5vdCBvZiB0aGUgc3BlY2lmaWVkIGxvY2sgbWV0aG9k ICovCiAJCWlmIChMT0NBTExPQ0tfTE9DS01FVEhPRCgqbG9jYWxsb2NrKSAhPSBsb2NrbWV0aG9k aWQpCkBAIC0yNjEwLDEyICsyNjAxLDcgQEAgTG9ja1JlbGVhc2VDdXJyZW50T3duZXIoTE9DQUxM T0NLICoqbG9jYWxsb2NrcywgaW50IG5sb2NrcykKIHsKIAlpZiAobG9jYWxsb2NrcyA9PSBOVUxM KQogCXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJTE9DQUxMT0NLICAqbG9jYWxsb2Nr OwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7Ci0KLQkJ d2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0 aG9kTG9jYWxIYXNoKQogCQkJUmVsZWFzZUxvY2tJZkhlbGQobG9jYWxsb2NrLCBmYWxzZSk7CiAJ fQogCWVsc2UKQEAgLTI3MDksMTIgKzI2OTUsNyBAQCBMb2NrUmVhc3NpZ25DdXJyZW50T3duZXIo TE9DQUxMT0NLICoqbG9jYWxsb2NrcywgaW50IG5sb2NrcykKIAogCWlmIChsb2NhbGxvY2tzID09 IE5VTEwpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCQlMT0NBTExPQ0sgICpsb2Nh bGxvY2s7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsK LQotCQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZz dGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExv Y2tNZXRob2RMb2NhbEhhc2gpCiAJCQlMb2NrUmVhc3NpZ25Pd25lcihsb2NhbGxvY2ssIHBhcmVu dCk7CiAJfQogCWVsc2UKQEAgLTMzOTMsMTcgKzMzNzQsMTMgQEAgQ2hlY2tGb3JTZXNzaW9uQW5k WGFjdExvY2tzKHZvaWQpCiAJfSBQZXJMb2NrVGFnRW50cnk7CiAKIAlIVEFCCSAgICpsb2NraHRh YjsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAog CS8qIENyZWF0ZSBhIGxvY2FsIGhhc2ggdGFibGUga2V5ZWQgYnkgTE9DS1RBRyBvbmx5ICovCiAJ bG9ja2h0YWIgPSBoYXNoX21ha2UoUGVyTG9ja1RhZ0VudHJ5LCBsb2NrLAogCQkJCQkJICJDaGVj a0ZvclNlc3Npb25BbmRYYWN0TG9ja3MgdGFibGUiLCAyNTYpOwogCiAJLyogU2NhbiBsb2NhbCBs b2NrIHRhYmxlIHRvIGZpbmQgZW50cmllcyBmb3IgZWFjaCBMT0NLVEFHICovCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgobG9jYWxsb2Nr ID0gKExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCXsK IAkJTE9DQUxMT0NLT1dORVIgKmxvY2tPd25lcnMgPSBsb2NhbGxvY2stPmxvY2tPd25lcnM7CiAJ CVBlckxvY2tUYWdFbnRyeSAqaGVudHJ5OwpAQCAtMzQ2NiwxNiArMzQ0MywxMSBAQCBDaGVja0Zv clNlc3Npb25BbmRYYWN0TG9ja3Modm9pZCkKIHZvaWQKIEF0UHJlcGFyZV9Mb2Nrcyh2b2lkKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwotCiAJ LyogRmlyc3QsIHZlcmlmeSB0aGVyZSBhcmVuJ3QgbG9ja3Mgb2YgYm90aCB4YWN0IGFuZCBzZXNz aW9uIGxldmVsICovCiAJQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tzKCk7CiAKIAkvKiBOb3cg ZG8gdGhlIHBlci1sb2NhbGxvY2sgY2xlYW51cCB3b3JrICovCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FM TE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNo KExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCXsKIAkJVHdvUGhh c2VMb2NrUmVjb3JkIHJlY29yZDsKIAkJTE9DQUxMT0NLT1dORVIgKmxvY2tPd25lcnMgPSBsb2Nh bGxvY2stPmxvY2tPd25lcnM7CkBAIC0zNTYzLDggKzM1MzUsNiBAQCB2b2lkCiBQb3N0UHJlcGFy ZV9Mb2NrcyhGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKQogewogCVBHUFJPQwkgICAqbmV3cHJvYyA9 IFR3b1BoYXNlR2V0RHVtbXlQcm9jKGZ4aWQsIGZhbHNlKTsKLQlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAlMT0NLCSAgICpsb2NrOwogCVBST0NMT0NL ICAgKnByb2Nsb2NrOwogCVBST0NMT0NLVEFHIHByb2Nsb2NrdGFnOwpAQCAtMzU4Niw5ICszNTU2 LDcgQEAgUG9zdFByZXBhcmVfTG9ja3MoRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCkKIAkgKiBwb2lu dGluZyB0byB0aGUgc2FtZSBwcm9jbG9jaywgYW5kIHdlIGRhcmVuJ3QgZW5kIHVwIHdpdGggYW55 IGRhbmdsaW5nCiAJICogcG9pbnRlcnMuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBM b2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FMTE9DSyAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKExPQ0FM TE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCXsKIAkJTE9DQUxMT0NLT1dO RVIgKmxvY2tPd25lcnMgPSBsb2NhbGxvY2stPmxvY2tPd25lcnM7CiAJCWJvb2wJCWhhdmVTZXNz aW9uTG9jazsKQEAgLTM3ODQsOCArMzc1Miw2IEBAIExvY2tEYXRhICoKIEdldExvY2tTdGF0dXNE YXRhKHZvaWQpCiB7CiAJTG9ja0RhdGEgICAqZGF0YTsKLQlQUk9DTE9DSyAgICpwcm9jbG9jazsK LQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKIAlpbnQJCQllbHM7CiAJaW50CQkJZWw7CiAJaW50 CQkJaTsKQEAgLTM5MjEsOSArMzg4Nyw3IEBAIEdldExvY2tTdGF0dXNEYXRhKHZvaWQpCiAJfQog CiAJLyogTm93IHNjYW4gdGhlIHRhYmxlcyB0byBjb3B5IHRoZSBkYXRhICovCi0JaGFzaF9zZXFf aW5pdCgmc2Vxc3RhdCwgTG9ja01ldGhvZFByb2NMb2NrSGFzaCk7Ci0KLQl3aGlsZSAoKHByb2Ns b2NrID0gKFBST0NMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVhY2hf aGFzaChQUk9DTE9DSywgcHJvY2xvY2ssIExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQlQ R1BST0MJICAgKnByb2MgPSBwcm9jbG9jay0+dGFnLm15UHJvYzsKIAkJTE9DSwkgICAqbG9jayA9 IHByb2Nsb2NrLT50YWcubXlMb2NrOwpAQCAtNDE2MSw4ICs0MTI1LDYgQEAgeGxfc3RhbmRieV9s b2NrICoKIEdldFJ1bm5pbmdUcmFuc2FjdGlvbkxvY2tzKGludCAqbmxvY2tzKQogewogCXhsX3N0 YW5kYnlfbG9jayAqYWNjZXNzRXhjbHVzaXZlTG9ja3M7Ci0JUFJPQ0xPQ0sgICAqcHJvY2xvY2s7 Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7CiAJaW50CQkJaTsKIAlpbnQJCQlpbmRleDsKIAlp bnQJCQllbHM7CkBAIC00MTg0LDEwICs0MTQ2LDkgQEAgR2V0UnVubmluZ1RyYW5zYWN0aW9uTG9j a3MoaW50ICpubG9ja3MpCiAJICovCiAJYWNjZXNzRXhjbHVzaXZlTG9ja3MgPSBwYWxsb2MoZWxz ICogc2l6ZW9mKHhsX3N0YW5kYnlfbG9jaykpOwogCi0JLyogTm93IHNjYW4gdGhlIHRhYmxlcyB0 byBjb3B5IHRoZSBkYXRhICovCi0JaGFzaF9zZXFfaW5pdCgmc2Vxc3RhdCwgTG9ja01ldGhvZFBy b2NMb2NrSGFzaCk7Ci0KIAkvKgorCSAqIE5vdyBzY2FuIHRoZSB0YWJsZXMgdG8gY29weSB0aGUg ZGF0YS4KKwkgKgogCSAqIElmIGxvY2sgaXMgYSBjdXJyZW50bHkgZ3JhbnRlZCBBY2Nlc3NFeGNs dXNpdmVMb2NrIHRoZW4gaXQgd2lsbCBoYXZlCiAJICoganVzdCBvbmUgcHJvY2xvY2sgaG9sZGVy LCBzbyBsb2NrcyBhcmUgbmV2ZXIgYWNjZXNzZWQgdHdpY2UgaW4gdGhpcwogCSAqIHBhcnRpY3Vs YXIgY2FzZS4gRG9uJ3QgY29weSB0aGlzIGNvZGUgZm9yIHVzZSBlbHNld2hlcmUgYmVjYXVzZSBp biB0aGUKQEAgLTQxOTUsNyArNDE1Niw3IEBAIEdldFJ1bm5pbmdUcmFuc2FjdGlvbkxvY2tzKGlu dCAqbmxvY2tzKQogCSAqIG5vbi1leGNsdXNpdmUgbG9jayB0eXBlcy4KIAkgKi8KIAlpbmRleCA9 IDA7Ci0Jd2hpbGUgKChwcm9jbG9jayA9IChQUk9DTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnNl cXN0YXQpKSkKKwlmb3JlYWNoX2hhc2goUFJPQ0xPQ0ssIHByb2Nsb2NrLCBMb2NrTWV0aG9kUHJv Y0xvY2tIYXNoKQogCXsKIAkJLyogbWFrZSBzdXJlIHRoaXMgZGVmaW5pdGlvbiBtYXRjaGVzIHRo ZSBvbmUgdXNlZCBpbiBMb2NrQWNxdWlyZSAqLwogCQlpZiAoKHByb2Nsb2NrLT5ob2xkTWFzayAm IExPQ0tCSVRfT04oQWNjZXNzRXhjbHVzaXZlTG9jaykpICYmCkBAIC00MjkwLDE4ICs0MjUxLDE0 IEBAIHZvaWQKIER1bXBBbGxMb2Nrcyh2b2lkKQogewogCVBHUFJPQwkgICAqcHJvYzsKLQlQUk9D TE9DSyAgICpwcm9jbG9jazsKIAlMT0NLCSAgICpsb2NrOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7CiAKIAlwcm9jID0gTXlQcm9jOwogCiAJaWYgKHByb2MgJiYgcHJvYy0+d2FpdExvY2spCiAJ CUxPQ0tfUFJJTlQoIkR1bXBBbGxMb2Nrczogd2FpdGluZyBvbiIsIHByb2MtPndhaXRMb2NrLCAw KTsKIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZFByb2NMb2NrSGFzaCk7Ci0K LQl3aGlsZSAoKHByb2Nsb2NrID0gKFBST0NMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUFJPQ0xPQ0ssIHByb2Nsb2NrLCBMb2NrTWV0aG9k UHJvY0xvY2tIYXNoKQogCXsKIAkJUFJPQ0xPQ0tfUFJJTlQoIkR1bXBBbGxMb2NrcyIsIHByb2Ns b2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCmluZGV4IDhmZWE4MTFlY2JlLi5kMzUw OGUwYjkwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwpAQCAtMzI1LDE1ICszMjUsMTAg QEAgaW5pdF9sd2xvY2tfc3RhdHModm9pZCkKIHN0YXRpYyB2b2lkCiBwcmludF9sd2xvY2tfc3Rh dHMoaW50IGNvZGUsIERhdHVtIGFyZykKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlsd2xv Y2tfc3RhdHMgKmx3c3RhdHM7Ci0KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBsd2xvY2tfc3RhdHNf aHRhYik7Ci0KIAkvKiBHcmFiIGFuIExXTG9jayB0byBrZWVwIGRpZmZlcmVudCBiYWNrZW5kcyBm cm9tIG1peGluZyByZXBvcnRzICovCiAJTFdMb2NrQWNxdWlyZSgmTWFpbkxXTG9ja0FycmF5WzBd LmxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKLQl3aGlsZSAoKGx3c3RhdHMgPSAobHdsb2NrX3N0YXRz ICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKGx3bG9j a19zdGF0cywgbHdzdGF0cywgbHdsb2NrX3N0YXRzX2h0YWIpCiAJewogCQlmcHJpbnRmKHN0ZGVy ciwKIAkJCQkiUElEICVkIGx3bG9jayAlcyAlcDogc2hhY3EgJXUgZXhhY3EgJXUgYmxrICV1IHNw aW5kZWxheSAldSBkZXF1ZXVlIHNlbGYgJXVcbiIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGlj YXRlLmMKaW5kZXggNDQ3YjFlMzk4MDQuLmIzODVjYTBkNDVlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3ByZWRpY2F0ZS5jCkBAIC0xNDUzLDggKzE0NTMsNiBAQCBHZXRQcmVkaWNhdGVMb2NrU3Rh dHVzRGF0YSh2b2lkKQogCWludAkJCWk7CiAJaW50CQkJZWxzLAogCQkJCWVsOwotCUhBU0hfU0VR X1NUQVRVUyBzZXFzdGF0OwotCVBSRURJQ0FURUxPQ0sgKnByZWRsb2NrOwogCiAJZGF0YSA9IHBh bGxvY19vYmplY3QoUHJlZGljYXRlTG9ja0RhdGEpOwogCkBAIC0xNDc0LDExICsxNDcyLDkgQEAg R2V0UHJlZGljYXRlTG9ja1N0YXR1c0RhdGEodm9pZCkKIAogCiAJLyogU2NhbiB0aHJvdWdoIFBy ZWRpY2F0ZUxvY2tIYXNoIGFuZCBjb3B5IGNvbnRlbnRzICovCi0JaGFzaF9zZXFfaW5pdCgmc2Vx c3RhdCwgUHJlZGljYXRlTG9ja0hhc2gpOwotCiAJZWwgPSAwOwogCi0Jd2hpbGUgKChwcmVkbG9j ayA9IChQUkVESUNBVEVMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVh Y2hfaGFzaChQUkVESUNBVEVMT0NLLCBwcmVkbG9jaywgUHJlZGljYXRlTG9ja0hhc2gpCiAJewog CQlkYXRhLT5sb2NrdGFnc1tlbF0gPSBwcmVkbG9jay0+dGFnLm15VGFyZ2V0LT50YWc7CiAJCWRh dGEtPnhhY3RzW2VsXSA9ICpwcmVkbG9jay0+dGFnLm15WGFjdDsKQEAgLTI5MzUsOCArMjkzMSw2 IEBAIGV4aXQ6CiBzdGF0aWMgdm9pZAogRHJvcEFsbFByZWRpY2F0ZUxvY2tzRnJvbVRhYmxlKFJl bGF0aW9uIHJlbGF0aW9uLCBib29sIHRyYW5zZmVyKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXFz dGF0OwotCVBSRURJQ0FURUxPQ0tUQVJHRVQgKm9sZHRhcmdldDsKIAlQUkVESUNBVEVMT0NLVEFS R0VUICpoZWFwdGFyZ2V0OwogCU9pZAkJCWRiSWQ7CiAJT2lkCQkJcmVsSWQ7CkBAIC0yOTkyLDkg KzI5ODYsNyBAQCBEcm9wQWxsUHJlZGljYXRlTG9ja3NGcm9tVGFibGUoUmVsYXRpb24gcmVsYXRp b24sIGJvb2wgdHJhbnNmZXIpCiAJCVJlbW92ZVNjcmF0Y2hUYXJnZXQodHJ1ZSk7CiAKIAkvKiBT Y2FuIHRocm91Z2ggdGFyZ2V0IG1hcCAqLwotCWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIFByZWRp Y2F0ZUxvY2tUYXJnZXRIYXNoKTsKLQotCXdoaWxlICgob2xkdGFyZ2V0ID0gKFBSRURJQ0FURUxP Q0tUQVJHRVQgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9yZWFjaF9oYXNoKFBS RURJQ0FURUxPQ0tUQVJHRVQsIG9sZHRhcmdldCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpCiAJ ewogCQlkbGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsKIApAQCAtNDQxNyw4ICs0NDA5LDYgQEAgQ2hl Y2tGb3JTZXJpYWxpemFibGVDb25mbGljdEluKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKnRpZCwgQmwKIHZvaWQKIENoZWNrVGFibGVGb3JTZXJpYWxpemFibGVDb25m bGljdEluKFJlbGF0aW9uIHJlbGF0aW9uKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXFzdGF0Owot CVBSRURJQ0FURUxPQ0tUQVJHRVQgKnRhcmdldDsKIAlPaWQJCQlkYklkOwogCU9pZAkJCWhlYXBJ ZDsKIAlpbnQJCQlpOwpAQCAtNDQ1Miw5ICs0NDQyLDcgQEAgQ2hlY2tUYWJsZUZvclNlcmlhbGl6 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 bnQuYwppbmRleCAzY2YyZDAyOWQwYy4uYzVkYjc1ODI2MzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTMwMCw4ICszMDAsNiBAQCBjaGFyCSAgKioKIEdldFdh aXRFdmVudEN1c3RvbU5hbWVzKHVpbnQzMiBjbGFzc0lkLCBpbnQgKm53YWl0ZXZlbnRzKQogewog CWNoYXIJICAqKndhaXRldmVudG5hbWVzOwotCVdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lICpo ZW50cnk7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCWludAkJCWluZGV4OwogCWludAkJ CWVsczsKIApAQCAtMzE0LDEwICszMTIsOCBAQCBHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50 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 aGUuYwppbmRleCA3OWEyOTEzMjRjMC4uNTNjNjE2ZmJlMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsY2FjaGUuYwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBpbnQJaW5fcHJvZ3Jlc3NfbGlz dF9tYXhsZW47CiAgKiBlb3hhY3RfbGlzdFtdIHN0b3JlcyB0aGUgT0lEcyBvZiByZWxhdGlvbnMg dGhhdCAobWlnaHQpIG5lZWQgQXRFT1hhY3QKICAqIGNsZWFudXAgd29yay4gIFRoaXMgbGlzdCBp bnRlbnRpb25hbGx5IGhhcyBsaW1pdGVkIHNpemU7IGlmIGl0IG92ZXJmbG93cywKICAqIHdlIGZh bGwgYmFjayB0byBzY2FubmluZyB0aGUgd2hvbGUgaGFzaHRhYmxlLiAgVGhlcmUgaXMgbm8gdmFs dWUgaW4gYSB2ZXJ5Ci0gKiBsYXJnZSBsaXN0IGJlY2F1c2UgKDEpIGF0IHNvbWUgcG9pbnQsIGEg aGFzaF9zZXFfc2VhcmNoIHNjYW4gaXMgZmFzdGVyIHRoYW4KKyAqIGxhcmdlIGxpc3QgYmVjYXVz ZSAoMSkgYXQgc29tZSBwb2ludCwgYSBmb3JlYWNoX2hhc2ggc2NhbiBpcyBmYXN0ZXIgdGhhbgog ICogcmV0YWlsIGxvb2t1cHMsIGFuZCAoMikgdGhlIHZhbHVlIG9mIHRoaXMgaXMgdG8gcmVkdWNl IEVPWGFjdCB3b3JrIGZvcgogICogc2hvcnQgdHJhbnNhY3Rpb25zLCB3aGljaCBjYW4ndCBoYXZl IGRpcnRpZWQgYWxsIHRoYXQgbWFueSB0YWJsZXMgYW55d2F5LgogICogRU9YYWN0TGlzdEFkZCgp IGRvZXMgbm90IGJvdGhlciB0byBwcmV2ZW50IGR1cGxpY2F0ZSBsaXN0IGVudHJpZXMsIHNvIHRo ZQpAQCAtMjk1NywxMyArMjk1NywxMyBAQCBSZWxhdGlvbkNhY2hlSW52YWxpZGF0ZUVudHJ5KE9p ZCByZWxhdGlvbklkKQogICoKICAqCSBXZSBkbyB0aGlzIGluIHR3byBwaGFzZXM6IHRoZSBmaXJz dCBwYXNzIGRlbGV0ZXMgZGVsZXRhYmxlIGl0ZW1zLCBhbmQKICAqCSB0aGUgc2Vjb25kIG9uZSBy ZWJ1aWxkcyB0aGUgcmVidWlsZGFibGUgaXRlbXMuICBUaGlzIGlzIGVzc2VudGlhbCBmb3IKLSAq CSBzYWZldHksIGJlY2F1c2UgaGFzaF9zZXFfc2VhcmNoIG9ubHkgY29wZXMgd2l0aCBjb25jdXJy ZW50IGRlbGV0aW9uIG9mCisgKgkgc2FmZXR5LCBiZWNhdXNlIGZvcmVhY2hfaGFzaCBvbmx5IGNv cGVzIHdpdGggY29uY3VycmVudCBkZWxldGlvbiBvZgogICoJIHRoZSBlbGVtZW50IGl0IGlzIGN1 cnJlbnRseSB2aXNpdGluZy4gIElmIGEgc2Vjb25kIFNJIG92ZXJmbG93IHdlcmUgdG8KICAqCSBv Y2N1ciB3aGlsZSB3ZSBhcmUgd2Fsa2luZyB0aGUgdGFibGUsIHJlc3VsdGluZyBpbiByZWN1cnNp dmUgZW50cnkgdG8KICAqCSB0aGlzIHJvdXRpbmUsIHdlIGNvdWxkIGNyYXNoIGJlY2F1c2UgdGhl IGlubmVyIGludm9jYXRpb24gYmxvd3MgYXdheQogICoJIHRoZSBlbnRyeSBuZXh0IHRvIGJlIHZp c2l0ZWQgYnkgdGhlIG91dGVyIHNjYW4uICBCdXQgdGhpcyB3YXkgaXMgT0ssCiAgKgkgYmVjYXVz ZSAoYSkgZHVyaW5nIHRoZSBmaXJzdCBwYXNzIHdlIHdvbid0IHByb2Nlc3MgYW55IG1vcmUgU0kg bWVzc2FnZXMsCi0gKgkgc28gaGFzaF9zZXFfc2VhcmNoIHdpbGwgY29tcGxldGUgc2FmZWx5OyAo YikgZHVyaW5nIHRoZSBzZWNvbmQgcGFzcyB3ZQorICoJIHNvIGZvcmVhY2hfaGFzaCB3aWxsIGNv bXBsZXRlIHNhZmVseTsgKGIpIGR1cmluZyB0aGUgc2Vjb25kIHBhc3Mgd2UKICAqCSBvbmx5IGhv bGQgb250byBwb2ludGVycyB0byBub25kZWxldGFibGUgZW50cmllcy4KICAqCiAgKgkgVGhlIHR3 by1waGFzZSBhcHByb2FjaCBhbHNvIG1ha2VzIGl0IGVhc3kgdG8gdXBkYXRlIHJlbGZpbGVudW1i ZXJzIGZvcgpAQCAtMjk4MCw4ICsyOTgwLDYgQEAgUmVsYXRpb25DYWNoZUludmFsaWRhdGVFbnRy eShPaWQgcmVsYXRpb25JZCkKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKGJvb2wgZGVi dWdfZGlzY2FyZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQg KmlkaGVudHJ5OwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUxpc3QJICAgKnJlYnVpbGRGaXJzdExp c3QgPSBOSUw7CiAJTGlzdAkgICAqcmVidWlsZExpc3QgPSBOSUw7CkBAIC0yOTk0LDkgKzI5OTIs NyBAQCBSZWxhdGlvbkNhY2hlSW52YWxpZGF0ZShib29sIGRlYnVnX2Rpc2NhcmQpCiAJUmVsYXRp b25NYXBJbnZhbGlkYXRlQWxsKCk7CiAKIAkvKiBQaGFzZSAxICovCi0JaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENh Y2hlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goUmVsSWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9uSWRDYWNoZSkKIAl7CiAJCXJlbGF0 aW9uID0gaWRoZW50cnktPnJlbGRlc2M7CiAKQEAgLTMxNDEsMTIgKzMxMzcsOSBAQCBBc3NlcnRQ ZW5kaW5nU3luY0NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbGF0aW9uKQogdm9pZAogQXNzZXJ0UGVu ZGluZ1N5bmNzX1JlbGF0aW9uQ2FjaGUodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAlSZWxhdGlvbiAgICpyZWxzOwogCWludAkJCW1h eHJlbHM7CiAJaW50CQkJbnJlbHM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJ aTsKIAogCS8qCkBAIC0zMTYwLDggKzMxNTMsNyBAQCBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRp b25DYWNoZSh2b2lkKQogCW1heHJlbHMgPSAxOwogCXJlbHMgPSBwYWxsb2MobWF4cmVscyAqIHNp emVvZigqcmVscykpOwogCW5yZWxzID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIEdldExv Y2tNZXRob2RMb2NhbEhhc2goKSk7Ci0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxM T0NLLCBsb2NhbGxvY2ssIEdldExvY2tNZXRob2RMb2NhbEhhc2goKSkKIAl7CiAJCU9pZAkJCXJl bGlkOwogCQlSZWxhdGlvbglyOwpAQCAtMzE4Myw4ICszMTc1LDcgQEAgQXNzZXJ0UGVuZGluZ1N5 bmNzX1JlbGF0aW9uQ2FjaGUodm9pZCkKIAkJcmVsc1tucmVscysrXSA9IHI7CiAJfQogCi0JaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCXdoaWxlICgoaWRoZW50cnkg PSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ Zm9yZWFjaF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJ CUFzc2VydFBlbmRpbmdTeW5jQ29uc2lzdGVuY3koaWRoZW50cnktPnJlbGRlc2MpOwogCiAJZm9y IChpID0gMDsgaSA8IG5yZWxzOyBpKyspCkBAIC0zMjEyLDggKzMyMDMsNiBAQCBBc3NlcnRQZW5k aW5nU3luY3NfUmVsYXRpb25DYWNoZSh2b2lkKQogdm9pZAogQXRFT1hhY3RfUmVsYXRpb25DYWNo ZShib29sIGlzQ29tbWl0KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNo ZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMjI1LDcgKzMyMTQsNyBAQCBB dEVPWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAKIAkvKgogCSAqIFVubGVzcyB0 aGUgZW94YWN0X2xpc3RbXSBvdmVyZmxvd2VkLCB3ZSBvbmx5IG5lZWQgdG8gZXhhbWluZSB0aGUg cmVscwotCSAqIGxpc3RlZCBpbiBpdC4gIE90aGVyd2lzZSBmYWxsIGJhY2sgb24gYSBoYXNoX3Nl cV9zZWFyY2ggc2Nhbi4KKwkgKiBsaXN0ZWQgaW4gaXQuICBPdGhlcndpc2UgZmFsbCBiYWNrIG9u IGEgZm9yZWFjaF9oYXNoIHNjYW4uCiAJICoKIAkgKiBGb3Igc2ltcGxpY2l0eSwgZW94YWN0X2xp c3RbXSBlbnRyaWVzIGFyZSBub3QgZGVsZXRlZCB0aWxsIGVuZCBvZgogCSAqIHRvcC1sZXZlbCB0 cmFuc2FjdGlvbiwgZXZlbiB0aG91Z2ggd2UgY291bGQgcmVtb3ZlIHRoZW0gYXQKQEAgLTMyMzYs OCArMzIyNSw3IEBAIEF0RU9YYWN0X1JlbGF0aW9uQ2FjaGUoYm9vbCBpc0NvbW1pdCkKIAkgKi8K IAlpZiAoZW94YWN0X2xpc3Rfb3ZlcmZsb3dlZCkKIAl7Ci0JCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgUmVsYXRpb25JZENhY2hlKTsKLQkJd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFJl bElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCXsKIAkJCUF0RU9YYWN0 X2NsZWFudXAoaWRoZW50cnktPnJlbGRlc2MsIGlzQ29tbWl0KTsKIAkJfQpAQCAtMzI0NiwxMCAr MzIzNCwxMSBAQCBBdEVPWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAJewogCQlm b3IgKGkgPSAwOyBpIDwgZW94YWN0X2xpc3RfbGVuOyBpKyspCiAJCXsKLQkJCWlkaGVudHJ5ID0g KFJlbElkQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goUmVsYXRpb25JZENhY2hlLAotCQkJCQkJCQkJ CQkJCSAmZW94YWN0X2xpc3RbaV0sCi0JCQkJCQkJCQkJCQkJIEhBU0hfRklORCwKLQkJCQkJCQkJ CQkJCQkgTlVMTCk7CisJCQlSZWxJZENhY2hlRW50ICppZGhlbnRyeSA9IGhhc2hfc2VhcmNoKFJl bGF0aW9uSWRDYWNoZSwKKwkJCQkJCQkJCQkJCSAgJmVveGFjdF9saXN0W2ldLAorCQkJCQkJCQkJ CQkJICBIQVNIX0ZJTkQsCisJCQkJCQkJCQkJCQkgIE5VTEwpOworCiAJCQlpZiAoaWRoZW50cnkg IT0gTlVMTCkKIAkJCQlBdEVPWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0NvbW1p dCk7CiAJCX0KQEAgLTMzNjUsOCArMzM1NCw2IEBAIHZvaWQKIEF0RU9TdWJYYWN0X1JlbGF0aW9u Q2FjaGUoYm9vbCBpc0NvbW1pdCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQkJCQkJICBT dWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMzc5LDEz ICszMzY2LDEyIEBAIEF0RU9TdWJYYWN0X1JlbGF0aW9uQ2FjaGUoYm9vbCBpc0NvbW1pdCwgU3Vi VHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCiAJLyoKIAkgKiBVbmxlc3MgdGhlIGVveGFjdF9saXN0 W10gb3ZlcmZsb3dlZCwgd2Ugb25seSBuZWVkIHRvIGV4YW1pbmUgdGhlIHJlbHMKLQkgKiBsaXN0 ZWQgaW4gaXQuICBPdGhlcndpc2UgZmFsbCBiYWNrIG9uIGEgaGFzaF9zZXFfc2VhcmNoIHNjYW4u ICBTYW1lCi0JICogbG9naWMgYXMgaW4gQXRFT1hhY3RfUmVsYXRpb25DYWNoZS4KKwkgKiBsaXN0 ZWQgaW4gaXQuICBPdGhlcndpc2UgZmFsbCBiYWNrIG9uIGEgZm9yZWFjaF9oYXNoIHNjYW4uICBT YW1lIGxvZ2ljCisJICogYXMgaW4gQXRFT1hhY3RfUmVsYXRpb25DYWNoZS4KIAkgKi8KIAlpZiAo ZW94YWN0X2xpc3Rfb3ZlcmZsb3dlZCkKIAl7Ci0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVs YXRpb25JZENhY2hlKTsKLQkJd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFJlbElkQ2Fj aGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCXsKIAkJCUF0RU9TdWJYYWN0X2Ns ZWFudXAoaWRoZW50cnktPnJlbGRlc2MsIGlzQ29tbWl0LAogCQkJCQkJCQlteVN1YmlkLCBwYXJl bnRTdWJpZCk7CkBAIC0zMzk1LDYgKzMzODEsOCBAQCBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hl KGJvb2wgaXNDb21taXQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAl7CiAJCWZvciAoaSA9 IDA7IGkgPCBlb3hhY3RfbGlzdF9sZW47IGkrKykKIAkJeworCQkJUmVsSWRDYWNoZUVudCAqaWRo ZW50cnk7CisKIAkJCWlkaGVudHJ5ID0gKFJlbElkQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goUmVs YXRpb25JZENhY2hlLAogCQkJCQkJCQkJCQkJCSAmZW94YWN0X2xpc3RbaV0sCiAJCQkJCQkJCQkJ CQkJIEhBU0hfRklORCwKQEAgLTQwOTMsOCArNDA4MSw2IEBAIFJlbGF0aW9uQ2FjaGVJbml0aWFs aXplUGhhc2UyKHZvaWQpCiB2b2lkCiBSZWxhdGlvbkNhY2hlSW5pdGlhbGl6ZVBoYXNlMyh2b2lk KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7 CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJYm9vbAkJbmVlZE5ld0NhY2hlRmlsZSA9ICFjcml0 aWNhbFNoYXJlZFJlbGNhY2hlc0J1aWx0OwogCkBAIC00MjI1LDE1ICs0MjExLDEzIEBAIFJlbGF0 aW9uQ2FjaGVJbml0aWFsaXplUGhhc2UzKHZvaWQpCiAJICoKIAkgKiBXaGVuZXZlciB3ZSBhY2Nl c3MgdGhlIGNhdGFsb2dzIHRvIHJlYWQgZGF0YSwgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvZgog CSAqIGEgc2hhcmVkLWludmFsIGNhY2hlIGZsdXNoIGNhdXNpbmcgcmVsY2FjaGUgZW50cmllcyB0 byBiZSByZW1vdmVkLgotCSAqIFNpbmNlIGhhc2hfc2VxX3NlYXJjaCBvbmx5IGd1YXJhbnRlZXMg dG8gc3RpbGwgd29yayBhZnRlciB0aGUgKmN1cnJlbnQqCisJICogU2luY2UgZm9yZWFjaF9oYXNo IG9ubHkgZ3VhcmFudGVlcyB0byBzdGlsbCB3b3JrIGFmdGVyIHRoZSAqY3VycmVudCoKIAkgKiBl bnRyeSBpcyByZW1vdmVkLCBpdCdzIHVuc2FmZSB0byBjb250aW51ZSB0aGUgaGFzaHRhYmxlIHNj YW4gYWZ0ZXJ3YXJkLgogCSAqIFdlIGhhbmRsZSB0aGlzIGJ5IHJlc3RhcnRpbmcgdGhlIHNjYW4g ZnJvbSBzY3JhdGNoIGFmdGVyIGVhY2ggYWNjZXNzLgogCSAqIFRoaXMgaXMgdGhlb3JldGljYWxs eSBPKE5eMiksIGJ1dCB0aGUgbnVtYmVyIG9mIGVudHJpZXMgdGhhdCBhY3R1YWxseQogCSAqIG5l ZWQgdG8gYmUgZml4ZWQgaXMgc21hbGwgZW5vdWdoIHRoYXQgaXQgZG9lc24ndCBtYXR0ZXIuCiAJ ICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUg KChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsSWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9u SWRDYWNoZSkKIAl7CiAJCVJlbGF0aW9uCXJlbGF0aW9uID0gaWRoZW50cnktPnJlbGRlc2M7CiAJ CWJvb2wJCXJlc3RhcnQgPSBmYWxzZTsKQEAgLTQzNDMsMTAgKzQzMjcsNyBAQCBSZWxhdGlvbkNh Y2hlSW5pdGlhbGl6ZVBoYXNlMyh2b2lkKQogCiAJCS8qIE5vdywgcmVzdGFydCB0aGUgaGFzaHRh YmxlIHNjYW4gaWYgbmVlZGVkICovCiAJCWlmIChyZXN0YXJ0KQotCQl7Ci0JCQloYXNoX3NlcV90 ZXJtKCZzdGF0dXMpOwotCQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUp OwotCQl9CisJCQlmb3JlYWNoX2hhc2hfcmVzdGFydChpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hl KTsKIAl9CiAKIAkvKgpAQCAtNjU5OSw4ICs2NTgwLDYgQEAgd3JpdGVfcmVsY2FjaGVfaW5pdF9m aWxlKGJvb2wgc2hhcmVkKQogCWNoYXIJCXRlbXBmaWxlbmFtZVtNQVhQR1BBVEhdOwogCWNoYXIJ CWZpbmFsZmlsZW5hbWVbTUFYUEdQQVRIXTsKIAlpbnQJCQltYWdpYzsKLQlIQVNIX1NFUV9TVEFU VVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlkaGVudHJ5OwogCWludAkJCWk7CiAKIAkvKgpA QCAtNjY2MCw5ICs2NjM5LDcgQEAgd3JpdGVfcmVsY2FjaGVfaW5pdF9maWxlKGJvb2wgc2hhcmVk 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 ZS90c19jYWNoZS5jCmluZGV4IDcxZTU3MDc2MDAyLi5hOGM4MDhmODdlZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS90c19jYWNoZS5jCkBAIC05NSwxMSArOTUsOCBAQCBzdGF0aWMgdm9pZAogSW52YWxp 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 cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGNkOTlkNzJlOGE4Li5kNWM1MTNkMGJk MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0yODksOCArMjg5LDYgQEAgUHJvY2Vzc0NvbmZpZ0Zp bGVJbnRlcm5hbChHdWNDb250ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0aW5ncywgaW50IGVs ZXZlbCkKIAljb25zdCBjaGFyICpDb25mRmlsZVdpdGhFcnJvcjsKIAlDb25maWdWYXJpYWJsZSAq aGVhZCwKIAkJCSAgICp0YWlsOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JR1VDSGFzaEVu dHJ5ICpoZW50cnk7CiAKIAkvKiBQYXJzZSB0aGUgbWFpbiBjb25maWcgZmlsZSBpbnRvIGEgbGlz dCBvZiBvcHRpb24gbmFtZXMgYW5kIHZhbHVlcyAqLwogCUNvbmZGaWxlV2l0aEVycm9yID0gQ29u ZmlnRmlsZU5hbWU7CkBAIC0zNjUsOCArMzYzLDcgQEAgUHJvY2Vzc0NvbmZpZ0ZpbGVJbnRlcm5h bChHdWNDb250ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0aW5ncywgaW50IGVsZXZlbCkKIAkg KiBuZWVkIHRoaXMgc28gdGhhdCB3ZSBjYW4gdGVsbCBiZWxvdyB3aGljaCBvbmVzIGhhdmUgYmVl biByZW1vdmVkIGZyb20KIAkgKiB0aGUgZmlsZSBzaW5jZSB3ZSBsYXN0IHByb2Nlc3NlZCBpdC4K IAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhl bnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxM KQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewog CQlzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKmdjb25mID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTQ1 MCw4ICs0NDcsNyBAQCBQcm9jZXNzQ29uZmlnRmlsZUludGVybmFsKEd1Y0NvbnRleHQgY29udGV4 dCwgYm9vbCBhcHBseVNldHRpbmdzLCBpbnQgZWxldmVsKQogCSAqIGJvb3QtdGltZSBkZWZhdWx0 cy4gIElmIHN1Y2ggYSB2YXJpYWJsZSBjYW4ndCBiZSBjaGFuZ2VkIGFmdGVyIHN0YXJ0dXAsCiAJ ICogcmVwb3J0IHRoYXQgYW5kIGNvbnRpbnVlLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdVQ0hhc2hFbnRy eSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCXN0cnVjdCBjb25maWdfZ2VuZXJpYyAqZ2Nv bmYgPSBoZW50cnktPmd1Y3ZhcjsKIApAQCAtODQwLDggKzgzNiw2IEBAIHN0cnVjdCBjb25maWdf Z2VuZXJpYyAqKgogZ2V0X2d1Y192YXJpYWJsZXMoaW50ICpudW1fdmFycykKIHsKIAlzdHJ1Y3Qg Y29uZmlnX2dlbmVyaWMgKipyZXN1bHQ7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNI YXNoRW50cnkgKmhlbnRyeTsKIAlpbnQJCQlpOwogCiAJKm51bV92YXJzID0gaGFzaF9nZXRfbnVt X2VudHJpZXMoZ3VjX2hhc2h0YWIpOwpAQCAtODQ5LDggKzg0Myw3IEBAIGdldF9ndWNfdmFyaWFi bGVzKGludCAqbnVtX3ZhcnMpCiAKIAkvKiBFeHRyYWN0IHBvaW50ZXJzIGZyb20gdGhlIGhhc2gg dGFibGUgKi8KIAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsK LQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hh c2h0YWIpCiAJCXJlc3VsdFtpKytdID0gaGVudHJ5LT5ndWN2YXI7CiAJQXNzZXJ0KGkgPT0gKm51 bV92YXJzKTsKIApAQCAtMTQwMSw5ICsxMzk0LDYgQEAgY2hlY2tfR1VDX2luaXQoY29uc3Qgc3Ry dWN0IGNvbmZpZ19nZW5lcmljICpnY29uZikKIHZvaWQKIEluaXRpYWxpemVHVUNPcHRpb25zKHZv aWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsK LQogCS8qCiAJICogQmVmb3JlIGxvZ19saW5lX3ByZWZpeCBjb3VsZCBwb3NzaWJseSByZWNlaXZl IGEgbm9uZW1wdHkgc2V0dGluZywgbWFrZQogCSAqIHN1cmUgdGhhdCB0aW1lem9uZSBwcm9jZXNz aW5nIGlzIG1pbmltYWxseSBhbGl2ZSAoc2VlIGVsb2cuYykuCkBAIC0xNDE5LDggKzE0MDksNyBA QCBJbml0aWFsaXplR1VDT3B0aW9ucyh2b2lkKQogCSAqIExvYWQgYWxsIHZhcmlhYmxlcyB3aXRo IHRoZWlyIGNvbXBpbGVkLWluIGRlZmF1bHRzLCBhbmQgaW5pdGlhbGl6ZQogCSAqIHN0YXR1cyBm aWVsZHMgYXMgbmVlZGVkLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgZ3VjX2hhc2h0 YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdVQ0hhc2hFbnRyeSwgaGVudHJ5LCBn dWNfaGFzaHRhYikKIAl7CiAJCS8qIENoZWNrIG1hcHBpbmcgYmV0d2VlbiBpbml0aWFsIGFuZCBk ZWZhdWx0IHZhbHVlICovCiAJCUFzc2VydChjaGVja19HVUNfaW5pdChoZW50cnktPmd1Y3Zhcikp OwpAQCAtMjQ0Niw5ICsyNDM1LDYgQEAgQXRFT1hhY3RfR1VDKGJvb2wgaXNDb21taXQsIGludCBu ZXN0TGV2ZWwpCiB2b2lkCiBCZWdpblJlcG9ydGluZ0dVQ09wdGlvbnModm9pZCkKIHsKLQlIQVNI X1NFUV9TVEFUVVMgc3RhdHVzOwotCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwotCiAJLyoKIAkgKiBE b24ndCBkbyBhbnl0aGluZyB1bmxlc3MgdGFsa2luZyB0byBhbiBpbnRlcmFjdGl2ZSBmcm9udGVu ZC4KIAkgKi8KQEAgLTI0NzAsOCArMjQ1Niw3IEBAIEJlZ2luUmVwb3J0aW5nR1VDT3B0aW9ucyh2 b2lkKQogCQkJCQkJUEdDX0lOVEVSTkFMLCBQR0NfU19PVkVSUklERSk7CiAKIAkvKiBUcmFuc21p dCBpbml0aWFsIHZhbHVlcyBvZiBpbnRlcmVzdGluZyB2YXJpYWJsZXMgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50 cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChH VUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dl bmVyaWMgKmNvbmYgPSBoZW50cnktPmd1Y3ZhcjsKIApAQCAtNTE3NCwxNiArNTE1OSwxMyBAQCB2 b2lkCiBNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoY29uc3QgY2hhciAqY2xhc3NOYW1lKQogewogCWlu dAkJCWNsYXNzTGVuID0gc3RybGVuKGNsYXNzTmFtZSk7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1 czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAK IAkvKgogCSAqIENoZWNrIGZvciBleGlzdGluZyBwbGFjZWhvbGRlcnMuICBXZSBtdXN0IGFjdHVh bGx5IHJlbW92ZSBpbnZhbGlkCiAJICogcGxhY2Vob2xkZXJzLCBlbHNlIGZ1dHVyZSBwYXJhbGxl bCB3b3JrZXIgc3RhcnR1cHMgd2lsbCBmYWlsLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdVQ0hhc2hFbnRy eSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCXN0cnVjdCBjb25maWdfZ2VuZXJpYyAqdmFy ID0gaGVudHJ5LT5ndWN2YXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IGY4 YTZkYjUzMTZhLi45MmE5OGQwMGY1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBA IC0zNSw3ICszNSw3IEBACiAgKiB1c2VkIGluIGluaXRpYWxseSBzaXppbmcgdGhlIFBvcnRhbEhh c2hUYWJsZSBpbiBFbmFibGVQb3J0YWxNYW5hZ2VyKCkuCiAgKiBTaW5jZSB0aGUgaGFzaCB0YWJs ZSBjYW4gZXhwYW5kLCB0aGVyZSdzIG5vIG5lZWQgdG8gbWFrZSB0aGlzIG92ZXJseQogICogZ2Vu ZXJvdXMsIGFuZCBrZWVwaW5nIGl0IHNtYWxsIGF2b2lkcyB1bm5lY2Vzc2FyeSBvdmVyaGVhZCBp biB0aGUKLSAqIGhhc2hfc2VxX3NlYXJjaCgpIGNhbGxzIGV4ZWN1dGVkIGR1cmluZyB0cmFuc2Fj dGlvbiBlbmQuCisgKiBmb3JlYWNoX2hhc2ggbG9vcHMgZXhlY3V0ZWQgZHVyaW5nIHRyYW5zYWN0 aW9uIGVuZC4KICAqLwogI2RlZmluZSBQT1JUQUxTX1BFUl9VU0VSCSAgIDE2CiAKQEAgLTYwMywx NCArNjAzLDEwIEBAIFBvcnRhbERyb3AoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcENvbW1pdCkK IHZvaWQKIFBvcnRhbEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCiAJaWYgKFBvcnRhbEhhc2hUYWJs ZSA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhh c2hUYWJsZSk7Ci0Jd2hpbGUgKChoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRh YmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtNjIxLDgg KzYxNyw3IEBAIFBvcnRhbEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKQogCQlQb3J0YWxEcm9wKHBv cnRhbCwgZmFsc2UpOwogCiAJCS8qIFJlc3RhcnQgdGhlIGl0ZXJhdGlvbiBpbiBjYXNlIHRoYXQg bGVkIHRvIG90aGVyIGRyb3BzICovCi0JCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7Ci0JCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKKwkJZm9yZWFjaF9oYXNoX3Jlc3Rh cnQoaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpOwogCX0KIH0KIApAQCAtNjc0LDEyICs2NjksOCBA QCBib29sCiBQcmVDb21taXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSkKIHsKIAlib29sCQlyZXN1 bHQgPSBmYWxzZTsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhl bnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKIAotCXdo aWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhh c2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTc2 MSw4ICs3NTIsNyBAQCBQcmVDb21taXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSkKIAkJICogaXRl cmF0aW9uLCBiZWNhdXNlIHdlIGNvdWxkIGhhdmUgaW52b2tlZCB1c2VyLWRlZmluZWQgY29kZSB0 aGF0CiAJCSAqIGNhdXNlZCBhIGRyb3Agb2YgdGhlIG5leHQgcG9ydGFsIGluIHRoZSBoYXNoIGNo YWluLgogCQkgKi8KLQkJaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKLQkJaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOworCQlmb3JlYWNoX2hhc2hfcmVzdGFydChoZW50cnks IFBvcnRhbEhhc2hUYWJsZSk7CiAJfQogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTc3NywxMiArNzY3 LDcgQEAgUHJlQ29tbWl0X1BvcnRhbHMoYm9vbCBpc1ByZXBhcmUpCiB2b2lkCiBBdEFib3J0X1Bv cnRhbHModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQg KmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQot CXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRh bEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAg LTg1NSwxMiArODQwLDcgQEAgQXRBYm9ydF9Qb3J0YWxzKHZvaWQpCiB2b2lkCiBBdENsZWFudXBf UG9ydGFscyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVu dCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwot Ci0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0 YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9y dGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApA QCAtOTE0LDEyICs4OTQsNyBAQCBBdENsZWFudXBfUG9ydGFscyh2b2lkKQogdm9pZAogUG9ydGFs RXJyb3JDbGVhbnVwKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxI YXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJs ZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVudHJ5 LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFs OwogCkBAIC05NDMsMTIgKzkxOCw3IEBAIEF0U3ViQ29tbWl0X1BvcnRhbHMoU3ViVHJhbnNhY3Rp b25JZCBteVN1YmlkLAogCQkJCQlpbnQgcGFyZW50TGV2ZWwsCiAJCQkJCVJlc291cmNlT3duZXIg cGFyZW50WGFjdE93bmVyKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFz aEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUp OwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwg UG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsK IApAQCAtOTc5LDEyICs5NDksNyBAQCBBdFN1YkFib3J0X1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25J ZCBteVN1YmlkLAogCQkJCSAgIFJlc291cmNlT3duZXIgbXlYYWN0T3duZXIsCiAJCQkJICAgUmVz b3VyY2VPd25lciBwYXJlbnRYYWN0T3duZXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRh bEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVu dCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRy eS0+cG9ydGFsOwogCkBAIC0xMDg5LDEyICsxMDU0LDcgQEAgQXRTdWJBYm9ydF9Qb3J0YWxzKFN1 YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIHZvaWQKIEF0U3ViQ2xlYW51cF9Qb3J0YWxzKFN1YlRy YW5zYWN0aW9uSWQgbXlTdWJpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRh bEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRh YmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2Vh cmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50 cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0 YWw7CiAKQEAgLTExMjksOCArMTA4OSw2IEBAIERhdHVtCiBwZ19jdXJzb3IoUEdfRlVOQ1RJT05f QVJHUykKIHsKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2lu Zm8tPnJlc3VsdGluZm87Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCVBvcnRhbEhhc2hF bnQgKmhlbnRyeTsKIAogCS8qCiAJICogV2UgcHV0IGFsbCB0aGUgdHVwbGVzIGludG8gYSB0dXBs ZXN0b3JlIGluIG9uZSBzY2FuIG9mIHRoZSBoYXNodGFibGUuCkBAIC0xMTM4LDggKzEwOTYsNyBA QCBwZ19jdXJzb3IoUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAlJbml0TWF0ZXJpYWxpemVkU1JG KGZjaW5mbywgMCk7CiAKLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgUG9ydGFsSGFzaFRhYmxl KTsKLQl3aGlsZSAoKGhlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxM KQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkK IAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAJCURhdHVtCQl2YWx1ZXNb Nl07CkBAIC0xMTY4LDEyICsxMTI1LDcgQEAgcGdfY3Vyc29yKFBHX0ZVTkNUSU9OX0FSR1MpCiBi b29sCiBUaGVyZUFyZU5vUmVhZHlQb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFs SGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9 IGhlbnRyeS0+cG9ydGFsOwogCkBAIC0xMjA0LDEyICsxMTU2LDcgQEAgVGhlcmVBcmVOb1JlYWR5 UG9ydGFscyh2b2lkKQogdm9pZAogSG9sZFBpbm5lZFBvcnRhbHModm9pZCkKIHsKLQlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRh bEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRh bAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEyNTMsMTUgKzEyMDAsMTEgQEAgSG9s ZFBpbm5lZFBvcnRhbHModm9pZCkKIHZvaWQKIEZvcmdldFBvcnRhbFNuYXBzaG90cyh2b2lkKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwogCWlu dAkJCW51bVBvcnRhbFNuYXBzID0gMDsKIAlpbnQJCQludW1BY3RpdmVTbmFwcyA9IDA7CiAKIAkv KiBGaXJzdCwgc2NhbiBQb3J0YWxIYXNoVGFibGUgYW5kIGNsZWFyIHBvcnRhbFNuYXBzaG90IGZp ZWxkcyAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdo aWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhh c2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKZGlmZiAt LWdpdCBhL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMgYi9zcmMvcGwvcGxwZXJsL3BscGVybC5jCmlu ZGV4IGJjNWJkNWZhMDUxLi44ZmZlZTYzNjhmYyAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGVybC9w bHBlcmwuYworKysgYi9zcmMvcGwvcGxwZXJsL3BscGVybC5jCkBAIC01MDQsOSArNTA0LDYgQEAg c2V0X2ludGVycF9yZXF1aXJlKGJvb2wgdHJ1c3RlZCkKIHN0YXRpYyB2b2lkCiBwbHBlcmxfZmlu aShpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsKLQlw bHBlcmxfaW50ZXJwX2Rlc2MgKmludGVycF9kZXNjOwotCiAJZWxvZyhERUJVRzMsICJwbHBlcmxf ZmluaSIpOwogCiAJLyoKQEAgLTUyOCw4ICs1MjUsNyBAQCBwbHBlcmxfZmluaShpbnQgY29kZSwg RGF0dW0gYXJnKQogCXBscGVybF9kZXN0cm95X2ludGVycCgmcGxwZXJsX2hlbGRfaW50ZXJwKTsK IAogCS8qIFphcCBhbnkgZnVsbHktaW5pdGlhbGl6ZWQgaW50ZXJwcmV0ZXJzICovCi0JaGFzaF9z ZXFfaW5pdCgmaGFzaF9zZXEsIHBscGVybF9pbnRlcnBfaGFzaCk7Ci0Jd2hpbGUgKChpbnRlcnBf ZGVzYyA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChwbHBlcmxfaW50ZXJwX2Rlc2MsIGludGVycF9kZXNjLCBwbHBlcmxfaW50ZXJwX2hhc2gpCiAJ ewogCQlpZiAoaW50ZXJwX2Rlc2MtPmludGVycCkKIAkJewotLSAKMi41My4wCgo= --a91699ffa7e6cc4e3f5c5318326cd9392f0e1373c1b243d4367b86ee0bd6 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0005-Inline-functions-that-have-now-become-trivial.patch Content-Type: text/x-patch; charset=utf-8; name=v13-0005-Inline-functions-that-have-now-become-trivial.patch RnJvbSBiZWY0MDBhYTYyYmYwOGQ2N2FmOWQwNjBiM2U4YTkyNjRmY2M5MGQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMjM6MzM6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MyA1LzVdIElubGluZSBmdW5jdGlvbnMgdGhhdCBoYXZlIG5vdyBiZWNvbWUgdHJpdmlhbAoKLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICB8IDE3ICsrKy0tLS0tLS0tLS0t LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jICAgICB8IDE2ICsrKy0tLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jIHwgMjIgKysrKy0tLS0t LS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0NSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggOTY4Y2VhOGM5MjYuLjI0ZGUwYzM3 Zjc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC00OCw3ICs0OCw2IEBACiAgKi8KIHN0YXRp YyBIVEFCICpwcmVwYXJlZF9xdWVyaWVzID0gTlVMTDsKIAotc3RhdGljIHZvaWQgSW5pdFF1ZXJ5 SGFzaFRhYmxlKHZvaWQpOwogc3RhdGljIFBhcmFtTGlzdEluZm8gRXZhbHVhdGVQYXJhbXMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJUHJlcGFyZWRTdGF0ZW1lbnQgKnBzdG10LCBMaXN0 ICpwYXJhbXMsCiAJCQkJCQkJCQlFU3RhdGUgKmVzdGF0ZSk7CkBAIC0zNjYsMTggKzM2NSw2IEBA IEV2YWx1YXRlUGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUHJlcGFyZWRTdGF0ZW1lbnQgKnBz dG10LCBMaXN0ICpwYXJhbXMsCiAJcmV0dXJuIHBhcmFtTEk7CiB9CiAKLQotLyoKLSAqIEluaXRp YWxpemUgcXVlcnkgaGFzaCB0YWJsZSB1cG9uIGZpcnN0IHVzZS4KLSAqLwotc3RhdGljIHZvaWQK LUluaXRRdWVyeUhhc2hUYWJsZSh2b2lkKQotewotCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX21h a2VfY3h0KFByZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCi0JCQkJCQkJCQkgIlByZXBhcmVk IFF1ZXJpZXMiLCAzMiwKLQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKLX0KLQogLyoKICAq IFN0b3JlIGFsbCB0aGUgZGF0YSBwZXJ0YWluaW5nIHRvIGEgcXVlcnkgaW4gdGhlIGhhc2ggdGFi bGUgdXNpbmcKICAqIHRoZSBzcGVjaWZpZWQga2V5LiAgVGhlIHBhc3NlZCBDYWNoZWRQbGFuU291 cmNlIHNob3VsZCBiZSAidW5zYXZlZCIKQEAgLTM5NSw3ICszODIsOSBAQCBTdG9yZVByZXBhcmVk U3RhdGVtZW50KGNvbnN0IGNoYXIgKnN0bXRfbmFtZSwKIAogCS8qIEluaXRpYWxpemUgdGhlIGhh c2ggdGFibGUsIGlmIG5lY2Vzc2FyeSAqLwogCWlmICghcHJlcGFyZWRfcXVlcmllcykKLQkJSW5p dFF1ZXJ5SGFzaFRhYmxlKCk7CisJCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX21ha2VfY3h0KFBy ZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCisJCQkJCQkJCQkJICJQcmVwYXJlZCBRdWVyaWVz IiwgMzIsCisJCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyogQWRkIGVudHJ5IHRv IGhhc2ggdGFibGUgKi8KIAllbnRyeSA9IChQcmVwYXJlZFN0YXRlbWVudCAqKSBoYXNoX3NlYXJj aChwcmVwYXJlZF9xdWVyaWVzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggYWY3YTI5ZGYx ZjYuLjQ1MjQzNDlkNWU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5j 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 --a91699ffa7e6cc4e3f5c5318326cd9392f0e1373c1b243d4367b86ee0bd6--