From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH v3 03/13] drm: bridge: Link encoder and bridge in core code Date: Wed, 30 Nov 2016 16:30:53 +0530 Message-ID: <3e8816d8-d461-d010-bff8-a38011e24a96@codeaurora.org> References: <1480410283-28698-1-git-send-email-laurent.pinchart+renesas@ideasonboard.com> <3126195.dNH0p7KEJE@avalon> <6fc7176b-1a45-7679-a0ed-84aadab6d136@codeaurora.org> <7224643.24NSiAqgQC@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTPS id CEBEF6E272 for ; Wed, 30 Nov 2016 11:01:03 +0000 (UTC) In-Reply-To: <7224643.24NSiAqgQC@avalon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Laurent Pinchart , Alison Wang , Jingoo Han , Seung-Woo Kim , Xinwei Kong , dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Kyungmin Park , Xinliang Liu , Chen Feng , Rongrong Zou , Maxime Ripard , Vincent Abriou List-Id: dri-devel@lists.freedesktop.org CgpPbiAxMS8zMC8yMDE2IDAzOjUzIFBNLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+IEhpIEFy Y2hpdCwKPgo+IE9uIFdlZG5lc2RheSAzMCBOb3YgMjAxNiAxMDozNTowMiBBcmNoaXQgVGFuZWph IHdyb3RlOgo+PiBPbiAxMS8yOS8yMDE2IDExOjI3IFBNLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3Rl Ogo+Pj4gT24gVHVlc2RheSAyOSBOb3YgMjAxNiAxNTo1NzowNiBBcmNoaXQgVGFuZWphIHdyb3Rl Ogo+Pj4+IE9uIDExLzI5LzIwMTYgMDI6MzQgUE0sIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4+ Pj4+IEluc3RlYWQgb2YgbGlua2luZyBlbmNvZGVycyBhbmQgYnJpZGdlcyBpbiBldmVyeSBkcml2 ZXIgKGFuZCBnZXR0aW5nIGl0Cj4+Pj4+IHdyb25nIGhhbGYgb2YgdGhlIHRpbWUsIGFzIG1hbnkg ZHJpdmVycyBmb3JnZXQgdG8gc2V0IHRoZSBkcm1fYnJpZGdlCj4+Pj4+IGVuY29kZXIgcG9pbnRl ciksIGRvIHNvIGluIGNvcmUgY29kZS4gVGhlIGRybV9icmlkZ2VfYXR0YWNoKCkgZnVuY3Rpb24K Pj4+Pj4gbmVlZHMgdGhlIGVuY29kZXIgYW5kIG9wdGlvbmFsIHByZXZpb3VzIGJyaWRnZSB0byBw ZXJmb3JtIHRoYXQgdGFzaywKPj4+Pj4gdXBkYXRlIGFsbCB0aGUgY2FsbGVycy4KPj4+Pj4KPj4+ Pj4gU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydAo+Pj4+PiA8bGF1cmVudC5waW5jaGFy dCtyZW5lc2FzQGlkZWFzb25ib2FyZC5jb20+Cj4+Pj4+IC0tLQo+Pj4+Pgo+Pj4+PiAgZHJpdmVy cy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX291dHB1dC5jICAgfCAgNCArLQo+Pj4+ PiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmMgfCAg NCArLQo+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kdy1oZG1pLmMgICAgICAgICAgICAg ICAgICAgfCAgMyArLQo+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyAgICAgICAg ICAgICAgICAgICAgICAgfCA0NiArKysrKysrKysrLS0tLS0KPj4+Pj4gIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuYyAgICAgICAgICAgIHwgIDQgKy0KPj4+Pj4gIGRyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RwLmMgICAgICAgICAgICAgICAgIHwgIDUgKy0tCj4+ Pj4+ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMgICAgICAgICAgICB8 ICA2ICstLQo+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcmdiLmMg ICAgICAgICAgfCAgNSArLS0KPj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4v ZHdfZHJtX2RzaS5jICAgICAgIHwgIDUgKy0tCj4+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaW14L2lt eC1sZGIuYyAgICAgICAgICAgICAgICAgICAgICB8ICA2ICstLQo+Pj4+PiAgZHJpdmVycy9ncHUv ZHJtL2lteC9wYXJhbGxlbC1kaXNwbGF5LmMgICAgICAgICAgICAgfCAgNCArLQo+Pj4+PiAgZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYyAgICAgICAgICAgICAgICAgfCAgOCArKy0t Cj4+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RzaS5jICAgICAgICAgICAgICAg ICB8IDI0ICsrLS0tLS0tLS0tCj4+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hk bWkuYyAgICAgICAgICAgICAgICB8IDExICsrKy0tLQo+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL21z bS9kc2kvZHNpX21hbmFnZXIuYyAgICAgICAgICAgICAgfCAxNyArKysrKy0tLQo+Pj4+PiAgZHJp dmVycy9ncHUvZHJtL21zbS9lZHAvZWRwX2JyaWRnZS5jICAgICAgICAgICAgICAgfCAgMiArLQo+ Pj4+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9oZG1pL2hkbWlfYnJpZGdlLmMgICAgICAgICAgICAg fCAgMiArLQo+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9oZG1pZW5jLmMg ICAgICAgICAgfCAgNSArLS0KPj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2R2by5jICAg ICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KPj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9zdGkvc3Rp X2hkYS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KPj4+Pj4gIGRyaXZlcnMvZ3B1L2Ry bS9zdGkvc3RpX2hkbWkuYyAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KPj4+Pj4gIGRyaXZl cnMvZ3B1L2RybS9zdW40aS9zdW40aV9yZ2IuYyAgICAgICAgICAgICAgICAgIHwgMTMgKysrLS0t Cj4+Pj4+ICBpbmNsdWRlL2RybS9kcm1fYnJpZGdlLmggICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAzICstCj4+Pj4+ICAyMyBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCAxMDMg ZGVsZXRpb25zKC0pCj4+Pgo+Pj4gW3NuaXBdCj4+Pgo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9icmlkZ2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPj4+ Pj4gaW5kZXggMGVlMDUyYjdjMjFhLi44NTBiZDY1MDllZjEgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9icmlkZ2UuYwo+Pj4KPj4+IFtzbmlwXQo+Pj4KPj4+Pj4gQEAgLTkyLDMyICs5Myw1MyBAQCB2 b2lkIGRybV9icmlkZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+Pj4+ICBF WFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfcmVtb3ZlKTsKPj4+Pj4KPj4+Pj4gIC8qKgo+Pj4+PiAt ICogZHJtX2JyaWRnZV9hdHRhY2ggLSBhc3NvY2lhdGUgZ2l2ZW4gYnJpZGdlIHRvIG91ciBEUk0g ZGV2aWNlCj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2F0dGFjaCAtIGF0dGFjaCB0aGUgYnJpZGdlIHRv IGFuIGVuY29kZXIncyBjaGFpbgo+Pj4+PiAgICoKPj4+Pj4gLSAqIEBkZXY6IERSTSBkZXZpY2UK Pj4+Pj4gLSAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+Pj4+PiArICogQGVu Y29kZXI6IERSTSBlbmNvZGVyCj4+Pj4+ICsgKiBAYnJpZGdlOiBicmlkZ2UgdG8gYXR0YWNoCj4+ Pj4+ICsgKiBAcHJldmlvdXM6IHByZXZpb3VzIGJyaWRnZSBpbiB0aGUgY2hhaW4gKG9wdGlvbmFs KQo+Pj4+PiAgICoKPj4+Pj4gLSAqIENhbGxlZCBieSBhIGttcyBkcml2ZXIgdG8gbGluayBvbmUg b2Ygb3VyIGVuY29kZXIvYnJpZGdlIHRvIHRoZQo+Pj4+PiBnaXZlbgo+Pj4+PiAtICogYnJpZGdl Lgo+Pj4+PiArICogQ2FsbGVkIGJ5IGEga21zIGRyaXZlciB0byBsaW5rIHRoZSBicmlkZ2UgdG8g YW4gZW5jb2RlcidzIGNoYWluLiBUaGUKPj4+Pj4gcHJldmlvdXMKPj4+Pj4gKyAqIGFyZ3VtZW50 IHNwZWNpZmllcyB0aGUgcHJldmlvdXMgYnJpZGdlIGluIHRoZSBjaGFpbi4gSWYgTlVMTCwgdGhl Cj4+Pj4+IGJyaWRnZSBpcwo+Pj4+PiArICogbGlua2VkIGRpcmVjdGx5IGF0IHRoZSBlbmNvZGVy J3Mgb3V0cHV0LiBPdGhlcndpc2UgaXQgaXMgbGlua2VkIGF0Cj4+Pj4+IHRoZQo+Pj4+PiArICog cHJldmlvdXMgYnJpZGdlJ3Mgb3V0cHV0Lgo+Pj4+PiAgICoKPj4+Pj4gLSAqIE5vdGUgdGhhdCBz ZXR0aW5nIHVwIGxpbmtzIGJldHdlZW4gdGhlIGJyaWRnZSBhbmQgb3VyIGVuY29kZXIvYnJpZGdl Cj4+Pj4+IC0gKiBvYmplY3RzIG5lZWRzIHRvIGJlIGhhbmRsZWQgYnkgdGhlIGttcyBkcml2ZXIg aXRzZWxmLgo+Pj4+PiArICogSWYgbm9uLU5VTEwgdGhlIHByZXZpb3VzIGJyaWRnZSBtdXN0IGJl IGFscmVhZHkgYXR0YWNoZWQgYnkgYSBjYWxsCj4+Pj4+IHRvIHRoaXMKPj4+Pj4gKyAqIGZ1bmN0 aW9uLgo+Pj4+PiAgICoKPj4+Pj4gICAqIFJFVFVSTlM6Cj4+Pj4+ICAgKiBaZXJvIG9uIHN1Y2Nl c3MsIGVycm9yIGNvZGUgb24gZmFpbHVyZQo+Pj4+PiAgICovCj4+Pj4+IC1pbnQgZHJtX2JyaWRn ZV9hdHRhY2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9icmlkZ2UKPj4+Pj4g KmJyaWRnZSkKPj4+Pj4gK2ludCBkcm1fYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIsIHN0cnVjdCBkcm1fYnJpZGdlCj4+Pj4+ICpicmlkZ2UsCj4+Pj4+ICsJCSAgICAg IHN0cnVjdCBkcm1fYnJpZGdlICpwcmV2aW91cykKPj4+Pj4gIHsKPj4+Pj4gLQlpZiAoIWRldiB8 fCAhYnJpZGdlKQo+Pj4+PiArCWludCByZXQ7Cj4+Pj4+ICsKPj4+Pj4gKwlpZiAoIWVuY29kZXIg fHwgIWJyaWRnZSkKPj4+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+Pj4KPj4+PiBJIHRoaW5rIHdl IGNvdWxkIGRlcml2ZSBwcmV2aW91cyBmcm9tIHRoZSBlbmNvZGVyIGl0c2VsZi4gU29tZXRoaW5n IGxpa2U6Cj4+Pj4gCXByZXZpb3VzID0gZW5jb2Rlci0+YnJpZGdlOwo+Pj4+IAl3aGlsZSAocHJl dmlvdXMgJiYgcHJldmlvdXMtPm5leHQpCj4+Pj4gCQo+Pj4+IAkJcHJldmlvdXMgPSBwcmV2aW91 cy0+bmV4dDsKPj4+Cj4+PiBUaGF0J3MgYSB2ZXJ5IGdvb2QgcG9pbnQuIEl0IHdvdWxkIGhvd2V2 ZXIgcHJldmVudCB1cyBmcm9tIGNhdGNoaW5nCj4+PiBkcml2ZXJzIHRoYXQgYXR0YWNoIGJyaWRn ZXMgaW4gdGhlIHdyb25nIG9yZGVyLCB3aGljaCB0aGUgIXByZXZpb3VzLT5kZXYKPj4+IGN1cnJl bnRseSBhbGxvd3MgdXMgdG8gZG8gKGFuZCBpdCBzaG91bGQgYmUgdHVybmVkIGludG8gYSBXQVJO X09OIGFzCj4+PiBEYW5pZWwgcHJvcG9zZWQpLgo+Pgo+PiBXaXRoIHRoZSBzaW1wbGVyIEFQSSwg SSBkb24ndCB0aGluayB3ZSB3aWxsIGV2ZXIgaGl0IHRoZSBjYXNlIG9mCj4+ICFwcmV2aW91cy0+ ZGV2LiBUaGUgcHJldmlvdXMgYnJpZGdlIChpZiBpdCBleGlzdHMpIGluIHRoZSBjaGFpbiB3b3Vs ZAo+PiBhbHJlYWR5IGhhdmUgYSBkZXYgYXR0YWNoZWQgdG8gaXQuIEluIG90aGVyIHdvcmRzLCB3 ZSB3b3VsZCByZW1vdmUgdGhlCj4+IHJpc2sgb2YgdGhlIGNoYW5jZSBvZiB0aGUgJ3ByZXZpb3Vz JyBicmlkZ2UgYmVpbmcgdW5hdHRhY2hlZC4KPj4KPj4gSSdtIGEgYml0IHVuY2xlYXIgYWJvdXQg d2hhdCB5b3UgbWVhbiBhYm91dCB0aGUgb3JkZXIgcGFydC4gSWYgYSBrbXMgZHJpdmVyCj4+IHdh bnRzIHRvIGNyZWF0ZSBhIGNoYWluOiBlbmNvZGVyLT5icmlkZ2UxLT5icmlkZ2UyLCBpdCBzaG91 bGQgaWRlYWxseSBkbzoKPj4KPj4gZHJtX2JyaWRnZV9hdHRhY2goZW5jb2RlciwgYnJpZGdlMSwg TlVMTCk7Cj4+IGRybV9icmlkZ2VfYXR0YWNoKGVuY29kZXIsIGJyaWRnZTIsIGJyaWRnZTEpOwo+ Cj4gQ29ycmVjdC4KPgo+PiBXZSBjYW4ndCBkbyBtdWNoIGlmIHRoZSBrbXMgZHJpdmVyIGRvZXMg dGhlIG9wcG9zaXRlOgo+Pgo+PiBkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCBicmlkZ2UyLCBO VUxMKTsKPj4gZHJtX2JyaWRnZV9hdHRhY2goZW5jb2RlciwgYnJpZGdlMiwgYnJpZGdlMSk7Cj4K PiBUaGF0IHdvdWxkIGNlcnRhaW5seSBiZSBhIHZlcnkgc3R1cGlkIHRoaW5nIGZvciBhIGRyaXZl ciB0byBkbyA6LSkgVGhlIHByb2JsZW0KPiB0aGF0IHdlIGNvdWxkIGNhdGNoIHdpdGggbXkgY3Vy cmVudCBwcm9wb3NhbCBpcwo+Cj4gZHJtX2JyaWRnZV9hdHRhY2goZW5jb2RlciwgYnJpZGdlMiwg YnJpZGdlMSk7Cj4gLi4uCj4gZHJtX2JyaWRnZV9hdHRhY2goZW5jb2RlciwgYnJpZGdlMSwgTlVM TCk7Cj4KPiB3aGljaCBJIGV4cGVjdCB0byBoYXBwZW4gZnJvbSB0aW1lIHRvIHRpbWUgYXMgdGhl IHR3byBicmlkZ2UgY2FuIGJlIGF0dGFjaGVkCj4gdGhyb3VnaCBzZXBhcmF0ZSBjb2RlIHBhdGhz IHNvbWV0aW1lcyBhIGJpdCBkaWZmaWN1bHQgdG8gdHJhY2UuIEl0J3Mgbm90IGEgYmlnCj4gZGVh bCB0aG91Z2gsIHlvdSBjb3VsZCBjb252aW5jZSBtZSB0aGF0IHRoZSBhZHZhbnRhZ2VzIG9mIGEg c2ltcGxlciBBUEkgZXhjZWVkCj4gaXRzIGRyYXdiYWNrcy4KCkhhdmluZyBubyAncHJldmlvdXMn IGFyZ3VtZW50IHdvdWxkIHByZXZlbnQgdGhlIHBvc3NpYmlsaXR5IG9mIHRoaXMgYWx0b2dldGhl ciwKd29uJ3QgaXQ/CgpXaXRoIG5vICdwcmV2aW91cycgYXJnIGluIHRoZSBBUEksIHRoZSBkcml2 ZXIgY2FuIG9ubHkgZG86Cgpkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCBicmlkZ2UxKTsKZHJt X2JyaWRnZV9hdHRhY2goZW5jb2RlciwgYnJpZGdlMik7CgpvcgoKZHJtX2JyaWRnZV9hdHRhY2go ZW5jb2RlciwgYnJpZGdlMik7CmRybV9icmlkZ2VfYXR0YWNoKGVuY29kZXIsIGJyaWRnZTEpOwoK Rm9yIHRoZSBsYXR0ZXIsIHdlIGNhbid0IGRvIG11Y2ggYXMgZGlzY3Vzc2VkIGFib3ZlLgoKQXJj aGl0Cgo+Cj4+PiBJJ20gZmluZSBsb3NpbmcgdGhhdCBhYmlsaXR5LCBhcyB5b3VyIHByb3Bvc2Fs IG1ha2VzIHRoZSBBUEkgc2ltcGxlci4gSSdsbAo+Pj4gbGV0IHlvdSBkZWNpZGUsIHdoaWNoIG9w dGlvbiBkbyB5b3UgcHJlZmVyID8KPj4KPj4gSSBwcmVmZXIgdGhlIHNpbXBsZXIgQVBJLiBJIGd1 ZXNzIHRoZSBtYWluIGFpbSBvZiB0aGUgcGF0Y2ggd2FzIHRvIHByZXZlbnQKPj4gdGhlIGRyaXZl ciBzZXR0aW5nIHVwIHRoZSBlbmNvZGVyPC0+YnJpZGdlIGxpbmtzLCB3aGljaCB3aWxsIGJlIGRv bmUKPj4gYW55d2F5Lgo+Cj4gSWYgeW91IHN0aWxsIHByZWZlciB0aGUgc2ltcGxlciBBUEkgYWZ0 ZXIgcmVhZGluZyB0aGUgYWJvdmUsIEknbGwgdXBkYXRlIG15Cj4gcGF0Y2guCj4KPj4+Pj4gKwo+ Pj4+PiArCWlmIChwcmV2aW91cyAmJiAoIXByZXZpb3VzLT5kZXYgfHwgcHJldmlvdXMtPmVuY29k ZXIgIT0gZW5jb2RlcikpCj4+Pj4+ICAJCXJldHVybiAtRUlOVkFMOwo+Pj4+PiAgCQo+Pj4+PiAg CWlmIChicmlkZ2UtPmRldikKPj4+Pj4gIAkJcmV0dXJuIC1FQlVTWTsKPj4+Pj4KPj4+Pj4gLQli cmlkZ2UtPmRldiA9IGRldjsKPj4+Pj4gKwlicmlkZ2UtPmRldiA9IGVuY29kZXItPmRldjsKPj4+ Pj4gKwlicmlkZ2UtPmVuY29kZXIgPSBlbmNvZGVyOwo+Pj4+PiArCj4+Pj4+ICsJaWYgKGJyaWRn ZS0+ZnVuY3MtPmF0dGFjaCkgewo+Pj4+PiArCQlyZXQgPSBicmlkZ2UtPmZ1bmNzLT5hdHRhY2go YnJpZGdlKTsKPj4+Pj4gKwkJaWYgKHJldCA8IDApIHsKPj4+Pj4gKwkJCWJyaWRnZS0+ZGV2ID0g TlVMTDsKPj4+Pj4gKwkJCWJyaWRnZS0+ZW5jb2RlciA9IE5VTEw7Cj4+Pj4+ICsJCQlyZXR1cm4g cmV0Owo+Pj4+PiArCQl9Cj4+Pj4+ICsJfQo+Pj4+Pgo+Pj4+PiAtCWlmIChicmlkZ2UtPmZ1bmNz LT5hdHRhY2gpCj4+Pj4+IC0JCXJldHVybiBicmlkZ2UtPmZ1bmNzLT5hdHRhY2goYnJpZGdlKTsK Pj4+Pj4gKwlpZiAocHJldmlvdXMpCj4+Pj4+ICsJCXByZXZpb3VzLT5uZXh0ID0gYnJpZGdlOwo+ Pj4+PiArCWVsc2UKPj4+Pj4gKwkJZW5jb2Rlci0+YnJpZGdlID0gYnJpZGdlOwo+Pj4+Pgo+Pj4+ PiAgCXJldHVybiAwOwo+Pj4+PiAgfQo+Pj4+Cj4+Pj4gPHNuaXA+Cj4KCi0tIApRdWFsY29tbSBJ bm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiBDb2RlIEF1cm9yYSBGb3J1bSwK YSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK