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 1gZN33-0002LD-6L for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Dec 2018 21:37:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gZN30-0005Au-6j for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Dec 2018 21:37:02 +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 1gZN2z-00055F-OT for pgsql-hackers@lists.postgresql.org; Tue, 18 Dec 2018 21:37:01 +0000 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gZN2v-00063P-2V for pgsql-hackers@postgresql.org; Tue, 18 Dec 2018 21:37:00 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id CD6C912EC for ; Tue, 18 Dec 2018 16:36:53 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Tue, 18 Dec 2018 16:36:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=TyXbzALlhT3aKJyT+HqRyeG7b1u5t FjcA/qng7bJdTM=; b=vEZoH1jMVACz1zMYRmKH8nbWNWjUecXZKhx6/KOEGmXs4 VEf4v2zRhjOgpoeSfvJN57G9HqDgGsIzIJqiElnLB7dShJYCM4A8s+MAvEK3akux 1cI9yGmYyFx+TKOP3Sbw9sXIewz38o165h6zTjx6qqCK8YW4cPtYFDriWf2RcK1a vTJMfIrPtqZ5osnrPDoHKkABThOHs9T9PffAv+95uULZU//yo5BpBJjUNOyK2amQ FUXrClQxWxNdhZjHcYYHyvv5KKC/BkV/sMBcMyfMZFg8UcY9zMVfKsicsWRtmRnF wT1/aeTHeNDc/iK9A5Ewn6Ofsx6hOfj6LBGW5rLgQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedtkedrudeikedguddtudcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfhuthenuceurghilhhouhhtmecu fedttdenucenucfjughrpefhuffvohfkffgfgggtsehmtderredtfeejnecuhfhrohhmpe frvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthes vdhnughquhgrughrrghnthdrtghomheqnecuffhomhgrihhnpedvnhguqhhurggurhgrnh htrdgtohhmnecukfhppeelfedrvdegfedrudduledrvdefleenucfrrghrrghmpehmrghi lhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrd gtohhmnecuvehluhhsthgvrhfuihiivgeptd 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 EBBE5E461F for ; Tue, 18 Dec 2018 16:36:51 -0500 (EST) From: Peter Eisentraut Subject: insensitive collations 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= To: pgsql-hackers Organization: 2ndQuadrant Message-ID: <1ccc668f-4cbc-0bef-af67-450b47cdfee7@2ndquadrant.com> Date: Tue, 18 Dec 2018 22:36:51 +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 Content-Type: multipart/mixed; boundary="------------AB242FB894BC9F5057C79E8E" 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. --------------AB242FB894BC9F5057C79E8E Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit With various patches and discussions around collations going on, I figured I'd send in my in-progress patch for insensitive collations. This adds a flag "insensitive" to collations. Such a collation disables various optimizations that assume that strings are equal only if they are byte-wise equal. That then allows use cases such as case-insensitive or accent-insensitive comparisons or handling of strings with different Unicode normal forms. So this doesn't actually make the collation case-insensitive or anything, it just allows a library-provided collation that is, say, case-insensitive to actually work that way. So maybe "insensitive" isn't the right name for this flag, but we can think about that. The jobs of this patch, aside from some DDL extensions, are to track collation assignment in plan types whether they have so far been ignored, and then make the various collation-aware functions take the insensitive flag into account. In comparison functions this just means skipping past the memcmp() optimizations. In hashing functions, this means converting the string to a sort key (think strxfrm()) before hashing. Various pieces are incomplete, but the idea should be clear from this. I have only implemented the ICU implementation in hashtext(); the libc provider branch needs to be added (or maybe we won't want to). All the changes around the "name" type haven't been taken into account. Foreign key support (see ri_GenerateQualCollation()) needs to be addressed. More tests for all the different plans need to be added. But in principle it works quite well, as you can see in the tests added so far. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------AB242FB894BC9F5057C79E8E Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0001-Insensitive-collations.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0001-Insensitive-collations.patch" RnJvbSBkNjNkZjgxNzBlYzhlOWFmZWRjYjg5NGY4N2Y3M2E0MDlhYTI3ZTZkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlcl9lQGdteC5u ZXQ+CkRhdGU6IFR1ZSwgMTggRGVjIDIwMTggMjI6MTc6NTMgKzAxMDAKU3ViamVjdDogW1BB VENIIHYxXSBJbnNlbnNpdGl2ZSBjb2xsYXRpb25zCgpUaGlzIGFkZHMgYSBmbGFnICJpbnNl bnNpdGl2ZSIgdG8gY29sbGF0aW9ucy4gIFN1Y2ggYSBjb2xsYXRpb24KZGlzYWJsZXMgdmFy aW91cyBvcHRpbWl6YXRpb25zIHRoYXQgYXNzdW1lIHRoYXQgc3RyaW5ncyBhcmUgZXF1YWwg b25seQppZiB0aGV5IGFyZSBieXRlLXdpc2UgZXF1YWwuICBUaGF0IHRoZW4gYWxsb3dzIHVz ZSBjYXNlcyBzdWNoIGFzCmNhc2UtaW5zZW5zaXRpdmUgb3IgYWNjZW50LWluc2Vuc2l0aXZl IGNvbXBhcmlzb25zIG9yIGhhbmRsaW5nIG9mCnN0cmluZ3Mgd2l0aCBkaWZmZXJlbnQgVW5p Y29kZSBub3JtYWwgZm9ybXMuCi0tLQogY29udHJpYi9ibG9vbS9ibG9vbS5oICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIGNvbnRyaWIvYmxvb20vYmx1dGlscy5jICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMyArLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwg ICAgICAgICAgICAgICAgICAgIHwgICA3ICsKIGRvYy9zcmMvc2dtbC9jaGFyc2V0LnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf Y29sbGF0aW9uLnNnbWwgICAgICAgIHwgIDE4ICsrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaGZ1bmMuYyAgICAgICAgICAgIHwgIDQ1ICsrKysrKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb2xsYXRpb24uYyAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbGxhdGlvbmNtZHMuYyAgICAgICAgICB8ICAxNSArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYyAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQWdnLmMgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgICAgICAgICAgICAgICB8ICAxNCArLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgICAgICAgICAgIHwgICA1ICsKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnBsYW4uYyAgICAgICAgICAgIHwgICA4ICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgICAgfCAgIDIg Kwogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICA3 ICsKIHNyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAy OSArKysrCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyAgICAgICAgICAgICAgICAg fCAgIDcgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAgICAg IHwgIDU0ICsrKysrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3RsaXN0LmMgICAg ICAgICAgICB8ICAyNSArKysrCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5jICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1 bmUuYyAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVu Y3MuYyAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvb3JkZXJl ZHNldGFnZ3MuYyAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xv Y2FsZS5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJj aGFyLmMgICAgICAgICAgICAgICB8ICAxNCArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Zh cmxlbmEuYyAgICAgICAgICAgICAgIHwgIDQ1ICsrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvY2F0Y2FjaGUuYyAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmluL2luaXRkYi9p bml0ZGIuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfY29sbGF0aW9uLmggICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaGFzaGpvaW4uaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L2V4ZWN1dG9yL25vZGVIYXNoLmggICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaCAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9p bmNsdWRlL29wdGltaXplci90bGlzdC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmggICAgICAgICAgICAgICAgIHwgICAxICsKIC4u Li9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0ICAgICB8IDEzOCArKysr KysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjgu c3FsICAgICB8ICAzOSArKysrKwogNDYgZmlsZXMgY2hhbmdlZCwgNTE2IGluc2VydGlvbnMo KyksIDM5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vYmxvb20u aCBiL2NvbnRyaWIvYmxvb20vYmxvb20uaAppbmRleCAzOTczYWM3NWU4Li4wYjA1Zjk3OTZk IDEwMDY0NAotLS0gYS9jb250cmliL2Jsb29tL2Jsb29tLmgKKysrIGIvY29udHJpYi9ibG9v bS9ibG9vbS5oCkBAIC0xMzcsNiArMTM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQmxvb21NZXRh UGFnZURhdGEKIHR5cGVkZWYgc3RydWN0IEJsb29tU3RhdGUKIHsKIAlGbWdySW5mbwloYXNo Rm5bSU5ERVhfTUFYX0tFWVNdOworCU9pZAkJCWNvbGxhdGlvbnNbSU5ERVhfTUFYX0tFWVNd OwogCUJsb29tT3B0aW9ucyBvcHRzOwkJCS8qIGNvcHkgb2Ygb3B0aW9ucyBvbiBpbmRleCdz IG1ldGFwYWdlICovCiAJaW50MzIJCW5Db2x1bW5zOwogCmRpZmYgLS1naXQgYS9jb250cmli L2Jsb29tL2JsdXRpbHMuYyBiL2NvbnRyaWIvYmxvb20vYmx1dGlscy5jCmluZGV4IDZiMmI5 ZTM3NDIuLjdiZDBkMGFhMmYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmx1dGlscy5j CisrKyBiL2NvbnRyaWIvYmxvb20vYmx1dGlscy5jCkBAIC0xNjMsNiArMTYzLDcgQEAgaW5p dEJsb29tU3RhdGUoQmxvb21TdGF0ZSAqc3RhdGUsIFJlbGF0aW9uIGluZGV4KQogCQlmbWdy X2luZm9fY29weSgmKHN0YXRlLT5oYXNoRm5baV0pLAogCQkJCQkgICBpbmRleF9nZXRwcm9j aW5mbyhpbmRleCwgaSArIDEsIEJMT09NX0hBU0hfUFJPQyksCiAJCQkJCSAgIEN1cnJlbnRN ZW1vcnlDb250ZXh0KTsKKwkJc3RhdGUtPmNvbGxhdGlvbnNbaV0gPSBpbmRleC0+cmRfaW5k Y29sbGF0aW9uW2ldOwogCX0KIAogCS8qIEluaXRpYWxpemUgYW1jYWNoZSBpZiBuZWVkZWQg d2l0aCBvcHRpb25zIGZyb20gbWV0YXBhZ2UgKi8KQEAgLTI2Nyw3ICsyNjgsNyBAQCBzaWdu VmFsdWUoQmxvb21TdGF0ZSAqc3RhdGUsIEJsb29tU2lnbmF0dXJlV29yZCAqc2lnbiwgRGF0 dW0gdmFsdWUsIGludCBhdHRubykKIAkgKiBkaWZmZXJlbnQgY29sdW1ucyB3aWxsIGJlIG1h cHBlZCBpbnRvIGRpZmZlcmVudCBiaXRzIGJlY2F1c2Ugb2Ygc3RlcAogCSAqIGFib3ZlCiAJ ICovCi0JaGFzaFZhbCA9IERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMSgmc3RhdGUtPmhh c2hGblthdHRub10sIHZhbHVlKSk7CisJaGFzaFZhbCA9IERhdHVtR2V0SW50MzIoRnVuY3Rp b25DYWxsMUNvbGwoJnN0YXRlLT5oYXNoRm5bYXR0bm9dLCBzdGF0ZS0+Y29sbGF0aW9uc1th dHRub10sIHZhbHVlKSk7CiAJbXlTcmFuZChoYXNoVmFsIF4gbXlSYW5kKCkpOwogCiAJZm9y IChqID0gMDsgaiA8IHN0YXRlLT5vcHRzLmJpdFNpemVbYXR0bm9dOyBqKyspCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCmluZGV4IDhkMGNhYjVkYTYuLjA5NTljMDllYTggMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CkBAIC0yMDc3LDYgKzIwNzcsMTMgQEAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbGxhdGlv bjwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAgICAgICAgZGVmYXVsdCwgPGxpdGVy YWw+YzwvbGl0ZXJhbD4gPSBsaWJjLCA8bGl0ZXJhbD5pPC9saXRlcmFsPiA9IGljdTwvZW50 cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZp ZWxkPmNvbGxpc2luc2Vuc2l0aXZlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVu dHJ5Pjx0eXBlPmJvb2w8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5Pgor ICAgICAgPGVudHJ5PklzIHRoZSBjb2xsYXRpb24gaW5zZW5zaXRpdmU/PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y29s bGVuY29kaW5nPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgogICAgICAgPGVudHJ5Pjx0eXBlPmlu dDQ8L3R5cGU+PC9lbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jaGFyc2V0LnNn bWwgYi9kb2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sCmluZGV4IGE2MTQzZWY4YTcuLjYxMDhh ZjdlNTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jaGFyc2V0LnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NoYXJzZXQuc2dtbApAQCAtODQ3LDExICs4NDcsMTIgQEAgPHRpdGxlPklD VSBjb2xsYXRpb25zPC90aXRsZT4KIAogICAgPHBhcmE+CiAgICAgTm90ZSB0aGF0IHdoaWxl IHRoaXMgc3lzdGVtIGFsbG93cyBjcmVhdGluZyBjb2xsYXRpb25zIHRoYXQgPHF1b3RlPmln bm9yZQotICAgIGNhc2U8L3F1b3RlPiBvciA8cXVvdGU+aWdub3JlIGFjY2VudHM8L3F1b3Rl PiBvciBzaW1pbGFyICh1c2luZwotICAgIHRoZSA8bGl0ZXJhbD5rczwvbGl0ZXJhbD4ga2V5 KSwgUG9zdGdyZVNRTCBkb2VzIG5vdCBhdCB0aGUgbW9tZW50IGFsbG93Ci0gICAgc3VjaCBj b2xsYXRpb25zIHRvIGFjdCBpbiBhIHRydWx5IGNhc2UtIG9yIGFjY2VudC1pbnNlbnNpdGl2 ZSBtYW5uZXIuICBBbnkKLSAgICBzdHJpbmdzIHRoYXQgY29tcGFyZSBlcXVhbCBhY2NvcmRp bmcgdG8gdGhlIGNvbGxhdGlvbiBidXQgYXJlIG5vdAotICAgIGJ5dGUtd2lzZSBlcXVhbCB3 aWxsIGJlIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlaXIgYnl0ZSB2YWx1ZXMuCisgICAgY2Fz ZTwvcXVvdGU+IG9yIDxxdW90ZT5pZ25vcmUgYWNjZW50czwvcXVvdGU+IG9yIHNpbWlsYXIg KHVzaW5nIHRoZQorICAgIDxsaXRlcmFsPmtzPC9saXRlcmFsPiBrZXkpLCBpbiBvcmRlciBm b3Igc3VjaCBzdWNoIGNvbGxhdGlvbnMgdG8gYWN0IGluIGEKKyAgICB0cnVseSBjYXNlLSBv ciBhY2NlbnQtaW5zZW5zaXRpdmUgbWFubmVyLCB0aGV5IGFsc28gbmVlZCB0byBiZSBkZWNs YXJlZCBhcworICAgIDxsaXRlcmFsPklOU0VOU0lUSVZFPC9saXRlcmFsPiBpbiA8Y29tbWFu ZD5DUkVBVEUgQ09MTEFUSU9OPC9jb21tYW5kPi4KKyAgICBPdGhlcndpc2UsIGFueSBzdHJp bmdzIHRoYXQgY29tcGFyZSBlcXVhbCBhY2NvcmRpbmcgdG8gdGhlIGNvbGxhdGlvbiBidXQK KyAgICBhcmUgbm90IGJ5dGUtd2lzZSBlcXVhbCB3aWxsIGJlIHNvcnRlZCBhY2NvcmRpbmcg dG8gdGhlaXIgYnl0ZSB2YWx1ZXMuCiAgICA8L3BhcmE+CiAKICAgIDxub3RlPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9jb2xsYXRpb24uc2dtbAppbmRleCAwMzg3OTdmY2UxLi40YmE1 OTcxOTNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9jb2xsYXRpb24u c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9jb2xsYXRpb24uc2dtbApAQCAt MjMsNiArMjMsNyBAQAogICAgIFsgTENfQ09MTEFURSA9IDxyZXBsYWNlYWJsZT5sY19jb2xs YXRlPC9yZXBsYWNlYWJsZT4sIF0KICAgICBbIExDX0NUWVBFID0gPHJlcGxhY2VhYmxlPmxj X2N0eXBlPC9yZXBsYWNlYWJsZT4sIF0KICAgICBbIFBST1ZJREVSID0gPHJlcGxhY2VhYmxl PnByb3ZpZGVyPC9yZXBsYWNlYWJsZT4sIF0KKyAgICBbIElOU0VOU0lUSVZFLCBdCiAgICAg WyBWRVJTSU9OID0gPHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPiBdCiApCiBD UkVBVEUgQ09MTEFUSU9OIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZT5uYW1lPC9y ZXBsYWNlYWJsZT4gRlJPTSA8cmVwbGFjZWFibGU+ZXhpc3RpbmdfY29sbGF0aW9uPC9yZXBs YWNlYWJsZT4KQEAgLTEyNCw2ICsxMjUsMjMgQEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxl PgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgPHRlcm0+PGxpdGVyYWw+SU5TRU5TSVRJVkU8L2xpdGVyYWw+PC90 ZXJtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIE1ha2VzIHRo ZSBjb2xsYXRpb24gaW5zZW5zaXRpdmUuICBBbiBpbnNlbnNpdGl2ZSBjb2xsYXRpb24gYWxs b3dzCisgICAgICAgc3RyaW5ncyB0aGF0IGFyZSBub3QgYnl0ZS13aXNlIGVxdWFsIHRvIGJl IGNvbnNpZGVyZWQgbG9naWNhbGx5IGVxdWFsCisgICAgICAgbm9uZXRoZWxlc3MuICBPdGhl cndpc2UsIFBvc3RncmVTUUwgYnJlYWtzIHRpZXMgdXNpbmcgYSBieXRlLXdpc2UKKyAgICAg ICBjb21wYXJpc29uLiAgTm90ZSB0aGF0IGRlY2xhcmluZyBhIGNvbGxhdGlvbiBpbnNlbnNp dGl2ZSBkb2VzIG5vdCBieQorICAgICAgIGl0c2VsZiBtYWtlIHRoZSBjb2xsYXRpb24gYWN0 dWFsbHkgYWN0LCBzYXksIGNhc2UtIG9yCisgICAgICAgYWNjZW50LWluc2Vuc2l0aXZlLiAg WW91IG5lZWQgdG8gY2hvb3NlIGFuIGFwcHJvcHJpYXRlCisgICAgICAgPGxpdGVyYWw+TENf Q09MTEFURTwvbGl0ZXJhbD4gc2V0dGluZyA8ZW1waGFzaXM+YW5kPC9lbXBoYXNpcz4gZGVj bGFyZQorICAgICAgIGl0IGluc2Vuc2l0aXZlIGhlcmUuCisgICAgICA8L3BhcmE+CisgICAg IDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICA8dmFybGlzdGVudHJ5 PgogICAgICA8dGVybT48cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+PC90ZXJt PgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoZnVuYy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGZ1bmMuYwppbmRleCBhMDA2MGE2MzNkLi42 ZTE1Y2M1YzRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoZnVu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hmdW5jLmMKQEAgLTI3LDcg KzI3LDkgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2hh c2guaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbG9jYWxlLmgiCiAKIC8qCiAg KiBEYXRhdHlwZS1zcGVjaWZpYyBoYXNoIGZ1bmN0aW9ucy4KQEAgLTI0Miw4ICsyNDQsNDQg QEAgRGF0dW0KIGhhc2h0ZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJdGV4dAkgICAqa2V5 ID0gUEdfR0VUQVJHX1RFWFRfUFAoMCk7CisJT2lkCQkJY29sbGlkID0gUEdfR0VUX0NPTExB VElPTigpOwogCURhdHVtCQlyZXN1bHQ7CiAKKwlpZiAoIWNvbGxpZCkKKwkJZWxvZyhFUlJP UiwgIkZJWE1FOiBoYXNodGV4dCgpIGNhbGxlZCB3aXRob3V0IGNvbGxhdGlvbiIpOworCisJ aWYgKGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJeworCQlwZ19sb2NhbGVf dAlteWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOworCisJ CWlmIChteWxvY2FsZS0+aW5zZW5zaXRpdmUpCisJCXsKKwkJCWlmIChteWxvY2FsZS0+cHJv dmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJCXsKKwkJCQlpbnQzMl90CQl1bGVuID0g LTE7CisJCQkJVUNoYXIJICAgKnVjaGFyID0gTlVMTDsKKwkJCQlTaXplCQlic2l6ZTsKKwkJ CQl1aW50OF90CSAgICpidWY7CisKKwkJCQl1bGVuID0gaWN1X3RvX3VjaGFyKCZ1Y2hhciwg VkFSREFUQV9BTlkoa2V5KSwgVkFSU0laRV9BTllfRVhIRFIoa2V5KSk7CisKKwkJCQlic2l6 ZSA9IHVjb2xfZ2V0U29ydEtleShteWxvY2FsZS0+aW5mby5pY3UudWNvbCwKKwkJCQkJCQkJ CQl1Y2hhciwgdWxlbiwgTlVMTCwgMCk7CisJCQkJYnVmID0gcGFsbG9jKGJzaXplKTsKKwkJ CQl1Y29sX2dldFNvcnRLZXkobXlsb2NhbGUtPmluZm8uaWN1LnVjb2wsCisJCQkJCQkJCXVj aGFyLCB1bGVuLCBidWYsIGJzaXplKTsKKworCQkJCXJlc3VsdCA9IGhhc2hfYW55KGJ1Ziwg YnNpemUpOworCisJCQkJUEdfRlJFRV9JRl9DT1BZKGtleSwgMCk7CisKKwkJCQlyZXR1cm4g cmVzdWx0OworCQkJfQorCQkJZWxzZQorCQkJCWVsb2coRVJST1IsICJub3Qgc3VwcG9ydGVk IHlldCIpOworCQl9CisJfQorCiAJLyoKIAkgKiBOb3RlOiB0aGlzIGlzIGN1cnJlbnRseSBp ZGVudGljYWwgaW4gYmVoYXZpb3IgdG8gaGFzaHZhcmxlbmEsIGJ1dCBrZWVwCiAJICogaXQg YXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiBpbiBjYXNlIHdlIHNvbWVkYXkgd2FudCB0byBkbyBz b21ldGhpbmcKQEAgLTI2Miw4ICszMDAsMTUgQEAgRGF0dW0KIGhhc2h0ZXh0ZXh0ZW5kZWQo UEdfRlVOQ1RJT05fQVJHUykKIHsKIAl0ZXh0CSAgICprZXkgPSBQR19HRVRBUkdfVEVYVF9Q UCgwKTsKKwlPaWQJCQljb2xsaWQgPSBQR19HRVRfQ09MTEFUSU9OKCk7CiAJRGF0dW0JCXJl c3VsdDsKIAorCWlmICghY29sbGlkKQorCQllbG9nKEVSUk9SLCAiRklYTUU6IGhhc2h0ZXh0 ZXh0ZW5kZWQoKSBjYWxsZWQgd2l0aG91dCBjb2xsYXRpb24iKTsKKworCWlmIChjb2xsaWQg IT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQorCQllbG9nKEVSUk9SLCAiVE9ETyIpOworCiAJ LyogU2FtZSBhcHByb2FjaCBhcyBoYXNodGV4dCAqLwogCXJlc3VsdCA9IGhhc2hfYW55X2V4 dGVuZGVkKCh1bnNpZ25lZCBjaGFyICopIFZBUkRBVEFfQU5ZKGtleSksCiAJCQkJCQkJICAg VkFSU0laRV9BTllfRVhIRFIoa2V5KSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfY29sbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbGxhdGlvbi5j CmluZGV4IGQ0NTQzYjUxMWUuLjQwYjhiNDNkMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfY29sbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19j b2xsYXRpb24uYwpAQCAtNDcsNiArNDcsNyBAQCBPaWQKIENvbGxhdGlvbkNyZWF0ZShjb25z dCBjaGFyICpjb2xsbmFtZSwgT2lkIGNvbGxuYW1lc3BhY2UsCiAJCQkJT2lkIGNvbGxvd25l ciwKIAkJCQljaGFyIGNvbGxwcm92aWRlciwKKwkJCQlib29sIGNvbGxpc2luc2Vuc2l0aXZl LAogCQkJCWludDMyIGNvbGxlbmNvZGluZywKIAkJCQljb25zdCBjaGFyICpjb2xsY29sbGF0 ZSwgY29uc3QgY2hhciAqY29sbGN0eXBlLAogCQkJCWNvbnN0IGNoYXIgKmNvbGx2ZXJzaW9u LApAQCAtMTYxLDYgKzE2Miw3IEBAIENvbGxhdGlvbkNyZWF0ZShjb25zdCBjaGFyICpjb2xs bmFtZSwgT2lkIGNvbGxuYW1lc3BhY2UsCiAJdmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2Nv bGxuYW1lc3BhY2UgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oY29sbG5hbWVzcGFjZSk7CiAJ dmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxvd25lciAtIDFdID0gT2JqZWN0SWRHZXRE YXR1bShjb2xsb3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xscHJvdmlk ZXIgLSAxXSA9IENoYXJHZXREYXR1bShjb2xscHJvdmlkZXIpOworCXZhbHVlc1tBbnVtX3Bn X2NvbGxhdGlvbl9jb2xsaXNpbnNlbnNpdGl2ZSAtIDFdID0gQm9vbEdldERhdHVtKGNvbGxp c2luc2Vuc2l0aXZlKTsKIAl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbGVuY29kaW5n IC0gMV0gPSBJbnQzMkdldERhdHVtKGNvbGxlbmNvZGluZyk7CiAJbmFtZXN0cmNweSgmbmFt ZV9jb2xsYXRlLCBjb2xsY29sbGF0ZSk7CiAJdmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2Nv bGxjb2xsYXRlIC0gMV0gPSBOYW1lR2V0RGF0dW0oJm5hbWVfY29sbGF0ZSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKaW5kZXggOGZiNTFlOGMzZC4uYWE0YzM2OGU1 MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYwpAQCAtNTksMTAgKzU5 LDEyIEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVz LCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJRGVmRWxlbSAgICAqbGNjb2xs YXRlRWwgPSBOVUxMOwogCURlZkVsZW0gICAgKmxjY3R5cGVFbCA9IE5VTEw7CiAJRGVmRWxl bSAgICAqcHJvdmlkZXJFbCA9IE5VTEw7CisJRGVmRWxlbSAgICAqaW5zZW5zaXRpdmVFbCA9 IE5VTEw7CiAJRGVmRWxlbSAgICAqdmVyc2lvbkVsID0gTlVMTDsKIAljaGFyCSAgICpjb2xs Y29sbGF0ZSA9IE5VTEw7CiAJY2hhcgkgICAqY29sbGN0eXBlID0gTlVMTDsKIAljaGFyCSAg ICpjb2xscHJvdmlkZXJzdHIgPSBOVUxMOworCWJvb2wJCWNvbGxpc2luc2Vuc2l0aXZlID0g ZmFsc2U7CiAJaW50CQkJY29sbGVuY29kaW5nID0gMDsKIAljaGFyCQljb2xscHJvdmlkZXIg PSAwOwogCWNoYXIJICAgKmNvbGx2ZXJzaW9uID0gTlVMTDsKQEAgLTkxLDYgKzkzLDggQEAg RGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3Qg KnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAkJCWRlZmVscCA9ICZsY2N0eXBlRWw7CiAJ CWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInByb3ZpZGVyIikgPT0gMCkKIAkJ CWRlZmVscCA9ICZwcm92aWRlckVsOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5h bWUsICJpbnNlbnNpdGl2ZSIpID09IDApCisJCQlkZWZlbHAgPSAmaW5zZW5zaXRpdmVFbDsK IAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidmVyc2lvbiIpID09IDApCiAJ CQlkZWZlbHAgPSAmdmVyc2lvbkVsOwogCQllbHNlCkBAIC0xMjUsNiArMTI5LDcgQEAgRGVm aW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBh cmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAkJY29sbGNvbGxhdGUgPSBwc3RyZHVwKE5hbWVT dHIoKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxjb2xsYXRlKSk7 CiAJCWNvbGxjdHlwZSA9IHBzdHJkdXAoTmFtZVN0cigoKEZvcm1fcGdfY29sbGF0aW9uKSBH RVRTVFJVQ1QodHApKS0+Y29sbGN0eXBlKSk7CiAJCWNvbGxwcm92aWRlciA9ICgoRm9ybV9w Z19jb2xsYXRpb24pIEdFVFNUUlVDVCh0cCkpLT5jb2xscHJvdmlkZXI7CisJCWNvbGxpc2lu c2Vuc2l0aXZlID0gKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxp c2luc2Vuc2l0aXZlOwogCQljb2xsZW5jb2RpbmcgPSAoKEZvcm1fcGdfY29sbGF0aW9uKSBH RVRTVFJVQ1QodHApKS0+Y29sbGVuY29kaW5nOwogCiAJCVJlbGVhc2VTeXNDYWNoZSh0cCk7 CkBAIC0xNTcsNiArMTYyLDkgQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAlpZiAo cHJvdmlkZXJFbCkKIAkJY29sbHByb3ZpZGVyc3RyID0gZGVmR2V0U3RyaW5nKHByb3ZpZGVy RWwpOwogCisJaWYgKGluc2Vuc2l0aXZlRWwpCisJCWNvbGxpc2luc2Vuc2l0aXZlID0gZGVm R2V0Qm9vbGVhbihpbnNlbnNpdGl2ZUVsKTsKKwogCWlmICh2ZXJzaW9uRWwpCiAJCWNvbGx2 ZXJzaW9uID0gZGVmR2V0U3RyaW5nKHZlcnNpb25FbCk7CiAKQEAgLTIwMyw2ICsyMTEsNyBA QCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlz dCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCQkJCQkJCSBjb2xsTmFtZXNwYWNlLAog CQkJCQkJCSBHZXRVc2VySWQoKSwKIAkJCQkJCQkgY29sbHByb3ZpZGVyLAorCQkJCQkJCSBj b2xsaXNpbnNlbnNpdGl2ZSwKIAkJCQkJCQkgY29sbGVuY29kaW5nLAogCQkJCQkJCSBjb2xs Y29sbGF0ZSwKIAkJCQkJCQkgY29sbGN0eXBlLApAQCAtNTg2LDcgKzU5NSw3IEBAIHBnX2lt cG9ydF9zeXN0ZW1fY29sbGF0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQkJICogYWJvdXQg ZXhpc3Rpbmcgb25lcy4KIAkJCSAqLwogCQkJY29sbGlkID0gQ29sbGF0aW9uQ3JlYXRlKGxv Y2FsZWJ1ZiwgbnNwaWQsIEdldFVzZXJJZCgpLAotCQkJCQkJCQkJIENPTExQUk9WSURFUl9M SUJDLCBlbmMsCisJCQkJCQkJCQkgQ09MTFBST1ZJREVSX0xJQkMsIGZhbHNlLCBlbmMsCiAJ CQkJCQkJCQkgbG9jYWxlYnVmLCBsb2NhbGVidWYsCiAJCQkJCQkJCQkgZ2V0X2NvbGxhdGlv bl9hY3R1YWxfdmVyc2lvbihDT0xMUFJPVklERVJfTElCQywgbG9jYWxlYnVmKSwKIAkJCQkJ CQkJCSB0cnVlLCB0cnVlKTsKQEAgLTY0Nyw3ICs2NTYsNyBAQCBwZ19pbXBvcnRfc3lzdGVt X2NvbGxhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWludAkJCWVuYyA9IGFsaWFzZXNb aV0uZW5jOwogCiAJCQljb2xsaWQgPSBDb2xsYXRpb25DcmVhdGUoYWxpYXMsIG5zcGlkLCBH ZXRVc2VySWQoKSwKLQkJCQkJCQkJCSBDT0xMUFJPVklERVJfTElCQywgZW5jLAorCQkJCQkJ CQkJIENPTExQUk9WSURFUl9MSUJDLCBmYWxzZSwgZW5jLAogCQkJCQkJCQkJIGxvY2FsZSwg bG9jYWxlLAogCQkJCQkJCQkJIGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oQ09MTFBS T1ZJREVSX0xJQkMsIGxvY2FsZSksCiAJCQkJCQkJCQkgdHJ1ZSwgdHJ1ZSk7CkBAIC03MDks NyArNzE4LDcgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAkJCWNvbGxpZCA9IENvbGxhdGlvbkNyZWF0ZShwc3ByaW50ZigiJXMteC1pY3Ui LCBsYW5ndGFnKSwKIAkJCQkJCQkJCSBuc3BpZCwgR2V0VXNlcklkKCksCi0JCQkJCQkJCQkg Q09MTFBST1ZJREVSX0lDVSwgLTEsCisJCQkJCQkJCQkgQ09MTFBST1ZJREVSX0lDVSwgZmFs c2UsIC0xLAogCQkJCQkJCQkJIGNvbGxjb2xsYXRlLCBjb2xsY29sbGF0ZSwKIAkJCQkJCQkJ CSBnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKENPTExQUk9WSURFUl9JQ1UsIGNvbGxj b2xsYXRlKSwKIAkJCQkJCQkJCSB0cnVlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ci5jCmluZGV4IGQ5MDg3Y2FjMTUuLjJiNGM5ODhkMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHIuYwpAQCAtMzMxNiw2ICszMzE2LDcgQEAgRXhlY0J1aWxkR3JvdXBpbmdFcXVhbChU dXBsZURlc2MgbGRlc2MsIFR1cGxlRGVzYyByZGVzYywKIAkJCQkJICAgaW50IG51bUNvbHMs CiAJCQkJCSAgIEF0dHJOdW1iZXIgKmtleUNvbElkeCwKIAkJCQkJICAgT2lkICplcWZ1bmN0 aW9ucywKKwkJCQkJICAgT2lkICpjb2xsYXRpb25zLAogCQkJCQkgICBQbGFuU3RhdGUgKnBh cmVudCkKIHsKIAlFeHByU3RhdGUgICpzdGF0ZSA9IG1ha2VOb2RlKEV4cHJTdGF0ZSk7CkBA IC0zMzc2LDYgKzMzNzcsNyBAQCBFeGVjQnVpbGRHcm91cGluZ0VxdWFsKFR1cGxlRGVzYyBs ZGVzYywgVHVwbGVEZXNjIHJkZXNjLAogCQlGb3JtX3BnX2F0dHJpYnV0ZSBsYXR0ID0gVHVw bGVEZXNjQXR0cihsZGVzYywgYXR0bm8gLSAxKTsKIAkJRm9ybV9wZ19hdHRyaWJ1dGUgcmF0 dCA9IFR1cGxlRGVzY0F0dHIocmRlc2MsIGF0dG5vIC0gMSk7CiAJCU9pZAkJCWZvaWQgPSBl cWZ1bmN0aW9uc1tuYXR0XTsKKwkJT2lkCQkJY29sbGlkID0gY29sbGF0aW9uc1tuYXR0XTsK IAkJRm1nckluZm8gICAqZmluZm87CiAJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvOwogCQlB Y2xSZXN1bHQJYWNscmVzdWx0OwpAQCAtMzM5Myw3ICszMzk1LDcgQEAgRXhlY0J1aWxkR3Jv dXBpbmdFcXVhbChUdXBsZURlc2MgbGRlc2MsIFR1cGxlRGVzYyByZGVzYywKIAkJZm1ncl9p bmZvKGZvaWQsIGZpbmZvKTsKIAkJZm1ncl9pbmZvX3NldF9leHByKE5VTEwsIGZpbmZvKTsK IAkJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpmY2luZm8sIGZpbmZvLCAyLAotCQkJCQkJ CQkgSW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CisJCQkJCQkJCSBjb2xsaWQsIE5VTEwsIE5V TEwpOwogCiAJCS8qIGxlZnQgYXJnICovCiAJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9JTk5F Ul9WQVI7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jCmluZGV4IGFiY2UxZTk1 Y2IuLmJhNjlkZDhiMDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNH cm91cGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jCkBA IC02MSw2ICs2MSw3IEBAIGV4ZWNUdXBsZXNNYXRjaFByZXBhcmUoVHVwbGVEZXNjIGRlc2Ms CiAJCQkJCSAgIGludCBudW1Db2xzLAogCQkJCQkgICBBdHRyTnVtYmVyICprZXlDb2xJZHgs CiAJCQkJCSAgIE9pZCAqZXFPcGVyYXRvcnMsCisJCQkJCSAgIE9pZCAqY29sbGF0aW9ucywK IAkJCQkJICAgUGxhblN0YXRlICpwYXJlbnQpCiB7CiAJT2lkCQkgICAqZXFGdW5jdGlvbnMg PSAoT2lkICopIHBhbGxvYyhudW1Db2xzICogc2l6ZW9mKE9pZCkpOwpAQCAtNzYsNyArNzcs NyBAQCBleGVjVHVwbGVzTWF0Y2hQcmVwYXJlKFR1cGxlRGVzYyBkZXNjLAogCiAJLyogYnVp bGQgYWN0dWFsIGV4cHJlc3Npb24gKi8KIAlleHByID0gRXhlY0J1aWxkR3JvdXBpbmdFcXVh bChkZXNjLCBkZXNjLCBOVUxMLCBOVUxMLAotCQkJCQkJCQkgIG51bUNvbHMsIGtleUNvbElk eCwgZXFGdW5jdGlvbnMsCisJCQkJCQkJCSAgbnVtQ29scywga2V5Q29sSWR4LCBlcUZ1bmN0 aW9ucywgY29sbGF0aW9ucywKIAkJCQkJCQkJICBwYXJlbnQpOwogCiAJcmV0dXJuIGV4cHI7 CkBAIC0xNTUsNiArMTU2LDcgQEAgQnVpbGRUdXBsZUhhc2hUYWJsZShQbGFuU3RhdGUgKnBh cmVudCwKIAkJCQkJaW50IG51bUNvbHMsIEF0dHJOdW1iZXIgKmtleUNvbElkeCwKIAkJCQkJ T2lkICplcWZ1bmNvaWRzLAogCQkJCQlGbWdySW5mbyAqaGFzaGZ1bmN0aW9ucywKKwkJCQkJ T2lkICpjb2xsYXRpb25zLAogCQkJCQlsb25nIG5idWNrZXRzLCBTaXplIGFkZGl0aW9uYWxz aXplLAogCQkJCQlNZW1vcnlDb250ZXh0IHRhYmxlY3h0LCBNZW1vcnlDb250ZXh0IHRlbXBj eHQsCiAJCQkJCWJvb2wgdXNlX3ZhcmlhYmxlX2hhc2hfaXYpCkBAIC0xNzQsNiArMTc2LDcg QEAgQnVpbGRUdXBsZUhhc2hUYWJsZShQbGFuU3RhdGUgKnBhcmVudCwKIAloYXNodGFibGUt Pm51bUNvbHMgPSBudW1Db2xzOwogCWhhc2h0YWJsZS0+a2V5Q29sSWR4ID0ga2V5Q29sSWR4 OwogCWhhc2h0YWJsZS0+dGFiX2hhc2hfZnVuY3MgPSBoYXNoZnVuY3Rpb25zOworCWhhc2h0 YWJsZS0+dGFiX2NvbGxhdGlvbnMgPSBjb2xsYXRpb25zOwogCWhhc2h0YWJsZS0+dGFibGVj eHQgPSB0YWJsZWN4dDsKIAloYXNodGFibGUtPnRlbXBjeHQgPSB0ZW1wY3h0OwogCWhhc2h0 YWJsZS0+ZW50cnlzaXplID0gZW50cnlzaXplOwpAQCAtMjExLDcgKzIxNCw3IEBAIEJ1aWxk VHVwbGVIYXNoVGFibGUoUGxhblN0YXRlICpwYXJlbnQsCiAJaGFzaHRhYmxlLT50YWJfZXFf ZnVuYyA9IEV4ZWNCdWlsZEdyb3VwaW5nRXF1YWwoaW5wdXREZXNjLCBpbnB1dERlc2MsCiAJ CQkJCQkJCQkJCQkJJlRUU09wc01pbmltYWxUdXBsZSwgJlRUU09wc01pbmltYWxUdXBsZSwK IAkJCQkJCQkJCQkJCQludW1Db2xzLAotCQkJCQkJCQkJCQkJCWtleUNvbElkeCwgZXFmdW5j b2lkcywKKwkJCQkJCQkJCQkJCQlrZXlDb2xJZHgsIGVxZnVuY29pZHMsIGNvbGxhdGlvbnMs CiAJCQkJCQkJCQkJCQkJcGFyZW50KTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj b250ZXh0KTsKQEAgLTM3NCw4ICszNzcsOSBAQCBUdXBsZUhhc2hUYWJsZUhhc2goc3RydWN0 IHR1cGxlaGFzaF9oYXNoICp0YiwgY29uc3QgTWluaW1hbFR1cGxlIHR1cGxlKQogCQl7CiAJ CQl1aW50MzIJCWhrZXk7CiAKLQkJCWhrZXkgPSBEYXR1bUdldFVJbnQzMihGdW5jdGlvbkNh bGwxKCZoYXNoZnVuY3Rpb25zW2ldLAotCQkJCQkJCQkJCQkJYXR0cikpOworCQkJaGtleSA9 IERhdHVtR2V0VUludDMyKEZ1bmN0aW9uQ2FsbDFDb2xsKCZoYXNoZnVuY3Rpb25zW2ldLAor CQkJCQkJCQkJCQkJCWhhc2h0YWJsZS0+dGFiX2NvbGxhdGlvbnNbaV0sCisJCQkJCQkJCQkJ CQkJYXR0cikpOwogCQkJaGFzaGtleSBePSBoa2V5OwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDE3OWE1MDFmMzAuLjAzODc3MTcxODAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTEyMTcsNiArMTIxNyw3 IEBAIGdldF9wYXJ0aXRpb25fZm9yX3R1cGxlKFBhcnRpdGlvbkRpc3BhdGNoIHBkLCBEYXR1 bSAqdmFsdWVzLCBib29sICppc251bGwpCiAJCQkJZ3JlYXRlc3RfbW9kdWx1cyA9IGdldF9o YXNoX3BhcnRpdGlvbl9ncmVhdGVzdF9tb2R1bHVzKGJvdW5kaW5mbyk7CiAJCQkJcm93SGFz aCA9IGNvbXB1dGVfcGFydGl0aW9uX2hhc2hfdmFsdWUoa2V5LT5wYXJ0bmF0dHMsCiAJCQkJ CQkJCQkJCQkJICAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJCQkJCQkgICBrZXktPnBh cnRjb2xsYXRpb24sCiAJCQkJCQkJCQkJCQkJICAgdmFsdWVzLCBpc251bGwpOwogCiAJCQkJ cGFydF9pbmRleCA9IGJvdW5kaW5mby0+aW5kZXhlc1tyb3dIYXNoICUgZ3JlYXRlc3RfbW9k dWx1c107CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKaW5kZXggZGFmNTZjZDNkMS4uMGRkMmIw MmE5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwpAQCAtMTI4Myw2ICsxMjgzLDcgQEAg YnVpbGRfaGFzaF90YWJsZShBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJCQkJCQkJCQkJCQkgcGVy aGFzaC0+aGFzaEdycENvbElkeEhhc2gsCiAJCQkJCQkJCQkJCQkgcGVyaGFzaC0+ZXFmdW5j b2lkcywKIAkJCQkJCQkJCQkJCSBwZXJoYXNoLT5oYXNoZnVuY3Rpb25zLAorCQkJCQkJCQkJ CQkJIHBlcmhhc2gtPmFnZ25vZGUtPmdycENvbGxhdGlvbnMsCiAJCQkJCQkJCQkJCQkgcGVy aGFzaC0+YWdnbm9kZS0+bnVtR3JvdXBzLAogCQkJCQkJCQkJCQkJIGFkZGl0aW9uYWxzaXpl LAogCQkJCQkJCQkJCQkJIGFnZ3N0YXRlLT5oYXNoY29udGV4dC0+ZWN4dF9wZXJfdHVwbGVf bWVtb3J5LApAQCAtMjM3Niw2ICsyMzc3LDcgQEAgRXhlY0luaXRBZ2coQWdnICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkJCQkJICAgbGVuZ3RoLAogCQkJ CQkJCQkJCQkgICBhZ2dub2RlLT5ncnBDb2xJZHgsCiAJCQkJCQkJCQkJCSAgIGFnZ25vZGUt PmdycE9wZXJhdG9ycywKKwkJCQkJCQkJCQkJICAgYWdnbm9kZS0+Z3JwQ29sbGF0aW9ucywK IAkJCQkJCQkJCQkJICAgKFBsYW5TdGF0ZSAqKSBhZ2dzdGF0ZSk7CiAJCQkJfQogCkBAIC0y Mzg3LDYgKzIzODksNyBAQCBFeGVjSW5pdEFnZyhBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCQkJCQkJCQkJCQkgICBhZ2dub2RlLT5udW1Db2xzLAogCQkJCQkJ CQkJCQkgICBhZ2dub2RlLT5ncnBDb2xJZHgsCiAJCQkJCQkJCQkJCSAgIGFnZ25vZGUtPmdy cE9wZXJhdG9ycywKKwkJCQkJCQkJCQkJICAgYWdnbm9kZS0+Z3JwQ29sbGF0aW9ucywKIAkJ CQkJCQkJCQkJICAgKFBsYW5TdGF0ZSAqKSBhZ2dzdGF0ZSk7CiAJCQkJfQogCQkJfQpAQCAt MzE0MSw2ICszMTQ0LDcgQEAgYnVpbGRfcGVydHJhbnNfZm9yX2FnZ3JlZihBZ2dTdGF0ZVBl clRyYW5zIHBlcnRyYW5zLAogCQkJCQkJCQkJICAgbnVtRGlzdGluY3RDb2xzLAogCQkJCQkJ CQkJICAgcGVydHJhbnMtPnNvcnRDb2xJZHgsCiAJCQkJCQkJCQkgICBvcHMsCisJCQkJCQkJ CQkgICBwZXJ0cmFucy0+c29ydENvbGxhdGlvbnMsCiAJCQkJCQkJCQkgICAmYWdnc3RhdGUt PnNzLnBzKTsKIAkJcGZyZWUob3BzKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5j CmluZGV4IDU4ZTBiMTBjZDEuLjk1YjE5YmUxZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH cm91cC5jCkBAIC0yMTIsNiArMjEyLDcgQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJICAgbm9kZS0+bnVtQ29scywK IAkJCQkJCQkgICBub2RlLT5ncnBDb2xJZHgsCiAJCQkJCQkJICAgbm9kZS0+Z3JwT3BlcmF0 b3JzLAorCQkJCQkJCSAgIG5vZGUtPmdycENvbGxhdGlvbnMsCiAJCQkJCQkJICAgJmdycHN0 YXRlLT5zcy5wcyk7CiAKIAlyZXR1cm4gZ3Jwc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2guYwppbmRleCBiYTJmNjY4NmNmLi4zYTg2ZDliOTY0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoLmMKQEAgLTQyNSw3ICs0MjUsNyBAQCBFeGVjRW5kSGFzaChIYXNoU3RhdGUgKm5v ZGUpCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIEhhc2hKb2luVGFibGUKLUV4ZWNIYXNoVGFibGVD cmVhdGUoSGFzaFN0YXRlICpzdGF0ZSwgTGlzdCAqaGFzaE9wZXJhdG9ycywgYm9vbCBrZWVw TnVsbHMpCitFeGVjSGFzaFRhYmxlQ3JlYXRlKEhhc2hTdGF0ZSAqc3RhdGUsIExpc3QgKmhh c2hPcGVyYXRvcnMsIExpc3QgKmhhc2hDb2xsYXRpb25zLCBib29sIGtlZXBOdWxscykKIHsK IAlIYXNoCSAgICpub2RlOwogCUhhc2hKb2luVGFibGUgaGFzaHRhYmxlOwpAQCAtNDM5LDYg KzQzOSw3IEBAIEV4ZWNIYXNoVGFibGVDcmVhdGUoSGFzaFN0YXRlICpzdGF0ZSwgTGlzdCAq aGFzaE9wZXJhdG9ycywgYm9vbCBrZWVwTnVsbHMpCiAJaW50CQkJbmtleXM7CiAJaW50CQkJ aTsKIAlMaXN0Q2VsbCAgICpobzsKKwlMaXN0Q2VsbCAgICpoYzsKIAlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKIAogCS8qCkBAIC01NDEsOCArNTQyLDkgQEAgRXhlY0hhc2hUYWJsZUNyZWF0 ZShIYXNoU3RhdGUgKnN0YXRlLCBMaXN0ICpoYXNoT3BlcmF0b3JzLCBib29sIGtlZXBOdWxs cykKIAloYXNodGFibGUtPmlubmVyX2hhc2hmdW5jdGlvbnMgPQogCQkoRm1nckluZm8gKikg cGFsbG9jKG5rZXlzICogc2l6ZW9mKEZtZ3JJbmZvKSk7CiAJaGFzaHRhYmxlLT5oYXNoU3Ry aWN0ID0gKGJvb2wgKikgcGFsbG9jKG5rZXlzICogc2l6ZW9mKGJvb2wpKTsKKwloYXNodGFi bGUtPmNvbGxhdGlvbnMgPSAoT2lkICopIHBhbGxvYyhua2V5cyAqIHNpemVvZihPaWQpKTsK IAlpID0gMDsKLQlmb3JlYWNoKGhvLCBoYXNoT3BlcmF0b3JzKQorCWZvcmJvdGgoaG8sIGhh c2hPcGVyYXRvcnMsIGhjLCBoYXNoQ29sbGF0aW9ucykKIAl7CiAJCU9pZAkJCWhhc2hvcCA9 IGxmaXJzdF9vaWQoaG8pOwogCQlPaWQJCQlsZWZ0X2hhc2hmbjsKQEAgLTU1NCw2ICs1NTYs NyBAQCBFeGVjSGFzaFRhYmxlQ3JlYXRlKEhhc2hTdGF0ZSAqc3RhdGUsIExpc3QgKmhhc2hP cGVyYXRvcnMsIGJvb2wga2VlcE51bGxzKQogCQlmbWdyX2luZm8obGVmdF9oYXNoZm4sICZo YXNodGFibGUtPm91dGVyX2hhc2hmdW5jdGlvbnNbaV0pOwogCQlmbWdyX2luZm8ocmlnaHRf aGFzaGZuLCAmaGFzaHRhYmxlLT5pbm5lcl9oYXNoZnVuY3Rpb25zW2ldKTsKIAkJaGFzaHRh YmxlLT5oYXNoU3RyaWN0W2ldID0gb3Bfc3RyaWN0KGhhc2hvcCk7CisJCWhhc2h0YWJsZS0+ Y29sbGF0aW9uc1tpXSA9IGxmaXJzdF9vaWQoaGMpOwogCQlpKys7CiAJfQogCkBAIC0xODQ3 LDcgKzE4NTAsNyBAQCBFeGVjSGFzaEdldEhhc2hWYWx1ZShIYXNoSm9pblRhYmxlIGhhc2h0 YWJsZSwKIAkJCS8qIENvbXB1dGUgdGhlIGhhc2ggZnVuY3Rpb24gKi8KIAkJCXVpbnQzMgkJ aGtleTsKIAotCQkJaGtleSA9IERhdHVtR2V0VUludDMyKEZ1bmN0aW9uQ2FsbDEoJmhhc2hm dW5jdGlvbnNbaV0sIGtleXZhbCkpOworCQkJaGtleSA9IERhdHVtR2V0VUludDMyKEZ1bmN0 aW9uQ2FsbDFDb2xsKCZoYXNoZnVuY3Rpb25zW2ldLCBoYXNodGFibGUtPmNvbGxhdGlvbnNb aV0sIGtleXZhbCkpOwogCQkJaGFzaGtleSBePSBoa2V5OwogCQl9CiAKQEAgLTIzMDMsOCAr MjMwNiw5IEBAIEV4ZWNIYXNoQnVpbGRTa2V3SGFzaChIYXNoSm9pblRhYmxlIGhhc2h0YWJs ZSwgSGFzaCAqbm9kZSwgaW50IG1jdnNUb1VzZSkKIAkJCXVpbnQzMgkJaGFzaHZhbHVlOwog CQkJaW50CQkJYnVja2V0OwogCi0JCQloYXNodmFsdWUgPSBEYXR1bUdldFVJbnQzMihGdW5j dGlvbkNhbGwxKCZoYXNoZnVuY3Rpb25zWzBdLAotCQkJCQkJCQkJCQkJCSBzc2xvdC52YWx1 ZXNbaV0pKTsKKwkJCWhhc2h2YWx1ZSA9IERhdHVtR2V0VUludDMyKEZ1bmN0aW9uQ2FsbDFD b2xsKCZoYXNoZnVuY3Rpb25zWzBdLAorCQkJCQkJCQkJCQkJCQkgaGFzaHRhYmxlLT5jb2xs YXRpb25zWzBdLAorCQkJCQkJCQkJCQkJCQkgc3Nsb3QudmFsdWVzW2ldKSk7CiAKIAkJCS8q CiAJCQkgKiBXaGlsZSB3ZSBoYXZlIG5vdCBoaXQgYSBob2xlIGluIHRoZSBoYXNodGFibGUg YW5kIGhhdmUgbm90IGhpdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2hqb2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwppbmRl eCBjMmM4YmVmZmMxLi5jNDRjZmRhNTFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSGFzaGpvaW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aGpvaW4uYwpAQCAtMjc4LDYgKzI3OCw3IEBAIEV4ZWNIYXNoSm9pbkltcGwoUGxhblN0YXRl ICpwc3RhdGUsIGJvb2wgcGFyYWxsZWwpCiAJCQkJICovCiAJCQkJaGFzaHRhYmxlID0gRXhl Y0hhc2hUYWJsZUNyZWF0ZShoYXNoTm9kZSwKIAkJCQkJCQkJCQkJCW5vZGUtPmhqX0hhc2hP cGVyYXRvcnMsCisJCQkJCQkJCQkJCQlub2RlLT5oal9Db2xsYXRpb25zLAogCQkJCQkJCQkJ CQkJSEpfRklMTF9JTk5FUihub2RlKSk7CiAJCQkJbm9kZS0+aGpfSGFzaFRhYmxlID0gaGFz aHRhYmxlOwogCkBAIC02MDMsNiArNjA0LDcgQEAgRXhlY0luaXRIYXNoSm9pbihIYXNoSm9p biAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJTGlzdAkgICAqcmNsYXVz ZXM7CiAJTGlzdAkgICAqcmhjbGF1c2VzOwogCUxpc3QJICAgKmhvcGVyYXRvcnM7CisJTGlz dAkgICAqaGNvbGxhdGlvbnM7CiAJVHVwbGVEZXNjCW91dGVyRGVzYywKIAkJCQlpbm5lckRl c2M7CiAJTGlzdENlbGwgICAqbDsKQEAgLTczOCw2ICs3NDAsNyBAQCBFeGVjSW5pdEhhc2hK b2luKEhhc2hKb2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlyY2xh dXNlcyA9IE5JTDsKIAlyaGNsYXVzZXMgPSBOSUw7CiAJaG9wZXJhdG9ycyA9IE5JTDsKKwlo Y29sbGF0aW9ucyA9IE5JTDsKIAlmb3JlYWNoKGwsIG5vZGUtPmhhc2hjbGF1c2VzKQogCXsK IAkJT3BFeHByCSAgICpoY2xhdXNlID0gbGZpcnN0X25vZGUoT3BFeHByLCBsKTsKQEAgLTc0 OSwxMCArNzUyLDEyIEBAIEV4ZWNJbml0SGFzaEpvaW4oSGFzaEpvaW4gKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlyaGNsYXVzZXMgPSBsYXBwZW5kKHJoY2xhdXNl cywgRXhlY0luaXRFeHByKGxzZWNvbmQoaGNsYXVzZS0+YXJncyksCiAJCQkJCQkJCQkJCQkg ICBpbm5lclBsYW5TdGF0ZShoanN0YXRlKSkpOwogCQlob3BlcmF0b3JzID0gbGFwcGVuZF9v aWQoaG9wZXJhdG9ycywgaGNsYXVzZS0+b3Bubyk7CisJCWhjb2xsYXRpb25zID0gbGFwcGVu ZF9vaWQoaGNvbGxhdGlvbnMsIGhjbGF1c2UtPmlucHV0Y29sbGlkKTsKIAl9CiAJaGpzdGF0 ZS0+aGpfT3V0ZXJIYXNoS2V5cyA9IGxjbGF1c2VzOwogCWhqc3RhdGUtPmhqX0lubmVySGFz aEtleXMgPSByY2xhdXNlczsKIAloanN0YXRlLT5oal9IYXNoT3BlcmF0b3JzID0gaG9wZXJh dG9yczsKKwloanN0YXRlLT5oal9Db2xsYXRpb25zID0gaGNvbGxhdGlvbnM7CiAJLyogY2hp bGQgSGFzaCBub2RlIG5lZWRzIHRvIGV2YWx1YXRlIGlubmVyIGhhc2gga2V5cywgdG9vICov CiAJKChIYXNoU3RhdGUgKikgaW5uZXJQbGFuU3RhdGUoaGpzdGF0ZSkpLT5oYXNoa2V5cyA9 IHJoY2xhdXNlczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJl Y3Vyc2l2ZXVuaW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5p b24uYwppbmRleCAyZDI2Y2VjODMxLi44NzMzYzg1YWZjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpAQCAtNDMsNiArNDMsNyBAQCBidWlsZF9o YXNoX3RhYmxlKFJlY3Vyc2l2ZVVuaW9uU3RhdGUgKnJ1c3RhdGUpCiAJCQkJCQkJCQkJCSBu b2RlLT5kdXBDb2xJZHgsCiAJCQkJCQkJCQkJCSBydXN0YXRlLT5lcWZ1bmNvaWRzLAogCQkJ CQkJCQkJCQkgcnVzdGF0ZS0+aGFzaGZ1bmN0aW9ucywKKwkJCQkJCQkJCQkJIG5vZGUtPmR1 cENvbGxhdGlvbnMsCiAJCQkJCQkJCQkJCSBub2RlLT5udW1Hcm91cHMsCiAJCQkJCQkJCQkJ CSAwLAogCQkJCQkJCQkJCQkgcnVzdGF0ZS0+dGFibGVDb250ZXh0LApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU2V0T3AuYwppbmRleCA0OGI3YWE5YjhiLi43YjEwMWFiOTQ2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtMTMyLDYgKzEzMiw3IEBAIGJ1aWxkX2hhc2hfdGFi bGUoU2V0T3BTdGF0ZSAqc2V0b3BzdGF0ZSkKIAkJCQkJCQkJCQkJCW5vZGUtPmR1cENvbElk eCwKIAkJCQkJCQkJCQkJCXNldG9wc3RhdGUtPmVxZnVuY29pZHMsCiAJCQkJCQkJCQkJCQlz ZXRvcHN0YXRlLT5oYXNoZnVuY3Rpb25zLAorCQkJCQkJCQkJCQkJbm9kZS0+ZHVwQ29sbGF0 aW9ucywKIAkJCQkJCQkJCQkJCW5vZGUtPm51bUdyb3VwcywKIAkJCQkJCQkJCQkJCTAsCiAJ CQkJCQkJCQkJCQlzZXRvcHN0YXRlLT50YWJsZUNvbnRleHQsCkBAIC01NTMsNiArNTU0LDcg QEAgRXhlY0luaXRTZXRPcChTZXRPcCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCQkJCQkJCSAgIG5vZGUtPm51bUNvbHMsCiAJCQkJCQkJCSAgIG5vZGUtPmR1cENv bElkeCwKIAkJCQkJCQkJICAgbm9kZS0+ZHVwT3BlcmF0b3JzLAorCQkJCQkJCQkgICBub2Rl LT5kdXBDb2xsYXRpb25zLAogCQkJCQkJCQkgICAmc2V0b3BzdGF0ZS0+cHMpOwogCiAJaWYg KG5vZGUtPnN0cmF0ZWd5ID09IFNFVE9QX0hBU0hFRCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTdWJwbGFuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U3VicGxhbi5jCmluZGV4IDg0YTFhOTE2ODIuLjdmOTBiNWY4MjggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVN1YnBsYW4uYwpAQCAtNTExLDYgKzUxMSw3IEBAIGJ1aWxkU3ViUGxhbkhh c2goU3ViUGxhblN0YXRlICpub2RlLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiAJCQkJCQkJ CQkJICBub2RlLT5rZXlDb2xJZHgsCiAJCQkJCQkJCQkJICBub2RlLT50YWJfZXFfZnVuY29p ZHMsCiAJCQkJCQkJCQkJICBub2RlLT50YWJfaGFzaF9mdW5jcywKKwkJCQkJCQkJCQkgIG5v ZGUtPnRhYl9jb2xsYXRpb25zLAogCQkJCQkJCQkJCSAgbmJ1Y2tldHMsCiAJCQkJCQkJCQkJ ICAwLAogCQkJCQkJCQkJCSAgbm9kZS0+aGFzaHRhYmxlY3h0LApAQCAtNTMzLDYgKzUzNCw3 IEBAIGJ1aWxkU3ViUGxhbkhhc2goU3ViUGxhblN0YXRlICpub2RlLCBFeHByQ29udGV4dCAq ZWNvbnRleHQpCiAJCQkJCQkJCQkJCSAgbm9kZS0+a2V5Q29sSWR4LAogCQkJCQkJCQkJCQkg IG5vZGUtPnRhYl9lcV9mdW5jb2lkcywKIAkJCQkJCQkJCQkJICBub2RlLT50YWJfaGFzaF9m dW5jcywKKwkJCQkJCQkJCQkJICBub2RlLT50YWJfY29sbGF0aW9ucywKIAkJCQkJCQkJCQkJ ICBuYnVja2V0cywKIAkJCQkJCQkJCQkJICAwLAogCQkJCQkJCQkJCQkgIG5vZGUtPmhhc2h0 YWJsZWN4dCwKQEAgLTgwOCw2ICs4MTAsNyBAQCBFeGVjSW5pdFN1YlBsYW4oU3ViUGxhbiAq c3VicGxhbiwgUGxhblN0YXRlICpwYXJlbnQpCiAJc3N0YXRlLT50YWJfZXFfZnVuY29pZHMg PSBOVUxMOwogCXNzdGF0ZS0+dGFiX2hhc2hfZnVuY3MgPSBOVUxMOwogCXNzdGF0ZS0+dGFi X2VxX2Z1bmNzID0gTlVMTDsKKwlzc3RhdGUtPnRhYl9jb2xsYXRpb25zID0gTlVMTDsKIAlz c3RhdGUtPmxoc19oYXNoX2Z1bmNzID0gTlVMTDsKIAlzc3RhdGUtPmN1cl9lcV9mdW5jcyA9 IE5VTEw7CiAKQEAgLTkwNiw2ICs5MDksNyBAQCBFeGVjSW5pdFN1YlBsYW4oU3ViUGxhbiAq c3VicGxhbiwgUGxhblN0YXRlICpwYXJlbnQpCiAJCXNzdGF0ZS0+dGFiX2VxX2Z1bmNvaWRz ID0gKE9pZCAqKSBwYWxsb2MobmNvbHMgKiBzaXplb2YoT2lkKSk7CiAJCXNzdGF0ZS0+dGFi X2hhc2hfZnVuY3MgPSAoRm1nckluZm8gKikgcGFsbG9jKG5jb2xzICogc2l6ZW9mKEZtZ3JJ bmZvKSk7CiAJCXNzdGF0ZS0+dGFiX2VxX2Z1bmNzID0gKEZtZ3JJbmZvICopIHBhbGxvYyhu Y29scyAqIHNpemVvZihGbWdySW5mbykpOworCQlzc3RhdGUtPnRhYl9jb2xsYXRpb25zID0g KE9pZCAqKSBwYWxsb2MobmNvbHMgKiBzaXplb2YoT2lkKSk7CiAJCXNzdGF0ZS0+bGhzX2hh c2hfZnVuY3MgPSAoRm1nckluZm8gKikgcGFsbG9jKG5jb2xzICogc2l6ZW9mKEZtZ3JJbmZv KSk7CiAJCXNzdGF0ZS0+Y3VyX2VxX2Z1bmNzID0gKEZtZ3JJbmZvICopIHBhbGxvYyhuY29s cyAqIHNpemVvZihGbWdySW5mbykpOwogCQlpID0gMTsKQEAgLTk1Niw2ICs5NjAsOSBAQCBF eGVjSW5pdFN1YlBsYW4oU3ViUGxhbiAqc3VicGxhbiwgUGxhblN0YXRlICpwYXJlbnQpCiAJ CQlmbWdyX2luZm8obGVmdF9oYXNoZm4sICZzc3RhdGUtPmxoc19oYXNoX2Z1bmNzW2kgLSAx XSk7CiAJCQlmbWdyX2luZm8ocmlnaHRfaGFzaGZuLCAmc3N0YXRlLT50YWJfaGFzaF9mdW5j c1tpIC0gMV0pOwogCisJCQkvKiBTZXQgY29sbGF0aW9uICovCisJCQlzc3RhdGUtPnRhYl9j b2xsYXRpb25zW2kgLSAxXSA9IG9wZXhwci0+aW5wdXRjb2xsaWQ7CisKIAkJCWkrKzsKIAkJ fQogCkBAIC05OTIsNiArOTk5LDcgQEAgRXhlY0luaXRTdWJQbGFuKFN1YlBsYW4gKnN1YnBs YW4sIFBsYW5TdGF0ZSAqcGFyZW50KQogCQkJCQkJCQkJCQkJCSBuY29scywKIAkJCQkJCQkJ CQkJCQkgc3N0YXRlLT5rZXlDb2xJZHgsCiAJCQkJCQkJCQkJCQkJIHNzdGF0ZS0+dGFiX2Vx X2Z1bmNvaWRzLAorCQkJCQkJCQkJCQkJCSBzc3RhdGUtPnRhYl9jb2xsYXRpb25zLAogCQkJ CQkJCQkJCQkJCSBwYXJlbnQpOwogCiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVVuaXF1ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5j CmluZGV4IGM1ZTQyMzJlNjguLjc5Y2FkMWNhNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVVbmlxdWUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMKQEAgLTE1Miw2ICsxNTIsNyBAQCBFeGVjSW5pdFVuaXF1ZShVbmlxdWUgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCSAgIG5vZGUtPm51bUNv bHMsCiAJCQkJCQkJICAgbm9kZS0+dW5pcUNvbElkeCwKIAkJCQkJCQkgICBub2RlLT51bmlx T3BlcmF0b3JzLAorCQkJCQkJCSAgIG5vZGUtPnVuaXFDb2xsYXRpb25zLAogCQkJCQkJCSAg ICZ1bmlxdWVzdGF0ZS0+cHMpOwogCiAJcmV0dXJuIHVuaXF1ZXN0YXRlOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDI5OGUzNzA3NDUuLjYzMTJlYzQ1MWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTIzNzAsNiArMjM3 MCw3IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCSAgIG5vZGUtPnBhcnROdW1Db2xzLAogCQkJCQkJ CQkgICBub2RlLT5wYXJ0Q29sSWR4LAogCQkJCQkJCQkgICBub2RlLT5wYXJ0T3BlcmF0b3Jz LAorCQkJCQkJCQkgICBub2RlLT5wYXJ0Q29sbGF0aW9ucywKIAkJCQkJCQkJICAgJndpbnN0 YXRlLT5zcy5wcyk7CiAKIAlpZiAobm9kZS0+b3JkTnVtQ29scyA+IDApCkBAIC0yMzc4LDYg KzIzNzksNyBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCQkgICBub2RlLT5vcmROdW1Db2xzLAogCQkJ CQkJCQkgICBub2RlLT5vcmRDb2xJZHgsCiAJCQkJCQkJCSAgIG5vZGUtPm9yZE9wZXJhdG9y cywKKwkJCQkJCQkJICAgbm9kZS0+b3JkQ29sbGF0aW9ucywKIAkJCQkJCQkJICAgJndpbnN0 YXRlLT5zcy5wcyk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBkYjQ5OTY4 NDA5Li4yMDFhMTllYTJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMjk3LDYgKzI5 Nyw3IEBAIF9jb3B5UmVjdXJzaXZlVW5pb24oY29uc3QgUmVjdXJzaXZlVW5pb24gKmZyb20p CiAJewogCQlDT1BZX1BPSU5URVJfRklFTEQoZHVwQ29sSWR4LCBmcm9tLT5udW1Db2xzICog c2l6ZW9mKEF0dHJOdW1iZXIpKTsKIAkJQ09QWV9QT0lOVEVSX0ZJRUxEKGR1cE9wZXJhdG9y cywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKKwkJQ09QWV9QT0lOVEVSX0ZJRUxE KGR1cENvbGxhdGlvbnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJfQogCUNP UFlfU0NBTEFSX0ZJRUxEKG51bUdyb3Vwcyk7CiAKQEAgLTk1Niw2ICs5NTcsNyBAQCBfY29w eUdyb3VwKGNvbnN0IEdyb3VwICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxEKG51bUNvbHMp OwogCUNPUFlfUE9JTlRFUl9GSUVMRChncnBDb2xJZHgsIGZyb20tPm51bUNvbHMgKiBzaXpl b2YoQXR0ck51bWJlcikpOwogCUNPUFlfUE9JTlRFUl9GSUVMRChncnBPcGVyYXRvcnMsIGZy b20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CisJQ09QWV9QT0lOVEVSX0ZJRUxEKGdycENv bGxhdGlvbnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAKIAlyZXR1cm4gbmV3 bm9kZTsKIH0KQEAgLTk3Nyw2ICs5NzksNyBAQCBfY29weUFnZyhjb25zdCBBZ2cgKmZyb20p CiAJewogCQlDT1BZX1BPSU5URVJfRklFTEQoZ3JwQ29sSWR4LCBmcm9tLT5udW1Db2xzICog c2l6ZW9mKEF0dHJOdW1iZXIpKTsKIAkJQ09QWV9QT0lOVEVSX0ZJRUxEKGdycE9wZXJhdG9y cywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKKwkJQ09QWV9QT0lOVEVSX0ZJRUxE KGdycENvbGxhdGlvbnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJfQogCUNP UFlfU0NBTEFSX0ZJRUxEKG51bUdyb3Vwcyk7CiAJQ09QWV9CSVRNQVBTRVRfRklFTEQoYWdn UGFyYW1zKTsKQEAgLTEwMDIsMTIgKzEwMDUsMTQgQEAgX2NvcHlXaW5kb3dBZ2coY29uc3Qg V2luZG93QWdnICpmcm9tKQogCXsKIAkJQ09QWV9QT0lOVEVSX0ZJRUxEKHBhcnRDb2xJZHgs IGZyb20tPnBhcnROdW1Db2xzICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKIAkJQ09QWV9QT0lO VEVSX0ZJRUxEKHBhcnRPcGVyYXRvcnMsIGZyb20tPnBhcnROdW1Db2xzICogc2l6ZW9mKE9p ZCkpOworCQlDT1BZX1BPSU5URVJfRklFTEQocGFydENvbGxhdGlvbnMsIGZyb20tPnBhcnRO dW1Db2xzICogc2l6ZW9mKE9pZCkpOwogCX0KIAlDT1BZX1NDQUxBUl9GSUVMRChvcmROdW1D b2xzKTsKIAlpZiAoZnJvbS0+b3JkTnVtQ29scyA+IDApCiAJewogCQlDT1BZX1BPSU5URVJf RklFTEQob3JkQ29sSWR4LCBmcm9tLT5vcmROdW1Db2xzICogc2l6ZW9mKEF0dHJOdW1iZXIp KTsKIAkJQ09QWV9QT0lOVEVSX0ZJRUxEKG9yZE9wZXJhdG9ycywgZnJvbS0+b3JkTnVtQ29s cyAqIHNpemVvZihPaWQpKTsKKwkJQ09QWV9QT0lOVEVSX0ZJRUxEKG9yZENvbGxhdGlvbnMs IGZyb20tPm9yZE51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJfQogCUNPUFlfU0NBTEFSX0ZJ RUxEKGZyYW1lT3B0aW9ucyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHN0YXJ0T2Zmc2V0KTsKQEAg LTEwNDAsNiArMTA0NSw3IEBAIF9jb3B5VW5pcXVlKGNvbnN0IFVuaXF1ZSAqZnJvbSkKIAlD T1BZX1NDQUxBUl9GSUVMRChudW1Db2xzKTsKIAlDT1BZX1BPSU5URVJfRklFTEQodW5pcUNv bElkeCwgZnJvbS0+bnVtQ29scyAqIHNpemVvZihBdHRyTnVtYmVyKSk7CiAJQ09QWV9QT0lO VEVSX0ZJRUxEKHVuaXFPcGVyYXRvcnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7 CisJQ09QWV9QT0lOVEVSX0ZJRUxEKHVuaXFDb2xsYXRpb25zLCBmcm9tLT5udW1Db2xzICog c2l6ZW9mKE9pZCkpOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9CkBAIC0xMDg5LDYgKzEwOTUs NyBAQCBfY29weVNldE9wKGNvbnN0IFNldE9wICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxE KG51bUNvbHMpOwogCUNPUFlfUE9JTlRFUl9GSUVMRChkdXBDb2xJZHgsIGZyb20tPm51bUNv bHMgKiBzaXplb2YoQXR0ck51bWJlcikpOwogCUNPUFlfUE9JTlRFUl9GSUVMRChkdXBPcGVy YXRvcnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CisJQ09QWV9QT0lOVEVSX0ZJ RUxEKGR1cENvbGxhdGlvbnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJQ09Q WV9TQ0FMQVJfRklFTEQoZmxhZ0NvbElkeCk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoZmlyc3RG bGFnKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChudW1Hcm91cHMpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKaW5kZXggNmVkYzdmMjM1OS4uM2E0MjNlZjFmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5j CkBAIC00NjAsNiArNDYwLDEwIEBAIF9vdXRSZWN1cnNpdmVVbmlvbihTdHJpbmdJbmZvIHN0 ciwgY29uc3QgUmVjdXJzaXZlVW5pb24gKm5vZGUpCiAJZm9yIChpID0gMDsgaSA8IG5vZGUt Pm51bUNvbHM7IGkrKykKIAkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIgJXUiLCBub2RlLT5k dXBPcGVyYXRvcnNbaV0pOwogCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICIgOmR1 cENvbGxhdGlvbnMiKTsKKwlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+bnVtQ29sczsgaSsrKQor CQlhcHBlbmRTdHJpbmdJbmZvKHN0ciwgIiAldSIsIG5vZGUtPmR1cENvbGxhdGlvbnNbaV0p OworCiAJV1JJVEVfTE9OR19GSUVMRChudW1Hcm91cHMpOwogfQogCkBAIC04MDcsNiArODEx LDEwIEBAIF9vdXRBZ2coU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEFnZyAqbm9kZSkKIAlmb3Ig KGkgPSAwOyBpIDwgbm9kZS0+bnVtQ29sczsgaSsrKQogCQlhcHBlbmRTdHJpbmdJbmZvKHN0 ciwgIiAldSIsIG5vZGUtPmdycE9wZXJhdG9yc1tpXSk7CiAKKwlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKHN0ciwgIiA6Z3JwQ29sbGF0aW9ucyIpOworCWZvciAoaSA9IDA7IGkgPCBub2Rl LT5udW1Db2xzOyBpKyspCisJCWFwcGVuZFN0cmluZ0luZm8oc3RyLCAiICV1Iiwgbm9kZS0+ Z3JwQ29sbGF0aW9uc1tpXSk7CisKIAlXUklURV9MT05HX0ZJRUxEKG51bUdyb3Vwcyk7CiAJ V1JJVEVfQklUTUFQU0VUX0ZJRUxEKGFnZ1BhcmFtcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChn cm91cGluZ1NldHMpOwpAQCAtODMzLDYgKzg0MSwxMCBAQCBfb3V0V2luZG93QWdnKFN0cmlu Z0luZm8gc3RyLCBjb25zdCBXaW5kb3dBZ2cgKm5vZGUpCiAJZm9yIChpID0gMDsgaSA8IG5v ZGUtPnBhcnROdW1Db2xzOyBpKyspCiAJCWFwcGVuZFN0cmluZ0luZm8oc3RyLCAiICV1Iiwg bm9kZS0+cGFydE9wZXJhdG9yc1tpXSk7CiAKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0 ciwgIiA6cGFydENvbGxhdGlvbnMiKTsKKwlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+cGFydE51 bUNvbHM7IGkrKykKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIgJXUiLCBub2RlLT5wYXJ0 Q29sbGF0aW9uc1tpXSk7CisKIAlXUklURV9JTlRfRklFTEQob3JkTnVtQ29scyk7CiAKIAlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA6b3JkQ29sSWR4Iik7CkBAIC04NDMsNiAr ODU1LDEwIEBAIF9vdXRXaW5kb3dBZ2coU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFdpbmRvd0Fn ZyAqbm9kZSkKIAlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+b3JkTnVtQ29sczsgaSsrKQogCQlh cHBlbmRTdHJpbmdJbmZvKHN0ciwgIiAldSIsIG5vZGUtPm9yZE9wZXJhdG9yc1tpXSk7CiAK KwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA6b3JkQ29sbGF0aW9ucyIpOworCWZv ciAoaSA9IDA7IGkgPCBub2RlLT5vcmROdW1Db2xzOyBpKyspCisJCWFwcGVuZFN0cmluZ0lu Zm8oc3RyLCAiICV1Iiwgbm9kZS0+b3JkQ29sbGF0aW9uc1tpXSk7CisKIAlXUklURV9JTlRf RklFTEQoZnJhbWVPcHRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKHN0YXJ0T2Zmc2V0KTsK IAlXUklURV9OT0RFX0ZJRUxEKGVuZE9mZnNldCk7CkBAIC04NzEsNiArODg3LDExIEBAIF9v dXRHcm91cChTdHJpbmdJbmZvIHN0ciwgY29uc3QgR3JvdXAgKm5vZGUpCiAJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhzdHIsICIgOmdycE9wZXJhdG9ycyIpOwogCWZvciAoaSA9IDA7IGkg PCBub2RlLT5udW1Db2xzOyBpKyspCiAJCWFwcGVuZFN0cmluZ0luZm8oc3RyLCAiICV1Iiwg bm9kZS0+Z3JwT3BlcmF0b3JzW2ldKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3Ry LCAiIDpncnBDb2xsYXRpb25zIik7CisJZm9yIChpID0gMDsgaSA8IG5vZGUtPm51bUNvbHM7 IGkrKykKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIgJXUiLCBub2RlLT5ncnBDb2xsYXRp b25zW2ldKTsKKwogfQogCiBzdGF0aWMgdm9pZApAQCAtOTI3LDYgKzk0OCwxMCBAQCBfb3V0 VW5pcXVlKFN0cmluZ0luZm8gc3RyLCBjb25zdCBVbmlxdWUgKm5vZGUpCiAJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhzdHIsICIgOnVuaXFPcGVyYXRvcnMiKTsKIAlmb3IgKGkgPSAwOyBp IDwgbm9kZS0+bnVtQ29sczsgaSsrKQogCQlhcHBlbmRTdHJpbmdJbmZvKHN0ciwgIiAldSIs IG5vZGUtPnVuaXFPcGVyYXRvcnNbaV0pOworCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhz dHIsICIgOnVuaXFDb2xsYXRpb25zIik7CisJZm9yIChpID0gMDsgaSA8IG5vZGUtPm51bUNv bHM7IGkrKykKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIgJXUiLCBub2RlLT51bmlxQ29s bGF0aW9uc1tpXSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC05NjMsNiArOTg4LDEwIEBAIF9v dXRTZXRPcChTdHJpbmdJbmZvIHN0ciwgY29uc3QgU2V0T3AgKm5vZGUpCiAJZm9yIChpID0g MDsgaSA8IG5vZGUtPm51bUNvbHM7IGkrKykKIAkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIg JXUiLCBub2RlLT5kdXBPcGVyYXRvcnNbaV0pOwogCisJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhzdHIsICIgOmR1cENvbGxhdGlvbnMiKTsKKwlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+bnVt Q29sczsgaSsrKQorCQlhcHBlbmRTdHJpbmdJbmZvKHN0ciwgIiAldSIsIG5vZGUtPmR1cENv bGxhdGlvbnNbaV0pOworCiAJV1JJVEVfSU5UX0ZJRUxEKGZsYWdDb2xJZHgpOwogCVdSSVRF X0lOVF9GSUVMRChmaXJzdEZsYWcpOwogCVdSSVRFX0xPTkdfRklFTEQobnVtR3JvdXBzKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2JhY2tl bmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggZmEyN2YzN2Q2Zi4uNjU1MGIzZGJlZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTE2NzIsNiArMTY3Miw3IEBAIF9yZWFkUmVjdXJz aXZlVW5pb24odm9pZCkKIAlSRUFEX0lOVF9GSUVMRChudW1Db2xzKTsKIAlSRUFEX0FUVFJO VU1CRVJfQVJSQVkoZHVwQ29sSWR4LCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAlSRUFEX09J RF9BUlJBWShkdXBPcGVyYXRvcnMsIGxvY2FsX25vZGUtPm51bUNvbHMpOworCVJFQURfT0lE X0FSUkFZKGR1cENvbGxhdGlvbnMsIGxvY2FsX25vZGUtPm51bUNvbHMpOwogCVJFQURfTE9O R19GSUVMRChudW1Hcm91cHMpOwogCiAJUkVBRF9ET05FKCk7CkBAIC0yMTM4LDYgKzIxMzks NyBAQCBfcmVhZEdyb3VwKHZvaWQpCiAJUkVBRF9JTlRfRklFTEQobnVtQ29scyk7CiAJUkVB RF9BVFRSTlVNQkVSX0FSUkFZKGdycENvbElkeCwgbG9jYWxfbm9kZS0+bnVtQ29scyk7CiAJ UkVBRF9PSURfQVJSQVkoZ3JwT3BlcmF0b3JzLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKKwlS RUFEX09JRF9BUlJBWShncnBDb2xsYXRpb25zLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAog CVJFQURfRE9ORSgpOwogfQpAQCAtMjE1Nyw2ICsyMTU5LDcgQEAgX3JlYWRBZ2codm9pZCkK IAlSRUFEX0lOVF9GSUVMRChudW1Db2xzKTsKIAlSRUFEX0FUVFJOVU1CRVJfQVJSQVkoZ3Jw Q29sSWR4LCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAlSRUFEX09JRF9BUlJBWShncnBPcGVy YXRvcnMsIGxvY2FsX25vZGUtPm51bUNvbHMpOworCVJFQURfT0lEX0FSUkFZKGdycENvbGxh dGlvbnMsIGxvY2FsX25vZGUtPm51bUNvbHMpOwogCVJFQURfTE9OR19GSUVMRChudW1Hcm91 cHMpOwogCVJFQURfQklUTUFQU0VUX0ZJRUxEKGFnZ1BhcmFtcyk7CiAJUkVBRF9OT0RFX0ZJ RUxEKGdyb3VwaW5nU2V0cyk7CkBAIC0yMTc5LDkgKzIxODIsMTEgQEAgX3JlYWRXaW5kb3dB Z2codm9pZCkKIAlSRUFEX0lOVF9GSUVMRChwYXJ0TnVtQ29scyk7CiAJUkVBRF9BVFRSTlVN QkVSX0FSUkFZKHBhcnRDb2xJZHgsIGxvY2FsX25vZGUtPnBhcnROdW1Db2xzKTsKIAlSRUFE X09JRF9BUlJBWShwYXJ0T3BlcmF0b3JzLCBsb2NhbF9ub2RlLT5wYXJ0TnVtQ29scyk7CisJ UkVBRF9PSURfQVJSQVkocGFydENvbGxhdGlvbnMsIGxvY2FsX25vZGUtPnBhcnROdW1Db2xz KTsKIAlSRUFEX0lOVF9GSUVMRChvcmROdW1Db2xzKTsKIAlSRUFEX0FUVFJOVU1CRVJfQVJS QVkob3JkQ29sSWR4LCBsb2NhbF9ub2RlLT5vcmROdW1Db2xzKTsKIAlSRUFEX09JRF9BUlJB WShvcmRPcGVyYXRvcnMsIGxvY2FsX25vZGUtPm9yZE51bUNvbHMpOworCVJFQURfT0lEX0FS UkFZKG9yZENvbGxhdGlvbnMsIGxvY2FsX25vZGUtPm9yZE51bUNvbHMpOwogCVJFQURfSU5U X0ZJRUxEKGZyYW1lT3B0aW9ucyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHN0YXJ0T2Zmc2V0KTsK IAlSRUFEX05PREVfRklFTEQoZW5kT2Zmc2V0KTsKQEAgLTIyMDcsNiArMjIxMiw3IEBAIF9y ZWFkVW5pcXVlKHZvaWQpCiAJUkVBRF9JTlRfRklFTEQobnVtQ29scyk7CiAJUkVBRF9BVFRS TlVNQkVSX0FSUkFZKHVuaXFDb2xJZHgsIGxvY2FsX25vZGUtPm51bUNvbHMpOwogCVJFQURf T0lEX0FSUkFZKHVuaXFPcGVyYXRvcnMsIGxvY2FsX25vZGUtPm51bUNvbHMpOworCVJFQURf T0lEX0FSUkFZKHVuaXFDb2xsYXRpb25zLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAogCVJF QURfRE9ORSgpOwogfQpAQCAtMjI4NSw2ICsyMjkxLDcgQEAgX3JlYWRTZXRPcCh2b2lkKQog CVJFQURfSU5UX0ZJRUxEKG51bUNvbHMpOwogCVJFQURfQVRUUk5VTUJFUl9BUlJBWShkdXBD b2xJZHgsIGxvY2FsX25vZGUtPm51bUNvbHMpOwogCVJFQURfT0lEX0FSUkFZKGR1cE9wZXJh dG9ycywgbG9jYWxfbm9kZS0+bnVtQ29scyk7CisJUkVBRF9PSURfQVJSQVkoZHVwQ29sbGF0 aW9ucywgbG9jYWxfbm9kZS0+bnVtQ29scyk7CiAJUkVBRF9JTlRfRklFTEQoZmxhZ0NvbElk eCk7CiAJUkVBRF9JTlRfRklFTEQoZmlyc3RGbGFnKTsKIAlSRUFEX0xPTkdfRklFTEQobnVt R3JvdXBzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0 ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRl eCA5MWNmNzgyMzNkLi42MTUyMzZkMTIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vY3JlYXRlcGxhbi5jCkBAIC0yNTYsMTQgKzI1NiwxNCBAQCBzdGF0aWMgU29ydCAqbWFr ZV9zb3J0X2Zyb21fZ3JvdXBjb2xzKExpc3QgKmdyb3VwY2xzLAogCQkJCQkJIFBsYW4gKmxl ZnR0cmVlKTsKIHN0YXRpYyBNYXRlcmlhbCAqbWFrZV9tYXRlcmlhbChQbGFuICpsZWZ0dHJl ZSk7CiBzdGF0aWMgV2luZG93QWdnICptYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgSW5k ZXggd2lucmVmLAotCQkJICAgaW50IHBhcnROdW1Db2xzLCBBdHRyTnVtYmVyICpwYXJ0Q29s SWR4LCBPaWQgKnBhcnRPcGVyYXRvcnMsCi0JCQkgICBpbnQgb3JkTnVtQ29scywgQXR0ck51 bWJlciAqb3JkQ29sSWR4LCBPaWQgKm9yZE9wZXJhdG9ycywKKwkJCSAgIGludCBwYXJ0TnVt Q29scywgQXR0ck51bWJlciAqcGFydENvbElkeCwgT2lkICpwYXJ0T3BlcmF0b3JzLCBPaWQg KnBhcnRDb2xsYXRpb25zLAorCQkJICAgaW50IG9yZE51bUNvbHMsIEF0dHJOdW1iZXIgKm9y ZENvbElkeCwgT2lkICpvcmRPcGVyYXRvcnMsIE9pZCAqb3JkQ29sbGF0aW9ucywKIAkJCSAg IGludCBmcmFtZU9wdGlvbnMsIE5vZGUgKnN0YXJ0T2Zmc2V0LCBOb2RlICplbmRPZmZzZXQs CiAJCQkgICBPaWQgc3RhcnRJblJhbmdlRnVuYywgT2lkIGVuZEluUmFuZ2VGdW5jLAogCQkJ ICAgT2lkIGluUmFuZ2VDb2xsLCBib29sIGluUmFuZ2VBc2MsIGJvb2wgaW5SYW5nZU51bGxz Rmlyc3QsCiAJCQkgICBQbGFuICpsZWZ0dHJlZSk7CiBzdGF0aWMgR3JvdXAgKm1ha2VfZ3Jv dXAoTGlzdCAqdGxpc3QsIExpc3QgKnF1YWwsIGludCBudW1Hcm91cENvbHMsCi0JCSAgIEF0 dHJOdW1iZXIgKmdycENvbElkeCwgT2lkICpncnBPcGVyYXRvcnMsCisJCSAgIEF0dHJOdW1i ZXIgKmdycENvbElkeCwgT2lkICpncnBPcGVyYXRvcnMsIE9pZCAqZ3JwQ29sbGF0aW9ucywK IAkJICAgUGxhbiAqbGVmdHRyZWUpOwogc3RhdGljIFVuaXF1ZSAqbWFrZV91bmlxdWVfZnJv bV9zb3J0Y2xhdXNlcyhQbGFuICpsZWZ0dHJlZSwgTGlzdCAqZGlzdGluY3RMaXN0KTsKIHN0 YXRpYyBVbmlxdWUgKm1ha2VfdW5pcXVlX2Zyb21fcGF0aGtleXMoUGxhbiAqbGVmdHRyZWUs CkBAIC0xMzU1LDYgKzEzNTUsNyBAQCBjcmVhdGVfdW5pcXVlX3BsYW4oUGxhbm5lckluZm8g KnJvb3QsIFVuaXF1ZVBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCWJvb2wJCW5ld2l0 ZW1zOwogCWludAkJCW51bUdyb3VwQ29sczsKIAlBdHRyTnVtYmVyICpncm91cENvbElkeDsK KwlPaWQJCSAgICpncm91cENvbGxhdGlvbnM7CiAJaW50CQkJZ3JvdXBDb2xQb3M7CiAJTGlz dENlbGwgICAqbDsKIApAQCAtMTQyMSw2ICsxNDIyLDcgQEAgY3JlYXRlX3VuaXF1ZV9wbGFu KFBsYW5uZXJJbmZvICpyb290LCBVbmlxdWVQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykK IAluZXd0bGlzdCA9IHN1YnBsYW4tPnRhcmdldGxpc3Q7CiAJbnVtR3JvdXBDb2xzID0gbGlz dF9sZW5ndGgodW5pcV9leHBycyk7CiAJZ3JvdXBDb2xJZHggPSAoQXR0ck51bWJlciAqKSBw YWxsb2MobnVtR3JvdXBDb2xzICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKKwlncm91cENvbGxh dGlvbnMgPSAoT2lkICopIHBhbGxvYyhudW1Hcm91cENvbHMgKiBzaXplb2YoT2lkKSk7CiAK IAlncm91cENvbFBvcyA9IDA7CiAJZm9yZWFjaChsLCB1bmlxX2V4cHJzKQpAQCAtMTQzMSw3 ICsxNDMzLDkgQEAgY3JlYXRlX3VuaXF1ZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBVbmlx dWVQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkJdGxlID0gdGxpc3RfbWVtYmVyKHVu aXFleHByLCBuZXd0bGlzdCk7CiAJCWlmICghdGxlKQkJCQkvKiBzaG91bGRuJ3QgaGFwcGVu ICovCiAJCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGZpbmQgdW5pcXVlIGV4cHJlc3Npb24g aW4gc3VicGxhbiB0bGlzdCIpOwotCQlncm91cENvbElkeFtncm91cENvbFBvcysrXSA9IHRs ZS0+cmVzbm87CisJCWdyb3VwQ29sSWR4W2dyb3VwQ29sUG9zXSA9IHRsZS0+cmVzbm87CisJ CWdyb3VwQ29sbGF0aW9uc1tncm91cENvbFBvc10gPSBleHByQ29sbGF0aW9uKChOb2RlICop IHRsZS0+ZXhwcik7CisJCWdyb3VwQ29sUG9zKys7CiAJfQogCiAJaWYgKGJlc3RfcGF0aC0+ dW1ldGhvZCA9PSBVTklRVUVfUEFUSF9IQVNIKQpAQCAtMTQ2OSw2ICsxNDczLDcgQEAgY3Jl YXRlX3VuaXF1ZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBVbmlxdWVQYXRoICpiZXN0X3Bh dGgsIGludCBmbGFncykKIAkJCQkJCQkJIG51bUdyb3VwQ29scywKIAkJCQkJCQkJIGdyb3Vw Q29sSWR4LAogCQkJCQkJCQkgZ3JvdXBPcGVyYXRvcnMsCisJCQkJCQkJCSBncm91cENvbGxh dGlvbnMsCiAJCQkJCQkJCSBOSUwsCiAJCQkJCQkJCSBOSUwsCiAJCQkJCQkJCSBiZXN0X3Bh dGgtPnBhdGgucm93cywKQEAgLTE4NTEsNiArMTg1Niw4IEBAIGNyZWF0ZV9ncm91cF9wbGFu KFBsYW5uZXJJbmZvICpyb290LCBHcm91cFBhdGggKmJlc3RfcGF0aCkKIAkJCQkJICBleHRy YWN0X2dyb3VwaW5nX2NvbHMoYmVzdF9wYXRoLT5ncm91cENsYXVzZSwKIAkJCQkJCQkJCQkJ c3VicGxhbi0+dGFyZ2V0bGlzdCksCiAJCQkJCSAgZXh0cmFjdF9ncm91cGluZ19vcHMoYmVz dF9wYXRoLT5ncm91cENsYXVzZSksCisJCQkJCSAgZXh0cmFjdF9ncm91cGluZ19jb2xsYXRp b25zKGJlc3RfcGF0aC0+Z3JvdXBDbGF1c2UsCisJCQkJCQkJCQkJCQkgIHN1YnBsYW4tPnRh cmdldGxpc3QpLAogCQkJCQkgIHN1YnBsYW4pOwogCiAJY29weV9nZW5lcmljX3BhdGhfaW5m bygmcGxhbi0+cGxhbiwgKFBhdGggKikgYmVzdF9wYXRoKTsKQEAgLTE5MTcsNiArMTkyNCw4 IEBAIGNyZWF0ZV9hZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQWdnUGF0aCAqYmVzdF9w YXRoKQogCQkJCQlleHRyYWN0X2dyb3VwaW5nX2NvbHMoYmVzdF9wYXRoLT5ncm91cENsYXVz ZSwKIAkJCQkJCQkJCQkgIHN1YnBsYW4tPnRhcmdldGxpc3QpLAogCQkJCQlleHRyYWN0X2dy b3VwaW5nX29wcyhiZXN0X3BhdGgtPmdyb3VwQ2xhdXNlKSwKKwkJCQkJZXh0cmFjdF9ncm91 cGluZ19jb2xsYXRpb25zKGJlc3RfcGF0aC0+Z3JvdXBDbGF1c2UsCisJCQkJCQkJCQkJCQlz dWJwbGFuLT50YXJnZXRsaXN0KSwKIAkJCQkJTklMLAogCQkJCQlOSUwsCiAJCQkJCWJlc3Rf cGF0aC0+bnVtR3JvdXBzLApAQCAtMjA3OCw2ICsyMDg3LDcgQEAgY3JlYXRlX2dyb3VwaW5n c2V0c19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBHcm91cGluZ1NldHNQYXRoICpiZXN0X3Bh dGgpCiAJCQkJCQkJCQkJIGxpc3RfbGVuZ3RoKChMaXN0ICopIGxpbml0aWFsKHJvbGx1cC0+ Z3NldHMpKSwKIAkJCQkJCQkJCQkgbmV3X2dycENvbElkeCwKIAkJCQkJCQkJCQkgZXh0cmFj dF9ncm91cGluZ19vcHMocm9sbHVwLT5ncm91cENsYXVzZSksCisJCQkJCQkJCQkJIGV4dHJh Y3RfZ3JvdXBpbmdfY29sbGF0aW9ucyhyb2xsdXAtPmdyb3VwQ2xhdXNlLCBzdWJwbGFuLT50 YXJnZXRsaXN0KSwKIAkJCQkJCQkJCQkgcm9sbHVwLT5nc2V0cywKIAkJCQkJCQkJCQkgTklM LAogCQkJCQkJCQkJCSByb2xsdXAtPm51bUdyb3VwcywKQEAgLTIxMTUsNiArMjEyNSw3IEBA IGNyZWF0ZV9ncm91cGluZ3NldHNfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgR3JvdXBpbmdT ZXRzUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJbnVtR3JvdXBDb2xzLAogCQkJCQkJdG9wX2dy cENvbElkeCwKIAkJCQkJCWV4dHJhY3RfZ3JvdXBpbmdfb3BzKHJvbGx1cC0+Z3JvdXBDbGF1 c2UpLAorCQkJCQkJZXh0cmFjdF9ncm91cGluZ19jb2xsYXRpb25zKHJvbGx1cC0+Z3JvdXBD bGF1c2UsIHN1YnBsYW4tPnRhcmdldGxpc3QpLAogCQkJCQkJcm9sbHVwLT5nc2V0cywKIAkJ CQkJCWNoYWluLAogCQkJCQkJcm9sbHVwLT5udW1Hcm91cHMsCkBAIC0yMjE0LDkgKzIyMjUs MTEgQEAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBXaW5kb3dB Z2dQYXRoICpiZXN0X3BhdGgpCiAJaW50CQkJcGFydE51bUNvbHM7CiAJQXR0ck51bWJlciAq cGFydENvbElkeDsKIAlPaWQJCSAgICpwYXJ0T3BlcmF0b3JzOworCU9pZAkJICAgKnBhcnRD b2xsYXRpb25zOwogCWludAkJCW9yZE51bUNvbHM7CiAJQXR0ck51bWJlciAqb3JkQ29sSWR4 OwogCU9pZAkJICAgKm9yZE9wZXJhdG9yczsKKwlPaWQJCSAgICpvcmRDb2xsYXRpb25zOwog CUxpc3RDZWxsICAgKmxjOwogCiAJLyoKQEAgLTIyMzgsNiArMjI1MSw3IEBAIGNyZWF0ZV93 aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9w YXRoKQogCSAqLwogCXBhcnRDb2xJZHggPSAoQXR0ck51bWJlciAqKSBwYWxsb2Moc2l6ZW9m KEF0dHJOdW1iZXIpICogbnVtUGFydCk7CiAJcGFydE9wZXJhdG9ycyA9IChPaWQgKikgcGFs bG9jKHNpemVvZihPaWQpICogbnVtUGFydCk7CisJcGFydENvbGxhdGlvbnMgPSAoT2lkICop IHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bVBhcnQpOwogCiAJcGFydE51bUNvbHMgPSAwOwog CWZvcmVhY2gobGMsIHdjLT5wYXJ0aXRpb25DbGF1c2UpCkBAIC0yMjQ4LDExICsyMjYyLDEz IEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdn UGF0aCAqYmVzdF9wYXRoKQogCQlBc3NlcnQoT2lkSXNWYWxpZChzZ2MtPmVxb3ApKTsKIAkJ cGFydENvbElkeFtwYXJ0TnVtQ29sc10gPSB0bGUtPnJlc25vOwogCQlwYXJ0T3BlcmF0b3Jz W3BhcnROdW1Db2xzXSA9IHNnYy0+ZXFvcDsKKwkJcGFydENvbGxhdGlvbnNbcGFydE51bUNv bHNdID0gZXhwckNvbGxhdGlvbigoTm9kZSAqKSB0bGUtPmV4cHIpOwogCQlwYXJ0TnVtQ29s cysrOwogCX0KIAogCW9yZENvbElkeCA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2Yo QXR0ck51bWJlcikgKiBudW1PcmRlcik7CiAJb3JkT3BlcmF0b3JzID0gKE9pZCAqKSBwYWxs b2Moc2l6ZW9mKE9pZCkgKiBudW1PcmRlcik7CisJb3JkQ29sbGF0aW9ucyA9IChPaWQgKikg cGFsbG9jKHNpemVvZihPaWQpICogbnVtT3JkZXIpOwogCiAJb3JkTnVtQ29scyA9IDA7CiAJ Zm9yZWFjaChsYywgd2MtPm9yZGVyQ2xhdXNlKQpAQCAtMjI2Myw2ICsyMjc5LDcgQEAgY3Jl YXRlX3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBXaW5kb3dBZ2dQYXRoICpi ZXN0X3BhdGgpCiAJCUFzc2VydChPaWRJc1ZhbGlkKHNnYy0+ZXFvcCkpOwogCQlvcmRDb2xJ ZHhbb3JkTnVtQ29sc10gPSB0bGUtPnJlc25vOwogCQlvcmRPcGVyYXRvcnNbb3JkTnVtQ29s c10gPSBzZ2MtPmVxb3A7CisJCW9yZENvbGxhdGlvbnNbb3JkTnVtQ29sc10gPSBleHByQ29s bGF0aW9uKChOb2RlICopIHRsZS0+ZXhwcik7CiAJCW9yZE51bUNvbHMrKzsKIAl9CiAKQEAg LTIyNzIsOSArMjI4OSwxMSBAQCBjcmVhdGVfd2luZG93YWdnX3BsYW4oUGxhbm5lckluZm8g KnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkJCQkJCSAgcGFydE51bUNvbHMs CiAJCQkJCQkgIHBhcnRDb2xJZHgsCiAJCQkJCQkgIHBhcnRPcGVyYXRvcnMsCisJCQkJCQkg IHBhcnRDb2xsYXRpb25zLAogCQkJCQkJICBvcmROdW1Db2xzLAogCQkJCQkJICBvcmRDb2xJ ZHgsCiAJCQkJCQkgIG9yZE9wZXJhdG9ycywKKwkJCQkJCSAgb3JkQ29sbGF0aW9ucywKIAkJ CQkJCSAgd2MtPmZyYW1lT3B0aW9ucywKIAkJCQkJCSAgd2MtPnN0YXJ0T2Zmc2V0LAogCQkJ CQkJICB3Yy0+ZW5kT2Zmc2V0LApAQCAtNTQwOSwxMCArNTQyOCwxMiBAQCBtYWtlX3JlY3Vy c2l2ZV91bmlvbihMaXN0ICp0bGlzdCwKIAkJaW50CQkJa2V5bm8gPSAwOwogCQlBdHRyTnVt YmVyICpkdXBDb2xJZHg7CiAJCU9pZAkJICAgKmR1cE9wZXJhdG9yczsKKwkJT2lkCQkgICAq ZHVwQ29sbGF0aW9uczsKIAkJTGlzdENlbGwgICAqc2xpdGVtOwogCiAJCWR1cENvbElkeCA9 IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51bWJlcikgKiBudW1Db2xzKTsK IAkJZHVwT3BlcmF0b3JzID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBudW1Db2xz KTsKKwkJZHVwQ29sbGF0aW9ucyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogbnVt Q29scyk7CiAKIAkJZm9yZWFjaChzbGl0ZW0sIGRpc3RpbmN0TGlzdCkKIAkJewpAQCAtNTQy MiwxMSArNTQ0MywxMyBAQCBtYWtlX3JlY3Vyc2l2ZV91bmlvbihMaXN0ICp0bGlzdCwKIAog CQkJZHVwQ29sSWR4W2tleW5vXSA9IHRsZS0+cmVzbm87CiAJCQlkdXBPcGVyYXRvcnNba2V5 bm9dID0gc29ydGNsLT5lcW9wOworCQkJZHVwQ29sbGF0aW9uc1trZXlub10gPSBleHByQ29s bGF0aW9uKChOb2RlICopIHRsZS0+ZXhwcik7CiAJCQlBc3NlcnQoT2lkSXNWYWxpZChkdXBP cGVyYXRvcnNba2V5bm9dKSk7CiAJCQlrZXlubysrOwogCQl9CiAJCW5vZGUtPmR1cENvbElk eCA9IGR1cENvbElkeDsKIAkJbm9kZS0+ZHVwT3BlcmF0b3JzID0gZHVwT3BlcmF0b3JzOwor CQlub2RlLT5kdXBDb2xsYXRpb25zID0gZHVwQ29sbGF0aW9uczsKIAl9CiAJbm9kZS0+bnVt R3JvdXBzID0gbnVtR3JvdXBzOwogCkBAIC02MDk4LDcgKzYxMjEsNyBAQCBtYXRlcmlhbGl6 ZV9maW5pc2hlZF9wbGFuKFBsYW4gKnN1YnBsYW4pCiBBZ2cgKgogbWFrZV9hZ2coTGlzdCAq dGxpc3QsIExpc3QgKnF1YWwsCiAJCSBBZ2dTdHJhdGVneSBhZ2dzdHJhdGVneSwgQWdnU3Bs aXQgYWdnc3BsaXQsCi0JCSBpbnQgbnVtR3JvdXBDb2xzLCBBdHRyTnVtYmVyICpncnBDb2xJ ZHgsIE9pZCAqZ3JwT3BlcmF0b3JzLAorCQkgaW50IG51bUdyb3VwQ29scywgQXR0ck51bWJl ciAqZ3JwQ29sSWR4LCBPaWQgKmdycE9wZXJhdG9ycywgT2lkICpncnBDb2xsYXRpb25zLAog CQkgTGlzdCAqZ3JvdXBpbmdTZXRzLCBMaXN0ICpjaGFpbiwKIAkJIGRvdWJsZSBkTnVtR3Jv dXBzLCBQbGFuICpsZWZ0dHJlZSkKIHsKQEAgLTYxMTQsNiArNjEzNyw3IEBAIG1ha2VfYWdn KExpc3QgKnRsaXN0LCBMaXN0ICpxdWFsLAogCW5vZGUtPm51bUNvbHMgPSBudW1Hcm91cENv bHM7CiAJbm9kZS0+Z3JwQ29sSWR4ID0gZ3JwQ29sSWR4OwogCW5vZGUtPmdycE9wZXJhdG9y cyA9IGdycE9wZXJhdG9yczsKKwlub2RlLT5ncnBDb2xsYXRpb25zID0gZ3JwQ29sbGF0aW9u czsKIAlub2RlLT5udW1Hcm91cHMgPSBudW1Hcm91cHM7CiAJbm9kZS0+YWdnUGFyYW1zID0g TlVMTDsJCS8qIFNTX2ZpbmFsaXplX3BsYW4oKSB3aWxsIGZpbGwgdGhpcyAqLwogCW5vZGUt Pmdyb3VwaW5nU2V0cyA9IGdyb3VwaW5nU2V0czsKQEAgLTYxMjksOCArNjE1Myw4IEBAIG1h a2VfYWdnKExpc3QgKnRsaXN0LCBMaXN0ICpxdWFsLAogCiBzdGF0aWMgV2luZG93QWdnICoK IG1ha2Vfd2luZG93YWdnKExpc3QgKnRsaXN0LCBJbmRleCB3aW5yZWYsCi0JCQkgICBpbnQg cGFydE51bUNvbHMsIEF0dHJOdW1iZXIgKnBhcnRDb2xJZHgsIE9pZCAqcGFydE9wZXJhdG9y cywKLQkJCSAgIGludCBvcmROdW1Db2xzLCBBdHRyTnVtYmVyICpvcmRDb2xJZHgsIE9pZCAq b3JkT3BlcmF0b3JzLAorCQkJICAgaW50IHBhcnROdW1Db2xzLCBBdHRyTnVtYmVyICpwYXJ0 Q29sSWR4LCBPaWQgKnBhcnRPcGVyYXRvcnMsIE9pZCAqcGFydENvbGxhdGlvbnMsCisJCQkg ICBpbnQgb3JkTnVtQ29scywgQXR0ck51bWJlciAqb3JkQ29sSWR4LCBPaWQgKm9yZE9wZXJh dG9ycywgT2lkICpvcmRDb2xsYXRpb25zLAogCQkJICAgaW50IGZyYW1lT3B0aW9ucywgTm9k ZSAqc3RhcnRPZmZzZXQsIE5vZGUgKmVuZE9mZnNldCwKIAkJCSAgIE9pZCBzdGFydEluUmFu Z2VGdW5jLCBPaWQgZW5kSW5SYW5nZUZ1bmMsCiAJCQkgICBPaWQgaW5SYW5nZUNvbGwsIGJv b2wgaW5SYW5nZUFzYywgYm9vbCBpblJhbmdlTnVsbHNGaXJzdCwKQEAgLTYxNDMsOSArNjE2 NywxMSBAQCBtYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgSW5kZXggd2lucmVmLAogCW5v ZGUtPnBhcnROdW1Db2xzID0gcGFydE51bUNvbHM7CiAJbm9kZS0+cGFydENvbElkeCA9IHBh cnRDb2xJZHg7CiAJbm9kZS0+cGFydE9wZXJhdG9ycyA9IHBhcnRPcGVyYXRvcnM7CisJbm9k ZS0+cGFydENvbGxhdGlvbnMgPSBwYXJ0Q29sbGF0aW9uczsKIAlub2RlLT5vcmROdW1Db2xz ID0gb3JkTnVtQ29sczsKIAlub2RlLT5vcmRDb2xJZHggPSBvcmRDb2xJZHg7CiAJbm9kZS0+ b3JkT3BlcmF0b3JzID0gb3JkT3BlcmF0b3JzOworCW5vZGUtPm9yZENvbGxhdGlvbnMgPSBv cmRDb2xsYXRpb25zOwogCW5vZGUtPmZyYW1lT3B0aW9ucyA9IGZyYW1lT3B0aW9uczsKIAlu b2RlLT5zdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0OwogCW5vZGUtPmVuZE9mZnNldCA9IGVu ZE9mZnNldDsKQEAgLTYxNzAsNiArNjE5Niw3IEBAIG1ha2VfZ3JvdXAoTGlzdCAqdGxpc3Qs CiAJCSAgIGludCBudW1Hcm91cENvbHMsCiAJCSAgIEF0dHJOdW1iZXIgKmdycENvbElkeCwK IAkJICAgT2lkICpncnBPcGVyYXRvcnMsCisJCSAgIE9pZCAqZ3JwQ29sbGF0aW9ucywKIAkJ ICAgUGxhbiAqbGVmdHRyZWUpCiB7CiAJR3JvdXAJICAgKm5vZGUgPSBtYWtlTm9kZShHcm91 cCk7CkBAIC02MTc4LDYgKzYyMDUsNyBAQCBtYWtlX2dyb3VwKExpc3QgKnRsaXN0LAogCW5v ZGUtPm51bUNvbHMgPSBudW1Hcm91cENvbHM7CiAJbm9kZS0+Z3JwQ29sSWR4ID0gZ3JwQ29s SWR4OwogCW5vZGUtPmdycE9wZXJhdG9ycyA9IGdycE9wZXJhdG9yczsKKwlub2RlLT5ncnBD b2xsYXRpb25zID0gZ3JwQ29sbGF0aW9uczsKIAogCXBsYW4tPnF1YWwgPSBxdWFsOwogCXBs YW4tPnRhcmdldGxpc3QgPSB0bGlzdDsKQEAgLTYyMDEsNiArNjIyOSw3IEBAIG1ha2VfdW5p cXVlX2Zyb21fc29ydGNsYXVzZXMoUGxhbiAqbGVmdHRyZWUsIExpc3QgKmRpc3RpbmN0TGlz dCkKIAlpbnQJCQlrZXlubyA9IDA7CiAJQXR0ck51bWJlciAqdW5pcUNvbElkeDsKIAlPaWQJ CSAgICp1bmlxT3BlcmF0b3JzOworCU9pZAkJICAgKnVuaXFDb2xsYXRpb25zOwogCUxpc3RD ZWxsICAgKnNsaXRlbTsKIAogCXBsYW4tPnRhcmdldGxpc3QgPSBsZWZ0dHJlZS0+dGFyZ2V0 bGlzdDsKQEAgLTYyMTUsNiArNjI0NCw3IEBAIG1ha2VfdW5pcXVlX2Zyb21fc29ydGNsYXVz ZXMoUGxhbiAqbGVmdHRyZWUsIExpc3QgKmRpc3RpbmN0TGlzdCkKIAlBc3NlcnQobnVtQ29s cyA+IDApOwogCXVuaXFDb2xJZHggPSAoQXR0ck51bWJlciAqKSBwYWxsb2Moc2l6ZW9mKEF0 dHJOdW1iZXIpICogbnVtQ29scyk7CiAJdW5pcU9wZXJhdG9ycyA9IChPaWQgKikgcGFsbG9j KHNpemVvZihPaWQpICogbnVtQ29scyk7CisJdW5pcUNvbGxhdGlvbnMgPSAoT2lkICopIHBh bGxvYyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOwogCiAJZm9yZWFjaChzbGl0ZW0sIGRpc3Rp bmN0TGlzdCkKIAl7CkBAIC02MjIzLDYgKzYyNTMsNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3Nv cnRjbGF1c2VzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpkaXN0aW5jdExpc3QpCiAKIAkJdW5p cUNvbElkeFtrZXlub10gPSB0bGUtPnJlc25vOwogCQl1bmlxT3BlcmF0b3JzW2tleW5vXSA9 IHNvcnRjbC0+ZXFvcDsKKwkJdW5pcUNvbGxhdGlvbnNba2V5bm9dID0gZXhwckNvbGxhdGlv bigoTm9kZSAqKSB0bGUtPmV4cHIpOwogCQlBc3NlcnQoT2lkSXNWYWxpZCh1bmlxT3BlcmF0 b3JzW2tleW5vXSkpOwogCQlrZXlubysrOwogCX0KQEAgLTYyMzAsNiArNjI2MSw3IEBAIG1h a2VfdW5pcXVlX2Zyb21fc29ydGNsYXVzZXMoUGxhbiAqbGVmdHRyZWUsIExpc3QgKmRpc3Rp bmN0TGlzdCkKIAlub2RlLT5udW1Db2xzID0gbnVtQ29sczsKIAlub2RlLT51bmlxQ29sSWR4 ID0gdW5pcUNvbElkeDsKIAlub2RlLT51bmlxT3BlcmF0b3JzID0gdW5pcU9wZXJhdG9yczsK Kwlub2RlLT51bmlxQ29sbGF0aW9ucyA9IHVuaXFDb2xsYXRpb25zOwogCiAJcmV0dXJuIG5v ZGU7CiB9CkBAIC02MjQ1LDYgKzYyNzcsNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3BhdGhrZXlz KFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5cywgaW50IG51bUNvbHMpCiAJaW50CQkJ a2V5bm8gPSAwOwogCUF0dHJOdW1iZXIgKnVuaXFDb2xJZHg7CiAJT2lkCQkgICAqdW5pcU9w ZXJhdG9yczsKKwlPaWQJCSAgICp1bmlxQ29sbGF0aW9uczsKIAlMaXN0Q2VsbCAgICpsYzsK IAogCXBsYW4tPnRhcmdldGxpc3QgPSBsZWZ0dHJlZS0+dGFyZ2V0bGlzdDsKQEAgLTYyNjAs NiArNjI5Myw3IEBAIG1ha2VfdW5pcXVlX2Zyb21fcGF0aGtleXMoUGxhbiAqbGVmdHRyZWUs IExpc3QgKnBhdGhrZXlzLCBpbnQgbnVtQ29scykKIAlBc3NlcnQobnVtQ29scyA+PSAwICYm IG51bUNvbHMgPD0gbGlzdF9sZW5ndGgocGF0aGtleXMpKTsKIAl1bmlxQ29sSWR4ID0gKEF0 dHJOdW1iZXIgKikgcGFsbG9jKHNpemVvZihBdHRyTnVtYmVyKSAqIG51bUNvbHMpOwogCXVu aXFPcGVyYXRvcnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOwor CXVuaXFDb2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBudW1Db2xz KTsKIAogCWZvcmVhY2gobGMsIHBhdGhrZXlzKQogCXsKQEAgLTYzMjgsNiArNjM2Miw3IEBA IG1ha2VfdW5pcXVlX2Zyb21fcGF0aGtleXMoUGxhbiAqbGVmdHRyZWUsIExpc3QgKnBhdGhr ZXlzLCBpbnQgbnVtQ29scykKIAogCQl1bmlxQ29sSWR4W2tleW5vXSA9IHRsZS0+cmVzbm87 CiAJCXVuaXFPcGVyYXRvcnNba2V5bm9dID0gZXFvcDsKKwkJdW5pcUNvbGxhdGlvbnNba2V5 bm9dID0gZWMtPmVjX2NvbGxhdGlvbjsKIAogCQlrZXlubysrOwogCX0KQEAgLTYzMzUsNiAr NjM3MCw3IEBAIG1ha2VfdW5pcXVlX2Zyb21fcGF0aGtleXMoUGxhbiAqbGVmdHRyZWUsIExp c3QgKnBhdGhrZXlzLCBpbnQgbnVtQ29scykKIAlub2RlLT5udW1Db2xzID0gbnVtQ29sczsK IAlub2RlLT51bmlxQ29sSWR4ID0gdW5pcUNvbElkeDsKIAlub2RlLT51bmlxT3BlcmF0b3Jz ID0gdW5pcU9wZXJhdG9yczsKKwlub2RlLT51bmlxQ29sbGF0aW9ucyA9IHVuaXFDb2xsYXRp b25zOwogCiAJcmV0dXJuIG5vZGU7CiB9CkBAIC02Mzc5LDYgKzY0MTUsNyBAQCBtYWtlX3Nl dG9wKFNldE9wQ21kIGNtZCwgU2V0T3BTdHJhdGVneSBzdHJhdGVneSwgUGxhbiAqbGVmdHRy ZWUsCiAJaW50CQkJa2V5bm8gPSAwOwogCUF0dHJOdW1iZXIgKmR1cENvbElkeDsKIAlPaWQJ CSAgICpkdXBPcGVyYXRvcnM7CisJT2lkCQkgICAqZHVwQ29sbGF0aW9uczsKIAlMaXN0Q2Vs bCAgICpzbGl0ZW07CiAKIAlwbGFuLT50YXJnZXRsaXN0ID0gbGVmdHRyZWUtPnRhcmdldGxp c3Q7CkBAIC02MzkyLDYgKzY0MjksNyBAQCBtYWtlX3NldG9wKFNldE9wQ21kIGNtZCwgU2V0 T3BTdHJhdGVneSBzdHJhdGVneSwgUGxhbiAqbGVmdHRyZWUsCiAJICovCiAJZHVwQ29sSWR4 ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jKHNpemVvZihBdHRyTnVtYmVyKSAqIG51bUNvbHMp OwogCWR1cE9wZXJhdG9ycyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogbnVtQ29s cyk7CisJZHVwQ29sbGF0aW9ucyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogbnVt Q29scyk7CiAKIAlmb3JlYWNoKHNsaXRlbSwgZGlzdGluY3RMaXN0KQogCXsKQEAgLTY0MDAs NiArNjQzOCw3IEBAIG1ha2Vfc2V0b3AoU2V0T3BDbWQgY21kLCBTZXRPcFN0cmF0ZWd5IHN0 cmF0ZWd5LCBQbGFuICpsZWZ0dHJlZSwKIAogCQlkdXBDb2xJZHhba2V5bm9dID0gdGxlLT5y ZXNubzsKIAkJZHVwT3BlcmF0b3JzW2tleW5vXSA9IHNvcnRjbC0+ZXFvcDsKKwkJZHVwQ29s bGF0aW9uc1trZXlub10gPSBleHByQ29sbGF0aW9uKChOb2RlICopIHRsZS0+ZXhwcik7CiAJ CUFzc2VydChPaWRJc1ZhbGlkKGR1cE9wZXJhdG9yc1trZXlub10pKTsKIAkJa2V5bm8rKzsK IAl9CkBAIC02NDA5LDYgKzY0NDgsNyBAQCBtYWtlX3NldG9wKFNldE9wQ21kIGNtZCwgU2V0 T3BTdHJhdGVneSBzdHJhdGVneSwgUGxhbiAqbGVmdHRyZWUsCiAJbm9kZS0+bnVtQ29scyA9 IG51bUNvbHM7CiAJbm9kZS0+ZHVwQ29sSWR4ID0gZHVwQ29sSWR4OwogCW5vZGUtPmR1cE9w ZXJhdG9ycyA9IGR1cE9wZXJhdG9yczsKKwlub2RlLT5kdXBDb2xsYXRpb25zID0gZHVwQ29s bGF0aW9uczsKIAlub2RlLT5mbGFnQ29sSWR4ID0gZmxhZ0NvbElkeDsKIAlub2RlLT5maXJz dEZsYWcgPSBmaXJzdEZsYWc7CiAJbm9kZS0+bnVtR3JvdXBzID0gbnVtR3JvdXBzOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdGxpc3QuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3RsaXN0LmMKaW5kZXggNTUwMGYzM2U2My4uMDBiYTU4YmNi ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdGxpc3QuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC90bGlzdC5jCkBAIC01MDIsNiArNTAyLDMx IEBAIGV4dHJhY3RfZ3JvdXBpbmdfb3BzKExpc3QgKmdyb3VwQ2xhdXNlKQogCXJldHVybiBn cm91cE9wZXJhdG9yczsKIH0KIAorLyoKKyAqIGV4dHJhY3RfZ3JvdXBpbmdfY29sbGF0aW9u cyAtIG1ha2UgYW4gYXJyYXkgb2YgdGhlIGdyb3VwaW5nIGNvbHVtbiBjb2xsYXRpb25zCisg KgkJZm9yIGEgU29ydEdyb3VwQ2xhdXNlIGxpc3QKKyAqLworT2lkICoKK2V4dHJhY3RfZ3Jv dXBpbmdfY29sbGF0aW9ucyhMaXN0ICpncm91cENsYXVzZSwgTGlzdCAqdGxpc3QpCit7CisJ aW50CQkJbnVtQ29scyA9IGxpc3RfbGVuZ3RoKGdyb3VwQ2xhdXNlKTsKKwlpbnQJCQljb2xu byA9IDA7CisJT2lkCQkgICAqZ3JwQ29sbGF0aW9uczsKKwlMaXN0Q2VsbCAgICpnbGl0ZW07 CisKKwlncnBDb2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBudW1D b2xzKTsKKworCWZvcmVhY2goZ2xpdGVtLCBncm91cENsYXVzZSkKKwl7CisJCVNvcnRHcm91 cENsYXVzZSAqZ3JvdXBjbCA9IChTb3J0R3JvdXBDbGF1c2UgKikgbGZpcnN0KGdsaXRlbSk7 CisJCVRhcmdldEVudHJ5ICp0bGUgPSBnZXRfc29ydGdyb3VwY2xhdXNlX3RsZShncm91cGNs LCB0bGlzdCk7CisKKwkJZ3JwQ29sbGF0aW9uc1tjb2xubysrXSA9IGV4cHJDb2xsYXRpb24o KE5vZGUgKikgdGxlLT5leHByKTsKKwl9CisKKwlyZXR1cm4gZ3JwQ29sbGF0aW9uczsKK30K KwogLyoKICAqIGV4dHJhY3RfZ3JvdXBpbmdfY29scyAtIG1ha2UgYW4gYXJyYXkgb2YgdGhl IGdyb3VwaW5nIGNvbHVtbiByZXNub3MKICAqCQlmb3IgYSBTb3J0R3JvdXBDbGF1c2UgbGlz dApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggZWVhYWIyZjRj OS4uYzYwYTFiYjUwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5j CkBAIC0yNjU3LDcgKzI2NTcsNyBAQCBnZXRfcmFuZ2VfbnVsbHRlc3QoUGFydGl0aW9uS2V5 IGtleSkKICAqIENvbXB1dGUgdGhlIGhhc2ggdmFsdWUgZm9yIGdpdmVuIHBhcnRpdGlvbiBr ZXkgdmFsdWVzLgogICovCiB1aW50NjQKLWNvbXB1dGVfcGFydGl0aW9uX2hhc2hfdmFsdWUo aW50IHBhcnRuYXR0cywgRm1nckluZm8gKnBhcnRzdXBmdW5jLAorY29tcHV0ZV9wYXJ0aXRp b25faGFzaF92YWx1ZShpbnQgcGFydG5hdHRzLCBGbWdySW5mbyAqcGFydHN1cGZ1bmMsIE9p ZCAqcGFydGNvbGxhdGlvbiwKIAkJCQkJCQkgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxs KQogewogCWludAkJCWk7CkBAIC0yNjc4LDcgKzI2NzgsNyBAQCBjb21wdXRlX3BhcnRpdGlv bl9oYXNoX3ZhbHVlKGludCBwYXJ0bmF0dHMsIEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIAkJ CSAqIGRhdGF0eXBlLXNwZWNpZmljIGhhc2ggZnVuY3Rpb25zIG9mIGVhY2ggcGFydGl0aW9u IGtleQogCQkJICogYXR0cmlidXRlLgogCQkJICovCi0JCQloYXNoID0gRnVuY3Rpb25DYWxs MigmcGFydHN1cGZ1bmNbaV0sIHZhbHVlc1tpXSwgc2VlZCk7CisJCQloYXNoID0gRnVuY3Rp b25DYWxsMkNvbGwoJnBhcnRzdXBmdW5jW2ldLCBwYXJ0Y29sbGF0aW9uW2ldLCB2YWx1ZXNb aV0sIHNlZWQpOwogCiAJCQkvKiBGb3JtIGEgc2luZ2xlIDY0LWJpdCBoYXNoIHZhbHVlICov CiAJCQlyb3dIYXNoID0gaGFzaF9jb21iaW5lNjQocm93SGFzaCwgRGF0dW1HZXRVSW50NjQo aGFzaCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IDM1Yzg3 NTM1ZDMuLjJhYmUxMTk1MjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMKQEAgLTIxNTcsNiArMjE1Nyw3IEBAIGdldF9tYXRjaGluZ19oYXNoX2JvdW5kcyhQYXJ0 aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJaW50CQkJaTsKIAl1aW50NjQJCXJvd0hh c2g7CiAJaW50CQkJZ3JlYXRlc3RfbW9kdWx1czsKKwlPaWQJCSAgICpwYXJ0Y29sbGF0aW9u ID0gY29udGV4dC0+cGFydGNvbGxhdGlvbjsKIAogCUFzc2VydChjb250ZXh0LT5zdHJhdGVn eSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfSEFTSCk7CiAKQEAgLTIxNzcsNyArMjE3OCw3IEBA IGdldF9tYXRjaGluZ19oYXNoX2JvdW5kcyhQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRl eHQsCiAJCQlpc251bGxbaV0gPSBibXNfaXNfbWVtYmVyKGksIG51bGxrZXlzKTsKIAogCQln cmVhdGVzdF9tb2R1bHVzID0gZ2V0X2hhc2hfcGFydGl0aW9uX2dyZWF0ZXN0X21vZHVsdXMo Ym91bmRpbmZvKTsKLQkJcm93SGFzaCA9IGNvbXB1dGVfcGFydGl0aW9uX2hhc2hfdmFsdWUo cGFydG5hdHRzLCBwYXJ0c3VwZnVuYywKKwkJcm93SGFzaCA9IGNvbXB1dGVfcGFydGl0aW9u X2hhc2hfdmFsdWUocGFydG5hdHRzLCBwYXJ0c3VwZnVuYywgcGFydGNvbGxhdGlvbiwKIAkJ CQkJCQkJCQkJICAgdmFsdWVzLCBpc251bGwpOwogCiAJCWlmIChwYXJ0aW5kaWNlc1tyb3dI YXNoICUgZ3JlYXRlc3RfbW9kdWx1c10gPj0gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlm dW5jcy5jCmluZGV4IGNlMWRlZDg4OGYuLjZhMzFlZDc4NTIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2FycmF5ZnVuY3MuYwpAQCAtMzk1NCw3ICszOTU0LDcgQEAgaGFzaF9hcnJheShQR19G VU5DVElPTl9BUkdTKQogCSAqIGFwcGx5IHRoZSBoYXNoIGZ1bmN0aW9uIHRvIGVhY2ggYXJy YXkgZWxlbWVudC4KIAkgKi8KIAlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEobG9jZmNpbmZv LCAmdHlwZW50cnktPmhhc2hfcHJvY19maW5mbywgMSwKLQkJCQkJCQkgSW52YWxpZE9pZCwg TlVMTCwgTlVMTCk7CisJCQkJCQkJIFBHX0dFVF9DT0xMQVRJT04oKSwgTlVMTCwgTlVMTCk7 CiAKIAkvKiBMb29wIG92ZXIgc291cmNlIGRhdGEgKi8KIAluaXRlbXMgPSBBcnJheUdldE5J dGVtcyhuZGltcywgZGltcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv b3JkZXJlZHNldGFnZ3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0YWdn cy5jCmluZGV4IDFiMjFkYThkMDkuLjY4MzEyNjc3ZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0YWdncy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9vcmRlcmVkc2V0YWdncy5jCkBAIC0xMzQ1LDYgKzEzNDUsNyBAQCBoeXBvdGhldGlj YWxfZGVuc2VfcmFua19maW5hbChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJCQkgIG51 bURpc3RpbmN0Q29scywKIAkJCQkJCQkJCQkJICBzb3J0Q29sSWR4LAogCQkJCQkJCQkJCQkg IG9zYXN0YXRlLT5xc3RhdGUtPmVxT3BlcmF0b3JzLAorCQkJCQkJCQkJCQkgIG9zYXN0YXRl LT5xc3RhdGUtPnNvcnRDb2xsYXRpb25zLAogCQkJCQkJCQkJCQkgIE5VTEwpOwogCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7CiAJCW9zYXN0YXRlLT5xc3RhdGUtPmNv bXBhcmVUdXBsZSA9IGNvbXBhcmVUdXBsZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUu YwppbmRleCBhM2RjM2JlNWE4Li5iNDIxYmE4Mjc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn X2xvY2FsZS5jCkBAIC0xMzA4LDYgKzEzMDgsNyBAQCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xs YXRpb24oT2lkIGNvbGxpZCkKIAkJLyogV2UnbGwgZmlsbCBpbiB0aGUgcmVzdWx0IHN0cnVj dCBsb2NhbGx5IGJlZm9yZSBhbGxvY2F0aW5nIG1lbW9yeSAqLwogCQltZW1zZXQoJnJlc3Vs dCwgMCwgc2l6ZW9mKHJlc3VsdCkpOwogCQlyZXN1bHQucHJvdmlkZXIgPSBjb2xsZm9ybS0+ Y29sbHByb3ZpZGVyOworCQlyZXN1bHQuaW5zZW5zaXRpdmUgPSBjb2xsZm9ybS0+Y29sbGlz aW5zZW5zaXRpdmU7CiAKIAkJaWYgKGNvbGxmb3JtLT5jb2xscHJvdmlkZXIgPT0gQ09MTFBS T1ZJREVSX0xJQkMpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92 YXJjaGFyLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFyY2hhci5jCmluZGV4IDhmMDdi MWUyNzIuLjA4YjFlYTUyNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92 YXJjaGFyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmNoYXIuYwpAQCAtOTMy LDEwICs5MzIsMTcgQEAgRGF0dW0KIGhhc2hicGNoYXIoUEdfRlVOQ1RJT05fQVJHUykKIHsK IAlCcENoYXIJICAgKmtleSA9IFBHX0dFVEFSR19CUENIQVJfUFAoMCk7CisJT2lkCQkJY29s bGlkID0gUEdfR0VUX0NPTExBVElPTigpOwogCWNoYXIJICAgKmtleWRhdGE7CiAJaW50CQkJ a2V5bGVuOwogCURhdHVtCQlyZXN1bHQ7CiAKKwlpZiAoIWNvbGxpZCkKKwkJZWxvZyhFUlJP UiwgIkZJWE1FOiBoYXNoYnBjaGFyKCkgY2FsbGVkIHdpdGhvdXQgY29sbGF0aW9uIik7CisK KwlpZiAoY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKKwkJZWxvZyhFUlJPUiwg IlRPRE8iKTsKKwogCWtleWRhdGEgPSBWQVJEQVRBX0FOWShrZXkpOwogCWtleWxlbiA9IGJj VHJ1ZWxlbihrZXkpOwogCkBAIC05NTEsMTAgKzk1OCwxNyBAQCBEYXR1bQogaGFzaGJwY2hh cmV4dGVuZGVkKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJQnBDaGFyCSAgICprZXkgPSBQR19H RVRBUkdfQlBDSEFSX1BQKDApOworCU9pZAkJCWNvbGxpZCA9IFBHX0dFVF9DT0xMQVRJT04o KTsKIAljaGFyCSAgICprZXlkYXRhOwogCWludAkJCWtleWxlbjsKIAlEYXR1bQkJcmVzdWx0 OwogCisJaWYgKCFjb2xsaWQpCisJCWVsb2coRVJST1IsICJGSVhNRTogaGFzaGJwY2hhcmV4 dGVuZGVkKCkgY2FsbGVkIHdpdGhvdXQgY29sbGF0aW9uIik7CisKKwlpZiAoY29sbGlkICE9 IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKKwkJZWxvZyhFUlJPUiwgIlRPRE8iKTsKKwogCWtl eWRhdGEgPSBWQVJEQVRBX0FOWShrZXkpOwogCWtleWxlbiA9IGJjVHJ1ZWxlbihrZXkpOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYwppbmRleCAwZmQzYjE1NzQ4Li5jZDg5NDg1OWYw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKQEAgLTE0MjcsNyArMTQyNyw4IEBAIHZh cnN0cl9jbXAoY29uc3QgY2hhciAqYXJnMSwgaW50IGxlbjEsIGNvbnN0IGNoYXIgKmFyZzIs IGludCBsZW4yLCBPaWQgY29sbGlkKQogCQkgKiBlcXVhbCBzdHJpbmdzIGluIHRoZSBpbnB1 dCAtIHRoZW4gd2Ugd2luIGJpZyBieSBhdm9pZGluZyBleHBlbnNpdmUKIAkJICogY29sbGF0 aW9uLWF3YXJlIGNvbXBhcmlzb25zLgogCQkgKi8KLQkJaWYgKGxlbjEgPT0gbGVuMiAmJiBt ZW1jbXAoYXJnMSwgYXJnMiwgbGVuMSkgPT0gMCkKKwkJaWYgKCghbXlsb2NhbGUgfHwgKG15 bG9jYWxlICYmICFteWxvY2FsZS0+aW5zZW5zaXRpdmUpKSAmJgorCQkJbGVuMSA9PSBsZW4y ICYmIG1lbWNtcChhcmcxLCBhcmcyLCBsZW4xKSA9PSAwKQogCQkJcmV0dXJuIDA7CiAKICNp ZmRlZiBXSU4zMgpAQCAtMTUwNSw3ICsxNTA2LDggQEAgdmFyc3RyX2NtcChjb25zdCBjaGFy ICphcmcxLCBpbnQgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwgaW50IGxlbjIsIE9pZCBjb2xs aWQpCiAJCQkgKiByZWFzb25zLCBzbyB3ZSBmb2xsb3cgUGVybCdzIGxlYWQgYW5kIHNvcnQg ImVxdWFsIiBzdHJpbmdzCiAJCQkgKiBhY2NvcmRpbmcgdG8gc3RyY21wIChvbiB0aGUgVVRG LTggcmVwcmVzZW50YXRpb24pLgogCQkJICovCi0JCQlpZiAocmVzdWx0ID09IDApCisJCQlp ZiAocmVzdWx0ID09IDAgJiYKKwkJCQkoIW15bG9jYWxlIHx8IChteWxvY2FsZSAmJiAhbXls b2NhbGUtPmluc2Vuc2l0aXZlKSkpCiAJCQl7CiAJCQkJcmVzdWx0ID0gbWVtY21wKGFyZzEs IGFyZzIsIE1pbihsZW4xLCBsZW4yKSk7CiAJCQkJaWYgKChyZXN1bHQgPT0gMCkgJiYgKGxl bjEgIT0gbGVuMikpCkBAIC0xNTk2LDcgKzE1OTgsOCBAQCB2YXJzdHJfY21wKGNvbnN0IGNo YXIgKmFyZzEsIGludCBsZW4xLCBjb25zdCBjaGFyICphcmcyLCBpbnQgbGVuMiwgT2lkIGNv bGxpZCkKIAkJICogc28gd2UgZm9sbG93IFBlcmwncyBsZWFkIGFuZCBzb3J0ICJlcXVhbCIg c3RyaW5ncyBhY2NvcmRpbmcgdG8KIAkJICogc3RyY21wKCkuCiAJCSAqLwotCQlpZiAocmVz dWx0ID09IDApCisJCWlmIChyZXN1bHQgPT0gMCAmJgorCQkJKCFteWxvY2FsZSB8fCAobXls b2NhbGUgJiYgIW15bG9jYWxlLT5pbnNlbnNpdGl2ZSkpKQogCQkJcmVzdWx0ID0gc3RyY21w KGExcCwgYTJwKTsKIAogCQlpZiAoYTFwICE9IGExYnVmKQpAQCAtMTY0MCw2ICsxNjQzLDIz IEBAIHRleHRfY21wKHRleHQgKmFyZzEsIHRleHQgKmFyZzIsIE9pZCBjb2xsaWQpCiBEYXR1 bQogdGV4dGVxKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CisJaWYgKFBHX0dFVF9DT0xMQVRJT04o KSAmJgorCQlQR19HRVRfQ09MTEFUSU9OKCkgIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEICYm CisJCXBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihQR19HRVRfQ09MTEFUSU9OKCkpLT5p bnNlbnNpdGl2ZSkKKwl7CisJCXRleHQJICAgKmFyZzEgPSBQR19HRVRBUkdfVEVYVF9QUCgw KTsKKwkJdGV4dAkgICAqYXJnMiA9IFBHX0dFVEFSR19URVhUX1BQKDEpOworCQlib29sCQly ZXN1bHQ7CisKKwkJcmVzdWx0ID0gKHRleHRfY21wKGFyZzEsIGFyZzIsIFBHX0dFVF9DT0xM QVRJT04oKSkgPT0gMCk7CisKKwkJUEdfRlJFRV9JRl9DT1BZKGFyZzEsIDApOworCQlQR19G UkVFX0lGX0NPUFkoYXJnMiwgMSk7CisKKwkJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsKKwl9 CisJZWxzZQorCXsKIAlEYXR1bQkJYXJnMSA9IFBHX0dFVEFSR19EQVRVTSgwKTsKIAlEYXR1 bQkJYXJnMiA9IFBHX0dFVEFSR19EQVRVTSgxKTsKIAlib29sCQlyZXN1bHQ7CkBAIC0xNjcw LDExICsxNjkwLDI5IEBAIHRleHRlcShQR19GVU5DVElPTl9BUkdTKQogCX0KIAogCVBHX1JF VFVSTl9CT09MKHJlc3VsdCk7CisJfQogfQogCiBEYXR1bQogdGV4dG5lKFBHX0ZVTkNUSU9O X0FSR1MpCiB7CisJaWYgKFBHX0dFVF9DT0xMQVRJT04oKSAmJgorCQlQR19HRVRfQ09MTEFU SU9OKCkgIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEICYmCisJCXBnX25ld2xvY2FsZV9mcm9t X2NvbGxhdGlvbihQR19HRVRfQ09MTEFUSU9OKCkpLT5pbnNlbnNpdGl2ZSkKKwl7CisJCXRl eHQJICAgKmFyZzEgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKKwkJdGV4dAkgICAqYXJnMiA9 IFBHX0dFVEFSR19URVhUX1BQKDEpOworCQlib29sCQlyZXN1bHQ7CisKKwkJcmVzdWx0ID0g KHRleHRfY21wKGFyZzEsIGFyZzIsIFBHX0dFVF9DT0xMQVRJT04oKSkgIT0gMCk7CisKKwkJ UEdfRlJFRV9JRl9DT1BZKGFyZzEsIDApOworCQlQR19GUkVFX0lGX0NPUFkoYXJnMiwgMSk7 CisKKwkJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsKKwl9CisJZWxzZQorCXsKIAlEYXR1bQkJ YXJnMSA9IFBHX0dFVEFSR19EQVRVTSgwKTsKIAlEYXR1bQkJYXJnMiA9IFBHX0dFVEFSR19E QVRVTSgxKTsKIAlib29sCQlyZXN1bHQ7CkBAIC0xNjk5LDYgKzE3MzcsNyBAQCB0ZXh0bmUo UEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAlQR19SRVRVUk5fQk9PTChyZXN1bHQpOworCX0K IH0KIAogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2NhdGNh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9jYXRjYWNoZS5jCmluZGV4IDQxNzZj ZWQ5MjMuLmM0ZDc2YjhkYWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2NhdGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvY2F0Y2FjaGUuYwpA QCAtMTg4LDcgKzE4OCw3IEBAIHRleHRlcWZhc3QoRGF0dW0gYSwgRGF0dW0gYikKIHN0YXRp YyB1aW50MzIKIHRleHRoYXNoZmFzdChEYXR1bSBkYXR1bSkKIHsKLQlyZXR1cm4gRGF0dW1H ZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwxKGhhc2h0ZXh0LCBkYXR1bSkpOworCXJldHVy biBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDFDb2xsKGhhc2h0ZXh0LCBERUZB VUxUX0NPTExBVElPTl9PSUQsIGRhdHVtKSk7CiB9CiAKIHN0YXRpYyBib29sCmRpZmYgLS1n aXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5j CmluZGV4IDIxMWE5NjM4MGUuLjY5ODgwMzAyNmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5p dGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0xNzY2LDgg KzE3NjYsOCBAQCBzZXR1cF9jb2xsYXRpb24oRklMRSAqY21kZmQpCiAJICogaW4gcGdfY29s bGF0aW9uLmguICBCdXQgYWRkIGl0IGJlZm9yZSByZWFkaW5nIHN5c3RlbSBjb2xsYXRpb25z LCBzbwogCSAqIHRoYXQgaXQgd2lucyBpZiBsaWJjIGRlZmluZXMgYSBsb2NhbGUgbmFtZWQg dWNzX2Jhc2ljLgogCSAqLwotCVBHX0NNRF9QUklOVEYzKCJJTlNFUlQgSU5UTyBwZ19jb2xs YXRpb24gKG9pZCwgY29sbG5hbWUsIGNvbGxuYW1lc3BhY2UsIGNvbGxvd25lciwgY29sbHBy b3ZpZGVyLCBjb2xsZW5jb2RpbmcsIGNvbGxjb2xsYXRlLCBjb2xsY3R5cGUpIgotCQkJCSAg ICJWQUxVRVMgKHBnX25leHRvaWQoJ3BnX2NhdGFsb2cucGdfY29sbGF0aW9uJywgJ29pZCcs ICdwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbl9vaWRfaW5kZXgnKSwgJ3Vjc19iYXNpYycsICdw Z19jYXRhbG9nJzo6cmVnbmFtZXNwYWNlLCAldSwgJyVjJywgJWQsICdDJywgJ0MnKTtcblxu IiwKKwlQR19DTURfUFJJTlRGMygiSU5TRVJUIElOVE8gcGdfY29sbGF0aW9uIChvaWQsIGNv bGxuYW1lLCBjb2xsbmFtZXNwYWNlLCBjb2xsb3duZXIsIGNvbGxwcm92aWRlciwgY29sbGlz aW5zZW5zaXRpdmUsIGNvbGxlbmNvZGluZywgY29sbGNvbGxhdGUsIGNvbGxjdHlwZSkiCisJ CQkJICAgIlZBTFVFUyAocGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xsYXRpb24nLCAn b2lkJywgJ3BnX2NhdGFsb2cucGdfY29sbGF0aW9uX29pZF9pbmRleCcpLCAndWNzX2Jhc2lj JywgJ3BnX2NhdGFsb2cnOjpyZWduYW1lc3BhY2UsICV1LCAnJWMnLCBmYWxzZSwgJWQsICdD JywgJ0MnKTtcblxuIiwKIAkJCQkgICBCT09UU1RSQVBfU1VQRVJVU0VSSUQsIENPTExQUk9W SURFUl9MSUJDLCBQR19VVEY4KTsKIAogCS8qIE5vdyBpbXBvcnQgYWxsIGNvbGxhdGlvbnMg d2UgY2FuIGZpbmQgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0gKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2NvbGxhdGlvbi5oCmluZGV4IDUxZjliMmEyY2EuLjMyOTI0ZjA0ZDAgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmgKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uaApAQCAtMzMsNiArMzMsNyBAQCBDQVRBTE9HKHBn X2NvbGxhdGlvbiwzNDU2LENvbGxhdGlvblJlbGF0aW9uSWQpCiAJT2lkCQkJY29sbG5hbWVz cGFjZTsJLyogT0lEIG9mIG5hbWVzcGFjZSBjb250YWluaW5nIGNvbGxhdGlvbiAqLwogCU9p ZAkJCWNvbGxvd25lcjsJCS8qIG93bmVyIG9mIGNvbGxhdGlvbiAqLwogCWNoYXIJCWNvbGxw cm92aWRlcjsJLyogc2VlIGNvbnN0YW50cyBiZWxvdyAqLworCWJvb2wJCWNvbGxpc2luc2Vu c2l0aXZlIEJLSV9ERUZBVUxUKGYpOwogCWludDMyCQljb2xsZW5jb2Rpbmc7CS8qIGVuY29k aW5nIGZvciB0aGlzIGNvbGxhdGlvbjsgLTEgPSAiYWxsIiAqLwogCU5hbWVEYXRhCWNvbGxj b2xsYXRlOwkvKiBMQ19DT0xMQVRFIHNldHRpbmcgKi8KIAlOYW1lRGF0YQljb2xsY3R5cGU7 CQkvKiBMQ19DVFlQRSBzZXR0aW5nICovCkBAIC02MSw2ICs2Miw3IEBAIHR5cGVkZWYgRm9y bURhdGFfcGdfY29sbGF0aW9uICpGb3JtX3BnX2NvbGxhdGlvbjsKIGV4dGVybiBPaWQgQ29s bGF0aW9uQ3JlYXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwK IAkJCQlPaWQgY29sbG93bmVyLAogCQkJCWNoYXIgY29sbHByb3ZpZGVyLAorCQkJCWJvb2wg Y29sbGlzaW5zZW5zaXRpdmUsCiAJCQkJaW50MzIgY29sbGVuY29kaW5nLAogCQkJCWNvbnN0 IGNoYXIgKmNvbGxjb2xsYXRlLCBjb25zdCBjaGFyICpjb2xsY3R5cGUsCiAJCQkJY29uc3Qg Y2hhciAqY29sbHZlcnNpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCAyZmVl YzYyOGMwLi41NDBiZWJlYzQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTEx MCw2ICsxMTAsNyBAQCBleHRlcm4gRXhwclN0YXRlICpleGVjVHVwbGVzTWF0Y2hQcmVwYXJl KFR1cGxlRGVzYyBkZXNjLAogCQkJCQkgICBpbnQgbnVtQ29scywKIAkJCQkJICAgQXR0ck51 bWJlciAqa2V5Q29sSWR4LAogCQkJCQkgICBPaWQgKmVxT3BlcmF0b3JzLAorCQkJCQkgICBP aWQgKmNvbGxhdGlvbnMsCiAJCQkJCSAgIFBsYW5TdGF0ZSAqcGFyZW50KTsKIGV4dGVybiB2 b2lkIGV4ZWNUdXBsZXNIYXNoUHJlcGFyZShpbnQgbnVtQ29scywKIAkJCQkJICBPaWQgKmVx T3BlcmF0b3JzLApAQCAtMTIwLDYgKzEyMSw3IEBAIGV4dGVybiBUdXBsZUhhc2hUYWJsZSBC dWlsZFR1cGxlSGFzaFRhYmxlKFBsYW5TdGF0ZSAqcGFyZW50LAogCQkJCQlpbnQgbnVtQ29s cywgQXR0ck51bWJlciAqa2V5Q29sSWR4LAogCQkJCQlPaWQgKmVxZnVuY29pZHMsCiAJCQkJ CUZtZ3JJbmZvICpoYXNoZnVuY3Rpb25zLAorCQkJCQlPaWQgKmNvbGxhdGlvbnMsCiAJCQkJ CWxvbmcgbmJ1Y2tldHMsIFNpemUgYWRkaXRpb25hbHNpemUsCiAJCQkJCU1lbW9yeUNvbnRl eHQgdGFibGVjeHQsCiAJCQkJCU1lbW9yeUNvbnRleHQgdGVtcGN4dCwgYm9vbCB1c2VfdmFy aWFibGVfaGFzaF9pdik7CkBAIC0yNDYsNiArMjQ4LDcgQEAgZXh0ZXJuIEV4cHJTdGF0ZSAq RXhlY0J1aWxkR3JvdXBpbmdFcXVhbChUdXBsZURlc2MgbGRlc2MsIFR1cGxlRGVzYyByZGVz YywKIAkJCQkJICAgaW50IG51bUNvbHMsCiAJCQkJCSAgIEF0dHJOdW1iZXIgKmtleUNvbElk eCwKIAkJCQkJICAgT2lkICplcWZ1bmN0aW9ucywKKwkJCQkJICAgT2lkICpjb2xsYXRpb25z LAogCQkJCQkgICBQbGFuU3RhdGUgKnBhcmVudCk7CiBleHRlcm4gUHJvamVjdGlvbkluZm8g KkV4ZWNCdWlsZFByb2plY3Rpb25JbmZvKExpc3QgKnRhcmdldExpc3QsCiAJCQkJCQlFeHBy Q29udGV4dCAqZWNvbnRleHQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9o YXNoam9pbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaGFzaGpvaW4uaAppbmRleCBhOWY5 ODcyYTc4Li4wMDAyNzdhMzQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9o YXNoam9pbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2hhc2hqb2luLmgKQEAgLTMz Nyw2ICszMzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBIYXNoSm9pblRhYmxlRGF0YQogCUZtZ3JJ bmZvICAgKm91dGVyX2hhc2hmdW5jdGlvbnM7CS8qIGxvb2t1cCBkYXRhIGZvciBoYXNoIGZ1 bmN0aW9ucyAqLwogCUZtZ3JJbmZvICAgKmlubmVyX2hhc2hmdW5jdGlvbnM7CS8qIGxvb2t1 cCBkYXRhIGZvciBoYXNoIGZ1bmN0aW9ucyAqLwogCWJvb2wJICAgKmhhc2hTdHJpY3Q7CQkv KiBpcyBlYWNoIGhhc2ggam9pbiBvcGVyYXRvciBzdHJpY3Q/ICovCisJT2lkCQkgICAqY29s bGF0aW9uczsKIAogCVNpemUJCXNwYWNlVXNlZDsJCS8qIG1lbW9yeSBzcGFjZSBjdXJyZW50 bHkgdXNlZCBieSB0dXBsZXMgKi8KIAlTaXplCQlzcGFjZUFsbG93ZWQ7CS8qIHVwcGVyIGxp bWl0IGZvciBzcGFjZSB1c2VkICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlSGFzaC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUhhc2guaAppbmRleCA4 ZDcwMGMwNmM1Li5mMjQ0NGM4NWM2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlSGFzaC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVIYXNoLmgKQEAg LTI0LDcgKzI0LDcgQEAgZXh0ZXJuIE5vZGUgKk11bHRpRXhlY0hhc2goSGFzaFN0YXRlICpu b2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRIYXNoKEhhc2hTdGF0ZSAqbm9kZSk7CiBleHRl cm4gdm9pZCBFeGVjUmVTY2FuSGFzaChIYXNoU3RhdGUgKm5vZGUpOwogCi1leHRlcm4gSGFz aEpvaW5UYWJsZSBFeGVjSGFzaFRhYmxlQ3JlYXRlKEhhc2hTdGF0ZSAqc3RhdGUsIExpc3Qg Kmhhc2hPcGVyYXRvcnMsCitleHRlcm4gSGFzaEpvaW5UYWJsZSBFeGVjSGFzaFRhYmxlQ3Jl YXRlKEhhc2hTdGF0ZSAqc3RhdGUsIExpc3QgKmhhc2hPcGVyYXRvcnMsIExpc3QgKmhhc2hD b2xsYXRpb25zLAogCQkJCQlib29sIGtlZXBOdWxscyk7CiBleHRlcm4gdm9pZCBFeGVjUGFy YWxsZWxIYXNoVGFibGVBbGxvYyhIYXNoSm9pblRhYmxlIGhhc2h0YWJsZSwKIAkJCQkJCSAg IGludCBiYXRjaG5vKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNWVkMGY0MGY2OS4u YjlhZDlhODA2MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTY4OSw2ICs2ODksNyBA QCB0eXBlZGVmIHN0cnVjdCBUdXBsZUhhc2hUYWJsZURhdGEKIAlBdHRyTnVtYmVyICprZXlD b2xJZHg7CQkvKiBhdHRyIG51bWJlcnMgb2Yga2V5IGNvbHVtbnMgKi8KIAlGbWdySW5mbyAg ICp0YWJfaGFzaF9mdW5jczsgLyogaGFzaCBmdW5jdGlvbnMgZm9yIHRhYmxlIGRhdGF0eXBl KHMpICovCiAJRXhwclN0YXRlICAqdGFiX2VxX2Z1bmM7CS8qIGNvbXBhcmF0b3IgZm9yIHRh YmxlIGRhdGF0eXBlKHMpICovCisJT2lkCQkgICAqdGFiX2NvbGxhdGlvbnM7CS8qIGNvbGxh dGlvbnMgZm9yIGhhc2ggYW5kIGNvbXBhcmlzb24gKi8KIAlNZW1vcnlDb250ZXh0IHRhYmxl Y3h0OwkJLyogbWVtb3J5IGNvbnRleHQgY29udGFpbmluZyB0YWJsZSAqLwogCU1lbW9yeUNv bnRleHQgdGVtcGN4dDsJCS8qIGNvbnRleHQgZm9yIGZ1bmN0aW9uIGV2YWx1YXRpb25zICov CiAJU2l6ZQkJZW50cnlzaXplOwkJLyogYWN0dWFsIHNpemUgdG8gbWFrZSBlYWNoIGhhc2gg ZW50cnkgKi8KQEAgLTg1OCw2ICs4NTksNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJQbGFuU3Rh dGUKIAlBdHRyTnVtYmVyICprZXlDb2xJZHg7CQkvKiBjb250cm9sIGRhdGEgZm9yIGhhc2gg dGFibGVzICovCiAJT2lkCQkgICAqdGFiX2VxX2Z1bmNvaWRzOwkvKiBlcXVhbGl0eSBmdW5j IG9pZHMgZm9yIHRhYmxlCiAJCQkJCQkJCQkgKiBkYXRhdHlwZShzKSAqLworCU9pZAkJICAg KnRhYl9jb2xsYXRpb25zOwkvKiBjb2xsYXRpb25zIGZvciBoYXNoIGFuZCBjb21wYXJpc29u ICovCiAJRm1nckluZm8gICAqdGFiX2hhc2hfZnVuY3M7IC8qIGhhc2ggZnVuY3Rpb25zIGZv ciB0YWJsZSBkYXRhdHlwZShzKSAqLwogCUZtZ3JJbmZvICAgKnRhYl9lcV9mdW5jczsJLyog ZXF1YWxpdHkgZnVuY3Rpb25zIGZvciB0YWJsZSBkYXRhdHlwZShzKSAqLwogCUZtZ3JJbmZv ICAgKmxoc19oYXNoX2Z1bmNzOyAvKiBoYXNoIGZ1bmN0aW9ucyBmb3IgbGVmdGhhbmQgZGF0 YXR5cGUocykgKi8KQEAgLTE4NzAsNiArMTg3Miw3IEBAIHR5cGVkZWYgc3RydWN0IEhhc2hK b2luU3RhdGUKIAlMaXN0CSAgICpoal9PdXRlckhhc2hLZXlzOwkvKiBsaXN0IG9mIEV4cHJT dGF0ZSBub2RlcyAqLwogCUxpc3QJICAgKmhqX0lubmVySGFzaEtleXM7CS8qIGxpc3Qgb2Yg RXhwclN0YXRlIG5vZGVzICovCiAJTGlzdAkgICAqaGpfSGFzaE9wZXJhdG9yczsJLyogbGlz dCBvZiBvcGVyYXRvciBPSURzICovCisJTGlzdAkgICAqaGpfQ29sbGF0aW9uczsKIAlIYXNo Sm9pblRhYmxlIGhqX0hhc2hUYWJsZTsKIAl1aW50MzIJCWhqX0N1ckhhc2hWYWx1ZTsKIAlp bnQJCQloal9DdXJCdWNrZXRObzsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggZjExNmJj MjNmZi4uZTEwZGFhZjUwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTI5Nyw2ICsy OTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWN1cnNpdmVVbmlvbgogCQkJCQkJCQkgKiBkdXBs aWNhdGUtbmVzcyAqLwogCUF0dHJOdW1iZXIgKmR1cENvbElkeDsJCS8qIHRoZWlyIGluZGV4 ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCiAJT2lkCQkgICAqZHVwT3BlcmF0b3JzOwkvKiBl cXVhbGl0eSBvcGVyYXRvcnMgdG8gY29tcGFyZSB3aXRoICovCisJT2lkCQkgICAqZHVwQ29s bGF0aW9uczsKIAlsb25nCQludW1Hcm91cHM7CQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdy b3VwcyBpbiBpbnB1dCAqLwogfSBSZWN1cnNpdmVVbmlvbjsKIApAQCAtNzcyLDYgKzc3Myw3 IEBAIHR5cGVkZWYgc3RydWN0IEdyb3VwCiAJaW50CQkJbnVtQ29sczsJCS8qIG51bWJlciBv ZiBncm91cGluZyBjb2x1bW5zICovCiAJQXR0ck51bWJlciAqZ3JwQ29sSWR4OwkJLyogdGhl aXIgaW5kZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KIAlPaWQJCSAgICpncnBPcGVyYXRv cnM7CS8qIGVxdWFsaXR5IG9wZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8KKwlPaWQJCSAg ICpncnBDb2xsYXRpb25zOwogfSBHcm91cDsKIAogLyogLS0tLS0tLS0tLS0tLS0tCkBAIC03 OTYsNiArNzk4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQWdnCiAJaW50CQkJbnVtQ29sczsJCS8q IG51bWJlciBvZiBncm91cGluZyBjb2x1bW5zICovCiAJQXR0ck51bWJlciAqZ3JwQ29sSWR4 OwkJLyogdGhlaXIgaW5kZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KIAlPaWQJCSAgICpn cnBPcGVyYXRvcnM7CS8qIGVxdWFsaXR5IG9wZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8K KwlPaWQJCSAgICpncnBDb2xsYXRpb25zOwogCWxvbmcJCW51bUdyb3VwczsJCS8qIGVzdGlt YXRlZCBudW1iZXIgb2YgZ3JvdXBzIGluIGlucHV0ICovCiAJQml0bWFwc2V0ICAqYWdnUGFy YW1zOwkJLyogSURzIG9mIFBhcmFtcyB1c2VkIGluIEFnZ3JlZiBpbnB1dHMgKi8KIAkvKiBO b3RlOiBwbGFubmVyIHByb3ZpZGVzIG51bUdyb3VwcyAmIGFnZ1BhcmFtcyBvbmx5IGluIEhB U0hFRC9NSVhFRCBjYXNlICovCkBAIC04MTQsOSArODE3LDExIEBAIHR5cGVkZWYgc3RydWN0 IFdpbmRvd0FnZwogCWludAkJCXBhcnROdW1Db2xzOwkvKiBudW1iZXIgb2YgY29sdW1ucyBp biBwYXJ0aXRpb24gY2xhdXNlICovCiAJQXR0ck51bWJlciAqcGFydENvbElkeDsJCS8qIHRo ZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCiAJT2lkCQkgICAqcGFydE9wZXJh dG9yczsJLyogZXF1YWxpdHkgb3BlcmF0b3JzIGZvciBwYXJ0aXRpb24gY29sdW1ucyAqLwor CU9pZAkJICAgKnBhcnRDb2xsYXRpb25zOwkvKiBjb2xsYXRpb25zIGZvciBwYXJ0aXRpb24g Y29sdW1ucyAqLwogCWludAkJCW9yZE51bUNvbHM7CQkvKiBudW1iZXIgb2YgY29sdW1ucyBp biBvcmRlcmluZyBjbGF1c2UgKi8KIAlBdHRyTnVtYmVyICpvcmRDb2xJZHg7CQkvKiB0aGVp ciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwogCU9pZAkJICAgKm9yZE9wZXJhdG9y czsJLyogZXF1YWxpdHkgb3BlcmF0b3JzIGZvciBvcmRlcmluZyBjb2x1bW5zICovCisJT2lk CQkgICAqb3JkQ29sbGF0aW9uczsJLyogY29sbGF0aW9ucyBmb3Igb3JkZXJpbmcgY29sdW1u cyAqLwogCWludAkJCWZyYW1lT3B0aW9uczsJLyogZnJhbWVfY2xhdXNlIG9wdGlvbnMsIHNl ZSBXaW5kb3dEZWYgKi8KIAlOb2RlCSAgICpzdGFydE9mZnNldDsJLyogZXhwcmVzc2lvbiBm b3Igc3RhcnRpbmcgYm91bmQsIGlmIGFueSAqLwogCU5vZGUJICAgKmVuZE9mZnNldDsJCS8q IGV4cHJlc3Npb24gZm9yIGVuZGluZyBib3VuZCwgaWYgYW55ICovCkBAIC04MzgsNiArODQz LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVW5pcXVlCiAJaW50CQkJbnVtQ29sczsJCS8qIG51bWJl ciBvZiBjb2x1bW5zIHRvIGNoZWNrIGZvciB1bmlxdWVuZXNzICovCiAJQXR0ck51bWJlciAq dW5pcUNvbElkeDsJCS8qIHRoZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCiAJ T2lkCQkgICAqdW5pcU9wZXJhdG9yczsJLyogZXF1YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBh cmUgd2l0aCAqLworCU9pZAkJICAgKnVuaXFDb2xsYXRpb25zOwkvKiBjb2xsYXRpb25zIGZv ciBlcXVhbGl0eSBjb21wYXJpc29ucyAqLwogfSBVbmlxdWU7CiAKIC8qIC0tLS0tLS0tLS0t LQpAQCAtOTEyLDYgKzkxOCw3IEBAIHR5cGVkZWYgc3RydWN0IFNldE9wCiAJCQkJCQkJCSAq IGR1cGxpY2F0ZS1uZXNzICovCiAJQXR0ck51bWJlciAqZHVwQ29sSWR4OwkJLyogdGhlaXIg aW5kZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KIAlPaWQJCSAgICpkdXBPcGVyYXRvcnM7 CS8qIGVxdWFsaXR5IG9wZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8KKwlPaWQJCSAgICpk dXBDb2xsYXRpb25zOwogCUF0dHJOdW1iZXIJZmxhZ0NvbElkeDsJCS8qIHdoZXJlIGlzIHRo ZSBmbGFnIGNvbHVtbiwgaWYgYW55ICovCiAJaW50CQkJZmlyc3RGbGFnOwkJLyogZmxhZyB2 YWx1ZSBmb3IgZmlyc3QgaW5wdXQgcmVsYXRpb24gKi8KIAlsb25nCQludW1Hcm91cHM7CQkv KiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGxhbm1haW4uaAppbmRleCBlYzFlYTEwMjMzLi5kZDBjY2E5OGZlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGxhbm1haW4uaApAQCAtNjMsNyArNjMsNyBAQCBleHRlcm4gYm9vbCBpc19w cm9qZWN0aW9uX2NhcGFibGVfcGxhbihQbGFuICpwbGFuKTsKIGV4dGVybiBTb3J0ICptYWtl X3NvcnRfZnJvbV9zb3J0Y2xhdXNlcyhMaXN0ICpzb3J0Y2xzLCBQbGFuICpsZWZ0dHJlZSk7 CiBleHRlcm4gQWdnICptYWtlX2FnZyhMaXN0ICp0bGlzdCwgTGlzdCAqcXVhbCwKIAkJIEFn Z1N0cmF0ZWd5IGFnZ3N0cmF0ZWd5LCBBZ2dTcGxpdCBhZ2dzcGxpdCwKLQkJIGludCBudW1H cm91cENvbHMsIEF0dHJOdW1iZXIgKmdycENvbElkeCwgT2lkICpncnBPcGVyYXRvcnMsCisJ CSBpbnQgbnVtR3JvdXBDb2xzLCBBdHRyTnVtYmVyICpncnBDb2xJZHgsIE9pZCAqZ3JwT3Bl cmF0b3JzLCBPaWQgKmdycENvbGxhdGlvbnMsCiAJCSBMaXN0ICpncm91cGluZ1NldHMsIExp c3QgKmNoYWluLAogCQkgZG91YmxlIGROdW1Hcm91cHMsIFBsYW4gKmxlZnR0cmVlKTsKIGV4 dGVybiBMaW1pdCAqbWFrZV9saW1pdChQbGFuICpsZWZ0dHJlZSwgTm9kZSAqbGltaXRPZmZz ZXQsIE5vZGUgKmxpbWl0Q291bnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3RsaXN0LmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvdGxpc3QuaAppbmRleCA5ZmE1 MmUxMjc4Li5mMzU1NmZlMjY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv dGxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvdGxpc3QuaApAQCAtNDgsNiAr NDgsNyBAQCBleHRlcm4gU29ydEdyb3VwQ2xhdXNlICpnZXRfc29ydGdyb3VwcmVmX2NsYXVz ZV9ub2VycihJbmRleCBzb3J0cmVmLAogCQkJCQkJCSAgTGlzdCAqY2xhdXNlcyk7CiAKIGV4 dGVybiBPaWQgKmV4dHJhY3RfZ3JvdXBpbmdfb3BzKExpc3QgKmdyb3VwQ2xhdXNlKTsKK2V4 dGVybiBPaWQgKmV4dHJhY3RfZ3JvdXBpbmdfY29sbGF0aW9ucyhMaXN0ICpncm91cENsYXVz ZSwgTGlzdCAqdGxpc3QpOwogZXh0ZXJuIEF0dHJOdW1iZXIgKmV4dHJhY3RfZ3JvdXBpbmdf Y29scyhMaXN0ICpncm91cENsYXVzZSwgTGlzdCAqdGxpc3QpOwogZXh0ZXJuIGJvb2wgZ3Jv dXBpbmdfaXNfc29ydGFibGUoTGlzdCAqZ3JvdXBDbGF1c2UpOwogZXh0ZXJuIGJvb2wgZ3Jv dXBpbmdfaXNfaGFzaGFibGUoTGlzdCAqZ3JvdXBDbGF1c2UpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRp dGlvbmluZy9wYXJ0Ym91bmRzLmgKaW5kZXggMzZmYjU4NGUyMy4uOWEyNzFiMDllOSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAorKysgYi9z cmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCkBAIC03Nyw2ICs3Nyw3IEBA IHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEKIAogZXh0ZXJuIGludAln ZXRfaGFzaF9wYXJ0aXRpb25fZ3JlYXRlc3RfbW9kdWx1cyhQYXJ0aXRpb25Cb3VuZEluZm8g Yik7CiBleHRlcm4gdWludDY0IGNvbXB1dGVfcGFydGl0aW9uX2hhc2hfdmFsdWUoaW50IHBh cnRuYXR0cywgRm1nckluZm8gKnBhcnRzdXBmdW5jLAorCQkJCQkJCSBPaWQgKnBhcnRjb2xs YXRpb24sCiAJCQkJCQkJIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7CiBleHRlcm4g TGlzdCAqZ2V0X3F1YWxfZnJvbV9wYXJ0Ym91bmQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBw YXJlbnQsCiAJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ19s b2NhbGUuaAppbmRleCA4OGEzMTM0ODYyLi42ZGRhMmY4YWNhIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ19s b2NhbGUuaApAQCAtODIsNiArODIsNyBAQCBleHRlcm4gdm9pZCBjYWNoZV9sb2NhbGVfdGlt ZSh2b2lkKTsKIHN0cnVjdCBwZ19sb2NhbGVfc3RydWN0CiB7CiAJY2hhcgkJcHJvdmlkZXI7 CisJYm9vbAkJaW5zZW5zaXRpdmU7CiAJdW5pb24KIAl7CiAjaWZkZWYgSEFWRV9MT0NBTEVf VApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51 dGY4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5v dXQKaW5kZXggZjQ4NWI1YzMzMC4uZjAwOWIyNmI3NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CkBAIC0xMTAwLDkgKzExMDAs MTM3IEBAIHNlbGVjdCB0ZXh0cmFuZ2VfZW5fdXMoJ0EnLCdaJykgQD4gJ2InOjp0ZXh0Owog CiBkcm9wIHR5cGUgdGV4dHJhbmdlX2M7CiBkcm9wIHR5cGUgdGV4dHJhbmdlX2VuX3VzOwor LS0gaW5zZW5zaXRpdmUgY29sbGF0aW9ucworQ1JFQVRFIENPTExBVElPTiBjYXNlX3NlbnNp dGl2ZSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICd1bmQnKTsKK0NSRUFURSBDT0xMQVRJ T04gY2FzZV9pbnNlbnNpdGl2ZSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICd1bmQtdS1r cy1sZXZlbDInLCBpbnNlbnNpdGl2ZSk7CitTRUxFQ1QgJ2FiYycgPD0gJ0FCQycgQ09MTEFU RSBjYXNlX3NlbnNpdGl2ZSwgJ2FiYycgPj0gJ0FCQycgQ09MTEFURSBjYXNlX3NlbnNpdGl2 ZTsKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAg ICAgICAgfCBmCisoMSByb3cpCisKK1NFTEVDVCAnYWJjJyA8PSAnQUJDJyBDT0xMQVRFIGNh c2VfaW5zZW5zaXRpdmUsICdhYmMnID49ICdBQkMnIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2 ZTsKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAg ICAgICAgfCB0CisoMSByb3cpCisKK0NSRUFURSBUQUJMRSB0ZXN0MWNzICh4IHRleHQgQ09M TEFURSBjYXNlX3NlbnNpdGl2ZSk7CitDUkVBVEUgVEFCTEUgdGVzdDJjcyAoeCB0ZXh0IENP TExBVEUgY2FzZV9zZW5zaXRpdmUpOworQ1JFQVRFIFRBQkxFIHRlc3QzY3MgKHggdGV4dCBD T0xMQVRFIGNhc2Vfc2Vuc2l0aXZlKTsKK0lOU0VSVCBJTlRPIHRlc3QxY3MgVkFMVUVTICgn YWJjJyksICgnZGVmJyksICgnZ2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0MmNzIFZBTFVFUyAo J0FCQycpLCAoJ2doaScpOworSU5TRVJUIElOVE8gdGVzdDNjcyBWQUxVRVMgKCdhYmMnKSwg KCdBQkMnKSwgKCdkZWYnKSwgKCdnaGknKTsKK1NFTEVDVCB4IEZST00gdGVzdDFjcyBVTklP TiBTRUxFQ1QgeCBGUk9NIHRlc3QyY3M7CisgIHggIAorLS0tLS0KKyBBQkMKKyBhYmMKKyBk ZWYKKyBnaGkKKyg0IHJvd3MpCisKK1NFTEVDVCB4IEZST00gdGVzdDJjcyBVTklPTiBTRUxF Q1QgeCBGUk9NIHRlc3QxY3M7CisgIHggIAorLS0tLS0KKyBBQkMKKyBhYmMKKyBkZWYKKyBn aGkKKyg0IHJvd3MpCisKK1NFTEVDVCB4IEZST00gdGVzdDFjcyBJTlRFUlNFQ1QgU0VMRUNU IHggRlJPTSB0ZXN0MmNzOworICB4ICAKKy0tLS0tCisgZ2hpCisoMSByb3cpCisKK1NFTEVD VCB4IEZST00gdGVzdDJjcyBJTlRFUlNFQ1QgU0VMRUNUIHggRlJPTSB0ZXN0MWNzOworICB4 ICAKKy0tLS0tCisgZ2hpCisoMSByb3cpCisKK1NFTEVDVCB4IEZST00gdGVzdDFjcyBFWENF UFQgU0VMRUNUIHggRlJPTSB0ZXN0MmNzOworICB4ICAKKy0tLS0tCisgYWJjCisgZGVmCiso MiByb3dzKQorCitTRUxFQ1QgeCBGUk9NIHRlc3QyY3MgRVhDRVBUIFNFTEVDVCB4IEZST00g dGVzdDFjczsKKyAgeCAgCistLS0tLQorIEFCQworKDEgcm93KQorCitTRUxFQ1QgeCwgY291 bnQoKikgRlJPTSB0ZXN0M2NzIEdST1VQIEJZIHggT1JERVIgQlkgeDsKKyAgeCAgfCBjb3Vu dCAKKy0tLS0tKy0tLS0tLS0KKyBhYmMgfCAgICAgMQorIEFCQyB8ICAgICAxCisgZGVmIHwg ICAgIDEKKyBnaGkgfCAgICAgMQorKDQgcm93cykKKworQ1JFQVRFIFRBQkxFIHRlc3QxY2kg KHggdGV4dCBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUpOworQ1JFQVRFIFRBQkxFIHRlc3Qy Y2kgKHggdGV4dCBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUpOworQ1JFQVRFIFRBQkxFIHRl c3QzY2kgKHggdGV4dCBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUpOworSU5TRVJUIElOVE8g dGVzdDFjaSBWQUxVRVMgKCdhYmMnKSwgKCdkZWYnKSwgKCdnaGknKTsKK0lOU0VSVCBJTlRP IHRlc3QyY2kgVkFMVUVTICgnQUJDJyksICgnZ2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0M2Np IFZBTFVFUyAoJ2FiYycpLCAoJ0FCQycpLCAoJ2RlZicpLCAoJ2doaScpOworU0VMRUNUIHgg RlJPTSB0ZXN0MWNpIFVOSU9OIFNFTEVDVCB4IEZST00gdGVzdDJjaTsKKyAgeCAgCistLS0t LQorIGFiYworIGdoaQorIGRlZgorKDMgcm93cykKKworU0VMRUNUIHggRlJPTSB0ZXN0MmNp IFVOSU9OIFNFTEVDVCB4IEZST00gdGVzdDFjaTsKKyAgeCAgCistLS0tLQorIEFCQworIGdo aQorIGRlZgorKDMgcm93cykKKworU0VMRUNUIHggRlJPTSB0ZXN0MWNpIElOVEVSU0VDVCBT RUxFQ1QgeCBGUk9NIHRlc3QyY2k7CisgIHggIAorLS0tLS0KKyBnaGkKKyBhYmMKKygyIHJv d3MpCisKK1NFTEVDVCB4IEZST00gdGVzdDJjaSBJTlRFUlNFQ1QgU0VMRUNUIHggRlJPTSB0 ZXN0MWNpOworICB4ICAKKy0tLS0tCisgZ2hpCisgQUJDCisoMiByb3dzKQorCitTRUxFQ1Qg eCBGUk9NIHRlc3QxY2kgRVhDRVBUIFNFTEVDVCB4IEZST00gdGVzdDJjaTsKKyAgeCAgCist LS0tLQorIGRlZgorKDEgcm93KQorCitTRUxFQ1QgeCBGUk9NIHRlc3QyY2kgRVhDRVBUIFNF TEVDVCB4IEZST00gdGVzdDFjaTsKKyB4IAorLS0tCisoMCByb3dzKQorCitTRUxFQ1QgeCwg Y291bnQoKikgRlJPTSB0ZXN0M2NpIEdST1VQIEJZIHggT1JERVIgQlkgeDsKKyAgeCAgfCBj b3VudCAKKy0tLS0tKy0tLS0tLS0KKyBhYmMgfCAgICAgMgorIGRlZiB8ICAgICAxCisgZ2hp IHwgICAgIDEKKygzIHJvd3MpCisKIC0tIGNsZWFudXAKIERST1AgU0NIRU1BIGNvbGxhdGVf dGVzdHMgQ0FTQ0FERTsKLU5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMTggb3RoZXIgb2Jq ZWN0cworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAyNiBvdGhlciBvYmplY3RzCiBERVRB SUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdDEKIGRyb3AgY2FzY2Fk ZXMgdG8gdGFibGUgY29sbGF0ZV90ZXN0X2xpa2UKIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUg Y29sbGF0ZV90ZXN0MgpAQCAtMTEyMSw2ICsxMjQ5LDE0IEBAIGRyb3AgY2FzY2FkZXMgdG8g ZnVuY3Rpb24gbXlsdF9ub25pbmxpbmUodGV4dCx0ZXh0KQogZHJvcCBjYXNjYWRlcyB0byBm dW5jdGlvbiBteWx0X3BscGdzcWwodGV4dCx0ZXh0KQogZHJvcCBjYXNjYWRlcyB0byBmdW5j dGlvbiBteWx0Mih0ZXh0LHRleHQpCiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGR1cChh bnllbGVtZW50KQorZHJvcCBjYXNjYWRlcyB0byBjb2xsYXRpb24gY2FzZV9zZW5zaXRpdmUK K2Ryb3AgY2FzY2FkZXMgdG8gY29sbGF0aW9uIGNhc2VfaW5zZW5zaXRpdmUKK2Ryb3AgY2Fz Y2FkZXMgdG8gdGFibGUgdGVzdDFjcworZHJvcCBjYXNjYWRlcyB0byB0YWJsZSB0ZXN0MmNz Citkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIHRlc3QzY3MKK2Ryb3AgY2FzY2FkZXMgdG8gdGFi bGUgdGVzdDFjaQorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSB0ZXN0MmNpCitkcm9wIGNhc2Nh ZGVzIHRvIHRhYmxlIHRlc3QzY2kKIFJFU0VUIHNlYXJjaF9wYXRoOwogLS0gbGVhdmUgYSBj b2xsYXRpb24gZm9yIHBnX3VwZ3JhZGUgdGVzdAogQ1JFQVRFIENPTExBVElPTiBjb2xsX2lj dV91cGdyYWRlIEZST00gInVuZC14LWljdSI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv bGxhdGUuaWN1LnV0Zjguc3FsCmluZGV4IGVmMzk0NDViMzAuLjUwYmMxMmMxNmQgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCkBAIC00MjUsNiAr NDI1LDQ1IEBAIENSRUFURSBJTkRFWCBjb2xsYXRlX2RlcF90ZXN0NGkgT04gY29sbGF0ZV9k ZXBfdGVzdDR0IChiIENPTExBVEUgdGVzdDApOwogZHJvcCB0eXBlIHRleHRyYW5nZV9lbl91 czsKIAogCistLSBpbnNlbnNpdGl2ZSBjb2xsYXRpb25zCisKK0NSRUFURSBDT0xMQVRJT04g Y2FzZV9zZW5zaXRpdmUgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAndW5kJyk7CitDUkVB VEUgQ09MTEFUSU9OIGNhc2VfaW5zZW5zaXRpdmUgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUg PSAndW5kLXUta3MtbGV2ZWwyJywgaW5zZW5zaXRpdmUpOworCitTRUxFQ1QgJ2FiYycgPD0g J0FCQycgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSwgJ2FiYycgPj0gJ0FCQycgQ09MTEFURSBj YXNlX3NlbnNpdGl2ZTsKK1NFTEVDVCAnYWJjJyA8PSAnQUJDJyBDT0xMQVRFIGNhc2VfaW5z ZW5zaXRpdmUsICdhYmMnID49ICdBQkMnIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZTsKKwor Q1JFQVRFIFRBQkxFIHRlc3QxY3MgKHggdGV4dCBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZlKTsK K0NSRUFURSBUQUJMRSB0ZXN0MmNzICh4IHRleHQgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSk7 CitDUkVBVEUgVEFCTEUgdGVzdDNjcyAoeCB0ZXh0IENPTExBVEUgY2FzZV9zZW5zaXRpdmUp OworSU5TRVJUIElOVE8gdGVzdDFjcyBWQUxVRVMgKCdhYmMnKSwgKCdkZWYnKSwgKCdnaGkn KTsKK0lOU0VSVCBJTlRPIHRlc3QyY3MgVkFMVUVTICgnQUJDJyksICgnZ2hpJyk7CitJTlNF UlQgSU5UTyB0ZXN0M2NzIFZBTFVFUyAoJ2FiYycpLCAoJ0FCQycpLCAoJ2RlZicpLCAoJ2do aScpOworCitTRUxFQ1QgeCBGUk9NIHRlc3QxY3MgVU5JT04gU0VMRUNUIHggRlJPTSB0ZXN0 MmNzOworU0VMRUNUIHggRlJPTSB0ZXN0MmNzIFVOSU9OIFNFTEVDVCB4IEZST00gdGVzdDFj czsKK1NFTEVDVCB4IEZST00gdGVzdDFjcyBJTlRFUlNFQ1QgU0VMRUNUIHggRlJPTSB0ZXN0 MmNzOworU0VMRUNUIHggRlJPTSB0ZXN0MmNzIElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRl c3QxY3M7CitTRUxFQ1QgeCBGUk9NIHRlc3QxY3MgRVhDRVBUIFNFTEVDVCB4IEZST00gdGVz dDJjczsKK1NFTEVDVCB4IEZST00gdGVzdDJjcyBFWENFUFQgU0VMRUNUIHggRlJPTSB0ZXN0 MWNzOworU0VMRUNUIHgsIGNvdW50KCopIEZST00gdGVzdDNjcyBHUk9VUCBCWSB4IE9SREVS IEJZIHg7CisKK0NSRUFURSBUQUJMRSB0ZXN0MWNpICh4IHRleHQgQ09MTEFURSBjYXNlX2lu c2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0MmNpICh4IHRleHQgQ09MTEFURSBjYXNl X2luc2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0M2NpICh4IHRleHQgQ09MTEFURSBj YXNlX2luc2Vuc2l0aXZlKTsKK0lOU0VSVCBJTlRPIHRlc3QxY2kgVkFMVUVTICgnYWJjJyks ICgnZGVmJyksICgnZ2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0MmNpIFZBTFVFUyAoJ0FCQycp LCAoJ2doaScpOworSU5TRVJUIElOVE8gdGVzdDNjaSBWQUxVRVMgKCdhYmMnKSwgKCdBQkMn KSwgKCdkZWYnKSwgKCdnaGknKTsKKworU0VMRUNUIHggRlJPTSB0ZXN0MWNpIFVOSU9OIFNF TEVDVCB4IEZST00gdGVzdDJjaTsKK1NFTEVDVCB4IEZST00gdGVzdDJjaSBVTklPTiBTRUxF Q1QgeCBGUk9NIHRlc3QxY2k7CitTRUxFQ1QgeCBGUk9NIHRlc3QxY2kgSU5URVJTRUNUIFNF TEVDVCB4IEZST00gdGVzdDJjaTsKK1NFTEVDVCB4IEZST00gdGVzdDJjaSBJTlRFUlNFQ1Qg U0VMRUNUIHggRlJPTSB0ZXN0MWNpOworU0VMRUNUIHggRlJPTSB0ZXN0MWNpIEVYQ0VQVCBT RUxFQ1QgeCBGUk9NIHRlc3QyY2k7CitTRUxFQ1QgeCBGUk9NIHRlc3QyY2kgRVhDRVBUIFNF TEVDVCB4IEZST00gdGVzdDFjaTsKK1NFTEVDVCB4LCBjb3VudCgqKSBGUk9NIHRlc3QzY2kg R1JPVVAgQlkgeCBPUkRFUiBCWSB4OworCisKIC0tIGNsZWFudXAKIERST1AgU0NIRU1BIGNv bGxhdGVfdGVzdHMgQ0FTQ0FERTsKIFJFU0VUIHNlYXJjaF9wYXRoOwoKYmFzZS1jb21taXQ6 IDZiMGZhZjcyMzY0N2E4NTFlYWFkZGZlZDExZTE0ODYxZjhkMGY1ODgKLS0gCjIuMjAuMQoK --------------AB242FB894BC9F5057C79E8E--