From mboxrd@z Thu Jan 1 00:00:00 1970 From: Euan Harris Subject: [PATCH 7/9] x86/vvmx: Use correct sizes when reading operands Date: Thu, 26 Oct 2017 18:03:17 +0100 Message-ID: <1509037399-48926-8-git-send-email-euan.harris@citrix.com> References: <1509037399-48926-1-git-send-email-euan.harris@citrix.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 1e7lZi-0002kL-3o for xen-devel@lists.xenproject.org; Thu, 26 Oct 2017 17:04:10 +0000 In-Reply-To: <1509037399-48926-1-git-send-email-euan.harris@citrix.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: andrew.cooper3@citrix.com, kevin.tian@intel.com, Euan Harris , jun.nakajima@intel.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org VGhlIHNpemVzIG9mIFZNWCBvcGVyYW5kcyBhcmUgZGVmaW5lZCBpbiB0aGUgSW50ZWwgU0RNIGFu ZCBoYXZlIG5vdGhpbmcKdG8gZG8gd2l0aCB0aGUgYWRkcl9zaXplIGZpZWxkIG9mIHN0cnVjdCB2 bXhfaW5zdF9pbmZvOgoKICAgIGludmVwdDogICByMzIvcjY0LCBtMTI4CiAgICBpbnZ2cGlkOiAg cjMyL3I2NCwgbTEyOAogICAgdm1jbGVhcjogIG02NAogICAgdm1wdHJsZDogIG02NAogICAgdm1w dHJzdDogIG02NAogICAgdm1yZWFkOiAgIHIzMi82NCBvciBtMzIvNjQsIHIzMi82NAogICAgdm13 cml0ZTogIHIzMi9yNjQsIHIzMi82NCBvciBtMzIvNjQKICAgIHZtb246ICAgICBtNjQKCiogUmVn aXN0ZXIgb3BlcmFuZHMgYXJlIDMyLWJpdCBvciA2NC1iaXQgZGVwZW5kaW5nIG9uIHRoZSBndWVz dCBtb2RlLgoKKiBNZW1vcnkgb3BlcmFuZHMgYXJlIGFsbW9zdCBhbHdheXMgb2YgZml4ZWQgc2l6 ZSwgdXN1YWxseSA2NC1iaXQsIGJ1dAogIGZvciB2bXJlYWQgYW5kIHZtd3JpdGUgdGhlaXIgc2l6 ZSBkZXBlbmRzIG9uIHRoZSBndWVzdCBtb2RlLgoKKiBpbnZlcHQgaGFzIGEgMTI4LWJpdCBtZW1v cnkgb3BlcmFuZCBidXQgdGhlIHVwcGVyIDY0IGJpdHMgYXJlIHJlc2VydmVkCiAgYW5kIHRoZXJl Zm9yZSBuZWVkIG5vdCBiZSByZWFkLgoKKiBpbnZ2cGlkIGhhcyBhIDEyOC1iaXQgbWVtb3J5IG9w ZXJhbmQgYnV0IHdlIG9ubHkgcmVxdWlyZSB0aGUgVlBJRCB2YWx1ZQogIHdoaWNoIGxpZXMgaW4g dGhlIGxvd2VyIDY0IGJpdHMuCgpXaGVuIHJlYWRpbmcgdmFyaWFibGUtc2l6ZSBvcGVyYW5kcywg d2UgcGFzcyB0aGUgb3BlcmFuZCBzaXplIGNhbGN1bGF0ZWQKYnkgZGVjb2RlX3ZteF9pbnN0KCkg YW5kIHN0b3JlZCBpbiBzdHJjdXQgdm14X2luc3Rfb3AuICAgV2hlbiByZWFkaW5nCmZpeGVkLXNp emUgb3BlcmFuZHMsIHdlIHBhc3MgdGhlIHNpemUgb2YgdGhlIHZhcmlhYmxlIGludG8gd2hpY2gg dGhlCm9wZXJhbmQgaXMgdG8gYmUgcmVhZC4KClNpZ25lZC1vZmYtYnk6IEV1YW4gSGFycmlzIDxl dWFuLmhhcnJpc0BjaXRyaXguY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYyB8 IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXgu YwppbmRleCBmYzIxMjNjN2MwLi45YTRlNjE3N2FkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv aHZtL3ZteC92dm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCkBAIC0xOTcs MTEgKzE5Nyw5IEBAIHN0cnVjdCB2bXhfaW5zdF9kZWNvZGVkIHsKICNkZWZpbmUgVk1YX0lOU1Rf TUVNUkVHX1RZUEVfUkVHICAgIDEKICAgICBzdHJ1Y3Qgdm14X2luc3Rfb3AgewogICAgICAgICBp bnQgdHlwZTsKKyAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzOwogICAgICAgICB1bmlvbiB7Ci0g ICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWVtOwot ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgbGVuOwotICAgICAgICAgICAgfTsKKyAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbWVtOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ19p ZHg7CiAgICAgICAgIH07CiAgICAgfSBvcFsyXTsKQEAgLTQ2NCw2ICs0NjIsOCBAQCBzdGF0aWMg aW50IGRlY29kZV92bXhfaW5zdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKICAgICB1bnNp Z25lZCBsb25nIGJhc2UsIGluZGV4LCBzZWdfYmFzZSwgZGlzcCwgb2Zmc2V0OwogICAgIGludCBz Y2FsZSwgc2l6ZTsKIAorICAgIHVuc2lnbmVkIGludCBieXRlcyA9IHZteF9ndWVzdF94ODZfbW9k ZSh2KTsKKwogICAgIGlmICggdm14X2luc3RfY2hlY2tfcHJpdmlsZWdlKHJlZ3MsIHZteG9uX2No ZWNrKSAhPSBYODZFTVVMX09LQVkgKQogICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047 CiAKQEAgLTQ3MywxMCArNDczLDExIEBAIHN0YXRpYyBpbnQgZGVjb2RlX3ZteF9pbnN0KHN0cnVj dCBjcHVfdXNlcl9yZWdzICpyZWdzLAogICAgIGlmICggaW5mby5maWVsZHMubWVtcmVnICkgewog ICAgICAgICBkZWNvZGUtPm9wWzBdLnR5cGUgPSBWTVhfSU5TVF9NRU1SRUdfVFlQRV9SRUc7CiAg ICAgICAgIGRlY29kZS0+b3BbMF0ucmVnX2lkeCA9IGluZm8uZmllbGRzLnJlZzE7CisgICAgICAg IGRlY29kZS0+b3BbMF0uYnl0ZXMgPSBieXRlczsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAg ICAgICAgYm9vbCBtb2RlXzY0Yml0ID0gKHZteF9ndWVzdF94ODZfbW9kZSh2KSA9PSA4KTsKKyAg ICAgICAgYm9vbCBtb2RlXzY0Yml0ID0gKGJ5dGVzID09IDgpOwogCiAgICAgICAgIGRlY29kZS0+ b3BbMF0udHlwZSA9IFZNWF9JTlNUX01FTVJFR19UWVBFX01FTU9SWTsKIApAQCAtNTA4LDExICs1 MDksMTIgQEAgc3RhdGljIGludCBkZWNvZGVfdm14X2luc3Qoc3RydWN0IGNwdV91c2VyX3JlZ3Mg KnJlZ3MsCiAgICAgICAgICAgICBnb3RvIGdwX2ZhdWx0OwogCiAgICAgICAgIGRlY29kZS0+b3Bb MF0ubWVtID0gYmFzZTsKLSAgICAgICAgZGVjb2RlLT5vcFswXS5sZW4gPSBzaXplOworICAgICAg ICBkZWNvZGUtPm9wWzBdLmJ5dGVzID0gYnl0ZXM7CiAgICAgfQogCiAgICAgZGVjb2RlLT5vcFsx XS50eXBlID0gVk1YX0lOU1RfTUVNUkVHX1RZUEVfUkVHOwogICAgIGRlY29kZS0+b3BbMV0ucmVn X2lkeCA9IGluZm8uZmllbGRzLnJlZzI7CisgICAgZGVjb2RlLT5vcFsxXS5ieXRlcyA9IGJ5dGVz OwogCiAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKIApAQCAtMTQ5NCw3ICsxNDk2LDcgQEAgaW50 IG52bXhfaGFuZGxlX3ZteG9uKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIHN0cnVj dCBuZXN0ZWR2bXggKm52bXggPSAmdmNwdV8yX252bXgodik7CiAgICAgc3RydWN0IG5lc3RlZHZj cHUgKm52Y3B1ID0gJnZjcHVfbmVzdGVkaHZtKHYpOwogICAgIHN0cnVjdCB2bXhfaW5zdF9kZWNv ZGVkIGRlY29kZTsKLSAgICB1bnNpZ25lZCBsb25nIGdwYSA9IDA7CisgICAgdWludDY0X3QgZ3Bh OwogICAgIHVpbnQzMl90IG52bWNzX3JldmlkOwogICAgIGludCByYzsKIApAQCAtMTUwMiw3ICsx NTA0LDcgQEAgaW50IG52bXhfaGFuZGxlX3ZteG9uKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdz KQogICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgcmV0dXJuIHJjOwogCi0g ICAgcmMgPSBvcGVyYW5kX3JlYWQoJmdwYSwgJmRlY29kZS5vcFswXSwgcmVncywgZGVjb2RlLm9w WzBdLmxlbik7CisgICAgcmMgPSBvcGVyYW5kX3JlYWQoJmdwYSwgJmRlY29kZS5vcFswXSwgcmVn cywgc2l6ZW9mKGdwYSkpOwogICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAg cmV0dXJuIHJjOwogCkBAIC0xNzE1LDE0ICsxNzE3LDE0IEBAIGludCBudm14X2hhbmRsZV92bXB0 cmxkKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3Vy cmVudDsKICAgICBzdHJ1Y3Qgdm14X2luc3RfZGVjb2RlZCBkZWNvZGU7CiAgICAgc3RydWN0IG5l c3RlZHZjcHUgKm52Y3B1ID0gJnZjcHVfbmVzdGVkaHZtKHYpOwotICAgIHVuc2lnbmVkIGxvbmcg Z3BhID0gMDsKKyAgICB1aW50NjRfdCBncGE7CiAgICAgaW50IHJjOwogCiAgICAgcmMgPSBkZWNv ZGVfdm14X2luc3QocmVncywgJmRlY29kZSwgMCk7CiAgICAgaWYgKCByYyAhPSBYODZFTVVMX09L QVkgKQogICAgICAgICByZXR1cm4gcmM7CiAKLSAgICByYyA9IG9wZXJhbmRfcmVhZCgmZ3BhLCAm ZGVjb2RlLm9wWzBdLCByZWdzLCBkZWNvZGUub3BbMF0ubGVuKTsKKyAgICByYyA9IG9wZXJhbmRf cmVhZCgmZ3BhLCAmZGVjb2RlLm9wWzBdLCByZWdzLCBzaXplb2YoZ3BhKSk7CiAgICAgaWYgKCBy YyAhPSBYODZFTVVMX09LQVkgKQogICAgICAgICByZXR1cm4gcmM7CiAKQEAgLTE4MDEsNyArMTgw Myw3IEBAIGludCBudm14X2hhbmRsZV92bXB0cnN0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdz KQogICAgIGdwYSA9IG52Y3B1LT5udl92dm1jeGFkZHI7CiAKICAgICByYyA9IGh2bV9jb3B5X3Rv X2d1ZXN0X2xpbmVhcihkZWNvZGUub3BbMF0ubWVtLCAmZ3BhLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlY29kZS5vcFswXS5sZW4sIDAsICZwZmluZm8pOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZS5vcFswXS5ieXRlcywgMCwgJnBmaW5mbyk7 CiAgICAgaWYgKCByYyA9PSBIVk1UUkFOU19iYWRfbGluZWFyX3RvX2dmbiApCiAgICAgICAgIGh2 bV9pbmplY3RfcGFnZV9mYXVsdChwZmluZm8uZWMsIHBmaW5mby5saW5lYXIpOwogICAgIGlmICgg cmMgIT0gSFZNVFJBTlNfb2theSApCkBAIC0xODE3LDcgKzE4MTksNyBAQCBpbnQgbnZteF9oYW5k bGVfdm1jbGVhcihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICBzdHJ1Y3Qgdm14X2lu c3RfZGVjb2RlZCBkZWNvZGU7CiAgICAgc3RydWN0IG5lc3RlZHZjcHUgKm52Y3B1ID0gJnZjcHVf bmVzdGVkaHZtKHYpOwogICAgIHN0cnVjdCBuZXN0ZWR2bXggKm52bXggPSAmdmNwdV8yX252bXgo dik7Ci0gICAgdW5zaWduZWQgbG9uZyBncGEgPSAwOworICAgIHVpbnQ2NF90IGdwYTsKICAgICB2 b2lkICp2dm1jczsKICAgICBpbnQgcmM7CiAKQEAgLTE4MjUsNyArMTgyNyw3IEBAIGludCBudm14 X2hhbmRsZV92bWNsZWFyKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIGlmICggcmMg IT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgcmV0dXJuIHJjOwogCi0gICAgcmMgPSBvcGVyYW5k X3JlYWQoJmdwYSwgJmRlY29kZS5vcFswXSwgcmVncywgZGVjb2RlLm9wWzBdLmxlbik7CisgICAg cmMgPSBvcGVyYW5kX3JlYWQoJmdwYSwgJmRlY29kZS5vcFswXSwgcmVncywgc2l6ZW9mKGdwYSkp OwogICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgcmV0dXJuIHJjOwogCkBA IC0xODg2LDcgKzE4ODgsNyBAQCBpbnQgbnZteF9oYW5kbGVfdm1yZWFkKHN0cnVjdCBjcHVfdXNl cl9yZWdzICpyZWdzKQogICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogICAgIH0KIAotICAg IHJjID0gb3BlcmFuZF9yZWFkKCZ2bWNzX2VuY29kaW5nLCAmZGVjb2RlLm9wWzFdLCByZWdzLCBk ZWNvZGUub3BbMV0ubGVuKTsKKyAgICByYyA9IG9wZXJhbmRfcmVhZCgmdm1jc19lbmNvZGluZywg JmRlY29kZS5vcFsxXSwgcmVncywgZGVjb2RlLm9wWzFdLmJ5dGVzKTsKICAgICBpZiAoIHJjICE9 IFg4NkVNVUxfT0tBWSApCiAgICAgICAgIHJldHVybiByYzsKIApAQCAtMTkwMCw3ICsxOTAyLDcg QEAgaW50IG52bXhfaGFuZGxlX3ZtcmVhZChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAg ICBzd2l0Y2ggKCBkZWNvZGUub3BbMF0udHlwZSApIHsKICAgICBjYXNlIFZNWF9JTlNUX01FTVJF R19UWVBFX01FTU9SWToKICAgICAgICAgcmMgPSBodm1fY29weV90b19ndWVzdF9saW5lYXIoZGVj b2RlLm9wWzBdLm1lbSwgJnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZWNvZGUub3BbMF0ubGVuLCAwLCAmcGZpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGVjb2RlLm9wWzBdLmJ5dGVzLCAwLCAmcGZpbmZvKTsKICAgICAg ICAgaWYgKCByYyA9PSBIVk1UUkFOU19iYWRfbGluZWFyX3RvX2dmbiApCiAgICAgICAgICAgICBo dm1faW5qZWN0X3BhZ2VfZmF1bHQocGZpbmZvLmVjLCBwZmluZm8ubGluZWFyKTsKICAgICAgICAg aWYgKCByYyAhPSBIVk1UUkFOU19va2F5ICkKQEAgLTE5MjgsNyArMTkzMCw3IEBAIGludCBudm14 X2hhbmRsZV92bXdyaXRlKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIGlmICggZGVj b2RlX3ZteF9pbnN0KHJlZ3MsICZkZWNvZGUsIDApICE9IFg4NkVNVUxfT0tBWSApCiAgICAgICAg IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKIAotICAgIHJjID0gb3BlcmFuZF9yZWFkKCZvcGVy YW5kLCAmZGVjb2RlLm9wWzBdLCByZWdzLCBkZWNvZGUub3BbMF0ubGVuKTsKKyAgICByYyA9IG9w ZXJhbmRfcmVhZCgmb3BlcmFuZCwgJmRlY29kZS5vcFswXSwgcmVncywgZGVjb2RlLm9wWzBdLmJ5 dGVzKTsKICAgICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSApCiAgICAgICAgIHJldHVybiByYzsK IApAQCAtMTkzOCw3ICsxOTQwLDcgQEAgaW50IG52bXhfaGFuZGxlX3Ztd3JpdGUoc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7CiAgICAgfQog Ci0gICAgcmMgPSBvcGVyYW5kX3JlYWQoJnZtY3NfZW5jb2RpbmcsICZkZWNvZGUub3BbMV0sIHJl Z3MsIGRlY29kZS5vcFsxXS5sZW4pOworICAgIHJjID0gb3BlcmFuZF9yZWFkKCZ2bWNzX2VuY29k aW5nLCAmZGVjb2RlLm9wWzFdLCByZWdzLCBkZWNvZGUub3BbMV0uYnl0ZXMpOwogICAgIGlmICgg cmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgcmV0dXJuIHJjOwogCkBAIC0xOTczLDEzICsx OTc1LDEzIEBAIGludCBudm14X2hhbmRsZV92bXdyaXRlKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzKQogaW50IG52bXhfaGFuZGxlX2ludmVwdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykK IHsKICAgICBzdHJ1Y3Qgdm14X2luc3RfZGVjb2RlZCBkZWNvZGU7Ci0gICAgdW5zaWduZWQgbG9u ZyBpbnZlcHRfdHlwZSA9IDA7CisgICAgdWludDY0X3QgaW52ZXB0X3R5cGU7CiAgICAgaW50IHJl dDsKIAogICAgIGlmICggKHJldCA9IGRlY29kZV92bXhfaW5zdChyZWdzLCAmZGVjb2RlLCAwKSkg IT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgcmV0dXJuIHJldDsKIAotICAgIHJldCA9IG9wZXJh bmRfcmVhZCgmaW52ZXB0X3R5cGUsICZkZWNvZGUub3BbMV0sIHJlZ3MsIGRlY29kZS5vcFsxXS5s ZW4pOworICAgIHJldCA9IG9wZXJhbmRfcmVhZCgmaW52ZXB0X3R5cGUsICZkZWNvZGUub3BbMV0s IHJlZ3MsIGRlY29kZS5vcFsxXS5ieXRlcyk7CiAgICAgaWYgKCByZXQgIT0gWDg2RU1VTF9PS0FZ ICkKICAgICAgICAgcmV0dXJuIHJldDsKIApAQCAtMTk4Nyw5ICsxOTg5LDkgQEAgaW50IG52bXhf aGFuZGxlX2ludmVwdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICB7CiAgICAgY2Fz ZSBJTlZFUFRfU0lOR0xFX0NPTlRFWFQ6CiAgICAgewotICAgICAgICB1bnNpZ25lZCBsb25nIGVw dHA7CisgICAgICAgIHVpbnQ2NF90IGVwdHA7CiAKLSAgICAgICAgcmV0ID0gb3BlcmFuZF9yZWFk KCZlcHRwLCAmZGVjb2RlLm9wWzBdLCByZWdzLCBkZWNvZGUub3BbMF0ubGVuKTsKKyAgICAgICAg cmV0ID0gb3BlcmFuZF9yZWFkKCZlcHRwLCAmZGVjb2RlLm9wWzBdLCByZWdzLCBzaXplb2YoZXB0 cCkpOwogICAgICAgICBpZiAoIHJldCApCiAgICAgICAgICAgICByZXR1cm4gcmV0OwogCkBAIC0y MDExLDEzICsyMDEzLDEzIEBAIGludCBudm14X2hhbmRsZV9pbnZlcHQoc3RydWN0IGNwdV91c2Vy X3JlZ3MgKnJlZ3MpCiBpbnQgbnZteF9oYW5kbGVfaW52dnBpZChzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncykKIHsKICAgICBzdHJ1Y3Qgdm14X2luc3RfZGVjb2RlZCBkZWNvZGU7Ci0gICAgdW5z aWduZWQgbG9uZyBpbnZ2cGlkX3R5cGUgPSAwOworICAgIHVpbnQ2NF90IGludnZwaWRfdHlwZTsK ICAgICBpbnQgcmV0OwogCiAgICAgaWYgKCAocmV0ID0gZGVjb2RlX3ZteF9pbnN0KHJlZ3MsICZk ZWNvZGUsIDApKSAhPSBYODZFTVVMX09LQVkgKQogICAgICAgICByZXR1cm4gcmV0OwogCi0gICAg cmV0ID0gb3BlcmFuZF9yZWFkKCZpbnZ2cGlkX3R5cGUsICZkZWNvZGUub3BbMV0sIHJlZ3MsIGRl Y29kZS5vcFsxXS5sZW4pOworICAgIHJldCA9IG9wZXJhbmRfcmVhZCgmaW52dnBpZF90eXBlLCAm ZGVjb2RlLm9wWzFdLCByZWdzLCBkZWNvZGUub3BbMV0uYnl0ZXMpOwogICAgIGlmICggcmV0ICE9 IFg4NkVNVUxfT0tBWSApCiAgICAgICAgIHJldHVybiByZXQ7CiAKLS0gCjIuMTMuNgoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=