Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp4420404pxk; Wed, 30 Sep 2020 02:26:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyKcLP+4HELVxizCe28Pt0xo9Ue9q5JSqQ01c03FMsiJEcE4IL24FlSwK267Nlxisob5Y45 X-Received: by 2002:a50:f197:: with SMTP id x23mr1731712edl.367.1601458018994; Wed, 30 Sep 2020 02:26:58 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1601458018; cv=pass; d=google.com; s=arc-20160816; b=r7LE+b6ba/Lk3NR1m9P0q5qdX4TRGs4L57ObZfvWo/KCfmPu4VZny/9JbQv4rMTnoT 1e1vLGe2QK7HXG8MzdfjBdkBNP8DC8RpMG387xMK0S86DiTqJGL5h98hCjmhzqjlBL0/ 4PIk7x/gLJuvbVE5qxTLJ4EfjucA/zdEAqH1WmnctWywa6HN6fTALfzfptUY1lylbyuY Ww21f7mXOFgKb/nz1nr3R8p1rzqT1zEeBCpQhclEQQyDLjUsgom34Ng666rCyw1WbX+L AoJ1GzKE8fTKYGunVpVK2z5MNf4n+8zmsSm0poBWEKJgFYp8D+RtLLeuE6g1Z/8kgNbl kJzg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=C9NJzX6A6hx3PdA0smvp9RAGL9CGdn/di/1dhUqRhco=; b=JeCIdady9vykmmE70uvezNZiqJSbkoiGDW3GLpHGeHGRMlZAuVc33P2cepYfjfh+mB 2KPNldjkFCwGPlRrPtFi4t5dv3ODKCIbXUadJdrM411xOC4lRisCw0B5oWwCdvKOHwbC KXW7kUmTk/JGyR1aSHmuIhCJ95QsojHPZdUAn6dBtjpr4jQczXzETe7dvK1avmWhosLN 0J9IowUMtJGYaqcjqFKVIoL61aFqeGU0J0KbORQKxH18Acr+LII12l2i8mJqqWV1uxmt oM+84nclXEWZ4VSTQAIFRuB9mOj89Ju6ZNocbaqT/waMM7Ijih2bsQlHOUAr+BhfeT2i jwbA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@cadence.com header.s=proofpoint header.b=qhPMsyXD; dkim=pass header.i=@cadence.com header.s=selector2 header.b=WFgdRsXu; arc=pass (i=1 spf=pass spfdomain=cadence.com dkim=pass dkdomain=cadence.com dmarc=pass fromdomain=cadence.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y2si716090edi.491.2020.09.30.02.26.33; Wed, 30 Sep 2020 02:26:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@cadence.com header.s=proofpoint header.b=qhPMsyXD; dkim=pass header.i=@cadence.com header.s=selector2 header.b=WFgdRsXu; arc=pass (i=1 spf=pass spfdomain=cadence.com dkim=pass dkdomain=cadence.com dmarc=pass fromdomain=cadence.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728851AbgI3JWx (ORCPT + 99 others); Wed, 30 Sep 2020 05:22:53 -0400 Received: from mx0a-0014ca01.pphosted.com ([208.84.65.235]:37768 "EHLO mx0a-0014ca01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725823AbgI3JWx (ORCPT ); Wed, 30 Sep 2020 05:22:53 -0400 Received: from pps.filterd (m0042385.ppops.net [127.0.0.1]) by mx0a-0014ca01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 08U9MMtI010704; Wed, 30 Sep 2020 02:22:22 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint; bh=C9NJzX6A6hx3PdA0smvp9RAGL9CGdn/di/1dhUqRhco=; b=qhPMsyXDYdArL+rLJFDcTWW0GGReGkesrSHrC3o78WXidHkJmtifQuYyngsdZsVjRDZ8 FCqewaQMhovdzW9ok/OAqiL+DcBqnzAaKN73Bg0BxCH/wQtYoe4dsJLMO2ss2K+D4LiR Qh2wjOpe5hcZaqgY+aL+vN+60+9WE1dTKaaRW7xjgvtmrsjm5e9TdPKejW7YOfk1MkZV oZrDhqBbOGzfU5d8dTz7laew2ZYb7gvD1/dx3R0e6JzD/ewag2k84Q22FH8MZX6see/G 2jW6yDJDGlTiTUGaG4qjpuhW0/3siPIERUKg6/Tk8J/1YVa3lrcRX7G6HP7NPrXBxLsG Pw== Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2171.outbound.protection.outlook.com [104.47.55.171]) by mx0a-0014ca01.pphosted.com with ESMTP id 33t26xnjjw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Sep 2020 02:22:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mAWETIZd7fJ42ipZoIwzTepA/5fiMdWZKhtVjc2MT6ehhCbTkLDa8gsbq6I/5ruSABi8THH7or8JjYhrHN2DU+WiAPybDex0QuvAId22dwKtti0/MLIXZREsATW0gf5yF5nCxt4OUsZ0dJhJc8SC9E1/Cl96+NRn8DCyDImPf/sO6DIOtmvu/FrSqQovRmHR/ahVjsMOf2HKcX34k6EBfGsNumevaEOo3L9dJz4c+0LWFRc5KpOt+gXgzbYt0yi/oatF1OpL2DbQn7q3ohSTglTdCdFeiOSwRas0He4akSbsI1wX2lfWazOa1z2XVvQjRPYiFl0KsjFOYfTmnrrQxw== 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=C9NJzX6A6hx3PdA0smvp9RAGL9CGdn/di/1dhUqRhco=; b=NXzafbW0fhXmjiTGY2Me0kkGBDhLDGcuJ0AldD0c7Qa3QGHgk+hEHQ15hrdwUz1DFLuNzpFHEC5C0b+ByNVgDgle58VfhuYESJhzC75/34HaTNbaK2pGuQTfoKlLTf+1dPzA2TfrRKtneP7A6ID5A9r0fRb6LRiSWm2qlC56SQnLVu9PnZ3LQZKnNbOFhK2jAUY2C5DbhrNYdsNFznIYZwNV8etA7UqdPcH7BHMJL3UqzMa1M4hNNAc/0heTEYQLkESLnuwF0AVnJeUxykW+/6ebh+gZyubLKpScUn1chUz3Us8WW0ZD3066jnQtCub3hQQA3yGBIJ0fsxroJLDVRQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cadence.com; dmarc=pass action=none header.from=cadence.com; dkim=pass header.d=cadence.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=C9NJzX6A6hx3PdA0smvp9RAGL9CGdn/di/1dhUqRhco=; b=WFgdRsXuTcW46SiHkYKHiT91I+6aZlIUNWt1men9M3uvrM74dG4wrk1SmCDmVxCc19BW+hkfDorCJfXS8d9vubolZsFJPl1PRyae0dxiLj5N1ADTRl42W435MF2/SuvLxO5j0HT81QPMOPV4gA6Jec1ibqB1IcFvGLNWzMzjUKA= Received: from DM6PR07MB5529.namprd07.prod.outlook.com (2603:10b6:5:7a::30) by DM6PR07MB4377.namprd07.prod.outlook.com (2603:10b6:5:bf::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22; Wed, 30 Sep 2020 09:22:11 +0000 Received: from DM6PR07MB5529.namprd07.prod.outlook.com ([fe80::2087:7f2b:5dc6:a960]) by DM6PR07MB5529.namprd07.prod.outlook.com ([fe80::2087:7f2b:5dc6:a960%6]) with mapi id 15.20.3412.029; Wed, 30 Sep 2020 09:22:11 +0000 From: Pawel Laszczak To: Peter Chen CC: "gregkh@linuxfoundation.org" , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "balbi@kernel.org" , "colin.king@canonical.com" , "rogerq@ti.com" , Jayshri Dajiram Pawar , Rahul Kumar , Sanket Parmar , "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: AQHWlZOXFepb+ow65kq5fl4vYLEZYal/CV8AgAHg2iA= Date: Wed, 30 Sep 2020 09:22:11 +0000 Message-ID: References: <20200928122741.17884-1-pawell@cadence.com> <20200928122741.17884-7-pawell@cadence.com> <20200929043635.GD9076@b29397-desktop> In-Reply-To: <20200929043635.GD9076@b29397-desktop> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNccGF3ZWxsXGFwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0YmEyOWUzNWJcbXNnc1xtc2ctNjdiZjMyM2YtMDJmZS0xMWViLTg3NmItMWM0ZDcwMWRmYmE0XGFtZS10ZXN0XDY3YmYzMjQxLTAyZmUtMTFlYi04NzZiLTFjNGQ3MDFkZmJhNGJvZHkudHh0IiBzej0iNTYxMjAiIHQ9IjEzMjQ1OTMxMzI2MDY4NDM2NCIgaD0iY05lWmxsVFFBeUhrUEtjcFhQVFd2aFo0aE9FPSIgaWQ9IiIgYmw9IjAiIGJvPSIxIi8+PC9tZXRhPg== x-dg-rorf: true authentication-results: nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=none action=none header.from=cadence.com; x-originating-ip: [185.217.253.59] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: aaf632fa-fa34-49eb-b8ed-08d865224fba x-ms-traffictypediagnostic: DM6PR07MB4377: x-ms-exchange-transport-forked: True 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: Kqupr7gcfsrXAciSNx6vheNsyERaWGVT/QrHiUCO1w3+UvUCFzIqg0Di8tEoBrpRv3fHG9gj4QTkbsF5pWPut9frDGBgehylNgLgEPHpxwsWJtlRgzE6dYwIVL8UucxE8S1zI2IR/JM54iszec/y+5E6qC848lUXEN5MWDvdZfXY14NsAiWAyY9r27S2GQU+DA39H3AS6HZdEi3OJPpmmK/qm/0N2/B/Sf+prWSan8UDImYnRws42hKIddvzAzdAvRGwW2HufTGjjc02wvYL9mXBafJR5cUInEjiso/zSP1Rx6k2OmhhKp7J2gKS6mp2/Euc5yM+VY1nqE29+XFGEIWRK+UcFciV37Z7GTw4vNxUnf1oiFnUvNHKy8mArUDAim0d0U15CgHZrqDHIEWRrOtugxEHu/s/Mg1pC1WltTSsj+ZlI7/oLm/lv7Nxy+jtAFP6EC8RiZgJ0P01/wbrtltZTgj+y+hhF6tsQQDP4FU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR07MB5529.namprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(346002)(136003)(396003)(366004)(376002)(36092001)(6506007)(478600001)(5660300002)(71200400001)(6916009)(4326008)(54906003)(7416002)(66946007)(7696005)(66476007)(66556008)(52536014)(76116006)(33656002)(66446008)(8936002)(86362001)(2906002)(8676002)(186003)(9686003)(316002)(55016002)(30864003)(26005)(83380400001)(64756008)(559001)(579004)(473944003)(414714003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: 7URZWDZ9j47XE16fVXi42LU93f9xRZzyYLOWg5Q4dvn0Qa7C951yNaAlbl/ZehXqXz79GNGkmBRAegl4xMcRqbrHlex6eUQVCdm/UaJMaEZp0APiZIdaEH18srJ457Vj/JuS8UTP+3adcEbF4wwwSZStsaNIVofyaLDekK6pBFXzz6onrUQllDkFjP4d4pcAVEsxTVbtVkA79YkkgSm1l9mAo62j2bFFmt9x2BffkCtJ7ADrBnllMCZ+Mljj03sUhkjY9w119kl3E5+kSXNzX5dsYT5+uPQMsAoVdrGCVOteAjGRaDcVJKUsNyluaURQ5ug/7nuSZVWG/b6AQemznKzAQyn5e5ldJCAPG3Ku/gY1QmFFM2+OJyuJbnXmUzPCY+2LkxwPkcJMgVZN+56QpNJqiAIEeTm8UUod9kLG1dYe2mbGacFLaSRtmYdJ9yUrTlfe9sArLP3Kb99HacPk/VoVV1Q7oYRXm8UwMHdnkGICqhCVJzP3xp1QdanMILiiS06Efl/LFffC/tZWslIRm651F6WacTT+81fx4GBmrafGveQjWfHli8jPCREucRqfEDBQV9BGiBSPhakWMapAar/1q8ciERb86PF3tiR/N3pBJiuNqa3fMWT702C3+uOe2FvyBluEdQ3/N6ix7op4Wg== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR07MB5529.namprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: aaf632fa-fa34-49eb-b8ed-08d865224fba X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Sep 2020 09:22:11.2116 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Y+k7KzJSr6h34kTCQSMmr75KcMSFqUt04KaKtxSGQdRGsAq5++5su0jOsqz/u7ZrbHUrn/wXspzfbcXinLF4jbbjgc3oNXfx04RQdT2mYbs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR07MB4377 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235,18.0.687 definitions=2020-09-30_05:2020-09-29,2020-09-30 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 bulkscore=0 adultscore=0 priorityscore=1501 clxscore=1015 spamscore=0 phishscore=0 malwarescore=0 mlxscore=0 impostorscore=0 suspectscore=0 mlxlogscore=999 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2006250000 definitions=main-2009300075 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Pg0KPg0KPk9uIDIwLTA5LTI4IDE0OjI3OjM5LCBQYXdlbCBMYXN6Y3phayB3cm90ZToNCj4+IFBh dGNoIGRlZmluZXMgbWFjcm9zLCByZWdpc3RlcnMgYW5kIHN0cnVjdHVyZXMgdXNlZCBieQ0KPj4g RGV2aWNlIHNpZGUgZHJpdmVyLg0KPj4NCj4+IEJlY2F1c2UgdGhlIHNpemUgb2YgbWFpbiBwYXRj aCBpcyB2ZXJ5IGJpZywgSeKAmXZlIGRlY2lkZWQgdG8gY3JlYXRlDQo+PiBzZXBhcmF0ZSBwYXRj aCBmb3IgZ2FkZ2V0LmguIEl0IHNob3VsZCBzaW1wbGlmeSByZXZpZXdpbmcgdGhlIGNvZGUuDQo+ Pg0KPj4gU2lnbmVkLW9mZi1ieTogUGF3ZWwgTGFzemN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4N Cj4+IC0tLQ0KPj4gIGRyaXZlcnMvdXNiL2NkbnNwL2dhZGdldC5oIHwgMTQ1OSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4NCj5JIGhhdmUgbm8gc2VlbiB0aGVyZSBhcmUg Zm9sZGVyIGNkbnNwIGZyb20gcHJldmlvdXMgcGF0Y2hlcy4NCg0KWWVzLCBpdCdzIHRydWUsIGJ1 dCBjZG5zcCBmb2xkZXIgaXMgY3JlYXRpbmcgZHVyaW5nIGFwcGx5aW5nIHRoaXMgcGF0Y2guIA0K DQpQYXdlbA0KDQo+PiAgMSBmaWxlIGNoYW5nZWQsIDE0NTkgaW5zZXJ0aW9ucygrKQ0KPj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zcC9nYWRnZXQuaA0KPj4NCj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zcC9nYWRnZXQuaCBiL2RyaXZlcnMvdXNiL2NkbnNwL2dh ZGdldC5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5i ZmM0MTk2YzNiMTANCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvdXNiL2NkbnNw L2dhZGdldC5oDQo+PiBAQCAtMCwwICsxLDE0NTkgQEANCj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMCAqLw0KPj4gKy8qDQo+PiArICogQ2FkZW5jZSBDRE5TUCBEUkQgRHJp dmVyLg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDIwIENhZGVuY2UuDQo+PiArICoN Cj4+ICsgKiBBdXRob3I6IFBhd2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+DQo+PiAr ICoNCj4+ICsgKiBDb2RlIGJhc2VkIG9uIExpbnV4IFhIQ0kgZHJpdmVyLg0KPj4gKyAqIE9yaWdp bjogQ29weXJpZ2h0IChDKSAyMDA4IEludGVsIENvcnAuDQo+PiArICovDQo+PiArI2lmbmRlZiBf X0xJTlVYX0NETlNQX0dBREdFVF9IDQo+PiArI2RlZmluZSBfX0xJTlVYX0NETlNQX0dBREdFVF9I DQo+PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4L2lvLTY0LW5vbmF0b21pYy1sby1oaS5oPg0KPj4g KyNpbmNsdWRlIDxsaW51eC91c2IvZ2FkZ2V0Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2lycS5o Pg0KPj4gKw0KPj4gKy8qIE1heCBudW1iZXIgc2xvdHMgLSBvbmx5IDEgaXMgYWxsb3dlZC4gKi8N Cj4+ICsjZGVmaW5lIENETlNQX0RFVl9NQVhfU0xPVFMJMQ0KPj4gKw0KPj4gKyNkZWZpbmUgQ0RO U1BfRVAwX1NFVFVQX1NJWkUJNTEyDQo+PiArDQo+PiArLyoxNiBmb3IgaW4gYW5kIDE2IGZvciBv dXQuICovDQo+PiArI2RlZmluZSBDRE5TUF9FTkRQT0lOVFNfTlVNCTMyDQo+PiArDQo+PiArLyog QmVzdCBFZmZvcnQgU2VydmljZSBMYXRlbmN5LiAqLw0KPj4gKyNkZWZpbmUgQ0ROU1BfREVGQVVM VF9CRVNMCTANCj4+ICsNCj4+ICsvKiBEZXZpY2UgQ29udHJvbGxlciBjb21tYW5kIGRlZmF1bHQg dGltZW91dCB2YWx1ZSBpbiB1cyAqLw0KPj4gKyNkZWZpbmUgQ0ROU1BfQ01EX1RJTUVPVVQJKDE1 ICogMTAwMCkNCj4+ICsNCj4+ICsvKiBVcCB0byAxNiBtcyB0byBoYWx0IGFuIGRldmljZSBjb250 cm9sbGVyICovDQo+PiArI2RlZmluZSBDRE5TUF9NQVhfSEFMVF9VU0VDCSgxNiAqIDEwMDApDQo+ PiArDQo+PiArI2RlZmluZSBDRE5TUF9DVFhfU0laRQkyMTEyDQo+PiArDQo+PiArLyoNCj4+ICsg KiBDb250cm9sbGVyIHJlZ2lzdGVyIGludGVyZmFjZS4NCj4+ICsgKi8NCj4+ICsNCj4+ICsvKioN Cj4+ICsgKiBzdHJ1Y3QgY2Ruc3BfY2FwX3JlZ3MgLSBDRE5TUCBSZWdpc3RlcnMuDQo+PiArICog QGhjX2NhcGJhc2U6CUxlbmd0aCBvZiB0aGUgY2FwYWJpbGl0aWVzIHJlZ2lzdGVyIGFuZCBjb250 cm9sbGVyDQo+PiArICogICAgICAgICAgICAgIHZlcnNpb24gbnVtYmVyDQo+PiArICogQGhjc19w YXJhbXMxOiBIQ1NQQVJBTVMxIC0gU3RydWN0dXJhbCBQYXJhbWV0ZXJzIDENCj4+ICsgKiBAaGNz X3BhcmFtczI6IEhDU1BBUkFNUzIgLSBTdHJ1Y3R1cmFsIFBhcmFtZXRlcnMgMg0KPj4gKyAqIEBo Y3NfcGFyYW1zMzogSENTUEFSQU1TMyAtIFN0cnVjdHVyYWwgUGFyYW1ldGVycyAzDQo+PiArICog QGhjY19wYXJhbXM6IEhDQ1BBUkFNUyAtIENhcGFiaWxpdHkgUGFyYW1ldGVycw0KPj4gKyAqIEBk Yl9vZmY6IERCT0ZGIC0gRG9vcmJlbGwgYXJyYXkgb2Zmc2V0DQo+PiArICogQHJ1bl9yZWdzX29m ZjogUlRTT0ZGIC0gUnVudGltZSByZWdpc3RlciBzcGFjZSBvZmZzZXQNCj4+ICsgKiBAaGNjX3Bh cmFtczI6IEhDQ1BBUkFNUzIgQ2FwYWJpbGl0eSBQYXJhbWV0ZXJzIDIsDQo+PiArICovDQo+PiAr c3RydWN0IGNkbnNwX2NhcF9yZWdzIHsNCj4+ICsJX19sZTMyIGhjX2NhcGJhc2U7DQo+PiArCV9f bGUzMiBoY3NfcGFyYW1zMTsNCj4+ICsJX19sZTMyIGhjc19wYXJhbXMyOw0KPj4gKwlfX2xlMzIg aGNzX3BhcmFtczM7DQo+PiArCV9fbGUzMiBoY2NfcGFyYW1zOw0KPj4gKwlfX2xlMzIgZGJfb2Zm Ow0KPj4gKwlfX2xlMzIgcnVuX3JlZ3Nfb2ZmOw0KPj4gKwlfX2xlMzIgaGNjX3BhcmFtczI7DQo+ PiArCS8qIFJlc2VydmVkIHVwIHRvIChDQVBMRU5HVEggLSAweDFDKSAqLw0KPj4gK307DQo+PiAr DQo+PiArLyogaGNfY2FwYmFzZSBiaXRtYXNrcy4gKi8NCj4+ICsvKiBiaXRzIDc6MCAtIGhvdyBs b25nIGlzIHRoZSBDYXBhYmlsaXRpZXMgcmVnaXN0ZXIuICovDQo+PiArI2RlZmluZSBIQ19MRU5H VEgocCkJCSgoKHApID4+IDAwKSAmIEdFTk1BU0soNywgMCkpDQo+PiArLyogYml0cyAzMToxNgkq Lw0KPj4gKyNkZWZpbmUgSENfVkVSU0lPTihwKQkJKCgocCkgPj4gMTYpICYgR0VOTUFTSygxNSwg MSkpDQo+PiArDQo+PiArLyogSENTUEFSQU1TMSAtIGhjc19wYXJhbXMxIC0gYml0bWFza3MgKi8N Cj4+ICsvKiBiaXRzIDA6NywgTWF4IERldmljZSBFbmRwb2ludHMgKi8NCj4+ICsjZGVmaW5lIEhD U19FTkRQT0lOVFNfTUFTSwlHRU5NQVNLKDcsIDApDQo+PiArI2RlZmluZSBIQ1NfRU5EUE9JTlRT KHApCSgoKHApICYgSENTX0VORFBPSU5UU19NQVNLKSA+PiAwKQ0KPj4gKw0KPj4gKy8qIEhDQ1BB UkFNUyBvZmZzZXQgZnJvbSBQQ0kgYmFzZSBhZGRyZXNzICovDQo+PiArI2RlZmluZSBIQ0NfUEFS QU1TX09GRlNFVAkweDEwDQo+PiArDQo+PiArLyogSENDUEFSQU1TIC0gaGNjX3BhcmFtcyAtIGJp dG1hc2tzICovDQo+PiArLyogdHJ1ZTogZGV2aWNlIGNvbnRyb2xsZXIgY2FuIHVzZSA2NC1iaXQg YWRkcmVzcyBwb2ludGVycy4gKi8NCj4+ICsjZGVmaW5lIEhDQ182NEJJVF9BRERSKHApCSgocCkg JiBCSVQoMCkpDQo+PiArLyogdHJ1ZTogZGV2aWNlIGNvbnRyb2xsZXIgdXNlcyA2NC1ieXRlIERl dmljZSBDb250ZXh0IHN0cnVjdHVyZXMuICovDQo+PiArI2RlZmluZSBIQ0NfNjRCWVRFX0NPTlRF WFQocCkJKChwKSAmIEJJVCgyKSkNCj4+ICsvKiBNYXggc2l6ZSBmb3IgUHJpbWFyeSBTdHJlYW0g QXJyYXlzIC0gMl4obisxKSwgd2hlcmUgbiBpcyBiaXRzIDEyOjE1LiAqLw0KPj4gKyNkZWZpbmUg SENDX01BWF9QU0EocCkJCSgoKChwKSA+PiAxMikgJiAweGYpICsgMSkNCj4+ICsvKiBFeHRlbmRl ZCBDYXBhYmlsaXRpZXMgcG9pbnRlciBmcm9tIFBDSSBiYXNlLiAqLw0KPj4gKyNkZWZpbmUgSEND X0VYVF9DQVBTKHApCQkoKChwKSAmIEdFTk1BU0soMzEsIDE2KSkgPj4gMTYpDQo+PiArDQo+PiAr I2RlZmluZSBDVFhfU0laRShfaGNjKQkJKEhDQ182NEJZVEVfQ09OVEVYVChfaGNjKSA/IDY0IDog MzIpDQo+PiArDQo+PiArLyogZGJfb2ZmIGJpdG1hc2sgLSBiaXRzIDA6MSByZXNlcnZlZC4gKi8N Cj4+ICsjZGVmaW5lIERCT0ZGX01BU0sJR0VOTUFTSygzMSwgMikNCj4+ICsNCj4+ICsvKiBydW5f cmVnc19vZmYgYml0bWFzayAtIGJpdHMgMDo0IHJlc2VydmVkLiAqLw0KPj4gKyNkZWZpbmUgUlRT T0ZGX01BU0sJR0VOTUFTSygzMSwgNSkNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBzdHJ1Y3QgY2Ru c3Bfb3BfcmVncyAtIERldmljZSBDb250cm9sbGVyIE9wZXJhdGlvbmFsIFJlZ2lzdGVycy4NCj4+ ICsgKiBAY29tbWFuZDogVVNCQ01EIC0gQ29udHJvbGxlciBjb21tYW5kIHJlZ2lzdGVyLg0KPj4g KyAqIEBzdGF0dXM6IFVTQlNUUyAtIENvbnRyb2xsZXIgc3RhdHVzIHJlZ2lzdGVyLg0KPj4gKyAq IEBwYWdlX3NpemU6IFRoaXMgaW5kaWNhdGVzIHRoZSBwYWdlIHNpemUgdGhhdCB0aGUgZGV2aWNl IGNvbnRyb2xsZXIgc3VwcG9ydHMuDQo+PiArICogICAgICAgICAgICAgSWYgYml0IG4gaXMgc2V0 LCB0aGUgY29udHJvbGxlciBzdXBwb3J0cyBhIHBhZ2Ugc2l6ZSBvZiAyXihuKzEyKSwNCj4+ICsg KiAgICAgICAgICAgICB1cCB0byBhIDEyOE1CIHBhZ2Ugc2l6ZS4gNEsgaXMgdGhlIG1pbmltdW0g cGFnZSBzaXplLg0KPj4gKyAqIEBkbmN0cmw6IEROQ1RSTCAtIERldmljZSBub3RpZmljYXRpb24g Y29udHJvbCByZWdpc3Rlci4NCj4+ICsgKiBAY21kX3Jpbmc6IENSUCAtIDY0LWJpdCBDb21tYW5k IFJpbmcgUG9pbnRlci4NCj4+ICsgKiBAZGNiYWFfcHRyOiBEQ0JBQVAgLSA2NC1iaXQgRGV2aWNl IENvbnRleHQgQmFzZSBBZGRyZXNzIEFycmF5IFBvaW50ZXIuDQo+PiArICogQGNvbmZpZ19yZWc6 CUNPTkZJRyAtIENvbmZpZ3VyZSBSZWdpc3Rlcg0KPj4gKyAqIEBwb3J0X3JlZ19iYXNlOiBQT1JU U0NuIC0gYmFzZSBhZGRyZXNzIGZvciBQb3J0IFN0YXR1cyBhbmQgQ29udHJvbA0KPj4gKyAqICAg ICAgICAgICAgICAgICBFYWNoIHBvcnQgaGFzIGEgUG9ydCBTdGF0dXMgYW5kIENvbnRyb2wgcmVn aXN0ZXIsDQo+PiArICogICAgICAgICAgICAgICAgIGZvbGxvd2VkIGJ5IGEgUG9ydCBQb3dlciBN YW5hZ2VtZW50IFN0YXR1cyBhbmQgQ29udHJvbA0KPj4gKyAqICAgICAgICAgICAgICAgICByZWdp c3RlciwgYSBQb3J0IExpbmsgSW5mbyByZWdpc3RlciwgYW5kIGEgcmVzZXJ2ZWQNCj4+ICsgKiAg ICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQo+PiArICovDQo+PiArc3RydWN0IGNkbnNwX29wX3Jl Z3Mgew0KPj4gKwlfX2xlMzIgY29tbWFuZDsNCj4+ICsJX19sZTMyIHN0YXR1czsNCj4+ICsJX19s ZTMyIHBhZ2Vfc2l6ZTsNCj4+ICsJX19sZTMyIHJlc2VydmVkMTsNCj4+ICsJX19sZTMyIHJlc2Vy dmVkMjsNCj4+ICsJX19sZTMyIGRuY3RybDsNCj4+ICsJX19sZTY0IGNtZF9yaW5nOw0KPj4gKwkv KiByc3ZkOiBvZmZzZXQgMHgyMC0yRi4gKi8NCj4+ICsJX19sZTMyIHJlc2VydmVkM1s0XTsNCj4+ ICsJX19sZTY0IGRjYmFhX3B0cjsNCj4+ICsJX19sZTMyIGNvbmZpZ19yZWc7DQo+PiArCS8qIHJz dmQ6IG9mZnNldCAweDNDLTNGRi4gKi8NCj4+ICsJX19sZTMyIHJlc2VydmVkNFsyNDFdOw0KPj4g KwkvKiBwb3J0IDEgcmVnaXN0ZXJzLCB3aGljaCBzZXJ2ZSBhcyBhIGJhc2UgYWRkcmVzcyBmb3Ig b3RoZXIgcG9ydHMuICovDQo+PiArCV9fbGUzMiBwb3J0X3JlZ19iYXNlOw0KPj4gK307DQo+PiAr DQo+PiArLyogTnVtYmVyIG9mIHJlZ2lzdGVycyBwZXIgcG9ydC4gKi8NCj4+ICsjZGVmaW5lIE5V TV9QT1JUX1JFR1MJNA0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBjZG5zcF9wb3J0X3Jl Z3MgLSBQb3J0IFJlZ2lzdGVycy4NCj4+ICsgKiBAcG9ydHNjOiBQT1JUU0MgLSBQb3J0IFN0YXR1 cyBhbmQgQ29udHJvbCBSZWdpc3Rlci4NCj4+ICsgKiBAcG9ydHBtc2M6IFBPUlRQTVNDIC0gUG9y dCBQb3dlciBNYW5hZ2VtZW50cyBTdGF0dXMgYW5kIENvbnRyb2wgUmVnaXN0ZXIuDQo+PiArICog QHBvcnRsaTogUE9SVExJIC0gUG9ydCBMaW5rIEluZm8gcmVnaXN0ZXIuDQo+PiArICovDQo+PiAr c3RydWN0IGNkbnNwX3BvcnRfcmVncyB7DQo+PiArCV9fbGUzMiBwb3J0c2M7DQo+PiArCV9fbGUz MiBwb3J0cG1zYzsNCj4+ICsJX19sZTMyIHBvcnRsaTsNCj4+ICsJX19sZTMyIHJlc2VydmVkOw0K Pj4gK307DQo+PiArDQo+PiArLyoNCj4+ICsgKiBUaGVzZSBiaXRzIGFyZSBSZWFkIE9ubHkgKFJP KSBhbmQgc2hvdWxkIGJlIHNhdmVkIGFuZCB3cml0dGVuIHRvIHRoZQ0KPj4gKyAqIHJlZ2lzdGVy czogMCAoY29ubmVjdCBzdGF0dXMpIGFuZCAgMTA6MTMgKHBvcnQgc3BlZWQpLg0KPj4gKyAqIFRo ZXNlIGJpdHMgYXJlIGFsc28gc3RpY2t5IC0gbWVhbmluZyB0aGV5J3JlIGluIHRoZSBBVVggd2Vs bCBhbmQgdGhleSBhcmVuJ3QNCj4+ICsgKiBjaGFuZ2VkIGJ5IGEgaG90IGFuZCB3YXJtLg0KPj4g KyAqLw0KPj4gKyNkZWZpbmUgQ0ROU1BfUE9SVF9STwkoUE9SVF9DT05ORUNUIHwgREVWX1NQRUVE X01BU0spDQo+PiArDQo+PiArLyoNCj4+ICsgKiBUaGVzZSBiaXRzIGFyZSBSVzsgd3JpdGluZyBh IDAgY2xlYXJzIHRoZSBiaXQsIHdyaXRpbmcgYSAxIHNldHMgdGhlIGJpdDoNCj4+ICsgKiBiaXRz IDU6OCAobGluayBzdGF0ZSksIDI1OjI2ICAoIndha2Ugb24iIGVuYWJsZSBzdGF0ZSkNCj4+ICsg Ki8NCj4+ICsjZGVmaW5lIENETlNQX1BPUlRfUldTCShQT1JUX1BMU19NQVNLIHwgUE9SVF9XS0NP Tk5fRSB8IFBPUlRfV0tESVNDX0UpDQo+PiArDQo+PiArLyoNCj4+ICsgKiBUaGVzZSBiaXRzIGFy ZSBSVzsgd3JpdGluZyBhIDEgY2xlYXJzIHRoZSBiaXQsIHdyaXRpbmcgYSAwIGhhcyBubyBlZmZl Y3Q6DQo+PiArICogYml0cyAxIChwb3J0IGVuYWJsZS9kaXNhYmxlKSwgMTcgICggY29ubmVjdCBj aGFuZ2VkKSwNCj4+ICsgKiAyMSAocG9ydCByZXNldCBjaGFuZ2VkKSAsIDIyIChQb3J0IExpbmsg U3RhdGUgQ2hhbmdlKSwNCj4+ICsgKi8NCj4+ICsjZGVmaW5lIENETlNQX1BPUlRfUlcxQ1MgKFBP UlRfUEVEIHwgUE9SVF9DU0MgfCBQT1JUX1JDIHwgUE9SVF9QTEMpDQo+PiArDQo+PiArLyogVVNC Q01EIC0gVVNCIGNvbW1hbmQgLSBiaXRtYXNrcy4gKi8NCj4+ICsvKiBSdW4vU3RvcCwgY29udHJv bGxlciBleGVjdXRpb24gLSBkbyBub3Qgd3JpdGUgdW5sZXNzIGNvbnRyb2xsZXIgaXMgaGFsdGVk LiovDQo+PiArI2RlZmluZSBDTURfUl9TCQlCSVQoMCkNCj4+ICsvKg0KPj4gKyAqIFJlc2V0IGRl dmljZSBjb250cm9sbGVyIC0gcmVzZXRzIGludGVybmFsIGNvbnRyb2xsZXIgc3RhdGUgbWFjaGlu ZSBhbmQgYWxsDQo+PiArICogcmVnaXN0ZXJzIChleGNlcHQgUENJIGNvbmZpZyByZWdzKS4NCj4+ ICsgKi8NCj4+ICsjZGVmaW5lIENNRF9SRVNFVAlCSVQoMSkNCj4+ICsvKiBFdmVudCBJbnRlcnJ1 cHQgRW5hYmxlIC0gYSAnMScgYWxsb3dzIGludGVycnVwdHMgZnJvbSB0aGUgY29udHJvbGxlci4g Ki8NCj4+ICsjZGVmaW5lIENNRF9JTlRFCUJJVCgyKQ0KPj4gKy8qDQo+PiArICogRGV2aWNlIFN5 c3RlbSBFcnJvciBJbnRlcnJ1cHQgRW5hYmxlIC0gZ2V0IG91dC1vZi1iYW5kIHNpZ25hbCBmb3IN Cj4+ICsgKiBjb250cm9sbGVyIGVycm9ycy4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIENNRF9EU0VJ RQlCSVQoMykNCj4+ICsvKiBkZXZpY2UgY29udHJvbGxlciBzYXZlL3Jlc3RvcmUgc3RhdGUuICov DQo+PiArI2RlZmluZSBDTURfQ1NTCQlCSVQoOCkNCj4+ICsjZGVmaW5lIENNRF9DUlMJCUJJVCg5 KQ0KPj4gKy8qDQo+PiArICogRW5hYmxlIFdyYXAgRXZlbnQgLSAnMScgbWVhbnMgZGV2aWNlIGNv bnRyb2xsZXIgZ2VuZXJhdGVzIGFuIGV2ZW50DQo+PiArICogd2hlbiBNRklOREVYIHdyYXBzLg0K Pj4gKyAqLw0KPj4gKyNkZWZpbmUgQ01EX0VXRQkJQklUKDEwKQ0KPj4gKy8qYml0IDEzIENFTSBF bmFibGUgKENNRSkgKi8NCj4+ICsjZGVmaW5lIENNRF9ERVZFTglCSVQoMTcpDQo+PiArLyogYml0 cyAxNjozMSBhcmUgcmVzZXJ2ZWQgKGFuZCBzaG91bGQgYmUgcHJlc2VydmVkIG9uIHdyaXRlcyku ICovDQo+PiArDQo+PiArLyogQ29tbWFuZCByZWdpc3RlciB2YWx1ZXMgdG8gZGlzYWJsZSBpbnRl cnJ1cHRzLiAqLw0KPj4gKyNkZWZpbmUgQ0ROU1BfSVJRUwkoQ01EX0lOVEUgfCBDTURfRFNFSUUg fCBDTURfRVdFKQ0KPj4gKw0KPj4gKy8qIFVTQlNUUyAtIFVTQiBzdGF0dXMgLSBiaXRtYXNrcyAq Lw0KPj4gKy8qIGNvbnRyb2xsZXIgbm90IHJ1bm5pbmcgLSBzZXQgdG8gMSB3aGVuIHJ1bi9zdG9w IGJpdCBpcyBjbGVhcmVkLiAqLw0KPj4gKyNkZWZpbmUgU1RTX0hBTFQJQklUKDApDQo+PiArLyoN Cj4+ICsgKiBzZXJpb3VzIGVycm9yLCBlLmcuIFBDSSBwYXJpdHkgZXJyb3IuIFRoZSBjb250cm9s bGVyIHdpbGwgY2xlYXINCj4+ICsgKiB0aGUgcnVuL3N0b3AgYml0Lg0KPj4gKyAqLw0KPj4gKyNk ZWZpbmUgU1RTX0ZBVEFMCUJJVCgyKQ0KPj4gKy8qIGV2ZW50IGludGVycnVwdCAtIGNsZWFyIHRo aXMgcHJpb3IgdG8gY2xlYXJpbmcgYW55IElQIGZsYWdzIGluIElSIHNldC4qLw0KPj4gKyNkZWZp bmUgU1RTX0VJTlQJQklUKDMpDQo+PiArLyogcG9ydCBjaGFuZ2UgZGV0ZWN0ICovDQo+PiArI2Rl ZmluZSBTVFNfUENECQlCSVQoNCkNCj4+ICsvKiBzYXZlIHN0YXRlIHN0YXR1cyAtICcxJyBtZWFu cyBkZXZpY2UgY29udHJvbGxlciBpcyBzYXZpbmcgc3RhdGUuICovDQo+PiArI2RlZmluZSBTVFNf U1NTCQlCSVQoOCkNCj4+ICsvKiByZXN0b3JlIHN0YXRlIHN0YXR1cyAtICcxJyBtZWFucyBjb250 cm9sbGVycyBpcyByZXN0b3Jpbmcgc3RhdGUuICovDQo+PiArI2RlZmluZSBTVFNfUlNTCQlCSVQo OSkNCj4+ICsvKiB0cnVlOiBzYXZlIG9yIHJlc3RvcmUgZXJyb3IgKi8NCj4+ICsjZGVmaW5lIFNU U19TUkUJCUJJVCgxMCkNCj4+ICsvKiB0cnVlOiBkZXZpY2UgTm90IFJlYWR5IHRvIGFjY2VwdCBk b29yYmVsbCBvciBvcCByZWcgd3JpdGVzIGFmdGVyIHJlc2V0LiAqLw0KPj4gKyNkZWZpbmUgU1RT X0NOUgkJQklUKDExKQ0KPj4gKy8qIHRydWU6IGludGVybmFsIERldmljZSBDb250cm9sbGVyIEVy cm9yLiovDQo+PiArI2RlZmluZSBTVFNfSENFCQlCSVQoMTIpDQo+PiArDQo+PiArLyogQ1JDUiAt IENvbW1hbmQgUmluZyBDb250cm9sIFJlZ2lzdGVyIC0gY21kX3JpbmcgYml0bWFza3MuICovDQo+ PiArLyogYml0IDAgaXMgdGhlIGNvbW1hbmQgcmluZyBjeWNsZSBzdGF0ZS4gKi8NCj4+ICsjZGVm aW5lIENNRF9SSU5HX0NTCQlCSVQoMCkNCj4+ICsvKiBzdG9wIHJpbmcgaW1tZWRpYXRlbHkgLSBh Ym9ydCB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBjb21tYW5kLiAqLw0KPj4gKyNkZWZpbmUgQ01E X1JJTkdfQUJPUlQJCUJJVCgyKQ0KPj4gKy8qDQo+PiArICogQ29tbWFuZCBSaW5nIEJ1c3kuDQo+ PiArICogU2V0IHdoZW4gRG9vcmJlbGwgcmVnaXN0ZXIgaXMgd3JpdHRlbiB3aXRoIERCIGZvciBj b21tYW5kIGFuZCBjbGVhcmVkIHdoZW4NCj4+ICsgKiB0aGUgY29udHJvbGxlciByZWFjaGVkIGVu ZCBvZiBDUi4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIENNRF9SSU5HX0JVU1kocCkJKChwKSAmIEJJ VCg0KSkNCj4+ICsvKiB0cnVlOiBjb21tYW5kIHJpbmcgaXMgcnVubmluZyAqLw0KPj4gKyNkZWZp bmUgQ01EX1JJTkdfUlVOTklORwlCSVQoMykNCj4+ICsvKiBDb21tYW5kIFJpbmcgcG9pbnRlciAt IGJpdCBtYXNrIGZvciB0aGUgbG93ZXIgMzIgYml0cy4gKi8NCj4+ICsjZGVmaW5lIENNRF9SSU5H X1JTVkRfQklUUwlHRU5NQVNLKDUsIDApDQo+PiArDQo+PiArLyogQ09ORklHIC0gQ29uZmlndXJl IFJlZ2lzdGVyIC0gY29uZmlnX3JlZyBiaXRtYXNrcy4gKi8NCj4+ICsvKiBiaXRzIDA6NyAtIG1h eGltdW0gbnVtYmVyIG9mIGRldmljZSBzbG90cyBlbmFibGVkLiAqLw0KPj4gKyNkZWZpbmUgTUFY X0RFVlMJCUdFTk1BU0soNywgMCkNCj4+ICsvKiBiaXQgODogVTMgRW50cnkgRW5hYmxlZCwgYXNz ZXJ0IFBMQyB3aGVuIGNvbnRyb2xsZXIgZW50ZXJzIFUzLiAqLw0KPj4gKyNkZWZpbmUgQ09ORklH X1UzRQkJQklUKDgpDQo+PiArDQo+PiArLyogUE9SVFNDIC0gUG9ydCBTdGF0dXMgYW5kIENvbnRy b2wgUmVnaXN0ZXIgLSBwb3J0X3JlZ19iYXNlIGJpdG1hc2tzICovDQo+PiArLyogdHJ1ZTogZGV2 aWNlIGNvbm5lY3RlZC4gKi8NCj4+ICsjZGVmaW5lIFBPUlRfQ09OTkVDVAkJQklUKDApDQo+PiAr LyogdHJ1ZTogcG9ydCBlbmFibGVkLiAqLw0KPj4gKyNkZWZpbmUgUE9SVF9QRUQJCUJJVCgxKQ0K Pj4gKy8qIHRydWU6IHBvcnQgcmVzZXQgc2lnbmFsaW5nIGFzc2VydGVkLiAqLw0KPj4gKyNkZWZp bmUgUE9SVF9SRVNFVAkJQklUKDQpDQo+PiArLyoNCj4+ICsgKiBQb3J0IExpbmsgU3RhdGUgLSBi aXRzIDU6OA0KPj4gKyAqIEEgcmVhZCBnaXZlcyB0aGUgY3VycmVudCBsaW5rIFBNIHN0YXRlIG9m IHRoZSBwb3J0LA0KPj4gKyAqIGEgd3JpdGUgd2l0aCBMaW5rIFN0YXRlIFdyaXRlIFN0cm9iZSBz ZXQgc2V0cyB0aGUgbGluayBzdGF0ZS4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFBPUlRfUExTX01B U0sJCUdFTk1BU0soOCwgNSkNCj4+ICsjZGVmaW5lIFhERVZfVTAJCQkoMHgwIDw8IDUpDQo+PiAr I2RlZmluZSBYREVWX1UxCQkJKDB4MSA8PCA1KQ0KPj4gKyNkZWZpbmUgWERFVl9VMgkJCSgweDIg PDwgNSkNCj4+ICsjZGVmaW5lIFhERVZfVTMJCQkoMHgzIDw8IDUpDQo+PiArI2RlZmluZSBYREVW X0RJU0FCTEVECQkoMHg0IDw8IDUpDQo+PiArI2RlZmluZSBYREVWX1JYREVURUNUCQkoMHg1IDw8 IDUpDQo+PiArI2RlZmluZSBYREVWX0lOQUNUSVZFCQkoMHg2IDw8IDUpDQo+PiArI2RlZmluZSBY REVWX1BPTExJTkcJCSgweDcgPDwgNSkNCj4+ICsjZGVmaW5lIFhERVZfUkVDT1ZFUlkJCSgweDgg PDwgNSkNCj4+ICsjZGVmaW5lIFhERVZfSE9UX1JFU0VUCQkoMHg5IDw8IDUpDQo+PiArI2RlZmlu ZSBYREVWX0NPTVBfTU9ERQkJKDB4YSA8PCA1KQ0KPj4gKyNkZWZpbmUgWERFVl9URVNUX01PREUJ CSgweGIgPDwgNSkNCj4+ICsjZGVmaW5lIFhERVZfUkVTVU1FCQkoMHhmIDw8IDUpDQo+PiArLyog dHJ1ZTogcG9ydCBoYXMgcG93ZXIuICovDQo+PiArI2RlZmluZSBQT1JUX1BPV0VSCQlCSVQoOSkN Cj4+ICsvKg0KPj4gKyAqIGJpdHMgMTA6MTMgaW5kaWNhdGUgZGV2aWNlIHNwZWVkOg0KPj4gKyAq IDAgLSB1bmRlZmluZWQgc3BlZWQgLSBwb3J0IGhhc24ndCBiZSBpbml0aWFsaXplZCBieSBhIHJl c2V0IHlldA0KPj4gKyAqIDEgLSBmdWxsIHNwZWVkDQo+PiArICogMiAtIFJlc2VydmVkIChMb3cg U3BlZWQgbm90IHN1cHBvcnRlZA0KPj4gKyAqIDMgLSBoaWdoIHNwZWVkDQo+PiArICogNCAtIHN1 cGVyIHNwZWVkDQo+PiArICogNSAtIHN1cGVyIHNwZWVkDQo+PiArICogNi0xNSByZXNlcnZlZA0K Pj4gKyAqLw0KPj4gKyNkZWZpbmUgREVWX1NQRUVEX01BU0sJCUdFTk1BU0soMTMsIDEwKQ0KPj4g KyNkZWZpbmUgWERFVl9GUwkJCSgweDEgPDwgMTApDQo+PiArI2RlZmluZSBYREVWX0hTCQkJKDB4 MyA8PCAxMCkNCj4+ICsjZGVmaW5lIFhERVZfU1MJCQkoMHg0IDw8IDEwKQ0KPj4gKyNkZWZpbmUg WERFVl9TU1AJCSgweDUgPDwgMTApDQo+PiArI2RlZmluZSBERVZfVU5ERUZTUEVFRChwKQkoKChw KSAmIERFVl9TUEVFRF9NQVNLKSA9PSAoMHgwIDw8IDEwKSkNCj4+ICsjZGVmaW5lIERFVl9GVUxM U1BFRUQocCkJKCgocCkgJiBERVZfU1BFRURfTUFTSykgPT0gWERFVl9GUykNCj4+ICsjZGVmaW5l IERFVl9ISUdIU1BFRUQocCkJKCgocCkgJiBERVZfU1BFRURfTUFTSykgPT0gWERFVl9IUykNCj4+ ICsjZGVmaW5lIERFVl9TVVBFUlNQRUVEKHApCSgoKHApICYgREVWX1NQRUVEX01BU0spID09IFhE RVZfU1MpDQo+PiArI2RlZmluZSBERVZfU1VQRVJTUEVFRFBMVVMocCkJKCgocCkgJiBERVZfU1BF RURfTUFTSykgPT0gWERFVl9TU1ApDQo+PiArI2RlZmluZSBERVZfU1VQRVJTUEVFRF9BTlkocCkJ KCgocCkgJiBERVZfU1BFRURfTUFTSykgPj0gWERFVl9TUykNCj4+ICsjZGVmaW5lIERFVl9QT1JU X1NQRUVEKHApCSgoKHApID4+IDEwKSAmIDB4MGYpDQo+PiArLyogUG9ydCBMaW5rIFN0YXRlIFdy aXRlIFN0cm9iZSAtIHNldCB0aGlzIHdoZW4gY2hhbmdpbmcgbGluayBzdGF0ZSAqLw0KPj4gKyNk ZWZpbmUgUE9SVF9MSU5LX1NUUk9CRQlCSVQoMTYpDQo+PiArLyogdHJ1ZTogY29ubmVjdCBzdGF0 dXMgY2hhbmdlICovDQo+PiArI2RlZmluZSBQT1JUX0NTQwkJQklUKDE3KQ0KPj4gKy8qIHRydWU6 IHdhcm0gcmVzZXQgZm9yIGEgVVNCIDMuMCBkZXZpY2UgaXMgZG9uZS4gKi8NCj4+ICsjZGVmaW5l IFBPUlRfV1JDCQlCSVQoMTkpDQo+PiArLyogdHJ1ZTogcmVzZXQgY2hhbmdlIC0gMSB0byAwIHRy YW5zaXRpb24gb2YgUE9SVF9SRVNFVCAqLw0KPj4gKyNkZWZpbmUgUE9SVF9SQwkJCUJJVCgyMSkN Cj4+ICsvKg0KPj4gKyAqIHBvcnQgbGluayBzdGF0dXMgY2hhbmdlIC0gc2V0IG9uIHNvbWUgcG9y dCBsaW5rIHN0YXRlIHRyYW5zaXRpb25zOg0KPj4gKyAqIFRyYW5zaXRpb24JCQlSZWFzb24NCj4+ ICsgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiArICogLSBVMyB0byBSZXN1bWUJCVdha2V1cCBz aWduYWxpbmcgZnJvbSBhIGRldmljZQ0KPj4gKyAqIC0gUmVzdW1lIHRvIFJlY292ZXJ5IHRvIFUw CVVTQiAzLjAgZGV2aWNlIHJlc3VtZQ0KPj4gKyAqIC0gUmVzdW1lIHRvIFUwCQlVU0IgMi4wIGRl dmljZSByZXN1bWUNCj4+ICsgKiAtIFUzIHRvIFJlY292ZXJ5IHRvIFUwCVNvZnR3YXJlIHJlc3Vt ZSBvZiBVU0IgMy4wIGRldmljZSBjb21wbGV0ZQ0KPj4gKyAqIC0gVTMgdG8gVTAJCQlTb2Z0d2Fy ZSByZXN1bWUgb2YgVVNCIDIuMCBkZXZpY2UgY29tcGxldGUNCj4+ICsgKiAtIFUyIHRvIFUwCQkJ TDEgcmVzdW1lIG9mIFVTQiAyLjEgZGV2aWNlIGNvbXBsZXRlDQo+PiArICogLSBVMCB0byBVMAkJ CUwxIGVudHJ5IHJlamVjdGlvbiBieSBVU0IgMi4xIGRldmljZQ0KPj4gKyAqIC0gVTAgdG8gZGlz YWJsZWQJCUwxIGVudHJ5IGVycm9yIHdpdGggVVNCIDIuMSBkZXZpY2UNCj4+ICsgKiAtIEFueSBz dGF0ZSB0byBpbmFjdGl2ZQlFcnJvciBvbiBVU0IgMy4wIHBvcnQNCj4+ICsgKi8NCj4+ICsjZGVm aW5lIFBPUlRfUExDCQlCSVQoMjIpDQo+PiArLyogUG9ydCBjb25maWd1cmUgZXJyb3IgY2hhbmdl IC0gcG9ydCBmYWlsZWQgdG8gY29uZmlndXJlIGl0cyBsaW5rIHBhcnRuZXIuICovDQo+PiArI2Rl ZmluZSBQT1JUX0NFQwkJQklUKDIzKQ0KPj4gKy8qIFdha2Ugb24gY29ubmVjdCAoZW5hYmxlKS4g Ki8NCj4+ICsjZGVmaW5lIFBPUlRfV0tDT05OX0UJCUJJVCgyNSkNCj4+ICsvKiBXYWtlIG9uIGRp c2Nvbm5lY3QgKGVuYWJsZSkuICovDQo+PiArI2RlZmluZSBQT1JUX1dLRElTQ19FCQlCSVQoMjYp DQo+PiArLyogSW5kaWNhdGVzIGlmIFdhcm0gUmVzZXQgaXMgYmVpbmcgcmVjZWl2ZWQuICovDQo+ PiArI2RlZmluZSBQT1JUX1dSCQkJQklUKDMxKQ0KPj4gKw0KPj4gKyNkZWZpbmUgUE9SVF9DSEFO R0VfQklUUyAoUE9SVF9DU0MgfCBQT1JUX1dSQyB8IFBPUlRfUkMgfCBQT1JUX1BMQyB8IFBPUlRf Q0VDKQ0KPj4gKw0KPj4gKy8qIFBPUlRQTVNDVVNCMyAtIFBvcnQgUG93ZXIgTWFuYWdlbWVudCBT dGF0dXMgYW5kIENvbnRyb2wgLSBiaXRtYXNrcy4gKi8NCj4+ICsvKiAgRW5hYmxlcyBVMSBlbnRy eS4gKi8NCj4+ICsjZGVmaW5lIFBPUlRfVTFfVElNRU9VVF9NQVNLCUdFTk1BU0soNywgMCkNCj4+ ICsjZGVmaW5lIFBPUlRfVTFfVElNRU9VVChwKQkoKHApICYgUE9SVF9VMV9USU1FT1VUX01BU0sp DQo+PiArLyogRW5hYmxlcyBVMiBlbnRyeSAuKi8NCj4+ICsjZGVmaW5lIFBPUlRfVTJfVElNRU9V VF9NQVNLCUdFTk1BU0soMTQsIDgpDQo+PiArI2RlZmluZSBQT1JUX1UyX1RJTUVPVVQocCkJKCgo cCkgPDwgOCkgJiBQT1JUX1UyX1RJTUVPVVRfTUFTSykNCj4+ICsNCj4+ICsvKiBQT1JUUE1TQ1VT QjIgLSBQb3J0IFBvd2VyIE1hbmFnZW1lbnQgU3RhdHVzIGFuZCBDb250cm9sIC0gYml0bWFza3Mu ICovDQo+PiArI2RlZmluZSBQT1JUX0wxU19NQVNLCQlHRU5NQVNLKDIsIDApDQo+PiArI2RlZmlu ZSBQT1JUX0wxUyhwKQkJKChwKSAmIEdFTk1BU0soMiwgMCkpDQo+PiArI2RlZmluZSBQT1JUX0wx U19BQ0sJCVBPUlRfTDFTKDEpDQo+PiArI2RlZmluZSBQT1JUX0wxU19OWUVUCQlQT1JUX0wxUygy KQ0KPj4gKyNkZWZpbmUgUE9SVF9MMVNfU1RBTEwJCVBPUlRfTDFTKDMpDQo+PiArI2RlZmluZSBQ T1JUX0wxU19USU1FT1VUCVBPUlRfTDFTKDQpDQo+PiArLyogUmVtb3RlIFdha2UgRW5hYmxlLiAq Lw0KPj4gKyNkZWZpbmUgUE9SVF9SV0UJCUJJVCgzKQ0KPj4gKy8qIEJlc3QgRWZmb3J0IFNlcnZp Y2UgTGF0ZW5jeSAoQkVTTCkuICovDQo+PiArI2RlZmluZSBQT1JUX0JFU0wocCkJCSgoKHApIDw8 IDQpICYgR0VOTUFTSyg3LCA0KSkNCj4+ICsvKiBIYXJkd2FyZSBMUE0gRW5hYmxlIChITEUpLiAq Lw0KPj4gKyNkZWZpbmUgUE9SVF9ITEUJCUJJVCgxNikNCj4+ICsvKiBSZWNlaXZlZCBCZXN0IEVm Zm9ydCBTZXJ2aWNlIExhdGVuY3kgKEJFU0wpLiAqLw0KPj4gKyNkZWZpbmUgUE9SVF9SUkJFU0wo cCkJCSgoKHApICYgR0VOTUFTSygyMCwgMTcpKSA+PiAxNykNCj4+ICsvKiBQb3J0IFRlc3QgQ29u dHJvbC4gKi8NCj4+ICsjZGVmaW5lIFBPUlRfVEVTVF9NT0RFX01BU0sJR0VOTUFTSygzMSwgMjgp DQo+PiArI2RlZmluZSBQT1JUX1RFU1RfTU9ERShwKQkoKChwKSA8PCAyOCkgJiBHRU5NQVNLKDMx LCAyOCkpDQo+PiArDQo+PiArLyoqDQo+PiArICogc3RydWN0IGNkbnNwX2ludHJfcmVnIC0gSW50 ZXJydXB0IFJlZ2lzdGVyIFNldC4NCj4+ICsgKiBAaXJxX3BlbmRpbmc6IElNQU4gLSBJbnRlcnJ1 cHQgTWFuYWdlbWVudCBSZWdpc3Rlci4gVXNlZCB0byBlbmFibGUNCj4+ICsgKiAgICAgICAgICAg ICAgIGludGVycnVwdHMgYW5kIGNoZWNrIGZvciBwZW5kaW5nIGludGVycnVwdHMuDQo+PiArICog QGlycV9jb250cm9sOiBJTU9EIC0gSW50ZXJydXB0IE1vZGVyYXRpb24gUmVnaXN0ZXIuDQo+PiAr ICogICAgICAgICAgICAgICBVc2VkIHRvIHRocm90dGxlIGludGVycnVwdHMuDQo+PiArICogQGVy c3Rfc2l6ZTogTnVtYmVyIG9mIHNlZ21lbnRzIGluIHRoZSBFdmVudCBSaW5nIFNlZ21lbnQgVGFi bGUgKEVSU1QpLg0KPj4gKyAqIEBlcnN0X2Jhc2U6IEVSU1QgYmFzZSBhZGRyZXNzLg0KPj4gKyAq IEBlcnN0X2RlcXVldWU6IEV2ZW50IHJpbmcgZGVxdWV1ZSBwb2ludGVyLg0KPj4gKyAqDQo+PiAr ICogRWFjaCBpbnRlcnJ1cHRlciAoZGVmaW5lZCBieSBhIE1TSS1YIHZlY3RvcikgaGFzIGFuIGV2 ZW50IHJpbmcgYW5kIGFuIEV2ZW50DQo+PiArICogUmluZyBTZWdtZW50IFRhYmxlIChFUlNUKSBh c3NvY2lhdGVkIHdpdGggaXQuIFRoZSBldmVudCByaW5nIGlzIGNvbXByaXNlZCBvZg0KPj4gKyAq IG11bHRpcGxlIHNlZ21lbnRzIG9mIHRoZSBzYW1lIHNpemUuIFRoZSBjb250cm9sbGVyIHBsYWNl cyBldmVudHMgb24gdGhlIHJpbmcNCj4+ICsgKiBhbmQgInVwZGF0ZXMgdGhlIEN5Y2xlIGJpdCBp biB0aGUgVFJCcyB0byBpbmRpY2F0ZSB0byBzb2Z0d2FyZSB0aGUgY3VycmVudA0KPj4gKyAqIHBv c2l0aW9uIG9mIHRoZSBFbnF1ZXVlIFBvaW50ZXIuIiBUaGUgZHJpdmVyIHByb2Nlc3NlcyB0aG9z ZSBldmVudHMgYW5kDQo+PiArICogdXBkYXRlcyB0aGUgZGVxdWV1ZSBwb2ludGVyLg0KPj4gKyAq Lw0KPj4gK3N0cnVjdCBjZG5zcF9pbnRyX3JlZyB7DQo+PiArCV9fbGUzMiBpcnFfcGVuZGluZzsN Cj4+ICsJX19sZTMyIGlycV9jb250cm9sOw0KPj4gKwlfX2xlMzIgZXJzdF9zaXplOw0KPj4gKwlf X2xlMzIgcnN2ZDsNCj4+ICsJX19sZTY0IGVyc3RfYmFzZTsNCj4+ICsJX19sZTY0IGVyc3RfZGVx dWV1ZTsNCj4+ICt9Ow0KPj4gKw0KPj4gKy8qIElNQU4gLSBJbnRlcnJ1cHQgTWFuYWdlbWVudCBS ZWdpc3RlciAtIGlycV9wZW5kaW5nIGJpdG1hc2tzIGwuICovDQo+PiArI2RlZmluZSBJTUFOX0lF CQkJQklUKDEpDQo+PiArI2RlZmluZSBJTUFOX0lQCQkJQklUKDApDQo+PiArLyogYml0cyAyOjMx IG5lZWQgdG8gYmUgcHJlc2VydmVkICovDQo+PiArI2RlZmluZSBJTUFOX0lFX1NFVChwKQkJKCgo cCkgJiBJTUFOX0lFKSB8IDB4MikNCj4+ICsjZGVmaW5lIElNQU5fSUVfQ0xFQVIocCkJKCgocCkg JiBJTUFOX0lFKSAmIH4oMHgyKSkNCj4+ICsNCj4+ICsvKiBJTU9EIC0gSW50ZXJydXB0ZXIgTW9k ZXJhdGlvbiBSZWdpc3RlciAtIGlycV9jb250cm9sIGJpdG1hc2tzLiAqLw0KPj4gKy8qDQo+PiAr ICogTWluaW11bSBpbnRlcnZhbCBiZXR3ZWVuIGludGVycnVwdHMgKGluIDI1MG5zIGludGVydmFs cykuIFRoZSBpbnRlcnZhbA0KPj4gKyAqIGJldHdlZW4gaW50ZXJydXB0cyB3aWxsIGJlIGxvbmdl ciBpZiB0aGVyZSBhcmUgbm8gZXZlbnRzIG9uIHRoZSBldmVudCByaW5nLg0KPj4gKyAqIERlZmF1 bHQgaXMgNDAwMCAoMSBtcykuDQo+PiArICovDQo+PiArI2RlZmluZSBJTU9EX0lOVEVSVkFMX01B U0sJR0VOTUFTSygxNSwgMCkNCj4+ICsvKiBDb3VudGVyIHVzZWQgdG8gY291bnQgZG93biB0aGUg dGltZSB0byB0aGUgbmV4dCBpbnRlcnJ1cHQgLSBIVyB1c2Ugb25seSAqLw0KPj4gKyNkZWZpbmUg SU1PRF9DT1VOVEVSX01BU0sJR0VOTUFTSygzMSwgMTYpDQo+PiArI2RlZmluZSBJTU9EX0RFRkFV TFRfSU5URVJWQUwJMA0KPj4gKw0KPj4gKy8qIGVyc3Rfc2l6ZSBiaXRtYXNrcy4gKi8NCj4+ICsv KiBQcmVzZXJ2ZSBiaXRzIDE2OjMxIG9mIGVyc3Rfc2l6ZS4gKi8NCj4+ICsjZGVmaW5lIEVSU1Rf U0laRV9NQVNLCQlHRU5NQVNLKDMxLCAxNikNCj4+ICsNCj4+ICsvKiBlcnN0X2RlcXVldWUgYml0 bWFza3MuICovDQo+PiArLyoNCj4+ICsgKiBEZXF1ZXVlIEVSU1QgU2VnbWVudCBJbmRleCAoREVT SSkgLSBTZWdtZW50IG51bWJlciAob3IgYWxpYXMpDQo+PiArICogd2hlcmUgdGhlIGN1cnJlbnQg ZGVxdWV1ZSBwb2ludGVyIGxpZXMuIFRoaXMgaXMgYW4gb3B0aW9uYWwgSFcgaGludC4NCj4+ICsg Ki8NCj4+ICsjZGVmaW5lIEVSU1RfREVTSV9NQVNLCQlHRU5NQVNLKDIsIDApDQo+PiArLyogRXZl bnQgSGFuZGxlciBCdXN5IChFSEIpIC0gaXMgdGhlIGV2ZW50IHJpbmcgc2NoZWR1bGVkIHRvIGJl IHNlcnZpY2VkLiAqLw0KPj4gKyNkZWZpbmUgRVJTVF9FSEIJCUJJVCgzKQ0KPj4gKyNkZWZpbmUg RVJTVF9QVFJfTUFTSwkJR0VOTUFTSygzLCAwKQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVj dCBjZG5zcF9ydW5fcmVncw0KPj4gKyAqIEBtaWNyb2ZyYW1lX2luZGV4OiBNRklOREVYIC0gY3Vy cmVudCBtaWNyb2ZyYW1lIG51bWJlci4NCj4+ICsgKiBAaXJfc2V0OiBBcnJheSBvZiBJbnRlcnJ1 cHRlciByZWdpc3RlcnMuDQo+PiArICoNCj4+ICsgKiBEZXZpY2UgQ29udHJvbGxlciBSdW50aW1l IFJlZ2lzdGVyczoNCj4+ICsgKiAiU29mdHdhcmUgc2hvdWxkIHJlYWQgYW5kIHdyaXRlIHRoZXNl IHJlZ2lzdGVycyB1c2luZyBvbmx5IER3b3JkICgzMiBiaXQpDQo+PiArICogb3IgbGFyZ2VyIGFj Y2Vzc2VzIg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBjZG5zcF9ydW5fcmVncyB7DQo+PiArCV9fbGUz MiBtaWNyb2ZyYW1lX2luZGV4Ow0KPj4gKwlfX2xlMzIgcnN2ZFs3XTsNCj4+ICsJc3RydWN0IGNk bnNwX2ludHJfcmVnIGlyX3NldFsxMjhdOw0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+PiArICog VVNCMi4wIFBvcnQgUGVyaXBoZXJhbCBDb25maWd1cmF0aW9uIFJlZ2lzdGVycy4NCj4+ICsgKiBA ZXh0X2NhcDogSGVhZGVyIHJlZ2lzdGVyIGZvciBFeHRlbmRlZCBDYXBhYmlsaXR5Lg0KPj4gKyAq IEBwb3J0X3JlZzE6IFRpbWVyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIuDQo+PiArICogQHBvcnRf cmVnMjogVGltZXIgQ29uZmlndXJhdGlvbiBSZWdpc3Rlci4NCj4+ICsgKiBAcG9ydF9yZWczOiBU aW1lciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyLg0KPj4gKyAqIEBwb3J0X3JlZzQ6IFRpbWVyIENv bmZpZ3VyYXRpb24gUmVnaXN0ZXIuDQo+PiArICogQHBvcnRfcmVnNTogVGltZXIgQ29uZmlndXJh dGlvbiBSZWdpc3Rlci4NCj4+ICsgKiBAcG9ydF9yZWc2OiBDaGlja2VuIGJpdHMgZm9yIFVTQjIw UFBQLg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBjZG5zcF8yMHBvcnRfY2FwIHsNCj4+ICsJX19sZTMy IGV4dF9jYXA7DQo+PiArCV9fbGUzMiBwb3J0X3JlZzE7DQo+PiArCV9fbGUzMiBwb3J0X3JlZzI7 DQo+PiArCV9fbGUzMiBwb3J0X3JlZzM7DQo+PiArCV9fbGUzMiBwb3J0X3JlZzQ7DQo+PiArCV9f bGUzMiBwb3J0X3JlZzU7DQo+PiArCV9fbGUzMiBwb3J0X3JlZzY7DQo+PiArfTsNCj4+ICsNCj4+ ICsvKiBFeHRlbmRlZCBjYXBhYmlsaXR5IHJlZ2lzdGVyIGZpZWxkcyAqLw0KPj4gKyNkZWZpbmUg RVhUX0NBUFNfSUQocCkJCQkoKChwKSA+PiAwKSAmIEdFTk1BU0soNywgMCkpDQo+PiArI2RlZmlu ZSBFWFRfQ0FQU19ORVhUKHApCQkoKChwKSA+PiA4KSAmIEdFTk1BU0soNywgMCkpDQo+PiArLyog RXh0ZW5kZWQgY2FwYWJpbGl0eSBJRHMgLSBJRCAwIHJlc2VydmVkICovDQo+PiArI2RlZmluZSBF WFRfQ0FQU19QUk9UT0NPTAkJMg0KPj4gKw0KPj4gKy8qIFVTQiAyLjAgUG9ydCBQZXJpcGhlcmFs IENvbmZpZ3VyYXRpb24gRXh0ZW5kZWQgQ2FwYWJpbGl0eSAqLw0KPj4gKyNkZWZpbmUgRVhUX0NB UF9DRkdfREVWXzIwUE9SVF9DQVBfSUQJMHhDMQ0KPj4gKy8qDQo+PiArICogU2V0dGluZyB0aGlz IGJpdCB0byAnMScgZW5hYmxlcyBhdXRvbWF0aWMgd2FrZXVwIGZyb20gTDEgc3RhdGUgb24gdHJh bnNmZXINCj4+ICsgKiBUUkIgcHJlcGFyZWQgd2hlbiBVU0JTU1Agb3BlcmF0ZXMgaW4gVVNCMi4w IG1vZGUuDQo+PiArICovDQo+PiArI2RlZmluZSBQT1JUX1JFRzZfTDFfTDBfSFdfRU4JCUJJVCgx KQ0KPj4gKy8qDQo+PiArICogU2V0dGluZyB0aGlzIGJpdCB0byAnMScgZm9yY2VzIEZ1bGwgU3Bl ZWQgd2hlbiBVU0JTU1Agb3BlcmF0ZXMgaW4gVVNCMi4wDQo+PiArICogbW9kZSAoZGlzYWJsZXMg SGlnaCBTcGVlZCkuDQo+PiArICovDQo+PiArI2RlZmluZSBQT1JUX1JFRzZfRk9SQ0VfRlMJCUJJ VCgwKQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIFVTQjMueCBQb3J0IFBlcmlwaGVyYWwgQ29uZmln dXJhdGlvbiBSZWdpc3RlcnMuDQo+PiArICogQGV4dF9jYXA6IEhlYWRlciByZWdpc3RlciBmb3Ig RXh0ZW5kZWQgQ2FwYWJpbGl0eS4NCj4+ICsgKiBAbW9kZV9hZGRyOiBNaXNjZWxsYW5lb3VzIDN4 UE9SVCBvcGVyYXRpb24gbW9kZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyLg0KPj4gKyAqLw0KPj4g K3N0cnVjdCBjZG5zcF8zeHBvcnRfY2FwIHsNCj4+ICsJX19sZTMyIGV4dF9jYXA7DQo+PiArCV9f bGUzMiBtb2RlX2FkZHI7DQo+PiArfTsNCj4+ICsNCj4+ICsvKiBFeHRlbmRlZCBDYXBhYmlsaXR5 IEhlYWRlciBmb3IgM1hQb3J0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzLiAqLw0KPj4gKyNkZWZp bmUgRF9YRUNfQ0ZHXzNYUE9SVF9DQVAJCTB4QzANCj4+ICsjZGVmaW5lIENGR18zWFBPUlRfU1NQ X1NVUFBPUlQJCUJJVCgzMSkNCj4+ICsNCj4+ICsvKiBSZXZpc2lvbiBFeHRlbmRlZCBDYXBhYmls aXR5IElEICovDQo+PiArI2RlZmluZSBSVExfUkVWX0NBUAkJCTB4QzQNCj4+ICsjZGVmaW5lIFJU TF9SRVZfQ0FQX1JYX0JVRkZfQ01EX1NJWkUJQklUTUFTSygzMSwgMjQpDQo+PiArI2RlZmluZSBS VExfUkVWX0NBUF9SWF9CVUZGX1NJWkUJQklUTUFTSygxNSwgMCkNCj4+ICsjZGVmaW5lIFJUTF9S RVZfQ0FQX1RYX0JVRkZfQ01EX1NJWkUJQklUTUFTSygzMSwgMjQpDQo+PiArI2RlZmluZSBSVExf UkVWX0NBUF9UWF9CVUZGX1NJWkUJQklUTUFTSygxNSwgMCkNCj4+ICsNCj4+ICsjZGVmaW5lIENE TlNQX1ZFUl8xIDB4MDAwMDAwMDANCj4+ICsjZGVmaW5lIENETlNQX1ZFUl8yIDB4MTAwMDAwMDAN Cj4+ICsNCj4+ICsjZGVmaW5lIENETlNQX0lGX0VQX0VYSVNUKHBkZXYsIGVwX251bSwgZGlyKSAo KHBkZXYpLT5yZXZfY2FwLmVwX3N1cHBvcnRlZCAmIFwNCj4+ICsJCQkgIChCSVQoZXBfbnVtKSA8 PCAoZGlyID8gMCA6IDE2KSkpDQo+PiArDQo+PiArLyoqDQo+PiArICogc3RydWN0IGNkbnNwX3Jl dl9jYXAgLSBjb250cm9sbGVyIGNhcGFiaWxpdGllcyAuDQo+PiArICogQGV4dF9jYXA6IEhlYWRl ciBmb3IgUlRMIFJldmlzaW9uIEV4dGVuZGVkIENhcGFiaWxpdHkuDQo+PiArICogQHJ0bF9yZXZp c2lvbjogUlRMIHJldmlzaW9uLg0KPj4gKyAqIEByeF9idWZmX3NpemU6IFJ4IGJ1ZmZlciBzaXpl cy4NCj4+ICsgKiBAdHhfYnVmZl9zaXplOiBUeCBidWZmZXIgc2l6ZXMuDQo+PiArICogQGVwX3N1 cHBvcnRlZDogU3VwcG9ydGVkIGVuZHBvaW50cy4NCj4+ICsgKiBAY3RybF9yZXZpc2lvbjogQ29u dHJvbGxlciByZXZpc2lvbiBJRC4NCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY2Ruc3BfcmV2X2NhcCB7 DQo+PiArCV9fbGUzMiBleHRfY2FwOw0KPj4gKwlfX2xlMzIgcnRsX3JldmlzaW9uOw0KPj4gKwlf X2xlMzIgcnhfYnVmZl9zaXplOw0KPj4gKwlfX2xlMzIgdHhfYnVmZl9zaXplOw0KPj4gKwlfX2xl MzIgZXBfc3VwcG9ydGVkOw0KPj4gKwlfX2xlMzIgY3RybF9yZXZpc2lvbjsNCj4+ICt9Ow0KPj4g Kw0KPj4gKy8qIFVTQjIuMCBQb3J0IFBlcmlwaGVyYWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMu ICovDQo+PiArI2RlZmluZSBEX1hFQ19QUkVfUkVHU19DQVAJCTB4QzgNCj4+ICsjZGVmaW5lIFJF R19DSElDS0VOX0JJVFNfMl9PRkZTRVQJMHg0OA0KPj4gKyNkZWZpbmUgQ0hJQ0tFTl9YRE1BXzJf VFBfQ0FDSEVfRElTCUJJVCgyOCkNCj4+ICsNCj4+ICsvKiBYQlVGIEV4dGVuZGVkIENhcGFiaWxp dHkgSUQuICovDQo+PiArI2RlZmluZSBYQlVGX0NBUF9JRAkJCTB4Q0INCj4+ICsjZGVmaW5lIFhC VUZfUlhfVEFHX01BU0tfMF9PRkZTRVQJMHgxQw0KPj4gKyNkZWZpbmUgWEJVRl9SWF9UQUdfTUFT S18xX09GRlNFVAkweDI0DQo+PiArI2RlZmluZSBYQlVGX1RYX0NNRF9PRkZTRVQJCTB4MkMNCj4+ ICsNCj4+ICsvKioNCj4+ICsgKiBzdHJ1Y3QgY2Ruc3BfZG9vcmJlbGxfYXJyYXkuDQo+PiArICog QGNtZF9kYjogQ29tbWFuZCByaW5nIGRvb3JiZWxsIHJlZ2lzdGVyLg0KPj4gKyAqIEBlcF9kYjog RW5kcG9pbnQgcmluZyBkb29yYmVsbCByZWdpc3Rlci4NCj4+ICsgKiAgICAgICAgIEJpdHMgMCAt IDc6IEVuZHBvaW50IHRhcmdldC4NCj4+ICsgKiAgICAgICAgIEJpdHMgOCAtIDE1OiBSc3ZkWi4N Cj4+ICsgKiAgICAgICAgIEJpdHMgMTYgLSAzMTogU3RyZWFtIElELg0KPj4gKyAqLw0KPj4gK3N0 cnVjdCBjZG5zcF9kb29yYmVsbF9hcnJheSB7DQo+PiArCV9fbGUzMiBjbWRfZGI7DQo+PiArCV9f bGUzMiBlcF9kYjsNCj4+ICt9Ow0KPj4gKw0KPj4gKyNkZWZpbmUgREJfVkFMVUUoZXAsIHN0cmVh bSkJCSgoKChlcCkgKyAxKSAmIDB4ZmYpIHwgKChzdHJlYW0pIDw8IDE2KSkNCj4+ICsjZGVmaW5l IERCX1ZBTFVFX0VQMF9PVVQoZXAsIHN0cmVhbSkJKChlcCkgJiAweGZmKQ0KPj4gKyNkZWZpbmUg REJfVkFMVUVfQ01ECQkJMHgwMDAwMDAwMA0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBj ZG5zcF9jb250YWluZXJfY3R4Lg0KPj4gKyAqIEB0eXBlOiBUeXBlIG9mIGNvbnRleHQuIFVzZWQg dG8gY2FsY3VsYXRlZCBvZmZzZXRzIHRvIGNvbnRhaW5lZCBjb250ZXh0cy4NCj4+ICsgKiBAc2l6 ZTogU2l6ZSBvZiB0aGUgY29udGV4dCBkYXRhLg0KPj4gKyAqIEBjdHhfc2l6ZTogY29udGV4dCBk YXRhIHN0cnVjdHVyZSBzaXplIC0gNjQgb3IgMzIgYml0cy4NCj4+ICsgKiBAZG1hOiBkbWEgYWRk cmVzcyBvZiB0aGUgYnl0ZXMuDQo+PiArICogQGJ5dGVzOiBUaGUgcmF3IGNvbnRleHQgZGF0YSBn aXZlbiB0byBIVy4NCj4+ICsgKg0KPj4gKyAqIFJlcHJlc2VudHMgZWl0aGVyIGEgRGV2aWNlIG9y IElucHV0IGNvbnRleHQuIEhvbGRzIGEgcG9pbnRlciB0byB0aGUgcmF3DQo+PiArICogbWVtb3J5 IHVzZWQgZm9yIHRoZSBjb250ZXh0IChieXRlcykgYW5kIGRtYSBhZGRyZXNzIG9mIGl0IChkbWEp Lg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBjZG5zcF9jb250YWluZXJfY3R4IHsNCj4+ICsJdW5zaWdu ZWQgaW50IHR5cGU7DQo+PiArI2RlZmluZSBDRE5TUF9DVFhfVFlQRV9ERVZJQ0UJMHgxDQo+PiAr I2RlZmluZSBDRE5TUF9DVFhfVFlQRV9JTlBVVAkweDINCj4+ICsJaW50IHNpemU7DQo+PiArCWlu dCBjdHhfc2l6ZTsNCj4+ICsJZG1hX2FkZHJfdCBkbWE7DQo+PiArCXU4ICpieXRlczsNCj4+ICt9 Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBjZG5zcF9zbG90X2N0eA0KPj4gKyAqIEBk ZXZfaW5mbzogRGV2aWNlIHNwZWVkLCBhbmQgbGFzdCB2YWxpZCBlbmRwb2ludC4NCj4+ICsgKiBA ZGV2X3BvcnQ6IERldmljZSBwb3J0IG51bWJlciB0aGF0IGlzIG5lZWRlZCB0byBhY2Nlc3MgdGhl IFVTQiBkZXZpY2UuDQo+PiArICogQGludF90YXJnZXQ6IEludGVycnVwdGVyIHRhcmdldCBudW1i ZXIuDQo+PiArICogQGRldl9zdGF0ZTogU2xvdCBzdGF0ZSBhbmQgZGV2aWNlIGFkZHJlc3MuDQo+ PiArICoNCj4+ICsgKiBTbG90IENvbnRleHQgLSBUaGlzIGFzc3VtZXMgdGhlIGNvbnRyb2xsZXIg dXNlcyAzMi1ieXRlIGNvbnRleHQNCj4+ICsgKiBzdHJ1Y3R1cmVzLiBJZiB0aGUgY29udHJvbGxl ciB1c2VzIDY0LWJ5dGUgY29udGV4dHMsIHRoZXJlIGlzIGFuIGFkZGl0aW9uYWwNCj4+ICsgKiAz MiBieXRlcyByZXNlcnZlZCBhdCB0aGUgZW5kIG9mIHRoZSBzbG90IGNvbnRleHQgZm9yIGNvbnRy b2xsZXIgaW50ZXJuYWwgdXNlLg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBjZG5zcF9zbG90X2N0eCB7 DQo+PiArCV9fbGUzMiBkZXZfaW5mbzsNCj4+ICsJX19sZTMyIGRldl9wb3J0Ow0KPj4gKwlfX2xl MzIgaW50X3RhcmdldDsNCj4+ICsJX19sZTMyIGRldl9zdGF0ZTsNCj4+ICsJLyogb2Zmc2V0IDB4 MTAgdG8gMHgxZiByZXNlcnZlZCBmb3IgY29udHJvbGxlciBpbnRlcm5hbCB1c2UuICovDQo+PiAr CV9fbGUzMiByZXNlcnZlZFs0XTsNCj4+ICt9Ow0KPj4gKw0KPj4gKy8qIEJpdHMgMjA6MjMgaW4g dGhlIFNsb3QgQ29udGV4dCBhcmUgdGhlIHNwZWVkIGZvciB0aGUgZGV2aWNlLiAqLw0KPj4gKyNk ZWZpbmUgU0xPVF9TUEVFRF9GUwkJKFhERVZfRlMgPDwgMTApDQo+PiArI2RlZmluZSBTTE9UX1NQ RUVEX0hTCQkoWERFVl9IUyA8PCAxMCkNCj4+ICsjZGVmaW5lIFNMT1RfU1BFRURfU1MJCShYREVW X1NTIDw8IDEwKQ0KPj4gKyNkZWZpbmUgU0xPVF9TUEVFRF9TU1AJCShYREVWX1NTUCA8PCAxMCkN Cj4+ICsNCj4+ICsvKiBkZXZfaW5mbyBiaXRtYXNrcy4gKi8NCj4+ICsvKiBEZXZpY2Ugc3BlZWQg LSB2YWx1ZXMgZGVmaW5lZCBieSBQT1JUU0MgRGV2aWNlIFNwZWVkIGZpZWxkIC0gMjA6MjMuICov DQo+PiArI2RlZmluZSBERVZfU1BFRUQJCUdFTk1BU0soMjMsIDIwKQ0KPj4gKyNkZWZpbmUgR0VU X0RFVl9TUEVFRChuKQkoKChuKSAmIERFVl9TUEVFRCkgPj4gMjApDQo+PiArLyogSW5kZXggb2Yg dGhlIGxhc3QgdmFsaWQgZW5kcG9pbnQgY29udGV4dCBpbiB0aGlzIGRldmljZSBjb250ZXh0IC0g Mjc6MzEuICovDQo+PiArI2RlZmluZSBMQVNUX0NUWF9NQVNLCQlHRU5NQVNLKDMxLCAyNykNCj4+ ICsjZGVmaW5lIExBU1RfQ1RYKHApCQkoKHApIDw8IDI3KQ0KPj4gKyNkZWZpbmUgTEFTVF9DVFhf VE9fRVBfTlVNKHApCSgoKHApID4+IDI3KSAtIDEpDQo+PiArI2RlZmluZSBTTE9UX0ZMQUcJCUJJ VCgwKQ0KPj4gKyNkZWZpbmUgRVAwX0ZMQUcJCUJJVCgxKQ0KPj4gKw0KPj4gKy8qIGRldl9wb3J0 IGJpdG1hc2tzICovDQo+PiArLyogRGV2aWNlIHBvcnQgbnVtYmVyIHRoYXQgaXMgbmVlZGVkIHRv IGFjY2VzcyB0aGUgVVNCIGRldmljZS4gKi8NCj4+ICsjZGVmaW5lIERFVl9QT1JUKHApCQkoKChw KSAmIDB4ZmYpIDw8IDE2KQ0KPj4gKw0KPj4gKy8qIGRldl9zdGF0ZSBiaXRtYXNrcyAqLw0KPj4g Ky8qIFVTQiBkZXZpY2UgYWRkcmVzcyAtIGFzc2lnbmVkIGJ5IHRoZSBjb250cm9sbGVyLiAqLw0K Pj4gKyNkZWZpbmUgREVWX0FERFJfTUFTSwkJR0VOTUFTSyg3LCAwKQ0KPj4gKy8qIFNsb3Qgc3Rh dGUgKi8NCj4+ICsjZGVmaW5lIFNMT1RfU1RBVEUJCUdFTk1BU0soMzEsIDI3KQ0KPj4gKyNkZWZp bmUgR0VUX1NMT1RfU1RBVEUocCkJKCgocCkgJiAoMHgxZiA8PCAyNykpID4+IDI3KQ0KPj4gKw0K Pj4gKyNkZWZpbmUgU0xPVF9TVEFURV9ESVNBQkxFRAkwDQo+PiArI2RlZmluZSBTTE9UX1NUQVRF X0VOQUJMRUQJU0xPVF9TVEFURV9ESVNBQkxFRA0KPj4gKyNkZWZpbmUgU0xPVF9TVEFURV9ERUZB VUxUCTENCj4+ICsjZGVmaW5lIFNMT1RfU1RBVEVfQUREUkVTU0VECTINCj4+ICsjZGVmaW5lIFNM T1RfU1RBVEVfQ09ORklHVVJFRAkzDQo+PiArDQo+PiArLyoqDQo+PiArICogc3RydWN0IGNkbnNw X2VwX2N0eC4NCj4+ICsgKiBAZXBfaW5mbzogRW5kcG9pbnQgc3RhdGUsIHN0cmVhbXMsIG11bHQs IGFuZCBpbnRlcnZhbCBpbmZvcm1hdGlvbi4NCj4+ICsgKiBAZXBfaW5mbzI6IEluZm9ybWF0aW9u IG9uIGVuZHBvaW50IHR5cGUsIG1heCBwYWNrZXQgc2l6ZSwgbWF4IGJ1cnN0IHNpemUsDQo+PiAr ICogICAgICAgICAgICBlcnJvciBjb3VudCwgYW5kIHdoZXRoZXIgdGhlIGNvbnRyb2xsZXIgd2ls bCBmb3JjZSBhbiBldmVudCBmb3INCj4+ICsgKiAgICAgICAgICAgIGFsbCB0cmFuc2FjdGlvbnMu DQo+PiArICogQGRlcTogNjQtYml0IHJpbmcgZGVxdWV1ZSBwb2ludGVyIGFkZHJlc3MuIElmIHRo ZSBlbmRwb2ludCBvbmx5DQo+PiArICogICAgICAgZGVmaW5lcyBvbmUgc3RyZWFtLCB0aGlzIHBv aW50cyB0byB0aGUgZW5kcG9pbnQgdHJhbnNmZXIgcmluZy4NCj4+ICsgKiAgICAgICBPdGhlcndp c2UsIGl0IHBvaW50cyB0byBhIHN0cmVhbSBjb250ZXh0IGFycmF5LCB3aGljaCBoYXMgYQ0KPj4g KyAqICAgICAgIHJpbmcgcG9pbnRlciBmb3IgZWFjaCBmbG93Lg0KPj4gKyAqIEB0eF9pbmZvOiBB dmVyYWdlIFRSQiBsZW5ndGhzIGZvciB0aGUgZW5kcG9pbnQgcmluZyBhbmQNCj4+ICsgKgkgICAg IG1heCBwYXlsb2FkIHdpdGhpbiBhbiBFbmRwb2ludCBTZXJ2aWNlIEludGVydmFsIFRpbWUgKEVT SVQpLg0KPj4gKyAqDQo+PiArICogRW5kcG9pbnQgQ29udGV4dCAtIFRoaXMgYXNzdW1lcyB0aGUg Y29udHJvbGxlciB1c2VzIDMyLWJ5dGUgY29udGV4dA0KPj4gKyAqIHN0cnVjdHVyZXMuIElmIHRo ZSBjb250cm9sbGVyIHVzZXMgNjQtYnl0ZSBjb250ZXh0cywgdGhlcmUgaXMgYW4gYWRkaXRpb25h bA0KPj4gKyAqIDMyIGJ5dGVzIHJlc2VydmVkIGF0IHRoZSBlbmQgb2YgdGhlIGVuZHBvaW50IGNv bnRleHQgZm9yIGNvbnRyb2xsZXIgaW50ZXJuYWwNCj4+ICsgKiB1c2UuDQo+PiArICovDQo+PiAr c3RydWN0IGNkbnNwX2VwX2N0eCB7DQo+PiArCV9fbGUzMiBlcF9pbmZvOw0KPj4gKwlfX2xlMzIg ZXBfaW5mbzI7DQo+PiArCV9fbGU2NCBkZXE7DQo+PiArCV9fbGUzMiB0eF9pbmZvOw0KPj4gKwkv KiBvZmZzZXQgMHgxNCAtIDB4MWYgcmVzZXJ2ZWQgZm9yIGNvbnRyb2xsZXIgaW50ZXJuYWwgdXNl LiAqLw0KPj4gKwlfX2xlMzIgcmVzZXJ2ZWRbM107DQo+PiArfTsNCj4+ICsNCj4+ICsvKiBlcF9p bmZvIGJpdG1hc2tzLiAqLw0KPj4gKy8qDQo+PiArICogRW5kcG9pbnQgU3RhdGUgLSBiaXRzIDA6 MjoNCj4+ICsgKiAwIC0gZGlzYWJsZWQNCj4+ICsgKiAxIC0gcnVubmluZw0KPj4gKyAqIDIgLSBo YWx0ZWQgZHVlIHRvIGhhbHQgY29uZGl0aW9uDQo+PiArICogMyAtIHN0b3BwZWQNCj4+ICsgKiA0 IC0gVFJCIGVycm9yDQo+PiArICogNS03IC0gcmVzZXJ2ZWQNCj4+ICsgKi8NCj4+ICsjZGVmaW5l IEVQX1NUQVRFX01BU0sJCUdFTk1BU0soMywgMCkNCj4+ICsjZGVmaW5lIEVQX1NUQVRFX0RJU0FC TEVECTANCj4+ICsjZGVmaW5lIEVQX1NUQVRFX1JVTk5JTkcJMQ0KPj4gKyNkZWZpbmUgRVBfU1RB VEVfSEFMVEVECQkyDQo+PiArI2RlZmluZSBFUF9TVEFURV9TVE9QUEVECTMNCj4+ICsjZGVmaW5l IEVQX1NUQVRFX0VSUk9SCQk0DQo+PiArI2RlZmluZSBHRVRfRVBfQ1RYX1NUQVRFKGN0eCkJKGxl MzJfdG9fY3B1KChjdHgpLT5lcF9pbmZvKSAmIEVQX1NUQVRFX01BU0spDQo+PiArDQo+PiArLyog TXVsdCAtIE1heCBudW1iZXIgb2YgYnVyc3Qgd2l0aGluIGFuIGludGVydmFsLCBpbiBFUCBjb21w YW5pb24gZGVzYy4gKi8NCj4+ICsjZGVmaW5lIEVQX01VTFQocCkJCQkoKChwKSA8PCA4KSAmIEdF Tk1BU0soOSwgOCkpDQo+PiArI2RlZmluZSBDVFhfVE9fRVBfTVVMVChwKQkJKCgocCkgJiBHRU5N QVNLKDksIDgpKSA+PiA4KQ0KPj4gKy8qIGJpdHMgMTA6MTQgYXJlIE1heCBQcmltYXJ5IFN0cmVh bXMuICovDQo+PiArLyogYml0IDE1IGlzIExpbmVhciBTdHJlYW0gQXJyYXkuICovDQo+PiArLyog SW50ZXJ2YWwgLSBwZXJpb2QgYmV0d2VlbiByZXF1ZXN0cyB0byBhbiBlbmRwb2ludCAtIDEyNXUg aW5jcmVtZW50cy4gKi8NCj4+ICsjZGVmaW5lIEVQX0lOVEVSVkFMKHApCQkJKCgocCkgPDwgMTYp ICYgR0VOTUFTSygyMywgMTYpKQ0KPj4gKyNkZWZpbmUgRVBfSU5URVJWQUxfVE9fVUZSQU1FUyhw KQkoMSA8PCAoKChwKSAmIEdFTk1BU0soMjMsIDE2KSkgPj4gMTYpKQ0KPj4gKyNkZWZpbmUgQ1RY X1RPX0VQX0lOVEVSVkFMKHApCQkoKChwKSAmIEdFTk1BU0soMjMsIDE2KSkgPj4gMTYpDQo+PiAr I2RlZmluZSBFUF9NQVhQU1RSRUFNU19NQVNLCQlHRU5NQVNLKDE0LCAxMCkNCj4+ICsjZGVmaW5l IEVQX01BWFBTVFJFQU1TKHApCQkoKChwKSA8PCAxMCkgJiBFUF9NQVhQU1RSRUFNU19NQVNLKQ0K Pj4gKyNkZWZpbmUgQ1RYX1RPX0VQX01BWFBTVFJFQU1TKHApCSgoKHApICYgRVBfTUFYUFNUUkVB TVNfTUFTSykgPj4gMTApDQo+PiArLyogRW5kcG9pbnQgaXMgc2V0IHVwIHdpdGggYSBMaW5lYXIg U3RyZWFtIEFycmF5ICh2cy4gU2Vjb25kYXJ5IFN0cmVhbSBBcnJheSkgKi8NCj4+ICsjZGVmaW5l IEVQX0hBU19MU0EJCQlCSVQoMTUpDQo+PiArDQo+PiArLyogZXBfaW5mbzIgYml0bWFza3MgKi8N Cj4+ICsjZGVmaW5lIEVSUk9SX0NPVU5UKHApCQkoKChwKSAmIDB4MykgPDwgMSkNCj4+ICsjZGVm aW5lIENUWF9UT19FUF9UWVBFKHApCSgoKHApID4+IDMpICYgMHg3KQ0KPj4gKyNkZWZpbmUgRVBf VFlQRShwKQkJKChwKSA8PCAzKQ0KPj4gKyNkZWZpbmUgSVNPQ19PVVRfRVAJCTENCj4+ICsjZGVm aW5lIEJVTEtfT1VUX0VQCQkyDQo+PiArI2RlZmluZSBJTlRfT1VUX0VQCQkzDQo+PiArI2RlZmlu ZSBDVFJMX0VQCQkJNA0KPj4gKyNkZWZpbmUgSVNPQ19JTl9FUAkJNQ0KPj4gKyNkZWZpbmUgQlVM S19JTl9FUAkJNg0KPj4gKyNkZWZpbmUgSU5UX0lOX0VQCQk3DQo+PiArLyogYml0IDYgcmVzZXJ2 ZWQuICovDQo+PiArLyogYml0IDcgaXMgRGV2aWNlIEluaXRpYXRlIERpc2FibGUgLSBmb3IgZGlz YWJsaW5nIHN0cmVhbSBzZWxlY3Rpb24uICovDQo+PiArI2RlZmluZSBNQVhfQlVSU1QocCkJCSgo KHApIDw8IDgpICYgR0VOTUFTSygxNSwgOCkpDQo+PiArI2RlZmluZSBDVFhfVE9fTUFYX0JVUlNU KHApCSgoKHApICYgR0VOTUFTSygxNSwgOCkpID4+IDgpDQo+PiArI2RlZmluZSBNQVhfUEFDS0VU KHApCQkoKChwKSA8PCAxNikgJiBHRU5NQVNLKDMxLCAxNikpDQo+PiArI2RlZmluZSBNQVhfUEFD S0VUX01BU0sJCUdFTk1BU0soMzEsIDE2KQ0KPj4gKyNkZWZpbmUgTUFYX1BBQ0tFVF9ERUNPREVE KHApCSgoKHApICYgR0VOTUFTSygzMSwgMTYpKSA+PiAxNikNCj4+ICsNCj4+ICsvKiB0eF9pbmZv IGJpdG1hc2tzLiAqLw0KPj4gKyNkZWZpbmUgRVBfQVZHX1RSQl9MRU5HVEgocCkJCSgocCkgJiBH RU5NQVNLKDE1LCAwKSkNCj4+ICsjZGVmaW5lIEVQX01BWF9FU0lUX1BBWUxPQURfTE8ocCkJKCgo cCkgPDwgMTYpICYgR0VOTUFTSygzMSwgMTYpKQ0KPj4gKyNkZWZpbmUgRVBfTUFYX0VTSVRfUEFZ TE9BRF9ISShwKQkoKCgocCkgJiBHRU5NQVNLKDIzLCAxNikpID4+IDE2KSA8PCAyNCkNCj4+ICsj ZGVmaW5lIENUWF9UT19NQVhfRVNJVF9QQVlMT0FEX0xPKHApCSgoKHApICYgR0VOTUFTSygzMSwg MTYpKSA+PiAxNikNCj4+ICsjZGVmaW5lIENUWF9UT19NQVhfRVNJVF9QQVlMT0FEX0hJKHApCSgo KHApICYgR0VOTUFTSygzMSwgMjQpKSA+PiAyNCkNCj4+ICsNCj4+ICsvKiBkZXEgYml0bWFza3Mu ICovDQo+PiArI2RlZmluZSBFUF9DVFhfQ1lDTEVfTUFTSwkJQklUKDApDQo+PiArI2RlZmluZSBD VFhfREVRX01BU0sJCQkofjB4ZkwpDQo+PiArDQo+PiArLyoqDQo+PiArICogc3RydWN0IGNkbnNw X2lucHV0X2NvbnRyb2xfY29udGV4dA0KPj4gKyAqIElucHV0IGNvbnRyb2wgY29udGV4dDsNCj4+ ICsgKg0KPj4gKyAqIEBkcm9wX2NvbnRleHQ6IFNldCB0aGUgYml0IG9mIHRoZSBlbmRwb2ludCBj b250ZXh0IHlvdSB3YW50IHRvIGRpc2FibGUuDQo+PiArICogQGFkZF9jb250ZXh0OiBTZXQgdGhl IGJpdCBvZiB0aGUgZW5kcG9pbnQgY29udGV4dCB5b3Ugd2FudCB0byBlbmFibGUuDQo+PiArICov DQo+PiArc3RydWN0IGNkbnNwX2lucHV0X2NvbnRyb2xfY3R4IHsNCj4+ICsJX19sZTMyIGRyb3Bf ZmxhZ3M7DQo+PiArCV9fbGUzMiBhZGRfZmxhZ3M7DQo+PiArCV9fbGUzMiByc3ZkMls2XTsNCj4+ ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIFJlcHJlc2VudHMgZXZlcnl0aGluZyB0aGF0IGlz IG5lZWRlZCB0byBpc3N1ZSBhIGNvbW1hbmQgb24gdGhlIGNvbW1hbmQgcmluZy4NCj4+ICsgKg0K Pj4gKyAqIEBpbl9jdHg6IFBvaW50ZXIgdG8gaW5wdXQgY29udGV4dCBzdHJ1Y3R1cmUuDQo+PiAr ICogQHN0YXR1czogQ29tbWFuZCBDb21wbGV0aW9uIENvZGUgZm9yIGxhc3QgY29tbWFuZC4NCj4+ ICsgKiBAY29tbWFuZF90cmI6IFBvaW50ZXIgdG8gY29tbWFuZCBUUkIuDQo+PiArICovDQo+PiAr c3RydWN0IGNkbnNwX2NvbW1hbmQgew0KPj4gKwkvKiBJbnB1dCBjb250ZXh0IGZvciBjaGFuZ2lu ZyBkZXZpY2Ugc3RhdGUuICovDQo+PiArCXN0cnVjdCBjZG5zcF9jb250YWluZXJfY3R4ICppbl9j dHg7DQo+PiArCXUzMiBzdGF0dXM7DQo+PiArCXVuaW9uIGNkbnNwX3RyYiAqY29tbWFuZF90cmI7 DQo+PiArfTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBTdHJlYW0gY29udGV4dCBzdHJ1Y3R1cmUu DQo+PiArICoNCj4+ICsgKiBAc3RyZWFtX3Jpbmc6IDY0LWJpdCBzdHJlYW0gcmluZyBhZGRyZXNz LCBjeWNsZSBzdGF0ZSwgYW5kIHN0cmVhbSB0eXBlLg0KPj4gKyAqIEByZXNlcnZlZDogb2Zmc2V0 IDB4MTQgLSAweDFmIHJlc2VydmVkIGZvciBjb250cm9sbGVyIGludGVybmFsIHVzZS4NCj4+ICsg Ki8NCj4+ICtzdHJ1Y3QgY2Ruc3Bfc3RyZWFtX2N0eCB7DQo+PiArCV9fbGU2NCBzdHJlYW1fcmlu ZzsNCj4+ICsJX19sZTMyIHJlc2VydmVkWzJdOw0KPj4gK307DQo+PiArDQo+PiArLyogU3RyZWFt IENvbnRleHQgVHlwZXMgLSBiaXRzIDM6MSBvZiBzdHJlYW0gY3R4IGRlcSBwdHIuICovDQo+PiAr I2RlZmluZSBTQ1RfRk9SX0NUWChwKQkJKCgocCkgPDwgMSkgJiBHRU5NQVNLKDMsIDEpKQ0KPj4g Ky8qIFNlY29uZGFyeSBzdHJlYW0gYXJyYXkgdHlwZSwgZGVxdWV1ZSBwb2ludGVyIGlzIHRvIGEg dHJhbnNmZXIgcmluZy4gKi8NCj4+ICsjZGVmaW5lIFNDVF9TRUNfVFIJCTANCj4+ICsvKiBQcmlt YXJ5IHN0cmVhbSBhcnJheSB0eXBlLCBkZXF1ZXVlIHBvaW50ZXIgaXMgdG8gYSB0cmFuc2ZlciBy aW5nLiAqLw0KPj4gKyNkZWZpbmUgU0NUX1BSSV9UUgkJMQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAq ICBzdHJ1Y3QgY2Ruc3Bfc3RyZWFtX2luZm86IFJlcHJlc2VudGluZyBldmVyeXRoaW5nIHRoYXQg aXMgbmVlZGVkIHRvDQo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMg c3RyZWFtIGNhcGFibGUgZW5kcG9pbnRzLg0KPj4gKyAqICBAc3RyZWFtX3JpbmdzOiBBcnJheSBv ZiBwb2ludGVycyBjb250YWluaW5nIFRyYW5zZmVyIHJpbmdzIGZvciBhbGwNCj4+ICsgKiAgICAg ICAgICAgICAgICAgc3VwcG9ydGVkIHN0cmVhbXMuDQo+PiArICogIEBudW1fc3RyZWFtczogTnVt YmVyIG9mIHN0cmVhbXMsIGluY2x1ZGluZyBzdHJlYW0gMC4NCj4+ICsgKiAgQHN0cmVhbV9jdHhf YXJyYXk6IFRoZSBzdHJlYW0gY29udGV4dCBhcnJheSBtYXkgYmUgYmlnZ2VyIHRoYW4gdGhlIG51 bWJlcg0KPj4gKyAqICAgICAgICAgICAgICAgICAgICAgb2Ygc3RyZWFtcyB0aGUgZHJpdmVyIGFz a2VkIGZvci4NCj4+ICsgKiAgQG51bV9zdHJlYW1fY3R4czogTnVtYmVyIG9mIHN0cmVhbXMuDQo+ PiArICogIEBjdHhfYXJyYXlfZG1hOiBEbWEgYWRkcmVzcyBvZiBDb250ZXh0IFN0cmVhbSBBcnJh eS4NCj4+ICsgKiAgQHRyYl9hZGRyZXNzX21hcDogRm9yIG1hcHBpbmcgcGh5c2ljYWwgVFJCIGFk ZHJlc3NlcyB0byBzZWdtZW50cyBpbg0KPj4gKyAqICAgICAgICAgICAgICAgICAgICBzdHJlYW0g cmluZ3MuDQo+PiArICogIEB0ZF9jb3VudDogTnVtYmVyIG9mIFREcyBhc3NvY2lhdGVkIHdpdGgg ZW5kcG9pbnQuDQo+PiArICogIEBmaXJzdF9wcmltZV9kZXQ6IEZpcnN0IFBSSU1FIHBhY2tldCBk ZXRlY3RlZC4NCj4+ICsgKiAgQGRyYmxzX2NvdW50OiBOdW1iZXIgb2YgYWxsb3dlZCBkb29yYmVs bHMuDQo+PiArICovDQo+PiArc3RydWN0IGNkbnNwX3N0cmVhbV9pbmZvIHsNCj4+ICsJc3RydWN0 IGNkbnNwX3JpbmcgKipzdHJlYW1fcmluZ3M7DQo+PiArCXVuc2lnbmVkIGludCBudW1fc3RyZWFt czsNCj4+ICsJc3RydWN0IGNkbnNwX3N0cmVhbV9jdHggKnN0cmVhbV9jdHhfYXJyYXk7DQo+PiAr CXVuc2lnbmVkIGludCBudW1fc3RyZWFtX2N0eHM7DQo+PiArCWRtYV9hZGRyX3QgY3R4X2FycmF5 X2RtYTsNCj4+ICsJc3RydWN0IHJhZGl4X3RyZWVfcm9vdCB0cmJfYWRkcmVzc19tYXA7DQo+PiAr CWludCB0ZF9jb3VudDsNCj4+ICsJdTggZmlyc3RfcHJpbWVfZGV0Ow0KPj4gKyNkZWZpbmUgU1RS RUFNX0RSQkxfRklGT19ERVBUSCAyDQo+PiArCXU4IGRyYmxzX2NvdW50Ow0KPj4gK307DQo+PiAr DQo+PiArI2RlZmluZSBTVFJFQU1fTE9HX1NUUkVBTVMgNA0KPj4gKyNkZWZpbmUgU1RSRUFNX05V TV9TVFJFQU1TIEJJVChTVFJFQU1fTE9HX1NUUkVBTVMpDQo+PiArDQo+PiArI2lmIFNUUkVBTV9M T0dfU1RSRUFNUyA+IDE2ICYmIFNUUkVBTV9MT0dfU1RSRUFNUyA8IDENCj4+ICsjZXJyb3IgIk5v dCBzdXVwcG9ydGVkIHN0cmVhbSB2YWx1ZSINCj4+ICsjZW5kaWYNCj4+ICsNCj4+ICsvKioNCj4+ ICsgKiBzdHJ1Y3QgY2Ruc3BfZXAgLSBleHRlbmRlZCBkZXZpY2Ugc2lkZSByZXByZXNlbnRhdGlv biBvZiBVU0IgZW5kcG9pbnQuDQo+PiArICogQGVuZHBvaW50OiB1c2IgZW5kcG9pbnQNCj4+ICsg KiBAcGVuZGluZ19yZXFfbGlzdDogTGlzdCBvZiByZXF1ZXN0cyBxdWV1aW5nIG9uIHRyYW5zZmVy IHJpbmcuDQo+PiArICogQHBkZXY6IERldmljZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbmRwb2lu dC4NCj4+ICsgKiBAbnVtYmVyOiBFbmRwb2ludCBudW1iZXIgKDEgLSAxNSkuDQo+PiArICogaWR4 OiBUaGUgZGV2aWNlIGNvbnRleHQgaW5kZXggKERDSSkuDQo+PiArICogaW50ZXJ2YWw6IEludGVy dmFsIGJldHdlZW4gcGFja2V0cyB1c2VkIGZvciBJU09DIGVuZHBvaW50Lg0KPj4gKyAqIEBuYW1l OiBBIGh1bWFuIHJlYWRhYmxlIG5hbWUgZS5nLiBlcDFvdXQuDQo+PiArICogQGRpcmVjdGlvbjog RW5kcG9pbnQgZGlyZWN0aW9uLg0KPj4gKyAqIEBidWZmZXJpbmc6IE51bWJlciBvZiBvbi1jaGlw IGJ1ZmZlcnMgcmVsYXRlZCB0byBlbmRwb2ludC4NCj4+ICsgKiBAYnVmZmVyaW5nX3BlcmlvZDsg TnVtYmVyIG9mIG9uLWNoaXAgYnVmZmVycyByZWxhdGVkIHRvIHBlcmlvZGljIGVuZHBvaW50Lg0K Pj4gKyAqIEBpbl9jdHg6IFBvaW50ZXIgdG8gaW5wdXQgZW5kcG9pbnQgY29udGV4dCBzdHJ1Y3R1 cmUuDQo+PiArICogQG91dF9jdHg6IFBvaW50ZXIgdG8gb3V0cHV0IGVuZHBvaW50IGNvbnRleHQg c3RydWN0dXJlLg0KPj4gKyAqIEByaW5nOiBQb2ludGVyIHRvIHRyYW5zZmVyIHJpbmcuDQo+PiAr ICogQHN0cmVhbV9pbmZvOiBIb2xkIHN0cmVhbSBpbmZvcm1hdGlvbi4NCj4+ICsgKiBAZXBfc3Rh dGU6IEN1cnJlbnQgc3RhdGUgb2YgZW5kcG9pbnQuDQo+PiArICogc2tpcDogU29tZXRpbWVzIHRo ZSBjb250cm9sbGVyIGNhbiBub3QgcHJvY2VzcyBpc29jaHJvbm91cyBlbmRwb2ludCByaW5nDQo+ PiArICogICAgICAgcXVpY2tseSBlbm91Z2gsIGFuZCBpdCB3aWxsIG1pc3Mgc29tZSBpc29jIHRk cyBvbiB0aGUgcmluZyBhbmQNCj4+ICsgKiAgICAgICBnZW5lcmF0ZSBNaXNzZWQgU2VydmljZSBF cnJvciBFdmVudC4NCj4+ICsgKiAgICAgICBTZXQgc2tpcCBmbGFnIHdoZW4gcmVjZWl2ZSBhIE1p c3NlZCBTZXJ2aWNlIEVycm9yIEV2ZW50IGFuZA0KPj4gKyAqICAgICAgIHByb2Nlc3MgdGhlIG1p c3NlZCB0ZHMgb24gdGhlIGVuZHBvaW50IHJpbmcuDQo+PiArICovDQo+PiArc3RydWN0IGNkbnNw X2VwIHsNCj4+ICsJc3RydWN0IHVzYl9lcCBlbmRwb2ludDsNCj4+ICsJc3RydWN0IGxpc3RfaGVh ZCBwZW5kaW5nX2xpc3Q7DQo+PiArCXN0cnVjdCBjZG5zcF9kZXZpY2UgKnBkZXY7DQo+PiArCXU4 IG51bWJlcjsNCj4+ICsJdTggaWR4Ow0KPj4gKwl1MzIgaW50ZXJ2YWw7DQo+PiArCWNoYXIgbmFt ZVsyMF07DQo+PiArCXU4IGRpcmVjdGlvbjsNCj4+ICsJdTggYnVmZmVyaW5nOw0KPj4gKwl1OCBi dWZmZXJpbmdfcGVyaW9kOw0KPj4gKwlzdHJ1Y3QgY2Ruc3BfZXBfY3R4ICppbl9jdHg7DQo+PiAr CXN0cnVjdCBjZG5zcF9lcF9jdHggKm91dF9jdHg7DQo+PiArCXN0cnVjdCBjZG5zcF9yaW5nICpy aW5nOw0KPj4gKwlzdHJ1Y3QgY2Ruc3Bfc3RyZWFtX2luZm8gc3RyZWFtX2luZm87DQo+PiArCXVu c2lnbmVkIGludCBlcF9zdGF0ZTsNCj4+ICsjZGVmaW5lIEVQX0VOQUJMRUQJCUJJVCgwKQ0KPj4g KyNkZWZpbmUgRVBfRElTX0lOX1JST0dSRVNTCUJJVCgxKQ0KPj4gKyNkZWZpbmUgRVBfSEFMVEVE CQlCSVQoMikNCj4+ICsjZGVmaW5lIEVQX1NUT1BQRUQJCUJJVCgzKQ0KPj4gKyNkZWZpbmUgRVBf V0VER0UJCUJJVCg0KQ0KPj4gKyNkZWZpbmUgRVAwX0hBTFRFRF9TVEFUVVMJQklUKDUpDQo+PiAr I2RlZmluZSBFUF9IQVNfU1RSRUFNUwkJQklUKDYpDQo+PiArDQo+PiArCWJvb2wgc2tpcDsNCj4+ ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBjZG5zcF9kZXZpY2VfY29udGV4dF9h cnJheQ0KPj4gKyAqIEBkZXZfY29udGV4dF9wdHI6IEFycmF5IG9mIDY0LWJpdCBETUEgYWRkcmVz c2VzIGZvciBkZXZpY2UgY29udGV4dHMuDQo+PiArICogQGRtYTogRE1BIGFkZHJlc3MgZm9yIGRl dmljZSBjb250ZXh0cyBzdHJ1Y3R1cmUuDQo+PiArICovDQo+PiArc3RydWN0IGNkbnNwX2Rldmlj ZV9jb250ZXh0X2FycmF5IHsNCj4+ICsJX19sZTY0IGRldl9jb250ZXh0X3B0cnNbQ0ROU1BfREVW X01BWF9TTE9UUyArIDFdOw0KPj4gKwlkbWFfYWRkcl90IGRtYTsNCj4+ICt9Ow0KPj4gKw0KPj4g Ky8qKg0KPj4gKyAqIHN0cnVjdCBjZG5zcF90cmFuc2Zlcl9ldmVudC4NCj4+ICsgKiBAYnVmZmVy OiA2NC1iaXQgYnVmZmVyIGFkZHJlc3MsIG9yIGltbWVkaWF0ZSBkYXRhLg0KPj4gKyAqIEB0cmFu c2Zlcl9sZW46IERhdGEgbGVuZ3RoIHRyYW5zZmVycmVkLg0KPj4gKyAqIEBmbGFnczogRmllbGQg aXMgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkgYmFzZWQgb24gdGhlIHR5cGUgb2YgVFJCLg0KPj4g KyAqLw0KPj4gK3N0cnVjdCBjZG5zcF90cmFuc2Zlcl9ldmVudCB7DQo+PiArCV9fbGU2NCBidWZm ZXI7DQo+PiArCV9fbGUzMiB0cmFuc2Zlcl9sZW47DQo+PiArCV9fbGUzMiBmbGFnczsNCj4+ICt9 Ow0KPj4gKw0KPj4gKy8qIEludmFsaWRhdGUgZXZlbnQgYWZ0ZXIgZGlzYWJsaW5nIGVuZHBvaW50 LiAqLw0KPj4gKyNkZWZpbmUgVFJCX0VWRU5UX0lOVkFMSURBVEUgOA0KPj4gKw0KPj4gKy8qIFRy YW5zZmVyIGV2ZW50IFRSQiBsZW5ndGggYml0IG1hc2suICovDQo+PiArLyogYml0cyAwOjIzICov DQo+PiArI2RlZmluZSBFVkVOVF9UUkJfTEVOKHApCQkJKChwKSAmIEdFTk1BU0soMjMsIDApKQ0K Pj4gKy8qIENvbXBsZXRpb24gQ29kZSAtIG9ubHkgYXBwbGljYWJsZSBmb3Igc29tZSB0eXBlcyBv ZiBUUkJzICovDQo+PiArI2RlZmluZSBDT01QX0NPREVfTUFTSwkJCQkoMHhmZiA8PCAyNCkNCj4+ ICsjZGVmaW5lIEdFVF9DT01QX0NPREUocCkJCQkoKChwKSAmIENPTVBfQ09ERV9NQVNLKSA+PiAy NCkNCj4+ICsjZGVmaW5lIENPTVBfSU5WQUxJRAkJCQkwDQo+PiArI2RlZmluZSBDT01QX1NVQ0NF U1MJCQkJMQ0KPj4gKyNkZWZpbmUgQ09NUF9EQVRBX0JVRkZFUl9FUlJPUgkJCTINCj4+ICsjZGVm aW5lIENPTVBfQkFCQkxFX0RFVEVDVEVEX0VSUk9SCQkzDQo+PiArI2RlZmluZSBDT01QX1RSQl9F UlJPUgkJCQk1DQo+PiArI2RlZmluZSBDT01QX1JFU09VUkNFX0VSUk9SCQkJNw0KPj4gKyNkZWZp bmUgQ09NUF9OT19TTE9UU19BVkFJTEFCTEVfRVJST1IJCTkNCj4+ICsjZGVmaW5lIENPTVBfSU5W QUxJRF9TVFJFQU1fVFlQRV9FUlJPUgkJMTANCj4+ICsjZGVmaW5lIENPTVBfU0xPVF9OT1RfRU5B QkxFRF9FUlJPUgkJMTENCj4+ICsjZGVmaW5lIENPTVBfRU5EUE9JTlRfTk9UX0VOQUJMRURfRVJS T1IJCTEyDQo+PiArI2RlZmluZSBDT01QX1NIT1JUX1BBQ0tFVAkJCTEzDQo+PiArI2RlZmluZSBD T01QX1JJTkdfVU5ERVJSVU4JCQkxNA0KPj4gKyNkZWZpbmUgQ09NUF9SSU5HX09WRVJSVU4JCQkx NQ0KPj4gKyNkZWZpbmUgQ09NUF9WRl9FVkVOVF9SSU5HX0ZVTExfRVJST1IJCTE2DQo+PiArI2Rl ZmluZSBDT01QX1BBUkFNRVRFUl9FUlJPUgkJCTE3DQo+PiArI2RlZmluZSBDT01QX0NPTlRFWFRf U1RBVEVfRVJST1IJCTE5DQo+PiArI2RlZmluZSBDT01QX0VWRU5UX1JJTkdfRlVMTF9FUlJPUgkJ MjENCj4+ICsjZGVmaW5lIENPTVBfSU5DT01QQVRJQkxFX0RFVklDRV9FUlJPUgkJMjINCj4+ICsj ZGVmaW5lIENPTVBfTUlTU0VEX1NFUlZJQ0VfRVJST1IJCTIzDQo+PiArI2RlZmluZSBDT01QX0NP TU1BTkRfUklOR19TVE9QUEVECQkyNA0KPj4gKyNkZWZpbmUgQ09NUF9DT01NQU5EX0FCT1JURUQJ CQkyNQ0KPj4gKyNkZWZpbmUgQ09NUF9TVE9QUEVECQkJCTI2DQo+PiArI2RlZmluZSBDT01QX1NU T1BQRURfTEVOR1RIX0lOVkFMSUQJCTI3DQo+PiArI2RlZmluZSBDT01QX1NUT1BQRURfU0hPUlRf UEFDS0VUCQkyOA0KPj4gKyNkZWZpbmUgQ09NUF9NQVhfRVhJVF9MQVRFTkNZX1RPT19MQVJHRV9F UlJPUgkyOQ0KPj4gKyNkZWZpbmUgQ09NUF9JU09DSF9CVUZGRVJfT1ZFUlJVTgkJMzENCj4+ICsj ZGVmaW5lIENPTVBfRVZFTlRfTE9TVF9FUlJPUgkJCTMyDQo+PiArI2RlZmluZSBDT01QX1VOREVG SU5FRF9FUlJPUgkJCTMzDQo+PiArI2RlZmluZSBDT01QX0lOVkFMSURfU1RSRUFNX0lEX0VSUk9S CQkzNA0KPj4gKw0KPj4gKy8qVHJhbnNmZXIgRXZlbnQgTlJEWSBiaXQgZmllbGRzICovDQo+PiAr I2RlZmluZSBUUkJfVE9fREVWX1NUUkVBTShwKQkJCSgocCkgJiBHRU5NQVNLKDE2LCAwKSkNCj4+ ICsjZGVmaW5lIFRSQl9UT19IT1NUX1NUUkVBTShwKQkJCSgocCkgJiBHRU5NQVNLKDE2LCAwKSkN Cj4+ICsjZGVmaW5lIFNUUkVBTV9QUklNRV9BQ0sJCQkweEZGRkUNCj4+ICsjZGVmaW5lIFNUUkVB TV9SRUpFQ1RFRAkJCQkweEZGRkYNCj4+ICsNCj4+ICsvKiogVHJhbnNmZXIgRXZlbnQgYml0IGZp ZWxkcyAqKi8NCj4+ICsjZGVmaW5lIFRSQl9UT19FUF9JRChwKQkJCQkoKChwKSAmIEdFTk1BU0so MjAsIDE2KSkgPj4gMTYpDQo+PiArDQo+PiArLyoqDQo+PiArICogc3RydWN0IGNkbnNwX2xpbmtf dHJiDQo+PiArICogQHNlZ21lbnRfcHRyOiA2NC1iaXQgc2VnbWVudCBwb2ludGVyLg0KPj4gKyAq IEBpbnRyX3RhcmdldDogSW50ZXJydXB0ZXIgdGFyZ2V0Lg0KPj4gKyAqIEBjb250cm9sOiBGbGFn cy4NCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY2Ruc3BfbGlua190cmIgew0KPj4gKwlfX2xlNjQgc2Vn bWVudF9wdHI7DQo+PiArCV9fbGUzMiBpbnRyX3RhcmdldDsNCj4+ICsJX19sZTMyIGNvbnRyb2w7 DQo+PiArfTsNCj4+ICsNCj4+ICsvKiBjb250cm9sIGJpdGZpZWxkcyAqLw0KPj4gKyNkZWZpbmUg TElOS19UT0dHTEUJQklUKDEpDQo+PiArDQo+PiArLyoqDQo+PiArICogc3RydWN0IGNkbnNwX2V2 ZW50X2NtZCAtIENvbW1hbmQgY29tcGxldGlvbiBldmVudCBUUkIuDQo+PiArICogY21kX3RyYjog UG9pbnRlciB0byBjb21tYW5kIFRSQiwgb3IgdGhlIHZhbHVlIHBhc3NlZCBieSB0aGUgZXZlbnQg ZGF0YSB0cmINCj4+ICsgKiBzdGF0dXM6IENvbW1hbmQgY29tcGxldGlvbiBwYXJhbWV0ZXJzIGFu ZCBlcnJvciBjb2RlLg0KPj4gKyAqIGZsYWdzOiBGbGFncy4NCj4+ICsgKi8NCj4+ICtzdHJ1Y3Qg Y2Ruc3BfZXZlbnRfY21kIHsNCj4+ICsJX19sZTY0IGNtZF90cmI7DQo+PiArCV9fbGUzMiBzdGF0 dXM7DQo+PiArCV9fbGUzMiBmbGFnczsNCj4+ICt9Ow0KPj4gKw0KPj4gKy8qIGZsYWdzIGJpdG1h c2tzICovDQo+PiArDQo+PiArLyogQWRkcmVzcyBkZXZpY2UgLSBkaXNhYmxlIFNldEFkZHJlc3Mu ICovDQo+PiArI2RlZmluZSBUUkJfQlNSCQlCSVQoOSkNCj4+ICsNCj4+ICsvKiBDb25maWd1cmUg RW5kcG9pbnQgLSBEZWNvbmZpZ3VyZS4gKi8NCj4+ICsjZGVmaW5lIFRSQl9EQwkJQklUKDkpDQo+ PiArDQo+PiArLyogRm9yY2UgSGVhZGVyICovDQo+PiArI2RlZmluZSBUUkJfRkhfVE9fUEFDS0VU X1RZUEUocCkJKChwKSAmIEdFTk1BU0soNCwgMCkpDQo+PiArI2RlZmluZSBUUkJfRkhfVFJfUEFD S0VUCQkweDQNCj4+ICsjZGVmaW5lIFRSQl9GSF9UT19ERVZJQ0VfQUREUkVTUyhwKQkoKChwKSA8 PCAyNSkgJiBHRU5NQVNLKDMxLCAyNSkpDQo+PiArI2RlZmluZSBUUkJfRkhfVFJfUEFDS0VUX0RF Vl9OT1QJMHg2DQo+PiArI2RlZmluZSBUUkJfRkhfVE9fTk9UX1RZUEUocCkJCSgoKHApIDw8IDQp ICYgR0VOTUFTSyg3LCA0KSkNCj4+ICsjZGVmaW5lIFRSQl9GSF9UUl9QQUNLRVRfRlVOQ1RJT05f V0FLRQkweDENCj4+ICsjZGVmaW5lIFRSQl9GSF9UT19JTlRFUkZBQ0UocCkJCSgoKHApIDw8IDgp ICYgR0VOTUFTSygxNSwgOCkpDQo+PiArDQo+PiArZW51bSBjZG5zcF9zZXR1cF9kZXYgew0KPj4g KwlTRVRVUF9DT05URVhUX09OTFksDQo+PiArCVNFVFVQX0NPTlRFWFRfQUREUkVTUywNCj4+ICt9 Ow0KPj4gKw0KPj4gKy8qIGJpdHMgMjQ6MzEgYXJlIHRoZSBzbG90IElELiAqLw0KPj4gKyNkZWZp bmUgVFJCX1RPX1NMT1RfSUQocCkJCSgoKHApICYgR0VOTUFTSygzMSwgMjQpKSA+PiAyNCkNCj4+ ICsjZGVmaW5lIFNMT1RfSURfRk9SX1RSQihwKQkJKCgocCkgPDwgMjQpICYgR0VOTUFTSygzMSwg MjQpKQ0KPj4gKw0KPj4gKy8qIFN0b3AgRW5kcG9pbnQgVFJCIC0gZXBfaW5kZXggdG8gZW5kcG9p bnQgSUQgZm9yIHRoaXMgVFJCLiAqLw0KPj4gKyNkZWZpbmUgVFJCX1RPX0VQX0lOREVYKHApCQko KCgocCkgJiAoMHgxZiA8PCAxNikpID4+IDE2KSkNCj4+ICsNCj4+ICsjZGVmaW5lIEVQX0lEX0ZP Ul9UUkIocCkJCSgoKChwKSArIDEpIDw8IDE2KSAmIEdFTk1BU0soMjAsIDE2KSkNCj4+ICsNCj4+ ICsjZGVmaW5lIFNVU1BFTkRfUE9SVF9GT1JfVFJCKHApCQkoKChwKSAmIDEpIDw8IDIzKQ0KPj4g KyNkZWZpbmUgVFJCX1RPX1NVU1BFTkRfUE9SVChwKQkJKCgocCkgJiAoMSA8PCAyMykpID4+IDIz KQ0KPj4gKyNkZWZpbmUgTEFTVF9FUF9JTkRFWAkJCTMwDQo+PiArDQo+PiArLyogU2V0IFRSIERl cXVldWUgUG9pbnRlciBjb21tYW5kIFRSQiBmaWVsZHMuICovDQo+PiArI2RlZmluZSBUUkJfVE9f U1RSRUFNX0lEKHApCQkoKCgocCkgJiBHRU5NQVNLKDMxLCAxNikpID4+IDE2KSkNCj4+ICsjZGVm aW5lIFNUUkVBTV9JRF9GT1JfVFJCKHApCQkoKCgocCkpIDw8IDE2KSAmIEdFTk1BU0soMzEsIDE2 KSkNCj4+ICsjZGVmaW5lIFNDVF9GT1JfVFJCKHApCQkJKCgocCkgPDwgMSkgJiAweDcpDQo+PiAr DQo+PiArLyogTGluayBUUkIgc3BlY2lmaWMgZmllbGRzLiAqLw0KPj4gKyNkZWZpbmUgVFJCX1RD CQkJCUJJVCgxKQ0KPj4gKw0KPj4gKy8qIFBvcnQgU3RhdHVzIENoYW5nZSBFdmVudCBUUkIgZmll bGRzLiAqLw0KPj4gKy8qIFBvcnQgSUQgLSBiaXRzIDMxOjI0LiAqLw0KPj4gKyNkZWZpbmUgR0VU X1BPUlRfSUQocCkJCQkoKChwKSAmIEdFTk1BU0soMzEsIDI0KSkgPj4gMjQpDQo+PiArI2RlZmlu ZSBTRVRfUE9SVF9JRChwKQkJCSgoKHApIDw8IDI0KSAmIEdFTk1BU0soMzEsIDI0KSkNCj4+ICsj ZGVmaW5lIEVWRU5UX0RBVEEJCQlCSVQoMikNCj4+ICsNCj4+ICsvKiBOb3JtYWwgVFJCIGZpZWxk cy4gKi8NCj4+ICsvKiB0cmFuc2Zlcl9sZW4gYml0bWFza3MgLSBiaXRzIDA6MTYuICovDQo+PiAr I2RlZmluZSBUUkJfTEVOKHApCQkJKChwKSAmIEdFTk1BU0soMTYsIDApKQ0KPj4gKy8qIFREIFNp emUsIHBhY2tldHMgcmVtYWluaW5nIGluIHRoaXMgVEQsIGJpdHMgMjE6MTcgKDUgYml0cywgc28g bWF4IDMxKS4gKi8NCj4+ICsjZGVmaW5lIFRSQl9URF9TSVpFKHApCQkJKG1pbigocCksICh1MzIp MzEpIDw8IDE3KQ0KPj4gKyNkZWZpbmUgR0VUX1REX1NJWkUocCkJCQkoKChwKSAmIEdFTk1BU0so MjEsIDE3KSkgPj4gMTcpDQo+PiArLyoNCj4+ICsgKiBDb250cm9sbGVyIHVzZXMgdGhlIFREX1NJ WkUgZmllbGQgZm9yIFRCQyBpZiBFeHRlbmRlZCBUQkMNCj4+ICsgKiBpcyBlbmFibGVkIChFVEUp Lg0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgVFJCX1REX1NJWkVfVEJDKHApCQkobWluKChwKSwgKHUz MikzMSkgPDwgMTcpDQo+PiArLyogSW50ZXJydXB0ZXIgVGFyZ2V0IC0gd2hpY2ggTVNJLVggdmVj dG9yIHRvIHRhcmdldCB0aGUgY29tcGxldGlvbiBldmVudCBhdC4gKi8NCj4+ICsjZGVmaW5lIFRS Ql9JTlRSX1RBUkdFVChwKQkJKCgocCkgPDwgMjIpICYgR0VOTUFTSygzMSwgMjIpKQ0KPj4gKyNk ZWZpbmUgR0VUX0lOVFJfVEFSR0VUKHApCQkoKChwKSAmIEdFTk1BU0soMzEsIDIyKSkgPj4gMjIp DQo+PiArLyoNCj4+ICsgKiBUb3RhbCBidXJzdCBjb3VudCBmaWVsZCwgUnN2ZHogb24gY29udHJv bGxlciB3aXRoIEV4dGVuZGVkIFRCQw0KPj4gKyAqIGVuYWJsZWQgKEVURSkuDQo+PiArICovDQo+ PiArI2RlZmluZSBUUkJfVEJDKHApCQkJKCgocCkgJiAweDMpIDw8IDcpDQo+PiArI2RlZmluZSBU UkJfVExCUEMocCkJCQkoKChwKSAmIDB4ZikgPDwgMTYpDQo+PiArDQo+PiArLyogQ3ljbGUgYml0 IC0gaW5kaWNhdGVzIFRSQiBvd25lcnNoaXAgYnkgZHJpdmVyIG9yIGRyaXZlci4qLw0KPj4gKyNk ZWZpbmUgVFJCX0NZQ0xFCQkJQklUKDApDQo+PiArLyoNCj4+ICsgKiBGb3JjZSBuZXh0IGV2ZW50 IGRhdGEgVFJCIHRvIGJlIGV2YWx1YXRlZCBiZWZvcmUgdGFzayBzd2l0Y2guDQo+PiArICogVXNl ZCB0byBwYXNzIE9TIGRhdGEgYmFjayBhZnRlciBhIFREIGNvbXBsZXRlcy4NCj4+ICsgKi8NCj4+ ICsjZGVmaW5lIFRSQl9FTlQJCQkJQklUKDEpDQo+PiArLyogSW50ZXJydXB0IG9uIHNob3J0IHBh Y2tldC4gKi8NCj4+ICsjZGVmaW5lIFRSQl9JU1AJCQkJQklUKDIpDQo+PiArLyogU2V0IFBDSWUg bm8gc25vb3AgYXR0cmlidXRlLiAqLw0KPj4gKyNkZWZpbmUgVFJCX05PX1NOT09QCQkJQklUKDMp DQo+PiArLyogQ2hhaW4gbXVsdGlwbGUgVFJCcyBpbnRvIGEgVEQuICovDQo+PiArI2RlZmluZSBU UkJfQ0hBSU4JCQlCSVQoNCkNCj4+ICsvKiBJbnRlcnJ1cHQgb24gY29tcGxldGlvbi4gKi8NCj4+ ICsjZGVmaW5lIFRSQl9JT0MJCQkJQklUKDUpDQo+PiArLyogVGhlIGJ1ZmZlciBwb2ludGVyIGNv bnRhaW5zIGltbWVkaWF0ZSBkYXRhLiAqLw0KPj4gKyNkZWZpbmUgVFJCX0lEVAkJCQlCSVQoNikN Cj4+ICsvKiAwIC0gTlJEWSBkdXJpbmcgZGF0YSBzdGFnZSwgMSAtIE5SRFkgZHVyaW5nIHN0YXR1 cyBzdGFnZSAob25seSBjb250cm9sKS4gKi8NCj4+ICsjZGVmaW5lIFRSQl9TVEFUCQkJQklUKDcp DQo+PiArLyogQmxvY2sgRXZlbnQgSW50ZXJydXB0LiAqLw0KPj4gKyNkZWZpbmUgVFJCX0JFSQkJ CQlCSVQoOSkNCj4+ICsNCj4+ICsvKiBDb250cm9sIHRyYW5zZmVyIFRSQiBzcGVjaWZpYyBmaWVs ZHMuICovDQo+PiArI2RlZmluZSBUUkJfRElSX0lOCQkJQklUKDE2KQ0KPj4gKw0KPj4gKy8qIFRS QiBiaXQgbWFzayBpbiBEYXRhIFN0YWdlIFRSQiAqLw0KPj4gKyNkZWZpbmUgVFJCX1NFVFVQSURf QklUTUFTSwkJR0VOTUFTSyg5LCA4KQ0KPj4gKyNkZWZpbmUgVFJCX1NFVFVQSUQocCkJCQkoKHAp IDw8IDgpDQo+PiArI2RlZmluZSBUUkJfU0VUVVBJRF9UT19UWVBFKHApCQkoKChwKSAmIFRSQl9T RVRVUElEX0JJVE1BU0spID4+IDgpDQo+PiArDQo+PiArI2RlZmluZSBUUkJfU0VUVVBfU1BFRURJ RF9VU0IzCQkweDENCj4+ICsjZGVmaW5lIFRSQl9TRVRVUF9TUEVFRElEX1VTQjIJCTB4MA0KPj4g KyNkZWZpbmUgVFJCX1NFVFVQX1NQRUVESUQocCkJCSgocCkgJiAoMSA8PCA3KSkNCj4+ICsNCj4+ ICsjZGVmaW5lIFRSQl9TRVRVUFNUQVRfQUNLCQkweDENCj4+ICsjZGVmaW5lIFRSQl9TRVRVUFNU QVRfU1RBTEwJCTB4MA0KPj4gKyNkZWZpbmUgVFJCX1NFVFVQU1RBVChwKQkJKChwKSA8PCA2KQ0K Pj4gKw0KPj4gKy8qIElzb2Nocm9ub3VzIFRSQiBzcGVjaWZpYyBmaWVsZHMgKi8NCj4+ICsjZGVm aW5lIFRSQl9TSUEJCQkJQklUKDMxKQ0KPj4gKyNkZWZpbmUgVFJCX0ZSQU1FX0lEKHApCQkJKCgo cCkgPDwgMjApICYgR0VOTUFTSygzMCwgMjApKQ0KPj4gKw0KPj4gK3N0cnVjdCBjZG5zcF9nZW5l cmljX3RyYiB7DQo+PiArCV9fbGUzMiBmaWVsZFs0XTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3VuaW9u IGNkbnNwX3RyYiB7DQo+PiArCXN0cnVjdCBjZG5zcF9saW5rX3RyYiBsaW5rOw0KPj4gKwlzdHJ1 Y3QgY2Ruc3BfdHJhbnNmZXJfZXZlbnQgdHJhbnNfZXZlbnQ7DQo+PiArCXN0cnVjdCBjZG5zcF9l dmVudF9jbWQgZXZlbnRfY21kOw0KPj4gKwlzdHJ1Y3QgY2Ruc3BfZ2VuZXJpY190cmIgZ2VuZXJp YzsNCj4+ICt9Ow0KPj4gKw0KPj4gKy8qIFRSQiBiaXQgbWFzay4gKi8NCj4+ICsjZGVmaW5lIFRS Ql9UWVBFX0JJVE1BU0sJR0VOTUFTSygxNSwgMTApDQo+PiArI2RlZmluZSBUUkJfVFlQRShwKQkJ KChwKSA8PCAxMCkNCj4+ICsjZGVmaW5lIFRSQl9GSUVMRF9UT19UWVBFKHApCSgoKHApICYgVFJC X1RZUEVfQklUTUFTSykgPj4gMTApDQo+PiArDQo+PiArLyogVFJCIHR5cGUgSURzLiAqLw0KPj4g Ky8qIGJ1bGssIGludGVycnVwdCwgaXNvYyBzY2F0dGVyL2dhdGhlciwgYW5kIGNvbnRyb2wgZGF0 YSBzdGFnZS4gKi8NCj4+ICsjZGVmaW5lIFRSQl9OT1JNQUwJCTENCj4+ICsvKiBTZXR1cCBTdGFn ZSBmb3IgY29udHJvbCB0cmFuc2ZlcnMuICovDQo+PiArI2RlZmluZSBUUkJfU0VUVVAJCTINCj4+ ICsvKiBEYXRhIFN0YWdlIGZvciBjb250cm9sIHRyYW5zZmVycy4gKi8NCj4+ICsjZGVmaW5lIFRS Ql9EQVRBCQkzDQo+PiArLyogU3RhdHVzIFN0YWdlIGZvciBjb250cm9sIHRyYW5zZmVycy4gKi8N Cj4+ICsjZGVmaW5lIFRSQl9TVEFUVVMJCTQNCj4+ICsvKiBJU09DIHRyYW5zZmVycy4gKi8NCj4+ ICsjZGVmaW5lIFRSQl9JU09DCQk1DQo+PiArLyogVFJCIGZvciBsaW5raW5nIHJpbmcgc2VnbWVu dHMuICovDQo+PiArI2RlZmluZSBUUkJfTElOSwkJNg0KPj4gKyNkZWZpbmUgVFJCX0VWRU5UX0RB VEEJCTcNCj4+ICsvKiBUcmFuc2ZlciBSaW5nIE5vLW9wIChub3QgZm9yIHRoZSBjb21tYW5kIHJp bmcpLiAqLw0KPj4gKyNkZWZpbmUgVFJCX1RSX05PT1AJCTgNCj4+ICsNCj4+ICsvKiBDb21tYW5k IFRSQnMgKi8NCj4+ICsvKiBFbmFibGUgU2xvdCBDb21tYW5kLiAqLw0KPj4gKyNkZWZpbmUgVFJC X0VOQUJMRV9TTE9UCQk5DQo+PiArLyogRGlzYWJsZSBTbG90IENvbW1hbmQuICovDQo+PiArI2Rl ZmluZSBUUkJfRElTQUJMRV9TTE9UCTEwDQo+PiArLyogQWRkcmVzcyBEZXZpY2UgQ29tbWFuZC4g Ki8NCj4+ICsjZGVmaW5lIFRSQl9BRERSX0RFVgkJMTENCj4+ICsvKiBDb25maWd1cmUgRW5kcG9p bnQgQ29tbWFuZC4gKi8NCj4+ICsjZGVmaW5lIFRSQl9DT05GSUdfRVAJCTEyDQo+PiArLyogRXZh bHVhdGUgQ29udGV4dCBDb21tYW5kLiAqLw0KPj4gKyNkZWZpbmUgVFJCX0VWQUxfQ09OVEVYVAkx Mw0KPj4gKy8qIFJlc2V0IEVuZHBvaW50IENvbW1hbmQuICovDQo+PiArI2RlZmluZSBUUkJfUkVT RVRfRVAJCTE0DQo+PiArLyogU3RvcCBUcmFuc2ZlciBSaW5nIENvbW1hbmQuICovDQo+PiArI2Rl ZmluZSBUUkJfU1RPUF9SSU5HCQkxNQ0KPj4gKy8qIFNldCBUcmFuc2ZlciBSaW5nIERlcXVldWUg UG9pbnRlciBDb21tYW5kLiAqLw0KPj4gKyNkZWZpbmUgVFJCX1NFVF9ERVEJCTE2DQo+PiArLyog UmVzZXQgRGV2aWNlIENvbW1hbmQuICovDQo+PiArI2RlZmluZSBUUkJfUkVTRVRfREVWCQkxNw0K Pj4gKy8qIEZvcmNlIEV2ZW50IENvbW1hbmQgKG9wdCkuICovDQo+PiArI2RlZmluZSBUUkJfRk9S Q0VfRVZFTlQJCTE4DQo+PiArLyogRm9yY2UgSGVhZGVyIENvbW1hbmQgLSBnZW5lcmF0ZSBhIHRy YW5zYWN0aW9uIG9yIGxpbmsgbWFuYWdlbWVudCBwYWNrZXQuICovDQo+PiArI2RlZmluZSBUUkJf Rk9SQ0VfSEVBREVSCTIyDQo+PiArLyogTm8tb3AgQ29tbWFuZCAtIG5vdCBmb3IgdHJhbnNmZXIg cmluZ3MuICovDQo+PiArI2RlZmluZSBUUkJfQ01EX05PT1AJCTIzDQo+PiArLyogVFJCIElEcyAy NC0zMSByZXNlcnZlZC4gKi8NCj4+ICsNCj4+ICsvKiBFdmVudCBUUkJTLiAqLw0KPj4gKy8qIFRy YW5zZmVyIEV2ZW50LiAqLw0KPj4gKyNkZWZpbmUgVFJCX1RSQU5TRkVSCQkzMg0KPj4gKy8qIENv bW1hbmQgQ29tcGxldGlvbiBFdmVudC4gKi8NCj4+ICsjZGVmaW5lIFRSQl9DT01QTEVUSU9OCQkz Mw0KPj4gKy8qIFBvcnQgU3RhdHVzIENoYW5nZSBFdmVudC4gKi8NCj4+ICsjZGVmaW5lIFRSQl9Q T1JUX1NUQVRVUwkJMzQNCj4+ICsvKiBEZXZpY2UgQ29udHJvbGxlciBFdmVudC4gKi8NCj4+ICsj ZGVmaW5lIFRSQl9IQ19FVkVOVAkJMzcNCj4+ICsvKiBNRklOREVYIFdyYXAgRXZlbnQgLSBtaWNy b2ZyYW1lIGNvdW50ZXIgd3JhcHBlZC4gKi8NCj4+ICsjZGVmaW5lIFRSQl9NRklOREVYX1dSQVAJ MzkNCj4+ICsvKiBUUkIgSURzIDQwLTQ3IHJlc2VydmVkLiAqLw0KPj4gKy8qIEVuZHBvaW50IE5v dCBSZWFkeSBFdmVudC4gKi8NCj4+ICsjZGVmaW5lIFRSQl9FTkRQT0lOVF9OUkRZCTQ4DQo+PiAr LyogVFJCIElEcyA0OS01MyByZXNlcnZlZC4gKi8NCj4+ICsvKiBIYWx0IEVuZHBvaW50IENvbW1h bmQuICovDQo+PiArI2RlZmluZSBUUkJfSEFMVF9FTkRQT0lOVAk1NA0KPj4gKy8qIERvb3JiZWxs IE92ZXJmbG93IEV2ZW50LiAqLw0KPj4gKyNkZWZpbmUgVFJCX0RSQl9PVkVSRkxPVwk1Nw0KPj4g Ky8qIEZsdXNoIEVuZHBvaW50IENvbW1hbmQuICovDQo+PiArI2RlZmluZSBUUkJfRkxVU0hfRU5E UE9JTlQJNTgNCj4+ICsNCj4+ICsjZGVmaW5lIFRSQl9UWVBFX0xJTksoeCkJKCgoeCkgJiBUUkJf VFlQRV9CSVRNQVNLKSA9PSBUUkJfVFlQRShUUkJfTElOSykpDQo+PiArI2RlZmluZSBUUkJfVFlQ RV9MSU5LX0xFMzIoeCkJKCgoeCkgJiBjcHVfdG9fbGUzMihUUkJfVFlQRV9CSVRNQVNLKSkgPT0g XA0KPj4gKwkJCQkJY3B1X3RvX2xlMzIoVFJCX1RZUEUoVFJCX0xJTkspKSkNCj4+ICsjZGVmaW5l IFRSQl9UWVBFX05PT1BfTEUzMih4KQkoKCh4KSAmIGNwdV90b19sZTMyKFRSQl9UWVBFX0JJVE1B U0spKSA9PSBcDQo+PiArCQkJCQljcHVfdG9fbGUzMihUUkJfVFlQRShUUkJfVFJfTk9PUCkpKQ0K Pj4gKw0KPj4gKy8qDQo+PiArICogVFJCU19QRVJfU0VHTUVOVCBtdXN0IGJlIGEgbXVsdGlwbGUg b2YgNC4NCj4+ICsgKiBUaGUgY29tbWFuZCByaW5nIGlzIDY0LWJ5dGUgYWxpZ25lZCwgc28gaXQg bXVzdCBhbHNvIGJlIGdyZWF0ZXIgdGhhbiAxNi4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFRSQlNf UEVSX1NFR01FTlQJCTI1Ng0KPj4gKyNkZWZpbmUgVFJCU19QRVJfRVZFTlRfU0VHTUVOVAkJMjU2 DQo+PiArI2RlZmluZSBUUkJTX1BFUl9FVl9ERVFfVVBEQVRFCQkxMDANCj4+ICsjZGVmaW5lIFRS Ql9TRUdNRU5UX1NJWkUJCShUUkJTX1BFUl9TRUdNRU5UICogMTYpDQo+PiArI2RlZmluZSBUUkJf U0VHTUVOVF9TSElGVAkJKGlsb2cyKFRSQl9TRUdNRU5UX1NJWkUpKQ0KPj4gKy8qIFRSQiBidWZm ZXIgcG9pbnRlcnMgY2FuJ3QgY3Jvc3MgNjRLQiBib3VuZGFyaWVzLiAqLw0KPj4gKyNkZWZpbmUg VFJCX01BWF9CVUZGX1NISUZUCQkxNg0KPj4gKyNkZWZpbmUgVFJCX01BWF9CVUZGX1NJWkUJCUJJ VChUUkJfTUFYX0JVRkZfU0hJRlQpDQo+PiArLyogSG93IG11Y2ggZGF0YSBpcyBsZWZ0IGJlZm9y ZSB0aGUgNjRLQiBib3VuZGFyeT8gKi8NCj4+ICsjZGVmaW5lIFRSQl9CVUZGX0xFTl9VUF9UT19C T1VOREFSWShhZGRyKSAoVFJCX01BWF9CVUZGX1NJWkUgLSBcDQo+PiArCQkJCQkoKGFkZHIpICYg KFRSQl9NQVhfQlVGRl9TSVpFIC0gMSkpKQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBj ZG5zcF9zZWdtZW50IC0gc2VnbWVudCByZWxhdGVkIGRhdGEuDQo+PiArICogQHRyYnM6IEFycmF5 IG9mIFRyYW5zZmVyIFJlcXVlc3QgQmxvY2tzLg0KPj4gKyAqIEBuZXh0OiBQb2ludGVyIHRvIHRo ZSBuZXh0IHNlZ21lbnQuDQo+PiArICogQGRtYTogRE1BIGFkZHJlc3Mgb2YgY3VycmVudCBzZWdt ZW50Lg0KPj4gKyAqIEBib3VuY2VfZG1hOiBCb3VuY2UgIGJ1ZmZlciBETUEgYWRkcmVzcyAuDQo+ PiArICogQGJvdW5jZV9idWY6IEJvdW5jZSBidWZmZXIgdmlydHVhbCBhZGRyZXNzLg0KPj4gKyAq IGJvdW5jZV9vZmZzOiBCb3VuY2UgYnVmZmVyIG9mZnNldC4NCj4+ICsgKiBib3VuY2VfbGVuOiBC b3VuY2UgYnVmZmVyIGxlbmd0aC4NCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY2Ruc3Bfc2VnbWVudCB7 DQo+PiArCXVuaW9uIGNkbnNwX3RyYiAqdHJiczsNCj4+ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQg Km5leHQ7DQo+PiArCWRtYV9hZGRyX3QgZG1hOw0KPj4gKwkvKiBNYXggcGFja2V0IHNpemVkIGJv dW5jZSBidWZmZXIgZm9yIHRkLWZyYWdtYW50IGFsaWdubWVudCAqLw0KPj4gKwlkbWFfYWRkcl90 IGJvdW5jZV9kbWE7DQo+PiArCXZvaWQgKmJvdW5jZV9idWY7DQo+PiArCXVuc2lnbmVkIGludCBi b3VuY2Vfb2ZmczsNCj4+ICsJdW5zaWduZWQgaW50IGJvdW5jZV9sZW47DQo+PiArfTsNCj4+ICsN Cj4+ICsvKioNCj4+ICsgKiBzdHJ1Y3QgY2Ruc3BfdGQgLSBUcmFuc2ZlciBEZXNjcmlwdG9yIG9i amVjdC4NCj4+ICsgKiBAdGRfbGlzdDogVXNlZCBmb3IgYmluZGluZyBURCB3aXRoIGVwX3Jpbmct PnRkX2xpc3QuDQo+PiArICogQHByZXE6IFJlcXVlc3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVEQN Cj4+ICsgKiBAc3RhcnRfc2VnOiBTZWdtZW50IGNvbnRhaW5pbmcgdGhlIGZpcnN0X3RyYiBpbiBU RC4NCj4+ICsgKiBAZmlyc3RfdHJiOiBGaXJzdCBUUkIgZm9yIHRoaXMgVEQuDQo+PiArICogQGxh c3RfdHJiOiBMYXN0IFRSQiByZWxhdGVkIHdpdGggVEQuDQo+PiArICogQGJvdW5jZV9zZWc6IEJv dW5jZSBzZWdtZW50IGZvciB0aGlzIFRELg0KPj4gKyAqIEByZXF1ZXN0X2xlbmd0aF9zZXQ6IGFj dHVhbF9sZW5ndGggb2YgdGhlIHJlcXVlc3QgaGFzIGFscmVhZHkgYmVlbiBzZXQuDQo+PiArICog QGRyYmwgLSBURCBoYXMgYmVlbiBhZGRlZCB0byBIVyBzY2hlZHVsZXIgLSBvbmx5IGZvciBzdHJl YW0gY2FwYWJsZQ0KPj4gKyAqICAgICAgICAgZW5kcG9pbnRzLg0KPj4gKyAqLw0KPj4gK3N0cnVj dCBjZG5zcF90ZCB7DQo+PiArCXN0cnVjdCBsaXN0X2hlYWQgdGRfbGlzdDsNCj4+ICsJc3RydWN0 IGNkbnNwX3JlcXVlc3QgKnByZXE7DQo+PiArCXN0cnVjdCBjZG5zcF9zZWdtZW50ICpzdGFydF9z ZWc7DQo+PiArCXVuaW9uIGNkbnNwX3RyYiAqZmlyc3RfdHJiOw0KPj4gKwl1bmlvbiBjZG5zcF90 cmIgKmxhc3RfdHJiOw0KPj4gKwlzdHJ1Y3QgY2Ruc3Bfc2VnbWVudCAqYm91bmNlX3NlZzsNCj4+ ICsJYm9vbCByZXF1ZXN0X2xlbmd0aF9zZXQ7DQo+PiArCWJvb2wgZHJibDsNCj4+ICt9Ow0KPj4g Kw0KPj4gKy8qKg0KPj4gKyAqICBzdHJ1Y3QgY2Ruc3BfZGVxdWV1ZV9zdGF0ZSAtIE5ldyBkZXF1 ZXVlIHBvaW50ZXIgZm9yIFRyYW5zZmVyIFJpbmcuDQo+PiArICogQG5ld19kZXFfc2VnOiBOZXcg ZGVxdWV1ZSBzZWdtZW50Lg0KPj4gKyAqIEBuZXdfZGVxX3B0cjogTmV3IGRlcXVldWUgcG9pbnRl ci4NCj4+ICsgKiBAbmV3X2N5Y2xlX3N0YXRlOiBOZXcgY3ljbGUgc3RhdGUuDQo+PiArICogQHN0 cmVhbV9pZDogc3RyZWFtIGlkIGZvciB3aGljaCBuZXcgZGVxdWV1ZSBwb2ludGVyIGhhcyBiZWVu IHNlbGVjdGVkLg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBjZG5zcF9kZXF1ZXVlX3N0YXRlIHsNCj4+ ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQgKm5ld19kZXFfc2VnOw0KPj4gKwl1bmlvbiBjZG5zcF90 cmIgKm5ld19kZXFfcHRyOw0KPj4gKwlpbnQgbmV3X2N5Y2xlX3N0YXRlOw0KPj4gKwl1bnNpZ25l ZCBpbnQgc3RyZWFtX2lkOw0KPj4gK307DQo+PiArDQo+PiArZW51bSBjZG5zcF9yaW5nX3R5cGUg ew0KPj4gKwlUWVBFX0NUUkwgPSAwLA0KPj4gKwlUWVBFX0lTT0MsDQo+PiArCVRZUEVfQlVMSywN Cj4+ICsJVFlQRV9JTlRSLA0KPj4gKwlUWVBFX1NUUkVBTSwNCj4+ICsJVFlQRV9DT01NQU5ELA0K Pj4gKwlUWVBFX0VWRU5ULA0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+PiArICogc3RydWN0IGNk bnNwX3JpbmcgLSBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRyYW5zZmVyLCBjb21tYW5kIG9yIGV2 ZW50IHJpbmcuDQo+PiArICogQGZpcnN0X3NlZzogRmlyc3Qgc2VnbWVudCBvbiB0cmFuc2ZlciBy aW5nLg0KPj4gKyAqIEBsYXN0X3NlZzogTGFzdCBzZWdtZW50IG9uIHRyYW5zZmVyIHJpbmcuDQo+ PiArICogQGVucXVldWU6IFNXIGVucXVldWUgcG9pbnRlciBhZGRyZXNzLg0KPj4gKyAqIEBlbnFf c2VnOiBTVyBlbnF1ZXVlIHNlZ21lbnQgYWRkcmVzcy4NCj4+ICsgKiBAZGVxdWV1ZTogU1cgZGVx dWV1ZSBwb2ludGVyIGFkZHJlc3MuDQo+PiArICogQGRlcV9zZWc6IFNXIGRlcXVldWUgc2VnbWVu dCBhZGRyZXNzLg0KPj4gKyAqIEB0ZF9saXN0OiB0cmFuc2ZlciBkZXNjcmlwdG9yIGxpc3QgYXNz b2NpYXRlZCB3aXRoIHRoaXMgcmluZy4NCj4+ICsgKiBAY3ljbGVfc3RhdGU6IEN1cnJlbnQgY3lj bGUgYml0LiBXcml0ZSB0aGUgY3ljbGUgc3RhdGUgaW50byB0aGUgVFJCIGN5Y2xlDQo+PiArICog ICAgICAgICAgICAgICBmaWVsZCB0byBnaXZlIG93bmVyc2hpcCBvZiB0aGUgVFJCIHRvIHRoZSBk ZXZpY2UgY29udHJvbGxlcg0KPj4gKyAqICAgICAgICAgICAgICAgKGlmIHdlIGFyZSB0aGUgcHJv ZHVjZXIpIG9yIHRvIGNoZWNrIGlmIHdlIG93biB0aGUgVFJCDQo+PiArICogICAgICAgICAgICAg ICAoaWYgd2UgYXJlIHRoZSBjb25zdW1lcikuDQo+PiArICogQHN0cmVhbV9pZDogU3RyZWFtIGlk DQo+PiArICogQHN0cmVhbV9hY3RpdmU6IFN0cmVhbSBpcyBhY3RpdmUgLSBQUklNRSBwYWNrZXQg aGFzIGJlZW4gZGV0ZWN0ZWQuDQo+PiArICogQHN0cmVhbV9yZWplY3RlZDogVGhpcyByaW5nIGhh cyBiZWVuIHJlamVjdGVkIGJ5IGhvc3QuDQo+PiArICogQG51bV90ZHM6IE51bWJlciBvZiBURHMg YXNzb2NpYXRlZCB3aXRoIHJpbmcuDQo+PiArICogQG51bV9zZWdzOiBOdW1iZXIgb2Ygc2VnbWVu dHMuDQo+PiArICogQG51bV90cmJzX2ZyZWU6IE51bWJlciBvZiBmcmVlIFRSQnMgb24gdGhlIHJp bmcuDQo+PiArICogQGJvdW5jZV9idWZfbGVuOiBMZW5ndGggb2YgYm91bmNlIGJ1ZmZlci4NCj4+ ICsgKiBAdHlwZTogUmluZyB0eXBlIC0gZXZlbnQsIHRyYW5zZmVyLCBvciBjb21tYW5kIHJpbmcu DQo+PiArICogQGxhc3RfdGRfd2FzX3Nob3J0IC0gVEQgaXMgc2hvcnQgVEQuDQo+PiArICogQHRy Yl9hZGRyZXNzX21hcDogRm9yIG1hcHBpbmcgcGh5c2ljYWwgVFJCIGFkZHJlc3NlcyB0byBzZWdt ZW50cyBpbg0KPj4gKyAqICAgICAgICAgICAgICAgICAgIHN0cmVhbSByaW5ncy4NCj4+ICsgKi8N Cj4+ICtzdHJ1Y3QgY2Ruc3BfcmluZyB7DQo+PiArCXN0cnVjdCBjZG5zcF9zZWdtZW50ICpmaXJz dF9zZWc7DQo+PiArCXN0cnVjdCBjZG5zcF9zZWdtZW50ICpsYXN0X3NlZzsNCj4+ICsJdW5pb24g Y2Ruc3BfdHJiCSAqZW5xdWV1ZTsNCj4+ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQgKmVucV9zZWc7 DQo+PiArCXVuaW9uIGNkbnNwX3RyYgkgKmRlcXVldWU7DQo+PiArCXN0cnVjdCBjZG5zcF9zZWdt ZW50ICpkZXFfc2VnOw0KPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHRkX2xpc3Q7DQo+PiArCXUzMiBj eWNsZV9zdGF0ZTsNCj4+ICsJdW5zaWduZWQgaW50IHN0cmVhbV9pZDsNCj4+ICsJdW5zaWduZWQg aW50IHN0cmVhbV9hY3RpdmU7DQo+PiArCXVuc2lnbmVkIGludCBzdHJlYW1fcmVqZWN0ZWQ7DQo+ PiArCWludCBudW1fdGRzOw0KPj4gKwl1bnNpZ25lZCBpbnQgbnVtX3NlZ3M7DQo+PiArCXVuc2ln bmVkIGludCBudW1fdHJic19mcmVlOw0KPj4gKwl1bnNpZ25lZCBpbnQgYm91bmNlX2J1Zl9sZW47 DQo+PiArCWVudW0gY2Ruc3BfcmluZ190eXBlIHR5cGU7DQo+PiArCWJvb2wgbGFzdF90ZF93YXNf c2hvcnQ7DQo+PiArCXN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKnRyYl9hZGRyZXNzX21hcDsNCj4+ ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBjZG5zcF9lcnN0X2VudHJ5IC0gZXZl biByaW5nIHNlZ21lbnQgdGFibGUgZW50cnkgb2JqZWN0Lg0KPj4gKyAqIEBzZWdfYWRkcjogNjQt Yml0IGV2ZW50IHJpbmcgc2VnbWVudCBhZGRyZXNzLg0KPj4gKyAqIHNlZ19zaXplOiBOdW1iZXIg b2YgVFJCcyBpbiBzZWdtZW50LjsNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY2Ruc3BfZXJzdF9lbnRy eSB7DQo+PiArCV9fbGU2NCBzZWdfYWRkcjsNCj4+ICsJX19sZTMyIHNlZ19zaXplOw0KPj4gKwkv KiBTZXQgdG8gemVybyAqLw0KPj4gKwlfX2xlMzIgcnN2ZDsNCj4+ICt9Ow0KPj4gKw0KPj4gKy8q Kg0KPj4gKyAqIHN0cnVjdCBjZG5zcF9lcnN0IC0gZXZlbiByaW5nIHNlZ21lbnQgdGFibGUgZm9y IGV2ZW50IHJpbmcuDQo+PiArICogQGVudHJpZXM6IEFycmF5IG9mIGV2ZW50IHJpbmcgc2VnbWVu dHMNCj4+ICsgKiBAbnVtX2VudHJpZXM6IE51bWJlciBvZiBzZWdtZW50cyBpbiBlbnRyaWVzIGFy cmF5Lg0KPj4gKyAqIEBlcnN0X2RtYV9hZGRyOiBETUEgYWRkcmVzcyBmb3IgZW50cmllcyBhcnJh eS4NCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY2Ruc3BfZXJzdCB7DQo+PiArCXN0cnVjdCBjZG5zcF9l cnN0X2VudHJ5ICplbnRyaWVzOw0KPj4gKwl1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7DQo+PiAr CWRtYV9hZGRyX3QgZXJzdF9kbWFfYWRkcjsNCj4+ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAq IHN0cnVjdCBjZG5zcF9yZXF1ZXN0IC0gZXh0ZW5kZWQgZGV2aWNlIHNpZGUgcmVwcmVzZW50YXRp b24gb2YgdXNiX3JlcXVlc3QNCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCAu DQo+PiArICogQHRkOiBUcmFuc2ZlciBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJl cXVlc3QuDQo+PiArICogQHJlcXVlc3Q6IEdlbmVyaWMgdXNiX3JlcXVlc3Qgb2JqZWN0IGRlc2Ny aWJpbmcgc2luZ2xlIEkvTyByZXF1ZXN0Lg0KPj4gKyAqIEBsaXN0OiBVc2VkIHRvIGFkZGluZyBy ZXF1ZXN0IHRvIGVuZHBvaW50IHBlbmRpbmdfbGlzdC4NCj4+ICsgKiBAcGVwOiBFeHRlbmRlZCBy ZXByZXNlbnRhdGlvbiBvZiB1c2JfZXAgb2JqZWN0DQo+PiArICogQGVwbnVtOiBFbmRwb2ludCBu dW1iZXIgYXNzb2NpYXRlZCB3aXRoIHVzYiByZXF1ZXN0Lg0KPj4gKyAqIEBkaXJlY3Rpb246IEVu ZHBvaW50IGRpcmVjdGlvbiBmb3IgdXNiIHJlcXVlc3QuDQo+PiArICovDQo+PiArc3RydWN0IGNk bnNwX3JlcXVlc3Qgew0KPj4gKwlzdHJ1Y3QJY2Ruc3BfdGQgdGQ7DQo+PiArCXN0cnVjdCB1c2Jf cmVxdWVzdCByZXF1ZXN0Ow0KPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7DQo+PiArCXN0cnVj dCBjZG5zcF9lcAkgKnBlcDsNCj4+ICsJdTggZXBudW07DQo+PiArCXVuc2lnbmVkIGRpcmVjdGlv bjoxOw0KPj4gK307DQo+PiArDQo+PiArI2RlZmluZQlFUlNUX05VTV9TRUdTCTENCj4+ICsNCj4+ ICsvKiBTdGFnZXMgdXNlZCBkdXJpbmcgZW51bWVyYXRpb24gcHJvY2Vzcy4qLw0KPj4gK2VudW0g Y2Ruc3BfZXAwX3N0YWdlIHsNCj4+ICsJQ0ROU1BfU0VUVVBfU1RBR0UsDQo+PiArCUNETlNQX0RB VEFfU1RBR0UsDQo+PiArCUNETlNQX1NUQVRVU19TVEFHRSwNCj4+ICt9Ow0KPj4gKw0KPj4gKy8q Kg0KPj4gKyAqIHN0cnVjdCBjZG5zcF9wb3J0IC0gaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgZGV0 ZWN0ZWQgcG9ydHMuDQo+PiArICogQHBvcnRfbnVtOiBQb3J0IG51bWJlci4NCj4+ICsgKiBAZXhp c3Q6IEluZGljYXRlIGlmIHBvcnQgZXhpc3QuDQo+PiArICogbWFqX3JldjogTWFqb3IgcmV2aXNp b24uDQo+PiArICogbWluX3JldjogTWlub3IgcmV2aXNpb24uDQo+PiArICovDQo+PiArc3RydWN0 IGNkbnNwX3BvcnQgew0KPj4gKwlzdHJ1Y3QgY2Ruc3BfcG9ydF9yZWdzIF9faW9tZW0gKnJlZ3M7 DQo+PiArCXU4IHBvcnRfbnVtOw0KPj4gKwl1OCBleGlzdDsNCj4+ICsJdTggbWFqX3JldjsNCj4+ ICsJdTggbWluX3JldjsNCj4+ICt9Ow0KPj4gKw0KPj4gKyNkZWZpbmUgQ0ROU1BfRVhUX1BPUlRf TUFKT1IoeCkJCSgoKHgpID4+IDI0KSAmIDB4ZmYpDQo+PiArI2RlZmluZSBDRE5TUF9FWFRfUE9S VF9NSU5PUih4KQkJKCgoeCkgPj4gMTYpICYgMHhmZikNCj4+ICsjZGVmaW5lIENETlNQX0VYVF9Q T1JUX09GRih4KQkJKCh4KSAmIDB4ZmYpDQo+PiArI2RlZmluZSBDRE5TUF9FWFRfUE9SVF9DT1VO VCh4KQkJKCgoeCkgPj4gOCkgJiAweGZmKQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBj ZG5zcF9kZXZpY2UgLSByZXByZXNlbnQgVVNCIGRldmljZS4NCj4+ICsgKiBAZGV2OiBQb2ludGVy IHRvIGRldmljZSBzdHJ1Y3R1cmUgYXNzb2NpYXRlZCB3aGl0IHRoaXMgY29udHJvbGxlci4NCj4+ ICsgKiBAZ2FkZ2V0OiBEZXZpY2Ugc2lkZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGVyaXBoZXJh bCBjb250cm9sbGVyLg0KPj4gKyAqIEBnYWRnZXRfZHJpdmVyOiBQb2ludGVyIHRvIHRoZSBnYWRn ZXQgZHJpdmVyLg0KPj4gKyAqIEBpcnE6IElSUSBsaW5lIG51bWJlciB1c2VkIGJ5IGRldmljZSBz aWRlLg0KPj4gKyAqIEByZWdzOklPIGRldmljZSBtZW1vcnkuDQo+PiArICogQGNhcF9yZWdzOiBD YXBhYmlsaXR5IHJlZ2lzdGVycy4NCj4+ICsgKiBAb3BfcmVnczogT3BlcmF0aW9uYWwgcmVnaXN0 ZXJzLg0KPj4gKyAqIEBydW5fcmVnczogUnVudGltZSByZWdpc3RlcnMuDQo+PiArICogQGRiYTog RGV2aWNlIGJhc2UgYWRkcmVzcyByZWdpc3Rlci4NCj4+ICsgKiBAaXJfc2V0OiBDdXJyZW50IGlu dGVycnVwdGVyIHJlZ2lzdGVyIHNldC4NCj4+ICsgKiBAcG9ydDIwX3JlZ3M6IFBvcnQgMi4wIFBl cmlwaGVyYWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMuDQo+PiArICogQHBvcnQzeF9yZWdzOiBV U0IzLnggUG9ydCBQZXJpcGhlcmFsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzLg0KPj4gKyAqIEBo Y3NfcGFyYW1zMTogQ2FjaGVkIHJlZ2lzdGVyIGNvcGllcyBvZiByZWFkLW9ubHkgSENTUEFSQU1T MQ0KPj4gKyAqIEBoY2NfcGFyYW1zOiBDYWNoZWQgcmVnaXN0ZXIgY29waWVzIG9mIHJlYWQtb25s eSBIQ0NQQVJBTVMxDQo+PiArICogQHJldl9jYXA6IENvbnRyb2xsZXIgY2FwYWJpbGl0eS4NCj4+ ICsgKiBAc2V0dXA6IFRlbXBvcmFyeSBidWZmZXIgZm9yIHNldHVwIHBhY2tldC4NCj4+ICsgKiBA ZXAwX3ByZXE6IEludGVybmFsIGFsbG9jYXRlZCByZXF1ZXN0IHVzZWQgZHVyaW5nIGVudW1lcmF0 aW9uLg0KPj4gKyAqIEBlcDBfc3RhZ2U6IGVwMCBzdGFnZSBkdXJpbmcgZW51bWVyYXRpb24gcHJv Y2Vzcy4NCj4+ICsgKiBAdGhyZWVfc3RhZ2Vfc2V0dXA6IFRocmVlIHN0YXRlIG9yIHR3byBzdGF0 ZSBzZXR1cC4NCj4+ICsgKiBAZXAwX2V4cGVjdF9pbjogRGF0YSBJTiBleHBlY3RlZCBmb3IgY29u dHJvbCB0cmFuc2Zlci4NCj4+ICsgKiBAc2V0dXBfaWQ6IFNldHVwIGlkZW50aWZpZXIuDQo+PiAr ICogQHNldHVwX3NwZWVkIC0gU3BlZWQgZGV0ZWN0ZWQgZm9yIGN1cnJlbnQgU0VUVVAgcGFja2V0 Lg0KPj4gKyAqIEBzZXR1cF9idWY6IEJ1ZmZlciBmb3IgU0VUVVAgcGFja2V0Lg0KPj4gKyAqIEBk ZXZpY2VfYWRkcmVzczogQ3VycmVudCBkZXZpY2UgYWRkcmVzcy4NCj4+ICsgKiBAbWF5X3dha2V1 cDogcmVtb3RlIHdha2V1cCBlbmFibGVkL2Rpc2FibGVkLg0KPj4gKyAqIEBsb2NrOiBMb2NrIHVz ZWQgaW4gaW50ZXJydXB0IHRocmVhZCBjb250ZXh0Lg0KPj4gKyAqIEBoY2lfdmVyc2lvbjogZGV2 aWNlIGNvbnRyb2xsZXIgdmVyc2lvbi4NCj4+ICsgKiBAZGNiYWE6IERldmljZSBjb250ZXh0IGJh c2UgYWRkcmVzcyBhcnJheS4NCj4+ICsgKiBAY21kX3Jpbmc6IENvbW1hbmQgcmluZy4NCj4+ICsg KiBAY21kOiBSZXByZXNlbnQgYWxsIHdoYXQgaXMgbmVlZGVkIHRvIGlzc3VlIGNvbW1hbmQgb24g Q29tbWFuZCBSaW5nLg0KPj4gKyAqIEBldmVudF9yaW5nOiBFdmVudCByaW5nLg0KPj4gKyAqIEBl cnN0OiBFdmVudCBSaW5nIFNlZ21lbnQgdGFibGUNCj4+ICsgKiBAc2xvdF9pZDogQ3VycmVudCBT bG90IElELiBTaG91bGQgYmUgMCBvciAxLg0KPj4gKyAqIEBvdXRfY3R4OiBPdXRwdXQgY29udGV4 dC4NCj4+ICsgKiBAaW5fY3R4OiBJbnB1dCBjb250ZXh0Lg0KPj4gKyAqIEBlcHM6IGFycmF5IG9m IGVuZHBvaW50cyBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIGRldmljZS4NCj4+ICsgKiBAdXNiMl9o d19scG1fY2FwYWJsZTogaGFyZHdhcmUgbHBtIGlzIGVuYWJsZWQ7DQo+PiArICogQHUxX2FsbG93 ZWQ6IEFsbG93IGRldmljZSB0cmFuc2l0aW9uIHRvIFUxIHN0YXRlLg0KPj4gKyAqIEB1Ml9hbGxv d2VkOiBBbGxvdyBkZXZpY2UgdHJhbnNpdGlvbiB0byBVMiBzdGF0ZQ0KPj4gKyAqIEBkZXZpY2Vf cG9vbDogRE1BIHBvb2wgZm9yIGFsbG9jYXRpbmcgaW5wdXQgYW5kIG91dHB1dCBjb250ZXh0Lg0K Pj4gKyAqIEBzZWdtZW50X3Bvb2w6IERNQSBwb29sIGZvciBhbGxvY2F0aW5nIG5ldyBzZWdtZW50 cy4NCj4+ICsgKiBAY2Ruc3Bfc3RhdGU6IEN1cnJlbnQgc3RhdGUgb2YgY29udHJvbGxlci4NCj4+ ICsgKiBAbGlua19zdGF0ZTogQ3VycmVudCBsaW5rIHN0YXRlLg0KPj4gKyAqIEB1c2IyX3BvcnQg LSBQb3J0IFVTQiAyLjAuDQo+PiArICogQHVzYjNfcG9ydCAtIFBvcnQgVVNCIDMuMC4NCj4+ICsg KiBAYWN0aXZlX3BvcnQgLSBDdXJyZW50IHNlbGVjdGVkIFBvcnQuDQo+PiArICogQHRlc3RfbW9k ZTogc2VsZWN0ZWQgVGVzdCBNb2RlLg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBjZG5zcF9kZXZpY2Ug ew0KPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+PiArCXN0cnVjdCB1c2JfZ2FkZ2V0IGdhZGdl dDsNCj4+ICsJc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyICpnYWRnZXRfZHJpdmVyOw0KPj4gKwl1 bnNpZ25lZCBpbnQgaXJxOw0KPj4gKwl2b2lkIF9faW9tZW0gKnJlZ3M7DQo+PiArDQo+PiArCS8q IFJlZ2lzdGVycyBtYXAgKi8NCj4+ICsJc3RydWN0IGNkbnNwX2NhcF9yZWdzIF9faW9tZW0gKmNh cF9yZWdzOw0KPj4gKwlzdHJ1Y3QgY2Ruc3Bfb3BfcmVncyBfX2lvbWVtICpvcF9yZWdzOw0KPj4g KwlzdHJ1Y3QgY2Ruc3BfcnVuX3JlZ3MgX19pb21lbSAqcnVuX3JlZ3M7DQo+PiArCXN0cnVjdCBj ZG5zcF9kb29yYmVsbF9hcnJheSBfX2lvbWVtICpkYmE7DQo+PiArCXN0cnVjdAljZG5zcF9pbnRy X3JlZyBfX2lvbWVtICppcl9zZXQ7DQo+PiArCXN0cnVjdCBjZG5zcF8yMHBvcnRfY2FwIF9faW9t ZW0gKnBvcnQyMF9yZWdzOw0KPj4gKwlzdHJ1Y3QgY2Ruc3BfM3hwb3J0X2NhcCBfX2lvbWVtICpw b3J0M3hfcmVnczsNCj4+ICsNCj4+ICsJLyogQ2FjaGVkIHJlZ2lzdGVyIGNvcGllcyBvZiByZWFk LW9ubHkgQ0ROU1AgZGF0YSAqLw0KPj4gKwlfX3UzMiBoY3NfcGFyYW1zMTsNCj4+ICsJX191MzIg aGNzX3BhcmFtczM7DQo+PiArCV9fdTMyIGhjY19wYXJhbXM7DQo+PiArCXN0cnVjdCBjZG5zcF9y ZXZfY2FwIHJldl9jYXA7DQo+PiArCS8qIExvY2sgdXNlZCBpbiBpbnRlcnJ1cHQgdGhyZWFkIGNv bnRleHQuICovDQo+PiArCXNwaW5sb2NrX3QgbG9jazsNCj4+ICsJc3RydWN0IHVzYl9jdHJscmVx dWVzdCBzZXR1cDsNCj4+ICsJc3RydWN0IGNkbnNwX3JlcXVlc3QgZXAwX3ByZXE7DQo+PiArCWVu dW0gY2Ruc3BfZXAwX3N0YWdlIGVwMF9zdGFnZTsNCj4+ICsJdTggdGhyZWVfc3RhZ2Vfc2V0dXA7 DQo+PiArCXU4IGVwMF9leHBlY3RfaW47DQo+PiArCXU4IHNldHVwX2lkOw0KPj4gKwl1OCBzZXR1 cF9zcGVlZDsNCj4+ICsJdm9pZCAqc2V0dXBfYnVmOw0KPj4gKwl1OCBkZXZpY2VfYWRkcmVzczsN Cj4+ICsJaW50IG1heV93YWtldXA7DQo+PiArCXUxNiBoY2lfdmVyc2lvbjsNCj4+ICsNCj4+ICsJ LyogZGF0YSBzdHJ1Y3R1cmVzICovDQo+PiArCXN0cnVjdCBjZG5zcF9kZXZpY2VfY29udGV4dF9h cnJheSAqZGNiYWE7DQo+PiArCXN0cnVjdCBjZG5zcF9yaW5nICpjbWRfcmluZzsNCj4+ICsJc3Ry dWN0IGNkbnNwX2NvbW1hbmQgY21kOw0KPj4gKwlzdHJ1Y3QgY2Ruc3BfcmluZyAqZXZlbnRfcmlu ZzsNCj4+ICsJc3RydWN0IGNkbnNwX2Vyc3QgZXJzdDsNCj4+ICsJaW50IHNsb3RfaWQ7DQo+PiAr DQo+PiArCS8qDQo+PiArCSAqIENvbW1hbmRzIHRvIHRoZSBoYXJkd2FyZSBhcmUgcGFzc2VkIGFu ICJpbnB1dCBjb250ZXh0IiB0aGF0DQo+PiArCSAqIHRlbGxzIHRoZSBoYXJkd2FyZSB3aGF0IHRv IGNoYW5nZSBpbiBpdHMgZGF0YSBzdHJ1Y3R1cmVzLg0KPj4gKwkgKiBUaGUgaGFyZHdhcmUgd2ls bCByZXR1cm4gY2hhbmdlcyBpbiBhbiAib3V0cHV0IGNvbnRleHQiIHRoYXQNCj4+ICsJICogc29m dHdhcmUgbXVzdCBhbGxvY2F0ZSBmb3IgdGhlIGhhcmR3YXJlLiAuDQo+PiArCSAqLw0KPj4gKwlz dHJ1Y3QgY2Ruc3BfY29udGFpbmVyX2N0eCBvdXRfY3R4Ow0KPj4gKwlzdHJ1Y3QgY2Ruc3BfY29u dGFpbmVyX2N0eCBpbl9jdHg7DQo+PiArCXN0cnVjdCBjZG5zcF9lcCBlcHNbQ0ROU1BfRU5EUE9J TlRTX05VTV07DQo+PiArCXU4IHVzYjJfaHdfbHBtX2NhcGFibGU6MTsNCj4+ICsJdTggdTFfYWxs b3dlZDoxOw0KPj4gKwl1OCB1Ml9hbGxvd2VkOjE7DQo+PiArDQo+PiArCS8qIERNQSBwb29scyAq Lw0KPj4gKwlzdHJ1Y3QgZG1hX3Bvb2wgKmRldmljZV9wb29sOw0KPj4gKwlzdHJ1Y3QgZG1hX3Bv b2wJKnNlZ21lbnRfcG9vbDsNCj4+ICsNCj4+ICsjZGVmaW5lIENETlNQX1NUQVRFX0hBTFRFRAkJ QklUKDEpDQo+PiArI2RlZmluZSBDRE5TUF9TVEFURV9EWUlORwkJQklUKDIpDQo+PiArI2RlZmlu ZSBDRE5TUF9TVEFURV9ESVNDT05ORUNUX1BFTkRJTkcJQklUKDMpDQo+PiArI2RlZmluZSBDRE5T UF9XQUtFVVBfUEVORElORwkJQklUKDQpDQo+PiArCXVuc2lnbmVkIGludCBjZG5zcF9zdGF0ZTsN Cj4+ICsJdW5zaWduZWQgaW50IGxpbmtfc3RhdGU7DQo+PiArDQo+PiArCXN0cnVjdCBjZG5zcF9w b3J0IHVzYjJfcG9ydDsNCj4+ICsJc3RydWN0IGNkbnNwX3BvcnQgdXNiM19wb3J0Ow0KPj4gKwlz dHJ1Y3QgY2Ruc3BfcG9ydCAqYWN0aXZlX3BvcnQ7DQo+PiArCXUxNiB0ZXN0X21vZGU7DQo+PiAr fTsNCj4+ICsNCj4+ICsjZW5kaWYgLyogX19MSU5VWF9DRE5TUF9HQURHRVRfSCAqLw0KPj4gLS0N Cj4+IDIuMTcuMQ0KPj4NCj4NCj4tLQ0KPg0KPlRoYW5rcywNCj5QZXRlciBDaGVuDQo=