From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.0.68; helo=eur01-he1-obe.outbound.protection.outlook.com; envelope-from=udit.kumar@nxp.com; receiver=edk2-devel@lists.01.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0068.outbound.protection.outlook.com [104.47.0.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 24659202E59CA for ; Mon, 23 Oct 2017 00:04:01 -0700 (PDT) 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=sLNPEhN1Rx4OeZnNNWRA7mB3jDOYSaex18IgIE14g4c=; b=fMa02HzTwZxLZ0zaJUfsq6PWGEzoz3KNQP1I9Oy3K9ixDJfK6+RPiJEUYg4yo1bWgDZm2vjbfbbqlewToCXi1lTBNV0PiMA/51p1YhW8x3HW3hyC7LU8+6VGELjTtetR+QzNQQpyawIhqzlBjtqEDFU+CdJkGMoLlTZkECYfz4w= Received: from AM6PR0402MB3334.eurprd04.prod.outlook.com (52.133.18.151) by DB5PR04MB1000.eurprd04.prod.outlook.com (10.161.199.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Mon, 23 Oct 2017 07:07:36 +0000 Received: from AM6PR0402MB3334.eurprd04.prod.outlook.com ([fe80::4823:25e5:43de:60ba]) by AM6PR0402MB3334.eurprd04.prod.outlook.com ([fe80::4823:25e5:43de:60ba%13]) with mapi id 15.20.0156.007; Mon, 23 Oct 2017 07:07:35 +0000 From: Udit Kumar To: "Gao, Liming" , Meenakshi Aggarwal , Ard Biesheuvel , "Kinney, Michael D" , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCH 1/1] MdePkg/IoLib: Add support for big-endian MMIO Thread-Index: AQHSJf8g4WbKjSWeTUGVohhhcxe8iqCr++gAgAAQ+YCAADsgAIAAJeEAgjcV3KCABIjHYIAAVAOQ Date: Mon, 23 Oct 2017 07:07:35 +0000 Message-ID: References: <1476437615-29534-1-git-send-email-bhupesh.sharma@nxp.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14B49505E@shsmsx102.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E16B65D@SHSMSX104.ccr.corp.intel.com> In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E16B65D@SHSMSX104.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [192.88.169.1] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB5PR04MB1000; 6:0JXBASVCYnEqwlw4gPcGiyZmeHwSN9cj/vIeX+et24Hewx8jpVyqHGafRu6UoSpYBqgExtYTx39Nd0rNSzzRb7kWwO7iOonMOLOlntEhLrcBlbbN2ERmQHH+srUeURui+xv6N5f7RD59XoGukolMCIu08rTrXcxMgRjC7g3ga2bAMSQI9E5Qjn+vF6MQqcDT1I7HeEBluwDObbwMTL8WZaTtRdtV/vCvYcM/bn8ro9ppqXbWeCcBJT8qehIVIbniyQNg4uDGF01mhO2T6ViSqMYRaJSGjk/vj2JAhN43nvlnSDDuT4M7r75QjL7kEG1vGVoMMe7uJgvkNqHJPQNIEw==; 5:6OnOGi5/vJ0ISvOedMCK22/uEh8YFtHeNRKZ9Jha8Pi3SNqZfKUDNPVy38vEG5Jn4DZcKapBzK99ofw5MLrgHi27tqo2LTCiDoeN5CsGFkeHtRcbD+wQUIEAQrhs27tieCa3/pjl12shufcWtaxICQ==; 24:u6cEiJcHnolgyLgvQh1/XaOjNoy6lm72mhDzhfXcrjydNrTuTR/9SfdhgRwobu03C1XT8zel/DILBfHfx6LnzBmbnkp/8HauSvXZzE/aKYQ=; 7:1WbMdyKtB2jqwSvZeO3qNTu0iDWJF8ACr8BpwKqrrs4iyTik2dBNWQJh51kD21NLtEjPJDNUPV6CnkJoVW/sFpmYFG4HZ0nWuM0Tw4Jso6YnX0MzjC/ipv4h08yQEMSw9KPnDTQ+C+SL9otxBc58OJ8jZsQ7PQytHdrrhJg20Wtcnc73OaublwiX4bdUkQFiOOYqJQmD59nlBJms8hC0Uw/VgFSVSAHoOrZKV12j2Ok= x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(6009001)(6029001)(39860400002)(376002)(346002)(13464003)(189002)(24454002)(43544003)(53754006)(199003)(93886005)(229853002)(5660300001)(14454004)(97736004)(86362001)(105586002)(106356001)(189998001)(8676002)(8936002)(81166006)(74316002)(81156014)(2501003)(966005)(6436002)(5250100002)(68736007)(110136005)(25786009)(6506006)(478600001)(53546010)(6116002)(3280700002)(316002)(3846002)(102836003)(305945005)(2950100002)(6246003)(33656002)(2906002)(3660700001)(101416001)(76176999)(54356999)(50986999)(9686003)(53936002)(6306002)(55016002)(7736002)(99286003)(2900100001)(7696004)(66066001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR04MB1000; H:AM6PR0402MB3334.eurprd04.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: 14a28225-5916-4b41-5233-08d519e4bd0f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(48565401081)(2017052603229); SRVR:DB5PR04MB1000; x-ms-traffictypediagnostic: DB5PR04MB1000: x-exchange-antispam-report-test: UriScan:(185117386973197)(162533806227266)(228905959029699); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3231020)(6055026)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(20161123560025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB5PR04MB1000; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB5PR04MB1000; x-forefront-prvs: 046985391D received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=udit.kumar@nxp.com; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Oct 2017 07:07:35.7304 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR04MB1000 Subject: Re: [PATCH 1/1] MdePkg/IoLib: Add support for big-endian MMIO X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Oct 2017 07:04:02 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWVlbmFrc2hpL0xpbWluZywgDQpNeSAyIGNlbnRzLCBhcm91bmQgdGhpcy4gDQoNCjEpDQpI YXZpbmcgYSBuZXcgbGliIGZvciBCRSByZWFkIG1pZ2h0IG5vdCBiZSBoZWxwZnVsIGZvciB1cywg DQplLmcuIGEgSVAgd2hpY2ggaXMgaW4gQkUgbW9kZSBhY2Nlc3MgdGhlIFVBUlQgZm9yIHByaW50 IG9yIHN5c3RlbSByZWdpc3RlcnMgd2hpY2ggYXJlIGluIExFLCANCnRoZW4gd2l0aCBuZXcgTGli LCB3ZSB3aWxsIGdldCBhbGwgcmVhZC93cml0ZSBpbiBCRSBtb2RlIA0KDQoyKQ0KRXNwZWNpYWxs eSBmb3Igb3VyIElQcywgd2hpY2ggYXJlIGNoYW5naW5nIGZyb20gQkUgdG8gTEUgZGVwZW5kaW5n IG9uIHBsYXRmb3JtLiANCkFzIHNhaWQgYmVmb3JlLCBoYXZpbmcgQkUgcmVhZCBsaWIgd2l0aCBB UEkgbmFtZSBvZiBNbWlvUmVhZDMyIGV0Yywgd2lsbCBub3QgaGVscCAoSSBndWVzcyBNZWVuYWtz aGkgYWxyZWFkeSBzZWVuIHNvbWUgcHJvYmxlbXMgYXJvdW5kIHRoaXMpDQpBZGRpbmcgYSBuZXcg bGliIHdpdGggTW1pb1JlYWQzMkJFIEFQSSBuYW1lIGNvdWxkIGhlbHAsIGJ1dCBJUCBkcml2ZXIg d2UgbmVlZCB0byB0YWtlIGNhcmUgb2YgSVAgbW9kZSBlaXRoZXIgYnkgUGNkIG9yICNkZWZpbmUs IHRvIHNlbGVjdCBNbWlvUmVhZDMyIG9yIE1taW9SZWFkMzJCRS4gDQpUaGlzIGNvbmRpdGlvbmFs IGNvbXBpbGUgbmVlZHMgdG8gYmUgZG9uZSBmb3IgYWxsIElQcyAod2hpY2ggd29ya3MgaW4gQkUv TEUgbW9kZSBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zKS4gDQoNCk15IHByZWZlcnJlZCB3YXkgb2Yg aW1wbGVtZW50YXRpb24gdG8gdXNlIG9uZSBmdW5jdGlvbiBpbiBJUCBkcml2ZXIsIA0KQW5kIGJh c2VkIG9uIElQIG1vZGUsIGRvIHRoZSBzd2l0Y2guIA0KDQpOZXcgTGliIGNvdWxkIGhhdmUgZnVu Y3Rpb24gbGlrZSBiZWxvdyANCk1taW9SZWFkMzJHZW5lcmljKElOICBVSU5UTiAgICAgQWRkcmVz cywgQk9PTCBJc0lQQkUpIHsNCiAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICBW YWx1ZTsNCiANCiAgIEFTU0VSVCAoKEFkZHJlc3MgJiAzKSA9PSAwKTsNCiAgIFZhbHVlID0gKih2 b2xhdGlsZSBVSU5UMzIqKUFkZHJlc3M7DQogICBJZihJc0lQQkUpDQogICAgIFZhbHVlID0gU3dh cEJ5dGVzMzIoVmFsdWUpOw0KIHJldHVybiAgVmFsdWU7DQp9DQoNCkFuZCBJUCBkcml2ZXIgY2Fu IHVzZSBpdCANCk1taW9SZWFkMzJHZW5lcmljKEFERFIsIEZpeGVkUGNkR2V0KFRoaXNfSVBfTW9k ZV9Gb3JfVGhpc19wbGF0Zm9ybSkNCg0KQ29tbWVudHMgYXJlIHdlbGNvbWUuIA0KDQpSZWdhcmRz DQpVZGl0DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZWRrMi1kZXZl bCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBPZiBH YW8sDQo+IExpbWluZw0KPiBTZW50OiBNb25kYXksIE9jdG9iZXIgMTYsIDIwMTcgODo0OCBBTQ0K PiBUbzogTWVlbmFrc2hpIEFnZ2Fyd2FsIDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT47IEFy ZCBCaWVzaGV1dmVsDQo+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsgS2lubmV5LCBNaWNo YWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gZWRrMi1kZXZlbEBsaXN0cy4w MS5vcmcNCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMS8xXSBNZGVQa2cvSW9MaWI6IEFk ZCBzdXBwb3J0IGZvciBiaWctZW5kaWFuDQo+IE1NSU8NCj4gDQo+IE1lZW5ha3NoaToNCj4gICBJ IHN1Z2dlc3QgdG8gaW50cm9kdWNlIG5ldyBJb0xpYiBsaWJyYXJ5IGluc3RhbmNlLCBub3QgdG8g YWRkIG5ldyBJb0xpYiBBUElzLg0KPiBOZXcgSW9MaWIgbGlicmFyeSBpbnN0YW5jZSB3aWxsIHBl cmZvcm0gSU8gb3BlcmF0aW9uIGFzIHRoZSBiaWcgZW5kaWFuLiBZb3UgY2FuDQo+IHVwZGF0ZSBN ZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMgaW5zdGFuY2UsIGFkZCBuZXcgc291cmNl IGZpbGUgYW5kDQo+IG5ldyBJTkYgZm9yIGl0Lg0KPiANCj4gVUlOVDMyDQo+IEVGSUFQSQ0KPiBN bWlvUmVhZDMyICgNCj4gICBJTiAgVUlOVE4gICAgIEFkZHJlc3MNCj4gICApDQo+IHsNCj4gICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWU7DQo+IA0KPiAgIEFTU0VSVCAo KEFkZHJlc3MgJiAzKSA9PSAwKTsNCj4gICBWYWx1ZSA9ICoodm9sYXRpbGUgVUlOVDMyKilBZGRy ZXNzOw0KPiAgIHJldHVybiBTd2FwQnl0ZXMzMihWYWx1ZSk7DQo+IH0NCj4gDQo+IFRoYW5rcw0K PiBMaW1pbmcNCj4gPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID5Gcm9tOiBNZWVuYWtz aGkgQWdnYXJ3YWwgW21haWx0bzptZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbV0NCj4gPlNlbnQ6 IEZyaWRheSwgT2N0b2JlciAxMywgMjAxNyAyOjA3IFBNDQo+ID5UbzogQXJkIEJpZXNoZXV2ZWwg PGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA+PG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IEdhbywgTGlt aW5nDQo+ID48bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID5TdWJqZWN0OiBSRTogW2VkazJdIFtQ QVRDSCAxLzFdIE1kZVBrZy9Jb0xpYjogQWRkIHN1cHBvcnQgZm9yDQo+ID5iaWctZW5kaWFuIE1N SU8NCj4gPg0KPiA+SGkgQWxsLA0KPiA+DQo+ID4NCj4gPkl04oCZcyBhIHByZXR0eSBvbGQgZGlz Y3Vzc2lvbiwgd2UgaGF2ZSBsZWZ0IHRoZSB1cHN0cmVhbWluZyBvZiBOWFANCj4gPnBhY2thZ2Ug aW4gYmV0d2VlbiBiZWNhdXNlIG9mIHNvbWUgb3RoZXIgd29yaywgYnV0IGhhdmUgc3RhcnRlZCBp dCBhZ2Fpbg0KPiBub3cuDQo+ID4NCj4gPg0KPiA+SXNzdWUgIDogRmV3IE5YUCBtb2R1bGVzIHN1 cHBvcnQgQmlnIEVuZGlhbiBNTUlPcyBhcyB0aGVzZSBhcmUgcG9ydGVkDQo+ID5mcm9tIFBvd2Vy UEMuDQo+ID4NCj4gPlNvbHV0aW9uIHN1Z2dlc3RlZCA6IENyZWF0ZSBhIHNlcGFyYXRlIGxpYnJh cnkgZm9yIEJFIE1NSU8gQVBJcy4NCj4gPg0KPiA+DQo+ID5TbyB3aGF0IEkgaGF2ZSBkb25lIGlz LCBJIGhhdmUgY3JlYXRlZCBhIHNlcGFyYXRlIGxpYnJhcnkgdG8gc3VwcG9ydCBCRQ0KPiA+TU1J TyBBUElzIGFuZCBjdXJyZW50bHkga2VlcGluZyBpdCB0byBteSBwYWNrYWdlLg0KPiA+VGhpcyBs aWJyYXJ5IGlzIGJhc2ljYWxseSBhIHdyYXBwZXIgb3ZlciBleGlzdGluZyBNTUlPIEFQSXMuDQo+ ID4NCj4gPlVJTlQzMg0KPiA+RUZJQVBJDQo+ID5CZU1taW9SZWFkMzIgKA0KPiA+ICBJTiAgVUlO VE4gICAgIEFkZHJlc3MNCj4gPiAgKQ0KPiA+ew0KPiA+ICBVSU5UMzIgIFZhbHVlOw0KPiA+DQo+ ID4gIFZhbHVlID0gTW1pb1JlYWQzMihBZGRyZXNzKTsNCj4gPg0KPiA+ICByZXR1cm4gU3dhcEJ5 dGVzMzIoVmFsdWUpOw0KPiA+fQ0KPiA+DQo+ID4NCj4gPk5lZWQgeW91ciBvcGluaW9uIG9uIGJl bG93IG9wdGlub3M6DQo+ID4NCj4gPjEuIFdpbGwgdGhpcyBiZSBhIGdvb2QgaWRlYSB0byBtYWtl IHRoaXMgbGlicmFyeSBhIHBhcnQgb2YgTWRlUGtnPyBPUg0KPiA+DQo+ID4yLiBBZGQgYSBuZXcg ZmlsZSBlLmcuIElvQmVNbWlvLmMgbGlrZSBJb0hpZ2hMZXZlbC5jIGluDQo+ID5NZGVQa2cvTGli cmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMvDQo+ID4gQW5kIG1hZGUgdGhlc2UgQVBJcyBhIHBhcnQg b2YgSW9MaWIgaXRzZWxmLiBPUg0KPiA+DQo+ID4zLiBLZWVwIHRoaXMgbGlicmFyeSBpbnRlcm5h bCB0byBOWFAgcGFja2FnZS4NCj4gPg0KPiA+DQo+ID5QbGVhc2UgcHJvdmlkZSB5b3VyIGlucHV0 cy4NCj4gPg0KPiA+DQo+ID5UaGFua3MgJiBSZWdhcmRzLA0KPiA+TWVlbmFrc2hpDQo+ID4NCj4g Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogQmh1cGVzaCBTaGFybWEN Cj4gPj4gU2VudDogTW9uZGF5LCBPY3RvYmVyIDE3LCAyMDE2IDM6MjggUE0NCj4gPj4gVG86IEFy ZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsgS2lubmV5LCBNaWNoYWVs IEQNCj4gPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+PiBDYzogR2FvLCBMaW1p bmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBtbDAxLjAxLm9yZzsNCj4gPj4g TWVlbmFrc2hpIEFnZ2Fyd2FsIDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT4NCj4gPj4gU3Vi amVjdDogUkU6IFtlZGsyXSBbUEFUQ0ggMS8xXSBNZGVQa2cvSW9MaWI6IEFkZCBzdXBwb3J0IGZv cg0KPiA+PiBiaWctZW5kaWFuIE1NSU8NCj4gPj4NCj4gPj4gSGkgQXJkLA0KPiA+Pg0KPiA+PiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ID4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg W21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiA+PiA+IFNlbnQ6IE1vbmRheSwg T2N0b2JlciAxNywgMjAxNiAxOjEyIFBNDQo+ID4+ID4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPj4gPiBDYzogR2FvLCBMaW1pbmcgPGxpbWlu Zy5nYW9AaW50ZWwuY29tPjsgQmh1cGVzaCBTaGFybWENCj4gPj4gPiA8Ymh1cGVzaC5zaGFybWFA bnhwLmNvbT47IGVkazItZGV2ZWxAbWwwMS4wMS5vcmcNCj4gPj4gPiBTdWJqZWN0OiBSZTogW2Vk azJdIFtQQVRDSCAxLzFdIE1kZVBrZy9Jb0xpYjogQWRkIHN1cHBvcnQgZm9yIGJpZy0NCj4gPj4g PiBlbmRpYW4gTU1JTw0KPiA+PiA+DQo+ID4+ID4gT24gMTcgT2N0b2JlciAyMDE2IGF0IDA1OjEw LCBLaW5uZXksIE1pY2hhZWwgRA0KPiA+PiA+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4g d3JvdGU6DQo+ID4+ID4gPiBCaHVwZXNoLA0KPiA+PiA+ID4NCj4gPj4gPiA+IEl0IGlzIGFsc28g cG9zc2libGUgdG8gYWRkIGFuIEFSTSBzcGVjaWZpYyBQQ0QgdG8gc2VsZWN0DQo+ID4+ID4gPiBl bmRpYW5uZXNzIGFuZCB1cGRhdGUNCj4gPj4gPiA+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYklu dHJpbnNpYy9Jb0xpYkFybS5jIHRvIHVzZSB0aGF0IFBDRCBpbg0KPiA+PiA+ID4gTW1pb1JlYWQv V3JpdGUoKSBBUElzIGluIHRoYXQgZmlsZSB0byBzdXBwb3J0IGJvdGggZW5kaWFuIHR5cGVzLg0K PiA+PiA+ID4gWW91IGNhbiB1c2UgdGhlIFN3YXBCeXRlc3h4KCkgZnVuY3Rpb25zIGZyb20gQmFz ZUxpYihhcw0KPiA+PiA+IExhc3psbw0KPiA+PiA+ID4gc3VnZ2VzdGVkKSBiYXNlZCBvbiB0aGUg c2V0dGluZyBvZiB0aGlzIEFSTSBzcGVjaWZpYyBQQ0QuDQo+ID4+ID4gPg0KPiA+PiA+ID4gTW9k dWxlcyB0aGF0IGxpbmsgYWdhaW5zdCB0aGlzIGxpYiBjYW4gc2VsZWN0IGVuZGlhbm5lc3MgYnkN Cj4gPj4gPiA+IHNldHRpbmcgUENEIGluIHRoZSBzY29wZSBvZiB0aGF0IG1vZHVsZS4NCj4gPj4g PiA+DQo+ID4+ID4gPiBUaGUgSVBGIHZlcnNpb24gb2YgSW9MaWIgdXNlcyBhbiBJUEYgc3BlY2lm aWMgUENEIHRvIHRyYW5zbGF0ZQ0KPiA+PiA+ID4gSS9PIHBvcnQgYWNjZXNzZXMgdG8gTU1JTyBh Y2Nlc3Nlcy4gIFNvIHRoZXJlIGlzIGFscmVhZHkgYW4NCj4gPj4gPiA+IGV4YW1wbGUgb2YgYW4g YXJjaCBzcGVjaWZpYyBQQ0QgaW4gdGhpcyBsaWIgaW5zdGFuY2UuDQo+ID4+ID4gPg0KPiA+PiA+ DQo+ID4+ID4gVGhpcyBpcyBub3QgYSBwbGF0Zm9ybSB3aWRlIHRoaW5nLCBpdCBpcyBhIHBlci1k ZXZpY2UgcHJvcGVydHkNCj4gPj4gPiB3aGV0aGVyIHRoZSBNTUlPIG9jY3VycyBpbiBiaWcgZW5k aWFuIG9yIGxpdHRsZSBlbmRpYW4gbWFubmVyLg0KPiA+PiA+DQo+ID4+ID4gU28gSSB0aGluayBM aW1pbmcncyBzdWdnZXN0aW9uIG1ha2VzIHNlbnNlOiBjcmVhdGUgYW4gSW9MaWINCj4gPj4gPiBp bXBsZW1lbnRhdGlvbiB0aGF0IHBlcmZvcm1zIHRoZSBieXRlIHN3YXBwaW5nLCBhbmQgc2VsZWN0 aXZlbHkNCj4gPj4gPiBpbmNvcnBvcmF0ZSBpdCBpbnRvIGRyaXZlcnMgdGhhdCByZXF1aXJlIGl0 IHVzaW5nDQo+ID4+ID4NCj4gPj4gPiBCZU1taW9EZXZpY2VEeGUuaW5mIHsNCj4gPj4gPiAgIDxM aWJyYXJ5Q2xhc3Nlcz4NCj4gPj4gPiAgICAgSW9MaWJ8U29tZVBrZy9MaWJyYXJ5L0JpZ0VuZGlh bklvTGliLmluZg0KPiA+PiA+IH0NCj4gPj4NCj4gPj4gVGhhdCdzIGNvcnJlY3QuIEkgdGhpbmsg Y3JlYXRpbmcgYSBzZXBhcmF0ZSBJb0xpYiBmb3IgYnl0ZS1zd2FwcGluZw0KPiA+PiBtYWtlcyBz ZW5zZS4NCj4gPj4NCj4gPj4gV2Ugd2lsbCByZXdvcmsgdGhlIHBhdGNoIGFjY29yZGluZ2x5Lg0K PiA+Pg0KPiA+PiBSZWdhcmRzLA0KPiA+PiBCaHVwZXNoDQo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4v bGlzdGluZm8vZWRrMi1kZXZlbA0K