From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com [40.107.220.61]) by mx.groups.io with SMTP id smtpd.web10.158.1663696089540362540 for ; Tue, 20 Sep 2022 10:48:09 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=iwMugnZP; 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.220.61, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SZKT7icjFIOm09rYUVOsCQNyhAmPSPwICegD5WtzDwdTjZKvzsexG7z9LgFHXDIUefHKiw/bD53ly3e9mhaRkUgZNn2N80rIIqITO9wOx8/bG1Y5zfDCXFuof7OrrDSBBlcxXN6ATr3a+N4qklci8aXuKBEBos6EmZ/RocZzJMLm2z7JfHAfX3Uhe4+lwi+N/T2irxJr5AET2avJhOqVbAZuARpshVmH7oxGRv420ahHym8KRbz+hieq7KpfPv2++AW0M15/kspM7EcEPGf5WIciNiinDk4Ew8xuiXCieLd2QH52iHZb2WGwwstDGMfZPBDj3r7UWRxicJ4zjYNUfg== 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=YDU3iSR7N2ZYpz62hCdn8PBWE9NY/0DQGJQGKQDxh+o=; b=fzrwQTDkGfUWHU/VkCzTUkld1/mI/ORkZaoVGAagm+3yWP4sHat/HG75uMyiCTHjmZuAsmxsYbw6OnDk9Gl8gqgDvCjPjJdAQU6McYrzVk/ixjNDHpyBkvfNLM4Rv7r8kZyoOH3A4Z/fahNZgBom/M0UiMZTxTfCkoATAQJxR4Ki4PRmyhZNq5ILiZsBRoGW4WXVTsSBZDy57Ztlx80O1AWzaKj+67IgUTiCOVF2x2z29/fQn+ZiBstJw1ibMvmvnv5Q/xWbXdyTpMrMvzrI638cIFJPv/1MZ34IZ9nMO6ZYg1Mrh8tdH17c8xBuYZSsv88YHwJKmUkzw6JjrlzLyA== 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=YDU3iSR7N2ZYpz62hCdn8PBWE9NY/0DQGJQGKQDxh+o=; b=iwMugnZP210qy0ePzY6j5mXJe4GkyMcKQYDUCfgxx1KC9Fsbia0HmHDkIQj0VTyjMVelg4V3WQ7o9Z3CdSa61ZfXCruipciva3RvhRn21btkTs9wQOGVKnsJmeuj6/So9JOtQwDeTdlNIXulKsUGbxWmgmluXXwiKaDp+qAeV9n0bu04Iq7iHL5CtwC0eIpdcXG4S8RTJ5+scRhSNYziCYfv64z3X4XNdnEVsOd/Px+0wa13rYoXV/NyD4KzHQfb78eJ5GHnPRowBjopGPeoubOxGUa7F9EKxZi5eilhrfLfbS7QxQgpPboHScWU6V3HJ/g1VTPlAuEl82eW+SGuhg== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by MN2PR12MB4406.namprd12.prod.outlook.com (2603:10b6:208:268::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.14; Tue, 20 Sep 2022 17:48:07 +0000 Received: from DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::84f:b16e:729e:2eca]) by DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::84f:b16e:729e:2eca%4]) with mapi id 15.20.5632.017; Tue, 20 Sep 2022 17:48:07 +0000 From: "Jeff Brasen" To: Pierre Gondois , "devel@edk2.groups.io" CC: "ardb+tianocore@kernel.org" , "Alexei.Fedorov@arm.com" , "nd@arm.com" , "sami.mujawar@arm.com" Subject: Re: [PATCH v4 2/3] DynamicTablesPkg: AML Code generation to add _CPC entries Thread-Topic: [PATCH v4 2/3] DynamicTablesPkg: AML Code generation to add _CPC entries Thread-Index: AQHYzQDp+NjFT5eHFUevk0RJBarFia3ol+Qg Date: Tue, 20 Sep 2022 17:48:07 +0000 Message-ID: References: <7974443a-efe4-6101-13b1-22fe4da6f69c@arm.com> In-Reply-To: <7974443a-efe4-6101-13b1-22fe4da6f69c@arm.com> 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_|MN2PR12MB4406:EE_ x-ms-office365-filtering-correlation-id: b007667f-57d5-4e3f-e70a-08da9b3046ac x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: EU2R0IFp52fazmaZ2t6Wy46JvpdjQIXh12rIlROcKAenyX3TjtQqIkE/g4WVUUvoKVO8B2k0QL/+eadeMwU1zLNZ01k8Pcl1Ezs5cC0ZJ58W9Bf7xdJOYn244+pbPqoi+bUwO4UO+9UYxikEe+13BGpTJq0vNayBHOIUKSLicCAcXN4OvV8hh5Jq/RXfIijUCFbG22QgvKNxzWS//YoFJNJiLXfX6CAVGhGRlE8AWn+12tZWTBqvj2GNy5Lkp2uGwemDn4IVdDokCk5v5aq+iHJDqFTov4LnSydNbC9F8xKpZy7KLTC17GUhN4yR0KpJSN5tuCrlSbKqjPmVOLH2qU9wVsJ3ezaBsn6doGFmo6WoFpaXgJyHT8CFjw+KeJSHw01g7klGAfd2YEwgBu5qdd3xHu+SXP4+mrVNtrRHGIw6wom+YQGtf5uHSxDYJJiUnuaJXHlPDlRu+HFs4HxA+ZNj4MMIn0N4UoAmixGPgMR7JcNJ3chivDNrq2sFLKdHWv+iB3vwgZHRoBcXMwk0Sqfb6h3inkPfOjtGR/XBSxIqZMPkSQ1N+a2+GxIx8nq/E/Wd9/+4Hn5GR8cEDH3MHWmTu3KrTmlC9f/vg96WVP/HlKbHj7b6DS3ANM6mgdPbxQz4ayUh7tlVAWnyBzv8lX8HQgnVyTUbw/m7wjE0jxgsFEjo5UiMalQ8GCvcYYbULW0+i36lQQZYG4QKbT4PFThS0xtMjKf7HrJJ7eGdYr0zInnd68e+Fld4dMw+60Tt5ocsjpfEZwhK5QAi+JkLp3r4zmUS1TVkvDgmbO13dFI= 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)(136003)(39860400002)(366004)(376002)(346002)(396003)(451199015)(33656002)(38070700005)(26005)(7696005)(9686003)(6506007)(53546011)(110136005)(316002)(54906003)(478600001)(71200400001)(122000001)(86362001)(55016003)(83380400001)(186003)(38100700002)(5660300002)(8936002)(2906002)(66946007)(66556008)(66476007)(66446008)(64756008)(8676002)(4326008)(52536014)(41300700001)(76116006)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MURwcHYxMnFuWlBXK2UvNDk3dTQrbU05ekd2ZWRJNmxiR0M1SVk3dnlzb3dq?= =?utf-8?B?aEljcktDbXRXMXFESmJlZ1Y0MnQ5bzVON3k0MW4yanZsZkx2aXBlalE2dG5Q?= =?utf-8?B?K0JaSTVlTEU2NWczWkEzM3pxNWM5MmYwS3NqL2hmMzd1d3lTcW1PUmFaTVZV?= =?utf-8?B?WmhlK1JBYWdjVkxRTzFZbkNCUFltQ0kzcml2NlZmZzByMEF3SHEweUMzYndY?= =?utf-8?B?MUpEOFNUVnFLQ3NzMUhZRDlRUVNDOTZGSWtPblN1OWtYSWVxc2kwWG9PSEYr?= =?utf-8?B?WXc4MVo5S0JhYVZMS0FpVFpzUlVQWjFUUE8yekFvZTg4aTRsL0k2RUVlZTZp?= =?utf-8?B?eHlHRFJpT0FIQ3IwNm1pL0FabEtRbVM0MEZrUlhsQmhZYWNsKzgyOEw4ejNy?= =?utf-8?B?WVFNbFRaOGtTQzZxQnZWMzNHZDNETDgrcVlqbkUvOVVYc3MyVjA2TzBtWjNM?= =?utf-8?B?T1FMSEFROEZ2RkNYZjEvTHpHWitWbGQ0T1RwL0NRSTlmVisrcjk0UUlQaXdY?= =?utf-8?B?NjlHV0lFVGNCSWRWZ3l0Vkpia0w0dzBJQlF4V1dhclpDSnJYNGExb3o0U2ZT?= =?utf-8?B?OHRzRHY3eHc0bDIrRURSQ1BWb0V6anBCUDNpZHBGQTlBeDBEaHRyS05ObWNO?= =?utf-8?B?YWhaZTlmc2d2eTRtc2tlWkRWdlN6TWpVaDdkd1VKK29zY3V4ajZxZGwxS09J?= =?utf-8?B?eDgvVldMaEpYV2pNYmtsSXQwbC9xbi9jOE5YSnQxWGlXRG5na1hvRGNwRHB3?= =?utf-8?B?Tjh4MHVSbkRvekVtUGRFekN4MHBDSGxpRDR1RzhiKzUvRWc3eFp1cSs1VnFJ?= =?utf-8?B?a21NRC9aRHJaYVZsYXI3VTdZRzRCWlNDL1IyQko5V1R6MTF5aDdqWGFzM2h0?= =?utf-8?B?VG44Y2hndmJwSWJCQXdXZHllcTh3MkI5bUZabTZ6OHRNMWhVd0ZDc05zakhI?= =?utf-8?B?c2hRRWcwaWUvZUZsNnhKUHZWWWxmaC9NVGQ2VHh3Q2tyMlc4RDZ2SUY0TmFm?= =?utf-8?B?WGYzT2RibkpPNWRHS0Z1R1czaGxSYlBSMDNlZUJEdkFDdE5Pdno2L29VbWty?= =?utf-8?B?ZEhMQURRZXpkaUZKSkoyUTdvQ1FGYlIzc05qN2ZmR09mdWFLMzR6THhSVHJn?= =?utf-8?B?MzduNmFhcDhXM3l1emlSQ3BuUWtacjJPRGhFeEtqK3pnbjlJejVtOXpZaGFR?= =?utf-8?B?bWcxeC8vUFhCRGUrMnRvQW1zRkhQUnFvdXNqZVlLc0VUY2RZUkhiSHJFRC9C?= =?utf-8?B?M00yRXo1elJzZ0pGbzJIaVl1cHJ4dWlPOUN3Ym8za2xnWHhWSEhNNnpZOGg2?= =?utf-8?B?TWRyQVNNbzNkalNYbU5PdFNnYm1FanVmQ2QxRTBLL1FtY0k3dyt0bFgyZHd3?= =?utf-8?B?bm96U2FuK1VITTdBQzJuRzJOSUJ0SjFIcmJ6bTM4YVRxRUlLaTJsV044TWh6?= =?utf-8?B?M3JpQzducVJiVFc0NkdQQXRoTmdQREZ6SjFRNXEvT3hqNXppVVJId0l0SnV5?= =?utf-8?B?cWZ2NmNtUFppcmxsMng0VVVUcXk3YjBFQWFDNHVIM0ZpOExDeGZJWk9YMjRJ?= =?utf-8?B?aGx6U0lPb0taTTZwV3pQVWdsbi9QV2cxQWtKU0t1c2FjRmhCaXpuL1NQNCtY?= =?utf-8?B?bFRzM2twUG1VZFFJVjYvMDNGZUZnVTI2Y3E3S2RoVS9HSXkrM1RtZ2htN1Zr?= =?utf-8?B?QllvTnZEUjA0bXVpR2Rkank0T1k1NVIzOE85dW5vbFBraHo0NmNPaHlabUp0?= =?utf-8?B?dDFvRjVTcXM0WTBEWkFjeGtFMXdrd0dnVXlMb3h3dDVEZDQ1ZzM2WWFqbWs0?= =?utf-8?B?Y0lheFA4VWdZWVVVWlRyTVpoS1Jrb296WXRrc3Z3ZGtlUkNFRVZVeE9xQ2Iv?= =?utf-8?B?UUcxSXhpOGhCTUZVYm1Vb1BpVUlqdEZRdm9veXgyZUx0ZVJwVGcvdFh3ZkhN?= =?utf-8?B?YnlZSU1yZUxtaS9iRE9DVGUwMHloNWZCRG0zT1g1QXJGd3YrRTAxQlFxd0lr?= =?utf-8?B?Z3l1djFjMld5M284b2ZZMll1WUpqMWJMVWxPaUxObkJrRDBJb0pQaTRiMHlo?= =?utf-8?B?SC9TSmwwS1VWZFQxSmtYTGQ1NjNOSlROVHBZMm5Oa3V5S0tIUktJNXRrU3Ru?= =?utf-8?Q?0cKCbJwj0p32izTOeeImTLUbY?= 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: b007667f-57d5-4e3f-e70a-08da9b3046ac X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2022 17:48:07.2193 (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: vMw9/WDveGWPQwgbO/tJmQkkign/+oRpR5kUJEg8T7gjcksaXSEcqlWlrKH8tqWH959+0a36JpL8k6pk3ivPgA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4406 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIHdpbGwgZml4IHRob3NlIGluIHY1LiBXaWxsIHNlZSBpZiBTYW1pIGhhcyBhbnkgb3Ro ZXIgY29tbWVudHMgYmVmb3JlIHB1c2hpbmcgdGhlc2UuDQoNCg0KLUplZmYNCg0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFBpZXJyZSBHb25kb2lzIDxwaWVycmUuZ29u ZG9pc0Bhcm0uY29tPg0KPiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgMjAsIDIwMjIgODo1NCBB TQ0KPiBUbzogSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT47IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+IENjOiBhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnOyBBbGV4ZWkuRmVkb3JvdkBh cm0uY29tOyBuZEBhcm0uY29tOw0KPiBzYW1pLm11amF3YXJAYXJtLmNvbQ0KPiBTdWJqZWN0OiBS ZTogW1BBVENIIHY0IDIvM10gRHluYW1pY1RhYmxlc1BrZzogQU1MIENvZGUgZ2VuZXJhdGlvbiB0 byBhZGQNCj4gX0NQQyBlbnRyaWVzDQo+IA0KPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24g b3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiANCj4gDQo+IEhlbGxvIEplZmYsDQo+IEp1 c3QgMiBtaW5vcnMgY29tbWVudHMuIE1heWJlIFNhbWkgd2lsbCBoYXZlIG1vcmUuDQo+IE90aGVy d2lzZSwgZm9yIHRoZSAzIHBhdGNoZXM6DQo+IFJldmlld2VkLWJ5OiBQaWVycmUgR29uZG9pcyA8 cGllcnJlLmdvbmRvaXNAYXJtLmNvbT4NCj4gDQo+IFJlZ2FyZHMsDQo+IFBpZXJyZQ0KPiANCj4g T24gOS8yMC8yMiAwMDowMSwgSmVmZiBCcmFzZW4gd3JvdGU6DQo+ID4gX0NQQyBlbnRyaWVzIGNh biBkZXNjcmliZSBDUFUgcGVyZm9ybWFuY2UgaW5mb3JtYXRpb24uDQo+ID4gVGhlIG9iamVjdCBp cyBkZXNjcmliZWQgaW4gQUNQSSA2LjQgczguNC43LjEuDQo+ID4gIl9DUEMgKENvbnRpbnVvdXMg UGVyZm9ybWFuY2UgQ29udHJvbCkiLg0KPiA+DQo+ID4gQWRkIEFtbENyZWF0ZUNwY05vZGUoKSBo ZWxwZXIgZnVuY3Rpb24gdG8gYWRkIF9DUEMgZW50cmllcyB0byBhbg0KPiA+IGV4aXN0aW5nIENQ VSBvYmplY3QuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBKZWZmIEJyYXNlbiA8amJyYXNlbkBu dmlkaWEuY29tPg0KPiA+IC0tLQ0KPiA+ICAgLi4uL0luY2x1ZGUvTGlicmFyeS9BbWxMaWIvQW1s TGliLmggICAgICAgICAgIHwgIDU0ICsrDQo+ID4gICAuLi4vQ29tbW9uL0FtbExpYi9Db2RlR2Vu L0FtbENvZGVHZW4uYyAgICAgICAgfCA0NzYNCj4gKysrKysrKysrKysrKysrKysrDQo+ID4gICAy IGZpbGVzIGNoYW5nZWQsIDUzMCBpbnNlcnRpb25zKCspDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEv RHluYW1pY1RhYmxlc1BrZy9JbmNsdWRlL0xpYnJhcnkvQW1sTGliL0FtbExpYi5oDQo+ID4gYi9E eW5hbWljVGFibGVzUGtnL0luY2x1ZGUvTGlicmFyeS9BbWxMaWIvQW1sTGliLmgNCj4gPiBpbmRl eCAzOTk2ODY2MGYyLi5lYmFjY2JhODExIDEwMDY0NA0KPiA+IC0tLSBhL0R5bmFtaWNUYWJsZXNQ a2cvSW5jbHVkZS9MaWJyYXJ5L0FtbExpYi9BbWxMaWIuaA0KPiA+ICsrKyBiL0R5bmFtaWNUYWJs ZXNQa2cvSW5jbHVkZS9MaWJyYXJ5L0FtbExpYi9BbWxMaWIuaA0KPiANCj4gW3NuaXBdDQo+IA0K PiA+ICsNCj4gPiArLyoqIEFkZHMgYW4gaW50ZWdlciBvciByZWdpc3RlciB0byB0aGUgcGFja2Fn ZQ0KPiA+ICsNCj4gPiArICBAaW5ncm91cCBDb2RlR2VuQXBpcw0KPiA+ICsNCj4gPiArICBAcGFy YW0gW2luXSAgUmVnaXN0ZXIgICAgIElmIHByb3ZpZGVkLCByZWdpc3RlciB0aGF0IHdpbGwgYmUg YWRkZWQgdG8NCj4gcGFja2FnZQ0KPiA+ICsgIEBwYXJhbSBbaW5dICBJbnRlZ2VyICAgICAgSWYg UmVnaXN0ZXIgaXMgTlVMTCwgaW50ZWdlciB0aGF0IHdpbGwgYmUgYWRkZWQgdG8NCj4gdGhlIHBh Y2thZ2UNCj4gPiArICBAcGFyYW0gW2luXSAgUGFja2FnZU5vZGUgIFBhY2thZ2UgdG8gYWRkIHZh bHVlIHRvDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhl IGZ1bmN0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgICBJbnZhbGlkIHBhcmFtZXRlci4NCj4gPiArICBAcmV0dmFsIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTICAgIEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkuDQo+ID4gKyoqLw0K PiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArQW1sQWRkUmVn aXN0ZXJPckludGVnZXJUb1BhY2thZ2UgKA0KPiA+ICsgIElOIEVGSV9BQ1BJXzZfNF9HRU5FUklD X0FERFJFU1NfU1RSVUNUVVJFICAqUmVnaXN0ZXIgT1BUSU9OQUwsDQo+ID4gKyAgSU4gVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIsDQo+ID4gKyAgSU4gQU1M X09CSkVDVF9OT0RFX0hBTkRMRSAgICAgICAgICAgICAgICAgIFBhY2thZ2VOb2RlDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsg IEFNTF9PQkpFQ1RfTk9ERV9IQU5ETEUgIEludGVnZXJOb2RlOw0KPiA+ICsNCj4gPiArICBJbnRl Z2VyTm9kZSA9IE5VTEw7DQo+ID4gKw0KPiANCj4gSSB0aGluayB0aGF0IHdpdGggSXNOdWxsR2Vu ZXJpY0FkZHJlc3MoKSwgdGhlIGZpcnN0DQo+ICAgKFJlZ2lzdGVyICE9IE5VTEwpDQo+IGlzIG5v dCBuZWNlc3NhcnkuDQo+IA0KPiA+ICsgIGlmICgoUmVnaXN0ZXIgIT0gTlVMTCkgJiYgIUlzTnVs bEdlbmVyaWNBZGRyZXNzIChSZWdpc3RlcikpIHsNCj4gPiArICAgIFN0YXR1cyA9IEFtbEFkZFJl Z2lzdGVyVG9QYWNrYWdlIChSZWdpc3RlciwgUGFja2FnZU5vZGUpOyAgfSBlbHNlDQo+ID4gKyB7 DQo+ID4gKyAgICBTdGF0dXMgPSBBbWxDb2RlR2VuSW50ZWdlciAoSW50ZWdlciwgJkludGVnZXJO b2RlKTsNCj4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgQVNT RVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiAr ICAgIH0NCj4gPiArDQo+ID4gKyAgICBTdGF0dXMgPSBBbWxWYXJMaXN0QWRkVGFpbCAoDQo+ID4g KyAgICAgICAgICAgICAgIChBTUxfTk9ERV9IQU5ETEUpUGFja2FnZU5vZGUsDQo+ID4gKyAgICAg ICAgICAgICAgIChBTUxfTk9ERV9IQU5ETEUpSW50ZWdlck5vZGUNCj4gPiArICAgICAgICAgICAg ICAgKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gKyAgICBpZiAoSW50ZWdl ck5vZGUgIT0gTlVMTCkgew0KPiA+ICsgICAgICBBbWxEZWxldGVUcmVlICgoQU1MX05PREVfSEFO RExFKUludGVnZXJOb2RlKTsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJl dHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBDcmVhdGUgYSBfQ1BDIG5vZGUu DQo+ID4gKw0KPiA+ICsgIENyZWF0ZXMgYW5kIG9wdGlvbmFsbHkgYWRkcyB0aGUgZm9sbG93aW5n IG5vZGUNCj4gPiArICAgTmFtZShfQ1BDLCBQYWNrYWdlKCkNCj4gPiArICAgew0KPiA+ICsgICAg TnVtRW50cmllcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnRlZ2VyDQo+ID4g KyAgICBSZXZpc2lvbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEludGVnZXIN Cj4gPiArICAgIEhpZ2hlc3RQZXJmb3JtYW5jZSwgICAgICAgICAgICAgICAgICAgICAgLy8gSW50 ZWdlciBvciBCdWZmZXIgKFJlc291cmNlDQo+IERlc2NyaXB0b3IpDQo+ID4gKyAgICBOb21pbmFs UGVyZm9ybWFuY2UsICAgICAgICAgICAgICAgICAgICAgIC8vIEludGVnZXIgb3IgQnVmZmVyIChS ZXNvdXJjZQ0KPiBEZXNjcmlwdG9yKQ0KPiA+ICsgICAgTG93ZXN0Tm9ubGluZWFyUGVyZm9ybWFu Y2UsICAgICAgICAgICAgICAvLyBJbnRlZ2VyIG9yIEJ1ZmZlciAoUmVzb3VyY2UNCj4gRGVzY3Jp cHRvcikNCj4gPiArICAgIExvd2VzdFBlcmZvcm1hbmNlLCAgICAgICAgICAgICAgICAgICAgICAg Ly8gSW50ZWdlciBvciBCdWZmZXIgKFJlc291cmNlDQo+IERlc2NyaXB0b3IpDQo+ID4gKyAgICBH dWFyYW50ZWVkUGVyZm9ybWFuY2VSZWdpc3RlciwgICAgICAgICAgIC8vIEJ1ZmZlciAoUmVzb3Vy Y2UgRGVzY3JpcHRvcikNCj4gPiArICAgIERlc2lyZWRQZXJmb3JtYW5jZVJlZ2lzdGVyICwgICAg ICAgICAgICAgLy8gQnVmZmVyIChSZXNvdXJjZSBEZXNjcmlwdG9yKQ0KPiA+ICsgICAgTWluaW11 bVBlcmZvcm1hbmNlUmVnaXN0ZXIgLCAgICAgICAgICAgICAvLyBCdWZmZXIgKFJlc291cmNlIERl c2NyaXB0b3IpDQo+ID4gKyAgICBNYXhpbXVtUGVyZm9ybWFuY2VSZWdpc3RlciAsICAgICAgICAg ICAgIC8vIEJ1ZmZlciAoUmVzb3VyY2UgRGVzY3JpcHRvcikNCj4gPiArICAgIFBlcmZvcm1hbmNl UmVkdWN0aW9uVG9sZXJhbmNlUmVnaXN0ZXIsICAgLy8gQnVmZmVyIChSZXNvdXJjZQ0KPiBEZXNj cmlwdG9yKQ0KPiA+ICsgICAgVGltZVdpbmRvd1JlZ2lzdGVyLCAgICAgICAgICAgICAgICAgICAg ICAvLyBCdWZmZXIgKFJlc291cmNlIERlc2NyaXB0b3IpDQo+ID4gKyAgICBDb3VudGVyV3JhcGFy b3VuZFRpbWUsICAgICAgICAgICAgICAgICAgIC8vIEludGVnZXIgb3IgQnVmZmVyIChSZXNvdXJj ZQ0KPiBEZXNjcmlwdG9yKQ0KPiA+ICsgICAgUmVmZXJlbmNlUGVyZm9ybWFuY2VDb3VudGVyUmVn aXN0ZXIsICAgICAvLyBCdWZmZXIgKFJlc291cmNlDQo+IERlc2NyaXB0b3IpDQo+ID4gKyAgICBE ZWxpdmVyZWRQZXJmb3JtYW5jZUNvdW50ZXJSZWdpc3RlciwgICAgIC8vIEJ1ZmZlciAoUmVzb3Vy Y2UNCj4gRGVzY3JpcHRvcikNCj4gPiArICAgIFBlcmZvcm1hbmNlTGltaXRlZFJlZ2lzdGVyLCAg ICAgICAgICAgICAgLy8gQnVmZmVyIChSZXNvdXJjZSBEZXNjcmlwdG9yKQ0KPiA+ICsgICAgQ1BQ Q0VuYWJsZVJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAvLyBCdWZmZXIgKFJlc291cmNl IERlc2NyaXB0b3IpDQo+ID4gKyAgICBBdXRvbm9tb3VzU2VsZWN0aW9uRW5hYmxlLCAgICAgICAg ICAgICAgIC8vIEludGVnZXIgb3IgQnVmZmVyIChSZXNvdXJjZQ0KPiBEZXNjcmlwdG9yKQ0KPiA+ ICsgICAgQXV0b25vbW91c0FjdGl2aXR5V2luZG93UmVnaXN0ZXIsICAgICAgICAvLyBCdWZmZXIg KFJlc291cmNlDQo+IERlc2NyaXB0b3IpDQo+ID4gKyAgICBFbmVyZ3lQZXJmb3JtYW5jZVByZWZl cmVuY2VSZWdpc3RlciwgICAgIC8vIEJ1ZmZlciAoUmVzb3VyY2UNCj4gRGVzY3JpcHRvcikNCj4g PiArICAgIFJlZmVyZW5jZVBlcmZvcm1hbmNlICAgICAgICAgICAgICAgICAgICAgLy8gSW50ZWdl ciBvciBCdWZmZXIgKFJlc291cmNlDQo+IERlc2NyaXB0b3IpDQo+ID4gKyAgICBMb3dlc3RGcmVx dWVuY3ksICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEludGVnZXIgb3IgQnVmZmVyIChSZXNv dXJjZQ0KPiBEZXNjcmlwdG9yKQ0KPiA+ICsgICAgTm9taW5hbEZyZXF1ZW5jeSAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBJbnRlZ2VyIG9yIEJ1ZmZlciAoUmVzb3VyY2UNCj4gRGVzY3JpcHRv cikNCj4gPiArICB9KQ0KPiA+ICsNCj4gPiArICBJZiByZXNvdXJjZSBidWZmZXIgaXMgTlVMTCB0 aGVuIGludGVnZXIgd2lsbCBiZSB1c2VkLg0KPiA+ICsNCj4gPiArICBDZi4gQUNQSSA2LjQsIHM4 LjQuNy4xIF9DUEMgKENvbnRpbnVvdXMgUGVyZm9ybWFuY2UgQ29udHJvbCkNCj4gPiArDQo+ID4g KyAgQGluZ3JvdXAgQ29kZUdlbkFwaXMNCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gIENwY0lu Zm8gICAgICAgICAgICAgICBDcGNJbmZvIG9iamVjdA0KPiA+ICsgIEBwYXJhbSBbaW5dICBQYXJl bnROb2RlICAgICAgICAgICAgSWYgcHJvdmlkZWQsIHNldCBQYXJlbnROb2RlIGFzIHRoZQ0KPiBw YXJlbnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBu b2RlIGNyZWF0ZWQuDQo+ID4gKyAgQHBhcmFtIFtvdXRdIE5ld0NwY05vZGUgICAgICAgICAgICBJ ZiBzdWNjZXNzIGFuZCBwcm92aWRlZCwgY29udGFpbnMgdGhlDQo+IGNyZWF0ZWQgbm9kZS4NCj4g PiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgZnVuY3Rpb24g Y29tcGxldGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiAgIEludmFsaWQgcGFyYW1ldGVyLg0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNP VVJDRVMgICAgRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeS4NCj4gPiArKiovDQo+ID4gK0VGSV9T VEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0FtbENyZWF0ZUNwY05vZGUgKA0KPiA+ICsgIElOICBB TUxfQ1BDX0lORk8gICAgICAgICAgICAqQ3BjSW5mbywNCj4gPiArICBJTiAgQU1MX05PREVfSEFO RExFICAgICAgICAgUGFyZW50Tm9kZSAgIE9QVElPTkFMLA0KPiA+ICsgIE9VVCBBTUxfT0JKRUNU X05PREVfSEFORExFICAqTmV3Q3BjTm9kZSAgIE9QVElPTkFMDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEFNTF9PQkpFQ1Rf Tk9ERV9IQU5ETEUgIENwY05vZGU7DQo+ID4gKyAgQU1MX09CSkVDVF9OT0RFX0hBTkRMRSAgQ3Bj UGFja2FnZTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICBOdW1iZXJPZkVudHJpZXM7 DQo+ID4gKw0KPiA+ICsgIGlmICgoQ3BjSW5mbyA9PSBOVUxMKSB8fA0KPiA+ICsgICAgICAoKFBh cmVudE5vZGUgPT0gTlVMTCkgJiYgKE5ld0NwY05vZGUgPT0gTlVMTCkpKSAgew0KPiA+ICsgICAg QVNTRVJUICgwKTsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICAvLyBSZXZpc2lvbiAzIHBlciBBQ1BJIDYuNCBzcGVjaWZpY2F0 aW9uICBpZiAoQ3BjSW5mby0+UmV2aXNpb24gPT0NCj4gPiArIDMpIHsNCj4gPiArICAgIC8vIE51 bUVudHJpZXMgMjMgcGVyIEFDUEkgNi40IHNwZWNpZmljYXRpb24NCj4gPiArICAgIE51bWJlck9m RW50cmllcyA9IDIzOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBBU1NFUlQgKDApOw0KPiA+ ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiAN Cj4gSXQgc2VlbXMgQ3BjSW5mbyBpcyBhbHJlYWR5IGNoZWNrZWQgZWFybGllci4gSXQgc2VlbXMg dGhlIGNoZWNrcyBiZWxvdyBjb3VsZA0KPiBiZSBwYXJ0IG9mIHRoZSBvdGhlciBjaGVja3MgYWJv dmUgKHdoZXJlIFBhcmVudE5vZGUgaXMgY2hlY2tlZCkuDQo+IA0KPiA+ICsgIGlmICgoQ3BjSW5m byA9PSBOVUxMKSB8fA0KPiA+ICsgICAgICAoSXNOdWxsR2VuZXJpY0FkZHJlc3MgKCZDcGNJbmZv LT5IaWdoZXN0UGVyZm9ybWFuY2VCdWZmZXIpICYmDQo+ID4gKyAgICAgICAoQ3BjSW5mby0+SGln aGVzdFBlcmZvcm1hbmNlSW50ZWdlciA9PSAwKSkgfHwNCj4gPiArICAgICAgKElzTnVsbEdlbmVy aWNBZGRyZXNzICgmQ3BjSW5mby0+Tm9taW5hbFBlcmZvcm1hbmNlQnVmZmVyKSAmJg0KPiA+ICsg ICAgICAgKENwY0luZm8tPk5vbWluYWxQZXJmb3JtYW5jZUludGVnZXIgPT0gMCkpIHx8DQo+ID4g KyAgICAgIChJc051bGxHZW5lcmljQWRkcmVzcyAoJkNwY0luZm8tDQo+ID5Mb3dlc3ROb25saW5l YXJQZXJmb3JtYW5jZUJ1ZmZlcikgJiYNCj4gPiArICAgICAgIChDcGNJbmZvLT5Mb3dlc3ROb25s aW5lYXJQZXJmb3JtYW5jZUludGVnZXIgPT0gMCkpIHx8DQo+ID4gKyAgICAgIChJc051bGxHZW5l cmljQWRkcmVzcyAoJkNwY0luZm8tPkxvd2VzdFBlcmZvcm1hbmNlQnVmZmVyKSAmJg0KPiA+ICsg ICAgICAgKENwY0luZm8tPkxvd2VzdFBlcmZvcm1hbmNlSW50ZWdlciA9PSAwKSkgfHwNCj4gPiAr ICAgICAgSXNOdWxsR2VuZXJpY0FkZHJlc3MgKCZDcGNJbmZvLT5EZXNpcmVkUGVyZm9ybWFuY2VS ZWdpc3RlcikgfHwNCj4gPiArICAgICAgSXNOdWxsR2VuZXJpY0FkZHJlc3MgKCZDcGNJbmZvLQ0K PiA+UmVmZXJlbmNlUGVyZm9ybWFuY2VDb3VudGVyUmVnaXN0ZXIpIHx8DQo+ID4gKyAgICAgIElz TnVsbEdlbmVyaWNBZGRyZXNzICgmQ3BjSW5mby0NCj4gPkRlbGl2ZXJlZFBlcmZvcm1hbmNlQ291 bnRlclJlZ2lzdGVyKSB8fA0KPiA+ICsgICAgICBJc051bGxHZW5lcmljQWRkcmVzcyAoJkNwY0lu Zm8tPlBlcmZvcm1hbmNlTGltaXRlZFJlZ2lzdGVyKSkNCj4gPiArICB7DQo+ID4gKyAgICBBU1NF UlQgKDApOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIENwY1BhY2thZ2UgPSBOVUxMOw0KPiA+ICsNCj4gPiArICBTdGF0dXMg PSBBbWxDb2RlR2VuTmFtZVBhY2thZ2UgKCJfQ1BDIiwgTlVMTCwgJkNwY05vZGUpOyAgaWYNCj4g PiArIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0 YXR1cyk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+IA0KPiBb c25pcF0NCg==