From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0080.outbound.protection.outlook.com [104.47.40.80]) by dpdk.org (Postfix) with ESMTP id 0B1232E83 for ; Thu, 11 May 2017 06:14:16 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=lSbKc3fvERFvjUD7zkN+WVbjm1ONeXdE7ieA9MOA5oo=; b=by0ZFqvbJmAr8n0eNTICy5C4DzigEsIMaoT+8irdKmDyYvxmZfvhARNm4164FOijMieKxxTBjcc6PiHs1DlKnGP5rWbg1RyTA0QVMgxNJqEkz37HB1ALiAuPU5BbyzOY7Kir91yQ+CVogxQEreScp6TbdJwnkBqkl3OA2NF3i/4= Received: from BY2PR07MB2421.namprd07.prod.outlook.com (10.166.115.13) by BY2PR07MB2423.namprd07.prod.outlook.com (10.166.115.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1084.16; Thu, 11 May 2017 04:14:14 +0000 Received: from BY2PR07MB2421.namprd07.prod.outlook.com ([10.166.115.13]) by BY2PR07MB2421.namprd07.prod.outlook.com ([10.166.115.13]) with mapi id 15.01.1084.017; Thu, 11 May 2017 04:14:13 +0000 From: "Sekhar, Ashwin" To: "Sekhar, Ashwin" , "jianbo.liu@linaro.org" CC: "Jacob, Jerin" , "tomasz.kantecki@intel.com" , "dev@dpdk.org" Thread-Topic: [PATCH v2 5/7] examples/l3fwd: add neon support for l3fwd Thread-Index: AQHSyTVuz3rRuXwAsEq5JDs4Y1JJAqHtqdqAgADNnwCAABAyAA== Date: Thu, 11 May 2017 04:14:13 +0000 Message-ID: <1494476052.2563.10.camel@caviumnetworks.com> References: <1493709255-8887-1-git-send-email-jianbo.liu@linaro.org> <1494383419-9677-1-git-send-email-jianbo.liu@linaro.org> <1494383419-9677-6-git-send-email-jianbo.liu@linaro.org> <1494428417.2713.55.camel@caviumnetworks.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: cavium.com; dkim=none (message not signed) header.d=none;cavium.com; dmarc=none action=none header.from=cavium.com; x-originating-ip: [183.82.21.193] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; BY2PR07MB2423; 7:PcOt4HGct/eIvvOBf47q3C/+oSlINT3NjXkrs9jhMXY/R026kNNNMPEqgtWtdK5jp7IuFhfUIMu68hARFBaleI88eJGyPdFx1OaNrRNF3TijS/3XTq1n+CLM35nXCK8QZqhwdeSo5HsA+AudaMwywQmDmwHLYPECivLaX6K/bREwAc8/xjmO5lKiG1EQba8LXJdd1fosMmVJ1Fod5VBIulRBkoZNDtNpVBbgVgftUf/I4ACKPeVQvo81a6AnMHrOIm5SGFSVzoFSF22ZbAeJSLY0UEpMcHpUW5BqroPwpvWMWsL2eKiLSzbG1pr/hLU4nwocO6+BNQ3p6w0XzjN3Ig== x-forefront-antispam-report: SFV:SKI; SCL:-1SFV:NSPM; SFS:(10009020)(6009001)(39840400002)(39850400002)(39400400002)(39450400003)(39410400002)(377424004)(24454002)(93886004)(2900100001)(33646002)(66066001)(3660700001)(305945005)(4326008)(122556002)(478600001)(229853002)(6486002)(77096006)(86362001)(36756003)(189998001)(103116003)(5660300001)(7736002)(53546009)(6506006)(9686003)(54906002)(6306002)(53936002)(6512007)(81166006)(2906002)(8676002)(76176999)(54356999)(8936002)(50986999)(99286003)(2501003)(3846002)(2950100002)(25786009)(102836003)(6436002)(6116002)(3280700002)(6246003)(72206003)(38730400002)(32563001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR07MB2423; H:BY2PR07MB2421.namprd07.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; x-ms-office365-filtering-correlation-id: 1c59c2bb-111e-4081-38e6-08d498242e97 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081); SRVR:BY2PR07MB2423; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(166708455590820)(192278398808882); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(6041248)(20161123555025)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(6072148); SRVR:BY2PR07MB2423; BCL:0; PCL:0; RULEID:; SRVR:BY2PR07MB2423; x-forefront-prvs: 0304E36CA3 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2017 04:14:13.1489 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR07MB2423 Subject: Re: [dpdk-dev] [PATCH v2 5/7] examples/l3fwd: add neon support for l3fwd 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, 11 May 2017 04:14:17 -0000 T24gVGh1LCAyMDE3LTA1LTExIGF0IDExOjE2ICswODAwLCBKaWFuYm8gTGl1IHdyb3RlOg0KPiBI aSBBc2h3aW4sDQo+IA0KPiBPbiAxMCBNYXkgMjAxNyBhdCAyMzowMCwgU2VraGFyLCBBc2h3aW4g PEFzaHdpbi5TZWtoYXJAY2F2aXVtLmNvbT4NCj4gd3JvdGU6DQo+ID4gDQo+ID4gSGkgSmlhbmJv LA0KPiA+IA0KPiA+IFRoYW5rcyBmb3IgdmVyc2lvbiB2Mi4gQWRkaXRpb24gb2YgdGhlIHByZWZl dGNoIGluc3RydWN0aW9ucyBpcw0KPiA+IGRlZmluaXRlbHkgaGVscGluZyBwZXJmb3JtYW5jZSBv biBUaHVuZGVyWC4gQnV0IHN0aWxsIHBlcmZvcm1hbmNlDQo+ID4gaXMNCj4gPiBzbGlnaHRseSBs ZXNzIHRoYW4gdGhhdCBvZiBzY2FsYXIuDQo+ID4gDQo+ID4gSSB0cmllZCBmZXcgc21hbGwgdHdl YWtzIHdoaWNoIGhlbHBlZCBpbXByb3ZlIHBlcmZvcm1hbmNlIG9uIG15DQo+ID4gVGh1bmRlcngg c2V0dXAuIEZvciBkZXRhaWxzIHNlZSBjb21tZW50cyBpbmxpbmUuDQo+ID4gDQo+ID4gDQo+ID4g T24gV2VkLCAyMDE3LTA1LTEwIGF0IDEwOjMwICswODAwLCBKaWFuYm8gTGl1IHdyb3RlOg0KPiA+ ID4gDQo+ID4gPiBVc2UgQVJNIE5FT04gaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGwzIGZvd2Fy ZGluZy4NCj4gPiA+IA0KPiA+ID4gU2lnbmVkLW9mZi1ieTogSmlhbmJvIExpdSA8amlhbmJvLmxp dUBsaW5hcm8ub3JnPg0KPiA+ID4gLS0tDQo+ID4gPiDCoGV4YW1wbGVzL2wzZndkL2wzZndkX2Vt LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgNCArLQ0KPiA+ID4gwqBleGFtcGxlcy9s M2Z3ZC9sM2Z3ZF9lbV9obG0uaMKgwqDCoMKgwqDCoMKgwqB8wqDCoDE5ICsrLQ0KPiA+ID4gwqBl eGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9obG1fbmVvbi5owqDCoMKgfMKgwqA3NCArKysrKysrKysr DQo+ID4gPiDCoGV4YW1wbGVzL2wzZndkL2wzZndkX2VtX3NlcXVlbnRpYWwuaCB8wqDCoDIwICsr LQ0KPiA+ID4gwqBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9scG0uY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqB8wqDCoMKgNCArLQ0KPiA+ID4gwqBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9scG1fbmVvbi5owqDC oMKgwqDCoMKgfCAxNjUNCj4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysNCj4gPiA+IMKgZXhh bXBsZXMvbDNmd2QvbDNmd2RfbmVvbi5owqDCoMKgwqDCoMKgwqDCoMKgwqB8IDI1OQ0KPiA+ID4g KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiA+IMKgNyBmaWxlcyBjaGFu Z2VkLCA1MzkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkNCj4gPiA+IMKgY3JlYXRlIG1v ZGUgMTAwNjQ0IGV4YW1wbGVzL2wzZndkL2wzZndkX2VtX2hsbV9uZW9uLmgNCj4gPiA+IMKgY3Jl YXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL2wzZndkL2wzZndkX2xwbV9uZW9uLmgNCj4gPiA+IMKg Y3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL2wzZndkL2wzZndkX25lb24uaA0KPiA+ID4gDQo+ ID4gPiBbLi4uXQ0KPiA+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wzZndkL2wzZndkX2VtX2hs bS5oDQo+ID4gPiBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2VtX2hsbS5oDQo+ID4gPiBpbmRleCA2 MzZkZWE0Li40ZWM2MDBhIDEwMDY0NA0KPiA+ID4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNmd2Rf ZW1faGxtLmgNCj4gPiA+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2VtX2hsbS5oDQo+ID4g PiBAQCAtMzUsOCArMzUsMTMgQEANCj4gPiA+IMKgI2lmbmRlZiBfX0wzRldEX0VNX0hMTV9IX18N Cj4gPiA+IMKgI2RlZmluZSBfX0wzRldEX0VNX0hMTV9IX18NCj4gPiA+IA0KPiA+ID4gKyNpZiBk ZWZpbmVkKF9fU1NFNF8xX18pDQo+ID4gPiDCoCNpbmNsdWRlICJsM2Z3ZF9zc2UuaCINCj4gPiA+ IMKgI2luY2x1ZGUgImwzZndkX2VtX2hsbV9zc2UuaCINCj4gPiA+ICsjZWxpZiBkZWZpbmVkKFJU RV9NQUNISU5FX0NQVUZMQUdfTkVPTikNCj4gPiA+ICsjaW5jbHVkZSAibDNmd2RfbmVvbi5oIg0K PiA+ID4gKyNpbmNsdWRlICJsM2Z3ZF9lbV9obG1fbmVvbi5oIg0KPiA+ID4gKyNlbmRpZg0KPiA+ ID4gDQo+ID4gPiDCoHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkp IHZvaWQNCj4gPiA+IMKgZW1fZ2V0X2RzdF9wb3J0X2lwdjR4OChzdHJ1Y3QgbGNvcmVfY29uZiAq cWNvbmYsIHN0cnVjdCBydGVfbWJ1Zg0KPiA+ID4gKm1bOF0sDQo+ID4gPiBAQCAtMjM4LDcgKzI0 Myw3IEBAIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpDQo+ID4g PiB1aW50MTZfdA0KPiA+ID4gwqBsM2Z3ZF9lbV9zZW5kX3BhY2tldHMoaW50IG5iX3J4LCBzdHJ1 Y3QgcnRlX21idWYgKipwa3RzX2J1cnN0LA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHVpbnQ4X3QgcG9ydGlkLCBzdHJ1Y3QgbGNvcmVfY29uZiAqcWNvbmYpDQo+ID4gPiDCoHsN Cj4gPiA+IC3CoMKgwqDCoMKgaW50MzJfdCBqOw0KPiA+ID4gK8KgwqDCoMKgwqBpbnQzMl90IGks IGosIHBvczsNCj4gPiA+IMKgwqDCoMKgwqDCoHVpbnQxNl90IGRzdF9wb3J0W01BWF9QS1RfQlVS U1RdOw0KPiA+ID4gDQo+ID4gPiDCoMKgwqDCoMKgwqAvKg0KPiA+ID4gQEAgLTI0Nyw2ICsyNTIs MTIgQEAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkNCj4gPiA+ IHVpbnQxNl90DQo+ID4gPiDCoMKgwqDCoMKgwqDCoCovDQo+ID4gPiDCoMKgwqDCoMKgwqBpbnQz Ml90IG4gPSBSVEVfQUxJR05fRkxPT1IobmJfcngsIDgpOw0KPiA+ID4gDQo+ID4gPiArwqDCoMKg wqDCoGZvciAoaiA9IDA7IGogPCA4ICYmIGogPCBuYl9yeDsgaisrKSB7DQo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBydGVfcHJlZmV0Y2gwKHBrdHNfYnVyc3Rbal0pOw0KPiA+IFRo ZSBhYm92ZSBwcmVmZXRjaCBvZiBydGVfbWJ1ZiBzdHJ1Y3QgaXMgdW5uZWNlc3NhcnkuIFdpdGgg dGhpcyB3ZQ0KPiA+IHdvbnQNCj4gPiBzZWUgYW55IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGFz IHRoZSBjb250ZW50cyBvZiBydGVfbWJ1Zg0KPiA+IChidWZfYWRkcg0KPiA+IGFuZCBkYXRhX29m ZikgaXMgdXNlZCBpbiByaWdodCBuZXh0IGluc3RydWN0aW9uLiBSZW1vdmluZyB0aGUgYWJvdmUN Cj4gPiBwcmVmZXRjaCBhbmQgc2ltaWxhciBwcmVmZXRjaGVzIGF0IG11bHRpcGxlIHBsYWNlcyB3 YXMgaW1wcm92aW5nDQo+ID4gcGVyZm9ybWFuY2Ugb24gbXkgVGh1bmRlclggc2V0dXAuDQo+IFll cywgd2lsbCByZW1vdmUgdGhlbS4NCj4gDQo+ID4gDQo+ID4gDQo+ID4gPiANCj4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ0ZV9wcmVmZXRjaDAocnRlX3BrdG1idWZfbXRvZChwa3Rz X2J1cnN0W2pdLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg ZXRoZXJfaGRyICopDQo+ID4gPiArDQo+ID4gPiAxKTsNCj4gPiBCZXR0ZXIgdG8gcHJlZmV0Y2gg YXQgZXRoX2hkciBpdHNlbGYgYW5kIG5vdCBhdCBldGhfaGRyICsgMS4gSW4NCj4gPiBwcm9jZXNz X3BhY2tldCBpbiBsM2Z3ZF9uZW9uLmgsIGV0aF9oZWFkZXIgaXMgYWNjZXNzZWQgaW4NCj4gPiAN Cj4gQnV0IGlwIGhlYWRlcnMgYXJlIHVzZWQgcmlnaHQgaW4gZWFjaCA4L0ZXRFNURVAgbG9vcC4N Cj4gU2luY2UgaXAgaGVhZGVycyBhcmUgYWNjZXNzZWQgZmlyc3QsIHdlIHNob3VsZCBwcmVmZXRj aCBldGhfaGRyICsgMQ0KPiBmaXJzdC4NCj4gQWZ0ZXIgYWxsIG5iX3J4IHBhY2tldHMgYXJlIGhh bmRsZWQgaW4gYWJvdmUgc21hbGwgbG9vcCwgdGhlaXINCj4gZXRoX2hlYWRlciBhcmUgdGhlbiBh Y2Nlc3NlZCBpbiBwcm9jZXNzeDRfc3RlcDMgb3ZlciBhZ2Fpbi4NCj4gSSdtIG5vdCBzdXJlIHBy ZWZyZXRjaGluZyBldGhfaGRyIHN0aWxsIHdvcmtzIGlmIHdlIHByZWZldGNoIGV0aF9oZHINCj4g aW4gZmlyc3Qgc3RlcCzCoMKgYXMgY2FjaGUgbWF5IGJlIGFscmVhZHkgZmlsbGVkIHdpdGggbmV3 IGRhdGEgYXQgdGhhdA0KPiB0aW1lLg0KPiANCk9rYXkuwqANCkFsc28sIEkgZ3Vlc3MgaWYgdGhl IGV0aGVybmV0IGhlYWRlciBhbmQgaXAgaGVhZGVyIGZhbGxzIGluIHRoZSBzYW1lDQpjYWNoZSBs aW5lICh3aGljaCBJIHRoaW5rIHdvdWxkIGJlIHRoZSBjYXNlIG1vc3RseSBhcyBJIGhvcGUgdGhl IHBhY2tldA0KZGF0YSB3aWxsIGJlIGNhY2hlIGFsaWduZWQpLCBpdCBkb2Vzbid0IG1ha2UgbXVj aCBvZiBhIMKgZGlmZmVyZW5jZQ0Kd2hldGhlciB5b3UgcHJlZmV0Y2ggYXQgZXRoZXJuZXQgaGVh ZGVyIGFkZHJlc3Mgb3IgaXAgaGVhZGVyIGFkZHJlc3MuDQo+ID4gDQo+ID4gPiANCj4gPiA+ICvC oMKgwqDCoMKgfQ0KPiA+ID4gKw0KPiA+ID4gwqDCoMKgwqDCoMKgZm9yIChqID0gMDsgaiA8IG47 IGogKz0gOCkgew0KPiA+ID4gDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWlu dDMyX3QgcGt0X3R5cGUgPQ0KPiA+ID4gQEAgLTI2Myw2ICsyNzQsMTIgQEAgc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkNCj4gPiA+IHVpbnQxNl90DQo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDMyX3QgdGNwX29yX3VkcCA9IHBrdF90eXBl ICYNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKFJU RV9QVFlQRV9MNF9UQ1AgfCBSVEVfUFRZUEVfTDRfVURQKTsNCj4gPiA+IA0KPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMCwgcG9zID0gaiArIDg7IGkgPCA4ICYmIHBv cyA8IG5iX3J4OyBpKyssDQo+ID4gPiBwb3MrKykgew0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ0ZV9wcmVmZXRjaDAocGt0c19idXJzdFtwb3NdKTsN Cj4gPiBUaGUgYWJvdmUgcHJlZmV0Y2ggb2YgcnRlX21idWYgc3RydWN0IGlzIHVubmVjZXNzYXJ5 Lg0KPiA+IA0KPiA+ID4gDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcnRlX3ByZWZldGNoMChydGVfcGt0bWJ1Zl9tdG9kKHBrdHNfYnVyc3RbcA0KPiA+ ID4gbw0KPiA+ID4gc10sDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QNCj4gPiA+IGV0aGVyX2hkciAqKSArIDEpOw0KPiA+IEJldHRl ciB0byBwcmVmZXRjaCBhdCBldGhfaGRyIGl0c2VsZiBhbmQgbm90IGF0IGV0aF9oZHIgKyAxDQo+ ID4gDQo+ID4gPiANCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiA+ICsN Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodGNwX29yX3VkcCAmJiAobDNf dHlwZSA9PSBSVEVfUFRZUEVfTDNfSVBWNCkpIHsNCj4gPiA+IA0KPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbV9nZXRfZHN0X3BvcnRfaXB2NHg4KHFj b25mLA0KPiA+ID4gJnBrdHNfYnVyc3Rbal0sIHBvcnRpZCwNCj4gPiA+IA0KPiA+ID4gWy4uLl0N Cj4gLi4uLg0KPiANCj4gPiANCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wz ZndkL2wzZndkX2xwbV9uZW9uLmgNCj4gPiA+IGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbHBtX25l b24uaA0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAuLjJm MDQ3YjMNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wz ZndkX2xwbV9uZW9uLmgNCj4gPiA+IA0KPiA+ID4gWy4uLl0NCj4gPiA+IA0KPiA+ID4gKy8qDQo+ ID4gPiArICogQnVmZmVyIG9wdGltaXplZCBoYW5kbGluZyBvZiBwYWNrZXRzLCBpbnZva2VkDQo+ ID4gPiArICogZnJvbSBtYWluX2xvb3AuDQo+ID4gPiArICovDQo+ID4gPiArc3RhdGljIGlubGlu ZSB2b2lkDQo+ID4gPiArbDNmd2RfbHBtX3NlbmRfcGFja2V0cyhpbnQgbmJfcngsIHN0cnVjdCBy dGVfbWJ1ZiAqKnBrdHNfYnVyc3QsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdWludDhfdCBwb3J0aWQsIHN0cnVjdCBsY29yZV9jb25mICpxY29uZikN Cj4gPiA+ICt7DQo+ID4gPiArwqDCoMKgwqDCoGludDMyX3QgaSwgaiwgcG9zOw0KPiA+ID4gK8Kg wqDCoMKgwqB1aW50MTZfdCBkc3RfcG9ydFtNQVhfUEtUX0JVUlNUXTsNCj4gPiA+ICvCoMKgwqDC oMKgaW50MzJ4NF90IGRpcFtNQVhfUEtUX0JVUlNUIC8gRldEU1RFUF07DQo+ID4gSWYgeW91IHNl ZSBjYXJlZnVsbHksIHdlIGRvbnQgbmVlZCBhbiBhcnJheSBvZiBkaXAuIFdlIGp1c3QgbmVlZCBh DQo+ID4gc2luZ2xlIGVsZW1lbnQuIGRpcCB2YWx1ZSBpcyBjYWxjdWxhdGVkIGluIHByb2Nlc3N4 NF9zdGVwMSBhbmQNCj4gPiBjb25zdW1lZA0KPiA+IGluIHByb2Nlc3N4NF9zdGVwMiwgYW5kIHRo YXRzIGl0LiBObyBuZWVkIHRvIHNhdmUgaXQgaW4gYW4gYXJyYXkuDQo+ID4gDQo+IFdpbGwgY2hh bmdlLCB0aGFua3MhDQo+IA0KPiA+IA0KPiA+ID4gDQo+ID4gPiArwqDCoMKgwqDCoHVpbnQzMl90 IGlwdjRfZmxhZ1tNQVhfUEtUX0JVUlNUIC8gRldEU1RFUF07DQo+ID4gU2FtZSBhcyBkaXAuIFdl IGRvbnQgbmVlZCBhbiBhcnJheSBvZiBpcHY0X2ZsYWcuDQo+ID4gDQo+ID4gPiANCj4gPiA+ICvC oMKgwqDCoMKgY29uc3QgaW50MzJfdCBrID0gUlRFX0FMSUdOX0ZMT09SKG5iX3J4LCBGV0RTVEVQ KTsNCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgZm9yIChqID0gMDsgaiA8IEZXRFNURVAgJiYg aiA8IG5iX3J4OyBqKyspIHsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ0ZV9w cmVmZXRjaDAocGt0c19idXJzdFtqXSk7DQo+ID4gVGhlIGFib3ZlIHByZWZldGNoIG9mIHJ0ZV9t YnVmIHN0cnVjdCBpcyB1bm5lY2Vzc2FyeS4NCj4gPiANCj4gPiA+IA0KPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcnRlX3ByZWZldGNoMChydGVfcGt0bWJ1Zl9tdG9kKHBrdHNfYnVy c3Rbal0sDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBldGhl cl9oZHIgKikNCj4gPiA+ICsNCj4gPiA+IDEpOw0KPiA+IEJldHRlciB0byBwcmVmZXRjaCBhdCBl dGhfaGRyIGl0c2VsZiBhbmQgbm90IGF0IGV0aF9oZHIgKyAxDQo+ID4gDQo+ID4gPiANCj4gPiA+ ICvCoMKgwqDCoMKgfQ0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqBmb3IgKGogPSAwOyBqICE9 IGs7IGogKz0gRldEU1RFUCkgew0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9y IChpID0gMCwgcG9zID0gaiArIEZXRFNURVA7IGkgPCBGV0RTVEVQICYmIHBvcyA8DQo+ID4gPiBu Yl9yeDsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpKyssIHBv cysrKSB7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cnRlX3ByZWZldGNoMChwa3RzX2J1cnN0W3Bvc10pOw0KPiA+IFRoZSBhYm92ZSBwcmVmZXRjaCBv ZiBydGVfbWJ1ZiBzdHJ1Y3QgaXMgdW5uZWNlc3NhcnkuDQo+ID4gDQo+ID4gPiANCj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydGVfcHJlZmV0Y2gwKHJ0 ZV9wa3RtYnVmX210b2QocGt0c19idXJzdFtwDQo+ID4gPiBvDQo+ID4gPiBzXSwNCj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdA0KPiA+ ID4gZXRoZXJfaGRyICopICsgMSk7DQo+ID4gQmV0dGVyIHRvIHByZWZldGNoIGF0IGV0aF9oZHIg aXRzZWxmIGFuZCBub3QgYXQgZXRoX2hkciArIDENCj4gPiANCj4gPiA+IA0KPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cHJvY2Vzc3g0X3N0ZXAxKCZwa3RzX2J1cnN0W2pdLCAmZGlwW2ogLyBGV0RTVEVQXSwNCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgJmlwdjRfZmxhZ1tqIC8gRldEU1RFUF0pOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcHJvY2Vzc3g0X3N0ZXAyKHFjb25mLCBkaXBbaiAvIEZXRFNURVBdLA0K PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpcHY0X2ZsYWdbaiAvIEZXRFNURVBdLCBwb3J0aWQsDQo+ID4gPiAmcGt0c19idXJz dFtqXSwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgJmRzdF9wb3J0W2pdKTsNCj4gPiA+ICvCoMKgwqDCoMKgfQ0KPiA+ID4g Kw0KPiA+ID4gK8KgwqDCoMKgwqAvKiBDbGFzc2lmeSBsYXN0IHVwIHRvIDMgcGFja2V0cyBvbmUg Ynkgb25lICovDQo+ID4gPiArwqDCoMKgwqDCoHN3aXRjaCAobmJfcnggJSBGV0RTVEVQKSB7DQo+ ID4gPiArwqDCoMKgwqDCoGNhc2UgMzoNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRzdF9wb3J0W2pdID0gbHBtX2dldF9kc3RfcG9ydChxY29uZiwNCj4gPiA+IHBrdHNfYnVyc3Rb al0sDQo+ID4gPiBwb3J0aWQpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaisr Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZmFsbHRocm91Z2ggKi8NCj4g PiA+ICvCoMKgwqDCoMKgY2FzZSAyOg0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZHN0X3BvcnRbal0gPSBscG1fZ2V0X2RzdF9wb3J0KHFjb25mLA0KPiA+ID4gcGt0c19idXJzdFtq XSwNCj4gPiA+IHBvcnRpZCk7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBqKys7 DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBmYWxsdGhyb3VnaCAqLw0KPiA+ ID4gK8KgwqDCoMKgwqBjYXNlIDE6DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk c3RfcG9ydFtqXSA9IGxwbV9nZXRfZHN0X3BvcnQocWNvbmYsDQo+ID4gPiBwa3RzX2J1cnN0W2pd LA0KPiA+ID4gcG9ydGlkKTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGorKzsN Cj4gPiA+ICvCoMKgwqDCoMKgfQ0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqBzZW5kX3BhY2tl dHNfbXVsdGkocWNvbmYsIHBrdHNfYnVyc3QsIGRzdF9wb3J0LCBuYl9yeCk7DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gKyNlbmRpZiAvKiBfX0wzRldEX0xQTV9ORU9OX0hfXyAqLw0KPiA+ID4g ZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wzZndkL2wzZndkX25lb24uaA0KPiA+ID4gYi9leGFtcGxl cy9sM2Z3ZC9sM2Z3ZF9uZW9uLmgNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBp bmRleCAwMDAwMDAwLi43NWM4OTc2DQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9l eGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9uZW9uLmgNCj4gPiA+IFsuLi5dDQo+ID4gPiANCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgKiBQcm9jZXNzIG9uZSBwYWNrZXQ6DQo+ID4gPiArICogVXBk YXRlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gTUFDIGFkZHJlc3NlcyBpbiB0aGUgZXRoZXJuZXQN Cj4gPiA+IGhlYWRlci4NCj4gPiA+ICsgKiBQZXJmb3JtIFJGQzE4MTIgY2hlY2tzIGFuZCB1cGRh dGVzIGZvciBJUFY0IHBhY2tldHMuDQo+ID4gPiArICovDQo+ID4gPiArc3RhdGljIGlubGluZSB2 b2lkDQo+ID4gPiArcHJvY2Vzc19wYWNrZXQoc3RydWN0IHJ0ZV9tYnVmICpwa3QsIHVpbnQxNl90 ICpkc3RfcG9ydCkNCj4gPiA+ICt7DQo+ID4gPiArwqDCoMKgwqDCoHN0cnVjdCBldGhlcl9oZHIg KmV0aF9oZHI7DQo+ID4gPiArwqDCoMKgwqDCoHVpbnQzMng0X3QgdGUsIHZlOw0KPiA+ID4gKw0K PiA+ID4gK8KgwqDCoMKgwqBldGhfaGRyID0gcnRlX3BrdG1idWZfbXRvZChwa3QsIHN0cnVjdCBl dGhlcl9oZHIgKik7DQo+ID4gZXRoX2hkciBhY2Nlc3NlZCBoZXJlLiBIZW5jZSB0aGUgZWFybGll ciBjb21tZW50cyBhYm91dCBwcmVmZXRjaGluZw0KPiA+IGF0DQo+ID4gZXRoIGhlYWRlci4NCj4g PiANCj4gcHJvY2Vzc19wYWNrZXQgaXMgY2FsbGVkIG9ubHkgZm9yIHRoZSBsYXN0IDEtMyBwYWNr ZXRzLCBtb3N0IGFyZQ0KPiBoYW5kbGVkIGluIHByb2Nlc3N4NF9zdGVwMy4NCj4gQXMgdGhlc2Ug MiBmdW5jdGlvbnMgYWNjZXNzIHBhY2tldHMgZnJvbSB0aGUgZmlyc3Qgb25lIG9uY2UgYWdhaW4s DQo+IHRoZQ0KPiBwcmVmZXRjaCBtYXkgbm90IHdvcmsuDQo+IFBsZWFzZSBzZWUgbXkgZXhwbGFu YXRpb24gaW4gdGhlIGFib3ZlLi4uDQo+IA0KT2theS4NCj4gPiANCj4gPiA+IA0KPiA+ID4gKw0K PiA+ID4gK8KgwqDCoMKgwqB0ZSA9IHZsZDFxX3UzMigodWludDMyX3QgKilldGhfaGRyKTsNCj4g PiA+ICvCoMKgwqDCoMKgdmUgPSB2cmVpbnRlcnByZXRxX3UzMl9zMzIodmFsX2V0aFtkc3RfcG9y dFswXV0pOw0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqByZmMxODEyX3Byb2Nl c3MoKHN0cnVjdCBpcHY0X2hkciAqKShldGhfaGRyICsgMSksIGRzdF9wb3J0LA0KPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBrdC0+cGFja2V0X3R5cGUp Ow0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqB2ZSA9IHZzZXRxX2xhbmVfdTMyKHZnZXRxX2xh bmVfdTMyKHRlLCAzKSwgdmUsIDMpOw0KPiA+IFVzZSB2Y29weXFfbGFuZXFfdTMyIGZvciBlYXNp bHkgZG9pbmcgdGhlIGFib3ZlLg0KPiA+IA0KPiBXaWxsIGNoYW5nZS4gVGhhbmtzIQ0KPiANCj4g PiANCj4gPiA+IA0KPiA+ID4gK8KgwqDCoMKgwqB2c3QxcV91MzIoKHVpbnQzMl90ICopZXRoX2hk ciwgdmUpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+IFsuLi5dDQo+ID4gPiArI2VuZGlmIC8q IF9MM0ZXRF9ORU9OX0hfICovDQo+ID4gQ29tYmluaW5nIGFsbCB0aGUgYWJvdmUgY29tbWVudHMs IEkgbWFkZSBzb21lIGNoYW5nZXMgb24gdG9wIG9mDQo+ID4geW91cg0KPiA+IHBhdGNoLiBUaGVz ZSBjaGFuZ2VzIGFyZSBnaXZpbmcgMy00JSBpbXByb3ZlbWVudCBvdmVyIHlvdXIgdmVyc2lvbi4N Cj4gPiANCj4gPiBZb3UgbWF5IGZpbmQgdGhlIGNoYW5nZXMgYXQNCj4gPiBodHRwczovL2dpc3Qu Z2l0aHViLmNvbS9hc2h3aW55ZXMvMzRjYmRkOTk5Nzg0NDAyYzg1OWM3MTYxMzU4N2ZhZmMNCj4g PiANCj4gSXMgdGhlIGNvcnJlY3QgaW4gTGluZSAxMDMvMTA0LCB5b3Ugb25seSBwcm9jZXNzIG9u ZSBwYWNrZXRzIGluIHRoZQ0KPiBsYXN0IEZXRFNURVAgcGFja2V0cz8NCkl0cyBkb2luZ8KgcHJv Y2Vzc3g0XyogdGhlcmUuIFNvIGl0cyBwcm9jZXNzaW5nIDQgcGFja2V0cy4NCg0KPiBBY3R1YWxs eSwgSSBkb24ndCBsaWtlIHlvdXIgY2hhbmdlIGluIGwzZndkX2xwbV9zZW5kX3BhY2tldHMsIG1h a2luZw0KPiB0aGUgc2ltcGxlIGxvZ2ljIGNvbXBsaWNhdGVkLiBBbmQgSSBkb24ndCB0aGluayBp dCBjYW4gaGVscCB0bw0KPiBpbXByb3ZlDQo+IHBlcmZvcm1hbmNlLiA6LSkNCkl0cyBub3QgbWFr aW5nIGl0IGNvbXBsaWNhdGVkLiBUaGUgbnVtYmVyIG9mIGxpbmVzIG9mIGNvZGUgbWF5IGJlDQpo aWdoZXIgYnkgbWF5IGJlIDEwIGxpbmVzLCBidXQgdGhlIGNvbmRpdGlvbnMgb2YgdGhlIGxvb3Bz IGFyZQ0Kc2ltcGxpZmllZCB3aGljaCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgYnJhbmNoIGluc3Ry dWN0aW9ucyBhbmQgaGVscHMNCnRoZSBwcm9jZXNzb3IgdG8gZ28gdGhyb3VnaCB0aGVtIGZhc3Rl ci4NCg0KSWYgcG9zc2libGUsIHBsZWFzZSB0cnkgaXQgb3V0IG9uIHlvdXIgbWFjaGluZS4NCj4g DQo+ID4gDQo+ID4gUGxlYXNlIGNoZWNrIGl0IG91dCBhbmQgbGV0IG1lIGtub3cgeW91ciBjb21t ZW50cy4NCj4gPiANCj4gPiBUaGFua3MNCj4gPiBBc2h3aW4=