From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v8 14/16] tools: implement new generic get value interface and MBA get value command Date: Mon, 16 Oct 2017 11:04:19 +0800 Message-ID: <1508123061-6600-15-git-send-email-yi.y.sun@linux.intel.com> References: <1508123061-6600-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e3w2P-0002l1-Vu for xen-devel@lists.xenproject.org; Mon, 16 Oct 2017 03:25:58 +0000 In-Reply-To: <1508123061-6600-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 , Chao Peng , Yi Sun , Wei Liu , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGdlbmVyaWMgZ2V0IHZhbHVlIGludGVyZmFjZXMgaW4gbGli eGMgYW5kIGxpYnhsLgpJdCBhbHNvIHJlZmFjdG9ycyB0aGUgZ2V0IHZhbHVlIGZsb3cgaW4geGwg dG8gbWFrZSBpdCBiZSBzdWl0YWJsZSBmb3IgYWxsCmFsbG9jYXRpb24gZmVhdHVyZXMuIEJhc2Vk IG9uIHRoYXQsIGEgbmV3IE1CQSBnZXQgdmFsdWUgY29tbWFuZCBpcyBhZGRlZCBpbiB4bC4KClNp Z25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgpBY2tlZC1ieTog V2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IFJvZ2VyIFBhdSBNb25u w6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KQ0M6IElhbiBKYWNrc29uIDxpYW4uamFja3Nv bkBldS5jaXRyaXguY29tPgpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IFJv Z2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpDQzogQ2hhbyBQZW5nIDxjaGFv LnAucGVuZ0BsaW51eC5pbnRlbC5jb20+Cgp2NjoKICAgIC0gZml4IG9uZSBjb2Rpbmcgc3R5bGUg aXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjU6CiAgICAtIHN0 YXJ0IGEgbmV3bGluZSBmb3IgIkNEUCIgYmVjYXVzZSBpdCBleGNlZWRzIDgwIGNoYXJhY3RlcnMu CiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gcmVtb3ZlIGEgZHVw bGljYXRlZCAnOycuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0g cmVtb3ZlIGEgZXh0cmEgbmV3bGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9u bsOpKQogICAgLSBjb3JyZWN0IHdvcmRzIGluIGxvZyBtZXNzYWdlLgogICAgICAoc3VnZ2VzdGVk IGJ5IFJvZ2VyIFBhdSBNb25uw6kpCnY0OgogICAgLSB1c2UgZGVzaWduYXRlZCBpbml0aWFsaXpl cnMgZm9yICdmZWF0X25hbWVbXScuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7D qSkKICAgIC0gdXNlIExPRyBpbiAnbGlieGxfX3Bzcl9hbGxvY19sb2dfZXJyX21zZycuCiAgICAg IChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjM6CiAgICAtIHJlcGxhY2UgJ2xpYnhs X3Bzcl9jYm1fdHlwZScgdG8gJ2xpYnhsX3Bzcl90eXBlJyBpbiBuZXdseSBkZWZpbmVkCiAgICAg IGludGVyZmFjZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjI6CiAg ICAtIGNoYW5nZSAnQ0FUX0lORk8nLydNQkFfSU5GTycgdG8gJ0NBVCcvJ01CQScuIFRoZSByZWxh dGVkIHN0cnVjdHVyZSBuYW1lcwogICAgICBhcmUgY2hhbmdlZCB0b28uCiAgICAgIChzdWdnZXN0 ZWQgYnkgQ2hhbyBQZW5nKQotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIHwgICA3 ICstCiB0b29scy9saWJ4Yy94Y19wc3IuYyAgICAgICAgICB8ICAgOSArLQogdG9vbHMvbGlieGwv bGlieGxfcHNyLmMgICAgICAgfCAgNTggKysrKysrKystLS0tLQogdG9vbHMveGwveGwuaCAgICAg ICAgICAgICAgICAgfCAgIDEgKwogdG9vbHMveGwveGxfY21kdGFibGUuYyAgICAgICAgfCAgIDUg KysKIHRvb2xzL3hsL3hsX3Bzci5jICAgICAgICAgICAgIHwgMTg1ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAxODMgaW5zZXJ0aW9u cygrKSwgODIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94 ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRleCAyOWZjYjk1Li5k MDQ2ZTYxIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90 b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMjQ5MSw2ICsyNDkxLDcgQEAgZW51bSB4 Y19wc3JfdHlwZSB7CiAgICAgWENfUFNSX0NBVF9MM19DQk1fQ09ERSA9IDIsCiAgICAgWENfUFNS X0NBVF9MM19DQk1fREFUQSA9IDMsCiAgICAgWENfUFNSX0NBVF9MMl9DQk0gICAgICA9IDQsCisg ICAgWENfUFNSX01CQV9USFJUTCAgICAgICA9IDUsCiB9OwogdHlwZWRlZiBlbnVtIHhjX3Bzcl90 eXBlIHhjX3Bzcl90eXBlOwogCkBAIC0yNTM0LDkgKzI1MzUsOSBAQCBpbnQgeGNfcHNyX2NtdF9l bmFibGVkKHhjX2ludGVyZmFjZSAqeGNoKTsKIGludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0 YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeGNfcHNyX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGEpOwotaW50IHhjX3Bzcl9jYXRfZ2V0 X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKmRhdGEpOworaW50IHhj X3Bzcl9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5cGUgdHlwZSwgdWludDMyX3QgdGFy Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKmRhdGEpOwogaW50IHhj X3Bzcl9nZXRfaHdfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LAogICAg ICAgICAgICAgICAgICAgICAgICB4Y19wc3JfZmVhdF90eXBlIHR5cGUsIHhjX3Bzcl9od19pbmZv ICpod19pbmZvKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHNyLmMgYi90b29scy9s aWJ4Yy94Y19wc3IuYwppbmRleCAwMWY0YmE3Li4xOTFkZTk3IDEwMDY0NAotLS0gYS90b29scy9s aWJ4Yy94Y19wc3IuYworKysgYi90b29scy9saWJ4Yy94Y19wc3IuYwpAQCAtMjgzLDkgKzI4Myw5 IEBAIGludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWlu dDMyX3QgZG9taWQsCiAgICAgcmV0dXJuIGRvX2RvbWN0bCh4Y2gsICZkb21jdGwpOwogfQogCi1p bnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90 IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBlIHR5cGUs IHVpbnQzMl90IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf dCAqZGF0YSkKK2ludCB4Y19wc3JfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1 aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBlIHR5 cGUsIHVpbnQzMl90IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90 ICpkYXRhKQogewogICAgIGludCByYzsKICAgICBERUNMQVJFX0RPTUNUTDsKQEAgLTMwNSw2ICsz MDUsOSBAQCBpbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gs IHVpbnQzMl90IGRvbWlkLAogICAgIGNhc2UgWENfUFNSX0NBVF9MMl9DQk06CiAgICAgICAgIGNt ZCA9IFhFTl9ET01DVExfUFNSX0dFVF9MMl9DQk07CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug WENfUFNSX01CQV9USFJUTDoKKyAgICAgICAgY21kID0gWEVOX0RPTUNUTF9QU1JfR0VUX01CQV9U SFJUTDsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZXJybm8gPSBFSU5W QUw7CiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bz ci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKaW5kZXggYzU0Y2I2Zi4uN2M1NjBiYyAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxf cHNyLmMKQEAgLTcxLDE2ICs3MSwzMCBAQCBzdGF0aWMgdm9pZCBsaWJ4bF9fcHNyX2NtdF9sb2df ZXJyX21zZyhsaWJ4bF9fZ2MgKmdjLCBpbnQgZXJyKQogICAgIExPR0UoRVJST1IsICIlcyIsIG1z Zyk7CiB9CiAKLXN0YXRpYyB2b2lkIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJfbXNnKGxpYnhsX19n YyAqZ2MsIGludCBlcnIpCitzdGF0aWMgdm9pZCBsaWJ4bF9fcHNyX2FsbG9jX2xvZ19lcnJfbXNn KGxpYnhsX19nYyAqZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhs X3Bzcl90eXBlIHR5cGUpCiB7CisgICAgLyoKKyAgICAgKiBJbmRleCBpcyAnbGlieGxfcHNyX3R5 cGUnIHNvIHdlIHNldCB0d28gJ0NEUCcgdG8gY29ycmVzcG9uZCB0bworICAgICAqIERBVEEgYW5k IENPREUuCisgICAgICovCisgICAgY29uc3QgY2hhciAqIGNvbnN0IGZlYXRfbmFtZVtdID0gewor ICAgICAgICBbTElCWExfUFNSX0NCTV9UWVBFX1VOS05PV05dID0gIlVOS05PV04iLAorICAgICAg ICBbTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTV0gPSAiTDMgQ0FUIiwKKyAgICAgICAgW0xJQlhM X1BTUl9DQk1fVFlQRV9MM19DQk1fQ09ERS4uLkxJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk1fREFU QV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0RQIiwKKyAgICAg ICAgW0xJQlhMX1BTUl9DQk1fVFlQRV9MMl9DQk1dID0gIkwyIENBVCIsCisgICAgICAgIFtMSUJY TF9QU1JfQ0JNX1RZUEVfTUJBX1RIUlRMXSA9ICJNQkEiLAorICAgIH07CiAgICAgY2hhciAqbXNn OwogCiAgICAgc3dpdGNoIChlcnIpIHsKICAgICBjYXNlIEVOT0RFVjoKLSAgICAgICAgbXNnID0g IkNBVCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgc3lzdGVtIjsKKyAgICAgICAgbXNnID0gImlz IG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBzeXN0ZW0iOwogICAgICAgICBicmVhazsKICAgICBjYXNl IEVOT0VOVDoKLSAgICAgICAgbXNnID0gIkNBVCBpcyBub3QgZW5hYmxlZCBvbiB0aGUgc29ja2V0 IjsKKyAgICAgICAgbXNnID0gImlzIG5vdCBlbmFibGVkIG9uIHRoZSBzb2NrZXQiOwogICAgICAg ICBicmVhazsKICAgICBjYXNlIEVPVkVSRkxPVzoKICAgICAgICAgbXNnID0gIm5vIGZyZWUgQ09T IGF2YWlsYWJsZSI7CkBAIC0xMDYsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgbGlieGxfX3Bzcl9j YXRfbG9nX2Vycl9tc2cobGlieGxfX2djICpnYywgaW50IGVycikKICAgICAgICAgcmV0dXJuOwog ICAgIH0KIAotICAgIExPR0UoRVJST1IsICIlcyIsIG1zZyk7CisgICAgTE9HKEVSUk9SLCAiJXM6 ICVzIiwgZmVhdF9uYW1lW3R5cGVdLCBtc2cpOwogfQogCiBzdGF0aWMgaW50IGxpYnhsX19waWNr X3NvY2tldF9jcHUobGlieGxfX2djICpnYywgdWludDMyX3Qgc29ja2V0aWQpCkBAIC0zMDMsMTAg KzMxNywxMCBAQCBvdXQ6CiAgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW5saW5lIHhjX3Bz cl90eXBlIGxpYnhsX19wc3JfY2JtX3R5cGVfdG9fbGlieGNfcHNyX3R5cGUoCi0gICAgbGlieGxf cHNyX2NibV90eXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIHhjX3Bzcl90eXBlIGxpYnhsX19wc3Jf dHlwZV90b19saWJ4Y19wc3JfdHlwZSgKKyAgICBsaWJ4bF9wc3JfdHlwZSB0eXBlKQogewotICAg IEJVSUxEX0JVR19PTihzaXplb2YobGlieGxfcHNyX2NibV90eXBlKSAhPSBzaXplb2YoeGNfcHNy X3R5cGUpKTsKKyAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKGxpYnhsX3Bzcl90eXBlKSAhPSBzaXpl b2YoeGNfcHNyX3R5cGUpKTsKICAgICByZXR1cm4gKHhjX3Bzcl90eXBlKXR5cGU7CiB9CiAKQEAg LTMyNSwxNCArMzM5LDE0IEBAIGludCBsaWJ4bF9wc3JfY2F0X3NldF9jYm0obGlieGxfY3R4ICpj dHgsIHVpbnQzMl90IGRvbWlkLAogICAgIH0KIAogICAgIGxpYnhsX2Zvcl9lYWNoX3NldF9iaXQo c29ja2V0aWQsICp0YXJnZXRfbWFwKSB7Ci0gICAgICAgIHhjX3Bzcl90eXBlIHhjX3R5cGUgPSBs aWJ4bF9fcHNyX2NibV90eXBlX3RvX2xpYnhjX3Bzcl90eXBlKHR5cGUpOworICAgICAgICB4Y19w c3JfdHlwZSB4Y190eXBlID0gbGlieGxfX3Bzcl90eXBlX3RvX2xpYnhjX3Bzcl90eXBlKHR5cGUp OwogCiAgICAgICAgIGlmIChzb2NrZXRpZCA+PSBucl9zb2NrZXRzKQogICAgICAgICAgICAgYnJl YWs7CiAKICAgICAgICAgaWYgKHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKGN0eC0+eGNoLCBk b21pZCwgeGNfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv Y2tldGlkLCBjYm0pKSB7Ci0gICAgICAgICAgICBsaWJ4bF9fcHNyX2NhdF9sb2dfZXJyX21zZyhn YywgZXJybm8pOworICAgICAgICAgICAgbGlieGxfX3Bzcl9hbGxvY19sb2dfZXJyX21zZyhnYywg ZXJybm8sIHR5cGUpOwogICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICB9CiAg ICAgfQpAQCAtMzQ2LDE4ICszNjAsNyBAQCBpbnQgbGlieGxfcHNyX2NhdF9nZXRfY2JtKGxpYnhs X2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfcHNyX2NibV90eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdldCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDY0X3QgKmNibV9yKQogewotICAgIEdDX0lOSVQoY3R4KTsKLSAgICBpbnQg cmMgPSAwOwotICAgIHhjX3Bzcl90eXBlIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX2NibV90eXBlX3Rv X2xpYnhjX3Bzcl90eXBlKHR5cGUpOwotCi0gICAgaWYgKHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9k YXRhKGN0eC0+eGNoLCBkb21pZCwgeGNfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0LCBjYm1fcikpIHsKLSAgICAgICAgbGlieGxfX3Bzcl9jYXRfbG9nX2Vy cl9tc2coZ2MsIGVycm5vKTsKLSAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwotICAgIH0KLQotICAg IEdDX0ZSRUU7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiBsaWJ4bF9wc3JfZ2V0X3ZhbChj dHgsIGRvbWlkLCB0eXBlLCB0YXJnZXQsIGNibV9yKTsKIH0KIAogc3RhdGljIHhjX3Bzcl9mZWF0 X3R5cGUgbGlieGxfX2ZlYXRfdHlwZV90b19saWJ4Y19mZWF0X3R5cGUoCkBAIC00NTcsNyArNDYw LDE4IEBAIGludCBsaWJ4bF9wc3JfZ2V0X3ZhbChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQsCiAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX3R5cGUgdHlwZSwgdW5zaWduZWQg aW50IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqdmFsKQogewotICAg IHJldHVybiBFUlJPUl9GQUlMOworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBpbnQgcmMgPSAwOwor ICAgIHhjX3Bzcl90eXBlIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX3R5cGVfdG9fbGlieGNfcHNyX3R5 cGUodHlwZSk7CisKKyAgICBpZiAoeGNfcHNyX2dldF9kb21haW5fZGF0YShjdHgtPnhjaCwgZG9t aWQsIHhjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LCB2YWwp KSB7CisgICAgICAgIGxpYnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2coZ2MsIGVycm5vLCB0eXBl KTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgIH0KKworICAgIEdDX0ZSRUU7CisgICAg cmV0dXJuIHJjOwogfQogCiBzdGF0aWMgdm9pZCBsaWJ4bF9feGNfaHdfaW5mb190b19saWJ4bF9o d19pbmZvKApkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGwuaCBiL3Rvb2xzL3hsL3hsLmgKaW5kZXgg NmI2MGQxZC4uYTcyNDU4YiAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGwuaAorKysgYi90b29scy94 bC94bC5oCkBAIC0yMDgsNiArMjA4LDcgQEAgaW50IG1haW5fcHNyX2NtdF9kZXRhY2goaW50IGFy Z2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Bzcl9jbXRfc2hvdyhpbnQgYXJnYywgY2hhciAq KmFyZ3YpOwogaW50IG1haW5fcHNyX2NhdF9jYm1fc2V0KGludCBhcmdjLCBjaGFyICoqYXJndik7 CiBpbnQgbWFpbl9wc3JfY2F0X3Nob3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWlu X3Bzcl9tYmFfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogI2VuZGlmCiBpbnQgbWFpbl9x ZW11X21vbml0b3JfY29tbWFuZChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogCmRpZmYgLS1naXQg YS90b29scy94bC94bF9jbWR0YWJsZS5jIGIvdG9vbHMveGwveGxfY21kdGFibGUuYwppbmRleCA5 ZThmNzA0Li41ZDNmODcyIDEwMDY0NAotLS0gYS90b29scy94bC94bF9jbWR0YWJsZS5jCisrKyBi L3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKQEAgLTU4NSw2ICs1ODUsMTEgQEAgc3RydWN0IGNtZF9z cGVjIGNtZF90YWJsZVtdID0gewogICAgICAgIltvcHRpb25zXSA8RG9tYWluPiIsCiAgICAgICAi LWwgPGxldmVsPiAgICAgICAgU3BlY2lmeSB0aGUgY2FjaGUgbGV2ZWwgdG8gcHJvY2Vzcywgb3Ro ZXJ3aXNlIEwzIGNhY2hlIGlzIHByb2Nlc3NlZFxuIgogICAgIH0sCisgICAgeyAicHNyLW1iYS1z aG93IiwKKyAgICAgICZtYWluX3Bzcl9tYmFfc2hvdywgMCwgMSwKKyAgICAgICJTaG93IE1lbW9y eSBCYW5kd2lkdGggQWxsb2NhdGlvbiBpbmZvcm1hdGlvbiIsCisgICAgICAiPERvbWFpbj4iLAor ICAgIH0sCiAjZW5kaWYKICAgICB7ICJ1c2JjdHJsLWF0dGFjaCIsCiAgICAgICAmbWFpbl91c2Jj dHJsX2F0dGFjaCwgMCwgMSwKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3Bzci5jIGIvdG9vbHMv eGwveGxfcHNyLmMKaW5kZXggYWI0N2Q5Ni4uMGVlZGJjNyAxMDA2NDQKLS0tIGEvdG9vbHMveGwv eGxfcHNyLmMKKysrIGIvdG9vbHMveGwveGxfcHNyLmMKQEAgLTMyNywxOSArMzI3LDI2IEBAIG91 dDoKICAgICByZXR1cm4gcmM7CiB9CiAKLXN0YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRfb25lX2Rv bWFpbl9jYm1fdHlwZSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2NibV90eXBl IHR5cGUpCitzdGF0aWMgdm9pZCBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZSh1aW50MzJf dCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhs X3Bzcl9od19pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfcHNyX3R5cGUgdHlwZSkKIHsKLSAgICB1aW50NjRfdCBjYm07CisgICAgdWlu dDY0X3QgdmFsOwogCi0gICAgaWYgKCFsaWJ4bF9wc3JfY2F0X2dldF9jYm0oY3R4LCBkb21pZCwg dHlwZSwgc29ja2V0aWQsICZjYm0pKQotICAgICAgICBwcmludGYoIiUjMTYiUFJJeDY0LCBjYm0p OworICAgIGlmICghbGlieGxfcHNyX2dldF92YWwoY3R4LCBkb21pZCwgdHlwZSwgaW5mby0+aWQs ICZ2YWwpKSB7CisgICAgICAgIGlmICh0eXBlID09IExJQlhMX1BTUl9DQk1fVFlQRV9NQkFfVEhS VEwgJiYgaW5mby0+dS5tYmEubGluZWFyKQorICAgICAgICAgICAgcHJpbnRmKCIlMTYiUFJJdTY0 LCB2YWwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmludGYoIiUjMTYiUFJJeDY0LCB2 YWwpOworICAgIH0KICAgICBlbHNlCiAgICAgICAgIHByaW50ZigiJTE2cyIsICJlcnJvciIpOwog fQogCi1zdGF0aWMgdm9pZCBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtKHVpbnQzMl90IGRv bWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBjZHBfZW5hYmxlZCwgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyB2b2lk IHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbCh1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5mbywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfZmVhdF90eXBlIHR5cGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkKIHsK ICAgICBjaGFyICpkb21haW5fbmFtZTsKIApAQCAtMzQ3LDEwNiArMzU0LDE1NSBAQCBzdGF0aWMg dm9pZCBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtKHVpbnQzMl90IGRvbWlkLCB1aW50MzJf dCBzb2NrZXRpZCwKICAgICBwcmludGYoIiU1ZCUyNXMiLCBkb21pZCwgZG9tYWluX25hbWUpOwog ICAgIGZyZWUoZG9tYWluX25hbWUpOwogCi0gICAgc3dpdGNoIChsdmwpIHsKLSAgICBjYXNlIDM6 Ci0gICAgICAgIGlmICghY2RwX2VuYWJsZWQpIHsKLSAgICAgICAgICAgIHBzcl9jYXRfcHJpbnRf b25lX2RvbWFpbl9jYm1fdHlwZShkb21pZCwgc29ja2V0aWQsCisgICAgc3dpdGNoICh0eXBlKSB7 CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVDoKKyAgICAgICAgc3dpdGNoIChsdmwp IHsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKCFpbmZvLT51LmNhdC5jZHBfZW5h YmxlZCkgeworICAgICAgICAgICAgICAgIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBlKGRv bWlkLCBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKGRvbWlkLCBzb2NrZXRpZCwKKyAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5f dmFsX3R5cGUoZG9taWQsIGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTV9DT0RFKTsKLSAgICAgICAgICAg IHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZShkb21pZCwgc29ja2V0aWQsCisgICAg ICAgICAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5fdmFsX3R5cGUoZG9taWQsIGluZm8sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUFNSX0NC TV9UWVBFX0wzX0NCTV9EQVRBKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNl IDI6Ci0gICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZShkb21pZCwgc29j a2V0aWQsCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl IDI6CisgICAgICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZShkb21pZCwgaW5m bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX1BTUl9D Qk1fVFlQRV9MMl9DQk0pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoK KyAgICAgICAgICAgIHByaW50ZigiSW5wdXQgbHZsICVkIGlzIHdyb25nISIsIGx2bCk7CisgICAg ICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCJJbnB1 dCBsdmwgJWQgaXMgd3JvbmchIiwgbHZsKTsKKworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQ RV9NQkE6CisgICAgICAgIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBlKGRvbWlkLCBpbmZv LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9QU1JfQ0JNX1RZ UEVfTUJBX1RIUlRMKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcHJpbnRmKCJcbiIp OwogfQogCi1zdGF0aWMgaW50IHBzcl9jYXRfcHJpbnRfZG9tYWluX2NibSh1aW50MzJfdCBkb21p ZCwgdWludDMyX3Qgc29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sIGNkcF9lbmFibGVkLCB1bnNpZ25lZCBpbnQgbHZsKQorc3RhdGljIGludCBwc3JfcHJp bnRfZG9tYWluX3ZhbCh1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfcHNyX2h3X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkKIHsKICAgICBpbnQgaSwgbnJfZG9tYWluczsKICAg ICBsaWJ4bF9kb21pbmZvICpsaXN0OwogCiAgICAgaWYgKGRvbWlkICE9IElOVkFMSURfRE9NSUQp IHsKLSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibShkb21pZCwgc29ja2V0aWQs IGNkcF9lbmFibGVkLCBsdmwpOworICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWwoZG9t aWQsIGluZm8sIHR5cGUsIGx2bCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlm ICghKGxpc3QgPSBsaWJ4bF9saXN0X2RvbWFpbihjdHgsICZucl9kb21haW5zKSkpIHsKLSAgICAg ICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0IGRvbWFpbiBsaXN0IGZvciBjYm0gZGlz cGxheVxuIik7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJG YWlsZWQgdG8gZ2V0IGRvbWFpbiBsaXN0IGZvciB2YWx1ZSBkaXNwbGF5XG4iKTsKKyAgICAgICAg cmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnJfZG9t YWluczsgaSsrKQotICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtKGxpc3RbaV0u ZG9taWQsIHNvY2tldGlkLCBjZHBfZW5hYmxlZCwgbHZsKTsKKyAgICAgICAgcHNyX3ByaW50X29u ZV9kb21haW5fdmFsKGxpc3RbaV0uZG9taWQsIGluZm8sIHR5cGUsIGx2bCk7CiAgICAgbGlieGxf ZG9taW5mb19saXN0X2ZyZWUobGlzdCwgbnJfZG9tYWlucyk7CiAKICAgICByZXR1cm4gMDsKIH0K IAotc3RhdGljIGludCBwc3JfY2F0X3ByaW50X3NvY2tldCh1aW50MzJfdCBkb21pZCwgbGlieGxf cHNyX2NhdF9pbmZvICppbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgbHZsKQorc3RhdGljIGludCBwc3JfcHJpbnRfc29ja2V0KHVpbnQzMl90IGRvbWlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9od19pbmZvICppbmZvLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbHZsKQogewotICAgIGludCBy YzsKLSAgICB1aW50MzJfdCBsM19jYWNoZV9zaXplOwotCiAgICAgcHJpbnRmKCIlLTE2czogJXVc biIsICJTb2NrZXQgSUQiLCBpbmZvLT5pZCk7CiAKLSAgICAvKiBTbyBmYXIsIENNVCBvbmx5IHN1 cHBvcnRzIEwzIGNhY2hlLiAqLwotICAgIGlmIChsdmwgPT0gMykgewotICAgICAgICByYyA9IGxp YnhsX3Bzcl9jbXRfZ2V0X2wzX2NhY2hlX3NpemUoY3R4LCBpbmZvLT5pZCwgJmwzX2NhY2hlX3Np emUpOwotICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFp bGVkIHRvIGdldCBsMyBjYWNoZSBzaXplIGZvciBzb2NrZXQ6JWRcbiIsCi0gICAgICAgICAgICAg ICAgICAgIGluZm8tPmlkKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICBzd2l0Y2ggKHR5 cGUpIHsKKyAgICBjYXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUOgorICAgIHsKKyAgICAgICAg aW50IHJjOworICAgICAgICB1aW50MzJfdCBsM19jYWNoZV9zaXplOworCisgICAgICAgIC8qIFNv IGZhciwgQ01UIG9ubHkgc3VwcG9ydHMgTDMgY2FjaGUuICovCisgICAgICAgIGlmIChsdmwgPT0g MykgeworICAgICAgICAgICAgcmMgPSBsaWJ4bF9wc3JfY210X2dldF9sM19jYWNoZV9zaXplKGN0 eCwgaW5mby0+aWQsICZsM19jYWNoZV9zaXplKTsKKyAgICAgICAgICAgIGlmIChyYykgeworICAg ICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBsMyBjYWNoZSBzaXpl IGZvciBzb2NrZXQ6JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT5pZCk7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJp bnRmKCIlLTE2czogJXVLQlxuIiwgIkwzIENhY2hlIiwgbDNfY2FjaGVfc2l6ZSk7CiAgICAgICAg IH0KLSAgICAgICAgcHJpbnRmKCIlLTE2czogJXVLQlxuIiwgIkwzIENhY2hlIiwgbDNfY2FjaGVf c2l6ZSk7CisKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZhdWx0IENCTSIs CisgICAgICAgICAgICAgICAoMXVsbCA8PCBpbmZvLT51LmNhdC5jYm1fbGVuKSAtIDEpOworICAg ICAgICBpZiAoaW5mby0+dS5jYXQuY2RwX2VuYWJsZWQpCisgICAgICAgICAgICBwcmludGYoIiU1 cyUyNXMlMTZzJTE2c1xuIiwgIklEIiwgIk5BTUUiLCAiQ0JNIChjb2RlKSIsICJDQk0gKGRhdGEp Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnNcbiIsICJJ RCIsICJOQU1FIiwgIkNCTSIpOworCisgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHByaW50 ZigiJS0xNnM6ICUjbGx4XG4iLCAiRGVmYXVsdCBDQk0iLCAoMXVsbCA8PCBpbmZvLT5jYm1fbGVu KSAtIDEpOwotICAgIGlmIChpbmZvLT5jZHBfZW5hYmxlZCkKLSAgICAgICAgcHJpbnRmKCIlNXMl MjVzJTE2cyUxNnNcbiIsICJJRCIsICJOQU1FIiwgIkNCTSAoY29kZSkiLCAiQ0JNIChkYXRhKSIp OwotICAgIGVsc2UKLSAgICAgICAgcHJpbnRmKCIlNXMlMjVzJTE2c1xuIiwgIklEIiwgIk5BTUUi LCAiQ0JNIik7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX01CQToKKyAgICAgICAgcHJp bnRmKCIlLTE2czogJXVcbiIsICJEZWZhdWx0IFRIUlRMIiwgMCk7CisgICAgICAgIHByaW50Zigi JTVzJTI1cyUxNnNcbiIsICJJRCIsICJOQU1FIiwgIlRIUlRMIik7CisgICAgICAgIGJyZWFrOwog Ci0gICAgcmV0dXJuIHBzcl9jYXRfcHJpbnRfZG9tYWluX2NibShkb21pZCwgaW5mby0+aWQsIGlu Zm8tPmNkcF9lbmFibGVkLCBsdmwpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiSW5wdXQgZmVhdHVyZSB0eXBlICVkIGlzIHdyb25nXG4iLCB0eXBlKTsKKyAgICAgICAg cmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICB9CisKKyAgICByZXR1cm4gcHNyX3ByaW50X2RvbWFp bl92YWwoZG9taWQsIGluZm8sIHR5cGUsIGx2bCk7CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NhdF9z aG93KHVpbnQzMl90IGRvbWlkLCB1bnNpZ25lZCBpbnQgbHZsKQorc3RhdGljIGludCBwc3JfdmFs X3Nob3codWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3Jf ZmVhdF90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbHZs KQogewogICAgIHVuc2lnbmVkIGludCBpLCBucjsKICAgICBpbnQgcmM7Ci0gICAgbGlieGxfcHNy X2NhdF9pbmZvICppbmZvOworICAgIGxpYnhsX3Bzcl9od19pbmZvICppbmZvOwogCi0gICAgaWYg KGx2bCAhPSAyICYmIGx2bCAhPSAzKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW5wdXQg bHZsICVkIGlzIHdyb25nXG4iLCBsdmwpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug TElCWExfUFNSX0ZFQVRfVFlQRV9DQVQ6CisgICAgICAgIGlmIChsdmwgIT0gMiAmJiBsdmwgIT0g MykgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnB1dCBsdmwgJWQgaXMgd3Jvbmdc biIsIGx2bCk7CisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICB9Cisg ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX01CQToKKyAgICAg ICAgaWYgKGx2bCkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAg ICAgICAgICJVbmV4cGVjdGVkIGx2bCBwYXJhbWV0ZXIgJWQgZm9yIE1CQSBmZWF0dXJlXG4iLCBs dmwpOworICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgfQorICAgICAg ICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW5wdXQg ZmVhdHVyZSB0eXBlICVkIGlzIHdyb25nXG4iLCB0eXBlKTsKICAgICAgICAgcmV0dXJuIEVYSVRf RkFJTFVSRTsKICAgICB9CiAKLSAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAm aW5mbywgJm5yLCBsdmwpOworICAgIHJjID0gbGlieGxfcHNyX2dldF9od19pbmZvKGN0eCwgdHlw ZSwgbHZsLCAmbnIsICZpbmZvKTsKICAgICBpZiAocmMpIHsKLSAgICAgICAgZnByaW50ZihzdGRl cnIsICJGYWlsZWQgdG8gZ2V0ICVzIGNhdCBpbmZvXG4iLCAobHZsID09IDMpPyJMMyI6IkwyIik7 CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBpbmZvXG4iKTsKICAgICAg ICAgcmV0dXJuIHJjOwogICAgIH0KIAogICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7Ci0g ICAgICAgIHJjID0gcHNyX2NhdF9wcmludF9zb2NrZXQoZG9taWQsIGluZm8gKyBpLCBsdmwpOwor ICAgICAgICByYyA9IHBzcl9wcmludF9zb2NrZXQoZG9taWQsIGluZm8gKyBpLCB0eXBlLCBsdmwp OwogICAgICAgICBpZiAocmMpCiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKIG91dDoK LSAgICBsaWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKKyAgICBsaWJ4bF9w c3JfaHdfaW5mb19saXN0X2ZyZWUoaW5mbywgbnIpOwogICAgIHJldHVybiByYzsKIH0KIApAQCAt NDc1LDYgKzUzMSwyNyBAQCBzdGF0aWMgaW50IHBzcl9sMl9jYXRfaHdpbmZvKHZvaWQpCiAgICAg cmV0dXJuIHJjOwogfQogCitpbnQgbWFpbl9wc3JfbWJhX3Nob3coaW50IGFyZ2MsIGNoYXIgKiph cmd2KQoreworICAgIGludCBvcHQ7CisgICAgdWludDMyX3QgZG9taWQ7CisKKyAgICBTV0lUQ0hf Rk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInBzci1tYmEtc2hvdyIsIDApIHsKKyAgICAgICAg LyogTm8gb3B0aW9ucyAqLworICAgIH0KKworICAgIGlmIChvcHRpbmQgPj0gYXJnYykKKyAgICAg ICAgZG9taWQgPSBJTlZBTElEX0RPTUlEOworICAgIGVsc2UgaWYgKG9wdGluZCA9PSBhcmdjIC0g MSkKKyAgICAgICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZF0pOworICAgIGVsc2Ug eworICAgICAgICBoZWxwKCJwc3ItbWJhLXNob3ciKTsKKyAgICAgICAgcmV0dXJuIDI7CisgICAg fQorCisgICAgcmV0dXJuIHBzcl92YWxfc2hvdyhkb21pZCwgTElCWExfUFNSX0ZFQVRfVFlQRV9N QkEsIDApOworfQorCiBzdGF0aWMgaW50IHBzcl9tYmFfaHdpbmZvKHZvaWQpCiB7CiAgICAgaW50 IHJjOwpAQCAtNjEyLDcgKzY4OSw3IEBAIGludCBtYWluX3Bzcl9jYXRfc2hvdyhpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAgICAgICAgIHJldHVybiAyOwogICAgIH0KIAotICAgIHJldHVybiBwc3Jf Y2F0X3Nob3coZG9taWQsIGx2bCk7CisgICAgcmV0dXJuIHBzcl92YWxfc2hvdyhkb21pZCwgTElC WExfUFNSX0ZFQVRfVFlQRV9DQVQsIGx2bCk7CiB9CiAKIGludCBtYWluX3Bzcl9od2luZm8oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK