From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 8/9] drm/i915: Sanitize watermarks after hardware state readout (v2) Date: Wed, 25 Nov 2015 19:05:58 +0200 Message-ID: <20151125170558.GS4437@intel.com> References: <1448470115-7863-1-git-send-email-matthew.d.roper@intel.com> <1448470115-7863-9-git-send-email-matthew.d.roper@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 ESMTP id 0BF576E4C4 for ; Wed, 25 Nov 2015 09:06:45 -0800 (PST) Content-Disposition: inline In-Reply-To: <1448470115-7863-9-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBOb3YgMjUsIDIwMTUgYXQgMDg6NDg6MzRBTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBBbHRob3VnaCB3ZSBjYW4gZG8gYSBnb29kIGpvYiBvZiByZWFkaW5nIG91dCBoYXJkd2Fy ZSBzdGF0ZSwgdGhlCj4gZ3JhcGhpY3MgZmlybXdhcmUgbWF5IGhhdmUgcHJvZ3JhbW1lZCB0aGUg d2F0ZXJtYXJrcyBpbiBhIGNyZWF0aXZlIHdheQo+IHRoYXQgZG9lc24ndCBtYXRjaCBob3cgaTkx NSB3b3VsZCBoYXZlIGNob3NlbiB0byBwcm9ncmFtIHRoZW0uICBXZQo+IHNob3VsZG4ndCB0cnVz dCB0aGUgZmlybXdhcmUncyB3YXRlcm1hcmsgcHJvZ3JhbW1pbmcsIGJ1dCBzaG91bGQgcmF0aGVy Cj4gcmUtY2FsY3VsYXRlIGhvdyB3ZSB0aGluayBXTSdzIHNob3VsZCBiZSBwcm9ncmFtbWVkIGFu ZCB0aGVuIHNob3ZlIHRob3NlCj4gdmFsdWVzIGludG8gdGhlIGhhcmR3YXJlLgo+IAo+IFdlIGNh biBkbyB0aGlzIHByZXR0eSBlYXNpbHkgYnkgY3JlYXRpbmcgYSBkdW1teSB0b3AtbGV2ZWwgc3Rh dGUsCj4gcnVubmluZyBpdCB0aHJvdWdoIHRoZSBjaGVjayBwcm9jZXNzIHRvIGNhbGN1bGF0ZSBh bGwgdGhlIHZhbHVlcywgYW5kCj4gdGhlbiBqdXN0IHByb2dyYW1taW5nIHRoZSB3YXRlcm1hcmtz IGZvciBlYWNoIENSVEMuCj4gCj4gdjI6ICBNb3ZlIHdhdGVybWFyayBzYW5pdGl6YXRpb24gYWZ0 ZXIgb3VyIEJJT1MgZmIgcmVjb25zdHJ1Y3Rpb247IHRoZQo+ICAgICAgd2F0ZXJtYXJrIGNhbGN1 bGF0aW9ucyB0aGF0IHdlIGRvIGhlcmUgbmVlZCB0byBsb29rIGF0IHBzdGF0ZS0+ZmIsCj4gICAg ICB3aGljaCBpc24ndCBzZXR1cCB5ZXQgaW4gaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZSgp LCBldmVuCj4gICAgICB0aG91Z2ggd2UgaGF2ZSBhbiBlbmFibGVkICYgdmlzaWJsZSBwbGFuZS4K PiAKPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVs LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyAgfCAgMSAr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNTggKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8 IDE0ICsrKysrLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDYgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiBpbmRleCAzNzMx YTI2Li44YTk4ZTBjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiBAQCAt MjQ3OCw2ICsyNDc4LDcgQEAgZHJtX2F0b21pY19oZWxwZXJfZHVwbGljYXRlX3N0YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJfQo+ICAJfQo+ICAKPiArCWRybV9tb2Rlc2V0X2xvY2so JmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwgY3R4KTsKPiAgCWRybV9mb3JfZWFj aF9jb25uZWN0b3IoY29ubiwgZGV2KSB7Cj4gIAkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGU7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDExYWU1YTUu LjUxNzI2MDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNjMwLDYgKzYzMCw3 IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiAgCQkJICBzdHJ1Y3QgZHBsbCAq YmVzdF9jbG9jayk7Cj4gIAlpbnQgKCpjb21wdXRlX3BpcGVfd20pKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ICAJCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiAr CXZvaWQgKCpwcm9ncmFtX3dhdGVybWFya3MpKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUpOwo+ICAJdm9pZCAoKnVwZGF0ZV93bSkoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiAgCWlu dCAoKm1vZGVzZXRfY2FsY19jZGNsaykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsK PiAgCXZvaWQgKCptb2Rlc2V0X2NvbW1pdF9jZGNsaykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMDBlNGMz Ny4uZWI1MmFmYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAt MTUxMjAsNiArMTUxMjAsNTcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXRfaHcoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgCWludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoZGV2KTsKPiAgfQo+ ICAKPiArLyoKPiArICogQ2FsY3VsYXRlIHdoYXQgd2UgdGhpbmsgdGhlIHdhdGVybWFya3Mgc2hv dWxkIGJlIGZvciB0aGUgc3RhdGUgd2UndmUgcmVhZAo+ICsgKiBvdXQgb2YgdGhlIGhhcmR3YXJl IGFuZCB0aGVuIGltbWVkaWF0ZWx5IHByb2dyYW0gdGhvc2Ugd2F0ZXJtYXJrcyBzbyB0aGF0Cj4g KyAqIHdlIGVuc3VyZSB0aGUgaGFyZHdhcmUgc2V0dGluZ3MgbWF0Y2ggb3VyIGludGVybmFsIHN0 YXRlLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgc2FuaXRpemVfd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gKwlz dHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsK PiArCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4gKwlpbnQgcmV0Owo+ICsJ aW50IGk7Cj4gKwo+ICsJLyogT25seSBzdXBwb3J0ZWQgb24gcGxhdGZvcm1zIHRoYXQgdXNlIGF0 b21pYyB3YXRlcm1hcmsgZGVzaWduICovCj4gKwlpZiAoIWRldl9wcml2LT5kaXNwbGF5LnByb2dy YW1fd2F0ZXJtYXJrcykKPiArCQlyZXR1cm47Cj4gKwo+ICsJLyoKPiArCSAqIENhbGN1bGF0ZSB3 aGF0IHdlIHRoaW5rIFdNJ3Mgc2hvdWxkIGJlIGJ5IGNyZWF0aW5nIGEgZHVtbXkgc3RhdGUgYW5k Cj4gKwkgKiBydW5uaW5nIGl0IHRocm91Z2ggdGhlIGF0b21pYyBjaGVjayBjb2RlLgo+ICsJICov Cj4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gKwlzdGF0ZSA9IGRybV9h dG9taWNfaGVscGVyX2R1cGxpY2F0ZV9zdGF0ZShkZXYsICZjdHgpOwo+ICsJaWYgKFdBUk5fT04o SVNfRVJSKHN0YXRlKSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXJldCA9IGludGVsX2F0b21pY19j aGVjayhkZXYsIHN0YXRlKTsKPiArCWlmIChyZXQpIHsKPiArCQkvKgo+ICsJCSAqIEp1c3QgZ2l2 ZSB1cCBhbmQgbGVhdmUgd2F0ZXJtYXJrcyB1bnRvdWNoZWQgaWYgd2UgZ2V0IGFuCj4gKwkJICog ZXJyb3IgYmFjayBmcm9tICdjaGVjaycKPiArCQkgKi8KPiArCQlEUk1fREVCVUdfS01TKCJDb3Vs ZCBub3QgZGV0ZXJtaW5lIHZhbGlkIHdhdGVybWFya3MgZm9yIGluaGVyaXRlZCBzdGF0ZVxuIik7 Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCS8qIFdyaXRlIGNhbGN1bGF0ZWQgd2F0ZXJtYXJr IHZhbHVlcyBiYWNrICovCj4gKwl0b19pOTE1KGRldiktPndtLmNvbmZpZyA9IHRvX2ludGVsX2F0 b21pY19zdGF0ZShzdGF0ZSktPndtX2NvbmZpZzsKPiArCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUo c3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkgewo+ICsJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3N0YXRlKTsKPiArCj4gKwkJZGV2X3ByaXYtPmRpc3Bs YXkucHJvZ3JhbV93YXRlcm1hcmtzKGNzKTsKPiArCX0KPiArCj4gKwlkcm1fYXRvbWljX3N0YXRl X2ZyZWUoc3RhdGUpOwo+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiArCWRybV9t b2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiArfQo+ICsKPiAgdm9pZCBpbnRlbF9tb2Rlc2V0 X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMTUyNDMsNiArMTUyOTQs MTMgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg CQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGNydGMsIGNydGMtPmNvbmZpZywKPiAgCQkJCSAgICAg ICAiW3N0YXRlIGFmdGVyIGluaXQgZmIgcmVjb25zdHJ1Y3Rpb25dIik7Cj4gIAl9Cj4gKwo+ICsJ LyoKPiArCSAqIE1ha2Ugc3VyZSBoYXJkd2FyZSB3YXRlcm1hcmtzIHJlYWxseSBtYXRjaCB0aGUg c3RhdGUgd2UgcmVhZCBvdXQuCj4gKwkgKiBOb3RlIHRoYXQgd2UgbmVlZCB0byBkbyB0aGlzIGFm dGVyIHJlY29uc3RydWN0aW5nIHRoZSBCSU9TIGZiJ3MKPiArCSAqIHNpbmNlIHRoZSB3YXRlcm1h cmsgY2FsY3VsYXRpb24gZG9uZSBoZXJlIHdpbGwgdXNlIHBzdGF0ZS0+ZmIuCj4gKwkgKi8KPiAr CXNhbml0aXplX3dhdGVybWFya3MoZGV2KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxf ZW5hYmxlX3BpcGVfYShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwo+IGluZGV4IGQ0Y2Q1ZDUuLmMyMDlhNjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKPiBAQCAtMzYxMCwxNSArMzYxMCwxOSBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWRldl9wcml2LT53bS5za2xfaHcgPSAqcmVzdWx0czsK PiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVy bWFya3Moc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMg PSBjc3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5k ZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 Cj4gIAlzdHJ1Y3QgaW50ZWxfcGlwZV93bSBscF93bV8xXzIgPSB7fSwgbHBfd21fNV82ID0ge30s ICpiZXN0X2xwX3dtOwo+ICAJc3RydWN0IGlsa193bV9tYXhpbXVtcyBtYXg7Cj4gIAlzdHJ1Y3Qg aW50ZWxfd21fY29uZmlnICpjb25maWcgPSAmZGV2X3ByaXYtPndtLmNvbmZpZzsKPiAgCXN0cnVj dCBpbGtfd21fdmFsdWVzIHJlc3VsdHMgPSB7fTsKPiAgCWVudW0gaW50ZWxfZGRiX3BhcnRpdGlv bmluZyBwYXJ0aXRpb25pbmc7Cj4gIAo+ICsJdG9faW50ZWxfY3J0YyhjcnRjKS0+d20uYWN0aXZl LmlsayA9IGNzdGF0ZS0+d20ub3B0aW1hbC5pbGs7Cj4gKwoKTkFLLiBXZSB3YW50IHRvIHVzZSB0 aGlzIGZ1bmN0aW9uIHRvIHByb2dyYW0gYm90aCB0aGUgaW50ZXJtZWRpYXRlIGFuZApvcHRpbWFs IHdtcy4gU28gdGhlIG9yaWdpbmFsIHBsYWNlIGZvciB0aGUgYXNzaWdubWVudCB3YXMgY29ycmVj dC4KCj4gIAlpbGtfY29tcHV0ZV93bV9tYXhpbXVtcyhkZXYsIDEsIGNvbmZpZywgSU5URUxfRERC X1BBUlRfMV8yLCAmbWF4KTsKPiAgCWlsa193bV9tZXJnZShkZXYsIGNvbmZpZywgJm1heCwgJmxw X3dtXzFfMik7Cj4gIAo+IEBAIC0zNjQzLDcgKzM2NDcsNiBAQCBzdGF0aWMgdm9pZCBpbGtfcHJv Z3JhbV93YXRlcm1hcmtzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4g IHN0YXRpYyB2b2lkIGlsa191cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7 Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0 ZShjcnRjLT5zdGF0ZSk7Cj4gIAo+IEBAIC0zNjYxLDkgKzM2NjQsNyBAQCBzdGF0aWMgdm9pZCBp bGtfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQlpbnRlbF93YWl0X2Zvcl92 YmxhbmsoY3J0Yy0+ZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9j cnRjLT53bS5hY3RpdmUuaWxrID0gY3N0YXRlLT53bS5vcHRpbWFsLmlsazsKPiAtCj4gLQlpbGtf cHJvZ3JhbV93YXRlcm1hcmtzKGRldl9wcml2KTsKPiArCWlsa19wcm9ncmFtX3dhdGVybWFya3Mo Y3N0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgc2tsX3BpcGVfd21fYWN0aXZlX3N0YXRl KHVpbnQzMl90IHZhbCwKPiBAQCAtNjk3MSw2ICs2OTcyLDcgQEAgdm9pZCBpbnRlbF9pbml0X3Bt KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJICAgICBkZXZfcHJpdi0+d20uc3ByX2xhdGVu Y3lbMF0gJiYgZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5WzBdKSkgewo+ICAJCQlkZXZfcHJpdi0+ ZGlzcGxheS51cGRhdGVfd20gPSBpbGtfdXBkYXRlX3dtOwo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxh eS5jb21wdXRlX3BpcGVfd20gPSBpbGtfY29tcHV0ZV9waXBlX3dtOwo+ICsJCQlkZXZfcHJpdi0+ ZGlzcGxheS5wcm9ncmFtX3dhdGVybWFya3MgPSBpbGtfcHJvZ3JhbV93YXRlcm1hcmtzOwo+ICAJ CX0gZWxzZSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIGRpc3BsYXkgcGxh bmUgbGF0ZW5jeS4gIgo+ICAJCQkJICAgICAgIkRpc2FibGUgQ3hTUlxuIik7Cj4gLS0gCj4gMi4x LjQKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK