Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp1343729rdb; Wed, 20 Sep 2023 06:47:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFsnLY0PsR6WtdcXqUOL5FOalgdk2zbN07/jcog7+nR8AiyzltWM5Vo7ozXZBBWuDYjEoXC X-Received: by 2002:a17:90a:b113:b0:26c:e606:f455 with SMTP id z19-20020a17090ab11300b0026ce606f455mr2662043pjq.36.1695217670113; Wed, 20 Sep 2023 06:47:50 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695217670; cv=pass; d=google.com; s=arc-20160816; b=iGh15zZtt/ZLHsytA5mcAH+G4QlY2B5EVvXEU9qsgsLyUz4x01BC2nCAFZ5YbgmTVP 2NcHY08EGq2TuevmIMqJtma6X7j96n1Q98OTlxQ6g3LKiDArWDNNwkr3kjd/2rD8iFjP rjcDqLsjJZyCexasFuZnRVpsV6I6uRr0VYMsj6WnnK4RRXcihGOpOn+4fj3frBMRWE0R TZKNe06I8rxJdoefWPNVFaynvCOwnX9PYInerIZnwx8UMA+yT+rmR9uVKueGQ4aFmDR0 IK0Q8aD3UId8f46O2xiu4JNAc+tOYXB1A0MQzAGBYZUWemjGgY5ZuXStCBCVMq+OvJs1 OwGA== 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; bh=1uQjb7Sx4f/Ni6P4qeicAXHjPFvd+WCD83ZMqGYkV7Q=; fh=7JUYoCsQvbrNcXTdqXTIlIcW21ozL9nqRZrPCvpLQCM=; b=fyulihIbMwZ8OZ9mOMDwJ+FbaDeMIRFuyync4Agj5WkYNStf9j+6FXGc0Zb/L7U2RH YnyJueUPbHGxJxoJIl/e134lvAvOld9kglJOjIdVMaSm0PcDbppccaulRWIZQB57lQzI NM42ak8fDCM3PcPU4WFIN8bCchHSGw/185/dtZJAOso5i8onMqMrNKXeQ7FrZSJ5lcGB zZDFNxtluSOek0H0S8eUZ5KKeDgblhfISilajXA5Hth97EyKNnW2uULxoqtQ0LeiYiSA Bl6NEat83/1KiY8vUBPyCHMbkqAxEl3fNWgZ10VkLqG16wdxBKUnmwlQwciVmNaZCpyf HoMA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@SILICOMLTD.onmicrosoft.com header.s=selector2-SILICOMLTD-onmicrosoft-com header.b=qGaXUtR0; arc=pass (i=1 spf=pass spfdomain=silicom-usa.com dkim=pass dkdomain=silicom-usa.com dmarc=pass fromdomain=silicom-usa.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id b13-20020a17090aa58d00b00274caaa057asi1557859pjq.42.2023.09.20.06.47.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 06:47:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@SILICOMLTD.onmicrosoft.com header.s=selector2-SILICOMLTD-onmicrosoft-com header.b=qGaXUtR0; arc=pass (i=1 spf=pass spfdomain=silicom-usa.com dkim=pass dkdomain=silicom-usa.com dmarc=pass fromdomain=silicom-usa.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id CC44E810C2D3; Wed, 20 Sep 2023 04:34:45 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234224AbjITLeh (ORCPT + 99 others); Wed, 20 Sep 2023 07:34:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232327AbjITLeg (ORCPT ); Wed, 20 Sep 2023 07:34:36 -0400 Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2125.outbound.protection.outlook.com [40.107.105.125]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AE7FA3; Wed, 20 Sep 2023 04:34:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hGrkhZ2YTfmu/xlzYo2mZ7ADaQuq8sZvChGa7IwNfpFBHlDm0qofaQRSh7OVgwy/RSAYh5bUtspUJPDe7rJFo1pqb5s0SKJ4rTkYq5faSPNvVL89xQvZGz0XMzVOm1ynyRBjkBCwuBEuVpU7GLxtINvxcf/ymheyN/R8Cjfxyg9y/0jejq6gIBCGZ81QKrKADAXmkIrAioQfmeNS/fguG4I5HYoK7+jnmaMjJGfcxIRD2RixXi/pHis/YbJWds1hz5BWxrUBxWt07Pnlc9ByxKGbdL9iH//ntPr+iDtW24yMZnItqfEKEuJFQHr0JLqjXJiCaEjEii63J+qd8Iunug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1uQjb7Sx4f/Ni6P4qeicAXHjPFvd+WCD83ZMqGYkV7Q=; b=UB9WO8ec42EtpZZ3RzgMyIoNBRYhsBLmH23XUXVr1YvUpYtA6fE6JqsQ7UxjCcTEb5JG5mXR3EZGkYvTj9rB8bZJ/4C/mMtS5jJt2WZLRFi2oafVybFFK388J6EYmju9VxYYGbzpZEgfqdCZTxNc1qjU/9tdAnSeztnDy5weVyRFv2YaN2cjH7O7jxrMdldTxEyrdJIrTHRAVqzWclbXik65u5jQ0PvMGs46YDXCx6dpZ050NOWB4aDatI35jG5GeYy5pCT6X6JNCpB9w8Qzrdt5QN3Yp6SchZcZrSJO8YrcqEaPt1SyxWwNnj7i4hMdFie+LclxCEzf7/dEIqWruQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silicom-usa.com; dmarc=pass action=none header.from=silicom-usa.com; dkim=pass header.d=silicom-usa.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=SILICOMLTD.onmicrosoft.com; s=selector2-SILICOMLTD-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1uQjb7Sx4f/Ni6P4qeicAXHjPFvd+WCD83ZMqGYkV7Q=; b=qGaXUtR0Ekvi9cuqQzGkafPuE//z9UUBr7nI1d1n63n6LhxPunV+WFNrzkaSxkPv+ewsLyqp1B9fdTT2tuD73bS90TN116xidIWL7fp0OKO0KbCLeY2VYDWs0Ci052xAmy/nvizO1Dmj2U/xacKsNj8GQthFdSBhVn7fPH/9Vmc= Received: from PA4PR04MB9222.eurprd04.prod.outlook.com (2603:10a6:102:2a1::18) by PAXPR04MB9277.eurprd04.prod.outlook.com (2603:10a6:102:2b9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.28; Wed, 20 Sep 2023 11:33:59 +0000 Received: from PA4PR04MB9222.eurprd04.prod.outlook.com ([fe80::edf6:1dbb:5096:274d]) by PA4PR04MB9222.eurprd04.prod.outlook.com ([fe80::edf6:1dbb:5096:274d%3]) with mapi id 15.20.6792.026; Wed, 20 Sep 2023 11:33:59 +0000 From: Huibin Shi To: Hans de Goede , Henry Shi , "hbshi69@hotmail.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "x86@kernel.org" , "hpa@zytor.com" , "markgross@kernel.org" , "jdelvare@suse.com" , "linux@roeck-us.net" , "linux-kernel@vger.kernel.org" , "platform-driver-x86@vger.kernel.org" , "linux-hwmon@vger.kernel.org" CC: "hb_shi2003@yahoo.com" , Wen Wang Subject: RE: [PATCH v7] platform/x86: Add Silicom Platform Driver Thread-Topic: [PATCH v7] platform/x86: Add Silicom Platform Driver Thread-Index: AQHZ6z63frC4E2Kp20i+s3jeoYhwb7AjaXoAgAAr8RA= Date: Wed, 20 Sep 2023 11:33:59 +0000 Message-ID: References: <20230919211650.25325-1-henryshi2018@gmail.com> <69a6279d-a191-e294-3db2-8041c4208783@redhat.com> In-Reply-To: <69a6279d-a191-e294-3db2-8041c4208783@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=silicom-usa.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR04MB9222:EE_|PAXPR04MB9277:EE_ x-ms-office365-filtering-correlation-id: 4d4e44f8-4c5d-489b-c6a8-08dbb9cd7b4d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: duXeDNrGxfScfWc8UMSeGtaQ6pvWJbd+I23QkINU2bPREd0xizPE9f8O0Pl4L2nmpRJt7un2+zAMQagR3TKbNza/sav1Rie+N64od4ZKVt48NEpVk6FSyUq+2YE86J9ERfr/C2q8nIGx1PT9UpOKnamej7jD7Kr8fmfznf+my1TIO3nyt/YUpZLJUBRNd+AKEs/XEzLlsagrAgZZdUWCfS05s+Nar+EgWDGYAkbqkA9g/61MOlc3QJvPJfch+H+XuCtPfleLsgy46l2Tu/VgPyLaTudAJ8fql1s8toQzXoFmC2+AZtzEkSw212GNaTkkU3odgpagJoMK1SXI0t2YBezUJNB9wfdQHHF2KcVJUreKtNOH/8F/m5rfEJi02YuB5knUaR7bfF7wl/babIsiS+3UeC6ZUmRch/ROjWHIzBJGHCW04eS5NLXxeseL9KkPipfzOuoZvxpuL0ZnVzynea11iw66AWpqlj+Q6Sa0EetaCGIhIbkZWcJaRfEjZlYlFldcGkgClnRfgS+U0Ip10kS+iyxIW+1TAglRC1rXUNiVlk9yEyMveQMsD/lvKR1mCtWNRzY9/iviV2FL8JDd45UHPFZrt6wWypWNXk+gqbJ4cwdKMF3C1wO7HbvkDu4CDHH/yYWO/npb7wX/xTEqsg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9222.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(396003)(376002)(366004)(39850400004)(346002)(186009)(1800799009)(451199024)(2906002)(5660300002)(7416002)(52536014)(55016003)(110136005)(41300700001)(76116006)(66446008)(54906003)(66946007)(66476007)(66556008)(316002)(30864003)(64756008)(478600001)(45080400002)(4326008)(8676002)(8936002)(71200400001)(7696005)(6506007)(9686003)(53546011)(107886003)(66574015)(921005)(33656002)(122000001)(86362001)(38100700002)(38070700005)(83380400001)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NzVZL3FUUUFlZE52UmJpTHViVTFoWDFBdGxRQ1gxUDdxY2thOXRXUi83aHdi?= =?utf-8?B?MUQ5NGtPM004Z0ZuSmxoYllPL3RBdUdrcTdkWStNUUFCbFVKT3BYQlJ0WnZE?= =?utf-8?B?L2Rla0NDbnhpS3RaMXVPMWJZVzFaQmMzc3RoeE1sdmZYRlJVYU9QMHNHK2ln?= =?utf-8?B?NGlncm5pQlVDV3UycTJ2MnNDcXZ0azNhL0xmSlVuTkFZRVNiVmhoMDViWGQ5?= =?utf-8?B?MHNDazhEK05mempoSUlMNXcrRTFsTEpkaUpRL3hEYkZ1NWZaeGxtdzlkaVNQ?= =?utf-8?B?MlhHNXlmL0FoZHlWWHVMcHMrTTlwVThDdTlxa1B5ekIwQWs4U1BhaTJEbFhM?= =?utf-8?B?WUgxTUtZQTdSaXN0Y2tYUnQyUVhlMlBnSXo2TXZ4WTZEbVg1MjE5YkVIekg5?= =?utf-8?B?WjJUaE0vOG5kN3MwcjFUY2txSXg4NmRtNFpJUFoycTBjZnYycXZVTlEzcUtz?= =?utf-8?B?V3RMdlFBbGJHbTR5NDJicjJFSjJwaFVQeDJsRnp0dmhTNGx2b2ZqVHVidEpt?= =?utf-8?B?TlQ1aTNhak1aUEhVNmtOcVRsaWJCU0dpK0wveWNNanFYK0ZkVm5BMWVjTTBi?= =?utf-8?B?WkRGWHJHK3Ezd1Z6Q0h3aVRRdXNQcU9FTUNRMCtndHloTzRJb1lpTmY0NmRm?= =?utf-8?B?MzZiTE15TVN5K2huR0psL2ZZOXlyV0lsdFJqbFNuWmk4YjgvUkMrLzhpbVkv?= =?utf-8?B?S0NIdlVVV2pieVpvSHU3RWd6S1VTRGRpZWI2bVZ1NWp2MjkrNzZSYUx4U3FW?= =?utf-8?B?QTZ2MVdJMERiaUJoeTUyeXhBTFE3bHdOdnoxOUFNR1BVVi8ycit1OFZrL20w?= =?utf-8?B?UHlNY1JzMlczSnEyeVhITWJqUmY3am1TT2dHdGVscFNNZHo1SkpEOXc4QlI1?= =?utf-8?B?M1RwV29PNEd5ZGZKZWR1Q0pseDNpQ3BxUjdxQmlwZDQ5Y0VTbEsrdCs3TzJ5?= =?utf-8?B?MldORGFhWFVDNEpxaGpMdnB4TVorS1JlZUFmempaOTZtbGE3VVVFbWEvWDUv?= =?utf-8?B?L1VwN2VXaStDSUhhTnIvK0s0ZVgxZUNTV1JCb1p3dUJSei9ZUWhhZGpiR0Nu?= =?utf-8?B?NTVSTnY1ZURHQkcvSEF3SzdLV2lTem11enl5aFlQVjh5dVY5MnFURURRTk92?= =?utf-8?B?WUFKd0RQZW1VL094UGhac1pqam9MbzdWVmErMFhuTmFaTG5HdTcyZEVCa1Yw?= =?utf-8?B?U0NNc0JoQ00rNkIxa0Z4TWJuc1NsM3VCZWxtNXNEQTRCdVJEQ010clNjM21H?= =?utf-8?B?cDU1eVJjMVR2MkorSGovUnZveFcvQVRtWkJoOTNmVDM3ZjNhY2NHbVVBUERu?= =?utf-8?B?Y1RvMGlTeithMHB3VnNqZFRxaEpiaWJhbmJ5OUtWdDB5TStkdUJMcis4S2E5?= =?utf-8?B?ellGeFZtb0pJV2tzVTlnTzBqaWg5VDJvWlhuUHU1dXNHZkYxRk1wdjJoOENS?= =?utf-8?B?ZVhGdXlnTURzNkxSMjFlT0hqSUdyNE9tK2ZvRjdOajNTL25aaWlkZzV2QzJy?= =?utf-8?B?TEFFdEgxOFh3VWhVMDJpUnU5bjU4ZDlrZXovaFRyc1RncFBjRjRLZWpYZDVX?= =?utf-8?B?MWhVMVI0UmxkR1JIOGVNMEZ1N2RIbmp2Vkl5OUVSWE5mWVloYjhDRVdSeVg3?= =?utf-8?B?ZmNsOVZFRkNRWEJGMmkxb29vWlJTSXpobUNtblk0SnFlN0tFcEgrK1NVMTVs?= =?utf-8?B?V3B5N24wYlJmZEVIYTExSmRHTkhYSERMdUF6MTA2WUlQcmp5aTZ4cWxLQVdm?= =?utf-8?B?ODVabG9FRThmLzNaVlNzU21mL3ZjV0toN1BjNU1SQkpSR0JibytGWVd1bE9x?= =?utf-8?B?MDhacFQ5VVZmSkZkRlg4SmcweElsWEFlTmJmWnIxbTZnQlB2RzVBaEdsejBX?= =?utf-8?B?dGR5ZVB5YzZ3emZ3bDl4Y3BUNlVOak1VZklyTHJXZ0x0UkxMVVdpVnJiQ1JP?= =?utf-8?B?YkNyQkUrSlpBTUNsYlkvZEhQOURWaXp2TExzN1IxWnJ1U0VUR2dSSnlQcFpy?= =?utf-8?B?MkQ5RU1JR2xMRXNRQmFqUjFUckxiZDFneXlGVDRJTnFHblg4TTZjaG9ZQ0Vs?= =?utf-8?B?N3JlbHlyOXJlUHBpNWFXRWNKMForajVTNzFBQzBaOVRZMFk0Z0FCc1BxVWF5?= =?utf-8?B?ZGJhZGZpSXNCR2hnUkhwVGlZNkNBendhbGlkTkkzNGt4WnVaRXNNM0srQ1g4?= =?utf-8?Q?S2u66W+VLXkjPpeo1dxxaqt8zbdepxbcltRIOaES+9U6?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: silicom-usa.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9222.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d4e44f8-4c5d-489b-c6a8-08dbb9cd7b4d X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2023 11:33:59.1147 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: c9e326d8-ce47-4930-8612-cc99d3c87ad1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 04rCt+BngGSqcuaMPha4JLmYlcTy74Z0Razo71reYzbsbo2R4jZ9UUBxquDji9fw65npwaduxcX2z00mg8DWvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9277 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 20 Sep 2023 04:34:45 -0700 (PDT) SGkgSGFucywNCg0KU29ycnkgZm9yIG1pc3NpbmcgeW91ciBpbmxpbmUgY29kZSBjb21tZW50cy4g SSB3aWxsIGFkZHJlc3MgdGhlbSBhbmQgc2VuZCBvdXQgbmV3IHBhdGNoIHNvb24uDQoNClRoYW5r cw0KSGVucnkNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEhhbnMgZGUgR29l ZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+IA0KU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMjAs IDIwMjMgNDo1NCBBTQ0KVG86IEhlbnJ5IFNoaSA8aGVucnlzaGkyMDE4QGdtYWlsLmNvbT47IGhi c2hpNjlAaG90bWFpbC5jb207IHRnbHhAbGludXRyb25peC5kZTsgbWluZ29AcmVkaGF0LmNvbTsg YnBAYWxpZW44LmRlOyBkYXZlLmhhbnNlbkBsaW51eC5pbnRlbC5jb207IHg4NkBrZXJuZWwub3Jn OyBocGFAenl0b3IuY29tOyBtYXJrZ3Jvc3NAa2VybmVsLm9yZzsgamRlbHZhcmVAc3VzZS5jb207 IGxpbnV4QHJvZWNrLXVzLm5ldDsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgcGxhdGZv cm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9y Zw0KQ2M6IGhiX3NoaTIwMDNAeWFob28uY29tOyBIdWliaW4gU2hpIDxoZW5yeXNAc2lsaWNvbS11 c2EuY29tPjsgV2VuIFdhbmcgPHdlbndAc2lsaWNvbS11c2EuY29tPg0KU3ViamVjdDogUmU6IFtQ QVRDSCB2N10gcGxhdGZvcm0veDg2OiBBZGQgU2lsaWNvbSBQbGF0Zm9ybSBEcml2ZXINCg0KQ2F1 dGlvbjogVGhpcyBpcyBhbiBleHRlcm5hbCBlbWFpbC4gUGxlYXNlIHRha2UgY2FyZSB3aGVuIGNs aWNraW5nIGxpbmtzIG9yIG9wZW5pbmcgYXR0YWNobWVudHMuDQoNCg0KSGkgSGVucnksDQoNCk9u IDkvMTkvMjMgMjM6MTYsIEhlbnJ5IFNoaSB3cm90ZToNCj4gVGhlIFNpbGljb20gcGxhdGZvcm0g KHNpbGljb20tcGxhdGZvcm0pIExpbnV4IGRyaXZlciBmb3IgU3dpc3Njb20gDQo+IEJ1c2luZXNz IEJveCAoU3dpc3Njb20gQkIpIGFzIHdlbGwgYXMgQ29yZG9iYSBmYW1pbHkgcHJvZHVjdHMgaXMg YSANCj4gc29mdHdhcmUgc29sdXRpb24gZGVzaWduZWQgdG8gZmFjaWxpdGF0ZSB0aGUgZWZmaWNp ZW50IG1hbmFnZW1lbnQgYW5kIA0KPiBjb250cm9sIG9mIGRldmljZXMgdGhyb3VnaCB0aGUgaW50 ZWdyYXRpb24gb2YgdmFyaW91cyBMaW51eCANCj4gZnJhbWV3b3Jrcy4gVGhpcyBwbGF0Zm9ybSBk cml2ZXIgcHJvdmlkZXMgc2VhbWxlc3Mgc3VwcG9ydCBmb3IgZGV2aWNlIA0KPiBtYW5hZ2VtZW50 IHZpYSB0aGUgTGludXggTEVEIGZyYW1ld29yaywgR1BJTyBmcmFtZXdvcmssIEhhcmR3YXJlIA0K PiBNb25pdG9yaW5nIChIV01PTiksIGFuZCBkZXZpY2UgYXR0cmlidXRlcy4gVGhlIFNpbGljb20g cGxhdGZvcm0gDQo+IGRyaXZlcidzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGVzZSBMaW51eCBmcmFt ZXdvcmtzIGFsbG93cyBhcHBsaWNhdGlvbnMgDQo+IHRvIGFjY2VzcyBhbmQgY29udHJvbCBDb3Jk b2JhIGZhbWlseSBkZXZpY2VzIHVzaW5nIGV4aXN0aW5nIHNvZnR3YXJlIA0KPiB0aGF0IGlzIGNv bXBhdGlibGUgd2l0aCB0aGVzZSBmcmFtZXdvcmtzLiBUaGlzIGNvbXBhdGliaWxpdHkgDQo+IHNp bXBsaWZpZXMgdGhlIGRldmVsb3BtZW50IHByb2Nlc3MsIHJlZHVjZXMgZGVwZW5kZW5jaWVzIG9u IA0KPiBwcm9wcmlldGFyeSBzb2x1dGlvbnMsIGFuZCBwcm9tb3RlcyBpbnRlcm9wZXJhYmlsaXR5 IHdpdGggb3RoZXIgDQo+IExpbnV4LWJhc2VkIHN5c3RlbXMgYW5kIHNvZnR3YXJlLg0KPg0KPiBD aGFuZ2VzIGZyb20gdjEgdG8gdjI6DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPg0K PiBTdWdnZXN0ZWQgYnkgSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4gLlVzZSBn aXQgc2VuZC1lbWFpbCANCj4gdG8gc3VibWl0IHBhdGNoLg0KPiAucGF0Y2ggY29udGVudHMgc2hv dWxkIGJlIGluIG1lc3NhZ2UgYm9keS4NCj4gLktjb25maWcgYml0IGZvciB0aGUgZHJpdmVyIHNo b3VsZCBiZSBpbiBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnLg0KPg0KPiBjaGFuZ2VzIGZy b20gcGF0Y2ggdjIgdG8gdjMNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+DQo+IGNo YW5nZXMgc3VnZ2VzdGVkIGJ5IEd1ZW50ZXIgUm9lY2sgPGdyb2VjazdAZ21haWwuY29tPiAuUmVt b3ZlZCANCj4gdW5uZWNlc3NhcnkgaW5jbHVkZSBmaWxlIGxpbnV4L3RoZXJtYWwuaC4NCj4gLlJl bW92ZWQgRVhQT1JUX1NZTUJPTCBmb3IgbXV0ZXggbG9jay91bmxvY2sgZnVuY3Rpb24uDQo+DQo+ IENoYW5nZXMgc3VnZ2VzdGVkIGJ5IElscG8gSsOkcnZpbmVuIDxpbHBvLmphcnZpbmVuQGxpbnV4 LmludGVsLmNvbT4gDQo+IC5SZW1vdmUgZXh0cmEgbmV3IGxpbmUgaW4gY29kZSBvbiBtdWx0aXBs ZSBwb3NpdGlvbi4NCj4gLlVzZSB0YWJsZSBpbnN0ZWFkIG9mIHNwYWNlIGluIGNvZGUuDQo+IC5V c3MgTGludXggZGVmaW5lZCBiaXQgb3BlcmF0aW9uIE1BQ1JPIGRlZmluZS4NCj4gLlJlbW92ZWQg bG9jYWwgdmFyaWFibGUgaW4gcnBtX2dldCgpLg0KPiAuQ29ycmVjdGVkIHR5cG8gaW4gY29tbWVu dHMuDQo+IC5Db3JyZWN0ZWQgaW5jb3JyZWN0IGluZGVudGF0aW9uLg0KPiAuUmVtb3ZlZCB1bm5l Y2Vzc2FyeSBjb21tZW50cyBpbiBzaWxpY29tX21jX2xlZHNfcmVnaXN0ZXIoKS4NCj4gLlJld3Jp dGUgZWZ1c2Vfc3RhdHVzX3Nob3coKSB0byB1c2VkIGRlZmluZWQgdmFyaWFibGUgYW5kIHJlbW92 ZWQgDQo+IHVuY2Vzc2FyeSBsb2NhbCB2YXJpYWJsZXMuDQo+IC5SZXdyaXRlIHVjX3ZlcnNpb25f c2hvdygpIHRvIHVzZWQgZGVmaW5lZCB2YXJpYWJsZSBhbmQgcmVtb3ZlZCANCj4gdW5jZXNzYXJ5 IGxvY2FsIHZhcmlhYmxlcy4NCj4gLlJlbW92ZWQgdW51c2VkIE1BQ1JPIGRlZmluZTogI2RlZmlu ZSBDSEFOTkVMX1RPX0JJVChjaGFuKSAoKGNoYW4pICYgMHgwNykuDQo+IC5SZXdyaXRlIHBvd2Vy Y3ljbGVfdWMoKSB0byB1c2VkIGRlZmluZWQgdmFyaWFibGUgYW5kIHJlbW92ZWQgDQo+IHVuY2Vz c2FyeSBsb2NhbCB2YXJpYWJsZXMuDQo+IC51c2UgR0VOTUFTSygpIGFuZCB1c2UgRklFTERfR0VU KCkgaW5zdGVhZCBvZiBiaXQgc2hpZnQuDQo+IC5BZGRlZCBkZWZpbmUgZm9yIGNvbnN0YW50IDB4 MjggdXNlZCBpbiAgZWZ1c2Vfc3RhdHVzX3Nob3coKS4NCj4gLkFkZGVkIGRlZmluZSBmb3IgY29u c3RhbnQgMHgwIHVzZWQgaW4gIHVjX3ZlcnNpb25fc2hvdygpLg0KPiAuQWRkZWQgZGVmaW5lIGZv ciBjb25zdGFudCAweDAgdXNlZCBpbiAgcG93ZXJjeWNsZV91YygpLg0KPiAuUmVhcnJhbmdlIGZ1 bmN0aW9ucyB0byBhdm9pZCB1bmNlc3NhcnkgcHJlLWRlZmluZS4NCj4gLlJld3JpdGUgcnBtX2dl dCgpIHRvIHVzZWQgZGVmaW5lZCB2YXJpYWJsZSBhbmQgcmVtb3ZlZCB1bmNlc3NhcnkgDQo+IGxv Y2FsIHZhcmlhYmxlcy4NCj4gLlJld3JpdGUgdGVtcF9nZXQoKSB0byB1c2VkIGRlZmluZWQgdmFy aWFibGUgYW5kIHJlbW92ZWQgdW5jZXNzYXJ5IA0KPiBsb2NhbCB2YXJpYWJsZXMuDQo+IC5Vc2Ug RklFTERfR0VUIGluc3RlYWQgb2YgYml0IHNoaWZ0IGluIHRlbXBfZ2V0KCkuDQo+IC5Vc2VkICNk ZWZpbmUgZm9yIGNvbnN0YW50IHZhcmlhYmxlIDAvMS4NCj4NCj4gQ2hhbmdlcyBzdWdnZXN0ZWQg YnkgQ2hyaXN0b3BoZSBKQUlMTEVUIDxjaHJpc3RvcGhlLmphaWxsZXRAd2FuYWRvby5mcj46DQo+ IC51c2UgImlmICghbGVkLT5zdWJsZWRfaW5mbykiIGluc3RlYWQgb2YgImlmIA0KPiAoSVNfRVJS X09SX05VTEwobGVkLT5zdWJsZWRfaW5mbykpDQo+ICJpbiBzaWxpY29tX21jX2xlZHNfcmVnaXN0 ZXINCj4NCj4gY2hhbmdlcyBmcm9tIHBhdGNoIHYzIHRvIHY0DQo+ID09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KPg0KPiBjaGFuZ2VzIHN1Z2dlc3RlZCBieSBHdWVudGVyIFJvZWNrIDxncm9l Y2s3QGdtYWlsLmNvbT4NCj4NCj4gQ2hhbmdlcyBzdWdnZXN0ZWQgYnkgSWxwbyBKw6RydmluZW4g PGlscG8uamFydmluZW5AbGludXguaW50ZWwuY29tPjoNCj4gLlJld3JpdGUgc2lsaWNvbV9tZWNf bGVkL2dwaXBfc2V0L2dldCgpIGZ1bmN0aW9ucyB0byB1c2UgdHdvIG5ld2x5IA0KPiBjcmVhdGVk DQo+IHNpbGljb21fbWVjX3BvcnRfZ2V0KCkvc2lsaWNvbV9tZWNfcG9ydF9zZXQoKSB3aGljaCBo YXZlIGNvbW1vbiBjb2RlLg0KPiAuUmVtb3ZlIGR1cGxpY2F0ZSBjb2RlIGluIHNpbGljb21fbWVj X3BvcnRfZ2V0KCkgLlJld3JpdGUgDQo+IHVjX3ZlcnNpb25fc2hvdygpIHRvIHVzZSBMaW51eCBi aXQgb3BlcmF0aW9uIE1BQ1JPLCBhbmQgYWRkIGxvZ2ljIHRvIA0KPiBjaGVjayB1bi1zdXBwb3J0 ZWQgcmVnaXN0ZXIgdmFsdWUuDQo+IC5BZGRlZCAiI2RlZmluZSBNRUNfRUZVU0VfTFNCX0FERFIg MHgyOCIgYW5kICIjZGVmaW5lIA0KPiBNRUNfUE9XRVJfQ1lDTEVfQUREUiAweDI0Ig0KPiAuQWRk ZWQgIiNkZWZpbmUgTUVDX1ZFUlNJT05fTUFKT1IgR0VOTUFTSygxNSwgMTQpIiBhbmQgIiNkZWZp bmUgDQo+IE1FQ19WRVJTSU9OX01JTk9SIEdFTk1BU0soMTMsIDgpIi4NCj4NCj4gQ2hhbmdlcyBz dWdnZXN0ZWQgYnkgQ2hyaXN0b3BoZSBKQUlMTEVUIDxjaHJpc3RvcGhlLmphaWxsZXRAd2FuYWRv by5mcj46DQo+IC5Vc2VkIGEgbG9jYWwgdmFyaWFibGUgdG8gc3RvcmUgInNpemVvZihzdHJ1Y3Qg bWNfc3VibGVkKSIgaW4gZnVuY3Rpb24gDQo+IHNpbGljb21fbWNfbGVkc19yZWdpc3RlcigpLg0K Pg0KPiBjaGFuZ2UgZnJvbSBwYXRjaCB2NCB0byB2NQ0KPiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+DQo+IGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IEd1ZW50ZXIg Um9lY2sgPGdyb2VjazdAZ21haWwuY29tPjoNCj4gLkNvcnJlY3RlZCByZXR1cm4gdmFsdWUgaW4g dGVtcF9nZXQoKSB0byByZXR1cm4gMS8xMDAwMHRoIGRlZ3JlZS4NCj4gLlJlbW92ZWQgbG9jYWwg dmFyaWFibGUgc3RydWN0IHNpbGljb21fZmFuX2NvbnRyb2xfZGF0YSAqY3RsIGluIA0KPiBzaWxp Y29tX2Zhbl9jb250cm9sX3JlYWRfZmFuKCksIHJlbW92ZWQgc3RvcmluZyBycG0gdmFsdWUgdG8g Y3RsIA0KPiB2YXJpYWJsZS4NCj4gLlJlbW92ZWQgbG9jYWwgdmFyaWFibGUgc3RydWN0IHNpbGlj b21fZmFuX2NvbnRyb2xfZGF0YSAqY3RsIGluIA0KPiBzaWxpY29tX2Zhbl9jb250cm9sX3JlYWRf dGVtcCgpLCAucmVtb3ZlZCBzdG9yaW5nIHJwbSB2YWx1ZSB0byBjdGwgDQo+IHZhcmlhYmxlLg0K PiAuQ2hhbmdlZCByZXR1cm4gc3RyaW5nIGluIHNpbGljb21fZmFuX2NvbnRyb2xfcmVhZF9sYWJl bHMoKSB0byANCj4gc3BlY2lmaWMgc3RyaW5nIGZvciBTaWxpY29tIHBsYXRmb3JtIGRyaXZlci4N Cj4gLlJlbW92ZWQgc2lsaWNvbV9mYW5fY29udHJvbF9kYXRhIHN0cnVjdHVyZS4NCj4gLlJlbW92 ZWQgc3RhdGljIHZhcmlhYmxlIG1lY19pb19iYXNlIGFuZCBtZWNfaW9fbGVuLCBhbmQgYWRkZWQg DQo+ICIjZGVmaW5lIE1FQ19JT19CQVNFIDB4MDgwMCBhbmQgI2RlZmluZSBNRUNfSU9fTEVOIDB4 OCIuDQo+IC5SZW1vdmVkICIud3JpdGUgPSBOVUxMIiBpbiBzaWxpY29tX2Zhbl9jb250cm9sX2h3 bW9uX29wcyBzdHJ1Y3R1cmUgDQo+IGRlZmluYXRpb24uDQo+IC5SZW1vdmVkIHVubmVjZXNzYXJ5 IGZ1bmN0aW9uIHNpbGljb21fZmFuX2NvbnRyb2xfd3JpdGUoKS4NCj4gLlJlbW92ZWQgdW5uZWNl c3NhcnkgY2hlY2sgZm9yIHNpbGljb21fbGVkX2luZm8gaW4gZnVuY3Rpb24gDQo+IHNpbGljb21f cGxhdGZvcm1fcHJvYmUuDQo+IC5SZW1vdmVkIHVubmVjZXNzYXJ5IGxvY2FsIHZhcmlhYmxlICJz aWxpY29tX2Zhbl9jb250cm9sX2RhdGEgKmN0bCINCj4gaW4gc2lsaWNvbV9wbGF0Zm9ybV9wcm9i ZSgpLg0KPiAuQ2xlYW4gb3V0IGRyaXZlciBpbml0aWFsaXphdGlvbiBlcnJvciBoYW5kbGluZyBp biANCj4gc2lsaWNvbV9wbGF0Zm9ybV9pbml0KCk7IC5BZGQgcGF0Y2ggdmVyc2lvbiBhbmQgY2hh bmdlbG9nIGZvciBwYXRjaCANCj4gc3VibWlzc2lvbi4NCj4NCj4NCj4gQ2hhbmdlcyBzdWdnZXN0 ZWQgYnkgSWxwbyBKw6RydmluZW4gPGlscG8uamFydmluZW5AbGludXguaW50ZWwuY29tPjoNCj4g LlJlbmFtZSAiI2RlZmluZSBNRUNfREFUQShvZmZzZXQpIHRvICIjZGVmaW5lIE1FQ19EQVRBX09G RlNFVChvZmZzZXQpLg0KPiAuVXNlIGNvbnN0YW50IGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC91 bml0cy5oIGluc3RlYWQgb2YgYSBsaXRlcmFsLg0KPiAucmV0dXJuIGRpcmVjdGx5IGluc3RlYWQg b2YgZ28gdG8gZXJyIGNvbmRpdGlvbiB3aGVuDQo+IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9z aW1wbGUoKSBmYWlsZWQuDQo+IC5SZW1vdmUgdW5uZWNlc3NhcnkgY2hlY2sgZm9yIHNpbGljb21f bGVkX2luZm8gYW5kIHNpbGljb21fZ3Bpb2NoaXAuDQo+IC5Vc2UgYSBsb2NhbCB2YXJpYWJsZSB0 byBob3cgbXVsdGlwbGUgdXNlIG9mIGFycmF5IHNpemUuDQo+IC5BbGlnbiB0aGUgYXJndW1lbnRz IHRvIHRoZSBzYW1lIGNvbHVtbiBpbiANCj4gc2lsaWNvbV9tZWNfbGVkX21jX2JyaWdodG5lc3Nf c2V0Lg0KPiAuQWRkIHBhdGNoIHZlcnNpb24gYW5kIGNoYW5nZWxvZyB0aGF0IHNob3dzIHZlcnNp b24gdG8gdmVyc2lvbiBjaGFuZ2VzIA0KPiBmb3IgcGF0Y2ggc3VibWlzc2lvbi4NCj4NCj4gQ2hh bmdlcyBzdWdnZXN0ZWQgYnkgQ2hyaXN0b3BoZSBKQUlMTEVUIDxjaHJpc3RvcGhlLmphaWxsZXRA d2FuYWRvby5mcj46DQo+IC5Vc2UgInNpemVvZigqbGVkKSIgaW5zdGVhZCBvZiAic2l6ZW9mKHN0 cnVjdCBsZWRfY2xhc3NkZXZfbWMpIg0KPiAuVXNlICJpZiAoIWxlZCkiIGluc3RlYWQgb2YgImlm IChJU19FUlJfT1JfTlVMTChsZWQpKSINCj4gLlJlbW92ZWQgdW5uZWNlc3NhcnkgZXJyb3IgbWVz c2FnZToNCj4gImRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFsbG9jIGxlZF9jbGFzc2Rldl9tY1sl ZF06DQo+ICVsZFxuIiwgaSwgUFRSX0VSUihsZWQpKS4NCj4NCj4gY2hhbmdlIGZyb20gcGF0Y2gg dnY1IHRvIHY2DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Cj4NCj4gY2hhbmdlcyBzdWdnZXN0ZWQgYnkgR3VlbnRlciBSb2VjayA8Z3JvZWNrN0BnbWFpbC5j b20+Og0KPiAuUmVtb3ZlZCBjaGVja3BhdGggd2FybmluZ3MuDQo+IC5SZXNvdmVkIGRlcGVuZGVu Y2llcyBiZXR3ZWVuIENPTkZJR19IV01PTiBhbmQgQ09ORklHX1NJTElDT01fUExBVEZPUk0uDQo+ DQo+IGNoYW5nZSBmcm9tIHBhdGNoIHY2IHRvIHY3IChjdXJyZW50IHBhdGNoKSANCj4gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPg0KPiBjaGFuZ2VzIHN1Z2dl c3RlZCBieSBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPjoNCj4gLlVzYSBhIHBy b3BlciBzdWJzeXN0ZW0gcHJlZml4IGZvciB0aGlzIHBhdGNoIHN1YmplY3Q6DQo+IFN1YmplY3Q6 IHBsYXRmb3JtL3g4NjogQWRkIFNpbGljb20gUGxhdGZvcm0gRHJpdmVyLg0KDQpJbiBteSBsYXN0 IHJlcGx5IEkgYXNrZWQgZm9yIGEgbG90IG1vcmUgY2hhbmdlcyB0aGVuIGp1c3QgYWRkaW5nIHRo ZSBzdWJzeXN0ZW0gcHJlZml4IHRvIHRoZSBTdWJqZWN0Lg0KDQpQbGVhc2UgZnVsbHkgcmVhZCBt eSBsYXN0IHJlcGx5IGFuZCBhZGRyZXNzIGFsbCB0aGUgb3RoZXIgcmVtYXJrcyBJIG1hZGUgdGhl cmUgaW4gYSBuZXcgdmVyc2lvbi4NCg0KUmVnYXJkcywNCg0KSGFucw0KDQoNCg0KPg0KPiBTaWdu ZWQtb2ZmLWJ5OiBIZW5yeSBTaGkgPGhlbnJ5c2hpMjAxOEBnbWFpbC5jb20+DQo+IC0tLQ0KPiAg ZHJpdmVycy9wbGF0Zm9ybS94ODYvS2NvbmZpZyAgICAgICAgICAgIHwgICAyNCArDQo+ICBkcml2 ZXJzL3BsYXRmb3JtL3g4Ni9NYWtlZmlsZSAgICAgICAgICAgfCAgICAxICsNCj4gIGRyaXZlcnMv cGxhdGZvcm0veDg2L3NpbGljb20tcGxhdGZvcm0uYyB8IDEwNTMgDQo+ICsrKysrKysrKysrKysr KysrKysrKysrDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDEwNzggaW5zZXJ0aW9ucygrKQ0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGxhdGZvcm0veDg2L3NpbGljb20tcGxhdGZvcm0uYw0K Pg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvS2NvbmZpZyANCj4gYi9kcml2 ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnIGluZGV4IDIyMDUyMDMxYzcxOS4uYWJhMmQ0NWY3Y2Nk IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnDQo+ICsrKyBiL2Ry aXZlcnMvcGxhdGZvcm0veDg2L0tjb25maWcNCj4gQEAgLTE4OCw2ICsxODgsMzAgQEAgY29uZmln IEFDRVJfV01JDQo+ICAgICAgICAgSWYgeW91IGhhdmUgYW4gQUNQSS1XTUkgY29tcGF0aWJsZSBB Y2VyLyBXaXN0cm9uIGxhcHRvcCwgc2F5IFkgb3IgTQ0KPiAgICAgICAgIGhlcmUuDQo+DQo+ICtj b25maWcgU0lMSUNPTV9QTEFURk9STQ0KPiArICAgICB0cmlzdGF0ZSAiU2lsaWNvbSBFZGdlIE5l dHdvcmtpbmcgZGV2aWNlIHN1cHBvcnQiDQo+ICsgICAgIGRlcGVuZHMgb24gSFdNT04NCj4gKyAg ICAgc2VsZWN0IExFRFNfQ0xBU1NfTVVMVElDT0xPUg0KPiArICAgICBoZWxwDQo+ICsgICAgICAg VGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTEVEcy9HUElPL2V0YyBkb3duc3Ry ZWFtIG9mIHRoZQ0KPiArICAgICAgIGVtYmVkZGVkIGNvbnRyb2xsZXIgb24gU2lsaWNvbSAiQ29y ZG9iYSIgaGFyZHdhcmUgYW5kIGRlcml2YXRpdmVzLg0KPiArDQo+ICsgICAgICAgVGhlIFNpbGlj b20gcGxhdGZvcm0gKHNpbGljb20tcGxhdGZvcm0pIExpbnV4IGRyaXZlciBmb3IgU3dpc3Njb20N Cj4gKyAgICAgICBCdXNpbmVzcyBCb3ggKFN3aXNzY29tIEJCKSBhcyB3ZWxsIGFzIENvcmRvYmEg ZmFtaWx5IHByb2R1Y3RzIGlzIGENCj4gKyAgICAgICBzb2Z0d2FyZSBzb2x1dGlvbiBkZXNpZ25l ZCB0byBmYWNpbGl0YXRlIHRoZSBlZmZpY2llbnQgbWFuYWdlbWVudA0KPiArICAgICAgIGFuZCBj b250cm9sIG9mIGRldmljZXMgdGhyb3VnaCB0aGUgaW50ZWdyYXRpb24gb2YgdmFyaW91cyBMaW51 eA0KPiArICAgICAgIGZyYW1ld29ya3MuIFRoaXMgcGxhdGZvcm0gZHJpdmVyIHByb3ZpZGVzIHNl YW1sZXNzIHN1cHBvcnQgZm9yDQo+ICsgICAgICAgZGV2aWNlIG1hbmFnZW1lbnQgdmlhIHRoZSBM aW51eCBMRUQgZnJhbWV3b3JrLCBHUElPIGZyYW1ld29yaywNCj4gKyAgICAgICBIYXJkd2FyZSBN b25pdG9yaW5nIChIV01PTiksIGFuZCBkZXZpY2UgYXR0cmlidXRlcy4gVGhlIFNpbGljb20NCj4g KyAgICAgICBwbGF0Zm9ybSBkcml2ZXIncyBjb21wYXRpYmlsaXR5IHdpdGggdGhlc2UgTGludXgg ZnJhbWV3b3JrcyBhbGxvd3MNCj4gKyAgICAgICBhcHBsaWNhdGlvbnMgdG8gYWNjZXNzIGFuZCBj b250cm9sIENvcmRvYmEgZmFtaWx5IGRldmljZXMgdXNpbmcNCj4gKyAgICAgICBleGlzdGluZyBz b2Z0d2FyZSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGVzZSBmcmFtZXdvcmtzLiBUaGlzDQo+ ICsgICAgICAgY29tcGF0aWJpbGl0eSBzaW1wbGlmaWVzIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNz LCByZWR1Y2VzDQo+ICsgICAgICAgZGVwZW5kZW5jaWVzIG9uIHByb3ByaWV0YXJ5IHNvbHV0aW9u cywgYW5kIHByb21vdGVzDQo+ICsgICAgICAgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIG90aGVyIExp bnV4LWJhc2VkIHN5c3RlbXMgYW5kIHNvZnR3YXJlLg0KPiArDQo+ICsgICAgICAgSWYgeW91IGhh dmUgYSBTaWxpY29tIG5ldHdvcmsgYXBwbGlhbmNlLCBzYXkgWSBvciBNIGhlcmUuDQo+ICsNCj4g IHNvdXJjZSAiZHJpdmVycy9wbGF0Zm9ybS94ODYvYW1kL0tjb25maWciDQo+DQo+ICBjb25maWcg QURWX1NXQlVUVE9ODQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9NYWtlZmls ZSANCj4gYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9NYWtlZmlsZSBpbmRleCAyY2FmZTUxZWM0ZDgu LjkzNTVlYmJjNTZjYSANCj4gMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L01h a2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L01ha2VmaWxlDQo+IEBAIC0xMTMs NiArMTEzLDcgQEAgb2JqLSQoQ09ORklHX1NFUklBTF9NVUxUSV9JTlNUQU5USUFURSkgICAgKz0g c2VyaWFsLW11bHRpLWluc3RhbnRpYXRlLm8NCj4gIG9iai0kKENPTkZJR19NTFhfUExBVEZPUk0p ICAgICAgICAgICArPSBtbHgtcGxhdGZvcm0ubw0KPiAgb2JqLSQoQ09ORklHX1RPVUNIU0NSRUVO X0RNSSkgICAgICAgICAgICAgICAgKz0gdG91Y2hzY3JlZW5fZG1pLm8NCj4gIG9iai0kKENPTkZJ R19XSVJFTEVTU19IT1RLRVkpICAgICAgICAgICAgICAgICs9IHdpcmVsZXNzLWhvdGtleS5vDQo+ ICtvYmotJChDT05GSUdfU0lMSUNPTV9QTEFURk9STSkgICAgICAgICAgICAgICArPSBzaWxpY29t LXBsYXRmb3JtLm8NCj4gIG9iai0kKENPTkZJR19YODZfQU5EUk9JRF9UQUJMRVRTKSAgICArPSB4 ODYtYW5kcm9pZC10YWJsZXRzLw0KPg0KPiAgIyBJbnRlbCB1bmNvcmUgZHJpdmVycw0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvc2lsaWNvbS1wbGF0Zm9ybS5jIA0KPiBiL2Ry aXZlcnMvcGxhdGZvcm0veDg2L3NpbGljb20tcGxhdGZvcm0uYw0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRjYTY4YzU4OWYwMw0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L3NpbGljb20tcGxhdGZvcm0uYw0KPiBAQCAt MCwwICsxLDEwNTMgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKw0K PiArLy8NCj4gKy8vIHNpbGljb20tcGxhdGZvcm0uYyAtIFNpbGljb20gTUVDMTcweCBwbGF0Zm9y bSBkcml2ZXIgLy8gLy8gDQo+ICtDb3B5cmlnaHQgKEMpIDIwMjMgSGVucnkgU2hpIDxoZW5yeXNA c2lsaWNvbS11c2EuY29tPiAjaW5jbHVkZSANCj4gKzxsaW51eC9kbWkuaD4gI2luY2x1ZGUgPGxp bnV4L2dwaW8vZHJpdmVyLmg+ICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+IA0KPiArI2luY2x1ZGUg PGxpbnV4L2lvcG9ydC5oPiAjaW5jbHVkZSA8bGludXgvaW8uaD4gI2luY2x1ZGUgDQo+ICs8bGlu dXgva2VybmVsLmg+ICNpbmNsdWRlIDxsaW51eC9sZWQtY2xhc3MtbXVsdGljb2xvci5oPiAjaW5j bHVkZSANCj4gKzxsaW51eC9tb2R1bGUuaD4gI2luY2x1ZGUgPGxpbnV4L2h3bW9uLmg+ICNpbmNs dWRlIDxsaW51eC9tdXRleC5oPiANCj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2Uu aD4gI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPiAjaW5jbHVkZSANCj4gKzxsaW51eC9rb2JqZWN0 Lmg+ICNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPiAjaW5jbHVkZSA8bGludXgvYml0cy5oPiANCj4g KyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPiAjaW5jbHVkZSA8bGludXgvdW5pdHMuaD4NCj4g Kw0KPiArI2RlZmluZSBNRUNfRUZVU0VfTFNCX0FERFIgMHgyOA0KPiArI2RlZmluZSBNRUNfUE9X RVJfQ1lDTEVfQUREUiAweDI0DQo+ICsjZGVmaW5lIE1FQ19QT1JUX09GRlNFVF9NQVNLIDB4ZmMN Cj4gKyNkZWZpbmUgTUVDX1BPUlRfQ0hBTk5FTF9NQVNLIDB4Nw0KPiArI2RlZmluZSBNRUNfREFU QV9PRkZTRVRfTUFTSyAweDAzDQo+ICsjZGVmaW5lIE1FQ19HUElPX0lOX1BPUyAweDA4DQo+ICsj ZGVmaW5lIE1FQ19JT19CQVNFIDB4MDgwMA0KPiArI2RlZmluZSBNRUNfSU9fTEVOIDB4OA0KPiAr I2RlZmluZSBNRUNfQUREUiAoKE1FQ19JT19CQVNFKSArIDB4MDIpICNkZWZpbmUgDQo+ICtNRUNf REFUQV9PRkZTRVQob2Zmc2V0KSAoKE1FQ19JT19CQVNFKSArIDB4MDQgKyAob2Zmc2V0KSkgI2Rl ZmluZSANCj4gK0VDX0FERFJfTFNCIE1FQ19BRERSICNkZWZpbmUgRUNfQUREUl9NU0IgKChNRUNf SU9fQkFTRSkgKyANCj4gK01FQ19EQVRBX09GRlNFVF9NQVNLKSAjZGVmaW5lIFNJTElDT01fTUVD X01BR0lDIDB4NWEgI2RlZmluZSANCj4gK09GRlNFVF9CSVRfVE9fQ0hBTk5FTChvZmYsIGJpdCkg KCgoKG9mZikgKyAweDAxNCkgPDwgMykgfCAoYml0KSkgDQo+ICsjZGVmaW5lIENIQU5ORUxfVE9f T0ZGU0VUKGNoYW4pICgoKGNoYW4pID4+IDMpIC0gMHgxNCkgI2RlZmluZSANCj4gK01FQ19WRVJT SU9OX01BSk9SIEdFTk1BU0soMTUsIDE0KSAjZGVmaW5lIE1FQ19WRVJTSU9OX01JTk9SIA0KPiAr R0VOTUFTSygxMywgOCkgI2RlZmluZSBJT19SRUdfQkFOSyAweDAgI2RlZmluZSBERUZBVUxUX0NI QU5fTE8gMCANCj4gKyNkZWZpbmUgREVGQVVMVF9DSEFOX0hJIDAgI2RlZmluZSBERUZBVUxUX0NI QU5fTE9fVCAweGMNCj4gKw0KPiArc3RhdGljIERFRklORV9NVVRFWChtZWNfaW9fbXV0ZXgpOw0K PiArc3RhdGljIHN0cnVjdCBkZXZpY2UgKm15X2RldjsNCj4gK3N0YXRpYyBpbnQgZWZ1c2Vfc3Rh dHVzOw0KPiArc3RhdGljIGludCBtZWNfdWNfdmVyc2lvbjsNCj4gK3N0YXRpYyBpbnQgcG93ZXJf Y3ljbGU7DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fY2hhbm5lbF9pbmZvICpz aWxpY29tX2Zhbl9jb250cm9sX2luZm9bXSA9IHsNCj4gKyAgICAgSFdNT05fQ0hBTk5FTF9JTkZP KGZhbiwgSFdNT05fRl9JTlBVVCB8IEhXTU9OX0ZfTEFCRUwpLA0KPiArICAgICBIV01PTl9DSEFO TkVMX0lORk8odGVtcCwgSFdNT05fVF9JTlBVVCB8IEhXTU9OX1RfTEFCRUwpLA0KPiArICAgICBO VUxMDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3Qgc2lsaWNvbV9wbGF0Zm9ybV9pbmZvIHsNCj4gKyAg ICAgaW50IGlvX2Jhc2U7DQo+ICsgICAgIGludCBpb19sZW47DQo+ICsgICAgIHN0cnVjdCBsZWRf Y2xhc3NkZXZfbWMgKmxlZF9pbmZvOw0KPiArICAgICBzdHJ1Y3QgZ3Bpb19jaGlwICpncGlvY2hp cDsNCj4gKyAgICAgdTggKmdwaW9fY2hhbm5lbHM7DQo+ICsgICAgIHUxNiBuZ3BpbzsNCj4gK307 DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcGxhdF8wMjIyX2dwaW9fbmFtZXNb XSA9IHsNCj4gKyAgICAgIkFVVE9NMF9TRlBfVFhfRkFVTFQiLA0KPiArICAgICAiU0xPVDJfTEVE X09VVCIsDQo+ICsgICAgICJTSU1fTTJfU0xPVDJfQl9ERVQiLA0KPiArICAgICAiU0lNX00yX1NM T1QyX0FfREVUIiwNCj4gKyAgICAgIlNMT1QxX0xFRF9PVVQiLA0KPiArICAgICAiU0lNX00yX1NM T1QxX0JfREVUIiwNCj4gKyAgICAgIlNJTV9NMl9TTE9UMV9BX0RFVCIsDQo+ICsgICAgICJTTE9U MF9MRURfT1VUIiwNCj4gKyAgICAgIldBTl9TRlAwX1JYX0xPUyIsDQo+ICsgICAgICJXQU5fU0ZQ MF9QUlNOVF9OIiwNCj4gKyAgICAgIldBTl9TRlAwX1RYX0ZBVUxUIiwNCj4gKyAgICAgIkFVVE9N MV9TRlBfUlhfTE9TIiwNCj4gKyAgICAgIkFVVE9NMV9TRlBfUFJTTlRfTiIsDQo+ICsgICAgICJB VVRPTTFfU0ZQX1RYX0ZBVUxUIiwNCj4gKyAgICAgIkFVVE9NMF9TRlBfUlhfTE9TIiwNCj4gKyAg ICAgIkFVVE9NMF9TRlBfUFJTTlRfTiIsDQo+ICsgICAgICJXQU5fU0ZQMV9SWF9MT1MiLA0KPiAr ICAgICAiV0FOX1NGUDFfUFJTTlRfTiIsDQo+ICsgICAgICJXQU5fU0ZQMV9UWF9GQVVMVCIsDQo+ ICsgICAgICJTSU1fTTJfU0xPVDFfTVVYX1NFTCIsDQo+ICsgICAgICJXX0RJU0FCTEVfTTJfU0xP VDFfTiIsDQo+ICsgICAgICJXX0RJU0FCTEVfTVBDSUVfU0xPVDBfTiIsDQo+ICsgICAgICJXX0RJ U0FCTEVfTTJfU0xPVDBfTiIsDQo+ICsgICAgICJCVF9DT01NQU5EX01PREUiLA0KPiArICAgICAi V0FOX1NGUDFfVFhfRElTQUJMRSIsDQo+ICsgICAgICJXQU5fU0ZQMF9UWF9ESVNBQkxFIiwNCj4g KyAgICAgIkFVVE9NMV9TRlBfVFhfRElTQUJMRSIsDQo+ICsgICAgICJBVVRPTTBfU0ZQX1RYX0RJ U0FCTEUiLA0KPiArICAgICAiU0lNX00yX1NMT1QyX01VWF9TRUwiLA0KPiArICAgICAiV19ESVNB QkxFX00yX1NMT1QyX04iLA0KPiArICAgICAiUlNUX0NUTF9NMl9TTE9UXzFfTiIsDQo+ICsgICAg ICJSU1RfQ1RMX00yX1NMT1RfMl9OIiwNCj4gKyAgICAgIlBNX1VTQl9QV1JfRU5fQk9UIiwNCj4g KyAgICAgIlBNX1VTQl9QV1JfRU5fVE9QIiwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyB1OCBwbGF0 XzAyMjJfZ3Bpb19jaGFubmVsc1tdID0gew0KPiArICAgICBPRkZTRVRfQklUX1RPX0NIQU5ORUwo MHgwMCwgMCksDQo+ICsgICAgIE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDAwLCAxKSwNCj4gKyAg ICAgT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MDAsIDIpLA0KPiArICAgICBPRkZTRVRfQklUX1RP X0NIQU5ORUwoMHgwMCwgMyksDQo+ICsgICAgIE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDAwLCA0 KSwNCj4gKyAgICAgT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MDAsIDUpLA0KPiArICAgICBPRkZT RVRfQklUX1RPX0NIQU5ORUwoMHgwMCwgNiksDQo+ICsgICAgIE9GRlNFVF9CSVRfVE9fQ0hBTk5F TCgweDAwLCA3KSwNCj4gKyAgICAgT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MDEsIDApLA0KPiAr ICAgICBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgwMSwgMSksDQo+ICsgICAgIE9GRlNFVF9CSVRf VE9fQ0hBTk5FTCgweDAxLCAyKSwNCj4gKyAgICAgT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MDEs IDMpLA0KPiArICAgICBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgwMSwgNCksDQo+ICsgICAgIE9G RlNFVF9CSVRfVE9fQ0hBTk5FTCgweDAxLCA1KSwNCj4gKyAgICAgT0ZGU0VUX0JJVF9UT19DSEFO TkVMKDB4MDEsIDYpLA0KPiArICAgICBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgwMSwgNyksDQo+ ICsgICAgIE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDAyLCAwKSwNCj4gKyAgICAgT0ZGU0VUX0JJ VF9UT19DSEFOTkVMKDB4MDIsIDEpLA0KPiArICAgICBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgw MiwgMiksDQo+ICsgICAgIE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDA5LCAwKSwNCj4gKyAgICAg T0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MDksIDEpLA0KPiArICAgICBPRkZTRVRfQklUX1RPX0NI QU5ORUwoMHgwOSwgMiksDQo+ICsgICAgIE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDA5LCAzKSwN Cj4gKyAgICAgT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MGEsIDApLA0KPiArICAgICBPRkZTRVRf QklUX1RPX0NIQU5ORUwoMHgwYSwgMSksDQo+ICsgICAgIE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgw eDBhLCAyKSwNCj4gKyAgICAgT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MGEsIDMpLA0KPiArICAg ICBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgwYSwgNCksDQo+ICsgICAgIE9GRlNFVF9CSVRfVE9f Q0hBTk5FTCgweDBhLCA1KSwNCj4gKyAgICAgT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MGEsIDYp LA0KPiArICAgICBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgwYiwgMCksDQo+ICsgICAgIE9GRlNF VF9CSVRfVE9fQ0hBTk5FTCgweDBiLCAxKSwNCj4gKyAgICAgT0ZGU0VUX0JJVF9UT19DSEFOTkVM KDB4MGIsIDIpLA0KPiArICAgICBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgwYiwgMyksDQo+ICt9 Ow0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqc2lsaWNvbV9wbGF0Zm9y bV9kZXY7IHN0YXRpYyBzdHJ1Y3QgDQo+ICtsZWRfY2xhc3NkZXZfbWMgKnNpbGljb21fbGVkX2lu Zm8gX19pbml0ZGF0YTsgc3RhdGljIHN0cnVjdCBncGlvX2NoaXAgDQo+ICsqc2lsaWNvbV9ncGlv Y2hpcCBfX2luaXRkYXRhOyBzdGF0aWMgdTggKnNpbGljb21fZ3Bpb19jaGFubmVscyANCj4gK19f aW5pdGRhdGE7DQo+ICsNCj4gK3N0YXRpYyBpbnQgc2lsaWNvbV9tZWNfcG9ydF9nZXQodW5zaWdu ZWQgaW50IG9mZnNldCkgew0KPiArICAgICB1OCByZWc7DQo+ICsNCj4gKyAgICAgbXV0ZXhfbG9j aygmbWVjX2lvX211dGV4KTsNCj4gKyAgICAgLyogR2V0IHRoZSBkd29yZCBvZmZzZXQgZnJvbSB0 aGUgY2hhbm5lbCAqLw0KPiArICAgICBvdXRiKEZJRUxEX0dFVChHRU5NQVNLKDMxLCAzKSwgb2Zm c2V0KSAmIE1FQ19QT1JUX09GRlNFVF9NQVNLLCANCj4gKyBNRUNfQUREUik7DQo+ICsNCj4gKyAg ICAgLyogR2V0IHRoZSBjdXJyZW50IHJlZ2lzdGVyICovDQo+ICsgICAgIHJlZyA9IGluYihNRUNf REFUQV9PRkZTRVQoRklFTERfR0VUKEdFTk1BU0soMzEsIDMpLCBvZmZzZXQpICYgTUVDX0RBVEFf T0ZGU0VUX01BU0spKTsNCj4gKyAgICAgbXV0ZXhfdW5sb2NrKCZtZWNfaW9fbXV0ZXgpOw0KPiAr DQo+ICsgICAgIHJldHVybiAocmVnID4+IChvZmZzZXQgJiBNRUNfUE9SVF9DSEFOTkVMX01BU0sp KSAmIDB4MDE7IH0NCj4gKw0KPiArc3RhdGljIGVudW0gbGVkX2JyaWdodG5lc3Mgc2lsaWNvbV9t ZWNfbGVkX2dldChpbnQgY2hhbm5lbCkgew0KPiArICAgICAvKiBPdXRwdXRzIGFyZSBhY3RpdmUg bG93ICovDQo+ICsgICAgIHJldHVybiBzaWxpY29tX21lY19wb3J0X2dldChjaGFubmVsKSA/IExF RF9PRkYgOiBMRURfT047IH0NCj4gKw0KPiArc3RhdGljIHZvaWQgc2lsaWNvbV9tZWNfcG9ydF9z ZXQoaW50IGNoYW5uZWwsIGludCBvbikgew0KPiArICAgICB1OCByZWc7DQo+ICsNCj4gKyAgICAg bXV0ZXhfbG9jaygmbWVjX2lvX211dGV4KTsNCj4gKyAgICAgLyogR2V0IHRoZSBkd29yZCBvZmZz ZXQgZnJvbSB0aGUgY2hhbm5lbCAqLw0KPiArICAgICBvdXRiKEZJRUxEX0dFVChHRU5NQVNLKDMx LCAzKSwgY2hhbm5lbCkgJiBNRUNfUE9SVF9PRkZTRVRfTUFTSywgDQo+ICsgTUVDX0FERFIpOw0K PiArDQo+ICsgICAgIC8qIEdldCB0aGUgY3VycmVudCBwb3J0IHNldHRpbmdzICovDQo+ICsgICAg IHJlZyA9IGluYihNRUNfREFUQV9PRkZTRVQoRklFTERfR0VUKEdFTk1BU0soMzEsIDMpLCBjaGFu bmVsKSAmIE1FQ19EQVRBX09GRlNFVF9NQVNLKSk7DQo+ICsgICAgIC8qIE91dHB1dHMgYXJlIGFj dGl2ZSBsb3csIHNvIGNsZWFyIHRoZSBiaXQgZm9yIG9uLCBvciBzZXQgaXQgZm9yIG9mZiAqLw0K PiArICAgICBpZiAob24pDQo+ICsgICAgICAgICAgICAgcmVnICY9IH4oMSA8PCAoY2hhbm5lbCAm IE1FQ19QT1JUX0NIQU5ORUxfTUFTSykpOw0KPiArICAgICBlbHNlDQo+ICsgICAgICAgICAgICAg cmVnIHw9IDEgPDwgKGNoYW5uZWwgJiBNRUNfUE9SVF9DSEFOTkVMX01BU0spOw0KPiArICAgICAv KiBXcml0ZSBiYWNrIHRoZSB1cGRhdGVkIHJlZ2lzdGVyICovDQo+ICsgICAgIG91dGIocmVnLCBN RUNfREFUQV9PRkZTRVQoRklFTERfR0VUKEdFTk1BU0soMzEsIDMpLCBjaGFubmVsKSAmIE1FQ19E QVRBX09GRlNFVF9NQVNLKSk7DQo+ICsgICAgIG11dGV4X3VubG9jaygmbWVjX2lvX211dGV4KTsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGVudW0gbGVkX2JyaWdodG5lc3Mgc2lsaWNvbV9tZWNfbGVk X21jX2JyaWdodG5lc3NfZ2V0KHN0cnVjdCANCj4gK2xlZF9jbGFzc2RldiAqbGVkX2NkZXYpIHsN Cj4gKyAgICAgc3RydWN0IGxlZF9jbGFzc2Rldl9tYyAqbWNfY2RldiA9IGxjZGV2X3RvX21jY2Rl dihsZWRfY2Rldik7DQo+ICsgICAgIGVudW0gbGVkX2JyaWdodG5lc3MgYnJpZ2h0bmVzcyA9IExF RF9PRkY7DQo+ICsgICAgIGludCBpOw0KPiArDQo+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBtY19j ZGV2LT5udW1fY29sb3JzOyBpKyspIHsNCj4gKyAgICAgICAgICAgICBtY19jZGV2LT5zdWJsZWRf aW5mb1tpXS5icmlnaHRuZXNzID0NCj4gKyAgICAgICAgICAgICAgICAgICAgIHNpbGljb21fbWVj X2xlZF9nZXQobWNfY2Rldi0+c3VibGVkX2luZm9baV0uY2hhbm5lbCk7DQo+ICsgICAgICAgICAg ICAgLyogTWFyayB0aGUgb3ZlcmFsbCBicmlnaHRuZXNzIGFzIExFRF9PTiBpZiBhbnkgb2YgdGhl IHN1YmxlZHMgYXJlIG9uICovDQo+ICsgICAgICAgICAgICAgaWYgKG1jX2NkZXYtPnN1YmxlZF9p bmZvW2ldLmJyaWdodG5lc3MgIT0gTEVEX09GRikNCj4gKyAgICAgICAgICAgICAgICAgICAgIGJy aWdodG5lc3MgPSBMRURfT047DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICByZXR1cm4gYnJpZ2h0 bmVzczsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgc2lsaWNvbV9tZWNfbGVkX21jX2JyaWdo dG5lc3Nfc2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnVtIGxlZF9icmlnaHRuZXNzIGJyaWdodG5lc3MpIHsNCj4gKyAg ICAgc3RydWN0IGxlZF9jbGFzc2Rldl9tYyAqbWNfY2RldiA9IGxjZGV2X3RvX21jY2RldihsZWRf Y2Rldik7DQo+ICsgICAgIGludCBpOw0KPiArDQo+ICsgICAgIGxlZF9tY19jYWxjX2NvbG9yX2Nv bXBvbmVudHMobWNfY2RldiwgYnJpZ2h0bmVzcyk7DQo+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBt Y19jZGV2LT5udW1fY29sb3JzOyBpKyspIHsNCj4gKyAgICAgICAgICAgICBzaWxpY29tX21lY19w b3J0X3NldChtY19jZGV2LT5zdWJsZWRfaW5mb1tpXS5jaGFubmVsLA0KPiArICAgICAgICAgICAg IG1jX2NkZXYtPnN1YmxlZF9pbmZvW2ldLmJyaWdodG5lc3MpOw0KPiArICAgICB9DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgc2lsaWNvbV9ncGlvX2dldF9kaXJlY3Rpb24oc3RydWN0IGdwaW9f Y2hpcCAqZ2MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBv ZmZzZXQpIHsNCj4gKyAgICAgdTggKmNoYW5uZWxzID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoZ2MpOw0K PiArDQo+ICsgICAgIC8qIElucHV0IHJlZ2lzdGVycyBoYXZlIG9mZnNldHMgYmV0d2VlbiBbMHgw MCwgMHgwN10gKi8NCj4gKyAgICAgaWYgKENIQU5ORUxfVE9fT0ZGU0VUKGNoYW5uZWxzW29mZnNl dF0pIDwgTUVDX0dQSU9fSU5fUE9TKQ0KPiArICAgICAgICAgICAgIHJldHVybiBHUElPX0xJTkVf RElSRUNUSU9OX0lOOw0KPiArDQo+ICsgICAgIHJldHVybiBHUElPX0xJTkVfRElSRUNUSU9OX09V VDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBzaWxpY29tX2dwaW9fZGlyZWN0aW9uX2lucHV0 KHN0cnVjdCBncGlvX2NoaXAgKmdjLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgb2Zmc2V0KSB7DQo+ICsgICAgIGludCBkaXJlY3Rpb24gPSBzaWxpY29tX2dw aW9fZ2V0X2RpcmVjdGlvbihnYywgb2Zmc2V0KTsNCj4gKw0KPiArICAgICByZXR1cm4gZGlyZWN0 aW9uID09IEdQSU9fTElORV9ESVJFQ1RJT05fSU4gPyAwIDogLUVJTlZBTDsgfQ0KPiArDQo+ICtz dGF0aWMgdm9pZCBzaWxpY29tX2dwaW9fc2V0KHN0cnVjdCBncGlvX2NoaXAgKmdjLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgb2Zmc2V0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgdmFsdWUpIHsNCj4gKyAgICAgdTggKmNoYW5uZWxzID0gZ3Bpb2No aXBfZ2V0X2RhdGEoZ2MpOw0KPiArICAgICBpbnQgZGlyZWN0aW9uID0gc2lsaWNvbV9ncGlvX2dl dF9kaXJlY3Rpb24oZ2MsIG9mZnNldCk7DQo+ICsgICAgIGludCBjaGFubmVsID0gY2hhbm5lbHNb b2Zmc2V0XTsNCj4gKw0KPiArICAgICBpZiAoZGlyZWN0aW9uID09IEdQSU9fTElORV9ESVJFQ1RJ T05fSU4pDQo+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAgIGlmICh2YWx1ZSkN Cj4gKyAgICAgICAgICAgICBzaWxpY29tX21lY19wb3J0X3NldChjaGFubmVsLCAwKTsNCj4gKyAg ICAgZWxzZSBpZiAodmFsdWUgPT0gMCkNCj4gKyAgICAgICAgICAgICBzaWxpY29tX21lY19wb3J0 X3NldChjaGFubmVsLCAxKTsNCj4gKyAgICAgZWxzZQ0KPiArICAgICAgICAgICAgIHByX2Vycigi V3JvbmcgYXJndW1lbnQgdmFsdWU6ICVkXG4iLCB2YWx1ZSk7IH0NCj4gKw0KPiArc3RhdGljIGlu dCBzaWxpY29tX2dwaW9fZGlyZWN0aW9uX291dHB1dChzdHJ1Y3QgZ3Bpb19jaGlwICpnYywNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IG9mZnNldCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKSB7DQo+ICsgICAgIGludCBkaXJlY3Rpb24gPSBz aWxpY29tX2dwaW9fZ2V0X2RpcmVjdGlvbihnYywgb2Zmc2V0KTsNCj4gKw0KPiArICAgICBpZiAo ZGlyZWN0aW9uID09IEdQSU9fTElORV9ESVJFQ1RJT05fSU4pDQo+ICsgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgc2lsaWNvbV9ncGlvX3NldChnYywgb2Zmc2V0LCB2 YWx1ZSk7DQo+ICsNCj4gKyAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQg c2lsaWNvbV9ncGlvX2dldChzdHJ1Y3QgZ3Bpb19jaGlwICpnYywgdW5zaWduZWQgaW50IA0KPiAr b2Zmc2V0KSB7DQo+ICsgICAgIHU4ICpjaGFubmVscyA9IGdwaW9jaGlwX2dldF9kYXRhKGdjKTsN Cj4gKyAgICAgaW50IGNoYW5uZWwgPSBjaGFubmVsc1tvZmZzZXRdOw0KPiArDQo+ICsgICAgIHJl dHVybiBzaWxpY29tX21lY19wb3J0X2dldChjaGFubmVsKTsgfQ0KPiArDQo+ICtzdGF0aWMgc3Ry dWN0IG1jX3N1YmxlZCBwbGF0XzAyMjJfd2FuX21jX3N1YmxlZF9pbmZvW10gX19pbml0ZGF0YSA9 IHsNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9J RF9XSElURSwNCj4gKyAgICAgICAgICAgICAuYnJpZ2h0bmVzcyA9IDEsDQo+ICsgICAgICAgICAg ICAgLmludGVuc2l0eSA9IDAsDQo+ICsgICAgICAgICAgICAgLmNoYW5uZWwgPSBPRkZTRVRfQklU X1RPX0NIQU5ORUwoMHgwYywgNyksDQo+ICsgICAgIH0sDQo+ICsgICAgIHsNCj4gKyAgICAgICAg ICAgICAuY29sb3JfaW5kZXggPSBMRURfQ09MT1JfSURfWUVMTE9XLA0KPiArICAgICAgICAgICAg IC5icmlnaHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAuaW50ZW5zaXR5ID0gMCwNCj4gKyAg ICAgICAgICAgICAuY2hhbm5lbCA9IE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDBjLCA2KSwNCj4g KyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9D T0xPUl9JRF9SRUQsDQo+ICsgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0KPiArICAgICAg ICAgICAgIC5pbnRlbnNpdHkgPSAwLA0KPiArICAgICAgICAgICAgIC5jaGFubmVsID0gT0ZGU0VU X0JJVF9UT19DSEFOTkVMKDB4MGMsIDUpLA0KPiArICAgICB9LA0KPiArfTsNCj4gKw0KPiArc3Rh dGljIHN0cnVjdCBtY19zdWJsZWQgcGxhdF8wMjIyX3N5c19tY19zdWJsZWRfaW5mb1tdIF9faW5p dGRhdGEgPSB7DQo+ICsgICAgIHsNCj4gKyAgICAgICAgICAgICAuY29sb3JfaW5kZXggPSBMRURf Q09MT1JfSURfV0hJVEUsDQo+ICsgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0KPiArICAg ICAgICAgICAgIC5pbnRlbnNpdHkgPSAwLA0KPiArICAgICAgICAgICAgIC5jaGFubmVsID0gT0ZG U0VUX0JJVF9UT19DSEFOTkVMKDB4MGMsIDQpLA0KPiArICAgICB9LA0KPiArICAgICB7DQo+ICsg ICAgICAgICAgICAgLmNvbG9yX2luZGV4ID0gTEVEX0NPTE9SX0lEX0FNQkVSLA0KPiArICAgICAg ICAgICAgIC5icmlnaHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAuaW50ZW5zaXR5ID0gMCwN Cj4gKyAgICAgICAgICAgICAuY2hhbm5lbCA9IE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDBjLCAz KSwNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9 IExFRF9DT0xPUl9JRF9SRUQsDQo+ICsgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0KPiAr ICAgICAgICAgICAgIC5pbnRlbnNpdHkgPSAwLA0KPiArICAgICAgICAgICAgIC5jaGFubmVsID0g T0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MGMsIDIpLA0KPiArICAgICB9LA0KPiArfTsNCj4gKw0K PiArc3RhdGljIHN0cnVjdCBtY19zdWJsZWQgcGxhdF8wMjIyX3N0YXQxX21jX3N1YmxlZF9pbmZv W10gX19pbml0ZGF0YSA9IHsNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRl eCA9IExFRF9DT0xPUl9JRF9SRUQsDQo+ICsgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0K PiArICAgICAgICAgICAgIC5pbnRlbnNpdHkgPSAwLA0KPiArICAgICAgICAgICAgIC5jaGFubmVs ID0gT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MGMsIDEpLA0KPiArICAgICB9LA0KPiArICAgICB7 DQo+ICsgICAgICAgICAgICAgLmNvbG9yX2luZGV4ID0gTEVEX0NPTE9SX0lEX0dSRUVOLA0KPiAr ICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAuaW50ZW5zaXR5 ID0gMCwNCj4gKyAgICAgICAgICAgICAuY2hhbm5lbCA9IE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgw eDBjLCAwKSwNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9p bmRleCA9IExFRF9DT0xPUl9JRF9CTFVFLA0KPiArICAgICAgICAgICAgIC5icmlnaHRuZXNzID0g MSwNCj4gKyAgICAgICAgICAgICAuaW50ZW5zaXR5ID0gMCwNCj4gKyAgICAgICAgICAgICAuY2hh bm5lbCA9IE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDBkLCA3KSwNCj4gKyAgICAgfSwNCj4gKyAg ICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9JRF9ZRUxMT1cs DQo+ICsgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0KPiArICAgICAgICAgICAgIC5pbnRl bnNpdHkgPSAwLA0KPiArICAgICAgICAgICAgIC5jaGFubmVsID0gT0ZGU0VUX0JJVF9UT19DSEFO TkVMKDB4MGQsIDYpLA0KPiArICAgICB9LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBt Y19zdWJsZWQgcGxhdF8wMjIyX3N0YXQyX21jX3N1YmxlZF9pbmZvW10gX19pbml0ZGF0YSA9IHsN Cj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9JRF9S RUQsDQo+ICsgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0KPiArICAgICAgICAgICAgIC5p bnRlbnNpdHkgPSAwLA0KPiArICAgICAgICAgICAgIC5jaGFubmVsID0gT0ZGU0VUX0JJVF9UT19D SEFOTkVMKDB4MGQsIDUpLA0KPiArICAgICB9LA0KPiArICAgICB7DQo+ICsgICAgICAgICAgICAg LmNvbG9yX2luZGV4ID0gTEVEX0NPTE9SX0lEX0dSRUVOLA0KPiArICAgICAgICAgICAgIC5icmln aHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAuaW50ZW5zaXR5ID0gMCwNCj4gKyAgICAgICAg ICAgICAuY2hhbm5lbCA9IE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDBkLCA0KSwNCj4gKyAgICAg fSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9J RF9CTFVFLA0KPiArICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAg ICAuaW50ZW5zaXR5ID0gMCwNCj4gKyAgICAgICAgICAgICAuY2hhbm5lbCA9IE9GRlNFVF9CSVRf VE9fQ0hBTk5FTCgweDBkLCAzKSwNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAg ICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9JRF9ZRUxMT1csDQo+ICsgICAgICAgICAgICAg LmJyaWdodG5lc3MgPSAxLA0KPiArICAgICAgICAgICAgIC5pbnRlbnNpdHkgPSAwLA0KPiArICAg ICAgICAgICAgIC5jaGFubmVsID0gT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MGQsIDIpLA0KPiAr ICAgICB9LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBtY19zdWJsZWQgcGxhdF8wMjIy X3N0YXQzX21jX3N1YmxlZF9pbmZvW10gX19pbml0ZGF0YSA9IHsNCj4gKyAgICAgew0KPiArICAg ICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9JRF9SRUQsDQo+ICsgICAgICAgICAg ICAgLmJyaWdodG5lc3MgPSAxLA0KPiArICAgICAgICAgICAgIC5pbnRlbnNpdHkgPSAwLA0KPiAr ICAgICAgICAgICAgIC5jaGFubmVsID0gT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MGQsIDEpLA0K PiArICAgICB9LA0KPiArICAgICB7DQo+ICsgICAgICAgICAgICAgLmNvbG9yX2luZGV4ID0gTEVE X0NPTE9SX0lEX0dSRUVOLA0KPiArICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMSwNCj4gKyAg ICAgICAgICAgICAuaW50ZW5zaXR5ID0gMCwNCj4gKyAgICAgICAgICAgICAuY2hhbm5lbCA9IE9G RlNFVF9CSVRfVE9fQ0hBTk5FTCgweDBkLCAwKSwNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiAr ICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9JRF9CTFVFLA0KPiArICAgICAg ICAgICAgIC5icmlnaHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAuaW50ZW5zaXR5ID0gMCwN Cj4gKyAgICAgICAgICAgICAuY2hhbm5lbCA9IE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDBlLCAx KSwNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9 IExFRF9DT0xPUl9JRF9ZRUxMT1csDQo+ICsgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0K PiArICAgICAgICAgICAgIC5pbnRlbnNpdHkgPSAwLA0KPiArICAgICAgICAgICAgIC5jaGFubmVs ID0gT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MGUsIDApLA0KPiArICAgICB9LA0KPiArfTsNCj4g Kw0KPiArc3RhdGljIHN0cnVjdCBsZWRfY2xhc3NkZXZfbWMgcGxhdF8wMjIyX21jX2xlZF9pbmZv W10gX19pbml0ZGF0YSA9IHsNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5sZWRfY2RldiA9 IHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIC5uYW1lID0gIm11bHRpY29sb3I6d2FuIiwNCj4g KyAgICAgICAgICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgIC5tYXhfYnJpZ2h0bmVzcyA9IDEsDQo+ICsgICAgICAgICAgICAgICAgICAgICAuYnJp Z2h0bmVzc19zZXQgPSBzaWxpY29tX21lY19sZWRfbWNfYnJpZ2h0bmVzc19zZXQsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAuYnJpZ2h0bmVzc19nZXQgPSBzaWxpY29tX21lY19sZWRfbWNfYnJp Z2h0bmVzc19nZXQsDQo+ICsgICAgICAgICAgICAgfSwNCj4gKyAgICAgICAgICAgICAubnVtX2Nv bG9ycyA9IEFSUkFZX1NJWkUocGxhdF8wMjIyX3dhbl9tY19zdWJsZWRfaW5mbyksDQo+ICsgICAg ICAgICAgICAgLnN1YmxlZF9pbmZvID0gcGxhdF8wMjIyX3dhbl9tY19zdWJsZWRfaW5mbywNCj4g KyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5sZWRfY2RldiA9IHsNCj4gKyAg ICAgICAgICAgICAgICAgICAgIC5uYW1lID0gIm11bHRpY29sb3I6c3lzIiwNCj4gKyAgICAgICAg ICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIC5t YXhfYnJpZ2h0bmVzcyA9IDEsDQo+ICsgICAgICAgICAgICAgICAgICAgICAuYnJpZ2h0bmVzc19z ZXQgPSBzaWxpY29tX21lY19sZWRfbWNfYnJpZ2h0bmVzc19zZXQsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAuYnJpZ2h0bmVzc19nZXQgPSBzaWxpY29tX21lY19sZWRfbWNfYnJpZ2h0bmVzc19n ZXQsDQo+ICsgICAgICAgICAgICAgfSwNCj4gKyAgICAgICAgICAgICAubnVtX2NvbG9ycyA9IEFS UkFZX1NJWkUocGxhdF8wMjIyX3N5c19tY19zdWJsZWRfaW5mbyksDQo+ICsgICAgICAgICAgICAg LnN1YmxlZF9pbmZvID0gcGxhdF8wMjIyX3N5c19tY19zdWJsZWRfaW5mbywNCj4gKyAgICAgfSwN Cj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5sZWRfY2RldiA9IHsNCj4gKyAgICAgICAgICAg ICAgICAgICAgIC5uYW1lID0gIm11bHRpY29sb3I6c3RhdDEiLA0KPiArICAgICAgICAgICAgICAg ICAgICAgLmJyaWdodG5lc3MgPSAwLA0KPiArICAgICAgICAgICAgICAgICAgICAgLm1heF9icmln aHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIC5icmlnaHRuZXNzX3NldCA9IHNp bGljb21fbWVjX2xlZF9tY19icmlnaHRuZXNzX3NldCwNCj4gKyAgICAgICAgICAgICAgICAgICAg IC5icmlnaHRuZXNzX2dldCA9IHNpbGljb21fbWVjX2xlZF9tY19icmlnaHRuZXNzX2dldCwNCj4g KyAgICAgICAgICAgICB9LA0KPiArICAgICAgICAgICAgIC5udW1fY29sb3JzID0gQVJSQVlfU0la RShwbGF0XzAyMjJfc3RhdDFfbWNfc3VibGVkX2luZm8pLA0KPiArICAgICAgICAgICAgIC5zdWJs ZWRfaW5mbyA9IHBsYXRfMDIyMl9zdGF0MV9tY19zdWJsZWRfaW5mbywNCj4gKyAgICAgfSwNCj4g KyAgICAgew0KPiArICAgICAgICAgICAgIC5sZWRfY2RldiA9IHsNCj4gKyAgICAgICAgICAgICAg ICAgICAgIC5uYW1lID0gIm11bHRpY29sb3I6c3RhdDIiLA0KPiArICAgICAgICAgICAgICAgICAg ICAgLmJyaWdodG5lc3MgPSAwLA0KPiArICAgICAgICAgICAgICAgICAgICAgLm1heF9icmlnaHRu ZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIC5icmlnaHRuZXNzX3NldCA9IHNpbGlj b21fbWVjX2xlZF9tY19icmlnaHRuZXNzX3NldCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIC5i cmlnaHRuZXNzX2dldCA9IHNpbGljb21fbWVjX2xlZF9tY19icmlnaHRuZXNzX2dldCwNCj4gKyAg ICAgICAgICAgICB9LA0KPiArICAgICAgICAgICAgIC5udW1fY29sb3JzID0gQVJSQVlfU0laRShw bGF0XzAyMjJfc3RhdDJfbWNfc3VibGVkX2luZm8pLA0KPiArICAgICAgICAgICAgIC5zdWJsZWRf aW5mbyA9IHBsYXRfMDIyMl9zdGF0Ml9tY19zdWJsZWRfaW5mbywNCj4gKyAgICAgfSwNCj4gKyAg ICAgew0KPiArICAgICAgICAgICAgIC5sZWRfY2RldiA9IHsNCj4gKyAgICAgICAgICAgICAgICAg ICAgIC5uYW1lID0gIm11bHRpY29sb3I6c3RhdDMiLA0KPiArICAgICAgICAgICAgICAgICAgICAg LmJyaWdodG5lc3MgPSAwLA0KPiArICAgICAgICAgICAgICAgICAgICAgLm1heF9icmlnaHRuZXNz ID0gMSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIC5icmlnaHRuZXNzX3NldCA9IHNpbGljb21f bWVjX2xlZF9tY19icmlnaHRuZXNzX3NldCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIC5icmln aHRuZXNzX2dldCA9IHNpbGljb21fbWVjX2xlZF9tY19icmlnaHRuZXNzX2dldCwNCj4gKyAgICAg ICAgICAgICB9LA0KPiArICAgICAgICAgICAgIC5udW1fY29sb3JzID0gQVJSQVlfU0laRShwbGF0 XzAyMjJfc3RhdDNfbWNfc3VibGVkX2luZm8pLA0KPiArICAgICAgICAgICAgIC5zdWJsZWRfaW5m byA9IHBsYXRfMDIyMl9zdGF0M19tY19zdWJsZWRfaW5mbywNCj4gKyAgICAgfSwNCj4gKyAgICAg eyB9LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBncGlvX2NoaXAgc2lsaWNvbV9ncGlv X2NoaXAgPSB7DQo+ICsgICAgIC5sYWJlbCA9ICJzaWxpY29tLWdwaW8iLA0KPiArICAgICAuZ2V0 X2RpcmVjdGlvbiA9IHNpbGljb21fZ3Bpb19nZXRfZGlyZWN0aW9uLA0KPiArICAgICAuZGlyZWN0 aW9uX2lucHV0ID0gc2lsaWNvbV9ncGlvX2RpcmVjdGlvbl9pbnB1dCwNCj4gKyAgICAgLmRpcmVj dGlvbl9vdXRwdXQgPSBzaWxpY29tX2dwaW9fZGlyZWN0aW9uX291dHB1dCwNCj4gKyAgICAgLmdl dCA9IHNpbGljb21fZ3Bpb19nZXQsDQo+ICsgICAgIC5zZXQgPSBzaWxpY29tX2dwaW9fc2V0LA0K PiArICAgICAuYmFzZSA9IC0xLA0KPiArICAgICAubmdwaW8gPSBBUlJBWV9TSVpFKHBsYXRfMDIy Ml9ncGlvX2NoYW5uZWxzKSwNCj4gKyAgICAgLm5hbWVzID0gcGxhdF8wMjIyX2dwaW9fbmFtZXMs DQo+ICsgICAgIC8qIFdlJ3JlIHVzaW5nIGEgbXV0ZXggdG8gcHJvdGVjdCB0aGUgaW5kaXJlY3Qg YWNjZXNzLCBzbyB3ZSBjYW4gc2xlZXANCj4gKyAgICAgICogaWYgdGhlIGxvY2sgYmxvY2tzDQo+ ICsgICAgICAqLw0KPiArICAgICAuY2FuX3NsZWVwID0gdHJ1ZSwNCj4gK307DQo+ICsNCj4gK3N0 YXRpYyBzdHJ1Y3Qgc2lsaWNvbV9wbGF0Zm9ybV9pbmZvIHNpbGljb21fcGxhdF8wMjIyX2NvcmRv YmFfaW5mbyBfX2luaXRkYXRhID0gew0KPiArICAgICAuaW9fYmFzZSA9IE1FQ19JT19CQVNFLA0K PiArICAgICAuaW9fbGVuID0gTUVDX0lPX0xFTiwNCj4gKyAgICAgLmxlZF9pbmZvID0gcGxhdF8w MjIyX21jX2xlZF9pbmZvLA0KPiArICAgICAuZ3Bpb2NoaXAgPSAmc2lsaWNvbV9ncGlvX2NoaXAs DQo+ICsgICAgIC5ncGlvX2NoYW5uZWxzID0gcGxhdF8wMjIyX2dwaW9fY2hhbm5lbHMsDQo+ICsg ICAgIC8qIFRoZSBvcmlnaW5hbCBnZW5lcmljIGNvcmRvYmEgZG9lcyBub3QgaGF2ZSB0aGUgbGFz dCA0IG91dHB1dHMgb2YgdGhlDQo+ICsgICAgICAqIHBsYXRfMDIyMiB2YXJpYW50LCB0aGUgcmVz dCBhcmUgdGhlIHNhbWUsIHNvIHVzZSB0aGUgc2FtZSBsb25nZXIgbGlzdCwNCj4gKyAgICAgICog YnV0IGlnbm9yZSB0aGUgbGFzdCBlbnRyaWVzIGhlcmUNCj4gKyAgICAgICovDQo+ICsgICAgIC5u Z3BpbyA9IEFSUkFZX1NJWkUocGxhdF8wMjIyX2dwaW9fY2hhbm5lbHMpLA0KPiArDQo+ICt9Ow0K PiArDQo+ICtzdGF0aWMgc3RydWN0IG1jX3N1YmxlZCBjb3Jkb2JhX2ZwX2xlZnRfbWNfc3VibGVk X2luZm9bXSBfX2luaXRkYXRhID0gew0KPiArICAgICB7DQo+ICsgICAgICAgICAgICAgLmNvbG9y X2luZGV4ID0gTEVEX0NPTE9SX0lEX1JFRCwNCj4gKyAgICAgICAgICAgICAuYnJpZ2h0bmVzcyA9 IDEsDQo+ICsgICAgICAgICAgICAgLmludGVuc2l0eSA9IDAsDQo+ICsgICAgICAgICAgICAgLmNo YW5uZWwgPSBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgwOCwgNiksDQo+ICsgICAgIH0sDQo+ICsg ICAgIHsNCj4gKyAgICAgICAgICAgICAuY29sb3JfaW5kZXggPSBMRURfQ09MT1JfSURfR1JFRU4s DQo+ICsgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0KPiArICAgICAgICAgICAgIC5pbnRl bnNpdHkgPSAwLA0KPiArICAgICAgICAgICAgIC5jaGFubmVsID0gT0ZGU0VUX0JJVF9UT19DSEFO TkVMKDB4MDgsIDUpLA0KPiArICAgICB9LA0KPiArICAgICB7DQo+ICsgICAgICAgICAgICAgLmNv bG9yX2luZGV4ID0gTEVEX0NPTE9SX0lEX0JMVUUsDQo+ICsgICAgICAgICAgICAgLmJyaWdodG5l c3MgPSAxLA0KPiArICAgICAgICAgICAgIC5pbnRlbnNpdHkgPSAwLA0KPiArICAgICAgICAgICAg IC5jaGFubmVsID0gT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MDksIDcpLA0KPiArICAgICB9LA0K PiArICAgICB7DQo+ICsgICAgICAgICAgICAgLmNvbG9yX2luZGV4ID0gTEVEX0NPTE9SX0lEX0FN QkVSLA0KPiArICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAu aW50ZW5zaXR5ID0gMCwNCj4gKyAgICAgICAgICAgICAuY2hhbm5lbCA9IE9GRlNFVF9CSVRfVE9f Q0hBTk5FTCgweDA5LCA0KSwNCj4gKyAgICAgfSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBzdHJ1 Y3QgbWNfc3VibGVkIGNvcmRvYmFfZnBfY2VudGVyX21jX3N1YmxlZF9pbmZvW10gX19pbml0ZGF0 YSA9IHsNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xP Ul9JRF9SRUQsDQo+ICsgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0KPiArICAgICAgICAg ICAgIC5pbnRlbnNpdHkgPSAwLA0KPiArICAgICAgICAgICAgIC5jaGFubmVsID0gT0ZGU0VUX0JJ VF9UT19DSEFOTkVMKDB4MDgsIDcpLA0KPiArICAgICB9LA0KPiArICAgICB7DQo+ICsgICAgICAg ICAgICAgLmNvbG9yX2luZGV4ID0gTEVEX0NPTE9SX0lEX0dSRUVOLA0KPiArICAgICAgICAgICAg IC5icmlnaHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAuaW50ZW5zaXR5ID0gMCwNCj4gKyAg ICAgICAgICAgICAuY2hhbm5lbCA9IE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDA4LCA0KSwNCj4g KyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9D T0xPUl9JRF9CTFVFLA0KPiArICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMSwNCj4gKyAgICAg ICAgICAgICAuaW50ZW5zaXR5ID0gMCwNCj4gKyAgICAgICAgICAgICAuY2hhbm5lbCA9IE9GRlNF VF9CSVRfVE9fQ0hBTk5FTCgweDA4LCAzKSwNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAg ICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9JRF9BTUJFUiwNCj4gKyAgICAgICAg ICAgICAuYnJpZ2h0bmVzcyA9IDEsDQo+ICsgICAgICAgICAgICAgLmludGVuc2l0eSA9IDAsDQo+ ICsgICAgICAgICAgICAgLmNoYW5uZWwgPSBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgwOSwgNiks DQo+ICsgICAgIH0sDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgc3RydWN0IG1jX3N1YmxlZCBjb3Jk b2JhX2ZwX3JpZ2h0X21jX3N1YmxlZF9pbmZvW10gX19pbml0ZGF0YSA9IHsNCj4gKyAgICAgew0K PiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9JRF9SRUQsDQo+ICsgICAg ICAgICAgICAgLmJyaWdodG5lc3MgPSAxLA0KPiArICAgICAgICAgICAgIC5pbnRlbnNpdHkgPSAw LA0KPiArICAgICAgICAgICAgIC5jaGFubmVsID0gT0ZGU0VUX0JJVF9UT19DSEFOTkVMKDB4MDgs IDIpLA0KPiArICAgICB9LA0KPiArICAgICB7DQo+ICsgICAgICAgICAgICAgLmNvbG9yX2luZGV4 ID0gTEVEX0NPTE9SX0lEX0dSRUVOLA0KPiArICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMSwN Cj4gKyAgICAgICAgICAgICAuaW50ZW5zaXR5ID0gMCwNCj4gKyAgICAgICAgICAgICAuY2hhbm5l bCA9IE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgweDA4LCAxKSwNCj4gKyAgICAgfSwNCj4gKyAgICAg ew0KPiArICAgICAgICAgICAgIC5jb2xvcl9pbmRleCA9IExFRF9DT0xPUl9JRF9CTFVFLA0KPiAr ICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAuaW50ZW5zaXR5 ID0gMCwNCj4gKyAgICAgICAgICAgICAuY2hhbm5lbCA9IE9GRlNFVF9CSVRfVE9fQ0hBTk5FTCgw eDA4LCAwKSwNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jb2xvcl9p bmRleCA9IExFRF9DT0xPUl9JRF9BTUJFUiwNCj4gKyAgICAgICAgICAgICAuYnJpZ2h0bmVzcyA9 IDEsDQo+ICsgICAgICAgICAgICAgLmludGVuc2l0eSA9IDAsDQo+ICsgICAgICAgICAgICAgLmNo YW5uZWwgPSBPRkZTRVRfQklUX1RPX0NIQU5ORUwoMHgwOSwgNSksDQo+ICsgICAgIH0sDQo+ICt9 Ow0KPiArDQo+ICtzdGF0aWMgc3RydWN0IGxlZF9jbGFzc2Rldl9tYyBjb3Jkb2JhX21jX2xlZF9p bmZvW10gX19pbml0ZGF0YSA9IHsNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5sZWRfY2Rl diA9IHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIC5uYW1lID0gIm11bHRpY29sb3I6ZnBfbGVm dCIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAuYnJpZ2h0bmVzcyA9IDAsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAubWF4X2JyaWdodG5lc3MgPSAxLA0KPiArICAgICAgICAgICAgICAgICAg ICAgLmJyaWdodG5lc3Nfc2V0ID0gc2lsaWNvbV9tZWNfbGVkX21jX2JyaWdodG5lc3Nfc2V0LA0K PiArICAgICAgICAgICAgICAgICAgICAgLmJyaWdodG5lc3NfZ2V0ID0gc2lsaWNvbV9tZWNfbGVk X21jX2JyaWdodG5lc3NfZ2V0LA0KPiArICAgICAgICAgICAgIH0sDQo+ICsgICAgICAgICAgICAg Lm51bV9jb2xvcnMgPSBBUlJBWV9TSVpFKGNvcmRvYmFfZnBfbGVmdF9tY19zdWJsZWRfaW5mbyks DQo+ICsgICAgICAgICAgICAgLnN1YmxlZF9pbmZvID0gY29yZG9iYV9mcF9sZWZ0X21jX3N1Ymxl ZF9pbmZvLA0KPiArICAgICB9LA0KPiArICAgICB7DQo+ICsgICAgICAgICAgICAgLmxlZF9jZGV2 ID0gew0KPiArICAgICAgICAgICAgICAgICAgICAgLm5hbWUgPSAibXVsdGljb2xvcjpmcF9jZW50 ZXIiLA0KPiArICAgICAgICAgICAgICAgICAgICAgLmJyaWdodG5lc3MgPSAwLA0KPiArICAgICAg ICAgICAgICAgICAgICAgLm1heF9icmlnaHRuZXNzID0gMSwNCj4gKyAgICAgICAgICAgICAgICAg ICAgIC5icmlnaHRuZXNzX3NldCA9IHNpbGljb21fbWVjX2xlZF9tY19icmlnaHRuZXNzX3NldCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgIC5icmlnaHRuZXNzX2dldCA9IHNpbGljb21fbWVjX2xl ZF9tY19icmlnaHRuZXNzX2dldCwNCj4gKyAgICAgICAgICAgICB9LA0KPiArICAgICAgICAgICAg IC5udW1fY29sb3JzID0gQVJSQVlfU0laRShjb3Jkb2JhX2ZwX2NlbnRlcl9tY19zdWJsZWRfaW5m byksDQo+ICsgICAgICAgICAgICAgLnN1YmxlZF9pbmZvID0gY29yZG9iYV9mcF9jZW50ZXJfbWNf c3VibGVkX2luZm8sDQo+ICsgICAgIH0sDQo+ICsgICAgIHsNCj4gKyAgICAgICAgICAgICAubGVk X2NkZXYgPSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAubmFtZSA9ICJtdWx0aWNvbG9yOmZw X3JpZ2h0IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIC5icmlnaHRuZXNzID0gMCwNCj4gKyAg ICAgICAgICAgICAgICAgICAgIC5tYXhfYnJpZ2h0bmVzcyA9IDEsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAuYnJpZ2h0bmVzc19zZXQgPSBzaWxpY29tX21lY19sZWRfbWNfYnJpZ2h0bmVzc19z ZXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAuYnJpZ2h0bmVzc19nZXQgPSBzaWxpY29tX21l Y19sZWRfbWNfYnJpZ2h0bmVzc19nZXQsDQo+ICsgICAgICAgICAgICAgfSwNCj4gKyAgICAgICAg ICAgICAubnVtX2NvbG9ycyA9IEFSUkFZX1NJWkUoY29yZG9iYV9mcF9yaWdodF9tY19zdWJsZWRf aW5mbyksDQo+ICsgICAgICAgICAgICAgLnN1YmxlZF9pbmZvID0gY29yZG9iYV9mcF9yaWdodF9t Y19zdWJsZWRfaW5mbywNCj4gKyAgICAgfSwNCj4gKyAgICAgeyB9LA0KPiArfTsNCj4gKw0KPiAr c3RhdGljIHN0cnVjdCBzaWxpY29tX3BsYXRmb3JtX2luZm8gc2lsaWNvbV9nZW5lcmljX2NvcmRv YmFfaW5mbyBfX2luaXRkYXRhID0gew0KPiArICAgICAuaW9fYmFzZSA9IE1FQ19JT19CQVNFLA0K PiArICAgICAuaW9fbGVuID0gTUVDX0lPX0xFTiwNCj4gKyAgICAgLmxlZF9pbmZvID0gY29yZG9i YV9tY19sZWRfaW5mbywNCj4gKyAgICAgLmdwaW9jaGlwID0gJnNpbGljb21fZ3Bpb19jaGlwLA0K PiArICAgICAuZ3Bpb19jaGFubmVscyA9IHBsYXRfMDIyMl9ncGlvX2NoYW5uZWxzLA0KPiArICAg ICAubmdwaW8gPSBBUlJBWV9TSVpFKHBsYXRfMDIyMl9ncGlvX2NoYW5uZWxzKSwNCj4gK307DQo+ ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNpbGljb21fcGxhdGZvcm1fZHJp dmVyID0gew0KPiArICAgICAuZHJpdmVyID0gew0KPiArICAgICAgICAgICAgIC5uYW1lID0gInNp bGljb20tcGxhdGZvcm0iLA0KPiArICAgICB9LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHNzaXpl X3QgZWZ1c2Vfc3RhdHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgDQo+ICsqYnVmKSB7DQo+ICsgICAg IHUzMiByZWc7DQo+ICsNCj4gKyAgICAgbXV0ZXhfbG9jaygmbWVjX2lvX211dGV4KTsNCj4gKyAg ICAgLyogU2VsZWN0IG1lbW9yeSByZWdpb24gKi8NCj4gKyAgICAgb3V0YihJT19SRUdfQkFOSywg RUNfQUREUl9NU0IpOw0KPiArICAgICBvdXRiKE1FQ19FRlVTRV9MU0JfQUREUiwgRUNfQUREUl9M U0IpOw0KPiArDQo+ICsgICAgIC8qIEdldCBjdXJyZW50IGRhdGEgZnJvbSB0aGUgYWRkcmVzcyAq Lw0KPiArICAgICByZWcgPSBpbmwoTUVDX0RBVEFfT0ZGU0VUKERFRkFVTFRfQ0hBTl9MTykpOw0K PiArICAgICBtdXRleF91bmxvY2soJm1lY19pb19tdXRleCk7DQo+ICsNCj4gKyAgICAgZWZ1c2Vf c3RhdHVzID0gcmVnICYgMHgxOw0KPiArDQo+ICsgICAgIHJldHVybiBzcHJpbnRmKGJ1ZiwgIiVk XG4iLCBlZnVzZV9zdGF0dXMpOyB9DQo+ICsNCj4gK3N0YXRpYyBzc2l6ZV90IHVjX3ZlcnNpb25f c2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciANCj4gKypidWYpIHsNCj4gKyAgICAgdTMyIHJlZzsNCj4gKyAg ICAgaW50IHVjX3ZlcnNpb247DQo+ICsNCj4gKyAgICAgbXV0ZXhfbG9jaygmbWVjX2lvX211dGV4 KTsNCj4gKyAgICAgb3V0YihJT19SRUdfQkFOSywgRUNfQUREUl9NU0IpOw0KPiArICAgICBvdXRi KERFRkFVTFRfQ0hBTl9MTywgRUNfQUREUl9MU0IpOw0KPiArDQo+ICsgICAgIHJlZyA9IGlubChN RUNfREFUQV9PRkZTRVQoREVGQVVMVF9DSEFOX0xPKSk7DQo+ICsgICAgIG11dGV4X3VubG9jaygm bWVjX2lvX211dGV4KTsNCj4gKyAgICAgdWNfdmVyc2lvbiA9IEZJRUxEX0dFVChHRU5NQVNLKDE1 LCA4KSwgcmVnKTsNCj4gKyAgICAgaWYgKHVjX3ZlcnNpb24gPj0gMTkyKQ0KPiArICAgICAgICAg ICAgIHByX2VycigidWMgdmVyc2lvbiBub3Qgc3VwcG9ydGVkXG4iKTsNCj4gKw0KPiArICAgICB1 Y192ZXJzaW9uID0gRklFTERfR0VUKE1FQ19WRVJTSU9OX01BSk9SLCByZWcpICogQ0VOVEkgKw0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUVMRF9HRVQoTUVDX1ZFUlNJT05fTUlO T1IsIHJlZyk7DQo+ICsNCj4gKyAgICAgbWVjX3VjX3ZlcnNpb24gPSB1Y192ZXJzaW9uOw0KPiAr ICAgICByZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgbWVjX3VjX3ZlcnNpb24pOyB9DQo+ICsN Cj4gK3N0YXRpYyBzc2l6ZV90IHBvd2VyX2N5Y2xlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgDQo+ICsq YnVmKSB7DQo+ICsgICAgIHJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBwb3dlcl9jeWNsZSk7 IH0NCj4gKw0KPiArc3RhdGljIHZvaWQgcG93ZXJjeWNsZV91Yyh2b2lkKQ0KPiArew0KPiArICAg ICBtdXRleF9sb2NrKCZtZWNfaW9fbXV0ZXgpOw0KPiArICAgICAvKiBTZWxlY3QgbWVtb3J5IHJl Z2lvbiAqLw0KPiArICAgICBvdXRiKElPX1JFR19CQU5LLCBFQ19BRERSX01TQik7DQo+ICsgICAg IG91dGIoTUVDX1BPV0VSX0NZQ0xFX0FERFIsIEVDX0FERFJfTFNCKTsNCj4gKw0KPiArICAgICAv KiBTZXQgdG8gMSBmb3IgY3VycmVudCBkYXRhIGZyb20gdGhlIGFkZHJlc3MgKi8NCj4gKyAgICAg b3V0YigxLCBNRUNfREFUQV9PRkZTRVQoREVGQVVMVF9DSEFOX0xPKSk7DQo+ICsgICAgIG11dGV4 X3VubG9jaygmbWVjX2lvX211dGV4KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHNzaXplX3QgcG93 ZXJfY3ljbGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IA0KPiArY2hhciAqYnVmLCBzaXplX3QgY291 bnQpIHsNCj4gKyAgICAgaWYgKHNzY2FuZihidWYsICIlZHUiLCAmcG93ZXJfY3ljbGUpICE9IDEp IHsNCj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFkIHBvd2VyX2N5 Y2xlXG4iKTsNCj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICAgfQ0KPiAr ICAgICBpZiAocG93ZXJfY3ljbGUgPiAwKQ0KPiArICAgICAgICAgICAgIHBvd2VyY3ljbGVfdWMo KTsNCj4gKw0KPiArICAgICByZXR1cm4gY291bnQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSBteV9kZXZfYXR0cltdID0gew0KPiArICAgICB7DQo+ICsgICAg ICAgICAgICAgLmF0dHIgPSB7Lm5hbWUgPSAiZWZ1c2Vfc3RhdHVzIiwgLm1vZGUgPSAwNjQ0fSwN Cj4gKyAgICAgICAgICAgICAuc2hvdyA9IGVmdXNlX3N0YXR1c19zaG93LA0KPiArICAgICAgICAg ICAgIC5zdG9yZSA9IE5VTEwNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAg IC5hdHRyID0gey5uYW1lID0gInVjX3ZlcnNpb24iLCAubW9kZSA9IDA2NDR9LA0KPiArICAgICAg ICAgICAgIC5zaG93ID0gdWNfdmVyc2lvbl9zaG93LA0KPiArICAgICAgICAgICAgIC5zdG9yZSA9 IE5VTEwNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5hdHRyID0gey5u YW1lID0gInBvd2VyX2N5Y2xlIiwgLm1vZGUgPSAwNjQ0fSwNCj4gKyAgICAgICAgICAgICAuc2hv dyA9IHBvd2VyX2N5Y2xlX3Nob3csDQo+ICsgICAgICAgICAgICAgLnN0b3JlID0gcG93ZXJfY3lj bGVfc3RvcmUNCj4gKyAgICAgfSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQgX19pbml0IHNp bGljb21fbWNfbGVkc19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsZWRfY2xhc3NkZXZfbWMgKm1jX2xlZHMp IHsNCj4gKyAgICAgc3RydWN0IGxlZF9jbGFzc2Rldl9tYyAqbGVkOw0KPiArICAgICBpbnQgaSwg ZXJyOw0KPiArICAgICBpbnQgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgbWNfc3VibGVkKTsNCj4gKw0K PiArICAgICBmb3IgKGkgPSAwOyBtY19sZWRzW2ldLmxlZF9jZGV2Lm5hbWU7IGkrKykgew0KPiAr DQo+ICsgICAgICAgICAgICAgbGVkID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpsZWQpLCBH RlBfS0VSTkVMKTsNCj4gKyAgICAgICAgICAgICBpZiAoIWxlZCkNCj4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiArICAgICAgICAgICAgIG1lbWNweShsZWQsICZtY19s ZWRzW2ldLCBzaXplb2YoKmxlZCkpOw0KPiArDQo+ICsgICAgICAgICAgICAgbGVkLT5zdWJsZWRf aW5mbyA9IGRldm1fa3phbGxvYyhkZXYsIGxlZC0+bnVtX2NvbG9ycyAqIHNpemUsIEdGUF9LRVJO RUwpOw0KPiArICAgICAgICAgICAgIGlmICghbGVkLT5zdWJsZWRfaW5mbykNCj4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiArICAgICAgICAgICAgIG1lbWNweShsZWQt PnN1YmxlZF9pbmZvLCBtY19sZWRzW2ldLnN1YmxlZF9pbmZvLCANCj4gKyBsZWQtPm51bV9jb2xv cnMgKiBzaXplKTsNCj4gKw0KPiArICAgICAgICAgICAgIGVyciA9IGRldm1fbGVkX2NsYXNzZGV2 X211bHRpY29sb3JfcmVnaXN0ZXIoZGV2LCBsZWQpOw0KPiArICAgICAgICAgICAgIGlmIChlcnIp IHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lz dGVyWyVkXTogJWRcbiIsIGksIGVycik7DQo+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4g ZXJyOw0KPiArICAgICAgICAgICAgIH0NCj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIHJldHVybiAw Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdTMyIHJwbV9nZXQodm9pZCkNCj4gK3sNCj4gKyAgICAg dTMyIHJlZzsNCj4gKw0KPiArICAgICBtdXRleF9sb2NrKCZtZWNfaW9fbXV0ZXgpOw0KPiArICAg ICAvKiBTZWxlY3QgbWVtb3J5IHJlZ2lvbiAqLw0KPiArICAgICBvdXRiKElPX1JFR19CQU5LLCBF Q19BRERSX01TQik7DQo+ICsgICAgIG91dGIoREVGQVVMVF9DSEFOX0xPX1QsIEVDX0FERFJfTFNC KTsNCj4gKyAgICAgLyogR2V0IGN1cnJlbnQgZGF0YSBmcm9tIHRoZSBhZGRyZXNzICovDQo+ICsg ICAgIHJlZyA9IGludyhNRUNfREFUQV9PRkZTRVQoREVGQVVMVF9DSEFOX0xPKSk7DQo+ICsgICAg IG11dGV4X3VubG9jaygmbWVjX2lvX211dGV4KTsNCj4gKw0KPiArICAgICByZXR1cm4gcmVnOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgdTMyIHRlbXBfZ2V0KHZvaWQpDQo+ICt7DQo+ICsgICAgIHUz MiByZWc7DQo+ICsNCj4gKyAgICAgbXV0ZXhfbG9jaygmbWVjX2lvX211dGV4KTsNCj4gKyAgICAg LyogU2VsZWN0IG1lbW9yeSByZWdpb24gKi8NCj4gKyAgICAgb3V0YihJT19SRUdfQkFOSywgRUNf QUREUl9NU0IpOw0KPiArICAgICBvdXRiKERFRkFVTFRfQ0hBTl9MT19ULCBFQ19BRERSX0xTQik7 DQo+ICsgICAgIC8qIEdldCBjdXJyZW50IGRhdGEgZnJvbSB0aGUgYWRkcmVzcyAqLw0KPiArICAg ICByZWcgPSBpbmwoTUVDX0RBVEFfT0ZGU0VUKERFRkFVTFRfQ0hBTl9MTykpOw0KPiArICAgICBt dXRleF91bmxvY2soJm1lY19pb19tdXRleCk7DQo+ICsNCj4gKyAgICAgcmV0dXJuIEZJRUxEX0dF VChHRU5NQVNLKDMxLCAxNiksIHJlZykgKiBDRU5USTsgfQ0KPiArDQo+ICtzdGF0aWMgdW1vZGVf dCBzaWxpY29tX2Zhbl9jb250cm9sX2Zhbl9pc192aXNpYmxlKGNvbnN0IHUzMiBhdHRyKSB7DQo+ ICsgICAgIHN3aXRjaCAoYXR0cikgew0KPiArICAgICBjYXNlIGh3bW9uX2Zhbl9pbnB1dDoNCj4g KyAgICAgY2FzZSBod21vbl9mYW5fbGFiZWw6DQo+ICsgICAgICAgICAgICAgcmV0dXJuIDA0NDQ7 DQo+ICsgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgIH0N Cj4gK30NCj4gKw0KPiArc3RhdGljIHVtb2RlX3Qgc2lsaWNvbV9mYW5fY29udHJvbF90ZW1wX2lz X3Zpc2libGUoY29uc3QgdTMyIGF0dHIpIHsNCj4gKyAgICAgc3dpdGNoIChhdHRyKSB7DQo+ICsg ICAgIGNhc2UgaHdtb25fdGVtcF9pbnB1dDoNCj4gKyAgICAgY2FzZSBod21vbl90ZW1wX2xhYmVs Og0KPiArICAgICAgICAgICAgIHJldHVybiAwNDQ0Ow0KPiArICAgICBkZWZhdWx0Og0KPiArICAg ICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICB9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQg c2lsaWNvbV9mYW5fY29udHJvbF9yZWFkX2ZhbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiBhdHRy LCANCj4gK2xvbmcgKnZhbCkgew0KPiArICAgICBzd2l0Y2ggKGF0dHIpIHsNCj4gKyAgICAgY2Fz ZSBod21vbl9mYW5faW5wdXQ6DQo+ICsgICAgICAgICAgICAgKnZhbCA9IHJwbV9nZXQoKTsNCj4g KyAgICAgICAgICAgICByZXR1cm4gMDsNCj4gKyAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAg ICByZXR1cm4gLUVPUE5PVFNVUFA7DQo+ICsgICAgIH0NCj4gK30NCj4gKw0KPiArc3RhdGljIGlu dCBzaWxpY29tX2Zhbl9jb250cm9sX3JlYWRfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiAN Cj4gK2F0dHIsIGxvbmcgKnZhbCkgew0KPiArICAgICBzd2l0Y2ggKGF0dHIpIHsNCj4gKyAgICAg Y2FzZSBod21vbl90ZW1wX2lucHV0Og0KPiArICAgICAgICAgICAgICp2YWwgPSB0ZW1wX2dldCgp Ow0KPiArICAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICBkZWZhdWx0Og0KPiArICAgICAg ICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsNCj4gKyAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgdW1vZGVfdCBzaWxpY29tX2Zhbl9jb250cm9sX2lzX3Zpc2libGUoY29uc3Qgdm9pZCAqZGF0 YSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaHdtb25f c2Vuc29yX3R5cGVzIHR5cGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1MzIgYXR0ciwgaW50IGNoYW5uZWwpIHsNCj4gKyAgICAgc3dpdGNoICh0eXBlKSB7DQo+ ICsgICAgIGNhc2UgaHdtb25fZmFuOg0KPiArICAgICAgICAgICAgIHJldHVybiBzaWxpY29tX2Zh bl9jb250cm9sX2Zhbl9pc192aXNpYmxlKGF0dHIpOw0KPiArICAgICBjYXNlIGh3bW9uX3RlbXA6 DQo+ICsgICAgICAgICAgICAgcmV0dXJuIHNpbGljb21fZmFuX2NvbnRyb2xfdGVtcF9pc192aXNp YmxlKGF0dHIpOw0KPiArICAgICBkZWZhdWx0Og0KPiArICAgICAgICAgICAgIHJldHVybiAwOw0K PiArICAgICB9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgc2lsaWNvbV9mYW5fY29udHJvbF9y ZWFkKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIGh3bW9uX3NlbnNvcl90eXBlcyB0eXBlLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHUzMiBhdHRyLCBpbnQgY2hhbm5lbCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICp2YWwpIHsNCj4gKyAgICAgc3dpdGNo ICh0eXBlKSB7DQo+ICsgICAgIGNhc2UgaHdtb25fZmFuOg0KPiArICAgICAgICAgICAgIHJldHVy biBzaWxpY29tX2Zhbl9jb250cm9sX3JlYWRfZmFuKGRldiwgYXR0ciwgdmFsKTsNCj4gKyAgICAg Y2FzZSBod21vbl90ZW1wOg0KPiArICAgICAgICAgICAgIHJldHVybiBzaWxpY29tX2Zhbl9jb250 cm9sX3JlYWRfdGVtcChkZXYsIGF0dHIsIHZhbCk7DQo+ICsgICAgIGRlZmF1bHQ6DQo+ICsgICAg ICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiArICAgICB9DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBpbnQgc2lsaWNvbV9mYW5fY29udHJvbF9yZWFkX2xhYmVscyhzdHJ1Y3QgZGV2aWNlICpk ZXYsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBod21vbl9z ZW5zb3JfdHlwZXMgdHlwZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1MzIgYXR0ciwgaW50IGNoYW5uZWwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqKnN0cikgew0KPiArICAgICBzd2l0Y2ggKHR5cGUpIHsNCj4g KyAgICAgY2FzZSBod21vbl9mYW46DQo+ICsgICAgICAgICAgICAgKnN0ciA9ICJTaWxpY29tX3Bs YXRmb21yOiBGYW4gU3BlZWQiOw0KPiArICAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICBj YXNlIGh3bW9uX3RlbXA6DQo+ICsgICAgICAgICAgICAgKnN0ciA9ICJTaWxpY29tX3BsYXRmb3Jt OiBUaGVybW9zdGF0IFNlbnNvciI7DQo+ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAg IGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiArICAgICB9 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fb3BzIHNpbGljb21fZmFu X2NvbnRyb2xfaHdtb25fb3BzID0gew0KPiArICAgICAuaXNfdmlzaWJsZSA9IHNpbGljb21fZmFu X2NvbnRyb2xfaXNfdmlzaWJsZSwNCj4gKyAgICAgLnJlYWQgPSBzaWxpY29tX2Zhbl9jb250cm9s X3JlYWQsDQo+ICsgICAgIC5yZWFkX3N0cmluZyA9IHNpbGljb21fZmFuX2NvbnRyb2xfcmVhZF9s YWJlbHMsIH07DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fY2hpcF9pbmZvIHNp bGljb21fY2hpcF9pbmZvID0gew0KPiArICAgICAub3BzID0gJnNpbGljb21fZmFuX2NvbnRyb2xf aHdtb25fb3BzLA0KPiArICAgICAuaW5mbyA9IHNpbGljb21fZmFuX2NvbnRyb2xfaW5mbywgfTsN Cj4gKw0KPiArc3RhdGljIGludCBfX2luaXQgc2lsaWNvbV9wbGF0Zm9ybV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlIA0KPiArKmRldmljZSkgew0KPiArICAgICBpbnQgaSwgZXJyOw0KPiAr ICAgICB1OCBtYWdpYywgdmVyOw0KPiArICAgICBzdHJ1Y3QgZGV2aWNlICpod21vbl9kZXY7DQo+ ICsgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSAiU2lsb2NvbV9GYW5fTW9uaXRvciI7DQo+ICsgICAg IGNvbnN0IGNoYXIgKmRldl9uYW1lID0gIlNpbGljb21fcGxhdGZvcm0iOw0KPiArDQo+ICsgICAg IGlmICghZGV2bV9yZXF1ZXN0X3JlZ2lvbigmZGV2aWNlLT5kZXYsIE1FQ19JT19CQVNFLCBNRUNf SU9fTEVOLCAibWVjIikpIHsNCj4gKyAgICAgICAgICAgICBkZXZfZXJyKCZkZXZpY2UtPmRldiwg ImNvdWxkbid0IHJlc2VydmUgTUVDIGlvIHBvcnRzXG4iKTsNCj4gKyAgICAgICAgICAgICByZXR1 cm4gLUVCVVNZOw0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgLyogU2FuaXR5IGNoZWNrIG1hZ2lj IG51bWJlciByZWFkIGZvciBFQyAqLw0KPiArICAgICBvdXRiKElPX1JFR19CQU5LLCBNRUNfQURE Uik7DQo+ICsgICAgIG1hZ2ljID0gaW5iKE1FQ19EQVRBX09GRlNFVChERUZBVUxUX0NIQU5fTE8p KTsNCj4gKyAgICAgdmVyID0gaW5iKE1FQ19EQVRBX09GRlNFVChERUZBVUxUX0NIQU5fSEkpKTsN Cj4gKyAgICAgZGV2X2RiZygmZGV2aWNlLT5kZXYsICJFQyBtYWdpYyAweCUwMngsIHZlcnNpb24g MHglMDJ4XG4iLCANCj4gKyBtYWdpYywgdmVyKTsNCj4gKw0KPiArICAgICBpZiAobWFnaWMgIT0g U0lMSUNPTV9NRUNfTUFHSUMpIHsNCj4gKyAgICAgICAgICAgICBkZXZfZXJyKCZkZXZpY2UtPmRl diwgIkJhZCBFQyBtYWdpYyAweCUwMnghXG4iLCBtYWdpYyk7DQo+ICsgICAgICAgICAgICAgcmV0 dXJuIC1FTk9ERVY7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICBlcnIgPSBzaWxpY29tX21jX2xl ZHNfcmVnaXN0ZXIoJmRldmljZS0+ZGV2LCBzaWxpY29tX2xlZF9pbmZvKTsNCj4gKyAgICAgaWYg KGVycikgew0KPiArICAgICAgICAgICAgIGRldl9lcnIoJmRldmljZS0+ZGV2LCAiRmFpbGVkIHRv IHJlZ2lzdGVyIExFRHNcbiIpOw0KPiArICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+ICsgICAg IH0NCj4gKw0KPiArICAgICBlcnIgPSBkZXZtX2dwaW9jaGlwX2FkZF9kYXRhKCZkZXZpY2UtPmRl diwgc2lsaWNvbV9ncGlvY2hpcCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbGljb21fZ3Bpb19jaGFubmVs cyk7DQo+ICsgICAgIGlmIChlcnIpIHsNCj4gKyAgICAgICAgICAgICBkZXZfZXJyKCZkZXZpY2Ut PmRldiwgIkZhaWxlZCB0byByZWdpc3RlciBncGlvY2hpcDogJWRcbiIsIGVycik7DQo+ICsgICAg ICAgICAgICAgcmV0dXJuIGVycjsNCj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIGh3bW9uX2RldiA9 IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfaW5mbygmZGV2aWNlLT5kZXYsIG5hbWUs IE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaWxpY29tX2NoaXBfaW5m bywgTlVMTCk7DQo+ICsgICAgIGVyciA9IFBUUl9FUlJfT1JfWkVSTyhod21vbl9kZXYpOw0KPiAr ICAgICBpZiAoZXJyKSB7DQo+ICsgICAgICAgICAgICAgZGV2X2VycigmZGV2aWNlLT5kZXYsICJG YWlsZWQgdG8gcmVnaXN0ZXIgaHdtb25fZGV2OiAlZFxuIiwgZXJyKTsNCj4gKyAgICAgICAgICAg ICByZXR1cm4gZXJyOw0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgbXlfZGV2ID0gcm9vdF9kZXZp Y2VfcmVnaXN0ZXIoZGV2X25hbWUpOw0KPiArICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShteV9kZXZfYXR0cik7IGkrKykgew0KPiArICAgICAgICAgICAgIGVyciA9IHN5c2ZzX2NyZWF0 ZV9maWxlKCZteV9kZXYtPmtvYmosICZteV9kZXZfYXR0cltpXS5hdHRyKTsNCj4gKyAgICAgICAg ICAgICBpZiAoZXJyKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICBwcl9kZWJ1ZygiZmFpbGVk IHRvIGNyZWF0ZSAvc3lzL2RldmljZXMvU2lsaWNvbV9wbGF0Zm9ybVxuIik7DQo+ICsgICAgICAg ICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICB9DQo+ICsgICAgIH0NCj4gKw0K PiArICAgICByZXR1cm4gZXJyOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IF9faW5pdCBzaWxp Y29tX3BsYXRmb3JtX2luZm9faW5pdChjb25zdCBzdHJ1Y3QgDQo+ICtkbWlfc3lzdGVtX2lkICpp ZCkgew0KPiArICAgICBzdHJ1Y3Qgc2lsaWNvbV9wbGF0Zm9ybV9pbmZvICppbmZvID0gaWQtPmRy aXZlcl9kYXRhOw0KPiArDQo+ICsgICAgIGRldl9pbmZvKCZzaWxpY29tX3BsYXRmb3JtX2Rldi0+ ZGV2LCAiRGV0ZWN0ZWQgJXNcbiIsIA0KPiArIGlkLT5pZGVudCk7DQo+ICsNCj4gKyAgICAgc2ls aWNvbV9sZWRfaW5mbyA9IGluZm8tPmxlZF9pbmZvOw0KPiArICAgICBzaWxpY29tX2dwaW9fY2hh bm5lbHMgPSBpbmZvLT5ncGlvX2NoYW5uZWxzOw0KPiArICAgICBzaWxpY29tX2dwaW9jaGlwID0g aW5mby0+Z3Bpb2NoaXA7DQo+ICsgICAgIHNpbGljb21fZ3Bpb2NoaXAtPm5ncGlvID0gaW5mby0+ bmdwaW87DQo+ICsNCj4gKyAgICAgcmV0dXJuIDE7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBzaWxpY29tX2RtaV9pZHNbXSBfX2luaXRjb25zdCA9IHsN Cj4gKyAgICAgew0KPiArICAgICAgICAgICAgIC5jYWxsYmFjayA9IHNpbGljb21fcGxhdGZvcm1f aW5mb19pbml0LA0KPiArICAgICAgICAgICAgIC5pZGVudCA9ICJTaWxpY29tIENvcmRvYmEgKEdl bmVyaWMpIiwNCj4gKyAgICAgICAgICAgICAubWF0Y2hlcyA9IHsNCj4gKyAgICAgICAgICAgICAg ICAgICAgIERNSV9NQVRDSChETUlfQk9BUkRfVkVORE9SLCAiU2lsaWNvbSIpLA0KPiArICAgICAg ICAgICAgICAgICAgICAgRE1JX01BVENIKERNSV9CT0FSRF9OQU1FLCAiODAzMDAtMDIxNC1HIiks DQo+ICsgICAgICAgICAgICAgfSwNCj4gKyAgICAgICAgICAgICAuZHJpdmVyX2RhdGEgPSAmc2ls aWNvbV9nZW5lcmljX2NvcmRvYmFfaW5mbywNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAg ICAgICAgICAgIC5jYWxsYmFjayA9IHNpbGljb21fcGxhdGZvcm1faW5mb19pbml0LA0KPiArICAg ICAgICAgICAgIC5pZGVudCA9ICJTaWxpY29tIENvcmRvYmEgKEdlbmVyaWMpIiwNCj4gKyAgICAg ICAgICAgICAubWF0Y2hlcyA9IHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIERNSV9NQVRDSChE TUlfQk9BUkRfVkVORE9SLCAiU2lsaWNvbSIpLA0KPiArICAgICAgICAgICAgICAgICAgICAgRE1J X01BVENIKERNSV9CT0FSRF9OQU1FLCAiODA1MDAtMDIxNC1HIiksDQo+ICsgICAgICAgICAgICAg fSwNCj4gKyAgICAgICAgICAgICAuZHJpdmVyX2RhdGEgPSAmc2lsaWNvbV9nZW5lcmljX2NvcmRv YmFfaW5mbywNCj4gKyAgICAgfSwNCj4gKyAgICAgew0KPiArICAgICAgICAgICAgICAuY2FsbGJh Y2sgPSBzaWxpY29tX3BsYXRmb3JtX2luZm9faW5pdCwNCj4gKyAgICAgICAgICAgICAgLmlkZW50 ID0gIlNpbGljb20gQ29yZG9iYSAocGxhdF8wMjIyKSIsDQo+ICsgICAgICAgICAgICAgIC5tYXRj aGVzID0gew0KPiArICAgICAgICAgICAgICAgICAgICAgRE1JX01BVENIKERNSV9CT0FSRF9WRU5E T1IsICJTaWxpY29tIiksDQo+ICsgICAgICAgICAgICAgICAgICAgICBETUlfTUFUQ0goRE1JX0JP QVJEX05BTUUsICI4MDMwMC0wMjIyLUciKSwNCj4gKyAgICAgICAgICAgICAgfSwNCj4gKyAgICAg ICAgICAgICAuZHJpdmVyX2RhdGEgPSAmc2lsaWNvbV9wbGF0XzAyMjJfY29yZG9iYV9pbmZvLA0K PiArICAgICB9LA0KPiArICAgICB7IH0sDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IF9faW5p dCBzaWxpY29tX3BsYXRmb3JtX2luaXQodm9pZCkgew0KPiArICAgICBzdHJ1Y3QgZGV2aWNlICpk ZXY7DQo+ICsgICAgIGludCBlcnI7DQo+ICsNCj4gKyAgICAgLyogcmVnaXN0ZXIgYSBwbGF0Zm9y bSBkZXZpY2UgdG8gYWN0IGFzIHRoZSBwYXJlbnQgZm9yIExFRFMsIGV0Yy4gKi8NCj4gKyAgICAg c2lsaWNvbV9wbGF0Zm9ybV9kZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKCJz aWxpY29tLXBsYXRmb3JtIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIC0xLCBOVUxMLCAwKTsN Cj4gKyAgICAgaWYgKElTX0VSUihzaWxpY29tX3BsYXRmb3JtX2RldikpIHsNCj4gKyAgICAgICAg ICAgICBlcnIgPSBQVFJfRVJSKHNpbGljb21fcGxhdGZvcm1fZGV2KTsNCj4gKyAgICAgICAgICAg ICBwcl9lcnIoImZhaWxlZCB0byByZWdpc3RlciBzaWxpY29tLXBsYXRmb3JtIGRldmljZTogJWRc biIsIGVycik7DQo+ICsgICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4gKyAgICAgfQ0KPiArICAg ICBkZXYgPSAmc2lsaWNvbV9wbGF0Zm9ybV9kZXYtPmRldjsNCj4gKw0KPiArICAgICBlcnIgPSBk bWlfY2hlY2tfc3lzdGVtKHNpbGljb21fZG1pX2lkcyk7DQo+ICsgICAgIGlmIChlcnIgPT0gMCkg ew0KPiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiTm8gRE1JIG1hdGNoIGZvciB0aGlzIHBs YXRmb3JtXG4iKTsNCj4gKyAgICAgICAgICAgICBlcnIgPSAtRU5PREVWOw0KPiArICAgICAgICAg ICAgIGdvdG8gc2lsaWNvbV9kbWlfY2hlY2tfZXJyOw0KPiArICAgICB9DQo+ICsNCj4gKyAgICAg LyogRGlyZWN0bHkgcHJvYmUgdGhlIHBsYXRmb3JtIGRyaXZlciBpbiBpbml0IHNpbmNlIHRoaXMg aXNuJ3QgYQ0KPiArICAgICAgKiBob3RwbHVnZ2FibGUgZGV2aWNlLiAgVGhhdCBtZWFucyB3ZSBk b24ndCBuZWVkIHRvIHJlZ2lzdGVyIGEgZHJpdmVyDQo+ICsgICAgICAqIHRoYXQgbmVlZHMgdG8g d2FpdCBhcm91bmQgaW4gbWVtb3J5IG9uIHRoZSBjaGFuY2UgYSBtYXRjaGluZyBkZXZpY2UNCj4g KyAgICAgICogd291bGQgZ2V0IGFkZGVkLiAgSW5zdGVhZCBydW4gb25jZSBpbiBfX2luaXQgc28g dGhhdCB3ZSBjYW4gZnJlZSBhbGwNCj4gKyAgICAgICogdGhvc2UgcmVzb3VyY2VzIHdoZW4gdGhl IF9faW5pdCByZWdpb24gaXMgd2lwZWQNCj4gKyAgICAgICovDQo+ICsgICAgIGVyciA9IHBsYXRm b3JtX2RyaXZlcl9wcm9iZSgmc2lsaWNvbV9wbGF0Zm9ybV9kcml2ZXIsIHNpbGljb21fcGxhdGZv cm1fcHJvYmUpOw0KPiArICAgICBpZiAoZXJyKSB7DQo+ICsgICAgICAgICAgICAgZGV2X2Vycihk ZXYsICJGYWlsZWQgdG8gcHJvYmUgcGxhdGZvcm0gZHJpdmVyICVkXG4iLCBlcnIpOw0KPiArICAg ICAgICAgICAgIGdvdG8gc2lsaWNvbV9pbml0X3Byb2JlX2VycjsNCj4gKyAgICAgfQ0KPiArICAg ICByZXR1cm4gMDsNCj4gKw0KPiArc2lsaWNvbV9pbml0X3Byb2JlX2VycjoNCj4gKyAgICAgaWYg KG15X2Rldikgew0KPiArICAgICAgICAgICAgIHJvb3RfZGV2aWNlX3VucmVnaXN0ZXIobXlfZGV2 KTsNCj4gKyAgICAgICAgICAgICBteV9kZXYgPSBOVUxMOw0KPiArICAgICB9DQo+ICsNCj4gK3Np bGljb21fZG1pX2NoZWNrX2VycjoNCj4gKyAgICAgaWYgKHNpbGljb21fcGxhdGZvcm1fZGV2KSB7 DQo+ICsgICAgICAgICAgICAgcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoc2lsaWNvbV9wbGF0 Zm9ybV9kZXYpOw0KPiArICAgICAgICAgICAgIHNpbGljb21fcGxhdGZvcm1fZGV2ID0gTlVMTDsN Cj4gKyAgICAgfQ0KPiArICAgICByZXR1cm4gZXJyOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9p ZCBfX2V4aXQgc2lsaWNvbV9wbGF0Zm9ybV9leGl0KHZvaWQpIHsNCj4gKyAgICAgaW50IGk7DQo+ ICsNCj4gKyAgICAgaWYgKHNpbGljb21fcGxhdGZvcm1fZGV2KSB7DQo+ICsgICAgICAgICAgICAg cGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoc2lsaWNvbV9wbGF0Zm9ybV9kZXYpOw0KPiArICAg ICAgICAgICAgIHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZzaWxpY29tX3BsYXRmb3JtX2Ry aXZlcik7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICBpZiAobXlfZGV2KSB7DQo+ICsgICAgICAg ICAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobXlfZGV2X2F0dHIpOyBpKyspDQo+ICsg ICAgICAgICAgICAgICAgICAgICBzeXNmc19yZW1vdmVfZmlsZSgmbXlfZGV2LT5rb2JqLCAmbXlf ZGV2X2F0dHJbaV0uYXR0cik7DQo+ICsgICAgICAgICAgICAgcm9vdF9kZXZpY2VfdW5yZWdpc3Rl cihteV9kZXYpOw0KPiArICAgICB9DQo+ICsgICAgIG11dGV4X2Rlc3Ryb3koJm1lY19pb19tdXRl eCk7DQo+ICt9DQo+ICsNCj4gK21vZHVsZV9pbml0KHNpbGljb21fcGxhdGZvcm1faW5pdCk7DQo+ ICttb2R1bGVfZXhpdChzaWxpY29tX3BsYXRmb3JtX2V4aXQpOw0KPiArDQo+ICtNT0RVTEVfTElD RU5TRSgiR1BMIik7DQo+ICtNT0RVTEVfQVVUSE9SKCJIZW5yeSBTaGkgPGhlbnJ5c0BzaWxpY29t LXVzYS5jb20+Iik7IA0KPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJQbGF0Zm9ybSBkcml2ZXIgZm9y IFNpbGljb20gbmV0d29yayBhcHBsaWFuY2VzIik7DQo+ICsNCj4gK01PRFVMRV9ERVZJQ0VfVEFC TEUoZG1pLCBzaWxpY29tX2RtaV9pZHMpOw0KDQo=