From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v6 13/28] drm/i915/dp: Compute DSC pipe config in atomic check Date: Mon, 29 Oct 2018 22:34:58 +0200 Message-ID: <20181029203458.GP9144@intel.com> References: <20181024222840.25683-1-manasi.d.navare@intel.com> <20181024222840.25683-14-manasi.d.navare@intel.com> <20181029203039.GO9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181029203039.GO9144@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgMjksIDIwMTggYXQgMTA6MzA6MzlQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgT2N0IDI0LCAyMDE4IGF0IDAzOjI4OjI1UE0gLTA3MDAsIE1hbmFz aSBOYXZhcmUgd3JvdGU6Cj4gPiBEU0MgcGFyYW1zIGxpa2UgdGhlIGVuYWJsZSwgY29tcHJlc3Nl ZCBicHAsIHNsaWNlIGNvdW50IGFuZAo+ID4gZHNjX3NwbGl0IGFyZSBhZGRlZCB0byB0aGUgaW50 ZWxfY3J0Y19zdGF0ZS4gVGhlc2UgcGFyYW1ldGVycwo+ID4gYXJlIHNldCBiYXNlZCBvbiB0aGUg cmVxdWVzdGVkIG1vZGUgYW5kIGF2YWlsYWJsZSBsaW5rIHBhcmFtZXRlcnMKPiA+IGR1cmluZyB0 aGUgcGlwZSBjb25maWd1cmF0aW9uIGluIGF0b21pYyBjaGVjayBwaGFzZS4KPiA+IFRoZXNlIHZh bHVlcyBhcmUgdGhlbiBsYXRlciB1c2VkIHRvIHBvcHVsYXRlIHRoZSByZW1haW5pbmcgRFNDCj4g PiBhbmQgUkMgcGFyYW1ldGVycyBiZWZvcmUgZW5iYWxpbmcgRFNDIGluIGF0b21pYyBjb21taXQu Cj4gPiAKPiA+IHY5Ogo+ID4gKiBSZWJhc2Ugb24gdG9wIG9mIGRybS10aXAgdGhhdCBub3cgdXNl cyBmYXN0X25hcnJvdyBjb25maWcKPiA+IGZvciBlZHAgKE1hbmFzaSkKPiA+IHY4Ogo+ID4gKiBD aGVjayBmb3IgRFNDIGJwYyBub3QgMCAobWFuYXNpKQo+ID4gCj4gPiB2NzoKPiA+ICogRml4IGlu ZGVudGF0aW9uIGluIGNvbXB1dGVfbV9uIChNYW5hc2kpCj4gPiAKPiA+IHY2IChGcm9tIEdhdXJh dik6Cj4gPiAqIFJlbW92ZSBmdW5jdGlvbiBjYWxsIG9mIGludGVsX2RwX2NvbXB1dGVfZHNjX3Bh cmFtcygpIGFuZAo+ID4gaW52b2tlIGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcygpIGluIHRo ZSBwYXRjaCB3aGVyZQo+ID4gaXQgaXMgZGVmaW5lZCB0byBmaXggY29tcGlsYXRpb24gd2Fybmlu ZyAoR2F1cmF2KQo+ID4gCj4gPiB2NToKPiA+IEFkZCBkcm1fZHNjX2NmZyBpbiBpbnRlbF9jcnRj X3N0YXRlIChNYW5hc2kpCj4gPiAKPiA+IHY0Ogo+ID4gKiBSZWJhc2Ugb24gcmVmYWN0b3Jpbmcg b2YgaW50ZWxfZHBfY29tcHV0ZV9jb25maWcgb24gdGlwIChNYW5hc2kpCj4gPiAqIEFkZCBhIGNv bW1lbnQgd2h5IHdlIG5lZWQgdG8gY2hlY2sgUFNSIHdoaWxlIGVuYWJsaW5nIERTQyAoR2F1cmF2 KQo+ID4gCj4gPiB2MzoKPiA+ICogQ2hlY2sgUFBSID4gbWF4X2NkY2xvY2sgdG8gdXNlIDIgVkRT QyBpbnN0YW5jZXMgKFZpbGxlKQo+ID4gCj4gPiB2MjoKPiA+ICogQWRkIGlmLWVsc2UgZm9yIGVE UC9EUCAoR2F1cmF2KQo+ID4gCj4gPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+IENjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPiA+IENjOiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5j b20+Cj4gPiBDYzogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KPiA+ IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+ Cj4gPiBSZXZpZXdlZC1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwu Y29tPgo+ID4gQWNrZWQtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5j b20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAg MjAgKysrLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuaCB8ICAgMyAr LQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICB8IDE3MCArKysrKysr KysrKysrKysrKysrKysrLS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9t c3QuYyAgfCAgIDIgKy0KPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDE1NSBpbnNlcnRpb25zKCspLCA0 MCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ ID4gaW5kZXggZmUwNDVhYmI2NDcyLi4xODczN2JkODJiNjggMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTY0MzQsNyArNjQzNCw3IEBAIHN0YXRpYyBp bnQgaXJvbmxha2VfZmRpX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLAo+ID4gIAo+ID4gIAlwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzID0gbGFuZTsKPiA+ICAKPiA+ IC0JaW50ZWxfbGlua19jb21wdXRlX21fbihwaXBlX2NvbmZpZy0+cGlwZV9icHAsIGxhbmUsIGZk aV9kb3RjbG9jaywKPiA+ICsJaW50ZWxfbGlua19jb21wdXRlX21fbihwaXBlX2NvbmZpZy0+cGlw ZV9icHAsIDAsIGxhbmUsIGZkaV9kb3RjbG9jaywKPiA+ICAJCQkgICAgICAgbGlua19idywgJnBp cGVfY29uZmlnLT5mZGlfbV9uLCBmYWxzZSk7Cj4gPiAgCj4gPiAgCXJldCA9IGlyb25sYWtlX2No ZWNrX2ZkaV9sYW5lcyhkZXYsIGludGVsX2NydGMtPnBpcGUsIHBpcGVfY29uZmlnKTsKPiA+IEBA IC02NjcxLDE3ICs2NjcxLDI1IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVfbV9uKHVuc2lnbmVkIGlu dCBtLCB1bnNpZ25lZCBpbnQgbiwKPiA+ICB9Cj4gPiAgCj4gPiAgdm9pZAo+ID4gLWludGVsX2xp bmtfY29tcHV0ZV9tX24oaW50IGJpdHNfcGVyX3BpeGVsLCBpbnQgbmxhbmVzLAo+ID4gK2ludGVs X2xpbmtfY29tcHV0ZV9tX24oaW50IGJpdHNfcGVyX3BpeGVsLCB1aW50MTZfdCBjb21wcmVzc2Vk X2JwcCwKPiA+ICsJCSAgICAgICBpbnQgbmxhbmVzLAo+ID4gIAkJICAgICAgIGludCBwaXhlbF9j bG9jaywgaW50IGxpbmtfY2xvY2ssCj4gPiAgCQkgICAgICAgc3RydWN0IGludGVsX2xpbmtfbV9u ICptX24sCj4gPiAgCQkgICAgICAgYm9vbCBjb25zdGFudF9uKQo+ID4gIHsKPiA+ICAJbV9uLT50 dSA9IDY0Owo+ID4gIAo+ID4gLQljb21wdXRlX21fbihiaXRzX3Blcl9waXhlbCAqIHBpeGVsX2Ns b2NrLAo+ID4gLQkJICAgIGxpbmtfY2xvY2sgKiBubGFuZXMgKiA4LAo+ID4gLQkJICAgICZtX24t PmdtY2hfbSwgJm1fbi0+Z21jaF9uLAo+ID4gLQkJICAgIGNvbnN0YW50X24pOwo+ID4gKwkvKiBG b3IgRFNDLCBEYXRhIE0vTiBjYWxjdWxhdGlvbiB1c2VzIGNvbXByZXNzZWQgQlBQICovCj4gPiAr CWlmIChjb21wcmVzc2VkX2JwcCkKPiA+ICsJCWNvbXB1dGVfbV9uKGNvbXByZXNzZWRfYnBwICog cGl4ZWxfY2xvY2ssCj4gPiArCQkJICAgIGxpbmtfY2xvY2sgKiBubGFuZXMgKiA4LAo+ID4gKwkJ CSAgICAmbV9uLT5nbWNoX20sICZtX24tPmdtY2hfbiwKPiA+ICsJCQkgICAgY29uc3RhbnRfbik7 Cj4gPiArCWVsc2UKPiA+ICsJCWNvbXB1dGVfbV9uKGJpdHNfcGVyX3BpeGVsICogcGl4ZWxfY2xv Y2ssCj4gPiArCQkJICAgIGxpbmtfY2xvY2sgKiBubGFuZXMgKiA4LAo+ID4gKwkJCSAgICAmbV9u LT5nbWNoX20sICZtX24tPmdtY2hfbiwKPiA+ICsJCQkgICAgY29uc3RhbnRfbik7Cj4gPiAgCj4g PiAgCWNvbXB1dGVfbV9uKHBpeGVsX2Nsb2NrLCBsaW5rX2Nsb2NrLAo+ID4gIAkJICAgICZtX24t PmxpbmtfbSwgJm1fbi0+bGlua19uLAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku aAo+ID4gaW5kZXggNWQ1MGRlY2JjYmI1Li5iMGIyM2UxZTkzOTIgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuaAo+ID4gQEAgLTQwNyw3ICs0MDcsOCBAQCBzdHJ1Y3Qg aW50ZWxfbGlua19tX24gewo+ID4gIAkgICAgIChfX2kpKyspIFwKPiA+ICAJCWZvcl9lYWNoX2lm KHBsYW5lKQo+ID4gIAo+ID4gLXZvaWQgaW50ZWxfbGlua19jb21wdXRlX21fbihpbnQgYnBwLCBp bnQgbmxhbmVzLAo+ID4gK3ZvaWQgaW50ZWxfbGlua19jb21wdXRlX21fbihpbnQgYnBwLCB1aW50 MTZfdCBjb21wcmVzc2VkX2JwcCwKPiA+ICsJCQkgICAgaW50IG5sYW5lcywKPiA+ICAJCQkgICAg aW50IHBpeGVsX2Nsb2NrLCBpbnQgbGlua19jbG9jaywKPiA+ICAJCQkgICAgc3RydWN0IGludGVs X2xpbmtfbV9uICptX24sCj4gPiAgCQkJICAgIGJvb2wgY29uc3RhbnRfbik7Cj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKPiA+IGluZGV4IDZmNjZhMzhiYTBiMi4uYTg4ZjkzNzFkZDMyIDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAgLTQ3LDYgKzQ3LDggQEAKPiA+ICAK PiA+ICAvKiBEUCBEU0Mgc21hbGwgam9pbmVyIGhhcyAyIEZJRk9zIGVhY2ggb2YgNjQwIHggNiBi eXRlcyAqLwo+ID4gICNkZWZpbmUgRFBfRFNDX01BWF9TTUFMTF9KT0lORVJfUkFNX0JVRkZFUgk2 MTQ0MAo+ID4gKyNkZWZpbmUgRFBfRFNDX01JTl9TVVBQT1JURURfQlBDCQk4Cj4gPiArI2RlZmlu ZSBEUF9EU0NfTUFYX1NVUFBPUlRFRF9CUEMJCTEwCj4gPiAgCj4gPiAgLyogRFAgRFNDIHRocm91 Z2hwdXQgdmFsdWVzIHVzZWQgZm9yIHNsaWNlIGNvdW50IGNhbGN1bGF0aW9ucyBLUGl4ZWxzL3Mg Ki8KPiA+ICAjZGVmaW5lIERQX0RTQ19QRUFLX1BJWEVMX1JBVEUJCQkyNzIwMDAwCj4gPiBAQCAt MTkyNCw2ICsxOTI2LDE2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfY29tcHV0ZV9icHAoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwKPiA+ICAJCX0KPiA+ICAJfQo+ID4gIAo+ID4gKwkvKiBJZiBE U0MgaXMgc3VwcG9ydGVkLCB1c2UgdGhlIG1heCB2YWx1ZSByZXBvcnRlZCBieSBwYW5lbCAqLwo+ ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCAmJgo+ID4gKwkgICAgZHJtX2RwX3Np bmtfc3VwcG9ydHNfZHNjKGludGVsX2RwLT5kc2NfZHBjZCkpIHsKPiA+ICsJCWJwYyA9IG1pbl90 KHU4LAo+ID4gKwkJCSAgICBkcm1fZHBfZHNjX3NpbmtfbWF4X2NvbG9yX2RlcHRoKGludGVsX2Rw LT5kc2NfZHBjZCksCj4gPiArCQkJICAgIERQX0RTQ19NQVhfU1VQUE9SVEVEX0JQQyk7Cj4gPiAr CQlpZiAoYnBjKQo+ID4gKwkJCWJwcCA9IDMgKiBicGM7Cj4gCj4gVGhpcyBzZWVtcyBsaWtlIGl0 IHNob3VsZCBiZSAnYnBwID0gbWluKGJwcCwgMypicGMpJy4gCj4gT3RoZXJ3aXNlIHdlIG1heSBi dW1wIHRoZSBicHAgYWJvdmUgYSBsaW1pdCB3ZSBhbHJlYWR5IGVzdGFibGlzaGVkIGVhcmxpZXIu Cj4gCj4gPiArCX0KPiA+ICsKPiA+ICAJcmV0dXJuIGJwcDsKPiA+ICB9Cj4gPiAgCj4gPiBAQCAt MTk4NCwxNCArMTk5NiwxMSBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnX3dpZGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ICAJCQkJbGlua19jbG9jayA9IGludGVsX2RwLT5j b21tb25fcmF0ZXNbY2xvY2tdOwo+ID4gIAkJCQlsaW5rX2F2YWlsID0gaW50ZWxfZHBfbWF4X2Rh dGFfcmF0ZShsaW5rX2Nsb2NrLAo+ID4gIAkJCQkJCQkJICAgIGxhbmVfY291bnQpOwo+ID4gLQo+ ID4gLQkJCQlpZiAobW9kZV9yYXRlIDw9IGxpbmtfYXZhaWwpIHsKPiA+IC0JCQkJCXBpcGVfY29u ZmlnLT5sYW5lX2NvdW50ID0gbGFuZV9jb3VudDsKPiA+IC0JCQkJCXBpcGVfY29uZmlnLT5waXBl X2JwcCA9IGJwcDsKPiA+IC0JCQkJCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gbGlua19jbG9j azsKPiA+IC0KPiA+ICsJCQkJcGlwZV9jb25maWctPmxhbmVfY291bnQgPSBsYW5lX2NvdW50Owo+ ID4gKwkJCQlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSBicHA7Cj4gPiArCQkJCXBpcGVfY29uZmln LT5wb3J0X2Nsb2NrID0gbGlua19jbG9jazsKPiA+ICsJCQkJaWYgKG1vZGVfcmF0ZSA8PSBsaW5r X2F2YWlsKQo+ID4gIAkJCQkJcmV0dXJuIHRydWU7Cj4gCj4gV2h5IGRvIHdlIG5lZWQgdG8gYXNz aWduIHRoZXNlIGlmIHdlIGRvbid0IGFjY2VwdCB0aGUgY29uZmlndXJhdGlvbj8KPiAKPiA+IC0J CQkJfQo+ID4gIAkJCX0KPiA+ICAJCX0KPiA+ICAJfQo+ID4gQEAgLTIwMjAsMTQgKzIwMjksMTEg QEAgaW50ZWxfZHBfY29tcHV0ZV9saW5rX2NvbmZpZ19mYXN0KHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCj4gPiAgCQkJCWxpbmtfY2xvY2sgPSBpbnRlbF9kcC0+Y29tbW9uX3JhdGVzW2Nsb2Nr XTsKPiA+ICAJCQkJbGlua19hdmFpbCA9IGludGVsX2RwX21heF9kYXRhX3JhdGUobGlua19jbG9j aywKPiA+ICAJCQkJCQkJCSAgICBsYW5lX2NvdW50KTsKPiA+IC0KPiA+IC0JCQkJaWYgKG1vZGVf cmF0ZSA8PSBsaW5rX2F2YWlsKSB7Cj4gPiAtCQkJCQlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9 IGxhbmVfY291bnQ7Cj4gPiAtCQkJCQlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSBicHA7Cj4gPiAt CQkJCQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGxpbmtfY2xvY2s7Cj4gPiAtCj4gPiArCQkJ CXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0gbGFuZV9jb3VudDsKPiA+ICsJCQkJcGlwZV9jb25m aWctPnBpcGVfYnBwID0gYnBwOwo+ID4gKwkJCQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGxp bmtfY2xvY2s7Cj4gPiArCQkJCWlmIChtb2RlX3JhdGUgPD0gbGlua19hdmFpbCkKPiA+ICAJCQkJ CXJldHVybiB0cnVlOwo+ID4gLQkJCQl9Cj4gPiAgCQkJfQo+ID4gIAkJfQo+ID4gIAl9Cj4gPiBA QCAtMjAzNSwxNCArMjA0MSw4OCBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnX2Zhc3Qo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ICAJcmV0dXJuIGZhbHNlOwo+ID4gIH0KPiA+ ICAKPiA+ICtzdGF0aWMgYm9vbCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKPiA+ICsJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZywKPiA+ICsJCQkJCXN0cnVjdCBsaW5rX2NvbmZpZ19saW1pdHMgKmxpbWl0cykKPiA+ ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGln X3BvcnQoaW50ZWxfZHApOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+ICsJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9k ZTsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5iYXNl LmNydGMpLT5waXBlOwo+ID4gKwl1MTYgZHNjX21heF9vdXRwdXRfYnBwID0gMDsKPiA+ICsJdTgg ZHNjX2RwX3NsaWNlX2NvdW50ID0gMDsKPiA+ICsKPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPCAxMCB8fAo+ID4gKwkgICAgIWRybV9kcF9zaW5rX3N1cHBvcnRzX2RzYyhpbnRlbF9kcC0+ ZHNjX2RwY2QpKQo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKwkvKiBEUCBEU0Mgb25s eSBzdXBwb3J0ZWQgb24gUGlwZSBCIGFuZCBDICovCj4gPiArCWlmIChwaXBlID09IFBJUEVfQSAm JiAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKPiA+ICsJCXJldHVybiBmYWxzZTsKPiAKPiBE byB3ZSBtZWFuICd0cmFuc2NvZGVyID09IEVEUCB8fCB0cmFuc2NvZGVyID09IEIgfHwgdHJhbnNj b2RlciA9PSBDJyA/Cj4gT3IgbWF5YmUgJ3RyYW5zY29kZXIgIT0gQScgZm9yIHNob3J0LiBJIGd1 ZXNzIHRoaXMgd2lsbCBuZWVkIHRvIGFkanVzdGVkCj4gZm9yIHRoZSBuZXh0IHBsYXRmb3JtIGFu eXdheSBzbyBtYWtpbmcgdGhlIGFzc3VtcHRpb24gdGhhdCB0cmFuc2NvZGVyIEEKPiBpcyB0aGUg b25seSBvbmUgdGhhdCBjYW4ndCBkbyBEU0MgaXMgZmluZS4KPiAKPiBUaGlzIHdob2xlIHRoaW5n IHNlZW1zIGxpa2UgYSBnb29kIGhlbHBlciBmdW5jdGlvbi4KPiBpbnRlbF9kcF9zb3VyY2Vfc3Vw cG9ydHNfZHNjKCkgb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4gQW5kIHRoZW4gd2UKPiBjb3VsZCBo YXZlIGludGVsX2RwX3N1cHBvcnRzX2RzYygpIHdoaWNoIGp1c3QgY2FsbHMgdGhhdCArCj4gZHJt X2RwX3Npbmtfc3VwcG9ydHNfZHNjKCkuCgpBbm90aGVyIGNvbmZ1c2lvbiBhYm91dCB0aGVzZSBj aGVja3MgaXMgZ2xrLiBTb21lIG90aGVyIHBsYWNlcyBzZWVtCnRvIGluZGljYXRlIHRoYXQgZ2xr IGhhcyBEU0MsIGJ1dCB0aGVuIGNvZGUgbGlrZSB0aGlzIGhlcmUgZG9lc24ndCAKYWNjZXB0IGds ay4gV2hhdCdzIHVwIHdpdGggdGhhdD8KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==