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 1m0pgn-0003M8-NK for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Jul 2021 18:20:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1m0pgm-0000w4-G3 for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Jul 2021 18:20:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m0pgm-0000vw-6u for pgsql-hackers@lists.postgresql.org; Tue, 06 Jul 2021 18:20:56 +0000 Received: from mail-dm6nam10on2046.outbound.protection.outlook.com ([40.107.93.46] helo=NAM10-DM6-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m0pgi-0000uZ-QM for pgsql-hackers@postgresql.org; Tue, 06 Jul 2021 18:20:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ctk0q7ldgKcdgzGPwiGL7+fjwoZ+/Pr0IYeAI30s+ebQmgcv2g+F3ySMDJXsqnLDV0+iF0aLhdbM/F44/ijT1AYAj89MasFdBhT+UbcW7rwYBCMxLNwSGljQVXnk7go6hkAwy/13Ivp11D+x9is1bqQ3/8jmqa953qikiOv9bPdW0xAlDRur6n6Z5sUk2XkJMjqiOY13dXW8r87Tc6NypjkL9t2YR2wibefj08shNaaqXVXVhkHFoUw41J076/hbXcqBn6yaqKrTY29osa0ieTI8hy3ym9at3NEbHn9X+vltrqD6+vO1U6OHwPoQVbqf8bo4HBaKPfNq7fbOyG1Xxw== 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-SenderADCheck; bh=lQcQxqYV0JT3K/oygcFsLxW3d410/lOpTnrv6S7UwkY=; b=nEMtf0MQE/iHcPdF5bgcRUXauD7F1OsVwp8cN22rFTX2w7ficftmVYR1iYpW0F2hkKmkxwACLEEKLOKYv4ZjaGKi56NGuuX8StwuTrWpefivNvoPLZwgWIaaeI5ssM2FpiS3TSEcK963P4JGKFznoH1v/eRKx51aZ4VpqoyX2L5Om8rhlTMSbUYNqaioTH+ZCCSxnkXytOp06h9TQ/eqVADahlyigISWW6yUg1U1BUo8dGmPNPeT7bjvSNwfNqvWDhC/sVFwd831C1GCKjzICw+JyMTuE2JuXp8s4+Ecm0KbI4FLUTSY2AYXvE94er97POSjeqTvDZ6FoAsn5essqA== 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=lQcQxqYV0JT3K/oygcFsLxW3d410/lOpTnrv6S7UwkY=; b=lHNkFdeRztSdr+S8+0+VYH/pxBeXpzjp4baxLzumfDJMgVuhA9WU5uqQFLAHCOYAH03cwwKh0f4U40GwLU5yPmZ8ekXom5JyqJFdw5sgS+84Llcz/dVgOWT/1+VPcvQhL5j6b2KZjBtEihzbdWbzMruvUIdFXDJqEWfnP/btJS8= Received: from MWHPR05MB2896.namprd05.prod.outlook.com (2603:10b6:300:65::20) by CO6PR05MB7780.namprd05.prod.outlook.com (2603:10b6:5:345::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.12; Tue, 6 Jul 2021 18:20:49 +0000 Received: from MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::59e1:5f08:31c6:1d3]) by MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::59e1:5f08:31c6:1d3%9]) with mapi id 15.20.4308.020; Tue, 6 Jul 2021 18:20:49 +0000 From: Jacob Champion To: "michael@paquier.xyz" CC: "pgsql-hackers@postgresql.org" Subject: Re: [PATCH] Pull general SASL framework out of SCRAM Thread-Topic: [PATCH] Pull general SASL framework out of SCRAM Thread-Index: AQHXZ7cuih/hnd4520mfiSjUyUJWWashNioAgAQxYQCAABKUAIAHtWyAgAbtdQCAAjrbAA== Date: Tue, 6 Jul 2021 18:20:49 +0000 Message-ID: <39a6bd825fd776f5f9c3a8eb7ca1c62f77cea433.camel@vmware.com> References: <3d2a6f5d50e741117d6baf83eb67ebf1a8a35a11.camel@vmware.com> <9dc553fe86ba34bff1e0b636c493b527fc7bc030.camel@vmware.com> <0907fda41fb40b23e2cbdf7eb05a8d61dd5307b3.camel@vmware.com> In-Reply-To: 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: paquier.xyz; dkim=none (message not signed) header.d=none;paquier.xyz; dmarc=none action=none header.from=vmware.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 00ad7930-8dde-4c84-034e-08d940aac849 x-ms-traffictypediagnostic: CO6PR05MB7780: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gr9E3EU+KexFUK0HW3ckWxa2ebgfH45bM/dNQ+LHKvBZ3I4qalW6zAP4ZgfOnsnvNQh1Dyqqc7x4mDAG2heYLFZxe+4HDMeYswGupVdIhd8DOlDdFmJ3ct+cBZZKzw4kFT/u+ewR7XLnCIGRbUCzdL+mwo7G3IvthXIpy3x9v+r+8gMOqoMDytyUbW8PSR9OSgXhd0ix2W1NItWpiwXo+Pr+Hsjik595vK02FgaP1BzIDNnEM6eFeHnwMGoIU4P7pj3JxnBqM4Fb4bV7gNk+fL399Ky8djUVOieNsvxachzg1kXYDd4ZB4wFaYq+1HbmEIk1CWZSFCv91qs5z7eFuirBSAxPLuIaPLIKGKV1ld4Ij20MX8d4vh6vlhOkeCNJou+IsIjTnZlkrrqNwXAET6CDgZmrKIYEvnhVqFLy1NY9Fi6lMI2X3p2+tbY2Qh5oQVKh7tTEHyndiDGAn3p26XJGKKb/axTVMOe9+2y/0pyDmzPjB3Em1R5kspwms5mxDdL+s8kb3dSiWu78pPC3qKQ9doaDtvnhcZJ+puaBba0ngBWwBWW9D5KhxVxnlpmFdpMX88IDZN+ww+3GNaNqcF380IZYPMrgNY9ulQfNWknEtOLQN76/G88O5kVAMsB0Jy2w5tabKjqsISKZrMqYsA== 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)(396003)(39860400002)(346002)(366004)(136003)(376002)(4326008)(478600001)(66946007)(2616005)(8936002)(2906002)(86362001)(5660300002)(64756008)(6916009)(6506007)(66476007)(76116006)(66556008)(66446008)(316002)(8676002)(83380400001)(38100700002)(26005)(6486002)(122000001)(36756003)(6512007)(71200400001)(186003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z2NvdjAxZjZoMGJVY3BYeWh5S3U3VjlsdGcxYUhEcVBnWk1VNVc2RWtrK0E5?= =?utf-8?B?Umx0c1NyUlhDUzlXcVdvc3p5cU9XNE9SbE5FL3kxTnR6dFhOd2cxRXpLWWN5?= =?utf-8?B?TVl2QW03VU5VOGlEM2U3R3VZTFU4d1d1M2hOUG5FcVpZdHJzZmxOTE4xUHJi?= =?utf-8?B?VDdML1N1SHZhN1hxMGJZN2Fzd1EyTFU4ZVhrZktIc1UxUkVhWFZXSFpTaVhr?= =?utf-8?B?RDNMeXpEc0FHaUZQLzh3b3IySUt5ZnlhcnJkcFV3YkI4em1pbGRLVnBxYThl?= =?utf-8?B?eEo5YlRFb0JUNFR4SGJaa05rR1diUENGT004ZEsyY1BhY0Ewa2JWMFg0TERz?= =?utf-8?B?N3J1NWJDRGk5SGd3UkhYV0R3UEd6QXA3Q2NVZ1ZuUm1OWjl1MW0xeVBCZ00y?= =?utf-8?B?YVJXWTNQeTR4NEtaSmozUTM3L2JNWVJJekRIbzRjWnVWbEd6cFozTFJhMFdM?= =?utf-8?B?MHB0bWd1ZGhoV2lwZUE2dlgwQ3F6Qlp3eG9pZm1QdjY5Um1uYm1YS3E2N0hL?= =?utf-8?B?K0dyRXVneitDNGZnUjdGQWV4NUFqbmcyM0J1NEUyVm1vay9rdjJMWlAzLytR?= =?utf-8?B?Mk5pbGN3MStWRkVhRFc2Wkh3bzVaT0RHblVpTWlvcHJoYXJjOHRDWGZEamNP?= =?utf-8?B?dENEVlZTcitiYVB6Z0tXOXh3N3k3N2lQY2krR3V0T2Q0QitkaWp1TVJpYnB4?= =?utf-8?B?ZFJUU2JHdW5DUHU1dWpIb3VNM25SY3RvR2FCVlBHeXN5Y29JeTJWTHdTaC9m?= =?utf-8?B?MUJuUTdWaGRZaThOVHIybTFETDdBV3BkZmFQVkVkcGJ3cHZac3A5SU5Sd3I4?= =?utf-8?B?SjNoSHduSVVUVEl6R0JselRpSHg1Um5vY0N4bjNnUWVoRnhWQmF6OE43eEdS?= =?utf-8?B?YmlRQXNlYmpNblFLVU9kaUllNlljaEFEUk9JRFpkbWZsY00xZDNDeDBQdSt3?= =?utf-8?B?L3VRTi91dkZhdFkyaHFwa0xPYkxZTjduRTlTNGQ2VjcvWUwvYWNJRzFQWUhH?= =?utf-8?B?d3dnQ292cEFpM1RtMHlXTkVobXcwdDRzN3Vac3JzK0thM1ZjRDJnK0gxdllp?= =?utf-8?B?M2YrQnYxd0lNeTU2bzdWVmhUL3JTSG9LcjNoQ2h2eldBMnVsSWZ1K29UOGZS?= =?utf-8?B?S0p4aUZxSEN2Z0dUUjNRVEdINHFBaVpZcDBhZTJaUnpvcW9tWFVzdkhTVEtB?= =?utf-8?B?Mi85MjIxMnc0U2sxbCszSHIramVvNkFQaGVYeWt5VlY0SWx6M1dXeVEraDEw?= =?utf-8?B?QXNHMXRUQkpXSThyV01mMFFUQTBMMmxpY2dMR2l1WVN6a25NVFRXTmVzTDVG?= =?utf-8?B?ZUZtc3VVTWtQdmlUcEhyWmdJei83SW16T1lqeFdRRVpxRGJiaWsyQmlrZXc3?= =?utf-8?B?Nms0dldTVU11andqYkJmMTdlNmoyUlF0VUdUaWdwaTZ0dnNUZGFHRGtscldK?= =?utf-8?B?eVBIa0J4Q0IyWkFxYThtL0tPdkZhRFplb05hTVFoOXFLQ3Nyb0NsUnFULy9C?= =?utf-8?B?elFHVlpPVkhZbEJiaFRjcXhsZml3bG1mSEp6eGR1dVhJVVNEQlBhc0JkMjEr?= =?utf-8?B?bWs2VWU1TUZNTGQyWVF0UTQzeU1OMEdGYjlSUlM0cTRhOG9CbU1RQlAyTlhu?= =?utf-8?B?RkN1MUJGTGJSVzZrRGpKZEhZUldxbWJEeHhZUk1VVnh0T1BjWWVUL0pmcWty?= =?utf-8?B?eDlma0xMRjhoR2F3NzQwVUtscmUzOGRDSVdhSlJXRXNOQy9aQ3JIcXY2RmQx?= =?utf-8?Q?N5eofHJ09kMUy09vmB9G9GtOY6Lm+3yfIowW1Ib?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <475DC9BCD17E2B499C0CE307338FF091@namprd05.prod.outlook.com> 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: 00ad7930-8dde-4c84-034e-08d940aac849 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jul 2021 18:20:49.6962 (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: jSD3C03i3xg6ClVPk2/9ZX3N9rr4AGQxBpdp+L3UnS7ynKmng4XqvHWa1tjjP33k2u+QVkslXlFeEQf42E4U4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR05MB7780 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk T24gTW9uLCAyMDIxLTA3LTA1IGF0IDE3OjE3ICswOTAwLCBNaWNoYWVsIFBhcXVpZXIgd3JvdGU6 DQo+IE9uIFdlZCwgSnVuIDMwLCAyMDIxIGF0IDEwOjMwOjEyUE0gKzAwMDAsIEphY29iIENoYW1w aW9uIHdyb3RlOg0KPiA+IERvbmUgaW4gdjMsIHdpdGggYSBzZWNvbmQgcGF0Y2ggZm9yIHRoZSBj b2RlIG1vdGlvbi4NCj4gDQo+IEkgaGF2ZSBnb25lIHRocm91Z2ggdGhhdCwgdHdlYWtpbmcgdGhl IGRvY3VtZW50YXRpb24geW91IGhhdmUgYWRkZWQgYXMNCj4gdGhhdCdzIHRoZSBtZWF0IG9mIHRo ZSBwYXRjaCwgcmV3b3JraW5nIGEgYml0IHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlDQo+IGNhbGxi YWNrcyAobm8gbmVlZCBmb3Igc2V2ZXJhbCB0eXBlZGVmIGdlcmUpIGFuZCBkb2luZyBzb21lIHNt YWxsDQo+IGZvcm1hdCBjaGFuZ2VzIHRvIG1ha2UgdGhlIGluZGVudGF0aW9uIGhhcHB5LiAgQW5k IHRoYXQgbG9va3MgcHJldHR5DQo+IGdvb2QuDQoNCkxvb2tzIHZlcnkgZ29vZCwgdGhhbmtzISBB IGZldyBjb21tZW50cyBvbiB0aGUgZG9jcyBjaGFuZ2VzOg0KDQo+ICsJICogT3V0cHV0IHBhcmFt ZXRlcnM6DQo+ICsJICoNCj4gKwkgKglidWY6ICBBIFN0cmluZ0luZm8gYnVmZmVyIHRoYXQgdGhl IGNhbGxiYWNrIHNob3VsZCBwb3B1bGF0ZSB3aXRoDQo+ICsJICoJCSAgc3VwcG9ydGVkIG1lY2hh bmlzbSBuYW1lcy4gIFRoZSBuYW1lcyBhcmUgYXBwZW5kZWQgaW50byB0aGlzDQo+ICsJICoJCSAg U3RyaW5nSW5mbywgc2VwYXJhdGVkIGJ5ICdcMCcgYnl0ZXMuDQoNCkVhY2ggbmFtZSBtdXN0IGJl IG51bGwtdGVybWluYXRlZCwgbm90IGp1c3QgbnVsbC1zZXBhcmF0ZWQuIFRoYXQgd2F5DQp0aGUg bGlzdCBvZiBuYW1lcyBlbmRzIHdpdGggYW4gZW1wdHkgc3RyaW5nOg0KDQogICAgbmFtZS1vbmVc MCAgICAgICAgICAgICAgPC0gYWRkZWQgYnkgdGhlIG1lY2hhbmlzbQ0KICAgICAgICAgICAgICBu YW1lLXR3b1wwICAgIDwtIGFkZGVkIGJ5IHRoZSBtZWNoYW5pc20NCiAgICAgICAgICAgICAgICAg ICAgICAgIFwwICA8LSBhZGRlZCBieSB0aGUgZnJhbWV3b3JrDQoNClRoZSB3YXkgaXQncyB3b3Jk ZWQgbm93LCBJIGNvdWxkIHNlZSBzb21lIGltcGxlbWVudGVycyBmYWlsaW5nIHRvDQp0ZXJtaW5h dGUgdGhlIGZpbmFsIG5hbWUgYmVjYXVzZSB0aGUgZnJhbWV3b3JrIGFkZHMgYSB0cmFpbGluZyBu dWxsDQphbHJlYWR5IC0tIGJ1dCB0aGUgZnJhbWV3b3JrIGlzIHRlcm1pbmF0aW5nIHRoZSBsaXN0 LCBub3QgdGhlIGZpbmFsDQpuYW1lLg0KDQo+ICsJICogaW5pdCgpDQo+ICsJICoNCj4gKwkgKiBJ bml0aWFsaXplcyBtZWNoYW5pc20tc3BlY2lmaWMgc3RhdGUgZm9yIGEgY29ubmVjdGlvbi4gIFRo aXMNCj4gKwkgKiBjYWxsYmFjayBtdXN0IHJldHVybiBhIHBvaW50ZXIgdG8gaXRzIGFsbG9jYXRl ZCBzdGF0ZSwgd2hpY2ggd2lsbA0KPiArCSAqIGJlIHBhc3NlZCBhcy1pcyBhcyB0aGUgZmlyc3Qg YXJndW1lbnQgdG8gdGhlIG90aGVyIGNhbGxiYWNrcy4NCj4gKwkgKiBmcmVlKCkgaXMgY2FsbGVk IHRvIHJlbGVhc2UgYW55IHN0YXRlIHJlc291cmNlcy4NCg0KTWF5YmUgc2F5ICJUaGUgZnJlZSgp IGNhbGxiYWNrIGlzIGNhbGxlZCIgdG8gZGlmZmVyZW50aWF0ZSBpdCBmcm9tDQpzdGFuZGFyZCBm cmVlKCk/DQoNCj4gSXQgaXMgYSBiaXQgc2FkIHRoYXQgdGhlIFNDUkFNIHBhcnQgY2Fubm90IGJl IGNvbXBsZXRlbHkNCj4gdW5wbHVnZ2VkIGZyb20gdGhlIGF1dGggcGFydCwgYmVjYXVzZSBvZiB0 aGUgY2FsbCB0byB0aGUgZnJlZSBmdW5jdGlvbg0KPiBhbmQgdGhlIEhCQSBjaGVja3MsIGJ1dCBh ZGRpbmcgbW9yZSB3cmFwcGVycyB0byBhY2NvbW9kYXRlIHdpdGggdGhhdA0KPiBpcyBub3QgcmVh bGx5IHdvcnRoIGl0Lg0KDQpZZWFoLiBJIHRoaW5rIHRoYXQgYWRkaXRpb25hbCBpbXByb3ZlbWVu dHMvcmVmYWN0b3JpbmcgaGVyZSB3aWxsIGNvbWUNCm5hdHVyYWxseSBpZiBjbGllbnRzIGFyZSBl dmVyIGFsbG93ZWQgdG8gbmVnb3RpYXRlIFNBU0wgbWVjaGFuaXNtcyBpbg0KdGhlIGZ1dHVyZS4g RG9lc24ndCBuZWVkIHRvIGhhcHBlbiBub3cuDQoNCj4gLSAgICAgICAgICAgICAgIGlmICghcGdf ZmVfc2NyYW1fY2hhbm5lbF9ib3VuZChjb25uLT5zYXNsX3N0YXRlKSkNCj4gKyAgICAgICAgICAg ICAgIGlmICghY29ubi0+c2FzbCB8fCAhY29ubi0+c2FzbC0+Y2hhbm5lbF9ib3VuZChjb25uLT5z YXNsX3N0YXRlKSkNCj4gY29ubi0+c2FzbCBzaG91bGQgYmUgc2V0IGluIHRoaXMgY29kZSBwYXRo LiAgVGhpcyBzdHlsZSBpcyBzYWZlci4NCg0KSXQncyBwb3NzaWJsZSBmb3IgY29ubi0+c2FzbCB0 byBiZSBOVUxMIGhlcmUsIHNheSBpZiB0aGUgY2xpZW50IGhhcw0KY2hhbm5lbF9iaW5kaW5nPXJl cXVpcmUgYnV0IGNvbm5lY3RzIGFzIGEgdXNlciB3aXRoIGFuIE1ENSBzZWNyZXQuIFRoZQ0KU0NS QU0gVEFQIHRlc3RzIGhhdmUgb25lIHN1Y2ggY2FzZS4NCg0KPiBUaGUgdG9wIGNvbW1lbnQgb2Yg c2NyYW1faW5pdCgpIHN0aWxsIG1lbnRpb25lZA0KPiBwZ19iZV9zY3JhbV9nZXRfbWVjaGFuaXNt cygpLCB3aGlsZSBpdCBzaG91bGQgYmUNCj4gc2NyYW1fZ2V0X21lY2hhbmlzbXMoKS4NCj4gDQo+ IFBHX01BWF9TQVNMX01FU1NBR0VfTEVOR1RIIGNhbiBzdGF5IHdpdGhpbiBhdXRoLXNhc2wuYy4N Cg0KTG9va3MgZ29vZCB0byBtZS4NCg0KPiA+IC0gSSBkb24ndCB0aGluayBpdCdzIGxlZ2FsIGZv ciBhIGNsaWVudCB0byByZWZ1c2UgYSBjaGFsbGVuZ2UgZnJvbSB0aGUNCj4gPiBzZXJ2ZXIgd2l0 aG91dCBhYm9ydGluZyB0aGUgZXhjaGFuZ2UsIHNvIHdlIHNob3VsZCBwcm9iYWJseSBjaGVjayB0 bw0KPiA+IG1ha2Ugc3VyZSB0aGF0IGNsaWVudCByZXNwb25zZXMgYXJlIG5vbi1OVUxMIGluIHRo ZSBzdWNjZXNzIGNhc2UuDQo+IA0KPiBIbW0uICBEb2VzIHRoZSBSRkNzIHRlbGwgdXMgYW55dGhp bmcgYWJvdXQgdGhhdD8NCg0KSnVzdCBpbiBnZW5lcmFsIHRlcm1zOg0KDQo+ICAgIEVhY2ggYXV0 aGVudGljYXRpb24gZXhjaGFuZ2UgY29uc2lzdHMgb2YgYSBtZXNzYWdlIGZyb20gdGhlIGNsaWVu dCB0bw0KPiAgICB0aGUgc2VydmVyIHJlcXVlc3RpbmcgYXV0aGVudGljYXRpb24gdmlhIGEgcGFy dGljdWxhciBtZWNoYW5pc20sDQo+ICAgIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIHBhaXJzIG9m IGNoYWxsZW5nZXMgZnJvbSB0aGUgc2VydmVyIGFuZA0KPiAgICByZXNwb25zZXMgZnJvbSB0aGUg Y2xpZW50LCBmb2xsb3dlZCBieSBhIG1lc3NhZ2UgZnJvbSB0aGUgc2VydmVyDQo+ICAgIGluZGlj YXRpbmcgdGhlIG91dGNvbWUgb2YgdGhlIGF1dGhlbnRpY2F0aW9uIGV4Y2hhbmdlLiAgKE5vdGU6 DQo+ICAgIGV4Y2hhbmdlcyBtYXkgYWxzbyBiZSBhYm9ydGVkIGFzIGRpc2N1c3NlZCBpbiBTZWN0 aW9uIDMuNS4pDQoNClNvIGEgY2hhbGxlbmdlIG11c3QgYmUgbWV0IHdpdGggYSByZXNwb25zZSwg b3IgdGhlIGV4Y2hhbmdlIG11c3QgYmUNCmFib3J0ZWQuIChBbmQgSSBkb24ndCB0aGluayBvdXIg cHJvdG9jb2wgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgYQ0KY2xpZW50IGFib3J0IG1lc3NhZ2U7 IGlmIHNvbWV0aGluZyBnb2VzIHdyb25nLCB3ZSBqdXN0IHRlYXIgZG93biB0aGUNCmNvbm5lY3Rp b24uKQ0KDQpUaGFua3MsDQotLUphY29iDQo=