From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eu-smtp-delivery-143.mimecast.com (eu-smtp-delivery-143.mimecast.com [146.101.78.143]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 1F8BA1A1E18 for ; Mon, 8 Aug 2016 04:06:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=hlpTC6uwEsN/W5Ul474J0J2o8iiukRsAIkFxSp+URhk=; b=Pd60u6U5h/MFWRfqTXYGh9o1siFKo6O2jQA/zm/IjURIHWS3XTj5XNUx3pStntJbz6l7B4Ylf473SznlSSWU1k2yEsFnQFN3p/c/89DJTVxrQIvI4DRaZDhch/Jh9dg7r8N07ab5mWQq8VlNqyd2dy9qdLE0q1QeMsWgwTPthXM= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp0143.outbound.protection.outlook.com [213.199.154.143]) (Using TLS) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-51-PCOkG98ePnWKBOPtaOingA-1; Mon, 08 Aug 2016 12:06:42 +0100 Received: from AM5PR0801MB1955.eurprd08.prod.outlook.com (10.168.157.151) by AM5PR0801MB1764.eurprd08.prod.outlook.com (10.169.247.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.549.15; Mon, 8 Aug 2016 11:06:38 +0000 Received: from AM5PR0801MB1955.eurprd08.prod.outlook.com ([10.168.157.151]) by AM5PR0801MB1955.eurprd08.prod.outlook.com ([10.168.157.151]) with mapi id 15.01.0549.025; Mon, 8 Aug 2016 11:06:38 +0000 From: Alexei Fedorov To: Ard Biesheuvel CC: Evan Lloyd , "Cohen, Eugene" , "edk2-devel@lists.01.org" , Heyi Guo , Leif Lindholm Thread-Topic: [edk2] [PATCH] ArmPkg: Fix double GIC EIOR write per interrupt Thread-Index: AQHR7zq3UpCuqC9RX0qeB/X+2RhBt6A7mYSAgANFQnCAAAMTgIAAAHUQgAAC8YCAAACUYIAAAK6AgAAAOPCAAAKGAIAAAGaQ Date: Mon, 8 Aug 2016 11:06:38 +0000 Message-ID: References: <20160805165911.14744-1-evan.lloyd@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [217.140.96.140] x-ms-office365-filtering-correlation-id: 6aa9ffa7-ae61-4807-5923-08d3bf7c11c9 x-microsoft-exchange-diagnostics: 1; AM5PR0801MB1764; 20:/9W6+Ybuo0seVZoP8KsojKb9f10J6ypl4wJoMGNuFPtEzLkptowDnPXTJpfXUEewaG02v3zUqamK5ICZazUoWip9MW+xhtxptiGPnfdQc/sZPcoN0GaInQXDaYFiSsLOTZFh+UxwXBqfvRhbqTzObQn33oT1+8iyo8VKVsd5T2M= x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1764; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(166708455590820)(162533806227266)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:AM5PR0801MB1764; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB1764; x-forefront-prvs: 00286C0CA6 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(7916002)(189002)(13464003)(199003)(24454002)(40434004)(10400500002)(7736002)(7846002)(7696003)(305945005)(6116002)(102836003)(3846002)(3280700002)(5002640100001)(105586002)(3660700001)(74316002)(586003)(81156014)(11100500001)(81166006)(86362001)(68736007)(122556002)(4326007)(93886004)(575784001)(8676002)(92566002)(8666005)(19580405001)(19580395003)(189998001)(2906002)(76576001)(8936002)(2900100001)(101416001)(106116001)(110136002)(66066001)(77096005)(9686002)(2950100001)(76176999)(15975445007)(87936001)(54356999)(33656002)(50986999)(5890100001)(97736004)(106356001)(7059030)(217873001)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0801MB1764; H:AM5PR0801MB1955.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Aug 2016 11:06:38.2898 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1764 X-MC-Unique: PCOkG98ePnWKBOPtaOingA-1 Subject: Re: [PATCH] ArmPkg: Fix double GIC EIOR write per interrupt X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Aug 2016 11:06:46 -0000 Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 VGltZXIncyBwZW5kaW5nIGludGVycnVwdCBpcyBjbGVhcmVkICBIQVJEV0FSRV9JTlRFUlJVUFRf SEFORExFUiBUaW1lckludGVycnVwdEhhbmRsZXIoKSAgaW4gd2hlbiB0aW1lciBpcyByZS1wcm9n cmFtbWVkIGZvciB0aGUgbmV4dCBzaG90Lg0KRG9lcyBpdCBtZWFuIHRoYXQgVGltZXJEeGUgZHJp dmVyIGlzIHBhcnQgRUZJX0hBUkRXQVJFX0lOVEVSUlVQVF9QUk9UT0NPTD8NCg0KLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEFyZCBCaWVzaGV1dmVsIFttYWlsdG86YXJkLmJpZXNo ZXV2ZWxAbGluYXJvLm9yZ10NClNlbnQ6IDA4IEF1Z3VzdCAyMDE2IDExOjU5DQpUbzogQWxleGVp IEZlZG9yb3YNCkNjOiBFdmFuIExsb3lkOyBDb2hlbiwgRXVnZW5lOyBlZGsyLWRldmVsQGxpc3Rz LjAxLm9yZzsgSGV5aSBHdW87IExlaWYgTGluZGhvbG0NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BB VENIXSBBcm1Qa2c6IEZpeCBkb3VibGUgR0lDIEVJT1Igd3JpdGUgcGVyIGludGVycnVwdA0KDQpP biA4IEF1Z3VzdCAyMDE2IGF0IDEyOjU2LCBBbGV4ZWkgRmVkb3JvdiA8QWxleGVpLkZlZG9yb3ZA YXJtLmNvbT4gd3JvdGU6DQo+IEkgcXVvdGVkOg0KPg0KPiAiVGhlIEhBUkRXQVJFX0lOVEVSUlVQ VF9IQU5ETEVSIGlzIHJlc3BvbnNpYmxlIGZvciBjbGVhcmluZyBpbnRlcnJ1cHQgc291cmNlcyBm cm9tIGluZGl2aWR1YWwgZGV2aWNlcyIuDQo+IEFyZSByZWFkaW5nIHRoaXMgYXMgIiBzcGVjIGNs ZWFybHkgc3RhdGVzIHRoYXQgaXQgaXMgdGhlIEdJQyBkcml2ZXIgdGhhdCBzaG91bGQgYmUgZG9p bmcgaXQiPw0KPg0KPiAgVGltZXJJbnRlcnJ1cHRIYW5kbGVyKCkgaXMgSEFSRFdBUkVfSU5URVJS VVBUX0hBTkRMRVIgYW5kIGl0IGNsZWFycyBpdHMgaW50ZXJydXB0IGJ5IGNhbGxpbmcgZ0ludGVy cnVwdC0+RW5kT2ZJbnRlcnJ1cHQoKS4NCj4NCg0KTm8sIEkgbWVhbiB0aGUgb3RoZXIgc2VudGVu Y2U6DQoNCj4+Pj4gICAuLi5UaGUgZHJpdmVyIGltcGxlbWVudGluZw0KPj4+PiAgIHRoaXMgcHJv dG9jb2wgaXMgcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nIHRoZSBwZW5kaW5nIGludGVycnVwdCBp biB0aGUNCj4+Pj4gICBpbnRlcnJ1cHQgcm91dGluZyBoYXJkd2FyZS4NCg0KVGhlIEdJQyBkcml2 ZXIgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgRW5kT2ZJbnRlcnJ1cHQoKSwgbm90IHRoZSBo YW5kbGVyLg0KDQotLQ0KQXJkLg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogQXJkIEJpZXNoZXV2ZWwgW21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0K PiBTZW50OiAwOCBBdWd1c3QgMjAxNiAxMTo0OQ0KPiBUbzogQWxleGVpIEZlZG9yb3YNCj4gQ2M6 IEV2YW4gTGxveWQ7IENvaGVuLCBFdWdlbmU7IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBIZXlp IEd1bzsgTGVpZiBMaW5kaG9sbQ0KPiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSF0gQXJtUGtn OiBGaXggZG91YmxlIEdJQyBFSU9SIHdyaXRlIHBlciBpbnRlcnJ1cHQNCj4NCj4gT24gOCBBdWd1 c3QgMjAxNiBhdCAxMjo0OCwgQWxleGVpIEZlZG9yb3YgPEFsZXhlaS5GZWRvcm92QGFybS5jb20+ IHdyb3RlOg0KPj4gUGxlYXNlIHByb3ZpZGUgdGhlIGxpbmsgdG8gdGhlIHNwZWMgd2hpY2ggImNs ZWFybHkgc3RhdGVzIHRoYXQgaXQgaXMgdGhlIEdJQyBkcml2ZXIgdGhhdCBzaG91bGQgYmUgZG9p bmcgaXQuIg0KPj4NCj4NCj4gaXQgaXMgbm90IGluIHRoZSBzcGVjLCBidXQgaW4gdGhlIGNvbW1l bnQgdGhhdCB5b3UgcXVvdGVkIHlvdXJzZWxmOg0KPg0KPj4+PiBMb29rcyBsaWtlIGl0IGRvZXMg bm90Og0KPj4+PiBGcm9tIGVkazJcRW1iZWRkZWRQa2dcSW5jbHVkZVxQcm90b2NvbFxIYXJkd2Fy ZUludGVycnVwdC5oOg0KPj4+Pg0KPj4+PiAiIEFic3RyYWN0aW9uIGZvciBoYXJkd2FyZSBiYXNl ZCBpbnRlcnJ1cHQgcm91dGluZQ0KPj4+Pg0KPj4+PiAgIC4uLlRoZSBkcml2ZXIgaW1wbGVtZW50 aW5nDQo+Pj4+ICAgdGhpcyBwcm90b2NvbCBpcyByZXNwb25zaWJsZSBmb3IgY2xlYXJpbmcgdGhl IHBlbmRpbmcgaW50ZXJydXB0IGluIHRoZQ0KPj4+PiAgIGludGVycnVwdCByb3V0aW5nIGhhcmR3 YXJlLiBUaGUgSEFSRFdBUkVfSU5URVJSVVBUX0hBTkRMRVIgaXMgcmVzcG9uc2libGUNCj4+Pj4g ICBmb3IgY2xlYXJpbmcgaW50ZXJydXB0IHNvdXJjZXMgZnJvbSBpbmRpdmlkdWFsIGRldmljZXMu Ig0KPg0KPiAtLQ0KPiBBcmQuDQo+DQo+DQo+DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwgW21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8u b3JnXQ0KPj4gU2VudDogMDggQXVndXN0IDIwMTYgMTE6NDUNCj4+IFRvOiBBbGV4ZWkgRmVkb3Jv dg0KPj4gQ2M6IEV2YW4gTGxveWQ7IENvaGVuLCBFdWdlbmU7IGVkazItZGV2ZWxAbGlzdHMuMDEu b3JnOyBIZXlpIEd1bzsgTGVpZiBMaW5kaG9sbQ0KPj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFU Q0hdIEFybVBrZzogRml4IGRvdWJsZSBHSUMgRUlPUiB3cml0ZSBwZXIgaW50ZXJydXB0DQo+Pg0K Pj4gT24gOCBBdWd1c3QgMjAxNiBhdCAxMjo0MCwgQWxleGVpIEZlZG9yb3YgPEFsZXhlaS5GZWRv cm92QGFybS5jb20+IHdyb3RlOg0KPj4+IFRoZSBpbnRlcnJ1cHQgaXMgY2xlYXJlZCBpbiBUaW1l ckludGVycnVwdEhhbmRsZXIoKSAoQXJtUGtnXERyaXZlcnNcVGltZXJEeGVcVGltZXJEeGUuYykg IHdoaWNoIGlzIEhBUkRXQVJFX0lOVEVSUlVQVF9IQU5ETEVSIHBhcmFtZXRlciBwYXNzZWQgdG8g Z0ludGVycnVwdC0+UmVnaXN0ZXJJbnRlcnJ1cHRTb3VyY2UoKS4NCj4+DQo+PiBJbmRlZWQuIFNv IG5vdywgdGhlIEhBUkRXQVJFX0lOVEVSUlVQVF9IQU5ETEVSIGlzIGNsZWFyaW5nIHRoZSBpbnRl cnJ1cHQgaW4gdGhlIGludGVycnVwdCByb3V0aW5nIGhhcmR3YXJlLCB3aGlsZSB0aGUgc3BlYyBj bGVhcmx5IHN0YXRlcyB0aGF0IGl0IGlzIHRoZSBHSUMgZHJpdmVyIHRoYXQgc2hvdWxkIGJlIGRv aW5nIGl0Lg0KPj4NCj4+DQo+Pj4gU3B1cmlvdXMgaW50ZXJydXB0cyB3aGljaCBkb24ndCBoYXZl IHJlZ2lzdGVyZWQgaW50ZXJydXB0IGhhbmRsZXJzIGFyZSBjbGVhcmVkIGluIEdpY1YoMnwzKUly cUludGVycnVwdEhhbmRsZXIoKS4NCj4+Pg0KPj4NCj4+IFllcywgdGhhdCBpcyBjb3JyZWN0IGFj Y29yZGluZyB0byB0aGUgdGV4dCB5b3UgcXVvdGVkLg0KPj4NCj4+IC0tDQo+PiBBcmQuDQo+Pg0K Pj4+DQo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+PiBGcm9tOiBBcmQgQmllc2hl dXZlbCBbbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmddDQo+Pj4gU2VudDogMDggQXVn dXN0IDIwMTYgMTE6MzINCj4+PiBUbzogQWxleGVpIEZlZG9yb3YNCj4+PiBDYzogRXZhbiBMbG95 ZDsgQ29oZW4sIEV1Z2VuZTsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IEhleWkgR3VvOyBMZWlm DQo+Pj4gTGluZGhvbG0NCj4+PiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSF0gQXJtUGtnOiBG aXggZG91YmxlIEdJQyBFSU9SIHdyaXRlIHBlcg0KPj4+IGludGVycnVwdA0KPj4+DQo+Pj4gT24g OCBBdWd1c3QgMjAxNiBhdCAxMjoyNSwgQWxleGVpIEZlZG9yb3YgPEFsZXhlaS5GZWRvcm92QGFy bS5jb20+IHdyb3RlOg0KPj4+Pg0KPj4+Pj4gaXQgZG9lcyBjaGFuZ2UgdGhlIGNvbnRyYWN0IHdl IGhhdmUgd2l0aCByZWdpc3RlcmVkIGludGVycnVwdA0KPj4+Pj4gaGFuZGxlcnMNCj4+Pj4NCj4+ Pj4gTG9va3MgbGlrZSBpdCBkb2VzIG5vdDoNCj4+Pj4gRnJvbSBlZGsyXEVtYmVkZGVkUGtnXElu Y2x1ZGVcUHJvdG9jb2xcSGFyZHdhcmVJbnRlcnJ1cHQuaDoNCj4+Pj4NCj4+Pj4gIiBBYnN0cmFj dGlvbiBmb3IgaGFyZHdhcmUgYmFzZWQgaW50ZXJydXB0IHJvdXRpbmUNCj4+Pj4NCj4+Pj4gICAu Li5UaGUgZHJpdmVyIGltcGxlbWVudGluZw0KPj4+PiAgIHRoaXMgcHJvdG9jb2wgaXMgcmVzcG9u c2libGUgZm9yIGNsZWFyaW5nIHRoZSBwZW5kaW5nIGludGVycnVwdCBpbiB0aGUNCj4+Pj4gICBp bnRlcnJ1cHQgcm91dGluZyBoYXJkd2FyZS4gVGhlIEhBUkRXQVJFX0lOVEVSUlVQVF9IQU5ETEVS IGlzIHJlc3BvbnNpYmxlDQo+Pj4+ICAgZm9yIGNsZWFyaW5nIGludGVycnVwdCBzb3VyY2VzIGZy b20gaW5kaXZpZHVhbCBkZXZpY2VzLiINCj4+Pj4NCj4+Pg0KPj4+IFRoYW5rcyBmb3IgZGlnZ2lu ZyB0aGF0IHVwIQ0KPj4+DQo+Pj4gU28gYWZ0ZXIgdGhpcyBjaGFuZ2UsIHRoZSBkcml2ZXIgaW1w bGVtZW50aW5nIHRoZSBoYXJkd2FyZSBpbnRlcnJ1cHQgcHJvdG9jb2wgbm8gbG9uZ2VyIGNsZWFy cyB0aGUgcGVuZGluZyBpbnRlcnJ1cHQgaW4gdGhlIGludGVycnVwdCByb3V0aW5nIGhhcmR3YXJl LiBUaGlzIG1lYW5zIHRoYXQgd2UgYXJlIG5vdCBvbmx5IGNoYW5naW5nIHRoZSBleGlzdGluZyBj b250cmFjdCwgd2UgYXJlIGFsc28gdmlvbGF0aW5nIHRoZSBzcGVjLg0KPj4+DQo+Pj4NCj4+Pj4N Cj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+Pj4gRnJvbTogZWRrMi1kZXZlbCBb bWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZg0KPj4+PiBP ZiBBcmQgQmllc2hldXZlbA0KPj4+PiBTZW50OiAwNiBBdWd1c3QgMjAxNiAwOToyNQ0KPj4+PiBU bzogRXZhbiBMbG95ZDsgQ29oZW4sIEV1Z2VuZQ0KPj4+PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4w MS5vcmc7IEhleWkgR3VvOyBMZWlmIExpbmRob2xtDQo+Pj4+IFN1YmplY3Q6IFJlOiBbZWRrMl0g W1BBVENIXSBBcm1Qa2c6IEZpeCBkb3VibGUgR0lDIEVJT1Igd3JpdGUgcGVyDQo+Pj4+IGludGVy cnVwdA0KPj4+Pg0KPj4+PiAoKyBFdWdlbmUpDQo+Pj4+DQo+Pj4+IE9uIDUgQXVndXN0IDIwMTYg YXQgMTg6NTksICA8ZXZhbi5sbG95ZEBhcm0uY29tPiB3cm90ZToNCj4+Pj4+IEZyb206IEFsZXhl aSA8QWxleGVpLkZlZG9yb3ZAYXJtLmNvbT4NCj4+Pj4+DQo+Pj4+PiBUaGlzIGNvbW1pdCBmaXhl cyBhIGJ1ZyBpbiB0aGUgR0lDIHYyIGFuZCB2MyBkcml2ZXJzIHdoZXJlIHRoZQ0KPj4+Pj4gR0lD Q19FT0lSIChFbmQgT2YgSW50ZXJydXB0IFJlZ2lzdGVyKSBpcyB3cml0dGVuIHR3aWNlIGZvciBh IHNpbmdsZSBpbnRlcnJ1cHQuDQo+Pj4+PiBHaWNWKDJ8MylJcnFJbnRlcnJ1cHRIYW5kbGVyKCkg Y2FsbHMgdGhlIEludGVycnVwdCBIYW5kbGVyIGFuZCB0aGVuDQo+Pj4+PiBHaWNWKDJ8MylFbmRP ZkludGVycnVwdCgpIG9uIGV4aXQ6DQo+Pj4+Pg0KPj4+Pj4gIEludGVycnVwdEhhbmRsZXIgPSBn UmVnaXN0ZXJlZEludGVycnVwdEhhbmRsZXJzW0dpY0ludGVycnVwdF07DQo+Pj4+PiAgaWYgKElu dGVycnVwdEhhbmRsZXIgIT0gTlVMTCkgew0KPj4+Pj4gICAgLy8gQ2FsbCB0aGUgcmVnaXN0ZXJl ZCBpbnRlcnJ1cHQgaGFuZGxlci4NCj4+Pj4+ICAgIEludGVycnVwdEhhbmRsZXIgKEdpY0ludGVy cnVwdCwgU3lzdGVtQ29udGV4dCk7ICB9IGVsc2Ugew0KPj4+Pj4gICAgREVCVUcgKChFRklfRF9F UlJPUiwgIlNwdXJpb3VzIEdJQyBpbnRlcnJ1cHQ6IDB4JXhcbiIsDQo+Pj4+PiBHaWNJbnRlcnJ1 cHQpKTsgIH0NCj4+Pj4+DQo+Pj4+PiAgR2ljVjJFbmRPZkludGVycnVwdCAoJmdIYXJkd2FyZUlu dGVycnVwdFYyUHJvdG9jb2wsIEdpY0ludGVycnVwdCk7DQo+Pj4+Pg0KPj4+Pj4gLCBhbHRob3Vn aCBnSW50ZXJydXB0LT5FbmRPZkludGVycnVwdCgpIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGJ5 DQo+Pj4+PiBJbnRlcnJ1cHRIYW5kbGVyKCkuDQo+Pj4+Pg0KPj4+Pj4gVGhlIGZpeCBtb3ZlcyB0 aGUgRW5kT2ZJbnRlcnJ1cHQoKSBjYWxsIGluc2lkZSB0aGUgZWxzZSBjYXNlIGZvcg0KPj4+Pj4g dW5yZWdpc3RlcmVkL3NwdXJpb3VzIGludGVycnVwdHMuICBUaGlzIHJlbW92ZXMgYSBwb3RlbnRp YWwgcmFjZQ0KPj4+Pj4gY29uZGl0aW9uIHRoYXQgbWlnaHQgaGF2ZSBsb3N0IGludGVycnVwdHMu DQo+Pj4+Pg0KPj4+Pg0KPj4+PiBJIHVuZGVyc3RhbmQgdGhhdCB0aGlzIHNvbHZlcyB0aGUgcHJv YmxlbSwgYnV0IGl0IGRvZXMgY2hhbmdlIHRoZSBjb250cmFjdCB3ZSBoYXZlIHdpdGggcmVnaXN0 ZXJlZCBpbnRlcnJ1cHQgaGFuZGxlcnMsIGFuZCB3ZSBkb24ndCBrbm93IGhvdyB0aGlzIG1heSBi ZSB1c2VkIG91dCBvZiB0cmVlLiBJIGtub3cgVUVGSSBvbmx5IHN1cHBvcnRzIHBvbGxpbmcgZm9y IGRyaXZlcnMsIGJ1dCBhcmUgdGhlcmUgYW55IG90aGVyIGNhc2VzIChkZWJ1Zz8pIHdoZXJlIHdl IG1heSBicmVhayBvdGhlciBwZW9wbGUncyBjb2RlIGJ5IGRvaW5nIHRoaXM/DQo+Pj4+DQo+Pj4+ DQo+Pj4+PiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1l bnQgMS4wDQo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBBbGV4ZWkgRmVkb3JvdiA8YWxleGVpLmZlZG9y b3ZAYXJtLmNvbT4NCj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEV2YW4gTGxveWQgPGV2YW4ubGxveWRA YXJtLmNvbT4NCj4+Pj4+IC0tLQ0KPj4+Pj4NCj4+Pj4+IENvZGUgaXMgYXZhaWxhYmxlIGF0Og0K Pj4+Pj4gaHR0cHM6Ly9naXRodWIuY29tL0V2YW5MbG95ZC90aWFub2NvcmUvdHJlZS9FT0lSX3Yx DQo+Pj4+Pg0KPj4+Pj4gIEFybVBrZy9Ecml2ZXJzL0FybUdpYy9HaWNWMi9Bcm1HaWNWMkR4ZS5j IHwgNSArKy0tLQ0KPj4+Pj4gQXJtUGtnL0RyaXZlcnMvQXJtR2ljL0dpY1YzL0FybUdpY1YzRHhl LmMgfCA1ICsrLS0tDQo+Pj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pDQo+Pj4+Pg0KPj4+Pj4gZGlmZiAtLWdpdCBhL0FybVBrZy9Ecml2ZXJzL0Fy bUdpYy9HaWNWMi9Bcm1HaWNWMkR4ZS5jDQo+Pj4+PiBiL0FybVBrZy9Ecml2ZXJzL0FybUdpYy9H aWNWMi9Bcm1HaWNWMkR4ZS5jDQo+Pj4+PiBpbmRleA0KPj4+Pj4gMDM2ZWI1Y2Q2YmY2ODQ1ZGQy YjAzYjYyYzkzM2MxZGVkYWVmNzI1MS4uMzRkNGJlMzg2NzY0N2UwZmRhZDczNTZjOTQNCj4+Pj4+ IDkNCj4+Pj4+IGENCj4+Pj4+IGY4Y2QzZWRlNzE2NCAxMDA2NDQNCj4+Pj4+IC0tLSBhL0FybVBr Zy9Ecml2ZXJzL0FybUdpYy9HaWNWMi9Bcm1HaWNWMkR4ZS5jDQo+Pj4+PiArKysgYi9Bcm1Qa2cv RHJpdmVycy9Bcm1HaWMvR2ljVjIvQXJtR2ljVjJEeGUuYw0KPj4+Pj4gQEAgLTIsNyArMiw3IEBA DQo+Pj4+Pg0KPj4+Pj4gIENvcHlyaWdodCAoYykgMjAwOSwgSGV3bGV0dC1QYWNrYXJkIENvbXBh bnkuIEFsbCByaWdodHMNCj4+Pj4+IHJlc2VydmVkLjxCUj4gUG9ydGlvbnMgY29weXJpZ2h0IChj KSAyMDEwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMNCj4+Pj4+IHJlc2VydmVkLjxCUj4gLVBvcnRp b25zIGNvcHlyaWdodCAoYykgMjAxMS0yMDE1LCBBUk0gTHRkLiBBbGwgcmlnaHRzDQo+Pj4+PiBy ZXNlcnZlZC48QlI+DQo+Pj4+PiArUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDExLTIwMTYsIEFS TSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4+Pj4NCj4+Pj4+ICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICBhcmUgbGljZW5zZWQgYW5kIG1hZGUN Cj4+Pj4+IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJT RCBMaWNlbnNlIEBADQo+Pj4+PiAtMTc4LDkNCj4+Pj4+ICsxNzgsOCBAQCBHaWNWMklycUludGVy cnVwdEhhbmRsZXIgKA0KPj4+Pj4gICAgICBJbnRlcnJ1cHRIYW5kbGVyIChHaWNJbnRlcnJ1cHQs IFN5c3RlbUNvbnRleHQpOw0KPj4+Pj4gICAgfSBlbHNlIHsNCj4+Pj4+ICAgICAgREVCVUcgKChF RklfRF9FUlJPUiwgIlNwdXJpb3VzIEdJQyBpbnRlcnJ1cHQ6IDB4JXhcbiIsDQo+Pj4+PiBHaWNJ bnRlcnJ1cHQpKTsNCj4+Pj4+ICsgICAgR2ljVjJFbmRPZkludGVycnVwdCAoJmdIYXJkd2FyZUlu dGVycnVwdFYyUHJvdG9jb2wsDQo+Pj4+PiArIEdpY0ludGVycnVwdCk7DQo+Pj4+PiAgICB9DQo+ Pj4+PiAtDQo+Pj4+PiAtICBHaWNWMkVuZE9mSW50ZXJydXB0ICgmZ0hhcmR3YXJlSW50ZXJydXB0 VjJQcm90b2NvbCwNCj4+Pj4+IEdpY0ludGVycnVwdCk7IH0NCj4+Pj4+DQo+Pj4+PiAgLy8NCj4+ Pj4+IGRpZmYgLS1naXQgYS9Bcm1Qa2cvRHJpdmVycy9Bcm1HaWMvR2ljVjMvQXJtR2ljVjNEeGUu Yw0KPj4+Pj4gYi9Bcm1Qa2cvRHJpdmVycy9Bcm1HaWMvR2ljVjMvQXJtR2ljVjNEeGUuYw0KPj4+ Pj4gaW5kZXgNCj4+Pj4+IDEwNmM2NjlmY2I4Nzc3ZGZhYWQ2MDljMGNlOWY1YjU3MjcyN2EzZmYu Ljk4MzkzNmYzNzM4YTc0YmI1ZDVlMDhlMDEyDQo+Pj4+PiA5DQo+Pj4+PiA3DQo+Pj4+PiAzZGYy NDA5NThhOGIgMTAwNjQ0DQo+Pj4+PiAtLS0gYS9Bcm1Qa2cvRHJpdmVycy9Bcm1HaWMvR2ljVjMv QXJtR2ljVjNEeGUuYw0KPj4+Pj4gKysrIGIvQXJtUGtnL0RyaXZlcnMvQXJtR2ljL0dpY1YzL0Fy bUdpY1YzRHhlLmMNCj4+Pj4+IEBAIC0xLDYgKzEsNiBAQA0KPj4+Pj4gIC8qKiBAZmlsZQ0KPj4+ Pj4gICoNCj4+Pj4+IC0qICBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxNSwgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+Pj4+PiArKiAgQ29weXJpZ2h0IChjKSAyMDExLTIwMTYsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPj4+Pj4gICoNCj4+Pj4+ICAqICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+Pj4+PiAgKiAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMN Cj4+Pj4+IG9mIHRoZSBCU0QgTGljZW5zZSBAQCAtMTY5LDkgKzE2OSw4IEBAIEdpY1YzSXJxSW50 ZXJydXB0SGFuZGxlciAoDQo+Pj4+PiAgICAgIEludGVycnVwdEhhbmRsZXIgKEdpY0ludGVycnVw dCwgU3lzdGVtQ29udGV4dCk7DQo+Pj4+PiAgICB9IGVsc2Ugew0KPj4+Pj4gICAgICBERUJVRyAo KEVGSV9EX0VSUk9SLCAiU3B1cmlvdXMgR0lDIGludGVycnVwdDogMHgleFxuIiwNCj4+Pj4+IEdp Y0ludGVycnVwdCkpOw0KPj4+Pj4gKyAgICBHaWNWM0VuZE9mSW50ZXJydXB0ICgmZ0hhcmR3YXJl SW50ZXJydXB0VjNQcm90b2NvbCwNCj4+Pj4+ICsgR2ljSW50ZXJydXB0KTsNCj4+Pj4+ICAgIH0N Cj4+Pj4+IC0NCj4+Pj4+IC0gIEdpY1YzRW5kT2ZJbnRlcnJ1cHQgKCZnSGFyZHdhcmVJbnRlcnJ1 cHRWM1Byb3RvY29sLA0KPj4+Pj4gR2ljSW50ZXJydXB0KTsgfQ0KPj4+Pj4NCj4+Pj4+ICAvLw0K Pj4+Pj4gLS0NCj4+Pj4+IEd1aWQoIkNFMTY1NjY5LTNFRjMtNDkzRi1CODVELTYxOTBFRTVCOTc1 OSIpDQo+Pj4+Pg0KPj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KPj4+PiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPj4+PiBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZw0KPj4+PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Vk azItZGV2ZWwNCj4+Pj4NCj4+Pj4gSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRo aXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxz byBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBw bGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0 aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwg b3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91 Lg0KPj4+Pg0KPj4+DQo+Pj4gSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMg ZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBi ZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVh c2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUg Y29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Ig c3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0K Pj4NCj4+IElNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBh bnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdl ZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0 aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRv IGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNv cHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCj4NCj4gSU1QT1JU QU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50 cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJl IG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1t ZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBl cnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3Jt YXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0KDQpJTVBPUlRBTlQgTk9USUNFOiBUaGUg Y29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRp YWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRl ZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8g bm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9y IGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVk aXVtLiBUaGFuayB5b3UuDQo=