From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 11/18] drm/i915: Convert engine->write_tail to operate on a request Date: Thu, 21 Jul 2016 16:52:01 +0300 Message-ID: <1469109121.4821.29.camel@linux.intel.com> References: <1469020330-1071-1-git-send-email-chris@chris-wilson.co.uk> <1469020330-1071-12-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id DC9166E0E9 for ; Thu, 21 Jul 2016 13:52:25 +0000 (UTC) In-Reply-To: <1469020330-1071-12-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24ga2UsIDIwMTYtMDctMjAgYXQgMTQ6MTIgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJ ZiB3ZSByZXdyaXRlIHRoZSBJOTE1X1dSSVRFX1RBSUwgc3BlY2lhbGlzYXRpb24gZm9yIHRoZSBs ZWdhY3kKPiByaW5nYnVmZmVyIGFzIHN1Ym1pdHRpbmcgdGhlIHJlcXVlc3Qgb250byB0aGUgcmlu Z2J1ZmZlciwgd2UgY2FuIHVuaWZ5Cj4gdGhlIHZmdW5jIHdpdGggYm90aCBleGVjbGlzdHMgYW5k IEd1QyBpbiB0aGUgbmV4dCBwYXRjaC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuYyB8wqDCoDcgKystLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYyB8IDUyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHzCoMKgMyArLQo+ IMKgMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKPiAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4gaW5kZXggMjE1M2I0ZmU0 YTFmLi40MDhmMzkwYTRjOTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVx dWVzdC5jCj4gQEAgLTQ2OSwxMyArNDY5LDEwIEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiDCoAnCoCovCj4gwqAJcmVxdWVz dC0+cG9zdGZpeCA9IGludGVsX3JpbmdfZ2V0X3RhaWwocmluZyk7Cj4gwqAKPiAtCWlmIChpOTE1 LmVuYWJsZV9leGVjbGlzdHMpIHsKPiArCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4gwqAJ CXJldCA9IGVuZ2luZS0+ZW1pdF9yZXF1ZXN0KHJlcXVlc3QpOwo+IC0JfSBlbHNlIHsKPiArCWVs c2UKPiDCoAkJcmV0ID0gZW5naW5lLT5hZGRfcmVxdWVzdChyZXF1ZXN0KTsKPiAtCj4gLQkJcmVx dWVzdC0+dGFpbCA9IGludGVsX3JpbmdfZ2V0X3RhaWwocmluZyk7Cj4gLQl9Cj4gwqAJLyogTm90 IGFsbG93ZWQgdG8gZmFpbCEgKi8KPiDCoAlXQVJOKHJldCwgImVtaXR8YWRkX3JlcXVlc3QgZmFp bGVkOiAlZCFcbiIsIHJldCk7Cj4gwqAJLyogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIHJlc2VydmVk IHNpemUgd2FzIGxhcmdlIGVub3VnaC4gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCj4gaW5kZXggNDQ4OGRiNDg1ZmE0Li40M2RmYTRiZTFjZmQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTU4LDE0ICs1OCw2IEBAIHZv aWQgaW50ZWxfcmluZ191cGRhdGVfc3BhY2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCj4gwqAJ CQkJCcKgcmluZy0+dGFpbCwgcmluZy0+c2l6ZSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQg X19pbnRlbF9lbmdpbmVfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAt ewo+IC0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBlbmdpbmUtPmJ1ZmZlcjsKPiAtCj4gLQly aW5nLT50YWlsICY9IHJpbmctPnNpemUgLSAxOwo+IC0JZW5naW5lLT53cml0ZV90YWlsKGVuZ2lu ZSwgcmluZy0+dGFpbCk7Cj4gLX0KPiAtCj4gwqBzdGF0aWMgaW50Cj4gwqBnZW4yX3JlbmRlcl9y aW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+IMKgCQnCoMKgwqDC oMKgwqDCoHUzMglpbnZhbGlkYXRlX2RvbWFpbnMsCj4gQEAgLTQyMSwxMyArNDEzLDYgQEAgZ2Vu OF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiDC oAlyZXR1cm4gZ2VuOF9lbWl0X3BpcGVfY29udHJvbChyZXEsIGZsYWdzLCBzY3JhdGNoX2FkZHIp Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIHJpbmdfd3JpdGVfdGFpbChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCj4gLQkJCcKgwqDCoMKgdTMyIHZhbHVlKQo+IC17Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gLQlJOTE1X1dS SVRFX1RBSUwoZW5naW5lLCB2YWx1ZSk7Cj4gLX0KPiAtCj4gwqB1NjQgaW50ZWxfZW5naW5lX2dl dF9hY3RpdmVfaGVhZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gwqB7Cj4gwqAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IEBAIC01 NDEsNyArNTI2LDcgQEAgc3RhdGljIGJvb2wgc3RvcF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiDCoAo+IMKgCUk5MTVfV1JJVEVfQ1RMKGVuZ2luZSwgMCk7Cj4gwqAJSTkx NV9XUklURV9IRUFEKGVuZ2luZSwgMCk7Cj4gLQllbmdpbmUtPndyaXRlX3RhaWwoZW5naW5lLCAw KTsKPiArCUk5MTVfV1JJVEVfVEFJTChlbmdpbmUsIDApOwo+IMKgCj4gwqAJaWYgKCFJU19HRU4y KGRldl9wcml2KSkgewo+IMKgCQkodm9pZClJOTE1X1JFQURfQ1RMKGVuZ2luZSk7Cj4gQEAgLTE0 NjcsNyArMTQ1MiwxMSBAQCBnZW42X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQo+IMKgCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVgg PDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwo+IMKgCWludGVsX3JpbmdfZW1pdChyaW5n LCByZXEtPmZlbmNlLnNlcW5vKTsKPiDCoAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfVVNFUl9J TlRFUlJVUFQpOwo+IC0JX19pbnRlbF9lbmdpbmVfc3VibWl0KHJlcS0+ZW5naW5lKTsKPiArCWlu dGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiArCj4gKwlyZXEtPnRhaWwgPSBpbnRlbF9yaW5nX2dl dF90YWlsKHJpbmcpOwoKSSdkIGp1c3QgZG8gcmVxLT50YWlsID0gcmluZy0+dGFpbCBhbmQgZHJv cCB0aGUgaW50ZWxfcmluZ19nZXRfdGFpbCgpCmZ1bmN0aW9uIGNvbXBsZXRlbHkgYXQgdGhlIG1v c3QgY29udmVuaWVudCBzcG90IHdoaWNoIG1pZ2h0IGJlIGFyb3VuZApub3cgYmVmb3JlIHlvdSBh ZGQgc29tZSBtb3JlLCBjdXJyZW50bHkgd2Ugb25seSBoYXZlIDUgdXNlcy4KClJldmlld2VkLWJ5 OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CgpSZWdh cmRzLCBKb29uYXMKCj4gKwo+ICsJcmVxLT5lbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0KHJlcSk7Cj4g wqAKPiDCoAlyZXR1cm4gMDsKPiDCoH0KPiBAQCAtMTQ5Nyw3ICsxNDg2LDggQEAgZ2VuOF9yZW5k ZXJfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gwqAJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOwo+IMKgCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VS X0lOVEVSUlVQVCk7Cj4gwqAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwo+IC0JX19p bnRlbF9lbmdpbmVfc3VibWl0KGVuZ2luZSk7Cj4gKwo+ICsJcmVxLT5lbmdpbmUtPnN1Ym1pdF9y ZXF1ZXN0KHJlcSk7Cj4gwqAKPiDCoAlyZXR1cm4gMDsKPiDCoH0KPiBAQCAtMTcxNiwxMSArMTcw NiwyMiBAQCBpOXh4X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQo+IMKgCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RP UkVfRFdPUkRfSU5ERVhfU0hJRlQpOwo+IMKgCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmZl bmNlLnNlcW5vKTsKPiDCoAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQp Owo+IC0JX19pbnRlbF9lbmdpbmVfc3VibWl0KHJlcS0+ZW5naW5lKTsKPiArCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKPiArCj4gKwlyZXEtPnRhaWwgPSBpbnRlbF9yaW5nX2dldF90YWlsKHJp bmcpOwo+ICsKPiArCXJlcS0+ZW5naW5lLT5zdWJtaXRfcmVxdWVzdChyZXEpOwo+IMKgCj4gwqAJ cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiArc3RhdGljIHZvaWQgaTl4eF9zdWJtaXRfcmVxdWVzdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gK3sKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcXVlc3QtPmk5MTU7Cj4gKwo+ICsJSTkxNV9XUklU RV9UQUlMKHJlcXVlc3QtPmVuZ2luZSwgcmVxdWVzdC0+dGFpbCk7Cj4gK30KPiArCj4gwqBzdGF0 aWMgdm9pZAo+IMKgZ2VuNl9pcnFfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiDCoHsKPiBAQCAtMjQ3OSwxMCArMjQ4MCw5IEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRf c2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCj4gwqAJcmN1 X3JlYWRfdW5sb2NrKCk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgZ2VuNl9ic2RfcmluZ193 cml0ZV90YWlsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAtCQkJCcKgwqDCoMKg wqB1MzIgdmFsdWUpCj4gK3N0YXRpYyB2b2lkIGdlbjZfYnNkX3N1Ym1pdF9yZXF1ZXN0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiDCoHsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHJlcXVlc3QtPmk5MTU7Cj4gwqAKPiDCoAlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gwqAKPiBAQCAtMjUwNiw4 ICsyNTA2LDggQEAgc3RhdGljIHZvaWQgZ2VuNl9ic2RfcmluZ193cml0ZV90YWlsKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiDCoAkJRFJNX0VSUk9SKCJ0aW1lZCBvdXQgd2FpdGlu ZyBmb3IgdGhlIEJTRCByaW5nIHRvIHdha2UgdXBcbiIpOwo+IMKgCj4gwqAJLyogTm93IHRoYXQg dGhlIHJpbmcgaXMgZnVsbHkgcG93ZXJlZCB1cCwgdXBkYXRlIHRoZSB0YWlsICovCj4gLQlJOTE1 X1dSSVRFX0ZXKFJJTkdfVEFJTChlbmdpbmUtPm1taW9fYmFzZSksIHZhbHVlKTsKPiAtCVBPU1RJ TkdfUkVBRF9GVyhSSU5HX1RBSUwoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiArCUk5MTVfV1JJVEVf RlcoUklOR19UQUlMKHJlcXVlc3QtPmVuZ2luZS0+bW1pb19iYXNlKSwgcmVxdWVzdC0+dGFpbCk7 Cj4gKwlQT1NUSU5HX1JFQURfRlcoUklOR19UQUlMKHJlcXVlc3QtPmVuZ2luZS0+bW1pb19iYXNl KSk7Cj4gwqAKPiDCoAkvKiBMZXQgdGhlIHJpbmcgc2VuZCBJRExFIG1lc3NhZ2VzIHRvIHRoZSBH VCBhZ2FpbiwKPiDCoAnCoCogYW5kIHNvIGxldCBpdCBzbGVlcCB0byBjb25zZXJ2ZSBwb3dlciB3 aGVuIGlkbGUuCj4gQEAgLTI4MTMsNyArMjgxMyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jpbmdf ZGVmYXVsdF92ZnVuY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQkJ CcKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiDCoHsKPiDCoAll bmdpbmUtPmluaXRfaHcgPSBpbml0X3JpbmdfY29tbW9uOwo+IC0JZW5naW5lLT53cml0ZV90YWls ID0gcmluZ193cml0ZV90YWlsOwo+ICsJZW5naW5lLT5zdWJtaXRfcmVxdWVzdCA9IGk5eHhfc3Vi bWl0X3JlcXVlc3Q7Cj4gwqAKPiDCoAllbmdpbmUtPmFkZF9yZXF1ZXN0ID0gaTl4eF9hZGRfcmVx dWVzdDsKPiDCoAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+IEBAIC0yODk3LDcgKzI4 OTcsNyBAQCBpbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+IMKgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiDCoAkJ LyogZ2VuNiBic2QgbmVlZHMgYSBzcGVjaWFsIHdhIGZvciB0YWlsIHVwZGF0ZXMgKi8KPiDCoAkJ aWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+IC0JCQllbmdpbmUtPndyaXRlX3RhaWwgPSBnZW42X2Jz ZF9yaW5nX3dyaXRlX3RhaWw7Cj4gKwkJCWVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBnZW42X2Jz ZF9zdWJtaXRfcmVxdWVzdDsKPiDCoAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuNl9ic2Rfcmlu Z19mbHVzaDsKPiDCoAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA4KQo+IMKgCQkJZW5naW5l LT5pcnFfZW5hYmxlX21hc2sgPSBHVF9CU0RfVVNFUl9JTlRFUlJVUFQ7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDg1ZDZhNzA1NTRiOS4uMWEzOGMzODMz MjdlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0y MDQsOCArMjA0LDYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gwqAKPiDCoAlpbnQJCSgq aW5pdF9jb250ZXh0KShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gwqAKPiAt CXZvaWQJCSgqd3JpdGVfdGFpbCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAtCQkJ CcKgwqDCoMKgwqDCoHUzMiB2YWx1ZSk7Cj4gwqAJaW50CQkoKmFkZF9yZXF1ZXN0KShzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gwqAJLyogU29tZSBjaGlwc2V0cyBhcmUgbm90 IHF1aXRlIGFzIGNvaGVyZW50IGFzIGFkdmVydGlzZWQgYW5kIG5lZWQKPiDCoAnCoCogYW4gZXhw ZW5zaXZlIGtpY2sgdG8gZm9yY2UgYSB0cnVlIHJlYWQgb2YgdGhlIHVwLXRvLWRhdGUgc2Vxbm8u Cj4gQEAgLTI5NCw2ICsyOTIsNyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKPiDCoCNkZWZp bmUgSTkxNV9ESVNQQVRDSF9TRUNVUkUgMHgxCj4gwqAjZGVmaW5lIEk5MTVfRElTUEFUQ0hfUElO TkVEIDB4Mgo+IMKgI2RlZmluZSBJOTE1X0RJU1BBVENIX1JTwqDCoMKgwqDCoDB4NAo+ICsJdm9p ZAkJKCpzdWJtaXRfcmVxdWVzdCkoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+ IMKgCj4gwqAJLyoqCj4gwqAJwqAqIExpc3Qgb2Ygb2JqZWN0cyBjdXJyZW50bHkgaW52b2x2ZWQg aW4gcmVuZGVyaW5nIGZyb20gdGhlCi0tIApKb29uYXMgTGFodGluZW4KT3BlbiBTb3VyY2UgVGVj aG5vbG9neSBDZW50ZXIKSW50ZWwgQ29ycG9yYXRpb24KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==