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 99A2CA0514; Wed, 15 Jan 2020 19:13:53 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DD0461C238; Wed, 15 Jan 2020 19:13:52 +0100 (CET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130050.outbound.protection.outlook.com [40.107.13.50]) by dpdk.org (Postfix) with ESMTP id 54B4D1C237 for ; Wed, 15 Jan 2020 19:13:51 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YGypY9LulIRtQlWXD4KgA5HL68RGSkm1tPILq1tr9gGH4IYh7KpZ7LcDnufzLEHAZ07l4nJ4Y+vyIX9JeZ2i9viWkZLbaDETvLm2iVPCuXeANjstizP7MnI/aF406dCZ9u/ebPb8ebo8OOppNirY0krBJLgdUE1ctjQlWDnX7TExJOS9NxvdzgpsWTfIewpIe+uc8RB4E3Q0wqktiE+v1JYVwEbcR/Ea8CkR72XOZcai35u4tD2Pg+BxiT/kGUzgEIRgn3Qx+qMtYiGGsmMCM/cpUGywDyiCEkBM79BFJa+T6QTA/6C6emOPzAJg1tKvnzW8QOQHBEQK8DypfBewJg== 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=XhVUL/DB6em8/+oY93htD3W/FZyAEmNZiEwnzGccIv0=; b=MZMdCo675i25h6Gf7px4/+NcsuFKykl4CxY55R5wNps8wRHpeUGTDfmcTRkGxaFBzNTP1/4kBr4LzrlmtAikAmXMGOM7vSMW/AN2E72YEaD9EynW3o6VKR3boXFe+kxnJGmaBeVsvfAZH4o1WqwiDwQQJMXx4SXgjU6xeLW1Mc4Kaww/P+szL8+dhUoNV+PEHdxkeqJ0XVUYjek4hiYJozCtkVOpJh0sIOB3hv5FzbIC7s5siRWcZIYQdYSHlb++zC1cws1D4KI+4X1hXl7H/TVkrlnktmVX3P5HNGPAqSXHFGg88tWuoX8loUnSZD6QLGqBhlxa4RSBFpdL/X+mFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none 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:X-MS-Exchange-SenderADCheck; bh=XhVUL/DB6em8/+oY93htD3W/FZyAEmNZiEwnzGccIv0=; b=OVlEyehn77sbfJ2fPzI9UmB3Hx2d8qfN0H3sJVQV0lT7/dGFAVGfQhMD/zEU0f5XIhkY6GuvA/zfLmkb4Y31VLRCtUDKBh3ooe4HQnAtkm1+5P3fVWnmJuGgoo4XoR61zi5ADV1iIZsUdXJqKbwHYm18pyvFLH4KwW8Uq8Q/eQ8= Received: from AM4PR05MB3265.eurprd05.prod.outlook.com (10.171.188.154) by AM4PR05MB3236.eurprd05.prod.outlook.com (10.171.186.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2623.9; Wed, 15 Jan 2020 18:13:48 +0000 Received: from AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::68eb:ad79:71f4:110f]) by AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::68eb:ad79:71f4:110f%3]) with mapi id 15.20.2623.018; Wed, 15 Jan 2020 18:13:48 +0000 From: Slava Ovsiienko To: Olivier Matz CC: "dev@dpdk.org" , Matan Azrad , Raslan Darawsheh , Ori Kam , Shahaf Shuler , "stephen@networkplumber.org" Thread-Topic: [PATCH v3 2/4] mbuf: create packet pool with external memory buffers Thread-Index: AQHVyvRZ9lY+proG7kmpEgJ2JeTWjafsBXBA Date: Wed, 15 Jan 2020 18:13:48 +0000 Message-ID: References: <20191118094938.192850-1-shahafs@mellanox.com> <1578993305-15165-1-git-send-email-viacheslavo@mellanox.com> <1578993305-15165-3-git-send-email-viacheslavo@mellanox.com> <20200114160443.GT22738@platinum> In-Reply-To: <20200114160443.GT22738@platinum> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=viacheslavo@mellanox.com; x-originating-ip: [95.164.10.10] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 5e8e90b9-4a00-4fe6-df86-08d799e6ab17 x-ms-traffictypediagnostic: AM4PR05MB3236:|AM4PR05MB3236: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3631; x-forefront-prvs: 02830F0362 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(366004)(189003)(199004)(54906003)(66476007)(66556008)(498600001)(71200400001)(66446008)(2906002)(64756008)(33656002)(66946007)(4326008)(55016002)(81166006)(9686003)(8676002)(8936002)(6506007)(53546011)(86362001)(52536014)(6916009)(186003)(26005)(7696005)(76116006)(30864003)(81156014)(5660300002)(21314003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3236; H:AM4PR05MB3265.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-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: i4KSwwD781MuvxYj/C2z7Wo4DtGdIWoKWNYHfqeelZk5IqqA5m5SB6pZ3zjKnKJjuvXRytgfJbqHio0e9N9iWOFBpIEbbRMG0O02wsUUxpMnJCPiK+DKq7DFranK01u/CKA9+ILihm3MQUfHmeXCaazdll6WX03II8YRgdQ6Gvbydc0HvUDyqxzkJ2IkjAKpdTuFrErKEfCKDoO3U2ivjaek1oV+0lvQcjb5pZjEOF1PrF0zAOUr3VzEgshExsEtvZWn/WGQrOPTgzo1R7W4zJa0Y1le8OhKaNlQVX704hZI8HtuKUuMkvRUVT9C7j9J1qeRuMUvX8PurK8//VtM/N3ysCPo611SVUZOQhSQa/2yPYJpWEv4zqxAQoGFCUWgXDPAg2I4PpsFHDntJlzp+0tB+LFAF3Na1fqh1wcKohgxC98tD+2ljVS5fQfkgjL3STpAzZ531nkiZjqgqhQMwpK/9OMLfl0zUaVC0FZCTDlIaRHMi6yYFeupoBYWPNwi Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5e8e90b9-4a00-4fe6-df86-08d799e6ab17 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jan 2020 18:13:48.6861 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: d81a2Z6YIyjupNjx/W/rpV6RBp9nAR+7PwOjblPauBZnvYGv5PwKdfyFFX+6g526EYTl1hlvWM+3tc1O4sgdZsqYW6gZCVSSisR/qIr150k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3236 Subject: Re: [dpdk-dev] [PATCH v3 2/4] mbuf: create packet pool with external memory buffers 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBPbGl2aWVyIE1hdHogPG9saXZp ZXIubWF0ekA2d2luZC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIEphbnVhcnkgMTQsIDIwMjAgMTg6 MDUNCj4gVG86IFNsYXZhIE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbWVsbGFub3guY29tPg0KPiBD YzogZGV2QGRwZGsub3JnOyBNYXRhbiBBenJhZCA8bWF0YW5AbWVsbGFub3guY29tPjsgUmFzbGFu IERhcmF3c2hlaA0KPiA8cmFzbGFuZEBtZWxsYW5veC5jb20+OyBPcmkgS2FtIDxvcmlrYUBtZWxs YW5veC5jb20+OyBTaGFoYWYgU2h1bGVyDQo+IDxzaGFoYWZzQG1lbGxhbm94LmNvbT47IHN0ZXBo ZW5AbmV0d29ya3BsdW1iZXIub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMi80XSBtYnVm OiBjcmVhdGUgcGFja2V0IHBvb2wgd2l0aCBleHRlcm5hbCBtZW1vcnkNCj4gYnVmZmVycw0KPiAN Cj4gT24gVHVlLCBKYW4gMTQsIDIwMjAgYXQgMDk6MTU6MDNBTSArMDAwMCwgVmlhY2hlc2xhdiBP dnNpaWVua28gd3JvdGU6DQo+ID4gVGhlIGRlZGljYXRlZCByb3V0aW5lIHJ0ZV9wa3RtYnVmX3Bv b2xfY3JlYXRlX2V4dGJ1ZigpIGlzIHByb3ZpZGVkIHRvDQo+ID4gY3JlYXRlIG1idWYgcG9vbCB3 aXRoIGRhdGEgYnVmZmVycyBsb2NhdGVkIGluIHRoZSBwaW5uZWQgZXh0ZXJuYWwNCj4gPiBtZW1v cnkuIFRoZSBhcHBsaWNhdGlvbiBwcm92aWRlcyB0aGUgZXh0ZXJuYWwgbWVtb3J5IGRlc2NyaXB0 aW9uIGFuZA0KPiA+IHJvdXRpbmUgaW5pdGlhbGlzZXMgZWFjaCBtYnVmIHdpdGggYXBwcm9wcmlh dGUgdmlydHVhbCBhbmQgcGh5c2ljYWwNCj4gPiBidWZmZXIgYWRkcmVzcy4NCj4gPiBJdCBpcyBl bnRpcmVseSBhcHBsaWNhdGlvbiByZXNwb25zaWJpbGl0eSB0byByZWdpc3RlciBleHRlcm5hbCBt ZW1vcnkNCj4gPiB3aXRoIHJ0ZV9leHRtZW1fcmVnaXN0ZXIoKSBBUEksIG1hcCB0aGlzIG1lbW9y eSwgZXRjLg0KPiA+DQo+ID4gVGhlIG5ldyBpbnRyb2R1Y2VkIGZsYWcgUlRFX1BLVE1CVUZfUE9P TF9GX1BJTk5FRF9FWFRfQlVGIGlzIHNldCBpbg0KPiA+IHByaXZhdGUgcG9vbCBzdHJ1Y3R1cmUs IHNwZWNpZnlpbmcgdGhlIG5ldyBzcGVjaWFsIHBvb2wgdHlwZS4gVGhlDQo+ID4gYWxsb2NhdGVk IG1idWZzIGZyb20gcG9vbCBvZiB0aGlzIGtpbmQgd2lsbCBoYXZlIHRoZSBFWFRfQVRUQUNIRURf TUJVRg0KPiA+IGZsYWcgc2V0IGFuZCBOVUxMIHNoYXJlZCBpbmZvIHBvaW50ZXIsIGJlY2F1c2Ug ZXh0ZXJuYWwgYnVmZmVycyBhcmUNCj4gPiBub3Qgc3VwcG9zZWQgdG8gYmUgZnJlZWQgYW5kIHNo YXJpbmcgbWFuYWdlbWVudCBpcyBub3QgbmVlZGVkLiBBbHNvLA0KPiA+IHRoZXNlIG1idWZzIGNh biBub3QgYmUgYXR0YWNoZWQgdG8gb3RoZXIgbWJ1ZnMgKG5vdCBpbnRlbmRlZCB0byBiZQ0KPiA+ IGluZGlyZWN0KS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFZpYWNoZXNsYXYgT3ZzaWllbmtv IDx2aWFjaGVzbGF2b0BtZWxsYW5veC5jb20+DQo+ID4gLS0tDQo+ID4gIGxpYi9saWJydGVfbWJ1 Zi9ydGVfbWJ1Zi5jICAgICAgICAgICB8IDE0NA0KPiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLQ0KPiA+ICBsaWIvbGlicnRlX21idWYvcnRlX21idWYuaCAgICAgICAgICAgfCAg ODYgKysrKysrKysrKysrKysrKysrKystDQo+ID4gIGxpYi9saWJydGVfbWJ1Zi9ydGVfbWJ1Zl92 ZXJzaW9uLm1hcCB8ICAgMSArDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMjI4IGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9tYnVm L3J0ZV9tYnVmLmMgYi9saWIvbGlicnRlX21idWYvcnRlX21idWYuYw0KPiA+IGluZGV4IDhmYTdm NDkuLmQxNTE0NjkgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9tYnVmL3J0ZV9tYnVmLmMN Cj4gPiArKysgYi9saWIvbGlicnRlX21idWYvcnRlX21idWYuYw0KPiA+IEBAIC01OSw5ICs1OSw5 IEBADQo+ID4gIAl9DQo+ID4NCj4gPiAgCVJURV9BU1NFUlQobXAtPmVsdF9zaXplID49IHNpemVv ZihzdHJ1Y3QgcnRlX21idWYpICsNCj4gPiAtCQl1c2VyX21icF9wcml2LT5tYnVmX2RhdGFfcm9v bV9zaXplICsNCj4gPiArCQkoKHVzZXJfbWJwX3ByaXYtPmZsYWdzICYNCj4gUlRFX1BLVE1CVUZf UE9PTF9GX1BJTk5FRF9FWFRfQlVGKSA/DQo+ID4gKwkJMCA6IHVzZXJfbWJwX3ByaXYtPm1idWZf ZGF0YV9yb29tX3NpemUpICsNCj4gPiAgCQl1c2VyX21icF9wcml2LT5tYnVmX3ByaXZfc2l6ZSk7 DQo+IA0KPiBJcyB0aGlzIGNoZWNrIHJlYWxseSBuZWVkZWQ/DQpJdCBzZWVtcyBzbywgaXQgaXMg aW4gc2VwYXJhdGVkIHJvdXRpbmUsIHdoaWNoIG1pZ2h0IGJlIGNhbGxlZCBleHRlcm5hbGx5Lg0K DQo+IA0KPiA+IC0JUlRFX0FTU0VSVCh1c2VyX21icF9wcml2LT5mbGFncyA9PSAwKTsNCj4gDQo+ IFdlIGNhbiBrZWVwDQo+ICBSVEVfQVNTRVJUKHVzZXJfbWJwX3ByaXYtPmZsYWdzICYNCj4gflJU RV9QS1RNQlVGX1BPT0xfRl9QSU5ORURfRVhUX0JVRiA9PSAwKTsNCk9LLCB0aGFua3MuDQoNCj4g DQo+ID4NCj4gPiAgCW1icF9wcml2ID0gcnRlX21lbXBvb2xfZ2V0X3ByaXYobXApOw0KPiA+ICAJ bWVtY3B5KG1icF9wcml2LCB1c2VyX21icF9wcml2LCBzaXplb2YoKm1icF9wcml2KSk7IEBAIC0x MDcsNg0KPiA+ICsxMDcsNjMgQEANCj4gPiAgCW0tPm5leHQgPSBOVUxMOw0KPiA+ICB9DQo+ID4N Cj4gPiArLyoNCj4gPiArICogcGt0bWJ1ZiBjb25zdHJ1Y3RvciBmb3IgdGhlIHBvb2wgd2l0aCBw aW5uZWQgZXh0ZXJuYWwgYnVmZmVyLA0KPiA+ICsgKiBnaXZlbiBhcyBhIGNhbGxiYWNrIGZ1bmN0 aW9uIHRvIHJ0ZV9tZW1wb29sX29ial9pdGVyKCkgaW4NCj4gPiArICogcnRlX3BrdG1idWZfcG9v bF9jcmVhdGVfZXh0YnVmKCkuIFNldCB0aGUgZmllbGRzIG9mIGEgcGFja2V0DQo+ID4gKyAqIG1i dWYgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMuDQo+ID4gKyAqLw0KPiA+ICt2b2lkDQo+ID4gK3J0 ZV9wa3RtYnVmX2luaXRfZXh0bWVtKHN0cnVjdCBydGVfbWVtcG9vbCAqbXAsDQo+ID4gKwkJCXZv aWQgKm9wYXF1ZV9hcmcsDQo+ID4gKwkJCXZvaWQgKl9tLA0KPiA+ICsJCQlfX2F0dHJpYnV0ZV9f KCh1bnVzZWQpKSB1bnNpZ25lZCBpbnQgaSkgew0KPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICptID0g X207DQo+ID4gKwlzdHJ1Y3QgcnRlX3BrdG1idWZfZXh0bWVtX2luaXRfY3R4ICpjdHggPSBvcGFx dWVfYXJnOw0KPiA+ICsJc3RydWN0IHJ0ZV9wa3RtYnVmX2V4dG1lbSAqZXh0X21lbTsNCj4gPiAr CXVpbnQzMl90IG1idWZfc2l6ZSwgYnVmX2xlbiwgcHJpdl9zaXplOw0KPiA+ICsNCj4gPiArCXBy aXZfc2l6ZSA9IHJ0ZV9wa3RtYnVmX3ByaXZfc2l6ZShtcCk7DQo+ID4gKwltYnVmX3NpemUgPSBz aXplb2Yoc3RydWN0IHJ0ZV9tYnVmKSArIHByaXZfc2l6ZTsNCj4gPiArCWJ1Zl9sZW4gPSBydGVf cGt0bWJ1Zl9kYXRhX3Jvb21fc2l6ZShtcCk7DQo+ID4gKw0KPiA+ICsJUlRFX0FTU0VSVChSVEVf QUxJR04ocHJpdl9zaXplLCBSVEVfTUJVRl9QUklWX0FMSUdOKSA9PQ0KPiBwcml2X3NpemUpOw0K PiA+ICsJUlRFX0FTU0VSVChtcC0+ZWx0X3NpemUgPj0gbWJ1Zl9zaXplKTsNCj4gPiArCVJURV9B U1NFUlQoYnVmX2xlbiA8PSBVSU5UMTZfTUFYKTsNCj4gPiArDQo+ID4gKwltZW1zZXQobSwgMCwg bWJ1Zl9zaXplKTsNCj4gPiArCW0tPnByaXZfc2l6ZSA9IHByaXZfc2l6ZTsNCj4gPiArCW0tPmJ1 Zl9sZW4gPSAodWludDE2X3QpYnVmX2xlbjsNCj4gPiArDQo+ID4gKwkvKiBzZXQgdGhlIGRhdGEg YnVmZmVyIHBvaW50ZXJzIHRvIGV4dGVybmFsIG1lbW9yeSAqLw0KPiA+ICsJZXh0X21lbSA9IGN0 eC0+ZXh0X21lbSArIGN0eC0+ZXh0Ow0KPiA+ICsNCj4gPiArCVJURV9BU1NFUlQoY3R4LT5leHQg PCBjdHgtPmV4dF9udW0pOw0KPiA+ICsJUlRFX0FTU0VSVChjdHgtPm9mZiA8IGV4dF9tZW0tPmJ1 Zl9sZW4pOw0KPiA+ICsNCj4gPiArCW0tPmJ1Zl9hZGRyID0gUlRFX1BUUl9BREQoZXh0X21lbS0+ YnVmX3B0ciwgY3R4LT5vZmYpOw0KPiA+ICsJbS0+YnVmX2lvdmEgPSBleHRfbWVtLT5idWZfaW92 YSA9PSBSVEVfQkFEX0lPVkEgPw0KPiA+ICsJCSAgICAgIFJURV9CQURfSU9WQSA6IChleHRfbWVt LT5idWZfaW92YSArIGN0eC0+b2ZmKTsNCj4gPiArDQo+ID4gKwljdHgtPm9mZiArPSBleHRfbWVt LT5lbHRfc2l6ZTsNCj4gPiArCWlmIChjdHgtPm9mZiA+PSBleHRfbWVtLT5idWZfbGVuKSB7DQo+ ID4gKwkJY3R4LT5vZmYgPSAwOw0KPiA+ICsJCSsrY3R4LT5leHQ7DQo+ID4gKwl9DQo+ID4gKwkv KiBrZWVwIHNvbWUgaGVhZHJvb20gYmV0d2VlbiBzdGFydCBvZiBidWZmZXIgYW5kIGRhdGEgKi8N Cj4gPiArCW0tPmRhdGFfb2ZmID0gUlRFX01JTihSVEVfUEtUTUJVRl9IRUFEUk9PTSwgKHVpbnQx Nl90KW0tDQo+ID5idWZfbGVuKTsNCj4gPiArDQo+ID4gKwkvKiBpbml0IHNvbWUgY29uc3RhbnQg ZmllbGRzICovDQo+ID4gKwltLT5wb29sID0gbXA7DQo+ID4gKwltLT5uYl9zZWdzID0gMTsNCj4g PiArCW0tPnBvcnQgPSBNQlVGX0lOVkFMSURfUE9SVDsNCj4gPiArCW0tPm9sX2ZsYWdzID0gRVhU X0FUVEFDSEVEX01CVUY7DQo+ID4gKwlydGVfbWJ1Zl9yZWZjbnRfc2V0KG0sIDEpOw0KPiA+ICsJ bS0+bmV4dCA9IE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICAvKiBIZWxwZXIgdG8g Y3JlYXRlIGEgbWJ1ZiBwb29sIHdpdGggZ2l2ZW4gbWVtcG9vbCBvcHMgbmFtZSovICBzdHJ1Y3QN Cj4gPiBydGVfbWVtcG9vbCAqICBydGVfcGt0bWJ1Zl9wb29sX2NyZWF0ZV9ieV9vcHMoY29uc3Qg Y2hhciAqbmFtZSwNCj4gPiB1bnNpZ25lZCBpbnQgbiwgQEAgLTE2OSw2ICsyMjYsODkgQEAgc3Ry dWN0IHJ0ZV9tZW1wb29sICoNCj4gPiAgCQkJZGF0YV9yb29tX3NpemUsIHNvY2tldF9pZCwgTlVM TCk7DQo+ID4gIH0NCj4gPg0KPiA+ICsvKiBIZWxwZXIgdG8gY3JlYXRlIGEgbWJ1ZiBwb29sIHdp dGggcGlubmVkIGV4dGVybmFsIGRhdGEgYnVmZmVycy4gKi8NCj4gPiArc3RydWN0IHJ0ZV9tZW1w b29sICogcnRlX3BrdG1idWZfcG9vbF9jcmVhdGVfZXh0YnVmKGNvbnN0IGNoYXIgKm5hbWUsDQo+ ID4gK3Vuc2lnbmVkIGludCBuLA0KPiA+ICsJdW5zaWduZWQgaW50IGNhY2hlX3NpemUsIHVpbnQx Nl90IHByaXZfc2l6ZSwNCj4gPiArCXVpbnQxNl90IGRhdGFfcm9vbV9zaXplLCBpbnQgc29ja2V0 X2lkLA0KPiA+ICsJc3RydWN0IHJ0ZV9wa3RtYnVmX2V4dG1lbSAqZXh0X21lbSwgdW5zaWduZWQg aW50IGV4dF9udW0pIHsNCj4gPiArCXN0cnVjdCBydGVfbWVtcG9vbCAqbXA7DQo+ID4gKwlzdHJ1 Y3QgcnRlX3BrdG1idWZfcG9vbF9wcml2YXRlIG1icF9wcml2Ow0KPiA+ICsJc3RydWN0IHJ0ZV9w a3RtYnVmX2V4dG1lbV9pbml0X2N0eCBpbml0X2N0eDsNCj4gPiArCWNvbnN0IGNoYXIgKm1wX29w c19uYW1lOw0KPiA+ICsJdW5zaWduZWQgaW50IGVsdF9zaXplOw0KPiA+ICsJdW5zaWduZWQgaW50 IGksIG5fZWx0cyA9IDA7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCWlmIChSVEVfQUxJ R04ocHJpdl9zaXplLCBSVEVfTUJVRl9QUklWX0FMSUdOKSAhPSBwcml2X3NpemUpIHsNCj4gPiAr CQlSVEVfTE9HKEVSUiwgTUJVRiwgIm1idWYgcHJpdl9zaXplPSV1IGlzIG5vdCBhbGlnbmVkXG4i LA0KPiA+ICsJCQlwcml2X3NpemUpOw0KPiA+ICsJCXJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gPiAr CQlyZXR1cm4gTlVMTDsNCj4gPiArCX0NCj4gPiArCS8qIENoZWNrIHRoZSBleHRlcm5hbCBtZW1v cnkgZGVzY3JpcHRvcnMuICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgZXh0X251bTsgaSsrKSB7 DQo+ID4gKwkJc3RydWN0IHJ0ZV9wa3RtYnVmX2V4dG1lbSAqZXh0bSA9IGV4dF9tZW0gKyBpOw0K PiA+ICsNCj4gPiArCQlpZiAoIWV4dG0tPmVsdF9zaXplIHx8ICFleHRtLT5idWZfbGVuIHx8ICFl eHRtLT5idWZfcHRyKSB7DQo+ID4gKwkJCVJURV9MT0coRVJSLCBNQlVGLCAiaW52YWxpZCBleHRt ZW0gZGVzY3JpcHRvclxuIik7DQo+ID4gKwkJCXJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gPiArCQkJ cmV0dXJuIE5VTEw7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmIChkYXRhX3Jvb21fc2l6ZSA+IGV4dG0t PmVsdF9zaXplKSB7DQo+ID4gKwkJCVJURV9MT0coRVJSLCBNQlVGLCAiZXh0IGVsdF9zaXplPSV1 IGlzIHRvbyBzbWFsbFxuIiwNCj4gPiArCQkJCXByaXZfc2l6ZSk7DQo+ID4gKwkJCXJ0ZV9lcnJu byA9IEVJTlZBTDsNCj4gPiArCQkJcmV0dXJuIE5VTEw7DQo+ID4gKwkJfQ0KPiA+ICsJCW5fZWx0 cyArPSBleHRtLT5idWZfbGVuIC8gZXh0bS0+ZWx0X3NpemU7DQo+ID4gKwl9DQo+ID4gKwkvKiBD aGVjayB3aGV0aGVyIGVub3VnaCBleHRlcm5hbCBtZW1vcnkgcHJvdmlkZWQuICovDQo+ID4gKwlp ZiAobl9lbHRzIDwgbikgew0KPiA+ICsJCVJURV9MT0coRVJSLCBNQlVGLCAibm90IGVub3VnaCBl eHRtZW1cbiIpOw0KPiA+ICsJCXJ0ZV9lcnJubyA9IEVOT01FTTsNCj4gPiArCQlyZXR1cm4gTlVM TDsNCj4gPiArCX0NCj4gPiArCWVsdF9zaXplID0gc2l6ZW9mKHN0cnVjdCBydGVfbWJ1ZikgKyAo dW5zaWduZWQgaW50KXByaXZfc2l6ZTsNCj4gPiArCW1lbXNldCgmbWJwX3ByaXYsIDAsIHNpemVv ZihtYnBfcHJpdikpOw0KPiA+ICsJbWJwX3ByaXYubWJ1Zl9kYXRhX3Jvb21fc2l6ZSA9IGRhdGFf cm9vbV9zaXplOw0KPiA+ICsJbWJwX3ByaXYubWJ1Zl9wcml2X3NpemUgPSBwcml2X3NpemU7DQo+ ID4gKwltYnBfcHJpdi5mbGFncyA9IFJURV9QS1RNQlVGX1BPT0xfRl9QSU5ORURfRVhUX0JVRjsN Cj4gPiArDQo+ID4gKwltcCA9IHJ0ZV9tZW1wb29sX2NyZWF0ZV9lbXB0eShuYW1lLCBuLCBlbHRf c2l6ZSwgY2FjaGVfc2l6ZSwNCj4gPiArCQkgc2l6ZW9mKHN0cnVjdCBydGVfcGt0bWJ1Zl9wb29s X3ByaXZhdGUpLCBzb2NrZXRfaWQsIDApOw0KPiA+ICsJaWYgKG1wID09IE5VTEwpDQo+ID4gKwkJ cmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ICsJbXBfb3BzX25hbWUgPSBydGVfbWJ1Zl9iZXN0X21l bXBvb2xfb3BzKCk7DQo+ID4gKwlyZXQgPSBydGVfbWVtcG9vbF9zZXRfb3BzX2J5bmFtZShtcCwg bXBfb3BzX25hbWUsIE5VTEwpOw0KPiA+ICsJaWYgKHJldCAhPSAwKSB7DQo+ID4gKwkJUlRFX0xP RyhFUlIsIE1CVUYsICJlcnJvciBzZXR0aW5nIG1lbXBvb2wgaGFuZGxlclxuIik7DQo+ID4gKwkJ cnRlX21lbXBvb2xfZnJlZShtcCk7DQo+ID4gKwkJcnRlX2Vycm5vID0gLXJldDsNCj4gPiArCQly ZXR1cm4gTlVMTDsNCj4gPiArCX0NCj4gPiArCXJ0ZV9wa3RtYnVmX3Bvb2xfaW5pdChtcCwgJm1i cF9wcml2KTsNCj4gPiArDQo+ID4gKwlyZXQgPSBydGVfbWVtcG9vbF9wb3B1bGF0ZV9kZWZhdWx0 KG1wKTsNCj4gPiArCWlmIChyZXQgPCAwKSB7DQo+ID4gKwkJcnRlX21lbXBvb2xfZnJlZShtcCk7 DQo+ID4gKwkJcnRlX2Vycm5vID0gLXJldDsNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwlpbml0X2N0eCA9IChzdHJ1Y3QgcnRlX3BrdG1idWZfZXh0bWVtX2luaXRf Y3R4KXsNCj4gPiArCQkuZXh0X21lbSA9IGV4dF9tZW0sDQo+ID4gKwkJLmV4dF9udW0gPSBleHRf bnVtLA0KPiA+ICsJCS5leHQgPSAwLA0KPiA+ICsJCS5vZmYgPSAwLA0KPiA+ICsJfTsNCj4gPiAr CXJ0ZV9tZW1wb29sX29ial9pdGVyKG1wLCBydGVfcGt0bWJ1Zl9pbml0X2V4dG1lbSwgJmluaXRf Y3R4KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gbXA7DQo+ID4gK30NCj4gDQo+IEluc3RlYWQgb2Yg ZHVwbGljYXRpbmcgc29tZSBjb2RlLCB3b3VsZCBpdCBiZSBwb3NzaWJsZSB0byBkbzoNCj4gDQo+ IGludA0KPiBydGVfcGt0bWJ1Zl9wb29sX2F0dGFjaF9leHRidWYoc3RydWN0IHJ0ZV9tZW1wb29s ICptcCwNCj4gCXN0cnVjdCBydGVfcGt0bWJ1Zl9leHRtZW0gKmV4dF9tZW0sIHVuc2lnbmVkIGlu dCBleHRfbnVtKSB7DQo+IAlzdHJ1Y3QgcnRlX3BrdG1idWZfZXh0bWVtX2luaXRfY3R4IGluaXRf Y3R4ID0geyAwIH07DQo+IAlzdHJ1Y3QgcnRlX3BrdG1idWZfcG9vbF9wcml2YXRlICpwcml2Ow0K PiANCj4gCS8qIFhYWCBhc3NlcnQgbWVtcG9vbCBpcyBmdWxseSBwb3B1bGF0ZWQ/ICovDQo+IA0K PiAJcHJpdiA9IHJ0ZV9tZW1wb29sX2dldF9wcml2KG1wKTsNCj4gCW1icF9wcml2LmZsYWdzIHw9 IFJURV9QS1RNQlVGX1BPT0xfRl9QSU5ORURfRVhUX0JVRjsNCj4gDQo+IAlydGVfbWVtcG9vbF9v YmpfaXRlcihtcCwgcnRlX3BrdG1idWZfaW5pdF9leHRtZW0sICZpbml0X2N0eCk7DQo+IA0KPiAJ cmV0dXJuIGluaXRfY3R4LnJldDsNCj4gfQ0KPiANCj4gVGhlIGFwcGxpY2F0aW9uIHdvdWxkIGhh dmUgdG8gY2FsbDoNCj4gDQo+IAlydGVfcGt0bWJ1Zl9wb29sX2NyZWF0ZSguLi4pOw0KPiAJcnRl X3BrdG1idWZfcG9vbF9hdHRhY2hfZXh0YnVmKC4uLik7DQo+IA0KSXQgc2VlbXMgdGhlcmUgYXJl IHNvbWUgZGlzYWR2YW50YWdlczoNCi0gbm8gZGF0YV9yb29tX3NpemUgY2hlY2sgKHdlIHNob3Vs ZCByZW1vdmUgYXNzZXJ0cyBmcm9tIHJ0ZV9wa3RtYnVmX3Bvb2xfaW5pdCkNCi0gcnRlX21lbXBv b2xfb2JqX2l0ZXIgd291bGQgYmUgY2FsbGVkIHR3aWNlLCBpdCBtaWdodCBpbnZvbHZlIHJ0ZV9t ZW1wb29sX3ZpcnQyaW92YSgpDQogIGFuZCBpdCB3b3VsZCB0YWtlIHNvbWUgdGltZQ0KDQpUaGUg Y29kZSBkdXBsaWNhdGlvbiBpcyBub3Qgc28gbGFyZ2UgYXMgaXQgY291bGQgYmUgc2VlbiBmcm9t IHRoZSBkaWZmIC0gdGhlIHBhcnQgb2YNCnRoZSAgcnRlX3BrdG1idWZfcG9vbF9jcmVhdGVfZXh0 YnVmKCkgaXMgcmVsYXRlZCB0byBjaGVja2luZyBleHRtZW0sIGFuZCB0aGUgbWFpbiBwYXJ0DQpv ZiBqb2IgaXMgZG9uZSBpbiB0aGUgcnRlX3BrdG1idWZfaW5pdF9leHRtZW0oKS4NCg0KPiANCj4g PiArDQo+ID4gIC8qIGRvIHNvbWUgc2FuaXR5IGNoZWNrcyBvbiBhIG1idWY6IHBhbmljIGlmIGl0 IGZhaWxzICovICB2b2lkDQo+ID4gcnRlX21idWZfc2FuaXR5X2NoZWNrKGNvbnN0IHN0cnVjdCBy dGVfbWJ1ZiAqbSwgaW50IGlzX2hlYWRlcikgZGlmZg0KPiA+IC0tZ2l0IGEvbGliL2xpYnJ0ZV9t YnVmL3J0ZV9tYnVmLmggYi9saWIvbGlicnRlX21idWYvcnRlX21idWYuaCBpbmRleA0KPiA+IDhm NDg2YWYuLjdiZGUyOTcgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9tYnVmL3J0ZV9tYnVm LmgNCj4gPiArKysgYi9saWIvbGlicnRlX21idWYvcnRlX21idWYuaA0KPiA+IEBAIC02NDIsNiAr NjQyLDM0IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHJ0ZV9tYnVmDQo+ID4gKnJ0ZV9tYnVmX3Jh d19hbGxvYyhzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wKSAgdm9pZA0KPiBydGVfcGt0bWJ1Zl9pbml0 KHN0cnVjdCBydGVfbWVtcG9vbCAqbXAsIHZvaWQgKm9wYXF1ZV9hcmcsDQo+ID4gIAkJICAgICAg dm9pZCAqbSwgdW5zaWduZWQgaSk7DQo+ID4NCj4gPiArLyoqIFRoZSBjb250ZXh0IHRvIGluaXRp YWxpemUgdGhlIG1idWZzIHdpdGggcGlubmVkIGV4dGVybmFsIGJ1ZmZlcnMuDQo+ID4gKyovIHN0 cnVjdCBydGVfcGt0bWJ1Zl9leHRtZW1faW5pdF9jdHggew0KPiA+ICsJc3RydWN0IHJ0ZV9wa3Rt YnVmX2V4dG1lbSAqZXh0X21lbTsgLyogcG9pbnRlciB0byBkZXNjcmlwdG9yDQo+IGFycmF5LiAq Lw0KPiA+ICsJdW5zaWduZWQgaW50IGV4dF9udW07IC8qIG51bWJlciBvZiBkZXNjcmlwdG9ycyBp biBhcnJheS4gKi8NCj4gPiArCXVuc2lnbmVkIGludCBleHQ7IC8qIGxvb3AgZGVzY3JpcHRvciBp bmRleC4gKi8NCj4gPiArCXNpemVfdCBvZmY7IC8qIGxvb3AgYnVmZmVyIG9mZnNldC4gKi8gfTsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBUaGUgcGFja2V0IG1idWYgY29uc3RydWN0b3IgZm9y IHBvb2xzIHdpdGggcGlubmVkIGV4dGVybmFsIG1lbW9yeS4NCj4gPiArICoNCj4gPiArICogVGhp cyBmdW5jdGlvbiBpbml0aWFsaXplcyBzb21lIGZpZWxkcyBpbiB0aGUgbWJ1ZiBzdHJ1Y3R1cmUg dGhhdA0KPiA+ICthcmUNCj4gPiArICogbm90IG1vZGlmaWVkIGJ5IHRoZSB1c2VyIG9uY2UgY3Jl YXRlZCAob3JpZ2luIHBvb2wsIGJ1ZmZlciBzdGFydA0KPiA+ICsgKiBhZGRyZXNzLCBhbmQgc28g b24pLiBUaGlzIGZ1bmN0aW9uIGlzIGdpdmVuIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24NCj4gPiAr dG8NCj4gPiArICogcnRlX21lbXBvb2xfb2JqX2l0ZXIoKSBjYWxsZWQgZnJvbSBydGVfbWVtcG9v bF9jcmVhdGVfZXh0bWVtKCkuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBtcA0KPiA+ICsgKiAg IFRoZSBtZW1wb29sIGZyb20gd2hpY2ggbWJ1ZnMgb3JpZ2luYXRlLg0KPiA+ICsgKiBAcGFyYW0g b3BhcXVlX2FyZw0KPiA+ICsgKiAgIEEgcG9pbnRlciB0byB0aGUgcnRlX3BrdG1idWZfZXh0bWVt X2luaXRfY3R4IC0gaW5pdGlhbGl6YXRpb24NCj4gPiArICogICBjb250ZXh0IHN0cnVjdHVyZQ0K PiA+ICsgKiBAcGFyYW0gbQ0KPiA+ICsgKiAgIFRoZSBtYnVmIHRvIGluaXRpYWxpemUuDQo+ID4g KyAqIEBwYXJhbSBpDQo+ID4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSBtYnVmIGluIHRoZSBwb29s IHRhYmxlLg0KPiA+ICsgKi8NCj4gPiArdm9pZCBydGVfcGt0bWJ1Zl9pbml0X2V4dG1lbShzdHJ1 Y3QgcnRlX21lbXBvb2wgKm1wLCB2b2lkDQo+ICpvcGFxdWVfYXJnLA0KPiA+ICsJCQkgICAgIHZv aWQgKm0sIHVuc2lnbmVkIGludCBpKTsNCj4gPg0KPiA+ICAvKioNCj4gPiAgICogQSAgcGFja2V0 IG1idWYgcG9vbCBjb25zdHJ1Y3Rvci4NCj4gPiBAQCAtNzQzLDYgKzc3MSw2MiBAQCBzdHJ1Y3Qg cnRlX21lbXBvb2wgKg0KPiA+ICAJdW5zaWduZWQgaW50IGNhY2hlX3NpemUsIHVpbnQxNl90IHBy aXZfc2l6ZSwgdWludDE2X3QgZGF0YV9yb29tX3NpemUsDQo+ID4gIAlpbnQgc29ja2V0X2lkLCBj b25zdCBjaGFyICpvcHNfbmFtZSk7DQo+ID4NCj4gPiArLyoqIEEgc3RydWN0dXJlIHRoYXQgZGVz Y3JpYmVzIHRoZSBwaW5uZWQgZXh0ZXJuYWwgYnVmZmVyIHNlZ21lbnQuICovDQo+ID4gK3N0cnVj dCBydGVfcGt0bWJ1Zl9leHRtZW0gew0KPiA+ICsJdm9pZCAqYnVmX3B0cjsJCS8qKjwgVGhlIHZp cnR1YWwgYWRkcmVzcyBvZiBkYXRhIGJ1ZmZlci4gKi8NCj4gPiArCXJ0ZV9pb3ZhX3QgYnVmX2lv dmE7CS8qKjwgVGhlIElPIGFkZHJlc3Mgb2YgdGhlIGRhdGEgYnVmZmVyLiAqLw0KPiA+ICsJc2l6 ZV90IGJ1Zl9sZW47CQkvKio8IEV4dGVybmFsIGJ1ZmZlciBsZW5ndGggaW4gYnl0ZXMuICovDQo+ ID4gKwl1aW50MTZfdCBlbHRfc2l6ZTsJLyoqPCBtYnVmIGVsZW1lbnQgc2l6ZSBpbiBieXRlcy4g Ki8NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBDcmVhdGUgYSBtYnVmIHBvb2wg d2l0aCBleHRlcm5hbCBwaW5uZWQgZGF0YSBidWZmZXJzLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlz IGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIGluaXRpYWxpemVzIGEgcGFja2V0IG1idWYgcG9vbCB0aGF0 DQo+ID4gK2NvbnRhaW5zDQo+ID4gKyAqIG9ubHkgbWJ1ZnMgd2l0aCBleHRlcm5hbCBidWZmZXIu IEl0IGlzIGEgd3JhcHBlciB0byBydGVfbWVtcG9vbA0KPiBmdW5jdGlvbnMuDQo+ID4gKyAqDQo+ ID4gKyAqIEBwYXJhbSBuYW1lDQo+ID4gKyAqICAgVGhlIG5hbWUgb2YgdGhlIG1idWYgcG9vbC4N Cj4gPiArICogQHBhcmFtIG4NCj4gPiArICogICBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRo ZSBtYnVmIHBvb2wuIFRoZSBvcHRpbXVtIHNpemUgKGluIHRlcm1zDQo+ID4gKyAqICAgb2YgbWVt b3J5IHVzYWdlKSBmb3IgYSBtZW1wb29sIGlzIHdoZW4gbiBpcyBhIHBvd2VyIG9mIHR3byBtaW51 cw0KPiBvbmU6DQo+ID4gKyAqICAgbiA9ICgyXnEgLSAxKS4NCj4gPiArICogQHBhcmFtIGNhY2hl X3NpemUNCj4gPiArICogICBTaXplIG9mIHRoZSBwZXItY29yZSBvYmplY3QgY2FjaGUuIFNlZSBy dGVfbWVtcG9vbF9jcmVhdGUoKSBmb3INCj4gPiArICogICBkZXRhaWxzLg0KPiA+ICsgKiBAcGFy YW0gcHJpdl9zaXplDQo+ID4gKyAqICAgU2l6ZSBvZiBhcHBsaWNhdGlvbiBwcml2YXRlIGFyZSBi ZXR3ZWVuIHRoZSBydGVfbWJ1ZiBzdHJ1Y3R1cmUNCj4gPiArICogICBhbmQgdGhlIGRhdGEgYnVm ZmVyLiBUaGlzIHZhbHVlIG11c3QgYmUgYWxpZ25lZCB0bw0KPiBSVEVfTUJVRl9QUklWX0FMSUdO Lg0KPiA+ICsgKiBAcGFyYW0gZGF0YV9yb29tX3NpemUNCj4gPiArICogICBTaXplIG9mIGRhdGEg YnVmZmVyIGluIGVhY2ggbWJ1ZiwgaW5jbHVkaW5nIFJURV9QS1RNQlVGX0hFQURST09NLg0KPiA+ ICsgKiBAcGFyYW0gc29ja2V0X2lkDQo+ID4gKyAqICAgVGhlIHNvY2tldCBpZGVudGlmaWVyIHdo ZXJlIHRoZSBtZW1vcnkgc2hvdWxkIGJlIGFsbG9jYXRlZC4gVGhlDQo+ID4gKyAqICAgdmFsdWUg Y2FuIGJlICpTT0NLRVRfSURfQU5ZKiBpZiB0aGVyZSBpcyBubyBOVU1BIGNvbnN0cmFpbnQgZm9y IHRoZQ0KPiA+ICsgKiAgIHJlc2VydmVkIHpvbmUuDQo+ID4gKyAqIEBwYXJhbSBleHRfbWVtDQo+ ID4gKyAqICAgUG9pbnRlciB0byB0aGUgYXJyYXkgb2Ygc3RydWN0dXJlcyBkZXNjcmliaW5nIHRo ZSBleHRlcm5hbCBtZW1vcnkNCj4gPiArICogICBmb3IgZGF0YSBidWZmZXJzLiBJdCBpcyBjYWxs ZXIgcmVzcG9uc2liaWxpdHkgdG8gcmVnaXN0ZXIgdGhpcyBtZW1vcnkNCj4gPiArICogICB3aXRo IHJ0ZV9leHRtZW1fcmVnaXN0ZXIoKSAoaWYgbmVlZGVkKSwgbWFwIHRoaXMgbWVtb3J5IHRvDQo+ IGFwcHJvcHJpYXRlDQo+ID4gKyAqICAgcGh5c2ljYWwgZGV2aWNlLCBldGMuDQo+ID4gKyAqIEBw YXJhbSBleHRfbnVtDQo+ID4gKyAqICAgTnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBleHRfbWVt IGFycmF5Lg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIG5l dyBhbGxvY2F0ZWQgbWVtcG9vbCwgb24gc3VjY2Vzcy4gTlVMTCBvbiBlcnJvcg0KPiA+ICsgKiAg IHdpdGggcnRlX2Vycm5vIHNldCBhcHByb3ByaWF0ZWx5LiBQb3NzaWJsZSBydGVfZXJybm8gdmFs dWVzIGluY2x1ZGU6DQo+ID4gKyAqICAgIC0gRV9SVEVfTk9fQ09ORklHIC0gZnVuY3Rpb24gY291 bGQgbm90IGdldCBwb2ludGVyIHRvIHJ0ZV9jb25maWcNCj4gc3RydWN0dXJlDQo+ID4gKyAqICAg IC0gRV9SVEVfU0VDT05EQVJZIC0gZnVuY3Rpb24gd2FzIGNhbGxlZCBmcm9tIGEgc2Vjb25kYXJ5 IHByb2Nlc3MNCj4gaW5zdGFuY2UNCj4gPiArICogICAgLSBFSU5WQUwgLSBjYWNoZSBzaXplIHBy b3ZpZGVkIGlzIHRvbyBsYXJnZSwgb3IgcHJpdl9zaXplIGlzIG5vdCBhbGlnbmVkLg0KPiA+ICsg KiAgICAtIEVOT1NQQyAtIHRoZSBtYXhpbXVtIG51bWJlciBvZiBtZW16b25lcyBoYXMgYWxyZWFk eSBiZWVuDQo+IGFsbG9jYXRlZA0KPiA+ICsgKiAgICAtIEVFWElTVCAtIGEgbWVtem9uZSB3aXRo IHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMNCj4gPiArICogICAgLSBFTk9NRU0gLSBubyBh cHByb3ByaWF0ZSBtZW1vcnkgYXJlYSBmb3VuZCBpbiB3aGljaCB0byBjcmVhdGUNCj4gbWVtem9u ZQ0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK3N0cnVjdCBydGVfbWVt cG9vbCAqDQo+ID4gK3J0ZV9wa3RtYnVmX3Bvb2xfY3JlYXRlX2V4dGJ1Zihjb25zdCBjaGFyICpu YW1lLCB1bnNpZ25lZCBpbnQgbiwNCj4gPiArCXVuc2lnbmVkIGludCBjYWNoZV9zaXplLCB1aW50 MTZfdCBwcml2X3NpemUsDQo+ID4gKwl1aW50MTZfdCBkYXRhX3Jvb21fc2l6ZSwgaW50IHNvY2tl dF9pZCwNCj4gPiArCXN0cnVjdCBydGVfcGt0bWJ1Zl9leHRtZW0gKmV4dF9tZW0sIHVuc2lnbmVk IGludCBleHRfbnVtKTsNCj4gPiArDQo+ID4gIC8qKg0KPiA+ICAgKiBHZXQgdGhlIGRhdGEgcm9v bSBzaXplIG9mIG1idWZzIHN0b3JlZCBpbiBhIHBrdG1idWZfcG9vbA0KPiA+ICAgKg0KPiA+IEBA IC04MTgsNyArOTAyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJ0ZV9wa3RtYnVmX3Jlc2V0KHN0 cnVjdCBydGVfbWJ1Zg0KPiAqbSkNCj4gPiAgCW0tPm5iX3NlZ3MgPSAxOw0KPiA+ICAJbS0+cG9y dCA9IE1CVUZfSU5WQUxJRF9QT1JUOw0KPiA+DQo+ID4gLQltLT5vbF9mbGFncyA9IDA7DQo+ID4g KwltLT5vbF9mbGFncyAmPSBFWFRfQVRUQUNIRURfTUJVRjsNCj4gPiAgCW0tPnBhY2tldF90eXBl ID0gMDsNCj4gPiAgCXJ0ZV9wa3RtYnVmX3Jlc2V0X2hlYWRyb29tKG0pOw0KPiA+DQo+IA0KPiBJ IHdvbmRlciBpZiBpdCBzaG91bGQgZ28gaW4gcHJldmlvdXMgcGF0Y2g/DQoNCk1tbS4uLiBEZWZp bml0ZWx5IC0geWVzIPCfmIoNClRoYW5rcywgd2lsbCBtb3ZlIHRoaXMgbGluZS4NCj4gDQo+ID4g ZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbWJ1Zi9ydGVfbWJ1Zl92ZXJzaW9uLm1hcA0KPiA+IGIv bGliL2xpYnJ0ZV9tYnVmL3J0ZV9tYnVmX3ZlcnNpb24ubWFwDQo+ID4gaW5kZXggM2JiYjQ3Ni4u YWIxNjFiYyAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGlicnRlX21idWYvcnRlX21idWZfdmVyc2lv bi5tYXANCj4gPiArKysgYi9saWIvbGlicnRlX21idWYvcnRlX21idWZfdmVyc2lvbi5tYXANCj4g PiBAQCAtNDQsNSArNDQsNiBAQCBFWFBFUklNRU5UQUwgew0KPiA+ICAJcnRlX21idWZfZHluX2R1 bXA7DQo+ID4gIAlydGVfcGt0bWJ1Zl9jb3B5Ow0KPiA+ICAJcnRlX3BrdG1idWZfZnJlZV9idWxr Ow0KPiA+ICsJcnRlX3BrdG1idWZfcG9vbF9jcmVhdGVfZXh0YnVmOw0KPiA+DQo+ID4gIH07DQo+ ID4gLS0NCj4gPiAxLjguMy4xDQo+ID4NCldpdGggYmVzdCByZWdhcmRzLCBTbGF2YQ0KDQo=