From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (EUR04-VI1-obe.outbound.protection.outlook.com [40.107.8.50]) by mx.groups.io with SMTP id smtpd.web11.18442.1590345130552735757 for ; Sun, 24 May 2020 11:32:11 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nxp1.onmicrosoft.com header.s=selector2-nxp1-onmicrosoft-com header.b=BatgcsCJ; spf=pass (domain: oss.nxp.com, ip: 40.107.8.50, mailfrom: wasim.khan@oss.nxp.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U51UxQq6p2HVWvkAHloBM8n0+8GnaOZOZ31hs5rMkPacKAI2Eyy1HjbMeqiSzvx8SLHS64gmuO+MMM5hzBDCz7/LP5B6DpECTq2a4EXAQI14H7c8+kRwzgvhJcN+PnpC50RV57ery5xTgLaCFeV00u4LRe21Pq/kjY7U/usXZ6itGa7lqRd1/WzIdC9PgkydEBQWb2ANtlV0ONlE4w02ERB082O9Z7gXSs6WjOgYHFSeW8icfeB1Nezgto3IA1pzLkY/aEWLx0My/2I/bpNeb9eg9iPLqKFEEl4BbscfHNFP+/P+QWXkzTLIO0JH6n0fk28fXlpQ6AZrztGBsPsSfg== 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=erv3avMsuXdEK6Xm6hT+nH948SPnY+cG1yB9wVZmbpc=; b=VVJR+L1w2K0hWy0PcyS3EA7IuKsfuxFb7bVLDmdUnfgkLQ4A+80UOOxKwjY2PLyRXrxAZCuPdfr2/HY7cJCY8+FFPvi4w+7HikoBSI1mcfpOCOVCSP6tqHA4XXaUYDQ11Y9m4GLDynWYQmo4lNokxj2lb7gj4Zkt110SfiOIuvdaj4xztropGiQ1OvbVE1rA49RW7tuxHr4PeI8vqUy44MjI+D9HQehKOAKmaohBxxpge3QDdBnNYfFm2WBRszs0K9/J8BpNConVicZwT7p9WFctSvDf+0bLUpRFAb/2TH6sWu8UPyJoz5oDOn4a/QVzWmtWfsOHMXOmH7RY6Tvzjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=erv3avMsuXdEK6Xm6hT+nH948SPnY+cG1yB9wVZmbpc=; b=BatgcsCJ3zGdAxZ3mjBT+bX53L2P6p808a5P19+T/ijetbiBsyKgM/kG1mTlrlPRj66LavSkIs+HtjuMxyL6Q03IF4X5CtR804LyymPq1TMH7xMD8ScAoO18qycv7/qkXV7d/bcVW5xmoFQZl976M9N+HmNJ9RRNL1x/Xx/546s= Received: from VE1PR04MB6702.eurprd04.prod.outlook.com (2603:10a6:803:123::13) by VE1PR04MB6591.eurprd04.prod.outlook.com (2603:10a6:803:123::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.27; Sun, 24 May 2020 18:32:08 +0000 Received: from VE1PR04MB6702.eurprd04.prod.outlook.com ([fe80::81c4:97a6:7592:f225]) by VE1PR04MB6702.eurprd04.prod.outlook.com ([fe80::81c4:97a6:7592:f225%7]) with mapi id 15.20.3021.029; Sun, 24 May 2020 18:32:08 +0000 From: "Wasim Khan (OSS)" To: Ard Biesheuvel , "Wasim Khan (OSS)" , "devel@edk2.groups.io" , Meenakshi Aggarwal , Vabhav Sharma , Varun Sethi , "leif@nuviainc.com" , "jon@solid-run.com" Subject: Re: [PATCH edk2-platforms 11/16] Silicon/NXP: PciSegmentLib: Add support PCIe LsGen4 Controller Thread-Topic: [PATCH edk2-platforms 11/16] Silicon/NXP: PciSegmentLib: Add support PCIe LsGen4 Controller Thread-Index: AQHWL8QQuVdQ7ysbrkqvh6A8o7VxSaiz2eAAgAO2d3A= Date: Sun, 24 May 2020 18:32:07 +0000 Message-ID: References: <1590102139-16588-1-git-send-email-wasim.khan@oss.nxp.com> <1590102139-16588-12-git-send-email-wasim.khan@oss.nxp.com> <863b60d6-fa4e-91d4-cbaa-8c1a8b939b61@arm.com> In-Reply-To: <863b60d6-fa4e-91d4-cbaa-8c1a8b939b61@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=oss.nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [157.47.197.3] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: e044b88e-95f3-4fcb-bf06-08d80010c3fb x-ms-traffictypediagnostic: VE1PR04MB6591: x-ms-exchange-sharedmailbox-routingagent-processed: True x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3826; x-forefront-prvs: 0413C9F1ED x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 28QSjYZ/Jx5N6Wke/gbQCHmEIsOXMB6wkjdVYqZxaTGUJq5uNiLWLzpSPlYhk8xozLcQoccV0Ktq/WyhoGtqSMhrLaCAxKZUG9pZIOg4+uCKnp9gGYuYR5is67jK5w4tOGGpxeaGnNPRP8ggo1l/fGRWH7SQtQBYQJGrdDQ57VSaVJMW1pKciozDTn/Xu3/RmYqG0n2B/R+IXwxp7KAKzr2t2bkluKv7vdZYIz4A1/9uhfjQlGydtz5g3rb8aBp7UZa2eqmF0bKQMe5D5CIiTugMkrxqFoWtAXYCiu9jEeIorc+oULErHbG27i8K/3fp x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6702.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(6029001)(4636009)(376002)(346002)(39860400002)(136003)(396003)(366004)(26005)(316002)(110136005)(2906002)(186003)(71200400001)(7696005)(8676002)(8936002)(55016002)(9686003)(6506007)(53546011)(5660300002)(86362001)(478600001)(33656002)(66476007)(64756008)(66556008)(66446008)(52536014)(76116006)(66946007)(19627235002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: 6+SrQUrTmdLZqxM/FYXmuKloft1koZtyNtMQmZXMtSO/xTuvTNhhoHeAAuYSjQfqiAoFsyzWtqqldnP5yJvkL93uM7gkMeYsJzLzNIU1ZvmoIBVcO6xWfJsH9pyDrpAy1KGhg/JZ/a9Gl2zgfnWg+l66U65OcRhpzi20xio7ZFeBcNCY6fS6O1cZYUC+yZTvnwaDDAwjV8lRL8AOg9qB9vRAEUYewKML485npLSdkvtZuWF4NePv1eA82KlAwjmf9zvRbEG1MwWlKYQBEEcqsATh8E/3VCFLnb6lL6hSsWMhqbwdhAL7V1ikhtVw1ebTcfn4vfEVb8ahcCCME16srIEkptc2enhFor6ueDsdwQfpwCsndR92bFuLnfkDbMfPhzQMOUKwW8twFgXaEmtnHxthS+w2FtAQzeUViPraniVjrfEPtezhap+284w0aziaEzl4uGWX3QRPZ9NgE1sTgo5LCy6gXHzDYzHpLh6nvbc= MIME-Version: 1.0 X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e044b88e-95f3-4fcb-bf06-08d80010c3fb X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2020 18:32:07.9148 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: SgcFl2T5NIierTui3+Lb6jWQEvvAFc2aQpcXZvbcg+vH9uKEA3gGntPP4GOxeMNTTYEY6jJUQQC4QzrZPJdKdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6591 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg PGFyZC5iaWVzaGV1dmVsQGFybS5jb20+DQo+IFNlbnQ6IEZyaWRheSwgTWF5IDIyLCAyMDIwIDM6 MDggUE0NCj4gVG86IFdhc2ltIEtoYW4gKE9TUykgPHdhc2ltLmtoYW5Ab3NzLm54cC5jb20+OyBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzsNCj4gTWVlbmFrc2hpIEFnZ2Fyd2FsIDxtZWVuYWtzaGkuYWdn YXJ3YWxAbnhwLmNvbT47IFZhYmhhdiBTaGFybWENCj4gPHZhYmhhdi5zaGFybWFAbnhwLmNvbT47 IFZhcnVuIFNldGhpIDxWLlNldGhpQG54cC5jb20+Ow0KPiBsZWlmQG51dmlhaW5jLmNvbTsgam9u QHNvbGlkLXJ1bi5jb20NCj4gQ2M6IFdhc2ltIEtoYW4gPHdhc2ltLmtoYW5AbnhwLmNvbT4NCj4g U3ViamVjdDogUmU6IFtQQVRDSCBlZGsyLXBsYXRmb3JtcyAxMS8xNl0gU2lsaWNvbi9OWFA6IFBj aVNlZ21lbnRMaWI6IEFkZA0KPiBzdXBwb3J0IFBDSWUgTHNHZW40IENvbnRyb2xsZXINCj4gDQo+ IE9uIDUvMjIvMjAgMTowMiBBTSwgV2FzaW0gS2hhbiB3cm90ZToNCj4gPiBGcm9tOiBXYXNpbSBL aGFuIDx3YXNpbS5raGFuQG54cC5jb20+DQo+ID4NCj4gPiBQQ0llIExheWVyc2NhcGUgR2VuNCBj b250cm9sbGVyIGlzIG5vdCBFQ0FNIGNvbXBsYWludCBhbmQgaGF2ZQ0KPiANCj4gY29tcGxpYW50 DQoNCk9LDQoNCj4gDQo+ID4gZGlmZmVyZW50IFBDSSBjb25maWcgc3BhY2UgcmVnaW9uIGZvciBi dXMgMCAoQ29udHJvbGxlciBzcGFjZSkgYW5kDQo+ID4gYnVzWzB4MS0weGZmXSBvbiBOWFAgU29D cy4NCj4gPg0KPiA+IEZvciBjb25maWcgdHJhbnNhY3Rpb25zIGZvciBCdXMwOg0KPiA+ICAgIC0g Q29uZmlnIHRyYW5zYWN0aW9uIGFkZHJlc3MgPSBQQ0llIGNvbnRyb2xsZXIgYWRkcmVzcyArIG9m ZnNldA0KPiA+DQo+ID4gRm9yIGNvbmZpZyB0cmFuc2FjdGlvbnMgZm9yIEJ1c1sweDEtMHhmZl06 DQo+ID4gICAgLSBQQ0llIElQIHJlcXVpcmVzIHRhcmdldCBCREYgdG8gYmUgd3JpdHRlbiBhdCBi aXRbMzE6MTZdIG9mIFBDSWUNCj4gPiAgICAgIG91dGJvdW5kIGNvbmZpZ3VyYXRpb24gd2luZG93 Lg0KPiA+DQo+ID4gUENJZSBMc0dlbjQgY29udHJvbGxlciB1c2VzIHBhZ2luZyBtZWNoYW5pc20g dG8gYWNjZXNzIHJlZ2lzdGVycy4NCj4gPiBUbyBhY2Nlc3MgUENJZSBDQ1NSIHJlZ2lzdGVycyB3 aGljaCBhcmUgYWJvdmUgM0tCIG9mZnNldCwgcGFnZSBudW1iZXINCj4gPiBtdXN0IGJlIHNldCBp biBCcmlkZ2UgQ29udHJvbCBSZWdpc3Rlci4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFZhYmhh diBTaGFybWEgPHZhYmhhdi5zaGFybWFAbnhwLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBXYXNp bSBLaGFuIDx3YXNpbS5raGFuQG54cC5jb20+DQo+ID4gLS0tDQo+ID4gICAuLi4vTlhQL0xpYnJh cnkvUGNpU2VnbWVudExpYi9QY2lTZWdtZW50TGliLmluZiAgICB8ICAxICsNCj4gPiAgIFNpbGlj b24vTlhQL0xpYnJhcnkvUGNpU2VnbWVudExpYi9QY2lTZWdtZW50TGliLmMgIHwgNjANCj4gKysr KysrKysrKysrKysrKysrKysrLQ0KPiA+ICAgMiBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvU2lsaWNvbi9OWFAvTGli cmFyeS9QY2lTZWdtZW50TGliL1BjaVNlZ21lbnRMaWIuaW5mDQo+ID4gYi9TaWxpY29uL05YUC9M aWJyYXJ5L1BjaVNlZ21lbnRMaWIvUGNpU2VnbWVudExpYi5pbmYNCj4gPiBpbmRleCA5MzYyMTNk YzhhOWQuLmQ2ZDdlYTZlM2I2YiAxMDA3NTUNCj4gPiAtLS0gYS9TaWxpY29uL05YUC9MaWJyYXJ5 L1BjaVNlZ21lbnRMaWIvUGNpU2VnbWVudExpYi5pbmYNCj4gPiArKysgYi9TaWxpY29uL05YUC9M aWJyYXJ5L1BjaVNlZ21lbnRMaWIvUGNpU2VnbWVudExpYi5pbmYNCj4gPiBAQCAtMzMsMyArMzMs NCBAQCBbRml4ZWRQY2RdDQo+ID4NCj4gPiAgIFtQY2RdDQo+ID4gICAgIGdOeHBRb3JpcUxzVG9r ZW5TcGFjZUd1aWQuUGNkUGNpQ2ZnU2hpZnRFbmFibGUNCj4gPiArICBnTnhwUW9yaXFMc1Rva2Vu U3BhY2VHdWlkLlBjZFBjaUxzR2VuNEN0cmwNCj4gPiBkaWZmIC0tZ2l0IGEvU2lsaWNvbi9OWFAv TGlicmFyeS9QY2lTZWdtZW50TGliL1BjaVNlZ21lbnRMaWIuYw0KPiA+IGIvU2lsaWNvbi9OWFAv TGlicmFyeS9QY2lTZWdtZW50TGliL1BjaVNlZ21lbnRMaWIuYw0KPiA+IGluZGV4IDU1MmE0MjVj NjgzMi4uMDJhMTUyNWVmMzA4IDEwMDc1NQ0KPiA+IC0tLSBhL1NpbGljb24vTlhQL0xpYnJhcnkv UGNpU2VnbWVudExpYi9QY2lTZWdtZW50TGliLmMNCj4gPiArKysgYi9TaWxpY29uL05YUC9MaWJy YXJ5L1BjaVNlZ21lbnRMaWIvUGNpU2VnbWVudExpYi5jDQo+ID4gQEAgLTM1LDYgKzM1LDU4IEBA IHR5cGVkZWYgZW51bSB7DQo+ID4gICAgIEFTU0VSVCAoKChBKSAmICgweGZmZmYwMDAwZjAwMDAw MDBVTEwgfCAoTSkpKSA9PSAwKQ0KPiA+DQo+ID4gICBzdGF0aWMgQk9PTEVBTiBDZmdTaGlmdEVu YWJsZTsNCj4gPiArc3RhdGljIEJPT0xFQU4gUGNpTHNHZW40Q3RybDsNCj4gPiArDQo+IA0KPiBB bm90aGVyIGNvbXBpbGUgdGltZSBjb25zdGFudD8NCg0KV2UgYXJlIGluaXRpYWxpemluZyBQY2lM c0dlbjRDdHJsIHdpdGggUGNkUGNpTHNHZW40Q3RybCAoZHluYW1pYyBQQ0QpLg0KQmFzZWQgb24g U29DIHZlcnNpb24sIFBjZFBjaUxzR2VuNEN0cmwgd2lsbCBiZSBzZXQgdG8gdHJ1ZSBmb3IgTFNH ZW40IGNvbnRyb2xsZXIgKGRlZmF1bHQgZmFsc2UpLiANClN1cHBvcnQgdG8gdXBkYXRlIHRoZXNl IFBDRHMgd2lsbCBjb21lIGxhdGVyIChBY3R1YWwgdXNlIGNhc2Ugd2lsbCBiZSB3aXRoIExYMjE2 MCBTb0MpLg0KDQo+IA0KPiA+ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ICtQY2llQ2ZnU2V0VGFy Z2V0ICgNCj4gPiArICBJTiBFRklfUEhZU0lDQUxfQUREUkVTUyBEYmksDQo+ID4gKyAgSU4gVUlO VDMyIFRhcmdldCkNCj4gPiArew0KPiA+ICsgICAgUGNpTHNHZW40V3JpdGUzMiAoKFVJTlROKURi aSwgUEFCX0FYSV9BTUFQX1BFWF9XSU5fTCgwKSwgVGFyZ2V0KTsNCj4gPiArICAgIFBjaUxzR2Vu NFdyaXRlMzIgKChVSU5UTilEYmksIFBBQl9BWElfQU1BUF9QRVhfV0lOX0goMCksIDApOyB9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBGdW5jdGlvbiB0byByZXR1cm4gUENJZSBQaHlzaWNhbCBB ZGRyZXNzKFBDSWUgdmlldykgb3IgQ29udHJvbGxlcg0KPiA+ICsgIEFkZHJlc3MoQ1BVIHZpZXcp IGZvciBOWFAgTGF5ZXJzY2FwZSBHZW40IFNvQw0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEFkZHJl c3MgQWRkcmVzcyBwYXNzZWQgZnJvbSBidXMgbGF5ZXIuDQo+ID4gKyAgQHBhcmFtICBTZWdtZW50 IFNlZ21lbnQgbnVtYmVyIGZvciBSb290IENvbXBsZXguDQo+ID4gKyAgQHBhcmFtICBPZmZzZXQg IENvbmZpZyBzcGFjZSByZWdpc3RlciBvZmZzZXQuDQo+ID4gKyAgQHBhcmFtICBCdXMgICAgIFBD SWUgQnVzIG51bWJlci4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBSZXR1cm4gUENJZSBDUFUgb3Ig Q29udHJvbGxlciBhZGRyZXNzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtV SU5UNjQNCj4gPiArUGNpTHNHZW40R2V0Q29uZmlnQmFzZSAoDQo+ID4gKyAgSU4gIFVJTlQ2NCAg ICAgIEFkZHJlc3MsDQo+ID4gKyAgSU4gIFVJTlQxNiAgICAgIFNlZ21lbnQsDQo+ID4gKyAgSU4g IFVJTlQxNiAgICAgIE9mZnNldCwNCj4gPiArICBJTiAgVUlOVDggICAgICAgQnVzDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyIFRhcmdldDsNCj4gPiArDQo+ID4gKyAgaWYgKEJ1cykg ew0KPiANCj4gQnVzID4gMA0KPiANCj4gPiArICAgIFRhcmdldCA9ICgoKChBZGRyZXNzID4+IDIw KSAmIDB4RkYpIDw8IDI0KSB8DQo+ID4gKyAgICAgICAgICAgICAoKChBZGRyZXNzID4+IDE1KSAm IDB4MUYpIDw8IDE5KSB8DQo+ID4gKyAgICAgICAgICAgICAoKChBZGRyZXNzID4+IDEyKSAmIDB4 NykgPDwgMTYpKTsNCj4gDQo+IERyb3AgdGhlIG91dGVyICgpDQo+IA0KPiA+ICsNCj4gPiArICAg IFBjaWVDZmdTZXRUYXJnZXQgKChQQ0lfU0VHMF9EQklfQkFTRSArIFBDSV9EQklfU0laRV9ESUZG KiBTZWdtZW50KSwNCj4gVGFyZ2V0KTsNCj4gPiArICAgIHJldHVybiBQQ0lfU0VHMF9NTUlPX01F TUJBU0UgKyBPZmZzZXQgKyBQQ0lfQkFTRV9ESUZGICogU2VnbWVudDsNCj4gPiArICB9IGVsc2Ug ew0KPiA+ICsgICAgICBpZiAoT2Zmc2V0IDwgSU5ESVJFQ1RfQUREUl9CTkRSWSkgew0KPiA+ICsg ICAgICAgIFBjaUxzR2VuNFNldFBnIChQQ0lfU0VHMF9EQklfQkFTRSArIFBDSV9EQklfU0laRV9E SUZGICogU2VnbWVudCwNCj4gMCk7DQo+ID4gKyAgICAgICAgcmV0dXJuIChQQ0lfU0VHMF9EQklf QkFTRSArIFBDSV9EQklfU0laRV9ESUZGICogU2VnbWVudCArIE9mZnNldCk7DQo+ID4gKyAgICAg IH0NCj4gPiArICAgICAgUGNpTHNHZW40U2V0UGcgKFBDSV9TRUcwX0RCSV9CQVNFICsgUENJX0RC SV9TSVpFX0RJRkYgKiBTZWdtZW50LA0KPiBPRkZTRVRfVE9fUEFHRV9JRFggKE9mZnNldCkpOw0K PiA+ICsgICAgICBPZmZzZXQgPSBPRkZTRVRfVE9fUEFHRV9BRERSIChPZmZzZXQpOw0KPiA+ICsg ICAgICByZXR1cm4gKFBDSV9TRUcwX0RCSV9CQVNFICsgUENJX0RCSV9TSVpFX0RJRkYgKiBTZWdt ZW50ICsNCj4gPiArT2Zmc2V0KTsNCj4gPiArICB9DQo+ID4gK30NCj4gPg0KPiA+ICAgU1RBVElD DQo+ID4gICBVSU5UNjQNCj4gPiBAQCAtMTI5LDcgKzE4MSwxMiBAQCBQY2lTZWdtZW50TGliR2V0 Q29uZmlnQmFzZSAoDQo+ID4gICAgIFVJTlQ4ICBCdXM7DQo+ID4NCj4gPiAgICAgQnVzID0gKChV SU5UMzIpQWRkcmVzcyA+PiAyMCkgJiAweGZmOw0KPiA+IC0gIHJldHVybiBQY2lMc0dldENvbmZp Z0Jhc2UgKEFkZHJlc3MsIFNlZ21lbnQsIE9mZnNldCwgQnVzKTsNCj4gPiArDQo+ID4gKyAgaWYg KFBjaUxzR2VuNEN0cmwpIHsNCj4gPiArICAgIHJldHVybiBQY2lMc0dlbjRHZXRDb25maWdCYXNl IChBZGRyZXNzLCBTZWdtZW50LCBPZmZzZXQsIEJ1cyk7ICB9DQo+ID4gKyBlbHNlIHsNCj4gPiAr ICAgIHJldHVybiBQY2lMc0dldENvbmZpZ0Jhc2UgKEFkZHJlc3MsIFNlZ21lbnQsIE9mZnNldCwg QnVzKTsgIH0NCj4gPiAgIH0NCj4gPg0KPiA+ICAgLyoqDQo+ID4gQEAgLTYyMCw1ICs2NzcsNiBA QCBQY2lTZWdMaWJJbml0ICgNCj4gPiAgICAgKQ0KPiA+ICAgew0KPiA+ICAgICBDZmdTaGlmdEVu YWJsZSA9IENGR19TSElGVF9FTkFCTEU7DQo+ID4gKyAgUGNpTHNHZW40Q3RybCA9IFBDSV9MU19H RU40X0NUUkw7DQo+ID4gICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiAgIH0NCj4gPg0KDQo=