From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 11FAC43B79; Mon, 4 Mar 2024 14:35:57 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C78024027D; Mon, 4 Mar 2024 14:35:56 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id AB4074026B for ; Mon, 4 Mar 2024 14:35:55 +0100 (CET) Received: from mail.maildlp.com (unknown [172.18.186.216]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TpKNv6RDpz6K8p6; Mon, 4 Mar 2024 21:31:59 +0800 (CST) Received: from frapeml500005.china.huawei.com (unknown [7.182.85.13]) by mail.maildlp.com (Postfix) with ESMTPS id E11E4140D26; Mon, 4 Mar 2024 21:35:53 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml500005.china.huawei.com (7.182.85.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 4 Mar 2024 14:35:53 +0100 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.035; Mon, 4 Mar 2024 14:35:53 +0100 From: Konstantin Ananyev To: Yoan Picchi , Yoan Picchi , Yipeng Wang , Sameh Gobriel , Bruce Richardson , Vladimir Medvedkin CC: "dev@dpdk.org" , "nd@arm.com" , Harjot Singh , Nathan Brown , Ruifeng Wang Subject: RE: [PATCH v5 4/4] hash: add SVE support for bulk key lookup Thread-Topic: [PATCH v5 4/4] hash: add SVE support for bulk key lookup Thread-Index: AQHaaaRwFZ8tWpxDX02xRU9Vz1/oT7EflQEggAAxYQCAB9c1YA== Date: Mon, 4 Mar 2024 13:35:53 +0000 Message-ID: <26ede8330c0b4c2cb213cdc7102d4e86@huawei.com> References: <20231020165159.1649282-1-yoan.picchi@arm.com> <20240227174203.2889333-1-yoan.picchi@arm.com> <20240227174203.2889333-5-yoan.picchi@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.206.138.42] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gPj4gLSBJbXBsZW1lbnRlZCBTVkUgY29kZSBmb3IgY29tcGFyaW5nIHNpZ25hdHVyZXMg aW4gYnVsayBsb29rdXAuDQo+ID4+IC0gQWRkZWQgRGVmaW5lcyBpbiBjb2RlIGZvciBTVkUgY29k ZSBzdXBwb3J0Lg0KPiA+PiAtIE9wdGltaXNlIE5FT04gY29kZQ0KPiA+PiAtIE5ldyBTVkUgY29k ZSBpcyB+NSUgc2xvd2VyIHRoYW4gb3B0aW1pemVkIE5FT04gZm9yIE4yIHByb2Nlc3Nvci4NCj4g Pj4NCj4gPj4gU2lnbmVkLW9mZi1ieTogWW9hbiBQaWNjaGkgPHlvYW4ucGljY2hpQGFybS5jb20+ DQo+ID4+IFNpZ25lZC1vZmYtYnk6IEhhcmpvdCBTaW5naCA8aGFyam90LnNpbmdoQGFybS5jb20+ DQo+ID4+IFJldmlld2VkLWJ5OiBOYXRoYW4gQnJvd24gPG5hdGhhbi5icm93bkBhcm0uY29tPg0K PiA+PiBSZXZpZXdlZC1ieTogUnVpZmVuZyBXYW5nIDxydWlmZW5nLndhbmdAYXJtLmNvbT4NCj4g Pj4gLS0tDQo+ID4+ICAgbGliL2hhc2gvcnRlX2N1Y2tvb19oYXNoLmMgfCAxOTYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KPiA+PiAgIGxpYi9oYXNoL3J0ZV9jdWNrb29f aGFzaC5oIHwgICAxICsNCj4gPj4gICAyIGZpbGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCsp LCA0NiBkZWxldGlvbnMoLSkNCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL2xpYi9oYXNoL3J0ZV9j dWNrb29faGFzaC5jIGIvbGliL2hhc2gvcnRlX2N1Y2tvb19oYXNoLmMNCj4gPj4gaW5kZXggYTA3 ZGQzYTI4ZC4uMjMxZDZkNmRlZCAxMDA2NDQNCj4gPj4gLS0tIGEvbGliL2hhc2gvcnRlX2N1Y2tv b19oYXNoLmMNCj4gPj4gKysrIGIvbGliL2hhc2gvcnRlX2N1Y2tvb19oYXNoLmMNCj4gPj4gQEAg LTQ0Miw4ICs0NDIsMTEgQEAgcnRlX2hhc2hfY3JlYXRlKGNvbnN0IHN0cnVjdCBydGVfaGFzaF9w YXJhbWV0ZXJzICpwYXJhbXMpDQo+ID4+ICAgCQloLT5zaWdfY21wX2ZuID0gUlRFX0hBU0hfQ09N UEFSRV9TU0U7DQo+ID4+ICAgCWVsc2UNCj4gPj4gICAjZWxpZiBkZWZpbmVkKFJURV9BUkNIX0FS TTY0KQ0KPiA+PiAtCWlmIChydGVfY3B1X2dldF9mbGFnX2VuYWJsZWQoUlRFX0NQVUZMQUdfTkVP TikpDQo+ID4+ICsJaWYgKHJ0ZV9jcHVfZ2V0X2ZsYWdfZW5hYmxlZChSVEVfQ1BVRkxBR19ORU9O KSkgew0KPiA+PiAgIAkJaC0+c2lnX2NtcF9mbiA9IFJURV9IQVNIX0NPTVBBUkVfTkVPTjsNCj4g Pj4gKwkJaWYgKHJ0ZV9jcHVfZ2V0X2ZsYWdfZW5hYmxlZChSVEVfQ1BVRkxBR19TVkUpKQ0KPiA+ PiArCQkJaC0+c2lnX2NtcF9mbiA9IFJURV9IQVNIX0NPTVBBUkVfU1ZFOw0KPiA+PiArCX0NCj4g Pj4gICAJZWxzZQ0KPiA+PiAgICNlbmRpZg0KPiA+PiAgIAkJaC0+c2lnX2NtcF9mbiA9IFJURV9I QVNIX0NPTVBBUkVfU0NBTEFSOw0KPiA+PiBAQCAtMTg2MCwzNyArMTg2MywxMDMgQEAgcnRlX2hh c2hfZnJlZV9rZXlfd2l0aF9wb3NpdGlvbihjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsDQo+ID4+ ICAgI2lmIGRlZmluZWQoX19BUk1fTkVPTikNCj4gPj4NCj4gPj4gICBzdGF0aWMgaW5saW5lIHZv aWQNCj4gPj4gLWNvbXBhcmVfc2lnbmF0dXJlc19kZW5zZSh1aW50MzJfdCAqcHJpbV9oYXNoX21h dGNoZXMsIHVpbnQzMl90ICpzZWNfaGFzaF9tYXRjaGVzLA0KPiA+PiAtCQkJY29uc3Qgc3RydWN0 IHJ0ZV9oYXNoX2J1Y2tldCAqcHJpbV9ia3QsDQo+ID4+IC0JCQljb25zdCBzdHJ1Y3QgcnRlX2hh c2hfYnVja2V0ICpzZWNfYmt0LA0KPiA+PiArY29tcGFyZV9zaWduYXR1cmVzX2RlbnNlKHVpbnQx Nl90ICpoaXRtYXNrX2J1ZmZlciwNCj4gPj4gKwkJCWNvbnN0IHVpbnQxNl90ICpwcmltX2J1Y2tl dF9zaWdzLA0KPiA+PiArCQkJY29uc3QgdWludDE2X3QgKnNlY19idWNrZXRfc2lncywNCj4gPj4g ICAJCQl1aW50MTZfdCBzaWcsDQo+ID4+ICAgCQkJZW51bSBydGVfaGFzaF9zaWdfY29tcGFyZV9m dW5jdGlvbiBzaWdfY21wX2ZuKQ0KPiA+PiAgIHsNCj4gPj4gICAJdW5zaWduZWQgaW50IGk7DQo+ ID4+DQo+ID4+ICsJc3RhdGljX2Fzc2VydChzaXplb2YoKmhpdG1hc2tfYnVmZmVyKSA+PSAyKihS VEVfSEFTSF9CVUNLRVRfRU5UUklFUy84KSwNCj4gPj4gKwkiVGhlIGhpdG1hc2sgbXVzdCBiZSBl eGFjdGx5IHdpZGUgZW5vdWdoIHRvIGFjY2VwdCB0aGUgd2hvbGUgaGl0bWFzayBpZiBpdCBpcyBk ZW5zZSIpOw0KPiA+PiArDQo+ID4+ICAgCS8qIEZvciBtYXRjaCBtYXNrIGV2ZXJ5IGJpdHMgaW5k aWNhdGVzIHRoZSBtYXRjaCAqLw0KPiA+PiAgIAlzd2l0Y2ggKHNpZ19jbXBfZm4pIHsNCj4gPg0K PiA+IENhbiBJIGFzayB0byBtb3ZlIGFyY2ggc3BlY2lmaWMgY29tcGFyaXNvbiBjb2RlIGludG8g c29tZSBhcmNoLXNwZWNpZmljIGhlYWRlcnMgb3Igc28/DQo+ID4gSXQgaXMgZ2V0dGluZyByZWFs bHkgaGFyZCB0byByZWFkIGFuZCB1bmRlcnN0YW5kIHRoZSBnZW5lcmljIGNvZGUgd2l0aCBhbGwg dGhlc2UgaWZkZWZzIGFuZCBhcmNoIHNwZWNpZmljIGluc3RydWN0aW9ucy4uLg0KPiA+DQoNCkhp LCBhcG9sb2dpZXMgZm9yIGxvbmcgZGVsYXkgaW4gcmVzcG9uc2UuIA0KDQogDQo+IEkgY2FuIGVh c2lseSBlbm91Z2ggbW92ZSB0aGUgY29tcGFyZV9zaWduYXR1cmVzIGludG8gYW4gYXJtL3g4Ng0K PiBkaXJlY3RvcnksIGFuZCBoYXZlIGEgZGVmYXVsdCB2ZXJzaW9uIGluIHRoZSBjb2RlLg0KDQpZ ZXMsIHRoYXQncyB3aGF0IEkgdGhvdWdodCBhYm91dC4NCiANCj4gVGhlIHByb2JsZW0gd291bGQg YmUgZm9yIGJ1bGsgbG9va3VwLiBUaGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBkdXBsaWNhdGVkDQo+ ICAgMiB0aW1lcyAodGhlIGwgYW5kIGxmIHZlcnNpb24pLiBJZiBJIHJlbW92ZSB0aGUgI2lmZGVm cywgSSdsbCBuZWVkIHRvDQo+IGR1cGxpY2F0ZSB0aGVtIGFnYWluIGludG8gNCBuZWFybHkgaWRl bnRpY2FsIHZlcnNpb25zIChkZW5zZSBhbmQNCj4gc3BhcnNlKS4gVGhlIG9ubHkgdGhpcmQgb3B0 aW9ucyBJIHNlZSB3b3VsZCBiZSBzb21lIHByZXByb2Nlc3NvciBtYWNybw0KPiB0byBwYXRjaCB0 aGUgZnVuY3Rpb24sIGJ1dCB0aGF0IGxvb2tzIGV2ZW4gZGlydGllciB0byBtZS4NCg0KTm90IHN1 cmUgSSB1bmRlcnN0b29kIHlvdSBoZXJlOiBmcm9tIGxvb2tpbmcgYXQgdGhlIGNvZGUgSSBkb24n dCBzZWUgYW55DQphcmNoIHNwZWNpZmljIGlmZGVmcyBpbiBidWxrX2xvb2t1cCgpIHJvdXRpbmVz Lg0KV2hhdCBJIGFtIG1pc3NpbmcgaGVyZT8NCiANCg0KPiBJIHRoaW5rIGR1cGxpY2F0aW5nIHRo ZSBjb2RlIHdvdWxkIGJlIGJhZCwgYnV0IEkgY2FuIGRvIGl0IGlmIHlvdSB3YW50Lg0KPiBVbmxl c3MgeW91IGhhdmUgYSBiZXR0ZXIgc29sdXRpb24/DQo+IA0KPiA+PiArI2lmIFJURV9IQVNIX0JV Q0tFVF9FTlRSSUVTIDw9IDgNCj4gPj4gICAJY2FzZSBSVEVfSEFTSF9DT01QQVJFX05FT046IHsN Cj4gPj4gLQkJdWludDE2eDhfdCB2bWF0LCB4Ow0KPiA+PiArCQl1aW50MTZ4OF90IHZtYXQsIGhp dDEsIGhpdDI7DQo+ID4+ICAgCQljb25zdCB1aW50MTZ4OF90IG1hc2sgPSB7MHgxLCAweDIsIDB4 NCwgMHg4LCAweDEwLCAweDIwLCAweDQwLCAweDgwfTsNCj4gPj4gICAJCWNvbnN0IHVpbnQxNng4 X3QgdnNpZyA9IHZsZDFxX2R1cF91MTYoKHVpbnQxNl90IGNvbnN0ICopJnNpZyk7DQo+ID4+DQo+ ID4+ICAgCQkvKiBDb21wYXJlIGFsbCBzaWduYXR1cmVzIGluIHRoZSBwcmltYXJ5IGJ1Y2tldCAq Lw0KPiA+PiAtCQl2bWF0ID0gdmNlcXFfdTE2KHZzaWcsIHZsZDFxX3UxNigodWludDE2X3QgY29u c3QgKilwcmltX2JrdC0+c2lnX2N1cnJlbnQpKTsNCj4gPj4gLQkJeCA9IHZhbmRxX3UxNih2bWF0 LCBtYXNrKTsNCj4gPj4gLQkJKnByaW1faGFzaF9tYXRjaGVzID0gKHVpbnQzMl90KSh2YWRkdnFf dTE2KHgpKTsNCj4gPj4gKwkJdm1hdCA9IHZjZXFxX3UxNih2c2lnLCB2bGQxcV91MTYocHJpbV9i dWNrZXRfc2lncykpOw0KPiA+PiArCQloaXQxID0gdmFuZHFfdTE2KHZtYXQsIG1hc2spOw0KPiA+ PiArDQo+ID4+ICAgCQkvKiBDb21wYXJlIGFsbCBzaWduYXR1cmVzIGluIHRoZSBzZWNvbmRhcnkg YnVja2V0ICovDQo+ID4+IC0JCXZtYXQgPSB2Y2VxcV91MTYodnNpZywgdmxkMXFfdTE2KCh1aW50 MTZfdCBjb25zdCAqKXNlY19ia3QtPnNpZ19jdXJyZW50KSk7DQo+ID4+IC0JCXggPSB2YW5kcV91 MTYodm1hdCwgbWFzayk7DQo+ID4+IC0JCSpzZWNfaGFzaF9tYXRjaGVzID0gKHVpbnQzMl90KSh2 YWRkdnFfdTE2KHgpKTsNCj4gPj4gKwkJdm1hdCA9IHZjZXFxX3UxNih2c2lnLCB2bGQxcV91MTYo c2VjX2J1Y2tldF9zaWdzKSk7DQo+ID4+ICsJCWhpdDIgPSB2YW5kcV91MTYodm1hdCwgbWFzayk7 DQo+ID4+ICsNCj4gPj4gKwkJaGl0MiA9IHZzaGxxX25fdTE2KGhpdDIsIFJURV9IQVNIX0JVQ0tF VF9FTlRSSUVTKTsNCj4gPj4gKwkJaGl0MiA9IHZvcnJxX3UxNihoaXQxLCBoaXQyKTsNCj4gPj4g KwkJKmhpdG1hc2tfYnVmZmVyID0gdmFkZHZxX3UxNihoaXQyKTsNCj4gPj4gKwkJfQ0KPiA+PiAr CQlicmVhazsNCj4gPj4gKyNlbmRpZg0KPiA+PiArI2lmIGRlZmluZWQoUlRFX0hBU19TVkVfQUNM RSkNCj4gPj4gKwljYXNlIFJURV9IQVNIX0NPTVBBUkVfU1ZFOiB7DQo+ID4+ICsJCXN2dWludDE2 X3QgdnNpZ24sIHNoaWZ0LCBzdl9tYXRjaGVzOw0KPiA+PiArCQlzdmJvb2xfdCBwcmVkLCBtYXRj aCwgYnVja2V0X3dpZGVfcHJlZDsNCj4gPj4gKwkJaW50IGkgPSAwOw0KPiA+PiArCQl1aW50NjRf dCB2bCA9IHN2Y250aCgpOw0KPiA+PiArDQo+ID4+ICsJCXZzaWduID0gc3ZkdXBfdTE2KHNpZyk7 DQo+ID4+ICsJCXNoaWZ0ID0gc3ZpbmRleF91MTYoMCwgMSk7DQo+ID4+ICsNCj4gPj4gKwkJaWYg KHZsID49IDIgKiBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUyAmJiBSVEVfSEFTSF9CVUNLRVRfRU5U UklFUyA8PSA4KSB7DQo+ID4+ICsJCQlzdnVpbnQxNl90IHByaW1hcnlfYXJyYXlfdmVjdCwgc2Vj b25kYXJ5X2FycmF5X3ZlY3Q7DQo+ID4+ICsJCQlidWNrZXRfd2lkZV9wcmVkID0gc3Z3aGlsZWx0 X2IxNigwLCBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUyk7DQo+ID4+ICsJCQlwcmltYXJ5X2FycmF5 X3ZlY3QgPSBzdmxkMV91MTYoYnVja2V0X3dpZGVfcHJlZCwgcHJpbV9idWNrZXRfc2lncyk7DQo+ ID4+ICsJCQlzZWNvbmRhcnlfYXJyYXlfdmVjdCA9IHN2bGQxX3UxNihidWNrZXRfd2lkZV9wcmVk LCBzZWNfYnVja2V0X3NpZ3MpOw0KPiA+PiArDQo+ID4+ICsJCQkvKiBXZSBtZXJnZWQgdGhlIHR3 byB2ZWN0b3JzIHNvIHdlIGNhbiBkbyBib3RoIGNvbXBhcmlzb24gYXQgb25jZSAqLw0KPiA+PiAr CQkJcHJpbWFyeV9hcnJheV92ZWN0ID0gc3ZzcGxpY2VfdTE2KGJ1Y2tldF93aWRlX3ByZWQsDQo+ ID4+ICsJCQkJcHJpbWFyeV9hcnJheV92ZWN0LA0KPiA+PiArCQkJCXNlY29uZGFyeV9hcnJheV92 ZWN0KTsNCj4gPj4gKwkJCXByZWQgPSBzdndoaWxlbHRfYjE2KDAsIDIqUlRFX0hBU0hfQlVDS0VU X0VOVFJJRVMpOw0KPiA+PiArDQo+ID4+ICsJCQkvKiBDb21wYXJlIGFsbCBzaWduYXR1cmVzIGlu IHRoZSBidWNrZXRzICovDQo+ID4+ICsJCQltYXRjaCA9IHN2Y21wZXFfdTE2KHByZWQsIHZzaWdu LCBwcmltYXJ5X2FycmF5X3ZlY3QpOw0KPiA+PiArCQkJaWYgKHN2cHRlc3RfYW55KHN2cHRydWVf YjE2KCksIG1hdGNoKSkgew0KPiA+PiArCQkJCXN2X21hdGNoZXMgPSBzdmR1cF91MTYoMSk7DQo+ ID4+ICsJCQkJc3ZfbWF0Y2hlcyA9IHN2bHNsX3UxNl96KG1hdGNoLCBzdl9tYXRjaGVzLCBzaGlm dCk7DQo+ID4+ICsJCQkJKmhpdG1hc2tfYnVmZmVyID0gc3ZvcnZfdTE2KHN2cHRydWVfYjE2KCks IHN2X21hdGNoZXMpOw0KPiA+PiArCQkJfQ0KPiA+PiArCQl9IGVsc2Ugew0KPiA+PiArCQkJZG8g ew0KPiA+PiArCQkJCXByZWQgPSBzdndoaWxlbHRfYjE2KGksIFJURV9IQVNIX0JVQ0tFVF9FTlRS SUVTKTsNCj4gPj4gKwkJCQl1aW50MTZfdCBsb3dlcl9oYWxmID0gMDsNCj4gPj4gKwkJCQl1aW50 MTZfdCB1cHBlcl9oYWxmID0gMDsNCj4gPj4gKwkJCQkvKiBDb21wYXJlIGFsbCBzaWduYXR1cmVz IGluIHRoZSBwcmltYXJ5IGJ1Y2tldCAqLw0KPiA+PiArCQkJCW1hdGNoID0gc3ZjbXBlcV91MTYo cHJlZCwgdnNpZ24sIHN2bGQxX3UxNihwcmVkLA0KPiA+PiArCQkJCQkJCSZwcmltX2J1Y2tldF9z aWdzW2ldKSk7DQo+ID4+ICsJCQkJaWYgKHN2cHRlc3RfYW55KHN2cHRydWVfYjE2KCksIG1hdGNo KSkgew0KPiA+PiArCQkJCQlzdl9tYXRjaGVzID0gc3ZkdXBfdTE2KDEpOw0KPiA+PiArCQkJCQlz dl9tYXRjaGVzID0gc3Zsc2xfdTE2X3oobWF0Y2gsIHN2X21hdGNoZXMsIHNoaWZ0KTsNCj4gPj4g KwkJCQkJbG93ZXJfaGFsZiA9IHN2b3J2X3UxNihzdnB0cnVlX2IxNigpLCBzdl9tYXRjaGVzKTsN Cj4gPj4gKwkJCQl9DQo+ID4+ICsJCQkJLyogQ29tcGFyZSBhbGwgc2lnbmF0dXJlcyBpbiB0aGUg c2Vjb25kYXJ5IGJ1Y2tldCAqLw0KPiA+PiArCQkJCW1hdGNoID0gc3ZjbXBlcV91MTYocHJlZCwg dnNpZ24sIHN2bGQxX3UxNihwcmVkLA0KPiA+PiArCQkJCQkJCSZzZWNfYnVja2V0X3NpZ3NbaV0p KTsNCj4gPj4gKwkJCQlpZiAoc3ZwdGVzdF9hbnkoc3ZwdHJ1ZV9iMTYoKSwgbWF0Y2gpKSB7DQo+ ID4+ICsJCQkJCXN2X21hdGNoZXMgPSBzdmR1cF91MTYoMSk7DQo+ID4+ICsJCQkJCXN2X21hdGNo ZXMgPSBzdmxzbF91MTZfeihtYXRjaCwgc3ZfbWF0Y2hlcywgc2hpZnQpOw0KPiA+PiArCQkJCQl1 cHBlcl9oYWxmID0gc3ZvcnZfdTE2KHN2cHRydWVfYjE2KCksIHN2X21hdGNoZXMpDQo+ID4+ICsJ CQkJCQk8PCBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUzsNCj4gPj4gKwkJCQl9DQo+ID4+ICsJCQkJ aGl0bWFza19idWZmZXJbaS84XSA9IHVwcGVyX2hhbGYgfCBsb3dlcl9oYWxmOw0KPiA+PiArCQkJ CWkgKz0gdmw7DQo+ID4+ICsJCQl9IHdoaWxlIChpIDwgUlRFX0hBU0hfQlVDS0VUX0VOVFJJRVMp Ow0KPiA+PiArCQl9DQo+ID4+ICAgCQl9DQo+ID4+ICAgCQlicmVhazsNCj4gPj4gKyNlbmRpZg0K PiA+PiAgIAlkZWZhdWx0Og0KPiA+PiAgIAkJZm9yIChpID0gMDsgaSA8IFJURV9IQVNIX0JVQ0tF VF9FTlRSSUVTOyBpKyspIHsNCj4gPj4gLQkJCSpwcmltX2hhc2hfbWF0Y2hlcyB8PQ0KPiA+PiAt CQkJCSgoc2lnID09IHByaW1fYmt0LT5zaWdfY3VycmVudFtpXSkgPDwgaSk7DQo+ID4+IC0JCQkq c2VjX2hhc2hfbWF0Y2hlcyB8PQ0KPiA+PiAtCQkJCSgoc2lnID09IHNlY19ia3QtPnNpZ19jdXJy ZW50W2ldKSA8PCBpKTsNCj4gPj4gKwkJCSpoaXRtYXNrX2J1ZmZlciB8PQ0KPiA+PiArCQkJCSgo c2lnID09IHByaW1fYnVja2V0X3NpZ3NbaV0pIDw8IGkpOw0KPiA+PiArCQkJKmhpdG1hc2tfYnVm ZmVyIHw9DQo+ID4+ICsJCQkJKChzaWcgPT0gc2VjX2J1Y2tldF9zaWdzW2ldKSA8PCBpKSA8PCBS VEVfSEFTSF9CVUNLRVRfRU5UUklFUzsNCj4gPj4gICAJCX0NCj4gPj4gICAJfQ0KPiA+PiAgIH0N Cj4gPj4gQEAgLTE5MDgsNyArMTk3Nyw3IEBAIGNvbXBhcmVfc2lnbmF0dXJlc19zcGFyc2UodWlu dDMyX3QgKnByaW1faGFzaF9tYXRjaGVzLCB1aW50MzJfdCAqc2VjX2hhc2hfbWF0Y2hlDQo+ID4+ DQo+ID4+ICAgCS8qIEZvciBtYXRjaCBtYXNrIHRoZSBmaXJzdCBiaXQgb2YgZXZlcnkgdHdvIGJp dHMgaW5kaWNhdGVzIHRoZSBtYXRjaCAqLw0KPiA+PiAgIAlzd2l0Y2ggKHNpZ19jbXBfZm4pIHsN Cj4gPj4gLSNpZiBkZWZpbmVkKF9fU1NFMl9fKQ0KPiA+PiArI2lmIGRlZmluZWQoX19TU0UyX18p ICYmIFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTIDw9IDgNCj4gPj4gICAJY2FzZSBSVEVfSEFTSF9D T01QQVJFX1NTRToNCj4gPj4gICAJCS8qIENvbXBhcmUgYWxsIHNpZ25hdHVyZXMgaW4gdGhlIGJ1 Y2tldCAqLw0KPiA+PiAgIAkJKnByaW1faGFzaF9tYXRjaGVzID0gX21tX21vdmVtYXNrX2VwaTgo X21tX2NtcGVxX2VwaTE2KA0KPiA+PiBAQCAtMTk0OCwxNCArMjAxNywxOCBAQCBfX2J1bGtfbG9v a3VwX2woY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5cywNCj4gPj4g ICAJdWludDY0X3QgaGl0cyA9IDA7DQo+ID4+ICAgCWludDMyX3QgaTsNCj4gPj4gICAJaW50MzJf dCByZXQ7DQo+ID4+IC0JdWludDMyX3QgcHJpbV9oaXRtYXNrW1JURV9IQVNIX0xPT0tVUF9CVUxL X01BWF0gPSB7MH07DQo+ID4+IC0JdWludDMyX3Qgc2VjX2hpdG1hc2tbUlRFX0hBU0hfTE9PS1VQ X0JVTEtfTUFYXSA9IHswfTsNCj4gPj4gICAJc3RydWN0IHJ0ZV9oYXNoX2J1Y2tldCAqY3VyX2Jr dCwgKm5leHRfYmt0Ow0KPiA+Pg0KPiA+PiAgICNpZiBkZWZpbmVkKF9fQVJNX05FT04pDQo+ID4+ ICAgCWNvbnN0IGludCBoaXRtYXNrX3BhZGRpbmcgPSAwOw0KPiA+PiArCXVpbnQxNl90IGhpdG1h c2tfYnVmZmVyW1JURV9IQVNIX0xPT0tVUF9CVUxLX01BWF0gPSB7MH07DQo+ID4+ICsNCj4gPj4g KwlzdGF0aWNfYXNzZXJ0KHNpemVvZigqaGl0bWFza19idWZmZXIpKjgvMiA9PSBSVEVfSEFTSF9C VUNLRVRfRU5UUklFUywNCj4gPj4gKwkiVGhlIGhpdG1hc2sgbXVzdCBiZSBleGFjdGx5IHdpZGUg ZW5vdWdoIHRvIGFjY2VwdCB0aGUgd2hvbGUgaGl0bWFzayB3aGVuIGl0IGlzIGRlbnNlIik7DQo+ ID4+ICAgI2Vsc2UNCj4gPj4gICAJY29uc3QgaW50IGhpdG1hc2tfcGFkZGluZyA9IDE7DQo+ID4+ ICsJdWludDMyX3QgcHJpbV9oaXRtYXNrX2J1ZmZlcltSVEVfSEFTSF9MT09LVVBfQlVMS19NQVhd ID0gezB9Ow0KPiA+PiArCXVpbnQzMl90IHNlY19oaXRtYXNrX2J1ZmZlcltSVEVfSEFTSF9MT09L VVBfQlVMS19NQVhdID0gezB9Ow0KPiA+PiAgICNlbmRpZg0KPiA+Pg0KPiA+PiAgIAlfX2hhc2hf cndfcmVhZGVyX2xvY2soaCk7DQo+ID4+IEBAIC0xOTYzLDE4ICsyMDM2LDI0IEBAIF9fYnVsa19s b29rdXBfbChjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXlzLA0KPiA+ PiAgIAkvKiBDb21wYXJlIHNpZ25hdHVyZXMgYW5kIHByZWZldGNoIGtleSBzbG90IG9mIGZpcnN0 IGhpdCAqLw0KPiA+PiAgIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2tleXM7IGkrKykgew0KPiA+PiAg ICNpZiBkZWZpbmVkKF9fQVJNX05FT04pDQo+ID4+IC0JCWNvbXBhcmVfc2lnbmF0dXJlc19kZW5z ZSgmcHJpbV9oaXRtYXNrW2ldLCAmc2VjX2hpdG1hc2tbaV0sDQo+ID4+IC0JCQlwcmltYXJ5X2Jr dFtpXSwgc2Vjb25kYXJ5X2JrdFtpXSwNCj4gPj4gKwkJdWludDE2X3QgKmhpdG1hc2sgPSAmaGl0 bWFza19idWZmZXJbaV07DQo+ID4+ICsJCWNvbXBhcmVfc2lnbmF0dXJlc19kZW5zZShoaXRtYXNr LA0KPiA+PiArCQkJcHJpbWFyeV9ia3RbaV0tPnNpZ19jdXJyZW50LA0KPiA+PiArCQkJc2Vjb25k YXJ5X2JrdFtpXS0+c2lnX2N1cnJlbnQsDQo+ID4+ICAgCQkJc2lnW2ldLCBoLT5zaWdfY21wX2Zu KTsNCj4gPj4gKwkJY29uc3QgdW5zaWduZWQgaW50IHByaW1faGl0bWFzayA9ICoodWludDhfdCAq KShoaXRtYXNrKTsNCj4gPj4gKwkJY29uc3QgdW5zaWduZWQgaW50IHNlY19oaXRtYXNrID0gKigo dWludDhfdCAqKShoaXRtYXNrKSsxKTsNCj4gPj4gICAjZWxzZQ0KPiA+PiAtCQljb21wYXJlX3Np Z25hdHVyZXNfc3BhcnNlKCZwcmltX2hpdG1hc2tbaV0sICZzZWNfaGl0bWFza1tpXSwNCj4gPj4g KwkJY29tcGFyZV9zaWduYXR1cmVzX3NwYXJzZSgmcHJpbV9oaXRtYXNrX2J1ZmZlcltpXSwgJnNl Y19oaXRtYXNrX2J1ZmZlcltpXSwNCj4gPj4gICAJCQlwcmltYXJ5X2JrdFtpXSwgc2Vjb25kYXJ5 X2JrdFtpXSwNCj4gPj4gICAJCQlzaWdbaV0sIGgtPnNpZ19jbXBfZm4pOw0KPiA+PiArCQljb25z dCB1bnNpZ25lZCBpbnQgcHJpbV9oaXRtYXNrID0gcHJpbV9oaXRtYXNrX2J1ZmZlcltpXTsNCj4g Pj4gKwkJY29uc3QgdW5zaWduZWQgaW50IHNlY19oaXRtYXNrID0gc2VjX2hpdG1hc2tfYnVmZmVy W2ldOw0KPiA+PiAgICNlbmRpZg0KPiA+Pg0KPiA+PiAtCQlpZiAocHJpbV9oaXRtYXNrW2ldKSB7 DQo+ID4+ICsJCWlmIChwcmltX2hpdG1hc2spIHsNCj4gPj4gICAJCQl1aW50MzJfdCBmaXJzdF9o aXQgPQ0KPiA+PiAtCQkJCQlydGVfY3R6MzIocHJpbV9oaXRtYXNrW2ldKQ0KPiA+PiArCQkJCQly dGVfY3R6MzIocHJpbV9oaXRtYXNrKQ0KPiA+PiAgIAkJCQkJPj4gaGl0bWFza19wYWRkaW5nOw0K PiA+PiAgIAkJCXVpbnQzMl90IGtleV9pZHggPQ0KPiA+PiAgIAkJCQlwcmltYXJ5X2JrdFtpXS0+ a2V5X2lkeFtmaXJzdF9oaXRdOw0KPiA+PiBAQCAtMTk4Niw5ICsyMDY1LDkgQEAgX19idWxrX2xv b2t1cF9sKGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwgY29uc3Qgdm9pZCAqKmtleXMsDQo+ID4+ ICAgCQkJY29udGludWU7DQo+ID4+ICAgCQl9DQo+ID4+DQo+ID4+IC0JCWlmIChzZWNfaGl0bWFz a1tpXSkgew0KPiA+PiArCQlpZiAoc2VjX2hpdG1hc2spIHsNCj4gPj4gICAJCQl1aW50MzJfdCBm aXJzdF9oaXQgPQ0KPiA+PiAtCQkJCQlydGVfY3R6MzIoc2VjX2hpdG1hc2tbaV0pDQo+ID4+ICsJ CQkJCXJ0ZV9jdHozMihzZWNfaGl0bWFzaykNCj4gPj4gICAJCQkJCT4+IGhpdG1hc2tfcGFkZGlu ZzsNCj4gPj4gICAJCQl1aW50MzJfdCBrZXlfaWR4ID0NCj4gPj4gICAJCQkJc2Vjb25kYXJ5X2Jr dFtpXS0+a2V5X2lkeFtmaXJzdF9oaXRdOw0KPiA+PiBAQCAtMjAwMyw5ICsyMDgyLDE3IEBAIF9f YnVsa19sb29rdXBfbChjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXlz LA0KPiA+PiAgIAkvKiBDb21wYXJlIGtleXMsIGZpcnN0IGhpdHMgaW4gcHJpbWFyeSBmaXJzdCAq Lw0KPiA+PiAgIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2tleXM7IGkrKykgew0KPiA+PiAgIAkJcG9z aXRpb25zW2ldID0gLUVOT0VOVDsNCj4gPj4gLQkJd2hpbGUgKHByaW1faGl0bWFza1tpXSkgew0K PiA+PiArI2lmIGRlZmluZWQoX19BUk1fTkVPTikNCj4gPj4gKwkJdWludDE2X3QgKmhpdG1hc2sg PSAmaGl0bWFza19idWZmZXJbaV07DQo+ID4+ICsJCXVuc2lnbmVkIGludCBwcmltX2hpdG1hc2sg PSAqKHVpbnQ4X3QgKikoaGl0bWFzayk7DQo+ID4+ICsJCXVuc2lnbmVkIGludCBzZWNfaGl0bWFz ayA9ICooKHVpbnQ4X3QgKikoaGl0bWFzaykrMSk7DQo+ID4+ICsjZWxzZQ0KPiA+PiArCQl1bnNp Z25lZCBpbnQgcHJpbV9oaXRtYXNrID0gcHJpbV9oaXRtYXNrX2J1ZmZlcltpXTsNCj4gPj4gKwkJ dW5zaWduZWQgaW50IHNlY19oaXRtYXNrID0gc2VjX2hpdG1hc2tfYnVmZmVyW2ldOw0KPiA+PiAr I2VuZGlmDQo+ID4+ICsJCXdoaWxlIChwcmltX2hpdG1hc2spIHsNCj4gPj4gICAJCQl1aW50MzJf dCBoaXRfaW5kZXggPQ0KPiA+PiAtCQkJCQlydGVfY3R6MzIocHJpbV9oaXRtYXNrW2ldKQ0KPiA+ PiArCQkJCQlydGVfY3R6MzIocHJpbV9oaXRtYXNrKQ0KPiA+PiAgIAkJCQkJPj4gaGl0bWFza19w YWRkaW5nOw0KPiA+PiAgIAkJCXVpbnQzMl90IGtleV9pZHggPQ0KPiA+PiAgIAkJCQlwcmltYXJ5 X2JrdFtpXS0+a2V5X2lkeFtoaXRfaW5kZXhdOw0KPiA+PiBAQCAtMjAyOCwxMiArMjExNSwxMiBA QCBfX2J1bGtfbG9va3VwX2woY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoq a2V5cywNCj4gPj4gICAJCQkJcG9zaXRpb25zW2ldID0ga2V5X2lkeCAtIDE7DQo+ID4+ICAgCQkJ CWdvdG8gbmV4dF9rZXk7DQo+ID4+ICAgCQkJfQ0KPiA+PiAtCQkJcHJpbV9oaXRtYXNrW2ldICY9 IH4oMSA8PCAoaGl0X2luZGV4IDw8IGhpdG1hc2tfcGFkZGluZykpOw0KPiA+PiArCQkJcHJpbV9o aXRtYXNrICY9IH4oMSA8PCAoaGl0X2luZGV4IDw8IGhpdG1hc2tfcGFkZGluZykpOw0KPiA+PiAg IAkJfQ0KPiA+Pg0KPiA+PiAtCQl3aGlsZSAoc2VjX2hpdG1hc2tbaV0pIHsNCj4gPj4gKwkJd2hp bGUgKHNlY19oaXRtYXNrKSB7DQo+ID4+ICAgCQkJdWludDMyX3QgaGl0X2luZGV4ID0NCj4gPj4g LQkJCQkJcnRlX2N0ejMyKHNlY19oaXRtYXNrW2ldKQ0KPiA+PiArCQkJCQlydGVfY3R6MzIoc2Vj X2hpdG1hc2spDQo+ID4+ICAgCQkJCQk+PiBoaXRtYXNrX3BhZGRpbmc7DQo+ID4+ICAgCQkJdWlu dDMyX3Qga2V5X2lkeCA9DQo+ID4+ICAgCQkJCXNlY29uZGFyeV9ia3RbaV0tPmtleV9pZHhbaGl0 X2luZGV4XTsNCj4gPj4gQEAgLTIwNTcsNyArMjE0NCw3IEBAIF9fYnVsa19sb29rdXBfbChjb25z dCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXlzLA0KPiA+PiAgIAkJCQlwb3Np dGlvbnNbaV0gPSBrZXlfaWR4IC0gMTsNCj4gPj4gICAJCQkJZ290byBuZXh0X2tleTsNCj4gPj4g ICAJCQl9DQo+ID4+IC0JCQlzZWNfaGl0bWFza1tpXSAmPSB+KDEgPDwgKGhpdF9pbmRleCA8PCBo aXRtYXNrX3BhZGRpbmcpKTsNCj4gPj4gKwkJCXNlY19oaXRtYXNrICY9IH4oMSA8PCAoaGl0X2lu ZGV4IDw8IGhpdG1hc2tfcGFkZGluZykpOw0KPiA+PiAgIAkJfQ0KPiA+PiAgIG5leHRfa2V5Og0K PiA+PiAgIAkJY29udGludWU7DQo+ID4+IEBAIC0yMTA3LDE1ICsyMTk0LDE4IEBAIF9fYnVsa19s b29rdXBfbGYoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5cywNCj4g Pj4gICAJdWludDY0X3QgaGl0cyA9IDA7DQo+ID4+ICAgCWludDMyX3QgaTsNCj4gPj4gICAJaW50 MzJfdCByZXQ7DQo+ID4+IC0JdWludDMyX3QgcHJpbV9oaXRtYXNrW1JURV9IQVNIX0xPT0tVUF9C VUxLX01BWF0gPSB7MH07DQo+ID4+IC0JdWludDMyX3Qgc2VjX2hpdG1hc2tbUlRFX0hBU0hfTE9P S1VQX0JVTEtfTUFYXSA9IHswfTsNCj4gPj4gICAJc3RydWN0IHJ0ZV9oYXNoX2J1Y2tldCAqY3Vy X2JrdCwgKm5leHRfYmt0Ow0KPiA+PiAgIAl1aW50MzJfdCBjbnRfYiwgY250X2E7DQo+ID4+DQo+ ID4+ICAgI2lmIGRlZmluZWQoX19BUk1fTkVPTikNCj4gPj4gICAJY29uc3QgaW50IGhpdG1hc2tf cGFkZGluZyA9IDA7DQo+ID4+ICsJdWludDE2X3QgaGl0bWFza19idWZmZXJbUlRFX0hBU0hfTE9P S1VQX0JVTEtfTUFYXSA9IHswfTsNCj4gPj4gKwlzdGF0aWNfYXNzZXJ0KHNpemVvZigqaGl0bWFz a19idWZmZXIpKjgvMiA9PSBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUywNCj4gPj4gKwkiVGhlIGhp dG1hc2sgbXVzdCBiZSBleGFjdGx5IHdpZGUgZW5vdWdoIHRvIGFjY2VwdCB0aGUgd2hvbGUgaGl0 bWFzayBjaGVuIGl0IGlzIGRlbnNlIik7DQo+ID4+ICAgI2Vsc2UNCj4gPj4gICAJY29uc3QgaW50 IGhpdG1hc2tfcGFkZGluZyA9IDE7DQo+ID4+ICsJdWludDMyX3QgcHJpbV9oaXRtYXNrX2J1ZmZl cltSVEVfSEFTSF9MT09LVVBfQlVMS19NQVhdID0gezB9Ow0KPiA+PiArCXVpbnQzMl90IHNlY19o aXRtYXNrX2J1ZmZlcltSVEVfSEFTSF9MT09LVVBfQlVMS19NQVhdID0gezB9Ow0KPiA+PiAgICNl bmRpZg0KPiA+Pg0KPiA+PiAgIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2tleXM7IGkrKykNCj4gPj4g QEAgLTIxMzIsMTggKzIyMjIsMjQgQEAgX19idWxrX2xvb2t1cF9sZihjb25zdCBzdHJ1Y3QgcnRl X2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXlzLA0KPiA+PiAgIAkJLyogQ29tcGFyZSBzaWduYXR1 cmVzIGFuZCBwcmVmZXRjaCBrZXkgc2xvdCBvZiBmaXJzdCBoaXQgKi8NCj4gPj4gICAJCWZvciAo aSA9IDA7IGkgPCBudW1fa2V5czsgaSsrKSB7DQo+ID4+ICAgI2lmIGRlZmluZWQoX19BUk1fTkVP TikNCj4gPj4gLQkJCWNvbXBhcmVfc2lnbmF0dXJlc19kZW5zZSgmcHJpbV9oaXRtYXNrW2ldLCAm c2VjX2hpdG1hc2tbaV0sDQo+ID4+IC0JCQkJcHJpbWFyeV9ia3RbaV0sIHNlY29uZGFyeV9ia3Rb aV0sDQo+ID4+ICsJCQl1aW50MTZfdCAqaGl0bWFzayA9ICZoaXRtYXNrX2J1ZmZlcltpXTsNCj4g Pj4gKwkJCWNvbXBhcmVfc2lnbmF0dXJlc19kZW5zZShoaXRtYXNrLA0KPiA+PiArCQkJCXByaW1h cnlfYmt0W2ldLT5zaWdfY3VycmVudCwNCj4gPj4gKwkJCQlzZWNvbmRhcnlfYmt0W2ldLT5zaWdf Y3VycmVudCwNCj4gPj4gICAJCQkJc2lnW2ldLCBoLT5zaWdfY21wX2ZuKTsNCj4gPj4gKwkJCWNv bnN0IHVuc2lnbmVkIGludCBwcmltX2hpdG1hc2sgPSAqKHVpbnQ4X3QgKikoaGl0bWFzayk7DQo+ ID4+ICsJCQljb25zdCB1bnNpZ25lZCBpbnQgc2VjX2hpdG1hc2sgPSAqKCh1aW50OF90ICopKGhp dG1hc2spKzEpOw0KPiA+PiAgICNlbHNlDQo+ID4+IC0JCQljb21wYXJlX3NpZ25hdHVyZXNfc3Bh cnNlKCZwcmltX2hpdG1hc2tbaV0sICZzZWNfaGl0bWFza1tpXSwNCj4gPj4gKwkJCWNvbXBhcmVf c2lnbmF0dXJlc19zcGFyc2UoJnByaW1faGl0bWFza19idWZmZXJbaV0sICZzZWNfaGl0bWFza19i dWZmZXJbaV0sDQo+ID4+ICAgCQkJCXByaW1hcnlfYmt0W2ldLCBzZWNvbmRhcnlfYmt0W2ldLA0K PiA+PiAgIAkJCQlzaWdbaV0sIGgtPnNpZ19jbXBfZm4pOw0KPiA+PiArCQkJY29uc3QgdW5zaWdu ZWQgaW50IHByaW1faGl0bWFzayA9IHByaW1faGl0bWFza19idWZmZXJbaV07DQo+ID4+ICsJCQlj b25zdCB1bnNpZ25lZCBpbnQgc2VjX2hpdG1hc2sgPSBzZWNfaGl0bWFza19idWZmZXJbaV07DQo+ ID4+ICAgI2VuZGlmDQo+ID4+DQo+ID4+IC0JCQlpZiAocHJpbV9oaXRtYXNrW2ldKSB7DQo+ID4+ ICsJCQlpZiAocHJpbV9oaXRtYXNrKSB7DQo+ID4+ICAgCQkJCXVpbnQzMl90IGZpcnN0X2hpdCA9 DQo+ID4+IC0JCQkJCQlydGVfY3R6MzIocHJpbV9oaXRtYXNrW2ldKQ0KPiA+PiArCQkJCQkJcnRl X2N0ejMyKHByaW1faGl0bWFzaykNCj4gPj4gICAJCQkJCQk+PiBoaXRtYXNrX3BhZGRpbmc7DQo+ ID4+ICAgCQkJCXVpbnQzMl90IGtleV9pZHggPQ0KPiA+PiAgIAkJCQkJcHJpbWFyeV9ia3RbaV0t PmtleV9pZHhbZmlyc3RfaGl0XTsNCj4gPj4gQEAgLTIxNTUsOSArMjI1MSw5IEBAIF9fYnVsa19s b29rdXBfbGYoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5cywNCj4g Pj4gICAJCQkJY29udGludWU7DQo+ID4+ICAgCQkJfQ0KPiA+Pg0KPiA+PiAtCQkJaWYgKHNlY19o aXRtYXNrW2ldKSB7DQo+ID4+ICsJCQlpZiAoc2VjX2hpdG1hc2spIHsNCj4gPj4gICAJCQkJdWlu dDMyX3QgZmlyc3RfaGl0ID0NCj4gPj4gLQkJCQkJCXJ0ZV9jdHozMihzZWNfaGl0bWFza1tpXSkN Cj4gPj4gKwkJCQkJCXJ0ZV9jdHozMihzZWNfaGl0bWFzaykNCj4gPj4gICAJCQkJCQk+PiBoaXRt YXNrX3BhZGRpbmc7DQo+ID4+ICAgCQkJCXVpbnQzMl90IGtleV9pZHggPQ0KPiA+PiAgIAkJCQkJ c2Vjb25kYXJ5X2JrdFtpXS0+a2V5X2lkeFtmaXJzdF9oaXRdOw0KPiA+PiBAQCAtMjE3MSw5ICsy MjY3LDE3IEBAIF9fYnVsa19sb29rdXBfbGYoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25z dCB2b2lkICoqa2V5cywNCj4gPj4NCj4gPj4gICAJCS8qIENvbXBhcmUga2V5cywgZmlyc3QgaGl0 cyBpbiBwcmltYXJ5IGZpcnN0ICovDQo+ID4+ICAgCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2tleXM7 IGkrKykgew0KPiA+PiAtCQkJd2hpbGUgKHByaW1faGl0bWFza1tpXSkgew0KPiA+PiArI2lmIGRl ZmluZWQoX19BUk1fTkVPTikNCj4gPj4gKwkJCXVpbnQxNl90ICpoaXRtYXNrID0gJmhpdG1hc2tf YnVmZmVyW2ldOw0KPiA+PiArCQkJdW5zaWduZWQgaW50IHByaW1faGl0bWFzayA9ICoodWludDhf dCAqKShoaXRtYXNrKTsNCj4gPj4gKwkJCXVuc2lnbmVkIGludCBzZWNfaGl0bWFzayA9ICooKHVp bnQ4X3QgKikoaGl0bWFzaykrMSk7DQo+ID4+ICsjZWxzZQ0KPiA+PiArCQkJdW5zaWduZWQgaW50 IHByaW1faGl0bWFzayA9IHByaW1faGl0bWFza19idWZmZXJbaV07DQo+ID4+ICsJCQl1bnNpZ25l ZCBpbnQgc2VjX2hpdG1hc2sgPSBzZWNfaGl0bWFza19idWZmZXJbaV07DQo+ID4+ICsjZW5kaWYN Cj4gPj4gKwkJCXdoaWxlIChwcmltX2hpdG1hc2spIHsNCj4gPj4gICAJCQkJdWludDMyX3QgaGl0 X2luZGV4ID0NCj4gPj4gLQkJCQkJCXJ0ZV9jdHozMihwcmltX2hpdG1hc2tbaV0pDQo+ID4+ICsJ CQkJCQlydGVfY3R6MzIocHJpbV9oaXRtYXNrKQ0KPiA+PiAgIAkJCQkJCT4+IGhpdG1hc2tfcGFk ZGluZzsNCj4gPj4gICAJCQkJdWludDMyX3Qga2V5X2lkeCA9DQo+ID4+ICAgCQkJCXJ0ZV9hdG9t aWNfbG9hZF9leHBsaWNpdCgNCj4gPj4gQEAgLTIyMDAsMTIgKzIzMDQsMTIgQEAgX19idWxrX2xv b2t1cF9sZihjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXlzLA0KPiA+ PiAgIAkJCQkJcG9zaXRpb25zW2ldID0ga2V5X2lkeCAtIDE7DQo+ID4+ICAgCQkJCQlnb3RvIG5l eHRfa2V5Ow0KPiA+PiAgIAkJCQl9DQo+ID4+IC0JCQkJcHJpbV9oaXRtYXNrW2ldICY9IH4oMSA8 PCAoaGl0X2luZGV4IDw8IGhpdG1hc2tfcGFkZGluZykpOw0KPiA+PiArCQkJCXByaW1faGl0bWFz ayAmPSB+KDEgPDwgKGhpdF9pbmRleCA8PCBoaXRtYXNrX3BhZGRpbmcpKTsNCj4gPj4gICAJCQl9 DQo+ID4+DQo+ID4+IC0JCQl3aGlsZSAoc2VjX2hpdG1hc2tbaV0pIHsNCj4gPj4gKwkJCXdoaWxl IChzZWNfaGl0bWFzaykgew0KPiA+PiAgIAkJCQl1aW50MzJfdCBoaXRfaW5kZXggPQ0KPiA+PiAt CQkJCQkJcnRlX2N0ejMyKHNlY19oaXRtYXNrW2ldKQ0KPiA+PiArCQkJCQkJcnRlX2N0ejMyKHNl Y19oaXRtYXNrKQ0KPiA+PiAgIAkJCQkJCT4+IGhpdG1hc2tfcGFkZGluZzsNCj4gPj4gICAJCQkJ dWludDMyX3Qga2V5X2lkeCA9DQo+ID4+ICAgCQkJCXJ0ZV9hdG9taWNfbG9hZF9leHBsaWNpdCgN Cj4gPj4gQEAgLTIyMzMsNyArMjMzNyw3IEBAIF9fYnVsa19sb29rdXBfbGYoY29uc3Qgc3RydWN0 IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5cywNCj4gPj4gICAJCQkJCXBvc2l0aW9uc1tp XSA9IGtleV9pZHggLSAxOw0KPiA+PiAgIAkJCQkJZ290byBuZXh0X2tleTsNCj4gPj4gICAJCQkJ fQ0KPiA+PiAtCQkJCXNlY19oaXRtYXNrW2ldICY9IH4oMSA8PCAoaGl0X2luZGV4IDw8IGhpdG1h c2tfcGFkZGluZykpOw0KPiA+PiArCQkJCXNlY19oaXRtYXNrICY9IH4oMSA8PCAoaGl0X2luZGV4 IDw8IGhpdG1hc2tfcGFkZGluZykpOw0KPiA+PiAgIAkJCX0NCj4gPj4gICBuZXh0X2tleToNCj4g Pj4gICAJCQljb250aW51ZTsNCj4gPj4gZGlmZiAtLWdpdCBhL2xpYi9oYXNoL3J0ZV9jdWNrb29f aGFzaC5oIGIvbGliL2hhc2gvcnRlX2N1Y2tvb19oYXNoLmgNCj4gPj4gaW5kZXggOGVhNzkzYzY2 ZS4uZWQxOGUxZjQxZSAxMDA2NDQNCj4gPj4gLS0tIGEvbGliL2hhc2gvcnRlX2N1Y2tvb19oYXNo LmgNCj4gPj4gKysrIGIvbGliL2hhc2gvcnRlX2N1Y2tvb19oYXNoLmgNCj4gPj4gQEAgLTEzNyw2 ICsxMzcsNyBAQCBlbnVtIHJ0ZV9oYXNoX3NpZ19jb21wYXJlX2Z1bmN0aW9uIHsNCj4gPj4gICAJ UlRFX0hBU0hfQ09NUEFSRV9TQ0FMQVIgPSAwLA0KPiA+PiAgIAlSVEVfSEFTSF9DT01QQVJFX1NT RSwNCj4gPj4gICAJUlRFX0hBU0hfQ09NUEFSRV9ORU9OLA0KPiA+PiArCVJURV9IQVNIX0NPTVBB UkVfU1ZFLA0KPiA+PiAgIAlSVEVfSEFTSF9DT01QQVJFX05VTQ0KPiA+PiAgIH07DQo+ID4+DQo+ ID4+IC0tDQo+ID4+IDIuMzQuMQ0KPiA+DQoNCg==