From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v2 4/4] drm/i915/dp: Enable master-slaves in trans port sync mode in correct order Date: Wed, 12 Jun 2019 10:41:13 +0200 Message-ID: References: <20190423154901.15222-1-manasi.d.navare@intel.com> <20190423154901.15222-5-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2458B893EB for ; Wed, 12 Jun 2019 08:41:16 +0000 (UTC) In-Reply-To: <20190423154901.15222-5-manasi.d.navare@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare , intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org T3AgMjMtMDQtMjAxOSBvbSAxNzo0OSBzY2hyZWVmIE1hbmFzaSBOYXZhcmU6Cj4gQXMgcGVyIHRo ZSBkaXNwbGF5IGVuYWJsZSBzZXF1ZW5jZSwgd2UgbmVlZCB0byBmb2xsb3cgdGhlIGVuYWJsZSBz ZXF1ZW5jZQo+IGZvciBzbGF2ZXMgZmlyc3Qgd2l0aCBEUF9UUF9DVEwgc2V0IHRvIElkbGUgYW5k IGNvbmZpZ3VyZSB0aGUgdHJhbnNjb2Rlcgo+IHBvcnQgc3luYyByZWdpc3RlciB0byBzZWxlY3Qg dGhlIGNvcmVyc3BvbmRpbmcgbWFzdGVyLCB0aGVuIGZvbGxvdyB0aGUKPiBlbmFibGUgc2VxdWVu Y2UgZm9yIG1hc3RlciBsZWF2aW5nIERQX1RQX0NUTCB0byBpZGxlLgo+IEF0IHRoaXMgcG9pbnQg dGhlIHRyYW5zY29kZXIgcG9ydCBzeW5jIG1vZGUgaXMgY29uZmlndXJlZCBhbmQgZW5hYmxlZAo+ IGFuZCB0aGUgVmJsYW5rcyBvZiBib3RoIHBvcnRzIGFyZSBzeW5jaHJvbml6ZWQgc28gdGhlbiBz ZXQgRFBfVFBfQ1RMCj4gZm9yIHRoZSBzbGF2ZSBhbmQgbWFzdGVyIHRvIE5vcm1hbCBhbmQgZG8g cG9zdCBjcnRjIGVuYWJsZSB1cGRhdGVzLgo+Cj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52 ZXR0ZXJAZmZ3bGwuY2g+Cj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+Cj4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+Cj4gQ2M6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5j b20+Cj4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgIHwgICAz ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDEyMiArKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBpbmRleCAyNGY5 MTA2ZWZjYzYuLjBiMzI2YjJjMjc0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4g QEAgLTMxMjAsNyArMzEyMCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2Rw KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJCSAgICAgIHRydWUpOwo+ICAJ aW50ZWxfZHBfc2lua19zZXRfZmVjX3JlYWR5KGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPiAgCWlu dGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+IC0JaWYgKHBvcnQgIT0gUE9SVF9B IHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmICgocG9ydCAhPSBQT1JUX0EgfHwg SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSAmJgo+ICsJICAgIElOVEVMX0dFTihkZXZfcHJpdikg PCAxMSkKJiYgIW1hc3Rlcl9jcnRjIGluc3RlYWQgb2YgZ2VuIGNoZWNrPyBXb3VsZCBiZSBtb3Jl IGNsZWFyIHdoYXQgaXQgJ3MgZm9yLCBhbmQgb25seSBjaGFuZ2VzIGxpbmsgdHJhaW5pbmcgaW4g c3luYyBtb2RlLgo+ICAJCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gIAo+ ICAJaW50ZWxfZGRpX2VuYWJsZV9mZWMoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDRiZDIzZTYxYzZmZC4uYmQwMDU0OWE5ZTAw IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMzQ4OCw2ICsx MzQ4OCw3IEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfY3J0Y3Moc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICAJCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBj cnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAgCQkJYm9vbCB2Ymxf d2FpdCA9IGZhbHNlOwo+ICAJCQl1bnNpZ25lZCBpbnQgY21hc2sgPSBkcm1fY3J0Y19tYXNrKGNy dGMpOwo+ICsJCQlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKTsK PiAgCj4gIAkJCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJCQljc3RhdGUg PSB0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKTsKPiBAQCAtMTM0OTYsNiArMTM0 OTcsMTIgQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV9jcnRjcyhzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCj4gIAkJCWlmICh1cGRhdGVkICYgY21hc2sgfHwgIWNzdGF0ZS0+YmFzZS5h Y3RpdmUpCj4gIAkJCQljb250aW51ZTsKPiAgCj4gKwkJCWlmIChtb2Rlc2V0ICYmIElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTEpIHsKPiArCQkJCURSTV9ERUJVR19LTVMoIlB1c2hpbmcgdGhlIFRp bGVkIENSVEMgJWQgJXMgdGhhdCBuZWVkcyB1cGRhdGUgdG8gc2VwYXJhdGUgbG9vcFxuIiwKPiAr CQkJCQkgICAgICBpbnRlbF9jcnRjLT5iYXNlLmJhc2UuaWQsIGludGVsX2NydGMtPmJhc2UubmFt ZSk7Cj4gKwkJCQljb250aW51ZTsKPiArCQkJfQpPbmx5IGRvIHRoaXMgZm9yIHN5bmNlZCBjcnRj J3M/Cj4gKwo+ICAJCQlpZiAoc2tsX2RkYl9hbGxvY2F0aW9uX292ZXJsYXBzKCZjc3RhdGUtPndt LnNrbC5kZGIsCj4gIAkJCQkJCQllbnRyaWVzLAo+ICAJCQkJCQkJSU5URUxfSU5GTyhkZXZfcHJp diktPm51bV9waXBlcywgaSkpCj4gQEAgLTEzNTI2LDYgKzEzNTMzLDEyMSBAQCBzdGF0aWMgdm9p ZCBza2xfdXBkYXRlX2NydGNzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQl9 Cj4gIAl9IHdoaWxlIChwcm9ncmVzcyk7Cj4gIAo+ICsJLyogU2VwYXJhdGUgbG9vcCBmb3IgdXBk YXRpbmcgU2xhdmUgQ1JUQ3MgdGhhdCBuZWVkIG1vZGVzZXQuCj4gKwkgKiBXZSBuZWVkIHRvIGxv b3AgdGhyb3VnaCBhbGwgc2xhdmVzIG9mIHRpbGVkIGRpc3BsYXkgZmlyc3QgYW5kCj4gKwkgKiBm b2xsb3cgZW5hYmxlIHNlcXVlbmNlIHdpdGggRFBfVFBfQ1RMIGxlZnQgSWRsZSB1bnRpbCB0aGUg bWFzdGVyCj4gKwkgKiBpcyByZWFkeS4KPiArCSAqLwo+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNf aW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkg ewo+ICsJCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwo+ICsJ CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3Rh dGUobmV3X2NydGNfc3RhdGUpOwo+ICsKPiArCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKPiArCj4gKwkJaWYgKCFwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpCj4gKwkJCWNvbnRp bnVlOwo+ICsJCWlmICghbW9kZXNldCkKPiArCQkJY29udGludWU7Cj4gKwkJaWYgKCFwaXBlX2Nv bmZpZy0+bWFzdGVyX2NydGMpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQl1cGRhdGVfc2Nhbmxp bmVfb2Zmc2V0KHBpcGVfY29uZmlnKTsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2VuYWJs ZShwaXBlX2NvbmZpZywgc3RhdGUpOwo+ICsJfQo+ICsJLyogTm93IGRvIHRoZSBkaXNwbGF5IGVu YWJsZSBzZXF1ZW5jZSBmb3IgbWFzdGVyIENSVEMgKi8KPiArCWZvcl9lYWNoX29sZG5ld19jcnRj X2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkp IHsKPiArCQlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKTsKPiAr CQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0 YXRlKG5ld19jcnRjX3N0YXRlKTsKPiArCj4gKwkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Yyk7Cj4gKwo+ICsJCWlmICghcGlwZV9jb25maWctPmJhc2UuYWN0aXZlKQo+ICsJCQljb250 aW51ZTsKPiArCQlpZiAoIW1vZGVzZXQpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWlmIChwaXBlX2Nv bmZpZy0+bWFzdGVyX2NydGMpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQl1cGRhdGVfc2Nhbmxp bmVfb2Zmc2V0KHBpcGVfY29uZmlnKTsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2VuYWJs ZShwaXBlX2NvbmZpZywgc3RhdGUpOwo+ICsJfQo+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ICsJCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uOwo+ICsJCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQobmV3 X2NydGNfc3RhdGUpOwo+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHA7Cj4gKwo+ICsJCWlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJCWNzdGF0ZSA9IHRvX2ludGVsX2Ny dGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+ICsKPiArCQlpZiAoIWNzdGF0ZS0+YmFzZS5hY3Rp dmUpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWlmICghbW9kZXNldCkKPiArCQkJY29udGludWU7Cj4g KwkJaWYgKCFjc3RhdGUtPm1hc3Rlcl9jcnRjKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJZm9y X2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkg ewo+ICsJCQlpZiAoY29ubl9zdGF0ZS0+Y3J0YyA9PSBjcnRjKQo+ICsJCQkJYnJlYWs7Cj4gKwkJ fQo+ICsJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZpbnRlbF9hdHRhY2hlZF9lbmNvZGVy KGNvbm4pLT5iYXNlKTsKPiArCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ ICsJfQpXaHkgaXMgdGhpcyBhIHNlcGFyYXRlIHBhc3M/Cj4gKwlmb3JfZWFjaF9vbGRuZXdfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBp KSB7Cj4gKwkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4gKwkJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm47Cj4gKwkJYm9vbCBtb2Rlc2V0ID0gbmVlZHNfbW9kZXNl dChuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcDsKPiArCj4g KwkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwkJY3N0YXRlID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJCWlmICghY3N0YXRlLT5iYXNl LmFjdGl2ZSkKPiArCQkJY29udGludWU7Cj4gKwkJaWYgKCFtb2Rlc2V0KQo+ICsJCQljb250aW51 ZTsKPiArCQlpZiAoY3N0YXRlLT5tYXN0ZXJfY3J0YykKPiArCQkJY29udGludWU7Cj4gKwo+ICsJ CS8qIFdhaXQgZm9yIDIwMHVzIGJlZm9yZSBzZXR0aW5nIHRoZSBtYXN0ZXIgRFBfVFBfVENMIHRv IE5vcm1hbCAqLwo+ICsJCXVzbGVlcF9yYW5nZSgyMDAsIDQwMCk7Cj4gKwkJZm9yX2VhY2hfbmV3 X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkgewo+ICsJCQlp ZiAoY29ubl9zdGF0ZS0+Y3J0YyA9PSBjcnRjKQo+ICsJCQkJYnJlYWs7Cj4gKwkJfQo+ICsJCWlu dGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZpbnRlbF9hdHRhY2hlZF9lbmNvZGVyKGNvbm4pLT5i YXNlKTsKPiArCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICsJfQo+ICsJ LyogTm93IGRvIHRoZSBwb3N0IGNydGMgZW5hYmxlIGZvciBhbGwgbWFzdGVyIGFuZCBzbGF2ZXMg Ki8KPiArCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0 Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiArCQlib29sIG1vZGVzZXQgPSBuZWVkc19t b2Rlc2V0KG5ld19jcnRjX3N0YXRlKTsKPiArCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5l d19wbGFuZV9zdGF0ZTsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcg PSB0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKTsKPiArCj4gKwkJaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwo+ICsJCWlmICghcGlwZV9jb25maWctPmJhc2Uu YWN0aXZlKQo+ICsJCQljb250aW51ZTsKPiArCQlpZiAoIW1vZGVzZXQpCj4gKwkJCWNvbnRpbnVl Owo+ICsKPiArCQluZXdfcGxhbmVfc3RhdGUgPQo+ICsJCQlpbnRlbF9hdG9taWNfZ2V0X25ld19w bGFuZV9zdGF0ZSh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLAo+ICsJCQkJCQkJIHRvX2lu dGVsX3BsYW5lKGNydGMtPnByaW1hcnkpKTsKPiArCQlpZiAocGlwZV9jb25maWctPnVwZGF0ZV9w aXBlICYmICFwaXBlX2NvbmZpZy0+ZW5hYmxlX2ZiYykKPiArCQkJaW50ZWxfZmJjX2Rpc2FibGUo aW50ZWxfY3J0Yyk7Cj4gKwkJZWxzZSBpZiAobmV3X3BsYW5lX3N0YXRlKQo+ICsJCQlpbnRlbF9m YmNfZW5hYmxlKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBuZXdfcGxhbmVfc3RhdGUpOwo+ICsK PiArCQlpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdCh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUp LCBpbnRlbF9jcnRjKTsKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJCQlz a2xfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSksIGlu dGVsX2NydGMpOwo+ICsJCWVsc2UKPiArCQkJaTl4eF91cGRhdGVfcGxhbmVzX29uX2NydGModG9f aW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKSwgaW50ZWxfY3J0Yyk7ClRoaXMgaXMgY2FsbGVkIGZy b20gc2tsX3VwZGF0ZV9jcnRjcywgZG9uJ3QgbmVlZCB0aGUgPGdlbjkgZmFsbGJhY2sgY29kZS4K PiArCQlpbnRlbF9maW5pc2hfY3J0Y19jb21taXQodG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRl KSwgaW50ZWxfY3J0Yyk7Cj4gKwl9Cj4gIAkvKiBJZiAybmQgREJ1ZiBzbGljZSBpcyBubyBtb3Jl IHJlcXVpcmVkIGRpc2FibGUgaXQgKi8KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEx ICYmIHJlcXVpcmVkX3NsaWNlcyA8IGh3X2VuYWJsZWRfc2xpY2VzKQo+ICAJCWljbF9kYnVmX3Ns aWNlc191cGRhdGUoZGV2X3ByaXYsIHJlcXVpcmVkX3NsaWNlcyk7CgpCZXR0ZXIgeWV0LCBtYWtl IGFuIGljbF91cGRhdGVfY3J0Y3MgdGhhdCBoYW5kbGVzIHRoZSBzeW5jIG1vZGUsIGFuZCByZW1v dmUgYWxsIHRoZSBnZW4xMSBzdHVmZiBmcm9tIHNrbF91cGRhdGVfY3J0Y3MuCgp+TWFhcnRlbgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4