Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp2950726rwb; Mon, 16 Jan 2023 01:27:51 -0800 (PST) X-Google-Smtp-Source: AMrXdXv0scgvnBzyBVTNCRtupbJ23KptQVAAnH74PyXWkA0oAc5TpJLPHF4SHZyEXDRLmdp12di6 X-Received: by 2002:a17:902:f08d:b0:194:6286:73ba with SMTP id p13-20020a170902f08d00b00194628673bamr12327105pla.13.1673861270952; Mon, 16 Jan 2023 01:27:50 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1673861270; cv=pass; d=google.com; s=arc-20160816; b=aAZIGAvHfP0PYiRm64HNF06PJJiaMN9W5XlfY46Kbca2bpsvcl347M79EmGxPKaCa9 YZV1Cq6fWVBDdM6Eip826UXUsTDt91758kXgmI5JbrlDaTi55TpbueJwKnk2GJY+lWtM j/gHm6uWCktSbXElEZ5i22uJxmaQ6tOm/lsJ5EZjyZUHLCnCbYoVwD/962l5w7G9+c8w K5c2FibhTBsh6fA7iGd0I/YKb3WAXglZkc2UuaR8GMm1RPPrK4ZKQlgOiojKumSWVL2H v8jYwHPRumEYswAKQadwTRY/GQETExIdaI8LjrN8z+zUkzrEODGvfwKhUtHidNQV7+PB BCqw== 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=/HMBc6uZSpoaGUdozIkxHyknncTSkbSM5KCFvLK3+aY=; b=YoCmxwSqZ0nDzPatC2fIpym7v+bT+iT5m9KTM2CMCS8g8VKOCDTyvGLWBR86gB+4ty HWoeMp/r+Yyp6n3qkLBv68cP0XSaK5iVJxvltnA+EvFrv++DGlPW6zL+uMAsjygw0hiU pG+wWQadWKa+KPsQ3ouNKYHZ8BzAH+3kvV36b0xuwC9Du+HoaG1GZGLh7p0gkFTVu2iN rv6EMmee5evxRjqVVgQRAbMbPxIa3r0kvmsUhWCGU8s71nZu7vGK5FE7OkE5kH/Eo3Eh 2eyttvL9USakHkKmRBtz+U6sj963U2MO0fbT0RXHzxPHOcuDLiquDA6/QabZnFQ9NEnS mwrQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=mUqW0vWy; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h21-20020a170902f7d500b001868ef35f09si27309382plw.258.2023.01.16.01.27.44; Mon, 16 Jan 2023 01:27:50 -0800 (PST) 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=@amd.com header.s=selector1 header.b=mUqW0vWy; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232562AbjAPJGZ (ORCPT + 53 others); Mon, 16 Jan 2023 04:06:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38208 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232434AbjAPJFz (ORCPT ); Mon, 16 Jan 2023 04:05:55 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE341166C3; Mon, 16 Jan 2023 01:03:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ASW6OdlWzEqRDVGF3fkBtvwhnP1PrfAiEs1P7v1xx6i9UnP9WafjrEAJmKdqo54bFDmgGOYDSpGgeyLKhnjYNl1ZBTiwEy4YAhJtxAsUzzp+6tlqsrOEscsjluHC/0GDqqkop4bNFQ0DtWpTQwQQkBZdl6thVVgFX6tS3Sc1mNyUPNegIxgkxzK7nhPTJYDTusSat7rquGY5YCRUE/Q1P59edKGEYsQNpHDJi1upE+1VIMTQNvdm4CnaDXCwgL3s1rpkSfh4mHsyYqPMDvKd/PRaBMLo+Ssi2TDYXmZ6Mwoi0DG5DAs++2ujJ3aNO4qDrNoifjY21u+9h5DM55WLLg== 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=/HMBc6uZSpoaGUdozIkxHyknncTSkbSM5KCFvLK3+aY=; b=hUorSN0IzXUoCQZhoQWlETovGRJ5muCP6joW3sWhzzp5czKlBo/MISbKHZ06CLWVDFknIH2FjXHn1wurM/k/Zm1TXMjjEgj6b+IYIbLhbSgGsEhKdtxSpxoe4AeN+7hZavOvv+Lmkz3SixfRzSL653QXnX39GTk3s1ULkDPepC6iGbXJwgxg/f7yBPp9x2JM9izIgPSgQVq8qa5Ssj0kWLjKkcesXrqmTFMvii1WgFczHe7I/LRTgFiESkpuRv4YPiPKC2OtCxmSWOKVeOq3RpdROAiEObbudeJ2mGyooJZEVjnTehYkGKRQc/Uekd6L1K1hFHdE9dzvH0r+mC8x9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/HMBc6uZSpoaGUdozIkxHyknncTSkbSM5KCFvLK3+aY=; b=mUqW0vWymjtPp2/CFXAHLmjP8nA7uP/S/4/nv1Wat3Yjgx6MwQB5yP+frNaPIHI174SQwFciniq3UcexEBPuUqzhaF0lLFJbh3imCBVk/c9zTrN4BFjZPE/99hHdLJopr79YcsritGISiMkP9BTM15GjFIkgJuFgGvfv1NeRB/M= Received: from BN8PR12MB2852.namprd12.prod.outlook.com (2603:10b6:408:9a::14) by SA1PR12MB6994.namprd12.prod.outlook.com (2603:10b6:806:24d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.23; Mon, 16 Jan 2023 09:02:56 +0000 Received: from BN8PR12MB2852.namprd12.prod.outlook.com ([fe80::2ba1:a8d4:5538:b0ac]) by BN8PR12MB2852.namprd12.prod.outlook.com ([fe80::2ba1:a8d4:5538:b0ac%7]) with mapi id 15.20.5986.023; Mon, 16 Jan 2023 09:02:56 +0000 From: "Somisetty, Pranavi" To: Vladimir Oltean , "netdev@vger.kernel.org" CC: "linux-kernel@vger.kernel.org" , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Michal Kubecek , Claudiu Manoil , Vinicius Costa Gomes , Xiaoliang Yang , Kurt Kanzenbach , Rui Sousa , Ferenc Fejes , "Katakam, Harini" , Colin Foster , "UNGLinuxDriver@microchip.com" , Alexandre Belloni , Andrew Lunn , Florian Fainelli Subject: RE: [PATCH v2 net-next 02/12] net: ethtool: add support for MAC Merge layer Thread-Topic: [PATCH v2 net-next 02/12] net: ethtool: add support for MAC Merge layer Thread-Index: AQHZJdgxBTnJiOZ5xUaOm+ZGwW7OK66gw7JA Date: Mon, 16 Jan 2023 09:02:55 +0000 Message-ID: References: <20230111161706.1465242-1-vladimir.oltean@nxp.com> <20230111161706.1465242-3-vladimir.oltean@nxp.com> In-Reply-To: <20230111161706.1465242-3-vladimir.oltean@nxp.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=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN8PR12MB2852:EE_|SA1PR12MB6994:EE_ x-ms-office365-filtering-correlation-id: aed2837b-225e-4ab5-4630-08daf7a07539 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ShZ03DU9oChMzNpfHNNuoOO7+cPQv7PG5/tY4ikNp7W2xysYD+DwEh8IjvWz3+ItZmbpqW5KE1oS+kYE60+QBzY77IZOqmqthWskUOdeuLHiXGTT8mOFya4pxz2FBcdHNGALks/+DUTTWH4fBzTSa0Jk/OEtgiqPQVZfIaKB8OYe3Kt4wwEdNoh1Mz9Ch7p6tI6ys9J9xaFGZHTec+fN/DNX/pksT8TI63e3wXvIGNMJn6aO4fpRo2b8y3M836HT0rejGzM2lJD6nkFXz5nJzkyXpzQ0POOxCqCnTCIE+W65+MjyD1FsYSviB6BgCBDTs4Za6zY8kyVxby3L3Ony13+MRdOS5DRtS6vPieg7VUFC3QHroe6WFeVn2ztL/Ka2yMMYShbslQa3KEenCPMgNMs6OJWCEXe2i5QGbqQathD0m1GfYpzOG/94+SgeQe64jqAqoFkgwOTLjrlQ4ioOaP0mMiWU7hyJRbzjPXpgZ8g0gyHVRqURhto2GVhdlSeMGR/a5Ah+QIStT9dO/sjmPaoh87uiaZkrcUmO1oV75xnxoUBsqRzFUQPiN7HWsaP5qN+cWLWFva3bHo9DIOw1ie5pvd+pP+y6dGLcxsX8lDhd4jc2yflIthrd9mU3eX+yHMf/e2qaVTDlyK4KZ02nk6zCdQHn93hC1+GZ1wq3S5jOghkSDFvYkeYWLypI0JgSXRp7NfqDUYBcyaUk6bLrcKoHpVvTwOrVTqBzmDE7lvw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR12MB2852.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(39860400002)(366004)(376002)(396003)(346002)(451199015)(66899015)(86362001)(38070700005)(4326008)(76116006)(55016003)(52536014)(8936002)(66476007)(64756008)(66446008)(8676002)(66556008)(66946007)(30864003)(2906002)(7416002)(83380400001)(33656002)(122000001)(38100700002)(5660300002)(41300700001)(7696005)(478600001)(110136005)(71200400001)(54906003)(316002)(53546011)(9686003)(26005)(186003)(6506007)(559001)(579004)(134885004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ck9ZSjFYNUhtT21XNGxpYmtKQSsxTGdXc2YwY3FlRDZXTTNoNmpwNTViMDlZ?= =?utf-8?B?a1NaZ1hvOXZ4cnN0dUJBeDVvSGtYaTJhcC9mYnhrTDE5NWd5ekZ4alA3aFRM?= =?utf-8?B?b2RlZjRHNzBIY0Y0T3ZJdlhFN084VTF3ZjNRRE9mcFZRbU80NnFzQ0ZKRkVr?= =?utf-8?B?VlR5Y1o5UDE5aEdobEpxb2NJL2Y1czJYbnFBd3ZiZktHWGFzSWJ3c2N5Z1Ur?= =?utf-8?B?K1lzRXBVdys0K01TSnlDekhQbUYydU1QaWJ1SGtvMXlIeUhiRklQblloT2lD?= =?utf-8?B?SGh2dUZBV29rN0pDUndaTnpSK21sd2l6c1QyY1l4ZDd6L0IzUmpTL2pRTkJw?= =?utf-8?B?M2VkYjBXMjdqeHpkcDA4bTBJZElOSDI2NEFXelpiREFBd0ppOGNaS25jS2s4?= =?utf-8?B?RmYzRUI3NHJJRFVpOHdDejhnQXQ0aW5tQWZSeFdBWVlvWmRuY3dFWU5tUDMz?= =?utf-8?B?MVFybG5rV1RXMGx3NFI4OVFYcUlqdzN5Rm9nc3NpTFVJRTVubXYwS0c3SCtp?= =?utf-8?B?T0Z1aDkvUzVIMC9YaHd6dG9qc0MyWFh6ellkRFBuUWVXUUU5Ry9Yekh6VlJl?= =?utf-8?B?eGFmK1U3OVR4ZDUvTWl3KzhzTjRzOFdOMkFQeGthdWdrZWhBRHF0dFNBQ0VY?= =?utf-8?B?V2VjaGhqZXVrSTk4MGg2RzUwT0FXbkI1YmQ4d3dCY1BuM2JxTjF3VFhiVjRk?= =?utf-8?B?ZlVaQXVpNG8welMva0c1UkZ0WTlzN2ZWL1pDdFNUck5rdTJmTkMrRnVNdzB0?= =?utf-8?B?aDRiOTlXRHRZbXlaMXEwamxGTHQveTRpSlYzWVA4NGRLbmZEMGFzVXpBR0dh?= =?utf-8?B?NkVFMnlqd2RPMElBMHI1R1BldnYzMUxseHdTMXE1N0RmbDB1Q28xOVozK0F3?= =?utf-8?B?MlU2VDlHa2V4MEpoTXNXcy8rNDgvUEhPbG90WDFWVVBUelBKZ3NPR0JVZm9U?= =?utf-8?B?MldmeGgxRU9GSzJwM3RDWm9ZdlBHRzNFUktOckF6U21kNXZmd1psMHNQRk1Z?= =?utf-8?B?bHYvQVpRREZWZ0NxdEJ5bWJnNE1lT1hMYUJGUTZYTk1KeWRITlJBdmMzRUdS?= =?utf-8?B?RDZsQ0dzUGVZWTJ2RU83bldxYkxyZXR4TGVIS0lPRGc3Z1Bzdno0ZW53QTB5?= =?utf-8?B?dlpTOW5UQS9GYUN5TUFzdTlWWXBWR09YT1NGZ3M5OTN6eWg1SE90cXZDdnUv?= =?utf-8?B?N0F6TkN1MmorRjhjNnFyUzl0YUhkbEN1MXlYSXNBRC82TVdSaGQ3dVpUNEI1?= =?utf-8?B?NjhoZkM0MGY5a1UzZTg1NUNaRkxZNE9yOE93MmZMY1dFckttU2FreEthNE44?= =?utf-8?B?OUFVZ0RpZU5qaXhlVHFWc1pncVk1a1BlWXRuSUh2L29ybEs2bHNuMjVWdGlH?= =?utf-8?B?cm94cDhOZ0dlTTUwd0M4bFVGUlJ5d1NDdVlGVVc3Q0k1RXVoRy9MeGhpeWdU?= =?utf-8?B?RlVuSnFtWHlZd0Y0TFpWRGlEN3NHZFVaTEpDeXdFSFd2YVUzSjdhSVUwM1g0?= =?utf-8?B?TzdHZjFrSmlJckJEaGc5aFZqWW5aNjdLZDlndm03VmZIOHhDSTd4ZkhhVURF?= =?utf-8?B?dEsxK1FoSHY3TkFwSGtmanc3VDBBYXpLY1Ezdkd0c1lrZk95UGtzRmJSNGEr?= =?utf-8?B?bC9lcndNR0VkNnB5UkREZHJ2bTkrRWxWZEtjZ2gxRXdSRGNSUVdweFNZT2pl?= =?utf-8?B?amdmcmxlc24rWjFBSFBFdFUyS3VYU29TeWdIMTJnR2t6ZFN1amxuVitYMjFU?= =?utf-8?B?ZzhrMmtrZXYxTk13eVZNdWVzZ1I1cC94ZjBUTUJsUG54eFFiSXpYbE1qcmpp?= =?utf-8?B?Q2hDSmN0UmFHWjFwNUd0ZU14ZEpONWE5SEo5TW5ReGFyVE1NbGluYlN2MTJx?= =?utf-8?B?RzQ1b3ZMcUNETlRtN2wvV0dyV3BTM05vbStlQS9RVTlOWXhNWlA2b3ZSR1Vr?= =?utf-8?B?NHZVL2hKeWp5UHZqQUxzZ2N4ZDAvd3l3U0ZxQVNQMDdFUHhCdnk2ODZFSkRi?= =?utf-8?B?Y25LdnpVaGlFWTZjWDd0NTdHa3I5aEJra0JEUjc4YzBmZVp5bkpBNm5KSk1U?= =?utf-8?B?akRqSjNGVFNwNTBQRyt3cEw5bkYweDRUaXB6a2J5enZwaTdBcFZDNnBISlU1?= =?utf-8?Q?eZoo=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR12MB2852.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: aed2837b-225e-4ab5-4630-08daf7a07539 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jan 2023 09:02:55.9237 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 0rwB9ozu+akTr2tfay7g6oDsOBg8qLbSaYwPepSewKmbI+bKAbUqEvLqMemLnn3cmvdlhwO7d6NbX9cjP6AC7A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6994 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_NONE, 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 DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFZsYWRpbWlyIE9sdGVhbiA8 dmxhZGltaXIub2x0ZWFuQG54cC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgSmFudWFyeSAxMSwg MjAyMyA5OjQ3IFBNDQo+IFRvOiBuZXRkZXZAdmdlci5rZXJuZWwub3JnDQo+IENjOiBsaW51eC1r ZXJuZWxAdmdlci5rZXJuZWwub3JnOyBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5u ZXQ+Ow0KPiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+OyBKYWt1YiBLaWNpbnNr aSA8a3ViYUBrZXJuZWwub3JnPjsNCj4gUGFvbG8gQWJlbmkgPHBhYmVuaUByZWRoYXQuY29tPjsg TWljaGFsIEt1YmVjZWsgPG1rdWJlY2VrQHN1c2UuY3o+Ow0KPiBDbGF1ZGl1IE1hbm9pbCA8Y2xh dWRpdS5tYW5vaWxAbnhwLmNvbT47IFZpbmljaXVzIENvc3RhIEdvbWVzDQo+IDx2aW5pY2l1cy5n b21lc0BpbnRlbC5jb20+OyBYaWFvbGlhbmcgWWFuZyA8eGlhb2xpYW5nLnlhbmdfMUBueHAuY29t PjsNCj4gS3VydCBLYW56ZW5iYWNoIDxrdXJ0QGxpbnV0cm9uaXguZGU+OyBSdWkgU291c2EgPHJ1 aS5zb3VzYUBueHAuY29tPjsNCj4gRmVyZW5jIEZlamVzIDxmZXJlbmMuZmVqZXNAZXJpY3Nzb24u Y29tPjsgU29taXNldHR5LCBQcmFuYXZpDQo+IDxwcmFuYXZpLnNvbWlzZXR0eUBhbWQuY29tPjsg S2F0YWthbSwgSGFyaW5pDQo+IDxoYXJpbmkua2F0YWthbUBhbWQuY29tPjsgQ29saW4gRm9zdGVy IDxjb2xpbi5mb3N0ZXJAaW4tYWR2YW50YWdlLmNvbT47DQo+IFVOR0xpbnV4RHJpdmVyQG1pY3Jv Y2hpcC5jb207IEFsZXhhbmRyZSBCZWxsb25pDQo+IDxhbGV4YW5kcmUuYmVsbG9uaUBib290bGlu LmNvbT47IEFuZHJldyBMdW5uIDxhbmRyZXdAbHVubi5jaD47IEZsb3JpYW4NCj4gRmFpbmVsbGkg PGYuZmFpbmVsbGlAZ21haWwuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjIgbmV0LW5leHQgMDIv MTJdIG5ldDogZXRodG9vbDogYWRkIHN1cHBvcnQgZm9yIE1BQyBNZXJnZQ0KPiBsYXllcg0KPiAN Cj4gVGhlIE1BQyBtZXJnZSBzdWJsYXllciAoSUVFRSA4MDIuMy0yMDE4IGNsYXVzZSA5OSkgaXMg b25lIG9mIDINCj4gc3BlY2lmaWNhdGlvbnMgKHRoZSBvdGhlciBiZWluZyBGcmFtZSBQcmVlbXB0 aW9uOyBJRUVFIDgwMi4xUS0yMDE4IGNsYXVzZQ0KPiA2LjcuMiksIHdoaWNoIHdvcmsgdG9nZXRo ZXIgdG8gbWluaW1pemUgbGF0ZW5jeSBjYXVzZWQgYnkgZnJhbWUNCj4gaW50ZXJmZXJlbmNlIGF0 IFRYLiBUaGUgb3ZlcmFsbCBnb2FsIG9mIFRTTiBpcyBmb3Igbm9ybWFsIHRyYWZmaWMgYW5kIHRy YWZmaWMNCj4gd2l0aCBhIGJvdW5kZWQgZGVhZGxpbmUgdG8gYmUgYWJsZSB0byBjb2hhYml0YXRl IG9uIHRoZSBzYW1lIEwyIG5ldHdvcmsNCj4gYW5kIG5vdCBib3RoZXIgZWFjaCBvdGhlciB0b28g bXVjaC4NCj4gDQo+IFRoZSBzdGFuZGFyZHMgYWNoaWV2ZSB0aGlzIChwYXJ0bHkpIGJ5IGludHJv ZHVjaW5nIHRoZSBjb25jZXB0IG9mIHByZWVtcHRpYmxlDQo+IHRyYWZmaWMsIGkuZS4gRXRoZXJu ZXQgZnJhbWVzIHRoYXQgaGF2ZSBhIGN1c3RvbSB2YWx1ZSBmb3IgdGhlIFN0YXJ0LW9mLUZyYW1l LQ0KPiBEZWxpbWl0ZXIgKFNGRCksIGFuZCB0aGVzZSBmcmFtZXMgY2FuIGJlIGZyYWdtZW50ZWQg YW5kIHJlYXNzZW1ibGVkIGF0IEwyDQo+IG9uIGEgbGluay1sb2NhbCBiYXNpcy4gVGhlIG5vbi1w cmVlbXB0aWJsZSBmcmFtZXMgYXJlIGNhbGxlZCBleHByZXNzIHRyYWZmaWMsDQo+IHRoZXkgYXJl IHRyYW5zbWl0dGVkIHVzaW5nIGEgbm9ybWFsIFNGRCwgYW5kIHRoZXkgY2FuIHByZWVtcHQgcHJl ZW1wdGlibGUNCj4gZnJhbWVzLCB0aGVyZWZvcmUgaGF2aW5nIGxvd2VyIGxhdGVuY3ksIHdoaWNo IGNhbiBtYXR0ZXIgYXQgbG93ZXIgKDEwMA0KPiBNYnBzKSBsaW5rIHNwZWVkcywgb3IgYXQgaGln aCBNVFVzIChqdW1ibyBmcmFtZXMgYXJvdW5kIDlLKS4gUHJlZW1wdGlvbiBpcw0KPiBub3QgcmVj dXJzaXZlLCBpLmUuIGEgUCBmcmFtZSBjYW5ub3QgcHJlZW1wdCBhbm90aGVyIFAgZnJhbWUuIFBy ZWVtcHRpb24NCj4gYWxzbyBkb2VzIG5vdCBkZXBlbmQgdXBvbiBwcmlvcml0eSwgb3Igb3RoZXJ3 aXNlIHNhaWQsIGFuIEUgZnJhbWUgd2l0aCBwcmlvIDANCj4gd2lsbCBzdGlsbCBwcmVlbXB0IGEg UCBmcmFtZSB3aXRoIHByaW8gNy4NCj4gDQo+IEluIHRlcm1zIG9mIGltcGxlbWVudGF0aW9uLCB0 aGUgc3RhbmRhcmRzIHRhbGsgYWJvdXQgdGhlIHByZXNlbmNlIG9mIGFuDQo+IGV4cHJlc3MgTUFD IChlTUFDKSB3aGljaCBoYW5kbGVzIGV4cHJlc3MgdHJhZmZpYywgYW5kIGEgcHJlZW1wdGlibGUg TUFDDQo+IChwTUFDKSB3aGljaCBoYW5kbGVzIHByZWVtcHRpYmxlIHRyYWZmaWMsIGFuZCB0aGVz ZSBNQUNzIGFyZSBtdWx0aXBsZXhlZA0KPiBvbiB0aGUgc2FtZSBNSUkgYnkgYSBNQUMgbWVyZ2Ug bGF5ZXIuDQo+IA0KPiBUbyBzdXBwb3J0IGZyYW1lIHByZWVtcHRpb24sIHRoZSBkZWZpbml0aW9u IG9mIHRoZSBTRkQgd2FzIGdlbmVyYWxpemVkIHRvDQo+IFNNRCAoU3RhcnQtb2YtbVBhY2tldC1E ZWxpbWl0ZXIpLCB3aGVyZSBhbiBtUGFja2V0IGlzIGVzc2VudGlhbGx5IGFuDQo+IEV0aGVybmV0 IGZyYW1lIGZyYWdtZW50LCBvciBhIGNvbXBsZXRlIGZyYW1lLiBTdGF0aW9ucyB1bmF3YXJlIG9m IGFuIFNNRA0KPiB2YWx1ZSBkaWZmZXJlbnQgZnJvbSB0aGUgc3RhbmRhcmQgU0ZEIHdpbGwgdHJl YXQgUCBmcmFtZXMgYXMgZXJyb3IgZnJhbWVzLiBUbw0KPiBwcmV2ZW50IHRoYXQgZnJvbSBoYXBw ZW5pbmcsIGEgbmVnb3RpYXRpb24gcHJvY2VzcyBpcyBkZWZpbmVkLg0KPiANCj4gT24gUlgsIHBh Y2tldHMgYXJlIGRpc3BhdGNoZWQgdG8gdGhlIGVNQUMgb3IgcE1BQyBhZnRlciBiZWluZyBmaWx0 ZXJlZCBieQ0KPiB0aGVpciBTTUQuIE9uIFRYLCB0aGUgZU1BQy9wTUFDIGNsYXNzaWZpY2F0aW9u IGRlY2lzaW9uIGlzIHRha2VuIGJ5IHRoZQ0KPiA4MDIuMVEgc3BlYywgYmFzZWQgb24gcGFja2V0 IHByaW9yaXR5IChlYWNoIG9mIHRoZSA4IHVzZXIgcHJpb3JpdHkgdmFsdWVzIG1heQ0KPiBoYXZl IGFuIGFkbWluLXN0YXR1cyBvZiBwcmVlbXB0aWJsZSBvciBleHByZXNzKS4NCj4gDQo+IFRoZSBN QUMgTWVyZ2UgbGF5ZXIgYW5kIHRoZSBGcmFtZSBQcmVlbXB0aW9uIHBhcmFtZXRlcnMgaGF2ZSBz b21lDQo+IGRlZ3JlZSBvZiBpbmRlcGVuZGVuY2UgaW4gdGVybXMgb2YgaG93IHNvZnR3YXJlIHN0 YWNrcyBhcmUgc3VwcG9zZWQgdG8NCj4gZGVhbCB3aXRoIHRoZW0uIFRoZSBhY3RpdmF0aW9uIG9m IHRoZSBNTSBsYXllciBpcyBzdXBwb3NlZCB0byBiZSBjb250cm9sbGVkDQo+IGJ5IGFuIExMRFAg ZGFlbW9uIChhZnRlciBpdCBoYXMgYmVlbiBjb21tdW5pY2F0ZWQgdGhhdCB0aGUgbGluayBwYXJ0 bmVyDQo+IGFsc28gc3VwcG9ydHMgaXQpLCBhZnRlciB3aGljaCBhIChoYXJkd2FyZS1iYXNlZCBv ciBub3QpIHZlcmlmaWNhdGlvbg0KPiBoYW5kc2hha2UgdGFrZXMgcGxhY2UsIGJlZm9yZSBhY3R1 YWxseSBlbmFibGluZyB0aGUgZmVhdHVyZS4gU28gdGhlIHByb2Nlc3MgaXMNCj4gaW50ZW5kZWQg dG8gYmUgcmVsYXRpdmVseSBwbHVnLWFuZC1wbGF5LiBXaGVyZWFzIEZQIHNldHRpbmdzIGFyZSBz dXBwb3NlZCB0bw0KPiBiZSBjb29yZGluYXRlZCBhY3Jvc3MgYSBuZXR3b3JrIHVzaW5nIHNvbWV0 aGluZyBhcHByb3hpbWF0aW5nIE5FVENPTkYuDQo+IA0KPiBUaGUgc3VwcG9ydCBjb250YWluZWQg aGVyZSBpcyBleGNsdXNpdmVseSBmb3IgdGhlIDgwMi4zIChNQUMgTWVyZ2UpDQo+IHBvcnRpb25z IGFuZCBub3QgZm9yIHRoZSA4MDIuMVEgKEZyYW1lIFByZWVtcHRpb24pIHBhcnRzLiBUaGlzIEFQ SSBpcw0KPiBzdWZmaWNpZW50IGZvciBhbiBMTERQIGRhZW1vbiB0byBkbyBpdHMgam9iLiBUaGUg RlAgYWRtaW5TdGF0dXMgdmFyaWFibGUgZnJvbQ0KPiA4MDIuMVEgaXMgb3V0c2lkZSB0aGUgc2Nv cGUgb2YgYW4gTExEUCBkYWVtb24uDQo+IA0KPiBJIGhhdmUgdGFrZW4gYSBmZXcgY3JlYXRpdmUg bGljZW5zZXMgYW5kIGF1Z21lbnRlZCB0aGUgTGludXgga2VybmVsIFVBUEkNCj4gY29tcGFyZWQg dG8gdGhlIHN0YW5kYXJkIG1hbmFnZWQgb2JqZWN0cyByZWNvbW1lbmRlZCBieSBJRUVFIDgwMi4z Lg0KPiBUaGVzZSBhcmU6DQo+IA0KPiAtIEVUSFRPT0xfQV9NTV9QTUFDX0VOQUJMRUQ6IEFjY29y ZGluZyB0byBGaWd1cmUgOTktNjogUmVjZWl2ZQ0KPiAgIFByb2Nlc3Npbmcgc3RhdGUgZGlhZ3Jh bSwgYSBNQUMgTWVyZ2UgbGF5ZXIgaXMgYWx3YXlzIHN1cHBvc2VkIHRvIGJlDQo+ICAgYWJsZSB0 byByZWNlaXZlIFAgZnJhbWVzLiBIb3dldmVyLCB0aGlzIGltcGxpZXMga2VlcGluZyB0aGUgcE1B Qw0KPiAgIHBvd2VyZWQgb24sIHdoaWNoIHdpbGwgY29uc3VtZSBuZWVkbGVzcyBwb3dlciBpbiBh cHBsaWNhdGlvbnMgd2hlcmUgRlANCj4gICB3aWxsIG5ldmVyIGJlIHVzZWQuIElmIExMRFAgaXMg dXNlZCwgdGhlIHJlY2VwdGlvbiBvZiBhbiBBZGRpdGlvbmFsDQo+ICAgRXRoZXJuZXQgQ2FwYWJp bGl0aWVzIFRMViBmcm9tIHRoZSBsaW5rIHBhcnRuZXIgaXMgc3VmZmljaWVudA0KPiAgIGluZGlj YXRpb24gdGhhdCB0aGUgcE1BQyBzaG91bGQgYmUgZW5hYmxlZC4gU28gbXkgcHJvcG9zYWwgaXMg dGhhdCBpbg0KPiAgIExpbnV4LCB3ZSBrZWVwIHRoZSBwTUFDIHR1cm5lZCBvZmYgYnkgZGVmYXVs dCBhbmQgdGhhdCB1c2VyIHNwYWNlDQo+ICAgdHVybnMgaXQgb24gd2hlbiBuZWVkZWQuDQo+IA0K PiAtIEVUSFRPT0xfQV9NTV9WRVJJRllfRU5BQkxFRDogVGhlIElFRUUgbWFuYWdlZCBvYmplY3Qg aXMgY2FsbGVkDQo+ICAgYU1BQ01lcmdlVmVyaWZ5RGlzYWJsZVR4LiBJIG9wdGVkIGZvciBjb25z aXN0ZW5jeSAocG9zaXRpdmUgbG9naWMpIGluDQo+ICAgdGhlIGJvb2xlYW4gbmV0bGluayBhdHRy aWJ1dGVzIG9mZmVyZWQsIHNvIHRoaXMgaXMgYWxzbyBwb3NpdGl2ZSBoZXJlLg0KPiAgIE90aGVy IHRoYW4gdGhlIG1lYW5pbmcgYmVpbmcgcmV2ZXJzZWQsIHRoZXkgY29ycmVzcG9uZCB0byB0aGUg c2FtZQ0KPiAgIHRoaW5nLg0KPiANCj4gLSBFVEhUT09MX0FfTU1fTUFYX1ZFUklGWV9USU1FOiBJ IGZvdW5kIGl0IG1vc3QgcmVhc29uYWJsZSBmb3IgYSBMTERQDQo+ICAgZGFlbW9uIHRvIG1heGlt aXplIHRoZSB2ZXJpZnlUaW1lIHZhcmlhYmxlIChkZWxheSBiZXR3ZWVuIFNNRC1WDQo+ICAgdHJh bnNtaXNzaW9ucyksIHRvIG1heGltaXplIGl0cyBjaGFuY2VzIHRoYXQgdGhlIExQIHJlcGxpZXMu IElFRUUgc2F5cw0KPiAgIHRoYXQgdGhlIHZlcmlmeVRpbWUgY2FuIHJhbmdlIGJldHdlZW4gMSBh bmQgMTI4IG1zLCBidXQgdGhlIE5YUCBFTkVUQw0KPiAgIHN0dXBpZGx5IGtlZXBzIHRoaXMgdmFy aWFibGUgaW4gYSA3IGJpdCByZWdpc3Rlciwgc28gdGhlIG1heGltdW0NCj4gICBzdXBwb3J0ZWQg dmFsdWUgaXMgMTI3IG1zLiBJIGNvdWxkIGhhdmUgY2hvc2VuIHRvIGhhcmRjb2RlIHRoaXMgaW4g dGhlDQo+ICAgTExEUCBkYWVtb24gdG8gYSBsb3dlciB2YWx1ZSwgYnV0IHdoeSBub3QgbGV0IHRo ZSBrZXJuZWwgZXhwb3NlIGl0cw0KPiAgIHN1cHBvcnRlZCByYW5nZSBkaXJlY3RseS4NCj4gDQo+ IFNpZ25lZC1vZmYtYnk6IFZsYWRpbWlyIE9sdGVhbiA8dmxhZGltaXIub2x0ZWFuQG54cC5jb20+ DQo+IC0tLQ0KPiB2MS0+djI6DQo+IC0gYWRkZWQgZG9jdW1lbnRhdGlvbg0KPiAtIGludHJvZHVj ZWQgcG1hY19lbmFibGVkDQo+IC0gdHJhbnNmb3JtZWQgdmVyaWZ5X2Rpc2FibGUgaW50byB2ZXJp ZnlfZW5hYmxlZA0KPiAtIG1hZGUgYWRkX2ZyYWdfc2l6ZSB0YWtlIGEgdmFsdWUgaW4gb2N0ZXRz DQo+IC0gcmVtb3ZlZCBGUCBwYXJhbXMgKGFkbWluU3RhdHVzKQ0KPiAtIHJlbmFtZWQgImVuYWJs ZWQiIHRvICJ0eF9lbmFibGVkIiBhbmQgImFjdGl2ZSIgdG8gInR4X2FjdGl2ZSINCj4gDQo+ICBp bmNsdWRlL2xpbnV4L2V0aHRvb2wuaCAgICAgICAgICAgICAgfCAgOTkgKysrKysrKysrKw0KPiAg aW5jbHVkZS91YXBpL2xpbnV4L2V0aHRvb2wuaCAgICAgICAgIHwgIDI1ICsrKw0KPiAgaW5jbHVk ZS91YXBpL2xpbnV4L2V0aHRvb2xfbmV0bGluay5oIHwgIDQ3ICsrKysrDQo+ICBuZXQvZXRodG9v bC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDQgKy0NCj4gIG5ldC9ldGh0b29sL21tLmMg ICAgICAgICAgICAgICAgICAgICB8IDI1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4g IG5ldC9ldGh0b29sL25ldGxpbmsuYyAgICAgICAgICAgICAgICB8ICAxOSArKw0KPiAgbmV0L2V0 aHRvb2wvbmV0bGluay5oICAgICAgICAgICAgICAgIHwgICA0ICsNCj4gIDcgZmlsZXMgY2hhbmdl ZCwgNDU0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZSAxMDA2NDQN Cj4gbmV0L2V0aHRvb2wvbW0uYw0KPiANCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRo dG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmggaW5kZXgNCj4gOWUwYTc2ZmM3ZGU5Li42 MzM2ZjEwNWU2NjcgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oDQo+ICsr KyBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oDQo+IEBAIC00NjcsNiArNDY3LDk4IEBAIHN0cnVj dCBldGh0b29sX21vZHVsZV9wb3dlcl9tb2RlX3BhcmFtcyB7DQo+ICAJZW51bSBldGh0b29sX21v ZHVsZV9wb3dlcl9tb2RlIG1vZGU7DQo+ICB9Ow0KPiANCj4gKy8qKg0KPiArICogc3RydWN0IGV0 aHRvb2xfbW1fc3RhdGUgLSA4MDIuMyBNQUMgbWVyZ2UgbGF5ZXIgc3RhdGUNCj4gKyAqIEB2ZXJp ZnlfdGltZToNCj4gKyAqCXdhaXQgdGltZSBiZXR3ZWVuIHZlcmlmaWNhdGlvbiBhdHRlbXB0cyBp biBtcyAoYWNjb3JkaW5nIHRvIGNsYXVzZQ0KPiArICoJMzAuMTQuMS42IGFNQUNNZXJnZVZlcmlm eVRpbWUpDQo+ICsgKiBAbWF4X3ZlcmlmeV90aW1lOg0KPiArICoJbWF4aW11bSBhY2NlcHRlZCB2 YWx1ZSBmb3IgdGhlIEB2ZXJpZnlfdGltZSB2YXJpYWJsZSBpbiBzZXQNCj4gcmVxdWVzdHMNCj4g KyAqIEB2ZXJpZnlfc3RhdHVzOg0KPiArICoJc3RhdGUgb2YgdGhlIHZlcmlmaWNhdGlvbiBzdGF0 ZSBtYWNoaW5lIG9mIHRoZSBNTSBsYXllciAoYWNjb3JkaW5nIHRvDQo+ICsgKgljbGF1c2UgMzAu MTQuMS4yIGFNQUNNZXJnZVN0YXR1c1ZlcmlmeSkNCj4gKyAqIEBzdXBwb3J0ZWQ6DQo+ICsgKglz ZXQgaWYgZGV2aWNlIHN1cHBvcnRzIHRoZSBNTSBsYXllciAoYWNjb3JkaW5nIHRvIGNsYXVzZSAz MC4xNC4xLjENCj4gKyAqCWFNQUNNZXJnZVN1cHBvcnQpDQo+ICsgKiBAdHhfZW5hYmxlZDoNCj4g KyAqCXNldCBpZiB0aGUgTU0gbGF5ZXIgaXMgYWRtaW5pc3RyYXRpdmVseSBlbmFibGVkIGluIHRo ZSBUWCBkaXJlY3Rpb24NCj4gKyAqCShhY2NvcmRpbmcgdG8gY2xhdXNlIDMwLjE0LjEuMyBhTUFD TWVyZ2VFbmFibGVUeCkNCj4gKyAqIEB0eF9hY3RpdmU6DQo+ICsgKglzZXQgaWYgdGhlIE1NIGxh eWVyIGlzIGVuYWJsZWQgaW4gdGhlIFRYIGRpcmVjdGlvbiwgd2hpY2ggbWFrZXMgRlANCj4gKyAq CXBvc3NpYmxlIChhY2NvcmRpbmcgdG8gMzAuMTQuMS41IGFNQUNNZXJnZVN0YXR1c1R4KS4gVGhp cyBzaG91bGQNCj4gYmUNCj4gKyAqCXRydWUgaWYgTU0gaXMgZW5hYmxlZCwgYW5kIHRoZSB2ZXJp ZmljYXRpb24gc3RhdHVzIGlzIGVpdGhlciB2ZXJpZmllZCwNCj4gKyAqCW9yIGRpc2FibGVkLg0K PiArICogQHBtYWNfZW5hYmxlZDoNCj4gKyAqCXNldCBpZiB0aGUgcHJlZW1wdGlibGUgTUFDIGlz IHBvd2VyZWQgb24gYW5kIGlzIGFibGUgdG8gcmVjZWl2ZQ0KPiArICoJcHJlZW1wdGlibGUgcGFj a2V0cyBhbmQgcmVzcG9uZCB0byB2ZXJpZmljYXRpb24gZnJhbWVzLg0KPiArICogQHZlcmlmeV9l bmFibGVkOg0KPiArICoJc2V0IGlmIHRoZSBWZXJpZnkgZnVuY3Rpb24gb2YgdGhlIE1NIGxheWVy ICh3aGljaCBzZW5kcyBTTUQtVg0KPiArICoJdmVyaWZpY2F0aW9uIHJlcXVlc3RzKSBpcyBhZG1p bmlzdHJhdGl2ZWx5IGVuYWJsZWQgKHJlZ2FyZGxlc3Mgb2YNCj4gKyAqCXdoZXRoZXIgaXQgaXMg Y3VycmVudGx5IGluIHRoZQ0KPiBFVEhUT09MX01NX1ZFUklGWV9TVEFUVVNfRElTQUJMRUQgc3Rh dGUNCj4gKyAqCW9yIG5vdCksIGFjY29yZGluZyB0byBjbGF1c2UgMzAuMTQuMS40IGFNQUNNZXJn ZVZlcmlmeURpc2FibGVUeA0KPiAoYnV0DQo+ICsgKgl1c2luZyBwb3NpdGl2ZSByYXRoZXIgdGhh biBuZWdhdGl2ZSBsb2dpYykuIFRoZSBkZXZpY2Ugc2hvdWxkIGFsd2F5cw0KPiArICoJcmVzcG9u ZCB0byByZWNlaXZlZCBTTUQtViByZXF1ZXN0cyBhcyBsb25nIGFzIEBwbWFjX2VuYWJsZWQgaXMN Cj4gc2V0Lg0KPiArICogQGFkZF9mcmFnX3NpemU6DQo+ICsgKgl0aGUgbWluaW11bSBzaXplIG9m IG5vbi1maW5hbCBtUGFja2V0IGZyYWdtZW50cyB0aGF0IHRoZSBsaW5rDQo+IHBhcnRuZXINCj4g KyAqCXN1cHBvcnRzIHJlY2VpdmluZywgZXhwcmVzc2VkIGluIG9jdGV0cy4gQ29tcGFyZWQgdG8g dGhlIGRlZmluaXRpb24NCj4gKyAqCWZyb20gY2xhdXNlIDMwLjE0LjEuNyBhTUFDTWVyZ2VBZGRG cmFnU2l6ZSB3aGljaCBpcyBleHByZXNzZWQgaW4NCj4gdGhlDQo+ICsgKglyYW5nZSAwIHRvIDMg KHJlcXVpcmluZyBhIHRyYW5zbGF0aW9uIHRvIHRoZSBzaXplIGluIG9jdGV0cyBhY2NvcmRpbmcN Cj4gKyAqCXRvIHRoZSBmb3JtdWxhIDY0ICogKDEgKyBhZGRGcmFnU2l6ZSkg4oCTIDQpLCBhIHZh bHVlIGluIGEgY29udGludW91cw0KPiBhbmQNCj4gKyAqCXVuYm91bmRlZCByYW5nZSBjYW4gYmUg c3BlY2lmaWVkIGhlcmUuDQo+ICsgKi8NCj4gK3N0cnVjdCBldGh0b29sX21tX3N0YXRlIHsNCj4g Kwl1MzIgdmVyaWZ5X3RpbWU7DQo+ICsJdTMyIG1heF92ZXJpZnlfdGltZTsNCj4gKwllbnVtIGV0 aHRvb2xfbW1fdmVyaWZ5X3N0YXR1cyB2ZXJpZnlfc3RhdHVzOw0KPiArCWJvb2wgc3VwcG9ydGVk Ow0KPiArCWJvb2wgdHhfZW5hYmxlZDsNCj4gKwlib29sIHR4X2FjdGl2ZTsNCj4gKwlib29sIHBt YWNfZW5hYmxlZDsNCj4gKwlib29sIHZlcmlmeV9lbmFibGVkOw0KPiArCXUzMiBhZGRfZnJhZ19z aXplOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgZXRodG9vbF9tbV9jZmcgLSA4 MDIuMyBNQUMgbWVyZ2UgbGF5ZXIgY29uZmlndXJhdGlvbg0KPiArICogQHZlcmlmeV90aW1lOiBz ZWUgc3RydWN0IGV0aHRvb2xfbW1fc3RhdGUNCj4gKyAqIEB2ZXJpZnlfZW5hYmxlZDogc2VlIHN0 cnVjdCBldGh0b29sX21tX3N0YXRlDQo+ICsgKiBAdHhfZW5hYmxlZDogc2VlIHN0cnVjdCBldGh0 b29sX21tX3N0YXRlDQo+ICsgKiBAcG1hY19lbmFibGVkOiBzZWUgc3RydWN0IGV0aHRvb2xfbW1f c3RhdGUNCj4gKyAqIEBhZGRfZnJhZ19zaXplOiBzZWUgc3RydWN0IGV0aHRvb2xfbW1fc3RhdGUg ICovIHN0cnVjdA0KPiArZXRodG9vbF9tbV9jZmcgew0KPiArCXUzMiB2ZXJpZnlfdGltZTsNCj4g Kwlib29sIHZlcmlmeV9lbmFibGVkOw0KPiArCWJvb2wgdHhfZW5hYmxlZDsNCj4gKwlib29sIHBt YWNfZW5hYmxlZDsNCj4gKwl1MzIgYWRkX2ZyYWdfc2l6ZTsNCj4gK307DQo+ICsNCj4gKy8qKg0K PiArICogc3RydWN0IGV0aHRvb2xfbW1fc3RhdHMgLSA4MDIuMyBNQUMgbWVyZ2UgbGF5ZXIgc3Rh dGlzdGljcw0KPiArICogQE1BQ01lcmdlRnJhbWVBc3NFcnJvckNvdW50Og0KPiArICoJcmVjZWl2 ZWQgTUFDIGZyYW1lcyB3aXRoIHJlYXNzZW1ibHkgZXJyb3JzDQo+ICsgKiBATUFDTWVyZ2VGcmFt ZVNtZEVycm9yQ291bnQ6DQo+ICsgKglyZWNlaXZlZCBNQUMgZnJhbWVzL2ZyYWdtZW50cyByZWpl Y3RlZCBkdWUgdG8gdW5rbm93biBvcg0KPiBpbmNvcnJlY3QgU01EDQo+ICsgKiBATUFDTWVyZ2VG cmFtZUFzc09rQ291bnQ6DQo+ICsgKglyZWNlaXZlZCBNQUMgZnJhbWVzIHRoYXQgd2VyZSBzdWNj ZXNzZnVsbHkgcmVhc3NlbWJsZWQgYW5kIHBhc3NlZA0KPiB1cA0KPiArICogQE1BQ01lcmdlRnJh Z0NvdW50Ung6DQo+ICsgKgludW1iZXIgb2YgYWRkaXRpb25hbCBjb3JyZWN0IFNNRC1DIG1QYWNr ZXRzIHJlY2VpdmVkIGR1ZSB0bw0KPiBwcmVlbXB0aW9uDQo+ICsgKiBATUFDTWVyZ2VGcmFnQ291 bnRUeDoNCj4gKyAqCW51bWJlciBvZiBhZGRpdGlvbmFsIG1QYWNrZXRzIHNlbnQgZHVlIHRvIHBy ZWVtcHRpb24NCj4gKyAqIEBNQUNNZXJnZUhvbGRDb3VudDoNCj4gKyAqCW51bWJlciBvZiB0aW1l cyB0aGUgTU0gbGF5ZXIgZW50ZXJlZCB0aGUgSE9MRCBzdGF0ZSwgd2hpY2ggYmxvY2tzDQo+ICsg Kgl0cmFuc21pc3Npb24gb2YgcHJlZW1wdGlibGUgdHJhZmZpYw0KPiArICovDQo+ICtzdHJ1Y3Qg ZXRodG9vbF9tbV9zdGF0cyB7DQo+ICsJdTY0IE1BQ01lcmdlRnJhbWVBc3NFcnJvckNvdW50Ow0K PiArCXU2NCBNQUNNZXJnZUZyYW1lU21kRXJyb3JDb3VudDsNCj4gKwl1NjQgTUFDTWVyZ2VGcmFt ZUFzc09rQ291bnQ7DQo+ICsJdTY0IE1BQ01lcmdlRnJhZ0NvdW50Ung7DQo+ICsJdTY0IE1BQ01l cmdlRnJhZ0NvdW50VHg7DQo+ICsJdTY0IE1BQ01lcmdlSG9sZENvdW50Ow0KPiArfTsNCj4gKw0K PiAgLyoqDQo+ICAgKiBzdHJ1Y3QgZXRodG9vbF9vcHMgLSBvcHRpb25hbCBuZXRkZXYgb3BlcmF0 aW9ucw0KPiAgICogQGNhcF9saW5rX2xhbmVzX3N1cHBvcnRlZDogaW5kaWNhdGVzIGlmIHRoZSBk cml2ZXIgc3VwcG9ydHMgbGFuZXMgQEAgLQ0KPiA2MzksNiArNzMxLDkgQEAgc3RydWN0IGV0aHRv b2xfbW9kdWxlX3Bvd2VyX21vZGVfcGFyYW1zIHsNCj4gICAqCXBsdWdnZWQtaW4uDQo+ICAgKiBA c2V0X21vZHVsZV9wb3dlcl9tb2RlOiBTZXQgdGhlIHBvd2VyIG1vZGUgcG9saWN5IGZvciB0aGUg cGx1Zy1pbg0KPiBtb2R1bGUNCj4gICAqCXVzZWQgYnkgdGhlIG5ldHdvcmsgZGV2aWNlLg0KPiAr ICogQGdldF9tbTogUXVlcnkgdGhlIDgwMi4zIE1BQyBNZXJnZSBsYXllciBzdGF0ZS4NCj4gKyAq IEBzZXRfbW06IFNldCB0aGUgODAyLjMgTUFDIE1lcmdlIGxheWVyIHBhcmFtZXRlcnMuDQo+ICsg KiBAZ2V0X21tX3N0YXRzOiBRdWVyeSB0aGUgODAyLjMgTUFDIE1lcmdlIGxheWVyIHN0YXRpc3Rp Y3MuDQo+ICAgKg0KPiAgICogQWxsIG9wZXJhdGlvbnMgYXJlIG9wdGlvbmFsIChpLmUuIHRoZSBm dW5jdGlvbiBwb2ludGVyIG1heSBiZSBzZXQNCj4gICAqIHRvICVOVUxMKSBhbmQgY2FsbGVycyBt dXN0IHRha2UgdGhpcyBpbnRvIGFjY291bnQuICBDYWxsZXJzIG11c3QgQEAgLQ0KPiA3NzcsNiAr ODcyLDEwIEBAIHN0cnVjdCBldGh0b29sX29wcyB7DQo+ICAJaW50CSgqc2V0X21vZHVsZV9wb3dl cl9tb2RlKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LA0KPiAgCQkJCQkgY29uc3Qgc3RydWN0DQo+ IGV0aHRvb2xfbW9kdWxlX3Bvd2VyX21vZGVfcGFyYW1zICpwYXJhbXMsDQo+ICAJCQkJCSBzdHJ1 Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOw0KPiArCXZvaWQJKCpnZXRfbW0pKHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX21tX3N0YXRlDQo+ICpzdGF0ZSk7DQo+ICsJ aW50CSgqc2V0X21tKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9tbV9j ZmcNCj4gKmNmZywNCj4gKwkJCSAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTsNCj4g Kwl2b2lkCSgqZ2V0X21tX3N0YXRzKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QNCj4g ZXRodG9vbF9tbV9zdGF0cyAqc3RhdHMpOw0KPiAgfTsNCj4gDQoNCkRvZXMgaXQgbWFrZSBzZW5z ZSB0byBoYXZlIHR3byBzZXBhcmF0ZSBmdW5jdGlvbnMsIG9uZSB0byBlbmFibGUvZGlzYWJsZSBw bWFjIGFuZCB0eCBwcmVlbXB0aW9uIHN0YXR1cyBhbmQgY29uZmlndXJlIGFkZGl0aW9uYWwgZnJh Z21lbnQgc2l6ZSAoYm90aCBwYXJhbWV0ZXJzIGNhbiBiZSBjb25maWd1cmVkIGFmdGVyIG5lZ290 aWF0aW5nIHdpdGggdGhlIGxpbmsgcGFydG5lciksIGFuZCBhbm90aGVyIHRvIG1vZGlmeSB0aGUg dmVyaWZpY2F0aW9uIHJlbGF0ZWQgcGFyYW1ldGVycywgaS5lLCBlbmFibGUvZGlzYWJsZSB2ZXJp ZmljYXRpb24gYW5kIHZlcmlmeSB0aW1lIHZhbHVlPw0KRm9yIGV4YW1wbGUsIGlmIHRoZSB1c2Vy IHdhbnRzIHRvIGNoYW5nZSB0aGUgdmVyaWZ5IHRpbWUgdmFsdWUsIElzIHRoZXJlIGEgd2F5IHRv IGNoYW5nZSBpdCB3aXRob3V0IGRpc3R1cmJpbmcgdGhlIHZhbHVlIG9mIHRoZSBhZGRpdGlvbmFs IGZyYWdtZW50IHNpemUgdGhhdCBoYXMgYmVlbiBzZXQgdGhyb3VnaCBMTERQIGFmdGVyIG5lZ290 aWF0aW5nIHdpdGggdGhlIGxpbmsgcGFydG5lcj8NCg0KPiAgaW50IGV0aHRvb2xfY2hlY2tfb3Bz KGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqb3BzKTsgZGlmZiAtLWdpdA0KPiBhL2luY2x1ZGUv dWFwaS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL3VhcGkvbGludXgvZXRodG9vbC5oIGluZGV4 DQo+IDMxMzVmYTBiYTlhNC4uN2RkYzQ3YTNmYjMyIDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL3Vh cGkvbGludXgvZXRodG9vbC5oDQo+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9ldGh0b29sLmgN Cj4gQEAgLTc3OSw2ICs3NzksMzEgQEAgZW51bSBldGh0b29sX3BvZGxfcHNlX3B3X2Rfc3RhdHVz IHsNCj4gIAlFVEhUT09MX1BPRExfUFNFX1BXX0RfU1RBVFVTX0VSUk9SLA0KPiAgfTsNCj4gDQo+ ICsvKioNCj4gKyAqIGVudW0gZXRodG9vbF9tbV92ZXJpZnlfc3RhdHVzIC0gc3RhdHVzIG9mIE1B QyBNZXJnZSBWZXJpZnkgZnVuY3Rpb24NCj4gKyAqIEBFVEhUT09MX01NX1ZFUklGWV9TVEFUVVNf VU5LTk9XTjoNCj4gKyAqCXZlcmlmaWNhdGlvbiBzdGF0dXMgaXMgdW5rbm93bu+AoA0KPiArICog QEVUSFRPT0xfTU1fVkVSSUZZX1NUQVRVU19JTklUSUFMOg0KPiArICoJdGhlIDgwMi4zIFZlcmlm eSBTdGF0ZSBkaWFncmFtIGlzIGluIHRoZSBzdGF0ZSBJTklUX1ZFUklGSUNBVElPTg0KPiArICog QEVUSFRPT0xfTU1fVkVSSUZZX1NUQVRVU19WRVJJRllJTkc6DQo+ICsgKgl0aGUgVmVyaWZ5IFN0 YXRlIGRpYWdyYW0gaXMgaW4gdGhlIHN0YXRlIFZFUklGSUNBVElPTl9JRExFLO+AoA0KPiArICoJ U0VORF9WRVJJRlkgb3IgV0FJVF9GT1JfUkVTUE9OU0UNCj4gKyAqIEBFVEhUT09MX01NX1ZFUklG WV9TVEFUVVNfU1VDQ0VFREVEOg0KPiArICoJaW5kaWNhdGVzIHRoYXQgdGhlIFZlcmlmeSBTdGF0 ZSBkaWFncmFtIGlzIGluIHRoZSBzdGF0ZSBWRVJJRklFRA0KPiArICogQEVUSFRPT0xfTU1fVkVS SUZZX1NUQVRVU19GQUlMRUQ6DQo+ICsgKgl0aGUgVmVyaWZ5IFN0YXRlIGRpYWdyYW0gaXMgaW4g dGhlIHN0YXRlIFZFUklGWV9GQUlMDQo+ICsgKiBARVRIVE9PTF9NTV9WRVJJRllfU1RBVFVTX0RJ U0FCTEVEOg0KPiArICoJdmVyaWZpY2F0aW9uIG9mIHByZWVtcHRpb24gb3BlcmF0aW9uIGlzIGRp c2FibGVkDQo+ICsgKi8NCj4gK2VudW0gZXRodG9vbF9tbV92ZXJpZnlfc3RhdHVzIHsNCj4gKwlF VEhUT09MX01NX1ZFUklGWV9TVEFUVVNfVU5LTk9XTiwNCj4gKwlFVEhUT09MX01NX1ZFUklGWV9T VEFUVVNfSU5JVElBTCwNCj4gKwlFVEhUT09MX01NX1ZFUklGWV9TVEFUVVNfVkVSSUZZSU5HLA0K PiArCUVUSFRPT0xfTU1fVkVSSUZZX1NUQVRVU19TVUNDRUVERUQsDQo+ICsJRVRIVE9PTF9NTV9W RVJJRllfU1RBVFVTX0ZBSUxFRCwNCj4gKwlFVEhUT09MX01NX1ZFUklGWV9TVEFUVVNfRElTQUJM RUQsDQo+ICt9Ow0KPiArDQo+ICAvKioNCj4gICAqIHN0cnVjdCBldGh0b29sX2dzdHJpbmdzIC0g c3RyaW5nIHNldCBmb3IgZGF0YSB0YWdnaW5nDQo+ICAgKiBAY21kOiBDb21tYW5kIG51bWJlciA9 ICVFVEhUT09MX0dTVFJJTkdTIGRpZmYgLS1naXQNCj4gYS9pbmNsdWRlL3VhcGkvbGludXgvZXRo dG9vbF9uZXRsaW5rLmgNCj4gYi9pbmNsdWRlL3VhcGkvbGludXgvZXRodG9vbF9uZXRsaW5rLmgN Cj4gaW5kZXggNTc5OWE5ZGIwMzRlLi5lODRhODA5NTcxMzggMTAwNjQ0DQo+IC0tLSBhL2luY2x1 ZGUvdWFwaS9saW51eC9ldGh0b29sX25ldGxpbmsuaA0KPiArKysgYi9pbmNsdWRlL3VhcGkvbGlu dXgvZXRodG9vbF9uZXRsaW5rLmgNCj4gQEAgLTUyLDYgKzUyLDggQEAgZW51bSB7DQo+ICAJRVRI VE9PTF9NU0dfUFNFX0dFVCwNCj4gIAlFVEhUT09MX01TR19QU0VfU0VULA0KPiAgCUVUSFRPT0xf TVNHX1JTU19HRVQsDQo+ICsJRVRIVE9PTF9NU0dfTU1fR0VULA0KPiArCUVUSFRPT0xfTVNHX01N X1NFVCwNCj4gDQo+ICAJLyogYWRkIG5ldyBjb25zdGFudHMgYWJvdmUgaGVyZSAqLw0KPiAgCV9f RVRIVE9PTF9NU0dfVVNFUl9DTlQsDQo+IEBAIC05OSw2ICsxMDEsOCBAQCBlbnVtIHsNCj4gIAlF VEhUT09MX01TR19NT0RVTEVfTlRGLA0KPiAgCUVUSFRPT0xfTVNHX1BTRV9HRVRfUkVQTFksDQo+ ICAJRVRIVE9PTF9NU0dfUlNTX0dFVF9SRVBMWSwNCj4gKwlFVEhUT09MX01TR19NTV9HRVRfUkVQ TFksDQo+ICsJRVRIVE9PTF9NU0dfTU1fTlRGLA0KPiANCj4gIAkvKiBhZGQgbmV3IGNvbnN0YW50 cyBhYm92ZSBoZXJlICovDQo+ICAJX19FVEhUT09MX01TR19LRVJORUxfQ05ULA0KPiBAQCAtODk0 LDYgKzg5OCw0OSBAQCBlbnVtIHsNCj4gIAlFVEhUT09MX0FfUlNTX01BWCA9IChfX0VUSFRPT0xf QV9SU1NfQ05UIC0gMSksICB9Ow0KPiANCj4gKy8qIE1BQyBNZXJnZSAoODAyLjMpICovDQo+ICsN Cj4gK2VudW0gew0KPiArCUVUSFRPT0xfQV9NTV9TVEFUX1VOU1BFQywNCj4gKwlFVEhUT09MX0Ff TU1fU1RBVF9QQUQsDQo+ICsNCj4gKwkvKiBhTUFDTWVyZ2VGcmFtZUFzc0Vycm9yQ291bnQgKi8N Cj4gKwlFVEhUT09MX0FfTU1fU1RBVF9SRUFTU0VNQkxZX0VSUk9SUywJLyogdTY0ICovDQo+ICsJ LyogYU1BQ01lcmdlRnJhbWVTbWRFcnJvckNvdW50ICovDQo+ICsJRVRIVE9PTF9BX01NX1NUQVRf U01EX0VSUk9SUywJCS8qIHU2NCAqLw0KPiArCS8qIGFNQUNNZXJnZUZyYW1lQXNzT2tDb3VudCAq Lw0KPiArCUVUSFRPT0xfQV9NTV9TVEFUX1JFQVNTRU1CTFlfT0ssCS8qIHU2NCAqLw0KPiArCS8q IGFNQUNNZXJnZUZyYWdDb3VudFJ4ICovDQo+ICsJRVRIVE9PTF9BX01NX1NUQVRfUlhfRlJBR19D T1VOVCwJLyogdTY0ICovDQo+ICsJLyogYU1BQ01lcmdlRnJhZ0NvdW50VHggKi8NCj4gKwlFVEhU T09MX0FfTU1fU1RBVF9UWF9GUkFHX0NPVU5ULAkvKiB1NjQgKi8NCj4gKwkvKiBhTUFDTWVyZ2VI b2xkQ291bnQgKi8NCj4gKwlFVEhUT09MX0FfTU1fU1RBVF9IT0xEX0NPVU5ULAkJLyogdTY0ICov DQo+ICsNCj4gKwkvKiBhZGQgbmV3IGNvbnN0YW50cyBhYm92ZSBoZXJlICovDQo+ICsJX19FVEhU T09MX0FfTU1fU1RBVF9DTlQsDQo+ICsJRVRIVE9PTF9BX01NX1NUQVRfTUFYID0gKF9fRVRIVE9P TF9BX01NX1NUQVRfQ05UIC0gMSkNCj4gfTsNCj4gKw0KPiArZW51bSB7DQo+ICsJRVRIVE9PTF9B X01NX1VOU1BFQywNCj4gKwlFVEhUT09MX0FfTU1fSEVBREVSLAkJCS8qIG5lc3QgLQ0KPiBfQV9I RUFERVJfKiAqLw0KPiArCUVUSFRPT0xfQV9NTV9TVVBQT1JURUQsCQkJLyogdTggKi8NCj4gKwlF VEhUT09MX0FfTU1fUE1BQ19FTkFCTEVELAkJLyogdTggKi8NCj4gKwlFVEhUT09MX0FfTU1fVFhf RU5BQkxFRCwJCS8qIHU4ICovDQo+ICsJRVRIVE9PTF9BX01NX1RYX0FDVElWRSwJCQkvKiB1OCAq Lw0KPiArCUVUSFRPT0xfQV9NTV9BRERfRlJBR19TSVpFLAkJLyogdTMyICovDQo+ICsJRVRIVE9P TF9BX01NX1ZFUklGWV9FTkFCTEVELAkJLyogdTggKi8NCj4gKwlFVEhUT09MX0FfTU1fVkVSSUZZ X1NUQVRVUywJCS8qIHU4ICovDQo+ICsJRVRIVE9PTF9BX01NX1ZFUklGWV9USU1FLAkJLyogdTMy ICovDQo+ICsJRVRIVE9PTF9BX01NX01BWF9WRVJJRllfVElNRSwJCS8qIHUzMiAqLw0KPiArCUVU SFRPT0xfQV9NTV9TVEFUUywJCQkvKiBuZXN0IC0NCj4gX0FfTU1fU1RBVF8qICovDQo+ICsNCj4g KwkvKiBhZGQgbmV3IGNvbnN0YW50cyBhYm92ZSBoZXJlICovDQo+ICsJX19FVEhUT09MX0FfTU1f Q05ULA0KPiArCUVUSFRPT0xfQV9NTV9NQVggPSAoX19FVEhUT09MX0FfTU1fQ05UIC0gMSkgfTsN Cj4gKw0KPiAgLyogZ2VuZXJpYyBuZXRsaW5rIGluZm8gKi8NCj4gICNkZWZpbmUgRVRIVE9PTF9H RU5MX05BTUUgImV0aHRvb2wiDQo+ICAjZGVmaW5lIEVUSFRPT0xfR0VOTF9WRVJTSU9OIDENCj4g ZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL01ha2VmaWxlIGIvbmV0L2V0aHRvb2wvTWFrZWZpbGUg aW5kZXgNCj4gMjI4ZjEzZGYyZTE4Li5hYjgyNGIyZDNiN2QgMTAwNjQ0DQo+IC0tLSBhL25ldC9l dGh0b29sL01ha2VmaWxlDQo+ICsrKyBiL25ldC9ldGh0b29sL01ha2VmaWxlDQo+IEBAIC03LDUg KzcsNSBAQCBvYmotJChDT05GSUdfRVRIVE9PTF9ORVRMSU5LKQkrPSBldGh0b29sX25sLm8NCj4g IGV0aHRvb2xfbmwteQk6PSBuZXRsaW5rLm8gYml0c2V0Lm8gc3Ryc2V0Lm8gbGlua2luZm8ubyBs aW5rbW9kZXMubyByc3MubyBcDQo+ICAJCSAgIGxpbmtzdGF0ZS5vIGRlYnVnLm8gd29sLm8gZmVh dHVyZXMubyBwcml2ZmxhZ3MubyByaW5ncy5vIFwNCj4gIAkJICAgY2hhbm5lbHMubyBjb2FsZXNj ZS5vIHBhdXNlLm8gZWVlLm8gdHNpbmZvLm8gY2FibGV0ZXN0Lm8gXA0KPiAtCQkgICB0dW5uZWxz Lm8gZmVjLm8gZWVwcm9tLm8gc3RhdHMubyBwaGNfdmNsb2Nrcy5vIG1vZHVsZS5vIFwNCj4gLQkJ ICAgcHNlLXBkLm8NCj4gKwkJICAgdHVubmVscy5vIGZlYy5vIGVlcHJvbS5vIHN0YXRzLm8gcGhj X3ZjbG9ja3MubyBtbS5vIFwNCj4gKwkJICAgbW9kdWxlLm8gcHNlLXBkLm8NCj4gZGlmZiAtLWdp dCBhL25ldC9ldGh0b29sL21tLmMgYi9uZXQvZXRodG9vbC9tbS5jIG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDFhMmFjYzQwMDQ2DQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvbmV0L2V0aHRvb2wvbW0uYw0KPiBAQCAtMCwwICsxLDI1OCBAQA0KPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPiArLyoNCj4gKyAqIENvcHlyaWdo dCAyMDIyLTIwMjMgTlhQDQo+ICsgKi8NCj4gKyNpbmNsdWRlICJjb21tb24uaCINCj4gKyNpbmNs dWRlICJuZXRsaW5rLmgiDQo+ICsNCj4gK3N0cnVjdCBtbV9yZXFfaW5mbyB7DQo+ICsJc3RydWN0 IGV0aG5sX3JlcV9pbmZvCQliYXNlOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IG1tX3JlcGx5X2Rh dGEgew0KPiArCXN0cnVjdCBldGhubF9yZXBseV9kYXRhCQliYXNlOw0KPiArCXN0cnVjdCBldGh0 b29sX21tX3N0YXRlCQlzdGF0ZTsNCj4gKwlzdHJ1Y3QgZXRodG9vbF9tbV9zdGF0cwkJc3RhdHM7 DQo+ICt9Ow0KPiArDQo+ICsjZGVmaW5lIE1NX1JFUERBVEEoX19yZXBseV9iYXNlKSBcDQo+ICsJ Y29udGFpbmVyX29mKF9fcmVwbHlfYmFzZSwgc3RydWN0IG1tX3JlcGx5X2RhdGEsIGJhc2UpDQo+ ICsNCj4gKyNkZWZpbmUgRVRIVE9PTF9NTV9TVEFUX0NOVCBcDQo+ICsJKF9fRVRIVE9PTF9BX01N X1NUQVRfQ05UIC0gKEVUSFRPT0xfQV9NTV9TVEFUX1BBRCArIDEpKQ0KPiArDQo+ICtjb25zdCBz dHJ1Y3QgbmxhX3BvbGljeSBldGhubF9tbV9nZXRfcG9saWN5W0VUSFRPT0xfQV9NTV9IRUFERVIg Kw0KPiAxXSA9IHsNCj4gKwlbRVRIVE9PTF9BX01NX0hFQURFUl0gPQ0KPiBOTEFfUE9MSUNZX05F U1RFRChldGhubF9oZWFkZXJfcG9saWN5X3N0YXRzKSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBp bnQgbW1fcHJlcGFyZV9kYXRhKGNvbnN0IHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2Us DQo+ICsJCQkgICBzdHJ1Y3QgZXRobmxfcmVwbHlfZGF0YSAqcmVwbHlfYmFzZSwNCj4gKwkJCSAg IHN0cnVjdCBnZW5sX2luZm8gKmluZm8pDQo+ICt7DQo+ICsJc3RydWN0IG1tX3JlcGx5X2RhdGEg KmRhdGEgPSBNTV9SRVBEQVRBKHJlcGx5X2Jhc2UpOw0KPiArCXN0cnVjdCBuZXRfZGV2aWNlICpk ZXYgPSByZXBseV9iYXNlLT5kZXY7DQo+ICsJY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHM7 DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCW9wcyA9IGRldi0+ZXRodG9vbF9vcHM7DQo+ICsNCj4g KwlpZiAoIW9wcy0+Z2V0X21tKQ0KPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQo+ICsNCj4gKwll dGh0b29sX3N0YXRzX2luaXQoKHU2NCAqKSZkYXRhLT5zdGF0cywNCj4gKwkJCSAgIHNpemVvZihk YXRhLT5zdGF0cykgLyBzaXplb2YodTY0KSk7DQo+ICsNCj4gKwlyZXQgPSBldGhubF9vcHNfYmVn aW4oZGV2KTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCW9w cy0+Z2V0X21tKGRldiwgJmRhdGEtPnN0YXRlKTsNCj4gKw0KPiArCWlmIChvcHMtPmdldF9tbV9z dGF0cyAmJiAocmVxX2Jhc2UtPmZsYWdzICYNCj4gRVRIVE9PTF9GTEFHX1NUQVRTKSkNCj4gKwkJ b3BzLT5nZXRfbW1fc3RhdHMoZGV2LCAmZGF0YS0+c3RhdHMpOw0KPiArDQo+ICsJZXRobmxfb3Bz X2NvbXBsZXRlKGRldik7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGludCBtbV9yZXBseV9zaXplKGNvbnN0IHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2Us DQo+ICsJCQkgY29uc3Qgc3RydWN0IGV0aG5sX3JlcGx5X2RhdGEgKnJlcGx5X2Jhc2UpIHsNCj4g KwlzdHJ1Y3QgbW1fcmVwbHlfZGF0YSAqZGF0YSA9IE1NX1JFUERBVEEocmVwbHlfYmFzZSk7DQo+ ICsJY29uc3Qgc3RydWN0IGV0aHRvb2xfbW1fc3RhdGUgKnN0YXRlID0gJmRhdGEtPnN0YXRlOw0K PiArCWludCBsZW4gPSBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKTsgLyogX01NX1NVUFBPUlRF RCAqLw0KPiArDQo+ICsJaWYgKCFzdGF0ZS0+c3VwcG9ydGVkKQ0KPiArCQlyZXR1cm4gbGVuOw0K PiArDQo+ICsJbGVuICs9IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpOyAvKiBfTU1fUE1BQ19F TkFCTEVEICovDQo+ICsJbGVuICs9IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpOyAvKiBfTU1f VFhfRU5BQkxFRCAqLw0KPiArCWxlbiArPSBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKTsgLyog X01NX1RYX0FDVElWRSAqLw0KPiArCWxlbiArPSBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKTsg LyogX01NX1ZFUklGWV9FTkFCTEVEICovDQo+ICsJbGVuICs9IG5sYV90b3RhbF9zaXplKHNpemVv Zih1OCkpOyAvKiBfTU1fVkVSSUZZX1NUQVRVUyAqLw0KPiArCWxlbiArPSBubGFfdG90YWxfc2l6 ZShzaXplb2YodTMyKSk7IC8qIF9NTV9WRVJJRllfVElNRSAqLw0KPiArCWxlbiArPSBubGFfdG90 YWxfc2l6ZShzaXplb2YodTMyKSk7IC8qIF9NTV9NQVhfVkVSSUZZX1RJTUUgKi8NCj4gKwlsZW4g Kz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpOyAvKiBfTU1fQUREX0ZSQUdfU0laRSAqLw0K PiArDQo+ICsJaWYgKHJlcV9iYXNlLT5mbGFncyAmIEVUSFRPT0xfRkxBR19TVEFUUykNCj4gKwkJ bGVuICs9IG5sYV90b3RhbF9zaXplKDApICsgLyogX01NX1NUQVRTICovDQo+ICsJCSAgICAgICBu bGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2YodTY0KSkgKg0KPiBFVEhUT09MX01NX1NUQVRfQ05U Ow0KPiArDQo+ICsJcmV0dXJuIGxlbjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtbV9wdXRf c3RhdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1NjQgdmFsLCB1MTYgYXR0cnR5cGUpIHsNCj4gKwlp ZiAodmFsID09IEVUSFRPT0xfU1RBVF9OT1RfU0VUKQ0KPiArCQlyZXR1cm4gMDsNCj4gKwlpZiAo bmxhX3B1dF91NjRfNjRiaXQoc2tiLCBhdHRydHlwZSwgdmFsLA0KPiBFVEhUT09MX0FfTU1fU1RB VF9QQUQpKQ0KPiArCQlyZXR1cm4gLUVNU0dTSVpFOw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50IG1tX3B1dF9zdGF0cyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLA0KPiArCQkJ Y29uc3Qgc3RydWN0IGV0aHRvb2xfbW1fc3RhdHMgKnN0YXRzKSB7DQo+ICsJc3RydWN0IG5sYXR0 ciAqbmVzdDsNCj4gKw0KPiArCW5lc3QgPSBubGFfbmVzdF9zdGFydChza2IsIEVUSFRPT0xfQV9N TV9TVEFUUyk7DQo+ICsJaWYgKCFuZXN0KQ0KPiArCQlyZXR1cm4gLUVNU0dTSVpFOw0KPiArDQo+ ICsJaWYgKG1tX3B1dF9zdGF0KHNrYiwgc3RhdHMtPk1BQ01lcmdlRnJhbWVBc3NFcnJvckNvdW50 LA0KPiArCQkJRVRIVE9PTF9BX01NX1NUQVRfUkVBU1NFTUJMWV9FUlJPUlMpIHx8DQo+ICsJICAg IG1tX3B1dF9zdGF0KHNrYiwgc3RhdHMtPk1BQ01lcmdlRnJhbWVTbWRFcnJvckNvdW50LA0KPiAr CQkJRVRIVE9PTF9BX01NX1NUQVRfU01EX0VSUk9SUykgfHwNCj4gKwkgICAgbW1fcHV0X3N0YXQo c2tiLCBzdGF0cy0+TUFDTWVyZ2VGcmFtZUFzc09rQ291bnQsDQo+ICsJCQlFVEhUT09MX0FfTU1f U1RBVF9SRUFTU0VNQkxZX09LKSB8fA0KPiArCSAgICBtbV9wdXRfc3RhdChza2IsIHN0YXRzLT5N QUNNZXJnZUZyYWdDb3VudFJ4LA0KPiArCQkJRVRIVE9PTF9BX01NX1NUQVRfUlhfRlJBR19DT1VO VCkgfHwNCj4gKwkgICAgbW1fcHV0X3N0YXQoc2tiLCBzdGF0cy0+TUFDTWVyZ2VGcmFnQ291bnRU eCwNCj4gKwkJCUVUSFRPT0xfQV9NTV9TVEFUX1RYX0ZSQUdfQ09VTlQpIHx8DQo+ICsJICAgIG1t X3B1dF9zdGF0KHNrYiwgc3RhdHMtPk1BQ01lcmdlSG9sZENvdW50LA0KPiArCQkJRVRIVE9PTF9B X01NX1NUQVRfSE9MRF9DT1VOVCkpDQo+ICsJCWdvdG8gZXJyX2NhbmNlbDsNCj4gKw0KPiArCW5s YV9uZXN0X2VuZChza2IsIG5lc3QpOw0KPiArCXJldHVybiAwOw0KPiArDQo+ICtlcnJfY2FuY2Vs Og0KPiArCW5sYV9uZXN0X2NhbmNlbChza2IsIG5lc3QpOw0KPiArCXJldHVybiAtRU1TR1NJWkU7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgbW1fZmlsbF9yZXBseShzdHJ1Y3Qgc2tfYnVmZiAq c2tiLA0KPiArCQkJIGNvbnN0IHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsDQo+ICsJ CQkgY29uc3Qgc3RydWN0IGV0aG5sX3JlcGx5X2RhdGEgKnJlcGx5X2Jhc2UpIHsNCj4gKwljb25z dCBzdHJ1Y3QgbW1fcmVwbHlfZGF0YSAqZGF0YSA9IE1NX1JFUERBVEEocmVwbHlfYmFzZSk7DQo+ ICsJY29uc3Qgc3RydWN0IGV0aHRvb2xfbW1fc3RhdGUgKnN0YXRlID0gJmRhdGEtPnN0YXRlOw0K PiArDQo+ICsJaWYgKG5sYV9wdXRfdTgoc2tiLCBFVEhUT09MX0FfTU1fU1VQUE9SVEVELCBzdGF0 ZS0NCj4gPnN1cHBvcnRlZCkpDQo+ICsJCXJldHVybiAtRU1TR1NJWkU7DQo+ICsNCj4gKwlpZiAo IXN0YXRlLT5zdXBwb3J0ZWQpDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJaWYgKG5sYV9wdXRf dTgoc2tiLCBFVEhUT09MX0FfTU1fVFhfRU5BQkxFRCwgc3RhdGUtDQo+ID50eF9lbmFibGVkKSB8 fA0KPiArCSAgICBubGFfcHV0X3U4KHNrYiwgRVRIVE9PTF9BX01NX1RYX0FDVElWRSwgc3RhdGUt PnR4X2FjdGl2ZSkgfHwNCj4gKwkgICAgbmxhX3B1dF91OChza2IsIEVUSFRPT0xfQV9NTV9QTUFD X0VOQUJMRUQsIHN0YXRlLQ0KPiA+cG1hY19lbmFibGVkKSB8fA0KPiArCSAgICBubGFfcHV0X3U4 KHNrYiwgRVRIVE9PTF9BX01NX1ZFUklGWV9FTkFCTEVELCBzdGF0ZS0NCj4gPnZlcmlmeV9lbmFi bGVkKSB8fA0KPiArCSAgICBubGFfcHV0X3U4KHNrYiwgRVRIVE9PTF9BX01NX1ZFUklGWV9TVEFU VVMsIHN0YXRlLQ0KPiA+dmVyaWZ5X3N0YXR1cykgfHwNCj4gKwkgICAgbmxhX3B1dF91MzIoc2ti LCBFVEhUT09MX0FfTU1fVkVSSUZZX1RJTUUsIHN0YXRlLQ0KPiA+dmVyaWZ5X3RpbWUpIHx8DQo+ ICsJICAgIG5sYV9wdXRfdTMyKHNrYiwgRVRIVE9PTF9BX01NX01BWF9WRVJJRllfVElNRSwgc3Rh dGUtDQo+ID5tYXhfdmVyaWZ5X3RpbWUpIHx8DQo+ICsJICAgIG5sYV9wdXRfdTMyKHNrYiwgRVRI VE9PTF9BX01NX0FERF9GUkFHX1NJWkUsIHN0YXRlLQ0KPiA+YWRkX2ZyYWdfc2l6ZSkpDQo+ICsJ CXJldHVybiAtRU1TR1NJWkU7DQo+ICsNCj4gKwlpZiAocmVxX2Jhc2UtPmZsYWdzICYgRVRIVE9P TF9GTEFHX1NUQVRTICYmDQo+ICsJICAgIG1tX3B1dF9zdGF0cyhza2IsICZkYXRhLT5zdGF0cykp DQo+ICsJCXJldHVybiAtRU1TR1NJWkU7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0K PiArY29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX21tX3JlcXVlc3Rfb3BzID0g ew0KPiArCS5yZXF1ZXN0X2NtZAkJPSBFVEhUT09MX01TR19NTV9HRVQsDQo+ICsJLnJlcGx5X2Nt ZAkJPSBFVEhUT09MX01TR19NTV9HRVRfUkVQTFksDQo+ICsJLmhkcl9hdHRyCQk9IEVUSFRPT0xf QV9NTV9IRUFERVIsDQo+ICsJLnJlcV9pbmZvX3NpemUJCT0gc2l6ZW9mKHN0cnVjdCBtbV9yZXFf aW5mbyksDQo+ICsJLnJlcGx5X2RhdGFfc2l6ZQk9IHNpemVvZihzdHJ1Y3QgbW1fcmVwbHlfZGF0 YSksDQo+ICsNCj4gKwkucHJlcGFyZV9kYXRhCQk9IG1tX3ByZXBhcmVfZGF0YSwNCj4gKwkucmVw bHlfc2l6ZQkJPSBtbV9yZXBseV9zaXplLA0KPiArCS5maWxsX3JlcGx5CQk9IG1tX2ZpbGxfcmVw bHksDQo+ICt9Ow0KPiArDQo+ICtjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9tbV9zZXRf cG9saWN5W0VUSFRPT0xfQV9NTV9NQVggKyAxXSA9IHsNCj4gKwlbRVRIVE9PTF9BX01NX0hFQURF Ul0JCT0NCj4gTkxBX1BPTElDWV9ORVNURUQoZXRobmxfaGVhZGVyX3BvbGljeSksDQo+ICsJW0VU SFRPT0xfQV9NTV9WRVJJRllfRU5BQkxFRF0JPSBOTEFfUE9MSUNZX01BWChOTEFfVTgsDQo+IDEp LA0KPiArCVtFVEhUT09MX0FfTU1fVkVSSUZZX1RJTUVdCT0NCj4gTkxBX1BPTElDWV9SQU5HRShO TEFfVTMyLCAxLCAxMjgpLA0KPiArCVtFVEhUT09MX0FfTU1fVFhfRU5BQkxFRF0JPSBOTEFfUE9M SUNZX01BWChOTEFfVTgsDQo+IDEpLA0KPiArCVtFVEhUT09MX0FfTU1fUE1BQ19FTkFCTEVEXQk9 IE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwNCj4gMSksDQo+ICsJW0VUSFRPT0xfQV9NTV9BRERfRlJB R19TSVpFXQk9DQo+IE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1UzMiwgNjAsIDI1MiksDQo+ICt9Ow0K PiArDQo+ICtzdGF0aWMgdm9pZCBtbV9zdGF0ZV90b19jZmcoY29uc3Qgc3RydWN0IGV0aHRvb2xf bW1fc3RhdGUgKnN0YXRlLA0KPiArCQkJICAgIHN0cnVjdCBldGh0b29sX21tX2NmZyAqY2ZnKQ0K PiArew0KPiArCS8qIFdlIGNvdWxkIGFsc28gY29tcGFyZSBzdGF0ZS0+dmVyaWZ5X3N0YXR1cyBh Z2FpbnN0DQo+ICsJICogRVRIVE9PTF9NTV9WRVJJRllfU1RBVFVTX0RJU0FCTEVELCBidXQgc3Rh dGUtDQo+ID52ZXJpZnlfZW5hYmxlZA0KPiArCSAqIGlzIG1vcmUgbGlrZSBhbiBhZG1pbmlzdHJh dGl2ZSBzdGF0ZSB3aGljaCBzaG91bGQgYmUgc2VlbiBpbg0KPiArCSAqIEVUSFRPT0xfTVNHX01N X0dFVCByZXBsaWVzLiBGb3IgZXhhbXBsZSwgYSBwb3J0IHdpdGgNCj4gdmVyaWZpY2F0aW9uDQo+ ICsJICogZGlzYWJsZWQgbWlnaHQgYmUgaW4gdGhlIEVUSFRPT0xfTU1fVkVSSUZZX1NUQVRVU19J TklUSUFMDQo+ICsJICogaWYgaXQncyBkb3duLg0KPiArCSAqLw0KPiArCWNmZy0+dmVyaWZ5X2Vu YWJsZWQgPSBzdGF0ZS0+dmVyaWZ5X2VuYWJsZWQ7DQo+ICsJY2ZnLT52ZXJpZnlfdGltZSA9IHN0 YXRlLT52ZXJpZnlfdGltZTsNCj4gKwljZmctPnR4X2VuYWJsZWQgPSBzdGF0ZS0+dHhfZW5hYmxl ZDsNCj4gKwljZmctPnBtYWNfZW5hYmxlZCA9IHN0YXRlLT5wbWFjX2VuYWJsZWQ7DQo+ICsJY2Zn LT5hZGRfZnJhZ19zaXplID0gc3RhdGUtPmFkZF9mcmFnX3NpemU7IH0NCj4gKw0KPiAraW50IGV0 aG5sX3NldF9tbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKSB7 DQo+ICsJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gaW5mby0+ZXh0YWNrOw0KPiAr CXN0cnVjdCBldGhubF9yZXFfaW5mbyByZXFfaW5mbyA9IHt9Ow0KPiArCXN0cnVjdCBldGh0b29s X21tX3N0YXRlIHN0YXRlID0ge307DQo+ICsJc3RydWN0IG5sYXR0ciAqKnRiID0gaW5mby0+YXR0 cnM7DQo+ICsJc3RydWN0IGV0aHRvb2xfbW1fY2ZnIGNmZyA9IHt9Ow0KPiArCWNvbnN0IHN0cnVj dCBldGh0b29sX29wcyAqb3BzOw0KPiArCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7DQo+ICsJYm9v bCBtb2QgPSBmYWxzZTsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJcmV0ID0gZXRobmxfcGFyc2Vf aGVhZGVyX2Rldl9nZXQoJnJlcV9pbmZvLA0KPiB0YltFVEhUT09MX0FfTU1fSEVBREVSXSwNCj4g KwkJCQkJIGdlbmxfaW5mb19uZXQoaW5mbyksIGV4dGFjaywgdHJ1ZSk7DQo+ICsJaWYgKHJldCkN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCWRldiA9IHJlcV9pbmZvLmRldjsNCj4gKwlvcHMg PSBkZXYtPmV0aHRvb2xfb3BzOw0KPiArDQo+ICsJaWYgKCFvcHMtPmdldF9tbSB8fCAhb3BzLT5z ZXRfbW0pIHsNCj4gKwkJcmV0ID0gLUVPUE5PVFNVUFA7DQo+ICsJCWdvdG8gb3V0X2RldjsNCj4g Kwl9DQo+ICsNCj4gKwlydG5sX2xvY2soKTsNCj4gKwlyZXQgPSBldGhubF9vcHNfYmVnaW4oZGV2 KTsNCj4gKwlpZiAocmV0KQ0KPiArCQlnb3RvIG91dF9ydG5sOw0KPiArDQo+ICsJb3BzLT5nZXRf bW0oZGV2LCAmc3RhdGUpOw0KPiArDQo+ICsJbW1fc3RhdGVfdG9fY2ZnKCZzdGF0ZSwgJmNmZyk7 DQo+ICsNCj4gKwlpZiAoY2ZnLnZlcmlmeV90aW1lID4gc3RhdGUubWF4X3ZlcmlmeV90aW1lKSB7 DQo+ICsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICJ2ZXJpZnlUaW1lIGV4Y2VlZHMgZGV2 aWNlDQo+IG1heGltdW0iKTsNCj4gKwkJcmV0dXJuIC1FUkFOR0U7DQo+ICsJfQ0KPiArDQo+ICsJ ZXRobmxfdXBkYXRlX2Jvb2woJmNmZy52ZXJpZnlfZW5hYmxlZCwNCj4gdGJbRVRIVE9PTF9BX01N X1ZFUklGWV9FTkFCTEVEXSwNCj4gKwkJCSAgJm1vZCk7DQo+ICsJZXRobmxfdXBkYXRlX3UzMigm Y2ZnLnZlcmlmeV90aW1lLA0KPiB0YltFVEhUT09MX0FfTU1fVkVSSUZZX1RJTUVdLCAmbW9kKTsN Cj4gKwlldGhubF91cGRhdGVfYm9vbCgmY2ZnLnR4X2VuYWJsZWQsDQo+IHRiW0VUSFRPT0xfQV9N TV9UWF9FTkFCTEVEXSwgJm1vZCk7DQo+ICsJZXRobmxfdXBkYXRlX2Jvb2woJmNmZy5wbWFjX2Vu YWJsZWQsDQo+IHRiW0VUSFRPT0xfQV9NTV9QTUFDX0VOQUJMRURdLA0KPiArCQkJICAmbW9kKTsN Cj4gKwlldGhubF91cGRhdGVfdTMyKCZjZmcuYWRkX2ZyYWdfc2l6ZSwNCj4gdGJbRVRIVE9PTF9B X01NX0FERF9GUkFHX1NJWkVdLA0KPiArCQkJICZtb2QpOw0KPiArDQo+ICsJcmV0ID0gb3BzLT5z ZXRfbW0oZGV2LCAmY2ZnLCBleHRhY2spOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJaWYgKCFleHRh Y2stPl9tc2cpDQo+ICsJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssDQo+ICsJCQkJICAgICAgICJG YWlsZWQgdG8gdXBkYXRlIE1BQyBtZXJnZQ0KPiBjb25maWd1cmF0aW9uIik7DQo+ICsJCWdvdG8g b3V0X29wczsNCj4gKwl9DQo+ICsNCj4gKwlldGh0b29sX25vdGlmeShkZXYsIEVUSFRPT0xfTVNH X01NX05URiwgTlVMTCk7DQo+ICsNCj4gK291dF9vcHM6DQo+ICsJZXRobmxfb3BzX2NvbXBsZXRl KGRldik7DQo+ICtvdXRfcnRubDoNCj4gKwlydG5sX3VubG9jaygpOw0KPiArb3V0X2RldjoNCj4g KwlkZXZfcHV0KGRldik7DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL25l dC9ldGh0b29sL25ldGxpbmsuYyBiL25ldC9ldGh0b29sL25ldGxpbmsuYyBpbmRleA0KPiBhZWU5 OGJlNjIzN2YuLmE4YzViMjUyMWM0NiAxMDA2NDQNCj4gLS0tIGEvbmV0L2V0aHRvb2wvbmV0bGlu ay5jDQo+ICsrKyBiL25ldC9ldGh0b29sL25ldGxpbmsuYw0KPiBAQCAtMjg4LDYgKzI4OCw3IEBA DQo+IGV0aG5sX2RlZmF1bHRfcmVxdWVzdHNbX19FVEhUT09MX01TR19VU0VSX0NOVF0gPSB7DQo+ ICAJW0VUSFRPT0xfTVNHX01PRFVMRV9HRVRdCT0NCj4gJmV0aG5sX21vZHVsZV9yZXF1ZXN0X29w cywNCj4gIAlbRVRIVE9PTF9NU0dfUFNFX0dFVF0JCT0gJmV0aG5sX3BzZV9yZXF1ZXN0X29wcywN Cj4gIAlbRVRIVE9PTF9NU0dfUlNTX0dFVF0JCT0gJmV0aG5sX3Jzc19yZXF1ZXN0X29wcywNCj4g KwlbRVRIVE9PTF9NU0dfTU1fR0VUXQkJPSAmZXRobmxfbW1fcmVxdWVzdF9vcHMsDQo+ICB9Ow0K PiANCj4gIHN0YXRpYyBzdHJ1Y3QgZXRobmxfZHVtcF9jdHggKmV0aG5sX2R1bXBfY29udGV4dChz dHJ1Y3QgbmV0bGlua19jYWxsYmFjaw0KPiAqY2IpIEBAIC02MDMsNiArNjA0LDcgQEANCj4gZXRo bmxfZGVmYXVsdF9ub3RpZnlfb3BzW0VUSFRPT0xfTVNHX0tFUk5FTF9NQVggKyAxXSA9IHsNCj4g IAlbRVRIVE9PTF9NU0dfRUVFX05URl0JCT0gJmV0aG5sX2VlZV9yZXF1ZXN0X29wcywNCj4gIAlb RVRIVE9PTF9NU0dfRkVDX05URl0JCT0gJmV0aG5sX2ZlY19yZXF1ZXN0X29wcywNCj4gIAlbRVRI VE9PTF9NU0dfTU9EVUxFX05URl0JPQ0KPiAmZXRobmxfbW9kdWxlX3JlcXVlc3Rfb3BzLA0KPiAr CVtFVEhUT09MX01TR19NTV9OVEZdCQk9ICZldGhubF9tbV9yZXF1ZXN0X29wcywNCj4gIH07DQo+ IA0KPiAgLyogZGVmYXVsdCBub3RpZmljYXRpb24gaGFuZGxlciAqLw0KPiBAQCAtNjk2LDYgKzY5 OCw3IEBAIHN0YXRpYyBjb25zdCBldGhubF9ub3RpZnlfaGFuZGxlcl90DQo+IGV0aG5sX25vdGlm eV9oYW5kbGVyc1tdID0gew0KPiAgCVtFVEhUT09MX01TR19FRUVfTlRGXQkJPSBldGhubF9kZWZh dWx0X25vdGlmeSwNCj4gIAlbRVRIVE9PTF9NU0dfRkVDX05URl0JCT0gZXRobmxfZGVmYXVsdF9u b3RpZnksDQo+ICAJW0VUSFRPT0xfTVNHX01PRFVMRV9OVEZdCT0gZXRobmxfZGVmYXVsdF9ub3Rp ZnksDQo+ICsJW0VUSFRPT0xfTVNHX01NX05URl0JCT0gZXRobmxfZGVmYXVsdF9ub3RpZnksDQo+ ICB9Ow0KPiANCj4gIHZvaWQgZXRodG9vbF9ub3RpZnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IGNtZCwgY29uc3Qgdm9pZA0KPiAqZGF0YSkgQEAgLTEwNDcsNiArMTA1MCwy MiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfb3BzDQo+IGV0aHRvb2xfZ2VubF9vcHNbXSA9 IHsNCj4gIAkJLnBvbGljeSA9IGV0aG5sX3Jzc19nZXRfcG9saWN5LA0KPiAgCQkubWF4YXR0ciA9 IEFSUkFZX1NJWkUoZXRobmxfcnNzX2dldF9wb2xpY3kpIC0gMSwNCj4gIAl9LA0KPiArCXsNCj4g KwkJLmNtZAk9IEVUSFRPT0xfTVNHX01NX0dFVCwNCj4gKwkJLmRvaXQJPSBldGhubF9kZWZhdWx0 X2RvaXQsDQo+ICsJCS5zdGFydAk9IGV0aG5sX2RlZmF1bHRfc3RhcnQsDQo+ICsJCS5kdW1waXQJ PSBldGhubF9kZWZhdWx0X2R1bXBpdCwNCj4gKwkJLmRvbmUJPSBldGhubF9kZWZhdWx0X2RvbmUs DQo+ICsJCS5wb2xpY3kgPSBldGhubF9tbV9nZXRfcG9saWN5LA0KPiArCQkubWF4YXR0ciA9IEFS UkFZX1NJWkUoZXRobmxfbW1fZ2V0X3BvbGljeSkgLSAxLA0KPiArCX0sDQo+ICsJew0KPiArCQku Y21kCT0gRVRIVE9PTF9NU0dfTU1fU0VULA0KPiArCQkuZmxhZ3MJPSBHRU5MX1VOU19BRE1JTl9Q RVJNLA0KPiArCQkuZG9pdAk9IGV0aG5sX3NldF9tbSwNCj4gKwkJLnBvbGljeSA9IGV0aG5sX21t X3NldF9wb2xpY3ksDQo+ICsJCS5tYXhhdHRyID0gQVJSQVlfU0laRShldGhubF9tbV9zZXRfcG9s aWN5KSAtIDEsDQo+ICsJfSwNCj4gIH07DQo+IA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBnZW5s X211bHRpY2FzdF9ncm91cCBldGh0b29sX25sX21jZ3Jwc1tdID0geyBkaWZmIC0tZ2l0DQo+IGEv bmV0L2V0aHRvb2wvbmV0bGluay5oIGIvbmV0L2V0aHRvb2wvbmV0bGluay5oIGluZGV4DQo+IDc0 NGIzYWI5NjZiMC4uYTgwMTJkYmUzOWJiIDEwMDY0NA0KPiAtLS0gYS9uZXQvZXRodG9vbC9uZXRs aW5rLmgNCj4gKysrIGIvbmV0L2V0aHRvb2wvbmV0bGluay5oDQo+IEBAIC0zNzMsNiArMzczLDcg QEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcw0KPiBldGhubF9waGNfdmNs b2Nrc19yZXF1ZXN0X29wczsgIGV4dGVybiBjb25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMN Cj4gZXRobmxfbW9kdWxlX3JlcXVlc3Rfb3BzOyAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGhubF9y ZXF1ZXN0X29wcw0KPiBldGhubF9wc2VfcmVxdWVzdF9vcHM7ICBleHRlcm4gY29uc3Qgc3RydWN0 IGV0aG5sX3JlcXVlc3Rfb3BzDQo+IGV0aG5sX3Jzc19yZXF1ZXN0X29wczsNCj4gK2V4dGVybiBj b25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMgZXRobmxfbW1fcmVxdWVzdF9vcHM7DQo+IA0K PiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5DQo+IGV0aG5sX2hlYWRlcl9wb2xpY3lb RVRIVE9PTF9BX0hFQURFUl9GTEFHUyArIDFdOyAgZXh0ZXJuIGNvbnN0IHN0cnVjdA0KPiBubGFf cG9saWN5IGV0aG5sX2hlYWRlcl9wb2xpY3lfc3RhdHNbRVRIVE9PTF9BX0hFQURFUl9GTEFHUyAr IDFdOyBAQA0KPiAtNDE0LDYgKzQxNSw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGlj eQ0KPiBldGhubF9tb2R1bGVfc2V0X3BvbGljeVtFVEhUT09MX0FfTU9EVUxFX1BPV0VSX01PDQo+ ICBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kNCj4gZXRobmxfcHNlX2dldF9wb2xpY3lb RVRIVE9PTF9BX1BTRV9IRUFERVIgKyAxXTsgIGV4dGVybiBjb25zdCBzdHJ1Y3QNCj4gbmxhX3Bv bGljeSBldGhubF9wc2Vfc2V0X3BvbGljeVtFVEhUT09MX0FfUFNFX01BWCArIDFdOyAgZXh0ZXJu IGNvbnN0DQo+IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19nZXRfcG9saWN5W0VUSFRPT0xf QV9SU1NfQ09OVEVYVCArIDFdOw0KPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5DQo+ IGV0aG5sX21tX2dldF9wb2xpY3lbRVRIVE9PTF9BX01NX0hFQURFUg0KPiArKyAxXTsgZXh0ZXJu IGNvbnN0IHN0cnVjdCBubGFfcG9saWN5DQo+ICtldGhubF9tbV9zZXRfcG9saWN5W0VUSFRPT0xf QV9NTV9NQVggKyAxXTsNCj4gDQo+ICBpbnQgZXRobmxfc2V0X2xpbmtpbmZvKHN0cnVjdCBza19i dWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pOyAgaW50DQo+IGV0aG5sX3NldF9saW5r bW9kZXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7IEBAIC00 MzQsNg0KPiArNDM3LDcgQEAgaW50IGV0aG5sX3R1bm5lbF9pbmZvX2R1bXBpdChzdHJ1Y3Qgc2tf YnVmZiAqc2tiLCBzdHJ1Y3QNCj4gbmV0bGlua19jYWxsYmFjayAqY2IpOyAgaW50IGV0aG5sX3Nl dF9mZWMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbw0KPiAqaW5mbyk7ICBp bnQgZXRobmxfc2V0X21vZHVsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZv ICppbmZvKTsgIGludA0KPiBldGhubF9zZXRfcHNlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVj dCBnZW5sX2luZm8gKmluZm8pOw0KPiAraW50IGV0aG5sX3NldF9tbShzdHJ1Y3Qgc2tfYnVmZiAq c2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTsNCj4gDQo+ICBleHRlcm4gY29uc3QgY2hhcg0K PiBzdGF0c19zdGRfbmFtZXNbX19FVEhUT09MX1NUQVRTX0NOVF1bRVRIX0dTVFJJTkdfTEVOXTsN Cj4gIGV4dGVybiBjb25zdCBjaGFyDQo+IHN0YXRzX2V0aF9waHlfbmFtZXNbX19FVEhUT09MX0Ff U1RBVFNfRVRIX1BIWV9DTlRdW0VUSF9HU1RSSU5HXw0KPiBMRU5dOw0KPiAtLQ0KPiAyLjM0LjEN Cg0K