From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (NAM12-MW2-obe.outbound.protection.outlook.com [40.107.244.50]) by mx.groups.io with SMTP id smtpd.web08.12788.1664468410401632366 for ; Thu, 29 Sep 2022 09:20:10 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=p7J5b4J2; 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.244.50, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oJWq1NzONajPfSVKxna2TcpqSrNI5qUAVN/tkg48IhMIQ8NeV9ba/9n8nJe4A4MFvJJkTcQ42KiiVyVYTmblssoVz4kYGRGJOYmn9dUfVrc8WZY7tnGLk0KY/j66Wp/Y9RxEKaR489T7v+BWgxJ/M31cEpj/HRwxbb9xk8I6RJqt57Y1MbkVdQRJ5PznH8fGPPjkgLKKZxFA4jwtbaQjl3w7DMSaRKcQwb0zEEj0B9PXTpT00TAvilrevyHkYSKkkJOGzdQwVQlij7kqxWXMCQWIdEQfgVFUZzuNkP2+QLd47nl2CguYyqIgwNlMDyhWrbGNPP6X91oXLIrtXw/Q3Q== 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=zxzBNgZjWpi4O6HuppV1JjqrQWlN+jqaKAsozQ0zdcE=; b=nNTmn8RZo1Mad3HMCiBaZBbvFtHsnmkFSYQUhuddNtorBGvjVzqpiJUu+L+xc8uHZfDxwuarPXChbh9XpZE0h2HAuC4jJBeHlbfIIxFIsxJld02p8K0YVO4pQXyW+vdFzQxTBPa7LJB8kSMp54nh+I84EzRX66ndJDRpfeCWKs3Hd+L1f7651GkSLgtY1rYN3ZGW3GPugNyJIvCztApfF8WB3OME4w6aNINN/3QTEenKduY04NTjors2wGNtx6K40yIWLKpjq9h0PCW3IZUKRzk7EcR4bhJMHrPFbDBM2VjnsxbEC5hHBqgHsFe1HZMEPHPIQgrA02C+tZ+Qs3hVlA== 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=zxzBNgZjWpi4O6HuppV1JjqrQWlN+jqaKAsozQ0zdcE=; b=p7J5b4J2hJQjeWe8imhqdSXP0V5otDm1/8YTZ/VIVvAF2BYoeY88ED8foTt1BvYoWG6KfahdljFUyqBZaKwAeRFhMR7JE9q9ayzNstmi2tfklW7N63HJekYeNdjlAqDkrRgdTDJiisdCXlfZWfxM+G5GUmla9bzpeUXASdh7DYddtQSaDIJmyCCd+/psu3R4+9EMdxnDhgBJBJFRlrqZTI+8ssdA4VZb/NEq7uhXV3qnR43jNdakLDsQuP+eNWkvnD8qyP9UAOEEO6JPwT75nnqf90ywtYGDwt4ynSFbSi0lYoqrgKFL5rQeebdHR6Y+MUVzaviSYKzDxUBhGBlT9Q== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by SJ1PR12MB6196.namprd12.prod.outlook.com (2603:10b6:a03:456::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.19; Thu, 29 Sep 2022 16:20:08 +0000 Received: from DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::84f:b16e:729e:2eca]) by DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::84f:b16e:729e:2eca%6]) with mapi id 15.20.5676.019; Thu, 29 Sep 2022 16:20:08 +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" , "jian.j.wang@intel.com" , gaoliming Subject: Re: [edk2-devel] [PATCH v2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Allow partial FreeBuffer Thread-Topic: [edk2-devel] [PATCH v2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Allow partial FreeBuffer Thread-Index: AQHYo2KYHmEPctI38EmivvRyAT6Lm62bwm0wgAAW6wCABLcLoIAPk0aAgCXGXHCAAAXLgIAUd0fwgAABWYCADI6uAA== Date: Thu, 29 Sep 2022 16:20:08 +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_|SJ1PR12MB6196:EE_ x-ms-office365-filtering-correlation-id: b0110f8a-d3d6-45b9-19b1-08daa23679e8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jLsBvtZ1fat5tNbeVtG4Bq1otwfxLO4sATHQcghypzOPIlcCKTj5taPWsUN8bkXHwaF1qQBLD/QvgpsqV8m2sl9BjnqTFesSleiHNuaMdSA1uCQK7NKLrpTs2VRQlC115iU2B7mptXEE1OOTjl7Ilf1bBH6uGUk/JcTosoJMy1QAaVVanBsSg+d3re8FPJFXR2Wx86+d1For0Il4ptlBFRIoJ7AavnDLQMhKCh3iKnVY8ERKPTMXx84jvK4y6ugnMG5yst1/fsupucfbu06St25Vo5u3w6RciGTM1fSuKpUKbG5FtG05TaF+BuSeRZ8y1xv1UtL2s6hLpPb1itQnxbKswHIcWtKK7kdnX+E84g7cbo+5au91jJrX4lthe3WpvoPqp8DLvPOcKfqFjUvF86lBC23P89L1BQKIhdc11nwPf5B1CJtNro8BfUukKqgBMuRUaLRfSZPVtJHPidogSZjYn4eeRKxefJ56puz7u7R+sT43CiSqgubUR2fVqWfRT5Emn1QpiJ13w8QuDEcIiCdWrEGEU55DY+FztL9bMXMxn2DYdsGNcO5Se5EyRt8KGxlo8rhU8LPbuONI1Vk6GBOftFdtEDggZ/muuaI9yIJb+k+zbFNcfWhiFxV/ghbYT8idSkfbYJow4ixcjbKGqopwoiOz7jOwWVh8je5JRS2BFy17j0f79dB60PsEFQ2PAwppsitHlcyULTzMPDIcKne9f5hlsTggWUi5NBDkhtOrqdXg3lvHCshCFZHinQ0eSy1KGV6CmlSoudfgw90Mze6pr7/jXZaQYN67a2ajj2CB9z8xsSgdd7Gan5OeoZiT 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:(13230022)(4636009)(346002)(396003)(136003)(376002)(39860400002)(366004)(451199015)(38100700002)(9686003)(26005)(122000001)(66899015)(53546011)(54906003)(76116006)(55016003)(4326008)(38070700005)(64756008)(7696005)(66556008)(8676002)(2906002)(33656002)(52536014)(86362001)(478600001)(5660300002)(186003)(8936002)(66946007)(66476007)(83380400001)(6506007)(41300700001)(66446008)(71200400001)(966005)(316002)(110136005)(213903007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ODJseGJXVGRIMHlHazNFOHhGeURCL3l3WEZkL2pXK2pBekhQWTlOVG94ZWFh?= =?utf-8?B?bjFCNWd6Tm51MklqV1Y2dG9pM3NYbG5tQ3lzK2JhVWUxNWpBeS93bXZYdWNU?= =?utf-8?B?dlNyZ1BnVFNuZDlmRmxpanMrRDJHdG8vNFZtOFlQcHZKUno0ZTJESVFrWjlJ?= =?utf-8?B?QStvdFN0K2d2Z1U4WWwyOGVpNHpRZFdjRUExNkZYRG5EZzVtRkxEeFllL0xn?= =?utf-8?B?NXJmSnNZcmdWRUtoYTBBY2g1U29jUDFNQVdPRDkzN0ZMU2Q3eklJQ3RyNGFX?= =?utf-8?B?LzVvN2Z1dDFVMHpPYlo2ZVJvZ2JMZDBHSVZMZk9nMU9qZjFLWHgra2U4bGN1?= =?utf-8?B?aWVhMjBFOWVwS1ByQkY4MENScW1ISFNwSkZSY0lsZk5iZXlKUjdxOXFjL2Yv?= =?utf-8?B?U2JEVFJYc0hWL1BpMXNZNzc0Y0l1eGZwSGk1TjNNa2VKZzhlRmtDY0VsNUtV?= =?utf-8?B?WmdidmxhUjAwRnY2OWNCZVNWTzdXc2xiWDV0R2p6RXpaTE9nMUlmSlpRbDYr?= =?utf-8?B?QStZbTlKOTNNUW9zL3BlZHA5SDhuVE9mdjkxdWd2WTVXYVJwdXlKR1hIOXBu?= =?utf-8?B?SWFtaDVLQlRXY1lrbzNXQTYzVnROeFA1ZnU3cHo5V1FmdEpFYWpZeTRqbStk?= =?utf-8?B?WDJjR2IyMEV5ZTVMb1YvTkdCSEMyREFnV2VRSjIvUlhBSFZqQnFGSXA1WTlP?= =?utf-8?B?NkNwWmxQS1lTYXRLNS9XUi9kREJGUlAxZE80c2JmSEpBbTExRDgzZmM5bWFR?= =?utf-8?B?cWhwd291L3o3OC8rTzlqUDI5V2tSSFdnVTFFR09JL0NWVFM4d1k0UjNueXRD?= =?utf-8?B?eTZDVzJLQ09haHZxS2ZpOVZ5UUJJZThyb3hrV00vdXhtNEp5dG02MFZmYUg0?= =?utf-8?B?OHZlT1Qrd0FKaklFVFdiQzZ0aG5sbHZrRW9saFdiSHE3a3RsYnRDNDk2aFZq?= =?utf-8?B?TmhVMzJJanNoUnMxUjlNYWJReGJVNTRnRnA4c0hrWWg1dUF1cklwSHBMMlFq?= =?utf-8?B?U0hHcWYrenFzRkJnbmY4RzhPSW9uRy9vazd1djQ1S01UTy80cWVzQWl5S2hB?= =?utf-8?B?QW9WN0FOblNFNlYxSU5neitLMklhd1NQWHpUZW1YSkNlbnhmRjE2dXd6c1d3?= =?utf-8?B?b3NieHZIMUN1eTBXVEJDRS9zblBHNU82RXQzakducWVMYmhaZ2dLdjRtSjJZ?= =?utf-8?B?ejRpd2pvSWFwV1E0NE1kd3dMYW55TisyWk5FT0R0VnNIT0toNkhKajV4RmF0?= =?utf-8?B?eXJCRlo5dnRzeG44RWpINjE0V2tkTWVhYWtRMG1kNTU4bStGaHF3c2o1SFdj?= =?utf-8?B?aVJmTmh1bkV2aEdDamtMNUp2Z2o5SDk3TjJhSmFuL1hqaE1CNHhITGFzUER3?= =?utf-8?B?ZlNBcVRNalVXU0d0Znl4MWI2M2JDNjlXdG9nNUpuVnI2NzdZWktYcCtxQ1d3?= =?utf-8?B?alladE45Tk1Ed1B0VGhyN2lZWG9kQ3FiaVRjNnFKcWhOMS8xR1JyZlErTCtl?= =?utf-8?B?bXRsaGtZWjZZTDZmUEx1QU5GS3ZYNzhmOUF6R2EwTlMzMTh1d2s5aXpwbUUy?= =?utf-8?B?QlRKYTNKWktxenBnalFTT1RZVUhuTTlETVozTWJhc2VPVERNendNSDBSVHlw?= =?utf-8?B?NVgzK0FhbTdFa04zM1A2UzNIeGk3djNsbExLYXJXU2RsUmZOblFaVXN4Vndq?= =?utf-8?B?amhJTkkwYmI2TXhzRVMvcDJ2VUZZaDZDVk82enF4Rm9reDNWVEh0NW91azVT?= =?utf-8?B?MG1SNkZCdXRDdHhXS0t0YlJRTlhhbTg5ZW56NzhpZmNRbXM1YnNXWkJ6cGRP?= =?utf-8?B?RWxpc0t6aHZaeWNNa2ZHVEp6R1MyanYzQzgxbXRteFlzK2pqREdKNXBEZlJD?= =?utf-8?B?R01jQUZNaG1LTUdnT1dnNlc1b1dleUVyNmJiMzlDR1RDWmNDcEpudlk2cTV1?= =?utf-8?B?d3lGWnIxY3BDZUxIT1A2bnpLcUQzNkpuUXh2ZzZTM3E4aUlxZi9jaTFlQ08r?= =?utf-8?B?amRjV0IrSFc2VGNVT2VnaEcwNlBLYUJhMmI5YmFsU0Y1VHp1cDB0TVNJNzJ5?= =?utf-8?B?eGJmdUZqbUViWWZRK3hUM3lwK2tHUlIrM2JOTXViTENteHBFd3RWS2I5cmpQ?= =?utf-8?Q?JSKso/08CL1qK4n7HkADOK2Eq?= 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: b0110f8a-d3d6-45b9-19b1-08daa23679e8 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Sep 2022 16:20:08.3221 (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: RKhl0fEx0oTcS0zyZ1IR/xugTXt4xGi4n7Ef5jzlsu4WNUbDMIlaC++vNg0mL0CKayClDRZ/TGbKtU4vMAvt8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6196 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWRlTW9kdWxlUGtnIG1haW50YWluZXJzLCBBbnkgY29tbWVudHMgb24gdGhpcz8NCg0KPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJu ZWwub3JnPg0KPiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAyMSwgMjAyMiAxMDozMiBBTQ0K PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5j b20+DQo+IENjOiBoYW8uYS53dUBpbnRlbC5jb207IHJheS5uaUBpbnRlbC5jb207IHF1aWNfbGxp bmRob2xAcXVpY2luYy5jb207DQo+IGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmcNCj4gU3ViamVj dDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjJdDQo+IE1kZU1vZHVsZVBrZy9Ob25EaXNjb3Zl cmFibGVQY2lEZXZpY2VEeGU6IEFsbG93IHBhcnRpYWwgRnJlZUJ1ZmZlcg0KPiANCj4gRXh0ZXJu YWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gDQo+ IA0KPiBPbiBXZWQsIDIxIFNlcHQgMjAyMiBhdCAxODoyNywgSmVmZiBCcmFzZW4gdmlhIGdyb3Vw cy5pbw0KPiA8amJyYXNlbj1udmlkaWEuY29tQGdyb3Vwcy5pbz4gd3JvdGU6DQo+ID4NCj4gPiBB bnl0aGluZyBlbHNlIG5lZWRlZCB0byBnZXQgdGhpcyBtZXJnZWQ/DQo+ID4NCj4gDQo+IFRoYXQg aXMgdXAgdG8gdGhlIE1kZU1vZHVsZVBrZyBtYWludGFpbmVycy4NCj4gDQo+ID4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2Vy bmVsLm9yZz4NCj4gPiA+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgOCwgMjAyMiA5OjU1IEFN DQo+ID4gPiBUbzogSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT4NCj4gPiA+IENjOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzsgaGFvLmEud3VAaW50ZWwuY29tOyByYXkubmlAaW50ZWwuY29t Ow0KPiA+ID4gcXVpY19sbGluZGhvbEBxdWljaW5jLmNvbTsgYXJkYit0aWFub2NvcmVAa2VybmVs Lm9yZw0KPiA+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjJdDQo+ID4gPiBN ZGVNb2R1bGVQa2cvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlOiBBbGxvdyBwYXJ0aWFsIEZy ZWVCdWZmZXINCj4gPiA+DQo+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3Blbmlu ZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+ID4NCj4gPiA+DQo+ID4gPiBPbiBUaHUsIDggU2Vw dCAyMDIyIGF0IDE3OjM5LCBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPiB3cm90ZToN Cj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IEFyZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+ DQo+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBBdWd1c3QgMTUsIDIwMjIgODo0MiBBTQ0KPiA+ID4g PiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlh LmNvbT4NCj4gPiA+ID4gPiBDYzogaGFvLmEud3VAaW50ZWwuY29tOyByYXkubmlAaW50ZWwuY29t Ow0KPiA+ID4gPiA+IHF1aWNfbGxpbmRob2xAcXVpY2luYy5jb207DQo+ID4gPiA+ID4gYXJkYit0 aWFub2NvcmVAa2VybmVsLm9yZw0KPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0g W1BBVENIIHYyXQ0KPiA+ID4gPiA+IE1kZU1vZHVsZVBrZy9Ob25EaXNjb3ZlcmFibGVQY2lEZXZp Y2VEeGU6IEFsbG93IHBhcnRpYWwNCj4gPiA+ID4gPiBGcmVlQnVmZmVyDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRh Y2htZW50cw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPbiBGcmksIDUgQXVnIDIw MjIgYXQgMTg6NTYsIEplZmYgQnJhc2VuIHZpYSBncm91cHMuaW8NCj4gPiA+ID4gPiA8amJyYXNl bj1udmlkaWEuY29tQGdyb3Vwcy5pbz4gd3JvdGU6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4gPiA+ID4gPiA+IEZyb206IEFyZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+DQo+ID4g PiA+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIEF1Z3VzdCAyLCAyMDIyIDEwOjUxIEFNDQo+ID4gPiA+ ID4gPiA+IFRvOiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPg0KPiA+ID4gPiA+ID4g PiBDYzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IGhhby5hLnd1QGludGVsLmNvbTsNCj4gPiA+ID4g PiA+ID4gcmF5Lm5pQGludGVsLmNvbTsgcXVpY19sbGluZGhvbEBxdWljaW5jLmNvbTsNCj4gPiA+ ID4gPiA+ID4gYXJkYit0aWFub2NvcmVAa2VybmVsLm9yZw0KPiA+ID4gPiA+ID4gPiBTdWJqZWN0 OiBSZTogW1BBVENIIHYyXQ0KPiBNZGVNb2R1bGVQa2cvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNl RHhlOg0KPiA+ID4gPiA+ID4gPiBBbGxvdyBwYXJ0aWFsIEZyZWVCdWZmZXINCj4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlu a3Mgb3IgYXR0YWNobWVudHMNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gT24gVHVlLCAyIEF1ZyAyMDIyIGF0IDE3OjMyLCBKZWZmIEJyYXNlbiA8amJyYXNlbkBu dmlkaWEuY29tPg0KPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gPiA+ID4gPiA+ID4gPiBGcm9tOiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwu b3JnPg0KPiA+ID4gPiA+ID4gPiA+ID4gU2VudDogRnJpZGF5LCBKdWx5IDI5LCAyMDIyIDk6NDgg QU0NCj4gPiA+ID4gPiA+ID4gPiA+IFRvOiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29t Pg0KPiA+ID4gPiA+ID4gPiA+ID4gQ2M6IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBoYW8uYS53dUBp bnRlbC5jb207DQo+ID4gPiA+ID4gPiA+ID4gPiByYXkubmlAaW50ZWwuY29tOyBxdWljX2xsaW5k aG9sQHF1aWNpbmMuY29tOw0KPiA+ID4gPiA+ID4gPiA+ID4gYXJkYit0aWFub2NvcmVAa2VybmVs Lm9yZw0KPiA+ID4gPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2Ml0NCj4gPiA+IE1k ZU1vZHVsZVBrZy9Ob25EaXNjb3ZlcmFibGVQY2lEZXZpY2VEeGU6DQo+ID4gPiA+ID4gPiA+ID4g PiBBbGxvdyBwYXJ0aWFsIEZyZWVCdWZmZXINCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRh Y2htZW50cw0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+ID4gPiBPbiBUaHUsIDI4IEp1bCAyMDIyIGF0IDEzOjI1LCBKZWZmIEJyYXNlbg0KPiA+ID4g PiA+ID4gPiA+ID4gPGpicmFzZW5AbnZpZGlhLmNvbT4NCj4gPiA+IHdyb3RlOg0KPiA+ID4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBBZGRp bmcgTGVpZi9BcmQgdG8gQ0MgaW5jYXNlIHRoZXkgaGF2ZSBhbnkgY29tbWVudHMgb24NCj4gdGhp cyBwYXRjaC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gPiBUaGlzIGdlbmVyYWxseSBsb29rcyBvayB0byBtZS4gSSBqdXN0IHdvbmRlciBp ZiBpdA0KPiA+ID4gPiA+ID4gPiA+ID4gd291bGRuJ3QgYmUgc2ltcGxlciB0byByZXVzZSB0aGUg ZXhpc3RpbmcgYWxsb2NhdGlvbg0KPiA+ID4gPiA+ID4gPiA+ID4gZGVzY3JpcHRvciBpZiBpdCBp cyBub3QgYmVpbmcgZnJlZWQgZW50aXJlbHkuIEdpdmVuIHRoZQ0KPiA+ID4gPiA+ID4gPiA+ID4g W3ByZXN1bWFibHldIHRoZSBtb3N0IGNvbW1vbiBjYXNlIGlzIHRvIGFsbG9jYXRlIGFuZA0KPiA+ ID4gPiA+ID4gPiA+ID4gdGhlbiBmcmVlIHNvbWUgcGFnZXMgYXQgdGhlIGVuZCwgbG93ZXJpbmcg dGhlIHBhZ2UgY291bnQNCj4gPiA+ID4gPiA+ID4gPiA+IG9uIHRoZSBleGlzdGluZyBkZXNjcmlw dG9yIHdvdWxkIGNvdmVyIG1vc3QgY2FzZXMsIGFuZA0KPiA+ID4gPiA+ID4gPiA+ID4gd2UnZCBv bmx5IG5lZWQgdG8gYWxsb2NhdGUgbmV3IG9uZXMgaWYgcGFnZXMgYXJlIGJlaW5nDQo+ID4gPiA+ ID4gPiA+ID4gPiBmcmVlZCBhdCB0aGUgc3RhcnQgb3IgaW4NCj4gPiA+ID4gPiA+ID4gdGhlIG1p ZGRsZS4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IFRoZXJlIGlzIG9mdGVuIGZy ZWVpbmcgYXQgdGhlIGJlZ2lubmluZyBhcyB3ZWxsIGFzIHRoaXMgaXMNCj4gPiA+ID4gPiA+ID4g PiBiZWluZyB1c2VkIHRvIGNyZWF0ZQ0KPiA+ID4gPiA+ID4gPiBhIDY0SyBhbGlnbmVkIHNlY3Rp b24gb2YgbWVtb3J5IGluIHRoZSBjYXNlLiBTbyBpdCBvdmVyDQo+ID4gPiA+ID4gPiA+IGFsbG9j YXRlcyBhbmQgdGhlIGZyZWUncyBzb21lIGF0IHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBlbmQuDQo+ ID4gPiA+ID4gPiA+IEkgY291bGQgcHJvYmFibHkgbWFrZSBpdCBkZXRlY3QgYW5kIHVzZSB0aGF0 IGJ1dCBmaWd1cmVkDQo+ID4gPiA+ID4gPiA+IHRoaXMgY29kZSB3b3VsZCBzdXBwb3J0IGFsbCBj YXNlcyBhbmQgcmVxdWlyZWQgbGVzcyBjYXNlIHNwZWNpZmljDQo+IGRldGVjdGlvbi4NCj4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBBaCBpbnRlcmVzdGluZy4g V291bGQgaXQgaGVscCBpZiB0aGUgYWxsb2NhdGUgcm91dGluZQ0KPiA+ID4gPiA+ID4gPiBhbGln bmVkIGFsbG9jYXRpb25zIHRvIHRoZWlyIHNpemU/DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g VGhlIFBjaUlvLT5BbGxvY2F0ZUJ1ZmZlciBmdW5jdGlvbiBkb2Vzbid0IHN1cHBvcnQgcGFzc2lu ZyB0aGUNCj4gPiA+ID4gPiA+IHJlcXVlc3QgaW4gc28NCj4gPiA+ID4gPiB3ZSB3b3VsZCBuZWVk IHRvIGtub3cgdGhhdCBpbmZvIGJlZm9yZWhhbmQuIFRoZSBjdXJyZW50IGNhbGxpbmcNCj4gPiA+ ID4gPiBpbiB0aGUgWEhDSSBkcml2ZXIgZG9lcyBhIGZyZWUgYXQgdGhlIGJlZ2lubmluZyBhbmQg dGhlbiB0aGUgZW5kDQo+ID4gPiA+ID4gb2YgdGhlIGJ1ZmZlciBzbyB3ZSBjb3VsZCB0aGUgZXhp c3RpbmcgYWxsb2NhdGlvbiB0cmFja2VyIGJ1dA0KPiA+ID4gPiA+IGZpZ3VyZWQgaXQgd291bGQg YmUgYmV0dGVyIHRvIGNvcnJlY3QgdGhlIGZ1bmN0aW9uIGp1c3QgaW4gY2FzZQ0KPiA+ID4gPiA+ IHNvbWVvbmUgY2FsbGVkIGl0IHRvIGZyZWUNCj4gPiA+IGluIHRoZSBtaWRkbGUuDQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gV2hhdCBJIHdhcyB3b25kZXJpbmcgaXMgd2hldGhl ciBzdWNoIGFsbG9jYXRpb25zIGFyZSB0aGVtc2VsdmVzDQo+ID4gPiA+ID4gbXVsdGlwbGVzIG9m IDY0ay4gVGhpcyBpcyBwZXJoYXBzIG9ydGhvZ29uYWwgdG8gdGhlIGlzc3VlIHRoaXMNCj4gPiA+ ID4gPiBwYXRjaCBhZGRyZXNzZXMsIGFzIHdlJycgc3RpbGwgbmVlZCB0byBkZWFsIHdpdGggcGFy dGlhbCBmcmVlDQo+ID4gPiA+ID4gY2FsbHMgcmVnYXJkbGVzcy4gQnV0IEkgd2FzIGN1cmlvdXMg d2hldGhlciBYSENJIGluIHBhcnRpY3VsYXIsDQo+ID4gPiA+ID4gYW5kIHBlcmhhcHMgbW9yZSBn ZW5lcmFsbHksIHdlIGNvdWxkIHN0cmVhbWxpbmUgdGhpcyBieSBhbGlnbmluZw0KPiA+ID4gPiA+ IGFsbCBhbGxvY2F0aW9ucw0KPiA+ID4gdG8gYSBsb2cyIHVwcGVyIGJvdW5kIG9mIHRoZWlyIHNp emVzLg0KPiA+ID4gPg0KPiA+ID4gPiBYaGNpIGNvZGUNCj4gPiA+DQo+IChodHRwczovL2dpdGh1 Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi9tYXN0ZXIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvDQo+ ID4gPiBYaGNpDQo+ID4gPiBEeGUvVXNiSGNNZW0uYyNMNjA0KSBpbiBhbGxvY2F0aW9uIHJlcXVl c3RlZCBpcyBncmVhdGVyIHRoZQ0KPiA+ID4gRUZJX1BBR0VfU0laRSBhbGxvY2F0ZXMgbnVtYmVy IG9mIHJlcXVlc3RlZCBwYWdlcyBwbHVzIHBhZ2VzIGZvciB0aGUNCj4gPiA+IGFsaWdubWVudCBh bmQgdGhlbiBmcmVlcyBwYWdlcyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlDQo+ID4g PiBhbGxvY2F0aW9uLiAgSSBhbSBub3Qgc3VyZSB3ZSByZWFsbHkgY291bGQgY2hhbmdlIHRoaXMg d2l0aG91dCBhZGRpbmcgYW4NCj4gYWxpZ25tZW50IGZpZWxkIHRvIHRoZSBQY2lJbyBwcm90b2Nv bC4NCj4gPiA+ID4NCj4gPiA+ID4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB5b3Ugd291bGQgbGlr ZSB0byBjaGFuZ2Ugb24gdGhpcyBwYXRjaD8NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBOby4gVGhh bmtzIGZvciB0aGUgY2xhcmlmaWNhdGlvbi4NCj4gPiA+DQo+ID4gPiBSZXZpZXdlZC1ieTogQXJk IEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4NCj4gPg0KPiA+DQo+ID4gDQo+ID4NCj4gPg0K