From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: RFC: XenSock brainstorming Date: Thu, 23 Jun 2016 17:57:12 +0100 (BST) Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bG7wM-0004DB-LD for xen-devel@lists.xenproject.org; Thu, 23 Jun 2016 16:57:18 +0000 Received: by mail-wm0-f49.google.com with SMTP id f126so134766365wma.1 for ; Thu, 23 Jun 2016 09:57:16 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: xen-devel@lists.xenproject.org, joao.m.martins@oracle.com, wei.liu2@citrix.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org QWx0aG91Z2ggZGlzY3Vzc2luZyB0aGUgZ29hbHMgaXMgZnVuLCBmZWVkYmFjayBvbiB0aGUgZGVz aWduIG9mIHRoZQpwcm90b2NvbCBpcyBwYXJ0aWN1bGFybHkgd2VsY29tZS4KCk9uIFRodSwgMjMg SnVuIDIwMTYsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToKPiBOb3cgdGhhdCBYZW4gNC43IGlz IG91dCBvZiB0aGUgZG9vciwgYW55IG1vcmUgZmVlZGJhY2sgb24gdGhpcz8KPiAKPiBPbiBNb24s IDYgSnVuIDIwMTYsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToKPiA+IEhpIGFsbCwKPiA+IAo+ ID4gYSBjb3VwbGUgb2YgbW9udGhzIGFnbyBJIHN0YXJ0ZWQgd29ya2luZyBvbiBhIG5ldyBQViBw cm90b2NvbCBmb3IKPiA+IHZpcnR1YWxpemluZyBzeXNjYWxscy4gSSBuYW1lZCBpdCBYZW5Tb2Nr LCBhcyBpdHMgbWFpbiBwdXJwb3NlIGlzIHRvCj4gPiBhbGxvdyB0aGUgaW1wbGVtZW50YXRpb24g b2YgdGhlIFBPU0lYIHNvY2tldCBBUEkgaW4gYSBkb21haW4gb3RoZXIgdGhhbgo+ID4gdGhlIG9u ZSBvZiB0aGUgY2FsbGVyLiBJdCBhbGxvd3MgY29ubmVjdCwgYWNjZXB0LCByZWN2bXNnLCBzZW5k bXNnLCBldGMKPiA+IHRvIGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIERvbTAuIEluIGEgd2F5 IHRoaXMgaXMgY29uY2VwdHVhbGx5Cj4gPiBzaW1pbGFyIHRvIHZpcnRpby05cGZzLCBidXQgZm9y IHNvY2tldHMgcmF0aGVyIHRoYW4gZmlsZXN5c3RlbSBBUElzLgo+ID4gU2VlIHRoaXMgZGlhZ3Jh bSBhcyByZWZlcmVuY2U6Cj4gPiAKPiA+IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3ByZXNlbnRh dGlvbi9kLzF6NEFJQ1RZMmVqQWpaLVVsMTVHVEwzaV93Y21oS1FKQTd0Y1h3aEkzZHlzL2VkaXQ/ dXNwPXNoYXJpbmcKPiA+IAo+ID4gVGhlIGZyb250ZW5kcyBhbmQgYmFja2VuZHMgY291bGQgbGl2 ZSBlaXRoZXIgaW4gdXNlcnNwYWNlIG9yIGtlcm5lbAo+ID4gc3BhY2UsIHdpdGggZGlmZmVyZW50 IHRyYWRlLW9mZnMuIE15IGN1cnJlbnQgcHJvdG90eXBlIGlzIGJhc2VkIG9uIExpbnV4Cj4gPiBr ZXJuZWwgZHJpdmVycyBidXQgaXQgd291bGQgYmUgbmljZSB0byBoYXZlIHVzZXJzcGFjZSBkcml2 ZXJzIHRvby4KPiA+IERpc2N1c3Npbmcgd2hlcmUgdGhlIGRyaXZlcnMgY291bGQgYmUgaW1wbGVt ZW50ZWQgaXQncyBiZXlvbmQgdGhlIHNjb3BlCj4gPiBvZiB0aGlzIGVtYWlsLgo+ID4gCj4gPiAK PiA+ICMgR29hbHMKPiA+IAo+ID4gVGhlIGdvYWwgb2YgdGhlIHByb3RvY29sIGlzIHRvIHByb3Zp ZGUgbmV0d29ya2luZyBjYXBhYmlsaXRpZXMgdG8gYW55Cj4gPiBndWVzdHMsIHdpdGggdGhlIGZv bGxvd2luZyBhZGRlZCBiZW5lZml0czoKPiA+IAo+ID4gKiBndWVzdCBuZXR3b3JraW5nIHNob3Vs ZCB3b3JrIG91dCBvZiB0aGUgYm94IHdpdGggVlBOcywgd2lyZWxlc3MKPiA+ICAgbmV0d29ya3Mg YW5kIGFueSBvdGhlciBjb21wbGV4IG5ldHdvcmsgY29uZmlndXJhdGlvbnMgaW4gRG9tMAo+ID4g Cj4gPiAqIGd1ZXN0IHNlcnZpY2VzIHNob3VsZCBsaXN0ZW4gb24gcG9ydHMgYm91bmQgZGlyZWN0 bHkgdG8gRG9tMCBJUAo+ID4gICBhZGRyZXNzZXMsIGZpdHRpbmcgbmF0dXJhbGx5IGluIGEgRG9j a2VyIGJhc2VkIHdvcmtmbG93LCB3aGVyZSBndWVzdHMKPiA+ICAgYXJlIERvY2tlciBjb250YWlu ZXJzCj4gPiAKPiA+ICogRG9tMCBzaG91bGQgaGF2ZSBmdWxsIHZpc2liaWxpdHkgb24gdGhlIGd1 ZXN0IGJlaGF2aW9yIGFuZCBzaG91bGQgYmUKPiA+ICAgYWJsZSB0byBwZXJmb3JtIGluZXhwZW5z aXZlIGZpbHRlcmluZyBhbmQgbWFuaXB1bGF0aW9uIG9mIGd1ZXN0IGNhbGxzCj4gPiAKPiA+ICog WGVuU29jayBzaG91bGQgcHJvdmlkZSBleGNlbGxlbnQgcGVyZm9ybWFuY2UuIFVub3B0aW1pemVk IGVhcmx5IGNvZGUKPiA+ICAgcmVhY2hlcyAyMiBHYml0L3NlYyBUQ1Agc2luZ2xlIHN0cmVhbSBh bmQgc2NhbGVzIHRvIDYwIEdiaXQvc2VjIHdpdGggMwo+ID4gICBzdHJlYW1zLgo+ID4gCj4gPiAK PiA+ICMgU3RhdHVzCj4gPiAKPiA+IEkgd291bGQgbGlrZSB0byBnZXQgZmVlZGJhY2sgb24gdGhl IGhpZ2ggbGV2ZWwgYXJjaGl0ZWN0dXJlLCB0aGUgZGF0YQo+ID4gcGF0aCBhbmQgdGhlIHJpbmcg Zm9ybWF0cy4KPiA+IAo+ID4gQmV3YXJlIHRoYXQgcHJvdG9jb2wgYW5kIGRyaXZlcnMgYXJlIGlu IHRoZWlyIHZlcnkgZWFybHkgZGF5cy4gSSBkb24ndAo+ID4gaGF2ZSBhbGwgdGhlIGluZm9ybWF0 aW9uIHRvIHdyaXRlIGEgZGVzaWduIGRvY3VtZW50IHlldC4gVGhlIEFCSSBpcwo+ID4gbmVpdGhl ciBjb21wbGV0ZSBub3Igc3RhYmxlLgo+ID4gCj4gPiBUaGUgY29kZSBpcyBub3QgcmVhZHkgZm9y IHhlbi1kZXZlbCB5ZXQsIGJ1dCBJIHdvdWxkIGJlIGhhcHB5IHRvIHB1c2ggYQo+ID4gZ2l0IGJy YW5jaCBpZiBzb21lYm9keSBpcyBpbnRlcmVzdGVkIGluIGNvbnRyaWJ1dGluZyB0byB0aGUgcHJv amVjdC4KPiA+IAo+ID4gCj4gPiAjIERlc2lnbiBhbmQgbGltaXRhdGlvbnMKPiA+IAo+ID4gVGhl IGZyb250ZW5kIGNvbm5lY3RzIHRvIHRoZSBiYWNrZW5kIGZvbGxvd2luZyB0aGUgdHJhZGl0aW9u YWwgeGVuc3RvcmUKPiA+IGJhc2VkIGV4Y2hhbmdlIG9mIGluZm9ybWF0aW9uLgo+ID4gCj4gPiBG cm9udGVuZCBhbmQgYmFja2VuZCBzZXR1cCBhbiBldmVudCBjaGFubmVsIGFuZCBzaGFyZWQgcmlu Zy4gVGhlIHJpbmcgaXMKPiA+IHVzZWQgYnkgdGhlIGZyb250ZW5kIHRvIGZvcndhcmQgc29ja2V0 IEFQSSBjYWxscyB0byB0aGUgYmFja2VuZC4gSSBhbQo+ID4gcmVmZXJyaW5nIHRvIHRoaXMgcmlu ZyBhcyBjb21tYW5kIHJpbmcuIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiB0aGUgcmluZwo+ID4gZm9y bWF0Ogo+ID4gCj4gPiAjZGVmaW5lIFhFTlNPQ0tfQ09OTkVDVCAgICAgICAgMAo+ID4gI2RlZmlu ZSBYRU5TT0NLX1JFTEVBU0UgICAgICAgIDMKPiA+ICNkZWZpbmUgWEVOU09DS19CSU5EICAgICAg ICAgICA0Cj4gPiAjZGVmaW5lIFhFTlNPQ0tfTElTVEVOICAgICAgICAgNQo+ID4gI2RlZmluZSBY RU5TT0NLX0FDQ0VQVCAgICAgICAgIDYKPiA+ICNkZWZpbmUgWEVOU09DS19QT0xMICAgICAgICAg ICA3Cj4gPiAKPiA+IHN0cnVjdCB4ZW5feGVuc29ja19yZXF1ZXN0IHsKPiA+IAl1aW50MzJfdCBp ZDsgICAgIC8qIHByaXZhdGUgdG8gZ3Vlc3QsIGVjaG9lZCBpbiByZXNwb25zZSAqLwo+ID4gCXVp bnQzMl90IGNtZDsgICAgLyogY29tbWFuZCB0byBleGVjdXRlICovCj4gPiAJdWludDY0X3Qgc29j a2lkOyAvKiBpZCBvZiB0aGUgc29ja2V0ICovCj4gPiAJdW5pb24gewo+ID4gCQlzdHJ1Y3QgeGVu X3hlbnNvY2tfY29ubmVjdCB7Cj4gPiAJCQl1aW50OF90IGFkZHJbMjhdOwo+ID4gCQkJdWludDMy X3QgbGVuOwo+ID4gCQkJdWludDMyX3QgZmxhZ3M7Cj4gPiAJCQlncmFudF9yZWZfdCByZWZbWEVO U09DS19EQVRBUklOR19QQUdFU107Cj4gPiAJCQl1aW50MzJfdCBldnRjaG47Cj4gPiAJCX0gY29u bmVjdDsKPiA+IAkJc3RydWN0IHhlbl94ZW5zb2NrX2JpbmQgewo+ID4gCQkJdWludDhfdCBhZGRy WzI4XTsgLyogaXB2NiByZWFkeSAqLwo+ID4gCQkJdWludDMyX3QgbGVuOwo+ID4gCQl9IGJpbmQ7 Cj4gPiAJCXN0cnVjdCB4ZW5feGVuc29ja19hY2NlcHQgewo+ID4gCQkJZ3JhbnRfcmVmX3QgcmVm W1hFTlNPQ0tfREFUQVJJTkdfUEFHRVNdOwo+ID4gCQkJdWludDMyX3QgZXZ0Y2huOwo+ID4gCQkJ dWludDY0X3Qgc29ja2lkOwo+ID4gCQl9IGFjY2VwdDsKPiA+IAl9IHU7Cj4gPiB9Owo+ID4gCj4g PiBzdHJ1Y3QgeGVuX3hlbnNvY2tfcmVzcG9uc2Ugewo+ID4gCXVpbnQzMl90IGlkOwo+ID4gCXVp bnQzMl90IGNtZDsKPiA+IAl1aW50NjRfdCBzb2NraWQ7Cj4gPiAJaW50MzJfdCByZXQ7Cj4gPiB9 Owo+ID4gCj4gPiBERUZJTkVfUklOR19UWVBFUyh4ZW5feGVuc29jaywgc3RydWN0IHhlbl94ZW5z b2NrX3JlcXVlc3QsCj4gPiAJCSAgc3RydWN0IHhlbl94ZW5zb2NrX3Jlc3BvbnNlKTsKPiA+IAo+ ID4gCj4gPiBDb25uZWN0IGFuZCBhY2NlcHQgbGVhZCB0byB0aGUgY3JlYXRpb24gb2YgbmV3IGFj dGl2ZSBzb2NrZXRzLiBUb2RheQo+ID4gZWFjaCBhY3RpdmUgc29ja2V0IGhhcyBpdHMgb3duIGV2 ZW50IGNoYW5uZWwgYW5kIHJpbmcgZm9yIHNlbmRpbmcgYW5kCj4gPiByZWNlaXZpbmcgZGF0YS4g RGF0YSByaW5ncyBoYXZlIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ogo+ID4gCj4gPiAjZGVmaW5lIFhF TlNPQ0tfREFUQVJJTkdfT1JERVIgMgo+ID4gI2RlZmluZSBYRU5TT0NLX0RBVEFSSU5HX1BBR0VT ICgxIDw8IFhFTlNPQ0tfREFUQVJJTkdfT1JERVIpCj4gPiAjZGVmaW5lIFhFTlNPQ0tfREFUQVJJ TkdfU0laRSAoWEVOU09DS19EQVRBUklOR19QQUdFUyA8PCBQQUdFX1NISUZUKQo+ID4gCj4gPiB0 eXBlZGVmIHVpbnQzMl90IFhFTlNPQ0tfUklOR19JRFg7Cj4gPiAKPiA+IHN0cnVjdCB4ZW5zb2Nr X3JpbmdfaW50ZiB7Cj4gPiAJY2hhciBpbltYRU5TT0NLX0RBVEFSSU5HX1NJWkUvNF07Cj4gPiAJ Y2hhciBvdXRbWEVOU09DS19EQVRBUklOR19TSVpFLzJdOwo+ID4gCVhFTlNPQ0tfUklOR19JRFgg aW5fY29ucywgaW5fcHJvZDsKPiA+IAlYRU5TT0NLX1JJTkdfSURYIG91dF9jb25zLCBvdXRfcHJv ZDsKPiA+IAlpbnQzMl90IGluX2Vycm9yLCBvdXRfZXJyb3I7Cj4gPiB9Owo+ID4gCj4gPiBUaGUg cmluZyB3b3JrcyBsaWtlIHRoZSBYZW4gY29uc29sZSByaW5nIChzZWUKPiA+IHhlbi9pbmNsdWRl L3B1YmxpYy9pby9jb25zb2xlLmgpLiBEYXRhIGlzIGNvcGllZCB0by9mcm9tIHRoZSByaW5nIGJ5 Cj4gPiBib3RoIGZyb250ZW5kIGFuZCBiYWNrZW5kLiBpbl9lcnJvciwgb3V0X2Vycm9yIGFyZSB1 c2VkIHRvIHJlcG9ydAo+ID4gZXJyb3JzLiBUaGlzIHNpbXBsZSBkZXNpZ24gd29ya3Mgd2VsbCwg YnV0IGl0IHJlcXVpcmVzIGF0IGxlYXN0IDEgcGFnZQo+ID4gcGVyIGFjdGl2ZSBzb2NrZXQuIFRv IGdldCBnb29kIHBlcmZvcm1hbmNlICh+MjAgR2JpdC9zZWMgc2luZ2xlIHN0cmVhbSksCj4gPiB3 ZSBuZWVkIGJ1ZmZlcnMgb2YgYXQgbGVhc3QgNjRLLCBzbyBhY3R1YWxseSB3ZSBhcmUgbG9va2lu ZyBhdCBhYm91dCA2NAo+ID4gcGFnZXMgcGVyIHJpbmcgKG9yZGVyIDYpLgo+ID4gCj4gPiBJIGFt IGN1cnJlbnRseSBpbnZlc3RpZ2F0aW5nIHRoZSB1c2FnZSBvZiBBVlgyIHRvIHBlcmZvcm0gdGhl IGRhdGEgY29weS4KPiA+IAo+ID4gCj4gPiAjIEJyYWluc3Rvcm1pbmcKPiA+IAo+ID4gQXJlIDY0 IHBhZ2VzIHBlciBhY3RpdmUgc29ja2V0IGEgcmVhc29uYWJsZSBhbW91bnQgaW4gdGhlIGNvbnRl eHQgb2YKPiA+IG1vZGVybiBPUyBsZXZlbCBuZXR3b3JraW5nPyBJIGJlbGlldmUgdGhhdCByZWd1 bGFyIExpbnV4IHRjcCBzb2NrZXRzCj4gPiBhbGxvY2F0ZSBzb21ldGhpbmcgaW4gdGhhdCBvcmRl ciBvZiBtYWduaXR1ZGUuCj4gPiAKPiA+IElmIHRoYXQncyB0b28gbXVjaCwgSSBzcGVudCBzb21l IHRpbWUgdGhpbmtpbmcgYWJvdXQgd2F5cyB0byByZWR1Y2UgaXQuCj4gPiBTb21lIGlkZWFzIGZv bGxvdy4KPiA+IAo+ID4gCj4gPiBXZSBjb3VsZCBzcGxpdCB1cCBzZW5kIGFuZCByZWNlaXZlIGlu dG8gdHdvIGRpZmZlcmVudCBkYXRhIHN0cnVjdHVyZXMuIEkKPiA+IGFtIHRoaW5raW5nIG9mIGlu dHJvZHVjaW5nIGEgc2luZ2xlIHJpbmcgZm9yIGFsbCBhY3RpdmUgc29ja2V0cyB3aXRoCj4gPiB2 YXJpYWJsZSBzaXplIG1lc3NhZ2VzIGZvciBzZW5kaW5nIGRhdGEuIFNvbWV0aGluZyBsaWtlIHRo ZSBmb2xsb3dpbmc6Cj4gPiAKPiA+IHN0cnVjdCB4ZW5zb2NrX3JpbmdfZW50cnkgewo+ID4gCXVp bnQ2NF90IHNvY2tpZDsgLyogaWRlbnRpZmllcyBhIHNvY2tldCAqLwo+ID4gCXVpbnQzMl90IGxl bjsgICAgLyogbGVuZ3RoIG9mIGRhdGEgdG8gZm9sbG93ICovCj4gPiAJdWludDhfdCBkYXRhW107 ICAvKiB2YXJpYWJsZSBsZW5ndGggZGF0YSAqLwo+ID4gfTsKPiA+ICAKPiA+IE9uZSByaW5nIHdv dWxkIGJlIGRlZGljYXRlZCB0byBob2xkaW5nIHhlbnNvY2tfcmluZ19lbnRyeSBzdHJ1Y3R1cmVz LAo+ID4gb25lIGFmdGVyIGFub3RoZXIgaW4gYSBjbGFzc2ljIGNpcmN1bGFyIGZhc2hpb24uIFR3 byBpbmRleGVzLCBvdXRfY29ucwo+ID4gYW5kIG91dF9wcm9kLCB3b3VsZCBzdGlsbCBiZSB1c2Vk IHRoZSBzYW1lIHdheSB0aGUgYXJlIHVzZWQgaW4gdGhlCj4gPiBjb25zb2xlIHJpbmcsIGJ1dCBJ IHdvdWxkIHBsYWNlIHRoZW0gb24gYSBzZXBhcmF0ZSBwYWdlIGZvciBjbGFyaXR5Ogo+ID4gCj4g PiBzdHJ1Y3QgeGVuc29ja19yaW5nX2ludGYgewo+ID4gCVhFTlNPQ0tfUklOR19JRFggb3V0X2Nv bnMsIG91dF9wcm9kOwo+ID4gfTsKPiA+IAo+ID4gVGhlIGZyb250ZW5kLCB0aGF0IGlzIHRoZSBw cm9kdWNlciwgd3JpdGVzIGEgbmV3IHN0cnVjdAo+ID4geGVuc29ja19yaW5nX2VudHJ5IHRvIHRo ZSByaW5nLCBjYXJlZnVsIG5vdCB0byBleGNlZWQgdGhlIHJlbWFpbmluZyBmcmVlCj4gPiBieXRl cyBhdmFpbGFibGUuIFRoZW4gaXQgaW5jcmVtZW50cyBvdXRfcHJvZCBieSB0aGUgd3JpdHRlbiBh bW91bnQuIFRoZQo+ID4gYmFja2VuZCwgdGhhdCBpcyB0aGUgY29uc3VtZXIsIHJlYWRzIHRoZSBu ZXcgc3RydWN0IHhlbnNvY2tfcmluZ19lbnRyeSwKPiA+IHJlYWRpbmcgYXMgbXVjaCBkYXRhIGFz IHNwZWNpZmllZCBieSAibGVuIi4gVGhlbiBpdCBpbmNyZW1lbnRzIG91dF9jb25zCj4gPiBieSB0 aGUgc2l6ZSBvZiB0aGUgc3RydWN0IHhlbnNvY2tfcmluZ19lbnRyeSByZWFkLgo+ID4gCj4gPiBJ IHRoaW5rIHRoaXMgY291bGQgd29yay4gVGhlb3JldGljYWxseSB3ZSBjb3VsZCBkbyB0aGUgc2Ft ZSB0aGluZyBmb3IKPiA+IHJlY2VpdmU6IGEgc2VwYXJhdGUgc2luZ2xlIHJpbmcgc2hhcmVkIGJ5 IGFsbCBhY3RpdmUgc29ja2V0cy4gV2UgY291bGQKPiA+IGV2ZW4gcmV1c2Ugc3RydWN0IHhlbnNv Y2tfcmluZ19lbnRyeS4KPiA+IAo+ID4gCj4gPiBIb3dldmVyIEkgaGF2ZSBkb3VidHMgdGhhdCB0 aGlzIG1vZGVsIGNvdWxkIHdvcmsgd2VsbCBmb3IgcmVjZWl2ZS4gV2hlbgo+ID4gc2VuZGluZyBk YXRhLCBhbGwgc29ja2V0cyBvbiB0aGUgZnJvbnRlbmQgc2lkZSBjb3B5IGJ1ZmZlcnMgb250byB0 aGlzCj4gPiBzaW5nbGUgcmluZy4gSWYgdGhlcmUgaXMgbm8gcm9vbSwgdGhlIGZyb250ZW5kIHJl dHVybnMgRU5PQlVGUy4gVGhlCj4gPiBiYWNrZW5kIHBpY2tzIHVwIHRoZSBkYXRhIGZyb20gdGhl IHJpbmcgYW5kIGNhbGxzIHNlbmRtc2csIHdoaWNoIGNhbgo+ID4gYWxzbyByZXR1cm4gRU5PQlVG Uy4gSW4gdGhhdCBjYXNlIHdlIGRvbid0IGluY3JlbWVudCBvdXRfY29ucywgbGVhdmluZwo+ID4g dGhlIGRhdGEgb24gdGhlIHJpbmcuIFRoZSBiYWNrZW5kIHdpbGwgdHJ5IGFnYWluIGluIHRoZSBu ZWFyIGZ1dHVyZS4KPiA+IEVycm9yIG1lc3NhZ2VzIHdvdWxkIGhhdmUgdG8gZ28gb24gYSBzZXBh cmF0ZSBkYXRhIHN0cnVjdHVyZSB3aGljaCBJCj4gPiBoYXZlbid0IGZpbmFsaXplZCB5ZXQuCj4g PiAKPiA+IFdoZW4gcmVjZWl2aW5nIGZyb20gYSBzb2NrZXQsIHRoZSBiYWNrZW5kIGNvcGllcyBk YXRhIHRvIHRoZSByaW5nIGFzCj4gPiBzb29uIGFzIGRhdGEgaXMgYXZhaWxhYmxlLCBwZXJoYXBz IGJlZm9yZSB0aGUgZnJvbnRlbmQgcmVxdWVzdHMgdGhlCj4gPiBkYXRhLiBCdWZmZXJzIGFyZSBj b3BpZWQgdG8gdGhlIHJpbmcgbm90IG5lY2Vzc2FyaWx5IGluIHRoZSBvcmRlciB0aGF0Cj4gPiB0 aGUgZnJvbnRlbmQgbWlnaHQgd2FudCB0byByZWFkIHRoZW0uIFRodXMgdGhlIGZyb250ZW5kIHdv dWxkIGhhdmUgdG8KPiA+IGNvcHkgdGhlbSBvdXQgb2YgdGhlIGNvbW1vbiByaW5nIGludG8gcHJp dmF0ZSBwZXItc29ja2V0IGR5bmFtaWMgYnVmZmVycwo+ID4ganVzdCB0byBmcmVlIHRoZSByaW5n IGFzIHNvb24gYXMgcG9zc2libGUgYW5kIGNvbnN1bWUgdGhlIG5leHQKPiA+IHhlbnNvY2tfcmlu Z19lbnRyeS4gSXQgZG9lc24ndCBsb29rIHZlcnkgYWR2YW50YWdlb3VzIGluIHRlcm1zIG9mIG1l bW9yeQo+ID4gY29uc3VtcHRpb24gYW5kIHBlcmZvcm1hbmNlLgo+ID4gCj4gPiBBbHRlcm5hdGl2 ZWx5LCB0aGUgZnJvbnRlbmQgd291bGQgaGF2ZSB0byBsZWF2ZSB0aGUgZGF0YSBvbiB0aGUgcmlu ZyBpZgo+ID4gdGhlIGFwcGxpY2F0aW9uIGRpZG4ndCBhc2sgZm9yIGl0IHlldC4gSW4gdGhhdCBj YXNlIHRoZSBmcm9udGVuZCBjb3VsZAo+ID4gbG9vayBhaGVhZCB3aXRob3V0IGluY3JlbWVudGlu ZyB0aGUgaW5fY29ucyBwb2ludGVyLiBJdCB3b3VsZCBoYXZlIHRvCj4gPiBrZWVwIHRyYWNrIG9m IHdoaWNoIGVudHJpZXMgaGF2ZSBiZWVuIGNvbnN1bWVkIGFuZCB3aGljaCBlbnRyaWVzIGhhdmUK PiA+IG5vdCBiZWVuIGNvbnN1bWVkLiBPbmx5IHdoZW4gdGhlIHJpbmcgaXMgZnVsbCwgdGhlIGZy b250ZW5kIHdvdWxkIGhhdmUKPiA+IG5vIG90aGVyIGNob2ljZSBidXQgdG8gY29weSB0aGUgZGF0 YSBvdXQgb2YgdGhlIHJpbmcgaW50byB0ZW1wb3JhcnkKPiA+IGJ1ZmZlcnMuIEkgYW0gbm90IHN1 cmUgaG93IHdlbGwgdGhpcyBjb3VsZCB3b3JrIGluIHByYWN0aWNlLgo+ID4gCj4gPiBBcyBhIGNv bXByb21pc2UsIHdlIGNvdWxkIHVzZSBhIHNpbmdsZSBzaGFyZWQgcmluZyBmb3Igc2VuZGluZyBk YXRhLCBhbmQKPiA+IDEgcmluZyBwZXIgYWN0aXZlIHNvY2tldCB0byByZWNlaXZlIGRhdGEuIFRo aXMgd291bGQgY3V0IHRoZSBwZXItc29ja2V0Cj4gPiBtZW1vcnkgY29uc3VtcHRpb24gaW4gaGFs ZiAobWF5YmUgdG8gYSBxdWFydGVyLCBtb3Zpbmcgb3V0IHRoZSBpbmRleGVzCj4gPiBmcm9tIHRo ZSBzaGFyZWQgZGF0YSByaW5nIGludG8gYSBzZXBhcmF0ZSBwYWdlKSBhbmQgbWlnaHQgYmUgYW4K PiA+IGFjY2VwdGFibGUgdHJhZGUtb2ZmLgo+ID4gCj4gPiBBbnkgZmVlZGJhY2sgb3IgaWRlYXM/ Cj4gPiAKPiA+IAo+ID4gTWFueSB0aGFua3MsCj4gPiAKPiA+IFN0ZWZhbm8KPiA+IAo+IAo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gWGVuLWRldmVs IG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCj4gaHR0cDovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=