From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 12DB2A04C7; Tue, 15 Sep 2020 13:30:28 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C3FC51BE8E; Tue, 15 Sep 2020 13:30:26 +0200 (CEST) Received: from hqnvemgate25.nvidia.com (hqnvemgate25.nvidia.com [216.228.121.64]) by dpdk.org (Postfix) with ESMTP id B335DE07 for ; Tue, 15 Sep 2020 13:30:24 +0200 (CEST) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate25.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Tue, 15 Sep 2020 04:29:36 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Tue, 15 Sep 2020 04:30:23 -0700 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Tue, 15 Sep 2020 04:30:23 -0700 Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL109.nvidia.com (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 15 Sep 2020 11:30:18 +0000 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.172) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Tue, 15 Sep 2020 11:30:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UzjnywgzgH1AK7mSrzXwnHE7IY3Hm+skhyYHw06jgXOg59ub7/wvTIOfxEWocaIME/PnJuBSF9/UdrjiwB0AqXGuz3/lIaxxxYd10aMweFalNMm+SbcPVHjZZZhmVF2pVH5jnmg/3ydKNAUZuAh+wYbC88qgZKNGBy4oSyGD+fJjd78TyORUS2l8xtUEuon6zjYFgNSob0sZyd+huS2nyvTRaNMgt5GuQRHwtrUM0ofGmFq22KB7xpUc8uohcaFXp738XQdGG8e75zmr+izeuldOQI/+2WE6j/bspdbe0xEokZXB55AweTpgxusiCddBRnUehwNpompHBgBbsv/R6w== 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=VoMT8sPDiTjpUcGsn4H6JQV5WPm1JYXst38sMx15fdc=; b=kssimzHGrJdR9RCoLrv5iC/ushGZqfZjdaDHqag6QEAVNSlODq25rEYcmBgPJMGOGGSFsYN/eyEq0Tll8AHQ/a0dhIqLObydhVxd0xw7reTJFVA26A+hMWAbFVpXneo5ZcdCEg/agKXKzkTLzxq09S3PVya5odu00iv6QMHYqk5NOpc5cV90EAb4AsipZQbt5chVgMS103xVzGyELKXkrqfMYiI0h9E5yEklDsjzVG79rGomO0yElGjhBV/7xCCBXqdhT1rma4RkdbUy5h3pJnDP/4J490kdN7pmt5ysranRjDl0nOLXy1q26WAx5kCHOEPN438gj70ZRJrexZazDA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none Received: from MWHPR1201MB2525.namprd12.prod.outlook.com (2603:10b6:300:e0::19) by MW3PR12MB4490.namprd12.prod.outlook.com (2603:10b6:303:2f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.16; Tue, 15 Sep 2020 11:30:16 +0000 Received: from MWHPR1201MB2525.namprd12.prod.outlook.com ([fe80::3ccb:ec09:9346:54b1]) by MWHPR1201MB2525.namprd12.prod.outlook.com ([fe80::3ccb:ec09:9346:54b1%7]) with mapi id 15.20.3370.019; Tue, 15 Sep 2020 11:30:16 +0000 From: Andrey Vesnovaty To: Andrew Rybchenko , Neil Horman , NBU-Contact-Thomas Monjalon , Ferruh Yigit , "jerinj@marvell.com" , Ori Kam , Slava Ovsiienko CC: "Kinsella, Ray" , "dev@dpdk.org" , "jerinjacobk@gmail.com" , "stephen@networkplumber.org" , "bruce.richardson@intel.com" Thread-Topic: [dpdk-dev] [PATCH v2 1/6] ethdev: add flow shared action API Thread-Index: AQHWacupaT9pTMB51EO+j0+LmP7eI6lpy0Xw Date: Tue, 15 Sep 2020 11:30:16 +0000 Message-ID: References: <20200708204015.24429-2-andreyv@mellanox.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: solarflare.com; dkim=none (message not signed) header.d=none;solarflare.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [87.71.167.214] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e527317f-96d1-44a3-9a1e-08d8596ab823 x-ms-traffictypediagnostic: MW3PR12MB4490: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5236; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qBDsYkU5VsW2kKyPJNAEP4DjsHkgs+G74mG9Icj/n3jgtsuguCoYEE/iy+MzrLjfPrVe7kH9Vr9Wu2cD4ZKJR9U0Wp1BiH46RndsRiuUyzPb3VQP0C81tS8KwflbBFWh/YISYayNNDPuvlvb5hsalACKI3aUNExKGYXuzIjyI71oU3v/jWajC5eIKdSTBgnguuzVmgUNVP1scvJvNmo/NweZmKC2r3j3E3uoe8YQL6VZ4BtPFqZZjxgxGclhIBIpdWJ/USc9Iv1ZI3q2Kx2OKfA8lz1iiMv5sX3CliPbJGoKscFH4fFlZu4n9YHwSoAFyxDwVaJNeeu+SRIKdGSJhAQFL82p9WepDYPm0U/xEiWnpuUp+IFta2CK9wcrq56SBaLKH+FJn1eVNGB/hiMgMWTrf2bNrlCQu+xQa9DB4SqKSd0X1krEqocJVAghtR+Vc5yhwrazHT6yvuVgit88Aw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1201MB2525.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(376002)(396003)(366004)(39860400002)(346002)(2906002)(8936002)(83380400001)(71200400001)(7416002)(8676002)(76116006)(86362001)(64756008)(66556008)(66946007)(66446008)(966005)(66476007)(4326008)(110136005)(54906003)(52536014)(7696005)(30864003)(5660300002)(33656002)(26005)(6636002)(186003)(9686003)(55016002)(53546011)(6506007)(478600001)(316002)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: kzwzPd/hddx8GMUZbk6Wi3HhZ2fw8GB5O9F9KRa5lneOjxqPztQ4qcg5jQ3nQaum9xmwxB9iYvkymmVahogEAknUmcnVFVhzTe5EY1dAyEMei1tFH9++rQ60t5QV8oni2F17wN2BMtUFa7adsTYJmCLo3OrreILiXjMK2hvFJ20NQRwhWCc7xTnnkyn2xPZJs7nT7V2oEiTKKA1yl3OuRc//BcWasGl7VnJJovmm10HcieNpsrhrRovLVbo0ydgydJ5Ellde0wBm3eFZXmjUUefq32vOYxfiJUe3zd44GJStl0iOzTdxuzO/QD8CMytvc33TG4WGywX06U/e200uWSn0makwp38nRA/csDiBgpCvOG33p0BC52jenwp5lInnLSI9+m8LoTcPFgon6p40B0QPeE5wc6ntDzE2ENRRiDsYO+Xl/iAVrrLMEWqJpH/SY/g81cuYel6nS86lYzFj0OeN4CxgRpNSZNHG8fjmRTrI1rfZaB4PwtA6EnRcAn632Jfz3RN/CuXV4NlfknP/oUXTYLrDzcZfBr4ulsaa7Q7qwpdMRgiNrH4bbP0FI6Z7i3mKtibq/6Qnp4QMN/IkyG/ZelR+3857oxnryVykZkdGpNeJgQghtR4Q60fr/XfN5vzAWP9zLpZBtfOOIuLNqw== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR1201MB2525.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e527317f-96d1-44a3-9a1e-08d8596ab823 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Sep 2020 11:30:16.1492 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Q8xCUtLto0z0AjvgfT9bY0RHadKbL5gL1uzPnvlKnkxJmDrLTYH0UodYCAs77WUgdMV6RHOrwnloTPOsUJnN4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4490 X-OriginatorOrg: Nvidia.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1600169376; bh=VoMT8sPDiTjpUcGsn4H6JQV5WPm1JYXst38sMx15fdc=; h=X-PGP-Universal:ARC-Seal:ARC-Message-Signature: ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic: Thread-Index:Date:Message-ID:References:In-Reply-To: Accept-Language:Content-Language:X-MS-Has-Attach: X-MS-TNEF-Correlator:authentication-results:x-originating-ip: x-ms-publictraffictype:x-ms-office365-filtering-correlation-id: x-ms-traffictypediagnostic:x-ld-processed: x-ms-exchange-transport-forked:x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers:x-ms-exchange-senderadcheck: x-microsoft-antispam:x-microsoft-antispam-message-info: x-forefront-antispam-report:x-ms-exchange-antispam-messagedata: Content-Type:Content-Transfer-Encoding:MIME-Version: X-MS-Exchange-CrossTenant-AuthAs: X-MS-Exchange-CrossTenant-AuthSource: X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg; b=ZbI1eYZbFWVELdtsWVggENV8Dv+sNByunszRImIqOVnQGwGZoM2dUwTA2Cy5itB+h LT9VRKbK8DMgu8EAujZtvCEjwVJbi8K8KGQ5at1cS3soI4ncnA5maEIYvqbtdrGU/c xHRjTQ61T0hPxyzYUt1OHGWkl7/m0c6eQ10sPQO3ULI7vreCCe9XnsroNhZW4/TtTz 9yvwhLy7PpKCOdlZw94Qn0+/pPDGF8gujE62+v7qI46y38JcODp5HD1OtdZspySJdi pt/uKYGwmKIelWHzTCtj7qRKomGQuykuSNI9EZUNSDqxMvmcZo2wJ9xQ02CSS66QLE hImiFEvHiy1IQ== Subject: Re: [dpdk-dev] [PATCH v2 1/6] ethdev: add flow shared action API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGksIEFuZHJldywNCg0KSSdtIGJhY2sgdG8gdGhpcyBwYXRjaCBzZXQgdG8gbWFrZSBpdCBpbnRv IDIwLjExLiANCg0KTW9zdCBvZiB0aGUgaXRlbXMgeW91IHJhaXNlZCByZWdhcmRpbmcgU1cgaW1w bGVtZW50YXRpb24gYWxyZWFkeSBkaXNjdXNzZWQNCndpdGggSmVyaW4gWzFdIGFuZCBhbnN3ZXJl ZCBieSBPcmkgWzJdIGFuZCBtZSBbM10uIFBsZWFzZSBmb2xsb3cgbXkgJiBPcmkNCmFuc3dlci4g SW4gZ2VuZXJhbCwgdGhlIGlkZWEgb2YgU1cgaW1wbGVtZW50YXRpb24gZm9yIHNoYXJlZCBhY3Rp b24gbG9va3MNCm5pY2UgZnJvbSBhcHBsaWNhdGlvbiBwZXJzcGVjdGl2ZSBidXQgdGhlIGNoYW5n ZXMgcmVxdWlyZWQgaW4gZXRoZGV2L3J0ZV9mbG93DQpnZW5lcmljIGxheWVyIGFib3V0IHRvIGlt cGFjdCBleGlzdGluZyBydGVfZmxvdyBBUElzLg0KDQpQbGVhc2UgZm9sbG93IG15IFszXSAmIE9y aSdzIFsyXSBhbnN3ZXJzICYgdXBkYXRlIG9uIHlvdXIgc3VnZ2VzdGlvbiB0byB0aGUNClByb3Bv c2VkIEFQSS4NCg0KSSdsbCB0YWtlIHlvdXIgc3VnZ2VzdGlvbnMgZm9yIHJlcGhyYXNpbmcgaW4g dXBjb21pbmcgcGF0Y2hlcyB2ZXJzaW9uIChWMykuDQoNClRoYW5rcywNCkFuZHJleQ0KLS0tDQpb MV0gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9kZXZAZHBkay5vcmcvbXNnMTczNDYxLmh0 bWwNClsyXSBodHRwczovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2RldkBkcGRrLm9yZy9tc2cxNzM0 NzguaHRtbA0KWzNdIGh0dHBzOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vZGV2QGRwZGsub3JnL21z ZzE3MjkyMS5odG1sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5k cmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT4NCj4gU2VudDogV2VkbmVz ZGF5LCBKdWx5IDE1LCAyMDIwIDExOjU0IEFNDQo+IFRvOiBBbmRyZXkgVmVzbm92YXR5IDxhbmRy ZXl2QG1lbGxhbm94LmNvbT47IE5laWwgSG9ybWFuDQo+IDxuaG9ybWFuQHR1eGRyaXZlci5jb20+ OyBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+Ow0KPiBGZXJydWggWWlnaXQg PGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+OyBBbmRyZXcgUnliY2hlbmtvDQo+IDxhcnliY2hlbmtv QHNvbGFyZmxhcmUuY29tPjsgT3JpIEthbSA8b3Jpa2FAbWVsbGFub3guY29tPg0KPiBDYzogS2lu c2VsbGEsIFJheSA8bWRyQGFzaHJvZS5ldT47IGRldkBkcGRrLm9yZzsgamVyaW5qYWNvYmtAZ21h aWwuY29tOw0KPiBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgYnJ1Y2UucmljaGFyZHNvbkBp bnRlbC5jb207IFNsYXZhIE92c2lpZW5rbw0KPiA8dmlhY2hlc2xhdm9AbWVsbGFub3guY29tPjsg YW5kcmV5LnZlc25vdmF0eUBnbWFpbC5jb20NCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BB VENIIHYyIDEvNl0gZXRoZGV2OiBhZGQgZmxvdyBzaGFyZWQgYWN0aW9uIEFQSQ0KPiBJbXBvcnRh bmNlOiBIaWdoDQo+IA0KPiBPbiA3LzEzLzIwIDExOjA0IEFNLCBLaW5zZWxsYSwgUmF5IHdyb3Rl Og0KPiA+DQo+ID4NCj4gPiBPbiAwOC8wNy8yMDIwIDIxOjQwLCBBbmRyZXkgVmVzbm92YXR5IHdy b3RlOg0KPiA+PiBGcm9tOiBBbmRyZXkgVmVzbm92YXR5IDxhbmRyZXkudmVzbm92YXR5QGdtYWls LmNvbT4NCj4gPj4NCj4gPj4gVGhpcyBjb21taXQgaW50cm9kdWNlcyBleHRlbnNpb24gb2YgRFBE SyBmbG93IGFjdGlvbiBBUEkgZW5hYmxpbmcNCj4gPj4gc2hhcmluZyBvZiBzaW5nbGUgcnRlX2Zs b3dfYWN0aW9uIGluIG11bHRpcGxlIGZsb3dzLiBUaGUgQVBJIGludGVuZGVkIGZvcg0KPiA+PiBQ TURzIHdoZXJlIG11bHRpcGxlIEhXIG9mZmxvYWRlZCBmbG93cyBjYW4gcmV1c2UgdGhlIHNhbWUg SFcNCj4gPj4gZXNzZW5jZS9vYmplY3QgcmVwcmVzZW50aW5nIGZsb3cgYWN0aW9uIGFuZCBtb2Rp ZmljYXRpb24gb2Ygc3VjaCBhbg0KPiA+PiBlc3NlbmNlL29iamVjdCBlZmZlY3RzIGFsbCB0aGUg cnVsZXMgdXNpbmcgaXQuDQo+ID4+DQo+ID4+IE1vdGl2YXRpb24gYW5kIGV4YW1wbGUNCj4gPj4g PT09DQo+ID4+IEFkZGluZyBvciByZW1vdmluZyBvbmUgb3IgbW9yZSBxdWV1ZXMgdG8gUlNTIHVz ZWQgYnkgbXVsdGlwbGUgZmxvdyBydWxlcw0KPiA+PiBpbXBvc2VzIHBlciBydWxlIHRvbGwgZm9y IGN1cnJlbnQgRFBESyBmbG93IEFQSTsgdGhlIHNjZW5hcmlvIHJlcXVpcmVzDQo+ID4+IGZvciBl YWNoIGZsb3cgc2hhcmluZyBjbG9uZWQgUlNTIGFjdGlvbjoNCj4gPj4gLSBjYWxsIGBydGVfZmxv d19kZXN0cm95KClgDQo+ID4+IC0gY2FsbCBgcnRlX2Zsb3dfY3JlYXRlKClgIHdpdGggbW9kaWZp ZWQgUlNTIGFjdGlvbg0KPiA+Pg0KPiA+PiBBUEkgZm9yIHNoYXJpbmcgYWN0aW9uIGFuZCBpdHMg aW4tcGxhY2UgdXBkYXRlIGJlbmVmaXRzOg0KPiA+PiAtIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2Yg bXVsdGlwbGUgUlNTIGZsb3cgcnVsZXMgcmVjb25maWd1cmF0aW9uDQo+IA0KPiBJdCAqYWxsb3dz KiB0byByZWR1Y2UgdGhlIG92ZXJoZWFkIG9mIG11bHRpcGxlIFJTUyBmbG93IHJ1bGVzDQo+IHJl Y29uZmlndXJhdGlvbi4gSS5lLiBpdCBpcyBub3QgbWFuZGF0b3J5LiBQTUQgbWF5IGRvIGl0IGlu IFNXLA0KPiBpZiBIVyBkb2VzIG5vdCBzdXBwb3J0IGl0LiBJIHNlZSBubyBwcm9ibGVtIHRvIGFs bG93IGl0Lg0KPiBFdmVuIGlmIGl0IGlzIGRvbmUgaW4gUE1ELCBpdCBpcyBhbHJlYWR5IGFuIG9w dGltaXphdGlvbiBzaW5jZQ0KPiBhcHBsaWNhdGlvbnMgaGF2ZSB1bmlmaWVkIGludGVyZmFjZSBh bmQgaW50ZXJuYWxseSBpdCBzaG91bGQNCj4gYmUgY2hlYXBlciB0byBkbyBpdC4NCj4gSSdkIGNv bnNpZGVyIHRvIGltcGxlbWVudCBnZW5lcmljIFNXIGhlbHBlciBBUEkgZm9yIFBNRHMgd2hpY2gN Cj4gY2Fubm90IGhhdmUgc2hhcmVkIGFjdGlvbnMgaW4gSFcsIGJ1dCB3b3VsZCBsaWtlIHRvIHNp bXVsYXRlIGl0DQo+IGluIFNXLiBJdCB3b3VsZCBhbGxvdyB0byBhdm9pZCB0aGUgZmFsbGJhY2sg aW4gYXBwbGljYXRpb25zLg0KPiANCj4gPj4gLSBvcHRpbWl6ZSByZXNvdXJjZSB1dGlsaXphdGlv biBieSBzaGFyaW5nIGFjdGlvbiBhY3Jvc3Mgb2YgbXVsdGlwbGUNCj4gPj4gZmxvd3MNCj4gPj4N Cj4gPj4gQ2hhbmdlIGRlc2NyaXB0aW9uDQo+ID4+ID09PQ0KPiA+Pg0KPiA+PiBTaGFyZWQgYWN0 aW9uDQo+ID4+ID09PQ0KPiA+PiBJbiBvcmRlciB0byByZXByZXNlbnQgZmxvdyBhY3Rpb24gc2hh cmVkIGJ5IG11bHRpcGxlIGZsb3dzIG5ldyBhY3Rpb24NCj4gPj4gdHlwZSBSVEVfRkxPV19BQ1RJ T05fVFlQRV9TSEFSRUQgaXMgaW50cm9kdWNlZCAoc2VlIGBlbnVtDQo+ID4+IHJ0ZV9mbG93X2Fj dGlvbl90eXBlYCkuDQo+ID4+IEFjdHVhbGx5IHRoZSBpbnRyb2R1Y2VkIEFQSSBkZWNvdXBsZXMg YWN0aW9uIGZyb20gYW55IHNwZWNpZmljIGZsb3cgYW5kDQo+ID4+IGVuYWJsZXMgc2hhcmluZyBv ZiBzaW5nbGUgYWN0aW9uIGJ5IGl0cyBoYW5kbGUgYWNyb3NzIG11bHRpcGxlIGZsb3dzLg0KPiA+ Pg0KPiA+PiBTaGFyZWQgYWN0aW9uIGNyZWF0ZS91c2UvZGVzdHJveQ0KPiA+PiA9PT0NCj4gPj4g U2hhcmVkIGFjdGlvbiBtYXkgYmUgcmV1c2VkIGJ5IHNvbWUgb3Igbm9uZSBmbG93IHJ1bGVzIGF0 IGFueSBnaXZlbg0KPiA+PiBtb21lbnQsIGkuZS4gc2hhcmVkIGFjdGlvbiByZXNpZGUgb3V0c2lk ZSBvZiB0aGUgY29udGV4dCBvZiBhbnkgZmxvdy4NCj4gPj4gU2hhcmVkIGFjdGlvbiByZXByZXNl bnQgSFcgcmVzb3VyY2VzL29iamVjdHMgdXNlZCBmb3IgYWN0aW9uIG9mZmxvYWRpbmcNCj4gPj4g aW1wbGVtZW50YXRpb24uDQo+ID4+IEFQSSBmb3Igc2hhcmVkIGFjdGlvbiBjcmVhdGUgKHNlZSBg cnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl9jcmVhdGUoKWApOg0KPiA+PiAtIHNob3VsZCBhbGxvY2F0 ZSBIVyByZXNvdXJjZXMgYW5kIG1ha2UgcmVsYXRlZCBpbml0aWFsaXphdGlvbnMgcmVxdWlyZWQN Cj4gPj4gZm9yIHNoYXJlZCBhY3Rpb24gaW1wbGVtZW50YXRpb24uDQo+ID4+IC0gbWFrZSBuZWNl c3NhcnkgcHJlcGFyYXRpb25zIHRvIG1haW50YWluIHNoYXJlZCBhY2Nlc3MgdG8NCj4gPj4gdGhl IGFjdGlvbiByZXNvdXJjZXMsIGNvbmZpZ3VyYXRpb24gYW5kIHN0YXRlLg0KPiA+PiBBUEkgZm9y IHNoYXJlZCBhY3Rpb24gZGVzdHJveSAoc2VlIGBydGVfZmxvd19zaGFyZWRfYWN0aW9uX2Rlc3Ry b3koKWApDQo+ID4+IHNob3VsZCByZWxlYXNlIEhXIHJlc291cmNlcyBhbmQgbWFrZSByZWxhdGVk IGNsZWFudXBzIHJlcXVpcmVkIGZvciBzaGFyZWQNCj4gPj4gYWN0aW9uIGltcGxlbWVudGF0aW9u Lg0KPiA+Pg0KPiA+PiBJbiBvcmRlciB0byBzaGFyZSBzb21lIGZsb3cgYWN0aW9uIHJldXNlIHRo ZSBoYW5kbGUgb2YgdHlwZQ0KPiA+PiBgc3RydWN0IHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25gIHJl dHVybmVkIGJ5DQo+ID4+IHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fY3JlYXRlKCkgYXMgYSBgY29u ZmAgZmllbGQgb2YNCj4gPj4gYHN0cnVjdCBydGVfZmxvd19hY3Rpb25gIChzZWUgImV4YW1wbGUi IHNlY3Rpb24pLg0KPiA+Pg0KPiA+PiBJZiBzb21lIHNoYXJlZCBhY3Rpb24gbm90IHVzZWQgYnkg YW55IGZsb3cgcnVsZSBhbGwgcmVzb3VyY2VzIGFsbG9jYXRlZA0KPiA+PiBieSB0aGUgc2hhcmVk IGFjdGlvbiBjYW4gYmUgcmVsZWFzZWQgYnkgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl9kZXN0cm95 KCkNCj4gPj4gKHNlZSAiZXhhbXBsZSIgc2VjdGlvbikuIFRoZSBzaGFyZWQgYWN0aW9uIGhhbmRs ZSBwYXNzZWQgYXMgYXJndW1lbnQgdG8NCj4gPj4gZGVzdHJveSBBUEkgc2hvdWxkIG5vdCBiZSB1 c2VkIGFueSBmdXJ0aGVyIGkuZS4gcmVzdWx0IG9mIHRoZSB1c2FnZSBpcw0KPiA+PiB1bmRlZmlu ZWQuDQo+IA0KPiBNYXkgYmUgaXQgbWFrZXMgc2Vuc2UgdG8gaW1wbGVtZW50IGhvdXNla2VlcGlu ZyBpbiBldGhkZXYNCj4gbGF5ZXI/IEkuZS4gZ3VhcmFudGVlIGNvbnNlcXVlbmN5IHVzaW5nIHJl ZmVyZW5jZSBjb3VudGVycyBldGMuDQo+IFdpbGwgYXBwbGljYXRpb25zIGJlbmVmaXQgZnJvbSBp dD8NCj4gDQo+ID4+DQo+ID4+IFNoYXJlZCBhY3Rpb24gcmUtY29uZmlndXJhdGlvbg0KPiA+PiA9 PT0NCj4gPj4gU2hhcmVkIGFjdGlvbiBiZWhhdmlvciBkZWZpbmVkIGJ5IGl0cyBjb25maWd1cmF0 aW9uIGNhbiBiZSB1cGRhdGVkIHZpYQ0KPiA+PiBydGVfZmxvd19zaGFyZWRfYWN0aW9uX3VwZGF0 ZSgpIChzZWUgImV4YW1wbGUiIHNlY3Rpb24pLiBUaGUgc2hhcmVkDQo+ID4+IGFjdGlvbiB1cGRh dGUgb3BlcmF0aW9uIG1vZGlmaWVzIEhXIHJlbGF0ZWQgcmVzb3VyY2VzL29iamVjdHMgYWxsb2Nh dGVkDQo+ID4+IG9uIHRoZSBhY3Rpb24gY3JlYXRpb24uIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9u cyBwZXJmb3JtZWQgYnkgdGhlIHVwZGF0ZQ0KPiA+PiBvcGVyYXRpb24gc2hvdWxkIG5vdCBiZSBk ZXBlbmRlbnQgb24gbnVtYmVyIG9mIGZsb3dzIHNoYXJpbmcgdGhlIHJlbGF0ZWQNCj4gPj4gYWN0 aW9uLiBPbiByZXR1cm4gb2Ygc2hhcmVkIGFjdGlvbiB1cGRhdGUgQVBJIGFjdGlvbiBiZWhhdmlv ciBzaG91bGQgYmUNCj4gPj4gYWNjb3JkaW5nIHRvIHVwZGF0ZWQgY29uZmlndXJhdGlvbiBmb3Ig YWxsIGZsb3dzIHNoYXJpbmcgdGhlIGFjdGlvbi4NCj4gDQo+IElmIHNoYXJlZCBhY3Rpb24gaXMg c2ltdWxhdGVkIGluIFNXLCBudW1iZXIgb2Ygb3BlcmF0aW9ucyB0byBkbw0KPiByZWNvbmZpZ3Vy YXRpb24gd2lsbCBkZXBlbmQgb24gYSBudW1iZXIgb2YgZmxvdyBydWxlcyB1c2luZyBpdC4NCj4g SSB0aGluayBpdCBpcyBub3QgYSBwcm9ibGVtLiBTbywgKnNob3VsZCBub3QqIHVzZWQgYWJvdmUg aXMgT0suDQo+IA0KPiBDb25zaWRlcjoNCj4gInNob3VsZCBub3QgYmUgZGVwZW5kZW50IG9uIiAt PiAic2hvdWxkIG5vdCBkZXBlbmQgb24iDQo+IA0KPiA+Pg0KPiA+PiBTaGFyZWQgYWN0aW9uIHF1 ZXJ5DQo+ID4+ID09PQ0KPiA+PiBQcm92aWRlIHNlcGFyYXRlIEFQSSB0byBxdWVyeSBzaGFyZWQg YWN0aW9uIHNhdGUgKHNlZQ0KPiANCj4gc2F0ZSAtPiBzdGF0ZQ0KPiANCj4gPj4gcnRlX2Zsb3df c2hhcmVkX2FjdGlvbl91cGRhdGUoKSkuIFRha2luZyBhIGNvdW50ZXIgYXMgYW4gZXhhbXBsZTog cXVlcnkNCj4gPj4gcmV0dXJucyB2YWx1ZSBhZ2dyZWdhdGluZyBhbGwgY291bnRlciBpbmNyZW1l bnRzIGFjcm9zcyBhbGwgZmxvdyBydWxlcw0KPiA+PiBzaGFyaW5nIHRoZSBjb3VudGVyLg0KPiA+ Pg0KPiA+PiBQTUQgc3VwcG9ydA0KPiA+PiA9PT0NCj4gPj4gVGhlIHN1cHBvcnQgb2YgaW50cm9k dWNlZCBBUEkgaXMgcHVyZSBQTUQgc3BlY2lmaWMgZGVzaWduIGFuZA0KPiA+PiByZXNwb25zaWJp bGl0eSBmb3IgZWFjaCBhY3Rpb24gdHlwZSAoc2VlIHN0cnVjdCBydGVfZmxvd19vcHMpLg0KPiA+ Pg0KPiA+PiB0ZXN0cG1kDQo+ID4+ID09PQ0KPiA+PiBJbiBvcmRlciB0byB1dGlsaXplIGludHJv ZHVjZWQgQVBJIHRlc3RwbWQgY2xpIG1heSBpbXBsZW1lbnQgZm9sbG93aW5nDQo+ID4+IGV4dGVu c2lvbg0KPiA+PiBjcmVhdGUvdXBkYXRlL2Rlc3Ryb3kvcXVlcnkgc2hhcmVkIGFjdGlvbiBhY2Nv cmRpbmdseQ0KPiA+Pg0KPiA+PiBmbG93IHNoYXJlZF9hY3Rpb24gY3JlYXRlIHtwb3J0X2lkfSBb aW5kZXhdIHthY3Rpb259DQo+ID4+IGZsb3cgc2hhcmVkX2FjdGlvbiB1cGRhdGUge3BvcnRfaWR9 IHtpbmRleH0ge2FjdGlvbn0NCj4gPj4gZmxvdyBzaGFyZWRfYWN0aW9uIGRlc3Ryb3kge3BvcnRf aWR9IHtpbmRleH0NCj4gPj4gZmxvdyBzaGFyZWRfYWN0aW9uIHF1ZXJ5IHtwb3J0X2lkfSB7aW5k ZXh9DQo+ID4+DQo+ID4+IHRlc3RwbWQgZXhhbXBsZQ0KPiA+PiA9PT0NCj4gPj4NCj4gPj4gY29u ZmlndXJlIHJzcyB0byBxdWV1ZXMgMSAmIDINCj4gPj4NCj4gPj4gdGVzdHBtZD4gZmxvdyBzaGFy ZWRfYWN0aW9uIGNyZWF0ZSAwIDEwMCByc3MgMSAyDQo+ID4+DQo+ID4+IGNyZWF0ZSBmbG93IHJ1 bGUgdXRpbGl6aW5nIHNoYXJlZCBhY3Rpb24NCj4gPj4NCj4gPj4gdGVzdHBtZD4gZmxvdyBjcmVh dGUgMCBpbmdyZXNzIFwNCj4gPj4gcGF0dGVybiBldGggZHN0IGlzIDBjOjQyOmExOjE1OmZkOmFj IC8gaXB2NiAvIHRjcCAvIGVuZCBcDQo+ID4+IGFjdGlvbnMgc2hhcmVkIDEwMCBlbmQgLyBlbmQN Cj4gPj4NCj4gPj4gYWRkIDIgbW9yZSBxdWV1ZXMNCj4gPj4NCj4gPj4gdGVzdHBtZD4gZmxvdyBz aGFyZWRfYWN0aW9uIG1vZGlmeSAwIDEwMCByc3MgMSAyIDMgNA0KPiA+Pg0KPiA+PiBleGFtcGxl DQo+ID4+ID09PQ0KPiA+Pg0KPiA+PiBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIGFjdGlvbnNbMl07 DQo+ID4+IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gYWN0aW9uOw0KPiA+PiAvKiBza2lwcGVkOiBp bml0aWFsaXplIGFjdGlvbiAqLw0KPiA+PiBzdHJ1Y3QgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbiAq aGFuZGxlID0gcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl9jcmVhdGUoDQo+ID4+IHBvcnRfaWQsICZh Y3Rpb24sICZlcnJvcik7DQo+IA0KPiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaGF2ZSBtYW55 IGFjdGlvbnMgaW4gc2hhcmVkIGFjdGlvbi4NCj4gSS5lLiBzaW1pbGFyIHRvIGJlbG93LCBpdCBz aG91bGQgYmUgYW4gYXJyYXkgdGVybWluYXRlZCBieQ0KPiBSVEVfRkxPV19BQ1RJT05fVFlQRV9F TkQuIEl0IGlzIHVuY2xlYXIgZnJvbSB0aGUgZXhhbXBsZQ0KPiBhYm92ZS4NCj4gDQo+ID4+IGFj dGlvbnNbMF0udHlwZSA9IFJURV9GTE9XX0FDVElPTl9UWVBFX1NIQVJFRDsNCj4gPj4gYWN0aW9u c1swXS5jb25mID0gaGFuZGxlOw0KPiA+PiBhY3Rpb25zWzFdLnR5cGUgPSBSVEVfRkxPV19BQ1RJ T05fVFlQRV9FTkQ7DQo+ID4+IC8qIHNraXBwZWQ6IGluaXQgYXR0cjAgJiBwYXR0ZXJuMCBhcmdz ICovDQo+ID4+IHN0cnVjdCBydGVfZmxvdyAqZmxvdzAgPSBydGVfZmxvd19jcmVhdGUocG9ydF9p ZCwgJmF0dHIwLCBwYXR0ZXJuMCwNCj4gPj4gYWN0aW9ucywgZXJyb3IpOw0KPiA+PiAvKiBjcmVh dGUgbW9yZSBydWxlcyByZXVzaW5nIHNoYXJlZCBhY3Rpb24gKi8NCj4gPj4gc3RydWN0IHJ0ZV9m bG93ICpmbG93MSA9IHJ0ZV9mbG93X2NyZWF0ZShwb3J0X2lkLCAmYXR0cjEsIHBhdHRlcm4xLA0K PiA+PiBhY3Rpb25zLCBlcnJvcik7DQo+ID4+IC8qIHNraXBwZWQ6IGZvciBmbG93cyAyIHRpbGwg TiAqLw0KPiA+PiBzdHJ1Y3QgcnRlX2Zsb3cgKmZsb3dOID0gcnRlX2Zsb3dfY3JlYXRlKHBvcnRf aWQsICZhdHRyTiwgcGF0dGVybk4sDQo+ID4+IGFjdGlvbnMsIGVycm9yKTsNCj4gPj4gLyogdXBk YXRlIHNoYXJlZCBhY3Rpb24gKi8NCj4gPj4gc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiB1cGRhdGVk X2FjdGlvbjsNCj4gPj4gLyoNCj4gPj4gKiBza2lwcGVkOiBpbml0aWFsaXplIHVwZGF0ZWRfYWN0 aW9uIGFjY29yZGluZyB0byBkZXNpcmVkIGFjdGlvbg0KPiA+PiAqIGNvbmZpZ3VyYXRpb24gY2hh bmdlDQo+ID4+ICovDQo+ID4+IHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fdXBkYXRlKHBvcnRfaWQs IGhhbmRsZSwgJnVwZGF0ZWRfYWN0aW9uLCBlcnJvcik7DQo+ID4+IC8qDQo+ID4+ICogZnJvbSBu b3cgb24gYWxsIGZsb3dzIDEgdGlsbCBOIHdpbGwgYWN0IGFjY29yZGluZyB0byBjb25maWd1cmF0 aW9uIG9mDQo+ID4+ICogdXBkYXRlZF9hY3Rpb24NCj4gPj4gKi8NCj4gPj4gLyogc2tpcHBlZDog ZGVzdHJveSBhbGwgZmxvd3MgMSB0aWxsIE4gKi8NCj4gPj4gcnRlX2Zsb3dfc2hhcmVkX2FjdGlv bl9kZXN0cm95KHBvcnRfaWQsIGhhbmRsZSwgZXJyb3IpOw0KPiA+Pg0KPiA+PiBTaWduZWQtb2Zm LWJ5OiBBbmRyZXkgVmVzbm92YXR5IDxhbmRyZXl2QG1lbGxhbm94LmNvbT4NCj4gPj4gLS0tDQo+ ID4+IGxpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXZfdmVyc2lvbi5tYXAgfCA2ICsNCj4gPj4g bGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuYyB8IDgxICsrKysrKysrKysrKysNCj4gPj4gbGli L2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaCB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrLQ0K PiA+PiBsaWIvbGlicnRlX2V0aGRldi9ydGVfZmxvd19kcml2ZXIuaCB8IDIyICsrKysNCj4gPj4g NCBmaWxlcyBjaGFuZ2VkLCAyNTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+Pg0K PiA+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldl92ZXJzaW9uLm1h cA0KPiA+PiBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXZfdmVyc2lvbi5tYXANCj4gPj4g aW5kZXggNzE1NTA1NjA0NS4uMTE5ZDg0OTc2YSAxMDA2NDQNCj4gPj4gLS0tIGEvbGliL2xpYnJ0 ZV9ldGhkZXYvcnRlX2V0aGRldl92ZXJzaW9uLm1hcA0KPiA+PiArKysgYi9saWIvbGlicnRlX2V0 aGRldi9ydGVfZXRoZGV2X3ZlcnNpb24ubWFwDQo+ID4+IEBAIC0yNDEsNCArMjQxLDEwIEBAIEVY UEVSSU1FTlRBTCB7DQo+ID4+IF9fcnRlX2V0aGRldl90cmFjZV9yeF9idXJzdDsNCj4gPj4gX19y dGVfZXRoZGV2X3RyYWNlX3R4X2J1cnN0Ow0KPiA+PiBydGVfZmxvd19nZXRfYWdlZF9mbG93czsN Cj4gPj4gKw0KPiA+PiArICMgYWRkZWQgaW4gMjAuMDgNCj4gPj4gKyBydGVfZmxvd19zaGFyZWRf YWN0aW9uX2NyZWF0ZTsNCj4gPj4gKyBydGVfZmxvd19zaGFyZWRfYWN0aW9uX2Rlc3Ryb3k7DQo+ ID4+ICsgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl91cGRhdGU7DQo+ID4+ICsgcnRlX2Zsb3dfc2hh cmVkX2FjdGlvbl9xdWVyeTsNCj4gPj4gfTsNCj4gPj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf ZXRoZGV2L3J0ZV9mbG93LmMgYi9saWIvbGlicnRlX2V0aGRldi9ydGVfZmxvdy5jDQo+ID4+IGlu ZGV4IDE2ODViZTVmNzMuLjBhYzRkMzFhMTMgMTAwNjQ0DQo+ID4+IC0tLSBhL2xpYi9saWJydGVf ZXRoZGV2L3J0ZV9mbG93LmMNCj4gPj4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cu Yw0KPiA+PiBAQCAtMTI1MCwzICsxMjUwLDg0IEBAIHJ0ZV9mbG93X2dldF9hZ2VkX2Zsb3dzKHVp bnQxNl90IHBvcnRfaWQsIHZvaWQNCj4gPj4gKipjb250ZXh0cywNCj4gPj4gUlRFX0ZMT1dfRVJS T1JfVFlQRV9VTlNQRUNJRklFRCwNCj4gPj4gTlVMTCwgcnRlX3N0cmVycm9yKEVOT1RTVVApKTsN Cj4gPj4gfQ0KPiA+PiArDQo+ID4+ICtzdHJ1Y3QgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbiAqDQo+ ID4+ICtydGVfZmxvd19zaGFyZWRfYWN0aW9uX2NyZWF0ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ PiArIGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdGlvbiwNCj4gPj4gKyBzdHJ1Y3Qg cnRlX2Zsb3dfZXJyb3IgKmVycm9yKQ0KPiA+PiArew0KPiA+PiArIHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPj4gKyBzdHJ1Y3QgcnRlX2Zs b3dfc2hhcmVkX2FjdGlvbiAqc2hhcmVkX2FjdGlvbjsNCj4gPj4gKyBjb25zdCBzdHJ1Y3QgcnRl X2Zsb3dfb3BzICpvcHMgPSBydGVfZmxvd19vcHNfZ2V0KHBvcnRfaWQsIGVycm9yKTsNCj4gPj4g Kw0KPiA+PiArIGlmICh1bmxpa2VseSghb3BzKSkNCj4gPj4gKyByZXR1cm4gTlVMTDsNCj4gPj4g KyBpZiAobGlrZWx5KCEhb3BzLT5zaGFyZWRfYWN0aW9uX2NyZWF0ZSkpIHsNCj4gPj4gKyBzaGFy ZWRfYWN0aW9uID0gb3BzLT5zaGFyZWRfYWN0aW9uX2NyZWF0ZShkZXYsIGFjdGlvbiwgZXJyb3Ip Ow0KPiA+PiArIGlmIChzaGFyZWRfYWN0aW9uID09IE5VTEwpDQo+ID4+ICsgZmxvd19lcnIocG9y dF9pZCwgLXJ0ZV9lcnJubywgZXJyb3IpOw0KPiA+PiArIHJldHVybiBzaGFyZWRfYWN0aW9uOw0K PiA+PiArIH0NCj4gPj4gKyBydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVOT1NZUywNCj4gUlRF X0ZMT1dfRVJST1JfVFlQRV9VTlNQRUNJRklFRCwNCj4gPj4gKyBOVUxMLCBydGVfc3RyZXJyb3Io RU5PU1lTKSk7DQo+ID4+ICsgcmV0dXJuIE5VTEw7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK2lu dA0KPiA+PiArcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl9kZXN0cm95KHVpbnQxNl90IHBvcnRfaWQs DQo+ID4+ICsgc3RydWN0IHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb24gKmFjdGlvbiwNCj4gPj4gKyBz dHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKQ0KPiA+PiArew0KPiA+PiArIHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPj4gKyBjb25zdCBz dHJ1Y3QgcnRlX2Zsb3dfb3BzICpvcHMgPSBydGVfZmxvd19vcHNfZ2V0KHBvcnRfaWQsIGVycm9y KTsNCj4gPj4gKw0KPiA+PiArIGlmICh1bmxpa2VseSghb3BzKSkNCj4gPj4gKyByZXR1cm4gLXJ0 ZV9lcnJubzsNCj4gPj4gKyBpZiAobGlrZWx5KCEhb3BzLT5zaGFyZWRfYWN0aW9uX2Rlc3Ryb3kp KQ0KPiA+PiArIHJldHVybiBmbG93X2Vycihwb3J0X2lkLA0KPiA+PiArIG9wcy0+c2hhcmVkX2Fj dGlvbl9kZXN0cm95KGRldiwgYWN0aW9uLCBlcnJvciksDQo+ID4+ICsgZXJyb3IpOw0KPiA+PiAr IHJldHVybiBydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVOT1NZUywNCj4gPj4gKyBSVEVfRkxP V19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0KPiA+PiArIE5VTEwsIHJ0ZV9zdHJlcnJvcihFTk9T WVMpKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiAraW50DQo+ID4+ICtydGVfZmxvd19zaGFyZWRf YWN0aW9uX3VwZGF0ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+PiArIHN0cnVjdCBydGVfZmxvd19z aGFyZWRfYWN0aW9uICphY3Rpb24sDQo+ID4+ICsgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2FjdGlv biAqdXBkYXRlLA0KPiA+PiArIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ID4+ICt7 DQo+ID4+ICsgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRf aWRdOw0KPiA+PiArIGNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29w c19nZXQocG9ydF9pZCwgZXJyb3IpOw0KPiA+PiArDQo+ID4+ICsgaWYgKHVubGlrZWx5KCFvcHMp KQ0KPiA+PiArIHJldHVybiAtcnRlX2Vycm5vOw0KPiA+PiArIGlmIChsaWtlbHkoISFvcHMtPnNo YXJlZF9hY3Rpb25fdXBkYXRlKSkNCj4gPj4gKyByZXR1cm4gZmxvd19lcnIocG9ydF9pZCwgb3Bz LT5zaGFyZWRfYWN0aW9uX3VwZGF0ZShkZXYsIGFjdGlvbiwNCj4gPj4gKyB1cGRhdGUsIGVycm9y KSwNCj4gPj4gKyBlcnJvcik7DQo+ID4+ICsgcmV0dXJuIHJ0ZV9mbG93X2Vycm9yX3NldChlcnJv ciwgRU5PU1lTLA0KPiA+PiArIFJURV9GTE9XX0VSUk9SX1RZUEVfVU5TUEVDSUZJRUQsDQo+ID4+ ICsgTlVMTCwgcnRlX3N0cmVycm9yKEVOT1NZUykpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtp bnQNCj4gPj4gK3J0ZV9mbG93X3NoYXJlZF9hY3Rpb25fcXVlcnkodWludDE2X3QgcG9ydF9pZCwN Cj4gPj4gKyBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbiAqYWN0aW9uLA0KPiA+ PiArIHZvaWQgKmRhdGEsDQo+ID4+ICsgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcikNCj4g Pj4gK3sNCj4gPj4gKyBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiA9ICZydGVfZXRoX2RldmljZXNb cG9ydF9pZF07DQo+ID4+ICsgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X29wcyAqb3BzID0gcnRlX2Zs b3dfb3BzX2dldChwb3J0X2lkLCBlcnJvcik7DQo+ID4+ICsNCj4gPj4gKyBpZiAodW5saWtlbHko IW9wcykpDQo+ID4+ICsgcmV0dXJuIC1ydGVfZXJybm87DQo+ID4+ICsgaWYgKGxpa2VseSghIW9w cy0+c2hhcmVkX2FjdGlvbl9xdWVyeSkpDQo+ID4+ICsgcmV0dXJuIGZsb3dfZXJyKHBvcnRfaWQs IG9wcy0+c2hhcmVkX2FjdGlvbl9xdWVyeShkZXYsIGFjdGlvbiwNCj4gPj4gKyBkYXRhLCBlcnJv ciksDQo+ID4+ICsgZXJyb3IpOw0KPiA+PiArIHJldHVybiBydGVfZmxvd19lcnJvcl9zZXQoZXJy b3IsIEVOT1NZUywNCj4gPj4gKyBSVEVfRkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0KPiA+ PiArIE5VTEwsIHJ0ZV9zdHJlcnJvcihFTk9TWVMpKTsNCj4gPj4gK30NCj4gPj4gZGlmZiAtLWdp dCBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93LmggYi9saWIvbGlicnRlX2V0aGRldi9ydGVf Zmxvdy5oDQo+ID4+IGluZGV4IGIwZTQxOTkxOTIuLjI1NzQ1NmIxNGEgMTAwNjQ0DQo+ID4+IC0t LSBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93LmgNCj4gPj4gKysrIGIvbGliL2xpYnJ0ZV9l dGhkZXYvcnRlX2Zsb3cuaA0KPiA+PiBAQCAtMTY4MSw3ICsxNjgxLDggQEAgZW51bSBydGVfZmxv d19hY3Rpb25fdHlwZSB7DQo+ID4+IC8qKg0KPiA+PiAqIEVuYWJsZXMgY291bnRlcnMgZm9yIHRo aXMgZmxvdyBydWxlLg0KPiA+PiAqDQo+ID4+IC0gKiBUaGVzZSBjb3VudGVycyBjYW4gYmUgcmV0 cmlldmVkIGFuZCByZXNldCB0aHJvdWdoIHJ0ZV9mbG93X3F1ZXJ5KCksDQo+ID4+ICsgKiBUaGVz ZSBjb3VudGVycyBjYW4gYmUgcmV0cmlldmVkIGFuZCByZXNldCB0aHJvdWdoIHJ0ZV9mbG93X3F1 ZXJ5KCkgb3INCj4gPj4gKyAqIHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fcXVlcnkoKSBpZiB0aGUg YWN0aW9uIHByb3ZpZGVkIHZpYSBoYW5kbGUsDQo+ID4+ICogc2VlIHN0cnVjdCBydGVfZmxvd19x dWVyeV9jb3VudC4NCj4gPj4gKg0KPiA+PiAqIFNlZSBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2Nv dW50Lg0KPiA+PiBAQCAtMjA5OSw2ICsyMTAwLDE0IEBAIGVudW0gcnRlX2Zsb3dfYWN0aW9uX3R5 cGUgew0KPiA+PiAqIHNlZSBlbnVtIFJURV9FVEhfRVZFTlRfRkxPV19BR0VEDQo+ID4+ICovDQo+ ID4+IFJURV9GTE9XX0FDVElPTl9UWVBFX0FHRSwNCj4gPj4gKw0KPiA+PiArIC8qKg0KPiA+PiAr ICogRGVzY3JpYmVzIGFjdGlvbiBzaGFyZWQgYSBjcm9zcyBtdWx0aXBsZSBmbG93IHJ1bGVzLg0K PiANCj4gQm90aCBvcHRpb25zIGFyZSBwb3NzaWJsZSwgYnV0IEknZCBwcm9wb3NlIHRvIHN0aWNr IHRvOg0KPiBEZXNjcmliZXMgLT4gRGVzY3JpYmUNCj4gDQo+IE9yIGV2ZW46DQo+IFVzZSBhY3Rp b25zIHNoYXJlZCBhY3Jvc3MgbXVsdGlwbGUgZmxvdyBydWxlcy4NCj4gDQo+ID4+ICsgKg0KPiA+ PiArICogRW5hYmxlcyBtdWx0aXBsZSBydWxlcyByZWZlcmVuY2UgdGhlIHNhbWUgYWN0aW9uIGJ5 IGhhbmRsZSAoc2VlDQo+IA0KPiBFbmFibGVzIC0+IEFsbG93DQo+IA0KPiA+PiArICogc3RydWN0 IHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb24pLg0KPiA+PiArICovDQo+ID4+ICsgUlRFX0ZMT1dfQUNU SU9OX1RZUEVfU0hBUkVELA0KPiA+PiB9Ow0KPiA+PiAvKioNCj4gPj4gQEAgLTI2NjAsNiArMjY2 OSwyMCBAQCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3NldF9kc2NwIHsNCj4gPj4gdWludDhfdCBk c2NwOw0KPiA+PiB9Ow0KPiA+PiArDQo+ID4+ICsvKioNCj4gPj4gKyAqIFJURV9GTE9XX0FDVElP Tl9UWVBFX1NIQVJFRA0KPiA+PiArICoNCj4gPj4gKyAqIE9wYXF1ZSB0eXBlIHJldHVybmVkIGFm dGVyIHN1Y2Nlc3NmdWxseSBjcmVhdGluZyBhIHNoYXJlZCBhY3Rpb24uDQo+ID4+ICsgKg0KPiA+ PiArICogVGhpcyBoYW5kbGUgY2FuIGJlIHVzZWQgdG8gbWFuYWdlIGFuZCBxdWVyeSB0aGUgcmVs YXRlZCBhY3Rpb246DQo+ID4+ICsgKiAtIHNoYXJlIGl0IGEgY3Jvc3MgbXVsdGlwbGUgZmxvdyBy dWxlcw0KPiA+PiArICogLSB1cGRhdGUgYWN0aW9uIGNvbmZpZ3VyYXRpb24NCj4gPj4gKyAqIC0g cXVlcnkgYWN0aW9uIGRhdGENCj4gPj4gKyAqIC0gZGVzdHJveSBhY3Rpb24NCj4gPj4gKyAqLw0K PiA+PiArc3RydWN0IHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb247DQo+ID4+ICsNCj4gPj4gLyogTWJ1 ZiBkeW5hbWljIGZpZWxkIG9mZnNldCBmb3IgbWV0YWRhdGEuICovDQo+ID4+IGV4dGVybiBpbnQz Ml90IHJ0ZV9mbG93X2R5bmZfbWV0YWRhdGFfb2ZmczsNCj4gPj4gQEAgLTMzMjQsNiArMzM0Nywx MjkgQEAgaW50DQo+ID4+IHJ0ZV9mbG93X2dldF9hZ2VkX2Zsb3dzKHVpbnQxNl90IHBvcnRfaWQs IHZvaWQgKipjb250ZXh0cywNCj4gPj4gdWludDMyX3QgbmJfY29udGV4dHMsIHN0cnVjdCBydGVf Zmxvd19lcnJvciAqZXJyb3IpOw0KPiA+PiArLyoqDQo+ID4+ICsgKiBAd2FybmluZw0KPiA+PiAr ICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90 aWNlLg0KPiA+PiArICoNCj4gPj4gKyAqIENyZWF0ZSBzaGFyZWQgYWN0aW9uIGZvciByZXVzZSBp biBtdWx0aXBsZSBmbG93IHJ1bGVzLg0KPiA+PiArICoNCj4gPj4gKyAqIEBwYXJhbVtpbl0gcG9y dF9pZA0KPiA+PiArICogVGhlIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgRXRoZXJuZXQgZGV2aWNl Lg0KPiA+PiArICogQHBhcmFtW2luXSBhY3Rpb24NCj4gPj4gKyAqIEFjdGlvbiBjb25maWd1cmF0 aW9uIGZvciBzaGFyZWQgYWN0aW9uIGNyZWF0aW9uLg0KPiA+PiArICogQHBhcmFtW291dF0gZXJy b3INCj4gPj4gKyAqIFBlcmZvcm0gdmVyYm9zZSBlcnJvciByZXBvcnRpbmcgaWYgbm90IE5VTEwu IFBNRHMgaW5pdGlhbGl6ZSB0aGlzDQo+ID4+ICsgKiBzdHJ1Y3R1cmUgaW4gY2FzZSBvZiBlcnJv ciBvbmx5Lg0KPiA+PiArICogQHJldHVybg0KPiA+PiArICogQSB2YWxpZCBoYW5kbGUgaW4gY2Fz ZSBvZiBzdWNjZXNzLCBOVUxMIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vDQo+ID4+IGlzIHNldA0K PiA+PiArICogdG8gb25lIG9mIHRoZSBlcnJvciBjb2RlcyBkZWZpbmVkOg0KPiA+PiArICogLSAo RU5PU1lTKSBpZiB1bmRlcmx5aW5nIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgZnVuY3Rp b25hbGl0eS4NCj4gPj4gKyAqIC0gKEVJTykgaWYgdW5kZXJseWluZyBkZXZpY2UgaXMgcmVtb3Zl ZC4NCj4gPj4gKyAqIC0gKEVJTlZBTCkgaWYgKmFjdGlvbiogaW52YWxpZC4NCj4gPj4gKyAqIC0g KEVOT1RTVVApIGlmICphY3Rpb24qIHZhbGlkIGJ1dCB1bnN1cHBvcnRlZC4NCj4gPj4gKyAqLw0K PiA+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4+ICtzdHJ1Y3QgcnRlX2Zsb3dfc2hhcmVkX2Fj dGlvbiAqDQo+ID4+ICtydGVfZmxvd19zaGFyZWRfYWN0aW9uX2NyZWF0ZSh1aW50MTZfdCBwb3J0 X2lkLA0KPiA+PiArIGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdGlvbiwNCj4gPj4g KyBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPj4gKw0KPiA+PiArLyoqDQo+ID4+ ICsgKiBAd2FybmluZw0KPiA+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hh bmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+PiArICoNCj4gPj4gKyAqIERlc3Ryb3lzIHRo ZSBzaGFyZWQgYWN0aW9uIGJ5IGhhbmRsZS4NCj4gDQo+IERlc3Ryb3lzIC0+IERlc3Ryb3kNCj4g DQo+ID4+ICsgKg0KPiA+PiArICogQHBhcmFtW2luXSBwb3J0X2lkDQo+ID4+ICsgKiBUaGUgcG9y dCBpZGVudGlmaWVyIG9mIHRoZSBFdGhlcm5ldCBkZXZpY2UuDQo+ID4+ICsgKiBAcGFyYW1baW5d IGFjdGlvbg0KPiA+PiArICogSGFuZGxlIGZvciB0aGUgc2hhcmVkIGFjdGlvbiB0byBiZSBkZXN0 cm95ZWQuDQo+ID4+ICsgKiBAcGFyYW1bb3V0XSBlcnJvcg0KPiA+PiArICogUGVyZm9ybSB2ZXJi b3NlIGVycm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4gUE1EcyBpbml0aWFsaXplIHRoaXMNCj4g Pj4gKyAqIHN0cnVjdHVyZSBpbiBjYXNlIG9mIGVycm9yIG9ubHkuDQo+ID4+ICsgKiBAcmV0dXJu DQo+ID4+ICsgKiAtICgwKSBpZiBzdWNjZXNzLg0KPiA+PiArICogLSAoLUVOT1NZUykgaWYgdW5k ZXJseWluZyBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZ1bmN0aW9uYWxpdHkuDQo+ID4+ ICsgKiAtICgtRUlPKSBpZiB1bmRlcmx5aW5nIGRldmljZSBpcyByZW1vdmVkLg0KPiA+PiArICog LSAoLUVOT0VOVCkgaWYgYWN0aW9uIHBvaW50ZWQgYnkgKmFjdGlvbiogaGFuZGxlIHdhcyBub3Qg Zm91bmQuDQo+ID4+ICsgKiAtICgtRVRPT01BTllSRUZTKSBpZiBhY3Rpb24gcG9pbnRlZCBieSAq YWN0aW9uKiBoYW5kbGUgc3RpbGwgdXNlZA0KPiA+PiBieSBvbmUgb3INCj4gPj4gKyAqIG1vcmUg cnVsZXMNCj4gPj4gKyAqIHJ0ZV9lcnJubyBpcyBhbHNvIHNldC4NCj4gPj4gKyAqLw0KPiA+PiAr X19ydGVfZXhwZXJpbWVudGFsDQo+ID4+ICtpbnQNCj4gPj4gK3J0ZV9mbG93X3NoYXJlZF9hY3Rp b25fZGVzdHJveSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+PiArIHN0cnVjdCBydGVfZmxvd19zaGFy ZWRfYWN0aW9uICphY3Rpb24sDQo+ID4+ICsgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7 DQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+PiArICogQHdhcm5pbmcNCj4gPj4gKyAqIEBiIEVYUEVS SU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPj4g KyAqDQo+ID4+ICsgKiBVcGRhdGVzIGlucGxhY2UgdGhlIHNoYXJlZCBhY3Rpb24gY29uZmlndXJh dGlvbiBwb2ludGVkIGJ5DQo+ID4+ICphY3Rpb24qIGhhbmRsZQ0KPiANCj4gVXBkYXRlcyAtPiBV cGRhdGUNCj4gaW5wbGFjZSAtPiBpbi1wbGFjZQ0KPiANCj4gPj4gKyAqIHdpdGggdGhlIGNvbmZp Z3VyYXRpb24gcHJvdmlkZWQgYXMgKnVwZGF0ZSogYXJndW1lbnQuDQo+ID4+ICsgKiBUaGUgdXBk YXRlIG9mIHRoZSBzaGFyZWQgYWN0aW9uIGNvbmZpZ3VyYXRpb24gZWZmZWN0cyBhbGwgZmxvdw0K PiA+PiBydWxlcyByZXVzaW5nDQo+IA0KPiBNYXkgYmU6IHJldXNpbmcgLT4gdXNpbmcNCj4gDQo+ ID4+ICsgKiB0aGUgYWN0aW9uIHZpYSBoYW5kbGUuDQo+IA0KPiBUaGUgaW50ZXJlc3RpbmcgcXVl c3Rpb24gd2hhdCB0byBkbywgaWYgc29tZSBydWxlIGNhbm5vdCBoYXZlIGENCj4gbmV3IGFjdGlv biAoaS5lLiBuZXcgYWN0aW9uIGlzIGludmFsaWQgZm9yIGEgcnVsZSkuDQo+IE1heSBiZSBpdCBp cyBiZXR0ZXIgdG8gaGlnaGxpZ2h0IGl0Lg0KPiANCj4gPj4gKyAqDQo+ID4+ICsgKiBAcGFyYW1b aW5dIHBvcnRfaWQNCj4gPj4gKyAqIFRoZSBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIEV0aGVybmV0 IGRldmljZS4NCj4gPj4gKyAqIEBwYXJhbVtpbl0gYWN0aW9uDQo+ID4+ICsgKiBIYW5kbGUgZm9y IHRoZSBzaGFyZWQgYWN0aW9uIHRvIGJlIHVwZGF0ZWQuDQo+ID4+ICsgKiBAcGFyYW1baW5dIHVw ZGF0ZQ0KPiA+PiArICogQWN0aW9uIHNwZWNpZmljYXRpb24gdXNlZCB0byBtb2RpZnkgdGhlIGFj dGlvbiBwb2ludGVkIGJ5IGhhbmRsZS4NCj4gPj4gKyAqICp1cGRhdGUqIHNob3VsZCBiZSBvZiBz YW1lIHR5cGUgd2l0aCB0aGUgYWN0aW9uIHBvaW50ZWQgYnkgdGhlDQo+ID4+ICphY3Rpb24qDQo+ ID4+ICsgKiBoYW5kbGUgYXJndW1lbnQsIG90aGVyd2lzZSBjb25zaWRlcmVkIGFzIGludmFsaWQu DQo+IA0KPiBXaHk/IElmIGl0IGlzIGEgZ2VuZXJpYyBydWxlLCBpdCBzaG91bGQgYmUgY2hlY2tl ZCBvbiBhIGdlbmVyaWMNCj4gZXRoZGV2IGxheWVyLCBidXQgSSB3b3VsZCBub3QgaW1wb3NlIHRo ZSBsaW1pdGF0aW9uLiBJZiBQTUQNCj4gbWF5IGNoYW5nZSBpdCwgd2h5IGdlbmVyaWMgaW50ZXJm YWNlIHNwZWNpZmljYXRpb24gc2hvdWxkDQo+IHJlc3RyaWN0IGl0Lg0KPiANCj4gPj4gKyAqIEBw YXJhbVtvdXRdIGVycm9yDQo+ID4+ICsgKiBQZXJmb3JtIHZlcmJvc2UgZXJyb3IgcmVwb3J0aW5n IGlmIG5vdCBOVUxMLiBQTURzIGluaXRpYWxpemUgdGhpcw0KPiA+PiArICogc3RydWN0dXJlIGlu IGNhc2Ugb2YgZXJyb3Igb25seS4NCj4gPj4gKyAqIEByZXR1cm4NCj4gPj4gKyAqIC0gKDApIGlm IHN1Y2Nlc3MuDQo+ID4+ICsgKiAtICgtRU5PU1lTKSBpZiB1bmRlcmx5aW5nIGRldmljZSBkb2Vz IG5vdCBzdXBwb3J0IHRoaXMgZnVuY3Rpb25hbGl0eS4NCj4gPj4gKyAqIC0gKC1FSU8pIGlmIHVu ZGVybHlpbmcgZGV2aWNlIGlzIHJlbW92ZWQuDQo+ID4+ICsgKiAtICgtRUlOVkFMKSBpZiAqdXBk YXRlKiBpbnZhbGlkLg0KPiA+PiArICogLSAoLUVOT1RTVVApIGlmICp1cGRhdGUqIHZhbGlkIGJ1 dCB1bnN1cHBvcnRlZC4NCj4gPj4gKyAqIC0gKC1FTk9FTlQpIGlmIGFjdGlvbiBwb2ludGVkIGJ5 ICpjdHgqIHdhcyBub3QgZm91bmQuDQo+ID4+ICsgKiBydGVfZXJybm8gaXMgYWxzbyBzZXQuDQo+ ID4+ICsgKi8NCj4gPj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+PiAraW50DQo+ID4+ICtydGVf Zmxvd19zaGFyZWRfYWN0aW9uX3VwZGF0ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+PiArIHN0cnVj dCBydGVfZmxvd19zaGFyZWRfYWN0aW9uICphY3Rpb24sDQo+ID4+ICsgY29uc3Qgc3RydWN0IHJ0 ZV9mbG93X2FjdGlvbiAqdXBkYXRlLA0KPiA+PiArIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJy b3IpOw0KPiA+PiArDQo+ID4+ICsvKioNCj4gPj4gKyAqIEB3YXJuaW5nDQo+ID4+ICsgKiBAYiBF WFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ ID4+ICsgKg0KPiA+PiArICogUXVlcnkgdGhlIHNoYXJlZCBhY3Rpb24gYnkgaGFuZGxlLg0KPiA+ PiArICoNCj4gPj4gKyAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHJldHJpZXZpbmcgYWN0aW9uLXNw ZWNpZmljIGRhdGEgc3VjaCBhcw0KPiA+PiBjb3VudGVycy4NCj4gDQo+ICJUaGlzIGZ1bmN0aW9u IGFsbG93cyByZXRyaWV2aW5nIiAtPiBSZXRyaWV2ZSBvciBHZXQgb3IgUXVlcnkNCj4gDQo+ID4+ ICsgKiBEYXRhIGlzIGdhdGhlcmVkIGJ5IHNwZWNpYWwgYWN0aW9uIHdoaWNoIG1heSBiZSBwcmVz ZW50L3JlZmVyZW5jZWQgaW4NCj4gPj4gKyAqIG1vcmUgdGhhbiBvbmUgZmxvdyBydWxlIGRlZmlu aXRpb24uDQo+ID4+ICsgKg0KPiA+PiArICogXHNlZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9DT1VO VA0KPiA+PiArICoNCj4gPj4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4+ICsgKiBQb3J0IGlkZW50 aWZpZXIgb2YgRXRoZXJuZXQgZGV2aWNlLg0KPiA+PiArICogQHBhcmFtW2luXSBhY3Rpb24NCj4g Pj4gKyAqIEhhbmRsZSBmb3IgdGhlIHNoYXJlZCBhY3Rpb24gdG8gcXVlcnkuDQo+ID4+ICsgKiBA cGFyYW1baW4sIG91dF0gZGF0YQ0KPiA+PiArICogUG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUg YXNzb2NpYXRlZCBxdWVyeSBkYXRhIHR5cGUuDQo+ID4+ICsgKiBAcGFyYW1bb3V0XSBlcnJvcg0K PiA+PiArICogUGVyZm9ybSB2ZXJib3NlIGVycm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4gUE1E cyBpbml0aWFsaXplIHRoaXMNCj4gPj4gKyAqIHN0cnVjdHVyZSBpbiBjYXNlIG9mIGVycm9yIG9u bHkuDQo+ID4+ICsgKg0KPiA+PiArICogQHJldHVybg0KPiA+PiArICogMCBvbiBzdWNjZXNzLCBh IG5lZ2F0aXZlIGVycm5vIHZhbHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4NCj4g Pj4gKyAqLw0KPiA+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4+ICtpbnQNCj4gPj4gK3J0ZV9m bG93X3NoYXJlZF9hY3Rpb25fcXVlcnkodWludDE2X3QgcG9ydF9pZCwNCj4gPj4gKyBjb25zdCBz dHJ1Y3QgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbiAqYWN0aW9uLA0KPiA+PiArIHZvaWQgKmRhdGEs DQo+ID4+ICsgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ID4+ICsNCj4gPj4gI2lm ZGVmIF9fY3BsdXNwbHVzDQo+ID4+IH0NCj4gPj4gI2VuZGlmDQo+ID4+IGRpZmYgLS1naXQgYS9s aWIvbGlicnRlX2V0aGRldi9ydGVfZmxvd19kcml2ZXIuaA0KPiA+PiBiL2xpYi9saWJydGVfZXRo ZGV2L3J0ZV9mbG93X2RyaXZlci5oDQo+ID4+IGluZGV4IDg4MWNjNDY5YjcuLmEyY2FlMWI1M2Mg MTAwNjQ0DQo+ID4+IC0tLSBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93X2RyaXZlci5oDQo+ ID4+ICsrKyBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93X2RyaXZlci5oDQo+ID4+IEBAIC0x MDcsNiArMTA3LDI4IEBAIHN0cnVjdCBydGVfZmxvd19vcHMgew0KPiA+PiB2b2lkICoqY29udGV4 dCwNCj4gPj4gdWludDMyX3QgbmJfY29udGV4dHMsDQo+ID4+IHN0cnVjdCBydGVfZmxvd19lcnJv ciAqZXJyKTsNCj4gPj4gKyAvKiogU2VlIHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fY3JlYXRlKCkg Ki8NCj4gPj4gKyBzdHJ1Y3QgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbiAqKCpzaGFyZWRfYWN0aW9u X2NyZWF0ZSkNCj4gPj4gKyAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4+ICsgY29uc3Qg c3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9uLA0KPiA+PiArIHN0cnVjdCBydGVfZmxvd19l cnJvciAqZXJyb3IpOw0KPiA+PiArIC8qKiBTZWUgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl9kZXN0 cm95KCkgKi8NCj4gPj4gKyBpbnQgKCpzaGFyZWRfYWN0aW9uX2Rlc3Ryb3kpDQo+ID4+ICsgKHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+PiArIHN0cnVjdCBydGVfZmxvd19zaGFyZWRfYWN0 aW9uICpzaGFyZWRfYWN0aW9uLA0KPiA+PiArIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3Ip Ow0KPiA+PiArIC8qKiBTZWUgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl91cGRhdGUoKSAqLw0KPiA+ PiArIGludCAoKnNoYXJlZF9hY3Rpb25fdXBkYXRlKQ0KPiA+PiArIChzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiwNCj4gPj4gKyBzdHJ1Y3QgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbiAqc2hhcmVkX2Fj dGlvbiwNCj4gPj4gKyBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICp1cGRhdGUsDQo+ID4+ ICsgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ID4+ICsgLyoqIFNlZSBydGVfZmxv d19zaGFyZWRfYWN0aW9uX3F1ZXJ5KCkgKi8NCj4gPj4gKyBpbnQgKCpzaGFyZWRfYWN0aW9uX3F1 ZXJ5KQ0KPiA+PiArIChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPj4gKyBjb25zdCBzdHJ1 Y3QgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbiAqc2hhcmVkX2FjdGlvbiwNCj4gPj4gKyB2b2lkICpk YXRhLA0KPiA+PiArIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpOw0KPiA+PiB9Ow0KPiA+ PiAvKioNCj4gPj4NCj4gPg0KPiA+IFRoZSBtb2RpZmljYXRpb24gb2YgInN0cnVjdCBydGVfZmxv d19vcHMiLCBsb29rcyBmaW5lLg0KPiA+IEFja2VkLWJ5OiBSYXkgS2luc2VsbGEgPG1kckBhc2hy b2UuZXU+DQo+ID4NCj4gDQoNCg==