From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 2/2] x86/msr: Rename the msr policy objects Date: Mon, 9 Jul 2018 11:29:48 +0100 Message-ID: <1531132188-20564-3-git-send-email-andrew.cooper3@citrix.com> References: <1531132188-20564-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1531132188-20564-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Sergey Dyasli , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org QWZ0ZXIgYXR0ZW1wdGluZyB0byBkZXZlbG9wIHRoZSBpbmZyYXN0cnVjdHVyZSwgaXQgdHVybnMg b3V0IHRoYXQgdGhlIGNob2ljZQpvZiBuYW1pbmcgaXMgc3Vib3B0aW1hbC4KClJlbmFtZSBtc3Jf ZG9tYWluX3BvbGljeSB0byBqdXN0IG1zcl9wb2xpY3kgdG8gbWlycm9yIHRoZSBDUFVJRCBzaWRl IG9mCnRoaW5ncywgYW5kIGFsdGVyIHRoZSAnZHAnIHZhcmlhYmxlIG5hbWUgY29udmVudGlvbiB0 byAnbXAnLiAgV2hpbGUgYWx0ZXJpbmcKYWxsIHRoZSBuYW1lcywgZXhwb3J0IGFsbCBvZiB0aGUg c3lzdGVtIG1zcl9wb2xpY3kgb2JqZWN0cyAod2hpY2ggYXJlIGFscmVhZHkKZ2xvYmFsIHN5bWJv bHMpLgoKUmVuYW1lIG1zcl92Y3B1X3BvbGljeSB0byB2Y3B1X21zcnMgYW5kIHN3aXRjaCAndnAn IHRvICdtc3JzJyBpbiBjb2RlLiAgVXBkYXRlCnRoZSBhcmNoX3ZjcHUgZmllbGQgbmFtZSB0byBt YXRjaC4KCk5vIGZ1bmN0aW9uYWwgY2hhbmdlLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3Bl ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8SkJldWxp Y2hAc3VzZS5jb20+CkNDOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDQzogUm9nZXIg UGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNDOiBTZXJnZXkgRHlhc2xpIDxzZXJn ZXkuZHlhc2xpQGNpdHJpeC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9jb21tb24uYyAgICAg ICAgICAgfCAgNCArLQogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAgICAgICAgfCAxMCAr Ky0tLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgICAgfCAgNCArLQogeGVuL2Fy Y2gveDg2L2h2bS9zdm0vZW50cnkuUyAgICAgICAgfCAgMiArLQogeGVuL2FyY2gveDg2L2h2bS92 bXgvZW50cnkuUyAgICAgICAgfCAgMiArLQogeGVuL2FyY2gveDg2L21zci5jICAgICAgICAgICAg ICAgICAgfCA3NCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJj aC94ODYvcHYvZW11bC1pbnYtb3AuYyAgICAgICB8ICA0ICstCiB4ZW4vYXJjaC94ODYveDg2XzY0 L2FzbS1vZmZzZXRzLmMgICB8ICA0ICstCiB4ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC9lbnRy eS5TICB8ICAyICstCiB4ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMgICAgICAgICB8ICAyICst CiB4ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oICAgICAgICB8ICA0ICstCiB4ZW4vaW5jbHVk ZS9hc20teDg2L21zci5oICAgICAgICAgICB8IDE3ICsrKystLS0tLQogeGVuL2luY2x1ZGUvYXNt LXg4Ni9zcGVjX2N0cmxfYXNtLmggfCAgMiArLQogMTMgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0 aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9j b21tb24uYyBiL3hlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMKaW5kZXggZTZhNTkyMi4uNjU3MGMy ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9jb21tb24uYworKysgYi94ZW4vYXJjaC94 ODYvY3B1L2NvbW1vbi5jCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBfX2luaXQgcHJvYmVfY3B1 aWRfZmF1bHRpbmcodm9pZCkKIAlpbnQgcmM7CiAKIAlpZiAoKHJjID0gcmRtc3Jfc2FmZShNU1Jf SU5URUxfUExBVEZPUk1fSU5GTywgdmFsKSkgPT0gMCkKLQkJcmF3X21zcl9kb21haW5fcG9saWN5 LnBsYWZvcm1faW5mby5jcHVpZF9mYXVsdGluZyA9CisJCXJhd19tc3JfcG9saWN5LnBsYWZvcm1f aW5mby5jcHVpZF9mYXVsdGluZyA9CiAJCQl2YWwgJiBNU1JfUExBVEZPUk1fSU5GT19DUFVJRF9G QVVMVElORzsKIAogCWlmIChyYyB8fApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgY3R4dF9zd2l0 Y2hfbGV2ZWxsaW5nKGNvbnN0IHN0cnVjdCB2Y3B1ICpuZXh0KQogCQkgKi8KIAkJc2V0X2NwdWlk X2ZhdWx0aW5nKG5leHRkICYmICFpc19jb250cm9sX2RvbWFpbihuZXh0ZCkgJiYKIAkJCQkgICAo aXNfcHZfZG9tYWluKG5leHRkKSB8fAotCQkJCSAgICBuZXh0LT5hcmNoLm1zci0+CisJCQkJICAg IG5leHQtPmFyY2gubXNycy0+CiAJCQkJICAgIG1pc2NfZmVhdHVyZXNfZW5hYmxlcy5jcHVpZF9m YXVsdGluZykpOwogCQlyZXR1cm47CiAJfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFp bi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IDVjMTA0MDEuLjhiMTYwZDMgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMK QEAgLTM1Niw3ICszNTYsNyBAQCBpbnQgdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQog ICAgICAgICAvKiBJZGxlIGRvbWFpbiAqLwogICAgICAgICB2LT5hcmNoLmNyMyA9IF9fcGEoaWRs ZV9wZ190YWJsZSk7CiAgICAgICAgIHJjID0gMDsKLSAgICAgICAgdi0+YXJjaC5tc3IgPSBaRVJP X0JMT0NLX1BUUjsgLyogQ2F0Y2ggc3RyYXkgbWlzdXNlcyAqLworICAgICAgICB2LT5hcmNoLm1z cnMgPSBaRVJPX0JMT0NLX1BUUjsgLyogQ2F0Y2ggc3RyYXkgbWlzdXNlcyAqLwogICAgIH0KIAog ICAgIGlmICggcmMgKQpAQCAtMzc2LDggKzM3Niw4IEBAIGludCB2Y3B1X2luaXRpYWxpc2Uoc3Ry dWN0IHZjcHUgKnYpCiAKICBmYWlsOgogICAgIHZjcHVfZGVzdHJveV9mcHUodik7Ci0gICAgeGZy ZWUodi0+YXJjaC5tc3IpOwotICAgIHYtPmFyY2gubXNyID0gTlVMTDsKKyAgICB4ZnJlZSh2LT5h cmNoLm1zcnMpOworICAgIHYtPmFyY2gubXNycyA9IE5VTEw7CiAKICAgICByZXR1cm4gcmM7CiB9 CkBAIC0zODksOCArMzg5LDggQEAgdm9pZCB2Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCiAK ICAgICB2Y3B1X2Rlc3Ryb3lfZnB1KHYpOwogCi0gICAgeGZyZWUodi0+YXJjaC5tc3IpOwotICAg IHYtPmFyY2gubXNyID0gTlVMTDsKKyAgICB4ZnJlZSh2LT5hcmNoLm1zcnMpOworICAgIHYtPmFy Y2gubXNycyA9IE5VTEw7CiAKICAgICBpZiAoICFpc19pZGxlX2RvbWFpbih2LT5kb21haW4pICkK ICAgICAgICAgdnBtdV9kZXN0cm95KHYpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9o dm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggNmExMjNhMi4uZTAyMmY1YSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2 bS5jCkBAIC0zMzUwLDkgKzMzNTAsOSBAQCB1bnNpZ25lZCBsb25nIGNvcHlfZnJvbV91c2VyX2h2 bSh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbGVuKQogCiBib29sIGh2bV9j aGVja19jcHVpZF9mYXVsdGluZyhzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICBjb25zdCBzdHJ1Y3Qg bXNyX3ZjcHVfcG9saWN5ICp2cCA9IHYtPmFyY2gubXNyOworICAgIGNvbnN0IHN0cnVjdCB2Y3B1 X21zcnMgKm1zcnMgPSB2LT5hcmNoLm1zcnM7CiAKLSAgICBpZiAoICF2cC0+bWlzY19mZWF0dXJl c19lbmFibGVzLmNwdWlkX2ZhdWx0aW5nICkKKyAgICBpZiAoICFtc3JzLT5taXNjX2ZlYXR1cmVz X2VuYWJsZXMuY3B1aWRfZmF1bHRpbmcgKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy ZXR1cm4gaHZtX2dldF9jcGwodikgPiAwOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9z dm0vZW50cnkuUyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2VudHJ5LlMKaW5kZXggMmQ1NDBmOS4u N2Q3M2E2OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9zdm0vZW50cnkuUworKysgYi94 ZW4vYXJjaC94ODYvaHZtL3N2bS9lbnRyeS5TCkBAIC02NCw3ICs2NCw3IEBAIF9fVU5MSUtFTFlf RU5EKG5zdm1faGFwKQogICAgICAgICBtb3YgICVyc3AsICVyZGkKICAgICAgICAgY2FsbCBzdm1f dm1lbnRlcl9oZWxwZXIKIAotICAgICAgICBtb3YgVkNQVV9hcmNoX21zciglcmJ4KSwgJXJheAor ICAgICAgICBtb3YgVkNQVV9hcmNoX21zcnMoJXJieCksICVyYXgKICAgICAgICAgbW92IFZDUFVN U1Jfc3BlY19jdHJsX3JhdyglcmF4KSwgJWVheAogCiAgICAgICAgIC8qIFdBUk5JTkchIGByZXRg LCBgY2FsbCAqYCwgYGptcCAqYCBub3Qgc2FmZSBiZXlvbmQgdGhpcyBwb2ludC4gKi8KZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L2VudHJ5LlMgYi94ZW4vYXJjaC94ODYvaHZtL3Zt eC9lbnRyeS5TCmluZGV4IGFmZDU1MmYuLmE3ZDEzNTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vdm14L2VudHJ5LlMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvZW50cnkuUwpAQCAt ODEsNyArODEsNyBAQCBVTkxJS0VMWV9FTkQocmVhbG1vZGUpCiAgICAgICAgIHRlc3QgJWFsLCAl YWwKICAgICAgICAganogLkx2bXhfdm1lbnRyeV9yZXN0YXJ0CiAKLSAgICAgICAgbW92IFZDUFVf YXJjaF9tc3IoJXJieCksICVyYXgKKyAgICAgICAgbW92IFZDUFVfYXJjaF9tc3JzKCVyYngpLCAl cmF4CiAgICAgICAgIG1vdiBWQ1BVTVNSX3NwZWNfY3RybF9yYXcoJXJheCksICVlYXgKIAogICAg ICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmV5b25k IHRoaXMgcG9pbnQuICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbXNyLmMgYi94ZW4vYXJj aC94ODYvbXNyLmMKaW5kZXggMjdjNDkxNS4uNmNiZGE0NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L21zci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tc3IuYwpAQCAtMjYsMTMgKzI2LDEzIEBACiAK IERFRklORV9QRVJfQ1BVKHVpbnQzMl90LCB0c2NfYXV4KTsKIAotc3RydWN0IG1zcl9kb21haW5f cG9saWN5IF9fcmVhZF9tb3N0bHkgICAgIHJhd19tc3JfZG9tYWluX3BvbGljeSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICBfX3JlYWRfbW9zdGx5ICAgIGhvc3RfbXNyX2RvbWFpbl9wb2xpY3ks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgX19yZWFkX21vc3RseSBodm1fbWF4X21zcl9kb21h aW5fcG9saWN5LAotICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVhZF9tb3N0bHkgIHB2X21h eF9tc3JfZG9tYWluX3BvbGljeTsKK3N0cnVjdCBtc3JfcG9saWN5IF9fcmVhZF9tb3N0bHkgICAg IHJhd19tc3JfcG9saWN5LAorICAgICAgICAgICAgICAgICAgX19yZWFkX21vc3RseSAgICBob3N0 X21zcl9wb2xpY3ksCisgICAgICAgICAgICAgICAgICBfX3JlYWRfbW9zdGx5IGh2bV9tYXhfbXNy X3BvbGljeSwKKyAgICAgICAgICAgICAgICAgIF9fcmVhZF9tb3N0bHkgIHB2X21heF9tc3JfcG9s aWN5OwogCi1zdHJ1Y3QgbXNyX3ZjcHVfcG9saWN5IF9fcmVhZF9tb3N0bHkgaHZtX21heF9tc3Jf dmNwdV9wb2xpY3ksCi0gICAgICAgICAgICAgICAgICAgICAgIF9fcmVhZF9tb3N0bHkgIHB2X21h eF9tc3JfdmNwdV9wb2xpY3k7CitzdHJ1Y3QgdmNwdV9tc3JzIF9fcmVhZF9tb3N0bHkgaHZtX21h eF92Y3B1X21zcnMsCisgICAgICAgICAgICAgICAgIF9fcmVhZF9tb3N0bHkgIHB2X21heF92Y3B1 X21zcnM7CiAKIHN0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVfcmF3X3BvbGljeSh2b2lkKQog ewpAQCAtNDIsMzMgKzQyLDMzIEBAIHN0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVfcmF3X3Bv bGljeSh2b2lkKQogCiBzdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX2hvc3RfcG9saWN5KHZv aWQpCiB7Ci0gICAgc3RydWN0IG1zcl9kb21haW5fcG9saWN5ICpkcCA9ICZob3N0X21zcl9kb21h aW5fcG9saWN5OworICAgIHN0cnVjdCBtc3JfcG9saWN5ICptcCA9ICZob3N0X21zcl9wb2xpY3k7 CiAKLSAgICAqZHAgPSByYXdfbXNyX2RvbWFpbl9wb2xpY3k7CisgICAgKm1wID0gcmF3X21zcl9w b2xpY3k7CiAKICAgICAvKiAweDAwMDAwMGNlICBNU1JfSU5URUxfUExBVEZPUk1fSU5GTyAqLwog ICAgIC8qIHByb2JlX2NwdWlkX2ZhdWx0aW5nKCkgc2FuaXR5IGNoZWNrcyBwcmVzZW5jZSBvZiBN SVNDX0ZFQVRVUkVTX0VOQUJMRVMgKi8KLSAgICBkcC0+cGxhZm9ybV9pbmZvLmNwdWlkX2ZhdWx0 aW5nID0gY3B1X2hhc19jcHVpZF9mYXVsdGluZzsKKyAgICBtcC0+cGxhZm9ybV9pbmZvLmNwdWlk X2ZhdWx0aW5nID0gY3B1X2hhc19jcHVpZF9mYXVsdGluZzsKIH0KIAogc3RhdGljIHZvaWQgX19p bml0IGNhbGN1bGF0ZV9odm1fbWF4X3BvbGljeSh2b2lkKQogewotICAgIHN0cnVjdCBtc3JfZG9t YWluX3BvbGljeSAqZHAgPSAmaHZtX21heF9tc3JfZG9tYWluX3BvbGljeTsKKyAgICBzdHJ1Y3Qg bXNyX3BvbGljeSAqbXAgPSAmaHZtX21heF9tc3JfcG9saWN5OwogCiAgICAgaWYgKCAhaHZtX2Vu YWJsZWQgKQogICAgICAgICByZXR1cm47CiAKLSAgICAqZHAgPSBob3N0X21zcl9kb21haW5fcG9s aWN5OworICAgICptcCA9IGhvc3RfbXNyX3BvbGljeTsKIAogICAgIC8qIEl0J3MgYWx3YXlzIHBv c3NpYmxlIHRvIGVtdWxhdGUgQ1BVSUQgZmF1bHRpbmcgZm9yIEhWTSBndWVzdHMgKi8KLSAgICBk cC0+cGxhZm9ybV9pbmZvLmNwdWlkX2ZhdWx0aW5nID0gdHJ1ZTsKKyAgICBtcC0+cGxhZm9ybV9p bmZvLmNwdWlkX2ZhdWx0aW5nID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgX19pbml0IGNhbGN1 bGF0ZV9wdl9tYXhfcG9saWN5KHZvaWQpCiB7Ci0gICAgc3RydWN0IG1zcl9kb21haW5fcG9saWN5 ICpkcCA9ICZwdl9tYXhfbXNyX2RvbWFpbl9wb2xpY3k7CisgICAgc3RydWN0IG1zcl9wb2xpY3kg Km1wID0gJnB2X21heF9tc3JfcG9saWN5OwogCi0gICAgKmRwID0gaG9zdF9tc3JfZG9tYWluX3Bv bGljeTsKKyAgICAqbXAgPSBob3N0X21zcl9wb2xpY3k7CiB9CiAKIHZvaWQgX19pbml0IGluaXRf Z3Vlc3RfbXNyX3BvbGljeSh2b2lkKQpAQCAtODEsMTggKzgxLDE4IEBAIHZvaWQgX19pbml0IGlu aXRfZ3Vlc3RfbXNyX3BvbGljeSh2b2lkKQogCiBpbnQgaW5pdF9kb21haW5fbXNyX3BvbGljeShz dHJ1Y3QgZG9tYWluICpkKQogewotICAgIHN0cnVjdCBtc3JfZG9tYWluX3BvbGljeSAqZHAgPQot ICAgICAgICB4bWVtZHVwKGlzX3B2X2RvbWFpbihkKSA/ICYgcHZfbWF4X21zcl9kb21haW5fcG9s aWN5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJmh2bV9tYXhfbXNyX2RvbWFp bl9wb2xpY3kpOworICAgIHN0cnVjdCBtc3JfcG9saWN5ICptcCA9CisgICAgICAgIHhtZW1kdXAo aXNfcHZfZG9tYWluKGQpID8gJiBwdl9tYXhfbXNyX3BvbGljeQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6ICZodm1fbWF4X21zcl9wb2xpY3kpOwogCi0gICAgaWYgKCAhZHAgKQor ICAgIGlmICggIW1wICkKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAKICAgICAvKiBTZWUgY29t bWVudCBpbiBpbnRlbF9jdHh0X3N3aXRjaF9sZXZlbGxpbmcoKSAqLwogICAgIGlmICggaXNfY29u dHJvbF9kb21haW4oZCkgKQotICAgICAgICBkcC0+cGxhZm9ybV9pbmZvLmNwdWlkX2ZhdWx0aW5n ID0gZmFsc2U7CisgICAgICAgIG1wLT5wbGFmb3JtX2luZm8uY3B1aWRfZmF1bHRpbmcgPSBmYWxz ZTsKIAotICAgIGQtPmFyY2gubXNyID0gZHA7CisgICAgZC0+YXJjaC5tc3IgPSBtcDsKIAogICAg IHJldHVybiAwOwogfQpAQCAtMTAwLDE0ICsxMDAsMTQgQEAgaW50IGluaXRfZG9tYWluX21zcl9w b2xpY3koc3RydWN0IGRvbWFpbiAqZCkKIGludCBpbml0X3ZjcHVfbXNyX3BvbGljeShzdHJ1Y3Qg dmNwdSAqdikKIHsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwotICAgIHN0cnVj dCBtc3JfdmNwdV9wb2xpY3kgKnZwID0KLSAgICAgICAgeG1lbWR1cChpc19wdl9kb21haW4oZCkg PyAmIHB2X21heF9tc3JfdmNwdV9wb2xpY3kKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOiAmaHZtX21heF9tc3JfdmNwdV9wb2xpY3kpOworICAgIHN0cnVjdCB2Y3B1X21zcnMgKm1z cnMgPQorICAgICAgICB4bWVtZHVwKGlzX3B2X2RvbWFpbihkKSA/ICYgcHZfbWF4X3ZjcHVfbXNy cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICZodm1fbWF4X3ZjcHVfbXNycyk7 CiAKLSAgICBpZiAoICF2cCApCisgICAgaWYgKCAhbXNycyApCiAgICAgICAgIHJldHVybiAtRU5P TUVNOwogCi0gICAgdi0+YXJjaC5tc3IgPSB2cDsKKyAgICB2LT5hcmNoLm1zcnMgPSBtc3JzOwog CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xMTUsOCArMTE1LDggQEAgaW50IGluaXRfdmNwdV9tc3Jf cG9saWN5KHN0cnVjdCB2Y3B1ICp2KQogaW50IGd1ZXN0X3JkbXNyKGNvbnN0IHN0cnVjdCB2Y3B1 ICp2LCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90ICp2YWwpCiB7CiAgICAgY29uc3Qgc3RydWN0IGNw dWlkX3BvbGljeSAqY3AgPSB2LT5kb21haW4tPmFyY2guY3B1aWQ7Ci0gICAgY29uc3Qgc3RydWN0 IG1zcl9kb21haW5fcG9saWN5ICpkcCA9IHYtPmRvbWFpbi0+YXJjaC5tc3I7Ci0gICAgY29uc3Qg c3RydWN0IG1zcl92Y3B1X3BvbGljeSAqdnAgPSB2LT5hcmNoLm1zcjsKKyAgICBjb25zdCBzdHJ1 Y3QgbXNyX3BvbGljeSAqbXAgPSB2LT5kb21haW4tPmFyY2gubXNyOworICAgIGNvbnN0IHN0cnVj dCB2Y3B1X21zcnMgKm1zcnMgPSB2LT5hcmNoLm1zcnM7CiAKICAgICBzd2l0Y2ggKCBtc3IgKQog ICAgIHsKQEAgLTEyOSwxMSArMTI5LDExIEBAIGludCBndWVzdF9yZG1zcihjb25zdCBzdHJ1Y3Qg dmNwdSAqdiwgdWludDMyX3QgbXNyLCB1aW50NjRfdCAqdmFsKQogICAgIGNhc2UgTVNSX1NQRUNf Q1RSTDoKICAgICAgICAgaWYgKCAhY3AtPmZlYXQuaWJyc2IgKQogICAgICAgICAgICAgZ290byBn cF9mYXVsdDsKLSAgICAgICAgKnZhbCA9IHZwLT5zcGVjX2N0cmwucmF3OworICAgICAgICAqdmFs ID0gbXNycy0+c3BlY19jdHJsLnJhdzsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1TUl9J TlRFTF9QTEFURk9STV9JTkZPOgotICAgICAgICAqdmFsID0gZHAtPnBsYWZvcm1faW5mby5yYXc7 CisgICAgICAgICp2YWwgPSBtcC0+cGxhZm9ybV9pbmZvLnJhdzsKICAgICAgICAgYnJlYWs7CiAK ICAgICBjYXNlIE1TUl9BUkNIX0NBUEFCSUxJVElFUzoKQEAgLTE0MSw3ICsxNDEsNyBAQCBpbnQg Z3Vlc3RfcmRtc3IoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IG1zciwgdWludDY0X3Qg KnZhbCkKICAgICAgICAgZ290byBncF9mYXVsdDsKIAogICAgIGNhc2UgTVNSX0lOVEVMX01JU0Nf RkVBVFVSRVNfRU5BQkxFUzoKLSAgICAgICAgKnZhbCA9IHZwLT5taXNjX2ZlYXR1cmVzX2VuYWJs ZXMucmF3OworICAgICAgICAqdmFsID0gbXNycy0+bWlzY19mZWF0dXJlc19lbmFibGVzLnJhdzsK ICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgpAQCAtMTU5LDggKzE1OSw4IEBAIGludCBn dWVzdF93cm1zcihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbXNyLCB1aW50NjRfdCB2YWwpCiAg ICAgY29uc3Qgc3RydWN0IHZjcHUgKmN1cnIgPSBjdXJyZW50OwogICAgIHN0cnVjdCBkb21haW4g KmQgPSB2LT5kb21haW47CiAgICAgY29uc3Qgc3RydWN0IGNwdWlkX3BvbGljeSAqY3AgPSBkLT5h cmNoLmNwdWlkOwotICAgIHN0cnVjdCBtc3JfZG9tYWluX3BvbGljeSAqZHAgPSBkLT5hcmNoLm1z cjsKLSAgICBzdHJ1Y3QgbXNyX3ZjcHVfcG9saWN5ICp2cCA9IHYtPmFyY2gubXNyOworICAgIGNv bnN0IHN0cnVjdCBtc3JfcG9saWN5ICptcCA9IGQtPmFyY2gubXNyOworICAgIHN0cnVjdCB2Y3B1 X21zcnMgKm1zcnMgPSB2LT5hcmNoLm1zcnM7CiAKICAgICBzd2l0Y2ggKCBtc3IgKQogICAgIHsK QEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQgZ3Vlc3Rfd3Jtc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQz Ml90IG1zciwgdWludDY0X3QgdmFsKQogICAgICAgICBpZiAoIHZhbCAmIHJzdmQgKQogICAgICAg ICAgICAgZ290byBncF9mYXVsdDsgLyogUnN2ZCBiaXQgc2V0PyAqLwogCi0gICAgICAgIHZwLT5z cGVjX2N0cmwucmF3ID0gdmFsOworICAgICAgICBtc3JzLT5zcGVjX2N0cmwucmF3ID0gdmFsOwog ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTVNSX1BSRURfQ01EOgpAQCAtMjIzLDE5ICsyMjMs MTkgQEAgaW50IGd1ZXN0X3dybXNyKHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBtc3IsIHVpbnQ2 NF90IHZhbCkKIAogICAgIGNhc2UgTVNSX0lOVEVMX01JU0NfRkVBVFVSRVNfRU5BQkxFUzoKICAg ICB7Ci0gICAgICAgIGJvb2wgb2xkX2NwdWlkX2ZhdWx0aW5nID0gdnAtPm1pc2NfZmVhdHVyZXNf ZW5hYmxlcy5jcHVpZF9mYXVsdGluZzsKKyAgICAgICAgYm9vbCBvbGRfY3B1aWRfZmF1bHRpbmcg PSBtc3JzLT5taXNjX2ZlYXR1cmVzX2VuYWJsZXMuY3B1aWRfZmF1bHRpbmc7CiAKICAgICAgICAg cnN2ZCA9IH4wdWxsOwotICAgICAgICBpZiAoIGRwLT5wbGFmb3JtX2luZm8uY3B1aWRfZmF1bHRp bmcgKQorICAgICAgICBpZiAoIG1wLT5wbGFmb3JtX2luZm8uY3B1aWRfZmF1bHRpbmcgKQogICAg ICAgICAgICAgcnN2ZCAmPSB+TVNSX01JU0NfRkVBVFVSRVNfQ1BVSURfRkFVTFRJTkc7CiAKICAg ICAgICAgaWYgKCB2YWwgJiByc3ZkICkKICAgICAgICAgICAgIGdvdG8gZ3BfZmF1bHQ7CiAKLSAg ICAgICAgdnAtPm1pc2NfZmVhdHVyZXNfZW5hYmxlcy5yYXcgPSB2YWw7CisgICAgICAgIG1zcnMt Pm1pc2NfZmVhdHVyZXNfZW5hYmxlcy5yYXcgPSB2YWw7CiAKICAgICAgICAgaWYgKCB2ID09IGN1 cnIgJiYgaXNfaHZtX2RvbWFpbihkKSAmJiBjcHVfaGFzX2NwdWlkX2ZhdWx0aW5nICYmCi0gICAg ICAgICAgICAgKG9sZF9jcHVpZF9mYXVsdGluZyBeIHZwLT5taXNjX2ZlYXR1cmVzX2VuYWJsZXMu Y3B1aWRfZmF1bHRpbmcpICkKKyAgICAgICAgICAgICAob2xkX2NwdWlkX2ZhdWx0aW5nIF4gbXNy cy0+bWlzY19mZWF0dXJlc19lbmFibGVzLmNwdWlkX2ZhdWx0aW5nKSApCiAgICAgICAgICAgICBj dHh0X3N3aXRjaF9sZXZlbGxpbmcodik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLWludi1vcC5jIGIveGVuL2FyY2gveDg2L3B2L2VtdWwt aW52LW9wLmMKaW5kZXggYmU5NWE1Zi4uNTZmNWE0NSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L3B2L2VtdWwtaW52LW9wLmMKKysrIGIveGVuL2FyY2gveDg2L3B2L2VtdWwtaW52LW9wLmMKQEAg LTcxLDcgKzcxLDcgQEAgc3RhdGljIGludCBlbXVsYXRlX2ZvcmNlZF9pbnZhbGlkX29wKHN0cnVj dCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIGNoYXIgc2lnWzVdLCBpbnN0clsyXTsKICAgICB1 bnNpZ25lZCBsb25nIGVpcCwgcmM7CiAgICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOwotICAgIGNv bnN0IHN0cnVjdCBtc3JfdmNwdV9wb2xpY3kgKnZwID0gY3VycmVudC0+YXJjaC5tc3I7CisgICAg Y29uc3Qgc3RydWN0IHZjcHVfbXNycyAqbXNycyA9IGN1cnJlbnQtPmFyY2gubXNyczsKIAogICAg IGVpcCA9IHJlZ3MtPnJpcDsKIApAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgaW50IGVtdWxhdGVf Zm9yY2VkX2ludmFsaWRfb3Aoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICAgIHJl dHVybiAwOwogCiAgICAgLyogSWYgY3B1aWQgZmF1bHRpbmcgaXMgZW5hYmxlZCBhbmQgQ1BMPjAg aW5qZWN0IGEgI0dQIGluIHBsYWNlIG9mICNVRC4gKi8KLSAgICBpZiAoIHZwLT5taXNjX2ZlYXR1 cmVzX2VuYWJsZXMuY3B1aWRfZmF1bHRpbmcgJiYKKyAgICBpZiAoIG1zcnMtPm1pc2NfZmVhdHVy ZXNfZW5hYmxlcy5jcHVpZF9mYXVsdGluZyAmJgogICAgICAgICAgIWd1ZXN0X2tlcm5lbF9tb2Rl KGN1cnJlbnQsIHJlZ3MpICkKICAgICB7CiAgICAgICAgIHJlZ3MtPnJpcCA9IGVpcDsKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYyBiL3hlbi9hcmNoL3g4Ni94 ODZfNjQvYXNtLW9mZnNldHMuYwppbmRleCA5MzRhOGFhLi4xODA3N2FmIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82 NC9hc20tb2Zmc2V0cy5jCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgX19kdW1teV9fKHZvaWQpCiAg ICAgT0ZGU0VUKFZDUFVfaW9wbCwgc3RydWN0IHZjcHUsIGFyY2gucHZfdmNwdS5pb3BsKTsKICAg ICBPRkZTRVQoVkNQVV9ndWVzdF9jb250ZXh0X2ZsYWdzLCBzdHJ1Y3QgdmNwdSwgYXJjaC52Z2Nf ZmxhZ3MpOwogICAgIE9GRlNFVChWQ1BVX2NyMywgc3RydWN0IHZjcHUsIGFyY2guY3IzKTsKLSAg ICBPRkZTRVQoVkNQVV9hcmNoX21zciwgc3RydWN0IHZjcHUsIGFyY2gubXNyKTsKKyAgICBPRkZT RVQoVkNQVV9hcmNoX21zcnMsIHN0cnVjdCB2Y3B1LCBhcmNoLm1zcnMpOwogICAgIE9GRlNFVChW Q1BVX25taV9wZW5kaW5nLCBzdHJ1Y3QgdmNwdSwgbm1pX3BlbmRpbmcpOwogICAgIE9GRlNFVChW Q1BVX21jZV9wZW5kaW5nLCBzdHJ1Y3QgdmNwdSwgbWNlX3BlbmRpbmcpOwogICAgIE9GRlNFVChW Q1BVX25taV9vbGRfbWFzaywgc3RydWN0IHZjcHUsIG5taV9zdGF0ZS5vbGRfbWFzayk7CkBAIC0x MzksNyArMTM5LDcgQEAgdm9pZCBfX2R1bW15X18odm9pZCkKICAgICBPRkZTRVQoVFJBUEJPVU5D RV9laXAsIHN0cnVjdCB0cmFwX2JvdW5jZSwgZWlwKTsKICAgICBCTEFOSygpOwogCi0gICAgT0ZG U0VUKFZDUFVNU1Jfc3BlY19jdHJsX3Jhdywgc3RydWN0IG1zcl92Y3B1X3BvbGljeSwgc3BlY19j dHJsLnJhdyk7CisgICAgT0ZGU0VUKFZDUFVNU1Jfc3BlY19jdHJsX3Jhdywgc3RydWN0IHZjcHVf bXNycywgc3BlY19jdHJsLnJhdyk7CiAgICAgQkxBTksoKTsKIAogI2lmZGVmIENPTkZJR19QRVJG X0NPVU5URVJTCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5T IGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvZW50cnkuUwppbmRleCBkNzM3NTgzLi5jMjNh ZDdhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5TCisrKyBi L3hlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMKQEAgLTE1NCw3ICsxNTQsNyBAQCBF TlRSWShjb21wYXRfcmVzdG9yZV9hbGxfZ3Vlc3QpCiAgICAgICAgIG9yICAgICRYODZfRUZMQUdT X0lGLCVyMTEKICAgICAgICAgbW92ICAgJXIxMWQsVVJFR1NfZWZsYWdzKCVyc3ApCiAKLSAgICAg ICAgbW92IFZDUFVfYXJjaF9tc3IoJXJieCksICVyYXgKKyAgICAgICAgbW92IFZDUFVfYXJjaF9t c3JzKCVyYngpLCAlcmF4CiAgICAgICAgIG1vdiBWQ1BVTVNSX3NwZWNfY3RybF9yYXcoJXJheCks ICVlYXgKIAogICAgICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90 IHNhZmUgYmV5b25kIHRoaXMgcG9pbnQuICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2 XzY0L2VudHJ5LlMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMKaW5kZXggZTVjOWVmMS4u ZDYzMTBmMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TCisrKyBiL3hl bi9hcmNoL3g4Ni94ODZfNjQvZW50cnkuUwpAQCAtMTM3LDcgKzEzNyw3IEBAIHJlc3RvcmVfYWxs X2d1ZXN0OgogICAgICAgICBBU1NFUlRfSU5URVJSVVBUU19ESVNBQkxFRAogCiAgICAgICAgIC8q IFN0YXNoIGd1ZXN0IFNQRUNfQ1RSTCB2YWx1ZSB3aGlsZSB3ZSBjYW4gcmVhZCBzdHJ1Y3QgdmNw dS4gKi8KLSAgICAgICAgbW92IFZDUFVfYXJjaF9tc3IoJXJieCksICVyZHgKKyAgICAgICAgbW92 IFZDUFVfYXJjaF9tc3JzKCVyYngpLCAlcmR4CiAgICAgICAgIG1vdiBWQ1BVTVNSX3NwZWNfY3Ry bF9yYXcoJXJkeCksICVyMTVkCiAKICAgICAgICAgLyogQ29weSBndWVzdCBtYXBwaW5ncyBhbmQg c3dpdGNoIHRvIHBlci1DUFUgcm9vdCBwYWdlIHRhYmxlLiAqLwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9kb21haW4uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKaW5k ZXggNWE2MzMyYy4uZTI0NDJmNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21h aW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oCkBAIC0zNjcsNyArMzY3LDcg QEAgc3RydWN0IGFyY2hfZG9tYWluCiAKICAgICAvKiBDUFVJRCBhbmQgTVNSIHBvbGljeSBvYmpl Y3RzLiAqLwogICAgIHN0cnVjdCBjcHVpZF9wb2xpY3kgKmNwdWlkOwotICAgIHN0cnVjdCBtc3Jf ZG9tYWluX3BvbGljeSAqbXNyOworICAgIHN0cnVjdCBtc3JfcG9saWN5ICptc3I7CiAKICAgICBz dHJ1Y3QgUElUU3RhdGUgdnBpdDsKIApAQCAtNTgyLDcgKzU4Miw3IEBAIHN0cnVjdCBhcmNoX3Zj cHUKIAogICAgIHN0cnVjdCBhcmNoX3ZtX2V2ZW50ICp2bV9ldmVudDsKIAotICAgIHN0cnVjdCBt c3JfdmNwdV9wb2xpY3kgKm1zcjsKKyAgICBzdHJ1Y3QgdmNwdV9tc3JzICptc3JzOwogCiAgICAg c3RydWN0IHsKICAgICAgICAgYm9vbCBuZXh0X2ludGVycnVwdF9lbmFibGVkOwpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLmgK aW5kZXggZDQwNjRmNC4uM2EyYzc5OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9t c3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L21zci5oCkBAIC0yNTgsNyArMjU4LDcgQEAg c3RhdGljIGlubGluZSB2b2lkIHdybXNyX3RzY19hdXgodWludDMyX3QgdmFsKQogfQogCiAvKiBN U1IgcG9saWN5IG9iamVjdCBmb3Igc2hhcmVkIHBlci1kb21haW4gTVNScyAqLwotc3RydWN0IG1z cl9kb21haW5fcG9saWN5CitzdHJ1Y3QgbXNyX3BvbGljeQogewogICAgIC8qCiAgICAgICogMHgw MDAwMDBjZSAtIE1TUl9JTlRFTF9QTEFURk9STV9JTkZPCkBAIC0yNzcsMTYgKzI3NywxMyBAQCBz dHJ1Y3QgbXNyX2RvbWFpbl9wb2xpY3kKICAgICB9IHBsYWZvcm1faW5mbzsKIH07CiAKLS8qIFJB VyBtc3IgZG9tYWluIHBvbGljeTogY29udGFpbnMgdGhlIGFjdHVhbCB2YWx1ZXMgZnJvbSBIL1cg TVNScyAqLwotZXh0ZXJuIHN0cnVjdCBtc3JfZG9tYWluX3BvbGljeSByYXdfbXNyX2RvbWFpbl9w b2xpY3k7Ci0vKgotICogSE9TVCBtc3IgZG9tYWluIHBvbGljeTogZmVhdHVyZXMgdGhhdCBYZW4g YWN0dWFsbHkgZGVjaWRlZCB0byB1c2UsCi0gKiBhIHN1YnNldCBvZiBSQVcgcG9saWN5LgotICov Ci1leHRlcm4gc3RydWN0IG1zcl9kb21haW5fcG9saWN5IGhvc3RfbXNyX2RvbWFpbl9wb2xpY3k7 CitleHRlcm4gc3RydWN0IG1zcl9wb2xpY3kgICAgIHJhd19tc3JfcG9saWN5LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhvc3RfbXNyX3BvbGljeSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICBodm1fbWF4X21zcl9wb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB2X21h eF9tc3JfcG9saWN5OwogCi0vKiBNU1IgcG9saWN5IG9iamVjdCBmb3IgcGVyLXZDUFUgTVNScyAq Lwotc3RydWN0IG1zcl92Y3B1X3BvbGljeQorLyogQ29udGFpbmVyIG9iamVjdCBmb3IgcGVyLXZD UFUgTVNScyAqLworc3RydWN0IHZjcHVfbXNycwogewogICAgIC8qIDB4MDAwMDAwNDggLSBNU1Jf U1BFQ19DVFJMICovCiAgICAgc3RydWN0IHsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvc3BlY19jdHJsX2FzbS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9zcGVjX2N0cmxfYXNtLmgK aW5kZXggZWRhY2UyYS4uNjg2YTBmNyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9z cGVjX2N0cmxfYXNtLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9zcGVjX2N0cmxfYXNtLmgK QEAgLTEzMyw3ICsxMzMsNyBAQAogICAgIHJkbXNyCiAKICAgICAvKiBTdGFzaCB0aGUgdmFsdWUg ZnJvbSBoYXJkd2FyZS4gKi8KLSAgICBtb3YgVkNQVV9hcmNoX21zciglcmJ4KSwgJXJkeAorICAg IG1vdiBWQ1BVX2FyY2hfbXNycyglcmJ4KSwgJXJkeAogICAgIG1vdiAlZWF4LCBWQ1BVTVNSX3Nw ZWNfY3RybF9yYXcoJXJkeCkKICAgICB4b3IgJWVkeCwgJWVkeAogCi0tIAoyLjEuNAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=