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 1rXjDD-00CJ8y-8Q for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Feb 2024 14:47:44 +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 1rXjDC-00BK8L-DA for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Feb 2024 14:47:42 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rXjDB-00BK8C-RC for pgsql-hackers@lists.postgresql.org; Wed, 07 Feb 2024 14:47:42 +0000 Received: from mail-cpzbra01olkn2038.outbound.protection.outlook.com ([40.92.97.38] helo=BRA01-CPZ-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rXjD7-005YM2-SU for pgsql-hackers@postgresql.org; Wed, 07 Feb 2024 14:47:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K59tspOTWS3dw/1BytAEh2lUizAg02ilAmJ1yVOafPKvrrKxIRum4SQ/5MRMVdAk9kA3LbR1xSyVdlHCjctAJ9wFLcyTwF0rdfflcn7Y7aiktxuEPiOtd+gi1zZl1A+4lyB9VBtnyrhABnZSVDkXlv3WbRj91kk7rpz4gd88ozhnuQQb2yUTG9DoPdyD/gffxRtZ50Lp9q811Y5q7auX/wd0B1Nf44/o4iUiWShHKWQ+q0BXZ6d4xaR2o8RRpRE+JNIcvA4ahgalNCByR7QMCyXdVNRfzw+05GGS1FVLOP8ojt5VbUP7SgMrJHkUaHuUq8SBU0DtprUiGhp5DSTDjg== 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=DtTojUSDg97EtGziYuFKPvF62umivBGg9hgxT+qDzA8=; b=obHtubd6XfoVSzeuj+JQ+zplKOHtN9vUSWZNQxRnrtqy7NzHulo2n7D5j3lkBuk0EfLLgeRdCL6bwrnIY6GE9tH7yz6A9Fafr0ZkH0+VJ1Wpw7dBvLpb+/reoxchmawW9VfLk7fk3+uJk1GGStNlLZMmGGfQOcdkPwMGNLGP+64sZK0wRcis3YABw0bXUsy1HWKkEw9aQw/WW+u3KEGWjkavjeHzRaM+ntey1qt6ecpOlho3PmuIGRoHdSBxUkgwk50SzG3gNki49e/aPDaXRQyVQbiJkhHB8tu/NlxialG9GE+eQ/Lj1AVdmIMo5FwK5d1vsjrfFAv4HC05M1GINw== 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 ROAP284MB2730.BRAP284.PROD.OUTLOOK.COM (2603:10d6:10:12c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.38; Wed, 7 Feb 2024 14:47:31 +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.7249.038; Wed, 7 Feb 2024 14:47:31 +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/hLxQK8bD9n9eAgAAOagCAABlrgoAABsOAgAABrYCAAAkRMoAAAaIAgABfmwKAAJe3AIAAHVoL Date: Wed, 7 Feb 2024 14:47:31 +0000 Message-ID: References: <20240206181919.GA3853632@nathanxps13> <20240206210605.GA3903769@nathanxps13> <20240206211205.GA3903996@nathanxps13> <20240206215022.GA3452@nathanxps13> <852cabef-f596-4826-9a54-d3f75d9a6cc8@postgrespro.ru> In-Reply-To: <852cabef-f596-4826-9a54-d3f75d9a6cc8@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: [MRYFCZCBQD6PXsmI6aH6mmX8mF/1Z5FM] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CP8P284MB2496:EE_|ROAP284MB2730:EE_ x-ms-office365-filtering-correlation-id: d98b1d7a-4614-4e29-9ef4-08dc27ebb6d9 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iNTjN3qXdhIKIhTOCgVTWYd02RrylKBe/9hP2BihxGqV+l7ks61pt4z5d0WUcyLW2wqEnoZLiV8HQei0sNlbDAcey18OmxNoju/9lx863Ad+cv8xVOADfs5ODiauGj6ZDyRP3bFMz4+6+yp9FhMe2XYzlOKw/rTgUkUIssApAGrfjuVSqVO+qPJdHdrDK72VgrA1GoQCkPOVbMvx+HxR6wzfZ5htj0Ukd6xISHQQiZvbjpWxUFlTTh/NVcO0jXKNG/zOsSLOLhDQN0sZOCbdJ5HJ8eMwWRVharg5ybOjH4S7i/BEo3++5IkH6wBa+NoKqW/nVTkcCtsU/9YZbwIBySSEOLQcjnFMA7hb+dPuMRzT2//o9jB6Uf+dfll4OLlNP4qSZCb8kWmBOJBzjoyHw4AN1GjGRUDZGxV6cj3wMn4h8CeVcHX/6eM7LPrg6FnGBvBfmRcGPsiE51L+IVYZUeCaTysTK/mrM5L96uYbicSq5urUh6gvIpQ7BooLMKGz68N2MbeTTkoNU1exXR5sIzNCBUxEkAiA4Ma2TcztKHf1Z79raJBN3xBEJjB5CzIwmR+hscARL1cRfWLGN93lQQKqR33WAwZtuXdhM1JPrxOfhyh2gFTunpo0Je50se2o x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?jDF+G6qwfmo0GaZOHFD36q0ZMZsS5H9SlsfX+nJGDE51fNtxYVOay2RP17?= =?iso-8859-1?Q?6Q6qY+IwuSEgme+l623FCGOlh6Ap3qQhyhpijOw4aypV4gUFTKK7dVVJIv?= =?iso-8859-1?Q?H/bmOELAEgYfv6Hir26TXqbWEEjEFpQfmwgvA9Hv3VDvsEu02rvxbRbzbr?= =?iso-8859-1?Q?FvV+mX9xgW6gz8MAwCYlD3HljGEsljnKSelTdtUJ6Y4zGEPgaIj6Bp/2IR?= =?iso-8859-1?Q?rBsnFW6SzrAEgVTghgTv3l/8B3+686UDLwROrIrHotF1xiuEDgXE0W+gtX?= =?iso-8859-1?Q?YUpojTc2plN4vg3iBz3tM7fAsIv1+uQ8pT86h/5kAvNIDZO2jNqg0ciI/B?= =?iso-8859-1?Q?r64Xy4yzKPOoP2Rd6bct4oJX6sQ+kXUD18nC53kb0BhSB08JsSJNJXC/d9?= =?iso-8859-1?Q?OQ7VgTfg2cCLbg5FAfSuP+iafHMCef4wrjjoc8eX3SPmPxG/zArphEem37?= =?iso-8859-1?Q?/TWftsSTWUwXVytwsnvEuJWyhDwk0001riqTVDzDHgbFHPpROexWgVfBw7?= =?iso-8859-1?Q?i6YPs1nCV0PVZPi/IRW4Jq0jLbvCvbBgaLWZ5QKiCtYAedWK7dFSReZu6i?= =?iso-8859-1?Q?GCn7lMem6maj7MKU1KrQsBzh/tYydbSlo3kFu/np0YLWGSHawRukDzraYe?= =?iso-8859-1?Q?1OklT+YkZYHbxa0WZggMbNCf05aKiXuA90e4+6pEMlSGSerraE6iEgKBeF?= =?iso-8859-1?Q?8kVTCGDvu4xvKig/AK8qa0g1cjDfNZmAjaNyMupkrclaZMbHPIBBt2Voue?= =?iso-8859-1?Q?IWenKyFRCgnDvme6mRgyyRv7GN0kLCHyx0tWsuEsy02w8hMxk1yiCrhwTL?= =?iso-8859-1?Q?pUTG1NRLx7+XLLSBzLcfC4KlAUivYmYYHjY+z4q0PPUClAduZNEJLLyCng?= =?iso-8859-1?Q?8sAubu1yGPij6R/O6CNO0iPfWv6Qv2wAiUtxYVjX3ZEtGtWRFYHa7aHV7c?= =?iso-8859-1?Q?K0yrrH6SxTld4RuE3UW6sWNzbalG8XEeD4/EwmtPSuCCugsDx45UlYIX7u?= =?iso-8859-1?Q?K4pNYuWAJnEmb1Q+zmCZjT5ZhODgEL9P5XgkkcdsnVAXO1iN4xZgWEvHsp?= =?iso-8859-1?Q?P1GNfPHEcne2DdGVqYCh2i2oeykYMafDXObNMkA32bPSIAmRzBTjgE56Rh?= =?iso-8859-1?Q?wAqgbhZWrvEgSC5ohVUt0uOK/zXiErcucgOD/ZuaRX6wr1w1Mj09taNr7i?= =?iso-8859-1?Q?cHCouHVX4DUr4PPf+m9jMVZeR3+ZMHSD+/njTdTR7T5ZLSJwn/VjApry4q?= =?iso-8859-1?Q?vKTnpqHoL2xKljbJWcPQ=3D=3D?= Content-Type: multipart/mixed; boundary="_004_CP8P284MB24961361A9C1D32C28A7EC0EEC452CP8P284MB2496BRAP_" 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: d98b1d7a-4614-4e29-9ef4-08dc27ebb6d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Feb 2024 14:47:31.8139 (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: ROAP284MB2730 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_CP8P284MB24961361A9C1D32C28A7EC0EEC452CP8P284MB2496BRAP_ Content-Type: multipart/alternative; boundary="_000_CP8P284MB24961361A9C1D32C28A7EC0EEC452CP8P284MB2496BRAP_" --_000_CP8P284MB24961361A9C1D32C28A7EC0EEC452CP8P284MB2496BRAP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable This is a good idea about extended connection info. On 07.02.2024 07:13, Maiquel Grassi wrote: SELECT ... current_user AS "User", This will be inconsistent with \conninfo. \conninfo returns authenticated user (PQuser), not the current_user. It might be worth showing current_user, session_user, and authenticated u= ser, but I can't find the appropriate sql function for PQuser. What about to include system_user function? It shows useful authenticatio= n details. Also, it seems that the verbose parameter in the listConnectionInformatio= n is unnecessary. --//-- Hi, Tks Pavel. Analyzing the functions' code more thoroughly, it seems to make more sense. I liked your suggestions and implemented them for validation. Regarding "system_user," I believe it is valid and also added it to the row= . "Also, it seems that the verbose parameter in the listConnectionInformation= is unnecessary." Could you point out exactly the line or code snippet you are referring to? To print the string from the "Authenticated User" column, I chose to use PQ= user(pset.db) directly. I did the same for the "Host" column, opting for PQ= host(pset.db). This does not contradict the result of \conninfo. Here are the tests as usual, and v6 patch. [postgres@localhost bin]$ ./psql 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 Database | Authenticated User | Current User | Session User | System User = | Server Version | Server Address | Server Port | Client Address | Client P= ort | Session PID | Socket Directory | Host ----------+--------------------+--------------+--------------+-------------= +----------------+----------------+-------------+----------------+---------= ----+-------------+------------------+------ postgres | postgres | postgres | postgres | = | 17devel | | 5432 | | = | 17240 | /tmp | (1 row) postgres=3D# \q [postgres@localhost bin]$ ./psql -h ::1 psql (17devel) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" on host "::1" a= t port "5432". postgres=3D# \conninfo+ = Current Connection Information Database | Authenticated User | Current User | Session User | System User = | Server Version | Server Address | Server Port | Client Address | Client P= ort | Session PID | Socket Directory | Host ----------+--------------------+--------------+--------------+-------------= +----------------+----------------+-------------+----------------+---------= ----+-------------+------------------+------ postgres | postgres | postgres | postgres | = | 17devel | ::1 | 5432 | ::1 | 47= 024 | 17242 | /tmp | ::1 (1 row) postgres=3D# \q [postgres@localhost bin]$ ./psql -h 127.0.0.1 psql (17devel) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" on host "127.0.= 0.1" at port "5432". postgres=3D# \conninfo+ = Current Connection Information Database | Authenticated User | Current User | Session User | System User = | Server Version | Server Address | Server Port | Client Address | Client P= ort | Session PID | Socket Directory | Host ----------+--------------------+--------------+--------------+-------------= +----------------+----------------+-------------+----------------+---------= ----+-------------+------------------+----------- postgres | postgres | postgres | postgres | = | 17devel | 127.0.0.1 | 5432 | 127.0.0.1 | 35= 076 | 17245 | /tmp | 127.0.0.1 (1 row) postgres=3D# \q [postgres@localhost bin]$ ./psql -h localhost psql (17devel) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" on host "localh= ost" (address "::1") at port "5432". postgres=3D# \conninfo+ = Current Connection Information Database | Authenticated User | Current User | Session User | System User = | Server Version | Server Address | Server Port | Client Address | Client P= ort | Session PID | Socket Directory | Host ----------+--------------------+--------------+--------------+-------------= +----------------+----------------+-------------+----------------+---------= ----+-------------+------------------+----------- postgres | postgres | postgres | postgres | = | 17devel | ::1 | 5432 | ::1 | 47= 028 | 17248 | /tmp | localhost (1 row) postgres=3D# \q [postgres@localhost bin]$ ./psql -h 192.168.0.5 -p 5433 -d postgres -U post= gres psql (17devel, server 16.1) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" on host "192.16= 8.0.5" at port "5433". postgres=3D# \conninfo+ = Current Connection Information Database | Authenticated User | Current User | Session User | System User = | Server Version | Server Address | Server Port | Client Address | Client P= ort | Session PID | Socket Directory | Host ----------+--------------------+--------------+--------------+-------------= +----------------+----------------+-------------+----------------+---------= ----+-------------+------------------+------------- postgres | postgres | postgres | postgres | = | 16.1 | 192.168.0.5 | 5433 | 192.168.0.5 | 60= 115 | 28896 | | 192.168.0.5 (1 row) Regards, Maiquel O. Grassi. --_000_CP8P284MB24961361A9C1D32C28A7EC0EEC452CP8P284MB2496BRAP_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
  This is a good idea about extended connection info.

  O= n 07.02.2024 07:13, Maiquel Grassi wrote:
SELECT
...
  current_user AS "User",
T= his will be inconsistent with \conninfo.=0A= \conninfo returns authenticated user (PQuser), not the current_user.=0A= It might be worth showing current_user, session_user, and authenticated u= ser,=0A= but I can't find the appropriate sql function for PQuser.=0A= =0A= What about to include system_user function? It shows useful authenticatio= n details.=0A= =0A= Also, it seems that the verbose parameter in the listConnectionInformatio= n=0A= is unnecessary.

--//--

Hi,

Tks Pavel.

=
Analyzing the functions' code more thoroughly, it seems to m= ake more sense.
I liked your suggestions and implemented them for valida= tion.
Regarding "system_user," I believe it is valid and also = added it to the row.
<= br>
"Also, it seem= s that the verbose parameter in the listConnectionInformation is unnecessar= y."
Could you point out exactly the line or code snippet you are re= ferring to?

To print the string from the "Authenticated User&qu= ot; column, I chose to use PQuser(pset.db) directly. I did the same for the= "Host" column, opting for PQhost(pset.db). This does not contrad= ict the result of \conninfo.

Here are the= tests as usual, and v6 patch.

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

postgres=3D# \conninfo
You are connected t= o database "postgres" as user "postgres" via socket in = "/tmp" at port "5432".
postg= res=3D# \conninfo+
        &= nbsp;                    =                     &nbs= p;                     &n= bsp;         Current Connection Information
 Database | Authenticated User | Current User | Sessio= n User | System User | Server Version | Server Address | Server Port | Clie= nt Address | Client Port | Session PID | Socket Directory | Host
----------+--------------------+--------------+-----------= ---+-------------+----------------+----------------+-------------+---------= -------+-------------+-------------+------------------+------
<= div style=3D"white-space: normal;"> postgres | postgres           = | postgres     | postgres     |       &n= bsp;     | 17devel        |     &nb= sp;          | 5432        | &= nbsp;              |      = ;       |       17240 | /tmp     &n= bsp;       |
(1 row)
=

postgres=3D# \q
=
[postgres@localhost bin]$ ./psql -h ::1
psql (17devel)
Type "help" for = help.

postgres= =3D# \conninfo
You are connected to database &q= uot;postgres" as user "postgres" on host "::1" at = port "5432".
postgres=3D# \conninfo+
              =                      = ;                     &nb= sp;                     &= nbsp;   Current Connection Information
&nbs= p;Database | Authenticated User | Current User | Session User | System User= | Server Version | Server Address | Server Port | Client Address | Client = Port | Session PID | Socket Directory | Host
---= -------+--------------------+--------------+--------------+-------------+--= --------------+----------------+-------------+----------------+------------= -+-------------+------------------+------
 = postgres | postgres           | postgres   &n= bsp; | postgres     |             |= 17devel        | ::1          = ;  | 5432        | ::1        =    |       47024 |       17242 | /= tmp             | ::1
(1 row)

pos= tgres=3D# \q
[postgres@localhost bin]$ ./psql -h= 127.0.0.1
psql (17devel)
Type "help" for help.

=
postgres=3D# \conninfo
You = are connected to database "postgres" as user "postgres"= on host "127.0.0.1" at port "5432".
postgres=3D# \conninfo+
    &= nbsp;                    =                     &nbs= p;                     &n= bsp;               Current Connection In= formation
 Database | Authenticated User | = Current User | Session User | System User | Server Version | Server Address= | Server Port | Client Address | Client Port | Session PID | Socket Direct= ory |   Host
----------+-------------------= -+--------------+--------------+-------------+----------------+------------= ----+-------------+----------------+-------------+-------------+-----------= -------+-----------
 postgres | postgres &n= bsp;         | postgres     | postgres  =   |             | 17devel    =    | 127.0.0.1      | 5432       &= nbsp;| 127.0.0.1      |       35076 |   =     17245 | /tmp             | 127.= 0.0.1
(1 row)

postgres=3D# \q
[postgr= es@localhost bin]$ ./psql -h localhost
psql (17d= evel)
Type "help" for help.

postgres=3D# \conninfo
You are connected to database "postgres" = as user "postgres" on host "localhost" (address ":= :1") at port "5432".
postgres=3D#= \conninfo+
          &= nbsp;                    =                     &nbs= p;                     &n= bsp;         Current Connection Information
 Database | Authenticated User | Current User | Sessio= n User | System User | Server Version | Server Address | Server Port | Clie= nt Address | Client Port | Session PID | Socket Directory |   Host
----------+--------------------+--------------+----= ----------+-------------+----------------+----------------+-------------+--= --------------+-------------+-------------+------------------+-----------
 postgres | postgres       &n= bsp;   | postgres     | postgres     |   &nbs= p;         | 17devel        | ::1 &= nbsp;          | 5432        |= ::1            |       47028 = |       17248 | /tmp           &nbs= p; | localhost
(1 row)

postgres=3D# \q
[postgres@localhost bin]$ ./psql -h 192.168.0.5 -p 5433 -d postgres -U= postgres
psql (17devel, server 16.1)
Type "help" for help.

postgres=3D# \conninfo
You are connected to database "postgres" as user "po= stgres" on host "192.168.0.5" at port "5433".
postgres=3D# \conninfo+
&= nbsp;                    =                     &nbs= p;                     &n= bsp;                    C= urrent Connection Information
 Database | A= uthenticated User | Current User | Session User | System User | Server Vers= ion | Server Address | Server Port | Client Address | Client Port | Session= PID | Socket Directory |    Host
----= ------+--------------------+--------------+--------------+-------------+---= -------------+----------------+-------------+----------------+-------------= +-------------+------------------+-------------
=  postgres | postgres           | postgres &nb= sp;   | postgres     |           &n= bsp; | 16.1           | 192.168.0.5    |= 5433        | 192.168.0.5    |    =   60115 |       28896 |         &n= bsp;        | 192.168.0.5
(1= row)

Regards,
Maiquel O. Grassi.
--_000_CP8P284MB24961361A9C1D32C28A7EC0EEC452CP8P284MB2496BRAP_-- --_004_CP8P284MB24961361A9C1D32C28A7EC0EEC452CP8P284MB2496BRAP_ Content-Type: application/octet-stream; name="v6-0001-psql-meta-command-conninfo-plus.patch" Content-Description: v6-0001-psql-meta-command-conninfo-plus.patch Content-Disposition: attachment; filename="v6-0001-psql-meta-command-conninfo-plus.patch"; size=8230; creation-date="Wed, 07 Feb 2024 14:47:16 GMT"; modification-date="Wed, 07 Feb 2024 14:47:31 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFu ZC5jCmluZGV4IDVjOTA2ZTQuLmFkOGUzNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21t YW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtNjgsNyArNjgsOCBAQCBzdGF0 aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9DKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwgYm9vbCBhY3RpdmVfYnJhbgogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRf Y29ubmVjdChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBz dGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9jZChQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmNtZCk7 Ci1zdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CitzdGF0aWMgYmFja3NsYXNoUmVz dWx0IGV4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wg YWN0aXZlX2JyYW5jaCwKKwkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmNtZCk7CiBzdGF0aWMgYmFj a3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9jb3B5KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwg Ym9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5k X2NvcHlyaWdodChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7 CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9jcm9zc3RhYnZpZXcoUHNxbFNj YW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwpAQCAtMzE3LDggKzMxOCw4 IEBAIGV4ZWNfY29tbWFuZChjb25zdCBjaGFyICpjbWQsCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFu ZF9jb25uZWN0KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChj bWQsICJjZCIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9jZChzY2FuX3N0YXRlLCBh Y3RpdmVfYnJhbmNoLCBjbWQpOwotCWVsc2UgaWYgKHN0cmNtcChjbWQsICJjb25uaW5mbyIpID09 IDApCi0JCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9jb25uaW5mbyhzY2FuX3N0YXRlLCBhY3RpdmVf YnJhbmNoKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAiY29ubmluZm8iKSA9PSAwIHx8IHN0cmNt cChjbWQsICJjb25uaW5mbysiKSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfY29ubmlu Zm8oc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCwgY21kKTsKIAllbHNlIGlmIChwZ19zdHJjYXNl Y21wKGNtZCwgImNvcHkiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfY29weShzY2Fu X3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAiY29weXJpZ2h0 IikgPT0gMCkKQEAgLTY0Myw0NyArNjQ0LDc0IEBAIGV4ZWNfY29tbWFuZF9jZChQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQogfQog CiAvKgotICogXGNvbm5pbmZvIC0tIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJl bnQgY29ubmVjdGlvbgorICogXGNvbm5pbmZvLCBcY29ubmluZm8rIC0tIGRpc3BsYXkgaW5mb3Jt YXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgY29ubmVjdGlvbgogICovCiBzdGF0aWMgYmFja3NsYXNo UmVzdWx0Ci1leGVjX2NvbW1hbmRfY29ubmluZm8oUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBi b29sIGFjdGl2ZV9icmFuY2gpCitleGVjX2NvbW1hbmRfY29ubmluZm8oUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmNtZCkKIHsKKwlib29s CQlzdWNjZXNzID0gdHJ1ZTsKKwogCWlmIChhY3RpdmVfYnJhbmNoKQogCXsKIAkJY2hhcgkgICAq ZGIgPSBQUWRiKHBzZXQuZGIpOworCQljaGFyCSAgICpwYXR0ZXJuOworCQlib29sCQlzaG93X3Zl cmJvc2U7CiAKLQkJaWYgKGRiID09IE5VTEwpCi0JCQlwcmludGYoXygiWW91IGFyZSBjdXJyZW50 bHkgbm90IGNvbm5lY3RlZCB0byBhIGRhdGFiYXNlLlxuIikpOwotCQllbHNlCisJCXBhdHRlcm4g PSBwc3FsX3NjYW5fc2xhc2hfb3B0aW9uKHNjYW5fc3RhdGUsIE9UX05PUk1BTCwgTlVMTCwgdHJ1 ZSk7CisKKwkJc2hvd192ZXJib3NlID0gc3RyY2hyKGNtZCwgJysnKSA/IHRydWUgOiBmYWxzZTsK KworCQkvKgorCQkgKiBcY29ubmluZm8rCisJCSAqLworCQlpZiAoc2hvd192ZXJib3NlKQogCQl7 Ci0JCQljaGFyCSAgICpob3N0ID0gUFFob3N0KHBzZXQuZGIpOwotCQkJY2hhcgkgICAqaG9zdGFk ZHIgPSBQUWhvc3RhZGRyKHBzZXQuZGIpOworCQkJc3VjY2VzcyA9IGxpc3RDb25uZWN0aW9uSW5m b3JtYXRpb24ocGF0dGVybiwgc2hvd192ZXJib3NlKTsKKwkJCWZyZWUocGF0dGVybik7CisJCQlw cmludFNTTEluZm8oKTsKKwkJCXByaW50R1NTSW5mbygpOworCQl9CiAKLQkJCWlmIChpc191bml4 c29ja19wYXRoKGhvc3QpKQotCQkJewotCQkJCS8qIGhvc3RhZGRyIG92ZXJyaWRlcyBob3N0ICov Ci0JCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkcikKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUg Y29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBhZGRyZXNzIFwi JXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAotCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwg aG9zdGFkZHIsIFBRcG9ydChwc2V0LmRiKSk7Ci0JCQkJZWxzZQotCQkJCQlwcmludGYoXygiWW91 IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIHZpYSBzb2Nr ZXQgaW4gXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBz ZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOwotCQkJfQorCQkvKgorCQkgKiBcY29ubmlu Zm8KKwkJICovCisJCWVsc2UKKwkJeworCQkJaWYgKGRiID09IE5VTEwpCisJCQkJcHJpbnRmKF8o IllvdSBhcmUgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS5cbiIpKTsKIAkJ CWVsc2UKIAkJCXsKLQkJCQlpZiAoaG9zdGFkZHIgJiYgKmhvc3RhZGRyICYmIHN0cmNtcChob3N0 LCBob3N0YWRkcikgIT0gMCkKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRh dGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiAoYWRkcmVzcyBcIiVz XCIpIGF0IHBvcnQgXCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBo b3N0LCBob3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQljaGFyCSAgICpob3N0ID0gUFFo b3N0KHBzZXQuZGIpOworCQkJCWNoYXIJICAgKmhvc3RhZGRyID0gUFFob3N0YWRkcihwc2V0LmRi KTsKKworCQkJCWlmIChpc191bml4c29ja19wYXRoKGhvc3QpKQorCQkJCXsKKwkJCQkJLyogaG9z dGFkZHIgb3ZlcnJpZGVzIGhvc3QgKi8KKwkJCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkcikK KwkJCQkJCXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMg dXNlciBcIiVzXCIgb24gYWRkcmVzcyBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJ CQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJ CQkJZWxzZQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwi JXNcIiBhcyB1c2VyIFwiJXNcIiB2aWEgc29ja2V0IGluIFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5c biIpLAorCQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5kYiksIGhvc3QsIFBRcG9ydChwc2V0LmRi KSk7CisJCQkJfQogCQkJCWVsc2UKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRv IGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiBhdCBwb3J0IFwi JXNcIi5cbiIpLAotCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBz ZXQuZGIpKTsKKwkJCQl7CisJCQkJCWlmIChob3N0YWRkciAmJiAqaG9zdGFkZHIgJiYgc3RyY21w KGhvc3QsIGhvc3RhZGRyKSAhPSAwKQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVk IHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiAoYWRkcmVz cyBcIiVzXCIpIGF0IHBvcnQgXCIlc1wiLlxuIiksCisJCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0 LmRiKSwgaG9zdCwgaG9zdGFkZHIsIFBRcG9ydChwc2V0LmRiKSk7CisJCQkJCWVsc2UKKwkJCQkJ CXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBc IiVzXCIgb24gaG9zdCBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJCQkgICBkYiwg UFF1c2VyKHBzZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOworCQkJCX0KKwkJCQlwcmlu dFNTTEluZm8oKTsKKwkJCQlwcmludEdTU0luZm8oKTsKIAkJCX0KLQkJCXByaW50U1NMSW5mbygp OwotCQkJcHJpbnRHU1NJbmZvKCk7CiAJCX0KIAl9CisJZWxzZQorCQlpZ25vcmVfc2xhc2hfb3B0 aW9ucyhzY2FuX3N0YXRlKTsKIAotCXJldHVybiBQU1FMX0NNRF9TS0lQX0xJTkU7CisJcmV0dXJu IHN1Y2Nlc3MgPyBQU1FMX0NNRF9TS0lQX0xJTkUgOiBQU1FMX0NNRF9FUlJPUjsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKaW5kZXggYjZhNGViMS4uYzE3YzRhOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTkwMSw2ICs5MDEsNTcg QEAgZXJyb3JfcmV0dXJuOgogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIGxpc3RDb25uZWN0 aW9uSW5mb3JtYXRpb24KKyAqCisgKiBmb3IgXGNvbm5pbmZvKworICovCitib29sCitsaXN0Q29u bmVjdGlvbkluZm9ybWF0aW9uKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKK3sK KyAgICBQR3Jlc3VsdCAgICpyZXM7CisgICAgUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKyAgICBwcmlu dFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OworCisgICAgaW5pdFBRRXhwQnVmZmVyKCZidWYp OworCisgICAgcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAi U0VMRUNUXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgcGdfY2F0YWxvZy5jdXJyZW50X2Rh dGFiYXNlKCkgQVMgXCJEYXRhYmFzZVwiLFxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICcl cycgQVMgXCJBdXRoZW50aWNhdGVkIFVzZXJcIixcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi ICBwZ19jYXRhbG9nLmN1cnJlbnRfdXNlcigpIEFTIFwiQ3VycmVudCBVc2VyXCIsXG4iCisgICAg ICAgICAgICAgICAgICAgICAgIiAgcGdfY2F0YWxvZy5zZXNzaW9uX3VzZXIoKSBBUyBcIlNlc3Np b24gVXNlclwiLFxuIgorICAgICAgICAgICAgICAgICAgICAgICIgIHBnX2NhdGFsb2cuc3lzdGVt X3VzZXIoKSBBUyBcIlN5c3RlbSBVc2VyXCIsXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAg cGdfY2F0YWxvZy5jdXJyZW50X3NldHRpbmcoJ3NlcnZlcl92ZXJzaW9uJykgQVMgXCJTZXJ2ZXIg VmVyc2lvblwiLFxuIgorICAgICAgICAgICAgICAgICAgICAgICIgIHBnX2NhdGFsb2cuaW5ldF9z ZXJ2ZXJfYWRkcigpIEFTIFwiU2VydmVyIEFkZHJlc3NcIixcbiIKKyAgICAgICAgICAgICAgICAg ICAgICAiICBwZ19jYXRhbG9nLmN1cnJlbnRfc2V0dGluZygncG9ydCcpIEFTIFwiU2VydmVyIFBv cnRcIixcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICBwZ19jYXRhbG9nLmluZXRfY2xpZW50 X2FkZHIoKSBBUyBcIkNsaWVudCBBZGRyZXNzXCIsXG4iCisgICAgICAgICAgICAgICAgICAgICAg IiAgcGdfY2F0YWxvZy5pbmV0X2NsaWVudF9wb3J0KCkgQVMgXCJDbGllbnQgUG9ydFwiLFxuIgor ICAgICAgICAgICAgICAgICAgICAgICIgIHBnX2NhdGFsb2cucGdfYmFja2VuZF9waWQoKSBBUyBc IlNlc3Npb24gUElEXCIsXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgTlVMTElGKHBnX2Nh dGFsb2cuY3VycmVudF9zZXR0aW5nKCd1bml4X3NvY2tldF9kaXJlY3RvcmllcycpLCcnKSBBUyBc IlNvY2tldCBEaXJlY3RvcnlcIixcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICBDQVNFXG4i CisgICAgICAgICAgICAgICAgICAgICAgIiAgICBXSEVOXG4iCisgICAgICAgICAgICAgICAgICAg ICAgIiAgICAgIHBnX2NhdGFsb2cuaW5ldF9zZXJ2ZXJfYWRkcigpIElTIE5VTExcbiIKKyAgICAg ICAgICAgICAgICAgICAgICAiICAgICAgQU5EIHBnX2NhdGFsb2cuaW5ldF9jbGllbnRfYWRkcigp IElTIE5VTExcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIFRIRU4gTlVMTFxuIgorICAg ICAgICAgICAgICAgICAgICAgICIgICAgRUxTRSAnJXMnXG4iCisgICAgICAgICAgICAgICAgICAg ICAgIiAgRU5EIEFTIFwiSG9zdFwiOyIsCisgICAgICAgICAgICAgICAgICAgICAgUFF1c2VyKHBz ZXQuZGIpLAorICAgICAgICAgICAgICAgICAgICAgIFBRaG9zdChwc2V0LmRiKSk7CisKKyAgICBy ZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisgICAgdGVybVBRRXhwQnVmZmVyKCZidWYpOworICAg IGlmICghcmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBteW9wdC50aXRsZSA9IF8o IkN1cnJlbnQgQ29ubmVjdGlvbiBJbmZvcm1hdGlvbiIpOworICAgIG15b3B0LnRyYW5zbGF0ZV9o ZWFkZXIgPSB0cnVlOworCisgICAgcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZv dXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCisgICAgUFFjbGVhcihyZXMpOworICAgIHJldHVy biB0cnVlOworfQogCiAvKgogICogbGlzdEFsbERicwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCAyNzNmOTc0Li5iNjM4 YzcxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAorKysgYi9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuaApAQCAtMTQ5LDQgKzE0OSw3IEBAIGV4dGVybiBib29sIGxpc3RPcEZhbWls eUZ1bmN0aW9ucyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sCiAvKiBcZGwgb3Ig XGxvX2xpc3QgKi8KIGV4dGVybiBib29sIGxpc3RMYXJnZU9iamVjdHMoYm9vbCB2ZXJib3NlKTsK IAorLyogXGNvbm5pbmZvICovCitleHRlcm4gYm9vbCBsaXN0Q29ubmVjdGlvbkluZm9ybWF0aW9u KGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CisKICNlbmRpZgkJCQkJCQkvKiBE RVNDUklCRV9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9w c3FsL2hlbHAuYwppbmRleCA0ZTc5YTgxLi4yYzU0MjZkIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvaGVscC5jCisrKyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAgLTMxMCw3ICszMTAsNyBAQCBz bGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAllbHNlCiAJCUhFTFAwKCIgIFxc Y1tvbm5lY3RdIHtbREJOQU1FfC0gVVNFUnwtIEhPU1R8LSBQT1JUfC1dIHwgY29ubmluZm99XG4i CiAJCQkgICIgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdCB0byBuZXcgZGF0YWJhc2Ug KGN1cnJlbnRseSBubyBjb25uZWN0aW9uKVxuIik7Ci0JSEVMUDAoIiAgXFxjb25uaW5mbyAgICAg ICAgICAgICAgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBjdXJyZW50IGNvbm5lY3Rpb25cbiIp OworCUhFTFAwKCIgIFxcY29ubmluZm9bK10gICAgICAgICAgIGRpc3BsYXkgaW5mb3JtYXRpb24g YWJvdXQgY3VycmVudCBjb25uZWN0aW9uXG4iKTsKIAlIRUxQMCgiICBcXGVuY29kaW5nIFtFTkNP RElOR10gICBzaG93IG9yIHNldCBjbGllbnQgZW5jb2RpbmdcbiIpOwogCUhFTFAwKCIgIFxccGFz c3dvcmQgW1VTRVJOQU1FXSAgIHNlY3VyZWx5IGNoYW5nZSB0aGUgcGFzc3dvcmQgZm9yIGEgdXNl clxuIik7CiAJSEVMUDAoIlxuIik7Cg== --_004_CP8P284MB24961361A9C1D32C28A7EC0EEC452CP8P284MB2496BRAP_--