From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2] drm: Block fb changes for async plane updates Date: Thu, 14 Feb 2019 09:21:32 +0100 Message-ID: <20190214082132.GP23159@phenom.ffwll.local> References: <20190107174146.2947-1-nicholas.kazlauskas@amd.com> <4604ecee-a013-774c-5f82-11dc8c59521f@collabora.com> <06ac30e2-48f4-d4a6-ec3c-bb0e4588b39b@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id D824F89D7F for ; Thu, 14 Feb 2019 08:21:36 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id 10so4266708eds.7 for ; Thu, 14 Feb 2019 00:21:36 -0800 (PST) Content-Disposition: inline In-Reply-To: <06ac30e2-48f4-d4a6-ec3c-bb0e4588b39b@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Helen Koike Cc: "Wang, Zhenyu Z" , Daniel Vetter , dri-devel@lists.freedesktop.org, "Zhang, Tina" , kernel@collabora.com, Nicholas Kazlauskas List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBGZWIgMTMsIDIwMTkgYXQgMDk6MzI6NDNQTSAtMDIwMCwgSGVsZW4gS29pa2Ugd3Jv dGU6Cj4gCj4gCj4gT24gMi8xMy8xOSA3OjIxIFBNLCBIZWxlbiBLb2lrZSB3cm90ZToKPiA+IAo+ ID4gCj4gPiBPbiAyLzEzLzE5IDU6MTggUE0sIE5pY2hvbGFzIEthemxhdXNrYXMgd3JvdGU6Cj4g Pj4gVGhlIHByZXBhcmVfZmIgY2FsbCBhbHdheXMgaGFwcGVucyBvbiBuZXdfcGxhbmVfc3RhdGUu Cj4gPj4KPiA+PiBUaGUgZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMgY2hlY2tzIHRv IHNlZSBpZgo+ID4+IHBsYW5lIHN0YXRlIHBvaW50ZXIgaGFzIGNoYW5nZWQgd2hlbiBkZWNpZGlu ZyB0byBjYWxsIGNsZWFudXBfZmIgb24KPiA+PiBlaXRoZXIgdGhlIG5ld19wbGFuZV9zdGF0ZSBv ciB0aGUgb2xkX3BsYW5lX3N0YXRlLgo+ID4+Cj4gPj4gRm9yIGEgbm9uLWFzeW5jIGF0b21pYyBj b21taXQgdGhlIHN0YXRlIHBvaW50ZXIgaXMgc3dhcHBlZCwgc28gdGhpcwo+ID4+IGhlbHBlciBj YWxscyBwcmVwYXJlX2ZiIG9uIHRoZSBuZXdfcGxhbmVfc3RhdGUgYW5kIGNsZWFudXBfZmIgb24g dGhlCj4gPj4gb2xkX3BsYW5lX3N0YXRlLiBUaGlzIG1ha2VzIHNlbnNlLCBzaW5jZSB3ZSB3YW50 IHRvIHByZXBhcmUgdGhlCj4gPj4gZnJhbWVidWZmZXIgd2UgYXJlIGdvaW5nIHRvIHVzZSBhbmQg Y2xlYW51cCB0aGUgdGhlIGZyYW1lYnVmZmVyIHdlIGFyZQo+ID4+IG5vIGxvbmdlciB1c2luZy4K PiA+Pgo+ID4+IEZvciB0aGUgYXN5bmMgYXRvbWljIHVwZGF0ZSBoZWxwZXJzIHRoaXMgZGlmZmVy cy4gVGhlIGFzeW5jIGF0b21pYwo+ID4+IHVwZGF0ZSBoZWxwZXJzIHBlcmZvcm0gaW4tcGxhY2Ug dXBkYXRlcyBvbiB0aGUgZXhpc3Rpbmcgc3RhdGUuIFRoZXkgY2FsbAo+ID4+IGRybV9hdG9taWNf aGVscGVyX2NsZWFudXBfcGxhbmVzIGJ1dCB0aGUgc3RhdGUgcG9pbnRlciBpcyBub3Qgc3dhcHBl ZC4KPiA+PiBUaGlzIG1lYW5zIHRoYXQgcHJlcGFyZV9mYiBpcyBjYWxsZWQgb24gdGhlIG5ld19w bGFuZV9zdGF0ZSBhbmQKPiA+PiBjbGVhbnVwX2ZiIGlzIGNhbGxlZCBvbiB0aGUgbmV3X3BsYW5l X3N0YXRlIChub3QgdGhlIG9sZCkuCj4gPj4KPiA+PiBJbiB0aGUgY2FzZSB3aGVyZSBvbGRfcGxh bmVfc3RhdGUtPmZiID09IG5ld19wbGFuZV9zdGF0ZS0+ZmIgdGhlbgo+ID4+IHRoZXJlIHNob3Vs ZCBiZSBubyBiZWhhdmlvcmFsIGRpZmZlcmVuY2UgYmV0d2VlbiBhbiBhc3luYyB1cGRhdGUKPiA+ PiBhbmQgYSBub24tYXN5bmMgY29tbWl0LiBCdXQgdGhlcmUgYXJlIGlzc3VlcyB0aGF0IGFyaXNl IHdoZW4KPiA+PiBvbGRfcGxhbmVfc3RhdGUtPmZiICE9IG5ld19wbGFuZV9zdGF0ZS0+ZmIuCj4g Pj4KPiA+PiBUaGUgZmlyc3QgaXMgdGhhdCB0aGUgbmV3X3BsYW5lX3N0YXRlLT5mYiBpcyBpbW1l ZGlhdGVseSBjbGVhbmVkIHVwCj4gPj4gYWZ0ZXIgaXQgaGFzIGJlZW4gcHJlcGFyZWQsIHNvIHdl J3JlIHVzaW5nIGEgZmIgdGhhdCB3ZSBzaG91bGRuJ3QKPiA+PiBiZS4KPiA+Pgo+ID4+IFRoZSBz ZWNvbmQgb2NjdXJzIGR1cmluZyBhIHNlcXVlbmNlIG9mIGFzeW5jIGF0b21pYyB1cGRhdGVzIGFu ZAo+ID4+IG5vbi1hc3luYyByZWd1bGFyIGF0b21pYyBjb21taXRzLiBTdXBwb3NlIHRoZXJlIGFy ZSB0d28gZnJhbWVidWZmZXJzCj4gPj4gYmVpbmcgaW50ZXJsZWF2ZWQgaW4gYSBkb3VibGUtYnVm ZmVyaW5nIHNjZW5hcmlvLCBmYjEgYW5kIGZiMjoKPiA+Pgo+ID4+IC0gQXN5bmMgdXBkYXRlLCBv bGRmYiA9IE5VTEwsIG5ld2ZiID0gZmIxLCBwcmVwYXJlIGZiMSwgY2xlYW51cCBmYjEKPiA+PiAt IEFzeW5jIHVwZGF0ZSwgb2xkZmIgPSBmYjEsIG5ld2ZiID0gZmIyLCBwcmVwYXJlIGZiMiwgY2xl YW51cCBmYjIKPiA+PiAtIE5vbi1hc3luYyBjb21taXQsIG9sZGZiID0gZmIyLCBuZXdmYiA9IGZi MSwgcHJlcGFyZSBmYjEsIGNsZWFudXAgZmIyCj4gPj4KPiA+PiBXZSBjYWxsIGNsZWFudXBfZmIg b24gZmIyIHR3aWNlIGluIHRoaXMgZXhhbXBsZSBzY2VuYXJpbywgYW5kIGFueQo+ID4+IGZ1cnRo ZXIgdXNlIHdpbGwgcmVzdWx0IGluIHVzZS1hZnRlci1mcmVlLgo+ID4+Cj4gPj4gVGhlIHNpbXBs ZSBmaXggdG8gdGhpcyBwcm9ibGVtIGlzIHRvIGJsb2NrIGZyYW1lYnVmZmVyIGNoYW5nZXMKPiA+ PiBpbiB0aGUgZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY2hlY2sgZnVuY3Rpb24gZm9yIG5vdy4K PiA+Pgo+ID4+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4+ IENjOiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4KPiA+PiBDYzogQW5k cmV5IEdyb2R6b3Zza3kgPGFuZHJleS5ncm9kem92c2t5QGFtZC5jb20+Cj4gPj4gQ2M6IDxzdGFi bGVAdmdlci5rZXJuZWwub3JnPiAjIHY0LjE0Kwo+ID4+IEZpeGVzOiBmZWY5ZGY4YjU5NDUgKCJk cm0vYXRvbWljOiBpbml0aWFsIHN1cHBvcnQgZm9yIGFzeW5jaHJvbm91cyBwbGFuZSB1cGRhdGUi KQo+ID4+IFNpZ25lZC1vZmYtYnk6IE5pY2hvbGFzIEthemxhdXNrYXMgPG5pY2hvbGFzLmthemxh dXNrYXNAYW1kLmNvbT4KPiA+PiAtLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNf aGVscGVyLmMgfCA5ICsrKysrKysrKwo+ID4+ICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25z KCspCj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVs cGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4+IGluZGV4IDU0 ZTJhZTYxNGRjYy4uZjQyOTBmNmIwYzM4IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9t aWNfaGVscGVyLmMKPiA+PiBAQCAtMTYwMiw2ICsxNjAyLDE1IEBAIGludCBkcm1fYXRvbWljX2hl bHBlcl9hc3luY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+ICAJICAgIG9sZF9w bGFuZV9zdGF0ZS0+Y3J0YyAhPSBuZXdfcGxhbmVfc3RhdGUtPmNydGMpCj4gPj4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gPj4gIAo+ID4+ICsJLyoKPiA+PiArCSAqIEZJWE1FOiBTaW5jZSBwcmVwYXJl X2ZiIGFuZCBjbGVhbnVwX2ZiIGFyZSBhbHdheXMgY2FsbGVkIG9uCj4gPj4gKwkgKiB0aGUgbmV3 X3BsYW5lX3N0YXRlIGZvciBhc3luYyB1cGRhdGVzIHdlIG5lZWQgdG8gYmxvY2sgZnJhbWVidWZm ZXIKPiA+PiArCSAqIGNoYW5nZXMuIFRoaXMgcHJldmVudHMgdXNlIG9mIGEgZmIgdGhhdCdzIGJl ZW4gY2xlYW5lZCB1cCBhbmQKPiA+PiArCSAqIGRvdWJsZSBjbGVhbnVwcyBmcm9tIG9jY3VyaW5n Lgo+ID4+ICsJICovCj4gPj4gKwlpZiAob2xkX3BsYW5lX3N0YXRlLT5mYiAhPSBuZXdfcGxhbmVf c3RhdGUtPmZiKQo+ID4+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4+ICsKPiA+PiAgCWZ1bmNzID0g cGxhbmUtPmhlbHBlcl9wcml2YXRlOwo+ID4+ICAJaWYgKCFmdW5jcy0+YXRvbWljX2FzeW5jX3Vw ZGF0ZSkKPiA+PiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+Pgo+ID4gCj4gPiBIaSwKPiA+IAo+ID4g VGhhbmsgeW91IGZvciB3b3JraW5nIG9uIHRoaXMuCj4gPiAKPiA+IEkgaGF2ZSB0d28gcG9pbnRz IEkgd291bGQgbGlrZSB0byByYWlzZToKPiA+IAo+ID4gMSkgY3Vyc29yIHVwZGF0ZSBpcyB0b28g c2xvdzoKPiA+IAo+ID4gSSBhbSB3b3JraW5nIG9uIHRoZSB2OCBvZgo+ID4gaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvcGF0Y2h3b3JrL3BhdGNoLzk0OTI2NC8gImRybS9pOTE1OiB1cGRhdGUKPiA+ IGN1cnNvcnMgYXN5bmNocm9ub3VzbHkgdGhyb3VnaCBhdG9taWMiLgo+ID4gCj4gPiBCdXQgd2l0 aCB0aGlzIHBhdGNoIGFwcGxpZWQsIHRoZSBmb2xsb3dpbmcgdGVzdHMgZmFpbHM6Cj4gPiAKPiA+ IGN1cnNvci12cy1mbGlwLWF0b21pYy10cmFuc2l0aW9ucy12YXJ5aW5nLXNpemUKPiA+IGN1cnNv ci12cy1mbGlwLXRvZ2dsZQo+ID4gY3Vyc29yLXZzLWZsaXAtdmFyeWluZy1zaXplCj4gPiAKPiA+ IHdpdGggZXJyb3JzIG9mIHR5cGU6Cj4gPiAKPiA+ICJDUklUSUNBTDogY29tcGxldGVkIDk3IGN1 cnNvciB1cGRhdGVkIGluIGEgcGVyaW9kIG9mIDMwIGZsaXBzLCB3ZQo+ID4gZXhwZWN0IHRvIGNv bXBsZXRlIGFwcHJveGltYXRlbHkgMTUzNjAgdXBkYXRlcywgd2l0aCB0aGUgdGhyZXNob2xkIHNl dAo+ID4gYXQgNzY4MCIKPiA+IAo+ID4gSSBndWVzcyBpdCdzIGJlY2F1c2Ugd2hhdCBzaG91bGQg YmUgYXN5bmMgdXBkYXRlcyBhcmUgYmVpbmcgdHVybmVkIGludG8KPiA+IG5vbi1hc3luYyB1cGRh dGVzICh3aGljaCBpcyBzbG93ZXIpLgo+ID4gCj4gPiBXZWxsLCBJIGd1ZXNzIHdlIG5lZWQgdG8g d29yayBvbiBhIHByb3BlciBzb2x1dGlvbiBmb3IgdGhlIEZJWE1FIGFib3ZlLAo+ID4gdGhpcyBp cyBqdXN0IGFuIG9ic2VydmF0aW9uL25vdGUuCj4gPiAKPiA+IDIpIEkgaGF2ZSBhbm90aGVyIHBv c3NpYmx5IHJlbGF0ZWQgaXNzdWU6Cj4gPiAKPiA+IEZyb20gdGhlIHRlc3RzIEkgYW0gbWFraW5n LCB1bmxlc3MgSSBkaWQgc29tZSBtaXN0YWtlIG9yIG1pc3MKPiA+IGludGVycHJldGF0aW9uICh3 aGljaCBpcyBwb3NzaWJsZSBzaW5jZSBJIGFtIG5ldyB0byBkcm0pLCBpdCBzZWVtcyB0aGF0Cj4g PiB0aGVyZSBpcyBhIHByb2JsZW0gaWYgYW4gYXN5bmMgdXBkYXRlIHJlLXVzZXMgdGhlIHNhbWUg ZmIgZnJvbSBhCj4gPiBwcmV2aW91cyBub24tYXN5bmMgY29tbWl0LCBmb3IgZXhhbXBsZToKPiA+ IAo+ID4gLSBOb24tYXN5bmMgY29tbWl0LCBvbGRmYiA9IE5VTEwsIG5ld2ZiID0gZmIxLCBwcmVw YXJlIGZiMSwgY2xlYW51cCBmYjIsCj4gPiAtIEFzeW5jIGNvbW1pdCwgb2xkZmIgPSBOVUxMLCBu ZXdmYiA9IGZiMSwgcHJlcGFyZSBmYjEsIGNsZWFudXAgZmIxICMKPiA+IGRvdWJsZSBwcmVwYXJl IGZiMQo+IAo+IFNvcnJ5LCB0aGlzIGlzIHNvbHZlZCBieSB0aGlzIHBhdGNoLCBJIG1lYW50IHRo aXM6Cj4gCj4gLSBOb24tYXN5bmMgY29tbWl0LCBvbGRmYiA9IE5VTEwsIG5ld2ZiID0gZmIxLCBw cmVwYXJlIGZiMSwgY2xlYW51cCBmYjIsCj4gLSBBc3luYyBjb21taXQsIG9sZGZiID0gZmIxLCBu ZXdmYiA9IGZiMSwgcHJlcGFyZSBmYjEsIGNsZWFudXAgZmIxCj4gI2RvdWJsZSBwcmVwYXJlIGZi MQo+IAo+IEJ1dCBJIHdhcyB0b2xkIHRoYXQgYXN5bmMgY29tbWl0IHNob3VsZCBibG9jayBpZiB0 aGVyZSBpcyBhIHBlbmRpbmcKPiBjb21taXQsIHNvIHRoaXMgc2NlbmFyaW8gc2hvdWxkbid0IGhh cHBlbiwgYnV0IHRoZXJlIGlzIHN0aWxsIHNvbWV0aGluZwo+IG9mZiAocGxlYXNlIHNlZSBiZWxv dykuCj4gCj4gPiAKPiA+IFRoZSBjdXJzb3IgdGhyb3VnaCBhdG9taWMgcGF0Y2ggd2FzICJzb2x2 aW5nIiB0aGlzIGJ5IGJ5cGFzc2luZyB0aGUKPiA+IHByZXBhcmUgY2FsbCB3aXRoIGE6Cj4gPiAK PiA+IEBAIC0xMzQ5NSw2ICsxMzUwMyw5IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvbGRfb2JqID0KPiA+IGludGVsX2ZiX29iaihwbGFuZS0+c3RhdGUtPmZiKTsKPiA+ICAgICAg ICAgaW50IHJldDsKPiA+IAo+ID4gKyAgICAgICBpZiAobmV3X3N0YXRlLT5zdGF0ZS0+YXN5bmNf dXBkYXRlKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gKwo+ID4gICAgICAgICBp ZiAob2xkX29iaikgewo+ID4gICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSA9Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBkcm1fYXRvbWljX2dldF9u ZXdfY3J0Y19zdGF0ZShuZXdfc3RhdGUtPnN0YXRlLAo+ID4gCj4gPiAKPiA+IFdoaWNoIGxvb2tz IHJlYWxseSB3cm9uZyB0byBtZSwgYnV0IHdpdGhvdXQgaXQsIGlndCB0ZXN0cwo+ID4gKHBsYW5l X2N1cnNvcl9sZWdhY3ksIGttc19jdXJzb3JfbGVnYWN5KSBmYWlsLCBJIGdldCBsb3RzIG9mCj4g PiBJOTE1X1ZNQV9QSU5fT1ZFUkZMT1csIHdoaWNoIHN1Z2dlc3QgZG91YmxlIHBpbm5pbmcgdGhl IGZyYW1lIGJ1ZmZlcnMuCj4gCj4gUGxlYXNlLCBpZ25vcmUgdGhpcyBlcnJvciBhYm92ZSwgd2hl biBJIHJhbiB0aGUgdGVzdCB0aGlzIHBhdGNoIChCbG9jawo+IGZiIGNoYW5nZXMpIHdhc24ndCBh cHBsaWVkIHdoZW4gSSBnb3QgdGhpcyBlcnJvciBhYm91dCBwaW4gb3ZlcmZsb3csIGJ1dAo+IEkg c3RpbGwgaGF2ZSBpc3N1ZXM6Cj4gCj4gV2l0aCB0aGlzIHBhdGNoIChCbG9jayBmYiBjaGFuZ2Vz KSBhcHBsaWVkIEkgZ2V0IHNldmVyYWwgZG1lc2cgZmFpbHVyZXMKPiBvbiBXQVJOX09OKHRvX2lu dGVsX3BsYW5lX3N0YXRlKHN0YXRlKS0+dm1hKSBpbiB0aGUKPiBpbnRlbF9wbGFuZV9kZXN0cm95 X3N0YXRlKCkgZnVuY3Rpb24uCj4gCj4gaHR0cHM6Ly9wZW9wbGUuY29sbGFib3JhLmNvbS9+a29p a2UvcmVzdWx0cy01LjAuMC1yYzErLXY4LXRtcC9odG1sL3Byb2JsZW1zLmh0bWwKPiAKPiBCdXQg SSBkb24ndCBnZXQgdGhpcyBlcnJvcnMgd2l0aCB0aGUgaGFjayBiZWxvdyAodGhhdCBieXBhc3MK PiBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiIGlmIHRoZSBidWZmZXIgaXMgYWxyZWFkeSBwaW5uZWQp Lgo+IAo+IEknbSBzdGlsbCBub3Qgc3VyZSB3aHksIEkgd291bGQgcmVhbGx5IGFwcHJlY2lhdGUg aWYgYW55IG9uZSBoYXMgYW55Cj4gcG9pbnRlcnMuCgppOTE1IGxhcmdlbHkgdXNlcyBpdHMgb3du IG1vZGVzZXQgZnJhbWV3b3JrLCBzbyB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgZm9yCmRpZmZlcmVu Y2VzIGluIGhvdyB3ZSBwaW4vdW5waW4gYnVmZmVycywgY29tcGFyZWQgdG8gY29tbW9uIGF0b21p YwpoZWxwZXJzLiBUaGF0J3MgYWJvdXQgbXkgYmVzdCBndWVzcy4KLURhbmllbAoKPiAKPiBUaGFu a3MKPiBIZWxlbgo+IAo+ID4gCj4gPiBJIGRpZCB0aGlzIHJlYWxseSB1Z2x5IHRlc3QgdG8gYnlw YXNzIHRoZSBwcmVwYXJlIGNhbGwganVzdCBpZiB0aGUKPiA+IGJ1ZmZlciBpcyBhbHJlYWR5IHBp bm5lZDoKPiA+IGh0dHBzOi8vZ2l0bGFiLmNvbGxhYm9yYS5jb20va29pa2UvbGludXgvY29tbWl0 LzJkMDFkNGFmMzAzNDdmZjQzZmJhYzI1NGQ4ZWMzMDVjZDZmZTRhZWIKPiA+IAo+ID4gV2l0aCB0 aGlzIGhhY2sgaWd0IHRlc3RzIHBhc3MuCj4gPiAKPiA+IEFzIEkgYW0gbmV3IHRvIERSTSwgSSB3 b3VsZCBhcHByZWNpYXRlIGlmIHNvbWVvbmUgY291bGQgY29uZmlybSB0aGF0Cj4gPiB0aGlzIGlz IGEgcmVhbCBidWcgb3IgcGxlYXNlIGNsYXJpZnkgaWYgSSBhbSBtaXNzIGludGVycHJldGluZyBh bnl0aGluZy4KPiA+IAo+ID4gSWYgdGhpcyBpcyBhIHJlYWwgYnVnLCB0aGVuIGlmIHNvbWVvbmUg Y291bGQgZ2l2ZSBtZSBwb2ludGVycyBpbiBob3cgdG8KPiA+IHByb3Blcmx5IGZpeCB0aGlzIGl0 IHdvdWxkIGJlIGdyZWF0Lgo+ID4gCj4gPiBUaGFua3MgYSBsb3QKPiA+IEhlbGVuCj4gPiAKCi0t IApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRw Oi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWw=