From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C641BC433EF for ; Wed, 6 Jul 2022 11:06:58 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C323484541; Wed, 6 Jul 2022 13:06:56 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=aspeedtech.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=aspeedtech.com header.i=@aspeedtech.com header.b="rSeWUpUW"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 5AE8784544; Wed, 6 Jul 2022 13:06:54 +0200 (CEST) Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2115.outbound.protection.outlook.com [40.107.117.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 9EB088453E for ; Wed, 6 Jul 2022 13:06:44 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=aspeedtech.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=chin-ting_kuo@aspeedtech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A/h6ggEE1jGLs4GTaeJPMlWRSR6FpjFnmEl5FMLn1yeQJhQ7YLYsEX78yMUwqDNKM7i/J+R7muTVCaTxCWL5amsuf+0NsBLGKTQ0TCl7aMixeVKYDkUcOCx9wL0lX2GpXLN5a7fPJvKQYkMebjSSY+UIi5czBcVdZ9aHLnLtCr7DUQWw18v7YsX7R7pXxIQCzHn79VrWc+//BLP+nhp+vvi7WLE3tsJMb7zJSv1A/iDaci6Pvv/5i7zNgxSRcY2ZBdoq+7etTiQPQyFaMEQZLgZOV62zZA4u6fPviQBZGx6fH/RvoyMjIKq493eSqXfY0pdcCvJ3ZVJyVKGaPYMztQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bBW4QWzSbCHP2mBe/UHGZdoOEY4E9wflmXpyOwZIE54=; b=V9cGQqFdXiDZ0BMRoczgWs/lrniSahQiOMhaNfL36oHsD1OXGkVtwJXI0FBLH4ySDHW4hPocRgDLN98aVIrtMwb97knh0xeL0Mt7GgsZ/BViYBlOgKAcgXIGhF+5SHX6+22m/01dVnG030nft62MhgBwob0RWUA6KFAq48CAyxEey778e2j0pAbvK2+806nbiG65YJKfQjFxuiHdaaymcsEvp4xQAWPvPkHpdwOj02eg5FzTxmG5cFEkmmMGlOU86eG7mCpQi0qI+jFSEC+8DHDmqhDk+LjWpSJ6lQnLP2ZdJVBsSr4dhnvw2Ik8VGoV6j0to2IgHJ5whSpVPmeltA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aspeedtech.com; dmarc=pass action=none header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bBW4QWzSbCHP2mBe/UHGZdoOEY4E9wflmXpyOwZIE54=; b=rSeWUpUWqEJfOu3BUmrFmHvLYhIHCjVcrF8qSUmw2oOqFPmDwGegz5lIH6NdcTjqNMYci4zOxZazVCz74MAULJjrZr1Ll45YURuwUFQzLpE2U4z4akG4syL4SHJyJG/NP0VkMmtXiPLYAH3Vi1wyg0VYnZzl/VcwuKbsN0sheOKz/NJ+8903BdYLqsteoaiKdrhGmO0rj5aL+Z9LUzlz1eg3PplIO2b1LtKCczNfO1sPehVLZvcDA2WjrZad2p3PmNqulq6w/lfxjqmC01D76hISFLxdJnYPsKzR/m7+3e2TCuc+AwXt3/sT/wNdWLdH0vVL3SJBCIt4KIc+Ok5LiA== Received: from HK0PR06MB2786.apcprd06.prod.outlook.com (2603:1096:203:5b::22) by KL1PR0601MB4242.apcprd06.prod.outlook.com (2603:1096:820:7d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.15; Wed, 6 Jul 2022 11:06:39 +0000 Received: from HK0PR06MB2786.apcprd06.prod.outlook.com ([fe80::214b:cb5f:d74a:9828]) by HK0PR06MB2786.apcprd06.prod.outlook.com ([fe80::214b:cb5f:d74a:9828%7]) with mapi id 15.20.5395.015; Wed, 6 Jul 2022 11:06:39 +0000 From: Chin-Ting Kuo To: =?utf-8?B?Q8OpZHJpYyBMZSBHb2F0ZXI=?= , ChiaWei Wang , "lukma@denx.de" , "seanga2@gmail.com" , Ryan Chen , BMC-SW , "jagan@amarulasolutions.com" , "vigneshr@ti.com" , "u-boot@lists.denx.de" , "p.yadav@ti.com" Subject: RE: [v4 03/12] spi: aspeed: Add ASPEED SPI controller driver Thread-Topic: [v4 03/12] spi: aspeed: Add ASPEED SPI controller driver Thread-Index: AQHYbzMdRF5AjlbrgkqU5IauBzvLh61pe2oAgAMTyuCAAga+AIAC2YKA Date: Wed, 6 Jul 2022 11:06:39 +0000 Message-ID: References: <20220524055650.1115899-1-chin-ting_kuo@aspeedtech.com> <20220524055650.1115899-4-chin-ting_kuo@aspeedtech.com> <47e22a24-5bae-c151-2a31-36fe803c33f2@kaod.org> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=aspeedtech.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b151c2e7-7d7e-4a3e-5ae8-08da5f3f99ea x-ms-traffictypediagnostic: KL1PR0601MB4242:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OeLpvJNBpWDoog6se/1ZGDqE/th4+dGuZhMdwKjeD4qQ2KMUx+tt9nq3y+3V4zTpUSlnS3f3ClXh2ceuSPpaFdQtMj13TtoiPZkxab/WYzKeKz3iD3B+dFYRdABzuYu9+cXoIk4yOELMPR7GG53z87xupfofXZ/xDJpBMU3ANS1TjCY9lsl8XSJq7E3fHzqnaGULOz39ZSLcSPeBhqVpgtvD/afoUw3nOTuE08bF8lkde3hsO0G9ZSDavW0upzphN2IUeweECDDVaCuFSW3N7aHPy5BEMGCU3eqg5knNNrRUBPkx1vIWz0PTNdYTYHgQozIIC073/YTEdpome0DYcgr7L7a1LOorMOywLMjAi+VyXCQi61svnsnOzEPHAgXe3ojBPdUUayPPAgi51dRCKObWkvBx3VyBE1DbOay9nLNor4XXiWlp65ITy/TryBzj8WJXowrNmGms4o3+Ql2b0dsW2vb88ZeJhrrXH4H6EEwlAVnCh6Y6ytloh0ga6eetgoZ+BCRrEuxYzaf0Wuh1KhBRLFYdT4B2efcG6ikL65Wcp6RYmVbSraLtJIdPFokzZ6xahfscWNGCr5TXicW2vW0sYx1liptQZXxkAD/ZMb/+yGZdbX36YskeANHmBoFeRF7dltrhiwAo1+DB+Q4n9QBbnKUuBboaPhxyo5ZrTaVr9gA6o7ESFJyGAxWWbJI4kakD8OF0YMrt1ku3zlJvyR1tzmYr68szS5VoEtUfxrbvkG6/0oRUOqx0FbrvqAfi3aC4Hgd+t1+gumPCrIBhmhMKHf1URwbBCpXCe7gXnlZYFrOUBMkEdmUfOo7iEnop+GMET8qjWdZfALQ07ssNDAr9Q1TRh34Du2k94HqEjaA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:HK0PR06MB2786.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(39850400004)(366004)(396003)(346002)(136003)(376002)(8936002)(66574015)(71200400001)(5660300002)(30864003)(186003)(52536014)(86362001)(55016003)(83380400001)(26005)(110136005)(316002)(2906002)(478600001)(966005)(9686003)(41300700001)(66446008)(8676002)(53546011)(76116006)(66556008)(66946007)(66476007)(64756008)(38100700002)(921005)(122000001)(38070700005)(33656002)(6506007)(7696005)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OVptbEpRcmJvK0Fzd0pXbS9iYmJwbjg0aFlIbmtmM21aUUlrSUZ5Q3hLQTNP?= =?utf-8?B?WUp5WFh5bFAzNDE0S0ZSRnlQZWh3QkVGbVQ2UDBsTzlhKzdlSVdNSUxpcGRs?= =?utf-8?B?WDhhNEtJSXFnY1FONE5TTGdzMVVoUEY5eXFBK3EyUC9tR3lZaWtXbzdZQkZZ?= =?utf-8?B?VS81Z05iRHJ0TDZvVFdETXhFUzJsT0xYcDliYk1VVGlRclVHUVEwQUVLUXBF?= =?utf-8?B?ZTlvam1GNlpnaW5naHdHRTBsdU5YYXJtZWZXcnNPK2Y2aTdzckdNRHdrT2Jv?= =?utf-8?B?dklWS3NjMGdLR2VqcDJZQTNQdUh3MkVvNjc1Mjl5Y21haG5IUmRQNk02Z2hm?= =?utf-8?B?SnJ3NlB1b2REZ25qcUZlV0VvTnQvWjdLUSt2d2d6N0FiY3lpMkVYZUV2ODVm?= =?utf-8?B?c2N6THF5WGpmejZhbXh2dFl4Q0F2MFdvZlR5Z3dTUTNoblE4L3l5VHo0UElF?= =?utf-8?B?UlhTc3h6SnorMkVuWDlocHdEWlc4QXpCT0gwaTVRcUE4SUQ5TFBjelY2dXR5?= =?utf-8?B?ekhGeGlMZS9FekptM3NtQ3RITEVBMWtZUE10WFJyMGNJcVFYdXhsOTJCUTBH?= =?utf-8?B?azdlRzBVSnFhYmY5cFhCdWczQlIvc2dOUC9BYi84bkhtNCtsUytlUEJuVzdx?= =?utf-8?B?WWxzTVRRRnFoK1k4WEhTK0w5VlhNeCtCYkNKb1FDWGZSK3NYRWZLUDduVUFZ?= =?utf-8?B?Z3NUUHZLTDFhZTYrcmRmTTNOYmQ2dkVRWHphV2k2SlE4SWFpYS9FSmlzaWNG?= =?utf-8?B?dXdvbW0ybldoejJaVUpBZGF0aERReXNlS3MySThvNkNmeGJYQlJBTlRTekZZ?= =?utf-8?B?VEU0cUZ0UjdSWDdQMkRqTW1DQVVsZFIyZHhTdmtUTGNrZWYxL2R1a2JkT2E2?= =?utf-8?B?b0JCeGs1YTZpQU9IRVhGL1NyOUZ2TUxzQXMyNjBWcjJtcFFaSUl0VkkwZVN3?= =?utf-8?B?N2JUY3EwQnJOam1pTHVVNVAyVDNCdEdVUEtlbk9LU1dUVGhDYUdtOTNGTFFm?= =?utf-8?B?dW1nM1JvM2xZNTJsNGpkaDhvS2pPS0RUbEpNZWkyU1VqQUxZejNoS2prd29u?= =?utf-8?B?ZThYNXNWbEMzQlNCYWtRMy9iTEhXVzhhdlBtc0l3NldOYjlydEY5MWFmc290?= =?utf-8?B?anpLb2NOdzNuVStjRmZzVXB2RVRxQ2dyazlrbENCbFVNbzV6Vi90RXMxWmMr?= =?utf-8?B?R0xlYTBOL2N3MmZxSzFPU1JLR2ZXdDNYRnhFQzhvTWd0NnRWUHcyeDJQaUFw?= =?utf-8?B?aVNia0treWxDRXkvM0FBMmlVSWo4Rm9OREhodVRQMTcrVWRHejYzYXNxZm9Q?= =?utf-8?B?NCthMVRIL2Nsb2ZuSXdxZTR4UVkzZnNacnpMeUhjRFdlWHk2QnUvclB3T3lt?= =?utf-8?B?ODI2NzRqdnhuRVY1eEdZMmFyMVBsVWh2aGtmajR5d2dqMEFzSWVRZjhGbUtE?= =?utf-8?B?eEVEbStNMFkwMUpBWnBISFVkL2k5TmJqSCtVeWtxSzg2L2xzY2VNbTZXOWM3?= =?utf-8?B?dlFOSW1pT0ZSRXFsN0ZVeVFtY0ZqbU03V2xKRGJqWkRFaG1IcjVTRXI3c2dU?= =?utf-8?B?eWg0K3pwTkdNaFM2UWlwamN5NWh0dVhUcHE3VnowbjF0VG1WR3Qzd1BBcmdK?= =?utf-8?B?THorT2VnelN4YjU0T2dpNW9XRHhqeCs5bm4yMWVETWxSeERKRVhXcGE3MGZ1?= =?utf-8?B?RFV3dm53RG1MNWpzVmZnc3ZYc0lpQ092K0IzdzBGWDJadCtZWVd5ZFVlK2tj?= =?utf-8?B?ZmdtcXA2NzhoK1FJcmdJTDhDQXBIQ2pLMHdNcnkzbHJGUUswUzdQNXBZWXpW?= =?utf-8?B?NGZHNXZETzRaUjRoZGZBdzFpVHlQbkRrT2w2SnpLbXE2OUFaVFhrb081WFRR?= =?utf-8?B?K09uZzFuVGtmM2tpU3lUWTZObTRRTmcrZ2NHZWZTKzIvMXVpV0hhZEZRS2RG?= =?utf-8?B?dklGYjN5Nm1xRHNLMmNkckxqb1A4SjMxcmVkSzlkdTZJbCsvVld6b0R2b0FS?= =?utf-8?B?MDhoTkJGcFRHRHFGTld0UU5JT2l0MFRlMHRCaFhmSldBbGRieENvT1JnaVlH?= =?utf-8?B?Nys3Unl1ZjRHTFlUdDluMkd6RmVOc2tReEhPTnpDQlAxN0N5a05zbUY5MVg1?= =?utf-8?B?MldmQm4yZXlkWFNrbDlEdklJUjU4czZZMk5hVW0wUHRmZVBoVVdWUitWbWdL?= =?utf-8?B?bXc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: aspeedtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: HK0PR06MB2786.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b151c2e7-7d7e-4a3e-5ae8-08da5f3f99ea X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jul 2022 11:06:39.5885 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: c6bvple+e56PxC2exDMRqdPQxPL2eb+QwEbeGNTUee5Hg3GaPN+C+xCrQDB75txB5/sLgrv/+Z8x7pQL1DiCvCoRA63O7cmUdg70WvZ5Wpc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR0601MB4242 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean SGkgQ8OpZHJpYywNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBDw6lk cmljIExlIEdvYXRlciA8Y2xnQGthb2Qub3JnPg0KPiBTZW50OiBNb25kYXksIEp1bHkgNCwgMjAy MiAxMToyNSBQTQ0KPiBTdWJqZWN0OiBSZTogW3Y0IDAzLzEyXSBzcGk6IGFzcGVlZDogQWRkIEFT UEVFRCBTUEkgY29udHJvbGxlciBkcml2ZXINCj4gDQo+IEhlbGxvIENoaW4tVGluZywNCj4gDQo+ IE9uIDcvMy8yMiAxMDo0NywgQ2hpbi1UaW5nIEt1byB3cm90ZToNCj4gPiBIaSBDw6lkcmljLA0K PiA+DQo+ID4gVGhhbmtzIGZvciB0aGUgcmV2aWV3Lg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAa2FvZC5vcmc+ DQo+ID4+IFNlbnQ6IEZyaWRheSwgSnVseSAxLCAyMDIyIDU6MjggUE0NCj4gPj4gVG86IENoaW4t VGluZyBLdW8gPGNoaW4tdGluZ19rdW9AYXNwZWVkdGVjaC5jb20+OyBDaGlhV2VpIFdhbmcNCj4g Pj4gPGNoaWF3ZWlfd2FuZ0Bhc3BlZWR0ZWNoLmNvbT47IGx1a21hQGRlbnguZGU7IHNlYW5nYTJA Z21haWwuY29tOw0KPiBSeWFuDQo+ID4+IENoZW4gPHJ5YW5fY2hlbkBhc3BlZWR0ZWNoLmNvbT47 IEJNQy1TVw0KPiA8Qk1DLVNXQGFzcGVlZHRlY2guY29tPjsNCj4gPj4gamFnYW5AYW1hcnVsYXNv bHV0aW9ucy5jb207IHZpZ25lc2hyQHRpLmNvbTsgdS1ib290QGxpc3RzLmRlbnguZGU7DQo+ID4+ IHAueWFkYXZAdGkuY29tDQo+ID4+IFN1YmplY3Q6IFJlOiBbdjQgMDMvMTJdIHNwaTogYXNwZWVk OiBBZGQgQVNQRUVEIFNQSSBjb250cm9sbGVyIGRyaXZlcg0KPiA+Pg0KPiA+PiBIZWxsbyBDaGlu LVRpbmcsDQo+ID4+DQo+ID4+IE9uIDUvMjQvMjIgMDc6NTYsIENoaW4tVGluZyBLdW8gd3JvdGU6 DQo+ID4+PiBBZGQgQVNQRUVEIEJNQyBGTUMvU1BJIG1lbW9yeSBjb250cm9sbGVyIGRyaXZlciB3 aXRoIHNwaS1tZW0NCj4gPj4+IGludGVyZmFjZSBmb3IgQVNUMjUwMCBhbmQgQVNUMjYwMCBwbGF0 Zm9ybS4NCj4gPj4+DQo+ID4+PiBUaGVyZSBhcmUgdGhyZWUgU1BJIG1lbW9yeSBjb250cm9sbGVy cyBlbWJlZGRlZCBpbiBhbiBBU1BFRUQgU29DLg0KPiA+Pj4gLSBGTUM6IE5hbWVkIGFzIEZpcm13 YXJlIE1lbW9yeSBDb250cm9sbGVyLiBBZnRlciBBQyBvbiwgTUNVIFJPTQ0KPiA+Pj4gICAgICAg ICAgZmV0Y2hlcyBpbml0aWFsIGRldmljZSBib290IGltYWdlIGZyb20gRk1DIGNoaXAgc2VsZWN0 KENTKSAwLg0KPiA+Pj4NCj4gPj4+IC0gU1BJMTogUGxheSB0aGUgcm9sZSBvZiBhIFNQSSBNYXN0 ZXIgY29udHJvbGxlci4gT3IsIHRoZXJlIGlzIGENCj4gPj4+ICAgICAgICAgICBkZWRpY2F0ZWQg cGF0aCBmb3IgSE9TVChYODYpIHRvIGFjY2VzcyBpdHMgQklPUyBmbGFzaA0KPiBtb3VudGVkDQo+ ID4+PiAgICAgICAgICAgdW5kZXIgQk1DLiBzcGktYXNwZWVkLmMgaW1wbGVtZW50cyB0aGUgY29u dHJvbCBzZXF1ZW5jZQ0KPiB3aGVuDQo+ID4+PiAgICAgICAgICAgU1BJMSBpcyBhIFNQSSBtYXN0 ZXIuDQo+ID4+Pg0KPiA+Pj4gLSBTUEkyOiBJdCBpcyBhIHB1cmUgU1BJIGZsYXNoIGNvbnRyb2xs ZXIuIEZvciBtb3N0IHNjZW5hcmlvcywgZmxhc2hlcw0KPiA+Pj4gICAgICAgICAgIG1vdW50ZWQg dW5kZXIgaXQgYXJlIGZvciBwdXJlIHN0b3JhZ2UgcHVycG9zZS4NCj4gPj4+DQo+ID4+PiBBU1BF RUQgU1BJIGNvbnRyb2xsZXIgc3VwcG9ydHMgMS0xLTEsIDEtMS0yIGFuZCAxLTEtNCBTUEkgZmxh c2ggbW9kZS4NCj4gPj4+IFRocmVlIHR5cGVzIG9mIGNvbW1hbmQgbW9kZSBhcmUgc3VwcG9ydGVk LCBub3JtYWwgbW9kZSwgY29tbWFuZA0KPiA+Pj4gcmVhZC93cml0ZSBtb2RlIGFuZCB1c2VyIG1v ZGUuDQo+ID4+PiAtIE5vcm1hbCBtb2RlOiBEZWZhdWx0IG1vZGUuIEFmdGVyIHBvd2VyIG9uLCBu b3JtYWwgcmVhZCBjb21tYW5kDQo+IDAzaA0KPiA+PiBvcg0KPiA+Pj4gICAgICAgICAgICAgICAg ICAxM2ggaXMgdXNlZCB0byBmZXRjaCBib290IGltYWdlIGZyb20gU1BJIGZsYXNoLg0KPiA+Pj4g ICAgICAgICAgICAgICAgICAtIEFTVDI1MDA6IE9ubHkgMDNoIGNvbW1hbmQgY2FuIGJlIHVzZWQg YWZ0ZXINCj4gcG93ZXINCj4gPj4gb24NCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvciByZXNldC4NCj4gPj4+ICAgICAgICAgICAgICAgICAgLSBBU1QyNjAwOiBJZiBGTUMwNFs2 OjRdIGlzIHNldCwgMTNoIGNvbW1hbmQgaXMNCj4gdXNlZCwNCj4gPj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvdGhlcndpc2UsIDAzaCBjb21tYW5kLg0KPiA+Pj4gICAgICAgICAgICAg ICAgICBUaGUgYWRkcmVzcyBsZW5ndGggaXMgZGVjaWRlZCBieSBGTUMwNFsyOjBdLg0KPiA+Pj4N Cj4gPj4+IC0gQ29tbWFuZCBtb2RlOiBTUEkgY29udHJvbGxlciBjYW4gc2VuZCBjb21tYW5kIGFu ZCBhZGRyZXNzDQo+ID4+PiAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHdoZW4gQ1BV IHJlYWQvd3JpdGUgdGhlIHJlbGF0ZWQNCj4gPj4gcmVtYXBwZWQNCj4gPj4+ICAgICAgICAgICAg ICAgICAgIG9yIGRlY29kZWQgYWRkcmVzcyBhcmVhLiBUaGUgY29tbWFuZCB1c2VkIGJ5DQo+IHRo aXMNCj4gPj4gbW9kZQ0KPiA+Pj4gICAgICAgICAgICAgICAgICAgY2FuIGJlIGNvbmZpZ3VyZWQg YnkgRk1DMTAvMTQvMThbMjM6MTZdLiBBbHNvLA0KPiB0aGUNCj4gPj4+ICAgICAgICAgICAgICAg ICAgIGFkZHJlc3MgbGVuZ3RoIGlzIGRlY2lkZWQgYnkgRk1DMDRbMjowXS4gVGhpcyBtb2RlDQo+ ID4+IHdpbGwNCj4gPj4+ICAgICAgICAgICAgICAgICAgIGJlIGltcGxlbWVudGVkIGluIHRoZSBm b2xsb3dpbmcgcGF0Y2ggc2VyaWVzLg0KPiA+Pj4NCj4gPj4+IC0gVXNlciBtb2RlOiBJdCBpcyBh IHRyYWRpdGlvbmFsIGFuZCBwdXJlIFNQSSBvcGVyYXRpb24sIHdoZXJlDQo+ID4+PiAgICAgICAg ICAgICAgICBTUEkgdHJhbnNtaXNzaW9uIGlzIGNvbnRyb2xsZWQgYnkgQ1BVLiBJdCBpcyB0aGUg bWFpbg0KPiA+Pj4gICAgICAgICAgICAgICAgbW9kZSBpbiB0aGlzIHBhdGNoLg0KPiA+Pj4NCj4g Pj4+IEVhY2ggU1BJIGNvbnRyb2xsZXIgaW4gQVNQRUVEIFNvQyBoYXMgaXRzIG93biBkZWNvZGVk IGFkZHJlc3MgbWFwcGluZy4NCj4gPj4+IFdpdGhpbiBlYWNoIFNQSSBjb250cm9sbGVyIGRlY29k ZWQgYWRkcmVzcywgZHJpdmVyIGNhbiBhc3NpZ24gYQ0KPiA+Pj4gc3BlY2lmaWMgYWRkcmVzcyBy ZWdpb24gZm9yIGVhY2ggQ1Mgb2YgYSBTUEkgY29udHJvbGxlci4gVGhlIGRlY29kZWQNCj4gPj4+ IGFkZHJlc3MgY2Fubm90IG92ZXJsYXAgdG8gZWFjaCBvdGhlci4gV2l0aCBub3JtYWwgbW9kZSBh bmQgY29tbWFuZA0KPiA+Pj4gbW9kZSwgdGhlIGRlY29kZWQgYWRkcmVzcyBhY2Nlc3NlZCBieSB0 aGUgQ1BVIGRldGVybWluZXMgd2hpY2ggQ1MgaXMNCj4gPj4gYWN0aXZlLg0KPiA+Pj4gV2hlbiB1 c2VyIG1vZGUgaXMgYWRvcHRlZCwgdGhlIENTIGRlY29kZWQgYWRkcmVzcyBpcyBhIEZJRk8sIENQ VSBjYW4NCj4gPj4+IHNlbmQvcmVjZWl2ZSBhbnkgU1BJIHRyYW5zbWlzc2lvbiBieSBhY2Nlc3Np bmcgdGhlIHJlbGF0ZWQgZGVjb2RlZA0KPiA+Pj4gYWRkcmVzcyBmb3IgdGhlIHRhcmdldCBDUy4N Cj4gPj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBDaGluLVRpbmcgS3VvIDxjaGluLXRpbmdfa3Vv QGFzcGVlZHRlY2guY29tPg0KPiA+Pg0KPiA+PiBJIHdvdWxkIHNwbGl0IHRoZSBwYXRjaCBmdXJ0 aGVybW9yZSB0byBlYXNlIHJlYWRpbmcuDQo+ID4NCj4gPiBPa2F5LCB0aGlzIHdpbGwgYmUgdXBk YXRlIGluIHRoZSBuZXh0IHZlcnNpb24uDQo+ID4NCj4gPj4gICAgMSAtIEFkZCBiYXNpYyBzdXBw b3J0DQo+ID4+DQo+ID4+ICAgICAgICB3aXRoIGRlZmF1bHQgZGVjb2RpbmcgcmFuZ2VzIHNldCBm b3IgYWxsIHBvc3NpYmxlIENTLCBldmVuDQo+ID4+ICAgICAgICB3aXRob3V0IGEgZGV2aWNlLg0K PiA+Pg0KPiA+PiAgICAgICAgV0Ugb25seSBoYXZlIFVTRVIgbW9kZSBmb3Igbm93LiBTbyBpdCdz IG5vdCBpbXBvcnRhbnQgdG8NCj4gPj4gICAgICAgIGNvcnJlY3RseSBzZXQgdGhlIHJhbmdlcyBz aW5jZSB3ZSB3b24ndCB1c2UgdGhlbSBiZWZvcmUNCj4gPj4gICAgICAgIGRpcmVjdCBtYXBwaW5n IGlzIGludHJvZHVjZWQuIFRoZXkgc2hvdWxkIG5vdCBvdmVybGFwLA0KPiA+PiAgICAgICAgdGhh dCdzIGFsbC4NCj4gPj4NCj4gPj4gICAgMiAtIGRlY29kaW5nIHJhbmdlIGFkanVzdG1lbnRzDQo+ ID4+DQo+ID4+ICAgICAgICBPbiB0aGF0IHRvcGljLCB3ZSBtaWdodCB3YW50IHRvIHRha2UgdGhl IHNpbXBsZSBEVCBhcHByb2FjaA0KPiA+PiAgICAgICAgd2l0aCBhICJyYW5nZXMiIHByb3BlcnR5 IGRlZmluaW5nIHRoZSBtYXBwaW5nIHdpbmRvd3Mgb2YgZWFjaA0KPiA+PiAgICAgICAgQ0UuIEkg dGhpbmsgaXQgaXMgc2FmZXIgdGhhbiB0cnlpbmcgdG8gY29tcHV0ZSBwZXJmZWN0IHJhbmdlcw0K PiA+PiAgICAgICAgbGlrZSBvbiBMaW51eC4NCj4gPj4NCj4gPj4gICAgMyAtIGNsb2NrIHNldHRp bmdzDQo+ID4+DQo+ID4+ICAgICAgICBUaGF0IHNob3VsZCBzaW1wbHkgYmUgdGhlIHByb3BlcnR5 IGRlZmluZWQgaW4gdGhlIERUDQo+ID4+DQo+ID4+DQo+ID4+PiAtLS0NCj4gPj4+IHYyOiBSZW1v dmUgZGVmY29uZmlnIGZpbGVzIGZyb20gdGhpcyBwYXRjaC4NCj4gPj4+DQo+ID4+PiAgICBkcml2 ZXJzL3NwaS9LY29uZmlnICAgICAgfCAgIDggKw0KPiA+Pj4gICAgZHJpdmVycy9zcGkvTWFrZWZp bGUgICAgIHwgICAxICsNCj4gPj4+ICAgIGRyaXZlcnMvc3BpL3NwaS1hc3BlZWQuYyB8IDgyMg0K PiA+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4+ICAgIDMg ZmlsZXMgY2hhbmdlZCwgODMxIGluc2VydGlvbnMoKykNCj4gPj4+ICAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL3NwaS9zcGktYXNwZWVkLmMNCj4gPj4+DQo+ID4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zcGkvS2NvbmZpZyBiL2RyaXZlcnMvc3BpL0tjb25maWcgaW5kZXgNCj4gPj4+IGEx ZTUxNWNiMmIuLmE2MTYyOTQ5MTAgMTAwNjQ0DQo+ID4+PiAtLS0gYS9kcml2ZXJzL3NwaS9LY29u ZmlnDQo+ID4+PiArKysgYi9kcml2ZXJzL3NwaS9LY29uZmlnDQo+ID4+PiBAQCAtMzg3LDYgKzM4 NywxNCBAQCBjb25maWcgU0FOREJPWF9TUEkNCj4gPj4+ICAgIAkJfTsNCj4gPj4+ICAgIAkgIH07 DQo+ID4+Pg0KPiA+Pj4gK2NvbmZpZyBTUElfQVNQRUVEDQo+ID4+PiArCWJvb2wgIkFTUEVFRCBT UEkgY29udHJvbGxlciBkcml2ZXIiDQo+ID4+PiArCWRlcGVuZHMgb24gRE1fU1BJICYmIFNQSV9N RU0NCj4gPj4+ICsJZGVmYXVsdCBuDQo+ID4+PiArCWhlbHANCj4gPj4+ICsJICBFbmFibGUgQVNQ RUVEIFNQSSBjb250cm9sbGVyIGRyaXZlciBmb3IgQVNUMjUwMA0KPiA+Pj4gKwkgIGFuZCBBU1Qy NjAwIFNvQ3MuDQo+ID4+PiArDQo+ID4+PiAgICBjb25maWcgU1BJX1NJRklWRQ0KPiA+Pj4gICAg CWJvb2wgIlNpRml2ZSBTUEkgZHJpdmVyIg0KPiA+Pj4gICAgCWhlbHANCj4gPj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3NwaS9NYWtlZmlsZSBiL2RyaXZlcnMvc3BpL01ha2VmaWxlIGluZGV4DQo+ ID4+PiAwNmU4MWI0NjViLi4zNmE0YmQ1ZGNlIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZHJpdmVycy9z cGkvTWFrZWZpbGUNCj4gPj4+ICsrKyBiL2RyaXZlcnMvc3BpL01ha2VmaWxlDQo+ID4+PiBAQCAt OSw2ICs5LDcgQEAgb2JqLXkgKz0gc3BpLXVjbGFzcy5vDQo+ID4+PiAgICBvYmotJChDT05GSUdf Q0FERU5DRV9RU1BJKSArPSBjYWRlbmNlX3FzcGkubw0KPiBjYWRlbmNlX3FzcGlfYXBiLm8NCj4g Pj4+ICAgIG9iai0kKENPTkZJR19TQU5EQk9YKSArPSBzcGktZW11bC11Y2xhc3Mubw0KPiA+Pj4g ICAgb2JqLSQoQ09ORklHX1NPRlRfU1BJKSArPSBzb2Z0X3NwaS5vDQo+ID4+PiArb2JqLSQoQ09O RklHX1NQSV9BU1BFRUQpICs9IHNwaS1hc3BlZWQubw0KPiA+Pj4gICAgb2JqLSQoQ09ORklHX1NQ SV9NRU0pICs9IHNwaS1tZW0ubw0KPiA+Pj4gICAgb2JqLSQoQ09ORklHX1RJX1FTUEkpICs9IHRp X3FzcGkubw0KPiA+Pj4gICAgb2JqLSQoQ09ORklHX0ZTTF9RU1BJKSArPSBmc2xfcXNwaS5vIGRp ZmYgLS1naXQNCj4gPj4+IGEvZHJpdmVycy9zcGkvc3BpLWFzcGVlZC5jIGIvZHJpdmVycy9zcGkv c3BpLWFzcGVlZC5jIG5ldyBmaWxlIG1vZGUNCj4gPj4+IDEwMDY0NCBpbmRleCAwMDAwMDAwMDAw Li45NTc0YWZmNzkzDQo+ID4+PiAtLS0gL2Rldi9udWxsDQo+ID4+PiArKysgYi9kcml2ZXJzL3Nw aS9zcGktYXNwZWVkLmMNCj4gPj4+IEBAIC0wLDAgKzEsODIyIEBADQo+ID4+PiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArDQo+ID4+PiArLyoNCj4gPj4+ICsgKiBBU1BFRUQg Rk1DL1NQSSBDb250cm9sbGVyIGRyaXZlcg0KPiA+Pj4gKyAqDQo+ID4+PiArICogQ29weXJpZ2h0 IChjKSAyMDIyIEFTUEVFRCBDb3Jwb3JhdGlvbi4NCj4gPj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIw MjIgSUJNIENvcnBvcmF0aW9uLg0KPiA+Pj4gKyAqDQo+ID4+PiArICogQXV0aG9yOg0KPiA+Pj4g KyAqICAgICBDaGluLVRpbmcgS3VvIDxjaGluLXRpbmdfa3VvQGFzcGVlZHRlY2guY29tPg0KPiA+ Pj4gKyAqICAgICBDZWRyaWMgTGUgR29hdGVyIDxjbGdAa2FvZC5vcmc+DQo+ID4+PiArICovDQo+ ID4+PiArDQo+ID4+PiArI2luY2x1ZGUgPGFzbS9pby5oPg0KPiA+Pj4gKyNpbmNsdWRlIDxjbGsu aD4NCj4gPj4+ICsjaW5jbHVkZSA8Y29tbW9uLmg+DQo+ID4+PiArI2luY2x1ZGUgPGRtLmg+DQo+ ID4+PiArI2luY2x1ZGUgPGRtL2RldmljZV9jb21wYXQuaD4NCj4gPj4+ICsjaW5jbHVkZSA8bGlu dXgvYml0b3BzLmg+DQo+ID4+PiArI2luY2x1ZGUgPGxpbnV4L2J1Zy5oPg0KPiA+Pj4gKyNpbmNs dWRlIDxsaW51eC9lcnIuaD4NCj4gPj4+ICsjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+DQo+ID4+ PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+Pj4gKyNpbmNsdWRlIDxsaW51eC9tdGQv c3BpLW5vci5oPg0KPiA+Pj4gKyNpbmNsdWRlIDxsaW51eC9zaXplcy5oPg0KPiA+Pj4gKyNpbmNs dWRlIDxtYWxsb2MuaD4NCj4gPj4+ICsjaW5jbHVkZSA8c3BpLmg+DQo+ID4+PiArI2luY2x1ZGUg PHNwaS1tZW0uaD4NCj4gPj4+ICsNCj4gPj4+ICsvKiBBU1BFRUQgRk1DL1NQSSBtZW1vcnkgY29u dHJvbCByZWdpc3RlciByZWxhdGVkICovDQo+ID4+PiArI2RlZmluZSBSRUdfQ0VfVFlQRV9TRVRU SU5HICAgICAgICAgIDB4MDANCj4gPj4+ICsjZGVmaW5lIFJFR19DRV9BRERSX01PREVfQ1RSTCAg ICAgICAgMHgwNA0KPiA+Pj4gKyNkZWZpbmUgUkVHX0lOVFJfQ1RSTF9TVEFUVVMgICAgICAgICAw eDA4DQo+ID4+PiArI2RlZmluZSBSRUdfQ0UwX0NUUkxfUkVHICAgICAgICAgICAgIDB4MTANCj4g Pj4+ICsjZGVmaW5lIFJFR19DRTBfREVDT0RFRF9BRERSX1JFRyAgICAgMHgzMA0KPiA+Pj4gKw0K PiA+Pj4gKyNkZWZpbmUgQVNQRUVEX1NQSV9NQVhfQ1MgICAgICAgMw0KPiA+Pj4gKyNkZWZpbmUg RkxBU0hfQ0FMSUJSQVRJT05fTEVOICAgMHg0MDANCj4gPj4+ICsNCj4gPj4+ICsjZGVmaW5lIENU UkxfSU9fU0lOR0xFX0RBVEEgICAgIDANCj4gPj4+ICsjZGVmaW5lIENUUkxfSU9fUVVBRF9EQVRB ICAgICAgIEJJVCgzMCkNCj4gPj4+ICsjZGVmaW5lIENUUkxfSU9fRFVBTF9EQVRBICAgICAgIEJJ VCgyOSkNCj4gPj4+ICsNCj4gPj4+ICsjZGVmaW5lIENUUkxfSU9fTU9ERV9VU0VSICAgICAgIEdF Tk1BU0soMSwgMCkNCj4gPj4+ICsjZGVmaW5lIENUUkxfSU9fTU9ERV9DTURfUkVBRCAgIEJJVCgw KQ0KPiA+Pj4gKyNkZWZpbmUgQ1RSTF9JT19NT0RFX0NNRF9XUklURSAgQklUKDEpDQo+ID4+PiAr I2RlZmluZSBDVFJMX1NUT1BfQUNUSVZFICAgICAgICBCSVQoMikNCj4gPj4+ICsNCj4gPj4+ICtz dHJ1Y3QgYXNwZWVkX3NwaV9wbGF0IHsNCj4gPj4+ICsJZmR0X2FkZHJfdCBjdHJsX2Jhc2U7DQo+ ID4+DQo+ID4+IGFyZSB0aGVzZSB0aGUgcmVnaXN0ZXJzID8NCj4gPg0KPiA+IE5vLCAic3RydWN0 IGFzcGVlZF9zcGlfcGxhdCIgaXMgdXNlZCB0byByZWNvcmQgc29tZSBiYXNpYyBpbmZvcm1hdGlv biBvZiB0aGlzDQo+IHBsYXRmb3JtLg0KPiA+DQo+ID4+PiArCXZvaWQgX19pb21lbSAqYWhiX2Jh c2U7IC8qIEFIQiBhZGRyZXNzIGJhc2UgZm9yIGFsbCBmbGFzaCBkZXZpY2VzLg0KPiAqLw0KPiA+ Pj4gKwlmZHRfc2l6ZV90IGFoYl9zejsgLyogT3ZlcmFsbCBBSEIgd2luZG93IHNpemUgZm9yIGFs bCBmbGFzaCBkZXZpY2UuICovDQo+ID4+PiArCXUzMiBoY2xrX3JhdGU7IC8qIEFIQiBjbG9jayBy YXRlICovDQo+ID4+PiArCXU4IG1heF9jczsNCj4gPj4NCj4gPj4NCj4gPj4gSSBkb24ndCB0aGlu ayB3ZSBuZWVkIGEgIm1heF9jcyIgaW4gdGhlIGNvbnRyb2xsZXIgc3RydWN0IGFuZCBhICJudW0t Y3MiDQo+ID4+IHByb3BlcnR5IGluIHRoZSBEVC4gV2UgY291bGQgc2ltcGx5IHVzZSBhIEhXIG1h eG1pbXVtIGRlZmluZWQgaW4NCj4gPj4gYXNwZWVkX3NwaV9pbmZvLg0KPiA+Pg0KPiA+DQo+ID4g Im51bS1jcyIgaXMgdXNlZCB0byBkZXRlY3QgdGhlIG51bWJlciBvZiBhY3RpdmUgZmxhc2ggbm9k ZS4NCj4gPiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSB1c2VkIHRvIG1haW50YWluIHRoZSBhZGRy ZXNzIGRlY29kZWQgcmFuZ2UuDQo+IA0KPiBJIGFtIG5vdCBzdXJlIHdlIG5lZWQgIm51bS1jcyIg c2luY2Ugd2Ugc2hvdWxkIGNvbmZpZ3VyZSBhbGwgZGVjb2RpbmcgcmFuZ2UNCj4gcmVnaXN0ZXJz IHRvIGF2b2lkIG92ZXJsYXBzLiBBdCBsZWFzdCBvbiBzb21lIG9mIHRoZSBhU1QyNTAwIGNvbnRy b2xsZXJzLg0KPiANCj4gRG9lcyB0aGUgQVNUMjYwMCBGTUMgYW5kIFNQSTEvMiBhbGxvdyB0byBj b25maWd1cmUgYSBzaW5nbGUgQ0UgdG8gY292ZXIgdGhlDQo+IHdob2xlIG1hcHBpbmcgd2luZG93 IG9mIHRoZSBjb250cm9sbGVyIHdoaWxlIHRoZSBvdGhlciBDRSB3aW5kb3dzIGFyZQ0KPiBjbG9z ZWQgPw0KDQpZZXMsIEFTVDI2MDAgYWxsb3dzIGEgc2luZ2xlIENFIHRvIG9jY3VweSB0aGUgd2hv bGUgZGVjb2RlZCB3aW5kb3dzIHdoaWxlDQp0aGUgb3RoZXIgQ0VzIGFyZSBjbG9zZWQuDQoNCj4g DQo+ID4gIm1heC1jcyIgaXMgdXNlZCBmb3IgY29udHJvbGxpbmcgcmVnaXN0ZXIgYWNjZXNzLg0K PiA+IFdlIG5lZWQgdG8ga25vdyB0aGUgbWF4aW11bSBDUyBudW1iZXIgc3VwcG9ydGVkIGJ5IHRo ZSBjdXJyZW50DQo+IGNvbnRyb2xsZXIuDQo+IA0KPiBZZXMuIFRoYXQncyBmaW5lLiBJdCBpcyBh biBIVyBsaW1pdCBwZXIgY29udHJvbGxlciBhbmQgd2UgbmVlZCB0byBrZWVwIHRoaXMNCj4gcHJv cGVydHkgaW4gdGhlIERUIG9yIGluIHRoZSBkcml2ZXIuDQo+IA0KDQpPa2F5Lg0KDQo+IEkgaGF2 ZSBiZWVuIGRlZmluaW5nIHRoaXMgSFcgcHJvcGVydHkgaW4gdGhlIGRyaXZlci4gVGhhdCBtaWdo dCBoYXZlIGJlZW4gYQ0KPiB3cm9uZyBjaG9pY2UuIFNvbWV0aGluZyB0byBmaXggaW4gTGludXgg bWF5IGJlLg0KPiANCj4gPj4NCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gK3N0cnVjdCBhc3Bl ZWRfc3BpX2ZsYXNoIHsNCj4gPj4+ICsJdTggY3M7DQo+ID4+PiArCXZvaWQgX19pb21lbSAqYWhi X2Jhc2U7DQo+ID4+PiArCXUzMiBhaGJfd2luX3N6Ow0KPiA+Pj4gKwl1MzIgY2VfY3RybF91c2Vy Ow0KPiA+Pj4gKwl1MzIgY2VfY3RybF9yZWFkOw0KPiA+Pj4gKwl1MzIgbWF4X2ZyZXE7DQo+ID4+ PiArCWJvb2wgdHJpbW1lZF9kZWNvZGVkX3N6Ow0KPiA+Pg0KPiA+PiBJIHdvbmRlciB3aGF0IHRo aXMgaXMgZm9yLiBXZSBuZWVkIHRvIHNwbGl0IHRoZSBwYXRjaGVzIDopDQo+ID4NCj4gPiBPaCwg aXQgaXMgdGhlIHJlZHVuZGFudCBvbmUgYW5kIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4 dCBwYXRjaCB2ZXJzaW9uLg0KPiA+DQo+ID4+DQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ICtz dHJ1Y3QgYXNwZWVkX3NwaV9wcml2IHsNCj4gPj4+ICsJdTMyIG51bV9jczsNCj4gPj4NCj4gPj4g U2VlIGFib3ZlLg0KPiA+Pg0KPiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9pbmZvICppbmZvOw0K PiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9mbGFzaCBmbGFzaGVzW0FTUEVFRF9TUElfTUFYX0NT XTsNCj4gPj4+ICsJdTMyIGRlY29kZWRfc3pfYXJyW0FTUEVFRF9TUElfTUFYX0NTXTsNCj4gPj4+ ICt9Ow0KPiA+Pg0KPiA+Pg0KPiA+PiBDb3VsZG4ndCB3ZSBoYXZlIGEgJ3N0cnVjdCBhc3BlZWRf c3BpX3JlZ3MnIGRlZmluaW5nIHRoZSBsYXlvdXQgb2YNCj4gPj4gdGhlIHJlZ2lzdGVycyA/DQo+ ID4+DQo+ID4NCj4gPiBXaHk/IFRoZSByZWdpc3RlciBvZmZzZXQgaGFzIGJlZW4gZGVmaW5lZCBi eSBtYWNybyBwcmV2aW91c2x5Lg0KPiANCj4gTm90IGFsd2F5cy4gTG9vayBhdCB0aGUgKl9yZWdz IHN0cnVjdCBpbiB0aGUgZGlmZmVyZW50IGRyaXZlcnMgYW5kIDoNCj4gDQo+IGh0dHBzOi8vZ2l0 aHViLmNvbS9sZWdvYXRlci91LWJvb3QvYmxvYi9hc3BlZWQtdjIwMjIuMDQvYXJjaC9hcm0vaW5j bHVkZS9hDQo+IHNtL2FyY2gtYXNwZWVkL3NwaS5oI0w3Mg0KPiANCj4gSSBhbSBub3Qgc3VyZSB3 aGF0IGlzIHRoZSBwcmVmZXJyZWQgcHJhY3RpY2UgaW4gVS1Cb290LiBCdXQgYSBmZXcgQXNwZWVk IGRyaXZlcnMNCj4gaGF2ZSBiZWVuIGZvbG93aW5nIHRoaXMgc2NoZW1lLg0KPiANCg0KT2theSwg YnV0IHdlIG5lZWQgdG8gdGFrZSBzb21lIHRpbWUgdG8gbW9kaWZ5IHRoZSB3aG9sZSBkcml2ZXIu DQoNCj4gPg0KPiA+Pj4gK3N0cnVjdCBhc3BlZWRfc3BpX2luZm8gew0KPiA+Pj4gKwl1MzIgY21k X2lvX2N0cmxfbWFzazsNCj4gPj4+ICsJdTMyIGNsa19jdHJsX21hc2s7DQo+ID4+PiArCXUzMiBt YXhfZGF0YV9idXNfd2lkdGg7DQo+ID4+PiArCXUzMiBtaW5fZGVjb2RlZF9zejsNCj4gPj4+ICsJ dm9pZCAoKnNldF80Ynl0ZSkoc3RydWN0IHVkZXZpY2UgKmJ1cywgdTMyIGNzKTsNCj4gPj4+ICsJ dTMyICgqc2VnbWVudF9zdGFydCkoc3RydWN0IHVkZXZpY2UgKmJ1cywgdTMyIHJlZyk7DQo+ID4+ PiArCXUzMiAoKnNlZ21lbnRfZW5kKShzdHJ1Y3QgdWRldmljZSAqYnVzLCB1MzIgcmVnKTsNCj4g Pj4+ICsJdTMyICgqc2VnbWVudF9yZWcpKHUzMiBzdGFydCwgdTMyIGVuZCk7DQo+ID4+PiArCWlu dCAoKmFkanVzdF9kZWNvZGVkX3N6KShzdHJ1Y3QgdWRldmljZSAqYnVzLCB1MzIgZGVjb2RlZF9z el9hcnJbXSk7DQo+ID4+PiArCXUzMiAoKmdldF9jbGtfc2V0dGluZykoc3RydWN0IHVkZXZpY2Ug KmRldiwgdWludCBoeik7IH07DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIGludCBhc3BlZWRfc3Bp X3RyaW1fZGVjb2RlZF9zaXplKHN0cnVjdCB1ZGV2aWNlICpidXMsDQo+ID4+PiArCQkJCQl1MzIg ZGVjb2RlZF9zel9hcnJbXSk7DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIHUzMiBhc3BlZWRfc3Bp X2dldF9pb19tb2RlKHUzMiBidXNfd2lkdGgpIHsNCj4gPj4+ICsJc3dpdGNoIChidXNfd2lkdGgp IHsNCj4gPj4+ICsJY2FzZSAxOg0KPiA+Pj4gKwkJcmV0dXJuIENUUkxfSU9fU0lOR0xFX0RBVEE7 DQo+ID4+PiArCWNhc2UgMjoNCj4gPj4+ICsJCXJldHVybiBDVFJMX0lPX0RVQUxfREFUQTsNCj4g Pj4+ICsJY2FzZSA0Og0KPiA+Pj4gKwkJcmV0dXJuIENUUkxfSU9fUVVBRF9EQVRBOw0KPiA+Pj4g KwlkZWZhdWx0Og0KPiA+Pj4gKwkJcmV0dXJuIENUUkxfSU9fU0lOR0xFX0RBVEE7DQo+ID4+PiAr CX0NCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIHUzMiBhc3QyNTAwX3NwaV9zZWdt ZW50X3N0YXJ0KHN0cnVjdCB1ZGV2aWNlICpidXMsIHUzMiByZWcpIHsNCj4gPj4+ICsJc3RydWN0 IGFzcGVlZF9zcGlfcGxhdCAqcGxhdCA9IGRldl9nZXRfcGxhdChidXMpOw0KPiA+Pj4gKwl1MzIg c3RhcnRfb2Zmc2V0ID0gKChyZWcgPj4gMTYpICYgMHhmZikgPDwgMjM7DQo+ID4+PiArDQo+ID4+ PiArCWlmIChzdGFydF9vZmZzZXQgPT0gMCkNCj4gPj4+ICsJCXJldHVybiAodTMyKXBsYXQtPmFo Yl9iYXNlOw0KPiA+Pj4gKw0KPiA+Pj4gKwlyZXR1cm4gKHUzMilwbGF0LT5haGJfYmFzZSArIHN0 YXJ0X29mZnNldDsgfQ0KPiA+Pj4gKw0KPiA+Pj4gK3N0YXRpYyB1MzIgYXN0MjUwMF9zcGlfc2Vn bWVudF9lbmQoc3RydWN0IHVkZXZpY2UgKmJ1cywgdTMyIHJlZykgew0KPiA+Pj4gKwlzdHJ1Y3Qg YXNwZWVkX3NwaV9wbGF0ICpwbGF0ID0gZGV2X2dldF9wbGF0KGJ1cyk7DQo+ID4+PiArCXUzMiBl bmRfb2Zmc2V0ID0gKChyZWcgPj4gMjQpICYgMHhmZikgPDwgMjM7DQo+ID4+PiArDQo+ID4+PiAr CS8qIE1lYW5pbmdsZXNzIGVuZF9vZmZzZXQsIHNldCB0byBwaHlzaWNhbCBhaGIgYmFzZS4gKi8N Cj4gPj4+ICsJaWYgKGVuZF9vZmZzZXQgPT0gMCkNCj4gPj4+ICsJCXJldHVybiAodTMyKXBsYXQt PmFoYl9iYXNlOw0KPiA+Pj4gKw0KPiA+Pj4gKwlyZXR1cm4gKHUzMilwbGF0LT5haGJfYmFzZSAr IGVuZF9vZmZzZXQgKyAweDEwMDAwMDsgfQ0KPiA+Pj4gKw0KPiA+Pj4gK3N0YXRpYyB1MzIgYXN0 MjUwMF9zcGlfc2VnbWVudF9yZWcodTMyIHN0YXJ0LCB1MzIgZW5kKSB7DQo+ID4+PiArCWlmIChz dGFydCA9PSBlbmQpDQo+ID4+PiArCQlyZXR1cm4gMDsNCj4gPj4+ICsNCj4gPj4+ICsJcmV0dXJu ICgoKChzdGFydCkgPj4gMjMpICYgMHhmZikgPDwgMTYpIHwgKCgoKGVuZCkgPj4gMjMpICYgMHhm ZikNCj4gPj4+ICs8PCAyNCk7IH0NCj4gPj4+ICsNCj4gPj4+ICtzdGF0aWMgdm9pZCBhc3QyNTAw X3NwaV9jaGlwX3NldF80Ynl0ZShzdHJ1Y3QgdWRldmljZSAqYnVzLCB1MzIgY3MpIHsNCj4gPj4+ ICsJc3RydWN0IGFzcGVlZF9zcGlfcGxhdCAqcGxhdCA9IGRldl9nZXRfcGxhdChidXMpOw0KPiA+ Pj4gKwl1MzIgcmVnX3ZhbDsNCj4gPj4+ICsNCj4gPj4+ICsJcmVnX3ZhbCA9IHJlYWRsKHBsYXQt PmN0cmxfYmFzZSArIFJFR19DRV9BRERSX01PREVfQ1RSTCk7DQo+ID4+PiArCXJlZ192YWwgfD0g MHgxIDw8IGNzOw0KPiA+Pj4gKwl3cml0ZWwocmVnX3ZhbCwgcGxhdC0+Y3RybF9iYXNlICsgUkVH X0NFX0FERFJfTU9ERV9DVFJMKTsgfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qDQo+ID4+PiArICogRm9y IEFTVDI1MDAsIHRoZSBtaW5pbXVtIGFkZHJlc3MgZGVjb2RlZCBzaXplIGZvciBlYWNoIENTDQo+ ID4+PiArICogaXMgOE1CIGluc3RlYWQgb2YgemVyby4gVGhpcyBhZGRyZXNzIGRlY29kZWQgc2l6 ZSBpcw0KPiA+Pj4gKyAqIG1hbmRhdG9yeSBmb3IgZWFjaCBDUyBubyBtYXR0ZXIgd2hldGhlciBp dCB3aWxsIGJlIHVzZWQuDQo+ID4+PiArICogVGhpcyBpcyBhIEhXIGxpbWl0YXRpb24uDQo+ID4+ PiArICovDQo+ID4+PiArc3RhdGljIGludCBhc3QyNTAwX2FkanVzdF9kZWNvZGVkX3NpemUoc3Ry dWN0IHVkZXZpY2UgKmJ1cywNCj4gPj4+ICsJCQkJICAgICAgIHUzMiBkZWNvZGVkX3N6X2Fycltd KQ0KPiA+Pj4gK3sNCj4gPj4+ICsJc3RydWN0IGFzcGVlZF9zcGlfcGxhdCAqcGxhdCA9IGRldl9n ZXRfcGxhdChidXMpOw0KPiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2ICpwcml2ID0gZGV2 X2dldF9wcml2KGJ1cyk7DQo+ID4+PiArCWludCByZXQ7DQo+ID4+PiArCWludCBjczsNCj4gPj4+ ICsNCj4gPj4+ICsJLyogQXNzaWduIG1pbl9kZWNvZGVkX3N6IHRvIHVudXNlZCBDUy4gKi8NCj4g Pj4+ICsJZm9yIChjcyA9IHByaXYtPm51bV9jczsgY3MgPCBwbGF0LT5tYXhfY3M7IGNzKyspIHsN Cj4gPj4+ICsJCWlmIChkZWNvZGVkX3N6X2Fycltjc10gPCBwcml2LT5pbmZvLT5taW5fZGVjb2Rl ZF9zeikNCj4gPj4+ICsJCQlkZWNvZGVkX3N6X2Fycltjc10gPSBwcml2LT5pbmZvLT5taW5fZGVj b2RlZF9zejsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+Pj4gKwlyZXQgPSBhc3BlZWRfc3BpX3Ry aW1fZGVjb2RlZF9zaXplKGJ1cywgZGVjb2RlZF9zel9hcnIpOw0KPiA+Pj4gKwlpZiAocmV0ICE9 IDApDQo+ID4+PiArCQlyZXR1cm4gcmV0Ow0KPiA+Pj4gKw0KPiA+Pj4gKwlyZXR1cm4gMDsNCj4g Pj4+ICt9DQo+ID4+PiArDQo+ID4+PiArLyogVHJhbnNmZXIgbWF4aW11bSBjbG9jayBmcmVxdWVu Y3kgdG8gcmVnaXN0ZXIgc2V0dGluZyAqLyBzdGF0aWMNCj4gPj4+ICt1MzIgYXN0MjUwMF9nZXRf Y2xrX3NldHRpbmcoc3RydWN0IHVkZXZpY2UgKmRldiwgdWludCBtYXhfaHopIHsNCj4gPj4+ICsJ c3RydWN0IGFzcGVlZF9zcGlfcGxhdCAqcGxhdCA9IGRldl9nZXRfcGxhdChkZXYtPnBhcmVudCk7 DQo+ID4+PiArCXN0cnVjdCBhc3BlZWRfc3BpX3ByaXYgKnByaXYgPSBkZXZfZ2V0X3ByaXYoZGV2 LT5wYXJlbnQpOw0KPiA+Pj4gKwlzdHJ1Y3QgZG1fc3BpX3NsYXZlX3BsYXQgKnNsYXZlX3BsYXQg PSBkZXZfZ2V0X3BhcmVudF9wbGF0KGRldik7DQo+ID4+PiArCXUzMiBoY2xrX2NsayA9IHBsYXQt PmhjbGtfcmF0ZTsNCj4gPj4+ICsJdTMyIGhjbGtfZGl2ID0gMHgwMDA7IC8qIGRlZmF1bHQgdmFs dWUgKi8NCj4gPj4+ICsJdTMyIGk7DQo+ID4+PiArCWJvb2wgZm91bmQgPSBmYWxzZTsNCj4gPj4+ ICsJLyogSENMSy8xIC4uCUhDTEsvMTYgKi8NCj4gPj4+ICsJdTMyIGhjbGtfbWFza3NbXSA9IHsx NSwgNywgMTQsIDYsIDEzLCA1LCAxMiwgNCwNCj4gPj4+ICsJCQkJIDExLCAzLCAxMCwgMiwgOSwg IDEsIDgsICAwfTsNCj4gPj4+ICsNCj4gPj4+ICsJLyogRk1DL1NQSVIxMFsxMTo4XSAqLw0KPiA+ Pj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShoY2xrX21hc2tzKTsgaSsrKSB7DQo+ID4+ PiArCQlpZiAoaGNsa19jbGsgLyAoaSArIDEpIDw9IG1heF9oeikgew0KPiA+Pj4gKwkJCWZvdW5k ID0gdHJ1ZTsNCj4gPj4+ICsJCQlwcml2LT5mbGFzaGVzW3NsYXZlX3BsYXQtPmNzXS5tYXhfZnJl cSA9DQo+ID4+PiArCQkJCQkJCWhjbGtfY2xrIC8gKGkgKyAxKTsNCj4gPj4+ICsJCQlicmVhazsN Cj4gPj4+ICsJCX0NCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+Pj4gKwlpZiAoZm91bmQpIHsNCj4g Pj4+ICsJCWhjbGtfZGl2ID0gaGNsa19tYXNrc1tpXSA8PCA4Ow0KPiA+Pj4gKwkJZ290byBlbmQ7 DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo aGNsa19tYXNrcyk7IGkrKykgew0KPiA+Pj4gKwkJaWYgKGhjbGtfY2xrIC8gKChpICsgMSkgKiA0 KSA8PSBtYXhfaHopIHsNCj4gPj4+ICsJCQlmb3VuZCA9IHRydWU7DQo+ID4+PiArCQkJcHJpdi0+ Zmxhc2hlc1tzbGF2ZV9wbGF0LT5jc10ubWF4X2ZyZXEgPQ0KPiA+Pj4gKwkJCQkJCWhjbGtfY2xr IC8gKChpICsgMSkgKiA0KTsNCj4gPj4+ICsJCQlicmVhazsNCj4gPj4+ICsJCX0NCj4gPj4+ICsJ fQ0KPiA+Pj4gKw0KPiA+Pj4gKwlpZiAoZm91bmQpDQo+ID4+PiArCQloY2xrX2RpdiA9IEJJVCgx MykgfCAoaGNsa19tYXNrc1tpXSA8PCA4KTsNCj4gPj4+ICsNCj4gPj4+ICtlbmQ6DQo+ID4+PiAr CWRldl9kYmcoZGV2LCAiZm91bmQ6ICVzLCBoY2xrOiAlZCwgbWF4X2NsazogJWRcbiIsIGZvdW5k ID8gInllcyIgOg0KPiAibm8iLA0KPiA+Pj4gKwkJaGNsa19jbGssIG1heF9oeik7DQo+ID4+PiAr DQo+ID4+PiArCWlmIChmb3VuZCkgew0KPiA+Pj4gKwkJZGV2X2RiZyhkZXYsICJoX2RpdjogJWQg KG1hc2sgJXgpLCBzcGVlZDogJWRcbiIsDQo+ID4+PiArCQkJaSArIDEsIGhjbGtfbWFza3NbaV0s DQo+IHByaXYtPmZsYXNoZXNbc2xhdmVfcGxhdC0+Y3NdLm1heF9mcmVxKTsNCj4gPj4+ICsJfQ0K PiA+Pj4gKw0KPiA+Pj4gKwlyZXR1cm4gaGNsa19kaXY7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+ Pj4gK3N0YXRpYyB1MzIgYXN0MjYwMF9zcGlfc2VnbWVudF9zdGFydChzdHJ1Y3QgdWRldmljZSAq YnVzLCB1MzIgcmVnKSB7DQo+ID4+PiArCXN0cnVjdCBhc3BlZWRfc3BpX3BsYXQgKnBsYXQgPSBk ZXZfZ2V0X3BsYXQoYnVzKTsNCj4gPj4+ICsJdTMyIHN0YXJ0X29mZnNldCA9IChyZWcgPDwgMTYp ICYgMHgwZmYwMDAwMDsNCj4gPj4+ICsNCj4gPj4+ICsJaWYgKHN0YXJ0X29mZnNldCA9PSAwKQ0K PiA+Pj4gKwkJcmV0dXJuICh1MzIpcGxhdC0+YWhiX2Jhc2U7DQo+ID4+PiArDQo+ID4+PiArCXJl dHVybiAodTMyKXBsYXQtPmFoYl9iYXNlICsgc3RhcnRfb2Zmc2V0OyB9DQo+ID4+PiArDQo+ID4+ PiArc3RhdGljIHUzMiBhc3QyNjAwX3NwaV9zZWdtZW50X2VuZChzdHJ1Y3QgdWRldmljZSAqYnVz LCB1MzIgcmVnKSB7DQo+ID4+PiArCXN0cnVjdCBhc3BlZWRfc3BpX3BsYXQgKnBsYXQgPSBkZXZf Z2V0X3BsYXQoYnVzKTsNCj4gPj4+ICsJdTMyIGVuZF9vZmZzZXQgPSByZWcgJiAweDBmZjAwMDAw Ow0KPiA+Pj4gKw0KPiA+Pj4gKwkvKiBNZWFuaW5nbGVzcyBlbmRfb2Zmc2V0LCBzZXQgdG8gcGh5 c2ljYWwgYWhiIGJhc2UuICovDQo+ID4+PiArCWlmIChlbmRfb2Zmc2V0ID09IDApDQo+ID4+PiAr CQlyZXR1cm4gKHUzMilwbGF0LT5haGJfYmFzZTsNCj4gPj4+ICsNCj4gPj4+ICsJcmV0dXJuICh1 MzIpcGxhdC0+YWhiX2Jhc2UgKyBlbmRfb2Zmc2V0ICsgMHgxMDAwMDA7IH0NCj4gPj4+ICsNCj4g Pj4+ICtzdGF0aWMgdTMyIGFzdDI2MDBfc3BpX3NlZ21lbnRfcmVnKHUzMiBzdGFydCwgdTMyIGVu ZCkgew0KPiA+Pj4gKwlpZiAoc3RhcnQgPT0gZW5kKQ0KPiA+Pj4gKwkJcmV0dXJuIDA7DQo+ID4+ PiArDQo+ID4+PiArCXJldHVybiAoKHN0YXJ0ICYgMHgwZmYwMDAwMCkgPj4gMTYpIHwgKChlbmQg LSAweDEwMDAwMCkgJg0KPiA+Pj4gKzB4MGZmMDAwMDApOyB9DQo+ID4+PiArDQo+ID4+PiArc3Rh dGljIHZvaWQgYXN0MjYwMF9zcGlfY2hpcF9zZXRfNGJ5dGUoc3RydWN0IHVkZXZpY2UgKmJ1cywg dTMyIGNzKSB7DQo+ID4+PiArCXN0cnVjdCBhc3BlZWRfc3BpX3BsYXQgKnBsYXQgPSBkZXZfZ2V0 X3BsYXQoYnVzKTsNCj4gPj4+ICsJdTMyIHJlZ192YWw7DQo+ID4+PiArDQo+ID4+PiArCXJlZ192 YWwgPSByZWFkbChwbGF0LT5jdHJsX2Jhc2UgKyBSRUdfQ0VfQUREUl9NT0RFX0NUUkwpOw0KPiA+ Pj4gKwlyZWdfdmFsIHw9IDB4MTEgPDwgY3M7DQo+ID4+PiArCXdyaXRlbChyZWdfdmFsLCBwbGF0 LT5jdHJsX2Jhc2UgKyBSRUdfQ0VfQUREUl9NT0RFX0NUUkwpOyB9DQo+ID4+PiArDQo+ID4+PiAr c3RhdGljIGludCBhc3QyNjAwX2FkanVzdF9kZWNvZGVkX3NpemUoc3RydWN0IHVkZXZpY2UgKmJ1 cywNCj4gPj4+ICsJCQkJICAgICAgIHUzMiBkZWNvZGVkX3N6X2FycltdKQ0KPiA+Pj4gK3sNCj4g Pj4+ICsJc3RydWN0IGFzcGVlZF9zcGlfcHJpdiAqcHJpdiA9IGRldl9nZXRfcHJpdihidXMpOw0K PiA+Pj4gKwlpbnQgcmV0Ow0KPiA+Pj4gKwlpbnQgaTsNCj4gPj4+ICsJaW50IGNzOw0KPiA+Pj4g Kwl1MzIgcHJlX3N6Ow0KPiA+Pj4gKwl1MzIgbGFja19zejsNCj4gPj4+ICsNCj4gPj4+ICsJLyoN Cj4gPj4+ICsJICogSWYgY29tbW5hZCBtb2RlIG9yIG5vcm1hbCBtb2RlIGlzIHVzZWQsIHRoZSBz dGFydCBhZGRyZXNzIG9mIGENCj4gPj4+ICsJICogZGVjb2RlZCByYW5nZSBzaG91bGQgYmUgbXVs dGlwbGUgb2YgaXRzIHJlbGF0ZWQgZmxhc2ggc2l6ZS4NCj4gPj4+ICsJICogTmFtZWx5LCB0aGUg dG90YWwgZGVjb2RlZCBzaXplIGZyb20gZmxhc2ggMCB0byBmbGFzaCBOIHNob3VsZA0KPiA+Pj4g KwkgKiBiZSBtdWx0aXBsZSBvZiB0aGUgc2l6ZSBvZiBmbGFzaCAoTiArIDEpLg0KPiA+Pj4gKwkg Ki8NCj4gPj4+ICsJZm9yIChjcyA9IHByaXYtPm51bV9jcyAtIDE7IGNzID49IDA7IGNzLS0pIHsN Cj4gPj4+ICsJCXByZV9zeiA9IDA7DQo+ID4+PiArCQlmb3IgKGkgPSAwOyBpIDwgY3M7IGkrKykN Cj4gPj4+ICsJCQlwcmVfc3ogKz0gZGVjb2RlZF9zel9hcnJbaV07DQo+ID4+PiArDQo+ID4+PiAr CQlpZiAoZGVjb2RlZF9zel9hcnJbY3NdICE9IDAgJiYgKHByZV9zeiAlIGRlY29kZWRfc3pfYXJy W2NzXSkgIT0NCj4gMCkgew0KPiA+Pj4gKwkJCWxhY2tfc3ogPSBkZWNvZGVkX3N6X2Fycltjc10g LSAocHJlX3N6ICUNCj4gZGVjb2RlZF9zel9hcnJbY3NdKTsNCj4gPj4+ICsJCQlkZWNvZGVkX3N6 X2FyclswXSArPSBsYWNrX3N6Ow0KPiA+Pj4gKwkJfQ0KPiA+Pj4gKwl9DQo+ID4+PiArDQo+ID4+ PiArCXJldCA9IGFzcGVlZF9zcGlfdHJpbV9kZWNvZGVkX3NpemUoYnVzLCBkZWNvZGVkX3N6X2Fy cik7DQo+ID4+PiArCWlmIChyZXQgIT0gMCkNCj4gPj4+ICsJCXJldHVybiByZXQ7DQo+ID4+PiAr DQo+ID4+PiArCXJldHVybiAwOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKiBUcmFuc2Zl ciBtYXhpbXVtIGNsb2NrIGZyZXF1ZW5jeSB0byByZWdpc3RlciBzZXR0aW5nICovIHN0YXRpYw0K PiA+Pj4gK3UzMiBhc3QyNjAwX2dldF9jbGtfc2V0dGluZyhzdHJ1Y3QgdWRldmljZSAqZGV2LCB1 aW50IG1heF9oeikgew0KPiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wbGF0ICpwbGF0ID0gZGV2 X2dldF9wbGF0KGRldi0+cGFyZW50KTsNCj4gPj4+ICsJc3RydWN0IGFzcGVlZF9zcGlfcHJpdiAq cHJpdiA9IGRldl9nZXRfcHJpdihkZXYtPnBhcmVudCk7DQo+ID4+PiArCXN0cnVjdCBkbV9zcGlf c2xhdmVfcGxhdCAqc2xhdmVfcGxhdCA9IGRldl9nZXRfcGFyZW50X3BsYXQoZGV2KTsNCj4gPj4+ ICsJdTMyIGhjbGtfY2xrID0gcGxhdC0+aGNsa19yYXRlOw0KPiA+Pj4gKwl1MzIgaGNsa19kaXYg PSAweDQwMDsgLyogZGVmYXVsdCB2YWx1ZSAqLw0KPiA+Pj4gKwl1MzIgaSwgajsNCj4gPj4+ICsJ Ym9vbCBmb3VuZCA9IGZhbHNlOw0KPiA+Pj4gKwkvKiBIQ0xLLzEgLi4JSENMSy8xNiAqLw0KPiA+ Pj4gKwl1MzIgaGNsa19tYXNrc1tdID0gezE1LCA3LCAxNCwgNiwgMTMsIDUsIDEyLCA0LA0KPiA+ Pj4gKwkJCQkgMTEsIDMsIDEwLCAyLCA5LCAgMSwgOCwgIDB9Ow0KPiA+Pj4gKw0KPiA+Pj4gKwkv KiBGTUMvU1BJUjEwWzI3OjI0XSAqLw0KPiA+Pj4gKwlmb3IgKGogPSAwOyBqIDwgMHhmOyBqKysp IHsNCj4gPj4+ICsJCS8qIEZNQy9TUElSMTBbMTE6OF0gKi8NCj4gPj4+ICsJCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKGhjbGtfbWFza3MpOyBpKyspIHsNCj4gPj4+ICsJCQlpZiAoaSA9PSAw ICYmIGogPT0gMCkNCj4gPj4+ICsJCQkJY29udGludWU7DQo+ID4+PiArDQo+ID4+PiArCQkJaWYg KGhjbGtfY2xrIC8gKGkgKyAxICsgKGogKiAxNikpIDw9IG1heF9oeikgew0KPiA+Pj4gKwkJCQlm b3VuZCA9IHRydWU7DQo+ID4+PiArCQkJCWJyZWFrOw0KPiA+Pj4gKwkJCX0NCj4gPj4+ICsJCX0N Cj4gPj4+ICsNCj4gPj4+ICsJCWlmIChmb3VuZCkgew0KPiA+Pj4gKwkJCWhjbGtfZGl2ID0gKChq IDw8IDI0KSB8IGhjbGtfbWFza3NbaV0gPDwgOCk7DQo+ID4+PiArCQkJcHJpdi0+Zmxhc2hlc1tz bGF2ZV9wbGF0LT5jc10ubWF4X2ZyZXEgPQ0KPiA+Pj4gKwkJCQkJCWhjbGtfY2xrIC8gKGkgKyAx ICsgaiAqIDE2KTsNCj4gPj4+ICsJCQlicmVhazsNCj4gPj4+ICsJCX0NCj4gPj4+ICsJfQ0KPiA+ Pj4gKw0KPiA+Pj4gKwlkZXZfZGJnKGRldiwgImZvdW5kOiAlcywgaGNsazogJWQsIG1heF9jbGs6 ICVkXG4iLCBmb3VuZCA/ICJ5ZXMiIDoNCj4gIm5vIiwNCj4gPj4+ICsJCWhjbGtfY2xrLCBtYXhf aHopOw0KPiA+Pj4gKw0KPiA+Pj4gKwlpZiAoZm91bmQpIHsNCj4gPj4+ICsJCWRldl9kYmcoZGV2 LCAiYmFzZV9jbGs6ICVkLCBoX2RpdjogJWQgKG1hc2sgJXgpLCBzcGVlZDogJWRcbiIsDQo+ID4+ PiArCQkJaiwgaSArIDEsIGhjbGtfbWFza3NbaV0sDQo+IHByaXYtPmZsYXNoZXNbc2xhdmVfcGxh dC0+Y3NdLm1heF9mcmVxKTsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+Pj4gKwlyZXR1cm4gaGNs a19kaXY7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qDQo+ID4+PiArICogQXMgdGhlIGZs YXNoIHNpemUgZ3Jvd3MgdXAsIHdlIG5lZWQgdG8gdHJpbSBzb21lIGRlY29kZWQNCj4gPj4+ICsg KiBzaXplIGlmIG5lZWRlZCBmb3IgdGhlIHNha2Ugb2YgY29uZm9ybWluZyB0aGUgbWF4aW11bQ0K PiA+Pj4gKyAqIGRlY29kZWQgc2l6ZS4gV2UgdHJpbSB0aGUgZGVjb2RlZCBzaXplIGZyb20gdGhl IGxhcmdlc3QNCj4gPj4+ICsgKiBDUyBpbiBvcmRlciB0byBhdm9pZCBhZmZlY3RpbmcgdGhlIGRl ZmF1bHQgYm9vdCB1cCBzZXF1ZW5jZQ0KPiA+Pj4gKyAqIGZyb20gQ1MwIHdoZXJlIGNvbW1hbmQg bW9kZSBvciBub3JtYWwgbW9kZSBpcyB1c2VkLg0KPiA+Pj4gKyAqIE5vdGljZSwgaWYgYSBDUyBk ZWNvZGVkIHNpemUgaXMgdHJpbW1lZCwgY29tbWFuZCBtb2RlIG1heQ0KPiA+Pj4gKyAqIG5vdCB3 b3JrIHBlcmZlY3RseSBvbiB0aGF0IENTLg0KPiA+Pj4gKyAqLw0KPiA+Pj4gK3N0YXRpYyBpbnQg YXNwZWVkX3NwaV90cmltX2RlY29kZWRfc2l6ZShzdHJ1Y3QgdWRldmljZSAqYnVzLA0KPiA+Pj4g KwkJCQkJdTMyIGRlY29kZWRfc3pfYXJyW10pDQo+ID4+PiArew0KPiA+Pj4gKwlzdHJ1Y3QgYXNw ZWVkX3NwaV9wbGF0ICpwbGF0ID0gZGV2X2dldF9wbGF0KGJ1cyk7DQo+ID4+PiArCXN0cnVjdCBh c3BlZWRfc3BpX3ByaXYgKnByaXYgPSBkZXZfZ2V0X3ByaXYoYnVzKTsNCj4gPj4+ICsJdTMyIHRv dGFsX3N6Ow0KPiA+Pj4gKwlpbnQgY3MgPSBwbGF0LT5tYXhfY3MgLSAxOw0KPiA+Pj4gKwl1MzIg aTsNCj4gPj4+ICsNCj4gPj4+ICsJZG8gew0KPiA+Pj4gKwkJdG90YWxfc3ogPSAwOw0KPiA+Pj4g KwkJZm9yIChpID0gMDsgaSA8IHBsYXQtPm1heF9jczsgaSsrKQ0KPiA+Pj4gKwkJCXRvdGFsX3N6 ICs9IGRlY29kZWRfc3pfYXJyW2ldOw0KPiA+Pj4gKw0KPiA+Pj4gKwkJaWYgKGRlY29kZWRfc3pf YXJyW2NzXSA8PSBwcml2LT5pbmZvLT5taW5fZGVjb2RlZF9zeikNCj4gPj4+ICsJCQljcy0tOw0K PiA+Pj4gKw0KPiA+Pj4gKwkJaWYgKGNzIDwgMCkNCj4gPj4+ICsJCQlyZXR1cm4gLUVOT01FTTsN Cj4gPj4+ICsNCj4gPj4+ICsJCWlmICh0b3RhbF9zeiA+IHBsYXQtPmFoYl9zeikgew0KPiA+Pj4g KwkJCWRlY29kZWRfc3pfYXJyW2NzXSAtPSBwcml2LT5pbmZvLT5taW5fZGVjb2RlZF9zejsNCj4g Pj4+ICsJCQl0b3RhbF9zeiAtPSBwcml2LT5pbmZvLT5taW5fZGVjb2RlZF9zejsNCj4gPj4+ICsJ CQlwcml2LT5mbGFzaGVzW2NzXS50cmltbWVkX2RlY29kZWRfc3ogPSB0cnVlOw0KPiA+Pj4gKwkJ fQ0KPiA+Pj4gKwl9IHdoaWxlICh0b3RhbF9zeiA+IHBsYXQtPmFoYl9zeik7DQo+ID4+PiArDQo+ ID4+PiArCXJldHVybiAwOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtzdGF0aWMgaW50IGFz cGVlZF9zcGlfcmVhZF9mcm9tX2FoYih2b2lkIF9faW9tZW0gKmFoYl9iYXNlLCB2b2lkDQo+ICpi dWYsDQo+ID4+PiArCQkJCSAgICBzaXplX3QgbGVuKQ0KPiA+Pj4gK3sNCj4gPj4+ICsJc2l6ZV90 IG9mZnNldCA9IDA7DQo+ID4+PiArDQo+ID4+PiArCWlmIChJU19BTElHTkVEKCh1aW50cHRyX3Qp YWhiX2Jhc2UsIHNpemVvZih1aW50cHRyX3QpKSAmJg0KPiA+Pj4gKwkgICAgSVNfQUxJR05FRCgo dWludHB0cl90KWJ1Ziwgc2l6ZW9mKHVpbnRwdHJfdCkpKSB7DQo+ID4+PiArCQlyZWFkc2woYWhi X2Jhc2UsIGJ1ZiwgbGVuID4+IDIpOw0KPiA+Pj4gKwkJb2Zmc2V0ID0gbGVuICYgfjB4MzsNCj4g Pj4+ICsJCWxlbiAtPSBvZmZzZXQ7DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICsJcmVhZHNi KGFoYl9iYXNlLCAodTggKilidWYgKyBvZmZzZXQsIGxlbik7DQo+ID4+PiArDQo+ID4+PiArCXJl dHVybiAwOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtzdGF0aWMgaW50IGFzcGVlZF9zcGlf d3JpdGVfdG9fYWhiKHZvaWQgX19pb21lbSAqYWhiX2Jhc2UsIGNvbnN0DQo+ID4+PiArdm9pZA0K PiA+PiAqYnVmLA0KPiA+Pj4gKwkJCQkgICBzaXplX3QgbGVuKQ0KPiA+Pj4gK3sNCj4gPj4+ICsJ c2l6ZV90IG9mZnNldCA9IDA7DQo+ID4+PiArDQo+ID4+PiArCWlmIChJU19BTElHTkVEKCh1aW50 cHRyX3QpYWhiX2Jhc2UsIHNpemVvZih1aW50cHRyX3QpKSAmJg0KPiA+Pj4gKwkgICAgSVNfQUxJ R05FRCgodWludHB0cl90KWJ1Ziwgc2l6ZW9mKHVpbnRwdHJfdCkpKSB7DQo+ID4+PiArCQl3cml0 ZXNsKGFoYl9iYXNlLCBidWYsIGxlbiA+PiAyKTsNCj4gPj4+ICsJCW9mZnNldCA9IGxlbiAmIH4w eDM7DQo+ID4+PiArCQlsZW4gLT0gb2Zmc2V0Ow0KPiA+Pj4gKwl9DQo+ID4+PiArDQo+ID4+PiAr CXdyaXRlc2IoYWhiX2Jhc2UsICh1OCAqKWJ1ZiArIG9mZnNldCwgbGVuKTsNCj4gPj4+ICsNCj4g Pj4+ICsJcmV0dXJuIDA7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qDQo+ID4+PiArICog Q3VycmVudGx5LCBvbmx5IHN1cHBvcnQgMS0xLTEsIDEtMS0yIG9yIDEtMS00DQo+ID4+PiArICog U1BJIE5PUiBmbGFzaCBvcGVyYXRpb24gZm9ybWF0Lg0KPiA+Pj4gKyAqLw0KPiA+Pj4gK3N0YXRp YyBib29sIGFzcGVlZF9zcGlfc3VwcG9ydHNfb3Aoc3RydWN0IHNwaV9zbGF2ZSAqc2xhdmUsDQo+ ID4+PiArCQkJCSAgIGNvbnN0IHN0cnVjdCBzcGlfbWVtX29wICpvcCkgew0KPiA+Pj4gKwlzdHJ1 Y3QgdWRldmljZSAqYnVzID0gc2xhdmUtPmRldi0+cGFyZW50Ow0KPiA+Pj4gKwlzdHJ1Y3QgYXNw ZWVkX3NwaV9wcml2ICpwcml2ID0gZGV2X2dldF9wcml2KGJ1cyk7DQo+ID4+PiArDQo+ID4+PiAr CWlmIChvcC0+Y21kLmJ1c3dpZHRoID4gMSkNCj4gPj4+ICsJCXJldHVybiBmYWxzZTsNCj4gPj4+ ICsNCj4gPj4+ICsJaWYgKG9wLT5hZGRyLmJ1c3dpZHRoID4gMSB8fCBvcC0+YWRkci5uYnl0ZXMg PiA0KQ0KPiA+Pj4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+Pj4gKw0KPiA+Pj4gKwlpZiAob3AtPmR1 bW15LmJ1c3dpZHRoID4gMSB8fCBvcC0+ZHVtbXkubmJ5dGVzID4gNykNCj4gPj4+ICsJCXJldHVy biBmYWxzZTsNCj4gPj4+ICsNCj4gPj4+ICsJaWYgKG9wLT5kYXRhLmJ1c3dpZHRoID4gcHJpdi0+ aW5mby0+bWF4X2RhdGFfYnVzX3dpZHRoKQ0KPiA+Pj4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+Pj4g Kw0KPiA+Pj4gKwlpZiAoIXNwaV9tZW1fZGVmYXVsdF9zdXBwb3J0c19vcChzbGF2ZSwgb3ApKQ0K PiA+Pj4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+Pj4gKw0KPiA+Pj4gKwlyZXR1cm4gdHJ1ZTsNCj4g Pj4+ICt9DQo+ID4+DQo+ID4+IFlvdSBjb3VsZCBjb3B5IHRoZSBMaW51eCBhc3BlZWRfc3BpX3N1 cHBvcnRzX29wKCkNCj4gPj4NCj4gPg0KPiA+IE9rYXksIHRoaXMgcGF0Y2ggc2VyaWVzIG1heSBi ZSB0b28gb2xkLg0KPiA+DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIGludCBhc3BlZWRfc3BpX2V4 ZWNfb3BfdXNlcl9tb2RlKHN0cnVjdCBzcGlfc2xhdmUgKnNsYXZlLA0KPiA+Pj4gKwkJCQkJY29u c3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKQ0KPiA+Pj4gK3sNCj4gPj4+ICsJc3RydWN0IHVkZXZp Y2UgKmRldiA9IHNsYXZlLT5kZXY7DQo+ID4+PiArCXN0cnVjdCB1ZGV2aWNlICpidXMgPSBkZXYt PnBhcmVudDsNCj4gPj4+ICsJc3RydWN0IGFzcGVlZF9zcGlfcGxhdCAqcGxhdCA9IGRldl9nZXRf cGxhdChidXMpOw0KPiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2ICpwcml2ID0gZGV2X2dl dF9wcml2KGJ1cyk7DQo+ID4+PiArCXN0cnVjdCBkbV9zcGlfc2xhdmVfcGxhdCAqc2xhdmVfcGxh dCA9DQo+IGRldl9nZXRfcGFyZW50X3BsYXQoc2xhdmUtPmRldik7DQo+ID4+PiArCXUzMiBjcyA9 IHNsYXZlX3BsYXQtPmNzOw0KPiA+Pj4gKwlmZHRfYWRkcl90IGN0cmxfcmVnID0gcGxhdC0+Y3Ry bF9iYXNlICsgUkVHX0NFMF9DVFJMX1JFRyArIGNzICogNDsNCj4gPj4+ICsJc3RydWN0IGFzcGVl ZF9zcGlfZmxhc2ggKmZsYXNoID0gJnByaXYtPmZsYXNoZXNbY3NdOw0KPiA+Pj4gKwl1MzIgY3Ry bF92YWw7DQo+ID4+PiArCXU4IGR1bW15X2RhdGFbMTZdID0gezB9Ow0KPiA+Pj4gKwl1OCBhZGRy WzRdID0gezB9Ow0KPiA+Pj4gKwlpbnQgaTsNCj4gPj4+ICsNCj4gPj4+ICsJZGV2X2RiZyhkZXYs DQo+ID4+ICJjbWQ6JXgoJWQpLGFkZHI6JWxseCglZCksZHVtbXk6JWQoJWQpLGRhdGFfbGVuOjB4 JXgoJWQpXG4iLA0KPiA+Pj4gKwkJb3AtPmNtZC5vcGNvZGUsIG9wLT5jbWQuYnVzd2lkdGgsIG9w LT5hZGRyLnZhbCwNCj4gPj4+ICsJCW9wLT5hZGRyLmJ1c3dpZHRoLCBvcC0+ZHVtbXkubmJ5dGVz LCBvcC0+ZHVtbXkuYnVzd2lkdGgsDQo+ID4+PiArCQlvcC0+ZGF0YS5uYnl0ZXMsIG9wLT5kYXRh LmJ1c3dpZHRoKTsNCj4gPj4+ICsNCj4gPj4+ICsJLyogU3RhcnQgdXNlciBtb2RlICovDQo+ID4+ PiArCWN0cmxfdmFsID0gZmxhc2gtPmNlX2N0cmxfdXNlcjsNCj4gPj4+ICsJd3JpdGVsKGN0cmxf dmFsLCBjdHJsX3JlZyk7DQo+ID4+PiArCWN0cmxfdmFsICY9ICh+Q1RSTF9TVE9QX0FDVElWRSk7 DQo+ID4+PiArCXdyaXRlbChjdHJsX3ZhbCwgY3RybF9yZWcpOw0KPiA+Pj4gKw0KPiA+Pj4gKwkv KiBTZW5kIGNvbW1hbmQgKi8NCj4gPj4+ICsJYXNwZWVkX3NwaV93cml0ZV90b19haGIoZmxhc2gt PmFoYl9iYXNlLCAmb3AtPmNtZC5vcGNvZGUsIDEpOw0KPiA+Pj4gKw0KPiA+Pj4gKwkvKiBTZW5k IGFkZHJlc3MgKi8NCj4gPj4+ICsJZm9yIChpID0gb3AtPmFkZHIubmJ5dGVzOyBpID4gMDsgaS0t KSB7DQo+ID4+PiArCQlhZGRyW29wLT5hZGRyLm5ieXRlcyAtIGldID0NCj4gPj4+ICsJCQkoKHUz MilvcC0+YWRkci52YWwgPj4gKChpIC0gMSkgKiA4KSkgJiAweGZmOw0KPiA+Pj4gKwl9DQo+ID4+ PiArCWFzcGVlZF9zcGlfd3JpdGVfdG9fYWhiKGZsYXNoLT5haGJfYmFzZSwgYWRkciwgb3AtPmFk ZHIubmJ5dGVzKTsNCj4gPj4NCj4gPj4gVGhpcyBjb3VsZCBiZSB3cml0aW5nIDMgYnl0ZXMuIE5v dCBvcHRpbWFsLg0KPiA+DQo+ID4gV2h5PyBEb2Vzbid0IGl0IGRlcGVuZCBvbiB0aGUgdmFsdWUg b2YgIm9wLT5hZGRyLm5ieXRlcyI/IFRoaXMgZnVuY3Rpb24gaGFzDQo+IGJlZW4gdmVyaWZpZWQg d2l0aCBkaWZmZXJlbnQgZmxhc2ggcGFydHMuDQo+IA0KPiBJdCB3b3JrcyBidXQgeW91IGNvdWxk IGlzc3VlIGEgc2luZ2xlIDMyLWJpdCB0cmFuc2FjdGlvbiBpZiB0aGUgT1Agd2FzIGluY2x1ZGVk DQo+IGluIHRoZSB3cml0ZSwgYXMgTGludXggZG9lcy4gVGhpcyBpcyBhbiBvcHRpbWlzYXRpb24g dG8gYXZvaWQNCj4gNCB3cml0ZXMgb2Ygb25lIGJ5dGUuIFRoaXMgaXMgbWlub3IuDQo+IA0KDQoi YXNwZWVkX3NwaV93cml0ZV90b19haGIiIGZ1bmN0aW9uIGhlcmUgaXMgYWxtb3N0IHRoZSBzYW1l IGFzIHRoZSBvbmUgaW4gTGludXguDQpJdCBjYW4gd3JpdGUgYSAzMi1iaXQgdHJhbnNhY3Rpb24g b25jZSBpZiBuZWVkZWQuDQoNCj4gPj4NCj4gPj4+ICsNCj4gPj4+ICsJLyogU2VuZCBkdW1teSBj eWNsZSAqLw0KPiA+Pj4gKwlhc3BlZWRfc3BpX3dyaXRlX3RvX2FoYihmbGFzaC0+YWhiX2Jhc2Us IGR1bW15X2RhdGEsDQo+ID4+PiArb3AtPmR1bW15Lm5ieXRlcyk7DQo+ID4+PiArDQo+ID4+PiAr CS8qIENoYW5nZSBpb19tb2RlICovDQo+ID4+PiArCWN0cmxfdmFsIHw9IGFzcGVlZF9zcGlfZ2V0 X2lvX21vZGUob3AtPmRhdGEuYnVzd2lkdGgpOw0KPiA+Pj4gKwl3cml0ZWwoY3RybF92YWwsIGN0 cmxfcmVnKTsNCj4gPj4+ICsNCj4gPj4+ICsJLyogU2VuZCBkYXRhICovDQo+ID4+PiArCWlmIChv cC0+ZGF0YS5kaXIgPT0gU1BJX01FTV9EQVRBX09VVCkgew0KPiA+Pj4gKwkJYXNwZWVkX3NwaV93 cml0ZV90b19haGIoZmxhc2gtPmFoYl9iYXNlLCBvcC0+ZGF0YS5idWYub3V0LA0KPiA+Pj4gKwkJ CQkJb3AtPmRhdGEubmJ5dGVzKTsNCj4gPj4+ICsJfSBlbHNlIHsNCj4gPj4+ICsJCWFzcGVlZF9z cGlfcmVhZF9mcm9tX2FoYihmbGFzaC0+YWhiX2Jhc2UsIG9wLT5kYXRhLmJ1Zi5pbiwNCj4gPj4+ ICsJCQkJCSBvcC0+ZGF0YS5uYnl0ZXMpOw0KPiA+Pj4gKwl9DQo+ID4+PiArDQo+ID4+PiArCWN0 cmxfdmFsIHw9IENUUkxfU1RPUF9BQ1RJVkU7DQo+ID4+PiArCXdyaXRlbChjdHJsX3ZhbCwgY3Ry bF9yZWcpOw0KPiA+Pj4gKw0KPiA+Pj4gKwkvKiBSZXN0b3JlIGNvbnRyb2xsZXIgc2V0dGluZy4g Ki8NCj4gPj4+ICsJd3JpdGVsKGZsYXNoLT5jZV9jdHJsX3JlYWQsIGN0cmxfcmVnKTsNCj4gPj4+ ICsNCj4gPj4+ICsJLyogU2V0IGNvbnRyb2xsZXIgdG8gNC1ieXRlIG1vZGUgd2hlbiBmbGFzaCBp cyBpbiA0LWJ5dGUgbW9kZS4gKi8NCj4gPj4+ICsJaWYgKG9wLT5jbWQub3Bjb2RlID09IFNQSU5P Ul9PUF9FTjRCKQ0KPiA+Pj4gKwkJcHJpdi0+aW5mby0+c2V0XzRieXRlKGJ1cywgY3MpOw0KPiA+ Pg0KPiA+PiBXZSBkb24ndCBuZWVkIHRvIHNldCA0QiBlYXJsaWVyID8gSSB0cnVzdCB5b3UgdGhl cmUuDQo+ID4NCj4gPiBEbyB5b3UgbWVhbiBlYXJseSBpbiB0aGlzIGZ1bmN0aW9uPyBJdCBtYXkg YmUgb2theS4NCj4gPg0KPiA+Pg0KPiA+Pj4gKw0KPiA+Pj4gKwlyZXR1cm4gMDsNCj4gPj4+ICt9 DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIHN0cnVjdCBhc3BlZWRfc3BpX2ZsYXNoICphc3BlZWRf c3BpX2dldF9mbGFzaChzdHJ1Y3QgdWRldmljZQ0KPiA+Pj4gKypkZXYpIHsNCj4gPj4+ICsJc3Ry dWN0IHVkZXZpY2UgKmJ1cyA9IGRldi0+cGFyZW50Ow0KPiA+Pj4gKwlzdHJ1Y3QgZG1fc3BpX3Ns YXZlX3BsYXQgKnNsYXZlX3BsYXQgPSBkZXZfZ2V0X3BhcmVudF9wbGF0KGRldik7DQo+ID4+PiAr CXN0cnVjdCBhc3BlZWRfc3BpX3BsYXQgKnBsYXQgPSBkZXZfZ2V0X3BsYXQoYnVzKTsNCj4gPj4+ ICsJc3RydWN0IGFzcGVlZF9zcGlfcHJpdiAqcHJpdiA9IGRldl9nZXRfcHJpdihidXMpOw0KPiA+ Pj4gKwl1MzIgY3MgPSBzbGF2ZV9wbGF0LT5jczsNCj4gPj4+ICsNCj4gPj4+ICsJaWYgKGNzID49 IHBsYXQtPm1heF9jcykgew0KPiA+Pj4gKwkJZGV2X2VycihkZXYsICJpbnZhbGlkIENTICV1XG4i LCBjcyk7DQo+ID4+PiArCQlyZXR1cm4gTlVMTDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+Pj4g KwlyZXR1cm4gJnByaXYtPmZsYXNoZXNbY3NdOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtz dGF0aWMgaW50IGFzcGVlZF9zcGlfZGVjb2RlZF9yYW5nZV9jb25maWcoc3RydWN0IHVkZXZpY2Ug KmJ1cywNCj4gPj4+ICsJCQkJCSAgIHUzMiBkZWNvZGVkX3N6X2FycltdKQ0KPiA+Pj4gK3sNCj4g Pj4+ICsJc3RydWN0IGFzcGVlZF9zcGlfcGxhdCAqcGxhdCA9IGRldl9nZXRfcGxhdChidXMpOw0K PiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2ICpwcml2ID0gZGV2X2dldF9wcml2KGJ1cyk7 DQo+ID4+PiArCWludCByZXQ7DQo+ID4+PiArCXUzMiBjczsNCj4gPj4+ICsJdTMyIGRlY29kZWRf cmVnX3ZhbDsNCj4gPj4+ICsJdTMyIHN0YXJ0X2FkZHI7DQo+ID4+PiArCXUzMiBlbmRfYWRkciA9 IDA7DQo+ID4+PiArDQo+ID4+PiArCXJldCA9IHByaXYtPmluZm8tPmFkanVzdF9kZWNvZGVkX3N6 KGJ1cywgZGVjb2RlZF9zel9hcnIpOw0KPiA+Pj4gKwlpZiAocmV0ICE9IDApDQo+ID4+PiArCQly ZXR1cm4gcmV0Ow0KPiA+Pj4gKw0KPiA+Pj4gKwkvKiBDb25maWd1cmUgZWFjaCBDUyBkZWNvZGVk IHJhbmdlICovDQo+ID4+PiArCWZvciAoY3MgPSAwOyBjcyA8IHBsYXQtPm1heF9jczsgY3MrKykg ew0KPiA+Pj4gKwkJaWYgKGNzID09IDApDQo+ID4+PiArCQkJc3RhcnRfYWRkciA9ICh1MzIpcGxh dC0+YWhiX2Jhc2U7DQo+ID4+PiArCQllbHNlDQo+ID4+PiArCQkJc3RhcnRfYWRkciA9IGVuZF9h ZGRyOw0KPiA+Pj4gKwkJcHJpdi0+Zmxhc2hlc1tjc10uYWhiX2Jhc2UgPSAodm9pZCBfX2lvbWVt ICopc3RhcnRfYWRkcjsNCj4gPj4+ICsJCXByaXYtPmZsYXNoZXNbY3NdLmFoYl93aW5fc3ogPSBk ZWNvZGVkX3N6X2Fycltjc107DQo+ID4+PiArDQo+ID4+PiArCQllbmRfYWRkciA9IHN0YXJ0X2Fk ZHIgKyBkZWNvZGVkX3N6X2Fycltjc107DQo+ID4+PiArCQlkZWNvZGVkX3JlZ192YWwgPSBwcml2 LT5pbmZvLT5zZWdtZW50X3JlZyhzdGFydF9hZGRyLA0KPiBlbmRfYWRkcik7DQo+ID4+PiArDQo+ ID4+PiArCQl3cml0ZWwoZGVjb2RlZF9yZWdfdmFsLA0KPiA+Pj4gKwkJICAgICAgIHBsYXQtPmN0 cmxfYmFzZSArIFJFR19DRTBfREVDT0RFRF9BRERSX1JFRyArIGNzDQo+ICogNCk7DQo+ID4+PiAr DQo+ID4+PiArCQlkZXZfZGJnKGJ1cywgImNzOiAlZCwgZGVjb2RlZF9yZWc6IDB4JXgsIHN0YXJ0 OiAweCV4LCBlbmQ6DQo+IDB4JXhcbiIsDQo+ID4+PiArCQkJY3MsIGRlY29kZWRfcmVnX3ZhbCwg c3RhcnRfYWRkciwgZW5kX2FkZHIpOw0KPiA+Pj4gKwl9DQo+ID4+PiArDQo+ID4+PiArCXJldHVy biAwOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKg0KPiA+Pj4gKyAqIEluaXRpYWxpemUg U1BJIGNvbnRyb2xsZXIgZm9yIGVhY2ggY2hpcCBzZWxlY3QuDQo+ID4+PiArICogSGVyZSwgb25s eSB0aGUgbWluaW11bSBkZWNvZGUgcmFuZ2UgaXMgY29uZmlndXJlZA0KPiA+Pj4gKyAqIGluIG9y ZGVyIHRvIGdldCBkZXZpY2UgKFNQSSBOT1IgZmxhc2gpIGluZm9ybWF0aW9uDQo+ID4+PiArICog YXQgdGhlIGVhcmx5IHN0YWdlLg0KPiA+Pj4gKyAqLw0KPiA+Pj4gK3N0YXRpYyBpbnQgYXNwZWVk X3NwaV9jdHJsX2luaXQoc3RydWN0IHVkZXZpY2UgKmJ1cykgew0KPiA+Pj4gKwlpbnQgcmV0Ow0K PiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wbGF0ICpwbGF0ID0gZGV2X2dldF9wbGF0KGJ1cyk7 DQo+ID4+PiArCXN0cnVjdCBhc3BlZWRfc3BpX3ByaXYgKnByaXYgPSBkZXZfZ2V0X3ByaXYoYnVz KTsNCj4gPj4+ICsJdTMyIGNzOw0KPiA+Pj4gKwl1MzIgcmVnX3ZhbDsNCj4gPj4+ICsJdTMyIGRl Y29kZWRfc3o7DQo+ID4+PiArDQo+ID4+PiArCS8qIEVuYWJsZSB3cml0ZSBjYXBhYmlsaXR5IGZv ciBhbGwgQ1MuICovDQo+ID4+PiArCXJlZ192YWwgPSByZWFkbChwbGF0LT5jdHJsX2Jhc2UgKyBS RUdfQ0VfVFlQRV9TRVRUSU5HKTsNCj4gPj4+ICsJd3JpdGVsKHJlZ192YWwgfCAoR0VOTUFTSyhw bGF0LT5tYXhfY3MgLSAxLCAwKSA8PCAxNiksDQo+ID4+PiArCSAgICAgICBwbGF0LT5jdHJsX2Jh c2UgKyBSRUdfQ0VfVFlQRV9TRVRUSU5HKTsNCj4gPj4+ICsNCj4gPj4+ICsJbWVtc2V0KHByaXYt PmZsYXNoZXMsIDB4MCwNCj4gPj4+ICsJICAgICAgIHNpemVvZihzdHJ1Y3QgYXNwZWVkX3NwaV9m bGFzaCkgKiBBU1BFRURfU1BJX01BWF9DUyk7DQo+ID4+PiArDQo+ID4+PiArCS8qIEluaXRpYWwg ZWFjaCBDUyBjb250cm9sbGVyIHJlZ2lzdGVyICovDQo+ID4+PiArCWZvciAoY3MgPSAwOyBjcyA8 IHByaXYtPm51bV9jczsgY3MrKykgew0KPiA+Pj4gKwkJcHJpdi0+Zmxhc2hlc1tjc10uY2VfY3Ry bF91c2VyICY9DQo+ID4+PiArCQkJCX4ocHJpdi0+aW5mby0+Y21kX2lvX2N0cmxfbWFzayk7DQo+ ID4+PiArCQlwcml2LT5mbGFzaGVzW2NzXS5jZV9jdHJsX3VzZXIgfD0NCj4gPj4+ICsJCQkJKENU UkxfU1RPUF9BQ1RJVkUgfCBDVFJMX0lPX01PREVfVVNFUik7DQo+ID4+PiArCQl3cml0ZWwocHJp di0+Zmxhc2hlc1tjc10uY2VfY3RybF91c2VyLA0KPiA+Pj4gKwkJICAgICAgIHBsYXQtPmN0cmxf YmFzZSArIFJFR19DRTBfQ1RSTF9SRUcgKyBjcyAqIDQpOw0KPiA+Pj4gKwl9DQo+ID4+Pg0KPiA+ Pg0KPiA+PiBhbmQgd2Ugc2hvdWxkIHN0YXJ0IGJ5IHNldHRpbmcgc2FuZSBkZWZhdWx0cyBmb3Ig dGhlIHJhbmdlcy4NCj4gPj4NCj4gPj4gSXQncyB0b28gZWFybHkgdG8gYWRkIHRoZSBkZWNvZGlu ZyByYW5nZXMgY2FsY3VsYXRpb24uDQo+ID4NCj4gPiBPa2F5Lg0KPiA+DQo+ID4+DQo+ID4+IFRo YW5rcywNCj4gPj4NCj4gPj4gQy4NCj4gPj4NCj4gPj4+ICsJbWVtc2V0KHByaXYtPmRlY29kZWRf c3pfYXJyLCAweDAsIHNpemVvZih1MzIpICoNCj4gPj4+ICtBU1BFRURfU1BJX01BWF9DUyk7DQo+ ID4+PiArDQo+ID4+PiArCWZvciAoY3MgPSAwOyBjcyA8IHByaXYtPm51bV9jczsgY3MrKykgew0K PiA+Pj4gKwkJcmVnX3ZhbCA9IHJlYWRsKHBsYXQtPmN0cmxfYmFzZSArDQo+IFJFR19DRTBfREVD T0RFRF9BRERSX1JFRyArDQo+ID4+IGNzICogNCk7DQo+ID4+PiArCQlkZWNvZGVkX3N6ID0gcHJp di0+aW5mby0+c2VnbWVudF9lbmQoYnVzLCByZWdfdmFsKSAtDQo+ID4+PiArCQkJICAgICBwcml2 LT5pbmZvLT5zZWdtZW50X3N0YXJ0KGJ1cywgcmVnX3ZhbCk7DQo+ID4+PiArDQo+ID4+PiArCQkv Kg0KPiA+Pj4gKwkJICogRm9yIENTMCwgaWYgdGhlIGRlZmF1bHQgYWRkcmVzcyBkZWNvZGVkIGFy ZWEgZXhpc3RzLA0KPiA+Pj4gKwkJICoga2VlcCBpdHMgdmFsdWUgaW4gb3JkZXIgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIHdob2xlIGJvb3QNCj4gPj4+ICsJCSAqIGltYWdlIGNhbiBiZSBhY2Nlc3Nl ZCB3aXRoIG5vcm1hbCByZWFkIG1vZGUuDQo+ID4+PiArCQkgKi8NCj4gPj4+ICsJCWlmIChjcyA9 PSAwICYmIGRlY29kZWRfc3ogIT0gMCkNCj4gPj4+ICsJCQlwcml2LT5kZWNvZGVkX3N6X2Fycltj c10gPSBkZWNvZGVkX3N6Ow0KPiA+Pj4gKwkJZWxzZQ0KPiA+Pj4gKwkJCXByaXYtPmRlY29kZWRf c3pfYXJyW2NzXSA9IHByaXYtPmluZm8tPm1pbl9kZWNvZGVkX3N6Ow0KPiA+Pj4gKwl9DQo+ID4+ PiArDQo+ID4+PiArCXJldCA9IGFzcGVlZF9zcGlfZGVjb2RlZF9yYW5nZV9jb25maWcoYnVzLCBw cml2LT5kZWNvZGVkX3N6X2Fycik7DQo+ID4+PiArDQo+ID4+PiArCXJldHVybiByZXQ7DQo+ID4+ PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9pbmZv IGFzdDI1MDBfZm1jX2luZm8gPSB7DQo+ID4+PiArCS5tYXhfZGF0YV9idXNfd2lkdGggPSAyLA0K PiA+Pj4gKwkuY21kX2lvX2N0cmxfbWFzayA9IDB4NzBmZjQwYzMsDQo+ID4+PiArCS5jbGtfY3Ry bF9tYXNrID0gMHgwMDAwMmYwMCwNCj4gPj4+ICsJLm1pbl9kZWNvZGVkX3N6ID0gMHg4MDAwMDAs DQo+ID4+PiArCS5zZXRfNGJ5dGUgPSBhc3QyNTAwX3NwaV9jaGlwX3NldF80Ynl0ZSwNCj4gPj4+ ICsJLnNlZ21lbnRfc3RhcnQgPSBhc3QyNTAwX3NwaV9zZWdtZW50X3N0YXJ0LA0KPiA+Pj4gKwku c2VnbWVudF9lbmQgPSBhc3QyNTAwX3NwaV9zZWdtZW50X2VuZCwNCj4gPj4+ICsJLnNlZ21lbnRf cmVnID0gYXN0MjUwMF9zcGlfc2VnbWVudF9yZWcsDQo+ID4+PiArCS5hZGp1c3RfZGVjb2RlZF9z eiA9IGFzdDI1MDBfYWRqdXN0X2RlY29kZWRfc2l6ZSwNCj4gPj4+ICsJLmdldF9jbGtfc2V0dGlu ZyA9IGFzdDI1MDBfZ2V0X2Nsa19zZXR0aW5nLCB9Ow0KPiA+Pj4gKw0KPiA+Pj4gKy8qDQo+ID4+ PiArICogVGhlcmUgYXJlIHNvbWUgZGlmZmVyZW50IGJldHdlZW4gRk1DIGFuZCBTUEkgY29udHJv bGxlcnMuDQo+ID4+PiArICogRm9yIGV4YW1wbGUsIERNQSBvcGVyYXRpb24sIGJ1dCB0aGlzIGlz bid0IGltcGxlbWVudGVkIGN1cnJlbnRseS4NCj4gPj4+ICsgKi8NCj4gPj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGFzcGVlZF9zcGlfaW5mbyBhc3QyNTAwX3NwaV9pbmZvID0gew0KPiA+Pj4gKwku bWF4X2RhdGFfYnVzX3dpZHRoID0gMiwNCj4gPj4+ICsJLmNtZF9pb19jdHJsX21hc2sgPSAweDcw ZmY0MGMzLA0KPiA+Pj4gKwkuY2xrX2N0cmxfbWFzayA9IDB4MDAwMDJmMDAsDQo+ID4+PiArCS5t aW5fZGVjb2RlZF9zeiA9IDB4ODAwMDAwLA0KPiA+Pj4gKwkuc2V0XzRieXRlID0gYXN0MjUwMF9z cGlfY2hpcF9zZXRfNGJ5dGUsDQo+ID4+PiArCS5zZWdtZW50X3N0YXJ0ID0gYXN0MjUwMF9zcGlf c2VnbWVudF9zdGFydCwNCj4gPj4+ICsJLnNlZ21lbnRfZW5kID0gYXN0MjUwMF9zcGlfc2VnbWVu dF9lbmQsDQo+ID4+PiArCS5zZWdtZW50X3JlZyA9IGFzdDI1MDBfc3BpX3NlZ21lbnRfcmVnLA0K PiA+Pj4gKwkuYWRqdXN0X2RlY29kZWRfc3ogPSBhc3QyNTAwX2FkanVzdF9kZWNvZGVkX3NpemUs DQo+ID4+PiArCS5nZXRfY2xrX3NldHRpbmcgPSBhc3QyNTAwX2dldF9jbGtfc2V0dGluZywgfTsN Cj4gPj4+ICsNCj4gPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFzcGVlZF9zcGlfaW5mbyBhc3Qy NjAwX2ZtY19pbmZvID0gew0KPiA+Pj4gKwkubWF4X2RhdGFfYnVzX3dpZHRoID0gNCwNCj4gPj4+ ICsJLmNtZF9pb19jdHJsX21hc2sgPSAweGYwZmY0MGMzLA0KPiA+Pj4gKwkuY2xrX2N0cmxfbWFz ayA9IDB4MGYwMDBmMDAsDQo+ID4+PiArCS5taW5fZGVjb2RlZF9zeiA9IDB4MjAwMDAwLA0KPiA+ Pj4gKwkuc2V0XzRieXRlID0gYXN0MjYwMF9zcGlfY2hpcF9zZXRfNGJ5dGUsDQo+ID4+PiArCS5z ZWdtZW50X3N0YXJ0ID0gYXN0MjYwMF9zcGlfc2VnbWVudF9zdGFydCwNCj4gPj4+ICsJLnNlZ21l bnRfZW5kID0gYXN0MjYwMF9zcGlfc2VnbWVudF9lbmQsDQo+ID4+PiArCS5zZWdtZW50X3JlZyA9 IGFzdDI2MDBfc3BpX3NlZ21lbnRfcmVnLA0KPiA+Pj4gKwkuYWRqdXN0X2RlY29kZWRfc3ogPSBh c3QyNjAwX2FkanVzdF9kZWNvZGVkX3NpemUsDQo+ID4+PiArCS5nZXRfY2xrX3NldHRpbmcgPSBh c3QyNjAwX2dldF9jbGtfc2V0dGluZywgfTsNCj4gPj4+ICsNCj4gPj4+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGFzcGVlZF9zcGlfaW5mbyBhc3QyNjAwX3NwaV9pbmZvID0gew0KPiA+Pj4gKwkubWF4 X2RhdGFfYnVzX3dpZHRoID0gNCwNCj4gPj4+ICsJLmNtZF9pb19jdHJsX21hc2sgPSAweGYwZmY0 MGMzLA0KPiA+Pj4gKwkuY2xrX2N0cmxfbWFzayA9IDB4MGYwMDBmMDAsDQo+ID4+PiArCS5taW5f ZGVjb2RlZF9zeiA9IDB4MjAwMDAwLA0KPiA+Pj4gKwkuc2V0XzRieXRlID0gYXN0MjYwMF9zcGlf Y2hpcF9zZXRfNGJ5dGUsDQo+ID4+PiArCS5zZWdtZW50X3N0YXJ0ID0gYXN0MjYwMF9zcGlfc2Vn bWVudF9zdGFydCwNCj4gPj4+ICsJLnNlZ21lbnRfZW5kID0gYXN0MjYwMF9zcGlfc2VnbWVudF9l bmQsDQo+ID4+PiArCS5zZWdtZW50X3JlZyA9IGFzdDI2MDBfc3BpX3NlZ21lbnRfcmVnLA0KPiA+ Pj4gKwkuYWRqdXN0X2RlY29kZWRfc3ogPSBhc3QyNjAwX2FkanVzdF9kZWNvZGVkX3NpemUsDQo+ ID4+PiArCS5nZXRfY2xrX3NldHRpbmcgPSBhc3QyNjAwX2dldF9jbGtfc2V0dGluZywgfTsNCj4g Pj4+ICsNCj4gPj4+ICtzdGF0aWMgaW50IGFzcGVlZF9zcGlfY2xhaW1fYnVzKHN0cnVjdCB1ZGV2 aWNlICpkZXYpIHsNCj4gPj4+ICsJc3RydWN0IHVkZXZpY2UgKmJ1cyA9IGRldi0+cGFyZW50Ow0K PiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2ICpwcml2ID0gZGV2X2dldF9wcml2KGRldi0+ cGFyZW50KTsNCj4gPj4+ICsJc3RydWN0IGRtX3NwaV9zbGF2ZV9wbGF0ICpzbGF2ZV9wbGF0ID0g ZGV2X2dldF9wYXJlbnRfcGxhdChkZXYpOw0KPiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9mbGFz aCAqZmxhc2ggPSAmcHJpdi0+Zmxhc2hlc1tzbGF2ZV9wbGF0LT5jc107DQo+ID4+PiArCXUzMiBj bGtfc2V0dGluZzsNCj4gPj4+ICsNCj4gPj4+ICsJZGV2X2RiZyhidXMsICIlczogY2xhaW0gYnVz IENTJXVcbiIsIGJ1cy0+bmFtZSwgc2xhdmVfcGxhdC0+Y3MpOw0KPiA+Pj4gKw0KPiA+Pj4gKwlp ZiAoZmxhc2gtPm1heF9mcmVxID09IDApIHsNCj4gPj4+ICsJCWNsa19zZXR0aW5nID0gcHJpdi0+ aW5mby0+Z2V0X2Nsa19zZXR0aW5nKGRldiwNCj4gc2xhdmVfcGxhdC0+bWF4X2h6KTsNCj4gPj4+ ICsJCWZsYXNoLT5jZV9jdHJsX3VzZXIgJj0gfihwcml2LT5pbmZvLT5jbGtfY3RybF9tYXNrKTsN Cj4gPj4+ICsJCWZsYXNoLT5jZV9jdHJsX3VzZXIgfD0gY2xrX3NldHRpbmc7DQo+ID4+PiArCQlm bGFzaC0+Y2VfY3RybF9yZWFkICY9IH4ocHJpdi0+aW5mby0+Y2xrX2N0cmxfbWFzayk7DQo+ID4+ PiArCQlmbGFzaC0+Y2VfY3RybF9yZWFkIHw9IGNsa19zZXR0aW5nOw0KPiA+Pj4gKwl9DQo+ID4+ PiArDQo+ID4+PiArCXJldHVybiAwOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtzdGF0aWMg aW50IGFzcGVlZF9zcGlfcmVsZWFzZV9idXMoc3RydWN0IHVkZXZpY2UgKmRldikgew0KPiA+Pj4g KwlzdHJ1Y3QgdWRldmljZSAqYnVzID0gZGV2LT5wYXJlbnQ7DQo+ID4+PiArCXN0cnVjdCBkbV9z cGlfc2xhdmVfcGxhdCAqc2xhdmVfcGxhdCA9IGRldl9nZXRfcGFyZW50X3BsYXQoZGV2KTsNCj4g Pj4+ICsNCj4gPj4+ICsJZGV2X2RiZyhidXMsICIlczogcmVsZWFzZSBidXMgQ1MldVxuIiwgYnVz LT5uYW1lLCBzbGF2ZV9wbGF0LT5jcyk7DQo+ID4+PiArDQo+ID4+PiArCWlmICghYXNwZWVkX3Nw aV9nZXRfZmxhc2goZGV2KSkNCj4gPj4+ICsJCXJldHVybiAtRU5PREVWOw0KPiA+Pj4gKw0KPiA+ Pj4gKwlyZXR1cm4gMDsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIGludCBhc3Bl ZWRfc3BpX3NldF9tb2RlKHN0cnVjdCB1ZGV2aWNlICpidXMsIHVpbnQgbW9kZSkgew0KPiA+Pj4g KwlkZXZfZGJnKGJ1cywgIiVzOiBzZXR0aW5nIG1vZGUgdG8gJXhcbiIsIGJ1cy0+bmFtZSwgbW9k ZSk7DQo+ID4+PiArDQo+ID4+PiArCXJldHVybiAwOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ ICtzdGF0aWMgaW50IGFzcGVlZF9zcGlfc2V0X3NwZWVkKHN0cnVjdCB1ZGV2aWNlICpidXMsIHVp bnQgaHopIHsNCj4gPj4+ICsJZGV2X2RiZyhidXMsICIlczogc2V0dGluZyBzcGVlZCB0byAldVxu IiwgYnVzLT5uYW1lLCBoeik7DQo+ID4+PiArCS8qIEFTUEVFRCBTUEkgY29udHJvbGxlciBzdXBw b3J0cyBtdWx0aXBsZSBDUyB3aXRoIGRpZmZlcmVudA0KPiA+Pj4gKwkgKiBjbG9jayBmcmVxdWVu Y3kuIFdlIGNhbm5vdCBkaXN0aW5ndWlzaCB3aGljaCBDUyBoZXJlLg0KPiA+Pj4gKwkgKiBUaHVz LCB0aGUgcmVsYXRlZCBpbXBsZW1lbnRhdGlvbiBpcyBwb3N0cG9uZWQgdG8gY2xhaW1fYnVzLg0K PiA+Pj4gKwkgKi8NCj4gPj4+ICsNCj4gPj4+ICsJcmV0dXJuIDA7DQo+ID4+PiArfQ0KPiA+Pj4g Kw0KPiA+Pj4gK3N0YXRpYyBpbnQgYXBzZWVkX3NwaV9vZl90b19wbGF0KHN0cnVjdCB1ZGV2aWNl ICpidXMpIHsNCj4gPj4+ICsJc3RydWN0IGFzcGVlZF9zcGlfcGxhdCAqcGxhdCA9IGRldl9nZXRf cGxhdChidXMpOw0KPiA+Pj4gKwlzdHJ1Y3QgY2xrIGhjbGs7DQo+ID4+PiArCWludCByZXQ7DQo+ ID4+PiArDQo+ID4+PiArCXBsYXQtPmN0cmxfYmFzZSA9IGRldmZkdF9nZXRfYWRkcl9pbmRleChi dXMsIDApOw0KPiA+Pj4gKwlpZiAoKHUzMilwbGF0LT5jdHJsX2Jhc2UgPT0gRkRUX0FERFJfVF9O T05FKSB7DQo+ID4+PiArCQlkZXZfZXJyKGJ1cywgIndyb25nIEFIQiBiYXNlXG4iKTsNCj4gPj4+ ICsJCXJldHVybiAtRU5PREVWOw0KPiA+Pj4gKwl9DQo+ID4+PiArDQo+ID4+PiArCXBsYXQtPmFo Yl9iYXNlID0NCj4gPj4+ICsJCSh2b2lkIF9faW9tZW0gKilkZXZmZHRfZ2V0X2FkZHJfc2l6ZV9p bmRleChidXMsIDEsDQo+ICZwbGF0LT5haGJfc3opOw0KPiA+Pj4gKwlpZiAoKHUzMilwbGF0LT5h aGJfYmFzZSA9PSBGRFRfQUREUl9UX05PTkUpIHsNCj4gPj4+ICsJCWRldl9lcnIoYnVzLCAid3Jv bmcgQUhCIGJhc2VcbiIpOw0KPiA+Pj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4+PiArCX0NCj4g Pj4+ICsNCj4gPj4+ICsJcmV0ID0gY2xrX2dldF9ieV9pbmRleChidXMsIDAsICZoY2xrKTsNCj4g Pj4+ICsJaWYgKHJldCA8IDApIHsNCj4gPj4+ICsJCWRldl9lcnIoYnVzLCAiJXMgY291bGQgbm90 IGdldCBjbG9jazogJWRcbiIsIGJ1cy0+bmFtZSwgcmV0KTsNCj4gPj4+ICsJCXJldHVybiByZXQ7 DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICsJcGxhdC0+aGNsa19yYXRlID0gY2xrX2dldF9y YXRlKCZoY2xrKTsNCj4gPj4+ICsJY2xrX2ZyZWUoJmhjbGspOw0KPiA+Pj4gKw0KPiA+Pj4gKwlw bGF0LT5tYXhfY3MgPSBkZXZfcmVhZF91MzJfZGVmYXVsdChidXMsICJudW0tY3MiLA0KPiA+PiBB U1BFRURfU1BJX01BWF9DUyk7DQo+ID4+PiArCWlmIChwbGF0LT5tYXhfY3MgPiBBU1BFRURfU1BJ X01BWF9DUykNCj4gPj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+Pj4gKw0KPiA+Pj4gKwlkZXZf ZGJnKGJ1cywgImN0cmxfYmFzZSA9IDB4JWx4LCBhaGJfYmFzZSA9IDB4JXAsIHNpemUgPSAweCVs eFxuIiwNCj4gPj4+ICsJCXBsYXQtPmN0cmxfYmFzZSwgcGxhdC0+YWhiX2Jhc2UsIHBsYXQtPmFo Yl9zeik7DQo+ID4+PiArCWRldl9kYmcoYnVzLCAiaGNsayA9ICVkTUh6LCBtYXhfY3MgPSAlZFxu IiwNCj4gPj4+ICsJCXBsYXQtPmhjbGtfcmF0ZSAvIDEwMDAwMDAsIHBsYXQtPm1heF9jcyk7DQo+ ID4+PiArDQo+ID4+PiArCXJldHVybiAwOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtzdGF0 aWMgaW50IGFzcGVlZF9zcGlfcHJvYmUoc3RydWN0IHVkZXZpY2UgKmJ1cykgew0KPiA+Pj4gKwlp bnQgcmV0Ow0KPiA+Pj4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2ICpwcml2ID0gZGV2X2dldF9w cml2KGJ1cyk7DQo+ID4+PiArCXN0cnVjdCB1ZGV2aWNlICpkZXY7DQo+ID4+PiArDQo+ID4+PiAr CXByaXYtPmluZm8gPSAoc3RydWN0IGFzcGVlZF9zcGlfaW5mbyAqKWRldl9nZXRfZHJpdmVyX2Rh dGEoYnVzKTsNCj4gPj4+ICsNCj4gPj4+ICsJcHJpdi0+bnVtX2NzID0gMDsNCj4gPj4+ICsJZm9y IChkZXZpY2VfZmluZF9maXJzdF9jaGlsZChidXMsICZkZXYpOyBkZXY7DQo+ID4+PiArCSAgICAg ZGV2aWNlX2ZpbmRfbmV4dF9jaGlsZCgmZGV2KSkgew0KPiA+Pj4gKwkJcHJpdi0+bnVtX2NzKys7 DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICsJaWYgKHByaXYtPm51bV9jcyA+IEFTUEVFRF9T UElfTUFYX0NTKQ0KPiA+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+PiArDQo+ID4+PiArCXJl dCA9IGFzcGVlZF9zcGlfY3RybF9pbml0KGJ1cyk7DQo+ID4+PiArDQo+ID4+PiArCXJldHVybiBy ZXQ7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2Nv bnRyb2xsZXJfbWVtX29wcyBhc3BlZWRfc3BpX21lbV9vcHMgPSB7DQo+ID4+PiArCS5zdXBwb3J0 c19vcCA9IGFzcGVlZF9zcGlfc3VwcG9ydHNfb3AsDQo+ID4+PiArCS5leGVjX29wID0gYXNwZWVk X3NwaV9leGVjX29wX3VzZXJfbW9kZSwgfTsNCj4gPj4+ICsNCj4gPj4+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGRtX3NwaV9vcHMgYXNwZWVkX3NwaV9vcHMgPSB7DQo+ID4+PiArCS5jbGFpbV9idXMg PSBhc3BlZWRfc3BpX2NsYWltX2J1cywNCj4gPj4+ICsJLnJlbGVhc2VfYnVzID0gYXNwZWVkX3Nw aV9yZWxlYXNlX2J1cywNCj4gPj4+ICsJLnNldF9zcGVlZCA9IGFzcGVlZF9zcGlfc2V0X3NwZWVk LA0KPiA+Pj4gKwkuc2V0X21vZGUgPSBhc3BlZWRfc3BpX3NldF9tb2RlLA0KPiA+Pj4gKwkubWVt X29wcyA9ICZhc3BlZWRfc3BpX21lbV9vcHMsDQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHVkZXZpY2VfaWQgYXNwZWVkX3NwaV9pZHNbXSA9IHsNCj4gPj4+ ICsJeyAuY29tcGF0aWJsZSA9ICJhc3BlZWQsYXN0MjUwMC1mbWMiLCAuZGF0YSA9DQo+ID4+ICh1 bG9uZykmYXN0MjUwMF9mbWNfaW5mbywgfSwNCj4gPj4+ICsJeyAuY29tcGF0aWJsZSA9ICJhc3Bl ZWQsYXN0MjUwMC1zcGkiLCAuZGF0YSA9DQo+ICh1bG9uZykmYXN0MjUwMF9zcGlfaW5mbywgfSwN Cj4gPj4+ICsJeyAuY29tcGF0aWJsZSA9ICJhc3BlZWQsYXN0MjYwMC1mbWMiLCAuZGF0YSA9DQo+ ID4+ICh1bG9uZykmYXN0MjYwMF9mbWNfaW5mbywgfSwNCj4gPj4+ICsJeyAuY29tcGF0aWJsZSA9 ICJhc3BlZWQsYXN0MjYwMC1zcGkiLCAuZGF0YSA9DQo+ICh1bG9uZykmYXN0MjYwMF9zcGlfaW5m bywgfSwNCj4gPj4+ICsJeyB9DQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ICtVX0JPT1RfRFJJ VkVSKGFzcGVlZF9zcGkpID0gew0KPiA+Pj4gKwkubmFtZSA9ICJhc3BlZWRfc3BpIiwNCj4gPj4+ ICsJLmlkID0gVUNMQVNTX1NQSSwNCj4gPj4+ICsJLm9mX21hdGNoID0gYXNwZWVkX3NwaV9pZHMs DQo+ID4+PiArCS5vcHMgPSAmYXNwZWVkX3NwaV9vcHMsDQo+ID4+PiArCS5vZl90b19wbGF0ID0g YXBzZWVkX3NwaV9vZl90b19wbGF0LA0KPiA+Pj4gKwkucGxhdF9hdXRvID0gc2l6ZW9mKHN0cnVj dCBhc3BlZWRfc3BpX3BsYXQpLA0KPiA+Pj4gKwkucHJpdl9hdXRvID0gc2l6ZW9mKHN0cnVjdCBh c3BlZWRfc3BpX3ByaXYpLA0KPiA+Pj4gKwkucHJvYmUgPSBhc3BlZWRfc3BpX3Byb2JlLA0KPiA+ Pj4gK307DQo+ID4NCg0K