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 X-Spam-Level: X-Spam-Status: No, score=-11.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A2951C3F2D1 for ; Mon, 9 Mar 2020 15:16:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 74A38208C3 for ; Mon, 9 Mar 2020 15:16:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="g3UJVFVI" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726810AbgCIPQP (ORCPT ); Mon, 9 Mar 2020 11:16:15 -0400 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:64082 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726804AbgCIPQP (ORCPT ); Mon, 9 Mar 2020 11:16:15 -0400 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 029F526B028607; Mon, 9 Mar 2020 11:15:57 -0400 Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2101.outbound.protection.outlook.com [104.47.70.101]) by mx0a-00128a01.pphosted.com with ESMTP id 2ym6bcdwum-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 09 Mar 2020 11:15:56 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZCK4Ho+ocK/2w9eaXlWbTW+cAgePSG+nmFbXwgVc/+tA1rbaUOYZZdzY1zjyYuBiLsZ/0moqHySmEAU8lf5ZM9zTxZS6L7r8afwrwuL44fqKduhTFQ6wWVsfoTFTaIcj/SV1MvOqmL2Mu0P+V8TZLOSlZodAEeLz+HEzfMIYUy5O+5TlXjT1x74uVLobxPRLJB9DryaIl3HquFtu0Pd5hG+wUFHPO7bVHewYkq6yWsAuA2bNhkXb8TX/FrVXdO6snaF64OsqTq47oyOW6Mj2af0l3L6nj+J341pDvTX3Xni5M+B3rm+iulqiGPRrsVk0sA/SzhZTDoBt6fqWJOjxBQ== 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-SenderADCheck; bh=Ad4YwT3Yyes8zNHpPs7ostxAD1h8cZ6YMgbitoQP1Rg=; b=kdl3RHDwh0asBi7NwauQgUkjpNm+cjifIc0eg2iZ8th5Lbk2F5Dv7gUJb0NIh6zBejE/xaBIgWYgH8mXbk6BU8DCbpe9hhc8iORWK9xWWZvL08rkd8swfWhSL86EYuyGbkaX++M86vrSxXSI0ie7Un5wiLWGmhBfZVw5iFZ1cEh1T3tknM4wNhfO9zpa2APJ1yZtcvSFJhIsyPEcWyy6pL3q9nM7i9rWPSMjeQQUCAhx00SBgrbvQ+GytNb3SQgyrTtmpqEkqcVdnKgJ2gdgWTJqIzTqsXr2mKN1XMa453sJT5waR1kYSlwvbt/gfb11kyO4fnQfJL5+lQx21zgtLg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=analog.com; dmarc=pass action=none header.from=analog.com; dkim=pass header.d=analog.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ad4YwT3Yyes8zNHpPs7ostxAD1h8cZ6YMgbitoQP1Rg=; b=g3UJVFVI1PK+vb8JU5/8iaIj/XSqO28N9QCoSPFfTlE6d9IpaTHAlZTJJ+S2LyL8ckoUZnMIZ74fZXVz7ndrItO6eFFKQnmzjV9PaIPQxGaPYg6RPOXnXxFrjHUCIeiZgRKswXxufMS3donBJaGspkl2VlLW4BksFnUtI0kjWIM= Received: from DM6PR03MB4411.namprd03.prod.outlook.com (2603:10b6:5:10f::14) by DM6PR03MB4106.namprd03.prod.outlook.com (2603:10b6:5:8::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2772.14; Mon, 9 Mar 2020 15:15:53 +0000 Received: from DM6PR03MB4411.namprd03.prod.outlook.com ([fe80::f8c4:f7f2:c7a0:cc19]) by DM6PR03MB4411.namprd03.prod.outlook.com ([fe80::f8c4:f7f2:c7a0:cc19%6]) with mapi id 15.20.2793.013; Mon, 9 Mar 2020 15:15:53 +0000 From: "Ardelean, Alexandru" To: "jic23@kernel.org" CC: "Hennerich, Michael" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-iio@vger.kernel.org" , "robh+dt@kernel.org" , "lars@metafoo.de" Subject: Re: [PATCH v8 5/8] iio: adc: adi-axi-adc: add support for AXI ADC IP core Thread-Topic: [PATCH v8 5/8] iio: adc: adi-axi-adc: add support for AXI ADC IP core Thread-Index: AQHV86YgniFm2MljBEqiZRZlPH8gqqg9OTmAgALs+QCAAD2/AA== Date: Mon, 9 Mar 2020 15:15:53 +0000 Message-ID: References: <20200306110100.22092-1-alexandru.ardelean@analog.com> <20200306110100.22092-6-alexandru.ardelean@analog.com> <20200307145411.720a680d@archlinux> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [137.71.226.54] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 44cff21b-cbcd-475f-ca1f-08d7c43cc24a x-ms-traffictypediagnostic: DM6PR03MB4106: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:506; x-forefront-prvs: 0337AFFE9A x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(376002)(346002)(396003)(39860400002)(366004)(189003)(199004)(30864003)(5660300002)(2906002)(71200400001)(66446008)(6506007)(66946007)(66476007)(91956017)(76116006)(36756003)(64756008)(66556008)(316002)(478600001)(8936002)(2616005)(81166006)(54906003)(6512007)(8676002)(26005)(186003)(6916009)(6486002)(81156014)(966005)(86362001)(4326008)(559001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR03MB4106;H:DM6PR03MB4411.namprd03.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: analog.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: r3Su+1hituJc5Ky8bze0FrAgCxdT9nMUVfPPVGB7a0fcUYX9WFEu4gY59/WKeHPvVi7I2y/7ORyMw/E2wATbVeofskC3h6zY+mtDCcWGpPBZDscQVf5Ye0eFxWSRMZ2d4GKYNbc/1RJbernu5IyVRV34r5Ukm05UOOPURhq37RClhGVWnSYhJWKfyi5uhTkxjFWm2rD3AToz5ZoIjrF4vHVqnXGiXRlz47Q1M8ZkFWTMzq16HLBBfAgL3iXn5feAtTwP1xarCizFl0H8PvpoD4/6fQSLfwKx/6GJAfoPUW5x8XrqYvYK24r4k5Oxjnz0cfYRWYa5NQ4hFTjvLUC0uu6K9aU2/lvsltrqDT2WoNjRb3rUT9bbzKsdoBiGT1HFL7XbggfZh1GRk2qT/a5CaPciQhIMNzRILiCJT5hVRwq3DqcTR89d/oabO1nDSpj0MkpXMolXK+yYDrGqU7YEF+wzzYJGp3MbcN2FoGH8VU8j1DUxzuqD4sbO/rhK/fTf9qzcKLX5PP/KLq7ctpg4bQ== x-ms-exchange-antispam-messagedata: cUpl9i7OBB/mDApZRUgMAGunz+wRvJq4w/wnmou3/ZS3GsjWuSlghLFeb3BG4C6wVNlpckw4nMgLCbxTtiWfLWp2+JV6Wr62+m3mlztzKaBiw63xhcQdu2sBVNa/w28FEdBIUC9FY1ldM2FAeO55vw== Content-Type: text/plain; charset="utf-8" Content-ID: <83F4567A97BB2D4790DAD7A7207F7050@namprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44cff21b-cbcd-475f-ca1f-08d7c43cc24a X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Mar 2020 15:15:53.1528 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ZqHTd7LeoGQUdeaRyWJDHZCOUyMsZGP0L3aWxBAPhdDvbAchQMoe6yKkBIvjVSKivW+67WBeyNqQ0nfTwSArBUCZp0zgkPPzqRPZF6j7OxA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4106 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-03-09_06:2020-03-09,2020-03-09 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 mlxlogscore=999 spamscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 mlxscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2003090104 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org T24gTW9uLCAyMDIwLTAzLTA5IGF0IDExOjM0ICswMDAwLCBBcmRlbGVhbiwgQWxleGFuZHJ1IHdy b3RlOg0KPiBbRXh0ZXJuYWxdDQo+IA0KPiBPbiBTYXQsIDIwMjAtMDMtMDcgYXQgMTQ6NTQgKzAw MDAsIEpvbmF0aGFuIENhbWVyb24gd3JvdGU6DQo+ID4gW0V4dGVybmFsXQ0KPiA+IA0KPiA+IE9u IEZyaSwgNiBNYXIgMjAyMCAxMzowMDo1NyArMDIwMA0KPiA+IEFsZXhhbmRydSBBcmRlbGVhbiA8 YWxleGFuZHJ1LmFyZGVsZWFuQGFuYWxvZy5jb20+IHdyb3RlOg0KPiA+IA0KPiA+ID4gRnJvbTog TWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+DQo+ID4gPiAN Cj4gPiA+IFRoaXMgY2hhbmdlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFuYWxvZyBEZXZpY2VzIEdl bmVyaWMgQVhJIEFEQyBJUCBjb3JlLg0KPiA+ID4gVGhlIElQIGNvcmUgaXMgdXNlZCBmb3IgaW50 ZXJmYWNpbmcgd2l0aCBhbmFsb2ctdG8tZGlnaXRhbCAoQURDKQ0KPiA+ID4gY29udmVydGVycw0K PiA+ID4gdGhhdCByZXF1aXJlIGVpdGhlciBhIGhpZ2gtc3BlZWQgc2VyaWFsIGludGVyZmFjZSAo SkVTRDIwNEIvQykgb3IgYSBzb3VyY2UNCj4gPiA+IHN5bmNocm9ub3VzIHBhcmFsbGVsIGludGVy ZmFjZSAoTFZEUy9DTU9TKS4NCj4gPiA+IA0KPiA+ID4gVXN1YWxseSwgc29tZSBvdGhlciBpbnRl cmZhY2UgdHlwZSAoaS5lIFNQSSkgaXMgdXNlZCBhcyBhIGNvbnRyb2wNCj4gPiA+IGludGVyZmFj ZQ0KPiA+ID4gZm9yIHRoZSBhY3R1YWwgQURDLCB3aGlsZSB0aGUgSVAgY29yZSAoY29udHJvbGxl ZCB2aWEgdGhpcyBkcml2ZXIpLCB3aWxsDQo+ID4gPiBpbnRlcmZhY2UgdG8gdGhlIGRhdGEtbGlu ZXMgb2YgdGhlIEFEQyBhbmQgaGFuZGxlICB0aGUgc3RyZWFtaW5nIG9mIGRhdGENCj4gPiA+IGlu dG8gbWVtb3J5IHZpYSBETUEuDQo+ID4gPiANCj4gPiA+IEJlY2F1c2Ugb2YgdGhpcywgdGhlIEFY SSBBREMgZHJpdmVyIG5lZWRzIHRoZSBvdGhlciBTUEktQURDIGRyaXZlciB0bw0KPiA+ID4gcmVn aXN0ZXIgd2l0aCBpdC4gVGhlIFNQSS1BREMgbmVlZHMgdG8gYmUgcmVnaXN0ZXIgdmlhIHRoZSBT UEkgZnJhbWV3b3JrLA0KPiA+ID4gd2hpbGUgdGhlIEFYSSBBREMgcmVnaXN0ZXJzIGFzIGEgcGxh dGZvcm0gZHJpdmVyLiBUaGUgdHdvIGNhbm5vdCBiZQ0KPiA+ID4gb3JkZXJlZA0KPiA+ID4gaW4g YSBoaWVyYXJjaHkgYXMgYm90aCBkcml2ZXJzIGhhdmUgdGhlaXIgb3duIHJlZ2lzdGVycywgYW5k IHRyeWluZyB0bw0KPiA+ID4gb3JnYW5pemUgdGhpcyBbaW4gYSBoaWVyYXJjaHkgYmVjb21lc10g cHJvYmxlbWF0aWMgd2hlbiB0cnlpbmcgdG8gbWFwDQo+ID4gPiBtZW1vcnkvcmVnaXN0ZXJzLg0K PiA+ID4gDQo+ID4gPiBUaGVyZSBhcmUgc29tZSBtb2RlcyB3aGVyZSB0aGUgQVhJIEFEQyBjYW4g b3BlcmF0ZSBhcyBzdGFuZGFsb25lIEFEQywgYnV0DQo+ID4gPiB0aG9zZSB3aWxsIGJlIGltcGxl bWVudGVkIGF0IGEgbGF0ZXIgcG9pbnQgaW4gdGltZS4NCj4gPiA+IA0KPiA+ID4gTGluazogaHR0 cHM6Ly93aWtpLmFuYWxvZy5jb20vcmVzb3VyY2VzL2ZwZ2EvZG9jcy9heGlfYWRjX2lwDQo+ID4g PiANCj4gPiA+IFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5l cmljaEBhbmFsb2cuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogTGFycy1QZXRlciBDbGF1c2Vu IDxsYXJzQG1ldGFmb28uZGU+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcnUgQXJkZWxl YW4gPGFsZXhhbmRydS5hcmRlbGVhbkBhbmFsb2cuY29tPg0KPiA+IE1vc3RseSBsb29rcyBmaW5l LCBidXQgYSBmZXcgbml0cGlja3MgZnJvbSByZXJlYWRpbmcgaXQuDQo+ID4gDQo+ID4gVGhhbmtz LA0KPiA+IA0KPiA+IEpvbmF0aGFuDQo+ID4gDQo+ID4gPiAtLS0NCj4gPiA+ICBkcml2ZXJzL2lp by9hZGMvS2NvbmZpZyAgICAgICAgICAgICB8ICAyMCArDQo+ID4gPiAgZHJpdmVycy9paW8vYWRj L01ha2VmaWxlICAgICAgICAgICAgfCAgIDEgKw0KPiA+ID4gIGRyaXZlcnMvaWlvL2FkYy9hZGkt YXhpLWFkYy5jICAgICAgIHwgNjE4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiA+ ICBpbmNsdWRlL2xpbnV4L2lpby9hZGMvYWRpLWF4aS1hZGMuaCB8ICA2MyArKysNCj4gPiA+ICA0 IGZpbGVzIGNoYW5nZWQsIDcwMiBpbnNlcnRpb25zKCspDQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvaWlvL2FkYy9hZGktYXhpLWFkYy5jDQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGluY2x1ZGUvbGludXgvaWlvL2FkYy9hZGktYXhpLWFkYy5oDQo+ID4gPiANCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2lpby9hZGMvS2NvbmZpZyBiL2RyaXZlcnMvaWlvL2FkYy9LY29u ZmlnDQo+ID4gPiBpbmRleCBmNGRhODIxYzQwMjIuLjQ0NTA3MGFiZjM3NiAxMDA2NDQNCj4gPiA+ IC0tLSBhL2RyaXZlcnMvaWlvL2FkYy9LY29uZmlnDQo+ID4gPiArKysgYi9kcml2ZXJzL2lpby9h ZGMvS2NvbmZpZw0KPiA+ID4gQEAgLTI0Niw2ICsyNDYsMjYgQEAgY29uZmlnIEFENzk5WA0KPiA+ ID4gIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6 IHRoZSBtb2R1bGUgd2lsbCBiZQ0KPiA+ID4gIAkgIGNhbGxlZCBhZDc5OXguDQo+ID4gPiAgDQo+ ID4gPiArY29uZmlnIEFESV9BWElfQURDDQo+ID4gPiArCXRyaXN0YXRlICJBbmFsb2cgRGV2aWNl cyBHZW5lcmljIEFYSSBBREMgSVAgY29yZSBkcml2ZXIiDQo+ID4gPiArCXNlbGVjdCBJSU9fQlVG RkVSDQo+ID4gPiArCXNlbGVjdCBJSU9fQlVGRkVSX0hXX0NPTlNVTUVSDQo+ID4gPiArCXNlbGVj dCBJSU9fQlVGRkVSX0RNQUVOR0lORQ0KPiA+ID4gKwloZWxwDQo+ID4gPiArCSAgU2F5IHllcyBo ZXJlIHRvIGJ1aWxkIHN1cHBvcnQgZm9yIEFuYWxvZyBEZXZpY2VzIEdlbmVyaWMNCj4gPiA+ICsJ ICBBWEkgQURDIElQIGNvcmUuIFRoZSBJUCBjb3JlIGlzIHVzZWQgZm9yIGludGVyZmFjaW5nIHdp dGgNCj4gPiA+ICsJICBhbmFsb2ctdG8tZGlnaXRhbCAoQURDKSBjb252ZXJ0ZXJzIHRoYXQgcmVx dWlyZSBlaXRoZXIgYSBoaWdoLXNwZWVkDQo+ID4gPiArCSAgc2VyaWFsIGludGVyZmFjZSAoSkVT RDIwNEIvQykgb3IgYSBzb3VyY2Ugc3luY2hyb25vdXMgcGFyYWxsZWwNCj4gPiA+ICsJICBpbnRl cmZhY2UgKExWRFMvQ01PUykuDQo+ID4gPiArCSAgVHlwaWNhbGx5IChmb3Igc3VjaCBkZXZpY2Vz KSBTUEkgd2lsbCBiZSB1c2VkIGZvciBjb25maWd1cmF0aW9uIG9ubHksDQo+ID4gPiArCSAgd2hp bGUgdGhpcyBJUCBjb3JlIGhhbmRsZXMgdGhlIHN0cmVhbWluZyBvZiBkYXRhIGludG8gbWVtb3J5 IHZpYSBETUEuDQo+ID4gPiArDQo+ID4gPiArCSAgTGluazogaHR0cHM6Ly93aWtpLmFuYWxvZy5j b20vcmVzb3VyY2VzL2ZwZ2EvZG9jcy9heGlfYWRjX2lwDQo+ID4gPiArCSAgSWYgdW5zdXJlLCBz YXkgTiAoYnV0IGl0J3Mgc2FmZSB0byBzYXkgIlkiKS4NCj4gPiA+ICsNCj4gPiA+ICsJICBUbyBj b21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUNCj4gPiA+ ICsJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWRpLWF4aS1hZGMuDQo+ID4gPiArDQo+ID4gPiAg Y29uZmlnIEFTUEVFRF9BREMNCj4gPiA+ICAJdHJpc3RhdGUgIkFzcGVlZCBBREMiDQo+ID4gPiAg CWRlcGVuZHMgb24gQVJDSF9BU1BFRUQgfHwgQ09NUElMRV9URVNUDQo+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9paW8vYWRjL01ha2VmaWxlIGIvZHJpdmVycy9paW8vYWRjL01ha2VmaWxlDQo+ ID4gPiBpbmRleCA4NDYyNDU1YjQyMjguLjdjNjU5NGQwNDlmOSAxMDA2NDQNCj4gPiA+IC0tLSBh L2RyaXZlcnMvaWlvL2FkYy9NYWtlZmlsZQ0KPiA+ID4gKysrIGIvZHJpdmVycy9paW8vYWRjL01h a2VmaWxlDQo+ID4gPiBAQCAtMjYsNiArMjYsNyBAQCBvYmotJChDT05GSUdfQUQ3NzkzKSArPSBh ZDc3OTMubw0KPiA+ID4gIG9iai0kKENPTkZJR19BRDc4ODcpICs9IGFkNzg4Ny5vDQo+ID4gPiAg b2JqLSQoQ09ORklHX0FENzk0OSkgKz0gYWQ3OTQ5Lm8NCj4gPiA+ICBvYmotJChDT05GSUdfQUQ3 OTlYKSArPSBhZDc5OXgubw0KPiA+ID4gK29iai0kKENPTkZJR19BRElfQVhJX0FEQykgKz0gYWRp LWF4aS1hZGMubw0KPiA+ID4gIG9iai0kKENPTkZJR19BU1BFRURfQURDKSArPSBhc3BlZWRfYWRj Lm8NCj4gPiA+ICBvYmotJChDT05GSUdfQVQ5MV9BREMpICs9IGF0OTFfYWRjLm8NCj4gPiA+ICBv YmotJChDT05GSUdfQVQ5MV9TQU1BNUQyX0FEQykgKz0gYXQ5MS1zYW1hNWQyX2FkYy5vDQo+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL2FkaS1heGktYWRjLmMgYi9kcml2ZXJzL2lp by9hZGMvYWRpLWF4aS1hZGMuYw0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uMTdlZTIwMDE1ZDcxDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4g PiArKysgYi9kcml2ZXJzL2lpby9hZGMvYWRpLWF4aS1hZGMuYw0KPiA+ID4gQEAgLTAsMCArMSw2 MTggQEANCj4gPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+ ID4gPiArLyoNCj4gPiA+ICsgKiBBbmFsb2cgRGV2aWNlcyBHZW5lcmljIEFYSSBBREMgSVAgY29y ZQ0KPiA+ID4gKyAqIExpbms6IGh0dHBzOi8vd2lraS5hbmFsb2cuY29tL3Jlc291cmNlcy9mcGdh L2RvY3MvYXhpX2FkY19pcA0KPiA+ID4gKyAqDQo+ID4gPiArICogQ29weXJpZ2h0IDIwMTItMjAy MCBBbmFsb2cgRGV2aWNlcyBJbmMuDQo+ID4gPiArICovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1 ZGUgPGxpbnV4L2JpdGZpZWxkLmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiA+ ID4gKyNpbmNsdWRlIDxsaW51eC9pby5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5o Pg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4g PiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvaWlvL2lpby5oPg0KPiA+ID4gKyNpbmNsdWRl IDxsaW51eC9paW8vc3lzZnMuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvaWlvL2J1ZmZlci5o Pg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9paW8vYnVmZmVyLWRtYWVuZ2luZS5oPg0KPiA+ID4g Kw0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9mcGdhL2FkaS1heGktY29tbW9uLmg+DQo+ID4gPiAr I2luY2x1ZGUgPGxpbnV4L2lpby9hZGMvYWRpLWF4aS1hZGMuaD4NCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgKiBSZWdpc3RlciBkZWZpbml0aW9uczoNCj4gPiA+ICsgKiAgIGh0dHBzOi8v d2lraS5hbmFsb2cuY29tL3Jlc291cmNlcy9mcGdhL2RvY3MvYXhpX2FkY19pcCNyZWdpc3Rlcl9t YXANCj4gPiA+ICsgKi8NCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIExPV0VSNV9NU0sJCQlHRU5N QVNLKDQsIDApDQo+ID4gPiArI2RlZmluZSBMT1dFUjVfU0VUKHgpCQkJRklFTERfUFJFUChMT1dF UjVfTVNLLCB4KQ0KPiA+ID4gKyNkZWZpbmUgTE9XRVI1X0dFVCh4KQkJCUZJRUxEX0dFVChMT1dF UjVfTVNLLCB4KQ0KPiA+IA0KPiA+IFdoaWxzdCBpdCBtYXkgY2F1c2UgbW9yZSByZXBldGl0aW9u LCBJJ2QgcmF0aGVyIGp1c3Qgc2VlIHRoZXNlIHVzZWQgd2hlcmUNCj4gPiByZWxldmFudCBpbmxp bmUuICBUaGF0IHdpbGwgYmUgc2xpZ2h0bHkgZWFzaWVyIHRvIHJldmlldy4NCj4gDQo+IGFjaw0K PiBpIHdhc24ndCB0b28gZGVjaWRlZCBvbiB3aGV0aGVyIHRoZXNlIG5lZWQgdG8gYmUgZGVmaW5l ZCB5ZXQNCj4gDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBMT1dFUjhfTVNLCQkJR0VOTUFTSyg3 LCAwKQ0KPiA+ID4gKyNkZWZpbmUgTE9XRVI4X1NFVCh4KQkJCUZJRUxEX1BSRVAoTE9XRVI4X01T SywgeCkNCj4gPiA+ICsjZGVmaW5lIExPV0VSOF9HRVQoeCkJCQlGSUVMRF9HRVQoTE9XRVI4X01T SywgeCkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFVQUEVSMTZfTVNLCQkJR0VOTUFTSygzMSwg MTYpDQo+ID4gPiArI2RlZmluZSBVUFBFUjE2X1NFVCh4KQkJCUZJRUxEX1BSRVAoVVBQRVIxNl9N U0ssIHgpDQo+ID4gPiArI2RlZmluZSBVUFBFUjE2X0dFVCh4KQkJCUZJRUxEX0dFVChVUFBFUjE2 X01TSywgeCkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIExPV0VSMTZfTVNLCQkJR0VOTUFTSygx NSwgMCkNCj4gPiA+ICsjZGVmaW5lIExPV0VSMTZfU0VUKHgpCQkJRklFTERfUFJFUChMT1dFUjE2 X01TSywgeCkNCj4gPiA+ICsjZGVmaW5lIExPV0VSMTZfR0VUKHgpCQkJRklFTERfR0VUKExPV0VS MTZfTVNLLCB4KQ0KPiA+ID4gKw0KPiA+ID4gKy8qIEFEQyBjb250cm9scyAqLw0KPiA+ID4gKw0K PiA+ID4gKyNkZWZpbmUgUkVHX1JTVE4JCQkJMHgwMDQwDQo+ID4gDQo+ID4gVXN1YWwgc3R1ZmY6 IFRoZXNlIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoIGRyaXZlciByZWxldmFudCBwcmVmaXgNCj4g PiBtYXliZSBBRElfQVhJXw0KPiANCj4gbXkgb25seSBjb25jZXJuIFthYm91dCB0aGUgcHJlZml4 XSBpcyB0aGF0IGl0IG1ha2VzIHRoZSBtYWNyby1uYW1lcyB0b28gbG9uZzsNCj4gYWZ0ZXIgcmUt bG9va2luZyBhdCB0aGVzZSByZWcgZGVmaW5pdGlvbnMsIHdoYXQgYm90aGVyZWQgbWUgaXMgdGhh dCBzb21lIG9mDQo+IHRoZQ0KPiBiaXQtZmllbGQtbmFtZXMgY29sbGlkZTsgc28gaSB3ZW50IHdp dGggY29uY2F0ZW5hbnRpbmcgcmVnLW5hbWVzICsgcmVnLQ0KPiBiaXRuYW1lcywgDQo+IHdoaWNo IG1hZGUgdGhlbSBsb29rIHRvbyBsb25nIFtzbyBpIHJlbW92ZWQgdGhlIHByZWZpeF0NCj4gDQo+ IHRoZXJlJ3MgYWxzbyB0aGUgcG9zc2liaWxpdHkgb2YgZ29pbmcgYmFjayB0byB0aGUgcmVnbWFw LWRvYyBhbmQgc2hvcnRlbmluZw0KPiB0aGVzZSByZWctbmFtZS9iaXRuYW1lczsNCj4gYnV0IHRo ZXkndmUgYmVlbiBsaWtlIHRoaXMgZm9yIGEgd2hpbGUsIGFuZCBpIGFkbWl0IGdvaW5nIHRvIHRo ZSBIREwgdGVhbQ0KPiBtYWtlcw0KPiBtZSBzb21ldGltZXMgbGF6eTsNCj4gDQo+IGknbGwgcmUt YWRkIHRlaCBBRElfQVhJIHByZWZpeDsgYW5kIHdpbGwgc2VlIGhvdyB0aGVzZSBsb29rDQoNCmkg dGFsa2VkIHRvIEhETA0Kc28sIHdlJ2xsIGhhdmUgYSByb3VuZCBvZiByZW5hbWluZyB0aGVzZSBb aW4gdGhlIGRvY3NdOw0KDQpidXQgbm93LCBpJ20gd29uZGVyaW5nIGlmIGl0J3Mgb2sgdG8gZHJv cCB0aGUgcmVncyB0aGF0IGFyZSBbY3VycmVudGx5XSB1bnVzZWQNCmFuZCBhZGQgdGhlbSB3aGVu IGZ1bmN0aW9uYWxpdHkgZ2V0cyBsYXRlci1hZGRlZDsNCmluIHRoZSBtZWFudGltZSwgdGhlIG5h bWVzIGNhbiBiZSByZS13b3JrZWQvc2hvcnRlbmVkL3ByZXR0aWZ5LWVkOw0Kd2UnbGwgYWxzbyBu ZWVkIHRvIHJlLWRvIGFuIGludmVudG9yeSBvZiB0aGUgY3VycmVudCBIREwgSVAgY29yZXMgYW5k IHNlZSBob3cNCnRoZSByZWdtYXBzIGhvbGQtdXAvbWF0Y2ggYWdhaW5zdCB0aGUgZG9jczsNCg0K PiANCj4gPiA+ICsjZGVmaW5lICAgUkVHX1JTVE5fQ0VfTgkJCQlCSVQoMikNCj4gPiA+ICsjZGVm aW5lICAgUkVHX1JTVE5fTU1DTV9SU1ROCQkJQklUKDEpDQo+ID4gPiArI2RlZmluZSAgIFJFR19S U1ROX1JTVE4JCQkJQklUKDApDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBSRUdfQ05UUkwJCQkJ MHgwMDQ0DQo+ID4gPiArI2RlZmluZSAgIFJFR19DTlRSTF9TWU5DCQkJQklUKDMpDQo+ID4gPiAr I2RlZmluZSAgIFJFR19DTlRSTF9SMV9NT0RFCQkJQklUKDIpDQo+ID4gPiArI2RlZmluZSAgIFJF R19DTlRSTF9ERFJfRURHRVNFTAkJCUJJVCgxKQ0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ05UUkxf UElOX01PREUJCQlCSVQoMCkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFJFR19DTEtfRlJFUQkJ CQkweDAwNTQNCj4gPiA+ICsjZGVmaW5lIFJFR19DTEtfUkFUSU8JCQkJMHgwMDU4DQo+ID4gPiAr DQo+ID4gPiArI2RlZmluZSBSRUdfU1RBVFVTCQkJCTB4MDA1Qw0KPiA+ID4gKyNkZWZpbmUgICBS RUdfU1RBVFVTX1BOX0VSUgkJCUJJVCgzKQ0KPiA+ID4gKyNkZWZpbmUgICBSRUdfU1RBVFVTX1BO X09PUwkJCUJJVCgyKQ0KPiA+ID4gKyNkZWZpbmUgICBSRUdfU1RBVFVTX09WRVJfUkFOR0UJCQlC SVQoMSkNCj4gPiA+ICsjZGVmaW5lICAgUkVHX1NUQVRVU19TVEFUVVMJCQlCSVQoMCkNCj4gPiA+ ICsNCj4gPiA+ICsjZGVmaW5lIFJFR19TWU5DX1NUQVRVUwkJCQkweDAwNjgNCj4gPiA+ICsjZGVm aW5lICAgUkVHX1NZTkNfU1RBVFVTX1NZTkMJCQlCSVQoMCkNCj4gPiA+ICsNCj4gPiA+ICsjZGVm aW5lIFJFR19EUlBfQ05UUkwJCQkJMHgwMDcwDQo+ID4gPiArI2RlZmluZSAgIFJFR19EUlBfQ05U UkxfRFJQX1JXTgkJCUJJVCgyOCkNCj4gPiA+ICsjZGVmaW5lICAgUkVHX0RSUF9DTlRSTF9EUlBf QUREUkVTU19NU0sJCUdFTk1BU0soMjcsIDE2KQ0KPiA+ID4gKyNkZWZpbmUgICBSRUdfRFJQX0NO VFJMX0RSUF9BRERSRVNTX1NFVCh4KQlcDQo+ID4gPiArCQlGSUVMRF9QUkVQKFJFR19EUlBfQ05U UkxfRFJQX0FERFJFU1NfTVNLLCB4KQ0KPiA+ID4gKyNkZWZpbmUgICBSRUdfRFJQX0NOVFJMX0RS UF9BRERSRVNTX0dFVCh4KQlcDQo+ID4gPiArCQlGSUVMRF9HRVQoUkVHX0RSUF9DTlRSTF9EUlBf QUREUkVTU19NU0ssIHgpDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBSRUdfRFJQX1NUQVRVUwkJ CQkweDAwNzQNCj4gPiA+ICsjZGVmaW5lICAgUkVHX0RSUF9TVEFUVVNfRFJQX0xPQ0tFRAkJQklU KDE3KQ0KPiA+ID4gKyNkZWZpbmUgICBSRUdfRFJQX1NUQVRVU19EUlBfU1RBVFVTCQlCSVQoMTYp DQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBSRUdfRFJQX1dEQVRBCQkJCTB4MDA3OA0KPiA+ID4g KyNkZWZpbmUgICBSRUdfRFJQX1dEQVRBX1NFVAkJCUxPV0VSMTZfU0VUDQo+ID4gPiArI2RlZmlu ZSAgIFJFR19EUlBfV0RBVEFfR0VUCQkJTE9XRVIxNl9HRVQNCj4gPiANCj4gPiBBcyBtZW50aW9u ZWQgYWJvdmUsIEknZCByYXRoZXIgc2VlIHRoZSBtYXNrIGhlcmUuICBVbmxlc3MgdXNlZA0KPiA+ IGFuIGF3ZnVsIGxvdCwgSSdkIHJhdGhlciBqdXN0IHNlZSB0aGUgRklFTERfUFJFUCBhbmQgRklF TERfR0VUDQo+ID4gdXNlZCBpbmxpbmUgcmF0aGVyIHRoYW4gZGVmaW5pbmcgYSBidW5jaCBvZiBf U0VUL19HRVQgb25seSBzb21lDQo+ID4gb2Ygd2hpY2ggc2VlbSB0byBiZSB1c2VkIHNvIGZhci4N Cj4gPiANCj4gDQo+IHN1cmU7DQo+IHdpbGwgcmVtb3ZlIGFsbCB0aGVzZSBfU0VUL19HRVQgc2hv cnRoYW5kcw0KPiANCj4gYSBsb3Qgb2YgdGhlbSB3aWxsIGJlIHVzZWQ7DQo+IGFuZCB3ZSBtYXkg aW1wbGVtZW50IGFsbCByZWctZGVmaW5pdGlvbnMgYXQgc29tZSBwb2ludDsNCj4gDQo+IHRoaXMg ZHJpdmVyIGlzIGEgcmUtd3JpdGUvYWRhcHRhdGlvbiBvZiB0aGlzIG9uZToNCj4gaHR0cHM6Ly9n aXRodWIuY29tL2FuYWxvZ2RldmljZXNpbmMvbGludXgvYmxvYi9tYXN0ZXIvZHJpdmVycy9paW8v YWRjL2NmX2F4aV9hZGNfY29yZS5jDQo+IA0KPiB3aGljaCBoYXMgZ3Jvd24gcXVpdGUgYSBsb3Qg YW5kIHRyeWluZyB0byBjbGVhbiBpdCB1cCBpcy4uLiDCr1xfKOODhClfL8KvDQo+IA0KPiANCj4g PiA+ICsNCj4gPiA+ICsjZGVmaW5lIFJFR19EUlBfUkRBVEEJCQkJMHgwMDdDDQo+ID4gPiArI2Rl ZmluZSAgIFJFR19EUlBfUkRBVEFfU0VUCQkJTE9XRVIxNl9TRVQNCj4gPiA+ICsjZGVmaW5lICAg UkVHX0RSUF9SREFUQV9HRVQJCQlMT1dFUjE2X0dFVA0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUg UkVHX1VJX1NUQVRVUwkJCQkweDAwODgNCj4gPiA+ICsjZGVmaW5lICAgUkVHX1VJX1NUQVRVU19P VkYJCQlCSVQoMikNCj4gPiA+ICsjZGVmaW5lICAgUkVHX1VJX1NUQVRVU19VTkYJCQlCSVQoMSkN Cj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFJFR19VU1JfQ05UUkxfMQkJCQkweDAwQTANCj4gPiA+ ICsjZGVmaW5lICAgUkVHX1VTUl9DTlRSTF8xX1VTUl9DSEFOTUFYX01TSwlMT1dFUjhfTVNLDQo+ ID4gPiArI2RlZmluZSAgIFJFR19VU1JfQ05UUkxfMV9VU1JfQ0hBTk1BWF9TRVQJTE9XRVI4X1NF VA0KPiA+ID4gKyNkZWZpbmUgICBSRUdfVVNSX0NOVFJMXzFfVVNSX0NIQU5NQVhfR0VUCUxPV0VS OF9HRVQNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFJFR19BRENfU1RBUlRfQ09ERQkJCTB4MDBB NA0KPiA+ID4gKyNkZWZpbmUgUkVHX0FEQ19HUElPX0lOCQkJCTB4MDBCOA0KPiA+ID4gKyNkZWZp bmUgUkVHX0FEQ19HUElPX09VVAkJCTB4MDBCQw0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgUkVH X1BQU19DT1VOVEVSCQkJCTB4MDBDMA0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgUkVHX1BQU19T VEFUVVMJCQkJMHgwMEM0DQo+ID4gPiArI2RlZmluZSAgIFJFR19QUFNfU1RBVFVTX1BQU19TVEFU VVMJCUJJVCgwKQ0KPiA+ID4gKw0KPiA+ID4gKy8qIEFEQyBDaGFubmVsIGNvbnRyb2xzICovDQo+ ID4gPiArDQo+ID4gPiArI2RlZmluZSBSRUdfQ0hBTl9DTlRSTChjKQkJCSgweDA0MDAgKyAoYykg KiAweDQwKQ0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9DTlRSTF9MQl9PV1IJCQlCSVQoMTEp DQo+ID4gPiArI2RlZmluZSAgIFJFR19DSEFOX0NOVFJMX1BOX1NFTF9PV1IJCUJJVCgxMCkNCj4g PiA+ICsjZGVmaW5lICAgUkVHX0NIQU5fQ05UUkxfSVFDT1JfRU5CCQlCSVQoOSkNCj4gPiA+ICsj ZGVmaW5lICAgUkVHX0NIQU5fQ05UUkxfRENGSUxUX0VOQgkJQklUKDgpDQo+ID4gPiArI2RlZmlu ZSAgIFJFR19DSEFOX0NOVFJMX0ZPUk1BVF9TSUdORVhUCQlCSVQoNikNCj4gPiA+ICsjZGVmaW5l ICAgUkVHX0NIQU5fQ05UUkxfRk9STUFUX1RZUEUJCUJJVCg1KQ0KPiA+ID4gKyNkZWZpbmUgICBS RUdfQ0hBTl9DTlRSTF9GT1JNQVRfRU5BQkxFCQlCSVQoNCkNCj4gPiA+ICsjZGVmaW5lICAgUkVH X0NIQU5fQ05UUkxfQURDX1BOX1RZUEVfT1dSCUJJVCgxKQ0KPiA+ID4gKyNkZWZpbmUgICBSRUdf Q0hBTl9DTlRSTF9FTkFCTEUJCQlCSVQoMCkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFJFR19D SEFOX0NOVFJMX0RFRkFVTFRTCQlcDQo+ID4gPiArCShSRUdfQ0hBTl9DTlRSTF9GT1JNQVRfU0lH TkVYVCB8IFJFR19DSEFOX0NOVFJMX0ZPUk1BVF9FTkFCTEUgfAlcDQo+ID4gPiArCSBSRUdfQ0hB Tl9DTlRSTF9JUUNPUl9FTkIgfCBSRUdfQ0hBTl9DTlRSTF9FTkFCTEUpDQo+ID4gPiArDQo+ID4g PiArI2RlZmluZSBSRUdfQ0hBTl9TVEFUVVMoYykJCQkoMHgwNDA0ICsgKGMpICogMHg0MCkNCj4g PiA+ICsjZGVmaW5lICAgUkVHX0NIQU5fU1RBVFVTX1BOX0VSUgkJQklUKDIpDQo+ID4gPiArI2Rl ZmluZSAgIFJFR19DSEFOX1NUQVRVU19QTl9PT1MJCUJJVCgxKQ0KPiA+ID4gKyNkZWZpbmUgICBS RUdfQ0hBTl9TVEFUVVNfT1ZFUl9SQU5HRQkJQklUKDApDQo+ID4gPiArDQo+ID4gPiArI2RlZmlu ZSBSRUdfQ0hBTl9DTlRSTF8xKGMpCQkJKDB4MDQxMCArIChjKSAqIDB4NDApDQo+ID4gPiArI2Rl ZmluZSAgIFJFR19DSEFOX0NOVFJMXzFfRENGSUxUX09GRlNFVF9NU0sJVVBQRVIxNl9NU0sNCj4g PiA+ICsjZGVmaW5lICAgUkVHX0NIQU5fQ05UUkxfMV9EQ0ZJTFRfT0ZGU0VUX1NFVAlVUFBFUjE2 X1NFVA0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9DTlRSTF8xX0RDRklMVF9PRkZTRVRfR0VU CVVQUEVSMTZfR0VUDQo+ID4gPiArI2RlZmluZSAgIFJFR19DSEFOX0NOVFJMXzFfRENGSUxUX0NP RUZGX01TSwlMT1dFUjE2X01TSw0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9DTlRSTF8xX0RD RklMVF9DT0VGRl9TRVQJTE9XRVIxNl9TRVQNCj4gPiA+ICsjZGVmaW5lICAgUkVHX0NIQU5fQ05U UkxfMV9EQ0ZJTFRfQ09FRkZfR0VUCUxPV0VSMTZfR0VUDQo+ID4gPiArDQo+ID4gPiArI2RlZmlu ZSBSRUdfQ0hBTl9DTlRSTF8yKGMpCQkJKDB4MDQxNCArIChjKSAqIDB4NDApDQo+ID4gPiArI2Rl ZmluZSAgIFJFR19DSEFOX0NOVFJMXzJfSVFDT1JfQ09FRkZfMV9NU0sJVVBQRVIxNl9NU0sNCj4g PiA+ICsjZGVmaW5lICAgUkVHX0NIQU5fQ05UUkxfMl9JUUNPUl9DT0VGRl8xX1NFVAlVUFBFUjE2 X1NFVA0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9DTlRSTF8yX0lRQ09SX0NPRUZGXzFfR0VU CVVQUEVSMTZfR0VUDQo+ID4gPiArI2RlZmluZSAgIFJFR19DSEFOX0NOVFJMXzJfSVFDT1JfQ09F RkZfMl9NU0sJTE9XRVIxNl9NU0sNCj4gPiA+ICsjZGVmaW5lICAgUkVHX0NIQU5fQ05UUkxfMl9J UUNPUl9DT0VGRl8yX1NFVAlMT1dFUjE2X1NFVA0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9D TlRSTF8yX0lRQ09SX0NPRUZGXzJfR0VUCUxPV0VSMTZfR0VUDQo+ID4gPiArDQo+ID4gPiArLyog IGZvcm1hdCBpcyAxLjEuMTQgKHNpZ24sIGludGVnZXIgYW5kIGZyYWN0aW9uYWwgYml0cykgKi8N Cj4gPiA+ICsjZGVmaW5lIElRQ09SX0lOVF8xCQkJCTB4NDAwMFVMDQo+ID4gPiArI2RlZmluZSBJ UUNPUl9TSUdOX0JJVAkJCQlCSVQoMTUpDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBSRUdfQ0hB Tl9DTlRSTF8zKGMpCQkJKDB4MDQxOCArIChjKSAqIDB4NDApDQo+ID4gPiArI2RlZmluZSAgIFJF R19DSEFOX0NOVFJMXzNfQURDX1BOX1NFTF9NU0sJVVBQRVIxNl9NU0sNCj4gPiA+ICsjZGVmaW5l ICAgUkVHX0NIQU5fQ05UUkxfM19BRENfUE5fU0VMX1NFVAlVUFBFUjE2X1NFVA0KPiA+ID4gKyNk ZWZpbmUgICBSRUdfQ0hBTl9DTlRSTF8zX0FEQ19QTl9TRUxfR0VUCVVQUEVSMTZfR0VUDQo+ID4g PiArI2RlZmluZSAgIFJFR19DSEFOX0NOVFJMXzNfQURDX0RBVEFfU0VMX01TSwlMT1dFUjE2X01T Sw0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9DTlRSTF8zX0FEQ19EQVRBX1NFTF9TRVQJTE9X RVIxNl9TRVQNCj4gPiA+ICsjZGVmaW5lICAgUkVHX0NIQU5fQ05UUkxfM19BRENfREFUQV9TRUxf R0VUCUxPV0VSMTZfR0VUDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBSRUdfQ0hBTl9VU1JfQ05U UkxfMShjKQkJCQkJKDB4MDQyMA0KPiA+ID4gKyAoYykgKiAweDQwKQ0KPiA+ID4gKyNkZWZpbmUg ICBSRUdfQ0hBTl9VU1JfQ05UUkxfMV9VU1JfREFUQVRZUEVfQkUJCQlCSVQoMjUpDQo+ID4gPiAr I2RlZmluZSAgIFJFR19DSEFOX1VTUl9DTlRSTF8xX1VTUl9EQVRBVFlQRV9TSUdORUQJCUJJVCgy NCkNCj4gPiA+ICsjZGVmaW5lICAgUkVHX0NIQU5fVVNSX0NOVFJMXzFfVVNSX0RBVEFUWVBFX1NI SUZUX01TSwkJR0VOTUFTSygNCj4gPiA+IDIzLCAxNikNCj4gPiA+ICsjZGVmaW5lICAgUkVHX0NI QU5fVVNSX0NOVFJMXzFfVVNSX0RBVEFUWVBFX1NISUZUX1NFVCh4KQlcDQo+ID4gPiArCQlGSUVM RF9QUkVQKFJFR19DSEFOX1VTUl9DTlRSTF8xX1VTUl9EQVRBVFlQRV9TSElGVF9NU0ssIHgpDQo+ ID4gPiArI2RlZmluZSAgIFJFR19DSEFOX1VTUl9DTlRSTF8xX1VTUl9EQVRBVFlQRV9TSElGVF9H RVQJCVwNCj4gPiA+ICsJCUZJRUxEX0dFVChSRUdfQ0hBTl9VU1JfQ05UUkxfMV9VU1JfREFUQVRZ UEVfU0hJRlRfTVNLLCB4KQ0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9VU1JfQ05UUkxfMV9V U1JfREFUQVRZUEVfVE9UQUxfQklUU19NU0sJR0VOTUFTSygNCj4gPiA+IDE1LCA4KQ0KPiA+ID4g KyNkZWZpbmUgICBSRUdfQ0hBTl9VU1JfQ05UUkxfMV9VU1JfREFUQVRZUEVfVE9UQUxfQklUU19T RVQoeCkJXA0KPiA+ID4gKwkJRklFTERfUFJFUChSRUdfQ0hBTl9VU1JfQ05UUkxfMV9VU1JfREFU QVRZUEVfVE9UQUxfQklUU19NU0ssIHgpDQo+ID4gPiArI2RlZmluZSAgIFJFR19DSEFOX1VTUl9D TlRSTF8xX1VTUl9EQVRBVFlQRV9UT1RBTF9CSVRTX0dFVCh4KQlcDQo+ID4gPiArCQlGSUVMRF9H RVQoUkVHX0NIQU5fVVNSX0NOVFJMXzFfVVNSX0RBVEFUWVBFX1RPVEFMX0JJVFNfTVNLLCB4KQ0K PiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9VU1JfQ05UUkxfMV9VU1JfREFUQVRZUEVfQklUU19N U0sJCUxPV0VSOF9NDQo+ID4gPiBTSw0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9VU1JfQ05U UkxfMV9VU1JfREFUQVRZUEVfQklUU19TRVQJCUxPV0VSOF9TDQo+ID4gPiBFVA0KPiA+ID4gKyNk ZWZpbmUgICBSRUdfQ0hBTl9VU1JfQ05UUkxfMV9VU1JfREFUQVRZUEVfQklUU19HRVQJCUxPV0VS OF9HDQo+ID4gPiBFVA0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgUkVHX0NIQU5fVVNSX0NOVFJM XzIoYykJCQkJKDB4MDQyNCArIChjKSAqDQo+ID4gPiAweDQwKQ0KPiA+ID4gKyNkZWZpbmUgICBS RUdfQ0hBTl9VU1JfQ05UUkxfMl9VU1JfREVDSU1BVElPTl9NX01TSwlVUFBFUjE2X01TSw0KPiA+ ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9VU1JfQ05UUkxfMl9VU1JfREVDSU1BVElPTl9NX1NFVAlV UFBFUjE2X1NFVA0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9VU1JfQ05UUkxfMl9VU1JfREVD SU1BVElPTl9NX0dFVAlVUFBFUjE2X0dFVA0KPiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9VU1Jf Q05UUkxfMl9VU1JfREVDSU1BVElPTl9OX01TSwlMT1dFUjE2X01TSw0KPiA+ID4gKyNkZWZpbmUg ICBSRUdfQ0hBTl9VU1JfQ05UUkxfMl9VU1JfREVDSU1BVElPTl9OX1NFVAlMT1dFUjE2X1NFVA0K PiA+ID4gKyNkZWZpbmUgICBSRUdfQ0hBTl9VU1JfQ05UUkxfMl9VU1JfREVDSU1BVElPTl9OX0dF VAlMT1dFUjE2X0dFVA0KPiA+ID4gKw0KPiA+ID4gKy8qIElPIERlbGF5IGNvbnRyb2xzICovDQo+ ID4gPiArI2RlZmluZSBfX1JFR19ERUxBWV9DT05UUk9MKGJhc2UsIGxhbmUpCQkoKGJhc2UpICsg KChsYW5lKSAqDQo+ID4gPiAweDA0KSkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFJFR19ERUxB WV9DT05UUk9MKGxhbmUpCQkJXA0KPiA+ID4gKwkJCV9fUkVHX0RFTEFZX0NPTlRST0woMHgwODAw LCBsYW5lKQ0KPiA+ID4gKyNkZWZpbmUgICAgUkVHX0RFTEFZX0NPTlRST0xfTVNLCQlMT1dFUjVf TVNLDQo+ID4gPiArI2RlZmluZSAgICBSRUdfREVMQVlfQ09OVFJPTF9TRVQJCUxPV0VSNV9TRVQN Cj4gPiA+ICsjZGVmaW5lICAgIFJFR19ERUxBWV9DT05UUk9MX0dFVAkJTE9XRVI1X0dFVA0KPiA+ ID4gKw0KPiA+ID4gK3N0cnVjdCBhZGlfYXhpX2FkY19jb3JlX2luZm8gew0KPiA+ID4gKwl1bnNp Z25lZCBpbnQJCQkJdmVyc2lvbjsNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0cnVjdCBh ZGlfYXhpX2FkY19zdGF0ZSB7DQo+ID4gPiArCXN0cnVjdCBtdXRleAkJCQlsb2NrOw0KPiA+ID4g Kw0KPiA+ID4gKwlzdHJ1Y3QgYWRpX2F4aV9hZGNfY2xpZW50CQkqY2xpZW50Ow0KPiA+ID4gKwl2 b2lkIF9faW9tZW0JCQkJKnJlZ3M7DQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdHJ1Y3Qg YWRpX2F4aV9hZGNfY2xpZW50IHsNCj4gPiA+ICsJc3RydWN0IGxpc3RfaGVhZAkJCWVudHJ5Ow0K PiA+ID4gKwlzdHJ1Y3QgYWRpX2F4aV9hZGNfY29udgkJCWNvbnY7DQo+ID4gPiArCXN0cnVjdCBh ZGlfYXhpX2FkY19zdGF0ZQkJKnN0YXRlOw0KPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlCQkJCSpkZXY7 DQo+ID4gPiArCWNvbnN0IHN0cnVjdCBhZGlfYXhpX2FkY19jb3JlX2luZm8JKmluZm87DQo+ID4g PiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgTElTVF9IRUFEKHJlZ2lzdGVyZWRfY2xpZW50 cyk7DQo+ID4gPiArc3RhdGljIERFRklORV9NVVRFWChyZWdpc3RlcmVkX2NsaWVudHNfbG9jayk7 DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHN0cnVjdCBhZGlfYXhpX2FkY19jbGllbnQgKmNvbnZf dG9fY2xpZW50KHN0cnVjdCBhZGlfYXhpX2FkY19jb252DQo+ID4gPiAqY29udikNCj4gPiA+ICt7 DQo+ID4gPiArCWlmICghY29udikNCj4gPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ID4gKwlyZXR1 cm4gY29udGFpbmVyX29mKGNvbnYsIHN0cnVjdCBhZGlfYXhpX2FkY19jbGllbnQsIGNvbnYpOw0K PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICt2b2lkICphZGlfYXhpX2FkY19jb252X3ByaXYoc3Ry dWN0IGFkaV9heGlfYWRjX2NvbnYgKmNvbnYpDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgYWRp X2F4aV9hZGNfY2xpZW50ICpjbCA9IGNvbnZfdG9fY2xpZW50KGNvbnYpOw0KPiA+ID4gKw0KPiA+ ID4gKwlpZiAoIWNsKQ0KPiA+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gPiArDQo+ID4gPiArCXJl dHVybiAoY2hhciAqKWNsICsgQUxJR04oc2l6ZW9mKHN0cnVjdCBhZGlfYXhpX2FkY19jbGllbnQp LCBJSU9fQUxJR04pOw0KPiA+ID4gK30NCj4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChhZGlfYXhp X2FkY19jb252X3ByaXYpOw0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyB2b2lkIGFkaV9heGlfYWRj X3dyaXRlKHN0cnVjdCBhZGlfYXhpX2FkY19zdGF0ZSAqc3QsDQo+ID4gPiArCQkJICAgICAgdW5z aWduZWQgaW50IHJlZywNCj4gPiA+ICsJCQkgICAgICB1bnNpZ25lZCBpbnQgdmFsKQ0KPiA+ID4g K3sNCj4gPiA+ICsJaW93cml0ZTMyKHZhbCwgc3QtPnJlZ3MgKyByZWcpOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IGFkaV9heGlfYWRjX3JlYWQoc3RydWN0 IGFkaV9heGlfYWRjX3N0YXRlICpzdCwNCj4gPiA+ICsJCQkJICAgICB1bnNpZ25lZCBpbnQgcmVn KQ0KPiA+ID4gK3sNCj4gPiA+ICsJcmV0dXJuIGlvcmVhZDMyKHN0LT5yZWdzICsgcmVnKTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGludCBhZGlfYXhpX2FkY19jb25maWdfZG1h X2J1ZmZlcihzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gPiArCQkJCQkgc3RydWN0IGlpb19kZXYg KmluZGlvX2RldikNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBpaW9fYnVmZmVyICpidWZmZXI7 DQo+ID4gPiArCWNvbnN0IGNoYXIgKmRtYV9uYW1lOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoIWRl dmljZV9wcm9wZXJ0eV9wcmVzZW50KGRldiwgImRtYXMiKSkNCj4gPiA+ICsJCXJldHVybiAwOw0K PiA+ID4gKw0KPiA+ID4gKwlpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldiwgImRt YS1uYW1lcyIsICZkbWFfbmFtZSkpDQo+ID4gPiArCQlkbWFfbmFtZSA9ICJyeCI7DQo+ID4gPiAr DQo+ID4gPiArCWJ1ZmZlciA9IGRldm1faWlvX2RtYWVuZ2luZV9idWZmZXJfYWxsb2MoaW5kaW9f ZGV2LT5kZXYucGFyZW50LA0KPiA+ID4gKwkJCQkJCSBkbWFfbmFtZSk7DQo+ID4gPiArCWlmIChJ U19FUlIoYnVmZmVyKSkNCj4gPiA+ICsJCXJldHVybiBQVFJfRVJSKGJ1ZmZlcik7DQo+ID4gPiAr DQo+ID4gPiArCWluZGlvX2Rldi0+bW9kZXMgfD0gSU5ESU9fQlVGRkVSX0hBUkRXQVJFOw0KPiA+ ID4gKwlpaW9fZGV2aWNlX2F0dGFjaF9idWZmZXIoaW5kaW9fZGV2LCBidWZmZXIpOw0KPiA+ID4g Kw0KPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGlu dCBhZGlfYXhpX2FkY19yZWFkX3JhdyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiA+ID4g KwkJCQlzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBjb25zdCAqY2hhbiwNCj4gPiA+ICsJCQkJaW50ICp2 YWwsIGludCAqdmFsMiwgbG9uZyBtYXNrKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGFkaV9h eGlfYWRjX3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4gPiArCXN0cnVjdCBh ZGlfYXhpX2FkY19jb252ICpjb252ID0gJnN0LT5jbGllbnQtPmNvbnY7DQo+ID4gPiArDQo+ID4g PiArCWlmICghY29udi0+cmVhZF9yYXcpDQo+ID4gPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQo+ ID4gPiArDQo+ID4gPiArCXJldHVybiBjb252LT5yZWFkX3Jhdyhjb252LCBjaGFuLCB2YWwsIHZh bDIsIG1hc2spOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgaW50IGFkaV9heGlf YWRjX3dyaXRlX3JhdyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiA+ID4gKwkJCQkgc3Ry dWN0IGlpb19jaGFuX3NwZWMgY29uc3QgKmNoYW4sDQo+ID4gPiArCQkJCSBpbnQgdmFsLCBpbnQg dmFsMiwgbG9uZyBtYXNrKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGFkaV9heGlfYWRjX3N0 YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4gPiArCXN0cnVjdCBhZGlfYXhpX2Fk Y19jb252ICpjb252ID0gJnN0LT5jbGllbnQtPmNvbnY7DQo+ID4gPiArDQo+ID4gPiArCWlmICgh Y29udi0+d3JpdGVfcmF3KQ0KPiA+ID4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+ID4gKw0K PiA+ID4gKwlyZXR1cm4gY29udi0+d3JpdGVfcmF3KGNvbnYsIGNoYW4sIHZhbCwgdmFsMiwgbWFz ayk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWRpX2F4aV9hZGNfdXBk YXRlX3NjYW5fbW9kZShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiA+ID4gKwkJCQkJY29u c3QgdW5zaWduZWQgbG9uZyAqc2Nhbl9tYXNrKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGFk aV9heGlfYWRjX3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4gPiArCXN0cnVj dCBhZGlfYXhpX2FkY19jb252ICpjb252ID0gJnN0LT5jbGllbnQtPmNvbnY7DQo+ID4gPiArCXVu c2lnbmVkIGludCBpLCBjdHJsOw0KPiA+ID4gKw0KPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgY29u di0+Y2hpcF9pbmZvLT5udW1fY2hhbm5lbHM7IGkrKykgew0KPiA+ID4gKwkJY3RybCA9IGFkaV9h eGlfYWRjX3JlYWQoc3QsIFJFR19DSEFOX0NOVFJMKGkpKTsNCj4gPiA+ICsNCj4gPiA+ICsJCWlm ICh0ZXN0X2JpdChpLCBzY2FuX21hc2spKQ0KPiA+ID4gKwkJCWN0cmwgfD0gUkVHX0NIQU5fQ05U UkxfRU5BQkxFOw0KPiA+ID4gKwkJZWxzZQ0KPiA+ID4gKwkJCWN0cmwgJj0gflJFR19DSEFOX0NO VFJMX0VOQUJMRTsNCj4gPiA+ICsNCj4gPiA+ICsJCWFkaV9heGlfYWRjX3dyaXRlKHN0LCBSRUdf Q0hBTl9DTlRSTChpKSwgY3RybCk7DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJu IDA7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgYWRpX2F4aV9hZGNf Y29udiAqYWRpX2F4aV9hZGNfY29udl9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlDQo+ID4gPiAqZGV2 LA0KPiA+ID4gKwkJCQkJCQkgIGludCBzaXplb2ZfcHJpdikNCj4gPiA+ICt7DQo+ID4gPiArCXN0 cnVjdCBhZGlfYXhpX2FkY19jbGllbnQgKmNsOw0KPiA+ID4gKwlzaXplX3QgYWxsb2Nfc2l6ZTsN Cj4gPiA+ICsNCj4gPiA+ICsJYWxsb2Nfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYWRpX2F4aV9hZGNf Y2xpZW50KTsNCj4gPiA+ICsJaWYgKHNpemVvZl9wcml2KSB7DQo+ID4gPiArCQlhbGxvY19zaXpl ID0gQUxJR04oYWxsb2Nfc2l6ZSwgSUlPX0FMSUdOKTsNCj4gPiA+ICsJCWFsbG9jX3NpemUgKz0g c2l6ZW9mX3ByaXY7DQo+ID4gPiArCX0NCj4gPiA+ICsJYWxsb2Nfc2l6ZSArPSBJSU9fQUxJR04g LSAxOw0KPiA+ID4gKw0KPiA+ID4gKwljbCA9IGt6YWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tFUk5F TCk7DQo+ID4gPiArCWlmICghY2wpDQo+ID4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsN Cj4gPiA+ICsNCj4gPiA+ICsJbXV0ZXhfbG9jaygmcmVnaXN0ZXJlZF9jbGllbnRzX2xvY2spOw0K PiA+ID4gKw0KPiA+ID4gKwlnZXRfZGV2aWNlKGRldik7DQo+ID4gPiArCWNsLT5kZXYgPSBkZXY7 DQo+ID4gPiArDQo+ID4gPiArCWxpc3RfYWRkX3RhaWwoJmNsLT5lbnRyeSwgJnJlZ2lzdGVyZWRf Y2xpZW50cyk7DQo+ID4gPiArDQo+ID4gPiArCW11dGV4X3VubG9jaygmcmVnaXN0ZXJlZF9jbGll bnRzX2xvY2spOw0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4gJmNsLT5jb252Ow0KPiA+ID4gK30N Cj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdm9pZCBhZGlfYXhpX2FkY19jb252X3VucmVnaXN0ZXIo c3RydWN0IGFkaV9heGlfYWRjX2NvbnYgKmNvbnYpDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3Qg YWRpX2F4aV9hZGNfY2xpZW50ICpjbCA9IGNvbnZfdG9fY2xpZW50KGNvbnYpOw0KPiA+ID4gKw0K PiA+ID4gKwlpZiAoIWNsKQ0KPiA+ID4gKwkJcmV0dXJuOw0KPiA+ID4gKw0KPiA+ID4gKwltdXRl eF9sb2NrKCZyZWdpc3RlcmVkX2NsaWVudHNfbG9jayk7DQo+ID4gPiArDQo+ID4gPiArCXB1dF9k ZXZpY2UoY2wtPmRldik7DQo+ID4gPiArCWxpc3RfZGVsKCZjbC0+ZW50cnkpOw0KPiA+IFRoaXMg aXNuJ3QgcmV2ZXJzZSBvZiByZWdpc3Rlci4gIFdoeT8NCj4gPiBTaG91bGQgYmUgbGlzdF9kZWwg dGhlbiBwdXRfZGV2aWNlLg0KPiA+IA0KPiA+ID4gKwlrZnJlZShjbCk7DQo+ID4gDQo+ID4gVG8g cmV2ZXJzZSB0aGUgcmVnaXN0ZXIgcHJlY2lzZWx5IHRoZSBrZnJlZShjbCkgc2hvdWxkIGJlIG91 dHNpZGUNCj4gPiB0aGUgbG9jay4uLg0KPiANCj4geWVhaDsgaSB3YXMgYSBiaXQgY2FyZWxlc3Mv cmVsYXhlZCB3aGVuIHdyaXRpbmcgdGhpcyBiaXQgb2YgY29kZTsNCj4gd2lsbCB1cGRhdGU7DQo+ IA0KPiA+ID4gKw0KPiA+ID4gKwltdXRleF91bmxvY2soJnJlZ2lzdGVyZWRfY2xpZW50c19sb2Nr KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQgZGV2bV9hZGlfYXhpX2Fk Y19jb252X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMpDQo+ID4gPiArew0K PiA+ID4gKwlhZGlfYXhpX2FkY19jb252X3VucmVnaXN0ZXIoKihzdHJ1Y3QgYWRpX2F4aV9hZGNf Y29udiAqKilyZXMpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdHJ1Y3QgYWRpX2F4aV9h ZGNfY29udiAqZGV2bV9hZGlfYXhpX2FkY19jb252X3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UNCj4g PiA+ICpkZXYsDQo+ID4gPiArCQkJCQkJCWludCBzaXplb2ZfcHJpdikNCj4gPiA+ICt7DQo+ID4g PiArCXN0cnVjdCBhZGlfYXhpX2FkY19jb252ICoqcHRyLCAqY29udjsNCj4gPiA+ICsNCj4gPiA+ ICsJcHRyID0gZGV2cmVzX2FsbG9jKGRldm1fYWRpX2F4aV9hZGNfY29udl9yZWxlYXNlLCBzaXpl b2YoKnB0ciksDQo+ID4gPiArCQkJICAgR0ZQX0tFUk5FTCk7DQo+ID4gPiArCWlmICghcHRyKQ0K PiA+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+ID4gPiArDQo+ID4gPiArCWNvbnYg PSBhZGlfYXhpX2FkY19jb252X3JlZ2lzdGVyKGRldiwgc2l6ZW9mX3ByaXYpOw0KPiA+ID4gKwlp ZiAoSVNfRVJSKGNvbnYpKSB7DQo+ID4gPiArCQlkZXZyZXNfZnJlZShwdHIpOw0KPiA+ID4gKwkJ cmV0dXJuIEVSUl9DQVNUKGNvbnYpOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArCSpwdHIg PSBjb252Ow0KPiA+ID4gKwlkZXZyZXNfYWRkKGRldiwgcHRyKTsNCj4gPiA+ICsNCj4gPiA+ICsJ cmV0dXJuIGNvbnY7DQo+ID4gPiArfQ0KPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGRldm1fYWRp X2F4aV9hZGNfY29udl9yZWdpc3Rlcik7DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHNzaXplX3Qg aW5fdm9sdGFnZV9zY2FsZV9hdmFpbGFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4g PiArCQkJCQkgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsDQo+ID4gPiArCQkJ CQkgICAgICAgY2hhciAqYnVmKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGlpb19kZXYgKmlu ZGlvX2RldiA9IGRldl90b19paW9fZGV2KGRldik7DQo+ID4gPiArCXN0cnVjdCBhZGlfYXhpX2Fk Y19zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiA+ID4gKwlzdHJ1Y3QgYWRpX2F4 aV9hZGNfY29udiAqY29udiA9ICZzdC0+Y2xpZW50LT5jb252Ow0KPiA+ID4gKwlzaXplX3QgbGVu ID0gMDsNCj4gPiA+ICsJaW50IGk7DQo+ID4gPiArDQo+ID4gPiArCWlmICghY29udi0+Y2hpcF9p bmZvLT5udW1fc2NhbGVzKSB7DQo+ID4gPiArCQlidWZbMF0gPSAnXG4nOw0KPiA+ID4gKwkJcmV0 dXJuIDE7DQo+ID4gDQo+ID4gSSdkIHByZWZlciB0byBzZWUgdGhpcyBkb25lIHVzaW5nIHRoZSBj b3JlIGF2YWlsYWJsZSBoYW5kbGluZy4NCj4gPiBUaGF0IHdheSBkcml2ZXJzIHRoYXQgZG9uJ3Qg cHJvdmlkZSB0aGlzIHdvdWxkIGp1c3Qgbm90IHJlZ2lzdGVyDQo+ID4gaXQgaW4gdGhlIGZpcnN0 IHBsYWNlLiBJdCB3aWxsIGJlIGEgY2hhcmFjdGVyaXN0aWMgb2YgdGhlIGNoYW5uZWxzLg0KPiAN Cj4gYWNrDQo+IHdpbGwgdGFrZSBhIGxvb2sgY2xvc2VyIGhlcmU7DQo+IGkgYW0gYSBiaXQgdmFn dWUgW2F0IHRoaXMgcG9pbnRdIG9uIGhvdyB0byBkbyBpdDsgYnV0IGknbGwgZmlndXJlIGl0IG91 dA0KPiANCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgY29udi0+ Y2hpcF9pbmZvLT5udW1fc2NhbGVzOyBpKyspIHsNCj4gPiA+ICsJCWNvbnN0IHVuc2lnbmVkIGlu dCAqcyA9IGNvbnYtPmNoaXBfaW5mby0+c2NhbGVfdGFibGVbaV07DQo+ID4gPiArDQo+ID4gPiAr CQlsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgUEFHRV9TSVpFIC0gbGVuLA0KPiA+ID4gKwkJ CQkgIiV1LiUwNnUgIiwgc1swXSwgc1sxXSk7DQo+ID4gPiArCX0NCj4gPiA+ICsJYnVmW2xlbiAt IDFdID0gJ1xuJzsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIGxlbjsNCj4gPiA+ICt9DQo+ID4g PiArDQo+ID4gPiArc3RhdGljIElJT19ERVZJQ0VfQVRUUl9STyhpbl92b2x0YWdlX3NjYWxlX2F2 YWlsYWJsZSwgMCk7DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFk aV9heGlfYWRjX2F0dHJpYnV0ZXNbXSA9IHsNCj4gPiA+ICsJJmlpb19kZXZfYXR0cl9pbl92b2x0 YWdlX3NjYWxlX2F2YWlsYWJsZS5kZXZfYXR0ci5hdHRyLA0KPiA+ID4gKwlOVUxMLA0KPiA+ID4g K307DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAg YWRpX2F4aV9hZGNfYXR0cmlidXRlX2dyb3VwID0gew0KPiA+ID4gKwkuYXR0cnMgPSBhZGlfYXhp X2FkY19hdHRyaWJ1dGVzLA0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBpaW9faW5mbyBhZGlfYXhpX2FkY19pbmZvID0gew0KPiA+ID4gKwkucmVhZF9yYXcg PSAmYWRpX2F4aV9hZGNfcmVhZF9yYXcsDQo+ID4gPiArCS53cml0ZV9yYXcgPSAmYWRpX2F4aV9h ZGNfd3JpdGVfcmF3LA0KPiA+ID4gKwkuYXR0cnMgPSAmYWRpX2F4aV9hZGNfYXR0cmlidXRlX2dy b3VwLA0KPiA+ID4gKwkudXBkYXRlX3NjYW5fbW9kZSA9ICZhZGlfYXhpX2FkY191cGRhdGVfc2Nh bl9tb2RlLA0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBh ZGlfYXhpX2FkY19jb3JlX2luZm8gYWRpX2F4aV9hZGNfMTBfMF9hX2luZm8gPSB7DQo+ID4gPiAr CS52ZXJzaW9uID0gQURJX0FYSV9QQ09SRV9WRVIoMTAsIDAsICdhJyksDQo+ID4gPiArfTsNCj4g PiA+ICsNCj4gPiA+ICsvKiBNYXRjaCB0YWJsZSBmb3Igb2ZfcGxhdGZvcm0gYmluZGluZyAqLw0K PiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFkaV9heGlfYWRjX29mX21h dGNoW10gPSB7DQo+ID4gPiArCXsgLmNvbXBhdGlibGUgPSAiYWRpLGF4aS1hZGMtMTAuMC5hIiwg LmRhdGEgPSAmYWRpX2F4aV9hZGNfMTBfMF9hX2luZm8NCj4gPiA+IH0sDQo+ID4gPiArCXsgLyog ZW5kIG9mIGxpc3QgKi8gfSwNCj4gPiA+ICt9Ow0KPiA+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUo b2YsIGFkaV9heGlfYWRjX29mX21hdGNoKTsNCj4gPiA+ICsNCj4gPiA+ICtzdHJ1Y3QgYWRpX2F4 aV9hZGNfY2xpZW50ICphZGlfYXhpX2FkY19hdHRhY2hfY2xpZW50KHN0cnVjdCBkZXZpY2UgKmRl dikNCj4gPiA+ICt7DQo+ID4gPiArCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKmlkOw0KPiA+ ID4gKwlzdHJ1Y3QgYWRpX2F4aV9hZGNfY2xpZW50ICpjbDsNCj4gPiA+ICsJc3RydWN0IGRldmlj ZV9ub2RlICpjbG47DQo+ID4gPiArDQo+ID4gPiArCWlmICghZGV2LT5vZl9ub2RlKSB7DQo+ID4g PiArCQlkZXZfZXJyKGRldiwgIkRUIG5vZGUgaXMgbnVsbFxuIik7DQo+ID4gPiArCQlyZXR1cm4g RVJSX1BUUigtRU5PREVWKTsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlpZCA9IG9mX21h dGNoX25vZGUoYWRpX2F4aV9hZGNfb2ZfbWF0Y2gsIGRldi0+b2Zfbm9kZSk7DQo+ID4gPiArCWlm ICghaWQpDQo+ID4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsNCj4gPiA+ICsNCj4gPiA+ ICsJY2xuID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtPm9mX25vZGUsICJhZGksYWRjLWRldiIsIDAp Ow0KPiA+ID4gKwlpZiAoIWNsbikgew0KPiA+ID4gKwkJZGV2X2VycihkZXYsICJObyAnYWRpLGFk Yy1kZXYnIG5vZGUgZGVmaW5lZFxuIik7DQo+ID4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVW KTsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwltdXRleF9sb2NrKCZyZWdpc3RlcmVkX2Ns aWVudHNfbG9jayk7DQo+ID4gPiArDQo+ID4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY2wsICZy ZWdpc3RlcmVkX2NsaWVudHMsIGVudHJ5KSB7DQo+ID4gPiArCQlpZiAoIWNsLT5kZXYpDQo+ID4g PiArCQkJY29udGludWU7DQo+ID4gPiArCQlpZiAoY2wtPmRldi0+b2Zfbm9kZSA9PSBjbG4pIHsN Cj4gPiA+ICsJCQlpZiAoIXRyeV9tb2R1bGVfZ2V0KGRldi0+ZHJpdmVyLT5vd25lcikpIHsNCj4g PiA+ICsJCQkJbXV0ZXhfdW5sb2NrKCZyZWdpc3RlcmVkX2NsaWVudHNfbG9jayk7DQo+ID4gPiAr CQkJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOw0KPiA+ID4gKwkJCX0NCj4gPiA+ICsJCQlnZXRf ZGV2aWNlKGRldik7DQo+ID4gPiArCQkJY2wtPmluZm8gPSBpZC0+ZGF0YTsNCj4gPiA+ICsJCQlt dXRleF91bmxvY2soJnJlZ2lzdGVyZWRfY2xpZW50c19sb2NrKTsNCj4gPiA+ICsJCQlyZXR1cm4g Y2w7DQo+ID4gPiArCQl9DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJbXV0ZXhfdW5sb2Nr KCZyZWdpc3RlcmVkX2NsaWVudHNfbG9jayk7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiBFUlJf UFRSKC1FUFJPQkVfREVGRVIpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgaW50 IGFkaV9heGlfYWRjX3NldHVwX2NoYW5uZWxzKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiA+ICsJ CQkJICAgICAgc3RydWN0IGFkaV9heGlfYWRjX3N0YXRlICpzdCkNCj4gPiA+ICt7DQo+ID4gPiAr CXN0cnVjdCBhZGlfYXhpX2FkY19jb252ICpjb252ID0gY29udiA9ICZzdC0+Y2xpZW50LT5jb252 Ow0KPiA+ID4gKwl1bnNpZ25lZCBpbnQgdmFsOw0KPiA+ID4gKwlpbnQgaSwgcmV0Ow0KPiA+ID4g Kw0KPiA+ID4gKwlpZiAoY29udi0+cHJlZW5hYmxlX3NldHVwKSB7DQo+ID4gPiArCQlyZXQgPSBj b252LT5wcmVlbmFibGVfc2V0dXAoY29udik7DQo+ID4gPiArCQlpZiAocmV0KQ0KPiA+ID4gKwkJ CXJldHVybiByZXQ7DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8 IGNvbnYtPmNoaXBfaW5mby0+bnVtX2NoYW5uZWxzOyBpKyspIHsNCj4gPiA+ICsJCWlmIChpICYg MSkNCj4gPiA+ICsJCQl2YWwgPSBSRUdfQ0hBTl9DTlRSTF8yX0lRQ09SX0NPRUZGXzJfU0VUKElR Q09SX0lOVF8xKTsNCj4gPiA+ICsJCWVsc2UNCj4gPiA+ICsJCQl2YWwgPSBSRUdfQ0hBTl9DTlRS TF8yX0lRQ09SX0NPRUZGXzFfU0VUKElRQ09SX0lOVF8xKTsNCj4gPiA+ICsJCWFkaV9heGlfYWRj X3dyaXRlKHN0LCBSRUdfQ0hBTl9DTlRSTF8yKGkpLCB2YWwpOw0KPiA+ID4gKw0KPiA+ID4gKwkJ YWRpX2F4aV9hZGNfd3JpdGUoc3QsIFJFR19DSEFOX0NOVFJMKGkpLA0KPiA+ID4gKwkJCVJFR19D SEFOX0NOVFJMX0RFRkFVTFRTKTsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4g MDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQgYXhpX2FkY19yZXNldChz dHJ1Y3QgYWRpX2F4aV9hZGNfc3RhdGUgKnN0KQ0KPiA+ID4gK3sNCj4gPiA+ICsJYWRpX2F4aV9h ZGNfd3JpdGUoc3QsIFJFR19SU1ROLCAwKTsNCj4gPiA+ICsJbWRlbGF5KDEwKTsNCj4gPiA+ICsJ YWRpX2F4aV9hZGNfd3JpdGUoc3QsIFJFR19SU1ROLCBSRUdfUlNUTl9NTUNNX1JTVE4pOw0KPiA+ ID4gKwltZGVsYXkoMTApOw0KPiA+ID4gKwlhZGlfYXhpX2FkY193cml0ZShzdCwgUkVHX1JTVE4s DQo+ID4gPiArCQkJICBSRUdfUlNUTl9SU1ROIHwgUkVHX1JTVE5fTU1DTV9SU1ROKTsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQgYWRpX2F4aV9hZGNfY2xlYW51cCh2b2lk ICpkYXRhKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGFkaV9heGlfYWRjX2NsaWVudCAqY2wg PSBkYXRhOw0KPiA+ID4gKw0KPiA+ID4gKwlwdXRfZGV2aWNlKGNsLT5kZXYpOw0KPiA+ID4gKwlt b2R1bGVfcHV0KGNsLT5kZXYtPmRyaXZlci0+b3duZXIpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICtzdGF0aWMgaW50IGFkaV9heGlfYWRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgYWRpX2F4aV9hZGNfY29udiAqY29udjsN Cj4gPiA+ICsJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldjsNCj4gPiA+ICsJc3RydWN0IGFkaV9h eGlfYWRjX2NsaWVudCAqY2w7DQo+ID4gPiArCXN0cnVjdCBhZGlfYXhpX2FkY19zdGF0ZSAqc3Q7 DQo+ID4gPiArCXVuc2lnbmVkIGludCB2ZXI7DQo+ID4gPiArCWludCByZXQ7DQo+ID4gPiArDQo+ ID4gPiArCWNsID0gYWRpX2F4aV9hZGNfYXR0YWNoX2NsaWVudCgmcGRldi0+ZGV2KTsNCj4gPiA+ ICsJaWYgKElTX0VSUihjbCkpDQo+ID4gPiArCQlyZXR1cm4gUFRSX0VSUihjbCk7DQo+ID4gPiAr DQo+ID4gPiArCXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldCgmcGRldi0+ZGV2LCBhZGlf YXhpX2FkY19jbGVhbnVwLCBjbCk7DQo+ID4gPiArCWlmIChyZXQpDQo+ID4gPiArCQlyZXR1cm4g cmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwlpbmRpb19kZXYgPSBkZXZtX2lpb19kZXZpY2VfYWxsb2Mo JnBkZXYtPmRldiwgc2l6ZW9mKCpzdCkpOw0KPiA+ID4gKwlpZiAoaW5kaW9fZGV2ID09IE5VTEwp DQo+ID4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiA+ICsNCj4gPiA+ICsJc3QgPSBpaW9fcHJp dihpbmRpb19kZXYpOw0KPiA+ID4gKwlzdC0+Y2xpZW50ID0gY2w7DQo+ID4gPiArCWNsLT5zdGF0 ZSA9IHN0Ow0KPiA+ID4gKwltdXRleF9pbml0KCZzdC0+bG9jayk7DQo+ID4gPiArDQo+ID4gPiAr CXN0LT5yZWdzID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOw0KPiA+ ID4gKwlpZiAoSVNfRVJSKHN0LT5yZWdzKSkNCj4gPiA+ICsJCXJldHVybiBQVFJfRVJSKHN0LT5y ZWdzKTsNCj4gPiA+ICsNCj4gPiA+ICsJY29udiA9ICZzdC0+Y2xpZW50LT5jb252Ow0KPiA+ID4g Kw0KPiA+ID4gKwlheGlfYWRjX3Jlc2V0KHN0KTsNCj4gPiA+ICsNCj4gPiA+ICsJdmVyID0gYWRp X2F4aV9hZGNfcmVhZChzdCwgQURJX0FYSV9SRUdfVkVSU0lPTik7DQo+ID4gPiArDQo+ID4gPiAr CWlmIChjbC0+aW5mby0+dmVyc2lvbiA+IHZlcikgew0KPiA+ID4gKwkJZGV2X2VycigmcGRldi0+ ZGV2LA0KPiA+ID4gKwkJCSJJUCBjb3JlIHZlcnNpb24gaXMgdG9vIG9sZC4gRXhwZWN0ZWQgJWQu JS4yZC4lYywNCj4gPiA+IFJlcG9ydGVkICVkLiUuMmQuJWNcbiIsDQo+ID4gPiArCQkJQURJX0FY SV9QQ09SRV9WRVJfTUFKT1IoY2wtPmluZm8tPnZlcnNpb24pLA0KPiA+ID4gKwkJCUFESV9BWElf UENPUkVfVkVSX01JTk9SKGNsLT5pbmZvLT52ZXJzaW9uKSwNCj4gPiA+ICsJCQlBRElfQVhJX1BD T1JFX1ZFUl9QQVRDSChjbC0+aW5mby0+dmVyc2lvbiksDQo+ID4gPiArCQkJQURJX0FYSV9QQ09S RV9WRVJfTUFKT1IodmVyKSwNCj4gPiA+ICsJCQlBRElfQVhJX1BDT1JFX1ZFUl9NSU5PUih2ZXIp LA0KPiA+ID4gKwkJCUFESV9BWElfUENPUkVfVkVSX1BBVENIKHZlcikpOw0KPiA+ID4gKwkJcmV0 dXJuIC1FTk9ERVY7DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJaW5kaW9fZGV2LT5pbmZv ID0gJmFkaV9heGlfYWRjX2luZm87DQo+ID4gPiArCWluZGlvX2Rldi0+ZGV2LnBhcmVudCA9ICZw ZGV2LT5kZXY7DQo+ID4gPiArCWluZGlvX2Rldi0+bmFtZSA9IGRldl9uYW1lKCZwZGV2LT5kZXYp Ow0KPiA+IA0KPiA+IFdoYXQgZG9lcyB0aGlzIHJlc3VsdCBpbj8gIEdpdmVuIHRoaXMgaXMgc3Vw cG9zZWQgdG8gYmUgYSBwYXJ0IG51bWJlcg0KPiA+IEkga2luZCBvZiBleHBlY3RlZCB0aGlzIHRv IGJlIGhhcmRjb2RlZCB0byAiYWRpLWF4aS1hZGMiIG9yIHNpbWlsYXIuDQo+IA0KPiBhY2s7DQo+ ICJhZGktYXhpLWFkYyIgaXQgaXMNCj4gDQo+IA0KPiA+ID4gKwlpbmRpb19kZXYtPm1vZGVzID0g SU5ESU9fRElSRUNUX01PREU7DQo+ID4gPiArCWluZGlvX2Rldi0+bnVtX2NoYW5uZWxzID0gY29u di0+Y2hpcF9pbmZvLT5udW1fY2hhbm5lbHM7DQo+ID4gPiArCWluZGlvX2Rldi0+Y2hhbm5lbHMg PSBjb252LT5jaGlwX2luZm8tPmNoYW5uZWxzOw0KPiA+ID4gKw0KPiA+ID4gKwlyZXQgPSBhZGlf YXhpX2FkY19jb25maWdfZG1hX2J1ZmZlcigmcGRldi0+ZGV2LCBpbmRpb19kZXYpOw0KPiA+ID4g KwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0ID0g YWRpX2F4aV9hZGNfc2V0dXBfY2hhbm5lbHMoJnBkZXYtPmRldiwgc3QpOw0KPiA+ID4gKwlpZiAo cmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0ID0gZGV2bV9p aW9fZGV2aWNlX3JlZ2lzdGVyKCZwZGV2LT5kZXYsIGluZGlvX2Rldik7DQo+ID4gPiArCWlmIChy ZXQpDQo+ID4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwlkZXZfaW5mbygmcGRl di0+ZGV2LCAiQVhJIEFEQyBJUCBjb3JlICglZC4lLjJkLiVjKSBwcm9iZWRcbiIsDQo+ID4gPiAr CQlBRElfQVhJX1BDT1JFX1ZFUl9NQUpPUih2ZXIpLA0KPiA+ID4gKwkJQURJX0FYSV9QQ09SRV9W RVJfTUlOT1IodmVyKSwNCj4gPiA+ICsJCUFESV9BWElfUENPUkVfVkVSX1BBVENIKHZlcikpOw0K PiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3Rh dGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWRpX2F4aV9hZGNfZHJpdmVyID0gew0KPiA+ID4g KwkuZHJpdmVyID0gew0KPiA+ID4gKwkJLm5hbWUgPSBLQlVJTERfTU9ETkFNRSwNCj4gPiA+ICsJ CS5vZl9tYXRjaF90YWJsZSA9IGFkaV9heGlfYWRjX29mX21hdGNoLA0KPiA+ID4gKwl9LA0KPiA+ ID4gKwkucHJvYmUgPSBhZGlfYXhpX2FkY19wcm9iZSwNCj4gPiA+ICt9Ow0KPiA+ID4gK21vZHVs ZV9wbGF0Zm9ybV9kcml2ZXIoYWRpX2F4aV9hZGNfZHJpdmVyKTsNCj4gPiA+ICsNCj4gPiA+ICtN T0RVTEVfQVVUSE9SKCJNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9n LmNvbT4iKTsNCj4gPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFuYWxvZyBEZXZpY2VzIEdlbmVy aWMgQVhJIEFEQyBJUCBjb3JlIGRyaXZlciIpOw0KPiA+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwg djIiKTsNCj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lpby9hZGMvYWRpLWF4aS1h ZGMuaA0KPiA+ID4gYi9pbmNsdWRlL2xpbnV4L2lpby9hZGMvYWRpLWF4aS1hZGMuaA0KPiA+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTc5NzQ5NDRi MzBiDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2lpby9h ZGMvYWRpLWF4aS1hZGMuaA0KPiA+ID4gQEAgLTAsMCArMSw2MyBAQA0KPiA+ID4gKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+ID4gPiArLyoNCj4gPiA+ICsgKiBBbmFs b2cgRGV2aWNlcyBHZW5lcmljIEFYSSBBREMgSVAgY29yZSBkcml2ZXIvbGlicmFyeQ0KPiA+ID4g KyAqIExpbms6IGh0dHBzOi8vd2lraS5hbmFsb2cuY29tL3Jlc291cmNlcy9mcGdhL2RvY3MvYXhp X2FkY19pcA0KPiA+ID4gKyAqDQo+ID4gPiArICogQ29weXJpZ2h0IDIwMTItMjAyMCBBbmFsb2cg RGV2aWNlcyBJbmMuDQo+ID4gPiArICovDQo+ID4gPiArI2lmbmRlZiBfX0FESV9BWElfQURDX0hf Xw0KPiA+ID4gKyNkZWZpbmUgX19BRElfQVhJX0FEQ19IX18NCj4gPiA+ICsNCj4gPiA+ICtzdHJ1 Y3QgZGV2aWNlOw0KPiA+ID4gK3N0cnVjdCBpaW9fY2hhbl9zcGVjOw0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAqIHN0cnVjdCBhZGlfYXhpX2FkY19jaGlwX2luZm8gLSBDaGlwIHNwZWNp ZmljIGluZm9ybWF0aW9uDQo+ID4gPiArICogQG5hbWUJCUNoaXAgbmFtZQ0KPiA+ID4gKyAqIEBp ZAkJCUNoaXAgSUQgKHVzdWFsbHkgcHJvZHVjdCBJRCkNCj4gPiA+ICsgKiBAY2hhbm5lbHMJCUNo YW5uZWwgc3BlY2lmaWNhdGlvbnMgb2YgdHlwZSBAc3RydWN0DQo+ID4gPiBheGlfYWRjX2NoYW5f c3BlYw0KPiA+ID4gKyAqIEBudW1fY2hhbm5lbHMJTnVtYmVyIG9mIEBjaGFubmVscw0KPiA+ID4g KyAqIEBzY2FsZV90YWJsZQkJU3VwcG9ydGVkIHNjYWxlcyBieSB0aGUgY2hpcDsgdHVwbGVzIG9m IDIgaW50cw0KPiA+ID4gKyAqIEBudW1fc2NhbGVzCQlOdW1iZXIgb2Ygc2NhbGVzIGluIHRoZSB0 YWJsZQ0KPiA+ID4gKyAqIEBtYXhfcmF0ZQkJTWF4aW11bSBzYW1wbGluZyByYXRlIHN1cHBvcnRl ZCBieSB0aGUgZGV2aWNlDQo+ID4gPiArICovDQo+ID4gPiArc3RydWN0IGFkaV9heGlfYWRjX2No aXBfaW5mbyB7DQo+ID4gPiArCWNvbnN0IGNoYXIJCQkqbmFtZTsNCj4gPiA+ICsJdW5zaWduZWQg aW50CQkJaWQ7DQo+ID4gPiArDQo+ID4gPiArCWNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjCSpj aGFubmVsczsNCj4gPiA+ICsJdW5zaWduZWQgaW50CQkJbnVtX2NoYW5uZWxzOw0KPiA+ID4gKw0K PiA+ID4gKwljb25zdCB1bnNpZ25lZCBpbnQJCSgqc2NhbGVfdGFibGUpWzJdOw0KPiA+ID4gKwlp bnQJCQkJbnVtX3NjYWxlczsNCj4gPiA+ICsNCj4gPiA+ICsJdW5zaWduZWQgbG9uZwkJCW1heF9y YXRlOw0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICogc3RydWN0IGFk aV9heGlfYWRjX2NvbnYgLSBkYXRhIG9mIHRoZSBBREMgYXR0YWNoZWQgdG8gdGhlIEFYSSBBREMN Cj4gPiA+ICsgKiBAY2hpcF9pbmZvCQljaGlwIGluZm8gZGV0YWlscyBmb3IgdGhlIGNsaWVudCBB REMNCj4gPiA+ICsgKiBAcHJlZW5hYmxlX3NldHVwCW9wIHRvIHJ1biBpbiB0aGUgY2xpZW50IGJl Zm9yZSBlbmFibGluZyB0aGUgQVhJDQo+ID4gPiBBREMNCj4gPiANCj4gPiBSdW4gdGhlIGtlcm5l bCBkb2Mgc2NyaXB0IG92ZXIgdGhpcyBhbmQgaXQgd291bGQgaGF2ZSBtb2FuZWQuLi4NCj4gPiAN Cj4gPiBObyByZWdfYWNjZXNzLg0KPiANCj4gYWNrOw0KPiBpJ2xsIG5lZWQgdG8gc3RhcnQgYWRh cHRpbmcgdGhhdCBzY3JpcHQgdG8gc29tZSBDSQ0KPiBpdCdzIG9uIG15IHRvZG8tbGlzdA0KPiAN Cj4gPiA+ICsgKiBAcmVhZF9yYXcJCUlJTyByZWFkX3JhdyBob29rIGZvciB0aGUgY2xpZW50IEFE Qw0KPiA+ID4gKyAqIEB3cml0ZV9yYXcJCUlJTyB3cml0ZV9yYXcgaG9vayBmb3IgdGhlIGNsaWVu dCBBREMNCj4gPiA+ICsgKi8NCj4gPiA+ICtzdHJ1Y3QgYWRpX2F4aV9hZGNfY29udiB7DQo+ID4g PiArCWNvbnN0IHN0cnVjdCBhZGlfYXhpX2FkY19jaGlwX2luZm8JCSpjaGlwX2luZm87DQo+ID4g PiArDQo+ID4gPiArCWludCAoKnByZWVuYWJsZV9zZXR1cCkoc3RydWN0IGFkaV9heGlfYWRjX2Nv bnYgKmNvbnYpOw0KPiA+ID4gKwlpbnQgKCpyZWdfYWNjZXNzKShzdHJ1Y3QgYWRpX2F4aV9hZGNf Y29udiAqY29udiwgdW5zaWduZWQgaW50IHJlZywNCj4gPiA+ICsJCQkgIHVuc2lnbmVkIGludCB3 cml0ZXZhbCwgdW5zaWduZWQgaW50ICpyZWFkdmFsKTsNCj4gPiA+ICsJaW50ICgqcmVhZF9yYXcp KHN0cnVjdCBhZGlfYXhpX2FkY19jb252ICpjb252LA0KPiA+ID4gKwkJCXN0cnVjdCBpaW9fY2hh bl9zcGVjIGNvbnN0ICpjaGFuLA0KPiA+ID4gKwkJCWludCAqdmFsLCBpbnQgKnZhbDIsIGxvbmcg bWFzayk7DQo+ID4gPiArCWludCAoKndyaXRlX3Jhdykoc3RydWN0IGFkaV9heGlfYWRjX2NvbnYg KmNvbnYsDQo+ID4gPiArCQkJIHN0cnVjdCBpaW9fY2hhbl9zcGVjIGNvbnN0ICpjaGFuLA0KPiA+ ID4gKwkJCSBpbnQgdmFsLCBpbnQgdmFsMiwgbG9uZyBtYXNrKTsNCj4gPiA+ICt9Ow0KPiA+ID4g Kw0KPiA+ID4gK3N0cnVjdCBhZGlfYXhpX2FkY19jb252ICpkZXZtX2FkaV9heGlfYWRjX2NvbnZf cmVnaXN0ZXIoc3RydWN0IGRldmljZQ0KPiA+ID4gKmRldiwNCj4gPiA+ICsJCQkJCQkJaW50IHNp emVvZl9wcml2KTsNCj4gPiA+ICsNCj4gPiA+ICt2b2lkICphZGlfYXhpX2FkY19jb252X3ByaXYo c3RydWN0IGFkaV9heGlfYWRjX2NvbnYgKmNvbnYpOw0KPiA+ID4gKw0KPiA+ID4gKyNlbmRpZg0K