From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5F202C61DF4 for ; Fri, 24 Nov 2023 17:34:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject: In-Reply-To:References:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4WOeN1r4RF0ipCPdZ4RptnUuIduWEaIlQ++iaP4jy20=; b=Ego/8f7dYux9MT I5uCIBUMuo5N/iyvMGVSpMXWQzOe5VYRM0uut/4Wc3smjw+KvQO6Zu+nfpZekcgqpAAuV4jpCBmdq BnYaR79GHq5GYAXxAG9BNRpmoQrq4HMo3ZQXfioZgNfhDA+q4O2iqR+SGf12Snlj1zbkyOXG9rxtI 9cdWuRonPipoiv+irZRMpkaOVsKJjxN39SBhfP8OxolDFL6KJz7fxAVANSmm0NTeZ6gItCS8Z9XWT FX6KVXhtFdffFuW1Z1qOyVDSUtuEkIo2ZuQ62sDYurvr8VZImllH3mSSiUi2qyPdQB5N7CMx6Rszh aI44sKBTBVRQkty82b9A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r6a4F-007oGw-19; Fri, 24 Nov 2023 17:34:15 +0000 Received: from mx0a-001ae601.pphosted.com ([67.231.149.25] helo=mx0b-001ae601.pphosted.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r6a49-007oEh-1X; Fri, 24 Nov 2023 17:34:13 +0000 Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.17.1.22/8.17.1.22) with ESMTP id 3AODvjk2030326; Fri, 24 Nov 2023 11:33:51 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus.com; h= from:to:cc:references:in-reply-to:subject:date:message-id :mime-version:content-type:content-transfer-encoding; s= PODMain02222019; bh=m1XsxYThaok7qjGnHuWLRhBLda7OSvWudMgiEi4C6n0=; b= Ho2tYqQzfVw5dDywaiZEClmcodwxE2tsm4lkGF9iAf+3LJ68iEyFIil1lDcu4X/W wEDHOYHW01brXdRQv2VVFqHrg/ncVtBQfZI3zJpq1LbLrXw0ypoUCw/Lh8V5jEYz vMiQug3TBivMXlmZLmwG8h3MHpcvwTBgqv8FDHZDo1Mme0I9l3uwugPcnOAfElWW tqBDjYilUSAujLKnMHPWVWxeUt9gb0dNU+jgcrt4a2AJ28Ee7QhMSI0zJS+v/g4x oB84C2W3OAx15dHDyRzI9Awe33aMJwMyk6qGPdH7OyJXZM6JPDfqBYf+z5baZeVO mDHlVi93Npkzl1rWwXAkTQ== Received: from ediex01.ad.cirrus.com ([84.19.233.68]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 3ueuj2f28y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Nov 2023 11:33:50 -0600 (CST) Received: from ediex02.ad.cirrus.com (198.61.84.81) by ediex01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.39; Fri, 24 Nov 2023 17:33:48 +0000 Received: from ediswmail.ad.cirrus.com (198.61.86.93) by anon-ediex02.ad.cirrus.com (198.61.84.81) with Microsoft SMTP Server id 15.2.1118.39 via Frontend Transport; Fri, 24 Nov 2023 17:33:48 +0000 Received: from LONN2DGDQ73 (LONN2DGDQ73.ad.cirrus.com [198.61.65.15]) by ediswmail.ad.cirrus.com (Postfix) with ESMTP id 7E67E15A5; Fri, 24 Nov 2023 17:33:47 +0000 (UTC) From: Stefan Binding To: "'Mahapatra, Amit Kumar'" , , , , , , CC: , , , , , , , "'Simek, Michal'" , , "'git (AMD-Xilinx)'" , , References: <20231118135446.52783-1-amit.kumar-mahapatra@amd.com> <20231118135446.52783-2-amit.kumar-mahapatra@amd.com> <8182135b-6f4f-47ae-ba53-e94a058d466f@opensource.cirrus.com> In-Reply-To: Subject: RE: [PATCH v10 1/8] spi: Add multi-cs memories support in SPI core Date: Fri, 24 Nov 2023 17:33:47 +0000 Message-ID: <005001da1efc$619ad5a0$24d080e0$@opensource.cirrus.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Content-Language: en-gb Thread-Index: AQJ/6D8wsmUQ6gOAzzXffUuI56wCdgJV4O4vAtOeZjgCfcgjLAGoFXKiAVPe5l4BaiixAwG2kM3oAOuu/oQCahD9ia61Wcbw X-Proofpoint-ORIG-GUID: xlftanPG9dpaOXROkGdJmO3KJarycEpe X-Proofpoint-GUID: xlftanPG9dpaOXROkGdJmO3KJarycEpe X-Proofpoint-Spam-Reason: safe X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231124_093409_564408_25616A2C X-CRM114-Status: GOOD ( 52.68 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org Cgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogTWFoYXBhdHJhLCBBbWl0IEt1 bWFyIDxhbWl0Lmt1bWFyLW1haGFwYXRyYUBhbWQuY29tPgo+IFNlbnQ6IFdlZG5lc2RheSwgTm92 ZW1iZXIgMjIsIDIwMjMgMToyMyBQTQo+IFRvOiBTdGVmYW4gQmluZGluZyA8c2JpbmRpbmdAb3Bl bnNvdXJjZS5jaXJydXMuY29tPjsKPiBicm9vbmllQGtlcm5lbC5vcmc7IHR1ZG9yLmFtYmFydXNA bGluYXJvLm9yZzsgcHJhdHl1c2hAa2VybmVsLm9yZzsKPiBtaXF1ZWwucmF5bmFsQGJvb3RsaW4u Y29tOyByaWNoYXJkQG5vZC5hdDsgdmlnbmVzaHJAdGkuY29tCj4gQ2M6IGxpbnV4LXNwaUB2Z2Vy Lmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7Cj4gbWljaGFlbEB3YWxs ZS5jYzsgbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmc7Cj4gbmljb2xhcy5mZXJyZUBtaWNy b2NoaXAuY29tOyBhbGV4YW5kcmUuYmVsbG9uaUBib290bGluLmNvbTsKPiBjbGF1ZGl1LmJlem5l YUB0dXhvbi5kZXY7IFNpbWVrLCBNaWNoYWwgPG1pY2hhbC5zaW1la0BhbWQuY29tPjsKPiBsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGdpdCAoQU1ELVhpbGlueCkgPGdpdEBh bWQuY29tPjsKPiBhbWl0cmtjaWFuMjAwMkBnbWFpbC5jb207IHBhdGNoZXNAb3BlbnNvdXJjZS5j aXJydXMuY29tCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2MTAgMS84XSBzcGk6IEFkZCBtdWx0aS1j cyBtZW1vcmllcyBzdXBwb3J0IGluIFNQSQo+IGNvcmUKPiAKPiAKPiAKPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tCj4gPiBGcm9tOiBTdGVmYW4gQmluZGluZyA8c2JpbmRpbmdAb3BlbnNv dXJjZS5jaXJydXMuY29tPgo+ID4gU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAyMiwgMjAyMyA0 OjUxIFBNCj4gPiBUbzogTWFoYXBhdHJhLCBBbWl0IEt1bWFyIDxhbWl0Lmt1bWFyLW1haGFwYXRy YUBhbWQuY29tPjsKPiA+IGJyb29uaWVAa2VybmVsLm9yZzsgdHVkb3IuYW1iYXJ1c0BsaW5hcm8u b3JnOyBwcmF0eXVzaEBrZXJuZWwub3JnOwo+ID4gbWlxdWVsLnJheW5hbEBib290bGluLmNvbTsg cmljaGFyZEBub2QuYXQ7IHZpZ25lc2hyQHRpLmNvbQo+ID4gQ2M6IGxpbnV4LXNwaUB2Z2VyLmtl cm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7Cj4gPiBtaWNoYWVsQHdhbGxl LmNjOyBsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZzsKPiA+IG5pY29sYXMuZmVycmVAbWlj cm9jaGlwLmNvbTsgYWxleGFuZHJlLmJlbGxvbmlAYm9vdGxpbi5jb207Cj4gPiBjbGF1ZGl1LmJl em5lYUB0dXhvbi5kZXY7IFNpbWVrLCBNaWNoYWwgPG1pY2hhbC5zaW1la0BhbWQuY29tPjsKPiBs aW51eC0KPiA+IGFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsgZ2l0IChBTUQtWGlsaW54 KSA8Z2l0QGFtZC5jb20+Owo+ID4gYW1pdHJrY2lhbjIwMDJAZ21haWwuY29tOyBwYXRjaGVzQG9w ZW5zb3VyY2UuY2lycnVzLmNvbQo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2MTAgMS84XSBzcGk6 IEFkZCBtdWx0aS1jcyBtZW1vcmllcyBzdXBwb3J0IGluIFNQSQo+IGNvcmUKPiA+Cj4gPgo+ID4g T24gMjEvMTEvMjAyMyAxOToxOCwgTWFoYXBhdHJhLCBBbWl0IEt1bWFyIHdyb3RlOgo+ID4gPiBI ZWxsbyBTdGVmYW4sCj4gPiA+Cj4gPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4g Pj4gRnJvbTogU3RlZmFuIEJpbmRpbmcgPHNiaW5kaW5nQG9wZW5zb3VyY2UuY2lycnVzLmNvbT4K PiA+ID4+IFNlbnQ6IFR1ZXNkYXksIE5vdmVtYmVyIDIxLCAyMDIzIDExOjA3IFBNCj4gPiA+PiBU bzogTWFoYXBhdHJhLCBBbWl0IEt1bWFyIDxhbWl0Lmt1bWFyLW1haGFwYXRyYUBhbWQuY29tPjsK PiA+ID4+IGJyb29uaWVAa2VybmVsLm9yZzsgdHVkb3IuYW1iYXJ1c0BsaW5hcm8ub3JnOwo+IHBy YXR5dXNoQGtlcm5lbC5vcmc7Cj4gPiA+PiBtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tOyByaWNo YXJkQG5vZC5hdDsgdmlnbmVzaHJAdGkuY29tCj4gPiA+PiBDYzogbGludXgtc3BpQHZnZXIua2Vy bmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsKPiA+ID4+IG1pY2hhZWxAd2Fs bGUuY2M7IGxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnOwo+ID4gPj4gbmljb2xhcy5mZXJy ZUBtaWNyb2NoaXAuY29tOyBhbGV4YW5kcmUuYmVsbG9uaUBib290bGluLmNvbTsKPiA+ID4+IGNs YXVkaXUuYmV6bmVhQHR1eG9uLmRldjsgU2ltZWssIE1pY2hhbAo+IDxtaWNoYWwuc2ltZWtAYW1k LmNvbT47Cj4gPiA+PiBsaW51eC0gYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBnaXQg KEFNRC1YaWxpbngpCj4gPiA+PiA8Z2l0QGFtZC5jb20+OyBhbWl0cmtjaWFuMjAwMkBnbWFpbC5j b207Cj4gPiA+PiBwYXRjaGVzQG9wZW5zb3VyY2UuY2lycnVzLmNvbQo+ID4gPj4gU3ViamVjdDog UmU6IFtQQVRDSCB2MTAgMS84XSBzcGk6IEFkZCBtdWx0aS1jcyBtZW1vcmllcyBzdXBwb3J0IGlu Cj4gPiA+PiBTUEkgY29yZQo+ID4gPj4KPiA+ID4+Cj4gPiA+PiBPbiAyMS8xMS8yMDIzIDE2OjM1 LCBNYWhhcGF0cmEsIEFtaXQgS3VtYXIgd3JvdGU6Cj4gPiA+Pj4gSGVsbG8gU3RlZmFuLAo+ID4g Pj4+Cj4gPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+Pj4+IEZyb206IFN0 ZWZhbiBCaW5kaW5nIDxzYmluZGluZ0BvcGVuc291cmNlLmNpcnJ1cy5jb20+Cj4gPiA+Pj4+IFNl bnQ6IFR1ZXNkYXksIE5vdmVtYmVyIDIxLCAyMDIzIDc6MjggUE0KPiA+ID4+Pj4gVG86IE1haGFw YXRyYSwgQW1pdCBLdW1hciA8YW1pdC5rdW1hci1tYWhhcGF0cmFAYW1kLmNvbT47Cj4gPiA+Pj4+ IGJyb29uaWVAa2VybmVsLm9yZzsgdHVkb3IuYW1iYXJ1c0BsaW5hcm8ub3JnOwo+IHByYXR5dXNo QGtlcm5lbC5vcmc7Cj4gPiA+Pj4+IG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb207IHJpY2hhcmRA bm9kLmF0OyB2aWduZXNockB0aS5jb20KPiA+ID4+Pj4gQ2M6IGxpbnV4LXNwaUB2Z2VyLmtlcm5l bC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7Cj4gPiA+Pj4+IG1pY2hhZWxAd2Fs bGUuY2M7IGxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnOwo+ID4gPj4+PiBuaWNvbGFzLmZl cnJlQG1pY3JvY2hpcC5jb207IGFsZXhhbmRyZS5iZWxsb25pQGJvb3RsaW4uY29tOwo+ID4gPj4+ PiBjbGF1ZGl1LmJlem5lYUB0dXhvbi5kZXY7IFNpbWVrLCBNaWNoYWwKPiA8bWljaGFsLnNpbWVr QGFtZC5jb20+Owo+ID4gPj4+PiBsaW51eC0gYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn OyBnaXQgKEFNRC1YaWxpbngpCj4gPiA+Pj4+IDxnaXRAYW1kLmNvbT47IGFtaXRya2NpYW4yMDAy QGdtYWlsLmNvbTsKPiA+ID4+Pj4gcGF0Y2hlc0BvcGVuc291cmNlLmNpcnJ1cy5jb20KPiA+ID4+ Pj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MTAgMS84XSBzcGk6IEFkZCBtdWx0aS1jcyBtZW1vcmll cyBzdXBwb3J0IGluCj4gPiA+Pj4+IFNQSSBjb3JlCj4gPiA+Pj4+Cj4gPiA+Pj4+Cj4gPiA+Pj4+ IE9uIDIxLzExLzIwMjMgMDc6MzksIE1haGFwYXRyYSwgQW1pdCBLdW1hciB3cm90ZToKPiA+ID4+ Pj4+IEhlbGxvIFN0ZWZhbiwKPiA+ID4+Pj4+Cj4gPiA+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0KPiA+ID4+Pj4+PiBGcm9tOiBTdGVmYW4gQmluZGluZyA8c2JpbmRpbmdAb3BlbnNv dXJjZS5jaXJydXMuY29tPgo+ID4gPj4+Pj4+IFNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgMjAsIDIw MjMgODowMCBQTQo+ID4gPj4+Pj4+IFRvOiBNYWhhcGF0cmEsIEFtaXQgS3VtYXIgPGFtaXQua3Vt YXItCj4gbWFoYXBhdHJhQGFtZC5jb20+Owo+ID4gPj4+Pj4+IGJyb29uaWVAa2VybmVsLm9yZzsg dHVkb3IuYW1iYXJ1c0BsaW5hcm8ub3JnOwo+ID4gPj4+Pj4+IHByYXR5dXNoQGtlcm5lbC5vcmc7 IG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb207Cj4gcmljaGFyZEBub2QuYXQ7Cj4gPiA+Pj4+Pj4g dmlnbmVzaHJAdGkuY29tCj4gPiA+Pj4+Pj4gQ2M6IGxpbnV4LXNwaUB2Z2VyLmtlcm5lbC5vcmc7 IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7Cj4gPiA+Pj4+Pj4gbWljaGFlbEB3YWxsZS5j YzsgbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmc7Cj4gPiA+Pj4+Pj4gbmljb2xhcy5mZXJy ZUBtaWNyb2NoaXAuY29tOyBhbGV4YW5kcmUuYmVsbG9uaUBib290bGluLmNvbTsKPiA+ID4+Pj4+ PiBjbGF1ZGl1LmJlem5lYUB0dXhvbi5kZXY7IFNpbWVrLCBNaWNoYWwKPiA+IDxtaWNoYWwuc2lt ZWtAYW1kLmNvbT47Cj4gPiA+Pj4+Pj4gbGludXgtIGFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZzsgZ2l0IChBTUQtWGlsaW54KQo+ID4gPj4+Pj4+IDxnaXRAYW1kLmNvbT47IGFtaXRya2Np YW4yMDAyQGdtYWlsLmNvbTsKPiA+ID4+Pj4+PiBwYXRjaGVzQG9wZW5zb3VyY2UuY2lycnVzLmNv bQo+ID4gPj4+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjEwIDEvOF0gc3BpOiBBZGQgbXVsdGkt Y3MgbWVtb3JpZXMgc3VwcG9ydAo+ID4gPj4+Pj4+IGluIFNQSSBjb3JlCj4gPiA+Pj4+Pj4KPiA+ ID4+Pj4+Pgo+ID4gPj4+Pj4+IE9uIDE4LzExLzIwMjMgMTM6NTQsIEFtaXQgS3VtYXIgTWFoYXBh dHJhIHdyb3RlOgo+ID4gPj4+Pj4+PiBBTUQtWGlsaW54IEdRU1BJIGNvbnRyb2xsZXIgaGFzIHR3 byBhZHZhbmNlZCBtb2RlIHRoYXQKPiBhbGxvd3MKPiA+ID4+Pj4+Pj4gdGhlIGNvbnRyb2xsZXIg dG8gY29uc2lkZXIgdHdvIGZsYXNoZXMgYXMgb25lIHNpbmdsZSBkZXZpY2UuCj4gPiA+Pj4+Pj4+ Cj4gPiA+Pj4+Pj4+IE9uZSBvZiB0aGVzZSB0d28gbW9kZSBpcyB0aGUgcGFyYWxsZWwgbW9kZSBp biB3aGljaCBlYWNoIGJ5dGUKPiBvZgo+ID4gPj4+Pj4+PiBkYXRhIGlzIHN0b3JlZCBpbiBib3Ro IGRldmljZXMsIHRoZSBldmVuIGJpdHMgaW4gdGhlIGxvd2VyIGZsYXNoCj4gPiA+Pj4+Pj4+ICYg dGhlIG9kZCBiaXRzIGluIHRoZSB1cHBlciBmbGFzaC4gVGhlIGJ5dGUgc3BsaXQgaXMKPiA+ID4+ Pj4+Pj4gYXV0b21hdGljYWxseSBoYW5kbGVkIGJ5IHRoZSBRU1BJIGNvbnRyb2xsZXIuCj4gPiA+ Pj4+Pj4+Cj4gPiA+Pj4+Pj4+IFRoZSBvdGhlciBtb2RlIGlzIHRoZSBzdGFja2VkIG1vZGUgaW4g d2hpY2ggYm90aCB0aGUgZmxhc2hlcwo+ID4gPj4+Pj4+PiBzaGFyZSB0aGUgc2FtZSBTUEkgYnVz IGJ1dCBlYWNoIG9mIHRoZSBkZXZpY2UgY29udGFpbiBoYWxmIG9mCj4gdGhlCj4gPiBkYXRhLgo+ ID4gPj4+Pj4+PiBJbiB0aGlzIG1vZGUsIHRoZSBjb250cm9sbGVyIGRvZXMgbm90IGZvbGxvdyBD UyByZXF1ZXN0cyBidXQKPiA+ID4+Pj4+Pj4gaW5zdGVhZCBpbnRlcm5hbGx5IHdpcmVzIHRoZSB0 d28gQ1MgbGV2ZWxzIHdpdGggdGhlIHZhbHVlIG9mIHRoZQo+ID4gPj4+Pj4+PiBtb3N0IHNpZ25p ZmljYW50Cj4gPiA+Pj4+Pj4gYWRkcmVzcyBiaXQuCj4gPiA+Pj4+Pj4+IEZvciBzdXBwb3J0aW5n IGJvdGggdGhlc2UgbW9kZXMgU1BJIGNvcmUgbmVlZCB0byBiZSB1cGRhdGVkCj4gZm9yCj4gPiA+ Pj4+Pj4+IHByb3ZpZGluZyBtdWx0aXBsZSBDUyBmb3IgYSBzaW5nbGUgU1BJIGRldmljZS4KPiA+ ID4+Pj4+Pj4KPiA+ID4+Pj4+Pj4gRm9yIGFkZGluZyBtdWx0aSBDUyBzdXBwb3J0IHRoZSBTUEkg ZGV2aWNlIG5lZWQgdG8gYmUgYXdhcmUgb2YKPiA+ID4+Pj4+Pj4gYWxsIHRoZSBDUyB2YWx1ZXMu IFNvLCB0aGUgImNoaXBfc2VsZWN0IiBtZW1iZXIgaW4gdGhlCj4gPiA+Pj4+Pj4+IHNwaV9kZXZp Y2Ugc3RydWN0dXJlIGlzIG5vdyBhbiBhcnJheSB0aGF0IGhvbGRzIGFsbCB0aGUgQ1MgdmFsdWVz Lgo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiBzcGlfZGV2aWNlIHN0cnVjdHVyZSBub3cgaGFzIGEg ImNzX2luZGV4X21hc2siIG1lbWJlci4gVGhpcwo+IGFjdHMKPiA+ID4+Pj4+Pj4gYXMgYW4gaW5k ZXggdG8gdGhlIGNoaXBfc2VsZWN0IGFycmF5LiBJZiBudGggYml0IG9mCj4gPiA+Pj4+Pj4+IHNw aS0+Y3NfaW5kZXhfbWFzayBpcyBzZXQgdGhlbiB0aGUgZHJpdmVyIHdvdWxkIGFzc2VydCBzcGkt Cj4gPiA+Pj4gY2hpcF9zZWxlY3Rbbl0uCj4gPiA+Pj4+Pj4+IEluIHBhcmFsbGVsIG1vZGUgYWxs IHRoZSBjaGlwIHNlbGVjdHMgYXJlIGFzc2VydGVkL2RlLWFzc2VydGVkCj4gPiA+Pj4+Pj4+IHNp bXVsdGFuZW91c2x5IGFuZCBlYWNoIGJ5dGUgb2YgZGF0YSBpcyBzdG9yZWQgaW4gYm90aCBkZXZp Y2VzLAo+ID4gPj4+Pj4+PiB0aGUgZXZlbiBiaXRzIGluIG9uZSwgdGhlIG9kZCBiaXRzIGluIHRo ZSBvdGhlci4gVGhlIHNwbGl0IGlzCj4gPiA+Pj4+Pj4+IGF1dG9tYXRpY2FsbHkgaGFuZGxlZCBi eSB0aGUgR1FTUEkgY29udHJvbGxlci4gVGhlIEdRU1BJCj4gPiA+Pj4+Pj4+IGNvbnRyb2xsZXIg c3VwcG9ydHMgYSBtYXhpbXVtIG9mIHR3byBmbGFzaGVzIGNvbm5lY3RlZCBpbgo+ID4gPj4+Pj4+ PiBwYXJhbGxlbCBtb2RlLiBBIFNQSV9DT05UUk9MTEVSX01VTFRJX0NTIGZsYWcgYml0IGlzIGFk ZGVkCj4gaW4KPiA+ID4+Pj4+Pj4gdGhlIHNwaSBjb250cm9sbGVyIGZsYWdzLCB0aHJvdWdoIGN0 bHItPmZsYWdzIHRoZSBzcGkgY29yZSB3aWxsCj4gPiA+Pj4+Pj4+IG1ha2Ugc3VyZSB0aGF0IHRo ZSBjb250cm9sbGVyIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgbXVsdGlwbGUKPiBjaGlwCj4gPiBz ZWxlY3RzIGF0IG9uY2UuCj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+IEZvciBzdXBwb3J0aW5nIG11 bHRpcGxlIENTIHZpYSBHUElPIHRoZSBjc19ncGlvZCBtZW1iZXIgb2YgdGhlCj4gPiA+Pj4+Pj4+ IHNwaV9kZXZpY2Ugc3RydWN0dXJlIGlzIG5vdyBhbiBhcnJheSB0aGF0IGhvbGRzIHRoZSBncGlv Cj4gPiA+Pj4+Pj4+IGRlc2NyaXB0b3IgZm9yIGVhY2ggY2hpcHNlbGVjdC4KPiA+ID4+Pj4+Pj4K PiA+ID4+Pj4+Pj4gQ1MgR1BJTyBpcyBub3QgdGVzdGVkIGR1ZSB0byB1bmF2YWlsYWJpbGl0eSBv ZiBuZWNlc3NhcnkKPiA+ID4+Pj4+Pj4gaGFyZHdhcmUKPiA+ID4+IHNldHVwLgo+ID4gPj4+Pj4+ PiBTaWduZWQtb2ZmLWJ5OiBBbWl0IEt1bWFyIE1haGFwYXRyYSA8YW1pdC5rdW1hci0KPiA+ID4+ Pj4gbWFoYXBhdHJhQGFtZC5jb20+Cj4gPiA+Pj4+Pj4+IC0tLQo+ID4gPj4+Pj4+PiBIZWxsbyBA U3RlZmVuLAo+ID4gPj4+Pj4+PiBXZSByZXN0cnVjdHVyZWQgdGhlIFNQSSBjb3JlIGltcGxlbWVu dGF0aW9uLCBmb3IgaGFuZGxpbmcKPiA+ID4+Pj4+Pj4gYXJiaXRyYXJ5IG51bWJlciBvZiBkZXZp Y2VzIGNvbm5lY3RlZCBpbiBwYXJhbGxlbChtdWx0aS1jcykgb3IKPiA+ID4+Pj4+Pj4gc3RhY2tl ZAo+ID4gPj4gbW9kZS4KPiA+ID4+Pj4+Pj4gV2UgaGF2ZSB0ZXN0ZWQgdGhpcyB1cGRhdGVkIHBh dGNoIG9uIG5hdGl2ZS1jcyBzZXR1cCBidXQKPiA+ID4+Pj4+Pj4gY291bGRuJ3QgdGVzdCBjcy1n cGlvIGR1ZSB0byB1bmF2YWlsYWJpbGl0eSBvZiBhIHByb3BlciBzZXR1cC4KPiA+ID4+Pj4+Pj4g SWYgcG9zc2libGUsIGNvdWxkIHlvdSBwbGVhc2UgcmV0ZXN0IHRoZSBjcy1ncGlvIHVzZSBjYXNl IHdpdGgKPiA+ID4+Pj4+Pj4gdGhpcyB1cGRhdGVkIHBhdGNoIGFuZCBwcm92aWRlCj4gPiA+Pj4+ Pj4geW91ciBmZWVkYmFjay4KPiA+ID4+Pj4+Pgo+ID4gPj4+Pj4+IEhpLAo+ID4gPj4+Pj4+Cj4g PiA+Pj4+Pj4gSSB0ZXN0ZWQgdGhpcyBjaGFpbiBvbiAyIGRpZmZlcmVudCBzeXN0ZW1zIHVzaW5n IEdQSU9zIGFzIGNoaXAKPiA+ID4+Pj4+PiBzZWxlY3RzLCBhbmQgc2VlIHRoZSBzYW1lIGVycm9y IG9uIGJvdGg6Cj4gPiA+Pj4+Pj4gWyAgICAyLjg0MjA0NV0gcHhhMnh4LXNwaSBweGEyeHgtc3Bp LjY6IGNoaXBzZWxlY3QgMCBhbHJlYWR5IGluCj4gPiA+Pj4+Pj4gdXNlCj4gPiA+Pj4+Pj4KPiA+ ID4+Pj4+PiBMZXQgbWUga25vdyBpZiB5b3UgbmVlZCBhbnkgZnVydGhlciB0ZXN0aW5nLgo+ID4g Pj4+Pj4+Cj4gPiA+Pj4+Pj4gVGhhbmtzLAo+ID4gPj4+Pj4+Cj4gPiA+Pj4+Pj4gU3RlZmFuIEJp bmRpbmcKPiA+ID4+Pj4+Pgo+ID4gPj4+Pj4+PiAtLS0KPiA+ID4+Pj4+Pj4gICAgICBkcml2ZXJz L3NwaS9zcGkuYyAgICAgICB8IDE5Mgo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0KPiA+IC0tLS0KPiA+ID4+IC0tCj4gPiA+Pj4+Pj4+ICAgICAgaW5jbHVkZS9saW51eC9zcGkv c3BpLmggfCAgNTEgKysrKysrKystLS0KPiA+ID4+Pj4+Pj4gICAgICAyIGZpbGVzIGNoYW5nZWQs IDE5MSBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKPiA+ID4+Pj4+Pj4KPiA+ID4+Pj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaS5jIGIvZHJpdmVycy9zcGkvc3BpLmMgaW5k ZXgKPiA+ID4+Pj4+Pj4gOGVhZDdhY2I5OWYzLi5mZjY2MTQ3YmE5NWYgMTAwNjQ0Cj4gPiA+Pj4+ Pj4+IC0tLSBhL2RyaXZlcnMvc3BpL3NwaS5jCj4gPiA+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvc3Bp L3NwaS5jCj4gPiA+Pj4+Pj4+IEBAIC02MTIsMTAgKzYxMiwyMSBAQCBzdGF0aWMgaW50IHNwaV9k ZXZfY2hlY2soc3RydWN0Cj4gZGV2aWNlCj4gPiA+Pj4+Pj4+ICpkZXYsIHZvaWQKPiA+ID4+Pj4+ PiAqZGF0YSkKPiA+ID4+Pj4+Pj4gICAgICB7Cj4gPiA+Pj4+Pj4+ICAgICAgCXN0cnVjdCBzcGlf ZGV2aWNlICpzcGkgPSB0b19zcGlfZGV2aWNlKGRldik7Cj4gPiA+Pj4+Pj4+ICAgICAgCXN0cnVj dCBzcGlfZGV2aWNlICpuZXdfc3BpID0gZGF0YTsKPiA+ID4+Pj4+Pj4gLQo+ID4gPj4+Pj4+PiAt CWlmIChzcGktPmNvbnRyb2xsZXIgPT0gbmV3X3NwaS0+Y29udHJvbGxlciAmJgo+ID4gPj4+Pj4+ PiAtCSAgICBzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLCAwKSA9PQo+IHNwaV9nZXRfY2hpcHNlbGVj dChuZXdfc3BpLCAwKSkKPiA+ID4+Pj4+Pj4gLQkJcmV0dXJuIC1FQlVTWTsKPiA+ID4+Pj4+Pj4g KwlpbnQgaWR4LCBud19pZHg7Cj4gPiA+Pj4+Pj4+ICsJdTggY3MsIGNzX253Owo+ID4gPj4+Pj4+ PiArCj4gPiA+Pj4+Pj4+ICsJaWYgKHNwaS0+Y29udHJvbGxlciA9PSBuZXdfc3BpLT5jb250cm9s bGVyKSB7Cj4gPiA+Pj4+Pj4+ICsJCWZvciAoaWR4ID0gMDsgaWR4IDwgU1BJX0NTX0NOVF9NQVg7 IGlkeCsrKSB7Cj4gPiA+Pj4+Pj4+ICsJCQljcyA9IHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIGlk eCk7Cj4gPiA+Pj4+Pj4+ICsJCQlmb3IgKG53X2lkeCA9IDA7IG53X2lkeCA8Cj4gU1BJX0NTX0NO VF9NQVg7Cj4gPiA+Pj4+Pj4gbndfaWR4KyspIHsKPiA+ID4+Pj4+Pj4gKwkJCQljc19udyA9IHNw aV9nZXRfY2hpcHNlbGVjdChzcGksCj4gPiA+PiBud19pZHgpOwo+ID4gPj4+Pj4gVGhhbmsgeW91 IGZvciBkZWRpY2F0aW5nIHlvdXIgdGltZSB0byB0ZXN0IG15IHBhdGNoLgo+ID4gPj4+Pj4gQXMg cGVyIG15IGFuYWx5c2lzIHRoZSBlcnJvciBpcyByZXBvcnRlZCBmcm9tIGhlcmUgYXMgd2UgYXJl Cj4gPiA+Pj4+PiBzdXBwbHlpbmcgdGhlIGZvcm1lciBTUEkgZGV2aWNlIHN0cnVjdHVyZSB0byBy ZXRyaWV2ZSB0aGUgQ1MgdmFsdWUKPiA+ID4+Pj4+IGZvciB0aGUgbmV3IFNQSSBkZXZpY2VzLgo+ ID4gPj4+Pj4gVG8gZml4IHRoaXMsIGNvdWxkIHlvdSBraW5kbHkgc3Vic3RpdHV0ZSB0aGUgYWJv dmUgbGluZSB3aXRoCj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gY3NfbncgPSBzcGlfZ2V0X2NoaXBzZWxl Y3QobmV3X3NwaSwgbndfaWR4KTsKPiA+ID4+Pj4+Cj4gPiA+Pj4+PiBhbmQgcmVydW4geW91ciB0 ZXN0cz8KPiA+ID4+Pj4+IElmIGl0IHdvcmtzIGNvcnJlY3RseSwgSSB3aWxsIGluY29ycG9yYXRl IHRoaXMgZml4IGludG8gbXkKPiA+ID4+Pj4+IHVwY29taW5nIHNlcmllcy4KPiA+ID4+Pj4+Cj4g PiA+Pj4+PiBSZWdhcmRzLAo+ID4gPj4+Pj4gQW1pdAo+ID4gPj4gSGksCj4gPiA+Pgo+ID4gPj4g SSd2ZSBhdHRhY2hlZCBteSBsb2cuCj4gPiA+PiBJIG5vdGljZSB0aGF0IHlvdSBhZGQgYSBwcmlu dCB0byBvZl9zcGlfcGFyc2VfZHQsIGhvd2V2ZXIgc2luY2UgdGhlCj4gPiA+PiBsYXB0b3AgSSBh bSB1c2luZyBpcyBhbiB4ODYgbGFwdG9wLCBpdCB1c2VzIEFDUEkgcmF0aGVyIHRoYW4gT0YsIGFu ZAo+ID4gPj4gSSBkb24ndCB0aGluayB0aGlzIGZ1bmN0aW9uIGlzbnQgZXZlbiBjb21waWxlZCBp bi4KPiA+ID4gVGhhdOKAmXMgY29ycmVjdCwgSSBtaXNzZWQgaXQuCj4gPiA+IFVwb24gcmV2aWV3 aW5nIHRoZSBsb2dzLCBJIGRpc2NvdmVyZWQgdGhhdCBpbiB0aGUgQUNQSSBmbG93LCBJIGFtIG5v dAo+ID4gPiBpbml0aWFsaXppbmcgdGhlIHVudXNlZCBDU1tdIHRvIEZGLCBhcyBJIGFtIGRvaW5n IGluIHRoZSBPRiBmbG93Lgo+ID4gPiBDb25zZXF1ZW50bHksIGluIHRoZSBBQ1BJIGZsb3csIGFs bCB0aGUgdW51c2VkIENTW10gYXJlIGF1dG9tYXRpY2FsbHkKPiA+ID4gaW5pdGlhbGl6ZWQgdG8g MC4gRHVyaW5nIHRoZSBfX3NwaV9hZGRfZGV2aWNlIHByb2Nlc3MsIHRoZSBTUEkgY29yZQo+ID4g PiBmYWNlcyBkaWZmaWN1bHR5IGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gYSB2YWxpZCBDUyB2YWx1 ZSBvZiAwIGFuZCBhbgo+ID4gPiB1bnVzZWQgQ1MgdmFsdWUgb2YgMCwgbGVhZGluZyB0byBhIGZh aWx1cmUgaW4gdGhlIGRyaXZlciBwcm9iZS4KPiA+ID4KPiA+ID4gSW5jb3Jwb3JhdGluZyB0aGUg Zm9sbG93aW5nIG1vZGlmaWNhdGlvbnMgc2hvdWxkIHJlc29sdmUgdGhpcyBpc3N1ZS4KPiA+ID4g S2luZGx5IGFwcGx5IHRoZXNlIGNoYW5nZXMgb24gdG9wIG9mIDEvOCBhbmQgcmUtcnVuIHRoZSB0 ZXN0Lgo+ID4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLmMgYi9kcml2ZXJz L3NwaS9zcGkuYyBpbmRleAo+ID4gPiBmZjY2MTQ3YmE5NWYuLmQwMzAxYzE3ZDRmOCAxMDA2NDQK PiA+ID4gLS0tIGEvZHJpdmVycy9zcGkvc3BpLmMKPiA+ID4gKysrIGIvZHJpdmVycy9zcGkvc3Bp LmMKPiA+ID4gQEAgLTYxOSw3ICs2MTksNyBAQCBzdGF0aWMgaW50IHNwaV9kZXZfY2hlY2soc3Ry dWN0IGRldmljZSAqZGV2LAo+IHZvaWQKPiA+ICpkYXRhKQo+ID4gPiAgICAgICAgICAgICAgICAg IGZvciAoaWR4ID0gMDsgaWR4IDwgU1BJX0NTX0NOVF9NQVg7IGlkeCsrKSB7Cj4gPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICBjcyA9IHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIGlkeCk7Cj4g PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG53X2lkeCA9IDA7IG53X2lkeCA8IFNQ SV9DU19DTlRfTUFYOyBud19pZHgrKykgewo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNzX253ID0gc3BpX2dldF9jaGlwc2VsZWN0KHNwaSwgbndfaWR4KTsKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc19udyA9IHNwaV9nZXRfY2hpcHNlbGVjdChu ZXdfc3BpLAo+ID4gPiArIG53X2lkeCk7Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChjcyAhPSAweEZGICYmIGNzX253ICE9IDB4RkYgJiYgY3MgPT0gY3NfbncpIHsK PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRl diwgImNoaXBzZWxlY3QgJWQgYWxyZWFkeSBpbiB1c2VcbiIsCj4gPiBjc19udyk7Cj4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsgQEAg LTc2NCw2Cj4gPiA+ICs3NjQsNyBAQCBzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpX25ld19kZXZpY2Uo c3RydWN0IHNwaV9jb250cm9sbGVyCj4gKmN0bHIsCj4gPiA+ICAgewo+ID4gPiAgICAgICAgICBz dHJ1Y3Qgc3BpX2RldmljZSAgICAgICAqcHJveHk7Cj4gPiA+ICAgICAgICAgIGludCAgICAgICAg ICAgICAgICAgICAgIHN0YXR1czsKPiA+ID4gKyAgICAgICB1OCAgICAgICAgICAgICAgICAgICAg ICBpZHg7Cj4gPiA+Cj4gPiA+ICAgICAgICAgIC8qCj4gPiA+ICAgICAgICAgICAqIE5PVEU6ICBj YWxsZXIgZGlkIGFueSBjaGlwLT5idXNfbnVtIGNoZWNrcyBuZWNlc3NhcnkuCj4gPiA+IEBAIC03 NzksNiArNzgwLDkgQEAgc3RydWN0IHNwaV9kZXZpY2UgKnNwaV9uZXdfZGV2aWNlKHN0cnVjdAo+ ID4gPiBzcGlfY29udHJvbGxlciAqY3RsciwKPiA+ID4KPiA+ID4gICAgICAgICAgV0FSTl9PTihz dHJsZW4oY2hpcC0+bW9kYWxpYXMpID49IHNpemVvZihwcm94eS0+bW9kYWxpYXMpKTsKPiA+ID4K PiA+ID4gKyAgICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IFNQSV9DU19DTlRfTUFYOyBpZHgrKykK PiA+ID4gKyAgICAgICAgICAgICAgIHNwaV9zZXRfY2hpcHNlbGVjdChwcm94eSwgaWR4LCAweEZG KTsKPiA+ID4gKwo+ID4gPiAgICAgICAgICBzcGlfc2V0X2NoaXBzZWxlY3QocHJveHksIDAsIGNo aXAtPmNoaXBfc2VsZWN0KTsKPiA+ID4gICAgICAgICAgcHJveHktPm1heF9zcGVlZF9oeiA9IGNo aXAtPm1heF9zcGVlZF9oejsKPiA+ID4gICAgICAgICAgcHJveHktPm1vZGUgPSBjaGlwLT5tb2Rl Owo+ID4gPiBAQCAtMjUxNCw2ICsyNTE4LDcgQEAgc3RydWN0IHNwaV9kZXZpY2UKPiA+ICpzcGlf bmV3X2FuY2lsbGFyeV9kZXZpY2Uoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwKPiA+ID4gICAgICAg ICAgc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyID0gc3BpLT5jb250cm9sbGVyOwo+ID4gPiAg ICAgICAgICBzdHJ1Y3Qgc3BpX2RldmljZSAqYW5jaWxsYXJ5Owo+ID4gPiAgICAgICAgICBpbnQg cmMgPSAwOwo+ID4gPiArICAgICAgIHU4IGlkeDsKPiA+ID4KPiA+ID4gICAgICAgICAgLyogQWxs b2MgYW4gc3BpX2RldmljZSAqLwo+ID4gPiAgICAgICAgICBhbmNpbGxhcnkgPSBzcGlfYWxsb2Nf ZGV2aWNlKGN0bHIpOyBAQCAtMjUyNCw2ICsyNTI5LDkgQEAKPiA+ID4gc3RydWN0IHNwaV9kZXZp Y2UgKnNwaV9uZXdfYW5jaWxsYXJ5X2RldmljZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLAo+ID4g Pgo+ID4gPiAgICAgICAgICBzdHJzY3B5KGFuY2lsbGFyeS0+bW9kYWxpYXMsICJkdW1teSIsCj4g PiA+IHNpemVvZihhbmNpbGxhcnktPm1vZGFsaWFzKSk7Cj4gPiA+Cj4gPiA+ICsgICAgICAgZm9y IChpZHggPSAwOyBpZHggPCBTUElfQ1NfQ05UX01BWDsgaWR4KyspCj4gPiA+ICsgICAgICAgICAg ICAgICBzcGlfc2V0X2NoaXBzZWxlY3QoYW5jaWxsYXJ5LCBpZHgsIDB4RkYpOwo+ID4gPiArCj4g PiA+ICAgICAgICAgIC8qIFVzZSBwcm92aWRlZCBjaGlwLXNlbGVjdCBmb3IgYW5jaWxsYXJ5IGRl dmljZSAqLwo+ID4gPiAgICAgICAgICBzcGlfc2V0X2NoaXBzZWxlY3QoYW5jaWxsYXJ5LCAwLCBj aGlwX3NlbGVjdCk7Cj4gPiA+Cj4gPiA+IEBAIC0yNzMyLDYgKzI3NDAsNyBAQCBzdHJ1Y3Qgc3Bp X2RldmljZQo+ICphY3BpX3NwaV9kZXZpY2VfYWxsb2Moc3RydWN0Cj4gPiBzcGlfY29udHJvbGxl ciAqY3RsciwKPiA+ID4gICAgICAgICAgc3RydWN0IGFjcGlfc3BpX2xvb2t1cCBsb29rdXAgPSB7 fTsKPiA+ID4gICAgICAgICAgc3RydWN0IHNwaV9kZXZpY2UgKnNwaTsKPiA+ID4gICAgICAgICAg aW50IHJldDsKPiA+ID4gKyAgICAgICB1OCBpZHg7Cj4gPiA+Cj4gPiA+ICAgICAgICAgIGlmICgh Y3RsciAmJiBpbmRleCA9PSAtMSkKPiA+ID4gICAgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BU UigtRUlOVkFMKTsgQEAgLTI3NjcsNiArMjc3Niw5IEBAIHN0cnVjdAo+ID4gPiBzcGlfZGV2aWNl ICphY3BpX3NwaV9kZXZpY2VfYWxsb2Moc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLAo+ID4g PiAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gPiAgICAgICAg ICB9Cj4gPiA+Cj4gPiA+ICsgICAgICAgZm9yIChpZHggPSAwOyBpZHggPCBTUElfQ1NfQ05UX01B WDsgaWR4KyspCj4gPiA+ICsgICAgICAgICAgICAgICBzcGlfc2V0X2NoaXBzZWxlY3Qoc3BpLCBp ZHgsIDB4RkYpOwo+ID4gPiArCj4gPiA+ICAgICAgICAgIEFDUElfQ09NUEFOSU9OX1NFVCgmc3Bp LT5kZXYsIGFkZXYpOwo+ID4gPiAgICAgICAgICBzcGktPm1heF9zcGVlZF9oeiAgICAgICA9IGxv b2t1cC5tYXhfc3BlZWRfaHo7Cj4gPiA+ICAgICAgICAgIHNwaS0+bW9kZSAgICAgICAgICAgICAg IHw9IGxvb2t1cC5tb2RlOwo+ID4gPgo+ID4gPiBSZWdhcmRzLAo+ID4gPiBBbWl0Cj4gPiA+Cj4g Pgo+ID4gSGksCj4gPgo+ID4gSSBubyBsb25nZXIgc2VlIHRoYXQgZXJyb3IsIG9yIGFueSBlcnJv cnMgcHJpbnRlZCBmcm9tIFNQSSwgaG93ZXZlciwgYWxsIG9mCj4gdGhlCj4gPiB0cmFuc2FjdGlv bnMgYXJlIG5vdyBicm9rZW4uCj4gPiBFdmVyeSB0cmFuc2FjdGlvbiBzZWVtcyB0byByZWFkIGJh Y2sgMHgwLCBvbiBhbGwgU1BJIGRldmljZXMsIHdoZXRoZXIKPiBuYXRpdmUKPiA+IENTIG9yIEdQ SU8gQ1MsIGFuZCBJIGRvbnQgc2VlIGl0IHRvZ2dsaW5nIHRoZSBDUyBHUElPIGFueW1vcmUuCj4g Cj4gSSBiZWxpZXZlIHRoZSBpc3N1ZSBzdGVtcyBmcm9tIHRoZSBmYWN0IHRoYXQgaW4gdGhlIEFD UEkgcGF0Y2gsCj4gc3BpLT5jc19pbmRleF9tYXNrIGlzIG5vdCBzZXQgdG8gMHgwMS4gQXMgYSBy ZXN1bHQsIGluIHNwaV9zZXRfY3MsCj4gaXQgZmFpbHMgdG8gbWVldCB0aGUgY29uZGl0aW9uIHRo YXQgZ292ZXJucyB0aGUgQ1MgYXNzZXQgY29kZSBzbmlwcGV0Lgo+IEluIHRoZSBmb2xsb3dpbmcg Y29kZSBkaWZmLCBJJ3ZlIGluY2x1ZGVkIHRoZSBuZWNlc3NhcnkgZml4IGFsb25nIHdpdGgKPiB0 aGUgZWFybGllciBjaGFuZ2VzIG9uIHRvcCBvZiAxLzguIEkndmUgYWxzbyBpbmNsdWRlZCBhIGNv dXBsZSBvZiBkZWJ1Zwo+IHByaW50cyB0byBhaWQgaW4gZnVydGhlciBkZWJ1Z2dpbmcgaW4gY2Fz ZSBteSBhbmFseXNpcyBpcyBpbmNvcnJlY3QuCj4gUGxlYXNlIGFwcGx5IHRoZXNlIGNoYW5nZXMg b24gdG9wIG9mIDEvOCBhbmQgcmUtcnVuIHRoZSB0ZXN0Lgo+IAoKSGksCgpJJ3ZlIHRlc3RlZCB0 aGlzIG9uIHNldmVyYWwgbGFwdG9wcywgYW5kIGl0IGFsbCBzZWVtcyB0byB3b3JrIG5vdy4KClRl c3RlZC1ieTogU3RlZmFuIEJpbmRpbmcgPHNiaW5kaW5nQG9wZW5zb3VyY2UuY2lycnVzLmNvbT4K ClRoYW5rcywKU3RlZmFuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGkuYyBiL2RyaXZl cnMvc3BpL3NwaS5jCj4gaW5kZXggZmY2NjE0N2JhOTVmLi5iMmUwMzVjM2Q0OTQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9zcGkvc3BpLmMKPiArKysgYi9kcml2ZXJzL3NwaS9zcGkuYwo+IEBAIC02 MTksNyArNjE5LDcgQEAgc3RhdGljIGludCBzcGlfZGV2X2NoZWNrKHN0cnVjdCBkZXZpY2UgKmRl diwgdm9pZAo+ICpkYXRhKQo+ICAgICAgICAgICAgICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IFNQ SV9DU19DTlRfTUFYOyBpZHgrKykgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIGNzID0gc3Bp X2dldF9jaGlwc2VsZWN0KHNwaSwgaWR4KTsKPiAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig KG53X2lkeCA9IDA7IG53X2lkeCA8IFNQSV9DU19DTlRfTUFYOyBud19pZHgrKykgewo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NfbncgPSBzcGlfZ2V0X2NoaXBzZWxlY3Qoc3Bp LCBud19pZHgpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NfbncgPSBzcGlf Z2V0X2NoaXBzZWxlY3QobmV3X3NwaSwgbndfaWR4KTsKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChjcyAhPSAweEZGICYmIGNzX253ICE9IDB4RkYgJiYgY3MgPT0gY3Nfbncp IHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYs ICJjaGlwc2VsZWN0ICVkIGFscmVhZHkgaW4gdXNlXG4iLAo+IGNzX253KTsKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKPiBAQCAtNzY0LDYg Kzc2NCw3IEBAIHN0cnVjdCBzcGlfZGV2aWNlICpzcGlfbmV3X2RldmljZShzdHJ1Y3QKPiBzcGlf Y29udHJvbGxlciAqY3RsciwKPiAgewo+ICAgICAgICAgc3RydWN0IHNwaV9kZXZpY2UgICAgICAg KnByb3h5Owo+ICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOwo+ICsgICAg ICAgdTggICAgICAgICAgICAgICAgICAgICAgaWR4Owo+IAo+ICAgICAgICAgLyoKPiAgICAgICAg ICAqIE5PVEU6ICBjYWxsZXIgZGlkIGFueSBjaGlwLT5idXNfbnVtIGNoZWNrcyBuZWNlc3Nhcnku Cj4gQEAgLTc3OSw2ICs3ODAsOSBAQCBzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpX25ld19kZXZpY2Uo c3RydWN0Cj4gc3BpX2NvbnRyb2xsZXIgKmN0bHIsCj4gCj4gICAgICAgICBXQVJOX09OKHN0cmxl bihjaGlwLT5tb2RhbGlhcykgPj0gc2l6ZW9mKHByb3h5LT5tb2RhbGlhcykpOwo+IAo+ICsgICAg ICAgZm9yIChpZHggPSAwOyBpZHggPCBTUElfQ1NfQ05UX01BWDsgaWR4KyspCj4gKyAgICAgICAg ICAgICAgIHNwaV9zZXRfY2hpcHNlbGVjdChwcm94eSwgaWR4LCAweEZGKTsKPiArCj4gICAgICAg ICBzcGlfc2V0X2NoaXBzZWxlY3QocHJveHksIDAsIGNoaXAtPmNoaXBfc2VsZWN0KTsKPiAgICAg ICAgIHByb3h5LT5tYXhfc3BlZWRfaHogPSBjaGlwLT5tYXhfc3BlZWRfaHo7Cj4gICAgICAgICBw cm94eS0+bW9kZSA9IGNoaXAtPm1vZGU7Cj4gQEAgLTc4Nyw2ICs3OTEsNyBAQCBzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpX25ld19kZXZpY2Uoc3RydWN0Cj4gc3BpX2NvbnRyb2xsZXIgKmN0bHIsCj4g ICAgICAgICBwcm94eS0+ZGV2LnBsYXRmb3JtX2RhdGEgPSAodm9pZCAqKSBjaGlwLT5wbGF0Zm9y bV9kYXRhOwo+ICAgICAgICAgcHJveHktPmNvbnRyb2xsZXJfZGF0YSA9IGNoaXAtPmNvbnRyb2xs ZXJfZGF0YTsKPiAgICAgICAgIHByb3h5LT5jb250cm9sbGVyX3N0YXRlID0gTlVMTDsKPiArICAg ICAgIHByb3h5LT5jc19pbmRleF9tYXNrID0gMHgwMTsKPiAKPiAgICAgICAgIGlmIChjaGlwLT5z d25vZGUpIHsKPiAgICAgICAgICAgICAgICAgc3RhdHVzID0gZGV2aWNlX2FkZF9zb2Z0d2FyZV9u b2RlKCZwcm94eS0+ZGV2LCBjaGlwLQo+ID5zd25vZGUpOwo+IEBAIC0xMDI0LDYgKzEwMjksOCBA QCBzdGF0aWMgdm9pZCBzcGlfc2V0X2NzKHN0cnVjdCBzcGlfZGV2aWNlICpzcGksCj4gYm9vbCBl bmFibGUsIGJvb2wgZm9yY2UpCj4gICAgICAgICAgICAgICAgIGlmICghc3BpLT5jb250cm9sbGVy LT5zZXRfY3NfdGltaW5nICYmICFhY3RpdmF0ZSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBz cGlfZGVsYXlfZXhlYygmc3BpLT5jc19ob2xkLCBOVUxMKTsKPiAKPiArICAgICAgICAgICAgICAg cHJpbnRrKCIlcygpIFslZF0gc3BpLT5jc19pbmRleF9tYXNrID09IFslZF1cbiIsX19mdW5jX18s Cj4gX19MSU5FX18sIHNwaS0+Y3NfaW5kZXhfbWFzayk7Cj4gKwo+ICAgICAgICAgICAgICAgICBp ZiAoIShzcGktPm1vZGUgJiBTUElfTk9fQ1MpKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg LyoKPiAgICAgICAgICAgICAgICAgICAgICAgICAgKiBIaXN0b3JpY2FsbHkgQUNQSSBoYXMgbm8g bWVhbnMgb2YgdGhlIEdQSU8gcG9sYXJpdHkgYW5kCj4gQEAgLTEwMzgsNiArMTA0NSw3IEBAIHN0 YXRpYyB2b2lkIHNwaV9zZXRfY3Moc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwKPiBib29sIGVuYWJs ZSwgYm9vbCBmb3JjZSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGlkeCA9IDA7IGlk eCA8IFNQSV9DU19DTlRfTUFYOyBpZHgrKykgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCgoc3BpLT5jc19pbmRleF9tYXNrID4+IGlkeCkgJiAweDAxKSAmJgo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaV9nZXRfY3NncGlvZChzcGksIGlkeCkp IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoIiVzKCkgWyVk XSBpZHggPT0gWyVkXVxuIixfX2Z1bmNfXywgX19MSU5FX18sCj4gaWR4KTsKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc19hY3BpX2NvbXBhbmlvbigmc3Bp LT5kZXYpKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChzcGlfZ2V0X2NzZ3Bpb2Qoc3BpLAo+IGlkeCksCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICFlbmFibGUpOwo+IEBAIC0yNTE0LDYgKzI1MjIsNyBAQCBzdHJ1Y3Qg c3BpX2RldmljZQo+ICpzcGlfbmV3X2FuY2lsbGFyeV9kZXZpY2Uoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSwKPiAgICAgICAgIHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RsciA9IHNwaS0+Y29udHJv bGxlcjsKPiAgICAgICAgIHN0cnVjdCBzcGlfZGV2aWNlICphbmNpbGxhcnk7Cj4gICAgICAgICBp bnQgcmMgPSAwOwo+ICsgICAgICAgdTggaWR4Owo+IAo+ICAgICAgICAgLyogQWxsb2MgYW4gc3Bp X2RldmljZSAqLwo+ICAgICAgICAgYW5jaWxsYXJ5ID0gc3BpX2FsbG9jX2RldmljZShjdGxyKTsK PiBAQCAtMjUyNCwxMiArMjUzMywxNiBAQCBzdHJ1Y3Qgc3BpX2RldmljZQo+ICpzcGlfbmV3X2Fu Y2lsbGFyeV9kZXZpY2Uoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwKPiAKPiAgICAgICAgIHN0cnNj cHkoYW5jaWxsYXJ5LT5tb2RhbGlhcywgImR1bW15Iiwgc2l6ZW9mKGFuY2lsbGFyeS0+bW9kYWxp YXMpKTsKPiAKPiArICAgICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IFNQSV9DU19DTlRfTUFYOyBp ZHgrKykKPiArICAgICAgICAgICAgICAgc3BpX3NldF9jaGlwc2VsZWN0KGFuY2lsbGFyeSwgaWR4 LCAweEZGKTsKPiArCj4gICAgICAgICAvKiBVc2UgcHJvdmlkZWQgY2hpcC1zZWxlY3QgZm9yIGFu Y2lsbGFyeSBkZXZpY2UgKi8KPiAgICAgICAgIHNwaV9zZXRfY2hpcHNlbGVjdChhbmNpbGxhcnks IDAsIGNoaXBfc2VsZWN0KTsKPiAKPiAgICAgICAgIC8qIFRha2Ugb3ZlciBTUEkgbW9kZS9zcGVl ZCBmcm9tIFNQSSBtYWluIGRldmljZSAqLwo+ICAgICAgICAgYW5jaWxsYXJ5LT5tYXhfc3BlZWRf aHogPSBzcGktPm1heF9zcGVlZF9oejsKPiAgICAgICAgIGFuY2lsbGFyeS0+bW9kZSA9IHNwaS0+ bW9kZTsKPiArICAgICAgIGFuY2lsbGFyeS0+Y3NfaW5kZXhfbWFzayA9IDB4MDE7Cj4gCj4gICAg ICAgICBXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmN0bHItPmFkZF9sb2NrKSk7Cj4gCj4gQEAg LTI3MzIsNiArMjc0NSw3IEBAIHN0cnVjdCBzcGlfZGV2aWNlICphY3BpX3NwaV9kZXZpY2VfYWxs b2Moc3RydWN0Cj4gc3BpX2NvbnRyb2xsZXIgKmN0bHIsCj4gICAgICAgICBzdHJ1Y3QgYWNwaV9z cGlfbG9va3VwIGxvb2t1cCA9IHt9Owo+ICAgICAgICAgc3RydWN0IHNwaV9kZXZpY2UgKnNwaTsK PiAgICAgICAgIGludCByZXQ7Cj4gKyAgICAgICB1OCBpZHg7Cj4gCj4gICAgICAgICBpZiAoIWN0 bHIgJiYgaW5kZXggPT0gLTEpCj4gICAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FSU5W QUwpOwo+IEBAIC0yNzY3LDEyICsyNzgxLDE2IEBAIHN0cnVjdCBzcGlfZGV2aWNlCj4gKmFjcGlf c3BpX2RldmljZV9hbGxvYyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsCj4gICAgICAgICAg ICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICAgICAgICAgfQo+IAo+ICsgICAgICAg Zm9yIChpZHggPSAwOyBpZHggPCBTUElfQ1NfQ05UX01BWDsgaWR4KyspCj4gKyAgICAgICAgICAg ICAgIHNwaV9zZXRfY2hpcHNlbGVjdChzcGksIGlkeCwgMHhGRik7Cj4gKwo+ICAgICAgICAgQUNQ SV9DT01QQU5JT05fU0VUKCZzcGktPmRldiwgYWRldik7Cj4gICAgICAgICBzcGktPm1heF9zcGVl ZF9oeiAgICAgICA9IGxvb2t1cC5tYXhfc3BlZWRfaHo7Cj4gICAgICAgICBzcGktPm1vZGUgICAg ICAgICAgICAgICB8PSBsb29rdXAubW9kZTsKPiAgICAgICAgIHNwaS0+aXJxICAgICAgICAgICAg ICAgID0gbG9va3VwLmlycTsKPiAgICAgICAgIHNwaS0+Yml0c19wZXJfd29yZCAgICAgID0gbG9v a3VwLmJpdHNfcGVyX3dvcmQ7Cj4gICAgICAgICBzcGlfc2V0X2NoaXBzZWxlY3Qoc3BpLCAwLCBs b29rdXAuY2hpcF9zZWxlY3QpOwo+ICsgICAgICAgc3BpLT5jc19pbmRleF9tYXNrICAgICAgPSAw eDAxOwo+IAo+ICAgICAgICAgcmV0dXJuIHNwaTsKPiAgfQo+IAo+IFJlZ2FyZHMsCj4gQW1pdAo+ IAo+ID4KPiA+IFRoYW5rcywKPiA+Cj4gPiBTdGVmYW4KPiA+Cj4gPiA+PiBUaGFua3MsCj4gPiA+ Pgo+ID4gPj4gU3RlZmFuCj4gPiA+Pgo+ID4gPj4+PiBIaSwKPiA+ID4+Pj4KPiA+ID4+Pj4gSSBz dGlsbCBzZWUgdGhlIHNhbWUgZXJyb3I6Cj4gPiA+Pj4+Cj4gPiA+Pj4+IFsgICAgMi43NDg1NDZd IHB4YTJ4eC1zcGkgcHhhMnh4LXNwaS42OiBjaGlwc2VsZWN0IDAgYWxyZWFkeSBpbiB1c2UKPiA+ ID4+PiBUaGFuayB5b3UgZm9yIHRoZSBxdWljayB0ZXN0aW5nLiBGb3IgZnVydGhlciBhbmFseXNp cyBJIGhhdmUKPiA+ID4+PiBpbmNvcnBvcmF0ZWQgYWRkaXRpb25hbCBkZWJ1ZyBwcmludHMgb24g dG9wIG9mIDEvOCBwYXRjaC4gVGhlCj4gPiA+Pj4gY29ycmVzcG9uZGluZyBkaWZmIGlzIHNoYXJl ZCBiZWxvdy4gS2luZGx5IGltcGxlbWVudCB0aGUgc3BlY2lmaWVkCj4gPiA+Pj4gY2hhbmdlcywg cmVydW4geW91ciB0ZXN0IGFuZCBzaGFyZSB0aGUga2VybmVsIGxvZ3MuCj4gPiA+Pj4KPiA+ID4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLmMgYi9kcml2ZXJzL3NwaS9zcGkuYyBpbmRl eAo+ID4gPj4+IGZmNjYxNDdiYTk1Zi4uN2Y1OWVhODE1OTNkIDEwMDY0NAo+ID4gPj4+IC0tLSBh L2RyaXZlcnMvc3BpL3NwaS5jCj4gPiA+Pj4gKysrIGIvZHJpdmVycy9zcGkvc3BpLmMKPiA+ID4+ PiBAQCAtNjE4LDggKzYxOCwxMCBAQCBzdGF0aWMgaW50IHNwaV9kZXZfY2hlY2soc3RydWN0IGRl dmljZSAqZGV2LAo+ID4gPj4+IHZvaWQKPiA+ID4+ICpkYXRhKQo+ID4gPj4+ICAgICAgICAgICBp ZiAoc3BpLT5jb250cm9sbGVyID09IG5ld19zcGktPmNvbnRyb2xsZXIpIHsKPiA+ID4+PiAgICAg ICAgICAgICAgICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IFNQSV9DU19DTlRfTUFYOyBpZHgrKykg ewo+ID4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MgPSBzcGlfZ2V0X2NoaXBzZWxl Y3Qoc3BpLCBpZHgpOwo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHByaW50aygiJXMo KSBbJWRdIENTWyVkXSA9IFslZF1cbiIsCj4gPiA+Pj4gKyBfX2Z1bmNfXywgX19MSU5FX18sIGlk eCwgY3MpOwo+ID4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChud19pZHggPSAw OyBud19pZHggPCBTUElfQ1NfQ05UX01BWDsKPiBud19pZHgrKykgewo+ID4gPj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3NfbncgPSBzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLCBu d19pZHgpOwo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NfbncgPSBz cGlfZ2V0X2NoaXBzZWxlY3QobmV3X3NwaSwgbndfaWR4KTsKPiA+ID4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHByaW50aygiJXMoKSBbJWRdIENTX05FV1slZF0gPQo+ID4gPj4+ ICsgWyVkXVxuIiwgX19mdW5jX18sIF9fTElORV9fLCBud19pZHgsIGNzX253KTsKPiA+ID4+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNzICE9IDB4RkYgJiYgY3Nfbncg IT0gMHhGRiAmJiBjcyA9PSBjc19udykgewo+ID4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiY2hpcHNlbGVjdAo+ID4gPj4+ICVkIGFs cmVhZHkgaW4gdXNlXG4iLAo+ID4gPj4gY3NfbncpOwo+ID4gPj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7IEBAIC02NTksOAo+ID4gPj4+ ICs2NjEsMTAgQEAgc3RhdGljIGludCBfX3NwaV9hZGRfZGV2aWNlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCj4gPiA+Pj4gICAgICAgICAgICAqLwo+ID4gPj4+ICAgICAgICAgICBmb3IgKGlkeCA9 IDA7IGlkeCA8IFNQSV9DU19DTlRfTUFYOyBpZHgrKykgewo+ID4gPj4+ICAgICAgICAgICAgICAg ICAgIGNzID0gc3BpX2dldF9jaGlwc2VsZWN0KHNwaSwgaWR4KTsKPiA+ID4+PiArICAgICAgICAg ICAgICAgcHJpbnRrKCIlcygpIFslZF0gQ1NbJWRdID0gWyVkXVxuIiwgX19mdW5jX18sCj4gPiA+ Pj4gKyBfX0xJTkVfXywgaWR4LCBjcyk7Cj4gPiA+Pj4gICAgICAgICAgICAgICAgICAgZm9yIChu d19pZHggPSBpZHggKyAxOyBud19pZHggPCBTUElfQ1NfQ05UX01BWDsKPiBud19pZHgrKykgewo+ ID4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgbndfY3MgPSBzcGlfZ2V0X2NoaXBzZWxl Y3Qoc3BpLCBud19pZHgpOwo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHByaW50aygi JXMoKSBbJWRdIENTX05FV1slZF0gPSBbJWRdXG4iLAo+ID4gPj4+ICsgX19mdW5jX18sIF9fTElO RV9fLCBud19pZHgsIG53X2NzKTsKPiA+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChjcyAhPSAweEZGICYmIG53X2NzICE9IDB4RkYgJiYgY3MgPT0gbndfY3MpIHsKPiA+ID4+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJjaGlwc2VsZWN0 ICVkIGFscmVhZHkgaW4gdXNlXG4iLAo+IG53X2NzKTsKPiA+ID4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsgQEAgLTI0MDEsNiArMjQwNSw5Cj4gPiA+ Pj4gQEAgc3RhdGljIGludCBvZl9zcGlfcGFyc2VfZHQoc3RydWN0IHNwaV9jb250cm9sbGVyICpj dGxyLCBzdHJ1Y3QKPiBzcGlfZGV2aWNlCj4gPiAqc3BpLAo+ID4gPj4+ICAgICAgICAgICBmb3Ig KGlkeCA9IDA7IGlkeCA8IHJjOyBpZHgrKykKPiA+ID4+PiAgICAgICAgICAgICAgICAgICBzcGlf c2V0X2NoaXBzZWxlY3Qoc3BpLCBpZHgsIGNzW2lkeF0pOwo+ID4gPj4+Cj4gPiA+Pj4gKyAgICAg ICBmb3IgKGlkeCA9IDA7IGlkeCA8IFNQSV9DU19DTlRfTUFYOyBpZHgrKykKPiA+ID4+PiArICAg ICAgICAgICAgICAgcHJpbnRrKCIlcygpIFslZF0gQ1NbJWRdID0gWyVkXVxuIiwgX19mdW5jX18s Cj4gPiA+Pj4gKyBfX0xJTkVfXywgaWR4LCBzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLCBpZHgpKTsK PiA+ID4+PiArCj4gPiA+Pj4gICAgICAgICAgIC8qIHNwaS0+Y2hpcF9zZWxlY3RbaV0gZ2l2ZXMg dGhlIGNvcnJlc3BvbmRpbmcgcGh5c2ljYWwgQ1MgZm9yCj4gbG9naWNhbAo+ID4gQ1MgaQo+ID4g Pj4+ICAgICAgICAgICAgKiBsb2dpY2FsIENTIG51bWJlciBpcyByZXByZXNlbnRlZCBieSBzZXR0 aW5nIHRoZSBpdGggYml0Cj4gPiA+Pj4gaW4gc3BpLSBjc19pbmRleF9tYXNrCj4gPiA+Pj4gICAg ICAgICAgICAqIFNvLCBmb3IgZXhhbXBsZSwgaWYgc3BpLT5jc19pbmRleF9tYXNrID0gMHgwMSB0 aGVuCj4gPiA+Pj4gbG9naWNhbCBDUyBudW1iZXIgaXMgMCBhbmQKPiA+ID4+Pgo+ID4gPj4+IFJl Z2FyZHMsCj4gPiA+Pj4gQW1pdAo+ID4gPj4+Cj4gPiA+Pj4+IFRoYW5rcywKPiA+ID4+Pj4KPiA+ ID4+Pj4gU3RlZmFuCj4gPiA+Pj4+Cj4gPiA+Pj4+Pj4+ICsJCQkJaWYgKGNzICE9IDB4RkYgJiYg Y3NfbncgIT0gMHhGRgo+ICYmIGNzCj4gPiA+PiA9PQo+ID4gPj4+Pj4+IGNzX253KSB7Cj4gPiA+ Pj4+Pj4+ICsJCQkJCWRldl9lcnIoZGV2LCAiY2hpcHNlbGVjdAo+ICVkCj4gPiA+PiBhbHJlYWR5 IGluCj4gPiA+Pj4+Pj4gdXNlXG4iLCBjc19udyk7Cj4gPiA+Pj4+Pj4+ICsJCQkJCXJldHVybiAt RUJVU1k7Cj4gPiA+Pj4+Pj4+ICsJCQkJfQo+ID4gPj4+Pj4+PiArCQkJfQo+ID4gPj4+Pj4+PiAr CQl9Cj4gPiA+Pj4+Pj4+ICsJfQo+ID4gPj4+Pj4+PiAgICAgIAlyZXR1cm4gMDsKPiA+ID4+Pj4+ Pj4gICAgICB9Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+IEBAIC02MjksMTMgKzY0MCwzMiBAQCBz dGF0aWMgaW50IF9fc3BpX2FkZF9kZXZpY2Uoc3RydWN0Cj4gPiA+Pj4+Pj4+IHNwaV9kZXZpY2UK PiA+ID4+Pj4gKnNwaSkKPiA+ID4+Pj4+Pj4gICAgICB7Cj4gPiA+Pj4+Pj4+ICAgICAgCXN0cnVj dCBzcGlfY29udHJvbGxlciAqY3RsciA9IHNwaS0+Y29udHJvbGxlcjsKPiA+ID4+Pj4+Pj4gICAg ICAJc3RydWN0IGRldmljZSAqZGV2ID0gY3Rsci0+ZGV2LnBhcmVudDsKPiA+ID4+Pj4+Pj4gLQlp bnQgc3RhdHVzOwo+ID4gPj4+Pj4+PiArCWludCBzdGF0dXMsIGlkeCwgbndfaWR4Owo+ID4gPj4+ Pj4+PiArCXU4IGNzLCBud19jczsKPiA+ID4+Pj4+Pj4gKwo+ID4gPj4+Pj4+PiArCWZvciAoaWR4 ID0gMDsgaWR4IDwgU1BJX0NTX0NOVF9NQVg7IGlkeCsrKSB7Cj4gPiA+Pj4+Pj4+ICsJCS8qIENo aXBzZWxlY3RzIGFyZSBudW1iZXJlZCAwLi5tYXg7IHZhbGlkYXRlLiAqLwo+ID4gPj4+Pj4+PiAr CQljcyA9IHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIGlkeCk7Cj4gPiA+Pj4+Pj4+ICsJCWlmIChj cyAhPSAweEZGICYmIGNzID49IGN0bHItPm51bV9jaGlwc2VsZWN0KSB7Cj4gPiA+Pj4+Pj4+ICsJ CQlkZXZfZXJyKGRldiwgImNzJWQgPj0gbWF4ICVkXG4iLAo+ID4gPj4+Pj4+IHNwaV9nZXRfY2hp cHNlbGVjdChzcGksIGlkeCksCj4gPiA+Pj4+Pj4+ICsJCQkJY3Rsci0+bnVtX2NoaXBzZWxlY3Qp Owo+ID4gPj4+Pj4+PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+Pj4+Pj4+ICsJCX0KPiA+ID4+ Pj4+Pj4gKwl9Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+IC0JLyogQ2hpcHNlbGVjdHMgYXJlIG51 bWJlcmVkIDAuLm1heDsgdmFsaWRhdGUuICovCj4gPiA+Pj4+Pj4+IC0JaWYgKHNwaV9nZXRfY2hp cHNlbGVjdChzcGksIDApID49IGN0bHItPm51bV9jaGlwc2VsZWN0KSB7Cj4gPiA+Pj4+Pj4+IC0J CWRldl9lcnIoZGV2LCAiY3MlZCA+PSBtYXggJWRcbiIsCj4gPiBzcGlfZ2V0X2NoaXBzZWxlY3Qo c3BpLCAwKSwKPiA+ID4+Pj4+Pj4gLQkJCWN0bHItPm51bV9jaGlwc2VsZWN0KTsKPiA+ID4+Pj4+ Pj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+Pj4+Pj4+ICsJLyoKPiA+ID4+Pj4+Pj4gKwkgKiBN YWtlIHN1cmUgdGhhdCBtdWx0aXBsZSBsb2dpY2FsIENTIGRvZXNuJ3QgbWFwIHRvIHRoZQo+IHNh bWUKPiA+ID4+Pj4+PiBwaHlzaWNhbCBDUy4KPiA+ID4+Pj4+Pj4gKwkgKiBGb3IgZXhhbXBsZSwg c3BpLT5jaGlwX3NlbGVjdFswXSAhPSBzcGktPmNoaXBfc2VsZWN0WzFdCj4gYW5kCj4gPiA+PiBz byBvbi4KPiA+ID4+Pj4+Pj4gKwkgKi8KPiA+ID4+Pj4+Pj4gKwlmb3IgKGlkeCA9IDA7IGlkeCA8 IFNQSV9DU19DTlRfTUFYOyBpZHgrKykgewo+ID4gPj4+Pj4+PiArCQljcyA9IHNwaV9nZXRfY2hp cHNlbGVjdChzcGksIGlkeCk7Cj4gPiA+Pj4+Pj4+ICsJCWZvciAobndfaWR4ID0gaWR4ICsgMTsg bndfaWR4IDwgU1BJX0NTX0NOVF9NQVg7Cj4gPiA+PiBud19pZHgrKykgewo+ID4gPj4+Pj4+PiAr CQkJbndfY3MgPSBzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLCBud19pZHgpOwo+ID4gPj4+Pj4+PiAr CQkJaWYgKGNzICE9IDB4RkYgJiYgbndfY3MgIT0gMHhGRiAmJiBjcyA9PQo+ID4gPj4gbndfY3Mp IHsKPiA+ID4+Pj4+Pj4gKwkJCQlkZXZfZXJyKGRldiwgImNoaXBzZWxlY3QgJWQKPiBhbHJlYWR5 IGluCj4gPiA+PiB1c2VcbiIsCj4gPiA+Pj4+Pj4gbndfY3MpOwo+ID4gPj4+Pj4+PiArCQkJCXJl dHVybiAtRUJVU1k7Cj4gPiA+Pj4+Pj4+ICsJCQl9Cj4gPiA+Pj4+Pj4+ICsJCX0KPiA+ID4+Pj4+ Pj4gICAgICAJfQo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiAgICAgIAkvKiBTZXQgdGhlIGJ1cyBJ RCBzdHJpbmcgKi8gQEAgLTY0NywxMSArNjc3LDggQEAgc3RhdGljCj4gPiA+Pj4+Pj4+IGludCBf X3NwaV9hZGRfZGV2aWNlKHN0cnVjdCBzcGlfZGV2aWNlCj4gPiA+Pj4+ICpzcGkpCj4gPiA+Pj4+ Pj4+ICAgICAgCSAqIGl0cyBjb25maWd1cmF0aW9uLgo+ID4gPj4+Pj4+PiAgICAgIAkgKi8KPiA+ ID4+Pj4+Pj4gICAgICAJc3RhdHVzID0gYnVzX2Zvcl9lYWNoX2Rldigmc3BpX2J1c190eXBlLCBO VUxMLCBzcGksCj4gPiA+PiBzcGlfZGV2X2NoZWNrKTsKPiA+ID4+Pj4+Pj4gLQlpZiAoc3RhdHVz KSB7Cj4gPiA+Pj4+Pj4+IC0JCWRldl9lcnIoZGV2LCAiY2hpcHNlbGVjdCAlZCBhbHJlYWR5IGlu IHVzZVxuIiwKPiA+ID4+Pj4+Pj4gLQkJCQlzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLCAwKSk7Cj4g PiA+Pj4+Pj4+ICsJaWYgKHN0YXR1cykKPiA+ID4+Pj4+Pj4gICAgICAJCXJldHVybiBzdGF0dXM7 Cj4gPiA+Pj4+Pj4+IC0JfQo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiAgICAgIAkvKiBDb250cm9s bGVyIG1heSB1bnJlZ2lzdGVyIGNvbmN1cnJlbnRseSAqLwo+ID4gPj4+Pj4+PiAgICAgIAlpZiAo SVNfRU5BQkxFRChDT05GSUdfU1BJX0RZTkFNSUMpICYmIEBAIC02NTksOAo+ID4gPj4gKzY4Niwx NSBAQAo+ID4gPj4+Pj4+IHN0YXRpYwo+ID4gPj4+Pj4+PiBpbnQgX19zcGlfYWRkX2RldmljZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQo+ID4gPj4+Pj4+PiAgICAgIAkJcmV0dXJuIC1FTk9ERVY7 Cj4gPiA+Pj4+Pj4+ICAgICAgCX0KPiA+ID4+Pj4+Pj4KPiA+ID4+Pj4+Pj4gLQlpZiAoY3Rsci0+ Y3NfZ3Bpb2RzKQo+ID4gPj4+Pj4+PiAtCQlzcGlfc2V0X2NzZ3Bpb2Qoc3BpLCAwLCBjdGxyLQo+ ID4gPmNzX2dwaW9kc1tzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLAo+ID4gPj4+Pj4+IDApXSk7Cj4g PiA+Pj4+Pj4+ICsJaWYgKGN0bHItPmNzX2dwaW9kcykgewo+ID4gPj4+Pj4+PiArCQl1OCBjczsK PiA+ID4+Pj4+Pj4gKwo+ID4gPj4+Pj4+PiArCQlmb3IgKGlkeCA9IDA7IGlkeCA8IFNQSV9DU19D TlRfTUFYOyBpZHgrKykgewo+ID4gPj4+Pj4+PiArCQkJY3MgPSBzcGlfZ2V0X2NoaXBzZWxlY3Qo c3BpLCBpZHgpOwo+ID4gPj4+Pj4+PiArCQkJaWYgKGNzICE9IDB4RkYpCj4gPiA+Pj4+Pj4+ICsJ CQkJc3BpX3NldF9jc2dwaW9kKHNwaSwgaWR4LCBjdGxyLQo+ID4gPj4+IGNzX2dwaW9kc1tjc10p Owo+ID4gPj4+Pj4+PiArCQl9Cj4gPiA+Pj4+Pj4+ICsJfQo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+ PiAgICAgIAkvKgo+ID4gPj4+Pj4+PiAgICAgIAkgKiBEcml2ZXJzIG1heSBtb2RpZnkgdGhpcyBp bml0aWFsIGkvbyBzZXR1cCwgYnV0IHdpbGwgQEAKPiA+ID4+Pj4+Pj4gLTcwMSw2Cj4gPiA+Pj4+ Pj4+ICs3MzUsOSBAQCBpbnQgc3BpX2FkZF9kZXZpY2Uoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK PiA+ID4+Pj4+Pj4gICAgICAJc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyID0gc3BpLT5jb250 cm9sbGVyOwo+ID4gPj4+Pj4+PiAgICAgIAlpbnQgc3RhdHVzOwo+ID4gPj4+Pj4+Pgo+ID4gPj4+ Pj4+PiArCS8qIFNldCB0aGUgYnVzIElEIHN0cmluZyAqLwo+ID4gPj4+Pj4+PiArCXNwaV9kZXZf c2V0X25hbWUoc3BpKTsKPiA+ID4+Pj4+Pj4gKwo+ID4gPj4+Pj4+PiAgICAgIAltdXRleF9sb2Nr KCZjdGxyLT5hZGRfbG9jayk7Cj4gPiA+Pj4+Pj4+ICAgICAgCXN0YXR1cyA9IF9fc3BpX2FkZF9k ZXZpY2Uoc3BpKTsKPiA+ID4+Pj4+Pj4gICAgICAJbXV0ZXhfdW5sb2NrKCZjdGxyLT5hZGRfbG9j ayk7IEBAIC05NDIsMzIgKzk3OSw1MQo+IEBACj4gPiA+PiBzdGF0aWMKPiA+ID4+Pj4+Pj4gdm9p ZCBzcGlfcmVzX3JlbGVhc2Uoc3RydWN0IHNwaV9jb250cm9sbGVyCj4gPiA+Pj4+Pj4gKmN0bHIs IHN0cnVjdCBzcGlfbWVzc2FnZSAqbWVzCj4gPiA+Pj4+Pj4+ICAgICAgfQo+ID4gPj4+Pj4+Pgo+ ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+Pj4+Pj4+IC0tCj4gPiA+Pj4+Pj4+ IC0tCj4gPiA+Pj4+Pj4+IC0tCj4gPiA+Pj4+Pj4+IC0tLS0tKi8KPiA+ID4+Pj4+Pj4gK3N0YXRp YyBpbmxpbmUgYm9vbCBzcGlfaXNfbGFzdF9jcyhzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKSB7Cj4g PiA+Pj4+Pj4+ICsJdTggaWR4Owo+ID4gPj4+Pj4+PiArCWJvb2wgbGFzdCA9IGZhbHNlOwo+ID4g Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+ICsJZm9yIChpZHggPSAwOyBpZHggPCBTUElfQ1NfQ05UX01B WDsgaWR4KyspIHsKPiA+ID4+Pj4+Pj4gKwkJaWYgKChzcGktPmNzX2luZGV4X21hc2sgPj4gaWR4 KSAmIDB4MDEpIHsKPiA+ID4+Pj4+Pj4gKwkJCWlmIChzcGktPmNvbnRyb2xsZXItPmxhc3RfY3Nb aWR4XSA9PQo+ID4gPj4+Pj4+IHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIGlkeCkpCj4gPiA+Pj4+ Pj4+ICsJCQkJbGFzdCA9IHRydWU7Cj4gPiA+Pj4+Pj4+ICsJCX0KPiA+ID4+Pj4+Pj4gKwl9Cj4g PiA+Pj4+Pj4+ICsJcmV0dXJuIGxhc3Q7Cj4gPiA+Pj4+Pj4+ICt9Cj4gPiA+Pj4+Pj4+ICsKPiA+ ID4+Pj4+Pj4KPiA+ID4+Pj4+Pj4gICAgICBzdGF0aWMgdm9pZCBzcGlfc2V0X2NzKHN0cnVjdCBz cGlfZGV2aWNlICpzcGksIGJvb2wgZW5hYmxlLAo+IGJvb2wKPiA+IGZvcmNlKQo+ID4gPj4+Pj4+ PiAgICAgIHsKPiA+ID4+Pj4+Pj4gICAgICAJYm9vbCBhY3RpdmF0ZSA9IGVuYWJsZTsKPiA+ID4+ Pj4+Pj4gKwl1OCBpZHg7Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ICAgICAgCS8qCj4gPiA+Pj4+ Pj4+ICAgICAgCSAqIEF2b2lkIGNhbGxpbmcgaW50byB0aGUgZHJpdmVyIChvciBkb2luZyBkZWxh eXMpIGlmIHRoZQo+ID4gPj4+Pj4+PiBjaGlwCj4gPiA+PiBzZWxlY3QKPiA+ID4+Pj4+Pj4gICAg ICAJICogaXNuJ3QgYWN0dWFsbHkgY2hhbmdpbmcgZnJvbSB0aGUgbGFzdCB0aW1lIHRoaXMgd2Fz Cj4gY2FsbGVkLgo+ID4gPj4+Pj4+PiAgICAgIAkgKi8KPiA+ID4+Pj4+Pj4gLQlpZiAoIWZvcmNl ICYmICgoZW5hYmxlICYmIHNwaS0+Y29udHJvbGxlci0+bGFzdF9jcyA9PQo+ID4gPj4+Pj4+IHNw aV9nZXRfY2hpcHNlbGVjdChzcGksIDApKSB8fAo+ID4gPj4+Pj4+PiAtCQkgICAgICAgKCFlbmFi bGUgJiYgc3BpLT5jb250cm9sbGVyLT5sYXN0X2NzICE9Cj4gPiA+Pj4+Pj4gc3BpX2dldF9jaGlw c2VsZWN0KHNwaSwgMCkpKSAmJgo+ID4gPj4+Pj4+PiArCWlmICghZm9yY2UgJiYgKChlbmFibGUg JiYgc3BpLT5jb250cm9sbGVyLQo+ID5sYXN0X2NzX2luZGV4X21hc2sKPiA+ID4+ID09Cj4gPiA+ Pj4+Pj4+ICtzcGktCj4gPiA+Pj4+Pj4+IGNzX2luZGV4X21hc2sgJiYKPiA+ID4+Pj4+Pj4gKwkJ CXNwaV9pc19sYXN0X2NzKHNwaSkpIHx8Cj4gPiA+Pj4+Pj4+ICsJCSAgICAgICAoIWVuYWJsZSAm JiBzcGktPmNvbnRyb2xsZXItCj4gPmxhc3RfY3NfaW5kZXhfbWFzawo+ID4gPj4gPT0gc3BpLQo+ ID4gPj4+Pj4+PiBjc19pbmRleF9tYXNrICYmCj4gPiA+Pj4+Pj4+ICsJCQkhc3BpX2lzX2xhc3Rf Y3Moc3BpKSkpICYmCj4gPiA+Pj4+Pj4+ICAgICAgCSAgICAoc3BpLT5jb250cm9sbGVyLT5sYXN0 X2NzX21vZGVfaGlnaCA9PSAoc3BpLT5tb2RlICYKPiA+ID4+Pj4+PiBTUElfQ1NfSElHSCkpKQo+ ID4gPj4+Pj4+PiAgICAgIAkJcmV0dXJuOwo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiAgICAgIAl0 cmFjZV9zcGlfc2V0X2NzKHNwaSwgYWN0aXZhdGUpOwo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiAt CXNwaS0+Y29udHJvbGxlci0+bGFzdF9jcyA9IGVuYWJsZSA/IHNwaV9nZXRfY2hpcHNlbGVjdChz cGksCj4gMCkgOiAtCj4gPiAxOwo+ID4gPj4+Pj4+PiArCXNwaS0+Y29udHJvbGxlci0+bGFzdF9j c19pbmRleF9tYXNrID0gc3BpLQo+ID5jc19pbmRleF9tYXNrOwo+ID4gPj4+Pj4+PiArCWZvciAo aWR4ID0gMDsgaWR4IDwgU1BJX0NTX0NOVF9NQVg7IGlkeCsrKQo+ID4gPj4+Pj4+PiArCQlzcGkt PmNvbnRyb2xsZXItPmxhc3RfY3NbaWR4XSA9IGVuYWJsZSA/Cj4gPiA+Pj4+Pj4+ICtzcGlfZ2V0 X2NoaXBzZWxlY3Qoc3BpLAo+ID4gPj4+Pj4+IDApCj4gPiA+Pj4+Pj4+ICs6IC0xOwo+ID4gPj4+ Pj4+PiAgICAgIAlzcGktPmNvbnRyb2xsZXItPmxhc3RfY3NfbW9kZV9oaWdoID0gc3BpLT5tb2Rl ICYKPiA+ID4+IFNQSV9DU19ISUdIOwo+ID4gPj4+Pj4+PiAtCWlmICgoc3BpX2dldF9jc2dwaW9k KHNwaSwgMCkgfHwgIXNwaS0+Y29udHJvbGxlci0KPiA+c2V0X2NzX3RpbWluZykKPiA+ICYmCj4g PiA+Pj4+Pj4gIWFjdGl2YXRlKQo+ID4gPj4+Pj4+PiAtCQlzcGlfZGVsYXlfZXhlYygmc3BpLT5j c19ob2xkLCBOVUxMKTsKPiA+ID4+Pj4+Pj4gLQo+ID4gPj4+Pj4+PiAgICAgIAlpZiAoc3BpLT5t b2RlICYgU1BJX0NTX0hJR0gpCj4gPiA+Pj4+Pj4+ICAgICAgCQllbmFibGUgPSAhZW5hYmxlOwo+ ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiAtCWlmIChzcGlfZ2V0X2NzZ3Bpb2Qoc3BpLCAwKSkgewo+ ID4gPj4+Pj4+PiArCWlmIChzcGlfaXNfY3NncGlvZChzcGkpKSB7Cj4gPiA+Pj4+Pj4+ICsJCWlm ICghc3BpLT5jb250cm9sbGVyLT5zZXRfY3NfdGltaW5nICYmICFhY3RpdmF0ZSkKPiA+ID4+Pj4+ Pj4gKwkJCXNwaV9kZWxheV9leGVjKCZzcGktPmNzX2hvbGQsIE5VTEwpOwo+ID4gPj4+Pj4+PiAr Cj4gPiA+Pj4+Pj4+ICAgICAgCQlpZiAoIShzcGktPm1vZGUgJiBTUElfTk9fQ1MpKSB7Cj4gPiA+ Pj4+Pj4+ICAgICAgCQkJLyoKPiA+ID4+Pj4+Pj4gICAgICAJCQkgKiBIaXN0b3JpY2FsbHkgQUNQ SSBoYXMgbm8gbWVhbnMgb2YgdGhlCj4gR1BJTwo+ID4gPj4gcG9sYXJpdHkKPiA+ID4+Pj4+PiBh bmQgQEAKPiA+ID4+Pj4+Pj4gLTk3OSwyNiArMTAzNSwzOCBAQCBzdGF0aWMgdm9pZCBzcGlfc2V0 X2NzKHN0cnVjdCBzcGlfZGV2aWNlCj4gPiA+Pj4+Pj4+ICpzcGksIGJvb2wKPiA+ID4+Pj4+PiBl bmFibGUsIGJvb2wgZm9yY2UpCj4gPiA+Pj4+Pj4+ICAgICAgCQkJICogYW1iaWd1aXR5LiBUaGF0 J3Mgd2h5IHdlIHVzZSBlbmFibGUsCj4gdGhhdAo+ID4gPj4gdGFrZXMKPiA+ID4+Pj4+PiBTUElf Q1NfSElHSAo+ID4gPj4+Pj4+PiAgICAgIAkJCSAqIGludG8gYWNjb3VudC4KPiA+ID4+Pj4+Pj4g ICAgICAJCQkgKi8KPiA+ID4+Pj4+Pj4gLQkJCWlmIChoYXNfYWNwaV9jb21wYW5pb24oJnNwaS0+ ZGV2KSkKPiA+ID4+Pj4+Pj4gLQo+ID4gPj4+Pj4+IAlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAo c3BpX2dldF9jc2dwaW9kKHNwaSwgMCksCj4gIWVuYWJsZSk7Cj4gPiA+Pj4+Pj4+IC0JCQllbHNl Cj4gPiA+Pj4+Pj4+IC0JCQkJLyogUG9sYXJpdHkgaGFuZGxlZCBieSBHUElPCj4gbGlicmFyeSAq Lwo+ID4gPj4+Pj4+PiAtCj4gPiA+Pj4+Pj4gCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChzcGlf Z2V0X2NzZ3Bpb2Qoc3BpLCAwKSwKPiBhY3RpdmF0ZSk7Cj4gPiA+Pj4+Pj4+ICsJCQlmb3IgKGlk eCA9IDA7IGlkeCA8IFNQSV9DU19DTlRfTUFYOwo+IGlkeCsrKSB7Cj4gPiA+Pj4+Pj4+ICsJCQkJ aWYgKCgoc3BpLT5jc19pbmRleF9tYXNrID4+IGlkeCkKPiAmCj4gPiA+PiAweDAxKSAmJgo+ID4g Pj4+Pj4+PiArCQkJCSAgICBzcGlfZ2V0X2NzZ3Bpb2Qoc3BpLCBpZHgpKSB7Cj4gPiA+Pj4+Pj4+ ICsJCQkJCWlmCj4gKGhhc19hY3BpX2NvbXBhbmlvbigmc3BpLQo+ID4gPj4+IGRldikpCj4gPiA+ Pj4+Pj4+ICsKPiA+ID4+Pj4+PiAJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHNwaV9nZXRfY3Nn cGlvZChzcGksIGlkeCksCj4gPiA+Pj4+Pj4+ICsKPiA+ID4+Pj4+PiAhZW5hYmxlKTsKPiA+ID4+ Pj4+Pj4gKwkJCQkJZWxzZQo+ID4gPj4+Pj4+PiArCQkJCQkJLyogUG9sYXJpdHkKPiBoYW5kbGVk IGJ5Cj4gPiA+PiBHUElPCj4gPiA+Pj4+Pj4gbGlicmFyeSAqLwo+ID4gPj4+Pj4+PiArCj4gPiA+ Pj4+Pj4gCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChzcGlfZ2V0X2NzZ3Bpb2Qoc3BpLCBpZHgp LAo+ID4gPj4+Pj4+PiArCj4gPiA+Pj4+Pj4gYWN0aXZhdGUpOwo+ID4gPj4+Pj4+PiArCj4gPiA+ Pj4+Pj4+ICsJCQkJCWlmIChhY3RpdmF0ZSkKPiA+ID4+Pj4+Pj4gKwo+IAlzcGlfZGVsYXlfZXhl Yygmc3BpLQo+ID4gPj4+Pj4+PiBjc19zZXR1cCwgTlVMTCk7Cj4gPiA+Pj4+Pj4+ICsJCQkJCWVs c2UKPiA+ID4+Pj4+Pj4gKwo+IAlzcGlfZGVsYXlfZXhlYygmc3BpLQo+ID4gPj4+Pj4+PiBjc19p bmFjdGl2ZSwgTlVMTCk7Cj4gPiA+Pj4+Pj4+ICsJCQkJfQo+ID4gPj4+Pj4+PiArCQkJfQo+ID4g Pj4+Pj4+PiAgICAgIAkJfQo+ID4gPj4+Pj4+PiAgICAgIAkJLyogU29tZSBTUEkgbWFzdGVycyBu ZWVkIGJvdGggR1BJTyBDUyAmCj4gPiA+PiBzbGF2ZV9zZWxlY3QgKi8KPiA+ID4+Pj4+Pj4gICAg ICAJCWlmICgoc3BpLT5jb250cm9sbGVyLT5mbGFncyAmCj4gPiA+PiBTUElfQ09OVFJPTExFUl9H UElPX1NTKSAmJgo+ID4gPj4+Pj4+PiAgICAgIAkJICAgIHNwaS0+Y29udHJvbGxlci0+c2V0X2Nz KQo+ID4gPj4+Pj4+PiAgICAgIAkJCXNwaS0+Y29udHJvbGxlci0+c2V0X2NzKHNwaSwgIWVuYWJs ZSk7Cj4gPiA+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4gKwkJaWYgKCFzcGktPmNvbnRyb2xsZXItPnNl dF9jc190aW1pbmcpIHsKPiA+ID4+Pj4+Pj4gKwkJCWlmIChhY3RpdmF0ZSkKPiA+ID4+Pj4+Pj4g KwkJCQlzcGlfZGVsYXlfZXhlYygmc3BpLT5jc19zZXR1cCwKPiA+ID4+IE5VTEwpOwo+ID4gPj4+ Pj4+PiArCQkJZWxzZQo+ID4gPj4+Pj4+PiArCQkJCXNwaV9kZWxheV9leGVjKCZzcGktCj4gPmNz X2luYWN0aXZlLAo+ID4gPj4gTlVMTCk7Cj4gPiA+Pj4+Pj4+ICsJCX0KPiA+ID4+Pj4+Pj4gICAg ICAJfSBlbHNlIGlmIChzcGktPmNvbnRyb2xsZXItPnNldF9jcykgewo+ID4gPj4+Pj4+PiAgICAg IAkJc3BpLT5jb250cm9sbGVyLT5zZXRfY3Moc3BpLCAhZW5hYmxlKTsKPiA+ID4+Pj4+Pj4gICAg ICAJfQo+ID4gPj4+Pj4+PiAtCj4gPiA+Pj4+Pj4+IC0JaWYgKHNwaV9nZXRfY3NncGlvZChzcGks IDApIHx8ICFzcGktPmNvbnRyb2xsZXItCj4gPnNldF9jc190aW1pbmcpIHsKPiA+ID4+Pj4+Pj4g LQkJaWYgKGFjdGl2YXRlKQo+ID4gPj4+Pj4+PiAtCQkJc3BpX2RlbGF5X2V4ZWMoJnNwaS0+Y3Nf c2V0dXAsIE5VTEwpOwo+ID4gPj4+Pj4+PiAtCQllbHNlCj4gPiA+Pj4+Pj4+IC0JCQlzcGlfZGVs YXlfZXhlYygmc3BpLT5jc19pbmFjdGl2ZSwgTlVMTCk7Cj4gPiA+Pj4+Pj4+IC0JfQo+ID4gPj4+ Pj4+PiAgICAgIH0KPiA+ID4+Pj4+Pj4KPiA+ID4+Pj4+Pj4gICAgICAjaWZkZWYgQ09ORklHX0hB U19ETUEKPiA+ID4+Pj4+Pj4gQEAgLTIyMjIsOCArMjI5MCw4IEBAIHN0YXRpYyB2b2lkCj4gPiA+ Pj4+Pj4+IG9mX3NwaV9wYXJzZV9kdF9jc19kZWxheShzdHJ1Y3QKPiA+ID4+Pj4+PiBkZXZpY2Vf bm9kZSAqbmMsCj4gPiA+Pj4+Pj4+ICAgICAgc3RhdGljIGludCBvZl9zcGlfcGFyc2VfZHQoc3Ry dWN0IHNwaV9jb250cm9sbGVyICpjdGxyLAo+ID4gPj4+Pj4+PiBzdHJ1Y3Qgc3BpX2RldmljZQo+ ID4gPj4+PiAqc3BpLAo+ID4gPj4+Pj4+PiAgICAgIAkJCSAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAq bmMpCj4gPiA+Pj4+Pj4+ICAgICAgewo+ID4gPj4+Pj4+PiAtCXUzMiB2YWx1ZTsKPiA+ID4+Pj4+ Pj4gLQlpbnQgcmM7Cj4gPiA+Pj4+Pj4+ICsJdTMyIHZhbHVlLCBjc1tTUElfQ1NfQ05UX01BWF07 Cj4gPiA+Pj4+Pj4+ICsJaW50IHJjLCBpZHg7Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ICAgICAg CS8qIE1vZGUgKGNsb2NrIHBoYXNlL3BvbGFyaXR5L2V0Yy4pICovCj4gPiA+Pj4+Pj4+ICAgICAg CWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobmMsICJzcGktY3BoYSIpKSBAQCAtMjI5NSwxNAo+ ID4gPj4+Pj4+PiArMjM2Myw1Mgo+ID4gPj4+Pj4+IEBACj4gPiA+Pj4+Pj4+IHN0YXRpYyBpbnQg b2Zfc3BpX3BhcnNlX2R0KHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3Rsciwgc3RydWN0Cj4gPiA+ Pj4+Pj4+IHNwaV9kZXZpY2UKPiA+ID4+ICpzcGksCj4gPiA+Pj4+Pj4+ICAgICAgCQlyZXR1cm4g MDsKPiA+ID4+Pj4+Pj4gICAgICAJfQo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiArCWlmIChjdGxy LT5udW1fY2hpcHNlbGVjdCA+IFNQSV9DU19DTlRfTUFYKSB7Cj4gPiA+Pj4+Pj4+ICsJCWRldl9l cnIoJmN0bHItPmRldiwgIk5vLiBvZiBDUyBpcyBtb3JlIHRoYW4gbWF4Lgo+IG5vLgo+ID4gPj4g b2YKPiA+ID4+Pj4+PiBzdXBwb3J0ZWQgQ1NcbiIpOwo+ID4gPj4+Pj4+PiArCQlyZXR1cm4gLUVJ TlZBTDsKPiA+ID4+Pj4+Pj4gKwl9Cj4gPiA+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4gKwkvKgo+ID4g Pj4+Pj4+PiArCSAqIFplcm8oMCkgaXMgYSB2YWxpZCBwaHlzaWNhbCBDUyB2YWx1ZSBhbmQgY2Fu IGJlIGxvY2F0ZWQgYXQKPiA+ID4+IGFueQo+ID4gPj4+Pj4+PiArCSAqIGxvZ2ljYWwgQ1MgaW4g dGhlIHNwaS0+Y2hpcF9zZWxlY3RbXS4gSWYgYWxsIHRoZSBwaHlzaWNhbCBDUwo+ID4gPj4+Pj4+ PiArCSAqIGFyZSBpbml0aWFsaXplZCB0byAwIHRoZW4gSXQgd291bGQgYmUgZGlmZmljdWx0IHRv Cj4gZGlmZmVyZW50aWF0ZQo+ID4gPj4+Pj4+PiArCSAqIGJldHdlZW4gYSB2YWxpZCBwaHlzaWNh bCBDUyAwICYgYW4gdW51c2VkIGxvZ2ljYWwgQ1MKPiB3aG9zZQo+ID4gPj4+Pj4+IHBoeXNpY2Fs Cj4gPiA+Pj4+Pj4+ICsJICogQ1MgY2FuIGJlIDAuIEFzIGEgc29sdXRpb24gdG8gdGhpcyBpc3N1 ZSBpbml0aWFsaXplIGFsbCB0aGUKPiA+ID4+Pj4+Pj4gK0NTIHRvCj4gPiA+PiAweEZGLgo+ID4g Pj4+Pj4+PiArCSAqIE5vdyBhbGwgdGhlIHVudXNlZCBsb2dpY2FsIENTIHdpbGwgaGF2ZSAweEZG IHBoeXNpY2FsIENTCj4gPiA+Pj4+Pj4+ICt2YWx1ZSAmIGNhbgo+ID4gPj4+Pj4+IGJlCj4gPiA+ Pj4+Pj4+ICsJICogaWdub3JlIHdoaWxlIHBlcmZvcm1pbmcgcGh5c2ljYWwgQ1MgdmFsaWRpdHkg Y2hlY2tzLgo+ID4gPj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+PiArCWZvciAoaWR4ID0gMDsgaWR4 IDwgU1BJX0NTX0NOVF9NQVg7IGlkeCsrKQo+ID4gPj4+Pj4+PiArCQlzcGlfc2V0X2NoaXBzZWxl Y3Qoc3BpLCBpZHgsIDB4RkYpOwo+ID4gPj4+Pj4+PiArCj4gPiA+Pj4+Pj4+ICAgICAgCS8qIERl dmljZSBhZGRyZXNzICovCj4gPiA+Pj4+Pj4+IC0JcmMgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihu YywgInJlZyIsICZ2YWx1ZSk7Cj4gPiA+Pj4+Pj4+IC0JaWYgKHJjKSB7Cj4gPiA+Pj4+Pj4+ICsJ cmMgPSBvZl9wcm9wZXJ0eV9yZWFkX3ZhcmlhYmxlX3UzMl9hcnJheShuYywgInJlZyIsCj4gJmNz WzBdLAo+ID4gPj4gMSwKPiA+ID4+Pj4+Pj4gKwo+IFNQSV9DU19DTlRfTUFYKTsKPiA+ID4+Pj4+ Pj4gKwlpZiAocmMgPCAwKSB7Cj4gPiA+Pj4+Pj4+ICAgICAgCQlkZXZfZXJyKCZjdGxyLT5kZXYs ICIlcE9GIGhhcyBubyB2YWxpZCAncmVnJwo+IHByb3BlcnR5Cj4gPiA+Pj4+Pj4gKCVkKVxuIiwK PiA+ID4+Pj4+Pj4gICAgICAJCQluYywgcmMpOwo+ID4gPj4+Pj4+PiAgICAgIAkJcmV0dXJuIHJj Owo+ID4gPj4+Pj4+PiAgICAgIAl9Cj4gPiA+Pj4+Pj4+IC0Jc3BpX3NldF9jaGlwc2VsZWN0KHNw aSwgMCwgdmFsdWUpOwo+ID4gPj4+Pj4+PiArCWlmIChyYyA+IGN0bHItPm51bV9jaGlwc2VsZWN0 KSB7Cj4gPiA+Pj4+Pj4+ICsJCWRldl9lcnIoJmN0bHItPmRldiwgIiVwT0YgaGFzIG51bWJlciBv ZiBDUyA+Cj4gY3Rsci0KPiA+ID4+Pj4+Pj4gbnVtX2NoaXBzZWxlY3QgKCVkKVxuIiwKPiA+ID4+ Pj4+Pj4gKwkJCW5jLCByYyk7Cj4gPiA+Pj4+Pj4+ICsJCXJldHVybiByYzsKPiA+ID4+Pj4+Pj4g Kwl9Cj4gPiA+Pj4+Pj4+ICsJaWYgKChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobmMsICJwYXJhbGxl bC1tZW1vcmllcyIpKSAmJgo+ID4gPj4+Pj4+PiArCSAgICAoIShjdGxyLT5mbGFncyAmIFNQSV9D T05UUk9MTEVSX01VTFRJX0NTKSkpIHsKPiA+ID4+Pj4+Pj4gKwkJZGV2X2VycigmY3Rsci0+ZGV2 LCAiU1BJIGNvbnRyb2xsZXIgZG9lc24ndAo+IHN1cHBvcnQKPiA+ID4+IG11bHRpCj4gPiA+Pj4+ Pj4gQ1NcbiIpOwo+ID4gPj4+Pj4+PiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4+Pj4+Pj4gKwl9 Cj4gPiA+Pj4+Pj4+ICsJZm9yIChpZHggPSAwOyBpZHggPCByYzsgaWR4KyspCj4gPiA+Pj4+Pj4+ ICsJCXNwaV9zZXRfY2hpcHNlbGVjdChzcGksIGlkeCwgY3NbaWR4XSk7Cj4gPiA+Pj4+Pj4+ICsK PiA+ID4+Pj4+Pj4gKwkvKiBzcGktPmNoaXBfc2VsZWN0W2ldIGdpdmVzIHRoZSBjb3JyZXNwb25k aW5nIHBoeXNpY2FsIENTCj4gZm9yCj4gPiA+Pj4+Pj4+ICtsb2dpY2FsIENTCj4gPiA+Pj4+Pj4g aQo+ID4gPj4+Pj4+PiArCSAqIGxvZ2ljYWwgQ1MgbnVtYmVyIGlzIHJlcHJlc2VudGVkIGJ5IHNl dHRpbmcgdGhlIGl0aCBiaXQgaW4KPiA+ID4+Pj4+Pj4gK3NwaS0KPiA+ID4+Pj4+Pj4gY3NfaW5k ZXhfbWFzawo+ID4gPj4+Pj4+PiArCSAqIFNvLCBmb3IgZXhhbXBsZSwgaWYgc3BpLT5jc19pbmRl eF9tYXNrID0gMHgwMSB0aGVuCj4gbG9naWNhbAo+ID4gPj4gQ1MKPiA+ID4+Pj4+PiBudW1iZXIg aXMgMCBhbmQKPiA+ID4+Pj4+Pj4gKwkgKiBzcGktPmNoaXBfc2VsZWN0WzBdIHdpbGwgZ2l2ZSB0 aGUgcGh5c2ljYWwgQ1MuCj4gPiA+Pj4+Pj4+ICsJICogQnkgZGVmYXVsdCBzcGktPmNoaXBfc2Vs ZWN0WzBdIHdpbGwgaG9sZCB0aGUgcGh5c2ljYWwgQ1MKPiA+ID4+Pj4+Pj4gK251bWJlciBzbywK PiA+ID4+Pj4+PiBzZXQKPiA+ID4+Pj4+Pj4gKwkgKiBzcGktPmNzX2luZGV4X21hc2sgYXMgMHgw MS4KPiA+ID4+Pj4+Pj4gKwkgKi8KPiA+ID4+Pj4+Pj4gKwlzcGktPmNzX2luZGV4X21hc2sgPSAw eDAxOwo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiAgICAgIAkvKiBEZXZpY2Ugc3BlZWQgKi8KPiA+ ID4+Pj4+Pj4gICAgICAJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihuYywgInNwaS1tYXgtZnJl cXVlbmN5IiwKPiA+ID4+Pj4+Pj4gJnZhbHVlKSkgQEAKPiA+ID4+Pj4+Pj4gLTMxMDAsNiArMzIw Niw3IEBAIGludCBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QKPiA+ID4+Pj4+Pj4gc3Bp X2NvbnRyb2xsZXIKPiA+ID4+ICpjdGxyKQo+ID4gPj4+Pj4+PiAgICAgIAlzdHJ1Y3QgYm9hcmRp bmZvCSpiaTsKPiA+ID4+Pj4+Pj4gICAgICAJaW50CQkJZmlyc3RfZHluYW1pYzsKPiA+ID4+Pj4+ Pj4gICAgICAJaW50CQkJc3RhdHVzOwo+ID4gPj4+Pj4+PiArCWludAkJCWlkeDsKPiA+ID4+Pj4+ Pj4KPiA+ID4+Pj4+Pj4gICAgICAJaWYgKCFkZXYpCj4gPiA+Pj4+Pj4+ICAgICAgCQlyZXR1cm4g LUVOT0RFVjsKPiA+ID4+Pj4+Pj4gQEAgLTMxNjQsNyArMzI3MSw4IEBAIGludCBzcGlfcmVnaXN0 ZXJfY29udHJvbGxlcihzdHJ1Y3QKPiA+ID4+Pj4+Pj4gc3BpX2NvbnRyb2xsZXIKPiA+ID4+Pj4+ PiAqY3RscikKPiA+ID4+Pj4+Pj4gICAgICAJfQo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiAgICAg IAkvKiBTZXR0aW5nIGxhc3RfY3MgdG8gLTEgbWVhbnMgbm8gY2hpcCBzZWxlY3RlZCAqLwo+ID4g Pj4+Pj4+PiAtCWN0bHItPmxhc3RfY3MgPSAtMTsKPiA+ID4+Pj4+Pj4gKwlmb3IgKGlkeCA9IDA7 IGlkeCA8IFNQSV9DU19DTlRfTUFYOyBpZHgrKykKPiA+ID4+Pj4+Pj4gKwkJY3Rsci0+bGFzdF9j c1tpZHhdID0gLTE7Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ICAgICAgCXN0YXR1cyA9IGRldmlj ZV9hZGQoJmN0bHItPmRldik7Cj4gPiA+Pj4+Pj4+ICAgICAgCWlmIChzdGF0dXMgPCAwKQo+ID4g Pj4+Pj4+PiBAQCAtMzg4OSw3ICszOTk3LDcgQEAgc3RhdGljIGludCBfX3NwaV92YWxpZGF0ZShz dHJ1Y3QKPiA+ID4+Pj4+Pj4gc3BpX2RldmljZSAqc3BpLAo+ID4gPj4+Pj4+IHN0cnVjdCBzcGlf bWVzc2FnZSAqbWVzc2FnZSkKPiA+ID4+Pj4+Pj4gICAgICAJICogY3NfY2hhbmdlIGlzIHNldCBm b3IgZWFjaCB0cmFuc2Zlci4KPiA+ID4+Pj4+Pj4gICAgICAJICovCj4gPiA+Pj4+Pj4+ICAgICAg CWlmICgoc3BpLT5tb2RlICYgU1BJX0NTX1dPUkQpICYmICghKGN0bHItPm1vZGVfYml0cyAmCj4g PiA+Pj4+Pj4gU1BJX0NTX1dPUkQpIHx8Cj4gPiA+Pj4+Pj4+IC0JCQkJCSAgc3BpX2dldF9jc2dw aW9kKHNwaSwgMCkpKQo+IHsKPiA+ID4+Pj4+Pj4gKwkJCQkJICBzcGlfaXNfY3NncGlvZChzcGkp KSkgewo+ID4gPj4+Pj4+PiAgICAgIAkJc2l6ZV90IG1heHNpemUgPSBCSVRTX1RPX0JZVEVTKHNw aS0KPiA+Yml0c19wZXJfd29yZCk7Cj4gPiA+Pj4+Pj4+ICAgICAgCQlpbnQgcmV0Owo+ID4gPj4+ Pj4+Pgo+ID4gPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zcGkvc3BpLmggYi9p bmNsdWRlL2xpbnV4L3NwaS9zcGkuaAo+ID4gPj4+Pj4+PiBpbmRleCA3YjRiYWZmNjNjNWMuLjg3 MWQzYTZkODc5YiAxMDA2NDQKPiA+ID4+Pj4+Pj4gLS0tIGEvaW5jbHVkZS9saW51eC9zcGkvc3Bp LmgKPiA+ID4+Pj4+Pj4gKysrIGIvaW5jbHVkZS9saW51eC9zcGkvc3BpLmgKPiA+ID4+Pj4+Pj4g QEAgLTIwLDYgKzIwLDkgQEAKPiA+ID4+Pj4+Pj4KPiA+ID4+Pj4+Pj4gICAgICAjaW5jbHVkZSA8 dWFwaS9saW51eC9zcGkvc3BpLmg+Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ICsvKiBNYXggbm8u IG9mIENTIHN1cHBvcnRlZCBwZXIgc3BpIGRldmljZSAqLyAjZGVmaW5lCj4gPiA+Pj4+Pj4+ICtT UElfQ1NfQ05UX01BWAo+ID4gPj4+Pj4+PiArNAo+ID4gPj4+Pj4+PiArCj4gPiA+Pj4+Pj4+ICAg ICAgc3RydWN0IGRtYV9jaGFuOwo+ID4gPj4+Pj4+PiAgICAgIHN0cnVjdCBzb2Z0d2FyZV9ub2Rl Owo+ID4gPj4+Pj4+PiAgICAgIHN0cnVjdCBwdHBfc3lzdGVtX3RpbWVzdGFtcDsgQEAgLTEzMiw3 ICsxMzUsOCBAQAo+IGV4dGVybgo+ID4gPj4+Pj4+PiB2b2lkCj4gPiA+Pj4+Pj4gc3BpX3RyYW5z ZmVyX2NzX2NoYW5nZV9kZWxheV9leGVjKHN0cnVjdCBzcGlfbWVzc2FnZSAqbXNnLAo+ID4gPj4+ Pj4+PiAgICAgICAqIEBtYXhfc3BlZWRfaHo6IE1heGltdW0gY2xvY2sgcmF0ZSB0byBiZSB1c2Vk IHdpdGggdGhpcwo+IGNoaXAKPiA+ID4+Pj4+Pj4gICAgICAgKgkob24gdGhpcyBib2FyZCk7IG1h eSBiZSBjaGFuZ2VkIGJ5IHRoZSBkZXZpY2UncyBkcml2ZXIuCj4gPiA+Pj4+Pj4+ICAgICAgICoJ VGhlIHNwaV90cmFuc2Zlci5zcGVlZF9oeiBjYW4gb3ZlcnJpZGUgdGhpcyBmb3IgZWFjaAo+IHRy YW5zZmVyLgo+ID4gPj4+Pj4+PiAtICogQGNoaXBfc2VsZWN0OiBDaGlwc2VsZWN0LCBkaXN0aW5n dWlzaGluZyBjaGlwcyBoYW5kbGVkIGJ5Cj4gPiA+PiBAY29udHJvbGxlci4KPiA+ID4+Pj4+Pj4g KyAqIEBjaGlwX3NlbGVjdDogQXJyYXkgb2YgcGh5c2ljYWwgY2hpcHNlbGVjdCwgc3BpLT5jaGlw c2VsZWN0W2ldCj4gZ2l2ZXMKPiA+ID4+Pj4+Pj4gKyAqCXRoZSBjb3JyZXNwb25kaW5nIHBoeXNp Y2FsIENTIGZvciBsb2dpY2FsIENTIGkuCj4gPiA+Pj4+Pj4+ICAgICAgICogQG1vZGU6IFRoZSBz cGkgbW9kZSBkZWZpbmVzIGhvdyBkYXRhIGlzIGNsb2NrZWQgb3V0IGFuZAo+IGluLgo+ID4gPj4+ Pj4+PiAgICAgICAqCVRoaXMgbWF5IGJlIGNoYW5nZWQgYnkgdGhlIGRldmljZSdzIGRyaXZlci4K PiA+ID4+Pj4+Pj4gICAgICAgKglUaGUgImFjdGl2ZSBsb3ciIGRlZmF1bHQgZm9yIGNoaXBzZWxl Y3QgbW9kZSBjYW4gYmUKPiA+ID4+IG92ZXJyaWRkZW4KPiA+ID4+Pj4+Pj4gQEAgLTE1Nyw4ICsx NjEsOCBAQCBleHRlcm4gdm9pZAo+ID4gPj4+Pj4+IHNwaV90cmFuc2Zlcl9jc19jaGFuZ2VfZGVs YXlfZXhlYyhzdHJ1Y3Qgc3BpX21lc3NhZ2UgKm1zZywKPiA+ID4+Pj4+Pj4gICAgICAgKgl0aGUg ZGV2aWNlIHdpbGwgYmluZCB0byB0aGUgbmFtZWQgZHJpdmVyIGFuZCBvbmx5IHRoZQo+IG5hbWVk Cj4gPiA+PiBkcml2ZXIuCj4gPiA+Pj4+Pj4+ICAgICAgICoJRG8gbm90IHNldCBkaXJlY3RseSwg YmVjYXVzZSBjb3JlIGZyZWVzIGl0OyB1c2UKPiA+ID4+IGRyaXZlcl9zZXRfb3ZlcnJpZGUoKSB0 bwo+ID4gPj4+Pj4+PiAgICAgICAqCXNldCBvciBjbGVhciBpdC4KPiA+ID4+Pj4+Pj4gLSAqIEBj c19ncGlvZDogR1BJTyBkZXNjcmlwdG9yIG9mIHRoZSBjaGlwc2VsZWN0IGxpbmUgKG9wdGlvbmFs LAo+ID4gPj4+Pj4+PiBOVUxMCj4gPiA+Pj4+IHdoZW4KPiA+ID4+Pj4+Pj4gLSAqCW5vdCB1c2lu ZyBhIEdQSU8gbGluZSkKPiA+ID4+Pj4+Pj4gKyAqIEBjc19ncGlvZDogQXJyYXkgb2YgR1BJTyBk ZXNjcmlwdG9ycyBvZiB0aGUgY29ycmVzcG9uZGluZwo+ID4gPj4+Pj4+PiArIGNoaXBzZWxlY3QK PiA+ID4+Pj4+PiBsaW5lcwo+ID4gPj4+Pj4+PiArICoJKG9wdGlvbmFsLCBOVUxMIHdoZW4gbm90 IHVzaW5nIGEgR1BJTyBsaW5lKQo+ID4gPj4+Pj4+PiAgICAgICAqIEB3b3JkX2RlbGF5OiBkZWxh eSB0byBiZSBpbnNlcnRlZCBiZXR3ZWVuIGNvbnNlY3V0aXZlCj4gPiA+Pj4+Pj4+ICAgICAgICoJ d29yZHMgb2YgYSB0cmFuc2Zlcgo+ID4gPj4+Pj4+PiAgICAgICAqIEBjc19zZXR1cDogZGVsYXkg dG8gYmUgaW50cm9kdWNlZCBieSB0aGUgY29udHJvbGxlcgo+ID4gPj4+Pj4+PiBhZnRlciBDUyBp cyBhc3NlcnRlZCBAQCAtMTY3LDYgKzE3MSw3IEBAIGV4dGVybiB2b2lkCj4gPiA+Pj4+Pj4gc3Bp X3RyYW5zZmVyX2NzX2NoYW5nZV9kZWxheV9leGVjKHN0cnVjdCBzcGlfbWVzc2FnZSAqbXNnLAo+ ID4gPj4+Pj4+PiAgICAgICAqCWRlYXNzZXJ0ZWQuIElmIEBjc19jaGFuZ2VfZGVsYXkgaXMgdXNl ZCBmcm9tCj4gQHNwaV90cmFuc2ZlciwKPiA+ID4+IHRoZW4KPiA+ID4+Pj4+PiB0aGUKPiA+ID4+ Pj4+Pj4gICAgICAgKgl0d28gZGVsYXlzIHdpbGwgYmUgYWRkZWQgdXAuCj4gPiA+Pj4+Pj4+ICAg ICAgICogQHBjcHVfc3RhdGlzdGljczogc3RhdGlzdGljcyBmb3IgdGhlIHNwaV9kZXZpY2UKPiA+ ID4+Pj4+Pj4gKyAqIEBjc19pbmRleF9tYXNrOiBCaXQgbWFzayBvZiB0aGUgYWN0aXZlIGNoaXBz ZWxlY3QocykgaW4gdGhlCj4gPiA+Pj4+Pj4+ICsgY2hpcHNlbGVjdCBhcnJheQo+ID4gPj4+Pj4+ PiAgICAgICAqCj4gPiA+Pj4+Pj4+ICAgICAgICogQSBAc3BpX2RldmljZSBpcyB1c2VkIHRvIGlu dGVyY2hhbmdlIGRhdGEgYmV0d2VlbiBhbiBTUEkKPiBzbGF2ZQo+ID4gPj4+Pj4+PiAgICAgICAq ICh1c3VhbGx5IGEgZGlzY3JldGUgY2hpcCkgYW5kIENQVSBtZW1vcnkuCj4gPiA+Pj4+Pj4+IEBA IC0xODIsNyArMTg3LDcgQEAgc3RydWN0IHNwaV9kZXZpY2Ugewo+ID4gPj4+Pj4+PiAgICAgIAlz dHJ1Y3Qgc3BpX2NvbnRyb2xsZXIJKmNvbnRyb2xsZXI7Cj4gPiA+Pj4+Pj4+ICAgICAgCXN0cnVj dCBzcGlfY29udHJvbGxlcgkqbWFzdGVyOwkvKiBDb21wYXRpYmlsaXR5Cj4gbGF5ZXIKPiA+ID4+ ICovCj4gPiA+Pj4+Pj4+ICAgICAgCXUzMgkJCW1heF9zcGVlZF9oejsKPiA+ID4+Pj4+Pj4gLQl1 OAkJCWNoaXBfc2VsZWN0Owo+ID4gPj4+Pj4+PiArCXU4CQkJY2hpcF9zZWxlY3RbU1BJX0NTX0NO VF9NQVhdOwo+ID4gPj4+Pj4+PiAgICAgIAl1OAkJCWJpdHNfcGVyX3dvcmQ7Cj4gPiA+Pj4+Pj4+ ICAgICAgCWJvb2wJCQlydDsKPiA+ID4+Pj4+Pj4gICAgICAjZGVmaW5lIFNQSV9OT19UWAkJQklU KDMxKQkJLyogTm8KPiB0cmFuc21pdCB3aXJlICovCj4gPiA+Pj4+Pj4+IEBAIC0yMTMsNyArMjE4 LDcgQEAgc3RydWN0IHNwaV9kZXZpY2Ugewo+ID4gPj4+Pj4+PiAgICAgIAl2b2lkCQkJKmNvbnRy b2xsZXJfZGF0YTsKPiA+ID4+Pj4+Pj4gICAgICAJY2hhcgkJCW1vZGFsaWFzW1NQSV9OQU1FX1NJ WkVdOwo+ID4gPj4+Pj4+PiAgICAgIAljb25zdCBjaGFyCQkqZHJpdmVyX292ZXJyaWRlOwo+ID4g Pj4+Pj4+PiAtCXN0cnVjdCBncGlvX2Rlc2MJKmNzX2dwaW9kOwkvKiBDaGlwIHNlbGVjdCBHUElP Cj4gPiBkZXNjcmlwdG9yCj4gPiA+Pj4+Pj4gKi8KPiA+ID4+Pj4+Pj4gKwlzdHJ1Y3QgZ3Bpb19k ZXNjCSpjc19ncGlvZFtTUElfQ1NfQ05UX01BWF07CS8qCj4gPiA+PiBDaGlwIHNlbGVjdAo+ID4g Pj4+Pj4+IGdwaW8gZGVzYyAqLwo+ID4gPj4+Pj4+PiAgICAgIAlzdHJ1Y3Qgc3BpX2RlbGF5CXdv cmRfZGVsYXk7IC8qIEludGVyLXdvcmQgZGVsYXkgKi8KPiA+ID4+Pj4+Pj4gICAgICAJLyogQ1Mg ZGVsYXlzICovCj4gPiA+Pj4+Pj4+ICAgICAgCXN0cnVjdCBzcGlfZGVsYXkJY3Nfc2V0dXA7Cj4g PiA+Pj4+Pj4+IEBAIC0yMjMsNiArMjI4LDEzIEBAIHN0cnVjdCBzcGlfZGV2aWNlIHsKPiA+ID4+ Pj4+Pj4gICAgICAJLyogVGhlIHN0YXRpc3RpY3MgKi8KPiA+ID4+Pj4+Pj4gICAgICAJc3RydWN0 IHNwaV9zdGF0aXN0aWNzIF9fcGVyY3B1CSpwY3B1X3N0YXRpc3RpY3M7Cj4gPiA+Pj4+Pj4+Cj4g PiA+Pj4+Pj4+ICsJLyogQml0IG1hc2sgb2YgdGhlIGNoaXBzZWxlY3QocykgdGhhdCB0aGUgZHJp dmVyIG5lZWQgdG8gdXNlCj4gPiA+PiBmcm9tCj4gPiA+Pj4+Pj4+ICsJICogdGhlIGNoaXBzZWxl Y3QgYXJyYXkuV2hlbiB0aGUgY29udHJvbGxlciBpcyBjYXBhYmxlIHRvCj4gPiA+PiBoYW5kbGUK PiA+ID4+Pj4+Pj4gKwkgKiBtdWx0aXBsZSBjaGlwIHNlbGVjdHMgJiBtZW1vcmllcyBhcmUgY29u bmVjdGVkIGluCj4gcGFyYWxsZWwKPiA+ID4+Pj4+Pj4gKwkgKiB0aGVuIG1vcmUgdGhhbiBvbmUg Yml0IG5lZWQgdG8gYmUgc2V0IGluCj4gY3NfaW5kZXhfbWFzay4KPiA+ID4+Pj4+Pj4gKwkgKi8K PiA+ID4+Pj4+Pj4gKwl1MzIJCQljc19pbmRleF9tYXNrIDoKPiBTUElfQ1NfQ05UX01BWDsKPiA+ ID4+Pj4+Pj4gKwo+ID4gPj4+Pj4+PiAgICAgIAkvKgo+ID4gPj4+Pj4+PiAgICAgIAkgKiBMaWtl bHkgbmVlZCBtb3JlIGhvb2tzIGZvciBtb3JlIHByb3RvY29sIG9wdGlvbnMKPiA+ID4+Pj4+Pj4g YWZmZWN0aW5nCj4gPiA+PiBob3cKPiA+ID4+Pj4+Pj4gICAgICAJICogdGhlIGNvbnRyb2xsZXIg dGFsa3MgdG8gZWFjaCBjaGlwLCBsaWtlOgo+ID4gPj4+Pj4+PiBAQCAtMjc5LDIyICsyOTEsMzMg QEAgc3RhdGljIGlubGluZSB2b2lkCj4gKnNwaV9nZXRfZHJ2ZGF0YShjb25zdAo+ID4gPj4+Pj4+ PiBzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiAgICAgIHN0 YXRpYyBpbmxpbmUgdTggc3BpX2dldF9jaGlwc2VsZWN0KGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNl Cj4gKnNwaSwgdTgKPiA+IGlkeCkKPiA+ID4+Pj4+Pj4gICAgICB7Cj4gPiA+Pj4+Pj4+IC0JcmV0 dXJuIHNwaS0+Y2hpcF9zZWxlY3Q7Cj4gPiA+Pj4+Pj4+ICsJcmV0dXJuIHNwaS0+Y2hpcF9zZWxl Y3RbaWR4XTsKPiA+ID4+Pj4+Pj4gICAgICB9Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ICAgICAg c3RhdGljIGlubGluZSB2b2lkIHNwaV9zZXRfY2hpcHNlbGVjdChzdHJ1Y3Qgc3BpX2RldmljZQo+ ID4gPj4+Pj4+PiAqc3BpLAo+ID4gPj4+Pj4+PiB1OCBpZHgsIHU4Cj4gPiA+Pj4+Pj4gY2hpcHNl bGVjdCkKPiA+ID4+Pj4+Pj4gICAgICB7Cj4gPiA+Pj4+Pj4+IC0Jc3BpLT5jaGlwX3NlbGVjdCA9 IGNoaXBzZWxlY3Q7Cj4gPiA+Pj4+Pj4+ICsJc3BpLT5jaGlwX3NlbGVjdFtpZHhdID0gY2hpcHNl bGVjdDsKPiA+ID4+Pj4+Pj4gICAgICB9Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ICAgICAgc3Rh dGljIGlubGluZSBzdHJ1Y3QgZ3Bpb19kZXNjICpzcGlfZ2V0X2NzZ3Bpb2QoY29uc3QKPiA+ID4+ Pj4+Pj4gc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwKPiA+ID4+Pj4+PiB1OCBpZHgpCj4gPiA+Pj4+ Pj4+ICAgICAgewo+ID4gPj4+Pj4+PiAtCXJldHVybiBzcGktPmNzX2dwaW9kOwo+ID4gPj4+Pj4+ PiArCXJldHVybiBzcGktPmNzX2dwaW9kW2lkeF07Cj4gPiA+Pj4+Pj4+ICAgICAgfQo+ID4gPj4+ Pj4+Pgo+ID4gPj4+Pj4+PiAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzcGlfc2V0X2NzZ3Bpb2Qo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSwKPiA+ID4+Pj4+Pj4gdTggaWR4LCBzdHJ1Y3QKPiA+ID4+ Pj4+PiBncGlvX2Rlc2MgKmNzZ3Bpb2QpCj4gPiA+Pj4+Pj4+ICAgICAgewo+ID4gPj4+Pj4+PiAt CXNwaS0+Y3NfZ3Bpb2QgPSBjc2dwaW9kOwo+ID4gPj4+Pj4+PiArCXNwaS0+Y3NfZ3Bpb2RbaWR4 XSA9IGNzZ3Bpb2Q7Cj4gPiA+Pj4+Pj4+ICt9Cj4gPiA+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4gK3N0 YXRpYyBpbmxpbmUgYm9vbCBzcGlfaXNfY3NncGlvZChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKSB7 Cj4gPiA+Pj4+Pj4+ICsJdTggaWR4Owo+ID4gPj4+Pj4+PiArCj4gPiA+Pj4+Pj4+ICsJZm9yIChp ZHggPSAwOyBpZHggPCBTUElfQ1NfQ05UX01BWDsgaWR4KyspIHsKPiA+ID4+Pj4+Pj4gKwkJaWYg KHNwaV9nZXRfY3NncGlvZChzcGksIGlkeCkpCj4gPiA+Pj4+Pj4+ICsJCQlyZXR1cm4gdHJ1ZTsK PiA+ID4+Pj4+Pj4gKwl9Cj4gPiA+Pj4+Pj4+ICsJcmV0dXJuIGZhbHNlOwo+ID4gPj4+Pj4+PiAg ICAgIH0KPiA+ID4+Pj4+Pj4KPiA+ID4+Pj4+Pj4gICAgICAvKioKPiA+ID4+Pj4+Pj4gQEAgLTM5 OSw2ICs0MjIsOCBAQCBleHRlcm4gc3RydWN0IHNwaV9kZXZpY2UKPiA+ID4+Pj4+PiAqc3BpX25l d19hbmNpbGxhcnlfZGV2aWNlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHU4IGNoCj4gPiA+Pj4+ Pj4+ICAgICAgICogQGJ1c19sb2NrX3NwaW5sb2NrOiBzcGlubG9jayBmb3IgU1BJIGJ1cyBsb2Nr aW5nCj4gPiA+Pj4+Pj4+ICAgICAgICogQGJ1c19sb2NrX211dGV4OiBtdXRleCBmb3IgZXhjbHVz aW9uIG9mIG11bHRpcGxlIGNhbGxlcnMKPiA+ID4+Pj4+Pj4gICAgICAgKiBAYnVzX2xvY2tfZmxh ZzogaW5kaWNhdGVzIHRoYXQgdGhlIFNQSSBidXMgaXMgbG9ja2VkIGZvcgo+ID4gPj4+Pj4+PiBl eGNsdXNpdmUgdXNlCj4gPiA+Pj4+Pj4+ICsgKiBAbXVsdGlfY3NfY2FwOiBpbmRpY2F0ZXMgdGhh dCB0aGUgU1BJIENvbnRyb2xsZXIgY2FuCj4gPiA+Pj4+Pj4+ICsgYXNzZXJ0L2RlLQo+ID4gPj4g YXNzZXJ0Cj4gPiA+Pj4+Pj4+ICsgKgltb3JlIHRoYW4gb25lIGNoaXAgc2VsZWN0IGF0IG9uY2Uu Cj4gPiA+Pj4+Pj4+ICAgICAgICogQHNldHVwOiB1cGRhdGVzIHRoZSBkZXZpY2UgbW9kZSBhbmQg Y2xvY2tpbmcgcmVjb3Jkcwo+IHVzZWQgYnkKPiA+IGEKPiA+ID4+Pj4+Pj4gICAgICAgKglkZXZp Y2UncyBTUEkgY29udHJvbGxlcjsgcHJvdG9jb2wgY29kZSBtYXkgY2FsbCB0aGlzLiAgVGhpcwo+ ID4gPj4+Pj4+PiAgICAgICAqCW11c3QgZmFpbCBpZiBhbiB1bnJlY29nbml6ZWQgb3IgdW5zdXBw b3J0ZWQgbW9kZSBpcwo+ID4gPj4gcmVxdWVzdGVkLgo+ID4gPj4+Pj4+PiBAQCAtNTY3LDYgKzU5 MiwxMSBAQCBzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgewo+ID4gPj4+Pj4+PiAgICAgICNkZWZpbmUg U1BJX0NPTlRST0xMRVJfTVVTVF9UWAkJQklUKDQpCj4gCS8qCj4gPiBSZXF1aXJlcyB0eAo+ID4g Pj4+PiAqLwo+ID4gPj4+Pj4+PiAgICAgICNkZWZpbmUgU1BJX0NPTlRST0xMRVJfR1BJT19TUwkJ QklUKDUpCj4gCS8qIEdQSU8gQ1MKPiA+ID4+Pj4gbXVzdAo+ID4gPj4+Pj4+IHNlbGVjdCBzbGF2 ZSAqLwo+ID4gPj4+Pj4+PiAgICAgICNkZWZpbmUgU1BJX0NPTlRST0xMRVJfU1VTUEVOREVECUJJ VCg2KQkvKgo+IEN1cnJlbnRseQo+ID4gPj4+Pj4+IHN1c3BlbmRlZCAqLwo+ID4gPj4+Pj4+PiAr CS8qCj4gPiA+Pj4+Pj4+ICsJICogVGhlIHNwaS1jb250cm9sbGVyIGhhcyBtdWx0aSBjaGlwIHNl bGVjdCBjYXBhYmlsaXR5IGFuZAo+IGNhbgo+ID4gPj4+Pj4+PiArCSAqIGFzc2VydC9kZS1hc3Nl cnQgbW9yZSB0aGFuIG9uZSBjaGlwIHNlbGVjdCBhdCBvbmNlLgo+ID4gPj4+Pj4+PiArCSAqLwo+ ID4gPj4+Pj4+PiArI2RlZmluZSBTUElfQ09OVFJPTExFUl9NVUxUSV9DUwkJQklUKDcpCj4gPiA+ Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ICAgICAgCS8qIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgYWxsb2Nh dGlvbiBvZiB0aGlzIHN0cnVjdCBpcwo+ID4gPj4+Pj4+PiBkZXZyZXMtCj4gPiA+PiBtYW5hZ2Vk ICovCj4gPiA+Pj4+Pj4+ICAgICAgCWJvb2wJCQlkZXZtX2FsbG9jYXRlZDsKPiA+ID4+Pj4+Pj4g QEAgLTY3Nyw3ICs3MDcsOCBAQCBzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgewo+ID4gPj4+Pj4+PiAg ICAgIAlib29sCQkJCXJ0Owo+ID4gPj4+Pj4+PiAgICAgIAlib29sCQkJCWF1dG9fcnVudGltZV9w bTsKPiA+ID4+Pj4+Pj4gICAgICAJYm9vbAkJCQljdXJfbXNnX21hcHBlZDsKPiA+ID4+Pj4+Pj4g LQljaGFyCQkJCWxhc3RfY3M7Cj4gPiA+Pj4+Pj4+ICsJY2hhcgo+IAlsYXN0X2NzW1NQSV9DU19D TlRfTUFYXTsKPiA+ID4+Pj4+Pj4gKwljaGFyCQkJCWxhc3RfY3NfaW5kZXhfbWFzazsKPiA+ID4+ Pj4+Pj4gICAgICAJYm9vbAkJCQlsYXN0X2NzX21vZGVfaGlnaDsKPiA+ID4+Pj4+Pj4gICAgICAJ Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjazsKPiA+ID4+Pj4+Pj4gICAg ICAJc3RydWN0IGNvbXBsZXRpb24gICAgICAgICAgICAgICB4ZmVyX2NvbXBsZXRpb247CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K