From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.2.89; helo=eur01-db5-obe.outbound.protection.outlook.com; envelope-from=udit.kumar@nxp.com; receiver=edk2-devel@lists.01.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0089.outbound.protection.outlook.com [104.47.2.89]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 50AA82243693C for ; Fri, 23 Feb 2018 03:42:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=XC6A1oyoKdEDW5F12R1tjjhX8RQL9bx/is5SsW0mHjc=; b=GmQj9LAUMveApLcs9jSXHcJK9xIqCoznz5XVQVW2Bpvo5xkCVBHjD1MiDIqHwVCKhiIZrZQ3psrepJDRoyBBrE8p8eBcRkmqH1dBKUEBR285mYTQ7+PIr2LPuikNFgFGDzuN8GWspI3w4Pd1F+bdV6LmPmPmCcOY55NvgBD80Gk= Received: from AM0PR0402MB3330.eurprd04.prod.outlook.com (52.133.44.151) by AM0PR0402MB3875.eurprd04.prod.outlook.com (52.133.39.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Fri, 23 Feb 2018 11:48:05 +0000 Received: from AM0PR0402MB3330.eurprd04.prod.outlook.com ([fe80::8d12:f6b0:d25c:a8de]) by AM0PR0402MB3330.eurprd04.prod.outlook.com ([fe80::8d12:f6b0:d25c:a8de%13]) with mapi id 15.20.0527.017; Fri, 23 Feb 2018 11:48:04 +0000 From: Udit Kumar To: Laszlo Ersek , Leif Lindholm CC: "michael.d.kinney@intel.com" , "edk2-devel@lists.01.org" , "ard.biesheuvel@linaro.org" , Meenakshi Aggarwal Thread-Topic: [edk2] [PATCH edk2-platforms 01/39] Silicon/NXP: Add support for Big Endian Mmio APIs Thread-Index: AQHTqysWhBWg9HbkxE6P6Sgrl/jTxKOwc5jEgAFW8oCAAAaEAIAACZAA Date: Fri, 23 Feb 2018 11:48:04 +0000 Message-ID: References: <1518771035-6733-1-git-send-email-meenakshi.aggarwal@nxp.com> <1518771035-6733-2-git-send-email-meenakshi.aggarwal@nxp.com> <20180221154601.nkbp2xmy3zb2xolm@bivouac.eciton.net> <20180221185818.arwfhombntutnt23@bivouac.eciton.net> <20180222115223.xtfpc7du22drfkju@bivouac.eciton.net> <2a1fa56f-98db-a1c1-d973-7e84cc7dc1fa@redhat.com> <58b7fe3f-8e39-02a2-76a9-cf904280d298@redhat.com> In-Reply-To: <58b7fe3f-8e39-02a2-76a9-cf904280d298@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=udit.kumar@nxp.com; x-originating-ip: [192.88.169.1] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR0402MB3875; 7:o3Nqwa4+hTJgZyHYcPegAQG1beSW/kvbIlL38suWb7AKhzFEFXcI7pOWlxc4I8VtU/ER8Pw81YBiJtWMISfWIbnTgxObm1fWPIQFIDUU/1qEatv03EDh2PoVEuyVH5a9lvJ1z8N4MakSMON+scRYs7yOfJwL7p+XV+FfiS30/optzgrL//12hZUJ8LmdtvWExkwAZeZvNEMuWxFqdoNx6II7hl4+M8s/Ox6Fsf1g8li0Tp0PUdQpA7gOZRjasSWk x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(39380400002)(376002)(396003)(39860400002)(346002)(366004)(13464003)(199004)(189003)(4326008)(97736004)(7736002)(2900100001)(66066001)(25786009)(81166006)(5660300001)(5250100002)(7696005)(8936002)(76176011)(86362001)(99286004)(81156014)(8676002)(54906003)(316002)(93886005)(3660700001)(105586002)(110136005)(6436002)(68736007)(2950100002)(3846002)(6116002)(6246003)(53936002)(229853002)(55016002)(9686003)(186003)(106356001)(26005)(102836004)(14454004)(305945005)(74316002)(33656002)(6506007)(53546011)(2906002)(3280700002)(478600001)(59450400001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR0402MB3875; H:AM0PR0402MB3330.eurprd04.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 6a694933-5ba7-405e-976f-08d57ab34c77 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020); SRVR:AM0PR0402MB3875; x-ms-traffictypediagnostic: AM0PR0402MB3875: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(185117386973197)(162533806227266)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(3231101)(944501161)(10201501046)(6055026)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:AM0PR0402MB3875; BCL:0; PCL:0; RULEID:; SRVR:AM0PR0402MB3875; x-forefront-prvs: 0592A9FDE6 received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: EhjIU3vacudNLZIX/P98d6WwN5Vq52lauWjv4PlLC6vVAMQiZYytKDAT9jZsHhBwYXKJEfjSSRYsGtiWwyON3wuKLOQeBbKEhP6W+7Y6HaIzexJFvwVtTwNUkYAxnGeXysbBULkMKLqUMh4l4RsBMxXBI9n8UnT09/CGs9wIKdE= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a694933-5ba7-405e-976f-08d57ab34c77 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Feb 2018 11:48:04.2183 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3875 Subject: Re: [PATCH edk2-platforms 01/39] Silicon/NXP: Add support for Big Endian Mmio APIs X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Feb 2018 11:42:12 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvL0xlaWYsDQoNCkZvciBzaG9ydCB0ZXJtLCBpcyB0aGlzIG9rIHRvIGtlZXAgdGhp cyBsaWIgdW5kZXIgU2lsaWNvbi9OWFAsIGhlcmUgd2UgYXJlIGFzc3VtaW5nICANCkNQVSB3aWxs IGFsd2F5cyBvbiBiZSBMRSBtb2RlIHdoZXJlYXMgSVAgY2FuIHZhcnkgYmV0d2VlbiBMRS9CRSBt b2RlID8NCg0KRm9yIGxvbmcgdGVybSwgd2UgY2FuIGRpc2N1c3Mgb24gQVBJcy9uYW1lIG9mIExp Yi9GdW5jdGlvbiBuYW1lIGV0Yw0KV2Ugd2lsbCB1cGRhdGUgb3VyIGNvZGUsIGFzIHBlciBhZ3Jl ZW1lbnQuDQoNCkZvciBtZSwgU3VnZ2VzdGVkIGFwcHJvYWNoIGlzIG9rIGFzIHdlbGwgdG8ga2Vl cCBDUFUgZW5kaWFubmVzcyBpbiBBUk0gcGFja2FnZS4NCmJ1dCBuZWVkIHZpZXdzIGZyb20gQXJk L0xlaWYgaGVyZS4NCg0KVGhhbmtzDQpVZGl0DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNl bnQ6IEZyaWRheSwgRmVicnVhcnkgMjMsIDIwMTggNDoxNyBQTQ0KPiBUbzogVWRpdCBLdW1hciA8 dWRpdC5rdW1hckBueHAuY29tPjsgTGVpZiBMaW5kaG9sbQ0KPiA8bGVpZi5saW5kaG9sbUBsaW5h cm8ub3JnPg0KPiBDYzogbWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb207IGVkazItZGV2ZWxAbGlz dHMuMDEub3JnOw0KPiBhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnDQo+IFN1YmplY3Q6IFJlOiBb ZWRrMl0gW1BBVENIIGVkazItcGxhdGZvcm1zIDAxLzM5XSBTaWxpY29uL05YUDogQWRkIHN1cHBv cnQNCj4gZm9yIEJpZyBFbmRpYW4gTW1pbyBBUElzDQo+IA0KPiBPbiAwMi8yMy8xOCAxMToyNSwg VWRpdCBLdW1hciB3cm90ZToNCj4gPg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlz dHMuMDEub3JnXSBPbiBCZWhhbGYNCj4gPj4gT2YgTGFzemxvIEVyc2VrDQo+ID4+IFNlbnQ6IFRo dXJzZGF5LCBGZWJydWFyeSAyMiwgMjAxOCA3OjI2IFBNDQo+ID4+IFRvOiBMZWlmIExpbmRob2xt IDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+DQo+ID4+IENjOiBtaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbTsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7DQo+ID4+IGFyZC5iaWVzaGV1dmVsQGxp bmFyby5vcmcNCj4gPj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggZWRrMi1wbGF0Zm9ybXMg MDEvMzldIFNpbGljb24vTlhQOiBBZGQNCj4gPj4gc3VwcG9ydCBmb3IgQmlnIEVuZGlhbiBNbWlv IEFQSXMNCj4gPj4NCj4gPj4gT24gMDIvMjIvMTggMTI6NTIsIExlaWYgTGluZGhvbG0gd3JvdGU6 DQo+ID4+PiBPbiBUaHUsIEZlYiAyMiwgMjAxOCBhdCAwOTozNDowNUFNICswMTAwLCBMYXN6bG8g RXJzZWsgd3JvdGU6DQo+ID4+DQo+ID4+Pj4+IEJ1dCB0aGF0IGJyaW5ncyBiYWNrIHRoZSBjb21w bGljYXRpb24gYXMgdG8gaG93IHdlIGhhdmUgYSBkcml2ZXINCj4gPj4+Pj4gdGhhdCBuZWVkcyBh biBMRSBJTyBsaWJyYXJ5IHRvIHdyaXRlIG91dHB1dCwgYW5kIGEgQkUgSU8gbGlicmFyeQ0KPiA+ Pj4+PiB0byBtYW5pcHVsYXRlIHRoZSBoYXJkd2FyZS4NCj4gPj4+Pg0KPiA+Pj4+IENhbiB5b3Ug cGxlYXNlIGV4cGxhaW4gdGhlICJ3cml0ZSBvdXRwdXQiIHVzZSBjYXNlIG1vcmUgcHJlY2lzZWx5 Pw0KPiA+Pj4+DQo+ID4+Pj4gTXkgdGhpbmtpbmcgd291bGQgYmUgdGhpczoNCj4gPj4+Pg0KPiA+ Pj4+IC0gVXNlIHRoZSBJb0xpYiBjbGFzcyBkaXJlY3RseSBmb3IgIndyaXRpbmcgb3V0cHV0IiBp biBsaXR0bGUNCj4gPj4+PiBlbmRpYW4gYnl0ZSBvcmRlciAod2hpY2ggaXMgc3RpbGwgdW5jbGVh ciB0byBtZSBzb3JyeSkuDQo+ID4+Pg0KPiA+Pj4gSWYgdGhlIElvTGliIGNsYXNzIGlzIG1hcHBl ZCB0byBhIGFuIGluc3RhbmNlIHRoYXQgYnl0ZS1zd2Fwcw0KPiA+Pj4gKGhlcmV0byByZWZlcnJl ZCB0byBhcyBCZUlvTGliIGlmIElvTGliU3dhcCBpcyB1bnN1aXRhYmxlKSwgd291bGQgd2UNCj4g Pj4+IG5vdCB0aGVuIGVuZCB1cCBtYXBwaW5nIHRoZSBub24tc3dhcHBpbmcsIGN1cnJlbnRseSBp bXBsZW1lbnRlZCBpbg0KPiA+Pj4gQmFzZUxpYklvSW50cmluc2ljLCB2YXJpYW50IGFzIEJlSW9M aWI/IE9yIGlmIG5vdCwgZG8gd2UgZW5kIHVwDQo+ID4+PiBuZWVkaW5nIHRvIGR1cGxpY2F0ZWQg YWxsIElvTGliIGltcGxlbWVudGF0aW9uIC5pbmZzIHRvIHByb3ZpZGUgYW4NCj4gPj4+IElvTGli IGFuZCBhIEJlSW9MaWIgZm9yIGVhY2g/DQo+ID4+Pg0KPiA+Pj4gSXQncyBhdCB0aGF0IHBvaW50 IEkgYnVyc3QgYW4gYW5ldXJ5c20uDQo+ID4+PiBBbSBJIG92ZXJ0aGlua2luZy91bmRlcnRoaW5r aW5nIHRoaXM/DQo+ID4+DQo+ID4+IFdlIG5lZWQgdHdvIGxpYnJhcnkgY2xhc3Nlcywgb25lIGZv ciB0YWxraW5nIHRvIExFIGRldmljZXMgYW5kDQo+ID4+IGFub3RoZXIgdG8gQkUgZGV2aWNlcy4g VGhlc2Ugc2hvdWxkIGJlIHVzYWJsZSBpbiBhIGdpdmVuIG1vZHVsZSBhdA0KPiA+PiB0aGUgc2Ft ZSB0aW1lLCBhcyBBcmQgc2F5cy4NCj4gPj4NCj4gPj4gQm90aCBsaWJyYXJ5IGNsYXNzZXMgbmVl ZCB0byB3b3JrIG9uIGJvdGggTEUgYW5kIEJFIENQVXMgKHdvcmtpbmcNCj4gPj4gZnJvbSB5b3Vy IHN1Z2dlc3Rpb24gdGhhdCBVRUZJIG1pZ2h0IGdyb3cgQkUgQ1BVIHN1cHBvcnQgYXQgc29tZQ0K PiA+PiBwb2ludCkuIFdoZXRoZXIgdGhhdCBpcyBpbXBsZW1lbnRlZCBieSBkdW1iLCBzZXBhcmF0 ZSBsaWJyYXJ5DQo+ID4+IGluc3RhbmNlcyAoeWllbGRpbmcgaW4gdG90YWwgMioyPTQgbGlicmFy eSBpbnN0YW5jZXMpLCBvciBieSBzbWFydCwNCj4gPj4gQ1BVLWVuZGlhbm5lc3MtYWdub3N0aWMg bGlicmFyeSBpbnN0YW5jZXMgKGluIHRvdGFsLCAyKSwgaXMgYQ0KPiA+PiBkaWZmZXJlbnQgcXVl c3Rpb24uDQo+ID4+DQo+ID4+IE5vdGUgdGhhdCBzdWNoICJzbWFydHMiIGNvdWxkIGJlIGxlc3Mg dGhhbiB0cml2aWFsIHRvIGltcGxlbWVudDoNCj4gPj4gLSBjaGVjayBDUFUgZW5kaWFubmVzcyBp biBlYWNoIGxpYnJhcnkgQVBJPw0KPiA+PiAtIG9yIGNoZWNrIGluIHRoZSBsaWIgY29uc3RydWN0 b3Igb25seSwgYW5kIGZsaXAgc29tZSBmdW5jdGlvbg0KPiA+PiAgIHBvaW50ZXJzPw0KPiA+PiAt IHVzZSBhIGR5bmFtaWMgUENEIGZvciBjYWNoaW5nIENQVSBlbmRpYW5uZXNzPw0KPiA+PiAtIHVz ZSBhIEhPQiBmb3IgdGhlIHNhbWU/DQo+ID4+IC0gdXNlIGEgbGliIGdsb2JhbCB2YXJpYWJsZSAo Zm9yIGNhY2hpbmcgb25seSBvbiB0aGUgbW9kdWxlIGxldmVsKT8NCj4gPj4NCj4gPj4gSSB0aGlu ayB0aGUgc29sdXRpb24gdGhhdCBzYXZlcyB0aGUgbW9zdCBvbiB0aGUgKnNvdXJjZSogY29kZSBz aXplDQo+ID4+IGlzOg0KPiA+PiAtIGludHJvZHVjZSB0aGUgQmVJb0xpYiBjbGFzcw0KPiA+PiAt IGR1cGxpY2F0ZSB0aGUgTU1JTyBmdW5jdGlvbnMgZnJvbSBCYXNlSW9MaWJJbnRyaW5zaWMgdG8g dGhlIG9uZQ0KPiA+PiAgIEJlSW9MaWIgaW5zdGFuY2UgdGhhdCB3ZSBpbnRyb2R1Y2UNCj4gPj4g LSBtb2RpZnkgdGhlIE1NSU8gZnVuY3Rpb25zIGluICpib3RoKiBsaWIgaW5zdGFuY2VzIChvcmln aW5hbCBMRSwgYW5kDQo+ID4+ICAgbmV3IEJFKSwgbGlrZSB0aGlzOg0KPiA+Pg0KPiA+PiAgIC0g SWYgdGhlIENQVSBhcmNoaXRlY3R1cmUgaXMga25vd24gdG8gYmUgYm91bmQgdG8gYSBzaW5nbGUN Cj4gPj4gICAgIGVuZGlhbm5lc3MsIHRoZW4gaGFyZGNvZGUgdGhlIGFwcHJvcHJpYXRlIG9wZXJh dGlvbi4gVGhpcyBjYW4gYmUNCj4gPj4gICAgIGRvbmUgd2l0aCBwcmVwcm9jZXNzb3IgbWFjcm9z LCBvciB3aXRoIHRoZSBhcmNoaXRlY3R1cmUgc3VwcG9ydA0KPiA+PiAgICAgb2YgSU5GIGZpbGVz IC8gc2VwYXJhdGUgc291cmNlIGZpbGVzLiBGb3IgZXhhbXBsZSwgb24gSUEzMiBhbmQNCj4gPj4g ICAgIFg2NCwgdGhlIElvTGliIGluc3RhbmNlIHNob3VsZCB3b3JrIHRyYW5zcGFyZW50bHksDQo+ ID4+ICAgICB1bmNvbmRpdGlvbmFsbHksIGFuZCB0aGUgQmVJb0xpYiBpbnN0YW5jZSBzaG91bGQg Ynl0ZS1zd2FwLA0KPiA+PiAgICAgdW5jb25kaXRpb25hbGx5Lg0KPiA+Pg0KPiA+PiAgIC0gT24g b3RoZXIgQ1BVIGFyY2hlcywgYWxsIHRoZSB3aWRlci10aGFuLWJ5dGUgTU1JTyBmdW5jdGlvbnMs IGluDQo+ID4+ICAgICAqYm90aCogbGliIGluc3RhbmNlcyBzaG91bGQgZG8gc29tZXRoaW5nIGxp a2UgdGhpczoNCj4gPj4NCj4gPj4gICAgIC8vDQo+ID4+ICAgICAvLyBhdCBmaWxlIHNjb3BlDQo+ ID4+ICAgICAvLw0KPiA+PiAgICAgU1RBVElDIENPTlNUIFVJTlQxNiBtT25lID0gMTsNCj4gPj4N Cj4gPj4gICAgIC8vDQo+ID4+ICAgICAvLyBhdCBmdW5jdGlvbiBzY29wZQ0KPiA+PiAgICAgLy8N Cj4gPj4gICAgIGlmICgqKENPTlNUIFVJTlQ4ICopJm1PbmUgPT0gMSkgew0KPiA+PiAgICAgICAv Lw0KPiA+PiAgICAgICAvLyBDUFUgaW4gTEUgbW9kZToNCj4gPj4gICAgICAgLy8gLSB3b3JrIHRy YW5zcGFyZW50bHkgaW4gdGhlIElvTGliIGluc3RhbmNlDQo+ID4+ICAgICAgIC8vIC0gYnl0ZS1z d2FwIGluIHRoZSBCZUlvTGliIGluc3RhbmNlDQo+ID4+ICAgICAgIC8vDQo+ID4+ICAgICB9IGVs c2Ugew0KPiA+PiAgICAgICAvLw0KPiA+PiAgICAgICAvLyBDUFUgaW4gQkUgbW9kZToNCj4gPj4g ICAgICAgLy8gLSBieXRlLXN3YXAgaW4gdGhlIElvTGliIGluc3RhbmNlDQo+ID4+ICAgICAgIC8v IC0gd29yayB0cmFuc3BhcmVudGx5IGluIHRoZSBCZUlvTGliIGluc3RhbmNlDQo+ID4+ICAgICAg IC8vDQo+ID4+ICAgICB9DQo+ID4NCj4gPiBZb3UgbWVhbnQsIHNvcnQgb2YgY3B1X3RvX2xlIGFu ZCBjcHVfdG9fYmUgc29ydCBvZiBBUElzDQo+IA0KPiBJJ20gbG9zdC4gSSBkb24ndCBrbm93IGhv dyB0byBwdXQgaXQgYW55IGNsZWFyZXIuIExldCBtZSB0cnkgd2l0aCBhY3R1YWwNCj4gY29kZS4N Cj4gDQo+IChhKSBTdWdnZXN0ZWQgZm9yICJNZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5z aWMvSW9MaWIuYyIsIHdoaWNoIGlzDQo+IHVzZWQgb24gSUEzMiBhbmQgWDY0LCB0aGVyZWZvcmUg Q1BVIGJ5dGUgb3JkZXIgaXMgbGl0dGxlIGVuZGlhbiBvbmx5Og0KPiANCj4gPiBVSU5UMzINCj4g PiBFRklBUEkNCj4gPiBNbWlvV3JpdGUzMiAoDQo+ID4gICBJTiAgICAgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgQWRkcmVzcywNCj4gPiAgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBWYWx1ZQ0KPiA+ICAgKQ0KPiA+IHsNCj4gPiAgIEFTU0VSVCAoKEFkZHJlc3MgJiAzKSA9 PSAwKTsNCj4gPg0KPiA+ICAgTWVtb3J5RmVuY2UgKCk7DQo+ID4gICAqKHZvbGF0aWxlIFVJTlQz MiopQWRkcmVzcyA9IFZhbHVlOw0KPiA+ICAgTWVtb3J5RmVuY2UgKCk7DQo+ID4NCj4gPiAgIHJl dHVybiBWYWx1ZTsNCj4gPiB9DQo+IA0KPiBJbiBvdGhlciB3b3Jkcywgbm8gY2hhbmdlIHRvIHRo ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLg0KPiANCj4gDQo+IChiKSBTdWdnZXN0ZWQgZm9yICJN ZGVQa2cvTGlicmFyeS9CYXNlQmVJb0xpYkludHJpbnNpYy9Jb0xpYi5jIiwgYWxzbyB0bw0KPiBi ZSB1c2VkIG9uIElBMzIgYW5kIFg2NC4gQmVjYXVzZSB0aGUgQ1BVIGJ5dGUgb3JkZXIgaXMgTEUg b25seSwgdGhpcw0KPiB2YXJpYW50IHdpbGwgYnl0ZS1zd2FwIHVuY29uZGl0aW9uYWxseS4NCj4g DQo+ID4gVUlOVDMyDQo+ID4gRUZJQVBJDQo+ID4gQmVNbWlvV3JpdGUzMiAoDQo+ID4gICBJTiAg ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcywNCj4gPiAgIElOICAgICAgVUlO VDMyICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+ICAgKQ0KPiA+IHsNCj4gPiAgIEFTU0VS VCAoKEFkZHJlc3MgJiAzKSA9PSAwKTsNCj4gPg0KPiA+ICAgTWVtb3J5RmVuY2UgKCk7DQo+ID4g ICAqKHZvbGF0aWxlIFVJTlQzMiopQWRkcmVzcyA9IFN3YXBCeXRlczMyIChWYWx1ZSk7DQo+ID4g ICBNZW1vcnlGZW5jZSAoKTsNCj4gPg0KPiA+ICAgcmV0dXJuIFZhbHVlOw0KPiA+IH0NCj4gDQo+ IChjKSBTdWdnZXN0ZWQgZm9yICJNZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMvSW9M aWJBcm0uYyIsIHdoaWNoDQo+IGlzIHVzZWQgb24gQVJNIGFuZCBBQVJDSDY0LiBBbmQgaGVyZSBJ J2xsIGFzc3VtZSB0aGF0IHRoZSBDUFUgYnl0ZSBvcmRlcg0KPiBvbiB0aG9zZSBjYW4gYmUgZWl0 aGVyIExFIG9yIEJFLg0KPiANCj4gPiBVSU5UMzINCj4gPiBFRklBUEkNCj4gPiBNbWlvV3JpdGUz MiAoDQo+ID4gICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcywNCj4g PiAgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+ICAgKQ0KPiA+ IHsNCj4gPiAgIEFTU0VSVCAoKEFkZHJlc3MgJiAzKSA9PSAwKTsNCj4gPiAgICoodm9sYXRpbGUg VUlOVDMyKilBZGRyZXNzID0gKCooQ09OU1QgVUlOVDggKikmbU9uZSA9PSAxKSA/DQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIDoNCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU3dhcEJ5dGVzMzIgKFZhbHVlKTsNCj4gPiAgIHJldHVybiBWYWx1ZTsN Cj4gPiB9DQo+IA0KPiANCj4gKGQpIFN1Z2dlc3RlZCBmb3IgIk1kZVBrZy9MaWJyYXJ5L0Jhc2VC ZUlvTGliSW50cmluc2ljL0JlSW9MaWJBcm0uYyIsDQo+IHdoaWNoIGlzIHRvIGJlIHVzZWQgb24g QVJNIGFuZCBBQVJDSDY0LiBBbmQgaGVyZSBJJ2xsIGFzc3VtZSB0aGF0IHRoZQ0KPiBDUFUgYnl0 ZSBvcmRlciBvbiB0aG9zZSBjYW4gYmUgZWl0aGVyIExFIG9yIEJFLg0KPiANCj4gPiBVSU5UMzIN Cj4gPiBFRklBUEkNCj4gPiBCZU1taW9Xcml0ZTMyICgNCj4gPiAgIElOICAgICAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBBZGRyZXNzLA0KPiA+ICAgSU4gICAgICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgIFZhbHVlDQo+ID4gICApDQo+ID4gew0KPiA+ICAgQVNTRVJUICgoQWRkcmVzcyAm IDMpID09IDApOw0KPiA+ICAgKih2b2xhdGlsZSBVSU5UMzIqKUFkZHJlc3MgPSAoKihDT05TVCBV SU5UOCAqKSZtT25lID09IDEpID8NCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U3dhcEJ5dGVzMzIgKFZhbHVlKSA6DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFZhbHVlOw0KPiA+ICAgcmV0dXJuIFZhbHVlOw0KPiA+IH0NCg0KDQo+IExhc3psbw0K