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 BFC77A04FD; Fri, 8 Apr 2022 10:21:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5E6994067E; Fri, 8 Apr 2022 10:21:16 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 1E3C24003F for ; Fri, 8 Apr 2022 10:21:15 +0200 (CEST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: OVS DPDK DMA-Dev library/Design Discussion Date: Fri, 8 Apr 2022 10:21:04 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D86FBE@smartserver.smartshare.dk> In-Reply-To: <0a414313f07d4781b9bdd8523c2e06f5@intel.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: OVS DPDK DMA-Dev library/Design Discussion Thread-Index: Adg/jDNGcC8G4wWtSxeVfUOuAS3Y6wACLuFQAM6falAAJoZBIAAA0srQAAK2F/D//51mAIAABeuAgAAFBYCAAALtgIAACRKAgAAlNYCAANqHAIAN4r6AgAAF9wCAAAPvAP//0aZg//8lAoA= References: <98CBD80474FA8B44BF855DF32C47DC35D86F7C@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F7D@smartserver.smartshare.dk> <7968dd0b-8647-8d7b-786f-dc876bcbf3f0@redhat.com> <98CBD80474FA8B44BF855DF32C47DC35D86F7E@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F80@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F82@smartserver.smartshare.dk> <94d817cb-8151-6644-c577-ed8b42d24337@redhat.com> <55c5a37f-3ee8-394b-8cff-e7daecb59f73@ovn.org> <0a 414313f07d4781b9bdd8523c2e06f5@intel.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Hu, Jiayu" , "Ilya Maximets" , "Maxime Coquelin" , "Van Haaren, Harry" , "Richardson, Bruce" Cc: "Pai G, Sunil" , "Stokes, Ian" , "Ferriter, Cian" , , , "Mcnamara, John" , "O'Driscoll, Tim" , "Finn, Emma" 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 PiBGcm9tOiBIdSwgSmlheXUgW21haWx0bzpqaWF5dS5odUBpbnRlbC5jb21dDQo+IFNlbnQ6IEZy aWRheSwgOCBBcHJpbCAyMDIyIDA5LjE0DQo+IA0KPiA+IEZyb206IElseWEgTWF4aW1ldHMgPGku bWF4aW1ldHNAb3ZuLm9yZz4NCj4gPg0KPiA+IE9uIDQvNy8yMiAxNjoyNSwgTWF4aW1lIENvcXVl bGluIHdyb3RlOg0KPiA+ID4gSGkgSGFycnksDQo+ID4gPg0KPiA+ID4gT24gNC83LzIyIDE2OjA0 LCBWYW4gSGFhcmVuLCBIYXJyeSB3cm90ZToNCj4gPiA+PiBIaSBPVlMgJiBEUERLLCBNYWludGFp bmVycyAmIENvbW11bml0eSwNCj4gPiA+Pg0KPiA+ID4+IFRvcCBwb3N0aW5nIG92ZXJ2aWV3IG9m IGRpc2N1c3Npb24gYXMgcmVwbGllcyB0byB0aHJlYWQgYmVjb21lDQo+IHNsb3dlcjoNCj4gPiA+ PiBwZXJoYXBzIGl0IGlzIGEgZ29vZCB0aW1lIHRvIHJldmlldyBhbmQgcGxhbiBmb3IgbmV4dCBz dGVwcz8NCj4gPiA+Pg0KPiA+ID4+IMKgRnJvbSBteSBwZXJzcGVjdGl2ZSwgaXQgdGhvc2UgbW9z dCB2b2NhbCBpbiB0aGUgdGhyZWFkIHNlZW0gdG8gYmUNCj4gaW4NCj4gPiA+PiBmYXZvdXIgb2Yg dGhlIGNsZWFuIHJ4L3R4IHNwbGl0ICgiZGVmZXIgd29yayIpLCB3aXRoIHRoZSB0cmFkZW9mZg0K PiA+ID4+IHRoYXQgdGhlIGFwcGxpY2F0aW9uIG11c3QgYmUgYXdhcmUgb2YgaGFuZGxpbmcgdGhl IGFzeW5jIERNQQ0KPiA+ID4+IGNvbXBsZXRpb25zLiBJZiB0aGVyZSBhcmUgYW55IGNvbmNlcm5z IG9wcG9zaW5nIHVwc3RyZWFtaW5nIG9mDQo+IHRoaXMNCj4gPiBtZXRob2QsIHBsZWFzZSBpbmRp Y2F0ZSB0aGlzIHByb21wdGx5LCBhbmQgd2UgY2FuIGNvbnRpbnVlIHRlY2huaWNhbA0KPiA+IGRp c2N1c3Npb25zIGhlcmUgbm93Lg0KPiA+ID4NCj4gPiA+IFdhc24ndCB0aGVyZSBzb21lIGRpc2N1 c3Npb25zIGFib3V0IGhhbmRsaW5nIHRoZSBWaXJ0aW8gY29tcGxldGlvbnMNCj4gPiA+IHdpdGgg dGhlIERNQSBlbmdpbmU/IFdpdGggdGhhdCwgd2Ugd291bGRuJ3QgbmVlZCB0aGUgZGVmZXJyYWwg b2YNCj4gd29yay4NCj4gPg0KPiA+ICsxDQo+ID4NCj4gPiBXaXRoIHRoZSB2aXJ0aW8gY29tcGxl dGlvbnMgaGFuZGxlZCBieSBETUEgaXRzZWxmLCB0aGUgdmhvc3QgcG9ydA0KPiB0dXJucw0KPiA+ IGFsbW9zdCBpbnRvIGEgcmVhbCBIVyBOSUMuICBXaXRoIHRoYXQgd2Ugd2lsbCBub3QgbmVlZCBh bnkgZXh0cmENCj4gPiBtYW5pcHVsYXRpb25zIGZyb20gdGhlIE9WUyBzaWRlLCBpLmUuIG5vIG5l ZWQgdG8gZGVmZXIgYW55IHdvcmsgd2hpbGUNCj4gPiBtYWludGFpbmluZyBjbGVhciBzcGxpdCBi ZXR3ZWVuIHJ4IGFuZCB0eCBvcGVyYXRpb25zLg0KPiANCj4gRmlyc3QsIG1ha2luZyBETUEgZG8g MkIgY29weSB3b3VsZCBzYWNyaWZpY2UgcGVyZm9ybWFuY2UsIGFuZCBJIHRoaW5rDQo+IHdlIGFs bCBhZ3JlZSBvbiB0aGF0LiBTZWNvbmQsIHRoaXMgbWV0aG9kIGNvbWVzIHdpdGggYW4gaXNzdWUg b2YNCj4gb3JkZXJpbmcuDQo+IEZvciBleGFtcGxlLCBQTUQgdGhyZWFkMCBlbnF1ZXVlIDEwIHBh Y2tldHMgdG8gdnJpbmcwIGZpcnN0LCB0aGVuIFBNRA0KPiB0aHJlYWQxDQo+IGVucXVldWUgMjAg cGFja2V0cyB0byB2cmluZzAuIElmIFBNRCB0aHJlYWQwIGFuZCB0aHJlYTEgaGF2ZSBvd24NCj4g ZGVkaWNhdGVkDQo+IERNQSBkZXZpY2UgZG1hMCBhbmQgZG1hMSwgZmxhZy9pbmRleCB1cGRhdGUg Zm9yIHRoZSBmaXJzdCAxMCBwYWNrZXRzIGlzDQo+IGRvbmUgYnkNCj4gZG1hMCwgYW5kIGZsYWcv aW5kZXggdXBkYXRlIGZvciB0aGUgbGVmdCAyMCBwYWNrZXRzIGlzIGRvbmUgYnkgZG1hMS4NCj4g QnV0IHRoZXJlDQo+IGlzIG5vIG9yZGVyaW5nIGd1YXJhbnRlZSBhbW9uZyBkaWZmZXJlbnQgRE1B IGRldmljZXMsIHNvIGZsYWcvaW5kZXgNCj4gdXBkYXRlIG1heQ0KPiBlcnJvci4gSWYgUE1EIHRo cmVhZHMgZG9uJ3QgaGF2ZSBkZWRpY2F0ZWQgRE1BIGRldmljZXMsIHdoaWNoIG1lYW5zIERNQQ0K PiBkZXZpY2VzIGFyZSBzaGFyZWQgYW1vbmcgdGhyZWFkcywgd2UgbmVlZCBsb2NrIGFuZCBwYXkg Zm9yIGxvY2sNCj4gY29udGVudGlvbiBpbg0KPiBkYXRhLXBhdGguIE9yIHdlIGNhbiBhbGxvY2F0 ZSBETUEgZGV2aWNlcyBmb3IgdnJpbmcgZHluYW1pY2FsbHkgdG8NCj4gYXZvaWQgRE1BDQo+IHNo YXJpbmcgYW1vbmcgdGhyZWFkcy4gQnV0IHdoYXQncyB0aGUgb3ZlcmhlYWQgb2YgYWxsb2NhdGlv biBtZWNoYW5pc20/DQo+IFdobw0KPiBkb2VzIGl0PyBBbnkgdGhvdWdodHM/DQo+IA0KDQpUaGlu ayBvZiBpdCBsaWtlIGEgaGFyZHdhcmUgTklDLi4uIHdoYXQgYXJlIHRoZSBjb25zdHJhaW50cyBm b3IgYSBoYXJkd2FyZSBOSUM6DQoNClR3byB0aHJlYWRzIHdyaXRpbmcgc2ltdWx0YW5lb3VzbHkg aW50byB0aGUgc2FtZSBOSUMgVFggcXVldWUgaXMgbm90IHBvc3NpYmxlLCBhbmQgd291bGQgYmUg YW4gYXBwbGljYXRpb24gZGVzaWduIGVycm9yLiBXaXRoIGEgaGFyZHdhcmUgTklDLCB5b3UgdXNl IHNlcGFyYXRlIFRYIHF1ZXVlcyBmb3IgZWFjaCB0aHJlYWQuDQoNCkhhdmluZyB0d28gdGhyZWFk cyB3cml0aW5nIGludG8gdGhlIHNhbWUgVFggcXVldWUgKHRvIG1haW50YWluIG9yZGVyaW5nKSwg aXMgbm90IHBvc3NpYmxlIHdpdGhvdXQgYWRkaXRpb25hbCBhcHBsaWNhdGlvbiBsb2dpYy4gVGhp cyBjb3VsZCBiZSBhIHBpcGVsaW5lIHN0YWdlIHdpdGggYSBsb2NrbGVzcyBtdWx0aSBwcm9kdWNl ci1zaW5nbGUgY29uc3VtZXIgcmluZyBpbiBmcm9udCBvZiB0aGUgTklDIFRYIHF1ZXVlLCBvciBp dCBjb3VsZCBiZSBhIGNyaXRpY2FsIHNlY3Rpb24gcHJldmVudGluZyBvbmUgdGhyZWFkIGZyb20g d3JpdGluZyB3aGlsZSBhbm90aGVyIHRocmVhZCBpcyB3cml0aW5nLg0KDQpFaXRoZXIgd2F5LCBt dWx0aXBsZSB0aHJlYWRzIHdyaXRpbmcgc2ltdWx0YW5lb3VzbHkgaW50byB0aGUgc2FtZSBOSUMg VFggcXVldWUgaXMgbm90IHBvc3NpYmxlIHdpdGggaGFyZHdhcmUgTklDIGRyaXZlcnMsIGJ1dCBt dXN0IGJlIGltcGxlbWVudGVkIGluIHRoZSBhcHBsaWNhdGlvbi4gU28gd2h5IHdvdWxkIGFueW9u ZSBleHBlY3QgaXQgdG8gYmUgcG9zc2libGUgZm9yIHZpcnR1YWwgTklDIGRyaXZlcnMgKHN1Y2gg YXMgdGhlIHZob3N0KT8NCg0KDQo+IFRoYW5rcywNCj4gSmlheXUNCj4gDQo+ID4NCj4gPiBJJ2Qg dm90ZSBmb3IgdGhhdC4NCj4gPg0KPiA+ID4NCj4gPiA+IFRoYW5rcywNCj4gPiA+IE1heGltZQ0K PiA+ID4NCj4gPiA+PiBJbiBhYnNlbmNlIG9mIGNvbnRpbnVlZCB0ZWNobmljYWwgZGlzY3Vzc2lv biBoZXJlLCBJIHN1Z2dlc3QgU3VuaWwNCj4gPiA+PiBhbmQgSWFuIGNvbGxhYm9yYXRlIG9uIGdl dHRpbmcgdGhlIE9WUyBEZWZlci13b3JrIGFwcHJvYWNoLCBhbmQNCj4gRFBESw0KPiA+ID4+IFZI b3N0IEFzeW5jIHBhdGNoc2V0cyBhdmFpbGFibGUgb24gR2l0SHViIGZvciBlYXNpZXIgY29uc3Vt cHRpb24NCj4gYW5kDQo+ID4gZnV0dXJlIGRldmVsb3BtZW50IChhcyBzdWdnZXN0ZWQgaW4gc2xp ZGVzIHByZXNlbnRlZCBvbiBsYXN0IGNhbGwpLg0KPiA+ID4+DQo+ID4gPj4gUmVnYXJkcywgLUhh cnJ5DQo+ID4gPj4NCj4gPiA+PiBObyBpbmxpbmUtcmVwbGllcyBiZWxvdzsgbWVzc2FnZSBqdXN0 IGZvciBjb250ZXh0Lg0KPiA+ID4+DQo+ID4gPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gPj4+IEZyb206IFZhbiBIYWFyZW4sIEhhcnJ5DQo+ID4gPj4+IFNlbnQ6IFdlZG5lc2Rh eSwgTWFyY2ggMzAsIDIwMjIgMTA6MDIgQU0NCj4gPiA+Pj4gVG86IE1vcnRlbiBCcsO4cnVwIDxt YkBzbWFydHNoYXJlc3lzdGVtcy5jb20+OyBSaWNoYXJkc29uLCBCcnVjZQ0KPiA+ID4+PiA8YnJ1 Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+ID4gPj4+IENjOiBNYXhpbWUgQ29xdWVsaW4gPG1h eGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPjsgUGFpIEcsIFN1bmlsDQo+ID4gPj4+IDxTdW5pbC5Q YWkuR0BpbnRlbC5jb20+OyBTdG9rZXMsIElhbiA8aWFuLnN0b2tlc0BpbnRlbC5jb20+OyBIdSwN Cj4gPiA+Pj4gSmlheXUgPEppYXl1Lkh1QGludGVsLmNvbT47IEZlcnJpdGVyLCBDaWFuDQo+ID4g Pj4+IDxDaWFuLkZlcnJpdGVyQGludGVsLmNvbT47IElseWEgTWF4aW1ldHMgPGkubWF4aW1ldHNA b3ZuLm9yZz47DQo+ID4gPj4+IG92cy1kZXZAb3BlbnZzd2l0Y2gub3JnOyBkZXZAZHBkay5vcmc7 IE1jbmFtYXJhLCBKb2huDQo+ID4gPj4+IDxqb2huLm1jbmFtYXJhQGludGVsLmNvbT47IE8nRHJp c2NvbGwsIFRpbQ0KPiA+ID4+PiA8dGltLm9kcmlzY29sbEBpbnRlbC5jb20+OyBGaW5uLCBFbW1h IDxFbW1hLkZpbm5AaW50ZWwuY29tPg0KPiA+ID4+PiBTdWJqZWN0OiBSRTogT1ZTIERQREsgRE1B LURldiBsaWJyYXJ5L0Rlc2lnbiBEaXNjdXNzaW9uDQo+ID4gPj4+DQo+ID4gPj4+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4+Pj4gRnJvbTogTW9ydGVuIEJyw7hydXAgPG1iQHNt YXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gPiA+Pj4+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDI5LCAy MDIyIDg6NTkgUE0NCj4gPiA+Pj4+IFRvOiBWYW4gSGFhcmVuLCBIYXJyeSA8aGFycnkudmFuLmhh YXJlbkBpbnRlbC5jb20+OyBSaWNoYXJkc29uLA0KPiA+ID4+Pj4gQnJ1Y2UgPGJydWNlLnJpY2hh cmRzb25AaW50ZWwuY29tPg0KPiA+ID4+Pj4gQ2M6IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNv cXVlbGluQHJlZGhhdC5jb20+OyBQYWkgRywgU3VuaWwNCj4gPiA+Pj4+IDxzdW5pbC5wYWkuZ0Bp bnRlbC5jb20+OyBTdG9rZXMsIElhbiA8aWFuLnN0b2tlc0BpbnRlbC5jb20+OyBIdSwNCj4gPiA+ Pj4+IEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+OyBGZXJyaXRlciwgQ2lhbg0KPiA+ID4+Pj4g PGNpYW4uZmVycml0ZXJAaW50ZWwuY29tPjsgSWx5YSBNYXhpbWV0cyA8aS5tYXhpbWV0c0Bvdm4u b3JnPjsNCj4gPiA+Pj4+IG92cy1kZXZAb3BlbnZzd2l0Y2gub3JnOyBkZXZAZHBkay5vcmc7IE1j bmFtYXJhLA0KPiA+ID4+PiBKb2huDQo+ID4gPj4+PiA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+ OyBPJ0RyaXNjb2xsLCBUaW0NCj4gPiA+Pj4+IDx0aW0ub2RyaXNjb2xsQGludGVsLmNvbT47IEZp bm4sIEVtbWEgPGVtbWEuZmlubkBpbnRlbC5jb20+DQo+ID4gPj4+PiBTdWJqZWN0OiBSRTogT1ZT IERQREsgRE1BLURldiBsaWJyYXJ5L0Rlc2lnbiBEaXNjdXNzaW9uDQo+ID4gPj4+Pg0KPiA+ID4+ Pj4+IEZyb206IFZhbiBIYWFyZW4sIEhhcnJ5IFttYWlsdG86aGFycnkudmFuLmhhYXJlbkBpbnRl bC5jb21dDQo+ID4gPj4+Pj4gU2VudDogVHVlc2RheSwgMjkgTWFyY2ggMjAyMiAxOS40Ng0KPiA+ ID4+Pj4+DQo+ID4gPj4+Pj4+IEZyb206IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lz dGVtcy5jb20+DQo+ID4gPj4+Pj4+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDI5LCAyMDIyIDY6MTQg UE0NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4+IEZyb206IEJydWNlIFJpY2hhcmRzb24gW21haWx0 bzpicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbV0NCj4gPiA+Pj4+Pj4+IFNlbnQ6IFR1ZXNkYXks IDI5IE1hcmNoIDIwMjIgMTkuMDMNCj4gPiA+Pj4+Pj4+DQo+ID4gPj4+Pj4+PiBPbiBUdWUsIE1h ciAyOSwgMjAyMiBhdCAwNjo0NToxOVBNICswMjAwLCBNb3J0ZW4gQnLDuHJ1cA0KPiB3cm90ZToN Cj4gPiA+Pj4+Pj4+Pj4gRnJvbTogTWF4aW1lIENvcXVlbGluIFttYWlsdG86bWF4aW1lLmNvcXVl bGluQHJlZGhhdC5jb21dDQo+ID4gPj4+Pj4+Pj4+IFNlbnQ6IFR1ZXNkYXksIDI5IE1hcmNoIDIw MjIgMTguMjQNCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4gSGkgTW9ydGVuLA0KPiA+ID4+ Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+PiBPbiAzLzI5LzIyIDE2OjQ0LCBNb3J0ZW4gQnLDuHJ1cCB3 cm90ZToNCj4gPiA+Pj4+Pj4+Pj4+PiBGcm9tOiBWYW4gSGFhcmVuLCBIYXJyeQ0KPiBbbWFpbHRv OmhhcnJ5LnZhbi5oYWFyZW5AaW50ZWwuY29tXQ0KPiA+ID4+Pj4+Pj4+Pj4+IFNlbnQ6IFR1ZXNk YXksIDI5IE1hcmNoIDIwMjIgMTUuMDINCj4gPiA+Pj4+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+Pj4+ PiBGcm9tOiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiA+ID4+ Pj4+Pj4+Pj4+PiBTZW50OiBUdWVzZGF5LCBNYXJjaCAyOSwgMjAyMiAxOjUxIFBNDQo+ID4gPj4+ Pj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+Pj4+IEhhdmluZyB0aG91Z2h0IG1vcmUgYWJvdXQgaXQs IEkgdGhpbmsgdGhhdCBhIGNvbXBsZXRlbHkNCj4gPiA+Pj4+Pj4+IGRpZmZlcmVudA0KPiA+ID4+ Pj4+Pj4+PiBhcmNoaXRlY3R1cmFsIGFwcHJvYWNoIGlzIHJlcXVpcmVkOg0KPiA+ID4+Pj4+Pj4+ Pj4+Pg0KPiA+ID4+Pj4+Pj4+Pj4+PiBNYW55IG9mIHRoZSBEUERLIEV0aGVybmV0IFBNRHMgaW1w bGVtZW50IGEgdmFyaWV0eSBvZiBSWA0KPiA+ID4+Pj4+IGFuZCBUWA0KPiA+ID4+Pj4+Pj4+PiBw YWNrZXQgYnVyc3QgZnVuY3Rpb25zLCBlYWNoIG9wdGltaXplZCBmb3IgZGlmZmVyZW50IENQVQ0K PiA+ID4+Pj4+Pj4+PiB2ZWN0b3IgaW5zdHJ1Y3Rpb24gc2V0cy4gVGhlIGF2YWlsYWJpbGl0eSBv ZiBhIERNQSBlbmdpbmUNCj4gPiA+Pj4+Pj4+Pj4gc2hvdWxkIGJlDQo+ID4gPj4+Pj4+PiB0cmVh dGVkDQo+ID4gPj4+Pj4+Pj4+IHRoZSBzYW1lIHdheS4gU28gSSBzdWdnZXN0IHRoYXQgUE1EcyBj b3B5aW5nIHBhY2tldA0KPiBjb250ZW50cywNCj4gPiA+Pj4+PiBlLmcuDQo+ID4gPj4+Pj4+Pj4+ IG1lbWlmLCBwY2FwLCB2bXhuZXQzLCBzaG91bGQgaW1wbGVtZW50IERNQSBvcHRpbWl6ZWQgUlgg YW5kDQo+ID4gVFgNCj4gPiA+Pj4+Pj4+IHBhY2tldA0KPiA+ID4+Pj4+Pj4+PiBidXJzdCBmdW5j dGlvbnMuDQo+ID4gPj4+Pj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+Pj4+IFNpbWlsYXJseSBmb3Ig dGhlIERQREsgdmhvc3QgbGlicmFyeS4NCj4gPiA+Pj4+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4+ Pj4gSW4gc3VjaCBhbiBhcmNoaXRlY3R1cmUsIGl0IHdvdWxkIGJlIHRoZSBhcHBsaWNhdGlvbidz DQo+IGpvYg0KPiA+ID4+Pj4+IHRvDQo+ID4gPj4+Pj4+Pj4+IGFsbG9jYXRlIERNQSBjaGFubmVs cyBhbmQgYXNzaWduIHRoZW0gdG8gdGhlIHNwZWNpZmljIFBNRHMNCj4gPiA+Pj4+Pj4+Pj4gdGhh dA0KPiA+ID4+Pj4+Pj4gc2hvdWxkDQo+ID4gPj4+Pj4+Pj4+IHVzZSB0aGVtLiBCdXQgdGhlIGFj dHVhbCB1c2Ugb2YgdGhlIERNQSBjaGFubmVscyB3b3VsZCBtb3ZlDQo+ID4gPj4+Pj4gZG93bg0K PiA+ID4+Pj4+Pj4gYmVsb3cNCj4gPiA+Pj4+Pj4+Pj4gdGhlIGFwcGxpY2F0aW9uIGFuZCBpbnRv IHRoZSBEUERLIFBNRHMgYW5kIGxpYnJhcmllcy4NCj4gPiA+Pj4+Pj4+Pj4+Pj4NCj4gPiA+Pj4+ Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4+Pj4gTWVkIHZlbmxpZyBoaWxzZW4gLyBLaW5kIHJlZ2Fy ZHMsIC1Nb3J0ZW4gQnLDuHJ1cA0KPiA+ID4+Pj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+Pj4gSGkg TW9ydGVuLA0KPiA+ID4+Pj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+Pj4gVGhhdCdzICpleGFjdGx5 KiBob3cgdGhpcyBhcmNoaXRlY3R1cmUgaXMgZGVzaWduZWQgJg0KPiA+ID4+Pj4+Pj4gaW1wbGVt ZW50ZWQuDQo+ID4gPj4+Pj4+Pj4+Pj4gMS7CoMKgwqAgVGhlIERNQSBjb25maWd1cmF0aW9uIGFu ZCBpbml0aWFsaXphdGlvbiBpcyB1cCB0bw0KPiB0aGUNCj4gPiA+Pj4+Pj4+IGFwcGxpY2F0aW9u DQo+ID4gPj4+Pj4+Pj4+IChPVlMpLg0KPiA+ID4+Pj4+Pj4+Pj4+IDIuwqDCoMKgIFRoZSBWSG9z dCBsaWJyYXJ5IGlzIHBhc3NlZCB0aGUgRE1BLWRldiBJRCwgYW5kIGl0cw0KPiA+ID4+Pj4+IG5l dw0KPiA+ID4+Pj4+Pj4gYXN5bmMNCj4gPiA+Pj4+Pj4+Pj4gcngvdHggQVBJcywgYW5kIHVzZXMg dGhlIERNQSBkZXZpY2UgdG8gYWNjZWxlcmF0ZSB0aGUgY29weS4NCj4gPiA+Pj4+Pj4+Pj4+Pg0K PiA+ID4+Pj4+Pj4+Pj4+IExvb2tpbmcgZm9yd2FyZCB0byB0YWxraW5nIG9uIHRoZSBjYWxsIHRo YXQganVzdCBzdGFydGVkLg0KPiA+ID4+Pj4+Pj4gUmVnYXJkcywgLQ0KPiA+ID4+Pj4+Pj4+PiBI YXJyeQ0KPiA+ID4+Pj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+Pj4gT0ss IHRoYW5rcyAtIGFzIEkgc2FpZCBvbiB0aGUgY2FsbCwgSSBoYXZlbid0IGxvb2tlZCBhdA0KPiB0 aGUNCj4gPiA+Pj4+Pj4+IHBhdGNoZXMuDQo+ID4gPj4+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+Pj4g VGhlbiwgSSBzdXBwb3NlIHRoYXQgdGhlIFRYIGNvbXBsZXRpb25zIGNhbiBiZSBoYW5kbGVkIGlu DQo+IHRoZQ0KPiA+ID4+Pj4+IFRYDQo+ID4gPj4+Pj4+Pj4+IGZ1bmN0aW9uLCBhbmQgdGhlIFJY IGNvbXBsZXRpb25zIGNhbiBiZSBoYW5kbGVkIGluIHRoZSBSWA0KPiA+ID4+Pj4+IGZ1bmN0aW9u LA0KPiA+ID4+Pj4+Pj4+PiBqdXN0IGxpa2UgdGhlIEV0aGRldiBQTURzIGhhbmRsZSBwYWNrZXQg ZGVzY3JpcHRvcnM6DQo+ID4gPj4+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+Pj4gVFhfQnVyc3QodHhf cGFja2V0X2FycmF5KToNCj4gPiA+Pj4+Pj4+Pj4+IDEuwqDCoMKgIENsZWFuIHVwIGRlc2NyaXB0 b3JzIHByb2Nlc3NlZCBieSB0aGUgTklDIGNoaXAuIC0tPg0KPiA+ID4+Pj4+IFByb2Nlc3MNCj4g PiA+Pj4+Pj4+IFRYDQo+ID4gPj4+Pj4+Pj4+IERNQSBjaGFubmVsIGNvbXBsZXRpb25zLiAoRWZm ZWN0aXZlbHksIHRoZSAybmQgcGlwZWxpbmUNCj4gPiA+Pj4+Pj4+Pj4gc3RhZ2UuKQ0KPiA+ID4+ Pj4+Pj4+Pj4gMi7CoMKgwqAgUGFzcyBvbiB0aGUgdHhfcGFja2V0X2FycmF5IHRvIHRoZSBOSUMg Y2hpcA0KPiA+ID4+Pj4+IGRlc2NyaXB0b3JzLiAtLQ0KPiA+ID4+Pj4+Pj4+IFBhc3MNCj4gPiA+ Pj4+Pj4+Pj4gb24gdGhlIHR4X3BhY2tldF9hcnJheSB0byB0aGUgVFggRE1BIGNoYW5uZWwuIChF ZmZlY3RpdmVseSwNCj4gPiA+Pj4+Pj4+Pj4gdGhlDQo+ID4gPj4+Pj4gMXN0DQo+ID4gPj4+Pj4+ Pj4+IHBpcGVsaW5lIHN0YWdlLikNCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4gVGhlIHBy b2JsZW0gaXMgVHggZnVuY3Rpb24gbWlnaHQgbm90IGJlIGNhbGxlZCBhZ2Fpbiwgc28NCj4gPiA+ Pj4+PiBlbnF1ZXVlZA0KPiA+ID4+Pj4+Pj4+PiBwYWNrZXRzIGluIDIuIG1heSBuZXZlciBiZSBj b21wbGV0ZWQgZnJvbSBhIFZpcnRpbyBwb2ludCBvZg0KPiA+ID4+Pj4+IHZpZXcuDQo+ID4gPj4+ Pj4+PiBJT1csDQo+ID4gPj4+Pj4+Pj4+IHRoZSBwYWNrZXRzIHdpbGwgYmUgY29waWVkIHRvIHRo ZSBWaXJ0aW8gZGVzY3JpcHRvcnMNCj4gYnVmZmVycywNCj4gPiA+Pj4+PiBidXQNCj4gPiA+Pj4+ Pj4+IHRoZQ0KPiA+ID4+Pj4+Pj4+PiBkZXNjcmlwdG9ycyB3aWxsIG5vdCBiZSBtYWRlIGF2YWls YWJsZSB0byB0aGUgVmlydGlvDQo+IGRyaXZlci4NCj4gPiA+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+ IEluIHRoYXQgY2FzZSwgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGNhbGwgVFhfQnVyc3QoKQ0K PiA+ID4+Pj4+IHBlcmlvZGljYWxseQ0KPiA+ID4+Pj4+Pj4gd2l0aCBhbiBlbXB0eSBhcnJheSwg Zm9yIGNvbXBsZXRpb24gcHVycG9zZXMuDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+PiBUaGlzIGlzIHdo YXQgdGhlICJkZWZlciB3b3JrIiBkb2VzIGF0IHRoZSBPVlMgdGhyZWFkLWxldmVsLCBidXQNCj4g PiA+Pj4+PiBpbnN0ZWFkIG9mICJicnV0ZS1mb3JjaW5nIiBhbmQgKmFsd2F5cyogbWFraW5nIHRo ZSBjYWxsLCB0aGUNCj4gZGVmZXINCj4gPiA+Pj4+PiB3b3JrIGNvbmNlcHQgdHJhY2tzDQo+ID4g Pj4+Pj4gKndoZW4qIHRoZXJlIGlzIG91dHN0YW5kaW5nIHdvcmsgKERNQSBjb3BpZXMpIHRvIGJl IGNvbXBsZXRlZA0KPiA+ID4+Pj4+ICgiZGVmZXJyZWQgd29yayIpIGFuZCBjYWxscyB0aGUgZ2Vu ZXJpYyBjb21wbGV0aW9uIGZ1bmN0aW9uIGF0DQo+ID4gPj4+Pj4gdGhhdCBwb2ludC4NCj4gPiA+ Pj4+Pg0KPiA+ID4+Pj4+IFNvICJkZWZlciB3b3JrIiBpcyBnZW5lcmljIGluZnJhc3RydWN0dXJl IGF0IHRoZSBPVlMgdGhyZWFkDQo+IGxldmVsDQo+ID4gPj4+Pj4gdG8gaGFuZGxlIHdvcmsgdGhh dCBuZWVkcyB0byBiZSBkb25lICJsYXRlciIsIGUuZy4gRE1BDQo+IGNvbXBsZXRpb24NCj4gPiA+ Pj4+PiBoYW5kbGluZy4NCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4+Pj4gT3Igc29t ZSBzb3J0IG9mIFRYX0tlZXBhbGl2ZSgpIGZ1bmN0aW9uIGNhbiBiZSBhZGRlZCB0byB0aGUNCj4g PiA+Pj4+Pj4+PiBEUERLDQo+ID4gPj4+Pj4+PiBsaWJyYXJ5LCB0byBoYW5kbGUgRE1BIGNvbXBs ZXRpb24uIEl0IG1pZ2h0IGV2ZW4gaGFuZGxlDQo+IG11bHRpcGxlDQo+ID4gPj4+Pj4gRE1BDQo+ ID4gPj4+Pj4+PiBjaGFubmVscywgaWYgY29udmVuaWVudCAtIGFuZCBpZiBwb3NzaWJsZSB3aXRo b3V0IGxvY2tpbmcgb3INCj4gPiA+Pj4+Pj4+IG90aGVyIHdlaXJkIGNvbXBsZXhpdHkuDQo+ID4g Pj4+Pj4NCj4gPiA+Pj4+PiBUaGF0J3MgZXhhY3RseSBob3cgaXQgaXMgZG9uZSwgdGhlIFZIb3N0 IGxpYnJhcnkgaGFzIGEgbmV3IEFQSQ0KPiA+ID4+Pj4+IGFkZGVkLCB3aGljaCBhbGxvd3MgZm9y IGhhbmRsaW5nIGNvbXBsZXRpb25zLiBBbmQgaW4gdGhlDQo+ICJOZXRkZXYNCj4gPiA+Pj4+PiBs YXllciIgKH5PVlMgZXRoZGV2DQo+ID4gPj4+Pj4gYWJzdHJhY3Rpb24pDQo+ID4gPj4+Pj4gd2Ug YWRkIGEgZnVuY3Rpb24gdG8gYWxsb3cgdGhlIE9WUyB0aHJlYWQgdG8gZG8gdGhvc2UNCj4gY29t cGxldGlvbnMNCj4gPiA+Pj4+PiBpbiBhIG5ldyBOZXRkZXYtYWJzdHJhY3Rpb24gQVBJIGNhbGxl ZCAiYXN5bmNfcHJvY2VzcyIgd2hlcmUNCj4gdGhlDQo+ID4gPj4+Pj4gY29tcGxldGlvbnMgY2Fu IGJlIGNoZWNrZWQuDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+PiBUaGUgb25seSBtZXRob2QgdG8gYWJz dHJhY3QgdGhlbSBpcyB0byAiaGlkZSIgdGhlbSBzb21ld2hlcmUNCj4gdGhhdA0KPiA+ID4+Pj4+ IHdpbGwgYWx3YXlzIGJlIHBvbGxlZCwgZS5nLiBhbiBldGhkZXYgcG9ydCdzIFJYIGZ1bmN0aW9u LsKgIEJvdGgNCj4gVjMNCj4gPiA+Pj4+PiBhbmQgVjQgYXBwcm9hY2hlcyB1c2UgdGhpcyBtZXRo b2QuDQo+ID4gPj4+Pj4gVGhpcyBhbGxvd3MgImNvbXBsZXRpb25zIiB0byBiZSB0cmFuc3BhcmVu dCB0byB0aGUgYXBwLCBhdCB0aGUNCj4gPiA+Pj4+PiB0cmFkZW9mZiB0byBoYXZpbmcgYmFkIHNl cGFyYXRpb27CoCBvZiBjb25jZXJucyBhcyBSeCBhbmQgVHggYXJlDQo+ID4gPj4+Pj4gbm93IHRp ZWQtdG9nZXRoZXIuDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+PiBUaGUgcG9pbnQgaXMsIHRoZSBBcHBs aWNhdGlvbiBsYXllciBtdXN0ICpzb21laG93ICogaGFuZGxlIG9mDQo+ID4gPj4+Pj4gY29tcGxl dGlvbnMuDQo+ID4gPj4+Pj4gU28gZnVuZGFtZW50YWxseSB0aGVyZSBhcmUgMiBvcHRpb25zIGZv ciB0aGUgQXBwbGljYXRpb24gbGV2ZWw6DQo+ID4gPj4+Pj4NCj4gPiA+Pj4+PiBBKSBNYWtlIHRo ZSBhcHBsaWNhdGlvbiBwZXJpb2RpY2FsbHkgY2FsbCBhICJoYW5kbGUNCj4gY29tcGxldGlvbnMi DQo+ID4gPj4+Pj4gZnVuY3Rpb24NCj4gPiA+Pj4+PiDCoMKgwqDCoEExKSBEZWZlciB3b3JrLCBj YWxsIHdoZW4gbmVlZGVkLCBhbmQgdHJhY2sgIm5lZWRlZCIgYXQgYXBwDQo+ID4gPj4+Pj4gbGF5 ZXIsIGFuZCBjYWxsaW5nIGludG8gdmhvc3QgdHhxIGNvbXBsZXRlIGFzIHJlcXVpcmVkLg0KPiA+ ID4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRWxlZ2FudCBpbiB0aGF0ICJubyB3b3JrIiBt ZWFucyAibm8gY3ljbGVzIHNwZW50Ig0KPiBvbg0KPiA+ID4+Pj4+IGNoZWNraW5nIERNQSBjb21w bGV0aW9ucy4NCj4gPiA+Pj4+PiDCoMKgwqDCoEEyKSBCcnV0ZS1mb3JjZS1hbHdheXMtY2FsbCwg YW5kIHBheSBzb21lIG92ZXJoZWFkIHdoZW4gbm90DQo+ID4gPj4+Pj4gcmVxdWlyZWQuDQo+ID4g Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDeWNsZS1jb3N0IGluICJubyB3b3JrIiBzY2Vu YXJpb3MuIERlcGVuZGluZyBvbiAjDQo+IG9mDQo+ID4gPj4+Pj4gdmhvc3QgcXVldWVzLCB0aGlz IGFkZHMgdXAgYXMgcG9sbGluZyByZXF1aXJlZCAqcGVyIHZob3N0IHR4cSouDQo+ID4gPj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBbHNvIG5vdGUgdGhhdCAiY2hlY2tpbmcgRE1BIGNvbXBs ZXRpb25zIiBtZWFucw0KPiB0YWtpbmcNCj4gPiA+Pj4+PiBhIHZpcnRxLWxvY2ssIHNvIHRoaXMg ImJydXRlLWZvcmNlIiBjYW4gbmVlZGxlc3NseSBpbmNyZWFzZQ0KPiA+ID4+Pj4+IHgtdGhyZWFk IGNvbnRlbnRpb24hDQo+ID4gPj4+Pg0KPiA+ID4+Pj4gQSBzaWRlIG5vdGU6IEkgZG9uJ3Qgc2Vl IHdoeSBsb2NraW5nIGlzIHJlcXVpcmVkIHRvIHRlc3QgZm9yIERNQQ0KPiA+IGNvbXBsZXRpb25z Lg0KPiA+ID4+Pj4gcnRlX2RtYV92Y2hhbl9zdGF0dXMoKSBpcyBsb2NrbGVzcywgZS5nLjoNCj4g PiA+Pj4+DQo+ID4gPj4+DQo+IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2RwZGsvbGF0ZXN0 L3NvdXJjZS9kcml2ZXJzL2RtYS9pb2F0L2lvYXRfDQo+ID4gPj4+IGRtYWRldi5jI0wNCj4gPiA+ Pj4gNTYNCj4gPiA+Pj4+IDANCj4gPiA+Pj4NCj4gPiA+Pj4gQ29ycmVjdCwgRE1BLWRldiBpcyAi ZXRoZGV2IGxpa2UiOyBlYWNoIERNQS1pZCBjYW4gYmUgdXNlZCBpbiBhDQo+ID4gPj4+IGxvY2tm cmVlIG1hbm5lciBmcm9tIGEgc2luZ2xlIHRocmVhZC4NCj4gPiA+Pj4NCj4gPiA+Pj4gVGhlIGxv Y2tzIEkgcmVmZXIgdG8gYXJlIGF0IHRoZSBPVlMtbmV0ZGV2IGxldmVsLCBhcyB2aXJ0cSdzIGFy ZQ0KPiA+ID4+PiBzaGFyZWQgYWNyb3NzIE9WUydzIGRhdGFwbGFuZSB0aHJlYWRzLg0KPiA+ID4+ PiBTbyB0aGUgIk0gdG8gTiIgY29tZXMgZnJvbSBNIGRhdGFwbGFuZSB0aHJlYWRzIHRvIE4gdmly dHFzLCBoZW5jZQ0KPiA+ID4+PiByZXF1aXJpbmcgc29tZSBsb2NraW5nLg0KPiA+ID4+Pg0KPiA+ ID4+Pg0KPiA+ID4+Pj4+IEIpIEhpZGUgY29tcGxldGlvbnMgYW5kIGxpdmUgd2l0aCB0aGUgY29t cGxleGl0eS9hcmNoaXRlY3R1cmFsDQo+ID4gPj4+Pj4gc2FjcmlmaWNlIG9mIG1peGVkLVJ4VHgu DQo+ID4gPj4+Pj4gwqDCoMKgwqBWYXJpb3VzIGRvd25zaWRlcyBoZXJlIGluIG15IG9waW5pb24s IHNlZSB0aGUgc2xpZGUgZGVjaw0KPiA+ID4+Pj4+IHByZXNlbnRlZCBlYXJsaWVyIHRvZGF5IGZv ciBhIHN1bW1hcnkuDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+PiBJbiBteSBvcGluaW9uLCBBMSBpcyB0 aGUgbW9zdCBlbGVnYW50IHNvbHV0aW9uLCBhcyBpdCBoYXMgYQ0KPiBjbGVhbg0KPiA+ID4+Pj4+ IHNlcGFyYXRpb24gb2YgY29uY2VybnMsIGRvZXMgbm90wqAgY2F1c2UgYXZvaWRhYmxlIGNvbnRl bnRpb24gb24NCj4gPiA+Pj4+PiB2aXJ0cSBsb2NrcywgYW5kIHNwZW5kcyBubyBjeWNsZXMgd2hl biB0aGVyZSBpcyBubyBjb21wbGV0aW9uDQo+IHdvcmsNCj4gPiA+Pj4+PiB0byBkby4NCj4gPiA+ Pj4+Pg0KPiA+ID4+Pj4NCj4gPiA+Pj4+IFRoYW5rIHlvdSBmb3IgZWxhYm9yYXRpbmcsIEhhcnJ5 Lg0KPiA+ID4+Pg0KPiA+ID4+PiBUaGFua3MgZm9yIHBhcnQtdGFraW5nIGluIHRoZSBkaXNjdXNz aW9uICYgcHJvdmlkaW5nIHlvdXINCj4gaW5zaWdodCENCj4gPiA+Pj4NCj4gPiA+Pj4+IEkgc3Ry b25nbHkgb3Bwb3NlIGFnYWluc3QgaGlkaW5nIGFueSBwYXJ0IG9mIFRYIHByb2Nlc3NpbmcgaW4g YW4NCj4gUlgNCj4gPiA+Pj4+IGZ1bmN0aW9uLiBJdA0KPiA+ID4+PiBpcyBqdXN0DQo+ID4gPj4+ PiB3cm9uZyBpbiBzbyBtYW55IHdheXMhDQo+ID4gPj4+Pg0KPiA+ID4+Pj4gSSBhZ3JlZSB0aGF0 IEExIGlzIHRoZSBtb3N0IGVsZWdhbnQgc29sdXRpb24uIEFuZCBiZWluZyB0aGUgbW9zdA0KPiA+ ID4+Pj4gZWxlZ2FudA0KPiA+ID4+PiBzb2x1dGlvbiwgaXQNCj4gPiA+Pj4+IGlzIHByb2JhYmx5 IGFsc28gdGhlIG1vc3QgZnV0dXJlIHByb29mIHNvbHV0aW9uLiA6LSkNCj4gPiA+Pj4NCj4gPiA+ Pj4gSSB0aGluayBzbyB0b28sIHllcy4NCj4gPiA+Pj4NCj4gPiA+Pj4+IEkgd291bGQgYWxzbyBs aWtlIHRvIHN0cmVzcyB0aGF0IERNQSBjb21wbGV0aW9uIGhhbmRsaW5nIGJlbG9uZ3MNCj4gaW4N Cj4gPiA+Pj4+IHRoZSBEUERLIGxpYnJhcnksIG5vdCBpbiB0aGUgYXBwbGljYXRpb24uIEFuZCB5 ZXMsIHRoZQ0KPiBhcHBsaWNhdGlvbg0KPiA+ID4+Pj4gd2lsbCBiZSByZXF1aXJlZCB0byBjYWxs DQo+ID4gPj4+IHNvbWUNCj4gPiA+Pj4+ICJoYW5kbGUgRE1BIGNvbXBsZXRpb25zIiBmdW5jdGlv biBpbiB0aGUgRFBESyBsaWJyYXJ5LiBCdXQgc2luY2UNCj4gPiA+Pj4+IHRoZQ0KPiA+ID4+PiBh cHBsaWNhdGlvbg0KPiA+ID4+Pj4gYWxyZWFkeSBrbm93cyB0aGF0IGl0IHVzZXMgRE1BLCB0aGUg YXBwbGljYXRpb24gc2hvdWxkIGFsc28ga25vdw0KPiA+ID4+Pj4gdGhhdCBpdCBuZWVkcw0KPiA+ ID4+PiB0bw0KPiA+ID4+Pj4gY2FsbCB0aGlzIGV4dHJhIGZ1bmN0aW9uIC0gc28gSSBjb25zaWRl ciB0aGlzIHJlcXVpcmVtZW50DQo+IHBlcmZlY3RseQ0KPiA+IGFjY2VwdGFibGUuDQo+ID4gPj4+ DQo+ID4gPj4+IEFncmVlIGhlcmUuDQo+ID4gPj4+DQo+ID4gPj4+PiBJIHByZWZlciBpZiB0aGUg RFBESyB2aG9zdCBsaWJyYXJ5IGNhbiBoaWRlIGl0cyBpbm5lciB3b3JraW5ncw0KPiBmcm9tDQo+ ID4gPj4+PiB0aGUNCj4gPiA+Pj4gYXBwbGljYXRpb24sDQo+ID4gPj4+PiBhbmQganVzdCBleHBv c2UgdGhlIGFkZGl0aW9uYWwgImhhbmRsZSBjb21wbGV0aW9ucyIgZnVuY3Rpb24uDQo+IFRoaXMN Cj4gPiA+Pj4+IGFsc28gbWVhbnMNCj4gPiA+Pj4gdGhhdA0KPiA+ID4+Pj4gdGhlIGlubmVyIHdv cmtpbmdzIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyAiZGVmZXIgd29yayIsIG9yIGJ5DQo+IHNvbWUN Cj4gPiA+Pj4+IG90aGVyIGFsZ29yaXRobS4gQW5kIGl0IGNhbiBiZSB0d2Vha2VkIGFuZCBvcHRp bWl6ZWQgbGF0ZXIuDQo+ID4gPj4+DQo+ID4gPj4+IFllcywgdGhlIGNob2ljZSBpbiBob3cgdG8g Y2FsbCB0aGUgaGFuZGxlX2NvbXBsZXRpb25zIGZ1bmN0aW9uIGlzDQo+ID4gPj4+IEFwcGxpY2F0 aW9uIGxheWVyLg0KPiA+ID4+PiBGb3IgT1ZTIHdlIGRlc2lnbmVkIERlZmVyIFdvcmssIFYzIGFu ZCBWNC4gQnV0IGl0IGlzIGFuIEFwcCBsZXZlbA0KPiA+ID4+PiBjaG9pY2UsIGFuZCBldmVyeSBh cHBsaWNhdGlvbiBpcyBmcmVlIHRvIGNob29zZSBpdHMgb3duIG1ldGhvZC4NCj4gPiA+Pj4NCj4g PiA+Pj4+IFRoaW5raW5nIGFib3V0IHRoZSBsb25nIHRlcm0gcGVyc3BlY3RpdmUsIHRoaXMgZGVz aWduIHBhdHRlcm4gaXMNCj4gPiA+Pj4+IGNvbW1vbiBmb3INCj4gPiA+Pj4gYm90aA0KPiA+ID4+ Pj4gdGhlIHZob3N0IGxpYnJhcnkgYW5kIG90aGVyIERQREsgbGlicmFyaWVzIHRoYXQgY291bGQg YmVuZWZpdA0KPiBmcm9tIERNQQ0KPiA+IChlLmcuDQo+ID4gPj4+PiB2bXhuZXQzIGFuZCBwY2Fw IFBNRHMpLCBzbyBpdCBjb3VsZCBiZSBhYnN0cmFjdGVkIGludG8gdGhlIERNQQ0KPiA+ID4+Pj4g bGlicmFyeSBvciBhIHNlcGFyYXRlIGxpYnJhcnkuIEJ1dCBmb3Igbm93LCB3ZSBzaG91bGQgZm9j dXMgb24NCj4gdGhlDQo+ID4gPj4+PiB2aG9zdCB1c2UgY2FzZSwgYW5kIGp1c3QNCj4gPiA+Pj4g a2VlcA0KPiA+ID4+Pj4gdGhlIGxvbmcgdGVybSByb2FkbWFwIGZvciB1c2luZyBETUEgaW4gbWlu ZC4NCj4gPiA+Pj4NCj4gPiA+Pj4gVG90YWxseSBhZ3JlZSB0byBrZWVwIGxvbmcgdGVybSByb2Fk bWFwIGluIG1pbmQ7IGJ1dCBJJ20gbm90IHN1cmUNCj4gd2UNCj4gPiA+Pj4gY2FuIHJlZmFjdG9y IGxvZ2ljIG91dCBvZiB2aG9zdC4gV2hlbiBETUEtY29tcGxldGlvbnMgYXJyaXZlLCB0aGUNCj4g PiA+Pj4gdmlydFEgbmVlZHMgdG8gYmUgdXBkYXRlZDsgdGhpcyBjYXVzZXMgYSB0aWdodCBjb3Vw bGluZyBiZXR3ZWVuDQo+IHRoZQ0KPiA+ID4+PiBETUEgY29tcGxldGlvbiBjb3VudCwgYW5kIHRo ZSB2aG9zdCBsaWJyYXJ5Lg0KPiA+ID4+Pg0KPiA+ID4+PiBBcyBJbHlhIHJhaXNlZCBvbiB0aGUg Y2FsbCB5ZXN0ZXJkYXksIHRoZXJlIGlzIGFuICJpbl9vcmRlciINCj4gPiA+Pj4gcmVxdWlyZW1l bnQgaW4gdGhlIHZob3N0IGxpYnJhcnksIHRoYXQgcGVyIHZpcnRxIHRoZSBwYWNrZXRzIGFyZQ0K PiA+ID4+PiBwcmVzZW50ZWQgdG8gdGhlIGd1ZXN0ICJpbiBvcmRlciIgb2YgZW5xdWV1ZS4NCj4g PiA+Pj4gKFRvIGJlIGNsZWFyLCAqbm90KiBvcmRlciBvZiBETUEtY29tcGxldGlvbiEgQXMgSmlh eXUgbWVudGlvbmVkLA0KPiB0aGUNCj4gPiA+Pj4gVmhvc3QgbGlicmFyeSBoYW5kbGVzIHRoaXMg dG9kYXkgYnkgcmUtb3JkZXJpbmcgdGhlIERNQQ0KPiA+ID4+PiBjb21wbGV0aW9ucy4pDQo+ID4g Pj4+DQo+ID4gPj4+DQo+ID4gPj4+PiBSZXBocmFzaW5nIHdoYXQgSSBzYWlkIG9uIHRoZSBjb25m ZXJlbmNlIGNhbGw6IFRoaXMgdmhvc3QgZGVzaWduDQo+ID4gPj4+PiB3aWxsIGJlY29tZQ0KPiA+ ID4+PiB0aGUNCj4gPiA+Pj4+IGNvbW1vbiBkZXNpZ24gcGF0dGVybiBmb3IgdXNpbmcgRE1BIGlu IERQREsgbGlicmFyaWVzLiBJZiB3ZSBnZXQNCj4gaXQNCj4gPiA+Pj4+IHdyb25nLCB3ZQ0KPiA+ ID4+PiBhcmUNCj4gPiA+Pj4+IHN0dWNrIHdpdGggaXQuDQo+ID4gPj4+DQo+ID4gPj4+IEFncmVl LCBhbmQgaWYgd2UgZ2V0IGl0IHJpZ2h0LCB0aGVuIHdlJ3JlIHN0dWNrIHdpdGggaXQgdG9vISA6 KQ0KPiA+ID4+Pg0KPiA+ID4+Pg0KPiA+ID4+Pj4+Pj4+IEhlcmUgaXMgYW5vdGhlciBpZGVhLCBp bnNwaXJlZCBieSBhIHByZXNlbnRhdGlvbiBhdCBvbmUgb2YNCj4gdGhlDQo+ID4gPj4+Pj4gRFBE Sw0KPiA+ID4+Pj4+Pj4gVXNlcnNwYWNlIGNvbmZlcmVuY2VzLiBJdCBtYXkgYmUgd2lzaGZ1bCB0 aGlua2luZywgdGhvdWdoOg0KPiA+ID4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4gQWRkIGFuIGFkZGl0 aW9uYWwgdHJhbnNhY3Rpb24gdG8gZWFjaCBETUEgYnVyc3Q7IGEgc3BlY2lhbA0KPiA+ID4+Pj4+ Pj4gdHJhbnNhY3Rpb24gY29udGFpbmluZyB0aGUgbWVtb3J5IHdyaXRlIG9wZXJhdGlvbiB0aGF0 IG1ha2VzDQo+IHRoZQ0KPiA+ID4+Pj4+Pj4gZGVzY3JpcHRvcnMgYXZhaWxhYmxlIHRvIHRoZSBW aXJ0aW8gZHJpdmVyLg0KPiA+ID4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4gVGhh dCBpcyBzb21ldGhpbmcgdGhhdCBjYW4gd29yaywgc28gbG9uZyBhcyB0aGUgcmVjZWl2ZXIgaXMN Cj4gPiA+Pj4+PiBvcGVyYXRpbmcNCj4gPiA+Pj4+Pj4+IGluDQo+ID4gPj4+Pj4+PiBwb2xsaW5n IG1vZGUuIEZvciBjYXNlcyB3aGVyZSB2aXJ0aW8gaW50ZXJydXB0cyBhcmUgZW5hYmxlZCwNCj4g eW91DQo+ID4gPj4+Pj4gc3RpbGwNCj4gPiA+Pj4+Pj4+IG5lZWQNCj4gPiA+Pj4+Pj4+IHRvIGRv IGEgd3JpdGUgdG8gdGhlIGV2ZW50ZmQgaW4gdGhlIGtlcm5lbCBpbiB2aG9zdCB0byBzaWduYWwN Cj4gPiA+Pj4+Pj4+IHRoZSB2aXJ0aW8gc2lkZS4gVGhhdCdzIG5vdCBzb21ldGhpbmcgdGhhdCBj YW4gYmUgb2ZmbG9hZGVkDQo+IHRvIGENCj4gPiA+Pj4+Pj4+IERNQSBlbmdpbmUsIHNhZGx5LCBz byB3ZSBzdGlsbCBuZWVkIHNvbWUgZm9ybSBvZiBjb21wbGV0aW9uDQo+ID4gPj4+Pj4+PiBjYWxs Lg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiBJIGd1ZXNzIHRoYXQgdmlydGlvIGludGVycnVwdHMg aXMgdGhlIG1vc3Qgd2lkZWx5IGRlcGxveWVkDQo+ID4gPj4+Pj4+IHNjZW5hcmlvLA0KPiA+ID4+ Pj4+IHNvIGxldCdzIGlnbm9yZQ0KPiA+ID4+Pj4+PiB0aGUgRE1BIFRYIGNvbXBsZXRpb24gdHJh bnNhY3Rpb24gZm9yIG5vdyAtIGFuZCBjYWxsIGl0IGENCj4gPiA+Pj4+Pj4gcG9zc2libGUNCj4g PiA+Pj4+PiBmdXR1cmUNCj4gPiA+Pj4+Pj4gb3B0aW1pemF0aW9uIGZvciBzcGVjaWZpYyB1c2Ug Y2FzZXMuIFNvIGl0IHNlZW1zIHRoYXQgc29tZQ0KPiBmb3JtDQo+ID4gPj4+Pj4+IG9mDQo+ID4g Pj4+Pj4gY29tcGxldGlvbiBjYWxsDQo+ID4gPj4+Pj4+IGlzIHVuYXZvaWRhYmxlLg0KPiA+ID4+ Pj4+DQo+ID4gPj4+Pj4gQWdyZWUgdG8gbGVhdmUgdGhpcyBhc2lkZSwgdGhlcmUgaXMgaW4gdGhl b3J5IGEgcG90ZW50aWFsDQo+ID4gPj4+Pj4gb3B0aW1pemF0aW9uLCBidXQgdW5saWtlbHkgdG8g YmUgb2YgbGFyZ2UgdmFsdWUuDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+DQo+ID4gPj4+PiBPbmUgbW9y ZSB0aGluZzogV2hlbiB1c2luZyBETUEgdG8gcGFzcyBvbiBwYWNrZXRzIGludG8gYSBndWVzdCwN Cj4gPiB0aGVyZSBjb3VsZA0KPiA+ID4+PiBiZSBhDQo+ID4gPj4+PiBkZWxheSBmcm9tIHRoZSBE TUEgY29tcGxldGVzIHVudGlsIHRoZSBndWVzdCBpcyBzaWduYWxlZC4gSXMNCj4gdGhlcmUgYW55 DQo+ID4gQ1BVDQo+ID4gPj4+IGNhY2hlDQo+ID4gPj4+PiBob3RuZXNzIHJlZ2FyZGluZyB0aGUg Z3Vlc3QncyBhY2Nlc3MgdG8gdGhlIHBhY2tldCBkYXRhIHRvDQo+IGNvbnNpZGVyIGhlcmU/DQo+ ID4gSS5lLiBpZg0KPiA+ID4+PiB3ZQ0KPiA+ID4+Pj4gd2FpdCBzaWduYWxpbmcgdGhlIGd1ZXN0 LCB0aGUgcGFja2V0IGRhdGEgbWF5IGdldCBjb2xkLg0KPiA+ID4+Pg0KPiA+ID4+PiBJbnRlcmVz dGluZyBxdWVzdGlvbjsgd2UgY2FuIGxpa2VseSBzcGF3biBhIG5ldyB0aHJlYWQgYXJvdW5kDQo+ IHRoaXMgdG9waWMhDQo+ID4gPj4+IEluIHNob3J0LCBpdCBkZXBlbmRzIG9uIGhvdy93aGVyZSB0 aGUgRE1BIGhhcmR3YXJlIHdyaXRlcyB0aGUNCj4gY29weS4NCj4gPiA+Pj4NCj4gPiA+Pj4gV2l0 aCB0ZWNobm9sb2dpZXMgbGlrZSBERElPLCB0aGUgImRlc3QiIHBhcnQgb2YgdGhlIGNvcHkgd2ls bCBiZQ0KPiBpbiBMTEMuDQo+ID4gVGhlIGNvcmUNCj4gPiA+Pj4gcmVhZGluZyB0aGUNCj4gPiA+ Pj4gZGVzdCBkYXRhIHdpbGwgYmVuZWZpdCBmcm9tIHRoZSBMTEMgbG9jYWxpdHkgKGluc3RlYWQg b2Ygc25vb3BpbmcNCj4gaXQgZnJvbSBhDQo+ID4gcmVtb3RlDQo+ID4gPj4+IGNvcmUncyBMMS9M MikuDQo+ID4gPj4+DQo+ID4gPj4+IERlbGF5cyBpbiBub3RpZnlpbmcgdGhlIGd1ZXN0IGNvdWxk IHJlc3VsdCBpbiBMTEMgY2FwYWNpdHkNCj4gZXZpY3Rpb24sIHllcy4NCj4gPiA+Pj4gVGhlIGFw cGxpY2F0aW9uIGxheWVyIGRlY2lkZXMgaG93IG9mdGVuL3Byb21wdGx5IHRvIGNoZWNrIGZvcg0K PiA+IGNvbXBsZXRpb25zLA0KPiA+ID4+PiBhbmQgbm90aWZ5IHRoZSBndWVzdCBvZiB0aGVtLiBD YWxsaW5nIHRoZSBmdW5jdGlvbiBtb3JlIG9mdGVuDQo+IHdpbGwgcmVzdWx0DQo+ID4gaW4gbGVz cw0KPiA+ID4+PiBkZWxheSBpbiB0aGF0IHBvcnRpb24gb2YgdGhlIHBpcGVsaW5lLg0KPiA+ID4+ Pg0KPiA+ID4+PiBPdmVyYWxsLCB0aGVyZSBhcmUgY2FjaGluZyBiZW5lZml0cyB3aXRoIERNQSBh Y2NlbGVyYXRpb24sIGFuZA0KPiB0aGUNCj4gPiBhcHBsaWNhdGlvbg0KPiA+ID4+PiBjYW4gY29u dHJvbA0KPiA+ID4+PiB0aGUgbGF0ZW5jeSBpbnRyb2R1Y2VkIGJldHdlZW4gZG1hLWNvbXBsZXRp b24gZG9uZSBpbiBIVywgYW5kDQo+IEd1ZXN0DQo+ID4gdnJpbmcNCj4gPiA+Pj4gdXBkYXRlLg0K PiA+ID4+DQo+ID4gPg0KDQo=