From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0081.outbound.protection.outlook.com [104.47.2.81]) by dpdk.org (Postfix) with ESMTP id 292631B42B; Wed, 20 Jun 2018 01:00:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PKF/YT5my+0Kdz5CSRKA+lIBxk8jXaUNSWuDIVkvj8I=; b=RSe9yawlj5uCIMfEHB6jnhOz4pterldCz9LMOLzD61w9q6hblHS6t9ROzCmphhHrfA+OYnFYucdyc9o95BzYFi8JvQq9AhhGTgjIrDCM1D2dMhnSqoFfBGYL9EnuRAdIVbSaGyPqjoC0jhp9dmKYli+vTR9EyNUqxrqmQwKXoQw= Received: from VI1PR0501MB2045.eurprd05.prod.outlook.com (10.167.195.147) by VI1PR0501MB2813.eurprd05.prod.outlook.com (10.172.11.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.863.15; Tue, 19 Jun 2018 23:00:25 +0000 Received: from VI1PR0501MB2045.eurprd05.prod.outlook.com ([fe80::bd68:85f2:e540:99e6]) by VI1PR0501MB2045.eurprd05.prod.outlook.com ([fe80::bd68:85f2:e540:99e6%5]) with mapi id 15.20.0863.016; Tue, 19 Jun 2018 23:00:25 +0000 From: Yongseok Koh To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Adrien Mazarguil , "dev@dpdk.org" , Shahaf Shuler , dpdk stable , "Xueming(Steven) Li" Thread-Topic: [PATCH] net/mlx5: fix error number handling Thread-Index: AQHT/CrB77XBxzx71UKFjyHIOSVKCKRRO0gAgAD264CAAJwLgIAAT3cAgAFPXACAEegMAIABOYoAgAC7nwA= Date: Tue, 19 Jun 2018 23:00:25 +0000 Message-ID: <939801BC-1FFD-4770-A491-81E2F3D847C2@mellanox.com> References: <20180604173731.29125-1-yskoh@mellanox.com> <20180605065246.mw7xnk24cfwxy4an@laranjeiro-vm.dev.6wind.com> <84C956B6-28EE-4F82-97AE-5E9C371DD115@mellanox.com> <20180606065501.hhrfrti47nr5xigo@laranjeiro-vm.dev.6wind.com> <20180606183926.GA1446@yongseok-MBP.local> <20180607073944.zewdysx6ddrdygoz@laranjeiro-vm.dev.6wind.com> <42BB3FF2-80B8-4250-928C-32D509E32DAA@mellanox.com> <20180619114852.lzxwjj7ud5owcyuu@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180619114852.lzxwjj7ud5owcyuu@laranjeiro-vm.dev.6wind.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; x-originating-ip: [209.116.155.178] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR0501MB2813; 7:if/EVE9G+7elqLkjOxmLrkHKzapLgnG8FL4GfjgmYTrJfrMja+3uXQdPCSJfhqb/weJOulOeSJAYfWBvknqYzxbsF2tAENhAN5fVHV30pQRiVPIlHP9s1CMArP7rZiuZ8cxkdk4Lt/fWNZgtHzTK+hDd2BOkGoMENELB9ig22RGxpwjl8btVjaphFsygEXjbfxMcKJFCxcLhGyGHOx3wE6H5mcjVoirAVkR2H0WTERIZL/uGWn+VgS9oRiXuCgqw x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 5c14ee9f-bd3a-4f0a-552e-08d5d638718a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:VI1PR0501MB2813; x-ms-traffictypediagnostic: VI1PR0501MB2813: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(60795455431006); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:VI1PR0501MB2813; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2813; x-forefront-prvs: 07083FF734 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39380400002)(366004)(39860400002)(346002)(376002)(189003)(199004)(5250100002)(2906002)(486006)(186003)(3660700001)(68736007)(3280700002)(229853002)(81166006)(53936002)(2900100001)(81156014)(476003)(26005)(8676002)(66066001)(11346002)(446003)(86362001)(6246003)(5890100001)(6486002)(6436002)(6512007)(4326008)(105586002)(33656002)(76176011)(14454004)(316002)(102836004)(6916009)(106356001)(3846002)(107886003)(6116002)(5660300001)(6506007)(83716003)(8936002)(36756003)(25786009)(93886005)(97736004)(2616005)(59450400001)(82746002)(305945005)(478600001)(54906003)(99286004)(7736002)(53546011); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2813; H:VI1PR0501MB2045.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: NNa59dt1JrgxEY4syI30Ei0ayOsPBmBjil9GMrfxpdJfPDwTJjzsQukNlOxN+/4Dqshlck9hQg+l9fT5AkT28NWLio7ka8mefvghZppEkSYF7EpaDOzt+zsGAdYx6AWN2tizdiXjAJefUJTC+ktL5pZviBdVytGyS63Ih/Ot1hVP7DoyQUPgha9gJ4OpxWn/Tx7ftw7ntKiDrERyZhq7vOz37KkWrlHzzPHrfyBMA02I6GjzfXRNK7IS6VnrLO+yX31C9BFrHCekIIIhbrZPL+XnumG1yn7B/8l4nMmDDXAOcr7VI24iFwaB95yrlDvGjFVI/kzPuBWd3MajfTnJ7A== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <55FA67D86787484BBDC90B18E61D93C3@eurprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c14ee9f-bd3a-4f0a-552e-08d5d638718a X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jun 2018 23:00:25.1684 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2813 Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix error number handling 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: Tue, 19 Jun 2018 23:00:27 -0000 DQo+IE9uIEp1biAxOSwgMjAxOCwgYXQgNDo0OCBBTSwgTsOpbGlvIExhcmFuamVpcm8gPG5lbGlv LmxhcmFuamVpcm9ANndpbmQuY29tPiB3cm90ZToNCj4gDQo+IE9uIE1vbiwgSnVuIDE4LCAyMDE4 IGF0IDA1OjA2OjQxUE0gKzAwMDAsIFlvbmdzZW9rIEtvaCB3cm90ZToNCj4+IA0KPj4+IE9uIEp1 biA3LCAyMDE4LCBhdCAxMjozOSBBTSwgTsOpbGlvIExhcmFuamVpcm8gPG5lbGlvLmxhcmFuamVp cm9ANndpbmQuY29tPiB3cm90ZToNCj4+PiANCj4+PiBPbiBXZWQsIEp1biAwNiwgMjAxOCBhdCAx MTozOToyN0FNIC0wNzAwLCBZb25nc2VvayBLb2ggd3JvdGU6DQo+Pj4+IE9uIFdlZCwgSnVuIDA2 LCAyMDE4IGF0IDA4OjU1OjAxQU0gKzAyMDAsIE7DqWxpbyBMYXJhbmplaXJvIHdyb3RlOg0KPj4+ Pj4gT24gVHVlLCBKdW4gMDUsIDIwMTggYXQgMDk6MzY6MzJQTSArMDAwMCwgWW9uZ3Nlb2sgS29o IHdyb3RlOg0KPj4+Pj4+PiBPbiBKdW4gNCwgMjAxOCwgYXQgMTE6NTIgUE0sIE7DqWxpbyBMYXJh bmplaXJvIDxuZWxpby5sYXJhbmplaXJvQDZ3aW5kLmNvbT4gd3JvdGU6DQo+Pj4+Pj4+IA0KPj4+ Pj4+PiBPbiBNb24sIEp1biAwNCwgMjAxOCBhdCAxMDozNzozMUFNIC0wNzAwLCBZb25nc2VvayBL b2ggd3JvdGU6DQo+Pj4+Pj4+PiBydGVfZXJybm8gc2hvdWxkIGJlIHNhdmVkIG9ubHkgaWYgZXJy b3IgaGFzIG9jY3VycmVkIGJlY2F1c2UgcnRlX2Vycm5vDQo+Pj4+Pj4+PiBjb3VsZCBoYXZlIGdh cmJhZ2UgdmFsdWUuDQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+IEZpeGVzOiBhNmQ4M2I2YTkyMDkgKCJu ZXQvbWx4NTogc3RhbmRhcmRpemUgb24gbmVnYXRpdmUgZXJybm8gdmFsdWVzIikNCj4+Pj4+Pj4+ IENjOiBzdGFibGVAZHBkay5vcmcNCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTog WW9uZ3Nlb2sgS29oIDx5c2tvaEBtZWxsYW5veC5jb20+DQo+Pj4+Pj4+PiAtLS0NCj4+Pj4+Pj4+ IGRyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMgfCAzICsrLQ0KPj4+Pj4+Pj4gMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYyBiL2RyaXZlcnMvbmV0 L21seDUvbWx4NV9mbG93LmMNCj4+Pj4+Pj4+IGluZGV4IDk5NGJlMDViZS4uZWFmZmU3NDk1IDEw MDY0NA0KPj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYw0KPj4+Pj4+ Pj4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYw0KPj4+Pj4+Pj4gQEAgLTM1NjEs NyArMzU2MSw4IEBAIG1seDVfZmRpcl9maWx0ZXJfZGVsZXRlKHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2LA0KPj4+Pj4+Pj4gCQkvKiBUaGUgZmxvdyBkb2VzIG5vdCBtYXRjaC4gKi8NCj4+Pj4+Pj4+ IAkJY29udGludWU7DQo+Pj4+Pj4+PiAJfQ0KPj4+Pj4+Pj4gLQlyZXQgPSBydGVfZXJybm87IC8q IFNhdmUgcnRlX2Vycm5vIGJlZm9yZSBjbGVhbnVwLiAqLw0KPj4+Pj4+Pj4gKwlpZiAocmV0KQ0K Pj4+Pj4+Pj4gKwkJcmV0ID0gcnRlX2Vycm5vOyAvKiBTYXZlIHJ0ZV9lcnJubyBiZWZvcmUgY2xl YW51cC4gKi8NCj4+Pj4+Pj4+IAlpZiAoZmxvdykNCj4+Pj4+Pj4+IAkJbWx4NV9mbG93X2xpc3Rf ZGVzdHJveShkZXYsICZwcml2LT5mbG93cywgZmxvdyk7DQo+Pj4+Pj4+PiBleGl0Og0KPj4+Pj4+ Pj4gLS0gDQo+Pj4+Pj4+PiAyLjExLjANCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFRoaXMgcGF0Y2ggaXMg bm90IGVub3VnaCwgdGhlIHJldHVybmVkIHZhbHVlIGJlaW5nIC1ydGVfZXJybm8gaWYgbm8NCj4+ Pj4+Pj4gZXJyb3IgaXMgZGV0ZWN0ZWQgYnkgdGhlIGZ1bmN0aW9uIGl0IGNhbm5vdCBzZXQgcnRl X2Vycm5vIG5vciByZXR1cm4gaXQuDQo+Pj4+Pj4gDQo+Pj4+Pj4gV2UgbWF5IG5lZWQgdG8gcmVm YWN0b3IgdGhpcyBraW5kIG9mIGNvZGUgKHNhdmluZyBhbmQgcmVzdG9yaW5nIHJ0ZV9lcnJubyku IEkNCj4+Pj4+PiBzdGlsbCBkb24ndCB1bmRlcnN0YW5kIHdoeSB3ZSBzaG91bGQgcHJlc2VydmUg cnRlX2Vycm5vIGxpa2UgdGhpcy4NCj4+Pj4+PiANCj4+Pj4+PiBFdmVuIGlmIHRoaXMgZnVuY3Rp b24gcmV0dXJucyBzdWNjZXNzLCB0aGVyZSdzIG5vIG9ibGlnYXRpb24gdG8gcHJlc2VydmUNCj4+ Pj4+PiBydGVfZXJybm8gaW4gdGhlIGZ1bmN0aW9uLiBPbmNlIGl0IGlzIGNhbGxlZCwgdGhlIG93 bmVyc2hpcCBvZiBydGVfZXJybm8gYmVsb25ncw0KPj4+Pj4+IHRvIHRoaXMgZnVuY3Rpb24uDQo+ Pj4+Pj4gDQo+Pj4+Pj4gSSBjYW4ndCBmaW5kIGhvdyB3ZSBkZWZpbmUgdGhpcyBwZXItbGNvcmUg dmFyaWFibGUgYnV0LCBmcm9tDQo+Pj4+Pj4gdGhlIG1hbiBwYWdlIG9mIGVycm5vLA0KPj4+Pj4+ IA0KPj4+Pj4+ICAgICAgVGhlICA8ZXJybm8uaD4gIGhlYWRlciAgZmlsZSAgZGVmaW5lcyAgdGhl IGludGVnZXIgdmFyaWFibGUgZXJybm8sIHdoaWNoDQo+Pj4+Pj4gICAgICBpcyBzZXQgYnkgc3lz dGVtIGNhbGxzIGFuZCBzb21lIGxpYnJhcnkgZnVuY3Rpb25zIGluIHRoZSBldmVudCBvZiBhbg0K Pj4+Pj4+ICAgICAgZXJyb3IgdG8gaW5kaWNhdGUgd2hhdCB3ZW50IHdyb25nLiAgSXRzIHZhbHVl IGlzIHNpZ25pZmljYW50IG9ubHkgd2hlbg0KPj4+Pj4+ICAgICAgdGhlIHJldHVybiB2YWx1ZSBv ZiB0aGUgY2FsbCBpbmRpY2F0ZWQgYW4gZXJyb3IgKGkuZS4sIC0xIGZyb20gbW9zdA0KPj4+Pj4+ ICAgICAgc3lzdGVtIGNhbGxzOyAtMSBvciBOVUxMIGZyb20gbW9zdCBsaWJyYXJ5ICBmdW5jdGlv bnMpOw0KPj4+Pj4+ICAgICAgYSBmdW5jdGlvbiB0aGF0IHN1Y2NlZWRzIGlzIGFsbG93ZWQgdG8g Y2hhbmdlIGVycm5vLg0KPj4+Pj4+IA0KPj4+Pj4+IFNvLCBJIHN0aWxsIHRoaW5rIGFuIEFQSSBj YW4gY2hhbmdlIHJ0ZV9lcnJubyBldmVuIGlmIGl0IHN1Y2NlZWRzLCBubyBuZWVkIHRvDQo+Pj4+ Pj4gcHJlc2VydmUgaXQuIElmIG5lZWRlZCwgdGhlIGNhbGxlciBoYXMgdG8gc2F2ZSBpdC4NCj4+ Pj4+IA0KPj4+Pj4gRnVuY3Rpb25zIGluIHRoaXMgUE1EIGFyZSBkZWZpbmVkIGFzIGlzOg0KPj4+ Pj4gDQo+Pj4+PiAqIEByZXR1cm4NCj4+Pj4+ICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUg ZXJybm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPj4+Pj4gDQo+Pj4+ PiBXaGljaCBtZWFucyBydGVfZXJybm8gaXMgb25seSBtb2RpZmllZCBpbiBjYXNlIG9mIGVycm9y Lg0KPj4+Pj4gDQo+Pj4+PiBUaGlzIGZpeCBkb2VzIG5vdCByZXNwZWN0IHRoZSBkb2N1bWVudGF0 aW9uIG9mIHRoZSBmdW5jdGlvbiBvciBhbnkgb3RoZXINCj4+Pj4+IGZ1bmN0aW9uIG9mIHRoZSBQ TUQgd2hpY2ggY2FuIHJldHVybiBlcnJvcnMuDQo+Pj4+IA0KPj4+PiBUaGF0J3MgbG9naWNhbGx5 IGEgd3JvbmcgaW50ZXJwcmV0YXRpb24uIEFjY29yZGluZyB0byB0aGUgZGVzY3JpcHRpb24sIGlm DQo+Pj4+IHJldHVybmluZyBlcnJvciwgcnRlX2Vycm5vIGlzIHNldCBidXQgdGhlIG9wcG9zaXRl IGlzbid0IGFsd2F5cyB0cnVlLiBFdmVuIGlmDQo+Pj4+IHJ0ZV9lcnJubyBpcyBzZXQsIGl0IGRv ZXNuJ3QgbWVhbiB0aGVyZSdzIGFuIGVycm9yLiBTbyB0aGUgZGVzY3JpcHRpb24gY29pbmNpZGVz DQo+Pj4+IHdpdGggdGhhdCBvZiBlcnJuby4gSWYgeW91IHdhbnQgdG8gZW5mb3JjZSBwcmVzZXJ2 aW5nIHJ0ZV9lcnJubyBpbiBjYXNlIG9mDQo+Pj4+IHN1Y2Nlc3MsIHlvdSBzaG91bGQgYW1lbmQg dGhlIGRvY3VtZW50YXRpb24uDQo+Pj4+IA0KPj4+Pj4gcnRlX2Vycm5vIGlzIG9ubHkgc2V0IGlm IGFuIGVycm9yIGlzIGVuY291bnRlcmVkIGFuZCBjb250YWlucyBvbmx5IHRoZSBlcnJvcg0KPj4+ Pj4gY29kZSBvZiB0aGUgZmlyc3QgZXJyb3Igc3ViLXNlcXVlbnQgb25lcyBhcmUgY29uc2lkZXJl ZCBjb25zZXF1ZW5jZXMgb2YgdGhlDQo+Pj4+PiBmaXJzdCBvbmUgYW5kIHRodXMgbm90IHByZXNl cnZlZC4NCj4+Pj4+IA0KPj4+Pj4gTm90IHByZXNlcnZpbmcgdGhlIHJ0ZV9lcnJubyBpbiByb2xs IGJhY2tzIGlzIGVxdWl2YWxlbnQgdG8gbm90IHNldHRpbmcNCj4+Pj4+IGl0IGF0IGFsbCBhcyBh IGZ1bmN0aW9uIGNhbGxlZCBieSB0aGUgcm9sbGJhY2sgbWF5IGFsc28gc2V0IGl0LCBleGFtcGxl Og0KPj4+Pj4gDQo+Pj4+PiB7DQo+Pj4+PiAgIHZvaWQgKiBhOw0KPj4+Pj4gDQo+Pj4+PiAgIGZv b19kbygpOw0KPj4+Pj4gICBhICA9IG1hbGxvYygxMCk7DQo+Pj4+PiAgIGlmICghYSkgew0KPj4+ Pj4gICAJcnRlX2Vycm5vID0gRU5PTUVNOw0KPj4+Pj4gCWZvb191bmRvKCk7DQo+Pj4+IA0KPj4+ PiBUaGlzIGV4YW1wbGUgaXMgd2VpcmQuIFlvdSBjYW4gc2ltcGx5IHNldCBydGVfZXJybm8gYWZ0 ZXIgZm9vX3VuZG8oKSBpbiB0aGlzDQo+Pj4+IGNhc2UuDQo+Pj4+IA0KPj4+Pj4gCXJldHVybiAt cnRlX2Vycm5vOw0KPj4+Pj4gICB9DQo+Pj4+PiB9DQo+Pj4+PiANCj4+Pj4+IElmIGZvb191bmRv KCkgYWxzbyBlbmNvdW50ZXIgYW4gZXJyb3IgaXQgd2lsbCBtb2RpZnkgdGhlIHJ0ZV9lcnJubyB3 aGljaA0KPj4+Pj4gbWF5IGhhdmUgYSB2YWx1ZSBkaWZmZXJlbnQgZnJvbSBFTk9NRU0sIGZvciB0 aGUgY2FsbGVlIHdvbid0IGJlIGluZm9ybWVkDQo+Pj4+PiB0aGUgZXJyb3IgaXMgZHVlIHRvIGEg bWVtb3J5IGlzc3VlIGFuZCB0aHVzIGNhbm5vdCBtYWtlIGNvdW50ZXIgcGFydHMuDQo+Pj4+PiBJ biBzdWNoIHNpdHVhdGlvbiB0aGUgcnRlX2Vycm5vIG11c3QgYmUgcHJlc2VydmVkIHRvIGtlZXAg dGhlIEVOT01FTQ0KPj4+Pj4gZXJyb3IgY29kZS4NCj4+Pj4gDQo+Pj4+IEkga25ldyBpdC4gVGhh dCdzIHdoeSBydGVfZXJybm8gaXMgc2F2ZWQgYmVmb3JlIGNhbGxpbmcgYW5vdGhlciBBUEkgd2hp Y2ggbWF5DQo+Pj4+IGNoYW5nZSB0aGUgcnRlX2Vycm5vIGluc2lkZS4gQnV0LCB3ZSBhcmUgdGFs a2luZyBhYm91dCBhIGNhc2Ugd2hlcmUgYW4gQVBJDQo+Pj4+IHJldHVybnMgc3VjY2Vzcy4gSWYg Y2FsbGVyIGlzIHN1cHBvc2VkIHRvIHNhdmUgcnRlX2Vycm5vICh3aGVuIGl0J3MgbmVlZGVkKSwg d2h5DQo+Pj4+IGRvZXMgY2FsbGVlIGhhdmUgdG8gcHV0IHNvbWUgZWZmb3J0IHRvIHByZXNlcnZl IGl0IGV2ZW4gaW4gY2FzZSBvZiBzdWNjZXNzPyBJZg0KPj4+PiBydGVfZXJybm8gbXVzdCBiZSBw cmVzZXJ2ZWQgZXZlbiBpbiBjYXNlIG9mIHN1Y2Nlc3MsIHdlIGhhdmUgdG8gbWFrZSBhIGJpZw0K Pj4+PiBjaGFuZ2UgdG8gcHJlc2VydmUgcnRlX2Vycm5vIGZvciBjYXNlcyB3aGVyZSBhIHZvaWQg ZnVuY3Rpb24gaXMgY2FsbGVkIChvciBjYXNlcw0KPj4+PiB3aGVyZSB3ZSBkb24ndCBjaGVjayBp dHMgcmV0dXJuIHZhbHVlIG9mIG5vbi12b2lkIGZ1bmN0aW9uKS4NCj4+Pj4gDQo+Pj4+PiBUaGlz IGlzIGFsc28gdGhlIG1haW4gcmVhc29uIGFsbW9zdCBhbGwgc3lzdGVtIGZ1bmN0aW9uIG9ubHkg dXBkYXRlDQo+Pj4+PiBlcnJubyB3aGVuIG5vIGVycm9yIGlzIGVuY291bnRlcmVkLg0KPj4+PiAN Cj4+Pj4gJ0FsbW9zdCcgZG9lc24ndCBtZWFuICdhbGwiLCBkb2VzIGl0PyBJdCBpcyB0cnVlIHRo YXQgc3VjaCBmdW5jdGlvbnMgbXVzdCB1cGRhdGUNCj4+Pj4gZXJybm8gd2hlbiBpdCByZXR1cm5z IGVycm9yIGJ1dCBpdCBkb2Vzbid0IGNhcmUgYWJvdXQgdGhlIHZhbHVlIHdoZW4gaXQgcmV0dXJu cw0KPj4+PiBzdWNjZXNzLiBMaWtlIHRoZSBtYW4gcGFnZSBJIGF0dGFjaGVkIGFib3ZlLCB0aGUg ZXJybm8gaXMgc2lnbmlmaWNhbnQgb25seSB3aGVuDQo+Pj4+IGl0IHJldHVybnMgYW4gZXJyb3Iu IEFuZCAiYSBmdW5jdGlvbiB0aGF0IHN1Y2NlZWRzIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGVycm5v LiINCj4+PiANCj4+PiBJdCBpcyAiYWxtb3N0IiBiZWNhdXNlIGEgc3lzdGVtIGZ1bmN0aW9uIHRv dWNoaW5nIHRoZSBlcnJubyB3aGVuIHRoZQ0KPj4+IGZ1bmN0aW9uIHN1Y2NlZWQgaXQgbm90IGNv bW1vbi4gIEJ1dCBhcyB0aGUgbWFuIHBhZ2Ugc2F5cyBpdCBpcyBub3QNCj4+PiBpbXBvc3NpYmxl Lg0KPj4+IA0KPj4+PiBTbywgdGhlIGRlY2lzaW9uIHBvaW50IGlzIHdoZXRoZXIgd2Ugd2FudCB0 byBwcmVzZXJ2ZSBydGVfZXJybm8gaW4gY2FzZSBvZg0KPj4+PiBzdWNjZXNzPyBNeSBvcGluaW9u IGlzIG5vLg0KPj4+IA0KPj4+IEkgZGlkIG5vdCB1bmRlcnN0b29kIGl0IHdhcyBvbmx5IGEgY29u Y2VybiBhYm91dCB0aGUgc3VjY2VzcyBvZiB0aGUNCj4+PiBmdW5jdGlvbiwgZXZlbiBpdCBpcyBi ZXR0ZXIgdG8gYXZvaWQgYXMgbW9zdCBhcyBwb3NzaWJsZSBhIHVzZWxlc3MNCj4+PiBzdG9yZSwg aW4gdGhpcyBzcGVjaWZpYyBjYXNlLCBhcyBlcnJubyAocnRlX2Vycm5vKSBoYXMgYSBnYXJiYWdl IHZhbHVlLA0KPj4+IEkgZnVsbHkgYWdyZWUgd2l0aCB5b3UuDQo+PiANCj4+IE5lbGlvLA0KPj4g DQo+PiBEbyB5b3Ugc3RpbGwgd2FudCBtZSB0byBtYWtlIGFueSBjaGFuZ2UgZm9yIHRoaXMgcGF0 Y2g/DQo+PiBMZXQgbWUga25vdyBpZiBhbnkuDQo+IA0KPiBXaXRoIHlvdXIgbW9kaWZpY2F0aW9u IHRoZSBmdW5jdGlvbiBkb2N1bWVudGF0aW9uIGlzIG5vIG1vcmUgYWNjdXJhdGUgYXMNCj4gcnRl X2Vycm5vIGlzIGFsd2F5cyBzZXQuDQoNCkkgc3RpbGwgZG9uJ3QgYWdyZWUgd2l0aCB0aGF0IGJ1 dCB3aWxsIHNlbmQgb3V0IHYyLiBJdCdzIG5vdCBhIGJpZyBkZWFsLg0KDQpUaGFua3MsDQpZb25n c2Vvaw0KDQo=