From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0077.outbound.protection.outlook.com [104.47.1.77]) by dpdk.org (Postfix) with ESMTP id 38CF31B111 for ; Thu, 27 Sep 2018 11:06:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=facFX/KHqIowt/7PFYHXVDNCGWDljaikXB2ZqUuauZ0=; b=hiLAlkVvjGgDu5IeBegC0S4VGXWriI1o/TiEcq13iVrAZKDohEjfpC2AaKR9j1/vQ8iIIWspeDS1QRp1xXpr9ED/jKUlijHDJiKdjS7npr/JqzsBbAnsc0+qNvC5FLE7satBrwiv9zNHx6okDDJoqYiWndntjoSF+OBkH1JHAdE= Received: from DB7PR08MB3385.eurprd08.prod.outlook.com (20.176.238.90) by DB7PR08MB3451.eurprd08.prod.outlook.com (20.176.238.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.20; Thu, 27 Sep 2018 09:06:36 +0000 Received: from DB7PR08MB3385.eurprd08.prod.outlook.com ([fe80::eda0:7bf6:a891:3ae7]) by DB7PR08MB3385.eurprd08.prod.outlook.com ([fe80::eda0:7bf6:a891:3ae7%5]) with mapi id 15.20.1164.024; Thu, 27 Sep 2018 09:06:36 +0000 From: "Phil Yang (Arm Technology China)" To: Ferruh Yigit , Honnappa Nagarahalli , Jerin Jacob CC: "dev@dpdk.org" , nd , "kkokkilagadda@caviumnetworks.com" , "Gavin Hu (Arm Technology China)" Thread-Topic: [PATCH v2 2/3] kni: fix kni fifo synchronization Thread-Index: AQHUULwDTZT/ca7MCUaWgBQi/M2/B6T5SZKAgAAEgwCAAO32AIAAAeWAgAALuICACDDrgIABZdyA Date: Thu, 27 Sep 2018 09:06:36 +0000 Message-ID: References: <1537363820-3827-1-git-send-email-phil.yang@arm.com> <1537364560-4124-1-git-send-email-phil.yang@arm.com> <1537364560-4124-2-git-send-email-phil.yang@arm.com> <20180920082846.GB19425@jerin> <20180920153700.GA9459@jerin> <20180921055529.GA15861@jerin> <43c8a93b-a540-f8b2-d810-81d3bbdef3c4@intel.com> In-Reply-To: <43c8a93b-a540-f8b2-d810-81d3bbdef3c4@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Phil.Yang@arm.com; x-originating-ip: [113.29.88.7] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB7PR08MB3451; 6:x+bGcrNCmh9YxuDlIRZV//glZqOHNBOcxaE4cLHNRQt1oPLCfJPPIBeO9tHHBmQM+yCV/XiNTa4Bh8dGWfgJnXoDpcOZTiObVoW36vTsWCRna0ONpO1xA501V+3aqYjT+N9i399BtIkM8BWR7FRIg1SxzicZS25T5xDZv287ODhGTMUYbATQUaMEi2PM8zuWA/bDF85Svm61nLYZugBE3Sn0HBgEtbeAEcY487hhPzWOZNSEilPz0h9GIEyFps2BYUgWW88ykSdxROBWTYMAg/zSeZxqSy59Y0sxlKRzB1okm8c5QMMUfZ0nDFVH2vedNIlzHpjEIjhcqgxKph8QwC9ZYkLSXnj36jUcgtsJIKbzP2FOdM6xPYJ4up0bOehV/9a/7U3/G/eDfx+fBnNZDDQIUct91AKUl0jQZPO4oWTgCCf1l3lHsVAMhiGMIF0P3+kzHRDnNdKi1O4GIzv5cw==; 5:grncYCv661aZoZLlpJY5EEqBgr7kPPLbywKORSrppYDYCdWMAIH90aqeUDEJpFPlqlwuAlYJlHyBcNnjKysP9gXxt2UNwtatZmsXRYInpw6AwO7E2OKuemGPieFNwjnmGKVwSUuxYVU4quC9cvrfv8tR08Iw76V5OEY5uTAp3hA=; 7:Nkr1xDQ4dOfSYNMM/3B00hU1zJNce7eenGHZBBA78iV22m1lBIzvGuhHK9HijdWNOBorDCIi4VYX60bf9zxGC1kIivShyKWmhv8P40iPfdTsqjvGkr3sDrxeulAyY1PCjs5jbcP0es5XQfnRqPQ6YmSYyEPivmQ1zE6pw1twd3bRfleA8gycZEk2g8SFDaf5OjsvBihBoOWwyk61qQtKcGO6+etsDO1B8M+KgEuiQXNLuKeneG+tWZNvyMB+pg+e x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: 6abe257b-e450-4221-ce55-08d624588740 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB7PR08MB3451; x-ms-traffictypediagnostic: DB7PR08MB3451: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(163750095850)(228905959029699)(180628864354917); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051); SRVR:DB7PR08MB3451; BCL:0; PCL:0; RULEID:; SRVR:DB7PR08MB3451; x-forefront-prvs: 0808323E97 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(346002)(136003)(376002)(39860400002)(366004)(189003)(199004)(13464003)(57704003)(86362001)(8936002)(97736004)(72206003)(68736007)(2906002)(99286004)(2900100001)(4326008)(478600001)(81166006)(81156014)(106356001)(8676002)(105586002)(5660300001)(54906003)(110136005)(316002)(6246003)(25786009)(55016002)(6436002)(9686003)(74316002)(305945005)(229853002)(71200400001)(71190400001)(34290500001)(11346002)(3846002)(186003)(446003)(6116002)(33656002)(486006)(102836004)(26005)(476003)(14444005)(256004)(5250100002)(53546011)(14454004)(76176011)(7736002)(6506007)(66066001)(93886005)(7696005)(53936002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3451; H:DB7PR08MB3385.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: kH9AiTWMcSMRb7LD7TQ8w46eB8VZuBGbp9vp2BER+7uSOdleYTPreQRov/97Wsztib2QQ3HTemXZaJh9LDz/YJ31YLTnn3eMGMrR3PtDzutGdrkbeYHe0ksK31v9bR/W6jibbtkijFRDfCdI5sSaQ3KsX2KKtaBABSTE3exedYecbiH691TUSt4uvmV8v3VsA07IvpZvgZ72ta2Iqji9JVbgRqBpL0MbiJ2VA0L2+XY/2/iiiD0opi3Y30hQyUh7nYJsKTAaSVrVahVfcJyoupkJSlaJnqJ+P5j6dY86HKJiaELPh3PO8J34SkwdSW7n2heM96dMlsPI3IDMTVf2iLnyKKPG8/jb1vJeQoaoBFs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6abe257b-e450-4221-ce55-08d624588740 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Sep 2018 09:06:36.3303 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3451 Subject: Re: [dpdk-dev] [PATCH v2 2/3] kni: fix kni fifo synchronization 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: Thu, 27 Sep 2018 09:06:38 -0000 VGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzLg0KDQpJJ2xsIHVwZGF0ZSBpdCBpbiB0aGUgbmV4dCB2 ZXJzaW9uLg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEZlcnJ1aCBZ aWdpdCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1i ZXIgMjYsIDIwMTggNzo0MyBQTQ0KPiBUbzogSG9ubmFwcGEgTmFnYXJhaGFsbGkgPEhvbm5hcHBh Lk5hZ2FyYWhhbGxpQGFybS5jb20+OyBKZXJpbiBKYWNvYg0KPiA8amVyaW4uamFjb2JAY2F2aXVt bmV0d29ya3MuY29tPg0KPiBDYzogUGhpbCBZYW5nIChBcm0gVGVjaG5vbG9neSBDaGluYSkgPFBo aWwuWWFuZ0Bhcm0uY29tPjsgZGV2QGRwZGsub3JnOyBuZA0KPiA8bmRAYXJtLmNvbT47IGtrb2tr aWxhZ2FkZGFAY2F2aXVtbmV0d29ya3MuY29tOyBHYXZpbiBIdSAoQXJtDQo+IFRlY2hub2xvZ3kg Q2hpbmEpIDxHYXZpbi5IdUBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDIvM10g a25pOiBmaXgga25pIGZpZm8gc3luY2hyb25pemF0aW9uDQo+IA0KPiBPbiA5LzIxLzIwMTggNzoz NyBBTSwgSG9ubmFwcGEgTmFnYXJhaGFsbGkgd3JvdGU6DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBA QCAtNjksNSArODksMTMgQEAga25pX2ZpZm9fZ2V0KHN0cnVjdCBydGVfa25pX2ZpZm8gKmZpZm8s IHZvaWQNCj4gPj4+Pj4+PiAqKmRhdGEsIHVuc2lnbmVkIG51bSkgIHN0YXRpYyBpbmxpbmUgdWlu dDMyX3QNCj4gPj4+Pj4+PiBrbmlfZmlmb19jb3VudChzdHJ1Y3QgcnRlX2tuaV9maWZvICpmaWZv KSAgew0KPiA+Pj4+Pj4+ICsjaWZkZWYgUlRFX1VTRV9DMTFfTUVNX01PREVMDQo+ID4+Pj4+Pj4g KyAgICAgICB1bnNpZ25lZCBmaWZvX3dyaXRlID0gX19hdG9taWNfbG9hZF9uKCZmaWZvLT53cml0 ZSwNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9fQVRPTUlDX0FDUVVJUkUpOw0KPiA+Pj4+Pj4+ICsgICAgICAgdW5zaWduZWQgZmlm b19yZWFkID0gX19hdG9taWNfbG9hZF9uKCZmaWZvLT5yZWFkLA0KPiA+Pj4+Pj4+ICsNCj4gPj4+ Pj4+PiArX19BVE9NSUNfQUNRVUlSRSk7DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSXNuJ3QgdG9vICBo ZWF2eSB0byBoYXZlIHR3byBfX0FUT01JQ19BQ1FVSVJFcz8gYSBzaW1wbGUNCj4gPj4+Pj4+IHJ0 ZV9zbXBfcm1iKCkgd291bGQgYmUgZW5vdWdoIGhlcmUuIFJpZ2h0Pw0KPiA+Pj4+Pj4gb3INCj4g Pj4+Pj4+IERvIHdlIG5lZWQgX19BVE9NSUNfQUNRVUlSRSBmb3IgZmlmb193cml0ZSBjYXNlPw0K PiA+Pj4+Pj4NCj4gPj4+Pj4gV2UgYWxzbyBoYWQgc29tZSBhbW91bnQgb2YgZGViYXRlIGludGVy bmFsbHkgb24gdGhpczoNCj4gPj4+Pj4gMSkgV2UgZG8gbm90IHdhbnQgdG8gdXNlIHJ0ZV9zbXBf cm1iKCkgYXMgd2Ugd2FudCB0byBrZWVwIHRoZQ0KPiA+Pj4+PiBtZW1vcnkNCj4gPj4+PiBtb2Rl bHMgc2VwYXJhdGVkIChmb3IgZXg6IHdoaWxlIHVzaW5nIEMxMSwgdXNlIEMxMSBldmVyeXdoZXJl KS4gSXQNCj4gPj4+PiBpcyBhbHNvIG5vdCBzdWZmaWNpZW50LCBwbGVhc2Ugc2VlIDMpIGJlbG93 Lg0KPiA+Pj4+DQo+ID4+Pj4gQnV0IE5vdGhpbmcgdGVjaG5pY2FsbHkgd3JvbmcgaW4gdXNpbmcg cnRlX3NtcF9ybWIoKSBoZXJlIGluIHRlcm1zDQo+ID4+Pj4gZnVuY3Rpb25hbGx5IGFuZCBjb2Rl IGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIuDQo+ID4+Pg0KPiA+Pj4gcnRlX3NtcF9ybWIoKSBn ZW5lcmF0ZXMgJ0RNQiBJU0hMRCcuIFRoaXMgd29ya3MgZmluZSwgYnV0IGl0IGlzIG5vdCBvcHRp bWFsLg0KPiA+PiAnTERBUicgaXMgYSBiZXR0ZXIgb3B0aW9uIHdoaWNoIGlzIGdlbmVyYXRlZCB3 aGVuIEMxMSBhdG9taWNzIGFyZSB1c2VkLg0KPiA+Pg0KPiA+PiBZZXMuIEJ1dCB3aGljaCBvbmUg aXMgb3B0aW1hbCAxIHggRE1CIElTSExEIHZzIDIgeCBMREFSID8NCj4gPg0KPiA+IEdvb2QgcG9p bnQuIEkgYW0gbm90IHN1cmUgd2hpY2ggb25lIGlzIG9wdGltYWwsIGl0IG5lZWRzIHRvIGJlIG1l YXN1cmVkLiAnRE1CDQo+IElTSExEJyBvcmRlcnMgJ2FsbCcgZWFybGllciBsb2FkcyBhZ2FpbnN0 ICdhbGwnIGxhdGVyIGxvYWRzIGFuZCBzdG9yZXMuICdMREFSJyBvcmRlcnMNCj4gdGhlICdzcGVj aWZpYycgbG9hZCB3aXRoICdhbGwnIGxhdGVyIGxvYWRzIGFuZCBzdG9yZXMuDQo+ID4NCj4gPj4N Cj4gPj4+DQo+ID4+Pj4NCj4gPj4+Pj4gMikgVGhpcyBBUEkgY2FuIGdldCBjYWxsZWQgZnJvbSB3 cml0ZXIgb3IgcmVhZGVyLCBzbyBib3RoIHRoZQ0KPiA+Pj4+PiBsb2FkcyBoYXZlIHRvIGJlIF9f QVRPTUlDX0FDUVVJUkUNCj4gPj4+Pj4gMykgT3RoZXIgb3B0aW9uIGlzIHRvIHVzZSBfX0FUT01J Q19SRUxBWEVELiBUaGF0IHdvdWxkIGFsbG93IGFueQ0KPiA+Pj4+IGxvYWRzL3N0b3JlcyBhcm91 bmQgb2YgdGhpcyBBUEkgdG8gZ2V0IHJlb3JkZXJlZCwgZXNwZWNpYWxseSBzaW5jZQ0KPiA+Pj4+ IHRoaXMgaXMgYW4gaW5saW5lIGZ1bmN0aW9uLiBUaGlzIHdvdWxkIHB1dCBidXJkZW4gb24gdGhl DQo+ID4+Pj4gYXBwbGljYXRpb24gdG8gbWFuYWdlIHRoZSBvcmRlcmluZyBkZXBlbmRpbmcgb24g aXRzIHVzYWdlLiBJdCB3aWxsDQo+ID4+Pj4gYWxzbyByZXF1aXJlIHRoZSBhcHBsaWNhdGlvbiB0 byB1bmRlcnN0YW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIEFQSS4NCj4gPj4+Pg0KPiA+ Pj4+IF9fQVRPTUlDX1JFTEFYRUQgbWF5IGJlIGZpbmUgdG9vIGZvciBfY291bnQoKSBjYXNlIGFz IGl0IG1heSBub3QNCj4gPj4+PiB2ZXJ5IGltcG9ydGFudCB0byBnZXQgdGhlIGV4YWN0IGNvdW50 IGZvciB0aGUgZXhhY3QgdmVyeSBtb21lbnQsDQo+ID4+Pj4gQXBwbGljYXRpb24gY2FuIHJldHJ5 Lg0KPiA+Pj4+DQo+ID4+Pj4gSSBhbSBpbiBmYXZvciBvZiBwZXJmb3JtYW5jZSBlZmZlY3RpdmUg aW1wbGVtZW50YXRpb24uDQo+ID4+Pg0KPiA+Pj4gVGhlIHJlcXVpcmVtZW50IG9uIHRoZSBjb3Jy ZWN0bmVzcyBvZiB0aGUgY291bnQgZGVwZW5kcyBvbiB0aGUgdXNhZ2UNCj4gPj4+IG9mDQo+ID4+ IHRoaXMgZnVuY3Rpb24uIEkgc2VlIHRoZSBmb2xsb3dpbmcgdXNhZ2U6DQo+ID4+Pg0KPiA+Pj4g SW4gdGhlIGZpbGUga25pX25ldC5jLCBmdW5jdGlvbjoga25pX25ldF90eDoNCj4gPj4+DQo+ID4+ PiAgICAgICAgaWYgKGtuaV9maWZvX2ZyZWVfY291bnQoa25pLT50eF9xKSA9PSAwIHx8DQo+ID4+ PiAgICAgICAgICAgICAgICAgICAgICAgICBrbmlfZmlmb19jb3VudChrbmktPmFsbG9jX3EpID09 IDApIHsNCj4gPj4+ICAgICAgICAgICAgICAgICAvKioNCj4gPj4+ICAgICAgICAgICAgICAgICAg KiBJZiBubyBmcmVlIGVudHJ5IGluIHR4X3Egb3Igbm8gZW50cnkgaW4gYWxsb2NfcSwNCj4gPj4+ ICAgICAgICAgICAgICAgICAgKiBkcm9wcyBza2IgYW5kIGdvZXMgb3V0Lg0KPiA+Pj4gICAgICAg ICAgICAgICAgICAqLw0KPiA+Pj4gICAgICAgICAgICAgICAgIGdvdG8gZHJvcDsNCj4gPj4+ICAg ICAgICAgfQ0KPiA+Pj4NCj4gPj4+IFRoZXJlIGlzIG5vIHJldHJ5IGhlcmUsIHRoZSBwYWNrZXQg aXMgZHJvcHBlZC4NCj4gPj4NCj4gPj4gT0suIFRoZW4gcGljayBhbiBpbXBsZW1lbnRhdGlvbiB3 aGljaCBpcyBhbiBvcHRpbWFsIHRoaXMgY2FzZS4NCj4gPj4gSSB0aGluaywgdGhlbiBydGVfc21w X3JtYigpIG1ha2VzIHNlbnNlIGhlcmUgYXMNCj4gPj4gYSkgbm8gI2lmZGVmIGNsdXR0ZXINCj4g Pj4gYikgaXQgaXMgb3B0aW1hbCBjb21wYXJlZCB0byAyIHggTERBUg0KPiA+Pg0KPiA+IEFzIEkg dW5kZXJzdGFuZCwgb25lIG9mIHRoZSBwcmluY2lwYWxzIG9mIHVzaW5nIEMxMSBtb2RlbCBpcyB0 byBtYXRjaCB0aGUgc3RvcmUNCj4gcmVsZWFzZXMgYW5kIGxvYWQgYWNxdWlyZXMuIElNTywgY29t YmluaW5nIEMxMSBtZW1vcnkgbW9kZWwgd2l0aCBiYXJyaWVyDQo+IGJhc2VkIGZ1bmN0aW9ucyBt YWtlcyB0aGUgY29kZSB1bnJlYWRhYmxlLg0KPiA+IEkgcmVhbGl6ZWQgcnRlX3NtcF9ybWIoKSBp cyByZXF1aXJlZCBmb3IgeDg2IGFzIHdlbGwgdG8gcHJldmVudCBjb21waWxlcg0KPiByZW9yZGVy aW5nLiBXZSBjYW4gYWRkIHRoYXQgaW4gdGhlIG5vbi1DMTEgY2FzZS4gVGhpcyB3YXksIHdlIHdp bGwgaGF2ZSBjbGVhbg0KPiBjb2RlIGZvciBib3RoIHRoZSBvcHRpb25zIChzaW1pbGFyIHRvIHJ0 ZV9yaW5nKS4NCj4gPiBTbywgaWYgJ1JURV9VU0VfQzExX01FTV9NT0RFTCcgaXMgc2V0IHRvICdu JywgdGhlbiB0aGUgJ3J0ZV9zbXBfcm1iJyB3b3VsZA0KPiBiZSB1c2VkLg0KPiA+DQo+ID4gV2Ug Y2FuIGxvb2sgYXQgaGFuZGxpbmcgdGhlICNpZmRlZiBjbHV0dGVyIGJhc2VkIG9uIEZlcnJ1aCdz IGZlZWRiYWNrLg0KPiANCj4gSGkgSG9ubmFwcGEsIEplcmluLA0KPiANCj4gU29ycnkgZm9yIGRl bGF5LCBJIG1pc3NlZCB0aGF0IHRoaXMgaXMgd2FpdGluZyBteSBpbnB1dC4NCj4gDQo+ICsxIHRv IHJlbW92ZSAjaWZkZWYsIGJ1dCBJIGRvbid0IHRoaW5rIGEgc2VwYXJhdGUgZmlsZSBpcyByZXF1 aXJlZCBmb3INCj4gK3RoaXMsDQo+IHNwZWNpYWxseSB3aGVuIGl0IHdpbGwgYmUgZHVwbGljYXRp b24gb2Ygc2FtZSBpbXBsZW1lbnRhdGlvbiwgbm90aGluZyBhcmNoDQo+IHNwZWNpZmljIGltcGxl bWVudGF0aW9uLg0KPiArMSBIb25uYXBwYSdzIHN1Z2dlc3Rpb24gdG8gaGlkZSBpZmRlZidzIGJl aGluZCBBUElzLCBwbHVzIHRob3NlIEFQSXMNCj4gK2NhbiBiZQ0KPiByZXVzZWQgbGF0ZXIuLi4N Cj4gDQo+IEFuZCArMSB0byBzcGxpdCBpbnRvIHR3byBwYXRjaGVzLCBvbmUgZm9yIGZpeCB0byBj dXJyZW50IGNvZGUgYW5kIG9uZSBmb3IgYzExDQo+IGF0b21pYyBpbXBsZW1lbnRhdGlvbiBzdXBw b3J0Lg0KPiANCj4gSSBoYXZlIHNvbWUgYmFzaWMgcXVlc3Rpb25zIG9uIHRoZSBwYXRjaCwgd2ls bCBzZW5kIGluIGRpZmZlcmVudCB0aHJlYWQuDQo+IA0KPiBUaGFua3MsDQo+IGZlcnJ1aA0KPiAN Cj4gPg0KPiA+Pg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE90 aGVyIHRoYW4gdGhhdCwgSSBwcmVmZXIgdG8gYXZvaWQgaWZkZWYgY2x1dHRlciBieSBpbnRyb2R1 Y2luZw0KPiA+Pj4+Pj4gdHdvIHNlcGFyYXRlIGZpbGUganVzdCBsaWtlIHJpbmcgQzExIGltcGxl bWVudGF0aW9uLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEkgZG9uJ3QgaGF2ZSBzdHJvbmcgb3Bpbmlv biBvbiB0aGlzIHRoaXMgcGFydCwgSSBsZXQgS05JDQo+ID4+Pj4+PiBNQUlOVEFJTkVSIHRvIGRl Y2lkZSBvbiBob3cgdG8gYWNjb21tb2RhdGUgdGhpcyBjaGFuZ2UuDQo+ID4+Pj4+DQo+ID4+Pj4+ IEkgcHJlZmVyIHRvIGNoYW5nZSB0aGlzIGFzIHdlbGwsIEkgYW0gb3BlbiBmb3Igc3VnZ2VzdGlv bnMuDQo+ID4+Pj4+IEludHJvZHVjaW5nIHR3byBzZXBhcmF0ZSBmaWxlcyB3b3VsZCBiZSB0b28g bXVjaCBmb3IgdGhpcyBsaWJyYXJ5Lg0KPiA+Pj4+PiBBIGJldHRlcg0KPiA+Pj4+IHdheSB3b3Vs ZCBiZSB0byBoYXZlIHNvbWV0aGluZyBzaW1pbGFyIHRvICdzbXBfc3RvcmVfcmVsZWFzZScNCj4g Pj4+PiBwcm92aWRlZCBieSB0aGUga2VybmVsLiBpLmUuIGNyZWF0ZSAjZGVmaW5lcyBmb3IgbG9h ZHMvc3RvcmVzLiBIaWRlDQo+ID4+Pj4gdGhlIGNsdXR0ZXIgYmVoaW5kIHRoZSAjZGVmaW5lcy4N Cj4gPj4+Pg0KPiA+Pj4+IE5vIFN0cm9uZyBvcGluaW9uIG9uIHRoaXMsIGxlYXZpbmcgdG8gS05J IE1haW50YWluZXIuDQo+ID4+PiBXaWxsIHdhaXQgb24gdGhpcyBiZWZvcmUgcmUtc3Bpbm5pbmcg dGhlIHBhdGNoDQo+ID4+Pg0KPiA+Pj4+DQo+ID4+Pj4gVGhpcyBwYXRjaCBuZWVkcyB0byBzcGxp dCBieSB0d28sDQo+ID4+Pj4gYSkgRml4ZXMgZm9yIG5vbiBDMTEgaW1wbGVtZW50YXRpb24oaS5l IG5ldyBhZGRpdGlvbiB0bw0KPiA+Pj4+IHJ0ZV9zbXBfd21iKCkpDQo+ID4+Pj4gYikgYWRkIHN1 cHBvcnQgZm9yIEMxMSBpbXBsZW1lbnRhdGlvbi4NCj4gPj4+IEFncmVlDQo+ID4+Pg0KPiA+Pj4+ DQo+ID4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+ICsgICAgICAgcmV0dXJuIChmaWZvLT5sZW4g KyBmaWZvX3dyaXRlIC0gZmlmb19yZWFkKSAmIChmaWZvLT5sZW4NCj4gPj4+Pj4+PiArLSAxKTsg I2Vsc2UNCj4gPj4+Pj4+PiAgICAgICAgIHJldHVybiAoZmlmby0+bGVuICsgZmlmby0+d3JpdGUg LSBmaWZvLT5yZWFkKSAmDQo+ID4+Pj4+Pj4gKGZpZm8tPmxlbg0KPiA+Pj4+Pj4+IC0gMSk7DQo+ ID4gUmVxdWlyZXMgcnRlX3NtcF9ybWIoKSBmb3IgeDg2IHRvIHByZXZlbnQgY29tcGlsZXIgcmVv cmRlcmluZy4NCj4gPg0KPiA+Pj4+Pj4+ICsjZW5kaWYNCj4gPj4+Pj4+PiAgfQ0KPiA+Pj4+Pj4+ IC0tDQo+ID4+Pj4+Pj4gMi43LjQNCj4gPj4+Pj4+Pg0KDQpUaGFua3MNClBoaWwNCg0K