Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u7w0s-00A4fK-IU for pgsql-hackers@arkaria.postgresql.org; Thu, 24 Apr 2025 12:49:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u7w0q-00HBDu-My for pgsql-hackers@arkaria.postgresql.org; Thu, 24 Apr 2025 12:49:09 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u7w0q-00HBDm-0p for pgsql-hackers@lists.postgresql.org; Thu, 24 Apr 2025 12:49:09 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1u7w0l-001iGC-2u for pgsql-hackers@lists.postgresql.org; Thu, 24 Apr 2025 12:49:07 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id B733B61A72; Thu, 24 Apr 2025 21:48:58 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_deacc7c085cc282ae6c35ebfb99f3f03" Content-Transfer-Encoding: 7bit Date: Thu, 24 Apr 2025 21:48:57 +0900 From: torikoshia To: Atsushi Torikoshi Cc: Robert Haas , samimseih@gmail.com, pgsql-hackers@lists.postgresql.org, destrex271@gmail.com Subject: Re: RFC: Logging plan of the running query In-Reply-To: References: <2aedcb5e8120bfdee994775e660f8718@oss.nttdata.com> <174144854199.294105.9417032645816235284.pgcf@coridan.postgresql.org> <784224198089cbe3cc3825332f195475@oss.nttdata.com> <8de51267059a43f53848c69a2bd9bc3b@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <8f99161d84373ea46fb305ad75affa28@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_deacc7c085cc282ae6c35ebfb99f3f03 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi, Attached a rebased version of the patch. -- Regards, -- Atsushi Torikoshi Seconded from NTT DATA GROUP CORPORATION to SRA OSS K.K. --=_deacc7c085cc282ae6c35ebfb99f3f03 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v44-0001-Add-function-to-log-the-plan-of-the-currently-ru.patch Content-Disposition: attachment; filename=v44-0001-Add-function-to-log-the-plan-of-the-currently-ru.patch; size=36427 RnJvbSAxMTI0NjcyMzhmNTg1YmIzMzk4ZDg2YWM2ZTFhNzFjYWE2NTQ5ZmI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFRodSwgMjQgQXByIDIwMjUgMjA6NTA6NDEgKzA5MDAKU3ViamVjdDog W1BBVENIIHY0NF0gQWRkIGZ1bmN0aW9uIHRvIGxvZyB0aGUgcGxhbiBvZiB0aGUgY3VycmVudGx5 IHJ1bm5pbmcKIHF1ZXJ5CgpDdXJyZW50bHksIHdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlIHF1ZXJ5 IGV4ZWN1dGlvbiB0byBmaW5pc2gKdG8ga25vdyBpdHMgcGxhbiBlaXRoZXIgdXNpbmcgRVhQTEFJ TiBBTkFMWVpFIG9yIGF1dG9fZXhwbGFpbi4KVGhpcyBpcyBub3Qgc28gY29udmVuaWVudCwgZm9y IGV4YW1wbGUgd2hlbiBpbnZlc3RpZ2F0aW5nCmxvbmctcnVubmluZyBxdWVyaWVzIG9uIHByb2R1 Y3Rpb24gZW52aXJvbm1lbnRzLgpUbyBpbXByb3ZlIHRoaXMgc2l0dWF0aW9uLCB0aGlzIHBhdGNo IGFkZHMgcGdfbG9nX3F1ZXJ5X3BsYW4oKQpmdW5jdGlvbiB0aGF0IHJlcXVlc3RzIHRvIGxvZyB0 aGUgcGxhbiBvZiB0aGUgY3VycmVudGx5CmV4ZWN1dGluZyBxdWVyeS4KCk9uIHJlY2VpcHQgb2Yg dGhlIHJlcXVlc3QsIGNvZGVzIGZvciBsb2dnaW5nIHBsYW4gaXMgd3JhcHBlZAp0byBldmVyeSBF eGVjUHJvY05vZGUgYW5kIHdoZW4gdGhlIGV4ZWN1dG9yIHJ1bnMgb25lIG9mCkV4ZWNQcm9jTm9k ZSwgdGhlIHBsYW4gaXMgYWN0dWFsbHkgbG9nZ2VkLiBUaGVzZSB3cmFwcGVycyBhcmUKdW53cmFw cGVkIHdoZW4gb25jZSB0aGUgcGxhbiBpcyBsb2dnZWQuCkluIHRoaXMgd2F5LCB3ZSBjYW4gYXZv aWQgYWRkaW5nIHRoZSBvdmVyaGVhZCB3aGljaCB3ZSdsbCBmYWNlCndoZW4gYWRkaW5nIENIRUNL X0ZPUl9JTlRFUlJVUFRTKCkgbGlrZSBtZWNoYW5pc21zIGluIHNvbWV3aGVyZQppbiBleGVjdXRv ciBjb2RlcyBzYWZlbHkuCgpCeSBkZWZhdWx0LCBvbmx5IHN1cGVydXNlcnMgYXJlIGFsbG93ZWQg dG8gcmVxdWVzdCB0byBsb2cgdGhlCnBsYW5zIGJlY2F1c2UgYWxsb3dpbmcgYW55IHVzZXJzIHRv IGlzc3VlIHRoaXMgcmVxdWVzdCBhdCBhbgp1bmJvdW5kZWQgcmF0ZSB3b3VsZCBjYXVzZSBsb3Rz IG9mIGxvZyBtZXNzYWdlcyBhbmQgd2hpY2ggY2FuCmxlYWQgdG8gZGVuaWFsIG9mIHNlcnZpY2Uu CgotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAgICAgICAgIHwgIDI0 ICstCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAgICAgICAgICAgICB8ICA1NSAr KysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgICAgIHwgICA3ICsK IHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgICAgIHwgICAyICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5jICAgICAgIHwgMzY4ICsrKysrKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgIHwg IDM4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICB8ICAxMCAr CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICB8ICAgNCArCiBz cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy9keW5hbWljX2V4cGxhaW4uaCAgICAgICB8ICAyNiArKwogc3JjL2luY2x1ZGUv Y29tbWFuZHMvZXhwbGFpbi5oICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvY29t bWFuZHMvZXhwbGFpbl9zdGF0ZS5oICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbWlzY2Fk bWluLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j c2lnbmFsLmggICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdGNvcC9wcXVlcnkuaCAg ICAgICAgICAgICAgICAgICAgfCAgIDEgLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNj X2Z1bmN0aW9ucy5vdXQgfCAgNTQgKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0 aW9ucy5zcWwgICAgICB8ICA0MSArKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDYxMyBpbnNlcnRpb25z KCspLCA0MyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9jb21t YW5kcy9keW5hbWljX2V4cGxhaW4uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2Nv bW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5oCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxh aW4vYXV0b19leHBsYWluLmMgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpp bmRleCBjZDY2MjUwMjBhLi5lNzIwZGRmMzlmIDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhw bGFpbi9hdXRvX2V4cGxhaW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxh aW4uYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgogCiAjaW5jbHVkZSAi YWNjZXNzL3BhcmFsbGVsLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZHluYW1pY19leHBsYWluLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxh aW5fZm9ybWF0LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5oIgpAQCAtNDEy LDI2ICs0MTMsOSBAQCBleHBsYWluX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQog CQkJZXMtPmZvcm1hdCA9IGF1dG9fZXhwbGFpbl9sb2dfZm9ybWF0OwogCQkJZXMtPnNldHRpbmdz ID0gYXV0b19leHBsYWluX2xvZ19zZXR0aW5nczsKIAotCQkJRXhwbGFpbkJlZ2luT3V0cHV0KGVz KTsKLQkJCUV4cGxhaW5RdWVyeVRleHQoZXMsIHF1ZXJ5RGVzYyk7Ci0JCQlFeHBsYWluUXVlcnlQ YXJhbWV0ZXJzKGVzLCBxdWVyeURlc2MtPnBhcmFtcywgYXV0b19leHBsYWluX2xvZ19wYXJhbWV0 ZXJfbWF4X2xlbmd0aCk7Ci0JCQlFeHBsYWluUHJpbnRQbGFuKGVzLCBxdWVyeURlc2MpOwotCQkJ aWYgKGVzLT5hbmFseXplICYmIGF1dG9fZXhwbGFpbl9sb2dfdHJpZ2dlcnMpCi0JCQkJRXhwbGFp blByaW50VHJpZ2dlcnMoZXMsIHF1ZXJ5RGVzYyk7Ci0JCQlpZiAoZXMtPmNvc3RzKQotCQkJCUV4 cGxhaW5QcmludEpJVFN1bW1hcnkoZXMsIHF1ZXJ5RGVzYyk7Ci0JCQlFeHBsYWluRW5kT3V0cHV0 KGVzKTsKLQotCQkJLyogUmVtb3ZlIGxhc3QgbGluZSBicmVhayAqLwotCQkJaWYgKGVzLT5zdHIt PmxlbiA+IDAgJiYgZXMtPnN0ci0+ZGF0YVtlcy0+c3RyLT5sZW4gLSAxXSA9PSAnXG4nKQotCQkJ CWVzLT5zdHItPmRhdGFbLS1lcy0+c3RyLT5sZW5dID0gJ1wwJzsKLQotCQkJLyogRml4IEpTT04g dG8gb3V0cHV0IGFuIG9iamVjdCAqLwotCQkJaWYgKGF1dG9fZXhwbGFpbl9sb2dfZm9ybWF0ID09 IEVYUExBSU5fRk9STUFUX0pTT04pCi0JCQl7Ci0JCQkJZXMtPnN0ci0+ZGF0YVswXSA9ICd7JzsK LQkJCQllcy0+c3RyLT5kYXRhW2VzLT5zdHItPmxlbiAtIDFdID0gJ30nOwotCQkJfQorCQkJRXhw bGFpblN0cmluZ0Fzc2VtYmxlKGVzLCBxdWVyeURlc2MsIGF1dG9fZXhwbGFpbl9sb2dfZm9ybWF0 LAorCQkJCQkJCQkgIGF1dG9fZXhwbGFpbl9sb2dfdHJpZ2dlcnMsCisJCQkJCQkJCSAgYXV0b19l eHBsYWluX2xvZ19wYXJhbWV0ZXJfbWF4X2xlbmd0aCk7CiAKIAkJCS8qCiAJCQkgKiBOb3RlOiB3 ZSByZWx5IG9uIHRoZSBleGlzdGluZyBsb2dnaW5nIG9mIGNvbnRleHQgb3IKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDU3 NGE1NDRkOWYuLjEzZGMwYTc3NDUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMjg4MjIsNiArMjg4MjIsMjkgQEAgYWNs ICAgICAgfCB7cG9zdGdyZXM9YXJ3ZER4dG0vcG9zdGdyZXMsZm9vPXIvcG9zdGdyZXN9CiAgICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KIAorICAgICAgPHJvdz4KKyAgICAgICA8 ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUi PgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfbG9nX3F1ZXJ5X3Bs YW48L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+cGdf bG9nX3F1ZXJ5X3BsYW48L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+cGlkPC9wYXJhbWV0ZXI+IDx0 eXBlPmludGVnZXI8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmJvb2xlYW48L3JldHVy bnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmVxdWVzdHMg dG8gbG9nIHRoZSBwbGFuIG9mIHRoZSBxdWVyeSBjdXJyZW50bHkgcnVubmluZyBvbiB0aGUKKyAg ICAgICAgYmFja2VuZCB3aXRoIHNwZWNpZmllZCBwcm9jZXNzIElELgorICAgICAgICBJdCB3aWxs IGJlIGxvZ2dlZCBhdCA8bGl0ZXJhbD5MT0c8L2xpdGVyYWw+IG1lc3NhZ2UgbGV2ZWwgYW5kCisg ICAgICAgIHdpbGwgYXBwZWFyIGluIHRoZSBzZXJ2ZXIgbG9nIGJhc2VkIG9uIHRoZSBsb2cKKyAg ICAgICAgY29uZmlndXJhdGlvbiBzZXQgKFNlZSA8eHJlZiBsaW5rZW5kPSJydW50aW1lLWNvbmZp Zy1sb2dnaW5nIi8+CisgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uKSwgYnV0IHdpbGwgbm90 IGJlIHNlbnQgdG8gdGhlIGNsaWVudAorICAgICAgICByZWdhcmRsZXNzIG9mIDx4cmVmIGxpbmtl bmQ9Imd1Yy1jbGllbnQtbWluLW1lc3NhZ2VzIi8+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyByZXN0cmljdGVkIHRvIHN1cGVydXNlcnMg YnkgZGVmYXVsdCwgYnV0IG90aGVyCisgICAgICAgIHVzZXJzIGNhbiBiZSBncmFudGVkIEVYRUNV VEUgdG8gcnVuIHRoZSBmdW5jdGlvbi4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwv cm93PgorCiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CiAgICAgICAgIDxpbmRleHRlcm0+CkBAIC0y ODk3Miw2ICsyODk5NSwzOCBAQCBzdGF0c190aW1lc3RhbXAgIHwgMjAyNS0wMy0yNCAxMzo1NTo0 Ny43OTY2OTgrMDEKICAgICAgIHdpbGwgYmUgbGVzcyByZXNvdXJjZSBpbnRlbnNpdmUgd2hlbiBv bmx5IHRoZSBsb2NhbCBiYWNrZW5kIGlzIG9mIGludGVyZXN0LgogICAgICA8L3BhcmE+CiAgICAg PC9ub3RlPgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgPGZ1bmN0aW9uPnBnX2xv Z19xdWVyeV9wbGFuPC9mdW5jdGlvbj4gY2FuIGJlIHVzZWQKKyAgICB0byBsb2cgdGhlIHBsYW4g b2YgYSBiYWNrZW5kIHByb2Nlc3MuIEZvciBleGFtcGxlOgorPHByb2dyYW1saXN0aW5nPgorcG9z dGdyZXM9IyBTRUxFQ1QgcGdfbG9nX3F1ZXJ5X3BsYW4oMjAxMTE2KTsKKyBwZ19sb2dfcXVlcnlf cGxhbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorPC9wcm9ncmFt bGlzdGluZz4KK1RoZSBmb3JtYXQgb2YgdGhlIHF1ZXJ5IHBsYW4gaXMgdGhlIHNhbWUgYXMgd2hl biA8bGl0ZXJhbD5WRVJCT1NFPC9saXRlcmFsPiwKKzxsaXRlcmFsPkNPU1RTPC9saXRlcmFsPiwg PGxpdGVyYWw+U0VUVElOR1M8L2xpdGVyYWw+IGFuZAorPGxpdGVyYWw+Rk9STUFUIFRFWFQ8L2xp dGVyYWw+IGFyZSB1c2VkIGluIHRoZSA8Y29tbWFuZD5FWFBMQUlOPC9jb21tYW5kPgorY29tbWFu ZC4gRm9yIGV4YW1wbGU6Cis8c2NyZWVuPgorTE9HOiAgcXVlcnkgcGxhbiBydW5uaW5nIG9uIGJh Y2tlbmQgd2l0aCBQSUQgMjAxMTE2IGlzOgorICAgICAgICBRdWVyeSBUZXh0OiBTRUxFQ1QgKiBG Uk9NIHBnYmVuY2hfYWNjb3VudHM7CisgICAgICAgIFNlcSBTY2FuIG9uIHB1YmxpYy5wZ2JlbmNo X2FjY291bnRzICAoY29zdD0wLjAwLi41Mjc4Ny4wMCByb3dzPTIwMDAwMDAgd2lkdGg9OTcpCisg ICAgICAgICAgT3V0cHV0OiBhaWQsIGJpZCwgYWJhbGFuY2UsIGZpbGxlcgorICAgICAgICBTZXR0 aW5nczogd29ya19tZW0gPSAnMU1CJworICAgICAgICBRdWVyeSBJZGVudGlmaWVyOiA4NjIxMjU1 NTQ2NTYwNzM5NjgwCis8L3NjcmVlbj4KKyAgICBOb3RlIHRoYXQgd2hlbiB0aGUgdGFyZ2V0IGlz IGV4ZWN1dGluZyBuZXN0ZWQgc3RhdGVtZW50cyhzdGF0ZW1lbnRzIGV4ZWN1dGVkCisgICAgaW5z aWRlIGEgZnVuY3Rpb24pLCBvbmx5IHRoZSBpbm5lcm1vc3QgcXVlcnkgcGxhbiBpcyBsb2dnZWQu CisgICAgTm90ZSB0aGF0IGxvZ2dpbmcgcGxhbiBtYXkgdGFrZSBzb21lIHRpbWUsIGFzIGl0IG9j Y3VycyB3aGVuCisgICAgdGhlIHBsYW4gbm9kZSBpcyBleGVjdXRlZC4gRm9yIGV4YW1wbGUsIHdo ZW4gYSBxdWVyeSBpcworICAgIHJ1bm5pbmcgPGZ1bmN0aW9uPnBnX3NsZWVwPC9mdW5jdGlvbj4s IHRoZSBwbGFuIHdpbGwgbm90IGJlCisgICAgbG9nZ2VkIHVudGlsIHRoZSBmdW5jdGlvbiBleGVj dXRpb24gY29tcGxldGVzLgorICAgIFNpbWlsYXJseSwgd2hlbiBhIHF1ZXJ5IGlzIHJ1bm5pbmcg dW5kZXIgdGhlIGV4dGVuZGVkIHF1ZXJ5CisgICAgcHJvdG9jb2wsIHRoZSBwbGFuIGlzIGxvZ2dl ZCBvbmx5IGR1cmluZyB0aGUgZXhlY3V0ZSBzdGVwLgogICAgPC9wYXJhPgogCiAgIDwvc2VjdDI+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggYjg4NTUxM2Y3Ni4uYjQ5ZWRkMjM2NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg ImNhdGFsb2cvcGdfZW51bS5oIgogI2luY2x1ZGUgImNhdGFsb2cvc3RvcmFnZS5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZHluYW1pY19leHBsYWlu LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv dHJpZ2dlci5oIgogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCkBAIC0yOTA0LDYgKzI5MDUs OSBAQCBBYm9ydFRyYW5zYWN0aW9uKHZvaWQpCiAJLyogUmVzZXQgc25hcHNob3QgZXhwb3J0IHN0 YXRlLiAqLwogCVNuYXBCdWlsZFJlc2V0RXhwb3J0ZWRTbmFwc2hvdFN0YXRlKCk7CiAKKwkvKiBS ZXNldCBwZ19sb2dfcXVlcnlfcGxhbigpIHJlbGF0ZWQgc3RhdGUuICovCisJUmVzZXRMb2dRdWVy eVBsYW5TdGF0ZSgpOworCiAJLyoKIAkgKiBJZiB0aGlzIHhhY3QgaGFzIHN0YXJ0ZWQgYW55IHVu ZmluaXNoZWQgcGFyYWxsZWwgb3BlcmF0aW9uLCBjbGVhbiB1cAogCSAqIGl0cyB3b3JrZXJzIGFu ZCBleGl0IHBhcmFsbGVsIG1vZGUuICBEb24ndCB3YXJuIGFib3V0IGxlYWtlZCByZXNvdXJjZXMu CkBAIC01Mjk2LDYgKzUzMDAsOSBAQCBBYm9ydFN1YlRyYW5zYWN0aW9uKHZvaWQpCiAJLyogUmVz ZXQgbG9naWNhbCBzdHJlYW1pbmcgc3RhdGUuICovCiAJUmVzZXRMb2dpY2FsU3RyZWFtaW5nU3Rh dGUoKTsKIAorCS8qIFJlc2V0IHBnX2xvZ19xdWVyeV9wbGFuKCkgcmVsYXRlZCBzdGF0ZS4gKi8K KwlSZXNldExvZ1F1ZXJ5UGxhblN0YXRlKCk7CisKIAkvKgogCSAqIE5vIG5lZWQgZm9yIFNuYXBC dWlsZFJlc2V0RXhwb3J0ZWRTbmFwc2hvdFN0YXRlKCkgaGVyZSwgc25hcHNob3QKIAkgKiBleHBv cnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHN1YnRyYW5zYWN0aW9ucy4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCmluZGV4IDU2NmYzMDhlNDQuLmVjMmUxYzFmZDkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApAQCAtNzc1LDYgKzc3NSw4 IEBAIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xzX2xvZ2ljYWxtYXBkaXIoKSBGUk9N IFBVQkxJQzsKIAogUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbHNfcmVwbHNsb3RkaXIo dGV4dCkgRlJPTSBQVUJMSUM7CiAKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19x dWVyeV9wbGFuKGludGVnZXIpIEZST00gUFVCTElDOworCiAtLQogLS0gV2UgYWxzbyBzZXQgdXAg c29tZSB0aGluZ3MgYXMgYWNjZXNzaWJsZSB0byBzdGFuZGFyZCByb2xlcy4KIC0tCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L01ha2VmaWxlCmluZGV4IGNiMmZiZGM3YzYuLjVlODM5MDdlYjEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2Vm aWxlCkBAIC0zMiw2ICszMiw3IEBAIE9CSlMgPSBcCiAJZGVmaW5lLm8gXAogCWRpc2NhcmQubyBc CiAJZHJvcGNtZHMubyBcCisJZHluYW1pY19leHBsYWluLm8gXAogCWV2ZW50X3RyaWdnZXIubyBc CiAJZXhwbGFpbi5vIFwKIAlleHBsYWluX2RyLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZHluYW1pY19leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9keW5hbWlj X2V4cGxhaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kMTYxYWE4 ZmE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHluYW1pY19leHBs YWluLmMKQEAgLTAsMCArMSwzNjggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGR5bmFt aWNfZXhwbGFpbi5jCisgKgkgIEV4cGxhaW4gcXVlcnkgcGxhbnMgZHVyaW5nIGV4ZWN1dGlvbgor ICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LTUsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FU SU9OCisgKgkgIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5jCisgKgorICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgImNv bW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW4uaCIK KyNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluX2Zvcm1hdC5oIgorI2luY2x1ZGUgImNvbW1hbmRz L2V4cGxhaW5fc3RhdGUuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInV0 aWxzL2JhY2tlbmRfc3RhdHVzLmgiCisKKy8qIFdoZXRoZXIgdGhpcyBiYWNrZW5kIGlzIHBlcmZv cm1pbmcgbG9nZ2luZyBwbGFuICovCitzdGF0aWMgYm9vbCBQcm9jZXNzTG9nUXVlcnlQbGFuSW50 ZXJydXB0QWN0aXZlID0gZmFsc2U7CisKKy8qIEN1cnJlbnRseSBleGVjdXRpbmcgcXVlcnkncyBR dWVyeURlc2MgKi8KK3N0YXRpYyBRdWVyeURlc2MgKkFjdGl2ZVF1ZXJ5RGVzYyA9IE5VTEw7CisK K3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4oUGxhblN0YXRl ICpwcyk7CitzdGF0aWMgdm9pZCBXcmFwRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4oUGxhblN0YXRl ICpwcyk7CitzdGF0aWMgdm9pZCBVbndyYXBFeGVjUHJvY05vZGVXaXRoRXhwbGFpbihQbGFuU3Rh dGUgKnBzKTsKKworLyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0 aW5nIGxvZ2dpbmcgdGhlIHBsYW4gb2YgdGhlIGN1cnJlbnRseQorICogcnVubmluZyBxdWVyeS4K KyAqCisgKiBBbGwgdGhlIGFjdHVhbCB3b3JrIGlzIGRlZmVycmVkIHRvIFByb2Nlc3NMb2dRdWVy eVBsYW5JbnRlcnJ1cHQoKSwKKyAqIGJlY2F1c2Ugd2UgY2Fubm90IHNhZmVseSBlbWl0IGEgbG9n IG1lc3NhZ2UgaW5zaWRlIHRoZSBzaWduYWwgaGFuZGxlci4KKyAqLwordm9pZAorSGFuZGxlTG9n UXVlcnlQbGFuSW50ZXJydXB0KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJ TG9nUXVlcnlQbGFuUGVuZGluZyA9IHRydWU7CisJLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJv Y3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KK30KKworLyoKKyAqIENsZWFyIHBnX2xvZ19xdWVy eV9wbGFuKCkgcmVsYXRlZCBzdGF0ZSBkdXJpbmcgKHN1Yil0cmFuc2FjdGlvbiBhYm9ydAorICov Cit2b2lkCitSZXNldExvZ1F1ZXJ5UGxhblN0YXRlKHZvaWQpCit7CisJLyoKKwkgKiBBZnRlciBh Ym9ydCwgc29tZSBlbGVtZW50cyBvZiBBY3RpdmVRdWVyeURlc2MgaXMgZnJlZWQuIFRvIGF2b2lk CisJICogYWNjZXNzaW5nIHRoZW0sIHJlc2V0IEFjdGl2ZVF1ZXJ5RGVzYyBoZXJlLgorCSAqLwor CUFjdGl2ZVF1ZXJ5RGVzYyA9IE5VTEw7CisJUHJvY2Vzc0xvZ1F1ZXJ5UGxhbkludGVycnVwdEFj dGl2ZSA9IGZhbHNlOworfQorCisvKgorICogV3JhcCBhcnJheSBvZiBQbGFuU3RhdGUgRXhlY1By b2NOb2RlcyB3aXRoIEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluCisgKi8KK3N0YXRpYyB2b2lkCitX cmFwUGxhblN0YXRlc1dpdGhFeHBsYWluKFBsYW5TdGF0ZSAqKnBsYW5zdGF0ZXMsIGludCBucGxh bnMpCit7CisJaW50CQkJaTsKKworCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKKwkJV3Jh cEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluKHBsYW5zdGF0ZXNbaV0pOworfQorCisvKgorICogV3Jh cCBDdXN0b21TY2FuU3RhdGUgY2hpbGRyZW4ncyBFeGVjUHJvY05vZGVzIHdpdGggRXhlY1Byb2NO b2RlV2l0aEV4cGxhaW4KKyAqLworc3RhdGljIHZvaWQKK1dyYXBDdXN0b21QbGFuQ2hpbGRXaXRo RXhwbGFpbihDdXN0b21TY2FuU3RhdGUgKmNzcykKK3sKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJ Zm9yZWFjaChjZWxsLCBjc3MtPmN1c3RvbV9wcykKKwkJV3JhcEV4ZWNQcm9jTm9kZVdpdGhFeHBs YWluKChQbGFuU3RhdGUgKikgbGZpcnN0KGNlbGwpKTsKK30KKworLyoKKyAqIFdyYXAgRXhlY1By b2NOb2RlIHdpdGggRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4gcmVjdXJzaXZlbHkKKyAqLworc3Rh dGljIHZvaWQKK1dyYXBFeGVjUHJvY05vZGVXaXRoRXhwbGFpbihQbGFuU3RhdGUgKnBzKQorewor CS8qIHdyYXBwaW5nIGNhbiBiZSBkb25lIG9ubHkgb25jZSAqLworCWlmIChwcy0+RXhlY1Byb2NO b2RlT3JpZ2luYWwgIT0gTlVMTCkKKwkJcmV0dXJuOworCisJY2hlY2tfc3RhY2tfZGVwdGgoKTsK KworCXBzLT5FeGVjUHJvY05vZGVPcmlnaW5hbCA9IHBzLT5FeGVjUHJvY05vZGU7CisJcHMtPkV4 ZWNQcm9jTm9kZSA9IEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluOworCisJaWYgKHBzLT5sZWZ0dHJl ZSAhPSBOVUxMKQorCQlXcmFwRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4ocHMtPmxlZnR0cmVlKTsK KwlpZiAocHMtPnJpZ2h0dHJlZSAhPSBOVUxMKQorCQlXcmFwRXhlY1Byb2NOb2RlV2l0aEV4cGxh aW4ocHMtPnJpZ2h0dHJlZSk7CisJaWYgKHBzLT5zdWJQbGFuICE9IE5VTEwpCisJeworCQlMaXN0 Q2VsbCAgICpsOworCisJCWZvcmVhY2gobCwgcHMtPnN1YlBsYW4pCisJCXsKKwkJCVN1YlBsYW5T dGF0ZSAqc3N0YXRlID0gKFN1YlBsYW5TdGF0ZSAqKSBsZmlyc3QobCk7CisKKwkJCVdyYXBFeGVj UHJvY05vZGVXaXRoRXhwbGFpbihzc3RhdGUtPnBsYW5zdGF0ZSk7CisJCX0KKwl9CisKKwkvKiBz cGVjaWFsIGNoaWxkIHBsYW5zICovCisJc3dpdGNoIChub2RlVGFnKHBzLT5wbGFuKSkKKwl7CisJ CWNhc2UgVF9BcHBlbmQ6CisJCQlXcmFwUGxhblN0YXRlc1dpdGhFeHBsYWluKCgoQXBwZW5kU3Rh dGUgKikgcHMpLT5hcHBlbmRwbGFucywKKwkJCQkJCQkJCSAgKChBcHBlbmRTdGF0ZSAqKSBwcykt PmFzX25wbGFucyk7CisJCQlicmVhazsKKwkJY2FzZSBUX01lcmdlQXBwZW5kOgorCQkJV3JhcFBs YW5TdGF0ZXNXaXRoRXhwbGFpbigoKE1lcmdlQXBwZW5kU3RhdGUgKikgcHMpLT5tZXJnZXBsYW5z LAorCQkJCQkJCQkJICAoKE1lcmdlQXBwZW5kU3RhdGUgKikgcHMpLT5tc19ucGxhbnMpOworCQkJ YnJlYWs7CisJCWNhc2UgVF9CaXRtYXBBbmQ6CisJCQlXcmFwUGxhblN0YXRlc1dpdGhFeHBsYWlu KCgoQml0bWFwQW5kU3RhdGUgKikgcHMpLT5iaXRtYXBwbGFucywKKwkJCQkJCQkJCSAgKChCaXRt YXBBbmRTdGF0ZSAqKSBwcyktPm5wbGFucyk7CisJCQlicmVhazsKKwkJY2FzZSBUX0JpdG1hcE9y OgorCQkJV3JhcFBsYW5TdGF0ZXNXaXRoRXhwbGFpbigoKEJpdG1hcE9yU3RhdGUgKikgcHMpLT5i aXRtYXBwbGFucywKKwkJCQkJCQkJCSAgKChCaXRtYXBPclN0YXRlICopIHBzKS0+bnBsYW5zKTsK KwkJCWJyZWFrOworCQljYXNlIFRfU3VicXVlcnlTY2FuOgorCQkJV3JhcEV4ZWNQcm9jTm9kZVdp dGhFeHBsYWluKCgoU3VicXVlcnlTY2FuU3RhdGUgKikgcHMpLT5zdWJwbGFuKTsKKwkJCWJyZWFr OworCQljYXNlIFRfQ3VzdG9tU2NhbjoKKwkJCVdyYXBDdXN0b21QbGFuQ2hpbGRXaXRoRXhwbGFp bigoQ3VzdG9tU2NhblN0YXRlICopIHBzKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJl YWs7CisJfQorfQorCisvKgorICogVW53cmFwIGFycmF5IG9mIFBsYW5TdGF0ZXMgRXhlY1Byb2NO b2RlcyB3aXRoIEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluCisgKi8KK3N0YXRpYyB2b2lkCitVbndy YXBQbGFuU3RhdGVzV2l0aEV4cGxhaW4oUGxhblN0YXRlICoqcGxhbnN0YXRlcywgaW50IG5wbGFu cykKK3sKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQorCQlVbndy YXBFeGVjUHJvY05vZGVXaXRoRXhwbGFpbihwbGFuc3RhdGVzW2ldKTsKK30KKworLyoKKyAqIFVu d3JhcCBDdXN0b21TY2FuU3RhdGUgY2hpbGRyZW4ncyBFeGVjUHJvY05vZGVzIHdpdGggRXhlY1By b2NOb2RlV2l0aEV4cGxhaW4KKyAqLworc3RhdGljIHZvaWQKK1Vud3JhcEN1c3RvbVBsYW5DaGls ZFdpdGhFeHBsYWluKEN1c3RvbVNjYW5TdGF0ZSAqY3NzKQoreworCUxpc3RDZWxsICAgKmNlbGw7 CisKKwlmb3JlYWNoKGNlbGwsIGNzcy0+Y3VzdG9tX3BzKQorCQlVbndyYXBFeGVjUHJvY05vZGVX aXRoRXhwbGFpbigoUGxhblN0YXRlICopIGxmaXJzdChjZWxsKSk7Cit9CisKKy8qCisgKiBVbndy YXAgRXhlY1Byb2NOb2RlIHdpdGggRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4gcmVjdXJzaXZlbHkK KyAqLworc3RhdGljIHZvaWQKK1Vud3JhcEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluKFBsYW5TdGF0 ZSAqcHMpCit7CisJQXNzZXJ0KHBzLT5FeGVjUHJvY05vZGVPcmlnaW5hbCAhPSBOVUxMKTsKKwor CWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwlwcy0+RXhlY1Byb2NOb2RlID0gcHMtPkV4ZWNQcm9j Tm9kZU9yaWdpbmFsOworCXBzLT5FeGVjUHJvY05vZGVPcmlnaW5hbCA9IE5VTEw7CisKKwlpZiAo cHMtPmxlZnR0cmVlICE9IE5VTEwpCisJCVVud3JhcEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluKHBz LT5sZWZ0dHJlZSk7CisJaWYgKHBzLT5yaWdodHRyZWUgIT0gTlVMTCkKKwkJVW53cmFwRXhlY1By b2NOb2RlV2l0aEV4cGxhaW4ocHMtPnJpZ2h0dHJlZSk7CisJaWYgKHBzLT5zdWJQbGFuICE9IE5V TEwpCisJeworCQlMaXN0Q2VsbCAgICpsOworCisJCWZvcmVhY2gobCwgcHMtPnN1YlBsYW4pCisJ CXsKKwkJCVN1YlBsYW5TdGF0ZSAqc3N0YXRlID0gKFN1YlBsYW5TdGF0ZSAqKSBsZmlyc3QobCk7 CisKKwkJCVVud3JhcEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluKHNzdGF0ZS0+cGxhbnN0YXRlKTsK KwkJfQorCX0KKworCS8qIHNwZWNpYWwgY2hpbGQgcGxhbnMgKi8KKwlzd2l0Y2ggKG5vZGVUYWco cHMtPnBsYW4pKQorCXsKKwkJY2FzZSBUX0FwcGVuZDoKKwkJCVVud3JhcFBsYW5TdGF0ZXNXaXRo RXhwbGFpbigoKEFwcGVuZFN0YXRlICopIHBzKS0+YXBwZW5kcGxhbnMsCisJCQkJCQkJCQkJKChB cHBlbmRTdGF0ZSAqKSBwcyktPmFzX25wbGFucyk7CisJCQlicmVhazsKKwkJY2FzZSBUX01lcmdl QXBwZW5kOgorCQkJVW53cmFwUGxhblN0YXRlc1dpdGhFeHBsYWluKCgoTWVyZ2VBcHBlbmRTdGF0 ZSAqKSBwcyktPm1lcmdlcGxhbnMsCisJCQkJCQkJCQkJKChNZXJnZUFwcGVuZFN0YXRlICopIHBz KS0+bXNfbnBsYW5zKTsKKwkJCWJyZWFrOworCQljYXNlIFRfQml0bWFwQW5kOgorCQkJVW53cmFw UGxhblN0YXRlc1dpdGhFeHBsYWluKCgoQml0bWFwQW5kU3RhdGUgKikgcHMpLT5iaXRtYXBwbGFu cywKKwkJCQkJCQkJCQkoKEJpdG1hcEFuZFN0YXRlICopIHBzKS0+bnBsYW5zKTsKKwkJCWJyZWFr OworCQljYXNlIFRfQml0bWFwT3I6CisJCQlVbndyYXBQbGFuU3RhdGVzV2l0aEV4cGxhaW4oKChC aXRtYXBPclN0YXRlICopIHBzKS0+Yml0bWFwcGxhbnMsCisJCQkJCQkJCQkJKChCaXRtYXBPclN0 YXRlICopIHBzKS0+bnBsYW5zKTsKKwkJCWJyZWFrOworCQljYXNlIFRfU3VicXVlcnlTY2FuOgor CQkJVW53cmFwRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4oKChTdWJxdWVyeVNjYW5TdGF0ZSAqKSBw cyktPnN1YnBsYW4pOworCQkJYnJlYWs7CisJCWNhc2UgVF9DdXN0b21TY2FuOgorCQkJVW53cmFw Q3VzdG9tUGxhbkNoaWxkV2l0aEV4cGxhaW4oKEN1c3RvbVNjYW5TdGF0ZSAqKSBwcyk7CisJCQli cmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIFdyYXAgRXhlY1By b2NOb2RlIHdpdGggY29kZXMgd2hpY2ggbG9ncyBjdXJyZW50bHkgcnVubmluZyBwbGFuCisgKi8K K3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVXaXRoRXhwbGFpbihQbGFuU3Rh dGUgKnBzKQoreworCUV4cGxhaW5TdGF0ZSAqZXM7CisJTWVtb3J5Q29udGV4dCBjeHQ7CisJTWVt b3J5Q29udGV4dCBvbGRfY3h0OworCisJY2hlY2tfc3RhY2tfZGVwdGgoKTsKKworCWN4dCA9IEFs bG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJImxvZ19x dWVyeV9wbGFuIHRlbXBvcmFyeSBjb250ZXh0IiwKKwkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9T SVpFUyk7CisKKwlvbGRfY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN4dCk7CisKKwllcyA9 IE5ld0V4cGxhaW5TdGF0ZSgpOworCisJZXMtPmZvcm1hdCA9IEVYUExBSU5fRk9STUFUX1RFWFQ7 CisJZXMtPnNldHRpbmdzID0gdHJ1ZTsKKwllcy0+dmVyYm9zZSA9IHRydWU7CisJZXMtPnNpZ25h bGVkID0gdHJ1ZTsKKworCUV4cGxhaW5TdHJpbmdBc3NlbWJsZShlcywgQWN0aXZlUXVlcnlEZXNj LCBlcy0+Zm9ybWF0LCAwLCAtMSk7CisKKwllcmVwb3J0KExPR19TRVJWRVJfT05MWSwKKwkJCWVy cm1zZygicXVlcnkgcGxhbiBydW5uaW5nIG9uIGJhY2tlbmQgd2l0aCBQSUQgJWQgaXM6XG4lcyIs CisJCQkJICAgTXlQcm9jUGlkLCBlcy0+c3RyLT5kYXRhKSwKKwkJCWVycmhpZGVzdG10KHRydWUp LAorCQkJZXJyaGlkZWNvbnRleHQodHJ1ZSkpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZF9jeHQpOworCU1lbW9yeUNvbnRleHREZWxldGUoY3h0KTsKKworCVVud3JhcEV4ZWNQcm9jTm9k ZVdpdGhFeHBsYWluKEFjdGl2ZVF1ZXJ5RGVzYy0+cGxhbnN0YXRlKTsKKworCS8qCisJICogU2lu Y2UgdW53cmFwcGluZyBoYXMgYWxyZWFkeSBkb25lLCBjYWxsIEV4ZWNQcm9jTm9kZSgpIG5vdAor CSAqIEV4ZWNQcm9jTm9kZU9yaWdpbmFsKCkuCisJICovCisJcmV0dXJuIHBzLT5FeGVjUHJvY05v ZGUocHMpOworfQorCisvKgorICogQWRkIHdyYXBwZXIgd2hpY2ggbG9ncyBleHBsYWluIG9mIHRo ZSBwbGFuIHRvIEV4ZWNQcm9jTm9kZQorICoKKyAqIFNpbmNlIHJ1bm5pbmcgRVhQTEFJTiBjb2Rl cyBhdCBhbnkgYXJiaXRyYXJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaXMKKyAqIHVuc2FmZSwg dGhpcyBmdW5jdGlvbiBqdXN0IHdyYXBzIGV2ZXJ5IEV4ZWNQcm9jTm9kZS4KKyAqIEluIHRoaXMg d2F5LCBFWFBMQUlOIGNvZGUgaXMgb25seSBleGVjdXRlZCBhdCB0aGUgdGltaW5nIG9mIEV4ZWNQ cm9jTm9kZSwKKyAqIHdoaWNoIHNlZW1zIHNhZmUuCisgKi8KK3ZvaWQKK1Byb2Nlc3NMb2dRdWVy eVBsYW5JbnRlcnJ1cHQodm9pZCkKK3sKKwlMb2dRdWVyeVBsYW5QZW5kaW5nID0gZmFsc2U7CisK KwkvKiBDYW5ub3QgcmUtZW50ZXIgKi8KKwlpZiAoUHJvY2Vzc0xvZ1F1ZXJ5UGxhbkludGVycnVw dEFjdGl2ZSkKKwkJcmV0dXJuOworCisJUHJvY2Vzc0xvZ1F1ZXJ5UGxhbkludGVycnVwdEFjdGl2 ZSA9IHRydWU7CisKKwlpZiAoQWN0aXZlUXVlcnlEZXNjID09IE5VTEwpCisJeworCQllcmVwb3J0 KExPR19TRVJWRVJfT05MWSwKKwkJCQllcnJtc2coImJhY2tlbmQgd2l0aCBQSUQgJWQgaXMgbm90 IHJ1bm5pbmcgYSBxdWVyeSBvciBhIHN1YnRyYW5zYWN0aW9uIGlzIGFib3J0ZWQiLAorCQkJCQkg ICBNeVByb2NQaWQpLAorCQkJCWVycmhpZGVzdG10KHRydWUpLAorCQkJCWVycmhpZGVjb250ZXh0 KHRydWUpKTsKKworCQlQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0QWN0aXZlID0gZmFsc2U7 CisJCXJldHVybjsKKwl9CisKKwlXcmFwRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4oQWN0aXZlUXVl cnlEZXNjLT5wbGFuc3RhdGUpOworCVByb2Nlc3NMb2dRdWVyeVBsYW5JbnRlcnJ1cHRBY3RpdmUg PSBmYWxzZTsKK30KKworUXVlcnlEZXNjICoKK0dldEFjdGl2ZVF1ZXJ5RGVzYyh2b2lkKQorewor CXJldHVybiBBY3RpdmVRdWVyeURlc2M7Cit9CisKK3ZvaWQKK1NldEFjdGl2ZVF1ZXJ5RGVzYyhR dWVyeURlc2MgKnF1ZXJ5RGVzYykKK3sKKwlBY3RpdmVRdWVyeURlc2MgPSBxdWVyeURlc2M7Cit9 CisKKy8qCisgKiBTaWduYWwgYSBiYWNrZW5kIHByb2Nlc3MgdG8gbG9nIHRoZSBxdWVyeSBwbGFu IG9mIHRoZSBydW5uaW5nIHF1ZXJ5LgorICoKKyAqIEJ5IGRlZmF1bHQsIG9ubHkgc3VwZXJ1c2Vy cyBhcmUgYWxsb3dlZCB0byBzaWduYWwgdG8gbG9nIHRoZSBwbGFuIGJlY2F1c2UKKyAqIGFsbG93 aW5nIGFueSB1c2VycyB0byBpc3N1ZSB0aGlzIHJlcXVlc3QgYXQgYW4gdW5ib3VuZGVkIHJhdGUg d291bGQKKyAqIGNhdXNlIGxvdHMgb2YgbG9nIG1lc3NhZ2VzIGFuZCB3aGljaCBjYW4gbGVhZCB0 byBkZW5pYWwgb2Ygc2VydmljZS4KKyAqIEFkZGl0aW9uYWwgcm9sZXMgY2FuIGJlIHBlcm1pdHRl ZCB3aXRoIEdSQU5ULgorICovCitEYXR1bQorcGdfbG9nX3F1ZXJ5X3BsYW4oUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlpbnQJCQlwaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJUEdQUk9DCSAgICpw cm9jOworCVBnQmFja2VuZFN0YXR1cyAqYmVfc3RhdHVzOworCisJcHJvYyA9IEJhY2tlbmRQaWRH ZXRQcm9jKHBpZCk7CisKKwlpZiAocHJvYyA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogVGhpcyBp cyBqdXN0IGEgd2FybmluZyBzbyBhIGxvb3AtdGhyb3VnaC1yZXN1bHRzZXQgd2lsbCBub3QgYWJv cnQKKwkJICogaWYgb25lIGJhY2tlbmQgdGVybWluYXRlZCBvbiBpdHMgb3duIGR1cmluZyB0aGUg cnVuLgorCQkgKi8KKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJtc2coIlBJRCAlZCBpcyBu b3QgYSBQb3N0Z3JlU1FMIGJhY2tlbmQgcHJvY2VzcyIsIHBpZCkpKTsKKwkJUEdfUkVUVVJOX0JP T0woZmFsc2UpOworCX0KKworCWJlX3N0YXR1cyA9IHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9wcm9j X251bWJlcihwcm9jLT52eGlkLnByb2NOdW1iZXIpOworCWlmIChiZV9zdGF0dXMtPnN0X2JhY2tl bmRUeXBlICE9IEJfQkFDS0VORCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNn KCJQSUQgJWQgaXMgbm90IGEgUG9zdGdyZVNRTCBjbGllbnQgYmFja2VuZCBwcm9jZXNzIiwgcGlk KSkpOworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJaWYgKFNlbmRQcm9jU2lnbmFs KHBpZCwgUFJPQ1NJR19MT0dfUVVFUllfUExBTiwgcHJvYy0+dnhpZC5wcm9jTnVtYmVyKSA8IDAp CisJeworCQkvKiBBZ2FpbiwganVzdCBhIHdhcm5pbmcgdG8gYWxsb3cgbG9vcHMgKi8KKwkJZXJl cG9ydChXQVJOSU5HLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBzZW5kIHNpZ25hbCB0byBwcm9j ZXNzICVkOiAlbSIsIHBpZCkpKTsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCVBH X1JFVFVSTl9CT09MKHRydWUpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDc4NmVlODY1 ZjEuLmZkMzc3NzI1MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTExMDAsNiArMTEwMCwz NyBAQCBFeHBsYWluUXVlcnlQYXJhbWV0ZXJzKEV4cGxhaW5TdGF0ZSAqZXMsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLCBpbnQgbWF4bGVuKQogCQlFeHBsYWluUHJvcGVydHlUZXh0KCJRdWVyeSBQYXJh bWV0ZXJzIiwgc3RyLCBlcyk7CiB9CiAKKy8qCisgKiBFeHBsYWluU3RyaW5nQXNzZW1ibGUgLQor ICogICAgQXNzZW1ibGUgZXMtPnN0ciBmb3IgbG9nZ2luZyBhY2NvcmRpbmcgdG8gc3BlY2lmaWVk IG9wdGlvbnMgYW5kIGZvcm1hdAorICovCisKK3ZvaWQKK0V4cGxhaW5TdHJpbmdBc3NlbWJsZShF eHBsYWluU3RhdGUgKmVzLCBRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGxvZ0Zvcm1hdCwKKwkJ CQkJICBib29sIGxvZ1RyaWdnZXJzLCBpbnQgbG9nUGFyYW1ldGVyTWF4TGVuZ3RoKQoreworCUV4 cGxhaW5CZWdpbk91dHB1dChlcyk7CisJRXhwbGFpblF1ZXJ5VGV4dChlcywgcXVlcnlEZXNjKTsK KwlFeHBsYWluUXVlcnlQYXJhbWV0ZXJzKGVzLCBxdWVyeURlc2MtPnBhcmFtcywgbG9nUGFyYW1l dGVyTWF4TGVuZ3RoKTsKKwlFeHBsYWluUHJpbnRQbGFuKGVzLCBxdWVyeURlc2MpOworCWlmIChl cy0+YW5hbHl6ZSAmJiBsb2dUcmlnZ2VycykKKwkJRXhwbGFpblByaW50VHJpZ2dlcnMoZXMsIHF1 ZXJ5RGVzYyk7CisJaWYgKGVzLT5jb3N0cykKKwkJRXhwbGFpblByaW50SklUU3VtbWFyeShlcywg cXVlcnlEZXNjKTsKKwlFeHBsYWluRW5kT3V0cHV0KGVzKTsKKworCS8qIFJlbW92ZSBsYXN0IGxp bmUgYnJlYWsgKi8KKwlpZiAoZXMtPnN0ci0+bGVuID4gMCAmJiBlcy0+c3RyLT5kYXRhW2VzLT5z dHItPmxlbiAtIDFdID09ICdcbicpCisJCWVzLT5zdHItPmRhdGFbLS1lcy0+c3RyLT5sZW5dID0g J1wwJzsKKworCS8qIEZpeCBKU09OIHRvIG91dHB1dCBhbiBvYmplY3QgKi8KKwlpZiAobG9nRm9y bWF0ID09IEVYUExBSU5fRk9STUFUX0pTT04pCisJeworCQllcy0+c3RyLT5kYXRhWzBdID0gJ3sn OworCQllcy0+c3RyLT5kYXRhW2VzLT5zdHItPmxlbiAtIDFdID0gJ30nOworCX0KK30KKwogLyoK ICAqIHJlcG9ydF90cmlnZ2VycyAtCiAgKgkJcmVwb3J0IGV4ZWN1dGlvbiBzdGF0cyBmb3IgYSBz aW5nbGUgcmVsYXRpb24ncyB0cmlnZ2VycwpAQCAtMTgyNyw3ICsxODU4LDEwIEBAIEV4cGxhaW5O b2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkvKgogCSAqIFdl IGhhdmUgdG8gZm9yY2libHkgY2xlYW4gdXAgdGhlIGluc3RydW1lbnRhdGlvbiBzdGF0ZSBiZWNh dXNlIHdlCi0JICogaGF2ZW4ndCBkb25lIEV4ZWN1dG9yRW5kIHlldC4gIFRoaXMgaXMgcHJldHR5 IGdyb3R0eSAuLi4KKwkgKiBoYXZlbid0IGRvbmUgRXhlY3V0b3JFbmQgeWV0LiAgVGhpcyBpcyBw cmV0dHkgZ3JvdHR5IC4uLiBUaGlzIGNsZWFudXAKKwkgKiBzaG91bGQgbm90IGJlIGRvbmUgd2hl biB0aGUgcXVlcnkgaGFzIGFscmVhZHkgYmVlbiBleGVjdXRlZCBhbmQgZXhwbGFpbgorCSAqIGhh cyBiZWVuIGNhbGxlZCBieSBzaWduYWwsIGFzIHRoZSB0YXJnZXQgcXVlcnkgbWF5IHVzZSBpbnN0 cnVtZW50YXRpb24KKwkgKiBhbmQgY2xlYW4gaXRzZWxmIHVwLgogCSAqCiAJICogTm90ZTogY29u dHJpYi9hdXRvX2V4cGxhaW4gY291bGQgY2F1c2UgaW5zdHJ1bWVudGF0aW9uIHRvIGJlIHNldCB1 cAogCSAqIGV2ZW4gdGhvdWdoIHdlIGRpZG4ndCBhc2sgZm9yIGl0IGhlcmUuICBCZSBjYXJlZnVs IG5vdCB0byBwcmludCBhbnkKQEAgLTE4MzUsNyArMTg2OSw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJICogSW5zdHJFbmRMb29wIGNhbGwg YW55d2F5LCBpZiBwb3NzaWJsZSwgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgY2FzZXMKIAkgKiBh dXRvX2V4cGxhaW4gaGFzIHRvIGNvbnRlbmQgd2l0aC4KIAkgKi8KLQlpZiAocGxhbnN0YXRlLT5p bnN0cnVtZW50KQorCWlmIChwbGFuc3RhdGUtPmluc3RydW1lbnQgJiYgIWVzLT5zaWduYWxlZCkK IAkJSW5zdHJFbmRMb29wKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCk7CiAKIAlpZiAoZXMtPmFuYWx5 emUgJiYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKaW5kZXggZGQ0Y2RlNDFkMy4uNGE2NGI4ZTlk MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKQEAgLTIwLDYgKzIwLDcgQEAgYmFja2VuZF9z b3VyY2VzICs9IGZpbGVzKAogICAnZGVmaW5lLmMnLAogICAnZGlzY2FyZC5jJywKICAgJ2Ryb3Bj bWRzLmMnLAorICAnZHluYW1pY19leHBsYWluLmMnLAogICAnZXZlbnRfdHJpZ2dlci5jJywKICAg J2V4cGxhaW4uYycsCiAgICdleHBsYWluX2RyLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5k ZXggNzIzMGY5NjgxMC4uYjFmM2U4M2I2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC00 Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9n L25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9uLmgiCisjaW5jbHVkZSAi Y29tbWFuZHMvZHluYW1pY19leHBsYWluLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmlldy5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVj dXRvci5oIgpAQCAtMzgwLDYgKzM4MSw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLAogCURlc3RSZWNlaXZlciAqZGVzdDsKIAlib29sCQlzZW5kVHVwbGVzOwog CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlRdWVyeURlc2MgICpvbGRBY3RpdmVRdWVyeURl c2M7CiAKIAkvKiBzYW5pdHkgY2hlY2tzICovCiAJQXNzZXJ0KHF1ZXJ5RGVzYyAhPSBOVUxMKTsK QEAgLTM5Myw2ICszOTUsMTMgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVy eURlc2MsCiAJLyogY2FsbGVyIG11c3QgZW5zdXJlIHRoZSBxdWVyeSdzIHNuYXBzaG90IGlzIGFj dGl2ZSAqLwogCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IGVzdGF0ZS0+ZXNfc25hcHNo b3QpOwogCisJLyoKKwkgKiBTYXZlIEFjdGl2ZVF1ZXJ5RGVzYyBoZXJlIHRvIGVuYWJsZSByZXRy aWV2YWwgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nCisJICogcXVlcnlEZXNjIGZvciBuZXN0ZWQg cXVlcmllcy4KKwkgKi8KKwlvbGRBY3RpdmVRdWVyeURlc2MgPSBHZXRBY3RpdmVRdWVyeURlc2Mo KTsKKwlTZXRBY3RpdmVRdWVyeURlc2MocXVlcnlEZXNjKTsKKwogCS8qCiAJICogU3dpdGNoIGlu dG8gcGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0CiAJICovCkBAIC00NTUsNiArNDY0LDcgQEAgc3Rh bmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCUluc3RyU3RvcE5vZGUo cXVlcnlEZXNjLT50b3RhbHRpbWUsIGVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKIAogCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwlTZXRBY3RpdmVRdWVyeURlc2Mob2xkQWN0aXZl UXVlcnlEZXNjKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25h bC5jCmluZGV4IGEzYzJjZDEyMjcuLmQyNDJiZWRjYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMKQEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxl bC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZHlu YW1pY19leHBsYWluLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgpAQCAtNjkzLDYgKzY5NCw5IEBAIHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWdu YWwoUFJPQ1NJR19HRVRfTUVNT1JZX0NPTlRFWFQpKQogCQlIYW5kbGVHZXRNZW1vcnlDb250ZXh0 SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX1FVRVJZX1BM QU4pKQorCQlIYW5kbGVMb2dRdWVyeVBsYW5JbnRlcnJ1cHQoKTsKKwogCWlmIChDaGVja1Byb2NT aWduYWwoUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFKSkKIAkJSGFuZGxlUGFyYWxsZWxB cHBseU1lc3NhZ2VJbnRlcnJ1cHQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IGRjNGM2MDA5MjIu LjliZTgxNGIxNmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9keW5hbWlj X2V4cGxhaW4uaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAiY29t bW9uL3BnX3BybmcuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCkBAIC0zNTM4LDYgKzM1MzksOSBA QCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCWlmIChQdWJsaXNoTWVtb3J5Q29udGV4dFBlbmRp bmcpCiAJCVByb2Nlc3NHZXRNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoTG9nUXVl cnlQbGFuUGVuZGluZykKKwkJUHJvY2Vzc0xvZ1F1ZXJ5UGxhbkludGVycnVwdCgpOworCiAJaWYg KFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZykKIAkJUHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNz YWdlcygpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCAxODQ3ZTdjODVkLi5hZTVi ZDg1MWYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtNDEsNiArNDEsOCBAQCB2b2xh dGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gZmFsc2U7CiB2b2xh dGlsZSBzaWdfYXRvbWljX3QgTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBQdWJsaXNoTWVtb3J5Q29udGV4dFBlbmRpbmcgPSBmYWxzZTsKIHZv bGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlU3RhdHNVcGRhdGVUaW1lb3V0UGVuZGluZyA9IGZhbHNl Owordm9sYXRpbGUgc2lnX2F0b21pY190IExvZ1F1ZXJ5UGxhblBlbmRpbmcgPSBmYWxzZTsKKwog dm9sYXRpbGUgdWludDMyIEludGVycnVwdEhvbGRvZmZDb3VudCA9IDA7CiB2b2xhdGlsZSB1aW50 MzIgUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgPSAwOwogdm9sYXRpbGUgdWludDMyIENyaXRTZWN0 aW9uQ291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNjJiZWI3MWRhMi4uYWU3 OTMyOTllMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC04NTgxLDYgKzg1ODEsMTIgQEAK ICAgcHJvYXJnbmFtZXMgPT4gJ3twaWQsIHN1bW1hcnksIHRpbWVvdXQsIG5hbWUsIGlkZW50LCB0 eXBlLCBwYXRoLCBsZXZlbCwgdG90YWxfYnl0ZXMsIHRvdGFsX25ibG9ja3MsIGZyZWVfYnl0ZXMs IGZyZWVfY2h1bmtzLCB1c2VkX2J5dGVzLCBudW1fYWdnX2NvbnRleHRzLCBzdGF0c190aW1lc3Rh bXB9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfcHJvY2Vzc19tZW1vcnlfY29udGV4dHMnIH0sCiAK KyMgbG9nZ2luZyBwbGFuIG9mIHRoZSBydW5uaW5nIHF1ZXJ5IG9uIHRoZSBzcGVjaWZpZWQgYmFj a2VuZAoreyBvaWQgPT4gJzgwMDAnLCBkZXNjciA9PiAnbG9nIHBsYW4gb2YgdGhlIHJ1bm5pbmcg cXVlcnkgb24gdGhlIHNwZWNpZmllZCBiYWNrZW5kJywKKyAgcHJvbmFtZSA9PiAncGdfbG9nX3F1 ZXJ5X3BsYW4nLAorICBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAor ICBwcm9hcmd0eXBlcyA9PiAnaW50NCcsIHByb3NyYyA9PiAncGdfbG9nX3F1ZXJ5X3BsYW4nIH0s CisKICMgbm9uLXBlcnNpc3RlbnQgc2VyaWVzIGdlbmVyYXRvcgogeyBvaWQgPT4gJzEwNjYnLCBk ZXNjciA9PiAnbm9uLXBlcnNpc3RlbnQgc2VyaWVzIGdlbmVyYXRvcicsCiAgIHByb25hbWUgPT4g J2dlbmVyYXRlX3NlcmllcycsIHByb3Jvd3MgPT4gJzEwMDAnLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZHluYW1pY19leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9k eW5hbWljX2V4cGxhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42 OGIxNmVjOWJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZHluYW1p Y19leHBsYWluLmgKQEAgLTAsMCArMSwyNiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog ZHluYW1pY19leHBsYWluLmgKKyAqCSAgcHJvdG90eXBlcyBmb3IgZHluYW1pY19leHBsYWluLmMK KyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NC01LCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVk ZS9jb21tYW5kcy9keW5hbWljX2V4cGxhaW4uaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisjaWZuZGVmIERZTkFNSUNfRVhQTEFJTl9ICisjZGVmaW5lIERZTkFNSUNfRVhQTEFJTl9ICisK KyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxh aW5fc3RhdGUuaCIKKworZXh0ZXJuIHZvaWQgSGFuZGxlTG9nUXVlcnlQbGFuSW50ZXJydXB0KHZv aWQpOworZXh0ZXJuIHZvaWQgUmVzZXRMb2dRdWVyeVBsYW5TdGF0ZSh2b2lkKTsKK2V4dGVybiB2 b2lkIFByb2Nlc3NMb2dRdWVyeVBsYW5JbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gUXVlcnlEZXNj ICpHZXRBY3RpdmVRdWVyeURlc2Modm9pZCk7CitleHRlcm4gdm9pZCBTZXRBY3RpdmVRdWVyeURl c2MoUXVlcnlEZXNjICpxdWVyeURlc2MpOworZXh0ZXJuIERhdHVtIHBnX2xvZ19xdWVyeV9wbGFu KFBHX0ZVTkNUSU9OX0FSR1MpOworCisjZW5kaWYJCQkJCQkJLyogRFlOQU1JQ19FWFBMQUlOX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCAwM2M1YjNkNzNlLi4wODM1NjdjYWYwIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvZXhwbGFpbi5oCkBAIC03Miw2ICs3Miw4IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5P bmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJ CQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsCiAJCQkJCQkgICBjb25zdCBNZW1vcnlD b250ZXh0Q291bnRlcnMgKm1lbV9jb3VudGVycyk7CiAKK2V4dGVybiB2b2lkIEV4cGxhaW5Qcmlu dFBsYW4oc3RydWN0IEV4cGxhaW5TdGF0ZSAqZXMsIFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKK2V4 dGVybiB2b2lkIEV4cGxhaW5QcmludFRyaWdnZXJzKHN0cnVjdCBFeHBsYWluU3RhdGUgKmVzLCBR dWVyeURlc2MgKnF1ZXJ5RGVzYyk7CiBleHRlcm4gdm9pZCBFeHBsYWluUHJpbnRQbGFuKHN0cnVj dCBFeHBsYWluU3RhdGUgKmVzLCBRdWVyeURlc2MgKnF1ZXJ5RGVzYyk7CiBleHRlcm4gdm9pZCBF eHBsYWluUHJpbnRUcmlnZ2VycyhzdHJ1Y3QgRXhwbGFpblN0YXRlICplcywKIAkJCQkJCQkJIFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKQEAgLTgyLDUgKzg0LDggQEAgZXh0ZXJuIHZvaWQgRXhwbGFp blByaW50SklUU3VtbWFyeShzdHJ1Y3QgRXhwbGFpblN0YXRlICplcywKIGV4dGVybiB2b2lkIEV4 cGxhaW5RdWVyeVRleHQoc3RydWN0IEV4cGxhaW5TdGF0ZSAqZXMsIFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5RdWVyeVBhcmFtZXRlcnMoc3RydWN0IEV4cGxhaW5T dGF0ZSAqZXMsCiAJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBpbnQgbWF4bGVuKTsK K2V4dGVybiB2b2lkIEV4cGxhaW5TdHJpbmdBc3NlbWJsZShzdHJ1Y3QgRXhwbGFpblN0YXRlICpl cywgUXVlcnlEZXNjICpxdWVyeURlc2MsCisJCQkJCQkJCSAgaW50IGxvZ0Zvcm1hdCwgYm9vbCBs b2dUcmlnZ2VycywKKwkJCQkJCQkJICBpbnQgbG9nUGFyYW1ldGVyTWF4TGVuZ3RoKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIEVYUExBSU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvZXhwbGFpbl9zdGF0ZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5o CmluZGV4IDMyNzI4ZjVkMWEuLmZjZWY5NTYzOTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2V4cGxhaW5fc3RhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWlu X3N0YXRlLmgKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwbGFpblN0YXRlCiAJ CQkJCQkJCSAqIGVudHJ5ICovCiAJLyogc3RhdGUgcmVsYXRlZCB0byB0aGUgY3VycmVudCBwbGFu IG5vZGUgKi8KIAlFeHBsYWluV29ya2Vyc1N0YXRlICp3b3JrZXJzX3N0YXRlOyAvKiBuZWVkZWQg aWYgcGFyYWxsZWwgcGxhbiAqLworCWJvb2wJCXNpZ25hbGVkOwkJLyogd2hldGhlciBleHBsYWlu IGlzIGNhbGxlZCBieSBzaWduYWwgKi8KIAkvKiBleHRlbnNpb25zICovCiAJdm9pZAkgICoqZXh0 ZW5zaW9uX3N0YXRlOwogCWludAkJCWV4dGVuc2lvbl9zdGF0ZV9hbGxvY2F0ZWQ7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmlu ZGV4IDcyZjU2NTVmYjMuLjQ5NDEyYTljYjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC05Nyw2ICs5Nyw3IEBAIGV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQ ZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1v cnlDb250ZXh0UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgSWRsZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgc2lnX2F0b21pY190IFB1Ymxpc2hNZW1vcnlDb250ZXh0UGVuZGluZzsKK2V4dGVybiBQ R0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgTG9nUXVlcnlQbGFuUGVuZGluZzsKIAog ZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDaGVja0NsaWVudENvbm5l Y3Rpb25QZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBD bGllbnRDb25uZWN0aW9uTG9zdDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNWI2Y2FkYjVhNi4u ZmViMjlhMzgxOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTExNjYsNiArMTE2Niw5IEBAIHR5 cGVkZWYgc3RydWN0IFBsYW5TdGF0ZQogCUV4ZWNQcm9jTm9kZU10ZCBFeGVjUHJvY05vZGVSZWFs OwkvKiBhY3R1YWwgZnVuY3Rpb24sIGlmIGFib3ZlIGlzIGEKIAkJCQkJCQkJCQkgKiB3cmFwcGVy ICovCiAKKwlFeGVjUHJvY05vZGVNdGQgRXhlY1Byb2NOb2RlT3JpZ2luYWw7CS8qIHRlbXBvcmFy eSBwbGFjZSB3aGVuIGFkZGluZworCQkJCQkJCQkJCQkgKiBwcm9jZXNzIGZvciBFeGVjUHJvY05v ZGUgKi8KKwogCUluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsJLyogT3B0aW9uYWwgcnVudGlt ZSBzdGF0cyBmb3IgdGhpcyBub2RlICovCiAJV29ya2VySW5zdHJ1bWVudGF0aW9uICp3b3JrZXJf aW5zdHJ1bWVudDsJLyogcGVyLXdvcmtlciBpbnN0cnVtZW50YXRpb24gKi8KIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2NzaWduYWwuaAppbmRleCBjZmUxNDYzMTQ0Li44MmNmY2FjY2FhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2NzaWduYWwuaApAQCAtMzYsNiArMzYsOCBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX0JB UlJJRVIsCQkJLyogZ2xvYmFsIGJhcnJpZXIgaW50ZXJydXB0ICAqLwogCVBST0NTSUdfTE9HX01F TU9SWV9DT05URVhULCAvKiBhc2sgYmFja2VuZCB0byBsb2cgdGhlIG1lbW9yeSBjb250ZXh0cyAq LwogCVBST0NTSUdfR0VUX01FTU9SWV9DT05URVhULCAvKiBhc2sgYmFja2VuZCB0byBzZW5kIHRo ZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX0xPR19RVUVSWV9QTEFOLAkJLyogYXNrIGJh Y2tlbmQgdG8gbG9nIHBsYW4gb2YgdGhlIGN1cnJlbnQKKwkJCQkJCQkJICogcXVlcnkgKi8KIAlQ Uk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBh cHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9wcXVl cnkuaAppbmRleCBmYTNjYzVmMmRmLi43OTQ5YWJmNzZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS90Y29wL3BxdWVyeS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmgKQEAgLTIyLDcg KzIyLDYgQEAgc3RydWN0IFBsYW5uZWRTdG10OwkJCQkvKiBhdm9pZCBpbmNsdWRpbmcgcGxhbm5v ZGVzLmggaGVyZSAqLwogCiBleHRlcm4gUEdETExJTVBPUlQgUG9ydGFsIEFjdGl2ZVBvcnRhbDsK IAotCiBleHRlcm4gUG9ydGFsU3RyYXRlZ3kgQ2hvb3NlUG9ydGFsU3RyYXRlZ3koTGlzdCAqc3Rt dHMpOwogCiBleHRlcm4gTGlzdCAqRmV0Y2hQb3J0YWxUYXJnZXRMaXN0KFBvcnRhbCBwb3J0YWwp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dAppbmRleCBk M2Y1ZDE2YTY3Li43ZGNiOTk1MWU3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL21pc2NfZnVuY3Rpb25zLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21p c2NfZnVuY3Rpb25zLm91dApAQCAtMzE2LDE0ICszMTYsMTUgQEAgU0VMRUNUIHRlc3RfY2Fub25p Y2FsaXplX3BhdGgoJy4vYWJjLy4vZGVmLy4uLy4vZ2hpLy4uLy4uLy4uL2prbC9tbm8nKTsKICAu Li9qa2wvbW5vCiAoMSByb3cpCiAKKy0tIFRlc3QgbG9nZ2luZyBmdW5jdGlvbnMKIC0tCi0tLSBw Z19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKQotLS0KLS0tIE1lbW9yeSBjb250ZXh0cyBh cmUgbG9nZ2VkIGFuZCB0aGV5IGFyZSBub3QgcmV0dXJuZWQgdG8gdGhlIGZ1bmN0aW9uLgorLS0g VGhlIG91dHB1dHMgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBsb2dnZWQgYW5kIHRoZXkgYXJlIG5v dCByZXR1cm5lZCB0bworLS0gdGhlIGZ1bmN0aW9uLgogLS0gRnVydGhlcm1vcmUsIHRoZWlyIGNv bnRlbnRzIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgdGltaW5nLiBIb3dldmVyLAogLS0gd2Ug Y2FuIGF0IGxlYXN0IHZlcmlmeSB0aGF0IHRoZSBjb2RlIGRvZXNuJ3QgZmFpbCwgYW5kIHRoYXQg dGhlCiAtLSBwZXJtaXNzaW9ucyBhcmUgc2V0IHByb3Blcmx5LgogLS0KKy0tIHBnX2xvZ19iYWNr ZW5kX21lbW9yeV9jb250ZXh0cygpCiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRl eHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyAK IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMzcsOCArMzM4LDggQEAgU0VM RUNUIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwaWQpIEZST00gcGdfc3RhdF9hY3Rp dml0eQogIHQKICgxIHJvdykKIAotQ1JFQVRFIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5OwotU0VM RUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX21lbW9yeScsCitDUkVBVEUg Uk9MRSByZWdyZXNzX2xvZ19mdW5jdGlvbjsKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdl KCdyZWdyZXNzX2xvZ19mdW5jdGlvbicsCiAgICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4 dHMoaW50ZWdlciknLCAnRVhFQ1VURScpOyAtLSBubwogIGhhc19mdW5jdGlvbl9wcml2aWxlZ2Ug CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM0NiwxNSArMzQ3LDE1IEBAIFNFTEVDVCBo YXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZ19tZW1vcnknLAogKDEgcm93KQogCiBH UkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhp bnRlZ2VyKQotICBUTyByZWdyZXNzX2xvZ19tZW1vcnk7Ci1TRUxFQ1QgaGFzX2Z1bmN0aW9uX3By aXZpbGVnZSgncmVncmVzc19sb2dfbWVtb3J5JywKKyAgVE8gcmVncmVzc19sb2dfZnVuY3Rpb247 CitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfZnVuY3Rpb24nLAog ICAncGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpJywgJ0VYRUNVVEUnKTsg LS0geWVzCiAgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogIHQKICgxIHJvdykKIAotU0VUIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5OworU0VUIFJPTEUg cmVncmVzc19sb2dfZnVuY3Rpb247CiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRl eHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyAK IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNjMsOCArMzY0LDQxIEBAIFNF TEVDVCBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2VuZF9waWQoKSk7CiAK IFJFU0VUIFJPTEU7CiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfYmFja2VuZF9t ZW1vcnlfY29udGV4dHMoaW50ZWdlcikKLSAgRlJPTSByZWdyZXNzX2xvZ19tZW1vcnk7Ci1EUk9Q IFJPTEUgcmVncmVzc19sb2dfbWVtb3J5OworICBGUk9NIHJlZ3Jlc3NfbG9nX2Z1bmN0aW9uOwor LS0gcGdfbG9nX3F1ZXJ5X3BsYW4oKQorU0VMRUNUIHBnX2xvZ19xdWVyeV9wbGFuKHBnX2JhY2tl bmRfcGlkKCkpOworIHBnX2xvZ19xdWVyeV9wbGFuIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX2Z1 bmN0aW9uJywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0g bm8KKyBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ZgorKDEgcm93KQorCitHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19xdWVyeV9wbGFu KGludGVnZXIpCisgIFRPIHJlZ3Jlc3NfbG9nX2Z1bmN0aW9uOworU0VMRUNUIGhhc19mdW5jdGlv bl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX2Z1bmN0aW9uJywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFu KGludGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0geWVzCisgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VUIFJPTEUgcmVncmVz c19sb2dfZnVuY3Rpb247CitTRUxFQ1QgcGdfbG9nX3F1ZXJ5X3BsYW4ocGdfYmFja2VuZF9waWQo KSk7CisgcGdfbG9nX3F1ZXJ5X3BsYW4gCistLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCitSRVNFVCBST0xFOworUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5 X3BsYW4oaW50ZWdlcikKKyAgRlJPTSByZWdyZXNzX2xvZ19mdW5jdGlvbjsKK0RST1AgUk9MRSBy ZWdyZXNzX2xvZ19mdW5jdGlvbjsKIC0tCiAtLSBUZXN0IHNvbWUgYnVpbHQtaW4gU1JGcwogLS0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbAppbmRleCBhYWViYjI5ODMzLi45 MjMzMDM1NWY2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9u cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCkBAIC0x MDksMzkgKzEwOSw2MCBAQCBTRUxFQ1QgdGVzdF9jYW5vbmljYWxpemVfcGF0aCgnLi9hYmMvLi9k ZWYvLicpOwogU0VMRUNUIHRlc3RfY2Fub25pY2FsaXplX3BhdGgoJy4vYWJjLy4vLi9kZWYvLicp OwogU0VMRUNUIHRlc3RfY2Fub25pY2FsaXplX3BhdGgoJy4vYWJjLy4vZGVmLy4uLy4vZ2hpLy4u Ly4uLy4uL2prbC9tbm8nKTsKIAorLS0gVGVzdCBsb2dnaW5nIGZ1bmN0aW9ucwogLS0KLS0tIHBn X2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cygpCi0tLQotLS0gTWVtb3J5IGNvbnRleHRzIGFy ZSBsb2dnZWQgYW5kIHRoZXkgYXJlIG5vdCByZXR1cm5lZCB0byB0aGUgZnVuY3Rpb24uCistLSBU aGUgb3V0cHV0cyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGxvZ2dlZCBhbmQgdGhleSBhcmUgbm90 IHJldHVybmVkIHRvCistLSB0aGUgZnVuY3Rpb24uCiAtLSBGdXJ0aGVybW9yZSwgdGhlaXIgY29u dGVudHMgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB0aW1pbmcuIEhvd2V2ZXIsCiAtLSB3ZSBj YW4gYXQgbGVhc3QgdmVyaWZ5IHRoYXQgdGhlIGNvZGUgZG9lc24ndCBmYWlsLCBhbmQgdGhhdCB0 aGUKIC0tIHBlcm1pc3Npb25zIGFyZSBzZXQgcHJvcGVybHkuCiAtLQogCistLSBwZ19sb2dfYmFj a2VuZF9tZW1vcnlfY29udGV4dHMoKQorCiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogCiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5 X2NvbnRleHRzKHBpZCkgRlJPTSBwZ19zdGF0X2FjdGl2aXR5CiAgIFdIRVJFIGJhY2tlbmRfdHlw ZSA9ICdjaGVja3BvaW50ZXInOwogCi1DUkVBVEUgUk9MRSByZWdyZXNzX2xvZ19tZW1vcnk7CitD UkVBVEUgUk9MRSByZWdyZXNzX2xvZ19mdW5jdGlvbjsKIAotU0VMRUNUIGhhc19mdW5jdGlvbl9w cml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX21lbW9yeScsCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZp bGVnZSgncmVncmVzc19sb2dfZnVuY3Rpb24nLAogICAncGdfbG9nX2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzKGludGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0gbm8KIAogR1JBTlQgRVhFQ1VURSBPTiBG VU5DVElPTiBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdlcikKLSAgVE8gcmVn cmVzc19sb2dfbWVtb3J5OworICBUTyByZWdyZXNzX2xvZ19mdW5jdGlvbjsKIAotU0VMRUNUIGhh c19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX21lbW9yeScsCitTRUxFQ1QgaGFzX2Z1 bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfZnVuY3Rpb24nLAogICAncGdfbG9nX2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0geWVzCiAKLVNFVCBS T0xFIHJlZ3Jlc3NfbG9nX21lbW9yeTsKK1NFVCBST0xFIHJlZ3Jlc3NfbG9nX2Z1bmN0aW9uOwog U0VMRUNUIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgpKTsK IFJFU0VUIFJPTEU7CiAKIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19iYWNrZW5k X21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKQotICBGUk9NIHJlZ3Jlc3NfbG9nX21lbW9yeTsKKyAg RlJPTSByZWdyZXNzX2xvZ19mdW5jdGlvbjsKKworLS0gcGdfbG9nX3F1ZXJ5X3BsYW4oKQorU0VM RUNUIHBnX2xvZ19xdWVyeV9wbGFuKHBnX2JhY2tlbmRfcGlkKCkpOworCitTRUxFQ1QgaGFzX2Z1 bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfZnVuY3Rpb24nLAorICAncGdfbG9nX3F1ZXJ5 X3BsYW4oaW50ZWdlciknLCAnRVhFQ1VURScpOyAtLSBubworCitHUkFOVCBFWEVDVVRFIE9OIEZV TkNUSU9OIHBnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpCisgIFRPIHJlZ3Jlc3NfbG9nX2Z1bmN0 aW9uOworCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfZnVuY3Rp b24nLAorICAncGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdlciknLCAnRVhFQ1VURScpOyAtLSB5ZXMK KworU0VUIFJPTEUgcmVncmVzc19sb2dfZnVuY3Rpb247CitTRUxFQ1QgcGdfbG9nX3F1ZXJ5X3Bs YW4ocGdfYmFja2VuZF9waWQoKSk7CitSRVNFVCBST0xFOworCitSRVZPS0UgRVhFQ1VURSBPTiBG VU5DVElPTiBwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKQorICBGUk9NIHJlZ3Jlc3NfbG9nX2Z1 bmN0aW9uOwogCi1EUk9QIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5OworRFJPUCBST0xFIHJlZ3Jl c3NfbG9nX2Z1bmN0aW9uOwogCiAtLQogLS0gVGVzdCBzb21lIGJ1aWx0LWluIFNSRnMKCmJhc2Ut Y29tbWl0OiAzNjMxNjEyZWFlOWMyZGVmOTkxNTFjNGYzNmIxYjM3NzFmNTNjYmE3Ci0tIAoyLjQ4 LjEKCg== --=_deacc7c085cc282ae6c35ebfb99f3f03--