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 1tvbgR-006GfG-UQ for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Mar 2025 12:41:08 +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 1tvbfS-006Bz7-JL for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Mar 2025 12:40:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tvbfS-006BxE-4q for pgsql-hackers@lists.postgresql.org; Fri, 21 Mar 2025 12:40:06 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tvbfP-000Jnl-0s for pgsql-hackers@lists.postgresql.org; Fri, 21 Mar 2025 12:40:05 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 2F3DF6093E; Fri, 21 Mar 2025 21:40:00 +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="=_4037db1d77813cd3eab23949ac94fa44" Content-Transfer-Encoding: 7bit Date: Fri, 21 Mar 2025 21:40:00 +0900 From: torikoshia To: pgsql-hackers@lists.postgresql.org Cc: 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> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <784224198089cbe3cc3825332f195475@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 --=_4037db1d77813cd3eab23949ac94fa44 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi, Rebased it again. On 2025-03-10 14:10, torikoshia wrote: > BTW the patch adds about 400 lines to explain.c and it may be better > to split the file as well as 9173e8b6046, but I leave it as it is for > now. This part remains unchanged. -- Regards, -- Atsushi Torikoshi Seconded from NTT DATA GROUP CORPORATION to SRA OSS K.K. --=_4037db1d77813cd3eab23949ac94fa44 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v42-0001-Add-function-to-log-the-plan-of-the-currently-ru.patch Content-Disposition: attachment; filename=v42-0001-Add-function-to-log-the-plan-of-the-currently-ru.patch; size=34184 RnJvbSBlYTUwOTJhMTNlN2FjNDI2YWM0MDM5N2NlZmY1ZjY3MzU1Yjc3MjNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IEZyaSwgMjEgTWFyIDIwMjUgMjE6MzQ6MDggKzA5MDAKU3ViamVjdDog W1BBVENIIHY0Ml0gQWRkIGZ1bmN0aW9uIHRvIGxvZyB0aGUgcGxhbiBvZiB0aGUgY3VycmVudGx5 IHJ1bm5pbmcKIHF1ZXJ5CgpDdXJyZW50bHksIHdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlIHF1ZXJ5 IGV4ZWN1dGlvbiB0byBmaW5pc2gKdG8ga25vdyBpdHMgcGxhbiBlaXRoZXIgdXNpbmcgRVhQTEFJ TiBBTkFMWVpFIG9yIGF1dG9fZXhwbGFpbi4KVGhpcyBpcyBub3Qgc28gY29udmVuaWVudCwgZm9y IGV4YW1wbGUgd2hlbiBpbnZlc3RpZ2F0aW5nCmxvbmctcnVubmluZyBxdWVyaWVzIG9uIHByb2R1 Y3Rpb24gZW52aXJvbm1lbnRzLgpUbyBpbXByb3ZlIHRoaXMgc2l0dWF0aW9uLCB0aGlzIHBhdGNo IGFkZHMgcGdfbG9nX3F1ZXJ5X3BsYW4oKQpmdW5jdGlvbiB0aGF0IHJlcXVlc3RzIHRvIGxvZyB0 aGUgcGxhbiBvZiB0aGUgY3VycmVudGx5CmV4ZWN1dGluZyBxdWVyeS4KCkJ5IGRlZmF1bHQsIG9u bHkgc3VwZXJ1c2VycyBhcmUgYWxsb3dlZCB0byByZXF1ZXN0IHRvIGxvZyB0aGUKcGxhbnMgYmVj YXVzZSBhbGxvd2luZyBhbnkgdXNlcnMgdG8gaXNzdWUgdGhpcyByZXF1ZXN0IGF0IGFuCnVuYm91 bmRlZCByYXRlIHdvdWxkIGNhdXNlIGxvdHMgb2YgbG9nIG1lc3NhZ2VzIGFuZCB3aGljaCBjYW4K bGVhZCB0byBkZW5pYWwgb2Ygc2VydmljZS4KCk9uIHJlY2VpcHQgb2YgdGhlIHJlcXVlc3QsIGNv ZGVzIGZvciBsb2dnaW5nIHBsYW4gaXMgd3JhcHBlZAp0byBldmVyeSBFeGVjUHJvY05vZGUgYW5k IHdoZW4gdGhlIGV4ZWN1dG9yIHJ1bnMgb25lIG9mCkV4ZWNQcm9jTm9kZSwgdGhlIHBsYW4gaXMg YWN0dWFsbHkgbG9nZ2VkLiBUaGVzZSB3cmFwcGVycyBhcmUKdW53cmFwcGVkIHdoZW4gb25jZSB0 aGUgcGxhbiBpcyBsb2dnZWQuCkluIHRoaXMgd2F5LCB3ZSBjYW4gYXZvaWQgYWRkaW5nIHRoZSBv dmVyaGVhZCB3aGljaCB3ZSdsbCBmYWNlCndoZW4gYWRkaW5nIENIRUNLX0ZPUl9JTlRFUlJVUFRT KCkgbGlrZSBtZWNoYW5pc21zIGluIHNvbWV3aGVyZQppbiBleGVjdXRvciBjb2RlcyBzYWZlbHku Ci0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgfCAgMjMg Ky0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgIDUwICsr Kwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAgICAgICAgfCAgIDcgKwog c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbCAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgfCAzNzIgKysrKysrKysr KysrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAg fCAgMTIgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgfCAg IDQgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgfCAgIDYgKwogc3Jj L2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5oICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdGNvcC9w cXVlcnkuaCAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0IHwgIDU0ICsrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwv bWlzY19mdW5jdGlvbnMuc3FsICAgICAgfCAgNDEgKy0KIDE4IGZpbGVzIGNoYW5nZWQsIDU1NyBp bnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2F1dG9f ZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyBiL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFp bi5jCmluZGV4IDNiNzNiZDE5MTAuLjU4MDcxMzUwMDAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYXV0 b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCisrKyBiL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9f ZXhwbGFpbi5jCkBAIC00MDksMjYgKzQwOSw5IEBAIGV4cGxhaW5fRXhlY3V0b3JFbmQoUXVlcnlE ZXNjICpxdWVyeURlc2MpCiAJCQllcy0+Zm9ybWF0ID0gYXV0b19leHBsYWluX2xvZ19mb3JtYXQ7 CiAJCQllcy0+c2V0dGluZ3MgPSBhdXRvX2V4cGxhaW5fbG9nX3NldHRpbmdzOwogCi0JCQlFeHBs YWluQmVnaW5PdXRwdXQoZXMpOwotCQkJRXhwbGFpblF1ZXJ5VGV4dChlcywgcXVlcnlEZXNjKTsK LQkJCUV4cGxhaW5RdWVyeVBhcmFtZXRlcnMoZXMsIHF1ZXJ5RGVzYy0+cGFyYW1zLCBhdXRvX2V4 cGxhaW5fbG9nX3BhcmFtZXRlcl9tYXhfbGVuZ3RoKTsKLQkJCUV4cGxhaW5QcmludFBsYW4oZXMs IHF1ZXJ5RGVzYyk7Ci0JCQlpZiAoZXMtPmFuYWx5emUgJiYgYXV0b19leHBsYWluX2xvZ190cmln Z2VycykKLQkJCQlFeHBsYWluUHJpbnRUcmlnZ2VycyhlcywgcXVlcnlEZXNjKTsKLQkJCWlmIChl cy0+Y29zdHMpCi0JCQkJRXhwbGFpblByaW50SklUU3VtbWFyeShlcywgcXVlcnlEZXNjKTsKLQkJ CUV4cGxhaW5FbmRPdXRwdXQoZXMpOwotCi0JCQkvKiBSZW1vdmUgbGFzdCBsaW5lIGJyZWFrICov Ci0JCQlpZiAoZXMtPnN0ci0+bGVuID4gMCAmJiBlcy0+c3RyLT5kYXRhW2VzLT5zdHItPmxlbiAt IDFdID09ICdcbicpCi0JCQkJZXMtPnN0ci0+ZGF0YVstLWVzLT5zdHItPmxlbl0gPSAnXDAnOwot Ci0JCQkvKiBGaXggSlNPTiB0byBvdXRwdXQgYW4gb2JqZWN0ICovCi0JCQlpZiAoYXV0b19leHBs YWluX2xvZ19mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfSlNPTikKLQkJCXsKLQkJCQllcy0+c3Ry LT5kYXRhWzBdID0gJ3snOwotCQkJCWVzLT5zdHItPmRhdGFbZXMtPnN0ci0+bGVuIC0gMV0gPSAn fSc7Ci0JCQl9CisJCQlFeHBsYWluQXNzZW1ibGVMb2dPdXRwdXQoZXMsIHF1ZXJ5RGVzYywgYXV0 b19leHBsYWluX2xvZ19mb3JtYXQsCisJCQkJCQkJCQkgYXV0b19leHBsYWluX2xvZ190cmlnZ2Vy cywKKwkJCQkJCQkJCSBhdXRvX2V4cGxhaW5fbG9nX3BhcmFtZXRlcl9tYXhfbGVuZ3RoKTsKIAog CQkJLyoKIAkJCSAqIE5vdGU6IHdlIHJlbHkgb24gdGhlIGV4aXN0aW5nIGxvZ2dpbmcgb2YgY29u dGV4dCBvcgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dt bC9mdW5jLnNnbWwKaW5kZXggNmZhMWQ2NTg2Yi4uZGE4MGI3ZWY4YSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0yODU3 MCw2ICsyODU3MCwyNSBAQCBhY2wgICAgICB8IHtwb3N0Z3Jlcz1hcndkRHh0bS9wb3N0Z3Jlcyxm b289ci9wb3N0Z3Jlc30KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCisg ICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJp bWFyeT5wZ19sb2dfcXVlcnlfcGxhbjwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+Cisg ICAgICAgIDxmdW5jdGlvbj5wZ19sb2dfcXVlcnlfcGxhbjwvZnVuY3Rpb24+ICggPHBhcmFtZXRl cj5waWQ8L3BhcmFtZXRlcj4gPHR5cGU+aW50ZWdlcjwvdHlwZT4gKQorICAgICAgICA8cmV0dXJu dmFsdWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJh PgorICAgICAgICBSZXF1ZXN0cyB0byBsb2cgdGhlIHBsYW4gb2YgdGhlIHF1ZXJ5IGN1cnJlbnRs eSBydW5uaW5nIG9uIHRoZQorICAgICAgICBiYWNrZW5kIHdpdGggc3BlY2lmaWVkIHByb2Nlc3Mg SUQuCisgICAgICAgIEl0IHdpbGwgYmUgbG9nZ2VkIGF0IDxsaXRlcmFsPkxPRzwvbGl0ZXJhbD4g bWVzc2FnZSBsZXZlbCBhbmQKKyAgICAgICAgd2lsbCBhcHBlYXIgaW4gdGhlIHNlcnZlciBsb2cg YmFzZWQgb24gdGhlIGxvZworICAgICAgICBjb25maWd1cmF0aW9uIHNldCAoU2VlIDx4cmVmIGxp bmtlbmQ9InJ1bnRpbWUtY29uZmlnLWxvZ2dpbmciLz4KKyAgICAgICAgZm9yIG1vcmUgaW5mb3Jt YXRpb24pLCBidXQgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY2xpZW50CisgICAgICAgIHJlZ2Fy ZGxlc3Mgb2YgPHhyZWYgbGlua2VuZD0iZ3VjLWNsaWVudC1taW4tbWVzc2FnZXMiLz4uCisgICAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisKICAgICAgIDxyb3c+CiAgICAgICAg PGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJl Ij4KICAgICAgICAgPGluZGV4dGVybT4KQEAgLTI4Njg4LDYgKzI4NzA3LDM3IEBAIExPRzogIEdy YW5kIHRvdGFsOiAxNjUxOTIwIGJ5dGVzIGluIDIwMSBibG9ja3M7IDYyMjM2MCBmcmVlICg4OCBj aHVua3MpOyAxMDI5NTYwCiAgICAgYmVjYXVzZSBpdCBtYXkgZ2VuZXJhdGUgYSBsYXJnZSBudW1i ZXIgb2YgbG9nIG1lc3NhZ2VzLgogICAgPC9wYXJhPgogCisgICA8cGFyYT4KKyAgICA8ZnVuY3Rp b24+cGdfbG9nX3F1ZXJ5X3BsYW48L2Z1bmN0aW9uPiBjYW4gYmUgdXNlZAorICAgIHRvIGxvZyB0 aGUgcGxhbiBvZiBhIGJhY2tlbmQgcHJvY2Vzcy4gRm9yIGV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rp bmc+Citwb3N0Z3Jlcz0jIFNFTEVDVCBwZ19sb2dfcXVlcnlfcGxhbigyMDExMTYpOworIHBnX2xv Z19xdWVyeV9wbGFuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCis8 L3Byb2dyYW1saXN0aW5nPgorVGhlIGZvcm1hdCBvZiB0aGUgcXVlcnkgcGxhbiBpcyB0aGUgc2Ft ZSBhcyB3aGVuIDxsaXRlcmFsPlZFUkJPU0U8L2xpdGVyYWw+LAorPGxpdGVyYWw+Q09TVFM8L2xp dGVyYWw+LCA8bGl0ZXJhbD5TRVRUSU5HUzwvbGl0ZXJhbD4gYW5kCis8bGl0ZXJhbD5GT1JNQVQg VEVYVDwvbGl0ZXJhbD4gYXJlIHVzZWQgaW4gdGhlIDxjb21tYW5kPkVYUExBSU48L2NvbW1hbmQ+ Citjb21tYW5kLiBGb3IgZXhhbXBsZToKKzxzY3JlZW4+CitMT0c6ICBxdWVyeSBwbGFuIHJ1bm5p bmcgb24gYmFja2VuZCB3aXRoIFBJRCAyMDExMTYgaXM6CisgICAgICAgIFF1ZXJ5IFRleHQ6IFNF TEVDVCAqIEZST00gcGdiZW5jaF9hY2NvdW50czsKKyAgICAgICAgU2VxIFNjYW4gb24gcHVibGlj LnBnYmVuY2hfYWNjb3VudHMgIChjb3N0PTAuMDAuLjUyNzg3LjAwIHJvd3M9MjAwMDAwMCB3aWR0 aD05NykKKyAgICAgICAgICBPdXRwdXQ6IGFpZCwgYmlkLCBhYmFsYW5jZSwgZmlsbGVyCisgICAg ICAgIFNldHRpbmdzOiB3b3JrX21lbSA9ICcxTUInCisgICAgICAgIFF1ZXJ5IElkZW50aWZpZXI6 IDg2MjEyNTU1NDY1NjA3Mzk2ODAKKzwvc2NyZWVuPgorICAgIE5vdGUgdGhhdCB3aGVuIHRoZSB0 YXJnZXQgaXMgZXhlY3V0aW5nIG5lc3RlZCBzdGF0ZW1lbnRzKHN0YXRlbWVudHMgZXhlY3V0ZWQK KyAgICBpbnNpZGUgYSBmdW5jdGlvbiksIG9ubHkgdGhlIGlubmVybW9zdCBxdWVyeSBwbGFuIGlz IGxvZ2dlZC4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgV2hlbiBhIHN1YnRyYW5zYWN0 aW9uIGlzIGFib3J0ZWQsIDxmdW5jdGlvbj5wZ19sb2dfcXVlcnlfcGxhbjwvZnVuY3Rpb24+Cisg ICAgY2Fubm90IGxvZyB0aGUgcXVlcnkgcGxhbiBhZnRlciB0aGUgYWJvcnQuCisgICA8L3BhcmE+ CisKICAgPC9zZWN0Mj4KIAogICA8c2VjdDIgaWQ9ImZ1bmN0aW9ucy1hZG1pbi1iYWNrdXAiPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IGI4ODU1MTNmNzYuLjFiNGMwYWJlYTUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJj YXRhbG9nL3BnX2VudW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW4uaCIKICNpbmNs dWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgi CiAjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIKQEAgLTI5MDQsNiArMjkwNSw5IEBAIEFib3J0 VHJhbnNhY3Rpb24odm9pZCkKIAkvKiBSZXNldCBzbmFwc2hvdCBleHBvcnQgc3RhdGUuICovCiAJ U25hcEJ1aWxkUmVzZXRFeHBvcnRlZFNuYXBzaG90U3RhdGUoKTsKIAorCS8qIFJlc2V0IHBnX2xv Z19xdWVyeV9wbGFuKCkgcmVsYXRlZCBzdGF0ZS4gKi8KKwlSZXNldExvZ1F1ZXJ5UGxhblN0YXRl KCk7CisKIAkvKgogCSAqIElmIHRoaXMgeGFjdCBoYXMgc3RhcnRlZCBhbnkgdW5maW5pc2hlZCBw YXJhbGxlbCBvcGVyYXRpb24sIGNsZWFuIHVwCiAJICogaXRzIHdvcmtlcnMgYW5kIGV4aXQgcGFy YWxsZWwgbW9kZS4gIERvbid0IHdhcm4gYWJvdXQgbGVha2VkIHJlc291cmNlcy4KQEAgLTUyOTYs NiArNTMwMCw5IEBAIEFib3J0U3ViVHJhbnNhY3Rpb24odm9pZCkKIAkvKiBSZXNldCBsb2dpY2Fs IHN0cmVhbWluZyBzdGF0ZS4gKi8KIAlSZXNldExvZ2ljYWxTdHJlYW1pbmdTdGF0ZSgpOwogCisJ LyogUmVzZXQgcGdfbG9nX3F1ZXJ5X3BsYW4oKSByZWxhdGVkIHN0YXRlLiAqLworCVJlc2V0TG9n UXVlcnlQbGFuU3RhdGUoKTsKKwogCS8qCiAJICogTm8gbmVlZCBmb3IgU25hcEJ1aWxkUmVzZXRF eHBvcnRlZFNuYXBzaG90U3RhdGUoKSBoZXJlLCBzbmFwc2hvdAogCSAqIGV4cG9ydHMgYXJlIG5v dCBzdXBwb3J0ZWQgaW4gc3VidHJhbnNhY3Rpb25zLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X2Z1bmN0aW9ucy5zcWwKaW5kZXggNTY2ZjMwOGU0NC4uZWMyZTFjMWZkOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCkBAIC03NzUsNiArNzc1LDggQEAgUkVWT0tF IEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbHNfbG9naWNhbG1hcGRpcigpIEZST00gUFVCTElDOwog CiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sc19yZXBsc2xvdGRpcih0ZXh0KSBGUk9N IFBVQkxJQzsKIAorUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5X3BsYW4o aW50ZWdlcikgRlJPTSBQVUJMSUM7CisKIC0tCiAtLSBXZSBhbHNvIHNldCB1cCBzb21lIHRoaW5n cyBhcyBhY2Nlc3NpYmxlIHRvIHN0YW5kYXJkIHJvbGVzLgogLS0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YwppbmRleCAzOTFiMzRhMmFmLi5iZGZlNTQ1ZTc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBA IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiaml0L2ppdC5oIgogI2luY2x1ZGUgImxpYnBxL3Bx Zm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHJvdG9jb2wuaCIKKyNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJub2Rlcy9leHRlbnNpYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFr ZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBAIC0zMyw3ICszNCw5IEBA CiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0 ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0 aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9ndWNfdGFibGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbi5oIgpAQCAtNDUs NiArNDgsMTEgQEAKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3htbC5oIgogCitib29sCQlQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0QWN0aXZlID0gZmFs c2U7CisKKy8qIEN1cnJlbnRseSBleGVjdXRpbmcgcXVlcnkncyBRdWVyeURlc2MgKi8KK1F1ZXJ5 RGVzYyAqQWN0aXZlUXVlcnlEZXNjID0gTlVMTDsKKwogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRv IGdldCBjb250cm9sIGluIEV4cGxhaW5PbmVRdWVyeSgpICovCiBFeHBsYWluT25lUXVlcnlfaG9v a190eXBlIEV4cGxhaW5PbmVRdWVyeV9ob29rID0gTlVMTDsKQEAgLTE2NSw2ICsxNzMsOSBAQCBz dGF0aWMgRXhwbGFpbldvcmtlcnNTdGF0ZSAqRXhwbGFpbkNyZWF0ZVdvcmtlcnNTdGF0ZShpbnQg bnVtX3dvcmtlcnMpOwogc3RhdGljIHZvaWQgRXhwbGFpbk9wZW5Xb3JrZXIoaW50IG4sIEV4cGxh aW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgRXhwbGFpbkNsb3NlV29ya2VyKGludCBuLCBFeHBs YWluU3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIEV4cGxhaW5GbHVzaFdvcmtlcnNTdGF0ZShFeHBs YWluU3RhdGUgKmVzKTsKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlV2l0aEV4 cGxhaW4oUGxhblN0YXRlICpwcyk7CitzdGF0aWMgdm9pZCBXcmFwRXhlY1Byb2NOb2RlV2l0aEV4 cGxhaW4oUGxhblN0YXRlICpwcyk7CitzdGF0aWMgdm9pZCBVbndyYXBFeGVjUHJvY05vZGVXaXRo RXhwbGFpbihQbGFuU3RhdGUgKnBzKTsKIAogCiAKQEAgLTc1Niw2ICs3NjcsMzcgQEAgRXhwbGFp blByaW50U2V0dGluZ3MoRXhwbGFpblN0YXRlICplcykKIAl9CiB9CiAKKy8qCisgKiBFeHBsYWlu QXNzZW1ibGVMb2dPdXRwdXQgLQorICogICAgQXNzZW1ibGUgZXMtPnN0ciBmb3IgbG9nZ2luZyBh Y2NvcmRpbmcgdG8gc3BlY2lmaWVkIG9wdGlvbnMgYW5kIGZvcm1hdAorICovCisKK3ZvaWQKK0V4 cGxhaW5Bc3NlbWJsZUxvZ091dHB1dChFeHBsYWluU3RhdGUgKmVzLCBRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGxvZ0Zvcm1hdCwKKwkJCQkJCSBib29sIGxvZ1RyaWdnZXJzLCBpbnQgbG9nUGFy YW1ldGVyTWF4TGVuZ3RoKQoreworCUV4cGxhaW5CZWdpbk91dHB1dChlcyk7CisJRXhwbGFpblF1 ZXJ5VGV4dChlcywgcXVlcnlEZXNjKTsKKwlFeHBsYWluUXVlcnlQYXJhbWV0ZXJzKGVzLCBxdWVy eURlc2MtPnBhcmFtcywgbG9nUGFyYW1ldGVyTWF4TGVuZ3RoKTsKKwlFeHBsYWluUHJpbnRQbGFu KGVzLCBxdWVyeURlc2MpOworCWlmIChlcy0+YW5hbHl6ZSAmJiBsb2dUcmlnZ2VycykKKwkJRXhw bGFpblByaW50VHJpZ2dlcnMoZXMsIHF1ZXJ5RGVzYyk7CisJaWYgKGVzLT5jb3N0cykKKwkJRXhw bGFpblByaW50SklUU3VtbWFyeShlcywgcXVlcnlEZXNjKTsKKwlFeHBsYWluRW5kT3V0cHV0KGVz KTsKKworCS8qIFJlbW92ZSBsYXN0IGxpbmUgYnJlYWsgKi8KKwlpZiAoZXMtPnN0ci0+bGVuID4g MCAmJiBlcy0+c3RyLT5kYXRhW2VzLT5zdHItPmxlbiAtIDFdID09ICdcbicpCisJCWVzLT5zdHIt PmRhdGFbLS1lcy0+c3RyLT5sZW5dID0gJ1wwJzsKKworCS8qIEZpeCBKU09OIHRvIG91dHB1dCBh biBvYmplY3QgKi8KKwlpZiAobG9nRm9ybWF0ID09IEVYUExBSU5fRk9STUFUX0pTT04pCisJewor CQllcy0+c3RyLT5kYXRhWzBdID0gJ3snOworCQllcy0+c3RyLT5kYXRhW2VzLT5zdHItPmxlbiAt IDFdID0gJ30nOworCX0KK30KKwogLyoKICAqIEV4cGxhaW5QcmludFBsYW4gLQogICoJICBjb252 ZXJ0IGEgUXVlcnlEZXNjJ3MgcGxhbiB0cmVlIHRvIHRleHQgYW5kIGFwcGVuZCBpdCB0byBlcy0+ c3RyCkBAIC0xODI4LDYgKzE4NzAsOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgTGlzdCAqYW5jZXN0b3JzLAogCS8qCiAJICogV2UgaGF2ZSB0byBmb3JjaWJseSBjbGVhbiB1 cCB0aGUgaW5zdHJ1bWVudGF0aW9uIHN0YXRlIGJlY2F1c2Ugd2UKIAkgKiBoYXZlbid0IGRvbmUg RXhlY3V0b3JFbmQgeWV0LiAgVGhpcyBpcyBwcmV0dHkgZ3JvdHR5IC4uLgorCSAqIFRoaXMgY2xl YW51cCBzaG91bGQgbm90IGJlIGRvbmUgd2hlbiB0aGUgcXVlcnkgaGFzIGFscmVhZHkgYmVlbiBl eGVjdXRlZAorCSAqIGFuZCBleHBsYWluIGhhcyBiZWVuIGNhbGxlZCBieSBzaWduYWwsIGFzIHRo ZSB0YXJnZXQgcXVlcnkgbWF5IHVzZQorCSAqIGluc3RydW1lbnRhdGlvbiBhbmQgY2xlYW4gaXRz ZWxmIHVwLgogCSAqCiAJICogTm90ZTogY29udHJpYi9hdXRvX2V4cGxhaW4gY291bGQgY2F1c2Ug aW5zdHJ1bWVudGF0aW9uIHRvIGJlIHNldCB1cAogCSAqIGV2ZW4gdGhvdWdoIHdlIGRpZG4ndCBh c2sgZm9yIGl0IGhlcmUuICBCZSBjYXJlZnVsIG5vdCB0byBwcmludCBhbnkKQEAgLTE4MzUsNyAr MTg4MCw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3Rv cnMsCiAJICogSW5zdHJFbmRMb29wIGNhbGwgYW55d2F5LCBpZiBwb3NzaWJsZSwgdG8gcmVkdWNl IHRoZSBudW1iZXIgb2YgY2FzZXMKIAkgKiBhdXRvX2V4cGxhaW4gaGFzIHRvIGNvbnRlbmQgd2l0 aC4KIAkgKi8KLQlpZiAocGxhbnN0YXRlLT5pbnN0cnVtZW50KQorCWlmIChwbGFuc3RhdGUtPmlu c3RydW1lbnQgJiYgIWVzLT5zaWduYWxlZCkKIAkJSW5zdHJFbmRMb29wKHBsYW5zdGF0ZS0+aW5z dHJ1bWVudCk7CiAKIAlpZiAoZXMtPmFuYWx5emUgJiYKQEAgLTQ5ODcsMyArNTAzMiwzMjggQEAg RXhwbGFpbkZsdXNoV29ya2Vyc1N0YXRlKEV4cGxhaW5TdGF0ZSAqZXMpCiAJcGZyZWUod3N0YXRl LT53b3JrZXJfc3RhdGVfc2F2ZSk7CiAJcGZyZWUod3N0YXRlKTsKIH0KKworLyoKKyAqIEhhbmRs ZUxvZ1F1ZXJ5UGxhbkludGVycnVwdCAtCisgKiAgICBIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRl cnJ1cHQgaW5kaWNhdGluZyBsb2dnaW5nIHRoZSBwbGFuIG9mIHRoZSBjdXJyZW50bHkKKyAqICAg IHJ1bm5pbmcgcXVlcnkuCisgKgorICogQWxsIHRoZSBhY3R1YWwgd29yayBpcyBkZWZlcnJlZCB0 byBQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0KCksCisgKiBiZWNhdXNlIHdlIGNhbm5vdCBz YWZlbHkgZW1pdCBhIGxvZyBtZXNzYWdlIGluc2lkZSB0aGUgc2lnbmFsIGhhbmRsZXIuCisgKi8K K3ZvaWQKK0hhbmRsZUxvZ1F1ZXJ5UGxhbkludGVycnVwdCh2b2lkKQoreworCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOworCUxvZ1F1ZXJ5UGxhblBlbmRpbmcgPSB0cnVlOworCS8qIGxhdGNoIHdp bGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCit9CisKKy8qCisgKiBS ZXNldExvZ1F1ZXJ5UGxhblN0YXRlIC0KKyAqICAgQ2xlYXIgcGdfbG9nX3F1ZXJ5X3BsYW4oKSBy ZWxhdGVkIHN0YXRlIGR1cmluZyAoc3ViKXRyYW5zYWN0aW9uIGFib3J0CisgKi8KK3ZvaWQKK1Jl c2V0TG9nUXVlcnlQbGFuU3RhdGUodm9pZCkKK3sKKwkvKgorCSAqIEFmdGVyIGFib3J0LCBzb21l IGVsZW1lbnRzIG9mIEFjdGl2ZVF1ZXJ5RGVzYyBpcyBmcmVlZC4gVG8gYXZvaWQKKwkgKiBhY2Nl c3NpbmcgdGhlbSwgcmVzZXQgQWN0aXZlUXVlcnlEZXNjIGhlcmUuCisJICovCisJQWN0aXZlUXVl cnlEZXNjID0gTlVMTDsKKwlQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0QWN0aXZlID0gZmFs c2U7Cit9CisKKy8qCisgKiBXcmFwTXVsdGlFeGVjUHJvY05vZGVzV2l0aEV4cGxhaW4gLQorICoJ ICBXcmFwIGFycmF5IG9mIFBsYW5TdGF0ZXMgRXhlY1Byb2NOb2RlcyB3aXRoIEV4ZWNQcm9jTm9k ZVdpdGhFeHBsYWluCisgKi8KK3N0YXRpYyB2b2lkCitXcmFwTXVsdGlFeGVjUHJvY05vZGVzV2l0 aEV4cGxhaW4oUGxhblN0YXRlICoqcGxhbnN0YXRlcywgaW50IG5wbGFucykKK3sKKwlpbnQJCQlp OworCisJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQorCQlXcmFwRXhlY1Byb2NOb2RlV2l0 aEV4cGxhaW4ocGxhbnN0YXRlc1tpXSk7Cit9CisKKy8qCisgKiBXcmFwQ3VzdG9tUGxhbkNoaWxk RXhlY1Byb2NOb2Rlc1dpdGhFeHBsYWluIC0KKyAqCSAgV3JhcCBDdXN0b21TY2Fuc3RhdGUgY2hp bGRyZW4ncyBFeGVjUHJvY05vZGVzIHdpdGggRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4KKyAqLwor c3RhdGljIHZvaWQKK1dyYXBDdXN0b21QbGFuQ2hpbGRFeGVjUHJvY05vZGVzV2l0aEV4cGxhaW4o Q3VzdG9tU2NhblN0YXRlICpjc3MpCit7CisJTGlzdENlbGwgICAqY2VsbDsKKworCWZvcmVhY2go Y2VsbCwgY3NzLT5jdXN0b21fcHMpCisJCVdyYXBFeGVjUHJvY05vZGVXaXRoRXhwbGFpbigoUGxh blN0YXRlICopIGxmaXJzdChjZWxsKSk7Cit9CisKKy8qCisgKiBXcmFwRXhlY1Byb2NOb2RlV2l0 aEV4cGxhaW4gLQorICoJICBXcmFwIEV4ZWNQcm9jTm9kZSB3aXRoIEV4ZWNQcm9jTm9kZVdpdGhF eHBsYWluIHJlY3Vyc2l2ZWx5CisgKi8KK3N0YXRpYyB2b2lkCitXcmFwRXhlY1Byb2NOb2RlV2l0 aEV4cGxhaW4oUGxhblN0YXRlICpwcykKK3sKKwkvKiB3cmFwcGluZyBjYW4gYmUgZG9uZSBvbmx5 IG9uY2UgKi8KKwlpZiAocHMtPkV4ZWNQcm9jTm9kZU9yaWdpbmFsICE9IE5VTEwpCisJCXJldHVy bjsKKworCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwlwcy0+RXhlY1Byb2NOb2RlT3JpZ2luYWwg PSBwcy0+RXhlY1Byb2NOb2RlOworCXBzLT5FeGVjUHJvY05vZGUgPSBFeGVjUHJvY05vZGVXaXRo RXhwbGFpbjsKKworCWlmIChwcy0+bGVmdHRyZWUgIT0gTlVMTCkKKwkJV3JhcEV4ZWNQcm9jTm9k ZVdpdGhFeHBsYWluKHBzLT5sZWZ0dHJlZSk7CisJaWYgKHBzLT5yaWdodHRyZWUgIT0gTlVMTCkK KwkJV3JhcEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluKHBzLT5yaWdodHRyZWUpOworCisJLyogc3Bl Y2lhbCBjaGlsZCBwbGFucyAqLworCXN3aXRjaCAobm9kZVRhZyhwcy0+cGxhbikpCisJeworCQlj YXNlIFRfQXBwZW5kOgorCQkJZXJlcG9ydChERUJVRzEsIGVycm1zZygid3JhcHBpbmcgQXBwZW5k IikpOworCQkJV3JhcE11bHRpRXhlY1Byb2NOb2Rlc1dpdGhFeHBsYWluKCgoQXBwZW5kU3RhdGUg KikgcHMpLT5hcHBlbmRwbGFucywKKwkJCQkJCQkJCQkJICAoKEFwcGVuZFN0YXRlICopIHBzKS0+ YXNfbnBsYW5zKTsKKwkJCWJyZWFrOworCQljYXNlIFRfTWVyZ2VBcHBlbmQ6CisJCQllcmVwb3J0 KERFQlVHMSwgZXJybXNnKCJ3cmFwcGluZyBNZXJnZUFwcGVuZCIpKTsKKwkJCVdyYXBNdWx0aUV4 ZWNQcm9jTm9kZXNXaXRoRXhwbGFpbigoKE1lcmdlQXBwZW5kU3RhdGUgKikgcHMpLT5tZXJnZXBs YW5zLAorCQkJCQkJCQkJCQkgICgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwcyktPm1zX25wbGFucyk7 CisJCQlicmVhazsKKwkJY2FzZSBUX0JpdG1hcEFuZDoKKwkJCWVyZXBvcnQoREVCVUcxLCBlcnJt c2coIndyYXBwaW5nIEJpdG1hcEFuZFN0YXRlIikpOworCQkJV3JhcE11bHRpRXhlY1Byb2NOb2Rl c1dpdGhFeHBsYWluKCgoQml0bWFwQW5kU3RhdGUgKikgcHMpLT5iaXRtYXBwbGFucywKKwkJCQkJ CQkJCQkJICAoKEJpdG1hcEFuZFN0YXRlICopIHBzKS0+bnBsYW5zKTsKKwkJCWJyZWFrOworCQlj YXNlIFRfQml0bWFwT3I6CisJCQllcmVwb3J0KERFQlVHMSwgZXJybXNnKCJ3cmFwcGluZyBCaXRt YXBPcnRhdGUiKSk7CisJCQlXcmFwTXVsdGlFeGVjUHJvY05vZGVzV2l0aEV4cGxhaW4oKChCaXRt YXBPclN0YXRlICopIHBzKS0+Yml0bWFwcGxhbnMsCisJCQkJCQkJCQkJCSAgKChCaXRtYXBPclN0 YXRlICopIHBzKS0+bnBsYW5zKTsKKwkJCWJyZWFrOworCQljYXNlIFRfU3VicXVlcnlTY2FuOgor CQkJZXJlcG9ydChERUJVRzEsIGVycm1zZygid3JhcHBpbmcgU3VicXVlcnkiKSk7CisJCQlXcmFw RXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4oKChTdWJxdWVyeVNjYW5TdGF0ZSAqKSBwcyktPnN1YnBs YW4pOworCQkJYnJlYWs7CisJCWNhc2UgVF9DdXN0b21TY2FuOgorCQkJZXJlcG9ydChERUJVRzEs IGVycm1zZygid3JhcHBpbmcgQ3VzdG9tU2NhblN0YXRlIikpOworCQkJV3JhcEN1c3RvbVBsYW5D aGlsZEV4ZWNQcm9jTm9kZXNXaXRoRXhwbGFpbigoQ3VzdG9tU2NhblN0YXRlICopIHBzKTsKKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJfQorfQorCisvKgorICogVW53cmFwTXVs dGlFeGVjUHJvY05vZGVzV2l0aEV4cGxhaW4gLQorICoJICBVbndyYXAgYXJyYXkgb2YgUGxhblN0 YXRlcyBFeGVjUHJvY05vZGVzIHdpdGggRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4KKyAqLworc3Rh dGljIHZvaWQKK1Vud3JhcE11bHRpRXhlY1Byb2NOb2Rlc1dpdGhFeHBsYWluKFBsYW5TdGF0ZSAq KnBsYW5zdGF0ZXMsIGludCBucGxhbnMpCit7CisJaW50CQkJaTsKKworCWZvciAoaSA9IDA7IGkg PCBucGxhbnM7IGkrKykKKwkJVW53cmFwRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4ocGxhbnN0YXRl c1tpXSk7Cit9CisKKy8qCisgKiBVbndyYXBDdXN0b21QbGFuQ2hpbGRFeGVjUHJvY05vZGVzV2l0 aEV4cGxhaW4gLQorICoJICBVbndyYXAgQ3VzdG9tU2NhbnN0YXRlIGNoaWxkcmVuJ3MgRXhlY1By b2NOb2RlcyB3aXRoIEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluCisgKi8KK3N0YXRpYyB2b2lkCitV bndyYXBDdXN0b21QbGFuQ2hpbGRFeGVjUHJvY05vZGVzV2l0aEV4cGxhaW4oQ3VzdG9tU2NhblN0 YXRlICpjc3MpCit7CisJTGlzdENlbGwgICAqY2VsbDsKKworCWZvcmVhY2goY2VsbCwgY3NzLT5j dXN0b21fcHMpCisJCVVud3JhcEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluKChQbGFuU3RhdGUgKikg bGZpcnN0KGNlbGwpKTsKK30KKworLyoKKyAqIFVud3JhcEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWlu IC0KKyAqCSAgVW53cmFwIEV4ZWNQcm9jTm9kZSB3aXRoIEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWlu IHJlY3Vyc2l2ZWx5CisgKi8KK3N0YXRpYyB2b2lkCitVbndyYXBFeGVjUHJvY05vZGVXaXRoRXhw bGFpbihQbGFuU3RhdGUgKnBzKQoreworCUFzc2VydChwcy0+RXhlY1Byb2NOb2RlT3JpZ2luYWwg IT0gTlVMTCk7CisKKwljaGVja19zdGFja19kZXB0aCgpOworCisJcHMtPkV4ZWNQcm9jTm9kZSA9 IHBzLT5FeGVjUHJvY05vZGVPcmlnaW5hbDsKKwlwcy0+RXhlY1Byb2NOb2RlT3JpZ2luYWwgPSBO VUxMOworCisJaWYgKHBzLT5sZWZ0dHJlZSAhPSBOVUxMKQorCQlVbndyYXBFeGVjUHJvY05vZGVX aXRoRXhwbGFpbihwcy0+bGVmdHRyZWUpOworCWlmIChwcy0+cmlnaHR0cmVlICE9IE5VTEwpCisJ CVVud3JhcEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluKHBzLT5yaWdodHRyZWUpOworCisJLyogc3Bl Y2lhbCBjaGlsZCBwbGFucyAqLworCXN3aXRjaCAobm9kZVRhZyhwcy0+cGxhbikpCisJeworCQlj YXNlIFRfQXBwZW5kOgorCQkJZXJlcG9ydChERUJVRzEsIGVycm1zZygidW53cmFwcGluZyBBcHBl bmQiKSk7CisJCQlVbndyYXBNdWx0aUV4ZWNQcm9jTm9kZXNXaXRoRXhwbGFpbigoKEFwcGVuZFN0 YXRlICopIHBzKS0+YXBwZW5kcGxhbnMsCisJCQkJCQkJCQkJCQkoKEFwcGVuZFN0YXRlICopIHBz KS0+YXNfbnBsYW5zKTsKKwkJCWJyZWFrOworCQljYXNlIFRfTWVyZ2VBcHBlbmQ6CisJCQllcmVw b3J0KERFQlVHMSwgZXJybXNnKCJ1bndyYXBwaW5nIE1lcmdlQXBwZW5kIikpOworCQkJVW53cmFw TXVsdGlFeGVjUHJvY05vZGVzV2l0aEV4cGxhaW4oKChNZXJnZUFwcGVuZFN0YXRlICopIHBzKS0+ bWVyZ2VwbGFucywKKwkJCQkJCQkJCQkJCSgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwcyktPm1zX25w bGFucyk7CisJCQlicmVhazsKKwkJY2FzZSBUX0JpdG1hcEFuZDoKKwkJCWVyZXBvcnQoREVCVUcx LCBlcnJtc2coInVud3JhcHBpbmcgQml0bWFwQW5kU3RhdGUiKSk7CisJCQlVbndyYXBNdWx0aUV4 ZWNQcm9jTm9kZXNXaXRoRXhwbGFpbigoKEJpdG1hcEFuZFN0YXRlICopIHBzKS0+Yml0bWFwcGxh bnMsCisJCQkJCQkJCQkJCQkoKEJpdG1hcEFuZFN0YXRlICopIHBzKS0+bnBsYW5zKTsKKwkJCWJy ZWFrOworCQljYXNlIFRfQml0bWFwT3I6CisJCQllcmVwb3J0KERFQlVHMSwgZXJybXNnKCJ1bndy YXBwaW5nIEJpdG1hcE9ydGF0ZSIpKTsKKwkJCVVud3JhcE11bHRpRXhlY1Byb2NOb2Rlc1dpdGhF eHBsYWluKCgoQml0bWFwT3JTdGF0ZSAqKSBwcyktPmJpdG1hcHBsYW5zLAorCQkJCQkJCQkJCQkJ KChCaXRtYXBPclN0YXRlICopIHBzKS0+bnBsYW5zKTsKKwkJCWJyZWFrOworCQljYXNlIFRfU3Vi cXVlcnlTY2FuOgorCQkJZXJlcG9ydChERUJVRzEsIGVycm1zZygidW53cmFwcGluZyBTdWJxdWVy eSIpKTsKKwkJCVVud3JhcEV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluKCgoU3VicXVlcnlTY2FuU3Rh dGUgKikgcHMpLT5zdWJwbGFuKTsKKwkJCWJyZWFrOworCQljYXNlIFRfQ3VzdG9tU2NhbjoKKwkJ CWVyZXBvcnQoREVCVUcxLCBlcnJtc2coInVud3JhcHBpbmcgQ3VzdG9tU2NhblN0YXRlIikpOwor CQkJVW53cmFwQ3VzdG9tUGxhbkNoaWxkRXhlY1Byb2NOb2Rlc1dpdGhFeHBsYWluKChDdXN0b21T Y2FuU3RhdGUgKikgcHMpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwl9Cit9 CisKKy8qCisgKiBFeGVjUHJvY05vZGVXaXRoRXhwbGFpbiAtCisgKgkgIFdyYXAgRXhlY1Byb2NO b2RlIHdpdGggY29kZXMgd2hpY2ggbG9ncyBjdXJyZW50bHkgcnVubmluZyBwbGFuCisgKi8KK3N0 YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVXaXRoRXhwbGFpbihQbGFuU3RhdGUg KnBzKQoreworCUV4cGxhaW5TdGF0ZSAqZXM7CisJTWVtb3J5Q29udGV4dCBjeHQ7CisJTWVtb3J5 Q29udGV4dCBvbGRfY3h0OworCisJY2hlY2tfc3RhY2tfZGVwdGgoKTsKKworCWN4dCA9IEFsbG9j U2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJImxvZ19xdWVy eV9wbGFuIHRlbXBvcmFyeSBjb250ZXh0IiwKKwkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpF Uyk7CisKKwlvbGRfY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN4dCk7CisKKwllcyA9IE5l d0V4cGxhaW5TdGF0ZSgpOworCisJZXMtPmZvcm1hdCA9IEVYUExBSU5fRk9STUFUX1RFWFQ7CisJ ZXMtPnNldHRpbmdzID0gdHJ1ZTsKKwllcy0+dmVyYm9zZSA9IHRydWU7CisJZXMtPnNpZ25hbGVk ID0gdHJ1ZTsKKworCUV4cGxhaW5Bc3NlbWJsZUxvZ091dHB1dChlcywgQWN0aXZlUXVlcnlEZXNj LCBFWFBMQUlOX0ZPUk1BVF9URVhULCAwLCAtMSk7CisKKwllcmVwb3J0KExPR19TRVJWRVJfT05M WSwKKwkJCWVycm1zZygicXVlcnkgcGxhbiBydW5uaW5nIG9uIGJhY2tlbmQgd2l0aCBQSUQgJWQg aXM6XG4lcyIsCisJCQkJICAgTXlQcm9jUGlkLCBlcy0+c3RyLT5kYXRhKSwKKwkJCWVycmhpZGVz dG10KHRydWUpLAorCQkJZXJyaGlkZWNvbnRleHQodHJ1ZSkpOworCisJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZF9jeHQpOworCU1lbW9yeUNvbnRleHREZWxldGUoY3h0KTsKKworCVVud3JhcEV4 ZWNQcm9jTm9kZVdpdGhFeHBsYWluKEFjdGl2ZVF1ZXJ5RGVzYy0+cGxhbnN0YXRlKTsKKworCS8q CisJICogU2luY2UgdW53cmFwcGluZyBoYXMgYWxyZWFkeSBkb25lLCBjYWxsIEV4ZWNQcm9jTm9k ZSgpIG5vdAorCSAqIEV4ZWNQcm9jTm9kZU9yaWdpbmFsKCkuCisJICovCisJcmV0dXJuIHBzLT5F eGVjUHJvY05vZGUocHMpOworfQorCisvKgorICogUHJvY2Vzc0xvZ1F1ZXJ5UGxhbkludGVycnVw dAorICoJICBBZGQgd3JhcHBlciB3aGljaCBsb2dzIGV4cGxhaW4gb2YgdGhlIHBsYW4gdG8gRXhl Y1Byb2NOb2RlcworICoKKyAqIFNpbmNlIHJ1bm5pbmcgRVhQTEFJTiBjb2RlcyBhdCBhbnkgYXJi aXRyYXJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaXMKKyAqIHVuc2FmZSwgdGhpcyBmdW5jdGlv biBqdXN0IHdyYXBzIGV2ZXJ5IEV4ZWNQcm9jTm9kZS4KKyAqIEluIHRoaXMgd2F5LCBFWFBMQUlO IGNvZGUgaXMgb25seSBleGVjdXRlZCBhdCB0aGUgdGltaW5nIG9mIEV4ZWNQcm9jTm9kZSwKKyAq IHdoaWNoIHNlZW1zIHNhZmUuCisgKi8KK3ZvaWQKK1Byb2Nlc3NMb2dRdWVyeVBsYW5JbnRlcnJ1 cHQodm9pZCkKK3sKKwlMb2dRdWVyeVBsYW5QZW5kaW5nID0gZmFsc2U7CisKKwkvKiBDYW5ub3Qg cmUtZW50ZXIgKi8KKwlpZiAoUHJvY2Vzc0xvZ1F1ZXJ5UGxhbkludGVycnVwdEFjdGl2ZSkKKwkJ cmV0dXJuOworCisJUHJvY2Vzc0xvZ1F1ZXJ5UGxhbkludGVycnVwdEFjdGl2ZSA9IHRydWU7CisK KwlpZiAoQWN0aXZlUXVlcnlEZXNjID09IE5VTEwpCisJeworCQllcmVwb3J0KExPR19TRVJWRVJf T05MWSwKKwkJCQllcnJtc2coImJhY2tlbmQgd2l0aCBQSUQgJWQgaXMgbm90IHJ1bm5pbmcgYSBx dWVyeSBvciBhIHN1YnRyYW5zYWN0aW9uIGlzIGFib3J0ZWQiLAorCQkJCQkgICBNeVByb2NQaWQp LAorCQkJCWVycmhpZGVzdG10KHRydWUpLAorCQkJCWVycmhpZGVjb250ZXh0KHRydWUpKTsKKwor CQlQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0QWN0aXZlID0gZmFsc2U7CisJCXJldHVybjsK Kwl9CisKKwlXcmFwRXhlY1Byb2NOb2RlV2l0aEV4cGxhaW4oQWN0aXZlUXVlcnlEZXNjLT5wbGFu c3RhdGUpOworCVByb2Nlc3NMb2dRdWVyeVBsYW5JbnRlcnJ1cHRBY3RpdmUgPSBmYWxzZTsKK30K KworLyoKKyAqIHBnX2xvZ19xdWVyeV9wbGFuCisgKiAgICBTaWduYWwgYSBiYWNrZW5kIHByb2Nl c3MgdG8gbG9nIHRoZSBxdWVyeSBwbGFuIG9mIHRoZSBydW5uaW5nIHF1ZXJ5LgorICoKKyAqIEJ5 IGRlZmF1bHQsIG9ubHkgc3VwZXJ1c2VycyBhcmUgYWxsb3dlZCB0byBzaWduYWwgdG8gbG9nIHRo ZSBwbGFuIGJlY2F1c2UKKyAqIGFsbG93aW5nIGFueSB1c2VycyB0byBpc3N1ZSB0aGlzIHJlcXVl c3QgYXQgYW4gdW5ib3VuZGVkIHJhdGUgd291bGQKKyAqIGNhdXNlIGxvdHMgb2YgbG9nIG1lc3Nh Z2VzIGFuZCB3aGljaCBjYW4gbGVhZCB0byBkZW5pYWwgb2Ygc2VydmljZS4KKyAqIEFkZGl0aW9u YWwgcm9sZXMgY2FuIGJlIHBlcm1pdHRlZCB3aXRoIEdSQU5ULgorICovCitEYXR1bQorcGdfbG9n X3F1ZXJ5X3BsYW4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQJCQlwaWQgPSBQR19HRVRBUkdf SU5UMzIoMCk7CisJUEdQUk9DCSAgICpwcm9jOworCVBnQmFja2VuZFN0YXR1cyAqYmVfc3RhdHVz OworCisJcHJvYyA9IEJhY2tlbmRQaWRHZXRQcm9jKHBpZCk7CisKKwlpZiAocHJvYyA9PSBOVUxM KQorCXsKKwkJLyoKKwkJICogVGhpcyBpcyBqdXN0IGEgd2FybmluZyBzbyBhIGxvb3AtdGhyb3Vn aC1yZXN1bHRzZXQgd2lsbCBub3QgYWJvcnQKKwkJICogaWYgb25lIGJhY2tlbmQgdGVybWluYXRl ZCBvbiBpdHMgb3duIGR1cmluZyB0aGUgcnVuLgorCQkgKi8KKwkJZXJlcG9ydChXQVJOSU5HLAor CQkJCShlcnJtc2coIlBJRCAlZCBpcyBub3QgYSBQb3N0Z3JlU1FMIGJhY2tlbmQgcHJvY2VzcyIs IHBpZCkpKTsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCWJlX3N0YXR1cyA9IHBn c3RhdF9nZXRfYmVlbnRyeV9ieV9wcm9jX251bWJlcihwcm9jLT52eGlkLnByb2NOdW1iZXIpOwor CWlmIChiZV9zdGF0dXMtPnN0X2JhY2tlbmRUeXBlICE9IEJfQkFDS0VORCkKKwl7CisJCWVyZXBv cnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJQSUQgJWQgaXMgbm90IGEgUG9zdGdyZVNRTCBjbGll bnQgYmFja2VuZCBwcm9jZXNzIiwgcGlkKSkpOworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJ fQorCisJaWYgKFNlbmRQcm9jU2lnbmFsKHBpZCwgUFJPQ1NJR19MT0dfUVVFUllfUExBTiwgcHJv Yy0+dnhpZC5wcm9jTnVtYmVyKSA8IDApCisJeworCQkvKiBBZ2FpbiwganVzdCBhIHdhcm5pbmcg dG8gYWxsb3cgbG9vcHMgKi8KKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJtc2coImNvdWxk IG5vdCBzZW5kIHNpZ25hbCB0byBwcm9jZXNzICVkOiAlbSIsIHBpZCkpKTsKKwkJUEdfUkVUVVJO X0JPT0woZmFsc2UpOworCX0KKworCVBHX1JFVFVSTl9CT09MKHRydWUpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMKaW5kZXggZTliZDk4Yzc3My4uNzU1Mzg3ZDcwYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNp bmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9u LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL21h dHZpZXcuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY3V0b3IuaCIKQEAgLTM2MiwxMCArMzYzLDIxIEBAIHZvaWQKIEV4ZWN1dG9yUnVuKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQkJU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVpbnQ2NCBj b3VudCkKIHsKKwkvKgorCSAqIFVwZGF0ZSBBY3RpdmVRdWVyeURlc2MgaGVyZSB0byBlbmFibGUg cmV0cmlldmFsIG9mIHRoZSBjdXJyZW50bHkKKwkgKiBydW5uaW5nIHF1ZXJ5RGVzYyBmb3IgbmVz dGVkIHF1ZXJpZXMuCisJICovCisJUXVlcnlEZXNjICAqc2F2ZV9BY3RpdmVRdWVyeURlc2M7CisK KwlzYXZlX0FjdGl2ZVF1ZXJ5RGVzYyA9IEFjdGl2ZVF1ZXJ5RGVzYzsKKwlBY3RpdmVRdWVyeURl c2MgPSBxdWVyeURlc2M7CisKIAlpZiAoRXhlY3V0b3JSdW5faG9vaykKIAkJKCpFeGVjdXRvclJ1 bl9ob29rKSAocXVlcnlEZXNjLCBkaXJlY3Rpb24sIGNvdW50KTsKIAllbHNlCiAJCXN0YW5kYXJk X0V4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgZGlyZWN0aW9uLCBjb3VudCk7CisKKwlBY3RpdmVRdWVy eURlc2MgPSBzYXZlX0FjdGl2ZVF1ZXJ5RGVzYzsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY3NpZ25hbC5jCmluZGV4IDdkMjAxOTY1NTAuLmNlZDgwNTg4YWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKQEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFj Y2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAi Y29tbWFuZHMvZXhwbGFpbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBn c3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKQEAgLTY5MCw2ICs2OTEsOSBA QCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9j U2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29u dGV4dEludGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0xPR19RVUVS WV9QTEFOKSkKKwkJSGFuZGxlTG9nUXVlcnlQbGFuSW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQ cm9jU2lnbmFsKFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCiAJCUhhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAwNTU0YTRh ZTNjLi5jZjk3ZjIwMzBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK KysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNp bmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXhw bGFpbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKICNpbmNsdWRlICJjb21tb24v cGdfcHJuZy5oIgogI2luY2x1ZGUgImppdC9qaXQuaCIKQEAgLTM1MDcsNiArMzUwOCw5IEBAIFBy b2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAJaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQogCQlQ cm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKExvZ1F1ZXJ5UGxhblBl bmRpbmcpCisJCVByb2Nlc3NMb2dRdWVyeVBsYW5JbnRlcnJ1cHQoKTsKKwogCWlmIChQYXJhbGxl bEFwcGx5TWVzc2FnZVBlbmRpbmcpCiAJCVByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggYjg0NGY5ZmRhZS4uMWU0ZDkwZjU4YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTM5LDYgKzM5LDggQEAgdm9sYXRpbGUgc2ln X2F0b21pY190IElkbGVTZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNp Z19hdG9taWNfdCBQcm9jU2lnbmFsQmFycmllclBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNp Z19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2ln X2F0b21pY190IElkbGVTdGF0c1VwZGF0ZVRpbWVvdXRQZW5kaW5nID0gZmFsc2U7Cit2b2xhdGls ZSBzaWdfYXRvbWljX3QgTG9nUXVlcnlQbGFuUGVuZGluZyA9IGZhbHNlOworCiB2b2xhdGlsZSB1 aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBRdWVyeUNh bmNlbEhvbGRvZmZDb3VudCA9IDA7CiB2b2xhdGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25Db3VudCA9 IDA7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA4OTA4MjJlYWY3Li5mNDczNTlmZTNjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTg1MDksNiArODUwOSwxMiBAQAogICBwcm9yZXR0 eXBlID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ2ludDQnLAogICBwcm9zcmMgPT4gJ3BnX2xv Z19iYWNrZW5kX21lbW9yeV9jb250ZXh0cycgfSwKIAorIyBsb2dnaW5nIHBsYW4gb2YgdGhlIHJ1 bm5pbmcgcXVlcnkgb24gdGhlIHNwZWNpZmllZCBiYWNrZW5kCit7IG9pZCA9PiAnODAwMCcsIGRl c2NyID0+ICdsb2cgcGxhbiBvZiB0aGUgcnVubmluZyBxdWVyeSBvbiB0aGUgc3BlY2lmaWVkIGJh Y2tlbmQnLAorICBwcm9uYW1lID0+ICdwZ19sb2dfcXVlcnlfcGxhbicsCisgIHByb3ZvbGF0aWxl ID0+ICd2JywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnQ0Jywg cHJvc3JjID0+ICdwZ19sb2dfcXVlcnlfcGxhbicgfSwKKwogIyBub24tcGVyc2lzdGVudCBzZXJp ZXMgZ2VuZXJhdG9yCiB7IG9pZCA9PiAnMTA2NicsIGRlc2NyID0+ICdub24tcGVyc2lzdGVudCBz ZXJpZXMgZ2VuZXJhdG9yJywKICAgcHJvbmFtZSA9PiAnZ2VuZXJhdGVfc2VyaWVzJywgcHJvcm93 cyA9PiAnMTAwMCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggMzg3ODM5ZWI1ZC4uZGJhNjg2 YWM5NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtMTgsNiArMTgsOSBAQAogCiBzdHJ1Y3Qg RXhwbGFpblN0YXRlOwkJCS8qIGRlZmluZWQgaW4gZXhwbGFpbl9zdGF0ZS5oICovCiAKK2V4dGVy biBQR0RMTElNUE9SVCBRdWVyeURlc2MgKkFjdGl2ZVF1ZXJ5RGVzYzsKK2V4dGVybiBQR0RMTElN UE9SVCBib29sIFByb2Nlc3NMb2dRdWVyeVBsYW5JbnRlcnJ1cHRBY3RpdmU7CisKIC8qIEhvb2sg Zm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4gRXhwbGFpbk9uZVF1ZXJ5KCkgKi8KIHR5cGVk ZWYgdm9pZCAoKkV4cGxhaW5PbmVRdWVyeV9ob29rX3R5cGUpIChRdWVyeSAqcXVlcnksCiAJCQkJ CQkJCQkJICAgaW50IGN1cnNvck9wdGlvbnMsCkBAIC03Miw2ICs3NSwxMiBAQCBleHRlcm4gdm9p ZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIENhY2hlZFBsYW4gKmNw bGFuLAogCQkJCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLAogCQkJCQkJICAgY29u c3QgTWVtb3J5Q29udGV4dENvdW50ZXJzICptZW1fY291bnRlcnMpOwogCitleHRlcm4gdm9pZCBF eHBsYWluQXNzZW1ibGVMb2dPdXRwdXQoc3RydWN0IEV4cGxhaW5TdGF0ZSAqZXMsIFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLAorCQkJCQkJCQkJIGludCBsb2dGb3JtYXQsIGJvb2wgbG9nVHJpZ2dlcnMs CisJCQkJCQkJCQkgaW50IGxvZ1BhcmFtZXRlck1heExlbmd0aCk7CisKK2V4dGVybiB2b2lkIEV4 cGxhaW5QcmludFBsYW4oc3RydWN0IEV4cGxhaW5TdGF0ZSAqZXMsIFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjKTsKK2V4dGVybiB2b2lkIEV4cGxhaW5QcmludFRyaWdnZXJzKHN0cnVjdCBFeHBsYWluU3Rh dGUgKmVzLCBRdWVyeURlc2MgKnF1ZXJ5RGVzYyk7CiBleHRlcm4gdm9pZCBFeHBsYWluUHJpbnRQ bGFuKHN0cnVjdCBFeHBsYWluU3RhdGUgKmVzLCBRdWVyeURlc2MgKnF1ZXJ5RGVzYyk7CiBleHRl cm4gdm9pZCBFeHBsYWluUHJpbnRUcmlnZ2VycyhzdHJ1Y3QgRXhwbGFpblN0YXRlICplcywKIAkJ CQkJCQkJIFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKQEAgLTgzLDQgKzkyLDggQEAgZXh0ZXJuIHZv aWQgRXhwbGFpblF1ZXJ5VGV4dChzdHJ1Y3QgRXhwbGFpblN0YXRlICplcywgUXVlcnlEZXNjICpx dWVyeURlc2MpOwogZXh0ZXJuIHZvaWQgRXhwbGFpblF1ZXJ5UGFyYW1ldGVycyhzdHJ1Y3QgRXhw bGFpblN0YXRlICplcywKIAkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIGludCBtYXhs ZW4pOwogCitleHRlcm4gdm9pZCBIYW5kbGVMb2dRdWVyeVBsYW5JbnRlcnJ1cHQodm9pZCk7Citl eHRlcm4gdm9pZCBQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZv aWQgUmVzZXRMb2dRdWVyeVBsYW5TdGF0ZSh2b2lkKTsKKwogI2VuZGlmCQkJCQkJCS8qIEVYUExB SU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5oCmluZGV4IDMyNzI4ZjVkMWEu LmZjZWY5NTYzOTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3Rh dGUuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3N0YXRlLmgKQEAgLTcxLDYg KzcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwbGFpblN0YXRlCiAJCQkJCQkJCSAqIGVudHJ5ICov CiAJLyogc3RhdGUgcmVsYXRlZCB0byB0aGUgY3VycmVudCBwbGFuIG5vZGUgKi8KIAlFeHBsYWlu V29ya2Vyc1N0YXRlICp3b3JrZXJzX3N0YXRlOyAvKiBuZWVkZWQgaWYgcGFyYWxsZWwgcGxhbiAq LworCWJvb2wJCXNpZ25hbGVkOwkJLyogd2hldGhlciBleHBsYWluIGlzIGNhbGxlZCBieSBzaWdu YWwgKi8KIAkvKiBleHRlbnNpb25zICovCiAJdm9pZAkgICoqZXh0ZW5zaW9uX3N0YXRlOwogCWlu dAkJCWV4dGVuc2lvbl9zdGF0ZV9hbGxvY2F0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDYwM2QwNDI0MzUuLjNm NDYzNTRjZGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9p bmNsdWRlL21pc2NhZG1pbi5oCkBAIC05Niw2ICs5Niw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4dGVybiBQ R0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5n OwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250 ZXh0UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRs ZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmc7CitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg c2lnX2F0b21pY190IExvZ1F1ZXJ5UGxhblBlbmRpbmc7CiAKIGV4dGVybiBQR0RMTElNUE9SVCB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKIGV4dGVy biBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGQ0ZDRlNjU1MTguLmI5NWU0Yjk3ZDAgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCkBAIC0xMTYwLDYgKzExNjAsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFuU3Rh dGUKIAlFeGVjUHJvY05vZGVNdGQgRXhlY1Byb2NOb2RlUmVhbDsJLyogYWN0dWFsIGZ1bmN0aW9u LCBpZiBhYm92ZSBpcyBhCiAJCQkJCQkJCQkJICogd3JhcHBlciAqLwogCisJRXhlY1Byb2NOb2Rl TXRkIEV4ZWNQcm9jTm9kZU9yaWdpbmFsOwkvKiB0ZW1wb3JhcnkgcGxhY2Ugd2hlbiBhZGRpbmcK KwkJCQkJCQkJCQkJICogcHJvY2VzcyBmb3IgRXhlY1Byb2NOb2RlICovCisKIAlJbnN0cnVtZW50 YXRpb24gKmluc3RydW1lbnQ7CS8qIE9wdGlvbmFsIHJ1bnRpbWUgc3RhdHMgZm9yIHRoaXMgbm9k ZSAqLwogCVdvcmtlckluc3RydW1lbnRhdGlvbiAqd29ya2VyX2luc3RydW1lbnQ7CS8qIHBlci13 b3JrZXIgaW5zdHJ1bWVudGF0aW9uICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXgg MDIyZmQ4ZWQ5My4uYzY2NmE0ZDcwOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1 LDYgKzM1LDggQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJ LyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19C QVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19N RU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMg Ki8KKwlQUk9DU0lHX0xPR19RVUVSWV9QTEFOLAkJLyogYXNrIGJhY2tlbmQgdG8gbG9nIHBsYW4g b2YgdGhlIGN1cnJlbnQKKwkJCQkJCQkJICogcXVlcnkgKi8KIAlQUk9DU0lHX1BBUkFMTEVMX0FQ UExZX01FU1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCiAK IAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS90Y29wL3BxdWVyeS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9wcXVlcnkuaAppbmRleCBmYTNjYzVm MmRmLi43M2UxNmNmN2M0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCisr KyBiL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmgKQEAgLTIxLDcgKzIxLDcgQEAgc3RydWN0IFBs YW5uZWRTdG10OwkJCQkvKiBhdm9pZCBpbmNsdWRpbmcgcGxhbm5vZGVzLmggaGVyZSAqLwogCiAK IGV4dGVybiBQR0RMTElNUE9SVCBQb3J0YWwgQWN0aXZlUG9ydGFsOwotCitleHRlcm4gUEdETExJ TVBPUlQgUXVlcnlEZXNjICpBY3RpdmVRdWVyeURlc2M7CiAKIGV4dGVybiBQb3J0YWxTdHJhdGVn eSBDaG9vc2VQb3J0YWxTdHJhdGVneShMaXN0ICpzdG10cyk7CiAKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQKaW5kZXggZDNmNWQxNmE2Ny4uN2RjYjk5NTFl NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQKQEAg LTMxNiwxNCArMzE2LDE1IEBAIFNFTEVDVCB0ZXN0X2Nhbm9uaWNhbGl6ZV9wYXRoKCcuL2FiYy8u L2RlZi8uLi8uL2doaS8uLi8uLi8uLi9qa2wvbW5vJyk7CiAgLi4vamtsL21ubwogKDEgcm93KQog CistLSBUZXN0IGxvZ2dpbmcgZnVuY3Rpb25zCiAtLQotLS0gcGdfbG9nX2JhY2tlbmRfbWVtb3J5 X2NvbnRleHRzKCkKLS0tCi0tLSBNZW1vcnkgY29udGV4dHMgYXJlIGxvZ2dlZCBhbmQgdGhleSBh cmUgbm90IHJldHVybmVkIHRvIHRoZSBmdW5jdGlvbi4KKy0tIFRoZSBvdXRwdXRzIG9mIHRoZXNl IGZ1bmN0aW9ucyBhcmUgbG9nZ2VkIGFuZCB0aGV5IGFyZSBub3QgcmV0dXJuZWQgdG8KKy0tIHRo ZSBmdW5jdGlvbi4KIC0tIEZ1cnRoZXJtb3JlLCB0aGVpciBjb250ZW50cyBjYW4gdmFyeSBkZXBl bmRpbmcgb24gdGhlIHRpbWluZy4gSG93ZXZlciwKIC0tIHdlIGNhbiBhdCBsZWFzdCB2ZXJpZnkg dGhhdCB0aGUgY29kZSBkb2Vzbid0IGZhaWwsIGFuZCB0aGF0IHRoZQogLS0gcGVybWlzc2lvbnMg YXJlIHNldCBwcm9wZXJseS4KIC0tCistLSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMo KQogU0VMRUNUIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgp KTsKICBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMgCiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpAQCAtMzM3LDggKzMzOCw4IEBAIFNFTEVDVCBwZ19sb2dfYmFja2VuZF9t ZW1vcnlfY29udGV4dHMocGlkKSBGUk9NIHBnX3N0YXRfYWN0aXZpdHkKICB0CiAoMSByb3cpCiAK LUNSRUFURSBST0xFIHJlZ3Jlc3NfbG9nX21lbW9yeTsKLVNFTEVDVCBoYXNfZnVuY3Rpb25fcHJp dmlsZWdlKCdyZWdyZXNzX2xvZ19tZW1vcnknLAorQ1JFQVRFIFJPTEUgcmVncmVzc19sb2dfZnVu Y3Rpb247CitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfZnVuY3Rp b24nLAogICAncGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpJywgJ0VYRUNV VEUnKTsgLS0gbm8KICBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlIAogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCkBAIC0zNDYsMTUgKzM0NywxNSBAQCBTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVn ZSgncmVncmVzc19sb2dfbWVtb3J5JywKICgxIHJvdykKIAogR1JBTlQgRVhFQ1VURSBPTiBGVU5D VElPTiBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdlcikKLSAgVE8gcmVncmVz c19sb2dfbWVtb3J5OwotU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9n X21lbW9yeScsCisgIFRPIHJlZ3Jlc3NfbG9nX2Z1bmN0aW9uOworU0VMRUNUIGhhc19mdW5jdGlv bl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX2Z1bmN0aW9uJywKICAgJ3BnX2xvZ19iYWNrZW5kX21l bW9yeV9jb250ZXh0cyhpbnRlZ2VyKScsICdFWEVDVVRFJyk7IC0tIHllcwogIGhhc19mdW5jdGlv bl9wcml2aWxlZ2UgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICB0CiAoMSByb3cpCiAKLVNF VCBST0xFIHJlZ3Jlc3NfbG9nX21lbW9yeTsKK1NFVCBST0xFIHJlZ3Jlc3NfbG9nX2Z1bmN0aW9u OwogU0VMRUNUIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgp KTsKICBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMgCiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpAQCAtMzYzLDggKzM2NCw0MSBAQCBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogCiBSRVNFVCBST0xFOwogUkVWT0tF IEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVn ZXIpCi0gIEZST00gcmVncmVzc19sb2dfbWVtb3J5OwotRFJPUCBST0xFIHJlZ3Jlc3NfbG9nX21l bW9yeTsKKyAgRlJPTSByZWdyZXNzX2xvZ19mdW5jdGlvbjsKKy0tIHBnX2xvZ19xdWVyeV9wbGFu KCkKK1NFTEVDVCBwZ19sb2dfcXVlcnlfcGxhbihwZ19iYWNrZW5kX3BpZCgpKTsKKyBwZ19sb2df cXVlcnlfcGxhbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBo YXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZ19mdW5jdGlvbicsCisgICdwZ19sb2df cXVlcnlfcGxhbihpbnRlZ2VyKScsICdFWEVDVVRFJyk7IC0tIG5vCisgaGFzX2Z1bmN0aW9uX3By aXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworR1JBTlQg RVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKQorICBUTyByZWdy ZXNzX2xvZ19mdW5jdGlvbjsKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNz X2xvZ19mdW5jdGlvbicsCisgICdwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKScsICdFWEVDVVRF Jyk7IC0tIHllcworIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyB0CisoMSByb3cpCisKK1NFVCBST0xFIHJlZ3Jlc3NfbG9nX2Z1bmN0aW9uOworU0VM RUNUIHBnX2xvZ19xdWVyeV9wbGFuKHBnX2JhY2tlbmRfcGlkKCkpOworIHBnX2xvZ19xdWVyeV9w bGFuIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworUkVTRVQgUk9MRTsKK1JF Vk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpCisgIEZS T00gcmVncmVzc19sb2dfZnVuY3Rpb247CitEUk9QIFJPTEUgcmVncmVzc19sb2dfZnVuY3Rpb247 CiAtLQogLS0gVGVzdCBzb21lIGJ1aWx0LWluIFNSRnMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9t aXNjX2Z1bmN0aW9ucy5zcWwKaW5kZXggYWFlYmIyOTgzMy4uOTIzMzAzNTVmNiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbApAQCAtMTA5LDM5ICsxMDksNjAgQEAgU0VM RUNUIHRlc3RfY2Fub25pY2FsaXplX3BhdGgoJy4vYWJjLy4vZGVmLy4nKTsKIFNFTEVDVCB0ZXN0 X2Nhbm9uaWNhbGl6ZV9wYXRoKCcuL2FiYy8uLy4vZGVmLy4nKTsKIFNFTEVDVCB0ZXN0X2Nhbm9u aWNhbGl6ZV9wYXRoKCcuL2FiYy8uL2RlZi8uLi8uL2doaS8uLi8uLi8uLi9qa2wvbW5vJyk7CiAK Ky0tIFRlc3QgbG9nZ2luZyBmdW5jdGlvbnMKIC0tCi0tLSBwZ19sb2dfYmFja2VuZF9tZW1vcnlf Y29udGV4dHMoKQotLS0KLS0tIE1lbW9yeSBjb250ZXh0cyBhcmUgbG9nZ2VkIGFuZCB0aGV5IGFy ZSBub3QgcmV0dXJuZWQgdG8gdGhlIGZ1bmN0aW9uLgorLS0gVGhlIG91dHB1dHMgb2YgdGhlc2Ug ZnVuY3Rpb25zIGFyZSBsb2dnZWQgYW5kIHRoZXkgYXJlIG5vdCByZXR1cm5lZCB0bworLS0gdGhl IGZ1bmN0aW9uLgogLS0gRnVydGhlcm1vcmUsIHRoZWlyIGNvbnRlbnRzIGNhbiB2YXJ5IGRlcGVu ZGluZyBvbiB0aGUgdGltaW5nLiBIb3dldmVyLAogLS0gd2UgY2FuIGF0IGxlYXN0IHZlcmlmeSB0 aGF0IHRoZSBjb2RlIGRvZXNuJ3QgZmFpbCwgYW5kIHRoYXQgdGhlCiAtLSBwZXJtaXNzaW9ucyBh cmUgc2V0IHByb3Blcmx5LgogLS0KIAorLS0gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRz KCkKKwogU0VMRUNUIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3Bp ZCgpKTsKIAogU0VMRUNUIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwaWQpIEZST00g cGdfc3RhdF9hY3Rpdml0eQogICBXSEVSRSBiYWNrZW5kX3R5cGUgPSAnY2hlY2twb2ludGVyJzsK IAotQ1JFQVRFIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5OworQ1JFQVRFIFJPTEUgcmVncmVzc19s b2dfZnVuY3Rpb247CiAKLVNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xv Z19tZW1vcnknLAorU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX2Z1 bmN0aW9uJywKICAgJ3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKScsICdF WEVDVVRFJyk7IC0tIG5vCiAKIEdSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpCi0gIFRPIHJlZ3Jlc3NfbG9nX21lbW9yeTsKKyAg VE8gcmVncmVzc19sb2dfZnVuY3Rpb247CiAKLVNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdl KCdyZWdyZXNzX2xvZ19tZW1vcnknLAorU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3Jl Z3Jlc3NfbG9nX2Z1bmN0aW9uJywKICAgJ3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhp bnRlZ2VyKScsICdFWEVDVVRFJyk7IC0tIHllcwogCi1TRVQgUk9MRSByZWdyZXNzX2xvZ19tZW1v cnk7CitTRVQgUk9MRSByZWdyZXNzX2xvZ19mdW5jdGlvbjsKIFNFTEVDVCBwZ19sb2dfYmFja2Vu ZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2VuZF9waWQoKSk7CiBSRVNFVCBST0xFOwogCiBSRVZP S0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50 ZWdlcikKLSAgRlJPTSByZWdyZXNzX2xvZ19tZW1vcnk7CisgIEZST00gcmVncmVzc19sb2dfZnVu Y3Rpb247CisKKy0tIHBnX2xvZ19xdWVyeV9wbGFuKCkKK1NFTEVDVCBwZ19sb2dfcXVlcnlfcGxh bihwZ19iYWNrZW5kX3BpZCgpKTsKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3Jl Z3Jlc3NfbG9nX2Z1bmN0aW9uJywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpJywgJ0VY RUNVVEUnKTsgLS0gbm8KKworR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfcXVlcnlf cGxhbihpbnRlZ2VyKQorICBUTyByZWdyZXNzX2xvZ19mdW5jdGlvbjsKKworU0VMRUNUIGhhc19m dW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX2Z1bmN0aW9uJywKKyAgJ3BnX2xvZ19xdWVy eV9wbGFuKGludGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0geWVzCisKK1NFVCBST0xFIHJlZ3Jlc3Nf bG9nX2Z1bmN0aW9uOworU0VMRUNUIHBnX2xvZ19xdWVyeV9wbGFuKHBnX2JhY2tlbmRfcGlkKCkp OworUkVTRVQgUk9MRTsKKworUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5 X3BsYW4oaW50ZWdlcikKKyAgRlJPTSByZWdyZXNzX2xvZ19mdW5jdGlvbjsKIAotRFJPUCBST0xF IHJlZ3Jlc3NfbG9nX21lbW9yeTsKK0RST1AgUk9MRSByZWdyZXNzX2xvZ19mdW5jdGlvbjsKIAog LS0KIC0tIFRlc3Qgc29tZSBidWlsdC1pbiBTUkZzCgpiYXNlLWNvbW1pdDogMWQ2MTdhMjAyODRm ODg3Y2I5Y2RmZTU2OTNlZWMxNTVlODAxNjUxNwotLSAKMi40OC4xCgo= --=_4037db1d77813cd3eab23949ac94fa44--