From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adrian Pop Subject: [PATCH 2/2] x86/altp2m: Add a hvmop for setting the suppress #VE bit Date: Fri, 9 Jun 2017 19:51:54 +0300 Message-ID: <20170609165154.23577-3-apop@bitdefender.com> References: <20170609165154.23577-1-apop@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJN8w-0007gT-0p for xen-devel@lists.xenproject.org; Fri, 09 Jun 2017 16:52:14 +0000 Received: from smtp01.buh.bitdefender.com (smtp.bitdefender.biz [10.17.80.75]) by mx-sr.buh.bitdefender.com (Postfix) with ESMTP id 36A417FBDE for ; Fri, 9 Jun 2017 19:52:09 +0300 (EEST) In-Reply-To: <20170609165154.23577-1-apop@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Tamas K Lengyel , Wei Liu , Razvan Cojocaru , Adrian Pop , George Dunlap , Andrew Cooper , Ian Jackson , Jan Beulich List-Id: xen-devel@lists.xenproject.org SW50cm9kdWNlIGEgbmV3IGh2bW9wLCBIVk1PUF9hbHRwMm1fc2V0X3N1cHByZXNzX3ZlLCB3aGlj aCBhbGxvd3MgYQpwcml2aWxlZ2VkIGRvbWFpbiB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoZSAj VkUgc3VwcHJlc3MgYml0IGZvciBhCnBhZ2UuCgpBZGQgYSBsaWJ4YyB3cmFwcGVyIGZvciBpbnZv a2luZyB0aGlzIGh2bW9wLgoKU2lnbmVkLW9mZi1ieTogQWRyaWFuIFBvcCA8YXBvcEBiaXRkZWZl bmRlci5jb20+Ci0tLQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggICB8ICAyICsrCiB0 b29scy9saWJ4Yy94Y19hbHRwMm0uYyAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKwog eGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICB8IDE0ICsrKysrKysrKysrCiB4ZW4vYXJj aC94ODYvbW0vbWVtX2FjY2Vzcy5jICAgIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmggfCAxNSArKysr KysrKysrKysKIHhlbi9pbmNsdWRlL3hlbi9tZW1fYWNjZXNzLmggICAgfCAgMyArKysKIDYgZmls ZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDE2 MjlmNDEyZGQuLmY2YmE4NjM1YmYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVu Y3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0xOTI2LDYgKzE5 MjYsOCBAQCBpbnQgeGNfYWx0cDJtX2Rlc3Ryb3lfdmlldyh4Y19pbnRlcmZhY2UgKmhhbmRsZSwg ZG9taWRfdCBkb21pZCwKIC8qIFN3aXRjaCBhbGwgdkNQVXMgb2YgdGhlIGRvbWFpbiB0byB0aGUg c3BlY2lmaWVkIGFsdHAybSB2aWV3ICovCiBpbnQgeGNfYWx0cDJtX3N3aXRjaF90b192aWV3KHhj X2ludGVyZmFjZSAqaGFuZGxlLCBkb21pZF90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MTZfdCB2aWV3X2lkKTsKK2ludCB4Y19hbHRwMm1fc2V0X3N1cHByZXNzX3Zl KHhjX2ludGVyZmFjZSAqaGFuZGxlLCBkb21pZF90IGRvbWlkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDE2X3Qgdmlld19pZCwgeGVuX3Bmbl90IGdmbiwgYm9vbCBzdmUpOwog aW50IHhjX2FsdHAybV9zZXRfbWVtX2FjY2Vzcyh4Y19pbnRlcmZhY2UgKmhhbmRsZSwgZG9taWRf dCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qgdmlld19pZCwg eGVuX3Bmbl90IGdmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVubWVtX2FjY2Vz c190IGFjY2Vzcyk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19hbHRwMm0uYyBiL3Rvb2xz L2xpYnhjL3hjX2FsdHAybS5jCmluZGV4IDA2Mzk2MzI0NzcuLjQ3MTAxMzM5MTggMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL3hjX2FsdHAybS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2FsdHAybS5j CkBAIC0xNjMsNiArMTYzLDMwIEBAIGludCB4Y19hbHRwMm1fc3dpdGNoX3RvX3ZpZXcoeGNfaW50 ZXJmYWNlICpoYW5kbGUsIGRvbWlkX3QgZG9taWQsCiAgICAgcmV0dXJuIHJjOwogfQogCitpbnQg eGNfYWx0cDJtX3NldF9zdXBwcmVzc192ZSh4Y19pbnRlcmZhY2UgKmhhbmRsZSwgZG9taWRfdCBk b21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHZpZXdfaWQsIHhl bl9wZm5fdCBnZm4sIGJvb2wgc3ZlKQoreworICAgIGludCByYzsKKyAgICBERUNMQVJFX0hZUEVS Q0FMTF9CVUZGRVIoeGVuX2h2bV9hbHRwMm1fb3BfdCwgYXJnKTsKKworICAgIGFyZyA9IHhjX2h5 cGVyY2FsbF9idWZmZXJfYWxsb2MoaGFuZGxlLCBhcmcsIHNpemVvZigqYXJnKSk7CisgICAgaWYg KCBhcmcgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGFyZy0+dmVyc2lvbiA9 IEhWTU9QX0FMVFAyTV9JTlRFUkZBQ0VfVkVSU0lPTjsKKyAgICBhcmctPmNtZCA9IEhWTU9QX2Fs dHAybV9zZXRfc3VwcHJlc3NfdmU7CisgICAgYXJnLT5kb21haW4gPSBkb21pZDsKKyAgICBhcmct PnUuc2V0X3N1cHByZXNzX3ZlLnZpZXcgPSB2aWV3X2lkOworICAgIGFyZy0+dS5zZXRfc3VwcHJl c3NfdmUuZ2ZuID0gZ2ZuOworICAgIGFyZy0+dS5zZXRfc3VwcHJlc3NfdmUuc3VwcHJlc3NfdmUg PSBzdmU7CisKKyAgICByYyA9IHhlbmNhbGwyKGhhbmRsZS0+eGNhbGwsIF9fSFlQRVJWSVNPUl9o dm1fb3AsIEhWTU9QX2FsdHAybSwKKwkJICBIWVBFUkNBTExfQlVGRkVSX0FTX0FSRyhhcmcpKTsK KworICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZShoYW5kbGUsIGFyZyk7CisgICAgcmV0dXJu IHJjOworfQorCiBpbnQgeGNfYWx0cDJtX3NldF9tZW1fYWNjZXNzKHhjX2ludGVyZmFjZSAqaGFu ZGxlLCBkb21pZF90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZf dCB2aWV3X2lkLCB4ZW5fcGZuX3QgZ2ZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 ZW5tZW1fYWNjZXNzX3QgYWNjZXNzKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0u YyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggNzBkZGM4MWQ0NC4uZGQ4ZTIwNTU1MSAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZt L2h2bS5jCkBAIC00MzU4LDYgKzQzNTgsNyBAQCBzdGF0aWMgaW50IGRvX2FsdHAybV9vcCgKICAg ICBjYXNlIEhWTU9QX2FsdHAybV9kZXN0cm95X3AybToKICAgICBjYXNlIEhWTU9QX2FsdHAybV9z d2l0Y2hfcDJtOgogICAgIGNhc2UgSFZNT1BfYWx0cDJtX3NldF9tZW1fYWNjZXNzOgorICAgIGNh c2UgSFZNT1BfYWx0cDJtX3NldF9zdXBwcmVzc192ZToKICAgICBjYXNlIEhWTU9QX2FsdHAybV9j aGFuZ2VfZ2ZuOgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtNDQ3NSw2ICs0NDc2 LDE5IEBAIHN0YXRpYyBpbnQgZG9fYWx0cDJtX29wKAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYS51LnNldF9tZW1fYWNjZXNzLnZpZXcpOwogICAgICAgICBicmVhazsKIAor ICAgIGNhc2UgSFZNT1BfYWx0cDJtX3NldF9zdXBwcmVzc192ZToKKyAgICAgICAgaWYgKCBhLnUu c2V0X3N1cHByZXNzX3ZlLnBhZDEgfHwgYS51LnNldF9zdXBwcmVzc192ZS5wYWQyICkKKyAgICAg ICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg ICBnZm5fdCBnZm4gPSBfZ2ZuKGEudS5zZXRfbWVtX2FjY2Vzcy5nZm4pOworICAgICAgICAgICAg dW5zaWduZWQgaW50IGFsdHAybV9pZHggPSBhLnUuc2V0X21lbV9hY2Nlc3MudmlldzsKKyAgICAg ICAgICAgIGJvb2wgc3VwcHJlc3NfdmUgPSBhLnUuc2V0X3N1cHByZXNzX3ZlLnN1cHByZXNzX3Zl OworCisgICAgICAgICAgICByYyA9IHAybV9zZXRfc3VwcHJlc3NfdmUoZCwgZ2ZuLCBzdXBwcmVz c192ZSwgYWx0cDJtX2lkeCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNl IEhWTU9QX2FsdHAybV9jaGFuZ2VfZ2ZuOgogICAgICAgICBpZiAoIGEudS5jaGFuZ2VfZ2ZuLnBh ZDEgfHwgYS51LmNoYW5nZV9nZm4ucGFkMiApCiAgICAgICAgICAgICByYyA9IC1FSU5WQUw7CmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vbWVtX2FjY2Vzcy5jIGIveGVuL2FyY2gveDg2L21t L21lbV9hY2Nlc3MuYwppbmRleCBkMGIwNzY3ODU1Li44YzM5ZGIxM2UzIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvbW0vbWVtX2FjY2Vzcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9tZW1fYWNj ZXNzLmMKQEAgLTQ2Niw2ICs0NjYsNTggQEAgaW50IHAybV9nZXRfbWVtX2FjY2VzcyhzdHJ1Y3Qg ZG9tYWluICpkLCBnZm5fdCBnZm4sIHhlbm1lbV9hY2Nlc3NfdCAqYWNjZXNzKQogfQogCiAvKgor ICogU2V0L2NsZWFyIHRoZSAjVkUgc3VwcHJlc3MgYml0IGZvciBhIHBhZ2UuICBPbmx5IGF2YWls YWJsZSBvbiBWTVguCisgKi8KK2ludCBwMm1fc2V0X3N1cHByZXNzX3ZlKHN0cnVjdCBkb21haW4g KmQsIGdmbl90IGdmbiwgYm9vbCBzdXBwcmVzc192ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBhbHRwMm1faWR4KQoreworICAgIHN0cnVjdCBwMm1fZG9tYWluICpob3N0 X3AybSA9IHAybV9nZXRfaG9zdHAybShkKTsKKyAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqYXAybSA9 IE5VTEw7CisgICAgc3RydWN0IHAybV9kb21haW4gKnAybTsKKyAgICBtZm5fdCBtZm47CisgICAg cDJtX2FjY2Vzc190IGE7CisgICAgcDJtX3R5cGVfdCB0OworICAgIGludCByYzsKKworICAgIGlm ICggIWNwdV9oYXNfdm14X3ZpcnRfZXhjZXB0aW9ucyApCisgICAgICAgIHJldHVybiAtRU9QTk9U U1VQUDsKKworICAgIC8qIFRoaXMgc3Vib3Agc2hvdWxkIG9ubHkgYmUgdXNlZCBmcm9tIGEgcHJp dmlsZWdlZCBkb21haW4uICovCisgICAgaWYgKCAhY3VycmVudC0+ZG9tYWluLT5pc19wcml2aWxl Z2VkICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAvKiAjVkUgc2hvdWxkIGJlIGVu YWJsZWQgZm9yIHRoaXMgdmNwdS4gKi8KKyAgICBpZiAoIGdmbl9lcSh2Y3B1X2FsdHAybShjdXJy ZW50KS52ZWluZm9fZ2ZuLCBJTlZBTElEX0dGTikgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsK KworICAgIGlmICggYWx0cDJtX2lkeCA+IDAgKQorICAgIHsKKyAgICAgICAgaWYgKCBhbHRwMm1f aWR4ID49IE1BWF9BTFRQMk0gfHwKKyAgICAgICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2Fs dHAybV9pZHhdID09IG1mbl94KElOVkFMSURfTUZOKSApCisgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKworICAgICAgICBwMm0gPSBhcDJtID0gZC0+YXJjaC5hbHRwMm1fcDJtW2FsdHAybV9p ZHhdOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHAybSA9IGhvc3RfcDJtOworCisgICAgZ2Zu X2xvY2soaG9zdF9wMm0sIGdmbiwgMCk7CisgICAgaWYgKCBhcDJtICkKKyAgICAgICAgcDJtX2xv Y2soYXAybSk7CisKKyAgICBtZm4gPSBwMm0tPmdldF9lbnRyeShwMm0sIGdmbl94KGdmbiksICZ0 LCAmYSwgMCwgTlVMTCwgTlVMTCk7CisgICAgaWYgKCAhbWZuX3ZhbGlkKG1mbikgKQorICAgICAg ICByZXR1cm4gLUVTUkNIOworICAgIHJjID0gcDJtLT5zZXRfZW50cnkocDJtLCBnZm5feChnZm4p LCBtZm4sIFBBR0VfT1JERVJfNEssIHQsIGEsCisgICAgICAgICAgICAgICAgICAgICAgICBzdXBw cmVzc192ZSk7CisgICAgaWYgKCBhcDJtICkKKyAgICAgICAgcDJtX3VubG9jayhhcDJtKTsKKyAg ICBnZm5fdW5sb2NrKGhvc3RfcDJtLCBnZm4sIDApOworCisgICAgcmV0dXJuIHJjOworfQorCisv KgogICogTG9jYWwgdmFyaWFibGVzOgogICogbW9kZTogQwogICogYy1maWxlLXN0eWxlOiAiQlNE IgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaCBiL3hlbi9pbmNs dWRlL3B1YmxpYy9odm0vaHZtX29wLmgKaW5kZXggMGJkYWZkZjU5YS4uZjBiM2Q4ZTRkMyAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAorKysgYi94ZW4vaW5jbHVk ZS9wdWJsaWMvaHZtL2h2bV9vcC5oCkBAIC0yMzcsNiArMjM3LDE4IEBAIHN0cnVjdCB4ZW5faHZt X2FsdHAybV9zZXRfbWVtX2FjY2VzcyB7CiB0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2FsdHAybV9z ZXRfbWVtX2FjY2VzcyB4ZW5faHZtX2FsdHAybV9zZXRfbWVtX2FjY2Vzc190OwogREVGSU5FX1hF Tl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9hbHRwMm1fc2V0X21lbV9hY2Nlc3NfdCk7CiAKK3N0cnVj dCB4ZW5faHZtX2FsdHAybV9zZXRfc3VwcHJlc3NfdmUgeworICAgIC8qIHZpZXcgKi8KKyAgICB1 aW50MTZfdCB2aWV3OworICAgIHVpbnQ4X3Qgc3VwcHJlc3NfdmU7CisgICAgdWludDhfdCBwYWQx OworICAgIHVpbnQzMl90IHBhZDI7CisgICAgLyogZ2ZuICovCisgICAgdWludDY0X3QgZ2ZuOwor fTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fYWx0cDJtX3NldF9zdXBwcmVzc192ZSB4ZW5faHZt X2FsdHAybV9zZXRfc3VwcHJlc3NfdmVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9o dm1fYWx0cDJtX3NldF9zdXBwcmVzc192ZV90KTsKKwogc3RydWN0IHhlbl9odm1fYWx0cDJtX2No YW5nZV9nZm4gewogICAgIC8qIHZpZXcgKi8KICAgICB1aW50MTZfdCB2aWV3OwpAQCAtMjY4LDYg KzI4MCw4IEBAIHN0cnVjdCB4ZW5faHZtX2FsdHAybV9vcCB7CiAjZGVmaW5lIEhWTU9QX2FsdHAy bV9zZXRfbWVtX2FjY2VzcyAgICAgICA3CiAvKiBDaGFuZ2UgYSBwMm0gZW50cnkgdG8gaGF2ZSBh IGRpZmZlcmVudCBnZm4tPm1mbiBtYXBwaW5nICovCiAjZGVmaW5lIEhWTU9QX2FsdHAybV9jaGFu Z2VfZ2ZuICAgICAgICAgICA4CisvKiBTZXQgdGhlICJTdXBwcmVzcyAjVkUiIGJpdCBvbiBhIHBh Z2UgKi8KKyNkZWZpbmUgSFZNT1BfYWx0cDJtX3NldF9zdXBwcmVzc192ZSAgICAgIDkKICAgICBk b21pZF90IGRvbWFpbjsKICAgICB1aW50MTZfdCBwYWQxOwogICAgIHVpbnQzMl90IHBhZDI7CkBA IC0yNzYsNiArMjkwLDcgQEAgc3RydWN0IHhlbl9odm1fYWx0cDJtX29wIHsKICAgICAgICAgc3Ry dWN0IHhlbl9odm1fYWx0cDJtX3ZjcHVfZW5hYmxlX25vdGlmeSBlbmFibGVfbm90aWZ5OwogICAg ICAgICBzdHJ1Y3QgeGVuX2h2bV9hbHRwMm1fdmlldyAgICAgICAgICAgICAgIHZpZXc7CiAgICAg ICAgIHN0cnVjdCB4ZW5faHZtX2FsdHAybV9zZXRfbWVtX2FjY2VzcyAgICAgc2V0X21lbV9hY2Nl c3M7CisgICAgICAgIHN0cnVjdCB4ZW5faHZtX2FsdHAybV9zZXRfc3VwcHJlc3NfdmUgICAgc2V0 X3N1cHByZXNzX3ZlOwogICAgICAgICBzdHJ1Y3QgeGVuX2h2bV9hbHRwMm1fY2hhbmdlX2dmbiAg ICAgICAgIGNoYW5nZV9nZm47CiAgICAgICAgIHVpbnQ4X3QgcGFkWzY0XTsKICAgICB9IHU7CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vbWVtX2FjY2Vzcy5oIGIveGVuL2luY2x1ZGUveGVu L21lbV9hY2Nlc3MuaAppbmRleCA1YWIzNGMxNTUzLi4wYzY3MTdkODBmIDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS94ZW4vbWVtX2FjY2Vzcy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9tZW1fYWNj ZXNzLmgKQEAgLTc4LDYgKzc4LDkgQEAgbG9uZyBwMm1fc2V0X21lbV9hY2Nlc3NfbXVsdGkoc3Ry dWN0IGRvbWFpbiAqZCwKICAqLwogaW50IHAybV9nZXRfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWlu ICpkLCBnZm5fdCBnZm4sIHhlbm1lbV9hY2Nlc3NfdCAqYWNjZXNzKTsKIAoraW50IHAybV9zZXRf c3VwcHJlc3NfdmUoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBib29sIHN1cHByZXNzX3Zl LAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFsdHAybV9pZHgpOworCiAj aWZkZWYgQ09ORklHX0hBU19NRU1fQUNDRVNTCiBpbnQgbWVtX2FjY2Vzc19tZW1vcCh1bnNpZ25l ZCBsb25nIGNtZCwKICAgICAgICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o eGVuX21lbV9hY2Nlc3Nfb3BfdCkgYXJnKTsKLS0gCjIuMTMuMAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=