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=-9.9 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,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 5EF21C4346E for ; Tue, 29 Sep 2020 04:37:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 004DC207F7 for ; Tue, 29 Sep 2020 04:37:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="MrqOsXB2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725829AbgI2Ehx (ORCPT ); Tue, 29 Sep 2020 00:37:53 -0400 Received: from mail-eopbgr80049.outbound.protection.outlook.com ([40.107.8.49]:30464 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725355AbgI2Ehx (ORCPT ); Tue, 29 Sep 2020 00:37:53 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ag5Tf/hgrdSqHXg0JLum733V6IJ33RIiV5es1f3earlUTwAgGI+K6etrSAnsaQIxA3Y+qVvn+nDdpV9CEMdSfxYiqqfx0FoZsWkUjH/W6QlPWGf+pKPqsxGLZrQFm0/j7cXxfSEYg2Pbu1+6rsRK0Vx2qml24RWcwFwqGdoVhuIIWvR7D8z3FdMtwtRbcUTLRDqDjr4ppa5r7Il2ZaK9NKvldmuCXl01eO6DXQ9Ng+ZtDPycoUmBBXRJp1J1NMUIa374vC4Q6iw0aTyTmk+8yxZgh1b8yuWv8mT9yoXoBWzxJyAN7/EoozsFV2hevXlcbPgKx/3zjLs9oo0ZmQGjqA== 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=nmsRtr85A7iZSBcs6YUsOjhZ2WDHHoSFUdc0ngjW2ZU=; b=oTLWOOxfRAOQQvLTAPiFJeTC3zyeAT5RV6BMWCV+IBbeKp09urVIZjzT4Pj/GtfLBbkQvKS1aO0UV5OqWdIzRi+/tnp4VN9jP0YzCsWQRymIH3EfFxbkYnZlzCKbH+UFt4subnmC069JfscREolt2oU5iX56DIh3Bk67EbPk1F/Ac0R3amQtBQ93MRXL/gZEpAVhbj8tpMbjXKU0WvSVev6b2Wm/0NtrOVIM84GbkRAkx/KVwgcZeAgVBUkSrxmaNjqz0YYg7PRznjyEMYHppoe41jxYFrkm8qvBcWYFJ5FOVN7EM/I1WmMFPe4FmFWd35+EtOvD2y5M9pyzSGYczw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nmsRtr85A7iZSBcs6YUsOjhZ2WDHHoSFUdc0ngjW2ZU=; b=MrqOsXB2aHNYYh5uTkGl8hPH1PWFco7uojpzNOBkLP8x9jWFL4KU0oklwiKivSrwKlwPCB6h64lykwMk5zIi7S7reJI94qy/ZluvDRB4tOPBGt0LmBc/Sq/QRIwypyrJU7PS4aqEVWOJC2zOpI0SvOVBFn3G5cqUIR2y/OncmA4= Received: from AM8PR04MB7300.eurprd04.prod.outlook.com (2603:10a6:20b:1c7::12) by AM0PR04MB5443.eurprd04.prod.outlook.com (2603:10a6:208:119::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.25; Tue, 29 Sep 2020 04:37:40 +0000 Received: from AM8PR04MB7300.eurprd04.prod.outlook.com ([fe80::ad01:9b1c:3b4b:3a77]) by AM8PR04MB7300.eurprd04.prod.outlook.com ([fe80::ad01:9b1c:3b4b:3a77%7]) with mapi id 15.20.3412.029; Tue, 29 Sep 2020 04:37:40 +0000 From: Peter Chen To: Pawel Laszczak CC: "gregkh@linuxfoundation.org" , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "balbi@kernel.org" , "colin.king@canonical.com" , "rogerq@ti.com" , "jpawar@cadence.com" , "kurahul@cadence.com" , "sparmar@cadence.com" , "nsekhar@ti.com" , "heikki.krogerus@linux.intel.com" , "chunfeng.yun@mediatek.com" , "yanaijie@huawei.com" Subject: Re: [PATCH 6/8] usb: cdnsp: Device side header file for CDNSP driver Thread-Topic: [PATCH 6/8] usb: cdnsp: Device side header file for CDNSP driver Thread-Index: AQHWlZOhteoq2pBOUk+4ZchPF/pNa6l/CRKA Date: Tue, 29 Sep 2020 04:37:40 +0000 Message-ID: <20200929043635.GD9076@b29397-desktop> References: <20200928122741.17884-1-pawell@cadence.com> <20200928122741.17884-7-pawell@cadence.com> In-Reply-To: <20200928122741.17884-7-pawell@cadence.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: cadence.com; dkim=none (message not signed) header.d=none;cadence.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [119.31.174.67] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 7c9957ce-e713-46f1-6f22-08d864316655 x-ms-traffictypediagnostic: AM0PR04MB5443: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ABQVzMk1xvkLDsfpDWzEEyIKT6WmnfZ7cluQPOJPRRYctyC/78LPogbwIpFuy8Qe+QiDm28I92emaV7qeOpjrJHJ1QbMb3FIfc4UsheK4DvTzMLgrl3E6c3CgFSV4pShTvM8Y2ZAmGV7pq9okinfJCFPxbfBCyXxW3MehCbfXrowoUKbxFLH/o24K3vMHh/+XpqSRdG7VPwfwzh2LULaKtEtcCgPLzGY7cIEHoQda5yi9SOOybSgU+3YJr+XBBDR+Cks3mJ2ewIf+JV5oCur1fcJLCnJxlXut1b5goRutTggHw/2WmfnGxPn6X+nHLrV8L3pP1TkfcpyP+u61cAFpQO5AT7UQlrxFtk7YalEcSNgucREOqL43rvuC1q4Jbs6LB82ND8YSv731m5cc1L5PCnPz8IuhMeyeVAzwlldHKcRD7ZxbAf+3RpSpwvosUog5wax+KC3Xs7/CIE4mCHHOA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7300.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(7916004)(4636009)(39860400002)(366004)(396003)(136003)(346002)(376002)(83380400001)(54906003)(71200400001)(33716001)(7416002)(9686003)(6512007)(8936002)(2906002)(5660300002)(66476007)(66556008)(6486002)(66446008)(64756008)(6916009)(53546011)(26005)(76116006)(66946007)(91956017)(186003)(6506007)(316002)(8676002)(33656002)(478600001)(1076003)(86362001)(30864003)(44832011)(4326008)(579004)(559001)(473944003)(414714003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: ehqcAPedo0dfXL9NwqIHlASTSnh4vqBUYLwc/flPcEdWF/x7NjKRqG7wmVwLRhE9gJDXVLsDa1PG5KbChFCu1mnSEjcWWH54Km8lrAriJsv3joQiOTkG1qsTlhisiJFdwEEMEIw7aICWVEwA5dxzwYpUaayzY8DFPIl1HVXAO0MsQXoMOlSmGDDhf7nkaudb6eb8psyUdUNF5Owp5xHMl9R47ZP9Eb6szmhX40PV9AbpaVabdRlTkerqqUjoDkoSNuCV00pbfKeYf5MFBfz+q7rWyZ/g6U3qI1D6uOITQCj3Yqu91F0kvk7RHxgMJtTl7mR5P3tpRvGnYt/vQdnFwjs6u7fIIx+BCtCaWMRC8PFfOlX9SGPRHylsuzyyMeGc3lJX+miV0WdiKDpjQ0wYVIP9OUVNY7ecjpZ3UGbc8rZUcXijrwPqnD+7A6j7w65x5IVTi9hinJLwAM5dACLMfZj6JBuBW0IoP96og4j6KpDCwRSWO8bXftmZrmTTzpVPCkvAOucIyYGnx8Q/BG7aqpyKdoy+O9peKGqbVCsLZuiI9ppSQBTmNVwhkCDxi7Vj7xYMZYPTRcSIEzcbo1G0g5BCwZusLkSQ7RLbhMb2g5KLysrK729xEIFMcTeE3ZXPZllIxESLzzGUOXeKCHWV6w== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7300.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c9957ce-e713-46f1-6f22-08d864316655 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Sep 2020 04:37:40.4093 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FLvqA5tfP3QWcUR7F8fHm6TYE/9fyZ37/OiFkCjOF+KiMCnaqHRU0hpSFWdNeyX7/JG19rvErqVOBrWIY52BYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5443 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMjAtMDktMjggMTQ6Mjc6MzksIFBhd2VsIExhc3pjemFrIHdyb3RlOg0KPiBQYXRjaCBkZWZp bmVzIG1hY3JvcywgcmVnaXN0ZXJzIGFuZCBzdHJ1Y3R1cmVzIHVzZWQgYnkNCj4gRGV2aWNlIHNp ZGUgZHJpdmVyLg0KPiANCj4gQmVjYXVzZSB0aGUgc2l6ZSBvZiBtYWluIHBhdGNoIGlzIHZlcnkg YmlnLCBJ4oCZdmUgZGVjaWRlZCB0byBjcmVhdGUNCj4gc2VwYXJhdGUgcGF0Y2ggZm9yIGdhZGdl dC5oLiBJdCBzaG91bGQgc2ltcGxpZnkgcmV2aWV3aW5nIHRoZSBjb2RlLg0KPiANCj4gU2lnbmVk LW9mZi1ieTogUGF3ZWwgTGFzemN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4NCj4gLS0tDQo+ICBk cml2ZXJzL3VzYi9jZG5zcC9nYWRnZXQuaCB8IDE0NTkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrDQoNCkkgaGF2ZSBubyBzZWVuIHRoZXJlIGFyZSBmb2xkZXIgY2Ruc3AgZnJv bSBwcmV2aW91cyBwYXRjaGVzLg0KDQpQZXRlcg0KPiAgMSBmaWxlIGNoYW5nZWQsIDE0NTkgaW5z ZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnNwL2dhZGdl dC5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2Ruc3AvZ2FkZ2V0LmggYi9kcml2 ZXJzL3VzYi9jZG5zcC9nYWRnZXQuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwMDAuLmJmYzQxOTZjM2IxMA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZl cnMvdXNiL2NkbnNwL2dhZGdldC5oDQo+IEBAIC0wLDAgKzEsMTQ1OSBAQA0KPiArLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4gKy8qDQo+ICsgKiBDYWRlbmNlIENETlNQ IERSRCBEcml2ZXIuDQo+ICsgKg0KPiArICogQ29weXJpZ2h0IChDKSAyMDIwIENhZGVuY2UuDQo+ ICsgKg0KPiArICogQXV0aG9yOiBQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29tPg0K PiArICoNCj4gKyAqIENvZGUgYmFzZWQgb24gTGludXggWEhDSSBkcml2ZXIuDQo+ICsgKiBPcmln aW46IENvcHlyaWdodCAoQykgMjAwOCBJbnRlbCBDb3JwLg0KPiArICovDQo+ICsjaWZuZGVmIF9f TElOVVhfQ0ROU1BfR0FER0VUX0gNCj4gKyNkZWZpbmUgX19MSU5VWF9DRE5TUF9HQURHRVRfSA0K PiArDQo+ICsjaW5jbHVkZSA8bGludXgvaW8tNjQtbm9uYXRvbWljLWxvLWhpLmg+DQo+ICsjaW5j bHVkZSA8bGludXgvdXNiL2dhZGdldC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lycS5oPg0KPiAr DQo+ICsvKiBNYXggbnVtYmVyIHNsb3RzIC0gb25seSAxIGlzIGFsbG93ZWQuICovDQo+ICsjZGVm aW5lIENETlNQX0RFVl9NQVhfU0xPVFMJMQ0KPiArDQo+ICsjZGVmaW5lIENETlNQX0VQMF9TRVRV UF9TSVpFCTUxMg0KPiArDQo+ICsvKjE2IGZvciBpbiBhbmQgMTYgZm9yIG91dC4gKi8NCj4gKyNk ZWZpbmUgQ0ROU1BfRU5EUE9JTlRTX05VTQkzMg0KPiArDQo+ICsvKiBCZXN0IEVmZm9ydCBTZXJ2 aWNlIExhdGVuY3kuICovDQo+ICsjZGVmaW5lIENETlNQX0RFRkFVTFRfQkVTTAkwDQo+ICsNCj4g Ky8qIERldmljZSBDb250cm9sbGVyIGNvbW1hbmQgZGVmYXVsdCB0aW1lb3V0IHZhbHVlIGluIHVz ICovDQo+ICsjZGVmaW5lIENETlNQX0NNRF9USU1FT1VUCSgxNSAqIDEwMDApDQo+ICsNCj4gKy8q IFVwIHRvIDE2IG1zIHRvIGhhbHQgYW4gZGV2aWNlIGNvbnRyb2xsZXIgKi8NCj4gKyNkZWZpbmUg Q0ROU1BfTUFYX0hBTFRfVVNFQwkoMTYgKiAxMDAwKQ0KPiArDQo+ICsjZGVmaW5lIENETlNQX0NU WF9TSVpFCTIxMTINCj4gKw0KPiArLyoNCj4gKyAqIENvbnRyb2xsZXIgcmVnaXN0ZXIgaW50ZXJm YWNlLg0KPiArICovDQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX2NhcF9yZWdzIC0g Q0ROU1AgUmVnaXN0ZXJzLg0KPiArICogQGhjX2NhcGJhc2U6CUxlbmd0aCBvZiB0aGUgY2FwYWJp bGl0aWVzIHJlZ2lzdGVyIGFuZCBjb250cm9sbGVyDQo+ICsgKiAgICAgICAgICAgICAgdmVyc2lv biBudW1iZXINCj4gKyAqIEBoY3NfcGFyYW1zMTogSENTUEFSQU1TMSAtIFN0cnVjdHVyYWwgUGFy YW1ldGVycyAxDQo+ICsgKiBAaGNzX3BhcmFtczI6IEhDU1BBUkFNUzIgLSBTdHJ1Y3R1cmFsIFBh cmFtZXRlcnMgMg0KPiArICogQGhjc19wYXJhbXMzOiBIQ1NQQVJBTVMzIC0gU3RydWN0dXJhbCBQ YXJhbWV0ZXJzIDMNCj4gKyAqIEBoY2NfcGFyYW1zOiBIQ0NQQVJBTVMgLSBDYXBhYmlsaXR5IFBh cmFtZXRlcnMNCj4gKyAqIEBkYl9vZmY6IERCT0ZGIC0gRG9vcmJlbGwgYXJyYXkgb2Zmc2V0DQo+ ICsgKiBAcnVuX3JlZ3Nfb2ZmOiBSVFNPRkYgLSBSdW50aW1lIHJlZ2lzdGVyIHNwYWNlIG9mZnNl dA0KPiArICogQGhjY19wYXJhbXMyOiBIQ0NQQVJBTVMyIENhcGFiaWxpdHkgUGFyYW1ldGVycyAy LA0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfY2FwX3JlZ3Mgew0KPiArCV9fbGUzMiBoY19jYXBi YXNlOw0KPiArCV9fbGUzMiBoY3NfcGFyYW1zMTsNCj4gKwlfX2xlMzIgaGNzX3BhcmFtczI7DQo+ ICsJX19sZTMyIGhjc19wYXJhbXMzOw0KPiArCV9fbGUzMiBoY2NfcGFyYW1zOw0KPiArCV9fbGUz MiBkYl9vZmY7DQo+ICsJX19sZTMyIHJ1bl9yZWdzX29mZjsNCj4gKwlfX2xlMzIgaGNjX3BhcmFt czI7DQo+ICsJLyogUmVzZXJ2ZWQgdXAgdG8gKENBUExFTkdUSCAtIDB4MUMpICovDQo+ICt9Ow0K PiArDQo+ICsvKiBoY19jYXBiYXNlIGJpdG1hc2tzLiAqLw0KPiArLyogYml0cyA3OjAgLSBob3cg bG9uZyBpcyB0aGUgQ2FwYWJpbGl0aWVzIHJlZ2lzdGVyLiAqLw0KPiArI2RlZmluZSBIQ19MRU5H VEgocCkJCSgoKHApID4+IDAwKSAmIEdFTk1BU0soNywgMCkpDQo+ICsvKiBiaXRzIDMxOjE2CSov DQo+ICsjZGVmaW5lIEhDX1ZFUlNJT04ocCkJCSgoKHApID4+IDE2KSAmIEdFTk1BU0soMTUsIDEp KQ0KPiArDQo+ICsvKiBIQ1NQQVJBTVMxIC0gaGNzX3BhcmFtczEgLSBiaXRtYXNrcyAqLw0KPiAr LyogYml0cyAwOjcsIE1heCBEZXZpY2UgRW5kcG9pbnRzICovDQo+ICsjZGVmaW5lIEhDU19FTkRQ T0lOVFNfTUFTSwlHRU5NQVNLKDcsIDApDQo+ICsjZGVmaW5lIEhDU19FTkRQT0lOVFMocCkJKCgo cCkgJiBIQ1NfRU5EUE9JTlRTX01BU0spID4+IDApDQo+ICsNCj4gKy8qIEhDQ1BBUkFNUyBvZmZz ZXQgZnJvbSBQQ0kgYmFzZSBhZGRyZXNzICovDQo+ICsjZGVmaW5lIEhDQ19QQVJBTVNfT0ZGU0VU CTB4MTANCj4gKw0KPiArLyogSENDUEFSQU1TIC0gaGNjX3BhcmFtcyAtIGJpdG1hc2tzICovDQo+ ICsvKiB0cnVlOiBkZXZpY2UgY29udHJvbGxlciBjYW4gdXNlIDY0LWJpdCBhZGRyZXNzIHBvaW50 ZXJzLiAqLw0KPiArI2RlZmluZSBIQ0NfNjRCSVRfQUREUihwKQkoKHApICYgQklUKDApKQ0KPiAr LyogdHJ1ZTogZGV2aWNlIGNvbnRyb2xsZXIgdXNlcyA2NC1ieXRlIERldmljZSBDb250ZXh0IHN0 cnVjdHVyZXMuICovDQo+ICsjZGVmaW5lIEhDQ182NEJZVEVfQ09OVEVYVChwKQkoKHApICYgQklU KDIpKQ0KPiArLyogTWF4IHNpemUgZm9yIFByaW1hcnkgU3RyZWFtIEFycmF5cyAtIDJeKG4rMSks IHdoZXJlIG4gaXMgYml0cyAxMjoxNS4gKi8NCj4gKyNkZWZpbmUgSENDX01BWF9QU0EocCkJCSgo KChwKSA+PiAxMikgJiAweGYpICsgMSkNCj4gKy8qIEV4dGVuZGVkIENhcGFiaWxpdGllcyBwb2lu dGVyIGZyb20gUENJIGJhc2UuICovDQo+ICsjZGVmaW5lIEhDQ19FWFRfQ0FQUyhwKQkJKCgocCkg JiBHRU5NQVNLKDMxLCAxNikpID4+IDE2KQ0KPiArDQo+ICsjZGVmaW5lIENUWF9TSVpFKF9oY2Mp CQkoSENDXzY0QllURV9DT05URVhUKF9oY2MpID8gNjQgOiAzMikNCj4gKw0KPiArLyogZGJfb2Zm IGJpdG1hc2sgLSBiaXRzIDA6MSByZXNlcnZlZC4gKi8NCj4gKyNkZWZpbmUgREJPRkZfTUFTSwlH RU5NQVNLKDMxLCAyKQ0KPiArDQo+ICsvKiBydW5fcmVnc19vZmYgYml0bWFzayAtIGJpdHMgMDo0 IHJlc2VydmVkLiAqLw0KPiArI2RlZmluZSBSVFNPRkZfTUFTSwlHRU5NQVNLKDMxLCA1KQ0KPiAr DQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9vcF9yZWdzIC0gRGV2aWNlIENvbnRyb2xsZXIg T3BlcmF0aW9uYWwgUmVnaXN0ZXJzLg0KPiArICogQGNvbW1hbmQ6IFVTQkNNRCAtIENvbnRyb2xs ZXIgY29tbWFuZCByZWdpc3Rlci4NCj4gKyAqIEBzdGF0dXM6IFVTQlNUUyAtIENvbnRyb2xsZXIg c3RhdHVzIHJlZ2lzdGVyLg0KPiArICogQHBhZ2Vfc2l6ZTogVGhpcyBpbmRpY2F0ZXMgdGhlIHBh Z2Ugc2l6ZSB0aGF0IHRoZSBkZXZpY2UgY29udHJvbGxlciBzdXBwb3J0cy4NCj4gKyAqICAgICAg ICAgICAgIElmIGJpdCBuIGlzIHNldCwgdGhlIGNvbnRyb2xsZXIgc3VwcG9ydHMgYSBwYWdlIHNp emUgb2YgMl4obisxMiksDQo+ICsgKiAgICAgICAgICAgICB1cCB0byBhIDEyOE1CIHBhZ2Ugc2l6 ZS4gNEsgaXMgdGhlIG1pbmltdW0gcGFnZSBzaXplLg0KPiArICogQGRuY3RybDogRE5DVFJMIC0g RGV2aWNlIG5vdGlmaWNhdGlvbiBjb250cm9sIHJlZ2lzdGVyLg0KPiArICogQGNtZF9yaW5nOiBD UlAgLSA2NC1iaXQgQ29tbWFuZCBSaW5nIFBvaW50ZXIuDQo+ICsgKiBAZGNiYWFfcHRyOiBEQ0JB QVAgLSA2NC1iaXQgRGV2aWNlIENvbnRleHQgQmFzZSBBZGRyZXNzIEFycmF5IFBvaW50ZXIuDQo+ ICsgKiBAY29uZmlnX3JlZzoJQ09ORklHIC0gQ29uZmlndXJlIFJlZ2lzdGVyDQo+ICsgKiBAcG9y dF9yZWdfYmFzZTogUE9SVFNDbiAtIGJhc2UgYWRkcmVzcyBmb3IgUG9ydCBTdGF0dXMgYW5kIENv bnRyb2wNCj4gKyAqICAgICAgICAgICAgICAgICBFYWNoIHBvcnQgaGFzIGEgUG9ydCBTdGF0dXMg YW5kIENvbnRyb2wgcmVnaXN0ZXIsDQo+ICsgKiAgICAgICAgICAgICAgICAgZm9sbG93ZWQgYnkg YSBQb3J0IFBvd2VyIE1hbmFnZW1lbnQgU3RhdHVzIGFuZCBDb250cm9sDQo+ICsgKiAgICAgICAg ICAgICAgICAgcmVnaXN0ZXIsIGEgUG9ydCBMaW5rIEluZm8gcmVnaXN0ZXIsIGFuZCBhIHJlc2Vy dmVkDQo+ICsgKiAgICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQo+ICsgKi8NCj4gK3N0cnVjdCBj ZG5zcF9vcF9yZWdzIHsNCj4gKwlfX2xlMzIgY29tbWFuZDsNCj4gKwlfX2xlMzIgc3RhdHVzOw0K PiArCV9fbGUzMiBwYWdlX3NpemU7DQo+ICsJX19sZTMyIHJlc2VydmVkMTsNCj4gKwlfX2xlMzIg cmVzZXJ2ZWQyOw0KPiArCV9fbGUzMiBkbmN0cmw7DQo+ICsJX19sZTY0IGNtZF9yaW5nOw0KPiAr CS8qIHJzdmQ6IG9mZnNldCAweDIwLTJGLiAqLw0KPiArCV9fbGUzMiByZXNlcnZlZDNbNF07DQo+ ICsJX19sZTY0IGRjYmFhX3B0cjsNCj4gKwlfX2xlMzIgY29uZmlnX3JlZzsNCj4gKwkvKiByc3Zk OiBvZmZzZXQgMHgzQy0zRkYuICovDQo+ICsJX19sZTMyIHJlc2VydmVkNFsyNDFdOw0KPiArCS8q IHBvcnQgMSByZWdpc3RlcnMsIHdoaWNoIHNlcnZlIGFzIGEgYmFzZSBhZGRyZXNzIGZvciBvdGhl ciBwb3J0cy4gKi8NCj4gKwlfX2xlMzIgcG9ydF9yZWdfYmFzZTsNCj4gK307DQo+ICsNCj4gKy8q IE51bWJlciBvZiByZWdpc3RlcnMgcGVyIHBvcnQuICovDQo+ICsjZGVmaW5lIE5VTV9QT1JUX1JF R1MJNA0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9wb3J0X3JlZ3MgLSBQb3J0IFJl Z2lzdGVycy4NCj4gKyAqIEBwb3J0c2M6IFBPUlRTQyAtIFBvcnQgU3RhdHVzIGFuZCBDb250cm9s IFJlZ2lzdGVyLg0KPiArICogQHBvcnRwbXNjOiBQT1JUUE1TQyAtIFBvcnQgUG93ZXIgTWFuYWdl bWVudHMgU3RhdHVzIGFuZCBDb250cm9sIFJlZ2lzdGVyLg0KPiArICogQHBvcnRsaTogUE9SVExJ IC0gUG9ydCBMaW5rIEluZm8gcmVnaXN0ZXIuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9wb3J0 X3JlZ3Mgew0KPiArCV9fbGUzMiBwb3J0c2M7DQo+ICsJX19sZTMyIHBvcnRwbXNjOw0KPiArCV9f bGUzMiBwb3J0bGk7DQo+ICsJX19sZTMyIHJlc2VydmVkOw0KPiArfTsNCj4gKw0KPiArLyoNCj4g KyAqIFRoZXNlIGJpdHMgYXJlIFJlYWQgT25seSAoUk8pIGFuZCBzaG91bGQgYmUgc2F2ZWQgYW5k IHdyaXR0ZW4gdG8gdGhlDQo+ICsgKiByZWdpc3RlcnM6IDAgKGNvbm5lY3Qgc3RhdHVzKSBhbmQg IDEwOjEzIChwb3J0IHNwZWVkKS4NCj4gKyAqIFRoZXNlIGJpdHMgYXJlIGFsc28gc3RpY2t5IC0g bWVhbmluZyB0aGV5J3JlIGluIHRoZSBBVVggd2VsbCBhbmQgdGhleSBhcmVuJ3QNCj4gKyAqIGNo YW5nZWQgYnkgYSBob3QgYW5kIHdhcm0uDQo+ICsgKi8NCj4gKyNkZWZpbmUgQ0ROU1BfUE9SVF9S TwkoUE9SVF9DT05ORUNUIHwgREVWX1NQRUVEX01BU0spDQo+ICsNCj4gKy8qDQo+ICsgKiBUaGVz ZSBiaXRzIGFyZSBSVzsgd3JpdGluZyBhIDAgY2xlYXJzIHRoZSBiaXQsIHdyaXRpbmcgYSAxIHNl dHMgdGhlIGJpdDoNCj4gKyAqIGJpdHMgNTo4IChsaW5rIHN0YXRlKSwgMjU6MjYgICgid2FrZSBv biIgZW5hYmxlIHN0YXRlKQ0KPiArICovDQo+ICsjZGVmaW5lIENETlNQX1BPUlRfUldTCShQT1JU X1BMU19NQVNLIHwgUE9SVF9XS0NPTk5fRSB8IFBPUlRfV0tESVNDX0UpDQo+ICsNCj4gKy8qDQo+ ICsgKiBUaGVzZSBiaXRzIGFyZSBSVzsgd3JpdGluZyBhIDEgY2xlYXJzIHRoZSBiaXQsIHdyaXRp bmcgYSAwIGhhcyBubyBlZmZlY3Q6DQo+ICsgKiBiaXRzIDEgKHBvcnQgZW5hYmxlL2Rpc2FibGUp LCAxNyAgKCBjb25uZWN0IGNoYW5nZWQpLA0KPiArICogMjEgKHBvcnQgcmVzZXQgY2hhbmdlZCkg LCAyMiAoUG9ydCBMaW5rIFN0YXRlIENoYW5nZSksDQo+ICsgKi8NCj4gKyNkZWZpbmUgQ0ROU1Bf UE9SVF9SVzFDUyAoUE9SVF9QRUQgfCBQT1JUX0NTQyB8IFBPUlRfUkMgfCBQT1JUX1BMQykNCj4g Kw0KPiArLyogVVNCQ01EIC0gVVNCIGNvbW1hbmQgLSBiaXRtYXNrcy4gKi8NCj4gKy8qIFJ1bi9T dG9wLCBjb250cm9sbGVyIGV4ZWN1dGlvbiAtIGRvIG5vdCB3cml0ZSB1bmxlc3MgY29udHJvbGxl ciBpcyBoYWx0ZWQuKi8NCj4gKyNkZWZpbmUgQ01EX1JfUwkJQklUKDApDQo+ICsvKg0KPiArICog UmVzZXQgZGV2aWNlIGNvbnRyb2xsZXIgLSByZXNldHMgaW50ZXJuYWwgY29udHJvbGxlciBzdGF0 ZSBtYWNoaW5lIGFuZCBhbGwNCj4gKyAqIHJlZ2lzdGVycyAoZXhjZXB0IFBDSSBjb25maWcgcmVn cykuDQo+ICsgKi8NCj4gKyNkZWZpbmUgQ01EX1JFU0VUCUJJVCgxKQ0KPiArLyogRXZlbnQgSW50 ZXJydXB0IEVuYWJsZSAtIGEgJzEnIGFsbG93cyBpbnRlcnJ1cHRzIGZyb20gdGhlIGNvbnRyb2xs ZXIuICovDQo+ICsjZGVmaW5lIENNRF9JTlRFCUJJVCgyKQ0KPiArLyoNCj4gKyAqIERldmljZSBT eXN0ZW0gRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAtIGdldCBvdXQtb2YtYmFuZCBzaWduYWwgZm9y DQo+ICsgKiBjb250cm9sbGVyIGVycm9ycy4NCj4gKyAqLw0KPiArI2RlZmluZSBDTURfRFNFSUUJ QklUKDMpDQo+ICsvKiBkZXZpY2UgY29udHJvbGxlciBzYXZlL3Jlc3RvcmUgc3RhdGUuICovDQo+ ICsjZGVmaW5lIENNRF9DU1MJCUJJVCg4KQ0KPiArI2RlZmluZSBDTURfQ1JTCQlCSVQoOSkNCj4g Ky8qDQo+ICsgKiBFbmFibGUgV3JhcCBFdmVudCAtICcxJyBtZWFucyBkZXZpY2UgY29udHJvbGxl ciBnZW5lcmF0ZXMgYW4gZXZlbnQNCj4gKyAqIHdoZW4gTUZJTkRFWCB3cmFwcy4NCj4gKyAqLw0K PiArI2RlZmluZSBDTURfRVdFCQlCSVQoMTApDQo+ICsvKmJpdCAxMyBDRU0gRW5hYmxlIChDTUUp ICovDQo+ICsjZGVmaW5lIENNRF9ERVZFTglCSVQoMTcpDQo+ICsvKiBiaXRzIDE2OjMxIGFyZSBy ZXNlcnZlZCAoYW5kIHNob3VsZCBiZSBwcmVzZXJ2ZWQgb24gd3JpdGVzKS4gKi8NCj4gKw0KPiAr LyogQ29tbWFuZCByZWdpc3RlciB2YWx1ZXMgdG8gZGlzYWJsZSBpbnRlcnJ1cHRzLiAqLw0KPiAr I2RlZmluZSBDRE5TUF9JUlFTCShDTURfSU5URSB8IENNRF9EU0VJRSB8IENNRF9FV0UpDQo+ICsN Cj4gKy8qIFVTQlNUUyAtIFVTQiBzdGF0dXMgLSBiaXRtYXNrcyAqLw0KPiArLyogY29udHJvbGxl ciBub3QgcnVubmluZyAtIHNldCB0byAxIHdoZW4gcnVuL3N0b3AgYml0IGlzIGNsZWFyZWQuICov DQo+ICsjZGVmaW5lIFNUU19IQUxUCUJJVCgwKQ0KPiArLyoNCj4gKyAqIHNlcmlvdXMgZXJyb3Is IGUuZy4gUENJIHBhcml0eSBlcnJvci4gVGhlIGNvbnRyb2xsZXIgd2lsbCBjbGVhcg0KPiArICog dGhlIHJ1bi9zdG9wIGJpdC4NCj4gKyAqLw0KPiArI2RlZmluZSBTVFNfRkFUQUwJQklUKDIpDQo+ ICsvKiBldmVudCBpbnRlcnJ1cHQgLSBjbGVhciB0aGlzIHByaW9yIHRvIGNsZWFyaW5nIGFueSBJ UCBmbGFncyBpbiBJUiBzZXQuKi8NCj4gKyNkZWZpbmUgU1RTX0VJTlQJQklUKDMpDQo+ICsvKiBw b3J0IGNoYW5nZSBkZXRlY3QgKi8NCj4gKyNkZWZpbmUgU1RTX1BDRAkJQklUKDQpDQo+ICsvKiBz YXZlIHN0YXRlIHN0YXR1cyAtICcxJyBtZWFucyBkZXZpY2UgY29udHJvbGxlciBpcyBzYXZpbmcg c3RhdGUuICovDQo+ICsjZGVmaW5lIFNUU19TU1MJCUJJVCg4KQ0KPiArLyogcmVzdG9yZSBzdGF0 ZSBzdGF0dXMgLSAnMScgbWVhbnMgY29udHJvbGxlcnMgaXMgcmVzdG9yaW5nIHN0YXRlLiAqLw0K PiArI2RlZmluZSBTVFNfUlNTCQlCSVQoOSkNCj4gKy8qIHRydWU6IHNhdmUgb3IgcmVzdG9yZSBl cnJvciAqLw0KPiArI2RlZmluZSBTVFNfU1JFCQlCSVQoMTApDQo+ICsvKiB0cnVlOiBkZXZpY2Ug Tm90IFJlYWR5IHRvIGFjY2VwdCBkb29yYmVsbCBvciBvcCByZWcgd3JpdGVzIGFmdGVyIHJlc2V0 LiAqLw0KPiArI2RlZmluZSBTVFNfQ05SCQlCSVQoMTEpDQo+ICsvKiB0cnVlOiBpbnRlcm5hbCBE ZXZpY2UgQ29udHJvbGxlciBFcnJvci4qLw0KPiArI2RlZmluZSBTVFNfSENFCQlCSVQoMTIpDQo+ ICsNCj4gKy8qIENSQ1IgLSBDb21tYW5kIFJpbmcgQ29udHJvbCBSZWdpc3RlciAtIGNtZF9yaW5n IGJpdG1hc2tzLiAqLw0KPiArLyogYml0IDAgaXMgdGhlIGNvbW1hbmQgcmluZyBjeWNsZSBzdGF0 ZS4gKi8NCj4gKyNkZWZpbmUgQ01EX1JJTkdfQ1MJCUJJVCgwKQ0KPiArLyogc3RvcCByaW5nIGlt bWVkaWF0ZWx5IC0gYWJvcnQgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgY29tbWFuZC4gKi8NCj4g KyNkZWZpbmUgQ01EX1JJTkdfQUJPUlQJCUJJVCgyKQ0KPiArLyoNCj4gKyAqIENvbW1hbmQgUmlu ZyBCdXN5Lg0KPiArICogU2V0IHdoZW4gRG9vcmJlbGwgcmVnaXN0ZXIgaXMgd3JpdHRlbiB3aXRo IERCIGZvciBjb21tYW5kIGFuZCBjbGVhcmVkIHdoZW4NCj4gKyAqIHRoZSBjb250cm9sbGVyIHJl YWNoZWQgZW5kIG9mIENSLg0KPiArICovDQo+ICsjZGVmaW5lIENNRF9SSU5HX0JVU1kocCkJKChw KSAmIEJJVCg0KSkNCj4gKy8qIHRydWU6IGNvbW1hbmQgcmluZyBpcyBydW5uaW5nICovDQo+ICsj ZGVmaW5lIENNRF9SSU5HX1JVTk5JTkcJQklUKDMpDQo+ICsvKiBDb21tYW5kIFJpbmcgcG9pbnRl ciAtIGJpdCBtYXNrIGZvciB0aGUgbG93ZXIgMzIgYml0cy4gKi8NCj4gKyNkZWZpbmUgQ01EX1JJ TkdfUlNWRF9CSVRTCUdFTk1BU0soNSwgMCkNCj4gKw0KPiArLyogQ09ORklHIC0gQ29uZmlndXJl IFJlZ2lzdGVyIC0gY29uZmlnX3JlZyBiaXRtYXNrcy4gKi8NCj4gKy8qIGJpdHMgMDo3IC0gbWF4 aW11bSBudW1iZXIgb2YgZGV2aWNlIHNsb3RzIGVuYWJsZWQuICovDQo+ICsjZGVmaW5lIE1BWF9E RVZTCQlHRU5NQVNLKDcsIDApDQo+ICsvKiBiaXQgODogVTMgRW50cnkgRW5hYmxlZCwgYXNzZXJ0 IFBMQyB3aGVuIGNvbnRyb2xsZXIgZW50ZXJzIFUzLiAqLw0KPiArI2RlZmluZSBDT05GSUdfVTNF CQlCSVQoOCkNCj4gKw0KPiArLyogUE9SVFNDIC0gUG9ydCBTdGF0dXMgYW5kIENvbnRyb2wgUmVn aXN0ZXIgLSBwb3J0X3JlZ19iYXNlIGJpdG1hc2tzICovDQo+ICsvKiB0cnVlOiBkZXZpY2UgY29u bmVjdGVkLiAqLw0KPiArI2RlZmluZSBQT1JUX0NPTk5FQ1QJCUJJVCgwKQ0KPiArLyogdHJ1ZTog cG9ydCBlbmFibGVkLiAqLw0KPiArI2RlZmluZSBQT1JUX1BFRAkJQklUKDEpDQo+ICsvKiB0cnVl OiBwb3J0IHJlc2V0IHNpZ25hbGluZyBhc3NlcnRlZC4gKi8NCj4gKyNkZWZpbmUgUE9SVF9SRVNF VAkJQklUKDQpDQo+ICsvKg0KPiArICogUG9ydCBMaW5rIFN0YXRlIC0gYml0cyA1OjgNCj4gKyAq IEEgcmVhZCBnaXZlcyB0aGUgY3VycmVudCBsaW5rIFBNIHN0YXRlIG9mIHRoZSBwb3J0LA0KPiAr ICogYSB3cml0ZSB3aXRoIExpbmsgU3RhdGUgV3JpdGUgU3Ryb2JlIHNldCBzZXRzIHRoZSBsaW5r IHN0YXRlLg0KPiArICovDQo+ICsjZGVmaW5lIFBPUlRfUExTX01BU0sJCUdFTk1BU0soOCwgNSkN Cj4gKyNkZWZpbmUgWERFVl9VMAkJCSgweDAgPDwgNSkNCj4gKyNkZWZpbmUgWERFVl9VMQkJCSgw eDEgPDwgNSkNCj4gKyNkZWZpbmUgWERFVl9VMgkJCSgweDIgPDwgNSkNCj4gKyNkZWZpbmUgWERF Vl9VMwkJCSgweDMgPDwgNSkNCj4gKyNkZWZpbmUgWERFVl9ESVNBQkxFRAkJKDB4NCA8PCA1KQ0K PiArI2RlZmluZSBYREVWX1JYREVURUNUCQkoMHg1IDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfSU5B Q1RJVkUJCSgweDYgPDwgNSkNCj4gKyNkZWZpbmUgWERFVl9QT0xMSU5HCQkoMHg3IDw8IDUpDQo+ ICsjZGVmaW5lIFhERVZfUkVDT1ZFUlkJCSgweDggPDwgNSkNCj4gKyNkZWZpbmUgWERFVl9IT1Rf UkVTRVQJCSgweDkgPDwgNSkNCj4gKyNkZWZpbmUgWERFVl9DT01QX01PREUJCSgweGEgPDwgNSkN Cj4gKyNkZWZpbmUgWERFVl9URVNUX01PREUJCSgweGIgPDwgNSkNCj4gKyNkZWZpbmUgWERFVl9S RVNVTUUJCSgweGYgPDwgNSkNCj4gKy8qIHRydWU6IHBvcnQgaGFzIHBvd2VyLiAqLw0KPiArI2Rl ZmluZSBQT1JUX1BPV0VSCQlCSVQoOSkNCj4gKy8qDQo+ICsgKiBiaXRzIDEwOjEzIGluZGljYXRl IGRldmljZSBzcGVlZDoNCj4gKyAqIDAgLSB1bmRlZmluZWQgc3BlZWQgLSBwb3J0IGhhc24ndCBi ZSBpbml0aWFsaXplZCBieSBhIHJlc2V0IHlldA0KPiArICogMSAtIGZ1bGwgc3BlZWQNCj4gKyAq IDIgLSBSZXNlcnZlZCAoTG93IFNwZWVkIG5vdCBzdXBwb3J0ZWQNCj4gKyAqIDMgLSBoaWdoIHNw ZWVkDQo+ICsgKiA0IC0gc3VwZXIgc3BlZWQNCj4gKyAqIDUgLSBzdXBlciBzcGVlZA0KPiArICog Ni0xNSByZXNlcnZlZA0KPiArICovDQo+ICsjZGVmaW5lIERFVl9TUEVFRF9NQVNLCQlHRU5NQVNL KDEzLCAxMCkNCj4gKyNkZWZpbmUgWERFVl9GUwkJCSgweDEgPDwgMTApDQo+ICsjZGVmaW5lIFhE RVZfSFMJCQkoMHgzIDw8IDEwKQ0KPiArI2RlZmluZSBYREVWX1NTCQkJKDB4NCA8PCAxMCkNCj4g KyNkZWZpbmUgWERFVl9TU1AJCSgweDUgPDwgMTApDQo+ICsjZGVmaW5lIERFVl9VTkRFRlNQRUVE KHApCSgoKHApICYgREVWX1NQRUVEX01BU0spID09ICgweDAgPDwgMTApKQ0KPiArI2RlZmluZSBE RVZfRlVMTFNQRUVEKHApCSgoKHApICYgREVWX1NQRUVEX01BU0spID09IFhERVZfRlMpDQo+ICsj ZGVmaW5lIERFVl9ISUdIU1BFRUQocCkJKCgocCkgJiBERVZfU1BFRURfTUFTSykgPT0gWERFVl9I UykNCj4gKyNkZWZpbmUgREVWX1NVUEVSU1BFRUQocCkJKCgocCkgJiBERVZfU1BFRURfTUFTSykg PT0gWERFVl9TUykNCj4gKyNkZWZpbmUgREVWX1NVUEVSU1BFRURQTFVTKHApCSgoKHApICYgREVW X1NQRUVEX01BU0spID09IFhERVZfU1NQKQ0KPiArI2RlZmluZSBERVZfU1VQRVJTUEVFRF9BTlko cCkJKCgocCkgJiBERVZfU1BFRURfTUFTSykgPj0gWERFVl9TUykNCj4gKyNkZWZpbmUgREVWX1BP UlRfU1BFRUQocCkJKCgocCkgPj4gMTApICYgMHgwZikNCj4gKy8qIFBvcnQgTGluayBTdGF0ZSBX cml0ZSBTdHJvYmUgLSBzZXQgdGhpcyB3aGVuIGNoYW5naW5nIGxpbmsgc3RhdGUgKi8NCj4gKyNk ZWZpbmUgUE9SVF9MSU5LX1NUUk9CRQlCSVQoMTYpDQo+ICsvKiB0cnVlOiBjb25uZWN0IHN0YXR1 cyBjaGFuZ2UgKi8NCj4gKyNkZWZpbmUgUE9SVF9DU0MJCUJJVCgxNykNCj4gKy8qIHRydWU6IHdh cm0gcmVzZXQgZm9yIGEgVVNCIDMuMCBkZXZpY2UgaXMgZG9uZS4gKi8NCj4gKyNkZWZpbmUgUE9S VF9XUkMJCUJJVCgxOSkNCj4gKy8qIHRydWU6IHJlc2V0IGNoYW5nZSAtIDEgdG8gMCB0cmFuc2l0 aW9uIG9mIFBPUlRfUkVTRVQgKi8NCj4gKyNkZWZpbmUgUE9SVF9SQwkJCUJJVCgyMSkNCj4gKy8q DQo+ICsgKiBwb3J0IGxpbmsgc3RhdHVzIGNoYW5nZSAtIHNldCBvbiBzb21lIHBvcnQgbGluayBz dGF0ZSB0cmFuc2l0aW9uczoNCj4gKyAqIFRyYW5zaXRpb24JCQlSZWFzb24NCj4gKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gKyAqIC0gVTMgdG8gUmVzdW1lCQlXYWtldXAgc2lnbmFsaW5nIGZy b20gYSBkZXZpY2UNCj4gKyAqIC0gUmVzdW1lIHRvIFJlY292ZXJ5IHRvIFUwCVVTQiAzLjAgZGV2 aWNlIHJlc3VtZQ0KPiArICogLSBSZXN1bWUgdG8gVTAJCVVTQiAyLjAgZGV2aWNlIHJlc3VtZQ0K PiArICogLSBVMyB0byBSZWNvdmVyeSB0byBVMAlTb2Z0d2FyZSByZXN1bWUgb2YgVVNCIDMuMCBk ZXZpY2UgY29tcGxldGUNCj4gKyAqIC0gVTMgdG8gVTAJCQlTb2Z0d2FyZSByZXN1bWUgb2YgVVNC IDIuMCBkZXZpY2UgY29tcGxldGUNCj4gKyAqIC0gVTIgdG8gVTAJCQlMMSByZXN1bWUgb2YgVVNC IDIuMSBkZXZpY2UgY29tcGxldGUNCj4gKyAqIC0gVTAgdG8gVTAJCQlMMSBlbnRyeSByZWplY3Rp b24gYnkgVVNCIDIuMSBkZXZpY2UNCj4gKyAqIC0gVTAgdG8gZGlzYWJsZWQJCUwxIGVudHJ5IGVy cm9yIHdpdGggVVNCIDIuMSBkZXZpY2UNCj4gKyAqIC0gQW55IHN0YXRlIHRvIGluYWN0aXZlCUVy cm9yIG9uIFVTQiAzLjAgcG9ydA0KPiArICovDQo+ICsjZGVmaW5lIFBPUlRfUExDCQlCSVQoMjIp DQo+ICsvKiBQb3J0IGNvbmZpZ3VyZSBlcnJvciBjaGFuZ2UgLSBwb3J0IGZhaWxlZCB0byBjb25m aWd1cmUgaXRzIGxpbmsgcGFydG5lci4gKi8NCj4gKyNkZWZpbmUgUE9SVF9DRUMJCUJJVCgyMykN Cj4gKy8qIFdha2Ugb24gY29ubmVjdCAoZW5hYmxlKS4gKi8NCj4gKyNkZWZpbmUgUE9SVF9XS0NP Tk5fRQkJQklUKDI1KQ0KPiArLyogV2FrZSBvbiBkaXNjb25uZWN0IChlbmFibGUpLiAqLw0KPiAr I2RlZmluZSBQT1JUX1dLRElTQ19FCQlCSVQoMjYpDQo+ICsvKiBJbmRpY2F0ZXMgaWYgV2FybSBS ZXNldCBpcyBiZWluZyByZWNlaXZlZC4gKi8NCj4gKyNkZWZpbmUgUE9SVF9XUgkJCUJJVCgzMSkN Cj4gKw0KPiArI2RlZmluZSBQT1JUX0NIQU5HRV9CSVRTIChQT1JUX0NTQyB8IFBPUlRfV1JDIHwg UE9SVF9SQyB8IFBPUlRfUExDIHwgUE9SVF9DRUMpDQo+ICsNCj4gKy8qIFBPUlRQTVNDVVNCMyAt IFBvcnQgUG93ZXIgTWFuYWdlbWVudCBTdGF0dXMgYW5kIENvbnRyb2wgLSBiaXRtYXNrcy4gKi8N Cj4gKy8qICBFbmFibGVzIFUxIGVudHJ5LiAqLw0KPiArI2RlZmluZSBQT1JUX1UxX1RJTUVPVVRf TUFTSwlHRU5NQVNLKDcsIDApDQo+ICsjZGVmaW5lIFBPUlRfVTFfVElNRU9VVChwKQkoKHApICYg UE9SVF9VMV9USU1FT1VUX01BU0spDQo+ICsvKiBFbmFibGVzIFUyIGVudHJ5IC4qLw0KPiArI2Rl ZmluZSBQT1JUX1UyX1RJTUVPVVRfTUFTSwlHRU5NQVNLKDE0LCA4KQ0KPiArI2RlZmluZSBQT1JU X1UyX1RJTUVPVVQocCkJKCgocCkgPDwgOCkgJiBQT1JUX1UyX1RJTUVPVVRfTUFTSykNCj4gKw0K PiArLyogUE9SVFBNU0NVU0IyIC0gUG9ydCBQb3dlciBNYW5hZ2VtZW50IFN0YXR1cyBhbmQgQ29u dHJvbCAtIGJpdG1hc2tzLiAqLw0KPiArI2RlZmluZSBQT1JUX0wxU19NQVNLCQlHRU5NQVNLKDIs IDApDQo+ICsjZGVmaW5lIFBPUlRfTDFTKHApCQkoKHApICYgR0VOTUFTSygyLCAwKSkNCj4gKyNk ZWZpbmUgUE9SVF9MMVNfQUNLCQlQT1JUX0wxUygxKQ0KPiArI2RlZmluZSBQT1JUX0wxU19OWUVU CQlQT1JUX0wxUygyKQ0KPiArI2RlZmluZSBQT1JUX0wxU19TVEFMTAkJUE9SVF9MMVMoMykNCj4g KyNkZWZpbmUgUE9SVF9MMVNfVElNRU9VVAlQT1JUX0wxUyg0KQ0KPiArLyogUmVtb3RlIFdha2Ug RW5hYmxlLiAqLw0KPiArI2RlZmluZSBQT1JUX1JXRQkJQklUKDMpDQo+ICsvKiBCZXN0IEVmZm9y dCBTZXJ2aWNlIExhdGVuY3kgKEJFU0wpLiAqLw0KPiArI2RlZmluZSBQT1JUX0JFU0wocCkJCSgo KHApIDw8IDQpICYgR0VOTUFTSyg3LCA0KSkNCj4gKy8qIEhhcmR3YXJlIExQTSBFbmFibGUgKEhM RSkuICovDQo+ICsjZGVmaW5lIFBPUlRfSExFCQlCSVQoMTYpDQo+ICsvKiBSZWNlaXZlZCBCZXN0 IEVmZm9ydCBTZXJ2aWNlIExhdGVuY3kgKEJFU0wpLiAqLw0KPiArI2RlZmluZSBQT1JUX1JSQkVT TChwKQkJKCgocCkgJiBHRU5NQVNLKDIwLCAxNykpID4+IDE3KQ0KPiArLyogUG9ydCBUZXN0IENv bnRyb2wuICovDQo+ICsjZGVmaW5lIFBPUlRfVEVTVF9NT0RFX01BU0sJR0VOTUFTSygzMSwgMjgp DQo+ICsjZGVmaW5lIFBPUlRfVEVTVF9NT0RFKHApCSgoKHApIDw8IDI4KSAmIEdFTk1BU0soMzEs IDI4KSkNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3BfaW50cl9yZWcgLSBJbnRlcnJ1 cHQgUmVnaXN0ZXIgU2V0Lg0KPiArICogQGlycV9wZW5kaW5nOiBJTUFOIC0gSW50ZXJydXB0IE1h bmFnZW1lbnQgUmVnaXN0ZXIuIFVzZWQgdG8gZW5hYmxlDQo+ICsgKiAgICAgICAgICAgICAgIGlu dGVycnVwdHMgYW5kIGNoZWNrIGZvciBwZW5kaW5nIGludGVycnVwdHMuDQo+ICsgKiBAaXJxX2Nv bnRyb2w6IElNT0QgLSBJbnRlcnJ1cHQgTW9kZXJhdGlvbiBSZWdpc3Rlci4NCj4gKyAqICAgICAg ICAgICAgICAgVXNlZCB0byB0aHJvdHRsZSBpbnRlcnJ1cHRzLg0KPiArICogQGVyc3Rfc2l6ZTog TnVtYmVyIG9mIHNlZ21lbnRzIGluIHRoZSBFdmVudCBSaW5nIFNlZ21lbnQgVGFibGUgKEVSU1Qp Lg0KPiArICogQGVyc3RfYmFzZTogRVJTVCBiYXNlIGFkZHJlc3MuDQo+ICsgKiBAZXJzdF9kZXF1 ZXVlOiBFdmVudCByaW5nIGRlcXVldWUgcG9pbnRlci4NCj4gKyAqDQo+ICsgKiBFYWNoIGludGVy cnVwdGVyIChkZWZpbmVkIGJ5IGEgTVNJLVggdmVjdG9yKSBoYXMgYW4gZXZlbnQgcmluZyBhbmQg YW4gRXZlbnQNCj4gKyAqIFJpbmcgU2VnbWVudCBUYWJsZSAoRVJTVCkgYXNzb2NpYXRlZCB3aXRo IGl0LiBUaGUgZXZlbnQgcmluZyBpcyBjb21wcmlzZWQgb2YNCj4gKyAqIG11bHRpcGxlIHNlZ21l bnRzIG9mIHRoZSBzYW1lIHNpemUuIFRoZSBjb250cm9sbGVyIHBsYWNlcyBldmVudHMgb24gdGhl IHJpbmcNCj4gKyAqIGFuZCAidXBkYXRlcyB0aGUgQ3ljbGUgYml0IGluIHRoZSBUUkJzIHRvIGlu ZGljYXRlIHRvIHNvZnR3YXJlIHRoZSBjdXJyZW50DQo+ICsgKiBwb3NpdGlvbiBvZiB0aGUgRW5x dWV1ZSBQb2ludGVyLiIgVGhlIGRyaXZlciBwcm9jZXNzZXMgdGhvc2UgZXZlbnRzIGFuZA0KPiAr ICogdXBkYXRlcyB0aGUgZGVxdWV1ZSBwb2ludGVyLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3Bf aW50cl9yZWcgew0KPiArCV9fbGUzMiBpcnFfcGVuZGluZzsNCj4gKwlfX2xlMzIgaXJxX2NvbnRy b2w7DQo+ICsJX19sZTMyIGVyc3Rfc2l6ZTsNCj4gKwlfX2xlMzIgcnN2ZDsNCj4gKwlfX2xlNjQg ZXJzdF9iYXNlOw0KPiArCV9fbGU2NCBlcnN0X2RlcXVldWU7DQo+ICt9Ow0KPiArDQo+ICsvKiBJ TUFOIC0gSW50ZXJydXB0IE1hbmFnZW1lbnQgUmVnaXN0ZXIgLSBpcnFfcGVuZGluZyBiaXRtYXNr cyBsLiAqLw0KPiArI2RlZmluZSBJTUFOX0lFCQkJQklUKDEpDQo+ICsjZGVmaW5lIElNQU5fSVAJ CQlCSVQoMCkNCj4gKy8qIGJpdHMgMjozMSBuZWVkIHRvIGJlIHByZXNlcnZlZCAqLw0KPiArI2Rl ZmluZSBJTUFOX0lFX1NFVChwKQkJKCgocCkgJiBJTUFOX0lFKSB8IDB4MikNCj4gKyNkZWZpbmUg SU1BTl9JRV9DTEVBUihwKQkoKChwKSAmIElNQU5fSUUpICYgfigweDIpKQ0KPiArDQo+ICsvKiBJ TU9EIC0gSW50ZXJydXB0ZXIgTW9kZXJhdGlvbiBSZWdpc3RlciAtIGlycV9jb250cm9sIGJpdG1h c2tzLiAqLw0KPiArLyoNCj4gKyAqIE1pbmltdW0gaW50ZXJ2YWwgYmV0d2VlbiBpbnRlcnJ1cHRz IChpbiAyNTBucyBpbnRlcnZhbHMpLiBUaGUgaW50ZXJ2YWwNCj4gKyAqIGJldHdlZW4gaW50ZXJy dXB0cyB3aWxsIGJlIGxvbmdlciBpZiB0aGVyZSBhcmUgbm8gZXZlbnRzIG9uIHRoZSBldmVudCBy aW5nLg0KPiArICogRGVmYXVsdCBpcyA0MDAwICgxIG1zKS4NCj4gKyAqLw0KPiArI2RlZmluZSBJ TU9EX0lOVEVSVkFMX01BU0sJR0VOTUFTSygxNSwgMCkNCj4gKy8qIENvdW50ZXIgdXNlZCB0byBj b3VudCBkb3duIHRoZSB0aW1lIHRvIHRoZSBuZXh0IGludGVycnVwdCAtIEhXIHVzZSBvbmx5ICov DQo+ICsjZGVmaW5lIElNT0RfQ09VTlRFUl9NQVNLCUdFTk1BU0soMzEsIDE2KQ0KPiArI2RlZmlu ZSBJTU9EX0RFRkFVTFRfSU5URVJWQUwJMA0KPiArDQo+ICsvKiBlcnN0X3NpemUgYml0bWFza3Mu ICovDQo+ICsvKiBQcmVzZXJ2ZSBiaXRzIDE2OjMxIG9mIGVyc3Rfc2l6ZS4gKi8NCj4gKyNkZWZp bmUgRVJTVF9TSVpFX01BU0sJCUdFTk1BU0soMzEsIDE2KQ0KPiArDQo+ICsvKiBlcnN0X2RlcXVl dWUgYml0bWFza3MuICovDQo+ICsvKg0KPiArICogRGVxdWV1ZSBFUlNUIFNlZ21lbnQgSW5kZXgg KERFU0kpIC0gU2VnbWVudCBudW1iZXIgKG9yIGFsaWFzKQ0KPiArICogd2hlcmUgdGhlIGN1cnJl bnQgZGVxdWV1ZSBwb2ludGVyIGxpZXMuIFRoaXMgaXMgYW4gb3B0aW9uYWwgSFcgaGludC4NCj4g KyAqLw0KPiArI2RlZmluZSBFUlNUX0RFU0lfTUFTSwkJR0VOTUFTSygyLCAwKQ0KPiArLyogRXZl bnQgSGFuZGxlciBCdXN5IChFSEIpIC0gaXMgdGhlIGV2ZW50IHJpbmcgc2NoZWR1bGVkIHRvIGJl IHNlcnZpY2VkLiAqLw0KPiArI2RlZmluZSBFUlNUX0VIQgkJQklUKDMpDQo+ICsjZGVmaW5lIEVS U1RfUFRSX01BU0sJCUdFTk1BU0soMywgMCkNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ru c3BfcnVuX3JlZ3MNCj4gKyAqIEBtaWNyb2ZyYW1lX2luZGV4OiBNRklOREVYIC0gY3VycmVudCBt aWNyb2ZyYW1lIG51bWJlci4NCj4gKyAqIEBpcl9zZXQ6IEFycmF5IG9mIEludGVycnVwdGVyIHJl Z2lzdGVycy4NCj4gKyAqDQo+ICsgKiBEZXZpY2UgQ29udHJvbGxlciBSdW50aW1lIFJlZ2lzdGVy czoNCj4gKyAqICJTb2Z0d2FyZSBzaG91bGQgcmVhZCBhbmQgd3JpdGUgdGhlc2UgcmVnaXN0ZXJz IHVzaW5nIG9ubHkgRHdvcmQgKDMyIGJpdCkNCj4gKyAqIG9yIGxhcmdlciBhY2Nlc3NlcyINCj4g KyAqLw0KPiArc3RydWN0IGNkbnNwX3J1bl9yZWdzIHsNCj4gKwlfX2xlMzIgbWljcm9mcmFtZV9p bmRleDsNCj4gKwlfX2xlMzIgcnN2ZFs3XTsNCj4gKwlzdHJ1Y3QgY2Ruc3BfaW50cl9yZWcgaXJf c2V0WzEyOF07DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIFVTQjIuMCBQb3J0IFBlcmlwaGVy YWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMuDQo+ICsgKiBAZXh0X2NhcDogSGVhZGVyIHJlZ2lz dGVyIGZvciBFeHRlbmRlZCBDYXBhYmlsaXR5Lg0KPiArICogQHBvcnRfcmVnMTogVGltZXIgQ29u ZmlndXJhdGlvbiBSZWdpc3Rlci4NCj4gKyAqIEBwb3J0X3JlZzI6IFRpbWVyIENvbmZpZ3VyYXRp b24gUmVnaXN0ZXIuDQo+ICsgKiBAcG9ydF9yZWczOiBUaW1lciBDb25maWd1cmF0aW9uIFJlZ2lz dGVyLg0KPiArICogQHBvcnRfcmVnNDogVGltZXIgQ29uZmlndXJhdGlvbiBSZWdpc3Rlci4NCj4g KyAqIEBwb3J0X3JlZzU6IFRpbWVyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIuDQo+ICsgKiBAcG9y dF9yZWc2OiBDaGlja2VuIGJpdHMgZm9yIFVTQjIwUFBQLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ru c3BfMjBwb3J0X2NhcCB7DQo+ICsJX19sZTMyIGV4dF9jYXA7DQo+ICsJX19sZTMyIHBvcnRfcmVn MTsNCj4gKwlfX2xlMzIgcG9ydF9yZWcyOw0KPiArCV9fbGUzMiBwb3J0X3JlZzM7DQo+ICsJX19s ZTMyIHBvcnRfcmVnNDsNCj4gKwlfX2xlMzIgcG9ydF9yZWc1Ow0KPiArCV9fbGUzMiBwb3J0X3Jl ZzY7DQo+ICt9Ow0KPiArDQo+ICsvKiBFeHRlbmRlZCBjYXBhYmlsaXR5IHJlZ2lzdGVyIGZpZWxk cyAqLw0KPiArI2RlZmluZSBFWFRfQ0FQU19JRChwKQkJCSgoKHApID4+IDApICYgR0VOTUFTSyg3 LCAwKSkNCj4gKyNkZWZpbmUgRVhUX0NBUFNfTkVYVChwKQkJKCgocCkgPj4gOCkgJiBHRU5NQVNL KDcsIDApKQ0KPiArLyogRXh0ZW5kZWQgY2FwYWJpbGl0eSBJRHMgLSBJRCAwIHJlc2VydmVkICov DQo+ICsjZGVmaW5lIEVYVF9DQVBTX1BST1RPQ09MCQkyDQo+ICsNCj4gKy8qIFVTQiAyLjAgUG9y dCBQZXJpcGhlcmFsIENvbmZpZ3VyYXRpb24gRXh0ZW5kZWQgQ2FwYWJpbGl0eSAqLw0KPiArI2Rl ZmluZSBFWFRfQ0FQX0NGR19ERVZfMjBQT1JUX0NBUF9JRAkweEMxDQo+ICsvKg0KPiArICogU2V0 dGluZyB0aGlzIGJpdCB0byAnMScgZW5hYmxlcyBhdXRvbWF0aWMgd2FrZXVwIGZyb20gTDEgc3Rh dGUgb24gdHJhbnNmZXINCj4gKyAqIFRSQiBwcmVwYXJlZCB3aGVuIFVTQlNTUCBvcGVyYXRlcyBp biBVU0IyLjAgbW9kZS4NCj4gKyAqLw0KPiArI2RlZmluZSBQT1JUX1JFRzZfTDFfTDBfSFdfRU4J CUJJVCgxKQ0KPiArLyoNCj4gKyAqIFNldHRpbmcgdGhpcyBiaXQgdG8gJzEnIGZvcmNlcyBGdWxs IFNwZWVkIHdoZW4gVVNCU1NQIG9wZXJhdGVzIGluIFVTQjIuMA0KPiArICogbW9kZSAoZGlzYWJs ZXMgSGlnaCBTcGVlZCkuDQo+ICsgKi8NCj4gKyNkZWZpbmUgUE9SVF9SRUc2X0ZPUkNFX0ZTCQlC SVQoMCkNCj4gKw0KPiArLyoqDQo+ICsgKiBVU0IzLnggUG9ydCBQZXJpcGhlcmFsIENvbmZpZ3Vy YXRpb24gUmVnaXN0ZXJzLg0KPiArICogQGV4dF9jYXA6IEhlYWRlciByZWdpc3RlciBmb3IgRXh0 ZW5kZWQgQ2FwYWJpbGl0eS4NCj4gKyAqIEBtb2RlX2FkZHI6IE1pc2NlbGxhbmVvdXMgM3hQT1JU IG9wZXJhdGlvbiBtb2RlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIuDQo+ICsgKi8NCj4gK3N0cnVj dCBjZG5zcF8zeHBvcnRfY2FwIHsNCj4gKwlfX2xlMzIgZXh0X2NhcDsNCj4gKwlfX2xlMzIgbW9k ZV9hZGRyOw0KPiArfTsNCj4gKw0KPiArLyogRXh0ZW5kZWQgQ2FwYWJpbGl0eSBIZWFkZXIgZm9y IDNYUG9ydCBDb25maWd1cmF0aW9uIFJlZ2lzdGVycy4gKi8NCj4gKyNkZWZpbmUgRF9YRUNfQ0ZH XzNYUE9SVF9DQVAJCTB4QzANCj4gKyNkZWZpbmUgQ0ZHXzNYUE9SVF9TU1BfU1VQUE9SVAkJQklU KDMxKQ0KPiArDQo+ICsvKiBSZXZpc2lvbiBFeHRlbmRlZCBDYXBhYmlsaXR5IElEICovDQo+ICsj ZGVmaW5lIFJUTF9SRVZfQ0FQCQkJMHhDNA0KPiArI2RlZmluZSBSVExfUkVWX0NBUF9SWF9CVUZG X0NNRF9TSVpFCUJJVE1BU0soMzEsIDI0KQ0KPiArI2RlZmluZSBSVExfUkVWX0NBUF9SWF9CVUZG X1NJWkUJQklUTUFTSygxNSwgMCkNCj4gKyNkZWZpbmUgUlRMX1JFVl9DQVBfVFhfQlVGRl9DTURf U0laRQlCSVRNQVNLKDMxLCAyNCkNCj4gKyNkZWZpbmUgUlRMX1JFVl9DQVBfVFhfQlVGRl9TSVpF CUJJVE1BU0soMTUsIDApDQo+ICsNCj4gKyNkZWZpbmUgQ0ROU1BfVkVSXzEgMHgwMDAwMDAwMA0K PiArI2RlZmluZSBDRE5TUF9WRVJfMiAweDEwMDAwMDAwDQo+ICsNCj4gKyNkZWZpbmUgQ0ROU1Bf SUZfRVBfRVhJU1QocGRldiwgZXBfbnVtLCBkaXIpICgocGRldiktPnJldl9jYXAuZXBfc3VwcG9y dGVkICYgXA0KPiArCQkJICAoQklUKGVwX251bSkgPDwgKGRpciA/IDAgOiAxNikpKQ0KPiArDQo+ ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9yZXZfY2FwIC0gY29udHJvbGxlciBjYXBhYmlsaXRp ZXMgLg0KPiArICogQGV4dF9jYXA6IEhlYWRlciBmb3IgUlRMIFJldmlzaW9uIEV4dGVuZGVkIENh cGFiaWxpdHkuDQo+ICsgKiBAcnRsX3JldmlzaW9uOiBSVEwgcmV2aXNpb24uDQo+ICsgKiBAcnhf YnVmZl9zaXplOiBSeCBidWZmZXIgc2l6ZXMuDQo+ICsgKiBAdHhfYnVmZl9zaXplOiBUeCBidWZm ZXIgc2l6ZXMuDQo+ICsgKiBAZXBfc3VwcG9ydGVkOiBTdXBwb3J0ZWQgZW5kcG9pbnRzLg0KPiAr ICogQGN0cmxfcmV2aXNpb246IENvbnRyb2xsZXIgcmV2aXNpb24gSUQuDQo+ICsgKi8NCj4gK3N0 cnVjdCBjZG5zcF9yZXZfY2FwIHsNCj4gKwlfX2xlMzIgZXh0X2NhcDsNCj4gKwlfX2xlMzIgcnRs X3JldmlzaW9uOw0KPiArCV9fbGUzMiByeF9idWZmX3NpemU7DQo+ICsJX19sZTMyIHR4X2J1ZmZf c2l6ZTsNCj4gKwlfX2xlMzIgZXBfc3VwcG9ydGVkOw0KPiArCV9fbGUzMiBjdHJsX3JldmlzaW9u Ow0KPiArfTsNCj4gKw0KPiArLyogVVNCMi4wIFBvcnQgUGVyaXBoZXJhbCBDb25maWd1cmF0aW9u IFJlZ2lzdGVycy4gKi8NCj4gKyNkZWZpbmUgRF9YRUNfUFJFX1JFR1NfQ0FQCQkweEM4DQo+ICsj ZGVmaW5lIFJFR19DSElDS0VOX0JJVFNfMl9PRkZTRVQJMHg0OA0KPiArI2RlZmluZSBDSElDS0VO X1hETUFfMl9UUF9DQUNIRV9ESVMJQklUKDI4KQ0KPiArDQo+ICsvKiBYQlVGIEV4dGVuZGVkIENh cGFiaWxpdHkgSUQuICovDQo+ICsjZGVmaW5lIFhCVUZfQ0FQX0lECQkJMHhDQg0KPiArI2RlZmlu ZSBYQlVGX1JYX1RBR19NQVNLXzBfT0ZGU0VUCTB4MUMNCj4gKyNkZWZpbmUgWEJVRl9SWF9UQUdf TUFTS18xX09GRlNFVAkweDI0DQo+ICsjZGVmaW5lIFhCVUZfVFhfQ01EX09GRlNFVAkJMHgyQw0K PiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9kb29yYmVsbF9hcnJheS4NCj4gKyAqIEBj bWRfZGI6IENvbW1hbmQgcmluZyBkb29yYmVsbCByZWdpc3Rlci4NCj4gKyAqIEBlcF9kYjogRW5k cG9pbnQgcmluZyBkb29yYmVsbCByZWdpc3Rlci4NCj4gKyAqICAgICAgICAgQml0cyAwIC0gNzog RW5kcG9pbnQgdGFyZ2V0Lg0KPiArICogICAgICAgICBCaXRzIDggLSAxNTogUnN2ZFouDQo+ICsg KiAgICAgICAgIEJpdHMgMTYgLSAzMTogU3RyZWFtIElELg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ru c3BfZG9vcmJlbGxfYXJyYXkgew0KPiArCV9fbGUzMiBjbWRfZGI7DQo+ICsJX19sZTMyIGVwX2Ri Ow0KPiArfTsNCj4gKw0KPiArI2RlZmluZSBEQl9WQUxVRShlcCwgc3RyZWFtKQkJKCgoKGVwKSAr IDEpICYgMHhmZikgfCAoKHN0cmVhbSkgPDwgMTYpKQ0KPiArI2RlZmluZSBEQl9WQUxVRV9FUDBf T1VUKGVwLCBzdHJlYW0pCSgoZXApICYgMHhmZikNCj4gKyNkZWZpbmUgREJfVkFMVUVfQ01ECQkJ MHgwMDAwMDAwMA0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9jb250YWluZXJfY3R4 Lg0KPiArICogQHR5cGU6IFR5cGUgb2YgY29udGV4dC4gVXNlZCB0byBjYWxjdWxhdGVkIG9mZnNl dHMgdG8gY29udGFpbmVkIGNvbnRleHRzLg0KPiArICogQHNpemU6IFNpemUgb2YgdGhlIGNvbnRl eHQgZGF0YS4NCj4gKyAqIEBjdHhfc2l6ZTogY29udGV4dCBkYXRhIHN0cnVjdHVyZSBzaXplIC0g NjQgb3IgMzIgYml0cy4NCj4gKyAqIEBkbWE6IGRtYSBhZGRyZXNzIG9mIHRoZSBieXRlcy4NCj4g KyAqIEBieXRlczogVGhlIHJhdyBjb250ZXh0IGRhdGEgZ2l2ZW4gdG8gSFcuDQo+ICsgKg0KPiAr ICogUmVwcmVzZW50cyBlaXRoZXIgYSBEZXZpY2Ugb3IgSW5wdXQgY29udGV4dC4gSG9sZHMgYSBw b2ludGVyIHRvIHRoZSByYXcNCj4gKyAqIG1lbW9yeSB1c2VkIGZvciB0aGUgY29udGV4dCAoYnl0 ZXMpIGFuZCBkbWEgYWRkcmVzcyBvZiBpdCAoZG1hKS4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNw X2NvbnRhaW5lcl9jdHggew0KPiArCXVuc2lnbmVkIGludCB0eXBlOw0KPiArI2RlZmluZSBDRE5T UF9DVFhfVFlQRV9ERVZJQ0UJMHgxDQo+ICsjZGVmaW5lIENETlNQX0NUWF9UWVBFX0lOUFVUCTB4 Mg0KPiArCWludCBzaXplOw0KPiArCWludCBjdHhfc2l6ZTsNCj4gKwlkbWFfYWRkcl90IGRtYTsN Cj4gKwl1OCAqYnl0ZXM7DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9z bG90X2N0eA0KPiArICogQGRldl9pbmZvOiBEZXZpY2Ugc3BlZWQsIGFuZCBsYXN0IHZhbGlkIGVu ZHBvaW50Lg0KPiArICogQGRldl9wb3J0OiBEZXZpY2UgcG9ydCBudW1iZXIgdGhhdCBpcyBuZWVk ZWQgdG8gYWNjZXNzIHRoZSBVU0IgZGV2aWNlLg0KPiArICogQGludF90YXJnZXQ6IEludGVycnVw dGVyIHRhcmdldCBudW1iZXIuDQo+ICsgKiBAZGV2X3N0YXRlOiBTbG90IHN0YXRlIGFuZCBkZXZp Y2UgYWRkcmVzcy4NCj4gKyAqDQo+ICsgKiBTbG90IENvbnRleHQgLSBUaGlzIGFzc3VtZXMgdGhl IGNvbnRyb2xsZXIgdXNlcyAzMi1ieXRlIGNvbnRleHQNCj4gKyAqIHN0cnVjdHVyZXMuIElmIHRo ZSBjb250cm9sbGVyIHVzZXMgNjQtYnl0ZSBjb250ZXh0cywgdGhlcmUgaXMgYW4gYWRkaXRpb25h bA0KPiArICogMzIgYnl0ZXMgcmVzZXJ2ZWQgYXQgdGhlIGVuZCBvZiB0aGUgc2xvdCBjb250ZXh0 IGZvciBjb250cm9sbGVyIGludGVybmFsIHVzZS4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX3Ns b3RfY3R4IHsNCj4gKwlfX2xlMzIgZGV2X2luZm87DQo+ICsJX19sZTMyIGRldl9wb3J0Ow0KPiAr CV9fbGUzMiBpbnRfdGFyZ2V0Ow0KPiArCV9fbGUzMiBkZXZfc3RhdGU7DQo+ICsJLyogb2Zmc2V0 IDB4MTAgdG8gMHgxZiByZXNlcnZlZCBmb3IgY29udHJvbGxlciBpbnRlcm5hbCB1c2UuICovDQo+ ICsJX19sZTMyIHJlc2VydmVkWzRdOw0KPiArfTsNCj4gKw0KPiArLyogQml0cyAyMDoyMyBpbiB0 aGUgU2xvdCBDb250ZXh0IGFyZSB0aGUgc3BlZWQgZm9yIHRoZSBkZXZpY2UuICovDQo+ICsjZGVm aW5lIFNMT1RfU1BFRURfRlMJCShYREVWX0ZTIDw8IDEwKQ0KPiArI2RlZmluZSBTTE9UX1NQRUVE X0hTCQkoWERFVl9IUyA8PCAxMCkNCj4gKyNkZWZpbmUgU0xPVF9TUEVFRF9TUwkJKFhERVZfU1Mg PDwgMTApDQo+ICsjZGVmaW5lIFNMT1RfU1BFRURfU1NQCQkoWERFVl9TU1AgPDwgMTApDQo+ICsN Cj4gKy8qIGRldl9pbmZvIGJpdG1hc2tzLiAqLw0KPiArLyogRGV2aWNlIHNwZWVkIC0gdmFsdWVz IGRlZmluZWQgYnkgUE9SVFNDIERldmljZSBTcGVlZCBmaWVsZCAtIDIwOjIzLiAqLw0KPiArI2Rl ZmluZSBERVZfU1BFRUQJCUdFTk1BU0soMjMsIDIwKQ0KPiArI2RlZmluZSBHRVRfREVWX1NQRUVE KG4pCSgoKG4pICYgREVWX1NQRUVEKSA+PiAyMCkNCj4gKy8qIEluZGV4IG9mIHRoZSBsYXN0IHZh bGlkIGVuZHBvaW50IGNvbnRleHQgaW4gdGhpcyBkZXZpY2UgY29udGV4dCAtIDI3OjMxLiAqLw0K PiArI2RlZmluZSBMQVNUX0NUWF9NQVNLCQlHRU5NQVNLKDMxLCAyNykNCj4gKyNkZWZpbmUgTEFT VF9DVFgocCkJCSgocCkgPDwgMjcpDQo+ICsjZGVmaW5lIExBU1RfQ1RYX1RPX0VQX05VTShwKQko KChwKSA+PiAyNykgLSAxKQ0KPiArI2RlZmluZSBTTE9UX0ZMQUcJCUJJVCgwKQ0KPiArI2RlZmlu ZSBFUDBfRkxBRwkJQklUKDEpDQo+ICsNCj4gKy8qIGRldl9wb3J0IGJpdG1hc2tzICovDQo+ICsv KiBEZXZpY2UgcG9ydCBudW1iZXIgdGhhdCBpcyBuZWVkZWQgdG8gYWNjZXNzIHRoZSBVU0IgZGV2 aWNlLiAqLw0KPiArI2RlZmluZSBERVZfUE9SVChwKQkJKCgocCkgJiAweGZmKSA8PCAxNikNCj4g Kw0KPiArLyogZGV2X3N0YXRlIGJpdG1hc2tzICovDQo+ICsvKiBVU0IgZGV2aWNlIGFkZHJlc3Mg LSBhc3NpZ25lZCBieSB0aGUgY29udHJvbGxlci4gKi8NCj4gKyNkZWZpbmUgREVWX0FERFJfTUFT SwkJR0VOTUFTSyg3LCAwKQ0KPiArLyogU2xvdCBzdGF0ZSAqLw0KPiArI2RlZmluZSBTTE9UX1NU QVRFCQlHRU5NQVNLKDMxLCAyNykNCj4gKyNkZWZpbmUgR0VUX1NMT1RfU1RBVEUocCkJKCgocCkg JiAoMHgxZiA8PCAyNykpID4+IDI3KQ0KPiArDQo+ICsjZGVmaW5lIFNMT1RfU1RBVEVfRElTQUJM RUQJMA0KPiArI2RlZmluZSBTTE9UX1NUQVRFX0VOQUJMRUQJU0xPVF9TVEFURV9ESVNBQkxFRA0K PiArI2RlZmluZSBTTE9UX1NUQVRFX0RFRkFVTFQJMQ0KPiArI2RlZmluZSBTTE9UX1NUQVRFX0FE RFJFU1NFRAkyDQo+ICsjZGVmaW5lIFNMT1RfU1RBVEVfQ09ORklHVVJFRAkzDQo+ICsNCj4gKy8q Kg0KPiArICogc3RydWN0IGNkbnNwX2VwX2N0eC4NCj4gKyAqIEBlcF9pbmZvOiBFbmRwb2ludCBz dGF0ZSwgc3RyZWFtcywgbXVsdCwgYW5kIGludGVydmFsIGluZm9ybWF0aW9uLg0KPiArICogQGVw X2luZm8yOiBJbmZvcm1hdGlvbiBvbiBlbmRwb2ludCB0eXBlLCBtYXggcGFja2V0IHNpemUsIG1h eCBidXJzdCBzaXplLA0KPiArICogICAgICAgICAgICBlcnJvciBjb3VudCwgYW5kIHdoZXRoZXIg dGhlIGNvbnRyb2xsZXIgd2lsbCBmb3JjZSBhbiBldmVudCBmb3INCj4gKyAqICAgICAgICAgICAg YWxsIHRyYW5zYWN0aW9ucy4NCj4gKyAqIEBkZXE6IDY0LWJpdCByaW5nIGRlcXVldWUgcG9pbnRl ciBhZGRyZXNzLiBJZiB0aGUgZW5kcG9pbnQgb25seQ0KPiArICogICAgICAgZGVmaW5lcyBvbmUg c3RyZWFtLCB0aGlzIHBvaW50cyB0byB0aGUgZW5kcG9pbnQgdHJhbnNmZXIgcmluZy4NCj4gKyAq ICAgICAgIE90aGVyd2lzZSwgaXQgcG9pbnRzIHRvIGEgc3RyZWFtIGNvbnRleHQgYXJyYXksIHdo aWNoIGhhcyBhDQo+ICsgKiAgICAgICByaW5nIHBvaW50ZXIgZm9yIGVhY2ggZmxvdy4NCj4gKyAq IEB0eF9pbmZvOiBBdmVyYWdlIFRSQiBsZW5ndGhzIGZvciB0aGUgZW5kcG9pbnQgcmluZyBhbmQN Cj4gKyAqCSAgICAgbWF4IHBheWxvYWQgd2l0aGluIGFuIEVuZHBvaW50IFNlcnZpY2UgSW50ZXJ2 YWwgVGltZSAoRVNJVCkuDQo+ICsgKg0KPiArICogRW5kcG9pbnQgQ29udGV4dCAtIFRoaXMgYXNz dW1lcyB0aGUgY29udHJvbGxlciB1c2VzIDMyLWJ5dGUgY29udGV4dA0KPiArICogc3RydWN0dXJl cy4gSWYgdGhlIGNvbnRyb2xsZXIgdXNlcyA2NC1ieXRlIGNvbnRleHRzLCB0aGVyZSBpcyBhbiBh ZGRpdGlvbmFsDQo+ICsgKiAzMiBieXRlcyByZXNlcnZlZCBhdCB0aGUgZW5kIG9mIHRoZSBlbmRw b2ludCBjb250ZXh0IGZvciBjb250cm9sbGVyIGludGVybmFsDQo+ICsgKiB1c2UuDQo+ICsgKi8N Cj4gK3N0cnVjdCBjZG5zcF9lcF9jdHggew0KPiArCV9fbGUzMiBlcF9pbmZvOw0KPiArCV9fbGUz MiBlcF9pbmZvMjsNCj4gKwlfX2xlNjQgZGVxOw0KPiArCV9fbGUzMiB0eF9pbmZvOw0KPiArCS8q IG9mZnNldCAweDE0IC0gMHgxZiByZXNlcnZlZCBmb3IgY29udHJvbGxlciBpbnRlcm5hbCB1c2Uu ICovDQo+ICsJX19sZTMyIHJlc2VydmVkWzNdOw0KPiArfTsNCj4gKw0KPiArLyogZXBfaW5mbyBi aXRtYXNrcy4gKi8NCj4gKy8qDQo+ICsgKiBFbmRwb2ludCBTdGF0ZSAtIGJpdHMgMDoyOg0KPiAr ICogMCAtIGRpc2FibGVkDQo+ICsgKiAxIC0gcnVubmluZw0KPiArICogMiAtIGhhbHRlZCBkdWUg dG8gaGFsdCBjb25kaXRpb24NCj4gKyAqIDMgLSBzdG9wcGVkDQo+ICsgKiA0IC0gVFJCIGVycm9y DQo+ICsgKiA1LTcgLSByZXNlcnZlZA0KPiArICovDQo+ICsjZGVmaW5lIEVQX1NUQVRFX01BU0sJ CUdFTk1BU0soMywgMCkNCj4gKyNkZWZpbmUgRVBfU1RBVEVfRElTQUJMRUQJMA0KPiArI2RlZmlu ZSBFUF9TVEFURV9SVU5OSU5HCTENCj4gKyNkZWZpbmUgRVBfU1RBVEVfSEFMVEVECQkyDQo+ICsj ZGVmaW5lIEVQX1NUQVRFX1NUT1BQRUQJMw0KPiArI2RlZmluZSBFUF9TVEFURV9FUlJPUgkJNA0K PiArI2RlZmluZSBHRVRfRVBfQ1RYX1NUQVRFKGN0eCkJKGxlMzJfdG9fY3B1KChjdHgpLT5lcF9p bmZvKSAmIEVQX1NUQVRFX01BU0spDQo+ICsNCj4gKy8qIE11bHQgLSBNYXggbnVtYmVyIG9mIGJ1 cnN0IHdpdGhpbiBhbiBpbnRlcnZhbCwgaW4gRVAgY29tcGFuaW9uIGRlc2MuICovDQo+ICsjZGVm aW5lIEVQX01VTFQocCkJCQkoKChwKSA8PCA4KSAmIEdFTk1BU0soOSwgOCkpDQo+ICsjZGVmaW5l IENUWF9UT19FUF9NVUxUKHApCQkoKChwKSAmIEdFTk1BU0soOSwgOCkpID4+IDgpDQo+ICsvKiBi aXRzIDEwOjE0IGFyZSBNYXggUHJpbWFyeSBTdHJlYW1zLiAqLw0KPiArLyogYml0IDE1IGlzIExp bmVhciBTdHJlYW0gQXJyYXkuICovDQo+ICsvKiBJbnRlcnZhbCAtIHBlcmlvZCBiZXR3ZWVuIHJl cXVlc3RzIHRvIGFuIGVuZHBvaW50IC0gMTI1dSBpbmNyZW1lbnRzLiAqLw0KPiArI2RlZmluZSBF UF9JTlRFUlZBTChwKQkJCSgoKHApIDw8IDE2KSAmIEdFTk1BU0soMjMsIDE2KSkNCj4gKyNkZWZp bmUgRVBfSU5URVJWQUxfVE9fVUZSQU1FUyhwKQkoMSA8PCAoKChwKSAmIEdFTk1BU0soMjMsIDE2 KSkgPj4gMTYpKQ0KPiArI2RlZmluZSBDVFhfVE9fRVBfSU5URVJWQUwocCkJCSgoKHApICYgR0VO TUFTSygyMywgMTYpKSA+PiAxNikNCj4gKyNkZWZpbmUgRVBfTUFYUFNUUkVBTVNfTUFTSwkJR0VO TUFTSygxNCwgMTApDQo+ICsjZGVmaW5lIEVQX01BWFBTVFJFQU1TKHApCQkoKChwKSA8PCAxMCkg JiBFUF9NQVhQU1RSRUFNU19NQVNLKQ0KPiArI2RlZmluZSBDVFhfVE9fRVBfTUFYUFNUUkVBTVMo cCkJKCgocCkgJiBFUF9NQVhQU1RSRUFNU19NQVNLKSA+PiAxMCkNCj4gKy8qIEVuZHBvaW50IGlz IHNldCB1cCB3aXRoIGEgTGluZWFyIFN0cmVhbSBBcnJheSAodnMuIFNlY29uZGFyeSBTdHJlYW0g QXJyYXkpICovDQo+ICsjZGVmaW5lIEVQX0hBU19MU0EJCQlCSVQoMTUpDQo+ICsNCj4gKy8qIGVw X2luZm8yIGJpdG1hc2tzICovDQo+ICsjZGVmaW5lIEVSUk9SX0NPVU5UKHApCQkoKChwKSAmIDB4 MykgPDwgMSkNCj4gKyNkZWZpbmUgQ1RYX1RPX0VQX1RZUEUocCkJKCgocCkgPj4gMykgJiAweDcp DQo+ICsjZGVmaW5lIEVQX1RZUEUocCkJCSgocCkgPDwgMykNCj4gKyNkZWZpbmUgSVNPQ19PVVRf RVAJCTENCj4gKyNkZWZpbmUgQlVMS19PVVRfRVAJCTINCj4gKyNkZWZpbmUgSU5UX09VVF9FUAkJ Mw0KPiArI2RlZmluZSBDVFJMX0VQCQkJNA0KPiArI2RlZmluZSBJU09DX0lOX0VQCQk1DQo+ICsj ZGVmaW5lIEJVTEtfSU5fRVAJCTYNCj4gKyNkZWZpbmUgSU5UX0lOX0VQCQk3DQo+ICsvKiBiaXQg NiByZXNlcnZlZC4gKi8NCj4gKy8qIGJpdCA3IGlzIERldmljZSBJbml0aWF0ZSBEaXNhYmxlIC0g Zm9yIGRpc2FibGluZyBzdHJlYW0gc2VsZWN0aW9uLiAqLw0KPiArI2RlZmluZSBNQVhfQlVSU1Qo cCkJCSgoKHApIDw8IDgpICYgR0VOTUFTSygxNSwgOCkpDQo+ICsjZGVmaW5lIENUWF9UT19NQVhf QlVSU1QocCkJKCgocCkgJiBHRU5NQVNLKDE1LCA4KSkgPj4gOCkNCj4gKyNkZWZpbmUgTUFYX1BB Q0tFVChwKQkJKCgocCkgPDwgMTYpICYgR0VOTUFTSygzMSwgMTYpKQ0KPiArI2RlZmluZSBNQVhf UEFDS0VUX01BU0sJCUdFTk1BU0soMzEsIDE2KQ0KPiArI2RlZmluZSBNQVhfUEFDS0VUX0RFQ09E RUQocCkJKCgocCkgJiBHRU5NQVNLKDMxLCAxNikpID4+IDE2KQ0KPiArDQo+ICsvKiB0eF9pbmZv IGJpdG1hc2tzLiAqLw0KPiArI2RlZmluZSBFUF9BVkdfVFJCX0xFTkdUSChwKQkJKChwKSAmIEdF Tk1BU0soMTUsIDApKQ0KPiArI2RlZmluZSBFUF9NQVhfRVNJVF9QQVlMT0FEX0xPKHApCSgoKHAp IDw8IDE2KSAmIEdFTk1BU0soMzEsIDE2KSkNCj4gKyNkZWZpbmUgRVBfTUFYX0VTSVRfUEFZTE9B RF9ISShwKQkoKCgocCkgJiBHRU5NQVNLKDIzLCAxNikpID4+IDE2KSA8PCAyNCkNCj4gKyNkZWZp bmUgQ1RYX1RPX01BWF9FU0lUX1BBWUxPQURfTE8ocCkJKCgocCkgJiBHRU5NQVNLKDMxLCAxNikp ID4+IDE2KQ0KPiArI2RlZmluZSBDVFhfVE9fTUFYX0VTSVRfUEFZTE9BRF9ISShwKQkoKChwKSAm IEdFTk1BU0soMzEsIDI0KSkgPj4gMjQpDQo+ICsNCj4gKy8qIGRlcSBiaXRtYXNrcy4gKi8NCj4g KyNkZWZpbmUgRVBfQ1RYX0NZQ0xFX01BU0sJCUJJVCgwKQ0KPiArI2RlZmluZSBDVFhfREVRX01B U0sJCQkofjB4ZkwpDQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX2lucHV0X2NvbnRy b2xfY29udGV4dA0KPiArICogSW5wdXQgY29udHJvbCBjb250ZXh0Ow0KPiArICoNCj4gKyAqIEBk cm9wX2NvbnRleHQ6IFNldCB0aGUgYml0IG9mIHRoZSBlbmRwb2ludCBjb250ZXh0IHlvdSB3YW50 IHRvIGRpc2FibGUuDQo+ICsgKiBAYWRkX2NvbnRleHQ6IFNldCB0aGUgYml0IG9mIHRoZSBlbmRw b2ludCBjb250ZXh0IHlvdSB3YW50IHRvIGVuYWJsZS4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNw X2lucHV0X2NvbnRyb2xfY3R4IHsNCj4gKwlfX2xlMzIgZHJvcF9mbGFnczsNCj4gKwlfX2xlMzIg YWRkX2ZsYWdzOw0KPiArCV9fbGUzMiByc3ZkMls2XTsNCj4gK307DQo+ICsNCj4gKy8qKg0KPiAr ICogUmVwcmVzZW50cyBldmVyeXRoaW5nIHRoYXQgaXMgbmVlZGVkIHRvIGlzc3VlIGEgY29tbWFu ZCBvbiB0aGUgY29tbWFuZCByaW5nLg0KPiArICoNCj4gKyAqIEBpbl9jdHg6IFBvaW50ZXIgdG8g aW5wdXQgY29udGV4dCBzdHJ1Y3R1cmUuDQo+ICsgKiBAc3RhdHVzOiBDb21tYW5kIENvbXBsZXRp b24gQ29kZSBmb3IgbGFzdCBjb21tYW5kLg0KPiArICogQGNvbW1hbmRfdHJiOiBQb2ludGVyIHRv IGNvbW1hbmQgVFJCLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfY29tbWFuZCB7DQo+ICsJLyog SW5wdXQgY29udGV4dCBmb3IgY2hhbmdpbmcgZGV2aWNlIHN0YXRlLiAqLw0KPiArCXN0cnVjdCBj ZG5zcF9jb250YWluZXJfY3R4ICppbl9jdHg7DQo+ICsJdTMyIHN0YXR1czsNCj4gKwl1bmlvbiBj ZG5zcF90cmIgKmNvbW1hbmRfdHJiOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBTdHJlYW0g Y29udGV4dCBzdHJ1Y3R1cmUuDQo+ICsgKg0KPiArICogQHN0cmVhbV9yaW5nOiA2NC1iaXQgc3Ry ZWFtIHJpbmcgYWRkcmVzcywgY3ljbGUgc3RhdGUsIGFuZCBzdHJlYW0gdHlwZS4NCj4gKyAqIEBy ZXNlcnZlZDogb2Zmc2V0IDB4MTQgLSAweDFmIHJlc2VydmVkIGZvciBjb250cm9sbGVyIGludGVy bmFsIHVzZS4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX3N0cmVhbV9jdHggew0KPiArCV9fbGU2 NCBzdHJlYW1fcmluZzsNCj4gKwlfX2xlMzIgcmVzZXJ2ZWRbMl07DQo+ICt9Ow0KPiArDQo+ICsv KiBTdHJlYW0gQ29udGV4dCBUeXBlcyAtIGJpdHMgMzoxIG9mIHN0cmVhbSBjdHggZGVxIHB0ci4g Ki8NCj4gKyNkZWZpbmUgU0NUX0ZPUl9DVFgocCkJCSgoKHApIDw8IDEpICYgR0VOTUFTSygzLCAx KSkNCj4gKy8qIFNlY29uZGFyeSBzdHJlYW0gYXJyYXkgdHlwZSwgZGVxdWV1ZSBwb2ludGVyIGlz IHRvIGEgdHJhbnNmZXIgcmluZy4gKi8NCj4gKyNkZWZpbmUgU0NUX1NFQ19UUgkJMA0KPiArLyog UHJpbWFyeSBzdHJlYW0gYXJyYXkgdHlwZSwgZGVxdWV1ZSBwb2ludGVyIGlzIHRvIGEgdHJhbnNm ZXIgcmluZy4gKi8NCj4gKyNkZWZpbmUgU0NUX1BSSV9UUgkJMQ0KPiArDQo+ICsvKioNCj4gKyAq ICBzdHJ1Y3QgY2Ruc3Bfc3RyZWFtX2luZm86IFJlcHJlc2VudGluZyBldmVyeXRoaW5nIHRoYXQg aXMgbmVlZGVkIHRvDQo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0cyBz dHJlYW0gY2FwYWJsZSBlbmRwb2ludHMuDQo+ICsgKiAgQHN0cmVhbV9yaW5nczogQXJyYXkgb2Yg cG9pbnRlcnMgY29udGFpbmluZyBUcmFuc2ZlciByaW5ncyBmb3IgYWxsDQo+ICsgKiAgICAgICAg ICAgICAgICAgc3VwcG9ydGVkIHN0cmVhbXMuDQo+ICsgKiAgQG51bV9zdHJlYW1zOiBOdW1iZXIg b2Ygc3RyZWFtcywgaW5jbHVkaW5nIHN0cmVhbSAwLg0KPiArICogIEBzdHJlYW1fY3R4X2FycmF5 OiBUaGUgc3RyZWFtIGNvbnRleHQgYXJyYXkgbWF5IGJlIGJpZ2dlciB0aGFuIHRoZSBudW1iZXIN Cj4gKyAqICAgICAgICAgICAgICAgICAgICAgb2Ygc3RyZWFtcyB0aGUgZHJpdmVyIGFza2VkIGZv ci4NCj4gKyAqICBAbnVtX3N0cmVhbV9jdHhzOiBOdW1iZXIgb2Ygc3RyZWFtcy4NCj4gKyAqICBA Y3R4X2FycmF5X2RtYTogRG1hIGFkZHJlc3Mgb2YgQ29udGV4dCBTdHJlYW0gQXJyYXkuDQo+ICsg KiAgQHRyYl9hZGRyZXNzX21hcDogRm9yIG1hcHBpbmcgcGh5c2ljYWwgVFJCIGFkZHJlc3NlcyB0 byBzZWdtZW50cyBpbg0KPiArICogICAgICAgICAgICAgICAgICAgIHN0cmVhbSByaW5ncy4NCj4g KyAqICBAdGRfY291bnQ6IE51bWJlciBvZiBURHMgYXNzb2NpYXRlZCB3aXRoIGVuZHBvaW50Lg0K PiArICogIEBmaXJzdF9wcmltZV9kZXQ6IEZpcnN0IFBSSU1FIHBhY2tldCBkZXRlY3RlZC4NCj4g KyAqICBAZHJibHNfY291bnQ6IE51bWJlciBvZiBhbGxvd2VkIGRvb3JiZWxscy4NCj4gKyAqLw0K PiArc3RydWN0IGNkbnNwX3N0cmVhbV9pbmZvIHsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcmluZyAqKnN0 cmVhbV9yaW5nczsNCj4gKwl1bnNpZ25lZCBpbnQgbnVtX3N0cmVhbXM7DQo+ICsJc3RydWN0IGNk bnNwX3N0cmVhbV9jdHggKnN0cmVhbV9jdHhfYXJyYXk7DQo+ICsJdW5zaWduZWQgaW50IG51bV9z dHJlYW1fY3R4czsNCj4gKwlkbWFfYWRkcl90IGN0eF9hcnJheV9kbWE7DQo+ICsJc3RydWN0IHJh ZGl4X3RyZWVfcm9vdCB0cmJfYWRkcmVzc19tYXA7DQo+ICsJaW50IHRkX2NvdW50Ow0KPiArCXU4 IGZpcnN0X3ByaW1lX2RldDsNCj4gKyNkZWZpbmUgU1RSRUFNX0RSQkxfRklGT19ERVBUSCAyDQo+ ICsJdTggZHJibHNfY291bnQ7DQo+ICt9Ow0KPiArDQo+ICsjZGVmaW5lIFNUUkVBTV9MT0dfU1RS RUFNUyA0DQo+ICsjZGVmaW5lIFNUUkVBTV9OVU1fU1RSRUFNUyBCSVQoU1RSRUFNX0xPR19TVFJF QU1TKQ0KPiArDQo+ICsjaWYgU1RSRUFNX0xPR19TVFJFQU1TID4gMTYgJiYgU1RSRUFNX0xPR19T VFJFQU1TIDwgMQ0KPiArI2Vycm9yICJOb3Qgc3V1cHBvcnRlZCBzdHJlYW0gdmFsdWUiDQo+ICsj ZW5kaWYNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3BfZXAgLSBleHRlbmRlZCBkZXZp Y2Ugc2lkZSByZXByZXNlbnRhdGlvbiBvZiBVU0IgZW5kcG9pbnQuDQo+ICsgKiBAZW5kcG9pbnQ6 IHVzYiBlbmRwb2ludA0KPiArICogQHBlbmRpbmdfcmVxX2xpc3Q6IExpc3Qgb2YgcmVxdWVzdHMg cXVldWluZyBvbiB0cmFuc2ZlciByaW5nLg0KPiArICogQHBkZXY6IERldmljZSBhc3NvY2lhdGVk IHdpdGggdGhpcyBlbmRwb2ludC4NCj4gKyAqIEBudW1iZXI6IEVuZHBvaW50IG51bWJlciAoMSAt IDE1KS4NCj4gKyAqIGlkeDogVGhlIGRldmljZSBjb250ZXh0IGluZGV4IChEQ0kpLg0KPiArICog aW50ZXJ2YWw6IEludGVydmFsIGJldHdlZW4gcGFja2V0cyB1c2VkIGZvciBJU09DIGVuZHBvaW50 Lg0KPiArICogQG5hbWU6IEEgaHVtYW4gcmVhZGFibGUgbmFtZSBlLmcuIGVwMW91dC4NCj4gKyAq IEBkaXJlY3Rpb246IEVuZHBvaW50IGRpcmVjdGlvbi4NCj4gKyAqIEBidWZmZXJpbmc6IE51bWJl ciBvZiBvbi1jaGlwIGJ1ZmZlcnMgcmVsYXRlZCB0byBlbmRwb2ludC4NCj4gKyAqIEBidWZmZXJp bmdfcGVyaW9kOyBOdW1iZXIgb2Ygb24tY2hpcCBidWZmZXJzIHJlbGF0ZWQgdG8gcGVyaW9kaWMg ZW5kcG9pbnQuDQo+ICsgKiBAaW5fY3R4OiBQb2ludGVyIHRvIGlucHV0IGVuZHBvaW50IGNvbnRl eHQgc3RydWN0dXJlLg0KPiArICogQG91dF9jdHg6IFBvaW50ZXIgdG8gb3V0cHV0IGVuZHBvaW50 IGNvbnRleHQgc3RydWN0dXJlLg0KPiArICogQHJpbmc6IFBvaW50ZXIgdG8gdHJhbnNmZXIgcmlu Zy4NCj4gKyAqIEBzdHJlYW1faW5mbzogSG9sZCBzdHJlYW0gaW5mb3JtYXRpb24uDQo+ICsgKiBA ZXBfc3RhdGU6IEN1cnJlbnQgc3RhdGUgb2YgZW5kcG9pbnQuDQo+ICsgKiBza2lwOiBTb21ldGlt ZXMgdGhlIGNvbnRyb2xsZXIgY2FuIG5vdCBwcm9jZXNzIGlzb2Nocm9ub3VzIGVuZHBvaW50IHJp bmcNCj4gKyAqICAgICAgIHF1aWNrbHkgZW5vdWdoLCBhbmQgaXQgd2lsbCBtaXNzIHNvbWUgaXNv YyB0ZHMgb24gdGhlIHJpbmcgYW5kDQo+ICsgKiAgICAgICBnZW5lcmF0ZSBNaXNzZWQgU2Vydmlj ZSBFcnJvciBFdmVudC4NCj4gKyAqICAgICAgIFNldCBza2lwIGZsYWcgd2hlbiByZWNlaXZlIGEg TWlzc2VkIFNlcnZpY2UgRXJyb3IgRXZlbnQgYW5kDQo+ICsgKiAgICAgICBwcm9jZXNzIHRoZSBt aXNzZWQgdGRzIG9uIHRoZSBlbmRwb2ludCByaW5nLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3Bf ZXAgew0KPiArCXN0cnVjdCB1c2JfZXAgZW5kcG9pbnQ7DQo+ICsJc3RydWN0IGxpc3RfaGVhZCBw ZW5kaW5nX2xpc3Q7DQo+ICsJc3RydWN0IGNkbnNwX2RldmljZSAqcGRldjsNCj4gKwl1OCBudW1i ZXI7DQo+ICsJdTggaWR4Ow0KPiArCXUzMiBpbnRlcnZhbDsNCj4gKwljaGFyIG5hbWVbMjBdOw0K PiArCXU4IGRpcmVjdGlvbjsNCj4gKwl1OCBidWZmZXJpbmc7DQo+ICsJdTggYnVmZmVyaW5nX3Bl cmlvZDsNCj4gKwlzdHJ1Y3QgY2Ruc3BfZXBfY3R4ICppbl9jdHg7DQo+ICsJc3RydWN0IGNkbnNw X2VwX2N0eCAqb3V0X2N0eDsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcmluZyAqcmluZzsNCj4gKwlzdHJ1 Y3QgY2Ruc3Bfc3RyZWFtX2luZm8gc3RyZWFtX2luZm87DQo+ICsJdW5zaWduZWQgaW50IGVwX3N0 YXRlOw0KPiArI2RlZmluZSBFUF9FTkFCTEVECQlCSVQoMCkNCj4gKyNkZWZpbmUgRVBfRElTX0lO X1JST0dSRVNTCUJJVCgxKQ0KPiArI2RlZmluZSBFUF9IQUxURUQJCUJJVCgyKQ0KPiArI2RlZmlu ZSBFUF9TVE9QUEVECQlCSVQoMykNCj4gKyNkZWZpbmUgRVBfV0VER0UJCUJJVCg0KQ0KPiArI2Rl ZmluZSBFUDBfSEFMVEVEX1NUQVRVUwlCSVQoNSkNCj4gKyNkZWZpbmUgRVBfSEFTX1NUUkVBTVMJ CUJJVCg2KQ0KPiArDQo+ICsJYm9vbCBza2lwOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBz dHJ1Y3QgY2Ruc3BfZGV2aWNlX2NvbnRleHRfYXJyYXkNCj4gKyAqIEBkZXZfY29udGV4dF9wdHI6 IEFycmF5IG9mIDY0LWJpdCBETUEgYWRkcmVzc2VzIGZvciBkZXZpY2UgY29udGV4dHMuDQo+ICsg KiBAZG1hOiBETUEgYWRkcmVzcyBmb3IgZGV2aWNlIGNvbnRleHRzIHN0cnVjdHVyZS4NCj4gKyAq Lw0KPiArc3RydWN0IGNkbnNwX2RldmljZV9jb250ZXh0X2FycmF5IHsNCj4gKwlfX2xlNjQgZGV2 X2NvbnRleHRfcHRyc1tDRE5TUF9ERVZfTUFYX1NMT1RTICsgMV07DQo+ICsJZG1hX2FkZHJfdCBk bWE7DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF90cmFuc2Zlcl9ldmVu dC4NCj4gKyAqIEBidWZmZXI6IDY0LWJpdCBidWZmZXIgYWRkcmVzcywgb3IgaW1tZWRpYXRlIGRh dGEuDQo+ICsgKiBAdHJhbnNmZXJfbGVuOiBEYXRhIGxlbmd0aCB0cmFuc2ZlcnJlZC4NCj4gKyAq IEBmbGFnczogRmllbGQgaXMgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkgYmFzZWQgb24gdGhlIHR5 cGUgb2YgVFJCLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfdHJhbnNmZXJfZXZlbnQgew0KPiAr CV9fbGU2NCBidWZmZXI7DQo+ICsJX19sZTMyIHRyYW5zZmVyX2xlbjsNCj4gKwlfX2xlMzIgZmxh Z3M7DQo+ICt9Ow0KPiArDQo+ICsvKiBJbnZhbGlkYXRlIGV2ZW50IGFmdGVyIGRpc2FibGluZyBl bmRwb2ludC4gKi8NCj4gKyNkZWZpbmUgVFJCX0VWRU5UX0lOVkFMSURBVEUgOA0KPiArDQo+ICsv KiBUcmFuc2ZlciBldmVudCBUUkIgbGVuZ3RoIGJpdCBtYXNrLiAqLw0KPiArLyogYml0cyAwOjIz ICovDQo+ICsjZGVmaW5lIEVWRU5UX1RSQl9MRU4ocCkJCQkoKHApICYgR0VOTUFTSygyMywgMCkp DQo+ICsvKiBDb21wbGV0aW9uIENvZGUgLSBvbmx5IGFwcGxpY2FibGUgZm9yIHNvbWUgdHlwZXMg b2YgVFJCcyAqLw0KPiArI2RlZmluZSBDT01QX0NPREVfTUFTSwkJCQkoMHhmZiA8PCAyNCkNCj4g KyNkZWZpbmUgR0VUX0NPTVBfQ09ERShwKQkJCSgoKHApICYgQ09NUF9DT0RFX01BU0spID4+IDI0 KQ0KPiArI2RlZmluZSBDT01QX0lOVkFMSUQJCQkJMA0KPiArI2RlZmluZSBDT01QX1NVQ0NFU1MJ CQkJMQ0KPiArI2RlZmluZSBDT01QX0RBVEFfQlVGRkVSX0VSUk9SCQkJMg0KPiArI2RlZmluZSBD T01QX0JBQkJMRV9ERVRFQ1RFRF9FUlJPUgkJMw0KPiArI2RlZmluZSBDT01QX1RSQl9FUlJPUgkJ CQk1DQo+ICsjZGVmaW5lIENPTVBfUkVTT1VSQ0VfRVJST1IJCQk3DQo+ICsjZGVmaW5lIENPTVBf Tk9fU0xPVFNfQVZBSUxBQkxFX0VSUk9SCQk5DQo+ICsjZGVmaW5lIENPTVBfSU5WQUxJRF9TVFJF QU1fVFlQRV9FUlJPUgkJMTANCj4gKyNkZWZpbmUgQ09NUF9TTE9UX05PVF9FTkFCTEVEX0VSUk9S CQkxMQ0KPiArI2RlZmluZSBDT01QX0VORFBPSU5UX05PVF9FTkFCTEVEX0VSUk9SCQkxMg0KPiAr I2RlZmluZSBDT01QX1NIT1JUX1BBQ0tFVAkJCTEzDQo+ICsjZGVmaW5lIENPTVBfUklOR19VTkRF UlJVTgkJCTE0DQo+ICsjZGVmaW5lIENPTVBfUklOR19PVkVSUlVOCQkJMTUNCj4gKyNkZWZpbmUg Q09NUF9WRl9FVkVOVF9SSU5HX0ZVTExfRVJST1IJCTE2DQo+ICsjZGVmaW5lIENPTVBfUEFSQU1F VEVSX0VSUk9SCQkJMTcNCj4gKyNkZWZpbmUgQ09NUF9DT05URVhUX1NUQVRFX0VSUk9SCQkxOQ0K PiArI2RlZmluZSBDT01QX0VWRU5UX1JJTkdfRlVMTF9FUlJPUgkJMjENCj4gKyNkZWZpbmUgQ09N UF9JTkNPTVBBVElCTEVfREVWSUNFX0VSUk9SCQkyMg0KPiArI2RlZmluZSBDT01QX01JU1NFRF9T RVJWSUNFX0VSUk9SCQkyMw0KPiArI2RlZmluZSBDT01QX0NPTU1BTkRfUklOR19TVE9QUEVECQky NA0KPiArI2RlZmluZSBDT01QX0NPTU1BTkRfQUJPUlRFRAkJCTI1DQo+ICsjZGVmaW5lIENPTVBf U1RPUFBFRAkJCQkyNg0KPiArI2RlZmluZSBDT01QX1NUT1BQRURfTEVOR1RIX0lOVkFMSUQJCTI3 DQo+ICsjZGVmaW5lIENPTVBfU1RPUFBFRF9TSE9SVF9QQUNLRVQJCTI4DQo+ICsjZGVmaW5lIENP TVBfTUFYX0VYSVRfTEFURU5DWV9UT09fTEFSR0VfRVJST1IJMjkNCj4gKyNkZWZpbmUgQ09NUF9J U09DSF9CVUZGRVJfT1ZFUlJVTgkJMzENCj4gKyNkZWZpbmUgQ09NUF9FVkVOVF9MT1NUX0VSUk9S CQkJMzINCj4gKyNkZWZpbmUgQ09NUF9VTkRFRklORURfRVJST1IJCQkzMw0KPiArI2RlZmluZSBD T01QX0lOVkFMSURfU1RSRUFNX0lEX0VSUk9SCQkzNA0KPiArDQo+ICsvKlRyYW5zZmVyIEV2ZW50 IE5SRFkgYml0IGZpZWxkcyAqLw0KPiArI2RlZmluZSBUUkJfVE9fREVWX1NUUkVBTShwKQkJCSgo cCkgJiBHRU5NQVNLKDE2LCAwKSkNCj4gKyNkZWZpbmUgVFJCX1RPX0hPU1RfU1RSRUFNKHApCQkJ KChwKSAmIEdFTk1BU0soMTYsIDApKQ0KPiArI2RlZmluZSBTVFJFQU1fUFJJTUVfQUNLCQkJMHhG RkZFDQo+ICsjZGVmaW5lIFNUUkVBTV9SRUpFQ1RFRAkJCQkweEZGRkYNCj4gKw0KPiArLyoqIFRy YW5zZmVyIEV2ZW50IGJpdCBmaWVsZHMgKiovDQo+ICsjZGVmaW5lIFRSQl9UT19FUF9JRChwKQkJ CQkoKChwKSAmIEdFTk1BU0soMjAsIDE2KSkgPj4gMTYpDQo+ICsNCj4gKy8qKg0KPiArICogc3Ry dWN0IGNkbnNwX2xpbmtfdHJiDQo+ICsgKiBAc2VnbWVudF9wdHI6IDY0LWJpdCBzZWdtZW50IHBv aW50ZXIuDQo+ICsgKiBAaW50cl90YXJnZXQ6IEludGVycnVwdGVyIHRhcmdldC4NCj4gKyAqIEBj b250cm9sOiBGbGFncy4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX2xpbmtfdHJiIHsNCj4gKwlf X2xlNjQgc2VnbWVudF9wdHI7DQo+ICsJX19sZTMyIGludHJfdGFyZ2V0Ow0KPiArCV9fbGUzMiBj b250cm9sOw0KPiArfTsNCj4gKw0KPiArLyogY29udHJvbCBiaXRmaWVsZHMgKi8NCj4gKyNkZWZp bmUgTElOS19UT0dHTEUJQklUKDEpDQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX2V2 ZW50X2NtZCAtIENvbW1hbmQgY29tcGxldGlvbiBldmVudCBUUkIuDQo+ICsgKiBjbWRfdHJiOiBQ b2ludGVyIHRvIGNvbW1hbmQgVFJCLCBvciB0aGUgdmFsdWUgcGFzc2VkIGJ5IHRoZSBldmVudCBk YXRhIHRyYg0KPiArICogc3RhdHVzOiBDb21tYW5kIGNvbXBsZXRpb24gcGFyYW1ldGVycyBhbmQg ZXJyb3IgY29kZS4NCj4gKyAqIGZsYWdzOiBGbGFncy4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNw X2V2ZW50X2NtZCB7DQo+ICsJX19sZTY0IGNtZF90cmI7DQo+ICsJX19sZTMyIHN0YXR1czsNCj4g KwlfX2xlMzIgZmxhZ3M7DQo+ICt9Ow0KPiArDQo+ICsvKiBmbGFncyBiaXRtYXNrcyAqLw0KPiAr DQo+ICsvKiBBZGRyZXNzIGRldmljZSAtIGRpc2FibGUgU2V0QWRkcmVzcy4gKi8NCj4gKyNkZWZp bmUgVFJCX0JTUgkJQklUKDkpDQo+ICsNCj4gKy8qIENvbmZpZ3VyZSBFbmRwb2ludCAtIERlY29u ZmlndXJlLiAqLw0KPiArI2RlZmluZSBUUkJfREMJCUJJVCg5KQ0KPiArDQo+ICsvKiBGb3JjZSBI ZWFkZXIgKi8NCj4gKyNkZWZpbmUgVFJCX0ZIX1RPX1BBQ0tFVF9UWVBFKHApCSgocCkgJiBHRU5N QVNLKDQsIDApKQ0KPiArI2RlZmluZSBUUkJfRkhfVFJfUEFDS0VUCQkweDQNCj4gKyNkZWZpbmUg VFJCX0ZIX1RPX0RFVklDRV9BRERSRVNTKHApCSgoKHApIDw8IDI1KSAmIEdFTk1BU0soMzEsIDI1 KSkNCj4gKyNkZWZpbmUgVFJCX0ZIX1RSX1BBQ0tFVF9ERVZfTk9UCTB4Ng0KPiArI2RlZmluZSBU UkJfRkhfVE9fTk9UX1RZUEUocCkJCSgoKHApIDw8IDQpICYgR0VOTUFTSyg3LCA0KSkNCj4gKyNk ZWZpbmUgVFJCX0ZIX1RSX1BBQ0tFVF9GVU5DVElPTl9XQUtFCTB4MQ0KPiArI2RlZmluZSBUUkJf RkhfVE9fSU5URVJGQUNFKHApCQkoKChwKSA8PCA4KSAmIEdFTk1BU0soMTUsIDgpKQ0KPiArDQo+ ICtlbnVtIGNkbnNwX3NldHVwX2RldiB7DQo+ICsJU0VUVVBfQ09OVEVYVF9PTkxZLA0KPiArCVNF VFVQX0NPTlRFWFRfQUREUkVTUywNCj4gK307DQo+ICsNCj4gKy8qIGJpdHMgMjQ6MzEgYXJlIHRo ZSBzbG90IElELiAqLw0KPiArI2RlZmluZSBUUkJfVE9fU0xPVF9JRChwKQkJKCgocCkgJiBHRU5N QVNLKDMxLCAyNCkpID4+IDI0KQ0KPiArI2RlZmluZSBTTE9UX0lEX0ZPUl9UUkIocCkJCSgoKHAp IDw8IDI0KSAmIEdFTk1BU0soMzEsIDI0KSkNCj4gKw0KPiArLyogU3RvcCBFbmRwb2ludCBUUkIg LSBlcF9pbmRleCB0byBlbmRwb2ludCBJRCBmb3IgdGhpcyBUUkIuICovDQo+ICsjZGVmaW5lIFRS Ql9UT19FUF9JTkRFWChwKQkJKCgoKHApICYgKDB4MWYgPDwgMTYpKSA+PiAxNikpDQo+ICsNCj4g KyNkZWZpbmUgRVBfSURfRk9SX1RSQihwKQkJKCgoKHApICsgMSkgPDwgMTYpICYgR0VOTUFTSygy MCwgMTYpKQ0KPiArDQo+ICsjZGVmaW5lIFNVU1BFTkRfUE9SVF9GT1JfVFJCKHApCQkoKChwKSAm IDEpIDw8IDIzKQ0KPiArI2RlZmluZSBUUkJfVE9fU1VTUEVORF9QT1JUKHApCQkoKChwKSAmICgx IDw8IDIzKSkgPj4gMjMpDQo+ICsjZGVmaW5lIExBU1RfRVBfSU5ERVgJCQkzMA0KPiArDQo+ICsv KiBTZXQgVFIgRGVxdWV1ZSBQb2ludGVyIGNvbW1hbmQgVFJCIGZpZWxkcy4gKi8NCj4gKyNkZWZp bmUgVFJCX1RPX1NUUkVBTV9JRChwKQkJKCgoKHApICYgR0VOTUFTSygzMSwgMTYpKSA+PiAxNikp DQo+ICsjZGVmaW5lIFNUUkVBTV9JRF9GT1JfVFJCKHApCQkoKCgocCkpIDw8IDE2KSAmIEdFTk1B U0soMzEsIDE2KSkNCj4gKyNkZWZpbmUgU0NUX0ZPUl9UUkIocCkJCQkoKChwKSA8PCAxKSAmIDB4 NykNCj4gKw0KPiArLyogTGluayBUUkIgc3BlY2lmaWMgZmllbGRzLiAqLw0KPiArI2RlZmluZSBU UkJfVEMJCQkJQklUKDEpDQo+ICsNCj4gKy8qIFBvcnQgU3RhdHVzIENoYW5nZSBFdmVudCBUUkIg ZmllbGRzLiAqLw0KPiArLyogUG9ydCBJRCAtIGJpdHMgMzE6MjQuICovDQo+ICsjZGVmaW5lIEdF VF9QT1JUX0lEKHApCQkJKCgocCkgJiBHRU5NQVNLKDMxLCAyNCkpID4+IDI0KQ0KPiArI2RlZmlu ZSBTRVRfUE9SVF9JRChwKQkJCSgoKHApIDw8IDI0KSAmIEdFTk1BU0soMzEsIDI0KSkNCj4gKyNk ZWZpbmUgRVZFTlRfREFUQQkJCUJJVCgyKQ0KPiArDQo+ICsvKiBOb3JtYWwgVFJCIGZpZWxkcy4g Ki8NCj4gKy8qIHRyYW5zZmVyX2xlbiBiaXRtYXNrcyAtIGJpdHMgMDoxNi4gKi8NCj4gKyNkZWZp bmUgVFJCX0xFTihwKQkJCSgocCkgJiBHRU5NQVNLKDE2LCAwKSkNCj4gKy8qIFREIFNpemUsIHBh Y2tldHMgcmVtYWluaW5nIGluIHRoaXMgVEQsIGJpdHMgMjE6MTcgKDUgYml0cywgc28gbWF4IDMx KS4gKi8NCj4gKyNkZWZpbmUgVFJCX1REX1NJWkUocCkJCQkobWluKChwKSwgKHUzMikzMSkgPDwg MTcpDQo+ICsjZGVmaW5lIEdFVF9URF9TSVpFKHApCQkJKCgocCkgJiBHRU5NQVNLKDIxLCAxNykp ID4+IDE3KQ0KPiArLyoNCj4gKyAqIENvbnRyb2xsZXIgdXNlcyB0aGUgVERfU0laRSBmaWVsZCBm b3IgVEJDIGlmIEV4dGVuZGVkIFRCQw0KPiArICogaXMgZW5hYmxlZCAoRVRFKS4NCj4gKyAqLw0K PiArI2RlZmluZSBUUkJfVERfU0laRV9UQkMocCkJCShtaW4oKHApLCAodTMyKTMxKSA8PCAxNykN Cj4gKy8qIEludGVycnVwdGVyIFRhcmdldCAtIHdoaWNoIE1TSS1YIHZlY3RvciB0byB0YXJnZXQg dGhlIGNvbXBsZXRpb24gZXZlbnQgYXQuICovDQo+ICsjZGVmaW5lIFRSQl9JTlRSX1RBUkdFVChw KQkJKCgocCkgPDwgMjIpICYgR0VOTUFTSygzMSwgMjIpKQ0KPiArI2RlZmluZSBHRVRfSU5UUl9U QVJHRVQocCkJCSgoKHApICYgR0VOTUFTSygzMSwgMjIpKSA+PiAyMikNCj4gKy8qDQo+ICsgKiBU b3RhbCBidXJzdCBjb3VudCBmaWVsZCwgUnN2ZHogb24gY29udHJvbGxlciB3aXRoIEV4dGVuZGVk IFRCQw0KPiArICogZW5hYmxlZCAoRVRFKS4NCj4gKyAqLw0KPiArI2RlZmluZSBUUkJfVEJDKHAp CQkJKCgocCkgJiAweDMpIDw8IDcpDQo+ICsjZGVmaW5lIFRSQl9UTEJQQyhwKQkJCSgoKHApICYg MHhmKSA8PCAxNikNCj4gKw0KPiArLyogQ3ljbGUgYml0IC0gaW5kaWNhdGVzIFRSQiBvd25lcnNo aXAgYnkgZHJpdmVyIG9yIGRyaXZlci4qLw0KPiArI2RlZmluZSBUUkJfQ1lDTEUJCQlCSVQoMCkN Cj4gKy8qDQo+ICsgKiBGb3JjZSBuZXh0IGV2ZW50IGRhdGEgVFJCIHRvIGJlIGV2YWx1YXRlZCBi ZWZvcmUgdGFzayBzd2l0Y2guDQo+ICsgKiBVc2VkIHRvIHBhc3MgT1MgZGF0YSBiYWNrIGFmdGVy IGEgVEQgY29tcGxldGVzLg0KPiArICovDQo+ICsjZGVmaW5lIFRSQl9FTlQJCQkJQklUKDEpDQo+ ICsvKiBJbnRlcnJ1cHQgb24gc2hvcnQgcGFja2V0LiAqLw0KPiArI2RlZmluZSBUUkJfSVNQCQkJ CUJJVCgyKQ0KPiArLyogU2V0IFBDSWUgbm8gc25vb3AgYXR0cmlidXRlLiAqLw0KPiArI2RlZmlu ZSBUUkJfTk9fU05PT1AJCQlCSVQoMykNCj4gKy8qIENoYWluIG11bHRpcGxlIFRSQnMgaW50byBh IFRELiAqLw0KPiArI2RlZmluZSBUUkJfQ0hBSU4JCQlCSVQoNCkNCj4gKy8qIEludGVycnVwdCBv biBjb21wbGV0aW9uLiAqLw0KPiArI2RlZmluZSBUUkJfSU9DCQkJCUJJVCg1KQ0KPiArLyogVGhl IGJ1ZmZlciBwb2ludGVyIGNvbnRhaW5zIGltbWVkaWF0ZSBkYXRhLiAqLw0KPiArI2RlZmluZSBU UkJfSURUCQkJCUJJVCg2KQ0KPiArLyogMCAtIE5SRFkgZHVyaW5nIGRhdGEgc3RhZ2UsIDEgLSBO UkRZIGR1cmluZyBzdGF0dXMgc3RhZ2UgKG9ubHkgY29udHJvbCkuICovDQo+ICsjZGVmaW5lIFRS Ql9TVEFUCQkJQklUKDcpDQo+ICsvKiBCbG9jayBFdmVudCBJbnRlcnJ1cHQuICovDQo+ICsjZGVm aW5lIFRSQl9CRUkJCQkJQklUKDkpDQo+ICsNCj4gKy8qIENvbnRyb2wgdHJhbnNmZXIgVFJCIHNw ZWNpZmljIGZpZWxkcy4gKi8NCj4gKyNkZWZpbmUgVFJCX0RJUl9JTgkJCUJJVCgxNikNCj4gKw0K PiArLyogVFJCIGJpdCBtYXNrIGluIERhdGEgU3RhZ2UgVFJCICovDQo+ICsjZGVmaW5lIFRSQl9T RVRVUElEX0JJVE1BU0sJCUdFTk1BU0soOSwgOCkNCj4gKyNkZWZpbmUgVFJCX1NFVFVQSUQocCkJ CQkoKHApIDw8IDgpDQo+ICsjZGVmaW5lIFRSQl9TRVRVUElEX1RPX1RZUEUocCkJCSgoKHApICYg VFJCX1NFVFVQSURfQklUTUFTSykgPj4gOCkNCj4gKw0KPiArI2RlZmluZSBUUkJfU0VUVVBfU1BF RURJRF9VU0IzCQkweDENCj4gKyNkZWZpbmUgVFJCX1NFVFVQX1NQRUVESURfVVNCMgkJMHgwDQo+ ICsjZGVmaW5lIFRSQl9TRVRVUF9TUEVFRElEKHApCQkoKHApICYgKDEgPDwgNykpDQo+ICsNCj4g KyNkZWZpbmUgVFJCX1NFVFVQU1RBVF9BQ0sJCTB4MQ0KPiArI2RlZmluZSBUUkJfU0VUVVBTVEFU X1NUQUxMCQkweDANCj4gKyNkZWZpbmUgVFJCX1NFVFVQU1RBVChwKQkJKChwKSA8PCA2KQ0KPiAr DQo+ICsvKiBJc29jaHJvbm91cyBUUkIgc3BlY2lmaWMgZmllbGRzICovDQo+ICsjZGVmaW5lIFRS Ql9TSUEJCQkJQklUKDMxKQ0KPiArI2RlZmluZSBUUkJfRlJBTUVfSUQocCkJCQkoKChwKSA8PCAy MCkgJiBHRU5NQVNLKDMwLCAyMCkpDQo+ICsNCj4gK3N0cnVjdCBjZG5zcF9nZW5lcmljX3RyYiB7 DQo+ICsJX19sZTMyIGZpZWxkWzRdOw0KPiArfTsNCj4gKw0KPiArdW5pb24gY2Ruc3BfdHJiIHsN Cj4gKwlzdHJ1Y3QgY2Ruc3BfbGlua190cmIgbGluazsNCj4gKwlzdHJ1Y3QgY2Ruc3BfdHJhbnNm ZXJfZXZlbnQgdHJhbnNfZXZlbnQ7DQo+ICsJc3RydWN0IGNkbnNwX2V2ZW50X2NtZCBldmVudF9j bWQ7DQo+ICsJc3RydWN0IGNkbnNwX2dlbmVyaWNfdHJiIGdlbmVyaWM7DQo+ICt9Ow0KPiArDQo+ ICsvKiBUUkIgYml0IG1hc2suICovDQo+ICsjZGVmaW5lIFRSQl9UWVBFX0JJVE1BU0sJR0VOTUFT SygxNSwgMTApDQo+ICsjZGVmaW5lIFRSQl9UWVBFKHApCQkoKHApIDw8IDEwKQ0KPiArI2RlZmlu ZSBUUkJfRklFTERfVE9fVFlQRShwKQkoKChwKSAmIFRSQl9UWVBFX0JJVE1BU0spID4+IDEwKQ0K PiArDQo+ICsvKiBUUkIgdHlwZSBJRHMuICovDQo+ICsvKiBidWxrLCBpbnRlcnJ1cHQsIGlzb2Mg c2NhdHRlci9nYXRoZXIsIGFuZCBjb250cm9sIGRhdGEgc3RhZ2UuICovDQo+ICsjZGVmaW5lIFRS Ql9OT1JNQUwJCTENCj4gKy8qIFNldHVwIFN0YWdlIGZvciBjb250cm9sIHRyYW5zZmVycy4gKi8N Cj4gKyNkZWZpbmUgVFJCX1NFVFVQCQkyDQo+ICsvKiBEYXRhIFN0YWdlIGZvciBjb250cm9sIHRy YW5zZmVycy4gKi8NCj4gKyNkZWZpbmUgVFJCX0RBVEEJCTMNCj4gKy8qIFN0YXR1cyBTdGFnZSBm b3IgY29udHJvbCB0cmFuc2ZlcnMuICovDQo+ICsjZGVmaW5lIFRSQl9TVEFUVVMJCTQNCj4gKy8q IElTT0MgdHJhbnNmZXJzLiAqLw0KPiArI2RlZmluZSBUUkJfSVNPQwkJNQ0KPiArLyogVFJCIGZv ciBsaW5raW5nIHJpbmcgc2VnbWVudHMuICovDQo+ICsjZGVmaW5lIFRSQl9MSU5LCQk2DQo+ICsj ZGVmaW5lIFRSQl9FVkVOVF9EQVRBCQk3DQo+ICsvKiBUcmFuc2ZlciBSaW5nIE5vLW9wIChub3Qg Zm9yIHRoZSBjb21tYW5kIHJpbmcpLiAqLw0KPiArI2RlZmluZSBUUkJfVFJfTk9PUAkJOA0KPiAr DQo+ICsvKiBDb21tYW5kIFRSQnMgKi8NCj4gKy8qIEVuYWJsZSBTbG90IENvbW1hbmQuICovDQo+ ICsjZGVmaW5lIFRSQl9FTkFCTEVfU0xPVAkJOQ0KPiArLyogRGlzYWJsZSBTbG90IENvbW1hbmQu ICovDQo+ICsjZGVmaW5lIFRSQl9ESVNBQkxFX1NMT1QJMTANCj4gKy8qIEFkZHJlc3MgRGV2aWNl IENvbW1hbmQuICovDQo+ICsjZGVmaW5lIFRSQl9BRERSX0RFVgkJMTENCj4gKy8qIENvbmZpZ3Vy ZSBFbmRwb2ludCBDb21tYW5kLiAqLw0KPiArI2RlZmluZSBUUkJfQ09ORklHX0VQCQkxMg0KPiAr LyogRXZhbHVhdGUgQ29udGV4dCBDb21tYW5kLiAqLw0KPiArI2RlZmluZSBUUkJfRVZBTF9DT05U RVhUCTEzDQo+ICsvKiBSZXNldCBFbmRwb2ludCBDb21tYW5kLiAqLw0KPiArI2RlZmluZSBUUkJf UkVTRVRfRVAJCTE0DQo+ICsvKiBTdG9wIFRyYW5zZmVyIFJpbmcgQ29tbWFuZC4gKi8NCj4gKyNk ZWZpbmUgVFJCX1NUT1BfUklORwkJMTUNCj4gKy8qIFNldCBUcmFuc2ZlciBSaW5nIERlcXVldWUg UG9pbnRlciBDb21tYW5kLiAqLw0KPiArI2RlZmluZSBUUkJfU0VUX0RFUQkJMTYNCj4gKy8qIFJl c2V0IERldmljZSBDb21tYW5kLiAqLw0KPiArI2RlZmluZSBUUkJfUkVTRVRfREVWCQkxNw0KPiAr LyogRm9yY2UgRXZlbnQgQ29tbWFuZCAob3B0KS4gKi8NCj4gKyNkZWZpbmUgVFJCX0ZPUkNFX0VW RU5UCQkxOA0KPiArLyogRm9yY2UgSGVhZGVyIENvbW1hbmQgLSBnZW5lcmF0ZSBhIHRyYW5zYWN0 aW9uIG9yIGxpbmsgbWFuYWdlbWVudCBwYWNrZXQuICovDQo+ICsjZGVmaW5lIFRSQl9GT1JDRV9I RUFERVIJMjINCj4gKy8qIE5vLW9wIENvbW1hbmQgLSBub3QgZm9yIHRyYW5zZmVyIHJpbmdzLiAq Lw0KPiArI2RlZmluZSBUUkJfQ01EX05PT1AJCTIzDQo+ICsvKiBUUkIgSURzIDI0LTMxIHJlc2Vy dmVkLiAqLw0KPiArDQo+ICsvKiBFdmVudCBUUkJTLiAqLw0KPiArLyogVHJhbnNmZXIgRXZlbnQu ICovDQo+ICsjZGVmaW5lIFRSQl9UUkFOU0ZFUgkJMzINCj4gKy8qIENvbW1hbmQgQ29tcGxldGlv biBFdmVudC4gKi8NCj4gKyNkZWZpbmUgVFJCX0NPTVBMRVRJT04JCTMzDQo+ICsvKiBQb3J0IFN0 YXR1cyBDaGFuZ2UgRXZlbnQuICovDQo+ICsjZGVmaW5lIFRSQl9QT1JUX1NUQVRVUwkJMzQNCj4g Ky8qIERldmljZSBDb250cm9sbGVyIEV2ZW50LiAqLw0KPiArI2RlZmluZSBUUkJfSENfRVZFTlQJ CTM3DQo+ICsvKiBNRklOREVYIFdyYXAgRXZlbnQgLSBtaWNyb2ZyYW1lIGNvdW50ZXIgd3JhcHBl ZC4gKi8NCj4gKyNkZWZpbmUgVFJCX01GSU5ERVhfV1JBUAkzOQ0KPiArLyogVFJCIElEcyA0MC00 NyByZXNlcnZlZC4gKi8NCj4gKy8qIEVuZHBvaW50IE5vdCBSZWFkeSBFdmVudC4gKi8NCj4gKyNk ZWZpbmUgVFJCX0VORFBPSU5UX05SRFkJNDgNCj4gKy8qIFRSQiBJRHMgNDktNTMgcmVzZXJ2ZWQu ICovDQo+ICsvKiBIYWx0IEVuZHBvaW50IENvbW1hbmQuICovDQo+ICsjZGVmaW5lIFRSQl9IQUxU X0VORFBPSU5UCTU0DQo+ICsvKiBEb29yYmVsbCBPdmVyZmxvdyBFdmVudC4gKi8NCj4gKyNkZWZp bmUgVFJCX0RSQl9PVkVSRkxPVwk1Nw0KPiArLyogRmx1c2ggRW5kcG9pbnQgQ29tbWFuZC4gKi8N Cj4gKyNkZWZpbmUgVFJCX0ZMVVNIX0VORFBPSU5UCTU4DQo+ICsNCj4gKyNkZWZpbmUgVFJCX1RZ UEVfTElOSyh4KQkoKCh4KSAmIFRSQl9UWVBFX0JJVE1BU0spID09IFRSQl9UWVBFKFRSQl9MSU5L KSkNCj4gKyNkZWZpbmUgVFJCX1RZUEVfTElOS19MRTMyKHgpCSgoKHgpICYgY3B1X3RvX2xlMzIo VFJCX1RZUEVfQklUTUFTSykpID09IFwNCj4gKwkJCQkJY3B1X3RvX2xlMzIoVFJCX1RZUEUoVFJC X0xJTkspKSkNCj4gKyNkZWZpbmUgVFJCX1RZUEVfTk9PUF9MRTMyKHgpCSgoKHgpICYgY3B1X3Rv X2xlMzIoVFJCX1RZUEVfQklUTUFTSykpID09IFwNCj4gKwkJCQkJY3B1X3RvX2xlMzIoVFJCX1RZ UEUoVFJCX1RSX05PT1ApKSkNCj4gKw0KPiArLyoNCj4gKyAqIFRSQlNfUEVSX1NFR01FTlQgbXVz dCBiZSBhIG11bHRpcGxlIG9mIDQuDQo+ICsgKiBUaGUgY29tbWFuZCByaW5nIGlzIDY0LWJ5dGUg YWxpZ25lZCwgc28gaXQgbXVzdCBhbHNvIGJlIGdyZWF0ZXIgdGhhbiAxNi4NCj4gKyAqLw0KPiAr I2RlZmluZSBUUkJTX1BFUl9TRUdNRU5UCQkyNTYNCj4gKyNkZWZpbmUgVFJCU19QRVJfRVZFTlRf U0VHTUVOVAkJMjU2DQo+ICsjZGVmaW5lIFRSQlNfUEVSX0VWX0RFUV9VUERBVEUJCTEwMA0KPiAr I2RlZmluZSBUUkJfU0VHTUVOVF9TSVpFCQkoVFJCU19QRVJfU0VHTUVOVCAqIDE2KQ0KPiArI2Rl ZmluZSBUUkJfU0VHTUVOVF9TSElGVAkJKGlsb2cyKFRSQl9TRUdNRU5UX1NJWkUpKQ0KPiArLyog VFJCIGJ1ZmZlciBwb2ludGVycyBjYW4ndCBjcm9zcyA2NEtCIGJvdW5kYXJpZXMuICovDQo+ICsj ZGVmaW5lIFRSQl9NQVhfQlVGRl9TSElGVAkJMTYNCj4gKyNkZWZpbmUgVFJCX01BWF9CVUZGX1NJ WkUJCUJJVChUUkJfTUFYX0JVRkZfU0hJRlQpDQo+ICsvKiBIb3cgbXVjaCBkYXRhIGlzIGxlZnQg YmVmb3JlIHRoZSA2NEtCIGJvdW5kYXJ5PyAqLw0KPiArI2RlZmluZSBUUkJfQlVGRl9MRU5fVVBf VE9fQk9VTkRBUlkoYWRkcikgKFRSQl9NQVhfQlVGRl9TSVpFIC0gXA0KPiArCQkJCQkoKGFkZHIp ICYgKFRSQl9NQVhfQlVGRl9TSVpFIC0gMSkpKQ0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBj ZG5zcF9zZWdtZW50IC0gc2VnbWVudCByZWxhdGVkIGRhdGEuDQo+ICsgKiBAdHJiczogQXJyYXkg b2YgVHJhbnNmZXIgUmVxdWVzdCBCbG9ja3MuDQo+ICsgKiBAbmV4dDogUG9pbnRlciB0byB0aGUg bmV4dCBzZWdtZW50Lg0KPiArICogQGRtYTogRE1BIGFkZHJlc3Mgb2YgY3VycmVudCBzZWdtZW50 Lg0KPiArICogQGJvdW5jZV9kbWE6IEJvdW5jZSAgYnVmZmVyIERNQSBhZGRyZXNzIC4NCj4gKyAq IEBib3VuY2VfYnVmOiBCb3VuY2UgYnVmZmVyIHZpcnR1YWwgYWRkcmVzcy4NCj4gKyAqIGJvdW5j ZV9vZmZzOiBCb3VuY2UgYnVmZmVyIG9mZnNldC4NCj4gKyAqIGJvdW5jZV9sZW46IEJvdW5jZSBi dWZmZXIgbGVuZ3RoLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3Bfc2VnbWVudCB7DQo+ICsJdW5p b24gY2Ruc3BfdHJiICp0cmJzOw0KPiArCXN0cnVjdCBjZG5zcF9zZWdtZW50ICpuZXh0Ow0KPiAr CWRtYV9hZGRyX3QgZG1hOw0KPiArCS8qIE1heCBwYWNrZXQgc2l6ZWQgYm91bmNlIGJ1ZmZlciBm b3IgdGQtZnJhZ21hbnQgYWxpZ25tZW50ICovDQo+ICsJZG1hX2FkZHJfdCBib3VuY2VfZG1hOw0K PiArCXZvaWQgKmJvdW5jZV9idWY7DQo+ICsJdW5zaWduZWQgaW50IGJvdW5jZV9vZmZzOw0KPiAr CXVuc2lnbmVkIGludCBib3VuY2VfbGVuOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1 Y3QgY2Ruc3BfdGQgLSBUcmFuc2ZlciBEZXNjcmlwdG9yIG9iamVjdC4NCj4gKyAqIEB0ZF9saXN0 OiBVc2VkIGZvciBiaW5kaW5nIFREIHdpdGggZXBfcmluZy0+dGRfbGlzdC4NCj4gKyAqIEBwcmVx OiBSZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFREDQo+ICsgKiBAc3RhcnRfc2VnOiBTZWdt ZW50IGNvbnRhaW5pbmcgdGhlIGZpcnN0X3RyYiBpbiBURC4NCj4gKyAqIEBmaXJzdF90cmI6IEZp cnN0IFRSQiBmb3IgdGhpcyBURC4NCj4gKyAqIEBsYXN0X3RyYjogTGFzdCBUUkIgcmVsYXRlZCB3 aXRoIFRELg0KPiArICogQGJvdW5jZV9zZWc6IEJvdW5jZSBzZWdtZW50IGZvciB0aGlzIFRELg0K PiArICogQHJlcXVlc3RfbGVuZ3RoX3NldDogYWN0dWFsX2xlbmd0aCBvZiB0aGUgcmVxdWVzdCBo YXMgYWxyZWFkeSBiZWVuIHNldC4NCj4gKyAqIEBkcmJsIC0gVEQgaGFzIGJlZW4gYWRkZWQgdG8g SFcgc2NoZWR1bGVyIC0gb25seSBmb3Igc3RyZWFtIGNhcGFibGUNCj4gKyAqICAgICAgICAgZW5k cG9pbnRzLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfdGQgew0KPiArCXN0cnVjdCBsaXN0X2hl YWQgdGRfbGlzdDsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcmVxdWVzdCAqcHJlcTsNCj4gKwlzdHJ1Y3Qg Y2Ruc3Bfc2VnbWVudCAqc3RhcnRfc2VnOw0KPiArCXVuaW9uIGNkbnNwX3RyYiAqZmlyc3RfdHJi Ow0KPiArCXVuaW9uIGNkbnNwX3RyYiAqbGFzdF90cmI7DQo+ICsJc3RydWN0IGNkbnNwX3NlZ21l bnQgKmJvdW5jZV9zZWc7DQo+ICsJYm9vbCByZXF1ZXN0X2xlbmd0aF9zZXQ7DQo+ICsJYm9vbCBk cmJsOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiAgc3RydWN0IGNkbnNwX2RlcXVldWVfc3Rh dGUgLSBOZXcgZGVxdWV1ZSBwb2ludGVyIGZvciBUcmFuc2ZlciBSaW5nLg0KPiArICogQG5ld19k ZXFfc2VnOiBOZXcgZGVxdWV1ZSBzZWdtZW50Lg0KPiArICogQG5ld19kZXFfcHRyOiBOZXcgZGVx dWV1ZSBwb2ludGVyLg0KPiArICogQG5ld19jeWNsZV9zdGF0ZTogTmV3IGN5Y2xlIHN0YXRlLg0K PiArICogQHN0cmVhbV9pZDogc3RyZWFtIGlkIGZvciB3aGljaCBuZXcgZGVxdWV1ZSBwb2ludGVy IGhhcyBiZWVuIHNlbGVjdGVkLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfZGVxdWV1ZV9zdGF0 ZSB7DQo+ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQgKm5ld19kZXFfc2VnOw0KPiArCXVuaW9uIGNk bnNwX3RyYiAqbmV3X2RlcV9wdHI7DQo+ICsJaW50IG5ld19jeWNsZV9zdGF0ZTsNCj4gKwl1bnNp Z25lZCBpbnQgc3RyZWFtX2lkOw0KPiArfTsNCj4gKw0KPiArZW51bSBjZG5zcF9yaW5nX3R5cGUg ew0KPiArCVRZUEVfQ1RSTCA9IDAsDQo+ICsJVFlQRV9JU09DLA0KPiArCVRZUEVfQlVMSywNCj4g KwlUWVBFX0lOVFIsDQo+ICsJVFlQRV9TVFJFQU0sDQo+ICsJVFlQRV9DT01NQU5ELA0KPiArCVRZ UEVfRVZFTlQsDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9yaW5nIC0g aW5mb3JtYXRpb24gZGVzY3JpYmluZyB0cmFuc2ZlciwgY29tbWFuZCBvciBldmVudCByaW5nLg0K PiArICogQGZpcnN0X3NlZzogRmlyc3Qgc2VnbWVudCBvbiB0cmFuc2ZlciByaW5nLg0KPiArICog QGxhc3Rfc2VnOiBMYXN0IHNlZ21lbnQgb24gdHJhbnNmZXIgcmluZy4NCj4gKyAqIEBlbnF1ZXVl OiBTVyBlbnF1ZXVlIHBvaW50ZXIgYWRkcmVzcy4NCj4gKyAqIEBlbnFfc2VnOiBTVyBlbnF1ZXVl IHNlZ21lbnQgYWRkcmVzcy4NCj4gKyAqIEBkZXF1ZXVlOiBTVyBkZXF1ZXVlIHBvaW50ZXIgYWRk cmVzcy4NCj4gKyAqIEBkZXFfc2VnOiBTVyBkZXF1ZXVlIHNlZ21lbnQgYWRkcmVzcy4NCj4gKyAq IEB0ZF9saXN0OiB0cmFuc2ZlciBkZXNjcmlwdG9yIGxpc3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMg cmluZy4NCj4gKyAqIEBjeWNsZV9zdGF0ZTogQ3VycmVudCBjeWNsZSBiaXQuIFdyaXRlIHRoZSBj eWNsZSBzdGF0ZSBpbnRvIHRoZSBUUkIgY3ljbGUNCj4gKyAqICAgICAgICAgICAgICAgZmllbGQg dG8gZ2l2ZSBvd25lcnNoaXAgb2YgdGhlIFRSQiB0byB0aGUgZGV2aWNlIGNvbnRyb2xsZXINCj4g KyAqICAgICAgICAgICAgICAgKGlmIHdlIGFyZSB0aGUgcHJvZHVjZXIpIG9yIHRvIGNoZWNrIGlm IHdlIG93biB0aGUgVFJCDQo+ICsgKiAgICAgICAgICAgICAgIChpZiB3ZSBhcmUgdGhlIGNvbnN1 bWVyKS4NCj4gKyAqIEBzdHJlYW1faWQ6IFN0cmVhbSBpZA0KPiArICogQHN0cmVhbV9hY3RpdmU6 IFN0cmVhbSBpcyBhY3RpdmUgLSBQUklNRSBwYWNrZXQgaGFzIGJlZW4gZGV0ZWN0ZWQuDQo+ICsg KiBAc3RyZWFtX3JlamVjdGVkOiBUaGlzIHJpbmcgaGFzIGJlZW4gcmVqZWN0ZWQgYnkgaG9zdC4N Cj4gKyAqIEBudW1fdGRzOiBOdW1iZXIgb2YgVERzIGFzc29jaWF0ZWQgd2l0aCByaW5nLg0KPiAr ICogQG51bV9zZWdzOiBOdW1iZXIgb2Ygc2VnbWVudHMuDQo+ICsgKiBAbnVtX3RyYnNfZnJlZTog TnVtYmVyIG9mIGZyZWUgVFJCcyBvbiB0aGUgcmluZy4NCj4gKyAqIEBib3VuY2VfYnVmX2xlbjog TGVuZ3RoIG9mIGJvdW5jZSBidWZmZXIuDQo+ICsgKiBAdHlwZTogUmluZyB0eXBlIC0gZXZlbnQs IHRyYW5zZmVyLCBvciBjb21tYW5kIHJpbmcuDQo+ICsgKiBAbGFzdF90ZF93YXNfc2hvcnQgLSBU RCBpcyBzaG9ydCBURC4NCj4gKyAqIEB0cmJfYWRkcmVzc19tYXA6IEZvciBtYXBwaW5nIHBoeXNp Y2FsIFRSQiBhZGRyZXNzZXMgdG8gc2VnbWVudHMgaW4NCj4gKyAqICAgICAgICAgICAgICAgICAg IHN0cmVhbSByaW5ncy4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX3Jpbmcgew0KPiArCXN0cnVj dCBjZG5zcF9zZWdtZW50ICpmaXJzdF9zZWc7DQo+ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQgKmxh c3Rfc2VnOw0KPiArCXVuaW9uIGNkbnNwX3RyYgkgKmVucXVldWU7DQo+ICsJc3RydWN0IGNkbnNw X3NlZ21lbnQgKmVucV9zZWc7DQo+ICsJdW5pb24gY2Ruc3BfdHJiCSAqZGVxdWV1ZTsNCj4gKwlz dHJ1Y3QgY2Ruc3Bfc2VnbWVudCAqZGVxX3NlZzsNCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHRkX2xp c3Q7DQo+ICsJdTMyIGN5Y2xlX3N0YXRlOw0KPiArCXVuc2lnbmVkIGludCBzdHJlYW1faWQ7DQo+ ICsJdW5zaWduZWQgaW50IHN0cmVhbV9hY3RpdmU7DQo+ICsJdW5zaWduZWQgaW50IHN0cmVhbV9y ZWplY3RlZDsNCj4gKwlpbnQgbnVtX3RkczsNCj4gKwl1bnNpZ25lZCBpbnQgbnVtX3NlZ3M7DQo+ ICsJdW5zaWduZWQgaW50IG51bV90cmJzX2ZyZWU7DQo+ICsJdW5zaWduZWQgaW50IGJvdW5jZV9i dWZfbGVuOw0KPiArCWVudW0gY2Ruc3BfcmluZ190eXBlIHR5cGU7DQo+ICsJYm9vbCBsYXN0X3Rk X3dhc19zaG9ydDsNCj4gKwlzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICp0cmJfYWRkcmVzc19tYXA7 DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9lcnN0X2VudHJ5IC0gZXZl biByaW5nIHNlZ21lbnQgdGFibGUgZW50cnkgb2JqZWN0Lg0KPiArICogQHNlZ19hZGRyOiA2NC1i aXQgZXZlbnQgcmluZyBzZWdtZW50IGFkZHJlc3MuDQo+ICsgKiBzZWdfc2l6ZTogTnVtYmVyIG9m IFRSQnMgaW4gc2VnbWVudC47DQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9lcnN0X2VudHJ5IHsN Cj4gKwlfX2xlNjQgc2VnX2FkZHI7DQo+ICsJX19sZTMyIHNlZ19zaXplOw0KPiArCS8qIFNldCB0 byB6ZXJvICovDQo+ICsJX19sZTMyIHJzdmQ7DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0 cnVjdCBjZG5zcF9lcnN0IC0gZXZlbiByaW5nIHNlZ21lbnQgdGFibGUgZm9yIGV2ZW50IHJpbmcu DQo+ICsgKiBAZW50cmllczogQXJyYXkgb2YgZXZlbnQgcmluZyBzZWdtZW50cw0KPiArICogQG51 bV9lbnRyaWVzOiBOdW1iZXIgb2Ygc2VnbWVudHMgaW4gZW50cmllcyBhcnJheS4NCj4gKyAqIEBl cnN0X2RtYV9hZGRyOiBETUEgYWRkcmVzcyBmb3IgZW50cmllcyBhcnJheS4NCj4gKyAqLw0KPiAr c3RydWN0IGNkbnNwX2Vyc3Qgew0KPiArCXN0cnVjdCBjZG5zcF9lcnN0X2VudHJ5ICplbnRyaWVz Ow0KPiArCXVuc2lnbmVkIGludCBudW1fZW50cmllczsNCj4gKwlkbWFfYWRkcl90IGVyc3RfZG1h X2FkZHI7DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9yZXF1ZXN0IC0g ZXh0ZW5kZWQgZGV2aWNlIHNpZGUgcmVwcmVzZW50YXRpb24gb2YgdXNiX3JlcXVlc3QNCj4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IC4NCj4gKyAqIEB0ZDogVHJhbnNmZXIgZGVz Y3JpcHRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0Lg0KPiArICogQHJlcXVlc3Q6IEdl bmVyaWMgdXNiX3JlcXVlc3Qgb2JqZWN0IGRlc2NyaWJpbmcgc2luZ2xlIEkvTyByZXF1ZXN0Lg0K PiArICogQGxpc3Q6IFVzZWQgdG8gYWRkaW5nIHJlcXVlc3QgdG8gZW5kcG9pbnQgcGVuZGluZ19s aXN0Lg0KPiArICogQHBlcDogRXh0ZW5kZWQgcmVwcmVzZW50YXRpb24gb2YgdXNiX2VwIG9iamVj dA0KPiArICogQGVwbnVtOiBFbmRwb2ludCBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHVzYiByZXF1 ZXN0Lg0KPiArICogQGRpcmVjdGlvbjogRW5kcG9pbnQgZGlyZWN0aW9uIGZvciB1c2IgcmVxdWVz dC4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX3JlcXVlc3Qgew0KPiArCXN0cnVjdAljZG5zcF90 ZCB0ZDsNCj4gKwlzdHJ1Y3QgdXNiX3JlcXVlc3QgcmVxdWVzdDsNCj4gKwlzdHJ1Y3QgbGlzdF9o ZWFkIGxpc3Q7DQo+ICsJc3RydWN0IGNkbnNwX2VwCSAqcGVwOw0KPiArCXU4IGVwbnVtOw0KPiAr CXVuc2lnbmVkIGRpcmVjdGlvbjoxOw0KPiArfTsNCj4gKw0KPiArI2RlZmluZQlFUlNUX05VTV9T RUdTCTENCj4gKw0KPiArLyogU3RhZ2VzIHVzZWQgZHVyaW5nIGVudW1lcmF0aW9uIHByb2Nlc3Mu Ki8NCj4gK2VudW0gY2Ruc3BfZXAwX3N0YWdlIHsNCj4gKwlDRE5TUF9TRVRVUF9TVEFHRSwNCj4g KwlDRE5TUF9EQVRBX1NUQUdFLA0KPiArCUNETlNQX1NUQVRVU19TVEFHRSwNCj4gK307DQo+ICsN Cj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX3BvcnQgLSBob2xkcyBpbmZvcm1hdGlvbiBhYm91 dCBkZXRlY3RlZCBwb3J0cy4NCj4gKyAqIEBwb3J0X251bTogUG9ydCBudW1iZXIuDQo+ICsgKiBA ZXhpc3Q6IEluZGljYXRlIGlmIHBvcnQgZXhpc3QuDQo+ICsgKiBtYWpfcmV2OiBNYWpvciByZXZp c2lvbi4NCj4gKyAqIG1pbl9yZXY6IE1pbm9yIHJldmlzaW9uLg0KPiArICovDQo+ICtzdHJ1Y3Qg Y2Ruc3BfcG9ydCB7DQo+ICsJc3RydWN0IGNkbnNwX3BvcnRfcmVncyBfX2lvbWVtICpyZWdzOw0K PiArCXU4IHBvcnRfbnVtOw0KPiArCXU4IGV4aXN0Ow0KPiArCXU4IG1hal9yZXY7DQo+ICsJdTgg bWluX3JldjsNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgQ0ROU1BfRVhUX1BPUlRfTUFKT1IoeCkJ CSgoKHgpID4+IDI0KSAmIDB4ZmYpDQo+ICsjZGVmaW5lIENETlNQX0VYVF9QT1JUX01JTk9SKHgp CQkoKCh4KSA+PiAxNikgJiAweGZmKQ0KPiArI2RlZmluZSBDRE5TUF9FWFRfUE9SVF9PRkYoeCkJ CSgoeCkgJiAweGZmKQ0KPiArI2RlZmluZSBDRE5TUF9FWFRfUE9SVF9DT1VOVCh4KQkJKCgoeCkg Pj4gOCkgJiAweGZmKQ0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9kZXZpY2UgLSBy ZXByZXNlbnQgVVNCIGRldmljZS4NCj4gKyAqIEBkZXY6IFBvaW50ZXIgdG8gZGV2aWNlIHN0cnVj dHVyZSBhc3NvY2lhdGVkIHdoaXQgdGhpcyBjb250cm9sbGVyLg0KPiArICogQGdhZGdldDogRGV2 aWNlIHNpZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBlcmlwaGVyYWwgY29udHJvbGxlci4NCj4g KyAqIEBnYWRnZXRfZHJpdmVyOiBQb2ludGVyIHRvIHRoZSBnYWRnZXQgZHJpdmVyLg0KPiArICog QGlycTogSVJRIGxpbmUgbnVtYmVyIHVzZWQgYnkgZGV2aWNlIHNpZGUuDQo+ICsgKiBAcmVnczpJ TyBkZXZpY2UgbWVtb3J5Lg0KPiArICogQGNhcF9yZWdzOiBDYXBhYmlsaXR5IHJlZ2lzdGVycy4N Cj4gKyAqIEBvcF9yZWdzOiBPcGVyYXRpb25hbCByZWdpc3RlcnMuDQo+ICsgKiBAcnVuX3JlZ3M6 IFJ1bnRpbWUgcmVnaXN0ZXJzLg0KPiArICogQGRiYTogRGV2aWNlIGJhc2UgYWRkcmVzcyByZWdp c3Rlci4NCj4gKyAqIEBpcl9zZXQ6IEN1cnJlbnQgaW50ZXJydXB0ZXIgcmVnaXN0ZXIgc2V0Lg0K PiArICogQHBvcnQyMF9yZWdzOiBQb3J0IDIuMCBQZXJpcGhlcmFsIENvbmZpZ3VyYXRpb24gUmVn aXN0ZXJzLg0KPiArICogQHBvcnQzeF9yZWdzOiBVU0IzLnggUG9ydCBQZXJpcGhlcmFsIENvbmZp Z3VyYXRpb24gUmVnaXN0ZXJzLg0KPiArICogQGhjc19wYXJhbXMxOiBDYWNoZWQgcmVnaXN0ZXIg Y29waWVzIG9mIHJlYWQtb25seSBIQ1NQQVJBTVMxDQo+ICsgKiBAaGNjX3BhcmFtczogQ2FjaGVk IHJlZ2lzdGVyIGNvcGllcyBvZiByZWFkLW9ubHkgSENDUEFSQU1TMQ0KPiArICogQHJldl9jYXA6 IENvbnRyb2xsZXIgY2FwYWJpbGl0eS4NCj4gKyAqIEBzZXR1cDogVGVtcG9yYXJ5IGJ1ZmZlciBm b3Igc2V0dXAgcGFja2V0Lg0KPiArICogQGVwMF9wcmVxOiBJbnRlcm5hbCBhbGxvY2F0ZWQgcmVx dWVzdCB1c2VkIGR1cmluZyBlbnVtZXJhdGlvbi4NCj4gKyAqIEBlcDBfc3RhZ2U6IGVwMCBzdGFn ZSBkdXJpbmcgZW51bWVyYXRpb24gcHJvY2Vzcy4NCj4gKyAqIEB0aHJlZV9zdGFnZV9zZXR1cDog VGhyZWUgc3RhdGUgb3IgdHdvIHN0YXRlIHNldHVwLg0KPiArICogQGVwMF9leHBlY3RfaW46IERh dGEgSU4gZXhwZWN0ZWQgZm9yIGNvbnRyb2wgdHJhbnNmZXIuDQo+ICsgKiBAc2V0dXBfaWQ6IFNl dHVwIGlkZW50aWZpZXIuDQo+ICsgKiBAc2V0dXBfc3BlZWQgLSBTcGVlZCBkZXRlY3RlZCBmb3Ig Y3VycmVudCBTRVRVUCBwYWNrZXQuDQo+ICsgKiBAc2V0dXBfYnVmOiBCdWZmZXIgZm9yIFNFVFVQ IHBhY2tldC4NCj4gKyAqIEBkZXZpY2VfYWRkcmVzczogQ3VycmVudCBkZXZpY2UgYWRkcmVzcy4N Cj4gKyAqIEBtYXlfd2FrZXVwOiByZW1vdGUgd2FrZXVwIGVuYWJsZWQvZGlzYWJsZWQuDQo+ICsg KiBAbG9jazogTG9jayB1c2VkIGluIGludGVycnVwdCB0aHJlYWQgY29udGV4dC4NCj4gKyAqIEBo Y2lfdmVyc2lvbjogZGV2aWNlIGNvbnRyb2xsZXIgdmVyc2lvbi4NCj4gKyAqIEBkY2JhYTogRGV2 aWNlIGNvbnRleHQgYmFzZSBhZGRyZXNzIGFycmF5Lg0KPiArICogQGNtZF9yaW5nOiBDb21tYW5k IHJpbmcuDQo+ICsgKiBAY21kOiBSZXByZXNlbnQgYWxsIHdoYXQgaXMgbmVlZGVkIHRvIGlzc3Vl IGNvbW1hbmQgb24gQ29tbWFuZCBSaW5nLg0KPiArICogQGV2ZW50X3Jpbmc6IEV2ZW50IHJpbmcu DQo+ICsgKiBAZXJzdDogRXZlbnQgUmluZyBTZWdtZW50IHRhYmxlDQo+ICsgKiBAc2xvdF9pZDog Q3VycmVudCBTbG90IElELiBTaG91bGQgYmUgMCBvciAxLg0KPiArICogQG91dF9jdHg6IE91dHB1 dCBjb250ZXh0Lg0KPiArICogQGluX2N0eDogSW5wdXQgY29udGV4dC4NCj4gKyAqIEBlcHM6IGFy cmF5IG9mIGVuZHBvaW50cyBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIGRldmljZS4NCj4gKyAqIEB1 c2IyX2h3X2xwbV9jYXBhYmxlOiBoYXJkd2FyZSBscG0gaXMgZW5hYmxlZDsNCj4gKyAqIEB1MV9h bGxvd2VkOiBBbGxvdyBkZXZpY2UgdHJhbnNpdGlvbiB0byBVMSBzdGF0ZS4NCj4gKyAqIEB1Ml9h bGxvd2VkOiBBbGxvdyBkZXZpY2UgdHJhbnNpdGlvbiB0byBVMiBzdGF0ZQ0KPiArICogQGRldmlj ZV9wb29sOiBETUEgcG9vbCBmb3IgYWxsb2NhdGluZyBpbnB1dCBhbmQgb3V0cHV0IGNvbnRleHQu DQo+ICsgKiBAc2VnbWVudF9wb29sOiBETUEgcG9vbCBmb3IgYWxsb2NhdGluZyBuZXcgc2VnbWVu dHMuDQo+ICsgKiBAY2Ruc3Bfc3RhdGU6IEN1cnJlbnQgc3RhdGUgb2YgY29udHJvbGxlci4NCj4g KyAqIEBsaW5rX3N0YXRlOiBDdXJyZW50IGxpbmsgc3RhdGUuDQo+ICsgKiBAdXNiMl9wb3J0IC0g UG9ydCBVU0IgMi4wLg0KPiArICogQHVzYjNfcG9ydCAtIFBvcnQgVVNCIDMuMC4NCj4gKyAqIEBh Y3RpdmVfcG9ydCAtIEN1cnJlbnQgc2VsZWN0ZWQgUG9ydC4NCj4gKyAqIEB0ZXN0X21vZGU6IHNl bGVjdGVkIFRlc3QgTW9kZS4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX2RldmljZSB7DQo+ICsJ c3RydWN0IGRldmljZSAqZGV2Ow0KPiArCXN0cnVjdCB1c2JfZ2FkZ2V0IGdhZGdldDsNCj4gKwlz dHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmdhZGdldF9kcml2ZXI7DQo+ICsJdW5zaWduZWQgaW50 IGlycTsNCj4gKwl2b2lkIF9faW9tZW0gKnJlZ3M7DQo+ICsNCj4gKwkvKiBSZWdpc3RlcnMgbWFw ICovDQo+ICsJc3RydWN0IGNkbnNwX2NhcF9yZWdzIF9faW9tZW0gKmNhcF9yZWdzOw0KPiArCXN0 cnVjdCBjZG5zcF9vcF9yZWdzIF9faW9tZW0gKm9wX3JlZ3M7DQo+ICsJc3RydWN0IGNkbnNwX3J1 bl9yZWdzIF9faW9tZW0gKnJ1bl9yZWdzOw0KPiArCXN0cnVjdCBjZG5zcF9kb29yYmVsbF9hcnJh eSBfX2lvbWVtICpkYmE7DQo+ICsJc3RydWN0CWNkbnNwX2ludHJfcmVnIF9faW9tZW0gKmlyX3Nl dDsNCj4gKwlzdHJ1Y3QgY2Ruc3BfMjBwb3J0X2NhcCBfX2lvbWVtICpwb3J0MjBfcmVnczsNCj4g KwlzdHJ1Y3QgY2Ruc3BfM3hwb3J0X2NhcCBfX2lvbWVtICpwb3J0M3hfcmVnczsNCj4gKw0KPiAr CS8qIENhY2hlZCByZWdpc3RlciBjb3BpZXMgb2YgcmVhZC1vbmx5IENETlNQIGRhdGEgKi8NCj4g KwlfX3UzMiBoY3NfcGFyYW1zMTsNCj4gKwlfX3UzMiBoY3NfcGFyYW1zMzsNCj4gKwlfX3UzMiBo Y2NfcGFyYW1zOw0KPiArCXN0cnVjdCBjZG5zcF9yZXZfY2FwIHJldl9jYXA7DQo+ICsJLyogTG9j ayB1c2VkIGluIGludGVycnVwdCB0aHJlYWQgY29udGV4dC4gKi8NCj4gKwlzcGlubG9ja190IGxv Y2s7DQo+ICsJc3RydWN0IHVzYl9jdHJscmVxdWVzdCBzZXR1cDsNCj4gKwlzdHJ1Y3QgY2Ruc3Bf cmVxdWVzdCBlcDBfcHJlcTsNCj4gKwllbnVtIGNkbnNwX2VwMF9zdGFnZSBlcDBfc3RhZ2U7DQo+ ICsJdTggdGhyZWVfc3RhZ2Vfc2V0dXA7DQo+ICsJdTggZXAwX2V4cGVjdF9pbjsNCj4gKwl1OCBz ZXR1cF9pZDsNCj4gKwl1OCBzZXR1cF9zcGVlZDsNCj4gKwl2b2lkICpzZXR1cF9idWY7DQo+ICsJ dTggZGV2aWNlX2FkZHJlc3M7DQo+ICsJaW50IG1heV93YWtldXA7DQo+ICsJdTE2IGhjaV92ZXJz aW9uOw0KPiArDQo+ICsJLyogZGF0YSBzdHJ1Y3R1cmVzICovDQo+ICsJc3RydWN0IGNkbnNwX2Rl dmljZV9jb250ZXh0X2FycmF5ICpkY2JhYTsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcmluZyAqY21kX3Jp bmc7DQo+ICsJc3RydWN0IGNkbnNwX2NvbW1hbmQgY21kOw0KPiArCXN0cnVjdCBjZG5zcF9yaW5n ICpldmVudF9yaW5nOw0KPiArCXN0cnVjdCBjZG5zcF9lcnN0IGVyc3Q7DQo+ICsJaW50IHNsb3Rf aWQ7DQo+ICsNCj4gKwkvKg0KPiArCSAqIENvbW1hbmRzIHRvIHRoZSBoYXJkd2FyZSBhcmUgcGFz c2VkIGFuICJpbnB1dCBjb250ZXh0IiB0aGF0DQo+ICsJICogdGVsbHMgdGhlIGhhcmR3YXJlIHdo YXQgdG8gY2hhbmdlIGluIGl0cyBkYXRhIHN0cnVjdHVyZXMuDQo+ICsJICogVGhlIGhhcmR3YXJl IHdpbGwgcmV0dXJuIGNoYW5nZXMgaW4gYW4gIm91dHB1dCBjb250ZXh0IiB0aGF0DQo+ICsJICog c29mdHdhcmUgbXVzdCBhbGxvY2F0ZSBmb3IgdGhlIGhhcmR3YXJlLiAuDQo+ICsJICovDQo+ICsJ c3RydWN0IGNkbnNwX2NvbnRhaW5lcl9jdHggb3V0X2N0eDsNCj4gKwlzdHJ1Y3QgY2Ruc3BfY29u dGFpbmVyX2N0eCBpbl9jdHg7DQo+ICsJc3RydWN0IGNkbnNwX2VwIGVwc1tDRE5TUF9FTkRQT0lO VFNfTlVNXTsNCj4gKwl1OCB1c2IyX2h3X2xwbV9jYXBhYmxlOjE7DQo+ICsJdTggdTFfYWxsb3dl ZDoxOw0KPiArCXU4IHUyX2FsbG93ZWQ6MTsNCj4gKw0KPiArCS8qIERNQSBwb29scyAqLw0KPiAr CXN0cnVjdCBkbWFfcG9vbCAqZGV2aWNlX3Bvb2w7DQo+ICsJc3RydWN0IGRtYV9wb29sCSpzZWdt ZW50X3Bvb2w7DQo+ICsNCj4gKyNkZWZpbmUgQ0ROU1BfU1RBVEVfSEFMVEVECQlCSVQoMSkNCj4g KyNkZWZpbmUgQ0ROU1BfU1RBVEVfRFlJTkcJCUJJVCgyKQ0KPiArI2RlZmluZSBDRE5TUF9TVEFU RV9ESVNDT05ORUNUX1BFTkRJTkcJQklUKDMpDQo+ICsjZGVmaW5lIENETlNQX1dBS0VVUF9QRU5E SU5HCQlCSVQoNCkNCj4gKwl1bnNpZ25lZCBpbnQgY2Ruc3Bfc3RhdGU7DQo+ICsJdW5zaWduZWQg aW50IGxpbmtfc3RhdGU7DQo+ICsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcG9ydCB1c2IyX3BvcnQ7DQo+ ICsJc3RydWN0IGNkbnNwX3BvcnQgdXNiM19wb3J0Ow0KPiArCXN0cnVjdCBjZG5zcF9wb3J0ICph Y3RpdmVfcG9ydDsNCj4gKwl1MTYgdGVzdF9tb2RlOw0KPiArfTsNCj4gKw0KPiArI2VuZGlmIC8q IF9fTElOVVhfQ0ROU1BfR0FER0VUX0ggKi8NCj4gLS0gDQo+IDIuMTcuMQ0KPiANCg0KLS0gDQoN ClRoYW5rcywNClBldGVyIENoZW4=