From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oscar Mateo Subject: Re: [RFC PATCH 04/20] drm/i915: Transform context WAs into static tables Date: Mon, 6 Nov 2017 10:54:04 -0800 Message-ID: <1c747605-0e79-7391-441f-911745f9bf29@intel.com> References: <1509732588-10599-1-git-send-email-oscar.mateo@intel.com> <1509732588-10599-5-git-send-email-oscar.mateo@intel.com> <1509969578.5418.53.camel@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 812436E3C3 for ; Mon, 6 Nov 2017 18:53:46 +0000 (UTC) In-Reply-To: <1509969578.5418.53.camel@linux.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: Joonas Lahtinen , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxMS8wNi8yMDE3IDAzOjU5IEFNLCBKb29uYXMgTGFodGluZW4gd3JvdGU6Cj4gT24gRnJp LCAyMDE3LTExLTAzIGF0IDExOjA5IC0wNzAwLCBPc2NhciBNYXRlbyB3cm90ZToKPj4gVGhpcyBp cyBmb3IgV0FzIHRoYXQgbmVlZCB0byB0b3VjaCByZWdpc3RlcnMgdGhhdCBnZXQgc2F2ZWQvcmVz dG9yZWQKPj4gdG9nZXRoZXIgd2l0aCB0aGUgbG9naWNhbCBjb250ZXh0LiBUaGUgaWRlYSBpcyB0 aGF0IFdBcyBhcmUgInByZXR0eSIKPj4gc3RhdGljLCBzbyBhIHRhYmxlIGlzIG1vcmUgZGVjbGFy YXRpdmUgdGhhbiBhIHByb2dyYW1tYXRpYyBhcHByb2FoLgo+PiBOb3RlIGhvd2V2ZXIgdGhhdCBz b21lIGFtb3VudCBpcyBjYWNoaW5nIGlzIG5lZWRlZCBmb3IgdGhvc2UgdGhpbmdzCj4+IHRoYXQg YXJlIGR5bmFtaWMgKGUuZy4gdGhpbmdzIHRoYXQgbmVlZCBzb21lIGNhbGN1bGF0aW9uLCBvciBo YXZlCj4+IGEgY3JpdGVyaWEgZGlmZmVyZW50IHRoYW4gdGhlIG1vcmUgb2J2aW91cyBHRU4gKyBz dGVwcGluZykuCj4+Cj4+IEFsc28sIHRoaXMgbWFrZXMgdmVyeSBleHBsaWNpdCB3aGljaCBXQXMg bGl2ZSBpbiB0aGUgY29udGV4dC4KPj4KPj4gU3VnZ2VzdGVkLWJ5OiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IE9zY2Fy IE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5jb20+Cj4+IENjOiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFA bGludXguaW50ZWwuY29tPgo+IDxTTklQPgo+Cj4+ICtzdHJ1Y3QgaTkxNV93YV9yZWc7Cj4+ICsK Pj4gK3R5cGVkZWYgYm9vbCAoKiB3YV9wcmVfaG9va19mdW5jKShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4+ICsJCQkJICBzdHJ1Y3QgaTkxNV93YV9yZWcgKndhKTsKPj4gK3R5 cGVkZWYgdm9pZCAoKiB3YV9wb3N0X2hvb2tfZnVuYykoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+PiArCQkJCSAgIHN0cnVjdCBpOTE1X3dhX3JlZyAqd2EpOwo+IFRvIGF2b2lk IGNhcnJ5aW5nIGFueSB2YXJpYWJsZXMgb3ZlciwgaG93IGFib3V0IGp1c3QgYXBwbHkoKSBob29r Pwo+IEFsc28sIHlvdSBkb24ndCBoYXZlIHRvIGhhdmUgIl9ob29rIiBnb2luZyB0aGVyZSwgaXQn cyB0YWsKPgoKTm90IGFsbCBXQXMgYXJlIGFwcGxpZWQgaW4gdGhlIHNhbWUgd2F5OiBjdHgtc3R5 bGUgd29ya2Fyb3VuZHMgYXJlIAplbWl0dGVkIGFzIExSSSBjb21tYW5kcyB0byB0aGUgcmluZy4g RG8geW91IHRyZWF0IHRob3NlIGRpZmZlcmVudGx5PwoKPj4gICBzdHJ1Y3QgaTkxNV93YV9yZWcg ewo+PiArCWNvbnN0IGNoYXIgKm5hbWU7Cj4gV2UgbWF5IHdhbnQgc29tZSBLY29uZmlnIG9wdGlv biBmb3Igc2tpcHBpbmcgdGhlc2UuCgpTdXJlLiBCdXQgd2Ugc2hvdWxkIHRyeSB0byBkZWNpZGUg Zmlyc3QgaWYgd2Ugd2FudCB0byBzdG9yZSB0aGlzIGF0IGFsbCwgCmxpa2U6IHdoYXQgZG8gd2Ug ZXhwZWN0IHRvIHVzZSB0aGlzIGZvcj8gaXMgaXQgd29ydGggaXQ/Cgo+PiArCWVudW0gd2FfdHlw ZSB7Cj4+ICsJCUk5MTVfV0FfVFlQRV9DT05URVhUID0gMCwKPj4gKwkJSTkxNV9XQV9UWVBFX0dU LAo+PiArCQlJOTE1X1dBX1RZUEVfRElTUExBWSwKPj4gKwkJSTkxNV9XQV9UWVBFX1dISVRFTElT VAo+PiArCX0gdHlwZTsKPj4gKwo+IEFueSBzcGVjaWZpYyByZWFzb24gbm90IHRvIGhhdmUgdGhl IGdlbiBoZXJlIHRvbz8gVGhlbiB5b3UgY2FuIGhhdmUgb25lCj4gYmlnIHRhYmxlLCBpbnN0ZWFk IG9mIHRhYmxlcyBvZiB0YWJsZXMuIFRoZW4gdGhlIG51bWVyaWMgY29kZSBvZiBhIFdBCj4gKHBv c2l0aW9uIGluIHRoYXQgdGFibGUpIHdvdWxkIGJlIGVxdWFsbHkgaWRlbnRpZnlpbmcgaXQgY29t cGFyZWQgdG8KPiB0aGUgV0EgbmFtZSAod2hpY2ggaXMgbmljZSB0byBoYXZlIGluZm9ybWF0aW9u LCBzbyBjb25maWcgdGltZSBvcHQtaW4pLgoKU3VjaCBhICJiaWcgdGFibGUiIHdvdWxkIGJlIHF1 aXRlIGJpZywgaW5kZWVkLiBBbmQgd2Uga25vdyB3ZSB3YW50IHRvIAphcHBseSB0aGUgd29ya2Fy b3VuZHMgZnJvbSBhdCBsZWFzdCBmb3VyIGRpZmZlcmVudCBwbGFjZXMsIHNvIGxvb3BpbmcgCnRo cm91Z2ggdGhlIHRhYmxlIGVhY2ggYW5kIGV2ZXJ5IHRpbWUgdG8gZmluZCB0aGUgcmVsZXZhbnQg V0FzIHNlZW1zIApsaWtlIGEgd2FzdGUuIEFsc28sIGluIHNvbWUgcGxhY2VzIHdlIHdvdWxkIGhh dmUgdG8gbG9vcCBtb3JlIHRoYW4gb25jZSAKKCB0byBrbm93IHRoZSBudW1iZXIgb2YgV0FzIHRv IGFwcGx5IGJlZm9yZSB3ZSBjYW4gcmVzZXJ2ZSBzcGFjZSBpbiB0aGUgCnJpbmcgZm9yIGN0eC1z dHlsZSBXQXMsIGZvciBleGFtcGxlKS4KCkkgY291bGQgYWxzbyBnbyBmb3IgNCBzbGlnaHRseSBz bWFsbGVyIHRhYmxlcyAob25lIHBlciB0eXBlIG9mIFdBKSBidXQgCnRoZW4gdGhlcmUgaXMgYW5v dGhlciBwcm9ibGVtIHRvIHNvbHZlOiBob3cgZG8geW91IHJlY29yZCBXQXMgdGhhdCBhcHBseSAK Zm9yIGFsbCByZXZpc2lvbnMgb2Ygb25lIEdFTiwgYnV0IGEgc21hbGxlciBudW1iZXIgb2YgcmV2 aXNpb25zIG9mIAphbm90aGVyPyAoZS5nLiBXYURpc2FibGVGZW5jZURlc3RpbmF0aW9uVG9TTE0g YXBwbGllcyB0byBhbGwgQkRXIApzdGVwcGluZ3MgYnV0IG9ubHkgS0JMIEEwKS4KCj4+ICsJdTgg c2luY2U7Cj4+ICsJdTggdW50aWw7Cj4gTW9zdCBzZWVtIHRvIGhhdmUgQUxMX1JFVlMsIHNvIHRo aXMgY291bGQgYmUgYWZ0ZXIgdGhlIGNvYXJzZS1ncmFpbmVkCj4gZ2VuLWNoZWNrIGluIHRoZSBh cHBseSBmdW5jdGlvbi4KClNvIGV2ZXJ5IHNpbmdsZSBXQSB0aGF0IGFwcGxpZXMgdG8gc3BlY2lm aWMgUkVWUyBnZXRzIGFuICJhcHBseSIgCmZ1bmN0aW9uPyBUaGF0IGxvb2tzIGxpa2UgYSBsb3Qg b2YgZnVuY3Rpb25zIChJIGNvdW50IDI1IFdBcyB0aGF0IG9ubHkgCmFwcGx5IHRvIHNvbWUgc3Rl cHBpbmdzIGFscmVhZHkpLiBPciBhcmUgeW91IHNpbXBseSBzYXlpbmcgaGVyZSB0aGF0IEkgCmNo ZWNrIHRoZSBHRU4gYmVmb3JlIGNoZWNraW5nIHRoZSBzdGVwcGluZyAod2hpY2ggaXMgdGhlIG9u bHkgb3JkZXIgdGhhdCAKbWFrZXMgc2Vuc2UgYW55d2F5KT8KCj4+ICsKPj4gICAJaTkxNV9yZWdf dCBhZGRyOwo+PiAtCXUzMiB2YWx1ZTsKPj4gLQkvKiBiaXRtYXNrIHJlcHJlc2VudGluZyBXQSBi aXRzICovCj4+ICAgCXUzMiBtYXNrOwo+PiArCXUzMiB2YWx1ZTsKPj4gKwlib29sIGlzX21hc2tl ZF9yZWc7Cj4gSSdkIGhpZGUgdGhpcyBkZXRhaWwgaW50byB0aGUgYXBwbHkgZnVuY3Rpb24uCgpJ IHNlZS4gQnV0IGlmIHlvdSBkb24ndCBzdG9yZSB0aGUgbWFzazogd2hhdCBkbyB5b3Ugb3V0cHV0 IGluIGRlYnVnZnM/Cgo+Cj4+ICsKPj4gKwl3YV9wcmVfaG9va19mdW5jIHByZV9ob29rOwo+PiAr CXdhX3Bvc3RfaG9va19mdW5jIHBvc3RfaG9vazsKPiAJYm9vbCAoKmFwcGx5KShjb25zdCBzdHJ1 Y3QgaTkxNV93YSAqd2EsCj4gCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+Cj4+ICsJdTMyIGhvb2tfZGF0YTsKPj4gKwlib29sIGFwcGxpZWQ7Cj4gVGhlIGJpZyBw b2ludCB3b3VsZCBiZSB0byBtYWtlIHRoaXMgaW50byBjb25zdCwgc28gImFwcGxpZWQiIHdvdWxk Cj4gZGVmZWF0IHRoYXQuCgpZZWFoLCBJIHJlYWxpemVkLiBLZWVwaW5nIGEgc2VwYXJhdGUgYml0 bWFzayBvZiB3aGljaCBXQXMgaGF2ZSBiZWVuIAphcHBsaWVkIGlzIG5vdCBhIGJpZyBkZWFsLCBi dXQgdGhlbiBJIGJlY2FtZSBhd2FyZSB0aGF0IHRoZXJlIGFyZSBtYW55IAptb3JlIHRoaW5ncyB0 aGF0IHdvdWxkIG5lZWQgdG8gYmUgY2FjaGVkLiBGb3IgZXhhbXBsZSwgc29tZSBXQXMgcmVxdWly ZSAKdG8gY29tcHV0ZSB0aGUgYWN0dWFsIHZhbHVlIHlvdSB3cml0ZSBpbnRvIHRoZWlyIHJlZ2lz dGVyLiBXaGF0IGRvIHlvdSAKZG8gd2l0aCB0aG9zZT8gKHJlbWVtYmVyIHRoYXQgeW91IHN0aWxs IHdhbnQgdG8gcHJpbnQgdGhlIGV4cGVjdGVkIHZhbHVlIAppbiBkZWJ1Z2ZzIGZvciB0aGVzZSku Cgo+IDxTTklQPgo+Cj4+ICsjZGVmaW5lIE1BU0sobWFzaywgdmFsdWUpCSgobWFzaykgPDwgMTYg fCAodmFsdWUpKQo+PiArI2RlZmluZSBNQVNLX0VOQUJMRSh4KQkJKE1BU0soKHgpLCAoeCkpKQo+ PiArI2RlZmluZSBNQVNLX0RJU0FCTEUoeCkJCShNQVNLKCh4KSwgMCkpCj4+ICAgCj4+IC0jZGVm aW5lIFdBX1JFRyhhZGRyLCBtYXNrLCB2YWwpIGRvIHsgXAo+PiAtCQljb25zdCBpbnQgciA9IHdh X2FkZChkZXZfcHJpdiwgKGFkZHIpLCAobWFzayksICh2YWwpKTsgXAo+PiAtCQlpZiAocikgXAo+ PiAtCQkJcmV0dXJuIHI7IFwKPj4gLQl9IHdoaWxlICgwKQo+PiArI2RlZmluZSBTRVRfQklUX01B U0tFRChtKSAJCVwKPj4gKwkubWFzayA9IChtKSwJCQlcCj4+ICsJLnZhbHVlID0gTUFTS19FTkFC TEUobSksCVwKPj4gKwkuaXNfbWFza2VkX3JlZyA9IHRydWUKPj4gICAKPj4gLSNkZWZpbmUgV0Ff U0VUX0JJVF9NQVNLRUQoYWRkciwgbWFzaykgXAo+PiAtCVdBX1JFRyhhZGRyLCAobWFzayksIF9N QVNLRURfQklUX0VOQUJMRShtYXNrKSkKPj4gKyNkZWZpbmUgQ0xFQVJfQklUX01BU0tFRCggbSkg CQlcCj4+ICsJLm1hc2sgPSAobSksCQkJXAo+PiArCS52YWx1ZSA9IE1BU0tfRElTQUJMRShtKSwJ XAo+PiArCS5pc19tYXNrZWRfcmVnID0gdHJ1ZQo+PiAgIAo+PiAtI2RlZmluZSBXQV9DTFJfQklU X01BU0tFRChhZGRyLCBtYXNrKSBcCj4+IC0JV0FfUkVHKGFkZHIsIChtYXNrKSwgX01BU0tFRF9C SVRfRElTQUJMRShtYXNrKSkKPj4gKyNkZWZpbmUgU0VUX0ZJRUxEX01BU0tFRChtLCB2KSAJCVwK Pj4gKwkubWFzayA9IChtKSwJCQlcCj4+ICsJLnZhbHVlID0gTUFTSyhtLCB2KSwJCVwKPj4gKwku aXNfbWFza2VkX3JlZyA9IHRydWUKPiBMZXRzIHRyeSB0byBoYXZlIHRoZSBzdHJ1Y3QgaTkxNV93 YSBhcyBzbWFsbCBhcyBwb3NzaWJsZSwgc28gdGhpcyBjb3VsZAo+IGJlIGNhbGN1bGF0ZWQgaW4g dGhlIGFwcGx5IGZ1bmN0aW9uLgo+Cj4gU28sIGF2b2lkaW5nIHRoZSBtYWNyb3MgdGhpcyB3b3Vs ZCBpbmRlZWQgYmVjb21lIHJhdGhlciBkZWNsYXJhdGl2ZTsKPgo+IHsKPiAJV0FfTkFNRSgiV2FE aXNhYmxlQXN5bmNGbGlwUGVyZk1vZGUiKQo+IAkuZ2VuID0gLi4uLAo+IAkucmVnID0gTUlfTU9E RSwKPiAJLnZhbHVlID0gQVNZTkNfRkxJUF9QRVJGX0RJU0FCTEUsCj4gCS5hcHBseSA9IHNldF9i aXRfbWFza2VkLAo+IH0sCj4gT3IsIHdlIGNvdWxkIGFsc28gaGF2ZTsKPgo+IHN0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV93YSBXYURpc2FibGVBc3luY0ZsaXBQZXJmTW9kZSA9IHsKPiAJLmdlbiA9 IC4uLiwKPiAJLnJlZyA9IE1JX01PREUsCj4gCS52YWx1ZSA9IEFTWU5DX0ZMSVBfUEVSRl9ESVNB QkxFLAo+IAkuYXBwbHkgPSBzZXRfYml0X21hc2tlZCwKPiB9Owo+Cj4gQW5kIHRoZW4gb25lIGFy cmF5IG9mIHRob3NlLgo+Cj4gCVdBKFdhRGlzYWJsZUFzeW5jRmxpcFBlcmZNb2RlKSwKClRoaXMg aXMgdGhlIGxpc3Qgb2YgcHJvYmxlbXMgd2UgbmVlZCB0byBzb2x2ZSBiZWZvcmUgd2UgY2FuIGdv IGZvcndhcmQgCndpdGggdGhpcyBkZXNpZ246CgotIFdoYXQgdG8gZG8gd2l0aCBXQXMgdGhhdCBk b24ndCBrbm93IGEgcHJpb3JpIHdoYXQgLnZhbHVlIHNob3VsZCBiZSwgCmJlY2F1c2UgaXQgZ2V0 cyBjb21wdXRlZCBpbiBwbGFjZXMgbGlrZSBza2xfdHVuZV9pel9oYXNoaW5nIG9yIAp1c2VfZ3R0 X2NhY2hlPyAoeWVzLCBjb21wdXRpbmcgaW4gdGhlIGFwcGx5IGZ1bmN0aW9uIGlzIHRoZSBpbW1l ZGlhdGUgCmFuc3dlciwgYnV0IHRoZW4uLi4gaG93IGRvIHlvdSBvdXRwdXQgdGhhdCBpbiBkZWJ1 Z2ZzPykuCi0gV2hhdCB0byBkbyB3aXRoIGNvbnRleHQtc3R5bGUgV0FzLCB0aGF0IGFyZSBlbWl0 dGVkIGluc3RlYWQgb2YgCmFwcGxpZWQsIGFzIEkgbWVudGlvbmVkIGFib3ZlPy4KLSBXaGF0IHRv IGRvIHdpdGggd2hpdGVsaXN0LXN0eWxlIGZ1bmN0aW9ucywgd2hlcmUgeW91IG5lZWQgdG8gYWNj ZXNzIAp0aGUgLnJlZyBmaWVsZCBvZiBpOTE1X3JlZ190IHRvIGtub3cgdGhlIC52YWx1ZT8gQWxz bywgdGhlIC5yZWcgZGVwZW5kcyAKb24gdGhlIGVuZ2luZSAoYWx0aG91Z2ggSSBndWVzcyB5b3Ug Y2FuIGFsd2F5cyBzdGF0aWNhbGx5IGNvZGlmeSB0aGF0IGluIAp0aGUgdGFibGUgYW5kIGFwcGx5 IHRoZSB3aGl0ZWxpc3QgV0FzIGxhdGVyLCBvbmNlIGFsbCB0aGUgZW5naW5lcyBhcmUgdXApLgot IFlvdSBhcmUgbm90IHN0b3JpbmcgLnNpbmNlLy51bnRpbC4gRG9lcyB0aGF0IG1lYW4gZXZlcnkg V0EgdGhhdCAKYXBwbGllcyB0byBvbmx5IHNvbWUgc3RlcHBpbmdzIGdldHMgYSBjdXN0b20gYXBw bHkgZnVuY3Rpb24/LgotIElmIHlvdSBkb24ndCBzdG9yZSB0aGUgY29tcHV0ZWQgbWFzayBhbnl3 aGVyZSwgd2hhdCBkbyB5b3Ugb3V0cHV0IGluIApkZWJ1Z2ZzPyAod2hpY2ggaXMgdGhlIHJlYWwg aW1wcm92ZW1lbnQgd2Ugd2FudCB0byBhY2hpZXZlPykuCi0gU29tZXRoaW5nIHRvIGJlIGNhcmVm dWwgYWJvdXQ6IHNvbWUgV0FzIGFyZSBuYW1lZCB0aGUgc2FtZSwgYnV0IHRoZWlyIApyZWcvdmFs dWUgaXMgZGlmZmVyZW50IChiZWNhdXNlIHRoZSByZWdpc3RlciBoYXMgY2hhbmdlZCBpbiBvbmUg CnBhcnRpY3VsYXIgR0VOIG9yIHdoYXRldmVyKS4gVGhlIHNvbHV0aW9uIGNvdWxkIGJlIGEgbW9k aWZpZXIgdG8gdGhlIApuYW1lIChXYVNvbWV0aGluZ19iZHdfY2h2IGFuZMKgIFdhU29tZXRoaW5n X3NrbCkgYnV0IHRoaXMgY291bGQgYmUgYSAKc291cmNlIG9mIGVycm9ycy4KCj4gVGhlbiB5b3Ug Y291bGQgYXQgY29tcGlsZSB0aW1lIGRlY2lkZSBpZiB5b3Ugc3RyaW5naWZ5IGFuZCBzdG9yZSB0 aGUKPiBuYW1lLiBCdXQgdGhhdCdkIGJlIG1vcmUgY29uc3QgZGF0YSB0aGFuIG5lY2Vzc2FyeSAo cG9pbnRlcnMgdG8KPiBzdHJ1Y3RzLCBpbnN0ZWFkIG9mIGFuIGFycmF5IG9mIHN0cnVjdHMpLgo+ Cj4gUmVnYXJkcywgSm9vbmFzCgpPbmUgbW9yZSB0aGluZzogSSBzdGlsbCB1cmdlIHRvIHJlY29u c2lkZXIgbWVyZ2luZyB3aGF0IHdlIGFscmVhZHkgaGF2ZSwgCmFuZCBkb2luZyB0aGVzZSBpbXBy b3ZlbWVudHMgKG9uY2Ugd2UgYWdyZWUgb24gYSBkZXNpZ24pIGxhdGVyIG9uLiBUaGUgCnJlYXNv biBiZWluZyB0aGF0IHRoZSBzb29uZXIgd2UgZ2V0IGEgbGlzdCBvZiBhbGwgV0FzIGluIGRlYnVn ZnMsIHRoZSAKYmV0dGVyICh3aGljaCBjYW4gYmUgdXNlZCBsYXRlciBvbiB0byB2ZXJpZnkgYW55 IGZ1cnRoZXIgaW1wcm92ZW1lbnRzIHdlIApkbykuCgpUaGFua3MgZm9yIHRoZSByZXZpZXcsCk9z Y2FyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK