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 1vxlpk-00H7On-38 for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Mar 2026 13:00:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxlpj-00Ciez-1K for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Mar 2026 13:00:11 +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 1vxlpi-00Cieq-2D for pgsql-hackers@lists.postgresql.org; Wed, 04 Mar 2026 13:00:11 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vxlpg-00000000NGv-1WTT for pgsql-hackers@postgresql.org; Wed, 04 Mar 2026 13:00:09 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-6610bd5f322so627710a12.1 for ; Wed, 04 Mar 2026 05:00:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772629207; cv=none; d=google.com; s=arc-20240605; b=Rt8uK2W3cH0b7oUgDxm2yxjQEtL/R85DHTBLwh49x2zhrs4qEqM7vqngelXVDj3KeE v3BIJFQOiY85lTZZV9cydJtqC6Gbyg6nDFStB11MiXT3UNgL9hglHjwFuZOa+bONi39n A1FAyJStXlm7rXhOi8gXEsbOZGyR0rT/1bBmRulr+riXKA1njCkfwJEhWOp1i5f3e4gY FVSJXPYi90+tiln3aQPJhHKYxLgU0FcJP01nftyO4ZSAnR2AEgu5ay2Cdq7SWgw5iC6e KcERdEUHNfVMVm3Hl/2DmfrEzkvDB95KJIhmDpiJHZI7zkb02yG/QIs+w+W1u9eKX9pd kIsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=1JEF8PqqXf42uOmkwjy3o4IFqlOqL6vkPCElMxb4pgI=; fh=CWdohMtfzL2JDO4Jshy3OITfaJE0OqHq/eXG3zVR/Xg=; b=jUpWu3MonrszAHawSCI8OEj63ShsW5zjajVHxJ/qxZeMRBLZxV+YQc0y/yQDRueshy L3yR5Az90Z/ST8BXdoorEknvCUm2+4IzOnKaRPIzmEi5JZGa9Mgbxu9pcgGiOmHKDw1U WFEVEgWki3qtfbzf1wV5Hv9W1qrMsLVePCgMUAKyzXbG3HwvpKD3/NUDuynyKuXFM2Lh ipqgTUFCE2ou6lX7RNmji+cklm4O3d6sGfwDGXRSsYHosXu+UwG5AOWFIaRZJwM2byPr HjTqka2/ejIcSi/ghZ780wGzjbb/JCfMxLlt5dB6L21eUUDhmbK+BUwhTya8gejXlZ8D zrhw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1772629207; x=1773234007; 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=1JEF8PqqXf42uOmkwjy3o4IFqlOqL6vkPCElMxb4pgI=; b=bMAp4LyInHOsVMNMtyob+XrumagnembqwmSD79WkxzcE07PkhsR3HiXlPZZYTV5mo2 7IpBO6MpsVC5MW0+Q+MXQt9LoNs4GfNoU5Z7pdd2f+FCx5Huqp4vA37Ty7jCpDwx3BCJ BzvNSo/wApMj3Wra+bRu2IzYQ6JTGT6cycU1F8txDxRSsFvFFnlvSn/CshNyFZ7dS73m qnjfv34N7yyJX4mNZKu2P2FOC2AvdP28hwVLajipaP/K2cUUzP5rK5yHSDchabIjfo48 TKryN6DX0elKf0uH2ADEWV1aoEI/eAxd9fO/cVzbeXFV3bSoFZtGjuU0H74qkN2uqsHo EYtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772629207; x=1773234007; 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=1JEF8PqqXf42uOmkwjy3o4IFqlOqL6vkPCElMxb4pgI=; b=tGlFuujsVFPZk+mnuttTcv6y5yyHLxb9o3lEFpl16b9DiEH6xAhjW0OeOeraHZguO9 2c3wI9D0QnLHQDTcVdsd9JoldiFbvjV01BOJ9ckSISSKXtBYF8bHfnWKJThb+BrT7fPf Nj8EEF4tLNVVnSPvePuxB76sRU5XXGemDsVXrtwE4dTFda5wiAthiW3qoNzoD1UUEH4Z jB/DoZikp3SeGrvpJ6pb2IFDBL2+8OeEjnQUUvh4sunG02yYhqBoJyJzdCHHZLRgzweK i/PNh3uYbVe/jECClJRVlnrWQwY+Duh/iAzdK0zJAuI+aGO4eytoQW7FrqY/F/kZoIXW x3Zw== X-Forwarded-Encrypted: i=1; AJvYcCUS/kNFTDF4PJ8XheiohABEaYsB46zkQf29tfZ7Oyw/7wzJbXD/PRzC390ymtrlpvlp43ZrgfLd9i78YZCz@postgresql.org X-Gm-Message-State: AOJu0Yz81YMgYi9wdnmXMJqFOTA2q2zb0zf/mA8SNsGdHFS/JRNnoU5f NZ/Om3/y9Zoko5kY1qZQvvR2qZT0W6gSvFbpIKaFx4sX7bLXZhB17D1CbbifHFfJX70xoBIvFEB mEzqzf2uWcK+3yxXjK/efBrZNhlq/MaM77+g1o8fi X-Gm-Gg: ATEYQzzAY7XOqvOCpWm/bdTGMb5TrWv7WYGlERrCLV9xm+5G+5GATwQYIL07uNjq8DQ Xo1vTNrQIIKMZ9nQZ+AHyuSUwDtfTzYBPx847ysPjp6vFUCRSi0eGChOvr++tKDF7+jvPnvraq7 12dZrPlNr9wuu8FhOHRIMAua2xKaWb/Jdha6ypmXwSKd6AAspF5GvS7C4V1gI4PGiiW+koIdPki 3h1n8CwSymXLw08dXyksHGMPTFVBPy7jVIssEAwAeVUylBooBj3oh601NyEgW4B2HNmKKYzp1RJ CHT0Fh0W X-Received: by 2002:a17:907:7208:b0:b8f:c517:508a with SMTP id a640c23a62f3a-b93f158a2b6mr106842066b.60.1772629206535; Wed, 04 Mar 2026 05:00:06 -0800 (PST) MIME-Version: 1.0 References: <202603040943.2jvgphmddgcs@alvherre.pgsql> In-Reply-To: <202603040943.2jvgphmddgcs@alvherre.pgsql> From: Akshay Joshi Date: Wed, 4 Mar 2026 18:29:53 +0530 X-Gm-Features: AaiRm50vBEJUId4lZD7oCvl5qc5ImBHHmjnOtOkRSwHmqRDksKUc2FqLZlBKYEM Message-ID: Subject: Re: [PATCH] Add pg_get_database_ddl() function to reconstruct CREATE DATABASE statement To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: Japin Li , Euler Taveira , Amul Sul , Andrew Dunstan , Chao Li , Quan Zongliang , pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000002d2916064c3266ac" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002d2916064c3266ac Content-Type: multipart/alternative; boundary="0000000000002d2915064c3266aa" --0000000000002d2915064c3266aa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review, Japin. I=E2=80=99ve addressed all of your comments. = I also added a check to throw an error if an option appears more than once. Attached is the *v10 patch*, now ready for further review. On Wed, Mar 4, 2026 at 3:15=E2=80=AFPM =C3=81lvaro Herrera wrote: > On 2026-Mar-04, Japin Li wrote: > > > After playing with this patch, I=E2=80=99m seeing the following output: > > > > # select pg_get_database_ddl('postgres'::regdatabase, 'defaults', true, > 'pretty', true, 'pretty', false); > > I think this should throw an error that 'pretty' was contradictorily > specified twice. (Maybe also an error if an option appears twice, > period.) > > -- > =C3=81lvaro Herrera 48=C2=B001'N 7=C2=B057'E =E2=80=94 > https://www.EnterpriseDB.com/ > --0000000000002d2915064c3266aa Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Thanks for the review, Japin. I=E2=80=99ve addressed al= l of your comments. I also added a check to throw an error if an option app= ears more than once.

Attached is the v10 patch, now ready for = further review.


On Wed, Mar 4, 2026 at 3:15=E2=80= =AFPM =C3=81lvaro Herrera <alvhe= rre@kurilemu.de> wrote:
On 2026-Mar-04, Japin Li wrote:

> After playing with this patch, I=E2=80=99m seeing the following output= :
>
> # select pg_get_database_ddl('postgres'::regdatabase, 'def= aults', true, 'pretty', true, 'pretty', false);

I think this should throw an error that 'pretty' was contradictoril= y
specified twice.=C2=A0 (Maybe also an error if an option appears twice,
period.)

--
=C3=81lvaro Herrera=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A04= 8=C2=B001'N 7=C2=B057'E=C2=A0 =E2=80=94=C2=A0 https://www.Enter= priseDB.com/
--0000000000002d2915064c3266aa-- --0000000000002d2916064c3266ac Content-Type: application/octet-stream; name="v10-0001-Add-pg_get_database_ddl-function-to-reconstruct-ddl.patch" Content-Disposition: attachment; filename="v10-0001-Add-pg_get_database_ddl-function-to-reconstruct-ddl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc1nd4g0 RnJvbSAwYTNiNTExMWJjZjE5NTA5ODA3NzE5YWFhMWJlZGY3MmQ0ZDU2NjcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBa3NoYXkgSm9zaGkgPGFrc2hheS5qb3NoaUBlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBXZWQsIDI0IFNlcCAyMDI1IDE3OjQ3OjU5ICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2MTBdIEFkZCBwZ19nZXRfZGF0YWJhc2VfZGRsKCkgZnVuY3Rpb24gdG8gcmVjb25zdHJ1 Y3QgQ1JFQVRFCiBEQVRBQkFTRSBzdGF0ZW1lbnRzLgpNSU1FLVZlcnNpb246IDEuMApDb250ZW50 LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogOGJpdAoKVGhpcyBhZGRzIGEgbmV3IHN5c3RlbSBmdW5jdGlvbiwgcGdfZ2V0X2RhdGFiYXNl X2RkbChkYXRhYmFzZV9uYW1lL2RhdGFiYXNlX29pZCwgZGRsX29wdGlvbnMpLAp3aGljaCByZWNv bnN0cnVjdHMgdGhlIENSRUFURSBEQVRBQkFTRSBzdGF0ZW1lbnQgZm9yIGEgZ2l2ZW4gZGF0YWJh c2UgbmFtZSBvciBPSUQuCgpTdXBwb3J0ZWQgZGRsX29wdGlvbnMgYXJlICdwcmV0dHknLCAnb3du ZXInLCAndGFibGVzcGFjZScgYW5kICdkZWZhdWx0cycgYW5kIHJlc3BlY3RpdmUKdmFsdWVzIGNv dWxkIGJlICd5ZXMnLydvbicvdHJ1ZS8nMScuCgpVc2FnZToKU0VMRUNUIHBnX2dldF9kYXRhYmFz ZV9kZGwoJ3JlZ3Jlc3Npb25fdXRmOCcsICdvd25lcicsICdubycsICdkZWZhdWx0cycsICd5ZXMn KTsKU0VMRUNUIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fdXRmOCcsICdvd25lcics ICcwJywgJ3RhYmxlc3BhY2UnLCAnMCcsICdkZWZhdWx0cycsICcxJyk7ClNFTEVDVCBwZ19nZXRf ZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX3V0ZjgnLCAnb3duZXInLCAnb2ZmJywgJ3ByZXR0eScs ICdvbicpOwpTRUxFQ1QgcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc2lvbl91dGY4JywgJ293 bmVyJywgZmFsc2UsICdkZWZhdWx0cycsICd0cnVlJywgJ3RhYmxlc3BhY2UnLCAnbm8nKTsKClJl ZmVyZW5jZTogUEctMTUwCkF1dGhvcjogQWtzaGF5IEpvc2hpIDxha3NoYXkuam9zaGlAZW50ZXJw cmlzZWRiLmNvbT4KUmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAa3VyaWxl bXUuZGU+ClJldmlld2VkLWJ5OiBFdWxlciBUYXZlaXJhIDxldWxlckBldWxlcnRvLmNvbT4KUmV2 aWV3ZWQtYnk6IFF1YW4gWm9uZ2xpYW5nIDxxdWFuem9uZ2xpYW5nQHllYWgubmV0PgpSZXZpZXdl ZC1ieTogSmFwaW4gTGkgPGphcGlubGlAaG90bWFpbC5jb20+ClJldmlld2VkLWJ5OiBDaGFvIExp IDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIGRvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5m by5zZ21sICAgICAgICAgfCAgODYgKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1 bmN0aW9ucy5zcWwgfCAgIDYgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAg ICAgICB8IDM5NSArKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCAgICAgICAgICB8ICAgNyArCiBzcmMvaW5jbHVkZS91dGlscy9kZGxfZGVmYXVs dHMuaCAgICAgICAgIHwgIDM5ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kYXRhYmFz ZS5vdXQgICB8IDE3MyArKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9kYXRhYmFzZS5z cWwgICAgICAgIHwgMTExICsrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgODE3IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS91dGlscy9kZGxfZGVmYXVsdHMuaAoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sIGIvZG9jL3NyYy9z Z21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKaW5kZXggMjk0ZjQ1ZTgyYTMuLmMzNDZiOGQxZmNmIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbApAQCAtMzg0NSw0ICszODQ1LDkwIEBAIGFjbCAgICAg IHwge3Bvc3RncmVzPWFyd2REeHRtL3Bvc3RncmVzLGZvbz1yL3Bvc3RncmVzfQogCiAgIDwvc2Vj dDI+CiAKKyAgPHNlY3QyIGlkPSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwiPgorICAgPHRpdGxl PkdldCBPYmplY3QgRERMIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRoZSBm dW5jdGlvbnMgZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0 LWRkbC10YWJsZSIvPgorICAgIHJldHVybiB0aGUgRGF0YSBEZWZpbml0aW9uIExhbmd1YWdlIChE REwpIHN0YXRlbWVudCBmb3IgYW55IGdpdmVuIGRhdGFiYXNlIG9iamVjdC4KKyAgICBUaGlzIGZl YXR1cmUgaXMgaW1wbGVtZW50ZWQgYXMgYSBzZXQgb2YgZGlzdGluY3QgZnVuY3Rpb25zIGZvciBl YWNoIG9iamVjdCB0eXBlLgorICAgPC9wYXJhPgorCisgICA8dGFibGUgaWQ9ImZ1bmN0aW9ucy1n ZXQtb2JqZWN0LWRkbC10YWJsZSI+CisgICAgPHRpdGxlPkdldCBPYmplY3QgRERMIEZ1bmN0aW9u czwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICAgPHRoZWFkPgorICAgICAgPHJv dz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVu Y19zaWduYXR1cmUiPgorICAgICAgICBGdW5jdGlvbgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg IDwvcm93PgorICAgICA8L3RoZWFkPgorCisgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAg ICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0 dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnBnX2dldF9kYXRh YmFzZV9kZGw8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rp b24+cGdfZ2V0X2RhdGFiYXNlX2RkbDwvZnVuY3Rpb24+CisgICAgICAgICggPHBhcmFtZXRlcj5k YXRhYmFzZV9pZDwvcGFyYW1ldGVyPiA8dHlwZT5yZWdkYXRhYmFzZTwvdHlwZT4KKyAgICAgICAg PG9wdGlvbmFsPiwgPGxpdGVyYWw+VkFSSUFESUM8L2xpdGVyYWw+IDxwYXJhbWV0ZXI+b3B0aW9u czwvcGFyYW1ldGVyPgorICAgICAgICA8dHlwZT4iYW55IjwvdHlwZT4gPC9vcHRpb25hbD4gKQor ICAgICAgICA8cmV0dXJudmFsdWU+dGV4dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0cnVjdHMgdGhlIDxjb21tYW5kPkNSRUFURSBE QVRBQkFTRTwvY29tbWFuZD4gc3RhdGVtZW50IGZyb20gdGhlCisgICAgICAgIHN5c3RlbSBjYXRh bG9ncyBmb3IgYSBzcGVjaWZpZWQgZGF0YWJhc2UgYnkgbmFtZSBvciBPSUQuIFRoZSBvcHRpb25h bAorICAgICAgICB2YXJpYWRpYyBhcmd1bWVudHMgYXJlIG5hbWUvdmFsdWUgcGFpcnMgdG8gY29u dHJvbCB0aGUgb3V0cHV0CisgICAgICAgIGZvcm1hdHRpbmcgYW5kIGNvbnRlbnQgKGUuZy4sIDxs aXRlcmFsPidwcmV0dHknLCB0cnVlLCAnb3duZXInLCBmYWxzZTwvbGl0ZXJhbD4pLgorICAgICAg ICBTdXBwb3J0ZWQgb3B0aW9ucyBhcmUgZXhwbGFpbmVkIGJlbG93LgorICAgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorICAg PC90YWJsZT4KKworICA8cGFyYT4KKyAgICBUaGUgPHBhcmFtZXRlcj5vcHRpb25zPC9wYXJhbWV0 ZXI+IGZvciA8ZnVuY3Rpb24+cGdfZ2V0X2RhdGFiYXNlX2RkbDwvZnVuY3Rpb24+CisgICAgcHJv dmlkZSBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIHRoZSBnZW5lcmF0ZWQgU1FMLiBPcHRpb25z IGFyZSBwYXNzZWQgYXMKKyAgICBhbHRlcm5hdGluZyBrZXkvdmFsdWUgcGFpcnMgd2hlcmUgdGhl IGtleSBpcyBhIHRleHQgc3RyaW5nIGFuZCB0aGUKKyAgICB2YWx1ZSBpcyBlaXRoZXIgYSBib29s ZWFuIG9yIGEgdGV4dCBzdHJpbmcgcmVwcmVzZW50aW5nIGEgYm9vbGVhbgorICAgICg8bGl0ZXJh bD50cnVlPC9saXRlcmFsPiwgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCA8bGl0ZXJhbD55ZXM8 L2xpdGVyYWw+LAorICAgIDxsaXRlcmFsPm5vPC9saXRlcmFsPiwgPGxpdGVyYWw+MTwvbGl0ZXJh bD4sIDxsaXRlcmFsPjA8L2xpdGVyYWw+LAorICAgIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgPGxp dGVyYWw+b2ZmPC9saXRlcmFsPik6CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgIDxsaXRlcmFsPidwcmV0dHknLCB0cnVlPC9saXRlcmFsPiAo b3IgPGxpdGVyYWw+J3ByZXR0eScsICd5ZXMnPC9saXRlcmFsPik6CisgICAgICBBZGRzIG5ld2xp bmVzIGFuZCBpbmRlbnRhdGlvbiBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5LgorICAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICA8 bGl0ZXJhbD4nb3duZXInLCBmYWxzZTwvbGl0ZXJhbD4gKG9yIDxsaXRlcmFsPidvd25lcicsICdu byc8L2xpdGVyYWw+KToKKyAgICAgIE9taXRzIHRoZSA8bGl0ZXJhbD5PV05FUjwvbGl0ZXJhbD4g Y2xhdXNlIGZyb20gdGhlIHJlY29uc3RydWN0ZWQgc3RhdGVtZW50LgorICAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICA8bGl0 ZXJhbD4ndGFibGVzcGFjZScsIGZhbHNlPC9saXRlcmFsPiAob3IgPGxpdGVyYWw+J3RhYmxlc3Bh Y2UnLCAnMCc8L2xpdGVyYWw+KToKKyAgICAgIE9taXRzIHRoZSA8bGl0ZXJhbD5UQUJMRVNQQUNF PC9saXRlcmFsPiBjbGF1c2UgZnJvbSB0aGUgcmVjb25zdHJ1Y3RlZCBzdGF0ZW1lbnQuCisgICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4K KyAgICAgIDxsaXRlcmFsPidkZWZhdWx0cycsIHRydWU8L2xpdGVyYWw+IChvciA8bGl0ZXJhbD4n ZGVmYXVsdHMnLCAnMSc8L2xpdGVyYWw+KToKKyAgICAgIEluY2x1ZGVzIGNsYXVzZXMgZm9yIHBh cmFtZXRlcnMgdGhhdCBhcmUgY3VycmVudGx5IGF0IHRoZWlyIGRlZmF1bHQgdmFsdWVzCisgICAg ICAoZS5nLiwgPGxpdGVyYWw+Q09OTkVDVElPTiBMSU1JVCAtMTwvbGl0ZXJhbD4pLCB3aGljaCBh cmUgbm9ybWFsbHkgb21pdHRlZCBmb3IgYnJldml0eS4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICA8L3BhcmE+CisKKyAgPC9zZWN0Mj4KKwog ICA8L3NlY3QxPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rp b25zLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKaW5kZXgg Njk2OTlmODgzMGEuLmFlNTczZTJmYjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L3N5c3RlbV9mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1 bmN0aW9ucy5zcWwKQEAgLTM3OCw2ICszNzgsMTIgQEAgQkVHSU4gQVRPTUlDCiBFTkQ7CiAKIAor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04KKyAgcGdfZ2V0X2RhdGFiYXNlX2RkbChkYXRhYmFz ZV9pZCByZWdkYXRhYmFzZSwgVkFSSUFESUMgb3B0aW9ucyAiYW55IiBERUZBVUxUIE5VTEwpCitS RVRVUk5TIHRleHQKK0xBTkdVQUdFIGludGVybmFsCitBUyAncGdfZ2V0X2RhdGFiYXNlX2RkbCc7 CisKIC0tCiAtLSBUaGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgZnVuY3Rpb25zIG1lYW4gdGhh dCBhbnlvbmUgY2FuIGV4ZWN1dGUgdGhlbS4KIC0tIEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBzaG91 bGRuJ3QgYmUgZXhlY3V0YWJsZSBieSBqdXN0IGFueW9uZSwgYnV0IHJhdGhlcgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCmluZGV4IGYxNmYxNTM1Nzg1Li5kNDczYWU3NTI5OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kZXBlbmQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2xhbmd1YWdlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCkBAIC01Nyw4ICs1 OCwxMCBAQAogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJy ZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZVN1cHBvcnQu aCIKKyNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGRsX2RlZmF1bHRzLmgi CiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNp bmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCkBAIC04OSwxMSArOTIsNDUgQEAKICNkZWZpbmUgUFJF VFRZRkxBR19JTkRFTlQJCTB4MDAwMgogI2RlZmluZSBQUkVUVFlGTEFHX1NDSEVNQQkJMHgwMDA0 CiAKKy8qIERETCBPcHRpb25zIGZsYWdzICovCisjZGVmaW5lIFBHX0RETF9QUkVUVFlfSU5ERU5U CTB4MDAwMDAwMDEKKyNkZWZpbmUgUEdfRERMX1dJVEhfREVGQVVMVFMJMHgwMDAwMDAwMgorI2Rl ZmluZSBQR19ERExfTk9fT1dORVIJCQkweDAwMDAwMDA0CisjZGVmaW5lIFBHX0RETF9OT19UQUJM RVNQQUNFCTB4MDAwMDAwMDgKKworLyoKKyAqIFN0cnVjdHVyZSB0byBkZWZpbmUgRERMIG9wdGlv bnMgZm9yIHBhcnNlX2RkbF9vcHRpb25zKCkuCisgKiBUaGlzIGFsbG93cyBlYXN5IGFkZGl0aW9u IG9mIG5ldyBvcHRpb25zIGluIHRoZSBmdXR1cmUuCisgKi8KK3R5cGVkZWYgc3RydWN0IERETE9w dGlvbkRlZgoreworCWNvbnN0IGNoYXIgKm5hbWU7CQkJLyogT3B0aW9uIG5hbWUgKGNhc2UtaW5z ZW5zaXRpdmUpICovCisJdWludDMyCQlmbGFnOwkJCS8qIEZsYWcgdG8gc2V0ICovCisJYm9vbAkJ c2V0X29uX3RydWU7CS8qIElmIHRydWUsIHNldCBmbGFnIHdoZW4gdmFsdWUgaXMgdHJ1ZTsgaWYK KwkJCQkJCQkJICogZmFsc2UsIHNldCBmbGFnIHdoZW4gdmFsdWUgaXMgZmFsc2UgKi8KK30JCQlE RExPcHRpb25EZWY7CisKKy8qCisgKiBBcnJheSBvZiBzdXBwb3J0ZWQgRERMIG9wdGlvbnMuCisg KiBUbyBhZGQgYSBuZXcgb3B0aW9uLCBzaW1wbHkgYWRkIGFuIGVudHJ5IHRvIHRoaXMgYXJyYXku CisgKi8KK3N0YXRpYyBjb25zdCBERExPcHRpb25EZWYgZGRsX29wdGlvbl9kZWZzW10gPSB7CisJ eyJwcmV0dHkiLCBQR19ERExfUFJFVFRZX0lOREVOVCwgdHJ1ZX0sCisJeyJkZWZhdWx0cyIsIFBH X0RETF9XSVRIX0RFRkFVTFRTLCB0cnVlfSwKKwl7Im93bmVyIiwgUEdfRERMX05PX09XTkVSLCBm YWxzZX0sCisJeyJ0YWJsZXNwYWNlIiwgUEdfRERMX05PX1RBQkxFU1BBQ0UsIGZhbHNlfSwKK307 CisKKwogLyogU3RhbmRhcmQgY29udmVyc2lvbiBvZiBhICJib29sIHByZXR0eSIgb3B0aW9uIHRv IGRldGFpbGVkIGZsYWdzICovCiAjZGVmaW5lIEdFVF9QUkVUVFlfRkxBR1MocHJldHR5KSBcCiAJ KChwcmV0dHkpID8gKFBSRVRUWUZMQUdfUEFSRU4gfCBQUkVUVFlGTEFHX0lOREVOVCB8IFBSRVRU WUZMQUdfU0NIRU1BKSBcCiAJIDogUFJFVFRZRkxBR19JTkRFTlQpCiAKKyNkZWZpbmUgR0VUX0RE TF9QUkVUVFlfRkxBR1MocHJldHR5KSBcCisJKChwcmV0dHkpID8gKFBSRVRUWUZMQUdfUEFSRU4g fCBQUkVUVFlGTEFHX0lOREVOVCB8IFBSRVRUWUZMQUdfU0NIRU1BKSBcCisJIDogMCkKKwogLyog RGVmYXVsdCBsaW5lIGxlbmd0aCBmb3IgcHJldHR5LXByaW50IHdyYXBwaW5nOiAwIG1lYW5zIHdy YXAgYWx3YXlzICovCiAjZGVmaW5lIFdSQVBfQ09MVU1OX0RFRkFVTFQJCTAKIApAQCAtNTQ3LDYg KzU4NCwxMSBAQCBzdGF0aWMgdm9pZCBnZXRfanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucyhUYWJs ZUZ1bmMgKnRmLCBKc29uVGFibGVQbGFuICpwbGFuLAogCQkJCQkJCQkJCSAgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgYm9vbCBzaG93aW1wbGljaXQsCiAJCQkJCQkJCQkJ ICBib29sIG5lZWRjb21tYSk7CitzdGF0aWMgdm9pZCBnZXRfZm9ybWF0dGVkX3N0cmluZyhTdHJp bmdJbmZvIGJ1ZiwKKwkJCQkJCQkJIGludCBwcmV0dHlGbGFncywKKwkJCQkJCQkJIGludCBuU3Bh Y2VzLAorCQkJCQkJCQkgY29uc3QgY2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlX3ByaW50Zig0 LCA1KTsKK3N0YXRpYyBjaGFyICpwZ19nZXRfZGF0YWJhc2VfZGRsX3dvcmtlcihPaWQgZGJfb2lk LCB1aW50MzIgZGRsX2ZsYWdzKTsKIAogI2RlZmluZSBvbmx5X21hcmtlcihydGUpICAoKHJ0ZSkt PmluaCA/ICIiIDogIk9OTFkgIikKIApAQCAtMTM3NjAsMyArMTM4MDIsMzU2IEBAIGdldF9yYW5n ZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVtcykKIAogCXJldHVybiBidWYuZGF0 YTsKIH0KKworLyoKKyAqIGdldF9mb3JtYXR0ZWRfc3RyaW5nCisgKgorICogUmV0dXJuIGEgZm9y bWF0dGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZy4KKyAqCisgKiBwcmV0dHlGbGFncyAtIEJhc2Vk IG9uIHByZXR0eUZsYWdzIHRoZSBvdXRwdXQgaW5jbHVkZXMgc3BhY2VzIGFuZAorICogICAgICAg ICAgICAgICBuZXdsaW5lcyAoXG4pLgorICogblNwYWNlcyAtIGluZGVudCB3aXRoIHNwZWNpZmll ZCBudW1iZXIgb2Ygc3BhY2UgY2hhcmFjdGVycy4KKyAqIGZtdCAtIHByaW50Zi1zdHlsZSBmb3Jt YXQgc3RyaW5nIHVzZWQgYnkgYXBwZW5kU3RyaW5nSW5mb1ZBLgorICovCitzdGF0aWMgdm9pZAor Z2V0X2Zvcm1hdHRlZF9zdHJpbmcoU3RyaW5nSW5mbyBidWYsIGludCBwcmV0dHlGbGFncywgaW50 IG5TcGFjZXMsIGNvbnN0IGNoYXIgKmZtdCwuLi4pCit7CisJdmFfbGlzdAkJYXJnczsKKworCWlm IChwcmV0dHlGbGFncyAmIFBSRVRUWUZMQUdfSU5ERU5UKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5m b0NoYXIoYnVmLCAnXG4nKTsKKwkJLyogSW5kZW50IHdpdGggc3BhY2VzICovCisJCWFwcGVuZFN0 cmluZ0luZm9TcGFjZXMoYnVmLCBuU3BhY2VzKTsKKwl9CisJZWxzZQorCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcihidWYsICcgJyk7CisKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCWFwcGVuZFN0cmlu Z0luZm9WQShidWYsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworfQorCisvKioKKyAqIHBh cnNlX2RkbF9vcHRpb25zIC0gR2VuZXJpYyBoZWxwZXIgdG8gcGFyc2UgdmFyaWFkaWMgbmFtZS92 YWx1ZSBvcHRpb25zCisgKiBmY2luZm86IFRoZSBGdW5jdGlvbkNhbGxJbmZvIGZyb20gdGhlIGNh bGxpbmcgZnVuY3Rpb24KKyAqIHZhcmlhZGljX3N0YXJ0OiBUaGUgYXJndW1lbnQgcG9zaXRpb24g d2hlcmUgdmFyaWFkaWMgYXJndW1lbnRzIHN0YXJ0CisgKgorICogUmV0dXJuczogQml0bWFzayBv ZiBmbGFncyBiYXNlZCBvbiB0aGUgcGFyc2VkIG9wdGlvbnMuCisgKgorICogT3B0aW9ucyBhcmUg cGFzc2VkIGFzIG5hbWUvdmFsdWUgcGFpcnMuCisgKiBGb3IgZXhhbXBsZTogcGdfZ2V0X2RhdGFi YXNlX2RkbCgnbXlkYicsICdvd25lcicsIGZhbHNlLCAncHJldHR5JywgdHJ1ZSkKKyAqLworc3Rh dGljIHVpbnQzMgorcGFyc2VfZGRsX29wdGlvbnMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGlu dCB2YXJpYWRpY19zdGFydCkKK3sKKwl1aW50MzIJCWZsYWdzID0gMDsKKwl1aW50MzIJCXNlZW5f ZmxhZ3MgPSAwOworCURhdHVtCSAgICphcmdzOworCWJvb2wJICAgKm51bGxzOworCU9pZAkJICAg KnR5cGVzOworCWludAkJCW5hcmdzOworCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkvKiBFeHRy YWN0IHZhcmlhZGljIGFyZ3VtZW50cyAqLworCW5hcmdzID0gZXh0cmFjdF92YXJpYWRpY19hcmdz KGZjaW5mbywgdmFyaWFkaWNfc3RhcnQsIHRydWUsCisJCQkJCQkJCSAgJmFyZ3MsICZ0eXBlcywg Jm51bGxzKTsKKworCS8qIElmIG5vIG9wdGlvbnMgcHJvdmlkZWQgKFZBUklBRElDIE5VTEwpLCBy ZXR1cm4gdGhlIGVtcHR5IGJpdG1hc2sgKi8KKwlpZiAobmFyZ3MgPD0gMCkKKwkJcmV0dXJuIGZs YWdzOworCisJLyoKKwkgKiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgREVGQVVMVCBOVUxMIHdhcyB1 c2VkIGFuZCBubyBleHBsaWNpdCB2YXJpYWRpYworCSAqIGFyZ3VtZW50cyB3ZXJlIHByb3ZpZGVk LiBJbiB0aGlzIGNhc2UsIHdlIGdldCBhIHNpbmdsZSBOVUxMIGFyZ3VtZW50LgorCSAqLworCWlm IChuYXJncyA9PSAxICYmIG51bGxzWzBdKQorCQlyZXR1cm4gZmxhZ3M7CisKKwkvKiBBcmd1bWVu dHMgbXVzdCBjb21lIGluIG5hbWUvdmFsdWUgcGFpcnMgKi8KKwlpZiAobmFyZ3MgJSAyICE9IDAp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCisJCQkJIGVycm1zZygidmFyaWFkaWMgYXJndW1lbnRzIG11c3QgYmUgbmFtZS92 YWx1ZSBwYWlycyIpLAorCQkJCSBlcnJoaW50KCJQcm92aWRlIGFuIGV2ZW4gbnVtYmVyIG9mIHZh cmlhZGljIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBkaXZpZGVkIGludG8gcGFpcnMuIikpKTsKKwor CWZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7IGkgKz0gMikKKwl7CisJCWNoYXIJICAgKm5hbWU7 CisJCWJvb2wJCWJ2YWw7CisKKwkJLyogS2V5IG11c3Qgbm90IGJlIG51bGwgKi8KKwkJaWYgKG51 bGxzW2ldKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coIm5hbWUgYXQgdmFyaWFkaWMgcG9zaXRp b24gJWQgaXMgbnVsbCIsIGkgKyAxKSkpOworCisJCS8qIEtleSBtdXN0IGJlIHRleHQgdHlwZSAq LworCQlpZiAodHlwZXNbaV0gIT0gVEVYVE9JRCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJu YW1lIGF0IHZhcmlhZGljIHBvc2l0aW9uICVkIGhhcyB0eXBlICVzLCBleHBlY3RlZCB0eXBlICVz IiwKKwkJCQkJCQlpICsgMSwgZm9ybWF0X3R5cGVfYmUodHlwZXNbaV0pLAorCQkJCQkJCWZvcm1h dF90eXBlX2JlKFRFWFRPSUQpKSkpOworCisJCW5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGFy Z3NbaV0pOworCisJCS8qIFZhbHVlIG11c3Qgbm90IGJlIG51bGwgKi8KKwkJaWYgKG51bGxzW2kg KyAxXSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJhcmd1bWVudCBcIiVzXCIgaGFzIHR5cGUg JXMsIGV4cGVjdGVkIHR5cGUgYm9vbGVhbiBvciB0ZXh0IiwKKwkJCQkJCQluYW1lLCBmb3JtYXRf dHlwZV9iZSh0eXBlc1tpICsgMV0pKSkpOworCisJCS8qIFZhbHVlIG11c3QgYmUgYm9vbGVhbiBv ciB0ZXh0IHR5cGUgKi8KKwkJaWYgKHR5cGVzW2kgKyAxXSA9PSBCT09MT0lEKQorCQl7CisJCQli dmFsID0gRGF0dW1HZXRCb29sKGFyZ3NbaSArIDFdKTsKKwkJfQorCQllbHNlIGlmICh0eXBlc1tp ICsgMV0gPT0gVEVYVE9JRCkKKwkJeworCQkJY2hhcgkgICAqdmFsc3RyID0gVGV4dERhdHVtR2V0 Q1N0cmluZyhhcmdzW2kgKyAxXSk7CisKKwkJCWlmICghcGFyc2VfYm9vbCh2YWxzdHIsICZidmFs KSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJhcmd1bWVudCAlZDogaW52YWxpZCB2YWx1 ZSBcIiVzXCIgZm9yIGtleSBcIiVzXCIiLAorCQkJCQkJCQlpICsgMiwgdmFsc3RyLCBuYW1lKSwK KwkJCQkJCSBlcnJoaW50KCJWYWxpZCB2YWx1ZXMgYXJlOiB0cnVlLCBmYWxzZSwgeWVzLCBubywg MSwgMCwgb24sIG9mZi4iKSkpOworCQkJcGZyZWUodmFsc3RyKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJhcmd1bWVudCAlZDogdmFsdWUgZm9yIGtleSBcIiVz XCIgbXVzdCBiZSBib29sZWFuIG9yIHRleHQgdHlwZSIsCisJCQkJCQkJaSArIDIsIG5hbWUpKSk7 CisJCX0KKworCQkvKgorCQkgKiBMb29rIHVwIHRoZSBvcHRpb24gaW4gdGhlIGRkbF9vcHRpb25f ZGVmcyBhcnJheSBhbmQgc2V0IHRoZQorCQkgKiBhcHByb3ByaWF0ZSBmbGFnIGJhc2VkIG9uIHRo ZSB2YWx1ZS4KKwkJICovCisJCWZvciAoaW50IGogPSAwOyBqIDwgbGVuZ3Rob2YoZGRsX29wdGlv bl9kZWZzKTsgaisrKQorCQl7CisJCQljb25zdAkJRERMT3B0aW9uRGVmICpvcHQgPSAmZGRsX29w dGlvbl9kZWZzW2pdOworCisJCQlpZiAocGdfc3RyY2FzZWNtcChuYW1lLCBvcHQtPm5hbWUpID09 IDApCisJCQl7CisJCQkJLyogRXJyb3IgaWYgdGhpcyBvcHRpb24gd2FzIGFscmVhZHkgc3BlY2lm aWVkICovCisJCQkJaWYgKHNlZW5fZmxhZ3MgJiBvcHQtPmZsYWcpCisJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJCQkJCWVycm1zZygib3B0aW9uIFwiJXNcIiBpcyBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2Ui LCBuYW1lKSkpOworCisJCQkJc2Vlbl9mbGFncyB8PSBvcHQtPmZsYWc7CisKKwkJCQkvKgorCQkJ CQkqIFNldCB0aGUgZmxhZyBpZiB0aGUgdmFsdWUgbWF0Y2hlcyB0aGUgc2V0X29uX3RydWUKKwkJ CQkJKiBjb25kaXRpb246IGlmIHNldF9vbl90cnVlIGlzIHRydWUsIHNldCBmbGFnIHdoZW4gYnZh bAorCQkJCQkqIGlzIHRydWU7IGlmIHNldF9vbl90cnVlIGlzIGZhbHNlLCBzZXQgZmxhZyB3aGVu IGJ2YWwgaXMKKwkJCQkJKiBmYWxzZS4KKwkJCQkJKi8KKwkJCQlpZiAoYnZhbCA9PSBvcHQtPnNl dF9vbl90cnVlKQorCQkJCQlmbGFncyB8PSBvcHQtPmZsYWc7CisKKwkJCQlmb3VuZCA9IHRydWU7 CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoIWZvdW5kKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJ CQllcnJtc2coInVucmVjb2duaXplZCBvcHRpb246IFwiJXNcIiIsIG5hbWUpKSk7CisJCQkJCQkg CisJCXBmcmVlKG5hbWUpOworCX0KKworCXJldHVybiBmbGFnczsKK30KKworLyoKKyAqIHBnX2dl dF9kYXRhYmFzZV9kZGwKKyAqCisgKiBHZW5lcmF0ZSBhIENSRUFURSBEQVRBQkFTRSBzdGF0ZW1l bnQgZm9yIHRoZSBzcGVjaWZpZWQgZGF0YWJhc2UgbmFtZSBvciBvaWQuCisgKgorICogZGJfb2lk IC0gT0lEL05hbWUgb2YgdGhlIGRhdGFiYXNlIGZvciB3aGljaCB0byBnZW5lcmF0ZSB0aGUgRERM LgorICogb3B0aW9ucyAtIFZhcmlhZGljIG5hbWUvdmFsdWUgcGFpcnMgdG8gbW9kaWZ5IHRoZSBv dXRwdXQuCisgKi8KK0RhdHVtCitwZ19nZXRfZGF0YWJhc2VfZGRsKFBHX0ZVTkNUSU9OX0FSR1Mp Cit7CisJT2lkCQkJZGJfb2lkID0gUEdfR0VUQVJHX09JRCgwKTsKKwl1aW50MzIJCWRkbF9mbGFn czsKKwljaGFyCSAgICpyZXM7CisKKwkvKiBQYXJzZSB2YXJpYWRpYyBvcHRpb25zIHN0YXJ0aW5n IGZyb20gYXJndW1lbnQgMSAqLworCWRkbF9mbGFncyA9IHBhcnNlX2RkbF9vcHRpb25zKGZjaW5m bywgMSk7CisKKwlyZXMgPSBwZ19nZXRfZGF0YWJhc2VfZGRsX3dvcmtlcihkYl9vaWQsIGRkbF9m bGFncyk7CisKKwlpZiAocmVzID09IE5VTEwpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19S RVRVUk5fVEVYVF9QKHN0cmluZ190b190ZXh0KHJlcykpOworfQorCitzdGF0aWMgY2hhciAqCitw Z19nZXRfZGF0YWJhc2VfZGRsX3dvcmtlcihPaWQgZGJfb2lkLCB1aW50MzIgZGRsX2ZsYWdzKQor eworCWNoYXIJICAgKmRib3duZXIgPSBOVUxMOworCWJvb2wJCWF0dHJfaXNudWxsOworCURhdHVt CQlkYnZhbHVlOworCUhlYXBUdXBsZQl0dXBsZV9kYXRhYmFzZTsKKwlGb3JtX3BnX2RhdGFiYXNl IGRiZm9ybTsKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwor CS8qIFZhcmlhYmxlcyBmb3IgZGRsX29wdGlvbnMgcGFyc2luZyAqLworCWludAkJCXByZXR0eV9m bGFncyA9IDA7CisJYm9vbAkJaXNfd2l0aF9kZWZhdWx0cyA9IGZhbHNlOworCisJLyogU2V0IHRo ZSBhcHByb3ByaWF0ZSBmbGFncyAqLworCWlmIChkZGxfZmxhZ3MgJiBQR19ERExfUFJFVFRZX0lO REVOVCkKKwkJcHJldHR5X2ZsYWdzID0gR0VUX0RETF9QUkVUVFlfRkxBR1MoMSk7CisKKwlpc193 aXRoX2RlZmF1bHRzID0gKGRkbF9mbGFncyAmIFBHX0RETF9XSVRIX0RFRkFVTFRTKSA/IHRydWUg OiBmYWxzZTsKKworCS8qCisJICogVXNlciBtdXN0IGhhdmUgY29ubmVjdCBwcml2aWxlZ2UgZm9y IHRhcmdldCBkYXRhYmFzZS4KKwkgKi8KKwlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRGF0 YWJhc2VSZWxhdGlvbklkLCBkYl9vaWQsIEdldFVzZXJJZCgpLAorCQkJCQkJCQlBQ0xfQ09OTkVD VCk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSyAmJgorCQkhaGFzX3ByaXZzX29mX3Jv bGUoR2V0VXNlcklkKCksIFJPTEVfUEdfUkVBRF9BTExfU1RBVFMpKQorCXsKKwkJYWNsY2hlY2tf ZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfREFUQUJBU0UsCisJCQkJCSAgIGdldF9kYXRhYmFzZV9u YW1lKGRiX29pZCkpOworCX0KKworCS8qIExvb2sgdXAgdGhlIGRhdGFiYXNlIGluIHBnX2RhdGFi YXNlICovCisJdHVwbGVfZGF0YWJhc2UgPSBTZWFyY2hTeXNDYWNoZTEoREFUQUJBU0VPSUQsIE9i amVjdElkR2V0RGF0dW0oZGJfb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlX2Rh dGFiYXNlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X09CSkVDVCksCisJCQkJZXJybXNnKCJkYXRhYmFzZSB3aXRoIG9pZCAldSBkb2VzIG5vdCBleGlz dCIsIGRiX29pZCkpOworCisJZGJmb3JtID0gKEZvcm1fcGdfZGF0YWJhc2UpIEdFVFNUUlVDVCh0 dXBsZV9kYXRhYmFzZSk7CisKKwlpbml0U3RyaW5nSW5mbygmYnVmKTsKKworCS8qIExvb2sgdXAg dGhlIG93bmVyIGluIHRoZSBzeXN0ZW0gY2F0YWxvZyAqLworCWlmIChPaWRJc1ZhbGlkKGRiZm9y bS0+ZGF0ZGJhKSkKKwkJZGJvd25lciA9IEdldFVzZXJOYW1lRnJvbUlkKGRiZm9ybS0+ZGF0ZGJh LCBmYWxzZSk7CisKKwkvKiBCdWlsZCB0aGUgQ1JFQVRFIERBVEFCQVNFIHN0YXRlbWVudCAqLwor CWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkNSRUFURSBEQVRBQkFTRSAlcyIsCisJCQkJCSBxdW90 ZV9pZGVudGlmaWVyKGRiZm9ybS0+ZGF0bmFtZS5kYXRhKSk7CisJZ2V0X2Zvcm1hdHRlZF9zdHJp bmcoJmJ1ZiwgcHJldHR5X2ZsYWdzLCA0LCAiV0lUSCIpOworCisJLyogU2V0IHRoZSBPV05FUiBp biB0aGUgRERMIGlmIG93bmVyIGlzIG5vdCBvbWl0dGVkICovCisJaWYgKE9pZElzVmFsaWQoZGJm b3JtLT5kYXRkYmEpICYmICEoZGRsX2ZsYWdzICYgUEdfRERMX05PX09XTkVSKSkKKwl7CisJCWdl dF9mb3JtYXR0ZWRfc3RyaW5nKCZidWYsIHByZXR0eV9mbGFncywgOCwgIk9XTkVSID0gJXMiLAor CQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGRib3duZXIpKTsKKwl9CisKKwkvKiBTZXQgdGhlIEVO Q09ESU5HIGluIHRoZSBEREwgKi8KKwlpZiAoZGJmb3JtLT5lbmNvZGluZyAhPSAwKQorCXsKKwkJ LyogSWYgaXNfd2l0aF9kZWZhdWx0cyBpcyB0cnVlLCB0aGVuIHdlIHNraXAgZGVmYXVsdCBlbmNv ZGluZyBjaGVjayAqLworCQlpZiAoaXNfd2l0aF9kZWZhdWx0cyB8fAorCQkJKHBnX3N0cmNhc2Vj bXAocGdfZW5jb2RpbmdfdG9fY2hhcihkYmZvcm0tPmVuY29kaW5nKSwKKwkJCQkJCSAgIERETF9E RUZBVUxUUy5EQVRBQkFTRS5FTkNPRElORykgIT0gMCkpCisJCXsKKwkJCWdldF9mb3JtYXR0ZWRf c3RyaW5nKCZidWYsIHByZXR0eV9mbGFncywgOCwgIkVOQ09ESU5HID0gJXMiLAorCQkJCQkJCQkg cXVvdGVfbGl0ZXJhbF9jc3RyKAorCQkJCQkJCQkJCQkJCXBnX2VuY29kaW5nX3RvX2NoYXIoZGJm b3JtLT5lbmNvZGluZykpKTsKKwkJfQorCX0KKworCS8qIEZldGNoIHRoZSB2YWx1ZSBvZiBMQ19D T0xMQVRFICovCisJZGJ2YWx1ZSA9IFN5c0NhY2hlR2V0QXR0cihEQVRBQkFTRU9JRCwgdHVwbGVf ZGF0YWJhc2UsCisJCQkJCQkJICBBbnVtX3BnX2RhdGFiYXNlX2RhdGNvbGxhdGUsICZhdHRyX2lz bnVsbCk7CisJaWYgKCFhdHRyX2lzbnVsbCkKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1Ziwg cHJldHR5X2ZsYWdzLCA4LCAiTENfQ09MTEFURSA9ICVzIiwKKwkJCQkJCQkgcXVvdGVfbGl0ZXJh bF9jc3RyKFRleHREYXR1bUdldENTdHJpbmcoZGJ2YWx1ZSkpKTsKKwkvKiBGZXRjaCB0aGUgdmFs dWUgb2YgTENfQ1RZUEUgKi8KKwlkYnZhbHVlID0gU3lzQ2FjaGVHZXRBdHRyKERBVEFCQVNFT0lE LCB0dXBsZV9kYXRhYmFzZSwKKwkJCQkJCQkgIEFudW1fcGdfZGF0YWJhc2VfZGF0Y3R5cGUsICZh dHRyX2lzbnVsbCk7CisJaWYgKCFhdHRyX2lzbnVsbCkKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmco JmJ1ZiwgcHJldHR5X2ZsYWdzLCA4LCAiTENfQ1RZUEUgPSAlcyIsCisJCQkJCQkJIHF1b3RlX2xp dGVyYWxfY3N0cihUZXh0RGF0dW1HZXRDU3RyaW5nKGRidmFsdWUpKSk7CisJLyogRmV0Y2ggdGhl IHZhbHVlIG9mIExPQ0FMRSAqLworCWRidmFsdWUgPSBTeXNDYWNoZUdldEF0dHIoREFUQUJBU0VP SUQsIHR1cGxlX2RhdGFiYXNlLAorCQkJCQkJCSAgQW51bV9wZ19kYXRhYmFzZV9kYXRsb2NhbGUs ICZhdHRyX2lzbnVsbCk7CisJaWYgKCFhdHRyX2lzbnVsbCAmJiBkYmZvcm0tPmRhdGxvY3Byb3Zp ZGVyID09IENPTExQUk9WSURFUl9CVUlMVElOKQorCQlnZXRfZm9ybWF0dGVkX3N0cmluZygmYnVm LCBwcmV0dHlfZmxhZ3MsIDgsICJCVUlMVElOX0xPQ0FMRSA9ICVzIiwKKwkJCQkJCQkgcXVvdGVf bGl0ZXJhbF9jc3RyKFRleHREYXR1bUdldENTdHJpbmcoZGJ2YWx1ZSkpKTsKKwllbHNlIGlmICgh YXR0cl9pc251bGwgJiYgZGJmb3JtLT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNV KQorCQlnZXRfZm9ybWF0dGVkX3N0cmluZygmYnVmLCBwcmV0dHlfZmxhZ3MsIDgsICJJQ1VfTE9D QUxFID0gJXMiLAorCQkJCQkJCSBxdW90ZV9saXRlcmFsX2NzdHIoVGV4dERhdHVtR2V0Q1N0cmlu ZyhkYnZhbHVlKSkpOworCWVsc2UgaWYgKCFhdHRyX2lzbnVsbCkKKwkJZ2V0X2Zvcm1hdHRlZF9z dHJpbmcoJmJ1ZiwgcHJldHR5X2ZsYWdzLCA4LCAiTE9DQUxFID0gJXMiLAorCQkJCQkJCSBxdW90 ZV9saXRlcmFsX2NzdHIoVGV4dERhdHVtR2V0Q1N0cmluZyhkYnZhbHVlKSkpOworCisJLyogRmV0 Y2ggdGhlIHZhbHVlIG9mIElDVV9SVUxFUyAqLworCWRidmFsdWUgPSBTeXNDYWNoZUdldEF0dHIo REFUQUJBU0VPSUQsIHR1cGxlX2RhdGFiYXNlLAorCQkJCQkJCSAgQW51bV9wZ19kYXRhYmFzZV9k YXRpY3VydWxlcywgJmF0dHJfaXNudWxsKTsKKwlpZiAoIWF0dHJfaXNudWxsICYmIGRiZm9ybS0+ ZGF0bG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJp bmcoJmJ1ZiwgcHJldHR5X2ZsYWdzLCA4LCAiSUNVX1JVTEVTID0gJXMiLAorCQkJCQkJCSBxdW90 ZV9saXRlcmFsX2NzdHIoVGV4dERhdHVtR2V0Q1N0cmluZyhkYnZhbHVlKSkpOworCisJLyogRmV0 Y2ggdGhlIHZhbHVlIG9mIENPTExBVElPTl9WRVJTSU9OICovCisJZGJ2YWx1ZSA9IFN5c0NhY2hl R2V0QXR0cihEQVRBQkFTRU9JRCwgdHVwbGVfZGF0YWJhc2UsCisJCQkJCQkJICBBbnVtX3BnX2Rh dGFiYXNlX2RhdGNvbGx2ZXJzaW9uLCAmYXR0cl9pc251bGwpOworCWlmICghYXR0cl9pc251bGwp CisJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKCZidWYsIHByZXR0eV9mbGFncywgOCwgIkNPTExBVElP Tl9WRVJTSU9OID0gJXMiLAorCQkJCQkJCSBxdW90ZV9saXRlcmFsX2NzdHIoVGV4dERhdHVtR2V0 Q1N0cmluZyhkYnZhbHVlKSkpOworCisJLyogU2V0IHRoZSBhcHByb3ByaWF0ZSBMT0NBTEVfUFJP VklERVIgKi8KKwlpZiAoZGJmb3JtLT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfQlVJ TFRJTikKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1ZiwgcHJldHR5X2ZsYWdzLCA4LCAiTE9D QUxFX1BST1ZJREVSID0gYnVpbHRpbiIpOworCWVsc2UgaWYgKGRiZm9ybS0+ZGF0bG9jcHJvdmlk ZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1ZiwgcHJl dHR5X2ZsYWdzLCA4LCAiTE9DQUxFX1BST1ZJREVSID0gaWN1Iik7CisJZWxzZSBpZiAoaXNfd2l0 aF9kZWZhdWx0cykKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1ZiwgcHJldHR5X2ZsYWdzLCA4 LCAiTE9DQUxFX1BST1ZJREVSID0gbGliYyIpOworCisJLyogU2V0IHRoZSBUQUJMRVNQQUNFIGlu IHRoZSBEREwgaWYgdGFibGVzcGFjZSBpcyBub3Qgb21pdHRlZCAqLworCWlmIChPaWRJc1ZhbGlk KGRiZm9ybS0+ZGF0dGFibGVzcGFjZSkgJiYgIShkZGxfZmxhZ3MgJiBQR19ERExfTk9fVEFCTEVT UEFDRSkpCisJeworCQkvKiBHZXQgdGhlIHRhYmxlc3BhY2UgbmFtZSByZXNwZWN0aXZlIHRvIHRo ZSBnaXZlbiB0YWJsZXNwYWNlIG9pZCAqLworCQljaGFyCSAgICpkYlRhYmxlc3BhY2UgPSBnZXRf dGFibGVzcGFjZV9uYW1lKGRiZm9ybS0+ZGF0dGFibGVzcGFjZSk7CisKKwkJLyogSWYgaXQncyB3 aXRoIGRlZmF1bHRzLCB3ZSBza2lwIGRlZmF1bHQgdGFibGVzcGFjZSBjaGVjayAqLworCQlpZiAo aXNfd2l0aF9kZWZhdWx0cyB8fAorCQkJKHBnX3N0cmNhc2VjbXAoZGJUYWJsZXNwYWNlLCBERExf REVGQVVMVFMuREFUQUJBU0UuVEFCTEVTUEFDRSkgIT0gMCkpCisJCQlnZXRfZm9ybWF0dGVkX3N0 cmluZygmYnVmLCBwcmV0dHlfZmxhZ3MsIDgsICJUQUJMRVNQQUNFID0gJXMiLAorCQkJCQkJCQkg cXVvdGVfaWRlbnRpZmllcihkYlRhYmxlc3BhY2UpKTsKKwl9CisKKwlpZiAoaXNfd2l0aF9kZWZh dWx0cyB8fAorCQkoZGJmb3JtLT5kYXRhbGxvd2Nvbm4gIT0gRERMX0RFRkFVTFRTLkRBVEFCQVNF LkFMTE9XX0NPTk4pKQorCXsKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1ZiwgcHJldHR5X2Zs YWdzLCA4LCAiQUxMT1dfQ09OTkVDVElPTlMgPSAlcyIsCisJCQkJCQkJIGRiZm9ybS0+ZGF0YWxs b3djb25uID8gInRydWUiIDogImZhbHNlIik7CisJfQorCisJaWYgKGlzX3dpdGhfZGVmYXVsdHMg fHwKKwkJKGRiZm9ybS0+ZGF0Y29ubmxpbWl0ICE9IERETF9ERUZBVUxUUy5EQVRBQkFTRS5DT05O X0xJTUlUKSkKKwl7CisJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKCZidWYsIHByZXR0eV9mbGFncywg OCwgIkNPTk5FQ1RJT04gTElNSVQgPSAlZCIsCisJCQkJCQkJIGRiZm9ybS0+ZGF0Y29ubmxpbWl0 KTsKKwl9CisKKwlpZiAoZGJmb3JtLT5kYXRpc3RlbXBsYXRlKQorCQlnZXRfZm9ybWF0dGVkX3N0 cmluZygmYnVmLCBwcmV0dHlfZmxhZ3MsIDgsICJJU19URU1QTEFURSA9ICVzIiwKKwkJCQkJCQkg ZGJmb3JtLT5kYXRpc3RlbXBsYXRlID8gInRydWUiIDogImZhbHNlIik7CisKKwlhcHBlbmRTdHJp bmdJbmZvQ2hhcigmYnVmLCAnOycpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlX2RhdGFiYXNl KTsKKworCXJldHVybiBidWYuZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGRh YzQwOTkyY2JjLi41YzQzZWVlMzJlYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC00MDMx LDYgKzQwMzEsMTMgQEAKICAgcHJvbmFtZSA9PiAncGdfZ2V0X2Z1bmN0aW9uX3NxbGJvZHknLCBw cm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4gJ3RleHQnLCBwcm9hcmd0eXBlcyA9 PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19nZXRfZnVuY3Rpb25fc3FsYm9keScgfSwKK3sgb2lk ID0+ICc5NDkyJywgZGVzY3IgPT4gJ2dldCBDUkVBVEUgc3RhdGVtZW50IGZvciBkYXRhYmFzZSBu YW1lIGFuZCBvaWQnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfZGF0YWJhc2VfZGRsJywgcHJvdmFy aWFkaWMgPT4gJ2FueScsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvcmV0dHlwZSA9PiAndGV4 dCcsCisgIHByb2FyZ3R5cGVzID0+ICdyZWdkYXRhYmFzZSBhbnknLAorICBwcm9hcmdtb2RlcyA9 PiAne2ksdn0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne3JlZ2RhdGFiYXNlLGFueX0nLAorICBw cm9zcmMgPT4gJ3BnX2dldF9kYXRhYmFzZV9kZGwnIH0sCiAKIHsgb2lkID0+ICcxNjg2JywgZGVz Y3IgPT4gJ2xpc3Qgb2YgU1FMIGtleXdvcmRzJywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X2tleXdv cmRzJywgcHJvY29zdCA9PiAnMTAnLCBwcm9yb3dzID0+ICc1MDAnLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvZGRsX2RlZmF1bHRzLmggYi9zcmMvaW5jbHVkZS91dGlscy9kZGxfZGVm YXVsdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDE3ZTg0M2Zl MDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9kZGxfZGVmYXVsdHMuaApA QCAtMCwwICsxLDM5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZGxfZGVmYXVsdHMu aAorICoJICBEZWNsYXJhdGlvbnMgZm9yIERETCBkZWZhdWx0cy4KKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVy c2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvdXRpbHMvZGRsX2RlZmF1bHRz LmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBERExfREVGQVVMVFNfSAor I2RlZmluZSBERExfREVGQVVMVFNfSAorCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorCitzdGF0aWMg Y29uc3Qgc3RydWN0Cit7CisJc3RydWN0CisJeworCQljb25zdCBjaGFyICpFTkNPRElORzsKKwkJ Y29uc3QgY2hhciAqVEFCTEVTUEFDRTsKKwkJaW50CQkJQ09OTl9MSU1JVDsKKwkJYm9vbAkJQUxM T1dfQ09OTjsKKwl9CQkJREFUQUJBU0U7CisKKwkvKiBBZGQgbW9yZSBvYmplY3QgdHlwZXMgYXMg bmVlZGVkICovCit9CQkJRERMX0RFRkFVTFRTID0geworCisJLkRBVEFCQVNFID0geworCQkuRU5D T0RJTkcgPSAiVVRGOCIsCisJCS5UQUJMRVNQQUNFID0gInBnX2RlZmF1bHQiLAorCQkuQ09OTl9M SU1JVCA9IC0xLAorCQkuQUxMT1dfQ09OTiA9IHRydWUsCisJfQorfTsKKworI2VuZGlmCQkJCQkJ CS8qIERETF9ERUZBVUxUU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2RhdGFiYXNlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZGF0YWJhc2Uub3V0 CmluZGV4IDZiODc5YjBmNjJhLi43NzIzNTk0OWY2NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9kYXRhYmFzZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9kYXRhYmFzZS5vdXQKQEAgLTEsMyArMSw1NyBAQAorLS0KKy0tIFJlY29uc3RydWN0IERETAor LS0KKy0tIFRvIHByb2R1Y2Ugc3RhYmxlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQsIGl0J3MgdXN1 YWxseSBuZWNlc3NhcnkgdG8KKy0tIGlnbm9yZSBjb2xsYXRpb24gYW5kIGxvY2FsZSByZWxhdGVk IGRldGFpbHMuIFRoaXMgZmlsdGVyCistLSBmdW5jdGlvbnMgcmVtb3ZlcyBjb2xsYXRpb24gYW5k IGxvY2FsZSByZWxhdGVkIGRldGFpbHMuCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBkZGxf ZmlsdGVyKGRkbF9pbnB1dCBURVhUKQorUkVUVVJOUyBURVhUIEFTICQkCitERUNMQVJFCisgICAg Y2xlYW5lZF9kZGwgVEVYVDsKK0JFR0lOCisgICAgLS0gUmVtb3ZlICVMT0NBTEVfUFJPVklERVIl IHBsYWNlaG9sZGVycworICAgIGNsZWFuZWRfZGRsIDo9IHJlZ2V4cF9yZXBsYWNlKAorICAgICAg ICBkZGxfaW5wdXQsCisgICAgICAgICdccypcbUxPQ0FMRV9QUk9WSURFUlxNXHMqPVxzKihbJyci XT9bXicnIlxzXStbJyciXT8pJywKKyAgICAgICAgJycsCisgICAgICAgICdnaScKKyAgICApOwor CisJLS0gUmVtb3ZlIExDX0NPTExBVEUgYXNzaWdubWVudHMKKyAgICBjbGVhbmVkX2RkbCA6PSBy ZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisgICAgICAgICdccypMQ19DT0xM QVRFXHMqPVxzKihbJyciXSlbXicnIl0qXDEnLAorICAgICAgICAnJywKKyAgICAgICAgJ2dpJwor ICAgICk7CisKKyAgICAtLSBSZW1vdmUgTENfQ1RZUEUgYXNzaWdubWVudHMKKyAgICBjbGVhbmVk X2RkbCA6PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisgICAgICAgICdc cypMQ19DVFlQRVxzKj1ccyooWycnIl0pW14nJyJdKlwxJywKKyAgICAgICAgJycsCisgICAgICAg ICdnaScKKyAgICApOworCisgICAgLS0gUmVtb3ZlICVMT0NBTEUlIHBsYWNlaG9sZGVycworICAg IGNsZWFuZWRfZGRsIDo9IHJlZ2V4cF9yZXBsYWNlKAorICAgICAgICBjbGVhbmVkX2RkbCwKKyAg ICAgICAgJ1xzKlxTKkxPQ0FMRVxTKlxzKj0/XHMqKFsnJyJdKVteJyciXSpcMScsCisJCScnLAor CQknZ2knCisJKTsKKworICAgIC0tIFJlbW92ZSAlQ09MTEFUSU9OJSBwbGFjZWhvbGRlcnMKKyAg ICBjbGVhbmVkX2RkbCA6PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisg ICAgICAgICdccypcUypDT0xMQVRJT05cUypccyo9P1xzKihbJyciXSlbXicnIl0qXDEnLAorICAg ICAgICAnJywKKyAgICAgICAgJ2dpJworICAgICk7CisKKyAgICBSRVRVUk4gY2xlYW5lZF9kZGw7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOwogQ1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3Npb25f dGJkCiAJRU5DT0RJTkcgdXRmOCBMQ19DT0xMQVRFICJDIiBMQ19DVFlQRSAiQyIgVEVNUExBVEUg dGVtcGxhdGUwOwogQUxURVIgREFUQUJBU0UgcmVncmVzc2lvbl90YmQgUkVOQU1FIFRPIHJlZ3Jl c3Npb25fdXRmODsKQEAgLTE2LDYgKzcwLDEyNSBAQCBDUkVBVEUgUk9MRSByZWdyZXNzX2RhdGRi YV9iZWZvcmU7CiBDUkVBVEUgUk9MRSByZWdyZXNzX2RhdGRiYV9hZnRlcjsKIEFMVEVSIERBVEFC QVNFIHJlZ3Jlc3Npb25fdXRmOCBPV05FUiBUTyByZWdyZXNzX2RhdGRiYV9iZWZvcmU7CiBSRUFT U0lHTiBPV05FRCBCWSByZWdyZXNzX2RhdGRiYV9iZWZvcmUgVE8gcmVncmVzc19kYXRkYmFfYWZ0 ZXI7CistLSBUZXN0IHBnX2dldF9kYXRhYmFzZV9kZGwKKy0tIERhdGFiYXNlIGRvZXNuJ3QgZXhp c3RzCitTRUxFQ1QgcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc2lvbl9kYXRhYmFzZScpOwor RVJST1I6ICBkYXRhYmFzZSAicmVncmVzc2lvbl9kYXRhYmFzZSIgZG9lcyBub3QgZXhpc3QKK0xJ TkUgMTogU0VMRUNUIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fZGF0YWJhc2UnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gVGVzdCBOVUxMIHZhbHVl CitTRUxFQ1QgcGdfZ2V0X2RhdGFiYXNlX2RkbChOVUxMKTsKK0VSUk9SOiAgZGF0YWJhc2Ugd2l0 aCBvaWQgMCBkb2VzIG5vdCBleGlzdAorLS0gV2l0aG91dCBvcHRpb25zCitTRUxFQ1QgZGRsX2Zp bHRlcihwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX3V0ZjgnKSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRsX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQ1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3Npb25fdXRmOCBXSVRIIE9XTkVSID0gcmVncmVz c19kYXRkYmFfYWZ0ZXIgQ09OTkVDVElPTiBMSU1JVCA9IDEyMzsKKygxIHJvdykKKworLS0gV2l0 aCBObyBPd25lcgorU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVz c2lvbl91dGY4JywgJ293bmVyJywgZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ZGRsX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBEQVRB QkFTRSByZWdyZXNzaW9uX3V0ZjggV0lUSCBDT05ORUNUSU9OIExJTUlUID0gMTIzOworKDEgcm93 KQorCistLSBXaXRoIE5vIFRhYmxlc3BhY2UKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRh YmFzZV9kZGwoJ3JlZ3Jlc3Npb25fdXRmOCcsICdkZWZhdWx0cycsIHRydWUsICd0YWJsZXNwYWNl JywgZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGRsX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IENSRUFURSBEQVRBQkFTRSByZWdyZXNzaW9uX3V0ZjggV0lUSCBPV05FUiA9IHJlZ3Jlc3NfZGF0 ZGJhX2FmdGVyIEVOQ09ESU5HID0gJ1VURjgnIEFMTE9XX0NPTk5FQ1RJT05TID0gdHJ1ZSBDT05O RUNUSU9OIExJTUlUID0gMTIzOworKDEgcm93KQorCistLSBXaXRoIERlZmF1bHRzCitTRUxFQ1Qg ZGRsX2ZpbHRlcihwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX3V0ZjgnLCAnZGVmYXVs dHMnLCB0cnVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkbF9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUg REFUQUJBU0UgcmVncmVzc2lvbl91dGY4IFdJVEggT1dORVIgPSByZWdyZXNzX2RhdGRiYV9hZnRl ciBFTkNPRElORyA9ICdVVEY4JyBUQUJMRVNQQUNFID0gcGdfZGVmYXVsdCBBTExPV19DT05ORUNU SU9OUyA9IHRydWUgQ09OTkVDVElPTiBMSU1JVCA9IDEyMzsKKygxIHJvdykKKworLS0gV2l0aCBO byBPd25lciwgTm8gVGFibGVzcGFjZSBhbmQgV2l0aCBEZWZhdWx0cworU0VMRUNUIGRkbF9maWx0 ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc2lvbl91dGY4JywgJ293bmVyJywgZmFsc2Us ICd0YWJsZXNwYWNlJywgZmFsc2UsICdkZWZhdWx0cycsIHRydWUpKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRsX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3Npb25f dXRmOCBXSVRIIEVOQ09ESU5HID0gJ1VURjgnIEFMTE9XX0NPTk5FQ1RJT05TID0gdHJ1ZSBDT05O RUNUSU9OIExJTUlUID0gMTIzOworKDEgcm93KQorCistLSBXaXRoIFByZXR0eSBmb3JtYXR0ZWQK K1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFz ZV9kZGwoJ3JlZ3Jlc3Npb25fdXRmOCcsICdwcmV0dHknLCB0cnVlKSk7CitkZGxfZmlsdGVyCitD UkVBVEUgREFUQUJBU0UgcmVncmVzc2lvbl91dGY4CisgICAgV0lUSAorICAgICAgICBPV05FUiA9 IHJlZ3Jlc3NfZGF0ZGJhX2FmdGVyCisgICAgICAgIENPTk5FQ1RJT04gTElNSVQgPSAxMjM7Ciso MSByb3cpCistLSBXaXRoIE5vIE93bmVyIGFuZCBObyBUYWJsZXNwYWNlCitTRUxFQ1QgZGRsX2Zp bHRlcihwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX3V0ZjgnLCAncHJldHR5JywgdHJ1 ZSwgJ293bmVyJywgZmFsc2UsICd0YWJsZXNwYWNlJywgZmFsc2UpKTsKK2RkbF9maWx0ZXIKK0NS RUFURSBEQVRBQkFTRSByZWdyZXNzaW9uX3V0ZjgKKyAgICBXSVRICisgICAgICAgIENPTk5FQ1RJ T04gTElNSVQgPSAxMjM7CisoMSByb3cpCistLSBXaXRoIERlZmF1bHRzCitTRUxFQ1QgZGRsX2Zp bHRlcihwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX3V0ZjgnLCAncHJldHR5JywgdHJ1 ZSwgJ2RlZmF1bHRzJywgdHJ1ZSkpOworZGRsX2ZpbHRlcgorQ1JFQVRFIERBVEFCQVNFIHJlZ3Jl c3Npb25fdXRmOAorICAgIFdJVEgKKyAgICAgICAgT1dORVIgPSByZWdyZXNzX2RhdGRiYV9hZnRl cgorICAgICAgICBFTkNPRElORyA9ICdVVEY4JworICAgICAgICBUQUJMRVNQQUNFID0gcGdfZGVm YXVsdAorICAgICAgICBBTExPV19DT05ORUNUSU9OUyA9IHRydWUKKyAgICAgICAgQ09OTkVDVElP TiBMSU1JVCA9IDEyMzsKKygxIHJvdykKKy0tIFdpdGggTm8gT3duZXIsIE5vIFRhYmxlc3BhY2Ug YW5kIFdpdGggRGVmYXVsdHMKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwo J3JlZ3Jlc3Npb25fdXRmOCcsICdwcmV0dHknLCB0cnVlLCAnb3duZXInLCBmYWxzZSwgJ3RhYmxl c3BhY2UnLCBmYWxzZSwgJ2RlZmF1bHRzJywgdHJ1ZSkpOworZGRsX2ZpbHRlcgorQ1JFQVRFIERB VEFCQVNFIHJlZ3Jlc3Npb25fdXRmOAorICAgIFdJVEgKKyAgICAgICAgRU5DT0RJTkcgPSAnVVRG OCcKKyAgICAgICAgQUxMT1dfQ09OTkVDVElPTlMgPSB0cnVlCisgICAgICAgIENPTk5FQ1RJT04g TElNSVQgPSAxMjM7CisoMSByb3cpCistLSBUZXN0IHdpdGggdGV4dCB2YWx1ZXM6ICd5ZXMnLCAn bm8nLCAnMScsICcwJywgJ29uJywgJ29mZicKK1xwc2V0IGZvcm1hdCBhbGlnbmVkCistLSBVc2lu ZyAneWVzJyBhbmQgJ25vJworU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCgn cmVncmVzc2lvbl91dGY4JywgJ293bmVyJywgJ25vJywgJ2RlZmF1bHRzJywgJ3llcycpKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGRsX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3Np b25fdXRmOCBXSVRIIEVOQ09ESU5HID0gJ1VURjgnIFRBQkxFU1BBQ0UgPSBwZ19kZWZhdWx0IEFM TE9XX0NPTk5FQ1RJT05TID0gdHJ1ZSBDT05ORUNUSU9OIExJTUlUID0gMTIzOworKDEgcm93KQor CistLSBVc2luZyAnMScgYW5kICcwJworU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNl X2RkbCgncmVncmVzc2lvbl91dGY4JywgJ293bmVyJywgJzAnLCAndGFibGVzcGFjZScsICcwJywg J2RlZmF1bHRzJywgJzEnKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRkbF9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIENSRUFURSBEQVRBQkFTRSByZWdyZXNzaW9uX3V0ZjggV0lUSCBFTkNPRElORyA9ICdV VEY4JyBBTExPV19DT05ORUNUSU9OUyA9IHRydWUgQ09OTkVDVElPTiBMSU1JVCA9IDEyMzsKKygx IHJvdykKKworLS0gVXNpbmcgJ29uJyBhbmQgJ29mZicKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dl dF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fdXRmOCcsICdvd25lcicsICdvZmYnLCAncHJldHR5 JywgJ29uJykpOworICAgICAgICAgICBkZGxfZmlsdGVyICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgREFUQUJBU0UgcmVncmVzc2lvbl91dGY4 KworICAgICBXSVRIICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBDT05ORUNUSU9O IExJTUlUID0gMTIzOworKDEgcm93KQorCistLSBNaXhlZCBib29sZWFuIGFuZCB0ZXh0IHZhbHVl cworU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc2lvbl91dGY4 JywgJ293bmVyJywgZmFsc2UsICdkZWZhdWx0cycsICd0cnVlJywgJ3RhYmxlc3BhY2UnLCAnbm8n KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkbF9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBE QVRBQkFTRSByZWdyZXNzaW9uX3V0ZjggV0lUSCBFTkNPRElORyA9ICdVVEY4JyBBTExPV19DT05O RUNUSU9OUyA9IHRydWUgQ09OTkVDVElPTiBMSU1JVCA9IDEyMzsKKygxIHJvdykKKworLS0gVGVz dCBkdXBsaWNhdGUgb3B0aW9uIChzaG91bGQgZXJyb3IpCitTRUxFQ1QgcGdfZ2V0X2RhdGFiYXNl X2RkbCgncmVncmVzc2lvbl91dGY4JywgJ293bmVyJywgZmFsc2UsICdvd25lcicsIHRydWUpOwor RVJST1I6ICBvcHRpb24gIm93bmVyIiBpcyBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UKKy0tIFRl c3QgaW52YWxpZCB0ZXh0IHZhbHVlIChzaG91bGQgZXJyb3IpCitTRUxFQ1QgcGdfZ2V0X2RhdGFi YXNlX2RkbCgncmVncmVzc2lvbl91dGY4JywgJ293bmVyJywgJ2ludmFsaWQnKTsKK0VSUk9SOiAg YXJndW1lbnQgMjogaW52YWxpZCB2YWx1ZSAiaW52YWxpZCIgZm9yIGtleSAib3duZXIiCitISU5U OiAgVmFsaWQgdmFsdWVzIGFyZTogdHJ1ZSwgZmFsc2UsIHllcywgbm8sIDEsIDAsIG9uLCBvZmYu CiBEUk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25fdXRmODsKIERST1AgUk9MRSByZWdyZXNzX2RhdGRi YV9iZWZvcmU7CiBEUk9QIFJPTEUgcmVncmVzc19kYXRkYmFfYWZ0ZXI7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9kYXRhYmFzZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9k YXRhYmFzZS5zcWwKaW5kZXggNGVmMzYxMjcyOTEuLjA1ZmQ5NGFiOWI0IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9kYXRhYmFzZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvZGF0YWJhc2Uuc3FsCkBAIC0xLDMgKzEsNTkgQEAKKy0tCistLSBSZWNvbnN0cnVjdCBEREwK Ky0tCistLSBUbyBwcm9kdWNlIHN0YWJsZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0LCBpdCdzIHVz dWFsbHkgbmVjZXNzYXJ5IHRvCistLSBpZ25vcmUgY29sbGF0aW9uIGFuZCBsb2NhbGUgcmVsYXRl ZCBkZXRhaWxzLiBUaGlzIGZpbHRlcgorLS0gZnVuY3Rpb25zIHJlbW92ZXMgY29sbGF0aW9uIGFu ZCBsb2NhbGUgcmVsYXRlZCBkZXRhaWxzLgorCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBk ZGxfZmlsdGVyKGRkbF9pbnB1dCBURVhUKQorUkVUVVJOUyBURVhUIEFTICQkCitERUNMQVJFCisg ICAgY2xlYW5lZF9kZGwgVEVYVDsKK0JFR0lOCisgICAgLS0gUmVtb3ZlICVMT0NBTEVfUFJPVklE RVIlIHBsYWNlaG9sZGVycworICAgIGNsZWFuZWRfZGRsIDo9IHJlZ2V4cF9yZXBsYWNlKAorICAg ICAgICBkZGxfaW5wdXQsCisgICAgICAgICdccypcbUxPQ0FMRV9QUk9WSURFUlxNXHMqPVxzKihb JyciXT9bXicnIlxzXStbJyciXT8pJywKKyAgICAgICAgJycsCisgICAgICAgICdnaScKKyAgICAp OworCisJLS0gUmVtb3ZlIExDX0NPTExBVEUgYXNzaWdubWVudHMKKyAgICBjbGVhbmVkX2RkbCA6 PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisgICAgICAgICdccypMQ19D T0xMQVRFXHMqPVxzKihbJyciXSlbXicnIl0qXDEnLAorICAgICAgICAnJywKKyAgICAgICAgJ2dp JworICAgICk7CisKKyAgICAtLSBSZW1vdmUgTENfQ1RZUEUgYXNzaWdubWVudHMKKyAgICBjbGVh bmVkX2RkbCA6PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisgICAgICAg ICdccypMQ19DVFlQRVxzKj1ccyooWycnIl0pW14nJyJdKlwxJywKKyAgICAgICAgJycsCisgICAg ICAgICdnaScKKyAgICApOworCisgICAgLS0gUmVtb3ZlICVMT0NBTEUlIHBsYWNlaG9sZGVycwor ICAgIGNsZWFuZWRfZGRsIDo9IHJlZ2V4cF9yZXBsYWNlKAorICAgICAgICBjbGVhbmVkX2RkbCwK KyAgICAgICAgJ1xzKlxTKkxPQ0FMRVxTKlxzKj0/XHMqKFsnJyJdKVteJyciXSpcMScsCisJCScn LAorCQknZ2knCisJKTsKKworICAgIC0tIFJlbW92ZSAlQ09MTEFUSU9OJSBwbGFjZWhvbGRlcnMK KyAgICBjbGVhbmVkX2RkbCA6PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5lZF9kZGws CisgICAgICAgICdccypcUypDT0xMQVRJT05cUypccyo9P1xzKihbJyciXSlbXicnIl0qXDEnLAor ICAgICAgICAnJywKKyAgICAgICAgJ2dpJworICAgICk7CisKKyAgICBSRVRVUk4gY2xlYW5lZF9k ZGw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCiBDUkVBVEUgREFUQUJBU0UgcmVncmVz c2lvbl90YmQKIAlFTkNPRElORyB1dGY4IExDX0NPTExBVEUgIkMiIExDX0NUWVBFICJDIiBURU1Q TEFURSB0ZW1wbGF0ZTA7CiBBTFRFUiBEQVRBQkFTRSByZWdyZXNzaW9uX3RiZCBSRU5BTUUgVE8g cmVncmVzc2lvbl91dGY4OwpAQCAtMTksNiArNzUsNjEgQEAgQ1JFQVRFIFJPTEUgcmVncmVzc19k YXRkYmFfYWZ0ZXI7CiBBTFRFUiBEQVRBQkFTRSByZWdyZXNzaW9uX3V0ZjggT1dORVIgVE8gcmVn cmVzc19kYXRkYmFfYmVmb3JlOwogUkVBU1NJR04gT1dORUQgQlkgcmVncmVzc19kYXRkYmFfYmVm b3JlIFRPIHJlZ3Jlc3NfZGF0ZGJhX2FmdGVyOwogCistLSBUZXN0IHBnX2dldF9kYXRhYmFzZV9k ZGwKKy0tIERhdGFiYXNlIGRvZXNuJ3QgZXhpc3RzCitTRUxFQ1QgcGdfZ2V0X2RhdGFiYXNlX2Rk bCgncmVncmVzc2lvbl9kYXRhYmFzZScpOworCistLSBUZXN0IE5VTEwgdmFsdWUKK1NFTEVDVCBw Z19nZXRfZGF0YWJhc2VfZGRsKE5VTEwpOworCistLSBXaXRob3V0IG9wdGlvbnMKK1NFTEVDVCBk ZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fdXRmOCcpKTsKKworLS0g V2l0aCBObyBPd25lcgorU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVn cmVzc2lvbl91dGY4JywgJ293bmVyJywgZmFsc2UpKTsKKworLS0gV2l0aCBObyBUYWJsZXNwYWNl CitTRUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX3V0Zjgn LCAnZGVmYXVsdHMnLCB0cnVlLCAndGFibGVzcGFjZScsIGZhbHNlKSk7CisKKy0tIFdpdGggRGVm YXVsdHMKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25f dXRmOCcsICdkZWZhdWx0cycsIHRydWUpKTsKKworLS0gV2l0aCBObyBPd25lciwgTm8gVGFibGVz cGFjZSBhbmQgV2l0aCBEZWZhdWx0cworU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNl X2RkbCgncmVncmVzc2lvbl91dGY4JywgJ293bmVyJywgZmFsc2UsICd0YWJsZXNwYWNlJywgZmFs c2UsICdkZWZhdWx0cycsIHRydWUpKTsKKworLS0gV2l0aCBQcmV0dHkgZm9ybWF0dGVkCitccHNl dCBmb3JtYXQgdW5hbGlnbmVkCitTRUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRfZGF0YWJhc2VfZGRs KCdyZWdyZXNzaW9uX3V0ZjgnLCAncHJldHR5JywgdHJ1ZSkpOworCistLSBXaXRoIE5vIE93bmVy IGFuZCBObyBUYWJsZXNwYWNlCitTRUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRfZGF0YWJhc2VfZGRs KCdyZWdyZXNzaW9uX3V0ZjgnLCAncHJldHR5JywgdHJ1ZSwgJ293bmVyJywgZmFsc2UsICd0YWJs ZXNwYWNlJywgZmFsc2UpKTsKKworLS0gV2l0aCBEZWZhdWx0cworU0VMRUNUIGRkbF9maWx0ZXIo cGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc2lvbl91dGY4JywgJ3ByZXR0eScsIHRydWUsICdk ZWZhdWx0cycsIHRydWUpKTsKKworLS0gV2l0aCBObyBPd25lciwgTm8gVGFibGVzcGFjZSBhbmQg V2l0aCBEZWZhdWx0cworU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVn cmVzc2lvbl91dGY4JywgJ3ByZXR0eScsIHRydWUsICdvd25lcicsIGZhbHNlLCAndGFibGVzcGFj ZScsIGZhbHNlLCAnZGVmYXVsdHMnLCB0cnVlKSk7CisKKy0tIFRlc3Qgd2l0aCB0ZXh0IHZhbHVl czogJ3llcycsICdubycsICcxJywgJzAnLCAnb24nLCAnb2ZmJworXHBzZXQgZm9ybWF0IGFsaWdu ZWQKKy0tIFVzaW5nICd5ZXMnIGFuZCAnbm8nCitTRUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRfZGF0 YWJhc2VfZGRsKCdyZWdyZXNzaW9uX3V0ZjgnLCAnb3duZXInLCAnbm8nLCAnZGVmYXVsdHMnLCAn eWVzJykpOworCistLSBVc2luZyAnMScgYW5kICcwJworU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0 X2RhdGFiYXNlX2RkbCgncmVncmVzc2lvbl91dGY4JywgJ293bmVyJywgJzAnLCAndGFibGVzcGFj ZScsICcwJywgJ2RlZmF1bHRzJywgJzEnKSk7CisKKy0tIFVzaW5nICdvbicgYW5kICdvZmYnCitT RUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX3V0ZjgnLCAn b3duZXInLCAnb2ZmJywgJ3ByZXR0eScsICdvbicpKTsKKworLS0gTWl4ZWQgYm9vbGVhbiBhbmQg dGV4dCB2YWx1ZXMKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jl c3Npb25fdXRmOCcsICdvd25lcicsIGZhbHNlLCAnZGVmYXVsdHMnLCAndHJ1ZScsICd0YWJsZXNw YWNlJywgJ25vJykpOworCistLSBUZXN0IGR1cGxpY2F0ZSBvcHRpb24gKHNob3VsZCBlcnJvcikK K1NFTEVDVCBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX3V0ZjgnLCAnb3duZXInLCBm YWxzZSwgJ293bmVyJywgdHJ1ZSk7CisKKy0tIFRlc3QgaW52YWxpZCB0ZXh0IHZhbHVlIChzaG91 bGQgZXJyb3IpCitTRUxFQ1QgcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc2lvbl91dGY4Jywg J293bmVyJywgJ2ludmFsaWQnKTsKKwogRFJPUCBEQVRBQkFTRSByZWdyZXNzaW9uX3V0Zjg7CiBE Uk9QIFJPTEUgcmVncmVzc19kYXRkYmFfYmVmb3JlOwogRFJPUCBST0xFIHJlZ3Jlc3NfZGF0ZGJh X2FmdGVyOwotLSAKMi41MS4wCgo= --0000000000002d2916064c3266ac--