This message generated a parse failure. Raw output follows here. Please use 'back' to navigate. From devnull@lkml.org Fri Apr 26 09:42:32 2024 >From mailfetcher Thu Aug 16 10:34:49 2018 Envelope-to: lkml@grols.ch Delivery-date: Thu, 16 Aug 2018 10:34:48 +0200 Received: from stout.grols.ch [195.201.141.146] by 72459556e3a9 with IMAP (fetchmail-6.3.26) for (single-drop); Thu, 16 Aug 2018 10:34:49 +0200 (CEST) Received: from vger.kernel.org ([209.132.180.67]) by stout.grols.ch with esmtp (Exim 4.89) (envelope-from ) id 1fqDjz-0007GG-Ic for lkml@grols.ch; Thu, 16 Aug 2018 10:34:48 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390018AbeHPLbj (ORCPT ); Thu, 16 Aug 2018 07:31:39 -0400 Received: from mga06.intel.com ([134.134.136.31]:36477 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729008AbeHPLbj (ORCPT ); Thu, 16 Aug 2018 07:31:39 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Aug 2018 01:34:43 -0700 X-ExtLoop1: 1 X-Ironport-AV: E=Sophos;i="5.53,246,1531810800"; d="scan'208";a="65617775" Received: from pgsmsx105.gar.corp.intel.com ([10.221.44.96]) by orsmga008.jf.intel.com with ESMTP; 16 Aug 2018 01:33:59 -0700 Received: from pgsmsx109.gar.corp.intel.com ([169.254.14.29]) by PGSMSX105.gar.corp.intel.com ([169.254.4.236]) with mapi id 14.03.0319.002; Thu, 16 Aug 2018 16:33:55 +0800 From: "Ong, Hean Loong" To: "noralf@tronnes.org" , "airlied@linux.ie" Cc: "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "See, Chin Liang" , "linux-arm-kernel@lists.infradead.org" References: <1534237029-2648-1-git-send-email-hean.loong.ong@intel.com> <1534237029-2648-4-git-send-email-hean.loong.ong@intel.com> <28d5e08c-4ae2-2d09-6ce4-985578535d34@tronnes.org> In-Reply-To: <28d5e08c-4ae2-2d09-6ce4-985578535d34@tronnes.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: X-Originating-IP: [10.226.243.17] Content-Type: text/plain; charset="utf-8" Content-ID: <446964EA5B2B3D4F90256CACF1186786@intel.com> Content-Transfer-Encoding: base64 Mime-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-Id: X-Mailing-List: linux-kernel@vger.kernel.org Received-SPF: none client-ip=209.132.180.67; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org X-Spam-Score: -3.1 X-Spam-Score-Bar: --- X-Spam-Action: no action X-Spam-Report: Action: no action Symbol: ARC_NA(0.00) Symbol: TO_DN_EQ_ADDR_SOME(0.00) Symbol: RCVD_COUNT_FIVE(0.00) Symbol: HAS_XOIP(0.00) Symbol: FROM_HAS_DN(0.00) Symbol: TO_DN_SOME(0.00) Symbol: PRECEDENCE_BULK(0.00) Symbol: MIME_GOOD(-0.10) Symbol: DMARC_POLICY_SO T24gV2VkLCAyMDE4LTA4LTE1IGF0IDE0OjI2ICswMjAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6 DQo+IERlbiAxNC4wOC4yMDE4IDEwLjU3LCBza3JldiBIZWFuLUxvb25nLCBPbmc6DQo+ID4gDQo+ ID4gRnJvbTogT25nIEhlYW4gTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4NCj4gPiAN Cj4gPiBEcml2ZXIgZm9yIEludGVsIEZQR0EgVmlkZW8gYW5kIEltYWdlIFByb2Nlc3NpbmcgU3Vp dGUgRnJhbWUgQnVmZmVyDQo+ID4gSUkuDQo+ID4gVGhlIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRo ZSBJbnRlbCBBcnJpYTEwIGRldmtpdCBhbmQgaXRzIHZhcmlhbnRzLg0KPiA+IFRoaXMgZHJpdmVy IGNhbiBiZSBlaXRoZXIgbG9hZGVkIHN0YXRpY2xseSBvciBpbiBtb2R1bGVzLg0KPiA+IFRoZSBP RiBkZXZpY2UgdHJlZSBiaW5kaW5nIGlzIGxvY2F0ZWQgYXQ6DQo+ID4gRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYWx0cix2aXAtZmIyLnR4dA0KPiA+IA0KPiA+IFNp Z25lZC1vZmYtYnk6IE9uZyBIZWFuIExvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+DQo+ ID4gLS0tDQo+ID4gwqAgZHJpdmVycy9ncHUvZHJtL0tjb25maWfCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB8wqDCoMKgwqAyICsNCj4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGXC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgMSArDQo+ID4gwqAgZHJpdmVycy9n cHUvZHJtL2l2aXAvS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDE0ICsrKw0KPiA+ IMKgIGRyaXZlcnMvZ3B1L2RybS9pdmlwL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDC oMKgOSArKw0KPiA+IMKgIGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMgfMKg wqDCoDk1ICsrKysrKysrKysrKysrKysNCj4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRl bF92aXBfY29yZS5jIHzCoMKgMTYxDQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ ID4gwqAgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5owqDCoHzCoMKgwqA1MiAr KysrKysrKysNCj4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfb2YuY8KgwqDC oHzCoMKgMTkzDQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gwqAg OCBmaWxlcyBjaGFuZ2VkLCA1MjcgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkNCj4gPiDC oCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZw0KPiA+IMKg IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZQ0KPiA+IMKg IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29ubi5j DQo+ID4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3Zp cF9jb3JlLmMNCj4gPiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAv aW50ZWxfdmlwX2Rydi5oDQo+ID4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pdmlwL2ludGVsX3ZpcF9vZi5jDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcNCj4gPiBpbmRleCBjYjg4NTI4 Li42YjI4NDViIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnDQo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcNCj4gPiBAQCAtMjE1LDYgKzIxNSw4IEBAIHNv dXJjZSAiZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZyINCj4gPiDCoMKgDQo+ID4gwqAg c291cmNlICJkcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnIg0KPiA+IMKgwqANCj4gPiArc291 cmNlICJkcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnIg0KPiA+ICsNCj4gPiDCoCBjb25maWcg RFJNX1ZHRU0NCj4gPiDCoMKgCXRyaXN0YXRlICJWaXJ0dWFsIEdFTSBwcm92aWRlciINCj4gPiDC oMKgCWRlcGVuZHMgb24gRFJNDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQ0KPiA+IGluZGV4IGE2NzcxY2UuLjU3MjA1 ZDggMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlDQo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlDQo+ID4gQEAgLTYxLDYgKzYxLDcgQEAgb2JqLSQoQ09O RklHX0RSTV9BTURHUFUpKz0gYW1kL2FtZGdwdS8NCj4gPiDCoCBvYmotJChDT05GSUdfRFJNX01H QSkJKz0gbWdhLw0KPiA+IMKgIG9iai0kKENPTkZJR19EUk1fSTgxMCkJKz0gaTgxMC8NCj4gPiDC oCBvYmotJChDT05GSUdfRFJNX0k5MTUpCSs9IGk5MTUvDQo+ID4gK29iai0kKENPTkZJR19EUk1f SVZJUCkJKz0gaXZpcC8NCj4gPiDCoCBvYmotJChDT05GSUdfRFJNX01HQUcyMDApICs9IG1nYWcy MDAvDQo+ID4gwqAgb2JqLSQoQ09ORklHX0RSTV9WM0QpwqDCoCs9IHYzZC8NCj4gPiDCoCBvYmot JChDT05GSUdfRFJNX1ZDNCnCoMKgKz0gdmM0Lw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaXZpcC9LY29uZmlnDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi4xZDA4YjkwDQo+ID4g LS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL0tjb25maWcNCj4g PiBAQCAtMCwwICsxLDE0IEBADQo+ID4gK2NvbmZpZyBEUk1fSVZJUA0KPiA+ICvCoMKgwqDCoMKg wqDCoMKgdHJpc3RhdGUgIkludGVsIEZHUEEgVmlkZW8gYW5kIEltYWdlIFByb2Nlc3NpbmciDQo+ ID4gK8KgwqDCoMKgwqDCoMKgwqBkZXBlbmRzIG9uIERSTSAmJiBPRg0KPiA+ICvCoMKgwqDCoMKg wqDCoMKgc2VsZWN0IERSTV9HRU1fQ01BX0hFTFBFUg0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgc2Vs ZWN0IERSTV9LTVNfSEVMUEVSDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqBzZWxlY3QgRFJNX0tNU19G Ql9IRUxQRVINCj4gPiArwqDCoMKgwqDCoMKgwqDCoHNlbGVjdCBEUk1fS01TX0NNQV9IRUxQRVIN Cj4gPiArwqDCoMKgwqDCoMKgwqDCoGhlbHANCj4gPiArCQnCoMKgQ2hvb3NlIHRoaXMgb3B0aW9u IGlmIHlvdSBoYXZlIGFuIEludGVsIEZQR0ENCj4gPiBBcnJpYSAxMCBzeXN0ZW0NCj4gPiArCQnC oMKgYW5kIGFib3ZlIHdpdGggYW4gSW50ZWwgRGlzcGxheSBQb3J0IElQLiBUaGlzDQo+ID4gZG9l cyBub3Qgc3VwcG9ydA0KPiA+ICsJCcKgwqBsZWdhY3kgSW50ZWwgRlBHQSBDeWNsb25lIFYgZGlz cGxheSBwb3J0Lg0KPiA+IEN1cnJlbnRseSBvbmx5IHNpbmdsZQ0KPiA+ICsJCcKgwqBmcmFtZSBi dWZmZXIgaXMgc3VwcG9ydGVkLiBOb3RlIHRoYXQgQUNQSSBhbmQNCj4gPiBYXzg2IGFyY2hpdGVj dHVyZQ0KPiA+ICsJCcKgwqBpcyBub3Qgc3VwcG9ydGVkIGZvciBBcnJpYTEwLiBJZiBNIGlzIHNl bGVjdGVkDQo+ID4gdGhlIG1vZHVsZSB3aWxsIGJlDQo+ID4gKwkJwqDCoGNhbGxlZCBpdmlwLg0K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZQ0KPiA+IGIvZHJp dmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAuLmNjNTViMDQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUNCj4gPiBAQCAtMCwwICsxLDkgQEANCj4gPiArIw0K PiA+ICsjIE1ha2VmaWxlIGZvciB0aGUgZHJtIGRldmljZSBkcml2ZXIuwqDCoFRoaXMgZHJpdmVy IHByb3ZpZGVzDQo+ID4gc3VwcG9ydCBmb3IgdGhlDQo+ID4gKyMgRGlyZWN0IFJlbmRlcmluZyBJ bmZyYXN0cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4wIGFuZA0KPiA+IGhpZ2hlci4NCj4g PiArDQo+ID4gK2NjZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtDQo+IFRoaXMgc2hvdWxkbid0IGJl IG5lY2Vzc2FyeSBBRkFJSy4NCj4gDQo+ID4gDQo+ID4gKw0KPiA+ICtvYmotJChDT05GSUdfRFJN X0lWSVApICs9IGl2aXAubw0KPiA+ICtpdmlwLW9ianMgOj0gaW50ZWxfdmlwX29mLm8gaW50ZWxf dmlwX2NvcmUubyBcDQo+ID4gKwlpbnRlbF92aXBfY29ubi5vDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pdmlwL2ludGVsX3ZpcF9jb25uLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4IDAwMDAwMDAuLjQ2YmIwNGMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nvbm4uYw0KPiA+IEBAIC0wLDAgKzEsOTUgQEANCj4g UGxlYXNlIGFkZCBhbiBTUERYIGluZGVudGlmaWVyIGF0IHRoZSB0b3Agb2YgeW91ciBmaWxlcyBh bmQgeW91IGNhbg0KPiBkcm9wDQo+IHRoZSBsaWNlbnNlIHRleHQuDQo+IA0KPiBIZWFkZXIgZmls ZXMgdXNlIHRoaXM6DQo+IC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+ IA0KPiBDLWZpbGVzIHVzZXMgYysrIGNvbW1lbnQgZHVlIHRvIHJlYXNvbnM6DQo+IC8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+IA0KPiA+IA0KPiA+ICsvKg0KPiA+ICsgKiBp bnRlbF92aXBfY29ubi5jIC0tIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJUCkN Cj4gPiArICogRnJhbWUgQnVmZmVyIElJIGRyaXZlcg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGRy aXZlciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25lbnQuDQo+ID4g KyAqIE1vcmUgaW5mbyBvbiB0aGUgaGFyZHdhcmUgY2FuIGJlIGZvdW5kIGluIHRoZSBJbnRlbCBW aWRlbw0KPiA+ICsgKiBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBVc2VyIEd1aWRlIGF0IHRo aXMgYWRkcmVzcw0KPiA+ICsgKiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91 Z192aXAucGRmLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+ID4gbW9kaWZ5IGl0DQo+ID4gKyAq IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj DQo+ID4gTGljZW5zZSwNCj4gPiArICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCj4gPiBXSVRI T1VUDQo+ID4gKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mDQo+ID4gTUVSQ0hBTlRBQklMSVRZIG9yDQo+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLsKgwqBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KPiA+IExpY2Vu c2UgZm9yDQo+ID4gKyAqIG1vcmUgZGV0YWlscy4NCj4gPiArICoNCj4gPiArICogQXV0aG9yczoN Cj4gPiArICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+DQo+ID4g KyAqDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNf aGVscGVyLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+DQo+ID4gKyNp bmNsdWRlIDxkcm0vZHJtX2VuY29kZXJfc2xhdmUuaD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1f cGxhbmVfaGVscGVyLmg+DQo+ID4gKw0KPiA+ICtzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0 YXR1cw0KPiA+ICtpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsDQo+ID4gYm9vbCBmb3JjZSkNCj4gPiArew0KPiA+ICsJcmV0dXJu IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg dm9pZCBpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cg0KPiA+ICpjb25uZWN0b3IpDQo+ID4gK3sNCj4gPiArCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rl cihjb25uZWN0b3IpOw0KPiA+ICsJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5j cw0KPiA+IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9mdW5jcyA9IHsNCj4gPiArCS5yZXNldCA9 IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCwNCj4gPiArCS5kZXRlY3QgPSBpbnRl bHZpcGZiX2RybV9jb25uZWN0b3JfZGV0ZWN0LA0KPiA+ICsJLmZpbGxfbW9kZXMgPSBkcm1faGVs cGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsDQo+ID4gKwkuZGVzdHJveSA9IGludGVs dmlwZmJfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95LA0KPiA+ICsJLmF0b21pY19kZXN0cm95X3N0YXRl ID0NCj4gPiBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2dldF9t b2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcg0KPiA+ICpjb25uZWN0b3IpDQo+ID4gK3sNCj4gPiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBjb25uZWN0b3ItPmRldjsNCj4gPiArCWludCBjb3Vu dDsNCj4gPiArDQo+ID4gKwljb3VudCA9IGRybV9hZGRfbW9kZXNfbm9lZGlkKGNvbm5lY3Rvciwg ZHJtLQ0KPiA+ID5tb2RlX2NvbmZpZy5tYXhfd2lkdGgsDQo+ID4gKwkJCQnCoMKgwqDCoMKgZHJt LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsNCj4gPiArCWRybV9zZXRfcHJlZmVycmVkX21vZGUo Y29ubmVjdG9yLCBkcm0tDQo+ID4gPm1vZGVfY29uZmlnLm1heF93aWR0aCwNCj4gPiArCQkJwqDC oMKgwqDCoMKgwqBkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQpOw0KPiA+ICsJcmV0dXJuIGNv dW50Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3JfaGVscGVyX2Z1bmNzDQo+ID4gK2ludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVu Y3MgPSB7DQo+ID4gKwkuZ2V0X21vZGVzID0gaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2dldF9t b2RlcywNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkcm1fY29ubmVjdG9yICoNCj4gPiAr aW50ZWx2aXBmYl9jb25uX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pDQo+ID4gK3sNCj4g PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ ID4gKwljb25uID0gZGV2bV9remFsbG9jKGRybS0+ZGV2LCBzaXplb2YoKmNvbm4pLCBHRlBfS0VS TkVMKTsNCj4gPiArCWlmIChJU19FUlIoY29ubikpDQo+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4g Kw0KPiA+ICsJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRybSwgY29ubiwNCj4gPiAmaW50ZWx2 aXBmYl9kcm1fY29ubmVjdG9yX2Z1bmNzLA0KPiA+ICsJCQkJwqBEUk1fTU9ERV9DT05ORUNUT1Jf RGlzcGxheVBvcnQpOw0KPiA+ICsJaWYgKHJldCA8IDApIHsNCj4gPiArCQlkZXZfZXJyKGRybS0+ ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgZHJtDQo+ID4gY29ubmVjdG9yXG4iKTsNCj4gPiAr CQlyZXQgPSAtRU5PTUVNOw0KPiA+ICsJCWdvdG8gZXJyb3JfY29ubmVjdG9yX2NsZWFudXA7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJY29ubi0+cG9sbGVkID0gMDsNCj4gTm8gbmVlZCB0byBzZXQg dGhpcywgaXQgaXMgYWxyZWFkeSB6ZXJvIGZyb20gdGhlIGFsbG9jYXRpb24uDQo+IA0KPiA+IA0K PiA+ICsJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm4sDQo+ID4gJmludGVsdmlwZmJfZHJt X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOw0KPiA+ICsNCj4gPiArCXJldHVybiBjb25uOw0KPiA+ ICsNCj4gPiArZXJyb3JfY29ubmVjdG9yX2NsZWFudXA6DQo+ID4gKwlkcm1fY29ubmVjdG9yX2Ns ZWFudXAoY29ubik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIE5VTEw7DQo+ID4gK30NCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYw0KPiA+IGIvZHJp dmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uYjYwMWJiNA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29yZS5jDQo+ID4gQEAgLTAsMCAr MSwxNjAgQEANCj4gPiArLyoNCj4gPiArICogaW50ZWxfdmlwX2NvcmUuYyAtLSBJbnRlbCBWaWRl byBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApDQo+ID4gKyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2 ZXINCj4gPiArICoNCj4gPiArICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEludGVsIFZJUCBG cmFtZSBSZWFkZXIgY29tcG9uZW50Lg0KPiA+ICsgKiBNb3JlIGluZm8gb24gdGhlIGhhcmR3YXJl IGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8NCj4gPiArICogYW5kIEltYWdlIFByb2Nl c3NpbmcgU3VpdGUgVXNlciBHdWlkZSBhdCB0aGlzIGFkZHJlc3MNCj4gPiArICogaHR0cDovL3d3 dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZi4NCj4gPiArICoNCj4gPiArICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcg0KPiA+IG1vZGlmeSBpdA0KPiA+ICsgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KPiA+IExpY2Vuc2UsDQo+ID4gKyAqIHZlcnNp b24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQo+ID4g KyAqDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0DQo+ID4gV0lUSE9VVA0KPiA+ICsgKiBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPiA+IE1FUkNIQU5UQUJJTElUWSBv cg0KPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS7CoMKgU2VlIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMNCj4gPiBMaWNlbnNlIGZvcg0KPiA+ICsgKiBtb3JlIGRldGFpbHMu DQo+ID4gKyAqDQo+ID4gKyAqIEF1dGhvcnM6DQo+ID4gKyAqIE9uZywgSGVhbi1Mb29uZyA8aGVh bi5sb29uZy5vbmdAaW50ZWwuY29tPg0KPiA+ICsgKg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNp bmNsdWRlIDxkcm0vZHJtUC5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4g PiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJt L2RybV9jcnRjX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4N Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8 ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9o ZWxwZXIuaD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaD4NCj4g PiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPg0KPiA+ICsNCj4g PiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAi aW50ZWxfdmlwX2Rydi5oIg0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9lbmFi bGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlDQo+ID4gKnBpcGUsDQo+ID4gKwkJCcKg wqDCoMKgwqDCoHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4gPiBzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkNCj4gPiArew0KPiA+ICsJLyoNCj4gPiArCcKg KiBUaGUgZnJhbWVpbmZvIHZhcmlhYmxlIGhhcyB0byBjb3JyZXNwb25kIHRvIHRoZSBzaXplIG9m DQo+ID4gdGhlIFZJUCBTdWl0ZQ0KPiA+ICsJwqAqIEZyYW1lIFJlYWRlciByZWdpc3RlciA3IHdo aWNoIHdpbGwgZGV0ZXJtaW5lIHRoZQ0KPiA+IG1heGltdW0gc2l6ZSB1c2VkDQo+ID4gKwnCoCog aW4gdGhpcyBmcmFtZWluZm8NCj4gPiArCcKgKi8NCj4gPiArDQo+ID4gKwl1MzIgZnJhbWVpbmZv Ow0KPiA+ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqcHJpdiA9IHBpcGUtPnBsYW5lLmRldi0N Cj4gPiA+ZGV2X3ByaXZhdGU7DQo+ID4gKwl2b2lkIF9faW9tZW0gKmJhc2UgPSBwcml2LT5iYXNl Ow0KPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwaXBlLT5wbGFuZS5zdGF0 ZTsNCj4gPiArCWRtYV9hZGRyX3QgYWRkcjsNCj4gPiArDQo+ID4gKwlhZGRyID0gZHJtX2ZiX2Nt YV9nZXRfZ2VtX2FkZHIoc3RhdGUtPmZiLCBzdGF0ZSwgMCk7DQo+ID4gKw0KPiA+ICsJZnJhbWVp bmZvID0NCj4gPiArCQlyZWFkbChiYXNlICsgSU5URUxWSVBGQl9GUkFNRV9SRUFERVIpICYNCj4g PiAweDAwZmZmZmZmOw0KPiA+ICsJd3JpdGVsKGZyYW1laW5mbywgYmFzZSArIElOVEVMVklQRkJf RlJBTUVfSU5GTyk7DQo+ID4gKwl3cml0ZWwoYWRkciwgYmFzZSArIElOVEVMVklQRkJfRlJBTUVf U1RBUlQpOw0KPiA+ICsJLyogRmluYWxseSBzZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgdG8gMSB0 byBzdGFydA0KPiA+IHN0cmVhbWluZyAqLw0KPiA+ICsJd3JpdGVsKDEsIGJhc2UgKyBJTlRFTFZJ UEZCX0NPTlRST0wpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpbnRlbHZpcGZi X2Rpc2FibGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlDQo+ID4gKnBpcGUpDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKnByaXYgPSBwaXBlLT5wbGFuZS5kZXYt DQo+ID4gPmRldl9wcml2YXRlOw0KPiA+ICsJdm9pZCBfX2lvbWVtICpiYXNlID0gcHJpdi0+YmFz ZTsNCj4gPiArCS8qIHNldCB0aGUgY29udHJvbCByZWdpc3RlciB0byAwIHRvIHN0b3Agc3RyZWFt aW5nICovDQo+ID4gKwl3cml0ZWwoMCwgYmFzZSArIElOVEVMVklQRkJfQ09OVFJPTCk7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNz DQo+ID4gaW50ZWx2aXBmYl9tb2RlX2NvbmZpZ19mdW5jcyA9IHsNCj4gPiArCS5mYl9jcmVhdGUg PSBkcm1fZ2VtX2ZiX2NyZWF0ZSwNCj4gPiArCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hl bHBlcl9jaGVjaywNCj4gPiArCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxwZXJfY29t bWl0LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9zZXR1cF9t b2RlX2NvbmZpZyhzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQ0KPiA+ICt7DQo+ID4gKwlkcm1fbW9k ZV9jb25maWdfaW5pdChkcm0pOw0KPiA+ICsJZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZpbnRl bHZpcGZiX21vZGVfY29uZmlnX2Z1bmNzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50 IGludGVsdmlwZmJfcGlwZV9wcmVwYXJlX2ZiKHN0cnVjdA0KPiA+IGRybV9zaW1wbGVfZGlzcGxh eV9waXBlICpwaXBlLA0KPiA+ICsJCQkJwqDCoMKgwqDCoMKgc3RydWN0IGRybV9wbGFuZV9zdGF0 ZQ0KPiA+ICpwbGFuZV9zdGF0ZSkNCj4gPiArew0KPiA+ICsJcmV0dXJuIGRybV9nZW1fZmJfcHJl cGFyZV9mYigmcGlwZS0+cGxhbmUsIHBsYW5lX3N0YXRlKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyBmYnByaXZfZnVuY3Mg PSB7DQo+ID4gKwkucHJlcGFyZV9mYiA9IGludGVsdmlwZmJfcGlwZV9wcmVwYXJlX2ZiLA0KPiBZ b3UgY2FuIHVzZSBkcm1fZ2VtX2ZiX3NpbXBsZV9kaXNwbGF5X3BpcGVfcHJlcGFyZV9mYigpLCBu byBuZWVkIHRvDQo+IHJvbGwNCj4geW91ciBvd24uDQo+IA0KPiA+IA0KPiA+ICsJLmVuYWJsZSA9 IGludGVsdmlwZmJfZW5hYmxlLA0KPiA+ICsJLmRpc2FibGUgPSBpbnRlbHZpcGZiX2Rpc2FibGUN Cj4gPiArfTsNCj4gPiArDQo+ID4gK2ludCBpbnRlbHZpcGZiX3Byb2JlKHN0cnVjdCBkZXZpY2Ug KmRldikNCj4gPiArew0KPiA+ICsJaW50IHJldHZhbDsNCj4gPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkcm07DQo+ID4gKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpmYnByaXYgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsNCj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7DQo+ID4g Kwl1MzIgZm9ybWF0c1tdID0ge0RSTV9GT1JNQVRfWFJHQjg4ODh9Ow0KPiA+ICsNCj4gPiArCWRy bSA9IGZicHJpdi0+ZHJtOw0KPiA+ICsNCj4gPiArCWRybS0+ZGV2X3ByaXZhdGUgPSBmYnByaXY7 DQo+ID4gKw0KPiA+ICsJaW50ZWx2aXBmYl9zZXR1cF9tb2RlX2NvbmZpZyhkcm0pOw0KPiA+ICsN Cj4gPiArCWNvbm5lY3RvciA9IGludGVsdmlwZmJfY29ubl9zZXR1cChkcm0pOw0KPiA+ICsJaWYg KCFjb25uZWN0b3IpIHsNCj4gPiArCQlkZXZfZXJyKGRybS0+ZGV2LCAiQ29ubmVjdG9yIHNldHVw IGZhaWxlZFxuIik7DQo+ID4gKwkJZ290byBlcnJfbW9kZV9jb25maWc7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJcmV0dmFsID0gZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfaW5pdChkcm0sICZmYnBy aXYtPnBpcGUsDQo+ID4gKwkJCQkJwqDCoMKgwqDCoMKgJmZicHJpdl9mdW5jcywNCj4gPiBmb3Jt YXRzLA0KPiA+ICsJCQlBUlJBWV9TSVpFKGZvcm1hdHMpLCBOVUxMLCBjb25uZWN0b3IpOw0KPiA+ ICsJaWYgKHJldHZhbCA8IDApIHsNCj4gPiArCQlkZXZfZXJyKGRybS0+ZGV2LCAiQ2Fubm90IHNl dHVwIHNpbXBsZSBkaXNwbGF5DQo+ID4gcGlwZVxuIik7DQo+ID4gKwkJZ290byBlcnJfbW9kZV9j b25maWc7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZmJwcml2LT5mYmNtYSA9IGRybV9mYmRldl9j bWFfaW5pdChkcm0sDQo+ID4gKwkJCWRybS0+bW9kZV9jb25maWcucHJlZmVycmVkX2RlcHRoLA0K PiA+ICsJCQlkcm0tPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3IpOw0KPiBQbGVhc2UgdXNlIGRy bV9mYmRldl9nZW5lcmljX3NldHVwKCkgZm9yIGZiZGV2IGVtdWxhdGlvbi4gSXQgdGVhcnMNCj4g ZG93bg0KPiBhdXRvbWF0aWNhbGx5IG9uIGRybV9kZXZfdW5yZWdpc3RlcigpIGFuZCB5b3UgZG9u J3QgbmVlZCB0aGUNCj4gZHJtX2RyaXZlci0+bGFzdGNsb3NlIGhvb2suDQo+IA0KPiBBbGwgZHJp dmVycyB0aGF0IHVzZSBkcm1fZmJkZXZfY21hX2luaXQoKSB3aWxsIG1vdmUgdG8gdGhpcyBzaG9y dGx5Lg0KPiANCj4gTm9yYWxmLg0KPiANCkkgY291bGQgbm90IGZpbmQgYW55IGV4YW1wbGVzIHRo YXQgY3VycmVudGx5IHVzZXMNCnRoZcKgZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAgKCkuIFdvdWxk IHlvdSBtaW5kIHBvaW50aW5nIG1lIG9uIHdoZXJlDQpzdWNoIGV4YW1wbGVzIGFyZSBhdmFpbGFi bGUgdGhhdCB3b3VsZCBhbGxvdyBtZSB0byByZXBsYWNlIHRoZQ0KYXNzaWdubWVudCBvZiB0aGUg ZmJjbWEgcG9pbnRlciB3aXRowqBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cCgpIG1ldGhvZA0KDQpU aGFua3MuDQpIZWFuIExvb25nLg0KDQo+ID4gDQo+ID4gKw0KPiA+ICsJZHJtX21vZGVfY29uZmln X3Jlc2V0KGRybSk7DQo+ID4gKw0KPiA+ICsJZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOw0KPiA+ ICsNCj4gPiArCXJldHVybiByZXR2YWw7DQo+ID4gKw0KPiA+ICtlcnJfbW9kZV9jb25maWc6DQo+ ID4gKw0KPiA+ICsJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsNCj4gPiArCXJldHVybiAt RU5PREVWOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgaW50ZWx2aXBmYl9yZW1vdmUoc3RydWN0 IGRldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpmYnBy aXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0g PcKgwqBmYnByaXYtPmRybTsNCj4gPiArDQo+ID4gKwlkcm1fZGV2X3VucmVnaXN0ZXIoZHJtKTsN Cj4gPiArDQo+ID4gKwlpZiAoZmJwcml2LT5mYmNtYSkNCj4gPiArCQlkcm1fZmJkZXZfY21hX2Zp bmkoZmJwcml2LT5mYmNtYSk7DQo+ID4gKw0KPiA+ICsJZHJtX21vZGVfY29uZmlnX2NsZWFudXAo ZHJtKTsNCj4gPiArCWRybV9kZXZfdW5yZWYoZHJtKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigiT25nLCBIZWFuLUxvb25nIDxoZWFu Lmxvb25nLm9uZ0BpbnRlbC5jb20+Iik7DQo+ID4gK01PRFVMRV9ERVNDUklQVElPTigiSW50ZWwg VklQIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIiKTsNCj4gPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2 MiIpOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfZHJ2 LmgNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaA0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uMGEzNTU1ZA0KPiA+IC0tLSAvZGV2 L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfZHJ2LmgNCj4g PiBAQCAtMCwwICsxLDUyIEBADQo+ID4gKy8qDQo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAxNyBJ bnRlbCBDb3Jwb3JhdGlvbi4NCj4gPiArICoNCj4gPiArICogSW50ZWwgVmlkZW8gYW5kIEltYWdl IFByb2Nlc3NpbmcoVklQKSBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyLg0KPiA+ICsgKg0KPiA+ICsg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yDQo+ID4gbW9kaWZ5IGl0DQo+ID4gKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQo+ID4gTGljZW5zZSwNCj4gPiArICogdmVy c2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4NCj4g PiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0 IHdpbGwgYmUgdXNlZnVsLCBidXQNCj4gPiBXSVRIT1VUDQo+ID4gKyAqIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4gTUVSQ0hBTlRBQklMSVRZ IG9yDQo+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLsKgwqBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYw0KPiA+IExpY2Vuc2UgZm9yDQo+ID4gKyAqIG1vcmUgZGV0YWls cy4NCj4gPiArICoNCj4gPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljDQo+ID4gTGljZW5zZSBhbG9uZyB3aXRoDQo+ID4gKyAqIHRo aXMgcHJvZ3JhbS7CoMKgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ Lg0KPiA+ICsgKg0KPiA+ICsgKiBBdXRob3JzOg0KPiA+ICsgKiBPbmcsIEhlYW4tTG9vbmcgPGhl YW4ubG9vbmcub25nQGludGVsLmNvbT4NCj4gPiArICoNCj4gPiArICovDQo+ID4gKyNpZm5kZWYg X0lOVEVMX1ZJUF9EUlZfSA0KPiA+ICsjZGVmaW5lIF9JTlRFTF9WSVBfRFJWX0gNCj4gPiArDQo+ ID4gKyNkZWZpbmUgRFJJVkVSX05BTUXCoMKgwqDCoCJpbnRlbHZpcGZiIg0KPiA+ICsjZGVmaW5l IEJZVEVTX1BFUl9QSVhFTAnCoDQNCj4gPiArI2RlZmluZSBDUlRDX05VTQnCoMKgwqDCoMKgwqDC oMKgMQ0KPiA+ICsjZGVmaW5lIENPTk5fTlVNCcKgwqDCoMKgwqDCoMKgwqAxDQo+ID4gKw0KPiA+ ICsvKiBjb250cm9sIHJlZ2lzdGVycyAqLw0KPiA+ICsjZGVmaW5lIElOVEVMVklQRkJfQ09OVFJP TAnCoMKgwqDCoMKgwqAwDQo+ID4gKyNkZWZpbmUgSU5URUxWSVBGQl9TVEFUVVMJwqDCoMKgwqDC oMKgwqAweDQNCj4gPiArI2RlZmluZSBJTlRFTFZJUEZCX0lOVEVSUlVQVAnCoMKgwqDCoDB4OA0K PiA+ICsjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfQ09VTlRFUgkweEMNCj4gPiArI2RlZmluZSBJ TlRFTFZJUEZCX0ZSQU1FX0RST1AJwqDCoMKgMHgxMA0KPiA+ICsjZGVmaW5lIElOVEVMVklQRkJf RlJBTUVfSU5GTwnCoMKgwqAweDE0DQo+ID4gKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9TVEFS VAnCoMKgMHgxOA0KPiA+ICsjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfUkVBREVSCcKgwqDCoMKg wqDCoMKgwqDCoDB4MUMNCj4gPiArDQo+ID4gK2ludCBpbnRlbHZpcGZiX3Byb2JlKHN0cnVjdCBk ZXZpY2UgKmRldik7DQo+ID4gK2ludCBpbnRlbHZpcGZiX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpk ZXYpOw0KPiA+ICtpbnQgaW50ZWx2aXBmYl9zZXR1cF9jcnRjKHN0cnVjdCBkcm1fZGV2aWNlICpk cm0pOw0KPiA+ICtzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqaW50ZWx2aXBmYl9jb25uX3NldHVwKHN0 cnVjdCBkcm1fZGV2aWNlDQo+ID4gKmRybSk7DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgaW50ZWx2aXBm Yl9wcml2IHsNCj4gPiArCXN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSBwaXBlOw0KPiA+ ICsJc3RydWN0IGRybV9mYmRldl9jbWEgKmZiY21hOw0KPiA+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRybTsNCj4gPiArCXZvaWTCoMKgwqDCoF9faW9tZW0gKmJhc2U7DQo+ID4gK307DQo+ID4gKw0K PiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxf dmlwX29mLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9vZi5jDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi40NzMwMmY5DQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9vZi5j DQo+ID4gQEAgLTAsMCArMSwxOTMgQEANCj4gPiArLyoNCj4gPiArICogaW50ZWxfdmlwX29mLmMg LS0gSW50ZWwgVmlkZW8gYW5kIEltYWdlIFByb2Nlc3NpbmcoVklQKQ0KPiA+ICsgKiBGcmFtZSBC dWZmZXIgSUkgZHJpdmVyDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRo ZSBJbnRlbCBWSVAgRnJhbWUgUmVhZGVyIGNvbXBvbmVudC4NCj4gPiArICogTW9yZSBpbmZvIG9u IHRoZSBoYXJkd2FyZSBjYW4gYmUgZm91bmQgaW4gdGhlIEludGVsIFZpZGVvDQo+ID4gKyAqIGFu ZCBJbWFnZSBQcm9jZXNzaW5nIFN1aXRlIFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNzDQo+ID4g KyAqIGh0dHA6Ly93d3cuYWx0ZXJhLmNvbS9saXRlcmF0dXJlL3VnL3VnX3ZpcC5wZGYuDQo+ID4g KyAqDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3INCj4gPiBtb2RpZnkgaXQNCj4gPiArICogdW5kZXIgdGhlIHRlcm1z IGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCj4gPiBMaWNlbnNlLA0K PiA+ICsgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KPiA+IFdJVEhPVVQNCj4gPiArICogQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCj4gPiBNRVJD SEFOVEFCSUxJVFkgb3INCj4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu wqDCoFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljDQo+ID4gTGljZW5zZSBmb3INCj4gPiArICog bW9yZSBkZXRhaWxzLg0KPiA+ICsgKg0KPiA+ICsgKiBBdXRob3JzOg0KPiA+ICsgKiBPbmcsIEhl YW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4NCj4gPiArICoNCj4gPiArICovDQo+ ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9mYl9jbWFfaGVscGVyLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVy Lmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX29mLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJt X3NpbXBsZV9rbXNfaGVscGVyLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvY29tcG9u ZW50Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiaW50ZWxf dmlwX2Rydi5oIg0KPiA+ICsNCj4gPiArREVGSU5FX0RSTV9HRU1fQ01BX0ZPUFMoZHJtX2ZvcHMp Ow0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9sYXN0Y2xvc2Uoc3RydWN0IGRy bV9kZXZpY2UgKmRybSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqcHJp diA9IGRybS0+ZGV2X3ByaXZhdGU7DQo+ID4gKw0KPiA+ICsJZHJtX2ZiZGV2X2NtYV9yZXN0b3Jl X21vZGUocHJpdi0+ZmJjbWEpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IGRy bV9kcml2ZXIgaW50ZWx2aXBmYl9kcm0gPSB7DQo+ID4gKwkuZHJpdmVyX2ZlYXR1cmVzID0NCj4g PiArCQkJRFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNIHwNCj4gPiArCQkJRFJJVkVSX1BSSU1F IHwgRFJJVkVSX0FUT01JQywNCj4gPiArCS5nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQgPSBkcm1f Z2VtX2NtYV9mcmVlX29iamVjdCwNCj4gPiArCS5nZW1fdm1fb3BzID0gJmRybV9nZW1fY21hX3Zt X29wcywNCj4gPiArCS5kdW1iX2NyZWF0ZSA9IGRybV9nZW1fY21hX2R1bWJfY3JlYXRlLA0KPiA+ ICsJLmR1bWJfZGVzdHJveSA9IGRybV9nZW1fZHVtYl9kZXN0cm95LA0KPiA+ICsJLnByaW1lX2hh bmRsZV90b19mZCA9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLA0KPiA+ICsJLnByaW1lX2Zk X3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLA0KPiA+ICsJLmdlbV9wcmlt ZV9leHBvcnQgPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwNCj4gPiArCS5nZW1fcHJpbWVfaW1wb3J0 ID0gZHJtX2dlbV9wcmltZV9pbXBvcnQsDQo+ID4gKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZSA9 IGRybV9nZW1fY21hX3ByaW1lX2dldF9zZ190YWJsZSwNCj4gPiArCS5nZW1fcHJpbWVfaW1wb3J0 X3NnX3RhYmxlID0NCj4gPiBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2dfdGFibGUsDQo+ID4g KwkuZ2VtX3ByaW1lX3ZtYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLA0KPiA+ICsJLmdlbV9w cmltZV92dW5tYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAsDQo+ID4gKwkuZ2VtX3ByaW1l X21tYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLA0KPiA+ICsJLmxhc3RjbG9zZSA9IGludGVs dmlwZmJfbGFzdGNsb3NlLA0KPiA+ICsJLm5hbWUgPSBEUklWRVJfTkFNRSwNCj4gPiArCS5kYXRl ID0gIjIwMTcwNzI5IiwNCj4gPiArCS5kZXNjID0gIkludGVsIEZQR0EgVklQIFNVSVRFIiwNCj4g PiArCS5tYWpvciA9IDEsDQo+ID4gKwkubWlub3IgPSAwLA0KPiA+ICsJLmlvY3RscyA9IE5VTEws DQo+ID4gKwkucGF0Y2hsZXZlbCA9IDAsDQo+ID4gKwkuZm9wcyA9ICZkcm1fZm9wcywNCj4gPiAr fTsNCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFNldHRpbmcgdXAgaW5mb3JtYXRpb24gZGVyaXZl ZCBmcm9tIE9GIERldmljZSBUcmVlIE5vZGVzDQo+ID4gKyAqIG1heC13aWR0aCwgbWF4LWhlaWdo dCwgYml0cyBwZXIgcGl4ZWwsIG1lbW9yeSBwb3J0IHdpZHRoDQo+ID4gKyAqLw0KPiA+ICsNCj4g PiArc3RhdGljIGludCBpbnRlbHZpcGZiX2RybV9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ ID4gKwkJCQlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpmYnByaXYpDQo+ID4gK3sNCj4gPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBmYnByaXYtPmRybTsNCj4gPiArCXN0cnVjdCBkZXZpY2Vf bm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7DQo+ID4gKwlpbnQgbWVtX3dvcmRfd2lkdGg7DQo+ID4g KwlpbnQgbWF4X2gsIG1heF93Ow0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlyZXQgPSBv Zl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFsdHIsbWF4LXdpZHRoIiwgJm1heF93KTsNCj4gPiAr CWlmIChyZXQpIHsNCj4gPiArCQlkZXZfZXJyKGRldiwNCj4gPiArCQkJIk1pc3NpbmcgcmVxdWly ZWQgcGFyYW1ldGVyICdhbHRyLG1heC0NCj4gPiB3aWR0aCciKTsNCj4gPiArCQlyZXR1cm4gcmV0 Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAi YWx0cixtYXgtaGVpZ2h0IiwgJm1heF9oKTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiArCQlkZXZf ZXJyKGRldiwNCj4gPiArCQkJIk1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyICdhbHRyLG1heC0N Cj4gPiBoZWlnaHQnIik7DQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFsdHIsbWVtLXBvcnQtd2lkdGgiLA0K PiA+ICZtZW1fd29yZF93aWR0aCk7DQo+ID4gKwlpZiAocmV0KSB7DQo+ID4gKwkJZGV2X2Vycihk ZXYsICJNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcg0KPiA+ICdhbHRyLG1lbS1wb3J0LXdpZHRo ICciKTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmICghKG1l bV93b3JkX3dpZHRoID49IDMyICYmIG1lbV93b3JkX3dpZHRoICUgMzIgPT0gMCkpIHsNCj4gPiAr CQlkZXZfZXJyKGRldiwNCj4gPiArCQkJIm1lbS13b3JkLXdpZHRoIGlzIHNldCB0byAlaS4gbXVz dCBiZSA+PQ0KPiA+IDMyIGFuZCBtdWx0aXBsZSBvZiAzMi4iLA0KPiA+ICsJCQnCoG1lbV93b3Jk X3dpZHRoKTsNCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlk cm0tPm1vZGVfY29uZmlnLm1pbl93aWR0aCA9IDY0MDsNCj4gPiArCWRybS0+bW9kZV9jb25maWcu bWluX2hlaWdodCA9IDQ4MDsNCj4gPiArCWRybS0+bW9kZV9jb25maWcubWF4X3dpZHRoID0gbWF4 X3c7DQo+ID4gKwlkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSBtYXhfaDsNCj4gPiArCWRy bS0+bW9kZV9jb25maWcucHJlZmVycmVkX2RlcHRoID0gMzI7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9vZl9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmV0dmFsOw0K PiA+ICsJc3RydWN0IHJlc291cmNlICpyZWdfcmVzOw0KPiA+ICsJc3RydWN0IGludGVsdmlwZmJf cHJpdiAqZmJwcml2Ow0KPiA+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4g PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07DQo+ID4gKw0KPiA+ICsJZmJwcml2ID0gZGV2bV9r emFsbG9jKGRldiwgc2l6ZW9mKCpmYnByaXYpLCBHRlBfS0VSTkVMKTsNCj4gPiArCWlmICghZmJw cml2KQ0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArCS8qc2V0dXAgRFJNICov DQo+ID4gKwlkcm0gPSBkcm1fZGV2X2FsbG9jKCZpbnRlbHZpcGZiX2RybSwgZGV2KTsNCj4gPiAr CWlmIChJU19FUlIoZHJtKSkNCj4gPiArCQlyZXR1cm4gUFRSX0VSUihkcm0pOw0KPiA+ICsNCj4g PiArCXJldHZhbCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoZHJtLT5kZXYsDQo+ID4gRE1B X0JJVF9NQVNLKDMyKSk7DQo+ID4gKwlpZiAocmV0dmFsKQ0KPiA+ICsJCXJldHVybiAtRU5PREVW Ow0KPiA+ICsNCj4gPiArCWZicHJpdi0+ZHJtID0gZHJtOw0KPiA+ICsNCj4gPiArCXJlZ19yZXMg PSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0KPiA+ICsJ aWYgKCFyZWdfcmVzKQ0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArCWZicHJp di0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlZ19yZXMpOw0KPiA+ICsNCj4g PiArCWlmIChJU19FUlIoZmJwcml2LT5iYXNlKSkgew0KPiA+ICsJCWRldl9lcnIoZGV2LCAiZGV2 bV9pb3JlbWFwX3Jlc291cmNlIGZhaWxlZFxuIik7DQo+ID4gKwkJcmV0dmFsID0gUFRSX0VSUihm YnByaXYtPmJhc2UpOw0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCWludGVsdmlwZmJfZHJtX3NldHVwKGRldiwgZmJwcml2KTsNCj4gPiArDQo+ID4gKwlkZXZf c2V0X2RydmRhdGEoZGV2LCBmYnByaXYpOw0KPiA+ICsNCj4gPiArCXJldHVybiBpbnRlbHZpcGZi X3Byb2JlKGRldik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9v Zl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiArew0KPiA+ICsJcmV0 dXJuIGludGVsdmlwZmJfcmVtb3ZlKCZwZGV2LT5kZXYpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv Kg0KPiA+ICsgKiBUaGUgbmFtZSB2aXAtZnJhbWUtYnVmZmVyLTIuMCBpcyBkZXJpdmVkIGZyb20N Cj4gPiArICogaHR0cDovL3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZg0K PiA+ICsgKiBmcmFtZSBidWZmZXIgSVAgY29yZXMgc2VjdGlvbiAxNA0KPiA+ICsgKi8NCj4gPiAr DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGludGVsdmlwZmJfb2ZfbWF0 Y2hbXSA9IHsNCj4gPiArCXsgLmNvbXBhdGlibGUgPSAiYWx0cix2aXAtZnJhbWUtYnVmZmVyLTIu MCIgfSwNCj4gPiArCXt9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArTU9EVUxFX0RFVklDRV9UQUJM RShvZiwgaW50ZWx2aXBmYl9vZl9tYXRjaCk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHBs YXRmb3JtX2RyaXZlciBpbnRlbHZpcGZiX2RyaXZlciA9IHsNCj4gPiArCS5wcm9iZSA9IGludGVs dmlwZmJfb2ZfcHJvYmUsDQo+ID4gKwkucmVtb3ZlID0gaW50ZWx2aXBmYl9vZl9yZW1vdmUsDQo+ ID4gKwkuZHJpdmVyID0gew0KPiA+ICsJCS5uYW1lID0gRFJJVkVSX05BTUUsDQo+ID4gKwkJLm9m X21hdGNoX3RhYmxlID0gaW50ZWx2aXBmYl9vZl9tYXRjaCwNCj4gPiArCX0sDQo+ID4gK307DQo+ ID4gKw0KPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGludGVsdmlwZmJfZHJpdmVyKTs=