Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp142101ybz; Thu, 23 Apr 2020 20:25:26 -0700 (PDT) X-Google-Smtp-Source: APiQypJdKqeklgU3q1FRu0sxLflh3BRz44rXDphNwuVFYWdQKqqT5Ycfn/IUGjkBgbmSFwt4904Z X-Received: by 2002:a50:da49:: with SMTP id a9mr5232657edk.388.1587698726490; Thu, 23 Apr 2020 20:25:26 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1587698726; cv=pass; d=google.com; s=arc-20160816; b=aeiR2a+5M5dRE7W/9S5bN4g3xmyb+CAHvCDjSXr6tV3Xvf29M0DKhUnpkPNQY3jH/z sIdky/8dPF+JfNqKnaqntLIWyDif65BLYNEPFFPR00Wa1Q+QOWbC9UmcxV9wJvEjF5zE gWlo9SljlZSz3vEOlknC5hKMmq8DriJIb3KsQxj/ybZMOqyuBhyZDi7NurlB9ikkAyfC DEFSGYrgPGMhPEknnthAbA/sO8bsXt8u8YMzUpMpfsd10iP95Dol2bwf8dmIfSokyFmt hEwYCViEd/iTWrNz1ityzEpNhDTfjM/iOwHDJ7fw60m32ACmtfwe6K8OV1xHUQgMzsIH fQ8A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender: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=tJEDk+/TWNos1rOJigTIZyRoWRA58yJrlRldj+NHJ+c=; b=IL4HCsndFJRqCuI7sMGMcR57ubYPggbplC0f3s8wVDCgRhKA2SWUuR7fM41GIolE3l HEWoK7QVJjV5A26Gnd0Tx5rLwSzQxHj49C1VN7rtAfCrGZi6QD2Bd04yW8Dro1mpWiNL GY+7fiUDRnwADKtbkpuMXJJG+Imr6hwHIlgRkvdtTV1xKrAlQKTXTZd4ftRQKm2mIbap Xhj4fdmZz7oOGpLxxUvI0TtiraAW+KoGq8opRTs+m3LcM915HwJNpcd8vrEWkKQWjh+L HXJleL9ax3CAk/iyXp6P9xjZNkAuhdzc78gco7hYE71Lz3MHq7HzzBc/fgPd3hUahkOp mMRw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=mN0nWCxf; 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 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h21si2427455edq.123.2020.04.23.20.25.02; Thu, 23 Apr 2020 20:25:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=mN0nWCxf; 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 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726401AbgDXDXY (ORCPT + 99 others); Thu, 23 Apr 2020 23:23:24 -0400 Received: from mail-eopbgr00080.outbound.protection.outlook.com ([40.107.0.80]:1151 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725884AbgDXDXX (ORCPT ); Thu, 23 Apr 2020 23:23:23 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b788czjTjoaTRXghBs+6C1wPcWuVJ8JSUb3rTrmJECNW3ii79r18FVh4beR6mtemkAppB2inbxfh+IoTgjQSk0HqZtUyN0NJLSW9CgWzsk3GZheUHg8lYbbUBgzrSPVGH5jDqH832Le7PJuEusuL66/MVN6qIDnKNQgIR0Bi1vb2ofOnPsHbRX+tbirqyaA5KdJ2MQYH54RqGD/sdF20K+ZNOzCr3ykb2faMTfcFjjEX/G9DBJepWh7/UElNgkc3i76M4J4uwhIaXGmzPOY5H0aKOdZMJroL882O4JXAi87uHuxqbZQFB1Uvp850Yf7QwIQ1/tQ7WVWuC9598dKZqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tJEDk+/TWNos1rOJigTIZyRoWRA58yJrlRldj+NHJ+c=; b=L0O9vjNXZIoVwIB+oqxFffSvKiCUYQur92J9oysSpIdNQ8Fv7skhdJy8s0Spar/4J11QaxSiMpqPVAITeUPBzwas2Q5O0AJp85D5GEA5RLceBDK/TptFGyiiz1l/YsnPfGyizWkFunksj3Bgiz63zJnVUhIvP9342/Qk3yq74cN7zll8qO0RnAuvB4q6/PiMbwqcGV/Gin/Ph/5z5BtRyv3mE1EPgyOOn/55A2adfFrkSroxdtJfXfPyt23iZg8OEQshxtcfV24Z79lzm2WfLhWiyt0tCos43YwFmez5XcqH/wjvQ6U9D7cHNnZ80onF7T7Cix55nLaWcLlxsDvN4w== 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=tJEDk+/TWNos1rOJigTIZyRoWRA58yJrlRldj+NHJ+c=; b=mN0nWCxfwCcusAAko+8j11rgvrH0EyoTjhnF+wpl3VSRNh3IBiR2Nx/lOHZZRcbOBCJ7mNFpOBEWj8g24to/AatDs9Y+Jq0aHCVws/qxN6BR1r/x34fbBXIVfyRW8oWM4Y/o1WjPNMeAVmdT2fyHhilfZfbSs+xuLIaNyDwTscw= Received: from VE1PR04MB6496.eurprd04.prod.outlook.com (2603:10a6:803:11c::29) by VE1PR04MB6528.eurprd04.prod.outlook.com (2603:10a6:803:127::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Fri, 24 Apr 2020 03:23:10 +0000 Received: from VE1PR04MB6496.eurprd04.prod.outlook.com ([fe80::1479:38ea:d4f7:a173]) by VE1PR04MB6496.eurprd04.prod.outlook.com ([fe80::1479:38ea:d4f7:a173%7]) with mapi id 15.20.2921.032; Fri, 24 Apr 2020 03:23:10 +0000 From: Po Liu To: Vinicius Costa Gomes , "davem@davemloft.net" , "linux-kernel@vger.kernel.org" , "netdev@vger.kernel.org" CC: Claudiu Manoil , Vladimir Oltean , Alexandru Marginean , "michael.chan@broadcom.com" , "vishal@chelsio.com" , "saeedm@mellanox.com" , "leon@kernel.org" , "jiri@mellanox.com" , "idosch@mellanox.com" , "alexandre.belloni@bootlin.com" , "UNGLinuxDriver@microchip.com" , "kuba@kernel.org" , "jhs@mojatatu.com" , "xiyou.wangcong@gmail.com" , "simon.horman@netronome.com" , "pablo@netfilter.org" , "moshe@mellanox.com" , "m-karicheri2@ti.com" , "andre.guedes@linux.intel.com" , "stephen@networkplumber.org" Subject: RE: [EXT] Re: [v3,net-next 1/4] net: qos: introduce a gate control flow action Thread-Topic: [EXT] Re: [v3,net-next 1/4] net: qos: introduce a gate control flow action Thread-Index: AQHWGFNl1uy1t0tlFE2NuiTq9Lz8sqiG+0OAgACaOiA= Date: Fri, 24 Apr 2020 03:23:10 +0000 Message-ID: References: <20200418011211.31725-5-Po.Liu@nxp.com> <20200422024852.23224-1-Po.Liu@nxp.com> <20200422024852.23224-2-Po.Liu@nxp.com> <878sim2jcs.fsf@intel.com> In-Reply-To: <878sim2jcs.fsf@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=po.liu@nxp.com; x-originating-ip: [221.221.133.215] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: c91149cf-2287-40d8-96d3-08d7e7fed0e0 x-ms-traffictypediagnostic: VE1PR04MB6528:|VE1PR04MB6528: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 03838E948C x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6496.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(396003)(136003)(346002)(366004)(376002)(39860400002)(7416002)(53546011)(478600001)(54906003)(110136005)(6506007)(186003)(2906002)(52536014)(4326008)(316002)(33656002)(26005)(5660300002)(55016002)(7696005)(86362001)(9686003)(30864003)(8936002)(44832011)(71200400001)(66946007)(66556008)(64756008)(66446008)(76116006)(8676002)(81156014)(66476007)(559001)(579004);DIR:OUT;SFP:1101; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: q1F6kaUz93FkxTNh57a7AFolrhP0skc77o6Hq8x13GurU/jkoUNglk86S2gTQOriVsmoVM3G6mjjsYPBBXzdOhHjFfk7aqf4IBSLrvrLcx15mi86jz657tA8h7fujCSyi0Zkv4cmq1aBNhg1clVr/VTM1VYsdVPZuWWyuQWF/LJUDKhq4f3EgBs9o4ih0AcbA43VWprePo62++aqQMu8/O/HSYHsPa1C3kvwT8/GbdeZxbtMWc/nfwbspyUueuTzaiO9i7xaTNypFIjJjevd2TR6eYwzBjziUa8Qq1GFessQAx0OJeRGdRRzfsmBixyewMxZ3k8jUUHy3//oMRqlc6H6yKYh53biVmBEiENHFATrnY/oERLjY3we9eej4Wy0YdRt4ehg7eaoKGIYgHDcavsVZQFcZIkH07UC6MVcAFqoRbGDfHTyEpSkh1JSynOV x-ms-exchange-antispam-messagedata: YrqM7k5RnqhtrlUxYnYA3KOydKJ7XDDX1fAblPwfmTTLVPAvxC7UaZMM1ZV4zM/2oOHUhQGXPMFTqyYcuwlz/QmES3XCpJv3jAiqNeU5WFHAUIjOY31/66Vgl7DsxND5u+WqzBfgAzpyqzwBR+dCAw== Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c91149cf-2287-40d8-96d3-08d7e7fed0e0 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Apr 2020 03:23:10.6584 (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: MPGN2e/7iOWKogQmtxQ9YC3e03/SKIRev4e3ytGhSvL9X0ZHbMWCdrG6uD+0iDqy X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6528 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgVmluaWNpdXMsDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBW aW5pY2l1cyBDb3N0YSBHb21lcyA8dmluaWNpdXMuZ29tZXNAaW50ZWwuY29tPg0KPiBTZW50OiAy MDIwxOo01MIyNMjVIDE6MzgNCj4gVG86IFBvIExpdSA8cG8ubGl1QG54cC5jb20+OyBkYXZlbUBk YXZlbWxvZnQubmV0OyBsaW51eC0NCj4ga2VybmVsQHZnZXIua2VybmVsLm9yZzsgbmV0ZGV2QHZn ZXIua2VybmVsLm9yZw0KPiBDYzogUG8gTGl1IDxwby5saXVAbnhwLmNvbT47IENsYXVkaXUgTWFu b2lsIDxjbGF1ZGl1Lm1hbm9pbEBueHAuY29tPjsNCj4gVmxhZGltaXIgT2x0ZWFuIDx2bGFkaW1p ci5vbHRlYW5AbnhwLmNvbT47IEFsZXhhbmRydSBNYXJnaW5lYW4NCj4gPGFsZXhhbmRydS5tYXJn aW5lYW5AbnhwLmNvbT47IG1pY2hhZWwuY2hhbkBicm9hZGNvbS5jb207DQo+IHZpc2hhbEBjaGVs c2lvLmNvbTsgc2FlZWRtQG1lbGxhbm94LmNvbTsgbGVvbkBrZXJuZWwub3JnOw0KPiBqaXJpQG1l bGxhbm94LmNvbTsgaWRvc2NoQG1lbGxhbm94LmNvbTsNCj4gYWxleGFuZHJlLmJlbGxvbmlAYm9v dGxpbi5jb207IFVOR0xpbnV4RHJpdmVyQG1pY3JvY2hpcC5jb207DQo+IGt1YmFAa2VybmVsLm9y ZzsgamhzQG1vamF0YXR1LmNvbTsgeGl5b3Uud2FuZ2NvbmdAZ21haWwuY29tOw0KPiBzaW1vbi5o b3JtYW5AbmV0cm9ub21lLmNvbTsgcGFibG9AbmV0ZmlsdGVyLm9yZzsNCj4gbW9zaGVAbWVsbGFu b3guY29tOyBtLWthcmljaGVyaTJAdGkuY29tOw0KPiBhbmRyZS5ndWVkZXNAbGludXguaW50ZWwu Y29tOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgUG8gTGl1DQo+IDxwby5saXVAbnhwLmNv bT4NCj4gU3ViamVjdDogW0VYVF0gUmU6IFt2MyxuZXQtbmV4dCAxLzRdIG5ldDogcW9zOiBpbnRy b2R1Y2UgYSBnYXRlIGNvbnRyb2wgZmxvdw0KPiBhY3Rpb24NCj4gDQo+IENhdXRpb246IEVYVCBF bWFpbA0KPiANCj4gUG8gTGl1IDxQby5MaXVAbnhwLmNvbT4gd3JpdGVzOg0KPiANCj4gPiBJbnRy b2R1Y2UgYSBpbmdyZXNzIGZyYW1lIGdhdGUgY29udHJvbCBmbG93IGFjdGlvbi4NCj4gPiBUYyBn YXRlIGFjdGlvbiBkb2VzIHRoZSB3b3JrIGxpa2UgdGhpczoNCj4gPiBBc3N1bWUgdGhlcmUgaXMg YSBnYXRlIGFsbG93IHNwZWNpZmllZCBpbmdyZXNzIGZyYW1lcyBjYW4gYmUgcGFzc2VkIGF0DQo+ ID4gc3BlY2lmaWMgdGltZSBzbG90LCBhbmQgYmUgZHJvcHBlZCBhdCBzcGVjaWZpYyB0aW1lIHNs b3QuIFRjIGZpbHRlcg0KPiA+IGNob29zZXMgdGhlIGluZ3Jlc3MgZnJhbWVzLCBhbmQgdGMgZ2F0 ZSBhY3Rpb24gd291bGQgc3BlY2lmeSB3aGF0IHNsb3QNCj4gPiBkb2VzIHRoZXNlIGZyYW1lcyBj YW4gYmUgcGFzc2VkIHRvIGRldmljZSBhbmQgd2hhdCB0aW1lIHNsb3Qgd291bGQgYmUNCj4gPiBk cm9wcGVkLg0KPiA+IFRjIGdhdGUgYWN0aW9uIHdvdWxkIHByb3ZpZGUgYW4gZW50cnkgbGlzdCB0 byB0ZWxsIGhvdyBtdWNoIHRpbWUgZ2F0ZQ0KPiA+IGtlZXAgb3BlbiBhbmQgaG93IG11Y2ggdGlt ZSBnYXRlIGtlZXAgc3RhdGUgY2xvc2UuIEdhdGUgYWN0aW9uIGFsc28NCj4gPiBhc3NpZ24gYSBz dGFydCB0aW1lIHRvIHRlbGwgd2hlbiB0aGUgZW50cnkgbGlzdCBzdGFydC4gVGhlbiBkcml2ZXIN Cj4gPiB3b3VsZCByZXBlYXQgdGhlIGdhdGUgZW50cnkgbGlzdCBjeWNsaWNhbGx5Lg0KPiA+IEZv ciB0aGUgc29mdHdhcmUgc2ltdWxhdGlvbiwgZ2F0ZSBhY3Rpb24gcmVxdWlyZXMgdGhlIHVzZXIg YXNzaWduIGENCj4gPiB0aW1lIGNsb2NrIHR5cGUuDQo+ID4NCj4gPiBCZWxvdyBpcyB0aGUgc2V0 dGluZyBleGFtcGxlIGluIHVzZXIgc3BhY2UuIFRjIGZpbHRlciBhIHN0cmVhbSBzb3VyY2UNCj4g PiBpcCBhZGRyZXNzIGlzIDE5Mi4xNjguMC4yMCBhbmQgZ2F0ZSBhY3Rpb24gb3duIHR3byB0aW1l IHNsb3RzLiBPbmUgaXMNCj4gPiBsYXN0IDIwMG1zIGdhdGUgb3BlbiBsZXQgZnJhbWUgcGFzcyBh bm90aGVyIGlzIGxhc3QgMTAwbXMgZ2F0ZSBjbG9zZQ0KPiA+IGxldCBmcmFtZXMgZHJvcHBlZC4g V2hlbiB0aGUgZnJhbWVzIGhhdmUgcGFzc2VkIHRvdGFsIGZyYW1lcyBvdmVyDQo+ID4gODAwMDAw MCBieXRlcywgZnJhbWVzIHdpbGwgYmUgZHJvcHBlZCBpbiBvbmUgMjAwMDAwMDAwbnMgdGltZSBz bG90Lg0KPiA+DQo+ID4+IHRjIHFkaXNjIGFkZCBkZXYgZXRoMCBpbmdyZXNzDQo+ID4NCj4gPj4g dGMgZmlsdGVyIGFkZCBkZXYgZXRoMCBwYXJlbnQgZmZmZjogcHJvdG9jb2wgaXAgXA0KPiA+ICAg ICAgICAgIGZsb3dlciBzcmNfaXAgMTkyLjE2OC4wLjIwIFwNCj4gPiAgICAgICAgICBhY3Rpb24g Z2F0ZSBpbmRleCAyIGNsb2NraWQgQ0xPQ0tfVEFJIFwNCj4gPiAgICAgICAgICBzY2hlZC1lbnRy eSBvcGVuIDIwMDAwMDAwMCAtMSA4MDAwMDAwIFwNCj4gPiAgICAgICAgICBzY2hlZC1lbnRyeSBj bG9zZSAxMDAwMDAwMDAgLTEgLTENCj4gDQo+IEZyb20gdGhlIGluc2lnaHQgdGhhdCBWbGFkaW1p ciBnYXZlLCBpdCByZWFsbHkgbWFrZXMgaXQgZWFzaWVyIGZvciBtZSB0bw0KPiB1bmRlcnN0YW5k IGlmIHlvdSBhZGRlZCB0aGVzZSBmaWx0ZXJzIGFuZCBhY3Rpb25zIGluIHR3byBzdGVwcy4gVGhl IGZpcnN0LA0KPiB5b3Ugd291bGQgYWRkIHRoZSAidGltZSBiYXNlZCIgYWN0aW9ucyBhbmQgdGhl IHNlY29uZCB5b3Ugd291bGQgcGx1Zw0KPiB0aGUgZmlsdGVycyBpbnRvIHRoZSBhY3Rpb25zLiBB bmQgSSB0aGluayB0aGlzIHdvdWxkIG1hdGNoIHJlYWwgd29ybGQgdXNhZ2UNCj4gYmV0dGVyLg0K PiANCj4gQW5vdGhlciBzbWFsbCB1c2FiaWxpdHkgaW1wcm92ZW1lbnQgaXMgdG8gbWFrZSB0aGUg ImV4dHJhIiBwYXJhbWV0ZXJzIHRvDQo+ICdzY2hlZC1lbnRyeSBjbG9zZScgb3B0aW9uYWwsIGlm IHBhY2tldHMgdGhhdCBhcnJpdmUgZHVyaW5nIGEgY2xvc2VkIGdhdGUgYXJlDQo+IGRyb3BwZWQs IHRob3NlIHBhcmFtZXRlcnMgZG9uJ3QgbWFrZSBtdWNoIHNlbnNlLg0KPiANCg0KVGhpcyBpcyBt YWtlIHNlbnNlLiBWbGFkbWlyIE9sdGVhbiBhbHNvIHN1Z2dlc3QgdG8gZGVmYXVsdCB2YWx1ZSBp ZiBub3Qgc2V0IHRoZSBsYXN0IHR3byBwYXJhbWV0ZXJzLiBJIHdvdWxkIG1vZGlmeSBpdCBvbiB0 aGUgdXNlciBzcGFjZSBpcHJvdXRlMiBwYXRjaC4NCg0KPiA+DQo+ID4+IHRjIGNoYWluIGRlbCBk ZXYgZXRoMCBpbmdyZXNzIGNoYWluIDANCj4gPg0KPiA+ICJzY2hlZC1lbnRyeSIgZm9sbG93IHRo ZSBuYW1lIHRhcHJpbyBzdHlsZS4gR2F0ZSBzdGF0ZSBpcw0KPiA+ICJvcGVuIi8iY2xvc2UiLiBG b2xsb3cgd2l0aCBwZXJpb2QgbmFub3NlY29uZC4gVGhlbiBuZXh0IGl0ZW0gaXMNCj4gPiBpbnRl cm5hbCBwcmlvcml0eSB2YWx1ZSBtZWFucyB3aGljaCBpbmdyZXNzIHF1ZXVlIHNob3VsZCBwdXQu ICItMSINCj4gPiBtZWFucyB3aWxkY2FyZC4gVGhlIGxhc3QgdmFsdWUgb3B0aW9uYWwgc3BlY2lm aWVzIHRoZSBtYXhpbXVtIG51bWJlcg0KPiA+IG9mIE1TRFUgb2N0ZXRzIHRoYXQgYXJlIHBlcm1p dHRlZCB0byBwYXNzIHRoZSBnYXRlIGR1cmluZyB0aGUNCj4gPiBzcGVjaWZpZWQgdGltZSBpbnRl cnZhbC4NCj4gPiBCYXNlLXRpbWUgaXMgbm90IHNldCB3aWxsIGJlIDAgYXMgZGVmYXVsdCwgYXMg cmVzdWx0IHN0YXJ0IHRpbWUgd291bGQNCj4gPiBiZSAoKE4gKyAxKSAqIGN5Y2xldGltZSkgd2hp Y2ggaXMgdGhlIG1pbmltYWwgb2YgZnV0dXJlIHRpbWUuDQo+ID4NCj4gPiBCZWxvdyBleGFtcGxl IHNob3dzIGZpbHRlcmluZyBhIHN0cmVhbSB3aXRoIGRlc3RpbmF0aW9uIG1hYyBhZGRyZXNzIGlz DQo+ID4gMTA6MDA6ODA6MDA6MDA6MDAgYW5kIGlwIHR5cGUgaXMgSUNNUCwgZm9sbG93IHRoZSBh Y3Rpb24gZ2F0ZS4gVGhlDQo+ID4gZ2F0ZSBhY3Rpb24gd291bGQgcnVuIHdpdGggb25lIGNsb3Nl IHRpbWUgc2xvdCB3aGljaCBtZWFucyBhbHdheXMga2VlcA0KPiBjbG9zZS4NCj4gPiBUaGUgdGlt ZSBjeWNsZSBpcyB0b3RhbCAyMDAwMDAwMDBucy4gVGhlIGJhc2UtdGltZSB3b3VsZCBjYWxjdWxh dGUgYnk6DQo+ID4NCj4gPiAgMTM1NzAwMDAwMDAwMCArIChOICsgMSkgKiBjeWNsZXRpbWUNCj4g Pg0KPiA+IFdoZW4gdGhlIHRvdGFsIHZhbHVlIGlzIHRoZSBmdXR1cmUgdGltZSwgaXQgd2lsbCBi ZSB0aGUgc3RhcnQgdGltZS4NCj4gPiBUaGUgY3ljbGV0aW1lIGhlcmUgd291bGQgYmUgMjAwMDAw MDAwbnMgZm9yIHRoaXMgY2FzZS4NCj4gPg0KPiA+PiB0YyBmaWx0ZXIgYWRkIGRldiBldGgwIHBh cmVudCBmZmZmOiAgcHJvdG9jb2wgaXAgXA0KPiA+ICAgICAgICAgIGZsb3dlciBza2lwX2h3IGlw X3Byb3RvIGljbXAgZHN0X21hYyAxMDowMDo4MDowMDowMDowMCBcDQo+ID4gICAgICAgICAgYWN0 aW9uIGdhdGUgaW5kZXggMTIgYmFzZS10aW1lIDEzNTcwMDAwMDAwMDAgXA0KPiA+ICAgICAgICAg IHNjaGVkLWVudHJ5IGNsb3NlIDIwMDAwMDAwMCAtMSAtMSBcDQo+ID4gICAgICAgICAgY2xvY2tp ZCBDTE9DS19UQUkNCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFBvIExpdSA8UG8uTGl1QG54cC5j b20+DQo+ID4gLS0tDQo+ID4gIGluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmggICAgICAgIHwg IDU0ICsrKw0KPiA+ICBpbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oICAgICAgICB8ICAgMSAr DQo+ID4gIGluY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZ2F0ZS5oIHwgIDQ3ICsrDQo+ID4g IG5ldC9zY2hlZC9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgIDEzICsNCj4gPiAgbmV0L3Nj aGVkL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICBuZXQvc2NoZWQvYWN0 X2dhdGUuYyAgICAgICAgICAgICAgICB8IDY0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysr DQo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgNzYzIGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmggIGNyZWF0ZSBtb2RlIDEwMDY0 NA0KPiA+IGluY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZ2F0ZS5oDQo+ID4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBuZXQvc2NoZWQvYWN0X2dhdGUuYw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgNCj4gPiBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19n YXRlLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAwMDAwMDAwMDAwMDAuLmIwYWNl NTViMmFhYQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9pbmNsdWRlL25ldC90Y19hY3Qv dGNfZ2F0ZS5oDQo+ID4gQEAgLTAsMCArMSw1NCBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLw0KPiA+ICsvKiBDb3B5cmlnaHQgMjAyMCBOWFAg Ki8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19ORVRfVENfR0FURV9IDQo+ID4gKyNkZWZpbmUgX19O RVRfVENfR0FURV9IDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bmV0L2FjdF9hcGkuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L3RjX2FjdC90Y19nYXRlLmg+DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgdGNm Z19nYXRlX2VudHJ5IHsNCj4gPiArICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBpbmRleDsN Cj4gPiArICAgICB1OCAgICAgICAgICAgICAgICAgICAgICBnYXRlX3N0YXRlOw0KPiA+ICsgICAg IHUzMiAgICAgICAgICAgICAgICAgICAgIGludGVydmFsOw0KPiA+ICsgICAgIHMzMiAgICAgICAg ICAgICAgICAgICAgIGlwdjsNCj4gPiArICAgICBzMzIgICAgICAgICAgICAgICAgICAgICBtYXhv Y3RldHM7DQo+ID4gKyAgICAgc3RydWN0IGxpc3RfaGVhZCAgICAgICAgbGlzdDsNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgew0KPiA+ICsgICAgIHMzMiAgICAg ICAgICAgICAgICAgICAgIHRjZmdfcHJpb3JpdHk7DQo+ID4gKyAgICAgdTY0ICAgICAgICAgICAg ICAgICAgICAgdGNmZ19iYXNldGltZTsNCj4gPiArICAgICB1NjQgICAgICAgICAgICAgICAgICAg ICB0Y2ZnX2N5Y2xldGltZTsNCj4gPiArICAgICB1NjQgICAgICAgICAgICAgICAgICAgICB0Y2Zn X2N5Y2xldGltZV9leHQ7DQo+ID4gKyAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgdGNmZ19m bGFnczsNCj4gPiArICAgICBzMzIgICAgICAgICAgICAgICAgICAgICB0Y2ZnX2Nsb2NraWQ7DQo+ ID4gKyAgICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgbnVtX2VudHJpZXM7DQo+ID4gKyAgICAg c3RydWN0IGxpc3RfaGVhZCAgICAgICAgZW50cmllczsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNk ZWZpbmUgR0FURV9BQ1RfR0FURV9PUEVOICAgQklUKDApDQo+ID4gKyNkZWZpbmUgR0FURV9BQ1Rf UEVORElORyAgICAgQklUKDEpDQo+ID4gK3N0cnVjdCBnYXRlX2FjdGlvbiB7DQo+ID4gKyAgICAg c3RydWN0IHRjZl9nYXRlX3BhcmFtcyBwYXJhbTsNCj4gPiArICAgICBzcGlubG9ja190IGVudHJ5 X2xvY2s7DQo+ID4gKyAgICAgdTggY3VycmVudF9nYXRlX3N0YXR1czsNCj4gPiArICAgICBrdGlt ZV90IGN1cnJlbnRfY2xvc2VfdGltZTsNCj4gPiArICAgICB1MzIgY3VycmVudF9lbnRyeV9vY3Rl dHM7DQo+ID4gKyAgICAgczMyIGN1cnJlbnRfbWF4X29jdGV0czsNCj4gPiArICAgICBzdHJ1Y3Qg dGNmZ19nYXRlX2VudHJ5IF9fcmN1ICpuZXh0X2VudHJ5Ow0KPiA+ICsgICAgIHN0cnVjdCBocnRp bWVyIGhpdGltZXI7DQo+ID4gKyAgICAgZW51bSB0a19vZmZzZXRzIHRrX29mZnNldDsNCj4gPiAr ICAgICBzdHJ1Y3QgcmN1X2hlYWQgcmN1Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IHRj Zl9nYXRlIHsNCj4gPiArICAgICBzdHJ1Y3QgdGNfYWN0aW9uICAgICAgICAgICAgICAgIGNvbW1v bjsNCj4gPiArICAgICBzdHJ1Y3QgZ2F0ZV9hY3Rpb24gX19yY3UgICAgICAgICphY3RnOw0KPiA+ ICt9Ow0KPiA+ICsjZGVmaW5lIHRvX2dhdGUoYSkgKChzdHJ1Y3QgdGNmX2dhdGUgKilhKQ0KPiA+ ICsNCj4gPiArI2RlZmluZSBnZXRfZ2F0ZV9wYXJhbShhY3QpICgoc3RydWN0IHRjZl9nYXRlX3Bh cmFtcyAqKWFjdCkgI2RlZmluZQ0KPiA+ICtnZXRfZ2F0ZV9hY3Rpb24ocCkgKChzdHJ1Y3QgZ2F0 ZV9hY3Rpb24gKilwKQ0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvdWFwaS9saW51eC9wa3RfY2xzLmgNCj4gPiBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xz LmggaW5kZXggOWYwNmQyOWNhYjcwLi5mYzY3MmIyMzI0MzcNCj4gMTAwNjQ0DQo+ID4gLS0tIGEv aW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaA0KPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51 eC9wa3RfY2xzLmgNCj4gPiBAQCAtMTM0LDYgKzEzNCw3IEBAIGVudW0gdGNhX2lkIHsNCj4gPiAg ICAgICBUQ0FfSURfQ1RJTkZPLA0KPiA+ICAgICAgIFRDQV9JRF9NUExTLA0KPiA+ICAgICAgIFRD QV9JRF9DVCwNCj4gPiArICAgICBUQ0FfSURfR0FURSwNCj4gPiAgICAgICAvKiBvdGhlciBhY3Rp b25zIGdvIGhlcmUgKi8NCj4gPiAgICAgICBfX1RDQV9JRF9NQVggPSAyNTUNCj4gPiAgfTsNCj4g PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19nYXRlLmgNCj4gPiBi L2luY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZ2F0ZS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmYyMTRiM2E2ZDQ0Zg0KPiA+IC0tLSAvZGV2 L251bGwNCj4gPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvdGNfYWN0L3RjX2dhdGUuaA0KPiA+ IEBAIC0wLDAgKzEsNDcgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovDQo+ID4gKy8qIENvcHlyaWdodCAyMDIwIE5Y UCAqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfX0xJTlVYX1RDX0dBVEVfSA0KPiA+ICsjZGVmaW5l IF9fTElOVVhfVENfR0FURV9IDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGt0X2Nscy5o Pg0KPiA+ICsNCj4gPiArc3RydWN0IHRjX2dhdGUgew0KPiA+ICsgICAgIHRjX2dlbjsNCj4gPiAr fTsNCj4gPiArDQo+ID4gK2VudW0gew0KPiA+ICsgICAgIFRDQV9HQVRFX0VOVFJZX1VOU1BFQywN Cj4gPiArICAgICBUQ0FfR0FURV9FTlRSWV9JTkRFWCwNCj4gPiArICAgICBUQ0FfR0FURV9FTlRS WV9HQVRFLA0KPiA+ICsgICAgIFRDQV9HQVRFX0VOVFJZX0lOVEVSVkFMLA0KPiA+ICsgICAgIFRD QV9HQVRFX0VOVFJZX0lQViwNCj4gPiArICAgICBUQ0FfR0FURV9FTlRSWV9NQVhfT0NURVRTLA0K PiA+ICsgICAgIF9fVENBX0dBVEVfRU5UUllfTUFYLA0KPiA+ICt9Ow0KPiA+ICsjZGVmaW5lIFRD QV9HQVRFX0VOVFJZX01BWCAoX19UQ0FfR0FURV9FTlRSWV9NQVggLSAxKQ0KPiA+ICsNCj4gPiAr ZW51bSB7DQo+ID4gKyAgICAgVENBX0dBVEVfT05FX0VOVFJZX1VOU1BFQywNCj4gPiArICAgICBU Q0FfR0FURV9PTkVfRU5UUlksDQo+ID4gKyAgICAgX19UQ0FfR0FURV9PTkVfRU5UUllfTUFYLA0K PiA+ICt9Ow0KPiA+ICsjZGVmaW5lIFRDQV9HQVRFX09ORV9FTlRSWV9NQVggKF9fVENBX0dBVEVf T05FX0VOVFJZX01BWA0KPiAtIDEpDQo+ID4gKw0KPiA+ICtlbnVtIHsNCj4gPiArICAgICBUQ0Ff R0FURV9VTlNQRUMsDQo+ID4gKyAgICAgVENBX0dBVEVfVE0sDQo+ID4gKyAgICAgVENBX0dBVEVf UEFSTVMsDQo+ID4gKyAgICAgVENBX0dBVEVfUEFELA0KPiA+ICsgICAgIFRDQV9HQVRFX1BSSU9S SVRZLA0KPiA+ICsgICAgIFRDQV9HQVRFX0VOVFJZX0xJU1QsDQo+ID4gKyAgICAgVENBX0dBVEVf QkFTRV9USU1FLA0KPiA+ICsgICAgIFRDQV9HQVRFX0NZQ0xFX1RJTUUsDQo+ID4gKyAgICAgVENB X0dBVEVfQ1lDTEVfVElNRV9FWFQsDQo+ID4gKyAgICAgVENBX0dBVEVfRkxBR1MsDQo+ID4gKyAg ICAgVENBX0dBVEVfQ0xPQ0tJRCwNCj4gPiArICAgICBfX1RDQV9HQVRFX01BWCwNCj4gPiArfTsN Cj4gPiArI2RlZmluZSBUQ0FfR0FURV9NQVggKF9fVENBX0dBVEVfTUFYIC0gMSkNCj4gPiArDQo+ ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9uZXQvc2NoZWQvS2NvbmZpZyBiL25ldC9zY2hl ZC9LY29uZmlnIGluZGV4DQo+ID4gYmZiZWZiN2JmZjlkLi4xMzE0NTQ5Yzc1NjcgMTAwNjQ0DQo+ ID4gLS0tIGEvbmV0L3NjaGVkL0tjb25maWcNCj4gPiArKysgYi9uZXQvc2NoZWQvS2NvbmZpZw0K PiA+IEBAIC05ODEsNiArOTgxLDE5IEBAIGNvbmZpZyBORVRfQUNUX0NUDQo+ID4gICAgICAgICBU byBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlDQo+ID4g ICAgICAgICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2N0Lg0KPiA+DQo+ID4gK2NvbmZpZyBO RVRfQUNUX0dBVEUNCj4gPiArICAgICB0cmlzdGF0ZSAiRnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNv bnRyb2wgdGMgYWN0aW9uIg0KPiA+ICsgICAgIGRlcGVuZHMgb24gTkVUX0NMU19BQ1QNCj4gPiAr ICAgICBoZWxwDQo+ID4gKyAgICAgICBTYXkgWSBoZXJlIHRvIGFsbG93IHRvIGNvbnRyb2wgdGhl IGluZ3Jlc3MgZmxvdyB0byBiZSBwYXNzZWQgYXQNCj4gPiArICAgICAgIHNwZWNpZmljIHRpbWUg c2xvdCBhbmQgYmUgZHJvcHBlZCBhdCBvdGhlciBzcGVjaWZpYyB0aW1lIHNsb3QgYnkNCj4gPiAr ICAgICAgIHRoZSBnYXRlIGVudHJ5IGxpc3QuIFRoZSBtYW5pcHVsYXRpb24gd2lsbCBzaW11bGF0 ZSB0aGUgSUVFRQ0KPiA+ICsgICAgICAgODAyLjFRY2kgc3RyZWFtIGdhdGUgY29udHJvbCBiZWhh dmlvci4NCj4gPiArDQo+ID4gKyAgICAgICBJZiB1bnN1cmUsIHNheSBOLg0KPiA+ICsgICAgICAg VG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQ0KPiA+ ICsgICAgICAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9nYXRlLg0KPiA+ICsNCj4gPiAgY29u ZmlnIE5FVF9JRkVfU0tCTUFSSw0KPiA+ICAgICAgIHRyaXN0YXRlICJTdXBwb3J0IHRvIGVuY29k aW5nIGRlY29kaW5nIHNrYiBtYXJrIG9uIElGRSBhY3Rpb24iDQo+ID4gICAgICAgZGVwZW5kcyBv biBORVRfQUNUX0lGRQ0KPiA+IGRpZmYgLS1naXQgYS9uZXQvc2NoZWQvTWFrZWZpbGUgYi9uZXQv c2NoZWQvTWFrZWZpbGUgaW5kZXgNCj4gPiAzMWMzNjdhNmNkMDkuLjY2YmJmOWE5OGY5ZSAxMDA2 NDQNCj4gPiAtLS0gYS9uZXQvc2NoZWQvTWFrZWZpbGUNCj4gPiArKysgYi9uZXQvc2NoZWQvTWFr ZWZpbGUNCj4gPiBAQCAtMzAsNiArMzAsNyBAQCBvYmotJChDT05GSUdfTkVUX0lGRV9TS0JQUklP KSAgICAgICArPQ0KPiBhY3RfbWV0YV9za2JwcmlvLm8NCj4gPiAgb2JqLSQoQ09ORklHX05FVF9J RkVfU0tCVENJTkRFWCkgICAgICs9IGFjdF9tZXRhX3NrYnRjaW5kZXgubw0KPiA+ICBvYmotJChD T05GSUdfTkVUX0FDVF9UVU5ORUxfS0VZKSs9IGFjdF90dW5uZWxfa2V5Lm8NCj4gPiAgb2JqLSQo Q09ORklHX05FVF9BQ1RfQ1QpICAgICArPSBhY3RfY3Qubw0KPiA+ICtvYmotJChDT05GSUdfTkVU X0FDVF9HQVRFKSAgICs9IGFjdF9nYXRlLm8NCj4gPiAgb2JqLSQoQ09ORklHX05FVF9TQ0hfRklG TykgICArPSBzY2hfZmlmby5vDQo+ID4gIG9iai0kKENPTkZJR19ORVRfU0NIX0NCUSkgICAgKz0g c2NoX2NicS5vDQo+ID4gIG9iai0kKENPTkZJR19ORVRfU0NIX0hUQikgICAgKz0gc2NoX2h0Yi5v DQo+ID4gZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfZ2F0ZS5jIGIvbmV0L3NjaGVkL2FjdF9n YXRlLmMgbmV3IGZpbGUgbW9kZQ0KPiA+IDEwMDY0NCBpbmRleCAwMDAwMDAwMDAwMDAuLmU5MzJm NDAyYjRmMQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9uZXQvc2NoZWQvYWN0X2dhdGUu Yw0KPiA+IEBAIC0wLDAgKzEsNjQ3IEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9yLWxhdGVyDQo+ID4gKy8qIENvcHlyaWdodCAyMDIwIE5YUCAqLw0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvdHlw ZXMuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvc3RyaW5nLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvc2tidWZmLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4NCj4g PiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4N Cj4gPiArI2luY2x1ZGUgPG5ldC9hY3RfYXBpLmg+DQo+ID4gKyNpbmNsdWRlIDxuZXQvbmV0bGlu ay5oPg0KPiA+ICsjaW5jbHVkZSA8bmV0L3BrdF9jbHMuaD4NCj4gPiArI2luY2x1ZGUgPG5ldC90 Y19hY3QvdGNfZ2F0ZS5oPg0KPiA+ICsNCj4gPiArc3RhdGljIHVuc2lnbmVkIGludCBnYXRlX25l dF9pZDsNCj4gPiArc3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9nYXRlX29wczsNCj4g PiArDQo+ID4gK3N0YXRpYyBrdGltZV90IGdhdGVfZ2V0X3RpbWUoc3RydWN0IGdhdGVfYWN0aW9u ICpnYWN0KSB7DQo+ID4gKyAgICAga3RpbWVfdCBtb25vID0ga3RpbWVfZ2V0KCk7DQo+ID4gKw0K PiA+ICsgICAgIHN3aXRjaCAoZ2FjdC0+dGtfb2Zmc2V0KSB7DQo+ID4gKyAgICAgY2FzZSBUS19P RkZTX01BWDoNCj4gPiArICAgICAgICAgICAgIHJldHVybiBtb25vOw0KPiA+ICsgICAgIGRlZmF1 bHQ6DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4ga3RpbWVfbW9ub190b19hbnkobW9ubywgZ2Fj dC0+dGtfb2Zmc2V0KTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBLVElN RV9NQVg7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZ2F0ZV9nZXRfc3RhcnRfdGlt ZShzdHJ1Y3QgZ2F0ZV9hY3Rpb24gKmdhY3QsIGt0aW1lX3QNCj4gPiArKnN0YXJ0KSB7DQo+ID4g KyAgICAgc3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqcGFyYW0gPSBnZXRfZ2F0ZV9wYXJhbShnYWN0 KTsNCj4gPiArICAgICBrdGltZV90IG5vdywgYmFzZSwgY3ljbGU7DQo+ID4gKyAgICAgdTY0IG47 DQo+ID4gKw0KPiA+ICsgICAgIGJhc2UgPSBuc190b19rdGltZShwYXJhbS0+dGNmZ19iYXNldGlt ZSk7DQo+ID4gKyAgICAgbm93ID0gZ2F0ZV9nZXRfdGltZShnYWN0KTsNCj4gPiArDQo+ID4gKyAg ICAgaWYgKGt0aW1lX2FmdGVyKGJhc2UsIG5vdykpIHsNCj4gPiArICAgICAgICAgICAgICpzdGFy dCA9IGJhc2U7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiArICAgICB9DQo+ID4g Kw0KPiA+ICsgICAgIGN5Y2xlID0gcGFyYW0tPnRjZmdfY3ljbGV0aW1lOw0KPiA+ICsNCj4gPiAr ICAgICAvKiBjeWNsZSB0aW1lIHNob3VsZCBub3QgYmUgemVybyAqLw0KPiA+ICsgICAgIGlmIChX QVJOX09OKCFjeWNsZSkpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCj4gPiAr DQo+ID4gKyAgICAgbiA9IGRpdjY0X3U2NChrdGltZV9zdWJfbnMobm93LCBiYXNlKSwgY3ljbGUp Ow0KPiA+ICsgICAgICpzdGFydCA9IGt0aW1lX2FkZF9ucyhiYXNlLCAobiArIDEpICogY3ljbGUp Ow0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBn YXRlX3N0YXJ0X3RpbWVyKHN0cnVjdCBnYXRlX2FjdGlvbiAqZ2FjdCwga3RpbWVfdCBzdGFydCkN Cj4gPiArew0KPiA+ICsgICAgIGt0aW1lX3QgZXhwaXJlczsNCj4gPiArDQo+ID4gKyAgICAgZXhw aXJlcyA9IGhydGltZXJfZ2V0X2V4cGlyZXMoJmdhY3QtPmhpdGltZXIpOw0KPiA+ICsgICAgIGlm IChleHBpcmVzID09IDApDQo+ID4gKyAgICAgICAgICAgICBleHBpcmVzID0gS1RJTUVfTUFYOw0K PiA+ICsNCj4gPiArICAgICBzdGFydCA9IG1pbl90KGt0aW1lX3QsIHN0YXJ0LCBleHBpcmVzKTsN Cj4gPiArDQo+ID4gKyAgICAgaHJ0aW1lcl9zdGFydCgmZ2FjdC0+aGl0aW1lciwgc3RhcnQsIEhS VElNRVJfTU9ERV9BQlMpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3Rh cnQgZ2F0ZV90aW1lcl9mdW5jKHN0cnVjdCBocnRpbWVyICp0aW1lcikgew0KPiA+ICsgICAgIHN0 cnVjdCBnYXRlX2FjdGlvbiAqZ2FjdCA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IGdhdGVf YWN0aW9uLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoaXRpbWVyKTsNCj4gPiArICAgICBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwID0gZ2V0X2dh dGVfcGFyYW0oZ2FjdCk7DQo+ID4gKyAgICAgc3RydWN0IHRjZmdfZ2F0ZV9lbnRyeSAqbmV4dDsN Cj4gPiArICAgICBrdGltZV90IGNsb3NlX3RpbWUsIG5vdzsNCj4gPiArDQo+ID4gKyAgICAgc3Bp bl9sb2NrKCZnYWN0LT5lbnRyeV9sb2NrKTsNCj4gPiArDQo+ID4gKyAgICAgbmV4dCA9IHJjdV9k ZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZ2FjdC0+bmV4dF9lbnRyeSwNCj4gPiArDQo+ID4gKyBsb2Nr ZGVwX2lzX2hlbGQoJmdhY3QtPmVudHJ5X2xvY2spKTsNCj4gPiArDQo+ID4gKyAgICAgLyogY3lj bGUgc3RhcnQsIGNsZWFyIHBlbmRpbmcgYml0LCBjbGVhciB0b3RhbCBvY3RldHMgKi8NCj4gPiAr ICAgICBnYWN0LT5jdXJyZW50X2dhdGVfc3RhdHVzID0gbmV4dC0+Z2F0ZV9zdGF0ZSA/DQo+IEdB VEVfQUNUX0dBVEVfT1BFTiA6IDA7DQo+ID4gKyAgICAgZ2FjdC0+Y3VycmVudF9lbnRyeV9vY3Rl dHMgPSAwOw0KPiA+ICsgICAgIGdhY3QtPmN1cnJlbnRfbWF4X29jdGV0cyA9IG5leHQtPm1heG9j dGV0czsNCj4gPiArDQo+ID4gKyAgICAgZ2FjdC0+Y3VycmVudF9jbG9zZV90aW1lID0ga3RpbWVf YWRkX25zKGdhY3QtPmN1cnJlbnRfY2xvc2VfdGltZSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC0+aW50ZXJ2YWwpOw0KPiA+ICsNCj4gPiAr ICAgICBjbG9zZV90aW1lID0gZ2FjdC0+Y3VycmVudF9jbG9zZV90aW1lOw0KPiA+ICsNCj4gPiAr ICAgICBpZiAobGlzdF9pc19sYXN0KCZuZXh0LT5saXN0LCAmcC0+ZW50cmllcykpDQo+ID4gKyAg ICAgICAgICAgICBuZXh0ID0gbGlzdF9maXJzdF9lbnRyeSgmcC0+ZW50cmllcywNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0Y2ZnX2dhdGVfZW50cnks IGxpc3QpOw0KPiA+ICsgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgIG5leHQgPSBsaXN0X25l eHRfZW50cnkobmV4dCwgbGlzdCk7DQo+ID4gKw0KPiA+ICsgICAgIG5vdyA9IGdhdGVfZ2V0X3Rp bWUoZ2FjdCk7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChrdGltZV9hZnRlcihub3csIGNsb3NlX3Rp bWUpKSB7DQo+ID4gKyAgICAgICAgICAgICBrdGltZV90IGN5Y2xlLCBiYXNlOw0KPiA+ICsgICAg ICAgICAgICAgdTY0IG47DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgY3ljbGUgPSBwLT50Y2Zn X2N5Y2xldGltZTsNCj4gPiArICAgICAgICAgICAgIGJhc2UgPSBuc190b19rdGltZShwLT50Y2Zn X2Jhc2V0aW1lKTsNCj4gPiArICAgICAgICAgICAgIG4gPSBkaXY2NF91NjQoa3RpbWVfc3ViX25z KG5vdywgYmFzZSksIGN5Y2xlKTsNCj4gPiArICAgICAgICAgICAgIGNsb3NlX3RpbWUgPSBrdGlt ZV9hZGRfbnMoYmFzZSwgKG4gKyAxKSAqIGN5Y2xlKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgIHJjdV9hc3NpZ25fcG9pbnRlcihnYWN0LT5uZXh0X2VudHJ5LCBuZXh0KTsNCj4gPiAr ICAgICBzcGluX3VubG9jaygmZ2FjdC0+ZW50cnlfbG9jayk7DQo+ID4gKw0KPiA+ICsgICAgIGhy dGltZXJfc2V0X2V4cGlyZXMoJmdhY3QtPmhpdGltZXIsIGNsb3NlX3RpbWUpOw0KPiA+ICsNCj4g PiArICAgICByZXR1cm4gSFJUSU1FUl9SRVNUQVJUOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IHRjZl9nYXRlX2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNf YWN0aW9uICphLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGNmX3Jlc3VsdCAq cmVzKSB7DQo+ID4gKyAgICAgc3RydWN0IHRjZl9nYXRlICpnID0gdG9fZ2F0ZShhKTsNCj4gPiAr ICAgICBzdHJ1Y3QgZ2F0ZV9hY3Rpb24gKmdhY3Q7DQo+ID4gKyAgICAgaW50IGFjdGlvbjsNCj4g PiArDQo+ID4gKyAgICAgdGNmX2xhc3R1c2VfdXBkYXRlKCZnLT50Y2ZfdG0pOw0KPiA+ICsgICAg IGJzdGF0c19jcHVfdXBkYXRlKHRoaXNfY3B1X3B0cihnLT5jb21tb24uY3B1X2JzdGF0cyksIHNr Yik7DQo+ID4gKw0KPiA+ICsgICAgIGFjdGlvbiA9IFJFQURfT05DRShnLT50Y2ZfYWN0aW9uKTsN Cj4gPiArICAgICByY3VfcmVhZF9sb2NrKCk7DQo+ID4gKyAgICAgZ2FjdCA9IHJjdV9kZXJlZmVy ZW5jZV9iaChnLT5hY3RnKTsNCj4gPiArICAgICBpZiAodW5saWtlbHkoZ2FjdC0+Y3VycmVudF9n YXRlX3N0YXR1cyAmIEdBVEVfQUNUX1BFTkRJTkcpKSB7DQo+ID4gKyAgICAgICAgICAgICByY3Vf cmVhZF91bmxvY2soKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBhY3Rpb247DQo+ID4gKyAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICBpZiAoIShnYWN0LT5jdXJyZW50X2dhdGVfc3RhdHVzICYg R0FURV9BQ1RfR0FURV9PUEVOKSkNCj4gPiArICAgICAgICAgICAgIGdvdG8gZHJvcDsNCj4gPiAr DQo+ID4gKyAgICAgaWYgKGdhY3QtPmN1cnJlbnRfbWF4X29jdGV0cyA+PSAwKSB7DQo+ID4gKyAg ICAgICAgICAgICBnYWN0LT5jdXJyZW50X2VudHJ5X29jdGV0cyArPSBxZGlzY19wa3RfbGVuKHNr Yik7DQo+ID4gKyAgICAgICAgICAgICBpZiAoZ2FjdC0+Y3VycmVudF9lbnRyeV9vY3RldHMgPiBn YWN0LT5jdXJyZW50X21heF9vY3RldHMpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcXN0 YXRzX292ZXJsaW1pdF9pbmModGhpc19jcHVfcHRyKGctPmNvbW1vbi5jcHVfcXN0YXRzKSk7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZHJvcDsNCj4gPiArICAgICAgICAgICAgIH0N Cj4gPiArICAgICB9DQo+ID4gKyAgICAgcmN1X3JlYWRfdW5sb2NrKCk7DQo+ID4gKw0KPiA+ICsg ICAgIHJldHVybiBhY3Rpb247DQo+ID4gK2Ryb3A6DQo+ID4gKyAgICAgcmN1X3JlYWRfdW5sb2Nr KCk7DQo+ID4gKyAgICAgcXN0YXRzX2Ryb3BfaW5jKHRoaXNfY3B1X3B0cihnLT5jb21tb24uY3B1 X3FzdGF0cykpOw0KPiA+ICsgICAgIHJldHVybiBUQ19BQ1RfU0hPVDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGVudHJ5X3BvbGljeVtUQ0FfR0FU RV9FTlRSWV9NQVggKyAxXQ0KPiA9IHsNCj4gPiArICAgICBbVENBX0dBVEVfRU5UUllfSU5ERVhd ICAgICAgICAgID0geyAudHlwZSA9IE5MQV9VMzIgfSwNCj4gPiArICAgICBbVENBX0dBVEVfRU5U UllfR0FURV0gICAgICAgICAgID0geyAudHlwZSA9IE5MQV9GTEFHIH0sDQo+ID4gKyAgICAgW1RD QV9HQVRFX0VOVFJZX0lOVEVSVkFMXSAgICAgICA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sDQo+ID4g KyAgICAgW1RDQV9HQVRFX0VOVFJZX0lQVl0gICAgICAgICAgICA9IHsgLnR5cGUgPSBOTEFfUzMy IH0sDQo+ID4gKyAgICAgW1RDQV9HQVRFX0VOVFJZX01BWF9PQ1RFVFNdICAgICA9IHsgLnR5cGUg PSBOTEFfUzMyIH0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG5s YV9wb2xpY3kgZ2F0ZV9wb2xpY3lbVENBX0dBVEVfTUFYICsgMV0gPSB7DQo+ID4gKyAgICAgW1RD QV9HQVRFX1BBUk1TXSAgICAgICAgICAgICAgICA9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgdGNf Z2F0ZSksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnR5 cGUgPSBOTEFfRVhBQ1RfTEVOIH0sDQo+ID4gKyAgICAgW1RDQV9HQVRFX1BSSU9SSVRZXSAgICAg ICAgICAgICA9IHsgLnR5cGUgPSBOTEFfUzMyIH0sDQo+ID4gKyAgICAgW1RDQV9HQVRFX0VOVFJZ X0xJU1RdICAgICAgICAgICA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sDQo+ID4gKyAgICAgW1RD QV9HQVRFX0JBU0VfVElNRV0gICAgICAgICAgICA9IHsgLnR5cGUgPSBOTEFfVTY0IH0sDQo+ID4g KyAgICAgW1RDQV9HQVRFX0NZQ0xFX1RJTUVdICAgICAgICAgICA9IHsgLnR5cGUgPSBOTEFfVTY0 IH0sDQo+ID4gKyAgICAgW1RDQV9HQVRFX0NZQ0xFX1RJTUVfRVhUXSAgICAgICA9IHsgLnR5cGUg PSBOTEFfVTY0IH0sDQo+ID4gKyAgICAgW1RDQV9HQVRFX0ZMQUdTXSAgICAgICAgICAgICAgICA9 IHsgLnR5cGUgPSBOTEFfVTMyIH0sDQo+ID4gKyAgICAgW1RDQV9HQVRFX0NMT0NLSURdICAgICAg ICAgICAgICA9IHsgLnR5cGUgPSBOTEFfUzMyIH0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IGZpbGxfZ2F0ZV9lbnRyeShzdHJ1Y3QgbmxhdHRyICoqdGIsIHN0cnVjdCB0Y2ZnX2dh dGVfZW50cnkgKmVudHJ5LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0 bGlua19leHRfYWNrICpleHRhY2spIHsNCj4gPiArICAgICB1MzIgaW50ZXJ2YWwgPSAwOw0KPiA+ ICsNCj4gPiArICAgICBlbnRyeS0+Z2F0ZV9zdGF0ZSA9IG5sYV9nZXRfZmxhZyh0YltUQ0FfR0FU RV9FTlRSWV9HQVRFXSk7DQo+ID4gKw0KPiA+ICsgICAgIGlmICh0YltUQ0FfR0FURV9FTlRSWV9J TlRFUlZBTF0pDQo+ID4gKyAgICAgICAgICAgICBpbnRlcnZhbCA9IG5sYV9nZXRfdTMyKHRiW1RD QV9HQVRFX0VOVFJZX0lOVEVSVkFMXSk7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChpbnRlcnZhbCA9 PSAwKSB7DQo+ID4gKyAgICAgICAgICAgICBOTF9TRVRfRVJSX01TRyhleHRhY2ssICJJbnZhbGlk IGludGVydmFsIGZvciBzY2hlZHVsZSBlbnRyeSIpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBlbnRyeS0+aW50ZXJ2YWwg PSBpbnRlcnZhbDsNCj4gPiArDQo+ID4gKyAgICAgaWYgKHRiW1RDQV9HQVRFX0VOVFJZX0lQVl0p DQo+ID4gKyAgICAgICAgICAgICBlbnRyeS0+aXB2ID0gbmxhX2dldF9zMzIodGJbVENBX0dBVEVf RU5UUllfSVBWXSk7DQo+ID4gKyAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgZW50cnktPmlw diA9IC0xOw0KPiA+ICsNCj4gPiArICAgICBpZiAodGJbVENBX0dBVEVfRU5UUllfTUFYX09DVEVU U10pDQo+ID4gKyAgICAgICAgICAgICBlbnRyeS0+bWF4b2N0ZXRzID0NCj4gbmxhX2dldF9zMzIo dGJbVENBX0dBVEVfRU5UUllfTUFYX09DVEVUU10pOw0KPiA+ICsgICAgIGVsc2UNCj4gPiArICAg ICAgICAgICAgIGVudHJ5LT5tYXhvY3RldHMgPSAtMTsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJu IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgcGFyc2VfZ2F0ZV9lbnRyeShzdHJ1 Y3QgbmxhdHRyICpuLCBzdHJ1Y3QgIHRjZmdfZ2F0ZV9lbnRyeQ0KPiAqZW50cnksDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sg KmV4dGFjaykgew0KPiA+ICsgICAgIHN0cnVjdCBubGF0dHIgKnRiW1RDQV9HQVRFX0VOVFJZX01B WCArIDFdID0geyB9Ow0KPiA+ICsgICAgIGludCBlcnI7DQo+ID4gKw0KPiA+ICsgICAgIGVyciA9 IG5sYV9wYXJzZV9uZXN0ZWQodGIsIFRDQV9HQVRFX0VOVFJZX01BWCwgbiwgZW50cnlfcG9saWN5 LA0KPiBleHRhY2spOw0KPiA+ICsgICAgIGlmIChlcnIgPCAwKSB7DQo+ID4gKyAgICAgICAgICAg ICBOTF9TRVRfRVJSX01TRyhleHRhY2ssICJDb3VsZCBub3QgcGFyc2UgbmVzdGVkIGVudHJ5Iik7 DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICB9DQo+ID4gKw0K PiA+ICsgICAgIGVudHJ5LT5pbmRleCA9IGluZGV4Ow0KPiA+ICsNCj4gPiArICAgICByZXR1cm4g ZmlsbF9nYXRlX2VudHJ5KHRiLCBlbnRyeSwgZXh0YWNrKTsgfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludCBwYXJzZV9nYXRlX2xpc3Qoc3RydWN0IG5sYXR0ciAqbGlzdF9hdHRyLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpzY2hlZCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKSB7 DQo+ID4gKyAgICAgc3RydWN0IHRjZmdfZ2F0ZV9lbnRyeSAqZW50cnksICplOw0KPiA+ICsgICAg IHN0cnVjdCBubGF0dHIgKm47DQo+ID4gKyAgICAgaW50IGVyciwgcmVtOw0KPiA+ICsgICAgIGlu dCBpID0gMDsNCj4gPiArDQo+ID4gKyAgICAgaWYgKCFsaXN0X2F0dHIpDQo+ID4gKyAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgbmxhX2Zvcl9lYWNoX25lc3Rl ZChuLCBsaXN0X2F0dHIsIHJlbSkgew0KPiA+ICsgICAgICAgICAgICAgaWYgKG5sYV90eXBlKG4p ICE9IFRDQV9HQVRFX09ORV9FTlRSWSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBOTF9T RVRfRVJSX01TRyhleHRhY2ssICJBdHRyaWJ1dGUgaXNuJ3QgdHlwZSAnZW50cnknIik7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICAgICAgICAgIGVudHJ5ID0ga3phbGxvYyhzaXplb2YoKmVudHJ5KSwgR0ZQ X0tFUk5FTCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoIWVudHJ5KSB7DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgIk5vdCBlbm91Z2ggbWVtb3J5IGZv ciBlbnRyeSIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBlcnIgPSAtRU5PTUVNOw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlbGVhc2VfbGlzdDsNCj4gPiArICAgICAgICAg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBlcnIgPSBwYXJzZV9nYXRlX2VudHJ5KG4s IGVudHJ5LCBpLCBleHRhY2spOw0KPiA+ICsgICAgICAgICAgICAgaWYgKGVyciA8IDApIHsNCj4g PiArICAgICAgICAgICAgICAgICAgICAga2ZyZWUoZW50cnkpOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBnb3RvIHJlbGVhc2VfbGlzdDsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArDQo+ ID4gKyAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZlbnRyeS0+bGlzdCwgJnNjaGVkLT5lbnRy aWVzKTsNCj4gPiArICAgICAgICAgICAgIGkrKzsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgIHNjaGVkLT5udW1fZW50cmllcyA9IGk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBpOw0K PiA+ICsNCj4gPiArcmVsZWFzZV9saXN0Og0KPiA+ICsgICAgIGxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShlbnRyeSwgZSwgJnNjaGVkLT5lbnRyaWVzLCBsaXN0KSB7DQo+ID4gKyAgICAgICAgICAg ICBsaXN0X2RlbCgmZW50cnktPmxpc3QpOw0KPiA+ICsgICAgICAgICAgICAga2ZyZWUoZW50cnkp Ow0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIGVycjsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludCB0Y2ZfZ2F0ZV9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0 IG5sYXR0ciAqbmxhLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5sYXR0ciAq ZXN0LCBzdHJ1Y3QgdGNfYWN0aW9uICoqYSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGlu dCBvdnIsIGludCBiaW5kLCBib29sIHJ0bmxfaGVsZCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1MzIgZmxhZ3MsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spIHsNCj4gPiArICAgICBzdHJ1 Y3QgdGNfYWN0aW9uX25ldCAqdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGdhdGVfbmV0X2lkKTsNCj4g PiArICAgICBlbnVtIHRrX29mZnNldHMgdGtfb2Zmc2V0ID0gVEtfT0ZGU19UQUk7DQo+ID4gKyAg ICAgc3RydWN0IG5sYXR0ciAqdGJbVENBX0dBVEVfTUFYICsgMV07DQo+ID4gKyAgICAgc3RydWN0 IHRjZl9jaGFpbiAqZ290b19jaCA9IE5VTEw7DQo+ID4gKyAgICAgc3RydWN0IHRjZmdfZ2F0ZV9l bnRyeSAqbmV4dDsNCj4gPiArICAgICBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwOw0KPiA+ICsg ICAgIHN0cnVjdCBnYXRlX2FjdGlvbiAqZ2FjdDsNCj4gPiArICAgICBzMzIgY2xvY2tpZCA9IENM T0NLX1RBSTsNCj4gPiArICAgICBzdHJ1Y3QgdGNfZ2F0ZSAqcGFybTsNCj4gPiArICAgICBzdHJ1 Y3QgdGNmX2dhdGUgKmc7DQo+ID4gKyAgICAgaW50IHJldCA9IDAsIGVycjsNCj4gPiArICAgICB1 NjQgYmFzZXRpbWUgPSAwOw0KPiA+ICsgICAgIHUzMiBnZmxhZ3MgPSAwOw0KPiA+ICsgICAgIHMz MiBwcmlvID0gLTE7DQo+ID4gKyAgICAga3RpbWVfdCBzdGFydDsNCj4gPiArICAgICB1MzIgaW5k ZXg7DQo+ID4gKw0KPiA+ICsgICAgIGlmICghbmxhKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgIGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIFRD QV9HQVRFX01BWCwgbmxhLCBnYXRlX3BvbGljeSwgZXh0YWNrKTsNCj4gPiArICAgICBpZiAoZXJy IDwgMCkNCj4gPiArICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+ID4gKw0KPiA+ICsgICAgIGlm ICghdGJbVENBX0dBVEVfUEFSTVNdKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+ID4gKyAgICAgcGFybSA9IG5sYV9kYXRhKHRiW1RDQV9HQVRFX1BBUk1TXSk7DQo+ID4gKyAg ICAgaW5kZXggPSBwYXJtLT5pbmRleDsNCj4gPiArICAgICBlcnIgPSB0Y2ZfaWRyX2NoZWNrX2Fs bG9jKHRuLCAmaW5kZXgsIGEsIGJpbmQpOw0KPiA+ICsgICAgIGlmIChlcnIgPCAwKQ0KPiA+ICsg ICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4gPiArDQo+ID4gKyAgICAgaWYgKGVyciAmJiBiaW5k KQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsgICAgIGlmICghZXJy KSB7DQo+ID4gKyAgICAgICAgICAgICByZXQgPSB0Y2ZfaWRyX2NyZWF0ZV9mcm9tX2ZsYWdzKHRu LCBpbmRleCwgZXN0LCBhLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmYWN0X2dhdGVfb3BzLCBiaW5kLCBmbGFncyk7DQo+ID4gKyAgICAgICAgICAg ICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHRjZl9pZHJfY2xlYW51cCh0 biwgaW5kZXgpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsg ICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIHJldCA9IEFDVF9QX0NSRUFU RUQ7DQo+ID4gKyAgICAgfSBlbHNlIGlmICghb3ZyKSB7DQo+ID4gKyAgICAgICAgICAgICB0Y2Zf aWRyX3JlbGVhc2UoKmEsIGJpbmQpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FRVhJU1Q7 DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBpZiAodGJbVENBX0dBVEVfUFJJT1JJVFld KQ0KPiA+ICsgICAgICAgICAgICAgcHJpbyA9IG5sYV9nZXRfczMyKHRiW1RDQV9HQVRFX1BSSU9S SVRZXSk7DQo+ID4gKw0KPiA+ICsgICAgIGlmICh0YltUQ0FfR0FURV9CQVNFX1RJTUVdKQ0KPiA+ ICsgICAgICAgICAgICAgYmFzZXRpbWUgPSBubGFfZ2V0X3U2NCh0YltUQ0FfR0FURV9CQVNFX1RJ TUVdKTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKHRiW1RDQV9HQVRFX0ZMQUdTXSkNCj4gPiArICAg ICAgICAgICAgIGdmbGFncyA9IG5sYV9nZXRfdTMyKHRiW1RDQV9HQVRFX0ZMQUdTXSk7DQo+ID4g Kw0KPiA+ICsgICAgIGlmICh0YltUQ0FfR0FURV9DTE9DS0lEXSkgew0KPiA+ICsgICAgICAgICAg ICAgY2xvY2tpZCA9IG5sYV9nZXRfczMyKHRiW1RDQV9HQVRFX0NMT0NLSURdKTsNCj4gPiArICAg ICAgICAgICAgIHN3aXRjaCAoY2xvY2tpZCkgew0KPiA+ICsgICAgICAgICAgICAgY2FzZSBDTE9D S19SRUFMVElNRToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdGtfb2Zmc2V0ID0gVEtfT0ZG U19SRUFMOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAg ICAgIGNhc2UgQ0xPQ0tfTU9OT1RPTklDOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB0a19v ZmZzZXQgPSBUS19PRkZTX01BWDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4gKyAgICAgICAgICAgICBjYXNlIENMT0NLX0JPT1RUSU1FOg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICB0a19vZmZzZXQgPSBUS19PRkZTX0JPT1Q7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgY2FzZSBDTE9DS19UQUk6DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHRrX29mZnNldCA9IFRLX09GRlNfVEFJOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgIkludmFsaWQgJ2Nsb2NraWQn Iik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVsZWFzZV9pZHI7DQo+ID4gKyAg ICAgICAgICAgICB9DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBlcnIgPSB0Y2ZfYWN0 aW9uX2NoZWNrX2N0cmxhY3QocGFybS0+YWN0aW9uLCB0cCwgJmdvdG9fY2gsIGV4dGFjayk7DQo+ ID4gKyAgICAgaWYgKGVyciA8IDApDQo+ID4gKyAgICAgICAgICAgICBnb3RvIHJlbGVhc2VfaWRy Ow0KPiA+ICsNCj4gPiArICAgICBnID0gdG9fZ2F0ZSgqYSk7DQo+ID4gKw0KPiA+ICsgICAgIGdh Y3QgPSBremFsbG9jKHNpemVvZigqZ2FjdCksIEdGUF9LRVJORUwpOw0KPiA+ICsgICAgIGlmICgh Z2FjdCkgew0KPiA+ICsgICAgICAgICAgICAgZXJyID0gLUVOT01FTTsNCj4gPiArICAgICAgICAg ICAgIGdvdG8gcHV0X2NoYWluOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgcCA9IGdl dF9nYXRlX3BhcmFtKGdhY3QpOw0KPiA+ICsNCj4gPiArICAgICBJTklUX0xJU1RfSEVBRCgmcC0+ ZW50cmllcyk7DQo+ID4gKyAgICAgaWYgKHRiW1RDQV9HQVRFX0VOVFJZX0xJU1RdKSB7DQo+ID4g KyAgICAgICAgICAgICBlcnIgPSBwYXJzZV9nYXRlX2xpc3QodGJbVENBX0dBVEVfRU5UUllfTElT VF0sIHAsIGV4dGFjayk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoZXJyIDwgMCkNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgZ290byByZWxlYXNlX21lbTsNCj4gPiArICAgICB9DQo+ID4gKw0K PiA+ICsgICAgIGlmICh0YltUQ0FfR0FURV9DWUNMRV9USU1FXSkgew0KPiA+ICsgICAgICAgICAg ICAgcC0+dGNmZ19jeWNsZXRpbWUgPSBubGFfZ2V0X3U2NCh0YltUQ0FfR0FURV9DWUNMRV9USU1F XSk7DQo+ID4gKyAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgIHN0cnVjdCB0Y2ZnX2dh dGVfZW50cnkgKmVudHJ5Ow0KPiA+ICsgICAgICAgICAgICAga3RpbWVfdCBjeWNsZSA9IDA7DQo+ ID4gKw0KPiA+ICsgICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJnAtPmVu dHJpZXMsIGxpc3QpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGN5Y2xlID0ga3RpbWVfYWRk X25zKGN5Y2xlLCBlbnRyeS0+aW50ZXJ2YWwpOw0KPiA+ICsgICAgICAgICAgICAgcC0+dGNmZ19j eWNsZXRpbWUgPSBjeWNsZTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGlmICh0YltU Q0FfR0FURV9DWUNMRV9USU1FX0VYVF0pDQo+ID4gKyAgICAgICAgICAgICBwLT50Y2ZnX2N5Y2xl dGltZV9leHQgPQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBubGFfZ2V0X3U2NCh0YltUQ0Ff R0FURV9DWUNMRV9USU1FX0VYVF0pOw0KPiA+ICsNCj4gPiArICAgICBwLT50Y2ZnX3ByaW9yaXR5 ID0gcHJpbzsNCj4gPiArICAgICBwLT50Y2ZnX2Jhc2V0aW1lID0gYmFzZXRpbWU7DQo+ID4gKyAg ICAgcC0+dGNmZ19jbG9ja2lkID0gY2xvY2tpZDsNCj4gPiArICAgICBwLT50Y2ZnX2ZsYWdzID0g Z2ZsYWdzOw0KPiA+ICsNCj4gPiArICAgICBnYWN0LT50a19vZmZzZXQgPSB0a19vZmZzZXQ7DQo+ ID4gKyAgICAgc3Bpbl9sb2NrX2luaXQoJmdhY3QtPmVudHJ5X2xvY2spOw0KPiA+ICsgICAgIGhy dGltZXJfaW5pdCgmZ2FjdC0+aGl0aW1lciwgY2xvY2tpZCwgSFJUSU1FUl9NT0RFX0FCUyk7DQo+ ID4gKyAgICAgZ2FjdC0+aGl0aW1lci5mdW5jdGlvbiA9IGdhdGVfdGltZXJfZnVuYzsNCj4gPiAr DQo+IA0KPiBPbmUgaWRlYSB0aGF0IGp1c3QgaGFwcGVuZWQsIGlmIHlvdSBmaW5kIGEgd2F5IHRv IGVuYWJsZSBSWCB0aW1lc3RhbXBpbmcNCj4gYW5kIGNhbiByZWx5IHRoYXQgYWxsIHBhY2tldHMg aGF2ZSBhIHRpbWVzdGFtcCwgdGhlIGNvZGUgY2FuIHNpbXBsaWZpZWQgYQ0KPiBsb3QuIFlvdSB3 b3VsZG4ndCBuZWVkIGFueSBocnRpbWVycywgYW5kIGRlY2lkaW5nIHRvIGRyb3Agb3Igbm90IGEg cGFja2V0DQo+IGJlY29tZXMgYSBjb3VwbGUgb2YgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMuIFNl ZW1zIHdvcnRoIGEgdGhvdWdodC4NCg0KVGhhbmtzIGZvciB0aGUgZGlmZmVyZW50IGlkZWFzLiBU aGUgYmFzaWMgcHJvYmxlbSBpcyB3ZSBuZWVkIHRvIGtub3cgbm93IGlzIGEgY2xvc2UgdGltZSBv ciBvcGVuIHRpbWUgaW4gYWN0aW9uLiBCdXQgSSBzdGlsbCBkb24ndCBrbm93IGEgYmV0dGVyIHdh eSB0aGFuIGhydGltZXIgdG8gc2V0IHRoZSBmbGFnLg0KDQo+IA0KPiBUaGUgcmVhbCBxdWVzdGlv biBpczogaWYgcmVxdWlyaW5nIGZvciB0aGUgZHJpdmVyIHRvIHN1cHBvcnQgYXQgbGVhc3Qgc29m dHdhcmUNCj4gUlggdGltZXN0YW1waW5nIGlzIGV4Y2Vzc2l2ZSAoZG9lc24ndCBzZWVtIHNvIHRv IG1lKS4NCg0KSSB1bmRlcnN0YW5kLg0KDQo+IA0KPiANCj4gQ2hlZXJzLA0KPiAtLQ0KPiBWaW5p Y2l1cw0KDQpUaGFua3MgYSBsb3QhDQoNCkJyLA0KUG8gTGl1DQo=