From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH v2] drm/i915/debugfs: Add i915_hpd_storm_ctl Date: Wed, 8 Feb 2017 23:39:33 -0500 Message-ID: <20170209043933.11107-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Lyude , David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org VGhpcyBhZGRzIGEgZmlsZSBpbiBpOTE1J3MgZGVidWdmcyBkaXJlY3RvcnkgdGhhdCBhbGxvd3Mg dXNlcnNwYWNlIHRvCm1hbnVhbGx5IGNvbnRyb2wgSFBEIHN0b3JtIGRldGVjdGlvbi4gVGhpcyBp cyBtYWlubHkgZm9yIGhvdHBsdWdnaW5nCnRlc3RzLCB3aGVyZSB3ZSBtaWdodCB3YW50IHRvIHRl c3QgSFBEIHN0b3JtIGZ1bmN0aW9uYWxpdHkgb3IgZGlzYWJsZQpzdG9ybSBkZXRlY3Rpb24gdG8g c3BlZWQgdXAgaG90cGx1Z2dpbmcgdGVzdHMgd2l0aG91dCBicmVha2luZyBhbnl0aGluZy4KCkNo YW5nZXMgc2luY2UgdjE6Ci0gTWFrZSBIUEQgc3Rvcm0gaW50ZXJ2YWwgY29uZmlndXJhYmxlCi0g TWlzYyBjb2RlIGNsZWFudXAKClNpZ25lZC1vZmYtYnk6IEx5dWRlIDxseXVkZUByZWRoYXQuY29t PgpDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IFRvbWV1 IFZpem9zbyA8dG9tZXVAdG9tZXV2aXpvc28ubmV0PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jICB8IDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgIHwgIDEgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgIDQgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMgICAgICB8ICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBs dWcuYyB8IDE1ICsrKystLS0KIDUgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0aW9ucygrKSwgNiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDFjY2MyOTcu LmI1NTU0N2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC00NjQxLDYgKzQ2 NDEsODEgQEAgc3RhdGljIGludCBpOTE1X2ZvcmNld2FrZV9jcmVhdGUoc3RydWN0IGRlbnRyeSAq cm9vdCwgc3RydWN0IGRybV9taW5vciAqbWlub3IpCiAJcmV0dXJuIGRybV9hZGRfZmFrZV9pbmZv X25vZGUobWlub3IsIGVudCwgJmk5MTVfZm9yY2V3YWtlX2ZvcHMpOwogfQogCitzdGF0aWMgaW50 IGk5MTVfaHBkX3N0b3JtX2N0bF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOworCXN0 cnVjdCBpOTE1X2hvdHBsdWcgKmhvdHBsdWcgPSAmZGV2X3ByaXYtPmhvdHBsdWc7CisKKwlzZXFf cHJpbnRmKG0sICJUaHJlc2hvbGQ6ICVkXG4iLCBob3RwbHVnLT5ocGRfc3Rvcm1fdGhyZXNob2xk KTsKKwlzZXFfcHJpbnRmKG0sICJEZXRlY3RlZDogJXNcbiIsCisJCSAgIHllc25vKGRlbGF5ZWRf d29ya19wZW5kaW5nKCZob3RwbHVnLT5yZWVuYWJsZV93b3JrKSkpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBzc2l6ZV90IGk5MTVfaHBkX3N0b3JtX2N0bF93cml0ZShzdHJ1Y3QgZmlsZSAq ZmlsZSwKKwkJCQkJY29uc3QgY2hhciBfX3VzZXIgKnVidWYsIHNpemVfdCBsZW4sCisJCQkJCWxv ZmZfdCAqb2ZmcCkKK3sKKwlzdHJ1Y3Qgc2VxX2ZpbGUgKm0gPSBmaWxlLT5wcml2YXRlX2RhdGE7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKKwlzdHJ1 Y3QgaTkxNV9ob3RwbHVnICpob3RwbHVnID0gJmRldl9wcml2LT5ob3RwbHVnOworCXVuc2lnbmVk IGludCBuZXdfdGhyZXNob2xkOworCWludCBpOworCWNoYXIgKm5ld2xpbmU7CisJY2hhciB0bXBb MTZdOworCisJaWYgKGxlbiA+PSBzaXplb2YodG1wKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlp ZiAoY29weV9mcm9tX3VzZXIodG1wLCB1YnVmLCBsZW4pKQorCQlyZXR1cm4gLUVGQVVMVDsKKwor CXRtcFtsZW5dID0gJ1wwJzsKKworCS8qIFN0cmlwIG5ld2xpbmUsIGlmIGFueSAqLworCW5ld2xp bmUgPSBzdHJjaHIodG1wLCAnXG4nKTsKKwlpZiAobmV3bGluZSkKKwkJKm5ld2xpbmUgPSAnXDAn OworCisJaWYgKHN0cmNtcCh0bXAsICJyZXNldCIpID09IDApCisJCW5ld190aHJlc2hvbGQgPSBI UERfU1RPUk1fREVGQVVMVF9USFJFU0hPTEQ7CisJZWxzZSBpZiAoa3N0cnRvdWludCh0bXAsIDEw LCAmbmV3X3RocmVzaG9sZCkgIT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAobmV3X3Ro cmVzaG9sZCA+IDApCisJCURSTV9ERUJVR19LTVMoIlNldHRpbmcgSFBEIHN0b3JtIGRldGVjdGlv biB0aHJlc2hvbGQgdG8gJWRcbiIsCisJCQkgICAgICBuZXdfdGhyZXNob2xkKTsKKwllbHNlCisJ CURSTV9ERUJVR19LTVMoIkRpc2FibGluZyBIUEQgc3Rvcm0gZGV0ZWN0aW9uXG4iKTsKKworCXNw aW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CisJaG90cGx1Zy0+aHBkX3N0b3JtX3Ro cmVzaG9sZCA9IG5ld190aHJlc2hvbGQ7CisJLyogUmVzZXQgdGhlIEhQRCBzdG9ybSBzdGF0cyBz byB3ZSBkb24ndCBhY2NpZGVudGFsbHkgdHJpZ2dlciBhIHN0b3JtICovCisJZm9yX2VhY2hfaHBk X3BpbihpKQorCQlob3RwbHVnLT5zdGF0c1tpXS5jb3VudCA9IDA7CisJc3Bpbl91bmxvY2tfaXJx KCZkZXZfcHJpdi0+aXJxX2xvY2spOworCisJLyogUmUtZW5hYmxlIGhwZCBpbW1lZGlhdGVseSBp ZiB3ZSB3ZXJlIGluIGFuIGlycSBzdG9ybSAqLworCWZsdXNoX2RlbGF5ZWRfd29yaygmZGV2X3By aXYtPmhvdHBsdWcucmVlbmFibGVfd29yayk7CisKKwlyZXR1cm4gbGVuOworfQorCitzdGF0aWMg aW50IGk5MTVfaHBkX3N0b3JtX2N0bF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBm aWxlICpmaWxlKQoreworCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBpOTE1X2hwZF9zdG9ybV9j dGxfc2hvdywgaW5vZGUtPmlfcHJpdmF0ZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zIGk5MTVfaHBkX3N0b3JtX2N0bF9mb3BzID0geworCS5vd25lciA9IFRISVNf TU9EVUxFLAorCS5vcGVuID0gaTkxNV9ocGRfc3Rvcm1fY3RsX29wZW4sCisJLnJlYWQgPSBzZXFf cmVhZCwKKwkubGxzZWVrID0gc2VxX2xzZWVrLAorCS5yZWxlYXNlID0gc2luZ2xlX3JlbGVhc2Us CisJLndyaXRlID0gaTkxNV9ocGRfc3Rvcm1fY3RsX3dyaXRlCit9OworCiBzdGF0aWMgaW50IGk5 MTVfZGVidWdmc19jcmVhdGUoc3RydWN0IGRlbnRyeSAqcm9vdCwKIAkJCSAgICAgICBzdHJ1Y3Qg ZHJtX21pbm9yICptaW5vciwKIAkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lLApAQCAtNDczNCw3 ICs0ODA5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X2RlYnVnZnNfZmlsZXMgewogCXsi aTkxNV9kcF90ZXN0X2RhdGEiLCAmaTkxNV9kaXNwbGF5cG9ydF90ZXN0X2RhdGFfZm9wc30sCiAJ eyJpOTE1X2RwX3Rlc3RfdHlwZSIsICZpOTE1X2Rpc3BsYXlwb3J0X3Rlc3RfdHlwZV9mb3BzfSwK IAl7Imk5MTVfZHBfdGVzdF9hY3RpdmUiLCAmaTkxNV9kaXNwbGF5cG9ydF90ZXN0X2FjdGl2ZV9m b3BzfSwKLQl7Imk5MTVfZ3VjX2xvZ19jb250cm9sIiwgJmk5MTVfZ3VjX2xvZ19jb250cm9sX2Zv cHN9CisJeyJpOTE1X2d1Y19sb2dfY29udHJvbCIsICZpOTE1X2d1Y19sb2dfY29udHJvbF9mb3Bz fSwKKwl7Imk5MTVfaHBkX3N0b3JtX2N0bCIsICZpOTE1X2hwZF9zdG9ybV9jdGxfZm9wc30KIH07 CiAKIGludCBpOTE1X2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggZDQ4YzAyYTcuLmYyM2I1NjggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtODI3LDYgKzgyNyw3IEBAIHN0YXRpYyBpbnQgaTkx NV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ c3Bpbl9sb2NrX2luaXQoJmRldl9wcml2LT5ncHVfZXJyb3IubG9jayk7CiAJbXV0ZXhfaW5pdCgm ZGV2X3ByaXYtPmJhY2tsaWdodF9sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmZGV2X3ByaXYtPnVu Y29yZS5sb2NrKTsKKwogCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+bW0ub2JqZWN0X3N0YXRf bG9jayk7CiAJc3Bpbl9sb2NrX2luaXQoJmRldl9wcml2LT5tbWlvX2ZsaXBfbG9jayk7CiAJc3Bp bl9sb2NrX2luaXQoJmRldl9wcml2LT53bS5kc3BhcmJfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAppbmRleCA2MDRiMjBmLi4yYjdiMzE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAg LTM4NCw2ICszODQsOCBAQCBlbnVtIGhwZF9waW4gewogI2RlZmluZSBmb3JfZWFjaF9ocGRfcGlu KF9fcGluKSBcCiAJZm9yICgoX19waW4pID0gKEhQRF9OT05FICsgMSk7IChfX3BpbikgPCBIUERf TlVNX1BJTlM7IChfX3BpbikrKykKIAorI2RlZmluZSBIUERfU1RPUk1fREVGQVVMVF9USFJFU0hP TEQgNQorCiBzdHJ1Y3QgaTkxNV9ob3RwbHVnIHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgaG90cGx1 Z193b3JrOwogCkBAIC00MDcsNiArNDA5LDggQEAgc3RydWN0IGk5MTVfaG90cGx1ZyB7CiAJc3Ry dWN0IHdvcmtfc3RydWN0IHBvbGxfaW5pdF93b3JrOwogCWJvb2wgcG9sbF9lbmFibGVkOwogCisJ dW5zaWduZWQgaW50IGhwZF9zdG9ybV90aHJlc2hvbGQ7CisKIAkvKgogCSAqIGlmIHdlIGdldCBh IEhQRCBpcnEgZnJvbSBEUCBhbmQgYSBIUEQgaXJxIGZyb20gbm9uLURQCiAJICogdGhlIG5vbi1E UCBIUEQgY291bGQgYmxvY2sgdGhlIHdvcmtxdWV1ZSBvbiBhIG1vZGUgY29uZmlnCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYwppbmRleCA5ZWI0YzljLi4yN2MxMzE5MyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCkBAIC00Mjc3LDYgKzQyNzcsOCBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKQogCQlk ZXYtPnZibGFua19kaXNhYmxlX2ltbWVkaWF0ZSA9IHRydWU7CiAKKwlkZXZfcHJpdi0+aG90cGx1 Zy5ocGRfc3Rvcm1fdGhyZXNob2xkID0gSFBEX1NUT1JNX0RFRkFVTFRfVEhSRVNIT0xEOworCiAJ ZGV2LT5kcml2ZXItPmdldF92YmxhbmtfdGltZXN0YW1wID0gaTkxNV9nZXRfdmJsYW5rX3RpbWVz dGFtcDsKIAlkZXYtPmRyaXZlci0+Z2V0X3NjYW5vdXRfcG9zaXRpb24gPSBpOTE1X2dldF9jcnRj X3NjYW5vdXRwb3M7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hv dHBsdWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcuYwppbmRleCBiNjJl M2Y4Li42YTljMTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3Rw bHVnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCkBAIC0xMDAs NyArMTAwLDYgQEAgYm9vbCBpbnRlbF9ocGRfcGluX3RvX3BvcnQoZW51bSBocGRfcGluIHBpbiwg ZW51bSBwb3J0ICpwb3J0KQogfQogCiAjZGVmaW5lIEhQRF9TVE9STV9ERVRFQ1RfUEVSSU9ECQkx MDAwCi0jZGVmaW5lIEhQRF9TVE9STV9USFJFU0hPTEQJCTUKICNkZWZpbmUgSFBEX1NUT1JNX1JF RU5BQkxFX0RFTEFZCSgyICogNjAgKiAxMDAwKQogCiAvKioKQEAgLTExMiw5ICsxMTEsMTMgQEAg Ym9vbCBpbnRlbF9ocGRfcGluX3RvX3BvcnQoZW51bSBocGRfcGluIHBpbiwgZW51bSBwb3J0ICpw b3J0KQogICogc3Rvcm1zLiBPbmx5IHRoZSBwaW4gc3BlY2lmaWMgc3RhdHMgYW5kIHN0YXRlIGFy ZSBjaGFuZ2VkLCB0aGUgY2FsbGVyIGlzCiAgKiByZXNwb25zaWJsZSBmb3IgZnVydGhlciBhY3Rp b24uCiAgKgotICogQEhQRF9TVE9STV9USFJFU0hPTEQgaXJxcyBhcmUgYWxsb3dlZCB3aXRoaW4g QEhQRF9TVE9STV9ERVRFQ1RfUEVSSU9EIG1zLAotICogb3RoZXJ3aXNlIGl0J3MgY29uc2lkZXJl ZCBhbiBpcnEgc3Rvcm0sIGFuZCB0aGUgaXJxIHN0YXRlIGlzIHNldCB0bwotICogQEhQRF9NQVJL X0RJU0FCTEVELgorICogVGhlIG51bWJlciBvZiBpcnFzIHRoYXQgYXJlIGFsbG93ZWQgd2l0aGlu IEBIUERfU1RPUk1fREVURUNUX1BFUklPRCBpcworICogc3RvcmVkIGluIEBkZXZfcHJpdi0+aG90 cGx1Zy5ocGRfc3Rvcm1fdGhyZXNob2xkIHdoaWNoIGRlZmF1bHRzIHRvCisgKiBASFBEX1NUT1JN X0RFRkFVTFRfVEhSRVNIT0xELiBJZiB0aGlzIHRocmVzaG9sZCBpcyBleGNlZWRlZCwgaXQncwor ICogY29uc2lkZXJlZCBhbiBpcnEgc3Rvcm0gYW5kIHRoZSBpcnEgc3RhdGUgaXMgc2V0IHRvIEBI UERfTUFSS19ESVNBQkxFRC4KKyAqCisgKiBUaGUgSFBEIHRocmVzaG9sZCBjYW4gYmUgY29udHJv bGxlZCB0aHJvdWdoIGk5MTVfaHBkX3N0b3JtX2N0bCBpbiBkZWJ1Z2ZzLAorICogYW5kIHNob3Vs ZCBvbmx5IGJlIGFkanVzdGVkIGZvciBhdXRvbWF0ZWQgaG90cGx1ZyB0ZXN0aW5nLgogICoKICAq IFJldHVybiB0cnVlIGlmIGFuIGlycSBzdG9ybSB3YXMgZGV0ZWN0ZWQgb24gQHBpbi4KICAqLwpA QCAtMTIzLDEzICsxMjYsMTUgQEAgc3RhdGljIGJvb2wgaW50ZWxfaHBkX2lycV9zdG9ybV9kZXRl Y3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogewogCXVuc2lnbmVkIGxvbmcg c3RhcnQgPSBkZXZfcHJpdi0+aG90cGx1Zy5zdGF0c1twaW5dLmxhc3RfamlmZmllczsKIAl1bnNp Z25lZCBsb25nIGVuZCA9IHN0YXJ0ICsgbXNlY3NfdG9famlmZmllcyhIUERfU1RPUk1fREVURUNU X1BFUklPRCk7CisJY29uc3QgaW50IHRocmVzaG9sZCA9IGRldl9wcml2LT5ob3RwbHVnLmhwZF9z dG9ybV90aHJlc2hvbGQ7CiAJYm9vbCBzdG9ybSA9IGZhbHNlOwogCiAJaWYgKCF0aW1lX2luX3Jh bmdlKGppZmZpZXMsIHN0YXJ0LCBlbmQpKSB7CiAJCWRldl9wcml2LT5ob3RwbHVnLnN0YXRzW3Bp bl0ubGFzdF9qaWZmaWVzID0gamlmZmllczsKIAkJZGV2X3ByaXYtPmhvdHBsdWcuc3RhdHNbcGlu XS5jb3VudCA9IDA7CiAJCURSTV9ERUJVR19LTVMoIlJlY2VpdmVkIEhQRCBpbnRlcnJ1cHQgb24g UElOICVkIC0gY250OiAwXG4iLCBwaW4pOwotCX0gZWxzZSBpZiAoZGV2X3ByaXYtPmhvdHBsdWcu c3RhdHNbcGluXS5jb3VudCA+IEhQRF9TVE9STV9USFJFU0hPTEQpIHsKKwl9IGVsc2UgaWYgKGRl dl9wcml2LT5ob3RwbHVnLnN0YXRzW3Bpbl0uY291bnQgPiB0aHJlc2hvbGQgJiYKKwkJICAgdGhy ZXNob2xkKSB7CiAJCWRldl9wcml2LT5ob3RwbHVnLnN0YXRzW3Bpbl0uc3RhdGUgPSBIUERfTUFS S19ESVNBQkxFRDsKIAkJRFJNX0RFQlVHX0tNUygiSFBEIGludGVycnVwdCBzdG9ybSBkZXRlY3Rl ZCBvbiBQSU4gJWRcbiIsIHBpbik7CiAJCXN0b3JtID0gdHJ1ZTsKLS0gCjIuOS4zCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK