From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sharat Masetty Subject: [PATCH] drm/msm: Optimize GPU crashstate capture read path Date: Thu, 1 Nov 2018 14:05:41 +0530 Message-ID: <1541061341-29994-1-git-send-email-smasetty@codeaurora.org> 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: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Sharat Masetty , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org V2hlbiB0aGUgdXNlcnNwYWNlIHRyaWVzIHRvIHJlYWQgdGhlIGNyYXNoc3RhdGUgZHVtcCwgdGhl IHJlYWQgc2lkZQppbXBsZW1lbnRhdGlvbiBpbiB0aGUgZHJpdmVyIGN1cnJlbnRseSBhc2NpaTg1 IGVuY29kZXMgYWxsIHRoZSBiaW5hcnkKYnVmZmVycyBhbmQgaXQgZG9lcyB0aGlzIGVhY2ggdGlt ZSB0aGUgcmVhZCBzeXN0ZW0gY2FsbCBpcyBjYWxsZWQuCkEgdXNlcnNwYWNlIHRvb2wgbGlrZSBj YXQgdHlwaWNhbGx5IGRvZXMgYSBwYWdlIGJ5IHBhZ2UgcmVhZCBhbmQgdGhlCm51bWJlciBvZiBy ZWFkIGNhbGxzIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgdGhlIGRhdGEgY2FwdHVyZWQgYnkgdGhl CmRyaXZlci4gVGhpcyBpcyBjZXJ0YWlubHkgbm90IGRlc2lyYWJsZSBhbmQgZG9lcyBub3Qgc2Nh bGUgd2VsbCB3aXRoCmxhcmdlIGNhcHR1cmVzLgoKVGhpcyBwYXRjaCBzdGFydHMgb2ZmIHdpdGgg bW92aW5nIHRoZSBlbmNvZGluZyBwYXJ0IHRvIHRoZSBjYXB0dXJlIHRpbWUsCnRoYXQgaXMgd2hl biB0aGUgR1BVIHRyaWVzIHRvIHJlY292ZXIgYWZ0ZXIgYSBoYW5nLiBOb3cgd2Ugb25seSBlbmNv ZGUKb25jZSBwZXIgYnVmZmVyIG9iamVjdCBhbmQgbm90IHBlciBwYWdlIHJlYWQuIFdpdGggdGhp cyB0aGVyZSBpcyBhbgppbW1lZGlhdGUgPjEwWCBzcGVlZCBpbXByb3ZlbWVudCBpbiBjcmFzaHN0 YXRlIHNhdmUgdGltZS4KClRoZSBmbGlwIHNpZGUgaG93ZXZlciBpcyB0aGF0IHRoZSBHUFUgcmVj b3ZlcnkgdGltZSBpbmNyZWFzZXMgYW5kIHRoaXMKbmVnYXRpdmVseSBpbXBhY3RzIHRoZSB1c2Vy IGV4cGVyaWVuY2UsIHNvIHRoaXMgaXMgaGFuZGxlZCBieSBtb3ZpbmcgdGhlCmVuY29kaW5nIHBh cnQgdG8gYSB3b3JrZXIgdGhyZWFkIGFuZCBvbmx5IHJlZ2lzdGVyIHdpdGggdGhlIGRldl9jb3Jl ZHVtcApvbmNlIHRoZSBlbmNvZGluZyBvZiB0aGUgYnVmZmVycyBpcyBjb21wbGV0ZS4KClNpZ25l ZC1vZmYtYnk6IFNoYXJhdCBNYXNldHR5IDxzbWFzZXR0eUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMgfCAzNSArKystLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYyAgICAgICAgICAgfCA5MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oICAg ICAgICAgICB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygrKSwgMzEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5v X2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCmluZGV4IDE0 MTA2MmYuLjc0NDE1NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2Fk cmVub19ncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMK QEAgLTQwNiw3ICs0MDYsNyBAQCBpbnQgYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9n cHUgKmdwdSwgc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlKQogCQkJCXNpemUgPSBqICsgMTsK IAogCQlpZiAoc2l6ZSkgewotCQkJc3RhdGUtPnJpbmdbaV0uZGF0YSA9IGttYWxsb2Moc2l6ZSA8 PCAyLCBHRlBfS0VSTkVMKTsKKwkJCXN0YXRlLT5yaW5nW2ldLmRhdGEgPSBrdm1hbGxvYyhzaXpl IDw8IDIsIEdGUF9LRVJORUwpOwogCQkJaWYgKHN0YXRlLT5yaW5nW2ldLmRhdGEpIHsKIAkJCQlt ZW1jcHkoc3RhdGUtPnJpbmdbaV0uZGF0YSwgZ3B1LT5yYltpXS0+c3RhcnQsIHNpemUgPDwgMik7 CiAJCQkJc3RhdGUtPnJpbmdbaV0uZGF0YV9zaXplID0gc2l6ZSA8PCAyOwpAQCAtNDQ1LDcgKzQ0 NSw3IEBAIHZvaWQgYWRyZW5vX2dwdV9zdGF0ZV9kZXN0cm95KHN0cnVjdCBtc21fZ3B1X3N0YXRl ICpzdGF0ZSkKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN0YXRlLT5y aW5nKTsgaSsrKQotCQlrZnJlZShzdGF0ZS0+cmluZ1tpXS5kYXRhKTsKKwkJa3ZmcmVlKHN0YXRl LT5yaW5nW2ldLmRhdGEpOwogCiAJZm9yIChpID0gMDsgc3RhdGUtPmJvcyAmJiBpIDwgc3RhdGUt Pm5yX2JvczsgaSsrKQogCQlrdmZyZWUoc3RhdGUtPmJvc1tpXS5kYXRhKTsKQEAgLTQ3NSwzNCAr NDc1LDE1IEBAIGludCBhZHJlbm9fZ3B1X3N0YXRlX3B1dChzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAq c3RhdGUpCiAKICNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgfHwgZGVmaW5lZChDT05GSUdf REVWX0NPUkVEVU1QKQogCi1zdGF0aWMgdm9pZCBhZHJlbm9fc2hvd19vYmplY3Qoc3RydWN0IGRy bV9wcmludGVyICpwLCB1MzIgKnB0ciwgaW50IGxlbikKK3N0YXRpYyB2b2lkIGFkcmVub19zaG93 X29iamVjdChzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHZvaWQgKnB0cikKIHsKLQljaGFyIG91dFtB U0NJSTg1X0JVRlNaXTsKLQlsb25nIGwsIGRhdGFsZW4sIGk7Ci0KLQlpZiAoIXB0ciB8fCAhbGVu KQotCQlyZXR1cm47Ci0KLQkvKgotCSAqIE9ubHkgZHVtcCB0aGUgbm9uLXplcm8gcGFydCBvZiB0 aGUgYnVmZmVyIC0gcmFyZWx5IHdpbGwgYW55IGRhdGEKLQkgKiBjb21wbGV0ZWx5IGZpbGwgdGhl IGVudGlyZSBhbGxvY2F0ZWQgc2l6ZSBvZiB0aGUgYnVmZmVyCi0JICovCi0JZm9yIChkYXRhbGVu ID0gMCwgaSA9IDA7IGkgPCBsZW4gPj4gMjsgaSsrKSB7Ci0JCWlmIChwdHJbaV0pCi0JCQlkYXRh bGVuID0gKGkgPDwgMikgKyAxOwotCX0KLQotCS8qIFNraXAgcHJpbnRpbmcgdGhlIG9iamVjdCBp ZiBpdCBpcyBlbXB0eSAqLwotCWlmIChkYXRhbGVuID09IDApCisJaWYgKCFwdHIpCiAJCXJldHVy bjsKIAotCWwgPSBhc2NpaTg1X2VuY29kZV9sZW4oZGF0YWxlbik7Ci0KIAlkcm1fcHV0cyhwLCAi ICAgIGRhdGE6ICEhYXNjaWk4NSB8XG4iKTsKIAlkcm1fcHV0cyhwLCAiICAgICAiKTsKIAotCWZv ciAoaSA9IDA7IGkgPCBsOyBpKyspCi0JCWRybV9wdXRzKHAsIGFzY2lpODVfZW5jb2RlKHB0cltp XSwgb3V0KSk7CisJZHJtX3B1dHMocCwgcHRyKTsKIAogCWRybV9wdXRzKHAsICJcbiIpOwogfQpA QCAtNTM0LDggKzUxNSw3IEBAIHZvaWQgYWRyZW5vX3Nob3coc3RydWN0IG1zbV9ncHUgKmdwdSwg c3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlLAogCQlkcm1fcHJpbnRmKHAsICIgICAgd3B0cjog JWRcbiIsIHN0YXRlLT5yaW5nW2ldLndwdHIpOwogCQlkcm1fcHJpbnRmKHAsICIgICAgc2l6ZTog JWRcbiIsIE1TTV9HUFVfUklOR0JVRkZFUl9TWik7CiAKLQkJYWRyZW5vX3Nob3dfb2JqZWN0KHAs IHN0YXRlLT5yaW5nW2ldLmRhdGEsCi0JCQlzdGF0ZS0+cmluZ1tpXS5kYXRhX3NpemUpOworCQlh ZHJlbm9fc2hvd19vYmplY3QocCwgc3RhdGUtPnJpbmdbaV0uZGF0YSk7CiAJfQogCiAJaWYgKHN0 YXRlLT5ib3MpIHsKQEAgLTU0Niw4ICs1MjYsNyBAQCB2b2lkIGFkcmVub19zaG93KHN0cnVjdCBt c21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSwKIAkJCQlzdGF0ZS0+Ym9z W2ldLmlvdmEpOwogCQkJZHJtX3ByaW50ZihwLCAiICAgIHNpemU6ICV6ZFxuIiwgc3RhdGUtPmJv c1tpXS5zaXplKTsKIAotCQkJYWRyZW5vX3Nob3dfb2JqZWN0KHAsIHN0YXRlLT5ib3NbaV0uZGF0 YSwKLQkJCQlzdGF0ZS0+Ym9zW2ldLnNpemUpOworCQkJYWRyZW5vX3Nob3dfb2JqZWN0KHAsIHN0 YXRlLT5ib3NbaV0uZGF0YSk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMKaW5kZXggZmY5 NTg0OC4uZDU1MzNmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMKQEAgLTIxLDYgKzIxLDcgQEAKICNp bmNsdWRlICJtc21fZmVuY2UuaCIKIAogI2luY2x1ZGUgPGdlbmVyYXRlZC91dHNyZWxlYXNlLmg+ CisjaW5jbHVkZSA8bGludXgvYXNjaWk4NS5oPgogI2luY2x1ZGUgPGxpbnV4L3N0cmluZ19oZWxw ZXJzLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fb3BwLmg+CiAjaW5jbHVkZSA8bGludXgvZGV2ZnJl cS5oPgpAQCAtMzc1LDkgKzM3Niw3IEBAIHN0YXRpYyB2b2lkIG1zbV9ncHVfY3Jhc2hzdGF0ZV9j YXB0dXJlKHN0cnVjdCBtc21fZ3B1ICpncHUsCiAJLyogU2V0IHRoZSBhY3RpdmUgY3Jhc2ggc3Rh dGUgdG8gYmUgZHVtcGVkIG9uIGZhaWx1cmUgKi8KIAlncHUtPmNyYXNoc3RhdGUgPSBzdGF0ZTsK IAotCS8qIEZJWE1FOiBSZWxlYXNlIHRoZSBjcmFzaHN0YXRlIGlmIHRoaXMgZXJyb3JzIG91dD8g Ki8KLQlkZXZfY29yZWR1bXBtKGdwdS0+ZGV2LT5kZXYsIFRISVNfTU9EVUxFLCBncHUsIDAsIEdG UF9LRVJORUwsCi0JCW1zbV9ncHVfZGV2Y29yZWR1bXBfcmVhZCwgbXNtX2dwdV9kZXZjb3JlZHVt cF9mcmVlKTsKKwlzY2hlZHVsZV93b3JrKCZncHUtPmNyYXNoc3RhdGVfd29yayk7CiB9CiAjZWxz ZQogc3RhdGljIHZvaWQgbXNtX2dwdV9jcmFzaHN0YXRlX2NhcHR1cmUoc3RydWN0IG1zbV9ncHUg KmdwdSwKQEAgLTQyMCw2ICs0MTksOTMgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2ZlbmNlcyhzdHJ1 Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcsCiAKIHN0YXRpYyB2 b2lkIHJldGlyZV9zdWJtaXRzKHN0cnVjdCBtc21fZ3B1ICpncHUpOwogCitzdGF0aWMgY2hhciAq bXNtX2dwdV9hc2NpaTg1X2VuY29kZV9idWYodTMyICpzcmMsIHNpemVfdCBsZW4pCit7CisJdm9p ZCAqYnVmOworCXNpemVfdCBidWZfaXRyID0gMCwgYnVmZmVyX3NpemU7CisJY2hhciBvdXRbQVND SUk4NV9CVUZTWl07CisJbG9uZyBsOworCWludCBpOworCisJaWYgKCFzcmMgfHwgIWxlbikKKwkJ cmV0dXJuIE5VTEw7CisKKwlsID0gYXNjaWk4NV9lbmNvZGVfbGVuKGxlbik7CisKKwkvKgorCSAq IEFzY2lpODUgb3V0cHV0cyBlaXRoZXIgYSA1IGJ5dGUgc3RyaW5nIG9yIGEgMSBieXRlIHN0cmlu Zy4gU28gd2UKKwkgKiBhY2NvdW50IGZvciB0aGUgd29yc3QgY2FzZSBvZiA1IGJ5dGVzIHBlciBk d29yZCBwbHVzIHRoZSAxIGZvciAnXDAnCisJICovCisJYnVmZmVyX3NpemUgPSAobCAqIDUpICsg MTsKKworCWJ1ZiA9IGt2bWFsbG9jKGJ1ZmZlcl9zaXplLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1 ZikKKwkJcmV0dXJuIE5VTEw7CisKKwlmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKQorCQlidWZfaXRy ICs9IHNucHJpbnRmKGJ1ZiArIGJ1Zl9pdHIsIGJ1ZmZlcl9zaXplIC0gYnVmX2l0ciwgIiVzIiwK KwkJCQlhc2NpaTg1X2VuY29kZShzcmNbaV0sIG91dCkpOworCisJcmV0dXJuIGJ1ZjsKK30KKwor LyoKKyAqIENvbnZlcnQgdGhlIGJpbmFyeSBkYXRhIGluIHRoZSBncHUgY3Jhc2ggc3RhdGUgY2Fw dHVyZShsaWtlIGJvcyBhbmQKKyAqIHJpbmdidWZmZXIgZGF0YSkgdG8gYXNjaWk4NSBlbmNvZGVk IHN0cmluZ3MuIE5vdGUgdGhhdCB0aGUgZW5jb2RlZAorICogc3RyaW5nIGlzIE5VTEwgdGVybWlu YXRlZC4KKyAqLworc3RhdGljIHZvaWQgY3Jhc2hzdGF0ZV93b3JrZXIoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQoreworCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgbXNt X2dwdSAqZ3B1ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtc21fZ3B1LAorCQkJY3Jhc2hz dGF0ZV93b3JrKTsKKwlpbnQgaTsKKworCXN0YXRlID0gbXNtX2dwdV9jcmFzaHN0YXRlX2dldChn cHUpOworCWlmICghc3RhdGUpCisJCXJldHVybjsKKworCWZvciAoaSA9IDA7IGkgPCBNU01fR1BV X01BWF9SSU5HUzsgaSsrKSB7CisJCXZvaWQgKmJ1ZiA9IE5VTEw7CisKKwkJaWYgKCFzdGF0ZS0+ cmluZ1tpXS5kYXRhKQorCQkJY29udGludWU7CisKKwkJYnVmID0gc3RhdGUtPnJpbmdbaV0uZGF0 YTsKKworCQlzdGF0ZS0+cmluZ1tpXS5kYXRhID0gbXNtX2dwdV9hc2NpaTg1X2VuY29kZV9idWYo YnVmLAorCQkJCXN0YXRlLT5yaW5nW2ldLmRhdGFfc2l6ZSk7CisJCWt2ZnJlZShidWYpOworCX0K KworCWZvciAoaSA9IDA7IGkgPCBzdGF0ZS0+bnJfYm9zOyBpKyspIHsKKwkJdTMyICpidWYgPSBO VUxMOworCQlsb25nIGRhdGFsZW4sIGo7CisKKwkJaWYgKCFzdGF0ZS0+Ym9zW2ldLmRhdGEpCisJ CQljb250aW51ZTsKKworCQlidWYgPSBzdGF0ZS0+Ym9zW2ldLmRhdGE7CisKKwkJLyoKKwkJICog T25seSBkdW1wIHRoZSBub24temVybyBwYXJ0IG9mIHRoZSBidWZmZXIgLSByYXJlbHkgd2lsbAor CQkgKiBhbnkgZGF0YSBjb21wbGV0ZWx5IGZpbGwgdGhlIGVudGlyZSBhbGxvY2F0ZWQgc2l6ZSBv ZiB0aGUKKwkJICogYnVmZmVyCisJCSAqLworCQlmb3IgKGRhdGFsZW4gPSAwLCBqID0gMDsgaiA8 IHN0YXRlLT5ib3NbaV0uc2l6ZSA+PiAyOyBqKyspCisJCQlpZiAoYnVmW2pdKQorCQkJCWRhdGFs ZW4gPSAoKGogKyAxKSA8PCAyKTsKKworCQlzdGF0ZS0+Ym9zW2ldLmRhdGEgPSBtc21fZ3B1X2Fz Y2lpODVfZW5jb2RlX2J1ZihidWYsIGRhdGFsZW4pOworCQlrdmZyZWUoYnVmKTsKKwl9CisKKwlt c21fZ3B1X2NyYXNoc3RhdGVfcHV0KGdwdSk7CisKKwlkZXZfY29yZWR1bXBtKGdwdS0+ZGV2LT5k ZXYsIFRISVNfTU9EVUxFLCBncHUsIDAsIEdGUF9LRVJORUwsCisJCW1zbV9ncHVfZGV2Y29yZWR1 bXBfcmVhZCwgbXNtX2dwdV9kZXZjb3JlZHVtcF9mcmVlKTsKK30KKwogc3RhdGljIHZvaWQgcmVj b3Zlcl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBtc21fZ3B1 ICpncHUgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG1zbV9ncHUsIHJlY292ZXJfd29yayk7 CkBAIC04NTYsNiArOTQyLDcgQEAgaW50IG1zbV9ncHVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCUlOSVRfTElTVF9IRUFEKCZncHUt PmFjdGl2ZV9saXN0KTsKIAlJTklUX1dPUksoJmdwdS0+cmV0aXJlX3dvcmssIHJldGlyZV93b3Jr ZXIpOwogCUlOSVRfV09SSygmZ3B1LT5yZWNvdmVyX3dvcmssIHJlY292ZXJfd29ya2VyKTsKKwlJ TklUX1dPUksoJmdwdS0+Y3Jhc2hzdGF0ZV93b3JrLCBjcmFzaHN0YXRlX3dvcmtlcik7CiAKIAog CXRpbWVyX3NldHVwKCZncHUtPmhhbmdjaGVja190aW1lciwgaGFuZ2NoZWNrX2hhbmRsZXIsIDAp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmggYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9ncHUuaAppbmRleCBmODJiYWMwLi44ODI1MDY5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9ncHUuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHN0cnVjdCBtc21fZ3B1IHsKIAl9IGRldmZyZXE7 CiAKIAlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqY3Jhc2hzdGF0ZTsKKwlzdHJ1Y3Qgd29ya19zdHJ1 Y3QgY3Jhc2hzdGF0ZV93b3JrOwogfTsKIAogLyogSXQgdHVybnMgb3V0IHRoYXQgYWxsIHRhcmdl dHMgdXNlIHRoZSBzYW1lIHJpbmdidWZmZXIgc2l6ZSAqLwotLSAKMS45LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxp c3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=