From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v5 14/16] tools: implement new generic get value interface and MBA get value command Date: Sat, 30 Sep 2017 09:39:24 +0800 Message-ID: <1506735566-5706-15-git-send-email-yi.y.sun@linux.intel.com> References: <1506735566-5706-1-git-send-email-yi.y.sun@linux.intel.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 1dy742-0004gW-R7 for xen-devel@lists.xenproject.org; Sat, 30 Sep 2017 01:59:35 +0000 In-Reply-To: <1506735566-5706-1-git-send-email-yi.y.sun@linux.intel.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: Ian Jackson , Yi Sun , Chao Peng , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGdlbmVyaWMgZ2V0IHZhbHVlIGludGVyZmFjZXMgaW4gbGli eGMgYW5kIGxpYnhsLgpJdCBhbHNvIHJlZmFjdG9ycyB0aGUgZ2V0IHZhbHVlIGZsb3cgaW4geGwg dG8gbWFrZSBpdCBiZSBzdWl0YWJsZSBmb3IgYWxsCmFsbG9jYXRpb24gZmVhdHVyZXMuIEJhc2Vk IG9uIHRoYXQsIGEgbmV3IE1CQSBnZXQgdmFsdWUgY29tbWFuZCBpcyBhZGRlZCBpbiB4bC4KClNp Z25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgpBY2tlZC1ieTog V2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCkNDOiBJYW4gSmFja3NvbiA8aWFuLmph Y2tzb25AZXUuY2l0cml4LmNvbT4KQ0M6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRy aXguY29tPgpDQzogQ2hhbyBQZW5nIDxjaGFvLnAucGVuZ0BsaW51eC5pbnRlbC5jb20+Cgp2NToK ICAgIC0gc3RhcnQgYSBuZXdsaW5lIGZvciAiQ0RQIiBiZWNhdXNlIGl0IGV4Y2VlZHMgODAgY2hh cmFjdGVycy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSByZW1v dmUgYSBkdXBsaWNhdGVkICc7Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOp KQogICAgLSByZW1vdmUgYSBleHRyYSBuZXdsaW5lLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2Vy IFBhdSBNb25uw6kpCiAgICAtIGNvcnJlY3Qgd29yZHMgaW4gbG9nIG1lc3NhZ2UuCiAgICAgIChz dWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjQ6CiAgICAtIHVzZSBkZXNpZ25hdGVkIGlu aXRpYWxpemVycyBmb3IgJ2ZlYXRfbmFtZVtdJy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQ YXUgTW9ubsOpKQogICAgLSB1c2UgTE9HIGluICdsaWJ4bF9fcHNyX2FsbG9jX2xvZ19lcnJfbXNn Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2MzoKICAgIC0gcmVwbGFj ZSAnbGlieGxfcHNyX2NibV90eXBlJyB0byAnbGlieGxfcHNyX3R5cGUnIGluIG5ld2x5IGRlZmlu ZWQKICAgICAgaW50ZXJmYWNlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOp KQp2MjoKICAgIC0gY2hhbmdlICdDQVRfSU5GTycvJ01CQV9JTkZPJyB0byAnQ0FUJy8nTUJBJy4g VGhlIHJlbGF0ZWQgc3RydWN0dXJlIG5hbWVzCiAgICAgIGFyZSBjaGFuZ2VkIHRvby4KICAgICAg KHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCi0tLQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJs LmggfCAgIDcgKy0KIHRvb2xzL2xpYnhjL3hjX3Bzci5jICAgICAgICAgIHwgICA5ICstCiB0b29s cy9saWJ4bC9saWJ4bF9wc3IuYyAgICAgICB8ICA1OCArKysrKysrKy0tLS0tCiB0b29scy94bC94 bC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiB0b29scy94bC94bF9jbWR0YWJsZS5jICAgICAg ICB8ICAgNSArKwogdG9vbHMveGwveGxfcHNyLmMgICAgICAgICAgICAgfCAxODYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDE4NCBp bnNlcnRpb25zKCspLCA4MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDE5 NTM5NTAuLjA2MjlhMjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5o CisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0yNDU2LDYgKzI0NTYsNyBA QCBlbnVtIHhjX3Bzcl90eXBlIHsKICAgICBYQ19QU1JfQ0FUX0wzX0NCTV9DT0RFID0gMiwKICAg ICBYQ19QU1JfQ0FUX0wzX0NCTV9EQVRBID0gMywKICAgICBYQ19QU1JfQ0FUX0wyX0NCTSAgICAg ID0gNCwKKyAgICBYQ19QU1JfTUJBX1RIUlRMICAgICAgID0gNSwKIH07CiB0eXBlZGVmIGVudW0g eGNfcHNyX3R5cGUgeGNfcHNyX3R5cGU7CiAKQEAgLTI0OTksOSArMjUwMCw5IEBAIGludCB4Y19w c3JfY210X2VuYWJsZWQoeGNfaW50ZXJmYWNlICp4Y2gpOwogaW50IHhjX3Bzcl9jYXRfc2V0X2Rv bWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YSk7Ci1pbnQgeGNfcHNy X2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBlIHR5cGUsIHVpbnQzMl90 IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7 CitpbnQgeGNfcHNyX2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qg ZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50 MzJfdCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7 CiBpbnQgeGNfcHNyX2dldF9od19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2Nr ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNy X2h3X2luZm8gKmh3X2luZm8pOwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3IuYyBi L3Rvb2xzL2xpYnhjL3hjX3Bzci5jCmluZGV4IDdkOTk0ZTkuLmIwMDE2NjQgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0yODMs OSArMjgzLDkgQEAgaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gZG9fZG9tY3RsKHhjaCwgJmRvbWN0bCk7 CiB9CiAKLWludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5 cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ2NF90ICpkYXRhKQoraW50IHhjX3Bzcl9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNl ICp4Y2gsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNy X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDY0X3QgKmRhdGEpCiB7CiAgICAgaW50IHJjOwogICAgIERFQ0xBUkVfRE9NQ1RMOwpAQCAt MzA1LDYgKzMwNSw5IEBAIGludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgY2FzZSBYQ19QU1JfQ0FUX0wyX0NCTToKICAg ICAgICAgY21kID0gWEVOX0RPTUNUTF9QU1JfR0VUX0wyX0NCTTsKICAgICAgICAgYnJlYWs7Cisg ICAgY2FzZSBYQ19QU1JfTUJBX1RIUlRMOgorICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9H RVRfTUJBX1RIUlRMOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBlcnJu byA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwv bGlieGxfcHNyLmMgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwppbmRleCA2Yzg3MTA1Li45YzQ3 ZDM0IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9wc3IuYworKysgYi90b29scy9saWJ4 bC9saWJ4bF9wc3IuYwpAQCAtNzEsMTYgKzcxLDMwIEBAIHN0YXRpYyB2b2lkIGxpYnhsX19wc3Jf Y210X2xvZ19lcnJfbXNnKGxpYnhsX19nYyAqZ2MsIGludCBlcnIpCiAgICAgTE9HRShFUlJPUiwg IiVzIiwgbXNnKTsKIH0KIAotc3RhdGljIHZvaWQgbGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9tc2co bGlieGxfX2djICpnYywgaW50IGVycikKK3N0YXRpYyB2b2lkIGxpYnhsX19wc3JfYWxsb2NfbG9n X2Vycl9tc2cobGlieGxfX2djICpnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfcHNyX3R5cGUgdHlwZSkKIHsKKyAgICAvKgorICAgICAqIEluZGV4IGlzICdsaWJ4 bF9wc3JfdHlwZScgc28gd2Ugc2V0IHR3byAnQ0RQJyB0byBjb3JyZXNwb25kIHRvCisgICAgICog REFUQSBhbmQgQ09ERS4KKyAgICAgKi8KKyAgICBjb25zdCBjaGFyICogY29uc3QgZmVhdF9uYW1l W10gPSB7CisgICAgICAgIFtMSUJYTF9QU1JfQ0JNX1RZUEVfVU5LTk9XTl0gPSAiVU5LTk9XTiIs CisgICAgICAgIFtMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNXSA9ICJMMyBDQVQiLAorICAgICAg ICBbTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTV9DT0RFLi4uTElCWExfUFNSX0NCTV9UWVBFX0wz X0NCTV9EQVRBXSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDRFAi LAorICAgICAgICBbTElCWExfUFNSX0NCTV9UWVBFX0wyX0NCTV0gPSAiTDIgQ0FUIiwKKyAgICAg ICAgW0xJQlhMX1BTUl9DQk1fVFlQRV9NQkFfVEhSVExdID0gIk1CQSIsCisgICAgfTsKICAgICBj aGFyICptc2c7CiAKICAgICBzd2l0Y2ggKGVycikgewogICAgIGNhc2UgRU5PREVWOgotICAgICAg ICBtc2cgPSAiQ0FUIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBzeXN0ZW0iOworICAgICAgICBt c2cgPSAiaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHN5c3RlbSI7CiAgICAgICAgIGJyZWFrOwog ICAgIGNhc2UgRU5PRU5UOgotICAgICAgICBtc2cgPSAiQ0FUIGlzIG5vdCBlbmFibGVkIG9uIHRo ZSBzb2NrZXQiOworICAgICAgICBtc2cgPSAiaXMgbm90IGVuYWJsZWQgb24gdGhlIHNvY2tldCI7 CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRU9WRVJGTE9XOgogICAgICAgICBtc2cgPSAibm8g ZnJlZSBDT1MgYXZhaWxhYmxlIjsKQEAgLTEwNiw3ICsxMjAsNyBAQCBzdGF0aWMgdm9pZCBsaWJ4 bF9fcHNyX2NhdF9sb2dfZXJyX21zZyhsaWJ4bF9fZ2MgKmdjLCBpbnQgZXJyKQogICAgICAgICBy ZXR1cm47CiAgICAgfQogCi0gICAgTE9HRShFUlJPUiwgIiVzIiwgbXNnKTsKKyAgICBMT0coRVJS T1IsICIlczogJXMiLCBmZWF0X25hbWVbdHlwZV0sIG1zZyk7CiB9CiAKIHN0YXRpYyBpbnQgbGli eGxfX3BpY2tfc29ja2V0X2NwdShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBzb2NrZXRpZCkKQEAg LTMwMywxMCArMzE3LDEwIEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9CiAKLXN0YXRpYyBpbmxp bmUgeGNfcHNyX3R5cGUgbGlieGxfX3Bzcl9jYm1fdHlwZV90b19saWJ4Y19wc3JfdHlwZSgKLSAg ICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgeGNfcHNyX3R5cGUgbGli eGxfX3Bzcl90eXBlX3RvX2xpYnhjX3Bzcl90eXBlKAorICAgIGxpYnhsX3Bzcl90eXBlIHR5cGUp CiB7Ci0gICAgQlVJTERfQlVHX09OKHNpemVvZihsaWJ4bF9wc3JfY2JtX3R5cGUpICE9IHNpemVv Zih4Y19wc3JfdHlwZSkpOworICAgIEJVSUxEX0JVR19PTihzaXplb2YobGlieGxfcHNyX3R5cGUp ICE9IHNpemVvZih4Y19wc3JfdHlwZSkpOwogICAgIHJldHVybiAoeGNfcHNyX3R5cGUpdHlwZTsK IH0KIApAQCAtMzI1LDE0ICszMzksMTQgQEAgaW50IGxpYnhsX3Bzcl9jYXRfc2V0X2NibShsaWJ4 bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgfQogCiAgICAgbGlieGxfZm9yX2VhY2hf c2V0X2JpdChzb2NrZXRpZCwgKnRhcmdldF9tYXApIHsKLSAgICAgICAgeGNfcHNyX3R5cGUgeGNf dHlwZSA9IGxpYnhsX19wc3JfY2JtX3R5cGVfdG9fbGlieGNfcHNyX3R5cGUodHlwZSk7CisgICAg ICAgIHhjX3Bzcl90eXBlIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX3R5cGVfdG9fbGlieGNfcHNyX3R5 cGUodHlwZSk7CiAKICAgICAgICAgaWYgKHNvY2tldGlkID49IG5yX3NvY2tldHMpCiAgICAgICAg ICAgICBicmVhazsKIAogICAgICAgICBpZiAoeGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoY3R4 LT54Y2gsIGRvbWlkLCB4Y190eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc29ja2V0aWQsIGNibSkpIHsKLSAgICAgICAgICAgIGxpYnhsX19wc3JfY2F0X2xvZ19l cnJfbXNnKGdjLCBlcnJubyk7CisgICAgICAgICAgICBsaWJ4bF9fcHNyX2FsbG9jX2xvZ19lcnJf bXNnKGdjLCBlcnJubywgdHlwZSk7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAg ICAgIH0KICAgICB9CkBAIC0zNDYsMTggKzM2MCw3IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9j Ym0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50NjRfdCAqY2JtX3IpCiB7Ci0gICAgR0NfSU5JVChjdHgpOwot ICAgIGludCByYyA9IDA7Ci0gICAgeGNfcHNyX3R5cGUgeGNfdHlwZSA9IGxpYnhsX19wc3JfY2Jt X3R5cGVfdG9fbGlieGNfcHNyX3R5cGUodHlwZSk7Ci0KLSAgICBpZiAoeGNfcHNyX2NhdF9nZXRf ZG9tYWluX2RhdGEoY3R4LT54Y2gsIGRvbWlkLCB4Y190eXBlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YXJnZXQsIGNibV9yKSkgewotICAgICAgICBsaWJ4bF9fcHNyX2Nh dF9sb2dfZXJyX21zZyhnYywgZXJybm8pOwotICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Ci0gICAg fQotCi0gICAgR0NfRlJFRTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJuIGxpYnhsX3Bzcl9n ZXRfdmFsKGN0eCwgZG9taWQsIHR5cGUsIHRhcmdldCwgY2JtX3IpOwogfQogCiBzdGF0aWMgeGNf cHNyX2ZlYXRfdHlwZSBsaWJ4bF9fZmVhdF90eXBlX3RvX2xpYnhjX2ZlYXRfdHlwZSgKQEAgLTQ1 NSw3ICs0NTgsMTggQEAgaW50IGxpYnhsX3Bzcl9nZXRfdmFsKGxpYnhsX2N0eCAqY3R4LCB1aW50 MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfdHlwZSB0eXBlLCB1 bnNpZ25lZCBpbnQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICp2YWwp CiB7Ci0gICAgcmV0dXJuIEVSUk9SX0ZBSUw7CisgICAgR0NfSU5JVChjdHgpOworICAgIGludCBy YyA9IDA7CisgICAgeGNfcHNyX3R5cGUgeGNfdHlwZSA9IGxpYnhsX19wc3JfdHlwZV90b19saWJ4 Y19wc3JfdHlwZSh0eXBlKTsKKworICAgIGlmICh4Y19wc3JfZ2V0X2RvbWFpbl9kYXRhKGN0eC0+ eGNoLCBkb21pZCwgeGNfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXQsIHZhbCkpIHsKKyAgICAgICAgbGlieGxfX3Bzcl9hbGxvY19sb2dfZXJyX21zZyhnYywgZXJy bm8sIHR5cGUpOworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgfQorCisgICAgR0NfRlJF RTsKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyB2b2lkIGxpYnhsX194Y19od19pbmZvX3Rv X2xpYnhsX2h3X2luZm8oCmRpZmYgLS1naXQgYS90b29scy94bC94bC5oIGIvdG9vbHMveGwveGwu aAppbmRleCAwMWMyYWY2Li40NjQ4MzFlIDEwMDY0NAotLS0gYS90b29scy94bC94bC5oCisrKyBi L3Rvb2xzL3hsL3hsLmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBpbnQgbWFpbl9wc3JfY210X2RldGFj aChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fcHNyX2NtdF9zaG93KGludCBhcmdj LCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl9wc3JfY2F0X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIg Kiphcmd2KTsKIGludCBtYWluX3Bzcl9jYXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwor aW50IG1haW5fcHNyX21iYV9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndik7CiAjZW5kaWYKIGlu dCBtYWluX3FlbXVfbW9uaXRvcl9jb21tYW5kKGludCBhcmdjLCBjaGFyICoqYXJndik7CiAKZGlm ZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMgYi90b29scy94bC94bF9jbWR0YWJsZS5j CmluZGV4IGExNjc5ZTkuLjMxMzZkNzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxl LmMKKysrIGIvdG9vbHMveGwveGxfY21kdGFibGUuYwpAQCAtNTY1LDYgKzU2NSwxMSBAQCBzdHJ1 Y3QgY21kX3NwZWMgY21kX3RhYmxlW10gPSB7CiAgICAgICAiW29wdGlvbnNdIDxEb21haW4+IiwK ICAgICAgICItbCA8bGV2ZWw+ICAgICAgICBTcGVjaWZ5IHRoZSBjYWNoZSBsZXZlbCB0byBwcm9j ZXNzLCBvdGhlcndpc2UgTDMgY2FjaGUgaXMgcHJvY2Vzc2VkXG4iCiAgICAgfSwKKyAgICB7ICJw c3ItbWJhLXNob3ciLAorICAgICAgJm1haW5fcHNyX21iYV9zaG93LCAwLCAxLAorICAgICAgIlNo b3cgTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9uIGluZm9ybWF0aW9uIiwKKyAgICAgICI8RG9t YWluPiIsCisgICAgfSwKICNlbmRpZgogICAgIHsgInVzYmN0cmwtYXR0YWNoIiwKICAgICAgICZt YWluX3VzYmN0cmxfYXR0YWNoLCAwLCAxLApkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfcHNyLmMg Yi90b29scy94bC94bF9wc3IuYwppbmRleCBhYjQ3ZDk2Li40ZmVkNzFlIDEwMDY0NAotLS0gYS90 b29scy94bC94bF9wc3IuYworKysgYi90b29scy94bC94bF9wc3IuYwpAQCAtMzI3LDE5ICszMjcs MjcgQEAgb3V0OgogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgcHNyX2NhdF9wcmlu dF9vbmVfZG9tYWluX2NibV90eXBlKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3Jf Y2JtX3R5cGUgdHlwZSkKK3N0YXRpYyB2b2lkIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBl KHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfcHNyX2h3X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9wc3JfdHlwZSB0eXBlKQogewotICAgIHVpbnQ2NF90IGNibTsK KyAgICB1aW50NjRfdCB2YWw7CiAKLSAgICBpZiAoIWxpYnhsX3Bzcl9jYXRfZ2V0X2NibShjdHgs IGRvbWlkLCB0eXBlLCBzb2NrZXRpZCwgJmNibSkpCi0gICAgICAgIHByaW50ZigiJSMxNiJQUkl4 NjQsIGNibSk7CisgICAgaWYgKCFsaWJ4bF9wc3JfZ2V0X3ZhbChjdHgsIGRvbWlkLCB0eXBlLCBp bmZvLT5pZCwgJnZhbCkpCisgICAgeworICAgICAgICBpZiAodHlwZSA9PSBMSUJYTF9QU1JfQ0JN X1RZUEVfTUJBX1RIUlRMICYmIGluZm8tPnUubWJhLmxpbmVhcikKKyAgICAgICAgICAgIHByaW50 ZigiJTE2IlBSSXU2NCwgdmFsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbnRmKCIl IzE2IlBSSXg2NCwgdmFsKTsKKyAgICB9CiAgICAgZWxzZQogICAgICAgICBwcmludGYoIiUxNnMi LCAiZXJyb3IiKTsKIH0KIAotc3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2Ni bSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2RwX2VuYWJsZWQsIHVuc2lnbmVkIGludCBsdmwp CitzdGF0aWMgdm9pZCBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWwodWludDMyX3QgZG9taWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2h3X2luZm8gKmlu Zm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2ZlYXRf dHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBsdmwpCiB7CiAgICAgY2hhciAqZG9tYWluX25hbWU7CiAKQEAgLTM0NywxMDYgKzM1NSwx NTUgQEAgc3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibSh1aW50MzJfdCBk b21pZCwgdWludDMyX3Qgc29ja2V0aWQsCiAgICAgcHJpbnRmKCIlNWQlMjVzIiwgZG9taWQsIGRv bWFpbl9uYW1lKTsKICAgICBmcmVlKGRvbWFpbl9uYW1lKTsKIAotICAgIHN3aXRjaCAobHZsKSB7 Ci0gICAgY2FzZSAzOgotICAgICAgICBpZiAoIWNkcF9lbmFibGVkKSB7Ci0gICAgICAgICAgICBw c3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNvY2tldGlkLAorICAgIHN3 aXRjaCAodHlwZSkgeworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9DQVQ6CisgICAgICAg IHN3aXRjaCAobHZsKSB7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGlmICghaW5mby0+ dS5jYXQuY2RwX2VuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFp bl92YWxfdHlwZShkb21pZCwgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNKTsKLSAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZShkb21pZCwg c29ja2V0aWQsCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBzcl9wcmlu dF9vbmVfZG9tYWluX3ZhbF90eXBlKGRvbWlkLCBpbmZvLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk1fQ09ERSk7 Ci0gICAgICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNv Y2tldGlkLAorICAgICAgICAgICAgICAgIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBlKGRv bWlkLCBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk1fREFUQSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJl YWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5 cGUoZG9taWQsIHNvY2tldGlkLAorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisK KyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5fdmFsX3R5 cGUoZG9taWQsIGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMSUJYTF9QU1JfQ0JNX1RZUEVfTDJfQ0JNKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBwcmludGYoIklucHV0IGx2bCAlZCBpcyB3cm9uZyEi LCBsdmwpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg IHByaW50ZigiSW5wdXQgbHZsICVkIGlzIHdyb25nISIsIGx2bCk7CisKKyAgICBjYXNlIExJQlhM X1BTUl9GRUFUX1RZUEVfTUJBOgorICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlw ZShkb21pZCwgaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElC WExfUFNSX0NCTV9UWVBFX01CQV9USFJUTCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg IHByaW50ZigiXG4iKTsKIH0KIAotc3RhdGljIGludCBwc3JfY2F0X3ByaW50X2RvbWFpbl9jYm0o dWludDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCBjZHBfZW5hYmxlZCwgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRp YyBpbnQgcHNyX3ByaW50X2RvbWFpbl92YWwodWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9od19pbmZvICppbmZvLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfZmVhdF90eXBlIHR5cGUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsdmwpCiB7CiAgICAgaW50IGksIG5y X2RvbWFpbnM7CiAgICAgbGlieGxfZG9taW5mbyAqbGlzdDsKIAogICAgIGlmIChkb21pZCAhPSBJ TlZBTElEX0RPTUlEKSB7Ci0gICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0oZG9t aWQsIHNvY2tldGlkLCBjZHBfZW5hYmxlZCwgbHZsKTsKKyAgICAgICAgcHNyX3ByaW50X29uZV9k b21haW5fdmFsKGRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogICAgICAgICByZXR1cm4gMDsKICAg ICB9CiAKICAgICBpZiAoIShsaXN0ID0gbGlieGxfbGlzdF9kb21haW4oY3R4LCAmbnJfZG9tYWlu cykpKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBkb21haW4gbGlz dCBmb3IgY2JtIGRpc3BsYXlcbiIpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBkb21haW4gbGlzdCBmb3IgdmFsdWUgZGlzcGxheVxu Iik7CisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgfQogCiAgICAgZm9yIChpID0g MDsgaSA8IG5yX2RvbWFpbnM7IGkrKykKLSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWlu X2NibShsaXN0W2ldLmRvbWlkLCBzb2NrZXRpZCwgY2RwX2VuYWJsZWQsIGx2bCk7CisgICAgICAg IHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbChsaXN0W2ldLmRvbWlkLCBpbmZvLCB0eXBlLCBsdmwp OwogICAgIGxpYnhsX2RvbWluZm9fbGlzdF9mcmVlKGxpc3QsIG5yX2RvbWFpbnMpOwogCiAgICAg cmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NhdF9wcmludF9zb2NrZXQodWludDMyX3Qg ZG9taWQsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyBpbnQgcHNyX3ByaW50X3NvY2tldCh1 aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfaHdf aW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfZmVhdF90 eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkK IHsKLSAgICBpbnQgcmM7Ci0gICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKLQogICAgIHByaW50 ZigiJS0xNnM6ICV1XG4iLCAiU29ja2V0IElEIiwgaW5mby0+aWQpOwogCi0gICAgLyogU28gZmFy LCBDTVQgb25seSBzdXBwb3J0cyBMMyBjYWNoZS4gKi8KLSAgICBpZiAobHZsID09IDMpIHsKLSAg ICAgICAgcmMgPSBsaWJ4bF9wc3JfY210X2dldF9sM19jYWNoZV9zaXplKGN0eCwgaW5mby0+aWQs ICZsM19jYWNoZV9zaXplKTsKLSAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbDMgY2FjaGUgc2l6ZSBmb3Igc29ja2V0OiVkXG4iLAot ICAgICAgICAgICAgICAgICAgICBpbmZvLT5pZCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Cisg ICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVDoKKyAg ICB7CisgICAgICAgIGludCByYzsKKyAgICAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKKwor ICAgICAgICAvKiBTbyBmYXIsIENNVCBvbmx5IHN1cHBvcnRzIEwzIGNhY2hlLiAqLworICAgICAg ICBpZiAobHZsID09IDMpIHsKKyAgICAgICAgICAgIHJjID0gbGlieGxfcHNyX2NtdF9nZXRfbDNf Y2FjaGVfc2l6ZShjdHgsIGluZm8tPmlkLCAmbDNfY2FjaGVfc2l6ZSk7CisgICAgICAgICAgICBp ZiAocmMpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQg bDMgY2FjaGUgc2l6ZSBmb3Igc29ja2V0OiVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg aW5mby0+aWQpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHByaW50ZigiJS0xNnM6ICV1S0JcbiIsICJMMyBDYWNoZSIsIGwzX2NhY2hlX3Np emUpOwogICAgICAgICB9Ci0gICAgICAgIHByaW50ZigiJS0xNnM6ICV1S0JcbiIsICJMMyBDYWNo ZSIsIGwzX2NhY2hlX3NpemUpOworCisgICAgICAgIHByaW50ZigiJS0xNnM6ICUjbGx4XG4iLCAi RGVmYXVsdCBDQk0iLAorICAgICAgICAgICAgICAgKDF1bGwgPDwgaW5mby0+dS5jYXQuY2JtX2xl bikgLSAxKTsKKyAgICAgICAgaWYgKGluZm8tPnUuY2F0LmNkcF9lbmFibGVkKQorICAgICAgICAg ICAgcHJpbnRmKCIlNXMlMjVzJTE2cyUxNnNcbiIsICJJRCIsICJOQU1FIiwgIkNCTSAoY29kZSki LCAiQ0JNIChkYXRhKSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmludGYoIiU1cyUy NXMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0iKTsKKworICAgICAgICBicmVhazsKICAgICB9 CiAKLSAgICBwcmludGYoIiUtMTZzOiAlI2xseFxuIiwgIkRlZmF1bHQgQ0JNIiwgKDF1bGwgPDwg aW5mby0+Y2JtX2xlbikgLSAxKTsKLSAgICBpZiAoaW5mby0+Y2RwX2VuYWJsZWQpCi0gICAgICAg IHByaW50ZigiJTVzJTI1cyUxNnMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0gKGNvZGUpIiwg IkNCTSAoZGF0YSkiKTsKLSAgICBlbHNlCi0gICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnNcbiIs ICJJRCIsICJOQU1FIiwgIkNCTSIpOworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9NQkE6 CisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiRGVmYXVsdCBUSFJUTCIsIDApOworICAg ICAgICBwcmludGYoIiU1cyUyNXMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJUSFJUTCIpOworICAg ICAgICBicmVhazsKIAotICAgIHJldHVybiBwc3JfY2F0X3ByaW50X2RvbWFpbl9jYm0oZG9taWQs IGluZm8tPmlkLCBpbmZvLT5jZHBfZW5hYmxlZCwgbHZsKTsKKyAgICBkZWZhdWx0OgorICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIklucHV0IGZlYXR1cmUgdHlwZSAlZCBpcyB3cm9uZ1xuIiwgdHlw ZSk7CisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgfQorCisgICAgcmV0dXJuIHBz cl9wcmludF9kb21haW5fdmFsKGRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogfQogCi1zdGF0aWMg aW50IHBzcl9jYXRfc2hvdyh1aW50MzJfdCBkb21pZCwgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRp YyBpbnQgcHNyX3ZhbF9zaG93KHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IGx2bCkKIHsKICAgICB1bnNpZ25lZCBpbnQgaSwgbnI7CiAgICAgaW50IHJjOwot ICAgIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbzsKKyAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5m bzsKIAotICAgIGlmIChsdmwgIT0gMiAmJiBsdmwgIT0gMykgewotICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIklucHV0IGx2bCAlZCBpcyB3cm9uZ1xuIiwgbHZsKTsKKyAgICBzd2l0Y2ggKHR5cGUp IHsKKyAgICBjYXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUOgorICAgICAgICBpZiAobHZsICE9 IDIgJiYgbHZsICE9IDMpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW5wdXQgbHZs ICVkIGlzIHdyb25nXG4iLCBsdmwpOworICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsK KyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQ RV9NQkE6CisgICAgICAgIGlmIChsdmwpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAor ICAgICAgICAgICAgICAgICAgICAiVW5leHBlY3RlZCBsdmwgcGFyYW1ldGVyICVkIGZvciBNQkEg ZmVhdHVyZVxuIiwgbHZsKTsKKyAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAg ICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIklucHV0IGZlYXR1cmUgdHlwZSAlZCBpcyB3cm9uZ1xuIiwgdHlwZSk7CiAgICAgICAg IHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgfQogCi0gICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dl dF9pbmZvKGN0eCwgJmluZm8sICZuciwgbHZsKTsKKyAgICByYyA9IGxpYnhsX3Bzcl9nZXRfaHdf aW5mbyhjdHgsIHR5cGUsIGx2bCwgJm5yLCAmaW5mbyk7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAg IGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCAlcyBjYXQgaW5mb1xuIiwgKGx2bCA9PSAz KT8iTDMiOiJMMiIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgaW5m b1xuIik7CiAgICAgICAgIHJldHVybiByYzsKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwg bnI7IGkrKykgewotICAgICAgICByYyA9IHBzcl9jYXRfcHJpbnRfc29ja2V0KGRvbWlkLCBpbmZv ICsgaSwgbHZsKTsKKyAgICAgICAgcmMgPSBwc3JfcHJpbnRfc29ja2V0KGRvbWlkLCBpbmZvICsg aSwgdHlwZSwgbHZsKTsKICAgICAgICAgaWYgKHJjKQogICAgICAgICAgICAgZ290byBvdXQ7CiAg ICAgfQogCiBvdXQ6Ci0gICAgbGlieGxfcHNyX2NhdF9pbmZvX2xpc3RfZnJlZShpbmZvLCBucik7 CisgICAgbGlieGxfcHNyX2h3X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKICAgICByZXR1cm4g cmM7CiB9CiAKQEAgLTQ3NSw2ICs1MzIsMjcgQEAgc3RhdGljIGludCBwc3JfbDJfY2F0X2h3aW5m byh2b2lkKQogICAgIHJldHVybiByYzsKIH0KIAoraW50IG1haW5fcHNyX21iYV9zaG93KGludCBh cmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBpbnQgb3B0OworICAgIHVpbnQzMl90IGRvbWlkOwor CisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJwc3ItbWJhLXNob3ciLCAw KSB7CisgICAgICAgIC8qIE5vIG9wdGlvbnMgKi8KKyAgICB9CisKKyAgICBpZiAob3B0aW5kID49 IGFyZ2MpCisgICAgICAgIGRvbWlkID0gSU5WQUxJRF9ET01JRDsKKyAgICBlbHNlIGlmIChvcHRp bmQgPT0gYXJnYyAtIDEpCisgICAgICAgIGRvbWlkID0gZmluZF9kb21haW4oYXJndltvcHRpbmRd KTsKKyAgICBlbHNlIHsKKyAgICAgICAgaGVscCgicHNyLW1iYS1zaG93Iik7CisgICAgICAgIHJl dHVybiAyOworICAgIH0KKworICAgIHJldHVybiBwc3JfdmFsX3Nob3coZG9taWQsIExJQlhMX1BT Ul9GRUFUX1RZUEVfTUJBLCAwKTsKK30KKwogc3RhdGljIGludCBwc3JfbWJhX2h3aW5mbyh2b2lk KQogewogICAgIGludCByYzsKQEAgLTYxMiw3ICs2OTAsNyBAQCBpbnQgbWFpbl9wc3JfY2F0X3No b3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICByZXR1cm4gMjsKICAgICB9CiAKLSAg ICByZXR1cm4gcHNyX2NhdF9zaG93KGRvbWlkLCBsdmwpOworICAgIHJldHVybiBwc3JfdmFsX3No b3coZG9taWQsIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FULCBsdmwpOwogfQogCiBpbnQgbWFpbl9w c3JfaHdpbmZvKGludCBhcmdjLCBjaGFyICoqYXJndikKLS0gCjEuOS4xCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==