From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0045.outbound.protection.outlook.com [104.47.0.45]) by dpdk.org (Postfix) with ESMTP id 9A49B5681 for ; Thu, 1 Feb 2018 20:59:21 +0100 (CET) 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; bh=vGky02rYcAaHg7lJCQDFyT8925MBJQeT42vpPqn23+w=; b=sKj4Bz98gIDEhFfmUWk9gzV3f99DVX9CePERw88yeTB+pLCMtWQAqGymOIETY99ZX7ICV9pf2nPL1AirrEASE0MEzrr9KLMYlNqJqrsz7+BVeP/XeMycSbIif1XMI7TVnqpTp4IYW5D/A1rh1++otQ2p7EixUZKU9J2+dymJSK0= Received: from VI1PR05MB3149.eurprd05.prod.outlook.com (10.170.237.142) by VI1PR05MB3293.eurprd05.prod.outlook.com (10.170.238.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Thu, 1 Feb 2018 19:59:19 +0000 Received: from VI1PR05MB3149.eurprd05.prod.outlook.com ([fe80::cd00:54ee:63a8:937c]) by VI1PR05MB3149.eurprd05.prod.outlook.com ([fe80::cd00:54ee:63a8:937c%13]) with mapi id 15.20.0444.016; Thu, 1 Feb 2018 19:59:18 +0000 From: Shahaf Shuler To: "Doherty, Declan" , "John Daley (johndale)" , "dev@dpdk.org" CC: Adrien Mazarguil , Yuanhan Liu Thread-Topic: [dpdk-dev] [RFC] tunnel endpoint hw acceleration enablement Thread-Index: AdN6qTnlxEdgGpD8Qpa520sLsCebsACC5V+AAy6xuwAAbXb5gADeGDdwAXCCkQABzEdo8A== Date: Thu, 1 Feb 2018 19:59:18 +0000 Message-ID: References: <345C63BAECC1AD42A2EC8C63AFFC3ADCC488E501@IRSMSX102.ger.corp.intel.com> <8580655d-a481-4a4a-2c9b-bba725c39485@intel.com> <6d26f10919d74934a569c7546bb6836b@XCH-RCD-007.cisco.com> <32ead2f8-cda6-706e-03c0-d2082d526106@intel.com> In-Reply-To: <32ead2f8-cda6-706e-03c0-d2082d526106@intel.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=shahafs@mellanox.com; x-originating-ip: [31.154.10.107] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB3293; 7:OP9GqfM0o6ZyrWQ6GNioXo8Fh7URBtottibWxBb81+jGUkLdAgj/ADhycIRBbRQKVXupfHF+k5ToNtZSxZHP9O0cBVU9aolbeDMWjSjW35rG8jnx/tOyZ3VX7FqIcs4ly/h9JDht7WMOeDp4R35W78oG5ibSyXYk8o5Vd266tB92C8GjAwWlhgTbfv6unkBpzEYTzC/7+NuzkvV7DLtSejf1Kk72JyYbMCd+/cbPrG6kIrU99p4YF/rQsVhHSN6k x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 009f1f62-c280-48c6-69d4-08d569ae4788 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020); SRVR:VI1PR05MB3293; x-ms-traffictypediagnostic: VI1PR05MB3293: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(2400082)(944501161)(93006095)(93001095)(6055026)(6041288)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(6072148)(201708071742011); SRVR:VI1PR05MB3293; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB3293; x-forefront-prvs: 0570F1F193 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(396003)(346002)(376002)(39380400002)(199004)(189003)(2900100001)(55016002)(6436002)(5890100001)(5250100002)(107886003)(9686003)(106356001)(3660700001)(76176011)(6246003)(105586002)(74316002)(102836004)(4326008)(305945005)(6506007)(7736002)(2501003)(3280700002)(53936002)(25786009)(7696005)(3846002)(68736007)(54906003)(2906002)(5660300001)(316002)(110136005)(8936002)(86362001)(551984002)(229853002)(26005)(93886005)(81166006)(2950100002)(66066001)(99286004)(561944003)(6116002)(478600001)(81156014)(59450400001)(186003)(97736004)(33656002)(8676002)(14454004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3293; H:VI1PR05MB3149.eurprd05.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: O/kj0trr4dVUStG8AVsJA6zvOKE10sDFyoSB9OTAkO314XqQbGX+CEbOfSBvz/1Opjnz0zbyhjIB2FkTPqpjkw== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 009f1f62-c280-48c6-69d4-08d569ae4788 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Feb 2018 19:59:18.6245 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3293 Subject: Re: [dpdk-dev] [RFC] tunnel endpoint hw acceleration enablement 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, 01 Feb 2018 19:59:21 -0000 SGkgRGVjbGFuLCBzb3JyeSBmb3IgdGhlIGxhdGUgcmVzcG9uc2UuIA0KDQpUdWVzZGF5LCBKYW51 YXJ5IDIzLCAyMDE4IDU6MzYgUE0sIERvaGVydHksIERlY2xhbjoNCj4gPiBJZiBJIGdldCBpdCBy aWdodCwgdGhlIEFQSSBwcm9wb3NlZCBoZXJlIGlzIHRvIGhhdmUgYSB0dW5uZWwgZW5kcG9pbnQg d2hpY2ggaXMNCj4gYSBsb2dpY2FsIHBvcnQgb24gdG9wIG9mIGV0aGRldiBwb3J0LiB0aGUgVEVQ IGlzIGFibGUgdG8gcmVjZWl2ZSBhbmQgbW9uaXRvcg0KPiBzb21lIHNwZWNpZmljIHR1bm5lbGVk IHRyYWZmaWMsIGZvciBleGFtcGxlIFZYTEFOLCBHRU5FVkUgYW5kIG1vcmUuDQo+ID4gRm9yIGV4 YW1wbGUsIFZYTEFOIFRFUCBjYW4gaGF2ZSBtdWx0aXBsZSBmbG93cyB3aXRoIGRpZmZlcmVudCBW TklzIGFsbA0KPiB1bmRlciB0aGUgc2FtZSBjb250ZXh0Lg0KPiA+DQo+ID4gTm93LCB3aXRoIHRo ZSBjdXJyZW50IHJ0ZV9mbG93IEFQSXMsIHdlIGNhbiBkbyBleGFjdGx5IHRoZSBzYW1lIGFuZCBn aXZlDQo+IHRoZSBhcHBsaWNhdGlvbiB0aGUgZnVsbCBmbGV4aWJpbGl0eSB0byBncm91cCB0aGUg dHVubmVsIGZsb3dzIGludG8gbG9naWNhbCBURVAuDQo+ID4gT24gdGhpcyBzdWdnZXN0aW9uIGFw cGxpY2F0aW9uIHdpbGw6DQo+ID4gMS4gQ3JlYXRlIHJ0ZV9mbG93IHJ1bGVzIGZvciB0aGUgcGF0 dGVybiBpdCB3YW50IHRvIHJlY2VpdmUuDQo+ID4gMi4gSW4gY2FzZSBpdCBpcyBpbnRlcmVzdGVk IGluIGNvdW50aW5nLCBhIENPVU5UIGFjdGlvbiB3aWxsIGJlIGFkZGVkIHRvIHRoZQ0KPiBmbG93 Lg0KPiA+IDMuIEluIGNhc2UgaGVhZGVyIG1hbmlwdWxhdGlvbiBpcyByZXF1aXJlZCwgYSBERUNB UC9FTkNBUC9SRVdSSVRFDQo+IGFjdGlvbiB3aWxsIGJlIGFkZGVkIHRvIHRoZSBmbG93Lg0KPiA+ IDQuIEdyb3VwaW5nIG9mIGZsb3dzIGludG8gYSBsb2dpY2FsIFRFUCB3aWxsIGJlIGRvbmUgb24g dGhlIGFwcGxpY2F0aW9uIGxheWVyDQo+IHNpbXBseSBieSBrZWVwaW5nIHRoZSByZWxldmFudCBy dGVfZmxvdyBydWxlcyBpbiBzb21lIGRlZGljYXRlZCBzdHJ1Y3QuIFdpdGgNCj4gaXQsIGNyZWF0 ZS9kZXN0cm95IFRFUCBjYW4gYmUgdHJhbnNsYXRlZCB0byBjcmVhdGUvZGVzdHJveSB0aGUgZmxv dyBydWxlcy4NCj4gU3RhdGlzdGljcyBxdWVyeSBjYW4gYmUgZG9uZSBiZSBxdWVyeWluZyBlYWNo IGZsb3cgY291bnQgYW5kIHN1bS4gTm90ZSB0aGF0DQo+IHNvbWUgZGV2aWNlcyBjYW4gc3VwcG9y dCB0aGUgc2FtZSBjb3VudGVyIGZvciBtdWx0aXBsZSBmbG93cy4gRXZlbiB0aG91Z2gNCj4gaXQg aXMgbm90IHlldCBleHBvc2VkIGluIHJ0ZV9mbG93IHRoaXMgY2FuIGJlIGFuIGludGVyZXN0aW5n IG9wdGltaXphdGlvbi4NCj4gDQo+IEFzIEkgcmVzcG9uc2VkIGluIEpvaG4ncyBtYWlsIEkgdGhp bmsgdGhpcyBhcHByb2FjaCBmYWlscyBpbiBkZXZpY2VzIHdoaWNoDQo+IHN1cHBvcnQgc3dpdGNo aW5nIG9mZmxvYWQgYWxzby4gQXMgdGhlIGZsb3dzIG5ldmVyIGhpdCB0aGUgaG9zdCBhcHBsaWNh dGlvbg0KPiBjb25maWd1cmluZyB0aGUgVEVQIGFuZCBmbG93cyB0aGVyZSBpcyBubyBlYXN5IHdh eSB0byBzdW0gdGhvc2Ugc3RhdGlzdGljcywNCg0KRGV2aWNlcyB3aGljaCBzdXBwb3J0cyBzd2l0 Y2hpbmcgb2ZmbG9hZHMgbXVzdCB1c2UgTklDIHN1cHBvcnQgdG8gY291bnQgdGhlIGZsb3dzLiBJ dCBjYW4gYmUgZWl0aGVyIGJ5IGFzc29jaWF0aW5nIGNvdW50IGFjdGlvbiB3aXRoIGEgZmxvdyBv ciBieSB1c2luZyBURVAgaW4geW91ciBwcm9wb3NhbC4NClRoZSBURVAgY291bnRpbmcgY291bGQg YmUgaW50cm9kdWNlZCBpbiBhbm90aGVyIHdheSAtIGluc3RlYWQgb2YgaGF2aW5nIDE6MSByZWxh dGlvbiBiZXR3ZWVuIGZsb3cgY291bnRlciBhbmQgcnRlX2Zsb3csIHRvIGludHJvZHVjZSBhIGNv dW50ZXIgZWxlbWVudCB3aGljaCBjYW4gYmUgYXR0YWNoZWQgdG8gbXVsdGlwbGUgZmxvd3MuIA0K U28gdGhpcyBjb3VudGVyIGVsZW1lbnQgYWxvbmcgd2l0aCB0aGUgcnRlX2Zsb3dzIGl0IGlzIGFz c29jaWF0ZSB3aXRoIGFyZSBiYXNpY2FsbHkgdGhlIFRFUDoNCjEuIGl0IGhvbGRzIHRoZSBzdW0g b2Ygc3RhdGlzdGljcyBmcm9tIGFsbCB0aGUgVEVQIGZsb3dzIGl0IGlzIGFzc29jaWF0ZSB3aXRo Lg0KMi4gaXQgaG9sZHMgdGhlIHJlY2VpdmUgcGF0dGVybiANCg0KTXkgcG9pbnQgaXMsIEkgZG9u J3QgdGhpbmsgaXQgaXMgY29ycmVjdCB0byBib3VuZCBiZXR3ZWVuIHRoZSBURVAgYW5kIHRoZSBz d2l0Y2hpbmcgb2ZmbG9hZHMgYWN0aW9ucyAoZW5jYXAvZGVjYXAvcmV3cml0ZSBvbiB0aGlzIGNv bnRleHQpLiANClRoZSBURVAgY2FuIGJlIHByZXNlbnRlZCBhcyBhdXhpbGlhcnkgbGlicmFyeS9B UEkgdG8gaGVscCB3aXRoIHRoZSBmbG93cyBncm91cGluZywgaG93ZXZlciBhcHBsaWNhdGlvbiBz dGlsbCBuZWVkIHRvIGhhdmUgdGhlIGFiaWxpdHkgdG8gbWFrZSB0aGUgc3dpdGNoIG9mZmxvYWRz IGNvbnRyb2wgYXMgaXQgd2lzaC4gDQoNCj4gYWxzbyBmbG93cyBhcmUgdHJhbnNpdG9yeSBpbiB0 ZXJtcyBvZiBydW50aW1lIHNvIGl0IHdvdWxkIG5vdCBiZSBwb3NzaWJsZSB0bw0KPiBrZWVwIGFj Y3VyYXRlIHN0YXRpc3RpY3Mgb3ZlciBhIHBlcmlvZCBvZiB0aW1lLg0KDQpBbSBub3Qgc3VyZSBJ IHVuZGVyc3RhbmQgd2hhdCB5b3UgbWVhbiBoZXJlLiANCkluIG9yZGVyIHRvIHJlY2VpdmUgdHJh ZmZpYyB5b3UgbmVlZCBmbG93cy4gRXZlbiB0aGUgZGVmYXVsdCBSU1MgY29uZmlndXJhdGlvbiBv ZiB0aGUgUE1EIGNhbiBiZSBkZXNjcmliZWQgYnkgcnRlX2Zsb3dzLiANClNvIGFzIGxvbmcgYXMg b25lIHJlY2VpdmUgdHJhZmZpYyBpdCBoYXMgb25lL21vcmUgZmxvd3MgY29uZmlndXJlZCBvbiB0 aGUgZGV2aWNlLiANCg0KPiANCj4gDQo+ID4NCj4gPj4+DQo+ID4+Pj4gQXMgZm9yIHRoZSBjYXBh YmlsaXRpZXMgLSB3aGF0IHNwZWNpZmljYWxseSB5b3UgaGFkIGluIG1pbmQ/IFRoZQ0KPiA+Pj4+ IGN1cnJlbnQNCj4gPj4+IHVzYWdlIHlvdSBzaG93IHdpdGggdGVwIGlzIHdpdGggcnRlX2Zsb3cg cnVsZXMuIFRoZXJlIGFyZSBubw0KPiA+Pj4gY2FwYWJpbGl0aWVzIGN1cnJlbnRseSBmb3IgcnRl X2Zsb3cgc3VwcG9ydGVkIGFjdGlvbnMvcGF0dGVybi4gVG8NCj4gPj4+IGNoZWNrIHN1Y2ggY2Fw YWJpbGl0aWVzIGFwcGxpY2F0aW9uIHVzZXMgcnRlX2Zsb3dfdmFsaWRhdGUuDQo+ID4+Pg0KPiA+ Pj4gSSBlbnZpc2FnZWQgdGhhdCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGJlIGFibGUgdG8gc2Vl IGlmIGFuIGV0aGRldg0KPiA+Pj4gY2FuIHN1cHBvcnQgVEVQIGluIHRoZSByeC90eCBvZmZsb2Fk cywgYW5kIHRoZW4gdGhlDQo+ID4+PiBydGVfdGVwX2NhcGFiaWxpdGllcyB3b3VsZCBhbGxvdyBh cHBsaWNhdGlvbnMgdG8gcXVlcnkgd2hhdCB0dW5uZWwNCj4gPj4+IGVuZHBvaW50IHByb3RvY29s cyBhcmUgc3VwcG9ydGVkIGV0Yy4gSSB3b3VsZCBsaWtlIGEgc2ltcGxlDQo+ID4+PiBtZWNoYW5p c20gdG8gYWxsb3cgdXNlcnMgdG8gc2VlIGlmIGEgcGFydGljdWxhciB0dW5uZWwgZW5kcG9pbnQg dHlwZQ0KPiA+Pj4gaXMgc3VwcG9ydGVkIHdpdGhvdXQgaGF2aW5nIHRvIGJ1aWxkIGFjdHVhbCBm bG93cyB0byB2YWxpZGF0ZS4NCj4gPj4NCj4gPj4gSSBjYW4gc2VlIHRoZSB2YWx1ZSBvZiB0aGF0 LCBidXQgaW4gdGhlIGVuZCB3b3VsZG4ndCB0aGUgQVBJIGNhbGwNCj4gPj4gcnRlX2Zsb3dfdmFs aWRhdGUgYW55d2F5cz8gTWF5YmUgd2UgZG9uJ3QgYWRkIHRoZSBsYXllciBub3cgb3IgbWF5YmUN Cj4gPj4gaXQgZG9lc24ndCByZWFsbHkgYmVsb25nIGluIERQREs/IEknbSBpbiBmYXZvciBvZiBk ZWZlcnJpbmcgdGhlDQo+ID4+IGNhcGFiaWxpdGllcyBBUEkgdW50aWwgd2Uga25vdyBpdCdzIHJl YWxseSBuZWVkZWQuICBJIGhhdGUgdG8gc2VlDQo+ID4+IHNwZWNpYWwgY2FwYWJpbGl0aWVzIEFQ SXMgc3RhcnQgc25lYWtpbmcgaW4gYWZ0ZXIgd2UgZGVjaWRlZCB0byBnbw0KPiA+PiB0aGUgcnRl X2Zsb3dfdmFsaWRhdGUgcm91dGUgYW5kIHVzZXJzIGFyZSBzdGFydGluZyB0byBnZXQgdXNlZCB0 byBpdC4NCj4gPg0KPiA+IEkgZG9uJ3Qgc2VlIGhvdyBpdCBpcyBkaWZmZXJlbnQgZnJvbSBhbnkg b3RoZXIgcnRlX2Zsb3cgY3JlYXRpb24uDQo+ID4gV2UgZG9uJ3QgaG9sZCBjYXBzIGZvciBkZXZp Y2UgYWJpbGl0eSB0byBmaWx0ZXIgcGFja2V0cyBhY2NvcmRpbmcgdG8gVlhMQU4gb3INCj4gR0VO RVZFIGl0ZW1zLiBXaHkgd2Ugc2hvdWxkIHN0YXJ0IG5vdz8NCj4gDQo+IEkgZG9uJ3Qga25vdywg cG9zc2libHkgaWYgaXQgbWFrZXMgYWRvcHRpb24gb2YgdGhlIGZlYXR1cmVzIGVhc2llciBmb3Ig dGhlIGVuZA0KPiB1c2VyLg0KPiANCj4gPg0KPiA+IFdlIGhhdmUgYWxyZWFkeSB0aGUgcnRlX2Zs b3dfdmVpcmZ5LiBJIHRoaW5rIHBhcnQgb2YgdGhlIHJlYXNvbnMgZm9yIGl0IHdhcw0KPiB0aGF0 IHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IGNhcGFiaWxpdGllcyBwb3NzaWJsZSB3aXRoIHJ0ZV9m bG93IGlzIGh1Z2UuIEkNCj4gdGhpbmsgdGhpcyBhbHNvIHRoZSBjYXNlIHdpdGggdGhlIFRFUCBj YXBhYmlsaXRpZXMgKGV2ZW4gdGhvdWdoIEl0IGlzIHN0aWxsIG5vdA0KPiBjbGVhciB0byBtZSB3 aGF0IGV4YWN0bHkgdGhleSB3aWxsIGluY2x1ZGUpLg0KPiANCj4gSXQgbWF5IGJlIHRoYXQgb25s eSBuZWVkIGFkdmVydGlzZSB0aGF0IHdlIGFyZSBjYXBhYmxlIG9mIGVuY2FwL2RlY2FwDQo+IHNl cnZpY2VzLCBidXQgaXQgd291bGQgYmUgZ29vZCB0byBoYXZlIGlucHV0IGZyb20gZG93bnN0cmVh bSB1c2VycyB3aGF0DQo+IHRoZXkgd291bGQgbGlrZSB0byBzZWUuDQo+IA0KPiA+DQo+ID4+Pg0K PiA+Pj4+IFJlZ2FyZGluZyB0aGUgY3JlYXRpb24vZGVzdHJveSBvZiB0ZXAuIFdoeSBub3Qgc2lt cGx5IHVzZSBydGVfZmxvdw0KPiA+Pj4+IEFQSQ0KPiA+Pj4gYW5kIGF2b2lkIHRoaXMgZXh0cmEg Y29udHJvbD8NCj4gPj4+PiBGb3IgZXhhbXBsZSAtIHdpdGggMTcuMTEgQVBJcywgYXBwbGljYXRp b24gY2FuIHB1dCB0aGUgcG9ydCBpbg0KPiA+Pj4+IGlzb2xhdGUgbW9kZSwNCj4gPj4+IGFuZCBp bnNlcnQgYSBmbG93X3J1bGUgdG8gY2F0Y2ggb25seSBJUHY0IFZYTEFOIHRyYWZmaWMgYW5kIGRp cmVjdA0KPiA+Pj4gdG8gc29tZSBxdWV1ZS9kbyBSU1MuIFN1Y2ggb3BlcmF0aW9uLCBwZXIgbXkg dW5kZXJzdGFuZGluZywgd2lsbA0KPiA+Pj4gY3JlYXRlIGEgdHVubmVsIGVuZHBvaW50LiBXaGF0 IGFyZSB0aGUgZG93biBzaWRlcyBvZiBkb2luZyBpdCB3aXRoDQo+ID4+PiB0aGUgY3VycmVudA0K PiA+PiBBUElzPw0KPiA+Pj4NCj4gPj4+IFRoYXQgZG9lc24ndCBlbmFibGUgZW5jYXBzdWxhdGlv biBhbmQgZGVjYXBzdWxhdGlvbiBvZiB0aGUgb3V0ZXINCj4gPj4+IHR1bm5lbCBlbmRwb2ludCBp biB0aGUgaHcgYXMgZmFyIGFzIEkga25vdy4gQXBhcnQgZnJvbSB0aGUgaW5hYmlsaXR5DQo+ID4+ PiB0byBtb25pdG9yIHRoZSBlbmRwb2ludCBzdGF0aXN0aWNzIEkgbWVudGlvbmVkIGFib3ZlLiBJ dCB3b3VsZCBhbHNvDQo+ID4+PiByZXF1aXJlIHRoYXQgeW91IHJlZGVmaW5lIHRoZSBlbmRwb2lu dHMgcGFyYW1ldGVycyBldmVyIHRpbWUgdG8geW91DQo+ID4+PiB3aXNoIHRvIGFkZCBhIG5ldyBm bG93IHRvIGl0LiBJIHRoaW5rIHRoZSBoYXZpbmcgdGhlIHJ0ZV90ZXAgb2JqZWN0DQo+ID4+PiBz ZW1hbnRpY3Mgc2hvdWxkIGFsc28gc2ltcGxpZnkgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGEgZnVs bCB2c3dpdGNoDQo+ID4+PiBvZmZsb2FkIG9mIFRFUCB3aGVyZSB0aGUgaHcgaXMgaGFuZGxpbmcg Ym90aCBlbmNhcC9kZWNhcCBhbmQNCj4gPj4+IHN3aXRjaGluZyB0bw0KPiA+PiBhIHBhcnRpY3Vs YXIgcG9ydC4NCj4gPj4NCj4gPj4gSWYgd2UgaGF2ZSB0aGUgaW5ncmVzcy9kZWNhcCBhbmQgZWdy ZXNzL2VuY2FwIGFjdGlvbnMgYW5kIDEgcnRlX2Zsb3cNCj4gPj4gcnVsZSBwZXIgVEVQIGFuZCB1 c2UgdGhlIENPVU5UIGFjdGlvbiwgSSB0aGluayB3ZSBnZXQgYWxsIGJ1dCB0aGUNCj4gPj4gbGFz dCBiaXQuIEZvciB0aGF0LCBwZXJoYXBzIHRoZSBhcHBsaWNhdGlvbiBjb3VsZCBrZWVwICBpbmdy ZXNzIGFuZA0KPiA+PiBlZ3Jlc3MgcnRlX2Zsb3cgdGVtcGxhdGUgZm9yIGVhY2ggdHVubmVsIHR5 cGUgKFZ4TEFOLCBHUkUsIC4uKS4gVGhlbg0KPiA+PiBjb3B5aW5nIHRoZSB0ZW1wbGF0ZSBhbmQg ZmlsbGluZyBpbiB0aGUgb3V0ZXIgcGFja2V0IGluZm8gYW5kIHR1bm5lbA0KPiA+PiBJZCBpcyBh bGwgdGhhdCB3b3VsZCBiZSByZXF1aXJlZC4gV2UgY291bGQgYWxzbyBkZWZpbmUgdGhlc2UgaW4g cnRlX2Zsb3cuaD8NCj4gPj4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+ Pj4gVG8gZGlyZWN0IHRyYWZmaWMgZmxvd3MgdG8gaHcgdGVybWluYXRlZCB0dW5uZWwgZW5kcG9p bnQgdGhlDQo+ID4+Pj4+IHJ0ZV9mbG93IEFQSSBpcyBlbmhhbmNlZCB0byBhZGQgYSBuZXcgZmxv dyBpdGVtIHR5cGUuIFRoaXMNCj4gPj4+Pj4gY29udGFpbnMgYSBwb2ludGVyIHRvIHRoZSBURVAg Y29udGV4dCBhcyB3ZWxsIGFzIHRoZSBvdmVybGF5IGZsb3cNCj4gPj4+Pj4gaWQgdG8gd2hpY2gg dGhlIHRyYWZmaWMgZmxvdyBpcw0KPiA+Pj4gYXNzb2NpYXRlZC4NCj4gPj4+Pj4NCj4gPj4+Pj4g c3RydWN0IHJ0ZV9mbG93X2l0ZW1fdGVwIHsNCj4gPj4+Pj4gICAgICAgICAgICAgICAgICBzdHJ1 Y3QgcnRlX3RlcCAqdGVwOw0KPiA+Pj4+PiAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsb3df aWQ7IH0NCj4gPj4+Pg0KPiA+Pj4+IENhbiB5b3UgcHJvdmlkZSBtb3JlIGRldGFpbGVkIGRlZmlu aXRpb24gYWJvdXQgdGhlIGZsb3cgaWQgPyB0bw0KPiA+Pj4+IHdoaWNoIGZpZWxkDQo+ID4+PiBm cm9tIHRoZSBwYWNrZXQgaGVhZGVycyBpdCByZWZlcnMgdG8/DQo+ID4+Pj4gT24geW91ciBiZWxv dyBleGFtcGxlcyBpdCBsb29rcyBsaWtlIGl0IGlzIHRvIG1hdGNoIHRoZSBWWExBTiB2bmkNCj4g Pj4+PiBpbiBjYXNlIG9mDQo+ID4+PiBWWExBTiwgd2hhdCBhYm91dCB0aGUgb3RoZXIgcHJvdG9j b2xzPyBBbmQgYWxzbywgd2h5IG5vdCB1c2luZyB0aGUNCj4gPj4+IGFscmVhZHkgZXhpc3RzIFZY TEFOIGl0ZW0/DQo+ID4+Pg0KPiA+Pj4gSSBoYXZlIG9ubHkgYmVlbiBsb29raW5nIGluaXRpYWxs eSBhdCBjb3VwbGUgb2YgdGhlIHR1bm5lbCBlbmRwb2ludA0KPiA+Pj4gcHJvY290b2xzLCBuYW1l bHkgR2VuZXZlLCBOdkdSRSwgYW5kIFZ4TEFOLCBidXQgdGhlIGlkZWEgaGVyZSBpcyB0bw0KPiA+ Pj4gYWxsb3cgdGhlIHVzZXIgdG8gZGVmaW5lIHRoZSBWTkkgaW4gdGhlIGNhc2Ugb2YgR2VuZXZl IGFuZCBWeExBTiBhbmQNCj4gPj4+IHRoZSBWU0lEIGluIHRoZSBjYXNlIG9mIE52R1JFIG9uIGEg cGVyIGZsb3cgYmFzaXMsIGFzIHBlciBteQ0KPiA+Pj4gdW5kZXJzdGFuZGluZyB0aGVzZSBhcmUg dXNlZCB0byBpZGVudGlmeSB0aGUgc291cmNlL2Rlc3RpbmF0aW9uDQo+ID4+PiBob3N0cyBvbiB0 aGUgb3ZlcmxheSBuZXR3b3JrIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgZW5kcG9pbnQgdGhlcmUN Cj4gPj4+IGFyZQ0KPiA+PiB0cmFuc3BvcnRlZCBhY3Jvc3MuDQo+ID4+Pg0KPiA+Pj4gVGhlIFZ4 TEFOIGl0ZW0gaXMgdXNlZCBpbiB0aGUgY3JlYXRpb24gb2YgdGhlIFRFUCBvYmplY3QsIHVzaW5n IHRoZQ0KPiA+Pj4gVEVQIG9iamVjdCBqdXN0IHJlbW92ZXMgdGhlIG5lZWQgZm9yIHRoZSB1c2Vy IHRvIGNvbnN0YW50bHkgcmVkZWZpbmUNCj4gPj4+IGFsbCB0aGUgdHVubmVsIHBhcmFtZXRlcnMg YW5kIGFsc28gSSB0aGluayBkZXBlbmRlbnQgb24gdGhlIGh3DQo+ID4+PiBpbXBsZW1lbnRhdGlv biBpdCBtYXkgc2ltcGxpZnkgdGhlIGRyaXZlcnMgd29yayBpZiBpdCBrbm93IHRoZSBleGFjdA0K PiA+Pj4gZW5kcG9pbnQgdGhlIGFjdGlvbnMgaXMgZm9yIGluc3RlYWQgb2YgaGF2aW5nIHRvIGxv b2sgaXQgdXAgb24gZWFjaA0KPiA+Pj4gZmxvdw0KPiA+PiBhZGRpdGlvbi4NCj4gPj4+DQo+ID4+ Pj4NCj4gPj4+PiBHZW5lcmFsbHkgSSBsaWtlIHRoZSBpZGVhIG9mIHNlcGFyYXRpbmcgdGhlIGVu Y2FwL2RlY2FwIGNvbnRleHQNCj4gPj4+PiBmcm9tIHRoZQ0KPiA+Pj4gYWN0aW9uLiBIb3dldmVy IGxvb2tzIGxpa2UgdGhlIHJ0ZV9mbG93X2l0ZW0gaGFzIGRvdWJsZSBtZWFuaW5nIG9uDQo+ID4+ PiB0aGlzIFJGQywgb25jZSBmb3IgdGhlIGNsYXNzaWZpY2F0aW9uIGFuZCBvbmNlIGZvciB0aGUg YWN0aW9uLg0KPiA+Pj4+ICAgRnJvbSB0aGUgdG9wIG9mIG15IGhlYWQgSSB3b3VsZCB0aGluayBv ZiBhbiBBUEkgd2hpY2ggc2VwYXJhdGUNCj4gPj4+PiB0aG9zZSwgYW5kDQo+ID4+PiByZS11c2Ug dGhlIGV4aXN0aW5nIGZsb3cgaXRlbXMuIFNvbWV0aGluZyBsaWtlOg0KPiA+Pj4+DQo+ID4+Pj4g ICAgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gcGF0dGVybltdID0gew0KPiA+Pj4+ICAgICAgICAgICAg ICAgICAgIHsgc2V0IG9mIGFscmVhZHkgZXhpc3RzIHBhdHRlcm4gIH0sDQo+ID4+Pj4gICAgICAg ICAgICAgICAgICAgeyAuLi4gfSwNCj4gPj4+PiAgICAgICAgICAgICAgICAgICB7IC50eXBlID0g UlRFX0ZMT1dfSVRFTV9UWVBFX0VORCB9IH07DQo+ID4+Pj4NCj4gPj4+PiBlbmNhcF9jdHggPSBj cmVhdGVfZW5hY2FwX2NvbnRleHQocGF0dGVybikNCj4gPj4+Pg0KPiA+Pj4+IHJ0ZV9mbG93X2Fj dGlvbiBhY3Rpb25zW10gPSB7DQo+ID4+Pj4gCXsgLnR5cGUgUlRFX0ZMT1dfSVRFTV9FTkNBUCwg LmNvbmYgPSBlbmNhcF9jdHh9IH0NCj4gPj4+DQo+ID4+PiBJIG5vdCBzdXJlIEkgZnVsbHkgdW5k ZXJzdGFuZCB3aGF0IHlvdSdyZSBhc2tpbmcgaGVyZSwgYnV0IGluDQo+ID4+PiBnZW5lcmFsIGZv ciBlbmNhcCB5b3Ugb25seSB3b3VsZCBkZWZpbmUgdGhlIGlubmVyIHBhcnQgb2YgdGhlIHBhY2tl dA0KPiA+Pj4gaW4gdGhlIG1hdGNoIHBhdHRlcm4gY3JpdGVyaWEgYW5kIHRoZSBhY3R1YWwgb3V0 ZXIgdHVubmVsIGhlYWRlcnMNCj4gPj4+IHdvdWxkIGJlDQo+ID4+IGRlZmluZWQgaW4gdGhlIGFj dGlvbi4NCj4gPj4+DQo+ID4+PiBJIGd1ZXNzIHRoZXJlIGlzIHNvbWUgcmVwbGljYXRpb24gaW4g dGhlIGRlY2FwIHNpZGUgYXMgcHJvcG9zZWQsIGFzDQo+ID4+PiB0aGUgVEVQIG9iamVjdCBpcyB1 c2VkIGluIGJvdGggdGhlIHBhdHRlcm4gYW5kIHRoZSBhY3Rpb24sIHBvc3NpYmx5DQo+ID4+PiB5 b3UgY291bGQgZ2V0IGF3YXkgd2l0aCBoYXZpbmcgbm8gVEVQIG9iamVjdCBkZWZpbmVkIGluIHRo ZSBhY3Rpb24NCj4gPj4+IGRhdGEsIGJ1dCBJIHByZWZlciBrZWVwaW5nIHRoZSBBUEkgc3ltbWV0 cmljYWwgZm9yIGVuY2FwL2RlY2FwDQo+ID4+PiBhY3Rpb25zIGF0IHRoZSBzaGFrZSBvZiBzb21l IGV4dHJhIHZlcmJvc2l0eS4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+IC4uLg0KPiA+Pj4+DQo+ID4N Cg0K