Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp34994196rwd; Mon, 10 Jul 2023 00:38:00 -0700 (PDT) X-Google-Smtp-Source: APBJJlECjlLAohqwUPZEPDZhZxOoLmCxQpWqm/AbHeDPeHbqT7UTxLxIPdQJYaTs9AWB8dz0CF8c X-Received: by 2002:a05:6512:3e05:b0:4f4:d071:be48 with SMTP id i5-20020a0565123e0500b004f4d071be48mr11536264lfv.14.1688974680298; Mon, 10 Jul 2023 00:38:00 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1688974680; cv=pass; d=google.com; s=arc-20160816; b=Dh8dPhqAkxxtG+tntKNt1c5gi1HN3l3+MJw7IHbWkqdNLiIHRrzYq0pME/sGA7UwL7 E4jzieEGJnJCC7H+j6E6aUkRr+p6unDHEPyGt+mOW09LpieL2VJ+vrJu6EXNp2J9koYq TVmMnDbPwMfjrfnwdsvbFHTwufAeqIwgAf8dFIAyNT8vtDYpjl+VuaNx/08WSW/q8qay Mr9gA6X++2qHloLfZSExKvrn7yzOlYCORrpwuAz8B+UTrbPxhqcHQWCr2PExG6njUWH/ qOmCex0x9ORSZHvJ60OnwNEUl+J572G/zz6stzxp3gY0tD8LokMuzOD9j75Kbr43shSJ 8Ipw== 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=ob2P12xFiM13ycnMyBq/VDyrRBWCSVEt/IrkJFIepO4=; fh=sZMUDI91KnOfndiwG6jpyKHU+AhhY9YS7b+zaYu5+OY=; b=H3+I1bK7EZtbC0cgzYoCm4WSmsWtPRQz7ARrxYApApSxFhslTgOl4OeLHj9H5hNS2F jrJ//ZXw7v/XcFmuJ6SFmkVHTY408p/1bOAvEBFPZu2miK3s7njesRy5B7DTm29ct4hV oAzcI/qB1pCz1FFn8k+Ou98Cs2ScbZscfQEGQoiTKTje8GKFNc+fa1iGruO5h5mbrstQ d/kNWeIQHwpvDHvhaSTkP0Z8b+2Qz6q42g1di9zrowMjivYh3xksv/87wcWDPh5fBWZf XgKs3x3BFTOC22CDXS0mOTFBD5PXYJM34aZSNdXLbgGFkjAx4U/B/DU8hTtOTrssoAwh qkDA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=gJyAFBlX; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id br17-20020a170906d15100b009932528281asi9313815ejb.579.2023.07.10.00.37.36; Mon, 10 Jul 2023 00:38:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=gJyAFBlX; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230416AbjGJHaZ (ORCPT + 99 others); Mon, 10 Jul 2023 03:30:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38228 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230437AbjGJHaV (ORCPT ); Mon, 10 Jul 2023 03:30:21 -0400 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2081.outbound.protection.outlook.com [40.107.22.81]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D521AF1; Mon, 10 Jul 2023 00:30:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AysrhpeEAeYF0OrAzDAqWO3Tmf2rgYxTfDTiRCzvz7rG9Sz+MIDn1Zxc6GgSXHHlQaEs5GMvJvDfJYdEz9xJNv9PV/Q7wU/CKxU44Wcr9lPGAIHBhKcbiA30WAqqLVOFZsy2qqCn06adLYyOVv5m7K0gm92AD9VnQS1JLmgzOzC9aBWtRFP7diRkHhW9TvjpcOZqR3RyvUcB0n3Zi7Tj5ooeI13Hh55Be3iOTZo/CmR9SRFdtbDxe852XtFtfPdJI1qOtVunZqnRtkSlXxsdEA5TSCNUPl0KG4Y4nXwJn3VXEtN9qPFpxUtqiDq0hQbm9vLcLfTcbcYQqANri4FjGA== 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=ob2P12xFiM13ycnMyBq/VDyrRBWCSVEt/IrkJFIepO4=; b=GgKHWmj8Os3W+Y+Javm8eRs/1UD2961BhQXUnx1dC9gZouVL6jQAW+L/6Kzaj/0S9a7vV+spQ/G1+AKb/lVljWCcWAU4ToenZ39ai6UaXS/rAyU+0F08ybOh9Sj0s9ZQl4jMEMyKopUtqgByfYHcsY3v9MyoihSqKV0bBQnDVM9XKjzKiL219IitUBR+NW8B5Ihvlf7tIKyULNpS9POyzHlOAAInhqEfZwlFdwQonJW2OXmOLQgch6RgfWzQCQkgehooi7ru9Cme1DAbSUXj2xFIWB22WSa17TK9wtr0qq8JTSmjUVcCioZ6JZvqwq5KwDYxpNZ2usscydydwKwzgQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ob2P12xFiM13ycnMyBq/VDyrRBWCSVEt/IrkJFIepO4=; b=gJyAFBlXE7MlLP7gO0O+9U4LDvZ6oluqNA9/KIsnvEJ90DQDYvvCmmpDNm7pQSHmj61UzVzPzV4+zjE/Eeizp2DcaRK89lLPEvCS8jx/MvumCR5qeQQOD0npCZqRI+KDx+McG6A3zvLaYbM6CTePg1mVce/hEpN5M0870tiUecY= Received: from PAXPR04MB9448.eurprd04.prod.outlook.com (2603:10a6:102:2b1::21) by AM9PR04MB8398.eurprd04.prod.outlook.com (2603:10a6:20b:3b7::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Mon, 10 Jul 2023 07:30:12 +0000 Received: from PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::8af8:59df:c8ab:ff51]) by PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::8af8:59df:c8ab:ff51%5]) with mapi id 15.20.6565.028; Mon, 10 Jul 2023 07:30:12 +0000 From: Sandor Yu To: Vinod Koul CC: "andrzej.hajda@intel.com" , "neil.armstrong@linaro.org" , "robert.foss@linaro.org" , "Laurent.pinchart@ideasonboard.com" , "jonas@kwiboo.se" , "jernej.skrabec@gmail.com" , "airlied@gmail.com" , "daniel@ffwll.ch" , "robh+dt@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "festevam@gmail.com" , "dri-devel@lists.freedesktop.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-phy@lists.infradead.org" , "kernel@pengutronix.de" , dl-linux-imx , Oliver Brown Subject: RE: [EXT] Re: [PATCH v6 7/8] phy: freescale: Add DisplayPort PHY driver for i.MX8MQ Thread-Topic: [EXT] Re: [PATCH v6 7/8] phy: freescale: Add DisplayPort PHY driver for i.MX8MQ Thread-Index: AQHZnyaaNblImDnkdEWfGgcYMKwIda+VJ4KAgB2DPbA= Date: Mon, 10 Jul 2023 07:30:12 +0000 Message-ID: References: <279d6d605656a7ca1bbee6270d66aa218a1b7d3d.1686729444.git.Sandor.yu@nxp.com> In-Reply-To: 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=nxp.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAXPR04MB9448:EE_|AM9PR04MB8398:EE_ x-ms-office365-filtering-correlation-id: 4adfb72b-85e2-41d5-8bcf-08db81177f56 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /05h/lhmXu7+wcAlUgNu3ZpDFJpZHVT7DWG675BYF06fhT2S3a9a8745QF7/SQ0gL9lWp0iIsl9S7Kk3pbdK2hHOoYM7zrhbmzHPywWhmyTtbHy17IVJdT1RuMowepXQ84If2x06anaYcEwZY09ufN4/d+LDHty2uzsdwjTHCneH6cz2jGJnpSxc2vgK6QDIzpmPEDCJcclLUds1Gl2ysh77+ApyxlPmMF5/zCrIz8aK62xJBIPxto8+lQccI2ViJzZw53/8kwBEADlVO0Fr/9nwCSi3Q1rOMANPCC1+BJ81DmfDbI/A5fZDLFTPxVjxhLHxx0I45Xn/qJ8gV3plERZMwjNCl3xrN3jiK2IVBScv+iWDm/NFsUbk6ZHH3Hs0MUNKSTBMsBdInfh8v5gDNklBqNeMIHPACUS7+5DjRs9Yobi4+qvZmdpTjl6GYjd3ettYBsvOjdguFeY3Y9stpanjAGdoaCkf9lIeAuuUFPvcCBYLbJ2655sWh1cYww3wZGCmgpXj+cHlbqPdw0YyB/p/q1FjKpPKkJ7ULWEZWxGeiF8yyiIA+uSlZBaZ/qKdPq9dBUihM+SQM4B5yzFVuLw8xsBJQYYo3gQWmKZ6DfP8ZqL6SBqlWZrEhcKHksgc x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9448.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(396003)(346002)(136003)(376002)(39860400002)(451199021)(86362001)(38100700002)(38070700005)(33656002)(55016003)(71200400001)(7696005)(54906003)(76116006)(122000001)(9686003)(53546011)(6506007)(186003)(44832011)(7416002)(5660300002)(52536014)(2906002)(66556008)(316002)(478600001)(66946007)(8936002)(66476007)(8676002)(83380400001)(4326008)(6916009)(64756008)(66446008)(30864003)(41300700001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MXgyS1h3ZUhQZkFWSmp5T3o0SHNhSDhsS0ZsaHJKTlR6STVzNGIzRWdHRlBD?= =?utf-8?B?NFc5cUNHRWdvZzNGYTZ6NDZ6SUIyWFRwaGkrbXpYdTUxODJFZkhNaDNRbWlT?= =?utf-8?B?WDNCSGIvRG1hUUlDSG1qdUJydGIwR3ExNUYrdTNDY3pCSWFMSzRnR1ltUHhI?= =?utf-8?B?M3JrV3oxZGtadHhDUjBCZGgzcXNLY1BrdWNNZGZsL2lyaVRDNnROUkJickRo?= =?utf-8?B?WDFIWlpKOGx3OTZab21XME1XQ3FmNWNnYkM4ZjVmdE1DWW80V1NzOGE3OTEw?= =?utf-8?B?a1NQVUZRQk5HVTI3RGxPWkZUeC9NT09WeGxqZFY2OTE2a0tpRUZMY0U3RXNU?= =?utf-8?B?S2JMVkxHQzdwMFRNYUhReTBXcmE0ZHdOUlVuaFBYUkpsUFlJM2l5YktvbjFm?= =?utf-8?B?V2xaeW5wdFFySnRsaXhLa04xZUFhM0JyRjVxQlM2ZnRUeWk4SFl2M0ttRlF4?= =?utf-8?B?OVgyMDFkSG9aeVpmK0JwNVBHOXJKYXpoMFRWR0xMYjRObi9hK245RnhERnZ2?= =?utf-8?B?KzFPd0I0UTk0SWVxMDg2Qm5NWlhwYWxrSW1IV0RRM2JPbE54Z0ZEWHkycVNp?= =?utf-8?B?VUUrb28rTjA0Rk4rS0hpbXlCRGdDazJkVlE5d254UVNtVXI1U3FSQ01hUmtS?= =?utf-8?B?QnNtQkxuSm90d3VXNWwvMWozV0NOQXJESk9CMkdyb1ZwSldIYjloN2IvQU9C?= =?utf-8?B?a1NpY3FNU2VNekIyNEhrdFhOdmZoRFZxVW15d1Rwbmo5eENIUEZsblV5WnJa?= =?utf-8?B?dE95Ynp3dm9hb3phRC9ZdTdZR3lHNG43dWFCckZNdTdLZVVPVnlIVnJ0Y3k3?= =?utf-8?B?QnZwZGJNTjk2L1drYlpnditRQ0p4TE1jRHorODhrS3lhZHpoZnRnYzMrT3Jv?= =?utf-8?B?aHhOVEhweHZjMk40V3NmRWQ1QXhTYm9QWTY0RXJhekkxdENSTzJCVnh1OXFz?= =?utf-8?B?MTZZQnJESGVDTE0vd0NLNTZTWFExNVgwOEhWekkzbE1qL09UcmR0aFVCYWVT?= =?utf-8?B?Tk5SZ1ZVZ0c0YmlTVVVlUHVoVWRFclVTZUlWT3l0M2NtQWZCWVVXdHdJL2t0?= =?utf-8?B?ODd4cWJoZkQvV2pSbHJzN3F1ZURaWVF3QVhLZEV3Wlozc1B6bU1pVGxMVlNY?= =?utf-8?B?OFZtNG9wc3VTb0RMeUdpNmdRTW9RUU9TeFMvSzQ1dno3engxdjJiMEdScEZi?= =?utf-8?B?WkdIUzdaa2I4dERZL094VSs4MklocW84K0VrbWxTcllyNjlJUFFNek1IQ2Jh?= =?utf-8?B?YkxBNDhFWTZlQmFJTkUzSGxWcENaaHU3TGp3MW40V2lnRnNqb2huV3diRkht?= =?utf-8?B?WDJsWTNvY2V4Y1ZnT1ZJK0Fxa3NhazBhWnp2cUExTk83SWNMRVRtcDNEZkMx?= =?utf-8?B?OXU4UWlGR3NucFZoRm5Hd0xjTitrK3FKcFRidCs3c3RqaFdIbFBBQldEWExE?= =?utf-8?B?RGEvMFYrQnF6c1N3UWpQK24zZ3ptcDVuUkxhUTFPUHFsL3pZL3FPdGtkMWNs?= =?utf-8?B?NXB4ZUN1ZnErY2s1ZHR5MmxtaTlCODJET3hwWGttV2hmd0FsenQxREZkTEV5?= =?utf-8?B?SUdlbHlxMFhsVWFEZndqQWpGb09mTTZVblBLYXRPeDlFckM3WVI0SjJuR0Ro?= =?utf-8?B?NXlQb0RZbGdEUEF5VkE5NUcybUtGTWQ1enhhaXBveDUrMnJ6U1ZHbm5NY3NC?= =?utf-8?B?VFF0Qld2TWpOQmc5VGh3alJyYlIrSzZvU3VmWW5RT1pBNjQ5VldsWmFDbzln?= =?utf-8?B?OXlVZjJKdk1uWE5vOEE0WUw2RWt3K2M1TVhEalVKZ2VqYnR0U0NlT2hXUTdJ?= =?utf-8?B?eUFkUEVMeWVjbjdGdnlnbldIOEp6ZTdDMGREUXJvUjJoZjFWM0x4OG8xanNn?= =?utf-8?B?M3JSckRFOU9tTEVHc1ZxS1FjVHI3ZDUyRWNSQ3UvOTdORzFTVjBRUGtoRkh5?= =?utf-8?B?Y2RHZ1V0VzBJd3g3VlQrZVp3elJzVUdXRDdJQmZhWEErcktLYk9GSlQ0cWhV?= =?utf-8?B?dVQ4THZrVUYrTktOb2F2bnZ1VDREN3pzaDJJaVl6Q0VzNThUZFF1SWZUOThJ?= =?utf-8?B?QXNUWWNzeFZEWDZrZWlZS0tRQ29ZMk9LYjE2Zz09?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9448.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4adfb72b-85e2-41d5-8bcf-08db81177f56 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jul 2023 07:30:12.3280 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dhSeyOkjtxAmiRvEvd2QjAox4QptcD57pdche0P8kn2MgwV/gxg0Uftdsoz1w2a7MwfNqWRu1BO0o6gVUZf0Ww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8398 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 SGkgVmlub2QsDQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cywNCg0KPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBWaW5vZCBLb3VsIDx2a291bEBrZXJuZWwub3JnPg0KPiBT ZW50OiAyMDIz5bm0NuaciDIx5pelIDE5OjI0DQo+IFRvOiBTYW5kb3IgWXUgPHNhbmRvci55dUBu eHAuY29tPg0KPiBDYzogYW5kcnplai5oYWpkYUBpbnRlbC5jb207IG5laWwuYXJtc3Ryb25nQGxp bmFyby5vcmc7DQo+IHJvYmVydC5mb3NzQGxpbmFyby5vcmc7IExhdXJlbnQucGluY2hhcnRAaWRl YXNvbmJvYXJkLmNvbTsNCj4gam9uYXNAa3dpYm9vLnNlOyBqZXJuZWouc2tyYWJlY0BnbWFpbC5j b207IGFpcmxpZWRAZ21haWwuY29tOw0KPiBkYW5pZWxAZmZ3bGwuY2g7IHJvYmgrZHRAa2VybmVs Lm9yZzsga3J6eXN6dG9mLmtvemxvd3NraStkdEBsaW5hcm8ub3JnOw0KPiBzaGF3bmd1b0BrZXJu ZWwub3JnOyBzLmhhdWVyQHBlbmd1dHJvbml4LmRlOyBmZXN0ZXZhbUBnbWFpbC5jb207DQo+IGRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3Jn Ow0KPiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmc7DQo+IGxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnOyBrZXJuZWxA cGVuZ3V0cm9uaXguZGU7IGRsLWxpbnV4LWlteA0KPiA8bGludXgtaW14QG54cC5jb20+OyBPbGl2 ZXIgQnJvd24gPG9saXZlci5icm93bkBueHAuY29tPg0KPiBTdWJqZWN0OiBbRVhUXSBSZTogW1BB VENIIHY2IDcvOF0gcGh5OiBmcmVlc2NhbGU6IEFkZCBEaXNwbGF5UG9ydCBQSFkgZHJpdmVyDQo+ IGZvciBpLk1YOE1RDQo+IA0KPiBDYXV0aW9uOiBUaGlzIGlzIGFuIGV4dGVybmFsIGVtYWlsLiBQ bGVhc2UgdGFrZSBjYXJlIHdoZW4gY2xpY2tpbmcgbGlua3Mgb3INCj4gb3BlbmluZyBhdHRhY2ht ZW50cy4gV2hlbiBpbiBkb3VidCwgcmVwb3J0IHRoZSBtZXNzYWdlIHVzaW5nIHRoZSAnUmVwb3J0 DQo+IHRoaXMgZW1haWwnIGJ1dHRvbg0KPiANCj4gDQo+IE9uIDE1LTA2LTIzLCAwOTozOCwgU2Fu ZG9yIFl1IHdyb3RlOg0KPiA+IEFkZCBDYWRlbmNlIEhEUC1UWCBEaXNwbGF5UG9ydCBQSFkgZHJp dmVyIGZvciBpLk1YOE1RDQo+ID4NCj4gPiBDYWRlbmNlIEhEUC1UWCBQSFkgY291bGQgYmUgcHV0 IGluIGVpdGhlciBEUCBtb2RlIG9yIEhETUkgbW9kZSBiYXNlDQo+IG9uDQo+ID4gdGhlIGNvbmZp Z3VyYXRpb24gY2hvc2VuLg0KPiA+IERpc3BsYXlQb3J0IFBIWSBtb2RlIGlzIGNvbmZpZ3VyYXRl ZCBpbiB0aGUgZHJpdmVyLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogU2FuZG9yIFl1IDxTYW5k b3IueXVAbnhwLmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25m aWcgICAgICAgICAgICAgfCAgIDkgKw0KPiA+ICBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvTWFrZWZp bGUgICAgICAgICAgICB8ICAgMSArDQo+ID4gIGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNs LWlteDhtcS1kcC5jIHwgNjk3DQo+ID4gKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAzIGZp bGVzIGNoYW5nZWQsIDcwNyBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bXEtZHAuYw0KPiA+DQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnDQo+ID4gYi9kcml2ZXJzL3BoeS9m cmVlc2NhbGUvS2NvbmZpZyBpbmRleCA4NTM5NThmYjJjMDYuLmE5OWVlMzcwZWRhNg0KPiA+IDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnDQo+ID4gKysrIGIv ZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25maWcNCj4gPiBAQCAtMzUsNiArMzUsMTUgQEAgY29u ZmlnIFBIWV9GU0xfSU1YOE1fUENJRQ0KPiA+ICAgICAgICAgRW5hYmxlIHRoaXMgdG8gYWRkIHN1 cHBvcnQgZm9yIHRoZSBQQ0lFIFBIWSBhcyBmb3VuZCBvbg0KPiA+ICAgICAgICAgaS5NWDhNIGZh bWlseSBvZiBTT0NzLg0KPiA+DQo+ID4gK2NvbmZpZyBQSFlfQ0FERU5DRV9EUF9QSFkNCj4gPiAr ICAgICB0cmlzdGF0ZSAiQ2FkZW5jZSBIRFBUWCBEUCBQSFkgc3VwcG9ydCINCj4gPiArICAgICBk ZXBlbmRzIG9uIE9GICYmIEhBU19JT01FTQ0KPiA+ICsgICAgIGRlcGVuZHMgb24gQ09NTU9OX0NM Sw0KPiA+ICsgICAgIHNlbGVjdCBHRU5FUklDX1BIWQ0KPiA+ICsgICAgIGhlbHANCj4gPiArICAg ICAgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIENhZGVuY2UgSERQVFggRFAgUEhZIGRyaXZl cg0KPiA+ICsgICAgICAgb24gTlhQJ3MgaS5NWDhNUSBTT0MuDQo+ID4gKw0KPiA+ICBlbmRpZg0K PiA+DQo+ID4gIGNvbmZpZyBQSFlfRlNMX0xZTlhfMjhHDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQ0KPiA+IGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL01h a2VmaWxlIGluZGV4IGNlZGIzMjhiYzRkMi4uYzNiZGYzZmEyZTcyDQo+ID4gMTAwNjQ0DQo+ID4g LS0tIGEvZHJpdmVycy9waHkvZnJlZXNjYWxlL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9w aHkvZnJlZXNjYWxlL01ha2VmaWxlDQo+ID4gQEAgLTQsMyArNCw0IEBAIG9iai0kKENPTkZJR19Q SFlfTUlYRUxfTFZEU19QSFkpICAgICAgKz0NCj4gcGh5LWZzbC1pbXg4cW0tbHZkcy1waHkubw0K PiA+ICBvYmotJChDT05GSUdfUEhZX01JWEVMX01JUElfRFBIWSkgICAgKz0gcGh5LWZzbC1pbXg4 LW1pcGktZHBoeS5vDQo+ID4gIG9iai0kKENPTkZJR19QSFlfRlNMX0lNWDhNX1BDSUUpICAgICAr PSBwaHktZnNsLWlteDhtLXBjaWUubw0KPiA+ICBvYmotJChDT05GSUdfUEhZX0ZTTF9MWU5YXzI4 RykgICAgICAgICAgICAgICArPQ0KPiBwaHktZnNsLWx5bngtMjhnLm8NCj4gPiArb2JqLSQoQ09O RklHX1BIWV9DQURFTkNFX0RQX1BIWSkgICAgICs9IHBoeS1mc2wtaW14OG1xLWRwLm8NCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG1xLWRwLmMNCj4g PiBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtcS1kcC5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjJiZDY3NzJhNWQzYg0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1p bXg4bXEtZHAuYw0KPiA+IEBAIC0wLDAgKzEsNjk3IEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiArLyoNCj4gPiArICogQ2FkZW5jZSBIRFAtVFgg RGlzcGxheSBQb3J0IEludGVyZmFjZSAoRFApIFBIWSBkcml2ZXINCj4gPiArICoNCj4gPiArICog Q29weXJpZ2h0IChDKSAyMDIyIE5YUCBTZW1pY29uZHVjdG9yLCBJbmMuDQo+ID4gKyAqLw0KPiA+ ICsjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+ DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3Bo eS9waHkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiA+ICsj aW5jbHVkZSA8bGludXgvaW8uaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPg0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPGRybS9icmlkZ2UvY2Rucy1taGRwLW1haWxib3guaD4NCj4gPiAr DQo+ID4gKyNkZWZpbmUgQUREUl9QSFlfQUZFIDB4ODAwMDANCj4gDQo+IElzIHRoaXMgYWx3YXlz IGZpeGVkIGZvciBldmVyeSBwaHkgZ2VuZXJhdGlvbj8NClllcywgdGhlIG9mZnNldCBpcyBmaXhl ZCBmb3IgZXZlcnkgY2RucyBoZG1pL2RwIGV4dGVybmFsIHBoeS4NCj4gPiArDQo+ID4gKy8qIFBI WSByZWdpc3RlcnMgKi8NCj4gPiArI2RlZmluZSBDTU5fU1NNX0JJQVNfVE1SICAgICAgICAgICAg ICAgIDB4MDAyMg0KPiA+ICsjZGVmaW5lIENNTl9QTExTTTBfUExMRU5fVE1SICAgICAgICAgICAg MHgwMDI5DQo+ID4gKyNkZWZpbmUgQ01OX1BMTFNNMF9QTExQUkVfVE1SICAgICAgICAgICAweDAw MkENCj4gPiArI2RlZmluZSBDTU5fUExMU00wX1BMTFZSRUZfVE1SICAgICAgICAgIDB4MDAyQg0K PiA+ICsjZGVmaW5lIENNTl9QTExTTTBfUExMTE9DS19UTVIgICAgICAgICAgMHgwMDJDDQo+ID4g KyNkZWZpbmUgQ01OX1BMTFNNMF9VU0VSX0RFRl9DVFJMICAgICAgICAweDAwMkYNCj4gPiArI2Rl ZmluZSBDTU5fUFNNX0NMS19DVFJMICAgICAgICAgICAgICAgIDB4MDA2MQ0KPiA+ICsjZGVmaW5l IENNTl9QTEwwX1ZDT0NBTF9TVEFSVCAgICAgICAgICAgMHgwMDgxDQo+ID4gKyNkZWZpbmUgQ01O X1BMTDBfVkNPQ0FMX0lOSVRfVE1SICAgICAgICAweDAwODQNCj4gPiArI2RlZmluZSBDTU5fUExM MF9WQ09DQUxfSVRFUl9UTVIgICAgICAgIDB4MDA4NQ0KPiA+ICsjZGVmaW5lIENNTl9QTEwwX0lO VERJViAgICAgICAgICAgICAgICAgMHgwMDk0DQo+ID4gKyNkZWZpbmUgQ01OX1BMTDBfRlJBQ0RJ ViAgICAgICAgICAgICAgICAweDAwOTUNCj4gPiArI2RlZmluZSBDTU5fUExMMF9ISUdIX1RIUiAg ICAgICAgICAgICAgIDB4MDA5Ng0KPiA+ICsjZGVmaW5lIENNTl9QTEwwX0RTTV9ESUFHICAgICAg ICAgICAgICAgMHgwMDk3DQo+ID4gKyNkZWZpbmUgQ01OX1BMTDBfU1NfQ1RSTDIgICAgICAgICAg ICAgICAweDAwOTkNCj4gPiArI2RlZmluZSBDTU5fSUNBTF9JTklUX1RNUiAgICAgICAgICAgICAg IDB4MDBDNA0KPiA+ICsjZGVmaW5lIENNTl9JQ0FMX0lURVJfVE1SICAgICAgICAgICAgICAgMHgw MEM1DQo+ID4gKyNkZWZpbmUgQ01OX1JYQ0FMX0lOSVRfVE1SICAgICAgICAgICAgICAweDAwRDQN Cj4gPiArI2RlZmluZSBDTU5fUlhDQUxfSVRFUl9UTVIgICAgICAgICAgICAgIDB4MDBENQ0KPiA+ ICsjZGVmaW5lIENNTl9UWFBVQ0FMX0lOSVRfVE1SICAgICAgICAgICAgMHgwMEU0DQo+ID4gKyNk ZWZpbmUgQ01OX1RYUFVDQUxfSVRFUl9UTVIgICAgICAgICAgICAweDAwRTUNCj4gPiArI2RlZmlu ZSBDTU5fVFhQRENBTF9JTklUX1RNUiAgICAgICAgICAgIDB4MDBGNA0KPiA+ICsjZGVmaW5lIENN Tl9UWFBEQ0FMX0lURVJfVE1SICAgICAgICAgICAgMHgwMEY1DQo+ID4gKyNkZWZpbmUgQ01OX0lD QUxfQURKX0lOSVRfVE1SICAgICAgICAgICAweDAxMDINCj4gPiArI2RlZmluZSBDTU5fSUNBTF9B REpfSVRFUl9UTVIgICAgICAgICAgIDB4MDEwMw0KPiA+ICsjZGVmaW5lIENNTl9SWF9BREpfSU5J VF9UTVIgICAgICAgICAgICAgMHgwMTA2DQo+ID4gKyNkZWZpbmUgQ01OX1JYX0FESl9JVEVSX1RN UiAgICAgICAgICAgICAweDAxMDcNCj4gPiArI2RlZmluZSBDTU5fVFhQVV9BREpfSU5JVF9UTVIg ICAgICAgICAgIDB4MDEwQQ0KPiA+ICsjZGVmaW5lIENNTl9UWFBVX0FESl9JVEVSX1RNUiAgICAg ICAgICAgMHgwMTBCDQo+ID4gKyNkZWZpbmUgQ01OX1RYUERfQURKX0lOSVRfVE1SICAgICAgICAg ICAweDAxMEUNCj4gPiArI2RlZmluZSBDTU5fVFhQRF9BREpfSVRFUl9UTVIgICAgICAgICAgIDB4 MDEwRg0KPiA+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfRkJIX09WUkQgICAgICAgICAgMHgwMUMw DQo+ID4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9GQkxfT1ZSRCAgICAgICAgICAweDAxQzENCj4g PiArI2RlZmluZSBDTU5fRElBR19QTEwwX09WUkQgICAgICAgICAgICAgIDB4MDFDMg0KPiA+ICsj ZGVmaW5lIENNTl9ESUFHX1BMTDBfVEVTVF9NT0RFICAgICAgICAgMHgwMUM0DQo+ID4gKyNkZWZp bmUgQ01OX0RJQUdfUExMMF9WMklfVFVORSAgICAgICAgICAweDAxQzUNCj4gPiArI2RlZmluZSBD TU5fRElBR19QTEwwX0NQX1RVTkUgICAgICAgICAgIDB4MDFDNg0KPiA+ICsjZGVmaW5lIENNTl9E SUFHX1BMTDBfTEZfUFJPRyAgICAgICAgICAgMHgwMUM3DQo+ID4gKyNkZWZpbmUgQ01OX0RJQUdf UExMMF9QVEFUSVNfVFVORTEgICAgICAweDAxQzgNCj4gPiArI2RlZmluZSBDTU5fRElBR19QTEww X1BUQVRJU19UVU5FMiAgICAgIDB4MDFDOQ0KPiA+ICsjZGVmaW5lIENNTl9ESUFHX0hTQ0xLX1NF TCAgICAgICAgICAgICAgMHgwMUUwDQo+ID4gKyNkZWZpbmUgQ01OX0RJQUdfUEVSX0NBTF9BREog ICAgICAgICAgICAweDAxRUMNCj4gPiArI2RlZmluZSBDTU5fRElBR19DQUxfQ1RSTCAgICAgICAg ICAgICAgIDB4MDFFRA0KPiA+ICsjZGVmaW5lIENNTl9ESUFHX0FDWUEgICAgICAgICAgICAgICAg ICAgMHgwMUZGDQo+ID4gKyNkZWZpbmUgWENWUl9QU01fUkNUUkwgICAgICAgICAgICAgICAgICAw eDQwMDENCj4gPiArI2RlZmluZSBYQ1ZSX1BTTV9DQUxfVE1SICAgICAgICAgICAgICAgIDB4NDAw Mg0KPiA+ICsjZGVmaW5lIFhDVlJfUFNNX0EwSU5fVE1SICAgICAgICAgICAgICAgMHg0MDAzDQo+ ID4gKyNkZWZpbmUgVFhfVFhDQ19DQUxfU0NMUl9NVUxUXzAgICAgICAgICAweDQwNDcNCj4gPiAr I2RlZmluZSBUWF9UWENDX0NQT1NUX01VTFRfMDBfMCAgICAgICAgIDB4NDA0Qw0KPiA+ICsjZGVm aW5lIFhDVlJfRElBR19QTExEUkNfQ1RSTCAgICAgICAgICAgMHg0MEUwDQo+ID4gKyNkZWZpbmUg WENWUl9ESUFHX1BMTERSQ19DVFJMICAgICAgICAgICAweDQwRTANCj4gPiArI2RlZmluZSBYQ1ZS X0RJQUdfSFNDTEtfU0VMICAgICAgICAgICAgIDB4NDBFMQ0KPiA+ICsjZGVmaW5lIFhDVlJfRElB R19MQU5FX0ZDTV9FTl9NR05fVE1SICAgMHg0MEYyDQo+ID4gKyNkZWZpbmUgVFhfUFNDX0EwICAg ICAgICAgICAgICAgICAgICAgICAweDQxMDANCj4gPiArI2RlZmluZSBUWF9QU0NfQTEgICAgICAg ICAgICAgICAgICAgICAgIDB4NDEwMQ0KPiA+ICsjZGVmaW5lIFRYX1BTQ19BMiAgICAgICAgICAg ICAgICAgICAgICAgMHg0MTAyDQo+ID4gKyNkZWZpbmUgVFhfUFNDX0EzICAgICAgICAgICAgICAg ICAgICAgICAweDQxMDMNCj4gPiArI2RlZmluZSBUWF9SQ1ZERVRfRU5fVE1SICAgICAgICAgICAg ICAgIDB4NDEyMg0KPiA+ICsjZGVmaW5lIFRYX1JDVkRFVF9TVF9UTVIgICAgICAgICAgICAgICAg MHg0MTIzDQo+ID4gKyNkZWZpbmUgVFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkgICAgICAweDQx RTcNCj4gPiArI2RlZmluZSBUWF9ESUFHX0JHUkVGX1BSRURSVl9ERUxBWSAgICAgIDB4NDFFNw0K PiA+ICsjZGVmaW5lIFRYX0RJQUdfQUNZQV8wICAgICAgICAgICAgICAgICAgMHg0MUZGDQo+ID4g KyNkZWZpbmUgVFhfRElBR19BQ1lBXzEgICAgICAgICAgICAgICAgICAweDQzRkYNCj4gPiArI2Rl ZmluZSBUWF9ESUFHX0FDWUFfMiAgICAgICAgICAgICAgICAgIDB4NDVGRg0KPiA+ICsjZGVmaW5l IFRYX0RJQUdfQUNZQV8zICAgICAgICAgICAgICAgICAgMHg0N0ZGDQo+ID4gKyNkZWZpbmUgVFhf QU5BX0NUUkxfUkVHXzEgICAgICAgICAgICAgICAweDUwMjANCj4gPiArI2RlZmluZSBUWF9BTkFf Q1RSTF9SRUdfMiAgICAgICAgICAgICAgIDB4NTAyMQ0KPiA+ICsjZGVmaW5lIFRYX0RJR19DVFJM X1JFR18xICAgICAgICAgICAgICAgMHg1MDIzDQo+ID4gKyNkZWZpbmUgVFhfRElHX0NUUkxfUkVH XzIgICAgICAgICAgICAgICAweDUwMjQNCj4gPiArI2RlZmluZSBUWERBX0NZQV9BVVhEQV9DWUEg ICAgICAgICAgICAgIDB4NTAyNQ0KPiA+ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR18zICAgICAg ICAgICAgICAgMHg1MDI2DQo+ID4gKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzQgICAgICAgICAg ICAgICAweDUwMjcNCj4gPiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfNSAgICAgICAgICAgICAg IDB4NTAyOQ0KPiA+ICsjZGVmaW5lIFJYX1BTQ19BMCAgICAgICAgICAgICAgICAgICAgICAgMHg4 MDAwDQo+ID4gKyNkZWZpbmUgUlhfUFNDX0NBTCAgICAgICAgICAgICAgICAgICAgICAweDgwMDYN Cj4gPiArI2RlZmluZSBQSFlfSERQX01PREVfQ1RSTCAgICAgICAgICAgICAgIDB4QzAwOA0KPiA+ ICsjZGVmaW5lIFBIWV9IRFBfQ0xLX0NUTCAgICAgICAgICAgICAgICAgMHhDMDA5DQo+ID4gKyNk ZWZpbmUgUEhZX1BNQV9DTU5fQ1RSTDEgICAgICAgICAgICAgICAweEM4MDANCj4gDQo+IExvd2Vy IGNhc2UgaGV4IHZhbHVlcyBwbGVhc2UNCk9LLCBJIHdpbGwgY29ycmVjdCBpdC4NCj4gDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIFJFRl9DTEtfMjdNSFogICAgICAgICAgICAgICAgMjcwMDAwMDANCj4g PiArDQo+ID4gK2VudW0gZHBfbGlua19yYXRlIHsNCj4gPiArICAgICBSQVRFXzFfNiA9IDE2MjAw MCwNCj4gPiArICAgICBSQVRFXzJfMSA9IDIxNjAwMCwNCj4gPiArICAgICBSQVRFXzJfNCA9IDI0 MzAwMCwNCj4gPiArICAgICBSQVRFXzJfNyA9IDI3MDAwMCwNCj4gPiArICAgICBSQVRFXzNfMiA9 IDMyNDAwMCwNCj4gPiArICAgICBSQVRFXzRfMyA9IDQzMjAwMCwNCj4gPiArICAgICBSQVRFXzVf NCA9IDU0MDAwMCwNCj4gPiArICAgICBSQVRFXzhfMSA9IDgxMDAwMCwNCj4gPiArfTsNCj4gPiAr DQo+ID4gKyNkZWZpbmUgTUFYX0xJTktfUkFURSBSQVRFXzVfNA0KPiA+ICsNCj4gPiArc3RydWN0 IHBoeV9wbGxfcmVnIHsNCj4gPiArICAgICB1MTYgdmFsWzddOw0KPiA+ICsgICAgIHUzMiBhZGRy Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfcGxsX3JlZyBw aHlfcGxsXzI3bV9jZmdbXSA9IHsNCj4gPiArICAgICAvKiAgMS42MiAgICAyLjE2ICAgIDIuNDMg ICAgMi43ICAgICAzLjI0ICAgIDQuMzIgICAgNS40DQo+IHJlZ2lzdGVyIGFkZHJlc3MgKi8NCj4g PiArICAgICB7eyAweDAxMEUsIDB4MDEwRSwgMHgwMTBFLCAweDAxMEUsIDB4MDEwRSwgMHgwMTBF LCAweDAxMEUgfSwNCj4gQ01OX1BMTDBfVkNPQ0FMX0lOSVRfVE1SIH0sDQo+ID4gKyAgICAge3sg MHgwMDFCLCAweDAwMUIsIDB4MDAxQiwgMHgwMDFCLCAweDAwMUIsIDB4MDAxQiwgMHgwMDFCIH0s DQo+IENNTl9QTEwwX1ZDT0NBTF9JVEVSX1RNUiB9LA0KPiA+ICsgICAgIHt7IDB4MzBCOSwgMHgz MDg3LCAweDMwOTYsIDB4MzBCNCwgMHgzMEI5LCAweDMwODcsIDB4MzBCNCB9LA0KPiBDTU5fUExM MF9WQ09DQUxfU1RBUlQgfSwNCj4gPiArICAgICB7eyAweDAwNzcsIDB4MDA5RiwgMHgwMEIzLCAw eDAwQzcsIDB4MDA3NywgMHgwMDlGLCAweDAwQzcgfSwNCj4gQ01OX1BMTDBfSU5URElWIH0sDQo+ ID4gKyAgICAge3sgMHhGOURBLCAweEY3Q0QsIDB4RjZDNywgMHhGNUMxLCAweEY5REEsIDB4RjdD RCwgMHhGNUMxIH0sDQo+IENNTl9QTEwwX0ZSQUNESVYgfSwNCj4gPiArICAgICB7eyAweDAwMUUs IDB4MDAyOCwgMHgwMDJELCAweDAwMzIsIDB4MDAxRSwgMHgwMDI4LCAweDAwMzIgfSwNCj4gQ01O X1BMTDBfSElHSF9USFIgfSwNCj4gPiArICAgICB7eyAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAw eDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAgfSwNCj4gQ01OX1BMTDBfRFNNX0RJQUcgfSwN Cj4gPiArICAgICB7eyAweDAwMDAsIDB4MTAwMCwgMHgxMDAwLCAweDEwMDAsIDB4MDAwMCwgMHgx MDAwLCAweDEwMDAgfSwNCj4gQ01OX1BMTFNNMF9VU0VSX0RFRl9DVFJMIH0sDQo+ID4gKyAgICAg e3sgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAw IH0sDQo+IENNTl9ESUFHX1BMTDBfT1ZSRCB9LA0KPiA+ICsgICAgIHt7IDB4MDAwMCwgMHgwMDAw LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCB9LA0KPiBDTU5fRElBR19Q TEwwX0ZCSF9PVlJEIH0sDQo+ID4gKyAgICAge3sgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgw MDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwIH0sDQo+IENNTl9ESUFHX1BMTDBfRkJMX09WUkQg fSwNCj4gPiArICAgICB7eyAweDAwMDYsIDB4MDAwNywgMHgwMDA3LCAweDAwMDcsIDB4MDAwNiwg MHgwMDA3LCAweDAwMDcgfSwNCj4gQ01OX0RJQUdfUExMMF9WMklfVFVORSB9LA0KPiA+ICsgICAg IHt7IDB4MDA0MywgMHgwMDQzLCAweDAwNDMsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDMsIDB4MDA0 MiB9LA0KPiBDTU5fRElBR19QTEwwX0NQX1RVTkUgfSwNCj4gPiArICAgICB7eyAweDAwMDgsIDB4 MDAwOCwgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwgMHgwMDA4LCAweDAwMDggfSwNCj4gQ01OX0RJ QUdfUExMMF9MRl9QUk9HIH0sDQo+ID4gKyAgICAge3sgMHgwMTAwLCAweDAwMDEsIDB4MDAwMSwg MHgwMDAxLCAweDAxMDAsIDB4MDAwMSwgMHgwMDAxIH0sDQo+IENNTl9ESUFHX1BMTDBfUFRBVElT X1RVTkUxIH0sDQo+ID4gKyAgICAge3sgMHgwMDA3LCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAw eDAwMDcsIDB4MDAwMSwgMHgwMDAxIH0sDQo+IENNTl9ESUFHX1BMTDBfUFRBVElTX1RVTkUyIH0s DQo+ID4gKyAgICAge3sgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4 MDAyMCwgMHgwMDIwIH0sDQo+IENNTl9ESUFHX1BMTDBfVEVTVF9NT0RFfSwNCj4gPiArICAgICB7 eyAweDAwMTYsIDB4MDAxNiwgMHgwMDE2LCAweDAwMTYsIDB4MDAxNiwgMHgwMDE2LCAweDAwMTYg fSwNCj4gPiArQ01OX1BTTV9DTEtfQ1RSTCB9DQo+IA0KPiBhZ2FpbiwgbG93ZXIgY2FzZSBwbGVh c2UNCk9LLCB3aWxsIGNoYW5nZSBpdCBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KPiANCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSB7DQo+ID4gKyAgICAgdm9pZCBf X2lvbWVtICpyZWdzOyAgICAgLyogRFBUWCByZWdpc3RlcnMgYmFzZSAqLw0KPiA+ICsgICAgIHN0 cnVjdCBkZXZpY2UgKmRldjsNCj4gPiArICAgICBzdHJ1Y3QgcGh5ICpwaHk7DQo+ID4gKyAgICAg c3RydWN0IG11dGV4IG1ib3hfbXV0ZXg7IC8qIG11dGV4IHRvIHByb3RlY3QgbWFpbGJveCAqLw0K PiA+ICsgICAgIHN0cnVjdCBjbGsgKnJlZl9jbGssICphcGJfY2xrOw0KPiA+ICsgICAgIHUzMiBy ZWZfY2xrX3JhdGU7DQo+ID4gKyAgICAgdTMyIG51bV9sYW5lczsNCj4gPiArICAgICB1MzIgbGlu a19yYXRlOw0KPiA+ICsgICAgIGJvb2wgcG93ZXJfdXA7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtz dGF0aWMgaW50IGNkbnNfcGh5X3JlZ193cml0ZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNk bnNfcGh5LCB1MzINCj4gPiArYWRkciwgdTMyIHZhbCkgew0KPiA+ICsgICAgIHJldHVybiBjZG5z X21oZHBfcmVnX3dyaXRlKGNkbnNfcGh5LCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PA0KPiAyKSwN Cj4gPiArdmFsKTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHUzMiBjZG5zX3BoeV9yZWdfcmVhZChz dHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5LCB1MzINCj4gPiArYWRkcikgew0KPiA+ ICsgICAgIHUzMiByZWczMjsNCj4gPiArDQo+ID4gKyAgICAgY2Ruc19taGRwX3JlZ19yZWFkKGNk bnNfcGh5LCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PCAyKSwNCj4gJnJlZzMyKTsNCj4gPiArICAg ICByZXR1cm4gcmVnMzI7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgbGlua19yYXRl X2luZGV4KHUzMiByYXRlKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3dpdGNoIChyYXRlKSB7DQo+ID4g KyAgICAgY2FzZSBSQVRFXzFfNjoNCj4gPiArICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsg ICAgIGNhc2UgUkFURV8yXzE6DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gMTsNCj4gPiArICAg ICBjYXNlIFJBVEVfMl80Og0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIDI7DQo+ID4gKyAgICAg Y2FzZSBSQVRFXzJfNzoNCj4gPiArICAgICAgICAgICAgIHJldHVybiAzOw0KPiA+ICsgICAgIGNh c2UgUkFURV8zXzI6DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gNDsNCj4gPiArICAgICBjYXNl IFJBVEVfNF8zOg0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIDU7DQo+ID4gKyAgICAgY2FzZSBS QVRFXzVfNDoNCj4gPiArICAgICAgICAgICAgIHJldHVybiA2Ow0KPiA+ICsgICAgIGRlZmF1bHQ6 DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKyAgICAgfQ0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IGhkcHR4X2RwX2Nsa19lbmFibGUoc3RydWN0IGNkbnNfaGRwdHhf ZHBfcGh5ICpjZG5zX3BoeSkgew0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGNkbnNf cGh5LT5kZXY7DQo+ID4gKyAgICAgdTMyIHJlZl9jbGtfcmF0ZTsNCj4gPiArICAgICBpbnQgcmV0 Ow0KPiA+ICsNCj4gPiArICAgICBjZG5zX3BoeS0+cmVmX2NsayA9IGRldm1fY2xrX2dldChkZXYs ICJyZWYiKTsNCj4gPiArICAgICBpZiAoSVNfRVJSKGNkbnNfcGh5LT5yZWZfY2xrKSkgew0KPiA+ ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJwaHkgcmVmIGNsb2NrIG5vdCBmb3VuZFxuIik7 DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjZG5zX3BoeS0+cmVmX2Nsayk7DQo+ ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBjZG5zX3BoeS0+YXBiX2NsayA9IGRldm1fY2xr X2dldChkZXYsICJhcGIiKTsNCj4gPiArICAgICBpZiAoSVNfRVJSKGNkbnNfcGh5LT5hcGJfY2xr KSkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJwaHkgYXBiIGNsb2NrIG5vdCBm b3VuZFxuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjZG5zX3BoeS0+YXBi X2Nsayk7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZXQgPSBjbGtfcHJlcGFyZV9l bmFibGUoY2Ruc19waHktPnJlZl9jbGspOw0KPiA+ICsgICAgIGlmIChyZXQpIHsNCj4gPiArICAg ICAgICAgICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIkZhaWxlZCB0byBwcmVwYXJlIHJlZiBj bG9ja1xuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgcmVmX2Nsa19yYXRlID0gY2xrX2dldF9yYXRlKGNkbnNfcGh5LT5yZWZf Y2xrKTsNCj4gPiArICAgICBpZiAoIXJlZl9jbGtfcmF0ZSkgew0KPiA+ICsgICAgICAgICAgICAg ZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiRmFpbGVkIHRvIGdldCByZWYgY2xvY2sgcmF0ZVxuIik7 DQo+ID4gKyAgICAgICAgICAgICBnb3RvIGVycl9yZWZfY2xrOw0KPiA+ICsgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgaWYgKHJlZl9jbGtfcmF0ZSA9PSBSRUZfQ0xLXzI3TUhaKQ0KPiA+ICsgICAg ICAgICAgICAgY2Ruc19waHktPnJlZl9jbGtfcmF0ZSA9IHJlZl9jbGtfcmF0ZTsNCj4gPiArICAg ICBlbHNlIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIk5vdCBz dXBwb3J0IFJlZiBDbG9jaw0KPiBSYXRlKCVkSHopXG4iLCByZWZfY2xrX3JhdGUpOw0KPiA+ICsg ICAgICAgICAgICAgZ290byBlcnJfcmVmX2NsazsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjZG5zX3BoeS0+YXBiX2Nsayk7DQo+ID4gKyAg ICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAi RmFpbGVkIHRvIHByZXBhcmUgYXBiIGNsb2NrXG4iKTsNCj4gPiArICAgICAgICAgICAgIGdvdG8g ZXJyX3JlZl9jbGs7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gMDsNCj4g PiArDQo+ID4gK2Vycl9yZWZfY2xrOg0KPiA+ICsgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShj ZG5zX3BoeS0+cmVmX2Nsayk7DQo+ID4gKyAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyB2b2lkIGhkcHR4X2RwX2Nsa19kaXNhYmxlKHN0cnVjdCBjZG5zX2hk cHR4X2RwX3BoeSAqY2Ruc19waHkpDQo+ID4gK3sNCj4gPiArICAgICBjbGtfZGlzYWJsZV91bnBy ZXBhcmUoY2Ruc19waHktPnJlZl9jbGspOw0KPiA+ICsgICAgIGNsa19kaXNhYmxlX3VucHJlcGFy ZShjZG5zX3BoeS0+YXBiX2Nsayk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGhk cHR4X2RwX2F1eF9jZmcoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkgew0KPiA+ ICsgICAgIC8qIFBvd2VyIHVwIEF1eCAqLw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgVFhEQV9DWUFfQVVYREFfQ1lBLCAxKTsNCj4gPiArDQo+ID4gKyAgICAgY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9ESUdfQ1RSTF9SRUdfMSwgMHgzKTsNCj4gPiArICAg ICBuZGVsYXkoMTUwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRY X0RJR19DVFJMX1JFR18yLCAzNik7DQo+ID4gKyAgICAgbmRlbGF5KDE1MCk7DQo+ID4gKyAgICAg Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgwMTAwKTsN Cj4gPiArICAgICBuZGVsYXkoMTUwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAzMDApOw0KPiA+ICsgICAgIG5kZWxheSgxNTAp Ow0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVH XzMsIDB4MDAwMCk7DQo+ID4gKyAgICAgbmRlbGF5KDE1MCk7DQo+ID4gKyAgICAgY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHgyMDA4KTsNCj4gPiArICAg ICBuZGVsYXkoMTUwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRY X0FOQV9DVFJMX1JFR18xLCAweDIwMTgpOw0KPiA+ICsgICAgIG5kZWxheSgxNTApOw0KPiA+ICsg ICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4QTAx OCk7DQo+ID4gKyAgICAgbmRlbGF5KDE1MCk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgwMzBDKTsNCj4gPiArICAgICBuZGVsYXko MTUwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJM X1JFR181LCAweDAwMDApOw0KPiA+ICsgICAgIG5kZWxheSgxNTApOw0KPiA+ICsgICAgIGNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzQsIDB4MTAwMSk7DQo+ID4g KyAgICAgbmRlbGF5KDE1MCk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHhBMDk4KTsNCj4gPiArICAgICBuZGVsYXkoMTUwKTsNCj4g PiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18xLCAw eEExOTgpOw0KPiA+ICsgICAgIG5kZWxheSgxNTApOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMwZCk7DQo+ID4gKyAgICAgbmRl bGF5KDE1MCk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFf Q1RSTF9SRUdfMiwgMHgwMzBmKTsgfQ0KPiA+ICsNCj4gPiArLyogUE1BIGNvbW1vbiBjb25maWd1 cmF0aW9uIGZvciAyN01IeiAqLyBzdGF0aWMgdm9pZA0KPiA+ICtoZHB0eF9kcF9waHlfcG1hX2Nt bl9jZmdfMjdtaHooc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5DQo+ICpjZG5zX3BoeSkgew0KPiA+ ICsgICAgIHUzMiBudW1fbGFuZXMgPSBjZG5zX3BoeS0+bnVtX2xhbmVzOw0KPiA+ICsgICAgIHUx NiB2YWw7DQo+ID4gKyAgICAgaW50IGs7DQo+ID4gKw0KPiA+ICsgICAgIHZhbCA9IGNkbnNfcGh5 X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfUE1BX0NNTl9DVFJMMSk7DQo+ID4gKyAgICAgdmFsICY9 IDB4RkZGNzsNCj4gPiArICAgICB2YWwgfD0gMHgwMDA4Ow0KPiA+ICsgICAgIGNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEsIHZhbCk7DQo+ID4gKw0KPiA+ICsg ICAgIC8qIFN0YXJ0dXAgc3RhdGUgbWFjaGluZSByZWdpc3RlcnMgKi8NCj4gPiArICAgICBjZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9TU01fQklBU19UTVIsIDB4MDA4Nyk7DQo+ID4g KyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTEVOX1RNUiwN Cj4gMHgwMDFCKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9Q TExTTTBfUExMUFJFX1RNUiwNCj4gMHgwMDM2KTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIENNTl9QTExTTTBfUExMVlJFRl9UTVIsDQo+IDB4MDAxQik7DQo+ID4gKyAg ICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTExPQ0tfVE1SLA0K PiAweDAwNkMpOw0KPiA+ICsNCj4gPiArICAgICAvKiBDdXJyZW50IGNhbGlicmF0aW9uIHJlZ2lz dGVycyAqLw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0lDQUxf SU5JVF9UTVIsIDB4MDA0NCk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBDTU5fSUNBTF9JVEVSX1RNUiwgMHgwMDA2KTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIENNTl9JQ0FMX0FESl9JTklUX1RNUiwNCj4gMHgwMDIyKTsNCj4gPiArICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9JQ0FMX0FESl9JVEVSX1RNUiwNCj4g MHgwMDA2KTsNCj4gPiArDQo+ID4gKyAgICAgLyogUmVzaXN0b3IgY2FsaWJyYXRpb24gcmVnaXN0 ZXJzICovDQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQVUNB TF9JTklUX1RNUiwgMHgwMDIyKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIENNTl9UWFBVQ0FMX0lURVJfVE1SLA0KPiAweDAwMDYpOw0KPiA+ICsgICAgIGNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUFVfQURKX0lOSVRfVE1SLA0KPiAweDAwMjIpOw0K PiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUFVfQURKX0lURVJf VE1SLA0KPiAweDAwMDYpOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg Q01OX1RYUERDQUxfSU5JVF9UTVIsIDB4MDAyMik7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBDTU5fVFhQRENBTF9JVEVSX1RNUiwNCj4gMHgwMDA2KTsNCj4gPiArICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBEX0FESl9JTklUX1RNUiwNCj4g MHgwMDIyKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBE X0FESl9JVEVSX1RNUiwNCj4gMHgwMDA2KTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIENNTl9SWENBTF9JTklUX1RNUiwgMHgwMDIyKTsNCj4gPiArICAgICBjZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9SWENBTF9JVEVSX1RNUiwgMHgwMDA2KTsNCj4gPiAr ICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9SWF9BREpfSU5JVF9UTVIsIDB4 MDAyMik7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUlhfQURK X0lURVJfVE1SLCAweDAwMDYpOw0KPiA+ICsNCj4gPiArICAgICBmb3IgKGsgPSAwOyBrIDwgbnVt X2xhbmVzOyBrID0gayArIDEpIHsNCj4gPiArICAgICAgICAgICAgIC8qIFBvd2VyIHN0YXRlIG1h Y2hpbmUgcmVnaXN0ZXJzICovDQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIFhDVlJfUFNNX0NBTF9UTVIgIHwNCj4gKGsgPDwgOSksIDB4MDE2RCk7DQo+ID4g KyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFhDVlJfUFNNX0EwSU5f VE1SIHwNCj4gKGsgPDwgOSksIDB4MDE2RCk7DQo+ID4gKyAgICAgICAgICAgICAvKiBUcmFuc2Nl aXZlciBjb250cm9sIGFuZCBkaWFnbm9zdGljIHJlZ2lzdGVycyAqLw0KPiA+ICsgICAgICAgICAg ICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LA0KPiBYQ1ZSX0RJQUdfTEFORV9GQ01fRU5f TUdOX1RNUiB8IChrIDw8IDkpLCAweDAwQTIpOw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LA0KPiBUWF9ESUFHX0JHUkVGX1BSRURSVl9ERUxBWSAgICB8IChr IDw8IDkpLCAweDAwOTcpOw0KPiA+ICsgICAgICAgICAgICAgLyogVHJhbnNtaXR0ZXIgcmVjZWl2 ZXIgZGV0ZWN0IHJlZ2lzdGVycyAqLw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBUWF9SQ1ZERVRfRU5fVE1SIHwgKGsNCj4gPDwgOSksIDB4MEE4Qyk7DQo+ ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX1JDVkRFVF9T VF9UTVIgfCAoaw0KPiA8PCA5KSwgMHgwMDM2KTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzAsIDEpOw0KPiA+ ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzEsIDEpOw0K PiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzIsIDEp Ow0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzMs IDEpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcG1hX2Ntbl9wbGww XzI3bWh6KHN0cnVjdA0KPiBjZG5zX2hkcHR4X2RwX3BoeQ0KPiA+ICsqY2Ruc19waHkpIHsNCj4g PiArICAgICB1MzIgbnVtX2xhbmVzID0gY2Ruc19waHktPm51bV9sYW5lczsNCj4gPiArICAgICB1 MzIgbGlua19yYXRlID0gY2Ruc19waHktPmxpbmtfcmF0ZTsNCj4gPiArICAgICB1MTYgdmFsOw0K PiA+ICsgICAgIGludCBpbmRleCwgaSwgazsNCj4gPiArDQo+ID4gKyAgICAgLyogRFAgUExMIGRh dGEgcmF0ZSAwLzEgY2xvY2sgZGl2aWRlciB2YWx1ZSAqLw0KPiA+ICsgICAgIHZhbCA9IGNkbnNf cGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOw0KPiA+ICsgICAgIHZhbCAm PSAweDAwRkY7DQo+ID4gKyAgICAgaWYgKGxpbmtfcmF0ZSA8PSBSQVRFXzJfNykNCj4gPiArICAg ICAgICAgICAgIHZhbCB8PSAweDI0MDA7DQo+ID4gKyAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAg ICAgdmFsIHw9IDB4MTIwMDsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgLyogSGlnaCBzcGVlZCBj bG9jayAwLzEgZGl2ICovDQo+ID4gKyAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19w aHksIENNTl9ESUFHX0hTQ0xLX1NFTCk7DQo+ID4gKyAgICAgdmFsICY9IDB4RkZDQzsNCj4gPiAr ICAgICBpZiAobGlua19yYXRlIDw9IFJBVEVfMl83KQ0KPiA+ICsgICAgICAgICAgICAgdmFsIHw9 IDB4MDAxMTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9ESUFH X0hTQ0xLX1NFTCwgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgZm9yIChrID0gMDsgayA8IG51bV9s YW5lczsgaysrKSB7DQo+ID4gKyAgICAgICAgICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChj ZG5zX3BoeSwNCj4gKFhDVlJfRElBR19IU0NMS19TRUwgfCAoayA8PCA5KSkpOw0KPiA+ICsgICAg ICAgICAgICAgdmFsID0gdmFsICYgMHhDRkZGOw0KPiA+ICsgICAgICAgICAgICAgaWYgKGxpbmtf cmF0ZSA8PSBSQVRFXzJfNykNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdmFsIHw9IDB4MTAw MDsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFhDVlJf RElBR19IU0NMS19TRUwgfA0KPiAoayA8PCA5KSksIHZhbCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAvKiBEUCBQSFkgUExMIDI3TUh6IGNvbmZpZ3VyYXRpb24gKi8NCj4gPiArICAg ICBpbmRleCA9IGxpbmtfcmF0ZV9pbmRleChsaW5rX3JhdGUpOw0KPiA+ICsgICAgIGZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKHBoeV9wbGxfMjdtX2NmZyk7IGkrKykNCj4gPiArICAgICAgICAg ICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgcGh5X3BsbF8yN21fY2ZnW2ldLmFkZHIs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5X3BsbF8yN21fY2ZnW2ldLnZh bFtpbmRleF0pOw0KPiA+ICsNCj4gPiArICAgICAvKiBUcmFuc2NlaXZlciBjb250cm9sIGFuZCBk aWFnbm9zdGljIHJlZ2lzdGVycyAqLw0KPiA+ICsgICAgIGZvciAoayA9IDA7IGsgPCBudW1fbGFu ZXM7IGsrKykgew0KPiA+ICsgICAgICAgICAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ru c19waHksDQo+IChYQ1ZSX0RJQUdfUExMRFJDX0NUUkwgfCAoayA8PCA5KSkpOw0KPiA+ICsgICAg ICAgICAgICAgdmFsID0gdmFsICYgMHg4RkZGOw0KPiA+ICsgICAgICAgICAgICAgaWYgKGxpbmtf cmF0ZSA8PSBSQVRFXzJfNykNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdmFsIHw9IDB4MjAw MDsNCj4gPiArICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdmFs IHw9IDB4MTAwMDsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwNCj4gKFhDVlJfRElBR19QTExEUkNfQ1RSTCB8IChrIDw8IDkpKSwgdmFsKTsNCj4gPiArICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgIGZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBrICsg MSkgew0KPiA+ICsgICAgICAgICAgICAgLyogUG93ZXIgc3RhdGUgbWFjaGluZSByZWdpc3RlcnMg Ki8NCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFhDVlJf UFNNX1JDVFJMIHwgKGsgPDwNCj4gOSkpLCAgMHhCRUZDKTsNCj4gPiArICAgICAgICAgICAgIGNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMCB8IChrIDw8IDkpKSwNCj4gMHg2 Nzk5KTsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRY X1BTQ19BMSB8IChrIDw8IDkpKSwNCj4gMHg2Nzk4KTsNCj4gPiArICAgICAgICAgICAgIGNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMiB8IChrIDw8IDkpKSwNCj4gMHgwMDk4 KTsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BT Q19BMyB8IChrIDw8IDkpKSwNCj4gMHgwMDk4KTsNCj4gPiArICAgICAgICAgICAgIC8qIFJlY2Vp dmVyIGNhbGlicmF0aW9uIHBvd2VyIHN0YXRlIGRlZmluaXRpb24gcmVnaXN0ZXIgKi8NCj4gPiAr ICAgICAgICAgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBSWF9QU0NfQ0FM IHwgKGsgPDwNCj4gOSkpOw0KPiA+ICsgICAgICAgICAgICAgdmFsICY9IDB4RkZCQjsNCj4gPiAr ICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFJYX1BTQ19DQUwgfCAo ayA8PCA5KSksDQo+IHZhbCk7DQo+ID4gKyAgICAgICAgICAgICB2YWwgPSBjZG5zX3BoeV9yZWdf cmVhZChjZG5zX3BoeSwgUlhfUFNDX0EwICB8IChrIDw8DQo+IDkpKTsNCj4gPiArICAgICAgICAg ICAgIHZhbCAmPSAweEZGQkI7DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIChSWF9QU0NfQTAgIHwgKGsgPDwgOSkpLA0KPiB2YWwpOw0KPiA+ICsgICAgIH0N Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaGRwdHhfZHBfcGh5X3JlZl9jbG9ja190 eXBlKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeQ0KPiA+ICsqY2Ruc19waHkpIHsNCj4gPiArICAg ICB1MzIgdmFsOw0KPiA+ICsNCj4gPiArICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5z X3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEpOw0KPiA+ICsgICAgIHZhbCAmPSAweEZGOEY7DQo+ID4g KyAgICAgLyoNCj4gPiArICAgICAgKiBzaW5nbGUgZW5kZWQgcmVmZXJlbmNlIGNsb2NrICh2YWwg fD0gMHgwMDMwKTsNCj4gPiArICAgICAgKiBkaWZmZXJlbnRpYWwgY2xvY2sgICh2YWwgfD0gMHgw MDAwKTsNCj4gPiArICAgICAgKg0KPiA+ICsgICAgICAqIGZvciBkaWZmZXJlbnRpYWwgY2xvY2sg b24gdGhlIHJlZmNsa19wIGFuZA0KPiA+ICsgICAgICAqIHJlZmNsa19tIG9mZiBjaGlwIHBpbnM6 IENNTl9ESUFHX0FDWUFbOF09MSdiMQ0KPiA+ICsgICAgICAqIGNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgQ01OX0RJQUdfQUNZQSwgMHgwMTAwKTsNCj4gPiArICAgICAgKi8NCj4gPiArICAg ICB2YWwgfD0gMHgwMDMwOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg UEhZX1BNQV9DTU5fQ1RSTDEsIHZhbCk7IH0NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaGRwdHhf ZHBfcGh5X3Bvd2VyX3VwKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpDQo+ID4g K3sNCj4gPiArICAgICB1MzIgdmFsLCBpOw0KPiA+ICsNCj4gPiArICAgICAvKiBFbmFibGUgSERQ IFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tzICovDQo+ID4gKyAgICAgdmFsID0gY2Ruc19w aHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7DQo+ID4gKyAgICAgdmFsIHw9 ICgxIDw8IDApOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hE UF9DTEtfQ1RMLCB2YWwpOw0KPiA+ICsgICAgIC8qIFdhaXQgZm9yIFBMTCByZWFkeSBBQ0sgKi8N Cj4gPiArICAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAg dmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7DQo+ID4g KyAgICAgICAgICAgICBpZiAodmFsICYgKDEgPDwgMSkpDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgbXNsZWVwKDIwKTsNCj4gPiArICAgICB9DQo+ ID4gKyAgICAgaWYgKGkgPT0gMTApIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoY2Ruc19w aHktPmRldiwgIldhaXQgUExMIEFjayBmYWlsZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgcmV0 dXJuIC0xOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgLyogRW5hYmxlIEhEUCBQTEzi gJlzIGRhdGEgcmF0ZSBhbmQgZnVsbCByYXRlIGNsb2NrcyBvdXQgb2YgUE1BLiAqLw0KPiA+ICsg ICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOw0K PiA+ICsgICAgIHZhbCB8PSAoMSA8PCAyKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsNCj4gPiArICAgICAvKiBXYWl0IGZvciBQ TEwgY2xvY2sgZW5hYmxlIEFDSyAqLw0KPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsr KSB7DQo+ID4gKyAgICAgICAgICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwg UEhZX0hEUF9DTEtfQ1RMKTsNCj4gPiArICAgICAgICAgICAgIGlmICh2YWwgJiAoMSA8PCAzKSkN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBtc2xl ZXAoMjApOw0KPiA+ICsgICAgIH0NCj4gPiArICAgICBpZiAoaSA9PSAxMCkgew0KPiA+ICsgICAg ICAgICAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBQTEwgY2xvY2sgZW5hYmxlIEFD aw0KPiBmYWlsZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+ICsgICAg IH0NCj4gPiArDQo+ID4gKyAgICAgLyogQ29uZmlndXJlIFBIWSBpbiBBMiBNb2RlICovDQo+ID4g KyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwgMHgw MDA0KTsNCj4gPiArICAgICAvKiBXYWl0IGZvciBQb3dlciBTdGF0ZSBBMiBBY2sgKi8NCj4gPiAr ICAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgdmFsID0g Y2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksDQo+IFBIWV9IRFBfTU9ERV9DVFJMKTsNCj4gPiAr ICAgICAgICAgICAgIGlmICh2YWwgJiAoMSA8PCA2KSkNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBtc2xlZXAoMjApOw0KPiA+ICsgICAgIH0NCj4g PiArICAgICBpZiAoaSA9PSAxMCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihjZG5zX3Bo eS0+ZGV2LCAiV2FpdCBBMiBBY2sgZmFpbGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVy biAtMTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIC8qIENvbmZpZ3VyZSBQSFkgaW4g QTAgbW9kZSAoUEhZIG11c3QgYmUgaW4gdGhlIEEwIHBvd2VyDQo+ID4gKyAgICAgICogc3RhdGUg aW4gb3JkZXIgdG8gdHJhbnNtaXQgZGF0YSkNCj4gPiArICAgICAgKi8NCj4gPiArICAgICBjZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMLCAweDAxMDEpOw0KPiA+ ICsNCj4gPiArICAgICAvKiBXYWl0IGZvciBQb3dlciBTdGF0ZSBBMCBBY2sgKi8NCj4gPiArICAg ICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgdmFsID0gY2Ru c19waHlfcmVnX3JlYWQoY2Ruc19waHksDQo+IFBIWV9IRFBfTU9ERV9DVFJMKTsNCj4gPiArICAg ICAgICAgICAgIGlmICh2YWwgJiAoMSA8PCA0KSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBtc2xlZXAoMjApOw0KPiA+ICsgICAgIH0NCj4gPiAr ICAgICBpZiAoaSA9PSAxMCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihjZG5zX3BoeS0+ ZGV2LCAiV2FpdCBBMCBBY2sgZmFpbGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAt MTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5LT5wb3dlcl91cCA9IHRy dWU7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgdm9pZCBoZHB0eF9kcF9waHlfcG93ZXJfZG93bihzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkN Cj4gPiArKmNkbnNfcGh5KSB7DQo+ID4gKyAgICAgdTE2IHZhbDsNCj4gPiArICAgICBpbnQgaTsN Cj4gPiArDQo+ID4gKyAgICAgaWYgKCFjZG5zX3BoeS0+cG93ZXJfdXApDQo+ID4gKyAgICAgICAg ICAgICByZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgIC8qIFBsYWNlIHRoZSBQSFkgbGFuZXMgaW4g dGhlIEEzIHBvd2VyIHN0YXRlLiAqLw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwsIDB4OCk7DQo+ID4gKyAgICAgLyogV2FpdCBmb3IgUG93 ZXIgU3RhdGUgQTMgQWNrICovDQo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsN Cj4gPiArICAgICAgICAgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LA0KPiBQ SFlfSERQX01PREVfQ1RSTCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAodmFsICYgKDEgPDwgNykp DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgbXNs ZWVwKDIwKTsNCj4gPiArICAgICB9DQo+ID4gKyAgICAgaWYgKGkgPT0gMTApIHsNCj4gPiArICAg ICAgICAgICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgQTMgQWNrIGZhaWxlZFxuIik7 DQo+ID4gKyAgICAgICAgICAgICByZXR1cm47DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAvKiBEaXNhYmxlIEhEUCBQTEzigJlzIGRhdGEgcmF0ZSBhbmQgZnVsbCByYXRlIGNsb2NrcyBv dXQgb2YgUE1BLiAqLw0KPiA+ICsgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5 LCBQSFlfSERQX0NMS19DVEwpOw0KPiA+ICsgICAgIHZhbCAmPSB+KDEgPDwgMik7DQo+ID4gKyAg ICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwsIHZhbCk7DQo+ ID4gKyAgICAgLyogV2FpdCBmb3IgUExMIGNsb2NrIGdhdGUgQUNLICovDQo+ID4gKyAgICAgZm9y IChpID0gMDsgaSA8IDEwOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgIHZhbCA9IGNkbnNfcGh5 X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOw0KPiA+ICsgICAgICAgICAgICAg aWYgKCEodmFsICYgKDEgPDwgMykpKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsN Cj4gPiArICAgICAgICAgICAgIG1zbGVlcCgyMCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgIGlm IChpID09IDEwKSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJX YWl0IFBMTCBjbG9jayBnYXRlIEFjaw0KPiBmYWlsZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAg cmV0dXJuOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgLyogRGlzYWJsZSBIRFAgUExM 4oCZcyBmb3IgaGlnaCBzcGVlZCBjbG9ja3MgKi8NCj4gPiArICAgICB2YWwgPSBjZG5zX3BoeV9y ZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsNCj4gPiArICAgICB2YWwgJj0gfigx IDw8IDApOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9D TEtfQ1RMLCB2YWwpOw0KPiA+ICsgICAgIC8qIFdhaXQgZm9yIFBMTCBkaXNhYmxlIEFDSyAqLw0K PiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICB2 YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsNCj4gPiAr ICAgICAgICAgICAgIGlmICghKHZhbCAmICgxIDw8IDEpKSkNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBtc2xlZXAoMjApOw0KPiA+ICsgICAgIH0N Cj4gPiArICAgICBpZiAoaSA9PSAxMCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihjZG5z X3BoeS0+ZGV2LCAiV2FpdCBQTEwgZGlzYWJsZSBBY2sgZmFpbGVkXG4iKTsNCj4gPiArICAgICAg ICAgICAgIHJldHVybjsNCj4gPiArICAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgY2Ruc19oZHB0eF9kcF9waHlfb24oc3RydWN0IHBoeSAqcGh5KSB7DQo+ID4gKyAgICAgc3Ry dWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOw0K PiA+ICsNCj4gPiArICAgICByZXR1cm4gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsg fQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX3BoeV9vZmYoc3RydWN0IHBo eSAqcGh5KSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9 IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOw0KPiA+ICsNCj4gPiArICAgICBoZHB0eF9kcF9waHlfcG93 ZXJfZG93bihjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNkbnNfaGRwdHhfZHBfcGh5X2luaXQoc3RydWN0IHBoeSAq cGh5KSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBo eV9nZXRfZHJ2ZGF0YShwaHkpOw0KPiA+ICsgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAg IGhkcHR4X2RwX3BoeV9yZWZfY2xvY2tfdHlwZShjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAg IC8qIFBIWSBwb3dlciB1cCAqLw0KPiA+ICsgICAgIHJldCA9IGhkcHR4X2RwX3BoeV9wb3dlcl91 cChjZG5zX3BoeSk7DQo+ID4gKyAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArICAgICBoZHB0eF9kcF9hdXhfY2ZnKGNkbnNfcGh5KTsN Cj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludCBjZG5zX2hkcHR4X2RwX2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9w dHMpDQo+IHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5ID0g cGh5X2dldF9kcnZkYXRhKHBoeSk7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAg ICAgY2Ruc19waHktPmxpbmtfcmF0ZSA9IG9wdHMtPmRwLmxpbmtfcmF0ZTsNCj4gPiArICAgICBj ZG5zX3BoeS0+bnVtX2xhbmVzID0gb3B0cy0+ZHAubGFuZXM7DQo+ID4gKw0KPiA+ICsgICAgIGlm IChjZG5zX3BoeS0+bGlua19yYXRlID4gTUFYX0xJTktfUkFURSkgew0KPiA+ICsgICAgICAgICAg ICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiTGluayBSYXRlKCVkKSBOb3Qgc3VwcG9ydGVkXG4i LA0KPiBjZG5zX3BoeS0+bGlua19yYXRlKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIC8qIERpc2FibGUgcGh5IGNsb2NrIGlm IFBIWSBpbiBwb3dlciB1cCBzdGF0ZSAqLw0KPiA+ICsgICAgIGhkcHR4X2RwX3BoeV9wb3dlcl9k b3duKGNkbnNfcGh5KTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKGNkbnNfcGh5LT5yZWZfY2xrX3Jh dGUgPT0gUkVGX0NMS18yN01IWikgew0KPiA+ICsgICAgICAgICAgICAgaGRwdHhfZHBfcGh5X3Bt YV9jbW5fY2ZnXzI3bWh6KGNkbnNfcGh5KTsNCj4gPiArICAgICAgICAgICAgIGhkcHR4X2RwX3Bo eV9wbWFfY21uX3BsbDBfMjdtaHooY2Ruc19waHkpOw0KPiA+ICsgICAgIH0gZWxzZQ0KPiA+ICsg ICAgICAgICAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiTm90IHN1cHBvcnQgcmVmIGNsb2Nr IHJhdGVcbiIpOw0KPiA+ICsNCj4gPiArICAgICAvKiBQSFkgcG93ZXIgdXAgKi8NCj4gPiArICAg ICByZXQgPSBoZHB0eF9kcF9waHlfcG93ZXJfdXAoY2Ruc19waHkpOw0KPiA+ICsNCj4gPiArICAg ICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBo eV9vcHMgY2Ruc19oZHB0eF9kcF9waHlfb3BzID0gew0KPiA+ICsgICAgIC5pbml0ICAgICAgICAg ICA9IGNkbnNfaGRwdHhfZHBfcGh5X2luaXQsDQo+ID4gKyAgICAgLmNvbmZpZ3VyZSAgICAgID0g Y2Ruc19oZHB0eF9kcF9jb25maWd1cmUsDQo+ID4gKyAgICAgLnBvd2VyX29uICAgICAgID0gY2Ru c19oZHB0eF9kcF9waHlfb24sDQo+ID4gKyAgICAgLnBvd2VyX29mZiAgICAgID0gY2Ruc19oZHB0 eF9kcF9waHlfb2ZmLA0KPiA+ICsgICAgIC5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLA0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX3BoeV9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfaGRw dHhfZHBfcGh5ICpjZG5zX3BoeTsNCj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRl di0+ZGV2Ow0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zfbm9k ZTsNCj4gPiArICAgICBzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7DQo+ID4gKyAg ICAgc3RydWN0IHJlc291cmNlICpyZXM7DQo+ID4gKyAgICAgc3RydWN0IHBoeSAqcGh5Ow0KPiA+ ICsgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5ID0gZGV2bV9remFsbG9j KGRldiwgc2l6ZW9mKCpjZG5zX3BoeSksIEdGUF9LRVJORUwpOw0KPiA+ICsgICAgIGlmICghY2Ru c19waHkpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKyAg ICAgZGV2X3NldF9kcnZkYXRhKGRldiwgY2Ruc19waHkpOw0KPiA+ICsgICAgIGNkbnNfcGh5LT5k ZXYgPSBkZXY7DQo+ID4gKyAgICAgbXV0ZXhfaW5pdCgmY2Ruc19waHktPm1ib3hfbXV0ZXgpOw0K PiA+ICsNCj4gPiArICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNP VVJDRV9NRU0sIDApOw0KPiA+ICsgICAgIGlmICghcmVzKQ0KPiA+ICsgICAgICAgICAgICAgcmV0 dXJuIC1FTk9ERVY7DQo+ID4gKyAgICAgY2Ruc19waHktPnJlZ3MgPSBkZXZtX2lvcmVtYXAoZGV2 LCByZXMtPnN0YXJ0LA0KPiByZXNvdXJjZV9zaXplKHJlcykpOw0KPiA+ICsgICAgIGlmIChJU19F UlIoY2Ruc19waHktPnJlZ3MpKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY2Ru c19waHktPnJlZ3MpOw0KPiA+ICsNCj4gPiArICAgICBwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2 LCBub2RlLCAmY2Ruc19oZHB0eF9kcF9waHlfb3BzKTsNCj4gPiArICAgICBpZiAoSVNfRVJSKHBo eSkpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwaHkpOw0KPiA+ICsNCj4gPiAr ICAgICBwaHktPmF0dHJzLm1vZGUgPSBQSFlfTU9ERV9EUDsNCj4gPiArICAgICBjZG5zX3BoeS0+ cGh5ID0gcGh5Ow0KPiA+ICsgICAgIHBoeV9zZXRfZHJ2ZGF0YShwaHksIGNkbnNfcGh5KTsNCj4g PiArDQo+ID4gKyAgICAgcmV0ID0gaGRwdHhfZHBfY2xrX2VuYWJsZShjZG5zX3BoeSk7DQo+ID4g KyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJJbml0IGNs ayBmYWlsXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAg IH0NCj4gPiArDQo+ID4gKyAgICAgcGh5X3Byb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJf cmVnaXN0ZXIoZGV2LA0KPiBvZl9waHlfc2ltcGxlX3hsYXRlKTsNCj4gPiArICAgICBpZiAoSVNf RVJSKHBoeV9wcm92aWRlcikpIHsNCj4gPiArICAgICAgICAgICAgIHJldCA9ICBQVFJfRVJSKHBo eV9wcm92aWRlcik7DQo+ID4gKyAgICAgICAgICAgICBnb3RvIGNsa19kaXNhYmxlOw0KPiA+ICsg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICtjbGtfZGlzYWJs ZToNCj4gPiArICAgICBoZHB0eF9kcF9jbGtfZGlzYWJsZShjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ ICsgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNk bnNfaGRwdHhfZHBfcGh5X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ ID4gKyAgICAgc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9DQo+IHBsYXRmb3Jt X2dldF9kcnZkYXRhKHBkZXYpOw0KPiA+ICsNCj4gPiArICAgICBoZHB0eF9kcF9jbGtfZGlzYWJs ZShjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBjZG5zX2hkcHR4X2RwX3BoeV9v Zl9tYXRjaFtdID0gew0KPiA+ICsgICAgIHsuY29tcGF0aWJsZSA9ICJmc2wsaW14OG1xLWRwLXBo eSIgfSwNCj4gPiArICAgICB7IC8qIHNlbnRpbmVsICovIH0NCj4gPiArfTsNCj4gPiArTU9EVUxF X0RFVklDRV9UQUJMRShvZiwgY2Ruc19oZHB0eF9kcF9waHlfb2ZfbWF0Y2gpOw0KPiA+ICsNCj4g PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY2Ruc19oZHB0eF9kcF9waHlfZHJpdmVy ID0gew0KPiA+ICsgICAgIC5wcm9iZSAgPSBjZG5zX2hkcHR4X2RwX3BoeV9wcm9iZSwNCj4gPiAr ICAgICAucmVtb3ZlID0gY2Ruc19oZHB0eF9kcF9waHlfcmVtb3ZlLA0KPiA+ICsgICAgIC5kcml2 ZXIgPSB7DQo+ID4gKyAgICAgICAgICAgICAubmFtZSAgID0gImNkbnMtaGRwdHgtZHAtcGh5IiwN Cj4gPiArICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IGNkbnNfaGRwdHhfZHBfcGh5X29m X21hdGNoLA0KPiA+ICsgICAgIH0NCj4gPiArfTsNCj4gPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZl cihjZG5zX2hkcHR4X2RwX3BoeV9kcml2ZXIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigi U2FuZG9yIFl1IDxzYW5kb3IueXVAbnhwLmNvbT4iKTsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9O KCJDYWRlbmNlIEhEUC1UWCBEaXNwbGF5UG9ydCBQSFkgZHJpdmVyIik7DQo+ID4gK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsNCj4gPiAtLQ0KPiA+IDIuMzQuMQ0KPiANCj4gLS0NCj4gflZpbm9kDQpC LlINClNhbmRvcg0K