From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00087.outbound.protection.outlook.com [40.107.0.87]) by dpdk.org (Postfix) with ESMTP id 24F8E1B487 for ; Fri, 21 Dec 2018 12:53:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XMsZHr9vvL08pMrXYie87zP9sFyS8Do7V/TWa0lc8YU=; b=ANsQsPEPFx3W9vV1/ta3wFoRDoFDG7peajC3at7YX/0DTvF5d/zJpUbOA3dP8y5qVr2Kb14v+X2DGF9vwr3/y/ANz16M1R228izlOyDTePKE+VqAhXbzv5f1eDOGxsYtv0v6VY43cpfsbh4BM0EhxwOCrMwuaFoh47qqFRSCziU= Received: from VI1PR04MB4893.eurprd04.prod.outlook.com (20.177.49.154) by VI1PR04MB5680.eurprd04.prod.outlook.com (20.178.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1446.17; Fri, 21 Dec 2018 11:53:15 +0000 Received: from VI1PR04MB4893.eurprd04.prod.outlook.com ([fe80::7dc4:610b:d0c1:146b]) by VI1PR04MB4893.eurprd04.prod.outlook.com ([fe80::7dc4:610b:d0c1:146b%4]) with mapi id 15.20.1446.022; Fri, 21 Dec 2018 11:53:15 +0000 From: Akhil Goyal To: "Ananyev, Konstantin" , "dev@dpdk.org" CC: Thomas Monjalon , "Awal, Mohammad Abdul" Thread-Topic: [dpdk-dev] [PATCH v4 04/10] lib: introduce ipsec library Thread-Index: AQHUk8ll9+ALJ/YozEagueCuZ8rzD6WF/3MAgAGzZQCAAW0RgA== Date: Fri, 21 Dec 2018 11:53:15 +0000 Message-ID: <2be6ac83-8e6b-3372-ee8d-5d8329e10f33@nxp.com> References: <1544110714-4514-2-git-send-email-konstantin.ananyev@intel.com> <1544804589-10338-4-git-send-email-konstantin.ananyev@intel.com> <82f62109-a584-13e9-12ec-c9984a60567a@nxp.com> <2601191342CEEE43887BDE71AB977258010D8BD421@IRSMSX106.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB977258010D8BD421@IRSMSX106.ger.corp.intel.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0010.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::20) To VI1PR04MB4893.eurprd04.prod.outlook.com (2603:10a6:803:56::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=akhil.goyal@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [14.143.30.134] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB5680; 6:RqpJTK0p1mceoOu27b1fmpaevbKxzKZ5pSX9B8Uyete6H3DwRzPQkzsmZ+HBjdvrohvGbwLAh01cW0vHk9F5I/U1YxtRIaDgw8nhreHYfl52NCTIiQEuxErUIsZJ0sDW2edotydOIw0rYc0fVv43lW4cvPhlO72gobXUefItUjwjB+I7abicjpaPPNwkpxD9KNR0KgoiIPkmqCx6qrQ6p+Ic6VW/8NbHhq6MvF8wkgiX96FE8VF+UiynBXSpHafCDqJmbXCVhavchoagpgiFxFD2UWkdw9fL5C5nyHE5Ihay6rBMIq0Tl2Q8SWJZzko4PaqW7MXdZg6hXDIS1onxjSTUbiUYHIXRJC63hA7fquC9qS+Z8sm4slSxr8lvjvBwEowIT06m1PuNfQSYLF4ZsoMt77PtaVyXuUVnprm/VIsgTzlGCMUsaH4yjvtxwTXAb76vSIi2bNnC6CpYYyofvw==; 5:RQNgXUFA786iz/nwpryPr4uP7PEhfFHFH96i5JWvevGH1jAXWSauuPH25PHuYRV8tfJVpGR5SiDwKHlVu1RzT03Fro1Q1WJiTsbs0cAykipdUGz05SQdn+INAT66d4BQybuu9T9WIO58nK2skCERWq1je7lZnekrz25ymlsEAMw=; 7:jvOWYAeQpnqIF1lUvV+kbFiXqiP/g0+7yP4yxmerlVRxKwpbmFEwVck3xP/I0VvQHXNb/QeJjIybaQnmdG1s4fO1CI5xT00NamiijgTXJhGvgw1W839aXIBfWtULQOi4QTE7QzZj7czBZ4lRKu+xAA== x-ms-office365-filtering-correlation-id: ae43ce60-2815-4aa1-22f6-08d6673ae404 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB5680; x-ms-traffictypediagnostic: VI1PR04MB5680: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(5005026)(6040522)(2401047)(8121501046)(3231475)(944501520)(52105112)(93006095)(93001095)(3002001)(10201501046)(6055026)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR04MB5680; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB5680; x-forefront-prvs: 0893636978 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(396003)(376002)(136003)(366004)(39860400002)(199004)(189003)(86362001)(6116002)(3846002)(478600001)(54906003)(76176011)(6246003)(31696002)(2501003)(2906002)(4326008)(106356001)(99286004)(78486014)(6512007)(305945005)(71190400001)(71200400001)(36756003)(105586002)(44832011)(186003)(229853002)(476003)(14444005)(97736004)(66066001)(256004)(31686004)(68736007)(2616005)(486006)(26005)(53936002)(102836004)(6506007)(93886005)(53546011)(8676002)(14454004)(5660300001)(386003)(7736002)(55236004)(11346002)(316002)(110136005)(446003)(81156014)(81166006)(6436002)(52116002)(25786009)(8936002)(6486002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB5680; H:VI1PR04MB4893.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: CDvKEG/f2TRs6HhRj+EKEKmy71mW4+gKQItL0E9W88tWEZ87xEF6KlGw96ZFVweQwmX5vYcdVCuM7ONHP87uTVvDDFeHwCcaa7cS9B6bgvPR3fvBXz8qPnuEr9qoBqVvLVS9xnaPghXZCAQyh89yFXOaikRTLSEI8XY/3zC94IxKxBXAN99MAfNqIZmcaCqKqcSXir3K5c8hwEogYDYxDtQ654mOnIUyTF6XkwpZbb2nIexl7k0SzRL62QCd70JenHTnSpIYwRddHIbm06JHhIRHoWeFWndKxT9NM96GoSpiOqcy6Xf3BCHqcXnZjxKt spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <623C0F0C07B22B4994809F2A0ABE7459@eurprd04.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae43ce60-2815-4aa1-22f6-08d6673ae404 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Dec 2018 11:53:15.2945 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5680 Subject: Re: [dpdk-dev] [PATCH v4 04/10] lib: introduce ipsec library 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: Fri, 21 Dec 2018 11:53:17 -0000 DQoNCk9uIDEyLzIwLzIwMTggNzozNiBQTSwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4N Cj4+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9pcHNlYy9zYS5jIGIvbGliL2xpYnJ0ZV9pcHNl Yy9zYS5jDQo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+PiBpbmRleCAwMDAwMDAwMDAuLmY5 MjdhODJiZg0KPj4+IC0tLSAvZGV2L251bGwNCj4+PiArKysgYi9saWIvbGlicnRlX2lwc2VjL3Nh LmMNCj4+PiBAQCAtMCwwICsxLDMyNyBAQA0KPj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTMtQ2xhdXNlDQo+Pj4gKyAqIENvcHlyaWdodChjKSAyMDE4IEludGVsIENvcnBvcmF0 aW9uDQo+Pj4gKyAqLw0KPj4+ICsNCj4+PiArI2luY2x1ZGUgPHJ0ZV9pcHNlY19zYS5oPg0KPj4+ ICsjaW5jbHVkZSA8cnRlX2VzcC5oPg0KPj4+ICsjaW5jbHVkZSA8cnRlX2lwLmg+DQo+Pj4gKyNp bmNsdWRlIDxydGVfZXJybm8uaD4NCj4+PiArDQo+Pj4gKyNpbmNsdWRlICJzYS5oIg0KPj4+ICsj aW5jbHVkZSAiaXBzZWNfc3FuLmgiDQo+Pj4gKw0KPj4+ICsvKiBzb21lIGhlbHBlciBzdHJ1Y3R1 cmVzICovDQo+Pj4gK3N0cnVjdCBjcnlwdG9feGZvcm0gew0KPj4+ICsJc3RydWN0IHJ0ZV9jcnlw dG9fYXV0aF94Zm9ybSAqYXV0aDsNCj4+PiArCXN0cnVjdCBydGVfY3J5cHRvX2NpcGhlcl94Zm9y bSAqY2lwaGVyOw0KPj4+ICsJc3RydWN0IHJ0ZV9jcnlwdG9fYWVhZF94Zm9ybSAqYWVhZDsNCj4+ PiArfTsNCj4+IHNob3VsZG4ndCB0aGlzIGJlIHVuaW9uIGFzIGFlYWQgY2Fubm90IGJlIHdpdGgg Y2lwaGVyIGFuZCBhdXRoIGNhc2VzLg0KPiBUaGF0J3MgdXNlZCBpbnRlcm5hbGx5IHRvIGNvbGxl Y3QvYW5hbHl6ZSB4Zm9ybXMgcHJvdmlkZWQgYnkgcHJtLT5jcnlwdG9feGZvcm0uDQoNCj4NCj4N Cj4+IGV4dHJhIGxpbmUNCj4+PiArDQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50DQo+Pj4gK2NoZWNr X2NyeXB0b194Zm9ybShzdHJ1Y3QgY3J5cHRvX3hmb3JtICp4Zm9ybSkNCj4+PiArew0KPj4+ICsJ dWludHB0cl90IHA7DQo+Pj4gKw0KPj4+ICsJcCA9ICh1aW50cHRyX3QpeGZvcm0tPmF1dGggfCAo dWludHB0cl90KXhmb3JtLT5jaXBoZXI7DQo+PiB3aGF0IGlzIHRoZSBpbnRlbnQgb2YgdGhpcz8N Cj4gSXQgaXMgdXNlZCBiZWxvdyB0byBjaGVjayB0aGF0IGlmIGFlYWQgaXMgcHJlc2VudCBib3Ro IGNpcGhlciBhbmQgYXV0aA0KPiBhcmUgIG5vdC4NCj4NCj4+PiArDQo+Pj4gKwkvKiBlaXRoZXIg YWVhZCBvciBib3RoIGF1dGggYW5kIGNpcGhlciBzaG91bGQgYmUgbm90IE5VTExzICovDQo+Pj4g KwlpZiAoeGZvcm0tPmFlYWQpIHsNCj4+PiArCQlpZiAocCkNCj4+PiArCQkJcmV0dXJuIC1FSU5W QUw7DQo+Pj4gKwl9IGVsc2UgaWYgKHAgPT0gKHVpbnRwdHJfdCl4Zm9ybS0+YXV0aCkgew0KPj4+ ICsJCXJldHVybiAtRUlOVkFMOw0KPj4+ICsJfQ0KPj4gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBs b29rIGdvb2QuIEl0IHdpbGwgbWlzcyB0aGUgY2FzZSBvZiBjaXBoZXIgb25seQ0KPiBDaXBoZXIg b25seSBpcyBub3Qgc3VwcG9ydGVkIHJpZ2h0IG5vdyBhbmQgIEkgYW0gbm90IGF3YXJlIGFib3V0 IHBsYW5zDQo+IHRvIHN1cHBvcnQgaXQgaW4gZnV0dXJlLg0KPiBJZiBzb21lb25lIHdvdWxkIGxp a2UgdG8gYWRkIGNpcGhlciBvbmwsdGhlbiB5ZXMgaGUvc2hlIHByb2JhYmx5IHdvdWxkDQo+IGhh dmUgdG8gdXBkYXRlIHRoaXMgZnVuY3Rpb24uDQpJIGtub3cgdGhhdCBjaXBoZXJfb25seSBpcyBu b3Qgc3VwcG9ydGVkIGFuZCBub2JvZHkgd2lsbCBzdXBwb3J0IGl0IGluIA0KY2FzZSBvZiBpcHNl Yy4NCk15IHBvaW50IGlzIGlmIHNvbWVib2R5IGdpdmVzIG9ubHkgYXV0aCBvciBvbmx5IGNpcGhl ciB4Zm9ybSwgdGhlbiB0aGlzIA0KZnVuY3Rpb24gd291bGQgbm90IGJlIGFibGUgdG8gZGV0ZWN0 IHRoYXQgY2FzZSBhbmQgd2lsbCBub3QgcmV0dXJuIGVycm9yLg0KDQo+Pj4gKw0KPj4+ICsJcmV0 dXJuIDA7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQNCj4+PiArZmlsbF9jcnlwdG9f eGZvcm0oc3RydWN0IGNyeXB0b194Zm9ybSAqeGZvcm0sDQo+Pj4gKwljb25zdCBzdHJ1Y3QgcnRl X2lwc2VjX3NhX3BybSAqcHJtKQ0KPj4+ICt7DQo+Pj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19zeW1f eGZvcm0gKnhmOw0KPj4+ICsNCj4+PiArCW1lbXNldCh4Zm9ybSwgMCwgc2l6ZW9mKCp4Zm9ybSkp Ow0KPj4+ICsNCj4+PiArCWZvciAoeGYgPSBwcm0tPmNyeXB0b194Zm9ybTsgeGYgIT0gTlVMTDsg eGYgPSB4Zi0+bmV4dCkgew0KPj4+ICsJCWlmICh4Zi0+dHlwZSA9PSBSVEVfQ1JZUFRPX1NZTV9Y Rk9STV9BVVRIKSB7DQo+Pj4gKwkJCWlmICh4Zm9ybS0+YXV0aCAhPSBOVUxMKQ0KPj4+ICsJCQkJ cmV0dXJuIC1FSU5WQUw7DQo+Pj4gKwkJCXhmb3JtLT5hdXRoID0gJnhmLT5hdXRoOw0KPj4+ICsJ CX0gZWxzZSBpZiAoeGYtPnR5cGUgPT0gUlRFX0NSWVBUT19TWU1fWEZPUk1fQ0lQSEVSKSB7DQo+ Pj4gKwkJCWlmICh4Zm9ybS0+Y2lwaGVyICE9IE5VTEwpDQo+Pj4gKwkJCQlyZXR1cm4gLUVJTlZB TDsNCj4+PiArCQkJeGZvcm0tPmNpcGhlciA9ICZ4Zi0+Y2lwaGVyOw0KPj4+ICsJCX0gZWxzZSBp ZiAoeGYtPnR5cGUgPT0gUlRFX0NSWVBUT19TWU1fWEZPUk1fQUVBRCkgew0KPj4+ICsJCQlpZiAo eGZvcm0tPmFlYWQgIT0gTlVMTCkNCj4+PiArCQkJCXJldHVybiAtRUlOVkFMOw0KPj4+ICsJCQl4 Zm9ybS0+YWVhZCA9ICZ4Zi0+YWVhZDsNCj4+PiArCQl9IGVsc2UNCj4+PiArCQkJcmV0dXJuIC1F SU5WQUw7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICsJcmV0dXJuIGNoZWNrX2NyeXB0b194Zm9ybSh4 Zm9ybSk7DQo+Pj4gK30NCj4+IGhvdyBpcyB0aGlzIGZ1bmN0aW9uIGhhbmRsaW5nIHRoZSBpbmJv dW5kIGFuZCBvdXRib3VuZCBjYXNlcy4NCj4+IEluIGluYm91bmQgZmlyc3QgeGZvcm0gaXMgYXV0 aCBhbmQgdGhlbiBjaXBoZXIuDQo+PiBJbiBvdXRib3VuZCBmaXJzdCBpcyBjaXBoZXIgYW5kIHRo ZW4gYXV0aC4gSSB0aGluayB0aGlzIHNob3VsZCBiZQ0KPj4gY2hlY2tlZCBpbiB0aGUgbGliLg0K PiBJbnRlcmVzdGluZywgSSBkaWRuJ3Qga25vdyBhYm91dCBzdWNoIGxpbWl0YXRpb24uDQo+IE15 IHVuZGVyc3RhbmRpbmcgd2FzIHRoYXQgdGhlIGFueSBvcmRlciAoPGF1dGgsY2lwaGVyPiwgPGNp cGhlcixhdXRoPikNCj4gZm9yIGJvdGggaW5ib3VuZCBhbmQgb3V0Ym91bmQgaXMgYWNjZXB0YWJs ZS4NCj4gSXMgdGhhdCBvcmRlciByZXN0cmljdGlvbiBpcyBkb2N1bWVudGVkIHNvbWV3aGVyZT8N Ci8qKg0KIMKgKiBTeW1tZXRyaWMgY3J5cHRvIHRyYW5zZm9ybSBzdHJ1Y3R1cmUuDQogwqAqDQog wqAqIFRoaXMgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjcnlwdG8gdHJhbnNmb3JtcyByZXF1aXJl ZCwgbXVsdGlwbGUgDQp0cmFuc2Zvcm1zDQogwqAqIGNhbiBiZSBjaGFpbmVkIHRvZ2V0aGVyIHRv IHNwZWNpZnkgYSBjaGFpbiB0cmFuc2Zvcm1zIHN1Y2ggYXMgDQphdXRoZW50aWNhdGlvbg0KIMKg KiB0aGVuIGNpcGhlciwgb3IgY2lwaGVyIHRoZW4gYXV0aGVudGljYXRpb24uIEVhY2ggdHJhbnNm b3JtIHN0cnVjdHVyZSBjYW4NCiDCoCogaG9sZCBhIHNpbmdsZSB0cmFuc2Zvcm0sIHRoZSB0eXBl IGZpZWxkIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCANCnRyYW5zZm9ybQ0KIMKgKiBpcyBjb250 YWluZWQgd2l0aGluIHRoZSB1bmlvbg0KIMKgKi8NCnN0cnVjdCBydGVfY3J5cHRvX3N5bV94Zm9y bSB7DQoNClRoaXMgaXMgbm90IGEgbGltaXRhdGlvbiwgdGhpcyBpcyBob3cgaXQgaXMgZGVzaWdu ZWQgdG8gaGFuZGxlIDIgY2FzZXMgDQpvZiBjcnlwdG8gLSBhdXRoIHRoZW4gY2lwaGVyIGFuZCBj aXBoZXIgdGhlbiBhdXRoLg0KDQoNCj4+IEhlcmUgZm9yIGxvb3Agc2hvdWxkIG5vdCBiZSB0aGVy ZSwgYXMgdGhlcmUgd291bGQgYmUgYXQgbWF4IG9ubHkgMiB4Zm9ybXMuDQo+Pj4gKw0KPj4+ICt1 aW50NjRfdCBfX3J0ZV9leHBlcmltZW50YWwNCj4+PiArcnRlX2lwc2VjX3NhX3R5cGUoY29uc3Qg c3RydWN0IHJ0ZV9pcHNlY19zYSAqc2EpDQo+Pj4gK3sNCj4+PiArCXJldHVybiBzYS0+dHlwZTsN Cj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludDMyX3QNCj4+PiAraXBzZWNfc2Ffc2l6ZSh1 aW50MzJfdCB3c3osIHVpbnQ2NF90IHR5cGUsIHVpbnQzMl90ICpuYl9idWNrZXQpDQo+Pj4gK3sN Cj4+PiArCXVpbnQzMl90IG4sIHN6Ow0KPj4+ICsNCj4+PiArCW4gPSAwOw0KPj4+ICsJaWYgKHdz eiAhPSAwICYmICh0eXBlICYgUlRFX0lQU0VDX1NBVFBfRElSX01BU0spID09DQo+Pj4gKwkJCVJU RV9JUFNFQ19TQVRQX0RJUl9JQikNCj4+PiArCQluID0gcmVwbGF5X251bV9idWNrZXQod3N6KTsN Cj4+PiArDQo+Pj4gKwlpZiAobiA+IFdJTkRPV19CVUNLRVRfTUFYKQ0KPj4+ICsJCXJldHVybiAt RUlOVkFMOw0KPj4+ICsNCj4+PiArCSpuYl9idWNrZXQgPSBuOw0KPj4+ICsNCj4+PiArCXN6ID0g cnNuX3NpemUobik7DQo+Pj4gKwlzeiArPSBzaXplb2Yoc3RydWN0IHJ0ZV9pcHNlY19zYSk7DQo+ Pj4gKwlyZXR1cm4gc3o7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3ZvaWQgX19ydGVfZXhwZXJpbWVu dGFsDQo+Pj4gK3J0ZV9pcHNlY19zYV9maW5pKHN0cnVjdCBydGVfaXBzZWNfc2EgKnNhKQ0KPj4+ ICt7DQo+Pj4gKwltZW1zZXQoc2EsIDAsIHNhLT5zaXplKTsNCj4+PiArfQ0KPj4gV2hlcmUgaXMg dGhlIG1lbW9yeSBvZiAic2EiIGdldHRpbmcgaW5pdGlhbGl6ZWQ/DQo+IE5vdCBzdXJlIEkgdW5k ZXJzdGFuZCB5b3VyIHF1ZXN0aW9uLi4uDQo+IERvIHlvdSBtZWFuIHdlIG1pc3NlZCBtZW1zZXQo c2EsIDAsIHNpemUpDQo+IGluIHJ0ZV9pcHNlY19zYV9pbml0KCk/DQpTb3JyeSBJIGRpZCBub3Qg YXNrIHRoZSBjb3JyZWN0IHF1ZXN0aW9uLCBJIHdhcyBhc2tpbmfCoCAtIHdoZXJlIGl0IGlzIA0K YWxsb2NhdGVkPw0KSXMgaXQgYXBwbGljYXRpb24ncyByZXNwb25zaWJpbGl0eT8NCj4NCj4NCj4+ PiArDQo+Pj4gK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCj4+PiArcnRlX2lwc2VjX3NhX2luaXQo c3RydWN0IHJ0ZV9pcHNlY19zYSAqc2EsIGNvbnN0IHN0cnVjdCBydGVfaXBzZWNfc2FfcHJtICpw cm0sDQo+Pj4gKwl1aW50MzJfdCBzaXplKQ0KPj4+ICt7DQo+Pj4gKwlpbnQzMl90IHJjLCBzejsN Cj4+PiArCXVpbnQzMl90IG5iOw0KPj4+ICsJdWludDY0X3QgdHlwZTsNCj4+PiArCXN0cnVjdCBj cnlwdG9feGZvcm0gY3hmOw0KPj4+ICsNCj4+PiArCWlmIChzYSA9PSBOVUxMIHx8IHBybSA9PSBO VUxMKQ0KPj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4+ICsNCj4+PiArCS8qIGRldGVybWluZSBT QSB0eXBlICovDQo+Pj4gKwlyYyA9IGZpbGxfc2FfdHlwZShwcm0sICZ0eXBlKTsNCj4+PiArCWlm IChyYyAhPSAwKQ0KPj4+ICsJCXJldHVybiByYzsNCj4+PiArDQo+Pj4gKwkvKiBkZXRlcm1pbmUg cmVxdWlyZWQgc2l6ZSAqLw0KPj4+ICsJc3ogPSBpcHNlY19zYV9zaXplKHBybS0+cmVwbGF5X3dp bl9zeiwgdHlwZSwgJm5iKTsNCj4+PiArCWlmIChzeiA8IDApDQo+Pj4gKwkJcmV0dXJuIHN6Ow0K Pj4+ICsJZWxzZSBpZiAoc2l6ZSA8ICh1aW50MzJfdClzeikNCj4+PiArCQlyZXR1cm4gLUVOT1NQ QzsNCj4+PiArDQo+Pj4gKwkvKiBvbmx5IGVzcCBpcyBzdXBwb3J0ZWQgcmlnaHQgbm93ICovDQo+ Pj4gKwlpZiAocHJtLT5pcHNlY194Zm9ybS5wcm90byAhPSBSVEVfU0VDVVJJVFlfSVBTRUNfU0Ff UFJPVE9fRVNQKQ0KPj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4+ICsNCj4+PiArCWlmIChwcm0t Pmlwc2VjX3hmb3JtLm1vZGUgPT0gUlRFX1NFQ1VSSVRZX0lQU0VDX1NBX01PREVfVFVOTkVMICYm DQo+Pj4gKwkJCXBybS0+dHVuLmhkcl9sZW4gPiBzaXplb2Yoc2EtPmhkcikpDQo+Pj4gKwkJcmV0 dXJuIC1FSU5WQUw7DQo+Pj4gKw0KPj4+ICsJcmMgPSBmaWxsX2NyeXB0b194Zm9ybSgmY3hmLCBw cm0pOw0KPj4+ICsJaWYgKHJjICE9IDApDQo+Pj4gKwkJcmV0dXJuIHJjOw0KPj4+ICsNCj4+PiAr CXNhLT50eXBlID0gdHlwZTsNCj4+PiArCXNhLT5zaXplID0gc3o7DQo+Pj4gKw0KPj4+ICsJLyog Y2hlY2sgZm9yIEVTTiBmbGFnICovDQo+Pj4gKwlzYS0+c3FuX21hc2sgPSAocHJtLT5pcHNlY194 Zm9ybS5vcHRpb25zLmVzbiA9PSAwKSA/DQo+Pj4gKwkJVUlOVDMyX01BWCA6IFVJTlQ2NF9NQVg7 DQo+Pj4gKw0KPj4+ICsJcmMgPSBlc3Bfc2FfaW5pdChzYSwgcHJtLCAmY3hmKTsNCj4+PiArCWlm IChyYyAhPSAwKQ0KPj4+ICsJCXJ0ZV9pcHNlY19zYV9maW5pKHNhKTsNCj4+PiArDQo+Pj4gKwkv KiBmaWxsIHJlcGxheSB3aW5kb3cgcmVsYXRlZCBmaWVsZHMgKi8NCj4+PiArCWlmIChuYiAhPSAw KSB7DQo+PiBtb3ZlIHRoaXMgd2hlcmUgbmIgaXMgZ2V0dGluZyB1cGRhdGVkLg0KPiBJIGRvbid0 IHRoaW5rIGl0IGlzIGEgZ29vZCBpZGVhLg0KPiBXZSBjYWx1bGF0ZSBuYiBmaXJzdCBhbmQgcmVx dWlyZWQgc2Egc2l6ZSBmaXJzdCB3aXRob3V0IHVwZGF0aW5nIHByb3ZpZGVkIG1lbW9yeSBidWZm ZXIuDQo+IElmIHRoZSBidWZmZXIgaXMgbm90IGJpZyBlbm91Z2gsIHdpbGwgcmV0dXJuIGFuIGVy cm9yIHdpdGhvdXQgdXBkYXRpbmcgdGhlIGJ1ZmZlci4NCj4gQ2xlYW5lciBhbmQgc2FmZXIgdG8g a2VlcCBpdCBhcyBpdCBpcy4NCm9rDQo+Pj4gKwkJc2EtPnJlcGxheS53aW5fc3ogPSBwcm0tPnJl cGxheV93aW5fc3o7DQo+Pj4gKwkJc2EtPnJlcGxheS5uYl9idWNrZXQgPSBuYjsNCj4+PiArCQlz YS0+cmVwbGF5LmJ1Y2tldF9pbmRleF9tYXNrID0gc2EtPnJlcGxheS5uYl9idWNrZXQgLSAxOw0K Pj4+ICsJCXNhLT5zcW4uaW5iID0gKHN0cnVjdCByZXBsYXlfc3FuICopKHNhICsgMSk7DQo+Pj4g Kwl9DQo+Pj4gKw0KPj4+ICsJcmV0dXJuIHN6Ow0KPj4+ICt9DQoNCg==