From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Starkey Subject: Re: [RFC PATCH 00/11] Introduce writeback connectors Date: Tue, 11 Oct 2016 20:44:22 +0100 Message-ID: <20161011194422.GC14337@e106950-lin.cambridge.arm.com> References: <1476197648-24918-1-git-send-email-brian.starkey@arm.com> <20161011154359.GD20761@phenom.ffwll.local> <20161011164305.GA14337@e106950-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by gabe.freedesktop.org (Postfix) with ESMTP id 374A76E736 for ; Tue, 11 Oct 2016 19:44:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Liviu Dudau , Linux Kernel Mailing List , dri-devel , Hans Verkuil , "linux-media@vger.kernel.org" List-Id: dri-devel@lists.freedesktop.org SGksCgpPbiBUdWUsIE9jdCAxMSwgMjAxNiBhdCAwNzowMTozM1BNICswMjAwLCBEYW5pZWwgVmV0 dGVyIHdyb3RlOgo+T24gVHVlLCBPY3QgMTEsIDIwMTYgYXQgNjo0MyBQTSwgQnJpYW4gU3Rhcmtl eSA8YnJpYW4uc3RhcmtleUBhcm0uY29tPiB3cm90ZToKPj4gSGkgRGFuaWVsLAo+Pgo+PiBGaXJz dGx5IHRoYW5rcyB2ZXJ5IG11Y2ggZm9yIGhhdmluZyBhIGxvb2suCj4+Cj4+Cj4+IE9uIFR1ZSwg T2N0IDExLCAyMDE2IGF0IDA1OjQzOjU5UE0gKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+ Pgo+Pj4gT24gVHVlLCBPY3QgMTEsIDIwMTYgYXQgMDM6NTM6NTdQTSArMDEwMCwgQnJpYW4gU3Rh cmtleSB3cm90ZToKPj4+Pgo+Pj4+IEhpLAo+Pj4+Cj4+Pj4gVGhpcyBSRkMgc2VyaWVzIGludHJv ZHVjZXMgYSBuZXcgY29ubmVjdG9yIHR5cGU6Cj4+Pj4gIERSTV9NT0RFX0NPTk5FQ1RPUl9XUklU RUJBQ0sKPj4+PiBJdCBpcyBhIGZvbGxvdy1vbiBmcm9tIGEgcHJldmlvdXMgZGlzY3Vzc2lvbjog WzFdCj4+Pj4KPj4+PiBXcml0ZWJhY2sgY29ubmVjdG9ycyBhcmUgdXNlZCB0byBleHBvc2UgdGhl IG1lbW9yeSB3cml0ZWJhY2sgZW5naW5lcwo+Pj4+IGZvdW5kIGluIHNvbWUgZGlzcGxheSBjb250 cm9sbGVycywgd2hpY2ggY2FuIHdyaXRlIGEgQ1JUQydzCj4+Pj4gY29tcG9zaXRpb24gcmVzdWx0 IHRvIGEgbWVtb3J5IGJ1ZmZlci4KPj4+PiBUaGlzIGlzIHVzZWZ1bCBlLmcuIGZvciB0ZXN0aW5n LCBzY3JlZW4tcmVjb3JkaW5nLCBzY3JlZW5zaG90cywKPj4+PiB3aXJlbGVzcyBkaXNwbGF5LCBk aXNwbGF5IGNsb25pbmcsIG1lbW9yeS10by1tZW1vcnkgY29tcG9zaXRpb24uCj4+Pj4KPj4+PiBQ YXRjaGVzIDEtNyBpbmNsdWRlIHRoZSBjb3JlIGZyYW1ld29yayBjaGFuZ2VzIHJlcXVpcmVkLCBh bmQgcGF0Y2hlcwo+Pj4+IDgtMTEgaW1wbGVtZW50IGEgd3JpdGViYWNrIGNvbm5lY3RvciBmb3Ig dGhlIE1hbGktRFAgd3JpdGViYWNrIGVuZ2luZS4KPj4+PiBUaGUgTWFsaS1EUCBwYXRjaGVzIGRl cGVuZCBvbiB0aGlzIG90aGVyIHNlcmllczogWzJdLgo+Pj4+Cj4+Pj4gVGhlIGNvbm5lY3RvciBp cyBnaXZlbiB0aGUgRkJfSUQgcHJvcGVydHkgZm9yIHRoZSBvdXRwdXQgZnJhbWVidWZmZXIsCj4+ Pj4gYW5kIHR3byBuZXcgcmVhZC1vbmx5IHByb3BlcnRpZXM6IFBJWEVMX0ZPUk1BVFMgYW5kCj4+ Pj4gUElYRUxfRk9STUFUU19TSVpFLCB3aGljaCBleHBvc2UgdGhlIHN1cHBvcnRlZCBmcmFtZWJ1 ZmZlciBwaXhlbAo+Pj4+IGZvcm1hdHMgb2YgdGhlIGVuZ2luZS4KPj4+Pgo+Pj4+IFRoZSBFRElE IHByb3BlcnR5IGlzIG5vdCBleHBvc2VkIGZvciB3cml0ZWJhY2sgY29ubmVjdG9ycy4KPj4+Pgo+ Pj4+IFdyaXRlYmFjayBjb25uZWN0b3IgdXNhZ2U6Cj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPj4+PiBEdWUgdG8gY29ubmVjdG9yIHJvdXRpbmcgY2hhbmdlcyBiZWluZyB0cmVhdGVk IGFzICJmdWxsIG1vZGVzZXQiCj4+Pj4gb3BlcmF0aW9ucywgYW55IGNsaWVudCB3aGljaCB3aXNo ZXMgdG8gdXNlIGEgd3JpdGViYWNrIGNvbm5lY3Rvcgo+Pj4+IHNob3VsZCBpbmNsdWRlIHRoZSBj b25uZWN0b3IgaW4gZXZlcnkgbW9kZXNldC4gVGhlIHdyaXRlYmFjayB3aWxsIG5vdAo+Pj4+IGFj dHVhbGx5IGJlY29tZSBhY3RpdmUgdW50aWwgYSBmcmFtZWJ1ZmZlciBpcyBhdHRhY2hlZC4KPj4+ Cj4+Pgo+Pj4gRXJobSwgdGhpcyBpcyBqdXN0IHRoZSBkZWZhdWx0LCBkcml2ZXJzIGNhbiBvdmVy cmlkZSB0aGlzLiBBbmQgd2UgY291bGQKPj4+IGNoYW5nZSB0aGUgYXRvbWljIGhlbHBlcnMgdG8g bm90IG1hcmsgYSBtb2Rlc2V0IGFzIGEgbW9kZXNldCBpZiB0aGUKPj4+IGNvbm5lY3RvciB0aGF0 IGNoYW5nZWQgaXMgYSB3cml0ZWJhY2sgb25lLgo+Pj4KPj4KPj4gSG1tLCBtYXliZS4gSSBkb24n dCB0aGluayBpdCdzIGlkZWFsIC0gdGhlIGRyaXZlciB3b3VsZCBuZWVkIHRvCj4+IHJlLWltcGxl bWVudCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0LCB3aGljaCBpcyBxdWl0ZSBhIGNo dW5rCj4+IG9mIGNvZGUgKGFsb25nIHdpdGggZXhwb3NpbmcgdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0 aW5nLCBtb2RlX2ZpeHVwLAo+PiBtYXliZSBvdGhlcnMpLCBhbmQgZXZlbiBhZnRlciB0aGF0IGl0 IHdvdWxkIGhhdmUgdG8gbGllIGFuZCBzZXQKPj4gY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFu Z2VkIHRvIGZhbHNlIHNvIHRoYXQKPj4gZHJtX2NydGNfbmVlZHNfbW9kZXNldCByZXR1cm5zIGZh bHNlIHRvIGRybV9hdG9taWNfY2hlY2tfb25seS4KPgo+WW91IG9ubHkgbmVlZCB0byB1cGRhdGUg dGhlIHByb3BlcnR5IGluIHlvdXIgZW5jb2RlcnMncyAtPmF0b21pY19jaGVjawo+ZnVuY3Rpb24u IE5vIG5lZWQgZm9yIG1vcmUsIGFuZCBJIHRoaW5rIGJlaW5nIGNvbnNpc3RlbnQgd2l0aAo+Y29t cHV0aW5nIHdoZW4geW91IG5lZWQgYSBtb2Rlc2V0IGlzIHJlYWxseSBhIGNydWNpYWwgcGFydCBv ZiB0aGUKPmF0b21pYyBpb2N0bCB0aGF0IHdlIHNob3VsZCBpbW8gdHJ5IHRvIGltcGxlbWVudCBj b3JyZWN0bHkgYXMgbXVjaCBhcwo+cG9zc2libGUuCj4KClNvcnJ5IEkgcmVhbGx5IGRvbid0IGZv bGxvdy4gV2hpY2ggcHJvcGVydHk/IENSVENfSUQ/CgpVc2Vyc3BhY2UgY2hhbmdpbmcgQ1JUQ19J RCB3aWxsIGNoYW5nZSBjb25uZWN0b3Jfc3RhdGUtPmNydGMgKGJlZm9yZQp3ZSBldmVuIGdldCB0 byBhIGRyaXZlciBjYWxsYmFjaykuCgpBZnRlciB0aGF0LCBkcm1fYXRvbWljX2hlbHBlcl9jaGVj a19tb2Rlc2V0IGRlcml2ZXMgY29ubmVjdG9yc19jaGFuZ2VkCmJhc2VkIG9uIHRoZSAtPmNydGMg cG9pbnRlcnMuCgpBZnRlciB0aGF0LCBteSBlbmNvZGVyIC0+YXRvbWljX2NoZWNrICpjb3VsZCog Y2xlYXIKY29ubmVjdG9yc19jaGFuZ2VkIChvciBJIGNvdWxkIGFjaGlldmUgdGhlIHNhbWUgdGhp bmcgYnkgd3JhcHBpbmcKZHJtX2F0b21pY19oZWxwZXJfY2hlY2spLCBidXQgaXQgc2VlbXMgd3Jv bmcgdG8gZG8gc28sIGNvbnNpZGVyaW5nCnRoYXQgdGhlIGNvbm5lY3RvciByb3V0aW5nICpoYXMq IGNoYW5nZWQuCgpJZiB5b3UgdGhpbmsgY2hhbmdpbmcgQ1JUQ19JRCBzaG91bGRuJ3QgcmVxdWly ZSBhIGZ1bGwgbW9kZXNldCwgSSdkCnJhdGhlciBnaXZlIGRyaXZlcnMgYSAtPm5lZWRzX21vZGVz ZXQgY2FsbGJhY2sgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKZHJtX2F0b21pY19jcnRjX25lZWRz X21vZGVzZXQgYmVoYXZpb3VyLCBpbnN0ZWFkIG9mICJ0cmlja2luZyIgaXQgaW50bwpyZXR1cm5p bmcgZmFsc2UuCgpJIGNhbiBpbWFnaW5lIHNvbWUgaGFyZHdhcmUgd2lsbCBuZWVkIGEgZnVsbCBt b2Rlc2V0IHRvIGNoYW5nZWQgdGhlCndyaXRlYmFjayBDUlRDIGJpbmRpbmcgYW55d2F5LgoKPj4g SSB0cmllZCB0byBrZWVwIHNwZWNpYWwtY2FzaW5nIG9mIHdyaXRlYmFjayBjb25uZWN0b3JzIGlu IHRoZSBjb3JlIAo+PiB0bwo+PiBhIGJhcmUgbWluaW11bSwgYmVjYXVzZSBJIHRoaW5rIGl0IHdp bGwgcXVpY2tseSBnZXQgbWVzc3kgYW5kIGZyYWdpbGUKPj4gb3RoZXJ3aXNlLgo+Cj5QbGVhc2Ug YWx3YXlzIG1ha2UgdGhlIGRpc2RpbmN0aW9uIGJldHdlZW4gY29yZSBhbmQgc2hhcmVkIGRybQo+ aGVscGVycy4gU3BlY2lhbCBjYXNlcyBpbiBjb3JlID09IHByb2JhYmx5IG5vdCBnb29kLiBTcGVj aWFsIGNhc2VzIGluCj5oZWxwZXJzID09IHBlcmZlY3RseSBmaW5lIGltby4KPgo+PiBIb25lc3Rs eSwgSSBkb24ndCBzZWUgbW9kZXNldHRpbmcgdGhlIHdyaXRlYmFjayBjb25uZWN0b3JzIGF0Cj4+ IHN0YXJ0LW9mLWRheSBhcyBhIGJpZyBwcm9ibGVtLgo+Cj5JdCdzIGluY29uc2lzdGVudC4gQ2xh aW1pbmcgaXQgbmVlZHMgYSBtb2Rlc2V0IHdoZW4gaXQgZG9lc24ndCBpc24ndAo+Z3JlYXQuIE1h a2luZyB0aGF0IG1vcmUgZGlzY292ZXJhYmxlIHRvIHVzZXJzcGFjZSBpcyB0aGUgZW50aXJlIHBv aW50Cj5vZiBhdG9taWMuIEFuZCB0aGVyZSBtaWdodCBiZSBodyB3aGVyZSByZWNvbmZpZ3VyaW5n IGZvciB3cml0ZWJhY2sKPm1pZ2h0IG5lZWQgYSBmdWxsIG1vZGVzZXQuCj4KCkknbSBhIGxpdHRs ZSBjb25mdXNlZCAtIHdoYXQgYml0IGV4YWN0bHkgaXMgaW5jb25zaXN0ZW50PwoKTXkgaW1wbGVt ZW50YXRpb24gaGVyZSBpcyBjb25zaXN0ZW50IHdpdGggb3RoZXIgY29ubmVjdG9ycy4KVXBkYXRp bmcgdGhlIHdyaXRlYmFjayBjb25uZWN0b3IgQ1JUQ19JRCBwcm9wZXJ0eSByZXF1aXJlcyBhIGZ1 bGwKbW9kZXNldCwgdGhlIHNhbWUgYXMgb3RoZXIgY29ubmVjdG9ycy4KCkNoYW5naW5nIHRoZSBG Ql9JRCBkb2VzICpub3QqIHJlcXVpcmUgYSBmdWxsIG1vZGVzZXQsIGJlY2F1c2Ugb3VyCmhhcmR3 YXJlIGhhcyBubyBzdWNoIHJlc3RyaWN0aW9uLiBUaGlzIGlzIGFuYWxvZ291cyB0byB1cGRhdGlu ZyB0aGUKRkJfSUQgb24gb3VyIHBsYW5lcywgYW5kIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgb3Ro ZXIgaW5zdGFuY2VzIG9mIHRoZQpGQl9JRCBwcm9wZXJ0eS4KCklmIHRoZXJlIGlzIGhhcmR3YXJl IHdoaWNoIGRvZXMgaGF2ZSBhIHJlc3RyaWN0aW9uIG9uIGNoYW5naW5nIEZCX0lELCAKSSB0aGlu ayB0aGF0IGRyaXZlciBtdXN0IGJlIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBpdCBpbiB0aGUg c2FtZQp3YXkgYXMgZHJpdmVycyB3aGljaCBjYW4ndCBoYW5kbGUgcGxhbmUgdXBkYXRlcyB3aXRo b3V0IGEgZnVsbAptb2Rlc2V0LgoKQXJlIHlvdSBzYXlpbmcgdGhhdCBiZWNhdXNlIHNldHRpbmcg Q1JUQ19JRCBvbiBNYWxpLURQIGlzIGEgbm8tb3AsIGl0CnNob3VsZG4ndCByZXF1aXJlIGEgZnVs bCBtb2Rlc2V0PyBJJ2QgcmF0aGVyIHNvbWVob3cgaGFyZC1jb2RlIHRoZQpDUlRDX0lEIGZvciBv dXIgd3JpdGViYWNrIGNvbm5lY3RvciB0byBoYXZlIGl0IGFsd2F5cyBhdHRhY2hlZCB0bwp0aGUg Q1JUQyBpbiB0aGF0IGNhc2UuCgo+Pj4+IFRoZSB3cml0ZWJhY2sgaXRzZWxmIGlzIGVuYWJsZWQg YnkgYXR0YWNoaW5nIGEgZnJhbWVidWZmZXIgdG8gdGhlCj4+Pj4gRkJfSUQgcHJvcGVydHkgb2Yg dGhlIGNvbm5lY3Rvci4gVGhlIGRyaXZlciBtdXN0IHRoZW4gZW5zdXJlIHRoYXQgdGhlCj4+Pj4g Q1JUQyBjb250ZW50IG9mIHRoYXQgYXRvbWljIGNvbW1pdCBpcyB3cml0dGVuIGludG8gdGhlIGZy YW1lYnVmZmVyLgo+Pj4+Cj4+Pj4gVGhlIHdyaXRlYmFjayB3b3JrcyBpbiBhIG9uZS1zaG90IG1v ZGUgd2l0aCBlYWNoIGF0b21pYyBjb21taXQuIFRoaXMKPj4+PiBwcmV2ZW50cyB0aGUgc2FtZSBj b250ZW50IGZyb20gYmVpbmcgd3JpdHRlbiBtdWx0aXBsZSB0aW1lcy4KPj4+PiBJbiBzb21lIGNh c2VzIChmcm9udC1idWZmZXIgcmVuZGVyaW5nKSB0aGVyZSBtaWdodCBiZSBhIGRlc2lyZSBmb3IK Pj4+PiBjb250aW51b3VzIG9wZXJhdGlvbiAtIEkgdGhpbmsgYSBwcm9wZXJ0eSBjb3VsZCBiZSBh ZGRlZCBsYXRlciBmb3IKPj4+PiB0aGlzIGtpbmQgb2YgY29udHJvbC4KPj4+Pgo+Pj4+IFdyaXRl YmFjayBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBGQl9JRCB0byB6ZXJvLgo+Pj4KPj4+Cj4+ PiBUaGlzIHNlZW1zIHRvIGNvbnRyYWRpY3QgaXRzZWxmOiBJZiBpdCdzIG9uZS1zaG90LCB0aGVy ZSdzIG5vIG5lZWQgdG8KPj4+IGRpc2FibGUgaXQgLSBpdCB3aWxsIGF1dG8tZGlzYWJsZS4KPj4K Pj4KPj4gSSBzaG91bGQgaGF2ZSBleHBsYWluZWQgb25lLXNob3QgbW9yZSBjbGVhcmx5LiBXaGF0 IEkgbWVhbiBpcywgb25lCj4+IGRybU1vZGVBdG9taWNDb21taXQgPT0gb25lIHdyaXRlIHRvIG1l bW9yeS4gVGhpcyBpcyBhcyBvcHBvc2VkIHRvCj4+IHdyaXRpbmcgdGhlIHNhbWUgdGhpbmcgdG8g bWVtb3J5IGV2ZXJ5IHZzeW5jIHVudGlsIGl0IGlzIHN0b3BwZWQKPj4gKHdoaWNoIG91ciBIVyBp cyBjYXBhYmxlIG9mIGRvaW5nKS4KPj4KPj4gQSBzdWJzZXF1ZW50IGRybU1vZGVBdG9taWNDb21t aXQgd2hpY2ggZG9lc24ndCB0b3VjaCB0aGUgd3JpdGViYWNrIEZCX0lECj4+IHdpbGwgd3JpdGUg KGFnYWluIC0gYnV0IHdpdGggd2hhdGV2ZXIgc2NlbmUgdXBkYXRlcykgdG8gdGhlIHNhbWUKPj4g ZnJhbWVidWZmZXIuCj4+Cj4+IFRoaXMgY29udGludWVzIGZvciBldmVyeSBkcm1Nb2RlQXRvbWlj Q29tbWl0IHVudGlsIEZCX0lEIGlzIHNldCB0bwo+PiB6ZXJvIC0gdG8gZGlzYWJsZSB3cml0aW5n IC0gb3IgY2hhbmdlZCB0byBhIGRpZmZlcmVudCBmcmFtZWJ1ZmZlciwgaW4KPj4gd2hpY2ggY2Fz ZSB3ZSB3cml0ZSB0byB0aGUgbmV3IG9uZS4KPj4KPj4gSU1PIHRoaXMgYmVoYXZpb3VyIG1ha2Vz IHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIHRoZSByZXN0IG9mIEF0b21pYywKPj4gYW5kIGFzIHRo ZSBGQl9JRCBpcyBpbmRlZWQgcGVyc2lzdGVudCBhY3Jvc3MgYXRvbWljIGNvbW1pdHMsIEkgdGhp bmsKPj4gaXQgc2hvdWxkIGJlIHJlYWQtYWJsZS4KPgo+dGJoIEkgZG9uJ3QgbGlrZSB0aGF0LCBJ IHRoaW5rIGl0J2QgYmUgYmV0dGVyIHRvIG1ha2UgdGhpcyB0cnVseQo+b25lLXNob3QuIE90aGVy d2lzZSB3ZSdsbCBoYXZlIHJlYWwgZnVuIHByb2JsZW1zIHdpdGggaHcgd2hlcmUgdGhlCj53cml0 ZWJhY2sgY2FuIHRha2UgbG9uZ2VyIHRoYW4gYSB2YmxhbmsgKGl0IGhhcHBlbnMgLi4uKS4gU28g b25lLXNob3QsCj53aXRoIGF1dG8tY2xlYXJpbmcgdG8gTlVMTC8wIGlzIGltbyB0aGUgcmlnaHQg YXBwcm9hY2guCj4KClRoYXQncyBhbiBpbnRlcmVzdGluZyBwb2ludCBhYm91dCBoYXJkd2FyZSB3 aGljaCB3b24ndCBmaW5pc2ggd2l0aGluCm9uZSBmcmFtZTsgYnV0IEkgZG9uJ3Qgc2VlIGhvdyAi dHJ1ZSBvbmUtc2hvdCIgaGVscHMuCgpXaGF0J3MgdGhlIGV4cGVjdGVkIGJlaGF2aW91ciBpZiB1 c2Vyc3BhY2UgbWFrZXMgYSBuZXcgYXRvbWljIGNvbW1pdAp3aXRoIGEgd3JpdGViYWNrIGZyYW1l YnVmZmVyIHdoaWxzdCBhIHByZXZpb3VzIHdyaXRlYmFjayBpcyBvbmdvaW5nPwoKSW4gYm90aCBj YXNlcywgeW91IGVpdGhlciBuZWVkIHRvIGJsb2NrIG9yIGZhaWwgdGhlIGNvbW1pdCAtIHdoZXRo ZXIKdGhlIGZyYW1lYnVmZmVyIGdldHMgcmVtb3ZlZCB3aGVuIGl0J3MgZG9uZSBpcyBpbW1hdGVy aWFsLgoKPj4+IEluIG90aGVyIGNhc2VzIHdoZXJlIHdlIHdyaXRlIGEgcHJvcGVydHkgYXMgYSBv bmUtc2hvdCB0aGluZyAoZmVuY2VzIGZvcgo+Pj4gYW5kcm9pZCkuIEluIHRoYXQgY2FzZSB3aGVu IHlvdSByZWFkIHRoYXQgcHJvcGVydHkgaXQncyBhbHdheXMgMCAod2VsbCwgLTEKPj4+IGZvciBm ZW5jZXMgc2luY2UgZmlsZSBkZXNjcmlwdG9yKS4gVGhhdCBhbHNvIGF2b2lkcyB0aGUgaXNzdWVz IHdoZW4KPj4+IHVzZXJzcGFjZSB1bmNvbmRpdGlvbmFsbHkgc2F2ZXMvcmVzdG9yZXMgYWxsIHBy b3BlcnRpZXMgKHRoaXMgaXMgbmVlZGVkCj4+PiBmb3IgZ2VuZXJpYyBjb21wb3NpdG9yIHN3aXRj aGluZykuCj4+Pgo+Pj4gSSB0aGluayBhIGJldHRlciBiZWhhdmlvdXIgd291bGQgYmUgdG8gZG8g dGhlIHNhbWUgdHJpY2ssIHdpdGggRkJfSUQgb24KPj4+IHRoZSBjb25uZWN0b3IgYWx3YXlzIHJl dHVybmluZyAwIGFzIHRoZSBjdXJyZW50IHZhbHVlLiBUaGF0IGVuY29kZXMgdGhlCj4+PiBvbmUt c2hvdCBiZWhhdmlvdXIgZGlyZWN0bHkuCj4+Pgo+Pj4gRm9yIG9uZS1zaG90IHZzIGNvbnRpbnVv dXM6IE1heWJlIHdlIHdhbnQgdG8gc2ltcGx5IGhhdmUgYSBzZXBhcmF0ZQo+Pj4gd3JpdGViYWNr IHByb3BlcnR5IGZvciBjb250aW51ZXMsIGUuZy4gRkJfV1JJVEVCQUNLX09ORV9TSE9UX0lEIGFu ZAo+Pj4gRkJfV1JJVEVCQUNLX0NPTlRJTlVPVVNfSUQuCj4+Pgo+Pj4+IEtub3duIGlzc3VlczoK Pj4+PiAtLS0tLS0tLS0tLS0tCj4+Pj4gICogSSdtIG5vdCBzdXJlIHdoYXQgIkRQTVMiIHNob3Vs ZCBtZWFuIGZvciB3cml0ZWJhY2sgY29ubmVjdG9ycy4KPj4+PiAgICBJdCBjb3VsZCBiZSB1c2Vk IHRvIGRpc2FibGUgd3JpdGViYWNrIChldmVuIHdoZW4gYSBmcmFtZWJ1ZmZlciBpcwo+Pj4+ICAg IGF0dGFjaGVkKSwgb3IgaXQgY291bGQgYmUgaGlkZGVuIGVudGlyZWx5ICh3aGljaCB3b3VsZCBi cmVhayB0aGUKPj4+PiAgICBsZWdhY3kgRFBNUyBjYWxsIGZvciB3cml0ZWJhY2sgY29ubmVjdG9y cykuCj4+Pgo+Pj4KPj4+IGRwbXMgaXMgbGVnYWN5LCBpbiBhdG9taWMgbGFuZCB0aGUgb25seSB0 aGluZyB5b3UgaGF2ZSBpcyAiQUNUSVZFIiBvbiB0aGUKPj4+IGNydGMuIGl0IGRpc2FibGVzIGV2 ZXJ5dGhpbmcsIGkuZS4gYWxzbyB3cml0ZWJhY2suCj4+Pgo+Pgo+PiBTbyByZW1vdmluZyB0aGUg RFBNUyBwcm9wZXJ0eSBpcyBhIHZpYWJsZSBvcHRpb24gZm9yIHdyaXRlYmFjayBjb25uZWN0b3Jz IGluCj4+IHlvdXIgb3Bpbmlvbj8KPgo+TmFoLCB0aGF0J3MgcGFydCBvZiB0aGUgYWJpIG5vdy4g QnV0IGF0b21pYyBpbnRlcm5hbGx5IHJlbWFwcyBpdCB0bwo+IkFDVElWRSIsIGluIHNob3J0IHlv dSBkb24ndCBuZWVkIHRvIGNhcmUgKGFzIGxvbmcgYXMgeW91IGZpbGwgb3V0IHRoZQo+ZHBtcyBo b29rIHdpdGggdGhlIHByb3ZpZGVkIGhlbHBlci4gZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5p dAo+c2hvdWxkIHByb2JhYmx5IGRvIHRoYXQpLgo+CgpBIGNvbm5lY3RvciBjYW4gc3RpbGwgYmUg RFBNUy1lZCBpbmRpdmlkdWFsbHksIHNvIGEgQ1JUQyBjYW4gYmUKIkFDVElWRSIsIGF0dGFjaGVk IHRvIGFuICJPRkYiIHdyaXRlYmFjayBjb25uZWN0b3IsIGFuZCB0aGUgd3JpdGViYWNrCmNvbm5l Y3RvciB3b3VsZCBzdGlsbCBiZSBhYmxlIHRvIGFjdGl2ZWx5IHdyaXRlIHRvIG1lbW9yeS4KCkkn bSBPSyB3aXRoIHRoYXQsIGFuZCBpdCdzIHdoYXQgSSBhbHJlYWR5IGltcGxlbWVudGVkLCBidXQg SSB0aG91Z2h0CnRoYXQgdXNlcnNwYWNlIG1pZ2h0IHJlYXNvbmFibHkgZXhwZWN0IGEgd3JpdGVi YWNrIGNvbm5lY3RvciB3aXRoIERQTVMKc2V0IHRvICJPRkYiIHRvIGJlIGNvbXBsZXRlbHkgaW5l cnQuCgpDaGVlcnMsCi1CcmlhbgoKPkNoZWVycywgRGFuaWVsCj4KPj4+PiAgKiBXaXRoIERhbmll bCdzIHJlY2VudCByZS1pdGVyYXRpb24gb2YgdGhlIHVzZXJzcGFjZSBBUEkgcnVsZXMsIEkKPj4+ PiAgICBmdWxseSBleHBlY3QgdG8gcHJvdmlkZSBzb21lIHVzZXJzcGFjZSBjb2RlIHRvIHN1cHBv cnQgdGhpcy4gVGhlCj4+Pj4gICAgcXVlc3Rpb24gaXMgd2hhdCwgYW5kIHdoZXJlPyBXZSB3YW50 IHRvIHVzZSB3cml0ZWJhY2sgZm9yIHRlc3RpbmcsCj4+Pj4gICAgc28gcGVyaGFwcyBzb21lIHRl c3RzIGluIGlndCBpcyBzdWl0YWJsZS4KPj4+Cj4+Pgo+Pj4gSG0sIHRlc3Rpbmcgd291bGQgYmUg YmV0dGVyIGFzIGEgZGVidWdmcyBpbnRlcmZhY2UsIGJ1dCBJIHVuZGVyc3RhbmQgdGhlCj4+PiBh cHBlYWwgb2YgZG9pbmcgdGhpcyB3aXRoIGF0b21pYyAoc2luY2Ugc2VtYW50aWNzIGZpdCBzbyB3 ZWxsKS4gQW5vdGhlcgo+Pj4gdXNlLWNhc2Ugb2YgdGhpcyBpcyBjb21wb3NpdGluZywgYnV0IGlm IHRoZSBtYWluIGdvYWwgaXMgaWd0IGFuZCB0ZXN0aW5nLAo+Pj4gSSB0aGluayBpbnRlZ3JhdGlv biBpbnRvIGlndCBjcmMgYmFzZWQgdGVzdGNhc2VzIGlzIGEgcGVyZmVjdGx5IGZpbmUKPj4+IHVz ZXJzcGFjZS4KPj4+Cj4+Pj4gICogRG9jdW1lbnRhdGlvbi4gUHJvYmFibHkgc29tZSBwb3J0aW9u IG9mIHRoaXMgY292ZXIgbGV0dGVyIG5lZWRzICB0bwo+Pj4+ICAgIG1ha2UgaXQgaW50byBEb2N1 bWVudGF0aW9uLwo+Pj4KPj4+Cj4+PiBZZWFoLCBhbiBvdmVydmlldyBET0M6IHNlY3Rpb24gaW4g YSBzZXBhcmF0ZSBzb3VyY2UgZmlsZSAod2l0aCBhbGwgdGhlIHRoZQo+Pj4gaW5mcmFzdHJ1Y3R1 cmUgd29yaykgd291bGQgYmUgZ3JlYXQgLSBha2EgbmVlZGVkIGZyb20gbXkgcG92IDstKQo+Pj4K Pj4KPj4gU3VyZSwgSSdsbCBhIGxvb2sgYXQgc3BsaXR0aW5nIGludG8gYSBkcm1fd3JpdGViYWNr LmMKPj4KPj4KPj4+PiAgKiBTeW5jaHJvbmlzYXRpb24uIE91ciBoYXJkd2FyZSB3aWxsIGZpbmlz aCB0aGUgd3JpdGViYWNrIGJ5IHRoZSBuZXh0Cj4+Pj4gICAgdnN5bmMuIEkndmUgbm90IGltcGxl bWVudGVkIGZlbmNlIHN1cHBvcnQgaGVyZSwgYnV0IGl0IHdvdWxkIGJlIGFuCj4+Pj4gICAgb2J2 aW91cyBhZGRpdGlvbi4KPj4+Cj4+Pgo+Pj4gUHJvYmFibHkganVzdCB3YW50IGFuIGFkZGl0aW9u YWwgV1JJVEVCQUNLX0ZFTkNFX0lEIHByb3BlcnR5IHRvIHNpZ25hbAo+Pj4gY29tcGxldGlvbi4g U29tZSBodyBkZWZpbml0ZWx5IHdpbGwgdGFrZSBsb25nZXIgdG8gd3JpdGUgYmFjayB0aGFuIGp1 c3QgYQo+Pj4gdmJsYW5rLiBCdXQgd2UgY2FuIGRlbGF5IHRoYXQgdW50aWwgaXQncyBuZWVkZWQu Cj4+PiAtRGFuaWVsCj4+Pgo+Pj4+Cj4+Pj4gU2VlIEFsc286Cj4+Pj4gLS0tLS0tLS0tCj4+Pj4g WzFdCj4+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvZHJpLWRldmVs LzIwMTYtSnVseS8xMTMxOTcuaHRtbAo+Pj4+IFsyXQo+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL2FyY2hpdmVzL2RyaS1kZXZlbC8yMDE2LU9jdG9iZXIvMTIwNDg2Lmh0bWwKPj4+ Pgo+Pj4+IEkgd2VsY29tZSBhbnkgY29tbWVudHMsIGVzcGVjaWFsbHkgaWYgdGhpcyBhcHByb2Fj aCBkb2VzL2RvZXNuJ3QgZml0Cj4+Pj4gd2VsbCB3aXRoIGFueW9uZSBlbHNlJ3MgaGFyZHdhcmUu Cj4+Pj4KPj4+PiBUaGFua3MsCj4+Pj4KPj4+PiAtQnJpYW4KPj4+Pgo+Pj4+IC0tLQo+Pj4+Cj4+ Pj4gQnJpYW4gU3RhcmtleSAoMTApOgo+Pj4+ICAgZHJtOiBhZGQgd3JpdGViYWNrIGNvbm5lY3Rv ciB0eXBlCj4+Pj4gICBkcm0vZmItaGVscGVyOiBza2lwIHdyaXRlYmFjayBjb25uZWN0b3JzCj4+ Pj4gICBkcm06IGV4dHJhY3QgQ1JUQy9wbGFuZSBkaXNhYmxlIGZyb20gZHJtX2ZyYW1lYnVmZmVy X3JlbW92ZQo+Pj4+ICAgZHJtOiBhZGQgX19kcm1fZnJhbWVidWZmZXJfcmVtb3ZlX2F0b21pYwo+ Pj4+ICAgZHJtOiBhZGQgZmIgdG8gY29ubmVjdG9yIHN0YXRlCj4+Pj4gICBkcm06IGV4cG9zZSBm Yl9pZCBwcm9wZXJ0eSBmb3Igd3JpdGViYWNrIGNvbm5lY3RvcnMKPj4+PiAgIGRybTogYWRkIHdy aXRlYmFjay1jb25uZWN0b3IgcGl4ZWwgZm9ybWF0IHByb3BlcnRpZXMKPj4+PiAgIGRybTogbWFs aS1kcDogcmVuYW1lIG1hbGlkcF9pbnB1dF9mb3JtYXQKPj4+PiAgIGRybTogbWFsaS1kcDogYWRk IFJHQiB3cml0ZWJhY2sgZm9ybWF0cyBmb3IgRFA1NTAvRFA2NTAKPj4+PiAgIGRybTogbWFsaS1k cDogYWRkIHdyaXRlYmFjayBjb25uZWN0b3IKPj4+Pgo+Pj4+IExpdml1IER1ZGF1ICgxKToKPj4+ PiAgIGRybTogbWFsaS1kcDogQWRkIHN1cHBvcnQgZm9yIHdyaXRlYmFjayBvbiBEUDU1MC9EUDY1 MAo+Pj4+Cj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vTWFrZWZpbGUgICAgICAgIHwgICAgMSAr Cj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2NydGMuYyAgIHwgICAxMCArKwo+Pj4+ ICBkcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9kcnYuYyAgICB8ICAgMjUgKysrLQo+Pj4+ICBk cml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9kcnYuaCAgICB8ICAgIDUgKwo+Pj4+ICBkcml2ZXJz L2dwdS9kcm0vYXJtL21hbGlkcF9ody5jICAgICB8ICAxMDQgKysrKysrKysrKy0tLS0KPj4+PiAg ZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfaHcuaCAgICAgfCAgIDI3ICsrKy0KPj4+PiAgZHJp dmVycy9ncHUvZHJtL2FybS9tYWxpZHBfbXcuYyAgICAgfCAgMjY4Cj4+Pj4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPj4+PiAgZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBf cGxhbmVzLmMgfCAgICA4ICstCj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX3JlZ3Mu aCAgIHwgICAxNSArKwo+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAgICB8 ICAgNDAgKysrKysrCj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwg ICAgNCArCj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgICAgIHwgICA3OSAr KysrKysrKysrLQo+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyAgICAgICAgICB8ICAg MTQgKy0KPj4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyAgICAgfCAgICA0ICsK Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jICAgfCAgMjQ5Cj4+Pj4gKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPj4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9p b2N0bC5jICAgICAgICAgfCAgICA3ICsKPj4+PiAgaW5jbHVkZS9kcm0vZHJtUC5oICAgICAgICAg ICAgICAgICAgfCAgICAyICsKPj4+PiAgaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oICAgICAgICAg ICAgfCAgICAzICsKPj4+PiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAgICAgfCAg IDE1ICsrCj4+Pj4gIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgICAgIHwgICAxMiAr Kwo+Pj4+ICBpbmNsdWRlL3VhcGkvZHJtL2RybS5oICAgICAgICAgICAgICB8ICAgMTAgKysKPj4+ PiAgaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oICAgICAgICAgfCAgICAxICsKPj4+PiAgMjIg ZmlsZXMgY2hhbmdlZCwgODMwIGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQo+Pj4+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfbXcuYwo+Pj4+Cj4+ Pj4gLS0KPj4+PiAxLjcuOS41Cj4+Pj4KPj4+Cj4+PiAtLQo+Pj4gRGFuaWVsIFZldHRlcgo+Pj4g U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4+PiBodHRwOi8vYmxvZy5mZnds bC5jaAo+Pj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCj4KPgo+Cj4tLSAKPkRhbmllbCBWZXR0ZXIKPlNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgo+KzQxICgwKSA3OSAzNjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZnds bC5jaAo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=