From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (NAM04-DM6-obe.outbound.protection.outlook.com [40.107.102.41]) by mx.groups.io with SMTP id smtpd.web11.702.1662651574423264543 for ; Thu, 08 Sep 2022 08:39:34 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=qmiIA5yj; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.102.41, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Lgr44PXJXnjwPkMboFBOwL7s/qNXBI65rGy8fp77dqG3HsyAjrG+fJpi5D17ThiV7fvE5lL6cRTRe2KNOC6zM0hLDufkmcTEyMei2FNKb2iVk0m18KdEagcEg2NQQUz1rhN9LkCRtDQA92V71gPSaMXVuMmV9yoIGzygo+BCUbR/LqudN6vmEUiqYRb8VRgjHJHbpEgffsWlix/IBImQX1nFX9LnkC8hEZsxIMSeo6y7oiMTeDEoQm1tEtzlW0b9Om1Q0GXAPkNz+cIpwIhyqlKrx5enC57Fc6ynRcMpBX86ZkydhRo1NLI/rXx+T9upkiXLuLTeDATcRY8KUED5nA== 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=9xpn+bzGqvncJMxpKHllautEjuR4u18JhUDfH3hqZBE=; b=WS3jPnmOCwmyfshxIbO39fqzqCKkP6Pk0d/N0Ldtq2E3Sw1bmheqDDiENDYK9Q0SeCfTt1E4DnHvqeOklapTcbvUEY0poRnNm1IM1+5UkBo1p36TYPa6SJhUQGRgmZK2vhGuN5Xkfmq1UAr2SawX1sLgpdWKpeuV/oOqgBr01HX8WsIGa3FnuIqU2cS8cU8NrxmAa4tNvqJTClv7MV2GZgLikZGr7l9g2WyPaxwD9i/yIwCTdvguf0MPDjjB2e7KGP3H2alJVmJaa15QHGA7Vzci6B4DLZuh6P+bfqOBT2E9JL2hT5LfTfqFJXlhkQFi/jHy0QXvGpHO5uMLIptBfA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9xpn+bzGqvncJMxpKHllautEjuR4u18JhUDfH3hqZBE=; b=qmiIA5yj9JcU9ZgrvphdeQYxulficgIWpQ6aLQ3hHGjRFGyZLwrf5Q0kmuP+wOXAelrpUSMaA5gu/bN+POO6FaWgIftNjKo0EnC+uQvJiQ0XnQssF4DumkN3N48QBTQ28tbRMWQS5srjQye8Ry2GcF5Yw6tyHbbW6hqtE2rKNjPQyf7bhVooJl6g0C6monriSe7CYoFfWW2CNCqlSb/3ETO/hVMx+dR+PbP8AJfW1K6BEHULv5cxwoI8VJqAAD61ICG8tEC2uoXo1WyO5SYA1oUA2NER1Y3Q84MI2E4V5TnI3/roNkHgjRYBwFPrxu0OSOOvsbSg40yytHsRPAye5g== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by MW4PR12MB7358.namprd12.prod.outlook.com (2603:10b6:303:22b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.12; Thu, 8 Sep 2022 15:39:32 +0000 Received: from DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::7466:644:c90f:3404]) by DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::7466:644:c90f:3404%4]) with mapi id 15.20.5612.016; Thu, 8 Sep 2022 15:39:32 +0000 From: "Jeff Brasen" To: Ard Biesheuvel , "devel@edk2.groups.io" CC: "hao.a.wu@intel.com" , "ray.ni@intel.com" , "quic_llindhol@quicinc.com" , "ardb+tianocore@kernel.org" Subject: Re: [edk2-devel] [PATCH v2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Allow partial FreeBuffer Thread-Topic: [edk2-devel] [PATCH v2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Allow partial FreeBuffer Thread-Index: AQHYo2KYHmEPctI38EmivvRyAT6Lm62bwm0wgAAW6wCABLcLoIAPk0aAgCXGXHA= Date: Thu, 8 Sep 2022 15:39:31 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR12MB5789:EE_|MW4PR12MB7358:EE_ x-ms-office365-filtering-correlation-id: 13644c03-b61a-4fee-88a9-08da91b05313 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 11bQBb/8dPQBHoRAAiECyOovao+5NY4gWoGKWDecjI8H4UzoNgG6gEtB8vmZwfQbKFmJHgtWQcekX+Mnm5MjMBrXdkhbcudL10if4EXYxnfG5hGfZVRYby8u9rvrzi9rKeNEvnFgJBkX1QlTXBI1ndooWy++/BRds+QLTRiJ8wdmEFz+xszXH1r08kPBZAjlv2gIpneAc/wAmhlP3tIokXfYDTpdZGwTiLVnwwhYHhF3PvOGX3SeDpD03aXxmXl7qVISWFU3Jtm+MfgJsITiXkhHp+lUUcINsd/XTCI3VxN2kv807iq/flKGI6CD1gS0HtlHLJJuJfBb2URrkLILUl7q3mbOroZN4iAW3FmbJ14M+incHI2Ll/LRMBkaM1jsg22tIqcVnZ9zqoyQa8/nuRYsemhSekAh++QfWyQs/9QxWY9+HrQQr/aKGpNKgLWPV7EuLR9KpQK9YpDO5071OTClARpeleWPGVS+lioevUfJBeVF+k9mhYPyvuEdiwZ3LBXZwJVRkj9wC6z2AowvDtWusiy+hLTwsSNzsEfISR9KNvq7sf5careNOncnZKBs/06hoTU2HZ7weSZlGMTQRP2bFxcGXM5I2c065mlQ3Gvf6INhFo9t4lL6CJaVfNNbQIJsiWoq4HCNG3WJxpNoXtYKaLdiGAYD13jufSob/PDKGqVwkDXGX3qiHeAyxu668wohAym24Qr9vnS+1Rd+t+jjQ3C9CVkT8TbG+ml3vCV4eqF8T+lDlo5enRT7ziMXfPQH6djCZit4rBBM3K2P6UFCN/fdydrvsp2jXzRJHnbZaKDZ5LcneAdZIBdCIbIzSO8FYvSnTERCCufTpC1ssA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5789.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(39860400002)(366004)(396003)(376002)(346002)(136003)(33656002)(86362001)(53546011)(38100700002)(9686003)(6506007)(7696005)(122000001)(83380400001)(55016003)(186003)(26005)(5660300002)(316002)(110136005)(478600001)(54906003)(71200400001)(8936002)(52536014)(64756008)(4326008)(66556008)(2906002)(66476007)(38070700005)(8676002)(66446008)(76116006)(66946007)(41300700001)(213903007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eXJsblhtVGdHYVRHdUVQUjB0OGxZdGVaV250L3oxNWpOaGNyWGJaTnZSdFdL?= =?utf-8?B?Z29LZkwwcGZaTlVQQnhRM0VkdHVKT1hlaUNJc29vcUNqb3VtSFVGK2VHMlpq?= =?utf-8?B?SHhLT0ZORzNtS3FVNDlKa3lzaWxlZS9tcUZoa0RkWXhJWFozR2JGWms0djhI?= =?utf-8?B?TlBKMmdCN2N3QW0vT3JpUUNDb0R4dk5CelZySjhOekFlbjlyaGlXR0wrd0Jy?= =?utf-8?B?RzRqNWRzSGp1K3N1M2p3NHFJUUVma0xnQ3kvem9XR1VudStjYkE0bHNhckZx?= =?utf-8?B?dythRlNEdGErU2pwVTlvT0xLV0p0bVI1MGhpa0szd3RpOUU0MEVraGs0WWpt?= =?utf-8?B?MzNYL1VrM1FJQ2tldUM3LzN3RENPVlZrT0k3N2doQ0lhL3JVTnAwa2tjMERV?= =?utf-8?B?WFgxNk5WMlVDL0Fnc1ZzQ2s4UGJMQVdUQVcxOHFpc1BNUEhUb2xwczM0ZjNH?= =?utf-8?B?UWQ0UkZ2Uk1mQmE0WjJQMlV4bEk4aCtEdmttQmVuVG0xZGxnUGVlWS85b1dt?= =?utf-8?B?VktTT0tJN0xiY01FZTFRd2I1eHR2d1UvOU1RY1JaVHpmcXJBNWc3akd0U1FV?= =?utf-8?B?dGd6REtMVkp2aDBYaUxlQzN1eFhEc0hCcWpWdFdkYVQvMzNGaWpLWjQ2Wk81?= =?utf-8?B?MFZlNSs4MjZtNm9aL2Z1b09tMUgwNFJHaE54d2tGUlJmK29hU3pacmNsQWwr?= =?utf-8?B?dXkrRE43aXBGZEVFVmQ1Nk4vTEt2NW1ZNFpzRjhwZyttRlRDSUxOMm5LOVhZ?= =?utf-8?B?UzhneDRHbDZhYVNxMjdXWk1zUCtTZE96Z3h1NDFCRTFrZVBPck5HeG1lMS9F?= =?utf-8?B?S1A3YVY5TGIzeHJBZmRrNWtKK1FLSE9jT1V1WlhqckVNMS9yQzJVL2N1WFEx?= =?utf-8?B?MGlidjdQcC91dzF4R3RKOXFBbi84N0wzSnRZU3FXKzdsQXYvUk96bG5WYTEy?= =?utf-8?B?ME1SdXZQQUdTTHVQNG5reURCUjVoM3FDdUdHcEJRN2NISHBTeVZjTXBXb2hD?= =?utf-8?B?UFY3SDdTcDhtZGJoREp5ZlF4blhLWHUzYU5sWHJxbmQ0OSs4alMycmd1Nnpa?= =?utf-8?B?eXVZMUNFSkdOdFNIZC9reG1EaXdIMWM4bXR3NWZOYjlzL3pBbTFJMHA4ckpn?= =?utf-8?B?NHdqUW55bWNQdVpuOWNhRmNKMHlYY0dXVlp2dEhFQzU3MExnb3J3ZThSemxi?= =?utf-8?B?amU3UmMzWXA0N3g2TGYzcmZZNkR5RURoYU4vV1d5cTgrb25sS3FtRUllNVdT?= =?utf-8?B?Q0FSMXFOZ2NTTUF4NUJGcEZXYUNWMWlmQXdZUlQzTTNjYlFDclA0Y0dzanpt?= =?utf-8?B?dnVHK2kydzN0RFF1bFNIS2ZiV0pRa096dTlNRVhXZUs3d0lndFhQdXIxVFk3?= =?utf-8?B?L2tSUEo5dlljT0FNY0l5NnRzRFNTOEJ1NFh3M0JkOGtsc3VhQ21CZFlvZFZT?= =?utf-8?B?N21icFJrY3VVa3hoN2N3OTVPRjl0emVvSXVuUS8wTlpmZDlYL3IyS0pLbGsx?= =?utf-8?B?ODFhMVZQVXBka0I2bDV2VFNhbHRvdlRYRVdob3ZDNjc0NXR5Z2hDK3Jrb282?= =?utf-8?B?dkVLTmpHQ2NxNGZtVXdVZHUwckU0Q2crTTFJU2Z3UGRrVHhXRTd2b0I4K29j?= =?utf-8?B?TDFRRUdUS3lzbWRTUFN2WGVHUVJMZDZTQURhc25jTGFXTVBPTmNGSXNYUUJx?= =?utf-8?B?aVZGMTZDa0RhRmRoSWFsOEY4S1FIUzZvWXBaZWdGRGk0dFlyOXdoNXZnRStG?= =?utf-8?B?dElTSklxYlI4ZmJib3NybkwyMXFkZFZDRExsczhHei9wTUZ5SCtVK3VPYmhL?= =?utf-8?B?V3h3eXhNcFhvWlRPcExzdlVQdTdGTTJ1TG1KazUvNVhzOFRaMlpUbnJzTW1v?= =?utf-8?B?Z0J5M0VOZkdrWHoyM3ROWnpJbnU3ZDhoejY1SmoyTVd5VUJGSlM4eFpZeTY3?= =?utf-8?B?ajNvLzhzT3NVUzYwWjhDNFhPTkJ4WEVLQUd6dWMzTEJxVGFRZThwT3MrNFBR?= =?utf-8?B?RjZ2M0dMOHovbEF4ZXZBV2MrU2dwZUFmbU4rU1FaaHE5K050d1lrQURZa0hy?= =?utf-8?B?OTRwejBRRFBTTjd2V3VnRGUvV1YwLzI1UmR6Ynlib1VvUlJzUW9wekhNT2tx?= =?utf-8?Q?2tFZab718aG4GMBzI0W3rV5Om?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5789.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 13644c03-b61a-4fee-88a9-08da91b05313 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Sep 2022 15:39:31.9938 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: f/2btEGoLbD2fDnNXlNe/JR44fwTS2+wZMR9whZRvcQQxgOuS4Wn+dOkEtDG5XlXnIlRCtzlVp5ZB7vUyFGKuA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7358 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg PGFyZGJAa2VybmVsLm9yZz4NCj4gU2VudDogTW9uZGF5LCBBdWd1c3QgMTUsIDIwMjIgODo0MiBB TQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRp YS5jb20+DQo+IENjOiBoYW8uYS53dUBpbnRlbC5jb207IHJheS5uaUBpbnRlbC5jb207IHF1aWNf bGxpbmRob2xAcXVpY2luYy5jb207DQo+IGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmcNCj4gU3Vi amVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjJdDQo+IE1kZU1vZHVsZVBrZy9Ob25EaXNj b3ZlcmFibGVQY2lEZXZpY2VEeGU6IEFsbG93IHBhcnRpYWwgRnJlZUJ1ZmZlcg0KPiANCj4gRXh0 ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4g DQo+IA0KPiBPbiBGcmksIDUgQXVnIDIwMjIgYXQgMTg6NTYsIEplZmYgQnJhc2VuIHZpYSBncm91 cHMuaW8NCj4gPGpicmFzZW49bnZpZGlhLmNvbUBncm91cHMuaW8+IHdyb3RlOg0KPiA+DQo+ID4N Cj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEFyZCBC aWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+DQo+ID4gPiBTZW50OiBUdWVzZGF5LCBBdWd1c3Qg MiwgMjAyMiAxMDo1MSBBTQ0KPiA+ID4gVG86IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5j b20+DQo+ID4gPiBDYzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IGhhby5hLnd1QGludGVsLmNvbTsg cmF5Lm5pQGludGVsLmNvbTsNCj4gPiA+IHF1aWNfbGxpbmRob2xAcXVpY2luYy5jb207IGFyZGIr dGlhbm9jb3JlQGtlcm5lbC5vcmcNCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjJdIE1kZU1v ZHVsZVBrZy9Ob25EaXNjb3ZlcmFibGVQY2lEZXZpY2VEeGU6DQo+ID4gPiBBbGxvdyBwYXJ0aWFs IEZyZWVCdWZmZXINCj4gPiA+DQo+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3Bl bmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+ID4NCj4gPiA+DQo+ID4gPiBPbiBUdWUsIDIg QXVnIDIwMjIgYXQgMTc6MzIsIEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+IHdyb3Rl Og0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9y Zz4NCj4gPiA+ID4gPiBTZW50OiBGcmlkYXksIEp1bHkgMjksIDIwMjIgOTo0OCBBTQ0KPiA+ID4g PiA+IFRvOiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPg0KPiA+ID4gPiA+IENjOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzsgaGFvLmEud3VAaW50ZWwuY29tOyByYXkubmlAaW50ZWwuY29t Ow0KPiA+ID4gPiA+IHF1aWNfbGxpbmRob2xAcXVpY2luYy5jb207IGFyZGIrdGlhbm9jb3JlQGtl cm5lbC5vcmcNCj4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyXSBNZGVNb2R1bGVQa2cv Tm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlOg0KPiA+ID4gPiA+IEFsbG93IHBhcnRpYWwgRnJl ZUJ1ZmZlcg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9u IG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gT24gVGh1LCAyOCBKdWwgMjAyMiBhdCAxMzoyNSwgSmVmZiBCcmFzZW4gPGpicmFzZW5A bnZpZGlhLmNvbT4gd3JvdGU6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IEFkZGluZyBMZWlmL0FyZCB0byBDQyBpbmNhc2UgdGhleSBoYXZlIGFueSBjb21tZW50cyBvbiB0 aGlzIHBhdGNoLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoaXMgZ2VuZXJh bGx5IGxvb2tzIG9rIHRvIG1lLiBJIGp1c3Qgd29uZGVyIGlmIGl0IHdvdWxkbid0IGJlDQo+ID4g PiA+ID4gc2ltcGxlciB0byByZXVzZSB0aGUgZXhpc3RpbmcgYWxsb2NhdGlvbiBkZXNjcmlwdG9y IGlmIGl0IGlzIG5vdA0KPiA+ID4gPiA+IGJlaW5nIGZyZWVkIGVudGlyZWx5LiBHaXZlbiB0aGUg W3ByZXN1bWFibHldIHRoZSBtb3N0IGNvbW1vbg0KPiA+ID4gPiA+IGNhc2UgaXMgdG8gYWxsb2Nh dGUgYW5kIHRoZW4gZnJlZSBzb21lIHBhZ2VzIGF0IHRoZSBlbmQsDQo+ID4gPiA+ID4gbG93ZXJp bmcgdGhlIHBhZ2UgY291bnQgb24gdGhlIGV4aXN0aW5nIGRlc2NyaXB0b3Igd291bGQgY292ZXIN Cj4gPiA+ID4gPiBtb3N0IGNhc2VzLCBhbmQgd2UnZCBvbmx5IG5lZWQgdG8gYWxsb2NhdGUgbmV3 IG9uZXMgaWYgcGFnZXMgYXJlDQo+ID4gPiA+ID4gYmVpbmcgZnJlZWQgYXQgdGhlIHN0YXJ0IG9y IGluDQo+ID4gPiB0aGUgbWlkZGxlLg0KPiA+ID4gPg0KPiA+ID4gPiBUaGVyZSBpcyBvZnRlbiBm cmVlaW5nIGF0IHRoZSBiZWdpbm5pbmcgYXMgd2VsbCBhcyB0aGlzIGlzIGJlaW5nDQo+ID4gPiA+ IHVzZWQgdG8gY3JlYXRlDQo+ID4gPiBhIDY0SyBhbGlnbmVkIHNlY3Rpb24gb2YgbWVtb3J5IGlu IHRoZSBjYXNlLiBTbyBpdCBvdmVyIGFsbG9jYXRlcw0KPiA+ID4gYW5kIHRoZSBmcmVlJ3Mgc29t ZSBhdCB0aGUgYmVnaW5uaW5nIGFuZCB0aGUgZW5kLiBJIGNvdWxkIHByb2JhYmx5DQo+ID4gPiBt YWtlIGl0IGRldGVjdCBhbmQgdXNlIHRoYXQgYnV0IGZpZ3VyZWQgdGhpcyBjb2RlIHdvdWxkIHN1 cHBvcnQgYWxsDQo+ID4gPiBjYXNlcyBhbmQgcmVxdWlyZWQgbGVzcyBjYXNlIHNwZWNpZmljIGRl dGVjdGlvbi4NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBBaCBpbnRlcmVzdGluZy4gV291bGQgaXQg aGVscCBpZiB0aGUgYWxsb2NhdGUgcm91dGluZSBhbGlnbmVkDQo+ID4gPiBhbGxvY2F0aW9ucyB0 byB0aGVpciBzaXplPw0KPiA+DQo+ID4gVGhlIFBjaUlvLT5BbGxvY2F0ZUJ1ZmZlciBmdW5jdGlv biBkb2Vzbid0IHN1cHBvcnQgcGFzc2luZyB0aGUgcmVxdWVzdCBpbiBzbw0KPiB3ZSB3b3VsZCBu ZWVkIHRvIGtub3cgdGhhdCBpbmZvIGJlZm9yZWhhbmQuIFRoZSBjdXJyZW50IGNhbGxpbmcgaW4g dGhlIFhIQ0kNCj4gZHJpdmVyIGRvZXMgYSBmcmVlIGF0IHRoZSBiZWdpbm5pbmcgYW5kIHRoZW4g dGhlIGVuZCBvZiB0aGUgYnVmZmVyIHNvIHdlIGNvdWxkDQo+IHRoZSBleGlzdGluZyBhbGxvY2F0 aW9uIHRyYWNrZXIgYnV0IGZpZ3VyZWQgaXQgd291bGQgYmUgYmV0dGVyIHRvIGNvcnJlY3QgdGhl DQo+IGZ1bmN0aW9uIGp1c3QgaW4gY2FzZSBzb21lb25lIGNhbGxlZCBpdCB0byBmcmVlIGluIHRo ZSBtaWRkbGUuDQo+ID4NCj4gDQo+IFdoYXQgSSB3YXMgd29uZGVyaW5nIGlzIHdoZXRoZXIgc3Vj aCBhbGxvY2F0aW9ucyBhcmUgdGhlbXNlbHZlcyBtdWx0aXBsZXMgb2YNCj4gNjRrLiBUaGlzIGlz IHBlcmhhcHMgb3J0aG9nb25hbCB0byB0aGUgaXNzdWUgdGhpcyBwYXRjaCBhZGRyZXNzZXMsIGFz IHdlJycgc3RpbGwNCj4gbmVlZCB0byBkZWFsIHdpdGggcGFydGlhbCBmcmVlIGNhbGxzIHJlZ2Fy ZGxlc3MuIEJ1dCBJIHdhcyBjdXJpb3VzIHdoZXRoZXIgWEhDSSBpbg0KPiBwYXJ0aWN1bGFyLCBh bmQgcGVyaGFwcyBtb3JlIGdlbmVyYWxseSwgd2UgY291bGQgc3RyZWFtbGluZSB0aGlzIGJ5IGFs aWduaW5nIGFsbA0KPiBhbGxvY2F0aW9ucyB0byBhIGxvZzIgdXBwZXIgYm91bmQgb2YgdGhlaXIg c2l6ZXMuDQoNClhoY2kgY29kZSAoaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Js b2IvbWFzdGVyL01kZU1vZHVsZVBrZy9CdXMvUGNpL1hoY2lEeGUvVXNiSGNNZW0uYyNMNjA0KSBp biBhbGxvY2F0aW9uIHJlcXVlc3RlZCBpcyBncmVhdGVyIHRoZSBFRklfUEFHRV9TSVpFIGFsbG9j YXRlcyBudW1iZXIgb2YgcmVxdWVzdGVkIHBhZ2VzIHBsdXMgcGFnZXMgZm9yIHRoZSBhbGlnbm1l bnQgYW5kIHRoZW4gZnJlZXMgcGFnZXMgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBh bGxvY2F0aW9uLiAgSSBhbSBub3Qgc3VyZSB3ZSByZWFsbHkgY291bGQgY2hhbmdlIHRoaXMgd2l0 aG91dCBhZGRpbmcgYW4gYWxpZ25tZW50IGZpZWxkIHRvIHRoZSBQY2lJbyBwcm90b2NvbC4NCg0K SXMgdGhlcmUgYW55dGhpbmcgZWxzZSB5b3Ugd291bGQgbGlrZSB0byBjaGFuZ2Ugb24gdGhpcyBw YXRjaD8NCg0KVGhhbmtzLA0KSmVmZg0KDQo=