Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gcnw1-0001z5-4N for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Dec 2018 08:56:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gcnvz-0007xC-PW for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Dec 2018 08:55:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gcnvz-0007uW-Ci for pgsql-hackers@lists.postgresql.org; Fri, 28 Dec 2018 08:55:59 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gcnvu-0004N4-9k for pgsql-hackers@postgresql.org; Fri, 28 Dec 2018 08:55:58 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id CB1F9220AA for ; Fri, 28 Dec 2018 03:55:52 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Fri, 28 Dec 2018 03:55:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=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=HL9E7y b5mZheulmwRFIISz6VZgm5Dgdu3rhhYRYMKmU=; b=xg4Hwo+ochOiw0tq5vcCQb A+M/xFvFcE5L3e5PqHz3BUzVoQUyU3kYASSkdVzjaBuCsXWplByW/Pr3E/w2W1j/ +YGwUtww9DjnT2GPc1C4ewtGGCno+kgtdEC4tuTyf25WXFaHQg9ZliI38Xs34XeX 1D06BTMvjB0OgkWNvEB6nlAfYkF9xDn9tedflaUqIo1phciCDcRuAYdEo394CEOS o/mXOwnQVHbctuWGiGNkdAV9yq1FFQxsWJifsOhTsWJS8Eo1eta/qUN3jNT5I2S2 VNdS4YITx6s5TLh8NMYuNNZ0VRgOxpc3x89OEQGtvNsY0DwEL2XtDUjgco9ic5UA == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedtledrtdeggdduvdeiucdltddurdegtdekrddttd dmucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfquhht necuuegrihhlohhuthemuceftddtnecunecujfgurhepuffhvfhfohfkffgfgggjtgesmh dtreertdefjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgv rhdrvghishgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhmqeenucffohhmrg hinhepvdhnughquhgrughrrghnthdrtghomhenucfkphepleefrddvgeefrdduudelrddv feelnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghuth esvdhnughquhgrughrrghnthdrtghomhenucevlhhushhtvghrufhiiigvpedt X-ME-Proxy: Received: from april.pezone.net (p5df377ef.dip0.t-ipconnect.de [93.243.119.239]) by mail.messagingengine.com (Postfix) with ESMTPA id 118DBE4652 for ; Fri, 28 Dec 2018 03:55:50 -0500 (EST) Subject: Re: insensitive collations From: Peter Eisentraut To: pgsql-hackers References: <1ccc668f-4cbc-0bef-af67-450b47cdfee7@2ndquadrant.com> Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= xsFNBFUUt6kBEADZd9NNTBJbHmAXXJgPGOdd6Q73l80oifIVgn2tRxP9dYkCfTlo/yLqbKTl JNqTcyM6XrJDnB2sMEUGYCewYZXl+9C4bBJWyNqcEI1ae9u71vEq/fknFLArJ+2wN+f7QuRx Q8d94ZJAiJQ5g3fNk2HVeedCQCKP5dCzU+ZLt2dbsx1PDZLjTO9gf+JswWuGFb5wY5PZVM5V hq66Xk7ZJzHuARacza2RT7J2fkMmQBY+kr7L98Perb0GhafnlhXB0PvUB+N3xpmggMfwuhTu BngS/G/r3GvemxJuFxouw8xsMqrsfdksJXA2gLXYtwRCssdPV3PO0rlD9twqDo8URfIJ5fb6 1g/MV8aTOKjg3Q8MpJPtkwJqN4o3PvbwYdedeFnOVkkYAJdu/aX1v1BeCBDu7Hy3sF52scD3 pQbyQSl9vUDpTLarASAxNbAV0NRJE8dp4vfW6AH1ccryGiFqw/czPK/iN0+MT8wsjAW6WW4w hvjm5UPA1KTwi3ZT8eT5uycuH7QpuNk7LnGGXQ6KaRALFywzkr0A0V0AvFNa+l4wstMaXaB6 dmMXyF0/hfryqyOeu1gAdq4q0/PNC2dPgb/6uoh4eMjN6A5GXcprilhz5DulmsilY21hfSoU S64ODed96pKhprsOxjZiDRsN1QM5MwB+uwVWUNfsX7fIxE0BrwARAQABzSdQZXRlciBFaXNl bnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz7CwXoEEwEIACQCGwMFCwkIBwMFFQoJCAsF FgIDAQACHgECF4AFAlUUuKQCGQEACgkQoZ8SQ+xBJp8llw//RbGoXnF72FZTlOFsnNyxnWbF vViPCfdAlZl1GGK9OYCvV1dp/956HuhB0wpaGQHiBmQfOPJf/jLOPjXFYm2iEChEycrBChuE j4TSYemMp5BSPILYk9Uwd16kVD/+U6fQfK6H5pOhfBvbM6asMnmpY2wQuvktxHvaGlytFw84 EzFWNZtAZfxkw28w3AhIQkKe9hJanfyDL750RcbyEr8AAHty5IErrvS7tM5vQwIeh5BF26ND CyKPRdZgOgMpcwFfROKBDpAt052CgWIpNdhBdfIKlkCs4/ILxmC3rT/Mb/qZiHcoMMwEu6k+ T7vRAFZZAk62Yrr/U8/vUGKlzRZQoo86fyojCfI0ibCIc0z8rwCVY9P40G9wD9BTCZS/z8Vh jjpBlNnIKw2hM6hbxavKndCJjFFJD08rXrTyrLF/of18xD37vNdYooP9VATB5QjOWFRrscSZ 4a89e+to3m7YVnd4xdXwGp47dYusoax84C8tg1gZrH38ol9dPmnKX6GZrXeS7tH9k8VeUpJ8 HQbRThQRWAT936QpYbLConBmOtmbLmjQOGtiXPo1oK57X/7U/WBja5vWmm2q+Yxtt+3uHGVg DdDU4CJpXo4lX0v2n3QV5EBSW9hjdF3bNfl6GFBb1pPEhqNcMDUc7zkx/2uENdAdk/BnqMgH umip7b0pVfvOwU0EVRS3qQEQAJf6p0P7D+hMYUgCPkvgrcz6OJYsAYdUMUmokfqmkKwK0oJM ew8TNGM53ocKAgQGma5f10rwbZNPlpVPNRX5hwUmwVlcwSut0oE+JfUBH7mpysWvpF05RKIy q9RCoJZrAbXS7Tig56A1QD8IcM00rERZMcCOlI1+q9m4u9AOI+0LyGGSH+VvoyDHD/Jew4R2 TmPEF8Pu7lYiNYK88Q6u0kBkc+Tz3BNlyc6fi3HxnFfp0b75HLXPSTu2SwA/0Q31wHZXwrEU BR9KgSn/qbgy8ydPc97i82fhiFE3cbGexfPrQSMYmDGi+dcQ0s+AMQwC3XyMC0JkHpYUuFkR QdlIvaIhgFUUN2Vr4xF2ADaNTNFc4DYaiPHFAgHZw+3pZWqS4uIiWgJynrEaHw4F3QWU8/JB iyEWDhNq4WBrRA0u914TCCAoFOOKMnRdl8eJrRQKM/5/lXbHFjjlI/LDKhLRFsuQsnJJ3331 RjCzpHPZG5/p5KR1RHiAXa0p/DW5lXyq21hS3kjDlleoHqOxCN/cy0Jgz7qLDq1vZoCl67Sy RAH60c2Xu4may9SVltmot0OzWVHdrfS+85FQGp9580DaeLio7YMFKy2bfEvwQJ/c9xD2QPB+ oSb3V8ueSznXBG5+dyfOsZFRPxceA0wA2rSWZSjxLdKxvyGTj9vsCjaDu13rABEBAAHCwV8E GAEIAAkFAlUUt6kCGwwACgkQoZ8SQ+xBJp+HJhAAxmSTsC5y7p9Zu+nnLpucv/h88oEx985e qWeXzQiwM3pfRZS+PdTH9TyzHK0KOgKoAiubk0vt+BrT91D9d0G5kVQaTctAErGBoMkTaZJT XVEcNphiPzysdSqvprjojMp1y7rG8AP+Xd6m0rE1LRnkRRm8HyI8vdXsuLQPITGWXDLMjaNq AOV3BUnzkgtjMuIYw7SCr+12ZOb5dEKvaG4kjC4kaJ/TLbuBhVANcXkC90yp0AOZLs/cB1Dj OAXno/RUUruJ3r27a+pFv768UAi9QWcdw58yPxreMNMLqAgsS9oTHwHfGNWcB2dJ4UW+GMLJ hTf9TjQ2f+N/sIx5XMQ9pYw6CAJMK29qPx6/ZayrPxf22EXf0D3zTwIEZgwfSkynFVwV25L7 awQq60fifdMYheSxq7GbhpsixmcD+e161cCmLIt75YDt5bQ0B1yf7EmxG8n7pGZAOM6LoNsU fkSldba5XVwh8LuN5mK0nQBELGW6Os4TDq4REggLpfcvFC215zpuo0iCGnmE/Bns4nowqUSP u4tkWL+nxW4qgv8wo8HJ52jd79EJ8iqfIBoidBfy9AIUiEUApGQzWPu6yWcI8fY0rN5D+tc+ Yw1Zt6Mm+huYJpgCRsTcfzEcahnBn521CWcWvhW1ff3KFileFMtNmnBBhMncmRKHphtTKEpN 3jI= Organization: 2ndQuadrant Message-ID: Date: Fri, 28 Dec 2018 09:55:49 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <1ccc668f-4cbc-0bef-af67-450b47cdfee7@2ndquadrant.com> Content-Type: multipart/mixed; boundary="------------8DD614E96130E890453CE3BF" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------8DD614E96130E890453CE3BF Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Here is an updated patch. I have updated the naming to "deterministic", as discussed. I have fixed up support for the "name" type, added foreign key support, psql, pg_dump support, more tests. There are a couple of TODOs in bpchar support that I need to look into a bit more. But other than that it's pretty complete. Perhaps it worth pointing out to new reviewers that the ICU tests can be run like so: make check EXTRA_TESTS=collate.icu.utf8 -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------8DD614E96130E890453CE3BF Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0001-Collations-with-nondeterministic-comparison.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v2-0001-Collations-with-nondeterministic-comparison.patch" RnJvbSBhZTVhMjM0NjUzYTI1NzMxMzY2NmY0N2VmMjM1ZTljYjNlZTkyMjAyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlcl9lQGdteC5u ZXQ+CkRhdGU6IEZyaSwgMjggRGVjIDIwMTggMDk6NDY6MzEgKzAxMDAKU3ViamVjdDogW1BB VENIIHYyXSBDb2xsYXRpb25zIHdpdGggbm9uZGV0ZXJtaW5pc3RpYyBjb21wYXJpc29uCgpU aGlzIGFkZHMgYSBmbGFnICJkZXRlcm1pbmlzdGljIiB0byBjb2xsYXRpb25zLiAgSWYgdGhh dCBpcyBmYWxzZSwKc3VjaCBhIGNvbGxhdGlvbiBkaXNhYmxlcyB2YXJpb3VzIG9wdGltaXph dGlvbnMgdGhhdCBhc3N1bWUgdGhhdApzdHJpbmdzIGFyZSBlcXVhbCBvbmx5IGlmIHRoZXkg YXJlIGJ5dGUtd2lzZSBlcXVhbC4gIFRoYXQgdGhlbiBhbGxvd3MKdXNlIGNhc2VzIHN1Y2gg YXMgY2FzZS1pbnNlbnNpdGl2ZSBvciBhY2NlbnQtaW5zZW5zaXRpdmUgY29tcGFyaXNvbnMK b3IgaGFuZGxpbmcgb2Ygc3RyaW5ncyB3aXRoIGRpZmZlcmVudCBVbmljb2RlIG5vcm1hbCBm b3Jtcy4KClRoZSB0ZXJtICJkZXRlcm1pbmlzdGljIGNvbXBhcmlzb24iIGluIHRoaXMgY29u dGV4dCBpcyBmcm9tIFVuaWNvZGUKVGVjaG5pY2FsIFN0YW5kYXJkICMxMAooaHR0cHM6Ly91 bmljb2RlLm9yZy9yZXBvcnRzL3RyMTAvI0RldGVybWluaXN0aWNfQ29tcGFyaXNvbikuCi0t LQogY29udHJpYi9ibG9vbS9ibG9vbS5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIGNvbnRyaWIvYmxvb20vYmx1dGlscy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAg MyArLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwg ICA3ICsKIGRvYy9zcmMvc2dtbC9jaGFyc2V0LnNnbWwgICAgICAgICAgICAgICAgICAgICB8 ICAxMSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwgICAgICAg IHwgIDIyICsrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoZnVuYy5jICAgICAgICAg ICAgfCAgODYgKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9uLmMgICAg ICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMg ICAgICAgICAgfCAgMjUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAg ICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5n LmMgICAgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5j ICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91 cC5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aC5jICAgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoam9pbi5jICAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVjdXJzaXZldW5pb24uYyAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTdWJwbGFuLmMgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVW5pcXVlLmMgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVdpbmRvd0FnZy5jICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jICAgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvbm9kZXMv cmVhZGZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8ICA1NCArKy0KIHNyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3RsaXN0LmMgICAgICAgICAgICB8ICAyNSArKwogc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L25hbWUuYyAgICAgICAgICAgICAgICAgIHwgIDMyICstCiBzcmMv YmFja2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYyAgICAgICAgfCAgIDMgKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCAgMjAgKysK IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJjaGFyLmMgICAgICAgICAgICAgICB8ICAyMCAr Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyAgICAgICAgICAgICAgIHwgIDQ1 ICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvY2F0Y2FjaGUuYyAgICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAg fCAgMTYgKwogc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAgICAgICAg IHwgICA0ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAg ICAgfCAgMzkgKystCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTcgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmggICAg ICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvaGFzaGpvaW4uaCAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVIYXNoLmggICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAg ICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAg ICAgICAgICAgICAgICB8ICAgNyArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4u aCAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL29wdGltaXplci90bGlzdC5o ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFy dGJvdW5kcy5oICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hl LmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2Fs ZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xs YXRlLmljdS51dGY4Lm91dCAgICAgfCAzMzEgKysrKysrKysrKysrKysrKystCiAuLi4vcmVn cmVzcy9leHBlY3RlZC9jb2xsYXRlLmxpbnV4LnV0Zjgub3V0ICAgfCAgMjUgKy0KIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsICAgICB8IDEwOSArKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUubGludXgudXRmOC5zcWwgICB8ICAgOCAr CiA1NCBmaWxlcyBjaGFuZ2VkLCA5MDggaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vYmxvb20uaCBiL2NvbnRyaWIvYmxvb20v Ymxvb20uaAppbmRleCAzOTczYWM3NWU4Li4wYjA1Zjk3OTZkIDEwMDY0NAotLS0gYS9jb250 cmliL2Jsb29tL2Jsb29tLmgKKysrIGIvY29udHJpYi9ibG9vbS9ibG9vbS5oCkBAIC0xMzcs NiArMTM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQmxvb21NZXRhUGFnZURhdGEKIHR5cGVkZWYg c3RydWN0IEJsb29tU3RhdGUKIHsKIAlGbWdySW5mbwloYXNoRm5bSU5ERVhfTUFYX0tFWVNd OworCU9pZAkJCWNvbGxhdGlvbnNbSU5ERVhfTUFYX0tFWVNdOwogCUJsb29tT3B0aW9ucyBv cHRzOwkJCS8qIGNvcHkgb2Ygb3B0aW9ucyBvbiBpbmRleCdzIG1ldGFwYWdlICovCiAJaW50 MzIJCW5Db2x1bW5zOwogCmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29tL2JsdXRpbHMuYyBi L2NvbnRyaWIvYmxvb20vYmx1dGlscy5jCmluZGV4IDZiMmI5ZTM3NDIuLjdiZDBkMGFhMmYg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmx1dGlscy5jCisrKyBiL2NvbnRyaWIvYmxv b20vYmx1dGlscy5jCkBAIC0xNjMsNiArMTYzLDcgQEAgaW5pdEJsb29tU3RhdGUoQmxvb21T dGF0ZSAqc3RhdGUsIFJlbGF0aW9uIGluZGV4KQogCQlmbWdyX2luZm9fY29weSgmKHN0YXRl LT5oYXNoRm5baV0pLAogCQkJCQkgICBpbmRleF9nZXRwcm9jaW5mbyhpbmRleCwgaSArIDEs IEJMT09NX0hBU0hfUFJPQyksCiAJCQkJCSAgIEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKKwkJ c3RhdGUtPmNvbGxhdGlvbnNbaV0gPSBpbmRleC0+cmRfaW5kY29sbGF0aW9uW2ldOwogCX0K IAogCS8qIEluaXRpYWxpemUgYW1jYWNoZSBpZiBuZWVkZWQgd2l0aCBvcHRpb25zIGZyb20g bWV0YXBhZ2UgKi8KQEAgLTI2Nyw3ICsyNjgsNyBAQCBzaWduVmFsdWUoQmxvb21TdGF0ZSAq c3RhdGUsIEJsb29tU2lnbmF0dXJlV29yZCAqc2lnbiwgRGF0dW0gdmFsdWUsIGludCBhdHRu bykKIAkgKiBkaWZmZXJlbnQgY29sdW1ucyB3aWxsIGJlIG1hcHBlZCBpbnRvIGRpZmZlcmVu dCBiaXRzIGJlY2F1c2Ugb2Ygc3RlcAogCSAqIGFib3ZlCiAJICovCi0JaGFzaFZhbCA9IERh dHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMSgmc3RhdGUtPmhhc2hGblthdHRub10sIHZhbHVl KSk7CisJaGFzaFZhbCA9IERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMUNvbGwoJnN0YXRl LT5oYXNoRm5bYXR0bm9dLCBzdGF0ZS0+Y29sbGF0aW9uc1thdHRub10sIHZhbHVlKSk7CiAJ bXlTcmFuZChoYXNoVmFsIF4gbXlSYW5kKCkpOwogCiAJZm9yIChqID0gMDsgaiA8IHN0YXRl LT5vcHRzLmJpdFNpemVbYXR0bm9dOyBqKyspCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGFmNGQw NjI1ZWEuLmIwODdjMWVjNzQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0yMDc3LDYgKzIwNzcs MTMgQEAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbGxhdGlvbjwvc3RydWN0bmFtZT4gQ29s dW1uczwvdGl0bGU+CiAgICAgICAgZGVmYXVsdCwgPGxpdGVyYWw+YzwvbGl0ZXJhbD4gPSBs aWJjLCA8bGl0ZXJhbD5pPC9saXRlcmFsPiA9IGljdTwvZW50cnk+CiAgICAgIDwvcm93Pgog CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNvbGxpc2RldGVybWlu aXN0aWM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+Ym9vbDwv dHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICA8ZW50cnk+SXMg dGhlIGNvbGxhdGlvbiBkZXRlcm1pbmlzdGljPzwvZW50cnk+CisgICAgIDwvcm93PgorCiAg ICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNvbGxlbmNvZGluZzwvc3Ry dWN0ZmllbGQ+PC9lbnRyeT4KICAgICAgIDxlbnRyeT48dHlwZT5pbnQ0PC90eXBlPjwvZW50 cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sIGIvZG9jL3NyYy9z Z21sL2NoYXJzZXQuc2dtbAppbmRleCBhNjE0M2VmOGE3Li5lYzYzNDNmYTgwIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jaGFy c2V0LnNnbWwKQEAgLTg0NywxMSArODQ3LDEyIEBAIDx0aXRsZT5JQ1UgY29sbGF0aW9uczwv dGl0bGU+CiAKICAgIDxwYXJhPgogICAgIE5vdGUgdGhhdCB3aGlsZSB0aGlzIHN5c3RlbSBh bGxvd3MgY3JlYXRpbmcgY29sbGF0aW9ucyB0aGF0IDxxdW90ZT5pZ25vcmUKLSAgICBjYXNl PC9xdW90ZT4gb3IgPHF1b3RlPmlnbm9yZSBhY2NlbnRzPC9xdW90ZT4gb3Igc2ltaWxhciAo dXNpbmcKLSAgICB0aGUgPGxpdGVyYWw+a3M8L2xpdGVyYWw+IGtleSksIFBvc3RncmVTUUwg ZG9lcyBub3QgYXQgdGhlIG1vbWVudCBhbGxvdwotICAgIHN1Y2ggY29sbGF0aW9ucyB0byBh Y3QgaW4gYSB0cnVseSBjYXNlLSBvciBhY2NlbnQtaW5zZW5zaXRpdmUgbWFubmVyLiAgQW55 Ci0gICAgc3RyaW5ncyB0aGF0IGNvbXBhcmUgZXF1YWwgYWNjb3JkaW5nIHRvIHRoZSBjb2xs YXRpb24gYnV0IGFyZSBub3QKLSAgICBieXRlLXdpc2UgZXF1YWwgd2lsbCBiZSBzb3J0ZWQg YWNjb3JkaW5nIHRvIHRoZWlyIGJ5dGUgdmFsdWVzLgorICAgIGNhc2U8L3F1b3RlPiBvciA8 cXVvdGU+aWdub3JlIGFjY2VudHM8L3F1b3RlPiBvciBzaW1pbGFyICh1c2luZyB0aGUKKyAg ICA8bGl0ZXJhbD5rczwvbGl0ZXJhbD4ga2V5KSwgaW4gb3JkZXIgZm9yIHN1Y2ggc3VjaCBj b2xsYXRpb25zIHRvIGFjdCBpbiBhCisgICAgdHJ1bHkgY2FzZS0gb3IgYWNjZW50LWluc2Vu c2l0aXZlIG1hbm5lciwgdGhleSBhbHNvIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgbm90Cisg ICAgPGZpcnN0dGVybT5kZXRlcm1pbmlzdGljPC9maXJzdHRlcm0+IGluIDxjb21tYW5kPkNS RUFURSBDT0xMQVRJT048L2NvbW1hbmQ+LgorICAgIE90aGVyd2lzZSwgYW55IHN0cmluZ3Mg dGhhdCBjb21wYXJlIGVxdWFsIGFjY29yZGluZyB0byB0aGUgY29sbGF0aW9uIGJ1dAorICAg IGFyZSBub3QgYnl0ZS13aXNlIGVxdWFsIHdpbGwgYmUgc29ydGVkIGFjY29yZGluZyB0byB0 aGVpciBieXRlIHZhbHVlcy4KICAgIDwvcGFyYT4KIAogICAgPG5vdGU+CmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9jb2xsYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX2NvbGxhdGlvbi5zZ21sCmluZGV4IDAzODc5N2ZjZTEuLmRlZjRkZGE2 ZTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2NvbGxhdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2NvbGxhdGlvbi5zZ21sCkBAIC0yMyw2 ICsyMyw3IEBACiAgICAgWyBMQ19DT0xMQVRFID0gPHJlcGxhY2VhYmxlPmxjX2NvbGxhdGU8 L3JlcGxhY2VhYmxlPiwgXQogICAgIFsgTENfQ1RZUEUgPSA8cmVwbGFjZWFibGU+bGNfY3R5 cGU8L3JlcGxhY2VhYmxlPiwgXQogICAgIFsgUFJPVklERVIgPSA8cmVwbGFjZWFibGU+cHJv dmlkZXI8L3JlcGxhY2VhYmxlPiwgXQorICAgIFsgREVURVJNSU5JU1RJQyA9IDxyZXBsYWNl YWJsZT5ib29sZWFuPC9yZXBsYWNlYWJsZT4sIF0KICAgICBbIFZFUlNJT04gPSA8cmVwbGFj ZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+IF0KICkKIENSRUFURSBDT0xMQVRJT04gWyBJ RiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBGUk9NIDxy ZXBsYWNlYWJsZT5leGlzdGluZ19jb2xsYXRpb248L3JlcGxhY2VhYmxlPgpAQCAtMTI0LDYg KzEyNSwyNyBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVy bT48bGl0ZXJhbD5ERVRFUk1JTklTVElDPC9saXRlcmFsPjwvdGVybT4KKworICAgICA8bGlz dGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0aGUgY29s bGF0aW9uIHNob3VsZCB1c2UgZGV0ZXJtaW5pc3RpYyBjb21wYXJpc29ucy4KKyAgICAgICBU aGUgZGVmYXVsdCBpcyB0cnVlLiAgQSBkZXRlcm1pbmlzdGljIGNvbXBhcmlzb24gY29uc2lk ZXJzIHN0cmluZ3MgdGhhdAorICAgICAgIGFyZSBub3QgYnl0ZS13aXNlIGVxdWFsIHRvIGJl IHVuZXF1YWwgZXZlbiBpZiB0aGV5IGFyZSBjb25zaWRlcmVkCisgICAgICAgbG9naWNhbGx5 IGVxdWFsIGJ5IHRoZSBjb21wYXJpc29uLiAgUG9zdGdyZVNRTCBicmVha3MgdGllcyB1c2lu ZyBhCisgICAgICAgYnl0ZS13aXNlIGNvbXBhcmlzb24uICBDb21wYXJpc29uIHRoYXQgaXMg bm90IGRldGVybWluaXN0aWMgY2FuIG1ha2UgdGhlCisgICAgICAgY29sbGF0aW9uIGJlLCBz YXksIGNhc2UtIG9yIGFjY2VudC1pbnNlbnNpdGl2ZS4gIEZvciB0aGF0LCB5b3UgbmVlZCB0 bworICAgICAgIGNob29zZSBhbiBhcHByb3ByaWF0ZSA8bGl0ZXJhbD5MQ19DT0xMQVRFPC9s aXRlcmFsPiBzZXR0aW5nCisgICAgICAgPGVtcGhhc2lzPmFuZDwvZW1waGFzaXM+IHNldCB0 aGUgY29sbGF0aW9uIHRvIG5vdCBkZXRlcm1pbmlzdGljIGhlcmUuCisgICAgICA8L3BhcmE+ CisKKyAgICAgIDxwYXJhPgorICAgICAgIE5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucyBh cmUgb25seSBzdXBwb3J0ZWQgd2l0aCB0aGUgSUNVIHByb3ZpZGVyLgorICAgICAgPC9wYXJh PgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgPHZhcmxp c3RlbnRyeT4KICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxl PjwvdGVybT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGZ1 bmMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hmdW5jLmMKaW5kZXggYTAwNjBh NjMzZC4uNDU2YjU1YWE3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaGZ1bmMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoZnVuYy5jCkBA IC0yNyw3ICsyNyw5IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFj Y2Vzcy9oYXNoLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgog CiAvKgogICogRGF0YXR5cGUtc3BlY2lmaWMgaGFzaCBmdW5jdGlvbnMuCkBAIC0yNDIsOCAr MjQ0LDUwIEBAIERhdHVtCiBoYXNodGV4dChQR19GVU5DVElPTl9BUkdTKQogewogCXRleHQJ ICAgKmtleSA9IFBHX0dFVEFSR19URVhUX1BQKDApOworCU9pZAkJCWNvbGxpZCA9IFBHX0dF VF9DT0xMQVRJT04oKTsKIAlEYXR1bQkJcmVzdWx0OwogCisJaWYgKCFjb2xsaWQpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0NPTExB VElPTiksCisJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB3aGljaCBjb2xsYXRp b24gdG8gdXNlIGZvciBzdHJpbmcgaGFzaGluZyIpLAorCQkJCSBlcnJoaW50KCJVc2UgdGhl IENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikpKTsK KworCWlmIChjb2xsaWQgIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQorCXsKKwkJcGdfbG9j YWxlX3QJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsK KworCQlpZiAobXlsb2NhbGUgJiYgIW15bG9jYWxlLT5kZXRlcm1pbmlzdGljKQorCQl7CisJ CQlpZiAobXlsb2NhbGUtPnByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCQl7Cisj aWZkZWYgVVNFX0lDVQorCQkJCWludDMyX3QJCXVsZW4gPSAtMTsKKwkJCQlVQ2hhcgkgICAq dWNoYXIgPSBOVUxMOworCQkJCVNpemUJCWJzaXplOworCQkJCXVpbnQ4X3QJICAgKmJ1ZjsK KworCQkJCXVsZW4gPSBpY3VfdG9fdWNoYXIoJnVjaGFyLCBWQVJEQVRBX0FOWShrZXkpLCBW QVJTSVpFX0FOWV9FWEhEUihrZXkpKTsKKworCQkJCWJzaXplID0gdWNvbF9nZXRTb3J0S2V5 KG15bG9jYWxlLT5pbmZvLmljdS51Y29sLAorCQkJCQkJCQkJCXVjaGFyLCB1bGVuLCBOVUxM LCAwKTsKKwkJCQlidWYgPSBwYWxsb2MoYnNpemUpOworCQkJCXVjb2xfZ2V0U29ydEtleSht eWxvY2FsZS0+aW5mby5pY3UudWNvbCwKKwkJCQkJCQkJdWNoYXIsIHVsZW4sIGJ1ZiwgYnNp emUpOworCisJCQkJcmVzdWx0ID0gaGFzaF9hbnkoYnVmLCBic2l6ZSk7CisKKwkJCQlQR19G UkVFX0lGX0NPUFkoa2V5LCAwKTsKKworCQkJCXJldHVybiByZXN1bHQ7CisjZWxzZQorCQkJ CS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQg Y29sbHByb3ZpZGVyOiAlYyIsIG15bG9jYWxlLT5wcm92aWRlcik7CisjZW5kaWYKKwkJCX0K KwkJfQorCX0KKwogCS8qCiAJICogTm90ZTogdGhpcyBpcyBjdXJyZW50bHkgaWRlbnRpY2Fs IGluIGJlaGF2aW9yIHRvIGhhc2h2YXJsZW5hLCBidXQga2VlcAogCSAqIGl0IGFzIGEgc2Vw YXJhdGUgZnVuY3Rpb24gaW4gY2FzZSB3ZSBzb21lZGF5IHdhbnQgdG8gZG8gc29tZXRoaW5n CkBAIC0yNjIsOCArMzA2LDUwIEBAIERhdHVtCiBoYXNodGV4dGV4dGVuZGVkKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAJdGV4dAkgICAqa2V5ID0gUEdfR0VUQVJHX1RFWFRfUFAoMCk7CisJ T2lkCQkJY29sbGlkID0gUEdfR0VUX0NPTExBVElPTigpOwogCURhdHVtCQlyZXN1bHQ7CiAK KwlpZiAoIWNvbGxpZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0lOREVURVJNSU5BVEVfQ09MTEFUSU9OKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0 ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yIHN0cmluZyBoYXNoaW5nIiksCisJ CQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2UgdG8gc2V0IHRoZSBjb2xsYXRp b24gZXhwbGljaXRseS4iKSkpOworCisJaWYgKGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElP Tl9PSUQpCisJeworCQlwZ19sb2NhbGVfdAlteWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9t X2NvbGxhdGlvbihjb2xsaWQpOworCisJCWlmIChteWxvY2FsZSAmJiAhbXlsb2NhbGUtPmRl dGVybWluaXN0aWMpCisJCXsKKwkJCWlmIChteWxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBS T1ZJREVSX0lDVSkKKwkJCXsKKyNpZmRlZiBVU0VfSUNVCisJCQkJaW50MzJfdAkJdWxlbiA9 IC0xOworCQkJCVVDaGFyCSAgICp1Y2hhciA9IE5VTEw7CisJCQkJU2l6ZQkJYnNpemU7CisJ CQkJdWludDhfdAkgICAqYnVmOworCisJCQkJdWxlbiA9IGljdV90b191Y2hhcigmdWNoYXIs IFZBUkRBVEFfQU5ZKGtleSksIFZBUlNJWkVfQU5ZX0VYSERSKGtleSkpOworCisJCQkJYnNp emUgPSB1Y29sX2dldFNvcnRLZXkobXlsb2NhbGUtPmluZm8uaWN1LnVjb2wsCisJCQkJCQkJ CQkJdWNoYXIsIHVsZW4sIE5VTEwsIDApOworCQkJCWJ1ZiA9IHBhbGxvYyhic2l6ZSk7CisJ CQkJdWNvbF9nZXRTb3J0S2V5KG15bG9jYWxlLT5pbmZvLmljdS51Y29sLAorCQkJCQkJCQl1 Y2hhciwgdWxlbiwgYnVmLCBic2l6ZSk7CisKKwkJCQlyZXN1bHQgPSBoYXNoX2FueShidWYs IGJzaXplKTsKKworCQkJCVBHX0ZSRUVfSUZfQ09QWShrZXksIDApOworCisJCQkJcmV0dXJu IHJlc3VsdDsKKyNlbHNlCisJCQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLworCQkJCWVsb2co RVJST1IsICJ1bnN1cHBvcnRlZCBjb2xscHJvdmlkZXI6ICVjIiwgbXlsb2NhbGUtPnByb3Zp ZGVyKTsKKyNlbmRpZgorCQkJfQorCQl9CisJfQorCiAJLyogU2FtZSBhcHByb2FjaCBhcyBo YXNodGV4dCAqLwogCXJlc3VsdCA9IGhhc2hfYW55X2V4dGVuZGVkKCh1bnNpZ25lZCBjaGFy ICopIFZBUkRBVEFfQU5ZKGtleSksCiAJCQkJCQkJICAgVkFSU0laRV9BTllfRVhIRFIoa2V5 KSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9uLmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbGxhdGlvbi5jCmluZGV4IGQ0NTQzYjUxMWUuLjJm NDdlNzc1ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb2xsYXRpb24uYwpAQCAtNDcsNiAr NDcsNyBAQCBPaWQKIENvbGxhdGlvbkNyZWF0ZShjb25zdCBjaGFyICpjb2xsbmFtZSwgT2lk IGNvbGxuYW1lc3BhY2UsCiAJCQkJT2lkIGNvbGxvd25lciwKIAkJCQljaGFyIGNvbGxwcm92 aWRlciwKKwkJCQlib29sIGNvbGxpc2RldGVybWluaXN0aWMsCiAJCQkJaW50MzIgY29sbGVu Y29kaW5nLAogCQkJCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlLCBjb25zdCBjaGFyICpjb2xs Y3R5cGUsCiAJCQkJY29uc3QgY2hhciAqY29sbHZlcnNpb24sCkBAIC0xNjEsNiArMTYyLDcg QEAgQ29sbGF0aW9uQ3JlYXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVz cGFjZSwKIAl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbG5hbWVzcGFjZSAtIDFdID0g T2JqZWN0SWRHZXREYXR1bShjb2xsbmFtZXNwYWNlKTsKIAl2YWx1ZXNbQW51bV9wZ19jb2xs YXRpb25fY29sbG93bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGNvbGxvd25lcik7CiAJ dmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxwcm92aWRlciAtIDFdID0gQ2hhckdldERh dHVtKGNvbGxwcm92aWRlcik7CisJdmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxpc2Rl dGVybWluaXN0aWMgLSAxXSA9IEJvb2xHZXREYXR1bShjb2xsaXNkZXRlcm1pbmlzdGljKTsK IAl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbGVuY29kaW5nIC0gMV0gPSBJbnQzMkdl dERhdHVtKGNvbGxlbmNvZGluZyk7CiAJbmFtZXN0cmNweSgmbmFtZV9jb2xsYXRlLCBjb2xs Y29sbGF0ZSk7CiAJdmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlIC0gMV0g PSBOYW1lR2V0RGF0dW0oJm5hbWVfY29sbGF0ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xs YXRpb25jbWRzLmMKaW5kZXggOGZiNTFlOGMzZC4uODlkZDM3MTYwNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYwpAQCAtNTksMTAgKzU5LDEyIEBAIERlZmluZUNv bGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0 ZXJzLCBib29sIGlmX25vdF9lCiAJRGVmRWxlbSAgICAqbGNjb2xsYXRlRWwgPSBOVUxMOwog CURlZkVsZW0gICAgKmxjY3R5cGVFbCA9IE5VTEw7CiAJRGVmRWxlbSAgICAqcHJvdmlkZXJF bCA9IE5VTEw7CisJRGVmRWxlbSAgICAqZGV0ZXJtaW5pc3RpY0VsID0gTlVMTDsKIAlEZWZF bGVtICAgICp2ZXJzaW9uRWwgPSBOVUxMOwogCWNoYXIJICAgKmNvbGxjb2xsYXRlID0gTlVM TDsKIAljaGFyCSAgICpjb2xsY3R5cGUgPSBOVUxMOwogCWNoYXIJICAgKmNvbGxwcm92aWRl cnN0ciA9IE5VTEw7CisJYm9vbAkJY29sbGlzZGV0ZXJtaW5pc3RpYyA9IHRydWU7CiAJaW50 CQkJY29sbGVuY29kaW5nID0gMDsKIAljaGFyCQljb2xscHJvdmlkZXIgPSAwOwogCWNoYXIJ ICAgKmNvbGx2ZXJzaW9uID0gTlVMTDsKQEAgLTkxLDYgKzkzLDggQEAgRGVmaW5lQ29sbGF0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMs IGJvb2wgaWZfbm90X2UKIAkJCWRlZmVscCA9ICZsY2N0eXBlRWw7CiAJCWVsc2UgaWYgKHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgInByb3ZpZGVyIikgPT0gMCkKIAkJCWRlZmVscCA9ICZw cm92aWRlckVsOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJkZXRlcm1p bmlzdGljIikgPT0gMCkKKwkJCWRlZmVscCA9ICZkZXRlcm1pbmlzdGljRWw7CiAJCWVsc2Ug aWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInZlcnNpb24iKSA9PSAwKQogCQkJZGVmZWxw ID0gJnZlcnNpb25FbDsKIAkJZWxzZQpAQCAtMTI1LDYgKzEyOSw3IEBAIERlZmluZUNvbGxh dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJz LCBib29sIGlmX25vdF9lCiAJCWNvbGxjb2xsYXRlID0gcHN0cmR1cChOYW1lU3RyKCgoRm9y bV9wZ19jb2xsYXRpb24pIEdFVFNUUlVDVCh0cCkpLT5jb2xsY29sbGF0ZSkpOwogCQljb2xs Y3R5cGUgPSBwc3RyZHVwKE5hbWVTdHIoKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNU KHRwKSktPmNvbGxjdHlwZSkpOwogCQljb2xscHJvdmlkZXIgPSAoKEZvcm1fcGdfY29sbGF0 aW9uKSBHRVRTVFJVQ1QodHApKS0+Y29sbHByb3ZpZGVyOworCQljb2xsaXNkZXRlcm1pbmlz dGljID0gKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxpc2RldGVy bWluaXN0aWM7CiAJCWNvbGxlbmNvZGluZyA9ICgoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNU UlVDVCh0cCkpLT5jb2xsZW5jb2Rpbmc7CiAKIAkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKQEAg LTE1Nyw2ICsxNjIsOSBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBM aXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCWlmIChwcm92 aWRlckVsKQogCQljb2xscHJvdmlkZXJzdHIgPSBkZWZHZXRTdHJpbmcocHJvdmlkZXJFbCk7 CiAKKwlpZiAoZGV0ZXJtaW5pc3RpY0VsKQorCQljb2xsaXNkZXRlcm1pbmlzdGljID0gZGVm R2V0Qm9vbGVhbihkZXRlcm1pbmlzdGljRWwpOworCiAJaWYgKHZlcnNpb25FbCkKIAkJY29s bHZlcnNpb24gPSBkZWZHZXRTdHJpbmcodmVyc2lvbkVsKTsKIApAQCAtMTg1LDYgKzE5Mywx NiBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywg TGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCiAJCQkJIGVycm1zZygicGFyYW1ldGVyIFwi bGNfY3R5cGVcIiBtdXN0IGJlIHNwZWNpZmllZCIpKSk7CiAKKwkvKgorCSAqIE5vbmRldGVy bWluaXN0aWMgY29sbGF0aW9ucyBhcmUgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIHdpdGgg SUNVCisJICogYmVjYXVzZSB0aGF0J3MgdGhlIG9ubHkgY2FzZSB3aGVyZSBpdCBjYW4gYWN0 dWFsbHkgbWFrZSBhIGRpZmZlcmVuY2UuCisJICogU28gd2UgY2FuIHNhdmUgd3JpdGluZyB0 aGUgY29kZSBmb3IgdGhlIG90aGVyIHByb3ZpZGVycy4KKwkgKi8KKwlpZiAoIWNvbGxpc2Rl dGVybWluaXN0aWMgJiYgY29sbHByb3ZpZGVyICE9IENPTExQUk9WSURFUl9JQ1UpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCSBlcnJtc2coIm5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucyBub3Qgc3Vw cG9ydGVkIHdpdGggdGhpcyBwcm92aWRlciIpKSk7CisKIAlpZiAoIWZyb21FbCkKIAl7CiAJ CWlmIChjb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKQEAgLTIwMyw2ICsyMjEs NyBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywg TGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCQkJCQkJCSBjb2xsTmFtZXNwYWNl LAogCQkJCQkJCSBHZXRVc2VySWQoKSwKIAkJCQkJCQkgY29sbHByb3ZpZGVyLAorCQkJCQkJ CSBjb2xsaXNkZXRlcm1pbmlzdGljLAogCQkJCQkJCSBjb2xsZW5jb2RpbmcsCiAJCQkJCQkJ IGNvbGxjb2xsYXRlLAogCQkJCQkJCSBjb2xsY3R5cGUsCkBAIC01ODYsNyArNjA1LDcgQEAg cGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKiBh Ym91dCBleGlzdGluZyBvbmVzLgogCQkJICovCiAJCQljb2xsaWQgPSBDb2xsYXRpb25DcmVh dGUobG9jYWxlYnVmLCBuc3BpZCwgR2V0VXNlcklkKCksCi0JCQkJCQkJCQkgQ09MTFBST1ZJ REVSX0xJQkMsIGVuYywKKwkJCQkJCQkJCSBDT0xMUFJPVklERVJfTElCQywgdHJ1ZSwgZW5j LAogCQkJCQkJCQkJIGxvY2FsZWJ1ZiwgbG9jYWxlYnVmLAogCQkJCQkJCQkJIGdldF9jb2xs YXRpb25fYWN0dWFsX3ZlcnNpb24oQ09MTFBST1ZJREVSX0xJQkMsIGxvY2FsZWJ1ZiksCiAJ CQkJCQkJCQkgdHJ1ZSwgdHJ1ZSk7CkBAIC02NDcsNyArNjY2LDcgQEAgcGdfaW1wb3J0X3N5 c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlpbnQJCQllbmMgPSBhbGlh c2VzW2ldLmVuYzsKIAogCQkJY29sbGlkID0gQ29sbGF0aW9uQ3JlYXRlKGFsaWFzLCBuc3Bp ZCwgR2V0VXNlcklkKCksCi0JCQkJCQkJCQkgQ09MTFBST1ZJREVSX0xJQkMsIGVuYywKKwkJ CQkJCQkJCSBDT0xMUFJPVklERVJfTElCQywgdHJ1ZSwgZW5jLAogCQkJCQkJCQkJIGxvY2Fs ZSwgbG9jYWxlLAogCQkJCQkJCQkJIGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oQ09M TFBST1ZJREVSX0xJQkMsIGxvY2FsZSksCiAJCQkJCQkJCQkgdHJ1ZSwgdHJ1ZSk7CkBAIC03 MDksNyArNzI4LDcgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9O X0FSR1MpCiAKIAkJCWNvbGxpZCA9IENvbGxhdGlvbkNyZWF0ZShwc3ByaW50ZigiJXMteC1p Y3UiLCBsYW5ndGFnKSwKIAkJCQkJCQkJCSBuc3BpZCwgR2V0VXNlcklkKCksCi0JCQkJCQkJ CQkgQ09MTFBST1ZJREVSX0lDVSwgLTEsCisJCQkJCQkJCQkgQ09MTFBST1ZJREVSX0lDVSwg dHJ1ZSwgLTEsCiAJCQkJCQkJCQkgY29sbGNvbGxhdGUsIGNvbGxjb2xsYXRlLAogCQkJCQkJ CQkJIGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oQ09MTFBST1ZJREVSX0lDVSwgY29s bGNvbGxhdGUpLAogCQkJCQkJCQkJIHRydWUsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHByLmMKaW5kZXggNGY4YTJhNWJjMi4uMmQ5NzRmZTc0OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jCkBAIC0zMzE2LDYgKzMzMTYsNyBAQCBFeGVjQnVpbGRHcm91cGluZ0VxdWFs KFR1cGxlRGVzYyBsZGVzYywgVHVwbGVEZXNjIHJkZXNjLAogCQkJCQkgICBpbnQgbnVtQ29s cywKIAkJCQkJICAgY29uc3QgQXR0ck51bWJlciAqa2V5Q29sSWR4LAogCQkJCQkgICBjb25z dCBPaWQgKmVxZnVuY3Rpb25zLAorCQkJCQkgICBjb25zdCBPaWQgKmNvbGxhdGlvbnMsCiAJ CQkJCSAgIFBsYW5TdGF0ZSAqcGFyZW50KQogewogCUV4cHJTdGF0ZSAgKnN0YXRlID0gbWFr ZU5vZGUoRXhwclN0YXRlKTsKQEAgLTMzNzYsNiArMzM3Nyw3IEBAIEV4ZWNCdWlsZEdyb3Vw aW5nRXF1YWwoVHVwbGVEZXNjIGxkZXNjLCBUdXBsZURlc2MgcmRlc2MsCiAJCUZvcm1fcGdf YXR0cmlidXRlIGxhdHQgPSBUdXBsZURlc2NBdHRyKGxkZXNjLCBhdHRubyAtIDEpOwogCQlG b3JtX3BnX2F0dHJpYnV0ZSByYXR0ID0gVHVwbGVEZXNjQXR0cihyZGVzYywgYXR0bm8gLSAx KTsKIAkJT2lkCQkJZm9pZCA9IGVxZnVuY3Rpb25zW25hdHRdOworCQlPaWQJCQljb2xsaWQg PSBjb2xsYXRpb25zW25hdHRdOwogCQlGbWdySW5mbyAgICpmaW5mbzsKIAkJRnVuY3Rpb25D YWxsSW5mbyBmY2luZm87CiAJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CkBAIC0zMzkzLDcgKzMz OTUsNyBAQCBFeGVjQnVpbGRHcm91cGluZ0VxdWFsKFR1cGxlRGVzYyBsZGVzYywgVHVwbGVE ZXNjIHJkZXNjLAogCQlmbWdyX2luZm8oZm9pZCwgZmluZm8pOwogCQlmbWdyX2luZm9fc2V0 X2V4cHIoTlVMTCwgZmluZm8pOwogCQlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmZjaW5m bywgZmluZm8sIDIsCi0JCQkJCQkJCSBJbnZhbGlkT2lkLCBOVUxMLCBOVUxMKTsKKwkJCQkJ CQkJIGNvbGxpZCwgTlVMTCwgTlVMTCk7CiAKIAkJLyogbGVmdCBhcmcgKi8KIAkJc2NyYXRj aC5vcGNvZGUgPSBFRU9QX0lOTkVSX1ZBUjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNHcm91cGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3Vw aW5nLmMKaW5kZXggZWZlOGMzMDM4My4uMDFlODUzNTViMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0dyb3VwaW5nLmMKQEAgLTYxLDYgKzYxLDcgQEAgZXhlY1R1cGxlc01hdGNoUHJl cGFyZShUdXBsZURlc2MgZGVzYywKIAkJCQkJICAgaW50IG51bUNvbHMsCiAJCQkJCSAgIGNv bnN0IEF0dHJOdW1iZXIgKmtleUNvbElkeCwKIAkJCQkJICAgY29uc3QgT2lkICplcU9wZXJh dG9ycywKKwkJCQkJICAgY29uc3QgT2lkICpjb2xsYXRpb25zLAogCQkJCQkgICBQbGFuU3Rh dGUgKnBhcmVudCkKIHsKIAlPaWQJCSAgICplcUZ1bmN0aW9ucyA9IChPaWQgKikgcGFsbG9j KG51bUNvbHMgKiBzaXplb2YoT2lkKSk7CkBAIC03Niw3ICs3Nyw3IEBAIGV4ZWNUdXBsZXNN YXRjaFByZXBhcmUoVHVwbGVEZXNjIGRlc2MsCiAKIAkvKiBidWlsZCBhY3R1YWwgZXhwcmVz c2lvbiAqLwogCWV4cHIgPSBFeGVjQnVpbGRHcm91cGluZ0VxdWFsKGRlc2MsIGRlc2MsIE5V TEwsIE5VTEwsCi0JCQkJCQkJCSAgbnVtQ29scywga2V5Q29sSWR4LCBlcUZ1bmN0aW9ucywK KwkJCQkJCQkJICBudW1Db2xzLCBrZXlDb2xJZHgsIGVxRnVuY3Rpb25zLCBjb2xsYXRpb25z LAogCQkJCQkJCQkgIHBhcmVudCk7CiAKIAlyZXR1cm4gZXhwcjsKQEAgLTE1NSw2ICsxNTYs NyBAQCBCdWlsZFR1cGxlSGFzaFRhYmxlKFBsYW5TdGF0ZSAqcGFyZW50LAogCQkJCQlpbnQg bnVtQ29scywgQXR0ck51bWJlciAqa2V5Q29sSWR4LAogCQkJCQljb25zdCBPaWQgKmVxZnVu Y29pZHMsCiAJCQkJCUZtZ3JJbmZvICpoYXNoZnVuY3Rpb25zLAorCQkJCQlPaWQgKmNvbGxh dGlvbnMsCiAJCQkJCWxvbmcgbmJ1Y2tldHMsIFNpemUgYWRkaXRpb25hbHNpemUsCiAJCQkJ CU1lbW9yeUNvbnRleHQgdGFibGVjeHQsIE1lbW9yeUNvbnRleHQgdGVtcGN4dCwKIAkJCQkJ Ym9vbCB1c2VfdmFyaWFibGVfaGFzaF9pdikKQEAgLTE3NCw2ICsxNzYsNyBAQCBCdWlsZFR1 cGxlSGFzaFRhYmxlKFBsYW5TdGF0ZSAqcGFyZW50LAogCWhhc2h0YWJsZS0+bnVtQ29scyA9 IG51bUNvbHM7CiAJaGFzaHRhYmxlLT5rZXlDb2xJZHggPSBrZXlDb2xJZHg7CiAJaGFzaHRh YmxlLT50YWJfaGFzaF9mdW5jcyA9IGhhc2hmdW5jdGlvbnM7CisJaGFzaHRhYmxlLT50YWJf Y29sbGF0aW9ucyA9IGNvbGxhdGlvbnM7CiAJaGFzaHRhYmxlLT50YWJsZWN4dCA9IHRhYmxl Y3h0OwogCWhhc2h0YWJsZS0+dGVtcGN4dCA9IHRlbXBjeHQ7CiAJaGFzaHRhYmxlLT5lbnRy eXNpemUgPSBlbnRyeXNpemU7CkBAIC0yMTEsNyArMjE0LDcgQEAgQnVpbGRUdXBsZUhhc2hU YWJsZShQbGFuU3RhdGUgKnBhcmVudCwKIAloYXNodGFibGUtPnRhYl9lcV9mdW5jID0gRXhl Y0J1aWxkR3JvdXBpbmdFcXVhbChpbnB1dERlc2MsIGlucHV0RGVzYywKIAkJCQkJCQkJCQkJ CQkmVFRTT3BzTWluaW1hbFR1cGxlLCAmVFRTT3BzTWluaW1hbFR1cGxlLAogCQkJCQkJCQkJ CQkJCW51bUNvbHMsCi0JCQkJCQkJCQkJCQkJa2V5Q29sSWR4LCBlcWZ1bmNvaWRzLAorCQkJ CQkJCQkJCQkJCWtleUNvbElkeCwgZXFmdW5jb2lkcywgY29sbGF0aW9ucywKIAkJCQkJCQkJ CQkJCQlwYXJlbnQpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwpA QCAtMzc0LDggKzM3Nyw5IEBAIFR1cGxlSGFzaFRhYmxlSGFzaChzdHJ1Y3QgdHVwbGVoYXNo X2hhc2ggKnRiLCBjb25zdCBNaW5pbWFsVHVwbGUgdHVwbGUpCiAJCXsKIAkJCXVpbnQzMgkJ aGtleTsKIAotCQkJaGtleSA9IERhdHVtR2V0VUludDMyKEZ1bmN0aW9uQ2FsbDEoJmhhc2hm dW5jdGlvbnNbaV0sCi0JCQkJCQkJCQkJCQlhdHRyKSk7CisJCQloa2V5ID0gRGF0dW1HZXRV SW50MzIoRnVuY3Rpb25DYWxsMUNvbGwoJmhhc2hmdW5jdGlvbnNbaV0sCisJCQkJCQkJCQkJ CQkJaGFzaHRhYmxlLT50YWJfY29sbGF0aW9uc1tpXSwKKwkJCQkJCQkJCQkJCQlhdHRyKSk7 CiAJCQloYXNoa2V5IF49IGhrZXk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFydGl0aW9uLmMKaW5kZXggMTc5YTUwMWYzMC4uMDM4NzcxNzE4MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTIxNyw2ICsxMjE3LDcgQEAgZ2V0X3Bh cnRpdGlvbl9mb3JfdHVwbGUoUGFydGl0aW9uRGlzcGF0Y2ggcGQsIERhdHVtICp2YWx1ZXMs IGJvb2wgKmlzbnVsbCkKIAkJCQlncmVhdGVzdF9tb2R1bHVzID0gZ2V0X2hhc2hfcGFydGl0 aW9uX2dyZWF0ZXN0X21vZHVsdXMoYm91bmRpbmZvKTsKIAkJCQlyb3dIYXNoID0gY29tcHV0 ZV9wYXJ0aXRpb25faGFzaF92YWx1ZShrZXktPnBhcnRuYXR0cywKIAkJCQkJCQkJCQkJCQkg ICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCQkJCSAgIGtleS0+cGFydGNvbGxhdGlv biwKIAkJCQkJCQkJCQkJCQkgICB2YWx1ZXMsIGlzbnVsbCk7CiAKIAkJCQlwYXJ0X2luZGV4 ID0gYm91bmRpbmZvLT5pbmRleGVzW3Jvd0hhc2ggJSBncmVhdGVzdF9tb2R1bHVzXTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBZ2cuYwppbmRleCBkYWY1NmNkM2QxLi4wZGQyYjAyYTllIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFnZy5jCkBAIC0xMjgzLDYgKzEyODMsNyBAQCBidWlsZF9oYXNo X3RhYmxlKEFnZ1N0YXRlICphZ2dzdGF0ZSkKIAkJCQkJCQkJCQkJCSBwZXJoYXNoLT5oYXNo R3JwQ29sSWR4SGFzaCwKIAkJCQkJCQkJCQkJCSBwZXJoYXNoLT5lcWZ1bmNvaWRzLAogCQkJ CQkJCQkJCQkJIHBlcmhhc2gtPmhhc2hmdW5jdGlvbnMsCisJCQkJCQkJCQkJCQkgcGVyaGFz aC0+YWdnbm9kZS0+Z3JwQ29sbGF0aW9ucywKIAkJCQkJCQkJCQkJCSBwZXJoYXNoLT5hZ2du b2RlLT5udW1Hcm91cHMsCiAJCQkJCQkJCQkJCQkgYWRkaXRpb25hbHNpemUsCiAJCQkJCQkJ CQkJCQkgYWdnc3RhdGUtPmhhc2hjb250ZXh0LT5lY3h0X3Blcl90dXBsZV9tZW1vcnksCkBA IC0yMzc2LDYgKzIzNzcsNyBAQCBFeGVjSW5pdEFnZyhBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCQkJCQkgICBsZW5ndGgsCiAJCQkJCQkJCQkJCSAg IGFnZ25vZGUtPmdycENvbElkeCwKIAkJCQkJCQkJCQkJICAgYWdnbm9kZS0+Z3JwT3BlcmF0 b3JzLAorCQkJCQkJCQkJCQkgICBhZ2dub2RlLT5ncnBDb2xsYXRpb25zLAogCQkJCQkJCQkJ CQkgICAoUGxhblN0YXRlICopIGFnZ3N0YXRlKTsKIAkJCQl9CiAKQEAgLTIzODcsNiArMjM4 OSw3IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCQkJCQkJCQkJCSAgIGFnZ25vZGUtPm51bUNvbHMsCiAJCQkJCQkJCQkJCSAgIGFn Z25vZGUtPmdycENvbElkeCwKIAkJCQkJCQkJCQkJICAgYWdnbm9kZS0+Z3JwT3BlcmF0b3Jz LAorCQkJCQkJCQkJCQkgICBhZ2dub2RlLT5ncnBDb2xsYXRpb25zLAogCQkJCQkJCQkJCQkg ICAoUGxhblN0YXRlICopIGFnZ3N0YXRlKTsKIAkJCQl9CiAJCQl9CkBAIC0zMTQxLDYgKzMx NDQsNyBAQCBidWlsZF9wZXJ0cmFuc19mb3JfYWdncmVmKEFnZ1N0YXRlUGVyVHJhbnMgcGVy dHJhbnMsCiAJCQkJCQkJCQkgICBudW1EaXN0aW5jdENvbHMsCiAJCQkJCQkJCQkgICBwZXJ0 cmFucy0+c29ydENvbElkeCwKIAkJCQkJCQkJCSAgIG9wcywKKwkJCQkJCQkJCSAgIHBlcnRy YW5zLT5zb3J0Q29sbGF0aW9ucywKIAkJCQkJCQkJCSAgICZhZ2dzdGF0ZS0+c3MucHMpOwog CQlwZnJlZShvcHMpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKaW5kZXggNThl MGIxMGNkMS4uOTViMTliZTFlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKQEAg LTIxMiw2ICsyMTIsNyBAQCBFeGVjSW5pdEdyb3VwKEdyb3VwICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkgICBub2RlLT5udW1Db2xzLAogCQkJCQkJCSAg IG5vZGUtPmdycENvbElkeCwKIAkJCQkJCQkgICBub2RlLT5ncnBPcGVyYXRvcnMsCisJCQkJ CQkJICAgbm9kZS0+Z3JwQ29sbGF0aW9ucywKIAkJCQkJCQkgICAmZ3Jwc3RhdGUtPnNzLnBz KTsKIAogCXJldHVybiBncnBzdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVIYXNoLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCmluZGV4 IGJhMmY2Njg2Y2YuLjNhODZkOWI5NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVIYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpA QCAtNDI1LDcgKzQyNSw3IEBAIEV4ZWNFbmRIYXNoKEhhc2hTdGF0ZSAqbm9kZSkKICAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqLwogSGFzaEpvaW5UYWJsZQotRXhlY0hhc2hUYWJsZUNyZWF0ZShIYXNo U3RhdGUgKnN0YXRlLCBMaXN0ICpoYXNoT3BlcmF0b3JzLCBib29sIGtlZXBOdWxscykKK0V4 ZWNIYXNoVGFibGVDcmVhdGUoSGFzaFN0YXRlICpzdGF0ZSwgTGlzdCAqaGFzaE9wZXJhdG9y cywgTGlzdCAqaGFzaENvbGxhdGlvbnMsIGJvb2wga2VlcE51bGxzKQogewogCUhhc2gJICAg Km5vZGU7CiAJSGFzaEpvaW5UYWJsZSBoYXNodGFibGU7CkBAIC00MzksNiArNDM5LDcgQEAg RXhlY0hhc2hUYWJsZUNyZWF0ZShIYXNoU3RhdGUgKnN0YXRlLCBMaXN0ICpoYXNoT3BlcmF0 b3JzLCBib29sIGtlZXBOdWxscykKIAlpbnQJCQlua2V5czsKIAlpbnQJCQlpOwogCUxpc3RD ZWxsICAgKmhvOworCUxpc3RDZWxsICAgKmhjOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0Owog CiAJLyoKQEAgLTU0MSw4ICs1NDIsOSBAQCBFeGVjSGFzaFRhYmxlQ3JlYXRlKEhhc2hTdGF0 ZSAqc3RhdGUsIExpc3QgKmhhc2hPcGVyYXRvcnMsIGJvb2wga2VlcE51bGxzKQogCWhhc2h0 YWJsZS0+aW5uZXJfaGFzaGZ1bmN0aW9ucyA9CiAJCShGbWdySW5mbyAqKSBwYWxsb2Mobmtl eXMgKiBzaXplb2YoRm1nckluZm8pKTsKIAloYXNodGFibGUtPmhhc2hTdHJpY3QgPSAoYm9v bCAqKSBwYWxsb2MobmtleXMgKiBzaXplb2YoYm9vbCkpOworCWhhc2h0YWJsZS0+Y29sbGF0 aW9ucyA9IChPaWQgKikgcGFsbG9jKG5rZXlzICogc2l6ZW9mKE9pZCkpOwogCWkgPSAwOwot CWZvcmVhY2goaG8sIGhhc2hPcGVyYXRvcnMpCisJZm9yYm90aChobywgaGFzaE9wZXJhdG9y cywgaGMsIGhhc2hDb2xsYXRpb25zKQogCXsKIAkJT2lkCQkJaGFzaG9wID0gbGZpcnN0X29p ZChobyk7CiAJCU9pZAkJCWxlZnRfaGFzaGZuOwpAQCAtNTU0LDYgKzU1Niw3IEBAIEV4ZWNI YXNoVGFibGVDcmVhdGUoSGFzaFN0YXRlICpzdGF0ZSwgTGlzdCAqaGFzaE9wZXJhdG9ycywg Ym9vbCBrZWVwTnVsbHMpCiAJCWZtZ3JfaW5mbyhsZWZ0X2hhc2hmbiwgJmhhc2h0YWJsZS0+ b3V0ZXJfaGFzaGZ1bmN0aW9uc1tpXSk7CiAJCWZtZ3JfaW5mbyhyaWdodF9oYXNoZm4sICZo YXNodGFibGUtPmlubmVyX2hhc2hmdW5jdGlvbnNbaV0pOwogCQloYXNodGFibGUtPmhhc2hT dHJpY3RbaV0gPSBvcF9zdHJpY3QoaGFzaG9wKTsKKwkJaGFzaHRhYmxlLT5jb2xsYXRpb25z W2ldID0gbGZpcnN0X29pZChoYyk7CiAJCWkrKzsKIAl9CiAKQEAgLTE4NDcsNyArMTg1MCw3 IEBAIEV4ZWNIYXNoR2V0SGFzaFZhbHVlKEhhc2hKb2luVGFibGUgaGFzaHRhYmxlLAogCQkJ LyogQ29tcHV0ZSB0aGUgaGFzaCBmdW5jdGlvbiAqLwogCQkJdWludDMyCQloa2V5OwogCi0J CQloa2V5ID0gRGF0dW1HZXRVSW50MzIoRnVuY3Rpb25DYWxsMSgmaGFzaGZ1bmN0aW9uc1tp XSwga2V5dmFsKSk7CisJCQloa2V5ID0gRGF0dW1HZXRVSW50MzIoRnVuY3Rpb25DYWxsMUNv bGwoJmhhc2hmdW5jdGlvbnNbaV0sIGhhc2h0YWJsZS0+Y29sbGF0aW9uc1tpXSwga2V5dmFs KSk7CiAJCQloYXNoa2V5IF49IGhrZXk7CiAJCX0KIApAQCAtMjMwMyw4ICsyMzA2LDkgQEAg RXhlY0hhc2hCdWlsZFNrZXdIYXNoKEhhc2hKb2luVGFibGUgaGFzaHRhYmxlLCBIYXNoICpu b2RlLCBpbnQgbWN2c1RvVXNlKQogCQkJdWludDMyCQloYXNodmFsdWU7CiAJCQlpbnQJCQli dWNrZXQ7CiAKLQkJCWhhc2h2YWx1ZSA9IERhdHVtR2V0VUludDMyKEZ1bmN0aW9uQ2FsbDEo Jmhhc2hmdW5jdGlvbnNbMF0sCi0JCQkJCQkJCQkJCQkJIHNzbG90LnZhbHVlc1tpXSkpOwor CQkJaGFzaHZhbHVlID0gRGF0dW1HZXRVSW50MzIoRnVuY3Rpb25DYWxsMUNvbGwoJmhhc2hm dW5jdGlvbnNbMF0sCisJCQkJCQkJCQkJCQkJCSBoYXNodGFibGUtPmNvbGxhdGlvbnNbMF0s CisJCQkJCQkJCQkJCQkJCSBzc2xvdC52YWx1ZXNbaV0pKTsKIAogCQkJLyoKIAkJCSAqIFdo aWxlIHdlIGhhdmUgbm90IGhpdCBhIGhvbGUgaW4gdGhlIGhhc2h0YWJsZSBhbmQgaGF2ZSBu b3QgaGl0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IGMyYzhiZWZm YzEuLmM0NGNmZGE1MWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCkBA IC0yNzgsNiArMjc4LDcgQEAgRXhlY0hhc2hKb2luSW1wbChQbGFuU3RhdGUgKnBzdGF0ZSwg Ym9vbCBwYXJhbGxlbCkKIAkJCQkgKi8KIAkJCQloYXNodGFibGUgPSBFeGVjSGFzaFRhYmxl Q3JlYXRlKGhhc2hOb2RlLAogCQkJCQkJCQkJCQkJbm9kZS0+aGpfSGFzaE9wZXJhdG9ycywK KwkJCQkJCQkJCQkJCW5vZGUtPmhqX0NvbGxhdGlvbnMsCiAJCQkJCQkJCQkJCQlISl9GSUxM X0lOTkVSKG5vZGUpKTsKIAkJCQlub2RlLT5oal9IYXNoVGFibGUgPSBoYXNodGFibGU7CiAK QEAgLTYwMyw2ICs2MDQsNyBAQCBFeGVjSW5pdEhhc2hKb2luKEhhc2hKb2luICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlMaXN0CSAgICpyY2xhdXNlczsKIAlMaXN0 CSAgICpyaGNsYXVzZXM7CiAJTGlzdAkgICAqaG9wZXJhdG9yczsKKwlMaXN0CSAgICpoY29s bGF0aW9uczsKIAlUdXBsZURlc2MJb3V0ZXJEZXNjLAogCQkJCWlubmVyRGVzYzsKIAlMaXN0 Q2VsbCAgICpsOwpAQCAtNzM4LDYgKzc0MCw3IEBAIEV4ZWNJbml0SGFzaEpvaW4oSGFzaEpv aW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXJjbGF1c2VzID0gTklM OwogCXJoY2xhdXNlcyA9IE5JTDsKIAlob3BlcmF0b3JzID0gTklMOworCWhjb2xsYXRpb25z ID0gTklMOwogCWZvcmVhY2gobCwgbm9kZS0+aGFzaGNsYXVzZXMpCiAJewogCQlPcEV4cHIJ ICAgKmhjbGF1c2UgPSBsZmlyc3Rfbm9kZShPcEV4cHIsIGwpOwpAQCAtNzQ5LDEwICs3NTIs MTIgQEAgRXhlY0luaXRIYXNoSm9pbihIYXNoSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJCXJoY2xhdXNlcyA9IGxhcHBlbmQocmhjbGF1c2VzLCBFeGVjSW5p dEV4cHIobHNlY29uZChoY2xhdXNlLT5hcmdzKSwKIAkJCQkJCQkJCQkJCSAgIGlubmVyUGxh blN0YXRlKGhqc3RhdGUpKSk7CiAJCWhvcGVyYXRvcnMgPSBsYXBwZW5kX29pZChob3BlcmF0 b3JzLCBoY2xhdXNlLT5vcG5vKTsKKwkJaGNvbGxhdGlvbnMgPSBsYXBwZW5kX29pZChoY29s bGF0aW9ucywgaGNsYXVzZS0+aW5wdXRjb2xsaWQpOwogCX0KIAloanN0YXRlLT5oal9PdXRl ckhhc2hLZXlzID0gbGNsYXVzZXM7CiAJaGpzdGF0ZS0+aGpfSW5uZXJIYXNoS2V5cyA9IHJj bGF1c2VzOwogCWhqc3RhdGUtPmhqX0hhc2hPcGVyYXRvcnMgPSBob3BlcmF0b3JzOworCWhq c3RhdGUtPmhqX0NvbGxhdGlvbnMgPSBoY29sbGF0aW9uczsKIAkvKiBjaGlsZCBIYXNoIG5v ZGUgbmVlZHMgdG8gZXZhbHVhdGUgaW5uZXIgaGFzaCBrZXlzLCB0b28gKi8KIAkoKEhhc2hT dGF0ZSAqKSBpbm5lclBsYW5TdGF0ZShoanN0YXRlKSktPmhhc2hrZXlzID0gcmhjbGF1c2Vz OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5p b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCmluZGV4 IDJkMjZjZWM4MzEuLjg3MzNjODVhZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVSZWN1cnNpdmV1bmlvbi5jCkBAIC00Myw2ICs0Myw3IEBAIGJ1aWxkX2hhc2hfdGFibGUo UmVjdXJzaXZlVW5pb25TdGF0ZSAqcnVzdGF0ZSkKIAkJCQkJCQkJCQkJIG5vZGUtPmR1cENv bElkeCwKIAkJCQkJCQkJCQkJIHJ1c3RhdGUtPmVxZnVuY29pZHMsCiAJCQkJCQkJCQkJCSBy dXN0YXRlLT5oYXNoZnVuY3Rpb25zLAorCQkJCQkJCQkJCQkgbm9kZS0+ZHVwQ29sbGF0aW9u cywKIAkJCQkJCQkJCQkJIG5vZGUtPm51bUdyb3VwcywKIAkJCQkJCQkJCQkJIDAsCiAJCQkJ CQkJCQkJCSBydXN0YXRlLT50YWJsZUNvbnRleHQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRP cC5jCmluZGV4IDQ4YjdhYTliOGIuLjdiMTAxYWI5NDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXRPcC5jCkBAIC0xMzIsNiArMTMyLDcgQEAgYnVpbGRfaGFzaF90YWJsZShTZXRPcFN0 YXRlICpzZXRvcHN0YXRlKQogCQkJCQkJCQkJCQkJbm9kZS0+ZHVwQ29sSWR4LAogCQkJCQkJ CQkJCQkJc2V0b3BzdGF0ZS0+ZXFmdW5jb2lkcywKIAkJCQkJCQkJCQkJCXNldG9wc3RhdGUt Pmhhc2hmdW5jdGlvbnMsCisJCQkJCQkJCQkJCQlub2RlLT5kdXBDb2xsYXRpb25zLAogCQkJ CQkJCQkJCQkJbm9kZS0+bnVtR3JvdXBzLAogCQkJCQkJCQkJCQkJMCwKIAkJCQkJCQkJCQkJ CXNldG9wc3RhdGUtPnRhYmxlQ29udGV4dCwKQEAgLTU1Myw2ICs1NTQsNyBAQCBFeGVjSW5p dFNldE9wKFNldE9wICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJ CQkJICAgbm9kZS0+bnVtQ29scywKIAkJCQkJCQkJICAgbm9kZS0+ZHVwQ29sSWR4LAogCQkJ CQkJCQkgICBub2RlLT5kdXBPcGVyYXRvcnMsCisJCQkJCQkJCSAgIG5vZGUtPmR1cENvbGxh dGlvbnMsCiAJCQkJCQkJCSAgICZzZXRvcHN0YXRlLT5wcyk7CiAKIAlpZiAobm9kZS0+c3Ry YXRlZ3kgPT0gU0VUT1BfSEFTSEVEKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVN1YnBsYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJwbGFuLmMK aW5kZXggODRhMWE5MTY4Mi4uN2Y5MGI1ZjgyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVN1YnBsYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U3VicGxhbi5jCkBAIC01MTEsNiArNTExLDcgQEAgYnVpbGRTdWJQbGFuSGFzaChTdWJQbGFu U3RhdGUgKm5vZGUsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAkJCQkJCQkJCQkgIG5vZGUt PmtleUNvbElkeCwKIAkJCQkJCQkJCQkgIG5vZGUtPnRhYl9lcV9mdW5jb2lkcywKIAkJCQkJ CQkJCQkgIG5vZGUtPnRhYl9oYXNoX2Z1bmNzLAorCQkJCQkJCQkJCSAgbm9kZS0+dGFiX2Nv bGxhdGlvbnMsCiAJCQkJCQkJCQkJICBuYnVja2V0cywKIAkJCQkJCQkJCQkgIDAsCiAJCQkJ CQkJCQkJICBub2RlLT5oYXNodGFibGVjeHQsCkBAIC01MzMsNiArNTM0LDcgQEAgYnVpbGRT dWJQbGFuSGFzaChTdWJQbGFuU3RhdGUgKm5vZGUsIEV4cHJDb250ZXh0ICplY29udGV4dCkK IAkJCQkJCQkJCQkJICBub2RlLT5rZXlDb2xJZHgsCiAJCQkJCQkJCQkJCSAgbm9kZS0+dGFi X2VxX2Z1bmNvaWRzLAogCQkJCQkJCQkJCQkgIG5vZGUtPnRhYl9oYXNoX2Z1bmNzLAorCQkJ CQkJCQkJCQkgIG5vZGUtPnRhYl9jb2xsYXRpb25zLAogCQkJCQkJCQkJCQkgIG5idWNrZXRz LAogCQkJCQkJCQkJCQkgIDAsCiAJCQkJCQkJCQkJCSAgbm9kZS0+aGFzaHRhYmxlY3h0LApA QCAtODA4LDYgKzgxMCw3IEBAIEV4ZWNJbml0U3ViUGxhbihTdWJQbGFuICpzdWJwbGFuLCBQ bGFuU3RhdGUgKnBhcmVudCkKIAlzc3RhdGUtPnRhYl9lcV9mdW5jb2lkcyA9IE5VTEw7CiAJ c3N0YXRlLT50YWJfaGFzaF9mdW5jcyA9IE5VTEw7CiAJc3N0YXRlLT50YWJfZXFfZnVuY3Mg PSBOVUxMOworCXNzdGF0ZS0+dGFiX2NvbGxhdGlvbnMgPSBOVUxMOwogCXNzdGF0ZS0+bGhz X2hhc2hfZnVuY3MgPSBOVUxMOwogCXNzdGF0ZS0+Y3VyX2VxX2Z1bmNzID0gTlVMTDsKIApA QCAtOTA2LDYgKzkwOSw3IEBAIEV4ZWNJbml0U3ViUGxhbihTdWJQbGFuICpzdWJwbGFuLCBQ bGFuU3RhdGUgKnBhcmVudCkKIAkJc3N0YXRlLT50YWJfZXFfZnVuY29pZHMgPSAoT2lkICop IHBhbGxvYyhuY29scyAqIHNpemVvZihPaWQpKTsKIAkJc3N0YXRlLT50YWJfaGFzaF9mdW5j cyA9IChGbWdySW5mbyAqKSBwYWxsb2MobmNvbHMgKiBzaXplb2YoRm1nckluZm8pKTsKIAkJ c3N0YXRlLT50YWJfZXFfZnVuY3MgPSAoRm1nckluZm8gKikgcGFsbG9jKG5jb2xzICogc2l6 ZW9mKEZtZ3JJbmZvKSk7CisJCXNzdGF0ZS0+dGFiX2NvbGxhdGlvbnMgPSAoT2lkICopIHBh bGxvYyhuY29scyAqIHNpemVvZihPaWQpKTsKIAkJc3N0YXRlLT5saHNfaGFzaF9mdW5jcyA9 IChGbWdySW5mbyAqKSBwYWxsb2MobmNvbHMgKiBzaXplb2YoRm1nckluZm8pKTsKIAkJc3N0 YXRlLT5jdXJfZXFfZnVuY3MgPSAoRm1nckluZm8gKikgcGFsbG9jKG5jb2xzICogc2l6ZW9m KEZtZ3JJbmZvKSk7CiAJCWkgPSAxOwpAQCAtOTU2LDYgKzk2MCw5IEBAIEV4ZWNJbml0U3Vi UGxhbihTdWJQbGFuICpzdWJwbGFuLCBQbGFuU3RhdGUgKnBhcmVudCkKIAkJCWZtZ3JfaW5m byhsZWZ0X2hhc2hmbiwgJnNzdGF0ZS0+bGhzX2hhc2hfZnVuY3NbaSAtIDFdKTsKIAkJCWZt Z3JfaW5mbyhyaWdodF9oYXNoZm4sICZzc3RhdGUtPnRhYl9oYXNoX2Z1bmNzW2kgLSAxXSk7 CiAKKwkJCS8qIFNldCBjb2xsYXRpb24gKi8KKwkJCXNzdGF0ZS0+dGFiX2NvbGxhdGlvbnNb aSAtIDFdID0gb3BleHByLT5pbnB1dGNvbGxpZDsKKwogCQkJaSsrOwogCQl9CiAKQEAgLTk5 Miw2ICs5OTksNyBAQCBFeGVjSW5pdFN1YlBsYW4oU3ViUGxhbiAqc3VicGxhbiwgUGxhblN0 YXRlICpwYXJlbnQpCiAJCQkJCQkJCQkJCQkJIG5jb2xzLAogCQkJCQkJCQkJCQkJCSBzc3Rh dGUtPmtleUNvbElkeCwKIAkJCQkJCQkJCQkJCQkgc3N0YXRlLT50YWJfZXFfZnVuY29pZHMs CisJCQkJCQkJCQkJCQkJIHNzdGF0ZS0+dGFiX2NvbGxhdGlvbnMsCiAJCQkJCQkJCQkJCQkJ IHBhcmVudCk7CiAKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKaW5kZXggYzVl NDIzMmU2OC4uNzljYWQxY2E3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwpA QCAtMTUyLDYgKzE1Miw3IEBAIEV4ZWNJbml0VW5pcXVlKFVuaXF1ZSAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJICAgbm9kZS0+bnVtQ29scywKIAkJCQkJ CQkgICBub2RlLT51bmlxQ29sSWR4LAogCQkJCQkJCSAgIG5vZGUtPnVuaXFPcGVyYXRvcnMs CisJCQkJCQkJICAgbm9kZS0+dW5pcUNvbGxhdGlvbnMsCiAJCQkJCQkJICAgJnVuaXF1ZXN0 YXRlLT5wcyk7CiAKIAlyZXR1cm4gdW5pcXVlc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlV2luZG93QWdnLmMKaW5kZXggMjk4ZTM3MDc0NS4uNjMxMmVjNDUxZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMjM3MCw2ICsyMzcwLDcgQEAgRXhl Y0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkJCQkJCQkJICAgbm9kZS0+cGFydE51bUNvbHMsCiAJCQkJCQkJCSAgIG5vZGUt PnBhcnRDb2xJZHgsCiAJCQkJCQkJCSAgIG5vZGUtPnBhcnRPcGVyYXRvcnMsCisJCQkJCQkJ CSAgIG5vZGUtPnBhcnRDb2xsYXRpb25zLAogCQkJCQkJCQkgICAmd2luc3RhdGUtPnNzLnBz KTsKIAogCWlmIChub2RlLT5vcmROdW1Db2xzID4gMCkKQEAgLTIzNzgsNiArMjM3OSw3IEBA IEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCQkJCQkJCSAgIG5vZGUtPm9yZE51bUNvbHMsCiAJCQkJCQkJCSAgIG5v ZGUtPm9yZENvbElkeCwKIAkJCQkJCQkJICAgbm9kZS0+b3JkT3BlcmF0b3JzLAorCQkJCQkJ CQkgICBub2RlLT5vcmRDb2xsYXRpb25zLAogCQkJCQkJCQkgICAmd2luc3RhdGUtPnNzLnBz KTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBi L3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IGRiNDk5Njg0MDkuLjIwMWEx OWVhMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0yOTcsNiArMjk3LDcgQEAgX2Nv cHlSZWN1cnNpdmVVbmlvbihjb25zdCBSZWN1cnNpdmVVbmlvbiAqZnJvbSkKIAl7CiAJCUNP UFlfUE9JTlRFUl9GSUVMRChkdXBDb2xJZHgsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoQXR0 ck51bWJlcikpOwogCQlDT1BZX1BPSU5URVJfRklFTEQoZHVwT3BlcmF0b3JzLCBmcm9tLT5u dW1Db2xzICogc2l6ZW9mKE9pZCkpOworCQlDT1BZX1BPSU5URVJfRklFTEQoZHVwQ29sbGF0 aW9ucywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKIAl9CiAJQ09QWV9TQ0FMQVJf RklFTEQobnVtR3JvdXBzKTsKIApAQCAtOTU2LDYgKzk1Nyw3IEBAIF9jb3B5R3JvdXAoY29u c3QgR3JvdXAgKmZyb20pCiAJQ09QWV9TQ0FMQVJfRklFTEQobnVtQ29scyk7CiAJQ09QWV9Q T0lOVEVSX0ZJRUxEKGdycENvbElkeCwgZnJvbS0+bnVtQ29scyAqIHNpemVvZihBdHRyTnVt YmVyKSk7CiAJQ09QWV9QT0lOVEVSX0ZJRUxEKGdycE9wZXJhdG9ycywgZnJvbS0+bnVtQ29s cyAqIHNpemVvZihPaWQpKTsKKwlDT1BZX1BPSU5URVJfRklFTEQoZ3JwQ29sbGF0aW9ucywg ZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKIAogCXJldHVybiBuZXdub2RlOwogfQpA QCAtOTc3LDYgKzk3OSw3IEBAIF9jb3B5QWdnKGNvbnN0IEFnZyAqZnJvbSkKIAl7CiAJCUNP UFlfUE9JTlRFUl9GSUVMRChncnBDb2xJZHgsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoQXR0 ck51bWJlcikpOwogCQlDT1BZX1BPSU5URVJfRklFTEQoZ3JwT3BlcmF0b3JzLCBmcm9tLT5u dW1Db2xzICogc2l6ZW9mKE9pZCkpOworCQlDT1BZX1BPSU5URVJfRklFTEQoZ3JwQ29sbGF0 aW9ucywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKIAl9CiAJQ09QWV9TQ0FMQVJf RklFTEQobnVtR3JvdXBzKTsKIAlDT1BZX0JJVE1BUFNFVF9GSUVMRChhZ2dQYXJhbXMpOwpA QCAtMTAwMiwxMiArMTAwNSwxNCBAQCBfY29weVdpbmRvd0FnZyhjb25zdCBXaW5kb3dBZ2cg KmZyb20pCiAJewogCQlDT1BZX1BPSU5URVJfRklFTEQocGFydENvbElkeCwgZnJvbS0+cGFy dE51bUNvbHMgKiBzaXplb2YoQXR0ck51bWJlcikpOwogCQlDT1BZX1BPSU5URVJfRklFTEQo cGFydE9wZXJhdG9ycywgZnJvbS0+cGFydE51bUNvbHMgKiBzaXplb2YoT2lkKSk7CisJCUNP UFlfUE9JTlRFUl9GSUVMRChwYXJ0Q29sbGF0aW9ucywgZnJvbS0+cGFydE51bUNvbHMgKiBz aXplb2YoT2lkKSk7CiAJfQogCUNPUFlfU0NBTEFSX0ZJRUxEKG9yZE51bUNvbHMpOwogCWlm IChmcm9tLT5vcmROdW1Db2xzID4gMCkKIAl7CiAJCUNPUFlfUE9JTlRFUl9GSUVMRChvcmRD b2xJZHgsIGZyb20tPm9yZE51bUNvbHMgKiBzaXplb2YoQXR0ck51bWJlcikpOwogCQlDT1BZ X1BPSU5URVJfRklFTEQob3JkT3BlcmF0b3JzLCBmcm9tLT5vcmROdW1Db2xzICogc2l6ZW9m KE9pZCkpOworCQlDT1BZX1BPSU5URVJfRklFTEQob3JkQ29sbGF0aW9ucywgZnJvbS0+b3Jk TnVtQ29scyAqIHNpemVvZihPaWQpKTsKIAl9CiAJQ09QWV9TQ0FMQVJfRklFTEQoZnJhbWVP cHRpb25zKTsKIAlDT1BZX05PREVfRklFTEQoc3RhcnRPZmZzZXQpOwpAQCAtMTA0MCw2ICsx MDQ1LDcgQEAgX2NvcHlVbmlxdWUoY29uc3QgVW5pcXVlICpmcm9tKQogCUNPUFlfU0NBTEFS X0ZJRUxEKG51bUNvbHMpOwogCUNPUFlfUE9JTlRFUl9GSUVMRCh1bmlxQ29sSWR4LCBmcm9t LT5udW1Db2xzICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKIAlDT1BZX1BPSU5URVJfRklFTEQo dW5pcU9wZXJhdG9ycywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKKwlDT1BZX1BP SU5URVJfRklFTEQodW5pcUNvbGxhdGlvbnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lk KSk7CiAKIAlyZXR1cm4gbmV3bm9kZTsKIH0KQEAgLTEwODksNiArMTA5NSw3IEBAIF9jb3B5 U2V0T3AoY29uc3QgU2V0T3AgKmZyb20pCiAJQ09QWV9TQ0FMQVJfRklFTEQobnVtQ29scyk7 CiAJQ09QWV9QT0lOVEVSX0ZJRUxEKGR1cENvbElkeCwgZnJvbS0+bnVtQ29scyAqIHNpemVv ZihBdHRyTnVtYmVyKSk7CiAJQ09QWV9QT0lOVEVSX0ZJRUxEKGR1cE9wZXJhdG9ycywgZnJv bS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKKwlDT1BZX1BPSU5URVJfRklFTEQoZHVwQ29s bGF0aW9ucywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKIAlDT1BZX1NDQUxBUl9G SUVMRChmbGFnQ29sSWR4KTsKIAlDT1BZX1NDQUxBUl9GSUVMRChmaXJzdEZsYWcpOwogCUNP UFlfU0NBTEFSX0ZJRUxEKG51bUdyb3Vwcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCBi ZTZiNGNhMmY0Li41ZTgzMmVmOTgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTQ2Myw2 ICs0NjMsNyBAQCBfb3V0UmVjdXJzaXZlVW5pb24oU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFJl Y3Vyc2l2ZVVuaW9uICpub2RlKQogCVdSSVRFX0lOVF9GSUVMRChudW1Db2xzKTsKIAlXUklU RV9BVFRSTlVNQkVSX0FSUkFZKGR1cENvbElkeCwgbm9kZS0+bnVtQ29scyk7CiAJV1JJVEVf T0lEX0FSUkFZKGR1cE9wZXJhdG9ycywgbm9kZS0+bnVtQ29scyk7CisJV1JJVEVfT0lEX0FS UkFZKGR1cENvbGxhdGlvbnMsIG5vZGUtPm51bUNvbHMpOwogCVdSSVRFX0xPTkdfRklFTEQo bnVtR3JvdXBzKTsKIH0KIApAQCAtNzc0LDYgKzc3NSw3IEBAIF9vdXRBZ2coU3RyaW5nSW5m byBzdHIsIGNvbnN0IEFnZyAqbm9kZSkKIAlXUklURV9JTlRfRklFTEQobnVtQ29scyk7CiAJ V1JJVEVfQVRUUk5VTUJFUl9BUlJBWShncnBDb2xJZHgsIG5vZGUtPm51bUNvbHMpOwogCVdS SVRFX09JRF9BUlJBWShncnBPcGVyYXRvcnMsIG5vZGUtPm51bUNvbHMpOworCVdSSVRFX09J RF9BUlJBWShncnBDb2xsYXRpb25zLCBub2RlLT5udW1Db2xzKTsKIAlXUklURV9MT05HX0ZJ RUxEKG51bUdyb3Vwcyk7CiAJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKGFnZ1BhcmFtcyk7CiAJ V1JJVEVfTk9ERV9GSUVMRChncm91cGluZ1NldHMpOwpAQCAtNzkxLDkgKzc5MywxMSBAQCBf b3V0V2luZG93QWdnKFN0cmluZ0luZm8gc3RyLCBjb25zdCBXaW5kb3dBZ2cgKm5vZGUpCiAJ V1JJVEVfSU5UX0ZJRUxEKHBhcnROdW1Db2xzKTsKIAlXUklURV9BVFRSTlVNQkVSX0FSUkFZ KHBhcnRDb2xJZHgsIG5vZGUtPnBhcnROdW1Db2xzKTsKIAlXUklURV9PSURfQVJSQVkocGFy dE9wZXJhdG9ycywgbm9kZS0+cGFydE51bUNvbHMpOworCVdSSVRFX09JRF9BUlJBWShwYXJ0 Q29sbGF0aW9ucywgbm9kZS0+cGFydE51bUNvbHMpOwogCVdSSVRFX0lOVF9GSUVMRChvcmRO dW1Db2xzKTsKIAlXUklURV9BVFRSTlVNQkVSX0FSUkFZKG9yZENvbElkeCwgbm9kZS0+b3Jk TnVtQ29scyk7CiAJV1JJVEVfT0lEX0FSUkFZKG9yZE9wZXJhdG9ycywgbm9kZS0+b3JkTnVt Q29scyk7CisJV1JJVEVfT0lEX0FSUkFZKG9yZENvbGxhdGlvbnMsIG5vZGUtPm9yZE51bUNv bHMpOwogCVdSSVRFX0lOVF9GSUVMRChmcmFtZU9wdGlvbnMpOwogCVdSSVRFX05PREVfRklF TEQoc3RhcnRPZmZzZXQpOwogCVdSSVRFX05PREVfRklFTEQoZW5kT2Zmc2V0KTsKQEAgLTgx NCw2ICs4MTgsNyBAQCBfb3V0R3JvdXAoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEdyb3VwICpu b2RlKQogCVdSSVRFX0lOVF9GSUVMRChudW1Db2xzKTsKIAlXUklURV9BVFRSTlVNQkVSX0FS UkFZKGdycENvbElkeCwgbm9kZS0+bnVtQ29scyk7CiAJV1JJVEVfT0lEX0FSUkFZKGdycE9w ZXJhdG9ycywgbm9kZS0+bnVtQ29scyk7CisJV1JJVEVfT0lEX0FSUkFZKGdycENvbGxhdGlv bnMsIG5vZGUtPm51bUNvbHMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtODQ4LDYgKzg1Myw3 IEBAIF9vdXRVbmlxdWUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFVuaXF1ZSAqbm9kZSkKIAlX UklURV9JTlRfRklFTEQobnVtQ29scyk7CiAJV1JJVEVfQVRUUk5VTUJFUl9BUlJBWSh1bmlx Q29sSWR4LCBub2RlLT5udW1Db2xzKTsKIAlXUklURV9PSURfQVJSQVkodW5pcU9wZXJhdG9y cywgbm9kZS0+bnVtQ29scyk7CisJV1JJVEVfT0lEX0FSUkFZKHVuaXFDb2xsYXRpb25zLCBu b2RlLT5udW1Db2xzKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTg3NSw2ICs4ODEsNyBAQCBf b3V0U2V0T3AoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFNldE9wICpub2RlKQogCVdSSVRFX0lO VF9GSUVMRChudW1Db2xzKTsKIAlXUklURV9BVFRSTlVNQkVSX0FSUkFZKGR1cENvbElkeCwg bm9kZS0+bnVtQ29scyk7CiAJV1JJVEVfT0lEX0FSUkFZKGR1cE9wZXJhdG9ycywgbm9kZS0+ bnVtQ29scyk7CisJV1JJVEVfT0lEX0FSUkFZKGR1cENvbGxhdGlvbnMsIG5vZGUtPm51bUNv bHMpOwogCVdSSVRFX0lOVF9GSUVMRChmbGFnQ29sSWR4KTsKIAlXUklURV9JTlRfRklFTEQo Zmlyc3RGbGFnKTsKIAlXUklURV9MT05HX0ZJRUxEKG51bUdyb3Vwcyk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jCmluZGV4IGZhMjdmMzdkNmYuLjY1NTBiM2RiZWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jCkBAIC0xNjcyLDYgKzE2NzIsNyBAQCBfcmVhZFJlY3Vyc2l2ZVVuaW9uKHZv aWQpCiAJUkVBRF9JTlRfRklFTEQobnVtQ29scyk7CiAJUkVBRF9BVFRSTlVNQkVSX0FSUkFZ KGR1cENvbElkeCwgbG9jYWxfbm9kZS0+bnVtQ29scyk7CiAJUkVBRF9PSURfQVJSQVkoZHVw T3BlcmF0b3JzLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKKwlSRUFEX09JRF9BUlJBWShkdXBD b2xsYXRpb25zLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAlSRUFEX0xPTkdfRklFTEQobnVt R3JvdXBzKTsKIAogCVJFQURfRE9ORSgpOwpAQCAtMjEzOCw2ICsyMTM5LDcgQEAgX3JlYWRH cm91cCh2b2lkKQogCVJFQURfSU5UX0ZJRUxEKG51bUNvbHMpOwogCVJFQURfQVRUUk5VTUJF Ul9BUlJBWShncnBDb2xJZHgsIGxvY2FsX25vZGUtPm51bUNvbHMpOwogCVJFQURfT0lEX0FS UkFZKGdycE9wZXJhdG9ycywgbG9jYWxfbm9kZS0+bnVtQ29scyk7CisJUkVBRF9PSURfQVJS QVkoZ3JwQ29sbGF0aW9ucywgbG9jYWxfbm9kZS0+bnVtQ29scyk7CiAKIAlSRUFEX0RPTkUo KTsKIH0KQEAgLTIxNTcsNiArMjE1OSw3IEBAIF9yZWFkQWdnKHZvaWQpCiAJUkVBRF9JTlRf RklFTEQobnVtQ29scyk7CiAJUkVBRF9BVFRSTlVNQkVSX0FSUkFZKGdycENvbElkeCwgbG9j YWxfbm9kZS0+bnVtQ29scyk7CiAJUkVBRF9PSURfQVJSQVkoZ3JwT3BlcmF0b3JzLCBsb2Nh bF9ub2RlLT5udW1Db2xzKTsKKwlSRUFEX09JRF9BUlJBWShncnBDb2xsYXRpb25zLCBsb2Nh bF9ub2RlLT5udW1Db2xzKTsKIAlSRUFEX0xPTkdfRklFTEQobnVtR3JvdXBzKTsKIAlSRUFE X0JJVE1BUFNFVF9GSUVMRChhZ2dQYXJhbXMpOwogCVJFQURfTk9ERV9GSUVMRChncm91cGlu Z1NldHMpOwpAQCAtMjE3OSw5ICsyMTgyLDExIEBAIF9yZWFkV2luZG93QWdnKHZvaWQpCiAJ UkVBRF9JTlRfRklFTEQocGFydE51bUNvbHMpOwogCVJFQURfQVRUUk5VTUJFUl9BUlJBWShw YXJ0Q29sSWR4LCBsb2NhbF9ub2RlLT5wYXJ0TnVtQ29scyk7CiAJUkVBRF9PSURfQVJSQVko cGFydE9wZXJhdG9ycywgbG9jYWxfbm9kZS0+cGFydE51bUNvbHMpOworCVJFQURfT0lEX0FS UkFZKHBhcnRDb2xsYXRpb25zLCBsb2NhbF9ub2RlLT5wYXJ0TnVtQ29scyk7CiAJUkVBRF9J TlRfRklFTEQob3JkTnVtQ29scyk7CiAJUkVBRF9BVFRSTlVNQkVSX0FSUkFZKG9yZENvbElk eCwgbG9jYWxfbm9kZS0+b3JkTnVtQ29scyk7CiAJUkVBRF9PSURfQVJSQVkob3JkT3BlcmF0 b3JzLCBsb2NhbF9ub2RlLT5vcmROdW1Db2xzKTsKKwlSRUFEX09JRF9BUlJBWShvcmRDb2xs YXRpb25zLCBsb2NhbF9ub2RlLT5vcmROdW1Db2xzKTsKIAlSRUFEX0lOVF9GSUVMRChmcmFt ZU9wdGlvbnMpOwogCVJFQURfTk9ERV9GSUVMRChzdGFydE9mZnNldCk7CiAJUkVBRF9OT0RF X0ZJRUxEKGVuZE9mZnNldCk7CkBAIC0yMjA3LDYgKzIyMTIsNyBAQCBfcmVhZFVuaXF1ZSh2 b2lkKQogCVJFQURfSU5UX0ZJRUxEKG51bUNvbHMpOwogCVJFQURfQVRUUk5VTUJFUl9BUlJB WSh1bmlxQ29sSWR4LCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAlSRUFEX09JRF9BUlJBWSh1 bmlxT3BlcmF0b3JzLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKKwlSRUFEX09JRF9BUlJBWSh1 bmlxQ29sbGF0aW9ucywgbG9jYWxfbm9kZS0+bnVtQ29scyk7CiAKIAlSRUFEX0RPTkUoKTsK IH0KQEAgLTIyODUsNiArMjI5MSw3IEBAIF9yZWFkU2V0T3Aodm9pZCkKIAlSRUFEX0lOVF9G SUVMRChudW1Db2xzKTsKIAlSRUFEX0FUVFJOVU1CRVJfQVJSQVkoZHVwQ29sSWR4LCBsb2Nh bF9ub2RlLT5udW1Db2xzKTsKIAlSRUFEX09JRF9BUlJBWShkdXBPcGVyYXRvcnMsIGxvY2Fs X25vZGUtPm51bUNvbHMpOworCVJFQURfT0lEX0FSUkFZKGR1cENvbGxhdGlvbnMsIGxvY2Fs X25vZGUtPm51bUNvbHMpOwogCVJFQURfSU5UX0ZJRUxEKGZsYWdDb2xJZHgpOwogCVJFQURf SU5UX0ZJRUxEKGZpcnN0RmxhZyk7CiAJUkVBRF9MT05HX0ZJRUxEKG51bUdyb3Vwcyk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggOTFjZjc4MjMz ZC4uNjE1MjM2ZDEyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBs YW4uYwpAQCAtMjU2LDE0ICsyNTYsMTQgQEAgc3RhdGljIFNvcnQgKm1ha2Vfc29ydF9mcm9t X2dyb3VwY29scyhMaXN0ICpncm91cGNscywKIAkJCQkJCSBQbGFuICpsZWZ0dHJlZSk7CiBz dGF0aWMgTWF0ZXJpYWwgKm1ha2VfbWF0ZXJpYWwoUGxhbiAqbGVmdHRyZWUpOwogc3RhdGlj IFdpbmRvd0FnZyAqbWFrZV93aW5kb3dhZ2coTGlzdCAqdGxpc3QsIEluZGV4IHdpbnJlZiwK LQkJCSAgIGludCBwYXJ0TnVtQ29scywgQXR0ck51bWJlciAqcGFydENvbElkeCwgT2lkICpw YXJ0T3BlcmF0b3JzLAotCQkJICAgaW50IG9yZE51bUNvbHMsIEF0dHJOdW1iZXIgKm9yZENv bElkeCwgT2lkICpvcmRPcGVyYXRvcnMsCisJCQkgICBpbnQgcGFydE51bUNvbHMsIEF0dHJO dW1iZXIgKnBhcnRDb2xJZHgsIE9pZCAqcGFydE9wZXJhdG9ycywgT2lkICpwYXJ0Q29sbGF0 aW9ucywKKwkJCSAgIGludCBvcmROdW1Db2xzLCBBdHRyTnVtYmVyICpvcmRDb2xJZHgsIE9p ZCAqb3JkT3BlcmF0b3JzLCBPaWQgKm9yZENvbGxhdGlvbnMsCiAJCQkgICBpbnQgZnJhbWVP cHRpb25zLCBOb2RlICpzdGFydE9mZnNldCwgTm9kZSAqZW5kT2Zmc2V0LAogCQkJICAgT2lk IHN0YXJ0SW5SYW5nZUZ1bmMsIE9pZCBlbmRJblJhbmdlRnVuYywKIAkJCSAgIE9pZCBpblJh bmdlQ29sbCwgYm9vbCBpblJhbmdlQXNjLCBib29sIGluUmFuZ2VOdWxsc0ZpcnN0LAogCQkJ ICAgUGxhbiAqbGVmdHRyZWUpOwogc3RhdGljIEdyb3VwICptYWtlX2dyb3VwKExpc3QgKnRs aXN0LCBMaXN0ICpxdWFsLCBpbnQgbnVtR3JvdXBDb2xzLAotCQkgICBBdHRyTnVtYmVyICpn cnBDb2xJZHgsIE9pZCAqZ3JwT3BlcmF0b3JzLAorCQkgICBBdHRyTnVtYmVyICpncnBDb2xJ ZHgsIE9pZCAqZ3JwT3BlcmF0b3JzLCBPaWQgKmdycENvbGxhdGlvbnMsCiAJCSAgIFBsYW4g KmxlZnR0cmVlKTsKIHN0YXRpYyBVbmlxdWUgKm1ha2VfdW5pcXVlX2Zyb21fc29ydGNsYXVz ZXMoUGxhbiAqbGVmdHRyZWUsIExpc3QgKmRpc3RpbmN0TGlzdCk7CiBzdGF0aWMgVW5pcXVl ICptYWtlX3VuaXF1ZV9mcm9tX3BhdGhrZXlzKFBsYW4gKmxlZnR0cmVlLApAQCAtMTM1NSw2 ICsxMzU1LDcgQEAgY3JlYXRlX3VuaXF1ZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBVbmlx dWVQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAlib29sCQluZXdpdGVtczsKIAlpbnQJ CQludW1Hcm91cENvbHM7CiAJQXR0ck51bWJlciAqZ3JvdXBDb2xJZHg7CisJT2lkCQkgICAq Z3JvdXBDb2xsYXRpb25zOwogCWludAkJCWdyb3VwQ29sUG9zOwogCUxpc3RDZWxsICAgKmw7 CiAKQEAgLTE0MjEsNiArMTQyMiw3IEBAIGNyZWF0ZV91bmlxdWVfcGxhbihQbGFubmVySW5m byAqcm9vdCwgVW5pcXVlUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJbmV3dGxpc3Qg PSBzdWJwbGFuLT50YXJnZXRsaXN0OwogCW51bUdyb3VwQ29scyA9IGxpc3RfbGVuZ3RoKHVu aXFfZXhwcnMpOwogCWdyb3VwQ29sSWR4ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jKG51bUdy b3VwQ29scyAqIHNpemVvZihBdHRyTnVtYmVyKSk7CisJZ3JvdXBDb2xsYXRpb25zID0gKE9p ZCAqKSBwYWxsb2MobnVtR3JvdXBDb2xzICogc2l6ZW9mKE9pZCkpOwogCiAJZ3JvdXBDb2xQ b3MgPSAwOwogCWZvcmVhY2gobCwgdW5pcV9leHBycykKQEAgLTE0MzEsNyArMTQzMyw5IEBA IGNyZWF0ZV91bmlxdWVfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgVW5pcXVlUGF0aCAqYmVz dF9wYXRoLCBpbnQgZmxhZ3MpCiAJCXRsZSA9IHRsaXN0X21lbWJlcih1bmlxZXhwciwgbmV3 dGxpc3QpOwogCQlpZiAoIXRsZSkJCQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwogCQkJZWxv ZyhFUlJPUiwgImZhaWxlZCB0byBmaW5kIHVuaXF1ZSBleHByZXNzaW9uIGluIHN1YnBsYW4g dGxpc3QiKTsKLQkJZ3JvdXBDb2xJZHhbZ3JvdXBDb2xQb3MrK10gPSB0bGUtPnJlc25vOwor CQlncm91cENvbElkeFtncm91cENvbFBvc10gPSB0bGUtPnJlc25vOworCQlncm91cENvbGxh dGlvbnNbZ3JvdXBDb2xQb3NdID0gZXhwckNvbGxhdGlvbigoTm9kZSAqKSB0bGUtPmV4cHIp OworCQlncm91cENvbFBvcysrOwogCX0KIAogCWlmIChiZXN0X3BhdGgtPnVtZXRob2QgPT0g VU5JUVVFX1BBVEhfSEFTSCkKQEAgLTE0NjksNiArMTQ3Myw3IEBAIGNyZWF0ZV91bmlxdWVf cGxhbihQbGFubmVySW5mbyAqcm9vdCwgVW5pcXVlUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxh Z3MpCiAJCQkJCQkJCSBudW1Hcm91cENvbHMsCiAJCQkJCQkJCSBncm91cENvbElkeCwKIAkJ CQkJCQkJIGdyb3VwT3BlcmF0b3JzLAorCQkJCQkJCQkgZ3JvdXBDb2xsYXRpb25zLAogCQkJ CQkJCQkgTklMLAogCQkJCQkJCQkgTklMLAogCQkJCQkJCQkgYmVzdF9wYXRoLT5wYXRoLnJv d3MsCkBAIC0xODUxLDYgKzE4NTYsOCBAQCBjcmVhdGVfZ3JvdXBfcGxhbihQbGFubmVySW5m byAqcm9vdCwgR3JvdXBQYXRoICpiZXN0X3BhdGgpCiAJCQkJCSAgZXh0cmFjdF9ncm91cGlu Z19jb2xzKGJlc3RfcGF0aC0+Z3JvdXBDbGF1c2UsCiAJCQkJCQkJCQkJCXN1YnBsYW4tPnRh cmdldGxpc3QpLAogCQkJCQkgIGV4dHJhY3RfZ3JvdXBpbmdfb3BzKGJlc3RfcGF0aC0+Z3Jv dXBDbGF1c2UpLAorCQkJCQkgIGV4dHJhY3RfZ3JvdXBpbmdfY29sbGF0aW9ucyhiZXN0X3Bh dGgtPmdyb3VwQ2xhdXNlLAorCQkJCQkJCQkJCQkJICBzdWJwbGFuLT50YXJnZXRsaXN0KSwK IAkJCQkJICBzdWJwbGFuKTsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBs YW4sIChQYXRoICopIGJlc3RfcGF0aCk7CkBAIC0xOTE3LDYgKzE5MjQsOCBAQCBjcmVhdGVf YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFnZ1BhdGggKmJlc3RfcGF0aCkKIAkJCQkJ ZXh0cmFjdF9ncm91cGluZ19jb2xzKGJlc3RfcGF0aC0+Z3JvdXBDbGF1c2UsCiAJCQkJCQkJ CQkJICBzdWJwbGFuLT50YXJnZXRsaXN0KSwKIAkJCQkJZXh0cmFjdF9ncm91cGluZ19vcHMo YmVzdF9wYXRoLT5ncm91cENsYXVzZSksCisJCQkJCWV4dHJhY3RfZ3JvdXBpbmdfY29sbGF0 aW9ucyhiZXN0X3BhdGgtPmdyb3VwQ2xhdXNlLAorCQkJCQkJCQkJCQkJc3VicGxhbi0+dGFy Z2V0bGlzdCksCiAJCQkJCU5JTCwKIAkJCQkJTklMLAogCQkJCQliZXN0X3BhdGgtPm51bUdy b3VwcywKQEAgLTIwNzgsNiArMjA4Nyw3IEBAIGNyZWF0ZV9ncm91cGluZ3NldHNfcGxhbihQ bGFubmVySW5mbyAqcm9vdCwgR3JvdXBpbmdTZXRzUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJ CQkJCSBsaXN0X2xlbmd0aCgoTGlzdCAqKSBsaW5pdGlhbChyb2xsdXAtPmdzZXRzKSksCiAJ CQkJCQkJCQkJIG5ld19ncnBDb2xJZHgsCiAJCQkJCQkJCQkJIGV4dHJhY3RfZ3JvdXBpbmdf b3BzKHJvbGx1cC0+Z3JvdXBDbGF1c2UpLAorCQkJCQkJCQkJCSBleHRyYWN0X2dyb3VwaW5n X2NvbGxhdGlvbnMocm9sbHVwLT5ncm91cENsYXVzZSwgc3VicGxhbi0+dGFyZ2V0bGlzdCks CiAJCQkJCQkJCQkJIHJvbGx1cC0+Z3NldHMsCiAJCQkJCQkJCQkJIE5JTCwKIAkJCQkJCQkJ CQkgcm9sbHVwLT5udW1Hcm91cHMsCkBAIC0yMTE1LDYgKzIxMjUsNyBAQCBjcmVhdGVfZ3Jv dXBpbmdzZXRzX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEdyb3VwaW5nU2V0c1BhdGggKmJl c3RfcGF0aCkKIAkJCQkJCW51bUdyb3VwQ29scywKIAkJCQkJCXRvcF9ncnBDb2xJZHgsCiAJ CQkJCQlleHRyYWN0X2dyb3VwaW5nX29wcyhyb2xsdXAtPmdyb3VwQ2xhdXNlKSwKKwkJCQkJ CWV4dHJhY3RfZ3JvdXBpbmdfY29sbGF0aW9ucyhyb2xsdXAtPmdyb3VwQ2xhdXNlLCBzdWJw bGFuLT50YXJnZXRsaXN0KSwKIAkJCQkJCXJvbGx1cC0+Z3NldHMsCiAJCQkJCQljaGFpbiwK IAkJCQkJCXJvbGx1cC0+bnVtR3JvdXBzLApAQCAtMjIxNCw5ICsyMjI1LDExIEBAIGNyZWF0 ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVz dF9wYXRoKQogCWludAkJCXBhcnROdW1Db2xzOwogCUF0dHJOdW1iZXIgKnBhcnRDb2xJZHg7 CiAJT2lkCQkgICAqcGFydE9wZXJhdG9yczsKKwlPaWQJCSAgICpwYXJ0Q29sbGF0aW9uczsK IAlpbnQJCQlvcmROdW1Db2xzOwogCUF0dHJOdW1iZXIgKm9yZENvbElkeDsKIAlPaWQJCSAg ICpvcmRPcGVyYXRvcnM7CisJT2lkCQkgICAqb3JkQ29sbGF0aW9uczsKIAlMaXN0Q2VsbCAg ICpsYzsKIAogCS8qCkBAIC0yMjM4LDYgKzIyNTEsNyBAQCBjcmVhdGVfd2luZG93YWdnX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkgKi8K IAlwYXJ0Q29sSWR4ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jKHNpemVvZihBdHRyTnVtYmVy KSAqIG51bVBhcnQpOwogCXBhcnRPcGVyYXRvcnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2Yo T2lkKSAqIG51bVBhcnQpOworCXBhcnRDb2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2Moc2l6 ZW9mKE9pZCkgKiBudW1QYXJ0KTsKIAogCXBhcnROdW1Db2xzID0gMDsKIAlmb3JlYWNoKGxj LCB3Yy0+cGFydGl0aW9uQ2xhdXNlKQpAQCAtMjI0OCwxMSArMjI2MiwxMyBAQCBjcmVhdGVf d2luZG93YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3Rf cGF0aCkKIAkJQXNzZXJ0KE9pZElzVmFsaWQoc2djLT5lcW9wKSk7CiAJCXBhcnRDb2xJZHhb cGFydE51bUNvbHNdID0gdGxlLT5yZXNubzsKIAkJcGFydE9wZXJhdG9yc1twYXJ0TnVtQ29s c10gPSBzZ2MtPmVxb3A7CisJCXBhcnRDb2xsYXRpb25zW3BhcnROdW1Db2xzXSA9IGV4cHJD b2xsYXRpb24oKE5vZGUgKikgdGxlLT5leHByKTsKIAkJcGFydE51bUNvbHMrKzsKIAl9CiAK IAlvcmRDb2xJZHggPSAoQXR0ck51bWJlciAqKSBwYWxsb2Moc2l6ZW9mKEF0dHJOdW1iZXIp ICogbnVtT3JkZXIpOwogCW9yZE9wZXJhdG9ycyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihP aWQpICogbnVtT3JkZXIpOworCW9yZENvbGxhdGlvbnMgPSAoT2lkICopIHBhbGxvYyhzaXpl b2YoT2lkKSAqIG51bU9yZGVyKTsKIAogCW9yZE51bUNvbHMgPSAwOwogCWZvcmVhY2gobGMs IHdjLT5vcmRlckNsYXVzZSkKQEAgLTIyNjMsNiArMjI3OSw3IEBAIGNyZWF0ZV93aW5kb3dh Z2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRoKQog CQlBc3NlcnQoT2lkSXNWYWxpZChzZ2MtPmVxb3ApKTsKIAkJb3JkQ29sSWR4W29yZE51bUNv bHNdID0gdGxlLT5yZXNubzsKIAkJb3JkT3BlcmF0b3JzW29yZE51bUNvbHNdID0gc2djLT5l cW9wOworCQlvcmRDb2xsYXRpb25zW29yZE51bUNvbHNdID0gZXhwckNvbGxhdGlvbigoTm9k ZSAqKSB0bGUtPmV4cHIpOwogCQlvcmROdW1Db2xzKys7CiAJfQogCkBAIC0yMjcyLDkgKzIy ODksMTEgQEAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBXaW5k b3dBZ2dQYXRoICpiZXN0X3BhdGgpCiAJCQkJCQkgIHBhcnROdW1Db2xzLAogCQkJCQkJICBw YXJ0Q29sSWR4LAogCQkJCQkJICBwYXJ0T3BlcmF0b3JzLAorCQkJCQkJICBwYXJ0Q29sbGF0 aW9ucywKIAkJCQkJCSAgb3JkTnVtQ29scywKIAkJCQkJCSAgb3JkQ29sSWR4LAogCQkJCQkJ ICBvcmRPcGVyYXRvcnMsCisJCQkJCQkgIG9yZENvbGxhdGlvbnMsCiAJCQkJCQkgIHdjLT5m cmFtZU9wdGlvbnMsCiAJCQkJCQkgIHdjLT5zdGFydE9mZnNldCwKIAkJCQkJCSAgd2MtPmVu ZE9mZnNldCwKQEAgLTU0MDksMTAgKzU0MjgsMTIgQEAgbWFrZV9yZWN1cnNpdmVfdW5pb24o TGlzdCAqdGxpc3QsCiAJCWludAkJCWtleW5vID0gMDsKIAkJQXR0ck51bWJlciAqZHVwQ29s SWR4OwogCQlPaWQJCSAgICpkdXBPcGVyYXRvcnM7CisJCU9pZAkJICAgKmR1cENvbGxhdGlv bnM7CiAJCUxpc3RDZWxsICAgKnNsaXRlbTsKIAogCQlkdXBDb2xJZHggPSAoQXR0ck51bWJl ciAqKSBwYWxsb2Moc2l6ZW9mKEF0dHJOdW1iZXIpICogbnVtQ29scyk7CiAJCWR1cE9wZXJh dG9ycyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogbnVtQ29scyk7CisJCWR1cENv bGxhdGlvbnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOwogCiAJ CWZvcmVhY2goc2xpdGVtLCBkaXN0aW5jdExpc3QpCiAJCXsKQEAgLTU0MjIsMTEgKzU0NDMs MTMgQEAgbWFrZV9yZWN1cnNpdmVfdW5pb24oTGlzdCAqdGxpc3QsCiAKIAkJCWR1cENvbElk eFtrZXlub10gPSB0bGUtPnJlc25vOwogCQkJZHVwT3BlcmF0b3JzW2tleW5vXSA9IHNvcnRj bC0+ZXFvcDsKKwkJCWR1cENvbGxhdGlvbnNba2V5bm9dID0gZXhwckNvbGxhdGlvbigoTm9k ZSAqKSB0bGUtPmV4cHIpOwogCQkJQXNzZXJ0KE9pZElzVmFsaWQoZHVwT3BlcmF0b3JzW2tl eW5vXSkpOwogCQkJa2V5bm8rKzsKIAkJfQogCQlub2RlLT5kdXBDb2xJZHggPSBkdXBDb2xJ ZHg7CiAJCW5vZGUtPmR1cE9wZXJhdG9ycyA9IGR1cE9wZXJhdG9yczsKKwkJbm9kZS0+ZHVw Q29sbGF0aW9ucyA9IGR1cENvbGxhdGlvbnM7CiAJfQogCW5vZGUtPm51bUdyb3VwcyA9IG51 bUdyb3VwczsKIApAQCAtNjA5OCw3ICs2MTIxLDcgQEAgbWF0ZXJpYWxpemVfZmluaXNoZWRf cGxhbihQbGFuICpzdWJwbGFuKQogQWdnICoKIG1ha2VfYWdnKExpc3QgKnRsaXN0LCBMaXN0 ICpxdWFsLAogCQkgQWdnU3RyYXRlZ3kgYWdnc3RyYXRlZ3ksIEFnZ1NwbGl0IGFnZ3NwbGl0 LAotCQkgaW50IG51bUdyb3VwQ29scywgQXR0ck51bWJlciAqZ3JwQ29sSWR4LCBPaWQgKmdy cE9wZXJhdG9ycywKKwkJIGludCBudW1Hcm91cENvbHMsIEF0dHJOdW1iZXIgKmdycENvbElk eCwgT2lkICpncnBPcGVyYXRvcnMsIE9pZCAqZ3JwQ29sbGF0aW9ucywKIAkJIExpc3QgKmdy b3VwaW5nU2V0cywgTGlzdCAqY2hhaW4sCiAJCSBkb3VibGUgZE51bUdyb3VwcywgUGxhbiAq bGVmdHRyZWUpCiB7CkBAIC02MTE0LDYgKzYxMzcsNyBAQCBtYWtlX2FnZyhMaXN0ICp0bGlz dCwgTGlzdCAqcXVhbCwKIAlub2RlLT5udW1Db2xzID0gbnVtR3JvdXBDb2xzOwogCW5vZGUt PmdycENvbElkeCA9IGdycENvbElkeDsKIAlub2RlLT5ncnBPcGVyYXRvcnMgPSBncnBPcGVy YXRvcnM7CisJbm9kZS0+Z3JwQ29sbGF0aW9ucyA9IGdycENvbGxhdGlvbnM7CiAJbm9kZS0+ bnVtR3JvdXBzID0gbnVtR3JvdXBzOwogCW5vZGUtPmFnZ1BhcmFtcyA9IE5VTEw7CQkvKiBT U19maW5hbGl6ZV9wbGFuKCkgd2lsbCBmaWxsIHRoaXMgKi8KIAlub2RlLT5ncm91cGluZ1Nl dHMgPSBncm91cGluZ1NldHM7CkBAIC02MTI5LDggKzYxNTMsOCBAQCBtYWtlX2FnZyhMaXN0 ICp0bGlzdCwgTGlzdCAqcXVhbCwKIAogc3RhdGljIFdpbmRvd0FnZyAqCiBtYWtlX3dpbmRv d2FnZyhMaXN0ICp0bGlzdCwgSW5kZXggd2lucmVmLAotCQkJICAgaW50IHBhcnROdW1Db2xz LCBBdHRyTnVtYmVyICpwYXJ0Q29sSWR4LCBPaWQgKnBhcnRPcGVyYXRvcnMsCi0JCQkgICBp bnQgb3JkTnVtQ29scywgQXR0ck51bWJlciAqb3JkQ29sSWR4LCBPaWQgKm9yZE9wZXJhdG9y cywKKwkJCSAgIGludCBwYXJ0TnVtQ29scywgQXR0ck51bWJlciAqcGFydENvbElkeCwgT2lk ICpwYXJ0T3BlcmF0b3JzLCBPaWQgKnBhcnRDb2xsYXRpb25zLAorCQkJICAgaW50IG9yZE51 bUNvbHMsIEF0dHJOdW1iZXIgKm9yZENvbElkeCwgT2lkICpvcmRPcGVyYXRvcnMsIE9pZCAq b3JkQ29sbGF0aW9ucywKIAkJCSAgIGludCBmcmFtZU9wdGlvbnMsIE5vZGUgKnN0YXJ0T2Zm c2V0LCBOb2RlICplbmRPZmZzZXQsCiAJCQkgICBPaWQgc3RhcnRJblJhbmdlRnVuYywgT2lk IGVuZEluUmFuZ2VGdW5jLAogCQkJICAgT2lkIGluUmFuZ2VDb2xsLCBib29sIGluUmFuZ2VB c2MsIGJvb2wgaW5SYW5nZU51bGxzRmlyc3QsCkBAIC02MTQzLDkgKzYxNjcsMTEgQEAgbWFr ZV93aW5kb3dhZ2coTGlzdCAqdGxpc3QsIEluZGV4IHdpbnJlZiwKIAlub2RlLT5wYXJ0TnVt Q29scyA9IHBhcnROdW1Db2xzOwogCW5vZGUtPnBhcnRDb2xJZHggPSBwYXJ0Q29sSWR4Owog CW5vZGUtPnBhcnRPcGVyYXRvcnMgPSBwYXJ0T3BlcmF0b3JzOworCW5vZGUtPnBhcnRDb2xs YXRpb25zID0gcGFydENvbGxhdGlvbnM7CiAJbm9kZS0+b3JkTnVtQ29scyA9IG9yZE51bUNv bHM7CiAJbm9kZS0+b3JkQ29sSWR4ID0gb3JkQ29sSWR4OwogCW5vZGUtPm9yZE9wZXJhdG9y cyA9IG9yZE9wZXJhdG9yczsKKwlub2RlLT5vcmRDb2xsYXRpb25zID0gb3JkQ29sbGF0aW9u czsKIAlub2RlLT5mcmFtZU9wdGlvbnMgPSBmcmFtZU9wdGlvbnM7CiAJbm9kZS0+c3RhcnRP ZmZzZXQgPSBzdGFydE9mZnNldDsKIAlub2RlLT5lbmRPZmZzZXQgPSBlbmRPZmZzZXQ7CkBA IC02MTcwLDYgKzYxOTYsNyBAQCBtYWtlX2dyb3VwKExpc3QgKnRsaXN0LAogCQkgICBpbnQg bnVtR3JvdXBDb2xzLAogCQkgICBBdHRyTnVtYmVyICpncnBDb2xJZHgsCiAJCSAgIE9pZCAq Z3JwT3BlcmF0b3JzLAorCQkgICBPaWQgKmdycENvbGxhdGlvbnMsCiAJCSAgIFBsYW4gKmxl ZnR0cmVlKQogewogCUdyb3VwCSAgICpub2RlID0gbWFrZU5vZGUoR3JvdXApOwpAQCAtNjE3 OCw2ICs2MjA1LDcgQEAgbWFrZV9ncm91cChMaXN0ICp0bGlzdCwKIAlub2RlLT5udW1Db2xz ID0gbnVtR3JvdXBDb2xzOwogCW5vZGUtPmdycENvbElkeCA9IGdycENvbElkeDsKIAlub2Rl LT5ncnBPcGVyYXRvcnMgPSBncnBPcGVyYXRvcnM7CisJbm9kZS0+Z3JwQ29sbGF0aW9ucyA9 IGdycENvbGxhdGlvbnM7CiAKIAlwbGFuLT5xdWFsID0gcXVhbDsKIAlwbGFuLT50YXJnZXRs aXN0ID0gdGxpc3Q7CkBAIC02MjAxLDYgKzYyMjksNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3Nv cnRjbGF1c2VzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpkaXN0aW5jdExpc3QpCiAJaW50CQkJ a2V5bm8gPSAwOwogCUF0dHJOdW1iZXIgKnVuaXFDb2xJZHg7CiAJT2lkCQkgICAqdW5pcU9w ZXJhdG9yczsKKwlPaWQJCSAgICp1bmlxQ29sbGF0aW9uczsKIAlMaXN0Q2VsbCAgICpzbGl0 ZW07CiAKIAlwbGFuLT50YXJnZXRsaXN0ID0gbGVmdHRyZWUtPnRhcmdldGxpc3Q7CkBAIC02 MjE1LDYgKzYyNDQsNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3NvcnRjbGF1c2VzKFBsYW4gKmxl ZnR0cmVlLCBMaXN0ICpkaXN0aW5jdExpc3QpCiAJQXNzZXJ0KG51bUNvbHMgPiAwKTsKIAl1 bmlxQ29sSWR4ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jKHNpemVvZihBdHRyTnVtYmVyKSAq IG51bUNvbHMpOwogCXVuaXFPcGVyYXRvcnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lk KSAqIG51bUNvbHMpOworCXVuaXFDb2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9m KE9pZCkgKiBudW1Db2xzKTsKIAogCWZvcmVhY2goc2xpdGVtLCBkaXN0aW5jdExpc3QpCiAJ ewpAQCAtNjIyMyw2ICs2MjUzLDcgQEAgbWFrZV91bmlxdWVfZnJvbV9zb3J0Y2xhdXNlcyhQ bGFuICpsZWZ0dHJlZSwgTGlzdCAqZGlzdGluY3RMaXN0KQogCiAJCXVuaXFDb2xJZHhba2V5 bm9dID0gdGxlLT5yZXNubzsKIAkJdW5pcU9wZXJhdG9yc1trZXlub10gPSBzb3J0Y2wtPmVx b3A7CisJCXVuaXFDb2xsYXRpb25zW2tleW5vXSA9IGV4cHJDb2xsYXRpb24oKE5vZGUgKikg dGxlLT5leHByKTsKIAkJQXNzZXJ0KE9pZElzVmFsaWQodW5pcU9wZXJhdG9yc1trZXlub10p KTsKIAkJa2V5bm8rKzsKIAl9CkBAIC02MjMwLDYgKzYyNjEsNyBAQCBtYWtlX3VuaXF1ZV9m cm9tX3NvcnRjbGF1c2VzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpkaXN0aW5jdExpc3QpCiAJ bm9kZS0+bnVtQ29scyA9IG51bUNvbHM7CiAJbm9kZS0+dW5pcUNvbElkeCA9IHVuaXFDb2xJ ZHg7CiAJbm9kZS0+dW5pcU9wZXJhdG9ycyA9IHVuaXFPcGVyYXRvcnM7CisJbm9kZS0+dW5p cUNvbGxhdGlvbnMgPSB1bmlxQ29sbGF0aW9uczsKIAogCXJldHVybiBub2RlOwogfQpAQCAt NjI0NSw2ICs2Mjc3LDcgQEAgbWFrZV91bmlxdWVfZnJvbV9wYXRoa2V5cyhQbGFuICpsZWZ0 dHJlZSwgTGlzdCAqcGF0aGtleXMsIGludCBudW1Db2xzKQogCWludAkJCWtleW5vID0gMDsK IAlBdHRyTnVtYmVyICp1bmlxQ29sSWR4OwogCU9pZAkJICAgKnVuaXFPcGVyYXRvcnM7CisJ T2lkCQkgICAqdW5pcUNvbGxhdGlvbnM7CiAJTGlzdENlbGwgICAqbGM7CiAKIAlwbGFuLT50 YXJnZXRsaXN0ID0gbGVmdHRyZWUtPnRhcmdldGxpc3Q7CkBAIC02MjYwLDYgKzYyOTMsNyBA QCBtYWtlX3VuaXF1ZV9mcm9tX3BhdGhrZXlzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRo a2V5cywgaW50IG51bUNvbHMpCiAJQXNzZXJ0KG51bUNvbHMgPj0gMCAmJiBudW1Db2xzIDw9 IGxpc3RfbGVuZ3RoKHBhdGhrZXlzKSk7CiAJdW5pcUNvbElkeCA9IChBdHRyTnVtYmVyICop IHBhbGxvYyhzaXplb2YoQXR0ck51bWJlcikgKiBudW1Db2xzKTsKIAl1bmlxT3BlcmF0b3Jz ID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBudW1Db2xzKTsKKwl1bmlxQ29sbGF0 aW9ucyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogbnVtQ29scyk7CiAKIAlmb3Jl YWNoKGxjLCBwYXRoa2V5cykKIAl7CkBAIC02MzI4LDYgKzYzNjIsNyBAQCBtYWtlX3VuaXF1 ZV9mcm9tX3BhdGhrZXlzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5cywgaW50IG51 bUNvbHMpCiAKIAkJdW5pcUNvbElkeFtrZXlub10gPSB0bGUtPnJlc25vOwogCQl1bmlxT3Bl cmF0b3JzW2tleW5vXSA9IGVxb3A7CisJCXVuaXFDb2xsYXRpb25zW2tleW5vXSA9IGVjLT5l Y19jb2xsYXRpb247CiAKIAkJa2V5bm8rKzsKIAl9CkBAIC02MzM1LDYgKzYzNzAsNyBAQCBt YWtlX3VuaXF1ZV9mcm9tX3BhdGhrZXlzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5 cywgaW50IG51bUNvbHMpCiAJbm9kZS0+bnVtQ29scyA9IG51bUNvbHM7CiAJbm9kZS0+dW5p cUNvbElkeCA9IHVuaXFDb2xJZHg7CiAJbm9kZS0+dW5pcU9wZXJhdG9ycyA9IHVuaXFPcGVy YXRvcnM7CisJbm9kZS0+dW5pcUNvbGxhdGlvbnMgPSB1bmlxQ29sbGF0aW9uczsKIAogCXJl dHVybiBub2RlOwogfQpAQCAtNjM3OSw2ICs2NDE1LDcgQEAgbWFrZV9zZXRvcChTZXRPcENt ZCBjbWQsIFNldE9wU3RyYXRlZ3kgc3RyYXRlZ3ksIFBsYW4gKmxlZnR0cmVlLAogCWludAkJ CWtleW5vID0gMDsKIAlBdHRyTnVtYmVyICpkdXBDb2xJZHg7CiAJT2lkCQkgICAqZHVwT3Bl cmF0b3JzOworCU9pZAkJICAgKmR1cENvbGxhdGlvbnM7CiAJTGlzdENlbGwgICAqc2xpdGVt OwogCiAJcGxhbi0+dGFyZ2V0bGlzdCA9IGxlZnR0cmVlLT50YXJnZXRsaXN0OwpAQCAtNjM5 Miw2ICs2NDI5LDcgQEAgbWFrZV9zZXRvcChTZXRPcENtZCBjbWQsIFNldE9wU3RyYXRlZ3kg c3RyYXRlZ3ksIFBsYW4gKmxlZnR0cmVlLAogCSAqLwogCWR1cENvbElkeCA9IChBdHRyTnVt YmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51bWJlcikgKiBudW1Db2xzKTsKIAlkdXBPcGVy YXRvcnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOworCWR1cENv bGxhdGlvbnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOwogCiAJ Zm9yZWFjaChzbGl0ZW0sIGRpc3RpbmN0TGlzdCkKIAl7CkBAIC02NDAwLDYgKzY0MzgsNyBA QCBtYWtlX3NldG9wKFNldE9wQ21kIGNtZCwgU2V0T3BTdHJhdGVneSBzdHJhdGVneSwgUGxh biAqbGVmdHRyZWUsCiAKIAkJZHVwQ29sSWR4W2tleW5vXSA9IHRsZS0+cmVzbm87CiAJCWR1 cE9wZXJhdG9yc1trZXlub10gPSBzb3J0Y2wtPmVxb3A7CisJCWR1cENvbGxhdGlvbnNba2V5 bm9dID0gZXhwckNvbGxhdGlvbigoTm9kZSAqKSB0bGUtPmV4cHIpOwogCQlBc3NlcnQoT2lk SXNWYWxpZChkdXBPcGVyYXRvcnNba2V5bm9dKSk7CiAJCWtleW5vKys7CiAJfQpAQCAtNjQw OSw2ICs2NDQ4LDcgQEAgbWFrZV9zZXRvcChTZXRPcENtZCBjbWQsIFNldE9wU3RyYXRlZ3kg c3RyYXRlZ3ksIFBsYW4gKmxlZnR0cmVlLAogCW5vZGUtPm51bUNvbHMgPSBudW1Db2xzOwog CW5vZGUtPmR1cENvbElkeCA9IGR1cENvbElkeDsKIAlub2RlLT5kdXBPcGVyYXRvcnMgPSBk dXBPcGVyYXRvcnM7CisJbm9kZS0+ZHVwQ29sbGF0aW9ucyA9IGR1cENvbGxhdGlvbnM7CiAJ bm9kZS0+ZmxhZ0NvbElkeCA9IGZsYWdDb2xJZHg7CiAJbm9kZS0+Zmlyc3RGbGFnID0gZmly c3RGbGFnOwogCW5vZGUtPm51bUdyb3VwcyA9IG51bUdyb3VwczsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3RsaXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC90bGlzdC5jCmluZGV4IDU1MDBmMzNlNjMuLjAwYmE1OGJjYmQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3RsaXN0LmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvdGxpc3QuYwpAQCAtNTAyLDYgKzUwMiwzMSBAQCBleHRyYWN0 X2dyb3VwaW5nX29wcyhMaXN0ICpncm91cENsYXVzZSkKIAlyZXR1cm4gZ3JvdXBPcGVyYXRv cnM7CiB9CiAKKy8qCisgKiBleHRyYWN0X2dyb3VwaW5nX2NvbGxhdGlvbnMgLSBtYWtlIGFu IGFycmF5IG9mIHRoZSBncm91cGluZyBjb2x1bW4gY29sbGF0aW9ucworICoJCWZvciBhIFNv cnRHcm91cENsYXVzZSBsaXN0CisgKi8KK09pZCAqCitleHRyYWN0X2dyb3VwaW5nX2NvbGxh dGlvbnMoTGlzdCAqZ3JvdXBDbGF1c2UsIExpc3QgKnRsaXN0KQoreworCWludAkJCW51bUNv bHMgPSBsaXN0X2xlbmd0aChncm91cENsYXVzZSk7CisJaW50CQkJY29sbm8gPSAwOworCU9p ZAkJICAgKmdycENvbGxhdGlvbnM7CisJTGlzdENlbGwgICAqZ2xpdGVtOworCisJZ3JwQ29s bGF0aW9ucyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogbnVtQ29scyk7CisKKwlm b3JlYWNoKGdsaXRlbSwgZ3JvdXBDbGF1c2UpCisJeworCQlTb3J0R3JvdXBDbGF1c2UgKmdy b3VwY2wgPSAoU29ydEdyb3VwQ2xhdXNlICopIGxmaXJzdChnbGl0ZW0pOworCQlUYXJnZXRF bnRyeSAqdGxlID0gZ2V0X3NvcnRncm91cGNsYXVzZV90bGUoZ3JvdXBjbCwgdGxpc3QpOwor CisJCWdycENvbGxhdGlvbnNbY29sbm8rK10gPSBleHByQ29sbGF0aW9uKChOb2RlICopIHRs ZS0+ZXhwcik7CisJfQorCisJcmV0dXJuIGdycENvbGxhdGlvbnM7Cit9CisKIC8qCiAgKiBl eHRyYWN0X2dyb3VwaW5nX2NvbHMgLSBtYWtlIGFuIGFycmF5IG9mIHRoZSBncm91cGluZyBj b2x1bW4gcmVzbm9zCiAgKgkJZm9yIGEgU29ydEdyb3VwQ2xhdXNlIGxpc3QKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCmluZGV4IGVlYWFiMmY0YzkuLmM2MGExYmI1 MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtMjY1Nyw3 ICsyNjU3LDcgQEAgZ2V0X3JhbmdlX251bGx0ZXN0KFBhcnRpdGlvbktleSBrZXkpCiAgKiBD b21wdXRlIHRoZSBoYXNoIHZhbHVlIGZvciBnaXZlbiBwYXJ0aXRpb24ga2V5IHZhbHVlcy4K ICAqLwogdWludDY0Ci1jb21wdXRlX3BhcnRpdGlvbl9oYXNoX3ZhbHVlKGludCBwYXJ0bmF0 dHMsIEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKK2NvbXB1dGVfcGFydGl0aW9uX2hhc2hfdmFs dWUoaW50IHBhcnRuYXR0cywgRm1nckluZm8gKnBhcnRzdXBmdW5jLCBPaWQgKnBhcnRjb2xs YXRpb24sCiAJCQkJCQkJIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCkKIHsKIAlpbnQJ CQlpOwpAQCAtMjY3OCw3ICsyNjc4LDcgQEAgY29tcHV0ZV9wYXJ0aXRpb25faGFzaF92YWx1 ZShpbnQgcGFydG5hdHRzLCBGbWdySW5mbyAqcGFydHN1cGZ1bmMsCiAJCQkgKiBkYXRhdHlw ZS1zcGVjaWZpYyBoYXNoIGZ1bmN0aW9ucyBvZiBlYWNoIHBhcnRpdGlvbiBrZXkKIAkJCSAq IGF0dHJpYnV0ZS4KIAkJCSAqLwotCQkJaGFzaCA9IEZ1bmN0aW9uQ2FsbDIoJnBhcnRzdXBm dW5jW2ldLCB2YWx1ZXNbaV0sIHNlZWQpOworCQkJaGFzaCA9IEZ1bmN0aW9uQ2FsbDJDb2xs KCZwYXJ0c3VwZnVuY1tpXSwgcGFydGNvbGxhdGlvbltpXSwgdmFsdWVzW2ldLCBzZWVkKTsK IAogCQkJLyogRm9ybSBhIHNpbmdsZSA2NC1iaXQgaGFzaCB2YWx1ZSAqLwogCQkJcm93SGFz aCA9IGhhc2hfY29tYmluZTY0KHJvd0hhc2gsIERhdHVtR2V0VUludDY0KGhhc2gpKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCAzNWM4NzUzNWQzLi4yYWJl MTE5NTI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0yMTU3 LDYgKzIxNTcsNyBAQCBnZXRfbWF0Y2hpbmdfaGFzaF9ib3VuZHMoUGFydGl0aW9uUHJ1bmVD b250ZXh0ICpjb250ZXh0LAogCWludAkJCWk7CiAJdWludDY0CQlyb3dIYXNoOwogCWludAkJ CWdyZWF0ZXN0X21vZHVsdXM7CisJT2lkCQkgICAqcGFydGNvbGxhdGlvbiA9IGNvbnRleHQt PnBhcnRjb2xsYXRpb247CiAKIAlBc3NlcnQoY29udGV4dC0+c3RyYXRlZ3kgPT0gUEFSVElU SU9OX1NUUkFURUdZX0hBU0gpOwogCkBAIC0yMTc3LDcgKzIxNzgsNyBAQCBnZXRfbWF0Y2hp bmdfaGFzaF9ib3VuZHMoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJaXNu dWxsW2ldID0gYm1zX2lzX21lbWJlcihpLCBudWxsa2V5cyk7CiAKIAkJZ3JlYXRlc3RfbW9k dWx1cyA9IGdldF9oYXNoX3BhcnRpdGlvbl9ncmVhdGVzdF9tb2R1bHVzKGJvdW5kaW5mbyk7 Ci0JCXJvd0hhc2ggPSBjb21wdXRlX3BhcnRpdGlvbl9oYXNoX3ZhbHVlKHBhcnRuYXR0cywg cGFydHN1cGZ1bmMsCisJCXJvd0hhc2ggPSBjb21wdXRlX3BhcnRpdGlvbl9oYXNoX3ZhbHVl KHBhcnRuYXR0cywgcGFydHN1cGZ1bmMsIHBhcnRjb2xsYXRpb24sCiAJCQkJCQkJCQkJCSAg IHZhbHVlcywgaXNudWxsKTsKIAogCQlpZiAocGFydGluZGljZXNbcm93SGFzaCAlIGdyZWF0 ZXN0X21vZHVsdXNdID49IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv YXJyYXlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwppbmRl eCBjZTFkZWQ4ODhmLi42YTMxZWQ3ODUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvYXJyYXlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1 bmNzLmMKQEAgLTM5NTQsNyArMzk1NCw3IEBAIGhhc2hfYXJyYXkoUEdfRlVOQ1RJT05fQVJH UykKIAkgKiBhcHBseSB0aGUgaGFzaCBmdW5jdGlvbiB0byBlYWNoIGFycmF5IGVsZW1lbnQu CiAJICovCiAJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKGxvY2ZjaW5mbywgJnR5cGVudHJ5 LT5oYXNoX3Byb2NfZmluZm8sIDEsCi0JCQkJCQkJIEludmFsaWRPaWQsIE5VTEwsIE5VTEwp OworCQkJCQkJCSBQR19HRVRfQ09MTEFUSU9OKCksIE5VTEwsIE5VTEwpOwogCiAJLyogTG9v cCBvdmVyIHNvdXJjZSBkYXRhICovCiAJbml0ZW1zID0gQXJyYXlHZXROSXRlbXMobmRpbXMs IGRpbXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25hbWUuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9uYW1lLmMKaW5kZXggZWIzNTE4OGUwNi4uYzYxODU2Yjg2 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25hbWUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvbmFtZS5jCkBAIC0xMzEsMTQgKzEzMSwyNiBAQCBuYW1lc2Vu ZChQR19GVU5DVElPTl9BUkdTKQogICogaGF2ZSBhICdcMCcgdGVybWluYXRvci4gIFdoYXRl dmVyIG1pZ2h0IGJlIHBhc3QgdGhlIHRlcm1pbmF0b3IgaXMgbm90CiAgKiBjb25zaWRlcmVk IHJlbGV2YW50IHRvIGNvbXBhcmlzb25zLgogICovCitzdGF0aWMgaW50CituYW1lY21wKE5h bWUgYXJnMSwgTmFtZSBhcmcyLCBPaWQgY29sbGlkKQoreworCS8qIEZhc3QgcGF0aCBmb3Ig Y29tbW9uIGNhc2UgdXNlZCBpbiBzeXN0ZW0gY2F0YWxvZ3MgKi8KKwlpZiAoY29sbGlkID09 IENfQ09MTEFUSU9OX09JRCkKKwkJcmV0dXJuIHN0cm5jbXAoTmFtZVN0cigqYXJnMSksIE5h bWVTdHIoKmFyZzIpLCBOQU1FREFUQUxFTik7CisKKwkvKiBFbHNlIHJlbHkgb24gdGhlIHZh cnN0ciBpbmZyYXN0cnVjdHVyZSAqLworCXJldHVybiB2YXJzdHJfY21wKE5hbWVTdHIoKmFy ZzEpLCBzdHJsZW4oTmFtZVN0cigqYXJnMSkpLAorCQkJCQkgIE5hbWVTdHIoKmFyZzIpLCBz dHJsZW4oTmFtZVN0cigqYXJnMikpLAorCQkJCQkgIGNvbGxpZCk7Cit9CisKIERhdHVtCiBu YW1lZXEoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlOYW1lCQlhcmcxID0gUEdfR0VUQVJHX05B TUUoMCk7CiAJTmFtZQkJYXJnMiA9IFBHX0dFVEFSR19OQU1FKDEpOwogCi0JLyogQ29sbGF0 aW9uIGRvZXNuJ3QgbWF0dGVyOiBlcXVhbCBvbmx5IGlmIGJpdHdpc2UtZXF1YWwgKi8KLQlQ R19SRVRVUk5fQk9PTChzdHJuY21wKE5hbWVTdHIoKmFyZzEpLCBOYW1lU3RyKCphcmcyKSwg TkFNRURBVEFMRU4pID09IDApOworCVBHX1JFVFVSTl9CT09MKG5hbWVjbXAoYXJnMSwgYXJn MiwgUEdfR0VUX0NPTExBVElPTigpKSA9PSAwKTsKIH0KIAogRGF0dW0KQEAgLTE0NywyMSAr MTU5LDcgQEAgbmFtZW5lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJTmFtZQkJYXJnMSA9IFBHX0dF VEFSR19OQU1FKDApOwogCU5hbWUJCWFyZzIgPSBQR19HRVRBUkdfTkFNRSgxKTsKIAotCS8q IENvbGxhdGlvbiBkb2Vzbid0IG1hdHRlcjogZXF1YWwgb25seSBpZiBiaXR3aXNlLWVxdWFs ICovCi0JUEdfUkVUVVJOX0JPT0woc3RybmNtcChOYW1lU3RyKCphcmcxKSwgTmFtZVN0cigq YXJnMiksIE5BTUVEQVRBTEVOKSAhPSAwKTsKLX0KLQotc3RhdGljIGludAotbmFtZWNtcChO YW1lIGFyZzEsIE5hbWUgYXJnMiwgT2lkIGNvbGxpZCkKLXsKLQkvKiBGYXN0IHBhdGggZm9y IGNvbW1vbiBjYXNlIHVzZWQgaW4gc3lzdGVtIGNhdGFsb2dzICovCi0JaWYgKGNvbGxpZCA9 PSBDX0NPTExBVElPTl9PSUQpCi0JCXJldHVybiBzdHJuY21wKE5hbWVTdHIoKmFyZzEpLCBO YW1lU3RyKCphcmcyKSwgTkFNRURBVEFMRU4pOwotCi0JLyogRWxzZSByZWx5IG9uIHRoZSB2 YXJzdHIgaW5mcmFzdHJ1Y3R1cmUgKi8KLQlyZXR1cm4gdmFyc3RyX2NtcChOYW1lU3RyKCph cmcxKSwgc3RybGVuKE5hbWVTdHIoKmFyZzEpKSwKLQkJCQkJICBOYW1lU3RyKCphcmcyKSwg c3RybGVuKE5hbWVTdHIoKmFyZzIpKSwKLQkJCQkJICBjb2xsaWQpOworCVBHX1JFVFVSTl9C T09MKG5hbWVjbXAoYXJnMSwgYXJnMiwgUEdfR0VUX0NPTExBVElPTigpKSAhPSAwKTsKIH0K IAogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0 YWdncy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yZGVyZWRzZXRhZ2dzLmMKaW5kZXgg MWIyMWRhOGQwOS4uOWIxYzViZDdmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L29yZGVyZWRzZXRhZ2dzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yZGVy ZWRzZXRhZ2dzLmMKQEAgLTEwODQsNyArMTA4NCw3IEBAIG1vZGVfZmluYWwoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCWxhc3RfYWJicmV2X3ZhbCA9IGFiYnJldl92YWw7CiAJCX0KIAkJZWxz ZSBpZiAoYWJicmV2X3ZhbCA9PSBsYXN0X2FiYnJldl92YWwgJiYKLQkJCQkgRGF0dW1HZXRC b29sKEZ1bmN0aW9uQ2FsbDIoZXF1YWxmbiwgdmFsLCBsYXN0X3ZhbCkpKQorCQkJCSBEYXR1 bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwoZXF1YWxmbiwgUEdfR0VUX0NPTExBVElPTigp LCB2YWwsIGxhc3RfdmFsKSkpCiAJCXsKIAkJCS8qIHZhbHVlIGVxdWFsIHRvIHByZXZpb3Vz IHZhbHVlLCBjb3VudCBpdCAqLwogCQkJaWYgKGxhc3RfdmFsX2lzX21vZGUpCkBAIC0xMzQ1 LDYgKzEzNDUsNyBAQCBoeXBvdGhldGljYWxfZGVuc2VfcmFua19maW5hbChQR19GVU5DVElP Tl9BUkdTKQogCQkJCQkJCQkJCQkgIG51bURpc3RpbmN0Q29scywKIAkJCQkJCQkJCQkJICBz b3J0Q29sSWR4LAogCQkJCQkJCQkJCQkgIG9zYXN0YXRlLT5xc3RhdGUtPmVxT3BlcmF0b3Jz LAorCQkJCQkJCQkJCQkgIG9zYXN0YXRlLT5xc3RhdGUtPnNvcnRDb2xsYXRpb25zLAogCQkJ CQkJCQkJCQkgIE5VTEwpOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7 CiAJCW9zYXN0YXRlLT5xc3RhdGUtPmNvbXBhcmVUdXBsZSA9IGNvbXBhcmVUdXBsZTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCBhM2RjM2JlNWE4Li45OThmMzRjOTRh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC0xMzA4LDYgKzEzMDgsNyBA QCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCkKIAkJLyogV2UnbGwg ZmlsbCBpbiB0aGUgcmVzdWx0IHN0cnVjdCBsb2NhbGx5IGJlZm9yZSBhbGxvY2F0aW5nIG1l bW9yeSAqLwogCQltZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKHJlc3VsdCkpOwogCQlyZXN1 bHQucHJvdmlkZXIgPSBjb2xsZm9ybS0+Y29sbHByb3ZpZGVyOworCQlyZXN1bHQuZGV0ZXJt aW5pc3RpYyA9IGNvbGxmb3JtLT5jb2xsaXNkZXRlcm1pbmlzdGljOwogCiAJCWlmIChjb2xs Zm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJDKQogCQl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IGNkZGE4NjBlNzMuLjNmYTA3ZmFiM2Qg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC03NzcsNiArNzc3LDgg QEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlv bikKIAkJCQl7CiAJCQkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pOwogCQkJCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCQkJT2lkCQkJcGtfY29sbCA9IFJJ QXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCQkJT2lk CQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKTsKIAogCQkJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKIAkJCQkJCQkJIFJJQXR0TmFt ZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOwpAQCAtNzg1LDYgKzc4Nyw4IEBA IHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24p CiAJCQkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCiAJCQkJCQkJCQlyaWluZm8tPnBmX2Vx X29wcnNbaV0sCiAJCQkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCQkJaWYgKHBrX2Nv bGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29s bCkpCisJCQkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xs KTsKIAkJCQkJcXVlcnlzZXAgPSAiQU5EIjsKIAkJCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlw ZTsKIAkJCQl9CkBAIC05MTcsNiArOTIxLDggQEAgUklfRktleV9jYXNjYWRlX2RlbChQR19G VU5DVElPTl9BUkdTKQogCQkJCXsKIAkJCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShw a19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQkJCU9pZAkJCWZrX3R5cGUgPSBS SUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJCQlPaWQJCQlw a19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0p OworCQkJCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8t PmZrX2F0dG51bXNbaV0pOwogCiAJCQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAogCQkJCQkJ CQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CkBAIC05MjUs NiArOTMxLDggQEAgUklfRktleV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQogCQkJ CQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAogCQkJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJz W2ldLAogCQkJCQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJCQkJCWlmIChwa19jb2xsICE9 IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwpKQor CQkJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CiAJ CQkJCXF1ZXJ5c2VwID0gIkFORCI7CiAJCQkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CiAJ CQkJfQpAQCAtMTA2OCw2ICsxMDc2LDggQEAgUklfRktleV9jYXNjYWRlX3VwZChQR19GVU5D VElPTl9BUkdTKQogCQkJCXsKIAkJCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0 dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJCQlPaWQJCQlwa19j b2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwor CQkJCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOwogCiAJCQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAogCQkJCQkJCQkg UklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CkBAIC0xMDc5LDYg KzEwODksOCBAQCBSSV9GS2V5X2Nhc2NhZGVfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJ CQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCiAJCQkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNb aV0sCiAJCQkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCQkJaWYgKHBrX2NvbGwgIT0g ZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJ CQkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKIAkJ CQkJcXVlcnlzZXAgPSAiLCI7CiAJCQkJCXF1YWxzZXAgPSAiQU5EIjsKIAkJCQkJcXVlcnlv aWRzW2ldID0gcGtfdHlwZTsKQEAgLTEyNTYsNiArMTI2OCw4IEBAIHJpX3NldG51bGwoVHJp Z2dlckRhdGEgKnRyaWdkYXRhKQogCQkJCXsKIAkJCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0 VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQkJCU9pZAkJCWZrX3R5 cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJCQlP aWQJCQlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQkJCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCBy aWluZm8tPmZrX2F0dG51bXNbaV0pOwogCiAJCQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAog CQkJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CkBA IC0xMjY3LDYgKzEyODEsOCBAQCByaV9zZXRudWxsKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkK IAkJCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKIAkJCQkJCQkJCXJpaW5mby0+cGZfZXFf b3Byc1tpXSwKIAkJCQkJCQkJCWF0dG5hbWUsIGZrX3R5cGUpOworCQkJCQlpZiAocGtfY29s bCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xs KSkKKwkJCQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwp OwogCQkJCQlxdWVyeXNlcCA9ICIsIjsKIAkJCQkJcXVhbHNlcCA9ICJBTkQiOwogCQkJCQlx dWVyeW9pZHNbaV0gPSBwa190eXBlOwpAQCAtMTQ0Myw2ICsxNDU5LDggQEAgcmlfc2V0ZGVm YXVsdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJCQkJewogCQkJCQlPaWQJCQlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJCQkJT2lk CQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7 CisJCQkJCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+ cGtfYXR0bnVtc1tpXSk7CisJCQkJCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKIAkJCQkJcXVvdGVPbmVOYW1lKGF0 dG5hbWUsCiAJCQkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNb aV0pKTsKQEAgLTE0NTQsNiArMTQ3Miw4IEBAIHJpX3NldGRlZmF1bHQoVHJpZ2dlckRhdGEg KnRyaWdkYXRhKQogCQkJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAogCQkJCQkJCQkJcmlp bmZvLT5wZl9lcV9vcHJzW2ldLAogCQkJCQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJCQkJ CWlmIChwa19jb2xsICE9IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlz dGljKHBrX2NvbGwpKQorCQkJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1 ZiwgcGtfY29sbCk7CiAJCQkJCXF1ZXJ5c2VwID0gIiwiOwogCQkJCQlxdWFsc2VwID0gIkFO RCI7CiAJCQkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvdmFyY2hhci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmNo YXIuYwppbmRleCBkNWE1ODAwY2IyLi4xM2Y0ODc5M2I3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvdmFyY2hhci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92 YXJjaGFyLmMKQEAgLTkzMywxMCArOTMzLDIwIEBAIERhdHVtCiBoYXNoYnBjaGFyKFBHX0ZV TkNUSU9OX0FSR1MpCiB7CiAJQnBDaGFyCSAgICprZXkgPSBQR19HRVRBUkdfQlBDSEFSX1BQ KDApOworCU9pZAkJCWNvbGxpZCA9IFBHX0dFVF9DT0xMQVRJT04oKTsKIAljaGFyCSAgICpr ZXlkYXRhOwogCWludAkJCWtleWxlbjsKIAlEYXR1bQkJcmVzdWx0OwogCisJaWYgKCFjb2xs aWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlO QVRFX0NPTExBVElPTiksCisJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB3aGlj aCBjb2xsYXRpb24gdG8gdXNlIGZvciBzdHJpbmcgaGFzaGluZyIpLAorCQkJCSBlcnJoaW50 KCJVc2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0 bHkuIikpKTsKKworCWlmIChjb2xsaWQgIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQorCQll bG9nKEVSUk9SLCAiVE9ETyIpOworCiAJa2V5ZGF0YSA9IFZBUkRBVEFfQU5ZKGtleSk7CiAJ a2V5bGVuID0gYmNUcnVlbGVuKGtleSk7CiAKQEAgLTk1MiwxMCArOTYyLDIwIEBAIERhdHVt CiBoYXNoYnBjaGFyZXh0ZW5kZWQoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlCcENoYXIJICAg KmtleSA9IFBHX0dFVEFSR19CUENIQVJfUFAoMCk7CisJT2lkCQkJY29sbGlkID0gUEdfR0VU X0NPTExBVElPTigpOwogCWNoYXIJICAgKmtleWRhdGE7CiAJaW50CQkJa2V5bGVuOwogCURh dHVtCQlyZXN1bHQ7CiAKKwlpZiAoIWNvbGxpZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0lOREVURVJNSU5BVEVfQ09MTEFUSU9OKSwKKwkJCQkgZXJybXNn KCJjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yIHN0cmlu ZyBoYXNoaW5nIiksCisJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2UgdG8g c2V0IHRoZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOworCisJaWYgKGNvbGxpZCAhPSBE RUZBVUxUX0NPTExBVElPTl9PSUQpCisJCWVsb2coRVJST1IsICJUT0RPIik7CisKIAlrZXlk YXRhID0gVkFSREFUQV9BTlkoa2V5KTsKIAlrZXlsZW4gPSBiY1RydWVsZW4oa2V5KTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXggNTBhMTU3ZGY5Zi4uYzc0Yjk2MTYzNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCkBAIC0xNDMwLDcgKzE0MzAsOCBAQCB2YXJz dHJfY21wKGNvbnN0IGNoYXIgKmFyZzEsIGludCBsZW4xLCBjb25zdCBjaGFyICphcmcyLCBp bnQgbGVuMiwgT2lkIGNvbGxpZCkKIAkJICogZXF1YWwgc3RyaW5ncyBpbiB0aGUgaW5wdXQg LSB0aGVuIHdlIHdpbiBiaWcgYnkgYXZvaWRpbmcgZXhwZW5zaXZlCiAJCSAqIGNvbGxhdGlv bi1hd2FyZSBjb21wYXJpc29ucy4KIAkJICovCi0JCWlmIChsZW4xID09IGxlbjIgJiYgbWVt Y21wKGFyZzEsIGFyZzIsIGxlbjEpID09IDApCisJCWlmICgoIW15bG9jYWxlIHx8IChteWxv Y2FsZSAmJiBteWxvY2FsZS0+ZGV0ZXJtaW5pc3RpYykpICYmCisJCQlsZW4xID09IGxlbjIg JiYgbWVtY21wKGFyZzEsIGFyZzIsIGxlbjEpID09IDApCiAJCQlyZXR1cm4gMDsKIAogI2lm ZGVmIFdJTjMyCkBAIC0xNTA4LDcgKzE1MDksOCBAQCB2YXJzdHJfY21wKGNvbnN0IGNoYXIg KmFyZzEsIGludCBsZW4xLCBjb25zdCBjaGFyICphcmcyLCBpbnQgbGVuMiwgT2lkIGNvbGxp ZCkKIAkJCSAqIHJlYXNvbnMsIHNvIHdlIGZvbGxvdyBQZXJsJ3MgbGVhZCBhbmQgc29ydCAi ZXF1YWwiIHN0cmluZ3MKIAkJCSAqIGFjY29yZGluZyB0byBzdHJjbXAgKG9uIHRoZSBVVEYt OCByZXByZXNlbnRhdGlvbikuCiAJCQkgKi8KLQkJCWlmIChyZXN1bHQgPT0gMCkKKwkJCWlm IChyZXN1bHQgPT0gMCAmJgorCQkJCSghbXlsb2NhbGUgfHwgKG15bG9jYWxlICYmIG15bG9j YWxlLT5kZXRlcm1pbmlzdGljKSkpCiAJCQl7CiAJCQkJcmVzdWx0ID0gbWVtY21wKGFyZzEs IGFyZzIsIE1pbihsZW4xLCBsZW4yKSk7CiAJCQkJaWYgKChyZXN1bHQgPT0gMCkgJiYgKGxl bjEgIT0gbGVuMikpCkBAIC0xNTk5LDcgKzE2MDEsOCBAQCB2YXJzdHJfY21wKGNvbnN0IGNo YXIgKmFyZzEsIGludCBsZW4xLCBjb25zdCBjaGFyICphcmcyLCBpbnQgbGVuMiwgT2lkIGNv bGxpZCkKIAkJICogc28gd2UgZm9sbG93IFBlcmwncyBsZWFkIGFuZCBzb3J0ICJlcXVhbCIg c3RyaW5ncyBhY2NvcmRpbmcgdG8KIAkJICogc3RyY21wKCkuCiAJCSAqLwotCQlpZiAocmVz dWx0ID09IDApCisJCWlmIChyZXN1bHQgPT0gMCAmJgorCQkJKCFteWxvY2FsZSB8fCAobXls b2NhbGUgJiYgbXlsb2NhbGUtPmRldGVybWluaXN0aWMpKSkKIAkJCXJlc3VsdCA9IHN0cmNt cChhMXAsIGEycCk7CiAKIAkJaWYgKGExcCAhPSBhMWJ1ZikKQEAgLTE2NDMsNiArMTY0Niwy MyBAQCB0ZXh0X2NtcCh0ZXh0ICphcmcxLCB0ZXh0ICphcmcyLCBPaWQgY29sbGlkKQogRGF0 dW0KIHRleHRlcShQR19GVU5DVElPTl9BUkdTKQogeworCWlmIChQR19HRVRfQ09MTEFUSU9O KCkgJiYKKwkJUEdfR0VUX0NPTExBVElPTigpICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCAm JgorCQkhcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKFBHX0dFVF9DT0xMQVRJT04oKSkt PmRldGVybWluaXN0aWMpCisJeworCQl0ZXh0CSAgICphcmcxID0gUEdfR0VUQVJHX1RFWFRf UFAoMCk7CisJCXRleHQJICAgKmFyZzIgPSBQR19HRVRBUkdfVEVYVF9QUCgxKTsKKwkJYm9v bAkJcmVzdWx0OworCisJCXJlc3VsdCA9ICh0ZXh0X2NtcChhcmcxLCBhcmcyLCBQR19HRVRf Q09MTEFUSU9OKCkpID09IDApOworCisJCVBHX0ZSRUVfSUZfQ09QWShhcmcxLCAwKTsKKwkJ UEdfRlJFRV9JRl9DT1BZKGFyZzIsIDEpOworCisJCVBHX1JFVFVSTl9CT09MKHJlc3VsdCk7 CisJfQorCWVsc2UKKwl7CiAJRGF0dW0JCWFyZzEgPSBQR19HRVRBUkdfREFUVU0oMCk7CiAJ RGF0dW0JCWFyZzIgPSBQR19HRVRBUkdfREFUVU0oMSk7CiAJYm9vbAkJcmVzdWx0OwpAQCAt MTY3MywxMSArMTY5MywyOSBAQCB0ZXh0ZXEoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAlQ R19SRVRVUk5fQk9PTChyZXN1bHQpOworCX0KIH0KIAogRGF0dW0KIHRleHRuZShQR19GVU5D VElPTl9BUkdTKQogeworCWlmIChQR19HRVRfQ09MTEFUSU9OKCkgJiYKKwkJUEdfR0VUX0NP TExBVElPTigpICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCAmJgorCQkhcGdfbmV3bG9jYWxl X2Zyb21fY29sbGF0aW9uKFBHX0dFVF9DT0xMQVRJT04oKSktPmRldGVybWluaXN0aWMpCisJ eworCQl0ZXh0CSAgICphcmcxID0gUEdfR0VUQVJHX1RFWFRfUFAoMCk7CisJCXRleHQJICAg KmFyZzIgPSBQR19HRVRBUkdfVEVYVF9QUCgxKTsKKwkJYm9vbAkJcmVzdWx0OworCisJCXJl c3VsdCA9ICh0ZXh0X2NtcChhcmcxLCBhcmcyLCBQR19HRVRfQ09MTEFUSU9OKCkpICE9IDAp OworCisJCVBHX0ZSRUVfSUZfQ09QWShhcmcxLCAwKTsKKwkJUEdfRlJFRV9JRl9DT1BZKGFy ZzIsIDEpOworCisJCVBHX1JFVFVSTl9CT09MKHJlc3VsdCk7CisJfQorCWVsc2UKKwl7CiAJ RGF0dW0JCWFyZzEgPSBQR19HRVRBUkdfREFUVU0oMCk7CiAJRGF0dW0JCWFyZzIgPSBQR19H RVRBUkdfREFUVU0oMSk7CiAJYm9vbAkJcmVzdWx0OwpAQCAtMTcwMiw2ICsxNzQwLDcgQEAg dGV4dG5lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJUEdfUkVUVVJOX0JPT0wocmVzdWx0 KTsKKwl9CiB9CiAKIERhdHVtCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9jYXRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvY2F0Y2FjaGUuYwppbmRl eCA0MTc2Y2VkOTIzLi5jNGQ3NmI4ZGFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9jYXRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2NhdGNh Y2hlLmMKQEAgLTE4OCw3ICsxODgsNyBAQCB0ZXh0ZXFmYXN0KERhdHVtIGEsIERhdHVtIGIp CiBzdGF0aWMgdWludDMyCiB0ZXh0aGFzaGZhc3QoRGF0dW0gZGF0dW0pCiB7Ci0JcmV0dXJu IERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMShoYXNodGV4dCwgZGF0dW0pKTsK KwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwxQ29sbChoYXNodGV4 dCwgREVGQVVMVF9DT0xMQVRJT05fT0lELCBkYXR1bSkpOwogfQogCiBzdGF0aWMgYm9vbApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCAzM2I1YjE2NDljLi4xYjE2 OTExMTdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtOTA4LDYg KzkwOCwyMiBAQCBnZXRfY29sbGF0aW9uX25hbWUoT2lkIGNvbGxvaWQpCiAJCXJldHVybiBO VUxMOwogfQogCitib29sCitnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhPaWQgY29s bG9pZCkKK3sKKwlIZWFwVHVwbGUJdHA7CisJRm9ybV9wZ19jb2xsYXRpb24gY29sbHR1cDsK Kwlib29sCQlyZXN1bHQ7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShDT0xMT0lELCBPYmpl Y3RJZEdldERhdHVtKGNvbGxvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29sbGF0aW9uICV1Iiwg Y29sbG9pZCk7CisJY29sbHR1cCA9IChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRw KTsKKwlyZXN1bHQgPSBjb2xsdHVwLT5jb2xsaXNkZXRlcm1pbmlzdGljOworCVJlbGVhc2VT eXNDYWNoZSh0cCk7CisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoJCQkJLS0tLS0tLS0tLSBD T05TVFJBSU5UIENBQ0hFIC0tLS0tLS0tLS0JCQkJCSAqLwogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwppbmRl eCAwMTdjMTFiYzk0Li42MTNlNjBlNmEzIDEwMDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi9p bml0ZGIuYworKysgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwpAQCAtMTc2Niw4ICsxNzY2 LDggQEAgc2V0dXBfY29sbGF0aW9uKEZJTEUgKmNtZGZkKQogCSAqIGluIHBnX2NvbGxhdGlv bi5oLiAgQnV0IGFkZCBpdCBiZWZvcmUgcmVhZGluZyBzeXN0ZW0gY29sbGF0aW9ucywgc28K IAkgKiB0aGF0IGl0IHdpbnMgaWYgbGliYyBkZWZpbmVzIGEgbG9jYWxlIG5hbWVkIHVjc19i YXNpYy4KIAkgKi8KLQlQR19DTURfUFJJTlRGMygiSU5TRVJUIElOVE8gcGdfY29sbGF0aW9u IChvaWQsIGNvbGxuYW1lLCBjb2xsbmFtZXNwYWNlLCBjb2xsb3duZXIsIGNvbGxwcm92aWRl ciwgY29sbGVuY29kaW5nLCBjb2xsY29sbGF0ZSwgY29sbGN0eXBlKSIKLQkJCQkgICAiVkFM VUVTIChwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbicsICdvaWQnLCAncGdf Y2F0YWxvZy5wZ19jb2xsYXRpb25fb2lkX2luZGV4JyksICd1Y3NfYmFzaWMnLCAncGdfY2F0 YWxvZyc6OnJlZ25hbWVzcGFjZSwgJXUsICclYycsICVkLCAnQycsICdDJyk7XG5cbiIsCisJ UEdfQ01EX1BSSU5URjMoIklOU0VSVCBJTlRPIHBnX2NvbGxhdGlvbiAob2lkLCBjb2xsbmFt ZSwgY29sbG5hbWVzcGFjZSwgY29sbG93bmVyLCBjb2xscHJvdmlkZXIsIGNvbGxpc2RldGVy bWluaXN0aWMsIGNvbGxlbmNvZGluZywgY29sbGNvbGxhdGUsIGNvbGxjdHlwZSkiCisJCQkJ ICAgIlZBTFVFUyAocGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xsYXRpb24nLCAnb2lk JywgJ3BnX2NhdGFsb2cucGdfY29sbGF0aW9uX29pZF9pbmRleCcpLCAndWNzX2Jhc2ljJywg J3BnX2NhdGFsb2cnOjpyZWduYW1lc3BhY2UsICV1LCAnJWMnLCB0cnVlLCAlZCwgJ0MnLCAn QycpO1xuXG4iLAogCQkJCSAgIEJPT1RTVFJBUF9TVVBFUlVTRVJJRCwgQ09MTFBST1ZJREVS X0xJQkMsIFBHX1VURjgpOwogCiAJLyogTm93IGltcG9ydCBhbGwgY29sbGF0aW9ucyB3ZSBj YW4gZmluZCBpbiB0aGUgb3BlcmF0aW5nIHN5c3RlbSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXgg MzQxYjFhNTFmMi4uNzBjMmIwMDgzMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xMzI1OSw2ICsx MzI1OSw3IEBAIGR1bXBDb2xsYXRpb24oQXJjaGl2ZSAqZm91dCwgQ29sbEluZm8gKmNvbGxp bmZvKQogCWNoYXIJICAgKnFjb2xsbmFtZTsKIAlQR3Jlc3VsdCAgICpyZXM7CiAJaW50CQkJ aV9jb2xscHJvdmlkZXI7CisJaW50CQkJaV9jb2xsaXNkZXRlcm1pbmlzdGljOwogCWludAkJ CWlfY29sbGNvbGxhdGU7CiAJaW50CQkJaV9jb2xsY3R5cGU7CiAJY29uc3QgY2hhciAqY29s bHByb3ZpZGVyOwpAQCAtMTMyNzYsMjggKzEzMjc3LDM1IEBAIGR1bXBDb2xsYXRpb24oQXJj aGl2ZSAqZm91dCwgQ29sbEluZm8gKmNvbGxpbmZvKQogCXFjb2xsbmFtZSA9IHBnX3N0cmR1 cChmbXRJZChjb2xsaW5mby0+ZG9iai5uYW1lKSk7CiAKIAkvKiBHZXQgY29sbGF0aW9uLXNw ZWNpZmljIGRldGFpbHMgKi8KKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIlNFTEVDVCAi KTsKKwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEwMDAwMCkKLQkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksICJTRUxFQ1QgIgorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwK IAkJCQkJCSAgImNvbGxwcm92aWRlciwgIgotCQkJCQkJICAiY29sbGNvbGxhdGUsICIKLQkJ CQkJCSAgImNvbGxjdHlwZSwgIgotCQkJCQkJICAiY29sbHZlcnNpb24gIgotCQkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbiBjICIKLQkJCQkJCSAgIldIRVJFIGMub2lk ID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQiLAotCQkJCQkJICBjb2xsaW5mby0+ZG9iai5jYXRJ ZC5vaWQpOworCQkJCQkJICAiY29sbHZlcnNpb24sICIpOwogCWVsc2UKLQkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksICJTRUxFQ1QgIgorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwK IAkJCQkJCSAgIidjJyBBUyBjb2xscHJvdmlkZXIsICIKLQkJCQkJCSAgImNvbGxjb2xsYXRl LCAiCi0JCQkJCQkgICJjb2xsY3R5cGUsICIKLQkJCQkJCSAgIk5VTEwgQVMgY29sbHZlcnNp b24gIgotCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbiBjICIKLQkJCQkJ CSAgIldIRVJFIGMub2lkID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQiLAotCQkJCQkJICBjb2xs aW5mby0+ZG9iai5jYXRJZC5vaWQpOworCQkJCQkJICAiTlVMTCBBUyBjb2xsdmVyc2lvbiwg Iik7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMjAwMDApCisJCWFwcGVuZFBR RXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJICAiY29sbGlzZGV0ZXJtaW5pc3RpYywgIik7CisJ ZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCSAgInRydWUgQVMgY29s bGlzZGV0ZXJtaW5pc3RpYywgIik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJ CQkJICAiY29sbGNvbGxhdGUsICIKKwkJCQkJICAiY29sbGN0eXBlICIKKwkJCQkJICAiRlJP TSBwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbiBjICIKKwkJCQkJICAiV0hFUkUgYy5vaWQgPSAn JXUnOjpwZ19jYXRhbG9nLm9pZCIsCisJCQkJCSAgY29sbGluZm8tPmRvYmouY2F0SWQub2lk KTsKIAogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeUZvclNpbmdsZVJvdyhmb3V0LCBxdWVyeS0+ ZGF0YSk7CiAKIAlpX2NvbGxwcm92aWRlciA9IFBRZm51bWJlcihyZXMsICJjb2xscHJvdmlk ZXIiKTsKKwlpX2NvbGxpc2RldGVybWluaXN0aWMgPSBQUWZudW1iZXIocmVzLCAiY29sbGlz ZGV0ZXJtaW5pc3RpYyIpOwogCWlfY29sbGNvbGxhdGUgPSBQUWZudW1iZXIocmVzLCAiY29s bGNvbGxhdGUiKTsKIAlpX2NvbGxjdHlwZSA9IFBRZm51bWJlcihyZXMsICJjb2xsY3R5cGUi KTsKIApAQCAtMTMzMjQsNiArMTMzMzIsOSBAQCBkdW1wQ29sbGF0aW9uKEFyY2hpdmUgKmZv dXQsIENvbGxJbmZvICpjb2xsaW5mbykKIAkJCQkJICAidW5yZWNvZ25pemVkIGNvbGxhdGlv biBwcm92aWRlcjogJXNcbiIsCiAJCQkJCSAgY29sbHByb3ZpZGVyKTsKIAorCWlmIChzdHJj bXAoUFFnZXR2YWx1ZShyZXMsIDAsIGlfY29sbGlzZGV0ZXJtaW5pc3RpYyksICJmIikgPT0g MCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiwgZGV0ZXJtaW5pc3RpYyA9IGZhbHNl Iik7CisKIAlpZiAoc3RyY21wKGNvbGxjb2xsYXRlLCBjb2xsY3R5cGUpID09IDApCiAJewog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiLCBsb2NhbGUgPSAiKTsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5k ZXggMGExODFiMDFkOS4uMTU0MGRmNWM4MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTQwOTIsNyArNDA5 Miw3IEBAIGxpc3RDb2xsYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9z ZSwgYm9vbCBzaG93U3lzdGVtKQogCVBRRXhwQnVmZmVyRGF0YSBidWY7CiAJUEdyZXN1bHQg ICAqcmVzOwogCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7Ci0Jc3RhdGljIGNv bnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlfTsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29s dW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFs c2V9OwogCiAJaWYgKHBzZXQuc3ZlcnNpb24gPCA5MDEwMCkKIAl7CkBAIC00MTIwLDYgKzQx MjAsMjEgQEAgbGlzdENvbGxhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJi b3NlLCBib29sIHNob3dTeXN0ZW0pCiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJ CQkgICIsXG4gICAgICAgQ0FTRSBjLmNvbGxwcm92aWRlciBXSEVOICdkJyBUSEVOICdkZWZh dWx0JyBXSEVOICdjJyBUSEVOICdsaWJjJyBXSEVOICdpJyBUSEVOICdpY3UnIEVORCBBUyBc IiVzXCIiLAogCQkJCQkJICBnZXR0ZXh0X25vb3AoIlByb3ZpZGVyIikpOworCWVsc2UKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIixcbiAgICAgICAnbGliYycgQVMg XCIlc1wiIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJQcm92aWRlciIpKTsKKworCWlmIChw c2V0LnN2ZXJzaW9uID49IDEyMDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJ CQkJCSAgIixcbiAgICAgICBDQVNFIFdIRU4gYy5jb2xsaXNkZXRlcm1pbmlzdGljIFRIRU4g JyVzJyBFTFNFICclcycgRU5EIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgi eWVzIiksIGdldHRleHRfbm9vcCgibm8iKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJEZXRl cm1pbmlzdGljPyIpKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJ CQkgICIsXG4gICAgICAgJyVzJyBBUyBcIiVzXCIiLAorCQkJCQkJICBnZXR0ZXh0X25vb3Ao InllcyIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkRldGVybWluaXN0aWM/IikpOwogCiAJ aWYgKHZlcmJvc2UpCiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19jb2xsYXRpb24uaAppbmRleCA1MWY5YjJhMmNhLi45YmU5NzdiMmM2IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAgQ0FUQUxPRyhw Z19jb2xsYXRpb24sMzQ1NixDb2xsYXRpb25SZWxhdGlvbklkKQogCU9pZAkJCWNvbGxuYW1l c3BhY2U7CS8qIE9JRCBvZiBuYW1lc3BhY2UgY29udGFpbmluZyBjb2xsYXRpb24gKi8KIAlP aWQJCQljb2xsb3duZXI7CQkvKiBvd25lciBvZiBjb2xsYXRpb24gKi8KIAljaGFyCQljb2xs cHJvdmlkZXI7CS8qIHNlZSBjb25zdGFudHMgYmVsb3cgKi8KKwlib29sCQljb2xsaXNkZXRl cm1pbmlzdGljIEJLSV9ERUZBVUxUKHQpOwogCWludDMyCQljb2xsZW5jb2Rpbmc7CS8qIGVu Y29kaW5nIGZvciB0aGlzIGNvbGxhdGlvbjsgLTEgPSAiYWxsIiAqLwogCU5hbWVEYXRhCWNv bGxjb2xsYXRlOwkvKiBMQ19DT0xMQVRFIHNldHRpbmcgKi8KIAlOYW1lRGF0YQljb2xsY3R5 cGU7CQkvKiBMQ19DVFlQRSBzZXR0aW5nICovCkBAIC02MSw2ICs2Miw3IEBAIHR5cGVkZWYg Rm9ybURhdGFfcGdfY29sbGF0aW9uICpGb3JtX3BnX2NvbGxhdGlvbjsKIGV4dGVybiBPaWQg Q29sbGF0aW9uQ3JlYXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFj ZSwKIAkJCQlPaWQgY29sbG93bmVyLAogCQkJCWNoYXIgY29sbHByb3ZpZGVyLAorCQkJCWJv b2wgY29sbGlzZGV0ZXJtaW5pc3RpYywKIAkJCQlpbnQzMiBjb2xsZW5jb2RpbmcsCiAJCQkJ Y29uc3QgY2hhciAqY29sbGNvbGxhdGUsIGNvbnN0IGNoYXIgKmNvbGxjdHlwZSwKIAkJCQlj b25zdCBjaGFyICpjb2xsdmVyc2lvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4 IDkyYTEwZWJkNWMuLjIxZWYwMTQwZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApA QCAtMTEwLDYgKzExMCw3IEBAIGV4dGVybiBFeHByU3RhdGUgKmV4ZWNUdXBsZXNNYXRjaFBy ZXBhcmUoVHVwbGVEZXNjIGRlc2MsCiAJCQkJCSAgIGludCBudW1Db2xzLAogCQkJCQkgICBj b25zdCBBdHRyTnVtYmVyICprZXlDb2xJZHgsCiAJCQkJCSAgIGNvbnN0IE9pZCAqZXFPcGVy YXRvcnMsCisJCQkJCSAgIGNvbnN0IE9pZCAqY29sbGF0aW9ucywKIAkJCQkJICAgUGxhblN0 YXRlICpwYXJlbnQpOwogZXh0ZXJuIHZvaWQgZXhlY1R1cGxlc0hhc2hQcmVwYXJlKGludCBu dW1Db2xzLAogCQkJCQkgIGNvbnN0IE9pZCAqZXFPcGVyYXRvcnMsCkBAIC0xMjAsNiArMTIx LDcgQEAgZXh0ZXJuIFR1cGxlSGFzaFRhYmxlIEJ1aWxkVHVwbGVIYXNoVGFibGUoUGxhblN0 YXRlICpwYXJlbnQsCiAJCQkJCWludCBudW1Db2xzLCBBdHRyTnVtYmVyICprZXlDb2xJZHgs CiAJCQkJCWNvbnN0IE9pZCAqZXFmdW5jb2lkcywKIAkJCQkJRm1nckluZm8gKmhhc2hmdW5j dGlvbnMsCisJCQkJCU9pZCAqY29sbGF0aW9ucywKIAkJCQkJbG9uZyBuYnVja2V0cywgU2l6 ZSBhZGRpdGlvbmFsc2l6ZSwKIAkJCQkJTWVtb3J5Q29udGV4dCB0YWJsZWN4dCwKIAkJCQkJ TWVtb3J5Q29udGV4dCB0ZW1wY3h0LCBib29sIHVzZV92YXJpYWJsZV9oYXNoX2l2KTsKQEAg LTI0Niw2ICsyNDgsNyBAQCBleHRlcm4gRXhwclN0YXRlICpFeGVjQnVpbGRHcm91cGluZ0Vx dWFsKFR1cGxlRGVzYyBsZGVzYywgVHVwbGVEZXNjIHJkZXNjLAogCQkJCQkgICBpbnQgbnVt Q29scywKIAkJCQkJICAgY29uc3QgQXR0ck51bWJlciAqa2V5Q29sSWR4LAogCQkJCQkgICBj b25zdCBPaWQgKmVxZnVuY3Rpb25zLAorCQkJCQkgICBjb25zdCBPaWQgKmNvbGxhdGlvbnMs CiAJCQkJCSAgIFBsYW5TdGF0ZSAqcGFyZW50KTsKIGV4dGVybiBQcm9qZWN0aW9uSW5mbyAq RXhlY0J1aWxkUHJvamVjdGlvbkluZm8oTGlzdCAqdGFyZ2V0TGlzdCwKIAkJCQkJCUV4cHJD b250ZXh0ICplY29udGV4dCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2hh c2hqb2luLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9oYXNoam9pbi5oCmluZGV4IGE5Zjk4 NzJhNzguLjAwMDI3N2EzNDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2hh c2hqb2luLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaGFzaGpvaW4uaApAQCAtMzM3 LDYgKzMzNyw3IEBAIHR5cGVkZWYgc3RydWN0IEhhc2hKb2luVGFibGVEYXRhCiAJRm1ncklu Zm8gICAqb3V0ZXJfaGFzaGZ1bmN0aW9uczsJLyogbG9va3VwIGRhdGEgZm9yIGhhc2ggZnVu Y3Rpb25zICovCiAJRm1nckluZm8gICAqaW5uZXJfaGFzaGZ1bmN0aW9uczsJLyogbG9va3Vw IGRhdGEgZm9yIGhhc2ggZnVuY3Rpb25zICovCiAJYm9vbAkgICAqaGFzaFN0cmljdDsJCS8q IGlzIGVhY2ggaGFzaCBqb2luIG9wZXJhdG9yIHN0cmljdD8gKi8KKwlPaWQJCSAgICpjb2xs YXRpb25zOwogCiAJU2l6ZQkJc3BhY2VVc2VkOwkJLyogbWVtb3J5IHNwYWNlIGN1cnJlbnRs eSB1c2VkIGJ5IHR1cGxlcyAqLwogCVNpemUJCXNwYWNlQWxsb3dlZDsJLyogdXBwZXIgbGlt aXQgZm9yIHNwYWNlIHVzZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVIYXNoLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlSGFzaC5oCmluZGV4IDhk NzAwYzA2YzUuLmYyNDQ0Yzg1YzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVIYXNoLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUhhc2guaApAQCAt MjQsNyArMjQsNyBAQCBleHRlcm4gTm9kZSAqTXVsdGlFeGVjSGFzaChIYXNoU3RhdGUgKm5v ZGUpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZEhhc2goSGFzaFN0YXRlICpub2RlKTsKIGV4dGVy biB2b2lkIEV4ZWNSZVNjYW5IYXNoKEhhc2hTdGF0ZSAqbm9kZSk7CiAKLWV4dGVybiBIYXNo Sm9pblRhYmxlIEV4ZWNIYXNoVGFibGVDcmVhdGUoSGFzaFN0YXRlICpzdGF0ZSwgTGlzdCAq aGFzaE9wZXJhdG9ycywKK2V4dGVybiBIYXNoSm9pblRhYmxlIEV4ZWNIYXNoVGFibGVDcmVh dGUoSGFzaFN0YXRlICpzdGF0ZSwgTGlzdCAqaGFzaE9wZXJhdG9ycywgTGlzdCAqaGFzaENv bGxhdGlvbnMsCiAJCQkJCWJvb2wga2VlcE51bGxzKTsKIGV4dGVybiB2b2lkIEV4ZWNQYXJh bGxlbEhhc2hUYWJsZUFsbG9jKEhhc2hKb2luVGFibGUgaGFzaHRhYmxlLAogCQkJCQkJICAg aW50IGJhdGNobm8pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA1ZWQwZjQwZjY5Li5i OWFkOWE4MDYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjg5LDYgKzY4OSw3IEBA IHR5cGVkZWYgc3RydWN0IFR1cGxlSGFzaFRhYmxlRGF0YQogCUF0dHJOdW1iZXIgKmtleUNv bElkeDsJCS8qIGF0dHIgbnVtYmVycyBvZiBrZXkgY29sdW1ucyAqLwogCUZtZ3JJbmZvICAg KnRhYl9oYXNoX2Z1bmNzOyAvKiBoYXNoIGZ1bmN0aW9ucyBmb3IgdGFibGUgZGF0YXR5cGUo cykgKi8KIAlFeHByU3RhdGUgICp0YWJfZXFfZnVuYzsJLyogY29tcGFyYXRvciBmb3IgdGFi bGUgZGF0YXR5cGUocykgKi8KKwlPaWQJCSAgICp0YWJfY29sbGF0aW9uczsJLyogY29sbGF0 aW9ucyBmb3IgaGFzaCBhbmQgY29tcGFyaXNvbiAqLwogCU1lbW9yeUNvbnRleHQgdGFibGVj eHQ7CQkvKiBtZW1vcnkgY29udGV4dCBjb250YWluaW5nIHRhYmxlICovCiAJTWVtb3J5Q29u dGV4dCB0ZW1wY3h0OwkJLyogY29udGV4dCBmb3IgZnVuY3Rpb24gZXZhbHVhdGlvbnMgKi8K IAlTaXplCQllbnRyeXNpemU7CQkvKiBhY3R1YWwgc2l6ZSB0byBtYWtlIGVhY2ggaGFzaCBl bnRyeSAqLwpAQCAtODU4LDYgKzg1OSw3IEBAIHR5cGVkZWYgc3RydWN0IFN1YlBsYW5TdGF0 ZQogCUF0dHJOdW1iZXIgKmtleUNvbElkeDsJCS8qIGNvbnRyb2wgZGF0YSBmb3IgaGFzaCB0 YWJsZXMgKi8KIAlPaWQJCSAgICp0YWJfZXFfZnVuY29pZHM7CS8qIGVxdWFsaXR5IGZ1bmMg b2lkcyBmb3IgdGFibGUKIAkJCQkJCQkJCSAqIGRhdGF0eXBlKHMpICovCisJT2lkCQkgICAq dGFiX2NvbGxhdGlvbnM7CS8qIGNvbGxhdGlvbnMgZm9yIGhhc2ggYW5kIGNvbXBhcmlzb24g Ki8KIAlGbWdySW5mbyAgICp0YWJfaGFzaF9mdW5jczsgLyogaGFzaCBmdW5jdGlvbnMgZm9y IHRhYmxlIGRhdGF0eXBlKHMpICovCiAJRm1nckluZm8gICAqdGFiX2VxX2Z1bmNzOwkvKiBl cXVhbGl0eSBmdW5jdGlvbnMgZm9yIHRhYmxlIGRhdGF0eXBlKHMpICovCiAJRm1nckluZm8g ICAqbGhzX2hhc2hfZnVuY3M7IC8qIGhhc2ggZnVuY3Rpb25zIGZvciBsZWZ0aGFuZCBkYXRh dHlwZShzKSAqLwpAQCAtMTg3MCw2ICsxODcyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSGFzaEpv aW5TdGF0ZQogCUxpc3QJICAgKmhqX091dGVySGFzaEtleXM7CS8qIGxpc3Qgb2YgRXhwclN0 YXRlIG5vZGVzICovCiAJTGlzdAkgICAqaGpfSW5uZXJIYXNoS2V5czsJLyogbGlzdCBvZiBF eHByU3RhdGUgbm9kZXMgKi8KIAlMaXN0CSAgICpoal9IYXNoT3BlcmF0b3JzOwkvKiBsaXN0 IG9mIG9wZXJhdG9yIE9JRHMgKi8KKwlMaXN0CSAgICpoal9Db2xsYXRpb25zOwogCUhhc2hK b2luVGFibGUgaGpfSGFzaFRhYmxlOwogCXVpbnQzMgkJaGpfQ3VySGFzaFZhbHVlOwogCWlu dAkJCWhqX0N1ckJ1Y2tldE5vOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCBmMTE2YmMy M2ZmLi5lMTBkYWFmNTAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMjk3LDYgKzI5 Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFJlY3Vyc2l2ZVVuaW9uCiAJCQkJCQkJCSAqIGR1cGxp Y2F0ZS1uZXNzICovCiAJQXR0ck51bWJlciAqZHVwQ29sSWR4OwkJLyogdGhlaXIgaW5kZXhl cyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KIAlPaWQJCSAgICpkdXBPcGVyYXRvcnM7CS8qIGVx dWFsaXR5IG9wZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8KKwlPaWQJCSAgICpkdXBDb2xs YXRpb25zOwogCWxvbmcJCW51bUdyb3VwczsJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgZ3Jv dXBzIGluIGlucHV0ICovCiB9IFJlY3Vyc2l2ZVVuaW9uOwogCkBAIC03NzIsNiArNzczLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgR3JvdXAKIAlpbnQJCQludW1Db2xzOwkJLyogbnVtYmVyIG9m IGdyb3VwaW5nIGNvbHVtbnMgKi8KIAlBdHRyTnVtYmVyICpncnBDb2xJZHg7CQkvKiB0aGVp ciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwogCU9pZAkJICAgKmdycE9wZXJhdG9y czsJLyogZXF1YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBhcmUgd2l0aCAqLworCU9pZAkJICAg KmdycENvbGxhdGlvbnM7CiB9IEdyb3VwOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0KQEAgLTc5 Niw2ICs3OTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZ2cKIAlpbnQJCQludW1Db2xzOwkJLyog bnVtYmVyIG9mIGdyb3VwaW5nIGNvbHVtbnMgKi8KIAlBdHRyTnVtYmVyICpncnBDb2xJZHg7 CQkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwogCU9pZAkJICAgKmdy cE9wZXJhdG9yczsJLyogZXF1YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBhcmUgd2l0aCAqLwor CU9pZAkJICAgKmdycENvbGxhdGlvbnM7CiAJbG9uZwkJbnVtR3JvdXBzOwkJLyogZXN0aW1h dGVkIG51bWJlciBvZiBncm91cHMgaW4gaW5wdXQgKi8KIAlCaXRtYXBzZXQgICphZ2dQYXJh bXM7CQkvKiBJRHMgb2YgUGFyYW1zIHVzZWQgaW4gQWdncmVmIGlucHV0cyAqLwogCS8qIE5v dGU6IHBsYW5uZXIgcHJvdmlkZXMgbnVtR3JvdXBzICYgYWdnUGFyYW1zIG9ubHkgaW4gSEFT SEVEL01JWEVEIGNhc2UgKi8KQEAgLTgxNCw5ICs4MTcsMTEgQEAgdHlwZWRlZiBzdHJ1Y3Qg V2luZG93QWdnCiAJaW50CQkJcGFydE51bUNvbHM7CS8qIG51bWJlciBvZiBjb2x1bW5zIGlu IHBhcnRpdGlvbiBjbGF1c2UgKi8KIAlBdHRyTnVtYmVyICpwYXJ0Q29sSWR4OwkJLyogdGhl aXIgaW5kZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KIAlPaWQJCSAgICpwYXJ0T3BlcmF0 b3JzOwkvKiBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIHBhcnRpdGlvbiBjb2x1bW5zICovCisJ T2lkCQkgICAqcGFydENvbGxhdGlvbnM7CS8qIGNvbGxhdGlvbnMgZm9yIHBhcnRpdGlvbiBj b2x1bW5zICovCiAJaW50CQkJb3JkTnVtQ29sczsJCS8qIG51bWJlciBvZiBjb2x1bW5zIGlu IG9yZGVyaW5nIGNsYXVzZSAqLwogCUF0dHJOdW1iZXIgKm9yZENvbElkeDsJCS8qIHRoZWly IGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCiAJT2lkCQkgICAqb3JkT3BlcmF0b3Jz OwkvKiBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIG9yZGVyaW5nIGNvbHVtbnMgKi8KKwlPaWQJ CSAgICpvcmRDb2xsYXRpb25zOwkvKiBjb2xsYXRpb25zIGZvciBvcmRlcmluZyBjb2x1bW5z ICovCiAJaW50CQkJZnJhbWVPcHRpb25zOwkvKiBmcmFtZV9jbGF1c2Ugb3B0aW9ucywgc2Vl IFdpbmRvd0RlZiAqLwogCU5vZGUJICAgKnN0YXJ0T2Zmc2V0OwkvKiBleHByZXNzaW9uIGZv ciBzdGFydGluZyBib3VuZCwgaWYgYW55ICovCiAJTm9kZQkgICAqZW5kT2Zmc2V0OwkJLyog ZXhwcmVzc2lvbiBmb3IgZW5kaW5nIGJvdW5kLCBpZiBhbnkgKi8KQEAgLTgzOCw2ICs4NDMs NyBAQCB0eXBlZGVmIHN0cnVjdCBVbmlxdWUKIAlpbnQJCQludW1Db2xzOwkJLyogbnVtYmVy IG9mIGNvbHVtbnMgdG8gY2hlY2sgZm9yIHVuaXF1ZW5lc3MgKi8KIAlBdHRyTnVtYmVyICp1 bmlxQ29sSWR4OwkJLyogdGhlaXIgaW5kZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KIAlP aWQJCSAgICp1bmlxT3BlcmF0b3JzOwkvKiBlcXVhbGl0eSBvcGVyYXRvcnMgdG8gY29tcGFy ZSB3aXRoICovCisJT2lkCQkgICAqdW5pcUNvbGxhdGlvbnM7CS8qIGNvbGxhdGlvbnMgZm9y IGVxdWFsaXR5IGNvbXBhcmlzb25zICovCiB9IFVuaXF1ZTsKIAogLyogLS0tLS0tLS0tLS0t CkBAIC05MTIsNiArOTE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU2V0T3AKIAkJCQkJCQkJICog ZHVwbGljYXRlLW5lc3MgKi8KIAlBdHRyTnVtYmVyICpkdXBDb2xJZHg7CQkvKiB0aGVpciBp bmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwogCU9pZAkJICAgKmR1cE9wZXJhdG9yczsJ LyogZXF1YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBhcmUgd2l0aCAqLworCU9pZAkJICAgKmR1 cENvbGxhdGlvbnM7CiAJQXR0ck51bWJlcglmbGFnQ29sSWR4OwkJLyogd2hlcmUgaXMgdGhl IGZsYWcgY29sdW1uLCBpZiBhbnkgKi8KIAlpbnQJCQlmaXJzdEZsYWc7CQkvKiBmbGFnIHZh bHVlIGZvciBmaXJzdCBpbnB1dCByZWxhdGlvbiAqLwogCWxvbmcJCW51bUdyb3VwczsJCS8q IGVzdGltYXRlZCBudW1iZXIgb2YgZ3JvdXBzIGluIGlucHV0ICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaCBiL3NyYy9pbmNsdWRlL29wdGltaXpl ci9wbGFubWFpbi5oCmluZGV4IGVjMWVhMTAyMzMuLmRkMGNjYTk4ZmUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL29w dGltaXplci9wbGFubWFpbi5oCkBAIC02Myw3ICs2Myw3IEBAIGV4dGVybiBib29sIGlzX3By b2plY3Rpb25fY2FwYWJsZV9wbGFuKFBsYW4gKnBsYW4pOwogZXh0ZXJuIFNvcnQgKm1ha2Vf c29ydF9mcm9tX3NvcnRjbGF1c2VzKExpc3QgKnNvcnRjbHMsIFBsYW4gKmxlZnR0cmVlKTsK IGV4dGVybiBBZ2cgKm1ha2VfYWdnKExpc3QgKnRsaXN0LCBMaXN0ICpxdWFsLAogCQkgQWdn U3RyYXRlZ3kgYWdnc3RyYXRlZ3ksIEFnZ1NwbGl0IGFnZ3NwbGl0LAotCQkgaW50IG51bUdy b3VwQ29scywgQXR0ck51bWJlciAqZ3JwQ29sSWR4LCBPaWQgKmdycE9wZXJhdG9ycywKKwkJ IGludCBudW1Hcm91cENvbHMsIEF0dHJOdW1iZXIgKmdycENvbElkeCwgT2lkICpncnBPcGVy YXRvcnMsIE9pZCAqZ3JwQ29sbGF0aW9ucywKIAkJIExpc3QgKmdyb3VwaW5nU2V0cywgTGlz dCAqY2hhaW4sCiAJCSBkb3VibGUgZE51bUdyb3VwcywgUGxhbiAqbGVmdHRyZWUpOwogZXh0 ZXJuIExpbWl0ICptYWtlX2xpbWl0KFBsYW4gKmxlZnR0cmVlLCBOb2RlICpsaW1pdE9mZnNl dCwgTm9kZSAqbGltaXRDb3VudCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvdGxpc3QuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci90bGlzdC5oCmluZGV4IDlmYTUy ZTEyNzguLmYzNTU2ZmUyNjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci90 bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci90bGlzdC5oCkBAIC00OCw2ICs0 OCw3IEBAIGV4dGVybiBTb3J0R3JvdXBDbGF1c2UgKmdldF9zb3J0Z3JvdXByZWZfY2xhdXNl X25vZXJyKEluZGV4IHNvcnRyZWYsCiAJCQkJCQkJICBMaXN0ICpjbGF1c2VzKTsKIAogZXh0 ZXJuIE9pZCAqZXh0cmFjdF9ncm91cGluZ19vcHMoTGlzdCAqZ3JvdXBDbGF1c2UpOworZXh0 ZXJuIE9pZCAqZXh0cmFjdF9ncm91cGluZ19jb2xsYXRpb25zKExpc3QgKmdyb3VwQ2xhdXNl LCBMaXN0ICp0bGlzdCk7CiBleHRlcm4gQXR0ck51bWJlciAqZXh0cmFjdF9ncm91cGluZ19j b2xzKExpc3QgKmdyb3VwQ2xhdXNlLCBMaXN0ICp0bGlzdCk7CiBleHRlcm4gYm9vbCBncm91 cGluZ19pc19zb3J0YWJsZShMaXN0ICpncm91cENsYXVzZSk7CiBleHRlcm4gYm9vbCBncm91 cGluZ19pc19oYXNoYWJsZShMaXN0ICpncm91cENsYXVzZSk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIGIvc3JjL2luY2x1ZGUvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuaAppbmRleCAzNmZiNTg0ZTIzLi45YTI3MWIwOWU5IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKQEAgLTc3LDYgKzc3LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQm91bmRJbmZvRGF0YQogCiBleHRlcm4gaW50CWdl dF9oYXNoX3BhcnRpdGlvbl9ncmVhdGVzdF9tb2R1bHVzKFBhcnRpdGlvbkJvdW5kSW5mbyBi KTsKIGV4dGVybiB1aW50NjQgY29tcHV0ZV9wYXJ0aXRpb25faGFzaF92YWx1ZShpbnQgcGFy dG5hdHRzLCBGbWdySW5mbyAqcGFydHN1cGZ1bmMsCisJCQkJCQkJIE9pZCAqcGFydGNvbGxh dGlvbiwKIAkJCQkJCQkgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsKTsKIGV4dGVybiBM aXN0ICpnZXRfcXVhbF9mcm9tX3BhcnRib3VuZChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHBh cmVudCwKIAkJCQkJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYyk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oCmluZGV4IDY0MDg5OTMwMDEuLjU2NzVhYTE1ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oCkBAIC05MCw2ICs5MCw3IEBAIGV4dGVybiBPaWQJZ2V0X2F0dHR5cGUoT2lkIHJl bGlkLCBBdHRyTnVtYmVyIGF0dG51bSk7CiBleHRlcm4gdm9pZCBnZXRfYXR0dHlwZXR5cG1v ZGNvbGwoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJICBPaWQgKnR5cGlk LCBpbnQzMiAqdHlwbW9kLCBPaWQgKmNvbGxpZCk7CiBleHRlcm4gY2hhciAqZ2V0X2NvbGxh dGlvbl9uYW1lKE9pZCBjb2xsb2lkKTsKK2V4dGVybiBib29sIGdldF9jb2xsYXRpb25faXNk ZXRlcm1pbmlzdGljKE9pZCBjb2xsb2lkKTsKIGV4dGVybiBjaGFyICpnZXRfY29uc3RyYWlu dF9uYW1lKE9pZCBjb25vaWQpOwogZXh0ZXJuIGNoYXIgKmdldF9sYW5ndWFnZV9uYW1lKE9p ZCBsYW5nb2lkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIE9pZAlnZXRfb3BjbGFzc19m YW1pbHkoT2lkIG9wY2xhc3MpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdf bG9jYWxlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAppbmRleCA4OGEzMTM0 ODYyLi5jYTc3NWEzNjgxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2Nh bGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaApAQCAtODIsNiArODIs NyBAQCBleHRlcm4gdm9pZCBjYWNoZV9sb2NhbGVfdGltZSh2b2lkKTsKIHN0cnVjdCBwZ19s b2NhbGVfc3RydWN0CiB7CiAJY2hhcgkJcHJvdmlkZXI7CisJYm9vbAkJZGV0ZXJtaW5pc3Rp YzsKIAl1bmlvbgogCXsKICNpZmRlZiBIQVZFX0xPQ0FMRV9UCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dAppbmRleCBmNDg1YjVjMzMw Li5hMGU3ZTQ1MTdmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv bGxhdGUuaWN1LnV0Zjgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29s bGF0ZS5pY3UudXRmOC5vdXQKQEAgLTExMDAsMjcgKzExMDAsMzIwIEBAIHNlbGVjdCB0ZXh0 cmFuZ2VfZW5fdXMoJ0EnLCdaJykgQD4gJ2InOjp0ZXh0OwogCiBkcm9wIHR5cGUgdGV4dHJh bmdlX2M7CiBkcm9wIHR5cGUgdGV4dHJhbmdlX2VuX3VzOworLS0gbm9uZGV0ZXJtaW5pc3Rp YyBjb2xsYXRpb25zCitDUkVBVEUgQ09MTEFUSU9OIGN0ZXN0X2RldCAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICd1bmQnLCBkZXRlcm1pbmlzdGljID0gdHJ1ZSk7CitDUkVBVEUgQ09M TEFUSU9OIGN0ZXN0X25vbmRldCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICd1bmQnLCBk ZXRlcm1pbmlzdGljID0gZmFsc2UpOworQ1JFQVRFIFRBQkxFIHRlc3Q2IChhIGludCwgYiB0 ZXh0KTsKKy0tIHNhbWUgc3RyaW5nIGluIGRpZmZlcmVudCBub3JtYWwgZm9ybXMKK0lOU0VS VCBJTlRPIHRlc3Q2IFZBTFVFUyAoMSwgVSYnXDAwRTRiYycpOworSU5TRVJUIElOVE8gdGVz dDYgVkFMVUVTICgyLCBVJidcMDA2MVwwMzA4YmMnKTsKK1NFTEVDVCAqIEZST00gdGVzdDY7 CisgYSB8ICBiICAKKy0tLSstLS0tLQorIDEgfCDDpGJjCisgMiB8IGHMiGJjCisoMiByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHRlc3Q2IFdIRVJFIGIgPSAnw6RiYycgQ09MTEFURSBjdGVz dF9kZXQ7CisgYSB8ICBiICAKKy0tLSstLS0tLQorIDEgfCDDpGJjCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gdGVzdDYgV0hFUkUgYiA9ICfDpGJjJyBDT0xMQVRFIGN0ZXN0X25vbmRl dDsKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IMOkYmMKKyAyIHwgYcyIYmMKKygyIHJv d3MpCisKK0NSRUFURSBDT0xMQVRJT04gY2FzZV9zZW5zaXRpdmUgKHByb3ZpZGVyID0gaWN1 LCBsb2NhbGUgPSAndW5kJyk7CitDUkVBVEUgQ09MTEFUSU9OIGNhc2VfaW5zZW5zaXRpdmUg KHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAndW5kLXUta3MtbGV2ZWwyJywgZGV0ZXJtaW5p c3RpYyA9IGZhbHNlKTsKK1NFTEVDVCAnYWJjJyA8PSAnQUJDJyBDT0xMQVRFIGNhc2Vfc2Vu c2l0aXZlLCAnYWJjJyA+PSAnQUJDJyBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZlOworID9jb2x1 bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ICAgICAgICB8IGYK KygxIHJvdykKKworU0VMRUNUICdhYmMnIDw9ICdBQkMnIENPTExBVEUgY2FzZV9pbnNlbnNp dGl2ZSwgJ2FiYycgPj0gJ0FCQycgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOworID9jb2x1 bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ICAgICAgICB8IHQK KygxIHJvdykKKworQ1JFQVRFIFRBQkxFIHRlc3QxY3MgKHggdGV4dCBDT0xMQVRFIGNhc2Vf c2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0MmNzICh4IHRleHQgQ09MTEFURSBjYXNl X3NlbnNpdGl2ZSk7CitDUkVBVEUgVEFCTEUgdGVzdDNjcyAoeCB0ZXh0IENPTExBVEUgY2Fz ZV9zZW5zaXRpdmUpOworSU5TRVJUIElOVE8gdGVzdDFjcyBWQUxVRVMgKCdhYmMnKSwgKCdk ZWYnKSwgKCdnaGknKTsKK0lOU0VSVCBJTlRPIHRlc3QyY3MgVkFMVUVTICgnQUJDJyksICgn Z2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0M2NzIFZBTFVFUyAoJ2FiYycpLCAoJ0FCQycpLCAo J2RlZicpLCAoJ2doaScpOworU0VMRUNUIHggRlJPTSB0ZXN0MWNzIFVOSU9OIFNFTEVDVCB4 IEZST00gdGVzdDJjczsKKyAgeCAgCistLS0tLQorIEFCQworIGFiYworIGRlZgorIGdoaQor KDQgcm93cykKKworU0VMRUNUIHggRlJPTSB0ZXN0MmNzIFVOSU9OIFNFTEVDVCB4IEZST00g dGVzdDFjczsKKyAgeCAgCistLS0tLQorIEFCQworIGFiYworIGRlZgorIGdoaQorKDQgcm93 cykKKworU0VMRUNUIHggRlJPTSB0ZXN0MWNzIElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRl c3QyY3M7CisgIHggIAorLS0tLS0KKyBnaGkKKygxIHJvdykKKworU0VMRUNUIHggRlJPTSB0 ZXN0MmNzIElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRlc3QxY3M7CisgIHggIAorLS0tLS0K KyBnaGkKKygxIHJvdykKKworU0VMRUNUIHggRlJPTSB0ZXN0MWNzIEVYQ0VQVCBTRUxFQ1Qg eCBGUk9NIHRlc3QyY3M7CisgIHggIAorLS0tLS0KKyBhYmMKKyBkZWYKKygyIHJvd3MpCisK K1NFTEVDVCB4IEZST00gdGVzdDJjcyBFWENFUFQgU0VMRUNUIHggRlJPTSB0ZXN0MWNzOwor ICB4ICAKKy0tLS0tCisgQUJDCisoMSByb3cpCisKK1NFTEVDVCB4LCBjb3VudCgqKSBGUk9N IHRlc3QzY3MgR1JPVVAgQlkgeCBPUkRFUiBCWSB4OworICB4ICB8IGNvdW50IAorLS0tLS0r LS0tLS0tLQorIGFiYyB8ICAgICAxCisgQUJDIHwgICAgIDEKKyBkZWYgfCAgICAgMQorIGdo aSB8ICAgICAxCisoNCByb3dzKQorCitTRUxFQ1QgeCwgcm93X251bWJlcigpIE9WRVIgKE9S REVSIEJZIHgpLCByYW5rKCkgT1ZFUiAoT1JERVIgQlkgeCkgRlJPTSB0ZXN0M2NzIE9SREVS IEJZIHg7CisgIHggIHwgcm93X251bWJlciB8IHJhbmsgCistLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tCisgYWJjIHwgICAgICAgICAgMSB8ICAgIDEKKyBBQkMgfCAgICAgICAgICAyIHwg ICAgMgorIGRlZiB8ICAgICAgICAgIDMgfCAgICAzCisgZ2hpIHwgICAgICAgICAgNCB8ICAg IDQKKyg0IHJvd3MpCisKK0NSRUFURSBUQUJMRSB0ZXN0MWNpICh4IHRleHQgQ09MTEFURSBj YXNlX2luc2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0MmNpICh4IHRleHQgQ09MTEFU RSBjYXNlX2luc2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0M2NpICh4IHRleHQgQ09M TEFURSBjYXNlX2luc2Vuc2l0aXZlKTsKK0lOU0VSVCBJTlRPIHRlc3QxY2kgVkFMVUVTICgn YWJjJyksICgnZGVmJyksICgnZ2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0MmNpIFZBTFVFUyAo J0FCQycpLCAoJ2doaScpOworSU5TRVJUIElOVE8gdGVzdDNjaSBWQUxVRVMgKCdhYmMnKSwg KCdBQkMnKSwgKCdkZWYnKSwgKCdnaGknKTsKK1NFTEVDVCB4IEZST00gdGVzdDFjaSBVTklP TiBTRUxFQ1QgeCBGUk9NIHRlc3QyY2k7CisgIHggIAorLS0tLS0KKyBhYmMKKyBnaGkKKyBk ZWYKKygzIHJvd3MpCisKK1NFTEVDVCB4IEZST00gdGVzdDJjaSBVTklPTiBTRUxFQ1QgeCBG Uk9NIHRlc3QxY2k7CisgIHggIAorLS0tLS0KKyBBQkMKKyBnaGkKKyBkZWYKKygzIHJvd3Mp CisKK1NFTEVDVCB4IEZST00gdGVzdDFjaSBJTlRFUlNFQ1QgU0VMRUNUIHggRlJPTSB0ZXN0 MmNpOworICB4ICAKKy0tLS0tCisgZ2hpCisgYWJjCisoMiByb3dzKQorCitTRUxFQ1QgeCBG Uk9NIHRlc3QyY2kgSU5URVJTRUNUIFNFTEVDVCB4IEZST00gdGVzdDFjaTsKKyAgeCAgCist LS0tLQorIGdoaQorIEFCQworKDIgcm93cykKKworU0VMRUNUIHggRlJPTSB0ZXN0MWNpIEVY Q0VQVCBTRUxFQ1QgeCBGUk9NIHRlc3QyY2k7CisgIHggIAorLS0tLS0KKyBkZWYKKygxIHJv dykKKworU0VMRUNUIHggRlJPTSB0ZXN0MmNpIEVYQ0VQVCBTRUxFQ1QgeCBGUk9NIHRlc3Qx Y2k7CisgeCAKKy0tLQorKDAgcm93cykKKworU0VMRUNUIHgsIGNvdW50KCopIEZST00gdGVz dDNjaSBHUk9VUCBCWSB4IE9SREVSIEJZIHg7CisgIHggIHwgY291bnQgCistLS0tLSstLS0t LS0tCisgYWJjIHwgICAgIDIKKyBkZWYgfCAgICAgMQorIGdoaSB8ICAgICAxCisoMyByb3dz KQorCitTRUxFQ1QgeCwgcm93X251bWJlcigpIE9WRVIgKE9SREVSIEJZIHgpLCByYW5rKCkg T1ZFUiAoT1JERVIgQlkgeCkgRlJPTSB0ZXN0M2NpIE9SREVSIEJZIHg7CisgIHggIHwgcm93 X251bWJlciB8IHJhbmsgCistLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tCisgQUJDIHwgICAg ICAgICAgMSB8ICAgIDEKKyBhYmMgfCAgICAgICAgICAyIHwgICAgMQorIGRlZiB8ICAgICAg ICAgIDMgfCAgICAzCisgZ2hpIHwgICAgICAgICAgNCB8ICAgIDQKKyg0IHJvd3MpCisKK0NS RUFURSBDT0xMQVRJT04gaWdub3JlX2FjY2VudHMgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUg PSAndW5kLXUta3MtbGV2ZWwxLWtjLXRydWUnLCBkZXRlcm1pbmlzdGljID0gZmFsc2UpOwor Q1JFQVRFIFRBQkxFIHRlc3Q0IChhIGludCwgYiB0ZXh0KTsKK0lOU0VSVCBJTlRPIHRlc3Q0 IFZBTFVFUyAoMSwgJ2NvdGUnKSwgKDIsICdjw7R0ZScpLCAoMywgJ2NvdMOpJyksICg0LCAn Y8O0dMOpJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3Q0IFdIRVJFIGIgPSAnY290ZSc7CisgYSB8 ICBiICAgCistLS0rLS0tLS0tCisgMSB8IGNvdGUKKygxIHJvdykKKworU0VMRUNUICogRlJP TSB0ZXN0NCBXSEVSRSBiID0gJ2NvdGUnIENPTExBVEUgaWdub3JlX2FjY2VudHM7CisgYSB8 ICBiICAgCistLS0rLS0tLS0tCisgMSB8IGNvdGUKKyAyIHwgY8O0dGUKKyAzIHwgY290w6kK KyA0IHwgY8O0dMOpCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3Q0IFdIRVJFIGIg PSAnQ290ZScgQ09MTEFURSBpZ25vcmVfYWNjZW50czsgIC0tIHN0aWxsIGNhc2Utc2Vuc2l0 aXZlCisgYSB8IGIgCistLS0rLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3Q0 IFdIRVJFIGIgPSAnQ290ZScgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOworIGEgfCAgYiAg IAorLS0tKy0tLS0tLQorIDEgfCBjb3RlCisoMSByb3cpCisKKy0tIGZvcmVpZ24ga2V5cyAo c2hvdWxkIHVzZSBjb2xsYXRpb24gb2YgcHJpbWFyeSBrZXkpCistLSBQSyBpcyBjYXNlLXNl bnNpdGl2ZSwgRksgaXMgY2FzZS1pbnNlbnNpdGl2ZQorQ1JFQVRFIFRBQkxFIHRlc3QxMHBr ICh4IHRleHQgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSBQUklNQVJZIEtFWSk7CitJTlNFUlQg SU5UTyB0ZXN0MTBwayBWQUxVRVMgKCdhYmMnKSwgKCdkZWYnKSwgKCdnaGknKTsKK0NSRUFU RSBUQUJMRSB0ZXN0MTBmayAoeCB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSBSRUZF UkVOQ0VTIHRlc3QxMHBrICh4KSBPTiBERUxFVEUgQ0FTQ0FERSk7CitJTlNFUlQgSU5UTyB0 ZXN0MTBmayBWQUxVRVMgKCdhYmMnKTsgIC0tIG9rCitJTlNFUlQgSU5UTyB0ZXN0MTBmayBW QUxVRVMgKCdBQkMnKTsgIC0tIGVycm9yCitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24g dGFibGUgInRlc3QxMGZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZXN0 MTBma194X2ZrZXkiCitERVRBSUw6ICBLZXkgKHgpPShBQkMpIGlzIG5vdCBwcmVzZW50IGlu IHRhYmxlICJ0ZXN0MTBwayIuCitJTlNFUlQgSU5UTyB0ZXN0MTBmayBWQUxVRVMgKCd4eXon KTsgIC0tIGVycm9yCitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlc3Qx MGZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZXN0MTBma194X2ZrZXki CitERVRBSUw6ICBLZXkgKHgpPSh4eXopIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZXN0 MTBwayIuCitTRUxFQ1QgKiBGUk9NIHRlc3QxMHBrOworICB4ICAKKy0tLS0tCisgYWJjCisg ZGVmCisgZ2hpCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3QxMGZrOworICB4ICAK Ky0tLS0tCisgYWJjCisoMSByb3cpCisKK0RFTEVURSBGUk9NIHRlc3QxMHBrIFdIRVJFIHgg PSAnYWJjJzsKK1NFTEVDVCAqIEZST00gdGVzdDEwcGs7CisgIHggIAorLS0tLS0KKyBkZWYK KyBnaGkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdDEwZms7CisgeCAKKy0tLQor KDAgcm93cykKKworLS0gUEsgaXMgY2FzZS1pbnNlbnNpdGl2ZSwgRksgaXMgY2FzZS1zZW5z aXRpdmUKK0NSRUFURSBUQUJMRSB0ZXN0MTFwayAoeCB0ZXh0IENPTExBVEUgY2FzZV9pbnNl bnNpdGl2ZSBQUklNQVJZIEtFWSk7CitJTlNFUlQgSU5UTyB0ZXN0MTFwayBWQUxVRVMgKCdh YmMnKSwgKCdkZWYnKSwgKCdnaGknKTsKK0NSRUFURSBUQUJMRSB0ZXN0MTFmayAoeCB0ZXh0 IENPTExBVEUgY2FzZV9zZW5zaXRpdmUgUkVGRVJFTkNFUyB0ZXN0MTFwayAoeCkgT04gREVM RVRFIENBU0NBREUpOworSU5TRVJUIElOVE8gdGVzdDExZmsgVkFMVUVTICgnYWJjJyk7ICAt LSBvaworSU5TRVJUIElOVE8gdGVzdDExZmsgVkFMVUVTICgnQUJDJyk7ICAtLSBvaworSU5T RVJUIElOVE8gdGVzdDExZmsgVkFMVUVTICgneHl6Jyk7ICAtLSBlcnJvcgorRVJST1I6ICBp bnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZXN0MTFmayIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidGVzdDExZmtfeF9ma2V5IgorREVUQUlMOiAgS2V5ICh4KT0oeHl6 KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVzdDExcGsiLgorU0VMRUNUICogRlJPTSB0 ZXN0MTFwazsKKyAgeCAgCistLS0tLQorIGFiYworIGRlZgorIGdoaQorKDMgcm93cykKKwor U0VMRUNUICogRlJPTSB0ZXN0MTFmazsKKyAgeCAgCistLS0tLQorIGFiYworIEFCQworKDIg cm93cykKKworREVMRVRFIEZST00gdGVzdDExcGsgV0hFUkUgeCA9ICdhYmMnOworU0VMRUNU ICogRlJPTSB0ZXN0MTFwazsKKyAgeCAgCistLS0tLQorIGRlZgorIGdoaQorKDIgcm93cykK KworU0VMRUNUICogRlJPTSB0ZXN0MTFmazsKKyB4IAorLS0tCisoMCByb3dzKQorCistLSBw YXJ0aXRpb25pbmcKK0NSRUFURSBUQUJMRSB0ZXN0MjAgKGEgaW50LCBiIHRleHQgQ09MTEFU RSBjYXNlX2luc2Vuc2l0aXZlKSBQQVJUSVRJT04gQlkgTElTVCAoYik7CitDUkVBVEUgVEFC TEUgdGVzdDIwXzEgUEFSVElUSU9OIE9GIHRlc3QyMCBGT1IgVkFMVUVTIElOICgnYWJjJyk7 CitJTlNFUlQgSU5UTyB0ZXN0MjAgVkFMVUVTICgxLCAnYWJjJyk7CitJTlNFUlQgSU5UTyB0 ZXN0MjAgVkFMVUVTICgyLCAnQUJDJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3QyMF8xOworIGEg fCAgYiAgCistLS0rLS0tLS0KKyAxIHwgYWJjCisgMiB8IEFCQworKDIgcm93cykKKworQ1JF QVRFIFRBQkxFIHRlc3QyMSAoYSBpbnQsIGIgdGV4dCBDT0xMQVRFIGNhc2VfaW5zZW5zaXRp dmUpIFBBUlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdGVzdDIxXzEgUEFS VElUSU9OIE9GIHRlc3QyMSBGT1IgVkFMVUVTIEZST00gKCdBQkMnKSBUTyAoJ0RFRicpOwor SU5TRVJUIElOVE8gdGVzdDIxIFZBTFVFUyAoMSwgJ2FiYycpOworSU5TRVJUIElOVE8gdGVz dDIxIFZBTFVFUyAoMiwgJ0FCQycpOworU0VMRUNUICogRlJPTSB0ZXN0MjFfMTsKKyBhIHwg IGIgIAorLS0tKy0tLS0tCisgMSB8IGFiYworIDIgfCBBQkMKKygyIHJvd3MpCisKK0NSRUFU RSBUQUJMRSB0ZXN0MjIgKGEgaW50LCBiIHRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZl KSBQQVJUSVRJT04gQlkgSEFTSCAoYik7CitDUkVBVEUgVEFCTEUgdGVzdDIyXzEgUEFSVElU SU9OIE9GIHRlc3QyMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDAp OworSU5TRVJUIElOVE8gdGVzdDIyIFZBTFVFUyAoMSwgJ2FiYycpOworSU5TRVJUIElOVE8g dGVzdDIyIFZBTFVFUyAoMiwgJ0FCQycpOworU0VMRUNUICogRlJPTSB0ZXN0MjJfMTsKKyBh IHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IGFiYworIDIgfCBBQkMKKygyIHJvd3MpCisKIC0t IGNsZWFudXAKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzIFRPICd3YXJuaW5nJzsKIERST1Ag U0NIRU1BIGNvbGxhdGVfdGVzdHMgQ0FTQ0FERTsKLU5PVElDRTogIGRyb3AgY2FzY2FkZXMg dG8gMTggb3RoZXIgb2JqZWN0cwotREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBj b2xsYXRlX3Rlc3QxCi1kcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdF9saWtl Ci1kcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdDIKLWRyb3AgY2FzY2FkZXMg dG8gdGFibGUgY29sbGF0ZV90ZXN0MwotZHJvcCBjYXNjYWRlcyB0byB0eXBlIHRlc3Rkb21h aW5fc3YKLWRyb3AgY2FzY2FkZXMgdG8gdGFibGUgY29sbGF0ZV90ZXN0NAotZHJvcCBjYXNj YWRlcyB0byB0YWJsZSBjb2xsYXRlX3Rlc3Q1Ci1kcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNv bGxhdGVfdGVzdDEwCi1kcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdDYKLWRy b3AgY2FzY2FkZXMgdG8gdmlldyBjb2xsdmlldzEKLWRyb3AgY2FzY2FkZXMgdG8gdmlldyBj b2xsdmlldzIKLWRyb3AgY2FzY2FkZXMgdG8gdmlldyBjb2xsdmlldzMKLWRyb3AgY2FzY2Fk ZXMgdG8gdHlwZSB0ZXN0ZG9tYWluCi1kcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG15bHQo dGV4dCx0ZXh0KQotZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBteWx0X25vbmlubGluZSh0 ZXh0LHRleHQpCi1kcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG15bHRfcGxwZ3NxbCh0ZXh0 LHRleHQpCi1kcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG15bHQyKHRleHQsdGV4dCkKLWRy b3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gZHVwKGFueWVsZW1lbnQpCiBSRVNFVCBzZWFyY2hf cGF0aDsKIC0tIGxlYXZlIGEgY29sbGF0aW9uIGZvciBwZ191cGdyYWRlIHRlc3QKIENSRUFU RSBDT0xMQVRJT04gY29sbF9pY3VfdXBncmFkZSBGUk9NICJ1bmQteC1pY3UiOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmxpbnV4LnV0Zjgub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmxpbnV4LnV0Zjgub3V0Cmlu ZGV4IDQwMGE3NDdjZGMuLjljNWI4YWJlZjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29sbGF0ZS5saW51eC51dGY4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvbGxhdGUubGludXgudXRmOC5vdXQKQEAgLTExMTcsMjQgKzExMTcs MTEgQEAgc2VsZWN0IHRleHRyYW5nZV9lbl91cygnQScsJ1onKSBAPiAnYic6OnRleHQ7CiAK IGRyb3AgdHlwZSB0ZXh0cmFuZ2VfYzsKIGRyb3AgdHlwZSB0ZXh0cmFuZ2VfZW5fdXM7Cist LSBub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMKKy0tIChub3Qgc3VwcG9ydGVkIHdpdGgg bGliYyBwcm92aWRlcikKK0NSRUFURSBDT0xMQVRJT04gY3Rlc3RfZGV0IChsb2NhbGUgPSAn ZW5fVVMudXRmOCcsIGRldGVybWluaXN0aWMgPSB0cnVlKTsKK0VSUk9SOiAgbm9uZGV0ZXJt aW5pc3RpYyBjb2xsYXRpb25zIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGlzIHByb3ZpZGVyCitD UkVBVEUgQ09MTEFUSU9OIGN0ZXN0X25vbmRldCAobG9jYWxlID0gJ2VuX1VTLnV0ZjgnLCBk ZXRlcm1pbmlzdGljID0gZmFsc2UpOwogLS0gY2xlYW51cAorU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgVE8gJ3dhcm5pbmcnOwogRFJPUCBTQ0hFTUEgY29sbGF0ZV90ZXN0cyBDQVNDQURF OwotTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAxOCBvdGhlciBvYmplY3RzCi1ERVRBSUw6 ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdDEKLWRyb3AgY2FzY2FkZXMg dG8gdGFibGUgY29sbGF0ZV90ZXN0X2xpa2UKLWRyb3AgY2FzY2FkZXMgdG8gdGFibGUgY29s bGF0ZV90ZXN0MgotZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjb2xsYXRlX3Rlc3QzCi1kcm9w IGNhc2NhZGVzIHRvIHR5cGUgdGVzdGRvbWFpbl9zdgotZHJvcCBjYXNjYWRlcyB0byB0YWJs ZSBjb2xsYXRlX3Rlc3Q0Ci1kcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdDUK LWRyb3AgY2FzY2FkZXMgdG8gdGFibGUgY29sbGF0ZV90ZXN0MTAKLWRyb3AgY2FzY2FkZXMg dG8gdGFibGUgY29sbGF0ZV90ZXN0NgotZHJvcCBjYXNjYWRlcyB0byB2aWV3IGNvbGx2aWV3 MQotZHJvcCBjYXNjYWRlcyB0byB2aWV3IGNvbGx2aWV3MgotZHJvcCBjYXNjYWRlcyB0byB2 aWV3IGNvbGx2aWV3MwotZHJvcCBjYXNjYWRlcyB0byB0eXBlIHRlc3Rkb21haW4KLWRyb3Ag Y2FzY2FkZXMgdG8gZnVuY3Rpb24gbXlsdCh0ZXh0LHRleHQpCi1kcm9wIGNhc2NhZGVzIHRv IGZ1bmN0aW9uIG15bHRfbm9uaW5saW5lKHRleHQsdGV4dCkKLWRyb3AgY2FzY2FkZXMgdG8g ZnVuY3Rpb24gbXlsdF9wbHBnc3FsKHRleHQsdGV4dCkKLWRyb3AgY2FzY2FkZXMgdG8gZnVu Y3Rpb24gbXlsdDIodGV4dCx0ZXh0KQotZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBkdXAo YW55ZWxlbWVudCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUu aWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5z cWwKaW5kZXggZWYzOTQ0NWIzMC4uOWI2MmQ2YjFhZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKQEAgLTQyNSw3ICs0MjUsMTE2IEBAIENSRUFU RSBJTkRFWCBjb2xsYXRlX2RlcF90ZXN0NGkgT04gY29sbGF0ZV9kZXBfdGVzdDR0IChiIENP TExBVEUgdGVzdDApOwogZHJvcCB0eXBlIHRleHRyYW5nZV9lbl91czsKIAogCistLSBub25k ZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMKKworQ1JFQVRFIENPTExBVElPTiBjdGVzdF9kZXQg KHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAndW5kJywgZGV0ZXJtaW5pc3RpYyA9IHRydWUp OworQ1JFQVRFIENPTExBVElPTiBjdGVzdF9ub25kZXQgKHByb3ZpZGVyID0gaWN1LCBsb2Nh bGUgPSAndW5kJywgZGV0ZXJtaW5pc3RpYyA9IGZhbHNlKTsKKworQ1JFQVRFIFRBQkxFIHRl c3Q2IChhIGludCwgYiB0ZXh0KTsKKy0tIHNhbWUgc3RyaW5nIGluIGRpZmZlcmVudCBub3Jt YWwgZm9ybXMKK0lOU0VSVCBJTlRPIHRlc3Q2IFZBTFVFUyAoMSwgVSYnXDAwRTRiYycpOwor SU5TRVJUIElOVE8gdGVzdDYgVkFMVUVTICgyLCBVJidcMDA2MVwwMzA4YmMnKTsKK1NFTEVD VCAqIEZST00gdGVzdDY7CitTRUxFQ1QgKiBGUk9NIHRlc3Q2IFdIRVJFIGIgPSAnw6RiYycg Q09MTEFURSBjdGVzdF9kZXQ7CitTRUxFQ1QgKiBGUk9NIHRlc3Q2IFdIRVJFIGIgPSAnw6Ri YycgQ09MTEFURSBjdGVzdF9ub25kZXQ7CisKK0NSRUFURSBDT0xMQVRJT04gY2FzZV9zZW5z aXRpdmUgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAndW5kJyk7CitDUkVBVEUgQ09MTEFU SU9OIGNhc2VfaW5zZW5zaXRpdmUgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAndW5kLXUt a3MtbGV2ZWwyJywgZGV0ZXJtaW5pc3RpYyA9IGZhbHNlKTsKKworU0VMRUNUICdhYmMnIDw9 ICdBQkMnIENPTExBVEUgY2FzZV9zZW5zaXRpdmUsICdhYmMnID49ICdBQkMnIENPTExBVEUg Y2FzZV9zZW5zaXRpdmU7CitTRUxFQ1QgJ2FiYycgPD0gJ0FCQycgQ09MTEFURSBjYXNlX2lu c2Vuc2l0aXZlLCAnYWJjJyA+PSAnQUJDJyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmU7CisK K0NSRUFURSBUQUJMRSB0ZXN0MWNzICh4IHRleHQgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSk7 CitDUkVBVEUgVEFCTEUgdGVzdDJjcyAoeCB0ZXh0IENPTExBVEUgY2FzZV9zZW5zaXRpdmUp OworQ1JFQVRFIFRBQkxFIHRlc3QzY3MgKHggdGV4dCBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZl KTsKK0lOU0VSVCBJTlRPIHRlc3QxY3MgVkFMVUVTICgnYWJjJyksICgnZGVmJyksICgnZ2hp Jyk7CitJTlNFUlQgSU5UTyB0ZXN0MmNzIFZBTFVFUyAoJ0FCQycpLCAoJ2doaScpOworSU5T RVJUIElOVE8gdGVzdDNjcyBWQUxVRVMgKCdhYmMnKSwgKCdBQkMnKSwgKCdkZWYnKSwgKCdn aGknKTsKKworU0VMRUNUIHggRlJPTSB0ZXN0MWNzIFVOSU9OIFNFTEVDVCB4IEZST00gdGVz dDJjczsKK1NFTEVDVCB4IEZST00gdGVzdDJjcyBVTklPTiBTRUxFQ1QgeCBGUk9NIHRlc3Qx Y3M7CitTRUxFQ1QgeCBGUk9NIHRlc3QxY3MgSU5URVJTRUNUIFNFTEVDVCB4IEZST00gdGVz dDJjczsKK1NFTEVDVCB4IEZST00gdGVzdDJjcyBJTlRFUlNFQ1QgU0VMRUNUIHggRlJPTSB0 ZXN0MWNzOworU0VMRUNUIHggRlJPTSB0ZXN0MWNzIEVYQ0VQVCBTRUxFQ1QgeCBGUk9NIHRl c3QyY3M7CitTRUxFQ1QgeCBGUk9NIHRlc3QyY3MgRVhDRVBUIFNFTEVDVCB4IEZST00gdGVz dDFjczsKK1NFTEVDVCB4LCBjb3VudCgqKSBGUk9NIHRlc3QzY3MgR1JPVVAgQlkgeCBPUkRF UiBCWSB4OworU0VMRUNUIHgsIHJvd19udW1iZXIoKSBPVkVSIChPUkRFUiBCWSB4KSwgcmFu aygpIE9WRVIgKE9SREVSIEJZIHgpIEZST00gdGVzdDNjcyBPUkRFUiBCWSB4OworCitDUkVB VEUgVEFCTEUgdGVzdDFjaSAoeCB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSk7CitD UkVBVEUgVEFCTEUgdGVzdDJjaSAoeCB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSk7 CitDUkVBVEUgVEFCTEUgdGVzdDNjaSAoeCB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2 ZSk7CitJTlNFUlQgSU5UTyB0ZXN0MWNpIFZBTFVFUyAoJ2FiYycpLCAoJ2RlZicpLCAoJ2do aScpOworSU5TRVJUIElOVE8gdGVzdDJjaSBWQUxVRVMgKCdBQkMnKSwgKCdnaGknKTsKK0lO U0VSVCBJTlRPIHRlc3QzY2kgVkFMVUVTICgnYWJjJyksICgnQUJDJyksICgnZGVmJyksICgn Z2hpJyk7CisKK1NFTEVDVCB4IEZST00gdGVzdDFjaSBVTklPTiBTRUxFQ1QgeCBGUk9NIHRl c3QyY2k7CitTRUxFQ1QgeCBGUk9NIHRlc3QyY2kgVU5JT04gU0VMRUNUIHggRlJPTSB0ZXN0 MWNpOworU0VMRUNUIHggRlJPTSB0ZXN0MWNpIElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRl c3QyY2k7CitTRUxFQ1QgeCBGUk9NIHRlc3QyY2kgSU5URVJTRUNUIFNFTEVDVCB4IEZST00g dGVzdDFjaTsKK1NFTEVDVCB4IEZST00gdGVzdDFjaSBFWENFUFQgU0VMRUNUIHggRlJPTSB0 ZXN0MmNpOworU0VMRUNUIHggRlJPTSB0ZXN0MmNpIEVYQ0VQVCBTRUxFQ1QgeCBGUk9NIHRl c3QxY2k7CitTRUxFQ1QgeCwgY291bnQoKikgRlJPTSB0ZXN0M2NpIEdST1VQIEJZIHggT1JE RVIgQlkgeDsKK1NFTEVDVCB4LCByb3dfbnVtYmVyKCkgT1ZFUiAoT1JERVIgQlkgeCksIHJh bmsoKSBPVkVSIChPUkRFUiBCWSB4KSBGUk9NIHRlc3QzY2kgT1JERVIgQlkgeDsKKworQ1JF QVRFIENPTExBVElPTiBpZ25vcmVfYWNjZW50cyAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9 ICd1bmQtdS1rcy1sZXZlbDEta2MtdHJ1ZScsIGRldGVybWluaXN0aWMgPSBmYWxzZSk7CisK K0NSRUFURSBUQUJMRSB0ZXN0NCAoYSBpbnQsIGIgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0 NCBWQUxVRVMgKDEsICdjb3RlJyksICgyLCAnY8O0dGUnKSwgKDMsICdjb3TDqScpLCAoNCwg J2PDtHTDqScpOworU0VMRUNUICogRlJPTSB0ZXN0NCBXSEVSRSBiID0gJ2NvdGUnOworU0VM RUNUICogRlJPTSB0ZXN0NCBXSEVSRSBiID0gJ2NvdGUnIENPTExBVEUgaWdub3JlX2FjY2Vu dHM7CitTRUxFQ1QgKiBGUk9NIHRlc3Q0IFdIRVJFIGIgPSAnQ290ZScgQ09MTEFURSBpZ25v cmVfYWNjZW50czsgIC0tIHN0aWxsIGNhc2Utc2Vuc2l0aXZlCitTRUxFQ1QgKiBGUk9NIHRl c3Q0IFdIRVJFIGIgPSAnQ290ZScgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOworCistLSBm b3JlaWduIGtleXMgKHNob3VsZCB1c2UgY29sbGF0aW9uIG9mIHByaW1hcnkga2V5KQorCist LSBQSyBpcyBjYXNlLXNlbnNpdGl2ZSwgRksgaXMgY2FzZS1pbnNlbnNpdGl2ZQorQ1JFQVRF IFRBQkxFIHRlc3QxMHBrICh4IHRleHQgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSBQUklNQVJZ IEtFWSk7CitJTlNFUlQgSU5UTyB0ZXN0MTBwayBWQUxVRVMgKCdhYmMnKSwgKCdkZWYnKSwg KCdnaGknKTsKK0NSRUFURSBUQUJMRSB0ZXN0MTBmayAoeCB0ZXh0IENPTExBVEUgY2FzZV9p bnNlbnNpdGl2ZSBSRUZFUkVOQ0VTIHRlc3QxMHBrICh4KSBPTiBERUxFVEUgQ0FTQ0FERSk7 CitJTlNFUlQgSU5UTyB0ZXN0MTBmayBWQUxVRVMgKCdhYmMnKTsgIC0tIG9rCitJTlNFUlQg SU5UTyB0ZXN0MTBmayBWQUxVRVMgKCdBQkMnKTsgIC0tIGVycm9yCitJTlNFUlQgSU5UTyB0 ZXN0MTBmayBWQUxVRVMgKCd4eXonKTsgIC0tIGVycm9yCitTRUxFQ1QgKiBGUk9NIHRlc3Qx MHBrOworU0VMRUNUICogRlJPTSB0ZXN0MTBmazsKK0RFTEVURSBGUk9NIHRlc3QxMHBrIFdI RVJFIHggPSAnYWJjJzsKK1NFTEVDVCAqIEZST00gdGVzdDEwcGs7CitTRUxFQ1QgKiBGUk9N IHRlc3QxMGZrOworCistLSBQSyBpcyBjYXNlLWluc2Vuc2l0aXZlLCBGSyBpcyBjYXNlLXNl bnNpdGl2ZQorQ1JFQVRFIFRBQkxFIHRlc3QxMXBrICh4IHRleHQgQ09MTEFURSBjYXNlX2lu c2Vuc2l0aXZlIFBSSU1BUlkgS0VZKTsKK0lOU0VSVCBJTlRPIHRlc3QxMXBrIFZBTFVFUyAo J2FiYycpLCAoJ2RlZicpLCAoJ2doaScpOworQ1JFQVRFIFRBQkxFIHRlc3QxMWZrICh4IHRl eHQgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSBSRUZFUkVOQ0VTIHRlc3QxMXBrICh4KSBPTiBE RUxFVEUgQ0FTQ0FERSk7CitJTlNFUlQgSU5UTyB0ZXN0MTFmayBWQUxVRVMgKCdhYmMnKTsg IC0tIG9rCitJTlNFUlQgSU5UTyB0ZXN0MTFmayBWQUxVRVMgKCdBQkMnKTsgIC0tIG9rCitJ TlNFUlQgSU5UTyB0ZXN0MTFmayBWQUxVRVMgKCd4eXonKTsgIC0tIGVycm9yCitTRUxFQ1Qg KiBGUk9NIHRlc3QxMXBrOworU0VMRUNUICogRlJPTSB0ZXN0MTFmazsKK0RFTEVURSBGUk9N IHRlc3QxMXBrIFdIRVJFIHggPSAnYWJjJzsKK1NFTEVDVCAqIEZST00gdGVzdDExcGs7CitT RUxFQ1QgKiBGUk9NIHRlc3QxMWZrOworCistLSBwYXJ0aXRpb25pbmcKK0NSRUFURSBUQUJM RSB0ZXN0MjAgKGEgaW50LCBiIHRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlKSBQQVJU SVRJT04gQlkgTElTVCAoYik7CitDUkVBVEUgVEFCTEUgdGVzdDIwXzEgUEFSVElUSU9OIE9G IHRlc3QyMCBGT1IgVkFMVUVTIElOICgnYWJjJyk7CitJTlNFUlQgSU5UTyB0ZXN0MjAgVkFM VUVTICgxLCAnYWJjJyk7CitJTlNFUlQgSU5UTyB0ZXN0MjAgVkFMVUVTICgyLCAnQUJDJyk7 CitTRUxFQ1QgKiBGUk9NIHRlc3QyMF8xOworCitDUkVBVEUgVEFCTEUgdGVzdDIxIChhIGlu dCwgYiB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIFJBTkdF IChiKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjFfMSBQQVJUSVRJT04gT0YgdGVzdDIxIEZPUiBW QUxVRVMgRlJPTSAoJ0FCQycpIFRPICgnREVGJyk7CitJTlNFUlQgSU5UTyB0ZXN0MjEgVkFM VUVTICgxLCAnYWJjJyk7CitJTlNFUlQgSU5UTyB0ZXN0MjEgVkFMVUVTICgyLCAnQUJDJyk7 CitTRUxFQ1QgKiBGUk9NIHRlc3QyMV8xOworCitDUkVBVEUgVEFCTEUgdGVzdDIyIChhIGlu dCwgYiB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIEhBU0gg KGIpOworQ1JFQVRFIFRBQkxFIHRlc3QyMl8xIFBBUlRJVElPTiBPRiB0ZXN0MjIgRk9SIFZB TFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0lOU0VSVCBJTlRPIHRlc3Qy MiBWQUxVRVMgKDEsICdhYmMnKTsKK0lOU0VSVCBJTlRPIHRlc3QyMiBWQUxVRVMgKDIsICdB QkMnKTsKK1NFTEVDVCAqIEZST00gdGVzdDIyXzE7CisKKwogLS0gY2xlYW51cAorU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgVE8gJ3dhcm5pbmcnOwogRFJPUCBTQ0hFTUEgY29sbGF0ZV90 ZXN0cyBDQVNDQURFOwogUkVTRVQgc2VhcmNoX3BhdGg7CiAKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUubGludXgudXRmOC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb2xsYXRlLmxpbnV4LnV0Zjguc3FsCmluZGV4IGI1MTE2MmUzYTEuLjNhM2Vj ZTljNjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUubGludXgu dXRmOC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5saW51eC51dGY4 LnNxbApAQCAtNDI4LDUgKzQyOCwxMyBAQCBDUkVBVEUgSU5ERVggY29sbGF0ZV9kZXBfdGVz dDRpIE9OIGNvbGxhdGVfZGVwX3Rlc3Q0dCAoYiBDT0xMQVRFIHRlc3QwKTsKIGRyb3AgdHlw ZSB0ZXh0cmFuZ2VfZW5fdXM7CiAKIAorLS0gbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25z CistLSAobm90IHN1cHBvcnRlZCB3aXRoIGxpYmMgcHJvdmlkZXIpCisKK0NSRUFURSBDT0xM QVRJT04gY3Rlc3RfZGV0IChsb2NhbGUgPSAnZW5fVVMudXRmOCcsIGRldGVybWluaXN0aWMg PSB0cnVlKTsKK0NSRUFURSBDT0xMQVRJT04gY3Rlc3Rfbm9uZGV0IChsb2NhbGUgPSAnZW5f VVMudXRmOCcsIGRldGVybWluaXN0aWMgPSBmYWxzZSk7CisKKwogLS0gY2xlYW51cAorU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgVE8gJ3dhcm5pbmcnOwogRFJPUCBTQ0hFTUEgY29sbGF0 ZV90ZXN0cyBDQVNDQURFOwoKYmFzZS1jb21taXQ6IGFlNDQ3MmM2MTkzNDFmZjA1MTcyNTRk Mzk1ZDc0Nzk2Mjc3NjIyZTYKLS0gCjIuMjAuMQoK --------------8DD614E96130E890453CE3BF--