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 1r15OX-009F3b-Hq for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Nov 2023 13:48:30 +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 1r15NX-00EE5B-FW for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Nov 2023 13:47:27 +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 1r15NV-00EE52-Ey for pgsql-hackers@lists.postgresql.org; Thu, 09 Nov 2023 13:47:27 +0000 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r15NP-005XWP-Fq for pgsql-hackers@lists.postgresql.org; Thu, 09 Nov 2023 13:47:24 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 225973200BC5; Thu, 9 Nov 2023 08:47:15 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Thu, 09 Nov 2023 08:47:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1699537634; x= 1699624034; bh=/6NUZBJnt7c/Vpt9XQWV/T1Mejt0k9BbjGLFjl2s/6M=; b=T /c1m622oXnVA46YiIOHQ5uPGejUEPL1v1WE2lE7sNZp0/ttXQ+AY/L0usLIf78Vy 7lCw23/LMtkLqwk/Yxetn96n4/DB7ggsuWramWeRy3Gm1Fj/uN44LwqPm7DQT1Z3 T0Md/bYdQEb6q6/zJW1ifyF9bJNEsRrOFPlre0dj/rrqaYe+69BnsoPu6WNUeV8C R8JFJcFeumuWuwOdLaaMvnxQRwb1YdAeoo6f1cbBbZZqeNFAHALqtNiIShgXf36s d+Dd44X8QE5QdWNyhP2/CVWH2GAbI1HTvP9aKiVktR7Z0F/7qtyXfJsURvspyvjO 0n2wM1HoD+wyG9vG0/55w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1699537634; x=1699624034; bh=/6NUZBJnt7c/V pt9XQWV/T1Mejt0k9BbjGLFjl2s/6M=; b=AYDPwk0L+9pmm9hHgyWy3WC25Ls0n LJZiXASJEfbXmUNvqlUGC+d+JWFBU8XSHVojemtyjcI4JaP+3EIEYffiR1ArBSTY CFhzx/4Lb8NQZ2pjJywEcxpZ6ePuIzKYJNMXSym9NZe16HxbnTwAdZJ60i6FZq+b lstcGyYzAEAQxMm3Q0ZF+NHnxVloAM7Ar9Zpdlpa+BUNFKBGQKyFZvlGFu3Gttog MDJkN+tdX6bN6jSenwG++7iKLiIxIOxckljpCNs4tdgKPxrWvDQ3HHH4nEqOjlnd 5wonux3X0g7IzcUJdixdropHcNRpxzOeswNBpMqTDUNDLeeUH0pO9k90A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedruddvuddgheehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertddvjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhesvghishgvnhhtrhgruhhtrdhorhhgqe enucggtffrrghtthgvrhhnpeektdeutdfhvdfhveeigfffteegvdejvdfhhfevfeevgfdt gfelgeehieevhffgieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrih hlfhhrohhmpehpvghtvghrsegvihhsvghnthhrrghuthdrohhrgh X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 9 Nov 2023 08:47:13 -0500 (EST) Content-Type: multipart/mixed; boundary="------------0pyo08LoOaErEsegt7BcrHWt" Message-ID: Date: Thu, 9 Nov 2023 14:47:12 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US To: Paul Jungwirth , jian he Cc: PostgreSQL Hackers References: <5157e85a-6007-27a7-853a-5601d9c3722f@illuminatedcomputing.com> <5a16a59a-d497-7d72-07aa-0afc09d5193a@illuminatedcomputing.com> <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> From: Peter Eisentraut In-Reply-To: <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------0pyo08LoOaErEsegt7BcrHWt Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 02.11.23 21:21, Paul Jungwirth wrote: > New patches attached (rebased to 0bc726d9). I went over the patch v17-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch in more detail. Attached is a fixup patch that addresses a variety of cosmetic issues. Some details: - Renamed contemporal to conwithoutoverlaps, as previously discussed. Also renamed various variables and function arguments similarly. - Rearranged text in CREATE TABLE reference page so there are no forward references. (Describe WITHOUT OVERLAPS under UNIQUE and then PRIMARY KEy says "see above", rather than describe it under PRIMARY KEY and have UNIQUE say "see below.) - Removed various bits that related to temporal foreign keys, which belong in a later patch. - Reverted some apparently unrelated changes in src/backend/catalog/index.c. - Removed the "temporal UNIQUE" constraint_type assignment in DefineIndex(). This is meant to be used in error messages and should refer to actual syntax. I think it's fine without it this change. - Field contemporal in NewConstraint struct is not used by this patch. - Rearrange the grammar so that the rule with WITHOUT OVERLAPS is just a Boolean attribute rather than column name plus keywords. This was kind of confusing earlier and led to weird error messages for invalid syntax. I kept the restriction that you need at least one non-overlaps column, but that is now enforced in parse analysis, not in the grammar. (But maybe we don't need it?) (After your earlier explanation, I'm content to just allow one WITHOUT OVERLAPS column for now.) - Some places looked at conexclop to check whether something is a WITHOUT OVERLAPS constraint, instead of looking at conwithoutoverlaps directly. - Removed some redundant "unlike" entries in the pg_dump tests. (This caused cfbot tests to fail.) - Moved the "without_overlaps" test later in the schedule. It should at least be after "constraints" so that normal constraints are tested first. Two areas that could be improved: 1) In src/backend/commands/indexcmds.c, get_index_attr_temporal_operator() has this comment: + * This seems like a hack + * but I can't find any existing lookup function + * that knows about pseudotypes. This doesn't see very confident. ;-) I don't quite understand this. Is this a gap in the currently available APIs, do we need to improve something here, or does this need more research? 2) In src/backend/parser/parse_utilcmd.c, transformIndexConstraint(), there is too much duplication between the normal and the if (constraint->without_overlaps) case, like the whole not-null constraints stuff at the end. This should be one code block with a few conditionals inside. Also, the normal case deals with things like table inheritance, which the added parts do not. Is this all complete? I'm not sure the validateWithoutOverlaps() function is needed at this point in the code. We just need to check that the column exists, which the normal code path already does, and then have the index creation code later check that an appropriate overlaps operator exists. We don't even need to restrict this to range types. Consider for example, it's possible that a type does not have a btree equality operator. We don't check that here either, but let the index code later check it. Overall, with these fixes, I think this patch is structurally okay. We just need to make sure we have all the weird corner cases covered. --------------0pyo08LoOaErEsegt7BcrHWt Content-Type: text/plain; charset=UTF-8; name="0001-fixup-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraint.patch.nocfbot" Content-Disposition: attachment; filename*0="0001-fixup-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraint.pa"; filename*1="tch.nocfbot" Content-Transfer-Encoding: base64 RnJvbSA2ZDdhZjFmNzg1MDVjMDhmYjIwNWE1NmJkMWJhM2NiOTUxZjA0MDAyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCA5IE5vdiAyMDIzIDE0OjExOjM0ICswMTAwClN1YmplY3Q6 IFtQQVRDSF0gZml4dXAhIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBhbmQgVU5JUVVFIGNv bnN0cmFpbnRzCgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAg ICAgICAgICB8ICA4ICstLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAg ICAgICAgICAgIHwgNjggKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfY29uc3RyYWludC5jICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICAgfCAzMCArKysrLS0tLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgMTYgKystLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAyICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAgfCAgMiArLQog c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgMTkgKysr LS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAy OCArKysrKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAg ICAgIHwgMjcgKysrLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMg ICAgICAgICAgICB8IDE2ICsrKy0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAg ICAgICAgICAgICAgICAgfCAzMyArKystLS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmggICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAxNCArKy0tCiBzcmMvYmluL3BzcWwvZGVzY3Jp YmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvaW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAgICAgfCAxMSArLS0KIHNyYy9pbmNsdWRlL2Nv bW1hbmRzL2RlZnJlbS5oICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgNiArLQogLi4uL3JlZ3Jlc3Mv ZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgIDggKy0tCiBzcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgNCArLQogMjMgZmlsZXMg Y2hhbmdlZCwgMTQ4IGluc2VydGlvbnMoKyksIDE4MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCmluZGV4IDU0MTJmMmRhYTAuLjYxOGEwNWFjODkgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CkBAIC0yNzExLDEzICsyNzExLDExIEBAIDx0aXRsZT48c3RydWN0bmFtZT5wZ19jb25zdHJh aW50PC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KIAogICAgICA8cm93PgogICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+Y29udGVtcG9yYWw8L3N0cnVjdGZp ZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb253aXRob3V0 b3ZlcmxhcHM8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhpcyBjb25zdHJhaW50IGlzIGEgYXBwbGljYXRp b24tdGltZSB0ZW1wb3JhbCBjb25zdHJhaW50LAotICAgICAgIGRlZmluZWQgd2l0aCA8bGl0 ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiAoZm9yIHByaW1hcnkKLSAgICAgICBr ZXkgYW5kIHVuaXF1ZSBjb25zdHJhaW50cykgb3IgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFs PiAoZm9yCi0gICAgICAgZm9yZWlnbiBrZXlzKS4KKyAgICAgICBUaGlzIGNvbnN0cmFpbnQg aXMgZGVmaW5lZCB3aXRoIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+Cisg ICAgICAgKGZvciBwcmltYXJ5IGtleXMgYW5kIHVuaXF1ZSBjb25zdHJhaW50cykuCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sCmluZGV4IGFkNWJmMjE0NTMuLmEwYmQyYjhhZGMgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfdGFibGUuc2dtbApAQCAtNzgsOCArNzgsOCBAQAogWyBDT05TVFJBSU5UIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2Vh YmxlPiBdCiB7IENIRUNLICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJl c3Npb248L3JlcGxhY2VhYmxlPiApIFsgTk8gSU5IRVJJVCBdIHwKICAgTk9UIE5VTEwgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WyBOTyBJTkhFUklUIF0gfAotICBVTklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9y YWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0gKSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFjZWFibGU+ IHwKLSAgUFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9W RVJMQVBTIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1l dGVyczwvcmVwbGFjZWFibGU+IHwKKyAgVU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5D VCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8 CisgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBd ICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3Jl cGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFss IC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRl cnM8L3JlcGxhY2VhYmxlPiBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnByZWRpY2F0ZTwvcmVwbGFjZWFibGU+ICkgXSB8CiAgIEZPUkVJR04gS0VZICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y ZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCiAgICAgWyBNQVRDSCBG VUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBs YWNlYWJsZQpAQCAtMTA3LDEwICsxMDcsNiBAQAogCiB7IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IHwgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgfSBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGNsYXNzPC9yZXBsYWNlYWJsZT4gXSBbIEFT QyB8IERFU0MgXSBbIE5VTExTIHsgRklSU1QgfCBMQVNUIH0gXQogCi08cGhyYXNlPjxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFi bGU+IGluIGEgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+LCA8bGl0ZXJhbD5VTklR VUU8L2xpdGVyYWw+LCBvciA8bGl0ZXJhbD5GT1JFSUdOIEtFWTwvbGl0ZXJhbD4gY29uc3Ry YWludCBpczo8L3BocmFzZT4KLQotPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJh bmdlX2NvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4KLQogPHBocmFzZT48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gaW4g YSA8bGl0ZXJhbD5GT1JFSUdOIEtFWTwvbGl0ZXJhbD4vPGxpdGVyYWw+UkVGRVJFTkNFUzwv bGl0ZXJhbD4gY29uc3RyYWludCBpczo8L3BocmFzZT4KIAogeyBOTyBBQ1RJT04gfCBSRVNU UklDVCB8IENBU0NBREUgfCBTRVQgTlVMTCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdIHwgU0VUIERF RkFVTFQgWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSB9CkBAIC05NjksNyArOTY1LDcgQEAgPHRpdGxl PlBhcmFtZXRlcnM8L3RpdGxlPgogCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRl dGFibGUtcGFybXMtdW5pcXVlIj4KICAgICA8dGVybT48bGl0ZXJhbD5VTklRVUUgWyBOVUxM UyBbIE5PVCBdIERJU1RJTkNUIF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rl cm0+Ci0gICAgPHRlcm0+PGxpdGVyYWw+VU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5D VCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD4KKyAgICA8dGVybT48bGl0ZXJhbD5VTklR VUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBXSVRI T1VUIE9WRVJMQVBTIF0gKTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPklO Q0xVREUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKHRhYmxlIGNvbnN0 cmFpbnQpPC90ZXJtPgogCiAgICAgPGxpc3RpdGVtPgpAQCAtOTgzLDYgKzk3OSwyNiBAQCA8 dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgICBvZiB0aGVzZSBjb2x1bW5zLgogICAg ICA8L3BhcmE+CiAKKyAgICAgPHBhcmE+CisgICAgICBJZiB0aGUgPGxpdGVyYWw+V0lUSE9V VCBPVkVSTEFQUzwvbGl0ZXJhbD4gb3B0aW9uIGlzIHNwZWNpZmllZCBmb3IgdGhlCisgICAg ICBsYXN0IGNvbHVtbiwgdGhlbiB0aGF0IGNvbHVtbiBpcyBjaGVja2VkIGZvciBvdmVybGFw cyBpbnN0ZWFkIG9mCisgICAgICBlcXVhbGl0eS4gIEluIHRoYXQgY2FzZSwgdGhlIG90aGVy IGNvbHVtbnMgb2YgdGhlIGNvbnN0cmFpbnQgd2lsbCBhbGxvdworICAgICAgZHVwbGljYXRl cyBzbyBsb25nIGFzIHRoZSBkdXBsaWNhdGVzIGRvbid0IG92ZXJsYXAgaW4gdGhlCisgICAg ICA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBjb2x1bW4uICAoVGhpcyBp cyBzb21ldGltZXMgY2FsbGVkIGEKKyAgICAgIHRlbXBvcmFsIGtleSwgaWYgdGhlIGNvbHVt biBpcyBhIHJhbmdlIG9mIGRhdGVzIG9yIHRpbWVzdGFtcHMsIGJ1dAorICAgICAgUG9zdGdy ZVNRTCBhbGxvd3MgcmFuZ2VzIG92ZXIgYW55IGJhc2UgdHlwZS4pICBJbiBlZmZlY3QsIHN1 Y2ggYQorICAgICAgY29uc3RyYWludCBpcyBlbmZvcmNlZCB3aXRoIGFuIDxsaXRlcmFsPkVY Q0xVREU8L2xpdGVyYWw+IGNvbnN0cmFpbnQKKyAgICAgIHJhdGhlciB0aGFuIGEgPGxpdGVy YWw+VU5JUVVFPC9saXRlcmFsPiBjb25zdHJhaW50LiAgU28gZm9yIGV4YW1wbGUKKyAgICAg IDxsaXRlcmFsPlVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpPC9saXRl cmFsPiBiZWhhdmVzIGxpa2UKKyAgICAgIDxsaXRlcmFsPkVYQ0xVREUgVVNJTkcgR0lTVCAo aWQgV0lUSCA9LCB2YWxpZF9hdCBXSVRICisgICAgICAmYW1wOyZhbXA7KTwvbGl0ZXJhbD4u ICBUaGUgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY29sdW1uCisgICAg ICBtdXN0IGhhdmUgYSByYW5nZSB0eXBlLiAgVGhlIG5vbi08bGl0ZXJhbD5XSVRIT1VUIE9W RVJMQVBTPC9saXRlcmFsPgorICAgICAgY29sdW1ucyBvZiB0aGUgY29uc3RyYWludCBjYW4g YmUgYW55IHR5cGUgdGhhdCBjYW4gYmUgY29tcGFyZWQgZm9yCisgICAgICBlcXVhbGl0eSBp biBhIEdpU1QgaW5kZXguIEJ5IGRlZmF1bHQgb25seSByYW5nZSB0eXBlcyBhcmUgc3VwcG9y dGVkLCBidXQKKyAgICAgIHlvdSBjYW4gdXNlIG90aGVyIHR5cGVzIGJ5IGFkZGluZyB0aGUg PHhyZWYgbGlua2VuZD0iYnRyZWUtZ2lzdCIvPgorICAgICAgZXh0ZW5zaW9uICh3aGljaCBp cyB0aGUgZXhwZWN0ZWQgd2F5IHRvIHVzZSB0aGlzIGZlYXR1cmUpLgorICAgICA8L3BhcmE+ CisKICAgICAgPHBhcmE+CiAgICAgICBGb3IgdGhlIHB1cnBvc2Ugb2YgYSB1bmlxdWUgY29u c3RyYWludCwgbnVsbCB2YWx1ZXMgYXJlIG5vdAogICAgICAgY29uc2lkZXJlZCBlcXVhbCwg dW5sZXNzIDxsaXRlcmFsPk5VTExTIE5PVCBESVNUSU5DVDwvbGl0ZXJhbD4gaXMKQEAgLTEw MDcsOCArMTAyMyw3IEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICAgIEFkZGlu ZyBhIHVuaXF1ZSBjb25zdHJhaW50IHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYSB1bmlx dWUgYnRyZWUKICAgICAgIGluZGV4IG9uIHRoZSBjb2x1bW4gb3IgZ3JvdXAgb2YgY29sdW1u cyB1c2VkIGluIHRoZSBjb25zdHJhaW50LiBCdXQgaWYKICAgICAgIHRoZSBjb25zdHJhaW50 IGluY2x1ZGVzIGEgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY2xhdXNl LAotICAgICAgaXQgd2lsbCB1c2UgYSBHaVNUIGluZGV4IGFuZCBiZWhhdmUgbGlrZSBhIHRl bXBvcmFsIDxsaXRlcmFsPlBSSU1BUlkKLSAgICAgIEtFWTwvbGl0ZXJhbD46IHByZXZlbnRp bmcgZHVwbGljYXRlcyBvbmx5IGluIG92ZXJsYXBwaW5nIHRpbWUgcGVyaW9kcy4KKyAgICAg IGl0IHdpbGwgdXNlIGEgR2lTVCBpbmRleC4KICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJh PgpAQCAtMTAyNiw4ICsxMDQxLDcgQEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgogCiAg ICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtcHJpbWFyeS1rZXki PgogICAgIDx0ZXJtPjxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiAoY29sdW1uIGNv bnN0cmFpbnQpPC90ZXJtPgotICAgIDx0ZXJtPjxsaXRlcmFsPlBSSU1BUlkgS0VZICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0KLSAgICBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9y YWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0gKTwvbGl0ZXJh bD4KKyAgICA8dGVybT48bGl0ZXJhbD5QUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ IFdJVEhPVVQgT1ZFUkxBUFMgXSApPC9saXRlcmFsPgogICAgIDxvcHRpb25hbD4gPGxpdGVy YWw+SU5DTFVERSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLl0pPC9saXRlcmFsPiA8L29wdGlvbmFsPiAodGFibGUg Y29uc3RyYWludCk8L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KQEAgLTEw NjAsOSArMTA3NCwxMCBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgIDwvcGFy YT4KIAogICAgICA8cGFyYT4KLSAgICAgIEFkZGluZyBhIDxsaXRlcmFsPlBSSU1BUlkgS0VZ PC9saXRlcmFsPiBjb25zdHJhaW50IHdpbGwgYXV0b21hdGljYWxseQotICAgICAgY3JlYXRl IGEgdW5pcXVlIGJ0cmVlIGluZGV4IChvciBHaVNUIGlmIHRlbXBvcmFsKSBvbiB0aGUgY29s dW1uIG9yIGdyb3VwIG9mCi0gICAgICBjb2x1bW5zIHVzZWQgaW4gdGhlIGNvbnN0cmFpbnQu CisgICAgICBBcyB3aXRoIGEgPGxpdGVyYWw+VU5JUVVFPC9saXRlcmFsPiBjb25zdHJhaW50 LCBhZGRpbmcgYQorICAgICAgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+IGNvbnN0 cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhCisgICAgICB1bmlxdWUgYnRyZWUg aW5kZXgsIG9yIEdpU1QgaWYgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4g d2FzCisgICAgICBzcGVjaWZpZWQsIG9uIHRoZSBjb2x1bW4gb3IgZ3JvdXAgb2YgY29sdW1u cyB1c2VkIGluIHRoZSBjb25zdHJhaW50LgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+ CkBAIC0xMDc1LDMxICsxMDkwLDYgQEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgogICAg ICAgKGUuZy4sIDxsaXRlcmFsPkRST1AgQ09MVU1OPC9saXRlcmFsPikgY2FuIGNhdXNlIGNh c2NhZGVkIGNvbnN0cmFpbnQgYW5kCiAgICAgICBpbmRleCBkZWxldGlvbi4KICAgICAgPC9w YXJhPgotCi0gICAgIDxwYXJhPgotICAgICAgQSA8bGl0ZXJhbD5QUklNQVJZIEtFWTwvbGl0 ZXJhbD4gd2l0aCBhIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IG9wdGlv bgotICAgICAgaXMgYSA8ZW1waGFzaXM+dGVtcG9yYWw8L2VtcGhhc2lzPiBwcmltYXJ5IGtl eS4KLSAgICAgIFRoZSA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBjb2x1 bW4KLSAgICAgIG11c3QgYmUgYSByYW5nZSB0eXBlIG9yIGEgPGxpdGVyYWw+UEVSSU9EPC9s aXRlcmFsPgotICAgICAgYW5kIGlzIHVzZWQgdG8gY29uc3RyYWluIHRoZSByZWNvcmQncyBh cHBsaWNhYmlsaXR5Ci0gICAgICB0byBqdXN0IHRoYXQgcmFuZ2UvcGVyaW9kICh1c3VhbGx5 IGEgcmFuZ2Ugb2YgZGF0ZXMgb3IgdGltZXN0YW1wcywKLSAgICAgIGFsdGhvdWdoIFBvc3Rn cmVzIGFsbG93cyBhIHJhbmdlL3BlcmlvZCBvdmVyIGFueSBiYXNlIHR5cGUpLgotICAgICA8 L3BhcmE+Ci0KLSAgICAgPHBhcmE+Ci0gICAgICBUaGUgbm9uLTxsaXRlcmFsPldJVEhPVVQg T1ZFUkxBUFM8L2xpdGVyYWw+IHBhcnQocykgb2YgdGhlIGtleSBjYW4gYmUgYW55Ci0gICAg ICB0eXBlIHRoYXQgY2FuIGJlIGNvbXBhcmVkIGZvciBlcXVhbGl0eSBpbiBhIEdpU1QgaW5k ZXguIEJ5IGRlZmF1bHQKLSAgICAgIG9ubHkgcmFuZ2UgdHlwZXMgYXJlIHN1cHBvcnRlZCwg YnV0IHlvdSBjYW4gdXNlIG90aGVyIHR5cGVzIGJ5Ci0gICAgICBhZGRpbmcgdGhlIDx4cmVm IGxpbmtlbmQ9ImJ0cmVlLWdpc3QiLz4gZXh0ZW5zaW9uCi0gICAgICAod2hpY2ggaXMgdGhl IGV4cGVjdGVkIHdheSB0byB1c2UgdGhpcyBmZWF0dXJlKS4KLSAgICAgIFRoZXNlIG9yZGlu YXJ5IHBhcnRzIG9mIHRoZSBwcmltYXJ5IGtleSBkbyBhbGxvdyBkdXBsaWNhdGVzLAotICAg ICAgc28gbG9uZyBhcyB0aGUgZHVwbGljYXRlcyBkb24ndCBvdmVybGFwIGluIHRoZQotICAg ICAgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY29sdW1uLgotICAgICAg SW4gZWZmZWN0IGEgdGVtcG9yYWwgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+IGlz IGVuZm9yY2VkIHdpdGggYW4KLSAgICAgIDxsaXRlcmFsPkVYQ0xVREU8L2xpdGVyYWw+IGNv bnN0cmFpbnQgcmF0aGVyIHRoYW4gYSA8bGl0ZXJhbD5VTklRVUU8L2xpdGVyYWw+Ci0gICAg ICBjb25zdHJhaW50LiBTbyBmb3IgZXhhbXBsZSA8bGl0ZXJhbD5QUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpPC9saXRlcmFsPgotICAgICAgYmVoYXZlcyBs aWtlIDxsaXRlcmFsPkVYQ0xVREUgVVNJTkcgR0lTVCAoaWQgV0lUSCA9LCB2YWxpZF9hdCBX SVRIICZhbXA7JmFtcDspPC9saXRlcmFsPi4KLSAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCAzZTljYzRi YjEwLi5mMTI2ZDhlNjc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtMjE0MCw3ICsyMTQwLDcg QEAgU3RvcmVSZWxDaGVjayhSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNjbmFtZSwgTm9k ZSAqZXhwciwKIAkJCQkJCQkgIGlzX2xvY2FsLCAvKiBjb25pc2xvY2FsICovCiAJCQkJCQkJ ICBpbmhjb3VudCwgLyogY29uaW5oY291bnQgKi8KIAkJCQkJCQkgIGlzX25vX2luaGVyaXQs CS8qIGNvbm5vaW5oZXJpdCAqLwotCQkJCQkJCSAgZmFsc2UsCS8qIGNvbnRlbXBvcmFsICov CisJCQkJCQkJICBmYWxzZSwJLyogY29ud2l0aG91dG92ZXJsYXBzICovCiAJCQkJCQkJICBp c19pbnRlcm5hbCk7IC8qIGludGVybmFsbHkgY29uc3RydWN0ZWQ/ICovCiAKIAlwZnJlZShj Y2Jpbik7CkBAIC0yMTkxLDcgKzIxOTEsNyBAQCBTdG9yZVJlbE5vdE51bGwoUmVsYXRpb24g cmVsLCBjb25zdCBjaGFyICpubm5hbWUsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkJCSAg aXNfbG9jYWwsCiAJCQkJCQkJICBpbmhjb3VudCwKIAkJCQkJCQkgIGlzX25vX2luaGVyaXQs Ci0JCQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9yYWwgKi8KKwkJCQkJCQkgIGZhbHNlLAkv KiBjb253aXRob3V0b3ZlcmxhcHMgKi8KIAkJCQkJCQkgIGZhbHNlKTsKIAlyZXR1cm4gY29u c3RyT2lkOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDJmMWVjM2IwYWMuLjg0NDRkNzY4 ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTI1NCw4ICsyNTQsOCBAQCBpbmRleF9jaGVj a19wcmltYXJ5X2tleShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBlcnJtc2coInByaW1hcnkga2V5cyBj YW5ub3QgYmUgZXhwcmVzc2lvbnMiKSkpOwogCi0JCS8qIFN5c3RlbSBhdHRyaWJ1dGVzIGFy ZSBuZXZlciBudWxsLCBzbyBubyBuZWVkIHRvIGNoZWNrLiAqLwotCQlpZiAoYXR0bnVtIDw9 IDApCisJCS8qIFN5c3RlbSBhdHRyaWJ1dGVzIGFyZSBuZXZlciBudWxsLCBzbyBubyBuZWVk IHRvIGNoZWNrICovCisJCWlmIChhdHRudW0gPCAwKQogCQkJY29udGludWU7CiAKIAkJYXR0 dHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVNLApAQCAtMTMyNiw3ICsxMzI2LDcgQEAg aW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwg T2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJCQkJCUFudW1fcGdfaW5kZXhfaW5kb3B0aW9uKTsK IAlpbmRjb2xvcHRpb25zID0gKGludDJ2ZWN0b3IgKikgRGF0dW1HZXRQb2ludGVyKGNvbE9w dGlvbkRhdHVtKTsKIAotCS8qIEZldGNoIG9wdGlvbnMgb2YgaW5kZXggaWYgYW55ICovCisJ LyogRmV0Y2ggcmVsb3B0aW9ucyBvZiBpbmRleCBpZiBhbnkgKi8KIAljbGFzc1R1cGxlID0g U2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShvbGRJbmRleElkKSk7 CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNsYXNzVHVwbGUpKQogCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCBvbGRJbmRleElkKTsKQEAg LTE4OTUsNyArMTg5NSw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZChPaWQgaGVh cElkLCBPaWQgaW5kZXhJZCkKICAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1VQREFURV9JTkRF WDogdXBkYXRlIHRoZSBwZ19pbmRleCByb3cKICAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1JF TU9WRV9PTERfREVQUzogcmVtb3ZlIGV4aXN0aW5nIGRlcGVuZGVuY2llcwogICoJCQlvZiBp bmRleCBvbiB0YWJsZSdzIGNvbHVtbnMKLSAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBP UkFMOiBjb25zdHJhaW50IGlzIGZvciBhIHRlbXBvcmFsIHByaW1hcnkga2V5CisgKgkJSU5E RVhfQ09OU1RSX0NSRUFURV9XSVRIT1VUX09WRVJMQVBTOiBjb25zdHJhaW50IHVzZXMgV0lU SE9VVCBPVkVSTEFQUwogICogYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM6IGFsbG93IHRhYmxl IHRvIGJlIGEgc3lzdGVtIGNhdGFsb2cKICAqIGlzX2ludGVybmFsOiBpbmRleCBpcyBjb25z dHJ1Y3RlZCBkdWUgdG8gaW50ZXJuYWwgcHJvY2VzcwogICovCkBAIC0xOTE5LDEzICsxOTE5 LDEzIEBAIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAlib29sCQltYXJrX2FzX3ByaW1hcnk7CiAJYm9vbAkJaXNsb2NhbDsKIAlib29sCQlub2lu aGVyaXQ7Ci0JYm9vbAkJaXNfdGVtcG9yYWw7CisJYm9vbAkJaXNfd2l0aG91dF9vdmVybGFw czsKIAlpbnQJCQlpbmhjb3VudDsKIAogCWRlZmVycmFibGUgPSAoY29uc3RyX2ZsYWdzICYg SU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJBQkxFKSAhPSAwOwogCWluaXRkZWZlcnJlZCA9 IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX0lOSVRfREVGRVJSRUQpICE9 IDA7CiAJbWFya19hc19wcmltYXJ5ID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9D UkVBVEVfTUFSS19BU19QUklNQVJZKSAhPSAwOwotCWlzX3RlbXBvcmFsID0gKGNvbnN0cl9m bGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfVEVNUE9SQUwpICE9IDA7CisJaXNfd2l0aG91 dF9vdmVybGFwcyA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX1dJVEhP VVRfT1ZFUkxBUFMpICE9IDA7CiAKIAkvKiBjb25zdHJhaW50IGNyZWF0aW9uIHN1cHBvcnQg ZG9lc24ndCB3b3JrIHdoaWxlIGJvb3RzdHJhcHBpbmcgKi8KIAlBc3NlcnQoIUlzQm9vdHN0 cmFwUHJvY2Vzc2luZ01vZGUoKSk7CkBAIC0yMDAyLDcgKzIwMDIsNyBAQCBpbmRleF9jb25z dHJhaW50X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAgIGlzbG9j YWwsCiAJCQkJCQkJCSAgIGluaGNvdW50LAogCQkJCQkJCQkgICBub2luaGVyaXQsCi0JCQkJ CQkJCSAgIGlzX3RlbXBvcmFsLAkvKiBjb250ZW1wb3JhbCAqLworCQkJCQkJCQkgICBpc193 aXRob3V0X292ZXJsYXBzLAogCQkJCQkJCQkgICBpc19pbnRlcm5hbCk7CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwppbmRleCBkNTMyOWNhOGM5Li5mZmQzNDBh MmU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwpAQCAtNzgsNyArNzgs NyBAQCBDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUs CiAJCQkJCSAgYm9vbCBjb25Jc0xvY2FsLAogCQkJCQkgIGludCBjb25JbmhDb3VudCwKIAkJ CQkJICBib29sIGNvbk5vSW5oZXJpdCwKLQkJCQkJICBib29sIGNvblRlbXBvcmFsLAorCQkJ CQkgIGJvb2wgY29uV2l0aG91dE92ZXJsYXBzLAogCQkJCQkgIGJvb2wgaXNfaW50ZXJuYWwp CiB7CiAJUmVsYXRpb24JY29uRGVzYzsKQEAgLTE5NCw3ICsxOTQsNyBAQCBDcmVhdGVDb25z dHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJdmFsdWVzW0FudW1f cGdfY29uc3RyYWludF9jb25pc2xvY2FsIC0gMV0gPSBCb29sR2V0RGF0dW0oY29uSXNMb2Nh bCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25pbmhjb3VudCAtIDFdID0gSW50 MTZHZXREYXR1bShjb25JbmhDb3VudCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9j b25ub2luaGVyaXQgLSAxXSA9IEJvb2xHZXREYXR1bShjb25Ob0luaGVyaXQpOwotCXZhbHVl c1tBbnVtX3BnX2NvbnN0cmFpbnRfY29udGVtcG9yYWwgLSAxXSA9IEJvb2xHZXREYXR1bShj b25UZW1wb3JhbCk7CisJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb253aXRob3V0b3Zl cmxhcHMgLSAxXSA9IEJvb2xHZXREYXR1bShjb25XaXRob3V0T3ZlcmxhcHMpOwogCiAJaWYg KGNvbmtleUFycmF5KQogCQl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSAtIDFd ID0gUG9pbnRlckdldERhdHVtKGNvbmtleUFycmF5KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMKaW5kZXggZTlkMWIxNzkzNS4uZDU2ZGI4MWZhMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIHZvaWQgQ29tcHV0ZUluZGV4 QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJCQkJICBPaWQgYWNjZXNzTWV0aG9k SWQsCiAJCQkJCQkJICBib29sIGFtY2Fub3JkZXIsCiAJCQkJCQkJICBib29sIGlzY29uc3Ry YWludCwKLQkJCQkJCQkgIGJvb2wgaXN0ZW1wb3JhbCwKKwkJCQkJCQkgIGJvb2wgaXN3aXRo b3V0b3ZlcmxhcHMsCiAJCQkJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkJCQkgIGludCBk ZGxfc2VjX2NvbnRleHQsCiAJCQkJCQkJICBpbnQgKmRkbF9zYXZlX25lc3RsZXZlbCk7CkBA IC0xNDksNyArMTQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleEVycm9ySW5mbwogICoJ CXRvIGluZGV4IG9uLgogICogJ2V4Y2x1c2lvbk9wTmFtZXMnOiBsaXN0IG9mIG5hbWVzIG9m IGV4Y2x1c2lvbi1jb25zdHJhaW50IG9wZXJhdG9ycywKICAqCQlvciBOSUwgaWYgbm90IGFu IGV4Y2x1c2lvbiBjb25zdHJhaW50LgotICogJ2lzdGVtcG9yYWwnOiB0cnVlIGlmZiB0aGlz IGluZGV4IGhhcyBhIFdJVEhPVVQgT1ZFUkxBUFMgY2xhdXNlLgorICogJ2lzV2l0aG91dE92 ZXJsYXBzJzogdHJ1ZSBpZmYgdGhpcyBpbmRleCBoYXMgYSBXSVRIT1VUIE9WRVJMQVBTIGNs YXVzZS4KICAqCiAgKiBUaGlzIGlzIHRhaWxvcmVkIHRvIHRoZSBuZWVkcyBvZiBBTFRFUiBU QUJMRSBBTFRFUiBUWVBFLCB3aGljaCByZWNyZWF0ZXMKICAqIGFueSBpbmRleGVzIHRoYXQg ZGVwZW5kZWQgb24gYSBjaGFuZ2luZyBjb2x1bW4gZnJvbSB0aGVpciBwZ19nZXRfaW5kZXhk ZWYKQEAgLTE4MCw3ICsxODAsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQs CiAJCQkJCSBjb25zdCBjaGFyICphY2Nlc3NNZXRob2ROYW1lLAogCQkJCQkgY29uc3QgTGlz dCAqYXR0cmlidXRlTGlzdCwKIAkJCQkJIGNvbnN0IExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMs Ci0JCQkJCSBib29sIGlzdGVtcG9yYWwpCisJCQkJCSBib29sIGlzV2l0aG91dE92ZXJsYXBz KQogewogCWJvb2wJCWlzY29uc3RyYWludDsKIAlPaWQJCSAgICp0eXBlSWRzOwpAQCAtMjU1 LDcgKzI1NSw3IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJICBj b2xvcHRpb25zLCBhdHRyaWJ1dGVMaXN0LAogCQkJCQkgIGV4Y2x1c2lvbk9wTmFtZXMsIHJl bGF0aW9uSWQsCiAJCQkJCSAgYWNjZXNzTWV0aG9kTmFtZSwgYWNjZXNzTWV0aG9kSWQsCi0J CQkJCSAgYW1jYW5vcmRlciwgaXNjb25zdHJhaW50LCBpc3RlbXBvcmFsLCBJbnZhbGlkT2lk LAorCQkJCQkgIGFtY2Fub3JkZXIsIGlzY29uc3RyYWludCwgaXNXaXRob3V0T3ZlcmxhcHMs IEludmFsaWRPaWQsCiAJCQkJCSAgMCwgTlVMTCk7CiAKIAkvKiBHZXQgdGhlIHNvb24tb2Jz b2xldGUgcGdfaW5kZXggdHVwbGUuICovCkBAIC02ODksNyArNjg5LDcgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJICogSXQgaGFzIGV4Y2x1c2lvbiBjb25zdHJhaW50IGJlaGF2 aW9yIGlmIGl0J3MgYW4gRVhDTFVERSBjb25zdHJhaW50CiAJICogb3IgYSB0ZW1wb3JhbCBQ UklNQVJZIEtFWS9VTklRVUUgY29uc3RyYWludAogCSAqLwotCWV4Y2x1c2lvbiA9IHN0bXQt PmV4Y2x1ZGVPcE5hbWVzIHx8IHN0bXQtPmlzdGVtcG9yYWw7CisJZXhjbHVzaW9uID0gc3Rt dC0+ZXhjbHVkZU9wTmFtZXMgfHwgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHM7CiAKIAkvKiBF bnN1cmUgdGhhdCBpdCBtYWtlcyBzZW5zZSB0byBpbmRleCB0aGlzIGtpbmQgb2YgcmVsYXRp b24gKi8KIAlzd2l0Y2ggKHJlbC0+cmRfcmVsLT5yZWxraW5kKQpAQCAtODU5LDcgKzg1OSw3 IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf cGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX0FDQ0VTU19NRVRIT0RfT0lELAogCQkJCQkJCQkg YWNjZXNzTWV0aG9kSWQpOwogCi0JaWYgKHN0bXQtPnVuaXF1ZSAmJiAhc3RtdC0+aXN0ZW1w b3JhbCAmJiAhYW1Sb3V0aW5lLT5hbWNhbnVuaXF1ZSkKKwlpZiAoc3RtdC0+dW5pcXVlICYm ICFzdG10LT5pc3dpdGhvdXRvdmVybGFwcyAmJiAhYW1Sb3V0aW5lLT5hbWNhbnVuaXF1ZSkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCiAJCQkJIGVycm1zZygiYWNjZXNzIG1ldGhvZCBcIiVzXCIgZG9lcyBub3Qg c3VwcG9ydCB1bmlxdWUgaW5kZXhlcyIsCkBAIC05MjcsNyArOTI3LDcgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJCQkJCSAgY29sb3B0aW9ucywgYWxsSW5kZXhQYXJhbXMsCiAJ CQkJCSAgc3RtdC0+ZXhjbHVkZU9wTmFtZXMsIHRhYmxlSWQsCiAJCQkJCSAgYWNjZXNzTWV0 aG9kTmFtZSwgYWNjZXNzTWV0aG9kSWQsCi0JCQkJCSAgYW1jYW5vcmRlciwgc3RtdC0+aXNj b25zdHJhaW50LCBzdG10LT5pc3RlbXBvcmFsLAorCQkJCQkgIGFtY2Fub3JkZXIsIHN0bXQt PmlzY29uc3RyYWludCwgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMsCiAJCQkJCSAgcm9vdF9z YXZlX3VzZXJpZCwgcm9vdF9zYXZlX3NlY19jb250ZXh0LAogCQkJCQkgICZyb290X3NhdmVf bmVzdGxldmVsKTsKIApAQCAtOTU1LDggKzk1NSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJs ZUlkLAogCiAJCWlmIChzdG10LT5wcmltYXJ5KQogCQkJY29uc3RyYWludF90eXBlID0gIlBS SU1BUlkgS0VZIjsKLQkJZWxzZSBpZiAoc3RtdC0+dW5pcXVlICYmIHN0bXQtPmlzdGVtcG9y YWwpCi0JCQljb25zdHJhaW50X3R5cGUgPSAidGVtcG9yYWwgVU5JUVVFIjsKIAkJZWxzZSBp ZiAoc3RtdC0+dW5pcXVlKQogCQkJY29uc3RyYWludF90eXBlID0gIlVOSVFVRSI7CiAJCWVs c2UgaWYgKHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKQpAQCAtMTAwNiw3ICsxMDA0LDcgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkgKiB3ZSBoYXZlIGFuIGV4Y2x1c2lvbiBjb25z dHJhaW50IChvciBhIHRlbXBvcmFsIFBLKSwgaXQgYWxyZWFkeQogCQkJICoga25vd3MgdGhl IG9wZXJhdG9ycywgc28gd2UgZG9uJ3QgaGF2ZSB0byBpbmZlciB0aGVtLgogCQkJICovCi0J CQlpZiAoc3RtdC0+dW5pcXVlICYmICFzdG10LT5pc3RlbXBvcmFsICYmIGFjY2Vzc01ldGhv ZElkICE9IEJUUkVFX0FNX09JRCkKKwkJCWlmIChzdG10LT51bmlxdWUgJiYgIXN0bXQtPmlz d2l0aG91dG92ZXJsYXBzICYmIGFjY2Vzc01ldGhvZElkICE9IEJUUkVFX0FNX09JRCkKIAkJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAogCQkJCQkJIGVycm1zZygiY2Fubm90IG1hdGNoIHBhcnRpdGlvbiBrZXkg dG8gYW4gaW5kZXggdXNpbmcgYWNjZXNzIG1ldGhvZCBcIiVzXCIiLApAQCAtMTAzOSw3ICsx MDM3LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCXsKIAkJCQkJCU9pZAkJ CWlkeF9lcW9wID0gSW52YWxpZE9pZDsKIAotCQkJCQkJaWYgKHN0bXQtPnVuaXF1ZSAmJiAh c3RtdC0+aXN0ZW1wb3JhbCkKKwkJCQkJCWlmIChzdG10LT51bmlxdWUgJiYgIXN0bXQtPmlz d2l0aG91dG92ZXJsYXBzKQogCQkJCQkJCWlkeF9lcW9wID0gZ2V0X29wZmFtaWx5X21lbWJl cihpZHhfb3BmYW1pbHksCiAJCQkJCQkJCQkJCQkJCSAgIGlkeF9vcGNpbnR5cGUsCiAJCQkJ CQkJCQkJCQkJCSAgIGlkeF9vcGNpbnR5cGUsCkBAIC0xMTk3LDggKzExOTUsOCBAQCBEZWZp bmVJbmRleChPaWQgdGFibGVJZCwKIAkJY29uc3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9D UkVBVEVfREVGRVJSQUJMRTsKIAlpZiAoc3RtdC0+aW5pdGRlZmVycmVkKQogCQljb25zdHJf ZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9JTklUX0RFRkVSUkVEOwotCWlmIChzdG10 LT5pc3RlbXBvcmFsKQotCQljb25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9U RU1QT1JBTDsKKwlpZiAoc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpCisJCWNvbnN0cl9mbGFn cyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRFX1dJVEhPVVRfT1ZFUkxBUFM7CiAKIAlpbmRleFJl bGF0aW9uSWQgPQogCQlpbmRleF9jcmVhdGUocmVsLCBpbmRleFJlbGF0aW9uTmFtZSwgaW5k ZXhSZWxhdGlvbklkLCBwYXJlbnRJbmRleElkLApAQCAtMTk3NSw3ICsxOTczLDcgQEAgQ29t cHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJICBPaWQgYWNjZXNz TWV0aG9kSWQsCiAJCQkJICBib29sIGFtY2Fub3JkZXIsCiAJCQkJICBib29sIGlzY29uc3Ry YWludCwKLQkJCQkgIGJvb2wgaXN0ZW1wb3JhbCwKKwkJCQkgIGJvb2wgaXN3aXRob3V0b3Zl cmxhcHMsCiAJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkgIGludCBkZGxfc2VjX2NvbnRl eHQsCiAJCQkJICBpbnQgKmRkbF9zYXZlX25lc3RsZXZlbCkKQEAgLTIwMDAsNyArMTk5OCw3 IEBAIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQluZXh0RXhj bE9wID0gTlVMTDsKIAogCS8qIGV4Y2x1c2lvbk9wTmFtZXMgY2FuIGJlIG5vbi1OSUwgaWYg d2UgYXJlIGNyZWF0aW5nIGEgcGFydGl0aW9uICovCi0JaWYgKGlzdGVtcG9yYWwgJiYgZXhj bHVzaW9uT3BOYW1lcyA9PSBOSUwpCisJaWYgKGlzd2l0aG91dG92ZXJsYXBzICYmIGV4Y2x1 c2lvbk9wTmFtZXMgPT0gTklMKQogCXsKIAkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHMg PSBwYWxsb2NfYXJyYXkoT2lkLCBua2V5Y29scyk7CiAJCWluZGV4SW5mby0+aWlfRXhjbHVz aW9uUHJvY3MgPSBwYWxsb2NfYXJyYXkoT2lkLCBua2V5Y29scyk7CkBAIC0yMjgzLDcgKzIy ODEsNyBAQCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCWlu ZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRzW2F0dG5dID0gc3RyYXQ7CiAJCQluZXh0RXhj bE9wID0gbG5leHQoZXhjbHVzaW9uT3BOYW1lcywgbmV4dEV4Y2xPcCk7CiAJCX0KLQkJZWxz ZSBpZiAoaXN0ZW1wb3JhbCkKKwkJZWxzZSBpZiAoaXN3aXRob3V0b3ZlcmxhcHMpCiAJCXsK IAkJCWludCBzdHJhdDsKIAkJCU9pZCBvcGlkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwppbmRleCA0Y2M2NDUyODJhLi4wNDUyN2EzNTQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtMjA4LDcgKzIwOCw2IEBAIHR5cGVkZWYgc3RydWN0IE5ld0NvbnN0cmFp bnQKIAlPaWQJCQlyZWZyZWxpZDsJCS8qIFBLIHJlbCwgaWYgRk9SRUlHTiAqLwogCU9pZAkJ CXJlZmluZGlkOwkJLyogT0lEIG9mIFBLJ3MgaW5kZXgsIGlmIEZPUkVJR04gKi8KIAlPaWQJ CQljb25pZDsJCQkvKiBPSUQgb2YgcGdfY29uc3RyYWludCBlbnRyeSwgaWYgRk9SRUlHTiAq LwotCWJvb2wJCWNvbnRlbXBvcmFsOwkvKiBXaGV0aGVyIHRoZSBuZXcgY29uc3RyYWludCBp cyB0ZW1wb3JhbCAqLwogCU5vZGUJICAgKnF1YWw7CQkJLyogQ2hlY2sgZXhwciBvciBDT05T VFJfRk9SRUlHTiBDb25zdHJhaW50ICovCiAJRXhwclN0YXRlICAqcXVhbHN0YXRlOwkJLyog RXhlY3V0aW9uIHN0YXRlIGZvciBDSEVDSyBleHByICovCiB9IE5ld0NvbnN0cmFpbnQ7CkBA IC0xMDA5NCw3ICsxMDA5Myw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndx dWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJ CQkgIGNvbmlzbG9jYWwsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJCSAgY29uaW5oY291bnQs CS8qIGluaGNvdW50ICovCiAJCQkJCQkJCQkgIGNvbm5vaW5oZXJpdCwgLyogY29uTm9Jbmhl cml0ICovCi0JCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25UZW1wb3JhbCAqLworCQkJCQkJCQkJ ICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJsYXBzICovCiAJCQkJCQkJCQkgIGZhbHNlKTsJ LyogaXNfaW50ZXJuYWwgKi8KIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgQ29uc3Ry YWludFJlbGF0aW9uSWQsIGNvbnN0ck9pZCk7CkBAIC0xMDM5Myw3ICsxMDM5Miw3IEBAIGFk ZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29u c3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAg MSwKIAkJCQkJCQkJCSAgZmFsc2UsCi0JCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25UZW1wb3Jh bCAqLworCQkJCQkJCQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJsYXBzICovCiAJCQkJ CQkJCQkgIGZhbHNlKTsKIAogCQkJLyoKQEAgLTEwODk5LDcgKzEwODk4LDcgQEAgQ2xvbmVG a1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRp b24gcGFydFJlbCkKIAkJCQkJCQkJICBmYWxzZSwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkg IDEsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCSAgZmFsc2UsCS8qIGNvbk5vSW5oZXJpdCAq LwotCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25UZW1wb3JhbCAqLworCQkJCQkJCQkgIGZhbHNl LAkvKiBjb25XaXRob3V0T3ZlcmxhcHMgKi8KIAkJCQkJCQkJICB0cnVlKTsKIAogCQkvKiBT ZXQgdXAgcGFydGl0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIG5ldyBjb25zdHJhaW50ICov CkBAIC0xMTU3NCw3ICsxMTU3Myw2IEBAIEFURXhlY1ZhbGlkYXRlQ29uc3RyYWludChMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIGNoYXIgKmNvbnN0ck5hbWUsCiAJCQluZXdjb24t PnJlZnJlbGlkID0gY29uLT5jb25mcmVsaWQ7CiAJCQluZXdjb24tPnJlZmluZGlkID0gY29u LT5jb25pbmRpZDsKIAkJCW5ld2Nvbi0+Y29uaWQgPSBjb24tPm9pZDsKLQkJCW5ld2Nvbi0+ Y29udGVtcG9yYWwgPSBjb24tPmNvbnRlbXBvcmFsOwogCQkJbmV3Y29uLT5xdWFsID0gKE5v ZGUgKikgZmtjb25zdHJhaW50OwogCiAJCQkvKiBGaW5kIG9yIGNyZWF0ZSB3b3JrIHF1ZXVl IGVudHJ5IGZvciB0aGlzIHRhYmxlICovCkBAIC0xMTc0MSwxMiArMTE3MzksMTAgQEAgdHJh bnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xMaXN0LAogICoKICAq CUxvb2sgdXAgdGhlIG5hbWVzLCBhdHRudW1zLCBhbmQgdHlwZXMgb2YgdGhlIHByaW1hcnkg a2V5IGF0dHJpYnV0ZXMKICAqCWZvciB0aGUgcGtyZWwuICBBbHNvIHJldHVybiB0aGUgaW5k ZXggT0lEIGFuZCBpbmRleCBvcGNsYXNzZXMgb2YgdGhlCi0gKglpbmRleCBzdXBwb3J0aW5n IHRoZSBwcmltYXJ5IGtleS4gIElmIHRoaXMgaXMgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSwK LSAqCWFsc28gc2V0IHRoZSBXSVRIT1VUIE9WRVJMQVBTIGF0dHJpYnV0ZSBuYW1lLCBhdHRu dW0sIGFuZCBhdHR0eXBpZC4KKyAqCWluZGV4IHN1cHBvcnRpbmcgdGhlIHByaW1hcnkga2V5 LgogICoKICAqCUFsbCBwYXJhbWV0ZXJzIGV4Y2VwdCBwa3JlbCBhcmUgb3V0cHV0IHBhcmFt ZXRlcnMuICBBbHNvLCB0aGUgZnVuY3Rpb24KLSAqCXJldHVybiB2YWx1ZSBpcyB0aGUgbnVt YmVyIG9mIGF0dHJpYnV0ZXMgaW4gdGhlIHByaW1hcnkga2V5LAotICoJbm90IGluY2x1ZGlu ZyB0aGUgV0lUSE9VVCBPVkVSTEFQUyBpZiBhbnkuCisgKglyZXR1cm4gdmFsdWUgaXMgdGhl IG51bWJlciBvZiBhdHRyaWJ1dGVzIGluIHRoZSBwcmltYXJ5IGtleS4KICAqCiAgKglVc2Vk IHdoZW4gdGhlIGNvbHVtbiBsaXN0IGluIHRoZSBSRUZFUkVOQ0VTIHNwZWNpZmljYXRpb24g aXMgb21pdHRlZC4KICAqLwpAQCAtMTQyOTIsNyArMTQyODgsNyBAQCBUcnlSZXVzZUluZGV4 KE9pZCBvbGRJZCwgSW5kZXhTdG10ICpzdG10KQogCQkJCQkJCSBzdG10LT5hY2Nlc3NNZXRo b2QsCiAJCQkJCQkJIHN0bXQtPmluZGV4UGFyYW1zLAogCQkJCQkJCSBzdG10LT5leGNsdWRl T3BOYW1lcywKLQkJCQkJCQkgc3RtdC0+aXN0ZW1wb3JhbCkpCisJCQkJCQkJIHN0bXQtPmlz d2l0aG91dG92ZXJsYXBzKSkKIAl7CiAJCVJlbGF0aW9uCWlyZWwgPSBpbmRleF9vcGVuKG9s ZElkLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggMDU3N2I2MDQx NS4uYTEwYTQyYjk3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dl ci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtODQxLDcgKzg0 MSw3IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVhdGVUcmlnU3RtdCAqc3RtdCwgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJCQkJCSAgdHJ1ZSwgLyogaXNsb2NhbCAq LwogCQkJCQkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCQkJCSAgdHJ1ZSwg Lyogbm9pbmhlcml0ICovCi0JCQkJCQkJCQkJCSAgZmFsc2UsIC8qIGNvbnRlbXBvcmFsICov CisJCQkJCQkJCQkJCSAgZmFsc2UsIC8qIGNvbndpdGhvdXRvdmVybGFwcyAqLwogCQkJCQkJ CQkJCQkgIGlzSW50ZXJuYWwpOwkvKiBpc19pbnRlcm5hbCAqLwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3R5cGVjbWRzLmMKaW5kZXggMTc3MzU1NjA1My4uMjQ3MDAxOTgxOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90eXBlY21kcy5jCkBAIC0zNTQ0LDcgKzM1NDQsNyBAQCBkb21haW5BZGRDb25z dHJhaW50KE9pZCBkb21haW5PaWQsIE9pZCBkb21haW5OYW1lc3BhY2UsIE9pZCBiYXNlVHlw ZU9pZCwKIAkJCQkJCQkgIHRydWUsIC8qIGlzIGxvY2FsICovCiAJCQkJCQkJICAwLAkvKiBp bmhjb3VudCAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIGNvbm5vaW5oZXJpdCAqLwotCQkJCQkJ CSAgZmFsc2UsCS8qIGNvbnRlbXBvcmFsICovCisJCQkJCQkJICBmYWxzZSwJLyogY29ud2l0 aG91dG92ZXJsYXBzICovCiAJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAJ aWYgKGNvbnN0ckFkZHIpCiAJCU9iamVjdEFkZHJlc3NTZXQoKmNvbnN0ckFkZHIsIENvbnN0 cmFpbnRSZWxhdGlvbklkLCBjY29pZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAxNGQ0ZTI0ZmNj Li5mZjRhZGQ2MjI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTUyMywxMyArNTIzLDEyIEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JVGFibGVFbGVtZW50IFR5 cGVkVGFibGVFbGVtZW50IENvbnN0cmFpbnRFbGVtIFRhYmxlRnVuY0VsZW1lbnQKICV0eXBl IDxub2RlPgljb2x1bW5EZWYgY29sdW1uT3B0aW9ucwogJXR5cGUgPGRlZmVsdD4JZGVmX2Vs ZW0gcmVsb3B0aW9uX2VsZW0gb2xkX2FnZ3JfZWxlbSBvcGVyYXRvcl9kZWZfZWxlbQotJXR5 cGUgPG5vZGU+CWRlZl9hcmcgY29sdW1uRWxlbSB3aXRob3V0X292ZXJsYXBzX2NsYXVzZQot CQkJCXdoZXJlX2NsYXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQorJXR5cGUgPG5vZGU+ CWRlZl9hcmcgY29sdW1uRWxlbSB3aGVyZV9jbGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1 c2UKIAkJCQlhX2V4cHIgYl9leHByIGNfZXhwciBBZXhwckNvbnN0IGluZGlyZWN0aW9uX2Vs IG9wdF9zbGljZV9ib3VuZAogCQkJCWNvbHVtbnJlZiBpbl9leHByIGhhdmluZ19jbGF1c2Ug ZnVuY190YWJsZSB4bWx0YWJsZSBhcnJheV9leHByCiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3Bl cmF0b3JfZGVmX2FyZwogJXR5cGUgPGxpc3Q+CXJvd3Nmcm9tX2l0ZW0gcm93c2Zyb21fbGlz dCBvcHRfY29sX2RlZl9saXN0Ci0ldHlwZSA8Ym9vbGVhbj4gb3B0X29yZGluYWxpdHkKKyV0 eXBlIDxib29sZWFuPiBvcHRfb3JkaW5hbGl0eSBvcHRfd2l0aG91dF9vdmVybGFwcwogJXR5 cGUgPGxpc3Q+CUV4Y2x1c2lvbkNvbnN0cmFpbnRMaXN0IEV4Y2x1c2lvbkNvbnN0cmFpbnRF bGVtCiAldHlwZSA8bGlzdD4JZnVuY19hcmdfbGlzdCBmdW5jX2FyZ19saXN0X29wdAogJXR5 cGUgPG5vZGU+CWZ1bmNfYXJnX2V4cHIKQEAgLTQxMDUsNyArNDEwNCw3IEBAIENvbnN0cmFp bnRFbGVtOgogCQkJCQluLT5pbml0aWFsbHlfdmFsaWQgPSB0cnVlOwogCQkJCQkkJCA9IChO b2RlICopIG47CiAJCQkJfQotCQkJfCBVTklRVUUgb3B0X3VuaXF1ZV9udWxsX3RyZWF0bWVu dCAnKCcgY29sdW1uTGlzdCB3aXRob3V0X292ZXJsYXBzX2NsYXVzZSAnKScgb3B0X2NfaW5j bHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBVTklRVUUgb3B0 X3VuaXF1ZV9udWxsX3RyZWF0bWVudCAnKCcgY29sdW1uTGlzdCBvcHRfd2l0aG91dF9vdmVy bGFwcyAnKScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFj ZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50 ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CkBAIC00MTQwLDcgKzQxMzksNyBAQCBDb25z dHJhaW50RWxlbToKIAkJCQkJCQkJICAgTlVMTCwgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KLQkJCXwgUFJJTUFSWSBLRVkgJygnIGNvbHVtbkxpc3Qgd2l0 aG91dF9vdmVybGFwc19jbGF1c2UgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24g T3B0Q29uc1RhYmxlU3BhY2UKKwkJCXwgUFJJTUFSWSBLRVkgJygnIGNvbHVtbkxpc3Qgb3B0 X3dpdGhvdXRfb3ZlcmxhcHMgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0 Q29uc1RhYmxlU3BhY2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRlU3BlYwogCQkJCXsKIAkJ CQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwpAQCAtNDIyMSw2ICs0 MjIwLDExIEBAIG9wdF9ub19pbmhlcml0OglOTyBJTkhFUklUCQkJCQkJCXsgICQkID0gdHJ1 ZTsgfQogCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICAkJCA9IGZhbHNlOyB9CiAJCTsKIAor b3B0X3dpdGhvdXRfb3ZlcmxhcHM6CisJCQlXSVRIT1VUIE9WRVJMQVBTCQkJCQkJeyAkJCA9 IHRydWU7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gZmFsc2U7IH0KKwk7CisK IG9wdF9jb2x1bW5fbGlzdDoKIAkJCScoJyBjb2x1bW5MaXN0ICcpJwkJCQkJCXsgJCQgPSAk MjsgfQogCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOSUw7IH0KQEAgLTQyMzEsMTEg KzQyMzUsNiBAQCBjb2x1bW5MaXN0OgogCQkJfCBjb2x1bW5MaXN0ICcsJyBjb2x1bW5FbGVt CQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCi13aXRob3V0X292ZXJsYXBz X2NsYXVzZToKLQkJCScsJyBjb2x1bW5FbGVtIFdJVEhPVVQgT1ZFUkxBUFMgeyAkJCA9ICQy OyB9Ci0JCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQgPSBOVUxMOyB9Ci0JOwot CiBjb2x1bW5FbGVtOiBDb2xJZAogCQkJCXsKIAkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlU3Ry aW5nKCQxKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21k LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGY0NzA1ZWNj MmIuLjU0N2UzMDU4YjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAt MTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBMaXN0ICpnZXRfb3BjbGFzcyhPaWQgb3BjbGFzcywg T2lkIGFjdHVhbF9kYXRhdHlwZSk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1JbmRleENvbnN0 cmFpbnRzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpOwogc3RhdGljIEluZGV4U3RtdCAqdHJh bnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsCiAJCQkJCQkJ CQkJICAgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCk7Ci1zdGF0aWMgdm9pZCB2YWxpZGF0ZVdp dGhvdXRPdmVybGFwcyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBjaGFyICpjb2xuYW1lLCBp bnQgbG9jYXRpb24pOworc3RhdGljIHZvaWQgdmFsaWRhdGVXaXRob3V0T3ZlcmxhcHMoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgY29uc3QgY2hhciAqY29sbmFtZSwgaW50IGxvY2F0aW9u KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUV4dGVuZGVkU3RhdGlzdGljcyhDcmVhdGVTdG10 Q29udGV4dCAqY3h0KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUZLQ29uc3RyYWludHMoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJICAgYm9vbCBza2lwVmFsaWRhdGlvbiwK QEAgLTE3MTcsNyArMTcxNyw3IEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFy ICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCWluZGV4LT51bmlxdWUgPSBpZHhy ZWMtPmluZGlzdW5pcXVlOwogCWluZGV4LT5udWxsc19ub3RfZGlzdGluY3QgPSBpZHhyZWMt PmluZG51bGxzbm90ZGlzdGluY3Q7CiAJaW5kZXgtPnByaW1hcnkgPSBpZHhyZWMtPmluZGlz cHJpbWFyeTsKLQlpbmRleC0+aXN0ZW1wb3JhbCA9IChpZHhyZWMtPmluZGlzcHJpbWFyeSB8 fCBpZHhyZWMtPmluZGlzdW5pcXVlKSAmJiBpZHhyZWMtPmluZGlzZXhjbHVzaW9uOworCWlu ZGV4LT5pc3dpdGhvdXRvdmVybGFwcyA9IChpZHhyZWMtPmluZGlzcHJpbWFyeSB8fCBpZHhy ZWMtPmluZGlzdW5pcXVlKSAmJiBpZHhyZWMtPmluZGlzZXhjbHVzaW9uOwogCWluZGV4LT50 cmFuc2Zvcm1lZCA9IHRydWU7CS8qIGRvbid0IG5lZWQgdHJhbnNmb3JtSW5kZXhTdG10ICov CiAJaW5kZXgtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAlpbmRleC0+aWZfbm90X2V4aXN0cyA9 IGZhbHNlOwpAQCAtMTc2OCw3ICsxNzY4LDcgQEAgZ2VuZXJhdGVDbG9uZWRJbmRleFN0bXQo UmFuZ2VWYXIgKmhlYXBSZWwsIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJCQkJaW50CQkJaTsK IAogCQkJCUFzc2VydChjb25yZWMtPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9FWENMVVNJT04g fHwKLQkJCQkJCShpbmRleC0+aXN0ZW1wb3JhbCAmJgorCQkJCQkJKGluZGV4LT5pc3dpdGhv dXRvdmVybGFwcyAmJgogCQkJCQkJIChjb25yZWMtPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9Q UklNQVJZIHx8IGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1VOSVFVRSkpKTsKIAkJ CQkvKiBFeHRyYWN0IG9wZXJhdG9yIE9JRHMgZnJvbSB0aGUgcGdfY29uc3RyYWludCB0dXBs ZSAqLwogCQkJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIGh0 X2NvbnN0ciwKQEAgLTIzMDksNyArMjMwOSw3IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWlu dChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCX0K IAlpbmRleC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gY29uc3RyYWludC0+bnVsbHNfbm90X2Rp c3RpbmN0OwogCWluZGV4LT5pc2NvbnN0cmFpbnQgPSB0cnVlOwotCWluZGV4LT5pc3RlbXBv cmFsID0gY29uc3RyYWludC0+d2l0aG91dF9vdmVybGFwcyAhPSBOVUxMOworCWluZGV4LT5p c3dpdGhvdXRvdmVybGFwcyA9IGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHM7CiAJaW5k ZXgtPmRlZmVycmFibGUgPSBjb25zdHJhaW50LT5kZWZlcnJhYmxlOwogCWluZGV4LT5pbml0 ZGVmZXJyZWQgPSBjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CiAKQEAgLTI1NTUsNiArMjU1 NSwxMCBAQCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWlu dCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkKIAkJCUxpc3RDZWxsICAgKmNvbHVtbnM7CiAJ CQlJbmRleEVsZW0gICppcGFyYW07CiAKKwkJCS8qIGhhbmRsZWQgYmVsb3cgKi8KKwkJCWlm IChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzICYmIGxjID09IGxpc3RfbGFzdF9jZWxs KGNvbnN0cmFpbnQtPmtleXMpKQorCQkJCWJyZWFrOworCiAJCQkvKiBNYWtlIHN1cmUgcmVm ZXJlbmNlZCBjb2x1bW4gZXhpc3RzLiAqLwogCQkJZm9yZWFjaChjb2x1bW5zLCBjeHQtPmNv bHVtbnMpCiAJCQl7CkBAIC0yNjg4LDExICsyNjkyLDIxIEBAIHRyYW5zZm9ybUluZGV4Q29u c3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0 KQogCQkgKiBBbnl0aGluZyBpbiB3aXRob3V0X292ZXJsYXBzIHNob3VsZCBiZSBpbmNsdWRl ZCwKIAkJICogYnV0IHdpdGggdGhlIG92ZXJsYXBzIG9wZXJhdG9yICgmJikgaW5zdGVhZCBv ZiBlcXVhbGl0eS4KIAkJICovCi0JCWlmIChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBz ICE9IE5VTEwpCisJCWlmIChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzKQogCQl7Ci0J CQljaGFyICp3aXRob3V0X292ZXJsYXBzX3N0ciA9IHN0clZhbChjb25zdHJhaW50LT53aXRo b3V0X292ZXJsYXBzKTsKKwkJCWNoYXIgKndpdGhvdXRfb3ZlcmxhcHNfc3RyID0gc3RyVmFs KGxsYXN0KGNvbnN0cmFpbnQtPmtleXMpKTsKIAkJCUluZGV4RWxlbSAqaXBhcmFtID0gbWFr ZU5vZGUoSW5kZXhFbGVtKTsKIAorCQkJLyoKKwkJCSAqIFRoaXMgZW5mb3JjZXMgdGhhdCB0 aGVyZSBpcyBhdCBsYXN0IG9uZSBlcXVhbGl0eSBjb2x1bW4gYmVzaWRlcworCQkJICogdGhl IFdJVEhPVVQgT1ZFUkxBUFMgY29sdW1ucy4gIFRoaXMgaXMgcGVyIFNRTCBzdGFuZGFyZC4g IFhYWAorCQkJICogRG8gd2UgbmVlZCB0aGlzPworCQkJICovCisJCQlpZiAobGlzdF9sZW5n dGgoY29uc3RyYWludC0+a2V5cykgPCAyKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiY29uc3RyYWlu dCB1c2luZyBXSVRIT1VUIE9WRVJMQVBTIG5lZWRzIGF0IGxlYXN0IHR3byBjb2x1bW5zIikp OworCiAJCQkvKgogCQkJICogSXRlcmF0ZSB0aHJvdWdoIHRoZSB0YWJsZSdzIGNvbHVtbnMK IAkJCSAqIChsaWtlIGp1c3QgYSBsaXR0bGUgYml0IGFib3ZlKS4KQEAgLTI4NTUsNyArMjg2 OSw3IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50 LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogICogYW5kIHRoZSBuZXcgb25lcy4gUmFpc2Vz IGFuIGVycm9yIGlmIHdlIGNhbid0IGZpbmQgb25lIG9yIGl0J3Mgbm90IGEgcmFuZ2UgdHlw ZS4KICAqLwogc3RhdGljIHZvaWQKLXZhbGlkYXRlV2l0aG91dE92ZXJsYXBzKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUsIGludCBsb2NhdGlvbikKK3ZhbGlkYXRl V2l0aG91dE92ZXJsYXBzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIGNvbnN0IGNoYXIgKmNv bG5hbWUsIGludCBsb2NhdGlvbikKIHsKIAkvKiBDaGVjayB0aGUgbmV3IGNvbHVtbnMgZmly c3QgaW4gY2FzZSB0aGVpciB0eXBlIGlzIGNoYW5naW5nLiAqLwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggZjJkYTI3ZWI1MC4uMjVhYzBhZDFiYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzM4LDcgKzMzOCw3IEBAIHN0YXRpYyBjaGFy ICpkZXBhcnNlX2V4cHJlc3Npb25fcHJldHR5KE5vZGUgKmV4cHIsIExpc3QgKmRwY29udGV4 dCwKIHN0YXRpYyBjaGFyICpwZ19nZXRfdmlld2RlZl93b3JrZXIoT2lkIHZpZXdvaWQsCiAJ CQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywgaW50IHdyYXBDb2x1bW4pOwogc3RhdGljIGNo YXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29sIHByZXR0eSk7 Ci1zdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1u X2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAorc3RhdGljIGludAlkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lk IHJlbElkLAogCQkJCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5mbyBi dWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxlZGVmX3dvcmtlcihPaWQgcnVsZW9pZCwg aW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfaW5kZXhkZWZfd29ya2Vy KE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBwZ19n ZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29t bWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVw LAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGNvbkZv cm0tPmNvbmluZGlkLCBmYWxzZSwgJmJ1Zik7CisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRl eF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQkv KiBhZGQgZm9yZWlnbiByZWxhdGlvbiBuYW1lICovCiAJCQkJYXBwZW5kU3RyaW5nSW5mbygm YnVmLCAiKSBSRUZFUkVOQ0VTICVzKCIsCkBAIC0yMjU4LDcgKzIyNTgsNyBAQCBwZ19nZXRf Y29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFu ZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAog CQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmZrZXkpOwogCi0JCQkJZGVjb21w aWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwgY29uRm9y bS0+Y29uaW5kaWQsIGZhbHNlLCAmYnVmKTsKKwkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4 X2FycmF5KHZhbCwgY29uRm9ybS0+Y29uZnJlbGlkLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCkBAIC0yMzQ0LDcgKzIzNDQsNyBA QCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBm dWxsQ29tbWFuZCwKIAkJCQlpZiAoIWlzbnVsbCkKIAkJCQl7CiAJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmJ1ZiwgIiAoIik7Ci0JCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhf YXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgSW52YWxpZE9pZCwgZmFsc2UsICZidWYp OworCQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29u cmVsaWQsIGZhbHNlLCAmYnVmKTsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1Ziwg JyknKTsKIAkJCQl9CiAKQEAgLTIzNTcsNyArMjM1Nyw2IEBAIHBnX2dldF9jb25zdHJhaW50 ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCU9p ZAkJCWluZGV4SWQ7CiAJCQkJaW50CQkJa2V5YXR0czsKIAkJCQlIZWFwVHVwbGUJaW5kdHVw OwotCQkJCWJvb2wJCWlzbnVsbDsKIAogCQkJCS8qIFN0YXJ0IG9mZiB0aGUgY29uc3RyYWlu dCBkZWZpbml0aW9uICovCiAJCQkJaWYgKGNvbkZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlO VF9QUklNQVJZKQpAQCAtMjM4MCwxNCArMjM3OSw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVm X3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9 IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBB bnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5KTsKIAotCQkJCS8qCi0JCQkJICogSWYgaXQgaGFz IGV4Y2x1c2lvbi1zdHlsZSBvcGVyYXRvciBPSURzCi0JCQkJICogdGhlbiBpdCB1c2VzIFdJ VEhPVVQgT1ZFUkxBUFMuCi0JCQkJICovCi0JCQkJaW5kZXhJZCA9IGNvbkZvcm0tPmNvbmlu ZGlkOwotCQkJCVN5c0NhY2hlR2V0QXR0cihDT05TVFJPSUQsIHR1cCwKLQkJCQkJCSAgQW51 bV9wZ19jb25zdHJhaW50X2NvbmV4Y2xvcCwgJmlzbnVsbCk7Ci0JCQkJa2V5YXR0cyA9IGRl Y29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgaW5k ZXhJZCwgIWlzbnVsbCwgJmJ1Zik7CisJCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5f aW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29ud2l0aG91 dG92ZXJsYXBzLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcp Jyk7CiAKQEAgLTI1ODIsNyArMjU3NCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtl cihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogICogb2Yga2V5cy4KICAq Lwogc3RhdGljIGludAotZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1 bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwgT2lkIGluZGV4SWQsCitkZWNvbXBpbGVfY29s dW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAog CQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpCiB7CiAJRGF0 dW0JICAgKmtleXM7CkBAIC0yNTk2LDE3ICsyNTg4LDE2IEBAIGRlY29tcGlsZV9jb2x1bW5f aW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBp bmRleElkLAogCWZvciAoaiA9IDA7IGogPCBuS2V5czsgaisrKQogCXsKIAkJY2hhcgkgICAq Y29sTmFtZTsKLQkJaW50CQkJY29saWQgPSBEYXR1bUdldEludDE2KGtleXNbal0pOwogCi0J CWNvbE5hbWUgPSBnZXRfYXR0bmFtZShyZWxJZCwgY29saWQsIGZhbHNlKTsKKwkJY29sTmFt ZSA9IGdldF9hdHRuYW1lKHJlbElkLCBEYXR1bUdldEludDE2KGtleXNbal0pLCBmYWxzZSk7 CiAKIAkJaWYgKGogPT0gMCkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90 ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKLQkJZWxzZSBpZiAod2l0aG91dE92ZXJsYXBzICYm IGogPT0gbktleXMgLSAxKQotCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzIFdJVEhP VVQgT1ZFUkxBUFMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAkJZWxzZQogCQkJ YXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzIiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1l KSk7CiAJfQorCWlmICh3aXRob3V0T3ZlcmxhcHMpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiIFdJVEhPVVQgT1ZFUkxBUFMiKTsKIAogCXJldHVybiBuS2V5czsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDQ1ODEwYWMzNWYuLmYzNDFjNWMz NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTU2OCwxMiArNTU2 OCwxNCBAQCBSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFwKFJlbGF0aW9uIHJlbGF0aW9u KQogLyoKICAqIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyAtLSBnZXQgaW5mbyBhYm91dCBp bmRleCdzIGV4Y2x1c2lvbiBjb25zdHJhaW50CiAgKgotICogVGhpcyBzaG91bGQgYmUgY2Fs bGVkIG9ubHkgZm9yIGFuIGluZGV4IHRoYXQgaXMga25vd24gdG8gaGF2ZSBhbgotICogYXNz b2NpYXRlZCBleGNsdXNpb24gY29uc3RyYWludCBvciB0ZW1wb3JhbCBwcmltYXJ5IGtleS91 bmlxdWUKLSAqIGNvbnN0cmFpbnQuIEl0IHJldHVybnMgYXJyYXlzIChwYWxsb2MnZCBpbiBj YWxsZXIncyBjb250ZXh0KQotICogb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRvciBPSURzLCB0 aGVpciB1bmRlcmx5aW5nIGZ1bmN0aW9ucycKLSAqIE9JRHMsIGFuZCB0aGVpciBzdHJhdGVn eSBudW1iZXJzIGluIHRoZSBpbmRleCdzIG9wY2xhc3Nlcy4gIFdlIGNhY2hlCi0gKiBhbGwg dGhpcyBpbmZvcm1hdGlvbiBzaW5jZSBpdCByZXF1aXJlcyBhIGZhaXIgYW1vdW50IG9mIHdv cmsgdG8gZ2V0LgorICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgZm9yIGFuIGluZGV4 IHRoYXQgaXMga25vd24gdG8gaGF2ZSBhbiBhc3NvY2lhdGVkCisgKiBleGNsdXNpb24gY29u c3RyYWludCBvciBwcmltYXJ5IGtleS91bmlxdWUgY29uc3RyYWludCB1c2luZyBXSVRIT1VU CisgKiBPVkVSTEFQUy4KKworICogSXQgcmV0dXJucyBhcnJheXMgKHBhbGxvYydkIGluIGNh bGxlcidzIGNvbnRleHQpIG9mIHRoZSBleGNsdXNpb24gb3BlcmF0b3IKKyAqIE9JRHMsIHRo ZWlyIHVuZGVybHlpbmcgZnVuY3Rpb25zJyBPSURzLCBhbmQgdGhlaXIgc3RyYXRlZ3kgbnVt YmVycyBpbiB0aGUKKyAqIGluZGV4J3Mgb3BjbGFzc2VzLiAgV2UgY2FjaGUgYWxsIHRoaXMg aW5mb3JtYXRpb24gc2luY2UgaXQgcmVxdWlyZXMgYSBmYWlyCisgKiBhbW91bnQgb2Ygd29y ayB0byBnZXQuCiAgKi8KIHZvaWQKIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlv biBpbmRleFJlbGF0aW9uLApAQCAtNTYzOCw3ICs1NjQwLDcgQEAgUmVsYXRpb25HZXRFeGNs dXNpb25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAKIAkJLyogV2Ugd2FudCB0aGUg ZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3duaW5nIHRoZSBpbmRleCAqLwogCQlpZiAoKGNvbmZv cm0tPmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJT04gJiYKLQkJCQkJIShjb25mb3Jt LT5jb250ZW1wb3JhbCAmJiAoCisJCQkJCSEoY29uZm9ybS0+Y29ud2l0aG91dG92ZXJsYXBz ICYmICgKIAkJCQkJCQljb25mb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfUFJJTUFSWQog CQkJCQkJCXx8IGNvbmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9VTklRVUUpKSkgfHwK IAkJCWNvbmZvcm0tPmNvbmluZGlkICE9IFJlbGF0aW9uR2V0UmVsaWQoaW5kZXhSZWxhdGlv bikpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwppbmRleCA1NGExNWNmNjRhLi5jODliNmRhOGIyIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTY5ODMsMTQgKzY5ODMsMTQgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWlfY29ubmFt ZSwKIAkJCQlpX2NvbmRlZmVycmFibGUsCiAJCQkJaV9jb25kZWZlcnJlZCwKKwkJCQlpX2Nv bndpdGhvdXRvdmVybGFwcywKIAkJCQlpX2NvbnRhYmxlb2lkLAogCQkJCWlfY29ub2lkLAog CQkJCWlfY29uZGVmLAogCQkJCWlfdGFibGVzcGFjZSwKIAkJCQlpX2luZHJlbG9wdGlvbnMs CiAJCQkJaV9pbmRzdGF0Y29scywKLQkJCQlpX2luZHN0YXR2YWxzLAotCQkJCWlfd2l0aG91 dG92ZXJsYXBzOworCQkJCWlfaW5kc3RhdHZhbHM7CiAKIAkvKgogCSAqIFdlIHdhbnQgdG8g cGVyZm9ybSBqdXN0IG9uZSBxdWVyeSBhZ2FpbnN0IHBnX2luZGV4LiAgSG93ZXZlciwgd2UK QEAgLTcwNzIsMTAgKzcwNzIsMTAgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJs ZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJaWYgKGZvdXQtPnJlbW90ZVZl cnNpb24gPj0gMTcwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJ CQkgImMuY29uZXhjbG9wIElTIE5PVCBOVUxMIEFTIHdpdGhvdXRvdmVybGFwcyAiKTsKKwkJ CQkJCQkgImMuY29ud2l0aG91dG92ZXJsYXBzICIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksCi0JCQkJCQkJICJudWxsIEFTIHdpdGhvdXRvdmVybGFwcyAiKTsK KwkJCQkJCQkgIk5VTEwgQVMgY29ud2l0aG91dG92ZXJsYXBzICIpOwogCiAJLyoKIAkgKiBU aGUgcG9pbnQgb2YgdGhlIG1lc3N5LWxvb2tpbmcgb3V0ZXIgam9pbiBpcyB0byBmaW5kIGEg Y29uc3RyYWludCB0aGF0CkBAIC03MTQzLDYgKzcxNDMsNyBAQCBnZXRJbmRleGVzKEFyY2hp dmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJaV9jb25u YW1lID0gUFFmbnVtYmVyKHJlcywgImNvbm5hbWUiKTsKIAlpX2NvbmRlZmVycmFibGUgPSBQ UWZudW1iZXIocmVzLCAiY29uZGVmZXJyYWJsZSIpOwogCWlfY29uZGVmZXJyZWQgPSBQUWZu dW1iZXIocmVzLCAiY29uZGVmZXJyZWQiKTsKKwlpX2NvbndpdGhvdXRvdmVybGFwcyA9IFBR Zm51bWJlcihyZXMsICJjb253aXRob3V0b3ZlcmxhcHMiKTsKIAlpX2NvbnRhYmxlb2lkID0g UFFmbnVtYmVyKHJlcywgImNvbnRhYmxlb2lkIik7CiAJaV9jb25vaWQgPSBQUWZudW1iZXIo cmVzLCAiY29ub2lkIik7CiAJaV9jb25kZWYgPSBQUWZudW1iZXIocmVzLCAiY29uZGVmIik7 CkBAIC03MTUwLDcgKzcxNTEsNiBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxl SW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJaV9pbmRyZWxvcHRpb25zID0gUFFm bnVtYmVyKHJlcywgImluZHJlbG9wdGlvbnMiKTsKIAlpX2luZHN0YXRjb2xzID0gUFFmbnVt YmVyKHJlcywgImluZHN0YXRjb2xzIik7CiAJaV9pbmRzdGF0dmFscyA9IFBRZm51bWJlcihy ZXMsICJpbmRzdGF0dmFscyIpOwotCWlfd2l0aG91dG92ZXJsYXBzID0gUFFmbnVtYmVyKHJl cywgIndpdGhvdXRvdmVybGFwcyIpOwogCiAJaW5keGluZm8gPSAoSW5keEluZm8gKikgcGdf bWFsbG9jKG50dXBzICogc2l6ZW9mKEluZHhJbmZvKSk7CiAKQEAgLTcyNTEsOSArNzI1MSw5 IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50 IG51bVRhYmxlcykKIAkJCQljb25zdHJpbmZvLT5jb25pbmRleCA9IGluZHhpbmZvW2pdLmRv YmouZHVtcElkOwogCQkJCWNvbnN0cmluZm8tPmNvbmRlZmVycmFibGUgPSAqKFBRZ2V0dmFs dWUocmVzLCBqLCBpX2NvbmRlZmVycmFibGUpKSA9PSAndCc7CiAJCQkJY29uc3RyaW5mby0+ Y29uZGVmZXJyZWQgPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2NvbmRlZmVycmVkKSkgPT0g J3QnOworCQkJCWNvbnN0cmluZm8tPmNvbndpdGhvdXRvdmVybGFwcyA9ICooUFFnZXR2YWx1 ZShyZXMsIGosIGlfY29ud2l0aG91dG92ZXJsYXBzKSkgPT0gJ3QnOwogCQkJCWNvbnN0cmlu Zm8tPmNvbmlzbG9jYWwgPSB0cnVlOwogCQkJCWNvbnN0cmluZm8tPnNlcGFyYXRlID0gdHJ1 ZTsKLQkJCQljb25zdHJpbmZvLT53aXRob3V0b3ZlcmxhcHMgPSAqKFBRZ2V0dmFsdWUocmVz LCBqLCBpX3dpdGhvdXRvdmVybGFwcykpID09ICd0JzsKIAogCQkJCWluZHhpbmZvW2pdLmlu ZGV4Y29uc3RyYWludCA9IGNvbnN0cmluZm8tPmRvYmouZHVtcElkOwogCQkJfQpAQCAtMTY5 NDksMjMgKzE2OTQ5LDEyIEBAIGR1bXBDb25zdHJhaW50KEFyY2hpdmUgKmZvdXQsIGNvbnN0 IENvbnN0cmFpbnRJbmZvICpjb25pbmZvKQogCQkJCQlicmVhazsKIAkJCQlhdHRuYW1lID0g Z2V0QXR0ck5hbWUoaW5ka2V5LCB0YmluZm8pOwogCi0JCQkJaWYgKGsgPT0gMCkKLQkJCQl7 Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIlcyIsCi0JCQkJCQkJCQkJZm10SWQoYXR0 bmFtZSkpOwotCQkJCX0KLQkJCQllbHNlIGlmIChrID09IGluZHhpbmZvLT5pbmRua2V5YXR0 cnMgLSAxICYmCi0JCQkJCQljb25pbmZvLT53aXRob3V0b3ZlcmxhcHMpCi0JCQkJewotCQkJ CQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiLCAlcyBXSVRIT1VUIE9WRVJMQVBTIiwKLQkJCQkJ CQkJCSAgZm10SWQoYXR0bmFtZSkpOwotCQkJCX0KLQkJCQllbHNlCi0JCQkJewotCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlcihxLCAiLCAlcyIsCi0JCQkJCQkJCQkJZm10SWQoYXR0bmFtZSkp OwotCQkJCX0KKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiJXMlcyIsCisJCQkJCQkJCSAg KGsgPT0gMCkgPyAiIiA6ICIsICIsCisJCQkJCQkJCSAgZm10SWQoYXR0bmFtZSkpOwogCQkJ fQorCQkJaWYgKGNvbmluZm8tPmNvbndpdGhvdXRvdmVybGFwcykKKwkJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxLCAiIFdJVEhPVVQgT1ZFUkxBUFMiKTsKIAogCQkJaWYgKGluZHhpbmZv LT5pbmRua2V5YXR0cnMgPCBpbmR4aW5mby0+aW5kbmF0dHJzKQogCQkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHEsICIpIElOQ0xVREUgKCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggYWQ3Y2M4 NWI4Yy4uY2JmNGI1ZTE3OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC00ODcsOSArNDg3LDkgQEAg dHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFpbnRJbmZvCiAJRHVtcElkCQljb25pbmRleDsJCS8q IGlkZW50aWZpZXMgYXNzb2NpYXRlZCBpbmRleCBpZiBhbnkgKi8KIAlib29sCQljb25kZWZl cnJhYmxlOwkvKiB0cnVlIGlmIGNvbnN0cmFpbnQgaXMgREVGRVJSQUJMRSAqLwogCWJvb2wJ CWNvbmRlZmVycmVkOwkvKiB0cnVlIGlmIGNvbnN0cmFpbnQgaXMgSU5JVElBTExZIERFRkVS UkVEICovCisJYm9vbAkJY29ud2l0aG91dG92ZXJsYXBzOwkvKiB0cnVlIGlmIHRoZSBjb25z dHJhaW50IGlzIFdJVEhPVVQgT1ZFUkxBUFMgKi8KIAlib29sCQljb25pc2xvY2FsOwkJLyog dHJ1ZSBpZiBjb25zdHJhaW50IGhhcyBsb2NhbCBkZWZpbml0aW9uICovCiAJYm9vbAkJc2Vw YXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBzZXBhcmF0ZSBpdGVtICovCi0JYm9v bAkJd2l0aG91dG92ZXJsYXBzOwkvKiB0cnVlIGlmIHRoZSBsYXN0IGVsZW0gaXMgV0lUSE9V VCBPVkVSTEFQUyAqLwogfSBDb25zdHJhaW50SW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgX3By b2NMYW5nSW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAu cGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBlYjM1ZDVlZjYw Li44NTg0YTRiNDA2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMTAxNSwx MiArMTAxNSwxMSBAQAogCQl9LAogCX0sCiAKLQknQUxURVIgVEFCTEUgT05MWSB0ZXN0X3Rh YmxlX3RwayBBREQgQ09OU1RSQUlOVCAuLi4gUFJJTUFSWSBLRVkgKC4uLiwgLi4uIFdJVEhP VVQgT1ZFUkxBUFMpJyA9PiB7CisJJ0NPTlNUUkFJTlQgUFJJTUFSWSBLRVkgLyBXSVRIT1VU IE9WRVJMQVBTJyA9PiB7CiAJCWNyZWF0ZV9zcWwgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90 ZXN0LnRlc3RfdGFibGVfdHBrICgKIAkJCQkJCQljb2wxIGludDRyYW5nZSwKIAkJCQkJCQlj b2wyIHRzdHpyYW5nZSwKLQkJCQkJCQlDT05TVFJBSU5UIHRlc3RfdGFibGVfdHBrX3BrZXkg UFJJTUFSWSBLRVkKLQkJCQkJCQkJKGNvbDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQUykpOycs CisJCQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3Rwa19wa2V5IFBSSU1BUlkgS0VZIChj b2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpKTsnLAogCQlyZWdleHAgPT4gcXIvXgogCQkJ XFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3Rwa1xFIFxuXlxzKwog CQkJXFFBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3Rwa19wa2V5IFBSSU1BUlkgS0VZIChj b2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpO1xFCkBAIC0xMDI5LDIxICsxMDI4LDE4IEBA CiAJCQklZnVsbF9ydW5zLAogCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKIAkJCXNlY3Rp b25fcG9zdF9kYXRhICA9PiAxLAotCQkJZXhjbHVkZV90ZXN0X3RhYmxlID0+IDEsCiAJCX0s CiAJCXVubGlrZSA9PiB7Ci0JCQlvbmx5X2R1bXBfdGVzdF90YWJsZSAgICAgPT4gMSwKIAkJ CWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAogCQkJb25seV9kdW1wX21lYXN1cmVt ZW50ICAgID0+IDEsCiAJCX0sCiAJfSwKIAotCSdBTFRFUiBUQUJMRSBPTkxZIHRlc3RfdGFi bGVfdHVxIEFERCBDT05TVFJBSU5UIC4uLiBVTklRVUUgKC4uLiwgLi4uIFdJVEhPVVQgT1ZF UkxBUFMpJyA9PiB7CisJJ0NPTlNUUkFJTlQgVU5JUVVFIC8gV0lUSE9VVCBPVkVSTEFQUycg PT4gewogCQljcmVhdGVfc3FsICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3Rh YmxlX3R1cSAoCiAJCQkJCQkJY29sMSBpbnQ0cmFuZ2UsCiAJCQkJCQkJY29sMiB0c3R6cmFu Z2UsCi0JCQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3R1cV91cSBVTklRVUUKLQkJCQkJ CQkJKGNvbDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQUykpOycsCisJCQkJCQkJQ09OU1RSQUlO VCB0ZXN0X3RhYmxlX3R1cV91cSBVTklRVUUgKGNvbDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQ UykpOycsCiAJCXJlZ2V4cCA9PiBxci9eCiAJCQlcUUFMVEVSIFRBQkxFIE9OTFkgZHVtcF90 ZXN0LnRlc3RfdGFibGVfdHVxXEUgXG5eXHMrCiAJCQlcUUFERCBDT05TVFJBSU5UIHRlc3Rf dGFibGVfdHVxX3VxIFVOSVFVRSAoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKTtcRQpA QCAtMTA1MiwxMCArMTA0OCw4IEBACiAJCQklZnVsbF9ydW5zLAogCQkJJWR1bXBfdGVzdF9z Y2hlbWFfcnVucywKIAkJCXNlY3Rpb25fcG9zdF9kYXRhICA9PiAxLAotCQkJZXhjbHVkZV90 ZXN0X3RhYmxlID0+IDEsCiAJCX0sCiAJCXVubGlrZSA9PiB7Ci0JCQlvbmx5X2R1bXBfdGVz dF90YWJsZSAgICAgPT4gMSwKIAkJCWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAog CQkJb25seV9kdW1wX21lYXN1cmVtZW50ICAgID0+IDEsCiAJCX0sCmRpZmYgLS1naXQgYS9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4 IDRmYmZjMDc0NjAuLjEzNTU4NTQxMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0yMzg0LDEwICsyMzg0 LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUs CiAJCQllbHNlCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwgZmFsc2UgQVMg aW5kaXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIGMy LnJlbHRhYmxlc3BhY2UiKTsKLQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKLQkJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBjb24uY29udGVtcG9yYWwiKTsKKwkJ CWlmIChwc2V0LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmYnVmLCAiLCBjb24uY29ud2l0aG91dG92ZXJsYXBzIik7CiAJCQllbHNlCi0JCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwgZmFsc2UgQVMgY29udGVtcG9yYWwiKTsKKwkJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBmYWxzZSBBUyBjb253aXRob3V0b3Zl cmxhcHMiKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJICAiXG5GUk9N IHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19jbGFzcyBjMiwgcGdfY2F0 YWxvZy5wZ19pbmRleCBpXG4iCiAJCQkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5w Z19jb25zdHJhaW50IGNvbiBPTiAoY29ucmVsaWQgPSBpLmluZHJlbGlkIEFORCBjb25pbmRp ZCA9IGkuaW5kZXhyZWxpZCBBTkQgY29udHlwZSBJTiAoJ3AnLCd1JywneCcpKVxuIgpAQCAt MjQxMCw4ICsyNDEwLDggQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAq c2NoZW1hbmFtZSwKIAkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKIAog CQkJCQkvKgotCQkJCQkgKiBJZiBleGNsdXNpb24gY29uc3RyYWludCBvciB0ZW1wb3JhbCBQ Sy9VTklRVUUgY29uc3RyYWludCwKLQkJCQkJICogcHJpbnQgdGhlIGNvbnN0cmFpbnRkZWYK KwkJCQkJICogSWYgZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3IgUEsvVU5JUVVFIGNvbnN0cmFp bnQgV0lUSE9VVAorCQkJCQkgKiBPVkVSTEFQUywgcHJpbnQgdGhlIGNvbnN0cmFpbnRkZWYK IAkJCQkJICovCiAJCQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDcpLCAi eCIpID09IDAgfHwKIAkJCQkJCQlzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDEyKSwg InQiKSA9PSAwKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDFhODU4YzM4OTcuLjBmY2NmZjlj MDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTkyLDcgKzkyLDcgQEAgZXh0ZXJuIE9pZAlp bmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogI2RlZmluZQlJTkRFWF9DT05T VFJfQ1JFQVRFX0lOSVRfREVGRVJSRUQJKDEgPDwgMikKICNkZWZpbmUJSU5ERVhfQ09OU1RS X0NSRUFURV9VUERBVEVfSU5ERVgJKDEgPDwgMykKICNkZWZpbmUJSU5ERVhfQ09OU1RSX0NS RUFURV9SRU1PVkVfT0xEX0RFUFMJKDEgPDwgNCkKLSNkZWZpbmUJSU5ERVhfQ09OU1RSX0NS RUFURV9URU1QT1JBTAkJKDEgPDwgNSkKKyNkZWZpbmUJSU5ERVhfQ09OU1RSX0NSRUFURV9X SVRIT1VUX09WRVJMQVBTICgxIDw8IDUpCiAKIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVu dGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBP aWQgb2xkSW5kZXhJZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29u c3RyYWludC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKaW5kZXgg OThhNTYwNzQxZC4uYzE3YjFlOWQzMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19jb25zdHJhaW50LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJh aW50LmgKQEAgLTEwOCwxMCArMTA4LDEwIEBAIENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2 LENvbnN0cmFpbnRSZWxhdGlvbklkKQogCWJvb2wJCWNvbm5vaW5oZXJpdDsKIAogCS8qCi0J ICogRm9yIHByaW1hcnkgYW5kIGZvcmVpZ24ga2V5cywgc2lnbmlmaWVzIHRoZSBsYXN0IGNv bHVtbiBpcyBhIHJhbmdlCi0JICogYW5kIHNob3VsZCB1c2Ugb3ZlcmxhcHMgaW5zdGVhZCBv ZiBlcXVhbHMuCisJICogRm9yIHByaW1hcnkga2V5cyBhbmQgdW5pcXVlIGNvbnN0cmFpbnRz LCBzaWduaWZpZXMgdGhlIGxhc3QgY29sdW1uIHVzZXMKKwkgKiBvdmVybGFwcyBpbnN0ZWFk IG9mIGVxdWFscy4KIAkgKi8KLQlib29sCQljb250ZW1wb3JhbDsKKwlib29sCQljb253aXRo b3V0b3ZlcmxhcHM7CiAKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxl bmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCkBAIC0xNTIsNyArMTUyLDggQEAgQ0FUQUxP RyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAKIAkvKgogCSAq IElmIGFuIGV4Y2x1c2lvbiBjb25zdHJhaW50LCB0aGUgT0lEcyBvZiB0aGUgZXhjbHVzaW9u IG9wZXJhdG9ycyBmb3IKLQkgKiBlYWNoIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludC4gQWxz byBzZXQgZm9yIHRlbXBvcmFsIHByaW1hcnkga2V5cy4KKwkgKiBlYWNoIGNvbHVtbiBvZiB0 aGUgY29uc3RyYWludC4gIEFsc28gc2V0IGZvciB1bmlxdWUgY29uc3RyYWludHMvcHJpbWFy eQorCSAqIGtleXMgdXNpbmcgV0lUSE9VVCBPVkVSTEFQUy4KIAkgKi8KIAlPaWQJCQljb25l eGNsb3BbMV0gQktJX0xPT0tVUChwZ19vcGVyYXRvcik7CiAKQEAgLTI0Miw3ICsyNDMsNyBA QCBleHRlcm4gT2lkCUNyZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJh aW50TmFtZSwKIAkJCQkJCQkJICBib29sIGNvbklzTG9jYWwsCiAJCQkJCQkJCSAgaW50IGNv bkluaENvdW50LAogCQkJCQkJCQkgIGJvb2wgY29uTm9Jbmhlcml0LAotCQkJCQkJCQkgIGJv b2wgY29uVGVtcG9yYWwsCisJCQkJCQkJCSAgYm9vbCBjb25XaXRob3V0T3ZlcmxhcHMsCiAJ CQkJCQkJCSAgYm9vbCBpc19pbnRlcm5hbCk7CiAKIGV4dGVybiBib29sIENvbnN0cmFpbnRO YW1lSXNVc2VkKENvbnN0cmFpbnRDYXRlZ29yeSBjb25DYXQsIE9pZCBvYmpJZCwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvZGVmcmVtLmgKaW5kZXggZjEwODg2ZjZjYS4uMjVmNTVjMTgxYiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvZGVmcmVtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgZXh0ZXJuIGJvb2wgQ2hlY2tJbmRl eENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkJCQkgY29uc3QgY2hhciAqYWNjZXNzTWV0 aG9kTmFtZSwKIAkJCQkJCQkJIGNvbnN0IExpc3QgKmF0dHJpYnV0ZUxpc3QsCiAJCQkJCQkJ CSBjb25zdCBMaXN0ICpleGNsdXNpb25PcE5hbWVzLAotCQkJCQkJCQkgYm9vbCBpc3RlbXBv cmFsKTsKKwkJCQkJCQkJIGJvb2wgaXNXaXRob3V0T3ZlcmxhcHMpOwogZXh0ZXJuIE9pZAlH ZXREZWZhdWx0T3BDbGFzcyhPaWQgdHlwZV9pZCwgT2lkIGFtX2lkKTsKIGV4dGVybiBPaWQJ UmVzb2x2ZU9wQ2xhc3MoY29uc3QgTGlzdCAqb3BjbGFzcywgT2lkIGF0dHJUeXBlLAogCQkJ CQkJICAgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwgT2lkIGFjY2Vzc01ldGhvZElk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmZjY1ZGIyZGIxLi4wOTg5OTBkZDE2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yNTg5LDYgKzI1ODksNyBAQCB0eXBl ZGVmIHN0cnVjdCBDb25zdHJhaW50CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OyAvKiBu dWxsIHRyZWF0bWVudCBmb3IgVU5JUVVFIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqa2V5 czsJCQkvKiBTdHJpbmcgbm9kZXMgbmFtaW5nIHJlZmVyZW5jZWQga2V5CiAJCQkJCQkJCSAq IGNvbHVtbihzKTsgYWxzbyB1c2VkIGZvciBOT1QgTlVMTCAqLworCWJvb2wJCXdpdGhvdXRf b3ZlcmxhcHM7CS8qIFdJVEhPVVQgT1ZFUkxBUFMgc3BlY2lmaWVkICovCiAJTGlzdAkgICAq aW5jbHVkaW5nOwkJLyogU3RyaW5nIG5vZGVzIG5hbWluZyByZWZlcmVuY2VkIG5vbmtleQog CQkJCQkJCQkgKiBjb2x1bW4ocykgKi8KIApAQCAtMjYxNyw5ICsyNjE4LDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgQ29uc3RyYWludAogCU9pZAkJCW9sZF9wa3RhYmxlX29pZDsJLyogcGdfY29u c3RyYWludC5jb25mcmVsaWQgb2YgbXkgZm9ybWVyCiAJCQkJCQkJCQkgKiBzZWxmICovCiAK LQkvKiBGaWVsZHMgdXNlZCBmb3IgdGVtcG9yYWwgUFJJTUFSWSBLRVkgYW5kIEZPUkVJR04g S0VZIGNvbnN0cmFpbnRzOiAqLwotCU5vZGUJICAgKndpdGhvdXRfb3ZlcmxhcHM7IC8qIFN0 cmluZyBub2RlIG5hbWluZyByYW5nZSBjb2x1bW4gKi8KLQogCS8qIEZpZWxkcyB1c2VkIGZv ciBjb25zdHJhaW50cyB0aGF0IGFsbG93IGEgTk9UIFZBTElEIHNwZWNpZmljYXRpb24gKi8K IAlib29sCQlza2lwX3ZhbGlkYXRpb247CS8qIHNraXAgdmFsaWRhdGlvbiBvZiBleGlzdGlu ZyByb3dzPyAqLwogCWJvb2wJCWluaXRpYWxseV92YWxpZDsJLyogbWFyayB0aGUgbmV3IGNv bnN0cmFpbnQgYXMgdmFsaWQ/ICovCkBAIC0zMjIxLDcgKzMyMTksNyBAQCB0eXBlZGVmIHN0 cnVjdCBJbmRleFN0bXQKIAlib29sCQludWxsc19ub3RfZGlzdGluY3Q7IC8qIG51bGwgdHJl YXRtZW50IGZvciBVTklRVUUgY29uc3RyYWludHMgKi8KIAlib29sCQlwcmltYXJ5OwkJLyog aXMgaW5kZXggYSBwcmltYXJ5IGtleT8gKi8KIAlib29sCQlpc2NvbnN0cmFpbnQ7CS8qIGlz IGl0IGZvciBhIHBrZXkvdW5pcXVlIGNvbnN0cmFpbnQ/ICovCi0JYm9vbAkJaXN0ZW1wb3Jh bDsJCS8qIGlzIGl0IGZvciBhIHRlbXBvcmFsIHBrZXk/ICovCisJYm9vbAkJaXN3aXRob3V0 b3ZlcmxhcHM7CS8qIGlzIHRoZSBjb25zdHJhaW50IFdJVEhPVVQgT1ZFUkxBUFM/ICovCiAJ Ym9vbAkJZGVmZXJyYWJsZTsJCS8qIGlzIHRoZSBjb25zdHJhaW50IERFRkVSUkFCTEU/ICov CiAJYm9vbAkJaW5pdGRlZmVycmVkOwkvKiBpcyB0aGUgY29uc3RyYWludCBJTklUSUFMTFkg REVGRVJSRUQ/ICovCiAJYm9vbAkJdHJhbnNmb3JtZWQ7CS8qIHRydWUgd2hlbiB0cmFuc2Zv cm1JbmRleFN0bXQgaXMgZmluaXNoZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDM2YWViYzQ1MmYuLmU1NjU0OTBh MzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJs YXBzLm91dApAQCAtMTEsOSArMTEsNyBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgK IAl2YWxpZF9hdCB0c3JhbmdlLAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1B UlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQogKTsKLUVSUk9SOiAgc3ludGF4 IGVycm9yIGF0IG9yIG5lYXIgIldJVEhPVVQiCi1MSU5FIDM6ICBDT05TVFJBSU5UIHRlbXBv cmFsX3JuZ19wayBQUklNQVJZIEtFWSAodmFsaWRfYXQgV0lUSE9VVCBPVi4uLgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K0VSUk9SOiAgY29uc3RyYWludCB1c2luZyBXSVRIT1VUIE9WRVJMQVBTIG5lZWRzIGF0IGxl YXN0IHR3byBjb2x1bW5zCiAtLSBQSyB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklPRCB0aGF0 IGlzbid0IHRoZXJlOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCiAJaWQgSU5URUdF UiwKQEAgLTEwNiw5ICsxMDQsNyBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCiAJ dmFsaWRfYXQgdHNyYW5nZSwKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVF ICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQogKTsKLUVSUk9SOiAgc3ludGF4IGVycm9y IGF0IG9yIG5lYXIgIldJVEhPVVQiCi1MSU5FIDM6ICBDT05TVFJBSU5UIHRlbXBvcmFsX3Ju ZzNfdXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQS4uLgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorRVJST1I6ICBj b25zdHJhaW50IHVzaW5nIFdJVEhPVVQgT1ZFUkxBUFMgbmVlZHMgYXQgbGVhc3QgdHdvIGNv bHVtbnMKIC0tIFVOSVFVRSB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklPRCB0aGF0IGlzbid0 IHRoZXJlOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAogCWlkIElOVEVHRVIsCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAxNjY4MzE0OGQyLi5iMDhhYWFl NDRiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTI4LDcgKzI4LDcg QEAgdGVzdDogc3RyaW5ncyBtZDUgbnVtZXJvbG9neSBwb2ludCBsc2VnIGxpbmUgYm94IHBh dGggcG9seWdvbiBjaXJjbGUgZGF0ZSB0aW1lIHQKICMgZ2VvbWV0cnkgZGVwZW5kcyBvbiBw b2ludCwgbHNlZywgbGluZSwgYm94LCBwYXRoLCBwb2x5Z29uLCBjaXJjbGUKICMgaG9yb2xv Z3kgZGVwZW5kcyBvbiBkYXRlLCB0aW1lLCB0aW1ldHosIHRpbWVzdGFtcCwgdGltZXN0YW1w dHosIGludGVydmFsCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IGdlb21ldHJ5IGhvcm9sb2d5IHRz dHlwZXMgcmVnZXggdHlwZV9zYW5pdHkgb3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBjb21tZW50 cyBleHByZXNzaW9ucyB1bmljb2RlIHhpZCBtdmNjIHdpdGhvdXRfb3ZlcmxhcHMKK3Rlc3Q6 IGdlb21ldHJ5IGhvcm9sb2d5IHRzdHlwZXMgcmVnZXggdHlwZV9zYW5pdHkgb3ByX3Nhbml0 eSBtaXNjX3Nhbml0eSBjb21tZW50cyBleHByZXNzaW9ucyB1bmljb2RlIHhpZCBtdmNjCiAK ICMgLS0tLS0tLS0tLQogIyBMb2FkIGh1Z2UgYW1vdW50cyBvZiBkYXRhCkBAIC03OCw3ICs3 OCw3IEBAIHRlc3Q6IGJyaW5fYmxvb20gYnJpbl9tdWx0aQogIyBwc3FsIGRlcGVuZHMgb24g Y3JlYXRlX2FtCiAjIGFtdXRpbHMgZGVwZW5kcyBvbiBnZW9tZXRyeSwgY3JlYXRlX2luZGV4 X3NwZ2lzdCwgaGFzaF9pbmRleCwgYnJpbgogIyAtLS0tLS0tLS0tCi10ZXN0OiBjcmVhdGVf dGFibGVfbGlrZSBhbHRlcl9nZW5lcmljIGFsdGVyX29wZXJhdG9yIG1pc2MgYXN5bmMgZGJz aXplIG1lcmdlIG1pc2NfZnVuY3Rpb25zIHN5c3ZpZXdzIHRzcmYgdGlkIHRpZHNjYW4gdGlk cmFuZ2VzY2FuIGNvbGxhdGUuaWN1LnV0ZjggaW5jcmVtZW50YWxfc29ydCBjcmVhdGVfcm9s ZQordGVzdDogY3JlYXRlX3RhYmxlX2xpa2UgYWx0ZXJfZ2VuZXJpYyBhbHRlcl9vcGVyYXRv ciBtaXNjIGFzeW5jIGRic2l6ZSBtZXJnZSBtaXNjX2Z1bmN0aW9ucyBzeXN2aWV3cyB0c3Jm IHRpZCB0aWRzY2FuIHRpZHJhbmdlc2NhbiBjb2xsYXRlLmljdS51dGY4IGluY3JlbWVudGFs X3NvcnQgY3JlYXRlX3JvbGUgd2l0aG91dF9vdmVybGFwcwogCiAjIGNvbGxhdGUuKi51dGY4 IHRlc3RzIGNhbm5vdCBiZSBydW4gaW4gcGFyYWxsZWwgd2l0aCBlYWNoIG90aGVyCiB0ZXN0 OiBydWxlcyBwc3FsIHBzcWxfY3Jvc3N0YWIgYW11dGlscyBzdGF0c19leHQgY29sbGF0ZS5s aW51eC51dGY4IGNvbGxhdGUud2luZG93cy53aW4xMjUyCi0tIAoyLjQyLjAKCg== --------------0pyo08LoOaErEsegt7BcrHWt--