Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mOTiR-0005o5-Cf for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Sep 2021 23:44:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mOTiQ-00030D-0h for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Sep 2021 23:44:22 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mOTiP-000305-Cr for pgsql-hackers@lists.postgresql.org; Thu, 09 Sep 2021 23:44:21 +0000 Received: from mail-dm3nam07on20622.outbound.protection.outlook.com ([2a01:111:f400:7e83::622] helo=NAM02-DM3-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mOTiI-0006zm-B9 for pgsql-hackers@lists.postgresql.org; Thu, 09 Sep 2021 23:44:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B6m9EFFXbgwYtyJKypuTh7/gT0MOZc8ZDlB/hlyBX0S3IA0V57EZ5GDarPnu6G6mEAXjgOcbaVjGS8wTCG66lnJrqHNR6K8xLYRb+nX/i3vgNwX9o9M0CFI/TChVjvPmCUah05ufUkUOTGzlCv8KGKKODHfLUOu0x2l1gF55g3yd03n2F/8irkGeNt+s25JL//SYINKH8AuBGvsMq+Vw8d81jHPXOd6b+DsQ8fbfQdW8wK65pslpCtfEyqZAdGTMZLXJc8inakhHCdmB2pHiL1eUS0g+YbkprBzx4oKs2fr2DSIeJPjdiE06D9dWUJSqQYtNgeG7oMS4dWIbxtWz4w== 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; bh=h1OfU0YhpAamf0MeXRc6OOoIoEEIPsUtUbnoEzZvW3o=; b=LUDPtCSfyxFXzp0owEeY74E4oMQrO81iuLYWuWDzlxdwVmqZ0VDRS/LENdFLYj3esjhU3i9iKRrbK1Z5TcuTR13YXwhf9OR+9fMkEwCSMNrycq6DWV9z9PMsxNDw9hOIBVpryH6CuntjMcm9YJr8FheXfDl8CL6bJ6ZfIoO9t/1ISrPj259j52xyE3CNcdtLQ+D8zFYO/vY2aEjSfNyV9d6qEy+ebw2MTz/TVebrZucWvUr1PLue2/9RkJXx+BoU6YFrjbSUadkQnTJGS1nyGxLAftBZaWDQJdVU+M4PnBCw2cZvO90MQ28m9HYGJtzee/33zssDVn5ttB9524bMKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h1OfU0YhpAamf0MeXRc6OOoIoEEIPsUtUbnoEzZvW3o=; b=rnR/08LX9cp6FnYcYIHUL6KeXPCpD6NKfG6LEJntX4RJy5pa3FMozfUn1nIeUOoXYE6VYxtV3Ft596aAzUisxcjizb81edGtKouaO1wIX80tT5rYDBMHL86jE8oRxurW03q4KWQrP/ru4YViIrr44FBYKQIBadeY4B+wvQhWVjg= Received: from MWHPR05MB2896.namprd05.prod.outlook.com (2603:10b6:300:65::20) by MWHPR05MB2896.namprd05.prod.outlook.com (2603:10b6:300:65::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.9; Thu, 9 Sep 2021 23:44:09 +0000 Received: from MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::b8ad:c0df:fc49:52a]) by MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::b8ad:c0df:fc49:52a%8]) with mapi id 15.20.4523.009; Thu, 9 Sep 2021 23:44:09 +0000 From: Jacob Champion To: "magnus@hagander.net" CC: "pgsql-hackers@lists.postgresql.org" Subject: Re: PROXY protocol support Thread-Topic: PROXY protocol support Thread-Index: AQHXD4uSqyjv0bJ6g0yM1Pd9N9IAz6pxb0GAgACI9ICAAAsJgIACQb4AgAAKkYCAACt+gIAAqAWAgACkdICAAVD8AIAAFGSAgARREQCAAmaLAICtlE+AgA8N34CABdAsAIADROEAgFXqKICAAiATAIAB5BuA Date: Thu, 9 Sep 2021 23:44:09 +0000 Message-ID: References: <955367547640a1e24a72d0e79236f49ec7f0dd21.camel@vmware.com> <8aeede56330ca5721265428302c7f73e4e2e1264.camel@vmware.com> <0c4b20fd6b33e21f3776cac88219920cac73a883.camel@vmware.com> <84af2549930307353eea7422decf910dbcffb334.camel@vmware.com> In-Reply-To: <84af2549930307353eea7422decf910dbcffb334.camel@vmware.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.5-0ubuntu1 authentication-results: hagander.net; dkim=none (message not signed) header.d=none;hagander.net; dmarc=none action=none header.from=vmware.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b18fed1e-a9ae-4e00-48d6-08d973ebb82e x-ms-traffictypediagnostic: MWHPR05MB2896: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7sXqBHwxzhP82YvA9Ukw9NgK8b+2S1E1sYuv0nxqTUgkVNzvGnKr3NsLAQesUMSvKxLeqtZoSDAa0l+yKS6646iK7avdkQHGHBgVFCBdoQVQTZLMVjao/9sE0NarEexwC/2AHQqaKQQbuOWA4qA84VGtYGmToDWpY41yvlocklGPxuZdqPOjQfekS7wWJ+MgLSbQ9lK1XLjIk7lZ+bTiYVNqdXaM9N53erWAm92NQbe3K4Auq8BhiJAt9RBdnSAoW2qdWfKM+kp10iB+wiui/EJyuAIarNdQAQZ97DlObz4S4PZpeceyyiyRaOrGFFBfTuPt57CnvDnyRig8B1niIgStyo0783pf9eUB5lprxosWDgmeqTIUz/tVya5v/U7mVQP/MiBGeBZ/ce5arSFFj3g08TSZJ7TzyD0tAIOhFWnP7zCK8tnIwWs5S09ZXs3OSq5i9kY1pOEHx1EjKghcuME7llYdXEZqgnSiE/kLLNFdRVnE//XnSNw/XpH6v+fhBWnowaJScTh1MpQ/vc8hHNGbQzI0Rfb7dTezj/y6exyagCU5blFHXg8lCHxu3OALux1GMYXIwB0GkeTs7OcCd6z8w8YaU0xyoKJBm7yPbZK9n5fefFL5lx76Aur72hBeDlcKJl0M2cO9CoCUUvuMIBzmUtPPGD5sfmijKVcQXg+tGfvSLqMIKl6+7iw6b5pKTZbWqhPDWl/A3Qyy+UV3JA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR05MB2896.namprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(136003)(376002)(396003)(366004)(39860400002)(122000001)(2616005)(36756003)(71200400001)(38100700002)(6512007)(66946007)(83380400001)(4326008)(86362001)(186003)(7116003)(38070700005)(478600001)(6916009)(8936002)(2906002)(8676002)(76116006)(3480700007)(66476007)(5660300002)(66556008)(316002)(64756008)(6486002)(66446008)(26005)(6506007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eUVKdUV1MGlWMUhMMGRNckY5Mk5hUW83b2NGWW5KcVR2cGI5Skx6QUhaWHl4?= =?utf-8?B?MkJLTTJsY3VHNnJUNnR0UWdGRS9OKzhmdSs1YkdlMGdhYlJFVGRqNDh5cEM4?= =?utf-8?B?RHJENXVNUFpTdDVUQVlZSlYvR0ZuaVVmUnJiQ0cwSHVMTUNoMi9aWlEyUkww?= =?utf-8?B?bi80UytrRE5DRnd4V091RGFEWGlGZlNvRW1QRVl2a0hKelJ4a0VrdC93Lzc2?= =?utf-8?B?eVBqZWFmd3pMU3QwcFVzOElHK0tjWWxuYkFZZEpPeVNydlFwemRIUUJkN1dt?= =?utf-8?B?bld2amlBNUlpUElReUFweW9CbnpXQk4wOGVTMTZBNm00ZEhaRE9MT3N5ZXJl?= =?utf-8?B?U01pNG5GRTZQMXFnRm1qVFlPZTNYQWF6Y2tYZTFKU3dieXpRbVNOQ2tobmln?= =?utf-8?B?ZWlCOHYzMTBGRzFSUGlWNVJBVzlZNGRMMkNwNUt0SWpxRExWWkF6WENWWnB3?= =?utf-8?B?SGM5anRTSVlkeEl6UUNyOWlSaXJoeUJYUjhBVy80UnNiSjJ5eE1uSGx1OW1m?= =?utf-8?B?anZQRkk5bDd6ZUdNWElKV281V01obzJuSWtOdTY0Z2tSSGsrSnBTR2VEV2ZI?= =?utf-8?B?b3dnQnNYZkZuVDNEN01HcE1uRTdGVEFlZW1sK01ZZWFwSmNWWEprM0dpempu?= =?utf-8?B?WE5KRmt4NmhWSmc2WDlSWEJtQnRGRUEwT1NMZVkwby9LeUNsMWdwcUJEaStx?= =?utf-8?B?SUdiMElMa1ZFVDg0d3I5TVNhVEJjaWFWNDkyS0RESmFDK2xIeEZSbExCbDJ4?= =?utf-8?B?WTlpaGtVV0NsMXRWQ0JBYUFGNUlNM21rN1p5VUJudDRJbXlTbXl6RnYxWDRp?= =?utf-8?B?ckRrQjNlWktzUGhpS0RqeTE4MUg4VnQwQTRjS1dGOUtBdDNKcWJMQmxxYk9X?= =?utf-8?B?Y2pkanRKa01NVGZiSlgwak9jVE9HQkxrUUN4bW04RHFWNFc0RTREeGU5Q2U4?= =?utf-8?B?SlB3bDkydHhxYzVOYWxoMjZVaVEyRVk0M2poV2RhUmNLU2FxdmtUdktGbEhi?= =?utf-8?B?OUZEakhjYTl5TlljOHNqR2hjanhDZ1BKNytyUW1WVEY2cm5tc3BheVVuS2p3?= =?utf-8?B?WTBaL0IyLzhERGVUUDhGaUFqZmN4K0JOV3pUTU9NVndLaTN3eENOSHBHNFdh?= =?utf-8?B?WHQvZjJ2emVTQjZTWEZ5UlVRZVVIVjlPY2I0ZW0yQy9BUWFqUDk2dmgwTGc1?= =?utf-8?B?OTFEQ3N3azh0ZkFuV0dSNEpsN3NZRC9mL1R5TkNIM2ZrRlJOZWZIcWd2M3NW?= =?utf-8?B?SGZ0OXBUQktZNEMxK24xYUo0eGVQLzdwQ0xzQUZrWmsxTTVLeHA0V0MxaGl5?= =?utf-8?B?R2RkenFmN3N0dmlPVW9KMXJkT1hnRE9LZWdiTytnV1k2K2Z6dGhtM2F3MUZH?= =?utf-8?B?VnhlejUwZnBFQWRZTTMzclVjbG5wVitEZjJjL29tTUN1bFQ0NGRvYUZQQnR4?= =?utf-8?B?VXlSOFEzRHpJMXhJcFBQQWhsZWFmcXNYdldqWFNHNCtxc3B4Y2VwQXFJWi9l?= =?utf-8?B?amlWeEhhdTdzTUF5bHVpVFJrVzFVNjczdDBnSWNHNDZqRDk1Y3I5d0lEOFNu?= =?utf-8?B?eU1QQ0FNUmFuMHc3b0hwRSs3Skx0cFlwdUZtdGlhUEFIR08vNldvYkVhOTI4?= =?utf-8?B?NDVYbEsyWWlzQlhBRXN5V002UkE2dEJCQVZWOFFDM09aZ3BvaDJBY21vNHVm?= =?utf-8?B?SERKWXVvTTB0a1EySnIvVXJKQ1RMMXJDaHg0WURydTZGTk5MTWgrR2NQSzZ1?= =?utf-8?Q?/7sDzT44LmXp9a6IZLQknpJw3HjoHEphQ3XRlkQ?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR05MB2896.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b18fed1e-a9ae-4e00-48d6-08d973ebb82e X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2021 23:44:09.2676 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: X8WZ4E9+PBN9GuAnH/ukye2AOPJm/tFySoCEaFaNFxhp6L/l44GJzpMMzS15pklvzJRpmWKYfgDCMCDIHaK9sQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR05MB2896 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk T24gV2VkLCAyMDIxLTA5LTA4IGF0IDE4OjUxICswMDAwLCBKYWNvYiBDaGFtcGlvbiB3cm90ZToN Cj4gSSBzdGlsbCBvd2UgeW91IHRoYXQgb3ZlcmFsbCByZXZpZXcuIEhvcGluZyB0byBnZXQgdG8g aXQgdGhpcyB3ZWVrLg0KDQpBbmQgaGVyZSBpdCBpcy4gSSBmb2N1c2VkIG9uIHRoaW5ncyBvdGhl ciB0aGFuIFVud3JhcFByb3h5Q29ubmVjdGlvbigpDQpmb3IgdGhpcyByb3VuZCwgc2luY2UgSSB0 aGluayB0aGF0IHBpZWNlIGlzIGxvb2tpbmcgc29saWQuDQoNCj4gKyAgICAgICBpZiAocG9ydC0+ aXNQcm94eSkNCj4gKyAgICAgICB7DQo+ICsgICAgICAgICAgICAgICBlcmVwb3J0KExPRywNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyY29kZV9mb3Jfc29ja2V0X2FjY2Vz cygpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2coIklkZW50IGF1 dGhlbnRpY2F0aW9uIGNhbm5vdCBiZSB1c2VkIG92ZXIgUFJPWFkgY29ubmVjdGlvbnMiKSkpOw0K DQpXaGF0IGFyZSB0aGUgcnVsZXMgb24gQ09NTUVSUk9SIHZzIExPRyB3aGVuIGRlYWxpbmcgd2l0 aCBhdXRoZW50aWNhdGlvbg0KY29kZT8gSSBhbHdheXMgdGhvdWdodCBDT01NRVJST1Igd2FzIHJl cXVpcmVkLCBidXQgSSBzZWUgbm93IHRoYXQgTE9HDQooYW1vbmcgb3RoZXJzKSBpcyBzdXBwcmVz c2VkIHRvIHRoZSBjbGllbnQgZHVyaW5nIGF1dGhlbnRpY2F0aW9uLg0KDQo+ICAjaWZkZWYgVVNF X1NTTA0KPiAgICAgICAgICAgICAgICAgLyogTm8gU1NMIHdoZW4gZGlzYWJsZWQgb3Igb24gVW5p eCBzb2NrZXRzICovDQo+IC0gICAgICAgICAgICAgICBpZiAoIUxvYWRlZFNTTCB8fCBJU19BRl9V TklYKHBvcnQtPmxhZGRyLmFkZHIuc3NfZmFtaWx5KSkNCj4gKyAgICAgICAgICAgICAgIGlmICgh TG9hZGVkU1NMIHx8IChJU19BRl9VTklYKHBvcnQtPmxhZGRyLmFkZHIuc3NfZmFtaWx5KSAmJiAh cG9ydC0+aXNQcm94eSkpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgIFNTTG9rID0gJ04nOw0K PiAgICAgICAgICAgICAgICAgZWxzZQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICBTU0xvayA9 ICdTJzsgICAgICAgICAgICAvKiBTdXBwb3J0IGZvciBTU0wgKi8NCj4gQEAgLTIwODcsNyArMjQx NCw3IEBAIHJldHJ5MToNCj4gIA0KPiAgI2lmZGVmIEVOQUJMRV9HU1MNCj4gICAgICAgICAgICAg ICAgIC8qIE5vIEdTU0FQSSBlbmNyeXB0aW9uIHdoZW4gb24gVW5peCBzb2NrZXQgKi8NCj4gLSAg ICAgICAgICAgICAgIGlmICghSVNfQUZfVU5JWChwb3J0LT5sYWRkci5hZGRyLnNzX2ZhbWlseSkp DQo+ICsgICAgICAgICAgICAgICBpZiAoIUlTX0FGX1VOSVgocG9ydC0+bGFkZHIuYWRkci5zc19m YW1pbHkpIHx8IHBvcnQtPmlzUHJveHkpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgIEdTU29r ID0gJ0cnOw0KDQpOb3cgdGhhdCB3ZSBoYXZlIHBvcnQtPmRhZGRyLCBjb3VsZCB0aGVzZSBjaGVj a3MgYmUgc2ltcGxpZmllZCB0byBqdXN0DQpJU19BRl9VTklYKHBvcnQtPmRhZGRyLi4uKT8gT3Ig aXMgdGhlcmUgYSBjb3JuZXIgY2FzZSBJJ20gbWlzc2luZyBmb3INCnRoZSBwb3J0LT5pc1Byb3h5 IGNhc2U/DQoNCj4gKyAgICAqIE5vdGU6IEF1dGhlbnRpY2F0aW9uVGltZW91dCBpcyBhcHBsaWVk IGhlcmUgd2hpbGUgd2FpdGluZyBmb3IgdGhlDQo+ICsgICAgKiBzdGFydHVwIHBhY2tldCwgYW5k IHRoZW4gYWdhaW4gaW4gSW5pdFBvc3RncmVzIGZvciB0aGUgZHVyYXRpb24gb2YgYW55DQo+ICsg ICAgKiBhdXRoZW50aWNhdGlvbiBvcGVyYXRpb25zLiAgU28gYSBob3N0aWxlIGNsaWVudCBjb3Vs ZCB0aWUgdXAgdGhlDQo+ICsgICAgKiBwcm9jZXNzIGZvciBuZWFybHkgdHdpY2UgQXV0aGVudGlj YXRpb25UaW1lb3V0IGJlZm9yZSB3ZSBraWNrIGhpbSBvZmYuDQoNClRoaXMgY29tbWVudCBuZWVk cyB0byBiZSBhZGp1c3RlZCBhZnRlciB0aGUgbW92ZTsgd2FpdGluZyBmb3IgdGhlDQpzdGFydHVw IHBhY2tldCBjb21lcyBsYXRlciwgYW5kIGl0IGxvb2tzIGxpa2Ugd2UgY2FuIG5vdyB0aWUgdXAg M3ggdGhlDQp0aW1lb3V0IGZvciB0aGUgcHJveHkgY2FzZS4NCg0KPiArICAgICAgIC8qIENoZWNr IGlmIHRoaXMgaXMgYSBwcm94eSBjb25uZWN0aW9uIGFuZCBpZiBzbyB1bndyYXAgdGhlIHByb3h5 aW5nICovDQo+ICsgICAgICAgaWYgKHBvcnQtPmlzUHJveHkpDQo+ICsgICAgICAgew0KPiArICAg ICAgICAgICAgICAgZW5hYmxlX3RpbWVvdXRfYWZ0ZXIoU1RBUlRVUF9QQUNLRVRfVElNRU9VVCwg QXV0aGVudGljYXRpb25UaW1lb3V0ICogMTAwMCk7DQo+ICsgICAgICAgICAgICAgICBpZiAoVW53 cmFwUHJveHlDb25uZWN0aW9uKHBvcnQpICE9IFNUQVRVU19PSykNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgcHJvY19leGl0KDApOw0KDQpJIHRoaW5rIHRoZSB0aW1lb3V0IGhlcmUgY291bGQg Y29tZm9ydGFibHkgYmUgc3Vic3RhbnRpYWxseSBsZXNzIHRoYW4NCnRoZSBvdmVyYWxsIGF1dGhl bnRpY2F0aW9uIHRpbWVvdXQsIHNpbmNlIHRoZSBwcm94eSBzaG91bGQgc2VuZCBpdHMNCmhlYWRl ciBpbW1lZGlhdGVseSBldmVuIGlmIHRoZSBjbGllbnQgdGFrZXMgaXRzIHRpbWUgd2l0aCB0aGUg c3RhcnR1cA0KcGFja2V0LiBUaGUgc3BlYyBzdWdnZXN0cyBhbGxvd2luZyAzIHNlY29uZHMgbWlu aW11bSB0byBjb3ZlciBhDQpyZXRyYW5zbWlzc2lvbi4gTWF5YmUgc29tZXRoaW5nIHRvIHR1bmUg aW4gdGhlIGZ1dHVyZT8NCg0KPiArICAgICAgICAgICAgICAgICAgICAgICAvKiBBbHNvIGxpc3Rl biB0byB0aGUgUFJPWFkgcG9ydCBvbiB0aGlzIGFkZHJlc3MsIGlmIGNvbmZpZ3VyZWQgKi8NCj4g KyAgICAgICAgICAgICAgICAgICAgICAgaWYgKFByb3h5UG9ydE51bWJlcikNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz dHJjbXAoY3VyaG9zdCwgIioiKSA9PSAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc29ja2V0ID0gU3RyZWFtU2VydmVyUG9ydChBRl9VTlNQRUMsIE5VTEwsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBzaG9ydCkgUHJveHlQ b3J0TnVtYmVyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0ZW5Tb2NrZXQsIE1BWExJU1RFTik7 DQoNClNvcnJ5IGlmIHlvdSBhbHJlYWR5IHRhbGtlZCBhYm91dCB0aGlzIHVwdGhyZWFkIHNvbWV3 aGVyZSwgYnV0IGl0IGxvb2tzDQpsaWtlIGFub3RoZXIgZG93bnNpZGUgb2YgdHJlYXRpbmcgInBy b3h5IG1vZGUiIGFzIGEgc2VydmVyLXdpZGUgb24vb2ZmDQpzd2l0Y2ggaXMgdGhhdCBpdCBjdXRz IHRoZSBlZmZlY3RpdmUgTUFYTElTVEVOIGluIGhhbGYsIGZyb20gNjQgdG8gMzIsDQpzaW5jZSB3 ZSdyZSBvcGVuaW5nIHR3byBzb2NrZXRzIGZvciBldmVyeSBhZGRyZXNzLiBJZiBJJ3ZlIHVuZGVy c3Rvb2QNCnRoYXQgY29ycmVjdGx5LCBpdCBtaWdodCBiZSB3b3J0aCBtZW50aW9uaW5nIGluIHRo ZSBkb2NzLg0KDQo+IC0gICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MgJiYgZWxlbWxpc3QgIT0g TklMKQ0KPiArICAgICAgICAgICAgICAgaWYgKHNvY2tldCA9PSBOVUxMICYmIGVsZW1saXN0ICE9 IE5JTCkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgZXJlcG9ydChGQVRBTCwNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJtc2coImNvdWxkIG5vdCBjcmVh dGUgYW55IFRDUC9JUCBzb2NrZXRzIikpKTsNCg0KV2l0aCB0aGlzIGNoYW5nZSBpbiBQb3N0bWFz dGVyTWFpbiwgaXQgbG9va3MgbGlrZSBgc3VjY2Vzc2AgaXMgbm8NCmxvbmdlciBhIHVzZWZ1bCB2 YXJpYWJsZS4gQnV0IEknbSBub3QgY29udmluY2VkIHRoYXQgdGhpcyBpcyB0aGUNCmNvcnJlY3Qg bG9naWMgLS0gdGhpcyBpcyBqdXN0IGNoZWNraW5nIHRvIHNlZSBpZiB0aGUgbGFzdCBzb2NrZXQN CmNyZWF0aW9uIHN1Y2NlZWRlZCwgYXMgb3Bwb3NlZCB0byBzZWVpbmcgaWYgYW55IG9mIHRoZW0g c3VjY2VlZGVkLiBJcw0KdGhhdCB3aGF0IHlvdSBpbnRlbmRlZD8NCg0KPiArcGxhbiB0ZXN0cyA9 PiAyNTsNCj4gKw0KPiArbXkgJG5vZGUgPSBnZXRfbmV3X25vZGUoJ25vZGUnKTsNCg0KVGhlIFRB UCB0ZXN0IHdpbGwgbmVlZCB0byBiZSByZWJhc2VkIG92ZXIgdGhlIGNoYW5nZXMgaW4gMjAxYTc2 MTgzZS4NCg0KLS1KYWNvYg0K