From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: about mmap dma-buf and sync Date: Fri, 21 Aug 2015 16:15:53 +0200 Message-ID: <55D73299.3000704@vmware.com> References: <55D50442.5080102@intel.com> <55D57837.4080301@vmware.com> <20150820145340.GA2309@gmail.com> <55D62CE0.5060904@shipmail.org> <20150820203437.GA3973@gmail.com> <55D6B633.2070103@vmware.com> <20150821133221.GA3244@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp-outbound-1.vmware.com (smtp-outbound-1.vmware.com [208.91.2.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A9536E681 for ; Fri, 21 Aug 2015 07:15:58 -0700 (PDT) In-Reply-To: <20150821133221.GA3244@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jerome Glisse Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gMDgvMjEvMjAxNSAwMzozMiBQTSwgSmVyb21lIEdsaXNzZSB3cm90ZToKPiBPbiBGcmksIEF1 ZyAyMSwgMjAxNSBhdCAwNzoyNTowN0FNICswMjAwLCBUaG9tYXMgSGVsbHN0cm9tIHdyb3RlOgo+ PiBPbiAwOC8yMC8yMDE1IDEwOjM0IFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+Pj4gT24gVGh1 LCBBdWcgMjAsIDIwMTUgYXQgMDk6Mzk6MTJQTSArMDIwMCwgVGhvbWFzIEhlbGxzdHJvbSB3cm90 ZToKPj4+PiBPbiAwOC8yMC8yMDE1IDA0OjUzIFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+Pj4+ PiBPbiBUaHUsIEF1ZyAyMCwgMjAxNSBhdCAwODo0ODoyM0FNICswMjAwLCBUaG9tYXMgSGVsbHN0 cm9tIHdyb3RlOgo+Pj4+Pj4gSGksIFRpYWdvIQo+Pj4+Pj4KPj4+Pj4+IE9uIDA4LzIwLzIwMTUg MTI6MzMgQU0sIFRpYWdvIFZpZ25hdHRpIHdyb3RlOgo+Pj4+Pj4+IEhleSBUaG9tYXMsIHlvdSBo YXZlbid0IGFuc3dlcmVkIG15IGVtYWlsIGFib3V0IG1ha2luZyBTWU5DXyogbWFuZGF0b3J5Ogo+ Pj4+Pj4+Cj4+Pj4+Pj4gaHR0cHM6Ly91cmxkZWZlbnNlLnByb29mcG9pbnQuY29tL3YyL3VybD91 PWh0dHAtM0FfX2xpc3RzLmZyZWVkZXNrdG9wLm9yZ19hcmNoaXZlc19kcmktMkRkZXZlbF8yMDE1 LTJEQXVndXN0XzA4ODM3Ni5odG1sJmQ9QlFJREF3JmM9U3FjbDBFejZNMFg4YWVNNjdMS0lpREpB WFZlQXctWWloVk1OdFh0LXVFcyZyPXZwdWtQa0J0cG9OUXAySVVLdUZ2aU9tUE5ZV1ZLbWVuM0pl ZXU1NXptRUEmbT1FWDN3OFBNNzlONXFMZVh5b2dlU1BOOUo1cEl2QlY2SUtyaEJqendKREVNJnM9 UzNOcUYwa1BOdEJLUTMtV2lmZkwyVDlORks5NlhCcDU2dmtiM3VqZi1pbyZlPSAKPj4+Pj4+IEht bSwgZm9yIHNvbWUgcmVhc29uIGl0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBteSBtYWlsIGFwcCwgYnV0 IEkgZm91bmQgaXQKPj4+Pj4+IGluIHRoZSBhcmNoaXZlcy4gQW4gYXR0ZW1wdCB0byBleHBsYWlu IHRoZSBzaXR1YXRpb24gZnJvbSB0aGUgdm13Z2Z4Cj4+Pj4+PiBwZXJzcGVjdGl2ZS4KPj4+Pj4+ Cj4+Pj4+PiBUaGUgZmFjdCB0aGF0IHRoZSBpbnRlcmZhY2UgaXMgZ2VuZXJpYyBtZWFucyB0aGF0 IHBlb3BsZSB3aWxsIHN0YXJ0Cj4+Pj4+PiB1c2luZyBpdCBmb3IgdGhlIHplcm8tY29weSBjYXNl LiBUaGVyZSBoYXMgYmVlbiBhIGNvdXBsZSBvZiBtb3JlIG9yIGxlc3MKPj4+Pj4+IGhhY2tpc2gg YXR0ZW1wdHMgdG8gZG8gdGhpcyBiZWZvcmUsIGFuZCBpZiBpdCdzIGEgX2RyaXZlcl8gaW50ZXJm YWNlIHdlCj4+Pj4+PiBkb24ndCBuZWVkIHRvIGJlIHRoYXQgY2FyZWZ1bCBidXQgaWYgaXQgaXMg YSBfZ2VuZXJpY18gaW50ZXJmYWNlIHdlIG5lZWQKPj4+Pj4+IHRvIGJlIHZlcnkgY2FyZWZ1bCB0 byBtYWtlIGl0IGZpdCAqYWxsKiB0aGUgaGFyZHdhcmUgb3V0IHRoZXJlIGFuZCB0aGF0Cj4+Pj4+ PiB3ZSBtYWtlIGFsbCBwb3RlbnRpYWwgdXNlcnMgdXNlIHRoZSBpbnRlcmZhY2UgaW4gYSB3YXkg dGhhdCBjb25mb3Jtcwo+Pj4+Pj4gd2l0aCB0aGUgaW50ZXJmYWNlIHNwZWNpZmljYXRpb24uCj4+ Pj4+Pgo+Pj4+Pj4gV2hhdCB3aWxsIGhhcHBlbiBvdGhlcndpc2UgaXMgdGhhdCBhcHBzIHdyaXR0 ZW4gZm9yIGNvaGVyZW50IGZhc3QKPj4+Pj4+IGhhcmR3YXJlIG1pZ2h0LCBmb3IgZXhhbXBsZSwg aWdub3JlIGNhbGxpbmcgdGhlIFNZTkMgYXBpLCBqdXN0IGJlY2F1c2UKPj4+Pj4+IHRoZSBhcHAg d3JpdGVyIG9ubHkgY2FyZWQgYWJvdXQgaGlzIG93biBoYXJkd2FyZSBvbiB3aGljaCB0aGUgYXBw IHdvcmtzCj4+Pj4+PiBmaW5lLiBUaGF0IHdvdWxkIGZhaWwgbWlzZXJhYmx5IGlmIHRoZSBzYW1l IGFwcCB3YXMgcnVuIG9uIGluY29oZXJlbnQKPj4+Pj4+IGhhcmR3YXJlLCBvciB0aGUgaW5jb2hl cmVudCBoYXJkd2FyZSBkcml2ZXIgbWFpbnRhaW5lcnMgd291bGQgYmUgZm9yY2VkCj4+Pj4+PiB0 byBiYXNlIGFuIGltcGxlbWVudGF0aW9uIG9uIHBhZ2UtZmF1bHRzIHdoaWNoIHdvdWxkIGJlIHZl cnkgc2xvdy4KPj4+Pj4+Cj4+Pj4+PiBTbyBhc3N1bWUgdGhlIGZvbGxvd2luZyB1c2UgY2FzZTog QW4gYXBwIHVwZGF0ZXMgYSAxMHgxMCBhcmVhIHVzaW5nIHRoZQo+Pj4+Pj4gQ1BVIG9uIGEgMTYw MHgxMjAwIGRtYS1idWYsIGFuZCBpdCB3aWxsIHRoZW4gdXNlIHRoZSBkbWEtYnVmIGZvcgo+Pj4+ Pj4gdGV4dHVyaW5nLiBPbiBzb21lIGhhcmR3YXJlIHRoZSBkbWEtYnVmIG1pZ2h0IGJlIHRpbGVk IGluIGEgdmVyeQo+Pj4+Pj4gc3BlY2lmaWMgd2F5LCBvbiB2bXdnZnggdGhlIGRtYS1idWYgaXMg YSBHUFUgYnVmZmVyIG9uIHRoZSBob3N0LCBvbmx5Cj4+Pj4+PiBhY2Nlc3NpYmxlIHVzaW5nIERN QS4gT24gdm13Z2Z4IHRoZSBTWU5DIG9wZXJhdGlvbiBtdXN0IGNhcnJ5IG91dCBhCj4+Pj4+PiAx MHgxMCBETUEgZnJvbSB0aGUgaG9zdCBHUFUgYnVmZmVyIHRvIGEgZ3Vlc3QgQ1BVIGJ1ZmZlciBi ZWZvcmUgdGhlIENQVQo+Pj4+Pj4gd3JpdGUgYW5kIGEgRE1BIGJhY2sgYWdhaW4gYWZ0ZXIgdGhl IHdyaXRlLCBiZWZvcmUgR1BVIHVzYWdlLiBPbiB0aGUKPj4+Pj4+IHRpbGVkIGFyY2hpdGVjdHVy ZSB0aGUgU1lOQyBvcGVyYXRpb24gbXVzdCB1bnRpbGUgYmVmb3JlIENQVSBhY2Nlc3MgYW5kCj4+ Pj4+PiBwcm9iYWJseSB0aWxlIGFnYWluIGJlZm9yZSBHUFUgYWNjZXNzLgo+Pj4+Pj4KPj4+Pj4+ IElmIHdlIG5vdyBoYXZlIGEgb25lLWRpbWVuc2lvbmFsIFNZTkMgYXBpLCBpbiB0aGlzIHBhcnRp Y3VsYXIgY2FzZSB3ZSdkCj4+Pj4+PiBlaXRoZXIgbmVlZCB0byBzeW5jIGEgZmFyIHRvbyBsYXJn ZSBhcmVhICgxNjAweDEwKSBvciBjYWxsIFNZTkMgMTAgdGltZXMKPj4+Pj4+IGJlZm9yZSB3cml0 aW5nLCBhbmQgdGhlbiBhZ2FpbiBhZnRlciB3cml0aW5nLiBJZiB0aGUgYXBwIGZvcmdvdCB0byBj YWxsCj4+Pj4+PiBTWU5DIHdlIG11c3QgZXJyb3IuCj4+Pj4+Pgo+Pj4+Pj4gU28gdG8gc3VtbWFy aXplLCB0aGUgZmFjdCB0aGF0IHRoZSBpbnRlcmZhY2UgaXMgZ2VuZXJpYyBJTU8gbWVhbnM6Cj4+ Pj4+Pgo+Pj4+Pj4gMSkgQW55IHVzZXIgbXVzdCBiZSBhYmxlIHRvIG1ha2UgdmFsaWQgYXNzdW1w dGlvbnMgYWJvdXQgdGhlIGludGVybmFsCj4+Pj4+PiBmb3JtYXQgb2YgdGhlIGRtYS1idWYuICh1 bnRpbGVkLCBjb2xvciBmb3JtYXQsIHN0cmlkZSBldGMuKQo+Pj4+Pj4gMikgQW55IHVzZXIgKm11 c3QqIGNhbGwgU1lOQyBiZWZvcmUgYW5kIGFmdGVyIENQVSBhY2Nlc3MuIE9uIGNvaGVyZW50Cj4+ Pj4+PiBhcmNoaXRlY3R1cmVzLCB0aGUgU1lOQyBpcyBhIE5VTEwgb3BlcmF0aW9uIGFueXdheSwg YW5kIHRoYXQgc2hvdWxkIGJlCj4+Pj4+PiBkb2N1bWVudGVkIHNvbWV3aGVyZSBzbyB0aGF0IG1h aW50YWluZXJzIG9mIGRyaXZlcnMgb2YgdW5jb2hlcmVudAo+Pj4+Pj4gYXJjaGl0ZWN0dXJlcyBo YXZlIHNvbWV3aGVyZSB0byBwb2ludCB0aGVpciBmaW5nZXJzLgo+Pj4+Pj4gMykgRHJpdmVyLXNw ZWNpZmljIGltcGxlbWVudGF0aW9ucyBtdXN0IGJlIGFsbG93ZWQgdG8gZXJyb3IgKHNlZ2ZhdWx0 KQo+Pj4+Pj4gaWYgU1lOQyBoYXMgbm90IGJlZW4gdXNlZC4KPj4+Pj4gSSB0aGluayBoZXJlIHlv dSBhcmUgdG9vIGxheCwgdGhlIGNvbW1vbiBjb2RlIG11c3Qgc2VnZmF1bHQgb3IKPj4+Pj4gZXJy b3IgYmFkbHkgaWYgU1lOQyBoYXMgbm90IGJlZW4gdXNlIGluIGFsbCBjYXNlcyBldmVuIG9uIGNh Y2hlCj4+Pj4+IGNvaGVyZW50IGFyY2guIFRoZSBkZXZpY2UgZHJpdmVyIHN5bmMgY2FsbGJhY2sg Y2FuIHN0aWxsIGJlIGEKPj4+Pj4gbm8gb3BlcmF0aW9uLiBCdXQgaSB0aGluayB0aGF0IHdlIG5l ZWQgdG8gaW5zaXN0IHN0cm9uZ2x5IG9uIGEKPj4+Pj4gcHJvcGVyIHN5bmMgY2FsbCBiZWluZyBt YWRlIChhbmQgd2Ugc2hvdWxkIGZvcmJpZCBlbXB0eSBhcmVhCj4+Pj4+IHN5bmMgY2FsbCkuIFRo aXMgd291bGQgYmUgdGhlIG9ubHkgd2F5IHRvIG1ha2Ugc3VyZSB1c2Vyc3BhY2UKPj4+Pj4gYmVo YXZlIHByb3Blcmx5IGFzIG90aGVyd2lzZSB3ZSBlbmR1cCBpbiB0aGUgc2l0dWF0aW9uIHlvdSB3 ZXJlCj4+Pj4+IGRlc2NyaWJpbmcgYWJvdmUsIHdoZXJlIHRoZSBhcHAgaXMgZGVzaWduIG9uIGEg Y2FjaGUgY29oZXJlbnQKPj4+Pj4gYXJjaCBhbmQgd29ya3MgZmluZSB0aGVyZSBidXQgYnJva2Ug aW4gc3VidGxlIHdheSBvbiBub24gY2FjaGUKPj4+Pj4gY29oZXJlbnQgYXJjaCBhbmQgYXBwIGRl dmVsb3BlciBpcyBjbHVlbGVzcyBvZiB3aHkuCj4+Pj4+Cj4+Pj4+IEkganVzdCBkbyBub3QgdHJ1 c3QgdXNlcnNwYWNlLgo+Pj4+IEkgYWdyZWUgYW5kIGlkZWFsbHkgaSdkIHdhbnQgaXQgdGhpcyB3 YXkgYXMgd2VsbC4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdAo+Pj4+IHBvc3NpYmxlPyBDYW4gdGhp cyBiZSBkb25lIHdpdGhvdXQgYSBmYXVsdCgpIGhhbmRsZXIgaW4gdGhlIGdlbmVyaWMKPj4+PiBr ZXJuZWwgY29kZT8KPj4+Pgo+Pj4+Pj4gNCkgVGhlIHVzZS1jYXNlIHN0YXRlZCBhYm92ZSBjbGVh cmx5IHNob3dzIHRoZSBiZW5lZml0IG9mIGEKPj4+Pj4+IDItZGltZW5zaW9uYWwgc3luYyBpbnRl cmZhY2UgKHdlIHdhbnQgdG8gc3luYyB0aGUgMTB4MTAgcmVnaW9uKSwgYnV0Cj4+Pj4+PiB3aGF0 IGlmIHNvbWVvbmUgaW4gdGhlIGZ1dHVyZSB3YW50cyB0byB1c2UgdGhpcyBpbnRlcmZhY2UgZm9y IGEgM0QKPj4+Pj4+IHRleHR1cmU/IFdpbGwgYSAyRCBzeW5jIHN1ZmZpY2U/IENhbiB3ZSBtYWtl IHRoZSBTWU5DIGludGVyZmFjZQo+Pj4+Pj4gZXh0ZW5kYWJsZSBpbiBhIHdheSB0aGF0IGFuIGVu dW0gc3luY190eXBlIG1lbWJlciBkZWZpbmVzIHRoZSBsYXlvdXQgb2YKPj4+Pj4+IHRoZSBhcmd1 bWVudCwgYW5kIGluaXRpYWxseSB3ZSBpbXBsZW1lbnQgb25seSAxZCwgMmQgc3luYywgbGVhdmlu ZyAzZAo+Pj4+Pj4gZm9yIHRoZSBmdXR1cmU/Cj4+Pj4+Pgo+Pj4+Pj4gQWxzbywgSSBhZ3JlZSB0 aGVyZSBpcyBwcm9iYWJseSBubyBnb29kIHdheSB0byBnZW5lcmljYWxseSBpbXBsZW1lbnQgYW4K Pj4+Pj4+IGVycm9yIGlmIFNZTkMgaGFzIG5vdCBiZWVuIGNhbGxlZC4gVGhhdCBuZWVkcyB0byBi ZSBsZWZ0IGFzIGFuIG9wdGlvbiB0bwo+Pj4+Pj4gZHJpdmVycy4KPj4+Pj4gSSB0aGluayB0aGVy ZSBpcywganVzdCBmb3JiaWQgYW55IGZ1cnRoZXIgdXNlIG9mIHRoZSBkbWEgYnVmZmVyLCBtYXJr Cj4+Pj4+IGl0IGFzIGludmFsaWQgYW5kIHByaW50ayBhIGJpZyBlcnJvci4gVXNlcnNwYWNlIGFw cCBkZXZlbG9wZXIgd2lsbAo+Pj4+PiBxdWlja2x5IHNlZSB0aGF0IHNvbWV0aGluZyBpcyB3cm9u ZyBhbmQgbG9va2luZyBhdCBrZXJuZWwgbG9nIHNob3VsZAo+Pj4+PiBleHBsYWluIHdoeS4KPj4+ PiBUaGUgcHJvYmxlbSBpcyBpZiBzb21lb25lIGNhbGxzIG1tYXAoKSBhbmQgdGhlbiBkZWNpZGVz IHRvIG5vdCBhY2Nlc3MKPj4+PiB0aGUgYnVmZmVyIGJlZm9yZSBtdW5tYXAoKSBvciBHUFUgdXNh Z2UuIEhvdyBkbyB3ZSByZWNvZ25pemUgdGhhdCBjYXNlCj4+Pj4gYW5kIHNlcGFyYXRlIGl0IGZy b20gYSBDUFUgYWNjZXNzIG9jY3VyZWQgb3V0c2lkZSBhIHN5bmM/IFdlIGNvdWxkLCBhcwo+Pj4+ IG1lbnRpb25lZCBhYm92ZSBoYXZlIGEgZmF1bHQoKSBoYW5kbGVyIGluIHRoZSBnZW5lcmljIGtl cm5lbCBjb2RlIGFuZAo+Pj4+IG1ha2Ugc3VyZSBkcml2ZXJzIGRvbid0IHBvcHVsYXRlIFBURXMg dW50aWwgdGhlIGZpcnN0IGZhdWx0KCkuIEFub3RoZXIKPj4+PiBvcHRpb24gd291bGQgYmUgdG8g c2NhbiBhbGwgUFRFcyBmb3IgYW4gImFjY2Vzc2VkIiBmbGFnLCBidXQgSSdtIG5vdAo+Pj4+IGV2 ZW4gc3VyZSBhbGwgQ1BVIGFyY2hpdGVjdHVyZXMgaGF2ZSBzdWNoIGEgZmxhZz8KPj4+Pgo+Pj4+ IEJ1dCB0aGVyZSBtaWdodCBiZSBhIHNpbXBsZXIgc29sdXRpb24gdGhhdCBJIGhhdmUgb3Zlcmxv b2tlZD8KPj4+IEFsbCBhcmNoIGhhdmUgYSBkaXJ0eSBmbGFnLCBzbyB5b3UgY291bGQgY2hlY2sg dGhhdCwgYXMgYWxsIHdlCj4+PiByZWFsbHkgY2FyZSBhYm91dCBpcyBDUFUgd3JpdGUgYWNjZXNz LiBTbyBhbGwgeW91IG5lZWQgaXMgY2xlYXJpbmcKPj4+IHRoZSBkaXJ0eSBiaXQgYWZ0ZXIgZWFj aCBzdWNjZXNzZnVsbCBHUFUgY29tbWFuZCBzdHJlYW0gaW9jdGwKPj4+IGFuZCBjaGVja2luZyB0 aGF0IG5vIGRpcnR5IGJpdCBpcyBzZXQgaW4gYSByZWdpb24gbm90IGNvdmVyIGJ5Cj4+PiBhIGZs dXNoKCkuIE5vdGUgdGhhdCB0aGUgY2xlYXIgYW5kIGNoZWNrIGNhbiBoYXBwZW4gaW4gdGhlIHNh bWUKPj4+IGZ1bmN0aW9uIGFzIHBhcnQgb2YgYnVmZmVyIHZhbGlkYXRpb24gZm9yIHRoZSBHUFUg Y29tbWFuZCBzdHJlYW0uCj4+IEFjdHVhbGx5LCBJIGRvIHRoaW5rIHdlIGNhcmUgYWJvdXQgcmVh ZGluZyBhcyB3ZWxsLCBzaW5jZSByZWFkaW5nCj4+IHdpdGhvdXQgZmx1c2hpbmcgYW55dGhpbmcg d3JpdHRlbiBieSB0aGUgR1BVIHdpbGwKPj4geWllbGQgZ2FyYmFnZSBvbiBhIG5vbi1jb2hlcmVu dCBhcmNoaXRlY3R1cmUuIEluc3RlYWQgd2UgbWlnaHQgY2hlY2sgZm9yCj4+IHRoZSBQQUdFX0FD Q0VTU0VEIGJpdC4KPiBJIGRvIG5vdCB0aGluayB0aGUgcmVhZCBhY2Nlc3MgYWZ0ZXIgR1BVIG1h dHRlci4gSWYgcGVvcGxlIHRoaW5rIGl0IGRvZXMKPiB0aGVuIGl0IGlzIHNpbXBsZSwgYXQgYnVm ZmVyIHZhbGlkYXRpb24gaW4gYnVmZmVyIG1hcHBpbmcgd2UgaW52YWxpZGF0ZQo+IENQVSBwYWdl IHRhYmxlIG1hcHBpbmcgYW5kIHRoZSBwcmVwYXJlIGFjY2VzcyBpb2N0bCBwb3B1bGF0ZSB0aGVt IGFmdGVyCj4gY2hlY2tpbmcgdGhhdCBHUFUgaXMgZmx1c2guCj4KPj4gU28gdGhlIGZ1bGwgdmVy c2lvbiBvZiB0aGlzIHdvdWxkIGtlZXAgdHJhY2sgb2YgYWxsIHN5bmNlZCByZWdpb25zIGFuZAo+ PiBhdCBidWZmZXIgdmFsaWRhdGlvbiB0aW1lLCBvciB1bm1hcCB0aW1lIGVycm9yIGlmIHRoZXJl Cj4+IGlzIGEgcGFnZSBjb21wbGV0ZWx5IG91dHNpZGUgdGhlIHVuaW9uIG9mIGFsbCBzeW5jZWQg cmVnaW9ucyBpbiBhbnkgVk1BCj4+IGJlbG9uZ2luZyB0byB0aGUgZG1hLWJ1ZiBhZGRyZXNzIHNw YWNlLCB0aGVuIHVubWFyayBhbGwgYWNjZXNzZWQgUFRFcwo+PiBhbmQgaW52YWxpZGF0ZSBUTEJz IGFjY29yZGluZ2x5LCB0eXBpY2FsbHkgY2F1c2luZyBhIGdsb2JhbCBUTEIgZmx1c2guCj4+IFll YWgsIHdlIGNvdWxkIHByb2JhYmx5IHB1dCB0b2dldGhlciBhIGhlbHBlciBmdW5jdGlvbiB0aGF0 IGRvZXMgdGhpcywKPj4gYnV0IGl0IHdpbGwgYmUgZXhwZW5zaXZlIHRvIHJ1biBhbmQgdGhlIHdo b2xlIHBvaW50IG9mIHRoaXMgQVBJIGlzIHRvIGJlCj4+IGFibGUgdG8gaW1wcm92ZSBwZXJmb3Jt YW5jZS4KPiBObyBuZWVkIGZvciBzdWNoIGNvbXBsZXhpdHksIHRoZSBzeW5jIGlvY3RsIHdvdWxk IGdvIG92ZXIgdGhlIHBhZ2UgdGFibGUKPiBhbmQgY2xlYXIgZGlydHkgYml0IGZvciBhbGwgcGFn ZSBpbiByYW5nZSB0aGF0IGlzIHN5bmNocm9uaXplZC4gU28gb25jZQo+IHlvdSBnZXQgdG8gdGhl IGNvbW1hbmQgaW9jdGwgeW91IGtub3cgdGhhdCBhbGwgZGlydHkgYml0IG11c3QgYmUgY2xlYXIu Cj4gTm90ZSB0aGlzIGlzIG9ubHkgYSBwYWdlIHRhYmxlIHdhbGsgaW4gYWxsIGNhc2UuIEkgZG8g bm90IGNvbnNpZGVyIHRoaXMKPiB0byBiZSB0aGF0IGV4cGVuc2l2ZS4KPgo+ClRoZSBleHBlbnNp dmUgcGFydCBpcyB0aGUgVExCIGZsdXNoaW5nIGFmdGVyIHRoZSBQVEUgdXBkYXRlLCB3aGljaAp0 eXBpY2FsbHkgbmVlZHMgdG8gYmUgcGVyZm9ybWVkIG9uIGFsbCBjb3Jlcy4gQWx0aG91Z2ggd2l0 aG91dCBhCmJlbmNobWFyayBJJ20gbm90IHN1cmUgaG93IGV4cGVuc2l2ZS4gSXQgbWlnaHQgYmUg dGhhdCBpdCBkb2Vzbid0Cm1hdHRlci4gQWZ0ZXIgYWxsLCB0aGUgdm13Z2Z4LSBhbmQgSSBiZWxp ZXZlIHRoZSBxeGwgZHJpdmVyIGJvdGggdXNlIGEKc2ltaWxhciBhcHByb2FjaCBmb3IgZmJkZXYg dXNlci1zcGFjZSBhY2Nlc3MsIGJ1dCB0aGF0IGhhcyBuZXZlciBiZWVuCmNvc2lkZXJlZCBwZXJm b3JtYW5jZS1jcml0aWNhbC4uLgoKL1Rob21hcwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK