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 4E3D4A0C41; Tue, 22 Jun 2021 12:01:06 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2B0094003F; Tue, 22 Jun 2021 12:01:06 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 57B144003C for ; Tue, 22 Jun 2021 12:01:04 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Date: Tue, 22 Jun 2021 12:01:03 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C6187D@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [PATCH] parray: introduce internal API for dynamic arrays X-MimeOLE: Produced By Microsoft Exchange V6.5 Thread-Index: AQHXYQxT3nKj3OToOE+g04oypCLg2asTbdkAgAAOoICAAATCgIAAFeZggAAOq/CABIvGAIAAHL6ggAAPB4CAATs50IAEplTQgAApWQCAAAaAEIAAD6vwgAE+xUCAABC+wA== References: <20210614105839.3379790-1-thomas@monjalon.net> <98CBD80474FA8B44BF855DF32C47DC35C6184E@smartserver.smartshare.dk> <2004320.XGyPsaEoyj@thomas> <0bb118ba-2658-a7d7-ad8f-bf27f62849f7@intel.com> <98CBD80474FA8B44BF855DF32C47DC35C6187A@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35C6187B@smartserver.smartshare.dk> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Ananyev, Konstantin" , "Yigit, Ferruh" , "Thomas Monjalon" , "Richardson, Bruce" Cc: , , , , , Subject: Re: [dpdk-dev] [PATCH] parray: introduce internal API for dynamic arrays 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 Sender: "dev" PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEFu YW55ZXYsDQo+IEtvbnN0YW50aW4NCj4gDQo+ID4NCj4gPiA+IEZyb206IGRldiBbbWFpbHRvOmRl di1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgQW5hbnlldiwNCj4gPiA+IEtvbnN0YW50 aW4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gRnJvbTogZGV2IFttYWlsdG86ZGV2LWJvdW5j ZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBBbmFueWV2LA0KPiA+ID4gPiA+IEtvbnN0YW50aW4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBIb3cgY2FuIHdlIGhpZGUgdGhlIGNhbGxiYWNrcyBz aW5jZSB0aGV5IGFyZSB1c2VkIGJ5IGlubGluZQ0KPiA+ID4gYnVyc3QNCj4gPiA+ID4gPiBmdW5j dGlvbnMuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSSBwcm9iYWJseSBJIG93ZSBhIGJldHRl ciBleHBsYW5hdGlvbiB0byB3aGF0IEkgbWVhbnQgaW4NCj4gZmlyc3QNCj4gPiA+IG1haWwuDQo+ ID4gPiA+ID4gPiBPdGhlcndpc2UgaXQgc291bmRzIGNvbmZ1c2luZy4NCj4gPiA+ID4gPiA+IEkn bGwgdHJ5IHRvIHdyaXRlIGEgbW9yZSBkZXRhaWxlZCBvbmUgaW4gbmV4dCBmZXcgZGF5cy4NCj4g PiA+ID4gPg0KPiA+ID4gPiA+IEFjdHVhbGx5IEkgZ2F2ZSBpdCBhbm90aGVyIHRob3VnaHQgb3Zl ciB3ZWVrZW5kLCBhbmQgbWlnaHQgYmUNCj4gd2UNCj4gPiA+IGNhbg0KPiA+ID4gPiA+IGhpZGUg cnRlX2V0aF9kZXZfY2IgZXZlbiBpbiBhIHNpbXBsZXIgd2F5LiBJJ2QgdXNlDQo+IGV0aF9yeF9i dXJzdCgpDQo+ID4gPiBhcw0KPiA+ID4gPiA+IGFuIGV4YW1wbGUsIGJ1dCB0aGUgc2FtZSBwcmlu Y2lwbGUgYXBwbGllcyB0byBvdGhlciAnZmFzdCcNCj4gPiA+IGZ1bmN0aW9ucy4NCj4gPiA+ID4g Pg0KPiA+ID4gPiA+ICAxLiBOZWVkZWQgY2hhbmdlcyBmb3IgUE1EcyByeF9wa3RfYnVyc3QoKToN Cj4gPiA+ID4gPiAgICAgYSkgY2hhbmdlIGZ1bmN0aW9uIHByb3RvdHlwZSB0byBhY2NlcHQgJ3Vp bnQxNl90IHBvcnRfaWQnDQo+IGFuZA0KPiA+ID4gPiA+ICd1aW50MTZfdCBxdWV1ZV9pZCcsDQo+ ID4gPiA+ID4gICAgICAgICAgaW5zdGVhZCBvZiBjdXJyZW50ICd2b2lkIConLg0KPiA+ID4gPiA+ ICAgICBiKSBFYWNoIFBNRCByeF9wa3RfYnVyc3QoKSB3aWxsIGhhdmUgdG8gY2FsbA0KPiA+ID4g cnRlX2V0aF9yeF9lcGlsb2coKQ0KPiA+ID4gPiA+IGZ1bmN0aW9uIGF0IHJldHVybi4NCj4gPiA+ ID4gPiAgICAgICAgICBUaGlzICBpbmxpbmUgZnVuY3Rpb24gd2lsbCBkbyBhbGwgQ0IgY2FsbHMg Zm9yIHRoYXQNCj4gcXVldWUuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUbyBiZSBtb3JlIHNwZWNp ZmljLCBsZXQgc2F5IHdlIGhhdmUgc29tZSBQTUQ6IHh5eiB3aXRoIFJYDQo+ID4gPiBmdW5jdGlv bjoNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IHVpbnQxNl90DQo+ID4gPiA+ID4geHl6X3JlY3ZfcGt0 cyh2b2lkICpyeF9xdWV1ZSwgc3RydWN0IHJ0ZV9tYnVmICoqcnhfcGt0cywNCj4gdWludDE2X3QN Cj4gPiA+ID4gPiBuYl9wa3RzKQ0KPiA+ID4gPiA+IHsNCj4gPiA+ID4gPiAgICAgIHN0cnVjdCB4 eXpfcnhfcXVldWUgKnJ4cSA9IHJ4X3F1ZXVlOw0KPiA+ID4gPiA+ICAgICAgdWludDE2X3QgbmJf cnggPSAwOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgICAvKiBkbyBhY3R1YWwgc3R1ZmYgaGVy ZSAqLw0KPiA+ID4gPiA+ICAgICAuLi4uDQo+ID4gPiA+ID4gICAgIHJldHVybiBuYl9yeDsNCj4g PiA+ID4gPiB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJdCB3aWxsIGJlIHRyYW5zZm9ybWVkIHRv Og0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gdWludDE2X3QNCj4gPiA+ID4gPiB4eXpfcmVjdl9wa3Rz KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLCBzdHJ1Y3QNCj4gcnRlX21idWYN Cj4gPiA+ID4gPiAqKnJ4X3BrdHMsIHVpbnQxNl90IG5iX3BrdHMpDQo+ID4gPiA+ID4gew0KPiA+ ID4gPiA+ICAgICAgICAgIHN0cnVjdCB4eXpfcnhfcXVldWUgKnJ4cTsNCj4gPiA+ID4gPiAgICAg ICAgICB1aW50MTZfdCBuYl9yeDsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAgICAgICAgIHJ4cSA9 IF9ydGVfZXRoX3J4X3Byb2xvZyhwb3J0X2lkLCBxdWV1ZV9pZCk7DQo+ID4gPiA+ID4gICAgICAg ICAgaWYgKHJ4cSA9PSBOVUxMKQ0KPiA+ID4gPiA+ICAgICAgICAgICAgICByZXR1cm4gMDsNCj4g PiA+ID4gPiAgICAgICAgICBuYl9yeCA9IF94eXpfcmVhbF9yZWN2X3BrdHMocnhxLCByeF9wa3Rz LCBuYl9wa3RzKTsNCj4gPiA+ID4gPiAgICAgICAgICByZXR1cm4gX3J0ZV9ldGhfcnhfZXBpbG9n KHBvcnRfaWQsIHF1ZXVlX2lkLCByeF9wa3RzLA0KPiA+ID4gPiA+IG5iX3BrdHMpOw0KPiA+ID4g PiA+IH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEFuZCBzb21ld2hlcmUgaW4gZXRoZGV2X3ByaXZh dGUuaDoNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IHN0YXRpYyBpbmxpbmUgdm9pZCAqDQo+ID4gPiA+ ID4gX3J0ZV9ldGhfcnhfcHJvbG9nKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lk KTsNCj4gPiA+ID4gPiB7DQo+ID4gPiA+ID4gICAgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgPSAm cnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gI2lmZGVmIFJU RV9FVEhERVZfREVCVUdfUlgNCj4gPiA+ID4gPiAgICAgICAgIFJURV9FVEhfVkFMSURfUE9SVElE X09SX0VSUl9SRVQocG9ydF9pZCwgTlVMTCk7DQo+ID4gPiA+ID4gICAgICAgICBSVEVfRlVOQ19Q VFJfT1JfRVJSX1JFVCgqZGV2LT5yeF9wa3RfYnVyc3QsIE5VTEwpOw0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gICAgICAgICBpZiAocXVldWVfaWQgPj0gZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXMpIHsN Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgUlRFX0VUSERFVl9MT0coRVJSLCAiSW52YWxpZCBS WCBxdWV1ZV9pZD0ldVxuIiwNCj4gPiA+ID4gPiBxdWV1ZV9pZCk7DQo+ID4gPiA+ID4gICAgICAg ICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiA+ICAgICAgICAgfQ0KPiA+ID4gPiA+ICNl bmRpZg0KPiA+ID4gPiA+ICAgcmV0dXJuIGRldi0+ZGF0YS0+cnhfcXVldWVzW3F1ZXVlX2lkXTsN Cj4gPiA+ID4gPiB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBzdGF0aWMgaW5saW5lIHVpbnQxNl90 DQo+ID4gPiA+ID4gX3J0ZV9ldGhfcnhfZXBpbG9nKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90 IHF1ZXVlX2lkLCBzdHJ1Y3QNCj4gPiA+IHJ0ZV9tYnVmDQo+ID4gPiA+ID4gKipyeF9wa3RzLCBj b25zdCB1aW50MTZfdCBuYl9wa3RzKTsNCj4gPiA+ID4gPiB7DQo+ID4gPiA+ID4gICAgIHN0cnVj dCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+ICNpZmRlZiBSVEVfRVRIREVWX1JYVFhfQ0FMTEJBQ0tTDQo+ID4gPiA+ID4g ICAgICAgICBzdHJ1Y3QgcnRlX2V0aF9yeHR4X2NhbGxiYWNrICpjYjsNCj4gPiA+ID4gPg0KPiA+ ID4gPiA+ICAgICAgICAgLyogX19BVE9NSUNfUkVMRUFTRSBtZW1vcnkgb3JkZXIgd2FzIHVzZWQg d2hlbiB0aGUNCj4gPiA+ID4gPiAgICAgICAgICAqIGNhbGwgYmFjayB3YXMgaW5zZXJ0ZWQgaW50 byB0aGUgbGlzdC4NCj4gPiA+ID4gPiAgICAgICAgICAqIFNpbmNlIHRoZXJlIGlzIGEgY2xlYXIg ZGVwZW5kZW5jeSBiZXR3ZWVuIGxvYWRpbmcNCj4gPiA+ID4gPiAgICAgICAgICAqIGNiIGFuZCBj Yi0+Zm4vY2ItPm5leHQsIF9fQVRPTUlDX0FDUVVJUkUgbWVtb3J5DQo+IG9yZGVyIGlzDQo+ID4g PiA+ID4gICAgICAgICAgKiBub3QgcmVxdWlyZWQuDQo+ID4gPiA+ID4gICAgICAgICAgKi8NCj4g PiA+ID4gPiAgICAgICAgIGNiID0gX19hdG9taWNfbG9hZF9uKCZkZXYtPnBvc3RfcnhfYnVyc3Rf Y2JzW3F1ZXVlX2lkXSwNCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgICAgICBpZiAodW5s aWtlbHkoY2IgIT0gTlVMTCkpIHsNCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgZG8gew0KPiA+ ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIG5iX3J4ID0gY2ItPmZuLnJ4KHBvcnRfaWQs IHF1ZXVlX2lkLA0KPiA+ID4gcnhfcGt0cywNCj4gPiA+ID4gPiBuYl9yeCwNCj4gPiA+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYl9wa3RzLCBj Yi0NCj4gPiA+ID5wYXJhbSk7DQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgY2Ig PSBjYi0+bmV4dDsNCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgfSB3aGlsZSAoY2IgIT0gTlVM TCk7DQo+ID4gPiA+ID4gICAgICAgICB9DQo+ID4gPiA+ID4gI2VuZGlmDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiAgICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfcnhfYnVyc3QocG9ydF9pZCwgcXVldWVf aWQsICh2b2lkDQo+ID4gPiAqKilyeF9wa3RzLA0KPiA+ID4gPiA+IG5iX3J4KTsNCj4gPiA+ID4g PiAgICAgICAgIHJldHVybiBuYl9yeDsNCj4gPiA+ID4gPiAgfQ0KPiA+ID4gPg0KPiA+ID4gPiBU aGF0IHdvdWxkIG1ha2UgdGhlIGNvbXBpbGVyIGlubGluZSBfcnRlX2V0aF9yeF9lcGlsb2coKSBp bnRvIHRoZQ0KPiA+ID4gZHJpdmVyIHdoZW4gY29tcGlsaW5nIHRoZSBEUERLIGxpYnJhcnkuIEJ1 dA0KPiA+ID4gPiBSVEVfRVRIREVWX1JYVFhfQ0FMTEJBQ0tTIGlzIGEgZGVmaW5pdGlvbiBmb3Ig dGhlIGFwcGxpY2F0aW9uDQo+ID4gPiBkZXZlbG9wZXIgdG8gdXNlIHdoZW4gY29tcGlsaW5nIHRo ZSBEUERLIGFwcGxpY2F0aW9uLg0KPiA+ID4NCj4gPiA+IEkgYmVsaWV2ZSBpdCBpcyBmb3IgYm90 aCAtIHVzZXIgYXBwIGFuZCBEUERLIGRyaXZlcnMuDQo+ID4gPiBBRkFJSywgdGhleSBib3RoIGhh dmUgdG8gdXNlIHRoZSBzYW1lIHJ0ZV9jb25maWcuaCwgb3RoZXJ3aXNlDQo+IHRoaW5ncw0KPiA+ ID4gd2lsbCBiZSBicm9rZW4uDQo+ID4gPiBJZiBsZXQgc2F5IFJURV9FVEhERVZfUlhUWF9DQUxM QkFDS1MgaXMgbm90IGVuYWJsZWQgaW4gZXRoZGV2LCB0aGVuDQo+ID4gPiB1c2VyIHdvdWxkbid0 IGJlIGFibGUgdG8gYWRkIGEgY2FsbGJhY2sgYXQgZmlyc3QgcGxhY2UuDQo+ID4NCj4gPiBJbiB0 aGUgY2FzZSBvZiBSVEVfRVRIREVWX1JYVFhfQ0FMTEJBQ0tTLCBpdCBpcyBpbmRlcGVuZGVudDoN Cj4gDQo+IE5vdCByZWFsbHkuDQo+IFRoZXJlIGFyZSBmZXcgbGlicmFyaWVzIHdpdGhpbiBEUERL IHRoYXQgZG8gcmVseSBvbiByeC90eCBjYWxsYmFja3M6DQo+IGJwZiwgbGF0ZW5jeXN0YXQsIHBk dW1wLCBwb3dlci4NCg0KSSBkbyBub3QgY29uc2lkZXIgdGhlc2UgdG8gYmUgY29yZSBsaWJyYXJp ZXMgaW4gRFBESy4gSWYgdGhlc2UgbGlicmFyaWVzIGFyZSB1c2VkIGluIGFuIGFwcGxpY2F0aW9u LCB0aGF0IGFwcGxpY2F0aW9uIG11c3QgYmUgY29tcGlsZWQgd2l0aCBSVEVfRVRIREVWX1JYVFhf Q0FMTEJBQ0tTLg0KDQo+IFdpdGggdGhlIGFwcHJvYWNoIGFib3ZlIHRoZWlyIGZ1bmN0aW9uYWxp dHkgd2lsbCBiZSBicm9rZW4gLQ0KPiBzZXR1cCBmdW5jdGlvbnMgd2lsbCByZXR1cm4gc3VjY2Vz cywgYnV0IGFjdHVhbCBjYWxsYmFja3Mgd2lsbCBub3QgYmUNCj4gaW52b2tlZC4NCg0KSSBqdXN0 IHRvb2sgYSBsb29rIGF0IGJwZiBhbmQgbGF0ZW5jeXN0YXQuIEJwZiBjb3JyZWN0bHkgY2hlY2tz IGZvciB0aGUgcmV0dXJuIGNvZGUsIGFuZCByZXR1cm5zIGFuIGVycm9yIGlmIGV0aGRldiBoYXMg YmVlbiBjb21waWxlZCB3aXRob3V0IFJURV9FVEhERVZfUlhUWF9DQUxMQkFDS1MuIExhdGVuY3lz dGF0IGNoZWNrcyBmb3IgdGhlIHJldHVybiBjb2RlLCBidXQgb25seSBsb2dzIHRoZSBlcnJvciBh bmQgY29udGludWVzIGFzIGlmIGV2ZXJ5dGhpbmcgaXMgZ29vZCBhbnl3YXkuIFRoYXQgaXMgYSBi dWcgaW4gdGhlIGxhdGVuY3lzdGF0IGxpYnJhcnkuDQoNCj4gRnJvbSBvdGhlciBzaWRlLCBzb21l IGxpYnJhcmllcyBkbyBpbnZva2UgcngvdHggYnVyc3Qgb24gdGhlaXIgb3duOiBpcC0NCj4gcGlw ZWxpbmUsIGdyYXBoLg0KPiBGb3IgdGhlbSBjYWxsYmFjayBpbnZvY2F0aW9uIHdpbGwgY29udGlu dWUgdG8gd29yaywgZXZlbiB3aGVuDQo+IFJURV9FVEhERVZfUlhUWF9DQUxMQkFDS1MgaXMgZGlz YWJsZWQgaW4gdGhlIGFwcC4NCj4gSW4gZ2VuZXJhbCwgYnVpbGRpbmcgRFBESyBsaWJzIGFuZCB1 c2VyIGFwcCB3aXRoIGRpZmZlcmVudCBydGVfY29uZmlnLmgNCj4gaXMgcmVhbGx5IGEgYmFkIGlk ZWEuDQo+IEl0IG1pZ2h0IHdvcmsgaW4gc29tZSBjYXNlcywgYnV0IEkgYmVsaWV2ZSBpdCBpcyBu b3Qgc3VwcG9ydGVkIGFuZCB1c2VyDQo+IHNob3VsZCBub3QgcmVseSBvbiBpdC4NCj4gSWYgdXNl ciBuZWVkcyB0byBkaXNhYmxlIFJURV9FVEhERVZfUlhUWF9DQUxMQkFDS1MgaW4gaGlzIGFwcCwg dGhlbiB0aGUNCj4gcHJvcGVyIHdheSB3b3VsZCBiZToNCj4gLSB1cGRhdGUgcnRlX2NvbmZpZy5o DQo+IC0gcmVidWlsZCBib3RoIERQREsgYW5kIHRoZSBhcHAgd2l0aCBuZXcgY29uZmlnDQoNCklu IHByaW5jaXBsZSwgSSBjb21wbGV0ZWx5IGFncmVlIHdpdGggeW91ciByZWFzb25pbmcgZnJvbSBh IGhpZ2ggbGV2ZWwgcGVyc3BlY3RpdmUuDQoNCkhvd2V2ZXIsIGFjY2VwdGluZyBpdCB3b3VsZCBw cm9iYWJseSBsZWFkIHRvIHRoZSBSVEVfRVRIREVWX1JYVFhfQ0FMTEJBQ0tTIGNvbXBpbGUgdGlt ZSBjb25maWd1cmF0aW9uIG9wdGlvbiBiZWluZyBjb21wbGV0ZWx5IHJlbW92ZWQsIGFuZCBldGhk ZXYgY2FsbGJhY2tzIGJlaW5nIGFsd2F5cyBzdXBwb3J0ZWQuIEFuZCBJIGRvbid0IHRoaW5rIHN1 Y2ggYSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBvZiBhIGNvcmUgRFBESyBsaWJyYXJ5IHNob3Vs ZCBiZSBhY2NlcHRlZC4NCg0KPHJhbnQgb24+DQpJIHdhcyBvcHBvc2VkIHRvIHRoZSAiY2FsbGJh Y2sgaG9va3MiIGNvbmNlcHQgZnJvbSB0aGUgYmVnaW5uaW5nLCBhbmQgc3RpbGwgYW0uIFRoZSBw YXRoIHRoYXQgcGFja2V0cyB0YWtlIHRocm91Z2ggdmFyaW91cyBmdW5jdGlvbnMgYW5kIHBpcGVs aW5lIHN0YWdlcyBzaG91bGQgYmUgZGV0ZXJtaW5lZCBhbmQgaW1wbGVtZW50ZWQgYnkgdGhlIGFw cGxpY2F0aW9uLCBub3QgYnkgdGhlIERQREsgbGlicmFyaWVzLg0KDQpJZiB3ZSB3YW50IHRvIHBy b3ZpZGUgYSBzdGFuZGFyZGl6ZWQgYWR2YW5jZWQgSVAgcGlwZWxpbmUgZm9yIERQREssIHdlIGNv dWxkIG9mZmVyIGl0IGFzIGEgbWlkZGxlIGxheWVyIGxpYnJhcnkgdXNpbmcgdGhlIHVuZGVybHlp bmcgRFBESyBsaWJyYXJpZXMgdG8gaW1wbGVtZW50IHZhcmlvdXMgY2FsbGJhY2tzLCBJUCBmcmFn bWVudGF0aW9uIHJlYXNzZW1ibHksIGV0Yy4uIERvbid0IHR3ZWFrIHRoZSBjb3JlIGxpYnJhcmll cyAoY29zdGluZyBtZW1vcnkgYW5kL29yIHBlcmZvcm1hbmNlKSB0byBzdXBwb3J0IGFuIGluY3Jl YXNpbmcgYW1vdW50IG9mIHN1cHBsZW1lbnRhbCBsaWJyYXJpZXMsIHdoaWNoIG1heSBub3QgYmUg dXNlZCBieSBhbGwgYXBwbGljYXRpb25zLg0KDQpXZSBkb24ndCB3YW50IERQREsgdG8gYmVjb21l IGxpa2UgdGhlIExpbnV4IElQIHN0YWNrLCB3aXRoIGNhbGxiYWNrIGhvb2tzIGFuZCBydW50aW1l IGluc3RhbGxhYmxlIHByb3RvY29sIGhhbmRsaW5nIGV2ZXJ5d2hlcmUuIEFsbCB0aGlzIGNydWZ0 IHdpdGggdGhlaXIgc21hbGwgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25zIGFkZHMgdXAhDQo8cmFu dCBvZmY+DQoNCj4gDQo+ID4NCj4gPiBJZiBpdCBpcyBub3QgY29tcGlsZWQgd2l0aCB0aGUgRFBE SyBsaWJyYXJ5LCBhdHRlbXB0cyB0byBpbnN0YWxsDQo+IGNhbGxiYWNrcyBmcm9tIHRoZSBhcHBs aWNhdGlvbiB3aWxsIGZhaWwgd2l0aCBFTk9UU1VQLg0KPiA+DQo+ID4gSWYgaXQgaXMgbm90IGNv bXBpbGVkIHdpdGggdGhlIERQREsgYXBwbGljYXRpb24sIG5vIHRpbWUgd2lsbCBiZQ0KPiBzcGVu dCB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlmIGFueSB0aGVyZSBhcmUgYW55IGNhbGxiYWNrcyB0byBj YWxsLg0KPiA+DQo+ID4gPiBCVFcsICBzdWNoIGNoYW5nZSB3aWxsIGFsbG93IHVzIHRvIG1ha2Ug UlRFX0VUSERFVl9SWFRYX0NBTExCQUNLUw0KPiA+ID4gaW50ZXJuYWwgZm9yIGV0aGRldi9QTUQg bGF5ZXIsIHdoaWNoIGlzIGEgZ29vZCB0aGluZyBmcm9tIG15DQo+ID4gPiBwZXJzcGVjdGl2ZS4N Cj4gPg0KPiA+IElmIGl0IGNhbiBiZSBkb25lIHdpdGhvdXQgZGVncmFkaW5nIHBlcmZvcm1hbmNl IGZvciBhcHBsaWNhdGlvbnMgbm90DQo+IHVzaW5nIGNhbGxiYWNrcy4NCg0K