From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Tyshchenko Subject: Re: [PATCH v2 00/13] "Non-shared" IOMMU support on ARM Date: Tue, 1 Aug 2017 14:08:20 +0300 Message-ID: References: <1501003615-15274-1-git-send-email-olekstysh@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dcV2F-0003v7-Vc for xen-devel@lists.xenproject.org; Tue, 01 Aug 2017 11:08:24 +0000 Received: by mail-it0-f47.google.com with SMTP id h199so6278232ith.1 for ; Tue, 01 Aug 2017 04:08:22 -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: "Tian, Kevin" Cc: "xen-devel@lists.xenproject.org" , Oleksandr Tyshchenko List-Id: xen-devel@lists.xenproject.org SGksIEtldmluCgpPbiBUdWUsIEF1ZyAxLCAyMDE3IGF0IDY6MDYgQU0sIFRpYW4sIEtldmluIDxr ZXZpbi50aWFuQGludGVsLmNvbT4gd3JvdGU6Cj4+IEZyb206IE9sZWtzYW5kciBUeXNoY2hlbmtv IFttYWlsdG86b2xla3N0eXNoQGdtYWlsLmNvbV0KPj4gU2VudDogTW9uZGF5LCBKdWx5IDMxLCAy MDE3IDc6NTggUE0KPj4KPj4gSGksIEtldmluCj4+Cj4+IE9uIE1vbiwgSnVsIDMxLCAyMDE3IGF0 IDg6NTcgQU0sIFRpYW4sIEtldmluIDxrZXZpbi50aWFuQGludGVsLmNvbT4gd3JvdGU6Cj4+ID4+ IEZyb206IE9sZWtzYW5kciBUeXNoY2hlbmtvCj4+ID4+IFNlbnQ6IFdlZG5lc2RheSwgSnVseSAy NiwgMjAxNyAxOjI3IEFNCj4+ID4+Cj4+ID4+IEZyb206IE9sZWtzYW5kciBUeXNoY2hlbmtvIDxv bGVrc2FuZHJfdHlzaGNoZW5rb0BlcGFtLmNvbT4KPj4gPj4KPj4gPj4gSGksIGFsbC4KPj4gPj4K Pj4gPj4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXRjaCBzZXJpZXMgaXMgdG8gY3JlYXRlIGEgYmFz ZSBmb3IgcG9ydGluZwo+PiA+PiBhbnkgIk5vbi1zaGFyZWQiIElPTU1VcyB0byBYZW4gb24gQVJN LiBTYXlpbmcgIk5vbi1zaGFyZWQiIElPTU1VCj4+IEkKPj4gPj4gbWVhbgo+PiA+PiB0aGUgSU9N TVUgdGhhdCBjYW4ndCBzaGFyZSB0aGUgcGFnZSB0YWJsZSB3aXRoIHRoZSBDUFUuCj4+ID4KPj4g PiBJcyAibm9uLXNoYXJlZCIgSU9NTVUgYSBzdGFuZGFyZCB0ZXJtaW5vbG9neSBpbiBBUk0gc2lk ZT8gSSBxdWlja2x5Cj4+ID4gc2VhcmNoZWQgdG8gZmluZCBpdCBtb3N0bHkgdXNlZCBpbiB0aGlz IHRocmVhZC4uLgo+PiBJIGRvbid0IHRoaW5rIHRoYXQgaXQgaXMgYSBzdGFuZGFyZCB0ZXJtaW5v bG9neS4KPj4KPj4gPgo+PiA+IE9uIHRoZSBvdGhlciBoYW5kLCBhbGwgSU9NTVVzIHN1cHBvcnQg YSBiYXNpYyBETUEgcmVtYXBwaW5nCj4+ID4gbWVjaGFuaXNtIHdpdGggcGFnZSB0YWJsZSBub3Qg c2hhcmVkIHdpdGggQ1BVLiBUaGVuIHNvbWUgSU9NTVVzCj4+ID4gbWF5IG9wdGlvbmFsIHN1cHBv cnQgU2hhcmVkIFZpcnR1YWwgTWVtb3J5IChTVk0pIHRocm91Z2ggcGFnZQo+PiA+IHNoYXJpbmcg d2l0aCBDUFUuIFRoZW4gSSdtIG5vdCBzdXJlIHdoeSBuZWVkIHRvIGhpZ2hsaWdodCB0aGUKPj4g PiAibm9uLXNoYXJlZCIgbWFubmVyIGluIHRoaXMgdGhyZWFkLCBpbnN0ZWFkIG9mIGp1c3Qgc2F5 aW5nCj4+ID4gSVBNTVUtVk1TQSBzdXBwb3J0Li4uCj4+IEkgd291bGRuJ3QgdXNlICJJUE1NVS1W TVNBIHN1cHBvcnQiIGluIHRoaXMgdGhyZWFkIHNpbmNlIGl0IG1heSBiZSBhbnkKPj4gb3RoZXIg SU9NTVVzIHdoaWNoIGNhbid0IHNoYXJlIHBhZ2UgdGFibGUKPj4gd2l0aCBDUFUgYmVjYXVzZSBv ZiBmb3JtYXQgaW5jb21wYXRpYmlsaXRpZXMuCj4KPiBBcyBJIGNvbW1lbnRlZCB5b3UgY2FuIGFz c3VtZSBhbGwgSU9NTVVzIGNhbm5vdCBzaGFyZSBwYWdlCj4gdGFibGUgd2l0aCBDUFUgYXMgdGhl IHN0YXJ0aW5nIHBvaW50LiBJdCdzIG5vdCBnb29kIHRvIG5hbWUgYW4gSU9NTVUKPiBkcml2ZXIg YmFzZWQgb24gc3VjaCBmYWN0Lgo+Cj4+IEkgbmVlZGVkIHNvbWV0aGluZyBzaG9ydCB0byBkZXNj cmliZSBzdWNoIElPTU1VcywgYnV0LCBJZiB0aXRsZQo+PiAibm9uLXNoYXJlZCIgSU9NTVUgc291 bmRzIGNvbmZ1c2luZwo+PiBJIHdvbid0IHVzZSBpdCBhbnltb3JlLiBEbyB5b3UgaGF2ZSBzb21l dGhpbmcgaW4gbWluZD8KPgo+IElPTU1VIGRyaXZlciBuZWVkcyB0byBiZSB2ZW5kb3Igc3BlY2lm aWMuIElzIHlvdXIgZHJpdmVyIHdvcmtpbmcKPiBmb3IgYWxsIElQTU1VLVZNU0EgY29tcGF0aWJs ZSBJT01NVXMgb3Igb25seSBmb3IgUmVuZXNhcz8KPiBJZiB0aGUgbGF0dGVyLCB5b3UgbWF5IG1h a2UgdGhlIG5hbWUgZXhwbGljaXQgZm9yIHN1Y2ggcHVycG9zZS4KPgo+IGJ0dyBzaW5jZSB5b3Un cmUgcG9ydGluZyBMaW51eCBkcml2ZXIgdG8gWGVuLiBXaGF0ICdzIHRoZSBuYW1lCj4gdXNlZCBp biBMaW51eCBzaWRlPyB0aGF0IHNob3VsZCBiZSBhIGdvb2QgcmVmZXJlbmNlIHRvIHlvdS4KCkkg YW0gYWZyYWlkIGEgbWlzdW5kZXJzdGFuZGluZyB0b29rIHBsYWNlLiBMZXQgbWUgZWxhYm9yYXRl IGEgYml0IG1vcmUKYWJvdXQgdGhpcy4KClRoZSBJT01NVSBkcml2ZXIgSSBhbSBwb3J0aW5nIHRv IFhlbiBpcyBJUE1NVS1WTVNBIFsxXS4gVGhpcyBuYW1lIGlzCnVzZWQgaW4gTGludXgKYW5kIHRo aXMgbmFtZSB3YXMgcmV0YWluZWQgZHVyaW5nIHBvcnRpbmcgdG8gWGVuLiBUaGlzIGRyaXZlciBp cwppbnRlbmRlZCB0byB3b3JrIHdpdGggUmVuZXNhcyBWTVNBLWNvbXBhdGlibGUgSVBNTVVzLgpC dXQsIElQTU1VLVZNU0Egc3VwcG9ydCBpcyBub3QgYSB0YXJnZXQgZm9yIHRoZSBjdXJyZW50IHRo cmVhZCwgdGhlcmUKaXMgYW5vdGhlciB0aHJlYWQgZm9yIGFkZGluZyBpdCBbMl0uCgpUaGUgcHVy cG9zZSBvZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgdG8gY3JlYXRlIGdyb3VuZCBmb3IgSVBNTVUt Vk1TQSBJT01NVXMKKGFzIHdlbGwgYXMgb3RoZXIgSU9NTVVzIHdoaWNoIGNhbid0IHNoYXJlIHBh Z2UgdGFibGUgd2l0aCBDUFUgYmVjYXVzZQpvZiBmb3JtYXQgaW5jb21wYXRpYmlsaXRpZXMpIHRv IGJlIGZ1bmN0aW9uYWwgaW5zaWRlIFhlbiBvbiBBUk0uClRoZSBvbmx5IElPTU1VIHN1cHBvcnRl ZCB0b2RheSBpbiBYZW4gb24gQVJNIGlzIHRoZSBBUk0gU01NVSAod2hpY2gKdXNlcyB0aGUgc2Ft ZSBwYWdlIHRhYmxlIGZvcm1hdCBhcyB0aGUgQ1BVIGFuZCBjYW4gc2hhcmUgcGFnZSB0YWJsZQp3 aXRoIGl0KS4KQW5kIEFSTSBzcGVjaWZpYyBjb2RlIGFzc3VtZXMgdGhhdCBQMk0gdGFibGUgaXMg KmFsd2F5cyogc2hhcmVkIGFuZAphY3RzIGFjY29yZGluZ2x5LiBTbywgdGhpcyBwYXRjaCBzZXJp ZXMgaXMgdHJ5aW5nCnRvLCBsZXQncyBzYXksIGJyYWtlIHRoaXMgYXNzdW1wdGlvbiBhbmQgY3Jl YXRlIGVudmlyb25tZW50IHRvIGhhbmRsZQpzdWNoIElPTU1VcyBhcyB3ZWxsLgpTbywgSSBtYXkg dXNlIHRoZSB3aG9sZSBzZW50ZW5jZSBhcyBhIHBhdGNoIHNlcmllcyB0aXRsZSBpbiBvcmRlciBu b3QKdG8gY29uZnVzZSBwZW9wbGU6CiJTdXBwb3J0IElPTU1VcyB3aGljaCBkb24ndCBzaGFyZSBw YWdlIHRhYmxlIHdpdGggdGhlIENQVSBvbiBBUk0iCk5vIG9iamVjdGlvbnM/CgpQLlMuIFRoaXMg cGF0Y2ggc2VyaWVzIGFsc28gdG91Y2hlcyB4ODYgc3BlY2lmaWMgY29kZSwgaXQncyBiZWNhdXNl IEkKaGFkIHRvIG1vZGlmeSBjb21tb24gY29kZS4KClsxXSBodHRwOi8vZWxpeGlyLmZyZWUtZWxl Y3Ryb25zLmNvbS9saW51eC9sYXRlc3Qvc291cmNlL2RyaXZlcnMvaW9tbXUvaXBtbXUtdm1zYS5j ClsyXSBodHRwczovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNy0w Ny9tc2cwMjY3OS5odG1sCgo+Cj4+Cj4+ID4KPj4gPj4gUHJpbWFyaWx5LCB3ZSBhcmUgaW50ZXJl c3RlZCBpbiBJUE1NVS1WTVNBIGFuZCBJIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHRoZQo+PiA+PiBm aXJzdCBjYW5kaWRhdGUuCj4+ID4+IEl0IGlzIFZNU0EtY29tcGF0aWJsZSBJT01NVSB0aGF0IGlu dGVncmF0ZWQgaW4gdGhlIG5ld2VzdCBSZW5lc2FzIFItCj4+IENhcgo+PiA+PiBHZW4zIFNvQ3Mg KEFSTSkuCj4+ID4+IEkgYW0gYWJvdXQgdG8gcHVzaCBJUE1NVS1WTVNBIHN1cHBvcnQgaW4gYSB3 aGlsZS4KPj4gPj4KPj4gPj4gV2l0aCByZWdhcmQgdG8gdGhlIHBhdGNoIHNlcmllcywgaXQgd2Fz IHJlYmFzZWQgb24gWGVuIDQuOS4wIHJlbGVhc2UgYW5kCj4+ID4+IHRlc3RlZCBvbiBSZW5lc2Fz IFItQ2FyIEdlbjMKPj4gPj4gSDMvTTMgYmFzZWQgYm9hcmRzIHdpdGggYXBwbGllZCBJUE1NVS1W TVNBIHN1cHBvcnQ6Cj4+ID4+IC0gUGF0Y2hlcyAxIGFuZCAzIGhhdmUgSnVsaWVuJ3MgUmIuCj4+ ID4+IC0gUGF0Y2ggMiBoYXMgSmFuJ3MgUmIgYnV0IG9ubHkgZm9yIHg4NiBhbmQgZ2VuZXJpYyBw YXJ0cy4KPj4gPj4gLSBQYXRjaCA0IGhhcyBKdWxpZW4ncyBBYi4KPj4gPj4gLSBQYXRjaGVzIDUs Niw5LDEwIHdlcmUgc2xpZ2h0bHkgcmV3b3JrZWQuCj4+ID4+IC0gUGF0Y2ggNyB3YXMgc2lnbmlm aWNhbnRseSByZXdvcmtlZC4gVGhlIHByZXZpb3VzIHBhdGNoIC0+IGlvbW11OiBTcGxpdAo+PiA+ PiBpb21tdV9od2RvbV9pbml0KCkgaW50byBhcmNoIHNwZWNpZmljIHBhcnRzCj4+ID4+IC0gUGF0 Y2hlcyA4LDExLDEyLDEzIGFyZSBuZXcuCj4+ID4+Cj4+ID4+IE5vdCByZWFsbHkgc3VyZSBhYm91 dCB4ODYtcmVsYXRlZCBjaGFuZ2VzIHNpbmNlIEkgaGFkIG5vIHBvc3NpYmlsaXR5IHRvCj4+IGNo ZWNrLgo+PiA+PiBTbywgY29tcGlsZS10ZXN0ZWQgb24geDg2Lgo+PiA+Pgo+PiA+PiBZb3UgY2Fu IGZpbmQgY3VycmVudCBwYXRjaCBzZXJpZXMgaGVyZToKPj4gPj4gcmVwbzogaHR0cHM6Ly9naXRo dWIuY29tL290eXNoY2hlbmtvMS94ZW4uZ2l0IGJyYW5jaDoKPj4gPj4gbm9uX3NoYXJlZF9pb21t dV92Mgo+PiA+Pgo+PiA+PiBQcmV2aW91cyBwYXRjaCBzZXJpZXMgaGVyZToKPj4gPj4gW1BBVENI IHYxIDAwLzEwXSAiTm9uLXNoYXJlZCIgSU9NTVUgc3VwcG9ydCBvbiBBUk0KPj4gPj4gaHR0cHM6 Ly93d3cubWFpbC1hcmNoaXZlLmNvbS94ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZy9tc2cxMDc1MzIu aHRtbAo+PiA+Pgo+PiA+PiBbUkZDIFBBVENIIDAvOV0gIk5vbi1zaGFyZWQiIElPTU1VIHN1cHBv cnQgb24gQVJNCj4+ID4+IGh0dHBzOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20veGVuLWRldmVsQGxp c3RzLnhlbi5vcmcvbXNnMTAwNDY4Lmh0bWwKPj4gPj4KPj4gPj4gVGhhbmsgeW91Lgo+PiA+Pgo+ PiA+PiBPbGVrc2FuZHIgVHlzaGNoZW5rbyAoMTMpOgo+PiA+PiAgIHhlbi9kZXZpY2UtdHJlZTog QWRkIGR0X2NvdW50X3BoYW5kbGVfd2l0aF9hcmdzIGhlbHBlcgo+PiA+PiAgIGlvbW11OiBBZGQg ZXh0cmEgb3JkZXIgYXJndW1lbnQgdG8gdGhlIElPTU1VIEFQSXMgYW5kIHBsYXRmb3JtCj4+ID4+ ICAgICBjYWxsYmFja3MKPj4gPj4gICB4ZW4vYXJtOiBwMm06IEFkZCBoZWxwZXIgdG8gY29udmVy dCBwMm0gdHlwZSB0byBJT01NVSBmbGFncwo+PiA+PiAgIHhlbi9hcm06IHAybTogVXBkYXRlIElP TU1VIG1hcHBpbmcgd2hlbmV2ZXIgcG9zc2libGUgaWYgcGFnZSB0YWJsZQo+PiBpcwo+PiA+PiAg ICAgbm90IHNoYXJlZAo+PiA+PiAgIGlvbW11L2FybTogUmUtZGVmaW5lIGlvbW11X3VzZV9oYXBf cHQoZCkgYXMgaW9tbXVfaGFwX3B0X3NoYXJlCj4+ID4+ICAgaW9tbXU6IEFkZCBleHRyYSB1c2Vf aW9tbXUgYXJndW1lbnQgdG8gaW9tbXVfZG9tYWluX2luaXQoKQo+PiA+PiAgIGlvbW11OiBNYWtl IGRlY2lzaW9uIGFib3V0IG5lZWRpbmcgSU9NTVUgZm9yIGhhcmR3YXJlIGRvbWFpbnMgaW4KPj4g Pj4gICAgIGFkdmFuY2UKPj4gPj4gICBpb21tdS9hcm06IE1pc2MgZml4ZXMgZm9yIGFyY2ggc3Bl Y2lmaWMgcGFydAo+PiA+PiAgIHhlbi9hcm06IEFkZCB1c2VfaW9tbXUgZmxhZyB0byB4ZW5fYXJj aF9kb21haW5jb25maWcKPj4gPj4gICB4ZW4vYXJtOiBkb21haW5fYnVpbGQ6IERvbid0IGV4cG9z ZSBJT01NVSBzcGVjaWZpYyBwcm9wZXJ0aWVzIHRvIHRoZQo+PiA+PiAgICAgZ3Vlc3QKPj4gPj4g ICBpb21tdS9hcm06IHNtbXU6IFNxdWFzaCBtYXBfcGFnZXMvdW5tYXBfcGFnZXMgd2l0aAo+PiA+ PiBtYXBfcGFnZS91bm1hcF9wYWdlCj4+ID4+ICAgW1JGQ10gaW9tbXU6IFZULWQ6IFNxdWFzaCBt YXBfcGFnZXMvdW5tYXBfcGFnZXMgd2l0aAo+PiA+PiAgICAgbWFwX3BhZ2UvdW5tYXBfcGFnZQo+ PiA+PiAgIFtSRkNdIGlvbW11OiBBTUQtVmk6IFNxdWFzaCBtYXBfcGFnZXMvdW5tYXBfcGFnZXMg d2l0aAo+PiA+PiAgICAgbWFwX3BhZ2UvdW5tYXBfcGFnZQo+PiA+Pgo+PiA+PiAgdG9vbHMvbGli eGwvbGlieGxfYXJtLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsKPj4gPj4gIHhlbi9h cmNoL2FybS9kb21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+PiA+PiAg eGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jICAgICAgICAgICAgICAgICAgIHwgIDEwICsrCj4+ ID4+ICB4ZW4vYXJjaC9hcm0vcDJtLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAg Ky0KPj4gPj4gIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQo+PiA+PiAgeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDExICstCj4+ID4+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jICAgICAgICAgICAg ICAgICAgICAgfCAgMjEgKy0tCj4+ID4+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgICAgICAg ICAgICAgICAgICAgICAgfCAgMjYgKy0tLQo+PiA+PiAgeGVuL2FyY2gveDg2L21tL3AybS5jICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDM4ICstLS0tCj4+ID4+ICB4ZW4vYXJjaC94ODYveDg2 XzY0L21tLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KPj4gPj4gIHhlbi9jb21tb24v ZGV2aWNlX3RyZWUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCj4+ID4+ICB4ZW4vY29t bW9uL2dyYW50X3RhYmxlLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KPj4gPj4gIHhl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYyAgICAgICB8IDIxMgo+PiArKysr KysrKysrKysrKystLS0tCj4+ID4+IC0tLS0tLS0KPj4gPj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL2FtZC9wY2lfYW1kX2lvbW11LmMgICB8ICAxMCArLQo+PiA+PiAgeGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYXJtL2lvbW11LmMgICAgICAgICAgIHwgICA3ICstCj4+ID4+ICB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jICAgICAgICAgICAgfCAgMjMgKystCj4+ID4+ICB4ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jICAgICAgICAgICAgICAgfCAgNzMgKysrKy0tLS0t Cj4+ID4+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyAgICAgICAgICAgfCAx MTYgKysrKysrKysrLS0tLS0KPj4gPj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYv dnRkLmMgICAgICAgICB8ICAgNCArLQo+PiA+PiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2 L2lvbW11LmMgICAgICAgICAgIHwgICA2ICstCj4+ID4+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2lv bW11LmggICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KPj4gPj4gIHhlbi9pbmNsdWRlL2FzbS1h cm0vcDJtLmggICAgICAgICAgICAgICAgICAgICB8ICAzNCArKysrKwo+PiA+PiAgeGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oIHwgICA4ICstCj4+ID4+ICB4ZW4v aW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaCAgICAgICAgICAgICAgICAgfCAgIDUgKwo+PiA+PiAg eGVuL2luY2x1ZGUveGVuL2RldmljZV90cmVlLmggICAgICAgICAgICAgICAgIHwgIDE5ICsrKwo+ PiA+PiAgeGVuL2luY2x1ZGUveGVuL2lvbW11LmggICAgICAgICAgICAgICAgICAgICAgIHwgIDI0 ICstLQo+PiA+PiAgMjYgZmlsZXMgY2hhbmdlZCwgNDAyIGluc2VydGlvbnMoKyksIDI5MyBkZWxl dGlvbnMoLSkKPj4gPj4KPj4gPj4gLS0KPj4gPj4gMi43LjQKPj4gPj4KPj4gPj4KPj4gPj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gPj4gWGVuLWRl dmVsIG1haWxpbmcgbGlzdAo+PiA+PiBYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+PiA+PiBodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCj4+Cj4+Cj4+Cj4+IC0tCj4+IFJlZ2FyZHMsCj4+ Cj4+IE9sZWtzYW5kciBUeXNoY2hlbmtvCgoKCi0tIApSZWdhcmRzLAoKT2xla3NhbmRyIFR5c2hj aGVua28KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=