From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH] drm/i915: Calculate common rates and max lane count in Long pulse handler Date: Fri, 2 Dec 2016 09:39:48 -0800 Message-ID: <20161202173948.GA22948@intel.com> References: <1480651329-21578-1-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8FE286E122 for ; Fri, 2 Dec 2016 17:37:15 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1480651329-21578-1-git-send-email-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org SmFuaSwKClRoaXMgcGF0Y2ggaXMgaW4gcmVzcG9uc2UgdG8geW91ciBmZWVkYmFjayBwcmV2aW91 c2x5IG9uIHRoZSBmYWxsYmFjayBsaW5rIHJhdGUgcGF0Y2guCllvdSBoYWQgbWVudGlvbmVkIHRo YXQgd2Ugc2hvdWxkIGluIHRoZSBsb25nIHJ1biBtb3ZlIHRoZSBjb21tb24gcmF0ZXMgYXJyYXkg YW5kCm1heCBsYW5lIGNvdW50IHRvIGludGVsX2RwIHNvIHRoYXQgaXQgZ2V0cyBjb21wdXRlZCBv bmx5IG9uY2Ugb24gaG90cGx1ZyBhbmQgdGhlbgpnZXRzIHVzZWQgd2hlbmV2ZXIgaXQgaXMgcmVx dWVzdGVkLgpUaGlzIGFsc28gZ3JlYXRseSBzaW1wbGllcyB0aGUgd2F5IHdlIGhhbmRsZSBsaW5r IHRyYWluaW5nIGZhbGxiYWNrLCBzaW5jZQppbiB0aGF0IGNhc2Ugd2UgY2FuIGRpcmVjdGx5IG1v ZGlmeSB0aGUgY29tbW9uIGxlbiB0byB0aGUgbG93ZXIgdGhlIG1heCBzdXBwb3J0ZWQgbGluawpy YXRlIGFuZCBtb2RpZnkgdGhlIG1heCBsYW5lIGNvdW50IHRvIHVzZSBsb3dlciBsYW5lIGNvdW50 IGFmdGVyIHJlYWNoaW5nIFJCUi4KVGhpcyBhbGxvd3MgdXMgdG8gZ2V0IHJpZCBvZiBmYWxsYmFj a19saW5rX3JhdGUgYW5kIGZhbGxiYWNrX2xhbmVfY291bnQKdmFyaWFibGVzIGFuZCBtYWtlcyB0 aGlzIG1vcmUgZ2VuZXJpYyB3aXRob3V0IGFueSBsaW5rIHRyYWluaW5nIHJldHJ5IHNwZWNpZmlj cy4KCkNvdWxkIHlvdSBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaD8KCkkgd2lsbCBs aWtlbHkgc3VibWl0IHRoZSBsaW5rIHRyYWluaW5nIHJldHJhaW5pbmcgc2VyaWVzIGFnYWluIGJh c2luZyBpdCBvbiB0b3AKb2YgdGhpcyBwYXRjaCB0byBoYXYgZXRoZSBzaW1wbGlmaWVkIGZhbGxi YWNrIGxpbmsgdHJhaW4gbG9naWMuCgpSZWdhcmRzCk1hbmFzaQoKCk9uIFRodSwgRGVjIDAxLCAy MDE2IGF0IDA4OjAyOjA5UE0gLTA4MDAsIE1hbmFzaSBOYXZhcmUgd3JvdGU6Cj4gU3VwcG9ydGVk IGxpbmsgcmF0ZSBjb21tb24gdG8gc291cmNlIGFuZCBzaW5rIGFzIHdlbGwgYXMgdGhlCj4gbWF4 aW11bSBzdXBwb3J0ZWQgbGFuZSBjb3VudCBiYXNlZCBvbiBzb3VyY2UgYW5kIHNpbmsgY2FwYWJp bGl0aWVzIHNob3VsZAo+IGJlIHNldCBvbmx5IG9uY2Ugb24gaG90cGx1ZyBhbmQgdGhlbiB1c2Vk IGFueXRpbWUgdGhleSBhcmUgcmVxdWVzdGVkLgo+IFRoaXMgcGF0Y2ggY3JlYXRlcyBhbmQgYXJy YXkgb2YgY29tbW9uIHJhdGVzIGFuZCBtYXggbGFuZSBjb3VudCBhcyB0aGUKPiBpbnRlbF9kcCBt ZW1iZXIuIEl0IGdldHMgY2FsY3VsYXRlZCBvbmx5IG9uY2UgaW4gdGhlIGxvbmcgcHVsc2UgaGFu ZGxlcgo+IGFuZCB0aGVuIGdldHMgdXNlZCB3aGVuIHJlcXVlc3RlZCBpbiBjb21wdXRlX2NvbmZp ZyBhbmQgb3RoZXIgZnVuY3Rpb25zLgo+IAo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFA bGludXguaW50ZWwuY29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVs LmNvbT4KPiBDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ Cj4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNv bT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgfCAzOCArKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCB8ICA1ICsrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygr KSwgMjIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggOWRm YmRlNC4uZGUzNzgwNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0yNzQsOCAr Mjc0LDcgQEAgc3RhdGljIGludCBpbnRlcnNlY3RfcmF0ZXMoY29uc3QgaW50ICpzb3VyY2VfcmF0 ZXMsIGludCBzb3VyY2VfbGVuLAo+ICAJcmV0dXJuIGs7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQg aW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gLQkJCQkg aW50ICpjb21tb25fcmF0ZXMpCj4gK3N0YXRpYyBpbnQgaW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsKPiAgCWNvbnN0IGludCAqc291cmNlX3JhdGVz LCAqc2lua19yYXRlczsKPiAgCWludCBzb3VyY2VfbGVuLCBzaW5rX2xlbjsKPiBAQCAtMjg1LDcg KzI4NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gIAo+ICAJcmV0dXJuIGludGVyc2VjdF9yYXRlcyhzb3VyY2VfcmF0ZXMs IHNvdXJjZV9sZW4sCj4gIAkJCSAgICAgICBzaW5rX3JhdGVzLCBzaW5rX2xlbiwKPiAtCQkJICAg ICAgIGNvbW1vbl9yYXRlcyk7Cj4gKwkJCSAgICAgICBpbnRlbF9kcC0+Y29tbW9uX3JhdGVzKTsK PiAgfQo+ICAKPiAgc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzCj4gQEAgLTMxMiw3ICszMTEs NyBAQCBzdGF0aWMgaW50IGludGVsX2RwX2NvbW1vbl9yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAo+ICAJfQo+ICAKPiAgCW1heF9saW5rX2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xpbmtf cmF0ZShpbnRlbF9kcCk7Cj4gLQltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChp bnRlbF9kcCk7Cj4gKwltYXhfbGFuZXMgPSBpbnRlbF9kcC0+bWF4X2xhbmVfY291bnQ7Cj4gIAo+ ICAJbWF4X3JhdGUgPSBpbnRlbF9kcF9tYXhfZGF0YV9yYXRlKG1heF9saW5rX2Nsb2NrLCBtYXhf bGFuZXMpOwo+ICAJbW9kZV9yYXRlID0gaW50ZWxfZHBfbGlua19yZXF1aXJlZCh0YXJnZXRfY2xv Y2ssIDE4KTsKPiBAQCAtMTQzMCw4ICsxNDI5LDcgQEAgc3RhdGljIHZvaWQgc25wcmludGZfaW50 X2FycmF5KGNoYXIgKnN0ciwgc2l6ZV90IGxlbiwKPiAgc3RhdGljIHZvaWQgaW50ZWxfZHBfcHJp bnRfcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+ICAJY29uc3QgaW50ICpz b3VyY2VfcmF0ZXMsICpzaW5rX3JhdGVzOwo+IC0JaW50IHNvdXJjZV9sZW4sIHNpbmtfbGVuLCBj b21tb25fbGVuOwo+IC0JaW50IGNvbW1vbl9yYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXTsK PiArCWludCBzb3VyY2VfbGVuLCBzaW5rX2xlbjsKPiAgCWNoYXIgc3RyWzEyOF07IC8qIEZJWE1F OiB0b28gYmlnIGZvciBzdGFjaz8gKi8KPiAgCj4gIAlpZiAoKGRybV9kZWJ1ZyAmIERSTV9VVF9L TVMpID09IDApCj4gQEAgLTE0NDUsOCArMTQ0Myw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX3By aW50X3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlzbnByaW50Zl9pbnRfYXJy YXkoc3RyLCBzaXplb2Yoc3RyKSwgc2lua19yYXRlcywgc2lua19sZW4pOwo+ICAJRFJNX0RFQlVH X0tNUygic2luayByYXRlczogJXNcbiIsIHN0cik7Cj4gIAo+IC0JY29tbW9uX2xlbiA9IGludGVs X2RwX2NvbW1vbl9yYXRlcyhpbnRlbF9kcCwgY29tbW9uX3JhdGVzKTsKPiAtCXNucHJpbnRmX2lu dF9hcnJheShzdHIsIHNpemVvZihzdHIpLCBjb21tb25fcmF0ZXMsIGNvbW1vbl9sZW4pOwo+ICsJ c25wcmludGZfaW50X2FycmF5KHN0ciwgc2l6ZW9mKHN0ciksIGludGVsX2RwLT5jb21tb25fcmF0 ZXMsCj4gKwkJCSAgIGludGVsX2RwLT5jb21tb25fbGVuKTsKPiAgCURSTV9ERUJVR19LTVMoImNv bW1vbiByYXRlczogJXNcbiIsIHN0cik7Cj4gIH0KPiAgCj4gQEAgLTE0OTUsMTQgKzE0OTMsMTIg QEAgc3RhdGljIGludCByYXRlX3RvX2luZGV4KGludCBmaW5kLCBjb25zdCBpbnQgKnJhdGVzKQo+ ICBpbnQKPiAgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQo+ICB7Cj4gLQlpbnQgcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7fTsKPiAtCWlu dCBsZW47Cj4gKwlpbnQgbGVuID0gaW50ZWxfZHAtPmNvbW1vbl9sZW47Cj4gIAo+IC0JbGVuID0g aW50ZWxfZHBfY29tbW9uX3JhdGVzKGludGVsX2RwLCByYXRlcyk7Cj4gIAlpZiAoV0FSTl9PTihs ZW4gPD0gMCkpCj4gIAkJcmV0dXJuIDE2MjAwMDsKPiAgCj4gLQlyZXR1cm4gcmF0ZXNbbGVuIC0g MV07Cj4gKwlyZXR1cm4gaW50ZWxfZHAtPmNvbW1vbl9yYXRlc1tsZW4gLSAxXTsKPiAgfQo+ICAK PiAgaW50IGludGVsX2RwX3JhdGVfc2VsZWN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGlu dCByYXRlKQo+IEBAIC0xNTUwLDIyICsxNTQ2LDE4IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfY29t cHV0ZV9icHAoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCXN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4g IAlpbnQgbGFuZV9jb3VudCwgY2xvY2s7Cj4gIAlpbnQgbWluX2xhbmVfY291bnQgPSAxOwo+IC0J aW50IG1heF9sYW5lX2NvdW50ID0gaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHApOwo+ ICsJaW50IG1heF9sYW5lX2NvdW50ID0gaW50ZWxfZHAtPm1heF9sYW5lX2NvdW50Owo+ICAJLyog Q29udmVuaWVudGx5LCB0aGUgbGluayBCVyBjb25zdGFudHMgYmVjb21lIGluZGljZXMgd2l0aCBh IHNoaWZ0Li4uKi8KPiAgCWludCBtaW5fY2xvY2sgPSAwOwo+ICAJaW50IG1heF9jbG9jazsKPiAg CWludCBicHAsIG1vZGVfcmF0ZTsKPiAgCWludCBsaW5rX2F2YWlsLCBsaW5rX2Nsb2NrOwo+IC0J aW50IGNvbW1vbl9yYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXSA9IHt9Owo+IC0JaW50IGNv bW1vbl9sZW47Cj4gIAl1aW50OF90IGxpbmtfYncsIHJhdGVfc2VsZWN0Owo+ICAKPiAtCWNvbW1v bl9sZW4gPSBpbnRlbF9kcF9jb21tb25fcmF0ZXMoaW50ZWxfZHAsIGNvbW1vbl9yYXRlcyk7Cj4g LQo+ICAJLyogTm8gY29tbW9uIGxpbmsgcmF0ZXMgYmV0d2VlbiBzb3VyY2UgYW5kIHNpbmsgKi8K PiAtCVdBUk5fT04oY29tbW9uX2xlbiA8PSAwKTsKPiArCVdBUk5fT04oaW50ZWxfZHAtPmNvbW1v bl9sZW4gPD0gMCk7Cj4gIAo+IC0JbWF4X2Nsb2NrID0gY29tbW9uX2xlbiAtIDE7Cj4gKwltYXhf Y2xvY2sgPSBpbnRlbF9kcC0+Y29tbW9uX2xlbiAtIDE7Cj4gIAo+ICAJaWYgKEhBU19QQ0hfU1BM SVQoZGV2X3ByaXYpICYmICFIQVNfRERJKGRldl9wcml2KSAmJiBwb3J0ICE9IFBPUlRfQSkKPiAg CQlwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyID0gdHJ1ZTsKPiBAQCAtMTU5Nyw3ICsxNTg5 LDcgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21wdXRlX2JwcChzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAo+ICAKPiAgCURSTV9ERUJVR19LTVMoIkRQIGxpbmsgY29tcHV0YXRpb24gd2l0aCBt YXggbGFuZSBjb3VudCAlaSAiCj4gIAkJICAgICAgIm1heCBidyAlZCBwaXhlbCBjbG9jayAlaUtI elxuIiwKPiAtCQkgICAgICBtYXhfbGFuZV9jb3VudCwgY29tbW9uX3JhdGVzW21heF9jbG9ja10s Cj4gKwkJICAgICAgbWF4X2xhbmVfY291bnQsIGludGVsX2RwLT5jb21tb25fcmF0ZXNbbWF4X2Ns b2NrXSwKPiAgCQkgICAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrKTsKPiAgCj4gIAkvKiBX YWxrIHRocm91Z2ggYWxsIGJwcCB2YWx1ZXMuIEx1Y2tpbHkgdGhleSdyZSBhbGwgbmljZWx5IHNw YWNlZCB3aXRoIDIKPiBAQCAtMTYzMyw3ICsxNjI1LDcgQEAgc3RhdGljIGludCBpbnRlbF9kcF9j b21wdXRlX2JwcChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQkJbGFuZV9jb3VudCA8 PSBtYXhfbGFuZV9jb3VudDsKPiAgCQkJCWxhbmVfY291bnQgPDw9IDEpIHsKPiAgCj4gLQkJCQls aW5rX2Nsb2NrID0gY29tbW9uX3JhdGVzW2Nsb2NrXTsKPiArCQkJCWxpbmtfY2xvY2sgPSBpbnRl bF9kcC0+Y29tbW9uX3JhdGVzW2Nsb2NrXTsKPiAgCQkJCWxpbmtfYXZhaWwgPSBpbnRlbF9kcF9t YXhfZGF0YV9yYXRlKGxpbmtfY2xvY2ssCj4gIAkJCQkJCQkJICAgIGxhbmVfY291bnQpOwo+ICAK PiBAQCAtMTY2Myw3ICsxNjU1LDcgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21wdXRlX2JwcChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJcGlwZV9jb25maWctPmxhbmVfY291bnQgPSBs YW5lX2NvdW50Owo+ICAKPiAgCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IGJwcDsKPiAtCXBpcGVf Y29uZmlnLT5wb3J0X2Nsb2NrID0gY29tbW9uX3JhdGVzW2Nsb2NrXTsKPiArCXBpcGVfY29uZmln LT5wb3J0X2Nsb2NrID0gaW50ZWxfZHAtPmNvbW1vbl9yYXRlc1tjbG9ja107Cj4gIAo+ICAJaW50 ZWxfZHBfY29tcHV0ZV9yYXRlKGludGVsX2RwLCBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiAg CQkJICAgICAgJmxpbmtfYncsICZyYXRlX3NlbGVjdCk7Cj4gQEAgLTQ0MDAsNyArNDM5Miw5IEBA IHN0YXRpYyBib29sIGludGVsX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCSAgICAgIHllc25vKGludGVsX2RwX3NvdXJjZV9zdXBw b3J0c19oYnIyKGludGVsX2RwKSksCj4gIAkJICAgICAgeWVzbm8oZHJtX2RwX3RwczNfc3VwcG9y dGVkKGludGVsX2RwLT5kcGNkKSkpOwo+ICAKPiArCWludGVsX2RwLT5jb21tb25fbGVuID0gaW50 ZWxfZHBfY29tbW9uX3JhdGVzKGludGVsX2RwKTsKPiAgCWludGVsX2RwX3ByaW50X3JhdGVzKGlu dGVsX2RwKTsKPiArCWludGVsX2RwLT5tYXhfbGFuZV9jb3VudCA9IGludGVsX2RwX21heF9sYW5l X2NvdW50KGludGVsX2RwKTsKPiAgCj4gIAlpbnRlbF9kcF9yZWFkX2Rlc2MoaW50ZWxfZHApOwo+ ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDFkMTI2YzIuLjdjODg4NWUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC05MDYsNiArOTA2LDExIEBAIHN0cnVj dCBpbnRlbF9kcCB7Cj4gIAkvKiBzaW5rIHJhdGVzIGFzIHJlcG9ydGVkIGJ5IERQX1NVUFBPUlRF RF9MSU5LX1JBVEVTICovCj4gIAl1aW50OF90IG51bV9zaW5rX3JhdGVzOwo+ICAJaW50IHNpbmtf cmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU107Cj4gKwkvKiBzdXBwb3J0ZWQgbGluayByYXRl cyBjb21tb24gYmV0d2VlbiBzb3VyY2UgYW5kIHNpbmsgKi8KPiArCWludCBjb21tb25fcmF0ZXNb RFBfTUFYX1NVUFBPUlRFRF9SQVRFU107Cj4gKwlpbnQgY29tbW9uX2xlbjsKPiArCS8qIE1heGlt dW0gc3VwcG9ydGVkIGxhbmUgY291bnQgY29tbW9uIGJldHdlZW4gc291cmNlIGFuZCBzaW5rICov Cj4gKwl1aW50OF90IG1heF9sYW5lX2NvdW50Owo+ICAJLyogc2luayBvciBicmFuY2ggZGVzY3Jp cHRvciAqLwo+ICAJc3RydWN0IGludGVsX2RwX2Rlc2MgZGVzYzsKPiAgCXN0cnVjdCBkcm1fZHBf YXV4IGF1eDsKPiAtLSAKPiAxLjkuMQo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK