From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: Re: [PATCH v3 3/8] drm/i915/guc: Submit GuC workitems containing coalesced requests Date: Mon, 22 May 2017 17:07:35 -0700 Message-ID: <7287c36b-27fc-8ac6-ebd8-2ac2a9908391@intel.com> References: <20170522220755.12400-1-michal.winiarski@intel.com> <20170522220755.12400-3-michal.winiarski@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id AFFF689C1C for ; Tue, 23 May 2017 00:07:36 +0000 (UTC) In-Reply-To: <20170522220755.12400-3-michal.winiarski@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?Q?Micha=c5=82_Winiarski?= , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyMi8wNS8xNyAxNTowNywgTWljaGHFgiBXaW5pYXJza2kgd3JvdGU6Cj4gVG8gY3JlYXRl IGFuIHVwcGVyIGJvdW5kIG9uIG51bWJlciBvZiBHdUMgd29ya2l0ZW1zLCB3ZSBuZWVkIHRvIGNo YW5nZQo+IHRoZSB3YXkgdGhhdCByZXF1ZXN0cyBhcmUgYmVpbmcgc3VibWl0dGVkLiBSYXRoZXIg dGhhbiBzdWJtaXR0aW5nIGVhY2gKPiByZXF1ZXN0IGFzIGFuIGluZGl2aWR1YWwgd29ya2l0ZW0s IHdlIGNhbiBkbyBjb2FsZXNjaW5nIGluIGEgc2ltaWxhciB3YXkKPiB3ZSdyZSBoYW5kbGlnIGV4 ZWNsaXN0IHN1Ym1pc3Npb24gcG9ydHMuIFdlIGFsc28gbmVlZCB0byBzdG9wIHByZXRlbmRpbmcK PiB0aGF0IHdlJ3JlIGRvaW5nICJsaXRlLXJlc3RvcmUiIGluIEd1QyBzdWJtaXNzaW9uICh3ZSB3 b3VsZCBjcmVhdGUgYQo+IHdvcmtpdGVtIGVhY2ggdGltZSB3ZSBoaXQgdGhpcyBjb25kaXRpb24p Lgo+Cj4gdjI6IEFsc28gY29hbGVzY2Ugd2hlbiByZXBsYXlpbmcgb24gcmVzZXQgKERhbmllbGUp Cj4gdjM6IENvbnNpc3RlbnQgd3FfcmVzdiAtIHBlci1yZXF1ZXN0IChEYW5pZWxlKQo+Cj4gQ2M6 IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBEYW5pZWxlIENl cmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+IENjOiBKZWZm IE1jR2VlIDxqZWZmLm1jZ2VlQGludGVsLmNvbT4KPiBDYzogTWljaGFsIFdhamRlY3prbyA8bWlj aGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4gQ2M6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0Bp bnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWljaGHFgiBXaW5pYXJza2kgPG1pY2hhbC53aW5p YXJza2lAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMgfCA3MiArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxl IGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IGU2ZTBjNmUuLjJhMGMz MTYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Np b24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ IEBAIC00OTEsMTQgKzQ5MSwxMiBAQCBzdGF0aWMgdm9pZCBndWNfd3FfaXRlbV9hcHBlbmQoc3Ry dWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50LAo+ICAJICogd29ya3F1ZXVlIGJ1ZmZlciBkdyBi eSBkdy4KPiAgCSAqLwo+ICAJQlVJTERfQlVHX09OKHdxaV9zaXplICE9IDE2KTsKPiAtCUdFTV9C VUdfT04oY2xpZW50LT53cV9yc3ZkIDwgd3FpX3NpemUpOwo+Cj4gIAkvKiBwb3N0aW5jcmVtZW50 IFdRIHRhaWwgZm9yIG5leHQgdGltZSAqLwo+ICAJd3Ffb2ZmID0gY2xpZW50LT53cV90YWlsOwo+ ICAJR0VNX0JVR19PTih3cV9vZmYgJiAod3FpX3NpemUgLSAxKSk7Cj4gIAljbGllbnQtPndxX3Rh aWwgKz0gd3FpX3NpemU7Cj4gIAljbGllbnQtPndxX3RhaWwgJj0gY2xpZW50LT53cV9zaXplIC0g MTsKPiAtCWNsaWVudC0+d3FfcnN2ZCAtPSB3cWlfc2l6ZTsKPgo+ICAJLyogV1Egc3RhcnRzIGZy b20gdGhlIHBhZ2UgYWZ0ZXIgZG9vcmJlbGwgLyBwcm9jZXNzX2Rlc2MgKi8KPiAgCXdxaSA9IGNs aWVudC0+dmFkZHIgKyB3cV9vZmYgKyBHVUNfREJfU0laRTsKPiBAQCAtNTgwLDcgKzU3OCw3IEBA IHN0YXRpYyBpbnQgZ3VjX3JpbmdfZG9vcmJlbGwoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xp ZW50KQo+ICB9Cj4KPiAgLyoqCj4gLSAqIF9faTkxNV9ndWNfc3VibWl0KCkgLSBTdWJtaXQgY29t bWFuZHMgdGhyb3VnaCBHdUMKPiArICogaTkxNV9ndWNfc3VibWl0KCkgLSBTdWJtaXQgY29tbWFu ZHMgdGhyb3VnaCBHdUMKPiAgICogQHJxOgkJcmVxdWVzdCBhc3NvY2lhdGVkIHdpdGggdGhlIGNv bW1hbmRzCj4gICAqCj4gICAqIFRoZSBjYWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIGk5 MTVfZ3VjX3dxX3Jlc2VydmUoKSBhYm92ZSB3aXRoCj4gQEAgLTU5NCw3ICs1OTIsNyBAQCBzdGF0 aWMgaW50IGd1Y19yaW5nX2Rvb3JiZWxsKHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkK PiAgICogVGhlIG9ubHkgZXJyb3IgaGVyZSBhcmlzZXMgaWYgdGhlIGRvb3JiZWxsIGhhcmR3YXJl IGlzbid0IGZ1bmN0aW9uaW5nCj4gICAqIGFzIGV4cGVjdGVkLCB3aGljaCByZWFsbHkgc2hvdWxu J3QgaGFwcGVuLgo+ICAgKi8KPiAtc3RhdGljIHZvaWQgX19pOTE1X2d1Y19zdWJtaXQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPiArc3RhdGljIHZvaWQgaTkxNV9ndWNfc3VibWl0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHJxLT5pOTE1Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lID0gcnEtPmVuZ2luZTsKPiBAQCAtNjE4LDEyICs2MTYsNiBAQCBzdGF0aWMgdm9p ZCBfX2k5MTVfZ3VjX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICAJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2xpZW50LT53cV9sb2NrLCBmbGFncyk7Cj4gIH0KPgo+ IC1zdGF0aWMgdm9pZCBpOTE1X2d1Y19zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpycSkKPiAtewo+IC0JX19pOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChycSk7Cj4gLQlfX2k5MTVf Z3VjX3N1Ym1pdChycSk7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIG5lc3RlZF9lbmFibGVfc2ln bmFsaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4gIHsKPiAgCS8qIElmIHdl IHVzZSBkbWFfZmVuY2VfZW5hYmxlX3N3X3NpZ25hbGluZygpIGRpcmVjdGx5LCBsb2NrZGVwCj4g QEAgLTY1OSwxMiArNjUxLDE1IEBAIHN0YXRpYyB2b2lkIHBvcnRfYXNzaWduKHN0cnVjdCBleGVj bGlzdF9wb3J0ICpwb3J0LAo+ICAJbmVzdGVkX2VuYWJsZV9zaWduYWxpbmcocnEpOwo+ICB9Cj4K PiAtc3RhdGljIGJvb2wgaTkxNV9ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gK3N0YXRpYyB2b2lkIGk5MTVfZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICB7Cj4gIAlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGVuZ2lu ZS0+ZXhlY2xpc3RfcG9ydDsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqbGFzdCA9 IHBvcnRfcmVxdWVzdChwb3J0KTsKPiAtCXN0cnVjdCByYl9ub2RlICpyYjsKPiArCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqbGFzdCA9IE5VTEw7Cj4gIAlib29sIHN1Ym1pdCA9IGZhbHNl Owo+ICsJc3RydWN0IHJiX25vZGUgKnJiOwo+ICsKPiArCWlmIChwb3J0X3JlcXVlc3QocG9ydCkp Cj4gKwkJcG9ydCsrOwo+Cj4gIAlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2Nr KTsKPiAgCXJiID0gZW5naW5lLT5leGVjbGlzdF9maXJzdDsKPiBAQCAtNjgxLDE4ICs2NzYsMjIg QEAgc3RhdGljIGJvb2wgaTkxNV9ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gIAkJCQkJZ290byBkb25lOwo+ICAJCQkJfQo+Cj4gLQkJCQlpZiAoc3VibWl0KQo+ ICsJCQkJaWYgKHN1Ym1pdCkgewo+ICAJCQkJCXBvcnRfYXNzaWduKHBvcnQsIGxhc3QpOwo+ICsJ CQkJCWk5MTVfZ3VjX3N1Ym1pdChsYXN0KTsKPiArCQkJCQlzdWJtaXQgPSBmYWxzZTsKPiArCQkJ CX0KPiAgCQkJCXBvcnQrKzsKPiAgCQkJfQo+Cj4gIAkJCUlOSVRfTElTVF9IRUFEKCZycS0+cHJp b3RyZWUubGluayk7Cj4gIAkJCXJxLT5wcmlvdHJlZS5wcmlvcml0eSA9IElOVF9NQVg7Cj4KPiAt CQkJaTkxNV9ndWNfc3VibWl0KHJxKTsKPiArCQkJX19pOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChy cSk7Cj4gIAkJCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3RfaW4ocnEsIHBvcnRfaW5kZXgocG9ydCwg ZW5naW5lKSk7Cj4gIAkJCWxhc3QgPSBycTsKPiAgCQkJc3VibWl0ID0gdHJ1ZTsKPiArCQkJaTkx NV9ndWNfd3FfdW5yZXNlcnZlKHJxKTsKCkJpa2VzaGVkOiBkb2Vzbid0IG1vdmluZyB0aGUgcmVt b3ZhbCBvZiB0aGUgcmVzZXJ2YXRpb24gdG8gYmVmb3JlIHRoZSAKYWN0dWFsIFdRIHRhaWwgdXBk YXRlIGFjdHVhbGx5IHRoZW9yZXRpY2FsbHkgaW50cm9kdWNlIHRoZSBwb3NzaWJpbGl0eSAKb2Yg cmFjaW5nIG92ZXItcmVzZXJ2aW5nPyBJdCBjYW4ndCBodXJ0IGFueXdheSBiZWNhdXNlIG9mIHRo ZSAKY29hbGVzY2luZywgYnV0IGl0IG1pZ2h0IGJlIHdvcnRoIHNxdWFzaGluZyB0aGUgbmV4dCBw YXRjaCBpbnRvIHRoaXMgb25lIAp0byBtYWtlIHRoaW5ncyBjbGVhbmVyLgoKPiAgCQl9Cj4KPiAg CQlyYiA9IHJiX25leHQocmIpOwo+IEBAIC03MDMsMTEgKzcwMiwxMSBAQCBzdGF0aWMgYm9vbCBp OTE1X2d1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCX0KPiAg ZG9uZToKPiAgCWVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QgPSByYjsKPiAtCWlmIChzdWJtaXQpCj4g KwlpZiAoc3VibWl0KSB7Cj4gIAkJcG9ydF9hc3NpZ24ocG9ydCwgbGFzdCk7Cj4gKwkJaTkxNV9n dWNfc3VibWl0KGxhc3QpOwo+ICsJfQo+ICAJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVs aW5lLT5sb2NrKTsKPiAtCj4gLQlyZXR1cm4gc3VibWl0Owo+ICB9Cj4KPiAgc3RhdGljIHZvaWQg aTkxNV9ndWNfaXJxX2hhbmRsZXIodW5zaWduZWQgbG9uZyBkYXRhKQo+IEBAIC03MTUsMjQgKzcx NCwyMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2d1Y19pcnFfaGFuZGxlcih1bnNpZ25lZCBsb25nIGRh dGEpCj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSAoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqKWRhdGE7Cj4gIAlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGVuZ2luZS0+ ZXhlY2xpc3RfcG9ydDsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnE7Cj4gLQli b29sIHN1Ym1pdDsKPgo+IC0JZG8gewo+IC0JCXJxID0gcG9ydF9yZXF1ZXN0KCZwb3J0WzBdKTsK PiAtCQl3aGlsZSAocnEgJiYgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7Cj4gLQkJ CXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3Rfb3V0KHJxKTsKPiAtCQkJaTkxNV9nZW1fcmVxdWVzdF9w dXQocnEpOwo+ICsJcnEgPSBwb3J0X3JlcXVlc3QoJnBvcnRbMF0pOwo+ICsJd2hpbGUgKHJxICYm IGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJxKSkgewo+ICsJCXRyYWNlX2k5MTVfZ2VtX3Jl cXVlc3Rfb3V0KHJxKTsKPiArCQlpOTE1X2dlbV9yZXF1ZXN0X3B1dChycSk7Cj4KPiAtCQkJcG9y dFswXSA9IHBvcnRbMV07Cj4gLQkJCW1lbXNldCgmcG9ydFsxXSwgMCwgc2l6ZW9mKHBvcnRbMV0p KTsKPiArCQlwb3J0WzBdID0gcG9ydFsxXTsKPiArCQltZW1zZXQoJnBvcnRbMV0sIDAsIHNpemVv Zihwb3J0WzFdKSk7Cj4KPiAtCQkJcnEgPSBwb3J0X3JlcXVlc3QoJnBvcnRbMF0pOwo+IC0JCX0K PiArCQlycSA9IHBvcnRfcmVxdWVzdCgmcG9ydFswXSk7Cj4gKwl9Cj4KPiAtCQlzdWJtaXQgPSBm YWxzZTsKPiAtCQlpZiAoIXBvcnRfY291bnQoJnBvcnRbMV0pKQo+IC0JCQlzdWJtaXQgPSBpOTE1 X2d1Y19kZXF1ZXVlKGVuZ2luZSk7Cj4gLQl9IHdoaWxlIChzdWJtaXQpOwo+ICsJaWYgKCFwb3J0 X2lzc2V0KCZwb3J0WzFdKSkKPiArCQlpOTE1X2d1Y19kZXF1ZXVlKGVuZ2luZSk7Cj4gIH0KPgo+ ICAvKgo+IEBAIC0xMjUwLDYgKzEyNDUsOCBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFi bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJZm9yX2VhY2hfZW5naW5l KGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7Cj4gIAkJY29uc3QgaW50IHdxaV9zaXplID0gc2l6ZW9m KHN0cnVjdCBndWNfd3FfaXRlbSk7Cj4gIAkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy cTsKPiArCQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGVuZ2luZS0+ZXhlY2xpc3RfcG9y dDsKPiArCQlpbnQgbjsKPgo+ICAJCS8qIFRoZSB0YXNrbGV0IHdhcyBpbml0aWFsaXNlZCBieSBl eGVjbGlzdHMsIGFuZCBtYXkgYmUgaW4KPiAgCQkgKiBhIHN0YXRlIG9mIGZsdXggKGFjcm9zcyBh IHJlc2V0KSBhbmQgc28gd2UganVzdCB3YW50IHRvCj4gQEAgLTEyNjEsMTEgKzEyNTgsMTYgQEAg aW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPgo+ICAJCS8qIFJlcGxheSB0aGUgY3VycmVudCBzZXQgb2YgcHJldmlvdXNseSBz dWJtaXR0ZWQgcmVxdWVzdHMgKi8KPiAgCQlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5l LT5sb2NrKTsKPiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmZW5naW5lLT50aW1lbGluZS0+ cmVxdWVzdHMsIGxpbmspIHsKPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmZW5naW5lLT50 aW1lbGluZS0+cmVxdWVzdHMsIGxpbmspCj4gIAkJCWd1Y19jbGllbnRfdXBkYXRlX3dxX3JzdmQo Y2xpZW50LCB3cWlfc2l6ZSk7CgpDYW4gd2UganVzdCBkcm9wIHRoaXMgZW50aXJlbHkgZHVlIHRv IHRoZSBuZXcgY2hhbmdlcyBpbiB0aGlzIHZlcnNpb24gb2YgCnRoZSBwYXRjaD8gV2UgZG9uJ3Qg cmVxdWlyZSB3cV9yc3ZkIHRvIGJlID4gMCBpbiBpOTE1X2d1Y19zdWJtaXQgYW55bW9yZSAKYW5k IHdlJ3JlIGd1YXJhbnRlZWQgdG8gaGF2ZSBzcGFjZSAodGhlIHdxIGlzIGVtcHR5IGFuZCB3ZSdy ZSBvbmx5IGdvaW5nIAp0byBzdWJtaXQgdXAgdG8gMiBpdGVtcykuIE90aGVyd2lzZSwgYXJlbid0 IHdlIGdvaW5nIHRvIGxlYWsgdGhpcyByc3ZkIApzcGFjZSBzaW5jZSB3ZSBkb24ndCBjbGVhbiBp dCBpbiBpOTE1X2d1Y19zdWJtaXQgYW55bW9yZT8KClRoYW5rcywKRGFuaWVsZQoKPiAtCQkJX19p OTE1X2d1Y19zdWJtaXQocnEpOwo+IC0JCX0KPiAgCQlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+ dGltZWxpbmUtPmxvY2spOwo+ICsKPiArCQlmb3IgKG4gPSAwOyBuIDwgQVJSQVlfU0laRShlbmdp bmUtPmV4ZWNsaXN0X3BvcnQpOyBuKyspIHsKPiArCQkJaWYgKCFwb3J0X2lzc2V0KCZwb3J0W25d KSkKPiArCQkJCWJyZWFrOwo+ICsKPiArCQkJaTkxNV9ndWNfc3VibWl0KHBvcnRfcmVxdWVzdCgm cG9ydFtuXSkpOwo+ICsJCX0KPiAgCX0KPgo+ICAJcmV0dXJuIDA7Cj4KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==