From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/4] dma-buf: add optional invalidate_mappings callback Date: Thu, 15 Mar 2018 10:20:13 +0100 Message-ID: <20180315092013.GC25297@phenom.ffwll.local> References: <20180309191144.1817-1-christian.koenig@amd.com> <20180309191144.1817-2-christian.koenig@amd.com> <20180312170710.GL8589@phenom.ffwll.local> <20180313151721.GH4788@phenom.ffwll.local> <2866813a-f2ab-0589-ee40-30935e59d3d7@gmail.com> <20180313160052.GK4788@phenom.ffwll.local> <052a6595-9fc3-48a6-9366-67ca2f2da17e@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <052a6595-9fc3-48a6-9366-67ca2f2da17e-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: christian.koenig-5C7GfCeVMHo@public.gmane.org Cc: linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Vetter , linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org T24gVHVlLCBNYXIgMTMsIDIwMTggYXQgMDY6MjA6MDdQTSArMDEwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAxMy4wMy4yMDE4IHVtIDE3OjAwIHNjaHJpZWIgRGFuaWVsIFZldHRlcjoK PiA+IE9uIFR1ZSwgTWFyIDEzLCAyMDE4IGF0IDA0OjUyOjAyUE0gKzAxMDAsIENocmlzdGlhbiBL w7ZuaWcgd3JvdGU6Cj4gPiA+IEFtIDEzLjAzLjIwMTggdW0gMTY6MTcgc2NocmllYiBEYW5pZWwg VmV0dGVyOgo+ID4gPiBbU05JUF0KPiA+IE9rLCBzbyBwbGFuIGlzIHRvIHN1cHBvcnQgZnVsbHkg cGlwZWxpbmUgbW92ZXMgYW5kIGV2ZXJ5dGhpbmcsIHdpdGggdGhlCj4gPiBvbGQgc2cgdGFibGVz IGxhemlseSBjbGVhbmVkIHVwLiBJIHdhcyB0aGlua2luZyBtb3JlIGFib3V0IGV2aWN0aW5nIHN0 dWZmCj4gPiBhbmQgdGhyb3dpbmcgaXQgb3V0LCB3aGVyZSB0aGVyZSdzIG5vdCBnb2luZyB0byBi ZSBhbnkgbmV3IHNnIGxpc3QgYnV0IHRoZQo+ID4gb2JqZWN0IGlzIGdvaW5nIHRvIGJlIHN3YXBw ZWQgb3V0Lgo+IAo+IFllcywgZXhhY3RseS4gV2VsbCBteSBleGFtcGxlIHdhcyB0aGUgdW5saWtl bHkgY2FzZSB3aGVuIHRoZSBvYmplY3QgaXMKPiBzd2FwcGVkIG91dCBhbmQgaW1tZWRpYXRlbHkg c3dhcHBlZCBpbiBhZ2FpbiBiZWNhdXNlIHNvbWVib2R5IG5lZWRzIGl0Lgo+IAo+ID4gCj4gPiBJ IHRoaW5rIHNvbWUgc3RhdGUgZmxvdyBjaGFydHMgKHdlIGNhbiBkbyBTVkcgb3IgRE9UKSBpbiB0 aGUga2VybmVsZG9jCj4gPiB3b3VsZCBiZSBzd2VldC5ZZWFoLCBwcm9iYWJseSBhIGdvb2QgaWRl YS4KPiAKPiBTb3VuZHMgZ29vZCBhbmQgSSBmaW5kIGl0IGdyZWF0IHRoYXQgeW91J3JlIHZvbHVu dGVlcmluZyBmb3IgdGhhdCA6RAo+IAo+IE9rIHNlcmlvdXNseSwgbXkgZHJhd2luZyBjYXBhYmls aXRpZXMgYXJlIGEgYml0IHVuZGVyZGV2ZWxvcGVkLiBTbyBJIHdvdWxkCj4gcHJlZmVyIGlmIHNv bWVib2R5IGNvdWxkIGF0IGxlYXN0IGhlbHAgd2l0aCB0aGF0LgoKVGFrZSBhIGxvb2sgYXQgdGhl IERPVCBncmFwaHMgZm9yIGF0b21pYyBJJ3ZlIGRvbmUgYSB3aGlsZSBhZ28uIEkgdGhpbmsgd2UK Y291bGQgbWFrZSBhIGZvcm1pZGFibGUgY29tcGV0aXRpb24gZm9yIHdobydzIGRvaW5nIHRoZSB3 b3JzdCBkaWFncmFtcyA6LSkKCj4gPiA+ID4gUmUgR1BVIG1pZ2h0IGNhdXNlIGEgZGVhZGxvY2s6 IElzbid0IHRoYXQgYWxyZWFkeSBhIHByb2JsZW0gaWYgeW91IGhvbGQKPiA+ID4gPiByZXNlcnZh dGlvbnMgb2YgYnVmZmVycyB1c2VkIG9uIG90aGVyIGdwdXMsIHdoaWNoIHdhbnQgdGhvc2UgcmVz ZXJ2YXRpb25zCj4gPiA+ID4gdG8gY29tcGxldGUgdGhlIGdwdSByZXNldCwgYnV0IHRoYXQgZ3B1 IHJlc2V0IGJsb2NrcyBzb21lIGZlbmNlIHRoYXQgdGhlCj4gPiA+ID4gcmVzZXJ2YXRpb24gaG9s ZGVyIGlzIHdhaXRpbmcgZm9yPwo+ID4gPiBDb3JyZWN0LCB0aGF0J3Mgd2h5IGFtZGdwdSBhbmQg VFRNIHRyaWVzIHF1aXRlIGhhcmQgdG8gbmV2ZXIgd2FpdCBmb3IgYQo+ID4gPiBmZW5jZSB3aGls ZSBhIHJlc2VydmF0aW9uIG9iamVjdCBpcyBsb2NrZWQuCj4gPiBXZSBtaWdodCBoYXZlIGEgZmFp cmx5IGh1Z2UgbWlzbWF0Y2ggb2YgZXhwZWN0YXRpb25zIGhlcmUgOi0vCj4gCj4gV2hhdCBkbyB5 b3UgbWVhbiB3aXRoIHRoYXQ/CgppOTE1IGV4cGVjdHMgdGhhdCBvdGhlciBkcml2ZXJzIGRvbid0 IGhhdmUgdGhpcyByZXF1aXJlbWVudC4gT3VyIGdwdSByZXNldApjYW4gcHJvY2VlZCBldmVuIGlm IGl0J3MgYWxsIGxvY2tlZCBkb3duLgoKPiA+ID4gVGhlIG9ubHkgdXNlIGNhc2UgSSBoYXZlbid0 IGZpeGVkIHNvIGZhciBpcyByZWFwaW5nIGRlbGV0ZWQgb2JqZWN0IGR1cmluZwo+ID4gPiBldmlj dGlvbiwgYnV0IHRoYXQgaXMgb25seSBhIG1hdHRlciBvZiBteSBmcmVlIHRpbWUgdG8gZml4IGl0 Lgo+ID4gWWVhaCwgdGhpcyBpcyB0aGUgaGFyZCBvbmUuCj4gCj4gQWN0dWFsbHkgaXQgaXNuJ3Qg c28gaGFyZCwgaXQncyBqdXN0IHRoYXQgSSBkaWRuJ3QgaGFkIHRpbWUgc28gZmFyIHRvIGNsZWFu Cj4gaXQgdXAgYW5kIHdlIG5ldmVyIGhpdCB0aGF0IGlzc3VlIHNvIGZhciBkdXJpbmcgb3VyIHJl c2V0IHRlc3RpbmcuCj4gCj4gVGhlIG1haW4gcG9pbnQgbWlzc2luZyBqdXN0IGEgYml0IG9mIGZ1 bmN0aW9uYWxpdHkgaW4gdGhlIHJlc2VydmF0aW9uIG9iamVjdAo+IGFuZCBDaHJpcyBhbmQgSSBh bHJlYWR5IGhhZCBhIGdvb2QgaWRlYSBob3cgdG8gaW1wbGVtZW50IHRoYXQuCj4gCj4gPiBJbiBn ZW5lcmFsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgZG1hX2ZlbmNlIHdpbGwgZ2V0IHNpZ25hbGxl ZCBubyBtYXR0ZXIKPiA+IHdoYXQgeW91J3JlIGRvaW5nLCBhc3N1bWluZyB0aGUgb25seSB0aGlu ZyB5b3UgbmVlZCBpcyB0byBub3QgYmxvY2sKPiA+IGludGVycnVwdHMuIFRoZSBpOTE1IGdwdSBy ZXNldCBsb2dpYyB0byBtYWtlIHRoYXQgd29yayBpcyBhIGJpdCBhIHdvcmsgb2YKPiA+IGFydCAu Li4KPiAKPiBDb3JyZWN0LCBidXQgSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB0aGF0IGlzIHNvIGhh cmQgb24gaTkxNT8gT3VyIEdQVQo+IHNjaGVkdWxlciBtYWtlcyBhbGwgb2YgdGhhdCByYXRoZXIg dHJpdmlhbCwgZS5nLiBmZW5jZXMgZWl0aGVyIHNpZ25hbAo+IGNvcnJlY3RseSBvciBhcmUgYWJv cnRlZCBhbmQgc2V0IGFzIGVycm9uZW91cyBhZnRlciBhIHRpbWVvdXQuCgpZZXMsIGk5MTUgZG9l cyB0aGUgc2FtZS4gSXQncyB0aGUgbG9ja2luZyByZXF1aXJlbWVudCB3ZSBkaXNhZ3JlZSBvbiwg aTkxNQpjYW4gcmVzZXQgd2hpbGUgaG9sZGluZyBsb2Nrcy4gSSB0aGluayByaWdodCBub3cgd2Ug ZG9uJ3QgcmVzZXQgd2hpbGUKaG9sZGluZyByZXNlcnZhdGlvbiBsb2NrcywgYnV0IG9ubHkgd2hp bGUgaG9sZGluZyBvdXIgb3duIGxvY2tzLiBJIHRoaW5rCmNyb3NzLXJlbGVhc2Ugd291bGQgaGVs cCBtb2RlbCB1cyB0aGlzIGFuZCB1bmNvdmVyIGFsbCB0aGUgZnVubnkKZGVwZW5kZW5jeSBsb29w cyB3ZSBoYXZlLgoKVGhlIGlzc3VlIEknbSBzZWVpbmc6CgphbWRncHU6IEV4cGVjdHMgdGhhdCB5 b3UgbmV2ZXIgaG9sZCBhbnkgb2YgdGhlIGhlYXZ5d2hlaWdodCBsb2NrcyB3aGlsZQp3YWl0aW5n IGZvciBhIGZlbmNlIChzaW5jZSBncHUgcmVzZXRzIHdpbGwgbmVlZCB0aGVtKS4KCmk5MTU6IEhh cHBpbHkgYmxvY2tzIG9uIGZlbmNlcyB3aGlsZSBob2xkaW5nIGFsbCBraW5kcyBvZiBsb2Nrcywg ZXhwZWN0cwpncHUgcmVzZXQgdG8gYmUgYWJsZSB0byByZWNvdmVyIGV2ZW4gaW4gdGhpcyBjYXNl LgoKQm90aCBkcml2ZXJzIGVpdGhlciBjb21wbGV0ZSB0aGUgZmVuY2UgKHdpdGggb3Igd2l0aG91 dCBzZXR0aW5nIHRoZSBlcnJvcgpzdGF0dXMgdG8gRUlPIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQp LCB0aGF0J3Mgbm90IHRoZSBkaWZmZXJlbmNlLiBUaGUgd29yawpvZiBhcnQgSSByZWZlcmVuY2Vk IGlzIGhvdyB3ZSBtYW5hZ2VkIHRvIGNvbXBsZXRlIGdwdSByZXNldCAoaW5jbHVkaW5nCnJlc3Vi bWl0dGluZykgd2hpbGUgaG9sZGluZyBwbGVudHkgb2YgbG9ja3MuCgo+ID4gSWYgd2UgZXhwZWN0 IGFtZGdwdSBhbmQgaTkxNSB0byBjb29wZXJhdGUgd2l0aCBzaGFyZWQgYnVmZmVycyBJIGd1ZXNz IG9uZQo+ID4gaGFzIHRvIGdpdmUgaW4uIE5vIGlkZWEgaG93IHRvIGRvIHRoYXQgYmVzdC4KPiAK PiBBZ2FpbiBhdCBsZWFzdCBmcm9tIGFtZGdwdSBzaWRlIEkgZG9uJ3Qgc2VlIG11Y2ggb2YgYW4g aXNzdWUgd2l0aCB0aGF0LiBTbwo+IHdoYXQgZXhhY3RseSBkbyB5b3UgaGF2ZSBpbiBtaW5kIGhl cmU/Cj4gCj4gPiA+ID4gV2UgaGF2ZSB0b25zIG9mIGZ1biB3aXRoIGRlYWRsb2NrcyBhZ2FpbnN0 IEdQVSByZXNldHMsIGFuZCBsb29vb29vdHMgb2YKPiA+ID4gPiB0ZXN0Y2FzZXMsIGFuZCBJIGtp bmRhIGdldCB0aGUgaW1wcmVzc2lvbiBhbWRncHUgaXMgdGhyb3dpbmcgYSBsb3Qgb2YKPiA+ID4g PiBpc3N1ZXMgdW5kZXIgdGhlIHJ1ZyB0aHJvdWdoIHRyeWxvY2sgdHJpY2tzIHRoYXQgc2h1dCB1 cCBsb2NrZGVwLCBidXQKPiA+ID4gPiBkb24ndCBmaXggbXVjaCByZWFsbHkuCj4gPiA+IEh1aT8g V2h5IGRvIHlvdSB0aGluayB0aGF0PyBUaGUgb25seSB0cnlsb2NrIEknbSBhd2FyZSBvZiBpcyBk dXJpbmcgZXZpY3Rpb24KPiA+ID4gYW5kIHRoZXJlIGl0IGlzbid0IGEgcHJvYmxlbS4KPiA+IG1t YXAgZmF1bHQgaGFuZGxlciBoYWQgb25lIHRvbyBsYXN0IHRpbWUgSSBsb29rZWQsIGFuZCBpdCBz bWVsbGVkIGZpc2h5Lgo+IAo+IEdvb2QgcG9pbnQsIG5ldmVyIHdyYXBwZWQgbXkgaGVhZCBmdWxs eSBhcm91bmQgdGhhdCBvbmUgZWl0aGVyLgo+IAo+ID4gPiA+IGJ0dyBhZGRpbmcgY3Jvc3MtcmVs ZWFzZSBsb2NrZGVwIGFubm90YXRpb25zIGZvciBmZW5jZXMgd2lsbCBwcm9iYWJseSB0dXJuCj4g PiA+ID4gdXAgX2xvdHNfIG1vcmUgYnVncyBpbiB0aGlzIGFyZWEuCj4gPiA+IEF0IGxlYXN0IGZv ciBhbWRncHUgdGhhdCBzaG91bGQgYmUgaGFuZGxlZCBieSBub3cuCj4gPiBZb3UncmUgc3VyZT8g Oi0pCj4gCj4gWWVzLCBleGNlcHQgZm9yIGZhbGxiYWNrIHBhdGhzIGFuZCBib290dXAgc2VsZiB0 ZXN0cyB3ZSBzaW1wbHkgbmV2ZXIgd2FpdAo+IGZvciBmZW5jZXMgd2hpbGUgaG9sZGluZyBsb2Nr cy4KClRoYXQncyBub3Qgd2hhdCBJIG1lYW50IHdpdGggImFyZSB5b3Ugc3VyZSIuIERpZCB5b3Ug ZW5hYmxlIHRoZQpjcm9zcy1yZWxlYXNlIHN0dWZmIChhZnRlciBwYXRjaGluZyB0aGUgYnVuY2gg b2YgbGVmdG92ZXIgY29yZSBrZXJuZWwKaXNzdWVzIHN0aWxsIHByZXNlbnQpLCBhbm5vdGF0ZSBk bWFfZmVuY2Ugd2l0aCB0aGUgY3Jvc3MtcmVsZWFzZSBzdHVmZiwKcnVuIGEgYnVuY2ggb2YgbXVs dGktZHJpdmVyIChhbWRncHUgdnMgaTkxNSkgZG1hLWJ1ZiBzaGFyaW5nIHRlc3RzIGFuZAp3ZWVw PwoKSSBkaWRuJ3QgZG8gdGhlIGZ1bGwgdGhpbmcgeWV0LCBidXQganVzdCB3aXRoaW4gaTkxNSB3 ZSd2ZSBmb3VuZCB0b25zIG9mCnNtYWxsIGxpdHRsZSBkZWFkbG9ja3Mgd2UgbmV2ZXIgcmVhbGx5 IGNvbnNpZGVyZWQgdGhhbmtzIHRvIGNyb3NzIHJlbGVhc2UsCmFuZCB0aGF0IHdhc24ndCBldmVu IGluY2x1ZGluZyB0aGUgZG1hX2ZlbmNlIGFubm90YXRpb24uIEx1Y2tpbHkgbm90aGluZwp0aGF0 IG5lZWRlZCBhIGZ1bGwtb24gZHJpdmVyIHJlZGVzaWduLgoKSSBndWVzcyBJIG5lZWQgdG8gcGlu ZyBjb3JlIGtlcm5lbCBtYWludGFpbmVycyBhYm91dCBjcm9zcy1yZWxlYXNlIGFnYWluLgpJJ2Qg bXVjaCBwcmVmZXIgaWYgd2UgY291bGQgdmFsaWRhdGUgLT5pbnZhbGlkYXRlX21hcHBpbmcgYW5k IHRoZQpsb2NraW5nL2ZlbmNlIGRlcGVuZGVuY3kgaXNzdWVzIHVzaW5nIHRoYXQsIGluc3RlYWQg b2YgbWUgaGF2aW5nIHRvIHJlYWQKYW5kIHVuZGVyc3RhbmQgYWxsIHRoZSBkcml2ZXJzLgoKPiA+ IFRyb3VibGUgaXMgdGhhdCBjcm9zcy1yZWxlYXNlIHdhc24ndCBldmVuIGV2ZXIgZW5hYmxlZCwg bXVjaCBsZXNzIGFueW9uZQo+ID4gdHlwZWQgdGhlIGRtYV9mZW5jZSBhbm5vdGF0aW9ucy4gQW5k IGp1c3QgY3Jvc3MtcmVsZWFzZSBhbG9uZSB0dXJuZWQgdXAKPiA+IF9sb3N0XyBvZiBkZWFkbG9j a3MgaW4gaTkxNSBiZXR3ZWVuIGZlbmNlcywgYXN5bmMgd29ya2VycyAodXNlcnB0ciwgZ3B1Cj4g PiByZXNldCkgYW5kIGNvcmUgbW0gc3R1ZmYuCj4gCj4gWWVhaCwgd2UgaGFkIGxvdHMgb2YgZnVu IHdpdGggdGhlIG1tIGxvY2tzIGFzIHdlbGwgYnV0IGFzIGZhciBhcyBJIGtub3cKPiBGZWxpeCBh bmQgSSBhbHJlYWR5IGZpeGVkIGFsbCBvZiB0aGVtLgoKQXJlIHlvdSBzdXJlIHlvdSBtZWFuIGNy b3NzLXJlbGVhc2UgZnVuLCBhbmQgbm90IGp1c3Qgbm9ybWFsIGxvY2tkZXAgZnVuPwpUaGUgY3Jv c3MtcmVsZWFzZSBpcyBvcmRlcnMgb2YgbWFnbml0dWRlIG1vcmUgbmFzdHkgaW1vLiBBbmQgd2Ug aGFkIGEgZmV3CmRpc2N1c3Npb25zIHdpdGggY29yZSBmb2xrcyB3aGVyZSB0aGV5IHRvbGQgdXMg Im5vIHdheSB3ZSdyZSBnb2luZyB0bwpicmVhayB0aGlzIGRlcGVuY3kgb24gb3VyIHNpZGUiLCBp bnZvbHZpbmcgYSBjaGFpbiBvZiBjcHUgaG90cGx1Zwooc3VzcGVuZC9yZXN1bWUgZG9lcyB0aGF0 IHRvIHNodXQgZG93biBub24tYm9vdCBjcHVzKSwgd29ya2VyIHRocmVhZHMsCnVzZXJwdHIsIGdl bSBsb2NraW5nIGFuZCBjb3JlIG1tLiBBbGwgY29tcG9uZW50cyByZXF1aXJlZCB0byBhY3R1YWxs eQpjbG9zZSB0aGUgbG9vcC4KCkkgZmVhciB0aGF0IHdpdGggdGhlIC0+aW52YWxpZGF0ZV9tYXBw aW5nIGNhbGxiYWNrICh3aGljaCBpbnZlcnRzIHRoZQpjb250cm9sIGZsb3cgYmV0d2VlbiBpbXBv cnRlciBhbmQgZXhwb3J0ZXIpIGFuZCB0eWluZyBkbWFfZmVuY2VzIGludG8gYWxsCnRoaXMgaXQg d2lsbCBiZSBhIF9sb3RfIHdvcnNlLiBBbmQgSSdtIGRlZmluaXRlbHkgdG9vIHN0dXBpZCB0byB1 bmRlcnN0YW5kCmFsbCB0aGUgZGVwZW5kZW5jeSBjaGFpbnMgd2l0aG91dCB0aGUgYWlkIG9mIGxv Y2tkZXAgYW5kIGEgZnVsbCB0ZXN0IHN1aXRlCih3ZSBoYXZlIGEgYnVuY2ggb2YgYW1kZ3B1L2k5 MTUgZG1hLWJ1ZiB0ZXN0cyBpbiBpZ3QgYnR3KS4KLURhbmllbAoKPiAKPiBDaHJpc3RpYW4uCj4g Cj4gPiBJJ2QgYmUgc2VyaW91c2x5IHN1cnByaXNlZCBpZiBpdCB3b3VsZG4ndCBmaW5kIGFuIGVu dGlyZSByYXRzIG5lc3Qgb2YKPiA+IGlzc3VlcyBhcm91bmQgZG1hX2ZlbmNlIG9uY2Ugd2UgZW5h YmxlIGl0Lgo+ID4gLURhbmllbAo+ID4gCj4gPiA+ID4gPiA+ID4gKwkgKgo+ID4gPiA+ID4gPiA+ ICsJICogTmV3IG1hcHBpbmdzIGNhbiBiZSBjcmVhdGVkIGltbWVkaWF0ZWx5LCBidXQgY2FuJ3Qg YmUgdXNlZCBiZWZvcmUgdGhlCj4gPiA+ID4gPiA+ID4gKwkgKiBleGNsdXNpdmUgZmVuY2UgaW4g dGhlIGRtYV9idWZzIHJlc2VydmF0aW9uIG9iamVjdCBpcyBzaWduYWxlZC4KPiA+ID4gPiA+ID4g PiArCSAqLwo+ID4gPiA+ID4gPiA+ICsJdm9pZCAoKmludmFsaWRhdGVfbWFwcGluZ3MpKHN0cnVj dCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCk7Cj4gPiA+ID4gPiA+IEJ1bmNoIG9mIHF1ZXN0 aW9ucyBhYm91dCBleGFjdCBzZW1hbnRpY3MsIGJ1dCBJIHZlcnkgbXVjaCBsaWtlIHRoaXMuIEFu ZCBJCj4gPiA+ID4gPiA+IHRoaW5rIGJlc2lkZXMgdGhvc2UgdGVjaG5pY2FsIGRldGFpbHMsIHRo ZSBvdmVyYWxsIGFwcHJvYWNoIHNlZW1zIHNvdW5kLgo+ID4gPiA+ID4gWWVhaCB0aGlzIGluaXRp YWwgaW1wbGVtZW50YXRpb24gd2FzIGJ1Z2d5IGxpa2UgaGVsbC4gSnVzdCB3YW50ZWQgdG8gY29u ZmlybQo+ID4gPiA+ID4gdGhhdCB0aGUgaWRlYSBpcyBnb2luZyBpbiB0aGUgcmlnaHQgZGlyZWN0 aW9uLgo+ID4gPiA+IEkgd2FudGVkIHRoaXMgNyB5ZWFycyBhZ28sIGlkZWEgdmVyeSBtdWNoIGFj a2VkIDotKQo+ID4gPiA+IAo+ID4gPiBPaywgdGhhbmtzLiBHb29kIHRvIGtub3cuCj4gPiA+IAo+ ID4gPiBDaHJpc3RpYW4uCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwg SW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==