From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?iso-8859-1?Q?Monn=E9?= Subject: Re: [PATCH v3 1/2] Interface for grant copy operation in libs. Date: Wed, 6 Jul 2016 17:49:31 +0200 Message-ID: <20160706154931.nfkkzayrhudrcgwh@mac> References: <1466584733-19459-1-git-send-email-paulinaszubarczyk@gmail.com> <1466584733-19459-2-git-send-email-paulinaszubarczyk@gmail.com> <576A5C54.7000601@citrix.com> <20160622112118.GB1790@citrix.com> <576A869E.6090400@citrix.com> <20160622132918.GD1790@citrix.com> <576A982F.6080201@citrix.com> <20160622145243.GG1790@citrix.com> <20160622164959.GA14857@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bKp4y-0000V2-Lv for xen-devel@lists.xenproject.org; Wed, 06 Jul 2016 15:49:36 +0000 Content-Disposition: inline In-Reply-To: <20160622164959.GA14857@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Wei Liu Cc: sstabellini@kernel.org, Paulina Szubarczyk , ian.jackson@eu.citrix.com, David Vrabel , anthony.perard@citrix.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBKdW4gMjIsIDIwMTYgYXQgMDU6NDk6NTlQTSArMDEwMCwgV2VpIExpdSB3cm90ZToK PiBPbiBXZWQsIEp1biAyMiwgMjAxNiBhdCAwMzo1Mjo0M1BNICswMTAwLCBXZWkgTGl1IHdyb3Rl Ogo+ID4gT24gV2VkLCBKdW4gMjIsIDIwMTYgYXQgMDI6NTI6NDdQTSArMDEwMCwgRGF2aWQgVnJh YmVsIHdyb3RlOgo+ID4gPiBPbiAyMi8wNi8xNiAxNDoyOSwgV2VpIExpdSB3cm90ZToKPiA+ID4g PiBPbiBXZWQsIEp1biAyMiwgMjAxNiBhdCAwMTozNzo1MFBNICswMTAwLCBEYXZpZCBWcmFiZWwg d3JvdGU6Cj4gPiA+ID4+IE9uIDIyLzA2LzE2IDEyOjIxLCBXZWkgTGl1IHdyb3RlOgo+ID4gPiA+ Pj4gT24gV2VkLCBKdW4gMjIsIDIwMTYgYXQgMTA6Mzc6MjRBTSArMDEwMCwgRGF2aWQgVnJhYmVs IHdyb3RlOgo+ID4gPiA+Pj4+IE9uIDIyLzA2LzE2IDA5OjM4LCBQYXVsaW5hIFN6dWJhcmN6eWsg d3JvdGU6Cj4gPiA+ID4+Pj4+IEluIGEgbGludXggcGFydCBhbiBpb2N0bChnbnRkZXYsIElPQ1RM X0dOVERFVl9HUkFOVF9DT1BZLCAuLikKPiA+ID4gPj4+Pj4gc3lzdGVtIGNhbGwgaXMgaW52b2tl ZC4gSW4gbWluaS1vcyB0aGUgb3BlcmF0aW9uIGlzIHlldCBub3QKPiA+ID4gPj4+Pj4gaW1wbGVt ZW50ZWQuIEZvciBvdGhlciBPU3MgdGhlcmUgaXMgYSBkdW1teSBpbXBsZW1lbnRhdGlvbi4KPiA+ ID4gPj4+PiBbLi4uXQo+ID4gPiA+Pj4+PiAtLS0gYS90b29scy9saWJzL2dudHRhYi9saW51eC5j Cj4gPiA+ID4+Pj4+ICsrKyBiL3Rvb2xzL2xpYnMvZ250dGFiL2xpbnV4LmMKPiA+ID4gPj4+Pj4g QEAgLTIzNSw2ICsyMzUsNTEgQEAgaW50IG9zZGVwX2dudHRhYl91bm1hcCh4ZW5nbnR0YWJfaGFu ZGxlICp4Z3QsCj4gPiA+ID4+Pj4+ICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4+Pj4+ICB9Cj4gPiA+ ID4+Pj4+ICAKPiA+ID4gPj4+Pj4gK2ludCBvc2RlcF9nbnR0YWJfZ3JhbnRfY29weSh4ZW5nbnR0 YWJfaGFuZGxlICp4Z3QsCj4gPiA+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgY291bnQsCj4gPiA+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg eGVuZ250dGFiX2dyYW50X2NvcHlfc2VnbWVudF90ICpzZWdzKQo+ID4gPiA+Pj4+PiArewo+ID4g PiA+Pj4+PiArICAgIGludCBpLCByYzsKPiA+ID4gPj4+Pj4gKyAgICBpbnQgZmQgPSB4Z3QtPmZk Owo+ID4gPiA+Pj4+PiArICAgIHN0cnVjdCBpb2N0bF9nbnRkZXZfZ3JhbnRfY29weSBjb3B5Owo+ ID4gPiA+Pj4+PiArCj4gPiA+ID4+Pj4+ICsgICAgY29weS5zZWdtZW50cyA9IGNhbGxvYyhjb3Vu dCwgc2l6ZW9mKHN0cnVjdCBpb2N0bF9nbnRkZXZfZ3JhbnRfY29weV9zZWdtZW50KSk7Cj4gPiA+ ID4+Pj4+ICsgICAgY29weS5jb3VudCA9IGNvdW50Owo+ID4gPiA+Pj4+PiArICAgIGZvciAoaSA9 IDA7IGkgPCBjb3VudDsgaSsrKQo+ID4gPiA+Pj4+PiArICAgIHsKPiA+ID4gPj4+Pj4gKyAgICAg ICAgY29weS5zZWdtZW50c1tpXS5mbGFncyA9IHNlZ3NbaV0uZmxhZ3M7Cj4gPiA+ID4+Pj4+ICsg ICAgICAgIGNvcHkuc2VnbWVudHNbaV0ubGVuID0gc2Vnc1tpXS5sZW47Cj4gPiA+ID4+Pj4+ICsg ICAgICAgIGlmIChzZWdzW2ldLmZsYWdzID09IEdOVENPUFlfZGVzdF9ncmVmKSAKPiA+ID4gPj4+ Pj4gKyAgICAgICAgewo+ID4gPiA+Pj4+PiArICAgICAgICAgICAgY29weS5zZWdtZW50c1tpXS5k ZXN0LmZvcmVpZ24ucmVmID0gc2Vnc1tpXS5kZXN0LmZvcmVpZ24ucmVmOwo+ID4gPiA+Pj4+PiAr ICAgICAgICAgICAgY29weS5zZWdtZW50c1tpXS5kZXN0LmZvcmVpZ24uZG9taWQgPSBzZWdzW2ld LmRlc3QuZm9yZWlnbi5kb21pZDsKPiA+ID4gPj4+Pj4gKyAgICAgICAgICAgIGNvcHkuc2VnbWVu dHNbaV0uZGVzdC5mb3JlaWduLm9mZnNldCA9IHNlZ3NbaV0uZGVzdC5mb3JlaWduLm9mZnNldDsK PiA+ID4gPj4+Pj4gKyAgICAgICAgICAgIGNvcHkuc2VnbWVudHNbaV0uc291cmNlLnZpcnQgPSBz ZWdzW2ldLnNvdXJjZS52aXJ0Owo+ID4gPiA+Pj4+PiArICAgICAgICB9IAo+ID4gPiA+Pj4+PiAr ICAgICAgICBlbHNlIAo+ID4gPiA+Pj4+PiArICAgICAgICB7Cj4gPiA+ID4+Pj4+ICsgICAgICAg ICAgICBjb3B5LnNlZ21lbnRzW2ldLnNvdXJjZS5mb3JlaWduLnJlZiA9IHNlZ3NbaV0uc291cmNl LmZvcmVpZ24ucmVmOwo+ID4gPiA+Pj4+PiArICAgICAgICAgICAgY29weS5zZWdtZW50c1tpXS5z b3VyY2UuZm9yZWlnbi5kb21pZCA9IHNlZ3NbaV0uc291cmNlLmZvcmVpZ24uZG9taWQ7Cj4gPiA+ ID4+Pj4+ICsgICAgICAgICAgICBjb3B5LnNlZ21lbnRzW2ldLnNvdXJjZS5mb3JlaWduLm9mZnNl dCA9IHNlZ3NbaV0uc291cmNlLmZvcmVpZ24ub2Zmc2V0Owo+ID4gPiA+Pj4+PiArICAgICAgICAg ICAgY29weS5zZWdtZW50c1tpXS5kZXN0LnZpcnQgPSBzZWdzW2ldLmRlc3QudmlydDsKPiA+ID4g Pj4+Pj4gKyAgICAgICAgfQo+ID4gPiA+Pj4+PiArICAgIH0KPiA+ID4gPj4+Pj4gKwo+ID4gPiA+ Pj4+PiArICAgIHJjID0gaW9jdGwoZmQsIElPQ1RMX0dOVERFVl9HUkFOVF9DT1BZLCAmY29weSk7 Cj4gPiA+ID4+Pj4+ICsgICAgaWYgKHJjKSAKPiA+ID4gPj4+Pj4gKyAgICB7Cj4gPiA+ID4+Pj4+ ICsgICAgICAgIEdURVJST1IoeGd0LT5sb2dnZXIsICJpb2N0bCBHUkFOVCBDT1BZIGZhaWxlZCAl ZCAiLCBlcnJubyk7Cj4gPiA+ID4+Pj4+ICsgICAgfQo+ID4gPiA+Pj4+PiArICAgIGVsc2UgCj4g PiA+ID4+Pj4+ICsgICAgewo+ID4gPiA+Pj4+PiArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291 bnQ7IGkrKykKPiA+ID4gPj4+Pj4gKyAgICAgICAgICAgIHNlZ3NbaV0uc3RhdHVzID0gY29weS5z ZWdtZW50c1tpXS5zdGF0dXM7Cj4gPiA+ID4+Pj4+ICsgICAgfQo+ID4gPiA+Pj4+PiArCj4gPiA+ ID4+Pj4+ICsgICAgZnJlZShjb3B5LnNlZ21lbnRzKTsKPiA+ID4gPj4+Pj4gKyAgICByZXR1cm4g cmM7Cj4gPiA+ID4+Pj4+ICt9Cj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiBJIGtub3cgV2VpIGFza2Vk IGZvciB0aGlzIGJ1dCB5b3UndmUgcmVwbGFjZWQgd2hhdCBzaG91bGQgYmUgYSBzaW5nbGUKPiA+ ID4gPj4+PiBwb2ludGVyIGFzc2lnbm1lbnQgd2l0aCBhIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCB0 d28gbG9vcHMgb3ZlciBhbGwgdGhlCj4gPiA+ID4+Pj4gc2VnbWVudHMuCj4gPiA+ID4+Pj4KPiA+ ID4gPj4+PiBUaGlzIGlzIGEgaG90IHBhdGggYW5kIHRoZSB0d28gc3RydWN0dXJlcyAodGhlIGxp YnhlbmdudHRhYiBvbmUgYW5kIHRoZQo+ID4gPiA+Pj4+IExpbnV4IGtlcm5lbCBvbmUpIGFyZSBi b3RoIHBhcnQgb2YgdGhlaXIgcmVzcGVjdGl2ZSBBQklzIGFuZCB3b24ndAo+ID4gPiA+Pj4+IGNo YW5nZSBzbyBXZWkncyBjb25jZXJuIHRoYXQgdGhleSBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVy ZSBpcyB1bmZvdW5kZWQuCj4gPiA+ID4+Pj4KPiA+ID4gPj4+Cj4gPiA+ID4+PiBUaGUgZnVuZGFt ZW50YWwgcXVlc3Rpb24gaXM6IHdpbGwgdGhlIEFCSSBiZXR3ZWVuIHRoZSBsaWJyYXJ5IGFuZCB0 aGUKPiA+ID4gPj4+IGtlcm5lbCBldmVyIGdvIG1pc21hdGNoPwo+ID4gPiA+Pj4KPiA+ID4gPj4+ IE15IGFuc3dlciBpcyAibWF5YmUiLiAgTXkgcmF0aW9uYWxlIGlzIHRoYXQgZXZlcnl0aGluZyBn b2VzIGFjcm9zcwo+ID4gPiA+Pj4gYm91bmRhcnkgb2YgY29tcG9uZW50cyBuZWVkIHRvIGJlIGNv bnNpZGVyZWQgd2l0aCBjYXV0aW9uLiBBbmQgSSB0ZW5kIHRvCj4gPiA+ID4+PiBhc3N1bWUgdGhl IHdvcnN0IHRoaW5ncyB3aWxsIGhhcHBlbi4KPiA+ID4gPj4+Cj4gPiA+ID4+PiBUbyBndWFyYW50 ZWUgdGhhdCB0aGV5IHdpbGwgbmV2ZXIgZ28gbWlzbWF0Y2ggaXMgdG8gaGF2ZQo+ID4gPiA+Pj4K PiA+ID4gPj4+ICAgIHR5cGVkZWYgaW9jdGxfZ250ZGV2X2dyYW50X2NvcHlfc2VnbWVudCB4ZW5n bnR0YWJfZ3JhbnRfY29weV9zZWdtZW50X3Q7Cj4gPiA+ID4+Pgo+ID4gPiA+Pj4gQnV0IHRoYXQn cyBub3QgaG93IHRoZSBjb2RlIGlzIHdyaXR0ZW4uCj4gPiA+ID4+Pgo+ID4gPiA+Pj4gSSB3b3Vs ZCBsaWtlIHRvIGhlYXIgYSB0aGlyZCBvcGluaW9uLiBJcyBteSBjb25jZXJuIHVuZm91bmRlZD8g QW0gSSB0b28KPiA+ID4gPj4+IGNhdXRpb3VzPyBJcyB0aGVyZSBhbnkgY29tcGVsbGluZyBhcmd1 bWVudCB0aGF0IEkgbWlzc2VkPwo+ID4gPiA+Pj4KPiA+ID4gPj4+IFNvbWV3aGF0IHJlbGF0ZWQs IGNhbiB3ZSBoYXZlIHNvbWUgbnVtYmVycyBwbGVhc2U/IEl0IGNvdWxkIHdlbGwgYmUgdGhlCj4g PiA+ID4+PiBjb3N0IG9mIHRoZSB0d28gbG9vcHMgaXMgbXVjaCBjaGVhcGVyIHRoYW4gd2hhdGV2 ZXIgaXMgZ29pbmcgb24gaW5zaWRlCj4gPiA+ID4+PiB0aGUga2VybmVsIC8gaHlwZXJ2aXNvci4g QW5kIGl0IGNvdWxkIHR1cm4gb3V0IHRoYXQgdGhlIG51bWJlcnMgcmVuZGVyCj4gPiA+ID4+PiB0 aGlzIGlzc3VlIG1vb3QuCj4gPiA+ID4+Cj4gPiA+ID4+IEkgZGlkIHNvbWUgKHZlcnkpIGFkaG9j IG1lYXN1cmVtZW50cyBhbmQgd2l0aCB0aGUgd29yc3QgY2FzZSBvZiBzaW5nbGUKPiA+ID4gPj4g c2hvcnQgc2VnbWVudHMgZm9yIGVhY2ggaW9jdGwsIHRoZSBvcHRpbWl6ZWQgdmVyc2lvbiBvZgo+ ID4gPiA+PiBvc2RlcF9nbnR0YWJfZ3JhbnRfY29weSgpIGxvb2tzIHRvIGJlIH41JSBmYXN0ZXIu Cj4gPiA+ID4+Cj4gPiA+ID4+IFRoaXMgaXMgZW5vdWdoIG9mIGEgZGlmZmVyZW5jZSB0aGF0IHdl IHNob3VsZCB1c2UgdGhlIG9wdGltaXplZCB2ZXJzaW9uLgo+ID4gPiA+Pgo+ID4gPiA+PiBUaGUg dW5vcHRpbWl6ZWQgdmVyc2lvbiBhbHNvIGFkZHMgYW4gYWRkaXRpb25hbCBmYWlsdXJlIHBhdGgg KHRoZQo+ID4gPiA+PiBjYWxsb2MpIHdoaWNoIHdvdWxkIGJlIGJlc3QgYXZvaWRlZC4KPiA+ID4g Pj4KPiA+ID4gPiAKPiA+ID4gPiBZb3VyIHRlc3QgY2FzZSBpbmNsdWRlcyBhIGxvdCBvZiAgbm9p c2UgaW4gbGliYyBhbGxvY2F0b3IsIHNvLi4uCj4gPiA+ID4gCj4gPiA+ID4gQ2FuIHlvdSBnaXZl IHRyeSB0aGUgZm9sbG93aW5nIHBhdGNoIChhcHBseSBvbiB0b3Agb2YgUGF1bGluYSdzIHBhdGNo KT8KPiA+ID4gPiBUaGUgYmFzaWMgaWRlYSBpcyB0byBwcm92aWRlIHNjcmF0Y2ggc3BhY2UgZm9y IHRoZSBzdHJ1Y3R1cmVzLiBOb3RlLCB0aGUKPiA+ID4gPiBwYXRjaCBpcyBjb21waWxlIHRlc3Qg b25seS4KPiA+ID4gWy4uLl0KPiA+ID4gPiArI2RlZmluZSBDT1BZX1NFR01FTlRfQ0FDSEVfU0la RSAxMDI0Cj4gPiA+IAo+ID4gPiBBcmJpdHJhcnkgbGltaXQgb24gbnVtYmVyIG9mIHNlZ21lbnRz Lgo+ID4gPiAKPiA+ID4gPiArICAgIGNvcHkuc2VnbWVudHMgPSB4Z3QtPm9zZGVwX2RhdGE7Cj4g PiA+IAo+ID4gPiBOb3QgdGhyZWFkIHNhZmUuCj4gPiA+IAo+ID4gCj4gPiBCb3RoIGlzc3VlcyBh cmUgcmVhbCwgYnV0IHRoaXMgaXMganVzdCBhIGdyb3NzIGhhY2sgdG8gdHJ5IHRvIGdldCBzb21l Cj4gPiBudW1iZXJzLgo+ID4gCj4gPiA+IEkgdHJpZWQgdXNpbmcgYWxsb2NhKCkgd2hpY2ggaGFz IDwxJSBwZXJmb3JtYW5jZSBwZW5hbHR5IGJ1dCB0aGUgZmFpbHVyZQo+ID4gPiBtb2RlIGZvciBh bGxvY2EoKSBpcyByZWFsbHkgYmFkIHNvIEkgd291bGQgbm90IHJlY29tbWVuZCBpdC4KPiA+ID4g Cj4gPiAKPiA+IEFncmVlZC4KPiA+IAo+ID4gQnV0IGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgc3Rh Y2ssIG1heWJlIEM5OSB2YXJpYWJsZSBsZW5ndGggYXJyYXkgd291bGQKPiA+IGRvPwo+ID4gCj4g Cj4gVGhlIG51bWJlcnMgKHN0YWNrIGJhc2VkIDwgMSUgb3ZlcmhlYWQsIGhlYXAgYmFzZWQgfjUl IG92ZXJoZWFkKSBzdWdnZXN0Cj4gdGhhdCBhbGwgdGhlIGFzc2lnbm1lbnRzIGFyZSBmYXN0LiBJ dCBpcyB0aGUgbWFsbG9jIC8gZnJlZSBwYWlyIHRoYXQgaXMKPiBzbG93Lgo+IAo+IEFuZCBhY3R1 YWxseSB3ZSBjYW4ganVzdCB1c2UgYSBjb21iaW5hdGlvbiBvZiBzdGF0aWNhbGx5IGFsbG9jYXRl ZCBzdGFjawo+IGJhc2VkIGFycmF5IGFuZCBoZWFwIGJhc2VkIGFycmF5LiBTYXksIGxldCdzIGhh dmUgYSBYIGVsZW1lbnQgYXJyYXkKPiAocGljayB0aGUgbnVtYmVyIHVzZWQgaW4gaHlwZXJ2aXNv ciBwcmVlbXB0aW9uIGNoZWNrKSwgaWYgY291bnQgPiBYLCB1c2UKPiBoZWFwIGJhc2VkIGFycmF5 ICh3aXRoIHRoZSBob3BlIHRoYXQgdGhlIGxpYmMgYWxsb2NhdGlvbiAvIGZyZWUgb3ZlcmhlYWQK PiBzaG91bGQgYmUgbWFza2VkIGJ5IHRoZSBjb3B5aW5nIG92ZXJoZWFkIGluIGh5cGVydmlzb3Ip Lgo+IAo+IFRoYXQgd291bGQgYWNoaWV2ZSBib3RoIHNhZmV0eSBhbmQgcGVyZm9ybWFuY2UsIGFu ZCByZW5kZXIgYSBsb3Qgb2YgdGhlCj4gb3RoZXIgZGlzY3Vzc2lvbnMgKHRoZSBleHBlY3RhdGlv biBvZiBhcHBsaWNhdGlvbiwgdGhlIGludGVyZmFjZSBpbgo+IG90aGVyIHBsYXRmb3JtIGV0Yykg bW9vdC4gTG9va3MgbGlrZSB0aGUgZ29vZCBzb2x1dGlvbiBmb3IgbWUuCgpJTUhPLCBJIGRvbid0 IHRoaW5rIHRoZSBjYXN0IGlzIHNwZWNpYWxseSBiYWQsIGFuZCBldmVuIGlmIHdlIGRvIHRoZSBj b3B5IAp0aGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBpb2N0bCBzdHJ1Y3R1cmUgd2UgYXJl IGNvcHlpbmcgdG8gaXMgdGhlIG9uZSAKdGhhdCB0aGUga2VybmVsIGV4cGVjdHMgaWZmIHNvbWVv bmUgY2hhbmdlZCBpdCAoYmVjYXVzZSB0aGUgZ250ZGV2IGhlYWRlciAKbGl2ZXMgaW4gdGhlIFhl biB0cmVlLCBpdCdzIG5vdCBwaWNrZWQgZnJvbSB0aGUgaG9zdCkuCgpJbiBhbnkgY2FzZSwgY2hh bmdpbmcgdGhlIGlvY3RsIGluIGFueSB3YXkgaXMgbm90IGFuIG9wdGlvbiBBRkFJQ1QsIGFuZCBp dCAKd291bGQgYmUgYSBidWcgaWYgc29tZW9uZSB0cmllZCB0byBkbyBpdC4gSWYgd2UgZXZlciBu ZWVkIHRvIGNoYW5nZSB0aGUgCmdyYW50IGNvcHkgaW9jdGwgd2Ugd291bGQgaGF2ZSB0byBpbnRy b2R1Y2UgYSBuZXcgb25lLCBsaWtlIHdlIGRpZCB3aXRoIHRoZSAKcHJpdmNtZCBmb3JlaWduIG1l bW9yeSBtYXBwaW5nIGlvY3RsLgoKV2hhdCBJIHRoaW5rIHNob3VsZCBiZSBhdm9pZGVkIGlzIHRo ZSB0eXBlZGVmIGZyb20gdGhlIExpbnV4IGlvY3RsIHN0cnVjdHVyZSAKdG8gdGhlIHB1YmxpYyBs aWJyYXJ5IGhlYWRlcnMuIEFzIFdlaSBzYXlzLCB0aGlzIGlzIE9TIGFnbm9zdGljLCBhbmQgCmFs dGhvdWdoIG90aGVyIE9TZXMgdHJ5IHRvIGZvbGxvdyBzdWl0IHRoZXJlJ3Mgbm8gZ3VhcmFudGVl IHRoYXQgdGhlIGV4YWN0IApzYW1lIHN0cnVjdHVyZSBjYW4gYmUgcmV1c2VkLiBJIHRoaW5rIHRo ZSBmdWxsIHN0cnVjdHVyZSBkZWZpbml0aW9uIGhhcyB0byAKbGl2ZSBpbiB0aGUgbGlicmFyeSBp dHNlbGYgKHdoaWNoIHdpbGwgYmUganVzdCBhIGNvcHkgb2YgCmlvY3RsX2dudGRldl9ncmFudF9j b3B5KSwgc28gb3RoZXIgT1NlcyBjYW4gcmV1c2UgaXQgZXZlbiBpZiB0aGVpciBpb2N0bCAKc3Ry dWN0dXJlIGlzIHNsaWdodGx5IGRpZmZlcmVudC4gVGhlIExpbnV4IHNwZWNpZmljIGltcGxlbWVu dGF0aW9uIGNhbiBhZGQgCnNvbWUgc3RhdGljIGFzc2VydHMgaW4gb3JkZXIgdG8gbWFrZSBzdXJl IGl0IGRvZXNuJ3QgY2hhbmdlLCBhbmQgdGhlbiBqdXN0IApkbyBhIHN0cmFpZ2h0IGNhc3QuCgpS b2dlci4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=