From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH RESEND v5 21/24] tools: L2 CAT: support get HW info for L2 CAT. Date: Thu, 19 Jan 2017 14:01:23 +0800 Message-ID: <1484805686-7249-22-git-send-email-yi.y.sun@linux.intel.com> References: <1484805686-7249-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 1cU5os-0007Px-VM for xen-devel@lists.xenproject.org; Thu, 19 Jan 2017 06:03:35 +0000 In-Reply-To: <1484805686-7249-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: wei.liu2@citrix.com, konrad.wilk@oracle.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHhsL3hjIGNoYW5nZXMgdG8gc3VwcG9ydCBnZXQgSFcgaW5m bwpmb3IgTDIgQ0FULgoKJ3hsIHBzci1od2luZm8nIGlzIHVwZGF0ZWQgdG8gc2hvdyBib3RoIEwz IENBVCBhbmQgTDIgQ0FUCmluZm8uCgpFeGFtcGxlKG9uIG1hY2hpbmUgd2hpY2ggb25seSBzdXBw b3J0cyBMMiBDQVQpOgpDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xvZ3kgKENNVCk6CkVuYWJsZWQg ICAgICAgICA6IDAKQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOiBMMgpTb2NrZXQg SUQgICAgICAgOiAwCk1heGltdW0gQ09TICAgICA6IDMKQ0JNIGxlbmd0aCAgICAgIDogOApEZWZh dWx0IENCTSAgICAgOiAweGZmCgpTaWduZWQtb2ZmLWJ5OiBIZSBDaGVuIDxoZS5jaGVuQGxpbnV4 LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5j b20+Ci0tLQp2NToKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlIHRvIHJlbW92ZSBlcnJvciBs b2cuCiAgICAtIHJlcGxhY2UgdW5uZWNlc3NhcnkgJ3JldHVybicgdG8gJ2JyZWFrJy4KICAgIC0g cmVzdG9yZSAnbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5mbycgdG8ga2VlcCBpbnRlcmZhY2UgYmFj a3dhcmQgY29tcGF0aWJsZQogICAgICBidXQgY2hhbmdlIGNvZGVzIGluIGl0IHRvIGNhbGwgbmV3 IGZ1bmN0aW9uIHRvIGdldCBodyBpbmZvLgogICAgLSBhZGQgJ0wyX0NCTScgaW50byAncHNyX2Ni bV90eXBlJyBiZWNhdXNlIGl0IGlzIGludGVyZmFjZSBjaGFuZ2Ugd2hpY2gKICAgICAgc2hvdWxk IGJlIGluIHNhbWUgcGF0Y2ggd2l0aCBuZXcgJ0xJQlhMX0hBVkVfJyBtYWNyby4KICAgIC0gYWRk anVzdCBsb2dzIHNlbnRlbmNlIHRvIG1ha2UgdW5uZWNlc3NhcnkgZXJyb3IgbG9ncyBub3Qgc2hv dy4KLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICA2ICsrLS0tCiB0b29scy9s aWJ4Yy94Y19wc3IuYyAgICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLQogdG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAgICAgfCAgOSArKysrKysrKwogdG9vbHMv bGlieGwvbGlieGxfcHNyLmMgICAgICAgfCAxOSArKysrKysrKysrKy0tLS0tCiB0b29scy9saWJ4 bC9saWJ4bF90eXBlcy5pZGwgICB8ICAxICsKIHRvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyAgICAg IHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogNiBmaWxl cyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVu Y3RybC5oCmluZGV4IDRhYjBmNTcuLjdlYTBjOTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2lu Y2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0y NjI2LDkgKzI2MjYsOSBAQCBpbnQgeGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJm YWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogaW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRh KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB4Y19wc3JfY2F0X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpkYXRhKTsKLWludCB4Y19wc3JfY2F0 X2dldF9sM19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNibV9sZW4s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpjZHBfZW5hYmxlZCk7CitpbnQgeGNf cHNyX2NhdF9nZXRfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LCB1bnNp Z25lZCBpbnQgbHZsLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmNvc19tYXgs IHVpbnQzMl90ICpjYm1fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqY2RwX2Vu YWJsZWQpOwogCiBpbnQgeGNfZ2V0X2NwdV9sZXZlbGxpbmdfY2Fwcyh4Y19pbnRlcmZhY2UgKnhj aCwgdWludDMyX3QgKmNhcHMpOwogaW50IHhjX2dldF9jcHVfZmVhdHVyZXNldCh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgaW5kZXgsCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3Iu YyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCmluZGV4IDQzYjMyODYuLjZjNjFhYTUgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0z MTcsMjQgKzMxNyw0MCBAQCBpbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJm YWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgIHJldHVybiByYzsKIH0KIAotaW50IHhjX3Bz cl9jYXRfZ2V0X2wzX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3NfbWF4LCB1aW50MzJfdCAqY2Jt X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNkcF9lbmFibGVkKQoraW50 IHhjX3Bzcl9jYXRfZ2V0X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwg dW5zaWduZWQgaW50IGx2bCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3Nf bWF4LCB1aW50MzJfdCAqY2JtX2xlbiwgYm9vbCAqY2RwX2VuYWJsZWQpCiB7Ci0gICAgaW50IHJj OworICAgIGludCByYyA9IC0xOwogICAgIERFQ0xBUkVfU1lTQ1RMOwogCiAgICAgc3lzY3RsLmNt ZCA9IFhFTl9TWVNDVExfcHNyX2NhdF9vcDsKLSAgICBzeXNjdGwudS5wc3JfY2F0X29wLmNtZCA9 IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDNfaW5mbzsKICAgICBzeXNjdGwudS5wc3JfY2F0X29w LnRhcmdldCA9IHNvY2tldDsKIAotICAgIHJjID0geGNfc3lzY3RsKHhjaCwgJnN5c2N0bCk7Ci0g ICAgaWYgKCAhcmMgKQotICAgIHsKLSAgICAgICAgKmNvc19tYXggPSBzeXNjdGwudS5wc3JfY2F0 X29wLnUubDNfaW5mby5jb3NfbWF4OwotICAgICAgICAqY2JtX2xlbiA9IHN5c2N0bC51LnBzcl9j YXRfb3AudS5sM19pbmZvLmNibV9sZW47Ci0gICAgICAgICpjZHBfZW5hYmxlZCA9IHN5c2N0bC51 LnBzcl9jYXRfb3AudS5sM19pbmZvLmZsYWdzICYKLSAgICAgICAgICAgICAgICAgICAgICAgWEVO X1NZU0NUTF9QU1JfQ0FUX0wzX0NEUDsKKyAgICBzd2l0Y2ggKCBsdmwgKSB7CisgICAgY2FzZSAy OgorICAgICAgICBzeXNjdGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX0NBVF9n ZXRfbDJfaW5mbzsKKyAgICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKKyAgICAg ICAgaWYgKCAhcmMgKQorICAgICAgICB7CisgICAgICAgICAgICAqY29zX21heCA9IHN5c2N0bC51 LnBzcl9jYXRfb3AudS5sMl9pbmZvLmNvc19tYXg7CisgICAgICAgICAgICAqY2JtX2xlbiA9IHN5 c2N0bC51LnBzcl9jYXRfb3AudS5sMl9pbmZvLmNibV9sZW47CisgICAgICAgICAgICAqY2RwX2Vu YWJsZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6Cisg ICAgICAgIHN5c2N0bC51LnBzcl9jYXRfb3AuY21kID0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9s M19pbmZvOworICAgICAgICByYyA9IHhjX3N5c2N0bCh4Y2gsICZzeXNjdGwpOworICAgICAgICBp ZiAoICFyYyApCisgICAgICAgIHsKKyAgICAgICAgICAgICpjb3NfbWF4ID0gc3lzY3RsLnUucHNy X2NhdF9vcC51LmwzX2luZm8uY29zX21heDsKKyAgICAgICAgICAgICpjYm1fbGVuID0gc3lzY3Rs LnUucHNyX2NhdF9vcC51LmwzX2luZm8uY2JtX2xlbjsKKyAgICAgICAgICAgICpjZHBfZW5hYmxl ZCA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5sM19pbmZvLmZsYWdzICYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFhFTl9TWVNDVExfUFNSX0NBVF9MM19DRFA7CisgICAgICAgIH0KKyAgICAg ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZXJybm8gPSBFT1BOT1RTVVBQOworICAg ICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gcmM7CmRpZmYgLS1naXQgYS90b29scy9s aWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaAppbmRleCAzOTI0NDY0Li5jNzVhOTI4 IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhs LmgKQEAgLTkwNCw2ICs5MDQsMTMgQEAgdm9pZCBsaWJ4bF9tYWNfY29weShsaWJ4bF9jdHggKmN0 eCwgbGlieGxfbWFjICpkc3QsIGNvbnN0IGxpYnhsX21hYyAqc3JjKTsKICAqIElmIHRoaXMgaXMg ZGVmaW5lZCwgdGhlIENvZGUgYW5kIERhdGEgUHJpb3JpdGl6YXRpb24gZmVhdHVyZSBpcyBzdXBw b3J0ZWQuCiAgKi8KICNkZWZpbmUgTElCWExfSEFWRV9QU1JfQ0RQIDEKKworLyoKKyAqIExJQlhM X0hBVkVfUFNSX0wyX0NBVAorICoKKyAqIElmIHRoaXMgaXMgZGVmaW5lZCwgdGhlIEwyIENhY2hl IEFsbG9jYXRpb24gVGVjaG5vbG9neSBmZWF0dXJlIGlzIHN1cHBvcnRlZC4KKyAqLworI2RlZmlu ZSBMSUJYTF9IQVZFX1BTUl9MMl9DQVQgMQogI2VuZGlmCiAKIC8qCkBAIC0yMTY2LDYgKzIxNzMs OCBAQCBpbnQgbGlieGxfcHNyX2NhdF9nZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCwKICAqIE9uIHN1Y2Nlc3MsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIGVs ZW1lbnRzIGluICdpbmZvJywKICAqIGFuZCB0aGUgbGVuZ3RoIGluICducicuCiAgKi8KK2ludCBs aWJ4bF9wc3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8g KippbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuciwgdW5zaWduZWQgaW50 IGx2bCk7CiBpbnQgbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGli eGxfcHNyX2NhdF9pbmZvICoqaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAqbnIpOwogdm9pZCBsaWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGxpYnhsX3Bzcl9jYXRf aW5mbyAqbGlzdCwgaW50IG5yKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5j IGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKaW5kZXggZWM1Yzc5ZC4uNjhjNDVkYSAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfcHNy LmMKQEAgLTM1Miw4ICszNTIsOCBAQCBpbnQgbGlieGxfcHNyX2NhdF9nZXRfY2JtKGxpYnhsX2N0 eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCBsaWJ4bF9w c3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKipp bmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpucikKK2ludCBsaWJ4bF9w c3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZv LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuciwgdW5zaWduZWQgaW50IGx2bCkK IHsKICAgICBHQ19JTklUKGN0eCk7CiAgICAgaW50IHJjOwpAQCAtMzgwLDkgKzM4MCw4IEBAIGlu dCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0 X2luZm8gKippbmZvLAogCiAgICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChzb2NrZXRpZCwgc29j a2V0bWFwKSB7CiAgICAgICAgIHB0cltpXS5pZCA9IHNvY2tldGlkOwotICAgICAgICBpZiAoeGNf cHNyX2NhdF9nZXRfbDNfaW5mbyhjdHgtPnhjaCwgc29ja2V0aWQsICZwdHJbaV0uY29zX21heCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0cltpXS5jYm1fbGVuLCAmcHRy W2ldLmNkcF9lbmFibGVkKSkgewotICAgICAgICAgICAgbGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9t c2coZ2MsIGVycm5vKTsKKyAgICAgICAgaWYgKHhjX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LT54Y2gs IHNvY2tldGlkLCBsdmwsICZwdHJbaV0uY29zX21heCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnB0cltpXS5jYm1fbGVuLCAmcHRyW2ldLmNkcF9lbmFibGVkKSkgewogICAgICAg ICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICAgICAgZnJlZShwdHIpOwogICAgICAgICAg ICAgZ290byBvdXQ7CkBAIC0zOTgsNiArMzk3LDE2IEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9 CiAKK2ludCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9w c3JfY2F0X2luZm8gKippbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpu cikKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4 LCBpbmZvLCBuciwgMyk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKIHZvaWQgbGlieGxfcHNyX2Nh dF9pbmZvX2xpc3RfZnJlZShsaWJ4bF9wc3JfY2F0X2luZm8gKmxpc3QsIGludCBucikKIHsKICAg ICBpbnQgaTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xz L2xpYnhsL2xpYnhsX3R5cGVzLmlkbAppbmRleCBhNjEyZDFmLi41YTQwMWI4IDEwMDY0NAotLS0g YS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlw ZXMuaWRsCkBAIC04OTksNiArODk5LDcgQEAgbGlieGxfcHNyX2NibV90eXBlID0gRW51bWVyYXRp b24oInBzcl9jYm1fdHlwZSIsIFsKICAgICAoMSwgIkwzX0NCTSIpLAogICAgICgyLCAiTDNfQ0JN X0NPREUiKSwKICAgICAoMywgIkwzX0NCTV9EQVRBIiksCisgICAgKDQsICJMMl9DQk0iKSwKICAg ICBdKQogCiBsaWJ4bF9wc3JfY2F0X2luZm8gPSBTdHJ1Y3QoInBzcl9jYXRfaW5mbyIsIFsKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGlt cGwuYwppbmRleCA3ZThhOGFlLi40MmQ2ODI3IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC94bF9j bWRpbXBsLmMKKysrIGIvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCkBAIC05MzMxLDIxICs5MzMx LDE5IEBAIGludCBtYWluX3Bzcl9jbXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB9CiAj ZW5kaWYKIAotI2lmZGVmIExJQlhMX0hBVkVfUFNSX0NBVAotc3RhdGljIGludCBwc3JfY2F0X2h3 aW5mbyh2b2lkKQorI2lmIGRlZmluZWQoTElCWExfSEFWRV9QU1JfQ0FUKSB8fCBkZWZpbmVkKExJ QlhMX0hBVkVfUFNSX0wyX0NBVCkKK3N0YXRpYyBpbnQgcHNyX2wzX2NhdF9od2luZm8odm9pZCkK IHsKLSAgICBpbnQgcmM7Ci0gICAgaW50IGksIG5yOworICAgIGludCByYywgbnI7CisgICAgdW5z aWduZWQgaW50IGk7CiAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKICAgICBsaWJ4bF9wc3Jf Y2F0X2luZm8gKmluZm87CiAKLSAgICBwcmludGYoIkNhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9n eSAoQ0FUKTpcbiIpOwotCi0gICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGN0eCwg JmluZm8sICZucik7Ci0gICAgaWYgKHJjKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFp bGVkIHRvIGdldCBjYXQgaW5mb1xuIik7CisgICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9pbmZv KGN0eCwgJmluZm8sICZuciwgMyk7CisgICAgaWYgKHJjKQogICAgICAgICByZXR1cm4gcmM7Ci0g ICAgfQorCisgICAgcHJpbnRmKCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6IEwz XG4iKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7CiAgICAgICAgIHJjID0gbGli eGxfcHNyX2NtdF9nZXRfbDNfY2FjaGVfc2l6ZShjdHgsIGluZm9baV0uaWQsICZsM19jYWNoZV9z aXplKTsKQEAgLTk0NTQsNyArOTQ1Miw3IEBAIHN0YXRpYyBpbnQgcHNyX2NhdF9zaG93KHVpbnQz Ml90IGRvbWlkKQogICAgIGludCByYzsKICAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87CiAK LSAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2wzX2luZm8oY3R4LCAmaW5mbywgJm5yKTsKKyAg ICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCAzKTsKICAgICBp ZiAocmMpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0IGNhdCBpbmZv XG4iKTsKICAgICAgICAgcmV0dXJuIHJjOwpAQCAtOTQ3MSw2ICs5NDY5LDMyIEBAIG91dDoKICAg ICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgcHNyX2wyX2NhdF9od2luZm8odm9pZCkKK3sK KyAgICBpbnQgcmM7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgaW50IG5yOworICAgIGxpYnhs X3Bzcl9jYXRfaW5mbyAqaW5mbzsKKworICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhj dHgsICZpbmZvLCAmbnIsIDIpOworICAgIGlmIChyYykKKyAgICAgICAgcmV0dXJuIHJjOworCisg ICAgcHJpbnRmKCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6IEwyXG4iKTsKKwor ICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7CisgICAgICAgIC8qIFRoZXJlIGlzIG5vIENN VCBvbiBMMiBjYWNoZSBzbyBmYXIuICovCisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAi U29ja2V0IElEIiwgaW5mb1tpXS5pZCk7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAi TWF4aW11bSBDT1MiLCBpbmZvW2ldLmNvc19tYXgpOworICAgICAgICBwcmludGYoIiUtMTZzOiAl dVxuIiwgIkNCTSBsZW5ndGgiLCBpbmZvW2ldLmNibV9sZW4pOworICAgICAgICBwcmludGYoIiUt MTZzOiAlI2xseFxuIiwgIkRlZmF1bHQgQ0JNIiwKKyAgICAgICAgICAgICAgICgxdWxsIDw8IGlu Zm9baV0uY2JtX2xlbikgLSAxKTsKKyAgICB9CisKKyAgICBsaWJ4bF9wc3JfY2F0X2luZm9fbGlz dF9mcmVlKGluZm8sIG5yKTsKKyAgICByZXR1cm4gcmM7Cit9CisKIGludCBtYWluX3Bzcl9jYXRf Y2JtX3NldChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgdWludDMyX3QgZG9taWQ7CkBA IC05NTg4LDcgKzk2MTIsMTEgQEAgaW50IG1haW5fcHNyX2h3aW5mbyhpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAgICAgICAgIHJldCA9IHBzcl9jbXRfaHdpbmZvKCk7CiAKICAgICBpZiAoIXJldCAm JiAoYWxsIHx8IGNhdCkpCi0gICAgICAgIHJldCA9IHBzcl9jYXRfaHdpbmZvKCk7CisgICAgICAg IHJldCA9IHBzcl9sM19jYXRfaHdpbmZvKCk7CisKKyAgICAvKiBMMiBDQVQgaXMgaW5kZXBlbmRl bnQgb2YgQ01UIGFuZCBMMyBDQVQgKi8KKyAgICBpZiAoYWxsIHx8IGNhdCkKKyAgICAgICAgcmV0 ID0gcHNyX2wyX2NhdF9od2luZm8oKTsKIAogICAgIHJldHVybiByZXQ7CiB9Ci0tIAoxLjkuMQoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo=