From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v8 1/2] drm/i915: Introduce async plane update to i915 Date: Fri, 08 Mar 2019 17:34:26 +0200 Message-ID: <8736nx7531.fsf@intel.com> References: <20190307164948.12138-1-helen.koike@collabora.com> <87ftrx7ks0.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id B59C96E3C0 for ; Fri, 8 Mar 2019 15:34:30 +0000 (UTC) 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: Helen Koike , dri-devel@lists.freedesktop.org Cc: tfiga@chromium.org, mcasas@google.com, zhenyu.z.wang@intel.com, daniel.vetter@ffwll.ch, tina.zhang@intel.com, kernel@collabora.com List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCAwOCBNYXIgMjAxOSwgSGVsZW4gS29pa2UgPGhlbGVuLmtvaWtlQGNvbGxhYm9yYS5j b20+IHdyb3RlOgo+IEhpIEphbmksCj4KPiBPbiAzLzgvMTkgNjo1NSBBTSwgSmFuaSBOaWt1bGEg d3JvdGU6Cj4+IAo+PiBQbGVhc2Ugc2VuZCBkcm0vaTkxNSBwYXRjaGVzIGFsc28gdG8gaW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZyB0bwo+PiB0cmlnZ2VyIENJIG9uIHRoZSBwYXRjaGVz IGFtb25nIG90aGVyIHRoaW5ncy4KPgo+IFN1cmUhIElzIHRoZXJlIGEgd2F5IHRvIHRlbGwgdGhl IENJIHRvIHBpY2sgdXAgdGhlIGRlcGVuZGVuY3kgWzFdIGFzIHdlbGw/CgpOby4gWW91IHNob3Vs ZCBwb3N0IHRoZXNlIGFzIHBhcnQgb2YgYSBzZWxmLWNvbnRhaW5lZCBzZXJpZXMuIExvb2tzIGxp a2UKeW91IGFscmVhZHkgaGF2ZSBvdGhlciBkcml2ZXIgY2hhbmdlcyBpbiB0aGUgc2VyaWVzLgoK QlIsCkphbmkuCgoKPgo+IFsxXSAiW1BBVENIXSBkcm06IGRvbid0IGJsb2NrIGZiIGNoYW5nZXMg Zm9yIGFzeW5jIHBsYW5lIHVwZGF0ZXMiCj4KPiBSZWdhcmRzLAo+IEhlbGVuCj4KPj4gCj4+IEJS LAo+PiBKYW5pLgo+PiAKPj4gCj4+IE9uIFRodSwgMDcgTWFyIDIwMTksIEhlbGVuIEtvaWtlIDxo ZWxlbi5rb2lrZUBjb2xsYWJvcmEuY29tPiB3cm90ZToKPj4+IEZyb206IEd1c3Rhdm8gUGFkb3Zh biA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5jb20+Cj4+Pgo+Pj4gQWRkIGltcGxlbWVudGF0 aW9uIGZvciBhc3luYyBwbGFuZSB1cGRhdGUgY2FsbGJhY2tzCj4+Pgo+Pj4gU2lnbmVkLW9mZi1i eTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvbT4KPj4+IFNp Z25lZC1vZmYtYnk6IEVucmljIEJhbGxldGJvIGkgU2VycmEgPGVucmljLmJhbGxldGJvQGNvbGxh Ym9yYS5jb20+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBUaW5hIFpoYW5nIDx0aW5hLnpoYW5nQGludGVs LmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IEhlbGVuIEtvaWtlIDxoZWxlbi5rb2lrZUBjb2xsYWJv cmEuY29tPgo+Pj4KPj4+IC0tLQo+Pj4gSGksCj4+Pgo+Pj4gVGhpcyBwYXRjaCBqdXN0IGFkZHMg dGhlIGNhbGxiYWNrcyBmb3IgYXRvbWljIGFzeW5jIHVwZGF0ZSwgdGhlIG5leHQgaW4KPj4+IHRo ZSBzZXJpZXMgd2lsbCByZXBsYWNlIHRoZSBsZWdhY3kgY3Vyc29yIGltcGxlbWVudGF0aW9uIHdp dGggdGhlc2UKPj4+IGNhbGxiYWNrcy4KPj4+Cj4+PiBJIHRlc3RlZCB3aXRoIGlndCAoa3NtX2N1 cnNvcl9sZWdhY3kgYW5kIHBsYW5lX2N1cnNvcl9sZWdhY3kpLgo+Pj4KPj4+IFRoaXMgcGF0Y2gg ZGVwZW5kcyBvbiAiW1BBVENIXSBkcm06IGRvbid0IGJsb2NrIGZiIGNoYW5nZXMgZm9yIGFzeW5j IHBsYW5lIHVwZGF0ZXMiLAo+Pj4gb3RoZXJ3aXNlIHRoZXJlIHdpbGwgYmUgYSByZWdyZXNzaW9u IG9uIGlndCB0ZXN0czoKPj4+Cj4+PiAgICAgICAgIGN1cnNvci12cy1mbGlwLWF0b21pYy10cmFu c2l0aW9ucy12YXJ5aW5nLXNpemUKPj4+ICAgICAgICAgY3Vyc29yLXZzLWZsaXAtdG9nZ2xlCj4+ PiAgICAgICAgIGN1cnNvci12cy1mbGlwLXZhcnlpbmctc2l6ZQo+Pj4KPj4+IHdpdGggZXJyb3Jz IG9mIHR5cGU6Cj4+Pgo+Pj4gIkNSSVRJQ0FMOiBjb21wbGV0ZWQgOTcgY3Vyc29yIHVwZGF0ZWQg aW4gYSBwZXJpb2Qgb2YgMzAgZmxpcHMsIHdlCj4+PiBleHBlY3QgdG8gY29tcGxldGUgYXBwcm94 aW1hdGVseSAxNTM2MCB1cGRhdGVzLCB3aXRoIHRoZSB0aHJlc2hvbGQgc2V0Cj4+PiBhdCA3Njgw Igo+Pj4KPj4+IFRoaXMgaGFwcGVucyBiZWNhdXNlIHdoYXQgc2hvdWxkIGJlIGFzeW5jIHVwZGF0 ZXMgYXJlIGJlaW5nIHR1cm5lZCBpbnRvCj4+PiBzeW5jcm9ub3VzIHVwZGF0ZXMuCj4+Pgo+Pj4g VGhhbmtzCj4+PiBIZWxlbgo+Pj4KPj4+IENoYW5nZXMgaW4gdjg6Cj4+PiAgLSB2NzogaHR0cHM6 Ly9sa21sLm9yZy9sa21sLzIwMTgvNi84LzE2OAo+Pj4gIC0gdjcgd2FzIHNwbGl0ZWQgaW4gdHdv LCBvbmUgdGhhdCBhZGRzIHRoZSBhc3luYyBjYWxsYmFja3MgYW5kIGFub3RoZXIKPj4+ICB0aGF0 IHVwZGF0ZXMgdGhlIGN1cnNvci4KPj4+ICAtIHJlYmFzZSB3aXRoIGRybS1pbnRlbAo+Pj4gIC0g YWxsb3cgYXN5bmMgdXBkYXRlIGluIGFsbCB0eXBlcyBvZiBwbGFuZXMsIG5vdCBvbmx5IGN1cnNv cgo+Pj4gIC0gYWRkIHdhdGVybWFyayBjaGVja3MgaW4gYXN5bmMgdXBkYXRlCj4+PiAgLSByZW1v dmUgYnlwYXNzIG9mIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoKSBpbiBjYXNlIG9mIGFzeW5jIHVw ZGF0ZQo+Pj4gIC0gYWRkIG1pc3NpbmcgZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMo ZGV2LCBzdGF0ZSkgY2FsbCBpbgo+Pj4gIGludGVsX2F0b21pY19jb21taXQoKS4KPj4+ICAtIHVz ZSBzd2FwKCkgZnVuY3Rpb24gaW4gYXN5bmMgdXBkYXRlIHRvIHNldCB0aGUgb2xkX2ZiIGluIHRo ZQo+Pj4gIG5ld19zdGF0ZSBvYmplY3QuCj4+PiAgLSB1c2UgaGVscGVycyBpbnRlbF91cGRhdGVf cGxhbmUoKS9pbnRlbF9kaXNhYmxlX3BsYW5lKCkKPj4+Cj4+PiBDaGFuZ2VzIGluIHY3Ogo+Pj4g LSBSZWJhc2Ugb24gdG9wIG9mIGRybS1pbnRlbCByZXBvc2l0b3J5LiBIb3BlZnVsbHkgbm93IHdp bGwgcGxheQo+Pj4gICBuaWNlbHkgd2l0aCBhdXRvYnVpbGRlcnMuCj4+Pgo+Pj4gQ2hhbmdlcyBp biB2NjoKPj4+IC0gUmV3b3JrIHRoZSBpbnRlbF9wbGFuZV9hdG9taWNfYXN5bmNfdXBkYXRlIGR1 ZSBkcml2ZXIgY2hhbmdlZCBmcm9tCj4+PiAgIGxhc3QgdGltZS4KPj4+IC0gUmVtb3ZlZCB0aGUg bXV0ZXhfbG9jay91bmxvY2sgYXMgY2F1c2VzIGEgZGVhZGxvY2suCj4+Pgo+Pj4gQ2hhbmdlcyBp biB2NToKPj4+IC0gQ2FsbCBkcm1fYXRvbWljX2hlbHBlcl9hc3luY19jaGVjaygpIGZyb20gdGhl IGNoZWNrIGhvb2sKPj4+Cj4+PiBDaGFuZ2VzIGluIHY0Ogo+Pj4gLSBTZXQgY29ycmVjdCB2bWEg dG8gbmV3IHN0YXRlIGZvciBjbGVhbnVwCj4+PiAtIE1vdmUgc2l6ZSBjaGVja3MgYmFjayB0byBk cml2ZXJzIChWaWxsZSBTeXJqw6Rsw6QpCj4+Pgo+Pj4gQ2hhbmdlcyBpbiB2MzoKPj4+IC0gTW92 ZSBmYiBzZXR0aW5nIHRvIGNvcmUgYW5kIHVzZSBuZXcgc3RhdGUgKEVyaWMgQW5ob2x0KQo+Pj4K Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8IDcxICsrKysr KysrKysrKysrKysrKysrKysrCj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jICAgICAgfCAgOSArKysKPj4+ICAyIGZpbGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKykK Pj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3Bs YW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+Pj4gaW5k ZXggNzk2MWNmMGU2OTUxLi5mNTE2YjIyN2RiYTkgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPj4+IEBAIC0zMTgsMTAgKzMxOCw4MSBAQCB2b2lk IGk5eHhfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlLAo+Pj4gIAl9Cj4+PiAgfQo+Pj4gIAo+Pj4gK3N0YXRpYyBpbnQgaW50ZWxfcGxhbmVfYXRv bWljX2FzeW5jX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+Pj4gKwkJCQkJICBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPj4+ICt7Cj4+PiArCXN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZTsKPj4+ICsKPj4+ICsJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0 X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUtPnN0YXRlLAo+Pj4gKwkJCQkJCQlzdGF0ZS0+Y3J0 Yyk7Cj4+PiArCWlmIChXQVJOX09OKCFjcnRjX3N0YXRlKSkKPj4+ICsJCXJldHVybiAtRUlOVkFM Owo+Pj4gKwo+Pj4gKwkvKgo+Pj4gKwkgKiBXaGVuIGNydGMgaXMgaW5hY3RpdmUgb3IgdGhlcmUg aXMgYSBtb2Rlc2V0IHBlbmRpbmcsCj4+PiArCSAqIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlIGlu IHRoZSBzbG93cGF0aAo+Pj4gKwkgKi8KPj4+ICsJaWYgKCFjcnRjX3N0YXRlLT5hY3RpdmUgfHwg dG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKS0+dXBkYXRlX3BpcGUpCj4+PiArCQlyZXR1 cm4gLUVJTlZBTDsKPj4+ICsKPj4+ICsJLyoKPj4+ICsJICogSWYgYW55IHBhcmFtZXRlcnMgY2hh bmdlIHRoYXQgbWF5IGFmZmVjdCB3YXRlcm1hcmtzLAo+Pj4gKwkgKiB0YWtlIHRoZSBzbG93cGF0 aC4gT25seSBjaGFuZ2luZyBmYiBvciBwb3NpdGlvbiBzaG91bGQgYmUKPj4+ICsJICogaW4gdGhl IGZhc3RwYXRoLgo+Pj4gKwkgKi8KPj4+ICsJaWYgKHBsYW5lLT5zdGF0ZS0+Y3J0YyAhPSBzdGF0 ZS0+Y3J0YyB8fAo+Pj4gKwkgICAgcGxhbmUtPnN0YXRlLT5zcmNfdyAhPSBzdGF0ZS0+c3JjX3cg fHwKPj4+ICsJICAgIHBsYW5lLT5zdGF0ZS0+c3JjX2ggIT0gc3RhdGUtPnNyY19oIHx8Cj4+PiAr CSAgICBwbGFuZS0+c3RhdGUtPmNydGNfdyAhPSBzdGF0ZS0+Y3J0Y193IHx8Cj4+PiArCSAgICBw bGFuZS0+c3RhdGUtPmNydGNfaCAhPSBzdGF0ZS0+Y3J0Y19oIHx8Cj4+PiArCSAgICAhcGxhbmUt PnN0YXRlLT5mYiAhPSAhc3RhdGUtPmZiKQo+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+PiArCj4+ PiArCXJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBpbnRlbF9wbGFuZV9h dG9taWNfYXN5bmNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+Pj4gKwkJCQkJICAg IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKPj4+ICt7Cj4+PiArCXN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKmludGVsX25ld19zdGF0ZSA9Cj4+PiArCQl0b19pbnRlbF9hdG9t aWNfc3RhdGUobmV3X3N0YXRlLT5zdGF0ZSk7Cj4+PiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50 ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4+PiArCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IHBsYW5lLT5zdGF0ZS0+Y3J0YzsKPj4+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km5ld19jcnRjX3N0YXRlOwo+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPj4+ ICsJaW50IGk7Cj4+PiArCj4+PiArCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKGlu dGVsX25ld19zdGF0ZSwgaW50ZWxfY3J0YywKPj4+ICsJCQkJCSBuZXdfY3J0Y19zdGF0ZSwgaSkK Pj4+ICsJCVdBUk5fT04obmV3X2NydGNfc3RhdGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUgfHwK Pj4+ICsJCQluZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3dtX3Bvc3QpOwo+Pj4gKwo+Pj4gKwlpOTE1 X2dlbV90cmFja19mYihpbnRlbF9mYl9vYmoocGxhbmUtPnN0YXRlLT5mYiksCj4+PiArCQkJICBp bnRlbF9mYl9vYmoobmV3X3N0YXRlLT5mYiksCj4+PiArCQkJICBpbnRlbF9wbGFuZS0+ZnJvbnRi dWZmZXJfYml0KTsKPj4+ICsKPj4+ICsJcGxhbmUtPnN0YXRlLT5zcmNfeCA9IG5ld19zdGF0ZS0+ c3JjX3g7Cj4+PiArCXBsYW5lLT5zdGF0ZS0+c3JjX3kgPSBuZXdfc3RhdGUtPnNyY195Owo+Pj4g KwlwbGFuZS0+c3RhdGUtPmNydGNfeCA9IG5ld19zdGF0ZS0+Y3J0Y194Owo+Pj4gKwlwbGFuZS0+ c3RhdGUtPmNydGNfeSA9IG5ld19zdGF0ZS0+Y3J0Y195Owo+Pj4gKwo+Pj4gKwlzd2FwKHBsYW5l LT5zdGF0ZS0+ZmIsIG5ld19zdGF0ZS0+ZmIpOwo+Pj4gKwo+Pj4gKwlpZiAocGxhbmUtPnN0YXRl LT52aXNpYmxlKQo+Pj4gKwkJaW50ZWxfdXBkYXRlX3BsYW5lKGludGVsX3BsYW5lLAo+Pj4gKwkJ CQkgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSwKPj4+ICsJCQkJICAgdG9faW50 ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKSk7Cj4+PiArCWVsc2UKPj4+ICsJCWludGVsX2Rp c2FibGVfcGxhbmUoaW50ZWxfcGxhbmUsCj4+PiArCQkJCSAgICB0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKSk7Cj4+PiArfQo+Pj4gKwo+Pj4gIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVf aGVscGVyX2Z1bmNzIGludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsKPj4+ICAJLnByZXBhcmVf ZmIgPSBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiLAo+Pj4gIAkuY2xlYW51cF9mYiA9IGludGVsX2Ns ZWFudXBfcGxhbmVfZmIsCj4+PiAgCS5hdG9taWNfY2hlY2sgPSBpbnRlbF9wbGFuZV9hdG9taWNf Y2hlY2ssCj4+PiArCS5hdG9taWNfYXN5bmNfY2hlY2sgPSBpbnRlbF9wbGFuZV9hdG9taWNfYXN5 bmNfY2hlY2ssCj4+PiArCS5hdG9taWNfYXN5bmNfdXBkYXRlID0gaW50ZWxfcGxhbmVfYXRvbWlj X2FzeW5jX3VwZGF0ZSwKPj4+ICB9Owo+Pj4gIAo+Pj4gIC8qKgo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+Pj4gaW5kZXggNDE1ZDg5NjhmMmM1Li4yNDRlMWM5NDI3N2QgMTAw NjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4gQEAgLTEzNDY0LDYg KzEzNDY0LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4+PiAgCWludCByZXQgPSAwOwo+Pj4gIAo+Pj4gKwlpZiAoc3RhdGUtPmFzeW5j X3VwZGF0ZSkgewo+Pj4gKwkJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMo ZGV2LCBzdGF0ZSk7Cj4+PiArCQlpZiAocmV0KQo+Pj4gKwkJCXJldHVybiByZXQ7Cj4+PiArCQlk cm1fYXRvbWljX2hlbHBlcl9hc3luY19jb21taXQoZGV2LCBzdGF0ZSk7Cj4+PiArCQlkcm1fYXRv bWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIHN0YXRlKTsKPj4+ICsJCXJldHVybiAwOwo+ Pj4gKwl9Cj4+PiArCj4+PiAgCWRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsKPj4+ICAJaTkx NV9zd19mZW5jZV9pbml0KCZpbnRlbF9zdGF0ZS0+Y29tbWl0X3JlYWR5LAo+Pj4gIAkJCSAgIGlu dGVsX2F0b21pY19jb21taXRfcmVhZHkpOwo+PiAKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3Bl biBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbA==