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.94.2) (envelope-from ) id 1utB8B-002C26-Pl for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 20:28:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1utB8B-0019jO-1V for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 20:27:59 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1utB8A-0019jE-8z for pgsql-hackers@lists.postgresql.org; Mon, 01 Sep 2025 20:27:59 +0000 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1utB86-0003Cw-2g for pgsql-hackers@postgresql.org; Mon, 01 Sep 2025 20:27:57 +0000 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-61e4254271dso2561923a12.2 for ; Mon, 01 Sep 2025 13:27:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1756758473; x=1757363273; darn=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=y9Hvc0bxwWGB3rbB3i2XKWe8rUcxOdEw3VPVEiIkX6U=; b=cR5IBTbisJkr+kURR4DX57GZ2xC1kc9QkzRGcJYhMwFXrgANpXHUAK26ROUQbZd0wi z5QgdIbePJg4saYLA0hd3E6DnpWlom5tjAW1hrVxxxksOyYNbvQlBJKBbCyd7kSkUTOT KinUCbJ20dKlaGfH24OXMIdAjrPmnM63coN1NchMaA9aJ/fUnmchRqGFy9X54Q7ps8Ys aSPQrw9oahk8CRGETnlYbIqoB6NcrjpMn1TZPyzO7dI05ur2rJlwLoX9bjXMLzPMkDxf o2oGscnSpt5AT69s0/JIIxSnyB/iiLpp0q/W4OUS6T3XpvG07F0FumtIzn9Ekwxt+g/y 5DtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756758473; x=1757363273; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=y9Hvc0bxwWGB3rbB3i2XKWe8rUcxOdEw3VPVEiIkX6U=; b=kXpo+t7nSvYiSkpgqq98+J0DmibdeSjyGDzZNqXjP1/hVKhPjXCNY+x5lwfFk4ikxR /oyy91U+cSfr/VdjdifCq6d7rTC2dYfWYHBtPEO1J2CW+7IlFqs0IjvlNCClqtLnuGdU U0TcIsenyStZXBICQOHCPOqiwn/IW/kn4AuZF1hZR1J4P59tdBKPIDP5KWURld2g6H1/ LEHNal5YYGCJhsWLks156Ky5QO5bQp/kC9egi2cSd3EY4NCEBkacILq6gg2DBknzHxY2 YUTGTNzZme1mbhRbVCbtaNSI4CCw0QnS4RkyJULKvof1W1xl7OtprO1r6AdmtgV0gE4t gfDA== X-Forwarded-Encrypted: i=1; AJvYcCUlXp9irwNn4yDCdfOJoEAyDz4NB4MNRHBoYgOSNb2bPXumFTb0UW9K4zIO+aEW3K1cmk6xwW5AmkmfxoY8@postgresql.org X-Gm-Message-State: AOJu0YzImP/N505JtpJ7xXeWVK8ObXg1MRhPNcwuX+HCCC5IH+tBFqUS HWhmzjxc5n4O+YuKff0CT/5RsU/WN5zjZOqvXtAJDgk3knICJKU6TDfjqBHXwi7mKFE= X-Gm-Gg: ASbGnctb8SyPskcpP41KroHAlkEJp9iq/rPhaDdeZDB910T6dFZh3ELYEFl5xYuONjn QJi9QmdFHvSbaEGsCgln5v03i1NpjPg71EtmKP2Y6I92CrXrlyO0mV6049/ZWGoq+J5auWdFl9v 7eoCdlMCC2YBO2TmAh/5Yx4m+rjkobEMW5IOiLwFZDN7BJFsQQymdzVsX2Gm9y7mrYSp9+kvS7T mPNaSB7DRecXSeS/X/tYGzPUIUn41vLzT0sW93PMG6rmW/rrBkuwVDGKamjf56cmFpdrNx98AaN FjWC2EEJZopgGtLitDKN3eHAbU2FVOBv2PQG6dCGCpbvMi7jtvOS9ffXXCN7jp4Fs/WgvIZJvtP DuF+iUgcciVjhrdNUCOo3xXMtrrYcMVECmazDc93Rrt72qc5npBG76lFRYQ== X-Google-Smtp-Source: AGHT+IH0hDsArUEMFZUuiFzoZxCwNZoudRCw2I5XABz+ue2rkVVKsEGTUgYbBAsIKUqfqwpIEXF01Q== X-Received: by 2002:a05:6402:354c:b0:61c:6ca1:1a89 with SMTP id 4fb4d7f45d1cf-61d26861ae7mr7617923a12.5.1756758472684; Mon, 01 Sep 2025 13:27:52 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc1c7a10sm8077871a12.5.2025.09.01.13.27.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 01 Sep 2025 13:27:51 -0700 (PDT) Content-Type: multipart/mixed; boundary=34189d902e2f9d8ede7621ae1b42649d6dce1285d4448295a69d5552ca4e Mime-Version: 1.0 Date: Mon, 01 Sep 2025 22:27:51 +0200 Message-Id: To: "Robert Haas" From: "Jelte Fennema-Nio" Cc: "Artem Gavrilov" , "Jelte Fennema-Nio" , "Tomas Vondra" , "David G. Johnston" , "Jeff Davis" , "PostgreSQL-development" Subject: Re: Extension security improvement: Add support for extensions with an owned schema X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <585e996c-a5c6-4e61-acc4-d92b7a1458ea@vondra.me> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --34189d902e2f9d8ede7621ae1b42649d6dce1285d4448295a69d5552ca4e Content-Type: multipart/alternative; boundary=848eece602285f3edee9a546f64566f101e1765aafbfc5688068ec2433f3 --848eece602285f3edee9a546f64566f101e1765aafbfc5688068ec2433f3 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Mon Sep 1, 2025 at 4:44 PM CEST, Jelte Fennema-Nio wrote: > On Mon Aug 11, 2025 at 9:23 PM CEST, Robert Haas wrote: >> On Mon, Aug 11, 2025 at 1:55=E2=80=AFPM Robert Haas wrote: >>> [ some review ] > > Attached is a patch that addresses your comments I think.=20 Attached is a version that doesn't fail the tests. --848eece602285f3edee9a546f64566f101e1765aafbfc5688068ec2433f3-- --34189d902e2f9d8ede7621ae1b42649d6dce1285d4448295a69d5552ca4e Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v7-0001-Add-support-for-extensions-with-an-owned-schema.patch Content-Type: text/x-patch; charset=utf-8; name=v7-0001-Add-support-for-extensions-with-an-owned-schema.patch RnJvbSAxYzkxOTE3NmUwZDkwZDkxZWMyMzRkYjM0MzY5NWY4MGI2NzE1ZjA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDQgT2N0IDIwMjQgMjI6MzQ6NTEgKzAyMDAKU3ViamVjdDogW1BBVENIIHY3 XSBBZGQgc3VwcG9ydCBmb3IgZXh0ZW5zaW9ucyB3aXRoIGFuIG93bmVkIHNjaGVtYQoKV3JpdGlu ZyB0aGUgc3FsIG1pZ3JhdGlvbiBzY3JpcHRzIHRoYXQgYXJlIHJ1biBieSBDUkVBVEUgRVhURU5T SU9OIGFuZApBTFRFUiBFWFRFTlNJT04gVVBEQVRFIGFyZSBzZWN1cml0eSBtaW5lZmllbGRzIGZv ciBleHRlbnNpb24gYXV0aG9ycy4KT25lIGJpZyByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBzZWFy Y2hfcGF0aCBpcyBzZXQgdG8gdGhlIHNjaGVtYSBvZiB0aGUKZXh0ZW5zaW9uIHdoaWxlIHJ1bm5p bmcgdGhlc2Ugc2NyaXB0cywgYW5kIHRodXMgaWYgYSB1c2VyIHdpdGggbG93ZXIKcHJpdmlsZWdl cyBjYW4gY3JlYXRlIGZ1bmN0aW9ucyBvciBvcGVyYXRvcnMgaW4gdGhhdCBzY2hlbWEgdGhleSBj YW4gZG8KYWxsIGtpbmRzIG9mIHNlYXJjaF9wYXRoIGNvbmZ1c2lvbiBhdHRhY2tzIGlmIG5vdCBl dmVyeSBmdW5jdGlvbiBhbmQKb3BlcmF0b3IgdGhhdCBpcyB1c2VkIGluIHRoZSBzY3JpcHQgaXMg c2NoZW1hIHF1YWxpZmllZC4gV2hpbGUgZG9pbmcKc3VjaCBzY2hlbWEgcXVhbGlmaWNhdGlvbiBp cyBwb3NzaWJsZSwgaXQgcmVsaWVzIG9uIHRoZSBhdXRob3IgdG8gbmV2ZXIKbWFrZSBhIG1pc3Rh a2UgaW4gYW55IG9mIHRoZSBzcWwgZmlsZXMuIEFuZCBzYWRseSBodW1hbnMgaGF2ZSBhIHRlbmRl bmN5CnRvIG1ha2UgbWlzdGFrZXMuCgpUaGlzIHBhdGNoIGFkZHMgYSBuZXcgIm93bmVkX3NjaGVt YSIgb3B0aW9uIHRvIHRoZSBleHRlbnNpb24gY29udHJvbApmaWxlIHRoYXQgY2FuIGJlIHNldCB0 byB0cnVlIHRvIGluZGljYXRlIHRoYXQgdGhpcyBleHRlbnNpb24gd2FudHMgdG8Kb3duIHRoZSBz Y2hlbWEgaW4gd2hpY2ggaXQgaXMgaW5zdGFsbGVkLiBXaGF0IHRoYXQgbWVhbnMgaXMgdGhhdCB0 aGUKc2NoZW1hIHNob3VsZCBub3QgZXhpc3QgYmVmb3JlIGNyZWF0aW5nIHRoZSBleHRlbnNpb24s IGFuZCB3aWxsIGJlCmNyZWF0ZWQgZHVyaW5nIGV4dGVuc2lvbiBjcmVhdGlvbi4gVGhpcyB0aHVz IGdpdmVzIHRoZSBleHRlbnNpb24gYXV0aG9yCmFuIGVhc3kgd2F5IHRvIHVzZSBhIHNhZmUgc2Vh cmNoX3BhdGgsIHdoaWxlIHN0aWxsIGFsbG93aW5nIGFsbCBvYmplY3RzCnRvIGJlIGdyb3VwZWQg dG9nZXRoZXIgaW4gYSBzY2hlbWEuIFRoZSBpbXBsZW1lbnRhdGlvbiBhbHNvIGhhcyB0aGUKcGxl YXNhbnQgc2lkZSBlZmZlY3QgdGhhdCB0aGUgc2NoZW1hIHdpbGwgYmUgYXV0b21hdGljYWxseSBk cm9wcGVkIHdoZW4KdGhlIGV4dGVuc2lvbiBpcyBkcm9wcGVkLgotLS0KIGRvYy9zcmMvc2dtbC9l eHRlbmQuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAzNCArKwogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAzNjMgKysrKysrKysrKysrKy0tLS0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMgICAgfCAgNDUgKystCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNTQgKystCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19leHRlbnNpb24uaCAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmggICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9NYWtlZmlsZSAgICAgfCAgIDcgKy0KIC4uLi9leHBl Y3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0ICAgICAgICAgICAgICB8ICA1NCArKysKIHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1aWxkICB8ICAgNCArCiAuLi4vdGVzdF9l eHRlbnNpb25zL3NxbC90ZXN0X2V4dGVuc2lvbnMuc3FsICAgfCAgMjcgKysKIC4uLi90ZXN0X2V4 dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwgICAgICAgICAgICB8ICAgMiArCiAuLi4vdGVzdF9leHRf b3duZWRfc2NoZW1hLmNvbnRyb2wgICAgICAgICAgICAgfCAgIDUgKwogLi4udGVzdF9leHRfb3du ZWRfc2NoZW1hX3JlbG9jYXRhYmxlLS0xLjAuc3FsIHwgICAyICsKIC4uLi90ZXN0X2V4dF9vd25l ZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbCB8ICAgNCArCiBzcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcGdfZHVtcC90LzAwMV9iYXNlLnBsICAgfCAgMzIgKysKIDE4IGZpbGVzIGNoYW5nZWQsIDUx NyBpbnNlcnRpb25zKCspLCAxMzAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hLS0xLjAu c3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv dGVzdF9leHRfb3duZWRfc2NoZW1hLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFi bGUtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbAoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9leHRlbmQuc2dtbCBiL2RvYy9zcmMvc2dtbC9leHRlbmQuc2dt bAppbmRleCA2M2M1ZWM2ZDFlYi4uZGRmYjRlYmZiZjUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9leHRlbmQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZXh0ZW5kLnNnbWwKQEAgLTgxNCw2ICs4 MTQsNDAgQEAgUkVUVVJOUyBhbnljb21wYXRpYmxlIEFTIC4uLgogICAgICAgPC9saXN0aXRlbT4K ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZXh0ZW5kLWV4 dGVuc2lvbnMtZmlsZXMtb3duZWQtc2NoZW1hIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm93bmVk X3NjaGVtYTwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQW4gZXh0ZW5zaW9uIHNob3VsZCBzZXQg PGZpcnN0dGVybT5vd25lZF9zY2hlbWE8L2ZpcnN0dGVybT4gdG8KKyAgICAgICAgPGxpdGVyYWw+ dHJ1ZTwvbGl0ZXJhbD4gaW4gaXRzIGNvbnRyb2wgZmlsZSBpZiB0aGUgZXh0ZW5zaW9uIHdhbnRz IGEKKyAgICAgICAgZGVkaWNhdGVkIHNjaGVtYSBmb3IgaXRzIG9iamVjdHMuIFN1Y2ggYSBzY2hl bWEgc2hvdWxkIG5vdCBleGlzdCB5ZXQgYXQKKyAgICAgICAgdGhlIHRpbWUgb2YgZXh0ZW5zaW9u IGNyZWF0aW9uLCBhbmQgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkKKyAgICAgICAg PGxpdGVyYWw+Q1JFQVRFIEVYVEVOU0lPTjwvbGl0ZXJhbD4uIFRoZSBkZWZhdWx0IGlzCisgICAg ICAgIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiwgaS5lLiwgdGhlIGV4dGVuc2lvbiBjYW4gYmUg aW5zdGFsbGVkIGludG8gYW4KKyAgICAgICAgZXhpc3Rpbmcgc2NoZW1hLgorICAgICAgIDwvcGFy YT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgSGF2aW5nIGEgc2NoZW1hIG93bmVkIGJ5IHRoZSBl eHRlbnNpb24gY2FuIG1ha2UgaXQgbXVjaCBlYXNpZXIgdG8KKyAgICAgICAgcmVhc29uIGFib3V0 IHBvc3NpYmxlIDxsaXRlcmFsPnNlYXJjaF9wYXRoPC9saXRlcmFsPiBpbmplY3Rpb24gYXR0YWNr cy4KKyAgICAgICAgRm9yIGluc3RhbmNlIHdpdGggYW4gb3duZWQgc2NoZW1hLCBpdCBpcyBnZW5l cmFsbHkgc2FmZSB0byBzZXQgdGhlCisgICAgICAgIDxsaXRlcmFsPnNlYXJjaF9wYXRoPC9saXRl cmFsPiBvZiBhIDxsaXRlcmFsPlNFQ1VSSVRZIERFRklORVI8L2xpdGVyYWw+CisgICAgICAgIGZ1 bmN0aW9uIHRvIHRoZSBzY2hlbWEgb2YgdGhlIGV4dGVuc2lvbi4gV2hpbGUgd2l0aG91dCBhbiBv d25lZCBzY2hlbWEKKyAgICAgICAgaXQgbWlnaHQgbm90IGJlIHNhZmUgdG8gZG8gc28sIGJlY2F1 c2UgYSBtYWxpY2lvdXMgdXNlciBjb3VsZCBpbnNlcnQKKyAgICAgICAgb2JqZWN0cyBpbiB0aGF0 IHNjaGVtYSBhbmQgdGh1cyA8bGluaworICAgICAgICBsaW5rZW5kPSJzcWwtY3JlYXRlZnVuY3Rp b24tc2VjdXJpdHkiPiBjYXVzZSBtYWxpY2lvdXMgdG8gYmUgZXhlY3V0ZWQKKyAgICAgICAgYXMg c3VwZXJ1c2VyPC9saW5rPi4gU2ltaWxhcmx5LCBoYXZpbmcgYW4gb3duZWQgc2NoZW1hIGNhbiBt YWtlIGl0IHNhZmUKKyAgICAgICAgYnkgZGVmYXVsdCB0byBleGVjdXRlIGdlbmVyYWwtcHVycG9z ZSBTUUwgaW4gdGhlIGV4dGVuc2lvbiBzY3JpcHQsCisgICAgICAgIGJlY2F1c2UgdGhlIHNlYXJj aF9wYXRoIG5vdyBvbmx5IGNvbnRhaW5zIHRydXN0ZWQgc2NoZW1hcy4gV2l0aG91dCBhbgorICAg ICAgICBvd25lZCBzY2hlbWEgaXQncyA8bGluayBsaW5rZW5kPSJleHRlbmQtZXh0ZW5zaW9ucy1z ZWN1cml0eS1zY3JpcHRzIj4KKyAgICAgICAgcmVjb21tZW5kZWQgdG8gbWFudWFsbHkgY2hhbmdl IHRoZSBzZWFyY2hfcGF0aDwvbGluaz4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICBBcGFydCBmcm9tIHRoZSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgaGF2aW5nIGFu IG93bmVkIHNjaGVtYSBjYW4gaGVscAorICAgICAgICBwcmV2ZW50IG5hbWluZyBjb25mbGljdHMg YmV0d2VlbiBvYmplY3RzIG9mIGRpZmZlcmVudCBleHRlbnNpb25zLgorICAgICAgIDwvcGFyYT4K KyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0 ZW50cnkgaWQ9ImV4dGVuZC1leHRlbnNpb25zLWZpbGVzLXNjaGVtYSI+CiAgICAgICA8dGVybT48 dmFybmFtZT5zY2hlbWE8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5cGU+KTwvdGVybT4KICAg ICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVu c2lvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwKaW5kZXgg NzEzYWJkOWM0OTQuLmFiMTI1ZDU2MjYzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9leHRlbnNpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9leHRlbnNp b24uc2dtbApAQCAtMTA0LDcgKzEwNCwxMSBAQCBDUkVBVEUgRVhURU5TSU9OIFsgSUYgTk9UIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHRlbnNpb25fbmFtZQogICAg ICAgIDxwYXJhPgogICAgICAgICBUaGUgbmFtZSBvZiB0aGUgc2NoZW1hIGluIHdoaWNoIHRvIGlu c3RhbGwgdGhlIGV4dGVuc2lvbidzCiAgICAgICAgIG9iamVjdHMsIGdpdmVuIHRoYXQgdGhlIGV4 dGVuc2lvbiBhbGxvd3MgaXRzIGNvbnRlbnRzIHRvIGJlCi0gICAgICAgIHJlbG9jYXRlZC4gIFRo ZSBuYW1lZCBzY2hlbWEgbXVzdCBhbHJlYWR5IGV4aXN0LgorICAgICAgICByZWxvY2F0ZWQuIFdo ZXRoZXIgdGhpcyBzY2hlbWEgc2hvdWxkIGFscmVhZHkgZXhpc3Qgb3Igbm90IGRlcGVuZHMgb24K KyAgICAgICAgdGhlIHZhbHVlIG9mIDxsaXRlcmFsPm93bmVkX3NjaGVtYTwvbGl0ZXJhbD4gaW4g dGhlIGV4dGVuc2lvbnMgY29udHJvbAorICAgICAgICBmaWxlOiBJZiBpdCdzIDxsaXRlcmFsPnRy dWU8L2xpdGVyYWw+LCB0aGUgc2NoZW1hIG11c3QKKyAgICAgICAgPGVtcGhhc2lzPm5vdDwvZW1w aGFzaXM+IGV4aXN0OyBpZiBpdCdzIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiBpdAorICAgICAg ICBtdXN0IGV4aXN0LgogICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCBhbmQgdGhlIGV4dGVuc2lv bidzIGNvbnRyb2wgZmlsZSBkb2VzIG5vdCBzcGVjaWZ5IGEKICAgICAgICAgc2NoZW1hIGVpdGhl ciwgdGhlIGN1cnJlbnQgZGVmYXVsdCBvYmplY3QgY3JlYXRpb24gc2NoZW1hIGlzIHVzZWQuCiAg ICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9u LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCBlNmY5YWI2ZGZkNi4u ZDJjOGFhM2U4YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC05Miw2ICs5Miw4IEBA IHR5cGVkZWYgc3RydWN0IEV4dGVuc2lvbkNvbnRyb2xGaWxlCiAJCQkJCQkJCQkgKiBNT0RVTEVf UEFUSE5BTUUgKi8KIAljaGFyCSAgICpjb21tZW50OwkJLyogY29tbWVudCwgaWYgYW55ICovCiAJ Y2hhcgkgICAqc2NoZW1hOwkJCS8qIHRhcmdldCBzY2hlbWEgKGFsbG93ZWQgaWYgIXJlbG9jYXRh YmxlKSAqLworCWJvb2wJCW93bmVkX3NjaGVtYTsJLyogaWYgdGhlIHNjaGVtYSBzaG91bGQgYmUg b3duZWQgYnkgdGhlCisJCQkJCQkJCSAqIGV4dGVuc2lvbiAqLwogCWJvb2wJCXJlbG9jYXRhYmxl OwkvKiBpcyBBTFRFUiBFWFRFTlNJT04gU0VUIFNDSEVNQSBzdXBwb3J0ZWQ/ICovCiAJYm9vbAkJ c3VwZXJ1c2VyOwkJLyogbXVzdCBiZSBzdXBlcnVzZXIgdG8gaW5zdGFsbD8gKi8KIAlib29sCQl0 cnVzdGVkOwkJLyogYWxsb3cgYmVjb21pbmcgc3VwZXJ1c2VyIG9uIHRoZSBmbHk/ICovCkBAIC02 MTMsNiArNjE1LDE0IEBAIHBhcnNlX2V4dGVuc2lvbl9jb250cm9sX2ZpbGUoRXh0ZW5zaW9uQ29u dHJvbEZpbGUgKmNvbnRyb2wsCiAJCXsKIAkJCWNvbnRyb2wtPnNjaGVtYSA9IHBzdHJkdXAoaXRl bS0+dmFsdWUpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChpdGVtLT5uYW1lLCAib3duZWRfc2No ZW1hIikgPT0gMCkKKwkJeworCQkJaWYgKCFwYXJzZV9ib29sKGl0ZW0tPnZhbHVlLCAmY29udHJv bC0+b3duZWRfc2NoZW1hKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJwYXJhbWV0ZXIg XCIlc1wiIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSIsCisJCQkJCQkJCWl0ZW0tPm5hbWUpKSk7 CisJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGl0ZW0tPm5hbWUsICJyZWxvY2F0YWJsZSIpID09IDAp CiAJCXsKIAkJCWlmICghcGFyc2VfYm9vbChpdGVtLT52YWx1ZSwgJmNvbnRyb2wtPnJlbG9jYXRh YmxlKSkKQEAgLTE2NDMsNiArMTY1MywxNjQgQEAgZmluZF9pbnN0YWxsX3BhdGgoTGlzdCAqZXZp X2xpc3QsIEV4dGVuc2lvblZlcnNpb25JbmZvICpldmlfdGFyZ2V0LAogCXJldHVybiBldmlfc3Rh cnQ7CiB9CiAKKy8qCisgKiBDcmVhdGUgYSBzY2hlbWEgd2l0aCB0aGUgZ2l2ZW4gbmFtZSwgYXMg cGFydCBvZiBDUkVBVEUgRVhURU5TSU9OLgorICovCitzdGF0aWMgT2lkCitDcmVhdGVTY2hlbWFG b3JFeHRlbnNpb24oY2hhciAqc2NoZW1hTmFtZSkKK3sKKworCUNyZWF0ZVNjaGVtYVN0bXQgKmNz c3RtdCA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVN0bXQpOworCisJY3NzdG10LT5zY2hlbWFuYW1l ID0gc2NoZW1hTmFtZTsKKwljc3N0bXQtPmF1dGhyb2xlID0gTlVMTDsJLyogd2lsbCBiZSBjcmVh dGVkIGJ5IGN1cnJlbnQgdXNlciAqLworCWNzc3RtdC0+c2NoZW1hRWx0cyA9IE5JTDsKKwljc3N0 bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwlDcmVhdGVTY2hlbWFDb21tYW5kKGNzc3RtdCwg IihnZW5lcmF0ZWQgQ1JFQVRFIFNDSEVNQSBjb21tYW5kKSIsCisJCQkJCQktMSwgLTEpOworCisJ LyoKKwkgKiBDcmVhdGVTY2hlbWFDb21tYW5kIGluY2x1ZGVzIENvbW1hbmRDb3VudGVySW5jcmVt ZW50LCBzbyBuZXcgc2NoZW1hIGlzCisJICogbm93IHZpc2libGUuCisJICovCisJcmV0dXJuIGdl dF9uYW1lc3BhY2Vfb2lkKHNjaGVtYU5hbWUsIGZhbHNlKTsKK30KKworLyoKKyAqIENyZWF0ZSBh IG93bmVkIHNjaGVtYSB3aXRoIHRoZSBnaXZlbiBuYW1lLCBhcyBwYXJ0IG9mIENSRUFURSBFWFRF TlNJT04sIGFuZAorICogZmFpbHMgaWYgdGhlIHNjaGVtYSBhbHJlYWR5IGV4aXN0LgorICovCitz dGF0aWMgT2lkCitDcmVhdGVPd25lZFNjaGVtYUZvckV4dGVuc2lvbihjaGFyICpzY2hlbWFOYW1l KQoreworCS8qIEZpbmQgb3IgY3JlYXRlIHRoZSBzY2hlbWEgaW4gY2FzZSBpdCBkb2VzIG5vdCBl eGlzdC4gKi8KKwlPaWQJCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFOYW1l LCB0cnVlKTsKKworCWlmIChPaWRJc1ZhbGlkKHNjaGVtYU9pZCkpCisJeworCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1NDSEVNQSksCisJCQkJIGVycm1z Zygic2NoZW1hIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQlzY2hlbWFOYW1lKSwKKwkJ CQkgZXJyaGludCgiRHJvcCBzY2hlbWEgXCIlc1wiIG9yIHNwZWNpZnkgYW5vdGhlciBzY2hlbWEg dXNpbmcgQ1JFQVRFIEVYVEVOU0lPTiAuLi4gU0NIRU1BIC4uLiIsIHNjaGVtYU5hbWUpKSk7CisJ fQorCisJcmV0dXJuIENyZWF0ZVNjaGVtYUZvckV4dGVuc2lvbihzY2hlbWFOYW1lKTsKK30KKwor LyoKKyAqIEdldHMgb3IgY3JlYXRlcyB0aGUgc2NoZW1hIHRoYW4gYW4gZXh0ZW5zaW9uIHNob3Vs ZCBiZSBjcmVhdGVkIGluLgorICoKKyAqIFJldHVybnMgdGhlIE9JRCBvZiB0aGUgc2NoZW1hIGFu ZCB1cGRhdGVzIHNjaGVtYU5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIHNjaGVtYS4KKyAqLworc3Rh dGljIE9pZAorR2V0T3JDcmVhdGVTY2hlbWFGb3JFeHRlbnNpb24oY2hhciAqKnNjaGVtYU5hbWUs IEV4dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9sLCBib29sIGNhc2NhZGUpCit7CisJLyoKKwkg KiBUaGUgc2ltcGxlc3QgY2FzZSBpcyB3aGVuIHRoZSB1c2VyIHByb3ZpZGVzIGEgc2NoZW1hIG5h bWUuCisJICovCisJaWYgKCpzY2hlbWFOYW1lKQorCXsKKwkJT2lkCQkJc2NoZW1hT2lkOworCisJ CWlmICghY29udHJvbC0+b3duZWRfc2NoZW1hKQorCQl7CisJCQkvKgorCQkJICogRm9yIG5vbi1v d25lZCBzY2hlbWFzLCB0aGlzIHNjaGVtYSBtdXN0IGFscmVhZHkgZXhpc3QuIFdlIHdhbnQKKwkJ CSAqIHRvIGNoZWNrIHRoaXMgbm93LCBzbyBpdCBmYWlscyBldmVuIGlmIHdlIGJhaWwgb3V0IG9m IHRoaXMKKwkJCSAqIGJsb2NrIGR1ZSB0byB0aGUgQ0FTQ0FERSBsb2dpYy4KKwkJCSAqLworCQkJ c2NoZW1hT2lkID0gZ2V0X25hbWVzcGFjZV9vaWQoKnNjaGVtYU5hbWUsIGZhbHNlKTsKKwkJfQor CisJCWlmIChjb250cm9sLT5zY2hlbWEgJiYgc3RyY21wKGNvbnRyb2wtPnNjaGVtYSwgKnNjaGVt YU5hbWUpICE9IDApCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgZXh0ZW5zaW9uIGlzIG5vdCByZWxv Y2F0YWJsZSBhbmQgdGhlIGF1dGhvciBnYXZlIHVzIGEKKwkJCSAqIHNjaGVtYSBmb3IgaXQuCisJ CQkgKgorCQkJICogVW5sZXNzIENBU0NBREUgcGFyYW1ldGVyIHdhcyBnaXZlbiwgaXQncyBhbiBl cnJvciB0byBnaXZlIGEKKwkJCSAqIHNjaGVtYSBkaWZmZXJlbnQgZnJvbSBjb250cm9sLT5zY2hl bWEgaWYgY29udHJvbC0+c2NoZW1hIGlzCisJCQkgKiBzcGVjaWZpZWQuCisJCQkgKi8KKwkJCWlm ICghY2FzY2FkZSkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiZXh0ZW5zaW9uIFwi JXNcIiBtdXN0IGJlIGluc3RhbGxlZCBpbiBzY2hlbWEgXCIlc1wiIiwKKwkJCQkJCQkJY29udHJv bC0+bmFtZSwKKwkJCQkJCQkJY29udHJvbC0+c2NoZW1hKSwKKwkJCQkJCSBlcnJoaW50KCJEbyBu b3Qgc3BlY2lmeSBTQ0hFTUEgd2hlbiBydW5uaW5nIENSRUFURSBFWFRFTlNJT04gZm9yIGV4dGVu c2lvbiBcIiVzXCIiLCBjb250cm9sLT5uYW1lKSkpOworCQkJfQorCisJCQkvKgorCQkJICogSWYg dGhlIHNjaGVtYSBtaXNtYXRjaGVzIGFuZCBDQVNDQURFIHdhcyBnaXZlbiwgd2UgcHJldGVuZCB0 aGUKKwkJCSAqIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IGEgc2NoZW1hIGFuZCB1c2UgdGhlIG5vcm1h bCBsb2dpYyBiZWxvdyB0bworCQkJICogZ2V0IG9yIGNyZWF0ZSB0aGUgc2NoZW1hIGZyb20gdGhl IGNvbnRyb2wgZmlsZS4KKwkJCSAqLworCQl9CisJCWVsc2UgaWYgKGNvbnRyb2wtPm93bmVkX3Nj aGVtYSkKKwkJeworCQkJcmV0dXJuIENyZWF0ZU93bmVkU2NoZW1hRm9yRXh0ZW5zaW9uKCpzY2hl bWFOYW1lKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXJldHVybiBzY2hlbWFPaWQ7CisJCX0KKwl9 CisKKwlpZiAoY29udHJvbC0+c2NoZW1hKQorCXsKKwkJT2lkCQkJc2NoZW1hT2lkOworCisJCSpz Y2hlbWFOYW1lID0gY29udHJvbC0+c2NoZW1hOworCisJCWlmIChjb250cm9sLT5vd25lZF9zY2hl bWEpCisJCXsKKwkJCXJldHVybiBDcmVhdGVPd25lZFNjaGVtYUZvckV4dGVuc2lvbihjb250cm9s LT5zY2hlbWEpOworCQl9CisKKwkJLyogRmluZCBvciBjcmVhdGUgdGhlIHNjaGVtYSBpbiBjYXNl IGl0IGRvZXMgbm90IGV4aXN0LiAqLworCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZChj b250cm9sLT5zY2hlbWEsIHRydWUpOworCQlpZiAoT2lkSXNWYWxpZChzY2hlbWFPaWQpKQorCQl7 CisJCQlyZXR1cm4gc2NoZW1hT2lkOworCQl9CisJCXJldHVybiBDcmVhdGVTY2hlbWFGb3JFeHRl bnNpb24oY29udHJvbC0+c2NoZW1hKTsKKwl9CisKKwlpZiAoY29udHJvbC0+b3duZWRfc2NoZW1h KQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9T Q0hFTUEpLAorCQkJCSBlcnJtc2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBjcmVh dGUgaW4iKSkpOworCX0KKworCXsKKwkJLyoKKwkJICogTmVpdGhlciB1c2VyIG5vciBhdXRob3Ig b2YgdGhlIGV4dGVuc2lvbiBzcGVjaWZpZWQgc2NoZW1hOyB1c2UgdGhlCisJCSAqIGN1cnJlbnQg ZGVmYXVsdCBjcmVhdGlvbiBuYW1lc3BhY2UsIHdoaWNoIGlzIHRoZSBmaXJzdCBleHBsaWNpdAor CQkgKiBlbnRyeSBpbiB0aGUgc2VhcmNoX3BhdGguCisJCSAqLworCQlMaXN0CSAgICpzZWFyY2hf cGF0aCA9IGZldGNoX3NlYXJjaF9wYXRoKGZhbHNlKTsKKwkJT2lkCQkJc2NoZW1hT2lkOworCisJ CWlmIChzZWFyY2hfcGF0aCA9PSBOSUwpIC8qIG5vdGhpbmcgdmFsaWQgaW4gc2VhcmNoX3BhdGg/ ICovCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9T Q0hFTUEpLAorCQkJCQkgZXJybXNnKCJubyBzY2hlbWEgaGFzIGJlZW4gc2VsZWN0ZWQgdG8gY3Jl YXRlIGluIikpKTsKKwkJc2NoZW1hT2lkID0gbGluaXRpYWxfb2lkKHNlYXJjaF9wYXRoKTsKKwkJ KnNjaGVtYU5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUoc2NoZW1hT2lkKTsKKwkJaWYgKCpzY2hl bWFOYW1lID09IE5VTEwpCS8qIHJlY2VudGx5LWRlbGV0ZWQgbmFtZXNwYWNlPyAqLworCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwKKwkJ CQkJIGVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGNyZWF0ZSBpbiIpKSk7 CisKKwkJbGlzdF9mcmVlKHNlYXJjaF9wYXRoKTsKKwkJcmV0dXJuIHNjaGVtYU9pZDsKKwl9Cit9 CisKIC8qCiAgKiBDUkVBVEUgRVhURU5TSU9OIHdvcmtlcgogICoKQEAgLTE3MzksNzggKzE5MDcs NyBAQCBDcmVhdGVFeHRlbnNpb25JbnRlcm5hbChjaGFyICpleHRlbnNpb25OYW1lLAogCSAqLwog CWNvbnRyb2wgPSByZWFkX2V4dGVuc2lvbl9hdXhfY29udHJvbF9maWxlKHBjb250cm9sLCB2ZXJz aW9uTmFtZSk7CiAKLQkvKgotCSAqIERldGVybWluZSB0aGUgdGFyZ2V0IHNjaGVtYSB0byBpbnN0 YWxsIHRoZSBleHRlbnNpb24gaW50bwotCSAqLwotCWlmIChzY2hlbWFOYW1lKQotCXsKLQkJLyog SWYgdGhlIHVzZXIgaXMgZ2l2aW5nIHVzIHRoZSBzY2hlbWEgbmFtZSwgaXQgbXVzdCBleGlzdCBh bHJlYWR5LiAqLwotCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFOYW1lLCBm YWxzZSk7Ci0JfQotCi0JaWYgKGNvbnRyb2wtPnNjaGVtYSAhPSBOVUxMKQotCXsKLQkJLyoKLQkJ ICogVGhlIGV4dGVuc2lvbiBpcyBub3QgcmVsb2NhdGFibGUgYW5kIHRoZSBhdXRob3IgZ2F2ZSB1 cyBhIHNjaGVtYQotCQkgKiBmb3IgaXQuCi0JCSAqCi0JCSAqIFVubGVzcyBDQVNDQURFIHBhcmFt ZXRlciB3YXMgZ2l2ZW4sIGl0J3MgYW4gZXJyb3IgdG8gZ2l2ZSBhIHNjaGVtYQotCQkgKiBkaWZm ZXJlbnQgZnJvbSBjb250cm9sLT5zY2hlbWEgaWYgY29udHJvbC0+c2NoZW1hIGlzIHNwZWNpZmll ZC4KLQkJICovCi0JCWlmIChzY2hlbWFOYW1lICYmIHN0cmNtcChjb250cm9sLT5zY2hlbWEsIHNj aGVtYU5hbWUpICE9IDAgJiYKLQkJCSFjYXNjYWRlKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkgZXJybXNnKCJl eHRlbnNpb24gXCIlc1wiIG11c3QgYmUgaW5zdGFsbGVkIGluIHNjaGVtYSBcIiVzXCIiLAotCQkJ CQkJCWNvbnRyb2wtPm5hbWUsCi0JCQkJCQkJY29udHJvbC0+c2NoZW1hKSkpOwotCi0JCS8qIEFs d2F5cyB1c2UgdGhlIHNjaGVtYSBmcm9tIGNvbnRyb2wgZmlsZSBmb3IgY3VycmVudCBleHRlbnNp b24uICovCi0JCXNjaGVtYU5hbWUgPSBjb250cm9sLT5zY2hlbWE7Ci0KLQkJLyogRmluZCBvciBj cmVhdGUgdGhlIHNjaGVtYSBpbiBjYXNlIGl0IGRvZXMgbm90IGV4aXN0LiAqLwotCQlzY2hlbWFP aWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFOYW1lLCB0cnVlKTsKLQotCQlpZiAoIU9pZElz VmFsaWQoc2NoZW1hT2lkKSkKLQkJewotCQkJQ3JlYXRlU2NoZW1hU3RtdCAqY3NzdG10ID0gbWFr ZU5vZGUoQ3JlYXRlU2NoZW1hU3RtdCk7Ci0KLQkJCWNzc3RtdC0+c2NoZW1hbmFtZSA9IHNjaGVt YU5hbWU7Ci0JCQljc3N0bXQtPmF1dGhyb2xlID0gTlVMTDsJLyogd2lsbCBiZSBjcmVhdGVkIGJ5 IGN1cnJlbnQgdXNlciAqLwotCQkJY3NzdG10LT5zY2hlbWFFbHRzID0gTklMOwotCQkJY3NzdG10 LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7Ci0JCQlDcmVhdGVTY2hlbWFDb21tYW5kKGNzc3RtdCwg IihnZW5lcmF0ZWQgQ1JFQVRFIFNDSEVNQSBjb21tYW5kKSIsCi0JCQkJCQkJCS0xLCAtMSk7Ci0K LQkJCS8qCi0JCQkgKiBDcmVhdGVTY2hlbWFDb21tYW5kIGluY2x1ZGVzIENvbW1hbmRDb3VudGVy SW5jcmVtZW50LCBzbyBuZXcKLQkJCSAqIHNjaGVtYSBpcyBub3cgdmlzaWJsZS4KLQkJCSAqLwot CQkJc2NoZW1hT2lkID0gZ2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hTmFtZSwgZmFsc2UpOwotCQl9 Ci0JfQotCWVsc2UgaWYgKCFPaWRJc1ZhbGlkKHNjaGVtYU9pZCkpCi0JewotCQkvKgotCQkgKiBO ZWl0aGVyIHVzZXIgbm9yIGF1dGhvciBvZiB0aGUgZXh0ZW5zaW9uIHNwZWNpZmllZCBzY2hlbWE7 IHVzZSB0aGUKLQkJICogY3VycmVudCBkZWZhdWx0IGNyZWF0aW9uIG5hbWVzcGFjZSwgd2hpY2gg aXMgdGhlIGZpcnN0IGV4cGxpY2l0Ci0JCSAqIGVudHJ5IGluIHRoZSBzZWFyY2hfcGF0aC4KLQkJ ICovCi0JCUxpc3QJICAgKnNlYXJjaF9wYXRoID0gZmV0Y2hfc2VhcmNoX3BhdGgoZmFsc2UpOwot Ci0JCWlmIChzZWFyY2hfcGF0aCA9PSBOSUwpIC8qIG5vdGhpbmcgdmFsaWQgaW4gc2VhcmNoX3Bh dGg/ICovCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9TQ0hFTUEpLAotCQkJCQkgZXJybXNnKCJubyBzY2hlbWEgaGFzIGJlZW4gc2VsZWN0ZWQgdG8g Y3JlYXRlIGluIikpKTsKLQkJc2NoZW1hT2lkID0gbGluaXRpYWxfb2lkKHNlYXJjaF9wYXRoKTsK LQkJc2NoZW1hTmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShzY2hlbWFPaWQpOwotCQlpZiAoc2No ZW1hTmFtZSA9PSBOVUxMKSAvKiByZWNlbnRseS1kZWxldGVkIG5hbWVzcGFjZT8gKi8KLQkJCWVy ZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1NDSEVNQSksCi0J CQkJCSBlcnJtc2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBjcmVhdGUgaW4iKSkp OwotCi0JCWxpc3RfZnJlZShzZWFyY2hfcGF0aCk7Ci0JfQorCXNjaGVtYU9pZCA9IEdldE9yQ3Jl YXRlU2NoZW1hRm9yRXh0ZW5zaW9uKCZzY2hlbWFOYW1lLCBjb250cm9sLCBjYXNjYWRlKTsKIAog CS8qCiAJICogTWFrZSBub3RlIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBoYXMgYmVlbiBhY2Nl c3NlZCBpbiB0aGlzCkBAIC0xODU2LDYgKzE5NTMsNyBAQCBDcmVhdGVFeHRlbnNpb25JbnRlcm5h bChjaGFyICpleHRlbnNpb25OYW1lLAogCSAqLwogCWFkZHJlc3MgPSBJbnNlcnRFeHRlbnNpb25U dXBsZShjb250cm9sLT5uYW1lLCBleHRvd25lciwKIAkJCQkJCQkJICAgc2NoZW1hT2lkLCBjb250 cm9sLT5yZWxvY2F0YWJsZSwKKwkJCQkJCQkJICAgY29udHJvbC0+b3duZWRfc2NoZW1hLAogCQkJ CQkJCQkgICB2ZXJzaW9uTmFtZSwKIAkJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKE5VTEwpLAog CQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oTlVMTCksCkBAIC0yMDYxLDcgKzIxNTksOCBAQCBD cmVhdGVFeHRlbnNpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVFeHRlbnNpb25TdG10ICpz dG10KQogICovCiBPYmplY3RBZGRyZXNzCiBJbnNlcnRFeHRlbnNpb25UdXBsZShjb25zdCBjaGFy ICpleHROYW1lLCBPaWQgZXh0T3duZXIsCi0JCQkJCSBPaWQgc2NoZW1hT2lkLCBib29sIHJlbG9j YXRhYmxlLCBjb25zdCBjaGFyICpleHRWZXJzaW9uLAorCQkJCQkgT2lkIHNjaGVtYU9pZCwgYm9v bCByZWxvY2F0YWJsZSwgYm9vbCBvd25lZFNjaGVtYSwKKwkJCQkJIGNvbnN0IGNoYXIgKmV4dFZl cnNpb24sCiAJCQkJCSBEYXR1bSBleHRDb25maWcsIERhdHVtIGV4dENvbmRpdGlvbiwKIAkJCQkJ IExpc3QgKnJlcXVpcmVkRXh0ZW5zaW9ucykKIHsKQEAgLTIwOTEsNiArMjE5MCw3IEBAIEluc2Vy dEV4dGVuc2lvblR1cGxlKGNvbnN0IGNoYXIgKmV4dE5hbWUsIE9pZCBleHRPd25lciwKIAl2YWx1 ZXNbQW51bV9wZ19leHRlbnNpb25fZXh0b3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oZXh0 T3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX2V4dGVuc2lvbl9leHRuYW1lc3BhY2UgLSAxXSA9IE9i amVjdElkR2V0RGF0dW0oc2NoZW1hT2lkKTsKIAl2YWx1ZXNbQW51bV9wZ19leHRlbnNpb25fZXh0 cmVsb2NhdGFibGUgLSAxXSA9IEJvb2xHZXREYXR1bShyZWxvY2F0YWJsZSk7CisJdmFsdWVzW0Fu dW1fcGdfZXh0ZW5zaW9uX2V4dG93bmVkc2NoZW1hIC0gMV0gPSBCb29sR2V0RGF0dW0ob3duZWRT Y2hlbWEpOwogCXZhbHVlc1tBbnVtX3BnX2V4dGVuc2lvbl9leHR2ZXJzaW9uIC0gMV0gPSBDU3Ry aW5nR2V0VGV4dERhdHVtKGV4dFZlcnNpb24pOwogCiAJaWYgKGV4dENvbmZpZyA9PSBQb2ludGVy R2V0RGF0dW0oTlVMTCkpCkBAIC0yMTM1LDYgKzIyMzUsMTcgQEAgSW5zZXJ0RXh0ZW5zaW9uVHVw bGUoY29uc3QgY2hhciAqZXh0TmFtZSwgT2lkIGV4dE93bmVyLAogCXJlY29yZF9vYmplY3RfYWRk cmVzc19kZXBlbmRlbmNpZXMoJm15c2VsZiwgcmVmb2JqcywgREVQRU5ERU5DWV9OT1JNQUwpOwog CWZyZWVfb2JqZWN0X2FkZHJlc3NlcyhyZWZvYmpzKTsKIAorCWlmIChvd25lZFNjaGVtYSkKKwl7 CisJCU9iamVjdEFkZHJlc3Mgc2NoZW1hQWRkcmVzcyA9IHsKKwkJCS5jbGFzc0lkID0gTmFtZXNw YWNlUmVsYXRpb25JZCwKKwkJCS5vYmplY3RJZCA9IHNjaGVtYU9pZCwKKwkJfTsKKworCQlyZWNv cmREZXBlbmRlbmN5T24oJnNjaGVtYUFkZHJlc3MsICZteXNlbGYsIERFUEVOREVOQ1lfRVhURU5T SU9OKTsKKwl9CisKKwogCS8qIFBvc3QgY3JlYXRpb24gaG9vayBmb3IgbmV3IGV4dGVuc2lvbiAq LwogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKEV4dGVuc2lvblJlbGF0aW9uSWQsIGV4dGVu c2lvbk9pZCwgMCk7CiAKQEAgLTMwMzUsMTIgKzMxNDYsMTYgQEAgZXh0ZW5zaW9uX2NvbmZpZ19y ZW1vdmUoT2lkIGV4dGVuc2lvbm9pZCwgT2lkIHRhYmxlb2lkKQogCiAvKgogICogRXhlY3V0ZSBB TFRFUiBFWFRFTlNJT04gU0VUIFNDSEVNQQorICoKKyAqIEZvciBvd25lZCBzY2hlbWFzLCB0aGlz IGJvaWxzIGRvd24gdG8gY2hhbmdpbmcgdGhlIG5hbWUgb2YgaXRzIHNjaGVtYS4gRm9yCisgKiBu b24tb3duZWQgc2NoZW1hcyB0aGlzIHJlcXVpcmVzIG1vdmluZyBhbGwgdGhlIG1lbWJlciBvYmpl Y3RzIGludG8gdGhlIG5ldworICogc2NoZW1hLgogICovCiBPYmplY3RBZGRyZXNzCiBBbHRlckV4 dGVuc2lvbk5hbWVzcGFjZShjb25zdCBjaGFyICpleHRlbnNpb25OYW1lLCBjb25zdCBjaGFyICpu ZXdzY2hlbWEsIE9pZCAqb2xkc2NoZW1hKQogewogCU9pZAkJCWV4dGVuc2lvbk9pZDsKLQlPaWQJ CQluc3BPaWQ7CisJT2lkCQkJbnNwT2lkID0gSW52YWxpZE9pZDsKIAlPaWQJCQlvbGROc3BPaWQ7 CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlSZWxhdGlvbglleHRSZWw7CkBAIC0zMDUzLDExICsz MTY4LDEwIEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5h bWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAJSGVhcFR1cGxlCWRlcFR1cDsKIAlP YmplY3RBZGRyZXNzZXMgKm9ianNNb3ZlZDsKIAlPYmplY3RBZGRyZXNzIGV4dEFkZHI7CisJYm9v bAkJb3duZWRTY2hlbWE7CiAKIAlleHRlbnNpb25PaWQgPSBnZXRfZXh0ZW5zaW9uX29pZChleHRl bnNpb25OYW1lLCBmYWxzZSk7CiAKLQluc3BPaWQgPSBMb29rdXBDcmVhdGlvbk5hbWVzcGFjZShu ZXdzY2hlbWEpOwotCiAJLyoKIAkgKiBQZXJtaXNzaW9uIGNoZWNrOiBtdXN0IG93biBleHRlbnNp b24uICBOb3RlIHRoYXQgd2UgZG9uJ3QgYm90aGVyIHRvCiAJICogY2hlY2sgb3duZXJzaGlwIG9m IHRoZSBpbmRpdmlkdWFsIG1lbWJlciBvYmplY3RzIC4uLgpAQCAtMzA2NiwyMiArMzE4MCw2IEBA IEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0 IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9P V05FUiwgT0JKRUNUX0VYVEVOU0lPTiwKIAkJCQkJICAgZXh0ZW5zaW9uTmFtZSk7CiAKLQkvKiBQ ZXJtaXNzaW9uIGNoZWNrOiBtdXN0IGhhdmUgY3JlYXRpb24gcmlnaHRzIGluIHRhcmdldCBuYW1l c3BhY2UgKi8KLQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soTmFtZXNwYWNlUmVsYXRpb25J ZCwgbnNwT2lkLCBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7Ci0JaWYgKGFjbHJlc3VsdCAhPSBB Q0xDSEVDS19PSykKLQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfU0NIRU1BLCBu ZXdzY2hlbWEpOwotCi0JLyoKLQkgKiBJZiB0aGUgc2NoZW1hIGlzIGN1cnJlbnRseSBhIG1lbWJl ciBvZiB0aGUgZXh0ZW5zaW9uLCBkaXNhbGxvdyBtb3ZpbmcKLQkgKiB0aGUgZXh0ZW5zaW9uIGlu dG8gdGhlIHNjaGVtYS4gIFRoYXQgd291bGQgY3JlYXRlIGEgZGVwZW5kZW5jeSBsb29wLgotCSAq LwotCWlmIChnZXRFeHRlbnNpb25PZk9iamVjdChOYW1lc3BhY2VSZWxhdGlvbklkLCBuc3BPaWQp ID09IGV4dGVuc2lvbk9pZCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3Qg bW92ZSBleHRlbnNpb24gXCIlc1wiIGludG8gc2NoZW1hIFwiJXNcIiAiCi0JCQkJCQkiYmVjYXVz ZSB0aGUgZXh0ZW5zaW9uIGNvbnRhaW5zIHRoZSBzY2hlbWEiLAotCQkJCQkJZXh0ZW5zaW9uTmFt ZSwgbmV3c2NoZW1hKSkpOwotCiAJLyogTG9jYXRlIHRoZSBwZ19leHRlbnNpb24gdHVwbGUgKi8K IAlleHRSZWwgPSB0YWJsZV9vcGVuKEV4dGVuc2lvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOwogCkBAIC0zMTA1LDE0ICszMjAzLDQzIEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNv bnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAK IAlzeXN0YWJsZV9lbmRzY2FuKGV4dFNjYW4pOwogCisJb3duZWRTY2hlbWEgPSBleHRGb3JtLT5l eHRvd25lZHNjaGVtYTsKKwogCS8qCi0JICogSWYgdGhlIGV4dGVuc2lvbiBpcyBhbHJlYWR5IGlu IHRoZSB0YXJnZXQgc2NoZW1hLCBqdXN0IHNpbGVudGx5IGRvCi0JICogbm90aGluZy4KKwkgKiBG b3Igbm9uLW93bmVkIHNjaGVtYXMsIHdlIHNob3VsZCBub3cgZXZhbHVhdGUgaWYgdGhlIHRhcmdl dCBzY2hlbWEgaXMgYQorCSAqIHZhbGlkIHRhcmdldC4gRm9yIG93bmVkIHNjaGVtYXMsIG5vIHN1 Y2ggY2hlY2tzIGFyZSBuZWVkZWQsIGJlY2F1c2UKKwkgKiB3ZSdsbCBzaW1wbHkgcmVuYW1lIHRo ZSBleGlzdGluZyBzY2hlbWEuCiAJICovCi0JaWYgKGV4dEZvcm0tPmV4dG5hbWVzcGFjZSA9PSBu c3BPaWQpCisJaWYgKCFvd25lZFNjaGVtYSkKIAl7Ci0JCXRhYmxlX2Nsb3NlKGV4dFJlbCwgUm93 RXhjbHVzaXZlTG9jayk7Ci0JCXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVzczsKKwkJbnNwT2lk ID0gTG9va3VwQ3JlYXRpb25OYW1lc3BhY2UobmV3c2NoZW1hKTsKKworCQkvKiBQZXJtaXNzaW9u IGNoZWNrOiBtdXN0IGhhdmUgY3JlYXRpb24gcmlnaHRzIGluIHRhcmdldCBuYW1lc3BhY2UgKi8K KwkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKE5hbWVzcGFjZVJlbGF0aW9uSWQsIG5zcE9p ZCwgR2V0VXNlcklkKCksIEFDTF9DUkVBVEUpOworCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNL X09LKQorCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfU0NIRU1BLCBuZXdzY2hl bWEpOworCisJCS8qCisJCSAqIElmIHRoZSBzY2hlbWEgaXMgY3VycmVudGx5IGEgbWVtYmVyIG9m IHRoZSBleHRlbnNpb24sIGRpc2FsbG93CisJCSAqIG1vdmluZyB0aGUgZXh0ZW5zaW9uIGludG8g dGhlIHNjaGVtYS4gIFRoYXQgd291bGQgY3JlYXRlIGEKKwkJICogZGVwZW5kZW5jeSBsb29wLgor CQkgKi8KKwkJaWYgKGdldEV4dGVuc2lvbk9mT2JqZWN0KE5hbWVzcGFjZVJlbGF0aW9uSWQsIG5z cE9pZCkgPT0gZXh0ZW5zaW9uT2lkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2co ImNhbm5vdCBtb3ZlIGV4dGVuc2lvbiBcIiVzXCIgaW50byBzY2hlbWEgXCIlc1wiICIKKwkJCQkJ CQkiYmVjYXVzZSB0aGUgZXh0ZW5zaW9uIGNvbnRhaW5zIHRoZSBzY2hlbWEiLAorCQkJCQkJCWV4 dGVuc2lvbk5hbWUsIG5ld3NjaGVtYSkpKTsKKworCQkvKgorCQkgKiBJZiB0aGUgZXh0ZW5zaW9u IGlzIGFscmVhZHkgaW4gdGhlIHRhcmdldCBzY2hlbWEsIGp1c3Qgc2lsZW50bHkgZG8KKwkJICog bm90aGluZy4KKwkJICovCisJCWlmIChleHRGb3JtLT5leHRuYW1lc3BhY2UgPT0gbnNwT2lkKQor CQl7CisJCQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQkJcmV0dXJu IEludmFsaWRPYmplY3RBZGRyZXNzOworCQl9CiAJfQogCiAJLyogQ2hlY2sgZXh0ZW5zaW9uIGlz IHN1cHBvc2VkIHRvIGJlIHJlbG9jYXRhYmxlICovCkBAIC0zMTg1LDYgKzMzMTIsMTMgQEAgQWx0 ZXJFeHRlbnNpb25OYW1lc3BhY2UoY29uc3QgY2hhciAqZXh0ZW5zaW9uTmFtZSwgY29uc3QgY2hh ciAqbmV3c2NoZW1hLCBPaWQgKm8KIAkJCX0KIAkJfQogCisJCS8qCisJCSAqIFdlIGRvbid0IGFj dHVhbGx5IG1vdmUgYW55IG9iamVjdHMgZm9yIG93bmVkIHNjaGVtYXMgYmVjYXVzZSB3ZQorCQkg KiBzaW1wbHkgcmVuYW1lIHRoZSBzY2hlbWEgdGhhdCB0aGVzZSBvYmplY3RzIGFyZSBhbHJlYWR5 IGluLgorCQkgKi8KKwkJaWYgKG93bmVkU2NoZW1hKQorCQkJY29udGludWU7CisKIAkJLyoKIAkJ ICogT3RoZXJ3aXNlLCBpZ25vcmUgbm9uLW1lbWJlcnNoaXAgZGVwZW5kZW5jaWVzLiAgKEN1cnJl bnRseSwgdGhlCiAJCSAqIG9ubHkgb3RoZXIgY2FzZSB3ZSBjb3VsZCBzZWUgaGVyZSBpcyBhIG5v cm1hbCBkZXBlbmRlbmN5IGZyb20KQEAgLTMyMjgsMTggKzMzNjIsMzUgQEAgQWx0ZXJFeHRlbnNp b25OYW1lc3BhY2UoY29uc3QgY2hhciAqZXh0ZW5zaW9uTmFtZSwgY29uc3QgY2hhciAqbmV3c2No ZW1hLCBPaWQgKm8KIAogCXJlbGF0aW9uX2Nsb3NlKGRlcFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsK IAotCS8qIE5vdyBhZGp1c3QgcGdfZXh0ZW5zaW9uLmV4dG5hbWVzcGFjZSAqLwotCWV4dEZvcm0t PmV4dG5hbWVzcGFjZSA9IG5zcE9pZDsKKwkvKiBOb3cgYWN0dWFsbHkgdXBkYXRlIHRoZSBzY2hl bWEgb2YgdGhlIGV4dGVuc2lvbi4gKi8KKwlpZiAob3duZWRTY2hlbWEpCisJeworCQkvKgorCQkg KiBGb3Igb3duZWQgc2NoZW1hcywgd2Ugc2ltcGx5IHJlbmFtZSB0aGUgc2NoZW1hLiBUaGlzIG1l YW5zIHRoYXQgd2UKKwkJICogZG9uJ3QgbmVlZCB0byB1cGRhdGUgdGhlIGV4dGVuc2lvbiBpdHMg Y2F0YWxvZyBlbnRyeSwgYmVjYXVzZSB0aGUKKwkJICogb2lkIG9mIHRoZSBzY2hlbWEgd2lsbCBz dGF5IHRoZSBzYW1lLgorCQkgKi8KKwkJUmVuYW1lU2NoZW1hKGdldF9uYW1lc3BhY2VfbmFtZShv bGROc3BPaWQpLCBuZXdzY2hlbWEpOworCQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBGb3Igbm9uLW93bmVkIHNjaGVtYXMs IHdlIG5vdyBoYXZlIHRvIHVwZGF0ZSB0aGUgZXh0ZW5zaW9uJ3Mgc2NoZW1hCisJCSAqIGVudHJ5 LCBhbmQgYWxzbyB1cGRhdGUgdGhlIGRlcGVuZGVuY2llcy4KKwkJICovCisJCWV4dEZvcm0tPmV4 dG5hbWVzcGFjZSA9IG5zcE9pZDsKIAotCUNhdGFsb2dUdXBsZVVwZGF0ZShleHRSZWwsICZleHRU dXAtPnRfc2VsZiwgZXh0VHVwKTsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKGV4dFJlbCwgJmV4dFR1 cC0+dF9zZWxmLCBleHRUdXApOwogCi0JdGFibGVfY2xvc2UoZXh0UmVsLCBSb3dFeGNsdXNpdmVM b2NrKTsKKwkJdGFibGVfY2xvc2UoZXh0UmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAotCS8qIHVw ZGF0ZSBkZXBlbmRlbmN5IHRvIHBvaW50IHRvIHRoZSBuZXcgc2NoZW1hICovCi0JaWYgKGNoYW5n ZURlcGVuZGVuY3lGb3IoRXh0ZW5zaW9uUmVsYXRpb25JZCwgZXh0ZW5zaW9uT2lkLAotCQkJCQkJ CU5hbWVzcGFjZVJlbGF0aW9uSWQsIG9sZE5zcE9pZCwgbnNwT2lkKSAhPSAxKQotCQllbG9nKEVS Uk9SLCAiY291bGQgbm90IGNoYW5nZSBzY2hlbWEgZGVwZW5kZW5jeSBmb3IgZXh0ZW5zaW9uICVz IiwKLQkJCSBOYW1lU3RyKGV4dEZvcm0tPmV4dG5hbWUpKTsKKwkJLyogdXBkYXRlIGRlcGVuZGVu Y3kgdG8gcG9pbnQgdG8gdGhlIG5ldyBzY2hlbWEgKi8KKwkJaWYgKGNoYW5nZURlcGVuZGVuY3lG b3IoRXh0ZW5zaW9uUmVsYXRpb25JZCwgZXh0ZW5zaW9uT2lkLAorCQkJCQkJCQlOYW1lc3BhY2VS ZWxhdGlvbklkLCBvbGROc3BPaWQsIG5zcE9pZCkgIT0gMSkKKwkJCWVsb2coRVJST1IsICJjb3Vs ZCBub3QgY2hhbmdlIHNjaGVtYSBkZXBlbmRlbmN5IGZvciBleHRlbnNpb24gJXMiLAorCQkJCSBO YW1lU3RyKGV4dEZvcm0tPmV4dG5hbWUpKTsKKwl9CiAKIAlJbnZva2VPYmplY3RQb3N0QWx0ZXJI b29rKEV4dGVuc2lvblJlbGF0aW9uSWQsIGV4dGVuc2lvbk9pZCwgMCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwppbmRleCBhNGY4YjRmYWE5MC4uMTViZDI2 NTM3NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBv cnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKQEAg LTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9leHRlbnNp b24uaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWFjbWRzLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgpAQCAtMTg1LDEyICsxODYsMTQgQEAgRGF0dW0KIGJp bmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24oUEdfRlVOQ1RJT05fQVJHUykKIHsK IAl0ZXh0CSAgICpleHROYW1lOwotCXRleHQJICAgKnNjaGVtYU5hbWU7CisJY2hhcgkgICAqc2No ZW1hTmFtZTsKIAlib29sCQlyZWxvY2F0YWJsZTsKKwlib29sCQlvd25lZHNjaGVtYTsKIAl0ZXh0 CSAgICpleHRWZXJzaW9uOwogCURhdHVtCQlleHRDb25maWc7CiAJRGF0dW0JCWV4dENvbmRpdGlv bjsKIAlMaXN0CSAgICpyZXF1aXJlZEV4dGVuc2lvbnM7CisJT2lkCQkJc2NoZW1hT2lkOwogCiAJ Q0hFQ0tfSVNfQklOQVJZX1VQR1JBREU7CiAKQEAgLTE5OCwyOCArMjAxLDMwIEBAIGJpbmFyeV91 cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24oUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAoUEdf QVJHSVNOVUxMKDApIHx8CiAJCVBHX0FSR0lTTlVMTCgxKSB8fAogCQlQR19BUkdJU05VTEwoMikg fHwKLQkJUEdfQVJHSVNOVUxMKDMpKQorCQlQR19BUkdJU05VTEwoMykgfHwKKwkJUEdfQVJHSVNO VUxMKDQpKQogCQllbG9nKEVSUk9SLCAibnVsbCBhcmd1bWVudCB0byBiaW5hcnlfdXBncmFkZV9j cmVhdGVfZW1wdHlfZXh0ZW5zaW9uIGlzIG5vdCBhbGxvd2VkIik7CiAKIAlleHROYW1lID0gUEdf R0VUQVJHX1RFWFRfUFAoMCk7Ci0Jc2NoZW1hTmFtZSA9IFBHX0dFVEFSR19URVhUX1BQKDEpOwor CXNjaGVtYU5hbWUgPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMSkpOwogCXJl bG9jYXRhYmxlID0gUEdfR0VUQVJHX0JPT0woMik7Ci0JZXh0VmVyc2lvbiA9IFBHX0dFVEFSR19U RVhUX1BQKDMpOworCW93bmVkc2NoZW1hID0gUEdfR0VUQVJHX0JPT0woMyk7CisJZXh0VmVyc2lv biA9IFBHX0dFVEFSR19URVhUX1BQKDQpOwogCi0JaWYgKFBHX0FSR0lTTlVMTCg0KSkKKwlpZiAo UEdfQVJHSVNOVUxMKDUpKQogCQlleHRDb25maWcgPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CiAJ ZWxzZQotCQlleHRDb25maWcgPSBQR19HRVRBUkdfREFUVU0oNCk7CisJCWV4dENvbmZpZyA9IFBH X0dFVEFSR19EQVRVTSg1KTsKIAotCWlmIChQR19BUkdJU05VTEwoNSkpCisJaWYgKFBHX0FSR0lT TlVMTCg2KSkKIAkJZXh0Q29uZGl0aW9uID0gUG9pbnRlckdldERhdHVtKE5VTEwpOwogCWVsc2UK LQkJZXh0Q29uZGl0aW9uID0gUEdfR0VUQVJHX0RBVFVNKDUpOworCQlleHRDb25kaXRpb24gPSBQ R19HRVRBUkdfREFUVU0oNik7CiAKIAlyZXF1aXJlZEV4dGVuc2lvbnMgPSBOSUw7Ci0JaWYgKCFQ R19BUkdJU05VTEwoNikpCisJaWYgKCFQR19BUkdJU05VTEwoNykpCiAJewotCQlBcnJheVR5cGUg ICp0ZXh0QXJyYXkgPSBQR19HRVRBUkdfQVJSQVlUWVBFX1AoNik7CisJCUFycmF5VHlwZSAgKnRl eHRBcnJheSA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCg3KTsKIAkJRGF0dW0JICAgKnRleHREYXR1 bXM7CiAJCWludAkJCW5kYXR1bXM7CiAJCWludAkJCWk7CkBAIC0yMzQsMTAgKzIzOSwyOCBAQCBi aW5hcnlfdXBncmFkZV9jcmVhdGVfZW1wdHlfZXh0ZW5zaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CX0KIAl9CiAKKwlpZiAob3duZWRzY2hlbWEpCisJeworCQlDcmVhdGVTY2hlbWFTdG10ICpjc3N0 bXQgPSBtYWtlTm9kZShDcmVhdGVTY2hlbWFTdG10KTsKKworCQljc3N0bXQtPnNjaGVtYW5hbWUg PSBzY2hlbWFOYW1lOworCQljc3N0bXQtPmF1dGhyb2xlID0gTlVMTDsJLyogd2lsbCBiZSBjcmVh dGVkIGJ5IGN1cnJlbnQgdXNlciAqLworCQljc3N0bXQtPnNjaGVtYUVsdHMgPSBOSUw7CisJCWNz c3RtdC0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOworCQlzY2hlbWFPaWQgPSBDcmVhdGVTY2hlbWFD b21tYW5kKGNzc3RtdCwgIihnZW5lcmF0ZWQgQ1JFQVRFIFNDSEVNQSBjb21tYW5kKSIsCisJCQkJ CQkJCQkJLTEsIC0xKTsKKworCX0KKwllbHNlCisJeworCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNw YWNlX29pZChzY2hlbWFOYW1lLCBmYWxzZSk7CisJfQorCiAJSW5zZXJ0RXh0ZW5zaW9uVHVwbGUo dGV4dF90b19jc3RyaW5nKGV4dE5hbWUpLAogCQkJCQkJIEdldFVzZXJJZCgpLAotCQkJCQkJIGdl dF9uYW1lc3BhY2Vfb2lkKHRleHRfdG9fY3N0cmluZyhzY2hlbWFOYW1lKSwgZmFsc2UpLAorCQkJ CQkJIHNjaGVtYU9pZCwKIAkJCQkJCSByZWxvY2F0YWJsZSwKKwkJCQkJCSBvd25lZHNjaGVtYSwK IAkJCQkJCSB0ZXh0X3RvX2NzdHJpbmcoZXh0VmVyc2lvbiksCiAJCQkJCQkgZXh0Q29uZmlnLAog CQkJCQkJIGV4dENvbmRpdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGZjN2E2NjM5MTYzLi5hOGMyNWNi M2Y0NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xOTIxLDYgKzE5MjEsMTkgQEAgY2hlY2tFeHRlbnNpb25N ZW1iZXJzaGlwKER1bXBhYmxlT2JqZWN0ICpkb2JqLCBBcmNoaXZlICpmb3V0KQogCWlmIChleHQg PT0gTlVMTCkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyoKKwkgKiBJZiB0aGlzIGlzIHRoZSAib3du ZWRfc2NoZW1hIiBvZiB0aGUgZXh0ZW5zaW9uLCB0aGVuIHdlIGRvbid0IHdhbnQgdG8KKwkgKiBj cmVhdGUgaXQgbWFudWFsbHksIGJlY2F1c2UgaXQgZ2V0cyBjcmVhdGVkIHRvZ2V0aGVyIHdpdGgg dGhlCisJICogZXh0ZW5zaW9uLgorCSAqLworCWlmIChkb2JqLT5vYmpUeXBlID09IERPX05BTUVT UEFDRSAmJgorCQlleHQtPm93bmVkc2NoZW1hICYmIHN0cmNtcChleHQtPm5hbWVzcGFjZSwgZG9i ai0+bmFtZSkgPT0gMCkKKwl7CisJCU5hbWVzcGFjZUluZm8gKm5zaW5mbyA9IChOYW1lc3BhY2VJ bmZvICopIGRvYmo7CisKKwkJbnNpbmZvLT5jcmVhdGUgPSBmYWxzZTsKKwl9CisKIAlkb2JqLT5l eHRfbWVtYmVyID0gdHJ1ZTsKIAogCS8qIFJlY29yZCBkZXBlbmRlbmN5IHNvIHRoYXQgZ2V0RGVw ZW5kZW5jaWVzIG5lZWRuJ3QgZGVhbCB3aXRoIHRoYXQgKi8KQEAgLTU4NTUsNyArNTg2OCw3IEBA IGJpbmFyeV91cGdyYWRlX2V4dGVuc2lvbl9tZW1iZXIoUFFFeHBCdWZmZXIgdXBncmFkZV9idWZm ZXIsCiAJCQkJCQkJCWNvbnN0IGNoYXIgKm9iam5hbWUsCiAJCQkJCQkJCWNvbnN0IGNoYXIgKm9i am5hbWVzcGFjZSkKIHsKLQlEdW1wYWJsZU9iamVjdCAqZXh0b2JqID0gTlVMTDsKKwlFeHRlbnNp b25JbmZvICpleHQgPSBOVUxMOwogCWludAkJCWk7CiAKIAlpZiAoIWRvYmotPmV4dF9tZW1iZXIp CkBAIC01ODY5LDE5ICs1ODgyLDMzIEBAIGJpbmFyeV91cGdyYWRlX2V4dGVuc2lvbl9tZW1iZXIo UFFFeHBCdWZmZXIgdXBncmFkZV9idWZmZXIsCiAJICovCiAJZm9yIChpID0gMDsgaSA8IGRvYmot Pm5EZXBzOyBpKyspCiAJewotCQlleHRvYmogPSBmaW5kT2JqZWN0QnlEdW1wSWQoZG9iai0+ZGVw ZW5kZW5jaWVzW2ldKTsKKwkJRHVtcGFibGVPYmplY3QgKmV4dG9iaiA9IGZpbmRPYmplY3RCeUR1 bXBJZChkb2JqLT5kZXBlbmRlbmNpZXNbaV0pOworCiAJCWlmIChleHRvYmogJiYgZXh0b2JqLT5v YmpUeXBlID09IERPX0VYVEVOU0lPTikKKwkJeworCQkJZXh0ID0gKEV4dGVuc2lvbkluZm8gKikg ZXh0b2JqOwogCQkJYnJlYWs7Ci0JCWV4dG9iaiA9IE5VTEw7CisJCX0KIAl9Ci0JaWYgKGV4dG9i aiA9PSBOVUxMKQorCWlmIChleHQgPT0gTlVMTCkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5k IHBhcmVudCBleHRlbnNpb24gZm9yICVzICVzIiwKIAkJCQkgb2JqdHlwZSwgb2JqbmFtZSk7CiAK KwkvKgorCSAqIElmIHRoZSBvYmplY3QgaXMgdGhlICJvd25lZF9zY2hlbWEiIG9mIHRoZSBleHRl bnNpb24sIHdlIGRvbid0IG5lZWQgdG8KKwkgKiBhZGQgaXQgdG8gdGhlIGV4dGVuc2lvbiBiZWNh dXNlIGl0IHdhcyBhbHJlYWR5IG1hZGUgYSBtZW1iZXIgb2YgdGhlCisJICogZXh0ZW5zaW9uIHdo ZW4gdGhlIGV4dGVuc2lvbiB3YXMgY3JlYXRlZC4KKwkgKi8KKwlpZiAoZG9iai0+b2JqVHlwZSA9 PSBET19OQU1FU1BBQ0UgJiYKKwkJZXh0LT5vd25lZHNjaGVtYSAmJiBzdHJjbXAoZXh0LT5uYW1l c3BhY2UsIGRvYmotPm5hbWUpID09IDApCisJeworCQlyZXR1cm47CisJfQorCiAJYXBwZW5kUFFF eHBCdWZmZXJTdHIodXBncmFkZV9idWZmZXIsCiAJCQkJCQkgIlxuLS0gRm9yIGJpbmFyeSB1cGdy YWRlLCBoYW5kbGUgZXh0ZW5zaW9uIG1lbWJlcnNoaXAgdGhlIGhhcmQgd2F5XG4iKTsKIAlhcHBl bmRQUUV4cEJ1ZmZlcih1cGdyYWRlX2J1ZmZlciwgIkFMVEVSIEVYVEVOU0lPTiAlcyBBREQgJXMg IiwKLQkJCQkJICBmbXRJZChleHRvYmotPm5hbWUpLAorCQkJCQkgIGZtdElkKGV4dC0+ZG9iai5u YW1lKSwKIAkJCQkJICBvYmp0eXBlKTsKIAlpZiAob2JqbmFtZXNwYWNlICYmICpvYmpuYW1lc3Bh Y2UpCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHVwZ3JhZGVfYnVmZmVyLCAiJXMuIiwgZm10SWQob2Jq bmFtZXNwYWNlKSk7CkBAIC02MDM4LDYgKzYwNjUsNyBAQCBnZXRFeHRlbnNpb25zKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtRXh0ZW5zaW9ucykKIAlpbnQJCQlpX2V4dG5hbWU7CiAJaW50CQkJaV9u c3BuYW1lOwogCWludAkJCWlfZXh0cmVsb2NhdGFibGU7CisJaW50CQkJaV9leHRvd25lZHNjaGVt YTsKIAlpbnQJCQlpX2V4dHZlcnNpb247CiAJaW50CQkJaV9leHRjb25maWc7CiAJaW50CQkJaV9l eHRjb25kaXRpb247CkBAIC02MDQ2LDcgKzYwNzQsMTQgQEAgZ2V0RXh0ZW5zaW9ucyhBcmNoaXZl ICpmb3V0LCBpbnQgKm51bUV4dGVuc2lvbnMpCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIlNFTEVDVCB4LnRhYmxlb2lkLCB4Lm9pZCwgIgogCQkJCQkJICJ4LmV4dG5hbWUsIG4ubnNw bmFtZSwgeC5leHRyZWxvY2F0YWJsZSwgeC5leHR2ZXJzaW9uLCB4LmV4dGNvbmZpZywgeC5leHRj b25kaXRpb24gIgotCQkJCQkJICJGUk9NIHBnX2V4dGVuc2lvbiB4ICIKKwkJKTsKKworCWlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE4MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIsIHguZXh0b3duZWRzY2hlbWEgIik7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIiwgZmFsc2UgQVMgZXh0b3duZWRzY2hlbWEgIik7CisKKwlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIkZST00gcGdfZXh0ZW5zaW9uIHggIgogCQkJCQkJICJKT0lOIHBnX25h bWVzcGFjZSBuIE9OIG4ub2lkID0geC5leHRuYW1lc3BhY2UiKTsKIAogCXJlcyA9IEV4ZWN1dGVT cWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKQEAgLTYwNjIsNiAr NjA5Nyw3IEBAIGdldEV4dGVuc2lvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1FeHRlbnNpb25z KQogCWlfZXh0bmFtZSA9IFBRZm51bWJlcihyZXMsICJleHRuYW1lIik7CiAJaV9uc3BuYW1lID0g UFFmbnVtYmVyKHJlcywgIm5zcG5hbWUiKTsKIAlpX2V4dHJlbG9jYXRhYmxlID0gUFFmbnVtYmVy KHJlcywgImV4dHJlbG9jYXRhYmxlIik7CisJaV9leHRvd25lZHNjaGVtYSA9IFBRZm51bWJlcihy ZXMsICJleHRvd25lZHNjaGVtYSIpOwogCWlfZXh0dmVyc2lvbiA9IFBRZm51bWJlcihyZXMsICJl eHR2ZXJzaW9uIik7CiAJaV9leHRjb25maWcgPSBQUWZudW1iZXIocmVzLCAiZXh0Y29uZmlnIik7 CiAJaV9leHRjb25kaXRpb24gPSBQUWZudW1iZXIocmVzLCAiZXh0Y29uZGl0aW9uIik7CkBAIC02 MDc1LDYgKzYxMTEsNyBAQCBnZXRFeHRlbnNpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtRXh0 ZW5zaW9ucykKIAkJZXh0aW5mb1tpXS5kb2JqLm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShy ZXMsIGksIGlfZXh0bmFtZSkpOwogCQlleHRpbmZvW2ldLm5hbWVzcGFjZSA9IHBnX3N0cmR1cChQ UWdldHZhbHVlKHJlcywgaSwgaV9uc3BuYW1lKSk7CiAJCWV4dGluZm9baV0ucmVsb2NhdGFibGUg PSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V4dHJlbG9jYXRhYmxlKSkgPT0gJ3QnOworCQlleHRp bmZvW2ldLm93bmVkc2NoZW1hID0gKihQUWdldHZhbHVlKHJlcywgaSwgaV9leHRvd25lZHNjaGVt YSkpID09ICd0JzsKIAkJZXh0aW5mb1tpXS5leHR2ZXJzaW9uID0gcGdfc3RyZHVwKFBRZ2V0dmFs dWUocmVzLCBpLCBpX2V4dHZlcnNpb24pKTsKIAkJZXh0aW5mb1tpXS5leHRjb25maWcgPSBwZ19z dHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfZXh0Y29uZmlnKSk7CiAJCWV4dGluZm9baV0uZXh0 Y29uZGl0aW9uID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V4dGNvbmRpdGlvbikp OwpAQCAtMTE3ODIsOSArMTE4MTksOSBAQCBkdW1wTmFtZXNwYWNlKEFyY2hpdmUgKmZvdXQsIGNv bnN0IE5hbWVzcGFjZUluZm8gKm5zcGluZm8pCiAJewogCQkvKiBzZWUgc2VsZWN0RHVtcGFibGVO YW1lc3BhY2UoKSAqLwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihkZWxxLAotCQkJCQkJCSAiLS0g Km5vdCogZHJvcHBpbmcgc2NoZW1hLCBzaW5jZSBpbml0ZGIgY3JlYXRlcyBpdFxuIik7CisJCQkJ CQkJICItLSAqbm90KiBkcm9wcGluZyBzY2hlbWEsIHNpbmNlIGluaXRkYiBvciBDUkVBVEUgRVhU RU5TSU9OIGNyZWF0ZXMgaXRcbiIpOwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLAotCQkJCQkJ CSAiLS0gKm5vdCogY3JlYXRpbmcgc2NoZW1hLCBzaW5jZSBpbml0ZGIgY3JlYXRlcyBpdFxuIik7 CisJCQkJCQkJICItLSAqbm90KiBjcmVhdGluZyBzY2hlbWEsIHNpbmNlIGluaXRkYiBvciBDUkVB VEUgRVhURU5TSU9OIGNyZWF0ZXMgaXRcbiIpOwogCX0KIAogCWlmIChkb3B0LT5iaW5hcnlfdXBn cmFkZSkKQEAgLTExODk2LDYgKzExOTMzLDcgQEAgZHVtcEV4dGVuc2lvbihBcmNoaXZlICpmb3V0 LCBjb25zdCBFeHRlbnNpb25JbmZvICpleHRpbmZvKQogCQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgo cSwgZXh0aW5mby0+bmFtZXNwYWNlLCBmb3V0KTsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwg IiwgIik7CiAJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIlcywgIiwgZXh0aW5mby0+cmVsb2NhdGFi bGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiVzLCAiLCBl eHRpbmZvLT5vd25lZHNjaGVtYSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCQlhcHBlbmRTdHJpbmdM aXRlcmFsQUgocSwgZXh0aW5mby0+ZXh0dmVyc2lvbiwgZm91dCk7CiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHEsICIsICIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5o IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCBkZGU4NWVkMTU2Yy4uZWJkMzkxYjQ0 N2UgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaApAQCAtMTk1LDYgKzE5NSw3IEBAIHR5cGVkZWYgc3RydWN0IF9leHRl bnNpb25JbmZvCiAJRHVtcGFibGVPYmplY3QgZG9iajsKIAljaGFyCSAgICpuYW1lc3BhY2U7CQkv KiBzY2hlbWEgY29udGFpbmluZyBleHRlbnNpb24ncyBvYmplY3RzICovCiAJYm9vbAkJcmVsb2Nh dGFibGU7CisJYm9vbAkJb3duZWRzY2hlbWE7CiAJY2hhcgkgICAqZXh0dmVyc2lvbjsKIAljaGFy CSAgICpleHRjb25maWc7CQkvKiBpbmZvIGFib3V0IGNvbmZpZ3VyYXRpb24gdGFibGVzICovCiAJ Y2hhcgkgICAqZXh0Y29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19leHRlbnNpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXh0ZW5zaW9uLmgKaW5kZXgg OTIxNGViZWRhZmEuLjAyMmJkNmRkOTJiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2V4dGVuc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXh0ZW5zaW9uLmgK QEAgLTM0LDYgKzM0LDcgQEAgQ0FUQUxPRyhwZ19leHRlbnNpb24sMzA3OSxFeHRlbnNpb25SZWxh dGlvbklkKQogCU9pZAkJCWV4dG5hbWVzcGFjZSBCS0lfTE9PS1VQKHBnX25hbWVzcGFjZSk7CS8q IG5hbWVzcGFjZSBvZgogCQkJCQkJCQkJCQkJCQkgKiBjb250YWluZWQgb2JqZWN0cyAqLwogCWJv b2wJCWV4dHJlbG9jYXRhYmxlOyAvKiBpZiB0cnVlLCBhbGxvdyBBTFRFUiBFWFRFTlNJT04gU0VU IFNDSEVNQSAqLworCWJvb2wJCWV4dG93bmVkc2NoZW1hOyAvKiBpZiB0cnVlLCBzY2hlbWEgaXMg b3duZWQgYnkgZXh0ZW5zaW9uICovCiAKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlh YmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIGV4dHZlcnNpb24gbWF5IG5ldmVy IGJlIG51bGwsIGJ1dCB0aGUgb3RoZXJzIGNhbiBiZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CmluZGV4IDExOGQ2ZGExYWNlLi5lNDdjMDg3Y2Q5YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CkBAIC0xMTc2MSw3ICsxMTc2MSw3IEBACiB7IG9pZCA9PiAnMzU5MScsIGRlc2NyID0+ICdmb3Ig dXNlIGJ5IHBnX3VwZ3JhZGUnLAogICBwcm9uYW1lID0+ICdiaW5hcnlfdXBncmFkZV9jcmVhdGVf ZW1wdHlfZXh0ZW5zaW9uJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm92b2xhdGlsZSA9PiAn dicsIHByb3BhcmFsbGVsID0+ICd1JywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCi0gIHByb2FyZ3R5 cGVzID0+ICd0ZXh0IHRleHQgYm9vbCB0ZXh0IF9vaWQgX3RleHQgX3RleHQnLAorICBwcm9hcmd0 eXBlcyA9PiAndGV4dCB0ZXh0IGJvb2wgYm9vbCB0ZXh0IF9vaWQgX3RleHQgX3RleHQnLAogICBw cm9zcmMgPT4gJ2JpbmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24nIH0sCiB7IG9p ZCA9PiAnNDA4MycsIGRlc2NyID0+ICdmb3IgdXNlIGJ5IHBnX3VwZ3JhZGUnLAogICBwcm9uYW1l ID0+ICdiaW5hcnlfdXBncmFkZV9zZXRfcmVjb3JkX2luaXRfcHJpdnMnLCBwcm92b2xhdGlsZSA9 PiAndicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCmluZGV4IDI0NDE5YmZiNWM5Li4yMDVjNWM3 MjQ1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmgKQEAgLTM4LDcgKzM4LDkgQEAgZXh0ZXJu IE9iamVjdEFkZHJlc3MgQ3JlYXRlRXh0ZW5zaW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRl RXh0ZW5zaW9uU3RtdCAqc3QKIGV4dGVybiB2b2lkIFJlbW92ZUV4dGVuc2lvbkJ5SWQoT2lkIGV4 dElkKTsKIAogZXh0ZXJuIE9iamVjdEFkZHJlc3MgSW5zZXJ0RXh0ZW5zaW9uVHVwbGUoY29uc3Qg Y2hhciAqZXh0TmFtZSwgT2lkIGV4dE93bmVyLAotCQkJCQkJCQkJCSAgT2lkIHNjaGVtYU9pZCwg Ym9vbCByZWxvY2F0YWJsZSwgY29uc3QgY2hhciAqZXh0VmVyc2lvbiwKKwkJCQkJCQkJCQkgIE9p ZCBzY2hlbWFPaWQsIGJvb2wgcmVsb2NhdGFibGUsCisJCQkJCQkJCQkJICBib29sIG93bmVkU2No ZW1hLAorCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqZXh0VmVyc2lvbiwKIAkJCQkJCQkJCQkgIERh dHVtIGV4dENvbmZpZywgRGF0dW0gZXh0Q29uZGl0aW9uLAogCQkJCQkJCQkJCSAgTGlzdCAqcmVx dWlyZWRFeHRlbnNpb25zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4 dGVuc2lvbnMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9NYWtl ZmlsZQppbmRleCBhMzU5MWJmM2QyZi4uYTY1OTRjMTlkN2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL01ha2VmaWxlCkBAIC05LDcgKzksOCBAQCBFWFRFTlNJT04gPSB0ZXN0 X2V4dDEgdGVzdF9leHQyIHRlc3RfZXh0MyB0ZXN0X2V4dDQgdGVzdF9leHQ1IHRlc3RfZXh0NiBc CiAgICAgICAgICAgICB0ZXN0X2V4dF9leHRzY2hlbWEgXAogICAgICAgICAgICAgdGVzdF9leHRf ZXZ0dHJpZyBcCiAgICAgICAgICAgICB0ZXN0X2V4dF9zZXRfc2NoZW1hIFwKLSAgICAgICAgICAg IHRlc3RfZXh0X3JlcV9zY2hlbWExIHRlc3RfZXh0X3JlcV9zY2hlbWEyIHRlc3RfZXh0X3JlcV9z Y2hlbWEzCisgICAgICAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMSB0ZXN0X2V4dF9yZXFfc2No ZW1hMiB0ZXN0X2V4dF9yZXFfc2NoZW1hMyBcCisgICAgICAgICAgICB0ZXN0X2V4dF9vd25lZF9z Y2hlbWEgdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlCiAKIERBVEEgPSB0ZXN0X2V4 dDEtLTEuMC5zcWwgdGVzdF9leHQyLS0xLjAuc3FsIHRlc3RfZXh0My0tMS4wLnNxbCBcCiAgICAg ICAgdGVzdF9leHQ0LS0xLjAuc3FsIHRlc3RfZXh0NS0tMS4wLnNxbCB0ZXN0X2V4dDYtLTEuMC5z cWwgXApAQCAtMjUsNyArMjYsOSBAQCBEQVRBID0gdGVzdF9leHQxLS0xLjAuc3FsIHRlc3RfZXh0 Mi0tMS4wLnNxbCB0ZXN0X2V4dDMtLTEuMC5zcWwgXAogICAgICAgIHRlc3RfZXh0X3NldF9zY2hl bWEtLTEuMC5zcWwgXAogICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWExLS0xLjAuc3FsIFwKICAg ICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMi0tMS4wLnNxbCBcCi0gICAgICAgdGVzdF9leHRfcmVx X3NjaGVtYTMtLTEuMC5zcWwKKyAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMy0tMS4wLnNxbCBc CisgICAgICAgdGVzdF9leHRfb3duZWRfc2NoZW1hLS0xLjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4 dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwKIAogUkVHUkVTUyA9IHRlc3RfZXh0 ZW5zaW9ucyB0ZXN0X2V4dGRlcGVuZAogVEFQX1RFU1RTID0gMQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25zLm91dCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZW5zaW9u cy5vdXQKaW5kZXggNzJiYWUxYmYyNTQuLmViM2VmMDE5OTZiIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0Cisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZW5z aW9ucy5vdXQKQEAgLTksNiArOSw3IEBAIENSRUFURSBFWFRFTlNJT04gdGVzdF9leHQxIFNDSEVN QSB0ZXN0X2V4dDsKIEVSUk9SOiAgc2NoZW1hICJ0ZXN0X2V4dCIgZG9lcyBub3QgZXhpc3QKIENS RUFURSBFWFRFTlNJT04gdGVzdF9leHQxIFNDSEVNQSBoYXMkZG9sbGFyOwogRVJST1I6ICBleHRl bnNpb24gInRlc3RfZXh0MSIgbXVzdCBiZSBpbnN0YWxsZWQgaW4gc2NoZW1hICJ0ZXN0X2V4dDEi CitISU5UOiAgRG8gbm90IHNwZWNpZnkgU0NIRU1BIHdoZW4gcnVubmluZyBDUkVBVEUgRVhURU5T SU9OIGZvciBleHRlbnNpb24gInRlc3RfZXh0MSIKIC0tIGZpbmFsbHkgc3VjY2VzcwogQ1JFQVRF IEVYVEVOU0lPTiB0ZXN0X2V4dDEgU0NIRU1BIGhhcyRkb2xsYXIgQ0FTQ0FERTsKIE5PVElDRTog IGluc3RhbGxpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uICJ0ZXN0X2V4dDIiCkBAIC02NjgsMyArNjY5 LDU2IEBAIFNFTEVDVCB0ZXN0X3NfZGVwLmRlcF9yZXEyKCk7CiAKIERST1AgRVhURU5TSU9OIHRl c3RfZXh0X3JlcV9zY2hlbWExIENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGV4 dGVuc2lvbiB0ZXN0X2V4dF9yZXFfc2NoZW1hMgorLS0KKy0tIFRlc3Qgb3duZWQgc2NoZW1hIGV4 dGVuc2lvbnMKKy0tCitDUkVBVEUgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKKy0tIEZh aWxzIGZvciBhbiBhbHJlYWR5IGV4aXN0aW5nIHNjaGVtYSB0byBiZSBwcm92aWRlZAorQ1JFQVRF IEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgU0NIRU1BIHRlc3RfZXh0X293bmVkX3Nj aGVtYTsKK0VSUk9SOiAgc2NoZW1hICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWEiIGFscmVhZHkgZXhp c3RzCitISU5UOiAgRHJvcCBzY2hlbWEgInRlc3RfZXh0X293bmVkX3NjaGVtYSIgb3Igc3BlY2lm eSBhbm90aGVyIHNjaGVtYSB1c2luZyBDUkVBVEUgRVhURU5TSU9OIC4uLiBTQ0hFTUEgLi4uCist LSBGYWlscyBiZWNhdXNlIGEgZGlmZmVyZW50IHNjaGVtYSBpcyBzZXQgaW4gY29udHJvbCBmaWxl CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBTQ0hFTUEgdGVzdF9zY2hl bWE7CitFUlJPUjogIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hIiBtdXN0IGJlIGlu c3RhbGxlZCBpbiBzY2hlbWEgInRlc3RfZXh0X293bmVkX3NjaGVtYSIKK0hJTlQ6ICBEbyBub3Qg c3BlY2lmeSBTQ0hFTUEgd2hlbiBydW5uaW5nIENSRUFURSBFWFRFTlNJT04gZm9yIGV4dGVuc2lv biAidGVzdF9leHRfb3duZWRfc2NoZW1hIgorRFJPUCBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2No ZW1hOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitcZHgrIHRlc3Rf ZXh0X293bmVkX3NjaGVtYTsKK09iamVjdHMgaW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9z Y2hlbWEiCisgICAgICAgICAgIE9iamVjdCBkZXNjcmlwdGlvbiAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmdW5jdGlvbiB0ZXN0X2V4dF9v d25lZF9zY2hlbWEub3duZWQxKCkKKyBzY2hlbWEgdGVzdF9leHRfb3duZWRfc2NoZW1hCisoMiBy b3dzKQorCitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitDUkVBVEUgU0NI RU1BIGFscmVhZHlfZXhpc3Rpbmc7CistLSBGYWlscyBmb3IgYW4gYWxyZWFkeSBleGlzdGluZyBz Y2hlbWEgdG8gYmUgcHJvdmlkZWQKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2No ZW1hX3JlbG9jYXRhYmxlIFNDSEVNQSBhbHJlYWR5X2V4aXN0aW5nOworRVJST1I6ICBzY2hlbWEg ImFscmVhZHlfZXhpc3RpbmciIGFscmVhZHkgZXhpc3RzCitISU5UOiAgRHJvcCBzY2hlbWEgImFs cmVhZHlfZXhpc3RpbmciIG9yIHNwZWNpZnkgYW5vdGhlciBzY2hlbWEgdXNpbmcgQ1JFQVRFIEVY VEVOU0lPTiAuLi4gU0NIRU1BIC4uLgorLS0gRmFpbHMgYmVjYXVzZSBubyBzY2hlbWEgaXMgc2V0 IGluIGNvbnRyb2wgZmlsZQorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFf cmVsb2NhdGFibGU7CitFUlJPUjogIG5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBjcmVh dGUgaW4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxl IFNDSEVNQSB0ZXN0X3NjaGVtYTsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRh YmxlCitPYmplY3RzIGluIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRh YmxlIgorICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIGZ1bmN0aW9uIHRlc3Rfc2NoZW1hLm93bmVkMigpCisgc2NoZW1hIHRl c3Rfc2NoZW1hCisoMiByb3dzKQorCistLSBGYWlscyBiZWNhdXNlIHNjaGVtYSBhbHJlYWR5IGV4 aXN0cworQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBT RVQgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7CitFUlJPUjogIHNjaGVtYSAiYWxyZWFkeV9leGlz dGluZyIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hl bWFfcmVsb2NhdGFibGUgU0VUIFNDSEVNQSBzb21lX290aGVyX25hbWU7CitcZHgrIHRlc3RfZXh0 X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZQorT2JqZWN0cyBpbiBleHRlbnNpb24gInRlc3RfZXh0 X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSIKKyAgICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGZ1bmN0aW9uIHNv bWVfb3RoZXJfbmFtZS5vd25lZDIoKQorIHNjaGVtYSBzb21lX290aGVyX25hbWUKKygyIHJvd3Mp CisKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1aWxkIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvbWVzb24uYnVpbGQKaW5kZXggM2M3ZTM3 OGJmMzUuLmM0OTEzZmI5Yzg2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy9tZXNvbi5idWlsZApAQCAtNDQsNiArNDQsMTAgQEAgdGVzdF9pbnN0YWxsX2RhdGEgKz0gZmls ZXMoCiAgICd0ZXN0X2V4dF9yZXFfc2NoZW1hMy5jb250cm9sJywKICAgJ3Rlc3RfZXh0X3NldF9z Y2hlbWEtLTEuMC5zcWwnLAogICAndGVzdF9leHRfc2V0X3NjaGVtYS5jb250cm9sJywKKyAgJ3Rl c3RfZXh0X293bmVkX3NjaGVtYS0tMS4wLnNxbCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWEu Y29udHJvbCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwn LAorICAndGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLmNvbnRyb2wnLAogKQogCiB0 ZXN0cyArPSB7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9z cWwvdGVzdF9leHRlbnNpb25zLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25z L3NxbC90ZXN0X2V4dGVuc2lvbnMuc3FsCmluZGV4IGI1ODc4ZjZmODBmLi5hOTc4NjZkMDBlYSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0 ZW5zaW9ucy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rl c3RfZXh0ZW5zaW9ucy5zcWwKQEAgLTMwMywzICszMDMsMzAgQEAgQUxURVIgRVhURU5TSU9OIHRl c3RfZXh0X3JlcV9zY2hlbWExIFNFVCBTQ0hFTUEgdGVzdF9zX2RlcDI7ICAtLSBub3cgb2sKIFNF TEVDVCB0ZXN0X3NfZGVwMi5kZXBfcmVxMSgpOwogU0VMRUNUIHRlc3Rfc19kZXAuZGVwX3JlcTIo KTsKIERST1AgRVhURU5TSU9OIHRlc3RfZXh0X3JlcV9zY2hlbWExIENBU0NBREU7CisKKy0tCist LSBUZXN0IG93bmVkIHNjaGVtYSBleHRlbnNpb25zCistLQorCitDUkVBVEUgU0NIRU1BIHRlc3Rf ZXh0X293bmVkX3NjaGVtYTsKKy0tIEZhaWxzIGZvciBhbiBhbHJlYWR5IGV4aXN0aW5nIHNjaGVt YSB0byBiZSBwcm92aWRlZAorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEg U0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKKy0tIEZhaWxzIGJlY2F1c2UgYSBkaWZmZXJl bnQgc2NoZW1hIGlzIHNldCBpbiBjb250cm9sIGZpbGUKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9l eHRfb3duZWRfc2NoZW1hIFNDSEVNQSB0ZXN0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHRlc3RfZXh0 X293bmVkX3NjaGVtYTsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hOwor XGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25l ZF9zY2hlbWE7CisKK0NSRUFURSBTQ0hFTUEgYWxyZWFkeV9leGlzdGluZzsKKy0tIEZhaWxzIGZv ciBhbiBhbHJlYWR5IGV4aXN0aW5nIHNjaGVtYSB0byBiZSBwcm92aWRlZAorQ1JFQVRFIEVYVEVO U0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUgU0NIRU1BIGFscmVhZHlfZXhp c3Rpbmc7CistLSBGYWlscyBiZWNhdXNlIG5vIHNjaGVtYSBpcyBzZXQgaW4gY29udHJvbCBmaWxl CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZTsKK0NS RUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNDSEVNQSB0 ZXN0X3NjaGVtYTsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlCistLSBG YWlscyBiZWNhdXNlIHNjaGVtYSBhbHJlYWR5IGV4aXN0cworQUxURVIgRVhURU5TSU9OIHRlc3Rf ZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBTRVQgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7 CitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNFVCBT Q0hFTUEgc29tZV9vdGhlcl9uYW1lOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2Nh dGFibGUKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293 bmVkX3NjaGVtYS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rl c3RfZXh0X293bmVkX3NjaGVtYS0tMS4wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNjcyYWI4ZTYwN2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwKQEAgLTAs MCArMSwyIEBACitDUkVBVEUgRlVOQ1RJT04gb3duZWQxKCkgUkVUVVJOUyB0ZXh0CitMQU5HVUFH RSBTUUwgQVMgJCQgU0VMRUNUIDEgJCQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEuY29udHJvbCBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS5jb250cm9sCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MzFjMzhkYWVmZAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVk X3NjaGVtYS5jb250cm9sCkBAIC0wLDAgKzEsNSBAQAorY29tbWVudCA9ICdUZXN0IGV4dGVuc2lv biB3aXRoIGFuIG93bmVkIHNjaGVtYScKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCityZWxvY2F0 YWJsZSA9IGZhbHNlCitzY2hlbWEgPSB0ZXN0X2V4dF9vd25lZF9zY2hlbWEKK293bmVkX3NjaGVt YSA9IHRydWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rl c3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4w LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmZjY2FmNGFmODIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0 X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwKQEAgLTAsMCArMSwyIEBACitD UkVBVEUgRlVOQ1RJT04gb3duZWQyKCkgUkVUVVJOUyB0ZXh0CitMQU5HVUFHRSBTUUwgQVMgJCQg U0VMRUNUIDEgJCQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbCBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS5j b250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zY2RhMWUxMjM0 MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rl c3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAor Y29tbWVudCA9ICdUZXN0IGV4dGVuc2lvbiB3aXRoIGFuIG93bmVkIHNjaGVtYScKK2RlZmF1bHRf dmVyc2lvbiA9ICcxLjAnCityZWxvY2F0YWJsZSA9IHRydWUKK293bmVkX3NjaGVtYSA9IHRydWUK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9wZ19kdW1wL3QvMDAxX2Jhc2UucGwg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGdfZHVtcC90LzAwMV9iYXNlLnBsCmluZGV4IGFkY2Fh NDE5NjE2Li5iYjdkNDE0ZGExNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Bn X2R1bXAvdC8wMDFfYmFzZS5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGdfZHVtcC90 LzAwMV9iYXNlLnBsCkBAIC0zODEsNiArMzgxLDM4IEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9 LAogCisJJ0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hJyA9PiB7CisJCWNy ZWF0ZV9vcmRlciA9PiAxLAorCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgRVhURU5TSU9OIHRlc3Rf ZXh0X293bmVkX3NjaGVtYTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgRVhURU5T SU9OIElGIE5PVCBFWElTVFMgdGVzdF9leHRfb3duZWRfc2NoZW1hIFdJVEggU0NIRU1BIHRlc3Rf ZXh0X293bmVkX3NjaGVtYTtcRQorCQkJXG4veG0sCisJCWxpa2UgPT4geworCQkJJWZ1bGxfcnVu cywKKwkJCXNjaGVtYV9vbmx5ID0+IDEsCisJCQlzZWN0aW9uX3ByZV9kYXRhID0+IDEsCisJCX0s CisJCXVubGlrZSA9PiB7CisJCQliaW5hcnlfdXBncmFkZSA9PiAxLAorCQkJd2l0aF9leHRlbnNp b24gPT4gMSwKKwkJCXdpdGhvdXRfZXh0ZW5zaW9uID0+IDEKKwkJfQorCX0sCisKKwknQ1JFQVRF IFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWEnID0+IHsKKwkJcmVnZXhwID0+IHFyL14KKwkJ CVxRQ1JFQVRFIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7XEUKKwkJCVxuL3htLAorCQls aWtlID0+IHt9LAorCX0sCisKKwknQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVt YSBBREQgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYScgPT4geworCQlyZWdleHAgPT4gcXIv XgorCQkJXFFBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hIEFERCBTQ0hFTUEg dGVzdF9leHRfb3duZWRfc2NoZW1hO1xFCisJCQlcbi94bSwKKwkJbGlrZSA9PiB7fSwKKwl9LAor CiAJJ0NSRUFURSBST0xFIHJlZ3Jlc3NfZHVtcF90ZXN0X3JvbGUnID0+IHsKIAkJY3JlYXRlX29y ZGVyID0+IDEsCiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBST0xFIHJlZ3Jlc3NfZHVtcF90ZXN0 X3JvbGU7JywKCmJhc2UtY29tbWl0OiAzNmFlZDE5ZmQ5OTAyMWFkOWY3MjdlNGZkNGJjZWIwODZh N2NmNTRkCi0tIAoyLjUxLjAKCg== --34189d902e2f9d8ede7621ae1b42649d6dce1285d4448295a69d5552ca4e--