From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Waskiewicz Jr, Peter" Subject: Re: [RFC bpf-next 2/6] net: xdp: RX meta data infrastructure Date: Fri, 6 Jul 2018 23:49:55 +0000 Message-ID: <1530920986.7664.5.camel@intel.com> References: <20180627024615.17856-1-saeedm@mellanox.com> <20180627024615.17856-3-saeedm@mellanox.com> <20180703230137.hdoy2fujz3x4oeij@ast-mbp.dhcp.thefacebook.com> <13f973a9937834ae8c10bfcc7d90909e94c543f1.camel@mellanox.com> <65b964eb-9ee1-9fd8-d54a-9290377eb1e4@iogearbox.net> <20180705101800.3c5d6af0@cakuba.netronome.com> <20180706163041.xstyfednmgho23m3@ast-mbp.dhcp.thefacebook.com> <1530909863.4291.12.camel@intel.com> <20180706233819.hqpxvoht7ijb5zqe@ast-mbp.dhcp.thefacebook.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "Duyck, Alexander H" , "daniel@iogearbox.net" , "saeedm@mellanox.com" , "brouer@redhat.com" , "borkmann@iogearbox.net" , "tariqt@mellanox.com" , "john.fastabend@gmail.com" , "jakub.kicinski@netronome.com" , "netdev@vger.kernel.org" , "saeedm@dev.mellanox.co.il" To: "alexei.starovoitov@gmail.com" Return-path: Received: from mga09.intel.com ([134.134.136.24]:41571 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753905AbeGFXt6 (ORCPT ); Fri, 6 Jul 2018 19:49:58 -0400 In-Reply-To: <20180706233819.hqpxvoht7ijb5zqe@ast-mbp.dhcp.thefacebook.com> Content-Language: en-US Content-ID: <16EFDDF792AF5E48BFF2AF2D0B628EA4@intel.com> Sender: netdev-owner@vger.kernel.org List-ID: T24gRnJpLCAyMDE4LTA3LTA2IGF0IDE2OjM4IC0wNzAwLCBBbGV4ZWkgU3Rhcm92b2l0b3Ygd3Jv dGU6DQo+IE9uIEZyaSwgSnVsIDA2LCAyMDE4IGF0IDA4OjQ0OjI0UE0gKzAwMDAsIFdhc2tpZXdp Y3ogSnIsIFBldGVyIHdyb3RlOg0KPiA+IE9uIEZyaSwgMjAxOC0wNy0wNiBhdCAwOTozMCAtMDcw MCwgQWxleGVpIFN0YXJvdm9pdG92IHdyb3RlOg0KPiA+ID4gT24gVGh1LCBKdWwgMDUsIDIwMTgg YXQgMTA6MTg6MjNBTSAtMDcwMCwgSmFrdWIgS2ljaW5za2kgd3JvdGU6DQo+ID4gPiA+IA0KPiA+ ID4gPiBJJ20gYWxzbyBub3QgMTAwJSBvbiBib2FyZCB3aXRoIHRoZSBhcmd1bWVudCB0aGF0ICJm dXR1cmUiIEZXDQo+ID4gPiA+IGNhbg0KPiA+ID4gPiByZXNodWZmbGUgdGhpbmdzIHdoYXRldmVy IHdheSBpdCB3YW50cyB0by4gIElzIHRoZSBhc3N1bXB0aW9uDQo+ID4gPiA+IHRoYXQNCj4gPiA+ ID4gZnV0dXJlIEFTSUNzL0ZXIHdpbGwgYmUgZGVzaWduZWQgdG8gYWx3YXlzIHVzZSB0aGUgImJs ZXNzZWQiDQo+ID4gPiA+IEJURg0KPiA+ID4gPiBmb3JtYXQ/ICBPciB3aWxsIGl0IGJlIHJlY29u ZmlndXJhYmxlIGF0IHJ1bnRpbWU/DQo+ID4gPiANCj4gPiA+IGxldCdzIHRhYmxlIGNvbmZpZ3Vy YXRpb24gb2YgbWV0YWRhdGEgYXNpZGUgZm9yIGEgc2Vjb25kLg0KPiA+IA0KPiA+IEkgYWdyZWUg dGhhdCB0aGlzIHNob3VsZC9jb3VsZCBiZSBOSUMtc3BlY2lmaWMgYW5kIHNob3VsZG4ndCB3ZWln aA0KPiA+IG9uDQo+ID4gdGhlIG1ldGFkYXRhIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBkcml2ZXJz IGFuZCBYRFAgbGF5ZXIuDQo+ID4gDQo+ID4gPiBEZXNjcmliaW5nIG1ldGVkYXRhIGxheW91dCBp biBCVEYgYWxsb3dzIE5JQ3MgdG8gZGlzY2xvc2UNCj4gPiA+IGV2ZXJ5dGhpbmcNCj4gPiA+IE5J QyBoYXMgdG8gdXNlcnMgaW4gYSBzdGFuZGFyZCBhbmQgZ2VuZXJpYyB3YXkuDQo+ID4gPiBXaGV0 aGVyIGZpcm13YXJlIGlzIHJlY29uZmlndXJhYmxlIG9uIHRoZSBmbHkgb3IgaGFzIHRvIHJlZmxh c2hlZA0KPiA+ID4gYW5kIGh3IHBvd2VyY3ljbGVkIHRvIGhhdmUgbmV3IG1kIGxheW91dCAoYW5k IGNvcnJlc3BvbmRpbmcgQlRGDQo+ID4gPiBkZXNjcmlwdGlvbikNCj4gPiA+IGlzIGEgc2VwYXJh dGUgZGlzY3Vzc2lvbi4NCj4gPiA+IFNhZWVkJ3MgcHJvcG9zYWwgaW50cm9kdWNlcyB0aGUgY29u Y2VwdCBvZiAnb2Zmc2V0JyBpbnNpZGUNCj4gPiA+ICdzdHJ1Y3QNCj4gPiA+IHhkcF9tZF9pbmZv Jw0KPiA+ID4gdG8gcmVhY2ggJ2hhc2gnIHZhbHVlIGluIG1ldGFkYXRhLg0KPiA+ID4gRXNzZW50 aWFsbHkgaXQncyBhIHJ1bi10aW1lIHdheSB0byBhY2Nlc3MgJ2hhc2gnIGluc3RlYWQgb2YNCj4g PiA+IGJ1aWxkLQ0KPiA+ID4gdGltZS4NCj4gPiA+IFNvIGJwZiBwcm9ncmFtIHdvdWxkIG5lZWQg dHdvIGxvYWRzIHRvIHJlYWQgY3N1bSBvciBoYXNoIGZpZWxkDQo+ID4gPiBpbnN0ZWFkIG9mIG9u ZS4NCj4gPiA+IFdpdGggQlRGIHRoZSBsYXlvdXQgb2YgbWV0YWRhdGEgaXMga25vd24gdG8gdGhl IHByb2dyYW0gYXQgYnVpbGQtDQo+ID4gPiB0aW1lLg0KPiA+ID4gDQo+ID4gPiBUbyByZWl0ZXJh dGUgdGhlIHByb3Bvc2FsOg0KPiA+ID4gLSBkcml2ZXIrZmlybXdhcmUga2VlcCBsYXlvdXQgb2Yg dGhlIG1ldGFkYXRhIGluIEJURiBmb3JtYXQNCj4gPiA+IChlaXRoZXINCj4gPiA+IGluIHRoZSBk cml2ZXINCj4gPiA+ICAgb3IgZHJpdmVyIGNhbiByZWFkIGl0IGZyb20gZmlybXdhcmUpDQo+ID4g PiAtICdicGZ0b29sIHJlYWQtbWV0YWRhdGEtZGVzYyBldGgwID4gbWRfZGVzYy5oJyBjb21tYW5k IHdpbGwNCj4gPiA+IHF1ZXJ5DQo+ID4gPiB0aGUgZHJpdmVyIGFuZA0KPiA+ID4gICBnZW5lcmF0 ZSBub3JtYWwgQyBoZWFkZXIgZmlsZSBiYXNlZCBvbiBCVEYgaW4gdGhlIGdpdmVuIE5JQw0KPiA+ ID4gLSB1c2VyIGRvZXMgI2luY2x1ZGUgIm1kX2Rlc2MuaCIgYW5kIGJwZiBwcm9ncmFtIGNhbiBh Y2Nlc3MgbWQtDQo+ID4gPiA+Y3N1bQ0KPiA+ID4gb3IgbWQtPmhhc2gNCj4gPiA+ICAgd2l0aCBk aXJlY3Qgc2luZ2xlIGxvYWQgb3V0IG9mIG1ldGFkYXRhIGFyZWEgaW4gZnJvbnQgb2YgdGhlDQo+ ID4gPiBwYWNrZXQNCj4gPiANCj4gPiBUaGlzIHBpZWNlIGlzIHdoZXJlIEknZCBsaWtlIHRvIGRp c2N1c3MgbW9yZS4gIFdoZW4gd2UgZGlzY3Vzc2VkDQo+ID4gdGhpcw0KPiA+IGluIFNlb3VsLCB0 aGUgaW5pdGlhbCBwcm9wb3NhbCB3YXMgYSBzdGF0aWMgc3RydWN0IHRoYXQgd2UnZCB0cnkgdG8N Cj4gPiBoYW1tZXIgb3V0IGEgY29tbW9uIGxheW91dCBiZXR3ZWVuIHRoZSBpbnRlcmVzdGVkIHBh cnRpZXMuICBUaGF0DQo+ID4gb2J2aW91c2x5IHdhc24ndCBnb2luZyB0byBzY2FsZSwgYW5kIHdl IHdhbnRlZCB0byBwdXJzdWUgc29tZXRoaW5nDQo+ID4gbW9yZQ0KPiA+IGR5bmFtaWMuICBCdXQg SSB0aG91Z2h0IHRoZSBnb2FsIHdhcyB0aGUgWERQL2VCUEYgcHJvZ3JhbSB3b3VsZG4ndA0KPiA+ IHdhbnQNCj4gPiB0byBjYXJlIHdoYXQgdGhlIHVuZGVybHlpbmcgZGV2aWNlIGlzLCBhbmQgY291 bGQganVzdCBhc2sgZm9yDQo+ID4gbWV0YWRhdGENCj4gPiB0aGF0IGl0J3MgaW50ZXJlc3RlZCBp bi4gIFdpdGggdGhpcyBhcHByb2FjaCwgeW91ciBlQlBGIHByb2dyYW0gaXMNCj4gPiBub3cNCj4g PiBib3VuZC90aWVkIHRvIHRoZSBOSUMvZHJpdmVyLCBhbmQgaWYgeW91IHN3aXRjaGVkIHRvIGEg ZGlmZmVyZW4NCj4gPiBOSUMvZHJpdmVyIGNvbWJvLCB0aGVuIHlvdSdkIGhhdmUgdG8gcmV3cml0 ZSBwYXJ0IG9mIHlvdXIgZUJQRg0KPiA+IHByb2dyYW0NCj4gPiB0byBjb21wcmVoZW5kIHRoYXQu ICBJIHRob3VnaHQgd2Ugd2VyZSB0cnlpbmcgdG8gYXZvaWQgdGhhdC4NCj4gDQo+IEl0IGxvb2tz IHRvIG1lIHRoYXQgTklDcyBoYXZlIGEgbG90IG1vcmUgZGlmZmVyZW5jZXMgaW5zdGVhZCBvZg0K PiBjb21tb24gcGllY2VzLg0KPiBJZiB3ZSBmb2N1cyB0aGUgYXJjaGl0ZWN0dXJlIG9uIG1ha2lu ZyBjb21tb24gdGhpbmdzIGFzIGdlbmVyaWMNCj4gYXMgcG9zc2libGUgd2UgbWlzcyB0aGUgYmln Z2VyIHBpY3R1cmUgb2YgY292ZXJpbmcgZGlzdGluY3QNCj4gYW5kIHVuaXF1ZSBmZWF0dXJlcyB0 aGF0IGh3IHByb3ZpZGVzLg0KPiANCj4gSW4gdGhlIGxhc3QgZW1haWwgd2hlbiBJIHNhaWQgIndv dWxkIGJlIGdvb2QgdG8gc3RhbmRhcmRpemUgYXQgbGVhc3QNCj4gYSBmZXcgY29tbW9uIGZpZWxk cyINCj4gSSBtZWFudCB0aGF0IGl0IG1ha2Ugc2Vuc2Ugb25seSBhdCB0aGUgbGF0ZXIgcGhhc2Vz Lg0KPiBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBwdXQgdGhpbmdzIGludG8gdWFwaSB1cGZyb250 Lg0KPiBPdGhlcndpc2Ugd2Ugd2lsbCBlbmQgdXAgd2l0aCBsaWtlbHkgdXNlbGVzcyBmaWVsZHMu DQo+IExpa2UgdmxhbiBmaWVsZC4gU3VyZWx5IGEgbG90IG9mIG5pY3MgY2FuIHN0b3JlIGl0IGlu dG8gbWV0YWRhdGEsIGJ1dA0KPiB3aHk/DQo+IGJwZiBwcm9ncmFtIGNhbiBlYXNpbHkgcmVhZCBp dCBmcm9tIHRoZSBwYWNrZXQuDQo+IFdoYXQncyB0aGUgYmVuZWZpdCBvZiBhZGRpbmcgaXQgdG8g bWQ/DQo+IFRoaXMgbWV0YWRhdGEgY29uY2VwdCB3ZSdyZSBkaXNjdXNzaW5nIGluIHRoZSBjb250 ZXh0IG9mIHByb2dyYW0NCj4gYWNjZWxlcmF0aW9uLg0KPiBJZiBtZXRhZGF0YSBkb2Vzbid0IGdp dmUgcGVyZiBiZW5lZml0cyBpdCBzaG91bGQgbm90IGJlIGRvbmUgYnkNCj4gZmlybXdhcmUsIGl0 IHNob3VsZCBub3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIgYW5kIGNlcnRhaW5seQ0KPiBz aG91bGQgbm90IGJlIHBhcnQgb2YgdWFwaS4NCj4gSGVuY2UgSSdkIGxpa2UgdG8gc2VlIHB1cmUg QlRGIGRlc2NyaXB0aW9uIHdpdGhvdXQgYW55DQo+IGNvbW1vbi9zdGFuZGFyZA0KPiBmaWVsZHMg YWNyb3NzIHRoZSBkcml2ZXJzIGFuZCBmaWd1cmUgb3V0IHdoYXQgKGlmIGFueXRoaW5nKSBpcyB1 c2VmdWwNCj4gdG8gYWNjZWxlcmF0ZSB4ZHAgcHJvZ3JhbXMgKGFuZCBhZl94ZHAgaW4gdGhlIGZ1 dHVyZSkuDQoNCkkgZ3Vlc3MgSSBkaWRuJ3Qgd3JpdGUgbXkgcmVzcG9uc2UgdmVyeSB3ZWxsIGJl Zm9yZSwgYXBvbG9naWVzLiAgSQ0KYWN0dWFsbHkgcmVhbGx5IGxpa2UgdGhlIEJURiBkZXNjcmlw dGlvbiBhbmQgdGhlIGR5bmFtaWMtbmVzcyBvZiBpdC4gDQpJdCBzb2x2ZXMgbG90cyBvZiBwcm9i bGVtcyBhbmQga2VlcHMgdGhpbmdzIG91dCBvZiB0aGUgVUFQSS4NCg0KV2hhdCBJIHdhcyBnZXR0 aW5nIGF0IHdhcyB1c2luZyB0aGUgQlRGIGRlc2NyaXB0aW9uIGFuZCBkdW1waW5nIGENCmhlYWRl ciBmaWxlIHRvIGJlIHVzZWQgaW4gdGhlIHByb2dyYW0gdG8gYmUgbG9hZGVkLiAgSWYgd2UgaGF2 ZSBhbg0KYXBwbGljYXRpb24gZGV2ZWxvcGVyIGluY2x1ZGUgdGhhdCBoZWFkZXIsIGl0IHdpbGwg YmUgdGhlIEludGVsIEJURg0KZGVzY3JpcHRpb24sIG9yIE1lbGxhbm94IEJURiBkZXNjcmlwdGlv biwgZXRjLiAgSSdtIGZpbmUgd2l0aCB0aGF0LCBidXQNCml0IG1ha2VzIHlvdXIgcHJvZ3JhbSBu b3QgYXMgcG9ydGFibGUsIHNpbmNlIHlvdSdkIG5lZWQgdG8gZ2V0IGENCmRpZmZlcmVudCBoZWFk ZXIgYW5kIHJlY29tcGlsZSBpdCBpZiB5b3UgY2hhbmdlIHRoZSBOSUMuICBVbmxlc3MgSSdtDQpt aXNzaW5nIHNvbWV0aGluZy4NCg0KPiANCj4gPiBPdXIgcHJvcG9zZWQgYXBwcm9hY2ggKHN0aWxs IHdvcmtpbmcgb24gc29tZXRoaW5nIHJlYWR5IHRvIFJGQykgaXMNCj4gPiB0bw0KPiA+IHByb3Zp ZGUgYSBtZXRob2QgZm9yIHRoZSBlQlBGIHByb2dyYW0gdG8gc2VuZCBhIHN0cnVjdCBvZiByZXF1 ZXN0ZWQNCj4gPiBoaW50cyBkb3duIHRvIHRoZSBkcml2ZXIgb24gbG9hZC4gIElmIHRoZSBkcml2 ZXIgY2FuIHByb3ZpZGUgdGhlDQo+ID4gaGludHMsDQo+ID4gdGhlbiB0aGF0J2QgYmUgaG93IHRo ZXknZCBiZSBsYWlkIG91dCBpbiB0aGUgbWV0YWRhdGEuICBJZiBpdCBjYW4ndA0KPiA+IHByb3Zp ZGUgdGhlbSwgd2UnZCBwcm9iYWJseSByZWplY3QgdGhlIHByb2dyYW0gbG9hZGluZywgb3IgZGlz Y3Vzcw0KPiA+IHByb3ZpZGluZyBhIHNvZnR3YXJlIGZhbGxiYWNrIChJIGtub3cgdGhpcyBpcyBh biBhcmVhIG9mDQo+ID4gY29udGVudGlvbikuDQo+IA0KPiBJIGRvbid0IHRoaW5rIHRoYXQgYXBw cm9hY2ggY2FuIHdvcmsuDQo+IE15IC4wMiBpcyB0aGUgb25seSB1c2VmdWwgYWNjZWxlcmF0aW9u IGZlYXR1cmUgb3V0IGlmIGludGVsIG5pY3MgaXMNCj4gYW4gYWJpbGl0eSB0byBwYXJzZSB0aGUg cGFja2V0IGFuZCByZXBvcnQgaXQgdG8gdGhlIHhkcCBwcm9ncmFtDQo+IGFzIGEgbm9kZSBpZCBp biB0aGUgcGFyc2UgZ3JhcGguIEFzIGZhciBhcyBJIGtub3cgdGhhdCBpcyBwcmV0dHkNCj4gdW5p cXVlDQo+IHRvIGludGVsLiBDb25maWd1cmF0aW9uIG9mIHRoYXQgaXMgYSBkaWZmZXJlbnQgbWF0 dGVyLg0KPiBPdGhlciB0aGluZ3MgbGlrZSBoYXNoIGFyZSBpbnRlcmVzdGluZywgYnV0IHdlIHdp bGwgcXVpY2tseSBnZXQNCj4gaW50byByc3Mgc3BlYyBkZWZpbml0aW9uIGlmIHdlIGdvIHN0YW5k YXJkaXphdGlvbiByb3V0ZSBub3cgaW5zdGVhZA0KPiBvZiBsYXRlciBwaGFzZXMuDQo+IFRoZXJl Zm9yZSBJJ2QgcmF0aGVyIGxldCBmaXJtd2FyZStkcml2ZXIgZGVmaW5lIGl0cyBvd24gQlRGDQo+ IGRlc2NyaXB0aW9uDQo+IHRoYXQgc2F5cyBoZXJlIGlzICdoYXNoJyBvZiB0aGUgcGFja2V0IGh3 IGNhbiBwcm92aWRlIGFuZCBpdCdzIGZpbmUNCj4gdGhhdCB0aGlzIGhhc2ggbWF5IGJlIG92ZXIg ZGlmZmVyZW50IHR1cGxlcyBkZXBlbmRpbmcgb24gdGhlIG5pYw0KPiBhbmQgZXZlbiB2ZXJzaW9u IG9mIHRoZSBmaXJtd2FyZSBpbiB0aGF0IG5pYy4NCj4gV2UgbmVlZCB0byBzZWUgcGVyZm9ybWFu Y2UgbnVtYmVycyBhbmQgYmVuZWZpdHMgZm9yIHJlYWwgd29ybGQNCj4geGRwIHByb2dyYW1zIGJl Zm9yZSBkcmlsbGluZyBpbnRvIHNwZWNpZmljIHNlbWFudGljcyBvZiB0aGUgaGFzaC4NCg0KSSBh Z3JlZSB0aGF0ICJ1c2VmdWwiIGZpZWxkcyBzaG91bGQgYmUgdGFyZ2V0ZWQuICBJIGNhbiBzZWUg aGFzaA0KZ2V0dGluZyBtb3JlIGludGVyZXN0aW5nIHRob3VnaCBpZiBvbmUgY2FuIHNwZWNpZnkg d2hhdCBwYXJ0cyBvZiB0aGUgbi0NCnR1cGxlcyBnZXQgaW5jbHVkZWQgaW4gdGhlIGhhc2gsIG9y IGlmIHdlIHdhbnQgaGFzaGVzIGZvciBpbm5lciBwYWNrZXRzDQpvciBvdXRlciBoZWFkZXJzIGlm IHRoaW5ncyBhcmUgdHVubmVsZWQuICBCdXQgdGhhdCBjYW4gYmUgcmV2aXNpdGVkDQpkb3duIHRo ZSByb2FkLg0KDQpJIGFsc28gYWdyZWUgdGhhdCBjaGFuZ2luZyB0aGUgY29uZmlndXJhdGlvbiBv ZiB0aGUgdW5kZXJseWluZyBwYXJzZXINCm9yIHBpcGVsaW5lIHRvIGdlbmVyYXRlIHRoZSBtZXRh ZGF0YSBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUNCmRpc2N1c3Npb24uDQoNCj4gDQo+ID4gSSBz dXBwb3NlIHdlIGNvdWxkIGdldCB0aGVyZSB3aXRoIHRoZSByZXdyaXRpbmcgbWVjaGFuaXNtIGRl c2NyaWJlZA0KPiA+IGJlbG93LCBidXQgdGhhdCdkIGJlIGEgdG91Z2ggc2VsbCB0byBzZXQgYSBi aXQgb2YgQUJJIGZvciBtZXRhZGF0YSwNCj4gPiB0aGVuIGNoYW5nZSBpdCB0byBiZSBwb3RlbnRp YWxseSBkeW5hbWljIGF0IHJ1bnRpbWUgaW4gdGhlIGZ1dHVyZS4NCj4gDQo+IEhtbS4gSSBkb24n dCBzZWUgaG93IGZ1dHVyZSBvZmZzZXQgcmV3cml0aW5nIHdpbGwgYnJlYWsgYWJpLg0KPiBJdCBs b29rcyB0byBtZSBhcyBuYXR1cmFsIGV4dGVuc2lvbiB0aGF0IHdvdWxkbid0IGJyZWFrIGFueSBh cHBzDQo+IHRoYXQgd291bGQgYmUgd3JpdHRlbiBmb3Igc3BlY2lmaWMgbmljIHdpdGggZ2l2ZW4g QlRGIGRlc2NyaXB0aW9uLg0KPiBXaXRoIHJld3JpdHRpbmcgaW4gcGxhY2Ugc29tZSBwcm9ncyB3 b3VsZCBiZWNvbWUgcG9ydGFibGUuIFRoYXQncw0KPiBhbGwuDQoNCldoYXQgSSBtZWFudCBoZXJl IHdhcyBpZiBhbnl0aGluZyB3YXMgcHV0IGludG8gdGhlIFVBUEksIHRoZW4gY2hhbmdpbmcNCnRv IHNvbWV0aGluZyBtb3JlIGR5bmFtaWMgbWlnaHQgbWFrZSB0cmFuc2l0aW9uaW5nIG1vcmUgY2hh bGxlbmdpbmcuIA0KQW5kIEkgY2FuIHNlZSBub3cgd2hhdCB0aGUgcmV3cml0aW5nIGNhbiBkbyB0 byBoZWxwIG15IHByZXZpb3VzDQp0aG91Z2h0cyBvbiB0aGUgQlRGIGRlc2NyaXB0aW9uIGxvY2tp bmcgYSBwcm9ncmFtIHRvIGEgc3BlY2lmaWMgTklDLiANCkJ1dCBJJ2QgbmVlZCB0byBwbGF5IHdp dGggaXQgdG8gYmUgY29udmluY2VkIGFib3V0IHRoZSBwb3J0YWJpbGl0eS4NCg0KLVBK