Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n2uDc-00076h-4M for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Dec 2021 12:07:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n2uDa-0007ig-RL for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Dec 2021 12:07:38 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n2uDZ-0007hv-5B for pgsql-hackers@lists.postgresql.org; Thu, 30 Dec 2021 12:07:38 +0000 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n2uDS-0002Ha-DD for pgsql-hackers@postgresql.org; Thu, 30 Dec 2021 12:07:35 +0000 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id 4EAAF3200929; Thu, 30 Dec 2021 07:07:27 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Thu, 30 Dec 2021 07:07:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=/4qArp 219on1Zvx65St4d2Ohk240RhdKMqrdvpC0NwA=; b=lxUbPnvsIVJGPfJd8aMdlL sE0TzAJmx1LgsbFQOjMkdxi0tJOVON135v0m6o++c1A217XtffXU2pDNb1+D7NcP pzfHbfJcy7HOY3Xy4xOm6zTJOyrqwPlSL4TvoHhH6eAsjs9QS5I1y2ZEwX5Tv1wx aub2ItLt5U9VmT0GM1Pj7V2Xq2iJdgi32bqS6mZyh4saW3uUd35eYNvLqLTllMbi pe6iCrIBl7PVtOrxHGvFaS/7lHX6k1mci6++Vg618oPS1H461rZmKo0PA/n2rw+s d93FofI8mv7gsUYKuTIecnt8qNfcZyrvRKwNWFOk4UzmvICFB7ZSqfvRSzk7lH2w == X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvuddruddvfedgfeeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuhffvfhgjsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvghnthgvrh hprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrhhnpeekteetfeehvefhvdeltdef geeluedtkeekkeevieefueffveejueejheffjeeijeenucevlhhushhtvghrufhiiigvpe dtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghuthes vghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 30 Dec 2021 07:07:23 -0500 (EST) Content-Type: multipart/mixed; boundary="------------pH4xY8tjatg26w0jFjB3375u" Message-ID: <525ef44f-52bf-505f-a491-07835d039424@enterprisedb.com> Date: Thu, 30 Dec 2021 13:07:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 Subject: Re: ICU for global collation Content-Language: en-US From: Peter Eisentraut To: pgsql-hackers References: <374f8048-9d87-462c-a8aa-d02ffca6525f@manitou-mail.org> Cc: Daniel Verite In-Reply-To: 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. --------------pH4xY8tjatg26w0jFjB3375u Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit There were a few inquiries about this topic recently, so I dug up the old thread and patch. What we got stuck on last time was that we can't just swap out all locale support in a database for ICU. We still need to set the usual locale environment, otherwise some things that are not ICU aware will break or degrade. I had initially anticipated fixing that by converting everything that uses libc locales to ICU. But that turned out to be tedious and ultimately not very useful as far as the user-facing result is concerned, so I gave up. So this is a different approach: If you choose ICU as the default locale for a database, you still need to specify lc_ctype and lc_collate settings, as before. Unlike in the previous patch, where the ICU collation name was written in datcollate, there is now a third column (daticucoll), so we can store all three values. This fixes the described problem. Other than that, once you get all the initial settings right, it basically just works: The places that have ICU support now will use a database-wide ICU collation if appropriate, the places that don't have ICU support continue to use the global libc locale settings. I changed the datcollate, datctype, and the new daticucoll fields to type text (from name). That way, the daticucoll field can be set to null if it's not applicable. Also, the limit of 63 characters can actually be a problem if you want to use some combination of the options that ICU locales offer. And for less extreme uses, having variable-length fields will save some storage, since typical locale names are much shorter. For the same reasons and to keep things consistent, I also changed the analogous pg_collation fields like that. This also removes some weird code that has to check that colcollate and colctype have to be the same for ICU, so it's overall cleaner. --------------pH4xY8tjatg26w0jFjB3375u Content-Type: text/plain; charset=UTF-8; name="v3-0001-Add-option-to-use-ICU-as-global-collation-provide.patch" Content-Disposition: attachment; filename*0="v3-0001-Add-option-to-use-ICU-as-global-collation-provide.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0ZWI5ZmJhYzIzOGMxYWJmNDgxZmE0MzQzMWVjYzIyZTc4MmE1MjkwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAzMCBEZWMgMjAyMSAxMjo0NzoyNCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjNdIEFkZCBvcHRpb24gdG8gdXNlIElDVSBhcyBnbG9iYWwgY29sbGF0aW9u IHByb3ZpZGVyCgpUaGlzIGFkZHMgdGhlIG9wdGlvbiB0byB1c2UgSUNVIGFzIHRoZSBkZWZh dWx0IGNvbGxhdGlvbiBwcm92aWRlciBmb3IKZWl0aGVyIHRoZSB3aG9sZSBjbHVzdGVyIG9y IGEgZGF0YWJhc2UuICBOZXcgb3B0aW9ucyBmb3IgaW5pdGRiLApjcmVhdGVkYiwgYW5kIENS RUFURSBEQVRBQkFTRSBhcmUgdXNlZCB0byBzZWxlY3QgdGhpcy4KCkRpc2N1c3Npb246IGh0 dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC81ZTc1NmRkNi0wZTkx LWQ3NzgtOTZmZC1iMWJjYjA2YzE2MWElNDAybmRxdWFkcmFudC5jb20KLS0tCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIGRvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFiYXNlLnNnbWwgICAgICAgICB8ICAxNiArKwogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVkYi5zZ21sICAgICAgICAgICAgICAgIHwgICA5ICsKIGRv Yy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwgICAgICAgICAgICAgICAgICB8ICAyMyArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGZ1bmMuYyAgICAgICAgICAgIHwgIDE4ICst CiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbGxhdGlvbi5jICAgICAgICAgICAgfCAgMjQg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyAgICAgICAgICB8IDEy MCArKysrKysrLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMgICAgICAg ICAgICAgfCAgOTMgKysrKysrLS0KIHNyYy9iYWNrZW5kL3JlZ2V4L3JlZ2NfcGdfbG9jYWxl LmMgICAgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRp bmcuYyAgICAgICAgICAgIHwgICA2ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlLmMg ICAgICAgICAgICAgICAgICB8ICAyMCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2Vf c3VwcG9ydC5jICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19s b2NhbGUuYyAgICAgICAgICAgICB8IDIyMyArKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC92YXJjaGFyLmMgICAgICAgICAgICAgICB8ICAyMiArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyAgICAgICAgICAgICAgIHwgIDI2ICstCiBzcmMv YmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAgICAgfCAgMzcgKystCiBz cmMvYmluL2luaXRkYi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDYyICsr KystCiBzcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwgICAgICAgICAgICAgICAgfCAg MTggKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8 ICAxNiArKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAg IHwgIDIzICstCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIHNyYy9iaW4vc2NyaXB0cy9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArCiBzcmMvYmluL3NjcmlwdHMvY3JlYXRlZGIuYyAgICAgICAgICAgICAg ICAgICAgfCAgIDkgKwogc3JjL2Jpbi9zY3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsICAgICAg ICAgICAgIHwgIDIwICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5kYXQg ICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmgg ICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kYXRhYmFzZS5k YXQgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RhdGFiYXNl LmggICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5o ICAgICAgICAgICAgICAgICB8ICAgNiArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRl LmljdS51dGY4Lm91dCAgICAgfCAgMTAgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxh dGUuaWN1LnV0Zjguc3FsICAgICB8ICAgOCArLQogMzIgZmlsZXMgY2hhbmdlZCwgNjY1IGlu c2VydGlvbnMoKyksIDE5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDAz ZTI1MzdiMDcuLjg5ZTcyNzkwMzAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0yMzY4LDcgKzIz NjgsNyBAQCA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfY29sbGF0aW9uPC9zdHJ1Y3RuYW1lPiBD b2x1bW5zPC90aXRsZT4KIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAg ICA8c3RydWN0ZmllbGQ+Y29sbGNvbGxhdGU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90 eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb2xsY29sbGF0ZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPnRleHQ8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICA8 c3ltYm9sPkxDX0NPTExBVEU8L3N5bWJvbD4gZm9yIHRoaXMgY29sbGF0aW9uIG9iamVjdApA QCAtMjM3NywxMyArMjM3NywyMiBAQCA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfY29sbGF0aW9u PC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KIAogICAgICA8cm93PgogICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+Y29sbGN0eXBlPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y29sbGN0eXBlPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJh PgogICAgICAgIDxzeW1ib2w+TENfQ1RZUEU8L3N5bWJvbD4gZm9yIHRoaXMgY29sbGF0aW9u IG9iamVjdAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb2xsaWN1Y29s bDwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBJQ1UgY29sbGF0aW9uIHN0cmluZworICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgog ICAgICAgIDxzdHJ1Y3RmaWVsZD5jb2xsdmVyc2lvbjwvc3RydWN0ZmllbGQ+IDx0eXBlPnRl eHQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9kYXRhYmFz ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZGF0YWJhc2Uuc2dtbAppbmRleCA0 MWNiNDA2OGVjLi43Mzc0YTlmYWQ1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9kYXRhYmFzZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFi YXNlLnNnbWwKQEAgLTI4LDYgKzI4LDcgQEAKICAgICAgICAgICAgWyBMT0NBTEUgWz1dIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sb2NhbGU8L3JlcGxhY2VhYmxlPiBdCiAg ICAgICAgICAgIFsgTENfQ09MTEFURSBbPV0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmxjX2NvbGxhdGU8L3JlcGxhY2VhYmxlPiBdCiAgICAgICAgICAgIFsgTENfQ1RZUEUg Wz1dIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sY19jdHlwZTwvcmVwbGFjZWFi bGU+IF0KKyAgICAgICAgICAgWyBDT0xMQVRJT05fUFJPVklERVIgWz1dIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb2xsYXRpb25fcHJvdmlkZXI8L3JlcGxhY2VhYmxlPiBd CiAgICAgICAgICAgIFsgVEFCTEVTUEFDRSBbPV0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlc3BhY2VfbmFtZTwvcmVwbGFjZWFibGU+IF0KICAgICAgICAgICAgWyBB TExPV19DT05ORUNUSU9OUyBbPV0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFs bG93Y29ubjwvcmVwbGFjZWFibGU+IF0KICAgICAgICAgICAgWyBDT05ORUNUSU9OIExJTUlU IFs9XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmxpbWl0PC9yZXBsYWNl YWJsZT4gXQpAQCAtMTU3LDYgKzE1OCwyMSBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+ CiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZT5j b2xsYXRpb25fcHJvdmlkZXI8L3JlcGxhY2VhYmxlPjwvdGVybT4KKworICAgICAgPGxpc3Rp dGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZpZXMgdGhlIHByb3ZpZGVyIHRv IHVzZSBmb3IgdGhlIGRlZmF1bHQgY29sbGF0aW9uIGluIHRoaXMKKyAgICAgICAgZGF0YWJh c2UuICBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorICAgICAgICA8bGl0ZXJhbD5pY3U8L2xpdGVy YWw+LDxpbmRleHRlcm0+PHByaW1hcnk+SUNVPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAg ICAgICA8bGl0ZXJhbD5saWJjPC9saXRlcmFsPi4gIDxsaXRlcmFsPmxpYmM8L2xpdGVyYWw+ IGlzIHRoZSBkZWZhdWx0LiAgVGhlCisgICAgICAgIGF2YWlsYWJsZSBjaG9pY2VzIGRlcGVu ZCBvbiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbmQgYnVpbGQgb3B0aW9ucy4KKyAgICAgICA8 L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAg ICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlc3BhY2VfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgICAgPGxp c3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVkYi5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVkYi5zZ21sCmluZGV4IDg2NDczNDU1YzkuLjRiMDcz NjNmY2MgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlZGIuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwKQEAgLTgzLDYgKzgzLDE1IEBAIDx0 aXRsZT5PcHRpb25zPC90aXRsZT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlz dGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi0t Y29sbGF0aW9uLXByb3ZpZGVyPXs8bGl0ZXJhbD5saWJjPC9saXRlcmFsPnw8bGl0ZXJhbD5p Y3U8L2xpdGVyYWw+fTwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBjb2xsYXRpb24gcHJvdmlkZXIgZm9y IHRoZSBkYXRhYmFzZSdzIGRlZmF1bHQgY29sbGF0aW9uLgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0 ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi1EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CiAgICAg ICA8dGVybT48b3B0aW9uPi0tdGFibGVzcGFjZT08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVzcGFjZTwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv aW5pdGRiLnNnbWwKaW5kZXggOGY3MWM3Yzk2Mi4uNzc2MThkOWE3YSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2lu aXRkYi5zZ21sCkBAIC0xNjYsNiArMTY2LDE4IEBAIDx0aXRsZT5PcHRpb25zPC90aXRsZT4K ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi0tY29sbGF0aW9uLXByb3ZpZGVyPXs8 bGl0ZXJhbD5saWJjPC9saXRlcmFsPnw8bGl0ZXJhbD5pY3U8L2xpdGVyYWw+fTwvb3B0aW9u PjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhp cyBvcHRpb24gc2V0cyB0aGUgY29sbGF0aW9uIHByb3ZpZGVyIGZvciBkYXRhYmFzZXMgY3Jl YXRlZCBpbiB0aGUKKyAgICAgICAgbmV3IGNsdXN0ZXIuICBJdCBjYW4gYmUgb3ZlcnJpZGRl biBpbiB0aGUgPGNvbW1hbmQ+Q1JFQVRFCisgICAgICAgIERBVEFCQVNFPC9jb21tYW5kPiBj b21tYW5kIHdoZW4gbmV3IGRhdGFiYXNlcyBhcmUgc3Vic2VxdWVudGx5CisgICAgICAgIGNy ZWF0ZWQuICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5saWJjPC9saXRlcmFsPi4KKyAgICAg ICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwog ICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4tRCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT48L29wdGlvbj48 L3Rlcm0+CiAgICAgICA8dGVybT48b3B0aW9uPi0tcGdkYXRhPTxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4K QEAgLTIxMCw2ICsyMjIsMTcgQEAgPHRpdGxlPk9wdGlvbnM8L3RpdGxlPgogICAgICAgPC9s aXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgIDx0ZXJtPjxvcHRpb24+LS1pY3UtbG9jYWxlPTxyZXBsYWNlYWJsZT5sb2NhbGU8 L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBJQ1UgbG9jYWxlIGlmIHRoZSBJQ1Ug Y29sbGF0aW9uIHByb3ZpZGVyIGlzIHVzZWQuICBJZgorICAgICAgICB0aGlzIGlzIG5vdCBz cGVjaWZpZWQsIHRoZSB2YWx1ZSBmcm9tIHRoZSA8b3B0aW9uPi0tbG9jYWxlPC9vcHRpb24+ CisgICAgICAgIG9wdGlvbiBpcyB1c2VkLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlz dGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9 ImFwcC1pbml0ZGItZGF0YS1jaGVja3N1bXMiIHhyZWZsYWJlbD0iZGF0YSBjaGVja3N1bXMi PgogICAgICAgPHRlcm0+PG9wdGlvbj4tazwvb3B0aW9uPjwvdGVybT4KICAgICAgIDx0ZXJt PjxvcHRpb24+LS1kYXRhLWNoZWNrc3Vtczwvb3B0aW9uPjwvdGVybT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hmdW5jLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoZnVuYy5jCmluZGV4IDI0MjMzMzkyMGUuLjZjMjk4MTYxOTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hmdW5jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaGZ1bmMuYwpAQCAtMjc4LDggKzI3OCwxMyBAQCBoYXNo dGV4dChQR19GVU5DVElPTl9BUkdTKQogCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1p bmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3Igc3RyaW5nIGhhc2hpbmciKSwKIAkJCQkg ZXJyaGludCgiVXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNvbGxhdGlvbiBl eHBsaWNpdGx5LiIpKSk7CiAKLQlpZiAoIWxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpICYmIGNv bGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCi0JCW15bG9jYWxlID0gcGdfbmV3bG9j YWxlX2Zyb21fY29sbGF0aW9uKGNvbGxpZCk7CisJaWYgKCFsY19jb2xsYXRlX2lzX2MoY29s bGlkKSkKKwl7CisJCWlmIChjb2xsaWQgIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQorCQkJ bXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKKwkJZWxz ZSBpZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJ CW15bG9jYWxlID0gJmRlZmF1bHRfbG9jYWxlOworCX0KIAogCWlmICghbXlsb2NhbGUgfHwg bXlsb2NhbGUtPmRldGVybWluaXN0aWMpCiAJewpAQCAtMzM0LDggKzMzOSwxMyBAQCBoYXNo dGV4dGV4dGVuZGVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJIGVycm1zZygiY291bGQgbm90 IGRldGVybWluZSB3aGljaCBjb2xsYXRpb24gdG8gdXNlIGZvciBzdHJpbmcgaGFzaGluZyIp LAogCQkJCSBlcnJoaW50KCJVc2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29s bGF0aW9uIGV4cGxpY2l0bHkuIikpKTsKIAotCWlmICghbGNfY29sbGF0ZV9pc19jKGNvbGxp ZCkgJiYgY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKLQkJbXlsb2NhbGUgPSBw Z19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKKwlpZiAoIWxjX2NvbGxhdGVf aXNfYyhjb2xsaWQpKQorCXsKKwkJaWYgKGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9P SUQpCisJCQlteWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQp OworCQllbHNlIGlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xMUFJPVklERVJf SUNVKQorCQkJbXlsb2NhbGUgPSAmZGVmYXVsdF9sb2NhbGU7CisJfQogCiAJaWYgKCFteWxv Y2FsZSB8fCBteWxvY2FsZS0+ZGV0ZXJtaW5pc3RpYykKIAl7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX2NvbGxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19jb2xsYXRpb24uYwppbmRleCAxOTA2OGI2NTJhLi5jMzM2NWU5OWMzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbGxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfY29sbGF0aW9uLmMKQEAgLTQ5LDYgKzQ5LDcgQEAgQ29sbGF0aW9uQ3Jl YXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwKIAkJCQlib29s IGNvbGxpc2RldGVybWluaXN0aWMsCiAJCQkJaW50MzIgY29sbGVuY29kaW5nLAogCQkJCWNv bnN0IGNoYXIgKmNvbGxjb2xsYXRlLCBjb25zdCBjaGFyICpjb2xsY3R5cGUsCisJCQkJY29u c3QgY2hhciAqY29sbGljdWNvbGwsCiAJCQkJY29uc3QgY2hhciAqY29sbHZlcnNpb24sCiAJ CQkJYm9vbCBpZl9ub3RfZXhpc3RzLAogCQkJCWJvb2wgcXVpZXQpCkBAIC01OCw5ICs1OSw3 IEBAIENvbGxhdGlvbkNyZWF0ZShjb25zdCBjaGFyICpjb2xsbmFtZSwgT2lkIGNvbGxuYW1l c3BhY2UsCiAJSGVhcFR1cGxlCXR1cDsKIAlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX2NvbGxh dGlvbl07CiAJYm9vbAkJbnVsbHNbTmF0dHNfcGdfY29sbGF0aW9uXTsKLQlOYW1lRGF0YQlu YW1lX25hbWUsCi0JCQkJbmFtZV9jb2xsYXRlLAotCQkJCW5hbWVfY3R5cGU7CisJTmFtZURh dGEJbmFtZV9uYW1lOwogCU9pZAkJCW9pZDsKIAlPYmplY3RBZGRyZXNzIG15c2VsZiwKIAkJ CQlyZWZlcmVuY2VkOwpAQCAtNjgsOCArNjcsNyBAQCBDb2xsYXRpb25DcmVhdGUoY29uc3Qg Y2hhciAqY29sbG5hbWUsIE9pZCBjb2xsbmFtZXNwYWNlLAogCUFzc2VydEFyZyhjb2xsbmFt ZSk7CiAJQXNzZXJ0QXJnKGNvbGxuYW1lc3BhY2UpOwogCUFzc2VydEFyZyhjb2xsb3duZXIp OwotCUFzc2VydEFyZyhjb2xsY29sbGF0ZSk7Ci0JQXNzZXJ0QXJnKGNvbGxjdHlwZSk7CisJ QXNzZXJ0QXJnKChjb2xsY29sbGF0ZSAmJiBjb2xsY3R5cGUpIHx8IGNvbGxpY3Vjb2xsKTsK IAogCS8qCiAJICogTWFrZSBzdXJlIHRoZXJlIGlzIG5vIGV4aXN0aW5nIGNvbGxhdGlvbiBv ZiBzYW1lIG5hbWUgJiBlbmNvZGluZy4KQEAgLTE2MywxMCArMTYxLDE4IEBAIENvbGxhdGlv bkNyZWF0ZShjb25zdCBjaGFyICpjb2xsbmFtZSwgT2lkIGNvbGxuYW1lc3BhY2UsCiAJdmFs dWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxwcm92aWRlciAtIDFdID0gQ2hhckdldERhdHVt KGNvbGxwcm92aWRlcik7CiAJdmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxpc2RldGVy bWluaXN0aWMgLSAxXSA9IEJvb2xHZXREYXR1bShjb2xsaXNkZXRlcm1pbmlzdGljKTsKIAl2 YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbGVuY29kaW5nIC0gMV0gPSBJbnQzMkdldERh dHVtKGNvbGxlbmNvZGluZyk7Ci0JbmFtZXN0cmNweSgmbmFtZV9jb2xsYXRlLCBjb2xsY29s bGF0ZSk7Ci0JdmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlIC0gMV0gPSBO YW1lR2V0RGF0dW0oJm5hbWVfY29sbGF0ZSk7Ci0JbmFtZXN0cmNweSgmbmFtZV9jdHlwZSwg Y29sbGN0eXBlKTsKLQl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbGN0eXBlIC0gMV0g PSBOYW1lR2V0RGF0dW0oJm5hbWVfY3R5cGUpOworCWlmIChjb2xsY29sbGF0ZSkKKwkJdmFs dWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlIC0gMV0gPSBDU3RyaW5nR2V0VGV4 dERhdHVtKGNvbGxjb2xsYXRlKTsKKwllbHNlCisJCW51bGxzW0FudW1fcGdfY29sbGF0aW9u X2NvbGxjb2xsYXRlIC0gMV0gPSB0cnVlOworCWlmIChjb2xsY3R5cGUpCisJCXZhbHVlc1tB bnVtX3BnX2NvbGxhdGlvbl9jb2xsY3R5cGUgLSAxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0o Y29sbGN0eXBlKTsKKwllbHNlCisJCW51bGxzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxjdHlw ZSAtIDFdID0gdHJ1ZTsKKwlpZiAoY29sbGljdWNvbGwpCisJCXZhbHVlc1tBbnVtX3BnX2Nv bGxhdGlvbl9jb2xsaWN1Y29sbCAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShjb2xsaWN1 Y29sbCk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xsaWN1Y29sbCAt IDFdID0gdHJ1ZTsKIAlpZiAoY29sbHZlcnNpb24pCiAJCXZhbHVlc1tBbnVtX3BnX2NvbGxh dGlvbl9jb2xsdmVyc2lvbiAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShjb2xsdmVyc2lv bik7CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9u Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCmluZGV4IDUz ZmM1NzlmMzcuLjdkZDEyNTcwNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvbGxhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25j bWRzLmMKQEAgLTY1LDYgKzY1LDcgQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAlE ZWZFbGVtICAgICp2ZXJzaW9uRWwgPSBOVUxMOwogCWNoYXIJICAgKmNvbGxjb2xsYXRlID0g TlVMTDsKIAljaGFyCSAgICpjb2xsY3R5cGUgPSBOVUxMOworCWNoYXIJICAgKmNvbGxpY3Vj b2xsID0gTlVMTDsKIAljaGFyCSAgICpjb2xscHJvdmlkZXJzdHIgPSBOVUxMOwogCWJvb2wJ CWNvbGxpc2RldGVybWluaXN0aWMgPSB0cnVlOwogCWludAkJCWNvbGxlbmNvZGluZyA9IDA7 CkBAIC0xMjksMTggKzEzMCwzNiBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCXsK IAkJT2lkCQkJY29sbGlkOwogCQlIZWFwVHVwbGUJdHA7CisJCURhdHVtCQlkYXR1bTsKKwkJ Ym9vbAkJaXNudWxsOwogCiAJCWNvbGxpZCA9IGdldF9jb2xsYXRpb25fb2lkKGRlZkdldFF1 YWxpZmllZE5hbWUoZnJvbUVsKSwgZmFsc2UpOwogCQl0cCA9IFNlYXJjaFN5c0NhY2hlMShD T0xMT0lELCBPYmplY3RJZEdldERhdHVtKGNvbGxpZCkpOwogCQlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHApKQogCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNv bGxhdGlvbiAldSIsIGNvbGxpZCk7CiAKLQkJY29sbGNvbGxhdGUgPSBwc3RyZHVwKE5hbWVT dHIoKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxjb2xsYXRlKSk7 Ci0JCWNvbGxjdHlwZSA9IHBzdHJkdXAoTmFtZVN0cigoKEZvcm1fcGdfY29sbGF0aW9uKSBH RVRTVFJVQ1QodHApKS0+Y29sbGN0eXBlKSk7CiAJCWNvbGxwcm92aWRlciA9ICgoRm9ybV9w Z19jb2xsYXRpb24pIEdFVFNUUlVDVCh0cCkpLT5jb2xscHJvdmlkZXI7CiAJCWNvbGxpc2Rl dGVybWluaXN0aWMgPSAoKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApKS0+Y29s bGlzZGV0ZXJtaW5pc3RpYzsKIAkJY29sbGVuY29kaW5nID0gKChGb3JtX3BnX2NvbGxhdGlv bikgR0VUU1RSVUNUKHRwKSktPmNvbGxlbmNvZGluZzsKIAorCQlkYXR1bSA9IFN5c0NhY2hl R2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGNvbGxhdGUsICZp c251bGwpOworCQlpZiAoIWlzbnVsbCkKKwkJCWNvbGxjb2xsYXRlID0gVGV4dERhdHVtR2V0 Q1N0cmluZyhkYXR1bSk7CisJCWVsc2UKKwkJCWNvbGxjb2xsYXRlID0gTlVMTDsKKworCQlk YXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25f Y29sbGN0eXBlLCAmaXNudWxsKTsKKwkJaWYgKCFpc251bGwpCisJCQljb2xsY3R5cGUgPSBU ZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwkJZWxzZQorCQkJY29sbGN0eXBlID0gTlVM TDsKKworCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19j b2xsYXRpb25fY29sbGljdWNvbGwsICZpc251bGwpOworCQlpZiAoIWlzbnVsbCkKKwkJCWNv bGxpY3Vjb2xsID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJCWVsc2UKKwkJCWNv bGxpY3Vjb2xsID0gTlVMTDsKKwogCQlSZWxlYXNlU3lzQ2FjaGUodHApOwogCiAJCS8qCkBA IC0xNTYsMTggKzE3NSw2IEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJCQkJCSBl cnJtc2coImNvbGxhdGlvbiBcImRlZmF1bHRcIiBjYW5ub3QgYmUgY29waWVkIikpKTsKIAl9 CiAKLQlpZiAobG9jYWxlRWwpCi0JewotCQljb2xsY29sbGF0ZSA9IGRlZkdldFN0cmluZyhs b2NhbGVFbCk7Ci0JCWNvbGxjdHlwZSA9IGRlZkdldFN0cmluZyhsb2NhbGVFbCk7Ci0JfQot Ci0JaWYgKGxjY29sbGF0ZUVsKQotCQljb2xsY29sbGF0ZSA9IGRlZkdldFN0cmluZyhsY2Nv bGxhdGVFbCk7Ci0KLQlpZiAobGNjdHlwZUVsKQotCQljb2xsY3R5cGUgPSBkZWZHZXRTdHJp bmcobGNjdHlwZUVsKTsKLQogCWlmIChwcm92aWRlckVsKQogCQljb2xscHJvdmlkZXJzdHIg PSBkZWZHZXRTdHJpbmcocHJvdmlkZXJFbCk7CiAKQEAgLTE5MiwxNSArMTk5LDQzIEBAIERl ZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVzLCBMaXN0ICpw YXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJZWxzZSBpZiAoIWZyb21FbCkKIAkJY29sbHBy b3ZpZGVyID0gQ09MTFBST1ZJREVSX0xJQkM7CiAKLQlpZiAoIWNvbGxjb2xsYXRlKQotCQll cmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCi0JCQkJIGVycm1zZygicGFyYW1ldGVyIFwibGNfY29sbGF0ZVwiIG11c3Qg YmUgc3BlY2lmaWVkIikpKTsKKwlpZiAobG9jYWxlRWwpCisJeworCQlpZiAoY29sbHByb3Zp ZGVyID09IENPTExQUk9WSURFUl9MSUJDKQorCQl7CisJCQljb2xsY29sbGF0ZSA9IGRlZkdl dFN0cmluZyhsb2NhbGVFbCk7CisJCQljb2xsY3R5cGUgPSBkZWZHZXRTdHJpbmcobG9jYWxl RWwpOworCQl9CisJCWVsc2UKKwkJCWNvbGxpY3Vjb2xsID0gZGVmR2V0U3RyaW5nKGxvY2Fs ZUVsKTsKKwl9CiAKLQlpZiAoIWNvbGxjdHlwZSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAotCQkJCSBlcnJt c2coInBhcmFtZXRlciBcImxjX2N0eXBlXCIgbXVzdCBiZSBzcGVjaWZpZWQiKSkpOworCWlm IChsY2NvbGxhdGVFbCkKKwkJY29sbGNvbGxhdGUgPSBkZWZHZXRTdHJpbmcobGNjb2xsYXRl RWwpOworCisJaWYgKGxjY3R5cGVFbCkKKwkJY29sbGN0eXBlID0gZGVmR2V0U3RyaW5nKGxj Y3R5cGVFbCk7CisKKwlpZiAoY29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJDKQor CXsKKwkJaWYgKCFjb2xsY29sbGF0ZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCSBlcnJtc2co InBhcmFtZXRlciBcImxjX2NvbGxhdGVcIiBtdXN0IGJlIHNwZWNpZmllZCIpKSk7CisKKwkJ aWYgKCFjb2xsY3R5cGUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkgZXJybXNnKCJwYXJhbWV0 ZXIgXCJsY19jdHlwZVwiIG11c3QgYmUgc3BlY2lmaWVkIikpKTsKKwl9CisKKwlpZiAoY29s bHByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJeworCQlpZiAoIWNvbGxpY3Vjb2xs KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJIGVycm1zZygicGFyYW1ldGVyIFwibG9jYWxlXCIg bXVzdCBiZSBzcGVjaWZpZWQiKSkpOworCX0KIAogCS8qCiAJICogTm9uZGV0ZXJtaW5pc3Rp YyBjb2xsYXRpb25zIGFyZSBjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQgd2l0aCBJQ1UKQEAg LTI0Myw3ICsyNzgsNyBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBM aXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCX0KIAogCWlm ICghY29sbHZlcnNpb24pCi0JCWNvbGx2ZXJzaW9uID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxf dmVyc2lvbihjb2xscHJvdmlkZXIsIGNvbGxjb2xsYXRlKTsKKwkJY29sbHZlcnNpb24gPSBn ZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKGNvbGxwcm92aWRlciwgY29sbHByb3ZpZGVy ID09IENPTExQUk9WSURFUl9JQ1UgPyBjb2xsaWN1Y29sbCA6IGNvbGxjb2xsYXRlKTsKIAog CW5ld29pZCA9IENvbGxhdGlvbkNyZWF0ZShjb2xsTmFtZSwKIAkJCQkJCQkgY29sbE5hbWVz cGFjZSwKQEAgLTI1Myw2ICsyODgsNyBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQog CQkJCQkJCSBjb2xsZW5jb2RpbmcsCiAJCQkJCQkJIGNvbGxjb2xsYXRlLAogCQkJCQkJCSBj b2xsY3R5cGUsCisJCQkJCQkJIGNvbGxpY3Vjb2xsLAogCQkJCQkJCSBjb2xsdmVyc2lvbiwK IAkJCQkJCQkgaWZfbm90X2V4aXN0cywKIAkJCQkJCQkgZmFsc2UpOwkvKiBub3QgcXVpZXQg Ki8KQEAgLTMzNiw3ICszNzIsMTMgQEAgQWx0ZXJDb2xsYXRpb24oQWx0ZXJDb2xsYXRpb25T dG10ICpzdG10KQogCQkJCQkJCQkgICZpc251bGwpOwogCW9sZHZlcnNpb24gPSBpc251bGwg PyBOVUxMIDogVGV4dERhdHVtR2V0Q1N0cmluZyhjb2xsdmVyc2lvbik7CiAKLQluZXd2ZXJz aW9uID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjb2xsRm9ybS0+Y29sbHByb3Zp ZGVyLCBOYW1lU3RyKGNvbGxGb3JtLT5jb2xsY29sbGF0ZSkpOworCXsKKwkJRGF0dW0JZGF0 dW07CisKKwkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHVwLCBjb2xsRm9y bS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UgPyBBbnVtX3BnX2NvbGxhdGlv bl9jb2xsaWN1Y29sbCA6IEFudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlLCAmaXNudWxs KTsKKwkJQXNzZXJ0KCFpc251bGwpOworCQluZXd2ZXJzaW9uID0gZ2V0X2NvbGxhdGlvbl9h Y3R1YWxfdmVyc2lvbihjb2xsRm9ybS0+Y29sbHByb3ZpZGVyLCBUZXh0RGF0dW1HZXRDU3Ry aW5nKGRhdHVtKSk7CisJfQogCiAJLyogY2Fubm90IGNoYW5nZSBmcm9tIE5VTEwgdG8gbm9u LU5VTEwgb3IgdmljZSB2ZXJzYSAqLwogCWlmICgoIW9sZHZlcnNpb24gJiYgbmV3dmVyc2lv bikgfHwgKG9sZHZlcnNpb24gJiYgIW5ld3ZlcnNpb24pKQpAQCAtMzgzLDggKzQyNSw5IEBA IHBnX2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihQR19GVU5DVElPTl9BUkdTKQogewogCU9p ZAkJCWNvbGxpZCA9IFBHX0dFVEFSR19PSUQoMCk7CiAJSGVhcFR1cGxlCXRwOwotCWNoYXIJ ICAgKmNvbGxjb2xsYXRlOwogCWNoYXIJCWNvbGxwcm92aWRlcjsKKwlEYXR1bQkJZGF0dW07 CisJYm9vbAkJaXNudWxsOwogCWNoYXIJICAgKnZlcnNpb247CiAKIAl0cCA9IFNlYXJjaFN5 c0NhY2hlMShDT0xMT0lELCBPYmplY3RJZEdldERhdHVtKGNvbGxpZCkpOwpAQCAtMzkzLDEy ICs0MzYsMTkgQEAgcGdfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKIAkJCQkgZXJy bXNnKCJjb2xsYXRpb24gd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCBjb2xsaWQpKSk7 CiAKLQljb2xsY29sbGF0ZSA9IHBzdHJkdXAoTmFtZVN0cigoKEZvcm1fcGdfY29sbGF0aW9u KSBHRVRTVFJVQ1QodHApKS0+Y29sbGNvbGxhdGUpKTsKIAljb2xscHJvdmlkZXIgPSAoKEZv cm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApKS0+Y29sbHByb3ZpZGVyOwogCi0JUmVs ZWFzZVN5c0NhY2hlKHRwKTsKKwlpZiAoY29sbHByb3ZpZGVyICE9IENPTExQUk9WSURFUl9E RUZBVUxUKQorCXsKKwkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAsIGNv bGxwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVID8gQW51bV9wZ19jb2xsYXRpb25fY29s bGljdWNvbGwgOiBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY29sbGF0ZSwgJmlzbnVsbCk7CisJ CUFzc2VydCghaXNudWxsKTsKKworCQl2ZXJzaW9uID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxf dmVyc2lvbihjb2xscHJvdmlkZXIsIFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKwl9 CisJZWxzZQorCQl2ZXJzaW9uID0gTlVMTDsKIAotCXZlcnNpb24gPSBnZXRfY29sbGF0aW9u X2FjdHVhbF92ZXJzaW9uKGNvbGxwcm92aWRlciwgY29sbGNvbGxhdGUpOworCVJlbGVhc2VT eXNDYWNoZSh0cCk7CiAKIAlpZiAodmVyc2lvbikKIAkJUEdfUkVUVVJOX1RFWFRfUChjc3Ry aW5nX3RvX3RleHQodmVyc2lvbikpOwpAQCAtNjIzLDcgKzY3Myw3IEBAIHBnX2ltcG9ydF9z eXN0ZW1fY29sbGF0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQkJICovCiAJCQljb2xsaWQg PSBDb2xsYXRpb25DcmVhdGUobG9jYWxlYnVmLCBuc3BpZCwgR2V0VXNlcklkKCksCiAJCQkJ CQkJCQkgQ09MTFBST1ZJREVSX0xJQkMsIHRydWUsIGVuYywKLQkJCQkJCQkJCSBsb2NhbGVi dWYsIGxvY2FsZWJ1ZiwKKwkJCQkJCQkJCSBsb2NhbGVidWYsIGxvY2FsZWJ1ZiwgTlVMTCwK IAkJCQkJCQkJCSBnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKENPTExQUk9WSURFUl9M SUJDLCBsb2NhbGVidWYpLAogCQkJCQkJCQkJIHRydWUsIHRydWUpOwogCQkJaWYgKE9pZElz VmFsaWQoY29sbGlkKSkKQEAgLTY4NCw3ICs3MzQsNyBAQCBwZ19pbXBvcnRfc3lzdGVtX2Nv bGxhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAogCQkJY29sbGlkID0gQ29sbGF0aW9uQ3Jl YXRlKGFsaWFzLCBuc3BpZCwgR2V0VXNlcklkKCksCiAJCQkJCQkJCQkgQ09MTFBST1ZJREVS X0xJQkMsIHRydWUsIGVuYywKLQkJCQkJCQkJCSBsb2NhbGUsIGxvY2FsZSwKKwkJCQkJCQkJ CSBsb2NhbGUsIGxvY2FsZSwgTlVMTCwKIAkJCQkJCQkJCSBnZXRfY29sbGF0aW9uX2FjdHVh bF92ZXJzaW9uKENPTExQUk9WSURFUl9MSUJDLCBsb2NhbGUpLAogCQkJCQkJCQkJIHRydWUs IHRydWUpOwogCQkJaWYgKE9pZElzVmFsaWQoY29sbGlkKSkKQEAgLTcyNSw3ICs3NzUsNyBA QCBwZ19pbXBvcnRfc3lzdGVtX2NvbGxhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNv bnN0IGNoYXIgKm5hbWU7CiAJCQljaGFyCSAgICpsYW5ndGFnOwogCQkJY2hhcgkgICAqaWN1 Y29tbWVudDsKLQkJCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlOworCQkJY29uc3QgY2hhciAq aWN1Y29sbHN0cjsKIAkJCU9pZAkJCWNvbGxpZDsKIAogCQkJaWYgKGkgPT0gLTEpCkBAIC03 MzQsMjAgKzc4NCwyMCBAQCBwZ19pbXBvcnRfc3lzdGVtX2NvbGxhdGlvbnMoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCQluYW1lID0gdWxvY19nZXRBdmFpbGFibGUoaSk7CiAKIAkJCWxhbmd0 YWcgPSBnZXRfaWN1X2xhbmd1YWdlX3RhZyhuYW1lKTsKLQkJCWNvbGxjb2xsYXRlID0gVV9J Q1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNTQgPyBsYW5ndGFnIDogbmFtZTsKKwkJCWljdWNv bGxzdHIgPSBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA+PSA1NCA/IGxhbmd0YWcgOiBuYW1l OwogCiAJCQkvKgogCQkJICogQmUgcGFyYW5vaWQgYWJvdXQgbm90IGFsbG93aW5nIGFueSBu b24tQVNDSUkgc3RyaW5ncyBpbnRvCiAJCQkgKiBwZ19jb2xsYXRpb24KIAkJCSAqLwotCQkJ aWYgKCFwZ19pc19hc2NpaShsYW5ndGFnKSB8fCAhcGdfaXNfYXNjaWkoY29sbGNvbGxhdGUp KQorCQkJaWYgKCFwZ19pc19hc2NpaShsYW5ndGFnKSB8fCAhcGdfaXNfYXNjaWkoaWN1Y29s bHN0cikpCiAJCQkJY29udGludWU7CiAKIAkJCWNvbGxpZCA9IENvbGxhdGlvbkNyZWF0ZShw c3ByaW50ZigiJXMteC1pY3UiLCBsYW5ndGFnKSwKIAkJCQkJCQkJCSBuc3BpZCwgR2V0VXNl cklkKCksCiAJCQkJCQkJCQkgQ09MTFBST1ZJREVSX0lDVSwgdHJ1ZSwgLTEsCi0JCQkJCQkJ CQkgY29sbGNvbGxhdGUsIGNvbGxjb2xsYXRlLAotCQkJCQkJCQkJIGdldF9jb2xsYXRpb25f YWN0dWFsX3ZlcnNpb24oQ09MTFBST1ZJREVSX0lDVSwgY29sbGNvbGxhdGUpLAorCQkJCQkJ CQkJIE5VTEwsIE5VTEwsIGljdWNvbGxzdHIsCisJCQkJCQkJCQkgZ2V0X2NvbGxhdGlvbl9h Y3R1YWxfdmVyc2lvbihDT0xMUFJPVklERVJfSUNVLCBpY3Vjb2xsc3RyKSwKIAkJCQkJCQkJ CSB0cnVlLCB0cnVlKTsKIAkJCWlmIChPaWRJc1ZhbGlkKGNvbGxpZCkpCiAJCQl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKaW5kZXggMDI5ZmFiNDhkZi4uNzkyODc5MGNjOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYwpAQCAtMzYsNiArMzYsNyBAQAogI2lu Y2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFj Y2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYl9yb2xlX3NldHRpbmcuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgpAQCAtODYsNyArODcsOCBAQCBzdGF0aWMgYm9v bCBnZXRfZGJfaW5mbyhjb25zdCBjaGFyICpuYW1lLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJ CQkJCWludCAqZW5jb2RpbmdQLCBib29sICpkYklzVGVtcGxhdGVQLCBib29sICpkYkFsbG93 Q29ublAsCiAJCQkJCQlPaWQgKmRiTGFzdFN5c09pZFAsIFRyYW5zYWN0aW9uSWQgKmRiRnJv emVuWGlkUCwKIAkJCQkJCU11bHRpWGFjdElkICpkYk1pbk11bHRpUCwKLQkJCQkJCU9pZCAq ZGJUYWJsZXNwYWNlLCBjaGFyICoqZGJDb2xsYXRlLCBjaGFyICoqZGJDdHlwZSk7CisJCQkJ CQlPaWQgKmRiVGFibGVzcGFjZSwgY2hhciAqKmRiQ29sbGF0ZSwgY2hhciAqKmRiQ3R5cGUs IGNoYXIgKipkYkljdWNvbGwsCisJCQkJCQljaGFyICpkYkNvbGxQcm92aWRlcik7CiBzdGF0 aWMgYm9vbCBoYXZlX2NyZWF0ZWRiX3ByaXZpbGVnZSh2b2lkKTsKIHN0YXRpYyB2b2lkIHJl bW92ZV9kYnRhYmxlc3BhY2VzKE9pZCBkYl9pZCk7CiBzdGF0aWMgYm9vbCBjaGVja19kYl9m aWxlX2NvbmZsaWN0KE9pZCBkYl9pZCk7CkBAIC0xMDYsNiArMTA4LDggQEAgY3JlYXRlZGIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJaW50CQkJ c3JjX2VuY29kaW5nID0gLTE7CiAJY2hhcgkgICAqc3JjX2NvbGxhdGUgPSBOVUxMOwogCWNo YXIJICAgKnNyY19jdHlwZSA9IE5VTEw7CisJY2hhcgkgICAqc3JjX2ljdWNvbGwgPSBOVUxM OworCWNoYXIJCXNyY19jb2xscHJvdmlkZXI7CiAJYm9vbAkJc3JjX2lzdGVtcGxhdGU7CiAJ Ym9vbAkJc3JjX2FsbG93Y29ubjsKIAlPaWQJCQlzcmNfbGFzdHN5c29pZCA9IEludmFsaWRP aWQ7CkBAIC0xMjcsNiArMTMxLDcgQEAgY3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBj b25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJRGVmRWxlbSAgICAqZGxvY2FsZSA9IE5VTEw7 CiAJRGVmRWxlbSAgICAqZGNvbGxhdGUgPSBOVUxMOwogCURlZkVsZW0gICAgKmRjdHlwZSA9 IE5VTEw7CisJRGVmRWxlbQkgICAqZGNvbGxwcm92aWRlciA9IE5VTEw7CiAJRGVmRWxlbSAg ICAqZGlzdGVtcGxhdGUgPSBOVUxMOwogCURlZkVsZW0gICAgKmRhbGxvd2Nvbm5lY3Rpb25z ID0gTlVMTDsKIAlEZWZFbGVtICAgICpkY29ubmxpbWl0ID0gTlVMTDsKQEAgLTEzNSw2ICsx NDAsOCBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3Rt dCAqc3RtdCkKIAljb25zdCBjaGFyICpkYnRlbXBsYXRlID0gTlVMTDsKIAljaGFyCSAgICpk YmNvbGxhdGUgPSBOVUxMOwogCWNoYXIJICAgKmRiY3R5cGUgPSBOVUxMOworCWNoYXIJICAg KmRiaWN1Y29sbCA9IE5VTEw7CisJY2hhcgkJZGJjb2xscHJvdmlkZXIgPSAnXDAnOwogCWNo YXIJICAgKmNhbm9ubmFtZTsKIAlpbnQJCQllbmNvZGluZyA9IC0xOwogCWJvb2wJCWRiaXN0 ZW1wbGF0ZSA9IGZhbHNlOwpAQCAtMTkxLDYgKzE5OCwxNSBAQCBjcmVhdGVkYihQYXJzZVN0 YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAkJCQllcnJvckNvbmZs aWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKIAkJCWRjdHlwZSA9IGRlZmVsOwogCQl9 CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImNvbGxhdGlvbl9wcm92aWRl ciIpID09IDApCisJCXsKKwkJCWlmIChkY29sbHByb3ZpZGVyKQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJy bXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpLAorCQkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKKwkJCWRjb2xscHJv dmlkZXIgPSBkZWZlbDsKKwkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUs ICJpc190ZW1wbGF0ZSIpID09IDApCiAJCXsKIAkJCWlmIChkaXN0ZW1wbGF0ZSkKQEAgLTIy NCwxMiArMjQwLDYgQEAgY3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVh dGVkYlN0bXQgKnN0bXQpCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZl bC0+bG9jYXRpb24pKSk7CiAJfQogCi0JaWYgKGRsb2NhbGUgJiYgKGRjb2xsYXRlIHx8IGRj dHlwZSkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAotCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25z IiksCi0JCQkJIGVycmRldGFpbCgiTE9DQUxFIGNhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRo ZXIgd2l0aCBMQ19DT0xMQVRFIG9yIExDX0NUWVBFLiIpKSk7Ci0KIAlpZiAoZG93bmVyICYm IGRvd25lci0+YXJnKQogCQlkYm93bmVyID0gZGVmR2V0U3RyaW5nKGRvd25lcik7CiAJaWYg KGR0ZW1wbGF0ZSAmJiBkdGVtcGxhdGUtPmFyZykKQEAgLTI2NiwxMSArMjc2LDI5IEBAIGNy ZWF0ZWRiKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgQ3JlYXRlZGJTdG10ICpzdG10KQog CXsKIAkJZGJjb2xsYXRlID0gZGVmR2V0U3RyaW5nKGRsb2NhbGUpOwogCQlkYmN0eXBlID0g ZGVmR2V0U3RyaW5nKGRsb2NhbGUpOworCQlkYmljdWNvbGwgPSBkZWZHZXRTdHJpbmcoZGxv Y2FsZSk7CiAJfQogCWlmIChkY29sbGF0ZSAmJiBkY29sbGF0ZS0+YXJnKQogCQlkYmNvbGxh dGUgPSBkZWZHZXRTdHJpbmcoZGNvbGxhdGUpOwogCWlmIChkY3R5cGUgJiYgZGN0eXBlLT5h cmcpCiAJCWRiY3R5cGUgPSBkZWZHZXRTdHJpbmcoZGN0eXBlKTsKKwlpZiAoZGNvbGxwcm92 aWRlciAmJiBkY29sbHByb3ZpZGVyLT5hcmcpCisJeworCQljaGFyCSAgICpjb2xscHJvdmlk ZXJzdHIgPSBkZWZHZXRTdHJpbmcoZGNvbGxwcm92aWRlcik7CisKKyNpZmRlZiBVU0VfSUNV CisJCWlmIChwZ19zdHJjYXNlY21wKGNvbGxwcm92aWRlcnN0ciwgImljdSIpID09IDApCisJ CQlkYmNvbGxwcm92aWRlciA9IENPTExQUk9WSURFUl9JQ1U7CisJCWVsc2UKKyNlbmRpZgor CQlpZiAocGdfc3RyY2FzZWNtcChjb2xscHJvdmlkZXJzdHIsICJsaWJjIikgPT0gMCkKKwkJ CWRiY29sbHByb3ZpZGVyID0gQ09MTFBST1ZJREVSX0xJQkM7CisJCWVsc2UKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCisJCQkJCSBlcnJtc2coInVucmVjb2duaXplZCBjb2xsYXRpb24gcHJvdmlkZXI6 ICVzIiwKKwkJCQkJCQljb2xscHJvdmlkZXJzdHIpKSk7CisJfQogCWlmIChkaXN0ZW1wbGF0 ZSAmJiBkaXN0ZW1wbGF0ZS0+YXJnKQogCQlkYmlzdGVtcGxhdGUgPSBkZWZHZXRCb29sZWFu KGRpc3RlbXBsYXRlKTsKIAlpZiAoZGFsbG93Y29ubmVjdGlvbnMgJiYgZGFsbG93Y29ubmVj dGlvbnMtPmFyZykKQEAgLTMyMCw3ICszNDgsNyBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpw c3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAkJCQkJICZzcmNfZGJvaWQsICZz cmNfb3duZXIsICZzcmNfZW5jb2RpbmcsCiAJCQkJCSAmc3JjX2lzdGVtcGxhdGUsICZzcmNf YWxsb3djb25uLCAmc3JjX2xhc3RzeXNvaWQsCiAJCQkJCSAmc3JjX2Zyb3plbnhpZCwgJnNy Y19taW5teGlkLCAmc3JjX2RlZnRhYmxlc3BhY2UsCi0JCQkJCSAmc3JjX2NvbGxhdGUsICZz cmNfY3R5cGUpKQorCQkJCQkgJnNyY19jb2xsYXRlLCAmc3JjX2N0eXBlLCAmc3JjX2ljdWNv bGwsICZzcmNfY29sbHByb3ZpZGVyKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9EQVRBQkFTRSksCiAJCQkJIGVycm1zZygidGVtcGxhdGUg ZGF0YWJhc2UgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKQEAgLTM0Niw2ICszNzQsMTAgQEAg Y3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQp CiAJCWRiY29sbGF0ZSA9IHNyY19jb2xsYXRlOwogCWlmIChkYmN0eXBlID09IE5VTEwpCiAJ CWRiY3R5cGUgPSBzcmNfY3R5cGU7CisJaWYgKGRiaWN1Y29sbCA9PSBOVUxMKQorCQlkYmlj dWNvbGwgPSBzcmNfaWN1Y29sbDsKKwlpZiAoZGJjb2xscHJvdmlkZXIgPT0gJ1wwJykKKwkJ ZGJjb2xscHJvdmlkZXIgPSBzcmNfY29sbHByb3ZpZGVyOwogCiAJLyogU29tZSBlbmNvZGlu Z3MgYXJlIGNsaWVudCBvbmx5ICovCiAJaWYgKCFQR19WQUxJRF9CRV9FTkNPRElORyhlbmNv ZGluZykpCkBAIC01MjUsMTAgKzU1NywxMyBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3Rh dGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAkJRGlyZWN0RnVuY3Rpb25DYWxsMShu YW1laW4sIENTdHJpbmdHZXREYXR1bShkYm5hbWUpKTsKIAluZXdfcmVjb3JkW0FudW1fcGdf ZGF0YWJhc2VfZGF0ZGJhIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGRhdGRiYSk7CiAJbmV3 X3JlY29yZFtBbnVtX3BnX2RhdGFiYXNlX2VuY29kaW5nIC0gMV0gPSBJbnQzMkdldERhdHVt KGVuY29kaW5nKTsKLQluZXdfcmVjb3JkW0FudW1fcGdfZGF0YWJhc2VfZGF0Y29sbGF0ZSAt IDFdID0KLQkJRGlyZWN0RnVuY3Rpb25DYWxsMShuYW1laW4sIENTdHJpbmdHZXREYXR1bShk YmNvbGxhdGUpKTsKLQluZXdfcmVjb3JkW0FudW1fcGdfZGF0YWJhc2VfZGF0Y3R5cGUgLSAx XSA9Ci0JCURpcmVjdEZ1bmN0aW9uQ2FsbDEobmFtZWluLCBDU3RyaW5nR2V0RGF0dW0oZGJj dHlwZSkpOworCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9kYXRjb2xsYXRlIC0gMV0g PSBDU3RyaW5nR2V0VGV4dERhdHVtKGRiY29sbGF0ZSk7CisJbmV3X3JlY29yZFtBbnVtX3Bn X2RhdGFiYXNlX2RhdGN0eXBlIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGRiY3R5cGUp OworCWlmIChkYmljdWNvbGwpCisJCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9kYXRp Y3Vjb2xsIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGRiaWN1Y29sbCk7CisJZWxzZQor CQluZXdfcmVjb3JkX251bGxzW0FudW1fcGdfZGF0YWJhc2VfZGF0aWN1Y29sbF0gPSB0cnVl OworCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9kYXRjb2xscHJvdmlkZXIgLSAxXSA9 IENoYXJHZXREYXR1bShkYmNvbGxwcm92aWRlcik7CiAJbmV3X3JlY29yZFtBbnVtX3BnX2Rh dGFiYXNlX2RhdGlzdGVtcGxhdGUgLSAxXSA9IEJvb2xHZXREYXR1bShkYmlzdGVtcGxhdGUp OwogCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9kYXRhbGxvd2Nvbm4gLSAxXSA9IEJv b2xHZXREYXR1bShkYmFsbG93Y29ubmVjdGlvbnMpOwogCW5ld19yZWNvcmRbQW51bV9wZ19k YXRhYmFzZV9kYXRjb25ubGltaXQgLSAxXSA9IEludDMyR2V0RGF0dW0oZGJjb25ubGltaXQp OwpAQCAtODAyLDcgKzgzNyw3IEBAIGRyb3BkYihjb25zdCBjaGFyICpkYm5hbWUsIGJvb2wg bWlzc2luZ19vaywgYm9vbCBmb3JjZSkKIAlwZ2RicmVsID0gdGFibGVfb3BlbihEYXRhYmFz ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJaWYgKCFnZXRfZGJfaW5mbyhk Ym5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssICZkYl9pZCwgTlVMTCwgTlVMTCwKLQkJCQkJ ICZkYl9pc3RlbXBsYXRlLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMKSkKKwkJCQkJICZkYl9pc3RlbXBsYXRlLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSkKIAl7CiAJCWlmICghbWlzc2luZ19vaykK IAkJewpAQCAtMTAwMSw3ICsxMDM2LDcgQEAgUmVuYW1lRGF0YWJhc2UoY29uc3QgY2hhciAq b2xkbmFtZSwgY29uc3QgY2hhciAqbmV3bmFtZSkKIAlyZWwgPSB0YWJsZV9vcGVuKERhdGFi YXNlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlpZiAoIWdldF9kYl9pbmZv KG9sZG5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssICZkYl9pZCwgTlVMTCwgTlVMTCwKLQkJ CQkJIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKQor CQkJCQkgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfREFUQUJBU0UpLAogCQkJCSBlcnJtc2coImRhdGFiYXNlIFwiJXNcIiBkb2Vz IG5vdCBleGlzdCIsIG9sZG5hbWUpKSk7CkBAIC0xMTE0LDcgKzExNDksNyBAQCBtb3ZlZGIo Y29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp0YmxzcGNuYW1lKQogCXBnZGJyZWwg PSB0YWJsZV9vcGVuKERhdGFiYXNlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAK IAlpZiAoIWdldF9kYl9pbmZvKGRibmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jaywgJmRiX2lk LCBOVUxMLCBOVUxMLAotCQkJCQkgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgJnNy Y190YmxzcGNvaWQsIE5VTEwsIE5VTEwpKQorCQkJCQkgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCwgJnNyY190YmxzcGNvaWQsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0RBVEFCQVNF KSwKIAkJCQkgZXJybXNnKCJkYXRhYmFzZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLCBkYm5h bWUpKSk7CkBAIC0xNzU5LDcgKzE3OTQsOCBAQCBnZXRfZGJfaW5mbyhjb25zdCBjaGFyICpu YW1lLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCWludCAqZW5jb2RpbmdQLCBib29sICpkYklz VGVtcGxhdGVQLCBib29sICpkYkFsbG93Q29ublAsCiAJCQlPaWQgKmRiTGFzdFN5c09pZFAs IFRyYW5zYWN0aW9uSWQgKmRiRnJvemVuWGlkUCwKIAkJCU11bHRpWGFjdElkICpkYk1pbk11 bHRpUCwKLQkJCU9pZCAqZGJUYWJsZXNwYWNlLCBjaGFyICoqZGJDb2xsYXRlLCBjaGFyICoq ZGJDdHlwZSkKKwkJCU9pZCAqZGJUYWJsZXNwYWNlLCBjaGFyICoqZGJDb2xsYXRlLCBjaGFy ICoqZGJDdHlwZSwgY2hhciAqKmRiSWN1Y29sbCwKKwkJCWNoYXIgKmRiQ29sbFByb3ZpZGVy KQogewogCWJvb2wJCXJlc3VsdCA9IGZhbHNlOwogCVJlbGF0aW9uCXJlbGF0aW9uOwpAQCAt MTgyNCw2ICsxODYwLDkgQEAgZ2V0X2RiX2luZm8oY29uc3QgY2hhciAqbmFtZSwgTE9DS01P REUgbG9ja21vZGUsCiAKIAkJCWlmIChzdHJjbXAobmFtZSwgTmFtZVN0cihkYmZvcm0tPmRh dG5hbWUpKSA9PSAwKQogCQkJeworCQkJCURhdHVtCQlkYXR1bTsKKwkJCQlib29sCQlpc251 bGw7CisKIAkJCQkvKiBvaWQgb2YgdGhlIGRhdGFiYXNlICovCiAJCQkJaWYgKGRiSWRQKQog CQkJCQkqZGJJZFAgPSBkYk9pZDsKQEAgLTE4NTIsMTAgKzE4OTEsMjggQEAgZ2V0X2RiX2lu Zm8oY29uc3QgY2hhciAqbmFtZSwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJaWYgKGRiVGFi bGVzcGFjZSkKIAkJCQkJKmRiVGFibGVzcGFjZSA9IGRiZm9ybS0+ZGF0dGFibGVzcGFjZTsK IAkJCQkvKiBkZWZhdWx0IGxvY2FsZSBzZXR0aW5ncyBmb3IgdGhpcyBkYXRhYmFzZSAqLwor CQkJCWlmIChkYkNvbGxQcm92aWRlcikKKwkJCQkJKmRiQ29sbFByb3ZpZGVyID0gZGJmb3Jt LT5kYXRjb2xscHJvdmlkZXI7CiAJCQkJaWYgKGRiQ29sbGF0ZSkKLQkJCQkJKmRiQ29sbGF0 ZSA9IHBzdHJkdXAoTmFtZVN0cihkYmZvcm0tPmRhdGNvbGxhdGUpKTsKKwkJCQl7CisJCQkJ CWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKERBVEFCQVNFT0lELCB0dXBsZSwgQW51bV9wZ19k YXRhYmFzZV9kYXRjb2xsYXRlLCAmaXNudWxsKTsKKwkJCQkJQXNzZXJ0KCFpc251bGwpOwor CQkJCQkqZGJDb2xsYXRlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJCQkJfQog CQkJCWlmIChkYkN0eXBlKQotCQkJCQkqZGJDdHlwZSA9IHBzdHJkdXAoTmFtZVN0cihkYmZv cm0tPmRhdGN0eXBlKSk7CisJCQkJeworCQkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihE QVRBQkFTRU9JRCwgdHVwbGUsIEFudW1fcGdfZGF0YWJhc2VfZGF0Y3R5cGUsICZpc251bGwp OworCQkJCQlBc3NlcnQoIWlzbnVsbCk7CisJCQkJCSpkYkN0eXBlID0gVGV4dERhdHVtR2V0 Q1N0cmluZyhkYXR1bSk7CisJCQkJfQorCQkJCWlmIChkYkljdWNvbGwpCisJCQkJeworCQkJ CQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihEQVRBQkFTRU9JRCwgdHVwbGUsIEFudW1fcGdf ZGF0YWJhc2VfZGF0aWN1Y29sbCwgJmlzbnVsbCk7CisJCQkJCWlmIChpc251bGwpCisJCQkJ CQkqZGJJY3Vjb2xsID0gTlVMTDsKKwkJCQkJZWxzZQorCQkJCQkJKmRiSWN1Y29sbCA9IFRl eHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCQkJCX0KIAkJCQlSZWxlYXNlU3lzQ2FjaGUo dHVwbGUpOwogCQkJCXJlc3VsdCA9IHRydWU7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jIGIvc3JjL2JhY2tlbmQvcmVnZXgv cmVnY19wZ19sb2NhbGUuYwppbmRleCBiYmJkNjFjNjA0Li4zZmUwZjFjMzg2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlZ2V4L3JlZ2NfcGdfbG9jYWxlLmMKQEAgLTI0MSw3ICsyNDEsMTIgQEAgcGdfc2V0 X3JlZ2V4X2NvbGxhdGlvbihPaWQgY29sbGF0aW9uKQogCWVsc2UKIAl7CiAJCWlmIChjb2xs YXRpb24gPT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQotCQkJcGdfcmVnZXhfbG9jYWxlID0g MDsKKwkJeworCQkJaWYgKGRlZmF1bHRfbG9jYWxlLnByb3ZpZGVyID09IENPTExQUk9WSURF Ul9JQ1UpCisJCQkJcGdfcmVnZXhfbG9jYWxlID0gJmRlZmF1bHRfbG9jYWxlOworCQkJZWxz ZQorCQkJCXBnX3JlZ2V4X2xvY2FsZSA9IDA7CisJCX0KIAkJZWxzZSBpZiAoT2lkSXNWYWxp ZChjb2xsYXRpb24pKQogCQl7CiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2Zvcm1hdHRpbmcuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5n LmMKaW5kZXggNDE5NDY5ZmFiNS4uMzIwMDQ3ZmJkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv Zm9ybWF0dGluZy5jCkBAIC0xNjY2LDYgKzE2NjYsOCBAQCBzdHJfdG9sb3dlcihjb25zdCBj aGFyICpidWZmLCBzaXplX3QgbmJ5dGVzLCBPaWQgY29sbGlkKQogCQkJfQogCQkJbXlsb2Nh bGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKIAkJfQorCQllbHNl IGlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQkJ bXlsb2NhbGUgPSAmZGVmYXVsdF9sb2NhbGU7CiAKICNpZmRlZiBVU0VfSUNVCiAJCWlmICht eWxvY2FsZSAmJiBteWxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKQEAg LTE3OTAsNiArMTc5Miw4IEBAIHN0cl90b3VwcGVyKGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVf dCBuYnl0ZXMsIE9pZCBjb2xsaWQpCiAJCQl9CiAJCQlteWxvY2FsZSA9IHBnX25ld2xvY2Fs ZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOwogCQl9CisJCWVsc2UgaWYgKGRlZmF1bHRfbG9j YWxlLnByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCQlteWxvY2FsZSA9ICZkZWZh dWx0X2xvY2FsZTsKIAogI2lmZGVmIFVTRV9JQ1UKIAkJaWYgKG15bG9jYWxlICYmIG15bG9j YWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQpAQCAtMTkxNSw2ICsxOTE5LDgg QEAgc3RyX2luaXRjYXAoY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IG5ieXRlcywgT2lkIGNv bGxpZCkKIAkJCX0KIAkJCW15bG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9u KGNvbGxpZCk7CiAJCX0KKwkJZWxzZSBpZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0g Q09MTFBST1ZJREVSX0lDVSkKKwkJCW15bG9jYWxlID0gJmRlZmF1bHRfbG9jYWxlOwogCiAj aWZkZWYgVVNFX0lDVQogCQlpZiAobXlsb2NhbGUgJiYgbXlsb2NhbGUtPnByb3ZpZGVyID09 IENPTExQUk9WSURFUl9JQ1UpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv bGlrZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2UuYwppbmRleCBlZWQxODNjZDBk Li44NWE2NjhmYTM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlLmMKQEAgLTE1MCw5ICsxNTAsMTQg QEAgU0JfbG93ZXJfY2hhcih1bnNpZ25lZCBjaGFyIGMsIHBnX2xvY2FsZV90IGxvY2FsZSwg Ym9vbCBsb2NhbGVfaXNfYykKIHN0YXRpYyBpbmxpbmUgaW50CiBHZW5lcmljTWF0Y2hUZXh0 KGNvbnN0IGNoYXIgKnMsIGludCBzbGVuLCBjb25zdCBjaGFyICpwLCBpbnQgcGxlbiwgT2lk IGNvbGxhdGlvbikKIHsKLQlpZiAoY29sbGF0aW9uICYmICFsY19jdHlwZV9pc19jKGNvbGxh dGlvbikgJiYgY29sbGF0aW9uICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKKwlpZiAoY29s bGF0aW9uICYmICFsY19jdHlwZV9pc19jKGNvbGxhdGlvbikpCiAJewotCQlwZ19sb2NhbGVf dCBsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGF0aW9uKTsKKwkJ cGdfbG9jYWxlX3QgbG9jYWxlID0gMDsKKworCQlpZiAoY29sbGF0aW9uICE9IERFRkFVTFRf Q09MTEFUSU9OX09JRCkKKwkJCWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlv bihjb2xsYXRpb24pOworCQllbHNlIGlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBD T0xMUFJPVklERVJfSUNVKQorCQkJbG9jYWxlID0gJmRlZmF1bHRfbG9jYWxlOwogCiAJCWlm IChsb2NhbGUgJiYgIWxvY2FsZS0+ZGV0ZXJtaW5pc3RpYykKIAkJCWVyZXBvcnQoRVJST1Is CkBAIC0xOTUsMTEgKzIwMCwxNCBAQCBHZW5lcmljX1RleHRfSUNfbGlrZSh0ZXh0ICpzdHIs IHRleHQgKnBhdCwgT2lkIGNvbGxhdGlvbikKIAkJfQogCQlsb2NhbGUgPSBwZ19uZXdsb2Nh bGVfZnJvbV9jb2xsYXRpb24oY29sbGF0aW9uKTsKIAotCQlpZiAobG9jYWxlICYmICFsb2Nh bGUtPmRldGVybWluaXN0aWMpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coIm5vbmRldGVy bWluaXN0aWMgY29sbGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgSUxJS0UiKSkpOwog CX0KKwllbHNlIGlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xMUFJPVklERVJf SUNVKQorCQlsb2NhbGUgPSAmZGVmYXVsdF9sb2NhbGU7CisKKwlpZiAobG9jYWxlICYmICFs b2NhbGUtPmRldGVybWluaXN0aWMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIm5vbmRldGVy bWluaXN0aWMgY29sbGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgSUxJS0UiKSkpOwog CiAJLyoKIAkgKiBGb3IgZWZmaWNpZW5jeSByZWFzb25zLCBpbiB0aGUgc2luZ2xlIGJ5dGUg Y2FzZSB3ZSBkb24ndCBjYWxsIGxvd2VyKCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9saWtlX3N1cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlX3N1 cHBvcnQuYwppbmRleCA5ODg1Njg4MjVlLi42YjgyYWQxZDQzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbGlrZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2xpa2Vfc3VwcG9ydC5jCkBAIC0xMDMwLDYgKzEwMzAsOCBAQCBsaWtlX2ZpeGVk X3ByZWZpeChDb25zdCAqcGF0dF9jb25zdCwgYm9vbCBjYXNlX2luc2Vuc2l0aXZlLCBPaWQg Y29sbGF0aW9uLAogCQkJfQogCQkJbG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0 aW9uKGNvbGxhdGlvbik7CiAJCX0KKwkJZWxzZSBpZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlk ZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJCWxvY2FsZSA9ICZkZWZhdWx0X2xvY2FsZTsK IAl9CiAKIAlpZiAodHlwZWlkICE9IEJZVEVBT0lEKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xv Y2FsZS5jCmluZGV4IGNjMmFiOTU1MzUuLjhkMzJiYzY4ZDggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcGdfbG9jYWxlLmMKQEAgLTEyODksMjEgKzEyODksMzYgQEAgbG9va3VwX2NvbGxhdGlv bl9jYWNoZShPaWQgY29sbGF0aW9uLCBib29sIHNldF9mbGFncykKIAkJLyogQXR0ZW1wdCB0 byBzZXQgdGhlIGZsYWdzICovCiAJCUhlYXBUdXBsZQl0cDsKIAkJRm9ybV9wZ19jb2xsYXRp b24gY29sbGZvcm07Ci0JCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlOwotCQljb25zdCBjaGFy ICpjb2xsY3R5cGU7CiAKIAkJdHAgPSBTZWFyY2hTeXNDYWNoZTEoQ09MTE9JRCwgT2JqZWN0 SWRHZXREYXR1bShjb2xsYXRpb24pKTsKIAkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkK IAkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb2xsYXRpb24gJXUi LCBjb2xsYXRpb24pOwogCQljb2xsZm9ybSA9IChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RS VUNUKHRwKTsKIAotCQljb2xsY29sbGF0ZSA9IE5hbWVTdHIoY29sbGZvcm0tPmNvbGxjb2xs YXRlKTsKLQkJY29sbGN0eXBlID0gTmFtZVN0cihjb2xsZm9ybS0+Y29sbGN0eXBlKTsKLQot CQljYWNoZV9lbnRyeS0+Y29sbGF0ZV9pc19jID0gKChzdHJjbXAoY29sbGNvbGxhdGUsICJD IikgPT0gMCkgfHwKLQkJCQkJCQkJCSAoc3RyY21wKGNvbGxjb2xsYXRlLCAiUE9TSVgiKSA9 PSAwKSk7Ci0JCWNhY2hlX2VudHJ5LT5jdHlwZV9pc19jID0gKChzdHJjbXAoY29sbGN0eXBl LCAiQyIpID09IDApIHx8Ci0JCQkJCQkJCSAgIChzdHJjbXAoY29sbGN0eXBlLCAiUE9TSVgi KSA9PSAwKSk7CisJCWlmIChjb2xsZm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURF Ul9MSUJDKQorCQl7CisJCQlEYXR1bQkJZGF0dW07CisJCQlib29sCQlpc251bGw7CisJCQlj b25zdCBjaGFyICpjb2xsY29sbGF0ZTsKKwkJCWNvbnN0IGNoYXIgKmNvbGxjdHlwZTsKKwor CQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0 aW9uX2NvbGxjb2xsYXRlLCAmaXNudWxsKTsKKwkJCUFzc2VydCghaXNudWxsKTsKKwkJCWNv bGxjb2xsYXRlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJCQlkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGN0eXBl LCAmaXNudWxsKTsKKwkJCUFzc2VydCghaXNudWxsKTsKKwkJCWNvbGxjdHlwZSA9IFRleHRE YXR1bUdldENTdHJpbmcoZGF0dW0pOworCisJCQljYWNoZV9lbnRyeS0+Y29sbGF0ZV9pc19j ID0gKChzdHJjbXAoY29sbGNvbGxhdGUsICJDIikgPT0gMCkgfHwKKwkJCQkJCQkJCQkgKHN0 cmNtcChjb2xsY29sbGF0ZSwgIlBPU0lYIikgPT0gMCkpOworCQkJY2FjaGVfZW50cnktPmN0 eXBlX2lzX2MgPSAoKHN0cmNtcChjb2xsY3R5cGUsICJDIikgPT0gMCkgfHwKKwkJCQkJCQkJ CSAgIChzdHJjbXAoY29sbGN0eXBlLCAiUE9TSVgiKSA9PSAwKSk7CisJCX0KKwkJZWxzZQor CQl7CisJCQljYWNoZV9lbnRyeS0+Y29sbGF0ZV9pc19jID0gZmFsc2U7CisJCQljYWNoZV9l bnRyeS0+Y3R5cGVfaXNfYyA9IGZhbHNlOworCQl9CiAKIAkJY2FjaGVfZW50cnktPmZsYWdz X3ZhbGlkID0gdHJ1ZTsKIApAQCAtMTMzNiw2ICsxMzUxLDkgQEAgbGNfY29sbGF0ZV9pc19j KE9pZCBjb2xsYXRpb24pCiAJCXN0YXRpYyBpbnQJcmVzdWx0ID0gLTE7CiAJCWNoYXIJICAg KmxvY2FsZXB0cjsKIAorCQlpZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0gQ09MTFBS T1ZJREVSX0lDVSkKKwkJCXJldHVybiBmYWxzZTsKKwogCQlpZiAocmVzdWx0ID49IDApCiAJ CQlyZXR1cm4gKGJvb2wpIHJlc3VsdDsKIAkJbG9jYWxlcHRyID0gc2V0bG9jYWxlKExDX0NP TExBVEUsIE5VTEwpOwpAQCAtMTM4Niw2ICsxNDA0LDkgQEAgbGNfY3R5cGVfaXNfYyhPaWQg Y29sbGF0aW9uKQogCQlzdGF0aWMgaW50CXJlc3VsdCA9IC0xOwogCQljaGFyCSAgICpsb2Nh bGVwdHI7CiAKKwkJaWYgKGRlZmF1bHRfbG9jYWxlLnByb3ZpZGVyID09IENPTExQUk9WSURF Ul9JQ1UpCisJCQlyZXR1cm4gZmFsc2U7CisKIAkJaWYgKHJlc3VsdCA+PSAwKQogCQkJcmV0 dXJuIChib29sKSByZXN1bHQ7CiAJCWxvY2FsZXB0ciA9IHNldGxvY2FsZShMQ19DVFlQRSwg TlVMTCk7CkBAIC0xNDE0LDYgKzE0MzUsODggQEAgbGNfY3R5cGVfaXNfYyhPaWQgY29sbGF0 aW9uKQogCXJldHVybiAobG9va3VwX2NvbGxhdGlvbl9jYWNoZShjb2xsYXRpb24sIHRydWUp KS0+Y3R5cGVfaXNfYzsKIH0KIAorc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QgZGVmYXVsdF9s b2NhbGU7CisKK3ZvaWQKK21ha2VfaWN1X2NvbGxhdG9yKGNvbnN0IGNoYXIgKmljdWNvbGxz dHIsCisJCQkJICBzdHJ1Y3QgcGdfbG9jYWxlX3N0cnVjdCAqcmVzdWx0cCkKK3sKKyNpZmRl ZiBVU0VfSUNVCisJVUNvbGxhdG9yICAqY29sbGF0b3I7CisJVUVycm9yQ29kZQlzdGF0dXM7 CisKKwlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisJY29sbGF0b3IgPSB1Y29sX29wZW4oaWN1 Y29sbHN0ciwgJnN0YXR1cyk7CisJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBvcGVuIGNvbGxhdG9yIGZvciBsb2Nh bGUgXCIlc1wiOiAlcyIsCisJCQkJCQlpY3Vjb2xsc3RyLCB1X2Vycm9yTmFtZShzdGF0dXMp KSkpOworCisJaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNIDwgNTQpCisJCWljdV9zZXRf Y29sbGF0aW9uX2F0dHJpYnV0ZXMoY29sbGF0b3IsIGljdWNvbGxzdHIpOworCisJLyogV2Ug d2lsbCBsZWFrIHRoaXMgc3RyaW5nIGlmIHdlIGdldCBhbiBlcnJvciBiZWxvdyA6LSggKi8K KwlyZXN1bHRwLT5pbmZvLmljdS5sb2NhbGUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKFRvcE1l bW9yeUNvbnRleHQsIGljdWNvbGxzdHIpOworCXJlc3VsdHAtPmluZm8uaWN1LnVjb2wgPSBj b2xsYXRvcjsKKyNlbHNlCQkJCQkJCS8qIG5vdCBVU0VfSUNVICovCisJLyogY291bGQgZ2V0 IGhlcmUgaWYgYSBjb2xsYXRpb24gd2FzIGNyZWF0ZWQgYnkgYSBidWlsZCB3aXRoIElDVSAq LworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkgZXJybXNnKCJJQ1UgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1 aWxkIiksIFwKKwkJCSBlcnJoaW50KCJZb3UgbmVlZCB0byByZWJ1aWxkIFBvc3RncmVTUUwg dXNpbmcgJXMuIiwgIi0td2l0aC1pY3UiKSkpOworI2VuZGlmCQkJCQkJCS8qIG5vdCBVU0Vf SUNVICovCit9CisKK3ZvaWQKK2NoZWNrX2NvbGxhdGlvbl92ZXJzaW9uKEhlYXBUdXBsZSBj b2xsdHVwbGUpCit7CisJRm9ybV9wZ19jb2xsYXRpb24gY29sbGZvcm07CisJRGF0dW0JCWNv bGx2ZXJzaW9uOworCWJvb2wJCWlzbnVsbDsKKworCWNvbGxmb3JtID0gKEZvcm1fcGdfY29s bGF0aW9uKSBHRVRTVFJVQ1QoY29sbHR1cGxlKTsKKworCWNvbGx2ZXJzaW9uID0gU3lzQ2Fj aGVHZXRBdHRyKENPTExPSUQsIGNvbGx0dXBsZSwgQW51bV9wZ19jb2xsYXRpb25fY29sbHZl cnNpb24sCisJCQkJCQkJCSAgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJeworCQljaGFy CSAgICphY3R1YWxfdmVyc2lvbnN0cjsKKwkJY2hhcgkgICAqY29sbHZlcnNpb25zdHI7CisJ CURhdHVtCQlkYXR1bTsKKwkJYm9vbAkJaXNudWxsOworCisJCWRhdHVtID0gU3lzQ2FjaGVH ZXRBdHRyKENPTExPSUQsIGNvbGx0dXBsZSwgY29sbGZvcm0tPmNvbGxwcm92aWRlciA9PSBD T0xMUFJPVklERVJfSUNVID8gQW51bV9wZ19jb2xsYXRpb25fY29sbGljdWNvbGwgOiBBbnVt X3BnX2NvbGxhdGlvbl9jb2xsY29sbGF0ZSwgJmlzbnVsbCk7CisJCUFzc2VydCghaXNudWxs KTsKKworCQlhY3R1YWxfdmVyc2lvbnN0ciA9IGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNp b24oY29sbGZvcm0tPmNvbGxwcm92aWRlciwKKwkJCQkJCQkJCQkJCQkJIFRleHREYXR1bUdl dENTdHJpbmcoZGF0dW0pKTsKKwkJaWYgKCFhY3R1YWxfdmVyc2lvbnN0cikKKwkJeworCQkJ LyoKKwkJCSAqIFRoaXMgY291bGQgaGFwcGVuIHdoZW4gc3BlY2lmeWluZyBhIHZlcnNpb24g aW4gQ1JFQVRFCisJCQkgKiBDT0xMQVRJT04gZm9yIGEgbGliYyBsb2NhbGUsIG9yIG1hbnVh bGx5IGNyZWF0aW5nIGEgbWVzcyBpbgorCQkJICogdGhlIGNhdGFsb2dzLgorCQkJICovCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJybXNnKCJjb2xsYXRpb24gXCIlc1wiIGhhcyBu byBhY3R1YWwgdmVyc2lvbiwgYnV0IGEgdmVyc2lvbiB3YXMgc3BlY2lmaWVkIiwKKwkJCQkJ CQlOYW1lU3RyKGNvbGxmb3JtLT5jb2xsbmFtZSkpKSk7CisJCX0KKwkJY29sbHZlcnNpb25z dHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGNvbGx2ZXJzaW9uKTsKKworCQlpZiAoc3RyY21w KGFjdHVhbF92ZXJzaW9uc3RyLCBjb2xsdmVyc2lvbnN0cikgIT0gMCkKKwkJCWVyZXBvcnQo V0FSTklORywKKwkJCQkJKGVycm1zZygiY29sbGF0aW9uIFwiJXNcIiBoYXMgdmVyc2lvbiBt aXNtYXRjaCIsCisJCQkJCQkJTmFtZVN0cihjb2xsZm9ybS0+Y29sbG5hbWUpKSwKKwkJCQkJ IGVycmRldGFpbCgiVGhlIGNvbGxhdGlvbiBpbiB0aGUgZGF0YWJhc2Ugd2FzIGNyZWF0ZWQg dXNpbmcgdmVyc2lvbiAlcywgIgorCQkJCQkJCSAgICJidXQgdGhlIG9wZXJhdGluZyBzeXN0 ZW0gcHJvdmlkZXMgdmVyc2lvbiAlcy4iLAorCQkJCQkJCSAgIGNvbGx2ZXJzaW9uc3RyLCBh Y3R1YWxfdmVyc2lvbnN0ciksCisJCQkJCSBlcnJoaW50KCJSZWJ1aWxkIGFsbCBvYmplY3Rz IGFmZmVjdGVkIGJ5IHRoaXMgY29sbGF0aW9uIGFuZCBydW4gIgorCQkJCQkJCSAiQUxURVIg Q09MTEFUSU9OICVzIFJFRlJFU0ggVkVSU0lPTiwgIgorCQkJCQkJCSAib3IgYnVpbGQgUG9z dGdyZVNRTCB3aXRoIHRoZSByaWdodCBsaWJyYXJ5IHZlcnNpb24uIiwKKwkJCQkJCQkgcXVv dGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoZ2V0X25hbWVzcGFjZV9uYW1lKGNvbGxmb3JtLT5j b2xsbmFtZXNwYWNlKSwKKwkJCQkJCQkJCQkJCQkJTmFtZVN0cihjb2xsZm9ybS0+Y29sbG5h bWUpKSkpKTsKKwl9Cit9CiAKIC8qIHNpbXBsZSBzdWJyb3V0aW5lIGZvciByZXBvcnRpbmcg ZXJyb3JzIGZyb20gbmV3bG9jYWxlKCkgKi8KICNpZmRlZiBIQVZFX0xPQ0FMRV9UCkBAIC0x NDgzLDIxICsxNTg2LDE0IEBAIHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihPaWQgY29s bGlkKQogCQkvKiBXZSBoYXZlbid0IGNvbXB1dGVkIHRoaXMgeWV0IGluIHRoaXMgc2Vzc2lv biwgc28gZG8gaXQgKi8KIAkJSGVhcFR1cGxlCXRwOwogCQlGb3JtX3BnX2NvbGxhdGlvbiBj b2xsZm9ybTsKLQkJY29uc3QgY2hhciAqY29sbGNvbGxhdGU7Ci0JCWNvbnN0IGNoYXIgKmNv bGxjdHlwZSBwZ19hdHRyaWJ1dGVfdW51c2VkKCk7CiAJCXN0cnVjdCBwZ19sb2NhbGVfc3Ry dWN0IHJlc3VsdDsKIAkJcGdfbG9jYWxlX3QgcmVzdWx0cDsKLQkJRGF0dW0JCWNvbGx2ZXJz aW9uOwotCQlib29sCQlpc251bGw7CiAKIAkJdHAgPSBTZWFyY2hTeXNDYWNoZTEoQ09MTE9J RCwgT2JqZWN0SWRHZXREYXR1bShjb2xsaWQpKTsKIAkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHRwKSkKIAkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb2xsYXRp b24gJXUiLCBjb2xsaWQpOwogCQljb2xsZm9ybSA9IChGb3JtX3BnX2NvbGxhdGlvbikgR0VU U1RSVUNUKHRwKTsKIAotCQljb2xsY29sbGF0ZSA9IE5hbWVTdHIoY29sbGZvcm0tPmNvbGxj b2xsYXRlKTsKLQkJY29sbGN0eXBlID0gTmFtZVN0cihjb2xsZm9ybS0+Y29sbGN0eXBlKTsK LQogCQkvKiBXZSdsbCBmaWxsIGluIHRoZSByZXN1bHQgc3RydWN0IGxvY2FsbHkgYmVmb3Jl IGFsbG9jYXRpbmcgbWVtb3J5ICovCiAJCW1lbXNldCgmcmVzdWx0LCAwLCBzaXplb2YocmVz dWx0KSk7CiAJCXJlc3VsdC5wcm92aWRlciA9IGNvbGxmb3JtLT5jb2xscHJvdmlkZXI7CkBA IC0xNTA2LDggKzE2MDIsMTkgQEAgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBj b2xsaWQpCiAJCWlmIChjb2xsZm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9M SUJDKQogCQl7CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAorCQkJRGF0dW0JCWRhdHVtOworCQkJ Ym9vbAkJaXNudWxsOworCQkJY29uc3QgY2hhciAqY29sbGNvbGxhdGU7CisJCQljb25zdCBj aGFyICpjb2xsY3R5cGUgcGdfYXR0cmlidXRlX3VudXNlZCgpOwogCQkJbG9jYWxlX3QJbG9j OwogCisJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19j b2xsYXRpb25fY29sbGNvbGxhdGUsICZpc251bGwpOworCQkJQXNzZXJ0KCFpc251bGwpOwor CQkJY29sbGNvbGxhdGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwkJCWRhdHVt ID0gU3lzQ2FjaGVHZXRBdHRyKENPTExPSUQsIHRwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xs Y3R5cGUsICZpc251bGwpOworCQkJQXNzZXJ0KCFpc251bGwpOworCQkJY29sbGN0eXBlID0g VGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisKIAkJCWlmIChzdHJjbXAoY29sbGNvbGxh dGUsIGNvbGxjdHlwZSkgPT0gMCkKIAkJCXsKIAkJCQkvKiBOb3JtYWwgY2FzZSB3aGVyZSB0 aGV5J3JlIHRoZSBzYW1lICovCkBAIC0xNTU4LDcyICsxNjY1LDE3IEBAIHBnX25ld2xvY2Fs ZV9mcm9tX2NvbGxhdGlvbihPaWQgY29sbGlkKQogCQl9CiAJCWVsc2UgaWYgKGNvbGxmb3Jt LT5jb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKIAkJewotI2lmZGVmIFVTRV9J Q1UKLQkJCVVDb2xsYXRvciAgKmNvbGxhdG9yOwotCQkJVUVycm9yQ29kZQlzdGF0dXM7Ci0K LQkJCWlmIChzdHJjbXAoY29sbGNvbGxhdGUsIGNvbGxjdHlwZSkgIT0gMCkKLQkJCQllcmVw b3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAotCQkJCQkJIGVycm1zZygiY29sbGF0aW9ucyB3aXRoIGRpZmZlcmVudCBjb2xsYXRl IGFuZCBjdHlwZSB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgSUNVIikpKTsKLQotCQkJ c3RhdHVzID0gVV9aRVJPX0VSUk9SOwotCQkJY29sbGF0b3IgPSB1Y29sX29wZW4oY29sbGNv bGxhdGUsICZzdGF0dXMpOwotCQkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotCQkJCWVyZXBv cnQoRVJST1IsCi0JCQkJCQkoZXJybXNnKCJjb3VsZCBub3Qgb3BlbiBjb2xsYXRvciBmb3Ig bG9jYWxlIFwiJXNcIjogJXMiLAotCQkJCQkJCQljb2xsY29sbGF0ZSwgdV9lcnJvck5hbWUo c3RhdHVzKSkpKTsKLQotCQkJaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNIDwgNTQpCi0J CQkJaWN1X3NldF9jb2xsYXRpb25fYXR0cmlidXRlcyhjb2xsYXRvciwgY29sbGNvbGxhdGUp OwotCi0JCQkvKiBXZSB3aWxsIGxlYWsgdGhpcyBzdHJpbmcgaWYgd2UgZ2V0IGFuIGVycm9y IGJlbG93IDotKCAqLwotCQkJcmVzdWx0LmluZm8uaWN1LmxvY2FsZSA9IE1lbW9yeUNvbnRl eHRTdHJkdXAoVG9wTWVtb3J5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJIGNvbGxjb2xsYXRl KTsKLQkJCXJlc3VsdC5pbmZvLmljdS51Y29sID0gY29sbGF0b3I7Ci0jZWxzZQkJCQkJCQkv KiBub3QgVVNFX0lDVSAqLwotCQkJLyogY291bGQgZ2V0IGhlcmUgaWYgYSBjb2xsYXRpb24g d2FzIGNyZWF0ZWQgYnkgYSBidWlsZCB3aXRoIElDVSAqLwotCQkJZXJlcG9ydChFUlJPUiwK LQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkg ZXJybXNnKCJJQ1UgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIiksIFwKLQkJCQkJ IGVycmhpbnQoIllvdSBuZWVkIHRvIHJlYnVpbGQgUG9zdGdyZVNRTCB1c2luZyAlcy4iLCAi LS13aXRoLWljdSIpKSk7Ci0jZW5kaWYJCQkJCQkJLyogbm90IFVTRV9JQ1UgKi8KKwkJCURh dHVtCQlkYXR1bTsKKwkJCWJvb2wJCWlzbnVsbDsKKwkJCWNvbnN0IGNoYXIgKmljdWNvbGxz dHI7OworCisJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9w Z19jb2xsYXRpb25fY29sbGljdWNvbGwsICZpc251bGwpOworCQkJQXNzZXJ0KCFpc251bGwp OworCQkJaWN1Y29sbHN0ciA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCQkJbWFr ZV9pY3VfY29sbGF0b3IoaWN1Y29sbHN0ciwgJnJlc3VsdCk7CiAJCX0KIAotCQljb2xsdmVy c2lvbiA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25f Y29sbHZlcnNpb24sCi0JCQkJCQkJCQkgICZpc251bGwpOwotCQlpZiAoIWlzbnVsbCkKLQkJ ewotCQkJY2hhcgkgICAqYWN0dWFsX3ZlcnNpb25zdHI7Ci0JCQljaGFyCSAgICpjb2xsdmVy c2lvbnN0cjsKLQotCQkJYWN0dWFsX3ZlcnNpb25zdHIgPSBnZXRfY29sbGF0aW9uX2FjdHVh bF92ZXJzaW9uKGNvbGxmb3JtLT5jb2xscHJvdmlkZXIsIGNvbGxjb2xsYXRlKTsKLQkJCWlm ICghYWN0dWFsX3ZlcnNpb25zdHIpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBUaGlzIGNvdWxk IGhhcHBlbiB3aGVuIHNwZWNpZnlpbmcgYSB2ZXJzaW9uIGluIENSRUFURQotCQkJCSAqIENP TExBVElPTiBmb3IgYSBsaWJjIGxvY2FsZSwgb3IgbWFudWFsbHkgY3JlYXRpbmcgYSBtZXNz IGluCi0JCQkJICogdGhlIGNhdGFsb2dzLgotCQkJCSAqLwotCQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCQkoZXJybXNnKCJjb2xsYXRpb24gXCIlc1wiIGhhcyBubyBhY3R1YWwgdmVyc2lv biwgYnV0IGEgdmVyc2lvbiB3YXMgc3BlY2lmaWVkIiwKLQkJCQkJCQkJTmFtZVN0cihjb2xs Zm9ybS0+Y29sbG5hbWUpKSkpOwotCQkJfQotCQkJY29sbHZlcnNpb25zdHIgPSBUZXh0RGF0 dW1HZXRDU3RyaW5nKGNvbGx2ZXJzaW9uKTsKLQotCQkJaWYgKHN0cmNtcChhY3R1YWxfdmVy c2lvbnN0ciwgY29sbHZlcnNpb25zdHIpICE9IDApCi0JCQkJZXJlcG9ydChXQVJOSU5HLAot CQkJCQkJKGVycm1zZygiY29sbGF0aW9uIFwiJXNcIiBoYXMgdmVyc2lvbiBtaXNtYXRjaCIs Ci0JCQkJCQkJCU5hbWVTdHIoY29sbGZvcm0tPmNvbGxuYW1lKSksCi0JCQkJCQkgZXJyZGV0 YWlsKCJUaGUgY29sbGF0aW9uIGluIHRoZSBkYXRhYmFzZSB3YXMgY3JlYXRlZCB1c2luZyB2 ZXJzaW9uICVzLCAiCi0JCQkJCQkJCSAgICJidXQgdGhlIG9wZXJhdGluZyBzeXN0ZW0gcHJv dmlkZXMgdmVyc2lvbiAlcy4iLAotCQkJCQkJCQkgICBjb2xsdmVyc2lvbnN0ciwgYWN0dWFs X3ZlcnNpb25zdHIpLAotCQkJCQkJIGVycmhpbnQoIlJlYnVpbGQgYWxsIG9iamVjdHMgYWZm ZWN0ZWQgYnkgdGhpcyBjb2xsYXRpb24gYW5kIHJ1biAiCi0JCQkJCQkJCSAiQUxURVIgQ09M TEFUSU9OICVzIFJFRlJFU0ggVkVSU0lPTiwgIgotCQkJCQkJCQkgIm9yIGJ1aWxkIFBvc3Rn cmVTUUwgd2l0aCB0aGUgcmlnaHQgbGlicmFyeSB2ZXJzaW9uLiIsCi0JCQkJCQkJCSBxdW90 ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihnZXRfbmFtZXNwYWNlX25hbWUoY29sbGZvcm0tPmNv bGxuYW1lc3BhY2UpLAotCQkJCQkJCQkJCQkJCQkJTmFtZVN0cihjb2xsZm9ybS0+Y29sbG5h bWUpKSkpKTsKLQkJfQorCQljaGVja19jb2xsYXRpb25fdmVyc2lvbih0cCk7CiAKIAkJUmVs ZWFzZVN5c0NhY2hlKHRwKTsKIApAQCAtMTY0Niw2ICsxNjk4LDE3IEBAIGdldF9jb2xsYXRp b25fYWN0dWFsX3ZlcnNpb24oY2hhciBjb2xscHJvdmlkZXIsIGNvbnN0IGNoYXIgKmNvbGxj b2xsYXRlKQogewogCWNoYXIJICAgKmNvbGx2ZXJzaW9uID0gTlVMTDsKIAorCWlmIChjb2xs cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0RFRkFVTFQpCisJeworI2lmZGVmIFVTRV9JQ1UK KwkJaWYgKGRlZmF1bHRfbG9jYWxlLnByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJ CQljb2xsdmVyc2lvbiA9IGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oZGVmYXVsdF9s b2NhbGUucHJvdmlkZXIsCisJCQkJCQkJCQkJCQkJICAgZGVmYXVsdF9sb2NhbGUuaW5mby5p Y3UubG9jYWxlKTsKKwkJZWxzZQorI2VuZGlmCisJCQljb2xsdmVyc2lvbiA9IE5VTEw7CisJ fQorCWVsc2UKICNpZmRlZiBVU0VfSUNVCiAJaWYgKGNvbGxwcm92aWRlciA9PSBDT0xMUFJP VklERVJfSUNVKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJj aGFyLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFyY2hhci5jCmluZGV4IDhmYzg0NjQ5 ZjEuLjdlYjllNTlhMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJj aGFyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmNoYXIuYwpAQCAtNzUwLDcg Kzc1MCw3IEBAIGJwY2hhcmVxKFBHX0ZVTkNUSU9OX0FSR1MpCiAJbGVuMiA9IGJjVHJ1ZWxl bihhcmcyKTsKIAogCWlmIChsY19jb2xsYXRlX2lzX2MoY29sbGlkKSB8fAotCQljb2xsaWQg PT0gREVGQVVMVF9DT0xMQVRJT05fT0lEIHx8CisJCShjb2xsaWQgPT0gREVGQVVMVF9DT0xM QVRJT05fT0lEICYmIGRlZmF1bHRfbG9jYWxlLmRldGVybWluaXN0aWMpIHx8CiAJCXBnX25l d2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpLT5kZXRlcm1pbmlzdGljKQogCXsKIAkJ LyoKQEAgLTc5MCw3ICs3OTAsNyBAQCBicGNoYXJuZShQR19GVU5DVElPTl9BUkdTKQogCWxl bjIgPSBiY1RydWVsZW4oYXJnMik7CiAKIAlpZiAobGNfY29sbGF0ZV9pc19jKGNvbGxpZCkg fHwKLQkJY29sbGlkID09IERFRkFVTFRfQ09MTEFUSU9OX09JRCB8fAorCQkoY29sbGlkID09 IERFRkFVTFRfQ09MTEFUSU9OX09JRCAmJiBkZWZhdWx0X2xvY2FsZS5kZXRlcm1pbmlzdGlj KSB8fAogCQlwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKS0+ZGV0ZXJtaW5p c3RpYykKIAl7CiAJCS8qCkBAIC05OTYsOCArOTk2LDEzIEBAIGhhc2hicGNoYXIoUEdfRlVO Q1RJT05fQVJHUykKIAlrZXlkYXRhID0gVkFSREFUQV9BTlkoa2V5KTsKIAlrZXlsZW4gPSBi Y1RydWVsZW4oa2V5KTsKIAotCWlmICghbGNfY29sbGF0ZV9pc19jKGNvbGxpZCkgJiYgY29s bGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKLQkJbXlsb2NhbGUgPSBwZ19uZXdsb2Nh bGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKKwlpZiAoIWxjX2NvbGxhdGVfaXNfYyhjb2xs aWQpKQorCXsKKwkJaWYgKGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJCQlt eWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOworCQllbHNl IGlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQkJ bXlsb2NhbGUgPSAmZGVmYXVsdF9sb2NhbGU7CisJfQogCiAJaWYgKCFteWxvY2FsZSB8fCBt eWxvY2FsZS0+ZGV0ZXJtaW5pc3RpYykKIAl7CkBAIC0xMDU2LDggKzEwNjEsMTMgQEAgaGFz aGJwY2hhcmV4dGVuZGVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJa2V5ZGF0YSA9IFZBUkRBVEFf QU5ZKGtleSk7CiAJa2V5bGVuID0gYmNUcnVlbGVuKGtleSk7CiAKLQlpZiAoIWxjX2NvbGxh dGVfaXNfYyhjb2xsaWQpICYmIGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCi0J CW15bG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxpZCk7CisJaWYg KCFsY19jb2xsYXRlX2lzX2MoY29sbGlkKSkKKwl7CisJCWlmIChjb2xsaWQgIT0gREVGQVVM VF9DT0xMQVRJT05fT0lEKQorCQkJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xs YXRpb24oY29sbGlkKTsKKwkJZWxzZSBpZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0g Q09MTFBST1ZJREVSX0lDVSkKKwkJCW15bG9jYWxlID0gJmRlZmF1bHRfbG9jYWxlOworCX0K IAogCWlmICghbXlsb2NhbGUgfHwgbXlsb2NhbGUtPmRldGVybWluaXN0aWMpCiAJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXggYmQzMDkxYmJmYi4uNTQ5MmM4NWYzNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvdmFybGVuYS5jCkBAIC0xMjAwLDggKzEyMDAsMTMgQEAgdGV4dF9w b3NpdGlvbl9zZXR1cCh0ZXh0ICp0MSwgdGV4dCAqdDIsIE9pZCBjb2xsaWQsIFRleHRQb3Np dGlvblN0YXRlICpzdGF0ZSkKIAogCWNoZWNrX2NvbGxhdGlvbl9zZXQoY29sbGlkKTsKIAot CWlmICghbGNfY29sbGF0ZV9pc19jKGNvbGxpZCkgJiYgY29sbGlkICE9IERFRkFVTFRfQ09M TEFUSU9OX09JRCkKLQkJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24o Y29sbGlkKTsKKwlpZiAoIWxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpKQorCXsKKwkJaWYgKGNv bGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJCQlteWxvY2FsZSA9IHBnX25ld2xv Y2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOworCQllbHNlIGlmIChkZWZhdWx0X2xvY2Fs ZS5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQkJbXlsb2NhbGUgPSAmZGVmYXVs dF9sb2NhbGU7CisJfQogCiAJaWYgKG15bG9jYWxlICYmICFteWxvY2FsZS0+ZGV0ZXJtaW5p c3RpYykKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTE1NjAsNiArMTU2NSw4IEBAIHZhcnN0cl9j bXAoY29uc3QgY2hhciAqYXJnMSwgaW50IGxlbjEsIGNvbnN0IGNoYXIgKmFyZzIsIGludCBs ZW4yLCBPaWQgY29sbGlkKQogCiAJCWlmIChjb2xsaWQgIT0gREVGQVVMVF9DT0xMQVRJT05f T0lEKQogCQkJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlk KTsKKwkJZWxzZSBpZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0gQ09MTFBST1ZJREVS X0lDVSkKKwkJCW15bG9jYWxlID0gJmRlZmF1bHRfbG9jYWxlOwogCiAJCS8qCiAJCSAqIG1l bWNtcCgpIGNhbid0IHRlbGwgdXMgd2hpY2ggb2YgdHdvIHVuZXF1YWwgc3RyaW5ncyBzb3J0 cyBmaXJzdCwKQEAgLTE3ODEsNyArMTc4OCw3IEBAIHRleHRlcShQR19GVU5DVElPTl9BUkdT KQogCWNoZWNrX2NvbGxhdGlvbl9zZXQoY29sbGlkKTsKIAogCWlmIChsY19jb2xsYXRlX2lz X2MoY29sbGlkKSB8fAotCQljb2xsaWQgPT0gREVGQVVMVF9DT0xMQVRJT05fT0lEIHx8CisJ CShjb2xsaWQgPT0gREVGQVVMVF9DT0xMQVRJT05fT0lEICYmIGRlZmF1bHRfbG9jYWxlLmRl dGVybWluaXN0aWMpIHx8CiAJCXBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQp LT5kZXRlcm1pbmlzdGljKQogCXsKIAkJRGF0dW0JCWFyZzEgPSBQR19HRVRBUkdfREFUVU0o MCk7CkBAIC0xODM1LDcgKzE4NDIsNyBAQCB0ZXh0bmUoUEdfRlVOQ1RJT05fQVJHUykKIAlj aGVja19jb2xsYXRpb25fc2V0KGNvbGxpZCk7CiAKIAlpZiAobGNfY29sbGF0ZV9pc19jKGNv bGxpZCkgfHwKLQkJY29sbGlkID09IERFRkFVTFRfQ09MTEFUSU9OX09JRCB8fAorCQkoY29s bGlkID09IERFRkFVTFRfQ09MTEFUSU9OX09JRCAmJiBkZWZhdWx0X2xvY2FsZS5kZXRlcm1p bmlzdGljKSB8fAogCQlwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKS0+ZGV0 ZXJtaW5pc3RpYykKIAl7CiAJCURhdHVtCQlhcmcxID0gUEdfR0VUQVJHX0RBVFVNKDApOwpA QCAtMTk0Nyw4ICsxOTU0LDEzIEBAIHRleHRfc3RhcnRzX3dpdGgoUEdfRlVOQ1RJT05fQVJH UykKIAogCWNoZWNrX2NvbGxhdGlvbl9zZXQoY29sbGlkKTsKIAotCWlmICghbGNfY29sbGF0 ZV9pc19jKGNvbGxpZCkgJiYgY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKLQkJ bXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKKwlpZiAo IWxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpKQorCXsKKwkJaWYgKGNvbGxpZCAhPSBERUZBVUxU X0NPTExBVElPTl9PSUQpCisJCQlteWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxh dGlvbihjb2xsaWQpOworCQllbHNlIGlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBD T0xMUFJPVklERVJfSUNVKQorCQkJbXlsb2NhbGUgPSAmZGVmYXVsdF9sb2NhbGU7CisJfQog CiAJaWYgKG15bG9jYWxlICYmICFteWxvY2FsZS0+ZGV0ZXJtaW5pc3RpYykKIAkJZXJlcG9y dChFUlJPUiwKQEAgLTIwNjMsNiArMjA3NSw4IEBAIHZhcnN0cl9zb3J0c3VwcG9ydChTb3J0 U3VwcG9ydCBzc3VwLCBPaWQgdHlwaWQsIE9pZCBjb2xsaWQpCiAJCSAqLwogCQlpZiAoY29s bGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKIAkJCWxvY2FsZSA9IHBnX25ld2xvY2Fs ZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOworCQllbHNlIGlmIChkZWZhdWx0X2xvY2FsZS5w cm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQkJbG9jYWxlID0gJmRlZmF1bHRfbG9j YWxlOwogCiAJCS8qCiAJCSAqIFRoZXJlIGlzIGEgZnVydGhlciBleGNlcHRpb24gb24gV2lu ZG93cy4gIFdoZW4gdGhlIGRhdGFiYXNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMK aW5kZXggNzI5MmU1MWY3ZC4uMjMxOTE2NmU5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvaW5pdC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9z dGluaXQuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5o IgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19hdXRoaWQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RiX3Jv bGVfc2V0dGluZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgpAQCAt NTMsNiArNTQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc3luYy5oIgogI2luY2x1ZGUgInRj b3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKKyNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAi dXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTMwNiw2ICsz MDgsOCBAQCBDaGVja015RGF0YWJhc2UoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbV9zdXBl cnVzZXIsIGJvb2wgb3ZlcnJpZGVfYWxsb3dfY29ubmVjdAogewogCUhlYXBUdXBsZQl0dXA7 CiAJRm9ybV9wZ19kYXRhYmFzZSBkYmZvcm07CisJRGF0dW0JCWRhdHVtOworCWJvb2wJCWlz bnVsbDsKIAljaGFyCSAgICpjb2xsYXRlOwogCWNoYXIJICAgKmN0eXBlOwogCkBAIC0zODks OCArMzkzLDEyIEBAIENoZWNrTXlEYXRhYmFzZShjb25zdCBjaGFyICpuYW1lLCBib29sIGFt X3N1cGVydXNlciwgYm9vbCBvdmVycmlkZV9hbGxvd19jb25uZWN0CiAJCQkJCVBHQ19CQUNL RU5ELCBQR0NfU19EWU5BTUlDX0RFRkFVTFQpOwogCiAJLyogYXNzaWduIGxvY2FsZSB2YXJp YWJsZXMgKi8KLQljb2xsYXRlID0gTmFtZVN0cihkYmZvcm0tPmRhdGNvbGxhdGUpOwotCWN0 eXBlID0gTmFtZVN0cihkYmZvcm0tPmRhdGN0eXBlKTsKKwlkYXR1bSA9IFN5c0NhY2hlR2V0 QXR0cihEQVRBQkFTRU9JRCwgdHVwLCBBbnVtX3BnX2RhdGFiYXNlX2RhdGNvbGxhdGUsICZp c251bGwpOworCUFzc2VydCghaXNudWxsKTsKKwljb2xsYXRlID0gVGV4dERhdHVtR2V0Q1N0 cmluZyhkYXR1bSk7CisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoREFUQUJBU0VPSUQsIHR1 cCwgQW51bV9wZ19kYXRhYmFzZV9kYXRjdHlwZSwgJmlzbnVsbCk7CisJQXNzZXJ0KCFpc251 bGwpOworCWN0eXBlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CiAKIAlpZiAocGdf cGVybV9zZXRsb2NhbGUoTENfQ09MTEFURSwgY29sbGF0ZSkgPT0gTlVMTCkKIAkJZXJlcG9y dChGQVRBTCwKQEAgLTQwNiw2ICs0MTQsMzEgQEAgQ2hlY2tNeURhdGFiYXNlKGNvbnN0IGNo YXIgKm5hbWUsIGJvb2wgYW1fc3VwZXJ1c2VyLCBib29sIG92ZXJyaWRlX2FsbG93X2Nvbm5l Y3QKIAkJCQkJCSAgICIgd2hpY2ggaXMgbm90IHJlY29nbml6ZWQgYnkgc2V0bG9jYWxlKCku IiwgY3R5cGUpLAogCQkJCSBlcnJoaW50KCJSZWNyZWF0ZSB0aGUgZGF0YWJhc2Ugd2l0aCBh bm90aGVyIGxvY2FsZSBvciBpbnN0YWxsIHRoZSBtaXNzaW5nIGxvY2FsZS4iKSkpOwogCisJ aWYgKGRiZm9ybS0+ZGF0Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJewor CQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihEQVRBQkFTRU9JRCwgdHVwLCBBbnVtX3BnX2Rh dGFiYXNlX2RhdGljdWNvbGwsICZpc251bGwpOworCQlBc3NlcnQoIWlzbnVsbCk7CisJCW1h a2VfaWN1X2NvbGxhdG9yKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pLCAmZGVmYXVsdF9s b2NhbGUpOworCX0KKworCWRlZmF1bHRfbG9jYWxlLnByb3ZpZGVyID0gZGJmb3JtLT5kYXRj b2xscHJvdmlkZXI7CisJLyoKKwkgKiBEZWZhdWx0IGxvY2FsZSBpcyBjdXJyZW50bHkgYWx3 YXlzIGRldGVybWluaXN0aWMuICBOb25kZXRlcm1pbmlzdGljCisJICogbG9jYWxlcyBjdXJy ZW50bHkgZG9uJ3Qgc3VwcG9ydCBwYXR0ZXJuIG1hdGNoaW5nLCB3aGljaCB3b3VsZCBicmVh ayBhCisJICogbG90IG9mIHRoaW5ncyBpZiBhcHBsaWVkIGdsb2JhbGx5LgorCSAqLworCWRl ZmF1bHRfbG9jYWxlLmRldGVybWluaXN0aWMgPSB0cnVlOworCisJeworCQlIZWFwVHVwbGUJ dHA7CisKKwkJdHAgPSBTZWFyY2hTeXNDYWNoZTEoQ09MTE9JRCwgT2JqZWN0SWRHZXREYXR1 bShERUZBVUxUX0NPTExBVElPTl9PSUQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRw KSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb2xsYXRpb24g JXUiLCBERUZBVUxUX0NPTExBVElPTl9PSUQpOworCQljaGVja19jb2xsYXRpb25fdmVyc2lv bih0cCk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJfQorCiAJLyogTWFrZSB0aGUgbG9j YWxlIHNldHRpbmdzIHZpc2libGUgYXMgR1VDIHZhcmlhYmxlcywgdG9vICovCiAJU2V0Q29u ZmlnT3B0aW9uKCJsY19jb2xsYXRlIiwgY29sbGF0ZSwgUEdDX0lOVEVSTkFMLCBQR0NfU19P VkVSUklERSk7CiAJU2V0Q29uZmlnT3B0aW9uKCJsY19jdHlwZSIsIGN0eXBlLCBQR0NfSU5U RVJOQUwsIFBHQ19TX09WRVJSSURFKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL01h a2VmaWxlIGIvc3JjL2Jpbi9pbml0ZGIvTWFrZWZpbGUKaW5kZXggYTYyMGE1YmVhMC4uOTkz ZDJmYTdhMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvTWFrZWZpbGUKKysrIGIvc3Jj L2Jpbi9pbml0ZGIvTWFrZWZpbGUKQEAgLTYyLDYgKzYyLDggQEAgY2xlYW4gZGlzdGNsZWFu IG1haW50YWluZXItY2xlYW46CiAjIGVuc3VyZSB0aGF0IGNoYW5nZXMgaW4gZGF0YWRpciBw cm9wYWdhdGUgaW50byBvYmplY3QgZmlsZQogaW5pdGRiLm86IGluaXRkYi5jICQodG9wX2J1 aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKK2V4cG9ydCB3aXRoX2ljdQorCiBjaGVj azoKIAkkKHByb3ZlX2NoZWNrKQogCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0 ZGIuYyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCmluZGV4IDAzYjgwZjk1NzUuLjllZTAw MzdkNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9i aW4vaW5pdGRiL2luaXRkYi5jCkBAIC0xMzEsNiArMTMxLDggQEAgc3RhdGljIGNoYXIgKmxj X21vbmV0YXJ5ID0gTlVMTDsKIHN0YXRpYyBjaGFyICpsY19udW1lcmljID0gTlVMTDsKIHN0 YXRpYyBjaGFyICpsY190aW1lID0gTlVMTDsKIHN0YXRpYyBjaGFyICpsY19tZXNzYWdlcyA9 IE5VTEw7CitzdGF0aWMgY2hhciBjb2xsYXRpb25fcHJvdmlkZXJbXSA9IHtDT0xMUFJPVklE RVJfTElCQywgJ1wwJ307CitzdGF0aWMgY2hhciAqaWN1X2xvY2FsZSA9IE5VTEw7CiBzdGF0 aWMgY29uc3QgY2hhciAqZGVmYXVsdF90ZXh0X3NlYXJjaF9jb25maWcgPSBOVUxMOwogc3Rh dGljIGNoYXIgKnVzZXJuYW1lID0gTlVMTDsKIHN0YXRpYyBib29sIHB3cHJvbXB0ID0gZmFs c2U7CkBAIC0xNDA0LDYgKzE0MDYsMTIgQEAgYm9vdHN0cmFwX3RlbXBsYXRlMSh2b2lkKQog CWJraV9saW5lcyA9IHJlcGxhY2VfdG9rZW4oYmtpX2xpbmVzLCAiTENfQ1RZUEUiLAogCQkJ CQkJCSAgZXNjYXBlX3F1b3Rlc19ia2kobGNfY3R5cGUpKTsKIAorCWJraV9saW5lcyA9IHJl cGxhY2VfdG9rZW4oYmtpX2xpbmVzLCAiSUNVQ09MTCIsCisJCQkJCQkJICBlc2NhcGVfcXVv dGVzX2JraShjb2xsYXRpb25fcHJvdmlkZXJbMF0gPT0gQ09MTFBST1ZJREVSX0lDVSA/IGlj dV9sb2NhbGUgOiAiX251bGxfIikpOworCisJYmtpX2xpbmVzID0gcmVwbGFjZV90b2tlbihi a2lfbGluZXMsICJDT0xMUFJPVklERVIiLAorCQkJCQkJCSAgY29sbGF0aW9uX3Byb3ZpZGVy KTsKKwogCS8qIEFsc28gZW5zdXJlIGJhY2tlbmQgaXNuJ3QgY29uZnVzZWQgYnkgdGhpcyBl bnZpcm9ubWVudCB2YXI6ICovCiAJdW5zZXRlbnYoIlBHQ0xJRU5URU5DT0RJTkciKTsKIApA QCAtMTU4Niw2ICsxNTk0LDEyIEBAIHNldHVwX2Rlc2NyaXB0aW9uKEZJTEUgKmNtZGZkKQog c3RhdGljIHZvaWQKIHNldHVwX2NvbGxhdGlvbihGSUxFICpjbWRmZCkKIHsKKwkvKgorCSAq IFNldCB2ZXJzaW9uIG9mIHRoZSBkZWZhdWx0IGNvbGxhdGlvbi4KKwkgKi8KKwlQR19DTURf UFJJTlRGKCJVUERBVEUgcGdfY29sbGF0aW9uIFNFVCBjb2xsdmVyc2lvbiA9IHBnX2NvbGxh dGlvbl9hY3R1YWxfdmVyc2lvbihvaWQpIFdIRVJFIG9pZCA9ICVkO1xuXG4iLAorCQkJCSAg REVGQVVMVF9DT0xMQVRJT05fT0lEKTsKKwogCS8qCiAJICogQWRkIGFuIFNRTC1zdGFuZGFy ZCBuYW1lLiAgV2UgZG9uJ3Qgd2FudCB0byBwaW4gdGhpcywgc28gaXQgZG9lc24ndCBnbwog CSAqIGluIHBnX2NvbGxhdGlvbi5oLiAgQnV0IGFkZCBpdCBiZWZvcmUgcmVhZGluZyBzeXN0 ZW0gY29sbGF0aW9ucywgc28KQEAgLTE4MzksOCArMTg1Myw2IEBAIG1ha2VfdGVtcGxhdGUw KEZJTEUgKmNtZGZkKQogewogCWNvbnN0IGNoYXIgKmNvbnN0ICpsaW5lOwogCXN0YXRpYyBj b25zdCBjaGFyICpjb25zdCB0ZW1wbGF0ZTBfc2V0dXBbXSA9IHsKLQkJIkNSRUFURSBEQVRB QkFTRSB0ZW1wbGF0ZTAgSVNfVEVNUExBVEUgPSB0cnVlIEFMTE9XX0NPTk5FQ1RJT05TID0g ZmFsc2U7XG5cbiIsCi0KIAkJLyoKIAkJICogV2UgdXNlIHRoZSBPSUQgb2YgdGVtcGxhdGUw IHRvIGRldGVybWluZSBkYXRsYXN0c3lzb2lkCiAJCSAqLwpAQCAtMTg2NSw2ICsxODc3LDkg QEAgbWFrZV90ZW1wbGF0ZTAoRklMRSAqY21kZmQpCiAJCU5VTEwKIAl9OwogCisJUEdfQ01E X1BSSU5URigiQ1JFQVRFIERBVEFCQVNFIHRlbXBsYXRlMCBJU19URU1QTEFURSA9IHRydWUg QUxMT1dfQ09OTkVDVElPTlMgPSBmYWxzZSBDT0xMQVRJT05fUFJPVklERVIgPSAlcztcblxu IiwKKwkJCQkgIGNvbGxhdGlvbl9wcm92aWRlclswXSA9PSBDT0xMUFJPVklERVJfSUNVID8g ImljdSIgOiAibGliYyIpOworCiAJZm9yIChsaW5lID0gdGVtcGxhdGUwX3NldHVwOyAqbGlu ZTsgbGluZSsrKQogCQlQR19DTURfUFVUUygqbGluZSk7CiB9CkBAIC0yMTM2LDEzICsyMTUx LDE0IEBAIHNldGxvY2FsZXModm9pZCkKIAkJCWxjX21vbmV0YXJ5ID0gbG9jYWxlOwogCQlp ZiAoIWxjX21lc3NhZ2VzKQogCQkJbGNfbWVzc2FnZXMgPSBsb2NhbGU7CisJCWlmICghaWN1 X2xvY2FsZSkKKwkJCWljdV9sb2NhbGUgPSBsb2NhbGU7CiAJfQogCiAJLyoKIAkgKiBjYW5v bmljYWxpemUgbG9jYWxlIG5hbWVzLCBhbmQgb2J0YWluIGFueSBtaXNzaW5nIHZhbHVlcyBm cm9tIG91cgogCSAqIGN1cnJlbnQgZW52aXJvbm1lbnQKIAkgKi8KLQogCWNoZWNrX2xvY2Fs ZV9uYW1lKExDX0NUWVBFLCBsY19jdHlwZSwgJmNhbm9ubmFtZSk7CiAJbGNfY3R5cGUgPSBj YW5vbm5hbWU7CiAJY2hlY2tfbG9jYWxlX25hbWUoTENfQ09MTEFURSwgbGNfY29sbGF0ZSwg JmNhbm9ubmFtZSk7CkBAIC0yMTYxLDYgKzIxNzcsMTggQEAgc2V0bG9jYWxlcyh2b2lkKQog CWNoZWNrX2xvY2FsZV9uYW1lKExDX0NUWVBFLCBsY19tZXNzYWdlcywgJmNhbm9ubmFtZSk7 CiAJbGNfbWVzc2FnZXMgPSBjYW5vbm5hbWU7CiAjZW5kaWYKKworCS8qCisJICogSWYgSUNV IGlzIHNlbGVjdGVkIGJ1dCBubyBJQ1UgbG9jYWxlIGhhcyBiZWVuIGdpdmVuLCB0YWtlIHRo ZQorCSAqIGxjX2NvbGxhdGUgbG9jYWxlIGFuZCBjaG9wIG9mZiBhbnkgZW5jb2Rpbmcgc3Vm Zml4LiAgVGhpcyBzaG91bGQgZ2l2ZQorCSAqIHRoZSB1c2VyIGEgY29uZmlndXJhdGlvbiB0 aGF0IHJlc2VtYmxlcyB0aGVpciBvcGVyYXRpbmcgc3lzdGVtJ3MgbG9jYWxlCisJICogc2V0 dXAuCisJICovCisJaWYgKGNvbGxhdGlvbl9wcm92aWRlclswXSA9PSBDT0xMUFJPVklERVJf SUNVICYmICFpY3VfbG9jYWxlKQorCXsKKwkJaWN1X2xvY2FsZSA9IHBnX3N0cmR1cChsY19j b2xsYXRlKTsKKwkJaWN1X2xvY2FsZVtzdHJjc3BuKGljdV9sb2NhbGUsICIuIildID0gJ1ww JzsKKwl9CiB9CiAKIC8qCkBAIC0yMTc2LDkgKzIyMDQsMTIgQEAgdXNhZ2UoY29uc3QgY2hh ciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAgLUEsIC0tYXV0aD1NRVRIT0QgICAgICAgICBk ZWZhdWx0IGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBmb3IgbG9jYWwgY29ubmVjdGlvbnNcbiIp KTsKIAlwcmludGYoXygiICAgICAgLS1hdXRoLWhvc3Q9TUVUSE9EICAgIGRlZmF1bHQgYXV0 aGVudGljYXRpb24gbWV0aG9kIGZvciBsb2NhbCBUQ1AvSVAgY29ubmVjdGlvbnNcbiIpKTsK IAlwcmludGYoXygiICAgICAgLS1hdXRoLWxvY2FsPU1FVEhPRCAgIGRlZmF1bHQgYXV0aGVu dGljYXRpb24gbWV0aG9kIGZvciBsb2NhbC1zb2NrZXQgY29ubmVjdGlvbnNcbiIpKTsKKwlw cmludGYoXygiICAgICAgLS1jb2xsYXRpb24tcHJvdmlkZXI9e2xpYmN8aWN1fVxuIgorCQkJ ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGRlZmF1bHQgY29sbGF0aW9uIHBy b3ZpZGVyIGZvciBuZXcgZGF0YWJhc2VzXG4iKSk7CiAJcHJpbnRmKF8oIiBbLUQsIC0tcGdk YXRhPV1EQVRBRElSICAgICBsb2NhdGlvbiBmb3IgdGhpcyBkYXRhYmFzZSBjbHVzdGVyXG4i KSk7CiAJcHJpbnRmKF8oIiAgLUUsIC0tZW5jb2Rpbmc9RU5DT0RJTkcgICBzZXQgZGVmYXVs dCBlbmNvZGluZyBmb3IgbmV3IGRhdGFiYXNlc1xuIikpOwogCXByaW50ZihfKCIgIC1nLCAt LWFsbG93LWdyb3VwLWFjY2VzcyAgYWxsb3cgZ3JvdXAgcmVhZC9leGVjdXRlIG9uIGRhdGEg ZGlyZWN0b3J5XG4iKSk7CisJcHJpbnRmKF8oIiAgICAgIC0taWN1LWxvY2FsZSAgICAgICAg ICBzZXQgSUNVIGxvY2FsZSBmb3IgbmV3IGRhdGFiYXNlc1xuIikpOwogCXByaW50ZihfKCIg IC1rLCAtLWRhdGEtY2hlY2tzdW1zICAgICAgdXNlIGRhdGEgcGFnZSBjaGVja3N1bXNcbiIp KTsKIAlwcmludGYoXygiICAgICAgLS1sb2NhbGU9TE9DQUxFICAgICAgIHNldCBkZWZhdWx0 IGxvY2FsZSBmb3IgbmV3IGRhdGFiYXNlc1xuIikpOwogCXByaW50ZihfKCIgICAgICAtLWxj LWNvbGxhdGU9LCAtLWxjLWN0eXBlPSwgLS1sYy1tZXNzYWdlcz1MT0NBTEVcbiIKQEAgLTIz NTMsNyArMjM4NCw4IEBAIHNldHVwX2xvY2FsZV9lbmNvZGluZyh2b2lkKQogCQlzdHJjbXAo bGNfY3R5cGUsIGxjX3RpbWUpID09IDAgJiYKIAkJc3RyY21wKGxjX2N0eXBlLCBsY19udW1l cmljKSA9PSAwICYmCiAJCXN0cmNtcChsY19jdHlwZSwgbGNfbW9uZXRhcnkpID09IDAgJiYK LQkJc3RyY21wKGxjX2N0eXBlLCBsY19tZXNzYWdlcykgPT0gMCkKKwkJc3RyY21wKGxjX2N0 eXBlLCBsY19tZXNzYWdlcykgPT0gMCAmJgorCQkoIWljdV9sb2NhbGUgfHwgc3RyY21wKGxj X2N0eXBlLCBpY3VfbG9jYWxlKSA9PSAwKSkKIAkJcHJpbnRmKF8oIlRoZSBkYXRhYmFzZSBj bHVzdGVyIHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBsb2NhbGUgXCIlc1wiLlxuIiksIGxj X2N0eXBlKTsKIAllbHNlCiAJewpAQCAtMjM3MCw5ICsyNDAyLDEzIEBAIHNldHVwX2xvY2Fs ZV9lbmNvZGluZyh2b2lkKQogCQkJICAgbGNfbW9uZXRhcnksCiAJCQkgICBsY19udW1lcmlj LAogCQkJICAgbGNfdGltZSk7CisJCWlmIChpY3VfbG9jYWxlKQorCQkJcHJpbnRmKF8oIiAg SUNVOiAgICAgICVzXG4iKSwgaWN1X2xvY2FsZSk7CiAJfQogCi0JaWYgKCFlbmNvZGluZykK KwlpZiAoIWVuY29kaW5nICYmIGNvbGxhdGlvbl9wcm92aWRlclswXSA9PSBDT0xMUFJPVklE RVJfSUNVKQorCQllbmNvZGluZ2lkID0gUEdfVVRGODsKKwllbHNlIGlmICghZW5jb2Rpbmcp CiAJewogCQlpbnQJCQljdHlwZV9lbmM7CiAKQEAgLTI4NzYsNiArMjkxMiw4IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJeyJkYXRhLWNoZWNrc3VtcyIsIG5vX2FyZ3Vt ZW50LCBOVUxMLCAnayd9LAogCQl7ImFsbG93LWdyb3VwLWFjY2VzcyIsIG5vX2FyZ3VtZW50 LCBOVUxMLCAnZyd9LAogCQl7ImRpc2NhcmQtY2FjaGVzIiwgbm9fYXJndW1lbnQsIE5VTEws IDE0fSwKKwkJeyJjb2xsYXRpb24tcHJvdmlkZXIiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVM TCwgMTV9LAorCQl7ImljdS1sb2NhbGUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTZ9 LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCkBAIC0zMDIyLDYgKzMwNjAsMjAgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCQkJCQkJCSBleHRyYV9vcHRpb25z LAogCQkJCQkJCQkJCSAiLWMgZGVidWdfZGlzY2FyZF9jYWNoZXM9MSIpOwogCQkJCWJyZWFr OworCQkJY2FzZSAxNToKKwkJCQlpZiAoc3RyY21wKG9wdGFyZywgImljdSIpID09IDApCisJ CQkJCWNvbGxhdGlvbl9wcm92aWRlclswXSA9IENPTExQUk9WSURFUl9JQ1U7CisJCQkJZWxz ZSBpZiAoc3RyY21wKG9wdGFyZywgImxpYmMiKSA9PSAwKQorCQkJCQljb2xsYXRpb25fcHJv dmlkZXJbMF0gPSBDT0xMUFJPVklERVJfTElCQzsKKwkJCQllbHNlCisJCQkJeworCQkJCQlw Z19sb2dfZXJyb3IoInVucmVjb2duaXplZCBjb2xsYXRpb24gcHJvdmlkZXI6ICVzIiwgb3B0 YXJnKTsKKwkJCQkJZXhpdCgxKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlIDE2Ogor CQkJCWljdV9sb2NhbGUgPSBwZ19zdHJkdXAob3B0YXJnKTsKKwkJCQlicmVhazsKIAkJCWRl ZmF1bHQ6CiAJCQkJLyogZ2V0b3B0X2xvbmcgYWxyZWFkeSBlbWl0dGVkIGEgY29tcGxhaW50 ICovCiAJCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3Jl IGluZm9ybWF0aW9uLlxuIiksCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi90LzAwMV9p bml0ZGIucGwgYi9zcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwKaW5kZXggNjc5NmQ4 NTIwZS4uNmIzMjA4YTAzZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvdC8wMDFfaW5p dGRiLnBsCisrKyBiL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbApAQCAtMTEsNyAr MTEsNyBAQAogdXNlIEZpbGU6OnN0YXQgcXd7bHN0YXR9OwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Ci11c2UgVGVzdDo6 TW9yZSB0ZXN0cyA9PiAyMjsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDI0OwogCiBteSAk dGVtcGRpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOwogbXkgJHhsb2dk aXIgPSAiJHRlbXBkaXIvcGd4bG9nIjsKQEAgLTkyLDMgKzkyLDE5IEBACiAJb2soY2hlY2tf bW9kZV9yZWN1cnNpdmUoJGRhdGFkaXJfZ3JvdXAsIDA3NTAsIDA2NDApLAogCQknY2hlY2sg UEdEQVRBIHBlcm1pc3Npb25zJyk7CiB9CisKKyMgQ29sbGF0aW9uIHByb3ZpZGVyIHRlc3Rz CisKK2lmICgkRU5We3dpdGhfaWN1fSBlcSAneWVzJykKK3sKKwljb21tYW5kX29rKFsnaW5p dGRiJywgJy0tbm8tc3luYycsICctLWNvbGxhdGlvbi1wcm92aWRlcj1pY3UnLCAiJHRlbXBk aXIvZGF0YTIiXSwKKwkJCSAgICdjb2xsYXRpb24gcHJvdmlkZXIgSUNVJyk7Cit9CitlbHNl Cit7CisJY29tbWFuZF9mYWlscyhbJ2luaXRkYicsICctLW5vLXN5bmMnLCAnLS1jb2xsYXRp b24tcHJvdmlkZXI9aWN1JywgIiR0ZW1wZGlyL2RhdGEyIl0sCisJCQkJICAnY29sbGF0aW9u IHByb3ZpZGVyIElDVSBmYWlscyBzaW5jZSBubyBJQ1Ugc3VwcG9ydCcpOworfQorCitjb21t YW5kX2ZhaWxzKFsnaW5pdGRiJywgJy0tbm8tc3luYycsICctLWNvbGxhdGlvbi1wcm92aWRl cj14eXonLCAiJHRlbXBkaXIvZGF0YVgiXSwKKwkJCSAgJ2ZhaWxzIGZvciBpbnZhbGlkIGNv bGxhdGlvbiBwcm92aWRlcicpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYjUyZjNjY2RhMi4uN2M2 YWY4ZDJlZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0yNzQwLDYgKzI3NDAsNyBAQCBkdW1wRGF0 YWJhc2UoQXJjaGl2ZSAqZm91dCkKIAkJCQlpX2RhdG5hbWUsCiAJCQkJaV9kYmEsCiAJCQkJ aV9lbmNvZGluZywKKwkJCQlpX2RhdGNvbGxwcm92aWRlciwKIAkJCQlpX2NvbGxhdGUsCiAJ CQkJaV9jdHlwZSwKIAkJCQlpX2Zyb3plbnhpZCwKQEAgLTI3NTUsNiArMjc1Niw3IEBAIGR1 bXBEYXRhYmFzZShBcmNoaXZlICpmb3V0KQogCWNvbnN0IGNoYXIgKmRhdG5hbWUsCiAJCQkg ICAqZGJhLAogCQkJICAgKmVuY29kaW5nLAorCQkJICAgKmRhdGNvbGxwcm92aWRlciwKIAkJ CSAgICpjb2xsYXRlLAogCQkJICAgKmN0eXBlLAogCQkJICAgKmRhdGlzdGVtcGxhdGUsCkBA IC0yNzc0LDYgKzI3NzYsNyBAQCBkdW1wRGF0YWJhc2UoQXJjaGl2ZSAqZm91dCkKIAkJYXBw ZW5kUFFFeHBCdWZmZXIoZGJRcnksICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgZGF0bmFtZSwg IgogCQkJCQkJICAiKCVzIGRhdGRiYSkgQVMgZGJhLCAiCiAJCQkJCQkgICJwZ19lbmNvZGlu Z190b19jaGFyKGVuY29kaW5nKSBBUyBlbmNvZGluZywgIgorCQkJCQkJICAiZGF0Y29sbHBy b3ZpZGVyLCAiCiAJCQkJCQkgICJkYXRjb2xsYXRlLCBkYXRjdHlwZSwgZGF0ZnJvemVueGlk LCBkYXRtaW5teGlkLCAiCiAJCQkJCQkgICJkYXRhY2wsIGFjbGRlZmF1bHQoJ2QnLCBkYXRk YmEpIEFTIGFjbGRlZmF1bHQsICIKIAkJCQkJCSAgImRhdGlzdGVtcGxhdGUsIGRhdGNvbm5s aW1pdCwgIgpAQCAtMjgwNyw2ICsyODEwLDcgQEAgZHVtcERhdGFiYXNlKEFyY2hpdmUgKmZv dXQpCiAJaV9kYXRuYW1lID0gUFFmbnVtYmVyKHJlcywgImRhdG5hbWUiKTsKIAlpX2RiYSA9 IFBRZm51bWJlcihyZXMsICJkYmEiKTsKIAlpX2VuY29kaW5nID0gUFFmbnVtYmVyKHJlcywg ImVuY29kaW5nIik7CisJaV9kYXRjb2xscHJvdmlkZXIgPSBQUWZudW1iZXIocmVzLCAiZGF0 Y29sbHByb3ZpZGVyIik7CiAJaV9jb2xsYXRlID0gUFFmbnVtYmVyKHJlcywgImRhdGNvbGxh dGUiKTsKIAlpX2N0eXBlID0gUFFmbnVtYmVyKHJlcywgImRhdGN0eXBlIik7CiAJaV9mcm96 ZW54aWQgPSBQUWZudW1iZXIocmVzLCAiZGF0ZnJvemVueGlkIik7CkBAIC0yODIyLDYgKzI4 MjYsNyBAQCBkdW1wRGF0YWJhc2UoQXJjaGl2ZSAqZm91dCkKIAlkYXRuYW1lID0gUFFnZXR2 YWx1ZShyZXMsIDAsIGlfZGF0bmFtZSk7CiAJZGJhID0gUFFnZXR2YWx1ZShyZXMsIDAsIGlf ZGJhKTsKIAllbmNvZGluZyA9IFBRZ2V0dmFsdWUocmVzLCAwLCBpX2VuY29kaW5nKTsKKwlk YXRjb2xscHJvdmlkZXIgPSBQUWdldHZhbHVlKHJlcywgMCwgaV9kYXRjb2xscHJvdmlkZXIp OwogCWNvbGxhdGUgPSBQUWdldHZhbHVlKHJlcywgMCwgaV9jb2xsYXRlKTsKIAljdHlwZSA9 IFBRZ2V0dmFsdWUocmVzLCAwLCBpX2N0eXBlKTsKIAlmcm96ZW54aWQgPSBhdG9vaWQoUFFn ZXR2YWx1ZShyZXMsIDAsIGlfZnJvemVueGlkKSk7CkBAIC0yODQ3LDYgKzI4NTIsMTcgQEAg ZHVtcERhdGFiYXNlKEFyY2hpdmUgKmZvdXQpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGNy ZWFRcnksICIgRU5DT0RJTkcgPSAiKTsKIAkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKGNyZWFR cnksIGVuY29kaW5nLCBmb3V0KTsKIAl9CisJaWYgKHN0cmxlbihkYXRjb2xscHJvdmlkZXIp ID4gMCkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGNyZWFRcnksICIgQ09MTEFUSU9O X1BST1ZJREVSID0gIik7CisJCWlmIChkYXRjb2xscHJvdmlkZXJbMF0gPT0gJ2MnKQorCQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoY3JlYVFyeSwgImxpYmMiKTsKKwkJZWxzZSBpZiAoZGF0 Y29sbHByb3ZpZGVyWzBdID09ICdpJykKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGNyZWFR cnksICJpY3UiKTsKKwkJZWxzZQorCQkJZmF0YWwoInVucmVjb2duaXplZCBjb2xsYXRpb24g cHJvdmlkZXI6ICVzIiwKKwkJCQkgIGRhdGNvbGxwcm92aWRlcik7CisJfQogCWlmIChzdHJs ZW4oY29sbGF0ZSkgPiAwICYmIHN0cmNtcChjb2xsYXRlLCBjdHlwZSkgPT0gMCkKIAl7CiAJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKGNyZWFRcnksICIgTE9DQUxFID0gIik7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CmluZGV4IGMyODc4OGU4NGYuLjBkNzEwYmQ0N2UgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC04OTYsNiAr ODk2LDE4IEBAIGxpc3RBbGxEYnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3Nl KQogCQkJCQkgIGdldHRleHRfbm9vcCgiRW5jb2RpbmciKSwKIAkJCQkJICBnZXR0ZXh0X25v b3AoIkNvbGxhdGUiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIkN0eXBlIikpOworCWlmIChw c2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJ CQkJCSAgIiAgICAgICBkLmRhdGljdWNvbGwgYXMgXCIlc1wiLFxuIgorCQkJCQkJICAiICAg ICAgIENBU0UgZC5kYXRjb2xscHJvdmlkZXIgV0hFTiAnYycgVEhFTiAnbGliYycgV0hFTiAn aScgVEhFTiAnaWN1JyBFTkQgQVMgXCIlc1wiLFxuIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29w KCJJQ1UgQ29sbGF0aW9uIiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiQ29sbC4gUHJvdmlk ZXIiKSk7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiICAg ICAgIGQuZGF0Y29sbGF0ZSBhcyBcIiVzXCIsXG4iCisJCQkJCQkgICIgICAgICAgJ2xpYmMn IEFTIFwiJXNcIixcbiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgiSUNVIENvbGxhdGlvbiIp LAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkNvbGwuIFByb3ZpZGVyIikpOwogCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsICIgICAgICAgIik7CiAJcHJpbnRBQ0xDb2x1bW4oJmJ1Ziwg ImQuZGF0YWNsIik7CiAJaWYgKHZlcmJvc2UpCkBAIC00NTczLDcgKzQ1ODUsNyBAQCBsaXN0 Q29sbGF0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hv d1N5c3RlbSkKIAlQUUV4cEJ1ZmZlckRhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAlw cmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwotCXN0YXRpYyBjb25zdCBib29sIHRy YW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCB0cnVlLCBmYWxzZX07CisJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNb XSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBm YWxzZX07CiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKQEAgLTQ1ODcsNiArNDU5OSwx NSBAQCBsaXN0Q29sbGF0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2Us IGJvb2wgc2hvd1N5c3RlbSkKIAkJCQkJICBnZXR0ZXh0X25vb3AoIkNvbGxhdGUiKSwKIAkJ CQkJICBnZXR0ZXh0X25vb3AoIkN0eXBlIikpOwogCisJaWYgKHBzZXQuc3ZlcnNpb24gPj0g MTUwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiLFxuICAgICAg IGMuY29sbGljdWNvbGwgQVMgXCIlc1wiIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJJQ1Ug Q29sbGF0aW9uIikpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJ CSAgIixcbiAgICAgICBjLmNvbGxjb2xsYXRlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRl eHRfbm9vcCgiSUNVIENvbGxhdGlvbiIpKTsKKwogCWlmIChwc2V0LnN2ZXJzaW9uID49IDEw MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIixcbiAgICAgICBD QVNFIGMuY29sbHByb3ZpZGVyIFdIRU4gJ2QnIFRIRU4gJ2RlZmF1bHQnIFdIRU4gJ2MnIFRI RU4gJ2xpYmMnIFdIRU4gJ2knIFRIRU4gJ2ljdScgRU5EIEFTIFwiJXNcIiIsCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKaW5kZXggY2YzMDIzOWY2ZC4uN2RiNGE2OGRmNiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuYwpAQCAtMjU4Nyw3ICsyNTg3LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIg KnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJQ09NUExFVEVfV0lUSCgiT1dORVIiLCAi VEVNUExBVEUiLCAiRU5DT0RJTkciLCAiVEFCTEVTUEFDRSIsCiAJCQkJCSAgIklTX1RFTVBM QVRFIiwKIAkJCQkJICAiQUxMT1dfQ09OTkVDVElPTlMiLCAiQ09OTkVDVElPTiBMSU1JVCIs Ci0JCQkJCSAgIkxDX0NPTExBVEUiLCAiTENfQ1RZUEUiLCAiTE9DQUxFIik7CisJCQkJCSAg IkxDX0NPTExBVEUiLCAiTENfQ1RZUEUiLCAiTE9DQUxFIiwgIkNPTExBVElPTl9QUk9WSURF UiIpOwogCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIkRBVEFCQVNFIiwgTWF0Y2hB bnksICJURU1QTEFURSIpKQogCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0 X29mX3RlbXBsYXRlX2RhdGFiYXNlcyk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMv TWFrZWZpbGUgYi9zcmMvYmluL3NjcmlwdHMvTWFrZWZpbGUKaW5kZXggYjhkN2NmMmYyZC4u MzQyYTU3ZDcxYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL01ha2VmaWxlCisrKyBi L3NyYy9iaW4vc2NyaXB0cy9NYWtlZmlsZQpAQCAtNTMsNiArNTMsOCBAQCBjbGVhbiBkaXN0 Y2xlYW4gbWFpbnRhaW5lci1jbGVhbjoKIAlybSAtZiBjb21tb24ubyAkKFdJTjMyUkVTKQog CXJtIC1yZiB0bXBfY2hlY2sKIAorZXhwb3J0IHdpdGhfaWN1CisKIGNoZWNrOgogCSQocHJv dmVfY2hlY2spCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9jcmVhdGVkYi5jIGIv c3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMKaW5kZXggMDQxNDU0ZjA3NS4uMTk0NDU4MGYz NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMKKysrIGIvc3JjL2Jp bi9zY3JpcHRzL2NyZWF0ZWRiLmMKQEAgLTM4LDYgKzM4LDcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCQl7ImxjLWN0eXBlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEws IDJ9LAogCQl7ImxvY2FsZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbCd9LAogCQl7 Im1haW50ZW5hbmNlLWRiIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDN9LAorCQl7ImNv bGxhdGlvbi1wcm92aWRlciIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCA0fSwKIAkJe05V TEwsIDAsIE5VTEwsIDB9CiAJfTsKIApAQCAtNjEsNiArNjIsNyBAQCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJY2hhcgkgICAqbGNfY29sbGF0ZSA9IE5VTEw7CiAJY2hhcgkg ICAqbGNfY3R5cGUgPSBOVUxMOwogCWNoYXIJICAgKmxvY2FsZSA9IE5VTEw7CisJY2hhcgkg ICAqY29sbGF0aW9uX3Byb3ZpZGVyID0gTlVMTDsKIAogCVBRRXhwQnVmZmVyRGF0YSBzcWw7 CiAKQEAgLTExOSw2ICsxMjEsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ CQljYXNlIDM6CiAJCQkJbWFpbnRlbmFuY2VfZGIgPSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJ CQlicmVhazsKKwkJCWNhc2UgNDoKKwkJCQljb2xsYXRpb25fcHJvdmlkZXIgPSBwZ19zdHJk dXAob3B0YXJnKTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZnByaW50ZihzdGRl cnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHBy b2duYW1lKTsKIAkJCQlleGl0KDEpOwpAQCAtMjE3LDYgKzIyMiw4IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJnNxbCwgIiBMQ19D VFlQRSAiKTsKIAkJYXBwZW5kU3RyaW5nTGl0ZXJhbENvbm4oJnNxbCwgbGNfY3R5cGUsIGNv bm4pOwogCX0KKwlpZiAoY29sbGF0aW9uX3Byb3ZpZGVyKQorCQlhcHBlbmRQUUV4cEJ1ZmZl cigmc3FsLCAiIENPTExBVElPTl9QUk9WSURFUiAlcyIsIGNvbGxhdGlvbl9wcm92aWRlcik7 CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIoJnNxbCwgJzsnKTsKIApAQCAtMjY3LDYgKzI3 NCw4IEBAIGhlbHAoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIlVzYWdlOlxu IikpOwogCXByaW50ZihfKCIgICVzIFtPUFRJT05dLi4uIFtEQk5BTUVdIFtERVNDUklQVElP Tl1cbiIpLCBwcm9nbmFtZSk7CiAJcHJpbnRmKF8oIlxuT3B0aW9uczpcbiIpKTsKKwlwcmlu dGYoXygiICAgICAgLS1jb2xsYXRpb24tcHJvdmlkZXI9e2xpYmN8aWN1fVxuIgorCQkJICIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGF0aW9uIHByb3ZpZGVyIGZvciB0 aGUgZGF0YWJhc2UncyBkZWZhdWx0IGNvbGxhdGlvblxuIikpOwogCXByaW50ZihfKCIgIC1E LCAtLXRhYmxlc3BhY2U9VEFCTEVTUEFDRSAgZGVmYXVsdCB0YWJsZXNwYWNlIGZvciB0aGUg ZGF0YWJhc2VcbiIpKTsKIAlwcmludGYoXygiICAtZSwgLS1lY2hvICAgICAgICAgICAgICAg ICAgIHNob3cgdGhlIGNvbW1hbmRzIGJlaW5nIHNlbnQgdG8gdGhlIHNlcnZlclxuIikpOwog CXByaW50ZihfKCIgIC1FLCAtLWVuY29kaW5nPUVOQ09ESU5HICAgICAgZW5jb2RpbmcgZm9y IHRoZSBkYXRhYmFzZVxuIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3QvMDIw X2NyZWF0ZWRiLnBsIGIvc3JjL2Jpbi9zY3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsCmluZGV4 IDZiY2M1OWRlMDguLmUxYTRhZjM4NGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy90 LzAyMF9jcmVhdGVkYi5wbAorKysgYi9zcmMvYmluL3NjcmlwdHMvdC8wMjBfY3JlYXRlZGIu cGwKQEAgLTYsNyArNiw3IEBACiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwotdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4g MjU7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAyODsKIAogcHJvZ3JhbV9oZWxwX29rKCdj cmVhdGVkYicpOwogcHJvZ3JhbV92ZXJzaW9uX29rKCdjcmVhdGVkYicpOwpAQCAtMjUsOSAr MjUsMjcgQEAKIAlxci9zdGF0ZW1lbnQ6IENSRUFURSBEQVRBQkFTRSBmb29iYXIyIEVOQ09E SU5HICdMQVRJTjEnLywKIAknY3JlYXRlIGRhdGFiYXNlIHdpdGggZW5jb2RpbmcnKTsKIAor aWYgKCRFTlZ7d2l0aF9pY3V9IGVxICd5ZXMnKQoreworCSRub2RlLT5pc3N1ZXNfc3FsX2xp a2UoCisJCVsgJ2NyZWF0ZWRiJywgJy1UJywgJ3RlbXBsYXRlMCcsICctLWNvbGxhdGlvbi1w cm92aWRlcj1pY3UnLCAnZm9vYmFyNCcgXSwKKwkJcXIvc3RhdGVtZW50OiBDUkVBVEUgREFU QUJBU0UgZm9vYmFyNCAuKiBDT0xMQVRJT05fUFJPVklERVIgaWN1LywKKwkJJ2NyZWF0ZSBk YXRhYmFzZSB3aXRoIElDVScpOworfQorZWxzZQoreworCSRub2RlLT5jb21tYW5kX2ZhaWxz KAorCQlbICdjcmVhdGVkYicsICctVCcsICd0ZW1wbGF0ZTAnLCAnLS1jb2xsYXRpb24tcHJv dmlkZXI9aWN1JywgJ2Zvb2JhcjQnIF0sCisJCSdjcmVhdGUgZGF0YWJhc2Ugd2l0aCBJQ1Ug ZmFpbHMgc2luY2Ugbm8gSUNVIHN1cHBvcnQnKTsKKwlwYXNzOworfQorCiAkbm9kZS0+Y29t bWFuZF9mYWlscyhbICdjcmVhdGVkYicsICdmb29iYXIxJyBdLAogCSdmYWlscyBpZiBkYXRh YmFzZSBhbHJlYWR5IGV4aXN0cycpOwogCiskbm9kZS0+Y29tbWFuZF9mYWlscyhbICdjcmVh dGVkYicsICctVCcsICd0ZW1wbGF0ZTAnLCAnLS1jb2xsYXRpb24tcHJvdmlkZXI9eHl6Jywg J2Zvb2JhclgnIF0sCisJJ2ZhaWxzIGZvciBpbnZhbGlkIGNvbGxhdGlvbiBwcm92aWRlcicp OworCiAjIENoZWNrIHVzZSBvZiB0ZW1wbGF0ZXMgd2l0aCBzaGFyZWQgZGVwZW5kZW5jaWVz IGNvcGllZCBmcm9tIHRoZSB0ZW1wbGF0ZS4KIG15ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJy KSA9ICRub2RlLT5wc3FsKAogCSdmb29iYXIyJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfY29sbGF0aW9uLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29s bGF0aW9uLmRhdAppbmRleCA2ZTBhYjFhYjRiLi4yYThjZjJiZTdjIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19jb2xsYXRpb24uZGF0CkBAIC0xNCw4ICsxNCw3IEBACiAKIHsgb2lkID0+ ICcxMDAnLCBvaWRfc3ltYm9sID0+ICdERUZBVUxUX0NPTExBVElPTl9PSUQnLAogICBkZXNj ciA9PiAnZGF0YWJhc2VcJ3MgZGVmYXVsdCBjb2xsYXRpb24nLAotICBjb2xsbmFtZSA9PiAn ZGVmYXVsdCcsIGNvbGxwcm92aWRlciA9PiAnZCcsIGNvbGxlbmNvZGluZyA9PiAnLTEnLAot ICBjb2xsY29sbGF0ZSA9PiAnJywgY29sbGN0eXBlID0+ICcnIH0sCisgIGNvbGxuYW1lID0+ ICdkZWZhdWx0JywgY29sbHByb3ZpZGVyID0+ICdkJywgY29sbGVuY29kaW5nID0+ICctMScg fSwKIHsgb2lkID0+ICc5NTAnLCBvaWRfc3ltYm9sID0+ICdDX0NPTExBVElPTl9PSUQnLAog ICBkZXNjciA9PiAnc3RhbmRhcmQgQyBjb2xsYXRpb24nLAogICBjb2xsbmFtZSA9PiAnQycs IGNvbGxwcm92aWRlciA9PiAnYycsIGNvbGxlbmNvZGluZyA9PiAnLTEnLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uaCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfY29sbGF0aW9uLmgKaW5kZXggMDNiZDRjYjVkNC4uYmZmNTlhYmU5MiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5oCkBAIC0zOSw5ICszOSwxMCBAQCBDQVRB TE9HKHBnX2NvbGxhdGlvbiwzNDU2LENvbGxhdGlvblJlbGF0aW9uSWQpCiAJY2hhcgkJY29s bHByb3ZpZGVyOwkvKiBzZWUgY29uc3RhbnRzIGJlbG93ICovCiAJYm9vbAkJY29sbGlzZGV0 ZXJtaW5pc3RpYyBCS0lfREVGQVVMVCh0KTsKIAlpbnQzMgkJY29sbGVuY29kaW5nOwkvKiBl bmNvZGluZyBmb3IgdGhpcyBjb2xsYXRpb247IC0xID0gImFsbCIgKi8KLQlOYW1lRGF0YQlj b2xsY29sbGF0ZTsJLyogTENfQ09MTEFURSBzZXR0aW5nICovCi0JTmFtZURhdGEJY29sbGN0 eXBlOwkJLyogTENfQ1RZUEUgc2V0dGluZyAqLwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJ LyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCisJdGV4dAkJY29sbGNv bGxhdGUgQktJX0RFRkFVTFQoX251bGxfKTsJLyogTENfQ09MTEFURSBzZXR0aW5nICovCisJ dGV4dAkJY29sbGN0eXBlIEJLSV9ERUZBVUxUKF9udWxsXyk7CQkvKiBMQ19DVFlQRSBzZXR0 aW5nICovCisJdGV4dAkJY29sbGljdWNvbGwgQktJX0RFRkFVTFQoX251bGxfKTsJLyogSUNV IGNvbGxhdGlvbiBzdHJpbmcgKi8KIAl0ZXh0CQljb2xsdmVyc2lvbiBCS0lfREVGQVVMVChf bnVsbF8pOwkvKiBwcm92aWRlci1kZXBlbmRlbnQKIAkJCQkJCQkJCQkJCQkgKiB2ZXJzaW9u IG9mIGNvbGxhdGlvbgogCQkJCQkJCQkJCQkJCSAqIGRhdGEgKi8KQEAgLTc1LDYgKzc2LDcg QEAgZXh0ZXJuIE9pZAlDb2xsYXRpb25DcmVhdGUoY29uc3QgY2hhciAqY29sbG5hbWUsIE9p ZCBjb2xsbmFtZXNwYWNlLAogCQkJCQkJCWJvb2wgY29sbGlzZGV0ZXJtaW5pc3RpYywKIAkJ CQkJCQlpbnQzMiBjb2xsZW5jb2RpbmcsCiAJCQkJCQkJY29uc3QgY2hhciAqY29sbGNvbGxh dGUsIGNvbnN0IGNoYXIgKmNvbGxjdHlwZSwKKwkJCQkJCQljb25zdCBjaGFyICpjb2xsaWN1 Y29sbCwKIAkJCQkJCQljb25zdCBjaGFyICpjb2xsdmVyc2lvbiwKIAkJCQkJCQlib29sIGlm X25vdF9leGlzdHMsCiAJCQkJCQkJYm9vbCBxdWlldCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2RhdGFiYXNlLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf ZGF0YWJhc2UuZGF0CmluZGV4IGI4YWExMzY0YTAuLjZjNjJlZmNjNTQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGF0YWJhc2UuZGF0CisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfZGF0YWJhc2UuZGF0CkBAIC0xNSw3ICsxNSw3IEBACiB7IG9pZCA9PiAn MScsIG9pZF9zeW1ib2wgPT4gJ1RlbXBsYXRlRGJPaWQnLAogICBkZXNjciA9PiAnZGVmYXVs dCB0ZW1wbGF0ZSBmb3IgbmV3IGRhdGFiYXNlcycsCiAgIGRhdG5hbWUgPT4gJ3RlbXBsYXRl MScsIGVuY29kaW5nID0+ICdFTkNPRElORycsIGRhdGNvbGxhdGUgPT4gJ0xDX0NPTExBVEUn LAotICBkYXRjdHlwZSA9PiAnTENfQ1RZUEUnLCBkYXRpc3RlbXBsYXRlID0+ICd0JywgZGF0 YWxsb3djb25uID0+ICd0JywKKyAgZGF0Y3R5cGUgPT4gJ0xDX0NUWVBFJywgZGF0aWN1Y29s bCA9PiAnSUNVQ09MTCcsIGRhdGNvbGxwcm92aWRlciA9PiAnQ09MTFBST1ZJREVSJywgZGF0 aXN0ZW1wbGF0ZSA9PiAndCcsIGRhdGFsbG93Y29ubiA9PiAndCcsCiAgIGRhdGNvbm5saW1p dCA9PiAnLTEnLCBkYXRsYXN0c3lzb2lkID0+ICcwJywgZGF0ZnJvemVueGlkID0+ICcwJywK ICAgZGF0bWlubXhpZCA9PiAnMScsIGRhdHRhYmxlc3BhY2UgPT4gJ3BnX2RlZmF1bHQnLCBk YXRhY2wgPT4gJ19udWxsXycgfSwKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19kYXRhYmFzZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kYXRhYmFzZS5oCmlu ZGV4IDQzZjNiZWI2YTMuLjkyODA4NTAxODUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfZGF0YWJhc2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RhdGFi YXNlLmgKQEAgLTQwLDExICs0MCw4IEBAIENBVEFMT0cocGdfZGF0YWJhc2UsMTI2MixEYXRh YmFzZVJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPV1RZUEVfT0lECiAJ LyogY2hhcmFjdGVyIGVuY29kaW5nICovCiAJaW50MzIJCWVuY29kaW5nOwogCi0JLyogTENf Q09MTEFURSBzZXR0aW5nICovCi0JTmFtZURhdGEJZGF0Y29sbGF0ZTsKLQotCS8qIExDX0NU WVBFIHNldHRpbmcgKi8KLQlOYW1lRGF0YQlkYXRjdHlwZTsKKwkvKiBzZWUgcGdfY29sbGF0 aW9uLmNvbGxwcm92aWRlciAqLworCWNoYXIJCWRhdGNvbGxwcm92aWRlcjsKIAogCS8qIGFs bG93ZWQgYXMgQ1JFQVRFIERBVEFCQVNFIHRlbXBsYXRlPyAqLwogCWJvb2wJCWRhdGlzdGVt cGxhdGU7CkBAIC02OCw2ICs2NSwxNSBAQCBDQVRBTE9HKHBnX2RhdGFiYXNlLDEyNjIsRGF0 YWJhc2VSZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1dUWVBFX09JRAog CU9pZAkJCWRhdHRhYmxlc3BhY2UgQktJX0xPT0tVUChwZ190YWJsZXNwYWNlKTsKIAogI2lm ZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBo ZXJlICovCisJLyogTENfQ09MTEFURSBzZXR0aW5nICovCisJdGV4dAkJZGF0Y29sbGF0ZSBC S0lfRk9SQ0VfTk9UX05VTEw7CisKKwkvKiBMQ19DVFlQRSBzZXR0aW5nICovCisJdGV4dAkJ ZGF0Y3R5cGUgQktJX0ZPUkNFX05PVF9OVUxMOworCisJLyogSUNVIGNvbGxhdGlvbiAqLwor CXRleHQJCWRhdGljdWNvbGw7CisKIAkvKiBhY2Nlc3MgcGVybWlzc2lvbnMgKi8KIAlhY2xp dGVtCQlkYXRhY2xbMV07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3BnX2xvY2FsZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKaW5kZXggMjk0 NmY0NmM3Ni4uMTk0NzhlNTczZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdf bG9jYWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKQEAgLTEwMSw2 ICsxMDEsMTIgQEAgc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QKIAogdHlwZWRlZiBzdHJ1Y3Qg cGdfbG9jYWxlX3N0cnVjdCAqcGdfbG9jYWxlX3Q7CiAKK2V4dGVybiBzdHJ1Y3QgcGdfbG9j YWxlX3N0cnVjdCBkZWZhdWx0X2xvY2FsZTsKKworZXh0ZXJuIHZvaWQgbWFrZV9pY3VfY29s bGF0b3IoY29uc3QgY2hhciAqaWN1Y29sbHN0ciwKKwkJCQkJCQkgIHN0cnVjdCBwZ19sb2Nh bGVfc3RydWN0ICpyZXN1bHRwKTsKK2V4dGVybiB2b2lkIGNoZWNrX2NvbGxhdGlvbl92ZXJz aW9uKEhlYXBUdXBsZSBjb2xsdHVwbGUpOworCiBleHRlcm4gcGdfbG9jYWxlX3QgcGdfbmV3 bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBjb2xsaWQpOwogCiBleHRlcm4gY2hhciAqZ2V0 X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjaGFyIGNvbGxwcm92aWRlciwgY29uc3QgY2hh ciAqY29sbGNvbGxhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb2xsYXRlLmljdS51dGY4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29s bGF0ZS5pY3UudXRmOC5vdXQKaW5kZXggNzAxMzNkZjgwNC4uM2Q5NjQ3YjU5NyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CkBA IC0xMDI5LDE0ICsxMDI5LDEyIEBAIENSRUFURSBDT0xMQVRJT04gdGVzdDAgRlJPTSAiQyI7 IC0tIGZhaWwsIGR1cGxpY2F0ZSBuYW1lCiBFUlJPUjogIGNvbGxhdGlvbiAidGVzdDAiIGFs cmVhZHkgZXhpc3RzCiBkbyAkJAogQkVHSU4KLSAgRVhFQ1VURSAnQ1JFQVRFIENPTExBVElP TiB0ZXN0MSAocHJvdmlkZXIgPSBpY3UsIGxjX2NvbGxhdGUgPSAnIHx8Ci0gICAgICAgICAg cXVvdGVfbGl0ZXJhbChjdXJyZW50X3NldHRpbmcoJ2xjX2NvbGxhdGUnKSkgfHwKLSAgICAg ICAgICAnLCBsY19jdHlwZSA9ICcgfHwKLSAgICAgICAgICBxdW90ZV9saXRlcmFsKGN1cnJl bnRfc2V0dGluZygnbGNfY3R5cGUnKSkgfHwgJyk7JzsKKyAgRVhFQ1VURSAnQ1JFQVRFIENP TExBVElPTiB0ZXN0MSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICcgfHwKKyAgICAgICAg ICBxdW90ZV9saXRlcmFsKGN1cnJlbnRfc2V0dGluZygnbGNfY29sbGF0ZScpKSB8fCAnKTsn OwogRU5ECiAkJDsKLUNSRUFURSBDT0xMQVRJT04gdGVzdDMgKHByb3ZpZGVyID0gaWN1LCBs Y19jb2xsYXRlID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlZCBsY19jdHlwZQotRVJS T1I6ICBwYXJhbWV0ZXIgImxjX2N0eXBlIiBtdXN0IGJlIHNwZWNpZmllZAorQ1JFQVRFIENP TExBVElPTiB0ZXN0MyAocHJvdmlkZXIgPSBpY3UsIGxjX2NvbGxhdGUgPSAnZW5fVVMudXRm OCcpOyAtLSBmYWlsLCBuZWVkcyAibG9jYWxlIgorRVJST1I6ICBwYXJhbWV0ZXIgImxvY2Fs ZSIgbXVzdCBiZSBzcGVjaWZpZWQKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVy ID0gaWN1LCBsb2NhbGUgPSAnbm9uc2Vuc2UnKTsgLyogbmV2ZXIgZmFpbHMgd2l0aCBJQ1Ug Ki8gIERST1AgQ09MTEFUSU9OIHRlc3R4OwogQ1JFQVRFIENPTExBVElPTiB0ZXN0NCBGUk9N IG5vbnNlbnNlOwogRVJST1I6ICBjb2xsYXRpb24gIm5vbnNlbnNlIiBmb3IgZW5jb2Rpbmcg IlVURjgiIGRvZXMgbm90IGV4aXN0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb2xsYXRlLmljdS51dGY4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUu aWN1LnV0Zjguc3FsCmluZGV4IDljZWUzZDAwNDIuLjA2NzdiYTU2ZTQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCkBAIC0zNjYsMTMgKzM2Niwx MSBAQCBDUkVBVEUgU0NIRU1BIHRlc3Rfc2NoZW1hOwogQ1JFQVRFIENPTExBVElPTiB0ZXN0 MCBGUk9NICJDIjsgLS0gZmFpbCwgZHVwbGljYXRlIG5hbWUKIGRvICQkCiBCRUdJTgotICBF WEVDVVRFICdDUkVBVEUgQ09MTEFUSU9OIHRlc3QxIChwcm92aWRlciA9IGljdSwgbGNfY29s bGF0ZSA9ICcgfHwKLSAgICAgICAgICBxdW90ZV9saXRlcmFsKGN1cnJlbnRfc2V0dGluZygn bGNfY29sbGF0ZScpKSB8fAotICAgICAgICAgICcsIGxjX2N0eXBlID0gJyB8fAotICAgICAg ICAgIHF1b3RlX2xpdGVyYWwoY3VycmVudF9zZXR0aW5nKCdsY19jdHlwZScpKSB8fCAnKTsn OworICBFWEVDVVRFICdDUkVBVEUgQ09MTEFUSU9OIHRlc3QxIChwcm92aWRlciA9IGljdSwg bG9jYWxlID0gJyB8fAorICAgICAgICAgIHF1b3RlX2xpdGVyYWwoY3VycmVudF9zZXR0aW5n KCdsY19jb2xsYXRlJykpIHx8ICcpOyc7CiBFTkQKICQkOwotQ1JFQVRFIENPTExBVElPTiB0 ZXN0MyAocHJvdmlkZXIgPSBpY3UsIGxjX2NvbGxhdGUgPSAnZW5fVVMudXRmOCcpOyAtLSBm YWlsLCBuZWVkIGxjX2N0eXBlCitDUkVBVEUgQ09MTEFUSU9OIHRlc3QzIChwcm92aWRlciA9 IGljdSwgbGNfY29sbGF0ZSA9ICdlbl9VUy51dGY4Jyk7IC0tIGZhaWwsIG5lZWRzICJsb2Nh bGUiCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0g J25vbnNlbnNlJyk7IC8qIG5ldmVyIGZhaWxzIHdpdGggSUNVICovICBEUk9QIENPTExBVElP TiB0ZXN0eDsKIAogQ1JFQVRFIENPTExBVElPTiB0ZXN0NCBGUk9NIG5vbnNlbnNlOwoKYmFz ZS1jb21taXQ6IDgxMTJiY2YwY2M2MDJlMDBlOTVlYWI2YzRiZGMwZWI3M2I1YjU0N2QKLS0g CjIuMzQuMQoK --------------pH4xY8tjatg26w0jFjB3375u--