Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rZX6U-00503Q-WE for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Feb 2024 14:16:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rZX6T-00AE2i-5s for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Feb 2024 14:16:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rZX6S-00AE2Z-Nd for pgsql-hackers@lists.postgresql.org; Mon, 12 Feb 2024 14:16:12 +0000 Received: from mail-roabra01olkn2101.outbound.protection.outlook.com ([40.92.96.101] helo=BRA01-ROA-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rZX6M-006os0-RZ for pgsql-hackers@postgresql.org; Mon, 12 Feb 2024 14:16:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fg/y+xm5TneNwwhr6PQYOmsPS7Zbo1tydgvDBb9uwaR1ATWXStjbAJL1TpCE+rlJC6BYDO3sccBBq2VZ1WIF08hui5RBexg+lzp5tjSRs2LxcAqmKEeWWT7NcgwF0+64ptJgDaZcERmrgW8wsVM2rF97OTAhiWsWx+DKkSGzluhHZ3mlPEBI++JHhER297840m+E/4A2dUid21P8322Gq7NhVC7avFHOshchW1N8dOrJNdsN6af8CLLBGG2S5w8Yifj39oD5kXX+f2XCOUzJsb0MTMZOyQj6UwwwL2nWwCxYaoKqKf0jbjXC2lfFv4eW8qvD8p0X0klvxfNcOuS46g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=67HgsjUzNPsb64m3gF3RV2wWK9gUKCzn4ZpOILk6dL0=; b=errVsFv/2IkDLFaoJo7g5ER7F+F5ERDKeVdW6z7CPcgIVafr2n49HsnIR00nnN95wwY6HOZx1ROUB/TztnXT/eNOYLhWVamxy8p2w9zDZeQM2dSPJgp2njE+mSNyK891LooBc5rG3Panu/b4mnLJQvNATUw4V2Zq1KzmFsOJvk98rH9404cFIraH6ScnJlGCNKFaLDDPSleLpHL/dbjFhMtwx9NiKX1o+6TaMErtXA6hLFVZsWRwioIhLlRc/xKpSCc8URfV9HMFKV7nqIHkPRhJGUr0twVm1HW0qybapdONz1Tv0oOLZNiowK3z3Yf5ep+zaKTfkdgilub0B8BX2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:2dc::11) by CP5P284MB2988.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:2e6::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.38; Mon, 12 Feb 2024 14:16:00 +0000 Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf]) by CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf%6]) with mapi id 15.20.7270.036; Mon, 12 Feb 2024 14:16:00 +0000 From: Maiquel Grassi To: Pavel Luzanov , Nathan Bossart CC: Erik Wienhold , "pgsql-hackers@postgresql.org" Subject: RE: Psql meta-command conninfo+ Thread-Topic: Psql meta-command conninfo+ Thread-Index: AQHaWRQuU7L2MD2CX0quiO/hLxQK8bD9n9eAgAAOagCAABlrgoAABsOAgAABrYCAAAkRMoAAAaIAgABfmwKAAJe3AIAAHVoLgAAnEwCAADA+O4ABA4CAgAA4UGOAASa0gIAFGF5s Date: Mon, 12 Feb 2024 14:16:00 +0000 Message-ID: References: <20240206181919.GA3853632@nathanxps13> <20240206210605.GA3903769@nathanxps13> <20240206211205.GA3903996@nathanxps13> <20240206215022.GA3452@nathanxps13> <852cabef-f596-4826-9a54-d3f75d9a6cc8@postgrespro.ru> <49edac91-d47f-4cac-ae12-d51cabbd87c9@postgrespro.ru> In-Reply-To: <49edac91-d47f-4cac-ae12-d51cabbd87c9@postgrespro.ru> Accept-Language: pt-BR, en-US Content-Language: pt-BR X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [HgntdsVcRn/hIH1EyFLw2uAcKBdh459J] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CP8P284MB2496:EE_|CP5P284MB2988:EE_ x-ms-office365-filtering-correlation-id: 651411dc-3077-4b69-720d-08dc2bd5235d x-ms-exchange-slblob-mailprops: gMiuAN0LASJocQ91h8Uyk+eQKXowJOuE9/ZxSuwEjrc3NB9eXDToQNLe74teBOdb0HMtym6GyuPkQ1Fapko5pKGcgWAbqld2RELXpMy0hG8weRJ1baN4ku8FEUH8ubptiPqONV6JDmrdHHjfG5WxIswRmfk8cpfqfA/EsZOy1U1Mq21euAFCFtM/fReCTn8cZYdNnA8Zw7/of9Nh3HSdwgwbR8+P6s9SdIBz96YXpJ6mEu94GChWZaqig3huWgExKHLDovSR0+EU3MOygF/5Fcd/nBuCFM9mleytPKaW5njF85dPRs/kdtxDTRNBhDiw9F1vaw+SsSvfTquRGy3A/bbfISMLslYP2oRRKxzTXZtvotJs4K+vGdbSWfwbMlVc83Klr3TsiamCpsdoL/j7basTMloCkDyEuOFANAZRqwL/s0j4qrW8Wfxvq5CByCnasUFmFs793PJngkLDz2rN2z08RTYBloeRRI2evSYKbLL6Ni59S3RAnYc2rR8/UhFHZ2lSenSyy+2/bI04cTRABqEFkbCYH4UuKFFfeg8bqDHfRsOrLA21RDqb/w5tdJyCHaVVAG5MH/md662NXOYenyy864M2vpKRSvXW1AHeeeQbyOpppdJOlQEF6Z2RU9dkWRqhpGGDkFSaoslSYyPLpDR1L7Rxs/9TJTSG3s4ymUGSDfpI7gN7DqrZYF1jg57f3QNfWO3Du5NqzXZlB9P0jQ== x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: P/U0iGfOSGViKeZ40KJxH2bUUH80K6CZ0Po/EKf4DTHnQYLzuRG6+xdAwpCXuhw9Pp9Wl+1PRfDO7boZb9UqBYCXbAzakSlVi12KioHQEnREjRo1NlZlg7RX+YwcgseJEft+GOvBY9mJ67+7LdNhiAmarv8FMin0ehdQQfzcTkFIn9Wy/+ge0ypfysggtVpNXqN5u+9TxT2e4JrbcfunMGFnRuGXurnlhzu/p4FVU4lfAXiLW5iMHHni0vjycfO3bGgPib49BUmSsRyuXQUbRgif7ZBECwK8j9ncpkGfugNu5U6B9S1d+vFbHjcvNOJk7TeEwPPrqmlSq1lV/XMxJLHnkDr3vmRSbVWxlzscGNaMBbG5ELMi341kc6bwdO+DipSl6sguYMf/cw9lBtloz2pSeN4SNbhQsllChgll6KWR8aTmrMW97qWvAxDHlSf6WdI3WN0zZAvaQFF4+EP2llVLbGboLqX/js5KJFdBREGVNojzD2Ew2hCR2AgtrBdsotp1zHBrYMnuh/it1RM2nQyP0iSykAtgVoBR4exiNMTul0UuYrfIuRCT552mDjNe3D30vau3WD0R7JU8x7xcyXoOm7Ve6WCd0MsfOGOtRtwDVsYBTB/pAiFJFzdBTsrL x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?WwkxVUsuD5H+j6SdHmNMnS1DQ3hFNK22NFVQAGrNivoe4SJClCbsMMRxIR?= =?iso-8859-1?Q?rMv27/pfwRFnFjCscWk5VtfqBaoIARwHCFUBEv500q7ppLWlPBF84rzgIA?= =?iso-8859-1?Q?fw5vRroWJnCivvW1LQX5FNTc3RGzCbv48vbWVnLjREPXfjHtF3NwLNqBfl?= =?iso-8859-1?Q?POI3pUuDuoZhb4Z7pD+3quURti3bAs8tCthxk20+iGJpRYjO5raKmJLXyG?= =?iso-8859-1?Q?yGqeLeJDD8h9uqWWQsZQw2bBq6JboZ272pixnUNMQvDQUg6BEiNCDzLnfl?= =?iso-8859-1?Q?GJw1IGvMIy6gukmweoldy1XEAhqjbu1v3qBKxShvIfWQvTuTyiww4DSmIU?= =?iso-8859-1?Q?kZGI3TDIOASZH92j0XGp5ZYKSu6KxagwlkyJExKrc/UC4369oR9wgO4BVv?= =?iso-8859-1?Q?A8Yd+4O8DxWB+hBt+ViDVjrZvkeiV6d5yNIqMgzCgolmdW9a51UCJfocqT?= =?iso-8859-1?Q?xIePoobcIb0VH9+Qgg7KNL1oDQ3hgr1kd4PJlWCPkd6f3fCCgM9yYbYi3W?= =?iso-8859-1?Q?Rv025p7QCgX1FdSLa0jA+iDddK1GR970Fe8YHwGlQQCSnSizSu/wol1Q/T?= =?iso-8859-1?Q?cQCFN/8tSp7L/NQfDm9zWKRMQNZ3JSOp9sNVIym4wP4Xq3D0DdAzbK8Cjv?= =?iso-8859-1?Q?TOOex/s6vGJcxDdR8Yd3CpRulb2gWoIy2jC941joCBSYPgxa/62RBsyBti?= =?iso-8859-1?Q?ekXte4gYYTlBjpgsbVVxfBXhcV1RELrznhNEaag8FSttHLDMOzjXblpkPH?= =?iso-8859-1?Q?oS8DwUHrA4fkNUBJVKe16Csw62KMk7O9ELlKtAanx3j/BoC8KvDgsNPlds?= =?iso-8859-1?Q?Zk/CYnnixyHdGBEHKMOUiAETldqMhngu4MF5txK4DzyA8MZ1eDhH2AG8kZ?= =?iso-8859-1?Q?e0Sxj8Ezb70rWMHitJQw0RZgxeimrHK/37kORyuL3os619ZxLv9DRAIIfL?= =?iso-8859-1?Q?e+PQ8Qa1K7gqyYUGdy5z5j8X7WxaDHqh2hS337zDUQlY03kO7gbJZbP4VO?= =?iso-8859-1?Q?9NtLyBNM0OMPEIzRlhMPf3dZDgfOPH4ZAJ5a7h4kVTdQvBYigPykrjrxOv?= =?iso-8859-1?Q?l9U6xc7gmfaqfZLWk7FO5e7LT2kZvWbuIA8911Q36DbNR5ojzUgvgcBrMl?= =?iso-8859-1?Q?h7Zj35PCyeEKgZKKbfeHs2OSGCCR3JiFnEIFTpJNjoUDBjEJsxOqs3+R7k?= =?iso-8859-1?Q?PIB0Yhks+Fb6zKEST3L8tB3tkezhlU2lCGRxufVMqGEuCp7P30hU9WYvq5?= =?iso-8859-1?Q?t6UtHuOAa44ZG43ItgjQ=3D=3D?= Content-Type: multipart/mixed; boundary="_004_CP8P284MB2496C7F14594722472C9FEBAEC482CP8P284MB2496BRAP_" MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-7dc52.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 651411dc-3077-4b69-720d-08dc2bd5235d X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Feb 2024 14:16:00.0606 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CP5P284MB2988 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_CP8P284MB2496C7F14594722472C9FEBAEC482CP8P284MB2496BRAP_ Content-Type: multipart/alternative; boundary="_000_CP8P284MB2496C7F14594722472C9FEBAEC482CP8P284MB2496BRAP_" --_000_CP8P284MB2496C7F14594722472C9FEBAEC482CP8P284MB2496BRAP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable >I found that \conninfo and \conninfo+ act differently when the connection = is broken. >I used pg_terminate_backend function from another session to terminate an = open psql session. >After that, \conninfo does not see the connection break (surprisingly!), a= nd \conninfo+ returns an error: > >postgres@postgres(17.0)=3D# \conninfo+ >FATAL: terminating connection due to administrator command >server closed the connection unexpectedly > This probably means the server terminated abnormally > before or while processing the request. >The connection to the server was lost. Attempting reset: Succeeded. > >postgres@postgres(17.0)=3D# \conninfo >You are connected to database "postgres" as user "postgres" via socket in = "/tmp" at port "5401". > >Another surprise is that this check: if (db =3D=3D NULL) did not work in b= oth cases. --//-- Hi Pavel! (v14) The "if (db =3D=3D NULL)" has been removed, as well as the message inside it. To always maintain the same error messages, I changed the validation of "\conninfo" to match the validation used for "\conninfo+". Therefore, now "\conninfo" and "\conninfo+" return the same error when "pg_terminate_backend()" terminates this session through another session. The result of the adjustment is as follows: Case 1 ("\conninfo+"): [postgres@localhost bin]$ ./psql -x psql (17devel) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" via socket in "= /tmp" at port "5432". postgres=3D# \conninfo+ Current Connection Information -[ RECORD 1 ]------+--------- Database | postgres Authenticated User | postgres System User | Current User | postgres Session User | postgres Backend PID | 24381 Server Address | Server Port | 5432 Client Address | Client Port | Socket Directory | /tmp Host | postgres=3D# \conninfo+ FATAL: terminating connection due to administrator command server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. The connection to the server was lost. Attempting reset: Succeeded. Case 2 ("\conninfo"): [postgres@localhost bin]$ ./psql -x psql (17devel) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" via socket in "= /tmp" at port "5432". postgres=3D# \conninfo+ Current Connection Information -[ RECORD 1 ]------+--------- Database | postgres Authenticated User | postgres System User | Current User | postgres Session User | postgres Backend PID | 24539 Server Address | Server Port | 5432 Client Address | Client Port | Socket Directory | /tmp Host | postgres=3D# \conninfo FATAL: terminating connection due to administrator command server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. The connection to the server was lost. Attempting reset: Succeeded. In both cases, the sessions were terminated by another session. Regards, Maiquel Grassi. --_000_CP8P284MB2496C7F14594722472C9FEBAEC482CP8P284MB2496BRAP_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

>I found that \conninfo and \conninfo= + act differently when the connection is broken.=0A= >I used pg_terminate_backend function from another session to terminate = an open psql session.=0A= >After that, \conninfo does not see the connection break (surprisingly!)= , and \conninfo+ returns an error:=0A= >=0A= >postgres@postgres(17.0)=3D# \conninfo+=0A= >FATAL: terminating connection due to administrator command=0A= >server closed the connection unexpectedly=0A= > This probably means the server terminated abnormally=0A= > before or while processing the request.=0A= >The connection to the server was lost. Attempting reset: Succeeded.=0A= >=0A= >postgres@postgres(17.0)=3D# \conninfo=0A= >You are connected to database "postgres" as user "postgr= es" via socket in "/tmp" at port "5401".=0A= >=0A= >Another surprise is that this check: if (db =3D=3D NULL) did not work in both cases.

--//--

Hi= Pavel!

(v14)

The "if (db =3D=3D NULL)" has been re= moved, as well
as the message inside it. To always maintain the
same = error messages, I changed the validation of
"\conninfo" to mat= ch the validation used for "\conninfo+".
Therefore, now "= \conninfo" and "\conninfo+" return
the same error when &q= uot;pg_terminate_backend()" terminates
this session through another= session. The result of
the adjustment is as follows:

=
Case 1 ("\conninfo+"):

[= postgres@localhost bin]$ ./psql -x
psql (17devel= )
= Type "help"= for help.

postgres=3D# \conninfo
You a= re connected to database "postgres" as user "postgres" = via socket in "/tmp" at port "5432".
postgres=3D# \conninfo+
Current Connection Information
-[ RECORD 1 ]------+---------
Database           | post= gres
Authenticated User | postgres
<= div style=3D"white-space: normal;">System User        |
Current User       | postgres
Session User       | postgres
Server Address     |
Server Port        | 5432
Client Address     |
=
Client Port        |
Socket Directory   | /tmp
Host &nbs= p;             |
<= br>
postgres=3D# \conninfo+
FATAL:  terminating connection due to administrator command
server closed the connection unexpectedly
        This probably means the serve= r terminated abnormally
      &nb= sp; before or while processing the request.
The connection to the server was lost. Attempting rese= t: Succeeded.

Case 2 ("\conninfo&= quot;):

[postgres@localhost bin]$ ./psql -x
psql (17devel)
Type "help" for = help.

postgres= =3D# \conninfo
You are connected to database &q= uot;postgres" as user "postgres" via socket in "/tmp&qu= ot; at port "5432".
postgres=3D# \conn= info+
Current Connection Information
-[ RECORD 1 ]------+---------
Da= tabase           | postgres
Authenticated User | postgres
System User        |
Current User       | postgres
B= ackend PID        | 24539
Se= rver Address     |
Server Port   =      | 5432
= Client Address  =   |
Client Port        = ;|
Socket Directory &nb= sp; | /tmp
Host         &nbs= p;     |

postgres=3D# \conninfo
FATAL:  termina= ting connection due to administrator command
ser= ver closed the connection unexpectedly
  &n= bsp;     This probably means the server terminated abnormally
        before or while process= ing the request.

The connection to the server was lost. Attempt= ing reset: Succeeded.

In both cases, the sessions were terminated by= another session.

Regards,
Maiquel Grassi.

--_000_CP8P284MB2496C7F14594722472C9FEBAEC482CP8P284MB2496BRAP_-- --_004_CP8P284MB2496C7F14594722472C9FEBAEC482CP8P284MB2496BRAP_ Content-Type: application/octet-stream; name="v14-0001-psql-meta-command-conninfo-plus.patch" Content-Description: v14-0001-psql-meta-command-conninfo-plus.patch Content-Disposition: attachment; filename="v14-0001-psql-meta-command-conninfo-plus.patch"; size=9833; creation-date="Mon, 12 Feb 2024 14:15:44 GMT"; modification-date="Mon, 12 Feb 2024 14:15:59 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCBjYzdkNzk3Li40ZTg2YWQ5IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCkBAIC0xMDI5LDEwICsxMDI5LDE0IEBAIElOU0VSVCBJTlRPIHRibDEgVkFMVUVT ICgkMSwgJDIpIFxiaW5kICdmaXJzdCB2YWx1ZScgJ3NlY29uZCB2YWx1ZScgXGcKICAgICAgIDwv dmFybGlzdGVudHJ5PgogCiAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAtcHNxbC1tZXRhLWNv bW1hbmQtY29ubmluZm8iPgotICAgICAgICA8dGVybT48bGl0ZXJhbD5cY29ubmluZm88L2xpdGVy YWw+PC90ZXJtPgorICAgICAgICA8dGVybT48bGl0ZXJhbD5cY29ubmluZm9bK108L2xpdGVyYWw+ PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgIDxwYXJhPgogICAgICAgICBPdXRw dXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGRhdGFiYXNlIGNvbm5lY3Rpb24uCisg ICAgICAgIFdoZW4gbm8gPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkLCBpdCBzaW1w bHkgcHJpbnRzCisgICAgICAgIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiBhIGZldyBjb25uZWN0 aW9uIG9wdGlvbnMuCisgICAgICAgIFdoZW4gPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgZ2l2ZW4s IG1vcmUgY29tcGxldGUgaW5mb3JtYXRpb24KKyAgICAgICAgaXMgZGlzcGxheWVkIGFzIGEgdGFi bGUuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlz dGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNx bC9jb21tYW5kLmMKaW5kZXggNWM5MDZlNC4uODgxZGZlMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC02OCw3ICs2OCw4 IEBAIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX0MoUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuCiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNf Y29tbWFuZF9jb25uZWN0KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJh bmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2NkKFBzcWxTY2FuU3Rh dGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJCQkJCQkJICAgY29uc3QgY2hh ciAqY21kKTsKLXN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nvbm5pbmZvKFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKK3N0YXRpYyBiYWNr c2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nvbm5pbmZvKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAorCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqY21kKTsKIHN0 YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2NvcHkoUHNxbFNjYW5TdGF0ZSBzY2Fu X3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVj X2NvbW1hbmRfY29weXJpZ2h0KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVf YnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nyb3NzdGFidmll dyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CkBAIC0zMTcs OCArMzE4LDggQEAgZXhlY19jb21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAkJc3RhdHVzID0gZXhl Y19jb21tYW5kX2Nvbm5lY3Qoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAo c3RyY21wKGNtZCwgImNkIikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2NkKHNjYW5f c3RhdGUsIGFjdGl2ZV9icmFuY2gsIGNtZCk7Ci0JZWxzZSBpZiAoc3RyY21wKGNtZCwgImNvbm5p bmZvIikgPT0gMCkKLQkJc3RhdHVzID0gZXhlY19jb21tYW5kX2Nvbm5pbmZvKHNjYW5fc3RhdGUs IGFjdGl2ZV9icmFuY2gpOworCWVsc2UgaWYgKHN0cmNtcChjbWQsICJjb25uaW5mbyIpID09IDAg fHwgc3RyY21wKGNtZCwgImNvbm5pbmZvKyIpID09IDApCisJCXN0YXR1cyA9IGV4ZWNfY29tbWFu ZF9jb25uaW5mbyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoLCBjbWQpOwogCWVsc2UgaWYgKHBn X3N0cmNhc2VjbXAoY21kLCAiY29weSIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9j b3B5KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJj b3B5cmlnaHQiKSA9PSAwKQpAQCAtNjQzLDQ3ICs2NDQsNzUgQEAgZXhlY19jb21tYW5kX2NkKFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpj bWQpCiB9CiAKIC8qCi0gKiBcY29ubmluZm8gLS0gZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgY3VycmVudCBjb25uZWN0aW9uCisgKiBcY29ubmluZm8sIFxjb25uaW5mbysgLS0gZGlzcGxh eSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBjb25uZWN0aW9uCiAgKi8KIHN0YXRpYyBi YWNrc2xhc2hSZXN1bHQKLWV4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK2V4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2Nh blN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQog eworCWJvb2wJCXN1Y2Nlc3MgPSB0cnVlOworCiAJaWYgKGFjdGl2ZV9icmFuY2gpCiAJewogCQlj aGFyCSAgICpkYiA9IFBRZGIocHNldC5kYik7CisJCWJvb2wJCXNob3dfdmVyYm9zZTsKKworCQlz aG93X3ZlcmJvc2UgPSBzdHJjaHIoY21kLCAnKycpID8gdHJ1ZSA6IGZhbHNlOworCisJCS8qCisJ CSAqIFxjb25uaW5mbysKKwkJICovCisJCWlmIChzaG93X3ZlcmJvc2UpCisJCQlzdWNjZXNzID0g bGlzdENvbm5lY3Rpb25JbmZvcm1hdGlvbigpOwogCi0JCWlmIChkYiA9PSBOVUxMKQotCQkJcHJp bnRmKF8oIllvdSBhcmUgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS5cbiIp KTsKKwkJLyoKKwkJICogXGNvbm5pbmZvCisJCSAqLwogCQllbHNlCiAJCXsKLQkJCWNoYXIJICAg Kmhvc3QgPSBQUWhvc3QocHNldC5kYik7Ci0JCQljaGFyCSAgICpob3N0YWRkciA9IFBRaG9zdGFk ZHIocHNldC5kYik7CisJCQlQR3Jlc3VsdCAgICpyZXM7CisJCQlQUUV4cEJ1ZmZlckRhdGEgYnVm OwogCi0JCQlpZiAoaXNfdW5peHNvY2tfcGF0aChob3N0KSkKLQkJCXsKLQkJCQkvKiBob3N0YWRk ciBvdmVycmlkZXMgaG9zdCAqLwotCQkJCWlmIChob3N0YWRkciAmJiAqaG9zdGFkZHIpCi0JCQkJ CXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBc IiVzXCIgb24gYWRkcmVzcyBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKLQkJCQkJCSAgIGRi LCBQUXVzZXIocHNldC5kYiksIGhvc3RhZGRyLCBQUXBvcnQocHNldC5kYikpOwotCQkJCWVsc2UK LQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1 c2VyIFwiJXNcIiB2aWEgc29ja2V0IGluIFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAotCQkJ CQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBzZXQuZGIpKTsKLQkJCX0K KwkJCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICJT RUxFQ1Q7Iik7CisJCQlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQl0ZXJtUFFFeHBCdWZm ZXIoJmJ1Zik7CisKKwkJCWlmICghcmVzKQorCQkJCXJldHVybiBQU1FMX0NNRF9FUlJPUjsKIAkJ CWVsc2UKIAkJCXsKLQkJCQlpZiAoaG9zdGFkZHIgJiYgKmhvc3RhZGRyICYmIHN0cmNtcChob3N0 LCBob3N0YWRkcikgIT0gMCkKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRh dGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiAoYWRkcmVzcyBcIiVz XCIpIGF0IHBvcnQgXCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBo b3N0LCBob3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQljaGFyCSAgICpob3N0ID0gUFFo b3N0KHBzZXQuZGIpOworCQkJCWNoYXIJICAgKmhvc3RhZGRyID0gUFFob3N0YWRkcihwc2V0LmRi KTsKKworCQkJCWlmIChpc191bml4c29ja19wYXRoKGhvc3QpKQorCQkJCXsKKwkJCQkJLyogaG9z dGFkZHIgb3ZlcnJpZGVzIGhvc3QgKi8KKwkJCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkcikK KwkJCQkJCXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMg dXNlciBcIiVzXCIgb24gYWRkcmVzcyBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJ CQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJ CQkJZWxzZQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwi JXNcIiBhcyB1c2VyIFwiJXNcIiB2aWEgc29ja2V0IGluIFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5c biIpLAorCQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5kYiksIGhvc3QsIFBRcG9ydChwc2V0LmRi KSk7CisJCQkJfQogCQkJCWVsc2UKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRv IGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiBhdCBwb3J0IFwi JXNcIi5cbiIpLAotCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBz ZXQuZGIpKTsKKwkJCQl7CisJCQkJCWlmIChob3N0YWRkciAmJiAqaG9zdGFkZHIgJiYgc3RyY21w KGhvc3QsIGhvc3RhZGRyKSAhPSAwKQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVk IHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiAoYWRkcmVz cyBcIiVzXCIpIGF0IHBvcnQgXCIlc1wiLlxuIiksCisJCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0 LmRiKSwgaG9zdCwgaG9zdGFkZHIsIFBRcG9ydChwc2V0LmRiKSk7CisJCQkJCWVsc2UKKwkJCQkJ CXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBc IiVzXCIgb24gaG9zdCBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJCQkgICBkYiwg UFF1c2VyKHBzZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOworCQkJCX0KKwkJCQlQUWNs ZWFyKHJlcyk7CisJCQkJcHJpbnRTU0xJbmZvKCk7CisJCQkJcHJpbnRHU1NJbmZvKCk7CiAJCQl9 Ci0JCQlwcmludFNTTEluZm8oKTsKLQkJCXByaW50R1NTSW5mbygpOwogCQl9CiAJfQorCWVsc2UK KwkJaWdub3JlX3NsYXNoX29wdGlvbnMoc2Nhbl9zdGF0ZSk7CiAKLQlyZXR1cm4gUFNRTF9DTURf U0tJUF9MSU5FOworCXJldHVybiBzdWNjZXNzID8gUFNRTF9DTURfU0tJUF9MSU5FIDogUFNRTF9D TURfRVJST1I7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGI2YTRlYjEuLjJlZjNkYjAgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiZmVfdXRpbHMvbWJwcmludC5oIgogI2luY2x1 ZGUgImZlX3V0aWxzL3ByaW50LmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgi CisjaW5jbHVkZSAibGlicHEvcHFjb21tLmgiCiAjaW5jbHVkZSAic2V0dGluZ3MuaCIKICNpbmNs dWRlICJ2YXJpYWJsZXMuaCIKIApAQCAtOTAxLDYgKzkwMiw5MSBAQCBlcnJvcl9yZXR1cm46CiAJ cmV0dXJuIGZhbHNlOwogfQogCisvKgorICogbGlzdENvbm5lY3Rpb25JbmZvcm1hdGlvbgorICoK KyAqIGZvciBcY29ubmluZm8rCisgKi8KK2Jvb2wKK2xpc3RDb25uZWN0aW9uSW5mb3JtYXRpb24o dm9pZCkKK3sKKwlQR3Jlc3VsdCAgICpyZXM7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlwcmlu dFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OworCisJY2hhcgkgICAqaG9zdCA9IFBRaG9zdChw c2V0LmRiKTsKKwljaGFyCSAgICpob3N0YWRkciA9IFBRaG9zdGFkZHIocHNldC5kYik7CisJY29u c3QgY2hhciAqcHJvdG9jb2w7CisJY29uc3QgY2hhciAqY2lwaGVyOworCWNvbnN0IGNoYXIgKmNv bXByZXNzaW9uOworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFFeHBCdWZm ZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5jdXJyZW50 X2RhdGFiYXNlKCkgQVMgXCJEYXRhYmFzZVwiLFxuIgorCQkJCQkgICIgICclcycgQVMgXCJBdXRo ZW50aWNhdGVkIFVzZXJcIixcbiIsCisJCQkJCSAgUFF1c2VyKHBzZXQuZGIpKTsKKwlpZiAocHNl dC5zdmVyc2lvbiA+PSAxNjAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkg ICIgIHBnX2NhdGFsb2cuc3lzdGVtX3VzZXIoKSBBUyBcIlN5c3RlbSBVc2VyXCIsXG4iKTsKKwlh cHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICIgIHBnX2NhdGFsb2cuY3VycmVudF91c2Vy KCkgQVMgXCJDdXJyZW50IFVzZXJcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnNlc3Npb25f dXNlcigpIEFTIFwiU2Vzc2lvbiBVc2VyXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19i YWNrZW5kX3BpZCgpIEFTIFwiQmFja2VuZCBQSURcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9n LmluZXRfc2VydmVyX2FkZHIoKSBBUyBcIlNlcnZlciBBZGRyZXNzXCIsXG4iCisJCQkJCSAgIiAg cGdfY2F0YWxvZy5jdXJyZW50X3NldHRpbmcoJ3BvcnQnKSBBUyBcIlNlcnZlciBQb3J0XCIsXG4i CisJCQkJCSAgIiAgcGdfY2F0YWxvZy5pbmV0X2NsaWVudF9hZGRyKCkgQVMgXCJDbGllbnQgQWRk cmVzc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cuaW5ldF9jbGllbnRfcG9ydCgpIEFTIFwi Q2xpZW50IFBvcnRcIixcbiIpOworCWlmIChpc191bml4c29ja19wYXRoKGhvc3QpICYmICEoaG9z dGFkZHIgJiYgKmhvc3RhZGRyKSkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAg IiAgJyVzJyBBUyBcIlNvY2tldCBEaXJlY3RvcnlcIixcbiIsCisJCQkJCQkgIGhvc3QpOworCWVs c2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAgTlVMTCBBUyBcIlNvY2tl dCBEaXJlY3RvcnlcIixcbiIpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAg Q0FTRVxuIgorCQkJCQkgICIgICAgV0hFTlxuIgorCQkJCQkgICIgICAgICBwZ19jYXRhbG9nLmlu ZXRfc2VydmVyX2FkZHIoKSBJUyBOVUxMXG4iCisJCQkJCSAgIiAgICAgIEFORCBwZ19jYXRhbG9n LmluZXRfY2xpZW50X2FkZHIoKSBJUyBOVUxMXG4iCisJCQkJCSAgIiAgICBUSEVOIE5VTExcbiIK KwkJCQkJICAiICAgIEVMU0UgJyVzJ1xuIgorCQkJCQkgICIgIEVORCBBUyBcIkhvc3RcIlxuIiwK KwkJCQkJICBob3N0KTsKKwlpZiAoUFFzc2xJblVzZShwc2V0LmRiKSkKKwl7CisJCXByb3RvY29s ID0gUFFzc2xBdHRyaWJ1dGUocHNldC5kYiwgInByb3RvY29sIik7CisJCWNpcGhlciA9IFBRc3Ns QXR0cmlidXRlKHBzZXQuZGIsICJjaXBoZXIiKTsKKwkJY29tcHJlc3Npb24gPSBQUXNzbEF0dHJp YnV0ZShwc2V0LmRiLCAiY29tcHJlc3Npb24iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwK KwkJCQkJCSAgIiAgLCdTU0wnIEFTIFwiRW5jcnlwdGlvblwiLFxuIgorCQkJCQkJICAiICAnJXMn IEFTIFwiUHJvdG9jb2xcIixcbiIKKwkJCQkJCSAgIiAgJyVzJyBBUyBcIkNpcGhlclwiLFxuIgor CQkJCQkJICAiICAnJXMnIEFTIFwiQ29tcHJlc3Npb25cIlxuIiwKKwkJCQkJCSAgcHJvdG9jb2wg PyBwcm90b2NvbCA6IF8oInVua25vd24iKSwKKwkJCQkJCSAgY2lwaGVyID8gY2lwaGVyIDogXygi dW5rbm93biIpLAorCQkJCQkJICAoY29tcHJlc3Npb24gJiYgc3RyY21wKGNvbXByZXNzaW9uLCAi b2ZmIikgIT0gMCkgPyBfKCJvbiIpIDogXygib2ZmIikpOworCX0KKwlpZiAoUFFnc3NFbmNJblVz ZShwc2V0LmRiKSkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAgLCdHU1NB UEknIEFTIFwiRW5jcnlwdGlvblwiXG4iKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJ CQkgICIgIDsiKTsKKworCXJlcyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwl0ZXJtUFFFeHBCdWZm ZXIoJmJ1Zik7CisJaWYgKCFyZXMpCisJCXJldHVybiBmYWxzZTsKKworCW15b3B0LnRpdGxlID0g XygiQ3VycmVudCBDb25uZWN0aW9uIEluZm9ybWF0aW9uIik7CisJbXlvcHQudHJhbnNsYXRlX2hl YWRlciA9IHRydWU7CisKKwlwcmludFF1ZXJ5KHJlcywgJm15b3B0LCBwc2V0LnF1ZXJ5Rm91dCwg ZmFsc2UsIHBzZXQubG9nZmlsZSk7CisKKwlQUWNsZWFyKHJlcyk7CisJcmV0dXJuIHRydWU7Cit9 CiAKIC8qCiAgKiBsaXN0QWxsRGJzCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUu aCBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCmluZGV4IDI3M2Y5NzQuLjhhNGU4M2YgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5oCkBAIC02NCw2ICs2NCw5IEBAIGV4dGVybiBib29sIGxpc3RUU0RpY3Rpb25hcmllcyhjb25z dCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogLyogXGRGdCAqLwogZXh0ZXJuIGJvb2wg bGlzdFRTVGVtcGxhdGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CiAKKy8q IFxjb25uaW5mbyAqLworZXh0ZXJuIGJvb2wgbGlzdENvbm5lY3Rpb25JbmZvcm1hdGlvbih2b2lk KTsKKwogLyogXGwgKi8KIGV4dGVybiBib29sIGxpc3RBbGxEYnMoY29uc3QgY2hhciAqcGF0dGVy biwgYm9vbCB2ZXJib3NlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2hlbHAuYyBiL3Ny Yy9iaW4vcHNxbC9oZWxwLmMKaW5kZXggNGU3OWE4MS4uMmM1NDI2ZCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL2hlbHAuYworKysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0zMTAsNyArMzEw LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJZWxzZQogCQlIRUxQ MCgiICBcXGNbb25uZWN0XSB7W0RCTkFNRXwtIFVTRVJ8LSBIT1NUfC0gUE9SVHwtXSB8IGNvbm5p bmZvfVxuIgogCQkJICAiICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3QgdG8gbmV3IGRh dGFiYXNlIChjdXJyZW50bHkgbm8gY29ubmVjdGlvbilcbiIpOwotCUhFTFAwKCIgIFxcY29ubmlu Zm8gICAgICAgICAgICAgIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBjb25uZWN0 aW9uXG4iKTsKKwlIRUxQMCgiICBcXGNvbm5pbmZvWytdICAgICAgICAgICBkaXNwbGF5IGluZm9y bWF0aW9uIGFib3V0IGN1cnJlbnQgY29ubmVjdGlvblxuIik7CiAJSEVMUDAoIiAgXFxlbmNvZGlu ZyBbRU5DT0RJTkddICAgc2hvdyBvciBzZXQgY2xpZW50IGVuY29kaW5nXG4iKTsKIAlIRUxQMCgi ICBcXHBhc3N3b3JkIFtVU0VSTkFNRV0gICBzZWN1cmVseSBjaGFuZ2UgdGhlIHBhc3N3b3JkIGZv ciBhIHVzZXJcbiIpOwogCUhFTFAwKCJcbiIpOwo= --_004_CP8P284MB2496C7F14594722472C9FEBAEC482CP8P284MB2496BRAP_--