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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 D315CC433B4 for ; Mon, 3 May 2021 05:57:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A96A26120D for ; Mon, 3 May 2021 05:57:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229992AbhECF6Y (ORCPT ); Mon, 3 May 2021 01:58:24 -0400 Received: from mail-eopbgr1320094.outbound.protection.outlook.com ([40.107.132.94]:61094 "EHLO APC01-PU1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229820AbhECF6Y (ORCPT ); Mon, 3 May 2021 01:58:24 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IJa2v3dedVfvgfvKG8bFouXIILq4lNVw7RPeg4OoPgxRpCQP7ap2z65MKyXo2TPZTqUOsXDC65W9V8GxlYjyJcXK/WZGbLvqoDvmyCHi/B4PNkh7UdbtSV0zdfiB3aTWHhJ5fGRO2GOeGkKAsYQp12Qb84HzjxeLrrkRcqpC0PDy/mANOamsDmCf5S8scf58qJm4dRL86w/eDMxWarm04/GK4/2fIy2nXEVeCP+6OxzKWQciF+zs3hDip1OZsVnYm6xBoCjy7HoMKqfXGryTid4l6hJsOPAxiwJDOBKy4ErVzUyrpHeOwf/AdyrsgT9abgrsPqt9DIBOVoPgGw3h9Q== 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=hSVw6untLnI+Iym0oXwe6B3oTlAj/z/Y5A2kFf/k5DA=; b=hwB/2tVRkmBmbNaY1cFCd/xvQeQ07zGXBn1Cp3a1dIHgCAIknaMm+9ErHJikYETeP2d2Eru6hzHz/bNBNVJtLEzAnDAuX5rf6Dt0eqjA2RuXSyH1FSPEbxsJKk1NLC1M7fQtFePNcKkl3GEeIjG2chZqhKU44jAbgLfNyswybxs0x94x2wwD/baL/9ryqG0QgCjnRAvyU5xlqVVhdi4JE4feIRxSVtAgsmyg83Oa6jiKe7fSF4Y0jNHUG9Ut6B1EONF354IfCsxQE3N/o7EdK5FJK71iWTrU21P592374g3Vm0JoEOCvZ5i9OLm/uIz6SYGecOeMrpXQt6n8xyzEcQ== 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=hSVw6untLnI+Iym0oXwe6B3oTlAj/z/Y5A2kFf/k5DA=; b=tHxPkDC36vAvGh2+EGlCjwutojCFPh9v/d2eOoL/EMVPZh4T3kjQlmGG6Iq2ExnVRTgE/8tXXgSEghz+CegearxQ0e64pHI+ha4Kf9eNwacXzhss2v++GqzvHKKqcrD0y1VAQCky58U3TZc4w2FqlMKqgxTiTn/tW7TJklOdFH6nDkMD3L4FKKjeX6o40MGQy+obXi1zsmrpijCehuMDl/PK4oIk99qoeE5U5d3xmxG8wTP6vdKvIE1OjVPcOiwdZ8QfB/M2vQaVihcwaNAsT9uvPCae07Xttx8bQfgQAqge5WLGZ2Bz1MCjry21agizNQG/Szcsu32zTP4wXH9cOg== Received: from HK0PR06MB3362.apcprd06.prod.outlook.com (2603:1096:203:8b::10) by HK0PR06MB2548.apcprd06.prod.outlook.com (2603:1096:203:6f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.43; Mon, 3 May 2021 05:57:23 +0000 Received: from HK0PR06MB3362.apcprd06.prod.outlook.com ([fe80::58:9144:f232:6918]) by HK0PR06MB3362.apcprd06.prod.outlook.com ([fe80::58:9144:f232:6918%7]) with mapi id 15.20.4087.038; Mon, 3 May 2021 05:57:23 +0000 From: Billy Tsai To: =?utf-8?B?VXdlIEtsZWluZS1Lw7ZuaWc=?= CC: "lee.jones@linaro.org" , "robh+dt@kernel.org" , "joel@jms.id.au" , "andrew@aj.id.au" , "thierry.reding@gmail.com" , "p.zabel@pengutronix.de" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-aspeed@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" , "linux-pwm@vger.kernel.org" , BMC-SW , "kernel@pengutronix.de" Subject: Re: [v2 2/2] pwm: Add Aspeed ast2600 PWM support Thread-Topic: [v2 2/2] pwm: Add Aspeed ast2600 PWM support Thread-Index: AQHXMRviVuU+Gozbe0iJfWnAjhV+NarHV22AgAp6DYCAABTIAA== Date: Mon, 3 May 2021 05:57:23 +0000 Message-ID: References: <20210414104939.1093-1-billy_tsai@aspeedtech.com> <20210414104939.1093-3-billy_tsai@aspeedtech.com> <20210426204333.gzqke6td33dtugnh@pengutronix.de> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: pengutronix.de; dkim=none (message not signed) header.d=none;pengutronix.de; dmarc=none action=none header.from=aspeedtech.com; x-originating-ip: [211.20.114.70] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0324a154-9a56-473b-6ad5-08d90df85280 x-ms-traffictypediagnostic: HK0PR06MB2548: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4NB6ZinA5XgxK8ABux8NHoondkA2BHWWFz1b1RfSpPnZTLhfsgL2FDeuJeORrs4KFLhusnOSz1hqSmskzONREFaXt+Ef4mtScQUbUctYZJNJGkAcGXtkR7jXw6x8HtdfPGTUhnoqBui0ePHaJe6gn1+TrBNzpA+s/5ZcBUq9ilyPfuBRuBzKctj0NGgEnEeMas24ILK19IaH9vSQj+Sl6osqaQqNojnPXPjviPnAQ1YNXExLyOZ5mNN/iYxPEZmmwiSpRzu+WplcV5wQV3XB3rgLZVCepv87VV2YkaH3d+KlXKxYo6++rHMN0fYpcyB2ys4faF/9c9TZlAjgFZv7AXFueKiqY6XJbSpJLRriIZyfOvQvEltayVUxQVA+juVFHxPO+5dudeLCTS6JOZONC2gR8JBVGtTMKbOVPF3o41V6nn8ZbK7aiBjq7QH0tUT3Ft+tNBFvqwpc7/3Y+HwOXJOfm1a4NooLq0lGjJgvRNGRp1ZDpx1UP09/92rbXKNJZy3Eo8uQJ0OsQKcqGEUHjn/ioJSq7m8bYlJ3W6Q6lU1QSfaceWaQs1QbHcIRcTP9qvPo69taHwFYb3GrJT3ZzSBbhFlDrAwI29GPaln+GpPBKByoIDW27s4ibC1DLW6tx3Faj27WUeKnV/7reiW3imAOshmQJDu+yk/yR0K4atGO3mc+veqebymCs77ZvWY2Ko6oGHWOz+y51owgXkBRqhtyW8MWiBn750KQDmaTuNc= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HK0PR06MB3362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(376002)(346002)(396003)(136003)(366004)(39850400004)(36756003)(76116006)(33656002)(66556008)(66946007)(83380400001)(66574015)(71200400001)(966005)(478600001)(186003)(7416002)(316002)(38100700002)(64756008)(122000001)(8676002)(2616005)(5660300002)(86362001)(54906003)(2906002)(8936002)(26005)(6506007)(6916009)(4326008)(6512007)(66446008)(66476007)(30864003)(55236004)(6486002)(45980500001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?ZGoxNkhmTWdFbFcvbHpFZE53WHBIeS9jMFZTMHI0enFvOTF6d0Y5TjBFSGY1?= =?utf-8?B?RDcrcWhGcFp5SGNOLzFZVENWZXpielVrYW1CUVhCUngyWWpoWWVHcVNyMEE3?= =?utf-8?B?eWVtcWgreW1JdmtQSjN4dzZYRkRqazB2QnhZUHFoazBSQVhONmdkZ3VaSGYx?= =?utf-8?B?Y2NZVE92OVlQeDQ0ZEFDRmZPM1RMUWlpU0M0SXV0SnFIdzdCeDhwZHFJK21E?= =?utf-8?B?M3BYZ1p0OTRQMnpnbjZGdlRwN0ZVZ2FNL21YTWNnYlZzN2RFVU0zbGR1THdB?= =?utf-8?B?cEFQeVFFYTVBNmsvWEtUZTl6c1BLdE1FNE5CQnFBUWpaQTlLRFkxVUVJWmx6?= =?utf-8?B?alNmOFE5YkUzQ3BSRW0vaTlqcFlRRjlLemdEMkdNYXdVUlZzT1V1Ly9TcTdC?= =?utf-8?B?dW9jSUFMRXBkd2NaMGpQUGVtaDE1Syszd24zZUg3dEZjTFE4ODZXRUg4dDgv?= =?utf-8?B?dW5MZ1NjT3k5TkFQV2w0UDZBandMZktNWDFDQzJxOS9LMDFibnE1WXRqcXJ6?= =?utf-8?B?QXplS0VYQ2JpSUdmMU0zYTJhU0VUVkpFYmJnQXN3WmpCb0NFRjQ3NTdlNlkv?= =?utf-8?B?a3NTU0tCcmRidGxzL0RNemlpZlNLZ3gyWi9PYUE3MlUwTFQ3T1VJaG1SNDdl?= =?utf-8?B?NE5qUTQzc1J6K3QyOURRK1NpeEJXZ1VjbndTT0VyRXVKMEtBZi9ocDBUckxY?= =?utf-8?B?WlBFd1NnTzlpODkwUmdNNTkxNDZ3ZDRBRThJK3hCNHFXTERONXRIc1NKTjEv?= =?utf-8?B?dzgycytlcUJOSVlJRXdKU1NEbGgrcE11aXE2UzJ1SzJXdDRTZ0N2cFNSMDM4?= =?utf-8?B?UXBOZHFtMWZtbzF6MXNYTWZxeGNVMy83dlB6Q09ZQ2ZTZnI1N3hvVll4UHhI?= =?utf-8?B?U1Y0NHNSN0tKSWRTb0RkTEJ2Nll5dytPcVlrSEI0M1pvSXZ6N1IxdUFkZzhG?= =?utf-8?B?ZWUwSTlTTk0yL2lIM0VqWmFDRHF0U3JMYU1GMGhoZDlLRDdoUHhXV2kzQnRC?= =?utf-8?B?YjA0SjBYMTl6K05na2NJZEN4eDlPS01EMnJrMTRvdTN2T1F2MHpGb0xFdzZL?= =?utf-8?B?WGxJQis3YndNNklSUHFBMjE2OTB0K2N3RjE0MGl1TUJ1V09ld1ROMEhNTkls?= =?utf-8?B?Q29IcjNNRWhHZEtzY0JIUjIwYU1wbWJtL0lhRTBiaVhCaHlnT0JqU3AvOEd2?= =?utf-8?B?dElRMm9LVm1NV05xYnNrbTJlaUFkem9lK3Z6M2FCcjliVHRUaVl1MC8zb1BL?= =?utf-8?B?QjV2TWU2N0hNbng3S1JKMTBrTUFlZGxzUFFkV3dtWERIK3NOd2tSM205OEdu?= =?utf-8?B?NWx2Qlp0Q09BcU1oNm5ZWWhxRkQwcGVSTlBoMkhxbmE0VVBJMDRsaWZLMlc0?= =?utf-8?B?eTVzU1R6TDV5MzEvMHM4WmtGZDhnOFhteFM3cXdTT0FEZGJnOVhjVEdVRE01?= =?utf-8?B?L1RtVHFPbWhMc21GdWVxTmhxRUh2a2J2K0pNRnlza0N5bGhRTzJBcVE4V0Rl?= =?utf-8?B?cHR2TkptNURNZ1BNdDdRbW10UU0vbGxhN25mVyt6Tlh2dTV1OTJQUlBRNnIv?= =?utf-8?B?N0Q4aUlUdlY2ZE53TThFcUFPYzFOeU9VaktZL2RvR1lLRlFnRGNVRnZyLzNu?= =?utf-8?B?dGZNdURoUmRveEh4Y0duVWJFaEFTQ3hHMklzZTEyNGVERjY0QW1UdFpFREtt?= =?utf-8?B?N1AyZHRORTluQUpoSFJwbnNYUlZTQzV6M1FjaHR4OEljSHh1TGRmLzMzSlU0?= =?utf-8?Q?z8hl9Br6EElz/payF2YNJI+OI6agw+yNsW3mChp?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: aspeedtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: HK0PR06MB3362.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0324a154-9a56-473b-6ad5-08d90df85280 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 May 2021 05:57:23.4805 (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: FPrFWhdDtTesRh/ba0KRsdRa67teKcVmL7Fc3D1iaV4LQNEV00EQfXoUjHN5ILnD0vdZWk+L+crajEbEiYG1065bU2BURrdVJZsUEv8mshU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0PR06MB2548 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org T24gMjAyMS81LzMsIDEyOjQyIFBNLEJpbGx5IFRzYWl3cm90ZToNCg0KT24gMjAyMS80LzI3LCA0 OjQ0IEFNLFV3ZSBLbGVpbmUtS8O2bmlnd3JvdGU6DQoNCiAgICBPbiBXZWQsIEFwciAxNCwgMjAy MSBhdCAwNjo0OTozOVBNICswODAwLCBCaWxseSBUc2FpIHdyb3RlOg0KICAgID4+IFRoaXMgcGF0 Y2ggYWRkIHRoZSBzdXBwb3J0IG9mIFBXTSBjb250cm9sbGVyIHdoaWNoIGNhbiBiZSBmb3VuZCBh dCBhc3BlZWQNCiAgICA+PiBhc3QyNjAwIHNvYy4gVGhlIHB3bSBzdXBvb3J0cyB1cCB0byAxNiBj aGFubmVscyBhbmQgaXQncyBwYXJ0IGZ1bmN0aW9uDQogICAgPj4gb2YgbXVsdGktZnVuY2l0b24g ZGV2aWNlICJwd20tdGFjaCBjb250cm9sbGVyIi4NCg0KICAgID4gcy9mdW5jaXRvbi9mdW5jdGlv bi8NCg0KICAgID4+IFNpZ25lZC1vZmYtYnk6IEJpbGx5IFRzYWkgPGJpbGx5X3RzYWlAYXNwZWVk dGVjaC5jb20+DQogICAgPj4gLS0tDQogICAgPj4gIGRyaXZlcnMvcHdtL0tjb25maWcgICAgICAg ICB8ICAgNyArDQogICAgPj4gIGRyaXZlcnMvcHdtL01ha2VmaWxlICAgICAgICB8ICAgMSArDQog ICAgPj4gIGRyaXZlcnMvcHdtL3B3bS1hc3BlZWQtZzYuYyB8IDMyNCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysNCiAgICA+PiAgMyBmaWxlcyBjaGFuZ2VkLCAzMzIgaW5zZXJ0 aW9ucygrKQ0KICAgID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wd20vcHdtLWFzcGVl ZC1nNi5jDQogICAgPj4gDQogICAgPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL0tjb25maWcg Yi9kcml2ZXJzL3B3bS9LY29uZmlnDQogICAgPj4gaW5kZXggOWE0ZjY2YWU4MDcwLi5kNmMxZTI1 NzE3ZDcgMTAwNjQ0DQogICAgPj4gLS0tIGEvZHJpdmVycy9wd20vS2NvbmZpZw0KICAgID4+ICsr KyBiL2RyaXZlcnMvcHdtL0tjb25maWcNCiAgICA+PiBAQCAtNDIsNiArNDIsMTMgQEAgY29uZmln IFBXTV9ERUJVRw0KICAgID4+ICAJICBJdCBpcyBleHBlY3RlZCB0byBpbnRyb2R1Y2Ugc29tZSBy dW50aW1lIG92ZXJoZWFkIGFuZCBkaWFnbm9zdGljDQogICAgPj4gIAkgIG91dHB1dCB0byB0aGUg a2VybmVsIGxvZywgc28gb25seSBlbmFibGUgd2hpbGUgd29ya2luZyBvbiBhIGRyaXZlci4NCiAg ICA+PiAgDQogICAgPj4gK2NvbmZpZyBQV01fQVNQRUVEX0c2DQogICAgPj4gKwl0cmlzdGF0ZSAi QVNQRUVERzYgUFdNIHN1cHBvcnQiDQogICAgPj4gKwlkZXBlbmRzIG9uIEFSQ0hfQVNQRUVEIHx8 IENPTVBJTEVfVEVTVA0KICAgID4+ICsJaGVscA0KICAgID4+ICsJICBUaGlzIGRyaXZlciBwcm92 aWRlcyBzdXBwb3J0IGZvciBBU1BFRUQgRzYgUFdNIGNvbnRyb2xsZXJzLg0KICAgID4+ICsNCiAg ICA+PiArDQoNCiAgICA+IEEgc2luZ2xlIGVtcHR5IGxpbmUgaXMgZW5vdWdoLiBQbGVhc2Uga2Vl cCB0aGUgbGlzdCBzb3J0ZWQuDQoNCiAgICA+PiAgY29uZmlnIFBXTV9BQjg1MDANCiAgICA+PiAg CXRyaXN0YXRlICJBQjg1MDAgUFdNIHN1cHBvcnQiDQogICAgPj4gIAlkZXBlbmRzIG9uIEFCODUw MF9DT1JFICYmIEFSQ0hfVTg1MDANCiAgICA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vTWFr ZWZpbGUgYi9kcml2ZXJzL3B3bS9NYWtlZmlsZQ0KICAgID4+IGluZGV4IDYzNzRkM2IxZDZmMy4u MmQ5YjQ1OTA2NjJlIDEwMDY0NA0KICAgID4+IC0tLSBhL2RyaXZlcnMvcHdtL01ha2VmaWxlDQog ICAgPj4gKysrIGIvZHJpdmVycy9wd20vTWFrZWZpbGUNCiAgICA+PiBAQCAtMSw2ICsxLDcgQEAN CiAgICA+PiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KICAgID4+ICBvYmot JChDT05GSUdfUFdNKQkJKz0gY29yZS5vDQogICAgPj4gIG9iai0kKENPTkZJR19QV01fU1lTRlMp CQkrPSBzeXNmcy5vDQogICAgPj4gK29iai0kKENPTkZJR19QV01fQVNQRUVEX0c2KQkrPSBwd20t YXNwZWVkLWc2Lm8NCiAgICA+PiAgb2JqLSQoQ09ORklHX1BXTV9BQjg1MDApCSs9IHB3bS1hYjg1 MDAubw0KDQogICAgPiBEaXR0bywgdGhpcyBzaG91bGQgYmUgc29ydGVkIGFscGhhYmV0aWNhbGx5 Lg0KDQogICAgPj4gIG9iai0kKENPTkZJR19QV01fQVRNRUwpCQkrPSBwd20tYXRtZWwubw0KICAg ID4+ICBvYmotJChDT05GSUdfUFdNX0FUTUVMX0hMQ0RDX1BXTSkJKz0gcHdtLWF0bWVsLWhsY2Rj Lm8NCiAgICA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vcHdtLWFzcGVlZC1nNi5jIGIvZHJp dmVycy9wd20vcHdtLWFzcGVlZC1nNi5jDQogICAgPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAg ICA+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmI1MzdhNWQ3MDE1YQ0KICAgID4+IC0tLSAvZGV2L251 bGwNCiAgICA+PiArKysgYi9kcml2ZXJzL3B3bS9wd20tYXNwZWVkLWc2LmMNCiAgICA+PiBAQCAt MCwwICsxLDMyNCBAQA0KICAgID4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MC1vci1sYXRlcg0KICAgID4+ICsvKg0KICAgID4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQVNQ RUVEIFRlY2hub2xvZ3kgSW5jLg0KICAgID4+ICsgKg0KICAgID4+ICsgKiBQV00gY29udHJvbGxl ciBkcml2ZXIgZm9yIEFzcGVlZCBhc3QyNnh4IFNvQ3MuDQogICAgPj4gKyAqIFRoaXMgZHJpdmVy cyBkb2Vzbid0IHJvbGxiYWNrIHRvIHByZXZpb3VzIHZlcnNpb24gb2YgYXNwZWVkIFNvQ3MuDQog ICAgPj4gKyAqDQogICAgPj4gKyAqIEhhcmR3YXJlIEZlYXR1cmVzOg0KDQogICAgPiBQbGVhc2Ug Y2FsbCB0aGlzICJMaW1pdGF0aW9ucyIgZm9yIGVhc2llciBncmVwcGluZy4NCg0KICAgID4+ICsg KiAxLiBTdXBwb3J0IHVwIHRvIDE2IGNoYW5uZWxzDQogICAgPj4gKyAqIDIuIFN1cHBvcnQgUFdN IGZyZXF1ZW5jeSByYW5nZSBmcm9tIDI0SHogdG8gNzgwS0h6DQogICAgPj4gKyAqIDMuIER1dHkg Y3ljbGUgZnJvbSAwIHRvIDEwMCUgd2l0aCAxLzI1NiByZXNvbHV0aW9uIGluY3JlbWVudGFsDQog ICAgPj4gKyAqIDQuIFN1cHBvcnQgd2R0IHJlc2V0IHRvbGVyYW5jZSAoRHJpdmVyIG5vdCByZWFk eSkNCg0KICAgID4gVGhlIGludGVyZXN0aW5nIGZhY3RzIHRvIG1lbnRpb24gaGVyZSBhcmU6IERv ZXMgdGhlIGhhcmR3YXJlIGNvbXBsZXRlIGENCiAgICA+IHBlcmlvZCBvbiBjb25maWd1cmF0aW9u IGNoYW5nZXM/IERvZXMgdGhlIGhhcmR3YXJlIGNvbXBsZXRlIGEgcGVyaW9kIG9uDQogICAgPiBk aXNhYmxlPyBEb2VzIHRoZSBoYXJkd2FyZSBzd2l0Y2ggY29uZmlndXJhdGlvbiBhdG9taWNhbGx5 LCB0aGF0IGlzIGlmDQogICAgPiBpdCBpcyBjdXJyZW50bHkgcnVubmluZyB3aXRoDQoNCiAgICA+ IAkuZHV0eV9jeWNsZSA9IEEgKyAucGVyaW9kID0gQg0KDQogICAgPiBhbmQgaXMgdGhlbiBhc2tl ZCB0byBydW4gYXQNCg0KICAgID4gCS5kdXR5X2N5Y2xlID0gQyArIC5wZXJpb2QgPSBEDQoNCiAg ICA+IGNhbiBpdCBoYXBwZW4sIHRoYXQgd2Ugc2VlIGEgcGVyaW9kIHdpdGggLmR1dHlfY3ljbGUg PSBBIGFuZCBwZXJpb2QNCiAgICA+IGxlbmd0aCBELCBvciBzaW1pbGFyPyBJZiB0aGlzIGlzIGNv bmZpZ3VyYWJsZSwgcGxlYXNlIHByb2dyYW0gdGhlDQogICAgPiBoYXJkd2FyZSB0aGF0IGlzIGNv bXBsZXRlcyBhIGN1cnJlbnRseSBydW5uaW5nIHBlcmlvZCBhbmQgdGhlbg0KICAgID4gYXRvbWlj YWxseSBzd2l0Y2hlcyB0byB0aGUgbmV3IHNldHRpbmcuDQoNCiAgICA+PiArICoNCiAgICA+PiAr ICovDQogICAgPj4gKw0KICAgID4+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQogICAgPj4gKyNp bmNsdWRlIDxsaW51eC9lcnJuby5oPg0KICAgID4+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4N CiAgICA+PiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQogICAgPj4gKyNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4NCiAgICA+PiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4NCiAgICA+PiAr I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KICAgID4+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxh dGZvcm0uaD4NCiAgICA+PiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPg0KICAgID4+ICsj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQogICAgPj4gKyNpbmNsdWRlIDxsaW51 eC9zeXNmcy5oPg0KICAgID4+ICsjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4NCiAgICA+PiArI2lu Y2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KICAgID4+ICsjaW5jbHVkZSA8bGludXgvYml0ZmllbGQu aD4NCiAgICA+PiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCiAgICA+PiArI2luY2x1ZGUgPGxp bnV4L3B3bS5oPg0KDQogICAgPiBlbXB0eSBsaW5lIGhlcmUNCg0KICAgID4+ICsvKiBUaGUgY2hh bm5lbCBudW1iZXIgb2YgQXNwZWVkIHB3bSBjb250cm9sbGVyICovDQogICAgPj4gKyNkZWZpbmUg UFdNX0FTUEVFRF9OUl9QV01TIDE2DQogICAgPj4gKw0KICAgID4+ICsvKiBQV00gQ29udHJvbCBS ZWdpc3RlciAqLw0KICAgID4+ICsjZGVmaW5lIFBXTV9BU1BFRURfQ1RSTF9DSChjaCkgKCgoY2gg KiAweDEwKSArIDB4MDApKQ0KICAgID4+ICsjZGVmaW5lIFBXTV9MT0FEX1NFTF9SSVNJTkdfQVNf V0RUIEJJVCgxOSkNCiAgICA+PiArI2RlZmluZSBQV01fRFVUWV9MT0FEX0FTX1dEVF9FTkFCTEUg QklUKDE4KQ0KICAgID4+ICsjZGVmaW5lIFBXTV9EVVRZX1NZTkNfRElTQUJMRSBCSVQoMTcpDQog ICAgPj4gKyNkZWZpbmUgUFdNX0NMS19FTkFCTEUgQklUKDE2KQ0KICAgID4+ICsjZGVmaW5lIFBX TV9MRVZFTF9PVVRQVVQgQklUKDE1KQ0KICAgID4+ICsjZGVmaW5lIFBXTV9JTlZFUlNFIEJJVCgx NCkNCiAgICA+PiArI2RlZmluZSBQV01fT1BFTl9EUkFJTl9FTkFCTEUgQklUKDEzKQ0KICAgID4+ ICsjZGVmaW5lIFBXTV9QSU5fRU5BQkxFIEJJVCgxMikNCiAgICA+PiArI2RlZmluZSBQV01fQ0xL X0RJVl9IIEdFTk1BU0soMTEsIDgpDQogICAgPj4gKyNkZWZpbmUgUFdNX0NMS19ESVZfTCBHRU5N QVNLKDcsIDApDQogICAgPj4gKw0KICAgID4+ICsvKiBQV00gRHV0eSBDeWNsZSBSZWdpc3RlciAq Lw0KICAgID4+ICsjZGVmaW5lIFBXTV9BU1BFRURfRFVUWV9DWUNMRV9DSChjaCkgKCgoY2ggKiAw eDEwKSArIDB4MDQpKQ0KICAgID4+ICsjZGVmaW5lIFBXTV9QRVJJT0QgR0VOTUFTSygzMSwgMjQp DQogICAgPj4gKyNkZWZpbmUgUFdNX1BPSU5UX0FTX1dEVCBHRU5NQVNLKDIzLCAxNikNCiAgICA+ PiArI2RlZmluZSBQV01fRkFMTElOR19QT0lOVCBHRU5NQVNLKDE1LCA4KQ0KICAgID4+ICsjZGVm aW5lIFBXTV9SSVNJTkdfUE9JTlQgR0VOTUFTSyg3LCAwKQ0KDQogICAgPiBQbGVhc2UgdXNlIGEg Y29tbW9uIHByZWZpeCBmb3IgcmVnaXN0ZXIgZGVmaW5lcy4gQWxzbyBjaCBtdXN0IGJlIHVzZWQg aW4NCiAgICA+IHBhcmVudGhlc2lzLCBTb21ldGhpbmcgbGlrZToNCg0KICAgID4JI2RlZmluZSBQ V01fQVNQRUVEX0NUUkwoY2gpCQkJKDB4MDAgKyAoY2gpICogMHgxMCkNCiAgICA+CSNkZWZpbmUg UFdNX0FTUEVFRF9DVFJMX0xPQURfU0VMX1JJU0lOR19BU19XRFQJCUJJVCgxOSkNCiAgICA+CS4u Lg0KDQogICAgPgkjZGVmaW5lIEFTUEVFRF9QV01fRFVUWV9DWUNMRShjaCkJCSgweDA0ICsgKGNo KSAqIDB4MTApDQogICAgPgkjZGVmaW5lIEFTUEVFRF9QV01fRFVUWV9DWUNMRV9QRVJJT0QJCQlH RU5NQVNLKDMxLCAyNCkNCiAgICA+CSNkZWZpbmUgQVNQRUVEX1BXTV9EVVRZX0NZQ0xFX1BPSU5U X0FTX1dEVAkJR0VOTUFTSygyMywgMTYpDQogICAgPgkuLi4NCg0KICAgID4gKEkgYWxyZWFkeSBh c2tlZCB0aGF0IGluIHJlcGx5IHRvIHlvdXIgdjEuKQ0KDQpTb3JyeSBmb3IgdGhhdC4gSSB3aWxs IGZpeCBpdCBhdCB2My4NCg0KICAgID4+ICsvKiBQV00gZml4ZWQgdmFsdWUgKi8NCiAgICA+PiAr I2RlZmluZSBQV01fRklYRURfUEVSSU9EIDB4ZmYNCiAgICA+PiArDQogICAgPj4gK3N0cnVjdCBh c3BlZWRfcHdtX2RhdGEgew0KICAgID4+ICsJc3RydWN0IHB3bV9jaGlwIGNoaXA7DQogICAgPj4g KwlzdHJ1Y3QgY2xrICpjbGs7DQogICAgPj4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7DQogICAg Pj4gKwlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcmVzZXQ7DQogICAgPj4gK307DQogICAgPj4gKw0K ICAgID4+ICtzdGF0aWMgdm9pZCBhc3BlZWRfc2V0X3B3bV9jaGFubmVsX2VuYWJsZShzdHJ1Y3Qg cmVnbWFwICpyZWdtYXAsIHU4IHB3bV9jaGFubmVsLA0KICAgID4+ICsJCQkJCSAgYm9vbCBlbmFi bGUpDQogICAgPj4gK3sNCiAgICA+PiArCXJlZ21hcF91cGRhdGVfYml0cyhyZWdtYXAsIFBXTV9B U1BFRURfQ1RSTF9DSChwd21fY2hhbm5lbCksDQogICAgPj4gKwkJCSAgIChQV01fQ0xLX0VOQUJM RSB8IFBXTV9QSU5fRU5BQkxFKSwNCiAgICA+PiArCQkJICAgZW5hYmxlID8gKFBXTV9DTEtfRU5B QkxFIHwgUFdNX1BJTl9FTkFCTEUpIDogMCk7DQoNCiAgICA+IFdoYXQgaXMgdGhlIHNlbWFudGlj IGRpZmZlcmVuY2UgYmV0d2VlbiBDTEtfRU5BQkxFIGFuZCBQSU5fRU5BQkxFPyBEb2VzDQogICAg PiB0aGUgcGluIHN0YXkgYXQgaXQncyBpbmFjdGl2ZSBsZXZlbCBpZiBQSU5fRU5BQkxFIGlzIHVu c2V0PyBEb2VzIHRoZQ0KICAgID4gb3V0cHV0IGp1c3QgZnJlZXplIGF0IGl0J3MgY3VycmVudCBs ZXZlbCBpZiBDTEtfRU5BQkxFIGlzIHVuc2V0Pw0KDQpZZXMuIA0KV2hlbiBQSU5fRU5BQkxFIGlz IHVuc2V0IHRoZSBwd20gY29udHJvbGxlciB3aWxsIGFsd2F5cyBvdXRwdXQgbG93IHRvIHRoZSBl eHRlcm4uDQpXaGVuIENMS19FTkFCTEUgaXMgdW5zZXQgdGhlIHB3bSBjb250cm9sbGVyIHdpbGwg ZnJlZXplIGF0IGl0J3MgY3VycmVudCBsZXZlbC4NClRoZSBQSU5fRU5BQkxFIGlzIHVzZWQgdG8g Y29udHJvbCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIFBXTSBjb250cm9sbGVyIGFuZCBQV00gcGlu Zy4NClRoZSBDTEtfRU5BQkxFIGlzIHVzZWQgdG8gY29udHJvbCB0aGUgaW5wdXQgY2xvY2sgZm9y IFBXTSBjb250cm9sbGVyLg0KDQoNCiAgICA+PiArfQ0KICAgID4+ICsvKg0KICAgID4+ICsgKiBU aGUgUFdNIGZyZXF1ZW5jeSA9IEhDTEsoMjAwTWh6KSAvIChjbG9jayBkaXZpc2lvbiBMIGJpdCAq DQogICAgPj4gKyAqIGNsb2NrIGRpdmlzaW9uIEggYml0ICogKHBlcmlvZCBiaXQgKyAxKSkNCiAg ICA+PiArICovDQogICAgPj4gK3N0YXRpYyB2b2lkIGFzcGVlZF9zZXRfcHdtX2ZyZXEoc3RydWN0 IGFzcGVlZF9wd21fZGF0YSAqcHJpdiwNCiAgICA+PiArCQkJCXN0cnVjdCBwd21fZGV2aWNlICpw d20sIHUzMiBmcmVxKQ0KICAgID4+ICt7DQogICAgPj4gKwl1MzIgdGFyZ2V0X2RpdiwgZnJlcV9h X2ZpeF9kaXYsIG91dF9mcmVxOw0KICAgID4+ICsJdTMyIHRtcF9kaXZfaCwgdG1wX2Rpdl9sLCBk aWZmLCBtaW5fZGlmZiA9IElOVF9NQVg7DQogICAgPj4gKwl1MzIgZGl2X2ggPSBCSVQoNSkgLSAx LCBkaXZfbCA9IEJJVCg4KSAtIDE7DQogICAgPj4gKwl1OCBkaXZfZm91bmQ7DQogICAgPj4gKwl1 MzIgaW5kZXggPSBwd20tPmh3cHdtOw0KICAgID4+ICsJLyogRnJlcXVlbmN5IGFmdGVyIGZpeGVk IGRpdmlkZSAqLw0KICAgID4+ICsJZnJlcV9hX2ZpeF9kaXYgPSBjbGtfZ2V0X3JhdGUocHJpdi0+ Y2xrKSAvIChQV01fRklYRURfUEVSSU9EICsgMSk7DQogICAgPj4gKwkvKg0KICAgID4+ICsJICog VXNlIHJvdW5kIHVwIHRvIGF2b2lkIDAgY2FzZS4NCiAgICA+PiArCSAqIEFmdGVyIHRoYXQgdGhl IG9ubHkgc2NlbmFyaW8gd2hpY2ggY2FuJ3QgZmluZCBkaXZpZGUgcGFpciBpcyB0b28gc2xvdw0K ICAgID4+ICsJICovDQogICAgPj4gKwl0YXJnZXRfZGl2ID0gRElWX1JPVU5EX1VQKGZyZXFfYV9m aXhfZGl2LCBmcmVxKTsNCg0KICAgID4gWW91J3JlIGxvc2luZyBwcmVjaXNpb24gaGVyZSwgYXMg ZnJlcSBpcyBhbHJlYWR5IHRoZSByZXN1bHQgb2YgYSBkaXZpc2lvbi4NCg0KICAgID4+ICsJZGl2 X2ZvdW5kID0gMDsNCiAgICA+PiArCS8qIGNhbGN1bGF0ZSBmb3IgdGFyZ2V0IGZyZXF1ZW5jeSAq Lw0KICAgID4+ICsJZm9yICh0bXBfZGl2X2ggPSAwOyB0bXBfZGl2X2ggPCAweDEwOyB0bXBfZGl2 X2grKykgew0KICAgID4+ICsJCXRtcF9kaXZfbCA9IHRhcmdldF9kaXYgLyBCSVQodG1wX2Rpdl9o KSAtIDE7DQogICAgPj4gKw0KICAgID4+ICsJCWlmICh0bXBfZGl2X2wgPCAwIHx8IHRtcF9kaXZf bCA+PiAyNTUpDQogICAgPj4gKwkJCWNvbnRpbnVlOw0KICAgID4+ICsNCiAgICA+PiArCQlkaWZm ID0gZnJlcSAtICgoZnJlcV9hX2ZpeF9kaXYgPj4+IHRtcF9kaXZfaCkgLyAodG1wX2Rpdl9sICsg MSkpOw0KICAgID4+ICsJCWlmIChhYnMoZGlmZikgPCBhYnMobWluX2RpZmYpKSB7DQogICAgPj4g KwkJCW1pbl9kaWZmID0gZGlmZjsNCiAgICA+PiArCQkJZGl2X2wgPSB0bXBfZGl2X2w7DQogICAg Pj4gKwkJCWRpdl9oID0gdG1wX2Rpdl9oOw0KICAgID4+ICsJCQlkaXZfZm91bmQgPSAxOw0KICAg ID4+ICsJCQlpZiAoZGlmZiA9PSAwKQ0KICAgID4+ICsJCQkJYnJlYWs7DQogICAgPj4gKwkJfQ0K ICAgID4+ICsJfQ0KICAgID4+ICsJaWYgKGRpdl9mb3VuZCA9PSAwKSB7DQogICAgPj4gKwkJcHJf ZGVidWcoInRhcmdldCBmcmVxOiAlZCB0b28gc2xvdyBzZXQgbWluaW1hbCBmcmVxdWVuY3lcbiIs DQogICAgPj4gKwkJCSBmcmVxKTsNCiAgICA+PiArCX0NCiAgICA+PiArCW91dF9mcmVxID0gZnJl cV9hX2ZpeF9kaXYgLyAoQklUKGRpdl9oKSAqIChkaXZfbCArIDEpKTsNCg0KICAgID4gVGhpcyBp cyBvdmVybHkgY29tcGxpY2F0ZWQuIEp1c3QgcGljayB0aGUgc21hbGxlc3QgdmFsdWUgZm9yIGRp dl9oIHRoYXQNCiAgICA+IGFsbG93cyB0byBhcHByb3hpbWF0ZSB0aGUgcGVyaW9kLiBVc2luZyBh IGJpZ2dlciBkaXZfaCBkb2Vzbid0IGhhdmUgYW55DQogICAgPiBhZHZhbnRhZ2UgYXMgaXQganVz dCByZXN1bHRzIGluIHVzaW5nIGEgc21hbGxlciBkaXZfbCB3aGljaCBtYWtlcyB0aGUNCiAgICA+ IHJlc29sdXRpb24gbW9yZSBjb2Fyc2UuIFNvIHNvbWV0aGluZyBsaWtlOg0KDQogICAgPglyYXRl ID0gY2xrX2dldF9yYXRlKC4uLik7DQoNCiAgICA+CS8qIHRoaXMgbWlnaHQgbmVlZCBzb21lIHJl b3JkZXJpbmcgdG8gcHJldmVudCBhbiBpbnRlZ2VyIG92ZXJmbG93ICovDQogICAgPglkaXZfaCA9 IHJvdW5kX3VwKHN0YXRlLT5wZXJpb2QgKiByYXRlIC8gKDI1NiAqIE5TRUNfUEVSX1NFQyAqIChQ V01fUEVSSU9EICsgMSkpKTsNCiAgICA+CWRpdl9oID0gb3JkZXJfYmFzZV8yKGRpdl9oKTsNCiAg ICA+CWlmIChkaXZfaCA+PiAweGYpDQogICAgPgkJZGl2X2ggPSAweGYNCg0KICAgID4JZGl2X2wg PSByb3VuZF91cCgoc3RhdGUtPnBlcmlvZCAqIHJhdGUpID4+PiBkaXZfaCAvIChOU0VDX1BFUl9T RUMgKiAoUFdNX1BFUklPRCArIDEpKSk7DQogICAgPglpZiAoZGl2X2wgPT0gMCkNCiAgICA+CQkv KiBwZXJpb2QgdG9vIHNtYWxsLCBjYW5ub3QgaW1wbGVtZW50IGl0ICovDQogICAgPgkJcmV0dXJu IC1FUkFOR0U7DQoNCiAgICA+CWRpdl9sIC09IDE7DQoNCiAgICA+CWlmIChkaXZfbCA+PiAyNTUp DQogICAgPgkJZGl2X2wgPSAyNTU7DQoNCg0KICAgID4gVGhlIGludGVuZGVkIGdvYWwgaXMgdG8g cHJvdmlkZSB0aGUgYmlnZ2VzdCBwb3NzaWJsZSBwZXJpb2Qgbm90IGJpZ2dlcg0KICAgID4gdGhh biB0aGUgcmVxdWVzdGVkIHZhbHVlLg0KDQpTbywgZGlkIHlvdSBtZWFuIHRoYXQgaWYgdGhlIHJl cXVlc3QgcGVyaW9kIGlzIDEwMG5zIGFuZCBvdXIgZGl2aWRlIGNhbiByZWFjaCAxMDAuMW5zIG9y IDk1bnMNCnRoZSB1c2VyIHByZWZlciA5NW5zIHRvIDEwMC4xbnM/DQoNCiAgICA+PiArCXByX2Rl YnVnKCJkaXYgaCAleCwgbCA6ICV4XG4iLCBkaXZfaCwgZGl2X2wpOw0KICAgID4+ICsJcHJfZGVi dWcoImhjbGsgJWxkLCB0YXJnZXQgcHdtIGZyZXEgJWQsIHJlYWwgcHdtIGZyZXEgJWRcbiIsDQog ICAgPj4gKwkJIGNsa19nZXRfcmF0ZShwcml2LT5jbGspLCBmcmVxLCBvdXRfZnJlcSk7DQogICAg Pj4gKw0KICAgID4+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgUFdNX0FTUEVF RF9DVFJMX0NIKGluZGV4KSwNCiAgICA+PiArCQkJICAgKFBXTV9DTEtfRElWX0ggfCBQV01fQ0xL X0RJVl9MKSwNCiAgICA+PiArCQkJICAgRklFTERfUFJFUChQV01fQ0xLX0RJVl9ILCBkaXZfaCkg fA0KICAgID4+ICsJCQkJICAgRklFTERfUFJFUChQV01fQ0xLX0RJVl9MLCBkaXZfbCkpOw0KICAg ID4+ICt9DQogICAgPj4gKw0KICAgID4+ICtzdGF0aWMgdm9pZCBhc3BlZWRfc2V0X3B3bV9kdXR5 KHN0cnVjdCBhc3BlZWRfcHdtX2RhdGEgKnByaXYsDQogICAgPj4gKwkJCQlzdHJ1Y3QgcHdtX2Rl dmljZSAqcHdtLCB1MzIgZHV0eV9wdCkNCiAgICA+PiArew0KICAgID4+ICsJdTMyIGluZGV4ID0g cHdtLT5od3B3bTsNCiAgICA+PiArDQogICAgPj4gKwlpZiAoZHV0eV9wdCA9PSAwKSB7DQogICAg Pj4gKwkJYXNwZWVkX3NldF9wd21fY2hhbm5lbF9lbmFibGUocHJpdi0+cmVnbWFwLCBpbmRleCwg ZmFsc2UpOw0KICAgID4+ICsJfSBlbHNlIHsNCiAgICA+PiArCQlyZWdtYXBfdXBkYXRlX2JpdHMo cHJpdi0+cmVnbWFwLA0KICAgID4+ICsJCQkJICAgUFdNX0FTUEVFRF9EVVRZX0NZQ0xFX0NIKGlu ZGV4KSwNCiAgICA+PiArCQkJCSAgIFBXTV9GQUxMSU5HX1BPSU5ULA0KICAgID4+ICsJCQkJICAg RklFTERfUFJFUChQV01fRkFMTElOR19QT0lOVCwgZHV0eV9wdCkpOw0KICAgID4+ICsJCWFzcGVl ZF9zZXRfcHdtX2NoYW5uZWxfZW5hYmxlKHByaXYtPnJlZ21hcCwgaW5kZXgsIHRydWUpOw0KICAg ID4+ICsJfQ0KICAgID4+ICt9DQogICAgPj4gKw0KICAgID4+ICtzdGF0aWMgdm9pZCBhc3BlZWRf c2V0X3B3bV9wb2xhcml0eShzdHJ1Y3QgYXNwZWVkX3B3bV9kYXRhICpwcml2LA0KICAgID4+ICsJ CQkJICAgIHN0cnVjdCBwd21fZGV2aWNlICpwd20sIHU4IHBvbGFyaXR5KQ0KDQogICAgPiBwb2xh cml0eSBpcyBhbiBlbnVtLCBub3QgYW4gdTguDQoNCiAgICA+PiArew0KICAgID4+ICsJdTMyIGlu ZGV4ID0gcHdtLT5od3B3bTsNCiAgICA+PiArDQogICAgPj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMo cHJpdi0+cmVnbWFwLCBQV01fQVNQRUVEX0NUUkxfQ0goaW5kZXgpLCBQV01fSU5WRVJTRSwNCiAg ICA+PiArCQkJICAgKHBvbGFyaXR5KSA/IFBXTV9JTlZFUlNFIDogMCk7DQoNCiAgICA+IFlvdSBj YW4gZHJvcCB0aGUgcGFyZW50aGVzaXMgYXJvdW5kIHBvbGFyaXR5Lg0KDQogICAgPj4gK30NCiAg ICA+PiArDQogICAgPj4gK3N0YXRpYyBpbnQgYXNwZWVkX3B3bV9yZXF1ZXN0KHN0cnVjdCBwd21f Y2hpcCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSkNCiAgICA+PiArew0KICAgID4+ICsJ c3RydWN0IGRldmljZSAqZGV2ID0gY2hpcC0+ZGV2Ow0KICAgID4+ICsJc3RydWN0IGFzcGVlZF9w d21fZGF0YSAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KICAgID4+ICsJc3RydWN0IHB3 bV9zdGF0ZSAqY2hhbm5lbDsNCiAgICA+PiArCXUzMiBpbmRleCA9IHB3bS0+aHdwd207DQogICAg Pj4gKwkvKg0KICAgID4+ICsJICogRml4ZWQgdGhlIHBlcmlvZCB0byB0aGUgbWF4IHZhbHVlIGFu ZCByaXNpbmcgcG9pbnQgdG8gMA0KICAgID4+ICsJICogZm9yIGhpZ2ggcmVzb2x1dGlvbiBhbmQg IHNpbXBsaWZpZWQgZnJlcXVlbmN5IGNhbGN1bGF0aW9uLg0KDQogICAgPiBTdHJheSBjaGFyYWN0 ZXIgYmVmb3JlICJzaW1wbGlmaWVkIi4NCg0KICAgID4+ICsJICovDQogICAgPj4gKwlyZWdtYXBf dXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBQV01fQVNQRUVEX0RVVFlfQ1lDTEVfQ0goaW5kZXgp LA0KICAgID4+ICsJCQkgICBQV01fUEVSSU9ELA0KICAgID4+ICsJCQkgICBGSUVMRF9QUkVQKFBX TV9QRVJJT0QsIFBXTV9GSVhFRF9QRVJJT0QpKTsNCiAgICA+PiArDQogICAgPj4gKwlyZWdtYXBf dXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBQV01fQVNQRUVEX0RVVFlfQ1lDTEVfQ0goaW5kZXgp LA0KICAgID4+ICsJCQkgICBQV01fUklTSU5HX1BPSU5ULCAwKTsNCg0KICAgID4gLnJlcXVlc3Qo KSBpcyBub3Qgc3VwcG9zZWQgdG8gdG91Y2ggdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIE9u bHkNCiAgICA+IC5hcHBseSgpIGlzIGFsbG93ZWQgdG8gbW9kaWZ5IHRoZSBvdXRwdXQuIEFsc28g aW5pdGlhbGlzYXRpb24gaXNuJ3QNCiAgICA+IHN1cHBvc2VkIHRvIGhhcHBlbiBpbiBjYXNlIHRo ZSBib290bG9hZGVyIHNldHVwIHRoZSBoYXJkd2FyZSBmb3Igc29tZQ0KICAgID4gcHVycG9zZS4N Cg0KSSB3aWxsIG1vdmUgdGhlIHNldHRpbmcgdG8gLmFwcGx5KCkuDQoNCiAgICA+PiArCWNoYW5u ZWwgPSBremFsbG9jKHNpemVvZigqY2hhbm5lbCksIEdGUF9LRVJORUwpOw0KICAgID4+ICsJaWYg KCFjaGFubmVsKQ0KICAgID4+ICsJCXJldHVybiAtRU5PTUVNOw0KICAgID4+ICsNCiAgICA+PiAr CXJldHVybiBwd21fc2V0X2NoaXBfZGF0YShwd20sIGNoYW5uZWwpOw0KICAgID4+ICt9DQogICAg Pj4gKw0KICAgID4+ICtzdGF0aWMgdm9pZCBhc3BlZWRfcHdtX2ZyZWUoc3RydWN0IHB3bV9jaGlw ICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtKQ0KICAgID4+ICt7DQogICAgPj4gKwlzdHJ1 Y3QgcHdtX3N0YXRlICpjaGFubmVsID0gcHdtX2dldF9jaGlwX2RhdGEocHdtKTsNCiAgICA+PiAr DQogICAgPj4gKwlrZnJlZShjaGFubmVsKTsNCiAgICA+PiArfQ0KICAgID4+ICsNCiAgICA+PiAr c3RhdGljIGlubGluZSBzdHJ1Y3QgYXNwZWVkX3B3bV9kYXRhICoNCiAgICA+PiArYXNwZWVkX3B3 bV9jaGlwX3RvX2RhdGEoc3RydWN0IHB3bV9jaGlwICpjKQ0KICAgID4+ICt7DQogICAgPj4gKwly ZXR1cm4gY29udGFpbmVyX29mKGMsIHN0cnVjdCBhc3BlZWRfcHdtX2RhdGEsIGNoaXApOw0KICAg ID4+ICt9DQogICAgPj4gKw0KICAgID4+ICtzdGF0aWMgaW50IGFzcGVlZF9wd21fYXBwbHkoc3Ry dWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtLA0KICAgID4+ICsJCQkg ICAgY29uc3Qgc3RydWN0IHB3bV9zdGF0ZSAqc3RhdGUpDQogICAgPj4gK3sNCiAgICA+PiArCXN0 cnVjdCBkZXZpY2UgKmRldiA9IGNoaXAtPmRldjsNCiAgICA+PiArCXN0cnVjdCBhc3BlZWRfcHdt X2RhdGEgKnByaXYgPSBhc3BlZWRfcHdtX2NoaXBfdG9fZGF0YShjaGlwKTsNCiAgICA+PiArCXN0 cnVjdCBwd21fc3RhdGUgKmNoYW5uZWwgPSBwd21fZ2V0X2NoaXBfZGF0YShwd20pOw0KICAgID4+ ICsJLyogY29tcHV0ZSB0aGUgbnMgdG8gSHogKi8NCiAgICA+PiArCXUzMiBmcmVxID0gRElWX1JP VU5EX1VQX1VMTCgxMDAwMDAwMDAwLCBzdGF0ZS0+cGVyaW9kKTsNCg0KICAgID4gUGxlYXNlIHVz ZSBOU0VDX1BFUl9TRUMgaGVyZS4NCg0KICAgID4+ICsJdTMyIGR1dHlfcHQgPSBESVZfUk9VTkRf VVBfVUxMKA0KICAgID4+ICsJCXN0YXRlLT5kdXR5X2N5Y2xlICogKFBXTV9GSVhFRF9QRVJJT0Qg KyAxKSwgc3RhdGUtPnBlcmlvZCk7DQoNCiAgICA+IEluIHRoZSB2MSB0aHJlYWQgeW91IHNhaWQg eW91IGhhdmUgdG8gc2V0IFBXTV9GQUxMSU5HX1BPSU5UIHRvDQogICAgPiBQV01fUklTSU5HX1BP SU5UIHRvIGltcGxlbWVudCBhIDEwMCUgcmVsYXRpdmUgZHV0eSBjeWNsZS4gSXQgc2VlbXMgdGhp cw0KICAgID4gb25seSB3b3JrcyBieSBjaGFuY2UgaGVyZSAoYmVjYXVzZSBkdXR5X3B0IHdpbGwg YmUgMjU2IGluIHRoaXMgY2FzZS4gVGhlDQogICAgPiB2YWx1ZSAmIDI1NSBpcyB3cml0dGVuIHRv IHRoZSBQV01fRkFMTElOR19QT0lOVCBiaXQgZmllbGQpLiBBc3N1bWluZw0KICAgID4gdGhpcyBp cyB3aGF0IHlvdSBpbnRlbmRlZCwgdGhpcyBuZWVkcyBzb21lIGNvbW1lbnQgdG8gYmUgdW5kZXJz dGFuZGFibGUuDQoNCkkgd2lsbCBhZGQgY29tbWVudCBoZXJlLg0KDQogICAgPiBBbHNvIHBsZWFz ZSByb3VuZCBkb3duIGluIHRoZSBkaXZpc2lvbiB0byBuZXZlciBwcm92aWRlIGEgZHV0eV9jeWNs ZQ0KICAgID4gYmlnZ2VyIHRoYW4gdGhlIHJlcXVlc3RlZCB2YXVsZS4gQWxzbyB5b3UgaGF2ZSB0 byB1c2UgdGhlIGFjdHVhbGx5IHVzZWQNCiAgICA+IHBlcmlvZCBhcyBkaXZpZGVyLCBub3Qgc3Rh dGUtPnBlcmlvZC4NCg0KSSBkb27igJl0IHRoaW5rIHRoYXQgSSBzaG91bGQgdXNlIHRoZSBhY3R1 YWxseSB1c2VkIHBlcmlvZCBhcyBkaXZpZGVyLiANClRoZSBzdGF0ZS0+ZHV0eV9jeWNsZSBpcyBy ZWxhdGl2ZSB3aXRoIHN0YXRlLT5wZXJpb2QsIG5vdCB0aGUgYWN0dWFsIHBlcmlvZA0KaWYgSSB1 c2UgdGhlIGFjdHVhbCBwZXJpb2QgdGhlIHByZWNpc2lvbiBvZiB0aGUgZHV0eSBjeWNsZSBtYXkg bG9zZS4NCg0KICAgID4+ICsJZGV2X2RiZyhkZXYsICJmcmVxOiAlZCwgZHV0eV9wdDogJWQiLCBm cmVxLCBkdXR5X3B0KTsNCiAgICA+PiArCWlmIChzdGF0ZS0+ZW5hYmxlZCkgew0KICAgID4+ICsJ CWFzcGVlZF9zZXRfcHdtX2ZyZXEocHJpdiwgcHdtLCBmcmVxKTsNCiAgICA+PiArCQlhc3BlZWRf c2V0X3B3bV9kdXR5KHByaXYsIHB3bSwgZHV0eV9wdCk7DQogICAgPj4gKwkJYXNwZWVkX3NldF9w d21fcG9sYXJpdHkocHJpdiwgcHdtLCBzdGF0ZS0+cG9sYXJpdHkpOw0KDQogICAgPiBIb3cgZG9l cyB0aGUgaGFyZHdhcmUgYmVoYXZlIGluIGJldHdlZW4gdGhlc2UgY2FsbHM/IElmIGZvciBleGFt cGxlIHRoZQ0KICAgID4gcG9sYXJpdHkgaXMgY2hhbmdlZCwgZG9lcyB0aGlzIGFmZmVjdCB0aGUg b3V0cHV0IGltbWVkaWF0ZWx5PyBEb2VzIHRoaXMNCiAgICA+IHN0YXJ0IGEgbmV3IHBlcmlvZD8N Cg0KVGhlIHB3bSBvdXRwdXQgd2lsbCBpbnZlcnNlIGltbWVkaWF0ZWx5LiBUaGUgcGVyaW9kIHdp bGwgbm90IGNoYW5nZS4NCg0KICAgID4+ICsJfSBlbHNlIHsNCiAgICA+PiArCQlhc3BlZWRfc2V0 X3B3bV9kdXR5KHByaXYsIHB3bSwgMCk7DQogICAgPj4gKwl9DQogICAgPj4gKwljaGFubmVsLT5w ZXJpb2QgPSBzdGF0ZS0+cGVyaW9kOw0KICAgID4+ICsJY2hhbm5lbC0+ZHV0eV9jeWNsZSA9IHN0 YXRlLT5kdXR5X2N5Y2xlOw0KICAgID4+ICsJY2hhbm5lbC0+cG9sYXJpdHkgPSBzdGF0ZS0+cG9s YXJpdHk7DQogICAgPj4gKwljaGFubmVsLT5lbmFibGVkID0gc3RhdGUtPmVuYWJsZWQ7DQogICAg Pj4gKw0KICAgID4+ICsJcmV0dXJuIDA7DQogICAgPj4gK30NCiAgICA+PiArDQogICAgPj4gK3N0 YXRpYyB2b2lkIGFzcGVlZF9wd21fZ2V0X3N0YXRlKHN0cnVjdCBwd21fY2hpcCAqY2hpcCwgc3Ry dWN0IHB3bV9kZXZpY2UgKnB3bSwNCiAgICA+PiArCQkJCSBzdHJ1Y3QgcHdtX3N0YXRlICpzdGF0 ZSkNCiAgICA+PiArew0KICAgID4+ICsJc3RydWN0IHB3bV9zdGF0ZSAqY2hhbm5lbCA9IHB3bV9n ZXRfY2hpcF9kYXRhKHB3bSk7DQogICAgPj4gKw0KICAgID4+ICsJc3RhdGUtPnBlcmlvZCA9IGNo YW5uZWwtPnBlcmlvZDsNCiAgICA+PiArCXN0YXRlLT5kdXR5X2N5Y2xlID0gY2hhbm5lbC0+ZHV0 eV9jeWNsZTsNCiAgICA+PiArCXN0YXRlLT5wb2xhcml0eSA9IGNoYW5uZWwtPnBvbGFyaXR5Ow0K ICAgID4+ICsJc3RhdGUtPmVuYWJsZWQgPSBjaGFubmVsLT5lbmFibGVkOw0KDQogICAgPiBUaGlz IGlzIG5vdCB3aGF0IC5nZXRfc3RhdGUoKSBpcyBzdXBwb3NlZCB0byBkby4gWW91IHNob3VsZCBy ZWFkIHRoZQ0KICAgID4gaGFyZHdhcmUgcmVnaXN0ZXJzIGFuZCB0aGVuIGZpbGwgc3RhdGUgd2l0 aCB0aGUgZGVzY3JpcHRpb24gb2YgdGhlDQogICAgPiBhY3R1YWxseSBlbWl0dGVkIHdhdmUgZm9y bS4NCg0KICAgID4+ICt9DQogICAgPj4gKw0KICAgID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHB3 bV9vcHMgYXNwZWVkX3B3bV9vcHMgPSB7DQogICAgPj4gKwkucmVxdWVzdCA9IGFzcGVlZF9wd21f cmVxdWVzdCwNCiAgICA+PiArCS5mcmVlID0gYXNwZWVkX3B3bV9mcmVlLA0KICAgID4+ICsJLmFw cGx5ID0gYXNwZWVkX3B3bV9hcHBseSwNCiAgICA+PiArCS5nZXRfc3RhdGUgPSBhc3BlZWRfcHdt X2dldF9zdGF0ZSwNCiAgICA+PiArCS5vd25lciA9IFRISVNfTU9EVUxFLA0KICAgID4+ICt9Ow0K ICAgID4+ICsNCiAgICA+PiArc3RhdGljIGludCBhc3BlZWRfcHdtX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpDQogICAgPj4gK3sNCiAgICA+PiArCXN0cnVjdCBkZXZpY2UgKmRl diA9ICZwZGV2LT5kZXY7DQogICAgPj4gKwlpbnQgcmV0Ow0KICAgID4+ICsJc3RydWN0IGFzcGVl ZF9wd21fZGF0YSAqcHJpdjsNCiAgICA+PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7DQogICAg Pj4gKw0KICAgID4+ICsJcHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdG UF9LRVJORUwpOw0KICAgID4+ICsJaWYgKCFwcml2KQ0KICAgID4+ICsJCXJldHVybiAtRU5PTUVN Ow0KICAgID4+ICsNCiAgICA+PiArCW5wID0gcGRldi0+ZGV2LnBhcmVudC0+b2Zfbm9kZTsNCiAg ICA+PiArCWlmICghb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsICJhc3BlZWQsYXN0MjYwMC1w d20tdGFjaCIpKSB7DQogICAgPj4gKwkJZGV2X2VycihkZXYsICJ1bnN1cHBvcnRlZCBwd20gZGV2 aWNlIGJpbmRpbmdcbiIpOw0KICAgID4+ICsJCXJldHVybiAtRU5PREVWOw0KICAgID4+ICsJfQ0K ICAgID4+ICsNCiAgICA+PiArCXByaXYtPnJlZ21hcCA9IHN5c2Nvbl9ub2RlX3RvX3JlZ21hcChu cCk7DQogICAgPj4gKwlpZiAoSVNfRVJSKHByaXYtPnJlZ21hcCkpIHsNCiAgICA+PiArCQlkZXZf ZXJyKGRldiwgIkNvdWxkbid0IGdldCByZWdtYXBcbiIpOw0KICAgID4+ICsJCXJldHVybiAtRU5P REVWOw0KICAgID4+ICsJfQ0KICAgID4+ICsNCiAgICA+PiArCXByaXYtPmNsayA9IGRldm1fY2xr X2dldChkZXYsIE5VTEwpOw0KICAgID4+ICsJaWYgKElTX0VSUihwcml2LT5jbGspKQ0KICAgID4+ ICsJCXJldHVybiAtRU5PREVWOw0KDQogICAgPiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgZGV2X2Vy cl9wcm9iZSB0byBlbWl0IGFuIGVycm9yIG1lc3NhZ2UgaGVyZS4gQWxzbw0KICAgID4gZm9yIHRo ZSBvdGhlciBlcnJvciBwYXRocyBmb3IgY29uc2lzdGVuY3kuDQoNCiAgICA+PiArCXJldCA9IGNs a19wcmVwYXJlX2VuYWJsZShwcml2LT5jbGspOw0KICAgID4+ICsJaWYgKHJldCkgew0KICAgID4+ ICsJCWRldl9lcnIoZGV2LCAiY291bGRuJ3QgZW5hYmxlIGNsb2NrXG4iKTsNCiAgICA+PiArCQly ZXR1cm4gcmV0Ow0KICAgID4+ICsJfQ0KICAgID4+ICsNCiAgICA+PiArCXByaXYtPnJlc2V0ID0g cmVzZXRfY29udHJvbF9nZXRfc2hhcmVkKGRldiwgTlVMTCk7DQogICAgPj4gKwlpZiAoSVNfRVJS KHByaXYtPnJlc2V0KSkgew0KICAgID4+ICsJCWRldl9lcnIoZGV2LCAiY2FuJ3QgZ2V0IGFzcGVl ZF9wd21fdGFjaG8gcmVzZXQ6ICVwZVxuIiwNCiAgICA+PiArCQkJRVJSX1BUUigobG9uZylwcml2 LT5yZXNldCkpOw0KDQogICAgPiBUaGlzIGNhc3QgY2FuIChhbmQgc2hvdWxkKSBiZSBkcm9wcGVk Lg0KDQogICAgPj4gKwkJcmV0dXJuIFBUUl9FUlIocHJpdi0+cmVzZXQpOw0KICAgID4+ICsJfQ0K ICAgID4+ICsNCiAgICA+PiArCXJldCA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQocHJpdi0+cmVz ZXQpOw0KICAgID4+ICsJaWYgKHJldCkgew0KICAgID4+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwg ImNhbm5vdCBkZWFzc2VydCByZXNldCBjb250cm9sOiAlcGVcbiIsDQogICAgPj4gKwkJCUVSUl9Q VFIocmV0KSk7DQoNCiAgICA+IFlvdSBoYXZlIHRvIHVuZG8gY2xrX3ByZXBhcmVfZW5hYmxlKCkg aGVyZS4NCg0KICAgID4+ICsJCXJldHVybiByZXQ7DQogICAgPj4gKwl9DQogICAgPj4gKw0KICAg ID4+ICsJcHJpdi0+Y2hpcC5kZXYgPSBkZXY7DQogICAgPj4gKwlwcml2LT5jaGlwLm9wcyA9ICZh c3BlZWRfcHdtX29wczsNCiAgICA+PiArCXByaXYtPmNoaXAubnB3bSA9IFBXTV9BU1BFRURfTlJf UFdNUzsNCiAgICA+PiArCXByaXYtPmNoaXAub2ZfeGxhdGUgPSBvZl9wd21feGxhdGVfd2l0aF9m bGFnczsNCiAgICA+PiArCXByaXYtPmNoaXAub2ZfcHdtX25fY2VsbHMgPSAzOw0KICAgID4+ICsN CiAgICA+PiArCXJldCA9IHB3bWNoaXBfYWRkKCZwcml2LT5jaGlwKTsNCiAgICA+PiArCWlmIChy ZXQgPCAwKSB7DQogICAgPj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYWRkIFBXTSBjaGlw OiAlcGVcbiIsIEVSUl9QVFIocmV0KSk7DQoNCiAgICA+IEFnYWluIG1pc3NpbmcgY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlLg0KDQogICAgPj4gKwkJcmV0dXJuIHJldDsNCiAgICA+PiArCX0NCiAgICA+ PiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIHByaXYpOw0KICAgID4+ICsJcmV0dXJuIHJldDsNCiAg ICA+PiArfQ0KICAgID4+ICsNCiAgICA+PiArc3RhdGljIGludCBhc3BlZWRfcHdtX3JlbW92ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpDQogICAgPj4gK3sNCiAgICA+PiArCXN0cnVjdCBh c3BlZWRfcHdtX2RhdGEgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShkZXYpOw0KICAgID4+ ICsNCiAgICA+PiArCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtPnJlc2V0KTsNCiAgICA+PiAr CWNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5jbGspOw0KICAgID4+ICsNCiAgICA+PiArCXJl dHVybiBwd21jaGlwX3JlbW92ZSgmcHJpdi0+Y2hpcCk7DQoNCiAgICA+IFBsZWFzZSBjbGVhbiB1 cCBpbiByZXZlcnNlIG9yZGVyIGNvbXBhcmVkIHRvIHByb2JlLiBBbHNvIHRoZXJlIGlzIG5vDQog ICAgPiBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgcHdtY2hpcF9yZW1vdmUsIHNv IHRoaXMgc2hvdWxkIGJlOg0KDQogICAgPglwd21jaGlwX3JlbW92ZSgmcHJpdi0+Y2hpcCk7DQog ICAgPglyZXNldF9jb250cm9sX2Fzc2VydChwcml2LT5yZXNldCk7DQogICAgPgljbGtfZGlzYWJs ZV91bnByZXBhcmUocHJpdi0+Y2xrKTsNCg0KICAgID4+ICt9DQogICAgPj4gKw0KICAgID4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9wd21fbWF0Y2hfdGFibGVbXSA9IHsN CiAgICA+PiArCXsNCiAgICA+PiArCQkuY29tcGF0aWJsZSA9ICJhc3BlZWQsYXN0MjYwMC1wd20i LA0KICAgID4+ICsJfSwNCiAgICA+PiArCXt9LA0KICAgID4+ICt9Ow0KICAgID4+ICtNT0RVTEVf REVWSUNFX1RBQkxFKG9mLCBvZl9wd21fbWF0Y2hfdGFibGUpOw0KICAgID4+ICsNCiAgICA+PiAr c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXNwZWVkX3B3bV9kcml2ZXIgPSB7DQogICAg Pj4gKwkucHJvYmUJCT0gYXNwZWVkX3B3bV9wcm9iZSwNCiAgICA+PiArCS5yZW1vdmUJCT0gYXNw ZWVkX3B3bV9yZW1vdmUsDQogICAgPj4gKwkuZHJpdmVyCQk9IHsNCiAgICA+PiArCQkubmFtZQk9 ICJhc3BlZWRfcHdtIiwNCiAgICA+PiArCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9wd21fbWF0Y2hf dGFibGUsDQogICAgPj4gKwl9LA0KICAgID4+ICt9Ow0KICAgID4+ICsNCiAgICA+PiArbW9kdWxl X3BsYXRmb3JtX2RyaXZlcihhc3BlZWRfcHdtX2RyaXZlcik7DQogICAgPj4gKw0KICAgID4+ICtN T0RVTEVfQVVUSE9SKCJCaWxseSBUc2FpIDxiaWxseV90c2FpQGFzcGVlZHRlY2guY29tPiIpOw0K ICAgID4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFTUEVFRCBQV00gZGV2aWNlIGRyaXZlciIpOw0K ICAgID4+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQoNCiAgICAtLSANCiAgICBQZW5ndXRy b25peCBlLksuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVd2UgS2xlaW5lLUvDtm5pZyAg ICAgICAgICAgIHwNCiAgICBJbmR1c3RyaWFsIExpbnV4IFNvbHV0aW9ucyAgICAgICAgICAgICAg ICAgfCBodHRwczovL3d3dy5wZW5ndXRyb25peC5kZS8gfA0KDQoNCg==