From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 928A2A050D; Wed, 30 Mar 2022 16:27:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8452D4286C; Wed, 30 Mar 2022 16:27:25 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id D847642864 for ; Wed, 30 Mar 2022 16:27:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648650444; x=1680186444; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ISGyX8l+wH/rwYhuCk3Y5LkGvgMZbNaIUlBLoZO//j0=; b=SSolYvCvtA3ZZvRoEaq/A/8azFAoq3+C4JKYqHsTndOxduwQ9+uZnp4c iFv5YpdqufiE9sTtDdFeBowTuRlSl5mpdocayXOCGNPzRtTxAxFTOixic GiUXb5EC4QtOG/5iPiVkMIkf/T73iZPxJzbxjsVnzHZFw4Jvq/9vcrRs4 DwTD5n2dC6L7xS9R+pJCdhCvQ6dQBX/UDg04/gypUkTr4ecvypgxAi49m ICGYIJnI4sz0vxUKD1XltLFJWB2npJmEU5Fctvwq8Km6H8YfVun8KNQWZ RFOVYa2kcKU20LkNnMx7KS25+nRQgmbfp+YttbhWLosLtRqNAtmhKcILL w==; X-IronPort-AV: E=McAfee;i="6200,9189,10301"; a="258386138" X-IronPort-AV: E=Sophos;i="5.90,222,1643702400"; d="scan'208";a="258386138" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Mar 2022 07:27:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,222,1643702400"; d="scan'208";a="546881477" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga007.jf.intel.com with ESMTP; 30 Mar 2022 07:27:22 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 30 Mar 2022 07:27:22 -0700 Received: from shsmsx606.ccr.corp.intel.com (10.109.6.216) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 30 Mar 2022 07:27:20 -0700 Received: from shsmsx606.ccr.corp.intel.com ([10.109.6.216]) by SHSMSX606.ccr.corp.intel.com ([10.109.6.216]) with mapi id 15.01.2308.027; Wed, 30 Mar 2022 22:27:18 +0800 From: "Hu, Jiayu" To: Maxime Coquelin , Ilya Maximets , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "Richardson, Bruce" CC: "Van Haaren, Harry" , "Pai G, Sunil" , "Stokes, Ian" , "Ferriter, Cian" , "ovs-dev@openvswitch.org" , "dev@dpdk.org" , "Mcnamara, John" , "O'Driscoll, Tim" , "Finn, Emma" Subject: RE: OVS DPDK DMA-Dev library/Design Discussion Thread-Topic: OVS DPDK DMA-Dev library/Design Discussion Thread-Index: Adg/jDNGcC8G4wWtSxeVfUOuAS3Y6wACLuFQAM6falAAJoZBIAAA0srQAAK2F/D//51mAIAABeuAgAAFBYCAAALtgIAACNmA//71HyCAAhFrgP//J01w Date: Wed, 30 Mar 2022 14:27:18 +0000 Message-ID: <756eefe7551a47208c1f3578890e5fcf@intel.com> References: <98CBD80474FA8B44BF855DF32C47DC35D86F7C@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F7D@smartserver.smartshare.dk> <7968dd0b-8647-8d7b-786f-dc876bcbf3f0@redhat.com> <98CBD80474FA8B44BF855DF32C47DC35D86F7E@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F80@smartserver.smartshare.dk> <431821f0b06d45958f67cb157029d306@intel.com> <4a66558c-d0ad-f41a-fef6-db670a330f21@redhat.com> In-Reply-To: <4a66558c-d0ad-f41a-fef6-db670a330f21@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.401.20 dlp-product: dlpe-windows x-originating-ip: [10.239.127.36] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4aW1lIENvcXVlbGlu IDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBNYXJjaCAz MCwgMjAyMiA1OjI1IFBNDQo+IFRvOiBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT47IEls eWEgTWF4aW1ldHMgPGkubWF4aW1ldHNAb3ZuLm9yZz47DQo+IE1vcnRlbiBCcsO4cnVwIDxtYkBz bWFydHNoYXJlc3lzdGVtcy5jb20+OyBSaWNoYXJkc29uLCBCcnVjZQ0KPiA8YnJ1Y2UucmljaGFy ZHNvbkBpbnRlbC5jb20+DQo+IENjOiBWYW4gSGFhcmVuLCBIYXJyeSA8aGFycnkudmFuLmhhYXJl bkBpbnRlbC5jb20+OyBQYWkgRywgU3VuaWwNCj4gPHN1bmlsLnBhaS5nQGludGVsLmNvbT47IFN0 b2tlcywgSWFuIDxpYW4uc3Rva2VzQGludGVsLmNvbT47IEZlcnJpdGVyLCBDaWFuDQo+IDxjaWFu LmZlcnJpdGVyQGludGVsLmNvbT47IG92cy1kZXZAb3BlbnZzd2l0Y2gub3JnOyBkZXZAZHBkay5v cmc7DQo+IE1jbmFtYXJhLCBKb2huIDxqb2huLm1jbmFtYXJhQGludGVsLmNvbT47IE8nRHJpc2Nv bGwsIFRpbQ0KPiA8dGltLm9kcmlzY29sbEBpbnRlbC5jb20+OyBGaW5uLCBFbW1hIDxlbW1hLmZp bm5AaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogT1ZTIERQREsgRE1BLURldiBsaWJyYXJ5L0Rl c2lnbiBEaXNjdXNzaW9uDQo+IA0KPiANCj4gDQo+IE9uIDMvMzAvMjIgMDQ6MDIsIEh1LCBKaWF5 dSB3cm90ZToNCj4gPg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ IEZyb206IElseWEgTWF4aW1ldHMgPGkubWF4aW1ldHNAb3ZuLm9yZz4NCj4gPj4gU2VudDogV2Vk bmVzZGF5LCBNYXJjaCAzMCwgMjAyMiAxOjQ1IEFNDQo+ID4+IFRvOiBNb3J0ZW4gQnLDuHJ1cCA8 bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPjsgUmljaGFyZHNvbiwgQnJ1Y2UNCj4gPj4gPGJydWNl LnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiA+PiBDYzogaS5tYXhpbWV0c0Bvdm4ub3JnOyBNYXhp bWUgQ29xdWVsaW4NCj4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPjsNCj4gPj4gVmFuIEhh YXJlbiwgSGFycnkgPGhhcnJ5LnZhbi5oYWFyZW5AaW50ZWwuY29tPjsgUGFpIEcsIFN1bmlsDQo+ ID4+IDxzdW5pbC5wYWkuZ0BpbnRlbC5jb20+OyBTdG9rZXMsIElhbiA8aWFuLnN0b2tlc0BpbnRl bC5jb20+OyBIdSwNCj4gPj4gSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT47IEZlcnJpdGVyLCBD aWFuIDxjaWFuLmZlcnJpdGVyQGludGVsLmNvbT47DQo+ID4+IG92cy0gZGV2QG9wZW52c3dpdGNo Lm9yZzsgZGV2QGRwZGsub3JnOyBNY25hbWFyYSwgSm9obg0KPiA+PiA8am9obi5tY25hbWFyYUBp bnRlbC5jb20+OyBPJ0RyaXNjb2xsLCBUaW0gPHRpbS5vZHJpc2NvbGxAaW50ZWwuY29tPjsNCj4g Pj4gRmlubiwgRW1tYSA8ZW1tYS5maW5uQGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IE9W UyBEUERLIERNQS1EZXYgbGlicmFyeS9EZXNpZ24gRGlzY3Vzc2lvbg0KPiA+Pg0KPiA+PiBPbiAz LzI5LzIyIDE5OjEzLCBNb3J0ZW4gQnLDuHJ1cCB3cm90ZToNCj4gPj4+PiBGcm9tOiBCcnVjZSBS aWNoYXJkc29uIFttYWlsdG86YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb21dDQo+ID4+Pj4gU2Vu dDogVHVlc2RheSwgMjkgTWFyY2ggMjAyMiAxOS4wMw0KPiA+Pj4+DQo+ID4+Pj4gT24gVHVlLCBN YXIgMjksIDIwMjIgYXQgMDY6NDU6MTlQTSArMDIwMCwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ ID4+Pj4+PiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gW21haWx0bzptYXhpbWUuY29xdWVsaW5AcmVk aGF0LmNvbV0NCj4gPj4+Pj4+IFNlbnQ6IFR1ZXNkYXksIDI5IE1hcmNoIDIwMjIgMTguMjQNCj4g Pj4+Pj4+DQo+ID4+Pj4+PiBIaSBNb3J0ZW4sDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gT24gMy8yOS8y MiAxNjo0NCwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4+Pj4+Pj4+IEZyb206IFZhbiBIYWFy ZW4sIEhhcnJ5IFttYWlsdG86aGFycnkudmFuLmhhYXJlbkBpbnRlbC5jb21dDQo+ID4+Pj4+Pj4+ IFNlbnQ6IFR1ZXNkYXksIDI5IE1hcmNoIDIwMjIgMTUuMDINCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+IEZyb206IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+DQo+ID4+ Pj4+Pj4+PiBTZW50OiBUdWVzZGF5LCBNYXJjaCAyOSwgMjAyMiAxOjUxIFBNDQo+ID4+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+Pj4gSGF2aW5nIHRob3VnaHQgbW9yZSBhYm91dCBpdCwgSSB0aGluayB0aGF0 IGEgY29tcGxldGVseQ0KPiA+Pj4+IGRpZmZlcmVudA0KPiA+Pj4+Pj4gYXJjaGl0ZWN0dXJhbCBh cHByb2FjaCBpcyByZXF1aXJlZDoNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBNYW55IG9mIHRo ZSBEUERLIEV0aGVybmV0IFBNRHMgaW1wbGVtZW50IGEgdmFyaWV0eSBvZiBSWCBhbmQNCj4gPj4+ Pj4+Pj4+IFRYDQo+ID4+Pj4+PiBwYWNrZXQgYnVyc3QgZnVuY3Rpb25zLCBlYWNoIG9wdGltaXpl ZCBmb3IgZGlmZmVyZW50IENQVSB2ZWN0b3INCj4gPj4+Pj4+IGluc3RydWN0aW9uIHNldHMuIFRo ZSBhdmFpbGFiaWxpdHkgb2YgYSBETUEgZW5naW5lIHNob3VsZCBiZQ0KPiA+Pj4+IHRyZWF0ZWQN Cj4gPj4+Pj4+IHRoZSBzYW1lIHdheS4gU28gSSBzdWdnZXN0IHRoYXQgUE1EcyBjb3B5aW5nIHBh Y2tldCBjb250ZW50cywgZS5nLg0KPiA+Pj4+Pj4gbWVtaWYsIHBjYXAsIHZteG5ldDMsIHNob3Vs ZCBpbXBsZW1lbnQgRE1BIG9wdGltaXplZCBSWCBhbmQgVFgNCj4gPj4+PiBwYWNrZXQNCj4gPj4+ Pj4+IGJ1cnN0IGZ1bmN0aW9ucy4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBTaW1pbGFybHkg Zm9yIHRoZSBEUERLIHZob3N0IGxpYnJhcnkuDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gSW4g c3VjaCBhbiBhcmNoaXRlY3R1cmUsIGl0IHdvdWxkIGJlIHRoZSBhcHBsaWNhdGlvbidzIGpvYiB0 bw0KPiA+Pj4+Pj4gYWxsb2NhdGUgRE1BIGNoYW5uZWxzIGFuZCBhc3NpZ24gdGhlbSB0byB0aGUg c3BlY2lmaWMgUE1EcyB0aGF0DQo+ID4+Pj4gc2hvdWxkDQo+ID4+Pj4+PiB1c2UgdGhlbS4gQnV0 IHRoZSBhY3R1YWwgdXNlIG9mIHRoZSBETUEgY2hhbm5lbHMgd291bGQgbW92ZSBkb3duDQo+ID4+ Pj4gYmVsb3cNCj4gPj4+Pj4+IHRoZSBhcHBsaWNhdGlvbiBhbmQgaW50byB0aGUgRFBESyBQTURz IGFuZCBsaWJyYXJpZXMuDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IE1l ZCB2ZW5saWcgaGlsc2VuIC8gS2luZCByZWdhcmRzLCAtTW9ydGVuIEJyw7hydXANCj4gPj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4gSGkgTW9ydGVuLA0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBUaGF0J3Mg KmV4YWN0bHkqIGhvdyB0aGlzIGFyY2hpdGVjdHVyZSBpcyBkZXNpZ25lZCAmDQo+ID4+Pj4gaW1w bGVtZW50ZWQuDQo+ID4+Pj4+Pj4+IDEuCVRoZSBETUEgY29uZmlndXJhdGlvbiBhbmQgaW5pdGlh bGl6YXRpb24gaXMgdXAgdG8gdGhlDQo+ID4+Pj4gYXBwbGljYXRpb24NCj4gPj4+Pj4+IChPVlMp Lg0KPiA+Pj4+Pj4+PiAyLglUaGUgVkhvc3QgbGlicmFyeSBpcyBwYXNzZWQgdGhlIERNQS1kZXYg SUQsIGFuZCBpdHMgbmV3DQo+ID4+Pj4gYXN5bmMNCj4gPj4+Pj4+IHJ4L3R4IEFQSXMsIGFuZCB1 c2VzIHRoZSBETUEgZGV2aWNlIHRvIGFjY2VsZXJhdGUgdGhlIGNvcHkuDQo+ID4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+IExvb2tpbmcgZm9yd2FyZCB0byB0YWxraW5nIG9uIHRoZSBjYWxsIHRoYXQganVz dCBzdGFydGVkLg0KPiA+Pj4+IFJlZ2FyZHMsIC0NCj4gPj4+Pj4+IEhhcnJ5DQo+ID4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBPSywgdGhhbmtzIC0gYXMgSSBzYWlkIG9uIHRoZSBjYWxs LCBJIGhhdmVuJ3QgbG9va2VkIGF0IHRoZQ0KPiA+Pj4+IHBhdGNoZXMuDQo+ID4+Pj4+Pj4NCj4g Pj4+Pj4+PiBUaGVuLCBJIHN1cHBvc2UgdGhhdCB0aGUgVFggY29tcGxldGlvbnMgY2FuIGJlIGhh bmRsZWQgaW4gdGhlIFRYDQo+ID4+Pj4+PiBmdW5jdGlvbiwgYW5kIHRoZSBSWCBjb21wbGV0aW9u cyBjYW4gYmUgaGFuZGxlZCBpbiB0aGUgUlgNCj4gPj4+Pj4+IGZ1bmN0aW9uLCBqdXN0IGxpa2Ug dGhlIEV0aGRldiBQTURzIGhhbmRsZSBwYWNrZXQgZGVzY3JpcHRvcnM6DQo+ID4+Pj4+Pj4NCj4g Pj4+Pj4+PiBUWF9CdXJzdCh0eF9wYWNrZXRfYXJyYXkpOg0KPiA+Pj4+Pj4+IDEuCUNsZWFuIHVw IGRlc2NyaXB0b3JzIHByb2Nlc3NlZCBieSB0aGUgTklDIGNoaXAuIC0tPiBQcm9jZXNzDQo+ID4+ Pj4gVFgNCj4gPj4+Pj4+IERNQSBjaGFubmVsIGNvbXBsZXRpb25zLiAoRWZmZWN0aXZlbHksIHRo ZSAybmQgcGlwZWxpbmUgc3RhZ2UuKQ0KPiA+Pj4+Pj4+IDIuCVBhc3Mgb24gdGhlIHR4X3BhY2tl dF9hcnJheSB0byB0aGUgTklDIGNoaXAgZGVzY3JpcHRvcnMuIC0tDQo+ID4+Pj4+IFBhc3MNCj4g Pj4+Pj4+IG9uIHRoZSB0eF9wYWNrZXRfYXJyYXkgdG8gdGhlIFRYIERNQSBjaGFubmVsLiAoRWZm ZWN0aXZlbHksIHRoZQ0KPiA+Pj4+Pj4gMXN0IHBpcGVsaW5lIHN0YWdlLikNCj4gPj4+Pj4+DQo+ ID4+Pj4+PiBUaGUgcHJvYmxlbSBpcyBUeCBmdW5jdGlvbiBtaWdodCBub3QgYmUgY2FsbGVkIGFn YWluLCBzbyBlbnF1ZXVlZA0KPiA+Pj4+Pj4gcGFja2V0cyBpbiAyLiBtYXkgbmV2ZXIgYmUgY29t cGxldGVkIGZyb20gYSBWaXJ0aW8gcG9pbnQgb2Ygdmlldy4NCj4gPj4+PiBJT1csDQo+ID4+Pj4+ PiB0aGUgcGFja2V0cyB3aWxsIGJlIGNvcGllZCB0byB0aGUgVmlydGlvIGRlc2NyaXB0b3JzIGJ1 ZmZlcnMsIGJ1dA0KPiA+Pj4+IHRoZQ0KPiA+Pj4+Pj4gZGVzY3JpcHRvcnMgd2lsbCBub3QgYmUg bWFkZSBhdmFpbGFibGUgdG8gdGhlIFZpcnRpbyBkcml2ZXIuDQo+ID4+Pj4+DQo+ID4+Pj4+IElu IHRoYXQgY2FzZSwgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGNhbGwgVFhfQnVyc3QoKQ0KPiA+ Pj4+PiBwZXJpb2RpY2FsbHkNCj4gPj4+PiB3aXRoIGFuIGVtcHR5IGFycmF5LCBmb3IgY29tcGxl dGlvbiBwdXJwb3Nlcy4NCj4gPj4+Pj4NCj4gPj4+Pj4gT3Igc29tZSBzb3J0IG9mIFRYX0tlZXBh bGl2ZSgpIGZ1bmN0aW9uIGNhbiBiZSBhZGRlZCB0byB0aGUgRFBESw0KPiA+Pj4+IGxpYnJhcnks IHRvIGhhbmRsZSBETUEgY29tcGxldGlvbi4gSXQgbWlnaHQgZXZlbiBoYW5kbGUgbXVsdGlwbGUN Cj4gPj4+PiBETUEgY2hhbm5lbHMsIGlmIGNvbnZlbmllbnQgLSBhbmQgaWYgcG9zc2libGUgd2l0 aG91dCBsb2NraW5nIG9yDQo+ID4+Pj4gb3RoZXIgd2VpcmQgY29tcGxleGl0eS4NCj4gPj4+Pj4N Cj4gPj4+Pj4gSGVyZSBpcyBhbm90aGVyIGlkZWEsIGluc3BpcmVkIGJ5IGEgcHJlc2VudGF0aW9u IGF0IG9uZSBvZiB0aGUNCj4gPj4+Pj4gRFBESw0KPiA+Pj4+IFVzZXJzcGFjZSBjb25mZXJlbmNl cy4gSXQgbWF5IGJlIHdpc2hmdWwgdGhpbmtpbmcsIHRob3VnaDoNCj4gPj4+Pj4NCj4gPj4+Pj4g QWRkIGFuIGFkZGl0aW9uYWwgdHJhbnNhY3Rpb24gdG8gZWFjaCBETUEgYnVyc3Q7IGEgc3BlY2lh bA0KPiA+Pj4+IHRyYW5zYWN0aW9uIGNvbnRhaW5pbmcgdGhlIG1lbW9yeSB3cml0ZSBvcGVyYXRp b24gdGhhdCBtYWtlcyB0aGUNCj4gPj4+PiBkZXNjcmlwdG9ycyBhdmFpbGFibGUgdG8gdGhlIFZp cnRpbyBkcml2ZXIuDQo+ID4+DQo+ID4+IEkgd2FzIHRhbGtpbmcgd2l0aCBNYXhpbWUgYWZ0ZXIg dGhlIGNhbGwgdG9kYXkgYWJvdXQgdGhlIHNhbWUgaWRlYS4NCj4gPj4gQW5kIGl0IGxvb2tzIGZh aXJseSBkb2FibGUsIEkgd291bGQgc2F5Lg0KPiA+DQo+ID4gSWYgdGhlIGlkZWEgaXMgbWFraW5n IERNQSB1cGRhdGUgdXNlZCByaW5nJ3MgaW5kZXggKDJCKSBhbmQgcGFja2VkDQo+ID4gcmluZyBk ZXNjcmlwdG9yJ3MgZmxhZyAoMkIpLCB5ZXMsIGl0IHdpbGwgd29yayBmdW5jdGlvbmFsbHkuIEJ1 dA0KPiA+IGNvbnNpZGVyaW5nIHRoZSBvZmZsb2FkaW5nIGNvc3Qgb2YgRE1BLCBpdCB3b3VsZCBo dXJ0IHBlcmZvcm1hbmNlLiBJbg0KPiA+IGFkZGl0aW9uLCB0aGUgbGF0ZW5jeSBvZiBzbWFsbCBj b3B5IG9mIERNQSBpcyBtdWNoIGhpZ2hlciB0aGFuIHRoYXQgb2YgQ1BVLg0KPiBTbyBpdCB3aWxs IGFsc28gaW5jcmVhc2UgbGF0ZW5jeS4NCj4gDQo+IEkgYWdyZWUgd3JpdGluZyBiYWNrIGRlc2Ny aXB0b3JzIHVzaW5nIERNQSBjYW4gYmUgc3ViLW9wdGltYWwsIGVzcGVjaWFsbHkgZm9yDQo+IHBh Y2tlZCByaW5nIHdoZXJlIHRoZSBoZWFkIGRlc2MgZmxhZ3MgaGF2ZSB0byBiZSB3cml0dGVuIGxh c3QuDQo+IA0KPiBBcmUgeW91IHN1cmUgYWJvdXQgbGF0ZW5jeT8gV2l0aCBjdXJyZW50IHNvbHV0 aW9uLCB0aGUgZGVzY3JpcHRvcnMgd3JpdGUtDQo+IGJhY2tzIGNhbiBoYXBwZW4gcXVpdGUgc29t ZSB0aW1lIGFmdGVyIHRoZSBETUEgdHJhbnNmZXJzIGFyZSBkb25lLCBpc24ndCBpdD8NCg0KWWVz LCBndWVzdCBjYW4gZ2V0IG5vdGlmaWNhdGlvbiBpbW1lZGlhdGVseSBhZnRlciB0aGUgY29weSBp cyBjb21wbGV0ZWQgYnkgRE1BDQplbmdpbmUuIEJ1dCBpZiB3ZSBjb25zaWRlciB0aGUgbGF0ZW5j eSBvZiBDUFUgZG9pbmcgYSAyQiBjb3B5IGFuZCBETUEgZG9pbmcNCmEgMkIgY29weSwgdGhlIGxh dHRlciBpcyBtdWNoIGhpZ2hlci4NCg0KPiANCj4gPj4NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+ IFRoYXQgaXMgc29tZXRoaW5nIHRoYXQgY2FuIHdvcmssIHNvIGxvbmcgYXMgdGhlIHJlY2VpdmVy IGlzDQo+ID4+Pj4gb3BlcmF0aW5nIGluIHBvbGxpbmcgbW9kZS4gRm9yIGNhc2VzIHdoZXJlIHZp cnRpbyBpbnRlcnJ1cHRzIGFyZQ0KPiA+Pj4+IGVuYWJsZWQsIHlvdSBzdGlsbCBuZWVkIHRvIGRv IGEgd3JpdGUgdG8gdGhlIGV2ZW50ZmQgaW4gdGhlIGtlcm5lbA0KPiA+Pj4+IGluIHZob3N0IHRv IHNpZ25hbCB0aGUgdmlydGlvIHNpZGUuIFRoYXQncyBub3Qgc29tZXRoaW5nIHRoYXQgY2FuDQo+ ID4+Pj4gYmUgb2ZmbG9hZGVkIHRvIGEgRE1BIGVuZ2luZSwgc2FkbHksIHNvIHdlIHN0aWxsIG5l ZWQgc29tZSBmb3JtIG9mDQo+IGNvbXBsZXRpb24gY2FsbC4NCj4gPj4+DQo+ID4+PiBJIGd1ZXNz IHRoYXQgdmlydGlvIGludGVycnVwdHMgaXMgdGhlIG1vc3Qgd2lkZWx5IGRlcGxveWVkIHNjZW5h cmlvLA0KPiA+Pj4gc28gbGV0J3MgaWdub3JlIHRoZSBETUEgVFggY29tcGxldGlvbiB0cmFuc2Fj dGlvbiBmb3Igbm93IC0gYW5kIGNhbGwNCj4gPj4+IGl0IGEgcG9zc2libGUgZnV0dXJlIG9wdGlt aXphdGlvbiBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLiBTbyBpdA0KPiA+Pj4gc2VlbXMgdGhhdCBz b21lIGZvcm0gb2YgY29tcGxldGlvbiBjYWxsIGlzIHVuYXZvaWRhYmxlLg0KPiA+Pj4NCj4gPj4N Cj4gPj4gV2UgY291bGQgc2VwYXJhdGUgdGhlIGFjdHVhbCBraWNrIG9mIHRoZSBndWVzdCB3aXRo IHRoZSBkYXRhIHRyYW5zZmVyLg0KPiA+PiBJZiBpbnRlcnJ1cHRzIGFyZSBlbmFibGVkLCB0aGlz IG1lYW5zIHRoYXQgdGhlIGd1ZXN0IGlzIG5vdCBhY3RpdmVseSBwb2xsaW5nLA0KPiBpLmUuDQo+ ID4+IHdlIGNhbiBhbGxvdyBzb21lIGV4dHJhIGxhdGVuY3kgYnkgcGVyZm9ybWluZyB0aGUgYWN0 dWFsIGtpY2sgZnJvbQ0KPiA+PiB0aGUgcnggY29udGV4dCwgb3IsIGFzIE1heGltZSBzYWlkLCBp ZiBETUEgZW5naW5lIGNhbiBnZW5lcmF0ZQ0KPiA+PiBpbnRlcnJ1cHRzIHdoZW4gdGhlIERNQSBx dWV1ZSBpcyBlbXB0eSwgdmhvc3QgdGhyZWFkIG1heSBsaXN0ZW4gdG8NCj4gPj4gdGhlbSBhbmQg a2ljayB0aGUgZ3Vlc3QgaWYgbmVlZGVkLiAgVGhpcyB3aWxsIGFkZGl0aW9uYWxseSByZW1vdmUg dGhlDQo+ID4+IGV4dHJhIHN5c3RlbSBjYWxsIGZyb20gdGhlIGZhc3QgcGF0aC4NCj4gPg0KPiA+ IFNlcGFyYXRpbmcga2ljayB3aXRoIGRhdGEgdHJhbnNmZXIgaXMgYSB2ZXJ5IGdvb2QgaWRlYS4g QnV0IGl0DQo+ID4gcmVxdWlyZXMgYSBkZWRpY2F0ZWQgY29udHJvbCBwbGFuZSB0aHJlYWQgdG8g a2ljayBndWVzdCBhZnRlciBETUENCj4gPiBpbnRlcnJ1cHQuIEFueXdheSwgd2UgY2FuIHRyeSB0 aGlzIG9wdGltaXphdGlvbiBpbiB0aGUgZnV0dXJlLg0KPiANCj4gWWVzIGl0IHJlcXVpcmVzIGEg ZGVkaWNhdGVkIHRocmVhZCwgYnV0IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyByZWFsbHkgYW4gaXNz dWUuDQo+IEludGVycnVwdCBtb2RlIGNhbiBiZSBjb25zaWRlcmVkIGFzIHNsb3ctcGF0aC4NCg0K QWdyZWUuIEl0J3Mgd29ydGggYSB0cnkuDQoNClRoYW5rcywNCkppYXl1DQo+IA0KPiA+DQo+ID4g VGhhbmtzLA0KPiA+IEppYXl1DQoNCg==