From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 14/15] drm/i915: Sanitize watermarks after hardware state readout Date: Thu, 1 Oct 2015 18:12:52 +0200 Message-ID: <20151001161252.GA3383@phenom.ffwll.local> References: <1443135200-9870-1-git-send-email-matthew.d.roper@intel.com> <1443135200-9870-15-git-send-email-matthew.d.roper@intel.com> <874miabshd.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by gabe.freedesktop.org (Postfix) with ESMTPS id C10BA6E486 for ; Thu, 1 Oct 2015 09:09:59 -0700 (PDT) Received: by wicfx3 with SMTP id fx3so40789257wic.1 for ; Thu, 01 Oct 2015 09:09:58 -0700 (PDT) Content-Disposition: inline In-Reply-To: <874miabshd.fsf@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 List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMDEsIDIwMTUgYXQgMDQ6NTg6MzhQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gRnJpLCAyNSBTZXAgMjAxNSwgTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGlu dGVsLmNvbT4gd3JvdGU6Cj4gPiBBbHRob3VnaCB3ZSBjYW4gZG8gYSBnb29kIGpvYiBvZiByZWFk aW5nIG91dCBoYXJkd2FyZSBzdGF0ZSwgdGhlCj4gPiBncmFwaGljcyBmaXJtd2FyZSBtYXkgaGF2 ZSBwcm9ncmFtbWVkIHRoZSB3YXRlcm1hcmtzIGluIGEgY3JlYXRpdmUgd2F5Cj4gPiB0aGF0IGRv ZXNuJ3QgbWF0Y2ggaG93IGk5MTUgd291bGQgaGF2ZSBjaG9zZW4gdG8gcHJvZ3JhbSB0aGVtLiAg V2UKPiA+IHNob3VsZG4ndCB0cnVzdCB0aGUgZmlybXdhcmUncyB3YXRlcm1hcmsgcHJvZ3JhbW1p bmcsIGJ1dCBzaG91bGQgcmF0aGVyCj4gPiByZS1jYWxjdWxhdGUgaG93IHdlIHRoaW5rIFdNJ3Mg c2hvdWxkIGJlIHByb2dyYW1tZWQgYW5kIHRoZW4gc2hvdmUgdGhvc2UKPiA+IHZhbHVlcyBpbnRv IHRoZSBoYXJkd2FyZS4KPiA+Cj4gPiBXZSBjYW4gZG8gdGhpcyBwcmV0dHkgZWFzaWx5IGJ5IGNy ZWF0aW5nIGEgZHVtbXkgdG9wLWxldmVsIHN0YXRlLAo+ID4gcnVubmluZyBpdCB0aHJvdWdoIHRo ZSBjaGVjayBwcm9jZXNzIHRvIGNhbGN1bGF0ZSBhbGwgdGhlIHZhbHVlcywgYW5kCj4gPiB0aGVu IGp1c3QgcHJvZ3JhbW1pbmcgdGhlIHdhdGVybWFya3MgZm9yIGVhY2ggQ1JUQy4KPiA+Cj4gPiBD YzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4K PiA+IFNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+ Cj4gCj4gQmlzZWN0IHRlbGxzIG1lIHRoaXMgcGF0Y2gsIGkuZS4KPiAKPiBjb21taXQgYzEwM2Yy YjgzZGZhM2I2ZmI2YjU4MTlhZTAzNjJmZWU2Y2Y0YjI0Mgo+IEF1dGhvcjogTWF0dCBSb3BlciA8 bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBEYXRlOiAgIFRodSBTZXAgMjQgMTU6NTM6MTkg MjAxNSAtMDcwMAo+IAo+ICAgICBkcm0vaTkxNTogU2FuaXRpemUgd2F0ZXJtYXJrcyBhZnRlciBo YXJkd2FyZSBzdGF0ZSByZWFkb3V0Cj4gCj4gZ2l2ZXMgbWUgYmxhY2sgc2NyZWVuIG9uIGEgQkRX IE5VQyBwY2lpZD0weDE2MTYuCj4gCj4gRGFuaWVsLCBwbGVhc2UgZHJvcCBpdC4KCkRvbmUsIHBs dXMgdGhlIG5leHQgcGF0Y2ggZHVlIHRvIGNvbmZsaWN0cy4gTWF0dCwgSSdsbCByZWFwcGx5IHRo ZW0gYXMKc29vbiBhcyB3ZSBoYXZlIGEgZml4IGZvciB0aGlzIGJvb3QgaXNzdWUuCi1EYW5pZWwK Cj4gCj4gQlIsCj4gSmFuaS4KPiAKPiAKPiA+IC0tLQo+ID4gTWFhcnRlbiwgZG9lcyB0aGlzIHNv bHZlIHRoZSBwcm9ibGVtIHlvdSB3ZXJlIHNlZWluZyBvbiBJcm9ubGFrZT8gIFlvdQo+ID4gaW5k aWNhdGVkIHRoYXQgeW91ciBmaXJtd2FyZSBoYWQgc3ByaXRlIHdhdGVybWFya3MgcHJvZ3JhbW1l ZCBldmVuIHRob3VnaAo+ID4gc3ByaXRlcyB0aGVtc2VsdmVzIHdlcmUgb2ZmIGFuZCBJIGRvbid0 IGhhdmUgYW55IGtpbmQgb2Ygc3lzdGVtIHRoYXQgY2FuCj4gPiByZXByb2R1Y2UgdGhhdCBzZXR1 cC4gIEknbSBob3BpbmcgdGhpcyB3aWxsIHBhdGNoIHdpbGwgZG8gdGhlIHRyaWNrLgo+ID4KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgMSArCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNTEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAg IHwgMTQgKysrKystLS0tLQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IGluZGV4IDhi N2M4ZjkuLmE5YmFjMWUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBAQCAt NjI5LDYgKzYyOSw3IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiA+ICAJCQkg IHN0cnVjdCBkcGxsICpiZXN0X2Nsb2NrKTsKPiA+ICAJaW50ICgqY29tcHV0ZV9waXBlX3dtKShz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ICAJCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKTsKPiA+ICsJdm9pZCAoKnByb2dyYW1fd2F0ZXJtYXJrcykoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSk7Cj4gPiAgCXZvaWQgKCp1cGRhdGVfd20pKHN0cnVjdCBk cm1fY3J0YyAqY3J0Yyk7Cj4gPiAgCWludCAoKm1vZGVzZXRfY2FsY19jZGNsaykoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+ICAJdm9pZCAoKm1vZGVzZXRfY29tbWl0X2NkY2xr KShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ID4gaW5kZXggZTJhMDc3Ny4uMGMzNzgzYyAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBAQCAtMTUzMTAsNiArMTUzMTAsNTQgQEAg c3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gPiAgCX0KPiA+ICB9Cj4gPiAgCj4gPiArLyoKPiA+ICsgKiBDYWxjdWxhdGUg d2hhdCB3ZSB0aGluayB0aGUgd2F0ZXJtYXJrcyBzaG91bGQgYmUgZm9yIHRoZSBzdGF0ZSB3ZSd2 ZSByZWFkCj4gPiArICogb3V0IG9mIHRoZSBoYXJkd2FyZSBhbmQgdGhlbiBpbW1lZGlhdGVseSBw cm9ncmFtIHRob3NlIHdhdGVybWFya3Mgc28gdGhhdAo+ID4gKyAqIHdlIGVuc3VyZSB0aGUgaGFy ZHdhcmUgc2V0dGluZ3MgbWF0Y2ggb3VyIGludGVybmFsIHN0YXRlLgo+ID4gKyAqLwo+ID4gK3N0 YXRpYyB2b2lkIHNhbml0aXplX3dhdGVybWFya3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKPiA+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ID4gKwlzdHJ1Y3QgZHJt X2NydGMgKmNydGM7Cj4gPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlOwo+ID4gKwlp bnQgcmV0Owo+ID4gKwlpbnQgaTsKPiA+ICsKPiA+ICsJLyogT25seSBzdXBwb3J0ZWQgb24gcGxh dGZvcm1zIHRoYXQgdXNlIGF0b21pYyB3YXRlcm1hcmsgZGVzaWduICovCj4gPiArCWlmICghZGV2 X3ByaXYtPmRpc3BsYXkucHJvZ3JhbV93YXRlcm1hcmtzKQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ ID4gKwkvKgo+ID4gKwkgKiBDYWxjdWxhdGUgd2hhdCB3ZSB0aGluayBXTSdzIHNob3VsZCBiZSBi eSBjcmVhdGluZyBhIGR1bW15IHN0YXRlIGFuZAo+ID4gKwkgKiBydW5uaW5nIGl0IHRocm91Z2gg dGhlIGF0b21pYyBjaGVjayBjb2RlLgo+ID4gKwkgKi8KPiA+ICsJc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9kdXBsaWNhdGVfc3RhdGUoZGV2LAo+ID4gKwkJCQkJCSAgZGV2LT5tb2RlX2NvbmZp Zy5hY3F1aXJlX2N0eCk7Cj4gPiArCWlmIChXQVJOX09OKElTX0VSUihzdGF0ZSkpKQo+ID4gKwkJ cmV0dXJuOwo+ID4gKwo+ID4gKwlyZXQgPSBpbnRlbF9hdG9taWNfY2hlY2soZGV2LCBzdGF0ZSk7 Cj4gPiArCWlmIChyZXQpIHsKPiA+ICsJCS8qCj4gPiArCQkgKiBKdXN0IGdpdmUgdXAgYW5kIGxl YXZlIHdhdGVybWFya3MgdW50b3VjaGVkIGlmIHdlIGdldCBhbgo+ID4gKwkJICogZXJyb3IgYmFj ayBmcm9tICdjaGVjaycKPiA+ICsJCSAqLwo+ID4gKwkJRFJNX0RFQlVHX0tNUygiQ291bGQgbm90 IGRldGVybWluZSB2YWxpZCB3YXRlcm1hcmtzIGZvciBpbmhlcml0ZWQgc3RhdGVcbiIpOwo+ID4g KwkJcmV0dXJuOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qIFdyaXRlIGNhbGN1bGF0ZWQgd2F0ZXJt YXJrIHZhbHVlcyBiYWNrICovCj4gPiArCXRvX2k5MTUoZGV2KS0+d20uY29uZmlnID0gdG9faW50 ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+d21fY29uZmlnOwo+ID4gKwlmb3JfZWFjaF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKPiA+ICsJCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3N0YXRlKTsKPiA+ICsKPiA+ICsJCWRl dl9wcml2LT5kaXNwbGF5LnByb2dyYW1fd2F0ZXJtYXJrcyhjcyk7Cj4gPiArCX0KPiA+ICsKPiA+ ICsJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiA+ICt9Cj4gPiArCj4gPiAgLyogU2Nh biBvdXQgdGhlIGN1cnJlbnQgaHcgbW9kZXNldCBzdGF0ZSwKPiA+ICAgKiBhbmQgc2FuaXRpemVz IGl0IHRvIHRoZSBjdXJyZW50IHN0YXRlCj4gPiAgICovCj4gPiBAQCAtMTUzNjUsNiArMTU0MTMs OSBAQCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gPiAgCQkJbW9kZXNldF9wdXRfcG93ZXJfZG9tYWlucyhkZXZfcHJpdiwgcHV0X2RvbWFpbnMp Owo+ID4gIAl9Cj4gPiAgCWludGVsX2Rpc3BsYXlfc2V0X2luaXRfcG93ZXIoZGV2X3ByaXYsIGZh bHNlKTsKPiA+ICsKPiA+ICsJLyogTWFrZSBzdXJlIGhhcmR3YXJlIHdhdGVybWFya3MgcmVhbGx5 IG1hdGNoIHRoZSBzdGF0ZSB3ZSByZWFkIG91dCAqLwo+ID4gKwlzYW5pdGl6ZV93YXRlcm1hcmtz KGRldik7Cj4gPiAgfQo+ID4gIAo+ID4gIHZvaWQgaW50ZWxfZGlzcGxheV9yZXN1bWUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gaW5kZXggZjM2 NTJiYi4uOTg4ODkzZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+IEBAIC0z NjY0LDE1ICszNjY0LDE5IEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfd20oc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ID4gIAlkZXZfcHJpdi0+d20uc2tsX2h3ID0gKnJlc3VsdHM7Cj4gPiAgfQo+ ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gK3N0YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVy bWFya3Moc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPiA+ICB7Cj4gPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ID4gKwlzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSBjc3RhdGUtPmJhc2UuY3J0YzsKPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfcGlwZV93bSBscF93bV8xXzIgPSB7fSwgbHBf d21fNV82ID0ge30sICpiZXN0X2xwX3dtOwo+ID4gIAlzdHJ1Y3QgaWxrX3dtX21heGltdW1zIG1h eDsKPiA+ICAJc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnID0gJmRldl9wcml2LT53bS5j b25maWc7Cj4gPiAgCXN0cnVjdCBpbGtfd21fdmFsdWVzIHJlc3VsdHMgPSB7fTsKPiA+ICAJZW51 bSBpbnRlbF9kZGJfcGFydGl0aW9uaW5nIHBhcnRpdGlvbmluZzsKPiA+ICAKPiA+ICsJdG9faW50 ZWxfY3J0YyhjcnRjKS0+d20uYWN0aXZlLmlsayA9IGNzdGF0ZS0+d20ub3B0aW1hbC5pbGs7Cj4g PiArCj4gPiAgCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMSwgY29uZmlnLCBJTlRFTF9E REJfUEFSVF8xXzIsICZtYXgpOwo+ID4gIAlpbGtfd21fbWVyZ2UoZGV2LCBjb25maWcsICZtYXgs ICZscF93bV8xXzIpOwo+ID4gIAo+ID4gQEAgLTM2OTcsNyArMzcwMSw2IEBAIHN0YXRpYyB2b2lk IGlsa19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIGlsa191cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ID4gIHsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5kZXYpOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUg PSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ICAKPiA+IEBAIC0zNzE1LDkg KzM3MTgsNyBAQCBzdGF0aWMgdm9pZCBpbGtfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiA+ICAJCWludGVsX3dhaXRfZm9yX3ZibGFuayhjcnRjLT5kZXYsIGludGVsX2NydGMtPnBp cGUpOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCWludGVsX2NydGMtPndtLmFjdGl2ZS5pbGsgPSBjc3Rh dGUtPndtLm9wdGltYWwuaWxrOwo+ID4gLQo+ID4gLQlpbGtfcHJvZ3JhbV93YXRlcm1hcmtzKGRl dl9wcml2KTsKPiA+ICsJaWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhjc3RhdGUpOwo+ID4gIH0KPiA+ ICAKPiA+ICBzdGF0aWMgdm9pZCBza2xfcGlwZV93bV9hY3RpdmVfc3RhdGUodWludDMyX3QgdmFs LAo+ID4gQEAgLTcwNTEsNiArNzA1Miw3IEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ID4gIAkJICAgICBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lbMF0gJiYg ZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5WzBdKSkgewo+ID4gIAkJCWRldl9wcml2LT5kaXNwbGF5 LnVwZGF0ZV93bSA9IGlsa191cGRhdGVfd207Cj4gPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29t cHV0ZV9waXBlX3dtID0gaWxrX2NvbXB1dGVfcGlwZV93bTsKPiA+ICsJCQlkZXZfcHJpdi0+ZGlz cGxheS5wcm9ncmFtX3dhdGVybWFya3MgPSBpbGtfcHJvZ3JhbV93YXRlcm1hcmtzOwo+ID4gIAkJ fSBlbHNlIHsKPiA+ICAJCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBkaXNwbGF5IHBs YW5lIGxhdGVuY3kuICIKPiA+ICAJCQkJICAgICAgIkRpc2FibGUgQ3hTUlxuIik7Cj4gPiAtLSAK PiA+IDIuMS40Cj4gPgo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngKPiAKPiAtLSAKPiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3Vy Y2UgVGVjaG5vbG9neSBDZW50ZXIKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVy LCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=