Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp186536imu; Thu, 8 Nov 2018 06:57:38 -0800 (PST) X-Google-Smtp-Source: AJdET5cmiN3Kq0pufO0pB5N2RH8lflvcVvMfMpwDTKBJRtmmd4YmNTI9HmPfEVGgQbaQp8+nOAW4 X-Received: by 2002:a63:c642:: with SMTP id x2-v6mr3923118pgg.16.1541689058199; Thu, 08 Nov 2018 06:57:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541689058; cv=none; d=google.com; s=arc-20160816; b=ky6Pyk3pNHvkSMHyLmlTdsgCqVI2PF5JUeFhmPr/ZQ2qx0BNPiVExrZ5chcjFW+ma9 mbqaxOPwhriP+zM886aShhKLlVSGq3iVNbASnFAoLfLxo4vREju14pSD0ZR4V7GsuaUu gd40fbEs9wNkGMNe1BIdKS4M3e1Od1hpHe91bsgExXZlstM2u0CVN2uEpPpfLxy80H4N Il7Sj+jYox6Zulsu+O3l888YKaft9eGK5aanQKMXLArSxRtXpJh6e0WpbySmQ9400cTh ZnmgwZ5PCkwMn+3aS+Zl09G+uV0vgkESujs8B3+bZ3DmyoaUaEMAVhN0Y8UxxOb8oicr nxZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature:dkim-signature; bh=Pyh9AG3ef6vRWNTufsQT2JUWfopzQ4Hz3f2uyv+To6s=; b=UEP85lic6/Scf1XR4lazHu1YSIr7sGzN0NdpopUecPWu2fUmKFTBzbQQHhLdaYhVuM 6H48OGw7joOD0SHAOknYTuCYPrnU/JZGYaiQeRNSAHQmAmU2JcgigGCl5Xw+/U4i0B7Z IH8tTNy3QLrYKOVcOJqlnNXibF+JLokdlRCzSTOG8/lzrjWMvlbMNTHRrUHMfB/hs8La WxgDlyReMrRDWsCC5timfr3hTWUSwatlp+2EWgrzcd6Eo+EaqDnB7QX6ruIZZA3w0Y8T jcn2SAw5D/WH+KspvrlPgcYpsVkefMntBm8rNOBziFfYXgo7YDBGRLxFUQ+8Mic0lqId uaqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cadence.com header.s=proofpoint header.b="AQh/55qo"; dkim=pass header.i=@cadence.com header.s=selector1 header.b=rdbEgGVr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v184-v6si4422826pfv.249.2018.11.08.06.57.22; Thu, 08 Nov 2018 06:57:38 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@cadence.com header.s=proofpoint header.b="AQh/55qo"; dkim=pass header.i=@cadence.com header.s=selector1 header.b=rdbEgGVr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727084AbeKIAaw (ORCPT + 99 others); Thu, 8 Nov 2018 19:30:52 -0500 Received: from mx0a-0014ca01.pphosted.com ([208.84.65.235]:59948 "EHLO mx0a-0014ca01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726417AbeKIAav (ORCPT ); Thu, 8 Nov 2018 19:30:51 -0500 Received: from pps.filterd (m0042385.ppops.net [127.0.0.1]) by mx0a-0014ca01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id wA8EpVWv019844; Thu, 8 Nov 2018 06:53:49 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint; bh=Pyh9AG3ef6vRWNTufsQT2JUWfopzQ4Hz3f2uyv+To6s=; b=AQh/55qoEiPz59wXilZ/ux7yeHMjYLNxAD76OExLGqf/wKEsHSfD4rdOTVzEbUnFm3RC xzXEPX3wDqtHROFY8BSzqh35Rz/lTwcgIao37UR68Wqjnx4ycsVnzaiy4yu4ehG9/u5+ AlVkC3O4Bd9QwjoDogYc0F/7SqiBK6+YVeV0efJGEPK/6+qlGUONhMnJFmlQjmxslRwO JjGDLZzCXxpR9oKLyk80QAy5mwbSAMw833q38nH2Qjo+a3/BH6rEFvHnAWndlhvDEgRs iqzVzpq4081DiCgZOo8h7IM3t+LIfv/niMOlqoOpDb+OECg/rpznXE4WhOEim6h8Sx00 cQ== Authentication-Results: cadence.com; spf=pass smtp.mailfrom=dkos@cadence.com Received: from nam03-co1-obe.outbound.protection.outlook.com (mail-co1nam03lp0021.outbound.protection.outlook.com [216.32.181.21]) by mx0a-0014ca01.pphosted.com with ESMTP id 2nm927knra-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 08 Nov 2018 06:53:48 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Pyh9AG3ef6vRWNTufsQT2JUWfopzQ4Hz3f2uyv+To6s=; b=rdbEgGVrshIe9V/FUGqJdK2XzBAF+YrWJdTdWV/zHFl8oTiVo3Vj0P3RxN23wXkgvuhVSOBGHrXKLRhrsWjPlKx7kmVHTA3rKaMLg3/S4iy12aq2ls1PTfNhCOGhBxMJ9HFGzkKN2y+Tj3AW6lwnsXl5kispaxldwKrY3RXIJUU= Received: from CY1PR0701MB1664.namprd07.prod.outlook.com (10.163.20.22) by CY1PR0701MB1370.namprd07.prod.outlook.com (10.160.150.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.31; Thu, 8 Nov 2018 14:53:39 +0000 Received: from CY1PR0701MB1664.namprd07.prod.outlook.com ([fe80::59a0:1638:ccd6:ad87]) by CY1PR0701MB1664.namprd07.prod.outlook.com ([fe80::59a0:1638:ccd6:ad87%2]) with mapi id 15.20.1294.034; Thu, 8 Nov 2018 14:53:39 +0000 From: Damian Kos To: Andrzej Hajda , David Airlie , Rob Herring , Mark Rutland , Archit Taneja , Laurent Pinchart , Gustavo Padovan , Maarten Lankhorst , Sean Paul , Sandy Huang , =?utf-8?B?SGVpa28gU3TDvGJuZXI=?= , Quentin Schulz , Piotr Sroka , "dri-devel@lists.freedesktop.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-rockchip@lists.infradead.org" CC: Rafal Ciepiela , "quentin.schulz@bootlin.com" , "jbergsagel@ti.com" Subject: RE: [PATCH v6 5/6] drm/bridge: add support for MST in mhdp8546 driver Thread-Topic: [PATCH v6 5/6] drm/bridge: add support for MST in mhdp8546 driver Thread-Index: AQHUX1AP8N2CEBKF6UuD+z7yEisZ3KVEXqkAgAHIEYA= Date: Thu, 8 Nov 2018 14:53:39 +0000 Message-ID: References: <1539034953-11274-1-git-send-email-dkos@cadence.com> <1539034953-11274-6-git-send-email-dkos@cadence.com> <4745c0e4-0147-59fd-1dda-c5644dadd10a@samsung.com> In-Reply-To: <4745c0e4-0147-59fd-1dda-c5644dadd10a@samsung.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNcZGtvc1xhcHBkYXRhXHJvYW1pbmdcMDlkODQ5YjYtMzJkMy00YTQwLTg1ZWUtNmI4NGJhMjllMzViXG1zZ3NcbXNnLTEzZWJhYWExLWUzNjYtMTFlOC04NzJkLWE0NGNjOGNjMTI3Y1xhbWUtdGVzdFwxM2ViYWFhMy1lMzY2LTExZTgtODcyZC1hNDRjYzhjYzEyN2Nib2R5LnR4dCIgc3o9IjczNTA5IiB0PSIxMzE4NjE2MjQyMDUzMzc4MzQiIGg9IktNeEpCZWF5R21pVWFOSnpXUG5VdWs1K01SRT0iIGlkPSIiIGJsPSIwIiBibz0iMSIvPjwvbWV0YT4= x-dg-rorf: x-originating-ip: [185.217.253.59] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;CY1PR0701MB1370;20:qd2TFgkmrNkzTIYYaIO8bfkyX0zrm1ysX+EYBCWBqFGYpp5UBeuXlQ1kUdp86rdwKBSKcoq4a7m5xMpu4he7iU54ULC1C2tzC4VFVi5+K3n42RrhxO6YgIjdPZ9jdYcfeOrujruI3q6o1/hL1Mwfhi3YJuwF/2rLf187CHAZqp2wJgTrHfdHcTuWi/OH6VjpR9yJZVHwLahO7pqOiqpB7o6cLHGZbteCkKbSb4dPaCDyhWbEp0bxazeSTxNwpGHB x-ms-office365-filtering-correlation-id: fc0b84aa-18eb-4842-4e80-08d64589f84a x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020);SRVR:CY1PR0701MB1370; x-ms-traffictypediagnostic: CY1PR0701MB1370: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(217544274631240)(9452136761055)(258649278758335)(31051911155226)(7411616537696)(72806322054110)(180628864354917)(228905959029699)(58145275503218); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231382)(944501410)(52105095)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095);SRVR:CY1PR0701MB1370;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0701MB1370; x-forefront-prvs: 0850800A29 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39850400004)(376002)(366004)(346002)(136003)(396003)(189003)(199004)(36092001)(105586002)(106356001)(478600001)(9686003)(6246003)(6116002)(3846002)(7416002)(316002)(5660300001)(305945005)(68736007)(7736002)(14454004)(66066001)(2906002)(110136005)(6436002)(55016002)(74316002)(54906003)(8936002)(26005)(86362001)(97736004)(33656002)(6506007)(229853002)(66574009)(476003)(53546011)(575784001)(486006)(2201001)(102836004)(14444005)(5024004)(7696005)(93886005)(53936002)(53946003)(25786009)(4326008)(2900100001)(186003)(99286004)(81166006)(4744004)(81156014)(8676002)(71200400001)(71190400001)(446003)(2501003)(256004)(11346002)(76176011)(921003)(1121003)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR0701MB1370;H:CY1PR0701MB1664.namprd07.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: cadence.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: ERfCmT36fOHgC8rPpzUjwY/IZj9jgg++4zpqwNzpdNzmDmDw34dFwFpR8MHiMGSTAFTNAggsT36OJuvQPR+A1uT67jA3D7xVyFbZb+R958Xm1NEgJRQfYIgTp0AibFJ3pM3TJvaEoDqrQ5dM1v9XxuaMhyUzORFzyg+TEHbxzs3mZBpiFo+JHzF/T9AfL1KqL4H1YuQ7osHc7Yesf18l/DfNOvEtmXZc+bAFhNqdFuj+rUu15qjVp/GlMOTW19pexGtrlAZYqh3ZeQ6UH1xBbOrWEPfn+0NQzeqSLbVfTtYzGB7iPC2opDoCOHASktH6DrjjQVhiLzZpCRvAfnDsxBdf2uZzRpp5yvJmE3tgWJc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc0b84aa-18eb-4842-4e80-08d64589f84a X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Nov 2018 14:53:39.5687 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1370 X-Proofpoint-SPF-Result: pass X-Proofpoint-SPF-Record: v=spf1 a:mx-sanjose2.Cadence.COM a:mx-sanjose4.Cadence.COM a:mx-sanjose5.Cadence.COM include:mktomail.com include:spf-0014ca01.pphosted.com include:spf.protection.outlook.com include:auth.msgapp.com include:spf.mandrillapp.com ~all X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-11-08_08:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1811080127 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogQW5kcnplaiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4gDQpTZW50OiBXZWRuZXNk YXksIE5vdmVtYmVyIDcsIDIwMTggMTI6NDANClRvOiBEYW1pYW4gS29zIDxka29zQGNhZGVuY2Uu Y29tPjsgRGF2aWQgQWlybGllIDxhaXJsaWVkQGxpbnV4LmllPjsgUm9iIEhlcnJpbmcgPHJvYmgr ZHRAa2VybmVsLm9yZz47IE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+OyBBcmNo aXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPjsgTGF1cmVudCBQaW5jaGFydCA8TGF1 cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPjsgR3VzdGF2byBQYWRvdmFuIDxndXN0YXZv QHBhZG92YW4ub3JnPjsgTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT47IFNlYW4gUGF1bCA8c2VhbkBwb29ybHkucnVuPjsgU2FuZHkgSHVhbmcgPGhq Y0Byb2NrLWNoaXBzLmNvbT47IEhlaWtvIFN0w7xibmVyIDxoZWlrb0BzbnRlY2guZGU+OyBRdWVu dGluIFNjaHVseiA8cXVlbnRpbi5zY2h1bHpAZnJlZS1lbGVjdHJvbnMuY29tPjsgUGlvdHIgU3Jv a2EgPHBpb3Ryc0BjYWRlbmNlLmNvbT47IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7 IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn OyBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LXJvY2tjaGlwQGxp c3RzLmluZnJhZGVhZC5vcmcNCkNjOiBSYWZhbCBDaWVwaWVsYSA8cmFmYWxjQGNhZGVuY2UuY29t PjsgcXVlbnRpbi5zY2h1bHpAYm9vdGxpbi5jb207IGpiZXJnc2FnZWxAdGkuY29tDQpTdWJqZWN0 OiBSZTogW1BBVENIIHY2IDUvNl0gZHJtL2JyaWRnZTogYWRkIHN1cHBvcnQgZm9yIE1TVCBpbiBt aGRwODU0NiBkcml2ZXINCg0KPiBPbiAwOC4xMC4yMDE4IDIzOjQyLCBEYW1pYW4gS29zIHdyb3Rl Og0KPiA+IEZyb206IFBpb3RyIFNyb2thIDxwaW90cnNAY2FkZW5jZS5jb20+DQo+ID4NCj4gPiAt IGFkZCBob3QgcGx1ZyBzdXBwb3J0IHRvIGhhbmRsZSBIRFAgSVJRIGludGVycnVwdHMgaW4gY2Fz ZSBzaWRlYmFuZA0KPiA+ICAgbWVzc2FnZSBpcyByZWFkeSB0byByZWFkLg0KPiA+IC0gdGhlcmUg aXMgb25seSBvbmUgY29ubmVjdG9yIGNyZWF0ZWQgYXQgaW5pdGlhbGl6YXRpb24gc3RhZ2UuIEl0 IGlzDQo+ID4gICB1c2VkIGFzIFNTVCBjb25uZWN0b3Igd2hlbiBjb250cm9sbGVyIHdvcmtzIGlu IFNTVCBtb2RlLiBJZiBjb250cm9sbGVyDQo+ID4gICB3b3JrcyBpbiBNU1QgbW9kZSB0aGVuIHRo ZSBTU1QgY29ubmVjdG9yIHN0YXR1cyBpcyBkaXNjb25uZWN0ZWQgYWxsIHRoZQ0KPiA+ICAgdGlt ZS4gTVNUIGNvbm5lY3RvcnMgYXJlIGNyZWF0ZWQvZGVzdHJveWVkIGluIHJ1bnRpbWUgZGVwZW5k cyBvbiB3aGF0DQo+ID4gICBkZXZpY2VzIGFyZSBjb25uZWN0ZWQgdG8gdGhlIERQIGNvbnRyb2xs ZXIuDQo+ID4gLSBhZGQgY2FsbGJhY2tzIGZ1bmN0aW9ucyB0byBiZSBhYmxlIHRvIGluZm9ybSBt b2R1bGUgbWFuYWdpbmcgZW5jb2RlcnMNCj4gPiAgIG9iamVjdHMgdG8gY3JlYXRlIG9yIGRlc3Ry b3kgYW4gZW5jb2RlciBpbiBjYXNlIG5ldyBhIE1TVCBjb25uZWN0b3IgaXMNCj4gPiAgIGNyZWF0 ZWQvZGVzdHJveWVkDQo+IA0KPiANCj4gSSBhbSBub3QgZmFtaWxpYXIgd2l0aCBNU1Qgc28gSSB3 aWxsIHN0aWNrIHRvIGJpa2Utc2hlZGRpbmcgOikgUmV2aWV3ZXINCj4gd2l0aCBNU1QgZXhwZXJp ZW5jZSBuZWVkZWQuDQo+IA0KDQpOb25ldGhlbGVzcywgdGhhbmsgeW91LCBBbmRyemVqLCBmb3Ig dGhlIGZlZWRiYWNrIGZvciB0aGlzIGFuZCB0aGUgb3RoZXINCnBhdGNoZXMuDQpUaGlzIHdpbGwg a2VlcCB1cyBidXN5IGZvciBhIHdoaWxlIDopDQoNCj4gDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5 OiBQaW90ciBTcm9rYSA8cGlvdHJzQGNhZGVuY2UuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IERh bWlhbiBLb3MgPGRrb3NAY2FkZW5jZS5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvTWFrZWZpbGUgICAgICAgIHwgICAyICstDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvY2Rucy1taGRwLW1zdC5jIHwgNTk0ICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4g PiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jZG5zLW1oZHAuYyAgICAgfCA1NjAgKysrKysrKysr KysrLS0tLS0tLS0tLS0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jZG5zLW1oZHAuaCAg ICAgfCAyMDkgKysrKysrKysrDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAt Y29yZS5jIHwgIDE4ICstDQo+ID4gIGluY2x1ZGUvZHJtL2JyaWRnZS9jZG5zLW1oZHAtY2JzLmgg ICAgIHwgIDI3ICsrDQo+ID4gIGluY2x1ZGUvZHJtL2JyaWRnZS9jZG5zLW1oZHAtY29tbW9uLmgg IHwgIDQ4ICstDQo+ID4gIDcgZmlsZXMgY2hhbmdlZCwgMTE4OSBpbnNlcnRpb25zKCspLCAyNjkg ZGVsZXRpb25zKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL2NkbnMtbWhkcC1tc3QuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9jZG5zLW1oZHAuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9k cm0vYnJpZGdlL2NkbnMtbWhkcC1jYnMuaA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxl DQo+ID4gaW5kZXggZTgwMmZkYjg1NzUwLi5iODBmM2Q2ZWQyYTYgMTAwNjQ0DQo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvTWFrZWZpbGUNCj4gPiBAQCAtMTksNCArMTksNCBAQCBvYmotJChDT05GSUdfRFJN X1RJX1RGUDQxMCkgKz0gdGktdGZwNDEwLm8NCj4gPiAgb2JqLSQoQ09ORklHX0RSTV9DRE5TX01I RFApICs9IG1oZHA4NTQ2Lm8NCj4gPiAgb2JqLXkgKz0gc3lub3BzeXMvDQo+ID4gIA0KPiA+IC1t aGRwODU0Ni1vYmpzIDo9IGNkbnMtbWhkcC1jb21tb24ubyBjZG5zLW1oZHAubw0KPiA+ICttaGRw ODU0Ni1vYmpzIDo9IGNkbnMtbWhkcC1jb21tb24ubyBjZG5zLW1oZHAubyBjZG5zLW1oZHAtbXN0 Lm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jZG5zLW1oZHAtbXN0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2NkbnMtbWhkcC1tc3QuYw0KPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43ODJkNGJmOWI2NjcNCj4gPiAt LS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jZG5zLW1oZHAt bXN0LmMNCj4gPiBAQCAtMCwwICsxLDU5NCBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMIHYyDQo+ID4gKy8qDQo+ID4gKyAqIENhZGVuY2UgTUhEUCBEUCBNU1QgYnJpZGdl IGRyaXZlci4NCj4gPiArICoNCj4gPiArICogQ29weXJpZ2h0OiAyMDE4IENhZGVuY2UgRGVzaWdu IFN5c3RlbXMsIEluYy4NCj4gPiArICoNCj4gPiArICogQXV0aG9yOiBQaW90ciBTcm9rYSA8cGlv dHJzQGNhZGVuY2UuY29tPg0KPiA+ICsgKi8NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQu aD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4NCj4gPiArI2luY2x1ZGUg PGRybS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9maXhlZC5o Pg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9jb25uZWN0b3IuaD4NCj4gPiArI2luY2x1ZGUgPGxp bnV4L2lvcG9sbC5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGRybS9icmlkZ2UvY2Rucy1taGRw LWNvbW1vbi5oPg0KPiANCj4gDQo+IEFscGhhYmV0aWMgb3JkZXIuDQo+IA0KPiANCj4gPiArI2lu Y2x1ZGUgImNkbnMtbWhkcC5oIg0KPiA+ICsNCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNkbnNf bWhkcF9tc3Rfc3RyZWFtX2VuYWJsZShzdHJ1Y3QgY2Ruc19taGRwX2JyaWRnZSAqbWhkcF9icmlk Z2UsDQo+ID4gKwkJCQkJYm9vbCBlbmFibGUpDQo+ID4gK3sNCj4gPiArCXUzMiByZWc7DQo+ID4g KwlzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCA9IG1oZHBfYnJpZGdlLT5taGRwOw0KPiA+ ICsJdTggc3RyZWFtX2lkID0gbWhkcF9icmlkZ2UtPnN0cmVhbV9pZDsNCj4gPiArDQo+ID4gKwlj ZG5zX21oZHBfcmVnX3JlYWQobWhkcCwgQ0ROU19EUF9NU1RfU1RSRUFNX0NPTkZJRyhzdHJlYW1f aWQpLCAmcmVnKTsNCj4gPiArDQo+ID4gKwlpZiAoZW5hYmxlKSB7DQo+ID4gKwkJcmVnIHw9IENE TlNfRFBfTVNUX1NUUk1fQ0ZHX1NUUkVBTV9FTjsNCj4gPiArCQlyZWcgJj0gfkNETlNfRFBfTVNU X1NUUk1fQ0ZHX05PX1ZJREVPOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlyZWcgJj0gfkNETlNf RFBfTVNUX1NUUk1fQ0ZHX1NUUkVBTV9FTjsNCj4gPiArCQlyZWcgfD0gQ0ROU19EUF9NU1RfU1RS TV9DRkdfTk9fVklERU87DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJY2Ruc19taGRwX3JlZ193cml0 ZShtaGRwLCBDRE5TX0RQX01TVF9TVFJFQU1fQ09ORklHKHN0cmVhbV9pZCksIHJlZyk7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgczY0IGNhbGNfZml4ZWRfYXZnX3Nsb3RzKHUz MiBwYm4sIHUzMiBwYm5fZGl2KQ0KPiA+ICt7DQo+ID4gKwlzNjQgZml4ZWRfcGJuLCBmaXhlZF9w Ym5fZGl2LCBmaXhlZF90YXJnX2F2Z19zbG90czsNCj4gPiArDQo+ID4gKwlmaXhlZF9wYm4gPSBk cm1faW50MmZpeHAocGJuKTsNCj4gPiArCWZpeGVkX3Bibl9kaXYgPSBkcm1faW50MmZpeHAocGJu X2Rpdik7DQo+ID4gKwlmaXhlZF90YXJnX2F2Z19zbG90cyA9IGRybV9maXhwX2RpdihmaXhlZF9w Ym4sIGZpeGVkX3Bibl9kaXYpOw0KPiA+ICsNCj4gPiArCXJldHVybiBmaXhlZF90YXJnX2F2Z19z bG90czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY2Ruc19taGRwX21zdF9zZXRf dGhyZXNob2xkKHN0cnVjdCBjZG5zX21oZHBfYnJpZGdlICpicmlkZ2UpDQo+ID4gK3sNCj4gPiAr CXUzMiB0aHJlc2hvbGQ7DQo+ID4gKwl1OCBzdHJlYW1faWQgPSBicmlkZ2UtPnN0cmVhbV9pZDsN Cj4gPiArCXN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwID0gYnJpZGdlLT5taGRwOw0KPiA+ ICsJczY0IGZpeGVkX3RhcmdfYXZnX3Nsb3RzLCBmaXhlZF90aHJlc2gsIGZpeGVkX3RhcmdfZW50 cmllczsNCj4gPiArDQo+ID4gKwlmaXhlZF90YXJnX2F2Z19zbG90cyA9IGNhbGNfZml4ZWRfYXZn X3Nsb3RzKGJyaWRnZS0+cGJuLA0KPiA+ICsJCQkJCQkgICAgbWhkcC0+bXN0X21nci5wYm5fZGl2 KTsNCj4gPiArDQo+ID4gKwlmaXhlZF90YXJnX2VudHJpZXMgPSBkcm1fZml4cF9kaXYoZml4ZWRf dGFyZ19hdmdfc2xvdHMsDQo+ID4gKwkJCQkJICBkcm1faW50MmZpeHAoMikpOw0KPiA+ICsJZml4 ZWRfdGhyZXNoID0gZHJtX2ZpeHBfbXVsKGZpeGVkX3RhcmdfZW50cmllcywgZml4ZWRfdGFyZ19l bnRyaWVzKTsNCj4gPiArCWZpeGVkX3RocmVzaCA9IGRybV9maXhwX2RpdihmaXhlZF90aHJlc2gs IGRybV9pbnQyZml4cCgzMikpOw0KPiA+ICsJZml4ZWRfdGhyZXNoID0gZml4ZWRfdGFyZ19lbnRy aWVzIC0gZml4ZWRfdGhyZXNoOw0KPiA+ICsJZml4ZWRfdGhyZXNoID0gZHJtX2ZpeHBfbXVsKGZp eGVkX3RocmVzaCwNCj4gPiArCQkJCSAgICBkcm1faW50MmZpeHAobWhkcC0+bGluay5udW1fbGFu ZXMpKTsNCj4gPiArCWZpeGVkX3RocmVzaCA9IGRybV9maXhwX2RpdihmaXhlZF90aHJlc2gsIGRy bV9pbnQyZml4cCg0KSk7DQo+ID4gKw0KPiA+ICsJdGhyZXNob2xkID0gZHJtX2ZpeHAyaW50X2Nl aWwoZml4ZWRfdGhyZXNoKTsNCj4gPiArCWlmICh0aHJlc2hvbGQgPCAyKQ0KPiA+ICsJCXRocmVz aG9sZCA9IDI7DQo+ID4gKw0KPiA+ICsJY2Ruc19taGRwX3JlZ193cml0ZShtaGRwLCBDRE5TX0RQ X0xJTkVfVEhSRVNIKHN0cmVhbV9pZCksDQo+ID4gKwkJCSAgICBDRE5TX0RQX0FDVElWRV9MSU5F X1RIUkVTSCh0aHJlc2hvbGQpKTsNCj4gDQo+IA0KPiBBbGwgdGhpcyBtYWdpYyBtYWtlcyBtZSB0 aGluayBJIGFtIG5vdCBhIHJpZ2h0IHBlcnNvbiB0byByZXZpZXcgdGhpcw0KPiBjb2RlLCBvciB0 aGUgY29kZSBpcyBvdmVyY29tcGxpY2F0ZWQuIExldHMgdHJ5IGxheW1hbiBhcHByb2FjaC4NCj4g DQo+IEZvcm11bGEgaXMgYXMgYmVsb3c6DQo+IA0KPiB0aHJlc2hvbGQgPSAocGJuL3Bibl9kaXYv MiAtIChwYm4vcGJuX2Rpdi8yKV4yIC8gMzIpKm51bV9sYW5lcyAvIDQNCj4gDQo+IHBsdXMgcm91 bmRfdXAsIGFuZCBjYXAgYnkgMi4NCj4gDQo+IFBsZWFzZSBkZXNjcmliZSB0aGUgZm9ybXVsYSBp biBjb21tZW50IHRvIGluY3JlYXNlIHJlYWRhYmlsaXR5IGFuZCB1c2UNCj4gc29tZSB0ZW1wb3Jh cnkgdmFyaWFibGVzIGluc3RlYWQgb2Ygb3ZlcnVzaW5nIGZpeGVkX3RocmVzaC4NCj4gDQo+IFdo ZXJlIHRoaXMgZm9ybXVsYSBjb21lcyBmcm9tPyBEb2N1bWVudCBpdC4NCj4gDQo+IE1vcmVvdmVy IGlmIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgYmV0d2VlbiBkcm1fZml4cF9kaXYoeCwNCj4gZHJt X2ludDJmaXhwKGNvbnN0KSkgYW5kIGRpdl9zNjQoeCwgY29uc3QpIEkgZ3Vlc3MgdGhlIGxhdHRl ciBpcyBiZXR0ZXIuDQo+IA0KDQpJJ3ZlIHNwb2tlIHdpdGggcGVvcGxlIGJlaGluZCB0aGlzIGNv ZGUgYW5kIGl0IHR1cm5lZCBvdXQgdGhhdCBzb21lIG9mIGl0DQptaWdodCBub3QgYmUgbmVlZGVk IGFueW1vcmUgYXMgdGhlIEhXIGNhbiBub3cgY2FsY3VsYXRlIHRocmVzaG9sZCB2YWx1ZS4NCk5l ZWQgdG8gZG91YmxlIGNoZWNrIGFuZCByZXdvcmsgaXQuDQoNCj4gDQo+ID4gK30NCj4gPiArDQo+ ID4gK3N0YXRpYyB2b2lkIGNkbnNfbWhkcF9zZXRfcmF0ZV9nb3Zlcm5pbmcoc3RydWN0IGNkbnNf bWhkcF9icmlkZ2UgKmJyaWRnZSwNCj4gPiArCQkJCQkgYm9vbCBlbmFibGUpDQo+ID4gK3sNCj4g PiArCXN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwID0gYnJpZGdlLT5taGRwOw0KPiA+ICsJ dTggc3RyZWFtX2lkID0gYnJpZGdlLT5zdHJlYW1faWQ7DQo+ID4gKw0KPiA+ICsJaWYgKGVuYWJs ZSkgew0KPiA+ICsJCXM2NCBmaXhlZF90YXJnX2F2Z19zbG90cywgZml4ZWRfeTsNCj4gPiArCQl1 MzIgeCwgeTsNCj4gPiArDQo+ID4gKwkJZml4ZWRfdGFyZ19hdmdfc2xvdHMgPQ0KPiA+ICsJCQlj YWxjX2ZpeGVkX2F2Z19zbG90cyhicmlkZ2UtPnBibiwNCj4gPiArCQkJCQkgICAgIG1oZHAtPm1z dF9tZ3IucGJuX2Rpdik7DQo+ID4gKw0KPiA+ICsJCXggPSBkcm1fZml4cDJpbnQoZml4ZWRfdGFy Z19hdmdfc2xvdHMpOw0KPiA+ICsNCj4gPiArCQlmaXhlZF95ID0gKGZpeGVkX3RhcmdfYXZnX3Ns b3RzIC0gZHJtX2ludDJmaXhwKHgpKTsNCj4gPiArCQlmaXhlZF95ID0gZHJtX2ZpeHBfbXVsKGZp eGVkX3ksIGRybV9pbnQyZml4cCgxNikpOw0KPiANCj4gQWdhaW4sIG1heWJlIGZpeGVkX3kgKj0g MTY7DQo+IA0KPiANCj4gPiArCQl5ID0gZHJtX2ZpeHAyaW50X2NlaWwoZml4ZWRfeSk7DQo+IA0K PiBPaywgYXQgdGhpcyBwb2ludCB4IGlzIGludGVnZXIgcGFydCBvZiBmaXhlZF90YXJnX2F2Z19z bG90cyBhbmQgeSBpcw0KPiBmcmFjdGlvbmFsIHBhcnQgb2YgZml4ZWRfdGFyZ19hdmdfc2xvdHMg KiAxNi4NCj4gDQo+IExvb2tpbmcgYXQgY2FsY19maXhlZF9hdmdfc2xvdHMgaXQgbWVhbnMsIHRo YXQ6DQo+IA0KPiB4ID0gYnJpZGdlLT5wYm4gLyBtaGRwLT5tc3RfbWdyLnBibl9kaXY7DQo+IA0K PiB5ID0gYnJpZGdlLT5wYm4gJSBtaGRwLT5tc3RfbWdyLnBibl9kaXYgKiAxNiAvIG1oZHAtPm1z dF9tZ3IucGJuX2RpdjsNCj4gDQo+IA0KPiBXaXRob3V0IHVzaW5nIGZpeGVkIGFyaXRobWV0aWMs IG1vcmUgZGlyZWN0Pw0KPiANCj4gDQo+ID4gKw0KPiA+ICsJCWNkbnNfbWhkcF9yZWdfd3JpdGUo bWhkcCwgQ0ROU19EUF9SQVRFX0dPVkVSTklORyhzdHJlYW1faWQpLA0KPiA+ICsJCQkJICAgIENE TlNfRFBfUkdfVEFSR19BVl9TTE9UU19ZKHkpIHwNCj4gPiArCQkJCSAgICBDRE5TX0RQX1JHX1RB UkdfQVZfU0xPVFNfWCh4KSB8DQo+ID4gKwkJCQkgICAgQ0ROU19EUF9SR19FTkFCTEUpOw0KPiA+ ICsJfSBlbHNlDQo+ID4gKwkJY2Ruc19taGRwX3JlZ193cml0ZShtaGRwLCBDRE5TX0RQX1JBVEVf R09WRVJOSU5HKHN0cmVhbV9pZCksIDApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArc3Rh dGljIHN0cnVjdCBkcm1fZHBfcGF5bG9hZCAqDQo+ID4gK2NkbnNfbWhkcF9nZXRfcGF5bG9hZChz dHJ1Y3QgY2Ruc19taGRwX2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICt7DQo+ID4gKwlpbnQgdmNwaSA9 IGJyaWRnZS0+Y29ubmVjdG9yLT5wb3J0LT52Y3BpLnZjcGksIGk7DQo+ID4gKwlzdHJ1Y3QgY2Ru c19taGRwX2RldmljZSAqbWhkcCA9IGJyaWRnZS0+bWhkcDsNCj4gPiArDQo+ID4gKwlmb3IgKGkg PSAwOyBpIDwgbWhkcC0+bXN0X21nci5tYXhfcGF5bG9hZHM7IGkrKykgew0KPiA+ICsJCXN0cnVj dCBkcm1fZHBfcGF5bG9hZCAqcGF5bG9hZCA9ICZtaGRwLT5tc3RfbWdyLnBheWxvYWRzW2ldOw0K PiA+ICsNCj4gPiArCQlpZiAocGF5bG9hZC0+dmNwaSA9PSB2Y3BpKQ0KPiA+ICsJCQlyZXR1cm4g cGF5bG9hZDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gTlVMTDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArY2Ruc19taGRwX3NldF9hY3RfZW5hYmxl KHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwKQ0KPiA+ICt7DQo+ID4gKwl1MzIgcmVnOw0K PiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwljZG5zX21oZHBfcmVnX3JlYWQobWhkcCwgQ0RO U19EUF9NVFBIX0NPTlRST0wsICZyZWcpOw0KPiA+ICsJY2Ruc19taGRwX3JlZ193cml0ZShtaGRw LCBDRE5TX0RQX01UUEhfQ09OVFJPTCwNCj4gPiArCQkJICAgIHJlZyB8IENETlNfRFBfTVRQSF9B Q1RfRU4pOw0KPiA+ICsNCj4gPiArCXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChtaGRwLT5yZWdz ICsgQ0ROU19EUF9NVFBIX1NUQVRVUywgcmVnLA0KPiA+ICsJCQkJICgocmVnICYgQ0ROU19EUF9N VFBIX0FDVF9TVEFUVVMpID09IDApLCAwLA0KPiA+ICsJCQkJIDMwKTsNCj4gPiArCWlmIChyZXQp IHsNCj4gPiArCQlkZXZfZXJyKG1oZHAtPmRldiwNCj4gPiArCQkJIkFDVCBzZXF1ZW5jZSBjYW5u b3QgY29tcGxldGUgaW4gMzB1c1xuIik7DQo+ID4gKwkJcmV0dXJuIC1FSU87DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIGRybV9kcF9jaGVja19hY3Rfc3RhdHVzKCZtaGRwLT5tc3RfbWdy KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArY2Ruc19taGRw X2FwcGx5X3Nsb3RfYWxsb2NhdGlvbihzdHJ1Y3QgY2Ruc19taGRwX2JyaWRnZSAqbWhkcF9icmlk Z2UpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkcm1fZHBfcGF5bG9hZCAqcGF5bG9hZDsNCj4gPiAr CXN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwID0gbWhkcF9icmlkZ2UtPm1oZHA7DQo+ID4g Kwl1OCBzdHJlYW1faWQgPSBtaGRwX2JyaWRnZS0+c3RyZWFtX2lkOw0KPiA+ICsNCj4gPiArCXBh eWxvYWQgPSBjZG5zX21oZHBfZ2V0X3BheWxvYWQobWhkcF9icmlkZ2UpOw0KPiA+ICsNCj4gPiAr CWlmICghcGF5bG9hZCkgew0KPiA+ICsJCURSTV9FUlJPUigicGF5bG9hZCBpcyBub3QgZm91bmRc biIpOw0KPiA+ICsJCXJldHVybiAtRUlPOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWNkbnNfbWhk cF9yZWdfd3JpdGUobWhkcCwgQ0ROU19EUF9NU1RfU0xPVF9BTExPQ0FURShzdHJlYW1faWQpLA0K PiA+ICsJCQkgICAgQ0ROU19EUF9TX0FMTE9DX1NUQVJUX1NMT1QocGF5bG9hZC0+c3RhcnRfc2xv dCkgfA0KPiA+ICsJCQkgICAgQ0ROU19EUF9TX0FMTE9DX0VORF9TTE9UKHBheWxvYWQtPnN0YXJ0 X3Nsb3QNCj4gPiArCQkJCQkJICAgICArIHBheWxvYWQtPm51bV9zbG90cyAtIDEpKTsNCj4gPiAr DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQNCj4gPiAr Y2Ruc19taGRwX3VwZGF0ZV9zbG90X2FsbG9jYXRpb24oc3RydWN0IGNkbnNfbWhkcF9icmlkZ2Ug Km1oZHBfYnJpZGdlKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbWhk cF9icmlkZ2UtPmJhc2UuZGV2Ow0KPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cjsNCj4gPiArDQo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmRldi0+bW9k ZV9jb25maWcuY29ubmVjdG9yX2xpc3QsIGhlYWQpIHsNCj4gPiArCQlzdHJ1Y3QgY2Ruc19taGRw X2Nvbm5lY3RvciAqbWhkcF9jb25uZWN0b3I7DQo+ID4gKw0KPiA+ICsJCW1oZHBfY29ubmVjdG9y ID0gdG9fbWhkcF9jb25uZWN0b3IoY29ubmVjdG9yKTsNCj4gPiArCQlpZiAoIWNvbm5lY3Rvci0+ ZW5jb2RlcikNCj4gPiArCQkJY29udGludWU7DQo+ID4gKwkJaWYgKCFtaGRwX2Nvbm5lY3Rvci0+ aXNfbXN0X2Nvbm5lY3RvcikNCj4gPiArCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJCWlmICht aGRwX2Nvbm5lY3Rvci0+YnJpZGdlLT5zdHJlYW1faWQgIT0gLTEpDQo+ID4gKwkJCWNkbnNfbWhk cF9hcHBseV9zbG90X2FsbG9jYXRpb24obWhkcF9jb25uZWN0b3ItPmJyaWRnZSk7DQo+ID4gKwl9 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzDQo+ ID4gK2NkbnNfZHBfbXN0X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBi b29sIGZvcmNlKQ0KPiA+ICt7DQo+ID4gKwllbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXQ7 DQo+ID4gKwlzdHJ1Y3QgY2Ruc19taGRwX2Nvbm5lY3RvciAqbWhkcF9jb25uZWN0b3I7DQo+ID4g KwlzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcDsNCj4gPiArDQo+ID4gKwltaGRwX2Nvbm5l Y3RvciA9IHRvX21oZHBfY29ubmVjdG9yKGNvbm5lY3Rvcik7DQo+ID4gKwltaGRwID0gIG1oZHBf Y29ubmVjdG9yLT5icmlkZ2UtPm1oZHA7DQo+ID4gKw0KPiA+ICsJc3RhdCA9IGRybV9kcF9tc3Rf ZGV0ZWN0X3BvcnQoY29ubmVjdG9yLCAmbWhkcC0+bXN0X21nciwNCj4gPiArCQkJCSAgICAgIG1o ZHBfY29ubmVjdG9yLT5wb3J0KTsNCj4gPiArCXJldHVybiBzdGF0Ow0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtjZG5zX2RwX21zdF9jb25uZWN0b3JfZGVzdHJveShzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19t aGRwX2Nvbm5lY3RvciAqbWhkcF9jb25uZWN0b3I7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19taGRwX2Jy aWRnZSAqbWhkcF9icmlkZ2U7DQo+ID4gKw0KPiA+ICsJbWhkcF9jb25uZWN0b3IgPSB0b19taGRw X2Nvbm5lY3Rvcihjb25uZWN0b3IpOw0KPiA+ICsJbWhkcF9icmlkZ2UgPSBtaGRwX2Nvbm5lY3Rv ci0+YnJpZGdlOw0KPiA+ICsNCj4gPiArCWRybV9jb25uZWN0b3JfY2xlYW51cCgmbWhkcF9jb25u ZWN0b3ItPmJhc2UpOw0KPiA+ICsJZHJtX2JyaWRnZV9yZW1vdmUoJm1oZHBfYnJpZGdlLT5iYXNl KTsNCj4gPiArCWtmcmVlKG1oZHBfY29ubmVjdG9yKTsNCj4gPiArCWtmcmVlKG1oZHBfYnJpZGdl KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X2Z1bmNzIGNkbnNfbWhkcF9tc3RfY29ubmVjdG9yX2Z1bmNzID0gew0KPiA+ICsJLmF0b21pY19k dXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0 YXRlLA0KPiA+ICsJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29u bmVjdG9yX2Rlc3Ryb3lfc3RhdGUsDQo+ID4gKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9j b25uZWN0b3JfcmVzZXQsDQo+ID4gKwkuZHBtcyA9IGRybV9oZWxwZXJfY29ubmVjdG9yX2RwbXMs DQo+ID4gKwkuZGV0ZWN0ID0gY2Ruc19kcF9tc3RfZGV0ZWN0LA0KPiA+ICsJLmZpbGxfbW9kZXMg PSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsDQo+ID4gKwkuZGVzdHJv eSA9IGNkbnNfZHBfbXN0X2Nvbm5lY3Rvcl9kZXN0cm95LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr DQo+ID4gK3N0YXRpYyBpbnQgY2Ruc19taGRwX21zdF9nZXRfZGRjX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBjZG5zX21oZHBfY29u bmVjdG9yICptaGRwX2Nvbm5lY3RvcjsNCj4gPiArCXN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICpt aGRwOw0KPiA+ICsJc3RydWN0IGVkaWQgKmVkaWQ7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4gPiAr DQo+ID4gKwltaGRwX2Nvbm5lY3RvciA9IHRvX21oZHBfY29ubmVjdG9yKGNvbm5lY3Rvcik7DQo+ ID4gKwltaGRwID0gIG1oZHBfY29ubmVjdG9yLT5icmlkZ2UtPm1oZHA7DQo+ID4gKw0KPiA+ICsJ ZWRpZCA9IGRybV9kcF9tc3RfZ2V0X2VkaWQoY29ubmVjdG9yLCAmbWhkcC0+bXN0X21nciwNCj4g PiArCQkJCSAgIG1oZHBfY29ubmVjdG9yLT5wb3J0KTsNCj4gPiArDQo+ID4gKwlEUk1fREVCVUdf S01TKCJlZGlkIHJldHJpZXZlZCAlcFxuIiwgZWRpZCk7DQo+ID4gKwlpZiAoZWRpZCkgew0KPiA+ ICsJCWRybV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBlZGlkKTsN Cj4gPiArCQlyZXQgPSBkcm1fYWRkX2VkaWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsNCj4gPiAr CQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0KPiA+ICsJZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9w cm9wZXJ0eShjb25uZWN0b3IsIE5VTEwpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+IA0K PiANCj4gSSBzdXNwZWN0IGVkaWQgc2hvdWxkIGJlIGZyZWVkLCBidXQgbG9va2luZyBhdCBvdGhl ciB1c2VycyBvZg0KPiBkcm1fZHBfbXN0X2dldF9lZGlkIGl0IGlzIG5vdCBzbyBvYnZpb3VzIChv bmx5IGludGVsIGZyZWVzIGl0KSAtIG1lbW9yeQ0KPiBsZWFrcz8NCj4gDQo+IA0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNkbnNfbWhkcF9tc3RfZ2V0X21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpDQo+ID4gK3sNCj4gPiArCXJldHVybiBjZG5zX21oZHBfbXN0 X2dldF9kZGNfbW9kZXMoY29ubmVjdG9yKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gK3N0 YXRpYyBzdHJ1Y3QNCj4gPiArZHJtX2VuY29kZXIgKmNkbnNfbWhkcF9tc3RfYmVzdF9lbmNvZGVy KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBj ZG5zX21oZHBfY29ubmVjdG9yICptaGRwX2Nvbm5lY3RvcjsNCj4gPiArDQo+ID4gKwltaGRwX2Nv bm5lY3RvciA9IHRvX21oZHBfY29ubmVjdG9yKGNvbm5lY3Rvcik7DQo+ID4gKw0KPiA+ICsJcmV0 dXJuIG1oZHBfY29ubmVjdG9yLT5icmlkZ2UtPmJhc2UuZW5jb2RlcjsNCj4gPiArfSsNCj4gPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBjZG5zX21oZHBf bXN0X2Nvbm5faGVscGVyX2Z1biA9IHsNCj4gPiArCS5nZXRfbW9kZXMgPSBjZG5zX21oZHBfbXN0 X2dldF9tb2RlcywNCj4gPiArCS5iZXN0X2VuY29kZXIgPSBjZG5zX21oZHBfbXN0X2Jlc3RfZW5j b2RlciwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3ZvaWQgY2Ruc19taGRwX21zdF9lbmFibGUoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGNkbnNfbWhkcF9i cmlkZ2UgKm1oZHBfYnJpZGdlID0gdG9fbWhkcF9icmlkZ2UoYnJpZGdlKTsNCj4gPiArCXN0cnVj dCBjZG5zX21oZHBfZGV2aWNlICptaGRwID0gbWhkcF9icmlkZ2UtPm1oZHA7DQo+ID4gKwlzdHJ1 Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqZGlzcF9pbmZvOw0KPiA+ICsJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGU7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19taGRwX2Nvbm5lY3RvciAqbWhkcF9jb25u ZWN0b3I7DQo+ID4gKwl1MzIgYnBwOw0KPiA+ICsJZW51bSBwaXhlbF9mb3JtYXQgcHhsZm10Ow0K PiA+ICsJaW50IHJldCwgc2xvdHMsIHN0cmVhbV9pZDsNCj4gPiArDQo+ID4gKwlkaXNwX2luZm8g PSAmbWhkcF9icmlkZ2UtPmNvbm5lY3Rvci0+YmFzZS5kaXNwbGF5X2luZm87DQo+ID4gKw0KPiA+ ICsJcHhsZm10ID0gY2Ruc19taGRwX2dldF9weGxmbXQoZGlzcF9pbmZvLT5jb2xvcl9mb3JtYXRz KTsNCj4gPiArCWJwcCA9IGNkbnNfbWhkcF9nZXRfYnBwKGRpc3BfaW5mby0+YnBjLCBweGxmbXQp Ow0KPiA+ICsNCj4gPiArCW1oZHBfY29ubmVjdG9yID0gbWhkcF9icmlkZ2UtPmNvbm5lY3RvcjsN Cj4gPiArCWlmIChtaGRwX2JyaWRnZS0+c3RyZWFtX2lkID4gLTEpIHsNCj4gPiArCQlEUk1fRVJS T1IoIkVSUk9SIHN0cmVhbSBpZCBpcyBhdHRhY2hlZCBiZWZvcmUgYnJpZGdlIGlzIGVuYWJsZWRc biIpOw0KPiA+ICsJCXJldHVybjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlzdHJlYW1faWQgPSBi cmlkZ2UtPmVuY29kZXItPmNydGMtPmluZGV4Ow0KPiA+ICsNCj4gPiArCW1vZGUgPSAmYnJpZGdl LT5lbmNvZGVyLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsNCj4gPiArCW1oZHBfYnJpZGdl LT5wYm4gPSBkcm1fZHBfY2FsY19wYm5fbW9kZShtb2RlLT5jbG9jaywgYnBwKTsNCj4gPiArDQo+ ID4gKwlzbG90cyA9IGRybV9kcF9maW5kX3ZjcGlfc2xvdHMoJm1oZHAtPm1zdF9tZ3IsIG1oZHBf YnJpZGdlLT5wYm4pOw0KPiA+ICsJcmV0ID0gZHJtX2RwX21zdF9hbGxvY2F0ZV92Y3BpKCZtaGRw LT5tc3RfbWdyLA0KPiA+ICsJCQkJICAgICAgIG1oZHBfY29ubmVjdG9yLT5wb3J0LA0KPiA+ICsJ CQkJICAgICAgIG1oZHBfYnJpZGdlLT5wYm4sIHNsb3RzKTsNCj4gPiArCWlmIChyZXQgPT0gZmFs c2UpIHsNCj4gPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSB2Y3BpXG4iKTsNCj4g PiArCQlyZXR1cm47DQo+ID4gKwl9DQo+ID4gKwlyZXQgPSBkcm1fZHBfdXBkYXRlX3BheWxvYWRf cGFydDEoJm1oZHAtPm1zdF9tZ3IpOw0KPiA+ICsJaWYgKHJldCA8IDApDQo+ID4gKwkJRFJNX0VS Uk9SKCJmYWlsZWQgdXBkYXRlX3BheWxvYWRfcGFydDFcbiIpOw0KPiA+ICsNCj4gPiArCW1oZHBf YnJpZGdlLT5zdHJlYW1faWQgPSBzdHJlYW1faWQ7DQo+ID4gKwltaGRwX2JyaWRnZS0+aXNfYWN0 aXZlID0gdHJ1ZTsNCj4gPiArDQo+ID4gKwljZG5zX21oZHBfbXN0X3N0cmVhbV9lbmFibGUobWhk cF9icmlkZ2UsIHRydWUpOw0KPiA+ICsJY2Ruc19taGRwX2NvbmZpZ3VyZV92aWRlbyhicmlkZ2Up Ow0KPiA+ICsNCj4gPiArCXJldCA9IGNkbnNfbWhkcF9hcHBseV9zbG90X2FsbG9jYXRpb24obWhk cF9icmlkZ2UpOw0KPiA+ICsJaWYgKHJldCA8IDApIHsNCj4gPiArCQljZG5zX21oZHBfbXN0X3N0 cmVhbV9lbmFibGUobWhkcF9icmlkZ2UsIGZhbHNlKTsNCj4gPiArCQltaGRwX2JyaWRnZS0+c3Ry ZWFtX2lkID0gLTE7DQo+ID4gKwkJbWhkcF9icmlkZ2UtPmlzX2FjdGl2ZSA9IGZhbHNlOw0KPiA+ ICsJCXJldHVybjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXQgPSBjZG5zX21oZHBfc2V0X2Fj dF9lbmFibGUobWhkcCk7DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCURSTV9FUlJPUigiZmFpbGVk IEFDVCBzZXF1ZW5jZVxuIik7DQo+ID4gKw0KPiA+ICsJY2Ruc19taGRwX3NldF9yYXRlX2dvdmVy bmluZyhtaGRwX2JyaWRnZSwgdHJ1ZSk7DQo+ID4gKw0KPiA+ICsJY2Ruc19taGRwX21zdF9zZXRf dGhyZXNob2xkKG1oZHBfYnJpZGdlKTsNCj4gPiArDQo+ID4gKwlkcm1fZHBfdXBkYXRlX3BheWxv YWRfcGFydDIoJm1oZHAtPm1zdF9tZ3IpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIGNkbnNf bWhkcF9tc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICt7DQo+ID4g KwlzdHJ1Y3QgY2Ruc19taGRwX2JyaWRnZSAqbWhkcF9icmlkZ2UgPSB0b19taGRwX2JyaWRnZShi cmlkZ2UpOw0KPiA+ICsJc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAgPSBtaGRwX2JyaWRn ZS0+bWhkcDsNCj4gPiArCXN0cnVjdCBjZG5zX21oZHBfY29ubmVjdG9yICpjb25uZWN0b3IgPSBt aGRwX2JyaWRnZS0+Y29ubmVjdG9yOw0KPiA+ICsNCj4gPiArCWRybV9kcF9tc3RfcmVzZXRfdmNw aV9zbG90cygmbWhkcC0+bXN0X21nciwgY29ubmVjdG9yLT5wb3J0KTsNCj4gPiArCWRybV9kcF91 cGRhdGVfcGF5bG9hZF9wYXJ0MSgmbWhkcC0+bXN0X21ncik7DQo+ID4gKw0KPiA+ICsJY2Ruc19t aGRwX3VwZGF0ZV9zbG90X2FsbG9jYXRpb24obWhkcF9icmlkZ2UpOw0KPiA+ICsNCj4gPiArCWRy bV9kcF9jaGVja19hY3Rfc3RhdHVzKCZtaGRwLT5tc3RfbWdyKTsNCj4gPiArDQo+ID4gKwlkcm1f ZHBfdXBkYXRlX3BheWxvYWRfcGFydDIoJm1oZHAtPm1zdF9tZ3IpOw0KPiA+ICsNCj4gPiArCWRy bV9kcF9tc3RfZGVhbGxvY2F0ZV92Y3BpKCZtaGRwLT5tc3RfbWdyLCBjb25uZWN0b3ItPnBvcnQp Ow0KPiA+ICsNCj4gPiArCWNkbnNfbWhkcF9zZXRfcmF0ZV9nb3Zlcm5pbmcobWhkcF9icmlkZ2Us IGZhbHNlKTsNCj4gPiArCWNkbnNfbWhkcF9tc3Rfc3RyZWFtX2VuYWJsZShtaGRwX2JyaWRnZSwg ZmFsc2UpOw0KPiA+ICsJbWhkcF9icmlkZ2UtPnN0cmVhbV9pZCA9IC0xOw0KPiA+ICsJbWhkcF9i cmlkZ2UtPmlzX2FjdGl2ZSA9IGZhbHNlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgY2Ruc19taGRwX21zdF9icmlkZ2VfZnVuY3MgPSB7 DQo+ID4gKwkuZW5hYmxlID0gY2Ruc19taGRwX2VuYWJsZSwNCj4gPiArCS5kaXNhYmxlID0gY2Ru c19taGRwX21zdF9kaXNhYmxlLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArDQo+ID4gK3N0YXRpYyBz dHJ1Y3QgY2Ruc19taGRwX2JyaWRnZSoNCj4gPiArY2Ruc19taHBkX2NyZWF0ZV9mYWtlX21zdF9i cmlkZ2Uoc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAsDQo+ID4gKwkJCQlzdHJ1Y3QgY2Ru c19taGRwX2Nvbm5lY3RvciAqbWhkcF9jb25uZWN0b3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBj ZG5zX21oZHBfYnJpZGdlICptaGRwX2JyaWRnZTsNCj4gPiArCXN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciA9IE5VTEw7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19taGRwX21zdF9jYnMgKmNicyA9ICZt aGRwLT5jYnM7DQo+ID4gKw0KPiA+ICsJbWhkcF9icmlkZ2UgPSBremFsbG9jKHNpemVvZigqbWhk cF9icmlkZ2UpLCBHRlBfS0VSTkVMKTsNCj4gPiArCWlmICghbWhkcF9icmlkZ2UpDQo+ID4gKwkJ cmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ICsJbWhkcF9icmlkZ2UtPm1oZHAgPSBtaGRwOw0KPiA+ ICsJbWhkcF9icmlkZ2UtPnN0cmVhbV9pZCA9IC0xOw0KPiA+ICsJbWhkcF9icmlkZ2UtPmNvbm5l Y3RvciA9IG1oZHBfY29ubmVjdG9yOw0KPiA+ICsJbWhkcF9icmlkZ2UtPmlzX2FjdGl2ZSA9IGZh bHNlOw0KPiA+ICsNCj4gPiArCW1oZHBfYnJpZGdlLT5iYXNlLmZ1bmNzID0gJmNkbnNfbWhkcF9t c3RfYnJpZGdlX2Z1bmNzOw0KPiA+ICsNCj4gPiArCWRybV9icmlkZ2VfYWRkKCZtaGRwX2JyaWRn ZS0+YmFzZSk7DQo+ID4gKw0KPiA+ICsJaWYgKGNicy0+ZnVuY3MuY3JlYXRlX21zdF9lbmNvZGVy KQ0KPiA+ICsJCWVuY29kZXIgPSBjYnMtPmZ1bmNzLmNyZWF0ZV9tc3RfZW5jb2RlcihjYnMtPnBy aXZfZGF0YSwNCj4gPiArCQkJCQkJCSZtaGRwX2JyaWRnZS0+YmFzZSk7DQo+ID4gKwlpZiAoZW5j b2Rlcikgew0KPiA+ICsJCWludCByZXQ7DQo+ID4gKwkJLyogdXNlIHRoZSBzYW1lIGRybSBkZXZp Y2UgYXMgaXMgaW4gdGhlIGZpcnN0IGVuY29kZXIgKi8NCj4gPiArCQllbmNvZGVyLT5kZXYgPSBt aGRwLT5icmlkZ2UuYmFzZS5lbmNvZGVyLT5kZXY7DQo+ID4gKwkJZW5jb2Rlci0+cG9zc2libGVf Y3J0Y3MgJj0gKCgxIDw8IENETlNfTUhEUF9NQVhfU1RSRUFNUykgLSAxKTsNCj4gPiArCQlyZXQg PSBkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCAmbWhkcF9icmlkZ2UtPmJhc2UsIE5VTEwpOw0K PiA+ICsJCWlmIChyZXQpIHsNCj4gPiArCQkJZGV2X2VycihtaGRwLT5kZXYsICJicmlkZ2UgYXR0 YWNoaW5nIGVycm9yICVkXG4iLCByZXQpOw0KPiA+ICsJCQlyZXR1cm4gTlVMTDsNCj4gPiArCQl9 DQo+ID4gKw0KPiA+ICsJCXJldCA9IGRybV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoJm1oZHBf Y29ubmVjdG9yLT5iYXNlLA0KPiA+ICsJCQkJCQkJZW5jb2Rlcik7DQo+ID4gKwkJaWYgKHJldCkg ew0KPiA+ICsJCQlkZXZfZXJyKG1oZHAtPmRldiwgImZhaWxlZCB0byBhdHRhY2ggY29ubmVjdG9y IHRvIGVuY29kZXJcbiIpOw0KPiA+ICsJCQlyZXR1cm4gTlVMTDsNCj4gPiArCQl9DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIG1oZHBfYnJpZGdlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgc3RydWN0IGRybV9jb25uZWN0b3IgKg0KPiA+ICtjZG5zX21oZHBfbXN0X2Nic19hZGRf Y29ubmVjdG9yKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLA0KPiA+ICsJCQkJ c3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwNCj4gPiArCQkJCWNvbnN0IGNoYXIgKnBhdGhw cm9wKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCA9IG1ncl90 b19taGRwKG1ncik7DQo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbWhkcC0+YnJpZGdl LmJhc2UuZGV2Ow0KPiA+ICsJc3RydWN0IGNkbnNfbWhkcF9jb25uZWN0b3IgKm1oZHBfY29ubmVj dG9yOw0KPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsNCj4gPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICAqY29ubl9zdGF0ZTsNCj4gPiArCWludCByZXQ7DQo+ID4g Kw0KPiA+ICsJbWhkcF9jb25uZWN0b3IgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgY2Ruc19taGRw X2Nvbm5lY3RvciksDQo+ID4gKwkJCQkgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIW1oZHBfY29u bmVjdG9yKQ0KPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ICsNCj4gPiArCW1oZHBfY29ubmVjdG9y LT5pc19tc3RfY29ubmVjdG9yID0gdHJ1ZTsNCj4gPiArCWNvbm5lY3RvciA9ICZtaGRwX2Nvbm5l Y3Rvci0+YmFzZTsNCj4gPiArCW1oZHBfY29ubmVjdG9yLT5wb3J0ID0gcG9ydDsNCj4gPiArCURS TV9ERUJVR19LTVMoIlxuIik7DQo+ID4gKw0KPiA+ICsJY29ubl9zdGF0ZSA9IGt6YWxsb2Moc2l6 ZW9mKCpjb25uX3N0YXRlKSwgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIWNvbm5fc3RhdGUpDQo+ ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3JfcmVzZXQoY29ubmVjdG9yLA0KPiA+ICsJCQkJCSAgICBjb25uX3N0YXRlKTsNCj4gPiAr DQo+ID4gKwlkcm1fY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IsICZjZG5zX21oZHBfbXN0 X2Nvbm5lY3Rvcl9mdW5jcywNCj4gPiArCQkJICAgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQ b3J0KTsNCj4gPiArCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZjZG5zX21o ZHBfbXN0X2Nvbm5faGVscGVyX2Z1bik7DQo+ID4gKwltaGRwX2Nvbm5lY3Rvci0+YnJpZGdlID0N Cj4gPiArCQljZG5zX21ocGRfY3JlYXRlX2Zha2VfbXN0X2JyaWRnZShtaGRwLCBtaGRwX2Nvbm5l Y3Rvcik7DQo+ID4gKw0KPiA+ICsJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rv ci0+YmFzZSwNCj4gPiArCQkJCSAgIGRldi0+bW9kZV9jb25maWcucGF0aF9wcm9wZXJ0eSwgMCk7 DQo+ID4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLA0KPiA+ ICsJCQkJICAgZGV2LT5tb2RlX2NvbmZpZy50aWxlX3Byb3BlcnR5LCAwKTsNCj4gPiArCXJldCA9 IGRybV9jb25uZWN0b3Jfc2V0X3BhdGhfcHJvcGVydHkoY29ubmVjdG9yLCBwYXRocHJvcCk7DQo+ ID4gKw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlEUk1fRVJST1IoIkVSUk9SIHNldCBwYXRoIHBy b3BlcnR0eSBmYWlsZWRcbiIpOw0KPiA+ICsNCj4gPiArCXJldHVybiBjb25uZWN0b3I7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK2NkbnNfbWhkcF9tc3RfY2JzX2Rlc3Ry b3lfY29ubmVjdG9yKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLA0KPiA+ICsJ CQkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+ID4gK3sNCj4gPiArCXN0 cnVjdCBjZG5zX21oZHBfY29ubmVjdG9yICptaGRwX2Nvbm5lY3RvcjsNCj4gPiArCXN0cnVjdCBj ZG5zX21oZHBfZGV2aWNlICptaGRwOw0KPiA+ICsJc3RydWN0IGNkbnNfbWhkcF9icmlkZ2UgKm1o ZHBfYnJpZGdlOw0KPiA+ICsNCj4gPiArCW1oZHBfY29ubmVjdG9yID0gdG9fbWhkcF9jb25uZWN0 b3IoY29ubmVjdG9yKTsNCj4gPiArCW1oZHBfYnJpZGdlID0gbWhkcF9jb25uZWN0b3ItPmJyaWRn ZTsNCj4gPiArCW1oZHAgPSBtaGRwX2JyaWRnZS0+bWhkcDsNCj4gPiArDQo+ID4gKwlkcm1fY29u bmVjdG9yX3VucmVnaXN0ZXIoJm1oZHBfY29ubmVjdG9yLT5iYXNlKTsNCj4gPiArDQo+ID4gKwlp ZiAobWhkcC0+Y2JzLmZ1bmNzLmNyZWF0ZV9tc3RfZW5jb2RlcikNCj4gPiArCQltaGRwLT5jYnMu ZnVuY3MuZGVzdHJveV9tc3RfZW5jb2RlcihtaGRwLT5jYnMucHJpdl9kYXRhLA0KPiA+ICsJCQkJ CQkgICAgJm1oZHBfYnJpZGdlLT5iYXNlKTsNCj4gPiArCWRybV9jb25uZWN0b3JfdW5yZWZlcmVu Y2UoJm1oZHBfY29ubmVjdG9yLT5iYXNlKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZv aWQgY2Ruc19taGRwX21zdF9jYnNfaG90cGx1ZyhzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9t Z3IgKm1ncikNCj4gPiArew0KPiA+ICsJc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAgPSBt Z3JfdG9fbWhkcChtZ3IpOw0KPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1oZHAtPmJy aWRnZS5iYXNlLmVuY29kZXItPmRldjsNCj4gPiArDQo+ID4gKwlkcm1fa21zX2hlbHBlcl9ob3Rw bHVnX2V2ZW50KGRldik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK2Nk bnNfbWhkcF9tc3RfY2JzX3JlZ2lzdGVyX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCXJldCA9IGRy bV9jb25uZWN0b3JfcmVnaXN0ZXIoY29ubmVjdG9yKTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJ RFJNX0VSUk9SKCJSZWdpc3RlciBjb25uZWN0b3IgZmFpbGVkXG4iKTsNCj4gPiArDQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9jYnMg bXN0X2NicyA9IHsNCj4gPiArCS5hZGRfY29ubmVjdG9yID0gY2Ruc19taGRwX21zdF9jYnNfYWRk X2Nvbm5lY3RvciwNCj4gPiArCS5yZWdpc3Rlcl9jb25uZWN0b3IgPSBjZG5zX21oZHBfbXN0X2Ni c19yZWdpc3Rlcl9jb25uZWN0b3IsDQo+ID4gKwkuZGVzdHJveV9jb25uZWN0b3IgPSBjZG5zX21o ZHBfbXN0X2Nic19kZXN0cm95X2Nvbm5lY3RvciwNCj4gPiArCS5ob3RwbHVnID0gY2Ruc19taGRw X21zdF9jYnNfaG90cGx1ZywNCj4gPiArfTsNCj4gPiArDQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9p ZCBjZG5zX21oZHBfc2V0X21zdF9lbmFibGUoc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAs IGJvb2wgZW5hYmxlKQ0KPiA+ICt7DQo+ID4gKwl1MzIgcmVnX3ZhbDsNCj4gPiArDQo+ID4gKwlj ZG5zX21oZHBfcmVnX3JlYWQobWhkcCwgQ0ROU19EUF9GUkFNRVJfR0xPQkFMX0NPTkZJRywgJnJl Z192YWwpOw0KPiA+ICsNCj4gPiArCWlmIChlbmFibGUpDQo+ID4gKwkJcmVnX3ZhbCB8PSBDRE5T X0RQX01TVF9FTjsNCj4gPiArCWVsc2UNCj4gPiArCQlyZWdfdmFsICY9IH5DRE5TX0RQX01TVF9F TjsNCj4gPiArDQo+ID4gKwljZG5zX21oZHBfcmVnX3dyaXRlKG1oZHAsIENETlNfRFBfRlJBTUVS X0dMT0JBTF9DT05GSUcsIHJlZ192YWwpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtib29sIGNkbnNf bWhkcF9tc3RfcHJvYmUoc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHApDQo+ID4gK3sNCj4g PiArCXU4IG1zdG1fY2FwOw0KPiA+ICsJdTggZHBjZF9jYXBbRFBfUkVDRUlWRVJfQ0FQX1NJWkVd Ow0KPiA+ICsNCj4gPiArCWJvb2wgaXNfbXN0Ow0KPiA+ICsNCj4gPiArCWlmICghbWhkcC0+Y2Fu X21zdCkNCj4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ID4gKw0KPiA+ICsJZHJtX2RwX2RwY2RfcmVh ZCgmbWhkcC0+YXV4LCBEUF9EUENEX1JFViwgZHBjZF9jYXAsDQo+ID4gKwkJCSBEUF9SRUNFSVZF Ul9DQVBfU0laRSk7DQo+ID4gKw0KPiA+ICsJaWYgKGRwY2RfY2FwW0RQX0RQQ0RfUkVWXSA8IDB4 MTIpDQo+ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArCWlmIChkcm1fZHBfZHBjZF9y ZWFkYigmbWhkcC0+YXV4LCBEUF9NU1RNX0NBUCwgJm1zdG1fY2FwKSAhPSAxKQ0KPiA+ICsJCXJl dHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKwlpZiAobXN0bV9jYXAgJiBEUF9NU1RfQ0FQKSB7DQo+ ID4gKwkJRFJNX0RFQlVHX0tNUygiU2luayBpcyBNU1QgY2FwYWJsZVxuIik7DQo+ID4gKwkJaXNf bXN0ID0gdHJ1ZTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJRFJNX0RFQlVHX0tNUygiU2luayBp cyBub3QgTVNUIGNhcGFibGVcbiIpOw0KPiA+ICsJCWlzX21zdCA9IGZhbHNlOw0KPiA+ICsJfQ0K PiA+ICsNCj4gPiArCWlmIChpc19tc3QgIT0gbWhkcC0+aXNfbXN0KSB7DQo+ID4gKwkJbWhkcC0+ aXNfbXN0ID0gaXNfbXN0Ow0KPiA+ICsJCWNkbnNfbWhkcF9zZXRfbXN0X2VuYWJsZShtaGRwLCBt aGRwLT5pc19tc3QpOw0KPiA+ICsNCj4gPiArCQlkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9zZXRf bXN0KCZtaGRwLT5tc3RfbWdyLA0KPiA+ICsJCQkJCQltaGRwLT5pc19tc3QpOw0KPiA+ICsJfQ0K PiA+ICsNCj4gPiArCXJldHVybiBtaGRwLT5pc19tc3Q7DQo+ID4gK30NCj4gPiArDQo+ID4gK2lu dCBjZG5zX21oZHBfbXN0X2luaXQoc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHApDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBjZG5zX21oZHBfYnJpZGdlICpicmlkZ2UgPSAmbWhkcC0+YnJpZGdl Ow0KPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGJyaWRnZS0+YmFzZS5kZXY7DQo+ID4g KwlzdHJ1Y3QgY2Ruc19taGRwX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gYnJpZGdlLT5jb25uZWN0 b3I7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCW1oZHAtPm1zdF9tZ3IuY2JzID0gJm1z dF9jYnM7DQo+ID4gKwlyZXQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9pbml0KCZtaGRwLT5t c3RfbWdyLCBkZXYsDQo+ID4gKwkJCQkJICAgJm1oZHAtPmF1eCwgMTYsDQo+ID4gKwkJCQkJICAg Q0ROU19NSERQX01BWF9TVFJFQU1TLA0KPiA+ICsJCQkJCSAgIGNvbm5lY3Rvci0+YmFzZS5iYXNl LmlkKTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJbWhkcC0+Y2FuX21zdCA9IGZhbHNlOw0KPiA+ ICsJZWxzZQ0KPiA+ICsJCW1oZHAtPmNhbl9tc3QgPSB0cnVlOw0KPiA+ICsNCj4gPiArCW1oZHAt PmlzX21zdCA9IGZhbHNlOw0KPiA+ICsNCj4gPiArCWJyaWRnZS0+c3RyZWFtX2lkID0gLTE7DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBjZG5zX21o ZHBfbXN0X2RlaW5pdChzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCkNCj4gPiArew0KPiA+ ICsJaWYgKG1oZHAtPmlzX21zdCkgew0KPiA+ICsJCW1oZHAtPmlzX21zdCA9IGZhbHNlOw0KPiA+ ICsJCWRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3NldF9tc3QoJm1oZHAtPm1zdF9tZ3IsDQo+ID4g KwkJCQkJCW1oZHAtPmlzX21zdCk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKG1oZHAtPmNh bl9tc3QpDQo+ID4gKwkJZHJtX2RwX21zdF90b3BvbG9neV9tZ3JfZGVzdHJveSgmbWhkcC0+bXN0 X21ncik7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9j ZG5zLW1oZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvY2Rucy1taGRwLmMNCj4gPiBpbmRl eCBhM2JiYzBlODA5YTUuLjQ4YWM1Y2YxZTAzMSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL2NkbnMtbWhkcC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9jZG5zLW1oZHAuYw0KPiA+IEBAIC0yNywxNDYgKzI3LDE1IEBADQo+ID4gICNpbmNsdWRlIDxk cm0vYnJpZGdlL2NkbnMtbWhkcC1jb21tb24uaD4NCj4gPiAgDQo+ID4gICNpbmNsdWRlIDxzb3Vu ZC9oZG1pLWNvZGVjLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4NCj4gPiArI2luY2x1 ZGUgPGxpbnV4L29mX2lycS5oPg0KPiA+ICANCj4gPiArI2luY2x1ZGUgImNkbnMtbWhkcC5oIg0K PiA+ICANCj4gPiAgI2RlZmluZSBERUJVR19NU0cNCj4gPiAgDQo+ID4gICNkZWZpbmUgRldfTkFN RQkJCQkJImNhZGVuY2UvbWhkcDg1NDYuYmluIg0KPiA+ICANCj4gPiAtI2RlZmluZSBDRE5TX0FQ Ql9DRkcJCQkJMHgwMDAwMA0KPiA+IC0jZGVmaW5lIENETlNfQVBCX0NUUkwJCQkJKENETlNfQVBC X0NGRyArIDB4MDApDQo+ID4gLSNkZWZpbmUgQ0ROU19NQUlMQk9YX0ZVTEwJCQkoQ0ROU19BUEJf Q0ZHICsgMHgwOCkNCj4gPiAtI2RlZmluZSBDRE5TX01BSUxCT1hfRU1QVFkJCQkoQ0ROU19BUEJf Q0ZHICsgMHgwYykNCj4gPiAtI2RlZmluZSBDRE5TX01BSUxCT1hfVFhfREFUQQkJCShDRE5TX0FQ Ql9DRkcgKyAweDEwKQ0KPiA+IC0jZGVmaW5lIENETlNfTUFJTEJPWF9SWF9EQVRBCQkJKENETlNf QVBCX0NGRyArIDB4MTQpDQo+ID4gLSNkZWZpbmUgQ0ROU19LRUVQX0FMSVZFCQkJCShDRE5TX0FQ Ql9DRkcgKyAweDE4KQ0KPiA+IC0jZGVmaW5lIENETlNfS0VFUF9BTElWRV9NQVNLCQkJR0VOTUFT Syg3LCAwKQ0KPiA+IC0NCj4gPiAtI2RlZmluZSBDRE5TX1NXX0NMS19MCQkJCShDRE5TX0FQQl9D RkcgKyAweDNjKQ0KPiA+IC0jZGVmaW5lIENETlNfU1dfQ0xLX0gJCQkJKENETlNfQVBCX0NGRyAr IDB4NDApDQo+ID4gLSNkZWZpbmUgQ0ROU19TV19FVkVOVDAJCQkJKENETlNfQVBCX0NGRyArIDB4 NDQpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUFRYX0hQRAkJCQlCSVQoMCkNCj4gPiAtDQo+ID4gLSNk ZWZpbmUgQ0ROU19TV19FVkVOVDEJCQkJKENETlNfQVBCX0NGRyArIDB4NDgpDQo+ID4gLSNkZWZp bmUgQ0ROU19TV19FVkVOVDIJCQkJKENETlNfQVBCX0NGRyArIDB4NGMpDQo+ID4gLSNkZWZpbmUg Q0ROU19TV19FVkVOVDMJCQkJKENETlNfQVBCX0NGRyArIDB4NTApDQo+ID4gLQ0KPiA+IC0jZGVm aW5lIENETlNfRFBUWF9DQVIJCQkJKENETlNfQVBCX0NGRyArIDB4OTA0KQ0KPiA+IC0jZGVmaW5l IENETlNfVklGX0NMS19FTgkJCQlCSVQoMCkNCj4gPiAtI2RlZmluZSBDRE5TX1ZJRl9DTEtfUlNU TgkJCUJJVCgxKQ0KPiA+IC0NCj4gPiAtI2RlZmluZSBDRE5TX1NPVVJDRV9WSURFT19JTlRFUkZB Q0UJCTB4MDBiMDANCj4gPiAtI2RlZmluZSBDRE5TX0JORF9IU1lOQzJWU1lOQwkJCShDRE5TX1NP VVJDRV9WSURFT19JTlRFUkZBQ0UgKyBcDQo+ID4gLQkJCQkJCSAweDAwKQ0KPiA+IC0jZGVmaW5l IENETlNfSVBfRFRDVF9XSU4JCQlHRU5NQVNLKDExLCAwKQ0KPiA+IC0jZGVmaW5lIENETlNfSVBf REVUX0lOVEVSTEFDRV9GT1JNQVQJCUJJVCgxMikNCj4gPiAtI2RlZmluZSBDRE5TX0lQX0JZUEFT U19WX0lOVEVSRkFDRQkJQklUKDEzKQ0KPiA+IC0NCj4gPiAtI2RlZmluZSBDRE5TX0hTWU5DMlZT WU5DX1BPTF9DVFJMCQkoQ0ROU19TT1VSQ0VfVklERU9fSU5URVJGQUNFICsgXA0KPiA+IC0JCQkJ CQkgMHgxMCkNCj4gPiAtI2RlZmluZSBDRE5TX0gyVl9IU1lOQ19QT0xfQUNUSVZFX0xPVwkJQklU KDEpDQo+ID4gLSNkZWZpbmUgQ0ROU19IMlZfVlNZTkNfUE9MX0FDVElWRV9MT1cJCUJJVCgyKQ0K PiA+IC0NCj4gPiAtI2RlZmluZSBDRE5TX0RQVFhfUEhZX0NPTkZJRwkJCTB4MDIwMDANCj4gPiAt I2RlZmluZSBDRE5TX1BIWV9UUkFJTklOR19FTgkJCUJJVCgwKQ0KPiA+IC0jZGVmaW5lIENETlNf UEhZX1RSQUlOSU5HX1RZUEUoeCkJCSgoKHgpICYgR0VOTUFTSygzLCAwKSkgPDwgMSkNCj4gPiAt I2RlZmluZSBDRE5TX1BIWV9TQ1JBTUJMRVJfQllQQVNTCQlCSVQoNSkNCj4gPiAtI2RlZmluZSBD RE5TX1BIWV9FTkNPREVSX0JZUEFTUwkJCUJJVCg2KQ0KPiA+IC0jZGVmaW5lIENETlNfUEhZX1NL RVdfQllQQVNTCQkJQklUKDcpDQo+ID4gLSNkZWZpbmUgQ0ROU19QSFlfVFJBSU5JTkdfQVVUTwkJ CUJJVCg4KQ0KPiA+IC0jZGVmaW5lIENETlNfUEhZX0xBTkUwX1NLRVcoeCkJCQkoKCh4KSAmIEdF Tk1BU0soMiwgMCkpIDw8IDkpDQo+ID4gLSNkZWZpbmUgQ0ROU19QSFlfTEFORTFfU0tFVyh4KQkJ CSgoKHgpICYgR0VOTUFTSygyLCAwKSkgPDwgMTIpDQo+ID4gLSNkZWZpbmUgQ0ROU19QSFlfTEFO RTJfU0tFVyh4KQkJCSgoKHgpICYgR0VOTUFTSygyLCAwKSkgPDwgMTUpDQo+ID4gLSNkZWZpbmUg Q0ROU19QSFlfTEFORTNfU0tFVyh4KQkJCSgoKHgpICYgR0VOTUFTSygyLCAwKSkgPDwgMTgpDQo+ ID4gLSNkZWZpbmUgQ0ROU19QSFlfQ09NTU9OX0NPTkZJRwkJCShDRE5TX1BIWV9MQU5FMV9TS0VX KDEpIHwgXA0KPiA+IC0JCQkJCQlDRE5TX1BIWV9MQU5FMl9TS0VXKDIpIHwgIFwNCj4gPiAtCQkJ CQkJQ0ROU19QSFlfTEFORTNfU0tFVygzKSkNCj4gPiAtI2RlZmluZSBDRE5TX1BIWV8xMEJJVF9F TgkJCUJJVCgyMSkNCj4gPiAtDQo+ID4gLSNkZWZpbmUgQ0ROU19EUFRYX0ZSQU1FUgkJCTB4MDIy MDANCj4gPiAtI2RlZmluZSBDRE5TX0RQX0ZSQU1FUl9HTE9CQUxfQ09ORklHCQkoQ0ROU19EUFRY X0ZSQU1FUiArIDB4MDApDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9OVU1fTEFORVMoeCkJCQkoeCAt IDEpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9GUkFNRVJfRU4JCQlCSVQoMykNCj4gPiAtI2RlZmlu ZSBDRE5TX0RQX1JBVEVfR09WRVJOT1JfRU4JCUJJVCg0KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBf Tk9fVklERU9fTU9ERQkJCUJJVCg1KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfRElTQUJMRV9QSFlf UlNUCQkJQklUKDYpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9XUl9GQUlMSU5HX0VER0VfVlNZTkMJ CUJJVCg3KQ0KPiA+IC0NCj4gPiAtI2RlZmluZSBDRE5TX0RQX1NXX1JFU0VUCQkJKENETlNfRFBU WF9GUkFNRVIgKyAweDA0KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfRlJBTUVSX1RVCQkJKENETlNf RFBUWF9GUkFNRVIgKyAweDA4KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfRlJBTUVSX1RVX1NJWkUo eCkJCSgoKHgpICYgR0VOTUFTSyg2LCAwKSkgPDwgOCkNCj4gPiAtI2RlZmluZSBDRE5TX0RQX0ZS QU1FUl9UVV9WUyh4KQkJCSgoeCkgJiBHRU5NQVNLKDUsIDApKQ0KPiA+IC0jZGVmaW5lIENETlNf RFBfRlJBTUVSX1RVX0NOVF9SU1RfRU4JCUJJVCgxNSkNCj4gPiAtDQo+ID4gLSNkZWZpbmUgQ0RO U19EUFRYX1NUUkVBTQkJCTB4MDMwMDANCj4gPiAtI2RlZmluZSBDRE5TX0RQX01TQV9IT1JJWk9O VEFMXzAJCShDRE5TX0RQVFhfU1RSRUFNICsgMHgwMCkNCj4gPiAtI2RlZmluZSBDRE5TX0RQX01T QUgwX0hfVE9UQUwoeCkJCSh4KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfTVNBSDBfSFNZTkNfU1RB UlQoeCkJCSgoeCkgPDwgMTYpDQo+ID4gLQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfTVNBX0hPUkla T05UQUxfMQkJKENETlNfRFBUWF9TVFJFQU0gKyAweDA0KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBf TVNBSDFfSFNZTkNfV0lEVEgoeCkJCSh4KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfTVNBSDFfSFNZ TkNfUE9MX0xPVwkJQklUKDE1KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfTVNBSDFfSERJU1BfV0lE VEgoeCkJCSgoeCkgPDwgMTYpDQo+ID4gLQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfTVNBX1ZFUlRJ Q0FMXzAJCQkoQ0ROU19EUFRYX1NUUkVBTSArIDB4MDgpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9N U0FWMF9WX1RPVEFMKHgpCQkoeCkNCj4gPiAtI2RlZmluZSBDRE5TX0RQX01TQVYwX1ZTWU5DX1NU QVJUKHgpCQkoKHgpIDw8IDE2KQ0KPiA+IC0NCj4gPiAtI2RlZmluZSBDRE5TX0RQX01TQV9WRVJU SUNBTF8xCQkJKENETlNfRFBUWF9TVFJFQU0gKyAweDBjKQ0KPiA+IC0jZGVmaW5lIENETlNfRFBf TVNBVjFfVlNZTkNfV0lEVEgoeCkJCSh4KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfTVNBVjFfVlNZ TkNfUE9MX0xPVwkJQklUKDE1KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfTVNBVjFfVkRJU1BfV0lE VEgoeCkJCSgoeCkgPDwgMTYpDQo+ID4gLQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfTVNBX01JU0MJ CQkoQ0ROU19EUFRYX1NUUkVBTSArIDB4MTApDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9TVFJFQU1f Q09ORklHCQkJKENETlNfRFBUWF9TVFJFQU0gKyAweDE0KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBf UkFURV9HT1ZFUk5PUl9TVEFUVVMJCShDRE5TX0RQVFhfU1RSRUFNICsgMHgyYykNCj4gPiAtI2Rl ZmluZSBDRE5TX0RQX1JHX1RVX1ZTX0RJRkYoeCkJCSgoeCkgPDwgOCkNCj4gPiAtDQo+ID4gLSNk ZWZpbmUgQ0ROU19EUF9IT1JJWk9OVEFMCQkJKENETlNfRFBUWF9TVFJFQU0gKyAweDMwKQ0KPiA+ IC0jZGVmaW5lIENETlNfRFBfSF9IU1lOQ19XSURUSCh4KQkJKHgpDQo+ID4gLSNkZWZpbmUgQ0RO U19EUF9IX0hfVE9UQUwoeCkJCQkoKHgpIDw8IDE2KQ0KPiA+IC0NCj4gPiAtI2RlZmluZSBDRE5T X0RQX1ZFUlRJQ0FMXzAJCQkoQ0ROU19EUFRYX1NUUkVBTSArIDB4MzQpDQo+ID4gLSNkZWZpbmUg Q0ROU19EUF9WMF9WSEVJR0hUKHgpCQkJKHgpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9WMF9WU1RB UlQoeCkJCQkoKHgpIDw8IDE2KQ0KPiA+IC0NCj4gPiAtI2RlZmluZSBDRE5TX0RQX1ZFUlRJQ0FM XzEJCQkoQ0ROU19EUFRYX1NUUkVBTSArIDB4MzgpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9WMV9W VE9UQUwoeCkJCQkoeCkNCj4gPiAtI2RlZmluZSBDRE5TX0RQX1YxX1ZUT1RBTF9FVkVOCQkJQklU KDE2KQ0KPiA+IC0NCj4gPiAtI2RlZmluZSBDRE5TX0RQX0ZSQU1FUl9QWExfUkVQUgkJCShDRE5T X0RQVFhfU1RSRUFNICsgMHg0YykNCj4gPiAtI2RlZmluZSBDRE5TX0RQX0ZSQU1FUl82X0JQQwkJ CUJJVCgwKQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfRlJBTUVSXzhfQlBDCQkJQklUKDEpDQo+ID4g LSNkZWZpbmUgQ0ROU19EUF9GUkFNRVJfMTBfQlBDCQkJQklUKDIpDQo+ID4gLSNkZWZpbmUgQ0RO U19EUF9GUkFNRVJfMTJfQlBDCQkJQklUKDMpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9GUkFNRVJf MTZfQlBDCQkJQklUKDQpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9GUkFNRVJfUFhMX0ZPUk1BVAkJ MHg4DQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9GUkFNRVJfUkdCCQkJQklUKDApDQo+ID4gLSNkZWZp bmUgQ0ROU19EUF9GUkFNRVJfWUNCQ1I0NDQJCQlCSVQoMSkNCj4gPiAtI2RlZmluZSBDRE5TX0RQ X0ZSQU1FUl9ZQ0JDUjQyMgkJCUJJVCgyKQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfRlJBTUVSX1lD QkNSNDIwCQkJQklUKDMpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9GUkFNRVJfWV9PTkxZCQkJQklU KDQpDQo+ID4gLQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfRlJBTUVSX1NQCQkJKENETlNfRFBUWF9T VFJFQU0gKyAweDEwKQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfRlJBTUVSX1ZTWU5DX1BPTF9MT1cJ CUJJVCgwKQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfRlJBTUVSX0hTWU5DX1BPTF9MT1cJCUJJVCgx KQ0KPiA+IC0jZGVmaW5lIENETlNfRFBfRlJBTUVSX0lOVEVSTEFDRQkJQklUKDIpDQo+ID4gLQ0K PiA+IC0jZGVmaW5lIENETlNfRFBfTElORV9USFJFU0gJCQkoQ0ROU19EUFRYX1NUUkVBTSArIDB4 NjQpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9WQl9JRAkJCQkoQ0ROU19EUFRYX1NUUkVBTSArIDB4 NjgpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9WQl9JRF9JTlRFUkxBQ0VECQlCSVQoMikNCj4gPiAt DQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9GUk9OVF9CQUNLX1BPUkNICQkoQ0ROU19EUFRYX1NUUkVB TSArIDB4NzgpDQo+ID4gLSNkZWZpbmUgQ0ROU19EUF9CQUNLX1BPUkNIKHgpCQkJKHgpDQo+ID4g LSNkZWZpbmUgQ0ROU19EUF9GUk9OVF9QT1JDSCh4KQkJCSgoeCkgPDwgMTYpDQo+ID4gLQ0KPiA+ IC0jZGVmaW5lIENETlNfRFBfQllURV9DT1VOVAkJCShDRE5TX0RQVFhfU1RSRUFNICsgMHg3YykN Cj4gPiAtDQo+ID4gLSNkZWZpbmUgQ0ROU19EUFRYX0dMT0JBTAkJCTB4MDIzMDANCj4gPiAtI2Rl ZmluZSBDRE5TX0RQX0xBTkVfRU4JCQkJKENETlNfRFBUWF9HTE9CQUwgKyAweDAwKQ0KPiA+IC0j ZGVmaW5lIENETlNfRFBfTEFORV9FTl9MQU5FUyh4KQkJR0VOTUFTSyh4IC0gMSwgMCkNCj4gPiAt I2RlZmluZSBDRE5TX0RQX0VOSE5DRAkJCQkoQ0ROU19EUFRYX0dMT0JBTCArIDB4MDQpDQo+ID4g LQ0KPiA+ICAjZGVmaW5lIENETlNfTUhEUF9JTUVNCQkJCTB4MTAwMDANCj4gPiAgI2RlZmluZSBD RE5TX01IRFBfRE1FTQkJCQkweDIwMDAwDQo+ID4gIA0KPiA+IEBAIC0yMTYsMTMgKzg1LDE3IEBA IE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1oZHBfaWRzKTsNCj4gPiAgc3RhdGljIGlubGluZSBz dHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqY29ubmVjdG9yX3RvX21oZHAoDQo+ID4gIAlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubikNCj4gPiAgew0KPiA+IC0JcmV0dXJuIGNvbnRhaW5lcl9vZihj b25uLCBzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSwgY29ubmVjdG9yKTsNCj4gPiArCXN0cnVjdCBj ZG5zX21oZHBfY29ubmVjdG9yICptaGRwX2Nvbm5lY3RvciA9IHRvX21oZHBfY29ubmVjdG9yKGNv bm4pOw0KPiA+ICsNCj4gPiArCXJldHVybiBtaGRwX2Nvbm5lY3Rvci0+YnJpZGdlLT5taGRwOw0K PiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBjZG5zX21oZHBfZGV2aWNl ICpicmlkZ2VfdG9fbWhkcCgNCj4gPiAgCXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpDQo+ID4g IHsNCj4gPiAtCXJldHVybiBjb250YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3QgY2Ruc19taGRwX2Rl dmljZSwgYnJpZGdlKTsNCj4gPiArCXN0cnVjdCBjZG5zX21oZHBfYnJpZGdlICptaGRwX2JyaWRn ZSA9IHRvX21oZHBfYnJpZGdlKGJyaWRnZSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIG1oZHBfYnJp ZGdlLT5taGRwOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMgdW5zaWduZWQgaW50IG1heF9s aW5rX3JhdGUoc3RydWN0IGNkbnNfbWhkcF9ob3N0IGhvc3QsDQo+ID4gQEAgLTIzNyw2ICsxMTAs NjIgQEAgc3RhdGljIHU4IGVxX3RyYWluaW5nX3BhdHRlcm5fc3VwcG9ydGVkKHN0cnVjdCBjZG5z X21oZHBfaG9zdCBob3N0LA0KPiA+ICAJcmV0dXJuIGZscyhob3N0LnBhdHRlcm5fc3VwcCAmIHNp bmsucGF0dGVybl9zdXBwKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGljIHZvaWQgbWhkcF9o b3RwbHVnX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ID4gK3sNCj4gPiAr CXN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwOw0KPiA+ICsJaW50IGRyZXQsIHJldHJ5Ow0K PiA+ICsJdTggZXNpWzE2XSA9IHsgMCB9Ow0KPiA+ICsJYm9vbCBuZXdfaXJxX2hhbmRsZWQ7DQo+ ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOw0KPiA+ICsJYm9vbCBvbGRfcGx1 Z2dlZDsNCj4gPiArDQo+ID4gKw0KPiA+ICsJbWhkcCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1 Y3QgY2Ruc19taGRwX2RldmljZSwNCj4gPiArCQkJICAgIGhvdHBsdWdfd29yay53b3JrKTsNCj4g PiArCWNvbm5lY3RvciA9ICZtaGRwLT5jb25uZWN0b3IuYmFzZTsNCj4gPiArDQo+ID4gKwlvbGRf cGx1Z2dlZCA9IG1oZHAtPnBsdWdnZWQ7DQo+ID4gKwljb25uZWN0b3ItPnN0YXR1cyA9IGNvbm5l Y3Rvci0+ZnVuY3MtPmRldGVjdChjb25uZWN0b3IsIGZhbHNlKTsNCj4gPiArCWlmIChvbGRfcGx1 Z2dlZCAhPSBtaGRwLT5wbHVnZ2VkKSB7DQo+ID4gKwkJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19l dmVudChtaGRwLT5icmlkZ2UuYmFzZS5kZXYpOw0KPiA+ICsJCXJldHVybjsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwlpZiAobWhkcC0+cGx1Z2dlZCkgew0KPiA+ICsJCWRyZXQgPSBkcm1fZHBfZHBj ZF9yZWFkKCZtaGRwLT5hdXgsDQo+ID4gKwkJCQkJRFBfU0lOS19DT1VOVF9FU0ksIGVzaSwgOCk7 DQo+ID4gKw0KPiA+ICsJCWlmIChkcmV0ID09IDgpIHsNCj4gPiArCQkJZHJtX2RwX21zdF9ocGRf aXJxKCZtaGRwLT5tc3RfbWdyLA0KPiA+ICsJCQkJCSAgIGVzaSwNCj4gPiArCQkJCQkgICAmbmV3 X2lycV9oYW5kbGVkKTsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWlmIChuZXdfaXJxX2hhbmRs ZWQpIHsNCj4gPiArCQkJZm9yIChyZXRyeSA9IDA7IHJldHJ5IDwgMzsgcmV0cnkrKykgew0KPiA+ ICsJCQkJaW50IHdyZXQ7DQo+ID4gKw0KPiA+ICsJCQkJd3JldCA9IGRybV9kcF9kcGNkX3dyaXRl KCZtaGRwLT5hdXgsDQo+ID4gKwkJCQkJCQkgRFBfU0lOS19DT1VOVF9FU0krMSwNCj4gPiArCQkJ CQkJCSAmZXNpWzFdLCAzKTsNCj4gPiArCQkJCWlmICh3cmV0ID09IDMpDQo+ID4gKwkJCQkJYnJl YWs7DQo+ID4gKwkJCX0NCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgbWhkcF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpk YXRhKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCA9IChzdHJ1 Y3QgY2Ruc19taGRwX2RldmljZSAqKWRhdGE7DQo+ID4gKw0KPiA+ICsJaWYgKHJlYWRsKG1oZHAt PnJlZ3MgKyBDRE5TX1NXX0VWRU5UMCkgJiBDRE5TX0RQVFhfSFBEKQ0KPiA+ICsJCXNjaGVkdWxl X2RlbGF5ZWRfd29yaygmbWhkcC0+aG90cGx1Z193b3JrLCAwKTsNCj4gPiArDQo+ID4gKwlyZXR1 cm4gSVJRX0hBTkRMRUQ7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBzc2l6ZV90IG1oZHBf dHJhbnNmZXIoc3RydWN0IGRybV9kcF9hdXggKmF1eCwNCj4gPiAgCQkJICAgICBzdHJ1Y3QgZHJt X2RwX2F1eF9tc2cgKm1zZykNCj4gPiAgew0KPiA+IEBAIC0zMDAsMTAgKzIyOSwxNiBAQCBzdGF0 aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBjZG5zX21oZHBfZGV0ZWN0KHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uLA0KPiA+ICAJaW50IHJldDsNCj4gPiAgDQo+ID4gIAlyZXQgPSBjZG5z X21oZHBfZ2V0X2hwZF9zdGF0dXMobWhkcCk7DQo+ID4gLQlpZiAocmV0ID4gMCkNCj4gPiAtCQlz dGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsNCj4gPiAtCWVsc2UgaWYgKHJldCA8 IDApDQo+ID4gKwlpZiAocmV0ID4gMCkgew0KPiA+ICsJCW1oZHAtPnBsdWdnZWQgPSB0cnVlOw0K PiA+ICsJCWNkbnNfbWhkcF9tc3RfcHJvYmUobWhkcCk7DQo+ID4gKwkJLy8gZm9yIE1TVCBtb2Rl IHRoaXMgY29ubmVjdG9yIHdpbGwgYmUgYWx3YXlzIGRpc2Nvbm5lY3RlZA0KPiA+ICsJCWlmICgh bWhkcC0+aXNfbXN0KQ0KPiA+ICsJCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZDsNCj4gPiArCX0gZWxzZSBpZiAocmV0IDwgMCkNCj4gPiAgCQlkZXZfZXJyKG1oZHAtPmRldiwg IkZhaWxlZCB0byBvYnRhaW4gSFBEIHN0YXRlXG4iKTsNCj4gPiArCWVsc2UNCj4gPiArCQltaGRw LT5wbHVnZ2VkID0gZmFsc2U7DQo+ID4gIA0KPiA+ICAJcmV0dXJuIHN0YXR1czsNCj4gPiAgfQ0K PiA+IEBAIC0zMjEsMTEgKzI1NiwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3JfZnVuY3MgY2Ruc19taGRwX2Nvbm5fZnVuY3MgPSB7DQo+ID4gIHN0YXRpYyBpbnQgY2Ruc19t aGRwX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1 Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCA9IGJyaWRnZV90b19taGRwKGJyaWRnZSk7DQo+ID4g LQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubiA9ICZtaGRwLT5jb25uZWN0b3I7DQo+ID4gKwlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubiA9ICZtaGRwLT5jb25uZWN0b3IuYmFzZTsNCj4gPiAg CWludCByZXQ7DQo+ID4gIA0KPiA+IC0JY29ubi0+cG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xM X0NPTk5FQ1QgfA0KPiA+IC0JCURSTV9DT05ORUNUT1JfUE9MTF9ESVNDT05ORUNUOw0KPiA+ICsJ aWYgKCZtaGRwLT5icmlkZ2UuYmFzZSAhPSBicmlkZ2UpDQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7 DQo+ID4gKw0KPiA+ICsJY2Ruc19taGRwX21zdF9pbml0KG1oZHApOw0KPiA+ICsNCj4gPiArCWNv bm4tPnBvbGxlZCA9IERSTV9DT05ORUNUT1JfUE9MTF9IUEQ7DQo+ID4gIA0KPiA+ICAJcmV0ID0g ZHJtX2Nvbm5lY3Rvcl9pbml0KGJyaWRnZS0+ZGV2LCBjb25uLCAmY2Ruc19taGRwX2Nvbm5fZnVu Y3MsDQo+ID4gIAkJCQkgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KTsNCj4gPiBAQCAt MzQyLDE3ICsyODEsMTIgQEAgc3RhdGljIGludCBjZG5zX21oZHBfYXR0YWNoKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UpDQo+ID4gIAkJcmV0dXJuIHJldDsNCj4gPiAgCX0NCj4gPiAgDQo+ID4g KwkvKiBlbmFibGUgaW50ZXJydXB0cyAqLw0KPiA+ICsJd3JpdGVsKH5DRE5TX0FQQl9JTlRfTUFT S19TV19FVkVOVF9JTlQsIG1oZHAtPnJlZ3MgKyBDRE5TX0FQQl9JTlRfTUFTSyk7DQo+ID4gKw0K PiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgDQo+ID4gLWVudW0gcGl4ZWxfZm9ybWF0IHsN Cj4gPiAtCVBJWEVMX0ZPUk1BVF9SR0IgPSAxLA0KPiA+IC0JUElYRUxfRk9STUFUX1lDQkNSXzQ0 NCA9IDIsDQo+ID4gLQlQSVhFTF9GT1JNQVRfWUNCQ1JfNDIyID0gNCwNCj4gPiAtCVBJWEVMX0ZP Uk1BVF9ZQ0JDUl80MjAgPSA4LA0KPiA+IC0JUElYRUxfRk9STUFUX1lfT05MWSA9IDE2LA0KPiA+ IC19Ow0KPiA+IC0NCj4gPiAgc3RhdGljIHZvaWQgbWhkcF9saW5rX3RyYWluaW5nX2luaXQoc3Ry dWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHApDQo+ID4gIHsNCj4gPiAgCXUzMiByZWczMjsNCj4g PiBAQCAtNzE2LDEzICs2NTAsMTEgQEAgc3RhdGljIGludCBtaGRwX2xpbmtfdHJhaW5pbmcoc3Ry dWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAsDQo+ID4gIAljZG5zX21oZHBfcmVnX3dyaXRlKG1o ZHAsIENETlNfRFBfU1dfUkVTRVQsIDEpOw0KPiA+ICAJY2Ruc19taGRwX3JlZ193cml0ZShtaGRw LCBDRE5TX0RQX1NXX1JFU0VULCAwKTsNCj4gPiAgDQo+ID4gLQkvKiBFbmFibGUgZnJhbWVyICov DQo+ID4gLQkvKiBGSVhNRTogdXBkYXRlIHdoZW4gTVNUIHN1cHBvcnRlZCwgQklUKDIpICovDQo+ ID4gIAljZG5zX21oZHBfcmVnX3dyaXRlKG1oZHAsIENETlNfRFBfRlJBTUVSX0dMT0JBTF9DT05G SUcsDQo+ID4gLQkJCSAgICBDRE5TX0RQX0ZSQU1FUl9FTiB8DQo+ID4gIAkJCSAgICBDRE5TX0RQ X05VTV9MQU5FUyhtaGRwLT5saW5rLm51bV9sYW5lcykgfA0KPiA+ICAJCQkgICAgQ0ROU19EUF9E SVNBQkxFX1BIWV9SU1QgfA0KPiA+ICAJCQkgICAgQ0ROU19EUF9XUl9GQUlMSU5HX0VER0VfVlNZ TkMgfA0KPiA+ICsJCQkgICAgKG1oZHAtPmlzX21zdCA/IENETlNfRFBfTVNUX0VOIDogMCkgfA0K PiA+ICAJCQkgICAgKCF2aWRlb19tb2RlID8gQ0ROU19EUF9OT19WSURFT19NT0RFIDogMCkpOw0K PiA+ICANCj4gPiAgCS8qIFJlc2V0IFBIWSBjb25maWcgKi8NCj4gPiBAQCAtNzUxLDMxICs2ODMs MjAgQEAgc3RhdGljIHZvaWQgY2Ruc19taGRwX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSkNCj4gPiAgDQo+ID4gIAljZG5zX21oZHBfc2V0X3ZpZGVvX3N0YXR1cyhtaGRwLCAwKTsN Cj4gPiAgDQo+ID4gKwltaGRwLT5saW5rX3VwID0gZmFsc2U7DQo+ID4gKw0KPiA+ICAJZHJtX2Rw X2xpbmtfcG93ZXJfZG93bigmbWhkcC0+YXV4LCAmbWhkcC0+bGluayk7DQo+ID4gKwlpZiAobWhk cC0+aXNfbXN0KQ0KPiA+ICsJCWNkbnNfbWhkcF9tc3RfZGlzYWJsZShicmlkZ2UpOw0KPiA+ICB9 DQo+ID4gIA0KPiA+IC1zdGF0aWMgdm9pZCBjZG5zX21oZHBfZW5hYmxlKHN0cnVjdCBkcm1fYnJp ZGdlICpicmlkZ2UpDQo+ID4gK3N0YXRpYyBpbnQgY2Ruc19taGRwX2xpbmtfdXAoc3RydWN0IGNk bnNfbWhkcF9kZXZpY2UgKm1oZHApDQo+ID4gIHsNCj4gPiAtCXN0cnVjdCBjZG5zX21oZHBfZGV2 aWNlICptaGRwID0gYnJpZGdlX3RvX21oZHAoYnJpZGdlKTsNCj4gPiAtCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlOw0KPiA+IC0Jc3RydWN0IGRybV9kaXNwbGF5X2luZm8gKmRpc3BfaW5m byA9ICZtaGRwLT5jb25uZWN0b3IuZGlzcGxheV9pbmZvOw0KPiA+IC0JZW51bSBwaXhlbF9mb3Jt YXQgcHhsZm10Ow0KPiA+IC0JaW50IHB4bGNsb2NrOw0KPiA+IC0JdW5zaWduZWQgaW50IHJhdGUs IHR1X3NpemUgPSAzMCwgdnMsIHZzX2YsIGJwcCwgcmVxdWlyZWRfYmFuZHdpZHRoLA0KPiA+IC0J CSAgICAgYXZhaWxhYmxlX2JhbmR3aWR0aCwgZHBfZnJhbWVyX3NwID0gMCwgbXNhX2hvcml6b250 YWxfMSwNCj4gPiAtCQkgICAgIG1zYV92ZXJ0aWNhbF8xLCBibmRfaHN5bmMydnN5bmMsIGhzeW5j MnZzeW5jX3BvbF9jdHJsLA0KPiA+IC0JCSAgICAgbWlzYzAgPSAwLCBtaXNjMSA9IDAsIGxpbmVf dGhyZXNoID0gMCwgcHhsX3JlcHIsDQo+ID4gLQkJICAgICBmcm9udF9wb3JjaCwgYmFja19wb3Jj aCwgbXNhX2gwLCBtc2FfdjAsIGhzeW5jLCB2c3luYywNCj4gPiAtCQkgICAgIGRwX3ZlcnRpY2Fs XzEsIGxpbmVfdGhyZXNoMSwgbGluZV90aHJlc2gyOw0KPiA+ICAJdTMyIHJlc3A7DQo+ID4gLQ0K PiA+IC0JdW5zaWduZWQgaW50IHNpemUgPSBEUF9SRUNFSVZFUl9DQVBfU0laRSwgZHBfZnJhbWVy X2dsb2JhbF9jb25maWcsDQo+ID4gKwl1MzIgc2l6ZSA9IERQX1JFQ0VJVkVSX0NBUF9TSVpFLCBk cF9mcmFtZXJfZ2xvYmFsX2NvbmZpZywNCj4gPiAgCQkgICAgIHZpZGVvX21vZGUsIHRyYWluaW5n X2ludGVydmFsX3VzOw0KPiA+ICAJdTggcmVnMFtzaXplXSwgcmVnOCwgYW1wWzJdOw0KPiA+ICAN Cj4gPiAtCW1vZGUgPSAmYnJpZGdlLT5lbmNvZGVyLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9k ZTsNCj4gPiAtCXB4bGNsb2NrID0gbW9kZS0+Y3J0Y19jbG9jazsNCj4gPiAtDQo+ID4gIAkvKg0K PiA+ICAJICogVXBvbiBwb3dlci1vbiByZXNldC9kZXZpY2UgZGlzY29ubmVjdGlvbjogWzI6MF0g Yml0cyBzaG91bGQgYmUgMGIwMDENCj4gPiAgCSAqIGFuZCBbNzo1XSBiaXRzIDBiMDAwLg0KPiA+ IEBAIC04MjQsMTMgKzc0NSwxNyBAQCBzdGF0aWMgdm9pZCBjZG5zX21oZHBfZW5hYmxlKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpDQo+ID4gIAlkZWZhdWx0Og0KPiA+ICAJCWRldl9lcnIobWhk cC0+ZGV2LA0KPiA+ICAJCQkid3JvbmcgdHJhaW5pbmcgaW50ZXJ2YWwgcmV0dXJuZWQgYnkgRFBD RDogJWRcbiIsIHJlZzgpOw0KPiA+IC0JCXJldHVybjsNCj4gPiArCQlyZXR1cm4gLUVJTzsNCj4g PiAgCX0NCj4gPiAgDQo+ID4gIAljZG5zX21oZHBfcmVnX3JlYWQobWhkcCwgQ0ROU19EUF9GUkFN RVJfR0xPQkFMX0NPTkZJRywgJnJlc3ApOw0KPiA+ICANCj4gPiAgCWRwX2ZyYW1lcl9nbG9iYWxf Y29uZmlnID0gYmUzMl90b19jcHUocmVzcCk7DQo+ID4gIA0KPiA+ICsJY2Ruc19taGRwX21zdF9w cm9iZShtaGRwKTsNCj4gPiArCWlmIChtaGRwLT5pc19tc3QpDQo+ID4gKwkJZHBfZnJhbWVyX2ds b2JhbF9jb25maWcgfD0gQ0ROU19EUF9NU1RfRU47DQo+ID4gKw0KPiA+ICAJdmlkZW9fbW9kZSA9 ICEoZHBfZnJhbWVyX2dsb2JhbF9jb25maWcgJiBDRE5TX0RQX05PX1ZJREVPX01PREUpOw0KPiA+ ICANCj4gPiAgCWlmIChkcF9mcmFtZXJfZ2xvYmFsX2NvbmZpZyAmIENETlNfRFBfRlJBTUVSX0VO KQ0KPiA+IEBAIC04NTAsNTAgKzc3NSwxNjggQEAgc3RhdGljIHZvaWQgY2Ruc19taGRwX2VuYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICAJCWlmIChtaGRwX2xpbmtfdHJhaW5p bmcobWhkcCwgdmlkZW9fbW9kZSwNCj4gPiAgCQkJCSAgICAgICB0cmFpbmluZ19pbnRlcnZhbF91 cykpIHsNCj4gPiAgCQkJZGV2X2VycihtaGRwLT5kZXYsICJMaW5rIHRyYWluaW5nIGZhaWxlZC4g RXhpdGluZy5cbiIpOw0KPiA+IC0JCQlyZXR1cm47DQo+ID4gKwkJCXJldHVybiAtRUlPOw0KPiA+ ICAJCX0NCj4gPiAgCX0NCj4gPiAgDQo+ID4gKwltaGRwLT5saW5rX3VwID0gdHJ1ZTsNCj4gPiAr DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjZG5zX21o ZHBfc3N0X2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICt7DQo+ID4gKwlz dHJ1Y3QgY2Ruc19taGRwX2JyaWRnZSAqbWhkcF9icmlkZ2UgPSB0b19taGRwX2JyaWRnZShicmlk Z2UpOw0KPiA+ICsJc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAgPSBtaGRwX2JyaWRnZS0+ bWhkcDsNCj4gPiArCXUzMiByYXRlLCB2cywgdnNfZiwgcmVxdWlyZWRfYmFuZHdpZHRoLCBhdmFp bGFibGVfYmFuZHdpZHRoOw0KPiA+ICsJdTMyIGJwcCwgdHVfc2l6ZSA9IDMwLCBsaW5lX3RocmVz aDEsIGxpbmVfdGhyZXNoMiwgbGluZV90aHJlc2ggPSAwOw0KPiA+ICsJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGU7DQo+ID4gKwlpbnQgcHhsY2xvY2s7DQo+ID4gKwllbnVtIHBpeGVsX2Zv cm1hdCBweGxmbXQ7DQo+ID4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqZGlzcF9pbmZvID0g Jm1oZHAtPmNvbm5lY3Rvci5iYXNlLmRpc3BsYXlfaW5mbzsNCj4gPiArDQo+ID4gKw0KPiA+ICsJ bW9kZSA9ICZicmlkZ2UtPmVuY29kZXItPmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlOw0KPiA+ ICsJcHhsY2xvY2sgPSBtb2RlLT5jcnRjX2Nsb2NrOw0KPiA+ICsNCj4gPiArCW1oZHBfYnJpZGdl LT5zdHJlYW1faWQgPSAwOw0KPiA+ICsNCj4gPiAgCXJhdGUgPSBtaGRwLT5saW5rLnJhdGUgLyAx MDAwOw0KPiA+ICANCj4gPiArCXB4bGZtdCA9IGNkbnNfbWhkcF9nZXRfcHhsZm10KGRpc3BfaW5m by0+Y29sb3JfZm9ybWF0cyk7DQo+ID4gKwlicHAgPSBjZG5zX21oZHBfZ2V0X2JwcChkaXNwX2lu Zm8tPmJwYywgcHhsZm10KTsNCj4gPiArDQo+ID4gKwkvKiBmaW5kIG9wdGltYWwgdHVfc2l6ZSAq Lw0KPiA+ICsJcmVxdWlyZWRfYmFuZHdpZHRoID0gcHhsY2xvY2sgKiBicHAgLyA4Ow0KPiA+ICsJ YXZhaWxhYmxlX2JhbmR3aWR0aCA9IG1oZHAtPmxpbmsubnVtX2xhbmVzICogcmF0ZTsNCj4gPiAr CWRvIHsNCj4gPiArCQl0dV9zaXplICs9IDI7DQo+ID4gKw0KPiA+ICsJCXZzX2YgPSB0dV9zaXpl ICogcmVxdWlyZWRfYmFuZHdpZHRoIC8gYXZhaWxhYmxlX2JhbmR3aWR0aDsNCj4gPiArCQl2cyA9 IHZzX2YgLyAxMDAwOw0KPiA+ICsJCXZzX2YgPSB2c19mICUgMTAwMDsNCj4gPiArCQkvKg0KPiA+ ICsJCSAqIEZJWE1FIChDRE5TKTogZG93bnNwcmVhZGluZz8NCj4gPiArCQkgKiBJdCdzIHVudXNl ZCBpcyB3aGF0IEkndmUgYmVlbiB0b2xkLg0KPiA+ICsJCSAqLw0KPiA+ICsJfSB3aGlsZSAoKHZz ID09IDEgfHwgKCh2c19mID4gODUwIHx8IHZzX2YgPCAxMDApICYmIHZzX2YgIT0gMCkgfHwNCj4g PiArCQkgIHR1X3NpemUgLSB2cyA8IDIpICYmIHR1X3NpemUgPCA2NCk7DQo+ID4gKw0KPiA+ICsJ aWYgKHZzID4gNjQpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsNCj4gPiAr CWNkbnNfbWhkcF9yZWdfd3JpdGUobWhkcCwgQ0ROU19EUF9GUkFNRVJfVFUsDQo+ID4gKwkJCSAg ICBDRE5TX0RQX0ZSQU1FUl9UVV9WUyh2cykgfA0KPiA+ICsJCQkgICAgQ0ROU19EUF9GUkFNRVJf VFVfU0laRSh0dV9zaXplKSB8DQo+ID4gKwkJCSAgICBDRE5TX0RQX0ZSQU1FUl9UVV9DTlRfUlNU X0VOKTsNCj4gPiArDQo+ID4gKwlsaW5lX3RocmVzaDEgPSAoKHZzICsgMSkgPDwgNSkgKiA4IC8g YnBwOw0KPiA+ICsJbGluZV90aHJlc2gyID0gKHB4bGNsb2NrIDw8IDUpIC8gMTAwMCAvIHJhdGUg KiAodnMgKyAxKSAtICgxIDw8IDUpOw0KPiA+ICsJbGluZV90aHJlc2ggPSBsaW5lX3RocmVzaDEg LSBsaW5lX3RocmVzaDIgLyBtaGRwLT5saW5rLm51bV9sYW5lczsNCj4gPiArCWxpbmVfdGhyZXNo ID0gKGxpbmVfdGhyZXNoID4+IDUpICsgMjsNCj4gPiArCWNkbnNfbWhkcF9yZWdfd3JpdGUobWhk cCwgQ0ROU19EUF9MSU5FX1RIUkVTSCgwKSwNCj4gPiArCQkJICAgIGxpbmVfdGhyZXNoICYgR0VO TUFTSyg1LCAwKSk7DQo+ID4gKw0KPiA+ICsJY2Ruc19taGRwX3JlZ193cml0ZShtaGRwLCBDRE5T X0RQX1NUUkVBTV9DT05GSUdfMigwKSwNCj4gPiArCQkJICAgIENETlNfRFBfU0MyX1RVX1ZTX0RJ RkYoKHR1X3NpemUgLSB2cyA+IDMpID8NCj4gPiArCQkJCQkJICAgICAgIDAgOiB0dV9zaXplIC0g dnMpKTsNCj4gPiArDQo+ID4gKwljZG5zX21oZHBfY29uZmlndXJlX3ZpZGVvKGJyaWRnZSk7DQo+ ID4gKw0KPiA+ICsJY2Ruc19taGRwX3NldF92aWRlb19zdGF0dXMobWhkcCwgMSk7DQo+ID4gKw0K PiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK2VudW0gcGl4ZWxfZm9ybWF0IGNk bnNfbWhkcF9nZXRfcHhsZm10KHUzMiBjb2xvcl9mb3JtYXRzKQ0KPiA+ICt7DQo+ID4gKwllbnVt IHBpeGVsX2Zvcm1hdCBweGxmbXQ7DQo+ID4gKw0KPiA+ICAJLyogRklYTUU6IHdoYXQgYWJvdXQg WV9PTkxZPyBob3cgaXMgaXQgaGFuZGxlZCBpbiB0aGUga2VybmVsPyAqLw0KPiA+IC0JaWYgKGRp c3BfaW5mby0+Y29sb3JfZm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0NDQpDQo+ID4g KwlpZiAoY29sb3JfZm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0NDQpDQo+ID4gIAkJ cHhsZm10ID0gUElYRUxfRk9STUFUX1lDQkNSXzQ0NDsNCj4gPiAtCWVsc2UgaWYgKGRpc3BfaW5m by0+Y29sb3JfZm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjIpDQo+ID4gKwllbHNl IGlmIChjb2xvcl9mb3JtYXRzICYgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMikNCj4gPiAgCQlw eGxmbXQgPSBQSVhFTF9GT1JNQVRfWUNCQ1JfNDIyOw0KPiA+IC0JZWxzZSBpZiAoZGlzcF9pbmZv LT5jb2xvcl9mb3JtYXRzICYgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMCkNCj4gPiArCWVsc2Ug aWYgKGNvbG9yX2Zvcm1hdHMgJiBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDIwKQ0KPiA+ICAJCXB4 bGZtdCA9IFBJWEVMX0ZPUk1BVF9ZQ0JDUl80MjA7DQo+ID4gIAllbHNlDQo+ID4gIAkJcHhsZm10 ID0gUElYRUxfRk9STUFUX1JHQjsNCj4gPiAgDQo+ID4gKwlyZXR1cm4gcHhsZm10Ow0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsNCj4gPiArdTMyIGNkbnNfbWhkcF9nZXRfYnBwKHUzMiBicGMsIGVudW0g cGl4ZWxfZm9ybWF0IHB4bGZtdCkNCj4gPiArew0KPiA+ICsJdTMyIGJwcDsNCj4gPiArDQo+ID4g Kwlzd2l0Y2ggKHB4bGZtdCkgew0KPiA+ICsJY2FzZSBQSVhFTF9GT1JNQVRfUkdCOg0KPiA+ICsJ CWJwcCA9IGJwYyAqIDM7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIFBJWEVMX0ZPUk1BVF9Z Q0JDUl80NDQ6DQo+ID4gKwkJYnBwID0gYnBjICogMzsNCj4gPiArCQlicmVhazsNCj4gPiArCWNh c2UgUElYRUxfRk9STUFUX1lDQkNSXzQyMjoNCj4gPiArCQlicHAgPSBicGMgKiAyOw0KPiA+ICsJ CWJyZWFrOw0KPiA+ICsJY2FzZSBQSVhFTF9GT1JNQVRfWUNCQ1JfNDIwOg0KPiA+ICsJCWJwcCA9 IGJwYyAqIDMgLyAyOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlicHAg PSBicGM7DQo+ID4gKwl9DQo+ID4gKwlyZXR1cm4gYnBwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2 b2lkIGNkbnNfbWhkcF9jb25maWd1cmVfdmlkZW8oc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkN Cj4gPiArew0KPiA+ICsJc3RydWN0IGNkbnNfbWhkcF9icmlkZ2UgKm1oZHBfYnJpZGdlID0gdG9f bWhkcF9icmlkZ2UoYnJpZGdlKTsNCj4gPiArCXN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRw ID0gbWhkcF9icmlkZ2UtPm1oZHA7DQo+ID4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqZGlz cF9pbmZvOw0KPiA+ICsJdW5zaWduZWQgaW50IGJwcCwgIGRwX2ZyYW1lcl9zcCA9IDAsIG1zYV9o b3Jpem9udGFsXzEsDQo+ID4gKwkJICAgICBtc2FfdmVydGljYWxfMSwgYm5kX2hzeW5jMnZzeW5j LCBoc3luYzJ2c3luY19wb2xfY3RybCwNCj4gPiArCQkgICAgIG1pc2MwID0gMCwgbWlzYzEgPSAw LCBweGxfcmVwciwNCj4gPiArCQkgICAgIGZyb250X3BvcmNoLCBiYWNrX3BvcmNoLCBtc2FfaDAs IG1zYV92MCwgaHN5bmMsIHZzeW5jLA0KPiA+ICsJCSAgICAgZHBfdmVydGljYWxfMTsNCj4gPiAr CXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOw0KPiA+ICsJZW51bSBwaXhlbF9mb3JtYXQg cHhsZm10Ow0KPiA+ICsJaW50IHB4bGNsb2NrOw0KPiA+ICsJdTMyIHRtcDsNCj4gPiArCXU4IHN0 cmVhbV9pZCA9IG1oZHBfYnJpZGdlLT5zdHJlYW1faWQ7DQo+ID4gKw0KPiA+ICsJbW9kZSA9ICZi cmlkZ2UtPmVuY29kZXItPmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlOw0KPiA+ICsJcHhsY2xv Y2sgPSBtb2RlLT5jcnRjX2Nsb2NrOw0KPiA+ICsNCj4gPiArCWRpc3BfaW5mbyA9ICZtaGRwX2Jy aWRnZS0+Y29ubmVjdG9yLT5iYXNlLmRpc3BsYXlfaW5mbzsNCj4gPiArCXB4bGZtdCA9IGNkbnNf bWhkcF9nZXRfcHhsZm10KGRpc3BfaW5mby0+Y29sb3JfZm9ybWF0cyk7DQo+ID4gKw0KPiA+ICAJ LyogaWYgWUNCQ1Igc3VwcG9ydGVkIGFuZCBzdHJlYW0gbm90IFNELCB1c2UgSVRVNzA5ICovDQo+ ID4gIAkvKiBGSVhNRTogaGFuZGxlIElUVSB2ZXJzaW9uIHdpdGggWUNCQ1I0MjAgd2hlbiBzdXBw b3J0ZWQgKi8NCj4gPiAgCWlmICgocHhsZm10ID09IFBJWEVMX0ZPUk1BVF9ZQ0JDUl80NDQgfHwN Cj4gPiAgCSAgICAgcHhsZm10ID09IFBJWEVMX0ZPUk1BVF9ZQ0JDUl80MjIpICYmIG1vZGUtPmNy dGNfdmRpc3BsYXkgPj0gNzIwKQ0KPiA+ICAJCW1pc2MwID0gRFBfWUNCQ1JfQ09FRkZJQ0lFTlRT X0lUVTcwOTsNCj4gPiAgDQo+ID4gKwlicHAgPSBjZG5zX21oZHBfZ2V0X2JwcChkaXNwX2luZm8t PmJwYywgcHhsZm10KTsNCj4gPiArDQo+ID4gIAlzd2l0Y2ggKHB4bGZtdCkgew0KPiA+ICAJY2Fz ZSBQSVhFTF9GT1JNQVRfUkdCOg0KPiA+IC0JCWJwcCA9IGRpc3BfaW5mby0+YnBjICogMzsNCj4g PiAgCQlweGxfcmVwciA9IENETlNfRFBfRlJBTUVSX1JHQiA8PCBDRE5TX0RQX0ZSQU1FUl9QWExf Rk9STUFUOw0KPiA+ICAJCW1pc2MwIHw9IERQX0NPTE9SX0ZPUk1BVF9SR0I7DQo+ID4gIAkJYnJl YWs7DQo+ID4gIAljYXNlIFBJWEVMX0ZPUk1BVF9ZQ0JDUl80NDQ6DQo+ID4gLQkJYnBwID0gZGlz cF9pbmZvLT5icGMgKiAzOw0KPiA+ICAJCXB4bF9yZXByID0gQ0ROU19EUF9GUkFNRVJfWUNCQ1I0 NDQgPDwgQ0ROU19EUF9GUkFNRVJfUFhMX0ZPUk1BVDsNCj4gPiAgCQltaXNjMCB8PSBEUF9DT0xP Ul9GT1JNQVRfWUNiQ3I0NDQgfCBEUF9URVNUX0RZTkFNSUNfUkFOR0VfQ0VBOw0KPiA+ICAJCWJy ZWFrOw0KPiA+ICAJY2FzZSBQSVhFTF9GT1JNQVRfWUNCQ1JfNDIyOg0KPiA+IC0JCWJwcCA9IGRp c3BfaW5mby0+YnBjICogMjsNCj4gPiAgCQlweGxfcmVwciA9IENETlNfRFBfRlJBTUVSX1lDQkNS NDIyIDw8IENETlNfRFBfRlJBTUVSX1BYTF9GT1JNQVQ7DQo+ID4gIAkJbWlzYzAgfD0gRFBfQ09M T1JfRk9STUFUX1lDYkNyNDIyIHwgRFBfVEVTVF9EWU5BTUlDX1JBTkdFX0NFQTsNCj4gPiAgCQli cmVhazsNCj4gPiAgCWNhc2UgUElYRUxfRk9STUFUX1lDQkNSXzQyMDoNCj4gPiAtCQlicHAgPSBk aXNwX2luZm8tPmJwYyAqIDMgLyAyOw0KPiA+ICAJCXB4bF9yZXByID0gQ0ROU19EUF9GUkFNRVJf WUNCQ1I0MjAgPDwgQ0ROU19EUF9GUkFNRVJfUFhMX0ZPUk1BVDsNCj4gPiAgCQlicmVhazsNCj4g PiAgCWRlZmF1bHQ6DQo+ID4gLQkJYnBwID0gZGlzcF9pbmZvLT5icGM7DQo+ID4gIAkJcHhsX3Jl cHIgPSBDRE5TX0RQX0ZSQU1FUl9ZX09OTFkgPDwgQ0ROU19EUF9GUkFNRVJfUFhMX0ZPUk1BVDsN Cj4gPiAgCX0NCj4gPiAgDQo+ID4gQEAgLTkyMCwzMCArOTYzLDEyIEBAIHN0YXRpYyB2b2lkIGNk bnNfbWhkcF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiAgCQlicmVhazsN Cj4gPiAgCX0NCj4gPiAgDQo+ID4gLQkvKiBmaW5kIG9wdGltYWwgdHVfc2l6ZSAqLw0KPiA+IC0J cmVxdWlyZWRfYmFuZHdpZHRoID0gcHhsY2xvY2sgKiBicHAgLyA4Ow0KPiA+IC0JYXZhaWxhYmxl X2JhbmR3aWR0aCA9IG1oZHAtPmxpbmsubnVtX2xhbmVzICogcmF0ZTsNCj4gPiAtCWRvIHsNCj4g PiAtCQl0dV9zaXplICs9IDI7DQo+ID4gLQ0KPiA+IC0JCXZzX2YgPSB0dV9zaXplICogcmVxdWly ZWRfYmFuZHdpZHRoIC8gYXZhaWxhYmxlX2JhbmR3aWR0aDsNCj4gPiAtCQl2cyA9IHZzX2YgLyAx MDAwOw0KPiA+IC0JCXZzX2YgPSB2c19mICUgMTAwMDsNCj4gPiAtCQkvKg0KPiA+IC0JCSAqIEZJ WE1FIChDRE5TKTogZG93bnNwcmVhZGluZz8NCj4gPiAtCQkgKiBJdCdzIHVudXNlZCBpcyB3aGF0 IEkndmUgYmVlbiB0b2xkLg0KPiA+IC0JCSAqLw0KPiA+IC0JfSB3aGlsZSAoKHZzID09IDEgfHwg KCh2c19mID4gODUwIHx8IHZzX2YgPCAxMDApICYmIHZzX2YgIT0gMCkgfHwNCj4gPiAtCQkgIHR1 X3NpemUgLSB2cyA8IDIpICYmIHR1X3NpemUgPCA2NCk7DQo+ID4gLQ0KPiA+IC0JaWYgKHZzID4g NjQpDQo+ID4gLQkJcmV0dXJuOw0KPiA+IC0NCj4gPiAgCWJuZF9oc3luYzJ2c3luYyA9IENETlNf SVBfQllQQVNTX1ZfSU5URVJGQUNFOw0KPiA+ICAJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVf RkxBR19JTlRFUkxBQ0UpDQo+ID4gIAkJYm5kX2hzeW5jMnZzeW5jIHw9IENETlNfSVBfREVUX0lO VEVSTEFDRV9GT1JNQVQ7DQo+ID4gIA0KPiA+IC0JY2Ruc19taGRwX3JlZ193cml0ZShtaGRwLCBD RE5TX0JORF9IU1lOQzJWU1lOQywgYm5kX2hzeW5jMnZzeW5jKTsNCj4gPiArCWNkbnNfbWhkcF9y ZWdfd3JpdGUobWhkcCwgQ0ROU19CTkRfSFNZTkMyVlNZTkMoc3RyZWFtX2lkKSwNCj4gPiArCQkJ ICAgIGJuZF9oc3luYzJ2c3luYyk7DQo+ID4gIA0KPiA+ICAJaWYgKG1vZGUtPmZsYWdzICYgRFJN X01PREVfRkxBR19JTlRFUkxBQ0UgJiYNCj4gPiAgCSAgICBtb2RlLT5mbGFncyAmIERSTV9NT0RF X0ZMQUdfUEhTWU5DKQ0KPiA+IEBAIC05NTIsMTUgKzk3NywxMCBAQCBzdGF0aWMgdm9pZCBjZG5z X21oZHBfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpDQo+ID4gIAllbHNlDQo+ID4g IAkJaHN5bmMydnN5bmNfcG9sX2N0cmwgPSAwOw0KPiA+ICANCj4gPiAtCWNkbnNfbWhkcF9yZWdf d3JpdGUobWhkcCwgQ0ROU19IU1lOQzJWU1lOQ19QT0xfQ1RSTCwNCj4gPiArCWNkbnNfbWhkcF9y ZWdfd3JpdGUobWhkcCwgQ0ROU19IU1lOQzJWU1lOQ19QT0xfQ1RSTChzdHJlYW1faWQpLA0KPiA+ ICAJCQkgICAgaHN5bmMydnN5bmNfcG9sX2N0cmwpOw0KPiA+ICANCj4gPiAtCWNkbnNfbWhkcF9y ZWdfd3JpdGUobWhkcCwgQ0ROU19EUF9GUkFNRVJfVFUsDQo+ID4gLQkJCSAgICBDRE5TX0RQX0ZS QU1FUl9UVV9WUyh2cykgfA0KPiA+IC0JCQkgICAgQ0ROU19EUF9GUkFNRVJfVFVfU0laRSh0dV9z aXplKSB8DQo+ID4gLQkJCSAgICBDRE5TX0RQX0ZSQU1FUl9UVV9DTlRfUlNUX0VOKTsNCj4gPiAt DQo+ID4gLQljZG5zX21oZHBfcmVnX3dyaXRlKG1oZHAsIENETlNfRFBfRlJBTUVSX1BYTF9SRVBS LCBweGxfcmVwcik7DQo+ID4gKwljZG5zX21oZHBfcmVnX3dyaXRlKG1oZHAsIENETlNfRFBfRlJB TUVSX1BYTF9SRVBSKHN0cmVhbV9pZCksIHB4bF9yZXByKTsNCj4gPiAgDQo+ID4gIAlpZiAobW9k ZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkNCj4gPiAgCQlkcF9mcmFtZXJfc3Ag fD0gQ0ROU19EUF9GUkFNRVJfSU5URVJMQUNFOw0KPiA+IEBAIC05NjgsMTkgKzk4OCwxOSBAQCBz dGF0aWMgdm9pZCBjZG5zX21oZHBfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpDQo+ ID4gIAkJZHBfZnJhbWVyX3NwIHw9IENETlNfRFBfRlJBTUVSX0hTWU5DX1BPTF9MT1c7DQo+ID4g IAlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX05WU1lOQykNCj4gPiAgCQlkcF9mcmFt ZXJfc3AgfD0gQ0ROU19EUF9GUkFNRVJfVlNZTkNfUE9MX0xPVzsNCj4gPiAtCWNkbnNfbWhkcF9y ZWdfd3JpdGUobWhkcCwgQ0ROU19EUF9GUkFNRVJfU1AsIGRwX2ZyYW1lcl9zcCk7DQo+ID4gKwlj ZG5zX21oZHBfcmVnX3dyaXRlKG1oZHAsIENETlNfRFBfRlJBTUVSX1NQKHN0cmVhbV9pZCksIGRw X2ZyYW1lcl9zcCk7DQo+ID4gIA0KPiA+ICAJZnJvbnRfcG9yY2ggPSBtb2RlLT5jcnRjX2hzeW5j X3N0YXJ0IC0gbW9kZS0+Y3J0Y19oZGlzcGxheTsNCj4gPiAgCWJhY2tfcG9yY2ggPSBtb2RlLT5j cnRjX2h0b3RhbCAtIG1vZGUtPmNydGNfaHN5bmNfZW5kOw0KPiA+IC0JY2Ruc19taGRwX3JlZ193 cml0ZShtaGRwLCBDRE5TX0RQX0ZST05UX0JBQ0tfUE9SQ0gsDQo+ID4gKwljZG5zX21oZHBfcmVn X3dyaXRlKG1oZHAsIENETlNfRFBfRlJPTlRfQkFDS19QT1JDSChzdHJlYW1faWQpLA0KPiA+ICAJ CQkgICAgQ0ROU19EUF9GUk9OVF9QT1JDSChmcm9udF9wb3JjaCkgfA0KPiA+ICAJCQkgICAgQ0RO U19EUF9CQUNLX1BPUkNIKGJhY2tfcG9yY2gpKTsNCj4gPiAgDQo+ID4gLQljZG5zX21oZHBfcmVn X3dyaXRlKG1oZHAsIENETlNfRFBfQllURV9DT1VOVCwNCj4gPiArCQljZG5zX21oZHBfcmVnX3dy aXRlKG1oZHAsIENETlNfRFBfQllURV9DT1VOVChzdHJlYW1faWQpLA0KPiA+ICAJCQkgICAgbW9k ZS0+Y3J0Y19oZGlzcGxheSAqIGJwcCAvIDgpOw0KPiA+ICANCj4gPiAgCW1zYV9oMCA9IG1vZGUt PmNydGNfaHRvdGFsIC0gbW9kZS0+Y3J0Y19oc3luY19zdGFydDsNCj4gPiAtCWNkbnNfbWhkcF9y ZWdfd3JpdGUobWhkcCwgQ0ROU19EUF9NU0FfSE9SSVpPTlRBTF8wLA0KPiA+ICsJY2Ruc19taGRw X3JlZ193cml0ZShtaGRwLCBDRE5TX0RQX01TQV9IT1JJWk9OVEFMXzAoc3RyZWFtX2lkKSwNCj4g PiAgCQkJICAgIENETlNfRFBfTVNBSDBfSF9UT1RBTChtb2RlLT5jcnRjX2h0b3RhbCkgfA0KPiA+ ICAJCQkgICAgQ0ROU19EUF9NU0FIMF9IU1lOQ19TVEFSVChtc2FfaDApKTsNCj4gPiAgDQo+ID4g QEAgLTk4OSwxMSArMTAwOSwxMSBAQCBzdGF0aWMgdm9pZCBjZG5zX21oZHBfZW5hYmxlKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpDQo+ID4gIAkJQ0ROU19EUF9NU0FIMV9IRElTUF9XSURUSCht b2RlLT5jcnRjX2hkaXNwbGF5KTsNCj4gPiAgCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZM QUdfTkhTWU5DKQ0KPiA+ICAJCW1zYV9ob3Jpem9udGFsXzEgfD0gQ0ROU19EUF9NU0FIMV9IU1lO Q19QT0xfTE9XOw0KPiA+IC0JY2Ruc19taGRwX3JlZ193cml0ZShtaGRwLCBDRE5TX0RQX01TQV9I T1JJWk9OVEFMXzEsDQo+ID4gKwljZG5zX21oZHBfcmVnX3dyaXRlKG1oZHAsIENETlNfRFBfTVNB X0hPUklaT05UQUxfMShzdHJlYW1faWQpLA0KPiA+ICAJCQkgICAgbXNhX2hvcml6b250YWxfMSk7 DQo+ID4gIA0KPiA+ICAJbXNhX3YwID0gbW9kZS0+Y3J0Y192dG90YWwgLSBtb2RlLT5jcnRjX3Zz eW5jX3N0YXJ0Ow0KPiA+IC0JY2Ruc19taGRwX3JlZ193cml0ZShtaGRwLCBDRE5TX0RQX01TQV9W RVJUSUNBTF8wLA0KPiA+ICsJY2Ruc19taGRwX3JlZ193cml0ZShtaGRwLCBDRE5TX0RQX01TQV9W RVJUSUNBTF8wKHN0cmVhbV9pZCksDQo+ID4gIAkJCSAgICBDRE5TX0RQX01TQVYwX1ZfVE9UQUwo bW9kZS0+Y3J0Y192dG90YWwpIHwNCj4gPiAgCQkJICAgIENETlNfRFBfTVNBVjBfVlNZTkNfU1RB UlQobXNhX3YwKSk7DQo+ID4gIA0KPiA+IEBAIC0xMDAyLDcgKzEwMjIsOCBAQCBzdGF0aWMgdm9p ZCBjZG5zX21oZHBfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpDQo+ID4gIAkJQ0RO U19EUF9NU0FWMV9WRElTUF9XSURUSChtb2RlLT5jcnRjX3ZkaXNwbGF5KTsNCj4gPiAgCWlmICht b2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTlZTWU5DKQ0KPiA+ICAJCW1zYV92ZXJ0aWNhbF8x IHw9IENETlNfRFBfTVNBVjFfVlNZTkNfUE9MX0xPVzsNCj4gPiAtCWNkbnNfbWhkcF9yZWdfd3Jp dGUobWhkcCwgQ0ROU19EUF9NU0FfVkVSVElDQUxfMSwgbXNhX3ZlcnRpY2FsXzEpOw0KPiA+ICsJ Y2Ruc19taGRwX3JlZ193cml0ZShtaGRwLCBDRE5TX0RQX01TQV9WRVJUSUNBTF8xKHN0cmVhbV9p ZCksDQo+ID4gKwkJCSAgICBtc2FfdmVydGljYWxfMSk7DQo+ID4gIA0KPiA+ICAJaWYgKChtb2Rl LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSAmJg0KPiA+ICAJICAgIG1vZGUtPmNy dGNfdnRvdGFsICUgMiA9PSAwKQ0KPiA+IEBAIC0xMDE0LDE2ICsxMDM1LDE0IEBAIHN0YXRpYyB2 b2lkIGNkbnNfbWhkcF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiAgCWlm IChweGxmbXQgPT0gUElYRUxfRk9STUFUX1lDQkNSXzQyMCkNCj4gPiAgCQltaXNjMSA9IENETlNf RFBfVEVTVF9WU0NfU0RQOw0KPiA+ICANCj4gPiAtCWNkbnNfbWhkcF9yZWdfd3JpdGUobWhkcCwg Q0ROU19EUF9NU0FfTUlTQywgbWlzYzAgfCAobWlzYzEgPDwgOCkpOw0KPiA+ICsJY2Ruc19taGRw X3JlZ193cml0ZShtaGRwLCBDRE5TX0RQX01TQV9NSVNDKHN0cmVhbV9pZCksDQo+ID4gKwkJCSAg ICBtaXNjMCB8IChtaXNjMSA8PCA4KSk7DQo+ID4gIA0KPiA+IC0JLyogRklYTUU6IHRvIGJlIGNo YW5nZWQgaWYgTVNUIG1vZGUgKi8NCj4gPiAtCWNkbnNfbWhkcF9yZWdfd3JpdGUobWhkcCwgQ0RO U19EUF9TVFJFQU1fQ09ORklHLCAxKTsNCj4gPiAtDQo+ID4gLQljZG5zX21oZHBfcmVnX3dyaXRl KG1oZHAsIENETlNfRFBfSE9SSVpPTlRBTCwNCj4gPiArCWNkbnNfbWhkcF9yZWdfd3JpdGUobWhk cCwgQ0ROU19EUF9IT1JJWk9OVEFMKHN0cmVhbV9pZCksDQo+ID4gIAkJCSAgICBDRE5TX0RQX0hf SFNZTkNfV0lEVEgoaHN5bmMpIHwNCj4gPiAgCQkJICAgIENETlNfRFBfSF9IX1RPVEFMKG1vZGUt PmNydGNfaGRpc3BsYXkpKTsNCj4gPiAgDQo+ID4gLQljZG5zX21oZHBfcmVnX3dyaXRlKG1oZHAs IENETlNfRFBfVkVSVElDQUxfMCwNCj4gPiArCWNkbnNfbWhkcF9yZWdfd3JpdGUobWhkcCwgQ0RO U19EUF9WRVJUSUNBTF8wKHN0cmVhbV9pZCksDQo+ID4gIAkJCSAgICBDRE5TX0RQX1YwX1ZIRUlH SFQobW9kZS0+Y3J0Y192ZGlzcGxheSkgfA0KPiA+ICAJCQkgICAgQ0ROU19EUF9WMF9WU1RBUlQo bXNhX3YwKSk7DQo+ID4gIA0KPiA+IEBAIC0xMDMyLDMwICsxMDUxLDUxIEBAIHN0YXRpYyB2b2lk IGNkbnNfbWhkcF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiAgCSAgICBt b2RlLT5jcnRjX3Z0b3RhbCAlIDIgPT0gMCkNCj4gPiAgCQlkcF92ZXJ0aWNhbF8xIHw9IENETlNf RFBfVjFfVlRPVEFMX0VWRU47DQo+ID4gIA0KPiA+IC0JY2Ruc19taGRwX3JlZ193cml0ZShtaGRw LCBDRE5TX0RQX1ZFUlRJQ0FMXzEsIGRwX3ZlcnRpY2FsXzEpOw0KPiA+ICsJY2Ruc19taGRwX3Jl Z193cml0ZShtaGRwLCBDRE5TX0RQX1ZFUlRJQ0FMXzEoc3RyZWFtX2lkKSwgZHBfdmVydGljYWxf MSk7DQo+ID4gIA0KPiA+IC0JY2Ruc19taGRwX3JlZ193cml0ZV9iaXQobWhkcCwgQ0ROU19EUF9W Ql9JRCwgMiwgMSwNCj4gPiArCWNkbnNfbWhkcF9yZWdfd3JpdGVfYml0KG1oZHAsIENETlNfRFBf VkJfSUQoc3RyZWFtX2lkKSwgMiwgMSwNCj4gPiAgCQkJCShtb2RlLT5mbGFncyAmIERSTV9NT0RF X0ZMQUdfSU5URVJMQUNFKSA/DQo+ID4gIAkJCQlDRE5TX0RQX1ZCX0lEX0lOVEVSTEFDRUQgOiAw KTsNCj4gPiAgDQo+ID4gLQlsaW5lX3RocmVzaDEgPSAoKHZzICsgMSkgPDwgNSkgKiA4IC8gYnBw Ow0KPiA+IC0JbGluZV90aHJlc2gyID0gKHB4bGNsb2NrIDw8IDUpIC8gMTAwMCAvIHJhdGUgKiAo dnMgKyAxKSAtICgxIDw8IDUpOw0KPiA+IC0JbGluZV90aHJlc2ggPSBsaW5lX3RocmVzaDEgLSBs aW5lX3RocmVzaDIgLyBtaGRwLT5saW5rLm51bV9sYW5lczsNCj4gPiAtCWxpbmVfdGhyZXNoID0g KGxpbmVfdGhyZXNoID4+IDUpICsgMjsNCj4gPiAtCWNkbnNfbWhkcF9yZWdfd3JpdGUobWhkcCwg Q0ROU19EUF9MSU5FX1RIUkVTSCwNCj4gPiAtCQkJICAgIGxpbmVfdGhyZXNoICYgR0VOTUFTSyg1 LCAwKSk7DQo+ID4gIA0KPiA+IC0JY2Ruc19taGRwX3JlZ193cml0ZShtaGRwLCBDRE5TX0RQX1JB VEVfR09WRVJOT1JfU1RBVFVTLA0KPiA+IC0JCQkgICAgQ0ROU19EUF9SR19UVV9WU19ESUZGKCh0 dV9zaXplIC0gdnMgPiAzKSA/DQo+ID4gLQkJCQkJCSAgICAgICAwIDogdHVfc2l6ZSAtIHZzKSk7 DQo+ID4gKwljZG5zX21oZHBfcmVnX3JlYWQobWhkcCwgQ0ROU19EUF9GUkFNRVJfR0xPQkFMX0NP TkZJRywgJnRtcCk7DQo+ID4gKwl0bXAgfD0gQ0ROU19EUF9GUkFNRVJfRU47DQo+ID4gKwljZG5z X21oZHBfcmVnX3dyaXRlKG1oZHAsIENETlNfRFBfRlJBTUVSX0dMT0JBTF9DT05GSUcsIHRtcCk7 DQo+ID4gK30NCj4gPiAgDQo+ID4gLQljZG5zX21oZHBfc2V0X3ZpZGVvX3N0YXR1cyhtaGRwLCAx KTsNCj4gPiArdm9pZCBjZG5zX21oZHBfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up DQo+ID4gK3sNCj4gPiArCXN0cnVjdCBjZG5zX21oZHBfYnJpZGdlICptaGRwX2JyaWRnZSA9IHRv X21oZHBfYnJpZGdlKGJyaWRnZSk7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhk cCA9IG1oZHBfYnJpZGdlLT5taGRwOw0KPiA+ICsJaW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsJ Ym9vbCBsaW5rX3VwID0gbWhkcC0+bGlua191cDsNCj4gPiArDQo+ID4gKwlpZiAoIWxpbmtfdXAp DQo+ID4gKwkJY2Ruc19taGRwX2xpbmtfdXAobWhkcCk7DQo+ID4gKw0KPiA+ICsNCj4gPiArCWlm ICghbWhkcC0+aXNfbXN0KQ0KPiA+ICsJCXJldCA9IGNkbnNfbWhkcF9zc3RfZW5hYmxlKGJyaWRn ZSk7DQo+ID4gKwllbHNlDQo+ID4gKwkJY2Ruc19taGRwX21zdF9lbmFibGUoYnJpZGdlKTsNCj4g PiArDQo+IA0KPiANCj4gcmV0IHVudXNlZCwgbGlua191cCBub3QgbmVjY2Vzc2FyeSwgcmVxdWly ZXMgY2xlYW51cC4NCj4gDQo+IA0KPiANCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQg Y2Ruc19taGRwX2RldGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICt7DQo+ID4g KwlzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCA9IGJyaWRnZV90b19taGRwKGJyaWRnZSk7 DQo+ID4gKwlzdHJ1Y3QgY2Ruc19taGRwX21zdF9jYnMgY2JzX251bGwgPSB7MH07DQo+ID4gKw0K PiA+ICsJY2Ruc19taGRwX21zdF9kZWluaXQobWhkcCk7DQo+ID4gKwltaGRwLT5jYnMgPSBjYnNf bnVsbDsNCj4gPiAgfQ0KPiA+ICANCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdl X2Z1bmNzIGNkbnNfbWhkcF9icmlkZ2VfZnVuY3MgPSB7DQo+ID4gIAkuZW5hYmxlID0gY2Ruc19t aGRwX2VuYWJsZSwNCj4gPiAgCS5kaXNhYmxlID0gY2Ruc19taGRwX2Rpc2FibGUsDQo+ID4gIAku YXR0YWNoID0gY2Ruc19taGRwX2F0dGFjaCwNCj4gPiArCS5kZXRhY2ggPSBjZG5zX21oZHBfZGV0 YWNoLA0KPiA+ICB9Ow0KPiA+ICANCj4gPiAgc3RhdGljIGludCBsb2FkX2Zpcm13YXJlKHN0cnVj dCBjZG5zX21oZHBfZGV2aWNlICptaGRwLCBjb25zdCBjaGFyICpuYW1lLA0KPiA+IEBAIC0xMTI3 LDggKzExNjcsOCBAQCBzdGF0aWMgaW50IGNkbnNfbWhkcF9hdWRpb19nZXRfZWxkKHN0cnVjdCBk ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCj4gPiAgew0KPiA+ICAJc3RydWN0IGNkbnNfbWhkcF9k ZXZpY2UgKm1oZHAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiAgDQo+ID4gLQltZW1jcHko YnVmLCBtaGRwLT5jb25uZWN0b3IuZWxkLA0KPiA+IC0JICAgICAgIG1pbihzaXplb2YobWhkcC0+ Y29ubmVjdG9yLmVsZCksIGxlbikpOw0KPiA+ICsJbWVtY3B5KGJ1ZiwgbWhkcC0+Y29ubmVjdG9y LmJhc2UuZWxkLA0KPiA+ICsJICAgICAgIG1pbihzaXplb2YobWhkcC0+Y29ubmVjdG9yLmJhc2Uu ZWxkKSwgbGVuKSk7DQo+ID4gIA0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiBAQCAtMTE0 OSw2ICsxMTg5LDcgQEAgc3RhdGljIGludCBtaGRwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQo+ID4gIAl1bnNpZ25lZCBpbnQgcmVnOw0KPiA+ICAJdW5zaWduZWQgbG9uZyBy YXRlOw0KPiA+ICAJdTMyIHJlc3A7DQo+ID4gKwlpbnQgaXJxOw0KPiA+ICANCj4gPiAgCXN0cnVj dCBoZG1pX2NvZGVjX3BkYXRhIGNvZGVjX2RhdGEgPSB7DQo+ID4gIAkJLmkycyA9IDEsDQo+ID4g QEAgLTExOTIsNiArMTIzMywxNCBAQCBzdGF0aWMgaW50IG1oZHBfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4gPiAgCS8qIExlYXZlIGRlYnVnIG1vZGUgKi8NCj4gPiAgCXdy aXRlbCgwLCBtaGRwLT5yZWdzICsgQ0ROU19BUEJfQ1RSTCk7DQo+ID4gIA0KPiA+ICsJaXJxID0g cGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCj4gPiArCXJldCA9IHJlcXVlc3RfaXJxKGlycSwg bWhkcF9pcnFfaGFuZGxlciwgMCwgIm1oZHA4NTQ2IiwgbWhkcCk7DQo+IA0KPiANCj4gTm8gZnJl ZV9pcnEsIHdoeSBkb250IHlvdSB1c2UgZGV2bV9yZXF1ZXN0X2lycS4NCj4gDQo+IA0KPiANCj4g PiArCWlmIChyZXQpIHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsDQo+ID4gKwkJCSJjYW5u b3QgaW5zdGFsbCBJUlEgJWRcbiIsIGlycSk7DQo+ID4gKwkJcmV0dXJuIC1FSU87DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICAJLyoNCj4gPiAgCSAqIFdhaXQgZm9yIHRoZSBLRUVQX0FMSVZFICJtZXNz YWdlIiBvbiB0aGUgZmlyc3QgOCBiaXRzLg0KPiA+ICAJICogVXBkYXRlZCBlYWNoIHNjaGVkICJ0 aWNrIiAofjJtcykNCj4gPiBAQCAtMTIyMiw4ICsxMjcxLDggQEAgc3RhdGljIGludCBtaGRwX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gIAltaGRwLT5ob3N0LmxhbmVf bWFwcGluZyA9IENETlNfTEFORV9NQVBQSU5HX0ZMSVBQRUQ7DQo+ID4gIAltaGRwLT5ob3N0LmVu aGFuY2VkID0gdHJ1ZTsNCj4gPiAgDQo+ID4gLQltaGRwLT5icmlkZ2Uub2Zfbm9kZSA9IHBkZXYt PmRldi5vZl9ub2RlOw0KPiA+IC0JbWhkcC0+YnJpZGdlLmZ1bmNzID0gJmNkbnNfbWhkcF9icmlk Z2VfZnVuY3M7DQo+ID4gKwltaGRwLT5icmlkZ2UuYmFzZS5vZl9ub2RlID0gcGRldi0+ZGV2Lm9m X25vZGU7DQo+ID4gKwltaGRwLT5icmlkZ2UuYmFzZS5mdW5jcyA9ICZjZG5zX21oZHBfYnJpZGdl X2Z1bmNzOw0KPiA+ICANCj4gPiAgCS8qIEluaXQgZXZlbnRzIHRvIDAgYXMgaXQncyBub3QgY2xl YXJlZCBieSBGVyBhdCBib290IGJ1dCBvbiByZWFkICovDQo+ID4gIAlyZWFkbChtaGRwLT5yZWdz ICsgQ0ROU19TV19FVkVOVDApOw0KPiA+IEBAIC0xMjQ3LDIxICsxMjk2LDE0IEBAIHN0YXRpYyBp bnQgbWhkcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICAJY2Ruc19t aGRwX3JlZ193cml0ZShtaGRwLCBDRE5TX0RQVFhfQ0FSLA0KPiA+ICAJCQkgICAgcmVzcCB8IENE TlNfVklGX0NMS19FTiB8IENETlNfVklGX0NMS19SU1ROKTsNCj4gPiAgDQo+ID4gLQkvKiBMb29w IG92ZXIgSERQIGNoYW5nZSAqLw0KPiA+IC0JLyoNCj4gPiAtCSAqIEZJWE1FOiBkb2VzIG5vdCB3 b3JrIHdoZW4gcHV0IGluIG1oZHBfYnJpZGdlX2VuYWJsZS4NCj4gPiAtCSAqIFdoZXJlIHNob3Vs ZCB3ZSBwdXQgaXQ/DQo+ID4gLQkgKi8NCj4gPiAtCS8qIElzIGl0IHN0aWxsIG5lZWRlZCB3aXRo IHVzZSBvZiBtYiBtZXNzYWdlIEhQRCBTVEFUVVM/ICovDQo+ID4gLQlyZXQgPSByZWFkbF9wb2xs X3RpbWVvdXQobWhkcC0+cmVncyArIENETlNfU1dfRVZFTlQwLCByZWcsDQo+ID4gLQkJCQkgcmVn ICYgQ0ROU19EUFRYX0hQRCwgNTAwLA0KPiA+IC0JCQkJIENETlNfU1dfRVZFTlQwX1RJTUVPVVQp Ow0KPiA+IC0JaWYgKHJldCkgew0KPiA+IC0JCWRldl9lcnIobWhkcC0+ZGV2LCAibm8gSFBEIHJl Y2VpdmVkICVkXG4iLCByZWcpOw0KPiA+IC0JCXJldHVybiAtRU5PREVWOw0KPiA+IC0JfQ0KPiA+ ICsJSU5JVF9ERUxBWUVEX1dPUksoJm1oZHAtPmhvdHBsdWdfd29yaywgbWhkcF9ob3RwbHVnX3dv cmtfZnVuYyk7DQo+IA0KPiANCj4gWW91IGFyZSByZW1vdmluZyBsb3Qgb2YgdGhlIGNvZGUgaW50 cm9kdWNlZCBieSBwcmV2aW91cyBwYXRjaCwga2luZGEgdWdseS4NCj4gDQo+IEkgYW0gbm90IHN1 cmUgaWYgbWVyZ2luZyBib3RoIHBhdGNoZXMgd291bGRuJ3QgYmUgYmV0dGVyLCBvdGhlcndpc2Ug aXQNCj4gd291bGQgYmUgYmV0dGVyIHRvIHNwbGl0IHRoaXMgYmlnIHBhdGNoIHRvIHNtYWxsZXIg Y2h1bmtzIC0gYWNjb3JkaW5nIHRvDQo+IHJ1bGUgLSBvbmUgY2hhbmdlIHBlciBvbmUgcGF0Y2gu DQo+IA0KPiANCj4gUmVnYXJkcw0KPiANCj4gQW5kcnplag0KPiANCj4gDQo+IA0KPiANCj4gPiAr DQo+ID4gKwltaGRwLT5icmlkZ2UuY29ubmVjdG9yID0gJm1oZHAtPmNvbm5lY3RvcjsNCj4gPiAr CW1oZHAtPmNvbm5lY3Rvci5icmlkZ2UgPSAmbWhkcC0+YnJpZGdlOw0KPiA+ICsJbWhkcC0+YnJp ZGdlLm1oZHAgPSBtaGRwOw0KPiA+ICsJbWhkcC0+YnJpZGdlLmlzX2FjdGl2ZSA9IGZhbHNlOw0K PiA+ICANCj4gPiAtCWRybV9icmlkZ2VfYWRkKCZtaGRwLT5icmlkZ2UpOw0KPiA+ICsJZHJtX2Jy aWRnZV9hZGQoJm1oZHAtPmJyaWRnZS5iYXNlKTsNCj4gPiAgDQo+ID4gIAlyZXR1cm4gMDsNCj4g PiAgfQ0KPiA+IEBAIC0xMjczLDkgKzEzMTUsMTEgQEAgc3RhdGljIGludCBtaGRwX3JlbW92ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICAJc3RydWN0IGNkbnNfbWhkcF9kZXZp Y2UgKm1oZHAgPSBkZXZfZ2V0X2RydmRhdGEoJnBkZXYtPmRldik7DQo+ID4gIAlpbnQgcmV0Ow0K PiA+ICANCj4gPiArCWZsdXNoX2RlbGF5ZWRfd29yaygmbWhkcC0+aG90cGx1Z193b3JrKTsNCj4g PiAgCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKG1oZHAtPmF1ZGlvX3BkZXYpOw0KPiA+ICAN Cj4gPiAtCWRybV9icmlkZ2VfcmVtb3ZlKCZtaGRwLT5icmlkZ2UpOw0KPiA+ICsJY2Ruc19taGRw X21zdF9kZWluaXQobWhkcCk7DQo+ID4gKwlkcm1fYnJpZGdlX3JlbW92ZSgmbWhkcC0+YnJpZGdl LmJhc2UpOw0KPiA+ICANCj4gPiAgCXJldCA9IGNkbnNfbWhkcF9zZXRfZmlybXdhcmVfYWN0aXZl KG1oZHAsIGZhbHNlKTsNCj4gPiAgCWlmIChyZXQpIHsNCj4gPiBAQCAtMTI4OCw2ICsxMzMyLDE3 IEBAIHN0YXRpYyBpbnQgbWhkcF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikN Cj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICtpbnQgbWhkcF9icmlkZ2VfYXR0 YWNoX21zdF9jYnMoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gPiArCQkJICAgICAgIHN0 cnVjdCBjZG5zX21oZHBfbXN0X2NicyAqY2JzKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19t aGRwX2RldmljZSAqbWhkcCA9IGJyaWRnZV90b19taGRwKGJyaWRnZSk7DQo+ID4gKw0KPiA+ICsJ bWhkcC0+Y2JzID0gKmNiczsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICtF WFBPUlRfU1lNQk9MX0dQTChtaGRwX2JyaWRnZV9hdHRhY2hfbXN0X2Nicyk7DQo+ID4gKw0KPiA+ ICBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaGRwX2RyaXZlciA9IHsNCj4gPiAgCS5k cml2ZXIJPSB7DQo+ID4gIAkJLm5hbWUJCT0gImNkbnMtbWhkcCIsDQo+ID4gQEAgLTEyOTksNiAr MTM1NCw5IEBAIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1oZHBfZHJpdmVyID0gew0K PiA+ICBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1oZHBfZHJpdmVyKTsNCj4gPiAgDQo+ID4gIE1P RFVMRV9BVVRIT1IoIlF1ZW50aW4gU2NodWx6IDxxdWVudGluLnNjaHVsekBmcmVlLWVsZWN0cm9u cy5jb20+Iik7DQo+ID4gK01PRFVMRV9BVVRIT1IoIlByemVteXNsYXcgR2FqIDxwZ2FqQGNhZGVu Y2UuY29tPiIpOw0KPiA+ICtNT0RVTEVfQVVUSE9SKCJEYW1pYW4gS29zIDxka29zQGNhZGVuY2Uu Y29tPiIpOw0KPiA+ICtNT0RVTEVfQVVUSE9SKCJQaW90ciBTcm9rYSA8cGlvdHJzQGNhZGVuY2Uu Y29tPiIpOw0KPiA+ICBNT0RVTEVfREVTQ1JJUFRJT04oIkNhZGVuY2UgTUhEUCBEUCBicmlkZ2Ug ZHJpdmVyIik7DQo+ID4gIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4gPiAgTU9EVUxFX0FMSUFT KCJwbGF0Zm9ybTpjZG5zLW1oZHAiKTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9jZG5zLW1oZHAuaCBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvY2Rucy1taGRwLmgN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYWJjMWZh M2Y1MWE2DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvY2Rucy1taGRwLmgNCj4gPiBAQCAtMCwwICsxLDIwOSBAQA0KPiA+ICsvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMIHYyICovDQo+ID4gKy8qDQo+ID4gKyAqIENhZGVuY2UgTUhEUCBE UCBNU1QgYnJpZGdlIGRyaXZlci4NCj4gPiArICoNCj4gPiArICogQ29weXJpZ2h0OiAyMDE4IENh ZGVuY2UgRGVzaWduIFN5c3RlbXMsIEluYy4NCj4gPiArICoNCj4gPiArICogQXV0aG9yOiBRdWVu dGluIFNjaHVseiA8cXVlbnRpbi5zY2h1bHpAZnJlZS1lbGVjdHJvbnMuY29tPg0KPiA+ICsgKi8N Cj4gPiArDQo+ID4gKw0KPiA+ICsjaWZuZGVmIENETlNfTUhEUF9IDQo+ID4gKyNkZWZpbmUgQ0RO U19NSERQX0gNCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2RwX21zdF9oZWxwZXIuaD4N Cj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19BUEJfQ0ZHCQkJCTB4MDAwMDANCj4gPiArI2RlZmlu ZSBDRE5TX0FQQl9DVFJMCQkJCShDRE5TX0FQQl9DRkcgKyAweDAwKQ0KPiA+ICsjZGVmaW5lIENE TlNfTUFJTEJPWF9GVUxMCQkJKENETlNfQVBCX0NGRyArIDB4MDgpDQo+ID4gKyNkZWZpbmUgQ0RO U19NQUlMQk9YX0VNUFRZCQkJKENETlNfQVBCX0NGRyArIDB4MGMpDQo+ID4gKyNkZWZpbmUgQ0RO U19NQUlMQk9YX1RYX0RBVEEJCQkoQ0ROU19BUEJfQ0ZHICsgMHgxMCkNCj4gPiArI2RlZmluZSBD RE5TX01BSUxCT1hfUlhfREFUQQkJCShDRE5TX0FQQl9DRkcgKyAweDE0KQ0KPiA+ICsjZGVmaW5l IENETlNfS0VFUF9BTElWRQkJCQkoQ0ROU19BUEJfQ0ZHICsgMHgxOCkNCj4gPiArI2RlZmluZSBD RE5TX0tFRVBfQUxJVkVfTUFTSwkJCUdFTk1BU0soNywgMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUg Q0ROU19NQl9JTlRfTUFTSwkJCShDRE5TX0FQQl9DRkcgKyAweDM0KQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBDRE5TX1NXX0NMS19MCQkJCShDRE5TX0FQQl9DRkcgKyAweDNjKQ0KPiA+ICsjZGVmaW5l IENETlNfU1dfQ0xLX0gJCQkJKENETlNfQVBCX0NGRyArIDB4NDApDQo+ID4gKyNkZWZpbmUgQ0RO U19TV19FVkVOVDAJCQkJKENETlNfQVBCX0NGRyArIDB4NDQpDQo+ID4gKyNkZWZpbmUgQ0ROU19E UFRYX0hQRAkJCQlCSVQoMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19TV19FVkVOVDEJCQkJ KENETlNfQVBCX0NGRyArIDB4NDgpDQo+ID4gKyNkZWZpbmUgQ0ROU19TV19FVkVOVDIJCQkJKENE TlNfQVBCX0NGRyArIDB4NGMpDQo+ID4gKyNkZWZpbmUgQ0ROU19TV19FVkVOVDMJCQkJKENETlNf QVBCX0NGRyArIDB4NTApDQo+ID4gKw0KPiA+ICsjZGVmaW5lIENETlNfQVBCX0lOVF9NQVNLCQkJ KENETlNfQVBCX0NGRyArIDB4NkMpDQo+ID4gKyNkZWZpbmUgQ0ROU19BUEJfSU5UX01BU0tfTUFJ TEJPWF9JTlQJCUJJVCgwKQ0KPiA+ICsjZGVmaW5lIENETlNfQVBCX0lOVF9NQVNLX1NXX0VWRU5U X0lOVAkJQklUKDEpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIENETlNfRFBUWF9DQVIJCQkJKENETlNf QVBCX0NGRyArIDB4OTA0KQ0KPiA+ICsjZGVmaW5lIENETlNfVklGX0NMS19FTgkJCQlCSVQoMCkN Cj4gPiArI2RlZmluZSBDRE5TX1ZJRl9DTEtfUlNUTgkJCUJJVCgxKQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBDRE5TX1NPVVJDRV9WSURFT19JRihzKQkJCSgweDAwYjAwICsgKHMgKiAweDIwKSkNCj4g PiArI2RlZmluZSBDRE5TX0JORF9IU1lOQzJWU1lOQyhzKQkJCShDRE5TX1NPVVJDRV9WSURFT19J RihzKSArIFwNCj4gPiArCQkJCQkJIDB4MDApDQo+ID4gKyNkZWZpbmUgQ0ROU19JUF9EVENUX1dJ TgkJCUdFTk1BU0soMTEsIDApDQo+ID4gKyNkZWZpbmUgQ0ROU19JUF9ERVRfSU5URVJMQUNFX0ZP Uk1BVAkJQklUKDEyKQ0KPiA+ICsjZGVmaW5lIENETlNfSVBfQllQQVNTX1ZfSU5URVJGQUNFCQlC SVQoMTMpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIENETlNfSFNZTkMyVlNZTkNfUE9MX0NUUkwocykJ CShDRE5TX1NPVVJDRV9WSURFT19JRihzKSArIFwNCj4gPiArCQkJCQkJIDB4MTApDQo+ID4gKyNk ZWZpbmUgQ0ROU19IMlZfSFNZTkNfUE9MX0FDVElWRV9MT1cJCUJJVCgxKQ0KPiA+ICsjZGVmaW5l IENETlNfSDJWX1ZTWU5DX1BPTF9BQ1RJVkVfTE9XCQlCSVQoMikNCj4gPiArDQo+ID4gKyNkZWZp bmUgQ0ROU19EUFRYX1BIWV9DT05GSUcJCQkweDAyMDAwDQo+ID4gKyNkZWZpbmUgQ0ROU19QSFlf VFJBSU5JTkdfRU4JCQlCSVQoMCkNCj4gPiArI2RlZmluZSBDRE5TX1BIWV9UUkFJTklOR19UWVBF KHgpCQkoKCh4KSAmIEdFTk1BU0soMywgMCkpIDw8IDEpDQo+ID4gKyNkZWZpbmUgQ0ROU19QSFlf U0NSQU1CTEVSX0JZUEFTUwkJQklUKDUpDQo+ID4gKyNkZWZpbmUgQ0ROU19QSFlfRU5DT0RFUl9C WVBBU1MJCQlCSVQoNikNCj4gPiArI2RlZmluZSBDRE5TX1BIWV9TS0VXX0JZUEFTUwkJCUJJVCg3 KQ0KPiA+ICsjZGVmaW5lIENETlNfUEhZX1RSQUlOSU5HX0FVVE8JCQlCSVQoOCkNCj4gPiArI2Rl ZmluZSBDRE5TX1BIWV9MQU5FMF9TS0VXKHgpCQkJKCgoeCkgJiBHRU5NQVNLKDIsIDApKSA8PCA5 KQ0KPiA+ICsjZGVmaW5lIENETlNfUEhZX0xBTkUxX1NLRVcoeCkJCQkoKCh4KSAmIEdFTk1BU0so MiwgMCkpIDw8IDEyKQ0KPiA+ICsjZGVmaW5lIENETlNfUEhZX0xBTkUyX1NLRVcoeCkJCQkoKCh4 KSAmIEdFTk1BU0soMiwgMCkpIDw8IDE1KQ0KPiA+ICsjZGVmaW5lIENETlNfUEhZX0xBTkUzX1NL RVcoeCkJCQkoKCh4KSAmIEdFTk1BU0soMiwgMCkpIDw8IDE4KQ0KPiA+ICsjZGVmaW5lIENETlNf UEhZX0NPTU1PTl9DT05GSUcJCQkoQ0ROU19QSFlfTEFORTFfU0tFVygxKSB8IFwNCj4gPiArCQkJ CQkJQ0ROU19QSFlfTEFORTJfU0tFVygyKSB8ICBcDQo+ID4gKwkJCQkJCUNETlNfUEhZX0xBTkUz X1NLRVcoMykpDQo+ID4gKyNkZWZpbmUgQ0ROU19QSFlfMTBCSVRfRU4JCQlCSVQoMjEpDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIENETlNfRFBUWF9GUkFNRVIJCQkweDAyMjAwDQo+ID4gKyNkZWZpbmUg Q0ROU19EUF9GUkFNRVJfR0xPQkFMX0NPTkZJRwkJKENETlNfRFBUWF9GUkFNRVIgKyAweDAwKQ0K PiA+ICsjZGVmaW5lIENETlNfRFBfTlVNX0xBTkVTKHgpCQkJKHggLSAxKQ0KPiA+ICsjZGVmaW5l IENETlNfRFBfTVNUX0VOCQkJCUJJVCgyKQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfRlJBTUVSX0VO CQkJQklUKDMpDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9SQVRFX0dPVkVSTk9SX0VOCQlCSVQoNCkN Cj4gPiArI2RlZmluZSBDRE5TX0RQX05PX1ZJREVPX01PREUJCQlCSVQoNSkNCj4gPiArI2RlZmlu ZSBDRE5TX0RQX0RJU0FCTEVfUEhZX1JTVAkJCUJJVCg2KQ0KPiA+ICsjZGVmaW5lIENETlNfRFBf V1JfRkFJTElOR19FREdFX1ZTWU5DCQlCSVQoNykNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19E UF9TV19SRVNFVAkJCShDRE5TX0RQVFhfRlJBTUVSICsgMHgwNCkNCj4gPiArI2RlZmluZSBDRE5T X0RQX0ZSQU1FUl9UVQkJCShDRE5TX0RQVFhfRlJBTUVSICsgMHgwOCkNCj4gPiArI2RlZmluZSBD RE5TX0RQX0ZSQU1FUl9UVV9TSVpFKHgpCQkoKCh4KSAmIEdFTk1BU0soNiwgMCkpIDw8IDgpDQo+ ID4gKyNkZWZpbmUgQ0ROU19EUF9GUkFNRVJfVFVfVlMoeCkJCQkoKHgpICYgR0VOTUFTSyg1LCAw KSkNCj4gPiArI2RlZmluZSBDRE5TX0RQX0ZSQU1FUl9UVV9DTlRfUlNUX0VOCQlCSVQoMTUpDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIENETlNfRFBUWF9TVFJFQU0ocykJCQkoMHgwMzAwMCArIHMgKiAw eDgwKQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfTVNBX0hPUklaT05UQUxfMChzKQkJKENETlNfRFBU WF9TVFJFQU0ocykgKyAweDAwKQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfTVNBSDBfSF9UT1RBTCh4 KQkJKHgpDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NU0FIMF9IU1lOQ19TVEFSVCh4KQkJKCh4KSA8 PCAxNikNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NU0FfSE9SSVpPTlRBTF8xKHMpCQko Q0ROU19EUFRYX1NUUkVBTShzKSArIDB4MDQpDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NU0FIMV9I U1lOQ19XSURUSCh4KQkJKHgpDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NU0FIMV9IU1lOQ19QT0xf TE9XCQlCSVQoMTUpDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NU0FIMV9IRElTUF9XSURUSCh4KQkJ KCh4KSA8PCAxNikNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NU0FfVkVSVElDQUxfMChz KQkJKENETlNfRFBUWF9TVFJFQU0ocykgKyAweDA4KQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfTVNB VjBfVl9UT1RBTCh4KQkJKHgpDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NU0FWMF9WU1lOQ19TVEFS VCh4KQkJKCh4KSA8PCAxNikNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NU0FfVkVSVElD QUxfMShzKQkJKENETlNfRFBUWF9TVFJFQU0ocykgKyAweDBjKQ0KPiA+ICsjZGVmaW5lIENETlNf RFBfTVNBVjFfVlNZTkNfV0lEVEgoeCkJCSh4KQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfTVNBVjFf VlNZTkNfUE9MX0xPVwkJQklUKDE1KQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfTVNBVjFfVkRJU1Bf V0lEVEgoeCkJCSgoeCkgPDwgMTYpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIENETlNfRFBfTVNBX01J U0MocykJCQkoQ0ROU19EUFRYX1NUUkVBTShzKSArIDB4MTApDQo+ID4gKyNkZWZpbmUgQ0ROU19E UF9TVFJFQU1fQ09ORklHcyhzKQkJKENETlNfRFBUWF9TVFJFQU0ocykgKyAweDE0KQ0KPiA+ICsj ZGVmaW5lIENETlNfRFBfU1RSRUFNX0NPTkZJR18yKHMpCQkoQ0ROU19EUFRYX1NUUkVBTShzKSAr IDB4MmMpDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9TQzJfVFVfVlNfRElGRih4KQkJKCh4KSA8PCA4 KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBDRE5TX0RQX0hPUklaT05UQUwocykJCQkoQ0ROU19EUFRY X1NUUkVBTShzKSArIDB4MzApDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9IX0hTWU5DX1dJRFRIKHgp CQkoeCkNCj4gPiArI2RlZmluZSBDRE5TX0RQX0hfSF9UT1RBTCh4KQkJCSgoeCkgPDwgMTYpDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIENETlNfRFBfVkVSVElDQUxfMChzKQkJCShDRE5TX0RQVFhfU1RS RUFNKHMpICsgMHgzNCkNCj4gPiArI2RlZmluZSBDRE5TX0RQX1YwX1ZIRUlHSFQoeCkJCQkoeCkN Cj4gPiArI2RlZmluZSBDRE5TX0RQX1YwX1ZTVEFSVCh4KQkJCSgoeCkgPDwgMTYpDQo+ID4gKw0K PiA+ICsjZGVmaW5lIENETlNfRFBfVkVSVElDQUxfMShzKQkJCShDRE5TX0RQVFhfU1RSRUFNKHMp ICsgMHgzOCkNCj4gPiArI2RlZmluZSBDRE5TX0RQX1YxX1ZUT1RBTCh4KQkJCSh4KQ0KPiA+ICsj ZGVmaW5lIENETlNfRFBfVjFfVlRPVEFMX0VWRU4JCQlCSVQoMTYpDQo+ID4gKw0KPiA+ICsjZGVm aW5lIENETlNfRFBfRlJBTUVSX1BYTF9SRVBSKHMpCQkoQ0ROU19EUFRYX1NUUkVBTShzKSArIDB4 NGMpDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9GUkFNRVJfNl9CUEMJCQlCSVQoMCkNCj4gPiArI2Rl ZmluZSBDRE5TX0RQX0ZSQU1FUl84X0JQQwkJCUJJVCgxKQ0KPiA+ICsjZGVmaW5lIENETlNfRFBf RlJBTUVSXzEwX0JQQwkJCUJJVCgyKQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfRlJBTUVSXzEyX0JQ QwkJCUJJVCgzKQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfRlJBTUVSXzE2X0JQQwkJCUJJVCg0KQ0K PiA+ICsjZGVmaW5lIENETlNfRFBfRlJBTUVSX1BYTF9GT1JNQVQJCTB4OA0KPiA+ICsjZGVmaW5l IENETlNfRFBfRlJBTUVSX1JHQgkJCUJJVCgwKQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfRlJBTUVS X1lDQkNSNDQ0CQkJQklUKDEpDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9GUkFNRVJfWUNCQ1I0MjIJ CQlCSVQoMikNCj4gPiArI2RlZmluZSBDRE5TX0RQX0ZSQU1FUl9ZQ0JDUjQyMAkJCUJJVCgzKQ0K PiA+ICsjZGVmaW5lIENETlNfRFBfRlJBTUVSX1lfT05MWQkJCUJJVCg0KQ0KPiA+ICsNCj4gPiAr I2RlZmluZSBDRE5TX0RQX0ZSQU1FUl9TUChzKQkJCShDRE5TX0RQVFhfU1RSRUFNKHMpICsgMHgx MCkNCj4gPiArI2RlZmluZSBDRE5TX0RQX0ZSQU1FUl9WU1lOQ19QT0xfTE9XCQlCSVQoMCkNCj4g PiArI2RlZmluZSBDRE5TX0RQX0ZSQU1FUl9IU1lOQ19QT0xfTE9XCQlCSVQoMSkNCj4gPiArI2Rl ZmluZSBDRE5TX0RQX0ZSQU1FUl9JTlRFUkxBQ0UJCUJJVCgyKQ0KPiA+ICsNCj4gPiArI2RlZmlu ZSBDRE5TX0RQX0xJTkVfVEhSRVNIKHMpCQkJKENETlNfRFBUWF9TVFJFQU0ocykgKyAweDY0KQ0K PiA+ICsjZGVmaW5lIENETlNfRFBfQUNUSVZFX0xJTkVfVEhSRVNIKHgpCQkoeCkNCj4gPiArDQo+ ID4gKyNkZWZpbmUgQ0ROU19EUF9WQl9JRChzKQkJCShDRE5TX0RQVFhfU1RSRUFNKHMpICsgMHg2 OCkNCj4gPiArI2RlZmluZSBDRE5TX0RQX1ZCX0lEX0lOVEVSTEFDRUQJCUJJVCgyKQ0KPiA+ICsj ZGVmaW5lIENETlNfRFBfVkJfSURfQ09NUFJFU1NFRAkJQklUKDYpDQo+ID4gKw0KPiA+ICsjZGVm aW5lIENETlNfRFBfRlJPTlRfQkFDS19QT1JDSChzKQkJKENETlNfRFBUWF9TVFJFQU0ocykgKyAw eDc4KQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfQkFDS19QT1JDSCh4KQkJCSh4KQ0KPiA+ICsjZGVm aW5lIENETlNfRFBfRlJPTlRfUE9SQ0goeCkJCQkoKHgpIDw8IDE2KQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBDRE5TX0RQX0JZVEVfQ09VTlQocykJCQkoQ0ROU19EUFRYX1NUUkVBTShzKSArIDB4N2Mp DQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9CWVRFX0NPVU5UX0JZVEVTX0lOX0NIVU5LX1NISUZUCTE2 DQo+ID4gKw0KPiA+ICsjZGVmaW5lIENETlNfRFBfTVNUX1NUUkVBTV9DT05GSUcocykJCShDRE5T X0RQVFhfU1RSRUFNKHMpICsgMHgxNCkNCj4gPiArI2RlZmluZSBDRE5TX0RQX01TVF9TVFJNX0NG R19TVFJFQU1fRU4JCUJJVCgwKQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfTVNUX1NUUk1fQ0ZHX05P X1ZJREVPCQlCSVQoMSkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NU1RfU0xPVF9BTExP Q0FURShzKQkJKENETlNfRFBUWF9TVFJFQU0ocykgKyAweDQ0KQ0KPiA+ICsjZGVmaW5lIENETlNf RFBfU19BTExPQ19TVEFSVF9TTE9UKHgpCQkoeCkNCj4gPiArI2RlZmluZSBDRE5TX0RQX1NfQUxM T0NfRU5EX1NMT1QoeCkJCSgoeCkgPDwgOCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9S QVRFX0dPVkVSTklORyhzKQkJKENETlNfRFBUWF9TVFJFQU0ocykgKyAweDQ4KQ0KPiA+ICsjZGVm aW5lIENETlNfRFBfUkdfVEFSR19BVl9TTE9UU19ZKHgpCQkoeCkNCj4gPiArI2RlZmluZSBDRE5T X0RQX1JHX1RBUkdfQVZfU0xPVFNfWCh4KQkJKHggPDwgNCkNCj4gPiArI2RlZmluZSBDRE5TX0RQ X1JHX0VOQUJMRQkJCUJJVCgxMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NVFBIX0NP TlRST0wJCQkweDIyNjQNCj4gPiArI2RlZmluZSBDRE5TX0RQX01UUEhfRUNGX0VOCQkJQklUKDAp DQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9NVFBIX0FDVF9FTgkJCUJJVCgxKQ0KPiA+ICsjZGVmaW5l IENETlNfRFBfTVRQSF9MVlBfRU4JCQlCSVQoMikNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0ROU19E UF9NVFBIX1NUQVRVUwkJCTB4MjI2Qw0KPiA+ICsjZGVmaW5lIENETlNfRFBfTVRQSF9BQ1RfU1RB VFVTCQkJQklUKDApDQo+ID4gKw0KPiA+ICsNCj4gPiArI2RlZmluZSBDRE5TX0RQVFhfR0xPQkFM CQkJMHgwMjMwMA0KPiA+ICsjZGVmaW5lIENETlNfRFBfTEFORV9FTgkJCQkoQ0ROU19EUFRYX0dM T0JBTCArIDB4MDApDQo+ID4gKyNkZWZpbmUgQ0ROU19EUF9MQU5FX0VOX0xBTkVTKHgpCQlHRU5N QVNLKHggLSAxLCAwKQ0KPiA+ICsjZGVmaW5lIENETlNfRFBfRU5ITkNECQkJCShDRE5TX0RQVFhf R0xPQkFMICsgMHgwNCkNCj4gPiArDQo+ID4gKw0KPiA+ICsjZGVmaW5lIHRvX21oZHBfY29ubmVj dG9yKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgY2Ruc19taGRwX2Nvbm5lY3RvciwgYmFzZSkN Cj4gPiArI2RlZmluZSB0b19taGRwX2JyaWRnZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGNk bnNfbWhkcF9icmlkZ2UsIGJhc2UpDQo+ID4gKyNkZWZpbmUgbWdyX3RvX21oZHAoeCkgY29udGFp bmVyX29mKHgsIHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlLCBtc3RfbWdyKQ0KPiA+ICsNCj4gPiAr I2RlZmluZSBDRE5TX01IRFBfTUFYX1NUUkVBTVMgICA0DQo+ID4gKw0KPiA+ICtlbnVtIHBpeGVs X2Zvcm1hdCB7DQo+ID4gKwlQSVhFTF9GT1JNQVRfUkdCID0gMSwNCj4gPiArCVBJWEVMX0ZPUk1B VF9ZQ0JDUl80NDQgPSAyLA0KPiA+ICsJUElYRUxfRk9STUFUX1lDQkNSXzQyMiA9IDQsDQo+ID4g KwlQSVhFTF9GT1JNQVRfWUNCQ1JfNDIwID0gOCwNCj4gPiArCVBJWEVMX0ZPUk1BVF9ZX09OTFkg PSAxNiwNCj4gPiArfTsNCj4gPiArDQo+ID4gKw0KPiA+ICtpbnQgY2Ruc19taGRwX21zdF9pbml0 KHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwKTsNCj4gPiArdm9pZCBjZG5zX21oZHBfbXN0 X2RlaW5pdChzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCk7DQo+ID4gK2Jvb2wgY2Ruc19t aGRwX21zdF9wcm9iZShzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCk7DQo+ID4gK2VudW0g cGl4ZWxfZm9ybWF0IGNkbnNfbWhkcF9nZXRfcHhsZm10KHUzMiBjb2xvcl9mb3JtYXRzKTsNCj4g PiArdTMyIGNkbnNfbWhkcF9nZXRfYnBwKHUzMiBicGMsIHUzMiBjb2xvcl9mb3JtYXRzKTsNCj4g PiArdm9pZCBjZG5zX21oZHBfY29uZmlndXJlX3ZpZGVvKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UpOw0KPiA+ICt2b2lkIGNkbnNfbWhkcF9tc3RfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UpOw0KPiA+ICt2b2lkIGNkbnNfbWhkcF9tc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKTsNCj4gPiArdm9pZCBjZG5zX21oZHBfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UpOw0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L2Nkbi1kcC1jb3JlLmMNCj4gPiBpbmRleCAzNDNmMzgxZTM0NDAuLmE1YTY2OGYxOTEyYiAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLWNvcmUuYw0KPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jDQo+ID4gQEAgLTM0 LDcgKzM0LDcgQEANCj4gPiAgI2luY2x1ZGUgInJvY2tjaGlwX2RybV92b3AuaCINCj4gPiAgDQo+ ID4gICNkZWZpbmUgY29ubmVjdG9yX3RvX2RwKGMpIFwNCj4gPiAtCQljb250YWluZXJfb2YoYywg c3RydWN0IGNkbl9kcF9kZXZpY2UsIG1oZHAuY29ubmVjdG9yKQ0KPiA+ICsJCWNvbnRhaW5lcl9v ZihjLCBzdHJ1Y3QgY2RuX2RwX2RldmljZSwgbWhkcC5jb25uZWN0b3IuYmFzZSkNCj4gPiAgDQo+ ID4gICNkZWZpbmUgZW5jb2Rlcl90b19kcChjKSBcDQo+ID4gIAkJY29udGFpbmVyX29mKGMsIHN0 cnVjdCBjZG5fZHBfZGV2aWNlLCBlbmNvZGVyKQ0KPiA+IEBAIC0yOTEsNyArMjkxLDcgQEAgc3Rh dGljIGludCBjZG5fZHBfY29ubmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwNCj4gPiAgew0KPiA+ICAJc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwID0gY29u bmVjdG9yX3RvX2RwKGNvbm5lY3Rvcik7DQo+ID4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAq ZGlzcGxheV9pbmZvID0NCj4gPiAtCQkmZHAtPm1oZHAuY29ubmVjdG9yLmRpc3BsYXlfaW5mbzsN Cj4gPiArCQkmZHAtPm1oZHAuY29ubmVjdG9yLmJhc2UuZGlzcGxheV9pbmZvOw0KPiA+ICAJdTMy IHJlcXVlc3RlZCwgYWN0dWFsLCByYXRlLCBzaW5rX21heCwgc291cmNlX21heCA9IDA7DQo+ID4g IAl1OCBsYW5lcywgYnBjOw0KPiA+ICANCj4gPiBAQCAtMzg3LDcgKzM4Nyw3IEBAIHN0YXRpYyBp bnQgY2RuX2RwX2dldF9zaW5rX2NhcGFiaWxpdHkoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKQ0K PiA+ICAJfQ0KPiA+ICANCj4gPiAgCWtmcmVlKGRwLT5lZGlkKTsNCj4gPiAtCWRwLT5lZGlkID0g ZHJtX2RvX2dldF9lZGlkKCZkcC0+bWhkcC5jb25uZWN0b3IsDQo+ID4gKwlkcC0+ZWRpZCA9IGRy bV9kb19nZXRfZWRpZCgmZHAtPm1oZHAuY29ubmVjdG9yLmJhc2UsDQo+ID4gIAkJCQkgICBjZG5z X21oZHBfZ2V0X2VkaWRfYmxvY2ssICZkcC0+bWhkcCk7DQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAg fQ0KPiA+IEBAIC01NTksNyArNTU5LDcgQEAgc3RhdGljIHZvaWQgY2RuX2RwX2VuY29kZXJfbW9k ZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLA0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3Qg Y2RuX2RwX2RldmljZSAqZHAgPSBlbmNvZGVyX3RvX2RwKGVuY29kZXIpOw0KPiA+ICAJc3RydWN0 IGRybV9kaXNwbGF5X2luZm8gKmRpc3BsYXlfaW5mbyA9DQo+ID4gLQkJJmRwLT5taGRwLmNvbm5l Y3Rvci5kaXNwbGF5X2luZm87DQo+ID4gKwkJJmRwLT5taGRwLmNvbm5lY3Rvci5iYXNlLmRpc3Bs YXlfaW5mbzsNCj4gPiAgCXN0cnVjdCB2aWRlb19pbmZvICp2aWRlbyA9ICZkcC0+bWhkcC52aWRl b19pbmZvOw0KPiA+ICANCj4gPiAgCXN3aXRjaCAoZGlzcGxheV9pbmZvLT5icGMpIHsNCj4gPiBA QCAtODYzLDggKzg2Myw4IEBAIHN0YXRpYyBpbnQgY2RuX2RwX2F1ZGlvX2dldF9lbGQoc3RydWN0 IGRldmljZSAqZGV2LCB2b2lkICpkYXRhLA0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgY2RuX2RwX2Rl dmljZSAqZHAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiAgDQo+ID4gLQltZW1jcHkoYnVm LCBkcC0+bWhkcC5jb25uZWN0b3IuZWxkLA0KPiA+IC0JICAgICAgIG1pbihzaXplb2YoZHAtPm1o ZHAuY29ubmVjdG9yLmVsZCksIGxlbikpOw0KPiA+ICsJbWVtY3B5KGJ1ZiwgZHAtPm1oZHAuY29u bmVjdG9yLmJhc2UuZWxkLA0KPiA+ICsJICAgICAgIG1pbihzaXplb2YoZHAtPm1oZHAuY29ubmVj dG9yLmJhc2UuZWxkKSwgbGVuKSk7DQo+ID4gIA0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4g PiBAQCAtOTM2LDcgKzkzNiw3IEBAIHN0YXRpYyB2b2lkIGNkbl9kcF9wZF9ldmVudF93b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiAgew0KPiA+ICAJc3RydWN0IGNkbl9kcF9kZXZp Y2UgKmRwID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBjZG5fZHBfZGV2aWNlLA0KPiA+ICAJ CQkJCQlldmVudF93b3JrKTsNCj4gPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ig PSAmZHAtPm1oZHAuY29ubmVjdG9yOw0KPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciA9ICZkcC0+bWhkcC5jb25uZWN0b3IuYmFzZTsNCj4gPiAgCWVudW0gZHJtX2Nvbm5lY3Rv cl9zdGF0dXMgb2xkX3N0YXR1czsNCj4gPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IGRwLT5taGRw LmRldjsNCj4gPiAgDQo+ID4gQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBpbnQgY2RuX2Rw X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRh dGEpDQo+ID4gIA0KPiA+ICAJZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmY2RuX2Rw X2VuY29kZXJfaGVscGVyX2Z1bmNzKTsNCj4gPiAgDQo+ID4gLQljb25uZWN0b3IgPSAmZHAtPm1o ZHAuY29ubmVjdG9yOw0KPiA+ICsJY29ubmVjdG9yID0gJmRwLT5taGRwLmNvbm5lY3Rvci5iYXNl Ow0KPiA+ICAJY29ubmVjdG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfSFBEOw0KPiA+ ICAJY29ubmVjdG9yLT5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7DQo+ID4gIA0KPiA+IEBAIC0x MTEzLDcgKzExMTMsNyBAQCBzdGF0aWMgdm9pZCBjZG5fZHBfdW5iaW5kKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQ0KPiA+ICB7DQo+ID4gIAlz dHJ1Y3QgY2RuX2RwX2RldmljZSAqZHAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiAgCXN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZkcC0+ZW5jb2RlcjsNCj4gPiAtCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmZHAtPm1oZHAuY29ubmVjdG9yOw0KPiA+ICsJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZkcC0+bWhkcC5jb25uZWN0b3IuYmFzZTsN Cj4gPiAgDQo+ID4gIAljYW5jZWxfd29ya19zeW5jKCZkcC0+ZXZlbnRfd29yayk7DQo+ID4gIAlj ZG5fZHBfZW5jb2Rlcl9kaXNhYmxlKGVuY29kZXIpOw0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRl L2RybS9icmlkZ2UvY2Rucy1taGRwLWNicy5oIGIvaW5jbHVkZS9kcm0vYnJpZGdlL2NkbnMtbWhk cC1jYnMuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAw Li5hZjA3Y2JmY2I3MjkNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvaW5jbHVkZS9kcm0v YnJpZGdlL2NkbnMtbWhkcC1jYnMuaA0KPiA+IEBAIC0wLDAgKzEsMjcgQEANCj4gPiArLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTCB2MiAqLw0KPiA+ICsvKg0KPiA+ICsgKiBDYWRlbmNl IE1IRFAgRFAgYnJpZGdlIGNhbGxiYWNrcy4NCj4gPiArICoNCj4gPiArICogQ29weXJpZ2h0OiAy MDE4IENhZGVuY2UgRGVzaWduIFN5c3RlbXMsIEluYy4NCj4gPiArICoNCj4gPiArICogQXV0aG9y OiBQaW90ciBTcm9rYSA8cGlvdHJzQGNhZGVuY2UuY29tPg0KPiA+ICsgKi8NCj4gPiArDQo+ID4g KyNpZm5kZWYgQ0ROU19NSERQX0NCU19IDQo+ID4gKyNkZWZpbmUgQ0ROU19NSERQX0NCU19IDQo+ ID4gKw0KPiA+ICtzdHJ1Y3QgY2Ruc19taGRwX21zdF9jYnNfZnVuY3Mgew0KPiA+ICsJc3RydWN0 IGRybV9lbmNvZGVyICooKmNyZWF0ZV9tc3RfZW5jb2Rlcikodm9pZCAqcHJpdl9kYXRhLA0KPiA+ ICsJCQkJCQkgIHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOw0KPiA+ICsJdm9pZCAoKmRlc3Ry b3lfbXN0X2VuY29kZXIpKHZvaWQgKnByaXZfZGF0YSwgc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSk7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgY2Ruc19taGRwX21zdF9jYnMgew0KPiA+ ICsJc3RydWN0IGNkbnNfbWhkcF9tc3RfY2JzX2Z1bmNzIGZ1bmNzOw0KPiA+ICsJdm9pZCAqcHJp dl9kYXRhOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAraW50IG1oZHBfYnJpZGdlX2F0dGFjaF9tc3Rf Y2JzKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsDQo+ID4gKwkJCSAgICAgICBzdHJ1Y3QgY2Ru c19taGRwX21zdF9jYnMgKmNicyk7DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9kcm0vYnJpZGdlL2NkbnMtbWhkcC1jb21tb24uaCBiL2luY2x1ZGUvZHJtL2Jy aWRnZS9jZG5zLW1oZHAtY29tbW9uLmgNCj4gPiBpbmRleCBjNWE1YzRmYTdmYzQuLmQ0NzExMDkx ZmYyYiAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL2RybS9icmlkZ2UvY2Rucy1taGRwLWNvbW1v bi5oDQo+ID4gKysrIGIvaW5jbHVkZS9kcm0vYnJpZGdlL2NkbnMtbWhkcC1jb21tb24uaA0KPiA+ IEBAIC0xNSwxMCArMTUsMTIgQEANCj4gPiAgI2lmbmRlZiBDRE5TX01IRFBfQ09NTU9OX0hfDQo+ ID4gICNkZWZpbmUgQ0ROU19NSERQX0NPTU1PTl9IXw0KPiA+ICANCj4gPiArI2luY2x1ZGUgPGRy bS9kcm1fZHBfbXN0X2hlbHBlci5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+DQo+ ID4gICNpbmNsdWRlIDxkcm0vZHJtX2RwX2hlbHBlci5oPg0KPiA+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9jb25uZWN0b3IuaD4NCj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fYnJpZGdlLmg+DQo+ID4gKyNp bmNsdWRlIDxkcm0vYnJpZGdlL2NkbnMtbWhkcC1jYnMuaD4NCj4gPiAgDQo+ID4gICNkZWZpbmUg QUREUl9JTUVNCQkweDEwMDAwDQo+ID4gICNkZWZpbmUgQUREUl9ETUVNCQkweDIwMDAwDQo+ID4g QEAgLTMyNiwxMSArMzI4LDExIEBADQo+ID4gICNkZWZpbmUgTUJfTU9EVUxFX0lEX0dFTkVSQUwJ CTB4MGENCj4gPiAgDQo+ID4gIC8qIGdlbmVyYWwgb3Bjb2RlICovDQo+ID4gLSNkZWZpbmUgR0VO RVJBTF9NQUlOX0NPTlRST0wgICAgICAgICAgICAweDAxDQo+ID4gLSNkZWZpbmUgR0VORVJBTF9U RVNUX0VDSE8gICAgICAgICAgICAgICAweDAyDQo+ID4gLSNkZWZpbmUgR0VORVJBTF9CVVNfU0VU VElOR1MgICAgICAgICAgICAweDAzDQo+ID4gLSNkZWZpbmUgR0VORVJBTF9URVNUX0FDQ0VTUyAg ICAgICAgICAgICAweDA0DQo+ID4gLSNkZWZpbmUgR0VORVJBTF9SRUdJU1RFUl9SRUFEICAgICAg ICAgICAweDA3DQo+ID4gKyNkZWZpbmUgR0VORVJBTF9NQUlOX0NPTlRST0wJCTB4MDENCj4gPiAr I2RlZmluZSBHRU5FUkFMX1RFU1RfRUNITwkJMHgwMg0KPiA+ICsjZGVmaW5lIEdFTkVSQUxfQlVT X1NFVFRJTkdTCQkweDAzDQo+ID4gKyNkZWZpbmUgR0VORVJBTF9URVNUX0FDQ0VTUwkJMHgwNA0K PiA+ICsjZGVmaW5lIEdFTkVSQUxfUkVHSVNURVJfUkVBRAkJMHgwNw0KPiA+ICANCj4gPiAgI2Rl ZmluZSBEUFRYX1NFVF9QT1dFUl9NTkcJCQkweDAwDQo+ID4gICNkZWZpbmUgRFBUWF9TRVRfSE9T VF9DQVBBQklMSVRJRVMJCTB4MDENCj4gPiBAQCAtNTEyLDEzICs1MTQsMzQgQEAgc3RydWN0IGNk bnNfbWhkcF9zaW5rIHsNCj4gPiAgCXU4CWVuaGFuY2VkOw0KPiA+ICB9Ow0KPiA+ICANCj4gPiAr c3RydWN0IGNkbnNfbWhkcF9icmlkZ2U7DQo+ID4gK3N0cnVjdCBjZG5zX21oZHBfY29ubmVjdG9y Ow0KPiA+ICsNCj4gPiArc3RydWN0IGNkbnNfbWhkcF9icmlkZ2Ugew0KPiA+ICsJc3RydWN0IGNk bnNfbWhkcF9kZXZpY2UgKm1oZHA7DQo+ID4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSBiYXNlOw0KPiA+ ICsJaW50IHBibjsNCj4gPiArCWludDhfdCBzdHJlYW1faWQ7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19t aGRwX2Nvbm5lY3RvciAqY29ubmVjdG9yOw0KPiA+ICsJYm9vbCBpc19hY3RpdmU7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICsNCj4gPiArc3RydWN0IGNkbnNfbWhkcF9jb25uZWN0b3Igew0KPiA+ICsJ c3RydWN0IGRybV9jb25uZWN0b3IgYmFzZTsNCj4gPiArCWJvb2wgaXNfbXN0X2Nvbm5lY3RvcjsN Cj4gPiArCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19t aGRwX2JyaWRnZSAqYnJpZGdlOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArDQo+ID4gIHN0cnVjdCBj ZG5zX21oZHBfZGV2aWNlIHsNCj4gPiAgCXZvaWQgX19pb21lbQkJKnJlZ3M7DQo+ID4gIA0KPiA+ ICAJc3RydWN0IGRldmljZQkJKmRldjsNCj4gPiAgDQo+ID4gIAlzdHJ1Y3QgZHJtX2RwX2xpbmsJ bGluazsNCj4gPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yCWNvbm5lY3RvcjsNCj4gPiArCXN0cnVj dCBjZG5zX21oZHBfY29ubmVjdG9yICBjb25uZWN0b3I7DQo+ID4gIAlzdHJ1Y3QgY2xrCQkqc3Bk aWZfY2xrOw0KPiA+ICAJc3RydWN0IHJlc2V0X2NvbnRyb2wJKnNwZGlmX3JzdDsNCj4gPiAgDQo+ ID4gQEAgLTUyOCwxMyArNTUxLDIyIEBAIHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlIHsNCj4gPiAg CXN0cnVjdCBkcm1fZHBfYXV4CWF1eDsNCj4gPiAgCXN0cnVjdCBjZG5zX21oZHBfaG9zdAlob3N0 Ow0KPiA+ICAJc3RydWN0IGNkbnNfbWhkcF9zaW5rCXNpbms7DQo+ID4gLQlzdHJ1Y3QgZHJtX2Jy aWRnZQlicmlkZ2U7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19taGRwX2JyaWRnZQlicmlkZ2U7DQo+ID4g IAlzdHJ1Y3QgcGh5CQkqcGh5Ow0KPiA+ICAJdm9pZCBfX2lvbWVtCQkqZGJnX3JlZ3M7DQo+ID4g IA0KPiA+ICAJc3RydWN0IHZpZGVvX2luZm8JdmlkZW9faW5mbzsNCj4gPiAgCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlCW1vZGU7DQo+ID4gIAl1bnNpZ25lZCBpbnQJCWZ3X3ZlcnNpb247DQo+ID4g Kw0KPiA+ICsJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyIG1zdF9tZ3I7DQo+ID4gKwlz dHJ1Y3QgZGVsYXllZF93b3JrIGhvdHBsdWdfd29yazsNCj4gPiArDQo+ID4gKwlzdHJ1Y3QgY2Ru c19taGRwX21zdF9jYnMgY2JzOw0KPiA+ICsJYm9vbCBpc19tc3Q7DQo+ID4gKwlib29sIGNhbl9t c3Q7DQo+ID4gKwlib29sIGxpbmtfdXA7DQo+ID4gKwlib29sIHBsdWdnZWQ7DQo+ID4gIH07DQo+ ID4gIA0KPiA+ICB2b2lkIGNkbnNfbWhkcF9jbG9ja19yZXNldChzdHJ1Y3QgY2Ruc19taGRwX2Rl dmljZSAqbWhkcCk7DQo+ID4gQEAgLTU2Miw3ICs1OTQsNyBAQCBpbnQgY2Ruc19taGRwX2F1ZGlv X2NvbmZpZyhzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCwNCj4gPiAgaW50IGNkbnNfbWhk cF9yZWdfcmVhZChzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCwgdTMyIGFkZHIsIHUzMiAq dmFsdWUpOw0KPiA+ICBpbnQgY2Ruc19taGRwX3JlZ193cml0ZShzdHJ1Y3QgY2Ruc19taGRwX2Rl dmljZSAqbWhkcCwgdTE2IGFkZHIsIHUzMiB2YWwpOw0KPiA+ICBpbnQgY2Ruc19taGRwX3JlZ193 cml0ZV9iaXQoc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAsIHUxNiBhZGRyLA0KPiA+IC0J CQkJICAgdTggc3RhcnRfYml0LCB1OCBiaXRzX25vLCB1MzIgdmFsKTsNCj4gPiArCQkJICAgIHU4 IHN0YXJ0X2JpdCwgdTggYml0c19ubywgdTMyIHZhbCk7DQo+ID4gIGludCBjZG5zX21oZHBfYWRq dXN0X2x0KHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwLCB1OCBubGFuZXMsDQo+ID4gIAkJ CXUxNiB1ZGVsYXksIHU4ICpsYW5lc19kYXRhLA0KPiA+ICAJCQl1OCAqZHBjZCk7DQoNCg==