From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 7D67D81F90 for ; Thu, 15 Dec 2016 00:31:32 -0800 (PST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga104.fm.intel.com with ESMTP; 15 Dec 2016 00:31:31 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,351,1477983600"; d="scan'208";a="1082101846" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga001.fm.intel.com with ESMTP; 15 Dec 2016 00:31:31 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 15 Dec 2016 00:31:31 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.11]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.235]) with mapi id 14.03.0248.002; Thu, 15 Dec 2016 16:31:29 +0800 From: "Bi, Dandan" To: Ard Biesheuvel , "Ni, Ruiyu" CC: "edk2-devel@lists.01.org" Thread-Topic: [patch 1/2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions Thread-Index: AQHSVqc+P0gI+UIP0EmCN7xsdYwRzKEIrYIA Date: Thu, 15 Dec 2016 08:31:28 +0000 Message-ID: <3C0D5C461C9E904E8F62152F6274C0BB3B85B67B@SHSMSX103.ccr.corp.intel.com> References: <1481785892-107244-1-git-send-email-dandan.bi@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [patch 1/2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions 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: Thu, 15 Dec 2016 08:31:32 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 WWVzLCBJIHdpbGwgZG8gdGhlIGVuaGFuY2VtZW50cyBiYXNlIG9uIHRoZSBsYXRlc3QgY29kZXMg YW5kIHJlLXNlbmQgcGF0Y2hlcy4NCg0KVGhhbmtzLA0KRGFuZGFuDQoNCi0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQpGcm9tOiBBcmQgQmllc2hldXZlbCBbbWFpbHRvOmFyZC5iaWVzaGV1dmVs QGxpbmFyby5vcmddIA0KU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDE1LCAyMDE2IDM6NDYgUE0N ClRvOiBCaSwgRGFuZGFuIDxkYW5kYW4uYmlAaW50ZWwuY29tPjsgTmksIFJ1aXl1IDxydWl5dS5u aUBpbnRlbC5jb20+DQpDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNClN1YmplY3Q6IFJlOiBb cGF0Y2ggMS8yXSBNZGVNb2R1bGVQa2cvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlOiBBZGQg Y29tbWVudHMgZm9yIGZ1bmN0aW9ucw0KDQpIZWxsbyBEYW5kYW4sDQoNClRoYW5rIHlvdSBmb3Ig ZG9pbmcgdGhpcyB3b3JrLiBJIGFtIGhhcHB5IGZvciB0aGVzZSBjaGFuZ2VzIHRvIGdvIGluLg0K DQpIb3dldmVyLCBJIGhhdmUgYSBwYXRjaCBwZW5kaW5nIHRvIGltcGxlbWVudCBub24tY29oZXJl bnQgRE1BIHN1cHBvcnQsIGFuZCBSYXkgaGFzIG5vdCByZXNwb25kZWQgdG8gdGhhdCB5ZXQuIFRo ZXNlIGNoYW5nZXMgd2lsbCBsaWtlbHkgY29uZmxpY3Qgd2l0aCB0aGF0IHBhdGNoLCBzbyBjb3Vs ZCB3ZSBwbGVhc2UgZ2V0IHRoZSBmdW5jdGlvbmFsaXR5IGNvbXBsZXRlZCBmaXJzdCBiZWZvcmUg d29ya2luZyBvbiBlbmhhbmNlbWVudHMgbGlrZSB0aGlzPw0KDQpSYXk/DQoNClRoYW5rcywNCkFy ZC4NCg0KDQpPbiAxNSBEZWNlbWJlciAyMDE2IGF0IDA3OjExLCBEYW5kYW4gQmkgPGRhbmRhbi5i aUBpbnRlbC5jb20+IHdyb3RlOg0KPiBDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVs QGxpbmFyby5vcmc+DQo+IENjOiBSdWl5dSBOaSA8cnVpeXUubmlAaW50ZWwuY29tPg0KPiBDb250 cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4wDQo+IFNp Z25lZC1vZmYtYnk6IERhbmRhbiBCaSA8ZGFuZGFuLmJpQGludGVsLmNvbT4NCj4gLS0tDQo+ICAu Li4vTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlL0NvbXBvbmVudE5hbWUuYyAgICB8ICA0NyAr KysrDQo+ICAuLi4vTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlLmMgICAgICAgICAgICAgICAg ICB8ICA1MCArKystDQo+ICAuLi4vTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlLmluZiAgICAg ICAgICAgICAgICB8ICAxOCArLQ0KPiAgLi4uL05vbkRpc2NvdmVyYWJsZVBjaURldmljZUlvLmMg ICAgICAgICAgICAgICAgICAgfCAyOTggKysrKysrKysrKysrKysrKysrKystDQo+ICAuLi4vTm9u RGlzY292ZXJhYmxlUGNpRGV2aWNlSW8uaCAgICAgICAgICAgICAgICAgICB8ICAgNiArDQo+ICA1 IGZpbGVzIGNoYW5nZWQsIDQwNSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkNCj4NCj4g ZGlmZiAtLWdpdCANCj4gYS9NZGVNb2R1bGVQa2cvQnVzL1BjaS9Ob25EaXNjb3ZlcmFibGVQY2lE ZXZpY2VEeGUvQ29tcG9uZW50TmFtZS5jIA0KPiBiL01kZU1vZHVsZVBrZy9CdXMvUGNpL05vbkRp c2NvdmVyYWJsZVBjaURldmljZUR4ZS9Db21wb25lbnROYW1lLmMNCj4gaW5kZXggNmU1MWQwMC4u MGU2ZWJlYyAxMDA2NDQNCj4gLS0tIGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292ZXJh YmxlUGNpRGV2aWNlRHhlL0NvbXBvbmVudE5hbWUuYw0KPiArKysgYi9NZGVNb2R1bGVQa2cvQnVz L1BjaS9Ob25EaXNjb3ZlcmFibGVQY2lEZXZpY2VEeGUvQ29tcG9uZW50TmFtZS5jDQo+IEBAIC0y OCwxMCArMjgsMzEgQEAgRUZJX1VOSUNPREVfU1RSSU5HX1RBQkxFIG1Ecml2ZXJOYW1lVGFibGVb XSA9IHsNCj4gICAgeyBOVUxMLCAgICAgTlVMTCAgICAgICAgICAgICAgICAgICB9DQo+ICB9Ow0K Pg0KPiAgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MIGdDb21wb25lbnROYW1lOw0KPg0KPiAr LyoqDQo+ICsgIFJldHJpZXZlcyBhIFVuaWNvZGUgc3RyaW5nIHRoYXQgaXMgdGhlIHVzZXIgcmVh ZGFibGUgbmFtZSBvZiB0aGUgVUVGSSBEcml2ZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFRoaXMgICAg ICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MIGluc3Rh bmNlLg0KPiArICBAcGFyYW0gTGFuZ3VhZ2UgICAgICAgQSBwb2ludGVyIHRvIGEgdGhyZWUgY2hh cmFjdGVyIElTTyA2MzktMiBsYW5ndWFnZSBpZGVudGlmaWVyLg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgVGhpcyBpcyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGRyaXZlciBuYW1lIHRoYXQgdGhh dCB0aGUgY2FsbGVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpcyByZXF1ZXN0aW5nLCBh bmQgaXQgbXVzdCBtYXRjaCBvbmUgb2YgdGhlIGxhbmd1YWdlcyBzcGVjaWZpZWQNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGluIFN1cHBvcnRlZExhbmd1YWdlcy4gIFRoZSBudW1iZXIgb2Yg bGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBhDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBkcml2 ZXIgaXMgdXAgdG8gdGhlIGRyaXZlciB3cml0ZXIuDQo+ICsgIEBwYXJhbSBEcml2ZXJOYW1lICAg ICBBIHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgc3RyaW5nIHRvIHJldHVybi4gIFRoaXMgVW5pY29k ZSBzdHJpbmcNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBuYW1lIG9mIHRoZSBk cml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaW4gdGhlIGxhbmd1YWdlDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2UuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgVGhlIFVuaWNvZGUgc3RyaW5nIGZvciB0aGUgRHJpdmVyIHNwZWNp ZmllZCBieSBUaGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUg bGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlIHdhcyByZXR1cm5lZA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbiBEcml2ZXJOYW1lLg0KPiArICBAcmV0dmFsIEVGSV9J TlZBTElEX1BBUkFNRVRFUiBMYW5ndWFnZSBpcyBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBEcml2ZXJOYW1lIGlzIE5VTEwuDQo+ICsgIEByZXR2YWwgRUZJX1VOU1VQ UE9SVEVEICAgICAgIFRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgZG9lcyBub3Qgc3VwcG9y dCB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2Ugc3BlY2lm aWVkIGJ5IExhbmd1YWdlLg0KPiArKiovDQo+ICBTVEFUSUMNCj4gIEVGSV9TVEFUVVMNCj4gIEVG SUFQSQ0KPiAgTm9uRGlzY292ZXJhYmxlUGNpR2V0RHJpdmVyTmFtZSAoDQo+ICAgIElOICBFRklf Q09NUE9ORU5UX05BTUVfUFJPVE9DT0wgKlRoaXMsIEBAIC00NiwxMCArNjcsMzYgQEAgDQo+IE5v bkRpc2NvdmVyYWJsZVBjaUdldERyaXZlck5hbWUgKA0KPiAgICAgICAgICAgICBEcml2ZXJOYW1l LA0KPiAgICAgICAgICAgICAoQk9PTEVBTikoVGhpcyA9PSAmZ0NvbXBvbmVudE5hbWUpIC8vIElz bzYzOUxhbmd1YWdlDQo+ICAgICAgICAgICAgICk7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAgUmV0 cmlldmVzIGEgVW5pY29kZSBzdHJpbmcgdGhhdCBpcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9m IHRoZSANCj4gK2NvbnRyb2xsZXINCj4gKyAgdGhhdCBpcyBiZWluZyBtYW5hZ2VkIGJ5IGFuIFVF RkkgRHJpdmVyLg0KPiArDQo+ICsgIEBwYXJhbSBUaGlzICAgICAgICAgICAgICAgICAgIEEgcG9p bnRlciB0byB0aGUgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBA cGFyYW0gRGV2aWNlSGFuZGxlICAgICAgICAgICBUaGUgaGFuZGxlIG9mIGEgY29udHJvbGxlciB0 aGF0IHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRoaXMgaXMgbWFuYWdpbmcuICBUaGlzIGhhbmRsZSBzcGVjaWZpZXMgdGhlIGNvbnRy b2xsZXINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvc2UgbmFtZSBpcyB0 byBiZSByZXR1cm5lZC4NCj4gKyAgQHBhcmFtIENoaWxkSGFuZGxlICAgICAgICAgICAgVGhlIGhh bmRsZSBvZiB0aGUgY2hpbGQgY29udHJvbGxlciB0byByZXRyaWV2ZSB0aGUgbmFtZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZi4gIFRoaXMgaXMgYW4gb3B0aW9uYWwgcGFy YW1ldGVyIHRoYXQgbWF5IGJlIE5VTEwuICBJdA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3aWxsIGJlIE5VTEwgZm9yIGRldmljZSBkcml2ZXJzLiAgSXQgd2lsbCBhbHNvIGJl IE5VTEwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgYnVzIGRyaXZl cnMgdGhhdCB3aXNoIHRvIHJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBidXMgY29udHJvbGxlci4gIEl0IHdpbGwgbm90IGJlIE5VTEwg Zm9yIGEgYnVzIGRyaXZlcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0 IHdpc2hlcyB0byByZXRyaWV2ZSB0aGUgbmFtZSBvZiBhIGNoaWxkIGNvbnRyb2xsZXIuDQo+ICsg IEBwYXJhbSBMYW5ndWFnZSAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byBhIHRocmVlIGNoYXJh Y3RlciBJU08gNjM5LTIgbGFuZ3VhZ2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWRlbnRpZmllci4gIFRoaXMgaXMgdGhlIGxhbmd1YWdlIG9mIHRoZSBjb250cm9sbGVyIG5h bWUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGF0IHRoZSBjYWxs ZXIgaXMgcmVxdWVzdGluZywgYW5kIGl0IG11c3QgbWF0Y2ggb25lDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsYW5ndWFnZXMgc3BlY2lmaWVkIGluIFN1cHBvcnRl ZExhbmd1YWdlcy4gIFRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1i ZXIgb2YgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBhIGRyaXZlciBpcyB1cCB0byB0aGUNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIHdyaXRlci4NCj4gKyAgQHBhcmFt IENvbnRyb2xsZXJOYW1lICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIHN0cmluZyB0 byByZXR1cm4uICBUaGlzIFVuaWNvZGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RyaW5nIGlzIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sbGVyIHNwZWNpZmllZCBieQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlIGFuZCBDaGls ZEhhbmRsZSBpbiB0aGUgbGFuZ3VhZ2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3BlY2lmaWVkIGJ5IExhbmd1YWdlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhp cy4NCj4gKyoqLw0KPiAgU1RBVElDDQo+ICBFRklfU1RBVFVTDQo+ICBFRklBUEkNCj4gIE5vbkRp c2NvdmVyYWJsZVBjaUdldERldmljZU5hbWUgKA0KPiAgICBJTiAgRUZJX0NPTVBPTkVOVF9OQU1F X1BST1RPQ09MICpUaGlzLCBkaWZmIC0tZ2l0IA0KPiBhL01kZU1vZHVsZVBrZy9CdXMvUGNpL05v bkRpc2NvdmVyYWJsZVBjaURldmljZUR4ZS9Ob25EaXNjb3ZlcmFibGVQY2lEDQo+IGV2aWNlRHhl LmMgDQo+IGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhl L05vbkRpc2NvdmVyYWJsZVBjaUQNCj4gZXZpY2VEeGUuYw0KPiBpbmRleCBlZTc2NWQ3Li5hODY4 ZWEyIDEwMDY0NA0KPiAtLS0gDQo+IGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292ZXJh YmxlUGNpRGV2aWNlRHhlL05vbkRpc2NvdmVyYWJsZVBjaUQNCj4gZXZpY2VEeGUuYw0KPiArKysg Yi9NZGVNb2R1bGVQa2cvQnVzL1BjaS9Ob25EaXNjb3ZlcmFibGVQY2lEZXZpY2VEeGUvTm9uRGlz Y292ZXJhYmxlDQo+ICsrKyBQY2lEZXZpY2VEeGUuYw0KPiBAQCAtNDUsMTAgKzQ1LDIzIEBAIFN1 cHBvcnRlZE5vbkRpc2NvdmVyYWJsZURldmljZXMgW10gPSB7DQo+ICAvLyAgIC0gNS4xLjMuNCBP cGVuUHJvdG9jb2woKSBhbmQgQ2xvc2VQcm90b2NvbCgpDQo+ICAvLyAtIFVFRkkgU3BlYyAyLjMu MSArIEVycmF0YSBDDQo+ICAvLyAgIC0gIDYuMyBQcm90b2NvbCBIYW5kbGVyIFNlcnZpY2VzDQo+ ICAvLw0KPg0KPiArLyoqDQo+ICsgIFN1cHBvcnRlZCBmdW5jdGlvbiBvZiBEcml2ZXIgQmluZGlu ZyBwcm90b2NvbCBmb3IgdGhpcyBkcml2ZXIuDQo+ICsgIFRlc3QgdG8gc2VlIGlmIHRoaXMgZHJp dmVyIHN1cHBvcnRzIENvbnRyb2xsZXJIYW5kbGUuDQo+ICsNCj4gKyAgQHBhcmFtIFRoaXMgICAg ICAgICAgICAgICAgICAgUHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCj4gKyAgQHBhcmFtIERl dmljZUhhbmRsZSAgICAgICAgICAgSGFuZGxlIG9mIGRldmljZSB0byB0ZXN0Lg0KPiArICBAcGFy YW0gUmVtYWluaW5nRGV2aWNlUGF0aCAgICBBIHBvaW50ZXIgdG8gdGhlIGRldmljZSBwYXRoLg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBzaG91bGQgYmUgaWdub3JlZCBi eSBkZXZpY2UgZHJpdmVyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoaXMgZGV2aWNlLg0KPiArICBAcmV0dmFsIG90aGVyICAg ICAgICAgICAgICAgICBUaGlzIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgZGV2aWNlLg0K PiArDQo+ICsqKi8NCj4gIFNUQVRJQw0KPiAgRUZJX1NUQVRVUw0KPiAgRUZJQVBJDQo+ICBOb25E aXNjb3ZlcmFibGVQY2lEZXZpY2VTdXBwb3J0ZWQgKA0KPiAgICBJTiBFRklfRFJJVkVSX0JJTkRJ TkdfUFJPVE9DT0wgKlRoaXMsIEBAIC0xMDYsMTAgKzExOSwyMyBAQCANCj4gQ2xvc2VQcm90b2Nv bDoNCj4gICAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsIERldmljZUhhbmRsZSk7 DQo+DQo+ICAgIHJldHVybiBTdGF0dXM7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAgVGhpcyByb3V0 aW5lIGlzIGNhbGxlZCByaWdodCBhZnRlciB0aGUgLlN1cHBvcnRlZCgpIGNhbGxlZCBhbmQNCj4g KyAgU3RhcnQgdGhpcyBkcml2ZXIgb24gQ29udHJvbGxlckhhbmRsZS4NCj4gKw0KPiArICBAcGFy YW0gVGhpcyAgICAgICAgICAgICAgICAgICBQcm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KPiAr ICBAcGFyYW0gRGV2aWNlSGFuZGxlICAgICAgICAgICBIYW5kbGUgb2YgZGV2aWNlIHRvIGJpbmQg ZHJpdmVyIHRvLg0KPiArICBAcGFyYW0gUmVtYWluaW5nRGV2aWNlUGF0aCAgICBBIHBvaW50ZXIg dG8gdGhlIGRldmljZSBwYXRoLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp dCBzaG91bGQgYmUgaWdub3JlZCBieSBkZXZpY2UgZHJpdmVyLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoaXMgZHJpdmVyIGlzIGFkZGVkIHRvIHRoaXMgZGV2aWNl Lg0KPiArICBAcmV0dmFsIG90aGVyICAgICAgICAgICAgICAgICBTb21lIGVycm9yIG9jY3VycyB3 aGVuIGJpbmRpbmcgdGhpcyBkcml2ZXIgdG8gdGhpcyBkZXZpY2UuDQo+ICsNCj4gKyoqLw0KPiAg U1RBVElDDQo+ICBFRklfU1RBVFVTDQo+ICBFRklBUEkNCj4gIE5vbkRpc2NvdmVyYWJsZVBjaURl dmljZVN0YXJ0ICgNCj4gICAgSU4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICpUaGlzLCBA QCAtMTU2LDExICsxODIsMjIgQEAgDQo+IEZyZWVEZXY6DQo+ICAgIEZyZWVQb29sIChEZXYpOw0K Pg0KPiAgICByZXR1cm4gU3RhdHVzOw0KPiAgfQ0KPg0KPiArLyoqDQo+ICsgIFN0b3AgdGhpcyBk cml2ZXIgb24gQ29udHJvbGxlckhhbmRsZS4NCj4gKw0KPiArICBAcGFyYW0gVGhpcyAgICAgICAg ICAgICAgIFByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQo+ICsgIEBwYXJhbSBEZXZpY2VIYW5k bGUgICAgICAgSGFuZGxlIG9mIGRldmljZSB0byBzdG9wIGRyaXZlciBvbi4NCj4gKyAgQHBhcmFt IE51bWJlck9mQ2hpbGRyZW4gICBOb3QgdXNlZC4NCj4gKyAgQHBhcmFtIENoaWxkSGFuZGxlQnVm ZmVyICBOb3QgdXNlZC4NCj4NCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFRoaXMgZHJpdmVy IGlzIHJlbW92ZWQgZnJvbSB0aGlzIGRldmljZS4NCj4gKyAgQHJldHZhbCBvdGhlciAgICAgICAg IFNvbWUgZXJyb3Igb2NjdXJzIHdoZW4gcmVtb3ZpbmcgdGhpcyBkcml2ZXIgZnJvbSB0aGlzIGRl dmljZS4NCj4gKw0KPiArKiovDQo+ICBTVEFUSUMNCj4gIEVGSV9TVEFUVVMNCj4gIEVGSUFQSQ0K PiAgTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlU3RvcCAoDQo+ICAgIElOIEVGSV9EUklWRVJfQklO RElOR19QUk9UT0NPTCAqVGhpcywgQEAgLTIxMiwxMyArMjQ5LDIwIEBAIFNUQVRJQyANCj4gRUZJ X0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MIGdEcml2ZXJCaW5kaW5nID0gew0KPiAgICAweDEwLCAv LyBWZXJzaW9uLCBtdXN0IGJlIGluIFsweDEwIC4uIDB4RkZGRkZGRUZdIGZvciBJSFYtZGV2ZWxv cGVkIGRyaXZlcnMNCj4gICAgTlVMTCwNCj4gICAgTlVMTA0KPiAgfTsNCj4NCj4gLS8vDQo+IC0v LyBFbnRyeSBwb2ludCBvZiB0aGlzIGRyaXZlci4NCj4gLS8vDQo+ICsvKioNCj4gKyAgRW50cnkg cG9pbnQgb2YgdGhpcyBkcml2ZXIuDQo+ICsNCj4gKyAgQHBhcmFtICBJbWFnZUhhbmRsZSAgICAg SW1hZ2UgaGFuZGxlIHRoaXMgZHJpdmVyLg0KPiArICBAcGFyYW0gIFN5c3RlbVRhYmxlICAgICBQ b2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgVGhlIGVudHJ5IHBvaW50IGlzIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJl dHZhbCBvdGhlciAgICAgICAgICAgU29tZSBlcnJvciBvY2N1cnJlZCB3aGVuIGV4ZWN1dGluZyB0 aGlzIGVudHJ5IHBvaW50Lg0KPiArDQo+ICsqKi8NCj4gIEVGSV9TVEFUVVMNCj4gIEVGSUFQSQ0K PiAgTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlRW50cnlQb2ludCAoDQo+ICAgIElOIEVGSV9I QU5ETEUgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICAgIElOIEVGSV9TWVNURU1fVEFCTEUgKlN5c3Rl bVRhYmxlDQo+IGRpZmYgLS1naXQgDQo+IGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292 ZXJhYmxlUGNpRGV2aWNlRHhlL05vbkRpc2NvdmVyYWJsZVBjaUQNCj4gZXZpY2VEeGUuaW5mIA0K PiBiL01kZU1vZHVsZVBrZy9CdXMvUGNpL05vbkRpc2NvdmVyYWJsZVBjaURldmljZUR4ZS9Ob25E aXNjb3ZlcmFibGVQY2lEDQo+IGV2aWNlRHhlLmluZg0KPiBpbmRleCA5OTZmZTMxLi42ZDNmNzIx IDEwMDY0NA0KPiAtLS0gDQo+IGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292ZXJhYmxl UGNpRGV2aWNlRHhlL05vbkRpc2NvdmVyYWJsZVBjaUQNCj4gZXZpY2VEeGUuaW5mDQo+ICsrKyBi L01kZU1vZHVsZVBrZy9CdXMvUGNpL05vbkRpc2NvdmVyYWJsZVBjaURldmljZUR4ZS9Ob25EaXNj b3ZlcmFibGUNCj4gKysrIFBjaURldmljZUR4ZS5pbmYNCj4gQEAgLTEsNiArMSw4IEBADQo+ICAj IyBAZmlsZQ0KPiArIyBQQ0kgSS9PIGRyaXZlciBmb3Igbm9uLWRpc2NvdmVyYWJsZSBkZXZpY2Vz Lg0KPiArIw0KPiAgIyBDb3B5cmlnaHQgKEMpIDIwMTYsIExpbmFybyBMdGQuDQo+ICAjDQo+ICAj IFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIA0KPiBhdmFpbGFibGUgICMgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCANCj4gYWNjb21wYW5pZXMgdGhpcyAgIyBkaXN0cmli dXRpb24uIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIA0KPiBmb3VuZCBhdCBA QCAtNDAsMTMgKzQyLDEzIEBAIFtMaWJyYXJ5Q2xhc3Nlc10gIFtQcm90b2NvbHNdDQo+ICAgIGdF ZmlQY2lJb1Byb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAjIyBCWV9TVEFSVA0K PiAgICBnRWRraWlOb25EaXNjb3ZlcmFibGVEZXZpY2VQcm90b2NvbEd1aWQgICAgICAgIyMgVE9f U1RBUlQNCj4NCj4gIFtHdWlkc10NCj4gLSAgZ0Vka2lpTm9uRGlzY292ZXJhYmxlQWhjaURldmlj ZUd1aWQNCj4gLSAgZ0Vka2lpTm9uRGlzY292ZXJhYmxlRWhjaURldmljZUd1aWQNCj4gLSAgZ0Vk a2lpTm9uRGlzY292ZXJhYmxlTnZtZURldmljZUd1aWQNCj4gLSAgZ0Vka2lpTm9uRGlzY292ZXJh YmxlT2hjaURldmljZUd1aWQNCj4gLSAgZ0Vka2lpTm9uRGlzY292ZXJhYmxlU2RoY2lEZXZpY2VH dWlkDQo+IC0gIGdFZGtpaU5vbkRpc2NvdmVyYWJsZVVmc0RldmljZUd1aWQNCj4gLSAgZ0Vka2lp Tm9uRGlzY292ZXJhYmxlVWhjaURldmljZUd1aWQNCj4gLSAgZ0Vka2lpTm9uRGlzY292ZXJhYmxl WGhjaURldmljZUd1aWQNCj4gKyAgZ0Vka2lpTm9uRGlzY292ZXJhYmxlQWhjaURldmljZUd1aWQg ICAgICAgIyMgQ09OU1VNRVMgIyMgR1VJRA0KPiArICBnRWRraWlOb25EaXNjb3ZlcmFibGVFaGNp RGV2aWNlR3VpZCAgICAgICAjIyBDT05TVU1FUyAjIyBHVUlEDQo+ICsgIGdFZGtpaU5vbkRpc2Nv dmVyYWJsZU52bWVEZXZpY2VHdWlkICAgICAgICMjIENPTlNVTUVTICMjIEdVSUQNCj4gKyAgZ0Vk a2lpTm9uRGlzY292ZXJhYmxlT2hjaURldmljZUd1aWQgICAgICAgIyMgQ09OU1VNRVMgIyMgR1VJ RA0KPiArICBnRWRraWlOb25EaXNjb3ZlcmFibGVTZGhjaURldmljZUd1aWQgICAgICAjIyBDT05T VU1FUyAjIyBHVUlEDQo+ICsgIGdFZGtpaU5vbkRpc2NvdmVyYWJsZVVmc0RldmljZUd1aWQgICAg ICAgICMjIENPTlNVTUVTICMjIEdVSUQNCj4gKyAgZ0Vka2lpTm9uRGlzY292ZXJhYmxlVWhjaURl dmljZUd1aWQgICAgICAgIyMgQ09OU1VNRVMgIyMgR1VJRA0KPiArICBnRWRraWlOb25EaXNjb3Zl cmFibGVYaGNpRGV2aWNlR3VpZCAgICAgICAjIyBDT05TVU1FUyAjIyBHVUlEDQo+IGRpZmYgLS1n aXQgDQo+IGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhl L05vbkRpc2NvdmVyYWJsZVBjaUQNCj4gZXZpY2VJby5jIA0KPiBiL01kZU1vZHVsZVBrZy9CdXMv UGNpL05vbkRpc2NvdmVyYWJsZVBjaURldmljZUR4ZS9Ob25EaXNjb3ZlcmFibGVQY2lEDQo+IGV2 aWNlSW8uYw0KPiBpbmRleCA4MmVlOWQxLi41OWI2MDc2IDEwMDY0NA0KPiAtLS0gDQo+IGEvTWRl TW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlL05vbkRpc2NvdmVy YWJsZVBjaUQNCj4gZXZpY2VJby5jDQo+ICsrKyBiL01kZU1vZHVsZVBrZy9CdXMvUGNpL05vbkRp c2NvdmVyYWJsZVBjaURldmljZUR4ZS9Ob25EaXNjb3ZlcmFibGUNCj4gKysrIFBjaURldmljZUlv LmMNCj4gQEAgLTI0LDEzICsyNCwxOCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICAgIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKkhvc3RBZGRyZXNzOw0KPiAgICBFRklfUENJX0lPX1BS T1RPQ09MX09QRVJBVElPTiAgIE9wZXJhdGlvbjsNCj4gICAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgICBOdW1iZXJPZkJ5dGVzOw0KPiAgfSBOT05fRElTQ09WRVJBQkxFX1BDSV9ERVZJ Q0VfTUFQX0lORk87DQo+DQo+IC0vLw0KPiAtLy8gR2V0IHRoZSByZXNvdXJjZSBhc3NvY2lhdGVk IHdpdGggQkFSIG51bWJlciAnQmFySW5kZXgnLg0KPiAtLy8NCj4gKy8qKg0KPiArICBHZXQgdGhl IHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCBCQVIgbnVtYmVyICdCYXJJbmRleCcuDQo+ICsNCj4g KyAgQHBhcmFtICBEZXYgICAgICAgICAgIFBvaW50IHRvIHRoZSBOT05fRElTQ09WRVJBQkxFX1BD SV9ERVZJQ0UgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbSAgQmFySW5kZXggICAgICBUaGUgQkFSIGlu ZGV4IG9mIHRoZSBzdGFuZGFyZCBQQ0kgQ29uZmlndXJhdGlvbiBoZWFkZXIgdG8gdXNlIGFzIHRo ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSBhZGRyZXNzIGZvciB0aGUgbWVtb3J5 IG9wZXJhdGlvbiB0byBwZXJmb3JtLg0KPiArICBAcGFyYW0gIERlc2NyaXB0b3IgICAgUG9pbnRz IHRvIHRoZSBhZGRyZXNzIHNwYWNlIGRlc2NyaXB0b3INCj4gKyoqLw0KPiAgU1RBVElDDQo+ICBF RklfU1RBVFVTDQo+ICBHZXRCYXJSZXNvdXJjZSAoDQo+ICAgIElOICBOT05fRElTQ09WRVJBQkxF X1BDSV9ERVZJQ0UgICAgICAgICAqRGV2LA0KPiAgICBJTiAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQmFySW5kZXgsDQo+IEBAIC01NywxMCArNjIsMjUgQEAgR2V0QmFyUmVz b3VyY2UgKA0KPiAgICAgIEJhckluZGV4IC09IDE7DQo+ICAgIH0NCj4gICAgcmV0dXJuIEVGSV9O T1RfRk9VTkQ7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAgUmVhZHMgZnJvbSB0aGUgbWVtb3J5IHNw YWNlIG9mIGEgUENJIGNvbnRyb2xsZXIuIFJldHVybnMgZWl0aGVyIA0KPiArd2hlbiB0aGUgcG9s bGluZyBleGl0IGNyaXRlcmlhIGlzDQo+ICsgIHNhdGlzZmllZCBvciBhZnRlciBhIGRlZmluZWQg ZHVyYXRpb24uDQo+ICsNCj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgQSBwb2lu dGVyIHRvIHRoZSBFRklfUENJX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW0gIFdp ZHRoICAgICAgICAgICAgICAgICBTaWduaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBtZW1vcnkgb3Ig SS9PIG9wZXJhdGlvbnMuDQo+ICsgIEBwYXJhbSAgQmFySW5kZXggICAgICAgICAgICAgIFRoZSBC QVIgaW5kZXggb2YgdGhlIHN0YW5kYXJkIFBDSSBDb25maWd1cmF0aW9uIGhlYWRlciB0byB1c2Ug YXMgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgYWRkcmVzcyBm b3IgdGhlIG1lbW9yeSBvcGVyYXRpb24gdG8gcGVyZm9ybS4NCj4gKyAgQHBhcmFtICBPZmZzZXQg ICAgICAgICAgICAgICAgVGhlIG9mZnNldCB3aXRoaW4gdGhlIHNlbGVjdGVkIEJBUiB0byBzdGFy dCB0aGUgbWVtb3J5IG9wZXJhdGlvbi4NCj4gKyAgQHBhcmFtICBNYXNrICAgICAgICAgICAgICAg ICAgTWFzayB1c2VkIGZvciB0aGUgcG9sbGluZyBjcml0ZXJpYS4NCj4gKyAgQHBhcmFtICBWYWx1 ZSAgICAgICAgICAgICAgICAgVGhlIGNvbXBhcmlzb24gdmFsdWUgdXNlZCBmb3IgdGhlIHBvbGxp bmcgZXhpdCBjcml0ZXJpYS4NCj4gKyAgQHBhcmFtICBEZWxheSAgICAgICAgICAgICAgICAgVGhl IG51bWJlciBvZiAxMDAgbnMgdW5pdHMgdG8gcG9sbC4NCj4gKyAgQHBhcmFtICBSZXN1bHQgICAg ICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgbGFzdCB2YWx1ZSByZWFkIGZyb20gdGhlIG1lbW9y eSBsb2NhdGlvbi4NCj4gKw0KPiArKiovDQo+ICBTVEFUSUMNCj4gIEVGSV9TVEFUVVMNCj4gIEVG SUFQSQ0KPiAgUGNpSW9Qb2xsTWVtICgNCj4gICAgSU4gIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAg ICAgICAqVGhpcywNCj4gQEAgLTc1LDEwICs5NSwyNSBAQCBQY2lJb1BvbGxNZW0gKA0KPiAgew0K PiAgICBBU1NFUlQgKEZBTFNFKTsNCj4gICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gIH0N Cj4NCj4gKy8qKg0KPiArICBSZWFkcyBmcm9tIHRoZSBtZW1vcnkgc3BhY2Ugb2YgYSBQQ0kgY29u dHJvbGxlci4gUmV0dXJucyBlaXRoZXIgDQo+ICt3aGVuIHRoZSBwb2xsaW5nIGV4aXQgY3JpdGVy aWEgaXMNCj4gKyAgc2F0aXNmaWVkIG9yIGFmdGVyIGEgZGVmaW5lZCBkdXJhdGlvbi4NCj4gKw0K PiArICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9Q Q0lfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbSAgV2lkdGggICAgICAgICAgICAg ICAgIFNpZ25pZmllcyB0aGUgd2lkdGggb2YgdGhlIG1lbW9yeSBvciBJL08gb3BlcmF0aW9ucy4N Cj4gKyAgQHBhcmFtICBCYXJJbmRleCAgICAgICAgICAgICAgVGhlIEJBUiBpbmRleCBvZiB0aGUg c3RhbmRhcmQgUENJIENvbmZpZ3VyYXRpb24gaGVhZGVyIHRvIHVzZSBhcyB0aGUNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSBhZGRyZXNzIGZvciB0aGUgbWVtb3J5IG9w ZXJhdGlvbiB0byBwZXJmb3JtLg0KPiArICBAcGFyYW0gIE9mZnNldCAgICAgICAgICAgICAgICBU aGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZSBtZW1vcnkgb3Bl cmF0aW9uLg0KPiArICBAcGFyYW0gIE1hc2sgICAgICAgICAgICAgICAgICBNYXNrIHVzZWQgZm9y IHRoZSBwb2xsaW5nIGNyaXRlcmlhLg0KPiArICBAcGFyYW0gIFZhbHVlICAgICAgICAgICAgICAg ICBUaGUgY29tcGFyaXNvbiB2YWx1ZSB1c2VkIGZvciB0aGUgcG9sbGluZyBleGl0IGNyaXRlcmlh Lg0KPiArICBAcGFyYW0gIERlbGF5ICAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIDEwMCBu cyB1bml0cyB0byBwb2xsLg0KPiArICBAcGFyYW0gIFJlc3VsdCAgICAgICAgICAgICAgICBQb2lu dGVyIHRvIHRoZSBsYXN0IHZhbHVlIHJlYWQgZnJvbSB0aGUgbWVtb3J5IGxvY2F0aW9uLg0KPiAr DQo+ICsqKi8NCj4gIFNUQVRJQw0KPiAgRUZJX1NUQVRVUw0KPiAgRUZJQVBJDQo+ICBQY2lJb1Bv bGxJbyAoDQo+ICAgIElOICBFRklfUENJX0lPX1BST1RPQ09MICAgICAgICAgKlRoaXMsDQo+IEBA IC05MywxMCArMTI4LDIzIEBAIFBjaUlvUG9sbElvICgNCj4gIHsNCj4gICAgQVNTRVJUIChGQUxT RSk7DQo+ICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAg RW5hYmxlIGEgUENJIGRyaXZlciB0byBhY2Nlc3MgUENJIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGlu IHRoZSBQQ0kgbWVtb3J5IG9yIEkvTyBzcGFjZS4NCj4gKw0KPiArICBAcGFyYW0gIFdpZHRoICAg ICAgICAgU2lnbmlmaWVzIHRoZSB3aWR0aCBvZiB0aGUgbWVtb3J5IG9yIEkvTyBvcGVyYXRpb25z Lg0KPiArICBAcGFyYW0gIENvdW50ICAgICAgICAgVGhlIG51bWJlciBvZiBtZW1vcnkgb3IgSS9P IG9wZXJhdGlvbnMgdG8gcGVyZm9ybS4NCj4gKyAgQHBhcmFtICBEc3RTdHJpZGUgICAgIFRoZSBz dHJpZGUgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4NCj4gKyAgQHBhcmFtICBEc3QgICAgICAg ICAgIEZvciByZWFkIG9wZXJhdGlvbnMsIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdG8gc3RvcmUg dGhlIHJlc3VsdHMuIEZvciB3cml0ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0 aW9ucywgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB0byB3cml0ZSBkYXRhIHRvLg0KPiArICBAcGFy YW0gIFNyY1N0cmlkZSAgICAgVGhlIHN0cmlkZSBvZiB0aGUgc291cmNlIGJ1ZmZlci4NCj4gKyAg QHBhcmFtICBTcmMgICAgICAgICAgIEZvciByZWFkIG9wZXJhdGlvbnMsIHRoZSBzb3VyY2UgYnVm ZmVyIHRvIHJlYWQgZGF0YSBmcm9tLiBGb3Igd3JpdGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIG9wZXJhdGlvbnMsIHRoZSBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlIGRhdGEgZnJvbS4NCj4g Kw0KPiArKiovDQo+ICBTVEFUSUMNCj4gIEVGSV9TVEFUVVMNCj4gIEVGSUFQSQ0KPiAgUGNpSW9N ZW1SVyAoDQo+ICAgIElOICBFRklfUENJX0lPX1BST1RPQ09MX1dJRFRIICAgV2lkdGgsDQo+IEBA IC0xNDQsMTAgKzE5MiwzMCBAQCBQY2lJb01lbVJXICgNCj4gICAgfQ0KPg0KPiAgICByZXR1cm4g RUZJX1NVQ0NFU1M7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAgRW5hYmxlIGEgUENJIGRyaXZlciB0 byBhY2Nlc3MgUENJIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGluIHRoZSBQQ0kgbWVtb3J5IG9yIEkv TyBzcGFjZS4NCj4gKw0KPiArICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBBIHBvaW50 ZXIgdG8gdGhlIEVGSV9QQ0lfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbSAgV2lk dGggICAgICAgICAgICAgICAgIFNpZ25pZmllcyB0aGUgd2lkdGggb2YgdGhlIG1lbW9yeSBvciBJ L08gb3BlcmF0aW9ucy4NCj4gKyAgQHBhcmFtICBCYXJJbmRleCAgICAgICAgICAgICAgVGhlIEJB UiBpbmRleCBvZiB0aGUgc3RhbmRhcmQgUENJIENvbmZpZ3VyYXRpb24gaGVhZGVyIHRvIHVzZSBh cyB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSBhZGRyZXNzIGZv ciB0aGUgbWVtb3J5IG9yIEkvTyBvcGVyYXRpb24gdG8gcGVyZm9ybS4NCj4gKyAgQHBhcmFtICBP ZmZzZXQgICAgICAgICAgICAgICAgVGhlIG9mZnNldCB3aXRoaW4gdGhlIHNlbGVjdGVkIEJBUiB0 byBzdGFydCB0aGUgbWVtb3J5IG9yIEkvTyBvcGVyYXRpb24uDQo+ICsgIEBwYXJhbSAgQ291bnQg ICAgICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgbWVtb3J5IG9yIEkvTyBvcGVyYXRpb25zIHRv IHBlcmZvcm0uDQo+ICsgIEBwYXJhbSAgQnVmZmVyICAgICAgICAgICAgICAgIEZvciByZWFkIG9w ZXJhdGlvbnMsIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdG8gc3RvcmUgdGhlIHJlc3VsdHMuIEZv ciB3cml0ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLCB0 aGUgc291cmNlIGJ1ZmZlciB0byB3cml0ZSBkYXRhIGZyb20uDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGRhdGEgd2FzIHJlYWQgZnJvbSBvciB3cml0dGVuIHRv IHRoZSBQQ0kgY29udHJvbGxlci4NCj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAg QmFySW5kZXggbm90IHZhbGlkIGZvciB0aGlzIFBDSSBjb250cm9sbGVyLg0KPiArICBAcmV0dmFs IEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgYWRkcmVzcyByYW5nZSBzcGVjaWZpZWQgYnkgT2Zm c2V0LCBXaWR0aCwgYW5kIENvdW50IGlzIG5vdA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZCBmb3IgdGhlIFBDSSBCQVIgc3BlY2lmaWVkIGJ5IEJhckluZGV4Lg0KPiAr ICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBUaGUgcmVxdWVzdCBjb3VsZCBub3QgYmUg Y29tcGxldGVkIGR1ZSB0byBhIGxhY2sgb2YgcmVzb3VyY2VzLg0KPiArICBAcmV0dmFsIEVGSV9J TlZBTElEX1BBUkFNRVRFUiBPbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLg0KPiAr DQo+ICsqKi8NCj4gIFNUQVRJQw0KPiAgRUZJX1NUQVRVUw0KPiAgRUZJQVBJDQo+ICBQY2lJb01l bVJlYWQgKA0KPiAgICBJTiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgICAgICAqVGhpcywN Cj4gQEAgLTIxMSwxMCArMjc5LDMwIEBAIFBjaUlvTWVtUmVhZCAoDQo+ICAgICAgYnJlYWs7DQo+ ICAgIH0NCj4gICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gIH0NCj4NCj4gKy8q Kg0KPiArICBFbmFibGUgYSBQQ0kgZHJpdmVyIHRvIGFjY2VzcyBQQ0kgY29udHJvbGxlciByZWdp c3RlcnMgaW4gdGhlIFBDSSBtZW1vcnkgb3IgSS9PIHNwYWNlLg0KPiArDQo+ICsgIEBwYXJhbSAg VGhpcyAgICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1BDSV9JT19QUk9UT0NP TCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtICBXaWR0aCAgICAgICAgICAgICAgICAgU2lnbmlmaWVz IHRoZSB3aWR0aCBvZiB0aGUgbWVtb3J5IG9yIEkvTyBvcGVyYXRpb25zLg0KPiArICBAcGFyYW0g IEJhckluZGV4ICAgICAgICAgICAgICBUaGUgQkFSIGluZGV4IG9mIHRoZSBzdGFuZGFyZCBQQ0kg Q29uZmlndXJhdGlvbiBoZWFkZXIgdG8gdXNlIGFzIHRoZQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBiYXNlIGFkZHJlc3MgZm9yIHRoZSBtZW1vcnkgb3IgSS9PIG9wZXJhdGlv biB0byBwZXJmb3JtLg0KPiArICBAcGFyYW0gIE9mZnNldCAgICAgICAgICAgICAgICBUaGUgb2Zm c2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZSBtZW1vcnkgb3IgSS9PIG9w ZXJhdGlvbi4NCj4gKyAgQHBhcmFtICBDb3VudCAgICAgICAgICAgICAgICAgVGhlIG51bWJlciBv ZiBtZW1vcnkgb3IgSS9PIG9wZXJhdGlvbnMgdG8gcGVyZm9ybS4NCj4gKyAgQHBhcmFtICBCdWZm ZXIgICAgICAgICAgICAgICAgRm9yIHJlYWQgb3BlcmF0aW9ucywgdGhlIGRlc3RpbmF0aW9uIGJ1 ZmZlciB0byBzdG9yZSB0aGUgcmVzdWx0cy4gRm9yIHdyaXRlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMsIHRoZSBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlIGRh dGEgZnJvbS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgZGF0 YSB3YXMgcmVhZCBmcm9tIG9yIHdyaXR0ZW4gdG8gdGhlIFBDSSBjb250cm9sbGVyLg0KPiArICBA cmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBCYXJJbmRleCBub3QgdmFsaWQgZm9yIHRoaXMg UENJIGNvbnRyb2xsZXIuDQo+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIFRoZSBh ZGRyZXNzIHJhbmdlIHNwZWNpZmllZCBieSBPZmZzZXQsIFdpZHRoLCBhbmQgQ291bnQgaXMgbm90 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIGZvciB0aGUgUENJIEJB UiBzcGVjaWZpZWQgYnkgQmFySW5kZXguDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJD RVMgIFRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgZHVlIHRvIGEgbGFjayBvZiBy ZXNvdXJjZXMuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIE9uZSBvciBtb3Jl IHBhcmFtZXRlcnMgYXJlIGludmFsaWQuDQo+ICsNCj4gKyoqLw0KPiAgU1RBVElDDQo+ICBFRklf U1RBVFVTDQo+ICBFRklBUEkNCj4gIFBjaUlvTWVtV3JpdGUgKA0KPiAgICBJTiAgICAgRUZJX1BD SV9JT19QUk9UT0NPTCAgICAgICAgICAqVGhpcywNCj4gQEAgLTI3OCwxMCArMzY2LDIzIEBAIFBj aUlvTWVtV3JpdGUgKA0KPiAgICAgIGJyZWFrOw0KPiAgICB9DQo+ICAgIHJldHVybiBFRklfSU5W QUxJRF9QQVJBTUVURVI7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAgRW5hYmxlIGEgUENJIGRyaXZl ciB0byBhY2Nlc3MgUENJIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGluIHRoZSBQQ0kgbWVtb3J5IG9y IEkvTyBzcGFjZS4NCj4gKw0KPiArICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBBIHBv aW50ZXIgdG8gdGhlIEVGSV9QQ0lfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbSAg V2lkdGggICAgICAgICAgICAgICAgIFNpZ25pZmllcyB0aGUgd2lkdGggb2YgdGhlIG1lbW9yeSBv ciBJL08gb3BlcmF0aW9ucy4NCj4gKyAgQHBhcmFtICBCYXJJbmRleCAgICAgICAgICAgICAgVGhl IEJBUiBpbmRleCBvZiB0aGUgc3RhbmRhcmQgUENJIENvbmZpZ3VyYXRpb24gaGVhZGVyIHRvIHVz ZSBhcyB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSBhZGRyZXNz IGZvciB0aGUgbWVtb3J5IG9yIEkvTyBvcGVyYXRpb24gdG8gcGVyZm9ybS4NCj4gKyAgQHBhcmFt ICBPZmZzZXQgICAgICAgICAgICAgICAgVGhlIG9mZnNldCB3aXRoaW4gdGhlIHNlbGVjdGVkIEJB UiB0byBzdGFydCB0aGUgbWVtb3J5IG9yIEkvTyBvcGVyYXRpb24uDQo+ICsgIEBwYXJhbSAgQ291 bnQgICAgICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgbWVtb3J5IG9yIEkvTyBvcGVyYXRpb25z IHRvIHBlcmZvcm0uDQo+ICsgIEBwYXJhbSAgQnVmZmVyICAgICAgICAgICAgICAgIEZvciByZWFk IG9wZXJhdGlvbnMsIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdG8gc3RvcmUgdGhlIHJlc3VsdHMu IEZvciB3cml0ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25z LCB0aGUgc291cmNlIGJ1ZmZlciB0byB3cml0ZSBkYXRhIGZyb20uDQo+ICsNCj4gKyoqLw0KPiAg U1RBVElDDQo+ICBFRklfU1RBVFVTDQo+ICBFRklBUEkNCj4gIFBjaUlvSW9SZWFkICgNCj4gICAg SU4gRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgICAgICAgICAgKlRoaXMsDQo+IEBAIC0yOTQsMTAg KzM5NSwyMyBAQCBQY2lJb0lvUmVhZCAoDQo+ICB7DQo+ICAgIEFTU0VSVCAoRkFMU0UpOw0KPiAg ICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiAgfQ0KPg0KPiArLyoqDQo+ICsgIEVuYWJsZSBh IFBDSSBkcml2ZXIgdG8gYWNjZXNzIFBDSSBjb250cm9sbGVyIHJlZ2lzdGVycyBpbiB0aGUgUENJ IG1lbW9yeSBvciBJL08gc3BhY2UuDQo+ICsNCj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfUENJX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiAr ICBAcGFyYW0gIFdpZHRoICAgICAgICAgICAgICAgICBTaWduaWZpZXMgdGhlIHdpZHRoIG9mIHRo ZSBtZW1vcnkgb3IgSS9PIG9wZXJhdGlvbnMuDQo+ICsgIEBwYXJhbSAgQmFySW5kZXggICAgICAg ICAgICAgIFRoZSBCQVIgaW5kZXggb2YgdGhlIHN0YW5kYXJkIFBDSSBDb25maWd1cmF0aW9uIGhl YWRlciB0byB1c2UgYXMgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh c2UgYWRkcmVzcyBmb3IgdGhlIG1lbW9yeSBvciBJL08gb3BlcmF0aW9uIHRvIHBlcmZvcm0uDQo+ ICsgIEBwYXJhbSAgT2Zmc2V0ICAgICAgICAgICAgICAgIFRoZSBvZmZzZXQgd2l0aGluIHRoZSBz ZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhlIG1lbW9yeSBvciBJL08gb3BlcmF0aW9uLg0KPiArICBA cGFyYW0gIENvdW50ICAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIG1lbW9yeSBvciBJL08g b3BlcmF0aW9ucyB0byBwZXJmb3JtLg0KPiArICBAcGFyYW0gIEJ1ZmZlciAgICAgICAgICAgICAg ICBGb3IgcmVhZCBvcGVyYXRpb25zLCB0aGUgZGVzdGluYXRpb24gYnVmZmVyIHRvIHN0b3JlIHRo ZSByZXN1bHRzLiBGb3Igd3JpdGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3BlcmF0aW9ucywgdGhlIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUgZGF0YSBmcm9tLg0KPiArDQo+ ICsqKi8NCj4gIFNUQVRJQw0KPiAgRUZJX1NUQVRVUw0KPiAgRUZJQVBJDQo+ICBQY2lJb0lvV3Jp dGUgKA0KPiAgICBJTiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgICAgICAqVGhpcywNCj4g QEAgLTMxMCwxMCArNDI0LDIxIEBAIFBjaUlvSW9Xcml0ZSAoDQo+ICB7DQo+ICAgIEFTU0VSVCAo RkFMU0UpOw0KPiAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiAgfQ0KPg0KPiArLyoqDQo+ ICsgIEVuYWJsZSBhIFBDSSBkcml2ZXIgdG8gYWNjZXNzIFBDSSBjb25maWcgc3BhY2UuDQo+ICsN Cj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklf UENJX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW0gIFdpZHRoICAgICAgICAgICAg ICAgICBTaWduaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBtZW1vcnkgb3IgSS9PIG9wZXJhdGlvbnMu DQo+ICsgIEBwYXJhbSAgT2Zmc2V0ICAgICAgICAgICAgICAgIFRoZSBvZmZzZXQgd2l0aGluIHRo ZSBzZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhlIG1lbW9yeSBvciBJL08gb3BlcmF0aW9uLg0KPiAr ICBAcGFyYW0gIENvdW50ICAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIG1lbW9yeSBvciBJ L08gb3BlcmF0aW9ucyB0byBwZXJmb3JtLg0KPiArICBAcGFyYW0gIEJ1ZmZlciAgICAgICAgICAg ICAgICBGb3IgcmVhZCBvcGVyYXRpb25zLCB0aGUgZGVzdGluYXRpb24gYnVmZmVyIHRvIHN0b3Jl IHRoZSByZXN1bHRzLiBGb3Igd3JpdGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3BlcmF0aW9ucywgdGhlIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUgZGF0YSBmcm9tLg0KPiAr DQo+ICsqKi8NCj4gIFNUQVRJQw0KPiAgRUZJX1NUQVRVUw0KPiAgRUZJQVBJDQo+ICBQY2lJb1Bj aVJlYWQgKA0KPiAgICBJTiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgICAgKlRoaXMsDQo+ IEBAIC0zNDYsMTAgKzQ3MSwyMSBAQCBQY2lJb1BjaVJlYWQgKA0KPiAgICAgIENvdW50IC09IExl bmd0aCA+PiAoKFVJTlROKVdpZHRoICYgMHgzKTsNCj4gICAgfQ0KPiAgICByZXR1cm4gUGNpSW9N ZW1SVyAoV2lkdGgsIENvdW50LCAxLCBCdWZmZXIsIDEsIEFkZHJlc3MpOyAgfQ0KPg0KPiArLyoq DQo+ICsgIEVuYWJsZSBhIFBDSSBkcml2ZXIgdG8gYWNjZXNzIFBDSSBjb25maWcgc3BhY2UuDQo+ ICsNCj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBF RklfUENJX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW0gIFdpZHRoICAgICAgICAg ICAgICAgICBTaWduaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBtZW1vcnkgb3IgSS9PIG9wZXJhdGlv bnMuDQo+ICsgIEBwYXJhbSAgT2Zmc2V0ICAgICAgICAgICAgICAgIFRoZSBvZmZzZXQgd2l0aGlu IHRoZSBzZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhlIG1lbW9yeSBvciBJL08gb3BlcmF0aW9uLg0K PiArICBAcGFyYW0gIENvdW50ICAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIG1lbW9yeSBv ciBJL08gb3BlcmF0aW9ucyB0byBwZXJmb3JtLg0KPiArICBAcGFyYW0gIEJ1ZmZlciAgICAgICAg ICAgICAgICBGb3IgcmVhZCBvcGVyYXRpb25zLCB0aGUgZGVzdGluYXRpb24gYnVmZmVyIHRvIHN0 b3JlIHRoZSByZXN1bHRzLiBGb3Igd3JpdGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3BlcmF0aW9ucywgdGhlIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUgZGF0YSBmcm9tLg0K PiArDQo+ICsqKi8NCj4gIFNUQVRJQw0KPiAgRUZJX1NUQVRVUw0KPiAgRUZJQVBJDQo+ICBQY2lJ b1BjaVdyaXRlICgNCj4gICAgSU4gRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgICAgICAgICAgKlRo aXMsDQo+IEBAIC0zNzQsMTAgKzUxMCwyOCBAQCBQY2lJb1BjaVdyaXRlICgNCj4gICAgfQ0KPg0K PiAgICByZXR1cm4gUGNpSW9NZW1SVyAoV2lkdGgsIENvdW50LCAxLCBBZGRyZXNzLCAxLCBCdWZm ZXIpOyAgfQ0KPg0KPiArLyoqDQo+ICsgIEVuYWJsZXMgYSBQQ0kgZHJpdmVyIHRvIGNvcHkgb25l IHJlZ2lvbiBvZiBQQ0kgbWVtb3J5IHNwYWNlIHRvIA0KPiArYW5vdGhlciByZWdpb24gb2YgUENJ DQo+ICsgIG1lbW9yeSBzcGFjZS4NCj4gKw0KPiArICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAg ICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9QQ0lfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsg IEBwYXJhbSAgV2lkdGggICAgICAgICAgICAgICAgIFNpZ25pZmllcyB0aGUgd2lkdGggb2YgdGhl IG1lbW9yeSBvcGVyYXRpb25zLg0KPiArICBAcGFyYW0gIERlc3RCYXJJbmRleCAgICAgICAgICBU aGUgQkFSIGluZGV4IGluIHRoZSBzdGFuZGFyZCBQQ0kgQ29uZmlndXJhdGlvbiBoZWFkZXIgdG8g dXNlIGFzIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlIGFkZHJl c3MgZm9yIHRoZSBtZW1vcnkgb3BlcmF0aW9uIHRvIHBlcmZvcm0uDQo+ICsgIEBwYXJhbSAgRGVz dE9mZnNldCAgICAgICAgICAgIFRoZSBkZXN0aW5hdGlvbiBvZmZzZXQgd2l0aGluIHRoZSBCQVIg c3BlY2lmaWVkIGJ5IERlc3RCYXJJbmRleCB0bw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdGFydCB0aGUgbWVtb3J5IHdyaXRlcyBmb3IgdGhlIGNvcHkgb3BlcmF0aW9uLg0K PiArICBAcGFyYW0gIFNyY0JhckluZGV4ICAgICAgICAgICBUaGUgQkFSIGluZGV4IGluIHRoZSBz dGFuZGFyZCBQQ0kgQ29uZmlndXJhdGlvbiBoZWFkZXIgdG8gdXNlIGFzIHRoZQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlIGFkZHJlc3MgZm9yIHRoZSBtZW1vcnkgb3Bl cmF0aW9uIHRvIHBlcmZvcm0uDQo+ICsgIEBwYXJhbSAgU3JjT2Zmc2V0ICAgICAgICAgICAgIFRo ZSBzb3VyY2Ugb2Zmc2V0IHdpdGhpbiB0aGUgQkFSIHNwZWNpZmllZCBieSBTcmNCYXJJbmRleCB0 byBzdGFydA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWVtb3J5IHJl YWRzIGZvciB0aGUgY29weSBvcGVyYXRpb24uDQo+ICsgIEBwYXJhbSAgQ291bnQgICAgICAgICAg ICAgICAgIFRoZSBudW1iZXIgb2YgbWVtb3J5IG9wZXJhdGlvbnMgdG8gcGVyZm9ybS4gQnl0ZXMg bW92ZWQgaXMgV2lkdGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSAq IENvdW50LCBzdGFydGluZyBhdCBEZXN0T2Zmc2V0IGFuZCBTcmNPZmZzZXQuDQo+ICsNCj4gKyoq Lw0KPiAgU1RBVElDDQo+ICBFRklfU1RBVFVTDQo+ICBFRklBUEkNCj4gIFBjaUlvQ29weU1lbSAo DQo+ICAgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgICAgICAgICAgICpUaGlzLA0KPiBAQCAt MzkxLDEwICs1NDUsMjkgQEAgUGNpSW9Db3B5TWVtICgNCj4gIHsNCj4gICAgQVNTRVJUIChGQUxT RSk7DQo+ICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAg UHJvdmlkZXMgdGhlIFBDSSBjb250cm9sbGVyLXNwZWNpZmljIGFkZHJlc3NlcyBuZWVkZWQgdG8g YWNjZXNzIHN5c3RlbSBtZW1vcnkuDQo+ICsNCj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfUENJX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiAr ICBAcGFyYW0gIE9wZXJhdGlvbiAgICAgICAgICAgICBJbmRpY2F0ZXMgaWYgdGhlIGJ1cyBtYXN0 ZXIgaXMgZ29pbmcgdG8gcmVhZCBvciB3cml0ZSB0byBzeXN0ZW0gbWVtb3J5Lg0KPiArICBAcGFy YW0gIEhvc3RBZGRyZXNzICAgICAgICAgICBUaGUgc3lzdGVtIG1lbW9yeSBhZGRyZXNzIHRvIG1h cCB0byB0aGUgUENJIGNvbnRyb2xsZXIuDQo+ICsgIEBwYXJhbSAgTnVtYmVyT2ZCeXRlcyAgICAg ICAgIE9uIGlucHV0IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbWFwLiBPbiBvdXRwdXQgdGhlIG51 bWJlciBvZiBieXRlcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdl cmUgbWFwcGVkLg0KPiArICBAcGFyYW0gIERldmljZUFkZHJlc3MgICAgICAgICBUaGUgcmVzdWx0 aW5nIG1hcCBhZGRyZXNzIGZvciB0aGUgYnVzIG1hc3RlciBQQ0kgY29udHJvbGxlciB0byB1c2Ug dG8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIHRoZSBob3N0cyBI b3N0QWRkcmVzcy4NCj4gKyAgQHBhcmFtICBNYXBwaW5nICAgICAgICAgICAgICAgQSByZXN1bHRp bmcgdmFsdWUgdG8gcGFzcyB0byBVbm1hcCgpLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSByYW5nZSB3YXMgbWFwcGVkIGZvciB0aGUgcmV0dXJuZWQgTnVtYmVy T2ZCeXRlcy4NCj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIEhvc3RBZGRy ZXNzIGNhbm5vdCBiZSBtYXBwZWQgYXMgYSBjb21tb24gYnVmZmVyLg0KPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBPbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLg0K PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBUaGUgcmVxdWVzdCBjb3VsZCBub3Qg YmUgY29tcGxldGVkIGR1ZSB0byBhIGxhY2sgb2YgcmVzb3VyY2VzLg0KPiArICBAcmV0dmFsIEVG SV9ERVZJQ0VfRVJST1IgICAgICBUaGUgc3lzdGVtIGhhcmR3YXJlIGNvdWxkIG5vdCBtYXAgdGhl IHJlcXVlc3RlZCBhZGRyZXNzLg0KPiArDQo+ICsqKi8NCj4gIFNUQVRJQw0KPiAgRUZJX1NUQVRV Uw0KPiAgRUZJQVBJDQo+ICBDb2hlcmVudFBjaUlvTWFwICgNCj4gICAgSU4gICAgIEVGSV9QQ0lf SU9fUFJPVE9DT0wgICAgICAgICAgICAqVGhpcywNCj4gQEAgLTQ1NywxMCArNjMwLDE5IEBAIENv aGVyZW50UGNpSW9NYXAgKA0KPiAgICAgICpNYXBwaW5nID0gTlVMTDsNCj4gICAgfQ0KPiAgICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAgQ29tcGxldGVzIHRoZSBN YXAoKSBvcGVyYXRpb24gYW5kIHJlbGVhc2VzIGFueSBjb3JyZXNwb25kaW5nIHJlc291cmNlcy4N Cj4gKw0KPiArICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhl IEVGSV9QQ0lfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbSAgTWFwcGluZyAgICAg ICAgICAgICAgIFRoZSBtYXBwaW5nIHZhbHVlIHJldHVybmVkIGZyb20gTWFwKCkuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHJhbmdlIHdhcyB1bm1hcHBlZC4N Cj4gKw0KPiArKiovDQo+ICBTVEFUSUMNCj4gIEVGSV9TVEFUVVMNCj4gIEVGSUFQSQ0KPiAgQ29o ZXJlbnRQY2lJb1VubWFwICgNCj4gICAgSU4gIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgICAgICAg KlRoaXMsDQo+IEBAIC00ODAsMTAgKzY2MiwyOSBAQCBDb2hlcmVudFBjaUlvVW5tYXAgKA0KPiAg ICAgIEZyZWVQb29sIChNYXBJbmZvKTsNCj4gICAgfQ0KPiAgICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAgQWxsb2NhdGVzIHBhZ2VzLg0KPiArDQo+ICsgIEBwYXJh bSAgVGhpcyAgICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1BDSV9JT19QUk9U T0NPTCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtICBUeXBlICAgICAgICAgICAgICAgICAgVGhpcyBw YXJhbWV0ZXIgaXMgbm90IHVzZWQgYW5kIG11c3QgYmUgaWdub3JlZC4NCj4gKyAgQHBhcmFtICBN ZW1vcnlUeXBlICAgICAgICAgICAgVGhlIHR5cGUgb2YgbWVtb3J5IHRvIGFsbG9jYXRlLCBFZmlC b290U2VydmljZXNEYXRhIG9yDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVm aVJ1bnRpbWVTZXJ2aWNlc0RhdGEuDQo+ICsgIEBwYXJhbSAgUGFnZXMgICAgICAgICAgICAgICAg IFRoZSBudW1iZXIgb2YgcGFnZXMgdG8gYWxsb2NhdGUuDQo+ICsgIEBwYXJhbSAgSG9zdEFkZHJl c3MgICAgICAgICAgIEEgcG9pbnRlciB0byBzdG9yZSB0aGUgYmFzZSBzeXN0ZW0gbWVtb3J5IGFk ZHJlc3Mgb2YgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRl ZCByYW5nZS4NCj4gKyAgQHBhcmFtICBBdHRyaWJ1dGVzICAgICAgICAgICAgVGhlIHJlcXVlc3Rl ZCBiaXQgbWFzayBvZiBhdHRyaWJ1dGVzIGZvciB0aGUgYWxsb2NhdGVkIHJhbmdlLg0KPiArDQo+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgbWVtb3J5IHBh Z2VzIHdlcmUgYWxsb2NhdGVkLg0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBB dHRyaWJ1dGVzIGlzIHVuc3VwcG9ydGVkLiBUaGUgb25seSBsZWdhbCBhdHRyaWJ1dGUgYml0cyBh cmUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVNT1JZX1dSSVRFX0NPTUJJ TkUgYW5kIE1FTU9SWV9DQUNIRUQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS IE9uZSBvciBtb3JlIHBhcmFtZXRlcnMgYXJlIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX09V VF9PRl9SRVNPVVJDRVMgIFRoZSBtZW1vcnkgcGFnZXMgY291bGQgbm90IGJlIGFsbG9jYXRlZC4N Cj4gKw0KPiArKiovDQo+ICBTVEFUSUMNCj4gIEVGSV9TVEFUVVMNCj4gIEVGSUFQSQ0KPiAgQ29o ZXJlbnRQY2lJb0FsbG9jYXRlQnVmZmVyICgNCj4gICAgSU4gIEVGSV9QQ0lfSU9fUFJPVE9DT0wg ICAgICAgICAqVGhpcywNCj4gQEAgLTUyMiwxMCArNzIzLDIwIEBAIENvaGVyZW50UGNpSW9BbGxv Y2F0ZUJ1ZmZlciAoDQo+ICAgICAgKkhvc3RBZGRyZXNzID0gKFZPSUQgKikoVUlOVE4pQWxsb2NB ZGRyZXNzOw0KPiAgICB9DQo+ICAgIHJldHVybiBTdGF0dXM7DQo+ICB9DQo+DQo+ICsvKioNCj4g KyAgRnJlZXMgbWVtb3J5IHRoYXQgd2FzIGFsbG9jYXRlZCB3aXRoIEFsbG9jYXRlUGFnZXMoKS4N Cj4gKw0KPiArICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhl IEVGSV9QQ0lfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbSAgUGFnZXMgICAgICAg ICAgICAgICAgIFRoZSBudW1iZXIgb2YgcGFnZXMgdG8gZnJlZS4NCj4gKyAgQHBhcmFtICBIb3N0 QWRkcmVzcyAgICAgICAgICAgVGhlIGJhc2Ugc3lzdGVtIG1lbW9yeSBhZGRyZXNzIG9mIHRoZSBh bGxvY2F0ZWQgcmFuZ2UuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg VGhlIHJlcXVlc3RlZCBtZW1vcnkgcGFnZXMgd2VyZSBmcmVlZC4NCj4gKw0KPiArKiovDQo+ICBT VEFUSUMNCj4gIEVGSV9TVEFUVVMNCj4gIEVGSUFQSQ0KPiAgQ29oZXJlbnRQY2lJb0ZyZWVCdWZm ZXIgKA0KPiAgICBJTiAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgICAgICpUaGlzLA0KPiBAQCAt NTM1LDIxICs3NDYsNDIgQEAgQ29oZXJlbnRQY2lJb0ZyZWVCdWZmZXIgKCAgew0KPiAgICBGcmVl UGFnZXMgKEhvc3RBZGRyZXNzLCBQYWdlcyk7DQo+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g IH0NCj4NCj4gKy8qKg0KPiArICBGbHVzaGVzIGFsbCBQQ0kgcG9zdGVkIHdyaXRlIHRyYW5zYWN0 aW9ucyBmcm9tIGEgUENJIGhvc3QgYnJpZGdlIHRvIHN5c3RlbSBtZW1vcnkuDQo+ICsNCj4gKyAg QHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfUENJX0lP X1BST1RPQ09MIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgIFRoZSBQQ0kgcG9zdGVkIHdyaXRlIHRyYW5zYWN0aW9ucyB3ZXJlIGZsdXNoZWQgZnJvbSB0 aGUgUENJIGhvc3QNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJpZGdlIHRv IHN5c3RlbSBtZW1vcnkuDQo+DQo+ICsqKi8NCj4gIFNUQVRJQw0KPiAgRUZJX1NUQVRVUw0KPiAg RUZJQVBJDQo+ICBQY2lJb0ZsdXNoICgNCj4gICAgSU4gRUZJX1BDSV9JT19QUk9UT0NPTCAgICAg ICAgICAqVGhpcw0KPiAgICApDQo+ICB7DQo+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gIH0N Cj4NCj4gKy8qKg0KPiArICBSZXRyaWV2ZXMgdGhpcyBQQ0kgY29udHJvbGxlcidzIGN1cnJlbnQg UENJIGJ1cyBudW1iZXIsIGRldmljZSBudW1iZXIsIGFuZCBmdW5jdGlvbiBudW1iZXIuDQo+ICsN Cj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklf UENJX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW0gIFNlZ21lbnROdW1iZXIgICAg ICAgICBUaGUgUENJIGNvbnRyb2xsZXIncyBjdXJyZW50IFBDSSBzZWdtZW50IG51bWJlci4NCj4g KyAgQHBhcmFtICBCdXNOdW1iZXIgICAgICAgICAgICAgVGhlIFBDSSBjb250cm9sbGVyJ3MgY3Vy cmVudCBQQ0kgYnVzIG51bWJlci4NCj4gKyAgQHBhcmFtICBEZXZpY2VOdW1iZXIgICAgICAgICAg VGhlIFBDSSBjb250cm9sbGVyJ3MgY3VycmVudCBQQ0kgZGV2aWNlIG51bWJlci4NCj4gKyAgQHBh cmFtICBGdW5jdGlvbk51bWJlciAgICAgICAgVGhlIFBDSSBjb250cm9sbGVyJ3MgY3VycmVudCBQ Q0kgZnVuY3Rpb24gbnVtYmVyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgIFRoZSBQQ0kgY29udHJvbGxlciBsb2NhdGlvbiB3YXMgcmV0dXJuZWQuDQo+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIE9uZSBvciBtb3JlIHBhcmFtZXRlcnMgYXJlIGludmFs aWQuDQo+ICsNCj4gKyoqLw0KPiAgU1RBVElDDQo+ICBFRklfU1RBVFVTDQo+ICBFRklBUEkNCj4g IFBjaUlvR2V0TG9jYXRpb24gKA0KPiAgICBJTiAgIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICpUaGlz LA0KPiBAQCAtNTcyLDEwICs4MDQsMjkgQEAgUGNpSW9HZXRMb2NhdGlvbiAoDQo+ICAgICpGdW5j dGlvbk51bWJlciA9IDA7DQo+DQo+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gIH0NCj4NCj4g Ky8qKg0KPiArICBQZXJmb3JtcyBhbiBvcGVyYXRpb24gb24gdGhlIGF0dHJpYnV0ZXMgdGhhdCB0 aGlzIFBDSSBjb250cm9sbGVyIA0KPiArc3VwcG9ydHMuIFRoZSBvcGVyYXRpb25zIGluY2x1ZGUN Cj4gKyAgZ2V0dGluZyB0aGUgc2V0IG9mIHN1cHBvcnRlZCBhdHRyaWJ1dGVzLCByZXRyaWV2aW5n IHRoZSBjdXJyZW50IA0KPiArYXR0cmlidXRlcywgc2V0dGluZyB0aGUgY3VycmVudA0KPiArICBh dHRyaWJ1dGVzLCBlbmFibGluZyBhdHRyaWJ1dGVzLCBhbmQgZGlzYWJsaW5nIGF0dHJpYnV0ZXMu DQo+ICsNCj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRo ZSBFRklfUENJX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW0gIE9wZXJhdGlvbiAg ICAgICAgICAgICBUaGUgb3BlcmF0aW9uIHRvIHBlcmZvcm0gb24gdGhlIGF0dHJpYnV0ZXMgZm9y IHRoaXMgUENJIGNvbnRyb2xsZXIuDQo+ICsgIEBwYXJhbSAgQXR0cmlidXRlcyAgICAgICAgICAg IFRoZSBtYXNrIG9mIGF0dHJpYnV0ZXMgdGhhdCBhcmUgdXNlZCBmb3IgU2V0LCBFbmFibGUsIGFu ZCBEaXNhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMu DQo+ICsgIEBwYXJhbSAgUmVzdWx0ICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgcmVz dWx0IG1hc2sgb2YgYXR0cmlidXRlcyB0aGF0IGFyZSByZXR1cm5lZCBmb3IgdGhlIEdldA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgU3VwcG9ydGVkIG9wZXJhdGlvbnMu DQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBv biB0aGUgUENJIGNvbnRyb2xsZXIncyBhdHRyaWJ1dGVzIHdhcyBjb21wbGV0ZWQuDQo+ICsgIEBy ZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIE9uZSBvciBtb3JlIHBhcmFtZXRlcnMgYXJlIGlu dmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIG9uZSBvciBtb3JlIG9m IHRoZSBiaXRzIHNldCBpbg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRy aWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgUENJIGNvbnRyb2xsZXIgb3Igb25lIG9m DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0cyBwYXJlbnQgYnJpZGdlcyB3 aGVuIE9wZXJhdGlvbiBpcyBTZXQsIEVuYWJsZSBvciBEaXNhYmxlLg0KPiArDQo+ICsqKi8NCj4g IFNUQVRJQw0KPiAgRUZJX1NUQVRVUw0KPiAgRUZJQVBJDQo+ICBQY2lJb0F0dHJpYnV0ZXMgKA0K PiAgICBJTiAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAgICAqVGhpcywN Cj4gQEAgLTYyOSwxMCArODgwLDMyIEBAIFBjaUlvQXR0cmlidXRlcyAoDQo+ICAgICAgRGV2LT5F bmFibGVkID0gVFJVRTsNCj4gICAgfQ0KPiAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICB9DQo+ DQo+ICsvKioNCj4gKyAgR2V0cyB0aGUgYXR0cmlidXRlcyB0aGF0IHRoaXMgUENJIGNvbnRyb2xs ZXIgc3VwcG9ydHMgc2V0dGluZyBvbiBhIA0KPiArQkFSIHVzaW5nDQo+ICsgIFNldEJhckF0dHJp YnV0ZXMoKSwgYW5kIHJldHJpZXZlcyB0aGUgbGlzdCBvZiByZXNvdXJjZSBkZXNjcmlwdG9ycyBm b3IgYSBCQVIuDQo+ICsNCj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgQSBwb2lu dGVyIHRvIHRoZSBFRklfUENJX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW0gIEJh ckluZGV4ICAgICAgICAgICAgICBUaGUgQkFSIGluZGV4IG9mIHRoZSBzdGFuZGFyZCBQQ0kgQ29u ZmlndXJhdGlvbiBoZWFkZXIgdG8gdXNlIGFzIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBiYXNlIGFkZHJlc3MgZm9yIHJlc291cmNlIHJhbmdlLiBUaGUgbGVnYWwgcmFu Z2UgZm9yIHRoaXMgZmllbGQgaXMgMC4uNS4NCj4gKyAgQHBhcmFtICBTdXBwb3J0cyAgICAgICAg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBtYXNrIG9mIGF0dHJpYnV0ZXMgdGhhdCB0aGlzIFBDSSBj b250cm9sbGVyIHN1cHBvcnRzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl dHRpbmcgZm9yIHRoaXMgQkFSIHdpdGggU2V0QmFyQXR0cmlidXRlcygpLg0KPiArICBAcGFyYW0g IFJlc291cmNlcyAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEFDUEkgMi4wIHJlc291cmNl IGRlc2NyaXB0b3JzIHRoYXQgZGVzY3JpYmUgdGhlIGN1cnJlbnQNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvZiB0aGlzIEJBUiBvZiB0aGUgUENJIGNv bnRyb2xsZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgSWYgU3Vw cG9ydHMgaXMgbm90IE5VTEwsIHRoZW4gdGhlIGF0dHJpYnV0ZXMgdGhhdCB0aGUgUENJDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgc3VwcG9ydHMgYXJlIHJl dHVybmVkIGluIFN1cHBvcnRzLiBJZiBSZXNvdXJjZXMNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXMgbm90IE5VTEwsIHRoZW4gdGhlIEFDUEkgMi4wIHJlc291cmNlIGRlc2Ny aXB0b3JzIHRoYXQgdGhlIFBDSQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b250cm9sbGVyIGlzIGN1cnJlbnRseSB1c2luZyBhcmUgcmV0dXJuZWQgaW4gUmVzb3VyY2VzLg0K PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBCb3RoIFN1cHBvcnRzIGFuZCBBdHRy aWJ1dGVzIGFyZSBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBCYXJJ bmRleCBub3QgdmFsaWQgZm9yIHRoaXMgUENJIGNvbnRyb2xsZXIuDQo+ICsgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgIFRoZXJlIGFyZSBub3QgZW5vdWdoIHJlc291cmNlcyBhdmFpbGFi bGUgdG8gYWxsb2NhdGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3Vy Y2VzLg0KPiArDQo+ICsqKi8NCj4gIFNUQVRJQw0KPiAgRUZJX1NUQVRVUw0KPiAgRUZJQVBJDQo+ ICBQY2lJb0dldEJhckF0dHJpYnV0ZXMgKA0KPiAgICBJTiBFRklfUENJX0lPX1BST1RPQ09MICAg ICAgICAgICAgICpUaGlzLA0KPiBAQCAtNjgwLDEwICs5NTMsMjMgQEAgUGNpSW9HZXRCYXJBdHRy aWJ1dGVzICgNCj4gICAgICAqUmVzb3VyY2VzID0gRGVzY3JpcHRvcjsNCj4gICAgfQ0KPiAgICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAgU2V0cyB0aGUgYXR0cmli dXRlcyBmb3IgYSByYW5nZSBvZiBhIEJBUiBvbiBhIFBDSSBjb250cm9sbGVyLg0KPiArDQo+ICsg IEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1BDSV9J T19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtICBBdHRyaWJ1dGVzICAgICAgICAgICAg VGhlIG1hc2sgb2YgYXR0cmlidXRlcyB0byBzZXQgZm9yIHRoZSByZXNvdXJjZSByYW5nZSBzcGVj aWZpZWQgYnkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFySW5kZXgsIE9m ZnNldCwgYW5kIExlbmd0aC4NCj4gKyAgQHBhcmFtICBCYXJJbmRleCAgICAgICAgICAgICAgVGhl IEJBUiBpbmRleCBvZiB0aGUgc3RhbmRhcmQgUENJIENvbmZpZ3VyYXRpb24gaGVhZGVyIHRvIHVz ZSBhcyB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSBhZGRyZXNz IGZvciByZXNvdXJjZSByYW5nZS4gVGhlIGxlZ2FsIHJhbmdlIGZvciB0aGlzIGZpZWxkIGlzIDAu LjUuDQo+ICsgIEBwYXJhbSAgT2Zmc2V0ICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUg QkFSIHJlbGF0aXZlIGJhc2UgYWRkcmVzcyBvZiB0aGUgcmVzb3VyY2UgcmFuZ2UgdG8gYmUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgYnkgdGhlIGF0dHJpYnV0 ZXMgc3BlY2lmaWVkIGJ5IEF0dHJpYnV0ZXMuDQo+ICsgIEBwYXJhbSAgTGVuZ3RoICAgICAgICAg ICAgICAgIEEgcG9pbnRlciB0byB0aGUgbGVuZ3RoIG9mIHRoZSByZXNvdXJjZSByYW5nZSB0byBi ZSBtb2RpZmllZCBieSB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0 cmlidXRlcyBzcGVjaWZpZWQgYnkgQXR0cmlidXRlcy4NCj4gKyoqLw0KPiAgU1RBVElDDQo+ICBF RklfU1RBVFVTDQo+ICBFRklBUEkNCj4gIFBjaUlvU2V0QmFyQXR0cmlidXRlcyAoDQo+ICAgIElO ICAgICBFRklfUENJX0lPX1BST1RPQ09MICAgICAgICAgICpUaGlzLA0KPiBAQCAtNzE2LDEwICsx MDAyLDE2IEBAIFNUQVRJQyBDT05TVCBFRklfUENJX0lPX1BST1RPQ09MIFBjaUlvVGVtcGxhdGUg PQ0KPiAgICBQY2lJb1NldEJhckF0dHJpYnV0ZXMsDQo+ICAgIDAsDQo+ICAgIDANCj4gIH07DQo+ DQo+ICsvKioNCj4gKyAgSW5pdGlhbGl6ZSBQY2lJbyBQcm90b2NvbC4NCj4gKw0KPiArICBAcGFy YW0gIERldiAgICAgIFBvaW50IHRvIE5PTl9ESVNDT1ZFUkFCTEVfUENJX0RFVklDRSBpbnN0YW5j ZS4NCj4gKw0KPiArKiovDQo+ICBWT0lEDQo+ICBJbml0aWFsaXplUGNpSW9Qcm90b2NvbCAoDQo+ ICAgIE5PTl9ESVNDT1ZFUkFCTEVfUENJX0RFVklDRSAgICAgKkRldg0KPiAgICApDQo+ICB7DQo+ IGRpZmYgLS1naXQgDQo+IGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292ZXJhYmxlUGNp RGV2aWNlRHhlL05vbkRpc2NvdmVyYWJsZVBjaUQNCj4gZXZpY2VJby5oIA0KPiBiL01kZU1vZHVs ZVBrZy9CdXMvUGNpL05vbkRpc2NvdmVyYWJsZVBjaURldmljZUR4ZS9Ob25EaXNjb3ZlcmFibGVQ Y2lEDQo+IGV2aWNlSW8uaA0KPiBpbmRleCBiYzBhM2QzLi4wYjgzYWZmIDEwMDY0NA0KPiAtLS0g DQo+IGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlL05v bkRpc2NvdmVyYWJsZVBjaUQNCj4gZXZpY2VJby5oDQo+ICsrKyBiL01kZU1vZHVsZVBrZy9CdXMv UGNpL05vbkRpc2NvdmVyYWJsZVBjaURldmljZUR4ZS9Ob25EaXNjb3ZlcmFibGUNCj4gKysrIFBj aURldmljZUlvLmgNCj4gQEAgLTcxLDEwICs3MSwxNiBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICAg IC8vIFdoZXRoZXIgdGhpcyBkZXZpY2UgaGFzIGJlZW4gZW5hYmxlZA0KPiAgICAvLw0KPiAgICBC T09MRUFOICAgICAgICAgICAgICAgICAgIEVuYWJsZWQ7DQo+ICB9IE5PTl9ESVNDT1ZFUkFCTEVf UENJX0RFVklDRTsNCj4NCj4gKy8qKg0KPiArICBJbml0aWFsaXplIFBjaUlvIFByb3RvY29sLg0K PiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlICAgICAgUG9pbnQgdG8gTk9OX0RJU0NPVkVSQUJMRV9Q Q0lfREVWSUNFIGluc3RhbmNlLg0KPiArDQo+ICsqKi8NCj4gIFZPSUQNCj4gIEluaXRpYWxpemVQ Y2lJb1Byb3RvY29sICgNCj4gICAgTk9OX0RJU0NPVkVSQUJMRV9QQ0lfREVWSUNFICAgICAqRGV2 aWNlDQo+ICAgICk7DQo+DQo+IC0tDQo+IDEuOS41Lm1zeXNnaXQuMQ0KPg0K