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 B9A5625D9 for ; Sun, 29 Jul 2018 15:17:12 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Jul 2018 06:17:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,418,1526367600"; d="scan'208";a="70881432" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga003.jf.intel.com with ESMTP; 29 Jul 2018 06:17:10 -0700 Received: from fmsmsx113.amr.corp.intel.com (10.18.116.7) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 29 Jul 2018 06:17:10 -0700 Received: from fmsmsx117.amr.corp.intel.com ([169.254.3.3]) by FMSMSX113.amr.corp.intel.com ([169.254.13.25]) with mapi id 14.03.0319.002; Sun, 29 Jul 2018 06:17:10 -0700 From: "Wiles, Keith" To: Qiaobin Fu CC: "Richardson, Bruce" , "De Lara Guarch, Pablo" , "dev@dpdk.org" , "michel@digirati.com.br" , "doucette@bu.edu" Thread-Topic: [dpdk-dev] [PATCH] hash table: add a bucket iterator function Thread-Index: AQHUJpuIvVZn3TGPwk+UdIhd8WkN66SmpQeA Date: Sun, 29 Jul 2018 13:17:09 +0000 Message-ID: <5CCC4983-8B4F-480B-B6E1-3A01806BC416@intel.com> References: <20180728174851.46422-1-qiaobinf@bu.edu> In-Reply-To: <20180728174851.46422-1-qiaobinf@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.255.230.74] Content-Type: text/plain; charset="utf-8" Content-ID: <01FFDEBAD702EA469ECF3F6D01925579@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] hash table: add a bucket iterator function 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: Sun, 29 Jul 2018 13:17:13 -0000 DQoNCj4gT24gSnVsIDI4LCAyMDE4LCBhdCAxMjo0OCBQTSwgUWlhb2JpbiBGdSA8cWlhb2JpbmZA YnUuZWR1PiB3cm90ZToNCj4gDQo+IEZ1bmN0aW9uIHJ0ZV9oYXNoX2J1Y2tldF9pdGVyYXRlKCkg ZW5hYmxlcyBjYWxsZXJzIHRvDQo+IGluY3JlbWVudGFsbHkgaXRlcmF0ZSBvdmVyIHRoZSBoYXNo IHRhYmxlIGJ1Y2tldCBieSBidWNrZXQsDQo+IHNvIHRoYXQgaXQgY2FuIGF2b2lkIGNyZWF0aW5n IGhpY2N1cHMgYW5kIHRocmFzaGluZyB0aGUgY2FjaGUNCj4gb2YgdGhlIHByb2Nlc3Nvci4NCj4g DQo+IFRoaXMgcGF0Y2ggbWFpbmx5IGRlYWxzIHdpdGggY2FzZXMgaW4gd2hpY2gNCj4gdGhlIGhh c2ggdGFibGUgaXMgZnVsbCBhbmQgb25lIG5lZWRzIHRvIGRlY2lkZSBpZiB0aGUgaW5jb21pbmcN Cj4gZW50cnkgaXMgbW9yZSB2YWx1YWJsZSB0aGFuIHRoZSBlbnRyaWVzIGFscmVhZHkgaW4gdGhl IGhhc2ggdGFibGUuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBRaWFvYmluIEZ1IDxxaWFvYmluZkBi dS5lZHU+DQo+IFJldmlld2VkLWJ5OiBDb2R5IERvdWNldHRlIDxkb3VjZXR0ZUBidS5lZHU+DQo+ IFJldmlld2VkLWJ5OiBNaWNoZWwgTWFjaGFkbyA8bWljaGVsQGRpZ2lyYXRpLmNvbS5icj4NCj4g LS0tDQo+IGxpYi9saWJydGVfaGFzaC9ydGVfY3Vja29vX2hhc2guYyAgICB8IDYwICsrKysrKysr KysrKysrKysrKysrKysrKysNCj4gbGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoLmggICAgICAgICAg IHwgNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiBsaWIvbGlicnRlX2hhc2gvcnRl X2hhc2hfdmVyc2lvbi5tYXAgfCAgNCArKw0KPiAzIGZpbGVzIGNoYW5nZWQsIDEzMCBpbnNlcnRp b25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFz aC5jIGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFzaC5jDQo+IGluZGV4IGEwNzU0M2Ey OS4uMmI5MGYzNTkzIDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX2hhc2gvcnRlX2N1Y2tvb19o YXNoLmMNCj4gKysrIGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFzaC5jDQo+IEBAIC0x MTYwLDMgKzExNjAsNjMgQEAgcnRlX2hhc2hfaXRlcmF0ZShjb25zdCBzdHJ1Y3QgcnRlX2hhc2gg KmgsIGNvbnN0IHZvaWQgKiprZXksIHZvaWQgKipkYXRhLCB1aW50MzINCj4gDQo+IAlyZXR1cm4g cG9zaXRpb24gLSAxOw0KPiB9DQo+ICsNCj4gK2ludA0KPiArcnRlX2hhc2hfZ2V0X251bV9idWNr ZXRzKHN0cnVjdCBydGVfaGFzaCAqaCkNCj4gK3sNCj4gKwlSRVRVUk5fSUZfVFJVRSgoaCA9PSBO VUxMKSwgLUVJTlZBTCk7DQo+ICsJcmV0dXJuIGgtPm51bV9idWNrZXRzOw0KPiArfQ0KPiArDQo+ ICt1aW50MzJfdA0KPiArcnRlX2hhc2hfZ2V0X3ByaW1hcnlfYnVja2V0KGNvbnN0IHN0cnVjdCBy dGVfaGFzaCAqaCwgaGFzaF9zaWdfdCBzaWcpDQo+ICt7DQo+ICsJcmV0dXJuIHNpZyAmIGgtPmJ1 Y2tldF9iaXRtYXNrOw0KPiArfQ0KPiArDQo+ICt1aW50MzJfdA0KPiArcnRlX2hhc2hfZ2V0X3Nl Y29uZGFyeV9idWNrZXQoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBoYXNoX3NpZ190IHNpZykN Cj4gK3sNCj4gKwlyZXR1cm4gcnRlX2hhc2hfc2Vjb25kYXJ5X2hhc2goc2lnKSAmIGgtPmJ1Y2tl dF9iaXRtYXNrOw0KPiArfQ0KDQpUaGUgYWJvdmUgdHdvIGZ1bmN0aW9ucyBzaG91bGQgaGF2ZSB0 aGUgUkVUVVJOX0lGX1RSVUUoKGggPT0gTlVMTCksIC1FSU5WQUwpOyBzdGF0ZW1lbnRzIGp1c3Qg bGlrZSB0aGUgZmlyc3Qgb25lLg0KDQo+ICsNCj4gK2ludDMyX3QNCj4gK3J0ZV9oYXNoX2J1Y2tl dF9pdGVyYXRlKGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwNCj4gKwljb25zdCB2b2lkICoqa2V5 LCB2b2lkICoqZGF0YSwgdWludDMyX3QgKmJpZHgsIHVpbnQzMl90ICpuZXh0KQ0KPiArew0KPiAr CXVpbnQzMl90IHBvc2l0aW9uOw0KPiArCXN0cnVjdCBydGVfaGFzaF9rZXkgKm5leHRfa2V5Ow0K PiArDQo+ICsJUkVUVVJOX0lGX1RSVUUoKChoID09IE5VTEwpIHx8IChrZXkgPT0gTlVMTCkgfHwg KGRhdGEgPT0gTlVMTCkgfHwNCj4gKwkJKGJpZHggPT0gTlVMTCkgfHwgKG5leHQgPT0gTlVMTCkp LCAtRUlOVkFMKTsNCj4gKw0KPiArCS8qIE91dCBvZiBib3VuZHMuICovDQo+ICsJaWYgKCpiaWR4 ID49IGgtPm51bV9idWNrZXRzIHx8ICpuZXh0ID49IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTKQ0K PiArCQlnb3RvIG5leHRfYnVja2V0Ow0KPiArDQo+ICsJLyogSWYgY3VycmVudCBwb3NpdGlvbiBp cyBlbXB0eSwgZ28gdG8gdGhlIG5leHQgb25lLiAqLw0KPiArCXdoaWxlIChoLT5idWNrZXRzWypi aWR4XS5rZXlfaWR4WypuZXh0XSA9PSBFTVBUWV9TTE9UKSB7DQo+ICsJCSgqbmV4dCkrKzsNCj4g KwkJLyogRW5kIG9mIGJ1Y2tldC4gKi8NCj4gKwkJaWYgKCpuZXh0ID49IFJURV9IQVNIX0JVQ0tF VF9FTlRSSUVTKQ0KPiArCQkJZ290byBuZXh0X2J1Y2tldDsNCj4gKwl9DQo+ICsNCj4gKwkvKiBH ZXQgcG9zaXRpb24gb2YgZW50cnkgaW4ga2V5IHRhYmxlLiAqLw0KPiArCXBvc2l0aW9uID0gaC0+ YnVja2V0c1sqYmlkeF0ua2V5X2lkeFsqbmV4dF07DQo+ICsJbmV4dF9rZXkgPSAoc3RydWN0IHJ0 ZV9oYXNoX2tleSAqKSAoKGNoYXIgKiloLT5rZXlfc3RvcmUgKw0KPiArCQkJCXBvc2l0aW9uICog aC0+a2V5X2VudHJ5X3NpemUpOw0KPiArCS8qIFJldHVybiBrZXkgYW5kIGRhdGEuICovDQo+ICsJ KmtleSA9IG5leHRfa2V5LT5rZXk7DQo+ICsJKmRhdGEgPSBuZXh0X2tleS0+cGRhdGE7DQo+ICsN Cj4gKwkvKiBJbmNyZW1lbnQgaXRlcmF0b3IuICovDQo+ICsJKCpuZXh0KSsrOw0KPiArDQo+ICsJ cmV0dXJuIHBvc2l0aW9uIC0gMTsNCj4gKw0KPiArbmV4dF9idWNrZXQ6DQo+ICsJKmJpZHggPSAo KmJpZHggKyAxKSA+PSBoLT5udW1fYnVja2V0cyA/IDAgOiAqYmlkeCArIDE7DQo+ICsJKm5leHQg PSAwOw0KDQpJZiB0aGlzIGlzIGFuIGVycm9yIGNhc2Ugd2h5IGFyZSB3ZSBzZXR0aW5nICpuZXh0 IHRvIHplcm8gYW5kIGluY3JlbWVudGluZyAqYmlkeCA/DQpJIHdvdWxkIGV4cGVjdCB3ZSBzaG91 bGQgbm90IGNoYW5nZSB0aGUgdmFsdWVzIG9uIGFuIGVycm9yIGJlY2F1c2UgdGhleSBjYW5ub3Qg ZGVidWcgdGhlIHZhbHVlcyBvbiByZXR1cm4uDQoNCj4gKwlyZXR1cm4gLUVOT0VOVDsNCj4gK30N Cj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaC5oIGIvbGliL2xpYnJ0ZV9o YXNoL3J0ZV9oYXNoLmgNCj4gaW5kZXggZjcxY2E5ZmJmLi4zMjliZjQyZDYgMTAwNjQ0DQo+IC0t LSBhL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaC5oDQo+ICsrKyBiL2xpYi9saWJydGVfaGFzaC9y dGVfaGFzaC5oDQo+IEBAIC05NCw2ICs5NCwxNyBAQCBydGVfaGFzaF9jcmVhdGUoY29uc3Qgc3Ry dWN0IHJ0ZV9oYXNoX3BhcmFtZXRlcnMgKnBhcmFtcyk7DQo+ICAqLw0KPiB2b2lkIHJ0ZV9oYXNo X3NldF9jbXBfZnVuYyhzdHJ1Y3QgcnRlX2hhc2ggKmgsIHJ0ZV9oYXNoX2NtcF9lcV90IGZ1bmMp Ow0KPiANCj4gKy8qKg0KPiArICogR2V0IHRoZSBudW1iZXIgb2YgYnVja2V0cyBpbiB0aGUgaGFz aCB0YWJsZS4NCj4gKyAqIEBwYXJhbSBoDQo+ICsgKiAgIEhhc2ggdGFibGUgZm9yIHdoaWNoIHRo ZSBmdW5jdGlvbiBxdWVyaWVzLg0KPiArICogQHJldHVybg0KPiArICogICBUaGUgbnVtYmVyIG9m IGJ1Y2tldHMgaW4gdGhlIGhhc2ggdGFibGUgaC4NCj4gKyAqICAgIC0gRUlOVkFMIC0gaW52YWxp ZCBwYXJhbWV0ZXIgcGFzc2VkIHRvIGZ1bmN0aW9uDQo+ICsgKi8NCj4gK2ludA0KDQpOZWVkcyB0 byBjaGFuZ2UgdG8g4oCYaW50IF9fcnRlX2V4cGVyaW1lbnRhbOKAmQ0KDQo+ICtydGVfaGFzaF9n ZXRfbnVtX2J1Y2tldHMoc3RydWN0IHJ0ZV9oYXNoICpoKTsNCj4gKw0KPiAvKioNCj4gICogRmlu ZCBhbiBleGlzdGluZyBoYXNoIHRhYmxlIG9iamVjdCBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byBp dC4NCj4gICoNCj4gQEAgLTI2MSw2ICsyNzIsMzQgQEAgaW50DQo+IHJ0ZV9oYXNoX2dldF9rZXlf d2l0aF9wb3NpdGlvbihjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IGludDMyX3QgcG9z aXRpb24sDQo+IAkJCSAgICAgICB2b2lkICoqa2V5KTsNCj4gDQo+ICsvKioNCj4gKyAqIEdldCB0 aGUgcHJpbWFyeSBidWNrZXQgaW5kZXggZ2l2ZW4gdGhlIHByZWNvbXB1dGVkIGhhc2ggdmFsdWUu DQo+ICsgKiBUaGlzIG9wZXJhdGlvbiBpcyBtdWx0aS10aHJlYWQgc2FmZS4NCj4gKyAqDQo+ICsg KiBAcGFyYW0gaA0KPiArICogICBIYXNoIHRhYmxlIHRvIGdldCB0aGUga2V5IGZyb20uDQo+ICsg KiBAcGFyYW0gc2lnDQo+ICsgKiAgIFByZWNvbXB1dGVkIGhhc2ggdmFsdWUuDQo+ICsgKiBAcmV0 dXJuDQo+ICsgKiAgIFRoZSBwcmltYXJ5IGJ1Y2tldCBpbmRleC4NCg0KQ29tbWVudCB0aGUgZXJy b3IgY2FzZSBoZXJlLg0KPiArICovDQo+ICt1aW50MzJfdA0KDQpOZWVkcyB0byBjaGFuZ2UgdG8g 4oCYdWludDMyX3QgX19ydGVfZXhwZXJpbWVudGFs4oCZDQo+ICtydGVfaGFzaF9nZXRfcHJpbWFy eV9idWNrZXQoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBoYXNoX3NpZ190IHNpZyk7DQo+ICsN Cj4gKy8qKg0KPiArICogR2V0IHRoZSBzZWNvbmRhcnkgYnVja2V0IGluZGV4IGdpdmVuIHRoZSBw cmVjb21wdXRlZCBoYXNoIHZhbHVlLg0KPiArICogVGhpcyBvcGVyYXRpb24gaXMgbXVsdGktdGhy ZWFkIHNhZmUuDQo+ICsgKg0KPiArICogQHBhcmFtIGgNCj4gKyAqICAgSGFzaCB0YWJsZSB0byBn ZXQgdGhlIGtleSBmcm9tLg0KPiArICogQHBhcmFtIHNpZw0KPiArICogICBQcmVjb21wdXRlZCBo YXNoIHZhbHVlLg0KPiArICogQHJldHVybg0KPiArICogICBUaGUgcHJpbWFyeSBidWNrZXQgaW5k ZXguDQoNCkNvbW1lbnQgdGhlIGVycm9yIGNhc2UgaGVyZS4NCj4gKyAqLw0KPiArdWludDMyX3QN Cg0KTmVlZHMgdG8gY2hhbmdlIHRvIOKAmHVpbnQzMl90IF9fcnRlX2V4cGVyaW1lbnRhbOKAmQ0K PiArcnRlX2hhc2hfZ2V0X3NlY29uZGFyeV9idWNrZXQoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpo LCBoYXNoX3NpZ190IHNpZyk7DQo+ICsNCj4gLyoqDQo+ICAqIEZpbmQgYSBrZXktdmFsdWUgcGFp ciBpbiB0aGUgaGFzaCB0YWJsZS4NCj4gICogVGhpcyBvcGVyYXRpb24gaXMgbXVsdGktdGhyZWFk IHNhZmUuDQo+IEBAIC00MTksNiArNDU4LDMzIEBAIHJ0ZV9oYXNoX2xvb2t1cF9idWxrKGNvbnN0 IHN0cnVjdCBydGVfaGFzaCAqaCwgY29uc3Qgdm9pZCAqKmtleXMsDQo+ICAqLw0KPiBpbnQzMl90 DQo+IHJ0ZV9oYXNoX2l0ZXJhdGUoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lk ICoqa2V5LCB2b2lkICoqZGF0YSwgdWludDMyX3QgKm5leHQpOw0KPiArDQo+ICsvKioNCj4gKyAq IEl0ZXJhdGUgdGhyb3VnaCB0aGUgYnVja2V0cyBpbiBoYXNoIHRhYmxlLCByZXR1cm5pbmcga2V5 LXZhbHVlIHBhaXJzLg0KPiArICoNCj4gKyAqIEBwYXJhbSBoDQo+ICsgKiAgIEhhc2ggdGFibGUg dG8gaXRlcmF0ZQ0KPiArICogQHBhcmFtIGtleQ0KPiArICogICBPdXRwdXQgY29udGFpbmluZyB0 aGUga2V5IHdoZXJlIGN1cnJlbnQgaXRlcmF0b3INCj4gKyAqICAgd2FzIHBvaW50aW5nIGF0DQo+ ICsgKiBAcGFyYW0gZGF0YQ0KPiArICogICBPdXRwdXQgY29udGFpbmluZyB0aGUgZGF0YSBhc3Nv Y2lhdGVkIHdpdGgga2V5Lg0KPiArICogICBSZXR1cm5zIE5VTEwgaWYgZGF0YSB3YXMgbm90IHN0 b3JlZC4NCj4gKyAqIEBwYXJhbSBiaWR4DQo+ICsgKiAgIFBvaW50ZXIgdG8gdGhlIGN1cnJlbnQg YnVja2V0IGluZGV4LiBTaG91bGQgYmUgMCB0byBzdGFydA0KPiArICogICBpdGVyYXRpbmcgdGhl IGhhc2ggdGFibGUuIEl0ZXJhdG9yIGlzIGluY3JlbWVudGVkIGFmdGVyDQo+ICsgKiAgIFJURV9I QVNIX0JVQ0tFVF9FTlRSSUVTIGNhbGxzIG9mIHRoaXMgZnVuY3Rpb24uDQoNClRoZSB3b3JkaW5n IG9mIHRoZSBsYXN0IGxpbmUgc2VlbSBvZGQgdG8gbWUsIHNob3VsZCB0aGUg4oCYb2bigJkgYmUg cmVtb3ZlZD8NCg0KPiArICogQHBhcmFtIG5leHQNCj4gKyAqICAgUG9pbnRlciB0byBpdGVyYXRv ci4gU2hvdWxkIGJlIDAgdG8gc3RhcnQgaXRlcmF0aW5nIHRoZSBidWNrZXQuDQo+ICsgKiAgIEl0 ZXJhdG9yIGlzIGluY3JlbWVudGVkIGFmdGVyIGVhY2ggY2FsbCBvZiB0aGlzIGZ1bmN0aW9uLg0K PiArICogQHJldHVybg0KPiArICogICBQb3NpdGlvbiB3aGVyZSBrZXkgd2FzIHN0b3JlZCwgaWYg c3VjY2Vzc2Z1bC4NCj4gKyAqICAgLSAtRUlOVkFMIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZSBpbnZh bGlkLg0KPiArICogICAtIC1FTk9FTlQgaWYgZW5kIG9mIHRoZSBidWNrZXQuDQo+ICsgKi8NCj4g K2ludDMyX3QNCg0KTmVlZHMgdG8gY2hhbmdlIHRvIOKAmGludDMyX3QgX19ydGVfZXhwZXJpbWVu dGFs4oCZIGFuZCB3aHkgdXNlIOKAmGludDMyX3QnIHdoZW4gZXZlcnl3aGVyZSBlbHNlIHdlIGFy ZSB1c2luZyDigJhpbnQnPw0KDQo+ICtydGVfaGFzaF9idWNrZXRfaXRlcmF0ZShjb25zdCBzdHJ1 Y3QgcnRlX2hhc2ggKmgsDQo+ICsJY29uc3Qgdm9pZCAqKmtleSwgdm9pZCAqKmRhdGEsIHVpbnQz Ml90ICpiaWR4LCB1aW50MzJfdCAqbmV4dCk7DQoNClNob3VsZCBoYXZlIGEgYmxhbmsgbGluZSBo ZXJlIGJlZm9yZSB0aGUgI2lmZGVmLg0KPiAjaWZkZWYgX19jcGx1c3BsdXMNCj4gfQ0KPiAjZW5k aWYNCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaF92ZXJzaW9uLm1hcCBi L2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaF92ZXJzaW9uLm1hcA0KPiBpbmRleCA1MmEyNTc2Zjku LjdkNDhmMzJjOSAxMDA2NDQNCj4gLS0tIGEvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoX3ZlcnNp b24ubWFwDQo+ICsrKyBiL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaF92ZXJzaW9uLm1hcA0KPiBA QCAtMTUsNiArMTUsMTAgQEAgRFBES18yLjAgew0KPiAJcnRlX2hhc2hfbG9va3VwOw0KPiAJcnRl X2hhc2hfbG9va3VwX2J1bGs7DQo+IAlydGVfaGFzaF9sb29rdXBfd2l0aF9oYXNoOw0KPiArCXJ0 ZV9oYXNoX2dldF9udW1fYnVja2V0czsNCj4gKwlydGVfaGFzaF9nZXRfcHJpbWFyeV9idWNrZXQ7 DQo+ICsJcnRlX2hhc2hfZ2V0X3NlY29uZGFyeV9idWNrZXQ7DQo+ICsJcnRlX2hhc2hfYnVja2V0 X2l0ZXJhdGU7DQoNClRoZXNlIG11c3QgYmUgYWRkZWQgdG8gYSBFWFBFUklNRU5UQUwgY2xhdXNl IGluIHRoZSBmaWxlIGFuZCBsYXRlciB5b3UgY2FuIHJlbW92ZSB0aGUgZXhwZXJpbWVudGFsIGlu ZGljdG9yLg0KDQo+IA0KPiAJbG9jYWw6ICo7DQo+IH07DQo+IC0tIA0KPiAyLjE3LjENCj4gDQoN ClJlZ2FyZHMsDQpLZWl0aA0KDQo=