From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v4 11/11] drm/i915: Implement Link Rate fallback on Link training failure Date: Thu, 13 Apr 2017 10:25:22 -0700 Message-ID: <20170413172522.GB9558@intel.com> References: <16ca48b1e74c618929245e9a085b9e3483c3a16d.1491485983.git.jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id EFBDF6E028 for ; Thu, 13 Apr 2017 17:21:22 +0000 (UTC) Content-Disposition: inline In-Reply-To: <16ca48b1e74c618929245e9a085b9e3483c3a16d.1491485983.git.jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, dhinakaran.pandiyan@intel.com List-Id: intel-gfx@lists.freedesktop.org SGkgSmFuaSwKClRoaXMgcGF0Y2ggaGFzIHRoZSBuZWNlc3NhcnkgQUNLcyBhbmQgUi1icywgYW55 dGhpbmcgZWxzZQpibG9ja2luZyB0aGlzIGZyb20gZ2V0dGluZyBtZXJnZWQ/CgpSZWdhcmRzCk1h bmFzaQoKT24gVGh1LCBBcHIgMDYsIDIwMTcgYXQgMDQ6NDQ6MTlQTSArMDMwMCwgSmFuaSBOaWt1 bGEgd3JvdGU6Cj4gRnJvbTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNv bT4KPiAKPiBJZiBsaW5rIHRyYWluaW5nIGF0IGEgbGluayByYXRlIG9wdGltYWwgZm9yIGEgcGFy dGljdWxhcgo+IG1vZGUgZmFpbHMgZHVyaW5nIG1vZGVzZXQncyBhdG9taWMgY29tbWl0IHBoYXNl LCB0aGVuIHdlCj4gbGV0IHRoZSBtb2Rlc2V0IGNvbXBsZXRlIGFuZCB0aGVuIHJldHJ5LiBXZSBz YXZlIHRoZSBsaW5rIHJhdGUKPiB2YWx1ZSBhdCB3aGljaCBsaW5rIHRyYWluaW5nIGZhaWxlZCwg dXBkYXRlIHRoZSBsaW5rIHN0YXR1cyBwcm9wZXJ0eQo+IHRvICJCQUQiIGFuZCB1c2UgYSBsb3dl ciBsaW5rIHJhdGUgdG8gcHJ1bmUgdGhlIG1vZGVzLiBJdCB3aWxsIHJlZG8KPiB0aGUgbW9kZXNl dCBvbiB0aGUgY3VycmVudCBtb2RlIGF0IGxvd2VyIGxpbmsgcmF0ZSBvciBpZiB0aGUgY3VycmVu dAo+IG1vZGUgZ2V0cyBwcnVuZWQgZHVlIHRvIGxvd2VyIGxpbmsgY29uc3RyYWludHMgdGhlbiwg aXQgd2lsbCBzZW5kIGEKPiBob3RwbHVnIHVldmVudCBmb3IgdXNlcnNwYWNlIHRvIGhhbmRsZSBp dC4KPiAKPiBUaGlzIGlzIGFsc28gcmVxdWlyZWQgdG8gcGFzcyBEUCBDVFMgdGVzdHMgNC4zLjEu MywgNC4zLjEuNCwKPiA0LjMuMS42Lgo+IAo+IFRoaXMgcGF0Y2ggaXMgYSByZXNlbmQgb2YgdGhl IG9yaWdpbmFsIGNvbW1pdCBpZCAoMjMzY2U4ODFkZDkxZmIKPiAiZHJtL2k5MTU6IEltcGxlbWVu dCBMaW5rIFJhdGUgZmFsbGJhY2sgb24gTGluayB0cmFpbmluZyBmYWlsdXJlIikKPiB3aGljaCBn b3QgcmV2ZXJ0ZWQgaW4gdGhpcyBjb21taXQgaWQgKGFmYzFlYmY0NTYyYTE0IFJldmVydAo+ICJk cm0vaTkxNTogSW1wbGVtZW50IExpbmsgUmF0ZSBmYWxsYmFjayBvbiBMaW5rIHRyYWluaW5nIGZh aWx1cmUiKQo+IGR1ZSB0byBDSSBmYWlsdXJlcy4KPiAKPiBBZnRlciBpbnZlc3RpZ2F0aW5nIHRo ZSBDSSBmYWlsdXJlcyBpdCB3YXMgZm91bmQgdGhhdCB0aGVzZQo+IHdlcmUgZXNzZW50aWFsbHkg dGhlIGZhaWx1cmVzIHdoaWNoIHdlcmUgYWx3YXlzIHRoZXJlIGJ1dCBoaWRkZW4gYmVjYXVzZQo+ IHRoZXkgdXNlZCB0byBiZSBEUk1fREVCVUdfS01TIG1lc3NhZ2VzIGZvciBsaW5rIGZhaWx1cmVz IHNvIG5ldmVyIGdvdAo+IGNhdWdodCBieSBDSS4gQnV0IG5vdyB0aGlzIHBhdGNoIGFjdHVhbGx5 IHRocm93cyBEUk1fRVJST1IgaWYgdGhlIGxpbmsKPiB0cmFpbmluZyBmYWlscyBhdCBSQlIgYW5k IDEgbGFuZS4gU28gaXQgY2F1Z2h0IHRoZXNlIGxpbmsgdHJhaW4gZmFpbHVyZXMuCj4gCj4gVGhl cmUgd2VyZSB0d28gZmFpbHVyZXM6Cj4gMS4gT24gU0tMIDY3MDBrIHRoaXMgd2FzIGJlY2F1c2Ug dGhlIG1hY2hpbmUgaW4gQ0kgbGFiIGlzIGEgU0tMIGRlc2t0b3AKPiB3aXRob3V0IGVEUCBvbiBQ b3J0IEEuIEJ1dCBvdXIgVkJUIGluaXRpYWxpemF0aW9uIGNvZGUgaW4gdGhlIGRyaXZlciB3cml0 ZXMKPiBWQlQgZGVmYXVsdHMgaW4gYSB3YXkgdGhhdCBpdCBhbHdheXMgc2V0cyBEUCBmbGFnIG9u IFBvcnQgQSBhbmQgdGhpcyBkb2VzCj4gbm90IGdldCBjbGVhcmVkIGFmdGVyIHBhcnNpbmcgdGhl IFZCVCBvdXRwdXRzLiBUaGlzIGhhcyBiZWVuIGZpeGVkIGluCj4gY29tbWl0IGlkIChiYjFkMTMy OTM1YzJmOCAiZHJtL2k5MTUvdmJ0OiBzcGxpdCBvdXQgZGVmYXVsdHMgdGhhdCBhcmUgc2V0Cj4g d2hlbiB0aGVyZSBpcyBubyBWQlQpIGFuZCAoNjY1Nzg4NTcyYzY0MTBiICJkcm0vaTkxNS92YnQ6 IGRvbid0IHByb3BhZ2F0ZQo+IGVycm9ycyBmcm9tIGludGVsX2Jpb3NfaW5pdCgpKQo+IAo+IDIu IE9uIElMSy02NTAgZGVza3RvcCAtIFRoaXMgd2FzIGhhcHBlbmluZyBiZWNhdXNlIG9mIGEgYmFk IG1vbml0b3IgZGVza3RvcAo+IGNvbWJpbmF0aW9uLiBJIHN3aXRjaGVkIHRoZSBtb25pdG9yIGlu IHRoZSBDSSBsYWIgYW5kIHRoYXQgaGVscGVkIGdldCByaWQKPiBvZiB0aGUgbGluayBmYWlsdXJl cyBvbiBJTEsgc3lzdGVtLgo+IAo+IHYxMDoKPiAqIFJlYmFzZSBvbiBkcm0tdGlwIGFuZCByZXNl bmQgYWZ0ZXIgcmV2ZXJ0Cj4gdjk6Cj4gKiBVc2UgdGhlIHRyaW1tZWQgbWF4IHZhbHVlcyBvZiBs aW5rIHJhdGUvbGFuZSBjb3VudCBiYXNlZCBvbgo+IGxpbmsgdHJhaW4gZmFsbGJhY2sgKERhbmll bCBWZXR0ZXIpCj4gdjg6Cj4gKiBTZXQgbGlua19zdGF0dXMgdG8gQkFEIGZpcnN0IGFuZCB0aGVu IGNhbGwgbW9kZV92YWxpZCAoSmFuaSBOaWt1bGEpCj4gdjc6Cj4gUmVtb3ZlIHRoZSByZWR1bmRh bnQgdmFyaWFibGUgaW4gcHJldmlvdXMgcGF0Y2ggaXRzZWxmCj4gdjY6Cj4gKiBPYnRhaW4gbGlu ayByYXRlIGluZGV4IGZyb20gZmFsbGJhY2tfbGlua19yYXRlIHVzaW5nCj4gdGhlIGhlbHBlciBp bnRlbF9kcF9saW5rX3JhdGVfaW5kZXggKEphbmkgTmlrdWxhKQo+ICogSW5jbHVkZSBmYWxsYmFj ayB3aXRoaW4gaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbiAoSmFuaSBOaWt1bGEpCj4gdjU6Cj4g KiBNb3ZlIHNldCBsaW5rIHN0YXR1cyB0byBkcm0gY29yZSAoRGFuaWVsIFZldHRlciwgSmFuaSBO aWt1bGEpCj4gdjQ6Cj4gKiBBZGQgZmFsbGJhY2sgc3VwcG9ydCBmb3Igbm9uIERESSBwbGF0Zm9y bXMgdG9vCj4gKiBTZXQgY29ubmVjdG9yLT5saW5rIHN0YXR1cyBpbnNpZGUgc2V0X2xpbmtfc3Rh dHVzIGZ1bmN0aW9uCj4gKEphbmkgTmlrdWxhKQo+IHYzOgo+ICogU2V0IGxpbmsgc3RhdHVzIHBy b3BlcnR5IHRvIEJBZCB1bmNvbmRpdGlvbmFsbHkgKEphbmkgTmlrdWxhKQo+ICogRG9udCB1c2Ug dHdvIHNlcGFyYXRlIHZhcmlhYmxlcyBsaW5rX3RyYWluX2ZhaWxlZCBhbmQgbGlua19zdGF0dXMK PiB0byBpbmRpY2F0ZSBzYW1lIHRoaW5nIChKYW5pIE5pa3VsYSkKPiB2MjoKPiAqIFNxdWFzaGVk IGEgZmV3IHBhdGNoZXMgKEphbmkgTmlrdWxhKQo+IAo+IEFja2VkLWJ5OiBUb255IENoZW5nIDx0 b255LmNoZW5nQGFtZC5jb20+Cj4gQWNrZWQtYnk6IEhhcnJ5IFdlbnRsYW5kIDxIYXJyeS53ZW50 bGFuZEBhbWQuY29tPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwu Y29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPiBDYzog VmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9m Zi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiBSZXZpZXdl ZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5 OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmlu Zy5jIHwgMjIgKysrKysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCAgICAgICAgICAgICAgfCAgMyArKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCA1MCBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ IGluZGV4IDY5MTVkODlhMjM4Yy4uZjJkNzkyYTFiMThlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCj4gQEAgLTU5NzcsNiArNTk3NywyOSBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3Rvcl9w b3J0X2luZm8oc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4gIAl9 Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGludGVsX2RwX21vZGVzZXRfcmV0cnlfd29ya19mbihz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmludGVsX2Nvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4g Kwo+ICsJaW50ZWxfY29ubmVjdG9yID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaW50ZWxf Y29ubmVjdG9yKSwKPiArCQkJCSAgICAgICBtb2Rlc2V0X3JldHJ5X3dvcmspOwo+ICsJY29ubmVj dG9yID0gJmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKPiArCURSTV9ERUJVR19LTVMoIltDT05ORUNU T1I6JWQ6JXNdXG4iLCBjb25uZWN0b3ItPmJhc2UuaWQsCj4gKwkJICAgICAgY29ubmVjdG9yLT5u YW1lKTsKPiArCj4gKwkvKiBHcmFiIHRoZSBsb2NrcyBiZWZvcmUgY2hhbmdpbmcgY29ubmVjdG9y IHByb3BlcnR5Ki8KPiArCW11dGV4X2xvY2soJmNvbm5lY3Rvci0+ZGV2LT5tb2RlX2NvbmZpZy5t dXRleCk7Cj4gKwkvKiBTZXQgY29ubmVjdG9yIGxpbmsgc3RhdHVzIHRvIEJBRCBhbmQgc2VuZCBh IFVldmVudCB0byBub3RpZnkKPiArCSAqIHVzZXJzcGFjZSB0byBkbyBhIG1vZGVzZXQuCj4gKwkg Ki8KPiArCWRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfbGlua19zdGF0dXNfcHJvcGVydHkoY29ubmVj dG9yLAo+ICsJCQkJCQkgICAgRFJNX01PREVfTElOS19TVEFUVVNfQkFEKTsKPiArCW11dGV4X3Vu bG9jaygmY29ubmVjdG9yLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiArCS8qIFNlbmQgSG90 cGx1ZyB1ZXZlbnQgc28gdXNlcnNwYWNlIGNhbiByZXByb2JlICovCj4gKwlkcm1fa21zX2hlbHBl cl9ob3RwbHVnX2V2ZW50KGNvbm5lY3Rvci0+ZGV2KTsKPiArfQo+ICsKPiAgYm9vbAo+ICBpbnRl bF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCwKPiAgCQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+IEBA IC01OTg5LDYgKzYwMTIsMTAgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVs X2RpZ19wb3J0LT5wb3J0Owo+ICAJaW50IHR5cGU7Cj4gIAo+ICsJLyogSW5pdGlhbGl6ZSB0aGUg d29yayBmb3IgbW9kZXNldCBpbiBjYXNlIG9mIGxpbmsgdHJhaW4gZmFpbHVyZSAqLwo+ICsJSU5J VF9XT1JLKCZpbnRlbF9jb25uZWN0b3ItPm1vZGVzZXRfcmV0cnlfd29yaywKPiArCQkgIGludGVs X2RwX21vZGVzZXRfcmV0cnlfd29ya19mbik7Cj4gKwo+ICAJaWYgKFdBUk4oaW50ZWxfZGlnX3Bv cnQtPm1heF9sYW5lcyA8IDEsCj4gIAkJICJOb3QgZW5vdWdoIGxhbmVzICglZCkgZm9yIERQIG9u IHBvcnQgJWNcbiIsCj4gIAkJIGludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMsIHBvcnRfbmFtZShw b3J0KSkpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtf dHJhaW5pbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcu Ywo+IGluZGV4IDY5NGFkMGZmYjUyMy4uYjc5YzFjMGU0MDRjIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+IEBAIC0zMTQsNiArMzE0LDI0 IEBAIHZvaWQgaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gIHZvaWQKPiAgaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQo+ICB7Cj4gLQlpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5 KGludGVsX2RwKTsKPiAtCWludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRp b24oaW50ZWxfZHApOwo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9y ID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiArCj4gKwlpZiAoIWludGVsX2RwX2xp bmtfdHJhaW5pbmdfY2xvY2tfcmVjb3ZlcnkoaW50ZWxfZHApKQo+ICsJCWdvdG8gZmFpbHVyZV9o YW5kbGluZzsKPiArCWlmICghaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXph dGlvbihpbnRlbF9kcCkpCj4gKwkJZ290byBmYWlsdXJlX2hhbmRsaW5nOwo+ICsKPiArCURSTV9E RUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgUGFzc2VkIGF0IExpbmsgUmF0ZSA9ICVkLCBMYW5lIGNv dW50ID0gJWQiLAo+ICsJCSAgICAgIGludGVsX2RwLT5saW5rX3JhdGUsIGludGVsX2RwLT5sYW5l X2NvdW50KTsKPiArCXJldHVybjsKPiArCj4gKyBmYWlsdXJlX2hhbmRsaW5nOgo+ICsJRFJNX0RF QlVHX0tNUygiTGluayBUcmFpbmluZyBmYWlsZWQgYXQgbGluayByYXRlID0gJWQsIGxhbmUgY291 bnQgPSAlZCIsCj4gKwkJICAgICAgaW50ZWxfZHAtPmxpbmtfcmF0ZSwgaW50ZWxfZHAtPmxhbmVf Y291bnQpOwo+ICsJaWYgKCFpbnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMo aW50ZWxfZHAsCj4gKwkJCQkJCSAgICAgaW50ZWxfZHAtPmxpbmtfcmF0ZSwKPiArCQkJCQkJICAg ICBpbnRlbF9kcC0+bGFuZV9jb3VudCkpCj4gKwkJLyogU2NoZWR1bGUgYSBIb3RwbHVnIFVldmVu dCB0byB1c2Vyc3BhY2UgdG8gc3RhcnQgbW9kZXNldCAqLwo+ICsJCXNjaGVkdWxlX3dvcmsoJmlu dGVsX2Nvbm5lY3Rvci0+bW9kZXNldF9yZXRyeV93b3JrKTsKPiArCXJldHVybjsKPiAgfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNWY2ZTFhYWQ5MDlkLi5kMzYwMjZlZmY3Y2Qg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0zMjEsNiArMzIxLDkgQEAgc3Ry dWN0IGludGVsX2Nvbm5lY3RvciB7Cj4gIAl2b2lkICpwb3J0OyAvKiBzdG9yZSB0aGlzIG9wYXF1 ZSBhcyBpdHMgaWxsZWdhbCB0byBkZXJlZmVyZW5jZSBpdCAqLwo+ICAKPiAgCXN0cnVjdCBpbnRl bF9kcCAqbXN0X3BvcnQ7Cj4gKwo+ICsJLyogV29yayBzdHJ1Y3QgdG8gc2NoZWR1bGUgYSB1ZXZl bnQgb24gbGluayB0cmFpbiBmYWlsdXJlICovCj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgbW9kZXNl dF9yZXRyeV93b3JrOwo+ICB9Owo+ICAKPiAgc3RydWN0IGRwbGwgewo+IC0tIAo+IDIuMS40Cj4g Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=