Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp5990601rdb; Sun, 17 Sep 2023 23:48:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHOj1vGhOpaqQU+5cEIRh2gYoO3LjliHtwBDz3MclPJRmMgCdUkk+JIARYUEPVku9ejGxSH X-Received: by 2002:a17:90a:bc1:b0:26f:c6d5:3cd4 with SMTP id x1-20020a17090a0bc100b0026fc6d53cd4mr6173214pjd.43.1695019684720; Sun, 17 Sep 2023 23:48:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695019684; cv=none; d=google.com; s=arc-20160816; b=J4acUdkAKwf9qzNo46E2NAMj8C3EwIfieRcp4gw+dSj3atEwul/Zl486JjRDiP0Irv QEPaA90IKt2UP1Hc1TWpeRoHj98memLXLEjlpoIaEO8TLz1oQ5ioAVBKiVxW0LmL2ot3 VXnmjeXwreB2B3yackMMpnSIuyYdtO6YmgQMTWRmAifUaQJaHOzp0dOz4Y37wuHj1PIV B8S8iIaqIfy2AzCtxXAxsUrjAVPybqurcDwAD6Q5fiO/AL/NrowUoMNWO25FXuRnjtJh 3HnjboLFJ8yo89NmwFsnJQgPJwub2OeVeoEnZrXnW11tTyVKkkiS3P54p5RR4IInM0BX vOoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from; bh=1J0G4ipFjyF9NpCNTvt7/7ahl1tKGG6a932U7RtaEV4=; fh=fFZFZV0LnYUbQYvz7YbJX6P++RTUMAflvG5SSfSTs5k=; b=ALkaYDtuOkPPjq2ffM+39NgvJyLRMlkFe0dC99nyjcrjpGj3AKx9Vf54SV0Ys6RtyY SWi//EOCXSplrmoPv1CqdtouK8fFPgDlb6iFhXiuL//0aM+2J2YrjCO/630V7vvxqLeF OvUgUolHUUJg3l7hWczYs+yuDfCg8sZPKc2Eyw9kR1MUUTuZRCrQCF8mFEIihRTSB1IA BzTab+/wlfyWvIMnX+dNtVRVd5LYNTOQVxsOhx8wGMhDmy5jqhNdOEQ83Fdn83M0uO2x Ooh/n1zeJU7kUn1l7jweVBj4k5EB9pTIgWahz2vV2ZM4gEgSB2QUuca4x6lR6Vgfuzbb YJ5g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id o13-20020a17090ac70d00b0026b49dac834si1691327pjt.34.2023.09.17.23.48.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Sep 2023 23:48:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 0A7738034647; Sun, 17 Sep 2023 23:42:24 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238248AbjIRGlO (ORCPT + 99 others); Mon, 18 Sep 2023 02:41:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239851AbjIRGlE (ORCPT ); Mon, 18 Sep 2023 02:41:04 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D5841E6; Sun, 17 Sep 2023 23:40:52 -0700 (PDT) X-SpamFilter-By: ArmorX SpamTrap 5.78 with qID 38I6eY3L11761418, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36506.realtek.com.tw[172.21.6.27]) by rtits2.realtek.com.tw (8.15.2/2.92/5.92) with ESMTPS id 38I6eY3L11761418 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 Sep 2023 14:40:34 +0800 Received: from RTEXDAG01.realtek.com.tw (172.21.6.100) by RTEXH36506.realtek.com.tw (172.21.6.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.17; Mon, 18 Sep 2023 14:40:35 +0800 Received: from RTEXMBS04.realtek.com.tw (172.21.6.97) by RTEXDAG01.realtek.com.tw (172.21.6.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Mon, 18 Sep 2023 14:40:34 +0800 Received: from RTEXMBS04.realtek.com.tw ([fe80::7445:d92b:d0b3:f79c]) by RTEXMBS04.realtek.com.tw ([fe80::7445:d92b:d0b3:f79c%5]) with mapi id 15.01.2375.007; Mon, 18 Sep 2023 14:40:34 +0800 From: =?big5?B?U3RhbmxleSBDaGFuZ1up96h8vHdd?= To: =?big5?B?U3RhbmxleSBDaGFuZ1up96h8vHdd?= , MyungJoo Ham CC: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chanwoo Choi , "linux-usb@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v3 1/2] extcon: add Realtek DHC RTD SoC Type-C driver Thread-Topic: [PATCH v3 1/2] extcon: add Realtek DHC RTD SoC Type-C driver Thread-Index: AQHZ3u58OLY8hY7bwUySjxPCOIjYqLAgN6ug Date: Mon, 18 Sep 2023 06:40:34 +0000 Message-ID: <43138ac278224fb78055c5c78e93cfb0@realtek.com> References: <20230904051253.23208-1-stanley_chang@realtek.com> In-Reply-To: <20230904051253.23208-1-stanley_chang@realtek.com> Accept-Language: zh-TW, en-US Content-Language: zh-TW x-originating-ip: [172.21.190.159] x-kse-serverinfo: RTEXDAG01.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Sun, 17 Sep 2023 23:42:24 -0700 (PDT) SGkgQ2hhbndvbywNCg0KQ2FuIHlvdSBoZWxwIHJldmlldyB0aGlzIHBhdGNoPw0KDQpUaGFua3Ms DQpTdGFubGV5DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU3Rhbmxl eSBDaGFuZyA8c3RhbmxleV9jaGFuZ0ByZWFsdGVrLmNvbT4NCj4gU2VudDogTW9uZGF5LCBTZXB0 ZW1iZXIgNCwgMjAyMyAxOjEzIFBNDQo+IFRvOiBNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBz YW1zdW5nLmNvbT4NCj4gQ2M6IFN0YW5sZXkgQ2hhbmdbqfeofLx3XSA8c3RhbmxleV9jaGFuZ0By ZWFsdGVrLmNvbT47IEdyZWcNCj4gS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlv bi5vcmc+OyBSb2IgSGVycmluZw0KPiA8cm9iaCtkdEBrZXJuZWwub3JnPjsgS3J6eXN6dG9mIEtv emxvd3NraQ0KPiA8a3J6eXN6dG9mLmtvemxvd3NraStkdEBsaW5hcm8ub3JnPjsgQ29ub3IgRG9v bGV5IDxjb25vcitkdEBrZXJuZWwub3JnPjsNCj4gQ2hhbndvbyBDaG9pIDxjdzAwLmNob2lAc2Ft c3VuZy5jb20+OyBsaW51eC11c2JAdmdlci5rZXJuZWwub3JnOw0KPiBkZXZpY2V0cmVlQHZnZXIu a2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBbUEFU Q0ggdjMgMS8yXSBleHRjb246IGFkZCBSZWFsdGVrIERIQyBSVEQgU29DIFR5cGUtQyBkcml2ZXIN Cj4gDQo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUgZXh0Y29uIGRyaXZlciBmb3IgUmVhbHRlayBESEMg KGRpZ2l0YWwgaG9tZSBjZW50ZXIpDQo+IFJURCBTb0NzIHR5cGUtYyBtb2R1bGUuIFRoaXMgY2Fu IGJlIHVzZWQgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlIHBvcnQgaXMNCj4gY29uZmlndXJlZCBhcyBh IGRvd25zdHJlYW0gb3IgdXBzdHJlYW0gZmFjaW5nIHBvcnQuIEFuZCBub3RpZnkgdGhlIHN0YXR1 cw0KPiBvZiBleHRjb24gdG8gbGlzdGVuZXJzLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogU3Rhbmxl eSBDaGFuZyA8c3RhbmxleV9jaGFuZ0ByZWFsdGVrLmNvbT4NCj4gLS0tDQo+IHYyIHRvIHYzIGNo YW5nZToNCj4gICByZW1vdmVkIHRoZSBlcnJvciBjaGVjayBmb3IgZGVidWdmcw0KPiB2MSB0byB2 MiBjaGFuZ2U6DQo+ICAgMS4gYWRkZWQgImRlcGVuZHMgb24gVFlQRUMiIGFuZCAic2VsZWN0IFVT Ql9DT01NT04iIGluIEtjb25maWcNCj4gICAyLiByZXZpc2VkIHRoZSBjb2RlIGFib3V0IGdwaW8u DQo+ICAgMy4gcmV2aXNlZCB0aGUgZGVmaW5pdGlvbnMgdG8ga2VlcCB0aGUgbGVmdC1hbGlnbmVk IG9mIHZhbHVlDQo+ICAgNC4gYWRkIHRoZSBjb21tZW50IGZvciBkZWxheSBvciBzbGVlcA0KPiAg IDUuIGNoYW5nZWQgc29tZSBmdW5jdGlvbnMgdG8gY29ubmVjdG9yX2F0dGFjaGVkL2Nvbm5lY3Rv cl9kZXRhY2hlZA0KPiAgIDYuIHJlbW92ZWQgdG8gY2hlY2sgJ0NPTkZJR19UWVBFQycgZGVmaW5p dGlvbiB3aXRoIGlmZGVmDQo+IC0tLQ0KPiAgZHJpdmVycy9leHRjb24vS2NvbmZpZyAgICAgICAg ICAgICB8ICAgMTEgKw0KPiAgZHJpdmVycy9leHRjb24vTWFrZWZpbGUgICAgICAgICAgICB8ICAg IDEgKw0KPiAgZHJpdmVycy9leHRjb24vZXh0Y29uLXJ0ay10eXBlLWMuYyB8IDE3OTIgKysrKysr KysrKysrKysrKysrKysrKysrKysrKw0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxODA0IGluc2VydGlv bnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2V4dGNvbi9leHRjb24tcnRrLXR5 cGUtYy5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9leHRjb24vS2NvbmZpZyBiL2RyaXZl cnMvZXh0Y29uL0tjb25maWcNCj4gaW5kZXggMGVmMTk3MWQyMmJiLi4wZjRjMDYxZTczMjEgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvZXh0Y29uL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9leHRj b24vS2NvbmZpZw0KPiBAQCAtMTkwLDQgKzE5MCwxNSBAQCBjb25maWcgRVhUQ09OX1VTQkNfVFVT QjMyMA0KPiAgCSAgU2F5IFkgaGVyZSB0byBlbmFibGUgc3VwcG9ydCBmb3IgVVNCIFR5cGUgQyBj YWJsZSBkZXRlY3Rpb24gZXh0Y29uDQo+ICAJICBzdXBwb3J0IHVzaW5nIGEgVFVTQjMyMC4NCj4g DQo+ICtjb25maWcgRVhUQ09OX1JUS19UWVBFX0MNCj4gKwl0cmlzdGF0ZSAiUmVhbHRlayBSVEQg U29DIGV4dGNvbiBUeXBlLUMgRHJpdmVyIg0KPiArCWRlcGVuZHMgb24gQVJDSF9SRUFMVEVLIHx8 IENPTVBJTEVfVEVTVA0KPiArCWRlcGVuZHMgb24gVFlQRUMNCj4gKwlzZWxlY3QgVVNCX0NPTU1P Tg0KPiArCWhlbHANCj4gKwkgIFNheSBZIGhlcmUgdG8gZW5hYmxlIGV4dGNvbiBzdXBwb3J0IGZv ciBVU0IgVHlwZSBDIGNhYmxlIGRldGVjdGlvbg0KPiArCSAgd2hlbiB1c2luZyB0aGUgUmVhbHRl ayBSVEQgU29DIFVTQiBUeXBlLUMgcG9ydC4NCj4gKwkgIFRoZSBESEMgKERpZ2l0YWwgSG9tZSBI dWIpIFJURCBzZXJpZXMgU29DIGNvbnRhaW5zIGEgdHlwZSBjIG1vZHVsZS4NCj4gKwkgIFRoaXMg ZHJpdmVyIHdpbGwgZGV0ZWN0IHRoZSBzdGF0dXMgb2YgdGhlIHR5cGUtYyBwb3J0Lg0KPiArDQo+ ICBlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9leHRjb24vTWFrZWZpbGUgYi9kcml2ZXJz L2V4dGNvbi9NYWtlZmlsZQ0KPiBpbmRleCAxYjM5MGQ5MzRjYTkuLmY3NzlhZGI1ZTRjNyAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9leHRjb24vTWFrZWZpbGUNCj4gKysrIGIvZHJpdmVycy9leHRj b24vTWFrZWZpbGUNCj4gQEAgLTI1LDMgKzI1LDQgQEAgb2JqLSQoQ09ORklHX0VYVENPTl9TTTU1 MDIpCSs9DQo+IGV4dGNvbi1zbTU1MDIubw0KPiAgb2JqLSQoQ09ORklHX0VYVENPTl9VU0JfR1BJ TykJKz0gZXh0Y29uLXVzYi1ncGlvLm8NCj4gIG9iai0kKENPTkZJR19FWFRDT05fVVNCQ19DUk9T X0VDKSArPSBleHRjb24tdXNiYy1jcm9zLWVjLm8NCj4gIG9iai0kKENPTkZJR19FWFRDT05fVVNC Q19UVVNCMzIwKSArPSBleHRjb24tdXNiYy10dXNiMzIwLm8NCj4gK29iai0kKENPTkZJR19FWFRD T05fUlRLX1RZUEVfQykgKz0gZXh0Y29uLXJ0ay10eXBlLWMubw0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9leHRjb24vZXh0Y29uLXJ0ay10eXBlLWMuYw0KPiBiL2RyaXZlcnMvZXh0Y29uL2V4dGNv bi1ydGstdHlwZS1jLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAwLi4wMDQ2NWNmYmEyM2UNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2V4dGNv bi9leHRjb24tcnRrLXR5cGUtYy5jDQo+IEBAIC0wLDAgKzEsMTc5MiBAQA0KPiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKy8qDQo+ICsgKiAgKiBleHRjb24tcnRrLXR5 cGUtYy5jIC0gUmVhbHRlayBFeHRjb24gVHlwZSBDIGRyaXZlcg0KPiArICoNCj4gKyAqIENvcHly aWdodCAoQykgMjAyMyBSZWFsdGVrIFNlbWljb25kdWN0b3IgQ29ycG9yYXRpb24NCj4gKyAqDQo+ ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gKyNpbmNsdWRlIDxs aW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4N Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncGlvLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4N Cj4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9zeXNj YWxscy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3N1c3BlbmQuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9kZWJ1Z2ZzLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvZXh0Y29uLmg+DQo+ICsjaW5jbHVkZSA8 bGludXgvZXh0Y29uLXByb3ZpZGVyLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvc3lzX3NvYy5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L252bWVtLWNvbnN1bWVyLmg+DQo+ICsjaW5jbHVkZSA8bGludXgv Z3Bpby9jb25zdW1lci5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3VzYi9vdGcuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC91c2IvdHlwZWMuaD4NCj4gKw0KPiArc3RydWN0IGNjX3BhcmFtIHsNCj4gKwl1 MzIgcnBfNHA3a19jb2RlOw0KPiArCXUzMiBycF8zNmtfY29kZTsNCj4gKwl1MzIgcnBfMTJrX2Nv ZGU7DQo+ICsJdTMyIHJkX2NvZGU7DQo+ICsJdTMyIHJhX2NvZGU7DQo+ICsJdTMyIHZyZWZfMnA2 djsNCj4gKwl1MzIgdnJlZl8xcDIzdjsNCj4gKwl1MzIgdnJlZl8wcDh2Ow0KPiArCXUzMiB2cmVm XzBwNjZ2Ow0KPiArCXUzMiB2cmVmXzBwNHY7DQo+ICsJdTMyIHZyZWZfMHAydjsNCj4gKwl1MzIg dnJlZl8xXzFwNnY7DQo+ICsJdTMyIHZyZWZfMF8xcDZ2Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0 IHR5cGVfY19jZmcgew0KPiArCWludCBwYXJhbWV0ZXJfdmVyOyAvKiBQYXJhbWV0ZXIgdmVyc2lv biAqLw0KPiArCWludCBjY19kZnBfbW9kZTsNCj4gKwlzdHJ1Y3QgY2NfcGFyYW0gY2MxX3BhcmFt Ow0KPiArCXN0cnVjdCBjY19wYXJhbSBjYzJfcGFyYW07DQo+ICsNCj4gKwl1MzIgZGVib3VuY2Vf dmFsOw0KPiArCWJvb2wgdXNlX2RlZmFsdXRfcGFyYW1ldGVyOw0KPiArfTsNCj4gKw0KPiArc3Ry dWN0IHR5cGVfY19kYXRhIHsNCj4gKwl2b2lkIF9faW9tZW0gKnJlZ19iYXNlOw0KPiArCXN0cnVj dCBkZXZpY2UgKmRldjsNCj4gKwlzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldjsNCj4gKw0KPiArCXUz MiBpcnE7DQo+ICsNCj4gKwkvKiByZCBjb250cm9sIEdQSU8gb25seSBmb3IgcnRkMTI5NSAqLw0K PiArCXN0cnVjdCBncGlvX2Rlc2MgKnJkX2N0cmxfZ3Bpb19kZXNjOw0KPiArDQo+ICsJLyogUGFy YW1ldGVycyAqLw0KPiArCXN0cnVjdCB0eXBlX2NfY2ZnICp0eXBlX2NfY2ZnOw0KPiArCXUzMiBk ZnBfbW9kZV9ycF9lbjsNCj4gKwl1MzIgdWZwX21vZGVfcmRfZW47DQo+ICsJdTMyIGNjMV9jb2Rl Ow0KPiArCXUzMiBjYzJfY29kZTsNCj4gKwl1MzIgY2MxX3ZyZWY7DQo+ICsJdTMyIGNjMl92cmVm Ow0KPiArCXUzMiBkZWJvdW5jZTsgLyogMWIsMXVzIDdmLDQuN3VzICovDQo+ICsNCj4gKwkvKiB0 eXBlX2Mgc3RhdGUgKi8NCj4gKwlpbnQgY29ubmVjdF9jaGFuZ2U7DQo+ICsjZGVmaW5lIENPTk5F Q1RfQ0hBTkdFIDENCj4gKyNkZWZpbmUgQ09OTkVDVF9OT19DSEFOR0UgMA0KPiArCWludCBjY19t b2RlOyAvKiBjYyBpcyBob3N0IG9yIGRldmljZSAqLw0KPiArI2RlZmluZSBJTl9IT1NUX01PREUg MHgxMA0KPiArI2RlZmluZSBJTl9ERVZJQ0VfTU9ERSAweDIwDQo+ICsJaW50IGlzX2F0dGFjaDsN Cj4gKyNkZWZpbmUgSU5fQVRUQUNIIDENCj4gKyNkZWZpbmUgVE9fQVRUQUNIIDENCj4gKyNkZWZp bmUgSU5fREVUQUNIIDANCj4gKyNkZWZpbmUgVE9fREVUQUNIIDANCj4gKwlpbnQgYXRfY2MxOw0K PiArI2RlZmluZSBBVF9DQzEgMQ0KPiArI2RlZmluZSBBVF9DQzIgMA0KPiArDQo+ICsJdTMyIGlu dF9zdGF0dXM7DQo+ICsJdTMyIGNjX3N0YXR1czsNCj4gKwkvKiBwcm90ZWN0IHRoZSBkYXRhIG1l bWJlciAqLw0KPiArCXNwaW5sb2NrX3QgbG9jazsNCj4gKwlzdHJ1Y3QgZGVsYXllZF93b3JrIGRl bGF5ZWRfd29yazsNCj4gKw0KPiArCWJvb2wgcmRfZW5fYXRfZmlyc3Q7DQo+ICsNCj4gKwlzdHJ1 Y3QgZGVudHJ5ICpkZWJ1Z19kaXI7DQo+ICsNCj4gKwlzdHJ1Y3QgdHlwZWNfcG9ydCAqcG9ydDsN Cj4gK307DQo+ICsNCj4gKy8qIFR5cGUgQyByZWdpc3RlciBvZmZzZXQgKi8NCj4gKyNkZWZpbmUg VVNCX1RZUEVDX0NUUkxfQ0MxXzAJMHgwDQo+ICsjZGVmaW5lIFVTQl9UWVBFQ19DVFJMX0NDMV8x CTB4NA0KPiArI2RlZmluZSBVU0JfVFlQRUNfQ1RSTF9DQzJfMAkweDgNCj4gKyNkZWZpbmUgVVNC X1RZUEVDX0NUUkxfQ0MyXzEJMHhDDQo+ICsjZGVmaW5lIFVTQl9UWVBFQ19TVFMJCTB4MTANCj4g KyNkZWZpbmUgVVNCX1RZUEVDX0NUUkwJCTB4MTQNCj4gKyNkZWZpbmUgVVNCX0RCVVNfUFdSX0NU UkwJMHgxOA0KPiArDQo+ICsjZGVmaW5lIEVOQUJMRV9DQzEJMHgxDQo+ICsjZGVmaW5lIEVOQUJM RV9DQzIJMHgyDQo+ICsjZGVmaW5lIERJU0FCTEVfQ0MJMHgwDQo+ICsNCj4gKy8qIEJpdCBtYXBw aW5nIFVTQl9UWVBFQ19DVFJMX0NDMV8wIGFuZCBVU0JfVFlQRUNfQ1RSTF9DQzJfMCAqLw0KPiAr I2RlZmluZSBQTFJfRU4JCUJJVCgyOSkNCj4gKyNkZWZpbmUgQ0NfU1dJVENIX01BU0sJKEJJVCgy OSkgfCBCSVQoMjgpIHwgQklUKDI3KSkNCj4gKyNkZWZpbmUgQ0NfQ09ERV9NQVNLCSgweGZmZmZm IDw8IDcpDQo+ICsjZGVmaW5lIHJwNHBrX2NvZGUodmFsKQkoKDB4MWYgJiAodmFsKSkgPDwgMjIp DQo+ICsjZGVmaW5lIGNvZGVfcnA0cGsodmFsKQkoKCh2YWwpID4+IDIyKSAmIDB4MWYpDQo+ICsj ZGVmaW5lIHJwMzZrX2NvZGUodmFsKQkoKDB4MWYgJiAodmFsKSkgPDwgMTcpDQo+ICsjZGVmaW5l IGNvZGVfcnAzNmsodmFsKQkoKCh2YWwpID4+IDE3KSAmIDB4MWYpDQo+ICsjZGVmaW5lIHJwMTJr X2NvZGUodmFsKQkoKDB4MWYgJiAodmFsKSkgPDwgMTIpDQo+ICsjZGVmaW5lIGNvZGVfcnAxMmso dmFsKQkoKCh2YWwpID4+IDEyKSAmIDB4MWYpDQo+ICsjZGVmaW5lIHJkX2NvZGUodmFsKQkoKDB4 MWYgJiAodmFsKSkgPDwgNykNCj4gKyNkZWZpbmUgY29kZV9yZCh2YWwpCSgoKHZhbCkgPj4gNykg JiAweDFmKQ0KPiArI2RlZmluZSBkZnBfbW9kZSh2YWwpCSgoMHgzICYgKHZhbCkpIDw8IDUpDQo+ ICsjZGVmaW5lIEVOX1JQNFA3SwlCSVQoNCkNCj4gKyNkZWZpbmUgRU5fUlAzNksJQklUKDMpDQo+ ICsjZGVmaW5lIEVOX1JQMTJLCUJJVCgyKQ0KPiArI2RlZmluZSBFTl9SRAkJQklUKDEpDQo+ICsj ZGVmaW5lIEVOX0NDX0RFVAlCSVQoMCkNCj4gKw0KPiArI2RlZmluZSBDQ19NT0RFX1VGUAkweDAN Cj4gKyNkZWZpbmUgQ0NfTU9ERV9ERlBfVVNCCTB4MQ0KPiArI2RlZmluZSBDQ19NT0RFX0RGUF8x XzUJMHgyDQo+ICsjZGVmaW5lIENDX01PREVfREZQXzNfMAkweDMNCj4gKw0KPiArLyoNCj4gKyAq IFBBUkFNRVRFUl9WMDoNCj4gKyAqICBSZWFsdGVrIEt5bGluICAgIHJ0ZDEyOTUNCj4gKyAqICBS ZWFsdGVrIEhlcmN1bGVzIHJ0ZDEzOTUNCj4gKyAqICBSZWFsdGVrIFRob3IgICAgIHJ0ZDE2MTkN Cj4gKyAqICBSZWFsdGVrIEhhbmsgICAgIHJ0ZDEzMTkNCj4gKyAqICBSZWFsdGVrIEdyb290ICAg IHJ0ZDEzMTJjDQo+ICsgKiBQQVJBTUVURVJfVjE6DQo+ICsgKiAgUmVhbHRlayBTdGFyayAgICBy dGQxNjE5Yg0KPiArICogIFJlYWx0ZWsgUGFya2VyICAgcnRkMTMxOWQNCj4gKyAqICBSZWFsdGVr IERhbnZlcnMgIHJ0ZDEzMTVlDQo+ICsgKi8NCj4gK2VudW0gcGFyYW1ldGVyX3ZlcnNpb24gew0K PiArCVBBUkFNRVRFUl9WMCA9IDAsDQo+ICsJUEFSQU1FVEVSX1YxID0gMSwNCj4gK307DQo+ICsN Cj4gKy8qIEJpdCBtYXBwaW5nIFVTQl9UWVBFQ19DVFJMX0NDMV8xIGFuZCBVU0JfVFlQRUNfQ1RS TF9DQzJfMSAqLw0KPiArI2RlZmluZSBWMF92cmVmXzJwNnYodmFsKQkoKDB4ZiAmICh2YWwpKSA8 PCAyNikgLyogQml0IDI5IGZvciBncm9vdCAqLw0KPiArI2RlZmluZSBWMF92cmVmXzFwMjN2KHZh bCkJKCgweGYgJiAodmFsKSkgPDwgMjIpDQo+ICsjZGVmaW5lIFYwX3ZyZWZfMHA4dih2YWwpCSgo MHhmICYgKHZhbCkpIDw8IDE4KQ0KPiArI2RlZmluZSBWMF92cmVmXzBwNjZ2KHZhbCkJKCgweGYg JiAodmFsKSkgPDwgMTQpDQo+ICsjZGVmaW5lIFYwX3ZyZWZfMHA0dih2YWwpCSgoMHg3ICYgKHZh bCkpIDw8IDExKQ0KPiArI2RlZmluZSBWMF92cmVmXzBwMnYodmFsKQkoKDB4NyAmICh2YWwpKSA8 PCA4KQ0KPiArI2RlZmluZSBWMF92cmVmXzFfMXA2dih2YWwpCSgoMHhmICYgKHZhbCkpIDw8IDQp DQo+ICsjZGVmaW5lIFYwX3ZyZWZfMF8xcDZ2KHZhbCkJKCgweGYgJiAodmFsKSkgPDwgMCkNCj4g Kw0KPiArI2RlZmluZSBWMF9kZWNvZGVfMnA2dih2YWwpCSgoKHZhbCkgPj4gMjYpICYgMHhmKSAv KiBCaXQgMjkgZm9yIGdyb290ICovDQo+ICsjZGVmaW5lIFYwX2RlY29kZV8xcDIzdih2YWwpCSgo KHZhbCkgPj4gMjIpICYgMHhmKQ0KPiArI2RlZmluZSBWMF9kZWNvZGVfMHA4dih2YWwpCSgoKHZh bCkgPj4gMTgpICYgMHhmKQ0KPiArI2RlZmluZSBWMF9kZWNvZGVfMHA2NnYodmFsKQkoKCh2YWwp ID4+IDE0KSAmIDB4ZikNCj4gKyNkZWZpbmUgVjBfZGVjb2RlXzBwNHYodmFsKQkoKCh2YWwpID4+ IDExKSAmIDB4NykNCj4gKyNkZWZpbmUgVjBfZGVjb2RlXzBwMnYodmFsKQkoKCh2YWwpID4+IDgp ICYgMHg3KQ0KPiArI2RlZmluZSBWMF9kZWNvZGVfMV8xcDZ2KHZhbCkJKCgodmFsKSA+PiA0KSAm IDB4ZikNCj4gKyNkZWZpbmUgVjBfZGVjb2RlXzBfMXA2dih2YWwpCSgoKHZhbCkgPj4gMCkgJiAw eGYpDQo+ICsNCj4gKy8qIG5ldyBCaXQgbWFwcGluZyBVU0JfVFlQRUNfQ1RSTF9DQzFfMSBhbmQg VVNCX1RZUEVDX0NUUkxfQ0MyXzENCj4gKi8NCj4gKyNkZWZpbmUgVjFfdnJlZl8ycDZ2KHZhbCkJ KCgweGYgJiAodmFsKSkgPDwgMjgpDQo+ICsjZGVmaW5lIFYxX3ZyZWZfMXAyM3YodmFsKQkoKDB4 ZiAmICh2YWwpKSA8PCAyNCkNCj4gKyNkZWZpbmUgVjFfdnJlZl8wcDh2KHZhbCkJKCgweGYgJiAo dmFsKSkgPDwgMjApDQo+ICsjZGVmaW5lIFYxX3ZyZWZfMHA2NnYodmFsKQkoKDB4ZiAmICh2YWwp KSA8PCAxNikNCj4gKyNkZWZpbmUgVjFfdnJlZl8wcDR2KHZhbCkJKCgweGYgJiAodmFsKSkgPDwg MTIpDQo+ICsjZGVmaW5lIFYxX3ZyZWZfMHAydih2YWwpCSgoMHhmICYgKHZhbCkpIDw8IDgpDQo+ ICsjZGVmaW5lIFYxX3ZyZWZfMV8xcDZ2KHZhbCkJKCgweGYgJiAodmFsKSkgPDwgNCkNCj4gKyNk ZWZpbmUgVjFfdnJlZl8wXzFwNnYodmFsKQkoKDB4ZiAmICh2YWwpKSA8PCAwKQ0KPiArDQo+ICsj ZGVmaW5lIFYxX2RlY29kZV8ycDZ2KHZhbCkJKCgodmFsKSA+PiAyOCkgJiAweGYpDQo+ICsjZGVm aW5lIFYxX2RlY29kZV8xcDIzdih2YWwpCSgoKHZhbCkgPj4gMjQpICYgMHhmKQ0KPiArI2RlZmlu ZSBWMV9kZWNvZGVfMHA4dih2YWwpCSgoKHZhbCkgPj4gMjApICYgMHhmKQ0KPiArI2RlZmluZSBW MV9kZWNvZGVfMHA2NnYodmFsKQkoKCh2YWwpID4+IDE2KSAmIDB4ZikNCj4gKyNkZWZpbmUgVjFf ZGVjb2RlXzBwNHYodmFsKQkoKCh2YWwpID4+IDEyKSAmIDB4ZikNCj4gKyNkZWZpbmUgVjFfZGVj b2RlXzBwMnYodmFsKQkoKCh2YWwpID4+IDgpICYgMHhmKQ0KPiArI2RlZmluZSBWMV9kZWNvZGVf MV8xcDZ2KHZhbCkJKCgodmFsKSA+PiA0KSAmIDB4ZikNCj4gKyNkZWZpbmUgVjFfZGVjb2RlXzBf MXA2dih2YWwpCSgoKHZhbCkgPj4gMCkgJiAweGYpDQo+ICsNCj4gKy8qIEJpdCBtYXBwaW5nIFVT Ql9UWVBFQ19TVFMgKi8NCj4gKyNkZWZpbmUgREVUX1NUUwkJMHg3DQo+ICsjZGVmaW5lIENDMV9E RVRfU1RTCShERVRfU1RTKQ0KPiArI2RlZmluZSBDQzJfREVUX1NUUwkoREVUX1NUUyA8PCAzKQ0K PiArI2RlZmluZSBERVRfU1RTX1JBCTB4MQ0KPiArI2RlZmluZSBERVRfU1RTX1JECTB4Mw0KPiAr I2RlZmluZSBERVRfU1RTX1JQCTB4MQ0KPiArI2RlZmluZSBDQzFfREVUX1NUU19SQQkoREVUX1NU U19SQSkNCj4gKyNkZWZpbmUgQ0MxX0RFVF9TVFNfUkQJKERFVF9TVFNfUkQpDQo+ICsjZGVmaW5l IENDMV9ERVRfU1RTX1JQCShERVRfU1RTX1JQKQ0KPiArI2RlZmluZSBDQzJfREVUX1NUU19SQQko REVUX1NUU19SQSA8PCAzKQ0KPiArI2RlZmluZSBDQzJfREVUX1NUU19SRAkoREVUX1NUU19SRCA8 PCAzKQ0KPiArI2RlZmluZSBDQzJfREVUX1NUU19SUAkoREVUX1NUU19SUCA8PCAzKQ0KPiArDQo+ ICsvKiBCaXQgbWFwcGluZyBVU0JfVFlQRUNfQ1RSTCAqLw0KPiArI2RlZmluZSBDQzJfSU5UX0VO CQlCSVQoMTEpDQo+ICsjZGVmaW5lIENDMV9JTlRfRU4JCUJJVCgxMCkNCj4gKyNkZWZpbmUgQ0My X0lOVF9TVFMJCUJJVCg5KQ0KPiArI2RlZmluZSBDQzFfSU5UX1NUUwkJQklUKDgpDQo+ICsjZGVm aW5lIERFQk9VTkNFX1RJTUVfTUFTSwkweGZmDQo+ICsjZGVmaW5lIERFQk9VTkNFX0VOCQlCSVQo MCkNCj4gKyNkZWZpbmUgRU5BQkxFX1RZUEVfQ19ERVRFQ1QJKENDMV9JTlRfRU4gfCBDQzJfSU5U X0VOKQ0KPiArI2RlZmluZSBBTExfQ0NfSU5UX1NUUwkJKENDMV9JTlRfU1RTIHwgQ0MyX0lOVF9T VFMpDQo+ICsNCj4gKy8qIFBhcmFtZXRlciAqLw0KPiArI2RlZmluZSBERVRFQ1RfVElNRSA1MCAv KiBtcyAqLw0KPiArDQo+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHVzYl90eXBlX2NfY2Fi bGVbXSA9IHsNCj4gKwlFWFRDT05fVVNCLA0KPiArCUVYVENPTl9VU0JfSE9TVCwNCj4gKwlFWFRD T05fTk9ORSwNCj4gK307DQo+ICsNCj4gK2VudW0gdXNiX2RhdGFfcm9sZXMgew0KPiArCURSX05P TkUsDQo+ICsJRFJfSE9TVCwNCj4gKwlEUl9ERVZJQ0UsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHNvY19kZXZpY2VfYXR0cmlidXRlIHJ0a19zb2Nfa3lsaW5bXSA9IHsNCj4g Kwl7IC5mYW1pbHkgPSAiUmVhbHRlayBLeWxpbiIsIH0sDQo+ICsJeyAvKiBlbXB0eSAqLyB9DQo+ ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IHJ0ZDEyOXhfc3dpdGNoX3R5cGVfY19wbHVnX2NvbmZp ZyhzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYywNCj4gKwkJCQkJICAgICBpbnQgZHJfbW9kZSwg aW50IGNjKQ0KPiArew0KPiArCXZvaWQgX19pb21lbSAqcmVnID0gdHlwZV9jLT5yZWdfYmFzZSAr IFVTQl9UWVBFQ19DVFJMX0NDMV8wOw0KPiArCWludCB2YWxfY2M7DQo+ICsNCj4gKyNkZWZpbmUg VFlQRV9DX0VOX1NXSVRDSAlCSVQoMjkpDQo+ICsjZGVmaW5lIFRZUEVfQ19UWFJYX1NFTAkJKEJJ VCgyOCkgfCBCSVQoMjcpKQ0KPiArI2RlZmluZSBUWVBFX0NfU1dJVENIX01BU0sJKFRZUEVfQ19F Tl9TV0lUQ0ggfCBUWVBFX0NfVFhSWF9TRUwpDQo+ICsjZGVmaW5lIFRZUEVfQ19FTkFCTEVfQ0Mx CVRZUEVfQ19FTl9TV0lUQ0gNCj4gKyNkZWZpbmUgVFlQRV9DX0VOQUJMRV9DQzIJKFRZUEVfQ19F Tl9TV0lUQ0ggfCBUWVBFX0NfVFhSWF9TRUwpDQo+ICsjZGVmaW5lIFRZUEVfQ19ESVNBQkxFX0ND CX5UWVBFX0NfU1dJVENIX01BU0sNCj4gKw0KPiArCXZhbF9jYyA9IHJlYWRsKHJlZyk7DQo+ICsJ dmFsX2NjICY9IH5UWVBFX0NfU1dJVENIX01BU0s7DQo+ICsNCj4gKwlpZiAoY2MgPT0gRElTQUJM RV9DQykgew0KPiArCQl2YWxfY2MgJj0gVFlQRV9DX0RJU0FCTEVfQ0M7DQo+ICsJfSBlbHNlIGlm IChjYyA9PSBFTkFCTEVfQ0MxKSB7DQo+ICsJCXZhbF9jYyB8PSBUWVBFX0NfRU5BQkxFX0NDMTsN Cj4gKwl9IGVsc2UgaWYgKGNjID09IEVOQUJMRV9DQzIpIHsNCj4gKwkJdmFsX2NjIHw9IFRZUEVf Q19FTkFCTEVfQ0MyOw0KPiArCX0gZWxzZSB7DQo+ICsJCWRldl9lcnIodHlwZV9jLT5kZXYsICIl czogRXJyb3IgY2Mgc2V0dGluZyBjYz0weCV4XG4iLCBfX2Z1bmNfXywNCj4gY2MpOw0KPiArCQly ZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsJd3JpdGVsKHZhbF9jYywgcmVnKTsNCj4gKw0KPiAr CS8qIHdhaXRpbmcgY2Mgc3RhYmxlIGZvciBlbmFibGUvZGlzYWJsZSAqLw0KPiArCW1kZWxheSgx KTsNCj4gKw0KPiArCWRldl9kYmcodHlwZV9jLT5kZXYsICIlczogY2M9MHgleCB2YWxfY2M9MHgl eA0KPiB1c2JfdHlwZWNfY3RybF9jYzFfMD0weCV4XG4iLA0KPiArCQlfX2Z1bmNfXywgY2MsIHZh bF9jYywgcmVhZGwocmVnKSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGlubGluZSB2b2lkIHN3aXRjaF90eXBlX2NfcGx1Z19jb25maWcoc3RydWN0IHR5cGVfY19k YXRhICp0eXBlX2MsDQo+ICsJCQkJCSAgICAgaW50IGRyX21vZGUsIGludCBjYykNCj4gK3sNCj4g KwlpbnQgcmV0ID0gMDsNCj4gKw0KPiArCWlmIChzb2NfZGV2aWNlX21hdGNoKHJ0a19zb2Nfa3ls aW4pKQ0KPiArCQlyZXQgPSBydGQxMjl4X3N3aXRjaF90eXBlX2NfcGx1Z19jb25maWcodHlwZV9j LCBkcl9tb2RlLCBjYyk7DQo+ICsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJZGV2X2Vycih0eXBl X2MtPmRldiwgIiVzOiBFcnJvciBzZXQgdHlwZSBjIHBsdWcgY29uZmlnXG4iLA0KPiArCQkJX19m dW5jX18pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBzd2l0Y2hfdHlwZV9jX2RyX21vZGUo c3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MsIGludCBkcl9tb2RlLA0KPiBpbnQgY2MpDQo+ICt7 DQo+ICsJYm9vbCBpc19ob3N0ID0gZmFsc2U7DQo+ICsJYm9vbCBpc19kZXZpY2UgPSBmYWxzZTsN Cj4gKwlib29sIHBvbGFyaXR5ID0gZmFsc2U7DQo+ICsJYm9vbCB2YnVzID0gZmFsc2U7DQo+ICsJ Ym9vbCBzcyA9IHRydWU7DQo+ICsNCj4gKwlzd2l0Y2hfdHlwZV9jX3BsdWdfY29uZmlnKHR5cGVf YywgZHJfbW9kZSwgY2MpOw0KPiArCWlmIChjYyA9PSBFTkFCTEVfQ0MyKQ0KPiArCQlwb2xhcml0 eSA9IHRydWU7DQo+ICsNCj4gKwlzd2l0Y2ggKGRyX21vZGUpIHsNCj4gKwljYXNlIFVTQl9EUl9N T0RFX0hPU1Q6DQo+ICsJCWlzX2hvc3QgPSB0cnVlOw0KPiArCQlicmVhazsNCj4gKwljYXNlIFVT Ql9EUl9NT0RFX1BFUklQSEVSQUw6DQo+ICsJCWlzX2RldmljZSA9IHRydWU7DQo+ICsJCXZidXMg PSB0cnVlOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlkZXZfZGJnKHR5cGVfYy0+ ZGV2LCAiJXMgZHJfbW9kZT0lZCA9PT4gbm8gaG9zdCBvciBkZXZpY2VcbiIsDQo+ICsJCQlfX2Z1 bmNfXywgZHJfbW9kZSk7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCWRldl9kYmcodHlw ZV9jLT5kZXYsICIlcyBpc19ob3N0PSVkIGlzX2RldmljZT0lZCB2YnVzPSVkDQo+IHBvbGFyaXR5 PSVkXG4iLA0KPiArCQlfX2Z1bmNfXywgaXNfaG9zdCwgaXNfZGV2aWNlLCB2YnVzLCBwb2xhcml0 eSk7DQo+ICsNCj4gKwkvKiBmb3IgRVhUQ09OX1VTQiBkZXZpY2UgbW9kZSAqLw0KPiArCWV4dGNv bl9zZXRfc3RhdGUodHlwZV9jLT5lZGV2LCBFWFRDT05fVVNCLCBpc19kZXZpY2UpOw0KPiArCWV4 dGNvbl9zZXRfcHJvcGVydHkodHlwZV9jLT5lZGV2LCBFWFRDT05fVVNCLA0KPiArCQkJICAgIEVY VENPTl9QUk9QX1VTQl9WQlVTLA0KPiArCQkJICAgICh1bmlvbiBleHRjb25fcHJvcGVydHlfdmFs dWUpKGludCl2YnVzKTsNCj4gKwlleHRjb25fc2V0X3Byb3BlcnR5KHR5cGVfYy0+ZWRldiwgRVhU Q09OX1VTQiwNCj4gKwkJCSAgICBFWFRDT05fUFJPUF9VU0JfVFlQRUNfUE9MQVJJVFksDQo+ICsJ CQkgICAgKHVuaW9uIGV4dGNvbl9wcm9wZXJ0eV92YWx1ZSkoaW50KXBvbGFyaXR5KTsNCj4gKwll eHRjb25fc2V0X3Byb3BlcnR5KHR5cGVfYy0+ZWRldiwgRVhUQ09OX1VTQiwNCj4gKwkJCSAgICBF WFRDT05fUFJPUF9VU0JfU1MsDQo+ICsJCQkgICAgKHVuaW9uIGV4dGNvbl9wcm9wZXJ0eV92YWx1 ZSkoaW50KXNzKTsNCj4gKw0KPiArCS8qIGZvciBFWFRDT05fVVNCX0hPU1QgaG9zdCBtb2RlICov DQo+ICsJZXh0Y29uX3NldF9zdGF0ZSh0eXBlX2MtPmVkZXYsIEVYVENPTl9VU0JfSE9TVCwgaXNf aG9zdCk7DQo+ICsJZXh0Y29uX3NldF9wcm9wZXJ0eSh0eXBlX2MtPmVkZXYsIEVYVENPTl9VU0Jf SE9TVCwNCj4gKwkJCSAgICBFWFRDT05fUFJPUF9VU0JfVkJVUywNCj4gKwkJCSAgICAodW5pb24g ZXh0Y29uX3Byb3BlcnR5X3ZhbHVlKShpbnQpdmJ1cyk7DQo+ICsJZXh0Y29uX3NldF9wcm9wZXJ0 eSh0eXBlX2MtPmVkZXYsIEVYVENPTl9VU0JfSE9TVCwNCj4gKwkJCSAgICBFWFRDT05fUFJPUF9V U0JfVFlQRUNfUE9MQVJJVFksDQo+ICsJCQkgICAgKHVuaW9uIGV4dGNvbl9wcm9wZXJ0eV92YWx1 ZSkoaW50KXBvbGFyaXR5KTsNCj4gKwlleHRjb25fc2V0X3Byb3BlcnR5KHR5cGVfYy0+ZWRldiwg RVhUQ09OX1VTQl9IT1NULA0KPiArCQkJICAgIEVYVENPTl9QUk9QX1VTQl9TUywNCj4gKwkJCSAg ICAodW5pb24gZXh0Y29uX3Byb3BlcnR5X3ZhbHVlKShpbnQpc3MpOw0KPiArDQo+ICsJLyogc3lu YyBFWFRDT05fVVNCIGFuZCBFWFRDT05fVVNCX0hPU1QgKi8NCj4gKwlleHRjb25fc3luYyh0eXBl X2MtPmVkZXYsIEVYVENPTl9VU0IpOw0KPiArCWV4dGNvbl9zeW5jKHR5cGVfYy0+ZWRldiwgRVhU Q09OX1VTQl9IT1NUKTsNCj4gKw0KPiArCWlmICh0eXBlX2MtPnBvcnQpIHsNCj4gKwkJc3dpdGNo IChkcl9tb2RlKSB7DQo+ICsJCWNhc2UgVVNCX0RSX01PREVfSE9TVDoNCj4gKwkJCXR5cGVjX3Nl dF9kYXRhX3JvbGUodHlwZV9jLT5wb3J0LCBUWVBFQ19IT1NUKTsNCj4gKwkJCXR5cGVjX3NldF9w d3Jfcm9sZSh0eXBlX2MtPnBvcnQsIFRZUEVDX1NPVVJDRSk7DQo+ICsJCQlicmVhazsNCj4gKwkJ Y2FzZSBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMOg0KPiArCQkJdHlwZWNfc2V0X2RhdGFfcm9sZSh0 eXBlX2MtPnBvcnQsIFRZUEVDX0RFVklDRSk7DQo+ICsJCQl0eXBlY19zZXRfcHdyX3JvbGUodHlw ZV9jLT5wb3J0LCBUWVBFQ19TSU5LKTsNCj4gKwkJCWJyZWFrOw0KPiArCQlkZWZhdWx0Og0KPiAr CQkJZGV2X2RiZyh0eXBlX2MtPmRldiwgIiVzIHVua25vd24gZHJfbW9kZT0lZFxuIiwNCj4gKwkJ CQlfX2Z1bmNfXywgZHJfbW9kZSk7DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArCX0NCj4gK30N Cj4gKw0KPiArLyogY29ubmVjdG9yIGF0dGFjaGVkL2RldGFjaGVkICovDQo+ICtzdGF0aWMgaW50 IGNvbm5lY3Rvcl9hdHRhY2hlZChzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYywgdTMyIGNjLCBp bnQNCj4gZHJfbW9kZSkNCj4gK3sNCj4gKwl2b2lkIF9faW9tZW0gKnJlZyA9IHR5cGVfYy0+cmVn X2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTDsNCj4gKw0KPiArCWNhbmNlbF9kZWxheWVkX3dvcmsoJnR5 cGVfYy0+ZGVsYXllZF93b3JrKTsNCj4gKw0KPiArCXN3aXRjaF90eXBlX2NfZHJfbW9kZSh0eXBl X2MsIGRyX21vZGUsIGNjKTsNCj4gKw0KPiArCXdyaXRlbChFTkFCTEVfVFlQRV9DX0RFVEVDVCB8 IHJlYWRsKHJlZyksIHJlZyk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGludCBjb25uZWN0b3JfZGV0YWNoZWQoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MsIHUz MiBjYywgaW50DQo+IGRyX21vZGUpDQo+ICt7DQo+ICsJdm9pZCBfX2lvbWVtICpyZWcgPSB0eXBl X2MtPnJlZ19iYXNlICsgVVNCX1RZUEVDX0NUUkw7DQo+ICsNCj4gKwl3cml0ZWwofkVOQUJMRV9U WVBFX0NfREVURUNUICYgcmVhZGwocmVnKSwgcmVnKTsNCj4gKw0KPiArCXN3aXRjaF90eXBlX2Nf ZHJfbW9kZSh0eXBlX2MsIDAsIGNjKTsNCj4gKw0KPiArCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygm dHlwZV9jLT5kZWxheWVkX3dvcmssDQo+IG1zZWNzX3RvX2ppZmZpZXMoREVURUNUX1RJTUUpKTsN Cj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsvKiBkZXRlY3QgaG9zdCBkZXZpY2Ug c3dpdGNoICovDQo+ICtzdGF0aWMgaW50IF9fZGV0ZWN0X2hvc3RfZGV2aWNlKHN0cnVjdCB0eXBl X2NfZGF0YSAqdHlwZV9jLCB1MzIgcnBfb3JfcmRfZW4pDQo+ICt7DQo+ICsJc3RydWN0IGRldmlj ZSAqZGV2ID0gdHlwZV9jLT5kZXY7DQo+ICsJdm9pZCBfX2lvbWVtICpyZWdfYmFzZSA9IHR5cGVf Yy0+cmVnX2Jhc2U7DQo+ICsJdTMyIGNjMV9jb25maWcsIGNjMl9jb25maWcsIGRlZmF1bHRfY3Ry bDsNCj4gKwl1MzIgY2MxX3N3aXRjaCA9IDA7DQo+ICsNCj4gKwlkZWZhdWx0X2N0cmwgPSByZWFk bChyZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMKSAmDQo+IERFQk9VTkNFX1RJTUVfTUFTSzsNCj4g Kwl3cml0ZWwoZGVmYXVsdF9jdHJsLCByZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMKTsNCj4gKw0K PiArCWNjMV9jb25maWcgPSByZWFkbChyZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMX0NDMV8wKTsN Cj4gKwljYzJfY29uZmlnID0gcmVhZGwocmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTF9DQzJfMCk7 DQo+ICsNCj4gKwljYzFfY29uZmlnICY9IH5FTl9DQ19ERVQ7DQo+ICsJY2MyX2NvbmZpZyAmPSB+ RU5fQ0NfREVUOw0KPiArCXdyaXRlbChjYzFfY29uZmlnLCByZWdfYmFzZSArIFVTQl9UWVBFQ19D VFJMX0NDMV8wKTsNCj4gKwl3cml0ZWwoY2MyX2NvbmZpZywgcmVnX2Jhc2UgKyBVU0JfVFlQRUNf Q1RSTF9DQzJfMCk7DQo+ICsNCj4gKwlpZiAoc29jX2RldmljZV9tYXRjaChydGtfc29jX2t5bGlu KSkNCj4gKwkJY2MxX3N3aXRjaCA9IGNjMV9jb25maWcgJiBDQ19TV0lUQ0hfTUFTSzsNCj4gKw0K PiArCWNjMV9jb25maWcgJj0gQ0NfQ09ERV9NQVNLOw0KPiArCWNjMV9jb25maWcgfD0gcnBfb3Jf cmRfZW4gfCBjYzFfc3dpdGNoOw0KPiArCWNjMl9jb25maWcgJj0gQ0NfQ09ERV9NQVNLOw0KPiAr CWNjMl9jb25maWcgfD0gcnBfb3JfcmRfZW47DQo+ICsJd3JpdGVsKGNjMl9jb25maWcsIHJlZ19i YXNlICsgVVNCX1RZUEVDX0NUUkxfQ0MyXzApOw0KPiArCXdyaXRlbChjYzFfY29uZmlnLCByZWdf YmFzZSArIFVTQl9UWVBFQ19DVFJMX0NDMV8wKTsNCj4gKw0KPiArCS8qIEZvciBreWxpbiB0byBk aXNhYmxlIGV4dGVybmFsIHJkIGNvbnRyb2wgZ3BpbyAqLw0KPiArCWlmIChzb2NfZGV2aWNlX21h dGNoKHJ0a19zb2Nfa3lsaW4pKSB7DQo+ICsJCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW8gPSB0eXBl X2MtPnJkX2N0cmxfZ3Bpb19kZXNjOw0KPiArDQo+ICsJCWlmIChncGlvICYmIGdwaW9kX2RpcmVj dGlvbl9vdXRwdXQoZ3BpbywgMSkpDQo+ICsJCQlkZXZfZXJyKGRldiwgIiVzIEVSUk9SIHNldCBy ZF9jdHJsX2dwaW9fZGVzYyBmYWlsXG4iLA0KPiBfX2Z1bmNfXyk7DQo+ICsJfQ0KPiArDQo+ICsJ Y2MxX2NvbmZpZyB8PSBFTl9DQ19ERVQ7DQo+ICsJY2MyX2NvbmZpZyB8PSBFTl9DQ19ERVQ7DQo+ ICsJd3JpdGVsKGNjMV9jb25maWcsIHJlZ19iYXNlICsgVVNCX1RZUEVDX0NUUkxfQ0MxXzApOw0K PiArCXdyaXRlbChjYzJfY29uZmlnLCByZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMX0NDMl8wKTsN Cj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGRldGVjdF9kZXZp Y2Uoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MpDQo+ICt7DQo+ICsJcmV0dXJuIF9fZGV0ZWN0 X2hvc3RfZGV2aWNlKHR5cGVfYywgdHlwZV9jLT5kZnBfbW9kZV9ycF9lbik7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBpbnQgZGV0ZWN0X2hvc3Qoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MpDQo+ ICt7DQo+ICsJcmV0dXJuIF9fZGV0ZWN0X2hvc3RfZGV2aWNlKHR5cGVfYywgdHlwZV9jLT51ZnBf bW9kZV9yZF9lbik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgaG9zdF9kZXZpY2Vfc3dpdGNo X2RldGVjdGlvbihzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYykNCj4gK3sNCj4gKwlpZiAodHlw ZV9jLT5jY19tb2RlID09IElOX0hPU1RfTU9ERSkgew0KPiArCQl0eXBlX2MtPmNjX21vZGUgPSBJ Tl9ERVZJQ0VfTU9ERTsNCj4gKwkJZGV0ZWN0X2hvc3QodHlwZV9jKTsNCj4gKwl9IGVsc2Ugew0K PiArCQl0eXBlX2MtPmNjX21vZGUgPSBJTl9IT1NUX01PREU7DQo+ICsJCWRldGVjdF9kZXZpY2Uo dHlwZV9jKTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGludCBkZXRlY3RfdHlwZV9jX3N0YXRlKHN0cnVjdCB0eXBlX2NfZGF0YSAqdHlwZV9jKQ0KPiAr ew0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHR5cGVfYy0+ZGV2Ow0KPiArCXZvaWQgX19pb21l bSAqcmVnX2Jhc2UgPSB0eXBlX2MtPnJlZ19iYXNlOw0KPiArCXUzMiBpbnRfc3RhdHVzLCBjY19z dGF0dXMsIGNjX3N0YXR1c19jaGVjazsNCj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiArDQo+ ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJaW50 X3N0YXR1cyA9IHJlYWRsKHJlZ19iYXNlICsgVVNCX1RZUEVDX0NUUkwpOw0KPiArCWNjX3N0YXR1 cyA9IHJlYWRsKHJlZ19iYXNlICsgVVNCX1RZUEVDX1NUUyk7DQo+ICsNCj4gKwl0eXBlX2MtPmNv bm5lY3RfY2hhbmdlID0gQ09OTkVDVF9OT19DSEFOR0U7DQo+ICsNCj4gKwlzd2l0Y2ggKHR5cGVf Yy0+Y2NfbW9kZSB8IHR5cGVfYy0+aXNfYXR0YWNoKSB7DQo+ICsJY2FzZSBJTl9IT1NUX01PREUg fCBJTl9BVFRBQ0g6DQo+ICsJCWlmICgoKGNjX3N0YXR1cyAmIENDMV9ERVRfU1RTKSA9PSBDQzFf REVUX1NUUykgJiYNCj4gdHlwZV9jLT5hdF9jYzEgPT0gQVRfQ0MxKSB7DQo+ICsJCQlkZXZfZGJn KGRldiwgIklOIGhvc3QgbW9kZSBhbmQgY2MxIGRldmljZSBkZXRhY2gNCj4gKGNjX3N0YXR1cz0w eCV4KSIsDQo+ICsJCQkJY2Nfc3RhdHVzKTsNCj4gKwkJCXR5cGVfYy0+aXNfYXR0YWNoID0gVE9f REVUQUNIOw0KPiArCQkJdHlwZV9jLT5jb25uZWN0X2NoYW5nZSA9IENPTk5FQ1RfQ0hBTkdFOw0K PiArCQl9IGVsc2UgaWYgKCgoY2Nfc3RhdHVzICYgQ0MyX0RFVF9TVFMpID09IENDMl9ERVRfU1RT KSAmJg0KPiArCQkJICAgdHlwZV9jLT5hdF9jYzEgPT0gQVRfQ0MyKSB7DQo+ICsJCQlkZXZfZGJn KGRldiwgIklOIGhvc3QgbW9kZSBhbmQgY2MyIGRldmljZSBkZXRhY2gNCj4gKGNjX3N0YXR1cz0w eCV4KSIsDQo+ICsJCQkJY2Nfc3RhdHVzKTsNCj4gKwkJCXR5cGVfYy0+aXNfYXR0YWNoID0gVE9f REVUQUNIOw0KPiArCQkJdHlwZV9jLT5jb25uZWN0X2NoYW5nZSA9IENPTk5FQ1RfQ0hBTkdFOw0K PiArCQl9DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgSU5fSE9TVF9NT0RFIHwgSU5fREVUQUNIOg0K PiArCQljY19zdGF0dXNfY2hlY2sgPSByZWFkbChyZWdfYmFzZSArIFVTQl9UWVBFQ19TVFMpOw0K PiArCQlpZiAoY2Nfc3RhdHVzX2NoZWNrICE9IChDQzFfREVUX1NUUyB8IENDMl9ERVRfU1RTKSkg ew0KPiArCQkJaWYgKGluX2ludGVycnVwdCgpKSB7DQo+ICsJCQkJLyogQWRkIGRlbGF5IHRpbWUg dG8gYXZvaWQgY2FwYWNpdGl2ZSBlZmZlY3Qgb2YgY2FibGUuICovDQo+ICsJCQkJbWRlbGF5KDMw MCk7DQo+ICsJCQl9IGVsc2Ugew0KPiArCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnR5cGVf Yy0+bG9jaywgZmxhZ3MpOw0KPiArCQkJCS8qIEFkZCBkZWxheSB0aW1lIHRvIGF2b2lkIGNhcGFj aXRpdmUgZWZmZWN0IG9mIGNhYmxlLiAqLw0KPiArCQkJCW1zbGVlcCgzMDApOw0KPiArCQkJCXNw aW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gKwkJCX0NCj4gKwkJCWNj X3N0YXR1c19jaGVjayA9IHJlYWRsKHJlZ19iYXNlICsgVVNCX1RZUEVDX1NUUyk7DQo+ICsJCX0N Cj4gKwkJaWYgKGNjX3N0YXR1cyAhPSBjY19zdGF0dXNfY2hlY2spIHsNCj4gKwkJCWRldl93YXJu KGRldiwgIklOX0hPU1RfTU9ERTogY2Nfc3RhdHVzICgweCV4KSAhPQ0KPiBjY19zdGF0dXNfY2hl Y2sgKDB4JXgpXG4iLA0KPiArCQkJCSBjY19zdGF0dXMsIGNjX3N0YXR1c19jaGVjayk7DQo+ICsJ CQljY19zdGF0dXMgPSByZWFkbChyZWdfYmFzZSArIFVTQl9UWVBFQ19TVFMpOw0KPiArCQl9DQo+ ICsNCj4gKwkJaWYgKChjY19zdGF0dXMgJiBDQzFfREVUX1NUUykgPT0gQ0MxX0RFVF9TVFNfUkQp IHsNCj4gKwkJCWRldl9kYmcoZGV2LCAiSU4gaG9zdCBtb2RlIGFuZCBjYzEgZGV2aWNlIGF0dGFj aA0KPiAoY2Nfc3RhdHVzPTB4JXgpIiwNCj4gKwkJCQljY19zdGF0dXMpOw0KPiArCQkJdHlwZV9j LT5pc19hdHRhY2ggPSBUT19BVFRBQ0g7DQo+ICsJCQl0eXBlX2MtPmF0X2NjMSA9IEFUX0NDMTsN Cj4gKwkJCXR5cGVfYy0+Y29ubmVjdF9jaGFuZ2UgPSBDT05ORUNUX0NIQU5HRTsNCj4gKwkJfSBl bHNlIGlmICgoY2Nfc3RhdHVzICYgQ0MyX0RFVF9TVFMpID09IENDMl9ERVRfU1RTX1JEKSB7DQo+ ICsJCQlkZXZfZGJnKGRldiwgIkluIGhvc3QgbW9kZSBhbmQgY2MyIGRldmljZSBhdHRhY2gNCj4g KGNjX3N0YXR1cz0weCV4KSIsDQo+ICsJCQkJY2Nfc3RhdHVzKTsNCj4gKwkJCXR5cGVfYy0+aXNf YXR0YWNoID0gVE9fQVRUQUNIOw0KPiArCQkJdHlwZV9jLT5hdF9jYzEgPSBBVF9DQzI7DQo+ICsJ CQl0eXBlX2MtPmNvbm5lY3RfY2hhbmdlID0gQ09OTkVDVF9DSEFOR0U7DQo+ICsJCX0NCj4gKwkJ YnJlYWs7DQo+ICsJY2FzZSBJTl9ERVZJQ0VfTU9ERSB8IElOX0FUVEFDSDoNCj4gKwkJaWYgKChj Y19zdGF0dXMgJiBDQzFfREVUX1NUUykgPCBDQzFfREVUX1NUU19SUCB8fA0KPiArCQkgICAgKGNj X3N0YXR1cyAmIENDMl9ERVRfU1RTKSA8IENDMl9ERVRfU1RTX1JQKSB7DQo+ICsJCQkvKiBBZGQg YSBzdyBkZWJvdW5jZSB0byBmaWx0ZXIgY2Mgc2lnbmFsIHNlbnQgZnJvbSBhcHBsZSBwZA0KPiBh ZGFwdGVyICovDQo+ICsJCQltZGVsYXkoNSk7DQo+ICsJCQljY19zdGF0dXNfY2hlY2sgPSByZWFk bChyZWdfYmFzZSArIFVTQl9UWVBFQ19TVFMpOw0KPiArDQo+ICsJCQlpZiAoY2Nfc3RhdHVzICE9 IGNjX3N0YXR1c19jaGVjaykgew0KPiArCQkJCWRldl9kYmcoZGV2LCAiSU5fREVWSUNFX01PREU6 IGNjX3N0YXR1cyAoMHgleCkgIT0NCj4gY2Nfc3RhdHVzX2NoZWNrICgweCV4KSBtYXliZSB1c2Ug YSBwZCBhZGFwdGVyXG4iLA0KPiArCQkJCQljY19zdGF0dXMsIGNjX3N0YXR1c19jaGVjayk7DQo+ ICsJCQkJY2Nfc3RhdHVzID0gY2Nfc3RhdHVzX2NoZWNrOw0KPiArCQkJfQ0KPiArCQl9DQo+ICsN Cj4gKwkJaWYgKChjY19zdGF0dXMgJiBDQzFfREVUX1NUUykgPCBDQzFfREVUX1NUU19SUCAmJg0K PiB0eXBlX2MtPmF0X2NjMSA9PSBBVF9DQzEpIHsNCj4gKwkJCWRldl9kYmcoZGV2LCAiSU4gZGV2 aWNlIG1vZGUgYW5kIGNjMSBob3N0IGRpc2Nvbm5lY3QNCj4gKGNjX3N0YXR1cz0weCV4KSIsDQo+ ICsJCQkJY2Nfc3RhdHVzKTsNCj4gKwkJCXR5cGVfYy0+aXNfYXR0YWNoID0gVE9fREVUQUNIOw0K PiArCQkJdHlwZV9jLT5jb25uZWN0X2NoYW5nZSA9IENPTk5FQ1RfQ0hBTkdFOw0KPiArCQl9IGVs c2UgaWYgKChjY19zdGF0dXMgJiBDQzJfREVUX1NUUykgPCBDQzJfREVUX1NUU19SUCAmJg0KPiAr CQkJICAgdHlwZV9jLT5hdF9jYzEgPT0gQVRfQ0MyKSB7DQo+ICsJCQlkZXZfZGJnKGRldiwgIklO IGRldmljZSBtb2RlIGFuZCBjYzIgaG9zdCBkaXNjb25uZWN0DQo+IChjY19zdGF0dXM9MHgleCki LA0KPiArCQkJCWNjX3N0YXR1cyk7DQo+ICsJCQl0eXBlX2MtPmlzX2F0dGFjaCA9IFRPX0RFVEFD SDsNCj4gKwkJCXR5cGVfYy0+Y29ubmVjdF9jaGFuZ2UgPSBDT05ORUNUX0NIQU5HRTsNCj4gKwkJ fQ0KPiArCQlicmVhazsNCj4gKwljYXNlIElOX0RFVklDRV9NT0RFIHwgSU5fREVUQUNIOg0KPiAr CQljY19zdGF0dXNfY2hlY2sgPSByZWFkbChyZWdfYmFzZSArIFVTQl9UWVBFQ19TVFMpOw0KPiAr CQlpZiAoY2Nfc3RhdHVzX2NoZWNrICE9IDB4MCkgew0KPiArCQkJaWYgKGluX2ludGVycnVwdCgp KSB7DQo+ICsJCQkJLyogQWRkIGRlbGF5IHRpbWUgdG8gYXZvaWQgY2FwYWNpdGl2ZSBlZmZlY3Qg b2YgY2FibGUuICovDQo+ICsJCQkJbWRlbGF5KDMwMCk7DQo+ICsJCQl9IGVsc2Ugew0KPiArCQkJ CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiArCQkJCS8q IEFkZCBkZWxheSB0aW1lIHRvIGF2b2lkIGNhcGFjaXRpdmUgZWZmZWN0IG9mIGNhYmxlLiAqLw0K PiArCQkJCW1zbGVlcCgzMDApOw0KPiArCQkJCXNwaW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxv Y2ssIGZsYWdzKTsNCj4gKwkJCX0NCj4gKwkJCWNjX3N0YXR1c19jaGVjayA9IHJlYWRsKHJlZ19i YXNlICsgVVNCX1RZUEVDX1NUUyk7DQo+ICsJCX0NCj4gKw0KPiArCQlpZiAoY2Nfc3RhdHVzICE9 IGNjX3N0YXR1c19jaGVjaykgew0KPiArCQkJZGV2X3dhcm4oZGV2LCAiSU5fREVWSUNFX01PREU6 IGNjX3N0YXR1cyAoMHgleCkgIT0NCj4gY2Nfc3RhdHVzX2NoZWNrICgweCV4KVxuIiwNCj4gKwkJ CQkgY2Nfc3RhdHVzLCBjY19zdGF0dXNfY2hlY2spOw0KPiArCQkJY2Nfc3RhdHVzID0gcmVhZGwo cmVnX2Jhc2UgKyBVU0JfVFlQRUNfU1RTKTsNCj4gKwkJfQ0KPiArDQo+ICsJCWlmICgoY2Nfc3Rh dHVzICYgQ0MxX0RFVF9TVFMpID49IENDMV9ERVRfU1RTX1JQKSB7DQo+ICsJCQlkZXZfZGJnKGRl diwgIklOIGRldmljZSBtb2RlIGFuZCBjYzEgaG9zdCBjb25uZWN0DQo+IChjY19zdGF0dXM9MHgl eCkiLA0KPiArCQkJCWNjX3N0YXR1cyk7DQo+ICsJCQl0eXBlX2MtPmF0X2NjMSA9IEFUX0NDMTsN Cj4gKwkJCXR5cGVfYy0+aXNfYXR0YWNoID0gVE9fQVRUQUNIOw0KPiArCQkJdHlwZV9jLT5jb25u ZWN0X2NoYW5nZSA9IENPTk5FQ1RfQ0hBTkdFOw0KPiArCQl9IGVsc2UgaWYgKChjY19zdGF0dXMg JiBDQzJfREVUX1NUUykgPj0gQ0MyX0RFVF9TVFNfUlApIHsNCj4gKwkJCWRldl9kYmcoZGV2LCAi SU4gZGV2aWNlIG1vZGUgYW5kIGNjMiBob3N0IGNvbm5lY3QNCj4gKGNjX3N0YXR1cz0weCV4KSIs DQo+ICsJCQkJY2Nfc3RhdHVzKTsNCj4gKwkJCXR5cGVfYy0+YXRfY2MxID0gQVRfQ0MyOw0KPiAr CQkJdHlwZV9jLT5pc19hdHRhY2ggPSBUT19BVFRBQ0g7DQo+ICsJCQl0eXBlX2MtPmNvbm5lY3Rf Y2hhbmdlID0gQ09OTkVDVF9DSEFOR0U7DQo+ICsJCX0NCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVs dDoNCj4gKwkJZGV2X2VycihkZXYsICJlcnJvciBob3N0IG9yIGRldmljZSBtb2RlIChjY19tb2Rl PSVkLA0KPiBpc19hdHRhY2g9JWQpICIsDQo+ICsJCQl0eXBlX2MtPmNjX21vZGUsIHR5cGVfYy0+ aXNfYXR0YWNoKTsNCj4gKwl9DQo+ICsNCj4gKwl0eXBlX2MtPmludF9zdGF0dXMgPSBpbnRfc3Rh dHVzOw0KPiArCXR5cGVfYy0+Y2Nfc3RhdHVzID0gY2Nfc3RhdHVzOw0KPiArDQo+ICsJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmdHlwZV9jLT5sb2NrLCBmbGFncyk7DQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGhvc3RfZGV2aWNlX3N3aXRjaChzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspDQo+ICt7DQo+ICsJc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MgPSBjb250 YWluZXJfb2Yod29yaywgc3RydWN0IHR5cGVfY19kYXRhLA0KPiArCQkJCQkJICBkZWxheWVkX3dv cmsud29yayk7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gdHlwZV9jLT5kZXY7DQo+ICsJdW5z aWduZWQgbG9uZyBmbGFnczsNCj4gKwlpbnQgY29ubmVjdF9jaGFuZ2UgPSAwOw0KPiArCWludCBj Y19tb2RlID0gMDsNCj4gKwlpbnQgaXNfYXR0YWNoID0gMDsNCj4gKwlpbnQgYXRfY2MxID0gMDsN Cj4gKw0KPiArCXNwaW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gKwlp ZiAodHlwZV9jLT5jb25uZWN0X2NoYW5nZSkNCj4gKwkJY29ubmVjdF9jaGFuZ2UgPSB0eXBlX2Mt PmNvbm5lY3RfY2hhbmdlOw0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnR5cGVfYy0+bG9j aywgZmxhZ3MpOw0KPiArDQo+ICsJaWYgKCFjb25uZWN0X2NoYW5nZSkNCj4gKwkJZGV0ZWN0X3R5 cGVfY19zdGF0ZSh0eXBlX2MpOw0KPiArDQo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnR5cGVfYy0+ bG9jaywgZmxhZ3MpOw0KPiArCWlmICh0eXBlX2MtPmNvbm5lY3RfY2hhbmdlKSB7DQo+ICsJCWNv bm5lY3RfY2hhbmdlID0gdHlwZV9jLT5jb25uZWN0X2NoYW5nZTsNCj4gKwkJY2NfbW9kZSA9IHR5 cGVfYy0+Y2NfbW9kZTsNCj4gKwkJaXNfYXR0YWNoID0gdHlwZV9jLT5pc19hdHRhY2g7DQo+ICsJ CWF0X2NjMSA9IHR5cGVfYy0+YXRfY2MxOw0KPiArCQl0eXBlX2MtPmNvbm5lY3RfY2hhbmdlID0g Q09OTkVDVF9OT19DSEFOR0U7DQo+ICsJfSBlbHNlIHsNCj4gKwkJaG9zdF9kZXZpY2Vfc3dpdGNo X2RldGVjdGlvbih0eXBlX2MpOw0KPiArDQo+ICsJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmdHlw ZV9jLT5kZWxheWVkX3dvcmssDQo+IG1zZWNzX3RvX2ppZmZpZXMoREVURUNUX1RJTUUpKTsNCj4g Kwl9DQo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdHlwZV9jLT5sb2NrLCBmbGFncyk7DQo+ ICsNCj4gKwlpZiAoIWNvbm5lY3RfY2hhbmdlKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlkZXZf ZGJnKGRldiwgIiVzOiB1c2IgY2FibGUgY29ubmVjdGlvbiBjaGFuZ2VcbiIsIF9fZnVuY19fKTsN Cj4gKwlpZiAoY2NfbW9kZSA9PSBJTl9IT1NUX01PREUpIHsNCj4gKwkJaWYgKGlzX2F0dGFjaCAm JiBhdF9jYzEpDQo+ICsJCQljb25uZWN0b3JfYXR0YWNoZWQodHlwZV9jLCBFTkFCTEVfQ0MxLA0K PiBVU0JfRFJfTU9ERV9IT1NUKTsNCj4gKwkJZWxzZSBpZiAoaXNfYXR0YWNoICYmICFhdF9jYzEp DQo+ICsJCQljb25uZWN0b3JfYXR0YWNoZWQodHlwZV9jLCBFTkFCTEVfQ0MyLA0KPiBVU0JfRFJf TU9ERV9IT1NUKTsNCj4gKwkJZWxzZQ0KPiArCQkJY29ubmVjdG9yX2RldGFjaGVkKHR5cGVfYywg RElTQUJMRV9DQywNCj4gVVNCX0RSX01PREVfSE9TVCk7DQo+ICsJfSBlbHNlIGlmIChjY19tb2Rl ID09IElOX0RFVklDRV9NT0RFKSB7DQo+ICsJCWlmIChpc19hdHRhY2ggJiYgYXRfY2MxKQ0KPiAr CQkJY29ubmVjdG9yX2F0dGFjaGVkKHR5cGVfYywgRU5BQkxFX0NDMSwNCj4gVVNCX0RSX01PREVf UEVSSVBIRVJBTCk7DQo+ICsJCWVsc2UgaWYgKGlzX2F0dGFjaCAmJiAhYXRfY2MxKQ0KPiArCQkJ Y29ubmVjdG9yX2F0dGFjaGVkKHR5cGVfYywgRU5BQkxFX0NDMiwNCj4gVVNCX0RSX01PREVfUEVS SVBIRVJBTCk7DQo+ICsJCWVsc2UNCj4gKwkJCWNvbm5lY3Rvcl9kZXRhY2hlZCh0eXBlX2MsIERJ U0FCTEVfQ0MsDQo+IFVTQl9EUl9NT0RFX1BFUklQSEVSQUwpOw0KPiArCX0gZWxzZSB7DQo+ICsJ CWRldl9lcnIoZGV2LCAiRXJyb3I6IElOIHVua25vd24gbW9kZSAlZCB0byAlcyBhdCAlcw0KPiAo Y2Nfc3RhdHVzPTB4JXgpXG4iLA0KPiArCQkJY2NfbW9kZSwgaXNfYXR0YWNoID8gImF0dGFjaCIg OiAiZGV0YWNoIiwNCj4gKwkJCWF0X2NjMSA/ICJjYzEiIDogImNjMiIsIHR5cGVfYy0+Y2Nfc3Rh dHVzKTsNCj4gKwl9DQo+ICsJZGV2X2luZm8oZGV2LCAiQ29ubmVjdGlvbiBjaGFuZ2UgT0s6IElO ICVzIG1vZGUgdG8gJXMgYXQgJXMNCj4gKGNjX3N0YXR1cz0weCV4KVxuIiwNCj4gKwkJIGNjX21v ZGUgPT0gSU5fSE9TVF9NT0RFID8gImhvc3QiIDogImRldmljZSIsDQo+ICsJCSBpc19hdHRhY2gg PyAiYXR0YWNoIiA6ICJkZXRhY2giLA0KPiArCQkgYXRfY2MxID8gImNjMSIgOiAiY2MyIiwgdHlw ZV9jLT5jY19zdGF0dXMpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgdHlwZV9j X2RldGVjdF9pcnEoaW50IGlycSwgdm9pZCAqX19kYXRhKQ0KPiArew0KPiArCXN0cnVjdCB0eXBl X2NfZGF0YSAqdHlwZV9jID0gKHN0cnVjdCB0eXBlX2NfZGF0YSAqKV9fZGF0YTsNCj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSB0eXBlX2MtPmRldjsNCj4gKwl2b2lkIF9faW9tZW0gKnJlZyA9IHR5 cGVfYy0+cmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTDsNCj4gKwl1bnNpZ25lZCBsb25nIGZsYWdz Ow0KPiArDQo+ICsJZGV0ZWN0X3R5cGVfY19zdGF0ZSh0eXBlX2MpOw0KPiArDQo+ICsJc3Bpbl9s b2NrX2lycXNhdmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJaWYgKHR5cGVfYy0+ Y29ubmVjdF9jaGFuZ2UpIHsNCj4gKwkJZGV2X2RiZyhkZXYsICIlczogSU4gJXMgbW9kZSB0byAl cyAoYXQgJXMgaW50ZXJydXB0KQ0KPiBpbnRfc3RhdHVzPTB4JXgsIGNjX3N0YXR1cz0weCV4IiwN Cj4gKwkJCV9fZnVuY19fLA0KPiArCQkJdHlwZV9jLT5jY19tb2RlID09IElOX0hPU1RfTU9ERSA/ ICJob3N0IiA6ICJkZXZpY2UiLA0KPiArCQkJdHlwZV9jLT5pc19hdHRhY2ggPyAiYXR0YWNoIiA6 ICJkZXRhY2giLA0KPiArCQkJdHlwZV9jLT5hdF9jYzEgPyAiY2MxIiA6ICJjYzIiLA0KPiArCQkJ dHlwZV9jLT5pbnRfc3RhdHVzLCB0eXBlX2MtPmNjX3N0YXR1cyk7DQo+ICsNCj4gKwkJLyogY2xl YXIgaW50ZXJydXB0IHN0YXR1cyAqLw0KPiArCQl3cml0ZWwofkFMTF9DQ19JTlRfU1RTICYgcmVh ZGwocmVnKSwgcmVnKTsNCj4gKw0KPiArCQljYW5jZWxfZGVsYXllZF93b3JrKCZ0eXBlX2MtPmRl bGF5ZWRfd29yayk7DQo+ICsJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmdHlwZV9jLT5kZWxheWVk X3dvcmssDQo+IG1zZWNzX3RvX2ppZmZpZXMoMCkpOw0KPiArCX0gZWxzZSB7DQo+ICsJCXN0YXRp YyBpbnQgbG9jYWxfY291bnQ7DQo+ICsNCj4gKwkJLyogaWYgbm8gY29ubmVjdF9jaGFuZ2UsIHdl IGtlZXAgdGhlIHN0YXR1cyB0byBhdm9pZCBzdGF0dXMgbG9zZSAqLw0KPiArCQlpZiAobG9jYWxf Y291bnQrKyA+IDEwKSB7DQo+ICsJCQkvKiBjbGVhciBpbnRlcnJ1cHQgc3RhdHVzICovDQo+ICsJ CQl3cml0ZWwofkFMTF9DQ19JTlRfU1RTICYgcmVhZGwocmVnKSwgcmVnKTsNCj4gKwkJCWxvY2Fs X2NvdW50ID0gMDsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHR5cGVfY19wb3J0X2RyX3NldChzdHJ1Y3QgdHlwZWNf cG9ydCAqcG9ydCwNCj4gKwkJCSAgICAgIGVudW0gdHlwZWNfZGF0YV9yb2xlIHJvbGUpDQo+ICt7 DQo+ICsJc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MgPSB0eXBlY19nZXRfZHJ2ZGF0YShwb3J0 KTsNCj4gKwl1MzIgZW5hYmxlX2NjOw0KPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ICsNCj4g KwlzcGluX2xvY2tfaXJxc2F2ZSgmdHlwZV9jLT5sb2NrLCBmbGFncyk7DQo+ICsJZW5hYmxlX2Nj ID0gdHlwZV9jLT5hdF9jYzEgPyBFTkFCTEVfQ0MxIDogRU5BQkxFX0NDMjsNCj4gKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gKw0KPiArCWlmIChyb2xl ID09IFRZUEVDX0hPU1QpDQo+ICsJCXN3aXRjaF90eXBlX2NfZHJfbW9kZSh0eXBlX2MsIFVTQl9E Ul9NT0RFX0hPU1QsIGVuYWJsZV9jYyk7DQo+ICsJZWxzZSBpZiAocm9sZSA9PSBUWVBFQ19ERVZJ Q0UpDQo+ICsJCXN3aXRjaF90eXBlX2NfZHJfbW9kZSh0eXBlX2MsIFVTQl9EUl9NT0RFX1BFUklQ SEVSQUwsDQo+IGVuYWJsZV9jYyk7DQo+ICsJZWxzZQ0KPiArCQlzd2l0Y2hfdHlwZV9jX2RyX21v ZGUodHlwZV9jLCAwLCBESVNBQkxFX0NDKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHR5cGVjX29wZXJhdGlvbnMgdHlwZV9jX3BvcnRfb3Bz ID0gew0KPiArCS5kcl9zZXQgPSB0eXBlX2NfcG9ydF9kcl9zZXQsDQo+ICt9Ow0KPiArDQo+ICsj aWZkZWYgQ09ORklHX0RFQlVHX0ZTDQo+ICtzdGF0aWMgaW50IHR5cGVfY19wYXJhbWV0ZXJfc2hv dyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZCkNCj4gK3sNCj4gKwlzdHJ1Y3QgdHlw ZV9jX2RhdGEgKnR5cGVfYyA9IHMtPnByaXZhdGU7DQo+ICsJc3RydWN0IHR5cGVfY19jZmcgKnR5 cGVfY19jZmcgPSB0eXBlX2MtPnR5cGVfY19jZmc7DQo+ICsJc3RydWN0IGNjX3BhcmFtICpjY19w YXJhbTsNCj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiArDQo+ICsJc3Bpbl9sb2NrX2lycXNh dmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJc2VxX3ByaW50ZihzLCAiY2NfZGZw X21vZGUgJXNcbiIsDQo+ICsJCSAgICh7IGNoYXIgKnRtcDsNCj4gKwkJCXN3aXRjaCAodHlwZV9j X2NmZy0+Y2NfZGZwX21vZGUpIHsNCj4gKwkJCWNhc2UgQ0NfTU9ERV9ERlBfVVNCOg0KPiArCQkJ CXRtcCA9ICJDQ19NT0RFX0RGUF9VU0IiOyBicmVhazsNCj4gKwkJCWNhc2UgQ0NfTU9ERV9ERlBf MV81Og0KPiArCQkJCXRtcCA9ICJDQ19NT0RFX0RGUF8xXzUiOyBicmVhazsNCj4gKwkJCWNhc2Ug Q0NfTU9ERV9ERlBfM18wOg0KPiArCQkJCXRtcCA9ICJDQ19NT0RFX0RGUF8zXzAiOyBicmVhazsN Cj4gKwkJCWRlZmF1bHQ6DQo+ICsJCQkJdG1wID0gIj8iOyBicmVhazsNCj4gKwkJICAgfSB0bXA7 IH0pKTsNCj4gKw0KPiArCXNlcV9wcmludGYocywgImRmcF9tb2RlX3JwX2VuIDB4JXhcbiIsIHR5 cGVfYy0+ZGZwX21vZGVfcnBfZW4pOw0KPiArCXNlcV9wcmludGYocywgInVmcF9tb2RlX3JkX2Vu IDB4JXhcbiIsIHR5cGVfYy0+dWZwX21vZGVfcmRfZW4pOw0KPiArCXNlcV9wcmludGYocywgImNj MV9jb2RlIDB4JXhcbiIsIHR5cGVfYy0+Y2MxX2NvZGUpOw0KPiArCXNlcV9wcmludGYocywgImNj Ml9jb2RlIDB4JXhcbiIsIHR5cGVfYy0+Y2MyX2NvZGUpOw0KPiArCXNlcV9wcmludGYocywgImNj MV92cmVmIDB4JXhcbiIsIHR5cGVfYy0+Y2MxX3ZyZWYpOw0KPiArCXNlcV9wcmludGYocywgImNj Ml92cmVmIDB4JXhcbiIsIHR5cGVfYy0+Y2MyX3ZyZWYpOw0KPiArCXNlcV9wcmludGYocywgImRl Ym91bmNlIDB4JXhcbiIsIHR5cGVfYy0+ZGVib3VuY2UpOw0KPiArCXNlcV9wdXRzKHMsICJcbiIp Ow0KPiArDQo+ICsJY2NfcGFyYW0gPSAmdHlwZV9jX2NmZy0+Y2MxX3BhcmFtOw0KPiArCXNlcV9w dXRzKHMsICJjYzFfcGFyYW06XG4iKTsNCj4gKwlzZXFfcHJpbnRmKHMsICIgIHJwXzRwN2tfY29k ZSAweCV4XG4iLCBjY19wYXJhbS0+cnBfNHA3a19jb2RlKTsNCj4gKwlzZXFfcHJpbnRmKHMsICIg IHJwXzM2a19jb2RlICAweCV4XG4iLCBjY19wYXJhbS0+cnBfMzZrX2NvZGUpOw0KPiArCXNlcV9w cmludGYocywgIiAgcnBfMTJrX2NvZGUgIDB4JXhcbiIsIGNjX3BhcmFtLT5ycF8xMmtfY29kZSk7 DQo+ICsJc2VxX3ByaW50ZihzLCAiICByZF9jb2RlICAgICAgMHgleFxuIiwgY2NfcGFyYW0tPnJk X2NvZGUpOw0KPiArCXNlcV9wcmludGYocywgIiAgdnJlZl8ycDZ2ICAgIDB4JXhcbiIsIGNjX3Bh cmFtLT52cmVmXzJwNnYpOw0KPiArCXNlcV9wcmludGYocywgIiAgdnJlZl8xcDIzdiAgIDB4JXhc biIsIGNjX3BhcmFtLT52cmVmXzFwMjN2KTsNCj4gKwlzZXFfcHJpbnRmKHMsICIgIHZyZWZfMHA4 diAgICAweCV4XG4iLCBjY19wYXJhbS0+dnJlZl8wcDh2KTsNCj4gKwlzZXFfcHJpbnRmKHMsICIg IHZyZWZfMHA2NnYgICAweCV4XG4iLCBjY19wYXJhbS0+dnJlZl8wcDY2dik7DQo+ICsJc2VxX3By aW50ZihzLCAiICB2cmVmXzBwNHYgICAgMHgleFxuIiwgY2NfcGFyYW0tPnZyZWZfMHA0dik7DQo+ ICsJc2VxX3ByaW50ZihzLCAiICB2cmVmXzBwMnYgICAgMHgleFxuIiwgY2NfcGFyYW0tPnZyZWZf MHAydik7DQo+ICsJc2VxX3ByaW50ZihzLCAiICB2cmVmXzFfMXA2diAgMHgleFxuIiwgY2NfcGFy YW0tPnZyZWZfMV8xcDZ2KTsNCj4gKwlzZXFfcHJpbnRmKHMsICIgIHZyZWZfMF8xcDZ2ICAweCV4 XG4iLCBjY19wYXJhbS0+dnJlZl8wXzFwNnYpOw0KPiArDQo+ICsJY2NfcGFyYW0gPSAmdHlwZV9j X2NmZy0+Y2MyX3BhcmFtOw0KPiArCXNlcV9wdXRzKHMsICJjYzJfcGFyYW06XG4iKTsNCj4gKwlz ZXFfcHJpbnRmKHMsICIgIHJwXzRwN2tfY29kZSAweCV4XG4iLCBjY19wYXJhbS0+cnBfNHA3a19j b2RlKTsNCj4gKwlzZXFfcHJpbnRmKHMsICIgIHJwXzM2a19jb2RlICAweCV4XG4iLCBjY19wYXJh bS0+cnBfMzZrX2NvZGUpOw0KPiArCXNlcV9wcmludGYocywgIiAgcnBfMTJrX2NvZGUgIDB4JXhc biIsIGNjX3BhcmFtLT5ycF8xMmtfY29kZSk7DQo+ICsJc2VxX3ByaW50ZihzLCAiICByZF9jb2Rl ICAgICAgMHgleFxuIiwgY2NfcGFyYW0tPnJkX2NvZGUpOw0KPiArCXNlcV9wcmludGYocywgIiAg dnJlZl8ycDZ2ICAgIDB4JXhcbiIsIGNjX3BhcmFtLT52cmVmXzJwNnYpOw0KPiArCXNlcV9wcmlu dGYocywgIiAgdnJlZl8xcDIzdiAgIDB4JXhcbiIsIGNjX3BhcmFtLT52cmVmXzFwMjN2KTsNCj4g KwlzZXFfcHJpbnRmKHMsICIgIHZyZWZfMHA4diAgICAweCV4XG4iLCBjY19wYXJhbS0+dnJlZl8w cDh2KTsNCj4gKwlzZXFfcHJpbnRmKHMsICIgIHZyZWZfMHA2NnYgICAweCV4XG4iLCBjY19wYXJh bS0+dnJlZl8wcDY2dik7DQo+ICsJc2VxX3ByaW50ZihzLCAiICB2cmVmXzBwNHYgICAgMHgleFxu IiwgY2NfcGFyYW0tPnZyZWZfMHA0dik7DQo+ICsJc2VxX3ByaW50ZihzLCAiICB2cmVmXzBwMnYg ICAgMHgleFxuIiwgY2NfcGFyYW0tPnZyZWZfMHAydik7DQo+ICsJc2VxX3ByaW50ZihzLCAiICB2 cmVmXzFfMXA2diAgMHgleFxuIiwgY2NfcGFyYW0tPnZyZWZfMV8xcDZ2KTsNCj4gKwlzZXFfcHJp bnRmKHMsICIgIHZyZWZfMF8xcDZ2ICAweCV4XG4iLCBjY19wYXJhbS0+dnJlZl8wXzFwNnYpOw0K PiArDQo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdHlwZV9jLT5sb2NrLCBmbGFncyk7DQo+ ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCB0eXBlX2NfcGFyYW1l dGVyX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpDQo+ICt7DQo+ ICsJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIHR5cGVfY19wYXJhbWV0ZXJfc2hvdywgaW5vZGUt PmlfcHJpdmF0ZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVy YXRpb25zIHR5cGVfY19wYXJhbWV0ZXJfZm9wcyA9IHsNCj4gKwkub3BlbgkJCT0gdHlwZV9jX3Bh cmFtZXRlcl9vcGVuLA0KPiArCS5yZWFkCQkJPSBzZXFfcmVhZCwNCj4gKwkubGxzZWVrCQkJPSBz ZXFfbHNlZWssDQo+ICsJLnJlbGVhc2UJCT0gc2luZ2xlX3JlbGVhc2UsDQo+ICt9Ow0KPiArDQo+ ICtzdGF0aWMgaW50IHR5cGVfY19zdGF0dXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQg KnVudXNlZCkNCj4gK3sNCj4gKwlzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYyA9IHMtPnByaXZh dGU7DQo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gKw0KPiArCXNwaW5fbG9ja19pcnFzYXZl KCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gKw0KPiArCXNlcV9wcmludGYocywgIkluICVzIG1v ZGUgJXMgYXQgJXMgKGNjX3N0YXR1cz0weCV4KVxuIiwNCj4gKwkJICAgdHlwZV9jLT5jY19tb2Rl ID09IElOX0hPU1RfTU9ERSA/ICJob3N0IiA6ICJkZXZpY2UiLA0KPiArCQkgICB0eXBlX2MtPmlz X2F0dGFjaCA/ICJhdHRhY2giIDogImRldGFjaCIsDQo+ICsJCSAgIHR5cGVfYy0+YXRfY2MxID8g ImNjMSIgOiAiY2MyIiwgdHlwZV9jLT5jY19zdGF0dXMpOw0KPiArDQo+ICsJc2VxX3ByaW50Zihz LCAiUmVhZCBSZWdpc3RlciAodHlwZV9jX2N0cmxfY2MxXzA9MHgleClcbiIsDQo+ICsJCSAgIHJl YWRsKHR5cGVfYy0+cmVnX2Jhc2UgKyAweDApKTsNCj4gKwlzZXFfcHJpbnRmKHMsICJSZWFkIFJl Z2lzdGVyICh0eXBlX2NfY3RybF9jYzFfMT0weCV4KVxuIiwNCj4gKwkJICAgcmVhZGwodHlwZV9j LT5yZWdfYmFzZSArIDB4NCkpOw0KPiArCXNlcV9wcmludGYocywgIlJlYWQgUmVnaXN0ZXIgKHR5 cGVfY19jdHJsX2NjMl8wPTB4JXgpXG4iLA0KPiArCQkgICByZWFkbCh0eXBlX2MtPnJlZ19iYXNl ICsgMHg4KSk7DQo+ICsJc2VxX3ByaW50ZihzLCAiUmVhZCBSZWdpc3RlciAodHlwZV9jX2N0cmxf Y2MyXzE9MHgleClcbiIsDQo+ICsJCSAgIHJlYWRsKHR5cGVfYy0+cmVnX2Jhc2UgKyAweGMpKTsN Cj4gKwlzZXFfcHJpbnRmKHMsICJSZWFkIFJlZ2lzdGVyICh0eXBlX2Nfc3RhdHVzPTB4JXgpXG4i LA0KPiArCQkgICByZWFkbCh0eXBlX2MtPnJlZ19iYXNlICsgMHgxMCkpOw0KPiArCXNlcV9wcmlu dGYocywgIlJlYWQgUmVnaXN0ZXIgKHR5cGVfY19jdHJsPTB4JXgpXG4iLA0KPiArCQkgICByZWFk bCh0eXBlX2MtPnJlZ19iYXNlICsgMHgxNCkpOw0KPiArDQo+ICsJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmdHlwZV9jLT5sb2NrLCBmbGFncyk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4g Kw0KPiArc3RhdGljIGludCB0eXBlX2Nfc3RhdHVzX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwg c3RydWN0IGZpbGUgKmZpbGUpDQo+ICt7DQo+ICsJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIHR5 cGVfY19zdGF0dXNfc2hvdywgaW5vZGUtPmlfcHJpdmF0ZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHR5cGVfY19zdGF0dXNfZm9wcyA9IHsNCj4g Kwkub3BlbgkJCT0gdHlwZV9jX3N0YXR1c19vcGVuLA0KPiArCS5yZWFkCQkJPSBzZXFfcmVhZCwN Cj4gKwkubGxzZWVrCQkJPSBzZXFfbHNlZWssDQo+ICsJLnJlbGVhc2UJCT0gc2luZ2xlX3JlbGVh c2UsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgY3JlYXRlX2RlYnVnX2ZpbGVz KHN0cnVjdCB0eXBlX2NfZGF0YSAqdHlwZV9jKQ0KPiArew0KPiArCXR5cGVfYy0+ZGVidWdfZGly ID0gZGVidWdmc19jcmVhdGVfZGlyKCJ0eXBlX2MiLCB1c2JfZGVidWdfcm9vdCk7DQo+ICsNCj4g KwlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJwYXJhbWV0ZXIiLCAwNDQ0LCB0eXBlX2MtPmRlYnVnX2Rp ciwgdHlwZV9jLA0KPiArCQkJICAgICZ0eXBlX2NfcGFyYW1ldGVyX2ZvcHMpOw0KPiArDQo+ICsJ ZGVidWdmc19jcmVhdGVfZmlsZSgic3RhdHVzIiwgMDQ0NCwgdHlwZV9jLT5kZWJ1Z19kaXIsIHR5 cGVfYywNCj4gKwkJCSAgICAmdHlwZV9jX3N0YXR1c19mb3BzKTsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGlubGluZSB2b2lkIHJlbW92ZV9kZWJ1Z19maWxlcyhzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5 cGVfYykNCj4gK3sNCj4gKwlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUodHlwZV9jLT5kZWJ1Z19k aXIpOw0KPiArfQ0KPiArI2Vsc2UNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBjcmVhdGVfZGVidWdf ZmlsZXMoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MpIHsgfQ0KPiArc3RhdGljIGlubGluZSB2 b2lkIHJlbW92ZV9kZWJ1Z19maWxlcyhzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYykgeyB9DQo+ ICsjZW5kaWYgLyogQ09ORklHX0RFQlVHX0ZTICovDQo+ICsNCj4gKy8qIEluaXQgYW5kIHByb2Jl ICovDQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgczggZ2V0X3ZhbHVlKHM4IHZhbHVlKQ0KPiArew0K PiArCXJldHVybiAoKChzOCl2YWx1ZSAmIDB4OCkgPyAoLShzOCkoMHg3ICYgdmFsdWUpKSA6ICgo czgpKHZhbHVlKSkpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IF9fdXBkYXRlZF90eXBlX2Nf cGFyYW1ldGVyX2J5X2VmdXNlKHN0cnVjdCB0eXBlX2NfZGF0YQ0KPiAqdHlwZV9jKQ0KPiArew0K PiArCXN0cnVjdCB0eXBlX2NfY2ZnICp0eXBlX2NfY2ZnID0gdHlwZV9jLT50eXBlX2NfY2ZnOw0K PiArCXN0cnVjdCBjY19wYXJhbSAqY2NfcGFyYW07DQo+ICsJc3RydWN0IG52bWVtX2NlbGwgKmNl bGw7DQo+ICsJczggY2MxXzRwN2sgPSAwOw0KPiArCXM4IGNjMV8xMmsgPSAwOw0KPiArCXM4IGNj MV8wcDJ2ID0gMDsNCj4gKwlzOCBjYzFfMHA4diA9IDA7DQo+ICsJczggY2MxXzJwNnYgPSAwOw0K PiArCXM4IGNjMV8wcDY2diA9IDA7DQo+ICsJczggY2MxXzFwMjN2ID0gMDsNCj4gKwlzOCBjYzJf NHA3ayA9IDA7DQo+ICsJczggY2MyXzEyayA9IDA7DQo+ICsJczggY2MyXzBwMnYgPSAwOw0KPiAr CXM4IGNjMl8wcDh2ID0gMDsNCj4gKwlzOCBjYzJfMnA2diA9IDA7DQo+ICsJczggY2MyXzBwNjZ2 ID0gMDsNCj4gKwlzOCBjYzJfMXAyM3YgPSAwOw0KPiArDQo+ICsJY2VsbCA9IG52bWVtX2NlbGxf Z2V0KHR5cGVfYy0+ZGV2LCAidXNiLWNhbCIpOw0KPiArCWlmIChJU19FUlIoY2VsbCkpIHsNCj4g KwkJZGV2X3dhcm4odHlwZV9jLT5kZXYsICIlcyBmYWlsZWQgdG8gZ2V0IHVzYi1jYWw6ICVsZFxu IiwNCj4gKwkJCSBfX2Z1bmNfXywgUFRSX0VSUihjZWxsKSk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJ dW5zaWduZWQgY2hhciAqYnVmOw0KPiArCQlzaXplX3QgYnVmX3NpemU7DQo+ICsJCWludCB2YWx1 ZV9zaXplID0gNDsNCj4gKwkJaW50IHZhbHVlX21hc2sgPSAoQklUKHZhbHVlX3NpemUpIC0gMSk7 DQo+ICsNCj4gKwkJYnVmID0gbnZtZW1fY2VsbF9yZWFkKGNlbGwsICZidWZfc2l6ZSk7DQo+ICsN Cj4gKwkJY2MxXzBwMnYgPSBnZXRfdmFsdWUoKGJ1ZlswXSA+PiB2YWx1ZV9zaXplICogMCkgJiB2 YWx1ZV9tYXNrKTsNCj4gKwkJY2MxXzBwOHYgPSBnZXRfdmFsdWUoKGJ1ZlswXSA+PiB2YWx1ZV9z aXplICogMSkgJiB2YWx1ZV9tYXNrKTsNCj4gKwkJY2MxXzJwNnYgPSBnZXRfdmFsdWUoKGJ1Zlsx XSA+PiB2YWx1ZV9zaXplICogMCkgJiB2YWx1ZV9tYXNrKTsNCj4gKwkJY2MxXzBwNjZ2ID0gZ2V0 X3ZhbHVlKChidWZbMV0gPj4gdmFsdWVfc2l6ZSAqIDEpICYgdmFsdWVfbWFzayk7DQo+ICsJCWNj MV8xcDIzdiA9IGdldF92YWx1ZSgoYnVmWzJdID4+IHZhbHVlX3NpemUgKiAwKSAmIHZhbHVlX21h c2spOw0KPiArDQo+ICsJCWNjMl8wcDJ2ID0gZ2V0X3ZhbHVlKChidWZbM10gPj4gdmFsdWVfc2l6 ZSAqIDApICYgdmFsdWVfbWFzayk7DQo+ICsJCWNjMl8wcDh2ID0gZ2V0X3ZhbHVlKChidWZbM10g Pj4gdmFsdWVfc2l6ZSAqIDEpICYgdmFsdWVfbWFzayk7DQo+ICsJCWNjMl8ycDZ2ID0gZ2V0X3Zh bHVlKChidWZbNF0gPj4gdmFsdWVfc2l6ZSAqIDApICYgdmFsdWVfbWFzayk7DQo+ICsJCWNjMl8w cDY2diA9IGdldF92YWx1ZSgoYnVmWzRdID4+IHZhbHVlX3NpemUgKiAxKSAmIHZhbHVlX21hc2sp Ow0KPiArCQljYzJfMXAyM3YgPSBnZXRfdmFsdWUoKGJ1Zls1XSA+PiB2YWx1ZV9zaXplICogMCkg JiB2YWx1ZV9tYXNrKTsNCj4gKw0KPiArCQljYzFfNHA3ayA9IGdldF92YWx1ZSgoYnVmWzZdID4+ IHZhbHVlX3NpemUgKiAwKSAmIHZhbHVlX21hc2spOw0KPiArCQljYzFfMTJrID0gZ2V0X3ZhbHVl KChidWZbNl0gPj4gdmFsdWVfc2l6ZSAqIDEpICYgdmFsdWVfbWFzayk7DQo+ICsJCWNjMl80cDdr ID0gZ2V0X3ZhbHVlKChidWZbN10gPj4gdmFsdWVfc2l6ZSAqIDApICYgdmFsdWVfbWFzayk7DQo+ ICsJCWNjMl8xMmsgPSBnZXRfdmFsdWUoKGJ1Zls3XSA+PiB2YWx1ZV9zaXplICogMSkgJiB2YWx1 ZV9tYXNrKTsNCj4gKw0KPiArCQlrZnJlZShidWYpOw0KPiArCQludm1lbV9jZWxsX3B1dChjZWxs KTsNCj4gKwl9DQo+ICsNCj4gKwlkZXZfZGJnKHR5cGVfYy0+ZGV2LCAiY2hlY2sgZWZ1c2UgY2Mx XzRwN2s9JWQgY2MxXzEyaz0lZA0KPiBjYzJfNHA3az0lZCBjYzJfMTJrPSVkXG4iLA0KPiArCQlj YzFfNHA3aywgY2MxXzEyaywgY2MyXzRwN2ssIGNjMl8xMmspOw0KPiArCWRldl9kYmcodHlwZV9j LT5kZXYsICJjaGVjayBlZnVzZSBjYzFfMHAydj0lZCBjYzFfMHA4dj0lZA0KPiBjYzFfMnA2dj0l ZCBjYzFfMHA2NnY9JWQgY2MxXzFwMjN2PSVkXG4iLA0KPiArCQljYzFfMHAydiwgY2MxXzBwOHYs IGNjMV8ycDZ2LCBjYzFfMHA2NnYsIGNjMV8xcDIzdik7DQo+ICsJZGV2X2RiZyh0eXBlX2MtPmRl diwgImNoZWNrIGVmdXNlIGNjMl8wcDJ2PSVkIGNjMl8wcDh2PSVkDQo+IGNjMl8ycDZ2PSVkIGNj Ml8wcDY2dj0lZCBjYzJfMXAyM3Y9JWRcbiIsDQo+ICsJCWNjMl8wcDJ2LCBjYzJfMHA4diwgY2My XzJwNnYsIGNjMl8wcDY2diwgY2MyXzFwMjN2KTsNCj4gKw0KPiArCWNjX3BhcmFtID0gJnR5cGVf Y19jZmctPmNjMV9wYXJhbTsNCj4gKwljY19wYXJhbS0+cnBfNHA3a19jb2RlID0gY2NfcGFyYW0t PnJwXzRwN2tfY29kZSArIGNjMV80cDdrOw0KPiArCWNjX3BhcmFtLT5ycF8xMmtfY29kZSA9IGNj X3BhcmFtLT5ycF8xMmtfY29kZSArIGNjMV8xMms7DQo+ICsNCj4gKwljY19wYXJhbS0+dnJlZl8x cDIzdiA9IGNjX3BhcmFtLT52cmVmXzFwMjN2ICsgY2MxXzFwMjN2Ow0KPiArCWNjX3BhcmFtLT52 cmVmXzBwNjZ2ID0gY2NfcGFyYW0tPnZyZWZfMHA2NnYgKyBjYzFfMHA2NnY7DQo+ICsJY2NfcGFy YW0tPnZyZWZfMnA2diA9IGNjX3BhcmFtLT52cmVmXzJwNnYgKyBjYzFfMnA2djsNCj4gKwljY19w YXJhbS0+dnJlZl8wcDh2ID0gY2NfcGFyYW0tPnZyZWZfMHA4diArIGNjMV8wcDh2Ow0KPiArCWNj X3BhcmFtLT52cmVmXzBwMnYgPSBjY19wYXJhbS0+dnJlZl8wcDJ2ICsgY2MxXzBwMnY7DQo+ICsN Cj4gKwljY19wYXJhbSA9ICZ0eXBlX2NfY2ZnLT5jYzJfcGFyYW07DQo+ICsJY2NfcGFyYW0tPnJw XzRwN2tfY29kZSA9IGNjX3BhcmFtLT5ycF80cDdrX2NvZGUgKyBjYzJfNHA3azsNCj4gKwljY19w YXJhbS0+cnBfMTJrX2NvZGUgPSBjY19wYXJhbS0+cnBfMTJrX2NvZGUgKyBjYzJfMTJrOw0KPiAr DQo+ICsJY2NfcGFyYW0tPnZyZWZfMXAyM3YgPSBjY19wYXJhbS0+dnJlZl8xcDIzdiArIGNjMl8x cDIzdjsNCj4gKwljY19wYXJhbS0+dnJlZl8wcDY2diA9IGNjX3BhcmFtLT52cmVmXzBwNjZ2ICsg Y2MyXzBwNjZ2Ow0KPiArCWNjX3BhcmFtLT52cmVmXzJwNnYgPSBjY19wYXJhbS0+dnJlZl8ycDZ2 ICsgY2MyXzJwNnY7DQo+ICsJY2NfcGFyYW0tPnZyZWZfMHA4diA9IGNjX3BhcmFtLT52cmVmXzBw OHYgKyBjYzJfMHA4djsNCj4gKwljY19wYXJhbS0+dnJlZl8wcDJ2ID0gY2NfcGFyYW0tPnZyZWZf MHAydiArIGNjMl8wcDJ2Ow0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBpbnQgX191cGRhdGVkX3R5cGVfY19wYXJhbWV0ZXJfYnlfZWZ1c2VfdjIoc3RydWN0IHR5cGVf Y19kYXRhDQo+ICp0eXBlX2MpDQo+ICt7DQo+ICsJc3RydWN0IHR5cGVfY19jZmcgKnR5cGVfY19j ZmcgPSB0eXBlX2MtPnR5cGVfY19jZmc7DQo+ICsJc3RydWN0IGNjX3BhcmFtICpjY19wYXJhbTsN Cj4gKwlzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDsNCj4gKwlzOCBjYzFfNHA3ayA9IDA7DQo+ICsJ czggY2MxXzEyayA9IDA7DQo+ICsJczggY2MxXzBwMnYgPSAwOw0KPiArCXM4IGNjMV8wcDh2ID0g MDsNCj4gKwlzOCBjYzFfMnA2diA9IDA7DQo+ICsJczggY2MxXzBwNjZ2ID0gMDsNCj4gKwlzOCBj YzFfMXAyM3YgPSAwOw0KPiArCXM4IGNjMl80cDdrID0gMDsNCj4gKwlzOCBjYzJfMTJrID0gMDsN Cj4gKwlzOCBjYzJfMHAydiA9IDA7DQo+ICsJczggY2MyXzBwOHYgPSAwOw0KPiArCXM4IGNjMl8y cDZ2ID0gMDsNCj4gKwlzOCBjYzJfMHA2NnYgPSAwOw0KPiArCXM4IGNjMl8xcDIzdiA9IDA7DQo+ ICsNCj4gKwljZWxsID0gbnZtZW1fY2VsbF9nZXQodHlwZV9jLT5kZXYsICJ1c2ItdHlwZS1jLWNh bCIpOw0KPiArCWlmIChJU19FUlIoY2VsbCkpIHsNCj4gKwkJZGV2X3dhcm4odHlwZV9jLT5kZXYs ICIlcyBmYWlsZWQgdG8gZ2V0IHVzYi10eXBlLWMtY2FsOiAlbGRcbiIsDQo+ICsJCQkgX19mdW5j X18sIFBUUl9FUlIoY2VsbCkpOw0KPiArCX0gZWxzZSB7DQo+ICsJCXVuc2lnbmVkIGNoYXIgKmJ1 ZjsNCj4gKwkJc2l6ZV90IGJ1Zl9zaXplOw0KPiArCQlpbnQgdmFsdWVfc2l6ZSA9IDA7DQo+ICsJ CWludCB2YWx1ZV9tYXNrID0gKEJJVCh2YWx1ZV9zaXplKSAtIDEpOw0KPiArDQo+ICsJCWJ1ZiA9 IG52bWVtX2NlbGxfcmVhZChjZWxsLCAmYnVmX3NpemUpOw0KPiArDQo+ICsJCXZhbHVlX3NpemUg PSA1Ow0KPiArCQl2YWx1ZV9tYXNrID0gKEJJVCh2YWx1ZV9zaXplKSAtIDEpOw0KPiArCQljYzFf NHA3ayA9IGJ1ZlswXSAmIHZhbHVlX21hc2s7DQo+ICsJCWNjMV8xMmsgPSBidWZbMV0gJiB2YWx1 ZV9tYXNrOw0KPiArCQljYzJfNHA3ayA9IGJ1ZlsyXSAmIHZhbHVlX21hc2s7DQo+ICsJCWNjMl8x MmsgPSBidWZbM10gJiB2YWx1ZV9tYXNrOw0KPiArDQo+ICsJCXZhbHVlX3NpemUgPSA0Ow0KPiAr CQl2YWx1ZV9tYXNrID0gKEJJVCh2YWx1ZV9zaXplKSAtIDEpOw0KPiArCQljYzFfMHAydiA9IChi dWZbNF0gPj4gdmFsdWVfc2l6ZSAqIDApICYgdmFsdWVfbWFzazsNCj4gKwkJY2MxXzBwNjZ2ID0g KGJ1Zls0XSA+PiB2YWx1ZV9zaXplICogMSkgJiB2YWx1ZV9tYXNrOw0KPiArCQljYzFfMHA4diA9 IChidWZbNV0gPj4gdmFsdWVfc2l6ZSAqIDApICYgdmFsdWVfbWFzazsNCj4gKwkJY2MxXzFwMjN2 ID0gKGJ1Zls1XSA+PiB2YWx1ZV9zaXplICogMSkgJiB2YWx1ZV9tYXNrOw0KPiArCQljYzFfMnA2 diA9IChidWZbNl0gPj4gdmFsdWVfc2l6ZSAqIDApICYgdmFsdWVfbWFzazsNCj4gKw0KPiArCQlj YzJfMHAydiA9IChidWZbNl0gPj4gdmFsdWVfc2l6ZSAqIDEpICYgdmFsdWVfbWFzazsNCj4gKwkJ Y2MyXzBwNjZ2ID0gKGJ1Zls3XSA+PiB2YWx1ZV9zaXplICogMCkgJiB2YWx1ZV9tYXNrOw0KPiAr CQljYzJfMHA4diA9IChidWZbN10gPj4gdmFsdWVfc2l6ZSAqIDEpICYgdmFsdWVfbWFzazsNCj4g KwkJY2MyXzFwMjN2ID0gKGJ1Zls4XSA+PiB2YWx1ZV9zaXplICogMCkgJiB2YWx1ZV9tYXNrOw0K PiArCQljYzJfMnA2diA9IChidWZbOF0gPj4gdmFsdWVfc2l6ZSAqIDEpICYgdmFsdWVfbWFzazsN Cj4gKw0KPiArCQlrZnJlZShidWYpOw0KPiArCQludm1lbV9jZWxsX3B1dChjZWxsKTsNCj4gKwl9 DQo+ICsNCj4gKwlkZXZfZGJnKHR5cGVfYy0+ZGV2LCAiY2hlY2sgZWZ1c2UgdjIgY2MxXzRwN2s9 JWQgY2MxXzEyaz0lZA0KPiBjYzJfNHA3az0lZCBjYzJfMTJrPSVkXG4iLA0KPiArCQljYzFfNHA3 aywgY2MxXzEyaywgY2MyXzRwN2ssIGNjMl8xMmspOw0KPiArCWRldl9kYmcodHlwZV9jLT5kZXYs ICJjaGVjayBlZnVzZSB2MiBjYzFfMHAydj0lZCBjYzFfMHA4dj0lZA0KPiBjYzFfMnA2dj0lZCBj YzFfMHA2NnY9JWQgY2MxXzFwMjN2PSVkXG4iLA0KPiArCQljYzFfMHAydiwgY2MxXzBwOHYsIGNj MV8ycDZ2LCBjYzFfMHA2NnYsIGNjMV8xcDIzdik7DQo+ICsJZGV2X2RiZyh0eXBlX2MtPmRldiwg ImNoZWNrIGVmdXNlIHYyIGNjMl8wcDJ2PSVkIGNjMl8wcDh2PSVkDQo+IGNjMl8ycDZ2PSVkIGNj Ml8wcDY2dj0lZCBjYzJfMXAyM3Y9JWRcbiIsDQo+ICsJCWNjMl8wcDJ2LCBjYzJfMHA4diwgY2My XzJwNnYsIGNjMl8wcDY2diwgY2MyXzFwMjN2KTsNCj4gKw0KPiArCWNjX3BhcmFtID0gJnR5cGVf Y19jZmctPmNjMV9wYXJhbTsNCj4gKwlpZiAoY2MxXzRwN2spDQo+ICsJCWNjX3BhcmFtLT5ycF80 cDdrX2NvZGUgPSBjYzFfNHA3azsNCj4gKwlpZiAoY2MxXzEyaykNCj4gKwkJY2NfcGFyYW0tPnJw XzEya19jb2RlID0gY2MxXzEyazsNCj4gKw0KPiArCWlmIChjYzFfMXAyM3YpDQo+ICsJCWNjX3Bh cmFtLT52cmVmXzFwMjN2ID0gY2MxXzFwMjN2Ow0KPiArCWlmIChjYzFfMHA2NnYpDQo+ICsJCWNj X3BhcmFtLT52cmVmXzBwNjZ2ID0gY2MxXzBwNjZ2Ow0KPiArCWlmIChjYzFfMnA2dikNCj4gKwkJ Y2NfcGFyYW0tPnZyZWZfMnA2diA9IGNjMV8ycDZ2Ow0KPiArCWlmIChjYzFfMHA4dikNCj4gKwkJ Y2NfcGFyYW0tPnZyZWZfMHA4diA9IGNjMV8wcDh2Ow0KPiArCWlmIChjYzFfMHAydikNCj4gKwkJ Y2NfcGFyYW0tPnZyZWZfMHAydiA9IGNjMV8wcDJ2Ow0KPiArDQo+ICsJY2NfcGFyYW0gPSAmdHlw ZV9jX2NmZy0+Y2MyX3BhcmFtOw0KPiArCWlmIChjYzJfNHA3aykNCj4gKwkJY2NfcGFyYW0tPnJw XzRwN2tfY29kZSA9IGNjMl80cDdrOw0KPiArCWlmIChjYzJfMTJrKQ0KPiArCQljY19wYXJhbS0+ cnBfMTJrX2NvZGUgPSBjYzJfMTJrOw0KPiArDQo+ICsJaWYgKGNjMl8xcDIzdikNCj4gKwkJY2Nf cGFyYW0tPnZyZWZfMXAyM3YgPSBjYzJfMXAyM3Y7DQo+ICsJaWYgKGNjMl8wcDY2dikNCj4gKwkJ Y2NfcGFyYW0tPnZyZWZfMHA2NnYgPSBjYzJfMHA2NnY7DQo+ICsJaWYgKGNjMl8ycDZ2KQ0KPiAr CQljY19wYXJhbS0+dnJlZl8ycDZ2ID0gY2MyXzJwNnY7DQo+ICsJaWYgKGNjMl8wcDh2KQ0KPiAr CQljY19wYXJhbS0+dnJlZl8wcDh2ID0gY2MyXzBwOHY7DQo+ICsJaWYgKGNjMl8wcDJ2KQ0KPiAr CQljY19wYXJhbS0+dnJlZl8wcDJ2ID0gY2MyXzBwMnY7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4g K30NCj4gKw0KPiArc3RhdGljIHZvaWQgZ2V0X2RlZmF1bHRfdHlwZV9jX3BhcmFtZXRlcihzdHJ1 Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYykNCj4gK3sNCj4gKwl2b2lkIF9faW9tZW0gKnJlZzsNCj4g KwlpbnQgdmFsOw0KPiArDQo+ICsJdHlwZV9jLT5kZnBfbW9kZV9ycF9lbiA9IGRmcF9tb2RlKEND X01PREVfREZQXzNfMCkgfA0KPiBFTl9SUDRQN0s7DQo+ICsJdHlwZV9jLT51ZnBfbW9kZV9yZF9l biA9IEVOX1JEOw0KPiArDQo+ICsJcmVnID0gdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19D VFJMX0NDMV8wOw0KPiArCXZhbCA9IHJlYWRsKHJlZyk7DQo+ICsJdHlwZV9jLT5jYzFfY29kZSA9 IENDX0NPREVfTUFTSyAmIHZhbDsNCj4gKw0KPiArCXJlZyA9IHR5cGVfYy0+cmVnX2Jhc2UgKyBV U0JfVFlQRUNfQ1RSTF9DQzJfMDsNCj4gKwl2YWwgPSByZWFkbChyZWcpOw0KPiArCXR5cGVfYy0+ Y2MyX2NvZGUgPSBDQ19DT0RFX01BU0sgJiB2YWw7DQo+ICsNCj4gKwlyZWcgPSB0eXBlX2MtPnJl Z19iYXNlICsgVVNCX1RZUEVDX0NUUkxfQ0MxXzE7DQo+ICsJdmFsID0gcmVhZGwocmVnKTsNCj4g Kwl0eXBlX2MtPmNjMV92cmVmID0gdmFsOw0KPiArDQo+ICsJcmVnID0gdHlwZV9jLT5yZWdfYmFz ZSArIFVTQl9UWVBFQ19DVFJMX0NDMl8xOw0KPiArCXZhbCA9IHJlYWRsKHJlZyk7DQo+ICsJdHlw ZV9jLT5jYzJfdnJlZiA9IHZhbDsNCj4gKw0KPiArCXJlZyA9IHR5cGVfYy0+cmVnX2Jhc2UgKyBV U0JfVFlQRUNfQ1RSTDsNCj4gKwl2YWwgPSByZWFkbChyZWcpOw0KPiArCXR5cGVfYy0+ZGVib3Vu Y2UgPSBERUJPVU5DRV9USU1FX01BU0sgJiB2YWw7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQg c2V0dXBfdHlwZV9jX3BhcmFtZXRlcihzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYykNCj4gK3sN Cj4gKwlzdHJ1Y3QgdHlwZV9jX2NmZyAqdHlwZV9jX2NmZyA9IHR5cGVfYy0+dHlwZV9jX2NmZzsN Cj4gKwlzdHJ1Y3QgY2NfcGFyYW0gKmNjX3BhcmFtOw0KPiArCXN0cnVjdCBzb2NfZGV2aWNlX2F0 dHJpYnV0ZSBydGtfc29jX2VmdXNlX3YxW10gPSB7DQo+ICsJCQl7IC5mYW1pbHkgPSAiUmVhbHRl ayBQaG9lbml4Iix9LA0KPiArCQkJeyAuZmFtaWx5ID0gIlJlYWx0ZWsgS3lsaW4iLH0sDQo+ICsJ CQl7IC5mYW1pbHkgPSAiUmVhbHRlayBIZXJjdWxlcyIsfSwNCj4gKwkJCXsgLmZhbWlseSA9ICJS ZWFsdGVrIFRob3IiLH0sDQo+ICsJCQl7IC5mYW1pbHkgPSAiUmVhbHRlayBIYW5rIix9LA0KPiAr CQkJeyAuZmFtaWx5ID0gIlJlYWx0ZWsgR3Jvb3QiLH0sDQo+ICsJCQl7IC5mYW1pbHkgPSAiUmVh bHRlayBTdGFyayIsfSwNCj4gKwkJCXsgLmZhbWlseSA9ICJSZWFsdGVrIFBhcmtlciIsfSwNCj4g KwkJCXsgLyogZW1wdHkgKi8gfQ0KPiArCQl9Ow0KPiArDQo+ICsJaWYgKHR5cGVfY19jZmctPnVz ZV9kZWZhbHV0X3BhcmFtZXRlcikgew0KPiArCQlnZXRfZGVmYXVsdF90eXBlX2NfcGFyYW1ldGVy KHR5cGVfYyk7DQo+ICsJCXJldHVybiAwOw0KPiArCX0NCj4gKw0KPiArCWlmIChzb2NfZGV2aWNl X21hdGNoKHJ0a19zb2NfZWZ1c2VfdjEpKQ0KPiArCQlfX3VwZGF0ZWRfdHlwZV9jX3BhcmFtZXRl cl9ieV9lZnVzZSh0eXBlX2MpOw0KPiArCWVsc2UNCj4gKwkJX191cGRhdGVkX3R5cGVfY19wYXJh bWV0ZXJfYnlfZWZ1c2VfdjIodHlwZV9jKTsNCj4gKw0KPiArCS8qDQo+ICsJICogVUZQICAgICBy ZCAgICAgdnJlZl91ZnAgICAgOiAxcDIzdiwgIDBwNjZ2LCAwcDJ2DQo+ICsJICogREZQX1VTQiBy cDM2ayAgdnJlZl9kZnBfdXNiOiAwXzFwNnYsIDBwMnYsICB1bnVzZWQNCj4gKwkgKiBERlBfMS41 IHJwMTJrICB2cmVmX2RmcF8xXzU6IDFfMXA2diwgMHA0diwgIDBwMnYNCj4gKwkgKiBERlBfMy4w IHJwNHA3ayB2cmVmX2RmcF8zXzA6IDJwNnYsICAgMHA4diwgIDBwMnYNCj4gKwkgKi8NCj4gKw0K PiArCXN3aXRjaCAodHlwZV9jX2NmZy0+Y2NfZGZwX21vZGUpIHsNCj4gKwljYXNlIENDX01PREVf REZQX1VTQjoNCj4gKwkJdHlwZV9jLT5kZnBfbW9kZV9ycF9lbiA9IGRmcF9tb2RlKENDX01PREVf REZQX1VTQikgfA0KPiBFTl9SUDM2SzsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBDQ19NT0RFX0RG UF8xXzU6DQo+ICsJCXR5cGVfYy0+ZGZwX21vZGVfcnBfZW4gPSBkZnBfbW9kZShDQ19NT0RFX0RG UF8xXzUpIHwNCj4gRU5fUlAxMks7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgQ0NfTU9ERV9ERlBf M18wOg0KPiArCQl0eXBlX2MtPmRmcF9tb2RlX3JwX2VuID0gZGZwX21vZGUoQ0NfTU9ERV9ERlBf M18wKSB8DQo+IEVOX1JQNFA3SzsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJZGV2 X2Vycih0eXBlX2MtPmRldiwgIiVzOiB1bmtub3duIGNjX2RmcF9tb2RlICVkXG4iLA0KPiArCQkJ X19mdW5jX18sIHR5cGVfY19jZmctPmNjX2RmcF9tb2RlKTsNCj4gKwl9DQo+ICsNCj4gKwl0eXBl X2MtPnVmcF9tb2RlX3JkX2VuID0gRU5fUkQ7DQo+ICsNCj4gKwljY19wYXJhbSA9ICZ0eXBlX2Nf Y2ZnLT5jYzFfcGFyYW07DQo+ICsJdHlwZV9jLT5jYzFfY29kZSA9IHJwNHBrX2NvZGUoY2NfcGFy YW0tPnJwXzRwN2tfY29kZSkgfA0KPiArCQkJICAgcnAzNmtfY29kZShjY19wYXJhbS0+cnBfMzZr X2NvZGUpIHwNCj4gKwkJCSAgIHJwMTJrX2NvZGUoY2NfcGFyYW0tPnJwXzEya19jb2RlKSB8DQo+ ICsJCQkgICByZF9jb2RlKGNjX3BhcmFtLT5yZF9jb2RlKTsNCj4gKw0KPiArCWlmICh0eXBlX2Nf Y2ZnLT5wYXJhbWV0ZXJfdmVyID09IFBBUkFNRVRFUl9WMCkNCj4gKwkJdHlwZV9jLT5jYzFfdnJl ZiA9IFYwX3ZyZWZfMnA2dihjY19wYXJhbS0+dnJlZl8ycDZ2KSB8DQo+ICsJCQkJICAgVjBfdnJl Zl8xcDIzdihjY19wYXJhbS0+dnJlZl8xcDIzdikgfA0KPiArCQkJCSAgIFYwX3ZyZWZfMHA4dihj Y19wYXJhbS0+dnJlZl8wcDh2KSB8DQo+ICsJCQkJICAgVjBfdnJlZl8wcDY2dihjY19wYXJhbS0+ dnJlZl8wcDY2dikgfA0KPiArCQkJCSAgIFYwX3ZyZWZfMHA0dihjY19wYXJhbS0+dnJlZl8wcDR2 KSB8DQo+ICsJCQkJICAgVjBfdnJlZl8wcDJ2KGNjX3BhcmFtLT52cmVmXzBwMnYpIHwNCj4gKwkJ CQkgICBWMF92cmVmXzFfMXA2dihjY19wYXJhbS0+dnJlZl8xXzFwNnYpIHwNCj4gKwkJCQkgICBW MF92cmVmXzBfMXA2dihjY19wYXJhbS0+dnJlZl8wXzFwNnYpOw0KPiArCWVsc2UgaWYgKHR5cGVf Y19jZmctPnBhcmFtZXRlcl92ZXIgPT0gUEFSQU1FVEVSX1YxKQ0KPiArCQl0eXBlX2MtPmNjMV92 cmVmID0gVjFfdnJlZl8ycDZ2KGNjX3BhcmFtLT52cmVmXzJwNnYpIHwNCj4gKwkJCQkgICBWMV92 cmVmXzFwMjN2KGNjX3BhcmFtLT52cmVmXzFwMjN2KSB8DQo+ICsJCQkJICAgVjFfdnJlZl8wcDh2 KGNjX3BhcmFtLT52cmVmXzBwOHYpIHwNCj4gKwkJCQkgICBWMV92cmVmXzBwNjZ2KGNjX3BhcmFt LT52cmVmXzBwNjZ2KSB8DQo+ICsJCQkJICAgVjFfdnJlZl8wcDR2KGNjX3BhcmFtLT52cmVmXzBw NHYpIHwNCj4gKwkJCQkgICBWMV92cmVmXzBwMnYoY2NfcGFyYW0tPnZyZWZfMHAydikgfA0KPiAr CQkJCSAgIFYxX3ZyZWZfMV8xcDZ2KGNjX3BhcmFtLT52cmVmXzFfMXA2dikgfA0KPiArCQkJCSAg IFYxX3ZyZWZfMF8xcDZ2KGNjX3BhcmFtLT52cmVmXzBfMXA2dik7DQo+ICsJZWxzZQ0KPiArCQlk ZXZfZXJyKHR5cGVfYy0+ZGV2LCAiJXM6IHVua25vd24gcGFyYW1ldGVyX3ZlciAlZFxuIiwNCj4g KwkJCV9fZnVuY19fLCB0eXBlX2NfY2ZnLT5wYXJhbWV0ZXJfdmVyKTsNCj4gKw0KPiArCWNjX3Bh cmFtID0gJnR5cGVfY19jZmctPmNjMl9wYXJhbTsNCj4gKwl0eXBlX2MtPmNjMl9jb2RlID0gcnA0 cGtfY29kZShjY19wYXJhbS0+cnBfNHA3a19jb2RlKQ0KPiArCQkJIHwgcnAzNmtfY29kZShjY19w YXJhbS0+cnBfMzZrX2NvZGUpDQo+ICsJCQkgfCBycDEya19jb2RlKGNjX3BhcmFtLT5ycF8xMmtf Y29kZSkNCj4gKwkJCSB8IHJkX2NvZGUoY2NfcGFyYW0tPnJkX2NvZGUpOw0KPiArDQo+ICsJaWYg KHR5cGVfY19jZmctPnBhcmFtZXRlcl92ZXIgPT0gUEFSQU1FVEVSX1YwKQ0KPiArCQl0eXBlX2Mt PmNjMl92cmVmID0gVjBfdnJlZl8ycDZ2KGNjX3BhcmFtLT52cmVmXzJwNnYpIHwNCj4gKwkJCQkg ICBWMF92cmVmXzFwMjN2KGNjX3BhcmFtLT52cmVmXzFwMjN2KSB8DQo+ICsJCQkJICAgVjBfdnJl Zl8wcDh2KGNjX3BhcmFtLT52cmVmXzBwOHYpIHwNCj4gKwkJCQkgICBWMF92cmVmXzBwNjZ2KGNj X3BhcmFtLT52cmVmXzBwNjZ2KSB8DQo+ICsJCQkJICAgVjBfdnJlZl8wcDR2KGNjX3BhcmFtLT52 cmVmXzBwNHYpIHwNCj4gKwkJCQkgICBWMF92cmVmXzBwMnYoY2NfcGFyYW0tPnZyZWZfMHAydikg fA0KPiArCQkJCSAgIFYwX3ZyZWZfMV8xcDZ2KGNjX3BhcmFtLT52cmVmXzFfMXA2dikgfA0KPiAr CQkJCSAgIFYwX3ZyZWZfMF8xcDZ2KGNjX3BhcmFtLT52cmVmXzBfMXA2dik7DQo+ICsJZWxzZSBp ZiAodHlwZV9jX2NmZy0+cGFyYW1ldGVyX3ZlciA9PSBQQVJBTUVURVJfVjEpDQo+ICsJCXR5cGVf Yy0+Y2MyX3ZyZWYgPSBWMV92cmVmXzJwNnYoY2NfcGFyYW0tPnZyZWZfMnA2dikgfA0KPiArCQkJ CSAgIFYxX3ZyZWZfMXAyM3YoY2NfcGFyYW0tPnZyZWZfMXAyM3YpIHwNCj4gKwkJCQkgICBWMV92 cmVmXzBwOHYoY2NfcGFyYW0tPnZyZWZfMHA4dikgfA0KPiArCQkJCSAgIFYxX3ZyZWZfMHA2NnYo Y2NfcGFyYW0tPnZyZWZfMHA2NnYpIHwNCj4gKwkJCQkgICBWMV92cmVmXzBwNHYoY2NfcGFyYW0t PnZyZWZfMHA0dikgfA0KPiArCQkJCSAgIFYxX3ZyZWZfMHAydihjY19wYXJhbS0+dnJlZl8wcDJ2 KSB8DQo+ICsJCQkJICAgVjFfdnJlZl8xXzFwNnYoY2NfcGFyYW0tPnZyZWZfMV8xcDZ2KSB8DQo+ ICsJCQkJICAgVjFfdnJlZl8wXzFwNnYoY2NfcGFyYW0tPnZyZWZfMF8xcDZ2KTsNCj4gKwllbHNl DQo+ICsJCWRldl9lcnIodHlwZV9jLT5kZXYsICIlczogdW5rbm93biBwYXJhbWV0ZXJfdmVyICVk XG4iLA0KPiArCQkJX19mdW5jX18sIHR5cGVfY19jZmctPnBhcmFtZXRlcl92ZXIpOw0KPiArDQo+ ICsJdHlwZV9jLT5kZWJvdW5jZSA9ICh0eXBlX2NfY2ZnLT5kZWJvdW5jZV92YWwgPDwgMSkgfCBE RUJPVU5DRV9FTjsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50 IGV4dGNvbl9ydGtfdHlwZV9jX2luaXQoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MpDQo+ICt7 DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gdHlwZV9jLT5kZXY7DQo+ICsJdW5zaWduZWQgbG9u ZyBmbGFnczsNCj4gKwl2b2lkIF9faW9tZW0gKnJlZzsNCj4gKwlpbnQgdmFsOw0KPiArDQo+ICsJ c3Bpbl9sb2NrX2lycXNhdmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJLyogc2V0 IHBhcmFtZXRlciAqLw0KPiArCXJlZyA9IHR5cGVfYy0+cmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RS TF9DQzFfMDsNCj4gKwl2YWwgPSByZWFkbChyZWcpOw0KPiArCXZhbCA9ICh+Q0NfQ09ERV9NQVNL ICYgdmFsKSB8ICh0eXBlX2MtPmNjMV9jb2RlICYgQ0NfQ09ERV9NQVNLKTsNCj4gKwl3cml0ZWwo dmFsLCByZWcpOw0KPiArDQo+ICsJcmVnID0gdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19D VFJMX0NDMl8wOw0KPiArCXZhbCA9IHJlYWRsKHJlZyk7DQo+ICsJdmFsID0gKH5DQ19DT0RFX01B U0sgJiB2YWwpIHwgKHR5cGVfYy0+Y2MyX2NvZGUgJiBDQ19DT0RFX01BU0spOw0KPiArDQo+ICsJ cmVnID0gdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMX0NDMV8xOw0KPiArCXdyaXRl bCh0eXBlX2MtPmNjMV92cmVmLCByZWcpOw0KPiArDQo+ICsJcmVnID0gdHlwZV9jLT5yZWdfYmFz ZSArIFVTQl9UWVBFQ19DVFJMX0NDMl8xOw0KPiArCXdyaXRlbCh0eXBlX2MtPmNjMl92cmVmLCBy ZWcpOw0KPiArDQo+ICsJcmVnID0gdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMOw0K PiArCXZhbCA9IHJlYWRsKHJlZyk7DQo+ICsJdmFsID0gKH5ERUJPVU5DRV9USU1FX01BU0sgJiB2 YWwpIHwgKHR5cGVfYy0+ZGVib3VuY2UgJg0KPiBERUJPVU5DRV9USU1FX01BU0spOw0KPiArDQo+ ICsJZGV2X2luZm8oZGV2LCAiRmlyc3QgY2hlY2sgVVNCX0RSX01PREVfUEVSSVBIRVJBTCIpOw0K PiArCXR5cGVfYy0+Y2NfbW9kZSA9IElOX0RFVklDRV9NT0RFOw0KPiArCXR5cGVfYy0+aXNfYXR0 YWNoID0gSU5fREVUQUNIOw0KPiArCXR5cGVfYy0+Y29ubmVjdF9jaGFuZ2UgPSBDT05ORUNUX05P X0NIQU5HRTsNCj4gKw0KPiArCWRldGVjdF9ob3N0KHR5cGVfYyk7DQo+ICsNCj4gKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gKw0KPiArCXNjaGVkdWxl X2RlbGF5ZWRfd29yaygmdHlwZV9jLT5kZWxheWVkX3dvcmssIG1zZWNzX3RvX2ppZmZpZXMoMCkp Ow0KPiArDQo+ICsJaWYgKCF0eXBlX2MtPnBvcnQpIHsNCj4gKwkJc3RydWN0IHR5cGVjX2NhcGFi aWxpdHkgdHlwZWNfY2FwID0geyB9Ow0KPiArCQlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2Rl Ow0KPiArCQljb25zdCBjaGFyICpidWY7DQo+ICsJCWludCByZXQ7DQo+ICsNCj4gKwkJdHlwZWNf Y2FwLnJldmlzaW9uID0gVVNCX1RZUEVDX1JFVl8xXzA7DQo+ICsJCXR5cGVjX2NhcC5wcmVmZXJf cm9sZSA9IFRZUEVDX05PX1BSRUZFUlJFRF9ST0xFOw0KPiArCQl0eXBlY19jYXAuZHJpdmVyX2Rh dGEgPSB0eXBlX2M7DQo+ICsJCXR5cGVjX2NhcC5vcHMgPSAmdHlwZV9jX3BvcnRfb3BzOw0KPiAr DQo+ICsJCWZ3bm9kZSA9IGRldmljZV9nZXRfbmFtZWRfY2hpbGRfbm9kZShkZXYsICJjb25uZWN0 b3IiKTsNCj4gKwkJaWYgKCFmd25vZGUpDQo+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiAr CQlyZXQgPSBmd25vZGVfcHJvcGVydHlfcmVhZF9zdHJpbmcoZndub2RlLCAicG93ZXItcm9sZSIs ICZidWYpOw0KPiArCQlpZiAocmV0KSB7DQo+ICsJCQlkZXZfZXJyKGRldiwgInBvd2VyLXJvbGUg bm90IGZvdW5kOiAlZFxuIiwgcmV0KTsNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsJCX0NCj4gKw0K PiArCQlyZXQgPSB0eXBlY19maW5kX3BvcnRfcG93ZXJfcm9sZShidWYpOw0KPiArCQlpZiAocmV0 IDwgMCkNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsJCXR5cGVjX2NhcC50eXBlID0gcmV0Ow0KPiAr DQo+ICsJCXJldCA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3N0cmluZyhmd25vZGUsICJkYXRhLXJv bGUiLCAmYnVmKTsNCj4gKwkJaWYgKHJldCkgew0KPiArCQkJZGV2X2VycihkZXYsICJkYXRhLXJv bGUgbm90IGZvdW5kOiAlZFxuIiwgcmV0KTsNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsJCX0NCj4g Kw0KPiArCQlyZXQgPSB0eXBlY19maW5kX3BvcnRfZGF0YV9yb2xlKGJ1Zik7DQo+ICsJCWlmIChy ZXQgPCAwKQ0KPiArCQkJcmV0dXJuIHJldDsNCj4gKwkJdHlwZWNfY2FwLmRhdGEgPSByZXQ7DQo+ ICsNCj4gKwkJdHlwZV9jLT5wb3J0ID0gdHlwZWNfcmVnaXN0ZXJfcG9ydCh0eXBlX2MtPmRldiwg JnR5cGVjX2NhcCk7DQo+ICsJCWlmIChJU19FUlIodHlwZV9jLT5wb3J0KSkNCj4gKwkJCXJldHVy biBQVFJfRVJSKHR5cGVfYy0+cG9ydCk7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbnQgZXh0Y29uX3J0a190eXBlX2NfZWRldl9yZWdpc3RlcihzdHJ1 Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYykNCj4gK3sNCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0 eXBlX2MtPmRldjsNCj4gKwlpbnQgcmV0ID0gMDsNCj4gKw0KPiArCXR5cGVfYy0+ZWRldiA9IGRl dm1fZXh0Y29uX2Rldl9hbGxvY2F0ZShkZXYsIHVzYl90eXBlX2NfY2FibGUpOw0KPiArCWlmIChJ U19FUlIodHlwZV9jLT5lZGV2KSkgew0KPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBhbGxv Y2F0ZSBleHRjb24gZGV2aWNlXG4iKTsNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsJfQ0KPiAr DQo+ICsJcmV0ID0gZGV2bV9leHRjb25fZGV2X3JlZ2lzdGVyKGRldiwgdHlwZV9jLT5lZGV2KTsN Cj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZWdpc3Rl ciBleHRjb24gZGV2aWNlXG4iKTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwll eHRjb25fc2V0X3Byb3BlcnR5X2NhcGFiaWxpdHkodHlwZV9jLT5lZGV2LCBFWFRDT05fVVNCLA0K PiArCQkJCSAgICAgICBFWFRDT05fUFJPUF9VU0JfVkJVUyk7DQo+ICsJZXh0Y29uX3NldF9wcm9w ZXJ0eV9jYXBhYmlsaXR5KHR5cGVfYy0+ZWRldiwgRVhUQ09OX1VTQiwNCj4gKwkJCQkgICAgICAg RVhUQ09OX1BST1BfVVNCX1RZUEVDX1BPTEFSSVRZKTsNCj4gKwlleHRjb25fc2V0X3Byb3BlcnR5 X2NhcGFiaWxpdHkodHlwZV9jLT5lZGV2LCBFWFRDT05fVVNCLA0KPiArCQkJCSAgICAgICBFWFRD T05fUFJPUF9VU0JfU1MpOw0KPiArDQo+ICsJZXh0Y29uX3NldF9wcm9wZXJ0eV9jYXBhYmlsaXR5 KHR5cGVfYy0+ZWRldiwgRVhUQ09OX1VTQl9IT1NULA0KPiArCQkJCSAgICAgICBFWFRDT05fUFJP UF9VU0JfVkJVUyk7DQo+ICsJZXh0Y29uX3NldF9wcm9wZXJ0eV9jYXBhYmlsaXR5KHR5cGVfYy0+ ZWRldiwgRVhUQ09OX1VTQl9IT1NULA0KPiArCQkJCSAgICAgICBFWFRDT05fUFJPUF9VU0JfVFlQ RUNfUE9MQVJJVFkpOw0KPiArCWV4dGNvbl9zZXRfcHJvcGVydHlfY2FwYWJpbGl0eSh0eXBlX2Mt PmVkZXYsIEVYVENPTl9VU0JfSE9TVCwNCj4gKwkJCQkgICAgICAgRVhUQ09OX1BST1BfVVNCX1NT KTsNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZXh0Y29u X3J0a190eXBlX2NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiArCXN0cnVjdCB0eXBlX2NfZGF0 YSAqdHlwZV9jOw0KPiArCWNvbnN0IHN0cnVjdCB0eXBlX2NfY2ZnICp0eXBlX2NfY2ZnOw0KPiAr CWludCByZXQgPSAwOw0KPiArDQo+ICsJdHlwZV9jID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCp0eXBlX2MpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIXR5cGVfYykNCj4gKwkJcmV0dXJuIC1F Tk9NRU07DQo+ICsNCj4gKwl0eXBlX2MtPnJlZ19iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFw X3Jlc291cmNlKHBkZXYsIDApOw0KPiArCWlmIChJU19FUlIodHlwZV9jLT5yZWdfYmFzZSkpDQo+ ICsJCXJldHVybiBQVFJfRVJSKHR5cGVfYy0+cmVnX2Jhc2UpOw0KPiArDQo+ICsJdHlwZV9jLT5k ZXYgPSBkZXY7DQo+ICsNCj4gKwl0eXBlX2MtPmlycSA9IGlycV9vZl9wYXJzZV9hbmRfbWFwKHBk ZXYtPmRldi5vZl9ub2RlLCAwKTsNCj4gKwlpZiAodHlwZV9jLT5pcnEgPD0gMCkgew0KPiArCQlk ZXZfZXJyKCZwZGV2LT5kZXYsICJUeXBlIEMgZHJpdmVyIHdpdGggbm8gSVJRLiBDaGVjayAlcyBz ZXR1cCFcbiIsDQo+ICsJCQlkZXZfbmFtZSgmcGRldi0+ZGV2KSk7DQo+ICsJCXJldCA9IC1FTk9E RVY7DQo+ICsJCWdvdG8gZXJyOw0KPiArCX0NCj4gKw0KPiArCXJldCA9IGRldm1fcmVxdWVzdF9p cnEoZGV2LCB0eXBlX2MtPmlycSwgdHlwZV9jX2RldGVjdF9pcnEsDQo+ICsJCQkgICAgICAgSVJR Rl9TSEFSRUQsICJ0eXBlX2NfZGV0ZWN0IiwgdHlwZV9jKTsNCj4gKw0KPiArCXNwaW5fbG9ja19p bml0KCZ0eXBlX2MtPmxvY2spOw0KPiArDQo+ICsJdHlwZV9jLT5yZF9jdHJsX2dwaW9fZGVzYyA9 IE5VTEw7DQo+ICsJaWYgKHNvY19kZXZpY2VfbWF0Y2gocnRrX3NvY19reWxpbikpIHsNCj4gKwkJ c3RydWN0IGdwaW9fZGVzYyAqZ3BpbzsNCj4gKw0KPiArCQlncGlvID0gZndub2RlX2dwaW9kX2dl dF9pbmRleChvZl9md25vZGVfaGFuZGxlKGRldi0+b2Zfbm9kZSksDQo+ICsJCQkJCSAgICAgICJy ZWFsdGVrLHJkLWN0cmwtZ3Bpb3MiLA0KPiArCQkJCQkgICAgICAwLCBHUElPRF9PVVRfSElHSCwg InJkLWN0cmwtZ3BpbyIpOw0KPiArCQlpZiAoSVNfRVJSKGdwaW8pKSB7DQo+ICsJCQlkZXZfZXJy KGRldiwgIkVycm9yIHJkX2N0cmwtZ3Bpb3Mgbm8gZm91bmQgKGVycj0lZClcbiIsDQo+ICsJCQkJ KGludClQVFJfRVJSKGdwaW8pKTsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCXR5cGVfYy0+cmRfY3Ry bF9ncGlvX2Rlc2MgPSBncGlvOw0KPiArCQkJZGV2X2RiZyhkZXYsICIlcyBnZXQgcmQtY3RybC1n cGlvcyAoaWQ9JWQpIE9LXG4iLA0KPiArCQkJCV9fZnVuY19fLCBkZXNjX3RvX2dwaW8oZ3Bpbykp Ow0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJdHlwZV9jX2NmZyA9IG9mX2RldmljZV9nZXRfbWF0 Y2hfZGF0YShkZXYpOw0KPiArCWlmICghdHlwZV9jX2NmZykgew0KPiArCQlkZXZfZXJyKGRldiwg InR5cGVfYyBjb25maWcgYXJlIG5vdCBhc3NpZ25lZCFcbiIpOw0KPiArCQlyZXQgPSAtRUlOVkFM Ow0KPiArCQlnb3RvIGVycjsNCj4gKwl9DQo+ICsNCj4gKwl0eXBlX2MtPnR5cGVfY19jZmcgPSBk ZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnR5cGVfY19jZmcpLA0KPiBHRlBfS0VSTkVMKTsNCj4g Kw0KPiArCW1lbWNweSh0eXBlX2MtPnR5cGVfY19jZmcsIHR5cGVfY19jZmcsIHNpemVvZigqdHlw ZV9jX2NmZykpOw0KPiArDQo+ICsJaWYgKHNldHVwX3R5cGVfY19wYXJhbWV0ZXIodHlwZV9jKSkg ew0KPiArCQlkZXZfZXJyKGRldiwgIkVSUk9SOiAlcyB0byBzZXR1cCB0eXBlIGMgcGFyYW1ldGVy ISEiLCBfX2Z1bmNfXyk7DQo+ICsJCXJldCA9IC1FSU5WQUw7DQo+ICsJCWdvdG8gZXJyOw0KPiAr CX0NCj4gKw0KPiArCUlOSVRfREVMQVlFRF9XT1JLKCZ0eXBlX2MtPmRlbGF5ZWRfd29yaywgaG9z dF9kZXZpY2Vfc3dpdGNoKTsNCj4gKw0KPiArCXJldCA9IGV4dGNvbl9ydGtfdHlwZV9jX2luaXQo dHlwZV9jKTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWRldl9lcnIoZGV2LCAiJXMgZmFpbGVkIHRv IGluaXQgdHlwZV9jXG4iLCBfX2Z1bmNfXyk7DQo+ICsJCWdvdG8gZXJyOw0KPiArCX0NCj4gKw0K PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHR5cGVfYyk7DQo+ICsNCj4gKwlyZXQgPSBl eHRjb25fcnRrX3R5cGVfY19lZGV2X3JlZ2lzdGVyKHR5cGVfYyk7DQo+ICsNCj4gKwljcmVhdGVf ZGVidWdfZmlsZXModHlwZV9jKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArDQo+ICtlcnI6DQo+ ICsJZGV2X2VycigmcGRldi0+ZGV2LCAiJXM6IFByb2JlIGZhaWwsICVkXG4iLCBfX2Z1bmNfXywg cmV0KTsNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGV4 dGNvbl9ydGtfdHlwZV9jX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAr ew0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ICsJc3RydWN0IHR5cGVf Y19kYXRhICp0eXBlX2MgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwl1MzIgZGVmYXVsdF9j dHJsOw0KPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ICsNCj4gKwlyZW1vdmVfZGVidWdfZmls ZXModHlwZV9jKTsNCj4gKw0KPiArCWlmICh0eXBlX2MtPnBvcnQpIHsNCj4gKwkJdHlwZWNfdW5y ZWdpc3Rlcl9wb3J0KHR5cGVfYy0+cG9ydCk7DQo+ICsJCXR5cGVfYy0+cG9ydCA9IE5VTEw7DQo+ ICsJfQ0KPiArDQo+ICsJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZ0eXBlX2MtPmRlbGF5ZWRf d29yayk7DQo+ICsJZmx1c2hfZGVsYXllZF93b3JrKCZ0eXBlX2MtPmRlbGF5ZWRfd29yayk7DQo+ ICsJV0FSTl9PTl9PTkNFKGRlbGF5ZWRfd29ya19wZW5kaW5nKCZ0eXBlX2MtPmRlbGF5ZWRfd29y aykpOw0KPiArDQo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0K PiArCS8qIGRpc2FibGUgaW50ZXJydXB0ICovDQo+ICsJZGVmYXVsdF9jdHJsID0gcmVhZGwodHlw ZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMKSAmDQo+ICsJCSAgICBERUJPVU5DRV9USU1F X01BU0s7DQo+ICsJd3JpdGVsKGRlZmF1bHRfY3RybCwgdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9U WVBFQ19DVFJMKTsNCj4gKw0KPiArCS8qIGRpc2FibGUgY2MgZGV0ZWN0LCBycCwgcmQgKi8NCj4g Kwl3cml0ZWwoUExSX0VOLCB0eXBlX2MtPnJlZ19iYXNlICsgVVNCX1RZUEVDX0NUUkxfQ0MxXzAp Ow0KPiArCXdyaXRlbCgwLCB0eXBlX2MtPnJlZ19iYXNlICsgVVNCX1RZUEVDX0NUUkxfQ0MyXzAp Ow0KPiArDQo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdHlwZV9jLT5sb2NrLCBmbGFncyk7 DQo+ICsNCj4gKwlpZiAodHlwZV9jLT5yZF9jdHJsX2dwaW9fZGVzYykNCj4gKwkJZ3Bpb2RfcHV0 KHR5cGVfYy0+cmRfY3RybF9ncGlvX2Rlc2MpOw0KPiArCXR5cGVfYy0+cmRfY3RybF9ncGlvX2Rl c2MgPSBOVUxMOw0KPiArDQo+ICsJZnJlZV9pcnEodHlwZV9jLT5pcnEsIHR5cGVfYyk7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdHlwZV9jX2NmZyBydGQxMjk1X3R5cGVfY19j ZmcgPSB7DQo+ICsJLnBhcmFtZXRlcl92ZXIgPSBQQVJBTUVURVJfVjAsDQo+ICsJLmNjX2RmcF9t b2RlID0gQ0NfTU9ERV9ERlBfM18wLA0KPiArCS5jYzFfcGFyYW0gPSB7IC5ycF80cDdrX2NvZGUg PSAweGIsDQo+ICsJCSAgICAgICAucnBfMzZrX2NvZGUgPSAweDE3LA0KPiArCQkgICAgICAgLnJw XzEya19jb2RlID0gMHgxMCwNCj4gKwkJICAgICAgIC5yZF9jb2RlID0gMCwNCj4gKwkJICAgICAg IC5yYV9jb2RlID0gMCwNCj4gKwkJICAgICAgIC52cmVmXzJwNnYgPSAweDAsDQo+ICsJCSAgICAg ICAudnJlZl8xcDIzdiA9IDB4MCwNCj4gKwkJICAgICAgIC52cmVmXzBwOHYgPSAweDMsDQo+ICsJ CSAgICAgICAudnJlZl8wcDY2diA9IDB4MCwNCj4gKwkJICAgICAgIC52cmVmXzBwNHYgPSAweDAs DQo+ICsJCSAgICAgICAudnJlZl8wcDJ2ID0gMHg0LA0KPiArCQkgICAgICAgLnZyZWZfMV8xcDZ2 ID0gMCwNCj4gKwkJICAgICAgIC52cmVmXzBfMXA2diA9IDAgfSwNCj4gKwkuY2MyX3BhcmFtID0g eyAucnBfNHA3a19jb2RlID0gMHhjLA0KPiArCQkgICAgICAgLnJwXzM2a19jb2RlID0gMHgxNywN Cj4gKwkJICAgICAgIC5ycF8xMmtfY29kZSA9IDB4MTIsDQo+ICsJCSAgICAgICAucmRfY29kZSA9 IDAsDQo+ICsJCSAgICAgICAucmFfY29kZSA9IDAsDQo+ICsJCSAgICAgICAudnJlZl8ycDZ2ID0g MHgyLA0KPiArCQkgICAgICAgLnZyZWZfMXAyM3YgPSAweDAsDQo+ICsJCSAgICAgICAudnJlZl8w cDh2ID0gMHgzLA0KPiArCQkgICAgICAgLnZyZWZfMHA2NnYgPSAweDAsDQo+ICsJCSAgICAgICAu dnJlZl8wcDR2ID0gMHgwLA0KPiArCQkgICAgICAgLnZyZWZfMHAydiA9IDB4NSwNCj4gKwkJICAg ICAgIC52cmVmXzFfMXA2diA9IDAsDQo+ICsJCSAgICAgICAudnJlZl8wXzFwNnYgPSAwIH0sDQo+ ICsJLmRlYm91bmNlX3ZhbCA9IDB4N2YsIC8qIDFiLDF1cyA3Ziw0Ljd1cyAqLw0KPiArCS51c2Vf ZGVmYWx1dF9wYXJhbWV0ZXIgPSBmYWxzZSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgdHlwZV9jX2NmZyBydGQxMzk1X3R5cGVfY19jZmcgPSB7DQo+ICsJLnBhcmFtZXRlcl92 ZXIgPSBQQVJBTUVURVJfVjAsDQo+ICsJLmNjX2RmcF9tb2RlID0gQ0NfTU9ERV9ERlBfM18wLA0K PiArCS5jYzFfcGFyYW0gPSB7IC5ycF80cDdrX2NvZGUgPSAweGMsDQo+ICsJCSAgICAgICAucnBf MzZrX2NvZGUgPSAweGIsDQo+ICsJCSAgICAgICAucnBfMTJrX2NvZGUgPSAweGUsDQo+ICsJCSAg ICAgICAucmRfY29kZSA9IDB4MTAsDQo+ICsJCSAgICAgICAucmFfY29kZSA9IDB4MCwNCj4gKwkJ ICAgICAgIC52cmVmXzJwNnYgPSAweDAsDQo+ICsJCSAgICAgICAudnJlZl8xcDIzdiA9IDB4MSwN Cj4gKwkJICAgICAgIC52cmVmXzBwOHYgPSAweDAsDQo+ICsJCSAgICAgICAudnJlZl8wcDY2diA9 IDB4MCwNCj4gKwkJICAgICAgIC52cmVmXzBwNHYgPSAweDMsDQo+ICsJCSAgICAgICAudnJlZl8w cDJ2ID0gMHgwLA0KPiArCQkgICAgICAgLnZyZWZfMV8xcDZ2ID0gMHg3LA0KPiArCQkgICAgICAg LnZyZWZfMF8xcDZ2ID0gMHg3IH0sDQo+ICsJLmNjMl9wYXJhbSA9IHsgLnJwXzRwN2tfY29kZSA9 IDB4YiwNCj4gKwkJICAgICAgIC5ycF8zNmtfY29kZSA9IDB4OSwNCj4gKwkJICAgICAgIC5ycF8x MmtfY29kZSA9IDB4ZSwNCj4gKwkJICAgICAgIC5yZF9jb2RlID0gMHhmLA0KPiArCQkgICAgICAg LnJhX2NvZGUgPSAweDAsDQo+ICsJCSAgICAgICAudnJlZl8ycDZ2ID0gMHgxLA0KPiArCQkgICAg ICAgLnZyZWZfMXAyM3YgPSAweDMsDQo+ICsJCSAgICAgICAudnJlZl8wcDh2ID0gMHgzLA0KPiAr CQkgICAgICAgLnZyZWZfMHA2NnYgPSAweDIsDQo+ICsJCSAgICAgICAudnJlZl8wcDR2ID0gMHgz LA0KPiArCQkgICAgICAgLnZyZWZfMHAydiA9IDB4MiwNCj4gKwkJICAgICAgIC52cmVmXzFfMXA2 diA9IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzBfMXA2diA9IDB4NyB9LA0KPiArCS5kZWJvdW5j ZV92YWwgPSAweDdmLCAvKiAxYiwxdXMgN2YsNC43dXMgKi8NCj4gKwkudXNlX2RlZmFsdXRfcGFy YW1ldGVyID0gZmFsc2UsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHR5cGVf Y19jZmcgcnRkMTYxOV90eXBlX2NfY2ZnID0gew0KPiArCS5wYXJhbWV0ZXJfdmVyID0gUEFSQU1F VEVSX1YwLA0KPiArCS5jY19kZnBfbW9kZSA9IENDX01PREVfREZQXzNfMCwNCj4gKwkuY2MxX3Bh cmFtID0geyAucnBfNHA3a19jb2RlID0gMHhjLA0KPiArCQkgICAgICAgLnJwXzM2a19jb2RlID0g MHhmLA0KPiArCQkgICAgICAgLnJwXzEya19jb2RlID0gMHhlLA0KPiArCQkgICAgICAgLnJkX2Nv ZGUgPSAweDExLA0KPiArCQkgICAgICAgLnJhX2NvZGUgPSAweDAsDQo+ICsJCSAgICAgICAudnJl Zl8ycDZ2ID0gMHg1LA0KPiArCQkgICAgICAgLnZyZWZfMXAyM3YgPSAweDcsDQo+ICsJCSAgICAg ICAudnJlZl8wcDh2ID0gMHhhLA0KPiArCQkgICAgICAgLnZyZWZfMHA2NnYgPSAweGEsDQo+ICsJ CSAgICAgICAudnJlZl8wcDR2ID0gMHgzLA0KPiArCQkgICAgICAgLnZyZWZfMHAydiA9IDB4MiwN Cj4gKwkJICAgICAgIC52cmVmXzFfMXA2diA9IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzBfMXA2 diA9IDB4NyB9LA0KPiArCS5jYzJfcGFyYW0gPSB7IC5ycF80cDdrX2NvZGUgPSAweGMsDQo+ICsJ CSAgICAgICAucnBfMzZrX2NvZGUgPSAweGYsDQo+ICsJCSAgICAgICAucnBfMTJrX2NvZGUgPSAw eGUsDQo+ICsJCSAgICAgICAucmRfY29kZSA9IDB4ZiwNCj4gKwkJICAgICAgIC5yYV9jb2RlID0g MHgwLA0KPiArCQkgICAgICAgLnZyZWZfMnA2diA9IDB4NSwNCj4gKwkJICAgICAgIC52cmVmXzFw MjN2ID0gMHg4LA0KPiArCQkgICAgICAgLnZyZWZfMHA4diA9IDB4YSwNCj4gKwkJICAgICAgIC52 cmVmXzBwNjZ2ID0gMHhhLA0KPiArCQkgICAgICAgLnZyZWZfMHA0diA9IDB4MywNCj4gKwkJICAg ICAgIC52cmVmXzBwMnYgPSAweDIsDQo+ICsJCSAgICAgICAudnJlZl8xXzFwNnYgPSAweDcsDQo+ ICsJCSAgICAgICAudnJlZl8wXzFwNnYgPSAweDcgfSwNCj4gKwkuZGVib3VuY2VfdmFsID0gMHg3 ZiwgLyogMWIsMXVzIDdmLDQuN3VzICovDQo+ICsJLnVzZV9kZWZhbHV0X3BhcmFtZXRlciA9IGZh bHNlLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCB0eXBlX2NfY2ZnIHJ0ZDEz MTlfdHlwZV9jX2NmZyA9IHsNCj4gKwkucGFyYW1ldGVyX3ZlciA9IFBBUkFNRVRFUl9WMCwNCj4g KwkuY2NfZGZwX21vZGUgPSBDQ19NT0RFX0RGUF8xXzUsDQo+ICsJLmNjMV9wYXJhbSA9IHsgLnJw XzRwN2tfY29kZSA9IDB4OSwNCj4gKwkJICAgICAgIC5ycF8zNmtfY29kZSA9IDB4ZSwNCj4gKwkJ ICAgICAgIC5ycF8xMmtfY29kZSA9IDB4OSwNCj4gKwkJICAgICAgIC5yZF9jb2RlID0gMHg5LA0K PiArCQkgICAgICAgLnJhX2NvZGUgPSAweDcsDQo+ICsJCSAgICAgICAudnJlZl8ycDZ2ID0gMHgz LA0KPiArCQkgICAgICAgLnZyZWZfMXAyM3YgPSAweDcsDQo+ICsJCSAgICAgICAudnJlZl8wcDh2 ID0gMHg3LA0KPiArCQkgICAgICAgLnZyZWZfMHA2NnYgPSAweDYsDQo+ICsJCSAgICAgICAudnJl Zl8wcDR2ID0gMHgyLA0KPiArCQkgICAgICAgLnZyZWZfMHAydiA9IDB4MywNCj4gKwkJICAgICAg IC52cmVmXzFfMXA2diA9IDB4NCwNCj4gKwkJICAgICAgIC52cmVmXzBfMXA2diA9IDB4NyB9LA0K PiArCS5jYzJfcGFyYW0gPSB7IC5ycF80cDdrX2NvZGUgPSAweDgsDQo+ICsJCSAgICAgICAucnBf MzZrX2NvZGUgPSAweGUsDQo+ICsJCSAgICAgICAucnBfMTJrX2NvZGUgPSAweDksDQo+ICsJCSAg ICAgICAucmRfY29kZSA9IDB4OSwNCj4gKwkJICAgICAgIC5yYV9jb2RlID0gMHg3LA0KPiArCQkg ICAgICAgLnZyZWZfMnA2diA9IDB4MywNCj4gKwkJICAgICAgIC52cmVmXzFwMjN2ID0gMHg3LA0K PiArCQkgICAgICAgLnZyZWZfMHA4diA9IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzBwNjZ2ID0g MHg2LA0KPiArCQkgICAgICAgLnZyZWZfMHA0diA9IDB4MywNCj4gKwkJICAgICAgIC52cmVmXzBw MnYgPSAweDMsDQo+ICsJCSAgICAgICAudnJlZl8xXzFwNnYgPSAweDYsDQo+ICsJCSAgICAgICAu dnJlZl8wXzFwNnYgPSAweDcgfSwNCj4gKwkuZGVib3VuY2VfdmFsID0gMHg3ZiwgLyogMWIsMXVz IDdmLDQuN3VzICovDQo+ICsJLnVzZV9kZWZhbHV0X3BhcmFtZXRlciA9IGZhbHNlLA0KPiArfTsN Cj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCB0eXBlX2NfY2ZnIHJ0ZDEzMTJjX3R5cGVfY19j ZmcgPSB7DQo+ICsJLnBhcmFtZXRlcl92ZXIgPSBQQVJBTUVURVJfVjAsDQo+ICsJLmNjX2RmcF9t b2RlID0gQ0NfTU9ERV9ERlBfMV81LA0KPiArCS5jYzFfcGFyYW0gPSB7IC5ycF80cDdrX2NvZGUg PSAweGUsDQo+ICsJCSAgICAgICAucnBfMzZrX2NvZGUgPSAweGMsDQo+ICsJCSAgICAgICAucnBf MTJrX2NvZGUgPSAweGMsDQo+ICsJCSAgICAgICAucmRfY29kZSA9IDB4YSwNCj4gKwkJICAgICAg IC5yYV9jb2RlID0gMHgzLA0KPiArCQkgICAgICAgLnZyZWZfMnA2diA9IDB4YSwNCj4gKwkJICAg ICAgIC52cmVmXzFwMjN2ID0gMHg3LA0KPiArCQkgICAgICAgLnZyZWZfMHA4diA9IDB4NywNCj4g KwkJICAgICAgIC52cmVmXzBwNjZ2ID0gMHg3LA0KPiArCQkgICAgICAgLnZyZWZfMHA0diA9IDB4 NCwNCj4gKwkJICAgICAgIC52cmVmXzBwMnYgPSAweDQsDQo+ICsJCSAgICAgICAudnJlZl8xXzFw NnYgPSAweDcsDQo+ICsJCSAgICAgICAudnJlZl8wXzFwNnYgPSAweDcgfSwNCj4gKwkuY2MyX3Bh cmFtID0geyAucnBfNHA3a19jb2RlID0gMHhlLA0KPiArCQkgICAgICAgLnJwXzM2a19jb2RlID0g MHhjLA0KPiArCQkgICAgICAgLnJwXzEya19jb2RlID0gMHhjLA0KPiArCQkgICAgICAgLnJkX2Nv ZGUgPSAweGEsDQo+ICsJCSAgICAgICAucmFfY29kZSA9IDB4MywNCj4gKwkJICAgICAgIC52cmVm XzJwNnYgPSAweGEsDQo+ICsJCSAgICAgICAudnJlZl8xcDIzdiA9IDB4NywNCj4gKwkJICAgICAg IC52cmVmXzBwOHYgPSAweDcsDQo+ICsJCSAgICAgICAudnJlZl8wcDY2diA9IDB4NywNCj4gKwkJ ICAgICAgIC52cmVmXzBwNHYgPSAweDQsDQo+ICsJCSAgICAgICAudnJlZl8wcDJ2ID0gMHg0LA0K PiArCQkgICAgICAgLnZyZWZfMV8xcDZ2ID0gMHg3LA0KPiArCQkgICAgICAgLnZyZWZfMF8xcDZ2 ID0gMHg3IH0sDQo+ICsJLmRlYm91bmNlX3ZhbCA9IDB4N2YsIC8qIDFiLDF1cyA3Ziw0Ljd1cyAq Lw0KPiArCS51c2VfZGVmYWx1dF9wYXJhbWV0ZXIgPSBmYWxzZSwNCj4gK307DQo+ICsNCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgdHlwZV9jX2NmZyBydGQxNjE5Yl90eXBlX2NfY2ZnID0gew0KPiAr CS5wYXJhbWV0ZXJfdmVyID0gUEFSQU1FVEVSX1YxLA0KPiArCS5jY19kZnBfbW9kZSA9IENDX01P REVfREZQXzFfNSwNCj4gKwkuY2MxX3BhcmFtID0geyAucnBfNHA3a19jb2RlID0gMHhmLA0KPiAr CQkgICAgICAgLnJwXzM2a19jb2RlID0gMHhmLA0KPiArCQkgICAgICAgLnJwXzEya19jb2RlID0g MHhmLA0KPiArCQkgICAgICAgLnJkX2NvZGUgPSAweGYsDQo+ICsJCSAgICAgICAucmFfY29kZSA9 IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzJwNnYgPSAweDksDQo+ICsJCSAgICAgICAudnJlZl8x cDIzdiA9IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzBwOHYgPSAweDksDQo+ICsJCSAgICAgICAu dnJlZl8wcDY2diA9IDB4OCwNCj4gKwkJICAgICAgIC52cmVmXzBwNHYgPSAweDcsDQo+ICsJCSAg ICAgICAudnJlZl8wcDJ2ID0gMHg5LA0KPiArCQkgICAgICAgLnZyZWZfMV8xcDZ2ID0gMHg3LA0K PiArCQkgICAgICAgLnZyZWZfMF8xcDZ2ID0gMHg3IH0sDQo+ICsJLmNjMl9wYXJhbSA9IHsgLnJw XzRwN2tfY29kZSA9IDB4ZiwNCj4gKwkJICAgICAgIC5ycF8zNmtfY29kZSA9IDB4ZiwNCj4gKwkJ ICAgICAgIC5ycF8xMmtfY29kZSA9IDB4ZiwNCj4gKwkJICAgICAgIC5yZF9jb2RlID0gMHhmLA0K PiArCQkgICAgICAgLnJhX2NvZGUgPSAweDcsDQo+ICsJCSAgICAgICAudnJlZl8xcDIzdiA9IDB4 NywNCj4gKwkJICAgICAgIC52cmVmXzBwOHYgPSAweDksDQo+ICsJCSAgICAgICAudnJlZl8wcDY2 diA9IDB4OCwNCj4gKwkJICAgICAgIC52cmVmXzBwNHYgPSAweDcsDQo+ICsJCSAgICAgICAudnJl Zl8wcDJ2ID0gMHg4LA0KPiArCQkgICAgICAgLnZyZWZfMV8xcDZ2ID0gMHg3LA0KPiArCQkgICAg ICAgLnZyZWZfMF8xcDZ2ID0gMHg3IH0sDQo+ICsJLmRlYm91bmNlX3ZhbCA9IDB4N2YsIC8qIDFi LDF1cyA3Ziw0Ljd1cyAqLw0KPiArCS51c2VfZGVmYWx1dF9wYXJhbWV0ZXIgPSBmYWxzZSwNCj4g K307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdHlwZV9jX2NmZyBydGQxMzE5ZF90eXBl X2NfY2ZnID0gew0KPiArCS5wYXJhbWV0ZXJfdmVyID0gUEFSQU1FVEVSX1YxLA0KPiArCS5jY19k ZnBfbW9kZSA9IENDX01PREVfREZQXzFfNSwNCj4gKwkuY2MxX3BhcmFtID0geyAucnBfNHA3a19j b2RlID0gMHhlLA0KPiArCQkgICAgICAgLnJwXzM2a19jb2RlID0gMHgzLA0KPiArCQkgICAgICAg LnJwXzEya19jb2RlID0gMHhlLA0KPiArCQkgICAgICAgLnJkX2NvZGUgPSAweGYsDQo+ICsJCSAg ICAgICAucmFfY29kZSA9IDB4NiwNCj4gKwkJICAgICAgIC52cmVmXzJwNnYgPSAweDcsDQo+ICsJ CSAgICAgICAudnJlZl8xcDIzdiA9IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzBwOHYgPSAweDgs DQo+ICsJCSAgICAgICAudnJlZl8wcDY2diA9IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzBwNHYg PSAweDcsDQo+ICsJCSAgICAgICAudnJlZl8wcDJ2ID0gMHg3LA0KPiArCQkgICAgICAgLnZyZWZf MV8xcDZ2ID0gMHg3LA0KPiArCQkgICAgICAgLnZyZWZfMF8xcDZ2ID0gMHg3IH0sDQo+ICsJLmNj Ml9wYXJhbSA9IHsgLnJwXzRwN2tfY29kZSA9IDB4ZSwNCj4gKwkJICAgICAgIC5ycF8zNmtfY29k ZSA9IDB4MywNCj4gKwkJICAgICAgIC5ycF8xMmtfY29kZSA9IDB4ZSwNCj4gKwkJICAgICAgIC5y ZF9jb2RlID0gMHhmLA0KPiArCQkgICAgICAgLnJhX2NvZGUgPSAweDYsDQo+ICsJCSAgICAgICAu dnJlZl8ycDZ2ID0gMHg3LA0KPiArCQkgICAgICAgLnZyZWZfMXAyM3YgPSAweDcsDQo+ICsJCSAg ICAgICAudnJlZl8wcDh2ID0gMHg4LA0KPiArCQkgICAgICAgLnZyZWZfMHA2NnYgPSAweDcsDQo+ ICsJCSAgICAgICAudnJlZl8wcDR2ID0gMHg3LA0KPiArCQkgICAgICAgLnZyZWZfMHAydiA9IDB4 OCwNCj4gKwkJICAgICAgIC52cmVmXzFfMXA2diA9IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzBf MXA2diA9IDB4NyB9LA0KPiArCS5kZWJvdW5jZV92YWwgPSAweDdmLCAvKiAxYiwxdXMgN2YsNC43 dXMgKi8NCj4gKwkudXNlX2RlZmFsdXRfcGFyYW1ldGVyID0gZmFsc2UsDQo+ICt9Ow0KPiArDQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IHR5cGVfY19jZmcgcnRkMTMxNWVfdHlwZV9jX2NmZyA9IHsN Cj4gKwkucGFyYW1ldGVyX3ZlciA9IFBBUkFNRVRFUl9WMSwNCj4gKwkuY2NfZGZwX21vZGUgPSBD Q19NT0RFX0RGUF8xXzUsDQo+ICsJLmNjMV9wYXJhbSA9IHsgLnJwXzRwN2tfY29kZSA9IDB4ZSwN Cj4gKwkJICAgICAgIC5ycF8zNmtfY29kZSA9IDB4MywNCj4gKwkJICAgICAgIC5ycF8xMmtfY29k ZSA9IDB4ZSwNCj4gKwkJICAgICAgIC5yZF9jb2RlID0gMHhmLA0KPiArCQkgICAgICAgLnJhX2Nv ZGUgPSAweDYsDQo+ICsJCSAgICAgICAudnJlZl8ycDZ2ID0gMHg3LA0KPiArCQkgICAgICAgLnZy ZWZfMXAyM3YgPSAweDcsDQo+ICsJCSAgICAgICAudnJlZl8wcDh2ID0gMHg4LA0KPiArCQkgICAg ICAgLnZyZWZfMHA2NnYgPSAweDcsDQo+ICsJCSAgICAgICAudnJlZl8wcDR2ID0gMHg3LA0KPiAr CQkgICAgICAgLnZyZWZfMHAydiA9IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzFfMXA2diA9IDB4 NywNCj4gKwkJICAgICAgIC52cmVmXzBfMXA2diA9IDB4NyB9LA0KPiArCS5jYzJfcGFyYW0gPSB7 IC5ycF80cDdrX2NvZGUgPSAweGUsDQo+ICsJCSAgICAgICAucnBfMzZrX2NvZGUgPSAweDMsDQo+ ICsJCSAgICAgICAucnBfMTJrX2NvZGUgPSAweGUsDQo+ICsJCSAgICAgICAucmRfY29kZSA9IDB4 ZiwNCj4gKwkJICAgICAgIC5yYV9jb2RlID0gMHg2LA0KPiArCQkgICAgICAgLnZyZWZfMnA2diA9 IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzFwMjN2ID0gMHg3LA0KPiArCQkgICAgICAgLnZyZWZf MHA4diA9IDB4OCwNCj4gKwkJICAgICAgIC52cmVmXzBwNjZ2ID0gMHg3LA0KPiArCQkgICAgICAg LnZyZWZfMHA0diA9IDB4NywNCj4gKwkJICAgICAgIC52cmVmXzBwMnYgPSAweDgsDQo+ICsJCSAg ICAgICAudnJlZl8xXzFwNnYgPSAweDcsDQo+ICsJCSAgICAgICAudnJlZl8wXzFwNnYgPSAweDcg fSwNCj4gKwkuZGVib3VuY2VfdmFsID0gMHg3ZiwgLyogMWIsMXVzIDdmLDQuN3VzICovDQo+ICsJ LnVzZV9kZWZhbHV0X3BhcmFtZXRlciA9IGZhbHNlLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZXh0Y29uX3J0a190eXBlX2NfbWF0Y2hbXSA9IHsNCj4g Kwl7IC5jb21wYXRpYmxlID0gInJlYWx0ZWsscnRkMTI5NS10eXBlLWMiLCAuZGF0YSA9ICZydGQx Mjk1X3R5cGVfY19jZmcgfSwNCj4gKwl7IC5jb21wYXRpYmxlID0gInJlYWx0ZWsscnRkMTMxMmMt dHlwZS1jIiwgLmRhdGEgPQ0KPiAmcnRkMTMxMmNfdHlwZV9jX2NmZyB9LA0KPiArCXsgLmNvbXBh dGlibGUgPSAicmVhbHRlayxydGQxMzE1ZS10eXBlLWMiLCAuZGF0YSA9DQo+ICZydGQxMzE1ZV90 eXBlX2NfY2ZnIH0sDQo+ICsJeyAuY29tcGF0aWJsZSA9ICJyZWFsdGVrLHJ0ZDEzMTktdHlwZS1j IiwgLmRhdGEgPSAmcnRkMTMxOV90eXBlX2NfY2ZnIH0sDQo+ICsJeyAuY29tcGF0aWJsZSA9ICJy ZWFsdGVrLHJ0ZDEzMTlkLXR5cGUtYyIsIC5kYXRhID0NCj4gJnJ0ZDEzMTlkX3R5cGVfY19jZmcg fSwNCj4gKwl7IC5jb21wYXRpYmxlID0gInJlYWx0ZWsscnRkMTM5NS10eXBlLWMiLCAuZGF0YSA9 ICZydGQxMzk1X3R5cGVfY19jZmcgfSwNCj4gKwl7IC5jb21wYXRpYmxlID0gInJlYWx0ZWsscnRk MTYxOS10eXBlLWMiLCAuZGF0YSA9ICZydGQxNjE5X3R5cGVfY19jZmcgfSwNCj4gKwl7IC5jb21w YXRpYmxlID0gInJlYWx0ZWsscnRkMTYxOWItdHlwZS1jIiwgLmRhdGEgPQ0KPiAmcnRkMTYxOWJf dHlwZV9jX2NmZyB9LA0KPiArCXt9LA0KPiArfTsNCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IGV4dGNvbl9ydGtfdHlwZV9jX21hdGNoKTsNCj4gKw0KPiArI2lmZGVmIENPTkZJR19QTV9TTEVF UA0KPiArc3RhdGljIGludCBleHRjb25fcnRrX3R5cGVfY19wcmVwYXJlKHN0cnVjdCBkZXZpY2Ug KmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYyA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOw0KPiArCXUzMiBkZWZhdWx0X2N0cmw7DQo+ICsJdW5zaWduZWQgbG9uZyBmbGFn czsNCj4gKw0KPiArCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmdHlwZV9jLT5kZWxheWVkX3dv cmspOw0KPiArCWZsdXNoX2RlbGF5ZWRfd29yaygmdHlwZV9jLT5kZWxheWVkX3dvcmspOw0KPiAr CVdBUk5fT05fT05DRShkZWxheWVkX3dvcmtfcGVuZGluZygmdHlwZV9jLT5kZWxheWVkX3dvcmsp KTsNCj4gKw0KPiArCXNwaW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4g KwkvKiBkaXNhYmxlIGludGVycnVwdCAqLw0KPiArCWRlZmF1bHRfY3RybCA9IHJlYWRsKHR5cGVf Yy0+cmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTCkgJg0KPiArCQkgICAgREVCT1VOQ0VfVElNRV9N QVNLOw0KPiArCXdyaXRlbChkZWZhdWx0X2N0cmwsIHR5cGVfYy0+cmVnX2Jhc2UgKyBVU0JfVFlQ RUNfQ1RSTCk7DQo+ICsNCj4gKwkvKiBkaXNhYmxlIGNjIGRldGVjdCwgcnAsIHJkICovDQo+ICsJ d3JpdGVsKFBMUl9FTiwgdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMX0NDMV8wKTsN Cj4gKwl3cml0ZWwoMCwgdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMX0NDMl8wKTsN Cj4gKw0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0K PiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGV4dGNvbl9ydGtf dHlwZV9jX2NvbXBsZXRlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwkvKiBub3RoaW5n ICovDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZXh0Y29uX3J0a190eXBlX2Nfc3VzcGVuZChz dHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsJLyogbm90aGluZyAqLw0KPiArDQo+ICsJcmV0 dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZXh0Y29uX3J0a190eXBlX2NfcmVzdW1l KHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVf YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlyZXQgPSBl eHRjb25fcnRrX3R5cGVfY19pbml0KHR5cGVfYyk7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZf ZXJyKGRldiwgIiVzIGZhaWxlZCB0byBpbml0IHR5cGVfY1xuIiwgX19mdW5jX18pOw0KPiArCQly ZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgZXh0Y29uX3J0a190eXBlX2NfcG1fb3BzID0gew0K PiArCVNFVF9MQVRFX1NZU1RFTV9TTEVFUF9QTV9PUFMoZXh0Y29uX3J0a190eXBlX2Nfc3VzcGVu ZCwNCj4gZXh0Y29uX3J0a190eXBlX2NfcmVzdW1lKQ0KPiArCS5wcmVwYXJlID0gZXh0Y29uX3J0 a190eXBlX2NfcHJlcGFyZSwNCj4gKwkuY29tcGxldGUgPSBleHRjb25fcnRrX3R5cGVfY19jb21w bGV0ZSwNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgREVWX1BNX09QUwkoJmV4dGNvbl9ydGtfdHlw ZV9jX3BtX29wcykNCj4gKyNlbHNlDQo+ICsjZGVmaW5lIERFVl9QTV9PUFMJTlVMTA0KPiArI2Vu ZGlmIC8qIENPTkZJR19QTV9TTEVFUCAqLw0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3Jt X2RyaXZlciBleHRjb25fcnRrX3R5cGVfY19kcml2ZXIgPSB7DQo+ICsJLnByb2JlCQk9IGV4dGNv bl9ydGtfdHlwZV9jX3Byb2JlLA0KPiArCS5yZW1vdmVfbmV3CT0gZXh0Y29uX3J0a190eXBlX2Nf cmVtb3ZlLA0KPiArCS5kcml2ZXIJCT0gew0KPiArCQkubmFtZQk9ICJleHRjb24tcnRrLXR5cGVf YyIsDQo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IGV4dGNvbl9ydGtfdHlwZV9jX21hdGNoLA0KPiAr CQkucG0gPSBERVZfUE1fT1BTLA0KPiArCX0sDQo+ICt9Ow0KPiArDQo+ICttb2R1bGVfcGxhdGZv cm1fZHJpdmVyKGV4dGNvbl9ydGtfdHlwZV9jX2RyaXZlcik7DQo+ICsNCj4gK01PRFVMRV9ERVND UklQVElPTigiUmVhbHRlayBFeHRjb24gVHlwZSBDIGRyaXZlciIpOw0KPiArTU9EVUxFX0FVVEhP UigiU3RhbmxleSBDaGFuZyA8c3RhbmxleV9jaGFuZ0ByZWFsdGVrLmNvbT4iKTsNCj4gK01PRFVM RV9MSUNFTlNFKCJHUEwiKTsNCj4gLS0NCj4gMi4zNC4xDQoNCg==