From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00052.outbound.protection.outlook.com [40.107.0.52]) by dpdk.org (Postfix) with ESMTP id 11D1F1B8AB for ; Wed, 11 Apr 2018 10:11:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=CkxC1MsgPaU9uvqKCEkWUnVNmOb72Rio67UnXkyE1Vo=; b=GWtL8jwDgsJUDuv0sI6MGFdAaeggnE/dHT+6dYR2c/x/BnMYDn6qwF4IHweoguI8aVOps1PSOmRXBVTGJ9lsn4aQ/TqNNaZQhXizS3ntktc/dOqxSfRPA/Grl84xyN9BGD0Kj8agurEw1wQN/Er3vZK0EsB3HJl73Al6q13swK0= Received: from VI1PR05MB1678.eurprd05.prod.outlook.com (10.165.235.152) by VI1PR05MB4782.eurprd05.prod.outlook.com (20.176.4.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.10; Wed, 11 Apr 2018 08:11:50 +0000 Received: from VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::b8e2:e81f:98a:b6d0]) by VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::b8e2:e81f:98a:b6d0%14]) with mapi id 15.20.0653.018; Wed, 11 Apr 2018 08:11:50 +0000 From: "Xueming(Steven) Li" To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Shahaf Shuler , "dev@dpdk.org" Thread-Topic: [PATCH v2 04/15] net/mlx5: support Rx tunnel type identification Thread-Index: AQHT0NCyvMpimHYno0ayzuHHFIBwyaP6HF2AgAEWWqA= Date: Wed, 11 Apr 2018 08:11:50 +0000 Message-ID: References: <20180410133415.189905-1-xuemingl@mellanox.com> <20180410133415.189905-5-xuemingl@mellanox.com> <20180410151711.zlxxkzycknrtlwhr@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180410151711.zlxxkzycknrtlwhr@laranjeiro-vm.dev.6wind.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=xuemingl@mellanox.com; x-originating-ip: [114.83.166.179] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB4782; 7:TS1zwzPqH0EbKnQFRTWdp0ANe0dP5IIhh+zrj+qkrVWxVeHlunrSdAb24yAcg7ZsKO1nNexA+gZrdmUf9cRO1BkEX3nPn2v+FEo48ODlsMWNMZlLSDW50tsMlIhMIhCOeQLtAcxlUpY/SBI1LjseGGeZgrFLcX/zJXrDtoREeJ5UV06zSVbNJQoQUbzOAdXYQcjsIyen2vo+8EyoSQp6RoGP5K/u2wLciXE+gqLcZPU8Q7dNS6BExyfLXTcQsuaw x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB4782; x-ms-traffictypediagnostic: VI1PR05MB4782: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231221)(944501327)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:VI1PR05MB4782; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB4782; x-forefront-prvs: 0639027A9E x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(376002)(39860400002)(39380400002)(189003)(199004)(13464003)(6916009)(486006)(2900100001)(14454004)(3846002)(68736007)(6116002)(86362001)(6436002)(575784001)(26005)(316002)(4326008)(53936002)(446003)(66066001)(11346002)(229853002)(6246003)(105586002)(97736004)(54906003)(476003)(3660700001)(186003)(102836004)(25786009)(5250100002)(3280700002)(53946003)(9686003)(99286004)(76176011)(2906002)(33656002)(55016002)(5660300001)(106356001)(59450400001)(8936002)(74316002)(53546011)(6506007)(7736002)(305945005)(81166006)(81156014)(7696005)(478600001)(8676002)(21314002)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB4782; H:VI1PR05MB1678.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: Ik0S6bV2rT4sy3w/zguoc473fPSkOb/1vAOS2EuAD9s4IprlCQzwfdv8pjFIbzD/jhxP7V4JMWfAygmxIcdZJ1BmPkFXNuBnqnpTAbB+RmdVusZwPIuuBmQ6RrpjDDcUgxBbaSzNxUInFSXtLkauMkj5ihxnKadJEgyE09Z8Iu+pja3U+Luj4Ep1HppyFx7yJlvwFVtRj1oYCapVrhEE+G2TtgmOw4HxVPLYbW1P6EQvbgt6omoA9XDgwq5zeNz5rw3FVa8EOftJFGHCV2JwdEaI605Zb/zZqlz3Dtb9RvKSmjdsKLfV7O19dyPO6Pa22ovTepv4sMvSPC/xYqVeOdesuMi1pxG7dHc8s0hTf/IrLsvcFiv2RaF4txfTn9kzjaaaE2iHnZTnhn6YXGv8Gz3mTWZwjgOhMHhiR+tSLhY= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 259d4d8e-d632-416f-ac51-08d59f83e0ed X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 259d4d8e-d632-416f-ac51-08d59f83e0ed X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Apr 2018 08:11:50.4279 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4782 Subject: Re: [dpdk-dev] [PATCH v2 04/15] net/mlx5: support Rx tunnel type identification 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: , X-List-Received-Date: Wed, 11 Apr 2018 08:11:53 -0000 SGkgTmVsaW8sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTsOpbGlv IExhcmFuamVpcm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiBTZW50OiBUdWVzZGF5 LCBBcHJpbCAxMCwgMjAxOCAxMToxNyBQTQ0KPiBUbzogWHVlbWluZyhTdGV2ZW4pIExpIDx4dWVt aW5nbEBtZWxsYW5veC5jb20+DQo+IENjOiBTaGFoYWYgU2h1bGVyIDxzaGFoYWZzQG1lbGxhbm94 LmNvbT47IGRldkBkcGRrLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDA0LzE1XSBuZXQv bWx4NTogc3VwcG9ydCBSeCB0dW5uZWwgdHlwZQ0KPiBpZGVudGlmaWNhdGlvbg0KPiANCj4gT24g VHVlLCBBcHIgMTAsIDIwMTggYXQgMDk6MzQ6MDRQTSArMDgwMCwgWHVlbWluZyBMaSB3cm90ZToN Cj4gPiBUaGlzIHBhdGNoIGludHJvZHVjZWQgdHVubmVsIHR5cGUgaWRlbnRpZmljYXRpb24gYmFz ZWQgb24gZmxvdyBydWxlcy4NCj4gPiBJZiBmbG93cyBvZiBtdWx0aXBsZSB0dW5uZWwgdHlwZXMg YnVpbHQgb24gc2FtZSBxdWV1ZSwNCj4gPiBSVEVfUFRZUEVfVFVOTkVMX01BU0sgd2lsbCBiZSBy ZXR1cm5lZCwgYml0cyBpbiBmbG93IG1hcmsgY291bGQgYmUNCj4gPiB1c2VkIGFzIHR1bm5lbCB0 eXBlIGlkZW50aWZpZXIuDQo+IA0KPiBJIGRvbid0IHNlZSBhbnl3aGVyZSBpbiB0aGlzIHBhdGNo IHdoZXJlIHRoZSBiaXRzIGFyZSByZXNlcnZlZCB0byBpZGVudGlmeQ0KPiBhIGZsb3csIG5vciB2 YWx1ZXMgd2hpY2ggY2FuIGhlbHAgdG8gaWRlbnRpZnkgaXQuDQo+IA0KPiBJcyB0aGlzIG1pc3Np bmc/DQo+IA0KPiBBbnl3YXkgd2UgaGF2ZSBhbHJlYWR5IHZlcnkgZmV3IGJpdHMgaW4gdGhlIG1h cmsgbWFraW5nIGl0IGRpZmZpY3VsdCB0byBiZQ0KPiB1c2VkIGJ5IHRoZSB1c2VyLCByZXNlcnZp bmcgYWdhaW4gc29tZSB0byBtYXkgbGVhZCB0byByZW1vdmUgdGhlIG1hcmsNCj4gc3VwcG9ydCBm cm9tIHRoZSBmbG93cy4NCg0KTm90IGFsbCB1c2VycyB3aWxsIHVzZSBtdWx0aXBsZSB0dW5uZWwg dHlwZXMsIHRoaXMgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMgcGF0Y2gNCnNldCBhbmQgbGVmdCB0 byB1c2VyIGRlY2lzaW9uLiBJJ2xsIHVwZGF0ZSBjb21tZW50cyB0byBtYWtlIHRoaXMgY2xlYXIu DQoNCj4gDQo+ID4gU2lnbmVkLW9mZi1ieTogWHVlbWluZyBMaSA8eHVlbWluZ2xAbWVsbGFub3gu Y29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jICAgICAgICAg IHwgMTI1DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0NCj4gPiAgZHJpdmVy cy9uZXQvbWx4NS9tbHg1X3J4cS5jICAgICAgICAgICB8ICAxMSArKy0NCj4gPiAgZHJpdmVycy9u ZXQvbWx4NS9tbHg1X3J4dHguYyAgICAgICAgICB8ICAxMiArKy0tDQo+ID4gIGRyaXZlcnMvbmV0 L21seDUvbWx4NV9yeHR4LmggICAgICAgICAgfCAgIDkgKystDQo+ID4gIGRyaXZlcnMvbmV0L21s eDUvbWx4NV9yeHR4X3ZlY19uZW9uLmggfCAgMjEgKysrLS0tDQo+ID4gZHJpdmVycy9uZXQvbWx4 NS9tbHg1X3J4dHhfdmVjX3NzZS5oICB8ICAxNyArKystLQ0KPiA+ICA2IGZpbGVzIGNoYW5nZWQs IDE1NyBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jDQo+ID4gYi9kcml2ZXJzL25ldC9tbHg1L21s eDVfZmxvdy5jIGluZGV4IDg3MGQwNTI1MC4uNjVkN2E5YjYyIDEwMDY0NA0KPiA+IC0tLSBhL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21s eDVfZmxvdy5jDQo+ID4gQEAgLTIyMiw2ICsyMjIsNyBAQCBzdHJ1Y3QgcnRlX2Zsb3cgew0KPiA+ ICAJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9yc3MgcnNzX2NvbmY7IC8qKjwgUlNTIGNvbmZpZ3Vy YXRpb24gKi8NCj4gPiAgCXVpbnQxNl90ICgqcXVldWVzKVtdOyAvKio8IFF1ZXVlcyBpbmRleGVz IHRvIHVzZS4gKi8NCj4gPiAgCXVpbnQ4X3QgcnNzX2tleVs0MF07IC8qKjwgY29weSBvZiB0aGUg UlNTIGtleS4gKi8NCj4gPiArCXVpbnQzMl90IHR1bm5lbDsgLyoqPCBUdW5uZWwgdHlwZSBvZiBS VEVfUFRZUEVfVFVOTkVMX1hYWC4gKi8NCj4gPiAgCXN0cnVjdCBpYnZfY291bnRlcl9zZXQgKmNz OyAvKio8IEhvbGRzIHRoZSBjb3VudGVycyBmb3IgdGhlIHJ1bGUuICovDQo+ID4gIAlzdHJ1Y3Qg bWx4NV9mbG93X2NvdW50ZXJfc3RhdHMgY291bnRlcl9zdGF0czsvKio8VGhlIGNvdW50ZXIgc3Rh dHMuDQo+ICovDQo+ID4gIAlzdHJ1Y3QgbWx4NV9mbG93IGZyeHFbUlRFX0RJTShoYXNoX3J4cV9p bml0KV07IEBAIC0yMzgsNiArMjM5LDE5IEBADQo+ID4gc3RydWN0IHJ0ZV9mbG93IHsNCj4gPiAg CSh0eXBlKSA9PSBSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU4gfHwgXA0KPiA+ICAJKHR5cGUpID09 IFJURV9GTE9XX0lURU1fVFlQRV9HUkUpDQo+ID4NCj4gPiArY29uc3QgdWludDMyX3QgZmxvd19w dHlwZVtdID0gew0KPiA+ICsJW1JURV9GTE9XX0lURU1fVFlQRV9WWExBTl0gPSBSVEVfUFRZUEVf VFVOTkVMX1ZYTEFOLA0KPiA+ICsJW1JURV9GTE9XX0lURU1fVFlQRV9HUkVdID0gUlRFX1BUWVBF X1RVTk5FTF9HUkUsIH07DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFBUWVBFX0lEWCh0KSAoKFJURV9Q VFlQRV9UVU5ORUxfTUFTSyAmICh0KSkgPj4gMTIpDQo+ID4gKw0KPiA+ICtjb25zdCB1aW50MzJf dCBwdHlwZV9leHRbXSA9IHsNCj4gPiArCVtQVFlQRV9JRFgoUlRFX1BUWVBFX1RVTk5FTF9WWExB TildID0gUlRFX1BUWVBFX1RVTk5FTF9WWExBTiB8DQo+ID4gKwkJCQkJICAgICAgUlRFX1BUWVBF X0w0X1VEUCwNCj4gPiArCVtQVFlQRV9JRFgoUlRFX1BUWVBFX1RVTk5FTF9HUkUpXSA9IFJURV9Q VFlQRV9UVU5ORUxfR1JFLCB9Ow0KPiA+ICsNCj4gPiAgLyoqIFN0cnVjdHVyZSB0byBnZW5lcmF0 ZSBhIHNpbXBsZSBncmFwaCBvZiBsYXllcnMgc3VwcG9ydGVkIGJ5IHRoZQ0KPiA+IE5JQy4gKi8g IHN0cnVjdCBtbHg1X2Zsb3dfaXRlbXMgew0KPiA+ICAJLyoqIExpc3Qgb2YgcG9zc2libGUgYWN0 aW9ucyBmb3IgdGhlc2UgaXRlbXMuICovIEBAIC00MzcsNiArNDUxLDcgQEANCj4gPiBzdHJ1Y3Qg bWx4NV9mbG93X3BhcnNlIHsNCj4gPiAgCXVpbnQxNl90IHF1ZXVlc1tSVEVfTUFYX1FVRVVFU19Q RVJfUE9SVF07IC8qKjwgUXVldWVzIGluZGV4ZXMgdG8gdXNlLg0KPiAqLw0KPiA+ICAJdWludDhf dCByc3Nfa2V5WzQwXTsgLyoqPCBjb3B5IG9mIHRoZSBSU1Mga2V5LiAqLw0KPiA+ICAJZW51bSBo YXNoX3J4cV90eXBlIGxheWVyOyAvKio8IExhc3QgcGF0dGVybiBsYXllciBkZXRlY3RlZC4gKi8N Cj4gPiArCXVpbnQzMl90IHR1bm5lbDsgLyoqPCBUdW5uZWwgdHlwZSBvZiBSVEVfUFRZUEVfVFVO TkVMX1hYWC4gKi8NCj4gPiAgCXN0cnVjdCBpYnZfY291bnRlcl9zZXQgKmNzOyAvKio8IEhvbGRz IHRoZSBjb3VudGVyIHNldCBmb3IgdGhlIHJ1bGUNCj4gKi8NCj4gPiAgCXN0cnVjdCB7DQo+ID4g IAkJc3RydWN0IGlidl9mbG93X2F0dHIgKmlidl9hdHRyOw0KPiA+IEBAIC04NjAsNyArODc1LDcg QEAgbWx4NV9mbG93X2NvbnZlcnRfaXRlbXNfdmFsaWRhdGUoY29uc3Qgc3RydWN0DQo+IHJ0ZV9m bG93X2l0ZW0gaXRlbXNbXSwNCj4gPiAgCQlpZiAocmV0KQ0KPiA+ICAJCQlnb3RvIGV4aXRfaXRl bV9ub3Rfc3VwcG9ydGVkOw0KPiA+ICAJCWlmIChJU19UVU5ORUwoaXRlbXMtPnR5cGUpKSB7DQo+ ID4gLQkJCWlmIChwYXJzZXItPmlubmVyKSB7DQo+ID4gKwkJCWlmIChwYXJzZXItPnR1bm5lbCkg ew0KPiA+ICAJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ICAJCQkJ CQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gIAkJCQkJCSAgIGl0ZW1zLA0KPiA+ IEBAIC04NjksNiArODg0LDcgQEAgbWx4NV9mbG93X2NvbnZlcnRfaXRlbXNfdmFsaWRhdGUoY29u c3Qgc3RydWN0DQo+IHJ0ZV9mbG93X2l0ZW0gaXRlbXNbXSwNCj4gPiAgCQkJCXJldHVybiAtcnRl X2Vycm5vOw0KPiA+ICAJCQl9DQo+ID4gIAkJCXBhcnNlci0+aW5uZXIgPSBJQlZfRkxPV19TUEVD X0lOTkVSOw0KPiA+ICsJCQlwYXJzZXItPnR1bm5lbCA9IGZsb3dfcHR5cGVbaXRlbXMtPnR5cGVd Ow0KPiA+ICAJCX0NCj4gPiAgCQlpZiAocGFyc2VyLT5kcm9wKSB7DQo+ID4gIAkJCXBhcnNlci0+ cXVldWVbSEFTSF9SWFFfRVRIXS5vZmZzZXQgKz0gY3VyX2l0ZW0tPmRzdF9zejsNCj4gQEAgLTEx NjUsNg0KPiA+ICsxMTgxLDcgQEAgbWx4NV9mbG93X2NvbnZlcnQoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsDQo+ID4gIAl9DQo+ID4gIAkvKiBUaGlyZCBzdGVwLiBDb252ZXJzaW9uIHBhcnNlLCBm aWxsIHRoZSBzcGVjaWZpY2F0aW9ucy4gKi8NCj4gPiAgCXBhcnNlci0+aW5uZXIgPSAwOw0KPiA+ ICsJcGFyc2VyLT50dW5uZWwgPSAwOw0KPiA+ICAJZm9yICg7IGl0ZW1zLT50eXBlICE9IFJURV9G TE9XX0lURU1fVFlQRV9FTkQ7ICsraXRlbXMpIHsNCj4gPiAgCQlzdHJ1Y3QgbWx4NV9mbG93X2Rh dGEgZGF0YSA9IHsNCj4gPiAgCQkJLnBhcnNlciA9IHBhcnNlciwNCj4gPiBAQCAtMTYzMyw2ICsx NjUwLDcgQEAgbWx4NV9mbG93X2NyZWF0ZV92eGxhbihjb25zdCBzdHJ1Y3QNCj4gPiBydGVfZmxv d19pdGVtICppdGVtLA0KPiA+DQo+ID4gIAlpZC52bmlbMF0gPSAwOw0KPiA+ICAJcGFyc2VyLT5p bm5lciA9IElCVl9GTE9XX1NQRUNfSU5ORVI7DQo+ID4gKwlwYXJzZXItPnR1bm5lbCA9IHB0eXBl X2V4dFtQVFlQRV9JRFgoUlRFX1BUWVBFX1RVTk5FTF9WWExBTildOw0KPiA+ICAJaWYgKHNwZWMp IHsNCj4gPiAgCQlpZiAoIW1hc2spDQo+ID4gIAkJCW1hc2sgPSBkZWZhdWx0X21hc2s7DQo+ID4g QEAgLTE2ODYsNiArMTcwNCw3IEBAIG1seDVfZmxvd19jcmVhdGVfZ3JlKGNvbnN0IHN0cnVjdCBy dGVfZmxvd19pdGVtDQo+ICppdGVtIF9fcnRlX3VudXNlZCwNCj4gPiAgCX07DQo+ID4NCj4gPiAg CXBhcnNlci0+aW5uZXIgPSBJQlZfRkxPV19TUEVDX0lOTkVSOw0KPiA+ICsJcGFyc2VyLT50dW5u ZWwgPSBwdHlwZV9leHRbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxfR1JFKV07DQo+ID4gIAlt bHg1X2Zsb3dfY3JlYXRlX2NvcHkocGFyc2VyLCAmdHVubmVsLCBzaXplKTsNCj4gPiAgCXJldHVy biAwOw0KPiA+ICB9DQo+ID4gQEAgLTE4NjQsNyArMTg4Myw4IEBAIG1seDVfZmxvd19jcmVhdGVf YWN0aW9uX3F1ZXVlX3JzcyhzdHJ1Y3QNCj4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQkJCSAg ICAgIHBhcnNlci0+cnNzX2NvbmYua2V5X2xlbiwNCj4gPiAgCQkJCSAgICAgIGhhc2hfZmllbGRz LA0KPiA+ICAJCQkJICAgICAgcGFyc2VyLT5yc3NfY29uZi5xdWV1ZSwNCj4gPiAtCQkJCSAgICAg IHBhcnNlci0+cnNzX2NvbmYucXVldWVfbnVtKTsNCj4gPiArCQkJCSAgICAgIHBhcnNlci0+cnNz X2NvbmYucXVldWVfbnVtLA0KPiA+ICsJCQkJICAgICAgcGFyc2VyLT50dW5uZWwpOw0KPiA+ICAJ CWlmIChmbG93LT5mcnhxW2ldLmhyeHEpDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+ICAJCWZsb3ct PmZyeHFbaV0uaHJ4cSA9DQo+ID4gQEAgLTE4NzMsNyArMTg5Myw4IEBAIG1seDVfZmxvd19jcmVh dGVfYWN0aW9uX3F1ZXVlX3JzcyhzdHJ1Y3QNCj4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQkJ CSAgICAgIHBhcnNlci0+cnNzX2NvbmYua2V5X2xlbiwNCj4gPiAgCQkJCSAgICAgIGhhc2hfZmll bGRzLA0KPiA+ICAJCQkJICAgICAgcGFyc2VyLT5yc3NfY29uZi5xdWV1ZSwNCj4gPiAtCQkJCSAg ICAgIHBhcnNlci0+cnNzX2NvbmYucXVldWVfbnVtKTsNCj4gPiArCQkJCSAgICAgIHBhcnNlci0+ cnNzX2NvbmYucXVldWVfbnVtLA0KPiA+ICsJCQkJICAgICAgcGFyc2VyLT50dW5uZWwpOw0KPiA+ ICAJCWlmICghZmxvdy0+ZnJ4cVtpXS5ocnhxKSB7DQo+ID4gIAkJCXJldHVybiBydGVfZmxvd19l cnJvcl9zZXQoZXJyb3IsIEVOT01FTSwNCj4gPiAgCQkJCQkJICBSVEVfRkxPV19FUlJPUl9UWVBF X0hBTkRMRSwNCj4gPiBAQCAtMTg4NSw2ICsxOTA2LDQwIEBAIG1seDVfZmxvd19jcmVhdGVfYWN0 aW9uX3F1ZXVlX3JzcyhzdHJ1Y3QNCj4gPiBydGVfZXRoX2RldiAqZGV2LCAgfQ0KPiA+DQo+ID4g IC8qKg0KPiA+ICsgKiBSWFEgdXBkYXRlIGFmdGVyIGZsb3cgcnVsZSBjcmVhdGlvbi4NCj4gPiAr ICoNCj4gPiArICogQHBhcmFtIGRldg0KPiA+ICsgKiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQgZGV2 aWNlLg0KPiA+ICsgKiBAcGFyYW0gZmxvdw0KPiA+ICsgKiAgIFBvaW50ZXIgdG8gdGhlIGZsb3cg cnVsZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK21seDVfZmxvd19jcmVhdGVf dXBkYXRlX3J4cXMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBydGVfZmxvdw0KPiA+ ICsqZmxvdykgew0KPiA+ICsJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2 YXRlOw0KPiA+ICsJdW5zaWduZWQgaW50IGk7DQo+ID4gKw0KPiA+ICsJaWYgKCFkZXYtPmRhdGEt PmRldl9zdGFydGVkKQ0KPiA+ICsJCXJldHVybjsNCj4gPiArCWZvciAoaSA9IDA7IGkgIT0gZmxv dy0+cnNzX2NvbmYucXVldWVfbnVtOyArK2kpIHsNCj4gPiArCQlzdHJ1Y3QgbWx4NV9yeHFfZGF0 YSAqcnhxX2RhdGEgPSAoKnByaXYtPnJ4cXMpDQo+ID4gKwkJCQkJCSBbKCpmbG93LT5xdWV1ZXMp W2ldXTsNCj4gPiArCQlzdHJ1Y3QgbWx4NV9yeHFfY3RybCAqcnhxX2N0cmwgPQ0KPiA+ICsJCQlj b250YWluZXJfb2YocnhxX2RhdGEsIHN0cnVjdCBtbHg1X3J4cV9jdHJsLCByeHEpOw0KPiA+ICsJ CXVpbnQ4X3QgdHVubmVsID0gUFRZUEVfSURYKGZsb3ctPnR1bm5lbCk7DQo+ID4gKw0KPiA+ICsJ CXJ4cV9kYXRhLT5tYXJrIHw9IGZsb3ctPm1hcms7DQo+ID4gKwkJaWYgKCF0dW5uZWwpDQo+ID4g KwkJCWNvbnRpbnVlOw0KPiA+ICsJCXJ4cV9jdHJsLT50dW5uZWxfdHlwZXNbdHVubmVsXSArPSAx Ow0KPiANCj4gSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB5b3UgbmVlZCBzdWNoIGFycmF5LCB0aGUg TklDIGlzIHVuYWJsZSB0byByZXR1cm4NCj4gdGhlIHR1bm5lbCB0eXBlIGhhcyBpdCByZXR1cm5z IG9ubHkgb25lIGJpdCBzYXlpbmcgdHVubmVsLg0KPiBXaHkgZG9uJ3QgaXQgc3RvcmUgaW4gdGhl IHByaXYgc3RydWN0dXJlIHRoZSBjdXJyZW50IGNvbmZpZ3VyZWQgdHVubmVsPw0KDQpUaGlzIGFy cmF5IGlzIHVzZWQgdG8gY291bnQgdHVubmVsIHR5cGVzIGJvdW5kIHRvIHF1ZXVlLCBpZiBvbmx5 IG9uZSB0dW5uZWwgdHlwZSwNCnB0eXBlIHdpbGwgcmVwb3J0IHRoYXQgdHVubmVsIHR5cGUsIFRV Tk5FTCBNQVNLKG1heCB2YWx1ZSkgd2lsbCBiZSByZXR1cm5lZCBpZiANCm11bHRpcGxlIHR5cGVz IGJvdW5kIHRvIGEgcXVldWUuDQoNCkZsb3cgcnNzIGFjdGlvbiBzcGVjaWZpZXMgcXVldWVzIHRo YXQgYmluZGluZyB0byB0dW5uZWwsIHRodXMgd2UgY2FuJ3QgYXNzdW1lDQphbGwgcXVldWVzIGhh dmUgc2FtZSB0dW5uZWwgdHlwZXMsIHNvIHRoaXMgaXMgYSBwZXIgcXVldWUgc3RydWN0dXJlLg0K DQoNCmhhdmUgDQoNCj4gDQo+ID4gKwkJaWYgKHJ4cV9kYXRhLT50dW5uZWwgIT0gZmxvdy0+dHVu bmVsKQ0KPiA+ICsJCQlyeHFfZGF0YS0+dHVubmVsID0gcnhxX2RhdGEtPnR1bm5lbCA/DQo+ID4g KwkJCQkJICAgUlRFX1BUWVBFX1RVTk5FTF9NQVNLIDoNCj4gPiArCQkJCQkgICBmbG93LT50dW5u ZWw7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICAgKiBDb21wbGV0ZSBm bG93IHJ1bGUgY3JlYXRpb24uDQo+ID4gICAqDQo+ID4gICAqIEBwYXJhbSBkZXYNCj4gPiBAQCAt MTk0NCwxMiArMTk5OSw3IEBAIG1seDVfZmxvd19jcmVhdGVfYWN0aW9uX3F1ZXVlKHN0cnVjdCBy dGVfZXRoX2Rldg0KPiAqZGV2LA0KPiA+ICAJCQkJICAgTlVMTCwgImludGVybmFsIGVycm9yIGlu IGZsb3cgY3JlYXRpb24iKTsNCj4gPiAgCQlnb3RvIGVycm9yOw0KPiA+ICAJfQ0KPiA+IC0JZm9y IChpID0gMDsgaSAhPSBwYXJzZXItPnJzc19jb25mLnF1ZXVlX251bTsgKytpKSB7DQo+ID4gLQkJ c3RydWN0IG1seDVfcnhxX2RhdGEgKnEgPQ0KPiA+IC0JCQkoKnByaXYtPnJ4cXMpW3BhcnNlci0+ cnNzX2NvbmYucXVldWVbaV1dOw0KPiA+IC0NCj4gPiAtCQlxLT5tYXJrIHw9IHBhcnNlci0+bWFy azsNCj4gPiAtCX0NCj4gPiArCW1seDVfZmxvd19jcmVhdGVfdXBkYXRlX3J4cXMoZGV2LCBmbG93 KTsNCj4gPiAgCXJldHVybiAwOw0KPiA+ICBlcnJvcjoNCj4gPiAgCXJldCA9IHJ0ZV9lcnJubzsg LyogU2F2ZSBydGVfZXJybm8gYmVmb3JlIGNsZWFudXAuICovIEBAIC0yMDIyLDYNCj4gPiArMjA3 Miw3IEBAIG1seDVfZmxvd19saXN0X2NyZWF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4g PiAgCX0NCj4gPiAgCS8qIENvcHkgY29uZmlndXJhdGlvbi4gKi8NCj4gPiAgCWZsb3ctPnF1ZXVl cyA9ICh1aW50MTZfdCAoKilbXSkoZmxvdyArIDEpOw0KPiA+ICsJZmxvdy0+dHVubmVsID0gcGFy c2VyLnR1bm5lbDsNCj4gPiAgCWZsb3ctPnJzc19jb25mID0gKHN0cnVjdCBydGVfZmxvd19hY3Rp b25fcnNzKXsNCj4gPiAgCQkuZnVuYyA9IFJURV9FVEhfSEFTSF9GVU5DVElPTl9ERUZBVUxULA0K PiA+ICAJCS5sZXZlbCA9IDAsDQo+ID4gQEAgLTIxMTMsOSArMjE2NCwzOCBAQCBtbHg1X2Zsb3df bGlzdF9kZXN0cm95KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiBzdHJ1Y3QgbWx4NV9mbG93 cyAqbGlzdCwNCj4gPiAgCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0 ZTsNCj4gPiAgCXVuc2lnbmVkIGludCBpOw0KPiA+DQo+ID4gLQlpZiAoZmxvdy0+ZHJvcCB8fCAh Zmxvdy0+bWFyaykNCj4gPiArCWlmIChmbG93LT5kcm9wIHx8ICFkZXYtPmRhdGEtPmRldl9zdGFy dGVkKQ0KPiA+ICAJCWdvdG8gZnJlZTsNCj4gPiAtCWZvciAoaSA9IDA7IGkgIT0gZmxvdy0+cnNz X2NvbmYucXVldWVfbnVtOyArK2kpIHsNCj4gPiArCWZvciAoaSA9IDA7IGZsb3ctPnR1bm5lbCAm JiBpICE9IGZsb3ctPnJzc19jb25mLnF1ZXVlX251bTsgKytpKSB7DQo+ID4gKwkJLyogVXBkYXRl IHF1ZXVlIHR1bm5lbCB0eXBlLiAqLw0KPiA+ICsJCXN0cnVjdCBtbHg1X3J4cV9kYXRhICpyeHFf ZGF0YSA9ICgqcHJpdi0+cnhxcykNCj4gPiArCQkJCQkJIFsoKmZsb3ctPnF1ZXVlcylbaV1dOw0K PiA+ICsJCXN0cnVjdCBtbHg1X3J4cV9jdHJsICpyeHFfY3RybCA9DQo+ID4gKwkJCWNvbnRhaW5l cl9vZihyeHFfZGF0YSwgc3RydWN0IG1seDVfcnhxX2N0cmwsIHJ4cSk7DQo+ID4gKwkJdWludDhf dCB0dW5uZWwgPSBQVFlQRV9JRFgoZmxvdy0+dHVubmVsKTsNCj4gPiArDQo+ID4gKwkJUlRFX0FT U0VSVChyeHFfY3RybC0+dHVubmVsX3R5cGVzW3R1bm5lbF0gPiAwKTsNCj4gDQo+IHVzZSBhc3Nl cnQoKSBub3QgUlRFX0FTU0VSVCgpIG9yIG1ha2UgYSBwYXRjaCB0byBtYWtlIHN1Y2ggbW92ZSBp biB0aGUNCj4gd2hvbGUgUE1ELg0KPiANCj4gPiArCQlyeHFfY3RybC0+dHVubmVsX3R5cGVzW3R1 bm5lbF0gLT0gMTsNCj4gPiArCQlpZiAoIXJ4cV9jdHJsLT50dW5uZWxfdHlwZXNbdHVubmVsXSkg ew0KPiA+ICsJCQkvKiBVcGRhdGUgdHVubmVsIHR5cGUuICovDQo+ID4gKwkJCXVpbnQ4X3QgajsN Cj4gPiArCQkJdWludDhfdCB0eXBlcyA9IDA7DQo+ID4gKwkJCXVpbnQ4X3QgbGFzdDsNCj4gPiAr DQo+ID4gKwkJCWZvciAoaiA9IDA7IGogPCBSVEVfRElNKHJ4cV9jdHJsLT50dW5uZWxfdHlwZXMp OyBqKyspDQo+ID4gKwkJCQlpZiAocnhxX2N0cmwtPnR1bm5lbF90eXBlc1tqXSkgew0KPiA+ICsJ CQkJCXR5cGVzICs9IDE7DQo+ID4gKwkJCQkJbGFzdCA9IGo7DQo+ID4gKwkJCQl9DQo+ID4gKwkJ CS8qIEtlZXAgc2FtZSBpZiBtb3JlIHRoYW4gb25lIHR1bm5lbCB0eXBlcyBsZWZ0LiAqLw0KPiA+ ICsJCQlpZiAodHlwZXMgPT0gMSkNCj4gPiArCQkJCXJ4cV9kYXRhLT50dW5uZWwgPSBwdHlwZV9l eHRbbGFzdF07DQo+ID4gKwkJCWVsc2UgaWYgKHR5cGVzID09IDApDQo+ID4gKwkJCQkvKiBObyB0 dW5uZWwgdHlwZSBsZWZ0LiAqLw0KPiA+ICsJCQkJcnhxX2RhdGEtPnR1bm5lbCA9IDA7DQo+ID4g KwkJfQ0KPiA+ICsJfQ0KPiA+ICsJZm9yIChpID0gMDsgZmxvdy0+bWFyayAmJiBpICE9IGZsb3ct PnJzc19jb25mLnF1ZXVlX251bTsgKytpKSB7DQo+ID4gIAkJc3RydWN0IHJ0ZV9mbG93ICp0bXA7 DQo+ID4gIAkJaW50IG1hcmsgPSAwOw0KPiA+DQo+ID4gQEAgLTIzMzQsOSArMjQxNCw5IEBAIG1s eDVfZmxvd19zdG9wKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QNCj4gPiBtbHg1X2Zs b3dzICpsaXN0KSAgew0KPiA+ICAJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9w cml2YXRlOw0KPiA+ICAJc3RydWN0IHJ0ZV9mbG93ICpmbG93Ow0KPiA+ICsJdW5zaWduZWQgaW50 IGk7DQo+ID4NCj4gPiAgCVRBSUxRX0ZPUkVBQ0hfUkVWRVJTRShmbG93LCBsaXN0LCBtbHg1X2Zs b3dzLCBuZXh0KSB7DQo+ID4gLQkJdW5zaWduZWQgaW50IGk7DQo+ID4gIAkJc3RydWN0IG1seDVf aW5kX3RhYmxlX2lidiAqaW5kX3RibCA9IE5VTEw7DQo+ID4NCj4gPiAgCQlpZiAoZmxvdy0+ZHJv cCkgew0KPiA+IEBAIC0yMzgyLDYgKzI0NjIsMTYgQEAgbWx4NV9mbG93X3N0b3Aoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdA0KPiBtbHg1X2Zsb3dzICpsaXN0KQ0KPiA+ICAJCURSVl9M T0coREVCVUcsICJwb3J0ICV1IGZsb3cgJXAgcmVtb3ZlZCIsIGRldi0+ZGF0YS0+cG9ydF9pZCwN Cj4gPiAgCQkJKHZvaWQgKilmbG93KTsNCj4gPiAgCX0NCj4gPiArCS8qIENsZWFudXAgUnggcXVl dWUgdHVubmVsIGluZm8uICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpICE9IHByaXYtPnJ4cXNfbjsg KytpKSB7DQo+ID4gKwkJc3RydWN0IG1seDVfcnhxX2RhdGEgKnEgPSAoKnByaXYtPnJ4cXMpW2ld Ow0KPiA+ICsJCXN0cnVjdCBtbHg1X3J4cV9jdHJsICpyeHFfY3RybCA9DQo+ID4gKwkJCWNvbnRh aW5lcl9vZihxLCBzdHJ1Y3QgbWx4NV9yeHFfY3RybCwgcnhxKTsNCj4gPiArDQo+ID4gKwkJbWVt c2V0KCh2b2lkICopcnhxX2N0cmwtPnR1bm5lbF90eXBlcywgMCwNCj4gPiArCQkgICAgICAgc2l6 ZW9mKHJ4cV9jdHJsLT50dW5uZWxfdHlwZXMpKTsNCj4gPiArCQlxLT50dW5uZWwgPSAwOw0KPiA+ ICsJfQ0KPiA+ICB9DQo+IA0KPiBUaGlzIGh1bmsgZG9lcyBub3QgaGFuZGxlIHRoZSBmYWN0IHRo ZSBSeCBxdWV1ZSBhcnJheSBtYXkgaGF2ZSBzb21lIGhvbGVzDQo+IGkuZS4gdGhlIGFwcGxpY2F0 aW9uIGlzIGFsbG93ZWQgdG8gYXNrIGZvciAxMCBxdWV1ZXMgYW5kIG9ubHkgaW5pdGlhbGlzZQ0K PiBzb21lLiAgSW4gc3VjaCBzaXR1YXRpb24gdGhpcyBjb2RlIHdpbGwgc2VnZmF1bHQuDQoNCklu IG90aGVyIHdvcmRzLCAicSIgY291bGQgYmUgTlVMTCwgY29ycmVjdD8gSSdsbCBhZGQgY2hlY2sg Zm9yIHRoaXMuDQpCVFcsIHRoZXJlIHNob3VsZCBiZSBhbiBhY3Rpb24gaXRlbSB0byBhZGQgc3Vj aCBjaGVjayBpbiByc3MvcXVldWUgZmxvdyBjcmVhdGlvbi4NCg0KPiANCj4gSXQgc2hvdWxkIG9u bHkgbWVtc2V0IHRoZSBSeCBxdWV1ZXMgbWFraW5nIHBhcnQgb2YgdGhlIGZsb3cgbm90IHRoZSBv dGhlcnMuDQoNCkNsZWFuIHRoaXMoZGVjcmVhc2UgdHVubmVsX3R5cGVzIGNvdW50ZXIgb2YgZWFj aCBxdWV1ZSkgZnJvbSBlYWNoIGZsb3cgd291bGQgYmUgdGltZSANCmNvbnN1bWluZy4gSWYgYW4g ZXJyb3IgaGFwcGVuZWQsIGNvdW50ZXIgd2lsbCBub3QgYmUgY2xlYXJlZCBhbmQgc3VjaCBzdGF0 ZSANCndpbGwgaW1wYWN0IHR1bm5lbCB0eXBlIGFmdGVyIHBvcnQgc3RhcnQgYWdhaW4uDQoNCj4g DQo+ID4gIC8qKg0KPiA+IEBAIC0yNDI5LDcgKzI1MTksOCBAQCBtbHg1X2Zsb3dfc3RhcnQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdA0KPiBtbHg1X2Zsb3dzICpsaXN0KQ0KPiA+ICAJ CQkJCSAgICAgIGZsb3ctPnJzc19jb25mLmtleV9sZW4sDQo+ID4gIAkJCQkJICAgICAgaGFzaF9y eHFfaW5pdFtpXS5oYXNoX2ZpZWxkcywNCj4gPiAgCQkJCQkgICAgICBmbG93LT5yc3NfY29uZi5x dWV1ZSwNCj4gPiAtCQkJCQkgICAgICBmbG93LT5yc3NfY29uZi5xdWV1ZV9udW0pOw0KPiA+ICsJ CQkJCSAgICAgIGZsb3ctPnJzc19jb25mLnF1ZXVlX251bSwNCj4gPiArCQkJCQkgICAgICBmbG93 LT50dW5uZWwpOw0KPiA+ICAJCQlpZiAoZmxvdy0+ZnJ4cVtpXS5ocnhxKQ0KPiA+ICAJCQkJZ290 byBmbG93X2NyZWF0ZTsNCj4gPiAgCQkJZmxvdy0+ZnJ4cVtpXS5ocnhxID0NCj4gPiBAQCAtMjQz Nyw3ICsyNTI4LDggQEAgbWx4NV9mbG93X3N0YXJ0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBz dHJ1Y3QNCj4gbWx4NV9mbG93cyAqbGlzdCkNCj4gPiAgCQkJCQkgICAgICBmbG93LT5yc3NfY29u Zi5rZXlfbGVuLA0KPiA+ICAJCQkJCSAgICAgIGhhc2hfcnhxX2luaXRbaV0uaGFzaF9maWVsZHMs DQo+ID4gIAkJCQkJICAgICAgZmxvdy0+cnNzX2NvbmYucXVldWUsDQo+ID4gLQkJCQkJICAgICAg Zmxvdy0+cnNzX2NvbmYucXVldWVfbnVtKTsNCj4gPiArCQkJCQkgICAgICBmbG93LT5yc3NfY29u Zi5xdWV1ZV9udW0sDQo+ID4gKwkJCQkJICAgICAgZmxvdy0+dHVubmVsKTsNCj4gPiAgCQkJaWYg KCFmbG93LT5mcnhxW2ldLmhyeHEpIHsNCj4gPiAgCQkJCURSVl9MT0coREVCVUcsDQo+ID4gIAkJ CQkJInBvcnQgJXUgZmxvdyAlcCBjYW5ub3QgYmUgYXBwbGllZCIsIEBAIC0NCj4gMjQ1OSwxMCAr MjU1MSw3IEBADQo+ID4gbWx4NV9mbG93X3N0YXJ0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBz dHJ1Y3QgbWx4NV9mbG93cyAqbGlzdCkNCj4gPiAgCQkJRFJWX0xPRyhERUJVRywgInBvcnQgJXUg ZmxvdyAlcCBhcHBsaWVkIiwNCj4gPiAgCQkJCWRldi0+ZGF0YS0+cG9ydF9pZCwgKHZvaWQgKilm bG93KTsNCj4gPiAgCQl9DQo+ID4gLQkJaWYgKCFmbG93LT5tYXJrKQ0KPiA+IC0JCQljb250aW51 ZTsNCj4gPiAtCQlmb3IgKGkgPSAwOyBpICE9IGZsb3ctPnJzc19jb25mLnF1ZXVlX251bTsgKytp KQ0KPiA+IC0JCQkoKnByaXYtPnJ4cXMpW2Zsb3ctPnJzc19jb25mLnF1ZXVlW2ldXS0+bWFyayA9 IDE7DQo+ID4gKwkJbWx4NV9mbG93X2NyZWF0ZV91cGRhdGVfcnhxcyhkZXYsIGZsb3cpOw0KPiA+ ICAJfQ0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvbWx4NS9tbHg1X3J4cS5jIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4cS5jDQo+ID4gaW5k ZXggMWU0MzU0YWIzLi4zNTFhY2ZjMGYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4 NS9tbHg1X3J4cS5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4cS5jDQo+ID4g QEAgLTEzODYsNiArMTM4Niw4IEBAIG1seDVfaW5kX3RhYmxlX2lidl92ZXJpZnkoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYpDQo+ID4gICAqICAgZmlyc3QgcXVldWUgaW5kZXggd2lsbCBiZSB0YWtl biBmb3IgdGhlIGluZGlyZWN0aW9uIHRhYmxlLg0KPiA+ICAgKiBAcGFyYW0gcXVldWVzX24NCj4g PiAgICogICBOdW1iZXIgb2YgcXVldWVzLg0KPiA+ICsgKiBAcGFyYW0gdHVubmVsDQo+ID4gKyAq ICAgVHVubmVsIHR5cGUuDQo+ID4gICAqDQo+ID4gICAqIEByZXR1cm4NCj4gPiAgICogICBUaGUg VmVyYnMgb2JqZWN0IGluaXRpYWxpc2VkLCBOVUxMIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlz IHNldC4NCj4gPiBAQCAtMTM5NCw3ICsxMzk2LDcgQEAgc3RydWN0IG1seDVfaHJ4cSAqICBtbHg1 X2hyeHFfbmV3KHN0cnVjdA0KPiA+IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAkgICAgICBjb25z dCB1aW50OF90ICpyc3Nfa2V5LCB1aW50MzJfdCByc3Nfa2V5X2xlbiwNCj4gPiAgCSAgICAgIHVp bnQ2NF90IGhhc2hfZmllbGRzLA0KPiA+IC0JICAgICAgY29uc3QgdWludDE2X3QgKnF1ZXVlcywg dWludDMyX3QgcXVldWVzX24pDQo+ID4gKwkgICAgICBjb25zdCB1aW50MTZfdCAqcXVldWVzLCB1 aW50MzJfdCBxdWV1ZXNfbiwgdWludDMyX3QgdHVubmVsKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3Qg cHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gIAlzdHJ1Y3QgbWx4NV9o cnhxICpocnhxOw0KPiA+IEBAIC0xNDM4LDYgKzE0NDAsNyBAQCBtbHg1X2hyeHFfbmV3KHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJaHJ4cS0+cXAgPSBxcDsNCj4gPiAgCWhyeHEtPnJz c19rZXlfbGVuID0gcnNzX2tleV9sZW47DQo+ID4gIAlocnhxLT5oYXNoX2ZpZWxkcyA9IGhhc2hf ZmllbGRzOw0KPiA+ICsJaHJ4cS0+dHVubmVsID0gdHVubmVsOw0KPiA+ICAJbWVtY3B5KGhyeHEt PnJzc19rZXksIHJzc19rZXksIHJzc19rZXlfbGVuKTsNCj4gPiAgCXJ0ZV9hdG9taWMzMl9pbmMo JmhyeHEtPnJlZmNudCk7DQo+ID4gIAlMSVNUX0lOU0VSVF9IRUFEKCZwcml2LT5ocnhxcywgaHJ4 cSwgbmV4dCk7IEBAIC0xNDY2LDYgKzE0NjksOCBAQA0KPiA+IG1seDVfaHJ4cV9uZXcoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gICAqICAgZmlyc3QgcXVldWUgaW5kZXggd2lsbCBiZSB0 YWtlbiBmb3IgdGhlIGluZGlyZWN0aW9uIHRhYmxlLg0KPiA+ICAgKiBAcGFyYW0gcXVldWVzX24N Cj4gPiAgICogICBOdW1iZXIgb2YgcXVldWVzLg0KPiA+ICsgKiBAcGFyYW0gdHVubmVsDQo+ID4g KyAqICAgVHVubmVsIHR5cGUuDQo+ID4gICAqDQo+ID4gICAqIEByZXR1cm4NCj4gPiAgICogICBB biBoYXNoIFJ4IHF1ZXVlIG9uIHN1Y2Nlc3MuDQo+ID4gQEAgLTE0NzQsNyArMTQ3OSw3IEBAIHN0 cnVjdCBtbHg1X2hyeHEgKiAgbWx4NV9ocnhxX2dldChzdHJ1Y3QNCj4gPiBydGVfZXRoX2RldiAq ZGV2LA0KPiA+ICAJICAgICAgY29uc3QgdWludDhfdCAqcnNzX2tleSwgdWludDMyX3QgcnNzX2tl eV9sZW4sDQo+ID4gIAkgICAgICB1aW50NjRfdCBoYXNoX2ZpZWxkcywNCj4gPiAtCSAgICAgIGNv bnN0IHVpbnQxNl90ICpxdWV1ZXMsIHVpbnQzMl90IHF1ZXVlc19uKQ0KPiA+ICsJICAgICAgY29u c3QgdWludDE2X3QgKnF1ZXVlcywgdWludDMyX3QgcXVldWVzX24sIHVpbnQzMl90IHR1bm5lbCkN Cj4gPiAgew0KPiA+ICAJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRl Ow0KPiA+ICAJc3RydWN0IG1seDVfaHJ4cSAqaHJ4cTsNCj4gPiBAQCAtMTQ4OSw2ICsxNDk0LDgg QEAgbWx4NV9ocnhxX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQkJY29udGlu dWU7DQo+ID4gIAkJaWYgKGhyeHEtPmhhc2hfZmllbGRzICE9IGhhc2hfZmllbGRzKQ0KPiA+ICAJ CQljb250aW51ZTsNCj4gPiArCQlpZiAoaHJ4cS0+dHVubmVsICE9IHR1bm5lbCkNCj4gPiArCQkJ Y29udGludWU7DQo+ID4gIAkJaW5kX3RibCA9IG1seDVfaW5kX3RhYmxlX2lidl9nZXQoZGV2LCBx dWV1ZXMsIHF1ZXVlc19uKTsNCj4gPiAgCQlpZiAoIWluZF90YmwpDQo+ID4gIAkJCWNvbnRpbnVl Ow0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5jDQo+ID4gYi9k cml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5jIGluZGV4IDFmNDIyYzcwYi4uZDA2MWRmYzhhIDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmMNCj4gPiArKysgYi9k cml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5jDQo+ID4gQEAgLTM0LDcgKzM0LDcgQEANCj4gPiAg I2luY2x1ZGUgIm1seDVfcHJtLmgiDQo+ID4NCj4gPiAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxp bmUgdWludDMyX3QNCj4gPiAtcnhxX2NxX3RvX3BrdF90eXBlKHZvbGF0aWxlIHN0cnVjdCBtbHg1 X2NxZSAqY3FlKTsNCj4gPiArcnhxX2NxX3RvX3BrdF90eXBlKHN0cnVjdCBtbHg1X3J4cV9kYXRh ICpyeHEsIHZvbGF0aWxlIHN0cnVjdA0KPiA+ICttbHg1X2NxZSAqY3FlKTsNCj4gPg0KPiA+ICBz dGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSBpbnQNCj4gPiAgbWx4NV9yeF9wb2xsX2xlbihzdHJ1 Y3QgbWx4NV9yeHFfZGF0YSAqcnhxLCB2b2xhdGlsZSBzdHJ1Y3QgbWx4NV9jcWUNCj4gPiAqY3Fl LCBAQCAtMTI1LDEyICsxMjUsMTQgQEAgbWx4NV9zZXRfcHR5cGVfdGFibGUodm9pZCkNCj4gPiAg CSgqcClbMHg4YV0gPSBSVEVfUFRZUEVfTDJfRVRIRVIgfCBSVEVfUFRZUEVfTDNfSVBWNF9FWFRf VU5LTk9XTiB8DQo+ID4gIAkJICAgICBSVEVfUFRZUEVfTDRfVURQOw0KPiA+ICAJLyogVHVubmVs ZWQgLSBMMyAqLw0KPiA+ICsJKCpwKVsweDQwXSA9IFJURV9QVFlQRV9MMl9FVEhFUiB8IFJURV9Q VFlQRV9MM19JUFY0X0VYVF9VTktOT1dOOw0KPiA+ICAJKCpwKVsweDQxXSA9IFJURV9QVFlQRV9M Ml9FVEhFUiB8IFJURV9QVFlQRV9MM19JUFY0X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJU RV9QVFlQRV9JTk5FUl9MM19JUFY2X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJURV9QVFlQ RV9JTk5FUl9MNF9OT05GUkFHOw0KPiA+ICAJKCpwKVsweDQyXSA9IFJURV9QVFlQRV9MMl9FVEhF UiB8IFJURV9QVFlQRV9MM19JUFY0X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJURV9QVFlQ RV9JTk5FUl9MM19JUFY0X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJURV9QVFlQRV9JTk5F Ul9MNF9OT05GUkFHOw0KPiA+ICsJKCpwKVsweGMwXSA9IFJURV9QVFlQRV9MMl9FVEhFUiB8IFJU RV9QVFlQRV9MM19JUFY2X0VYVF9VTktOT1dOOw0KPiA+ICAJKCpwKVsweGMxXSA9IFJURV9QVFlQ RV9MMl9FVEhFUiB8IFJURV9QVFlQRV9MM19JUFY2X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAg IFJURV9QVFlQRV9JTk5FUl9MM19JUFY2X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJURV9Q VFlQRV9JTk5FUl9MNF9OT05GUkFHOw0KPiA+IEBAIC0xNTc3LDYgKzE1NzksOCBAQCBtbHg1X3R4 X2J1cnN0X2VtcHcodm9pZCAqZHBka190eHEsIHN0cnVjdA0KPiA+IHJ0ZV9tYnVmICoqcGt0cywg dWludDE2X3QgcGt0c19uKQ0KPiA+ICAvKioNCj4gPiAgICogVHJhbnNsYXRlIFJYIGNvbXBsZXRp b24gZmxhZ3MgdG8gcGFja2V0IHR5cGUuDQo+ID4gICAqDQo+ID4gKyAqIEBwYXJhbVtpbl0gcnhx DQo+ID4gKyAqICAgUG9pbnRlciB0byBSWCBxdWV1ZSBzdHJ1Y3R1cmUuDQo+ID4gICAqIEBwYXJh bVtpbl0gY3FlDQo+ID4gICAqICAgUG9pbnRlciB0byBDUUUuDQo+ID4gICAqDQo+ID4gQEAgLTE1 ODYsNyArMTU5MCw3IEBAIG1seDVfdHhfYnVyc3RfZW1wdyh2b2lkICpkcGRrX3R4cSwgc3RydWN0 IHJ0ZV9tYnVmDQo+ICoqcGt0cywgdWludDE2X3QgcGt0c19uKQ0KPiA+ICAgKiAgIFBhY2tldCB0 eXBlIGZvciBzdHJ1Y3QgcnRlX21idWYuDQo+ID4gICAqLw0KPiA+ICBzdGF0aWMgaW5saW5lIHVp bnQzMl90DQo+ID4gLXJ4cV9jcV90b19wa3RfdHlwZSh2b2xhdGlsZSBzdHJ1Y3QgbWx4NV9jcWUg KmNxZSkNCj4gPiArcnhxX2NxX3RvX3BrdF90eXBlKHN0cnVjdCBtbHg1X3J4cV9kYXRhICpyeHEs IHZvbGF0aWxlIHN0cnVjdA0KPiA+ICttbHg1X2NxZSAqY3FlKQ0KPiA+ICB7DQo+ID4gIAl1aW50 OF90IGlkeDsNCj4gPiAgCXVpbnQ4X3QgcGluZm8gPSBjcWUtPnBrdF9pbmZvOw0KPiA+IEBAIC0x NjAxLDcgKzE2MDUsNyBAQCByeHFfY3FfdG9fcGt0X3R5cGUodm9sYXRpbGUgc3RydWN0IG1seDVf Y3FlICpjcWUpDQo+ID4gIAkgKiBiaXRbN10gPSBvdXRlcl9sM190eXBlDQo+ID4gIAkgKi8NCj4g PiAgCWlkeCA9ICgocGluZm8gJiAweDMpIDw8IDYpIHwgKChwdHlwZSAmIDB4ZmMwMCkgPj4gMTAp Ow0KPiA+IC0JcmV0dXJuIG1seDVfcHR5cGVfdGFibGVbaWR4XTsNCj4gPiArCXJldHVybiBtbHg1 X3B0eXBlX3RhYmxlW2lkeF0gfCByeHEtPnR1bm5lbCAqICEhKGlkeCAmICgxIDw8IDYpKTsNCj4g PiAgfQ0KPiA+DQo+ID4gIC8qKg0KPiA+IEBAIC0xODMzLDcgKzE4MzcsNyBAQCBtbHg1X3J4X2J1 cnN0KHZvaWQgKmRwZGtfcnhxLCBzdHJ1Y3QgcnRlX21idWYNCj4gKipwa3RzLCB1aW50MTZfdCBw a3RzX24pDQo+ID4gIAkJCXBrdCA9IHNlZzsNCj4gPiAgCQkJYXNzZXJ0KGxlbiA+PSAocnhxLT5j cmNfcHJlc2VudCA8PCAyKSk7DQo+ID4gIAkJCS8qIFVwZGF0ZSBwYWNrZXQgaW5mb3JtYXRpb24u ICovDQo+ID4gLQkJCXBrdC0+cGFja2V0X3R5cGUgPSByeHFfY3FfdG9fcGt0X3R5cGUoY3FlKTsN Cj4gPiArCQkJcGt0LT5wYWNrZXRfdHlwZSA9IHJ4cV9jcV90b19wa3RfdHlwZShyeHEsIGNxZSk7 DQo+ID4gIAkJCXBrdC0+b2xfZmxhZ3MgPSAwOw0KPiA+ICAJCQlpZiAocnNzX2hhc2hfcmVzICYm IHJ4cS0+cnNzX2hhc2gpIHsNCj4gPiAgCQkJCXBrdC0+aGFzaC5yc3MgPSByc3NfaGFzaF9yZXM7 DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmgNCj4gPiBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmggaW5kZXggYTcwMmNiNjAzLi42ODY2ZjY4MTggMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHguaA0KPiA+ICsrKyBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmgNCj4gPiBAQCAtMTA0LDYgKzEwNCw3IEBAIHN0cnVj dCBtbHg1X3J4cV9kYXRhIHsNCj4gPiAgCXZvaWQgKmNxX3VhcjsgLyogQ1EgdXNlciBhY2Nlc3Mg cmVnaW9uLiAqLw0KPiA+ICAJdWludDMyX3QgY3FuOyAvKiBDUSBudW1iZXIuICovDQo+ID4gIAl1 aW50OF90IGNxX2FybV9zbjsgLyogQ1EgYXJtIHNlcSBudW1iZXIuICovDQo+ID4gKwl1aW50MzJf dCB0dW5uZWw7IC8qIFR1bm5lbCBpbmZvcm1hdGlvbi4gKi8NCj4gPiAgfSBfX3J0ZV9jYWNoZV9h bGlnbmVkOw0KPiA+DQo+ID4gIC8qIFZlcmJzIFJ4IHF1ZXVlIGVsZW1lbnRzLiAqLw0KPiA+IEBA IC0xMjUsNiArMTI2LDcgQEAgc3RydWN0IG1seDVfcnhxX2N0cmwgew0KPiA+ICAJc3RydWN0IG1s eDVfcnhxX2lidiAqaWJ2OyAvKiBWZXJicyBlbGVtZW50cy4gKi8NCj4gPiAgCXN0cnVjdCBtbHg1 X3J4cV9kYXRhIHJ4cTsgLyogRGF0YSBwYXRoIHN0cnVjdHVyZS4gKi8NCj4gPiAgCXVuc2lnbmVk IGludCBzb2NrZXQ7IC8qIENQVSBzb2NrZXQgSUQgZm9yIGFsbG9jYXRpb25zLiAqLw0KPiA+ICsJ dWludDMyX3QgdHVubmVsX3R5cGVzWzE2XTsgLyogVHVubmVsIHR5cGUgY291bnRlci4gKi8NCj4g PiAgCXVuc2lnbmVkIGludCBpcnE6MTsgLyogV2hldGhlciBJUlEgaXMgZW5hYmxlZC4gKi8NCj4g PiAgCXVpbnQxNl90IGlkeDsgLyogUXVldWUgaW5kZXguICovDQo+ID4gIH07DQo+ID4gQEAgLTE0 NSw2ICsxNDcsNyBAQCBzdHJ1Y3QgbWx4NV9ocnhxIHsNCj4gPiAgCXN0cnVjdCBtbHg1X2luZF90 YWJsZV9pYnYgKmluZF90YWJsZTsgLyogSW5kaXJlY3Rpb24gdGFibGUuICovDQo+ID4gIAlzdHJ1 Y3QgaWJ2X3FwICpxcDsgLyogVmVyYnMgcXVldWUgcGFpci4gKi8NCj4gPiAgCXVpbnQ2NF90IGhh c2hfZmllbGRzOyAvKiBWZXJicyBIYXNoIGZpZWxkcy4gKi8NCj4gPiArCXVpbnQzMl90IHR1bm5l bDsgLyogVHVubmVsIHR5cGUuICovDQo+ID4gIAl1aW50MzJfdCByc3Nfa2V5X2xlbjsgLyogSGFz aCBrZXkgbGVuZ3RoIGluIGJ5dGVzLiAqLw0KPiA+ICAJdWludDhfdCByc3Nfa2V5W107IC8qIEhh c2gga2V5LiAqLw0KPiA+ICB9Ow0KPiA+IEBAIC0yNDgsMTEgKzI1MSwxMyBAQCBpbnQgbWx4NV9p bmRfdGFibGVfaWJ2X3ZlcmlmeShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiAqZGV2KTsgIHN0cnVj dCBtbHg1X2hyeHEgKm1seDVfaHJ4cV9uZXcoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4g IAkJCQljb25zdCB1aW50OF90ICpyc3Nfa2V5LCB1aW50MzJfdCByc3Nfa2V5X2xlbiwNCj4gPiAg CQkJCXVpbnQ2NF90IGhhc2hfZmllbGRzLA0KPiA+IC0JCQkJY29uc3QgdWludDE2X3QgKnF1ZXVl cywgdWludDMyX3QgcXVldWVzX24pOw0KPiA+ICsJCQkJY29uc3QgdWludDE2X3QgKnF1ZXVlcywg dWludDMyX3QgcXVldWVzX24sDQo+ID4gKwkJCQl1aW50MzJfdCB0dW5uZWwpOw0KPiA+ICBzdHJ1 Y3QgbWx4NV9ocnhxICptbHg1X2hyeHFfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ ICAJCQkJY29uc3QgdWludDhfdCAqcnNzX2tleSwgdWludDMyX3QgcnNzX2tleV9sZW4sDQo+ID4g IAkJCQl1aW50NjRfdCBoYXNoX2ZpZWxkcywNCj4gPiAtCQkJCWNvbnN0IHVpbnQxNl90ICpxdWV1 ZXMsIHVpbnQzMl90IHF1ZXVlc19uKTsNCj4gPiArCQkJCWNvbnN0IHVpbnQxNl90ICpxdWV1ZXMs IHVpbnQzMl90IHF1ZXVlc19uLA0KPiA+ICsJCQkJdWludDMyX3QgdHVubmVsKTsNCj4gPiAgaW50 IG1seDVfaHJ4cV9yZWxlYXNlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9o cnhxDQo+ID4gKmh4cnEpOyAgaW50IG1seDVfaHJ4cV9pYnZfdmVyaWZ5KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2KTsgIHVpbnQ2NF90DQo+ID4gbWx4NV9nZXRfcnhfcG9ydF9vZmZsb2Fkcyh2b2lk KTsgZGlmZiAtLWdpdA0KPiA+IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHhfdmVjX25lb24u aA0KPiA+IGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHhfdmVjX25lb24uaA0KPiA+IGluZGV4 IGJiZTE4MThlZi4uOWY5MTM2MTA4IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUv bWx4NV9yeHR4X3ZlY19uZW9uLmgNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0 eF92ZWNfbmVvbi5oDQo+ID4gQEAgLTU1MSw2ICs1NTEsNyBAQCByeHFfY3FfdG9fcHR5cGVfb2Zs YWdzX3Yoc3RydWN0IG1seDVfcnhxX2RhdGEgKnJ4cSwNCj4gPiAgCWNvbnN0IHVpbnQ2NHgxX3Qg bWJ1Zl9pbml0ID0gdmxkMV91NjQoJnJ4cS0+bWJ1Zl9pbml0aWFsaXplcik7DQo+ID4gIAljb25z dCB1aW50NjR4MV90IHIzMl9tYXNrID0gdmNyZWF0ZV91NjQoMHhmZmZmZmZmZik7DQo+ID4gIAl1 aW50NjR4Ml90IHJlYXJtMCwgcmVhcm0xLCByZWFybTIsIHJlYXJtMzsNCj4gPiArCXVpbnQ4X3Qg cHRfaWR4MCwgcHRfaWR4MSwgcHRfaWR4MiwgcHRfaWR4MzsNCj4gPg0KPiA+ICAJaWYgKHJ4cS0+ bWFyaykgew0KPiA+ICAJCWNvbnN0IHVpbnQzMng0X3QgZnRfZGVmID0gdmR1cHFfbl91MzIoTUxY NV9GTE9XX01BUktfREVGQVVMVCk7DQo+ID4gQEAgLTU4MywxNCArNTg0LDE4IEBAIHJ4cV9jcV90 b19wdHlwZV9vZmxhZ3NfdihzdHJ1Y3QgbWx4NV9yeHFfZGF0YSAqcnhxLA0KPiA+ICAJcHR5cGUg PSB2c2hybl9uX3UzMihwdHlwZV9pbmZvLCAxMCk7DQo+ID4gIAkvKiBFcnJvcmVkIHBhY2tldHMg d2lsbCBoYXZlIFJURV9QVFlQRV9BTExfTUFTSy4gKi8NCj4gPiAgCXB0eXBlID0gdm9ycl91MTYo cHR5cGUsIG9wX2Vycik7DQo+ID4gLQlwa3RzWzBdLT5wYWNrZXRfdHlwZSA9DQo+ID4gLQkJbWx4 NV9wdHlwZV90YWJsZVt2Z2V0X2xhbmVfdTgodnJlaW50ZXJwcmV0X3U4X3UxNihwdHlwZSksIDYp XTsNCj4gPiAtCXBrdHNbMV0tPnBhY2tldF90eXBlID0NCj4gPiAtCQltbHg1X3B0eXBlX3RhYmxl W3ZnZXRfbGFuZV91OCh2cmVpbnRlcnByZXRfdThfdTE2KHB0eXBlKSwgNCldOw0KPiA+IC0JcGt0 c1syXS0+cGFja2V0X3R5cGUgPQ0KPiA+IC0JCW1seDVfcHR5cGVfdGFibGVbdmdldF9sYW5lX3U4 KHZyZWludGVycHJldF91OF91MTYocHR5cGUpLCAyKV07DQo+ID4gLQlwa3RzWzNdLT5wYWNrZXRf dHlwZSA9DQo+ID4gLQkJbWx4NV9wdHlwZV90YWJsZVt2Z2V0X2xhbmVfdTgodnJlaW50ZXJwcmV0 X3U4X3UxNihwdHlwZSksIDApXTsNCj4gPiArCXB0X2lkeDAgPSB2Z2V0X2xhbmVfdTgodnJlaW50 ZXJwcmV0X3U4X3UxNihwdHlwZSksIDYpOw0KPiA+ICsJcHRfaWR4MSA9IHZnZXRfbGFuZV91OCh2 cmVpbnRlcnByZXRfdThfdTE2KHB0eXBlKSwgNCk7DQo+ID4gKwlwdF9pZHgyID0gdmdldF9sYW5l X3U4KHZyZWludGVycHJldF91OF91MTYocHR5cGUpLCAyKTsNCj4gPiArCXB0X2lkeDMgPSB2Z2V0 X2xhbmVfdTgodnJlaW50ZXJwcmV0X3U4X3UxNihwdHlwZSksIDApOw0KPiA+ICsJcGt0c1swXS0+ cGFja2V0X3R5cGUgPSBtbHg1X3B0eXBlX3RhYmxlW3B0X2lkeDBdIHwNCj4gPiArCQkJICAgICAg ICEhKHB0X2lkeDAgJiAoMSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiArCXBrdHNbMV0tPnBh Y2tldF90eXBlID0gbWx4NV9wdHlwZV90YWJsZVtwdF9pZHgxXSB8DQo+ID4gKwkJCSAgICAgICAh IShwdF9pZHgxICYgKDEgPDwgNikpICogcnhxLT50dW5uZWw7DQo+ID4gKwlwa3RzWzJdLT5wYWNr ZXRfdHlwZSA9IG1seDVfcHR5cGVfdGFibGVbcHRfaWR4Ml0gfA0KPiA+ICsJCQkgICAgICAgISEo cHRfaWR4MiAmICgxIDw8IDYpKSAqIHJ4cS0+dHVubmVsOw0KPiA+ICsJcGt0c1szXS0+cGFja2V0 X3R5cGUgPSBtbHg1X3B0eXBlX3RhYmxlW3B0X2lkeDNdIHwNCj4gPiArCQkJICAgICAgICEhKHB0 X2lkeDMgJiAoMSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiAgCS8qIEZpbGwgZmxhZ3MgZm9y IGNoZWNrc3VtIGFuZCBWTEFOLiAqLw0KPiA+ICAJcGluZm8gPSB2YW5kcV91MzIocHR5cGVfaW5m bywgcHR5cGVfb2xfbWFzayk7DQo+ID4gIAlwaW5mbyA9IHZyZWludGVycHJldHFfdTMyX3U4KA0K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eF92ZWNfc3NlLmgNCj4g PiBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4X3ZlY19zc2UuaA0KPiA+IGluZGV4IGMwODhi Y2I1MS4uZDI0OTI0ODFkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9y eHR4X3ZlY19zc2UuaA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4X3ZlY19z c2UuaA0KPiA+IEBAIC01NDIsNiArNTQyLDcgQEAgcnhxX2NxX3RvX3B0eXBlX29mbGFnc192KHN0 cnVjdCBtbHg1X3J4cV9kYXRhICpyeHEsDQo+IF9fbTEyOGkgY3Flc1s0XSwNCj4gPiAgCWNvbnN0 IF9fbTEyOGkgbWJ1Zl9pbml0ID0NCj4gPiAgCQlfbW1fbG9hZGxfZXBpNjQoKF9fbTEyOGkgKikm cnhxLT5tYnVmX2luaXRpYWxpemVyKTsNCj4gPiAgCV9fbTEyOGkgcmVhcm0wLCByZWFybTEsIHJl YXJtMiwgcmVhcm0zOw0KPiA+ICsJdWludDhfdCBwdF9pZHgwLCBwdF9pZHgxLCBwdF9pZHgyLCBw dF9pZHgzOw0KPiA+DQo+ID4gIAkvKiBFeHRyYWN0IHBrdF9pbmZvIGZpZWxkLiAqLw0KPiA+ICAJ cGluZm8wID0gX21tX3VucGFja2xvX2VwaTMyKGNxZXNbMF0sIGNxZXNbMV0pOyBAQCAtNTk1LDEw ICs1OTYsMTggQEANCj4gPiByeHFfY3FfdG9fcHR5cGVfb2ZsYWdzX3Yoc3RydWN0IG1seDVfcnhx X2RhdGEgKnJ4cSwgX19tMTI4aSBjcWVzWzRdLA0KPiA+ICAJLyogRXJyb3JlZCBwYWNrZXRzIHdp bGwgaGF2ZSBSVEVfUFRZUEVfQUxMX01BU0suICovDQo+ID4gIAlvcF9lcnIgPSBfbW1fc3JsaV9l cGkxNihvcF9lcnIsIDgpOw0KPiA+ICAJcHR5cGUgPSBfbW1fb3Jfc2kxMjgocHR5cGUsIG9wX2Vy cik7DQo+ID4gLQlwa3RzWzBdLT5wYWNrZXRfdHlwZSA9IG1seDVfcHR5cGVfdGFibGVbX21tX2V4 dHJhY3RfZXBpOChwdHlwZSwgMCldOw0KPiA+IC0JcGt0c1sxXS0+cGFja2V0X3R5cGUgPSBtbHg1 X3B0eXBlX3RhYmxlW19tbV9leHRyYWN0X2VwaTgocHR5cGUsIDIpXTsNCj4gPiAtCXBrdHNbMl0t PnBhY2tldF90eXBlID0gbWx4NV9wdHlwZV90YWJsZVtfbW1fZXh0cmFjdF9lcGk4KHB0eXBlLCA0 KV07DQo+ID4gLQlwa3RzWzNdLT5wYWNrZXRfdHlwZSA9IG1seDVfcHR5cGVfdGFibGVbX21tX2V4 dHJhY3RfZXBpOChwdHlwZSwgNildOw0KPiA+ICsJcHRfaWR4MCA9IF9tbV9leHRyYWN0X2VwaTgo cHR5cGUsIDApOw0KPiA+ICsJcHRfaWR4MSA9IF9tbV9leHRyYWN0X2VwaTgocHR5cGUsIDIpOw0K PiA+ICsJcHRfaWR4MiA9IF9tbV9leHRyYWN0X2VwaTgocHR5cGUsIDQpOw0KPiA+ICsJcHRfaWR4 MyA9IF9tbV9leHRyYWN0X2VwaTgocHR5cGUsIDYpOw0KPiA+ICsJcGt0c1swXS0+cGFja2V0X3R5 cGUgPSBtbHg1X3B0eXBlX3RhYmxlW3B0X2lkeDBdIHwNCj4gPiArCQkJICAgICAgICEhKHB0X2lk eDAgJiAoMSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiArCXBrdHNbMV0tPnBhY2tldF90eXBl ID0gbWx4NV9wdHlwZV90YWJsZVtwdF9pZHgxXSB8DQo+ID4gKwkJCSAgICAgICAhIShwdF9pZHgx ICYgKDEgPDwgNikpICogcnhxLT50dW5uZWw7DQo+ID4gKwlwa3RzWzJdLT5wYWNrZXRfdHlwZSA9 IG1seDVfcHR5cGVfdGFibGVbcHRfaWR4Ml0gfA0KPiA+ICsJCQkgICAgICAgISEocHRfaWR4MiAm ICgxIDw8IDYpKSAqIHJ4cS0+dHVubmVsOw0KPiA+ICsJcGt0c1szXS0+cGFja2V0X3R5cGUgPSBt bHg1X3B0eXBlX3RhYmxlW3B0X2lkeDNdIHwNCj4gPiArCQkJICAgICAgICEhKHB0X2lkeDMgJiAo MSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiAgCS8qIEZpbGwgZmxhZ3MgZm9yIGNoZWNrc3Vt IGFuZCBWTEFOLiAqLw0KPiA+ICAJcGluZm8gPSBfbW1fYW5kX3NpMTI4KHBpbmZvLCBwdHlwZV9v bF9tYXNrKTsNCj4gPiAgCXBpbmZvID0gX21tX3NodWZmbGVfZXBpOChjdl9mbGFnX3NlbCwgcGlu Zm8pOw0KPiA+IC0tDQo+ID4gMi4xMy4zDQo+IA0KPiBSZWdhcmRzLA0KPiANCj4gLS0NCj4gTsOp bGlvIExhcmFuamVpcm8NCj4gNldJTkQNCg==