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 1vM0wl-00GcXC-35 for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 09:27:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vM0wk-000ccH-0w for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 09:27:22 +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.96) (envelope-from ) id 1vM0wj-000cc8-1t for pgsql-hackers@lists.postgresql.org; Thu, 20 Nov 2025 09:27:22 +0000 Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vM0wg-000US6-1e for pgsql-hackers@postgresql.org; Thu, 20 Nov 2025 09:27:20 +0000 Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-b72bf7e703fso107708066b.2 for ; Thu, 20 Nov 2025 01:27:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1763630837; x=1764235637; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1pndB2EwXglHnCzT4/z+FIYxjhBzsnrL7Xp66m2S0JI=; b=UyjQ18fG8Y3VG61OT9wQgwzc1Gv5bvRZqAG99EvAS6GxltZQBhCA8JmX1dS7xx7dyC 8d+kD1UxLdUbZzoXB1K0bO9YSKpsJTzcjQfL+RrRahW3s6cN6RW+8DJ0CQb2x/h65rSc cCFUHBHzhPfwW+kbFbS7wcJDcjWPBAaXt3SAKuu+DlzeHvPMVIVVKKJg/ah6QKN+sA9v VAFMz40DEWFTyoT4UYG58kaPo94TWAtMn8k3++aT2zWhTr7xWH2lWqGdwRD5uck9tWLR L8AV6KscYaNK3POv+cRfPFi4qba+WIyYs3BoJft8egpsl9IVCE+Bctu4pit8lr/M1kAy JSZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763630837; x=1764235637; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1pndB2EwXglHnCzT4/z+FIYxjhBzsnrL7Xp66m2S0JI=; b=lp6zUmCOOOIrH58qPlIiEyHXGqgkagbpGdVrlQpfRgp16oRy+cHrSS98lsSs9yjTJc +klvmtS15iILxCyrh3pQzNA2b5mXNT/SMEtQuQ07pLuHQpAsLkOjlZ3gREJ3Y8FKWONG s6uaGiSKvZHImh+gsN5OdWk4rEDmEmVQ7qz2iei52UjR+H5uzkcEAZ7eRtyOsSuY6BLR qPpu2z75erisWjeCicUzLKmExHGqSO0Ui7DuEx0hfXQFqz7+yG7XSHNiJG77SxPybDn1 FPbO922tAp5lSdTZD/8E5q0v6gdSGA5Z3GYxUGVnW3qa09kGlc6dqEFoPuCRtv1TRgfe LMZw== X-Forwarded-Encrypted: i=1; AJvYcCWgo3HFAmKWT+XeoVgepthp1hdBbEdKUpZjcxJ9psivywHrL/BxJmP5gEz25L7dtNvKscJ+eBDHJneyhyDs@postgresql.org X-Gm-Message-State: AOJu0YwX9Yx/uiIcJn7CXHEME01FhYy3RnBr7bcrB9KQwQUQuyYgSBnm /ut1tC8nKJLcIyOpg17oBBtr7QAYsd0/bEIT1M0YQ2ZkMTTpd+lKCae6VyeTjPhY465DoWVVRYe OFw3RgE5TsCawFqQVqsZSAxNeQ22Hoii+s8mLY9yl X-Gm-Gg: ASbGncu8b1RZB4U7bMHoebBHruwC7IrPS3cTB/yhC7HZIKoLKLLzq1bhBBA+dbjweHG Akm7TFhdRmF1V4VxhgBCDvljVTRAMPK0V0CgupwHu/JVHzLx1rCQRqVI1RJbFJATATJcQcSYBE+ 6hbnVySyyxf2YAKzLdU7Yw75iVCUCftptwyUuaa8ixHF9dBtLQb/tdAkd+b772K79uOPc2dfBNf 3WBx7EpvniBPl1fFn6A7hrp7G3K0AkJZV2PMOCAuEt/INfHCGQKLI3xaeW+6V13ZVMDdz9r6g== X-Google-Smtp-Source: AGHT+IFe+C4cjwHcuIm/OTrVwvRtyb7Zf1bxTqJS2N55wqnI4fFILy66je6l+nx8LmVey+nkdX0lmLYOJpiN9HZabUc= X-Received: by 2002:a17:907:2da5:b0:b71:c2be:3dd7 with SMTP id a640c23a62f3a-b7654e63208mr266444166b.25.1763630837543; Thu, 20 Nov 2025 01:27:17 -0800 (PST) MIME-Version: 1.0 References: <202510151529.s3fpwsgben57@alvherre.pgsql> In-Reply-To: From: Akshay Joshi Date: Thu, 20 Nov 2025 14:57:05 +0530 X-Gm-Features: AWmQ_blEUBoCQLXqSSEmRE8_jW4WBRwERkB256i0IRgQkAIfQoXC5CYLURD7zfc Message-ID: Subject: Re: [PATCH] Add pg_get_policy_ddl() function to reconstruct CREATE POLICY statement To: Marcos Pegoraro Cc: Mark Wong , =?UTF-8?Q?=C3=81lvaro_Herrera?= , pgsql-hackers Content-Type: multipart/mixed; boundary="00000000000096860f0644034d0d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000096860f0644034d0d Content-Type: multipart/alternative; boundary="00000000000096860e0644034d0b" --00000000000096860e0644034d0b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Attached is the v8 patch for your review, with updated variable names and a rebase applied. On Mon, Nov 10, 2025 at 10:46=E2=80=AFAM Akshay Joshi wrote: > Thanks for the clarification. However, I still believe this is out of > scope for the CREATE POLICY DDL. The command ALTER TABLE ... ENABLE ROW > LEVEL SECURITY seems more appropriate as part of the CREATE TABLE > reconstruction rather than CREATE POLICY. > > That said, I=E2=80=99m open to adding it if the majority feels it should = be > included in this feature. > > On Fri, Nov 7, 2025 at 8:18=E2=80=AFPM Marcos Pegoraro wrote: > >> Em sex., 7 de nov. de 2025 =C3=A0s 11:27, Akshay Joshi < >> akshay.joshi@enterprisedb.com> escreveu: >> >>> I don=E2=80=99t think we need that statement. Could you please elaborat= e on >>> where exactly it needs to be added? >>> >> >> well, these pg_get_..._ddl() functions will be cool for compare/clone >> schemas in a multi tenant world. >> Instead of dump/sed/restore a schema to create a new one, I could use >> something like >> select pg_get_table_ddl(oid) from pg_class where nspname =3D 'customer_0= 50' >> and relkind =3D 'r' union all >> select pg_get_constraint_ddl(oid) from pg_constraint inner join pg_class >> on ... where ... union all >> select pg_get_trigger_ddl(oid) from pg_trigger inner join pg_class on >> ... where ... union all >> ... >> >> And pg_get_policy_ddl() will be part of these union all selects >> >> Because that would be good to worry about create that only if it does no= t >> exists or drop first too. >> >> regards >> Marcos >> > --00000000000096860e0644034d0b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Attached is the v8 patch for your review, with updated var= iable names and a rebase applied.

On Mon, Nov 10, 2025 at 10:46=E2=80=AFAM A= kshay Joshi <akshay.joshi@enterprisedb.com> wrote:

Thanks for the cla= rification. However, I still believe this is out of scope for the CRE= ATE POLICY DDL. The command ALTER TABLE ...=C2=A0ENABLE= ROW LEVEL SECURITY=C2=A0seems more appropriate as part of the CREA= TE TABLE reconstruction rather than CREATE POLICY.

That said, I=E2=80=99m open to adding it if the majority feels it should= be included in this feature.


On Fri, Nov 7, 2025 at 8:18=E2=80=AFPM Mar= cos Pegoraro <mar= cos@f10.com.br> wrote:
Em sex., 7 de nov. de = 2025 =C3=A0s 11:27, Akshay Joshi <akshay.joshi@enterprisedb.com> escreveu= :
I don=E2=80=99t think we n= eed that statement. Could you please elaborate on where exactly it needs to= be added?

well, t= hese pg_get_..._ddl() functions will be cool for compare/clone schemas in a= multi tenant world.
Instead of dump/sed/restore a s= chema to create a new one, I could use something like
select pg_get_table_ddl(oid) from pg_class where nspname =3D 'custome= r_050' and relkind =3D 'r' union all
sel= ect pg_get_constraint_ddl(oid) from pg_constraint inner join pg_class on ..= . where ... union all
select pg_get_trigger_ddl(oid)= from pg_trigger inner join pg_class on ...=C2=A0where ... union all
<= div class=3D"gmail_default" style=3D"font-family:verdana,sans-serif;color:r= gb(102,102,102)">...

And= pg_get_policy_ddl() will be part of these union all selects

Because that would be good to worry ab= out create that only if it does not exists or drop first too.

regards
Marcos=
--00000000000096860e0644034d0b-- --00000000000096860f0644034d0d Content-Type: application/x-patch; name="v8-0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch" Content-Disposition: attachment; filename="v8-0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7839220 RnJvbSAyNDIxYjM4MjE0NTdkZGM3NjVkYTcwNjY3ZmRlMmFlZDQzN2IzMGJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBa3NoYXkgSm9zaGkgPGFrc2hheS5qb3NoaUBlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBGcmksIDEwIE9jdCAyMDI1IDE1OjQ2OjEzICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2OF0gQWRkIHBnX2dldF9wb2xpY3lfZGRsKCkgZnVuY3Rpb24gdG8gcmVjb25zdHJ1Y3Qg Q1JFQVRFCiBQT0xJQ1kgc3RhdGVtZW50cwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp dAoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN5c3RlbSBmdW5jdGlvbjoKcGdfZ2V0X3Bv bGljeV9kZGwocmVnY2xhc3MgdGFibGUsIG5hbWUgcG9saWN5X25hbWUsIGJvb2wgcHJldHR5KSwK d2hpY2ggcmVjb25zdHJ1Y3RzIHRoZSBDUkVBVEUgUE9MSUNZIHN0YXRlbWVudCBmb3IgdGhlIHNw ZWNpZmllZCBwb2xpY3kuCgpVc2FnZSBleGFtcGxlczoKU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRs KCdybHNfdGFibGUnLCAncG9sMScpOyAtLSBub24tcHJldHR5IGZvcm1hdHRlZCBEREwKU0VMRUNU IHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGFibGUnLCAncG9sMScsIHRydWUpOyAgLS0gcHJldHR5 IGZvcm1hdHRlZCBEREwKU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKDE2NTY0LCAncG9sMScpOyAt LSBub24tcHJldHR5IGZvcm1hdHRlZCBEREwKU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKDE2NTY0 LCAncG9sMScsIHRydWUpOyAgLS0gcHJldHR5IGZvcm1hdHRlZCBEREwKClJlZmVyZW5jZTogUEct MTYzCkF1dGhvcjogQWtzaGF5IEpvc2hpIDxha3NoYXkuam9zaGlAZW50ZXJwcmlzZWRiLmNvbT4K UmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAa3VyaWxlbXUuZGU+Ci0tLQog ZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwgICAgICAgICAgfCAgNTUgKysrKysrCiBz cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsICB8ICAgNiArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9wb2xpY3kuYyAgICAgICAgICAgICB8ICAyNyArKysKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgIHwgMjEyICsrKysrKysrKysrKysrKysrKysr KysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgIHwgICAzICsKIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL3BvbGljeS5oICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0IHwgMjA3ICsrKysrKysrKysrKysrKysr KysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsICAgICAgfCAgODAgKysr KysrKysKIDggZmlsZXMgY2hhbmdlZCwgNTkxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbCBiL2RvYy9zcmMv c2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCmluZGV4IGQ0NTA4MTE0YTQ4Li5lZGZkOTM4MWJlMCAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKQEAgLTM3OTcsNCArMzc5Nyw1OSBAQCBhY2wgICAg ICB8IHtwb3N0Z3Jlcz1hcndkRHh0bS9wb3N0Z3Jlcyxmb289ci9wb3N0Z3Jlc30KIAogICA8L3Nl Y3QyPgogCisgIDxzZWN0MiBpZD0iZnVuY3Rpb25zLWdldC1vYmplY3QtZGRsIj4KKyAgIDx0aXRs ZT5HZXQgT2JqZWN0IERETCBGdW5jdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUg ZnVuY3Rpb25zIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtZ2V0LW9iamVj dC1kZGwtdGFibGUiLz4KKyAgICByZXR1cm4gdGhlIERhdGEgRGVmaW5pdGlvbiBMYW5ndWFnZSAo RERMKSBzdGF0ZW1lbnQgZm9yIGFueSBnaXZlbiBkYXRhYmFzZSBvYmplY3QuCisgICAgVGhpcyBm ZWF0dXJlIGlzIGltcGxlbWVudGVkIGFzIGEgc2V0IG9mIGRpc3RpbmN0IGZ1bmN0aW9ucyBmb3Ig ZWFjaCBvYmplY3QgdHlwZS4KKyAgIDwvcGFyYT4KKworICAgPHRhYmxlIGlkPSJmdW5jdGlvbnMt Z2V0LW9iamVjdC1kZGwtdGFibGUiPgorICAgIDx0aXRsZT5HZXQgT2JqZWN0IERETCBGdW5jdGlv bnM8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgIDx0aGVhZD4KKyAgICAgIDxy b3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1 bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgRnVuY3Rpb24KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg ICA8L3Jvdz4KKyAgICAgPC90aGVhZD4KKworICAgICA8dGJvZHk+CisgICAgICA8cm93PgorICAg ICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25h dHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5wZ19nZXRfcG9s aWN5X2RkbDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlv bj5wZ19nZXRfcG9saWN5X2RkbDwvZnVuY3Rpb24+CisgICAgICAgICggPHBhcmFtZXRlcj50YWJs ZTwvcGFyYW1ldGVyPiA8dHlwZT5yZWdjbGFzczwvdHlwZT4sIDxwYXJhbWV0ZXI+cG9saWN5X25h bWU8L3BhcmFtZXRlcj4gPHR5cGU+bmFtZTwvdHlwZT4sIDxvcHRpb25hbD4gPHBhcmFtZXRlcj5w cmV0dHk8L3BhcmFtZXRlcj4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4gPC9vcHRpb25hbD4gKQorICAg ICAgICA8cmV0dXJudmFsdWU+dGV4dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0cnVjdHMgdGhlIDxjb21tYW5kPkNSRUFURSBQT0xJ Q1k8L2NvbW1hbmQ+IHN0YXRlbWVudCBmcm9tIHRoZQorICAgICAgICBzeXN0ZW0gY2F0YWxvZ3Mg Zm9yIGEgc3BlY2lmaWVkIHRhYmxlIGFuZCBwb2xpY3kgbmFtZS4gVGhlIHJlc3VsdCBpcyBhCisg ICAgICAgIGNvbXByZWhlbnNpdmUgPGNvbW1hbmQ+Q1JFQVRFIFBPTElDWTwvY29tbWFuZD4gc3Rh dGVtZW50LgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGJv ZHk+CisgICAgPC90Z3JvdXA+CisgICA8L3RhYmxlPgorCisgIDxwYXJhPgorICAgTW9zdCBvZiB0 aGUgZnVuY3Rpb25zIHRoYXQgcmVjb25zdHJ1Y3QgKGRlY29tcGlsZSkgZGF0YWJhc2Ugb2JqZWN0 cyBoYXZlIGFuCisgICBvcHRpb25hbCA8cGFyYW1ldGVyPnByZXR0eTwvcGFyYW1ldGVyPiBmbGFn LCB3aGljaCBpZgorICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gY2F1c2VzIHRoZSByZXN1bHQg dG8gYmUKKyAgIDxxdW90ZT5wcmV0dHktcHJpbnRlZDwvcXVvdGU+LiBQcmV0dHktcHJpbnRpbmcg YWRkcyB0YWIgY2hhcmFjdGVyIGFuZCBuZXcKKyAgIGxpbmUgY2hhcmFjdGVyIGZvciBsZWdpYmls aXR5LiBQYXNzaW5nIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiBmb3IgdGhlCisgICA8cGFyYW1l dGVyPnByZXR0eTwvcGFyYW1ldGVyPiBwYXJhbWV0ZXIgeWllbGRzIHRoZSBzYW1lIHJlc3VsdCBh cyBvbWl0dGluZworICAgdGhlIHBhcmFtZXRlci4KKyAgPC9wYXJhPgorCisgIDwvc2VjdDI+CisK ICAgPC9zZWN0MT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0 aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCmluZGV4 IDJkOTQ2ZDZkOWU5Li5hNWUyMjM3NDY2OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9m dW5jdGlvbnMuc3FsCkBAIC02NTcsNiArNjU3LDEyIEBAIExBTkdVQUdFIElOVEVSTkFMCiBTVFJJ Q1QgVk9MQVRJTEUgUEFSQUxMRUwgVU5TQUZFCiBBUyAncGdfcmVwbGljYXRpb25fb3JpZ2luX3Nl c3Npb25fc2V0dXAnOwogCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTgorICBwZ19nZXRfcG9s aWN5X2RkbCh0YWJsZUlEIHJlZ2NsYXNzLCBwb2xpY3lOYW1lIG5hbWUsIHByZXR0eSBib29sIERF RkFVTFQgZmFsc2UpCitSRVRVUk5TIHRleHQKK0xBTkdVQUdFIElOVEVSTkFMCitBUyAncGdfZ2V0 X3BvbGljeV9kZGwnOworCiAtLQogLS0gVGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGZ1bmN0 aW9ucyBtZWFuIHRoYXQgYW55b25lIGNhbiBleGVjdXRlIHRoZW0uCiAtLSBBIG51bWJlciBvZiBm dW5jdGlvbnMgc2hvdWxkbid0IGJlIGV4ZWN1dGFibGUgYnkganVzdCBhbnlvbmUsIGJ1dCByYXRo ZXIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGljeS5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcG9saWN5LmMKaW5kZXggODMwNTY5NjBmZTQuLjFhYmUwYzQ0MzUzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wb2xpY3kuYwpAQCAtMTI4LDYgKzEyOCwzMyBAQCBwYXJzZV9wb2xpY3lfY29tbWFu ZChjb25zdCBjaGFyICpjbWRfbmFtZSkKIAlyZXR1cm4gcG9sY21kOwogfQogCisvKgorICogZ2V0 X3BvbGljeV9jbWRfbmFtZSAtCisgKgkgaGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgY2hhciBy ZXByZXNlbnRhdGlvbiB0byBmdWxsIGNvbW1hbmQgc3RyaW5ncy4KKyAqCisgKiBjbWQgLSAgVmFs aWQgdmFsdWVzIGFyZSAnKicsICdyJywgJ2EnLCAndycgYW5kICdkJy4KKyAqCisgKi8KK2NoYXIg KgorZ2V0X3BvbGljeV9jbWRfbmFtZShjaGFyIGNtZCkKK3sKKwlzd2l0Y2ggKGNtZCkKKwl7CisJ CWNhc2UgJyonOgorCQkJcmV0dXJuICJBTEwiOworCQljYXNlIEFDTF9TRUxFQ1RfQ0hSOgorCQkJ cmV0dXJuICJTRUxFQ1QiOworCQljYXNlIEFDTF9JTlNFUlRfQ0hSOgorCQkJcmV0dXJuICJJTlNF UlQiOworCQljYXNlIEFDTF9VUERBVEVfQ0hSOgorCQkJcmV0dXJuICJVUERBVEUiOworCQljYXNl IEFDTF9ERUxFVEVfQ0hSOgorCQkJcmV0dXJuICJERUxFVEUiOworCQlkZWZhdWx0OgorCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBwb2xpY3kgY29tbWFuZCIpOworCX0KK30KKwogLyoKICAq IHBvbGljeV9yb2xlX2xpc3RfdG9fYXJyYXkKICAqCSBoZWxwZXIgZnVuY3Rpb24gdG8gY29udmVy dCBhIGxpc3Qgb2YgUm9sZVNwZWNzIHRvIGFuIGFycmF5IG9mCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKaW5kZXggNTU2YWIwNTdlNWEuLjlhZGFkZjY1NzQzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCkBAIC0zMywxMiArMzMsMTQgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xh c3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wYXJ0aXRpb25lZF90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0 aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3BvbGljeS5oIgog I2luY2x1ZGUgImNvbW1vbi9rZXl3b3Jkcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgog I2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTk0LDYgKzk2LDEwIEBACiAJKChwcmV0dHkpID8gKFBS RVRUWUZMQUdfUEFSRU4gfCBQUkVUVFlGTEFHX0lOREVOVCB8IFBSRVRUWUZMQUdfU0NIRU1BKSBc CiAJIDogUFJFVFRZRkxBR19JTkRFTlQpCiAKKyNkZWZpbmUgR0VUX0RETF9QUkVUVFlfRkxBR1Mo cHJldHR5KSBcCisJKChwcmV0dHkpID8gKFBSRVRUWUZMQUdfUEFSRU4gfCBQUkVUVFlGTEFHX0lO REVOVCB8IFBSRVRUWUZMQUdfU0NIRU1BKSBcCisJIDogMCkKKwogLyogRGVmYXVsdCBsaW5lIGxl bmd0aCBmb3IgcHJldHR5LXByaW50IHdyYXBwaW5nOiAwIG1lYW5zIHdyYXAgYWx3YXlzICovCiAj ZGVmaW5lIFdSQVBfQ09MVU1OX0RFRkFVTFQJCTAKIApAQCAtNTQ2LDYgKzU1MiwxMiBAQCBzdGF0 aWMgdm9pZCBnZXRfanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29u VGFibGVQbGFuICpwbGFuLAogCQkJCQkJCQkJCSAgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAog CQkJCQkJCQkJCSAgYm9vbCBzaG93aW1wbGljaXQsCiAJCQkJCQkJCQkJICBib29sIG5lZWRjb21t YSk7CitzdGF0aWMgdm9pZCBnZXRfZm9ybWF0dGVkX3N0cmluZyhTdHJpbmdJbmZvIGJ1ZiwKKwkJ CQkJCQkJIGludCBwcmV0dHlGbGFncywKKwkJCQkJCQkJIGludCBuVGFiQ2hhcnMsCisJCQkJCQkJ CSBjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDQsIDUpOworc3RhdGlj IGNoYXIgKnBnX2dldF9wb2xpY3lfZGRsX3dvcmtlcihPaWQgdGFibGVJRCwgTmFtZSBwb2xpY3lO YW1lLAorCQkJCQkJCQkJICBpbnQgcHJldHR5RmxhZ3MpOwogCiAjZGVmaW5lIG9ubHlfbWFya2Vy KHJ0ZSkgICgocnRlKS0+aW5oID8gIiIgOiAiT05MWSAiKQogCkBAIC0xMzc0MywzICsxMzc1NSwy MDMgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1zKQogCiAJ cmV0dXJuIGJ1Zi5kYXRhOwogfQorCisvKgorICogZ2V0X2Zvcm1hdHRlZF9zdHJpbmcKKyAqCisg KiBSZXR1cm4gYSBmb3JtYXR0ZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLgorICoKKyAqIHByZXR0 eUZsYWdzIC0gQmFzZWQgb24gcHJldHR5RmxhZ3MgdGhlIG91dHB1dCBpbmNsdWRlcyB0YWJzIChc dCkgYW5kCisgKiAgICAgICAgICAgICAgIG5ld2xpbmVzIChcbikuCisgKiBuVGFiQ2hhcnMgLSBp bmRlbnQgd2l0aCBzcGVjaWZpZWQgbm8gb2YgdGFicy4KKyAqIGZtdCAtIHByaW50Zi1zdHlsZSBm b3JtYXQgc3RyaW5nIHVzZWQgYnkgYXBwZW5kU3RyaW5nSW5mb1ZBLgorICovCitzdGF0aWMgdm9p ZAorZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoU3RyaW5nSW5mbyBidWYsIGludCBwcmV0dHlGbGFncywg aW50IG5UYWJDaGFycywgY29uc3QgY2hhciAqZm10LC4uLikKK3sKKwl2YV9saXN0CQlhcmdzOwor CisJaWYgKHByZXR0eUZsYWdzICYgUFJFVFRZRkxBR19JTkRFTlQpCisJeworCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcihidWYsICdcbicpOworCQkvKiBJbmRlbnQgd2l0aCB0YWJzICovCisJCWZvciAo aW50IGkgPSAwOyBpIDwgblRhYkNoYXJzOyBpKyspCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJ1x0Jyk7CisJCX0KKwl9CisJZWxzZQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihi dWYsICcgJyk7CisKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCWFwcGVuZFN0cmluZ0luZm9WQShi dWYsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworfQorCisvKgorICogcGdfZ2V0X3BvbGlj eV9kZGwKKyAqCisgKiBHZW5lcmF0ZSBhIENSRUFURSBQT0xJQ1kgc3RhdGVtZW50IGZvciB0aGUg c3BlY2lmaWVkIHBvbGljeS4KKyAqCisgKiB0YWJsZUlEIC0gVGFibGUgSUQgb2YgdGhlIHBvbGlj eS4KKyAqIHBvbGljeU5hbWUgLSBOYW1lIG9mIHRoZSBwb2xpY3kgZm9yIHdoaWNoIHRvIGdlbmVy YXRlIHRoZSBEREwuCisgKiBwcmV0dHkgLSBJZiB0cnVlLCBmb3JtYXQgdGhlIERETCB3aXRoIGlu ZGVudGF0aW9uIGFuZCBsaW5lIGJyZWFrcy4KKyAqLworRGF0dW0KK3BnX2dldF9wb2xpY3lfZGRs KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJdGFibGVJRCA9IFBHX0dFVEFSR19PSUQoMCk7 CisJTmFtZQkJcG9saWN5TmFtZSA9IFBHX0dFVEFSR19OQU1FKDEpOworCWJvb2wJCXByZXR0eSA9 IFBHX0dFVEFSR19CT09MKDIpOworCWludAkJCXByZXR0eUZsYWdzOworCWNoYXIJICAgKnJlczsK KworCXByZXR0eUZsYWdzID0gR0VUX0RETF9QUkVUVFlfRkxBR1MocHJldHR5KTsKKwlyZXMgPSBw Z19nZXRfcG9saWN5X2RkbF93b3JrZXIodGFibGVJRCwgcG9saWN5TmFtZSwgcHJldHR5RmxhZ3Mp OworCisJaWYgKHJlcyA9PSBOVUxMKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJUEdfUkVUVVJO X1RFWFRfUChzdHJpbmdfdG9fdGV4dChyZXMpKTsKK30KKworc3RhdGljIGNoYXIgKgorcGdfZ2V0 X3BvbGljeV9kZGxfd29ya2VyKE9pZCB0YWJsZUlELCBOYW1lIHBvbGljeU5hbWUsIGludCBwcmV0 dHlGbGFncykKK3sKKwlib29sCQlhdHRySXNOdWxsOworCURhdHVtCQl2YWx1ZURhdHVtOworCUhl YXBUdXBsZQl0dXBsZVBvbGljeTsKKwlSZWxhdGlvbglwZ1BvbGljeVJlbDsKKwljaGFyCSAgICp0 YXJnZXRUYWJsZTsKKwlTY2FuS2V5RGF0YSBza2V5WzJdOworCVN5c1NjYW5EZXNjIHNzY2FuOwor CUZvcm1fcGdfcG9saWN5IHBvbGljeUZvcm07CisJU3RyaW5nSW5mb0RhdGEgYnVmOworCisJLyog VmFsaWRhdGUgdGhhdCB0aGUgcmVsYXRpb24gZXhpc3RzICovCisJaWYgKCFPaWRJc1ZhbGlkKHRh YmxlSUQpIHx8IGdldF9yZWxfbmFtZSh0YWJsZUlEKSA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsK KworCWluaXRTdHJpbmdJbmZvKCZidWYpOworCisJdGFyZ2V0VGFibGUgPSBnZW5lcmF0ZV9xdWFs aWZpZWRfcmVsYXRpb25fbmFtZSh0YWJsZUlEKTsKKwkvKiBGaW5kIHBvbGljeSB0byBiZWdpbiBz Y2FuICovCisJcGdQb2xpY3lSZWwgPSB0YWJsZV9vcGVuKFBvbGljeVJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwkvKiBTZXQga2V5IC0gcG9saWN5J3MgcmVsYXRpb24gaWQuICovCisJ U2NhbktleUluaXQoJnNrZXlbMF0sCisJCQkJQW51bV9wZ19wb2xpY3lfcG9scmVsaWQsCisJCQkJ QlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0odGFi bGVJRCkpOworCisJLyogU2V0IGtleSAtIHBvbGljeSdzIG5hbWUuICovCisJU2NhbktleUluaXQo JnNrZXlbMV0sCisJCQkJQW51bV9wZ19wb2xpY3lfcG9sbmFtZSwKKwkJCQlCVEVxdWFsU3RyYXRl Z3lOdW1iZXIsIEZfTkFNRUVRLAorCQkJCUNTdHJpbmdHZXREYXR1bShOYW1lU3RyKCpwb2xpY3lO YW1lKSkpOworCisJc3NjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdQb2xpY3lSZWwsCisJCQkJ CQkJICAgUG9saWN5UG9scmVsaWRQb2xuYW1lSW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMiwKKwkJCQkJ CQkgICBza2V5KTsKKworCXR1cGxlUG9saWN5ID0gc3lzdGFibGVfZ2V0bmV4dChzc2Nhbik7CisJ LyogQ2hlY2sgdGhhdCB0aGUgcG9saWN5IGlzIGZvdW5kLCByYWlzZSBhbiBlcnJvciBpZiBub3Qu ICovCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlUG9saWN5KSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2co InBvbGljeSBcIiVzXCIgZm9yIHRhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlO YW1lU3RyKCpwb2xpY3lOYW1lKSwKKwkJCQkJCXRhcmdldFRhYmxlKSkpOworCisJcG9saWN5Rm9y bSA9IChGb3JtX3BnX3BvbGljeSkgR0VUU1RSVUNUKHR1cGxlUG9saWN5KTsKKworCS8qIEJ1aWxk IHRoZSBDUkVBVEUgUE9MSUNZIHN0YXRlbWVudCAqLworCWFwcGVuZFN0cmluZ0luZm8oJmJ1Ziwg IkNSRUFURSBQT0xJQ1kgJXMgT04gJXMiLAorCQkJCQkgcXVvdGVfaWRlbnRpZmllcihOYW1lU3Ry KCpwb2xpY3lOYW1lKSksCisJCQkJCSB0YXJnZXRUYWJsZSk7CisKKwkvKiBDaGVjayB0aGUgdHlw ZSBpcyBQRVJNSVNTSVZFIG9yIFJFU1RSSUNUSVZFICovCisJZ2V0X2Zvcm1hdHRlZF9zdHJpbmco JmJ1ZiwgcHJldHR5RmxhZ3MsIDEsCisJCQkJCQkgcG9saWN5Rm9ybS0+cG9scGVybWlzc2l2ZSA/ ICJBUyBQRVJNSVNTSVZFIiA6ICJBUyBSRVNUUklDVElWRSIpOworCisJLyogQ2hlY2sgY29tbWFu ZCB0byB3aGljaCB0aGUgcG9saWN5IGFwcGxpZXMgKi8KKwlnZXRfZm9ybWF0dGVkX3N0cmluZygm YnVmLCBwcmV0dHlGbGFncywgMSwgIkZPUiAlcyIsCisJCQkJCQkgZ2V0X3BvbGljeV9jbWRfbmFt ZShwb2xpY3lGb3JtLT5wb2xjbWQpKTsKKworCS8qIENoZWNrIGlmIHRoZSBwb2xpY3kgaGFzIGEg VE8gbGlzdCAqLworCXZhbHVlRGF0dW0gPSBoZWFwX2dldGF0dHIodHVwbGVQb2xpY3ksCisJCQkJ CQkJICBBbnVtX3BnX3BvbGljeV9wb2xyb2xlcywKKwkJCQkJCQkgIFJlbGF0aW9uR2V0RGVzY3Io cGdQb2xpY3lSZWwpLAorCQkJCQkJCSAgJmF0dHJJc051bGwpOworCWlmICghYXR0cklzTnVsbCkK Kwl7CisJCUFycmF5VHlwZSAgKnBvbGljeV9yb2xlcyA9IERhdHVtR2V0QXJyYXlUeXBlUENvcHko dmFsdWVEYXR1bSk7CisJCWludAkJCW5pdGVtcyA9IEFSUl9ESU1TKHBvbGljeV9yb2xlcylbMF07 CisJCU9pZAkJICAgKnJvbGVzID0gKE9pZCAqKSBBUlJfREFUQV9QVFIocG9saWN5X3JvbGVzKTsK KwkJU3RyaW5nSW5mb0RhdGEgcm9sZV9uYW1lczsKKworCQlpbml0U3RyaW5nSW5mbygmcm9sZV9u YW1lcyk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKwkJeworCQkJaWYg KE9pZElzVmFsaWQocm9sZXNbaV0pKQorCQkJeworCQkJCWNoYXIJICAgKnJvbGVuYW1lID0gR2V0 VXNlck5hbWVGcm9tSWQocm9sZXNbaV0sIGZhbHNlKTsKKworCQkJCWlmIChpID4gMCkKKwkJCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcm9sZV9uYW1lcywgIiwgIik7CisJCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmcm9sZV9uYW1lcywgcm9sZW5hbWUpOworCQkJfQorCQl9CisKKwkJaWYg KHJvbGVfbmFtZXMubGVuID4gMCkKKwkJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKCZidWYsIHByZXR0 eUZsYWdzLCAxLCAiVE8gJXMiLCByb2xlX25hbWVzLmRhdGEpOworCQllbHNlCisKKwkJCS8qCisJ CQkgKiBXaGVuIG5vIHNwZWNpZmljIHJvbGUgaXMgcHJvdmlkZWQsIGdlbmVyYXRlIHRoZSBUTyBj bGF1c2Ugd2l0aAorCQkJICogdGhlIFBVQkxJQyByb2xlLgorCQkJICovCisJCQlnZXRfZm9ybWF0 dGVkX3N0cmluZygmYnVmLCBwcmV0dHlGbGFncywgMSwgIlRPIFBVQkxJQyIpOworCX0KKworCS8q IENoZWNrIGlmIHRoZSBwb2xpY3kgaGFzIGEgVVNJTkcgZXhwciAqLworCXZhbHVlRGF0dW0gPSBo ZWFwX2dldGF0dHIodHVwbGVQb2xpY3ksCisJCQkJCQkJICBBbnVtX3BnX3BvbGljeV9wb2xxdWFs LAorCQkJCQkJCSAgUmVsYXRpb25HZXREZXNjcihwZ1BvbGljeVJlbCksCisJCQkJCQkJICAmYXR0 cklzTnVsbCk7CisJaWYgKCFhdHRySXNOdWxsKQorCXsKKwkJdGV4dAkgICAqZXhwcnRleHQgPSBE YXR1bUdldFRleHRQUCh2YWx1ZURhdHVtKTsKKwkJdGV4dAkgICAqdXNpbmdFeHByZXNzaW9uID0g cGdfZ2V0X2V4cHJfd29ya2VyKGV4cHJ0ZXh0LAorCQkJCQkJCQkJCQkJCQkgcG9saWN5Rm9ybS0+ cG9scmVsaWQsCisJCQkJCQkJCQkJCQkJCSBwcmV0dHlGbGFncyk7CisKKwkJZ2V0X2Zvcm1hdHRl ZF9zdHJpbmcoJmJ1ZiwgcHJldHR5RmxhZ3MsIDEsICJVU0lORyAoJXMpIiwKKwkJCQkJCQkgdGV4 dF90b19jc3RyaW5nKHVzaW5nRXhwcmVzc2lvbikpOworCX0KKworCS8qIENoZWNrIGlmIHRoZSBw b2xpY3kgaGFzIGEgV0lUSCBDSEVDSyBleHByICovCisJdmFsdWVEYXR1bSA9IGhlYXBfZ2V0YXR0 cih0dXBsZVBvbGljeSwKKwkJCQkJCQkgIEFudW1fcGdfcG9saWN5X3BvbHdpdGhjaGVjaywKKwkJ CQkJCQkgIFJlbGF0aW9uR2V0RGVzY3IocGdQb2xpY3lSZWwpLAorCQkJCQkJCSAgJmF0dHJJc051 bGwpOworCWlmICghYXR0cklzTnVsbCkKKwl7CisJCXRleHQJICAgKmV4cHJ0ZXh0ID0gRGF0dW1H ZXRUZXh0UFAodmFsdWVEYXR1bSk7CisJCXRleHQJICAgKmNoZWNrRXhwcmVzc2lvbiA9IHBnX2dl dF9leHByX3dvcmtlcihleHBydGV4dCwKKwkJCQkJCQkJCQkJCQkJIHBvbGljeUZvcm0tPnBvbHJl bGlkLAorCQkJCQkJCQkJCQkJCQkgcHJldHR5RmxhZ3MpOworCisJCWdldF9mb3JtYXR0ZWRfc3Ry aW5nKCZidWYsIHByZXR0eUZsYWdzLCAxLCAiV0lUSCBDSEVDSyAoJXMpIiwKKwkJCQkJCQkgdGV4 dF90b19jc3RyaW5nKGNoZWNrRXhwcmVzc2lvbikpOworCX0KKworCWFwcGVuZFN0cmluZ0luZm9D aGFyKCZidWYsICc7Jyk7CisKKwkvKiBDbGVhbiB1cC4gKi8KKwlzeXN0YWJsZV9lbmRzY2FuKHNz Y2FuKTsKKwl0YWJsZV9jbG9zZShwZ1BvbGljeVJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJl dHVybiBidWYuZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGFhYWRmZDhjNzQ4 Li41MGZiMjZmNmIxZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC00MDIxLDYgKzQwMjEs OSBAQAogICBwcm9uYW1lID0+ICdwZ19nZXRfZnVuY3Rpb25fc3FsYm9keScsIHByb3ZvbGF0aWxl ID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAog ICBwcm9zcmMgPT4gJ3BnX2dldF9mdW5jdGlvbl9zcWxib2R5JyB9LAoreyBvaWQgPT4gJzg4MTEn LCBkZXNjciA9PiAnZ2V0IENSRUFURSBzdGF0ZW1lbnQgZm9yIHBvbGljeScsCisgIHByb25hbWUg PT4gJ3BnX2dldF9wb2xpY3lfZGRsJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ3R5 cGVzID0+ICdyZWdjbGFzcyBuYW1lIGJvb2wnLCBwcm9zcmMgPT4gJ3BnX2dldF9wb2xpY3lfZGRs JyB9LAogCiB7IG9pZCA9PiAnMTY4NicsIGRlc2NyID0+ICdsaXN0IG9mIFNRTCBrZXl3b3Jkcycs CiAgIHByb25hbWUgPT4gJ3BnX2dldF9rZXl3b3JkcycsIHByb2Nvc3QgPT4gJzEwJywgcHJvcm93 cyA9PiAnNTAwJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3BvbGljeS5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvcG9saWN5LmgKaW5kZXggZjA2YWExZGY0MzkuLjQwZTQ1Yjcz OGY0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wb2xpY3kuaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9wb2xpY3kuaApAQCAtMzUsNCArMzUsNiBAQCBleHRlcm4gT2JqZWN0 QWRkcmVzcyByZW5hbWVfcG9saWN5KFJlbmFtZVN0bXQgKnN0bXQpOwogCiBleHRlcm4gYm9vbCBy ZWxhdGlvbl9oYXNfcG9saWNpZXMoUmVsYXRpb24gcmVsKTsKIAorZXh0ZXJuIGNoYXIgKmdldF9w b2xpY3lfY21kX25hbWUoY2hhciBjbWQpOworCiAjZW5kaWYJCQkJCQkJLyogUE9MSUNZX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKaW5kZXggYzk1OGVmNGQ3 MGEuLjRlYmUzMjcxMWNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jv d3NlY3VyaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5 Lm91dApAQCAtNTEwMSwxMSArNTEwMSwyMTQgQEAgcmVzZXQgcmxzX3Rlc3QuYmxhaDsKIGRyb3Ag ZnVuY3Rpb24gcmxzX2YodGV4dCk7CiBkcm9wIHRhYmxlIHJsc190LCB0ZXN0X3Q7CiAtLQorLS0g VGVzdCBmb3IgcGdfZ2V0X3BvbGljeV9kZGwodGFibGVOYW1lLCBwb2xpY3lOYW1lLCBwcmV0dHkp IGZ1bmN0aW9uLgorLS0KK0NSRUFURSBUQUJMRSBybHNfdGJsXzEgKAorICAgIGRpZCAgICAgICAg IGludCBwcmltYXJ5IGtleSwKKyAgICBjaWQgICAgICAgICBpbnQsCisgICAgZGxldmVsICAgICAg aW50IG5vdCBudWxsLAorICAgIGRhdXRob3IgICAgIG5hbWUsCisgICAgZHRpdGxlICAgICAgdGV4 dAorKTsKK0dSQU5UIEFMTCBPTiBybHNfdGJsXzEgVE8gcHVibGljOworQ1JFQVRFIFRBQkxFIHJs c190YmxfMiAoCisgICAgcGd1c2VyICAgICAgbmFtZSBwcmltYXJ5IGtleSwKKyAgICBzZWNsdiAg ICAgICBpbnQKKyk7CitHUkFOVCBTRUxFQ1QgT04gcmxzX3RibF8yIFRPIHB1YmxpYzsKKy0tIFRl c3QgUEVSTUlTU0lWRSBhbmQgUkVTVFJJQ1RJVkUKK0NSRUFURSBQT0xJQ1kgcmxzX3AxIE9OIHJs c190YmxfMSBBUyBQRVJNSVNTSVZFCisgICAgVVNJTkcgKGRsZXZlbCA8PSAoU0VMRUNUIHNlY2x2 IEZST00gcmxzX3RibF8yIFdIRVJFIHBndXNlciA9IGN1cnJlbnRfdXNlcikpOworQ1JFQVRFIFBP TElDWSBybHNfcDIgT04gcmxzX3RibF8xIEFTIFJFU1RSSUNUSVZFIFVTSU5HIChjaWQgPD4gNDQg QU5EIGNpZCA8IDUwKTsKKy0tIFRlc3QgRk9SIEFMTCB8IFNFTEVDVCB8IElOU0VSVCB8IFVQREFU RSB8IERFTEVURQorQ1JFQVRFIFBPTElDWSBybHNfcDMgT04gcmxzX3RibF8xIEZPUiBBTEwgVVNJ TkcgKGRhdXRob3IgPSBjdXJyZW50X3VzZXIpOworQ1JFQVRFIFBPTElDWSBybHNfcDQgT04gcmxz X3RibF8xIEZPUiBTRUxFQ1QgVVNJTkcgKGNpZCAlIDIgPSAwKTsKK0NSRUFURSBQT0xJQ1kgcmxz X3A1IE9OIHJsc190YmxfMSBGT1IgSU5TRVJUIFdJVEggQ0hFQ0sgKGNpZCAlIDIgPSAxKTsKK0NS RUFURSBQT0xJQ1kgcmxzX3A2IE9OIHJsc190YmxfMSBGT1IgVVBEQVRFIFVTSU5HIChjaWQgJSAy ID0gMCk7CitDUkVBVEUgUE9MSUNZIHJsc19wNyBPTiBybHNfdGJsXzEgRk9SIERFTEVURSBVU0lO RyAoY2lkIDwgOCk7CistLSBUZXN0IFRPIHsgcm9sZV9uYW1lIC4uLiB9CitDUkVBVEUgUE9MSUNZ IHJsc19wOCBPTiBybHNfdGJsXzEgVE8gcmVncmVzc19ybHNfZGF2ZSwgcmVncmVzc19ybHNfYWxp Y2UgVVNJTkcgKHRydWUpOworQ1JFQVRFIFBPTElDWSBybHNfcDkgT04gcmxzX3RibF8xIFRPIHJl Z3Jlc3NfcmxzX2V4ZW1wdF91c2VyIFdJVEggQ0hFQ0sgKGNpZCA9IChTRUxFQ1Qgc2VjbHYgRlJP TSBybHNfdGJsXzIpKTsKKy0tIFRlc3QgTlVMTCB2YWx1ZQorU0VMRUNUIHBnX2dldF9wb2xpY3lf ZGRsKE5VTEwsICdybHNfcDEnKTsKKyBwZ19nZXRfcG9saWN5X2RkbCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCd0YWIxJywgTlVM TCk7CitFUlJPUjogIHJlbGF0aW9uICJ0YWIxIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxF Q1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3RhYjEnLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbChOVUxMLCBOVUxMKTsKKyBw Z19nZXRfcG9saWN5X2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0g VGVzdCAtMSBhcyB0YWJsZSBvaWQKKyBTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoLTEsICdybHNf cDEnKTsKKyBwZ19nZXRfcG9saWN5X2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworLS0gVGFibGUgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgn dGFiMScsICdybHNfcDEnKTsKK0VSUk9SOiAgcmVsYXRpb24gInRhYjEiIGRvZXMgbm90IGV4aXN0 CitMSU5FIDE6IFNFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgndGFiMScsICdybHNfcDEnKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFBvbGljeSBkb2VzIG5vdCBleGlz dAorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncG9sMScpOworRVJST1I6 ICBwb2xpY3kgInBvbDEiIGZvciB0YWJsZSAicmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMSIg ZG9lcyBub3QgZXhpc3QKKy0tIFdpdGhvdXQgUHJldHR5IGZvcm1hdHRlZAorU0VMRUNUIHBnX2dl dF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AxJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X3BvbGljeV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFBPTElDWSBybHNfcDEgT04gcmVncmVzc19ybHNfc2No ZW1hLnJsc190YmxfMSBBUyBQRVJNSVNTSVZFIEZPUiBBTEwgVE8gUFVCTElDIFVTSU5HICgoZGxl dmVsIDw9IChTRUxFQ1QgcmxzX3RibF8yLnNlY2x2IEZST00gcmxzX3RibF8yIFdIRVJFIChybHNf dGJsXzIucGd1c2VyID0gQ1VSUkVOVF9VU0VSKSkpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dl dF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AyJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBDUkVBVEUgUE9MSUNZIHJsc19wMiBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3Ri bF8xIEFTIFJFU1RSSUNUSVZFIEZPUiBBTEwgVE8gUFVCTElDIFVTSU5HICgoKGNpZCA8PiA0NCkg QU5EIChjaWQgPCA1MCkpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdy bHNfdGJsXzEnLCAncmxzX3AzJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQT0xJQ1kgcmxz X3AzIE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEgQVMgUEVSTUlTU0lWRSBGT1IgQUxM IFRPIFBVQkxJQyBVU0lORyAoKGRhdXRob3IgPSBDVVJSRU5UX1VTRVIpKTsKKygxIHJvdykKKwor U0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A0Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2Rk bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENS RUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEgQVMgUEVS TUlTU0lWRSBGT1IgU0VMRUNUIFRPIFBVQkxJQyBVU0lORyAoKChjaWQgJSAyKSA9IDApKTsKKygx IHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A1Jyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUE9MSUNZIHJsc19wNSBPTiByZWdyZXNzX3Jsc19zY2hl bWEucmxzX3RibF8xIEFTIFBFUk1JU1NJVkUgRk9SIElOU0VSVCBUTyBQVUJMSUMgV0lUSCBDSEVD SyAoKChjaWQgJSAyKSA9IDEpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRs KCdybHNfdGJsXzEnLCAncmxzX3A2JywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3BvbGljeV9kZGwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUE9MSUNZIHJsc19w NiBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xIEFTIFBFUk1JU1NJVkUgRk9SIFVQREFU RSBUTyBQVUJMSUMgVVNJTkcgKCgoY2lkICUgMikgPSAwKSk7CisoMSByb3cpCisKK1NFTEVDVCBw Z19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNycsIGZhbHNlKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wb2xpY3lfZGRsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFBPTElDWSBy bHNfcDcgT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMSBBUyBQRVJNSVNTSVZFIEZPUiBE RUxFVEUgVE8gUFVCTElDIFVTSU5HICgoY2lkIDwgOCkpOworKDEgcm93KQorCitTRUxFQ1QgcGdf Z2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDgnLCBmYWxzZSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wb2xp Y3lfZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQT0xJQ1kgcmxzX3A4IE9OIHJlZ3Jlc3Nf cmxzX3NjaGVtYS5ybHNfdGJsXzEgQVMgUEVSTUlTU0lWRSBGT1IgQUxMIFRPIHJlZ3Jlc3Nfcmxz X2RhdmUsIHJlZ3Jlc3NfcmxzX2FsaWNlIFVTSU5HICh0cnVlKTsKKygxIHJvdykKKworU0VMRUNU IHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A5JywgZmFsc2UpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUE9MSUNZ IHJsc19wOSBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xIEFTIFBFUk1JU1NJVkUgRk9S IEFMTCBUTyByZWdyZXNzX3Jsc19leGVtcHRfdXNlciBXSVRIIENIRUNLICgoY2lkID0gKFNFTEVD VCBybHNfdGJsXzIuc2VjbHYgRlJPTSBybHNfdGJsXzIpKSk7CisoMSByb3cpCisKKy0tIFdpdGgg UHJldHR5IGZvcm1hdHRlZAorXHBzZXQgZm9ybWF0IHVuYWxpZ25lZAorU0VMRUNUIHBnX2dldF9w b2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AxJywgdHJ1ZSk7CitwZ19nZXRfcG9saWN5X2Rk bAorQ1JFQVRFIFBPTElDWSBybHNfcDEgT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMQor CUFTIFBFUk1JU1NJVkUKKwlGT1IgQUxMCisJVE8gUFVCTElDCisJVVNJTkcgKGRsZXZlbCA8PSAo KCBTRUxFQ1QgcmxzX3RibF8yLnNlY2x2CisgICBGUk9NIHJsc190YmxfMgorICBXSEVSRSBybHNf dGJsXzIucGd1c2VyID0gQ1VSUkVOVF9VU0VSKSkpOworKDEgcm93KQorU0VMRUNUIHBnX2dldF9w b2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AyJywgdHJ1ZSk7CitwZ19nZXRfcG9saWN5X2Rk bAorQ1JFQVRFIFBPTElDWSBybHNfcDIgT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMQor CUFTIFJFU1RSSUNUSVZFCisJRk9SIEFMTAorCVRPIFBVQkxJQworCVVTSU5HIChjaWQgPD4gNDQg QU5EIGNpZCA8IDUwKTsKKygxIHJvdykKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3Ri bF8xJywgJ3Jsc19wMycsIHRydWUpOworcGdfZ2V0X3BvbGljeV9kZGwKK0NSRUFURSBQT0xJQ1kg cmxzX3AzIE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEKKwlBUyBQRVJNSVNTSVZFCisJ Rk9SIEFMTAorCVRPIFBVQkxJQworCVVTSU5HIChkYXV0aG9yID0gQ1VSUkVOVF9VU0VSKTsKKygx IHJvdykKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNCcsIHRy dWUpOworcGdfZ2V0X3BvbGljeV9kZGwKK0NSRUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJlZ3Jlc3Nf cmxzX3NjaGVtYS5ybHNfdGJsXzEKKwlBUyBQRVJNSVNTSVZFCisJRk9SIFNFTEVDVAorCVRPIFBV QkxJQworCVVTSU5HICgoY2lkICUgMikgPSAwKTsKKygxIHJvdykKK1NFTEVDVCBwZ19nZXRfcG9s aWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNScsIHRydWUpOworcGdfZ2V0X3BvbGljeV9kZGwK K0NSRUFURSBQT0xJQ1kgcmxzX3A1IE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEKKwlB UyBQRVJNSVNTSVZFCisJRk9SIElOU0VSVAorCVRPIFBVQkxJQworCVdJVEggQ0hFQ0sgKChjaWQg JSAyKSA9IDEpOworKDEgcm93KQorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEn LCAncmxzX3A2JywgdHJ1ZSk7CitwZ19nZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElDWSBybHNf cDYgT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMQorCUFTIFBFUk1JU1NJVkUKKwlGT1Ig VVBEQVRFCisJVE8gUFVCTElDCisJVVNJTkcgKChjaWQgJSAyKSA9IDApOworKDEgcm93KQorU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A3JywgdHJ1ZSk7CitwZ19n ZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElDWSBybHNfcDcgT04gcmVncmVzc19ybHNfc2NoZW1h LnJsc190YmxfMQorCUFTIFBFUk1JU1NJVkUKKwlGT1IgREVMRVRFCisJVE8gUFVCTElDCisJVVNJ TkcgKGNpZCA8IDgpOworKDEgcm93KQorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJs XzEnLCAncmxzX3A4JywgdHJ1ZSk7CitwZ19nZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElDWSBy bHNfcDggT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMQorCUFTIFBFUk1JU1NJVkUKKwlG T1IgQUxMCisJVE8gcmVncmVzc19ybHNfZGF2ZSwgcmVncmVzc19ybHNfYWxpY2UKKwlVU0lORyAo dHJ1ZSk7CisoMSByb3cpCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdy bHNfcDknLCB0cnVlKTsKK3BnX2dldF9wb2xpY3lfZGRsCitDUkVBVEUgUE9MSUNZIHJsc19wOSBP TiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xCisJQVMgUEVSTUlTU0lWRQorCUZPUiBBTEwK KwlUTyByZWdyZXNzX3Jsc19leGVtcHRfdXNlcgorCVdJVEggQ0hFQ0sgKGNpZCA9ICgoIFNFTEVD VCBybHNfdGJsXzIuc2VjbHYKKyAgIEZST00gcmxzX3RibF8yKSkpOworKDEgcm93KQorLS0gQ2xl YW4gdXAgb2JqZWN0cyBjcmVhdGVkIGZvciB0ZXN0aW5nIHBnX2dldF9wb2xpY3lfZGRsIGZ1bmN0 aW9uLgorRFJPUCBQT0xJQ1kgcmxzX3AxIE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19w MiBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDMgT04gcmxzX3RibF8xOworRFJPUCBQ T0xJQ1kgcmxzX3A0IE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJs XzE7CitEUk9QIFBPTElDWSBybHNfcDYgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxzX3A3 IE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzE7CitEUk9QIFBP TElDWSBybHNfcDkgT04gcmxzX3RibF8xOworLS0KIC0tIENsZWFuIHVwIG9iamVjdHMKIC0tCiBS RVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CiBEUk9QIFNDSEVNQSByZWdyZXNzX3Jsc19zY2hl bWEgQ0FTQ0FERTsKLU5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMzAgb3RoZXIgb2JqZWN0cwor Tk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAzMiBvdGhlciBvYmplY3RzCiBERVRBSUw6ICBkcm9w IGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZfbGVhayh0ZXh0KQogZHJvcCBjYXNjYWRlcyB0byB0YWJs ZSB1YWNjb3VudAogZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjYXRlZ29yeQpAQCAtNTEzNiw2ICs1 MzM5LDggQEAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBkZXAxCiBkcm9wIGNhc2NhZGVzIHRvIHRh YmxlIGRlcDIKIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgZG9iX3QxCiBkcm9wIGNhc2NhZGVzIHRv IHRhYmxlIGRvYl90MgorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBybHNfdGJsXzEKK2Ryb3AgY2Fz Y2FkZXMgdG8gdGFibGUgcmxzX3RibF8yCiBEUk9QIFVTRVIgcmVncmVzc19ybHNfYWxpY2U7CiBE Uk9QIFVTRVIgcmVncmVzc19ybHNfYm9iOwogRFJPUCBVU0VSIHJlZ3Jlc3NfcmxzX2Nhcm9sOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsCmluZGV4IDVkOTIzYzVjYTNiLi5iOTBmNTMw OTU3OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbApAQCAtMjU0Miw2ICsyNTQy LDg2IEBAIHJlc2V0IHJsc190ZXN0LmJsYWg7CiBkcm9wIGZ1bmN0aW9uIHJsc19mKHRleHQpOwog ZHJvcCB0YWJsZSBybHNfdCwgdGVzdF90OwogCistLQorLS0gVGVzdCBmb3IgcGdfZ2V0X3BvbGlj eV9kZGwodGFibGVOYW1lLCBwb2xpY3lOYW1lLCBwcmV0dHkpIGZ1bmN0aW9uLgorLS0KK0NSRUFU RSBUQUJMRSBybHNfdGJsXzEgKAorICAgIGRpZCAgICAgICAgIGludCBwcmltYXJ5IGtleSwKKyAg ICBjaWQgICAgICAgICBpbnQsCisgICAgZGxldmVsICAgICAgaW50IG5vdCBudWxsLAorICAgIGRh dXRob3IgICAgIG5hbWUsCisgICAgZHRpdGxlICAgICAgdGV4dAorKTsKK0dSQU5UIEFMTCBPTiBy bHNfdGJsXzEgVE8gcHVibGljOworQ1JFQVRFIFRBQkxFIHJsc190YmxfMiAoCisgICAgcGd1c2Vy ICAgICAgbmFtZSBwcmltYXJ5IGtleSwKKyAgICBzZWNsdiAgICAgICBpbnQKKyk7CitHUkFOVCBT RUxFQ1QgT04gcmxzX3RibF8yIFRPIHB1YmxpYzsKKworLS0gVGVzdCBQRVJNSVNTSVZFIGFuZCBS RVNUUklDVElWRQorQ1JFQVRFIFBPTElDWSBybHNfcDEgT04gcmxzX3RibF8xIEFTIFBFUk1JU1NJ VkUKKyAgICBVU0lORyAoZGxldmVsIDw9IChTRUxFQ1Qgc2VjbHYgRlJPTSBybHNfdGJsXzIgV0hF UkUgcGd1c2VyID0gY3VycmVudF91c2VyKSk7CitDUkVBVEUgUE9MSUNZIHJsc19wMiBPTiBybHNf dGJsXzEgQVMgUkVTVFJJQ1RJVkUgVVNJTkcgKGNpZCA8PiA0NCBBTkQgY2lkIDwgNTApOworCist LSBUZXN0IEZPUiBBTEwgfCBTRUxFQ1QgfCBJTlNFUlQgfCBVUERBVEUgfCBERUxFVEUKK0NSRUFU RSBQT0xJQ1kgcmxzX3AzIE9OIHJsc190YmxfMSBGT1IgQUxMIFVTSU5HIChkYXV0aG9yID0gY3Vy cmVudF91c2VyKTsKK0NSRUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJsc190YmxfMSBGT1IgU0VMRUNU IFVTSU5HIChjaWQgJSAyID0gMCk7CitDUkVBVEUgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJsXzEg Rk9SIElOU0VSVCBXSVRIIENIRUNLIChjaWQgJSAyID0gMSk7CitDUkVBVEUgUE9MSUNZIHJsc19w NiBPTiBybHNfdGJsXzEgRk9SIFVQREFURSBVU0lORyAoY2lkICUgMiA9IDApOworQ1JFQVRFIFBP TElDWSBybHNfcDcgT04gcmxzX3RibF8xIEZPUiBERUxFVEUgVVNJTkcgKGNpZCA8IDgpOworCist LSBUZXN0IFRPIHsgcm9sZV9uYW1lIC4uLiB9CitDUkVBVEUgUE9MSUNZIHJsc19wOCBPTiBybHNf dGJsXzEgVE8gcmVncmVzc19ybHNfZGF2ZSwgcmVncmVzc19ybHNfYWxpY2UgVVNJTkcgKHRydWUp OworQ1JFQVRFIFBPTElDWSBybHNfcDkgT04gcmxzX3RibF8xIFRPIHJlZ3Jlc3NfcmxzX2V4ZW1w dF91c2VyIFdJVEggQ0hFQ0sgKGNpZCA9IChTRUxFQ1Qgc2VjbHYgRlJPTSBybHNfdGJsXzIpKTsK KworLS0gVGVzdCBOVUxMIHZhbHVlCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoTlVMTCwgJ3Js c19wMScpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCd0YWIxJywgTlVMTCk7CitTRUxFQ1Qg cGdfZ2V0X3BvbGljeV9kZGwoTlVMTCwgTlVMTCk7CisKKy0tIFRlc3QgLTEgYXMgdGFibGUgb2lk CisgU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKC0xLCAncmxzX3AxJyk7CisKKy0tIFRhYmxlIGRv ZXMgbm90IGV4aXN0CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3RhYjEnLCAncmxzX3AxJyk7 CistLSBQb2xpY3kgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxz X3RibF8xJywgJ3BvbDEnKTsKKworLS0gV2l0aG91dCBQcmV0dHkgZm9ybWF0dGVkCitTRUxFQ1Qg cGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDEnKTsKK1NFTEVDVCBwZ19nZXRf cG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wMicpOworU0VMRUNUIHBnX2dldF9wb2xpY3lf ZGRsKCdybHNfdGJsXzEnLCAncmxzX3AzJyk7CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Js c190YmxfMScsICdybHNfcDQnKTsKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8x JywgJ3Jsc19wNScpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxz X3A2JywgZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxz X3A3JywgZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxz X3A4JywgZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxz X3A5JywgZmFsc2UpOworCistLSBXaXRoIFByZXR0eSBmb3JtYXR0ZWQKK1xwc2V0IGZvcm1hdCB1 bmFsaWduZWQKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wMScs IHRydWUpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AyJywg dHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDMnLCB0 cnVlKTsKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNCcsIHRy dWUpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A1JywgdHJ1 ZSk7CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDYnLCB0cnVl KTsKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNycsIHRydWUp OworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A4JywgdHJ1ZSk7 CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDknLCB0cnVlKTsK KworLS0gQ2xlYW4gdXAgb2JqZWN0cyBjcmVhdGVkIGZvciB0ZXN0aW5nIHBnX2dldF9wb2xpY3lf ZGRsIGZ1bmN0aW9uLgorRFJPUCBQT0xJQ1kgcmxzX3AxIE9OIHJsc190YmxfMTsKK0RST1AgUE9M SUNZIHJsc19wMiBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDMgT04gcmxzX3RibF8x OworRFJPUCBQT0xJQ1kgcmxzX3A0IE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wNSBP TiBybHNfdGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDYgT04gcmxzX3RibF8xOworRFJPUCBQT0xJ Q1kgcmxzX3A3IE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzE7 CitEUk9QIFBPTElDWSBybHNfcDkgT04gcmxzX3RibF8xOworCiAtLQogLS0gQ2xlYW4gdXAgb2Jq ZWN0cwogLS0KLS0gCjIuNTEuMAoK --00000000000096860f0644034d0d--