From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 7162C5920 for ; Fri, 21 Dec 2018 16:16:40 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Dec 2018 07:16:39 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,381,1539673200"; d="scan'208";a="120736685" Received: from irsmsx110.ger.corp.intel.com ([163.33.3.25]) by orsmga001.jf.intel.com with ESMTP; 21 Dec 2018 07:16:38 -0800 Received: from irsmsx106.ger.corp.intel.com ([169.254.8.227]) by irsmsx110.ger.corp.intel.com ([169.254.15.233]) with mapi id 14.03.0415.000; Fri, 21 Dec 2018 15:16:37 +0000 From: "Ananyev, Konstantin" To: Akhil Goyal , "dev@dpdk.org" CC: Thomas Monjalon , "Awal, Mohammad Abdul" , "olivier.matz@6wind.com" Thread-Topic: [dpdk-dev] [PATCH v4 06/10] ipsec: implement SA data-path API Thread-Index: AQHUk8ldrSWfZFSbPEuOMTQvJMD8EaWGOHSAgAFbV8CAAZgXAIAAF7uwgAAOCwCAAAPmUA== Date: Fri, 21 Dec 2018 15:16:36 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258010D8BDCA3@IRSMSX106.ger.corp.intel.com> References: <1544110714-4514-2-git-send-email-konstantin.ananyev@intel.com> <1544804589-10338-6-git-send-email-konstantin.ananyev@intel.com> <2601191342CEEE43887BDE71AB977258010D8BD33A@IRSMSX106.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258010D8BDC1A@IRSMSX106.ger.corp.intel.com> <9293d643-a467-06f9-8269-9aa989c497fc@nxp.com> In-Reply-To: <9293d643-a467-06f9-8269-9aa989c497fc@nxp.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMmE0ZDgwNjUtOGY0OC00OWYwLTk1MjctMjY4ZWEyZTI4NzgxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoidUhWMTNrelNucFduVUkyMlZDamI0djcyRXJVR2R2M3pkT0ViY2w5eU5Ldkd6cElVRDBYdzQ3WXd5ZlhLZFdWayJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v4 06/10] ipsec: implement SA data-path API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Dec 2018 15:16:41 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQWtoaWwgR295YWwgW21h aWx0bzpha2hpbC5nb3lhbEBueHAuY29tXQ0KPiBTZW50OiBGcmlkYXksIERlY2VtYmVyIDIxLCAy MDE4IDI6NTEgUE0NCj4gVG86IEFuYW55ZXYsIEtvbnN0YW50aW4gPGtvbnN0YW50aW4uYW5hbnll dkBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCj4gQ2M6IFRob21hcyBNb25qYWxvbiA8dGhvbWFz QG1vbmphbG9uLm5ldD47IEF3YWwsIE1vaGFtbWFkIEFiZHVsIDxtb2hhbW1hZC5hYmR1bC5hd2Fs QGludGVsLmNvbT47IG9saXZpZXIubWF0ekA2d2luZC5jb20NCj4gU3ViamVjdDogUmU6IFtkcGRr LWRldl0gW1BBVENIIHY0IDA2LzEwXSBpcHNlYzogaW1wbGVtZW50IFNBIGRhdGEtcGF0aCBBUEkN Cj4gDQo+IA0KPiANCj4gT24gMTIvMjEvMjAxOCA3OjU3IFBNLCBBbmFueWV2LCBLb25zdGFudGlu IHdyb3RlOg0KPiA+Pj4+PiArICovDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qDQo+ID4+Pj4+ICsg KiBNb3ZlIHByZWNlZGluZyAoTDMpIGhlYWRlcnMgZG93biB0byByZW1vdmUgRVNQIGhlYWRlciBh bmQgSVYuDQo+ID4+Pj4+ICsgKi8NCj4gPj4+PiB3aHkgY2FudCB3ZSB1c2UgcnRlX21idWYgQVBJ cyB0byBhcHBlbmQvcHJlcGVuZC90cmltL2FkanVzdCBsZW5ndGhzLg0KPiA+Pj4gV2UgZG8gdXNl IHJ0ZV9tYnVmIGFwcGVuZC90cmltLCBldGMuIGFkanVzdCBtYnVmJ3MgZGF0YV9vZnMgYW5kIGRh dGFfbGVuLg0KPiA+Pj4gQnV0IGFwYXJ0IGZyb20gdGhhdCBmb3IgdHJhbnNwb3J0IG1vZGUgd2Ug aGF2ZSB0byBtb3ZlIGFjdHVhbCBwYWNrZXQgaGVhZGVycy4NCj4gPj4+IExldCBzYXkgZm9yIGlu Ym91bmQgd2UgaGF2ZSB0byBnZXQgcmlkIG9mIEVTUCBoZWFkZXIgKHdoaWNoIGlzIGFmdGVyIElQ IGhlYWRlciksDQo+ID4+PiBidXQgcHJlc2VydmUgSVAgaGVhZGVyLCBzbyB3ZSBtb3ZpbmcgTDIv TDMgaGVhZGVycyBkb3duLCBvdmVyd3JpdGluZyBFU1AgaGVhZGVyLg0KPiA+PiBvayBnb3QgeW91 ciBwb2ludA0KPiA+Pj4+IEkgYmVsaWV2ZSB0aGVzZSBhZGp1c3RtZW50cyBhcmUgaGFwcGVuaW5n IGluIHRoZSBtYnVmIGl0c2VsZi4NCj4gPj4+PiBNb3Jlb3ZlciB0aGVzZSBBUElzIGFyZSBub3Qg c3BlY2lmaWMgdG8gZXNwIGhlYWRlcnMuDQo+ID4+PiBJIGRpZG4ndCBnZXQgeW91ciBsYXN0IHNl bnRlbmNlOiB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVtb3ZlIGVzcCBoZWFkZXINCj4gPj4+ IChzZWUgYWJvdmUpIC0gdGhhdCdzIHdoeSBJIG5hbWVkIGl0IHRoYXQgd2F5Lg0KPiA+PiBUaGVz ZSBjYW4gYmUgdXNlZCB0byByZW1vdmUgYW55IGhlYWRlciBhbmQgbm90IHNwZWNpZmljYWxseSBl c3AuIFNvIHRoaXMNCj4gPj4gQVBJIGNvdWxkIGJlIGdlbmVyaWMgaW4gcnRlX21idWYuDQo+ID4g VGhhdCBmdW5jdGlvbiBoYXMgbm90aGluZyB0byBkbyB3aXRoIG1idWYgaW4gZ2VuZXJhbC4NCj4g PiBJdCBqdXN0IGNvcGllcyBieXRlcyBiZXR3ZWVuIG92ZXJsYXBwaW5nIGluIGNlcnRhaW4gd2F5 IGJ1ZmZlcnMNCj4gPiAoc3JjLnN0YXJ0IDwgZHN0LnN0YXJ0IDwgc3JjLmVuZCA8IGRzdC5lbmQp Lg0KPiA+IFJpZ2h0IG5vdyBpdCBpcyB2ZXJ5IHByaW1pdGl2ZSAtIGNvcGllcyBvbiBieXRlIGF0 IGEgdGltZSBpbg0KPiA+IGRlc2NlbmRpbmcgb3JkZXIuDQo+ID4gV3JvdGUgaXQganVzdCB0byBh dm9pZCB1c2luZyBtZW1tb3ZlKCkuDQo+ID4gSSBkb24ndCB0aGluayB0aGVyZSBpcyBhbnkgcG9p bnQgdG8gaGF2ZSBzdWNoIGR1bW15IGZ1bmN0aW9uIGluIHRoZSBsaWIvZWFsLg0KPiBJZiB0aGlz IGlzIGJldHRlciB0aGFuIG1lbW1vdmUsIHRoZW4gcHJvYmFibHkgaXQgaXMgYSBjYW5kaWRhdGUg dG8gYQ0KPiBmdW5jdGlvbiBpbiBsaWIuDQoNCklmIGl0IHdvdWxkIGJlIHNvbWV0aGluZyByZWFs bHkgc21hcnQgLSBJIHdvdWxkIHRyeSB0byBwdXNoIGl0IGludG8gdGhlIEVBTCBteXNlbGYuDQpC dXQgaXQgaXMgYSBkdW1iIGZvcigpIGxvb3AsIG5vdGhpbmcgbW9yZS4NCg0KPiBJIHRoaW5rIFRo b21hcy8gT2xpdmllciBjYW4gYmV0dGVyIGNvbW1lbnQgb24gdGhpcw0KPiA+DQo+ID4+Pj4+ICtz dGF0aWMgaW5saW5lIHZvaWQNCj4gPj4+Pj4gK3JlbW92ZV9lc3BoKGNoYXIgKm5wLCBjaGFyICpv cCwgdWludDMyX3QgaGxlbikNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKwl1aW50MzJfdCBpOw0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsJZm9yIChpID0gaGxlbjsgaS0tICE9IDA7IG5wW2ldID0gb3BbaV0p DQo+ID4+Pj4+ICsJCTsNCj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoNCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArLyogdXBkYXRlIG9yaWdpbmFsIGFuZCBuZXcgaXAgaGVhZGVyIGZpZWxk cyBmb3IgdHVubmVsIGNhc2UgKi8NCj4gPj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+Pj4+ PiArdXBkYXRlX3R1bl9sM2hkcihjb25zdCBzdHJ1Y3QgcnRlX2lwc2VjX3NhICpzYSwgdm9pZCAq cCwgdWludDMyX3QgcGxlbiwNCj4gPj4+Pj4gKwkJdWludDMyX3QgbDJsZW4sIHJ0ZV9iZTE2X3Qg cGlkKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArCXN0cnVjdCBpcHY0X2hkciAqdjRoOw0KPiA+Pj4+ PiArCXN0cnVjdCBpcHY2X2hkciAqdjZoOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJaWYgKHNhLT50 eXBlICYgUlRFX0lQU0VDX1NBVFBfTU9ERV9UVU5MVjQpIHsNCj4gPj4+Pj4gKwkJdjRoID0gcDsN Cj4gPj4+Pj4gKwkJdjRoLT5wYWNrZXRfaWQgPSBwaWQ7DQo+ID4+Pj4+ICsJCXY0aC0+dG90YWxf bGVuZ3RoID0gcnRlX2NwdV90b19iZV8xNihwbGVuIC0gbDJsZW4pOw0KPiA+Pj4+IHdoZXJlIGFy ZSB3ZSB1cGRhdGluZyB0aGUgcmVzdCBvZiB0aGUgZmllbGRzLCBsaWtlIHR0bCwgY2hlY2tzdW0s IGlwDQo+ID4+Pj4gYWRkcmVzc2VzLCBldGMNCj4gPj4+IFRUTCwgaXAgYWRkcmVzc2VzIGFuZCBv dGhlciBmaWxlZHMgc3VwcG9zZWQgdG8gYmUgc2V0dXBlZCBieSB1c2VyDQo+ID4+PiBhbmQgcHJv dmlkZWQgdmlhIHJ0ZV9pcHNlY19zYV9pbml0KCk6DQo+ID4+PiBzdHJ1Y3QgcnRlX2lwc2VjX3Nh X3BybS50dW4uaGRyICBzaG91bGQgY29udGFpbiBwcmVwYXJlZCB0ZW1wbGF0ZQ0KPiA+Pj4gZm9y IEwzKGFuZCBMMiBpZiB1c2VyIHdhbnRzIHRvKSBoZWFkZXIuDQo+ID4+PiBDaGVja3N1bSBjYWxj dWxhdGlvbiBpcyBub3QgZG9uZSBpbnNpZGUgdGhlIGxpYiByaWdodCBub3cgLQ0KPiA+Pj4gaXQg aXMgYSB1c2VyIHJlc3BvbnNpYmlsaXR5IHRvIGNhY2x1Y2F0ZS9zZXQgaXQgYWZ0ZXIgbGlicnRl X2lwc2VjDQo+ID4+PiBmaW5pc2hlcyBwcm9jZXNzaW5nIHRoZSBwYWNrZXQuDQo+ID4+IEkgYmVs aWV2ZSBzdGF0aWMgZmllbGRzIGFyZSB1cGRhdGVkIGR1cmluZyBzYSBpbml0IGJ1dCBzb21lIGZp ZWxkcyBsaWtlDQo+ID4+IHR0bCBhbmQgY2hlY2tzdW0sDQo+ID4+IGNhbiBiZSB1cGRhdGVkIGlu IHRoZSBsaWJyYXJ5IGl0c2VsZiB3aGljaCBpcyB1cGRhdGVkIGZvciBldmVyeSBwYWNrZXQuDQo+ ID4+IChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTYyNCkNCj4gPiBBYm91dCBjaGVj a3N1bSAtIHRoZXJlIGlzIG5vIHBvaW50IHRvIGNhbGN1bGF0ZSBja3N1bSBpdCBpbiB0aGUgbGli LA0KPiA+IGFzIHVzZXIgbWF5IGNob29zZSB0byB1c2UgSFcgY2hrc3VtIG9mZmxvYWQuDQo+ID4g QWxsIG90aGVyIGxpYnJhcmllcyBpcF9mcmFnLCBHU08sIGV0Yy4gbGVhdmUgaXQgdG8gdGhlIHVz ZXIsDQo+ID4gSSBkb24ndCBzZWUgd2h5IGlwc2VjIHNob3VsZCBiZSBkaWZmZXJlbnQgaGVyZS4N Cj4gPiBBYm91dCBUVEwgYW5kIG90aGVyIGZpZWxkcyAtIEkgc3VwcG9zZSB5b3UgcmVmZXIgdG86 DQo+ID4gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQzMDEjc2VjdGlvbi01LjEuMg0K PiA+IEhlYWRlciBDb25zdHJ1Y3Rpb24gZm9yIFR1bm5lbCBNb2RlDQo+ID4gcmlnaHQ/DQo+ID4g U3VyZWx5IHRoYXQgaGFzIHRvIGJlIHN1cHBvcnRlZCwgb25lIHdheSBvciB0aGUgb3RoZXIsDQo+ ID4gYnV0IHdlIGRvbid0IHBsYW4gdG8gaW1wbGVtZW50IGl0IGluIDE5LjAyLg0KPiA+IEN1cnJl bnQgcGxhbiB0byBhZGQgaXQgaW4gMTkuMDUsIGlmIHRpbWUgcGVybWl0cy4NCj4gSSBhbSBub3Qg dGFsa2luZyBhYm91dCB0aGUgb3V0ZXIgaXAgY2hlY2tzdW0uDQo+IFNvcnJ5IHRoZSBwbGFjZW1l bnQgb2YgdGhlDQo+IGNvbW1lbnQgd2FzIG5vdCBxdWl0ZSByaWdodC4gQnV0IEkgZG8gbm90IHNl ZSB0aGF0IGhhcHBlbmluZy4NCj4gTXkgcXVlc3Rpb24gaXMgd2lsbCB0aGUgZnVuY3Rpb24gaXBp cF9vdXRib3VuZCBpbiBpcHNlYy1zZWNndyBjYWxsZWQNCj4gZnJvbSB0aGUgYXBwbGljYXRpb24g b3Igd2lsbCBpdCBiZSBtb3ZlZCBpbnNpZGUgdGhlIGxpYnJhcnkuDQo+IEkgYmVsaWV2ZSB0aGlz IHNob3VsZCBiZSBpbnNpZGUgdGhlIGxpYi4NCg0KSSB0aGluayB0aGUgc2FtZSAtIHdlIHByb2Jh Ymx5IG5lZWQgdG8gc3VwcG9ydCBhbGwgZGVzY3JpYmVkIGluIFJGQw0KaGVhZGVyIHVwZGF0ZXMg aW5zaWRlIHRoZSBwcm9jZXNzL3ByZXBhcmUgbGliIGZ1bmN0aW9ucywNCm9yIGF0IGxlYXN0IHBy b3ZpZGUgYSBzZXBhcmF0ZSBmdW5jdGlvbiBmb3IgdGhlIHVzZXIgdG8gcGVyZm9ybSB0aGVtLg0K VGhvdWdoIGFzIEkgc2FpZCBhYm92ZSBpdCBpcyBkZWZpbml0ZWx5IG5vdCBpbiAxOS4wMiBzY29w ZS4NCg0KPiANCj4gDQo+ID4+Pj4+ICsJfSBlbHNlIHsNCj4gPj4+Pj4gKwkJdjZoID0gcDsNCj4g Pj4+Pj4gKwkJdjZoLT5wYXlsb2FkX2xlbiA9IHJ0ZV9jcHVfdG9fYmVfMTYocGxlbiAtIGwybGVu IC0NCj4gPj4+Pj4gKwkJCQlzaXplb2YoKnY2aCkpOw0KPiA+Pj4+PiArCX0NCj4gPj4+Pj4gK30N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArI2VuZGlmIC8qIF9JUEhfSF8gKi8NCj4gPj4+Pj4gZGlmZiAt LWdpdCBhL2xpYi9saWJydGVfaXBzZWMvaXBzZWNfc3FuLmggYi9saWIvbGlicnRlX2lwc2VjL2lw c2VjX3Nxbi5oDQo+ID4+Pj4+IGluZGV4IDE5MzVmNmUzMC4uNmUxOGMzNGViIDEwMDY0NA0KPiA+ Pj4+PiAtLS0gYS9saWIvbGlicnRlX2lwc2VjL2lwc2VjX3Nxbi5oDQo+ID4+Pj4+ICsrKyBiL2xp Yi9saWJydGVfaXBzZWMvaXBzZWNfc3FuLmgNCj4gPj4+Pj4gQEAgLTE1LDYgKzE1LDQ1IEBADQo+ ID4+Pj4+DQo+ID4+Pj4+ICAgICAjZGVmaW5lIElTX0VTTihzYSkJKChzYSktPnNxbl9tYXNrID09 IFVJTlQ2NF9NQVgpDQo+ID4+Pj4+DQo+ID4+Pj4+ICsvKg0KPiA+Pj4+PiArICogZ2V0cyBTUU4u aGkzMiBiaXRzLCBTUU4gc3VwcG9zZWQgdG8gYmUgaW4gbmV0d29yayBieXRlIG9yZGVyLg0KPiA+ Pj4+PiArICovDQo+ID4+Pj4+ICtzdGF0aWMgaW5saW5lIHJ0ZV9iZTMyX3QNCj4gPj4+Pj4gK3Nx bl9oaTMyKHJ0ZV9iZTY0X3Qgc3FuKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArI2lmIFJURV9CWVRF X09SREVSID09IFJURV9CSUdfRU5ESUFODQo+ID4+Pj4+ICsJcmV0dXJuIChzcW4gPj4gMzIpOw0K PiA+Pj4+PiArI2Vsc2UNCj4gPj4+Pj4gKwlyZXR1cm4gc3FuOw0KPiA+Pj4+PiArI2VuZGlmDQo+ ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qDQo+ID4+Pj4+ICsgKiBnZXRzIFNRTi5s b3czMiBiaXRzLCBTUU4gc3VwcG9zZWQgdG8gYmUgaW4gbmV0d29yayBieXRlIG9yZGVyLg0KPiA+ Pj4+PiArICovDQo+ID4+Pj4+ICtzdGF0aWMgaW5saW5lIHJ0ZV9iZTMyX3QNCj4gPj4+Pj4gK3Nx bl9sb3czMihydGVfYmU2NF90IHNxbikNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKyNpZiBSVEVfQllU RV9PUkRFUiA9PSBSVEVfQklHX0VORElBTg0KPiA+Pj4+PiArCXJldHVybiBzcW47DQo+ID4+Pj4+ ICsjZWxzZQ0KPiA+Pj4+PiArCXJldHVybiAoc3FuID4+IDMyKTsNCj4gPj4+Pj4gKyNlbmRpZg0K PiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKg0KPiA+Pj4+PiArICogZ2V0cyBTUU4u bG93MTYgYml0cywgU1FOIHN1cHBvc2VkIHRvIGJlIGluIG5ldHdvcmsgYnl0ZSBvcmRlci4NCj4g Pj4+Pj4gKyAqLw0KPiA+Pj4+PiArc3RhdGljIGlubGluZSBydGVfYmUxNl90DQo+ID4+Pj4+ICtz cW5fbG93MTYocnRlX2JlNjRfdCBzcW4pDQo+ID4+Pj4+ICt7DQo+ID4+Pj4+ICsjaWYgUlRFX0JZ VEVfT1JERVIgPT0gUlRFX0JJR19FTkRJQU4NCj4gPj4+Pj4gKwlyZXR1cm4gc3FuOw0KPiA+Pj4+ PiArI2Vsc2UNCj4gPj4+Pj4gKwlyZXR1cm4gKHNxbiA+PiA0OCk7DQo+ID4+Pj4+ICsjZW5kaWYN Cj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+IHNob3VsZG4ndCB3ZSBtb3ZlIHRoZXNlIHNl cSBudW1iZXIgQVBJcyBpbiBydGVfZXNwLmggYW5kIG1ha2UgdGhlbSBnZW5lcmljDQo+ID4+PiBJ dCBjb3VsZCBiZSBkb25lLCBidXQgd2hvIHdpbGwgdXNlIHRoZW0gZXhjZXB0IGxpYnJ0ZV9pcHNl Yz8NCj4gPj4gV2hvZXZlciB1c2VzIHJ0ZV9lc3AuaCBhbmQgbm90IHVzZSBpcHNlYyBsaWIuIFRo ZSBpbnRlbnQgb2YgcnRlX2VzcC5oIGlzDQo+ID4+IGp1c3QgZm9yIHRoYXQgb25seSwgb3RoZXJ3 aXNlIHdlIGRvbid0IG5lZWQgcnRlX2VzcC5oLCB3ZSBjYW4gaGF2ZSB0aGUNCj4gPj4gY29udGVu dCBvZiBydGVfZXNwLmggaW4gaXBzZWMgaXRzZWxmLg0KPiA+IEFnYWluIHRoZXNlIGZ1bmN0aW9u cyBhcmUgdXNlZCBqdXN0IGluc2lkZSB0aGUgbGliIHRvIGhlbHAgYXZvaWQNCj4gPiBleHRyYSBi eXRlc3dhcHBpbmcgZHVyaW5nIGNyeXB0by1kYXRhL3BhY2tldCBoZWFkZXIgY29uc3RydWN0aW9u cy4NCj4gQWdyZWVkLCBteSBwb2ludCBpcyB3aHkgYWRkaW5nIGEgbmV3IGZpbGUgZm9yIG1hbmFn aW5nIHNlcSBudW1iZXJpbmcgaW4NCj4gZXNwIGhlYWRlcnMsIHdoZW4gdGhpcyBjYW4gYmUgZWFz aWx5IG1vdmVkIHRvIHJ0ZV9lc3AuaC4NCj4gDQo+ID4gSSBkb24ndCBzZWUgaG93IHRoZXkgd2ls bCBiZSB1c2VmdWwgaW4gZ2VuZXJhbC4NCj4gPiBTdXJlLCBpZiB0aGVyZSB3aWxsIGJlIGRlbWFu ZCBmcm9tIHVzZXJzIGluIGZ1dHVyZSAtIHdlIGNhbiBtb3ZlIHRoZW0sDQo+ID4gYnV0IHJpZ2h0 IG5vdyBJIGRvbid0IHRoaW5rIHRoYXQgd291bGQgaGFwcGVuLg0KPiBJbiB0aGF0IGNhc2Ugd2Ug Y2FuIGdldCBhd2F5IHdpdGggZXNwLmggYXMgd2VsbCBhbmQgbW92ZSB0aGF0IGluIHRoaXMNCj4g bmV3IGZpbGUgYW5kIHNlZSBpZiB1c2VycyBuZWVkIGl0IHNlcGFyYXRlbHksIHRoZW4gd2UgbW92 ZSBpdC4NCg0KZXNwLmggYWxyZWFkeSBleGlzdHMgYW5kIGlzIHVzZWQgaW4gc2V2ZXJhbCBvdGhl ciBwbGFjZXM6IA0KZmluZCBsaWIgZHJpdmVycyAtdHlwZSBmIHwgeGFyZ3MgZ3JlcCAnPHJ0ZV9l c3AuaD4nIHwgZ3JlcCBpbmNsdWRlDQpsaWIvbGlicnRlX3BpcGVsaW5lL3J0ZV90YWJsZV9hY3Rp b24uYzojaW5jbHVkZSA8cnRlX2VzcC5oPg0KbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaDoj aW5jbHVkZSA8cnRlX2VzcC5oPg0KDQpLb25zdGFudGluDQoNCg==