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 1gi0OX-0005Wa-97 for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Jan 2019 17:14:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gi0OV-0003W3-MD for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Jan 2019 17:14:55 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gi0OT-0003Vo-Sp for pgsql-hackers@lists.postgresql.org; Fri, 11 Jan 2019 17:14:55 +0000 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gi0OD-0003a2-Tl for pgsql-hackers@postgresql.org; Fri, 11 Jan 2019 17:14:52 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id 90CED12CA; Fri, 11 Jan 2019 12:14:35 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Fri, 11 Jan 2019 12:14:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=Sw5WxJ RWNoMKd159B+9WzyPz/fXDgocslayRnOX3ru8=; b=YiZW7e+uAZxgr6yjwq4n4V JJQSvhnAS/tn9oTe77itRiWQh4OXmd222KcMI5hTo/QW/ZB0WGRROzAQPIbPeHB/ HPIj/Wm94HIPaWbO6jjfzngySVeC1m06khkUWcKiBeBFC0S1TgYGqmrrH8rRqzYh yWP2Zx2qXuy+euWCWNtKOali8VX6uw4UwvvqHgdprTgYErlrR6z/CqfHNvGosPhv GfVZqQB41jVGU/o3Q/wl0aSetGf1Zx7JZNTODwDfrFmwYGfe9TQe5cfmwTGHOfW1 LZ82+yDJqwTtz31/Jmq1jiZfqt2yVW+NSk9Tex7esGXzwqkKOqRS+CKVY29TV/qQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedtledrfeehgddutddtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfquhhtnecuuegrihhlohhuthemucef tddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefuvfhfhfhokf fffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghu thcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomh eqnecuffhomhgrihhnpedvnhguqhhurggurhgrnhhtrdgtohhmpdhpohhsthhgrhgvshhq lhdrohhrghenucfkphepleefrddvgeefrdduudelrddvfeelnecurfgrrhgrmhepmhgrih hlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdr tghomhenucevlhhushhtvghrufhiiigvpedt 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 4A60D102E8; Fri, 11 Jan 2019 12:14:31 -0500 (EST) Subject: Re: Unified logging system for command-line programs To: Donald Dong References: <6a609b43-4f57-7348-6480-bd022f924310@2ndquadrant.com> <21141.1546199123@sss.pgh.pa.us> <20181231155557.7mokxwg7fnvoxd4a@alap3.anarazel.de> <841dd9fb-3550-dce0-e9ff-8f64cac9f15d@2ndquadrant.com> <20190103180315.o4gh3id5quh5aebc@alap3.anarazel.de> <6174.1546549274@sss.pgh.pa.us> <4159.1546553023@sss.pgh.pa.us> <20190103220801.pi234uthwjguwrt3@alap3.anarazel.de> <38A737AF-9C4E-483F-B8DD-7B5E718B66C8@csumb.edu> Cc: Andres Freund , Tom Lane , pgsql-hackers From: Peter Eisentraut Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= xsFNBFUUt6kBEADZd9NNTBJbHmAXXJgPGOdd6Q73l80oifIVgn2tRxP9dYkCfTlo/yLqbKTl JNqTcyM6XrJDnB2sMEUGYCewYZXl+9C4bBJWyNqcEI1ae9u71vEq/fknFLArJ+2wN+f7QuRx Q8d94ZJAiJQ5g3fNk2HVeedCQCKP5dCzU+ZLt2dbsx1PDZLjTO9gf+JswWuGFb5wY5PZVM5V hq66Xk7ZJzHuARacza2RT7J2fkMmQBY+kr7L98Perb0GhafnlhXB0PvUB+N3xpmggMfwuhTu BngS/G/r3GvemxJuFxouw8xsMqrsfdksJXA2gLXYtwRCssdPV3PO0rlD9twqDo8URfIJ5fb6 1g/MV8aTOKjg3Q8MpJPtkwJqN4o3PvbwYdedeFnOVkkYAJdu/aX1v1BeCBDu7Hy3sF52scD3 pQbyQSl9vUDpTLarASAxNbAV0NRJE8dp4vfW6AH1ccryGiFqw/czPK/iN0+MT8wsjAW6WW4w hvjm5UPA1KTwi3ZT8eT5uycuH7QpuNk7LnGGXQ6KaRALFywzkr0A0V0AvFNa+l4wstMaXaB6 dmMXyF0/hfryqyOeu1gAdq4q0/PNC2dPgb/6uoh4eMjN6A5GXcprilhz5DulmsilY21hfSoU S64ODed96pKhprsOxjZiDRsN1QM5MwB+uwVWUNfsX7fIxE0BrwARAQABzSdQZXRlciBFaXNl bnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz7CwXoEEwEIACQCGwMFCwkIBwMFFQoJCAsF FgIDAQACHgECF4AFAlUUuKQCGQEACgkQoZ8SQ+xBJp8llw//RbGoXnF72FZTlOFsnNyxnWbF vViPCfdAlZl1GGK9OYCvV1dp/956HuhB0wpaGQHiBmQfOPJf/jLOPjXFYm2iEChEycrBChuE j4TSYemMp5BSPILYk9Uwd16kVD/+U6fQfK6H5pOhfBvbM6asMnmpY2wQuvktxHvaGlytFw84 EzFWNZtAZfxkw28w3AhIQkKe9hJanfyDL750RcbyEr8AAHty5IErrvS7tM5vQwIeh5BF26ND CyKPRdZgOgMpcwFfROKBDpAt052CgWIpNdhBdfIKlkCs4/ILxmC3rT/Mb/qZiHcoMMwEu6k+ T7vRAFZZAk62Yrr/U8/vUGKlzRZQoo86fyojCfI0ibCIc0z8rwCVY9P40G9wD9BTCZS/z8Vh jjpBlNnIKw2hM6hbxavKndCJjFFJD08rXrTyrLF/of18xD37vNdYooP9VATB5QjOWFRrscSZ 4a89e+to3m7YVnd4xdXwGp47dYusoax84C8tg1gZrH38ol9dPmnKX6GZrXeS7tH9k8VeUpJ8 HQbRThQRWAT936QpYbLConBmOtmbLmjQOGtiXPo1oK57X/7U/WBja5vWmm2q+Yxtt+3uHGVg DdDU4CJpXo4lX0v2n3QV5EBSW9hjdF3bNfl6GFBb1pPEhqNcMDUc7zkx/2uENdAdk/BnqMgH umip7b0pVfvOwU0EVRS3qQEQAJf6p0P7D+hMYUgCPkvgrcz6OJYsAYdUMUmokfqmkKwK0oJM ew8TNGM53ocKAgQGma5f10rwbZNPlpVPNRX5hwUmwVlcwSut0oE+JfUBH7mpysWvpF05RKIy q9RCoJZrAbXS7Tig56A1QD8IcM00rERZMcCOlI1+q9m4u9AOI+0LyGGSH+VvoyDHD/Jew4R2 TmPEF8Pu7lYiNYK88Q6u0kBkc+Tz3BNlyc6fi3HxnFfp0b75HLXPSTu2SwA/0Q31wHZXwrEU BR9KgSn/qbgy8ydPc97i82fhiFE3cbGexfPrQSMYmDGi+dcQ0s+AMQwC3XyMC0JkHpYUuFkR QdlIvaIhgFUUN2Vr4xF2ADaNTNFc4DYaiPHFAgHZw+3pZWqS4uIiWgJynrEaHw4F3QWU8/JB iyEWDhNq4WBrRA0u914TCCAoFOOKMnRdl8eJrRQKM/5/lXbHFjjlI/LDKhLRFsuQsnJJ3331 RjCzpHPZG5/p5KR1RHiAXa0p/DW5lXyq21hS3kjDlleoHqOxCN/cy0Jgz7qLDq1vZoCl67Sy RAH60c2Xu4may9SVltmot0OzWVHdrfS+85FQGp9580DaeLio7YMFKy2bfEvwQJ/c9xD2QPB+ oSb3V8ueSznXBG5+dyfOsZFRPxceA0wA2rSWZSjxLdKxvyGTj9vsCjaDu13rABEBAAHCwV8E GAEIAAkFAlUUt6kCGwwACgkQoZ8SQ+xBJp+HJhAAxmSTsC5y7p9Zu+nnLpucv/h88oEx985e qWeXzQiwM3pfRZS+PdTH9TyzHK0KOgKoAiubk0vt+BrT91D9d0G5kVQaTctAErGBoMkTaZJT XVEcNphiPzysdSqvprjojMp1y7rG8AP+Xd6m0rE1LRnkRRm8HyI8vdXsuLQPITGWXDLMjaNq AOV3BUnzkgtjMuIYw7SCr+12ZOb5dEKvaG4kjC4kaJ/TLbuBhVANcXkC90yp0AOZLs/cB1Dj OAXno/RUUruJ3r27a+pFv768UAi9QWcdw58yPxreMNMLqAgsS9oTHwHfGNWcB2dJ4UW+GMLJ hTf9TjQ2f+N/sIx5XMQ9pYw6CAJMK29qPx6/ZayrPxf22EXf0D3zTwIEZgwfSkynFVwV25L7 awQq60fifdMYheSxq7GbhpsixmcD+e161cCmLIt75YDt5bQ0B1yf7EmxG8n7pGZAOM6LoNsU fkSldba5XVwh8LuN5mK0nQBELGW6Os4TDq4REggLpfcvFC215zpuo0iCGnmE/Bns4nowqUSP u4tkWL+nxW4qgv8wo8HJ52jd79EJ8iqfIBoidBfy9AIUiEUApGQzWPu6yWcI8fY0rN5D+tc+ Yw1Zt6Mm+huYJpgCRsTcfzEcahnBn521CWcWvhW1ff3KFileFMtNmnBBhMncmRKHphtTKEpN 3jI= Organization: 2ndQuadrant Message-ID: Date: Fri, 11 Jan 2019 18:14:29 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <38A737AF-9C4E-483F-B8DD-7B5E718B66C8@csumb.edu> Content-Type: multipart/mixed; boundary="------------D45B2DDFBC09D3429D0BF77D" 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. --------------D45B2DDFBC09D3429D0BF77D Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 10/01/2019 05:57, Donald Dong wrote: > I think the logging system can also be applied on pg_regress. Perhaps even > for the external frontend applications? Could be done, yes. A bit at a time. ;-) > The patch cannot be applied directly on HEAD. So I patched it on top of > 60d99797bf. Here is an updated patch with the merge conflicts of my own design resolved. No functionality changes. > When I call pg_log_error() in initdb, I see > > Program received signal SIGSEGV, Segmentation fault. > __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:62 > 62 ../sysdeps/x86_64/multiarch/strlen-avx2.S: No such file or directory. > (gdb) bt > #0 __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:62 > #1 0x0000555555568f96 in dopr.constprop () > #2 0x0000555555569ddb in pg_vsnprintf () > #3 0x0000555555564236 in pg_log_generic () > #4 0x000055555555c240 in main () What do you mean exactly by "I call pg_log_error()"? The existing calls in initdb clearly work, at least some of them, that is covered by the test suite. Are you adding new calls? > I'm not sure what would be causing this behavior. I would appreciate > references or docs for testing and debugging patches more efficiently. > Now I'm having difficulties loading symbols of initdb in gdb. The above looks like you'd probably get a better insight by compiling with -O0 or some other lower optimization setting. There is also this: https://wiki.postgresql.org/wiki/Getting_a_stack_trace_of_a_running_PostgreSQL_backend_on_Linux/BSD -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------D45B2DDFBC09D3429D0BF77D Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0001-Unified-logging-system-for-command-line-programs.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v2-0001-Unified-logging-system-for-command-line-programs.pat"; filename*1="ch" RnJvbSA1ZWYwYmQ1NTQ1NzNiZTNlNGExZWM3OWI2MDY1ZTlkN2FjZDUxODdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAxMSBKYW4gMjAxOSAxODowOTowOSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjJdIFVuaWZpZWQgbG9nZ2luZyBzeXN0ZW0gZm9yIGNvbW1hbmQtbGluZSBw cm9ncmFtcwoKVGhpcyB1bmlmaWVzIHRoZSB2YXJpb3VzIGFkIGhvYyBsb2dnaW5nIChtZXNz YWdlIHByaW50aW5nLCBlcnJvcgpwcmludGluZykgc3lzdGVtcyB1c2VkIHRocm91Z2hvdXQg dGhlIGNvbW1hbmQtbGluZSBwcm9ncmFtcy4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9taXNj L3BnX2NvbnRyb2xkYXRhLmMgICAgICAgfCAgIDggKy0KIHNyYy9iaW4vaW5pdGRiL2luaXRk Yi5jICAgICAgICAgICAgICAgICAgICAgICB8IDI2MiArKysrKy0tLS0tLQogc3JjL2Jpbi9p bml0ZGIvbmxzLm1rICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmlu L3BnX2FyY2hpdmVjbGVhbnVwL01ha2VmaWxlICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9i aW4vcGdfYXJjaGl2ZWNsZWFudXAvbmxzLm1rICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jIHwgIDUzICstLQog c3JjL2Jpbi9wZ19iYXNlYmFja3VwL25scy5tayAgICAgICAgICAgICAgICAgIHwgICA1ICst CiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jICAgICAgICAgfCA0MTEg KysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfcmVjZWl2ZXdh bC5jICAgICAgICAgfCAxMjQgKysrLS0tCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfcmVj dmxvZ2ljYWwuYyAgICAgICAgfCAxNTcgKysrLS0tLQogc3JjL2Jpbi9wZ19iYXNlYmFja3Vw L3JlY2VpdmVsb2cuYyAgICAgICAgICAgIHwgMjE2ICsrKystLS0tLQogc3JjL2Jpbi9wZ19i YXNlYmFja3VwL3N0cmVhbXV0aWwuYyAgICAgICAgICAgIHwgIDk3ICsrLS0tCiBzcmMvYmlu L3BnX2Jhc2ViYWNrdXAvd2FsbWV0aG9kcy5jICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9i aW4vcGdfY29udHJvbGRhdGEvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jICAgICAgIHwgICA1ICstCiBz cmMvYmluL3BnX2N0bC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9iaW4vcGdfY3RsL3BnX2N0bC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCAr LQogc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jICAgICAgICAgICAgICAgICAgICAgIHwgMTI0 ICsrLS0tLQogc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMgICAgICAgICAgICAgICAg IHwgIDQ2ICstCiBzcmMvYmluL3BnX2R1bXAvbmxzLm1rICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTMgKy0KIHNyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jICAgICAgICAgICAgICAg ICAgICB8ICA2MCArLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyAg ICAgICAgICB8IDIyNiArKysrKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2Fy Y2hpdmVyLmggICAgICAgICAgfCAgMTMgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf Y3VzdG9tLmMgICAgICAgICAgICB8ICA5MyArKy0tCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFj a3VwX2RiLmMgICAgICAgICAgICAgICAgfCAgNDAgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfZGlyZWN0b3J5LmMgICAgICAgICB8ICA3MiArKy0KIHNyYy9iaW4vcGdfZHVtcC9w Z19iYWNrdXBfbnVsbC5jICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF90YXIuYyAgICAgICAgICAgICAgIHwgIDg4ICsrLS0KIHNyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfdXRpbHMuYyAgICAgICAgICAgICB8ICAyMiArLQogc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF91dGlscy5oICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAzMzAgKysrKysrKy0t LS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8 ICAgMSAtCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgICAgICAgICAgICAgICAg fCAgMjYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgICAgICAgICAgICAgICAg ICB8IDExOCArKystLQogc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYyAgICAgICAgICAg ICAgICAgIHwgIDM2ICstCiBzcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwgICAgICAg ICAgICAgICAgfCAgNTIgKy0tCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAg ICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9iaW4vcGdfcmVzZXR3YWwvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19yZXNldHdhbC9ubHMubWsgICAg ICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0 d2FsLmMgICAgICAgICAgICAgfCAxODEgKysrKy0tLS0KIHNyYy9iaW4vcGdfcmVzZXR3YWwv dC8wMDJfY29ycnVwdGVkLnBsICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19yZXdpbmQv TWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BnX3Jld2lu ZC9jb3B5X2ZldGNoLmMgICAgICAgICAgICAgICAgfCAgMzggKy0KIHNyYy9iaW4vcGdfcmV3 aW5kL2RhdGFwYWdlbWFwLmMgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2Jpbi9wZ19y ZXdpbmQvZmlsZV9vcHMuYyAgICAgICAgICAgICAgICAgIHwgIDYwICstLQogc3JjL2Jpbi9w Z19yZXdpbmQvZmlsZW1hcC5jICAgICAgICAgICAgICAgICAgIHwgIDM0ICstCiBzcmMvYmlu L3BnX3Jld2luZC9saWJwcV9mZXRjaC5jICAgICAgICAgICAgICAgfCAgMzYgKy0KIHNyYy9i aW4vcGdfcmV3aW5kL2xvZ2dpbmcuYyAgICAgICAgICAgICAgICAgICB8ICA2OSArLS0KIHNy Yy9iaW4vcGdfcmV3aW5kL2xvZ2dpbmcuaCAgICAgICAgICAgICAgICAgICB8ICAxOCArLQog c3JjL2Jpbi9wZ19yZXdpbmQvbmxzLm1rICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICst CiBzcmMvYmluL3BnX3Jld2luZC9wYXJzZXhsb2cuYyAgICAgICAgICAgICAgICAgfCAgMjIg Ky0KIHNyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jICAgICAgICAgICAgICAgICB8ICA3 MCArLS0KIHNyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5oICAgICAgICAgICAgICAgICB8 ICAgMSAtCiBzcmMvYmluL3BnX3Jld2luZC90aW1lbGluZS5jICAgICAgICAgICAgICAgICAg fCAgMTcgKy0KIHNyYy9iaW4vcGdfdGVzdF9mc3luYy9NYWtlZmlsZSAgICAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL2Jpbi9wZ190ZXN0X2ZzeW5jL3BnX3Rlc3RfZnN5bmMuYyAgICAg ICAgIHwgIDE5ICstCiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jICAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9NYWtlZmlsZSAg ICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zL25scy5tayAg ICAgICAgICAgIHwgICA0ICstCiAuLi4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9wZ192ZXJpZnlf Y2hlY2tzdW1zLmMgfCAgNDMgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2Jpbi9wZ193YWxkdW1wL25scy5tayAgICAg ICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVt cC5jICAgICAgICAgICAgICAgfCAgNzEgKy0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j ICAgICAgICAgICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9iaW4vcHNxbC9jb21tYW5kLmMg ICAgICAgICAgICAgICAgICAgICAgICB8IDE1NyArKystLS0tCiBzcmMvYmluL3BzcWwvY29t bW9uLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgODEgKystLQogc3JjL2Jpbi9wc3Fs L2NvbW1vbi5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyIC0KIHNyYy9iaW4vcHNx bC9jb3B5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0MiArLQogc3JjL2Jpbi9w c3FsL2Nyb3NzdGFidmlldy5jICAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmlu L3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNzUgKystLQogc3Jj L2Jpbi9wc3FsL2hlbHAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCiBz cmMvYmluL3BzcWwvaW5wdXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTUgKy0K IHNyYy9iaW4vcHNxbC9sYXJnZV9vYmouYyAgICAgICAgICAgICAgICAgICAgICB8ICAxNSAr LQogc3JjL2Jpbi9wc3FsL21haW5sb29wLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0 ICstCiBzcmMvYmluL3BzcWwvbmxzLm1rICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDggKy0KIHNyYy9iaW4vcHNxbC9wc3Fsc2NhbnNsYXNoLmwgICAgICAgICAgICAgICAgICB8 ICAxMSArLQogc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYyAgICAgICAgICAgICAgICAgICAgICAg IHwgIDQyICstCiBzcmMvYmluL3BzcWwvdmFyaWFibGVzLmMgICAgICAgICAgICAgICAgICAg ICAgfCAgMTEgKy0KIHNyYy9iaW4vc2NyaXB0cy9jbHVzdGVyZGIuYyAgICAgICAgICAgICAg ICAgICB8ICAyMCArLQogc3JjL2Jpbi9zY3JpcHRzL2NvbW1vbi5jICAgICAgICAgICAgICAg ICAgICAgIHwgIDMwICstCiBzcmMvYmluL3NjcmlwdHMvY3JlYXRlZGIuYyAgICAgICAgICAg ICAgICAgICAgfCAgMjIgKy0KIHNyYy9iaW4vc2NyaXB0cy9jcmVhdGV1c2VyLmMgICAgICAg ICAgICAgICAgICB8ICAxMyArLQogc3JjL2Jpbi9zY3JpcHRzL2Ryb3BkYi5jICAgICAgICAg ICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmluL3NjcmlwdHMvZHJvcHVzZXIuYyAgICAg ICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iaW4vc2NyaXB0cy9ubHMubWsgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2Jpbi9zY3JpcHRzL3BnX2lzcmVhZHku YyAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmluL3NjcmlwdHMvcmVpbmRleGRi LmMgICAgICAgICAgICAgICAgICAgfCAgNDIgKy0KIHNyYy9iaW4vc2NyaXB0cy92YWN1dW1k Yi5jICAgICAgICAgICAgICAgICAgICB8ICA0MCArLQogc3JjL2NvbW1vbi9jb250cm9sZGF0 YV91dGlscy5jICAgICAgICAgICAgICAgIHwgIDI2ICstCiBzcmMvY29tbW9uL2ZpbGVfdXRp bHMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgODQgKystLQogc3JjL2NvbW1vbi9wZ2Zu YW1lcy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMxICstCiBzcmMvY29tbW9uL3Jl c3RyaWN0ZWRfdG9rZW4uYyAgICAgICAgICAgICAgICAgfCAgMjMgKy0KIHNyYy9jb21tb24v cm10cmVlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNyArLQogc3JjL2ZlX3V0 aWxzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvZmVf dXRpbHMvbG9nZ2luZy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxNjUgKysrKysrKwog c3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICst CiBzcmMvaW5jbHVkZS9jb21tb24vY29udHJvbGRhdGFfdXRpbHMuaCAgICAgICAgfCAgIDIg Ky0KIHNyYy9pbmNsdWRlL2NvbW1vbi9maWxlX3V0aWxzLmggICAgICAgICAgICAgICB8ICAx MyArLQogc3JjL2luY2x1ZGUvY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCAgICAgICAgIHwg ICA0ICstCiBzcmMvaW5jbHVkZS9mZV91dGlscy9sb2dnaW5nLmggICAgICAgICAgICAgICAg fCAgOTQgKysrKwogc3JjL2luY2x1ZGUvZmVfdXRpbHMvcHNxbHNjYW4uaCAgICAgICAgICAg ICAgIHwgICA3IC0KIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9NYWtlZmlsZSAgICAgICAg ICAgICB8ICAgMiArCiBzcmMvbmxzLWdsb2JhbC5tayAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDggKwogc3JjL3Rlc3QvaXNvbGF0aW9uL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlICAgICAgICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jICAgICAg ICAgICAgICAgICB8ICAgNiArLQogMTA2IGZpbGVzIGNoYW5nZWQsIDIxNzggaW5zZXJ0aW9u cygrKSwgMjU0MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZmVfdXRp bHMvbG9nZ2luZy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvZmVfdXRpbHMv bG9nZ2luZy5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wZ19jb250 cm9sZGF0YS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wZ19jb250cm9sZGF0YS5jCmlu ZGV4IGU2NzQyZGMyNGIuLmFlZDI4ZDViY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcGdfY29udHJvbGRhdGEuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3BnX2NvbnRyb2xkYXRhLmMKQEAgLTUzLDcgKzUzLDcgQEAgcGdfY29udHJvbF9zeXN0ZW0o UEdfRlVOQ1RJT05fQVJHUykKIAl0dXBkZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7 CiAKIAkvKiByZWFkIHRoZSBjb250cm9sIGZpbGUgKi8KLQlDb250cm9sRmlsZSA9IGdldF9j b250cm9sZmlsZShEYXRhRGlyLCBOVUxMLCAmY3JjX29rKTsKKwlDb250cm9sRmlsZSA9IGdl dF9jb250cm9sZmlsZShEYXRhRGlyLCAmY3JjX29rKTsKIAlpZiAoIWNyY19vaykKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJybXNnKCJjYWxjdWxhdGVkIENSQyBjaGVja3N1bSBkb2Vz IG5vdCBtYXRjaCB2YWx1ZSBzdG9yZWQgaW4gZmlsZSIpKSk7CkBAIC0xMzEsNyArMTMxLDcg QEAgcGdfY29udHJvbF9jaGVja3BvaW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJdHVwZGVzYyA9 IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCiAJLyogUmVhZCB0aGUgY29udHJvbCBmaWxl LiAqLwotCUNvbnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsIE5VTEwsICZj cmNfb2spOworCUNvbnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsICZjcmNf b2spOwogCWlmICghY3JjX29rKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJtc2coImNh bGN1bGF0ZWQgQ1JDIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHZhbHVlIHN0b3JlZCBpbiBm aWxlIikpKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBwZ19jb250cm9sX3JlY292ZXJ5KFBHX0ZV TkNUSU9OX0FSR1MpCiAJdHVwZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCiAJ LyogcmVhZCB0aGUgY29udHJvbCBmaWxlICovCi0JQ29udHJvbEZpbGUgPSBnZXRfY29udHJv bGZpbGUoRGF0YURpciwgTlVMTCwgJmNyY19vayk7CisJQ29udHJvbEZpbGUgPSBnZXRfY29u dHJvbGZpbGUoRGF0YURpciwgJmNyY19vayk7CiAJaWYgKCFjcmNfb2spCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycm1zZygiY2FsY3VsYXRlZCBDUkMgY2hlY2tzdW0gZG9lcyBub3Qg bWF0Y2ggdmFsdWUgc3RvcmVkIGluIGZpbGUiKSkpOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHBn X2NvbnRyb2xfaW5pdChQR19GVU5DVElPTl9BUkdTKQogCXR1cGRlc2MgPSBCbGVzc1R1cGxl RGVzYyh0dXBkZXNjKTsKIAogCS8qIHJlYWQgdGhlIGNvbnRyb2wgZmlsZSAqLwotCUNvbnRy b2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsIE5VTEwsICZjcmNfb2spOworCUNv bnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsICZjcmNfb2spOwogCWlmICgh Y3JjX29rKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJtc2coImNhbGN1bGF0ZWQgQ1JD IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHZhbHVlIHN0b3JlZCBpbiBmaWxlIikpKTsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5p dGRiLmMKaW5kZXggZTU1YmE2NjhjZS4uZThiODM5OTJlYSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9pbml0ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAgLTY3 LDYgKzY3LDcgQEAKICNpbmNsdWRlICJjb21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUg ImNvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmgiCiAjaW5jbHVkZSAiY29tbW9uL3VzZXJuYW1l LmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxz L3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUgImdldGFkZHJpbmZvLmgiCiAjaW5jbHVkZSAi Z2V0b3B0X2xvbmcuaCIKQEAgLTE4NCw3ICsxODUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAq ZGVmYXVsdF90aW1lem9uZSA9IE5VTEw7CiAiIyBhbGxvd3MgYW55IGxvY2FsIHVzZXIgdG8g Y29ubmVjdCBhcyBhbnkgUG9zdGdyZVNRTCB1c2VyLCBpbmNsdWRpbmdcbiIgXAogIiMgdGhl IGRhdGFiYXNlIHN1cGVydXNlci4gIElmIHlvdSBkbyBub3QgdHJ1c3QgYWxsIHlvdXIgbG9j YWwgdXNlcnMsXG4iIFwKICIjIHVzZSBhbm90aGVyIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC5c biIKLXN0YXRpYyBjaGFyICphdXRod2FybmluZyA9IE5VTEw7CitzdGF0aWMgYm9vbAlhdXRo d2FybmluZyA9IGZhbHNlOwogCiAvKgogICogQ2VudHJhbGl6ZWQga25vd2xlZGdlIG9mIHN3 aXRjaGVzIHRvIHBhc3MgdG8gYmFja2VuZApAQCAtMzM1LDcgKzMzNiw3IEBAIGVzY2FwZV9x dW90ZXMoY29uc3QgY2hhciAqc3JjKQogCiAJaWYgKCFyZXN1bHQpCiAJewotCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IG91dCBvZiBtZW1vcnlcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xv Z19lcnJvcigib3V0IG9mIG1lbW9yeSIpOwogCQlleGl0KDEpOwogCX0KIAlyZXR1cm4gcmVz dWx0OwpAQCAtNDkxLDggKzQ5Miw3IEBAIHJlYWRmaWxlKGNvbnN0IGNoYXIgKnBhdGgpCiAK IAlpZiAoKGluZmlsZSA9IGZvcGVuKHBhdGgsICJyIikpID09IE5VTEwpCiAJewotCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFk aW5nOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6 ICVtIiwgcGF0aCk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC01NDcsMjQgKzU0NywyMSBAQCB3 cml0ZWZpbGUoY2hhciAqcGF0aCwgY2hhciAqKmxpbmVzKQogCiAJaWYgKChvdXRfZmlsZSA9 IGZvcGVuKHBhdGgsICJ3IikpID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciB3cml0aW5nOiAlc1xuIiksCi0J CQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmc6ICVtIiwgcGF0aCk7CiAJ CWV4aXQoMSk7CiAJfQogCWZvciAobGluZSA9IGxpbmVzOyAqbGluZSAhPSBOVUxMOyBsaW5l KyspCiAJewogCQlpZiAoZnB1dHMoKmxpbmUsIG91dF9maWxlKSA8IDApCiAJCXsKLQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlc1xu IiksCi0JCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJCQll eGl0KDEpOwogCQl9CiAJCWZyZWUoKmxpbmUpOwogCX0KIAlpZiAoZmNsb3NlKG91dF9maWxl KSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHdyaXRlIGZpbGUg XCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7 CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsIHBh dGgpOwogCQlleGl0KDEpOwogCX0KIH0KQEAgLTU4Miw4ICs1NzksNyBAQCBwb3Blbl9jaGVj ayhjb25zdCBjaGFyICpjb21tYW5kLCBjb25zdCBjaGFyICptb2RlKQogCWVycm5vID0gMDsK IAljbWRmZCA9IHBvcGVuKGNvbW1hbmQsIG1vZGUpOwogCWlmIChjbWRmZCA9PSBOVUxMKQot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBleGVjdXRlIGNvbW1hbmQgXCIl c1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGNvbW1hbmQsIHN0cmVycm9yKGVycm5vKSk7 CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGV4ZWN1dGUgY29tbWFuZCBcIiVzXCI6ICVt IiwgY29tbWFuZCk7CiAJcmV0dXJuIGNtZGZkOwogfQogCkBAIC02MDEsNTIgKzU5Nyw0MSBA QCBjbGVhbnVwX2RpcmVjdG9yaWVzX2F0ZXhpdCh2b2lkKQogCXsKIAkJaWYgKG1hZGVfbmV3 X3BnZGF0YSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiByZW1vdmluZyBkYXRh IGRpcmVjdG9yeSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgcGdfZGF0YSk7CisJCQlw Z19sb2dfaW5mbygicmVtb3ZpbmcgZGF0YSBkaXJlY3RvcnkgXCIlc1wiIiwgcGdfZGF0YSk7 CiAJCQlpZiAoIXJtdHJlZShwZ19kYXRhLCB0cnVlKSkKLQkJCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGZhaWxlZCB0byByZW1vdmUgZGF0YSBkaXJlY3RvcnlcbiIpLAotCQkJCQkJcHJv Z25hbWUpOworCQkJCXBnX2xvZ19lcnJvcigiZmFpbGVkIHRvIHJlbW92ZSBkYXRhIGRpcmVj dG9yeSIpOwogCQl9CiAJCWVsc2UgaWYgKGZvdW5kX2V4aXN0aW5nX3BnZGF0YSkKIAkJewot CQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiByZW1vdmluZyBjb250ZW50cyBvZiBk YXRhIGRpcmVjdG9yeSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgcGdfZGF0YSk7CisJ CQlwZ19sb2dfaW5mbygicmVtb3ZpbmcgY29udGVudHMgb2YgZGF0YSBkaXJlY3RvcnkgXCIl c1wiIiwKKwkJCQkJCXBnX2RhdGEpOwogCQkJaWYgKCFybXRyZWUocGdfZGF0YSwgZmFsc2Up KQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZmFpbGVkIHRvIHJlbW92ZSBjb250ZW50 cyBvZiBkYXRhIGRpcmVjdG9yeVxuIiksCi0JCQkJCQlwcm9nbmFtZSk7CisJCQkJcGdfbG9n X2Vycm9yKCJmYWlsZWQgdG8gcmVtb3ZlIGNvbnRlbnRzIG9mIGRhdGEgZGlyZWN0b3J5Iik7 CiAJCX0KIAogCQlpZiAobWFkZV9uZXdfeGxvZ2RpcikKIAkJewotCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiByZW1vdmluZyBXQUwgZGlyZWN0b3J5IFwiJXNcIlxuIiksCi0JCQkJCXBy b2duYW1lLCB4bG9nX2Rpcik7CisJCQlwZ19sb2dfaW5mbygicmVtb3ZpbmcgV0FMIGRpcmVj dG9yeSBcIiVzXCIiLCB4bG9nX2Rpcik7CiAJCQlpZiAoIXJtdHJlZSh4bG9nX2RpciwgdHJ1 ZSkpCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmYWlsZWQgdG8gcmVtb3ZlIFdBTCBk aXJlY3RvcnlcbiIpLAotCQkJCQkJcHJvZ25hbWUpOworCQkJCXBnX2xvZ19lcnJvcigiZmFp bGVkIHRvIHJlbW92ZSBXQUwgZGlyZWN0b3J5Iik7CiAJCX0KIAkJZWxzZSBpZiAoZm91bmRf ZXhpc3RpbmdfeGxvZ2RpcikKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVz OiByZW1vdmluZyBjb250ZW50cyBvZiBXQUwgZGlyZWN0b3J5IFwiJXNcIlxuIiksCi0JCQkJ CXByb2duYW1lLCB4bG9nX2Rpcik7CisJCQlwZ19sb2dfaW5mbygicmVtb3ZpbmcgY29udGVu dHMgb2YgV0FMIGRpcmVjdG9yeSBcIiVzXCIiLCB4bG9nX2Rpcik7CiAJCQlpZiAoIXJtdHJl ZSh4bG9nX2RpciwgZmFsc2UpKQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZmFpbGVk IHRvIHJlbW92ZSBjb250ZW50cyBvZiBXQUwgZGlyZWN0b3J5XG4iKSwKLQkJCQkJCXByb2du YW1lKTsKKwkJCQlwZ19sb2dfZXJyb3IoImZhaWxlZCB0byByZW1vdmUgY29udGVudHMgb2Yg V0FMIGRpcmVjdG9yeSIpOwogCQl9CiAJCS8qIG90aGVyd2lzZSBkaWVkIGR1cmluZyBzdGFy dHVwLCBkbyBub3RoaW5nISAqLwogCX0KIAllbHNlCiAJewogCQlpZiAobWFkZV9uZXdfcGdk YXRhIHx8IGZvdW5kX2V4aXN0aW5nX3BnZGF0YSkKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJ CQlfKCIlczogZGF0YSBkaXJlY3RvcnkgXCIlc1wiIG5vdCByZW1vdmVkIGF0IHVzZXIncyBy ZXF1ZXN0XG4iKSwKLQkJCQkJcHJvZ25hbWUsIHBnX2RhdGEpOworCQkJcGdfbG9nX2luZm8o ImRhdGEgZGlyZWN0b3J5IFwiJXNcIiBub3QgcmVtb3ZlZCBhdCB1c2VyJ3MgcmVxdWVzdCIs CisJCQkJCQlwZ19kYXRhKTsKIAogCQlpZiAobWFkZV9uZXdfeGxvZ2RpciB8fCBmb3VuZF9l eGlzdGluZ194bG9nZGlyKQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBXQUwg ZGlyZWN0b3J5IFwiJXNcIiBub3QgcmVtb3ZlZCBhdCB1c2VyJ3MgcmVxdWVzdFxuIiksCi0J CQkJCXByb2duYW1lLCB4bG9nX2Rpcik7CisJCQlwZ19sb2dfaW5mbygiV0FMIGRpcmVjdG9y eSBcIiVzXCIgbm90IHJlbW92ZWQgYXQgdXNlcidzIHJlcXVlc3QiLAorCQkJCQkJeGxvZ19k aXIpOwogCX0KIH0KIApAQCAtNjYzLDEyICs2NDgsMTAgQEAgZ2V0X2lkKHZvaWQpCiAjaWZu ZGVmIFdJTjMyCiAJaWYgKGdldGV1aWQoKSA9PSAwKQkJCS8qIDAgaXMgcm9vdCdzIHVpZCAq LwogCXsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgYmUgcnVuIGFzIHJvb3QiKTsKIAkJZnBy aW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNhbm5vdCBiZSBydW4gYXMgcm9vdFxuIgotCQkJ CSAgIlBsZWFzZSBsb2cgaW4gKHVzaW5nLCBlLmcuLCBcInN1XCIpIGFzIHRoZSAiCi0JCQkJ ICAiKHVucHJpdmlsZWdlZCkgdXNlciB0aGF0IHdpbGxcbiIKLQkJCQkgICJvd24gdGhlIHNl cnZlciBwcm9jZXNzLlxuIiksCi0JCQkJcHJvZ25hbWUpOworCQkJCV8oIlBsZWFzZSBsb2cg aW4gKHVzaW5nLCBlLmcuLCBcInN1XCIpIGFzIHRoZSAodW5wcml2aWxlZ2VkKSB1c2VyIHRo YXQgd2lsbFxuIgorCQkJCSAgIm93biB0aGUgc2VydmVyIHByb2Nlc3MuXG4iKSk7CiAJCWV4 aXQoMSk7CiAJfQogI2VuZGlmCkBAIC03MDAsOCArNjgzLDggQEAgZ2V0X2VuY29kaW5nX2lk KGNvbnN0IGNoYXIgKmVuY29kaW5nX25hbWUpCiAJCWlmICgoZW5jID0gcGdfdmFsaWRfc2Vy dmVyX2VuY29kaW5nKGVuY29kaW5nX25hbWUpKSA+PSAwKQogCQkJcmV0dXJuIGVuYzsKIAl9 Ci0JZnByaW50ZihzdGRlcnIsIF8oIiVzOiBcIiVzXCIgaXMgbm90IGEgdmFsaWQgc2VydmVy IGVuY29kaW5nIG5hbWVcbiIpLAotCQkJcHJvZ25hbWUsIGVuY29kaW5nX25hbWUgPyBlbmNv ZGluZ19uYW1lIDogIihudWxsKSIpOworCXBnX2xvZ19lcnJvcigiXCIlc1wiIGlzIG5vdCBh IHZhbGlkIHNlcnZlciBlbmNvZGluZyBuYW1lIiwKKwkJCQkgZW5jb2RpbmdfbmFtZSA/IGVu Y29kaW5nX25hbWUgOiAiKG51bGwpIik7CiAJZXhpdCgxKTsKIH0KIApAQCAtODMxLDE3ICs4 MTQsMTQgQEAgY2hlY2tfaW5wdXQoY2hhciAqcGF0aCkKIAl7CiAJCWlmIChlcnJubyA9PSBF Tk9FTlQpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogZmlsZSBcIiVz XCIgZG9lcyBub3QgZXhpc3RcbiIpLCBwcm9nbmFtZSwgcGF0aCk7CisJCQlwZ19sb2dfZXJy b3IoImZpbGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgcGF0aCk7CiAJCQlmcHJpbnRmKHN0 ZGVyciwKIAkJCQkJXygiVGhpcyBtaWdodCBtZWFuIHlvdSBoYXZlIGEgY29ycnVwdGVkIGlu c3RhbGxhdGlvbiBvciBpZGVudGlmaWVkXG4iCiAJCQkJCSAgInRoZSB3cm9uZyBkaXJlY3Rv cnkgd2l0aCB0aGUgaW52b2NhdGlvbiBvcHRpb24gLUwuXG4iKSk7CiAJCX0KIAkJZWxzZQog CQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCBhY2Nlc3Mg ZmlsZSBcIiVzXCI6ICVzXG4iKSwgcHJvZ25hbWUsIHBhdGgsCi0JCQkJCXN0cmVycm9yKGVy cm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBhY2Nlc3MgZmlsZSBcIiVzXCI6 ICVtIiwgcGF0aCk7CiAJCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQkJXygiVGhpcyBtaWdodCBt ZWFuIHlvdSBoYXZlIGEgY29ycnVwdGVkIGluc3RhbGxhdGlvbiBvciBpZGVudGlmaWVkXG4i CiAJCQkJCSAgInRoZSB3cm9uZyBkaXJlY3Rvcnkgd2l0aCB0aGUgaW52b2NhdGlvbiBvcHRp b24gLUwuXG4iKSk7CkBAIC04NTAsOCArODMwLDcgQEAgY2hlY2tfaW5wdXQoY2hhciAqcGF0 aCkKIAl9CiAJaWYgKCFTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCiAJewotCQlmcHJpbnRm KHN0ZGVyciwKLQkJCQlfKCIlczogZmlsZSBcIiVzXCIgaXMgbm90IGEgcmVndWxhciBmaWxl XG4iKSwgcHJvZ25hbWUsIHBhdGgpOworCQlwZ19sb2dfZXJyb3IoImZpbGUgXCIlc1wiIGlz IG5vdCBhIHJlZ3VsYXIgZmlsZSIsIHBhdGgpOwogCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQlf KCJUaGlzIG1pZ2h0IG1lYW4geW91IGhhdmUgYSBjb3JydXB0ZWQgaW5zdGFsbGF0aW9uIG9y IGlkZW50aWZpZWRcbiIKIAkJCQkgICJ0aGUgd3JvbmcgZGlyZWN0b3J5IHdpdGggdGhlIGlu dm9jYXRpb24gb3B0aW9uIC1MLlxuIikpOwpAQCAtODc2LDE1ICs4NTUsMTMgQEAgd3JpdGVf dmVyc2lvbl9maWxlKGNvbnN0IGNoYXIgKmV4dHJhcGF0aCkKIAogCWlmICgodmVyc2lvbl9m aWxlID0gZm9wZW4ocGF0aCwgUEdfQklOQVJZX1cpKSA9PSBOVUxMKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3Igd3JpdGlu ZzogJXNcbiIpLAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciB3cml0aW5nOiAl bSIsIHBhdGgpOwogCQlleGl0KDEpOwogCX0KIAlpZiAoZnByaW50Zih2ZXJzaW9uX2ZpbGUs ICIlc1xuIiwgUEdfTUFKT1JWRVJTSU9OKSA8IDAgfHwKIAkJZmNsb3NlKHZlcnNpb25fZmls ZSkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCB3cml0ZSBmaWxl IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBw YXRoKTsKIAkJZXhpdCgxKTsKIAl9CiAJZnJlZShwYXRoKTsKQEAgLTkwNCwxNCArODgxLDEy IEBAIHNldF9udWxsX2NvbmYodm9pZCkKIAljb25mX2ZpbGUgPSBmb3BlbihwYXRoLCBQR19C SU5BUllfVyk7CiAJaWYgKGNvbmZfZmlsZSA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3Igd3JpdGluZzogJXNc biIpLAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciB3cml0aW5nOiAlbSIsIHBh dGgpOwogCQlleGl0KDEpOwogCX0KIAlpZiAoZmNsb3NlKGNvbmZfZmlsZSkpCiAJewotCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJXNc biIpLAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJZXhp dCgxKTsKIAl9CiAJZnJlZShwYXRoKTsKQEAgLTEyNjEsOCArMTIzNiw3IEBAIHNldHVwX2Nv bmZpZyh2b2lkKQogCXdyaXRlZmlsZShwYXRoLCBjb25mbGluZXMpOwogCWlmIChjaG1vZChw YXRoLCBwZ19maWxlX2NyZWF0ZV9tb2RlKSAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mIFwiJXNcIjogJXNcbiIp LAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMgb2YgXCIlc1wiOiAlbSIsIHBhdGgp OwogCQlleGl0KDEpOwogCX0KIApAQCAtMTI4MSw4ICsxMjU1LDcgQEAgc2V0dXBfY29uZmln KHZvaWQpCiAJd3JpdGVmaWxlKHBhdGgsIGF1dG9jb25mbGluZXMpOwogCWlmIChjaG1vZChw YXRoLCBwZ19maWxlX2NyZWF0ZV9tb2RlKSAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mIFwiJXNcIjogJXNcbiIp LAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMgb2YgXCIlc1wiOiAlbSIsIHBhdGgp OwogCQlleGl0KDEpOwogCX0KIApAQCAtMTM2OCw4ICsxMzQxLDcgQEAgc2V0dXBfY29uZmln KHZvaWQpCiAJd3JpdGVmaWxlKHBhdGgsIGNvbmZsaW5lcyk7CiAJaWYgKGNobW9kKHBhdGgs IHBnX2ZpbGVfY3JlYXRlX21vZGUpICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMgb2YgXCIlc1wiOiAlc1xuIiksCi0J CQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZiBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJ CWV4aXQoMSk7CiAJfQogCkBAIC0xMzg0LDggKzEzNTYsNyBAQCBzZXR1cF9jb25maWcodm9p ZCkKIAl3cml0ZWZpbGUocGF0aCwgY29uZmxpbmVzKTsKIAlpZiAoY2htb2QocGF0aCwgcGdf ZmlsZV9jcmVhdGVfbW9kZSkgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZiBcIiVzXCI6ICVzXG4iKSwKLQkJCQlw cm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mIFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJZXhp dCgxKTsKIAl9CiAKQEAgLTE0MTksMTEgKzEzOTAsOSBAQCBib290c3RyYXBfdGVtcGxhdGUx KHZvaWQpCiAKIAlpZiAoc3RyY21wKGhlYWRlcmxpbmUsICpia2lfbGluZXMpICE9IDApCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogaW5wdXQgZmlsZSBcIiVzXCIgZG9l cyBub3QgYmVsb25nIHRvIFBvc3RncmVTUUwgJXNcbiIKLQkJCQkgICJDaGVjayB5b3VyIGlu c3RhbGxhdGlvbiBvciBzcGVjaWZ5IHRoZSBjb3JyZWN0IHBhdGggIgotCQkJCSAgInVzaW5n IHRoZSBvcHRpb24gLUwuXG4iKSwKLQkJCQlwcm9nbmFtZSwgYmtpX2ZpbGUsIFBHX1ZFUlNJ T04pOworCQlwZ19sb2dfZXJyb3IoImlucHV0IGZpbGUgXCIlc1wiIGRvZXMgbm90IGJlbG9u ZyB0byBQb3N0Z3JlU1FMICVzIiwKKwkJCQkJIGJraV9maWxlLCBQR19WRVJTSU9OKTsKKwkJ ZnByaW50ZihzdGRlcnIsIF8oIkNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uIG9yIHNwZWNpZnkg dGhlIGNvcnJlY3QgcGF0aCB1c2luZyB0aGUgb3B0aW9uIC1MLlxuIikpOwogCQlleGl0KDEp OwogCX0KIApAQCAtMTU2MCwxOCArMTUyOSwxOCBAQCBnZXRfc3VfcHdkKHZvaWQpCiAKIAkJ aWYgKCFwd2YpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9w ZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHB3 ZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAlbSIsCisJCQkJCQkgcHdmaWxlbmFt ZSk7CiAJCQlleGl0KDEpOwogCQl9CiAJCWlmICghZmdldHMocHdkMSwgc2l6ZW9mKHB3ZDEp LCBwd2YpKQogCQl7CiAJCQlpZiAoZmVycm9yKHB3ZikpCi0JCQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3QgcmVhZCBwYXNzd29yZCBmcm9tIGZpbGUgXCIlc1wiOiAlc1xu IiksCi0JCQkJCQlwcm9nbmFtZSwgcHdmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJ CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIHBhc3N3b3JkIGZyb20gZmlsZSBcIiVz XCI6ICVtIiwKKwkJCQkJCQkgcHdmaWxlbmFtZSk7CiAJCQllbHNlCi0JCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBwYXNzd29yZCBmaWxlIFwiJXNcIiBpcyBlbXB0eVxuIiksCi0JCQkJ CQlwcm9nbmFtZSwgcHdmaWxlbmFtZSk7CisJCQkJcGdfbG9nX2Vycm9yKCJwYXNzd29yZCBm aWxlIFwiJXNcIiBpcyBlbXB0eSIsCisJCQkJCQkJIHB3ZmlsZW5hbWUpOwogCQkJZXhpdCgx KTsKIAkJfQogCQlmY2xvc2UocHdmKTsKQEAgLTIyMzcsOCArMjIwNiw3IEBAIGNoZWNrX2xv Y2FsZV9uYW1lKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxlLCBjaGFyICoqY2Fu b25uYW1lKQogCXNhdmUgPSBzZXRsb2NhbGUoY2F0ZWdvcnksIE5VTEwpOwogCWlmICghc2F2 ZSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogc2V0bG9jYWxlKCkgZmFpbGVkXG4i KSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigic2V0bG9jYWxlKCkgZmFpbGVk Iik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0yMjU5LDggKzIyMjcsNyBAQCBjaGVja19sb2Nh bGVfbmFtZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSwgY2hhciAqKmNhbm9u bmFtZSkKIAkvKiByZXN0b3JlIG9sZCB2YWx1ZS4gKi8KIAlpZiAoIXNldGxvY2FsZShjYXRl Z29yeSwgc2F2ZSkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGZhaWxlZCB0byBy ZXN0b3JlIG9sZCBsb2NhbGUgXCIlc1wiXG4iKSwKLQkJCQlwcm9nbmFtZSwgc2F2ZSk7CisJ CXBnX2xvZ19lcnJvcigiZmFpbGVkIHRvIHJlc3RvcmUgb2xkIGxvY2FsZSBcIiVzXCIiLCBz YXZlKTsKIAkJZXhpdCgxKTsKIAl9CiAJZnJlZShzYXZlKTsKQEAgLTIyNjksOCArMjIzNiw3 IEBAIGNoZWNrX2xvY2FsZV9uYW1lKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxl LCBjaGFyICoqY2Fub25uYW1lKQogCWlmIChyZXMgPT0gTlVMTCkKIAl7CiAJCWlmICgqbG9j YWxlKQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGxvY2FsZSBuYW1lIFwi JXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCBsb2NhbGUpOworCQkJcGdfbG9nX2Vycm9yKCJp bnZhbGlkIGxvY2FsZSBuYW1lIFwiJXNcIiIsIGxvY2FsZSk7CiAJCWVsc2UKIAkJewogCQkJ LyoKQEAgLTIyODEsOCArMjI0Nyw3IEBAIGNoZWNrX2xvY2FsZV9uYW1lKGludCBjYXRlZ29y eSwgY29uc3QgY2hhciAqbG9jYWxlLCBjaGFyICoqY2Fub25uYW1lKQogCQkJICogc2V0bG9j YWxlJ3MgYmVoYXZpb3IgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMsIGl0J3MgaGFyZCB0 bwogCQkJICogYmUgc3VyZSB3aGF0IGl0IGRpZG4ndCBsaWtlLiAgUHJpbnQgYSBzYWZlIGdl bmVyaWMgbWVzc2FnZS4KIAkJCSAqLwotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZh bGlkIGxvY2FsZSBzZXR0aW5nczsgY2hlY2sgTEFORyBhbmQgTENfKiBlbnZpcm9ubWVudCB2 YXJpYWJsZXNcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImludmFs aWQgbG9jYWxlIHNldHRpbmdzOyBjaGVjayBMQU5HIGFuZCBMQ18qIGVudmlyb25tZW50IHZh cmlhYmxlcyIpOwogCQl9CiAJCWV4aXQoMSk7CiAJfQpAQCAtMjMwOSw3ICsyMjc0LDcgQEAg Y2hlY2tfbG9jYWxlX2VuY29kaW5nKGNvbnN0IGNoYXIgKmxvY2FsZSwgaW50IHVzZXJfZW5j KQogI2VuZGlmCiAJCSAgdXNlcl9lbmMgPT0gUEdfU1FMX0FTQ0lJKSkKIAl7Ci0JCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogZW5jb2RpbmcgbWlzbWF0Y2hcbiIpLCBwcm9nbmFtZSk7CisJ CXBnX2xvZ19lcnJvcigiZW5jb2RpbmcgbWlzbWF0Y2giKTsKIAkJZnByaW50ZihzdGRlcnIs CiAJCQkJXygiVGhlIGVuY29kaW5nIHlvdSBzZWxlY3RlZCAoJXMpIGFuZCB0aGUgZW5jb2Rp bmcgdGhhdCB0aGVcbiIKIAkJCQkgICJzZWxlY3RlZCBsb2NhbGUgdXNlcyAoJXMpIGRvIG5v dCBtYXRjaC4gIFRoaXMgd291bGQgbGVhZCB0b1xuIgpAQCAtMjQyNyw5ICsyMzkyLDcgQEAg Y2hlY2tfYXV0aG1ldGhvZF91bnNwZWNpZmllZChjb25zdCBjaGFyICoqYXV0aG1ldGhvZCkK IHsKIAlpZiAoKmF1dGhtZXRob2QgPT0gTlVMTCkKIAl7Ci0JCWF1dGh3YXJuaW5nID0gXygi XG5XQVJOSU5HOiBlbmFibGluZyBcInRydXN0XCIgYXV0aGVudGljYXRpb24gZm9yIGxvY2Fs IGNvbm5lY3Rpb25zXG4iCi0JCQkJCQkiWW91IGNhbiBjaGFuZ2UgdGhpcyBieSBlZGl0aW5n IHBnX2hiYS5jb25mIG9yIHVzaW5nIHRoZSBvcHRpb24gLUEsIG9yXG4iCi0JCQkJCQkiLS1h dXRoLWxvY2FsIGFuZCAtLWF1dGgtaG9zdCwgdGhlIG5leHQgdGltZSB5b3UgcnVuIGluaXRk Yi5cbiIpOworCQlhdXRod2FybmluZyA9IHRydWU7CiAJCSphdXRobWV0aG9kID0gInRydXN0 IjsKIAl9CiB9CkBAIC0yNDQ5LDggKzI0MTIsOCBAQCBjaGVja19hdXRobWV0aG9kX3ZhbGlk KGNvbnN0IGNoYXIgKmF1dGhtZXRob2QsIGNvbnN0IGNoYXIgKmNvbnN0ICp2YWxpZF9tZXRo b2RzLAogCQkJCXJldHVybjsKIAl9CiAKLQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFs aWQgYXV0aGVudGljYXRpb24gbWV0aG9kIFwiJXNcIiBmb3IgXCIlc1wiIGNvbm5lY3Rpb25z XG4iKSwKLQkJCXByb2duYW1lLCBhdXRobWV0aG9kLCBjb25udHlwZSk7CisJcGdfbG9nX2Vy cm9yKCJpbnZhbGlkIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBcIiVzXCIgZm9yIFwiJXNcIiBj b25uZWN0aW9ucyIsCisJCQkJIGF1dGhtZXRob2QsIGNvbm50eXBlKTsKIAlleGl0KDEpOwog fQogCkBAIC0yNDY1LDcgKzI0MjgsNyBAQCBjaGVja19uZWVkX3Bhc3N3b3JkKGNvbnN0IGNo YXIgKmF1dGhtZXRob2Rsb2NhbCwgY29uc3QgY2hhciAqYXV0aG1ldGhvZGhvc3QpCiAJCSBz dHJjbXAoYXV0aG1ldGhvZGhvc3QsICJzY3JhbS1zaGEtMjU2IikgPT0gMCkgJiYKIAkJIShw d3Byb21wdCB8fCBwd2ZpbGVuYW1lKSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog bXVzdCBzcGVjaWZ5IGEgcGFzc3dvcmQgZm9yIHRoZSBzdXBlcnVzZXIgdG8gZW5hYmxlICVz IGF1dGhlbnRpY2F0aW9uXG4iKSwgcHJvZ25hbWUsCisJCXBnX2xvZ19lcnJvcigibXVzdCBz cGVjaWZ5IGEgcGFzc3dvcmQgZm9yIHRoZSBzdXBlcnVzZXIgdG8gZW5hYmxlICVzIGF1dGhl bnRpY2F0aW9uIiwKIAkJCQkoc3RyY21wKGF1dGhtZXRob2Rsb2NhbCwgIm1kNSIpID09IDAg fHwKIAkJCQkgc3RyY21wKGF1dGhtZXRob2Rsb2NhbCwgInBhc3N3b3JkIikgPT0gMCB8fAog CQkJCSBzdHJjbXAoYXV0aG1ldGhvZGxvY2FsLCAic2NyYW0tc2hhLTI1NiIpID09IDApCkBA IC0yNDkyLDEyICsyNDU1LDExIEBAIHNldHVwX3BnZGF0YSh2b2lkKQogCQl9CiAJCWVsc2UK IAkJeworCQkJcGdfbG9nX2Vycm9yKCJubyBkYXRhIGRpcmVjdG9yeSBzcGVjaWZpZWQiKTsK IAkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogbm8gZGF0YSBkaXJlY3Rvcnkgc3Bl Y2lmaWVkXG4iCi0JCQkJCSAgIllvdSBtdXN0IGlkZW50aWZ5IHRoZSBkaXJlY3Rvcnkgd2hl cmUgdGhlIGRhdGEgZm9yIHRoaXMgZGF0YWJhc2Ugc3lzdGVtXG4iCisJCQkJCV8oIllvdSBt dXN0IGlkZW50aWZ5IHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGRhdGEgZm9yIHRoaXMgZGF0 YWJhc2Ugc3lzdGVtXG4iCiAJCQkJCSAgIndpbGwgcmVzaWRlLiAgRG8gdGhpcyB3aXRoIGVp dGhlciB0aGUgaW52b2NhdGlvbiBvcHRpb24gLUQgb3IgdGhlXG4iCi0JCQkJCSAgImVudmly b25tZW50IHZhcmlhYmxlIFBHREFUQS5cbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQkJCSAg ImVudmlyb25tZW50IHZhcmlhYmxlIFBHREFUQS5cbiIpKTsKIAkJCWV4aXQoMSk7CiAJCX0K IAl9CkBAIC0yNTMwLDE4ICsyNDkyLDE1IEBAIHNldHVwX2Jpbl9wYXRocyhjb25zdCBjaGFy ICphcmd2MCkKIAkJCXN0cmxjcHkoZnVsbF9wYXRoLCBwcm9nbmFtZSwgc2l6ZW9mKGZ1bGxf cGF0aCkpOwogCiAJCWlmIChyZXQgPT0gLTEpCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJ XygiVGhlIHByb2dyYW0gXCJwb3N0Z3Jlc1wiIGlzIG5lZWRlZCBieSAlcyAiCi0JCQkJCSAg ImJ1dCB3YXMgbm90IGZvdW5kIGluIHRoZVxuIgotCQkJCQkgICJzYW1lIGRpcmVjdG9yeSBh cyBcIiVzXCIuXG4iCi0JCQkJCSAgIkNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLlxuIiksCi0J CQkJCXByb2duYW1lLCBmdWxsX3BhdGgpOworCQkJcGdfbG9nX2Vycm9yKCJUaGUgcHJvZ3Jh bSBcInBvc3RncmVzXCIgaXMgbmVlZGVkIGJ5ICVzIGJ1dCB3YXMgbm90IGZvdW5kIGluIHRo ZVxuIgorCQkJCQkJICJzYW1lIGRpcmVjdG9yeSBhcyBcIiVzXCIuXG4iCisJCQkJCQkgIkNo ZWNrIHlvdXIgaW5zdGFsbGF0aW9uLiIsCisJCQkJCQkgZnVsbF9wYXRoLCBwcm9nbmFtZSk7 CiAJCWVsc2UKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCJUaGUgcHJvZ3JhbSBcInBv c3RncmVzXCIgd2FzIGZvdW5kIGJ5IFwiJXNcIlxuIgotCQkJCQkgICJidXQgd2FzIG5vdCB0 aGUgc2FtZSB2ZXJzaW9uIGFzICVzLlxuIgotCQkJCQkgICJDaGVjayB5b3VyIGluc3RhbGxh dGlvbi5cbiIpLAotCQkJCQlmdWxsX3BhdGgsIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJv cigiVGhlIHByb2dyYW0gXCJwb3N0Z3Jlc1wiIHdhcyBmb3VuZCBieSBcIiVzXCJcbiIKKwkJ CQkJCSAiYnV0IHdhcyBub3QgdGhlIHNhbWUgdmVyc2lvbiBhcyAlcy5cbiIKKwkJCQkJCSAi Q2hlY2sgeW91ciBpbnN0YWxsYXRpb24uIiwKKwkJCQkJCSBmdWxsX3BhdGgsIHByb2duYW1l KTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTI1NTcsNyArMjUxNiw3IEBAIHNldHVwX2Jpbl9w YXRocyhjb25zdCBjaGFyICphcmd2MCkKIAl9CiAJZWxzZSBpZiAoIWlzX2Fic29sdXRlX3Bh dGgoc2hhcmVfcGF0aCkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGlucHV0IGZp bGUgbG9jYXRpb24gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXG4iKSwgcHJvZ25hbWUpOwor CQlwZ19sb2dfZXJyb3IoImlucHV0IGZpbGUgbG9jYXRpb24gbXVzdCBiZSBhbiBhYnNvbHV0 ZSBwYXRoIik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0yNjAxLDggKzI1NjAsOCBAQCBzZXR1 cF9sb2NhbGVfZW5jb2Rpbmcodm9pZCkKIAkJaWYgKGN0eXBlX2VuYyA9PSAtMSkKIAkJewog CQkJLyogQ291bGRuJ3QgcmVjb2duaXplIHRoZSBsb2NhbGUncyBjb2Rlc2V0ICovCi0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBmaW5kIHN1aXRhYmxlIGVuY29kaW5n IGZvciBsb2NhbGUgXCIlc1wiXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGxjX2N0eXBlKTsKKwkJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IGZpbmQgc3VpdGFibGUgZW5jb2RpbmcgZm9yIGxv Y2FsZSBcIiVzXCIiLAorCQkJCQkJIGxjX2N0eXBlKTsKIAkJCWZwcmludGYoc3RkZXJyLCBf KCJSZXJ1biAlcyB3aXRoIHRoZSAtRSBvcHRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQkJZnBy aW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9u LlxuIiksCiAJCQkJCXByb2duYW1lKTsKQEAgLTI2MjIsOSArMjU4MSw4IEBAIHNldHVwX2xv Y2FsZV9lbmNvZGluZyh2b2lkKQogCQkJCSAgIHBnX2VuY29kaW5nX3RvX2NoYXIoY3R5cGVf ZW5jKSwKIAkJCQkgICBwZ19lbmNvZGluZ190b19jaGFyKGVuY29kaW5naWQpKTsKICNlbHNl Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGxvY2FsZSBcIiVzXCIgcmVxdWly ZXMgdW5zdXBwb3J0ZWQgZW5jb2RpbmcgXCIlc1wiXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGxj X2N0eXBlLCBwZ19lbmNvZGluZ190b19jaGFyKGN0eXBlX2VuYykpOworCQkJcGdfbG9nX2Vy cm9yKCJsb2NhbGUgXCIlc1wiIHJlcXVpcmVzIHVuc3VwcG9ydGVkIGVuY29kaW5nIFwiJXNc IiIsCisJCQkJCQkgbGNfY3R5cGUsIHBnX2VuY29kaW5nX3RvX2NoYXIoY3R5cGVfZW5jKSk7 CiAJCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQkJXygiRW5jb2RpbmcgXCIlc1wiIGlzIG5vdCBh bGxvd2VkIGFzIGEgc2VydmVyLXNpZGUgZW5jb2RpbmcuXG4iCiAJCQkJCSAgIlJlcnVuICVz IHdpdGggYSBkaWZmZXJlbnQgbG9jYWxlIHNlbGVjdGlvbi5cbiIpLApAQCAtMjc3NCw4ICsy NzMyLDcgQEAgY3JlYXRlX2RhdGFfZGlyZWN0b3J5KHZvaWQpCiAKIAkJCWlmIChwZ19ta2Rp cl9wKHBnX2RhdGEsIHBnX2Rpcl9jcmVhdGVfbW9kZSkgIT0gMCkKIAkJCXsKLQkJCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjog JXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHBnX2RhdGEsIHN0cmVycm9yKGVycm5vKSk7CisJ CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVt IiwgcGdfZGF0YSk7CiAJCQkJZXhpdCgxKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI3OTIsOCAr Mjc0OSw4IEBAIGNyZWF0ZV9kYXRhX2RpcmVjdG9yeSh2b2lkKQogCiAJCQlpZiAoY2htb2Qo cGdfZGF0YSwgcGdfZGlyX2NyZWF0ZV9tb2RlKSAhPSAwKQogCQkJewotCQkJCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZiBkaXJlY3Rv cnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgcGdfZGF0YSwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lv bnMgb2YgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkJCSBwZ19kYXRhKTsKIAkJCQll eGl0KDEpOwogCQkJfQogCQkJZWxzZQpAQCAtMjgwNiw5ICsyNzYzLDcgQEAgY3JlYXRlX2Rh dGFfZGlyZWN0b3J5KHZvaWQpCiAJCWNhc2UgMzoKIAkJY2FzZSA0OgogCQkJLyogUHJlc2Vu dCBhbmQgbm90IGVtcHR5ICovCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGRp cmVjdG9yeSBcIiVzXCIgZXhpc3RzIGJ1dCBpcyBub3QgZW1wdHlcbiIpLAotCQkJCQlwcm9n bmFtZSwgcGdfZGF0YSk7CisJCQlwZ19sb2dfZXJyb3IoImRpcmVjdG9yeSBcIiVzXCIgZXhp c3RzIGJ1dCBpcyBub3QgZW1wdHkiLCBwZ19kYXRhKTsKIAkJCWlmIChyZXQgIT0gNCkKIAkJ CQl3YXJuX29uX21vdW50X3BvaW50KHJldCk7CiAJCQllbHNlCkBAIC0yODIxLDggKzI3NzYs NyBAQCBjcmVhdGVfZGF0YV9kaXJlY3Rvcnkodm9pZCkKIAogCQlkZWZhdWx0OgogCQkJLyog VHJvdWJsZSBhY2Nlc3NpbmcgZGlyZWN0b3J5ICovCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBhY2Nlc3MgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQlw cm9nbmFtZSwgcGdfZGF0YSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHBnX2RhdGEpOwogCQkJ ZXhpdCgxKTsKIAl9CiB9CkBAIC0yODQ1LDcgKzI3OTksNyBAQCBjcmVhdGVfeGxvZ19vcl9z eW1saW5rKHZvaWQpCiAJCWNhbm9uaWNhbGl6ZV9wYXRoKHhsb2dfZGlyKTsKIAkJaWYgKCFp c19hYnNvbHV0ZV9wYXRoKHhsb2dfZGlyKSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBXQUwgZGlyZWN0b3J5IGxvY2F0aW9uIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFxu IiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiV0FMIGRpcmVjdG9yeSBsb2NhdGlv biBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIApAQCAt Mjg2MCw4ICsyODE0LDggQEAgY3JlYXRlX3hsb2dfb3Jfc3ltbGluayh2b2lkKQogCiAJCQkJ aWYgKHBnX21rZGlyX3AoeGxvZ19kaXIsIHBnX2Rpcl9jcmVhdGVfbW9kZSkgIT0gMCkKIAkJ CQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBkaXJl Y3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQkJcHJvZ25hbWUsIHhsb2dfZGlyLCBzdHJl cnJvcihlcnJubykpOworCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgZGly ZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkJCQkgeGxvZ19kaXIpOwogCQkJCQlleGl0KDEp OwogCQkJCX0KIAkJCQllbHNlCkBAIC0yODc4LDggKzI4MzIsOCBAQCBjcmVhdGVfeGxvZ19v cl9zeW1saW5rKHZvaWQpCiAKIAkJCQlpZiAoY2htb2QoeGxvZ19kaXIsIHBnX2Rpcl9jcmVh dGVfbW9kZSkgIT0gMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291 bGQgbm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZiBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiks Ci0JCQkJCQkJcHJvZ25hbWUsIHhsb2dfZGlyLCBzdHJlcnJvcihlcnJubykpOworCQkJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMgb2YgZGlyZWN0b3J5 IFwiJXNcIjogJW0iLAorCQkJCQkJCQkgeGxvZ19kaXIpOwogCQkJCQlleGl0KDEpOwogCQkJ CX0KIAkJCQllbHNlCkBAIC0yODkyLDkgKzI4NDYsNyBAQCBjcmVhdGVfeGxvZ19vcl9zeW1s aW5rKHZvaWQpCiAJCQljYXNlIDM6CiAJCQljYXNlIDQ6CiAJCQkJLyogUHJlc2VudCBhbmQg bm90IGVtcHR5ICovCi0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogZGlyZWN0 b3J5IFwiJXNcIiBleGlzdHMgYnV0IGlzIG5vdCBlbXB0eVxuIiksCi0JCQkJCQlwcm9nbmFt ZSwgeGxvZ19kaXIpOworCQkJCXBnX2xvZ19lcnJvcigiZGlyZWN0b3J5IFwiJXNcIiBleGlz dHMgYnV0IGlzIG5vdCBlbXB0eSIsIHhsb2dfZGlyKTsKIAkJCQlpZiAocmV0ICE9IDQpCiAJ CQkJCXdhcm5fb25fbW91bnRfcG9pbnQocmV0KTsKIAkJCQllbHNlCkBAIC0yOTA2LDIwICsy ODU4LDE5IEBAIGNyZWF0ZV94bG9nX29yX3N5bWxpbmsodm9pZCkKIAogCQkJZGVmYXVsdDoK IAkJCQkvKiBUcm91YmxlIGFjY2Vzc2luZyBkaXJlY3RvcnkgKi8KLQkJCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBhY2Nlc3MgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIp LAotCQkJCQkJcHJvZ25hbWUsIHhsb2dfZGlyLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHhs b2dfZGlyKTsKIAkJCQlleGl0KDEpOwogCQl9CiAKICNpZmRlZiBIQVZFX1NZTUxJTksKIAkJ aWYgKHN5bWxpbmsoeGxvZ19kaXIsIHN1YmRpcmxvYykgIT0gMCkKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsgXCIlc1wi OiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBzdWJkaXJsb2MsIHN0cmVycm9yKGVycm5vKSk7 CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgc3ltYm9saWMgbGluayBcIiVz XCI6ICVtIiwKKwkJCQkJCSBzdWJkaXJsb2MpOwogCQkJZXhpdCgxKTsKIAkJfQogI2Vsc2UK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzeW1saW5rcyBhcmUgbm90IHN1cHBvcnRlZCBv biB0aGlzIHBsYXRmb3JtXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoInN5bWxp bmtzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKTsKIAkJZXhpdCgxKTsK ICNlbmRpZgogCX0KQEAgLTI5MjgsOCArMjg3OSw4IEBAIGNyZWF0ZV94bG9nX29yX3N5bWxp bmsodm9pZCkKIAkJLyogV2l0aG91dCAtWCBvcHRpb24sIGp1c3QgbWFrZSB0aGUgc3ViZGly ZWN0b3J5IG5vcm1hbGx5ICovCiAJCWlmIChta2RpcihzdWJkaXJsb2MsIHBnX2Rpcl9jcmVh dGVfbW9kZSkgPCAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgc3Vi ZGlybG9jLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg Y3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCSBzdWJkaXJsb2MpOwogCQkJ ZXhpdCgxKTsKIAkJfQogCX0KQEAgLTI5OTAsOCArMjk0MSw3IEBAIGluaXRpYWxpemVfZGF0 YV9kaXJlY3Rvcnkodm9pZCkKIAkJICovCiAJCWlmIChta2RpcihwYXRoLCBwZ19kaXJfY3Jl YXRlX21vZGUpIDwgMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHBh dGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVh dGUgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJCWV4aXQoMSk7CiAJCX0KIApA QCAtMzEyNSw2ICszMDc1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJ cHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bnc2Vy dmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJpbml0ZGIiKSk7CisJcGdfbG9nZ2luZ19p bml0KGFyZ3ZbMF0pOwogCiAJaWYgKGFyZ2MgPiAxKQogCXsKQEAgLTMyNjAsOCArMzIxMSw4 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChvcHRpbmQgPCBhcmdj KQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUg YXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJndltv cHRpbmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1l bnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZwcmlu dGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5c biIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTMyNzcsMjEgKzMyMjgsMjAg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkvKiBtdXN0IGNoZWNrIHRoYXQg ZGlyZWN0b3J5IGlzIHJlYWRhYmxlICovCiAJCWlmIChwZ19jaGVja19kaXIocGdfZGF0YSkg PD0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgYWNjZXNz IGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHBnX2RhdGEsIHN0 cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBhY2Nlc3MgZGly ZWN0b3J5IFwiJXNcIjogJW0iLCBwZ19kYXRhKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAogCQlm cHV0cyhfKCJzeW5jaW5nIGRhdGEgdG8gZGlzayAuLi4gIiksIHN0ZG91dCk7CiAJCWZmbHVz aChzdGRvdXQpOwotCQlmc3luY19wZ2RhdGEocGdfZGF0YSwgcHJvZ25hbWUsIFBHX1ZFUlNJ T05fTlVNKTsKKwkJZnN5bmNfcGdkYXRhKHBnX2RhdGEsIFBHX1ZFUlNJT05fTlVNKTsKIAkJ Y2hlY2tfb2soKTsKIAkJcmV0dXJuIDA7CiAJfQogCiAJaWYgKHB3cHJvbXB0ICYmIHB3Zmls ZW5hbWUpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHBhc3N3b3JkIHByb21wdCBh bmQgcGFzc3dvcmQgZmlsZSBjYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyXG4iKSwgcHJv Z25hbWUpOworCQlwZ19sb2dfZXJyb3IoInBhc3N3b3JkIHByb21wdCBhbmQgcGFzc3dvcmQg ZmlsZSBjYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIik7CiAJCWV4aXQoMSk7CiAJfQog CkBAIC0zMzE2LDIxICszMjY2LDE3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkJLyogdmVyaWZ5IHRoYXQgd2FsIHNlZ21lbnQgc2l6ZSBpcyB2YWxpZCAqLwogCQlpZiAo ZW5kcHRyID09IHN0cl93YWxfc2VnbWVudF9zaXplX21iIHx8ICplbmRwdHIgIT0gJ1wwJykK IAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBhcmd1bWVudCBvZiAtLXdh bC1zZWdzaXplIG11c3QgYmUgYSBudW1iZXJcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlw Z19sb2dfZXJyb3IoImFyZ3VtZW50IG9mIC0td2FsLXNlZ3NpemUgbXVzdCBiZSBhIG51bWJl ciIpOwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAoIUlzVmFsaWRXYWxTZWdTaXplKHdhbF9z ZWdtZW50X3NpemVfbWIgKiAxMDI0ICogMTAyNCkpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJy LAotCQkJCQlfKCIlczogYXJndW1lbnQgb2YgLS13YWwtc2Vnc2l6ZSBtdXN0IGJlIGEgcG93 ZXIgb2YgMiBiZXR3ZWVuIDEgYW5kIDEwMjRcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlw Z19sb2dfZXJyb3IoImFyZ3VtZW50IG9mIC0td2FsLXNlZ3NpemUgbXVzdCBiZSBhIHBvd2Vy IG9mIDIgYmV0d2VlbiAxIGFuZCAxMDI0Iik7CiAJCQlleGl0KDEpOwogCQl9CiAJfQogCi0J Z2V0X3Jlc3RyaWN0ZWRfdG9rZW4ocHJvZ25hbWUpOworCWdldF9yZXN0cmljdGVkX3Rva2Vu KCk7CiAKIAlzZXR1cF9wZ2RhdGEoKTsKIApAQCAtMzM0Miw3ICszMjg4LDcgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKHN0cm5jbXAodXNlcm5hbWUsICJwZ18i LCAzKSA9PSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzdXBlcnVzZXIgbmFt ZSBcIiVzXCIgaXMgZGlzYWxsb3dlZDsgcm9sZSBuYW1lcyBjYW5ub3QgYmVnaW4gd2l0aCBc InBnX1wiXG4iKSwgcHJvZ25hbWUsIHVzZXJuYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJzdXBl cnVzZXIgbmFtZSBcIiVzXCIgaXMgZGlzYWxsb3dlZDsgcm9sZSBuYW1lcyBjYW5ub3QgYmVn aW4gd2l0aCBcInBnX1wiIiwgdXNlcm5hbWUpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMzM3 NywxNCArMzMyMywxOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJewogCQlm cHV0cyhfKCJzeW5jaW5nIGRhdGEgdG8gZGlzayAuLi4gIiksIHN0ZG91dCk7CiAJCWZmbHVz aChzdGRvdXQpOwotCQlmc3luY19wZ2RhdGEocGdfZGF0YSwgcHJvZ25hbWUsIFBHX1ZFUlNJ T05fTlVNKTsKKwkJZnN5bmNfcGdkYXRhKHBnX2RhdGEsIFBHX1ZFUlNJT05fTlVNKTsKIAkJ Y2hlY2tfb2soKTsKIAl9CiAJZWxzZQogCQlwcmludGYoXygiXG5TeW5jIHRvIGRpc2sgc2tp cHBlZC5cblRoZSBkYXRhIGRpcmVjdG9yeSBtaWdodCBiZWNvbWUgY29ycnVwdCBpZiB0aGUg b3BlcmF0aW5nIHN5c3RlbSBjcmFzaGVzLlxuIikpOwogCi0JaWYgKGF1dGh3YXJuaW5nICE9 IE5VTEwpCi0JCWZwcmludGYoc3RkZXJyLCAiJXMiLCBhdXRod2FybmluZyk7CisJaWYgKGF1 dGh3YXJuaW5nKQorCXsKKwkJcGdfbG9nX3dhcm5pbmcoImVuYWJsaW5nIFwidHJ1c3RcIiBh dXRoZW50aWNhdGlvbiBmb3IgbG9jYWwgY29ubmVjdGlvbnMiKTsKKwkJZnByaW50ZihzdGRl cnIsIF8oIllvdSBjYW4gY2hhbmdlIHRoaXMgYnkgZWRpdGluZyBwZ19oYmEuY29uZiBvciB1 c2luZyB0aGUgb3B0aW9uIC1BLCBvclxuIgorCQkJCQkJICAiLS1hdXRoLWxvY2FsIGFuZCAt LWF1dGgtaG9zdCwgdGhlIG5leHQgdGltZSB5b3UgcnVuIGluaXRkYi5cbiIpKTsKKwl9CiAK IAkvKgogCSAqIEJ1aWxkIHVwIGEgc2hlbGwgY29tbWFuZCB0byB0ZWxsIHRoZSB1c2VyIGhv dyB0byBzdGFydCB0aGUgc2VydmVyCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9ubHMu bWsgYi9zcmMvYmluL2luaXRkYi9ubHMubWsKaW5kZXggYjBjZTYyOTgwYS4uODAzMzg4ZDRj NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvbmxzLm1rCisrKyBiL3NyYy9iaW4vaW5p dGRiL25scy5tawpAQCAtMSw1ICsxLDYgQEAKICMgc3JjL2Jpbi9pbml0ZGIvbmxzLm1rCiBD QVRBTE9HX05BTUUgICAgID0gaW5pdGRiCiBBVkFJTF9MQU5HVUFHRVMgID0gY3MgZGUgZXMg ZnIgaGUgaXQgamEga28gcGwgcHRfQlIgcnUgc3YgdHIgdmkgemhfQ04KLUdFVFRFWFRfRklM RVMgICAgPSBmaW5kdGltZXpvbmUuYyBpbml0ZGIuYyAuLi8uLi9jb21tb24vZXhlYy5jIC4u Ly4uL2NvbW1vbi9mZV9tZW11dGlscy5jIC4uLy4uL2NvbW1vbi9maWxlX3V0aWxzLmMgLi4v Li4vY29tbW9uL3BnZm5hbWVzLmMgLi4vLi4vY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uYyAu Li8uLi9jb21tb24vcm10cmVlLmMgLi4vLi4vY29tbW9uL3VzZXJuYW1lLmMgLi4vLi4vY29t bW9uL3dhaXRfZXJyb3IuYyAuLi8uLi9wb3J0L2Rpcm1vZC5jCi1HRVRURVhUX1RSSUdHRVJT ID0gc2ltcGxlX3Byb21wdAorR0VUVEVYVF9GSUxFUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9O X0dFVFRFWFRfRklMRVMpIGZpbmR0aW1lem9uZS5jIGluaXRkYi5jIC4uLy4uL2NvbW1vbi9l eGVjLmMgLi4vLi4vY29tbW9uL2ZlX21lbXV0aWxzLmMgLi4vLi4vY29tbW9uL2ZpbGVfdXRp bHMuYyAuLi8uLi9jb21tb24vcGdmbmFtZXMuYyAuLi8uLi9jb21tb24vcmVzdHJpY3RlZF90 b2tlbi5jIC4uLy4uL2NvbW1vbi9ybXRyZWUuYyAuLi8uLi9jb21tb24vdXNlcm5hbWUuYyAu Li8uLi9jb21tb24vd2FpdF9lcnJvci5jIC4uLy4uL3BvcnQvZGlybW9kLmMKK0dFVFRFWFRf VFJJR0dFUlMgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX1RSSUdHRVJTKSBzaW1wbGVf cHJvbXB0CitHRVRURVhUX0ZMQUdTICAgID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9G TEFHUykKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvTWFrZWZpbGUg Yi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL01ha2VmaWxlCmluZGV4IGM1YmY5OWRiMGYu LjE0ZTgzNDY3N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvTWFr ZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9NYWtlZmlsZQpAQCAtNywx MSArNywxMyBAQCBzdWJkaXIgPSBzcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwCiB0b3BfYnVp bGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxl Lmdsb2JhbAogCitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9m ZV91dGlscyAtbHBnZmV1dGlscworCiBPQkpTCT0gcGdfYXJjaGl2ZWNsZWFudXAubyAkKFdJ TjMyUkVTKQogCiBhbGw6IHBnX2FyY2hpdmVjbGVhbnVwCiAKLXBnX2FyY2hpdmVjbGVhbnVw OiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQKK3BnX2FyY2hpdmVjbGVhbnVwOiAkKE9C SlMpIHwgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMKIAkkKENDKSAk KENGTEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8gJEAkKFgp CiAKIGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19h cmNoaXZlY2xlYW51cC9ubHMubWsgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL25scy5t awppbmRleCAyY2Q4MWQzMmE3Li5jMmQ2MjVjNTJmIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2FyY2hpdmVjbGVhbnVwL25scy5taworKysgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVw L25scy5tawpAQCAtMSw0ICsxLDYgQEAKICMgc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9u bHMubWsKIENBVEFMT0dfTkFNRSAgICAgPSBwZ19hcmNoaXZlY2xlYW51cAogQVZBSUxfTEFO R1VBR0VTICA9ZGUgZXMgZnIgamEga28gcGwgcnUgc3YgdHIgdmkKLUdFVFRFWFRfRklMRVMg ICAgPSBwZ19hcmNoaXZlY2xlYW51cC5jCitHRVRURVhUX0ZJTEVTICAgID0gJChGUk9OVEVO RF9DT01NT05fR0VUVEVYVF9GSUxFUykgcGdfYXJjaGl2ZWNsZWFudXAuYworR0VUVEVYVF9U UklHR0VSUyA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfVFJJR0dFUlMpCitHRVRURVhU X0ZMQUdTICAgID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GTEFHUykKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYyBiL3Ny Yy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYwppbmRleCBjNjI0 NzhkYmQ2Li45MDM5NjVjYzhiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2FyY2hpdmVjbGVh bnVwL3BnX2FyY2hpdmVjbGVhbnVwLmMKKysrIGIvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51 cC9wZ19hcmNoaXZlY2xlYW51cC5jCkBAIC0xNywxOCArMTcsMTggQEAKIAogI2luY2x1ZGUg InBnX2dldG9wdC5oIgogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgorCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKIAogY29uc3QgY2hhciAqcHJvZ25hbWU7 CiAKIC8qIE9wdGlvbnMgYW5kIGRlZmF1bHRzICovCi1ib29sCQlkZWJ1ZyA9IGZhbHNlOwkJ LyogYXJlIHdlIGRlYnVnZ2luZz8gKi8KIGJvb2wJCWRyeXJ1biA9IGZhbHNlOwkJLyogYXJl IHdlIHBlcmZvcm1pbmcgYSBkcnktcnVuIG9wZXJhdGlvbj8gKi8KIGNoYXIJICAgKmFkZGl0 aW9uYWxfZXh0ID0gTlVMTDsJLyogRXh0ZW5zaW9uIHRvIHJlbW92ZSBmcm9tIGZpbGVuYW1l cyAqLwogCiBjaGFyCSAgICphcmNoaXZlTG9jYXRpb247CS8qIHdoZXJlIHRvIGZpbmQgdGhl IGFyY2hpdmU/ICovCiBjaGFyCSAgICpyZXN0YXJ0V0FMRmlsZU5hbWU7IC8qIHRoZSBmaWxl IGZyb20gd2hpY2ggd2UgY2FuIHJlc3RhcnQgcmVzdG9yZSAqLwotY2hhcgkJV0FMRmlsZVBh dGhbTUFYUEdQQVRIICogMl07IC8qIHRoZSBmaWxlIHBhdGggaW5jbHVkaW5nIGFyY2hpdmUg Ki8KIGNoYXIJCWV4Y2x1c2l2ZUNsZWFudXBGaWxlTmFtZVtNQVhGTkFNRUxFTl07CS8qIHRo ZSBvbGRlc3QgZmlsZSB3ZSB3YW50CiAJCQkJCQkJCQkJCQkJICogdG8gcmVtYWluIGluIGFy Y2hpdmUgKi8KIApAQCAtNjUsOCArNjUsOCBAQCBJbml0aWFsaXplKHZvaWQpCiAJaWYgKHN0 YXQoYXJjaGl2ZUxvY2F0aW9uLCAmc3RhdF9idWYpICE9IDAgfHwKIAkJIVNfSVNESVIoc3Rh dF9idWYuc3RfbW9kZSkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGFyY2hpdmUg bG9jYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0XG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJj aGl2ZUxvY2F0aW9uKTsKKwkJcGdfbG9nX2Vycm9yKCJhcmNoaXZlIGxvY2F0aW9uIFwiJXNc IiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCSBhcmNoaXZlTG9jYXRpb24pOwogCQlleGl0KDIp OwogCX0KIH0KQEAgLTEyMyw2ICsxMjMsOCBAQCBDbGVhbnVwUHJpb3JXQUxGaWxlcyh2b2lk KQogCQkJaWYgKChJc1hMb2dGaWxlTmFtZSh3YWxmaWxlKSB8fCBJc1BhcnRpYWxYTG9nRmls ZU5hbWUod2FsZmlsZSkpICYmCiAJCQkJc3RyY21wKHdhbGZpbGUgKyA4LCBleGNsdXNpdmVD bGVhbnVwRmlsZU5hbWUgKyA4KSA8IDApCiAJCQl7CisJCQkJY2hhcgkJV0FMRmlsZVBhdGhb TUFYUEdQQVRIICogMl07IC8qIHRoZSBmaWxlIHBhdGggaW5jbHVkaW5nIGFyY2hpdmUgKi8K KwogCQkJCS8qCiAJCQkJICogVXNlIHRoZSBvcmlnaW5hbCBmaWxlIG5hbWUgYWdhaW4gbm93 LCBpbmNsdWRpbmcgYW55CiAJCQkJICogZXh0ZW5zaW9uIHRoYXQgbWlnaHQgaGF2ZSBiZWVu IGNob3BwZWQgb2ZmIGJlZm9yZSB0ZXN0aW5nCkBAIC0xMzksMzcgKzE0MSwzMiBAQCBDbGVh bnVwUHJpb3JXQUxGaWxlcyh2b2lkKQogCQkJCQkgKiB1c2VyIGNhbiBwaXBlIHRoZSBvdXRw dXQgaW50byBzb21lIG90aGVyIHByb2dyYW0uCiAJCQkJCSAqLwogCQkJCQlwcmludGYoIiVz XG4iLCBXQUxGaWxlUGF0aCk7Ci0JCQkJCWlmIChkZWJ1ZykKLQkJCQkJCWZwcmludGYoc3Rk ZXJyLAotCQkJCQkJCQlfKCIlczogZmlsZSBcIiVzXCIgd291bGQgYmUgcmVtb3ZlZFxuIiks Ci0JCQkJCQkJCXByb2duYW1lLCBXQUxGaWxlUGF0aCk7CisJCQkJCXBnX2xvZ19kZWJ1Zygi ZmlsZSBcIiVzXCIgd291bGQgYmUgcmVtb3ZlZCIsIFdBTEZpbGVQYXRoKTsKIAkJCQkJY29u dGludWU7CiAJCQkJfQogCi0JCQkJaWYgKGRlYnVnKQotCQkJCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IHJlbW92aW5nIGZpbGUgXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgV0FM RmlsZVBhdGgpOworCQkJCXBnX2xvZ19kZWJ1ZygicmVtb3ZpbmcgZmlsZSBcIiVzXCIiLCBX QUxGaWxlUGF0aCk7CiAKIAkJCQlyYyA9IHVubGluayhXQUxGaWxlUGF0aCk7CiAJCQkJaWYg KHJjICE9IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IEVSUk9SOiBj b3VsZCBub3QgcmVtb3ZlIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQkJcHJvZ25hbWUs IFdBTEZpbGVQYXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCByZW1vdmUgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJIFdBTEZpbGVQYXRo KTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJfQogCQl9CiAKIAkJaWYgKGVycm5vKQotCQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBhcmNoaXZlIGxvY2F0aW9u IFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgYXJjaGl2ZUxvY2F0aW9uLCBzdHJl cnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBhcmNoaXZl IGxvY2F0aW9uIFwiJXNcIjogJW0iLAorCQkJCQkJIGFyY2hpdmVMb2NhdGlvbik7CiAJCWlm IChjbG9zZWRpcih4bGRpcikpCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCBjbG9zZSBhcmNoaXZlIGxvY2F0aW9uIFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFt ZSwgYXJjaGl2ZUxvY2F0aW9uLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3QgY2xvc2UgYXJjaGl2ZSBsb2NhdGlvbiBcIiVzXCI6ICVtIiwKKwkJCQkJ CSBhcmNoaXZlTG9jYXRpb24pOwogCX0KIAllbHNlCi0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IG9wZW4gYXJjaGl2ZSBsb2NhdGlvbiBcIiVzXCI6ICVzXG4iKSwKLQkJ CQlwcm9nbmFtZSwgYXJjaGl2ZUxvY2F0aW9uLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGFyY2hpdmUgbG9jYXRpb24gXCIlc1wiOiAlbSIs CisJCQkJCSBhcmNoaXZlTG9jYXRpb24pOwogfQogCiAvKgpAQCAtMjQxLDcgKzIzOCw3IEBA IFNldFdBTEZpbGVOYW1lRm9yQ2xlYW51cCh2b2lkKQogCiAJaWYgKCFmbmFtZU9LKQogCXsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGZpbGUgbmFtZSBhcmd1bWVudFxu IiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGZpbGUgbmFtZSBhcmd1 bWVudCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1v cmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQlleGl0KDIpOwogCX0KQEAgLTI4 Myw2ICsyODAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpbnQJCQljOwog CiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19h cmNoaXZlY2xlYW51cCIpKTsKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAJcHJvZ25h bWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAKIAlpZiAoYXJnYyA+IDEpCkBAIC0zMDQs NyArMzAyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXN3aXRjaCAoYykK IAkJewogCQkJY2FzZSAnZCc6CQkJLyogRGVidWcgbW9kZSAqLwotCQkJCWRlYnVnID0gdHJ1 ZTsKKwkJCQlwZ19sb2dnaW5nX3NldF9sZXZlbChQR19MT0dfREVCVUcpOwogCQkJCWJyZWFr OwogCQkJY2FzZSAnbic6CQkJLyogRHJ5LVJ1biBtb2RlICovCiAJCQkJZHJ5cnVuID0gdHJ1 ZTsKQEAgLTMzNCw3ICszMzIsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl9 CiAJZWxzZQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBtdXN0IHNwZWNpZnkgYXJj aGl2ZSBsb2NhdGlvblxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJtdXN0IHNw ZWNpZnkgYXJjaGl2ZSBsb2NhdGlvbiIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwi JXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQll eGl0KDIpOwogCX0KQEAgLTM0NiwxNCArMzQ0LDE0IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCX0KIAllbHNlCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG11c3Qg c3BlY2lmeSBvbGRlc3Qga2VwdCBXQUwgZmlsZVxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9n X2Vycm9yKCJtdXN0IHNwZWNpZnkgb2xkZXN0IGtlcHQgV0FMIGZpbGUiKTsKIAkJZnByaW50 ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxu IiksIHByb2duYW1lKTsKIAkJZXhpdCgyKTsKIAl9CiAKIAlpZiAob3B0aW5kIDwgYXJnYykK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFy Z3VtZW50c1xuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21t YW5kLWxpbmUgYXJndW1lbnRzIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAt LWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCWV4aXQo Mik7CiAJfQpAQCAtMzY4LDEzICszNjYsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkgKi8KIAlTZXRXQUxGaWxlTmFtZUZvckNsZWFudXAoKTsKIAotCWlmIChkZWJ1ZykK LQl7Ci0JCXNucHJpbnRmKFdBTEZpbGVQYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIsCisJcGdf bG9nX2RlYnVnKCJrZWVwaW5nIFdBTCBmaWxlIFwiJXMvJXNcIiBhbmQgbGF0ZXIiLAogCQkJ CSBhcmNoaXZlTG9jYXRpb24sIGV4Y2x1c2l2ZUNsZWFudXBGaWxlTmFtZSk7Ci0JCWZwcmlu dGYoc3RkZXJyLCBfKCIlczoga2VlcGluZyBXQUwgZmlsZSBcIiVzXCIgYW5kIGxhdGVyXG4i KSwKLQkJCQlwcm9nbmFtZSwgV0FMRmlsZVBhdGgpOwotCX0KIAogCS8qCiAJICogUmVtb3Zl IFdBTCBmaWxlcyBvbGRlciB0aGFuIGN1dC1vZmYKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf YmFzZWJhY2t1cC9ubHMubWsgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvbmxzLm1rCmluZGV4 IGY3Njk0MzQzZmMuLmZlY2U1NTUxYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJh Y2t1cC9ubHMubWsKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL25scy5tawpAQCAtMSw1 ICsxLDYgQEAKICMgc3JjL2Jpbi9wZ19iYXNlYmFja3VwL25scy5tawogQ0FUQUxPR19OQU1F ICAgICA9IHBnX2Jhc2ViYWNrdXAKIEFWQUlMX0xBTkdVQUdFUyAgPSBkZSBlcyBmciBoZSBp dCBqYSBrbyBwbCBwdF9CUiBydSBzdiB0ciB2aSB6aF9DTgotR0VUVEVYVF9GSUxFUyAgICA9 IHBnX2Jhc2ViYWNrdXAuYyBwZ19yZWNlaXZld2FsLmMgcGdfcmVjdmxvZ2ljYWwuYyByZWNl aXZlbG9nLmMgc3RyZWFtdXRpbC5jIHdhbG1ldGhvZHMuYyAuLi8uLi9jb21tb24vZmVfbWVt dXRpbHMuYyAuLi8uLi9jb21tb24vZmlsZV91dGlscy5jCi1HRVRURVhUX1RSSUdHRVJTID0g c2ltcGxlX3Byb21wdCB0YXJfc2V0X2Vycm9yCitHRVRURVhUX0ZJTEVTICAgID0gJChGUk9O VEVORF9DT01NT05fR0VUVEVYVF9GSUxFUykgcGdfYmFzZWJhY2t1cC5jIHBnX3JlY2VpdmV3 YWwuYyBwZ19yZWN2bG9naWNhbC5jIHJlY2VpdmVsb2cuYyBzdHJlYW11dGlsLmMgd2FsbWV0 aG9kcy5jIC4uLy4uL2NvbW1vbi9mZV9tZW11dGlscy5jIC4uLy4uL2NvbW1vbi9maWxlX3V0 aWxzLmMKK0dFVFRFWFRfVFJJR0dFUlMgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX1RS SUdHRVJTKSBzaW1wbGVfcHJvbXB0IHRhcl9zZXRfZXJyb3IKK0dFVFRFWFRfRkxBR1MgICAg PSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdTKQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19iYXNlYmFja3VwLmMKaW5kZXggZTUxZWY5MWQ2Ni4uYTZjMDY0MzJkZSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYworKysgYi9zcmMv YmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jCkBAIC0zMCw2ICszMCw3IEBACiAj aW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3V0 aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL3N0cmluZy5oIgorI2luY2x1ZGUgImZlX3V0aWxz L2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKICNpbmNs dWRlICJnZXRvcHRfbG9uZy5oIgogI2luY2x1ZGUgImxpYnBxLWZlLmgiCkBAIC0xNjIsNTcg KzE2Myw0MSBAQCBjbGVhbnVwX2RpcmVjdG9yaWVzX2F0ZXhpdCh2b2lkKQogCXsKIAkJaWYg KG1hZGVfbmV3X3BnZGF0YSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiByZW1v dmluZyBkYXRhIGRpcmVjdG9yeSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgYmFzZWRp cik7CisJCQlwZ19sb2dfaW5mbygicmVtb3ZpbmcgZGF0YSBkaXJlY3RvcnkgXCIlc1wiIiwg YmFzZWRpcik7CiAJCQlpZiAoIXJtdHJlZShiYXNlZGlyLCB0cnVlKSkKLQkJCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGZhaWxlZCB0byByZW1vdmUgZGF0YSBkaXJlY3RvcnlcbiIpLAot CQkJCQkJcHJvZ25hbWUpOworCQkJCXBnX2xvZ19lcnJvcigiZmFpbGVkIHRvIHJlbW92ZSBk YXRhIGRpcmVjdG9yeSIpOwogCQl9CiAJCWVsc2UgaWYgKGZvdW5kX2V4aXN0aW5nX3BnZGF0 YSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiByZW1vdmluZyBjb250 ZW50cyBvZiBkYXRhIGRpcmVjdG9yeSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgYmFz ZWRpcik7CisJCQlwZ19sb2dfaW5mbygicmVtb3ZpbmcgY29udGVudHMgb2YgZGF0YSBkaXJl Y3RvcnkgXCIlc1wiIiwgYmFzZWRpcik7CiAJCQlpZiAoIXJtdHJlZShiYXNlZGlyLCBmYWxz ZSkpCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmYWlsZWQgdG8gcmVtb3ZlIGNvbnRl bnRzIG9mIGRhdGEgZGlyZWN0b3J5XG4iKSwKLQkJCQkJCXByb2duYW1lKTsKKwkJCQlwZ19s b2dfZXJyb3IoImZhaWxlZCB0byByZW1vdmUgY29udGVudHMgb2YgZGF0YSBkaXJlY3Rvcnki KTsKIAkJfQogCiAJCWlmIChtYWRlX25ld194bG9nZGlyKQogCQl7Ci0JCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IHJlbW92aW5nIFdBTCBkaXJlY3RvcnkgXCIlc1wiXG4iKSwKLQkJCQkJ cHJvZ25hbWUsIHhsb2dfZGlyKTsKKwkJCXBnX2xvZ19pbmZvKCJyZW1vdmluZyBXQUwgZGly ZWN0b3J5IFwiJXNcIiIsIHhsb2dfZGlyKTsKIAkJCWlmICghcm10cmVlKHhsb2dfZGlyLCB0 cnVlKSkKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGZhaWxlZCB0byByZW1vdmUgV0FM IGRpcmVjdG9yeVxuIiksCi0JCQkJCQlwcm9nbmFtZSk7CisJCQkJcGdfbG9nX2Vycm9yKCJm YWlsZWQgdG8gcmVtb3ZlIFdBTCBkaXJlY3RvcnkiKTsKIAkJfQogCQllbHNlIGlmIChmb3Vu ZF9leGlzdGluZ194bG9nZGlyKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygi JXM6IHJlbW92aW5nIGNvbnRlbnRzIG9mIFdBTCBkaXJlY3RvcnkgXCIlc1wiXG4iKSwKLQkJ CQkJcHJvZ25hbWUsIHhsb2dfZGlyKTsKKwkJCXBnX2xvZ19pbmZvKCJyZW1vdmluZyBjb250 ZW50cyBvZiBXQUwgZGlyZWN0b3J5IFwiJXNcIiIsIHhsb2dfZGlyKTsKIAkJCWlmICghcm10 cmVlKHhsb2dfZGlyLCBmYWxzZSkpCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmYWls ZWQgdG8gcmVtb3ZlIGNvbnRlbnRzIG9mIFdBTCBkaXJlY3RvcnlcbiIpLAotCQkJCQkJcHJv Z25hbWUpOworCQkJCXBnX2xvZ19lcnJvcigiZmFpbGVkIHRvIHJlbW92ZSBjb250ZW50cyBv ZiBXQUwgZGlyZWN0b3J5Iik7CiAJCX0KIAl9CiAJZWxzZQogCXsKIAkJaWYgKChtYWRlX25l d19wZ2RhdGEgfHwgZm91bmRfZXhpc3RpbmdfcGdkYXRhKSAmJiAhY2hlY2tzdW1fZmFpbHVy ZSkKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogZGF0YSBkaXJlY3RvcnkgXCIl c1wiIG5vdCByZW1vdmVkIGF0IHVzZXIncyByZXF1ZXN0XG4iKSwKLQkJCQkJcHJvZ25hbWUs IGJhc2VkaXIpOworCQkJcGdfbG9nX2luZm8oImRhdGEgZGlyZWN0b3J5IFwiJXNcIiBub3Qg cmVtb3ZlZCBhdCB1c2VyJ3MgcmVxdWVzdCIsIGJhc2VkaXIpOwogCiAJCWlmIChtYWRlX25l d194bG9nZGlyIHx8IGZvdW5kX2V4aXN0aW5nX3hsb2dkaXIpCi0JCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJXygiJXM6IFdBTCBkaXJlY3RvcnkgXCIlc1wiIG5vdCByZW1vdmVkIGF0IHVz ZXIncyByZXF1ZXN0XG4iKSwKLQkJCQkJcHJvZ25hbWUsIHhsb2dfZGlyKTsKKwkJCXBnX2xv Z19pbmZvKCJXQUwgZGlyZWN0b3J5IFwiJXNcIiBub3QgcmVtb3ZlZCBhdCB1c2VyJ3MgcmVx dWVzdCIsIHhsb2dfZGlyKTsKIAl9CiAKIAlpZiAoKG1hZGVfdGFibGVzcGFjZV9kaXJzIHx8 IGZvdW5kX3RhYmxlc3BhY2VfZGlycykgJiYgIWNoZWNrc3VtX2ZhaWx1cmUpCi0JCWZwcmlu dGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjaGFuZ2VzIHRvIHRhYmxlc3BhY2UgZGlyZWN0b3Jp ZXMgd2lsbCBub3QgYmUgdW5kb25lXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19p bmZvKCJjaGFuZ2VzIHRvIHRhYmxlc3BhY2UgZGlyZWN0b3JpZXMgd2lsbCBub3QgYmUgdW5k b25lIik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNTMsNyArMjM4LDcgQEAgdGFibGVzcGFj ZV9saXN0X2FwcGVuZChjb25zdCBjaGFyICphcmcpCiAJewogCQlpZiAoZHN0X3B0ciAtIGRz dCA+PSBNQVhQR1BBVEgpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZGlyZWN0 b3J5IG5hbWUgdG9vIGxvbmdcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImRp cmVjdG9yeSBuYW1lIHRvbyBsb25nIik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTI2Myw3 ICsyNDgsNyBAQCB0YWJsZXNwYWNlX2xpc3RfYXBwZW5kKGNvbnN0IGNoYXIgKmFyZykKIAkJ ewogCQkJaWYgKCpjZWxsLT5uZXdfZGlyKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogbXVsdGlwbGUgXCI9XCIgc2lnbnMgaW4gdGFibGVzcGFjZSBtYXBwaW5nXG4iKSwg cHJvZ25hbWUpOworCQkJCXBnX2xvZ19lcnJvcigibXVsdGlwbGUgXCI9XCIgc2lnbnMgaW4g dGFibGVzcGFjZSBtYXBwaW5nIik7CiAJCQkJZXhpdCgxKTsKIAkJCX0KIAkJCWVsc2UKQEAg LTI3NSw5ICsyNjAsNyBAQCB0YWJsZXNwYWNlX2xpc3RfYXBwZW5kKGNvbnN0IGNoYXIgKmFy ZykKIAogCWlmICghKmNlbGwtPm9sZF9kaXIgfHwgISpjZWxsLT5uZXdfZGlyKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGludmFsaWQgdGFibGVzcGFjZSBtYXBwaW5n IGZvcm1hdCBcIiVzXCIsIG11c3QgYmUgXCJPTERESVI9TkVXRElSXCJcbiIpLAotCQkJCXBy b2duYW1lLCBhcmcpOworCQlwZ19sb2dfZXJyb3IoImludmFsaWQgdGFibGVzcGFjZSBtYXBw aW5nIGZvcm1hdCBcIiVzXCIsIG11c3QgYmUgXCJPTERESVI9TkVXRElSXCIiLCBhcmcpOwog CQlleGl0KDEpOwogCX0KIApAQCAtMjg5LDE1ICsyNzIsMTUgQEAgdGFibGVzcGFjZV9saXN0 X2FwcGVuZChjb25zdCBjaGFyICphcmcpCiAJICovCiAJaWYgKCFpc19hYnNvbHV0ZV9wYXRo KGNlbGwtPm9sZF9kaXIpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBvbGQgZGly ZWN0b3J5IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoIGluIHRhYmxlc3BhY2UgbWFwcGluZzog JXNcbiIpLAotCQkJCXByb2duYW1lLCBjZWxsLT5vbGRfZGlyKTsKKwkJcGdfbG9nX2Vycm9y KCJvbGQgZGlyZWN0b3J5IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoIGluIHRhYmxlc3BhY2Ug bWFwcGluZzogJXMiLAorCQkJCQkgY2VsbC0+b2xkX2Rpcik7CiAJCWV4aXQoMSk7CiAJfQog CiAJaWYgKCFpc19hYnNvbHV0ZV9wYXRoKGNlbGwtPm5ld19kaXIpKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBuZXcgZGlyZWN0b3J5IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRo IGluIHRhYmxlc3BhY2UgbWFwcGluZzogJXNcbiIpLAotCQkJCXByb2duYW1lLCBjZWxsLT5u ZXdfZGlyKTsKKwkJcGdfbG9nX2Vycm9yKCJuZXcgZGlyZWN0b3J5IGlzIG5vdCBhbiBhYnNv bHV0ZSBwYXRoIGluIHRhYmxlc3BhY2UgbWFwcGluZzogJXMiLAorCQkJCQkgY2VsbC0+bmV3 X2Rpcik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC00MjAsMTYgKzQwMywxNCBAQCByZWFjaGVk X2VuZF9wb3NpdGlvbihYTG9nUmVjUHRyIHNlZ2VuZHBvcywgdWludDMyIHRpbWVsaW5lLAog CQkJciA9IHJlYWQoYmdwaXBlWzBdLCB4bG9nZW5kLCBzaXplb2YoeGxvZ2VuZCkgLSAxKTsK IAkJCWlmIChyIDwgMCkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxk IG5vdCByZWFkIGZyb20gcmVhZHkgcGlwZTogJXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHN0 cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBmcm9t IHJlYWR5IHBpcGU6ICVtIik7CiAJCQkJZXhpdCgxKTsKIAkJCX0KIAogCQkJaWYgKHNzY2Fu Zih4bG9nZW5kLCAiJVgvJVgiLCAmaGksICZsbykgIT0gMikKIAkJCXsKLQkJCQlmcHJpbnRm KHN0ZGVyciwKLQkJCQkJCV8oIiVzOiBjb3VsZCBub3QgcGFyc2Ugd3JpdGUtYWhlYWQgbG9n IGxvY2F0aW9uIFwiJXNcIlxuIiksCi0JCQkJCQlwcm9nbmFtZSwgeGxvZ2VuZCk7CisJCQkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2Ugd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9u IFwiJXNcIiIsCisJCQkJCQkJIHhsb2dlbmQpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQl4 bG9nZW5kcHRyID0gKCh1aW50NjQpIGhpKSA8PCAzMiB8IGxvOwpAQCAtNTIxLDkgKzUwMiw3 IEBAIExvZ1N0cmVhbWVyTWFpbihsb2dzdHJlYW1lcl9wYXJhbSAqcGFyYW0pCiAKIAlpZiAo IXN0cmVhbS53YWxtZXRob2QtPmZpbmlzaCgpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0J CQkJXygiJXM6IGNvdWxkIG5vdCBmaW5pc2ggd3JpdGluZyBXQUwgZmlsZXM6ICVzXG4iKSwK LQkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3QgZmluaXNoIHdyaXRpbmcgV0FMIGZpbGVzOiAlbSIpOwogCQlyZXR1cm4gMTsKIAl9 CiAKQEAgLTU1OCw5ICs1MzcsOCBAQCBTdGFydExvZ1N0cmVhbWVyKGNoYXIgKnN0YXJ0cG9z LCB1aW50MzIgdGltZWxpbmUsIGNoYXIgKnN5c2lkZW50aWZpZXIpCiAJLyogQ29udmVydCB0 aGUgc3RhcnRpbmcgcG9zaXRpb24gKi8KIAlpZiAoc3NjYW5mKHN0YXJ0cG9zLCAiJVgvJVgi LCAmaGksICZsbykgIT0gMikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBj b3VsZCBub3QgcGFyc2Ugd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIFwiJXNcIlxuIiksCi0J CQkJcHJvZ25hbWUsIHN0YXJ0cG9zKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFy c2Ugd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIFwiJXNcIiIsCisJCQkJCSBzdGFydHBvcyk7 CiAJCWV4aXQoMSk7CiAJfQogCXBhcmFtLT5zdGFydHB0ciA9ICgodWludDY0KSBoaSkgPDwg MzIgfCBsbzsKQEAgLTU3MSw5ICs1NDksNyBAQCBTdGFydExvZ1N0cmVhbWVyKGNoYXIgKnN0 YXJ0cG9zLCB1aW50MzIgdGltZWxpbmUsIGNoYXIgKnN5c2lkZW50aWZpZXIpCiAJLyogQ3Jl YXRlIG91ciBiYWNrZ3JvdW5kIHBpcGUgKi8KIAlpZiAocGlwZShiZ3BpcGUpIDwgMCkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIHBpcGUg Zm9yIGJhY2tncm91bmQgcHJvY2VzczogJXNcbiIpLAotCQkJCXByb2duYW1lLCBzdHJlcnJv cihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgcGlwZSBmb3Ig YmFja2dyb3VuZCBwcm9jZXNzOiAlbSIpOwogCQlleGl0KDEpOwogCX0KICNlbmRpZgpAQCAt NjA4LDExICs1ODQsMTEgQEAgU3RhcnRMb2dTdHJlYW1lcihjaGFyICpzdGFydHBvcywgdWlu dDMyIHRpbWVsaW5lLCBjaGFyICpzeXNpZGVudGlmaWVyKQogCQlpZiAodmVyYm9zZSkKIAkJ ewogCQkJaWYgKHRlbXBfcmVwbGljYXRpb25fc2xvdCkKLQkJCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNyZWF0ZWQgdGVtcG9yYXJ5IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiXG4iKSwK LQkJCQkJCXByb2duYW1lLCByZXBsaWNhdGlvbl9zbG90KTsKKwkJCQlwZ19sb2dfaW5mbygi Y3JlYXRlZCB0ZW1wb3JhcnkgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCXJl cGxpY2F0aW9uX3Nsb3QpOwogCQkJZWxzZQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y3JlYXRlZCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIlxuIiksCi0JCQkJCQlwcm9nbmFtZSwg cmVwbGljYXRpb25fc2xvdCk7CisJCQkJcGdfbG9nX2luZm8oImNyZWF0ZWQgcmVwbGljYXRp b24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCXJlcGxpY2F0aW9uX3Nsb3QpOwogCQl9CiAJfQog CkBAIC02MzEsOSArNjA3LDcgQEAgU3RhcnRMb2dTdHJlYW1lcihjaGFyICpzdGFydHBvcywg dWludDMyIHRpbWVsaW5lLCBjaGFyICpzeXNpZGVudGlmaWVyKQogCiAJCWlmIChwZ19ta2Rp cl9wKHN0YXR1c2RpciwgcGdfZGlyX2NyZWF0ZV9tb2RlKSAhPSAwICYmIGVycm5vICE9IEVF WElTVCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3Qg Y3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHN0YXR1 c2Rpciwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNy ZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHN0YXR1c2Rpcik7CiAJCQlleGl0KDEpOwog CQl9CiAJfQpAQCAtNjUxLDggKzYyNSw3IEBAIFN0YXJ0TG9nU3RyZWFtZXIoY2hhciAqc3Rh cnRwb3MsIHVpbnQzMiB0aW1lbGluZSwgY2hhciAqc3lzaWRlbnRpZmllcikKIAl9CiAJZWxz ZSBpZiAoYmdjaGlsZCA8IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxk IG5vdCBjcmVhdGUgYmFja2dyb3VuZCBwcm9jZXNzOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUs IHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBi YWNrZ3JvdW5kIHByb2Nlc3M6ICVtIik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC02NjQsOCAr NjM3LDcgQEAgU3RhcnRMb2dTdHJlYW1lcihjaGFyICpzdGFydHBvcywgdWludDMyIHRpbWVs aW5lLCBjaGFyICpzeXNpZGVudGlmaWVyKQogCWJnY2hpbGQgPSBfYmVnaW50aHJlYWRleChO VUxMLCAwLCAodm9pZCAqKSBMb2dTdHJlYW1lck1haW4sIHBhcmFtLCAwLCBOVUxMKTsKIAlp ZiAoYmdjaGlsZCA9PSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3QgY3JlYXRlIGJhY2tncm91bmQgdGhyZWFkOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHN0 cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBiYWNr Z3JvdW5kIHRocmVhZDogJW0iKTsKIAkJZXhpdCgxKTsKIAl9CiAjZW5kaWYKQEAgLTY4OCw5 ICs2NjAsNyBAQCB2ZXJpZnlfZGlyX2lzX2VtcHR5X29yX2NyZWF0ZShjaGFyICpkaXJuYW1l LCBib29sICpjcmVhdGVkLCBib29sICpmb3VuZCkKIAkJCSAqLwogCQkJaWYgKHBnX21rZGly X3AoZGlybmFtZSwgcGdfZGlyX2NyZWF0ZV9tb2RlKSA9PSAtMSkKIAkJCXsKLQkJCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBc IiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBkaXJuYW1lLCBzdHJlcnJvcihlcnJu bykpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIl c1wiOiAlbSIsIGRpcm5hbWUpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQlpZiAoY3JlYXRl ZCkKQEAgLTcxMSwxNyArNjgxLDE0IEBAIHZlcmlmeV9kaXJfaXNfZW1wdHlfb3JfY3JlYXRl KGNoYXIgKmRpcm5hbWUsIGJvb2wgKmNyZWF0ZWQsIGJvb2wgKmZvdW5kKQogCQkJLyoKIAkJ CSAqIEV4aXN0cywgbm90IGVtcHR5CiAJCQkgKi8KLQkJCWZwcmludGYoc3RkZXJyLAotCQkJ CQlfKCIlczogZGlyZWN0b3J5IFwiJXNcIiBleGlzdHMgYnV0IGlzIG5vdCBlbXB0eVxuIiks Ci0JCQkJCXByb2duYW1lLCBkaXJuYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiZGlyZWN0b3J5 IFwiJXNcIiBleGlzdHMgYnV0IGlzIG5vdCBlbXB0eSIsIGRpcm5hbWUpOwogCQkJZXhpdCgx KTsKIAkJY2FzZSAtMToKIAogCQkJLyoKIAkJCSAqIEFjY2VzcyBwcm9ibGVtCiAJCQkgKi8K LQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGFjY2VzcyBkaXJlY3Rvcnkg XCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBkaXJuYW1lLCBzdHJlcnJvcihlcnJu bykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgYWNjZXNzIGRpcmVjdG9yeSBcIiVz XCI6ICVtIiwgZGlybmFtZSk7CiAJCQlleGl0KDEpOwogCX0KIH0KQEAgLTgzNCwxNiArODAx LDEyIEBAIHBhcnNlX21heF9yYXRlKGNoYXIgKnNyYykKIAlyZXN1bHQgPSBzdHJ0b2Qoc3Jj LCAmYWZ0ZXJfbnVtKTsKIAlpZiAoc3JjID09IGFmdGVyX251bSkKIAl7Ci0JCWZwcmludGYo c3RkZXJyLAotCQkJCV8oIiVzOiB0cmFuc2ZlciByYXRlIFwiJXNcIiBpcyBub3QgYSB2YWxp ZCB2YWx1ZVxuIiksCi0JCQkJcHJvZ25hbWUsIHNyYyk7CisJCXBnX2xvZ19lcnJvcigidHJh bnNmZXIgcmF0ZSBcIiVzXCIgaXMgbm90IGEgdmFsaWQgdmFsdWUiLCBzcmMpOwogCQlleGl0 KDEpOwogCX0KIAlpZiAoZXJybm8gIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJ CV8oIiVzOiBpbnZhbGlkIHRyYW5zZmVyIHJhdGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJv Z25hbWUsIHNyYywgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlk IHRyYW5zZmVyIHJhdGUgXCIlc1wiOiAlbSIsIHNyYyk7CiAJCWV4aXQoMSk7CiAJfQogCkBA IC04NTIsOCArODE1LDcgQEAgcGFyc2VfbWF4X3JhdGUoY2hhciAqc3JjKQogCQkvKgogCQkg KiBSZWplY3Qgb2J2aW91c2x5IHdyb25nIHZhbHVlcyBoZXJlLgogCQkgKi8KLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiB0cmFuc2ZlciByYXRlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHpl cm9cbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJ0cmFuc2ZlciByYXRl IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8iKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTg4 NSwxOCArODQ3LDE0IEBAIHBhcnNlX21heF9yYXRlKGNoYXIgKnNyYykKIAogCWlmICgqYWZ0 ZXJfbnVtICE9ICdcMCcpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogaW52 YWxpZCAtLW1heC1yYXRlIHVuaXQ6IFwiJXNcIlxuIiksCi0JCQkJcHJvZ25hbWUsIHN1ZmZp eCk7CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCAtLW1heC1yYXRlIHVuaXQ6IFwiJXNcIiIs IHN1ZmZpeCk7CiAJCWV4aXQoMSk7CiAJfQogCiAJLyogVmFsaWQgaW50ZWdlcj8gKi8KIAlp ZiAoKHVpbnQ2NCkgcmVzdWx0ICE9ICh1aW50NjQpICgodWludDMyKSByZXN1bHQpKQogCXsK LQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IHRyYW5zZmVyIHJhdGUgXCIlc1wiIGV4 Y2VlZHMgaW50ZWdlciByYW5nZVxuIiksCi0JCQkJcHJvZ25hbWUsIHNyYyk7CisJCXBnX2xv Z19lcnJvcigidHJhbnNmZXIgcmF0ZSBcIiVzXCIgZXhjZWVkcyBpbnRlZ2VyIHJhbmdlIiwg c3JjKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTkwNiw5ICs4NjQsNyBAQCBwYXJzZV9tYXhf cmF0ZShjaGFyICpzcmMpCiAJICovCiAJaWYgKHJlc3VsdCA8IE1BWF9SQVRFX0xPV0VSIHx8 IHJlc3VsdCA+IE1BWF9SQVRFX1VQUEVSKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJ XygiJXM6IHRyYW5zZmVyIHJhdGUgXCIlc1wiIGlzIG91dCBvZiByYW5nZVxuIiksCi0JCQkJ cHJvZ25hbWUsIHNyYyk7CisJCXBnX2xvZ19lcnJvcigidHJhbnNmZXIgcmF0ZSBcIiVzXCIg aXMgb3V0IG9mIHJhbmdlIiwgc3JjKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTkzMCw5ICs4 ODYsOCBAQCB3cml0ZVRhckRhdGEoCiAJewogCQlpZiAoZ3p3cml0ZSh6dGFyZmlsZSwgYnVm LCByKSAhPSByKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGNvdWxk IG5vdCB3cml0ZSB0byBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXBy b2duYW1lLCBjdXJyZW50X2ZpbGUsIGdldF9nel9lcnJvcih6dGFyZmlsZSkpOworCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgdG8gY29tcHJlc3NlZCBmaWxlIFwiJXNcIjog JXMiLAorCQkJCQkJIGN1cnJlbnRfZmlsZSwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7CiAJ CQlleGl0KDEpOwogCQl9CiAJfQpAQCAtOTQxLDggKzg5Niw3IEBAIHdyaXRlVGFyRGF0YSgK IAl7CiAJCWlmIChmd3JpdGUoYnVmLCByLCAxLCB0YXJmaWxlKSAhPSAxKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjog JXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgY3VycmVudF9maWxlLCBzdHJlcnJvcihlcnJubykp OworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVzXCI6ICVt IiwgY3VycmVudF9maWxlKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAl9CkBAIC0xMDAyLDkgKzk1 Niw4IEBAIFJlY2VpdmVUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywgaW50 IHJvd251bSkKIAkJCQlpZiAoZ3pzZXRwYXJhbXMoenRhcmZpbGUsIGNvbXByZXNzbGV2ZWws CiAJCQkJCQkJCVpfREVGQVVMVF9TVFJBVEVHWSkgIT0gWl9PSykKIAkJCQl7Ci0JCQkJCWZw cmludGYoc3RkZXJyLAotCQkJCQkJCV8oIiVzOiBjb3VsZCBub3Qgc2V0IGNvbXByZXNzaW9u IGxldmVsICVkOiAlc1xuIiksCi0JCQkJCQkJcHJvZ25hbWUsIGNvbXByZXNzbGV2ZWwsIGdl dF9nel9lcnJvcih6dGFyZmlsZSkpOworCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBz ZXQgY29tcHJlc3Npb24gbGV2ZWwgJWQ6ICVzIiwKKwkJCQkJCQkJIGNvbXByZXNzbGV2ZWws IGdldF9nel9lcnJvcih6dGFyZmlsZSkpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCX0K QEAgLTEwMjMsOSArOTc2LDggQEAgUmVjZWl2ZVRhckZpbGUoUEdjb25uICpjb25uLCBQR3Jl c3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJCWlmIChnenNldHBhcmFtcyh6dGFyZmlsZSwg Y29tcHJlc3NsZXZlbCwKIAkJCQkJCQkJWl9ERUZBVUxUX1NUUkFURUdZKSAhPSBaX09LKQog CQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJXygiJXM6IGNvdWxkIG5vdCBz ZXQgY29tcHJlc3Npb24gbGV2ZWwgJWQ6ICVzXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgY29t cHJlc3NsZXZlbCwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7CisJCQkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHNldCBjb21wcmVzc2lvbiBsZXZlbCAlZDogJXMiLAorCQkJCQkJCQkg Y29tcHJlc3NsZXZlbCwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7CiAJCQkJCWV4aXQoMSk7 CiAJCQkJfQogCQkJfQpAQCAtMTA1MSw5ICsxMDAzLDggQEAgUmVjZWl2ZVRhckZpbGUoUEdj b25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJaWYgKGd6c2V0cGFy YW1zKHp0YXJmaWxlLCBjb21wcmVzc2xldmVsLAogCQkJCQkJCVpfREVGQVVMVF9TVFJBVEVH WSkgIT0gWl9PSykKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiBj b3VsZCBub3Qgc2V0IGNvbXByZXNzaW9uIGxldmVsICVkOiAlc1xuIiksCi0JCQkJCQlwcm9n bmFtZSwgY29tcHJlc3NsZXZlbCwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7CisJCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3Qgc2V0IGNvbXByZXNzaW9uIGxldmVsICVkOiAlcyIsCisJ CQkJCQkJIGNvbXByZXNzbGV2ZWwsIGdldF9nel9lcnJvcih6dGFyZmlsZSkpOwogCQkJCWV4 aXQoMSk7CiAJCQl9CiAJCX0KQEAgLTEwNzIsOSArMTAyMyw4IEBAIFJlY2VpdmVUYXJGaWxl KFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAkJaWYgKCF6dGFy ZmlsZSkKIAkJewogCQkJLyogQ29tcHJlc3Npb24gaXMgaW4gdXNlICovCi0JCQlmcHJpbnRm KHN0ZGVyciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgY29tcHJlc3NlZCBmaWxl IFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUsIGdldF9nel9lcnJv cih6dGFyZmlsZSkpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGNvbXBy ZXNzZWQgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJCSBmaWxlbmFtZSwgZ2V0X2d6X2Vycm9y KHp0YXJmaWxlKSk7CiAJCQlleGl0KDEpOwogCQl9CiAJfQpAQCAtMTA4NCw4ICsxMDM0LDcg QEAgUmVjZWl2ZVRhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93 bnVtKQogCQkvKiBFaXRoZXIgbm8gemxpYiBzdXBwb3J0LCBvciB6bGliIHN1cHBvcnQgYnV0 IGNvbXByZXNzbGV2ZWwgPSAwICovCiAJCWlmICghdGFyZmlsZSkKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGZpbGUgXCIlc1wiOiAlc1xuIiks Ci0JCQkJCXByb2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjogJW0iLCBmaWxlbmFtZSk7 CiAJCQlleGl0KDEpOwogCQl9CiAJfQpAQCAtMTA5Niw4ICsxMDQ1LDggQEAgUmVjZWl2ZVRh ckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCXJlcyA9 IFBRZ2V0UmVzdWx0KGNvbm4pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVT X0NPUFlfT1VUKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgZ2V0 IENPUFkgZGF0YSBzdHJlYW06ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdl KGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0IENPUFkgZGF0YSBzdHJl YW06ICVzIiwKKwkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJZXhpdCgxKTsKIAl9 CiAKQEAgLTExNjQsOSArMTExMyw4IEBAIFJlY2VpdmVUYXJGaWxlKFBHY29ubiAqY29ubiwg UEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAkJCXsKIAkJCQlpZiAoZ3pjbG9zZSh6dGFy ZmlsZSkgIT0gMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCV8oIiVz OiBjb3VsZCBub3QgY2xvc2UgY29tcHJlc3NlZCBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJ CQkJCXByb2duYW1lLCBmaWxlbmFtZSwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7CisJCQkJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNsb3NlIGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6 ICVzIiwKKwkJCQkJCQkJIGZpbGVuYW1lLCBnZXRfZ3pfZXJyb3IoenRhcmZpbGUpKTsKIAkJ CQkJZXhpdCgxKTsKIAkJCQl9CiAJCQl9CkBAIC0xMTc3LDkgKzExMjUsOCBAQCBSZWNlaXZl VGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJCQkJ ewogCQkJCQlpZiAoZmNsb3NlKHRhcmZpbGUpICE9IDApCiAJCQkJCXsKLQkJCQkJCWZwcmlu dGYoc3RkZXJyLAotCQkJCQkJCQlfKCIlczogY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wi OiAlc1xuIiksCi0JCQkJCQkJCXByb2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8p KTsKKwkJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAl bSIsCisJCQkJCQkJCQkgZmlsZW5hbWUpOwogCQkJCQkJZXhpdCgxKTsKIAkJCQkJfQogCQkJ CX0KQEAgLTExODksOCArMTEzNiw4IEBAIFJlY2VpdmVUYXJGaWxlKFBHY29ubiAqY29ubiwg UEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAkJfQogCQllbHNlIGlmIChyID09IC0yKQog CQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIENPUFkgZGF0 YTogJXMiKSwKLQkJCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IHJlYWQgQ09QWSBkYXRhOiAlcyIsCisJCQkJCQkgUFFl cnJvck1lc3NhZ2UoY29ubikpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBAIC0xMzY0LDcgKzEz MTEsNyBAQCBSZWNlaXZlVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGlu dCByb3dudW0pCiAKIAkvKiBzeW5jIHRoZSByZXN1bHRpbmcgdGFyIGZpbGUsIGVycm9ycyBh cmUgbm90IGNvbnNpZGVyZWQgZmF0YWwgKi8KIAlpZiAoZG9fc3luYyAmJiBzdHJjbXAoYmFz ZWRpciwgIi0iKSAhPSAwKQotCQkodm9pZCkgZnN5bmNfZm5hbWUoZmlsZW5hbWUsIGZhbHNl LCBwcm9nbmFtZSk7CisJCSh2b2lkKSBmc3luY19mbmFtZShmaWxlbmFtZSwgZmFsc2UpOwog fQogCiAKQEAgLTE0MjUsOCArMTM3Miw4IEBAIFJlY2VpdmVBbmRVbnBhY2tUYXJGaWxlKFBH Y29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAlyZXMgPSBQUWdldFJl c3VsdChjb25uKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT1BZX09V VCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGdldCBDT1BZIGRh dGEgc3RyZWFtOiAlcyIpLAotCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7 CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGdldCBDT1BZIGRhdGEgc3RyZWFtOiAlcyIs CisJCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0x NDU0LDggKzE0MDEsOCBAQCBSZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4gKmNvbm4s IFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJCX0KIAkJZWxzZSBpZiAociA9PSAtMikK IAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBDT1BZIGRh dGE6ICVzIiksCi0JCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIENPUFkgZGF0YTogJXMiLAorCQkJCQkJIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCWV4aXQoMSk7CiAJCX0KIApAQCAtMTQ2OCw4ICsx NDE1LDcgQEAgUmVjZWl2ZUFuZFVucGFja1RhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3Vs dCAqcmVzLCBpbnQgcm93bnVtKQogCQkJICovCiAJCQlpZiAociAhPSA1MTIpCiAJCQl7Ci0J CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIHRhciBibG9jayBoZWFkZXIgc2l6 ZTogJWRcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHIpOworCQkJCXBnX2xvZ19lcnJvcigiaW52 YWxpZCB0YXIgYmxvY2sgaGVhZGVyIHNpemU6ICVkIiwgcik7CiAJCQkJZXhpdCgxKTsKIAkJ CX0KIAkJCXRvdGFsZG9uZSArPSA1MTI7CkBAIC0xNTE3LDE3ICsxNDYzLDE1IEBAIFJlY2Vp dmVBbmRVbnBhY2tUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywgaW50IHJv d251bSkKIAkJCQkJCQkgICBwZ19zdHJfZW5kc3dpdGgoZmlsZW5hbWUsICIvYXJjaGl2ZV9z dGF0dXMiKSkgJiYKIAkJCQkJCQkgIGVycm5vID09IEVFWElTVCkpCiAJCQkJCQl7Ci0JCQkJ CQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJCQlfKCIlczogY291bGQgbm90IGNyZWF0ZSBk aXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUs IHN0cmVycm9yKGVycm5vKSk7CisJCQkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3Jl YXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJCQkgZmlsZW5hbWUpOwogCQkJ CQkJCWV4aXQoMSk7CiAJCQkJCQl9CiAJCQkJCX0KICNpZm5kZWYgV0lOMzIKIAkJCQkJaWYg KGNobW9kKGZpbGVuYW1lLCAobW9kZV90KSBmaWxlbW9kZSkpCi0JCQkJCQlmcHJpbnRmKHN0 ZGVyciwKLQkJCQkJCQkJXygiJXM6IGNvdWxkIG5vdCBzZXQgcGVybWlzc2lvbnMgb24gZGly ZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUsIHN0 cmVycm9yKGVycm5vKSk7CisJCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZXQgcGVy bWlzc2lvbnMgb24gZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkJCQkJIGZpbGVuYW1l KTsKICNlbmRpZgogCQkJCX0KIAkJCQllbHNlIGlmIChjb3B5YnVmWzE1Nl0gPT0gJzInKQpA QCAtMTU0OSwxOCArMTQ5MywxNSBAQCBSZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4g KmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJCQkJCW1hcHBlZF90YmxzcGNf cGF0aCA9IGdldF90YWJsZXNwYWNlX21hcHBpbmcoJmNvcHlidWZbMTU3XSk7CiAJCQkJCWlm IChzeW1saW5rKG1hcHBlZF90YmxzcGNfcGF0aCwgZmlsZW5hbWUpICE9IDApCiAJCQkJCXsK LQkJCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCQlfKCIlczogY291bGQgbm90IGNyZWF0 ZSBzeW1ib2xpYyBsaW5rIGZyb20gXCIlc1wiIHRvIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJ CQlwcm9nbmFtZSwgZmlsZW5hbWUsIG1hcHBlZF90YmxzcGNfcGF0aCwKLQkJCQkJCQkJc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBz eW1ib2xpYyBsaW5rIGZyb20gXCIlc1wiIHRvIFwiJXNcIjogJW0iLAorCQkJCQkJCQkJIGZp bGVuYW1lLCBtYXBwZWRfdGJsc3BjX3BhdGgpOwogCQkJCQkJZXhpdCgxKTsKIAkJCQkJfQog CQkJCX0KIAkJCQllbHNlCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQlf KCIlczogdW5yZWNvZ25pemVkIGxpbmsgaW5kaWNhdG9yIFwiJWNcIlxuIiksCi0JCQkJCQkJ cHJvZ25hbWUsIGNvcHlidWZbMTU2XSk7CisJCQkJCXBnX2xvZ19lcnJvcigidW5yZWNvZ25p emVkIGxpbmsgaW5kaWNhdG9yIFwiJWNcIiIsCisJCQkJCQkJCSBjb3B5YnVmWzE1Nl0pOwog CQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQljb250aW51ZTsJCS8qIGRpcmVjdG9yeSBvciBs aW5rIGhhbmRsZWQgKi8KQEAgLTE1NzIsMTUgKzE1MTMsMTQgQEAgUmVjZWl2ZUFuZFVucGFj a1RhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJ ZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKIAkJCWlmICghZmlsZSkKIAkJCXsKLQkJ CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6 ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsK KwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVtIiwg ZmlsZW5hbWUpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAKICNpZm5kZWYgV0lOMzIKIAkJCWlm IChjaG1vZChmaWxlbmFtZSwgKG1vZGVfdCkgZmlsZW1vZGUpKQotCQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IHNldCBwZXJtaXNzaW9ucyBvbiBmaWxlIFwiJXNcIjog JXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwor CQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNldCBwZXJtaXNzaW9ucyBvbiBmaWxlIFwi JXNcIjogJW0iLAorCQkJCQkJCSBmaWxlbmFtZSk7CiAjZW5kaWYKIAogCQkJaWYgKGN1cnJl bnRfbGVuX2xlZnQgPT0gMCkKQEAgLTE2MTIsOCArMTU1Miw3IEBAIFJlY2VpdmVBbmRVbnBh Y2tUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAog CQkJaWYgKGZ3cml0ZShjb3B5YnVmLCByLCAxLCBmaWxlKSAhPSAxKQogCQkJewotCQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAl c1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJ CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVzXCI6ICVtIiwg ZmlsZW5hbWUpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQl0b3RhbGRvbmUgKz0gcjsKQEAg LTE2MzcsOSArMTU3Niw3IEBAIFJlY2VpdmVBbmRVbnBhY2tUYXJGaWxlKFBHY29ubiAqY29u biwgUEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAogCWlmIChmaWxlICE9IE5VTEwpCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogQ09QWSBzdHJlYW0gZW5kZWQgYmVm b3JlIGxhc3QgZmlsZSB3YXMgZmluaXNoZWRcbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdf bG9nX2Vycm9yKCJDT1BZIHN0cmVhbSBlbmRlZCBiZWZvcmUgbGFzdCBmaWxlIHdhcyBmaW5p c2hlZCIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTY2Niw3ICsxNjAzLDcgQEAgZXNjYXBl X3F1b3Rlcyhjb25zdCBjaGFyICpzcmMpCiAKIAlpZiAoIXJlc3VsdCkKIAl7Ci0JCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogb3V0IG9mIG1lbW9yeVxuIiksIHByb2duYW1lKTsKKwkJcGdf bG9nX2Vycm9yKCJvdXQgb2YgbWVtb3J5Iik7CiAJCWV4aXQoMSk7CiAJfQogCXJldHVybiBy ZXN1bHQ7CkBAIC0xNjg2LDE0ICsxNjIzLDE0IEBAIEdlbmVyYXRlUmVjb3ZlcnlDb25mKFBH Y29ubiAqY29ubikKIAlyZWNvdmVyeWNvbmZjb250ZW50cyA9IGNyZWF0ZVBRRXhwQnVmZmVy KCk7CiAJaWYgKCFyZWNvdmVyeWNvbmZjb250ZW50cykKIAl7Ci0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogb3V0IG9mIG1lbW9yeVxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9y KCJvdXQgb2YgbWVtb3J5Iik7CiAJCWV4aXQoMSk7CiAJfQogCiAJY29ubk9wdGlvbnMgPSBQ UWNvbm5pbmZvKGNvbm4pOwogCWlmIChjb25uT3B0aW9ucyA9PSBOVUxMKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBvdXQgb2YgbWVtb3J5XG4iKSwgcHJvZ25hbWUpOworCQlw Z19sb2dfZXJyb3IoIm91dCBvZiBtZW1vcnkiKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTE3 NDQsNyArMTY4MSw3IEBAIEdlbmVyYXRlUmVjb3ZlcnlDb25mKFBHY29ubiAqY29ubikKIAlp ZiAoUFFFeHBCdWZmZXJCcm9rZW4ocmVjb3Zlcnljb25mY29udGVudHMpIHx8CiAJCVBRRXhw QnVmZmVyRGF0YUJyb2tlbihjb25uaW5mb19idWYpKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBvdXQgb2YgbWVtb3J5XG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3Io Im91dCBvZiBtZW1vcnkiKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTE3NzAsMTUgKzE3MDcs MTMgQEAgV3JpdGVSZWNvdmVyeUNvbmYodm9pZCkKIAljZiA9IGZvcGVuKGZpbGVuYW1lLCAi YSIpOwogCWlmIChjZiA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXNcbiIpLCBwcm9nbmFtZSwgZmlsZW5hbWUs IHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZmls ZSBcIiVzXCI6ICVtIiwgZmlsZW5hbWUpOwogCQlleGl0KDEpOwogCX0KIAogCWlmIChmd3Jp dGUocmVjb3Zlcnljb25mY29udGVudHMtPmRhdGEsIHJlY292ZXJ5Y29uZmNvbnRlbnRzLT5s ZW4sIDEsIGNmKSAhPSAxKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNv dWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBm aWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg d3JpdGUgdG8gZmlsZSBcIiVzXCI6ICVtIiwgZmlsZW5hbWUpOwogCQlleGl0KDEpOwogCX0K IApAQCAtMTc4OCw3ICsxNzIzLDcgQEAgV3JpdGVSZWNvdmVyeUNvbmYodm9pZCkKIAljZiA9 IGZvcGVuKGZpbGVuYW1lLCAidyIpOwogCWlmIChjZiA9PSBOVUxMKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGZpbGUgXCIlc1wiOiAlc1xuIiks IHByb2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3QgY3JlYXRlIGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKTsKIAkJZXhp dCgxKTsKIAl9CiAKQEAgLTE4MjgsOCArMTc2Myw4IEBAIEJhc2VCYWNrdXAodm9pZCkKIAl7 CiAJCWNvbnN0IGNoYXIgKnNlcnZlcnZlciA9IFBRcGFyYW1ldGVyU3RhdHVzKGNvbm4sICJz ZXJ2ZXJfdmVyc2lvbiIpOwogCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW5jb21wYXRp YmxlIHNlcnZlciB2ZXJzaW9uICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc2VydmVydmVyID8g c2VydmVydmVyIDogIid1bmtub3duJyIpOworCQlwZ19sb2dfZXJyb3IoImluY29tcGF0aWJs ZSBzZXJ2ZXIgdmVyc2lvbiAlcyIsCisJCQkJCSBzZXJ2ZXJ2ZXIgPyBzZXJ2ZXJ2ZXIgOiAi J3Vua25vd24nIik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xODQzLDcgKzE3NzgsNyBAQCBC YXNlQmFja3VwKHZvaWQpCiAJCSAqIEVycm9yIG1lc3NhZ2UgYWxyZWFkeSB3cml0dGVuIGlu IENoZWNrU2VydmVyVmVyc2lvbkZvclN0cmVhbWluZygpLAogCQkgKiBidXQgYWRkIGEgaGlu dCBhYm91dCB1c2luZyAtWCBub25lLgogCQkgKi8KLQkJZnByaW50ZihzdGRlcnIsIF8oIkhJ TlQ6IHVzZSAtWCBub25lIG9yIC1YIGZldGNoIHRvIGRpc2FibGUgbG9nIHN0cmVhbWluZ1xu IikpOworCQlwZ19sb2dfaW5mbygiSElOVDogdXNlIC1YIG5vbmUgb3IgLVggZmV0Y2ggdG8g ZGlzYWJsZSBsb2cgc3RyZWFtaW5nIik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xODY4LDkg KzE4MDMsNyBAQCBCYXNlQmFja3VwKHZvaWQpCiAJCW1heHJhdGVfY2xhdXNlID0gcHNwcmlu dGYoIk1BWF9SQVRFICV1IiwgbWF4cmF0ZSk7CiAKIAlpZiAodmVyYm9zZSkKLQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJXygiJXM6IGluaXRpYXRpbmcgYmFzZSBiYWNrdXAsIHdhaXRpbmcg Zm9yIGNoZWNrcG9pbnQgdG8gY29tcGxldGVcbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdf bG9nX2luZm8oImluaXRpYXRpbmcgYmFzZSBiYWNrdXAsIHdhaXRpbmcgZm9yIGNoZWNrcG9p bnQgdG8gY29tcGxldGUiKTsKIAogCWlmIChzaG93cHJvZ3Jlc3MgJiYgIXZlcmJvc2UpCiAJ ewpAQCAtMTg5NCw4ICsxODI3LDggQEAgQmFzZUJhY2t1cCh2b2lkKQogCiAJaWYgKFBRc2Vu ZFF1ZXJ5KGNvbm4sIGJhc2Via3ApID09IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIpLAot CQkJCXByb2duYW1lLCAiQkFTRV9CQUNLVVAiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVz XCI6ICVzIiwKKwkJCQkJICJCQVNFX0JBQ0tVUCIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK IAkJZXhpdCgxKTsKIAl9CiAKQEAgLTE5MDUsMjIgKzE4MzgsMjEgQEAgQmFzZUJhY2t1cCh2 b2lkKQogCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhy ZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IGluaXRpYXRlIGJhc2UgYmFja3VwOiAlcyIpLAotCQkJCXByb2duYW1lLCBQ UWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGluaXRp YXRlIGJhc2UgYmFja3VwOiAlcyIsCisJCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJ CWV4aXQoMSk7CiAJfQogCWlmIChQUW50dXBsZXMocmVzKSAhPSAxKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJXygiJXM6IHNlcnZlciByZXR1cm5lZCB1bmV4cGVjdGVkIHJlc3Bv bnNlIHRvIEJBU0VfQkFDS1VQIGNvbW1hbmQ7IGdvdCAlZCByb3dzIGFuZCAlZCBmaWVsZHMs IGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUsIFBR bnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwgMik7CisJCXBnX2xvZ19lcnJvcigi c2VydmVyIHJldHVybmVkIHVuZXhwZWN0ZWQgcmVzcG9uc2UgdG8gQkFTRV9CQUNLVVAgY29t bWFuZDsgZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQg JWQgZmllbGRzIiwKKwkJCQkJIFBRbnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwg Mik7CiAJCWV4aXQoMSk7CiAJfQogCiAJc3RybGNweSh4bG9nc3RhcnQsIFBRZ2V0dmFsdWUo cmVzLCAwLCAwKSwgc2l6ZW9mKHhsb2dzdGFydCkpOwogCiAJaWYgKHZlcmJvc2UpCi0JCWZw cmludGYoc3RkZXJyLCBfKCIlczogY2hlY2twb2ludCBjb21wbGV0ZWRcbiIpLCBwcm9nbmFt ZSk7CisJCXBnX2xvZ19pbmZvKCJjaGVja3BvaW50IGNvbXBsZXRlZCIpOwogCiAJLyoKIAkg KiA5LjMgYW5kIGxhdGVyIHNlbmRzIHRoZSBUTEkgb2YgdGhlIHN0YXJ0aW5nIHBvaW50LiBX aXRoIG9sZGVyIHNlcnZlcnMsCkBAIC0xOTM1LDggKzE4NjcsOCBAQCBCYXNlQmFja3VwKHZv aWQpCiAJTWVtU2V0KHhsb2dlbmQsIDAsIHNpemVvZih4bG9nZW5kKSk7CiAKIAlpZiAodmVy Ym9zZSAmJiBpbmNsdWRld2FsICE9IE5PX1dBTCkKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiB3cml0ZS1haGVhZCBsb2cgc3RhcnQgcG9pbnQ6ICVzIG9uIHRpbWVsaW5lICV1XG4iKSwK LQkJCQlwcm9nbmFtZSwgeGxvZ3N0YXJ0LCBzdGFydHRsaSk7CisJCXBnX2xvZ19pbmZvKCJ3 cml0ZS1haGVhZCBsb2cgc3RhcnQgcG9pbnQ6ICVzIG9uIHRpbWVsaW5lICV1IiwKKwkJCQkJ eGxvZ3N0YXJ0LCBzdGFydHRsaSk7CiAKIAkvKgogCSAqIEdldCB0aGUgaGVhZGVyCkBAIC0x OTQ0LDEzICsxODc2LDEzIEBAIEJhc2VCYWNrdXAodm9pZCkKIAlyZXMgPSBQUWdldFJlc3Vs dChjb25uKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0sp CiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBnZXQgYmFja3VwIGhl YWRlcjogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBnZXQgYmFja3VwIGhlYWRlcjogJXMiLAorCQkJCQkg UFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlleGl0KDEpOwogCX0KIAlpZiAoUFFudHVwbGVz KHJlcykgPCAxKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBubyBkYXRhIHJldHVy bmVkIGZyb20gc2VydmVyXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIGRh dGEgcmV0dXJuZWQgZnJvbSBzZXJ2ZXIiKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTE5ODEs OSArMTkxMyw4IEBAIEJhc2VCYWNrdXAodm9pZCkKIAkgKi8KIAlpZiAoZm9ybWF0ID09ICd0 JyAmJiBzdHJjbXAoYmFzZWRpciwgIi0iKSA9PSAwICYmIFBRbnR1cGxlcyhyZXMpID4gMSkK IAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjYW4gb25seSB3cml0ZSBzaW5n bGUgdGFibGVzcGFjZSB0byBzdGRvdXQsIGRhdGFiYXNlIGhhcyAlZFxuIiksCi0JCQkJcHJv Z25hbWUsIFBRbnR1cGxlcyhyZXMpKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW4gb25seSB3cml0 ZSBzaW5nbGUgdGFibGVzcGFjZSB0byBzdGRvdXQsIGRhdGFiYXNlIGhhcyAlZCIsCisJCQkJ CSBQUW50dXBsZXMocmVzKSk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xOTk0LDggKzE5MjUs NyBAQCBCYXNlQmFja3VwKHZvaWQpCiAJaWYgKGluY2x1ZGV3YWwgPT0gU1RSRUFNX1dBTCkK IAl7CiAJCWlmICh2ZXJib3NlKQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzdGFydGlu ZyBiYWNrZ3JvdW5kIFdBTCByZWNlaXZlclxuIiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBn X2xvZ19pbmZvKCJzdGFydGluZyBiYWNrZ3JvdW5kIFdBTCByZWNlaXZlciIpOwogCQlTdGFy dExvZ1N0cmVhbWVyKHhsb2dzdGFydCwgc3RhcnR0bGksIHN5c2lkZW50aWZpZXIpOwogCX0K IApAQCAtMjAyNSwyMSArMTk1NSwxOCBAQCBCYXNlQmFja3VwKHZvaWQpCiAJcmVzID0gUFFn ZXRSZXN1bHQoY29ubik7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQ TEVTX09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvdWxkIG5vdCBn ZXQgd3JpdGUtYWhlYWQgbG9nIGVuZCBwb3NpdGlvbiBmcm9tIHNlcnZlcjogJXMiKSwKLQkJ CQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBnZXQgd3JpdGUtYWhlYWQgbG9nIGVuZCBwb3NpdGlvbiBmcm9tIHNlcnZlcjog JXMiLAorCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlleGl0KDEpOwogCX0KIAlp ZiAoUFFudHVwbGVzKHJlcykgIT0gMSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8o IiVzOiBubyB3cml0ZS1haGVhZCBsb2cgZW5kIHBvc2l0aW9uIHJldHVybmVkIGZyb20gc2Vy dmVyXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigibm8gd3JpdGUtYWhl YWQgbG9nIGVuZCBwb3NpdGlvbiByZXR1cm5lZCBmcm9tIHNlcnZlciIpOwogCQlleGl0KDEp OwogCX0KIAlzdHJsY3B5KHhsb2dlbmQsIFBRZ2V0dmFsdWUocmVzLCAwLCAwKSwgc2l6ZW9m KHhsb2dlbmQpKTsKIAlpZiAodmVyYm9zZSAmJiBpbmNsdWRld2FsICE9IE5PX1dBTCkKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiB3cml0ZS1haGVhZCBsb2cgZW5kIHBvaW50OiAlc1xu IiksIHByb2duYW1lLCB4bG9nZW5kKTsKKwkJcGdfbG9nX2luZm8oIndyaXRlLWFoZWFkIGxv ZyBlbmQgcG9pbnQ6ICVzIiwgeGxvZ2VuZCk7CiAJUFFjbGVhcihyZXMpOwogCiAJcmVzID0g UFFnZXRSZXN1bHQoY29ubik7CkBAIC0yMDUwLDE0ICsxOTc3LDEzIEBAIEJhc2VCYWNrdXAo dm9pZCkKIAkJaWYgKHNxbHN0YXRlICYmCiAJCQlzdHJjbXAoc3Fsc3RhdGUsIEVSUkNPREVf REFUQV9DT1JSVVBURUQpID09IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y2hlY2tzdW0gZXJyb3Igb2NjdXJyZWRcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19s b2dfZXJyb3IoImNoZWNrc3VtIGVycm9yIG9jY3VycmVkIik7CiAJCQljaGVja3N1bV9mYWls dXJlID0gdHJ1ZTsKIAkJfQogCQllbHNlCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIl czogZmluYWwgcmVjZWl2ZSBmYWlsZWQ6ICVzIiksCi0JCQkJCXByb2duYW1lLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoImZpbmFsIHJlY2VpdmUgZmFpbGVk OiAlcyIsCisJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQl9CiAJCWV4aXQoMSk7 CiAJfQpAQCAtMjA4MCwxNSArMjAwNiwxMiBAQCBCYXNlQmFja3VwKHZvaWQpCiAjZW5kaWYK IAogCQlpZiAodmVyYm9zZSkKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogd2Fp dGluZyBmb3IgYmFja2dyb3VuZCBwcm9jZXNzIHRvIGZpbmlzaCBzdHJlYW1pbmcgLi4uXG4i KSwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2luZm8oIndhaXRpbmcgZm9yIGJhY2tncm91bmQg cHJvY2VzcyB0byBmaW5pc2ggc3RyZWFtaW5nIC4uLiIpOwogCiAjaWZuZGVmIFdJTjMyCiAJ CWlmICh3cml0ZShiZ3BpcGVbMV0sIHhsb2dlbmQsIHN0cmxlbih4bG9nZW5kKSkgIT0gc3Ry bGVuKHhsb2dlbmQpKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGNv dWxkIG5vdCBzZW5kIGNvbW1hbmQgdG8gYmFja2dyb3VuZCBwaXBlOiAlc1xuIiksCi0JCQkJ CXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2luZm8oImNvdWxkIG5v dCBzZW5kIGNvbW1hbmQgdG8gYmFja2dyb3VuZCBwaXBlOiAlbSIpOwogCQkJZXhpdCgxKTsK IAkJfQogCkBAIC0yMDk2LDIwICsyMDE5LDE3IEBAIEJhc2VCYWNrdXAodm9pZCkKIAkJciA9 IHdhaXRwaWQoYmdjaGlsZCwgJnN0YXR1cywgMCk7CiAJCWlmIChyID09IChwaWRfdCkgLTEp CiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHdhaXQgZm9yIGNo aWxkIHByb2Nlc3M6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7 CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3YWl0IGZvciBjaGlsZCBwcm9jZXNzOiAl bSIpOwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAociAhPSBiZ2NoaWxkKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNoaWxkICVkIGRpZWQsIGV4cGVjdGVkICVkXG4iKSwK LQkJCQkJcHJvZ25hbWUsIChpbnQpIHIsIChpbnQpIGJnY2hpbGQpOworCQkJcGdfbG9nX2Vy cm9yKCJjaGlsZCAlZCBkaWVkLCBleHBlY3RlZCAlZCIsIChpbnQpIHIsIChpbnQpIGJnY2hp bGQpOwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAoc3RhdHVzICE9IDApCiAJCXsKLQkJCWZw cmludGYoc3RkZXJyLCAiJXM6ICVzXG4iLAotCQkJCQlwcm9nbmFtZSwgd2FpdF9yZXN1bHRf dG9fc3RyKHN0YXR1cykpOworCQkJcGdfbG9nX2Vycm9yKCIlcyIsIHdhaXRfcmVzdWx0X3Rv X3N0cihzdGF0dXMpKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJLyogRXhpdGVkIG5vcm1hbGx5 LCB3ZSdyZSBoYXBweSEgKi8KQEAgLTIxMjIsOSArMjA0Miw4IEBAIEJhc2VCYWNrdXAodm9p ZCkKIAkJICovCiAJCWlmIChzc2NhbmYoeGxvZ2VuZCwgIiVYLyVYIiwgJmhpLCAmbG8pICE9 IDIpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY291bGQgbm90IHBh cnNlIHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFt ZSwgeGxvZ2VuZCk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSB3cml0ZS1h aGVhZCBsb2cgbG9jYXRpb24gXCIlc1wiIiwKKwkJCQkJCSB4bG9nZW5kKTsKIAkJCWV4aXQo MSk7CiAJCX0KIAkJeGxvZ2VuZHB0ciA9ICgodWludDY0KSBoaSkgPDwgMzIgfCBsbzsKQEAg LTIxMzUsMjEgKzIwNTQsMTkgQEAgQmFzZUJhY2t1cCh2b2lkKQogCQkJV0FJVF9PQkpFQ1Rf MCkKIAkJewogCQkJX2Rvc21hcGVycihHZXRMYXN0RXJyb3IoKSk7Ci0JCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCB3YWl0IGZvciBjaGlsZCB0aHJlYWQ6ICVzXG4iKSwK LQkJCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCB3YWl0IGZvciBjaGlsZCB0aHJlYWQ6ICVtIik7CiAJCQlleGl0KDEpOwogCQl9 CiAJCWlmIChHZXRFeGl0Q29kZVRocmVhZCgoSEFORExFKSBiZ2NoaWxkX2hhbmRsZSwgJnN0 YXR1cykgPT0gMCkKIAkJewogCQkJX2Rvc21hcGVycihHZXRMYXN0RXJyb3IoKSk7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBnZXQgY2hpbGQgdGhyZWFkIGV4aXQg c3RhdHVzOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0IGNoaWxkIHRocmVhZCBleGl0IHN0YXR1czog JW0iKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJaWYgKHN0YXR1cyAhPSAwKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNoaWxkIHRocmVhZCBleGl0ZWQgd2l0aCBlcnJvciAl dVxuIiksCi0JCQkJCXByb2duYW1lLCAodW5zaWduZWQgaW50KSBzdGF0dXMpOworCQkJcGdf bG9nX2Vycm9yKCJjaGlsZCB0aHJlYWQgZXhpdGVkIHdpdGggZXJyb3IgJXUiLAorCQkJCQkJ ICh1bnNpZ25lZCBpbnQpIHN0YXR1cyk7CiAJCQlleGl0KDEpOwogCQl9CiAJCS8qIEV4aXRl ZCBub3JtYWxseSwgd2UncmUgaGFwcHkgKi8KQEAgLTIxNzYsMjEgKzIwOTMsMjAgQEAgQmFz ZUJhY2t1cCh2b2lkKQogCWlmIChkb19zeW5jKQogCXsKIAkJaWYgKHZlcmJvc2UpCi0JCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IHN5bmNpbmcgZGF0YSB0byBkaXNrIC4uLlxu IiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19pbmZvKCJzeW5jaW5nIGRhdGEgdG8gZGlzayAu Li4iKTsKIAkJaWYgKGZvcm1hdCA9PSAndCcpCiAJCXsKIAkJCWlmIChzdHJjbXAoYmFzZWRp ciwgIi0iKSAhPSAwKQotCQkJCSh2b2lkKSBmc3luY19mbmFtZShiYXNlZGlyLCB0cnVlLCBw cm9nbmFtZSk7CisJCQkJKHZvaWQpIGZzeW5jX2ZuYW1lKGJhc2VkaXIsIHRydWUpOwogCQl9 CiAJCWVsc2UKIAkJewotCQkJKHZvaWQpIGZzeW5jX3BnZGF0YShiYXNlZGlyLCBwcm9nbmFt ZSwgc2VydmVyVmVyc2lvbik7CisJCQkodm9pZCkgZnN5bmNfcGdkYXRhKGJhc2VkaXIsIHNl cnZlclZlcnNpb24pOwogCQl9CiAJfQogCiAJaWYgKHZlcmJvc2UpCi0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogYmFzZSBiYWNrdXAgY29tcGxldGVkXG4iKSwgcHJvZ25hbWUpOworCQlw Z19sb2dfaW5mbygiYmFzZSBiYWNrdXAgY29tcGxldGVkIik7CiB9CiAKIApAQCAtMjIzNCw2 ICsyMTUwLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlwcm9nbmFtZSA9 IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3Zb MF0sIFBHX1RFWFRET01BSU4oInBnX2Jhc2ViYWNrdXAiKSk7CisJcGdfbG9nZ2luZ19pbml0 KGFyZ3ZbMF0pOwogCiAJaWYgKGFyZ2MgPiAxKQogCXsKQEAgLTIyNzAsOSArMjE4Nyw4IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCQlmb3JtYXQgPSAndCc7CiAJCQkJ ZWxzZQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJXygiJXM6IGludmFs aWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIsIG11c3QgYmUgXCJwbGFpblwiIG9yIFwidGFyXCJc biIpLAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImlu dmFsaWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIsIG11c3QgYmUgXCJwbGFpblwiIG9yIFwidGFy XCJcbiIsCisJCQkJCQkJCSBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQli cmVhazsKQEAgLTIzMTUsOSArMjIzMSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCQkJCX0KIAkJCQllbHNlCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJ CQlfKCIlczogaW52YWxpZCB3YWwtbWV0aG9kIG9wdGlvbiBcIiVzXCIsIG11c3QgYmUgXCJm ZXRjaFwiLCBcInN0cmVhbVwiLCBvciBcIm5vbmVcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUs IG9wdGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCB3YWwtbWV0aG9kIG9wdGlv biBcIiVzXCIsIG11c3QgYmUgXCJmZXRjaFwiLCBcInN0cmVhbVwiLCBvciBcIm5vbmVcIiIs CisJCQkJCQkJCSBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsK QEAgLTIzNDQsOCArMjI1OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJ CWNvbXByZXNzbGV2ZWwgPSBhdG9pKG9wdGFyZyk7CiAJCQkJaWYgKGNvbXByZXNzbGV2ZWwg PCAwIHx8IGNvbXByZXNzbGV2ZWwgPiA5KQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsIFwiJXNcIlxuIiksCi0JCQkJCQkJ cHJvZ25hbWUsIG9wdGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBjb21wcmVz c2lvbiBsZXZlbCBcIiVzXCJcbiIsIG9wdGFyZyk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQog CQkJCWJyZWFrOwpAQCAtMjM1Niw4ICsyMjcwLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJCQkJCWZhc3RjaGVja3BvaW50ID0gZmFsc2U7CiAJCQkJZWxzZQogCQkJCXsK LQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGNoZWNrcG9pbnQgYXJndW1l bnQgXCIlc1wiLCBtdXN0IGJlIFwiZmFzdFwiIG9yIFwic3ByZWFkXCJcbiIpLAotCQkJCQkJ CXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgY2hlY2tw b2ludCBhcmd1bWVudCBcIiVzXCIsIG11c3QgYmUgXCJmYXN0XCIgb3IgXCJzcHJlYWRcIiIs CisJCQkJCQkJCSBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsK QEAgLTIzODMsOCArMjI5Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJ CXN0YW5kYnlfbWVzc2FnZV90aW1lb3V0ID0gYXRvaShvcHRhcmcpICogMTAwMDsKIAkJCQlp ZiAoc3RhbmRieV9tZXNzYWdlX3RpbWVvdXQgPCAwKQogCQkJCXsKLQkJCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBpbnZhbGlkIHN0YXR1cyBpbnRlcnZhbCBcIiVzXCJcbiIpLAotCQkJ CQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgc3Rh dHVzIGludGVydmFsIFwiJXNcIiIsIG9wdGFyZyk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQog CQkJCWJyZWFrOwpAQCAtMjQxMyw5ICsyMzI2LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJICovCiAJaWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQlfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3Qg aXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBnX2xv Z19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIl c1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5 IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFt ZSk7CiAJCWV4aXQoMSk7CkBAIC0yNDI2LDcgKzIzMzgsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkgKi8KIAlpZiAoYmFzZWRpciA9PSBOVUxMKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBubyB0YXJnZXQgZGlyZWN0b3J5IHNwZWNpZmllZFxuIiksIHBy b2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJubyB0YXJnZXQgZGlyZWN0b3J5IHNwZWNpZmll ZCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUg aW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC0yNDM3 LDkgKzIzNDksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgKi8KIAlpZiAo Zm9ybWF0ID09ICdwJyAmJiBjb21wcmVzc2xldmVsICE9IDApCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwKLQkJCQlfKCIlczogb25seSB0YXIgbW9kZSBiYWNrdXBzIGNhbiBiZSBjb21wcmVz c2VkXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigib25seSB0YXIgbW9k ZSBiYWNrdXBzIGNhbiBiZSBjb21wcmVzc2VkIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJU cnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2du YW1lKTsKIAkJZXhpdCgxKTsKQEAgLTI0NDcsOSArMjM1Nyw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCiAJaWYgKGZvcm1hdCA9PSAndCcgJiYgaW5jbHVkZXdhbCA9PSBT VFJFQU1fV0FMICYmIHN0cmNtcChiYXNlZGlyLCAiLSIpID09IDApCiAJewotCQlmcHJpbnRm KHN0ZGVyciwKLQkJCQlfKCIlczogY2Fubm90IHN0cmVhbSB3cml0ZS1haGVhZCBsb2dzIGlu IHRhciBtb2RlIHRvIHN0ZG91dFxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJy b3IoImNhbm5vdCBzdHJlYW0gd3JpdGUtYWhlYWQgbG9ncyBpbiB0YXIgbW9kZSB0byBzdGRv dXQiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3Jl IGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtMjQ1 Nyw5ICsyMzY1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAocmVw bGljYXRpb25fc2xvdCAmJiBpbmNsdWRld2FsICE9IFNUUkVBTV9XQUwpCiAJewotCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQlfKCIlczogcmVwbGljYXRpb24gc2xvdHMgY2FuIG9ubHkgYmUg dXNlZCB3aXRoIFdBTCBzdHJlYW1pbmdcbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9n X2Vycm9yKCJyZXBsaWNhdGlvbiBzbG90cyBjYW4gb25seSBiZSB1c2VkIHdpdGggV0FMIHN0 cmVhbWluZyIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9y IG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBA IC0yNDY5LDkgKzIzNzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl7CiAJ CWlmIChyZXBsaWNhdGlvbl9zbG90KQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJ XygiJXM6IC0tbm8tc2xvdCBjYW5ub3QgYmUgdXNlZCB3aXRoIHNsb3QgbmFtZVxuIiksCi0J CQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiLS1uby1zbG90IGNhbm5vdCBiZSB1 c2VkIHdpdGggc2xvdCBuYW1lIik7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMg LS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQkJcHJvZ25hbWUpOwog CQkJZXhpdCgxKTsKQEAgLTI0ODMsOSArMjM4Nyw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCXsKIAkJaWYgKCFyZXBsaWNhdGlvbl9zbG90KQogCQl7Ci0JCQlmcHJpbnRm KHN0ZGVyciwKLQkJCQkJXygiJXM6ICVzIG5lZWRzIGEgc2xvdCB0byBiZSBzcGVjaWZpZWQg dXNpbmcgLS1zbG90XG4iKSwKLQkJCQkJcHJvZ25hbWUsICItLWNyZWF0ZS1zbG90Iik7CisJ CQlwZ19sb2dfZXJyb3IoIiVzIG5lZWRzIGEgc2xvdCB0byBiZSBzcGVjaWZpZWQgdXNpbmcg LS1zbG90IiwKKwkJCQkJCSAiLS1jcmVhdGUtc2xvdCIpOwogCQkJZnByaW50ZihzdGRlcnIs IF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJ CXByb2duYW1lKTsKIAkJCWV4aXQoMSk7CkBAIC0yNDkzLDkgKzIzOTYsNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAogCQlpZiAobm9fc2xvdCkKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiAtLWNyZWF0ZS1zbG90IGFuZCAtLW5vLXNsb3QgYXJl IGluY29tcGF0aWJsZSBvcHRpb25zXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9n X2Vycm9yKCItLWNyZWF0ZS1zbG90IGFuZCAtLW5vLXNsb3QgYXJlIGluY29tcGF0aWJsZSBv cHRpb25zIik7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9y IG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQkJcHJvZ25hbWUpOwogCQkJZXhpdCgxKTsK QEAgLTI1MDYsOSArMjQwNyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXsK IAkJaWYgKGZvcm1hdCAhPSAncCcpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlf KCIlczogV0FMIGRpcmVjdG9yeSBsb2NhdGlvbiBjYW4gb25seSBiZSBzcGVjaWZpZWQgaW4g cGxhaW4gbW9kZVxuIiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiV0FM IGRpcmVjdG9yeSBsb2NhdGlvbiBjYW4gb25seSBiZSBzcGVjaWZpZWQgaW4gcGxhaW4gbW9k ZSIpOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3Jl IGluZm9ybWF0aW9uLlxuIiksCiAJCQkJCXByb2duYW1lKTsKIAkJCWV4aXQoMSk7CkBAIC0y NTE4LDggKzI0MTcsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJY2Fub25p Y2FsaXplX3BhdGgoeGxvZ19kaXIpOwogCQlpZiAoIWlzX2Fic29sdXRlX3BhdGgoeGxvZ19k aXIpKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IFdBTCBkaXJlY3RvcnkgbG9j YXRpb24gbXVzdCBiZSAiCi0JCQkJCQkJICAiYW4gYWJzb2x1dGUgcGF0aFxuIiksIHByb2du YW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiV0FMIGRpcmVjdG9yeSBsb2NhdGlvbiBtdXN0IGJl IGFuIGFic29sdXRlIHBhdGgiKTsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAt LWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCQlwcm9nbmFtZSk7CiAJ CQlleGl0KDEpOwpAQCAtMjUyOSw5ICsyNDI3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAjaWZuZGVmIEhBVkVfTElCWgogCWlmIChjb21wcmVzc2xldmVsICE9IDApCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogdGhpcyBidWlsZCBkb2VzIG5vdCBz dXBwb3J0IGNvbXByZXNzaW9uXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJv cigidGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IGNvbXByZXNzaW9uIik7CiAJCWV4aXQo MSk7CiAJfQogI2VuZGlmCkBAIC0yNTg1LDEyICsyNDgxLDExIEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogI2lmZGVmIEhBVkVfU1lNTElOSwogCQlpZiAoc3ltbGluayh4bG9n X2RpciwgbGlua2xvYykgIT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXBy b2duYW1lLCBsaW5rbG9jLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsgXCIlc1wiOiAlbSIsIGxpbmtsb2MpOwog CQkJZXhpdCgxKTsKIAkJfQogI2Vsc2UKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzeW1s aW5rcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtXG4iKSwgcHJvZ25hbWUp OworCQlwZ19sb2dfZXJyb3IoInN5bWxpbmtzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg cGxhdGZvcm0iKTsKIAkJZXhpdCgxKTsKICNlbmRpZgogCQlmcmVlKGxpbmtsb2MpOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX3JlY2VpdmV3YWwuYyBiL3NyYy9i aW4vcGdfYmFzZWJhY2t1cC9wZ19yZWNlaXZld2FsLmMKaW5kZXggZGM2NzA1YzMzMC4uMGM5 ZDZiMmE4YSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX3JlY2VpdmV3 YWwuYworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfcmVjZWl2ZXdhbC5jCkBAIC0y MCw2ICsyMCw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJjb21tb24v ZmlsZV9wZXJtLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUg ImxpYnBxLWZlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNs dWRlICJnZXRvcHRfbG9uZy5oIgpAQCAtMTE0LDE2ICsxMTUsMTYgQEAgc3RvcF9zdHJlYW1p bmcoWExvZ1JlY1B0ciB4bG9ncG9zLCB1aW50MzIgdGltZWxpbmUsIGJvb2wgc2VnbWVudF9m aW5pc2hlZCkKIAogCS8qIHdlIGFzc3VtZSB0aGF0IHdlIGdldCBjYWxsZWQgb25jZSBhdCB0 aGUgZW5kIG9mIGVhY2ggc2VnbWVudCAqLwogCWlmICh2ZXJib3NlICYmIHNlZ21lbnRfZmlu aXNoZWQpCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogZmluaXNoZWQgc2VnbWVudCBhdCAl WC8lWCAodGltZWxpbmUgJXUpXG4iKSwKLQkJCQlwcm9nbmFtZSwgKHVpbnQzMikgKHhsb2dw b3MgPj4gMzIpLCAodWludDMyKSB4bG9ncG9zLAotCQkJCXRpbWVsaW5lKTsKKwkJcGdfbG9n X2luZm8oImZpbmlzaGVkIHNlZ21lbnQgYXQgJVgvJVggKHRpbWVsaW5lICV1KSIsCisJCQkJ CSh1aW50MzIpICh4bG9ncG9zID4+IDMyKSwgKHVpbnQzMikgeGxvZ3BvcywKKwkJCQkJdGlt ZWxpbmUpOwogCiAJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKGVuZHBvcykgJiYgZW5kcG9z IDwgeGxvZ3BvcykKIAl7CiAJCWlmICh2ZXJib3NlKQotCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBzdG9wcGVkIGxvZyBzdHJlYW1pbmcgYXQgJVgvJVggKHRpbWVsaW5lICV1KVxuIiks Ci0JCQkJCXByb2duYW1lLCAodWludDMyKSAoeGxvZ3BvcyA+PiAzMiksICh1aW50MzIpIHhs b2dwb3MsCi0JCQkJCXRpbWVsaW5lKTsKKwkJCXBnX2xvZ19pbmZvKCJzdG9wcGVkIGxvZyBz dHJlYW1pbmcgYXQgJVgvJVggKHRpbWVsaW5lICV1KSIsCisJCQkJCQkodWludDMyKSAoeGxv Z3BvcyA+PiAzMiksICh1aW50MzIpIHhsb2dwb3MsCisJCQkJCQl0aW1lbGluZSk7CiAJCXRp bWVfdG9fc3RvcCA9IHRydWU7CiAJCXJldHVybiB0cnVlOwogCX0KQEAgLTEzNyw5ICsxMzgs OSBAQCBzdG9wX3N0cmVhbWluZyhYTG9nUmVjUHRyIHhsb2dwb3MsIHVpbnQzMiB0aW1lbGlu ZSwgYm9vbCBzZWdtZW50X2ZpbmlzaGVkKQogCSAqIHRpbWVsaW5lLCBidXQgaXQncyBjbG9z ZSBlbm91Z2ggZm9yIHJlcG9ydGluZyBwdXJwb3Nlcy4KIAkgKi8KIAlpZiAodmVyYm9zZSAm JiBwcmV2dGltZWxpbmUgIT0gMCAmJiBwcmV2dGltZWxpbmUgIT0gdGltZWxpbmUpCi0JCWZw cmludGYoc3RkZXJyLCBfKCIlczogc3dpdGNoZWQgdG8gdGltZWxpbmUgJXUgYXQgJVgvJVhc biIpLAotCQkJCXByb2duYW1lLCB0aW1lbGluZSwKLQkJCQkodWludDMyKSAocHJldnBvcyA+ PiAzMiksICh1aW50MzIpIHByZXZwb3MpOworCQlwZ19sb2dfaW5mbygic3dpdGNoZWQgdG8g dGltZWxpbmUgJXUgYXQgJVgvJVgiLAorCQkJCQl0aW1lbGluZSwKKwkJCQkJKHVpbnQzMikg KHByZXZwb3MgPj4gMzIpLCAodWludDMyKSBwcmV2cG9zKTsKIAogCXByZXZ0aW1lbGluZSA9 IHRpbWVsaW5lOwogCXByZXZwb3MgPSB4bG9ncG9zOwpAQCAtMTQ3LDggKzE0OCw3IEBAIHN0 b3Bfc3RyZWFtaW5nKFhMb2dSZWNQdHIgeGxvZ3BvcywgdWludDMyIHRpbWVsaW5lLCBib29s IHNlZ21lbnRfZmluaXNoZWQpCiAJaWYgKHRpbWVfdG9fc3RvcCkKIAl7CiAJCWlmICh2ZXJi b3NlKQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiByZWNlaXZlZCBpbnRlcnJ1cHQgc2ln bmFsLCBleGl0aW5nXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2luZm8oInJl Y2VpdmVkIGludGVycnVwdCBzaWduYWwsIGV4aXRpbmciKTsKIAkJcmV0dXJuIHRydWU7CiAJ fQogCXJldHVybiBmYWxzZTsKQEAgLTE2Nyw4ICsxNjcsNyBAQCBnZXRfZGVzdGluYXRpb25f ZGlyKGNoYXIgKmRlc3RfZm9sZGVyKQogCWRpciA9IG9wZW5kaXIoZGVzdF9mb2xkZXIpOwog CWlmIChkaXIgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBiYXNl ZGlyLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVu IGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgYmFzZWRpcik7CiAJCWV4aXQoMSk7CiAJfQogCkBA IC0xODUsOCArMTg0LDcgQEAgY2xvc2VfZGVzdGluYXRpb25fZGlyKERJUiAqZGVzdF9kaXIs IGNoYXIgKmRlc3RfZm9sZGVyKQogCUFzc2VydChkZXN0X2RpciAhPSBOVUxMICYmIGRlc3Rf Zm9sZGVyICE9IE5VTEwpOwogCWlmIChjbG9zZWRpcihkZXN0X2RpcikpCiAJewotCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAl c1xuIiksCi0JCQkJcHJvZ25hbWUsIGRlc3RfZm9sZGVyLCBzdHJlcnJvcihlcnJubykpOwor CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIs IGRlc3RfZm9sZGVyKTsKIAkJZXhpdCgxKTsKIAl9CiB9CkBAIC0yNjYsMTYgKzI2NCwxNCBA QCBGaW5kU3RyZWFtaW5nU3RhcnQodWludDMyICp0bGkpCiAJCQlzbnByaW50ZihmdWxscGF0 aCwgc2l6ZW9mKGZ1bGxwYXRoKSwgIiVzLyVzIiwgYmFzZWRpciwgZGlyZW50LT5kX25hbWUp OwogCQkJaWYgKHN0YXQoZnVsbHBhdGgsICZzdGF0YnVmKSAhPSAwKQogCQkJewotCQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVzXG4i KSwKLQkJCQkJCXByb2duYW1lLCBmdWxscGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlbSIsIGZ1bGxwYXRo KTsKIAkJCQlleGl0KDEpOwogCQkJfQogCiAJCQlpZiAoc3RhdGJ1Zi5zdF9zaXplICE9IFdh bFNlZ1N6KQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IHNlZ21l bnQgZmlsZSBcIiVzXCIgaGFzIGluY29ycmVjdCBzaXplICVkLCBza2lwcGluZ1xuIiksCi0J CQkJCQlwcm9nbmFtZSwgZGlyZW50LT5kX25hbWUsIChpbnQpIHN0YXRidWYuc3Rfc2l6ZSk7 CisJCQkJcGdfbG9nX3dhcm5pbmcoInNlZ21lbnQgZmlsZSBcIiVzXCIgaGFzIGluY29ycmVj dCBzaXplICVkLCBza2lwcGluZyIsCisJCQkJCQkJICAgZGlyZW50LT5kX25hbWUsIChpbnQp IHN0YXRidWYuc3Rfc2l6ZSk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAgLTI5Miwy NSArMjg4LDI1IEBAIEZpbmRTdHJlYW1pbmdTdGFydCh1aW50MzIgKnRsaSkKIAkJCWZkID0g b3BlbihmdWxscGF0aCwgT19SRE9OTFkgfCBQR19CSU5BUlksIDApOwogCQkJaWYgKGZkIDwg MCkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGNv bXByZXNzZWQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBmdWxscGF0 aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVu IGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkgZnVsbHBhdGgpOwogCQkJ CWV4aXQoMSk7CiAJCQl9CiAJCQlpZiAobHNlZWsoZmQsIChvZmZfdCkgKC00KSwgU0VFS19F TkQpIDwgMCkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBz ZWVrIGluIGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1l LCBmdWxscGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBzZWVrIGluIGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkgZnVs bHBhdGgpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQlyID0gcmVhZChmZCwgKGNoYXIgKikg YnVmLCBzaXplb2YoYnVmKSk7CiAJCQlpZiAociAhPSBzaXplb2YoYnVmKSkKIAkJCXsKIAkJ CQlpZiAociA8IDApCi0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJl YWQgY29tcHJlc3NlZCBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJCXByb2duYW1lLCBm dWxscGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgcmVhZCBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJCSBmdWxscGF0 aCk7CiAJCQkJZWxzZQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBy ZWFkIGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6IHJlYWQgJWQgb2YgJXp1XG4iKSwKLQkJCQkJ CQlwcm9nbmFtZSwgZnVsbHBhdGgsIHIsIHNpemVvZihidWYpKTsKKwkJCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgcmVhZCBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiByZWFkICVkIG9m ICV6dSIsCisJCQkJCQkJCSBmdWxscGF0aCwgciwgc2l6ZW9mKGJ1ZikpOwogCQkJCWV4aXQo MSk7CiAJCQl9CiAKQEAgLTMyMCw5ICszMTYsOCBAQCBGaW5kU3RyZWFtaW5nU3RhcnQodWlu dDMyICp0bGkpCiAKIAkJCWlmIChieXRlc19vdXQgIT0gV2FsU2VnU3opCiAJCQl7Ci0JCQkJ ZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogY29tcHJlc3NlZCBzZWdtZW50IGZpbGUg XCIlc1wiIGhhcyBpbmNvcnJlY3QgdW5jb21wcmVzc2VkIHNpemUgJWQsIHNraXBwaW5nXG4i KSwKLQkJCQkJCXByb2duYW1lLCBkaXJlbnQtPmRfbmFtZSwgYnl0ZXNfb3V0KTsKKwkJCQlw Z19sb2dfd2FybmluZygiY29tcHJlc3NlZCBzZWdtZW50IGZpbGUgXCIlc1wiIGhhcyBpbmNv cnJlY3QgdW5jb21wcmVzc2VkIHNpemUgJWQsIHNraXBwaW5nIiwKKwkJCQkJCQkgICBkaXJl bnQtPmRfbmFtZSwgYnl0ZXNfb3V0KTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQpAQCAt MzQwLDggKzMzNSw3IEBAIEZpbmRTdHJlYW1pbmdTdGFydCh1aW50MzIgKnRsaSkKIAogCWlm IChlcnJubykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQg ZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBiYXNlZGlyLCBzdHJl cnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIGRpcmVjdG9y eSBcIiVzXCI6ICVtIiwgYmFzZWRpcik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC00MjYsMTAg KzQyMCw5IEBAIFN0cmVhbUxvZyh2b2lkKQogCSAqIFN0YXJ0IHRoZSByZXBsaWNhdGlvbgog CSAqLwogCWlmICh2ZXJib3NlKQotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogc3Rh cnRpbmcgbG9nIHN0cmVhbWluZyBhdCAlWC8lWCAodGltZWxpbmUgJXUpXG4iKSwKLQkJCQlw cm9nbmFtZSwgKHVpbnQzMikgKHN0cmVhbS5zdGFydHBvcyA+PiAzMiksICh1aW50MzIpIHN0 cmVhbS5zdGFydHBvcywKLQkJCQlzdHJlYW0udGltZWxpbmUpOworCQlwZ19sb2dfaW5mbygi c3RhcnRpbmcgbG9nIHN0cmVhbWluZyBhdCAlWC8lWCAodGltZWxpbmUgJXUpIiwKKwkJCQkJ KHVpbnQzMikgKHN0cmVhbS5zdGFydHBvcyA+PiAzMiksICh1aW50MzIpIHN0cmVhbS5zdGFy dHBvcywKKwkJCQkJc3RyZWFtLnRpbWVsaW5lKTsKIAogCXN0cmVhbS5zdHJlYW1fc3RvcCA9 IHN0b3Bfc3RyZWFtaW5nOwogCXN0cmVhbS5zdG9wX3NvY2tldCA9IFBHSU5WQUxJRF9TT0NL RVQ7CkBAIC00NDYsOSArNDM5LDcgQEAgU3RyZWFtTG9nKHZvaWQpCiAKIAlpZiAoIXN0cmVh bS53YWxtZXRob2QtPmZpbmlzaCgpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygi JXM6IGNvdWxkIG5vdCBmaW5pc2ggd3JpdGluZyBXQUwgZmlsZXM6ICVzXG4iKSwKLQkJCQlw cm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2luZm8oImNvdWxkIG5vdCBm aW5pc2ggd3JpdGluZyBXQUwgZmlsZXM6ICVtIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTUx MCw2ICs1MDEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCXByb2duYW1l ID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJn dlswXSwgUEdfVEVYVERPTUFJTigicGdfYmFzZWJhY2t1cCIpKTsKKwlwZ19sb2dnaW5nX2lu aXQoYXJndlswXSk7CiAKIAlpZiAoYXJnYyA+IDEpCiAJewpAQCAtNTQzLDggKzUzNSw3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAncCc6CiAJCQkJaWYgKGF0 b2kob3B0YXJnKSA8PSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBp bnZhbGlkIHBvcnQgbnVtYmVyIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFy Zyk7CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBwb3J0IG51bWJlciBcIiVzXCIiLCBv cHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlkYnBvcnQgPSBwZ19zdHJkdXAo b3B0YXJnKTsKQEAgLTU2Miw4ICs1NTMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkJCQlzdGFuZGJ5X21lc3NhZ2VfdGltZW91dCA9IGF0b2kob3B0YXJnKSAqIDEwMDA7 CiAJCQkJaWYgKHN0YW5kYnlfbWVzc2FnZV90aW1lb3V0IDwgMCkKIAkJCQl7Ci0JCQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBzdGF0dXMgaW50ZXJ2YWwgXCIlc1wiXG4i KSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZh bGlkIHN0YXR1cyBpbnRlcnZhbCBcIiVzXCIiLCBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwog CQkJCX0KIAkJCQlicmVhazsKQEAgLTU3Myw5ICs1NjMsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJCWNhc2UgJ0UnOgogCQkJCWlmIChzc2NhbmYob3B0YXJnLCAiJVgv JVgiLCAmaGksICZsbykgIT0gMikKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJ CQkJCV8oIiVzOiBjb3VsZCBub3QgcGFyc2UgZW5kIHBvc2l0aW9uIFwiJXNcIlxuIiksCi0J CQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90 IHBhcnNlIGVuZCBwb3NpdGlvbiBcIiVzXCIiLCBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwog CQkJCX0KIAkJCQllbmRwb3MgPSAoKHVpbnQ2NCkgaGkpIDw8IDMyIHwgbG87CkBAIC01OTAs OCArNTc4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJY29tcHJlc3Ns ZXZlbCA9IGF0b2kob3B0YXJnKTsKIAkJCQlpZiAoY29tcHJlc3NsZXZlbCA8IDAgfHwgY29t cHJlc3NsZXZlbCA+IDkpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGlu dmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwg b3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVs IFwiJXNcIiIsIG9wdGFyZyk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpA QCAtNjI3LDkgKzYxNCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwog CWlmIChvcHRpbmQgPCBhcmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6 IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIilcbiIp LAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2dfZXJyb3IoInRvbyBt YW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkg YXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwi IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEp OwpAQCAtNjM3LDcgKzYyMyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJ aWYgKGRvX2Ryb3Bfc2xvdCAmJiBkb19jcmVhdGVfc2xvdCkKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY2Fubm90IHVzZSAtLWNyZWF0ZS1zbG90IHRvZ2V0aGVyIHdpdGggLS1k cm9wLXNsb3RcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigiY2Fubm90IHVzZSAt LWNyZWF0ZS1zbG90IHRvZ2V0aGVyIHdpdGggLS1kcm9wLXNsb3QiKTsKIAkJZnByaW50Zihz dGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiks CiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtNjQ2LDggKzYzMiw4IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChyZXBsaWNhdGlvbl9zbG90ID09IE5VTEwg JiYgKGRvX2Ryb3Bfc2xvdCB8fCBkb19jcmVhdGVfc2xvdCkpCiAJewogCQkvKiB0cmFuc2xh dG9yOiBzZWNvbmQgJXMgaXMgYW4gb3B0aW9uIG5hbWUgKi8KLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiAlcyBuZWVkcyBhIHNsb3QgdG8gYmUgc3BlY2lmaWVkIHVzaW5nIC0tc2xvdFxu IiksIHByb2duYW1lLAotCQkJCWRvX2Ryb3Bfc2xvdCA/ICItLWRyb3Atc2xvdCIgOiAiLS1j cmVhdGUtc2xvdCIpOworCQlwZ19sb2dfZXJyb3IoIiVzIG5lZWRzIGEgc2xvdCB0byBiZSBz cGVjaWZpZWQgdXNpbmcgLS1zbG90IiwKKwkJCQkJIGRvX2Ryb3Bfc2xvdCA/ICItLWRyb3At c2xvdCIgOiAiLS1jcmVhdGUtc2xvdCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwi JXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7 CiAJCWV4aXQoMSk7CkBAIC02NTUsNyArNjQxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAKIAlpZiAoc3luY2hyb25vdXMgJiYgIWRvX3N5bmMpCiAJewotCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNhbm5vdCB1c2UgLS1zeW5jaHJvbm91cyB0b2dldGhlciB3aXRo IC0tbm8tc3luY1xuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgdXNl IC0tc3luY2hyb25vdXMgdG9nZXRoZXIgd2l0aCAtLW5vLXN5bmMiKTsKIAkJZnByaW50Zihz dGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiks CiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtNjY2LDcgKzY1Miw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChiYXNlZGlyID09IE5VTEwgJiYg IWRvX2Ryb3Bfc2xvdCAmJiAhZG9fY3JlYXRlX3Nsb3QpCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IG5vIHRhcmdldCBkaXJlY3Rvcnkgc3BlY2lmaWVkXG4iKSwgcHJvZ25hbWUp OworCQlwZ19sb2dfZXJyb3IoIm5vIHRhcmdldCBkaXJlY3Rvcnkgc3BlY2lmaWVkIik7CiAJ CWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1h dGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTY3NSw5ICs2NjEs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICNpZm5kZWYgSEFWRV9MSUJaCiAJ aWYgKGNvbXByZXNzbGV2ZWwgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8o IiVzOiB0aGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgY29tcHJlc3Npb25cbiIpLAotCQkJ CXByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJ0aGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBv cnQgY29tcHJlc3Npb24iKTsKIAkJZXhpdCgxKTsKIAl9CiAjZW5kaWYKQEAgLTczMyw5ICs3 MTcsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgKi8KIAlpZiAoZGJfbmFt ZSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiByZXBsaWNhdGlvbiBjb25u ZWN0aW9uIHVzaW5nIHNsb3QgXCIlc1wiIGlzIHVuZXhwZWN0ZWRseSBkYXRhYmFzZSBzcGVj aWZpY1xuIiksCi0JCQkJcHJvZ25hbWUsIHJlcGxpY2F0aW9uX3Nsb3QpOworCQlwZ19sb2df ZXJyb3IoInJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gdXNpbmcgc2xvdCBcIiVzXCIgaXMgdW5l eHBlY3RlZGx5IGRhdGFiYXNlIHNwZWNpZmljIiwKKwkJCQkJIHJlcGxpY2F0aW9uX3Nsb3Qp OwogCQlleGl0KDEpOwogCX0KIApAQCAtNzQ1LDkgKzcyOCw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCWlmIChkb19kcm9wX3Nsb3QpCiAJewogCQlpZiAodmVyYm9zZSkK LQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogZHJvcHBpbmcgcmVwbGljYXRpb24g c2xvdCBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgcmVwbGljYXRpb25fc2xvdCk7CisJ CQlwZ19sb2dfaW5mbygiZHJvcHBpbmcgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAlyZXBs aWNhdGlvbl9zbG90KTsKIAogCQlpZiAoIURyb3BSZXBsaWNhdGlvblNsb3QoY29ubiwgcmVw bGljYXRpb25fc2xvdCkpCiAJCQlleGl0KDEpOwpAQCAtNzU4LDkgKzczOSw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChkb19jcmVhdGVfc2xvdCkKIAl7CiAJCWlm ICh2ZXJib3NlKQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjcmVhdGluZyBy ZXBsaWNhdGlvbiBzbG90IFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCByZXBsaWNhdGlv bl9zbG90KTsKKwkJCXBnX2xvZ19pbmZvKCJjcmVhdGluZyByZXBsaWNhdGlvbiBzbG90IFwi JXNcIiIsIHJlcGxpY2F0aW9uX3Nsb3QpOwogCiAJCWlmICghQ3JlYXRlUmVwbGljYXRpb25T bG90KGNvbm4sIHJlcGxpY2F0aW9uX3Nsb3QsIE5VTEwsIGZhbHNlLCB0cnVlLCBmYWxzZSwK IAkJCQkJCQkJICAgc2xvdF9leGlzdHNfb2spKQpAQCAtNzg2LDE1ICs3NjUsMTQgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCX0KIAkJZWxzZSBpZiAobm9sb29wKQogCQl7 Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGRpc2Nvbm5lY3RlZFxuIiksIHByb2duYW1l KTsKKwkJCXBnX2xvZ19lcnJvcigiZGlzY29ubmVjdGVkIik7CiAJCQlleGl0KDEpOwogCQl9 CiAJCWVsc2UKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCiAJCQkvKiB0cmFuc2xhdG9yOiBj aGVjayBzb3VyY2UgZm9yIHZhbHVlIGZvciAlZCAqLwotCQkJCQlfKCIlczogZGlzY29ubmVj dGVkOyB3YWl0aW5nICVkIHNlY29uZHMgdG8gdHJ5IGFnYWluXG4iKSwKLQkJCQkJcHJvZ25h bWUsIFJFQ09OTkVDVF9TTEVFUF9USU1FKTsKKwkJCXBnX2xvZ19pbmZvKCJkaXNjb25uZWN0 ZWQ7IHdhaXRpbmcgJWQgc2Vjb25kcyB0byB0cnkgYWdhaW4iLAorCQkJCQkJUkVDT05ORUNU X1NMRUVQX1RJTUUpOwogCQkJcGdfdXNsZWVwKFJFQ09OTkVDVF9TTEVFUF9USU1FICogMTAw MDAwMCk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdf cmVjdmxvZ2ljYWwuYyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19yZWN2bG9naWNhbC5j CmluZGV4IGQ3NWI2NmYxZTcuLjMyNTM0OTc5OTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf YmFzZWJhY2t1cC9wZ19yZWN2bG9naWNhbC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19yZWN2bG9naWNhbC5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNz L3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAjaW5j bHVkZSAiY29tbW9uL2ZlX21lbXV0aWxzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2lu Zy5oIgogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5jbHVkZSAibGlicHEtZmUuaCIK ICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgpAQCAtMTMxLDEyICsxMzIsMTAgQEAgc2Vu ZEZlZWRiYWNrKFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogbm93LCBib29sIGZvcmNlLCBi b29sIHJlcGx5UmVxdWVzdGVkKQogCQlyZXR1cm4gdHJ1ZTsKIAogCWlmICh2ZXJib3NlKQot CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY29uZmlybWluZyB3cml0ZSB1cCB0byAl WC8lWCwgZmx1c2ggdG8gJVgvJVggKHNsb3QgJXMpXG4iKSwKLQkJCQlwcm9nbmFtZSwKLQkJ CQkodWludDMyKSAob3V0cHV0X3dyaXR0ZW5fbHNuID4+IDMyKSwgKHVpbnQzMikgb3V0cHV0 X3dyaXR0ZW5fbHNuLAotCQkJCSh1aW50MzIpIChvdXRwdXRfZnN5bmNfbHNuID4+IDMyKSwg KHVpbnQzMikgb3V0cHV0X2ZzeW5jX2xzbiwKLQkJCQlyZXBsaWNhdGlvbl9zbG90KTsKKwkJ cGdfbG9nX2luZm8oImNvbmZpcm1pbmcgd3JpdGUgdXAgdG8gJVgvJVgsIGZsdXNoIHRvICVY LyVYIChzbG90ICVzKSIsCisJCQkJCSh1aW50MzIpIChvdXRwdXRfd3JpdHRlbl9sc24gPj4g MzIpLCAodWludDMyKSBvdXRwdXRfd3JpdHRlbl9sc24sCisJCQkJCSh1aW50MzIpIChvdXRw dXRfZnN5bmNfbHNuID4+IDMyKSwgKHVpbnQzMikgb3V0cHV0X2ZzeW5jX2xzbiwKKwkJCQkJ cmVwbGljYXRpb25fc2xvdCk7CiAKIAlyZXBseWJ1ZltsZW5dID0gJ3InOwogCWxlbiArPSAx OwpAQCAtMTU3LDggKzE1Niw4IEBAIHNlbmRGZWVkYmFjayhQR2Nvbm4gKmNvbm4sIFRpbWVz dGFtcFR6IG5vdywgYm9vbCBmb3JjZSwgYm9vbCByZXBseVJlcXVlc3RlZCkKIAogCWlmIChQ UXB1dENvcHlEYXRhKGNvbm4sIHJlcGx5YnVmLCBsZW4pIDw9IDAgfHwgUFFmbHVzaChjb25u KSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgZmVlZGJh Y2sgcGFja2V0OiAlcyIpLAotCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7 CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgZmVlZGJhY2sgcGFja2V0OiAlcyIs CisJCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAK QEAgLTE5Myw5ICsxOTIsNyBAQCBPdXRwdXRGc3luYyhUaW1lc3RhbXBUeiBub3cpCiAKIAlp ZiAoZnN5bmMob3V0ZmQpICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIl czogY291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUs IG91dGZpbGUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90 IGZzeW5jIGZpbGUgXCIlc1wiOiAlbSIsIG91dGZpbGUpOwogCQlyZXR1cm4gZmFsc2U7CiAJ fQogCkBAIC0yMzIsMTAgKzIyOSw5IEBAIFN0cmVhbUxvZ2ljYWxMb2codm9pZCkKIAkgKiBT dGFydCB0aGUgcmVwbGljYXRpb24KIAkgKi8KIAlpZiAodmVyYm9zZSkKLQkJZnByaW50Zihz dGRlcnIsCi0JCQkJXygiJXM6IHN0YXJ0aW5nIGxvZyBzdHJlYW1pbmcgYXQgJVgvJVggKHNs b3QgJXMpXG4iKSwKLQkJCQlwcm9nbmFtZSwgKHVpbnQzMikgKHN0YXJ0cG9zID4+IDMyKSwg KHVpbnQzMikgc3RhcnRwb3MsCi0JCQkJcmVwbGljYXRpb25fc2xvdCk7CisJCXBnX2xvZ19p bmZvKCJzdGFydGluZyBsb2cgc3RyZWFtaW5nIGF0ICVYLyVYIChzbG90ICVzKSIsCisJCQkJ CSh1aW50MzIpIChzdGFydHBvcyA+PiAzMiksICh1aW50MzIpIHN0YXJ0cG9zLAorCQkJCQly ZXBsaWNhdGlvbl9zbG90KTsKIAogCS8qIEluaXRpYXRlIHRoZSByZXBsaWNhdGlvbiBzdHJl YW0gYXQgc3BlY2lmaWVkIGxvY2F0aW9uICovCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnks ICJTVEFSVF9SRVBMSUNBVElPTiBTTE9UIFwiJXNcIiBMT0dJQ0FMICVYLyVYIiwKQEAgLTI2 NSw4ICsyNjEsOCBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAJcmVzID0gUFFleGVjKGNv bm4sIHF1ZXJ5LT5kYXRhKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19D T1BZX0JPVEgpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzZW5k IHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIpLAotCQkJCXByb2duYW1lLCBxdWVy eS0+ZGF0YSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiwKKwkJCQkJ IHF1ZXJ5LT5kYXRhLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJUFFjbGVhcihy ZXMpOwogCQlnb3RvIGVycm9yOwogCX0KQEAgLTI3NCw5ICsyNzAsNyBAQCBTdHJlYW1Mb2dp Y2FsTG9nKHZvaWQpCiAJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CiAKIAlpZiAodmVyYm9z ZSkKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IHN0cmVhbWluZyBpbml0aWF0ZWRc biIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2luZm8oInN0cmVhbWluZyBpbml0aWF0 ZWQiKTsKIAogCXdoaWxlICghdGltZV90b19hYm9ydCkKIAl7CkBAIC0zNDAsMTYgKzMzNCwx MiBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAJCQkJCQkJIFNfSVJVU1IgfCBTX0lXVVNS KTsKIAkJCWlmIChvdXRmZCA9PSAtMSkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CQkJCV8oIiVzOiBjb3VsZCBub3Qgb3BlbiBsb2cgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJ CQkJCXByb2duYW1lLCBvdXRmaWxlLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IG9wZW4gbG9nIGZpbGUgXCIlc1wiOiAlbSIsIG91dGZpbGUpOwog CQkJCWdvdG8gZXJyb3I7CiAJCQl9CiAKIAkJCWlmIChmc3RhdChvdXRmZCwgJnN0YXRidWYp ICE9IDApCi0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogY291bGQgbm90IHN0 YXQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBvdXRmaWxlLCBzdHJl cnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHN0YXQgZmlsZSBc IiVzXCI6ICVtIiwgb3V0ZmlsZSk7CiAKIAkJCW91dHB1dF9pc2ZpbGUgPSBTX0lTUkVHKHN0 YXRidWYuc3RfbW9kZSkgJiYgIWlzYXR0eShvdXRmZCk7CiAJCX0KQEAgLTM3MCw5ICszNjAs NyBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAKIAkJCWlmIChQUXNvY2tldChjb25uKSA8 IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogaW52YWxpZCBz b2NrZXQ6ICVzIiksCi0JCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwor CQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBzb2NrZXQ6ICVzIiwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOwogCQkJCWdvdG8gZXJyb3I7CiAJCQl9CiAKQEAgLTQyNSwxNyArNDEzLDE1IEBA IFN0cmVhbUxvZ2ljYWxMb2codm9pZCkKIAkJCX0KIAkJCWVsc2UgaWYgKHIgPCAwKQogCQkJ ewotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogc2VsZWN0KCkgZmFpbGVkOiAlc1xuIiks Ci0JCQkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3Io InNlbGVjdCgpIGZhaWxlZDogJW0iKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCiAJCQkv KiBFbHNlIHRoZXJlIGlzIGFjdHVhbGx5IGRhdGEgb24gdGhlIHNvY2tldCAqLwogCQkJaWYg KFBRY29uc3VtZUlucHV0KGNvbm4pID09IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIs Ci0JCQkJCQlfKCIlczogY291bGQgbm90IHJlY2VpdmUgZGF0YSBmcm9tIFdBTCBzdHJlYW06 ICVzIiksCi0JCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IHJlY2VpdmUgZGF0YSBmcm9tIFdBTCBzdHJlYW06ICVz IiwKKwkJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQkJCWdvdG8gZXJyb3I7CiAJ CQl9CiAJCQljb250aW51ZTsKQEAgLTQ0OCw4ICs0MzQsOCBAQCBTdHJlYW1Mb2dpY2FsTG9n KHZvaWQpCiAJCS8qIEZhaWx1cmUgd2hpbGUgcmVhZGluZyB0aGUgY29weSBzdHJlYW0gKi8K IAkJaWYgKHIgPT0gLTIpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IHJlYWQgQ09QWSBkYXRhOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBDT1BZIGRhdGE6 ICVzIiwKKwkJCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCQlnb3RvIGVycm9yOwog CQl9CiAKQEAgLTQ3Niw4ICs0NjIsNyBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAKIAkJ CWlmIChyIDwgcG9zICsgMSkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHN0 cmVhbWluZyBoZWFkZXIgdG9vIHNtYWxsOiAlZFxuIiksCi0JCQkJCQlwcm9nbmFtZSwgcik7 CisJCQkJcGdfbG9nX2Vycm9yKCJzdHJlYW1pbmcgaGVhZGVyIHRvbyBzbWFsbDogJWQiLCBy KTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCQkJcmVwbHlSZXF1ZXN0ZWQgPSBjb3B5YnVm W3Bvc107CkBAIC01MTIsOCArNDk3LDggQEAgU3RyZWFtTG9naWNhbExvZyh2b2lkKQogCQl9 CiAJCWVsc2UgaWYgKGNvcHlidWZbMF0gIT0gJ3cnKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IHVucmVjb2duaXplZCBzdHJlYW1pbmcgaGVhZGVyOiBcIiVjXCJcbiIpLAot CQkJCQlwcm9nbmFtZSwgY29weWJ1ZlswXSk7CisJCQlwZ19sb2dfZXJyb3IoInVucmVjb2du aXplZCBzdHJlYW1pbmcgaGVhZGVyOiBcIiVjXCIiLAorCQkJCQkJIGNvcHlidWZbMF0pOwog CQkJZ290byBlcnJvcjsKIAkJfQogCkBAIC01MjgsOCArNTEzLDcgQEAgU3RyZWFtTG9naWNh bExvZyh2b2lkKQogCQloZHJfbGVuICs9IDg7CQkJLyogc2VuZFRpbWUgKi8KIAkJaWYgKHIg PCBoZHJfbGVuICsgMSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzdHJlYW1p bmcgaGVhZGVyIHRvbyBzbWFsbDogJWRcbiIpLAotCQkJCQlwcm9nbmFtZSwgcik7CisJCQlw Z19sb2dfZXJyb3IoInN0cmVhbWluZyBoZWFkZXIgdG9vIHNtYWxsOiAlZCIsIHIpOwogCQkJ Z290byBlcnJvcjsKIAkJfQogCkBAIC01NjcsMTAgKzU1MSw4IEBAIFN0cmVhbUxvZ2ljYWxM b2codm9pZCkKIAogCQkJaWYgKHJldCA8IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIs Ci0JCQkJCQlfKCIlczogY291bGQgbm90IHdyaXRlICV1IGJ5dGVzIHRvIGxvZyBmaWxlIFwi JXNcIjogJXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIGJ5dGVzX2xlZnQsIG91dGZpbGUsCi0J CQkJCQlzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdy aXRlICV1IGJ5dGVzIHRvIGxvZyBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkJCSBieXRlc19s ZWZ0LCBvdXRmaWxlKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCkBAIC01ODEsMTAgKzU2 Myw4IEBAIFN0cmVhbUxvZ2ljYWxMb2codm9pZCkKIAogCQlpZiAod3JpdGUob3V0ZmQsICJc biIsIDEpICE9IDEpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY291 bGQgbm90IHdyaXRlICV1IGJ5dGVzIHRvIGxvZyBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJ CQlwcm9nbmFtZSwgMSwgb3V0ZmlsZSwKLQkJCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlICV1IGJ5dGVzIHRvIGxvZyBmaWxlIFwiJXNc IjogJW0iLAorCQkJCQkJIDEsIG91dGZpbGUpOwogCQkJZ290byBlcnJvcjsKIAkJfQogCkBA IC02MTEsOSArNTkxLDggQEAgU3RyZWFtTG9naWNhbExvZyh2b2lkKQogCX0KIAllbHNlIGlm IChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJewotCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQlfKCIlczogdW5leHBlY3RlZCB0ZXJtaW5hdGlvbiBvZiByZXBs aWNhdGlvbiBzdHJlYW06ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRcmVzdWx0RXJyb3JNZXNz YWdlKHJlcykpOworCQlwZ19sb2dfZXJyb3IoInVuZXhwZWN0ZWQgdGVybWluYXRpb24gb2Yg cmVwbGljYXRpb24gc3RyZWFtOiAlcyIsCisJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShy ZXMpKTsKIAkJZ290byBlcnJvcjsKIAl9CiAJUFFjbGVhcihyZXMpOwpAQCAtNjI2LDggKzYw NSw3IEBAIFN0cmVhbUxvZ2ljYWxMb2codm9pZCkKIAkJT3V0cHV0RnN5bmModCk7CiAKIAkJ aWYgKGNsb3NlKG91dGZkKSAhPSAwKQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3Vs ZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIG91dGZp bGUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9z ZSBmaWxlIFwiJXNcIjogJW0iLCBvdXRmaWxlKTsKIAl9CiAJb3V0ZmQgPSAtMTsKIGVycm9y OgpAQCAtNzA3LDYgKzY4NSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJ cHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bnc2Vy dmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19iYXNlYmFja3VwIikpOworCXBnX2xv Z2dpbmdfaW5pdChhcmd2WzBdKTsKIAogCWlmIChhcmdjID4gMSkKIAl7CkBAIC03MzYsOCAr NzE1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJZnN5bmNfaW50ZXJ2 YWwgPSBhdG9pKG9wdGFyZykgKiAxMDAwOwogCQkJCWlmIChmc3luY19pbnRlcnZhbCA8IDAp CiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgZnN5bmMgaW50 ZXJ2YWwgXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdf bG9nX2Vycm9yKCJpbnZhbGlkIGZzeW5jIGludGVydmFsIFwiJXNcIiIsIG9wdGFyZyk7CiAJ CQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtNzU3LDggKzczNSw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAncCc6CiAJCQkJaWYgKGF0b2ko b3B0YXJnKSA8PSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZh bGlkIHBvcnQgbnVtYmVyIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7 CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBwb3J0IG51bWJlciBcIiVzXCIiLCBvcHRh cmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlkYnBvcnQgPSBwZ19zdHJkdXAob3B0 YXJnKTsKQEAgLTc3Niw5ICs3NTMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkJCWNhc2UgJ0knOgogCQkJCWlmIChzc2NhbmYob3B0YXJnLCAiJVgvJVgiLCAmaGksICZs bykgIT0gMikKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCV8oIiVzOiBj b3VsZCBub3QgcGFyc2Ugc3RhcnQgcG9zaXRpb24gXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9n bmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2Ugc3Rh cnQgcG9zaXRpb24gXCIlc1wiIiwgb3B0YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJ CQkJc3RhcnRwb3MgPSAoKHVpbnQ2NCkgaGkpIDw8IDMyIHwgbG87CkBAIC03ODYsOSArNzYx LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQljYXNlICdFJzoKIAkJCQlp ZiAoc3NjYW5mKG9wdGFyZywgIiVYLyVYIiwgJmhpLCAmbG8pICE9IDIpCiAJCQkJewotCQkJ CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQlfKCIlczogY291bGQgbm90IHBhcnNlIGVuZCBw b3NpdGlvbiBcIiVzXCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSBlbmQgcG9zaXRpb24gXCIlc1wiIiwgb3B0 YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJZW5kcG9zID0gKCh1aW50NjQpIGhp KSA8PCAzMiB8IGxvOwpAQCAtODIwLDggKzc5Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCQkJCXN0YW5kYnlfbWVzc2FnZV90aW1lb3V0ID0gYXRvaShvcHRhcmcpICog MTAwMDsKIAkJCQlpZiAoc3RhbmRieV9tZXNzYWdlX3RpbWVvdXQgPCAwKQogCQkJCXsKLQkJ CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIHN0YXR1cyBpbnRlcnZhbCBcIiVz XCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3Io ImludmFsaWQgc3RhdHVzIGludGVydmFsIFwiJXNcIiIsIG9wdGFyZyk7CiAJCQkJCWV4aXQo MSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtODU4LDkgKzgzMCw4IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChvcHRpbmQgPCBhcmdjKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVu dHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0p OworCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZp cnN0IGlzIFwiJXNcIikiLAorCQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRl cnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJ CQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtODcxLDcgKzg0Miw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChyZXBsaWNhdGlvbl9zbG90ID09IE5V TEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5vIHNsb3Qgc3BlY2lmaWVkXG4i KSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIHNsb3Qgc3BlY2lmaWVkIik7CiAJ CWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1h dGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTg3OSw3ICs4NTAs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChkb19zdGFydF9zbG90 ICYmIG91dGZpbGUgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbm8g dGFyZ2V0IGZpbGUgc3BlY2lmaWVkXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3Io Im5vIHRhcmdldCBmaWxlIHNwZWNpZmllZCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5 IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFt ZSk7CiAJCWV4aXQoMSk7CkBAIC04ODcsNyArODU4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAKIAlpZiAoIWRvX2Ryb3Bfc2xvdCAmJiBkYm5hbWUgPT0gTlVMTCkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbm8gZGF0YWJhc2Ugc3BlY2lmaWVkXG4iKSwg cHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIGRhdGFiYXNlIHNwZWNpZmllZCIpOwog CQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC04OTUsNyArODY2 LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAoIWRvX2Ryb3Bfc2xv dCAmJiAhZG9fY3JlYXRlX3Nsb3QgJiYgIWRvX3N0YXJ0X3Nsb3QpCiAJewotCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGF0IGxlYXN0IG9uZSBhY3Rpb24gbmVlZHMgdG8gYmUgc3BlY2lm aWVkXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImF0IGxlYXN0IG9uZSBhY3Rp b24gbmVlZHMgdG8gYmUgc3BlY2lmaWVkIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkg XCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1l KTsKIAkJZXhpdCgxKTsKQEAgLTkwMyw3ICs4NzQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAogCWlmIChkb19kcm9wX3Nsb3QgJiYgKGRvX2NyZWF0ZV9zbG90IHx8IGRv X3N0YXJ0X3Nsb3QpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdXNl IC0tY3JlYXRlLXNsb3Qgb3IgLS1zdGFydCB0b2dldGhlciB3aXRoIC0tZHJvcC1zbG90XG4i KSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImNhbm5vdCB1c2UgLS1jcmVhdGUtc2xv dCBvciAtLXN0YXJ0IHRvZ2V0aGVyIHdpdGggLS1kcm9wLXNsb3QiKTsKIAkJZnByaW50Zihz dGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiks CiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtOTExLDcgKzg4Miw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKHN0YXJ0cG9zICE9IEludmFsaWRYTG9n UmVjUHRyICYmIChkb19jcmVhdGVfc2xvdCB8fCBkb19kcm9wX3Nsb3QpKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdXNlIC0tY3JlYXRlLXNsb3Qgb3IgLS1kcm9w LXNsb3QgdG9nZXRoZXIgd2l0aCAtLXN0YXJ0cG9zXG4iKSwgcHJvZ25hbWUpOworCQlwZ19s b2dfZXJyb3IoImNhbm5vdCB1c2UgLS1jcmVhdGUtc2xvdCBvciAtLWRyb3Atc2xvdCB0b2dl dGhlciB3aXRoIC0tc3RhcnRwb3MiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVz IC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwog CQlleGl0KDEpOwpAQCAtOTE5LDkgKzg5MCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCiAJaWYgKGVuZHBvcyAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJiAhZG9fc3RhcnRf c2xvdCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiAtLWVuZHBvcyBtYXkg b25seSBiZSBzcGVjaWZpZWQgd2l0aCAtLXN0YXJ0XG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJ CXBnX2xvZ19lcnJvcigiLS1lbmRwb3MgbWF5IG9ubHkgYmUgc3BlY2lmaWVkIHdpdGggLS1z dGFydCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1v cmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC05 NTIsOSArOTIxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAoZGJf bmFtZSA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvdWxk IG5vdCBlc3RhYmxpc2ggZGF0YWJhc2Utc3BlY2lmaWMgcmVwbGljYXRpb24gY29ubmVjdGlv blxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBlc3Rh Ymxpc2ggZGF0YWJhc2Utc3BlY2lmaWMgcmVwbGljYXRpb24gY29ubmVjdGlvbiIpOwogCQll eGl0KDEpOwogCX0KIApAQCAtOTcyLDkgKzkzOSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCWlmIChkb19kcm9wX3Nsb3QpCiAJewogCQlpZiAodmVyYm9zZSkKLQkJCWZw cmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogZHJvcHBpbmcgcmVwbGljYXRpb24gc2xvdCBc IiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgcmVwbGljYXRpb25fc2xvdCk7CisJCQlwZ19s b2dfaW5mbygiZHJvcHBpbmcgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLCByZXBsaWNhdGlv bl9zbG90KTsKIAogCQlpZiAoIURyb3BSZXBsaWNhdGlvblNsb3QoY29ubiwgcmVwbGljYXRp b25fc2xvdCkpCiAJCQlleGl0KDEpOwpAQCAtOTg0LDkgKzk0OSw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCWlmIChkb19jcmVhdGVfc2xvdCkKIAl7CiAJCWlmICh2ZXJi b3NlKQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjcmVhdGluZyByZXBsaWNh dGlvbiBzbG90IFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCByZXBsaWNhdGlvbl9zbG90 KTsKKwkJCXBnX2xvZ19pbmZvKCJjcmVhdGluZyByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIs IHJlcGxpY2F0aW9uX3Nsb3QpOwogCiAJCWlmICghQ3JlYXRlUmVwbGljYXRpb25TbG90KGNv bm4sIHJlcGxpY2F0aW9uX3Nsb3QsIHBsdWdpbiwgZmFsc2UsCiAJCQkJCQkJCSAgIGZhbHNl LCBmYWxzZSwgc2xvdF9leGlzdHNfb2spKQpAQCAtMTAxMSwxNSArOTc0LDE0IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9CiAJCWVsc2UgaWYgKG5vbG9vcCkKIAkJewot CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBkaXNjb25uZWN0ZWRcbiIpLCBwcm9nbmFtZSk7 CisJCQlwZ19sb2dfZXJyb3IoImRpc2Nvbm5lY3RlZCIpOwogCQkJZXhpdCgxKTsKIAkJfQog CQllbHNlCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAogCQkJLyogdHJhbnNsYXRvcjogY2hl Y2sgc291cmNlIGZvciB2YWx1ZSBmb3IgJWQgKi8KLQkJCQkJXygiJXM6IGRpc2Nvbm5lY3Rl ZDsgd2FpdGluZyAlZCBzZWNvbmRzIHRvIHRyeSBhZ2FpblxuIiksCi0JCQkJCXByb2duYW1l LCBSRUNPTk5FQ1RfU0xFRVBfVElNRSk7CisJCQlwZ19sb2dfaW5mbygiZGlzY29ubmVjdGVk OyB3YWl0aW5nICVkIHNlY29uZHMgdG8gdHJ5IGFnYWluIiwKKwkJCQkJCVJFQ09OTkVDVF9T TEVFUF9USU1FKTsKIAkJCXBnX3VzbGVlcChSRUNPTk5FQ1RfU0xFRVBfVElNRSAqIDEwMDAw MDApOwogCQl9CiAJfQpAQCAtMTA1OCwxMyArMTAyMCwxMiBAQCBwcmVwYXJlVG9UZXJtaW5h dGUoUEdjb25uICpjb25uLCBYTG9nUmVjUHRyIGVuZHBvcywgYm9vbCBrZWVwYWxpdmUsIFhM b2dSZWNQdHIgbAogCWlmICh2ZXJib3NlKQogCXsKIAkJaWYgKGtlZXBhbGl2ZSkKLQkJCWZw cmludGYoc3RkZXJyLCAiJXM6IGVuZHBvcyAlWC8lWCByZWFjaGVkIGJ5IGtlZXBhbGl2ZVxu IiwKLQkJCQkJcHJvZ25hbWUsCi0JCQkJCSh1aW50MzIpIChlbmRwb3MgPj4gMzIpLCAodWlu dDMyKSBlbmRwb3MpOworCQkJcGdfbG9nX2luZm8oImVuZHBvcyAlWC8lWCByZWFjaGVkIGJ5 IGtlZXBhbGl2ZSIsCisJCQkJCQkodWludDMyKSAoZW5kcG9zID4+IDMyKSwgKHVpbnQzMikg ZW5kcG9zKTsKIAkJZWxzZQotCQkJZnByaW50ZihzdGRlcnIsICIlczogZW5kcG9zICVYLyVY IHJlYWNoZWQgYnkgcmVjb3JkIGF0ICVYLyVYXG4iLAotCQkJCQlwcm9nbmFtZSwgKHVpbnQz MikgKGVuZHBvcyA+PiAzMiksICh1aW50MzIpIChlbmRwb3MpLAotCQkJCQkodWludDMyKSAo bHNuID4+IDMyKSwgKHVpbnQzMikgbHNuKTsKKwkJCXBnX2xvZ19pbmZvKCJlbmRwb3MgJVgv JVggcmVhY2hlZCBieSByZWNvcmQgYXQgJVgvJVgiLAorCQkJCQkJKHVpbnQzMikgKGVuZHBv cyA+PiAzMiksICh1aW50MzIpIChlbmRwb3MpLAorCQkJCQkJKHVpbnQzMikgKGxzbiA+PiAz MiksICh1aW50MzIpIGxzbik7CiAKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jh c2ViYWNrdXAvcmVjZWl2ZWxvZy5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3JlY2VpdmVs b2cuYwppbmRleCA2OTJkMTM3MTZlLi44Mzg0ZjU3OTFjIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2Jhc2ViYWNrdXAvcmVjZWl2ZWxvZy5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9yZWNlaXZlbG9nLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJsaWJwcS1mZS5o IgogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiY29tbW9u L2ZpbGVfdXRpbHMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAKIAogLyog ZmQgYW5kIGZpbGVuYW1lIGZvciBjdXJyZW50bHkgb3BlbiBXQUwgZmlsZSAqLwpAQCAtNjgs OCArNjksOCBAQCBtYXJrX2ZpbGVfYXNfYXJjaGl2ZWQoU3RyZWFtQ3RsICpzdHJlYW0sIGNv bnN0IGNoYXIgKmZuYW1lKQogCWYgPSBzdHJlYW0tPndhbG1ldGhvZC0+b3Blbl9mb3Jfd3Jp dGUodG1wcGF0aCwgTlVMTCwgMCk7CiAJaWYgKGYgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBhcmNoaXZlIHN0YXR1cyBmaWxlIFwi JXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCB0bXBwYXRoLCBzdHJlYW0tPndhbG1ldGhv ZC0+Z2V0bGFzdGVycm9yKCkpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUg YXJjaGl2ZSBzdGF0dXMgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJIHRtcHBhdGgsIHN0cmVh bS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAK QEAgLTExNSw5ICsxMTYsOCBAQCBvcGVuX3dhbGZpbGUoU3RyZWFtQ3RsICpzdHJlYW0sIFhM b2dSZWNQdHIgc3RhcnRwb2ludCkKIAkJc2l6ZSA9IHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRf ZmlsZV9zaXplKGZuKTsKIAkJaWYgKHNpemUgPCAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCBnZXQgc2l6ZSBvZiB3cml0ZS1haGVhZCBsb2cg ZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGZuLCBzdHJlYW0tPndhbG1l dGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0 IHNpemUgb2Ygd3JpdGUtYWhlYWQgbG9nIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkgZm4s IHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CiAJCQlyZXR1cm4gZmFsc2U7 CiAJCX0KIAkJaWYgKHNpemUgPT0gV2FsU2VnU3opCkBAIC0xMjYsMTggKzEyNiwxNiBAQCBv cGVuX3dhbGZpbGUoU3RyZWFtQ3RsICpzdHJlYW0sIFhMb2dSZWNQdHIgc3RhcnRwb2ludCkK IAkJCWYgPSBzdHJlYW0tPndhbG1ldGhvZC0+b3Blbl9mb3Jfd3JpdGUoY3VycmVudF93YWxm aWxlX25hbWUsIHN0cmVhbS0+cGFydGlhbF9zdWZmaXgsIDApOwogCQkJaWYgKGYgPT0gTlVM TCkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiBjb3VsZCBub3Qg b3BlbiBleGlzdGluZyB3cml0ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJ CQkJCXByb2duYW1lLCBmbiwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsK KwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGV4aXN0aW5nIHdyaXRlLWFoZWFk IGxvZyBmaWxlIFwiJXNcIjogJXMiLAorCQkJCQkJCSBmbiwgc3RyZWFtLT53YWxtZXRob2Qt PmdldGxhc3RlcnJvcigpKTsKIAkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9CiAKIAkJCS8qIGZz eW5jIGZpbGUgaW4gY2FzZSBvZiBhIHByZXZpb3VzIGNyYXNoICovCiAJCQlpZiAoc3RyZWFt LT53YWxtZXRob2QtPnN5bmMoZikgIT0gMCkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJCV8oIiVzOiBjb3VsZCBub3QgZnN5bmMgZXhpc3Rpbmcgd3JpdGUtYWhlYWQgbG9n IGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgZm4sIHN0cmVhbS0+d2Fs bWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg ZnN5bmMgZXhpc3Rpbmcgd3JpdGUtYWhlYWQgbG9nIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJ CQkJIGZuLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQkJCXN0cmVh bS0+d2FsbWV0aG9kLT5jbG9zZShmLCBDTE9TRV9VTkxJTkspOwogCQkJCXJldHVybiBmYWxz ZTsKIAkJCX0KQEAgLTE1MCwxMSArMTQ4LDEwIEBAIG9wZW5fd2FsZmlsZShTdHJlYW1DdGwg KnN0cmVhbSwgWExvZ1JlY1B0ciBzdGFydHBvaW50KQogCQkJLyogaWYgd3JpdGUgZGlkbid0 IHNldCBlcnJubywgYXNzdW1lIHByb2JsZW0gaXMgbm8gZGlzayBzcGFjZSAqLwogCQkJaWYg KGVycm5vID09IDApCiAJCQkJZXJybm8gPSBFTk9TUEM7Ci0JCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJbmdldHRleHQoIiVzOiB3cml0ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCIgaGFzICVk IGJ5dGUsIHNob3VsZCBiZSAwIG9yICVkXG4iLAotCQkJCQkJCSAiJXM6IHdyaXRlLWFoZWFk IGxvZyBmaWxlIFwiJXNcIiBoYXMgJWQgYnl0ZXMsIHNob3VsZCBiZSAwIG9yICVkXG4iLAot CQkJCQkJCSBzaXplKSwKLQkJCQkJcHJvZ25hbWUsIGZuLCAoaW50KSBzaXplLCBXYWxTZWdT eik7CisJCQlwZ19sb2dfZXJyb3IobmdldHRleHQoIndyaXRlLWFoZWFkIGxvZyBmaWxlIFwi JXNcIiBoYXMgJWQgYnl0ZSwgc2hvdWxkIGJlIDAgb3IgJWQiLAorCQkJCQkJCQkgICJ3cml0 ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCIgaGFzICVkIGJ5dGVzLCBzaG91bGQgYmUgMCBvciAl ZCIsCisJCQkJCQkJCSAgc2l6ZSksCisJCQkJCQkgZm4sIChpbnQpIHNpemUsIFdhbFNlZ1N6 KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQkvKiBGaWxlIGV4aXN0ZWQgYW5kIHdhcyBl bXB0eSwgc28gZmFsbCB0aHJvdWdoIGFuZCBvcGVuICovCkBAIC0xNjYsOSArMTYzLDggQEAg b3Blbl93YWxmaWxlKFN0cmVhbUN0bCAqc3RyZWFtLCBYTG9nUmVjUHRyIHN0YXJ0cG9pbnQp CiAJCQkJCQkJCQkJICBzdHJlYW0tPnBhcnRpYWxfc3VmZml4LCBXYWxTZWdTeik7CiAJaWYg KGYgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBu b3Qgb3BlbiB3cml0ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9n bmFtZSwgZm4sIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CisJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IG9wZW4gd3JpdGUtYWhlYWQgbG9nIGZpbGUgXCIlc1wiOiAl cyIsCisJCQkJCSBmbiwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsKIAkJ cmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMTkzLDkgKzE4OSw4IEBAIGNsb3NlX3dhbGZpbGUo U3RyZWFtQ3RsICpzdHJlYW0sIFhMb2dSZWNQdHIgcG9zKQogCWN1cnJwb3MgPSBzdHJlYW0t PndhbG1ldGhvZC0+Z2V0X2N1cnJlbnRfcG9zKHdhbGZpbGUpOwogCWlmIChjdXJycG9zID09 IC0xKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvdWxkIG5vdCBkZXRl cm1pbmUgc2VlayBwb3NpdGlvbiBpbiBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2du YW1lLCBjdXJyZW50X3dhbGZpbGVfbmFtZSwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3Rl cnJvcigpKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHNlZWsgcG9z aXRpb24gaW4gZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJIGN1cnJlbnRfd2FsZmlsZV9uYW1l LCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQlzdHJlYW0tPndhbG1l dGhvZC0+Y2xvc2Uod2FsZmlsZSwgQ0xPU0VfVU5MSU5LKTsKIAkJd2FsZmlsZSA9IE5VTEw7 CiAKQEAgLTIwOCw5ICsyMDMsOCBAQCBjbG9zZV93YWxmaWxlKFN0cmVhbUN0bCAqc3RyZWFt LCBYTG9nUmVjUHRyIHBvcykKIAkJCXIgPSBzdHJlYW0tPndhbG1ldGhvZC0+Y2xvc2Uod2Fs ZmlsZSwgQ0xPU0VfTk9STUFMKTsKIAkJZWxzZQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJXygiJXM6IG5vdCByZW5hbWluZyBcIiVzJXNcIiwgc2VnbWVudCBpcyBub3QgY29t cGxldGVcbiIpLAotCQkJCQlwcm9nbmFtZSwgY3VycmVudF93YWxmaWxlX25hbWUsIHN0cmVh bS0+cGFydGlhbF9zdWZmaXgpOworCQkJcGdfbG9nX2luZm8oIm5vdCByZW5hbWluZyBcIiVz JXNcIiwgc2VnbWVudCBpcyBub3QgY29tcGxldGUiLAorCQkJCQkJY3VycmVudF93YWxmaWxl X25hbWUsIHN0cmVhbS0+cGFydGlhbF9zdWZmaXgpOwogCQkJciA9IHN0cmVhbS0+d2FsbWV0 aG9kLT5jbG9zZSh3YWxmaWxlLCBDTE9TRV9OT19SRU5BTUUpOwogCQl9CiAJfQpAQCAtMjIx LDggKzIxNSw4IEBAIGNsb3NlX3dhbGZpbGUoU3RyZWFtQ3RsICpzdHJlYW0sIFhMb2dSZWNQ dHIgcG9zKQogCiAJaWYgKHIgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGN1 cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJXMiLAor CQkJCQkgY3VycmVudF93YWxmaWxlX25hbWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0 ZXJyb3IoKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTI3OCwyMyArMjcyLDIzIEBA IHdyaXRlVGltZUxpbmVIaXN0b3J5RmlsZShTdHJlYW1DdGwgKnN0cmVhbSwgY2hhciAqZmls ZW5hbWUsIGNoYXIgKmNvbnRlbnQpCiAJVExIaXN0b3J5RmlsZU5hbWUoaGlzdGZuYW1lLCBz dHJlYW0tPnRpbWVsaW5lKTsKIAlpZiAoc3RyY21wKGhpc3RmbmFtZSwgZmlsZW5hbWUpICE9 IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHNlcnZlciByZXBvcnRlZCB1bmV4 cGVjdGVkIGhpc3RvcnkgZmlsZSBuYW1lIGZvciB0aW1lbGluZSAldTogJXNcbiIpLAotCQkJ CXByb2duYW1lLCBzdHJlYW0tPnRpbWVsaW5lLCBmaWxlbmFtZSk7CisJCXBnX2xvZ19lcnJv cigic2VydmVyIHJlcG9ydGVkIHVuZXhwZWN0ZWQgaGlzdG9yeSBmaWxlIG5hbWUgZm9yIHRp bWVsaW5lICV1OiAlcyIsCisJCQkJCSBzdHJlYW0tPnRpbWVsaW5lLCBmaWxlbmFtZSk7CiAJ CXJldHVybiBmYWxzZTsKIAl9CiAKIAlmID0gc3RyZWFtLT53YWxtZXRob2QtPm9wZW5fZm9y X3dyaXRlKGhpc3RmbmFtZSwgIi50bXAiLCAwKTsKIAlpZiAoZiA9PSBOVUxMKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIHRpbWVsaW5lIGhpc3Rv cnkgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgaGlzdGZuYW1lLCBzdHJl YW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBjcmVhdGUgdGltZWxpbmUgaGlzdG9yeSBmaWxlIFwiJXNcIjogJXMiLAorCQkJCQkg aGlzdGZuYW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQlyZXR1 cm4gZmFsc2U7CiAJfQogCiAJaWYgKChpbnQpIHN0cmVhbS0+d2FsbWV0aG9kLT53cml0ZShm LCBjb250ZW50LCBzaXplKSAhPSBzaXplKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3Qgd3JpdGUgdGltZWxpbmUgaGlzdG9yeSBmaWxlIFwiJXNcIjogJXNcbiIp LAotCQkJCXByb2duYW1lLCBoaXN0Zm5hbWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0 ZXJyb3IoKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlIHRpbWVsaW5lIGhp c3RvcnkgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJIGhpc3RmbmFtZSwgc3RyZWFtLT53YWxt ZXRob2QtPmdldGxhc3RlcnJvcigpKTsKIAogCQkvKgogCQkgKiBJZiB3ZSBmYWlsIHRvIG1h a2UgdGhlIGZpbGUsIGRlbGV0ZSBpdCB0byByZWxlYXNlIGRpc2sgc3BhY2UKQEAgLTMwNiw4 ICszMDAsOCBAQCB3cml0ZVRpbWVMaW5lSGlzdG9yeUZpbGUoU3RyZWFtQ3RsICpzdHJlYW0s IGNoYXIgKmZpbGVuYW1lLCBjaGFyICpjb250ZW50KQogCiAJaWYgKHN0cmVhbS0+d2FsbWV0 aG9kLT5jbG9zZShmLCBDTE9TRV9OT1JNQUwpICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXBy b2duYW1lLCBoaXN0Zm5hbWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7 CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlcyIsCisJ CQkJCSBoaXN0Zm5hbWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CiAJ CXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTM0OSw4ICszNDMsOCBAQCBzZW5kRmVlZGJhY2so UEdjb25uICpjb25uLCBYTG9nUmVjUHRyIGJsb2NrcG9zLCBUaW1lc3RhbXBUeiBub3csIGJv b2wgcmVwbHlSZXF1ZQogCiAJaWYgKFBRcHV0Q29weURhdGEoY29ubiwgcmVwbHlidWYsIGxl bikgPD0gMCB8fCBQUWZsdXNoKGNvbm4pKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3Qgc2VuZCBmZWVkYmFjayBwYWNrZXQ6ICVzIiksCi0JCQkJcHJvZ25hbWUs IFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2Vu ZCBmZWVkYmFjayBwYWNrZXQ6ICVzIiwKKwkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMzgzLDIwICszNzcsMTggQEAgQ2hlY2tTZXJ2 ZXJWZXJzaW9uRm9yU3RyZWFtaW5nKFBHY29ubiAqY29ubikKIAl7CiAJCWNvbnN0IGNoYXIg KnNlcnZlcnZlciA9IFBRcGFyYW1ldGVyU3RhdHVzKGNvbm4sICJzZXJ2ZXJfdmVyc2lvbiIp OwogCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW5jb21wYXRpYmxlIHNlcnZlciB2ZXJz aW9uICVzOyBjbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgZnJvbSBzZXJ2ZXIg dmVyc2lvbnMgb2xkZXIgdGhhbiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsCi0JCQkJc2VydmVy dmVyID8gc2VydmVydmVyIDogIid1bmtub3duJyIsCi0JCQkJIjkuMyIpOworCQlwZ19sb2df ZXJyb3IoImluY29tcGF0aWJsZSBzZXJ2ZXIgdmVyc2lvbiAlczsgY2xpZW50IGRvZXMgbm90 IHN1cHBvcnQgc3RyZWFtaW5nIGZyb20gc2VydmVyIHZlcnNpb25zIG9sZGVyIHRoYW4gJXMi LAorCQkJCQkgc2VydmVydmVyID8gc2VydmVydmVyIDogIid1bmtub3duJyIsCisJCQkJCSAi OS4zIik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAJZWxzZSBpZiAoc2VydmVyTWFqb3IgPiBt YXhTZXJ2ZXJNYWpvcikKIAl7CiAJCWNvbnN0IGNoYXIgKnNlcnZlcnZlciA9IFBRcGFyYW1l dGVyU3RhdHVzKGNvbm4sICJzZXJ2ZXJfdmVyc2lvbiIpOwogCi0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogaW5jb21wYXRpYmxlIHNlcnZlciB2ZXJzaW9uICVzOyBjbGllbnQgZG9lcyBu b3Qgc3VwcG9ydCBzdHJlYW1pbmcgZnJvbSBzZXJ2ZXIgdmVyc2lvbnMgbmV3ZXIgdGhhbiAl c1xuIiksCi0JCQkJcHJvZ25hbWUsCi0JCQkJc2VydmVydmVyID8gc2VydmVydmVyIDogIid1 bmtub3duJyIsCi0JCQkJUEdfVkVSU0lPTik7CisJCXBnX2xvZ19lcnJvcigiaW5jb21wYXRp YmxlIHNlcnZlciB2ZXJzaW9uICVzOyBjbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1p bmcgZnJvbSBzZXJ2ZXIgdmVyc2lvbnMgbmV3ZXIgdGhhbiAlcyIsCisJCQkJCSBzZXJ2ZXJ2 ZXIgPyBzZXJ2ZXJ2ZXIgOiAiJ3Vua25vd24nIiwKKwkJCQkJIFBHX1ZFUlNJT04pOwogCQly ZXR1cm4gZmFsc2U7CiAJfQogCXJldHVybiB0cnVlOwpAQCAtNDg5LDMzICs0ODEsMjggQEAg UmVjZWl2ZVhsb2dTdHJlYW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkKIAkJ cmVzID0gUFFleGVjKGNvbm4sICJJREVOVElGWV9TWVNURU0iKTsKIAkJaWYgKFBRcmVzdWx0 U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIl c1wiOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgIklERU5USUZZX1NZU1RFTSIsIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVwbGlj YXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiwKKwkJCQkJCSAiSURFTlRJRllfU1lTVEVNIiwg UFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQkJUFFjbGVhcihyZXMpOwogCQkJcmV0dXJuIGZh bHNlOwogCQl9CiAJCWlmIChQUW50dXBsZXMocmVzKSAhPSAxIHx8IFBRbmZpZWxkcyhyZXMp IDwgMykKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3Qg aWRlbnRpZnkgc3lzdGVtOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAl ZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkc1xuIiksCi0JCQkJCXByb2duYW1lLCBQUW50 dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDMpOworCQkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3QgaWRlbnRpZnkgc3lzdGVtOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBl eHBlY3RlZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkcyIsCisJCQkJCQkgUFFudHVw bGVzKHJlcyksIFBRbmZpZWxkcyhyZXMpLCAxLCAzKTsKIAkJCVBRY2xlYXIocmVzKTsKIAkJ CXJldHVybiBmYWxzZTsKIAkJfQogCQlpZiAoc3RyY21wKHN0cmVhbS0+c3lzaWRlbnRpZmll ciwgUFFnZXR2YWx1ZShyZXMsIDAsIDApKSAhPSAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJXygiJXM6IHN5c3RlbSBpZGVudGlmaWVyIGRvZXMgbm90IG1hdGNoIGJldHdl ZW4gYmFzZSBiYWNrdXAgYW5kIHN0cmVhbWluZyBjb25uZWN0aW9uXG4iKSwKLQkJCQkJcHJv Z25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJzeXN0ZW0gaWRlbnRpZmllciBkb2VzIG5vdCBt YXRjaCBiZXR3ZWVuIGJhc2UgYmFja3VwIGFuZCBzdHJlYW1pbmcgY29ubmVjdGlvbiIpOwog CQkJUFFjbGVhcihyZXMpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJCWlmIChzdHJlYW0t PnRpbWVsaW5lID4gYXRvaShQUWdldHZhbHVlKHJlcywgMCwgMSkpKQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IHN0YXJ0aW5nIHRpbWVsaW5lICV1IGlzIG5vdCBw cmVzZW50IGluIHRoZSBzZXJ2ZXJcbiIpLAotCQkJCQlwcm9nbmFtZSwgc3RyZWFtLT50aW1l bGluZSk7CisJCQlwZ19sb2dfZXJyb3IoInN0YXJ0aW5nIHRpbWVsaW5lICV1IGlzIG5vdCBw cmVzZW50IGluIHRoZSBzZXJ2ZXIiLAorCQkJCQkJIHN0cmVhbS0+dGltZWxpbmUpOwogCQkJ UFFjbGVhcihyZXMpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CkBAIC01NDMsOCArNTMwLDgg QEAgUmVjZWl2ZVhsb2dTdHJlYW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkK IAkJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAkJCXsK IAkJCQkvKiBGSVhNRTogd2UgbWlnaHQgc2VuZCBpdCBvaywgYnV0IGdldCBhbiBlcnJvciAq LwotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgcmVwbGljYXRp b24gY29tbWFuZCBcIiVzXCI6ICVzIiksCi0JCQkJCQlwcm9nbmFtZSwgIlRJTUVMSU5FX0hJ U1RPUlkiLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIsCisJCQkJ CQkJICJUSU1FTElORV9ISVNUT1JZIiwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJ CQkJUFFjbGVhcihyZXMpOwogCQkJCXJldHVybiBmYWxzZTsKIAkJCX0KQEAgLTU1NSw5ICs1 NDIsOCBAQCBSZWNlaXZlWGxvZ1N0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAqc3Ry ZWFtKQogCQkJICovCiAJCQlpZiAoUFFuZmllbGRzKHJlcykgIT0gMiB8fCBQUW50dXBsZXMo cmVzKSAhPSAxKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IHVu ZXhwZWN0ZWQgcmVzcG9uc2UgdG8gVElNRUxJTkVfSElTVE9SWSBjb21tYW5kOiBnb3QgJWQg cm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAlZCBmaWVsZHNcbiIp LAotCQkJCQkJcHJvZ25hbWUsIFBRbnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwg Mik7CisJCQkJcGdfbG9nX3dhcm5pbmcoInVuZXhwZWN0ZWQgcmVzcG9uc2UgdG8gVElNRUxJ TkVfSElTVE9SWSBjb21tYW5kOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3Rl ZCAlZCByb3dzIGFuZCAlZCBmaWVsZHMiLAorCQkJCQkJCSAgIFBRbnR1cGxlcyhyZXMpLCBQ UW5maWVsZHMocmVzKSwgMSwgMik7CiAJCQl9CiAKIAkJCS8qIFdyaXRlIHRoZSBoaXN0b3J5 IGZpbGUgdG8gZGlzayAqLwpAQCAtNTgzLDggKzU2OSw4IEBAIFJlY2VpdmVYbG9nU3RyZWFt KFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0pCiAJCXJlcyA9IFBRZXhlYyhjb25u LCBxdWVyeSk7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPUFlfQk9U SCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc2VuZCByZXBs aWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiKSwKLQkJCQkJcHJvZ25hbWUsICJTVEFSVF9S RVBMSUNBVElPTiIsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3Qgc2VuZCByZXBsaWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiLAor CQkJCQkJICJTVEFSVF9SRVBMSUNBVElPTiIsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykp OwogCQkJUFFjbGVhcihyZXMpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CkBAIC02MjcsMTgg KzYxMywxNSBAQCBSZWNlaXZlWGxvZ1N0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAq c3RyZWFtKQogCQkJLyogU2FuaXR5IGNoZWNrIHRoZSB2YWx1ZXMgdGhlIHNlcnZlciBnYXZl IHVzICovCiAJCQlpZiAobmV3dGltZWxpbmUgPD0gc3RyZWFtLT50aW1lbGluZSkKIAkJCXsK LQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiBzZXJ2ZXIgcmVwb3J0ZWQgdW5l eHBlY3RlZCBuZXh0IHRpbWVsaW5lICV1LCBmb2xsb3dpbmcgdGltZWxpbmUgJXVcbiIpLAot CQkJCQkJcHJvZ25hbWUsIG5ld3RpbWVsaW5lLCBzdHJlYW0tPnRpbWVsaW5lKTsKKwkJCQlw Z19sb2dfZXJyb3IoInNlcnZlciByZXBvcnRlZCB1bmV4cGVjdGVkIG5leHQgdGltZWxpbmUg JXUsIGZvbGxvd2luZyB0aW1lbGluZSAldSIsCisJCQkJCQkJIG5ld3RpbWVsaW5lLCBzdHJl YW0tPnRpbWVsaW5lKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCQkJaWYgKHN0cmVhbS0+ c3RhcnRwb3MgPiBzdG9wcG9zKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJ XygiJXM6IHNlcnZlciBzdG9wcGVkIHN0cmVhbWluZyB0aW1lbGluZSAldSBhdCAlWC8lWCwg YnV0IHJlcG9ydGVkIG5leHQgdGltZWxpbmUgJXUgdG8gYmVnaW4gYXQgJVgvJVhcbiIpLAot CQkJCQkJcHJvZ25hbWUsCi0JCQkJCQlzdHJlYW0tPnRpbWVsaW5lLCAodWludDMyKSAoc3Rv cHBvcyA+PiAzMiksICh1aW50MzIpIHN0b3Bwb3MsCi0JCQkJCQluZXd0aW1lbGluZSwgKHVp bnQzMikgKHN0cmVhbS0+c3RhcnRwb3MgPj4gMzIpLCAodWludDMyKSBzdHJlYW0tPnN0YXJ0 cG9zKTsKKwkJCQlwZ19sb2dfZXJyb3IoInNlcnZlciBzdG9wcGVkIHN0cmVhbWluZyB0aW1l bGluZSAldSBhdCAlWC8lWCwgYnV0IHJlcG9ydGVkIG5leHQgdGltZWxpbmUgJXUgdG8gYmVn aW4gYXQgJVgvJVgiLAorCQkJCQkJCSBzdHJlYW0tPnRpbWVsaW5lLCAodWludDMyKSAoc3Rv cHBvcyA+PiAzMiksICh1aW50MzIpIHN0b3Bwb3MsCisJCQkJCQkJIG5ld3RpbWVsaW5lLCAo dWludDMyKSAoc3RyZWFtLT5zdGFydHBvcyA+PiAzMiksICh1aW50MzIpIHN0cmVhbS0+c3Rh cnRwb3MpOwogCQkJCWdvdG8gZXJyb3I7CiAJCQl9CiAKQEAgLTY0Niw5ICs2MjksOCBAQCBS ZWNlaXZlWGxvZ1N0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAqc3RyZWFtKQogCQkJ cmVzID0gUFFnZXRSZXN1bHQoY29ubik7CiAJCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAh PSBQR1JFU19DT01NQU5EX09LKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJ XygiJXM6IHVuZXhwZWN0ZWQgdGVybWluYXRpb24gb2YgcmVwbGljYXRpb24gc3RyZWFtOiAl cyIpLAotCQkJCQkJcHJvZ25hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJ CXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCB0ZXJtaW5hdGlvbiBvZiByZXBsaWNhdGlvbiBz dHJlYW06ICVzIiwKKwkJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCQkJ UFFjbGVhcihyZXMpOwogCQkJCWdvdG8gZXJyb3I7CiAJCQl9CkBAIC02NzcsMTcgKzY1OSwx NSBAQCBSZWNlaXZlWGxvZ1N0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAqc3RyZWFt KQogCQkJCXJldHVybiB0cnVlOwogCQkJZWxzZQogCQkJewotCQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogcmVwbGljYXRpb24gc3RyZWFtIHdhcyB0ZXJtaW5hdGVkIGJlZm9yZSBzdG9w IHBvaW50XG4iKSwKLQkJCQkJCXByb2duYW1lKTsKKwkJCQlwZ19sb2dfZXJyb3IoInJlcGxp Y2F0aW9uIHN0cmVhbSB3YXMgdGVybWluYXRlZCBiZWZvcmUgc3RvcCBwb2ludCIpOwogCQkJ CWdvdG8gZXJyb3I7CiAJCQl9CiAJCX0KIAkJZWxzZQogCQl7CiAJCQkvKiBTZXJ2ZXIgcmV0 dXJuZWQgYW4gZXJyb3IuICovCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IHVu ZXhwZWN0ZWQgdGVybWluYXRpb24gb2YgcmVwbGljYXRpb24gc3RyZWFtOiAlcyIpLAotCQkJ CQlwcm9nbmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlwZ19sb2dfZXJy b3IoInVuZXhwZWN0ZWQgdGVybWluYXRpb24gb2YgcmVwbGljYXRpb24gc3RyZWFtOiAlcyIs CisJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCQlQUWNsZWFyKHJlcyk7 CiAJCQlnb3RvIGVycm9yOwogCQl9CkBAIC02OTUsOCArNjc1LDggQEAgUmVjZWl2ZVhsb2dT dHJlYW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkKIAogZXJyb3I6CiAJaWYg KHdhbGZpbGUgIT0gTlVMTCAmJiBzdHJlYW0tPndhbG1ldGhvZC0+Y2xvc2Uod2FsZmlsZSwg Q0xPU0VfTk9fUkVOQU1FKSAhPSAwKQotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxk IG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBjdXJyZW50 X3dhbGZpbGVfbmFtZSwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsKKwkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJ IGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9y KCkpOwogCXdhbGZpbGUgPSBOVUxMOwogCXJldHVybiBmYWxzZTsKIH0KQEAgLTcyNSw5ICs3 MDUsOCBAQCBSZWFkRW5kT2ZTdHJlYW1pbmdSZXN1bHQoUEdyZXN1bHQgKnJlcywgWExvZ1Jl Y1B0ciAqc3RhcnRwb3MsIHVpbnQzMiAqdGltZWxpbmUpCiAJICovCiAJaWYgKFBRbmZpZWxk cyhyZXMpIDwgMiB8fCBQUW50dXBsZXMocmVzKSAhPSAxKQogCXsKLQkJZnByaW50ZihzdGRl cnIsCi0JCQkJXygiJXM6IHVuZXhwZWN0ZWQgcmVzdWx0IHNldCBhZnRlciBlbmQtb2YtdGlt ZWxpbmU6IGdvdCAlZCByb3dzIGFuZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5k ICVkIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUsIFBRbnR1cGxlcyhyZXMpLCBQUW5maWVs ZHMocmVzKSwgMSwgMik7CisJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCByZXN1bHQgc2V0 IGFmdGVyIGVuZC1vZi10aW1lbGluZTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhw ZWN0ZWQgJWQgcm93cyBhbmQgJWQgZmllbGRzIiwKKwkJCQkJIFBRbnR1cGxlcyhyZXMpLCBQ UW5maWVsZHMocmVzKSwgMSwgMik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTczNSw5 ICs3MTQsOCBAQCBSZWFkRW5kT2ZTdHJlYW1pbmdSZXN1bHQoUEdyZXN1bHQgKnJlcywgWExv Z1JlY1B0ciAqc3RhcnRwb3MsIHVpbnQzMiAqdGltZWxpbmUpCiAJaWYgKHNzY2FuZihQUWdl dHZhbHVlKHJlcywgMCwgMSksICIlWC8lWCIsICZzdGFydHBvc194bG9naWQsCiAJCQkgICAm c3RhcnRwb3NfeHJlY29mZikgIT0gMikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8o IiVzOiBjb3VsZCBub3QgcGFyc2UgbmV4dCB0aW1lbGluZSdzIHN0YXJ0aW5nIHBvaW50IFwi JXNcIlxuIiksCi0JCQkJcHJvZ25hbWUsIFBRZ2V0dmFsdWUocmVzLCAwLCAxKSk7CisJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIG5leHQgdGltZWxpbmUncyBzdGFydGluZyBw b2ludCBcIiVzXCIiLAorCQkJCQkgUFFnZXR2YWx1ZShyZXMsIDAsIDEpKTsKIAkJcmV0dXJu IGZhbHNlOwogCX0KIAkqc3RhcnRwb3MgPSAoKHVpbnQ2NCkgc3RhcnRwb3NfeGxvZ2lkIDw8 IDMyKSB8IHN0YXJ0cG9zX3hyZWNvZmY7CkBAIC03ODUsOCArNzYzLDggQEAgSGFuZGxlQ29w eVN0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAqc3RyZWFtLAogCQl7CiAJCQlpZiAo c3RyZWFtLT53YWxtZXRob2QtPnN5bmMod2FsZmlsZSkgIT0gMCkKIAkJCXsKLQkJCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJXNcbiIp LAotCQkJCQkJcHJvZ25hbWUsIGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0tPndhbG1l dGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGZz eW5jIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkJIGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBz dHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQkJCWdvdG8gZXJyb3I7CiAJ CQl9CiAJCQlsYXN0Rmx1c2hQb3NpdGlvbiA9IGJsb2NrcG9zOwpAQCAtODU1LDggKzgzMyw4 IEBAIEhhbmRsZUNvcHlTdHJlYW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSwK IAkJCX0KIAkJCWVsc2UKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHVucmVj b2duaXplZCBzdHJlYW1pbmcgaGVhZGVyOiBcIiVjXCJcbiIpLAotCQkJCQkJcHJvZ25hbWUs IGNvcHlidWZbMF0pOworCQkJCXBnX2xvZ19lcnJvcigidW5yZWNvZ25pemVkIHN0cmVhbWlu ZyBoZWFkZXI6IFwiJWNcIiIsCisJCQkJCQkJIGNvcHlidWZbMF0pOwogCQkJCWdvdG8gZXJy b3I7CiAJCQl9CiAKQEAgLTg5NSw4ICs4NzMsNyBAQCBDb3B5U3RyZWFtUG9sbChQR2Nvbm4g KmNvbm4sIGxvbmcgdGltZW91dF9tcywgcGdzb2NrZXQgc3RvcF9zb2NrZXQpCiAJY29ubnNv Y2tldCA9IFBRc29ja2V0KGNvbm4pOwogCWlmIChjb25uc29ja2V0IDwgMCkKIAl7Ci0JCWZw cmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBzb2NrZXQ6ICVzIiksIHByb2duYW1lLAot CQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHNv Y2tldDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCXJldHVybiAtMTsKIAl9CiAK QEAgLTkyNCw4ICs5MDEsNyBAQCBDb3B5U3RyZWFtUG9sbChQR2Nvbm4gKmNvbm4sIGxvbmcg dGltZW91dF9tcywgcGdzb2NrZXQgc3RvcF9zb2NrZXQpCiAJewogCQlpZiAoZXJybm8gPT0g RUlOVFIpCiAJCQlyZXR1cm4gMDsJCQkvKiBHb3QgYSBzaWduYWwsIHNvIG5vdCBhbiBlcnJv ciAqLwotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHNlbGVjdCgpIGZhaWxlZDogJXNcbiIp LAotCQkJCXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoInNl bGVjdCgpIGZhaWxlZDogJW0iKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlpZiAocmV0ID4gMCAm JiBGRF9JU1NFVChjb25uc29ja2V0LCAmaW5wdXRfbWFzaykpCkBAIC05NzUsOSArOTUxLDgg QEAgQ29weVN0cmVhbVJlY2VpdmUoUEdjb25uICpjb25uLCBsb25nIHRpbWVvdXQsIHBnc29j a2V0IHN0b3Bfc29ja2V0LAogCQkvKiBOb3cgdGhlcmUgaXMgYWN0dWFsbHkgZGF0YSBvbiB0 aGUgc29ja2V0ICovCiAJCWlmIChQUWNvbnN1bWVJbnB1dChjb25uKSA9PSAwKQogCQl7Ci0J CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCByZWNlaXZlIGRhdGEg ZnJvbSBXQUwgc3RyZWFtOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVjZWl2ZSBkYXRhIGZyb20g V0FMIHN0cmVhbTogJXMiLAorCQkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCXJl dHVybiAtMTsKIAkJfQogCkBAIC05OTAsOCArOTY1LDcgQEAgQ29weVN0cmVhbVJlY2VpdmUo UEdjb25uICpjb25uLCBsb25nIHRpbWVvdXQsIHBnc29ja2V0IHN0b3Bfc29ja2V0LAogCQly ZXR1cm4gLTI7CiAJaWYgKHJhd2xlbiA9PSAtMikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBf KCIlczogY291bGQgbm90IHJlYWQgQ09QWSBkYXRhOiAlcyIpLAotCQkJCXByb2duYW1lLCBQ UWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJlYWQg Q09QWSBkYXRhOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJcmV0dXJuIC0xOwog CX0KIApAQCAtMTAyMSw4ICs5OTUsNyBAQCBQcm9jZXNzS2VlcGFsaXZlTXNnKFBHY29ubiAq Y29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNoYXIgKmNvcHlidWYsIGludCBsZW4sCiAKIAlp ZiAobGVuIDwgcG9zICsgMSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogc3RyZWFt aW5nIGhlYWRlciB0b28gc21hbGw6ICVkXG4iKSwKLQkJCQlwcm9nbmFtZSwgbGVuKTsKKwkJ cGdfbG9nX2Vycm9yKCJzdHJlYW1pbmcgaGVhZGVyIHRvbyBzbWFsbDogJWQiLCBsZW4pOwog CQlyZXR1cm4gZmFsc2U7CiAJfQogCXJlcGx5UmVxdWVzdGVkID0gY29weWJ1Zltwb3NdOwpA QCAtMTA0Miw4ICsxMDE1LDggQEAgUHJvY2Vzc0tlZXBhbGl2ZU1zZyhQR2Nvbm4gKmNvbm4s IFN0cmVhbUN0bCAqc3RyZWFtLCBjaGFyICpjb3B5YnVmLCBpbnQgbGVuLAogCQkJICovCiAJ CQlpZiAoc3RyZWFtLT53YWxtZXRob2QtPnN5bmMod2FsZmlsZSkgIT0gMCkKIAkJCXsKLQkJ CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjog JXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0t PndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkJIGN1cnJlbnRfd2FsZmlsZV9u YW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQkJCXJldHVybiBm YWxzZTsKIAkJCX0KIAkJCWxhc3RGbHVzaFBvc2l0aW9uID0gYmxvY2twb3M7CkBAIC0xMDg4 LDggKzEwNjEsNyBAQCBQcm9jZXNzWExvZ0RhdGFNc2coUEdjb25uICpjb25uLCBTdHJlYW1D dGwgKnN0cmVhbSwgY2hhciAqY29weWJ1ZiwgaW50IGxlbiwKIAloZHJfbGVuICs9IDg7CQkJ CS8qIHNlbmRUaW1lICovCiAJaWYgKGxlbiA8IGhkcl9sZW4pCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IHN0cmVhbWluZyBoZWFkZXIgdG9vIHNtYWxsOiAlZFxuIiksCi0JCQkJ cHJvZ25hbWUsIGxlbik7CisJCXBnX2xvZ19lcnJvcigic3RyZWFtaW5nIGhlYWRlciB0b28g c21hbGw6ICVkIiwgbGVuKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAkqYmxvY2twb3MgPSBm ZV9yZWN2aW50NjQoJmNvcHlidWZbMV0pOwpAQCAtMTEwNiw5ICsxMDc4LDggQEAgUHJvY2Vz c1hMb2dEYXRhTXNnKFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNoYXIgKmNv cHlidWYsIGludCBsZW4sCiAJCS8qIE5vIGZpbGUgb3BlbiB5ZXQgKi8KIAkJaWYgKHhsb2dv ZmYgIT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiByZWNlaXZl ZCB3cml0ZS1haGVhZCBsb2cgcmVjb3JkIGZvciBvZmZzZXQgJXUgd2l0aCBubyBmaWxlIG9w ZW5cbiIpLAotCQkJCQlwcm9nbmFtZSwgeGxvZ29mZik7CisJCQlwZ19sb2dfZXJyb3IoInJl Y2VpdmVkIHdyaXRlLWFoZWFkIGxvZyByZWNvcmQgZm9yIG9mZnNldCAldSB3aXRoIG5vIGZp bGUgb3BlbiIsCisJCQkJCQkgeGxvZ29mZik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9 CkBAIC0xMTE3LDkgKzEwODgsOCBAQCBQcm9jZXNzWExvZ0RhdGFNc2coUEdjb25uICpjb25u LCBTdHJlYW1DdGwgKnN0cmVhbSwgY2hhciAqY29weWJ1ZiwgaW50IGxlbiwKIAkJLyogTW9y ZSBkYXRhIGluIGV4aXN0aW5nIHNlZ21lbnQgKi8KIAkJaWYgKHN0cmVhbS0+d2FsbWV0aG9k LT5nZXRfY3VycmVudF9wb3Mod2FsZmlsZSkgIT0geGxvZ29mZikKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBnb3QgV0FMIGRhdGEgb2Zmc2V0ICUwOHgsIGV4cGVj dGVkICUwOHhcbiIpLAotCQkJCQlwcm9nbmFtZSwgeGxvZ29mZiwgKGludCkgc3RyZWFtLT53 YWxtZXRob2QtPmdldF9jdXJyZW50X3Bvcyh3YWxmaWxlKSk7CisJCQlwZ19sb2dfZXJyb3Io ImdvdCBXQUwgZGF0YSBvZmZzZXQgJTA4eCwgZXhwZWN0ZWQgJTA4eCIsCisJCQkJCQkgeGxv Z29mZiwgKGludCkgc3RyZWFtLT53YWxtZXRob2QtPmdldF9jdXJyZW50X3Bvcyh3YWxmaWxl KSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9CkBAIC0xMTUyLDEwICsxMTIyLDkgQEAg UHJvY2Vzc1hMb2dEYXRhTXNnKFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNo YXIgKmNvcHlidWYsIGludCBsZW4sCiAJCWlmIChzdHJlYW0tPndhbG1ldGhvZC0+d3JpdGUo d2FsZmlsZSwgY29weWJ1ZiArIGhkcl9sZW4gKyBieXRlc193cml0dGVuLAogCQkJCQkJCQkJ IGJ5dGVzX3RvX3dyaXRlKSAhPSBieXRlc190b193cml0ZSkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgJXUgYnl0ZXMgdG8gV0FMIGZp bGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBieXRlc190b193cml0ZSwgY3Vy cmVudF93YWxmaWxlX25hbWUsCi0JCQkJCXN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJy b3IoKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSAldSBieXRlcyB0byBX QUwgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJCSBieXRlc190b193cml0ZSwgY3VycmVudF93 YWxmaWxlX25hbWUsCisJCQkJCQkgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigp KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCkBAIC0xMTc4LDggKzExNDcsOCBAQCBQcm9j ZXNzWExvZ0RhdGFNc2coUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSwgY2hhciAq Y29weWJ1ZiwgaW50IGxlbiwKIAkJCXsKIAkJCQlpZiAoUFFwdXRDb3B5RW5kKGNvbm4sIE5V TEwpIDw9IDAgfHwgUFFmbHVzaChjb25uKSkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IHNlbmQgY29weS1lbmQgcGFja2V0OiAlcyIpLAotCQkJCQkJ CXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQkJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IHNlbmQgY29weS1lbmQgcGFja2V0OiAlcyIsCisJCQkJCQkJCSBQUWVycm9y TWVzc2FnZShjb25uKSk7CiAJCQkJCXJldHVybiBmYWxzZTsKIAkJCQl9CiAJCQkJc3RpbGxf c2VuZGluZyA9IGZhbHNlOwpAQCAtMTIxOCw5ICsxMTg3LDggQEAgSGFuZGxlRW5kT2ZDb3B5 U3RyZWFtKFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNoYXIgKmNvcHlidWYs CiAJCXsKIAkJCWlmIChQUXB1dENvcHlFbmQoY29ubiwgTlVMTCkgPD0gMCB8fCBQUWZsdXNo KGNvbm4pKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IGNvdWxk IG5vdCBzZW5kIGNvcHktZW5kIHBhY2tldDogJXMiKSwKLQkJCQkJCXByb2duYW1lLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2VuZCBj b3B5LWVuZCBwYWNrZXQ6ICVzIiwKKwkJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwog CQkJCVBRY2xlYXIocmVzKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KQEAgLTEyNTAsOCAr MTIxOCw4IEBAIENoZWNrQ29weVN0cmVhbVN0b3AoUEdjb25uICpjb25uLCBTdHJlYW1DdGwg KnN0cmVhbSwgWExvZ1JlY1B0ciBibG9ja3BvcywKIAkJfQogCQlpZiAoUFFwdXRDb3B5RW5k KGNvbm4sIE5VTEwpIDw9IDAgfHwgUFFmbHVzaChjb25uKSkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc2VuZCBjb3B5LWVuZCBwYWNrZXQ6ICVzIiksCi0J CQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBzZW5kIGNvcHktZW5kIHBhY2tldDogJXMiLAorCQkJCQkJIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQlzdGlsbF9zZW5kaW5n ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvc3RyZWFtdXRp bC5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3N0cmVhbXV0aWwuYwppbmRleCA3ZTg2ODMw YWQ4Li5hYjJlNTVkNjk1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvc3Ry ZWFtdXRpbC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9zdHJlYW11dGlsLmMKQEAg LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAjaW5jbHVk ZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvY29ubmVjdC5o IgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJwb3J0L3BnX2Jz d2FwLmgiCiAjaW5jbHVkZSAicHFleHBidWZmZXIuaCIKIApAQCAtOTAsNyArOTEsNyBAQCBH ZXRDb25uZWN0aW9uKHZvaWQpCiAJCWNvbm5fb3B0cyA9IFBRY29ubmluZm9QYXJzZShjb25u ZWN0aW9uX3N0cmluZywgJmVycl9tc2cpOwogCQlpZiAoY29ubl9vcHRzID09IE5VTEwpCiAJ CXsKLQkJCWZwcmludGYoc3RkZXJyLCAiJXM6ICVzIiwgcHJvZ25hbWUsIGVycl9tc2cpOwor CQkJcGdfbG9nX2Vycm9yKCIlcyIsIGVycl9tc2cpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBA IC0xODMsOCArMTg0LDcgQEAgR2V0Q29ubmVjdGlvbih2b2lkKQogCQkgKi8KIAkJaWYgKCF0 bXBjb25uKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjb25u ZWN0IHRvIHNlcnZlclxuIiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyIik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAg LTIwMSw4ICsyMDEsOCBAQCBHZXRDb25uZWN0aW9uKHZvaWQpCiAKIAlpZiAoUFFzdGF0dXMo dG1wY29ubikgIT0gQ09OTkVDVElPTl9PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyOiAlcyIpLAotCQkJCXByb2duYW1lLCBQ UWVycm9yTWVzc2FnZSh0bXBjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNv bm5lY3QgdG8gc2VydmVyOiAlcyIsCisJCQkJCSBQUWVycm9yTWVzc2FnZSh0bXBjb25uKSk7 CiAJCVBRZmluaXNoKHRtcGNvbm4pOwogCQlmcmVlKHZhbHVlcyk7CiAJCWZyZWUoa2V5d29y ZHMpOwpAQCAtMjMwLDggKzIzMCw4IEBAIEdldENvbm5lY3Rpb24odm9pZCkKIAkJcmVzID0g UFFleGVjKHRtcGNvbm4sIEFMV0FZU19TRUNVUkVfU0VBUkNIX1BBVEhfU1FMKTsKIAkJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjbGVhciBzZWFyY2hfcGF0aDogJXMiKSwK LQkJCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKHRtcGNvbm4pKTsKKwkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IGNsZWFyIHNlYXJjaF9wYXRoOiAlcyIsCisJCQkJCQkgUFFlcnJv ck1lc3NhZ2UodG1wY29ubikpOwogCQkJUFFjbGVhcihyZXMpOwogCQkJUFFmaW5pc2godG1w Y29ubik7CiAJCQlleGl0KDEpOwpAQCAtMjQ2LDE4ICsyNDYsMTQgQEAgR2V0Q29ubmVjdGlv bih2b2lkKQogCXRtcHBhcmFtID0gUFFwYXJhbWV0ZXJTdGF0dXModG1wY29ubiwgImludGVn ZXJfZGF0ZXRpbWVzIik7CiAJaWYgKCF0bXBwYXJhbSkKIAl7Ci0JCWZwcmludGYoc3RkZXJy LAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZGV0ZXJtaW5lIHNlcnZlciBzZXR0aW5nIGZvciBp bnRlZ2VyX2RhdGV0aW1lc1xuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBkZXRlcm1pbmUgc2VydmVyIHNldHRpbmcgZm9yIGludGVnZXJfZGF0ZXRp bWVzIik7CiAJCVBRZmluaXNoKHRtcGNvbm4pOwogCQlleGl0KDEpOwogCX0KIAogCWlmIChz dHJjbXAodG1wcGFyYW0sICJvbiIpICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CQlfKCIlczogaW50ZWdlcl9kYXRldGltZXMgY29tcGlsZSBmbGFnIGRvZXMgbm90IG1hdGNo IHNlcnZlclxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImludGVnZXJf ZGF0ZXRpbWVzIGNvbXBpbGUgZmxhZyBkb2VzIG5vdCBtYXRjaCBzZXJ2ZXIiKTsKIAkJUFFm aW5pc2godG1wY29ubik7CiAJCWV4aXQoMSk7CiAJfQpAQCAtMzAwLDE3ICsyOTYsMTYgQEAg UmV0cmlldmVXYWxTZWdTaXplKFBHY29ubiAqY29ubikKIAlyZXMgPSBQUWV4ZWMoY29ubiwg IlNIT1cgd2FsX3NlZ21lbnRfc2l6ZSIpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9 IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiksCi0JCQkJcHJvZ25h bWUsICJTSE9XIHdhbF9zZWdtZW50X3NpemUiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVz XCI6ICVzIiwKKwkJCQkJICJTSE9XIHdhbF9zZWdtZW50X3NpemUiLCBQUWVycm9yTWVzc2Fn ZShjb25uKSk7CiAKIAkJUFFjbGVhcihyZXMpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCWlm IChQUW50dXBsZXMocmVzKSAhPSAxIHx8IFBRbmZpZWxkcyhyZXMpIDwgMSkKIAl7Ci0JCWZw cmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZmV0Y2ggV0FMIHNlZ21lbnQg c2l6ZTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQg JWQgb3IgbW9yZSBmaWVsZHNcbiIpLAotCQkJCXByb2duYW1lLCBQUW50dXBsZXMocmVzKSwg UFFuZmllbGRzKHJlcyksIDEsIDEpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBmZXRj aCBXQUwgc2VnbWVudCBzaXplOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3Rl ZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkcyIsCisJCQkJCSBQUW50dXBsZXMocmVz KSwgUFFuZmllbGRzKHJlcyksIDEsIDEpOwogCiAJCVBRY2xlYXIocmVzKTsKIAkJcmV0dXJu IGZhbHNlOwpAQCAtMzE5LDggKzMxNCw3IEBAIFJldHJpZXZlV2FsU2VnU2l6ZShQR2Nvbm4g KmNvbm4pCiAJLyogZmV0Y2ggeGxvZyB2YWx1ZSBhbmQgdW5pdCBmcm9tIHRoZSByZXN1bHQg Ki8KIAlpZiAoc3NjYW5mKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSwgIiVkJXMiLCAmeGxvZ192 YWwsIHhsb2dfdW5pdCkgIT0gMikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogV0FM IHNlZ21lbnQgc2l6ZSBjb3VsZCBub3QgYmUgcGFyc2VkXG4iKSwKLQkJCQlwcm9nbmFtZSk7 CisJCXBnX2xvZ19lcnJvcigiV0FMIHNlZ21lbnQgc2l6ZSBjb3VsZCBub3QgYmUgcGFyc2Vk Iik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTMzNSwxMSArMzI5LDEwIEBAIFJldHJp ZXZlV2FsU2VnU2l6ZShQR2Nvbm4gKmNvbm4pCiAKIAlpZiAoIUlzVmFsaWRXYWxTZWdTaXpl KFdhbFNlZ1N6KSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCW5nZXR0ZXh0KCIlczog V0FMIHNlZ21lbnQgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBh bmQgMSBHQiwgYnV0IHRoZSByZW1vdGUgc2VydmVyIHJlcG9ydGVkIGEgdmFsdWUgb2YgJWQg Ynl0ZVxuIiwKLQkJCQkJCSAiJXM6IFdBTCBzZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2Vy IG9mIHR3byBiZXR3ZWVuIDEgTUIgYW5kIDEgR0IsIGJ1dCB0aGUgcmVtb3RlIHNlcnZlciBy ZXBvcnRlZCBhIHZhbHVlIG9mICVkIGJ5dGVzXG4iLAotCQkJCQkJIFdhbFNlZ1N6KSwKLQkJ CQlwcm9nbmFtZSwgV2FsU2VnU3opOworCQlwZ19sb2dfZXJyb3IobmdldHRleHQoIldBTCBz ZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byBiZXR3ZWVuIDEgTUIgYW5kIDEg R0IsIGJ1dCB0aGUgcmVtb3RlIHNlcnZlciByZXBvcnRlZCBhIHZhbHVlIG9mICVkIGJ5dGUi LAorCQkJCQkJCSAgIldBTCBzZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byBi ZXR3ZWVuIDEgTUIgYW5kIDEgR0IsIGJ1dCB0aGUgcmVtb3RlIHNlcnZlciByZXBvcnRlZCBh IHZhbHVlIG9mICVkIGJ5dGVzIiwKKwkJCQkJCQkgIFdhbFNlZ1N6KSwKKwkJCQkJIFdhbFNl Z1N6KTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMzc0LDE3ICszNjcsMTYgQEAgUmV0 cmlldmVEYXRhRGlyQ3JlYXRlUGVybShQR2Nvbm4gKmNvbm4pCiAJcmVzID0gUFFleGVjKGNv bm4sICJTSE9XIGRhdGFfZGlyZWN0b3J5X21vZGUiKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMo cmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIpLAotCQkJ CXByb2duYW1lLCAiU0hPVyBkYXRhX2RpcmVjdG9yeV9tb2RlIiwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNv bW1hbmQgXCIlc1wiOiAlcyIsCisJCQkJCSAiU0hPVyBkYXRhX2RpcmVjdG9yeV9tb2RlIiwg UFFlcnJvck1lc3NhZ2UoY29ubikpOwogCiAJCVBRY2xlYXIocmVzKTsKIAkJcmV0dXJuIGZh bHNlOwogCX0KIAlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSB8fCBQUW5maWVsZHMocmVzKSA8 IDEpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQgbm90IGZldGNo IGdyb3VwIGFjY2VzcyBmbGFnOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3Rl ZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUsIFBR bnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwgMSk7CisJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IGZldGNoIGdyb3VwIGFjY2VzcyBmbGFnOiBnb3QgJWQgcm93cyBhbmQgJWQg ZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkcyIsCisJCQkJ CSBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDEpOwogCiAJCVBRY2xlYXIo cmVzKTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMzkyLDggKzM4NCw4IEBAIFJldHJpZXZlRGF0 YURpckNyZWF0ZVBlcm0oUEdjb25uICpjb25uKQogCiAJaWYgKHNzY2FuZihQUWdldHZhbHVl KHJlcywgMCwgMCksICIlbyIsICZkYXRhX2RpcmVjdG9yeV9tb2RlKSAhPSAxKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBncm91cCBhY2Nlc3MgZmxhZyBjb3VsZCBub3QgYmUg cGFyc2VkOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7 CisJCXBnX2xvZ19lcnJvcigiZ3JvdXAgYWNjZXNzIGZsYWcgY291bGQgbm90IGJlIHBhcnNl ZDogJXMiLAorCQkJCQkgUFFnZXR2YWx1ZShyZXMsIDAsIDApKTsKIAogCQlQUWNsZWFyKHJl cyk7CiAJCXJldHVybiBmYWxzZTsKQEAgLTQyNywxNyArNDE5LDE2IEBAIFJ1bklkZW50aWZ5 U3lzdGVtKFBHY29ubiAqY29ubiwgY2hhciAqKnN5c2lkLCBUaW1lTGluZUlEICpzdGFydHRs aSwKIAlyZXMgPSBQUWV4ZWMoY29ubiwgIklERU5USUZZX1NZU1RFTSIpOwogCWlmIChQUXJl c3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVzXCI6 ICVzIiksCi0JCQkJcHJvZ25hbWUsICJJREVOVElGWV9TWVNURU0iLCBQUWVycm9yTWVzc2Fn ZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24g Y29tbWFuZCBcIiVzXCI6ICVzIiwKKwkJCQkJICJJREVOVElGWV9TWVNURU0iLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CiAKIAkJUFFjbGVhcihyZXMpOwogCQlyZXR1cm4gZmFsc2U7CiAJ fQogCWlmIChQUW50dXBsZXMocmVzKSAhPSAxIHx8IFBRbmZpZWxkcyhyZXMpIDwgMykKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBub3QgaWRlbnRpZnkgc3lz dGVtOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAl ZCBvciBtb3JlIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUsIFBRbnR1cGxlcyhyZXMpLCBQ UW5maWVsZHMocmVzKSwgMSwgMyk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGlkZW50 aWZ5IHN5c3RlbTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93 cyBhbmQgJWQgb3IgbW9yZSBmaWVsZHMiLAorCQkJCQkgUFFudHVwbGVzKHJlcyksIFBRbmZp ZWxkcyhyZXMpLCAxLCAzKTsKIAogCQlQUWNsZWFyKHJlcyk7CiAJCXJldHVybiBmYWxzZTsK QEAgLTQ1Niw5ICs0NDcsOCBAQCBSdW5JZGVudGlmeVN5c3RlbShQR2Nvbm4gKmNvbm4sIGNo YXIgKipzeXNpZCwgVGltZUxpbmVJRCAqc3RhcnR0bGksCiAJewogCQlpZiAoc3NjYW5mKFBR Z2V0dmFsdWUocmVzLCAwLCAyKSwgIiVYLyVYIiwgJmhpLCAmbG8pICE9IDIpCiAJCXsKLQkJ CWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY291bGQgbm90IHBhcnNlIHdyaXRlLWFo ZWFkIGxvZyBsb2NhdGlvbiBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgUFFnZXR2YWx1 ZShyZXMsIDAsIDIpKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIHdyaXRl LWFoZWFkIGxvZyBsb2NhdGlvbiBcIiVzXCIiLAorCQkJCQkJIFBRZ2V0dmFsdWUocmVzLCAw LCAyKSk7CiAKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJldHVybiBmYWxzZTsKQEAgLTQ3NCw5 ICs0NjQsOCBAQCBSdW5JZGVudGlmeVN5c3RlbShQR2Nvbm4gKmNvbm4sIGNoYXIgKipzeXNp ZCwgVGltZUxpbmVJRCAqc3RhcnR0bGksCiAJCXsKIAkJCWlmIChQUW5maWVsZHMocmVzKSA8 IDQpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogY291bGQgbm90 IGlkZW50aWZ5IHN5c3RlbTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQg JWQgcm93cyBhbmQgJWQgb3IgbW9yZSBmaWVsZHNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIFBR bnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwgNCk7CisJCQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3QgaWRlbnRpZnkgc3lzdGVtOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRz LCBleHBlY3RlZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkcyIsCisJCQkJCQkJIFBR bnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwgNCk7CiAKIAkJCQlQUWNsZWFyKHJl cyk7CiAJCQkJcmV0dXJuIGZhbHNlOwpAQCAtNTQxLDggKzUzMCw4IEBAIENyZWF0ZVJlcGxp Y2F0aW9uU2xvdChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNsb3RfbmFtZSwgY29uc3Qg Y2hhciAqcGx1Z2luLAogCQl9CiAJCWVsc2UKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3Qgc2VuZCByZXBsaWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiKSwK LQkJCQkJcHJvZ25hbWUsIHF1ZXJ5LT5kYXRhLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJ CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIl c1wiOiAlcyIsCisJCQkJCQkgcXVlcnktPmRhdGEsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK IAogCQkJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAkJCVBRY2xlYXIocmVzKTsKQEAg LTU1MiwxMCArNTQxLDkgQEAgQ3JlYXRlUmVwbGljYXRpb25TbG90KFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqc2xvdF9uYW1lLCBjb25zdCBjaGFyICpwbHVnaW4sCiAKIAlpZiAoUFFu dHVwbGVzKHJlcykgIT0gMSB8fCBQUW5maWVsZHMocmVzKSAhPSA0KQogCXsKLQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgcmVwbGljYXRpb24gc2xv dCBcIiVzXCI6IGdvdCAlZCByb3dzIGFuZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3Mg YW5kICVkIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUsIHNsb3RfbmFtZSwKLQkJCQlQUW50 dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDQpOworCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBjcmVhdGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCI6IGdvdCAlZCByb3dzIGFu ZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIGZpZWxkcyIsCisJCQkJCSBz bG90X25hbWUsCisJCQkJCSBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDQp OwogCiAJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CiAJCVBRY2xlYXIocmVzKTsKQEAg LTU4Nyw4ICs1NzUsOCBAQCBEcm9wUmVwbGljYXRpb25TbG90KFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqc2xvdF9uYW1lKQogCXJlcyA9IFBRZXhlYyhjb25uLCBxdWVyeS0+ZGF0YSk7 CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAl7Ci0J CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24gY29t bWFuZCBcIiVzXCI6ICVzIiksCi0JCQkJcHJvZ25hbWUsIHF1ZXJ5LT5kYXRhLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVwbGlj YXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiwKKwkJCQkJIHF1ZXJ5LT5kYXRhLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CiAKIAkJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAkJUFFj bGVhcihyZXMpOwpAQCAtNTk3LDEwICs1ODUsOSBAQCBEcm9wUmVwbGljYXRpb25TbG90KFBH Y29ubiAqY29ubiwgY29uc3QgY2hhciAqc2xvdF9uYW1lKQogCiAJaWYgKFBRbnR1cGxlcyhy ZXMpICE9IDAgfHwgUFFuZmllbGRzKHJlcykgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJy LAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZHJvcCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIjog Z290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQgJWQgZmll bGRzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc2xvdF9uYW1lLAotCQkJCVBRbnR1cGxlcyhyZXMp LCBQUW5maWVsZHMocmVzKSwgMCwgMCk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGRy b3AgcmVwbGljYXRpb24gc2xvdCBcIiVzXCI6IGdvdCAlZCByb3dzIGFuZCAlZCBmaWVsZHMs IGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIGZpZWxkcyIsCisJCQkJCSBzbG90X25hbWUsCisJ CQkJCSBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDAsIDApOwogCiAJCWRlc3Ry b3lQUUV4cEJ1ZmZlcihxdWVyeSk7CiAJCVBRY2xlYXIocmVzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfYmFzZWJhY2t1cC93YWxtZXRob2RzLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNr dXAvd2FsbWV0aG9kcy5jCmluZGV4IDc0MTBhZjNlNjMuLjU2ZTM4M2U0YWQgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC93YWxtZXRob2RzLmMKKysrIGIvc3JjL2Jpbi9w Z19iYXNlYmFja3VwL3dhbG1ldGhvZHMuYwpAQCAtMTU1LDggKzE1NSw4IEBAIGRpcl9vcGVu X2Zvcl93cml0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqdGVtcF9zdWZm aXgsIHNpemVfdCBwYWRfdG9fCiAJICovCiAJaWYgKGRpcl9kYXRhLT5zeW5jKQogCXsKLQkJ aWYgKGZzeW5jX2ZuYW1lKHRtcHBhdGgsIGZhbHNlLCBwcm9nbmFtZSkgIT0gMCB8fAotCQkJ ZnN5bmNfcGFyZW50X3BhdGgodG1wcGF0aCwgcHJvZ25hbWUpICE9IDApCisJCWlmIChmc3lu Y19mbmFtZSh0bXBwYXRoLCBmYWxzZSkgIT0gMCB8fAorCQkJZnN5bmNfcGFyZW50X3BhdGgo dG1wcGF0aCkgIT0gMCkKIAkJewogI2lmZGVmIEhBVkVfTElCWgogCQkJaWYgKGRpcl9kYXRh LT5jb21wcmVzc2lvbiA+IDApCkBAIC0yNDQsNyArMjQ0LDcgQEAgZGlyX2Nsb3NlKFdhbGZp bGUgZiwgV2FsQ2xvc2VNZXRob2QgbWV0aG9kKQogCQkJc25wcmludGYodG1wcGF0aDIsIHNp emVvZih0bXBwYXRoMiksICIlcy8lcyVzIiwKIAkJCQkJIGRpcl9kYXRhLT5iYXNlZGlyLCBk Zi0+cGF0aG5hbWUsCiAJCQkJCSBkaXJfZGF0YS0+Y29tcHJlc3Npb24gPiAwID8gIi5neiIg OiAiIik7Ci0JCQlyID0gZHVyYWJsZV9yZW5hbWUodG1wcGF0aCwgdG1wcGF0aDIsIHByb2du YW1lKTsKKwkJCXIgPSBkdXJhYmxlX3JlbmFtZSh0bXBwYXRoLCB0bXBwYXRoMik7CiAJCX0K IAkJZWxzZSBpZiAobWV0aG9kID09IENMT1NFX1VOTElOSykKIAkJewpAQCAtMjY0LDkgKzI2 NCw5IEBAIGRpcl9jbG9zZShXYWxmaWxlIGYsIFdhbENsb3NlTWV0aG9kIG1ldGhvZCkKIAkJ CSAqLwogCQkJaWYgKGRpcl9kYXRhLT5zeW5jKQogCQkJewotCQkJCXIgPSBmc3luY19mbmFt ZShkZi0+ZnVsbHBhdGgsIGZhbHNlLCBwcm9nbmFtZSk7CisJCQkJciA9IGZzeW5jX2ZuYW1l KGRmLT5mdWxscGF0aCwgZmFsc2UpOwogCQkJCWlmIChyID09IDApCi0JCQkJCXIgPSBmc3lu Y19wYXJlbnRfcGF0aChkZi0+ZnVsbHBhdGgsIHByb2duYW1lKTsKKwkJCQkJciA9IGZzeW5j X3BhcmVudF9wYXRoKGRmLT5mdWxscGF0aCk7CiAJCQl9CiAJCX0KIAl9CkBAIC0zMzksNyAr MzM5LDcgQEAgZGlyX2ZpbmlzaCh2b2lkKQogCQkgKiBGaWxlcyBhcmUgZnN5bmNlZCB3aGVu IHRoZXkgYXJlIGNsb3NlZCwgYnV0IHdlIG5lZWQgdG8gZnN5bmMgdGhlCiAJCSAqIGRpcmVj dG9yeSBlbnRyeSBoZXJlIGFzIHdlbGwuCiAJCSAqLwotCQlpZiAoZnN5bmNfZm5hbWUoZGly X2RhdGEtPmJhc2VkaXIsIHRydWUsIHByb2duYW1lKSAhPSAwKQorCQlpZiAoZnN5bmNfZm5h bWUoZGlyX2RhdGEtPmJhc2VkaXIsIHRydWUpICE9IDApCiAJCQlyZXR1cm4gZmFsc2U7CiAJ fQogCXJldHVybiB0cnVlOwpAQCAtOTcwLDkgKzk3MCw5IEBAIHRhcl9maW5pc2godm9pZCkK IAogCWlmICh0YXJfZGF0YS0+c3luYykKIAl7Ci0JCWlmIChmc3luY19mbmFtZSh0YXJfZGF0 YS0+dGFyZmlsZW5hbWUsIGZhbHNlLCBwcm9nbmFtZSkgIT0gMCkKKwkJaWYgKGZzeW5jX2Zu YW1lKHRhcl9kYXRhLT50YXJmaWxlbmFtZSwgZmFsc2UpICE9IDApCiAJCQlyZXR1cm4gZmFs c2U7Ci0JCWlmIChmc3luY19wYXJlbnRfcGF0aCh0YXJfZGF0YS0+dGFyZmlsZW5hbWUsIHBy b2duYW1lKSAhPSAwKQorCQlpZiAoZnN5bmNfcGFyZW50X3BhdGgodGFyX2RhdGEtPnRhcmZp bGVuYW1lKSAhPSAwKQogCQkJcmV0dXJuIGZhbHNlOwogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19jb250cm9sZGF0YS9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfY29udHJvbGRhdGEv TWFrZWZpbGUKaW5kZXggMmQ1YzU2MjEzMS4uNGQ5YzEzNzBmZSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19jb250cm9sZGF0YS9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX2NvbnRyb2xk YXRhL01ha2VmaWxlCkBAIC0xNSwxMSArMTUsMTMgQEAgc3ViZGlyID0gc3JjL2Jpbi9wZ19j b250cm9sZGF0YQogdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVp bGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAorTERGTEFHU19JTlRFUk5BTCArPSAtTCQo dG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKKwogT0JKUz0gcGdfY29u dHJvbGRhdGEubyAkKFdJTjMyUkVTKQogCiBhbGw6IHBnX2NvbnRyb2xkYXRhCiAKLXBnX2Nv bnRyb2xkYXRhOiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQKK3BnX2NvbnRyb2xkYXRh OiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMKIAkk KENDKSAkKENGTEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8g JEAkKFgpCiAKIGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jIGIvc3JjL2Jpbi9wZ19jb250cm9s ZGF0YS9wZ19jb250cm9sZGF0YS5jCmluZGV4IDg5NWE1MWY4OWQuLjliYjk3YTI2ZWMgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYworKysg Yi9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRhLmMKQEAgLTI0LDYgKzI0 LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgImNvbW1vbi9jb250cm9sZGF0YV91dGls cy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJwZ19nZXRv cHQuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogCkBAIC0xMDcsNyArMTA4LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWludAkJCVdhbFNlZ1N6OwogCiAJc2V0 X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19jb250cm9s ZGF0YSIpKTsKLQorCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlwcm9nbmFtZSA9IGdl dF9wcm9nbmFtZShhcmd2WzBdKTsKIAogCWlmIChhcmdjID4gMSkKQEAgLTE2NCw3ICsxNjUs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogCiAJLyogZ2V0IGEgY29w eSBvZiB0aGUgY29udHJvbCBmaWxlICovCi0JQ29udHJvbEZpbGUgPSBnZXRfY29udHJvbGZp bGUoRGF0YURpciwgcHJvZ25hbWUsICZjcmNfb2spOworCUNvbnRyb2xGaWxlID0gZ2V0X2Nv bnRyb2xmaWxlKERhdGFEaXIsICZjcmNfb2spOwogCWlmICghY3JjX29rKQogCQlwcmludGYo XygiV0FSTklORzogQ2FsY3VsYXRlZCBDUkMgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggdmFs dWUgc3RvcmVkIGluIGZpbGUuXG4iCiAJCQkJICJFaXRoZXIgdGhlIGZpbGUgaXMgY29ycnVw dCwgb3IgaXQgaGFzIGEgZGlmZmVyZW50IGxheW91dCB0aGFuIHRoaXMgcHJvZ3JhbVxuIgpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19jdGwvTWFrZWZpbGUgYi9zcmMvYmluL3BnX2N0bC9N YWtlZmlsZQppbmRleCA4M2NiZjk3ZWQ4Li5iOTMxYjE0YTNmIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2N0bC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX2N0bC9NYWtlZmlsZQpAQCAt MTYsNiArMTYsOCBAQCBzdWJkaXIgPSBzcmMvYmluL3BnX2N0bAogdG9wX2J1aWxkZGlyID0g Li4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwK IAorTERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMg LWxwZ2ZldXRpbHMKKwogIyBPbiBXaW5kb3dzLCB3ZSBuZWVkIHRvIGxpbmsgd2l0aCBsaWJw cSwganVzdCBmb3IgdXNlIG9mIHBxZXhwYnVmZmVyOwogIyBidXQgbGV0J3Mgbm90IHB1bGwg dGhhdCBpbiBvbiBwbGF0Zm9ybXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCBpdC4KIGlmZXEgKCQo UE9SVE5BTUUpLCB3aW4zMikKQEAgLTI4LDcgKzMwLDcgQEAgT0JKUz0JcGdfY3RsLm8gJChX SU4zMlJFUykKIAogYWxsOiBwZ19jdGwKIAotcGdfY3RsOiAkKE9CSlMpIHwgc3VibWFrZS1s aWJwZ3BvcnQgJChTVUJNQUtFX0xJQlBRKQorcGdfY3RsOiAkKE9CSlMpIHwgc3VibWFrZS1s aWJwZ3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMgJChTVUJNQUtFX0xJQlBRKQogCSQoQ0Mp ICQoQ0ZMQUdTKSAkKE9CSlMpICQoTERGTEFHUykgJChMREZMQUdTX0VYKSAkKExJQlMpIC1v ICRAJChYKQogCiBpbnN0YWxsOiBhbGwgaW5zdGFsbGRpcnMKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfY3RsL3BnX2N0bC5jIGIvc3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMKaW5kZXggYWFk YzcwMTEzZC4uNGRjMWYyZWM4ZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19jdGwvcGdfY3Rs LmMKKysrIGIvc3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJjb21tb24vY29udHJv bGRhdGFfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCisjaW5jbHVk ZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5j bHVkZSAidXRpbHMvcGlkZmlsZS5oIgogCkBAIC0yMTgxLDcgKzIxODIsNyBAQCBnZXRfY29u dHJvbF9kYnN0YXRlKHZvaWQpCiB7CiAJREJTdGF0ZQkJcmV0OwogCWJvb2wJCWNyY19vazsK LQlDb250cm9sRmlsZURhdGEgKmNvbnRyb2xfZmlsZV9kYXRhID0gZ2V0X2NvbnRyb2xmaWxl KHBnX2RhdGEsIHByb2duYW1lLCAmY3JjX29rKTsKKwlDb250cm9sRmlsZURhdGEgKmNvbnRy b2xfZmlsZV9kYXRhID0gZ2V0X2NvbnRyb2xmaWxlKHBnX2RhdGEsICZjcmNfb2spOwogCiAJ aWYgKCFjcmNfb2spCiAJewpAQCAtMjIyNCw2ICsyMjI1LDcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAlz ZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX2N0bCIp KTsKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAJc3RhcnRfdGltZSA9IHRpbWUoTlVM TCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jIGIvc3Jj L2Jpbi9wZ19kdW1wL2NvbW1vbi5jCmluZGV4IDI0OTcwNmZlNTcuLjU5NThmNDJhODQgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYworKysgYi9zcmMvYmluL3BnX2R1 bXAvY29tbW9uLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlIDxjdHlwZS5oPgogCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzc19kLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9n Z2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCiAKQEAgLTEy MCwxNyArMTIxLDE0IEBAIGdldFNjaGVtYURhdGEoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1U YWJsZXNQdHIpCiAJICogZXh0ZW5zaW9uIG1lbWJlcnNoaXAgbmVlZHMgdG8gYmUgY29uc3Vs dGFibGUgZHVyaW5nIGRlY2lzaW9ucyBhYm91dAogCSAqIHdoZXRoZXIgb3RoZXIgb2JqZWN0 cyBhcmUgdG8gYmUgZHVtcGVkLgogCSAqLwotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21z ZyhOVUxMLCAicmVhZGluZyBleHRlbnNpb25zXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGlu ZyBleHRlbnNpb25zIik7CiAJZXh0aW5mbyA9IGdldEV4dGVuc2lvbnMoZm91dCwgJm51bUV4 dGVuc2lvbnMpOwogCWV4dGluZm9pbmRleCA9IGJ1aWxkSW5kZXhBcnJheShleHRpbmZvLCBu dW1FeHRlbnNpb25zLCBzaXplb2YoRXh0ZW5zaW9uSW5mbykpOwogCi0JaWYgKGdfdmVyYm9z ZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJpZGVudGlmeWluZyBleHRlbnNpb24gbWVtYmVyc1xu Iik7CisJcGdfbG9nX2luZm8oImlkZW50aWZ5aW5nIGV4dGVuc2lvbiBtZW1iZXJzIik7CiAJ Z2V0RXh0ZW5zaW9uTWVtYmVyc2hpcChmb3V0LCBleHRpbmZvLCBudW1FeHRlbnNpb25zKTsK IAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBzY2hlbWFz XG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyBzY2hlbWFzIik7CiAJbnNwaW5mbyA9IGdl dE5hbWVzcGFjZXMoZm91dCwgJm51bU5hbWVzcGFjZXMpOwogCW5zcGluZm9pbmRleCA9IGJ1 aWxkSW5kZXhBcnJheShuc3BpbmZvLCBudW1OYW1lc3BhY2VzLCBzaXplb2YoTmFtZXNwYWNl SW5mbykpOwogCkBAIC0xNDAsMTYwICsxMzgsMTI0IEBAIGdldFNjaGVtYURhdGEoQXJjaGl2 ZSAqZm91dCwgaW50ICpudW1UYWJsZXNQdHIpCiAJICogSG93ZXZlciwgd2UgaGF2ZSB0byBk byBnZXROYW1lc3BhY2VzIGZpcnN0IGJlY2F1c2UgdGhlIHRhYmxlcyBnZXQKIAkgKiBsaW5r ZWQgdG8gdGhlaXIgY29udGFpbmluZyBuYW1lc3BhY2VzIGR1cmluZyBnZXRUYWJsZXMuCiAJ ICovCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHVzZXIt ZGVmaW5lZCB0YWJsZXNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVzZXItZGVmaW5l ZCB0YWJsZXMiKTsKIAl0YmxpbmZvID0gZ2V0VGFibGVzKGZvdXQsICZudW1UYWJsZXMpOwog CXRibGluZm9pbmRleCA9IGJ1aWxkSW5kZXhBcnJheSh0YmxpbmZvLCBudW1UYWJsZXMsIHNp emVvZihUYWJsZUluZm8pKTsKIAogCS8qIERvIHRoaXMgYWZ0ZXIgd2UndmUgYnVpbHQgdGJs aW5mb2luZGV4ICovCiAJZ2V0T3duZWRTZXFzKGZvdXQsIHRibGluZm8sIG51bVRhYmxlcyk7 CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1k ZWZpbmVkIGZ1bmN0aW9uc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZp bmVkIGZ1bmN0aW9ucyIpOwogCWZ1bmluZm8gPSBnZXRGdW5jcyhmb3V0LCAmbnVtRnVuY3Mp OwogCWZ1bmluZm9pbmRleCA9IGJ1aWxkSW5kZXhBcnJheShmdW5pbmZvLCBudW1GdW5jcywg c2l6ZW9mKEZ1bmNJbmZvKSk7CiAKIAkvKiB0aGlzIG11c3QgYmUgYWZ0ZXIgZ2V0VGFibGVz IGFuZCBnZXRGdW5jcyAqLwotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAi cmVhZGluZyB1c2VyLWRlZmluZWQgdHlwZXNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5n IHVzZXItZGVmaW5lZCB0eXBlcyIpOwogCXR5cGluZm8gPSBnZXRUeXBlcyhmb3V0LCAmbnVt VHlwZXMpOwogCXR5cGluZm9pbmRleCA9IGJ1aWxkSW5kZXhBcnJheSh0eXBpbmZvLCBudW1U eXBlcywgc2l6ZW9mKFR5cGVJbmZvKSk7CiAKIAkvKiB0aGlzIG11c3QgYmUgYWZ0ZXIgZ2V0 RnVuY3MsIHRvbyAqLwotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVh ZGluZyBwcm9jZWR1cmFsIGxhbmd1YWdlc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcg cHJvY2VkdXJhbCBsYW5ndWFnZXMiKTsKIAlnZXRQcm9jTGFuZ3MoZm91dCwgJm51bVByb2NM YW5ncyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcg dXNlci1kZWZpbmVkIGFnZ3JlZ2F0ZSBmdW5jdGlvbnNcbiIpOworCXBnX2xvZ19pbmZvKCJy ZWFkaW5nIHVzZXItZGVmaW5lZCBhZ2dyZWdhdGUgZnVuY3Rpb25zIik7CiAJZ2V0QWdncmVn YXRlcyhmb3V0LCAmbnVtQWdncmVnYXRlcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0 ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1kZWZpbmVkIG9wZXJhdG9yc1xuIik7CisJcGdf bG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZpbmVkIG9wZXJhdG9ycyIpOwogCW9wcmluZm8g PSBnZXRPcGVyYXRvcnMoZm91dCwgJm51bU9wZXJhdG9ycyk7CiAJb3ByaW5mb2luZGV4ID0g YnVpbGRJbmRleEFycmF5KG9wcmluZm8sIG51bU9wZXJhdG9ycywgc2l6ZW9mKE9wckluZm8p KTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2Vy LWRlZmluZWQgYWNjZXNzIG1ldGhvZHNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVz ZXItZGVmaW5lZCBhY2Nlc3MgbWV0aG9kcyIpOwogCWdldEFjY2Vzc01ldGhvZHMoZm91dCwg Jm51bUFjY2Vzc01ldGhvZHMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5V TEwsICJyZWFkaW5nIHVzZXItZGVmaW5lZCBvcGVyYXRvciBjbGFzc2VzXG4iKTsKKwlwZ19s b2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQgb3BlcmF0b3IgY2xhc3NlcyIpOwogCWdl dE9wY2xhc3Nlcyhmb3V0LCAmbnVtT3BjbGFzc2VzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0J CXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmluZWQgb3BlcmF0b3IgZmFtaWxp ZXNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVzZXItZGVmaW5lZCBvcGVyYXRvciBm YW1pbGllcyIpOwogCWdldE9wZmFtaWxpZXMoZm91dCwgJm51bU9wZmFtaWxpZXMpOwogCi0J aWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHVzZXItZGVmaW5l ZCB0ZXh0IHNlYXJjaCBwYXJzZXJzXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB1c2Vy LWRlZmluZWQgdGV4dCBzZWFyY2ggcGFyc2VycyIpOwogCWdldFRTUGFyc2Vycyhmb3V0LCAm bnVtVFNQYXJzZXJzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAi cmVhZGluZyB1c2VyLWRlZmluZWQgdGV4dCBzZWFyY2ggdGVtcGxhdGVzXG4iKTsKKwlwZ19s b2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQgdGV4dCBzZWFyY2ggdGVtcGxhdGVzIik7 CiAJZ2V0VFNUZW1wbGF0ZXMoZm91dCwgJm51bVRTVGVtcGxhdGVzKTsKIAotCWlmIChnX3Zl cmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmluZWQgdGV4dCBz ZWFyY2ggZGljdGlvbmFyaWVzXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB1c2VyLWRl ZmluZWQgdGV4dCBzZWFyY2ggZGljdGlvbmFyaWVzIik7CiAJZ2V0VFNEaWN0aW9uYXJpZXMo Zm91dCwgJm51bVRTRGljdHMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5V TEwsICJyZWFkaW5nIHVzZXItZGVmaW5lZCB0ZXh0IHNlYXJjaCBjb25maWd1cmF0aW9uc1xu Iik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZpbmVkIHRleHQgc2VhcmNoIGNv bmZpZ3VyYXRpb25zIik7CiAJZ2V0VFNDb25maWd1cmF0aW9ucyhmb3V0LCAmbnVtVFNDb25m aWdzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1 c2VyLWRlZmluZWQgZm9yZWlnbi1kYXRhIHdyYXBwZXJzXG4iKTsKKwlwZ19sb2dfaW5mbygi cmVhZGluZyB1c2VyLWRlZmluZWQgZm9yZWlnbi1kYXRhIHdyYXBwZXJzIik7CiAJZ2V0Rm9y ZWlnbkRhdGFXcmFwcGVycyhmb3V0LCAmbnVtRm9yZWlnbkRhdGFXcmFwcGVycyk7CiAKLQlp ZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1kZWZpbmVk IGZvcmVpZ24gc2VydmVyc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZp bmVkIGZvcmVpZ24gc2VydmVycyIpOwogCWdldEZvcmVpZ25TZXJ2ZXJzKGZvdXQsICZudW1G b3JlaWduU2VydmVycyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwg InJlYWRpbmcgZGVmYXVsdCBwcml2aWxlZ2VzXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGlu ZyBkZWZhdWx0IHByaXZpbGVnZXMiKTsKIAlnZXREZWZhdWx0QUNMcyhmb3V0LCAmbnVtRGVm YXVsdEFDTHMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFk aW5nIHVzZXItZGVmaW5lZCBjb2xsYXRpb25zXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGlu ZyB1c2VyLWRlZmluZWQgY29sbGF0aW9ucyIpOwogCWNvbGxpbmZvID0gZ2V0Q29sbGF0aW9u cyhmb3V0LCAmbnVtQ29sbGF0aW9ucyk7CiAJY29sbGluZm9pbmRleCA9IGJ1aWxkSW5kZXhB cnJheShjb2xsaW5mbywgbnVtQ29sbGF0aW9ucywgc2l6ZW9mKENvbGxJbmZvKSk7CiAKLQlp ZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1kZWZpbmVk IGNvbnZlcnNpb25zXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQg Y29udmVyc2lvbnMiKTsKIAlnZXRDb252ZXJzaW9ucyhmb3V0LCAmbnVtQ29udmVyc2lvbnMp OwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHR5cGUg Y2FzdHNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHR5cGUgY2FzdHMiKTsKIAlnZXRD YXN0cyhmb3V0LCAmbnVtQ2FzdHMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNn KE5VTEwsICJyZWFkaW5nIHRyYW5zZm9ybXNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5n IHRyYW5zZm9ybXMiKTsKIAlnZXRUcmFuc2Zvcm1zKGZvdXQsICZudW1UcmFuc2Zvcm1zKTsK IAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB0YWJsZSBp bmhlcml0YW5jZSBpbmZvcm1hdGlvblxuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdGFi bGUgaW5oZXJpdGFuY2UgaW5mb3JtYXRpb24iKTsKIAlpbmhpbmZvID0gZ2V0SW5oZXJpdHMo Zm91dCwgJm51bUluaGVyaXRzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhO VUxMLCAicmVhZGluZyBldmVudCB0cmlnZ2Vyc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRp bmcgZXZlbnQgdHJpZ2dlcnMiKTsKIAlnZXRFdmVudFRyaWdnZXJzKGZvdXQsICZudW1FdmVu dFRyaWdnZXJzKTsKIAogCS8qIElkZW50aWZ5IGV4dGVuc2lvbiBjb25maWd1cmF0aW9uIHRh YmxlcyB0aGF0IHNob3VsZCBiZSBkdW1wZWQgKi8KLQlpZiAoZ192ZXJib3NlKQotCQl3cml0 ZV9tc2coTlVMTCwgImZpbmRpbmcgZXh0ZW5zaW9uIHRhYmxlc1xuIik7CisJcGdfbG9nX2lu Zm8oImZpbmRpbmcgZXh0ZW5zaW9uIHRhYmxlcyIpOwogCXByb2Nlc3NFeHRlbnNpb25UYWJs ZXMoZm91dCwgZXh0aW5mbywgbnVtRXh0ZW5zaW9ucyk7CiAKIAkvKiBMaW5rIHRhYmxlcyB0 byBwYXJlbnRzLCBtYXJrIHBhcmVudHMgb2YgdGFyZ2V0IHRhYmxlcyBpbnRlcmVzdGluZyAq LwotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAiZmluZGluZyBpbmhlcml0 YW5jZSByZWxhdGlvbnNoaXBzXG4iKTsKKwlwZ19sb2dfaW5mbygiZmluZGluZyBpbmhlcml0 YW5jZSByZWxhdGlvbnNoaXBzIik7CiAJZmxhZ0luaFRhYmxlcyhmb3V0LCB0YmxpbmZvLCBu dW1UYWJsZXMsIGluaGluZm8sIG51bUluaGVyaXRzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0J CXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBjb2x1bW4gaW5mbyBmb3IgaW50ZXJlc3Rpbmcg dGFibGVzXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyBjb2x1bW4gaW5mbyBmb3IgaW50 ZXJlc3RpbmcgdGFibGVzIik7CiAJZ2V0VGFibGVBdHRycyhmb3V0LCB0YmxpbmZvLCBudW1U YWJsZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJmbGFnZ2lu ZyBpbmhlcml0ZWQgY29sdW1ucyBpbiBzdWJ0YWJsZXNcbiIpOworCXBnX2xvZ19pbmZvKCJm bGFnZ2luZyBpbmhlcml0ZWQgY29sdW1ucyBpbiBzdWJ0YWJsZXMiKTsKIAlmbGFnSW5oQXR0 cnMoZm91dC0+ZG9wdCwgdGJsaW5mbywgbnVtVGFibGVzKTsKIAotCWlmIChnX3ZlcmJvc2Up Ci0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBpbmRleGVzXG4iKTsKKwlwZ19sb2dfaW5m bygicmVhZGluZyBpbmRleGVzIik7CiAJZ2V0SW5kZXhlcyhmb3V0LCB0YmxpbmZvLCBudW1U YWJsZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJmbGFnZ2lu ZyBpbmRleGVzIGluIHBhcnRpdGlvbmVkIHRhYmxlc1xuIik7CisJcGdfbG9nX2luZm8oImZs YWdnaW5nIGluZGV4ZXMgaW4gcGFydGl0aW9uZWQgdGFibGVzIik7CiAJZmxhZ0luaEluZGV4 ZXMoZm91dCwgdGJsaW5mbywgbnVtVGFibGVzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdy aXRlX21zZyhOVUxMLCAicmVhZGluZyBleHRlbmRlZCBzdGF0aXN0aWNzXG4iKTsKKwlwZ19s b2dfaW5mbygicmVhZGluZyBleHRlbmRlZCBzdGF0aXN0aWNzIik7CiAJZ2V0RXh0ZW5kZWRT dGF0aXN0aWNzKGZvdXQpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEws ICJyZWFkaW5nIGNvbnN0cmFpbnRzXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyBjb25z dHJhaW50cyIpOwogCWdldENvbnN0cmFpbnRzKGZvdXQsIHRibGluZm8sIG51bVRhYmxlcyk7 CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdHJpZ2dl cnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHRyaWdnZXJzIik7CiAJZ2V0VHJpZ2dl cnMoZm91dCwgdGJsaW5mbywgbnVtVGFibGVzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdy aXRlX21zZyhOVUxMLCAicmVhZGluZyByZXdyaXRlIHJ1bGVzXG4iKTsKKwlwZ19sb2dfaW5m bygicmVhZGluZyByZXdyaXRlIHJ1bGVzIik7CiAJZ2V0UnVsZXMoZm91dCwgJm51bVJ1bGVz KTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBwb2xp Y2llc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgcG9saWNpZXMiKTsKIAlnZXRQb2xp Y2llcyhmb3V0LCB0YmxpbmZvLCBudW1UYWJsZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJ d3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHB1YmxpY2F0aW9uc1xuIik7CisJcGdfbG9nX2lu Zm8oInJlYWRpbmcgcHVibGljYXRpb25zIik7CiAJZ2V0UHVibGljYXRpb25zKGZvdXQpOwog Ci0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHB1YmxpY2F0 aW9uIG1lbWJlcnNoaXBcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHB1YmxpY2F0aW9u IG1lbWJlcnNoaXAiKTsKIAlnZXRQdWJsaWNhdGlvblRhYmxlcyhmb3V0LCB0YmxpbmZvLCBu dW1UYWJsZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFk aW5nIHN1YnNjcmlwdGlvbnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHN1YnNjcmlw dGlvbnMiKTsKIAlnZXRTdWJzY3JpcHRpb25zKGZvdXQpOwogCiAJKm51bVRhYmxlc1B0ciA9 IG51bVRhYmxlczsKQEAgLTEwNTksNyArMTAyMSw3IEBAIGZpbmRQYXJlbnRzQnlPaWQoVGFi bGVJbmZvICpzZWxmLAogCQkJCXBhcmVudCA9IGZpbmRUYWJsZUJ5T2lkKGluaGluZm9baV0u aW5ocGFyZW50KTsKIAkJCQlpZiAocGFyZW50ID09IE5VTEwpCiAJCQkJewotCQkJCQl3cml0 ZV9tc2coTlVMTCwgImZhaWxlZCBzYW5pdHkgY2hlY2ssIHBhcmVudCBPSUQgJXUgb2YgdGFi bGUgXCIlc1wiIChPSUQgJXUpIG5vdCBmb3VuZFxuIiwKKwkJCQkJcGdfbG9nX2Vycm9yKCJm YWlsZWQgc2FuaXR5IGNoZWNrLCBwYXJlbnQgT0lEICV1IG9mIHRhYmxlIFwiJXNcIiAoT0lE ICV1KSBub3QgZm91bmQiLAogCQkJCQkJCSAgaW5oaW5mb1tpXS5pbmhwYXJlbnQsCiAJCQkJ CQkJICBzZWxmLT5kb2JqLm5hbWUsCiAJCQkJCQkJICBvaWQpOwpAQCAtMTEwMSw3ICsxMDYz LDcgQEAgcGFyc2VPaWRBcnJheShjb25zdCBjaGFyICpzdHIsIE9pZCAqYXJyYXksIGludCBh cnJheXNpemUpCiAJCQl7CiAJCQkJaWYgKGFyZ051bSA+PSBhcnJheXNpemUpCiAJCQkJewot CQkJCQl3cml0ZV9tc2coTlVMTCwgImNvdWxkIG5vdCBwYXJzZSBudW1lcmljIGFycmF5IFwi JXNcIjogdG9vIG1hbnkgbnVtYmVyc1xuIiwgc3RyKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3QgcGFyc2UgbnVtZXJpYyBhcnJheSBcIiVzXCI6IHRvbyBtYW55IG51bWJlcnMi LCBzdHIpOwogCQkJCQlleGl0X25pY2VseSgxKTsKIAkJCQl9CiAJCQkJdGVtcFtqXSA9ICdc MCc7CkBAIC0xMTE2LDcgKzEwNzgsNyBAQCBwYXJzZU9pZEFycmF5KGNvbnN0IGNoYXIgKnN0 ciwgT2lkICphcnJheSwgaW50IGFycmF5c2l6ZSkKIAkJCWlmICghKGlzZGlnaXQoKHVuc2ln bmVkIGNoYXIpIHMpIHx8IHMgPT0gJy0nKSB8fAogCQkJCWogPj0gc2l6ZW9mKHRlbXApIC0g MSkKIAkJCXsKLQkJCQl3cml0ZV9tc2coTlVMTCwgImNvdWxkIG5vdCBwYXJzZSBudW1lcmlj IGFycmF5IFwiJXNcIjogaW52YWxpZCBjaGFyYWN0ZXIgaW4gbnVtYmVyXG4iLCBzdHIpOwor CQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIG51bWVyaWMgYXJyYXkgXCIlc1wi OiBpbnZhbGlkIGNoYXJhY3RlciBpbiBudW1iZXIiLCBzdHIpOwogCQkJCWV4aXRfbmljZWx5 KDEpOwogCQkJfQogCQkJdGVtcFtqKytdID0gczsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9jb21wcmVzc19pby5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMKaW5k ZXggZTM0ZTZjNTYxOC4uOWNhYmU1MWEyOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L2NvbXByZXNzX2lvLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMKQEAg LTc0LDkgKzc0LDYgQEAgc3RydWN0IENvbXByZXNzb3JTdGF0ZQogI2VuZGlmCiB9OwogCi0v KiB0cmFuc2xhdG9yOiB0aGlzIGlzIGEgbW9kdWxlIG5hbWUgKi8KLXN0YXRpYyBjb25zdCBj aGFyICptb2R1bGVuYW1lID0gZ2V0dGV4dF9ub29wKCJjb21wcmVzc19pbyIpOwotCiBzdGF0 aWMgdm9pZCBQYXJzZUNvbXByZXNzaW9uT3B0aW9uKGludCBjb21wcmVzc2lvbiwgQ29tcHJl c3Npb25BbGdvcml0aG0gKmFsZywKIAkJCQkJICAgaW50ICpsZXZlbCk7CiAKQEAgLTExMSw4 ICsxMDgsNyBAQCBQYXJzZUNvbXByZXNzaW9uT3B0aW9uKGludCBjb21wcmVzc2lvbiwgQ29t cHJlc3Npb25BbGdvcml0aG0gKmFsZywgaW50ICpsZXZlbCkKIAkJKmFsZyA9IENPTVBSX0FM R19OT05FOwogCWVsc2UKIAl7Ci0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImludmFs aWQgY29tcHJlc3Npb24gY29kZTogJWRcbiIsCi0JCQkJCSAgY29tcHJlc3Npb24pOworCQlm YXRhbCgiaW52YWxpZCBjb21wcmVzc2lvbiBjb2RlOiAlZCIsIGNvbXByZXNzaW9uKTsKIAkJ KmFsZyA9IENPTVBSX0FMR19OT05FOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJfQog CkBAIC0xMzUsNyArMTMxLDcgQEAgQWxsb2NhdGVDb21wcmVzc29yKGludCBjb21wcmVzc2lv biwgV3JpdGVGdW5jIHdyaXRlRikKIAogI2lmbmRlZiBIQVZFX0xJQloKIAlpZiAoYWxnID09 IENPTVBSX0FMR19MSUJaKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJub3QgYnVp bHQgd2l0aCB6bGliIHN1cHBvcnRcbiIpOworCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxp YiBzdXBwb3J0Iik7CiAjZW5kaWYKIAogCWNzID0gKENvbXByZXNzb3JTdGF0ZSAqKSBwZ19t YWxsb2MwKHNpemVvZihDb21wcmVzc29yU3RhdGUpKTsKQEAgLTE3MSw3ICsxNjcsNyBAQCBS ZWFkRGF0YUZyb21BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBpbnQgY29tcHJlc3Npb24s IFJlYWRGdW5jIHJlYWRGKQogI2lmZGVmIEhBVkVfTElCWgogCQlSZWFkRGF0YUZyb21BcmNo aXZlWmxpYihBSCwgcmVhZEYpOwogI2Vsc2UKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LCAibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0XG4iKTsKKwkJZmF0YWwoIm5vdCBidWls dCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCiAJfQogfQpAQCAtMTg5LDcgKzE4NSw3 IEBAIFdyaXRlRGF0YVRvQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0 YXRlICpjcywKICNpZmRlZiBIQVZFX0xJQloKIAkJCVdyaXRlRGF0YVRvQXJjaGl2ZVpsaWIo QUgsIGNzLCBkYXRhLCBkTGVuKTsKICNlbHNlCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsICJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnRcbiIpOworCQkJZmF0YWwoIm5vdCBi dWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCiAJCQlicmVhazsKIAkJY2FzZSBD T01QUl9BTEdfTk9ORToKQEAgLTIzOCw4ICsyMzQsNyBAQCBJbml0Q29tcHJlc3NvclpsaWIo Q29tcHJlc3NvclN0YXRlICpjcywgaW50IGxldmVsKQogCWNzLT56bGliT3V0U2l6ZSA9IFpM SUJfT1VUX1NJWkU7CiAKIAlpZiAoZGVmbGF0ZUluaXQoenAsIGxldmVsKSAhPSBaX09LKQot CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCSAgImNvdWxkIG5vdCBpbml0aWFs aXplIGNvbXByZXNzaW9uIGxpYnJhcnk6ICVzXG4iLAorCQlmYXRhbCgiY291bGQgbm90IGlu aXRpYWxpemUgY29tcHJlc3Npb24gbGlicmFyeTogJXMiLAogCQkJCQkgIHpwLT5tc2cpOwog CiAJLyogSnVzdCBiZSBwYXJhbm9pZCAtIG1heWJlIEVuZCBpcyBjYWxsZWQgYWZ0ZXIgU3Rh cnQsIHdpdGggbm8gV3JpdGUgKi8KQEAgLTI1OSw4ICsyNTQsNyBAQCBFbmRDb21wcmVzc29y WmxpYihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcykKIAlEZWZsYXRl Q29tcHJlc3NvclpsaWIoQUgsIGNzLCB0cnVlKTsKIAogCWlmIChkZWZsYXRlRW5kKHpwKSAh PSBaX09LKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCSAgImNvdWxkIG5v dCBjbG9zZSBjb21wcmVzc2lvbiBzdHJlYW06ICVzXG4iLCB6cC0+bXNnKTsKKwkJZmF0YWwo ImNvdWxkIG5vdCBjbG9zZSBjb21wcmVzc2lvbiBzdHJlYW06ICVzIiwgenAtPm1zZyk7CiAK IAlmcmVlKGNzLT56bGliT3V0KTsKIAlmcmVlKGNzLT56cCk7CkBAIC0yNzcsOCArMjcxLDcg QEAgRGVmbGF0ZUNvbXByZXNzb3JabGliKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29y U3RhdGUgKmNzLCBib29sIGZsdXNoKQogCXsKIAkJcmVzID0gZGVmbGF0ZSh6cCwgZmx1c2gg PyBaX0ZJTklTSCA6IFpfTk9fRkxVU0gpOwogCQlpZiAocmVzID09IFpfU1RSRUFNX0VSUk9S KQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJICAiY291bGQgbm90IGNv bXByZXNzIGRhdGE6ICVzXG4iLCB6cC0+bXNnKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgY29t cHJlc3MgZGF0YTogJXMiLCB6cC0+bXNnKTsKIAkJaWYgKChmbHVzaCAmJiAoenAtPmF2YWls X291dCA8IGNzLT56bGliT3V0U2l6ZSkpCiAJCQl8fCAoenAtPmF2YWlsX291dCA9PSAwKQog CQkJfHwgKHpwLT5hdmFpbF9pbiAhPSAwKQpAQCAtMzQwLDggKzMzMyw3IEBAIFJlYWREYXRh RnJvbUFyY2hpdmVabGliKEFyY2hpdmVIYW5kbGUgKkFILCBSZWFkRnVuYyByZWFkRikKIAlv dXQgPSBwZ19tYWxsb2MoWkxJQl9PVVRfU0laRSArIDEpOwogCiAJaWYgKGluZmxhdGVJbml0 KHpwKSAhPSBaX09LKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCSAgImNv dWxkIG5vdCBpbml0aWFsaXplIGNvbXByZXNzaW9uIGxpYnJhcnk6ICVzXG4iLAorCQlmYXRh bCgiY291bGQgbm90IGluaXRpYWxpemUgY29tcHJlc3Npb24gbGlicmFyeTogJXMiLAogCQkJ CQkgIHpwLT5tc2cpOwogCiAJLyogbm8gbWluaW1hbCBjaHVuayBzaXplIGZvciB6bGliICov CkBAIC0zNTcsOCArMzQ5LDcgQEAgUmVhZERhdGFGcm9tQXJjaGl2ZVpsaWIoQXJjaGl2ZUhh bmRsZSAqQUgsIFJlYWRGdW5jIHJlYWRGKQogCiAJCQlyZXMgPSBpbmZsYXRlKHpwLCAwKTsK IAkJCWlmIChyZXMgIT0gWl9PSyAmJiByZXMgIT0gWl9TVFJFQU1fRU5EKQotCQkJCWV4aXRf aG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCQkgICJjb3VsZCBub3QgdW5jb21wcmVzcyBk YXRhOiAlc1xuIiwgenAtPm1zZyk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCB1bmNvbXByZXNz IGRhdGE6ICVzIiwgenAtPm1zZyk7CiAKIAkJCW91dFtaTElCX09VVF9TSVpFIC0genAtPmF2 YWlsX291dF0gPSAnXDAnOwogCQkJYWh3cml0ZShvdXQsIDEsIFpMSUJfT1VUX1NJWkUgLSB6 cC0+YXZhaWxfb3V0LCBBSCk7CkBAIC0zNzMsMTYgKzM2NCwxNCBAQCBSZWFkRGF0YUZyb21B cmNoaXZlWmxpYihBcmNoaXZlSGFuZGxlICpBSCwgUmVhZEZ1bmMgcmVhZEYpCiAJCXpwLT5h dmFpbF9vdXQgPSBaTElCX09VVF9TSVpFOwogCQlyZXMgPSBpbmZsYXRlKHpwLCAwKTsKIAkJ aWYgKHJlcyAhPSBaX09LICYmIHJlcyAhPSBaX1NUUkVBTV9FTkQpCi0JCQlleGl0X2hvcnJp Ymx5KG1vZHVsZW5hbWUsCi0JCQkJCQkgICJjb3VsZCBub3QgdW5jb21wcmVzcyBkYXRhOiAl c1xuIiwgenAtPm1zZyk7CisJCQlmYXRhbCgiY291bGQgbm90IHVuY29tcHJlc3MgZGF0YTog JXMiLCB6cC0+bXNnKTsKIAogCQlvdXRbWkxJQl9PVVRfU0laRSAtIHpwLT5hdmFpbF9vdXRd ID0gJ1wwJzsKIAkJYWh3cml0ZShvdXQsIDEsIFpMSUJfT1VUX1NJWkUgLSB6cC0+YXZhaWxf b3V0LCBBSCk7CiAJfQogCiAJaWYgKGluZmxhdGVFbmQoenApICE9IFpfT0spCi0JCWV4aXRf aG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiY291bGQgbm90IGNsb3NlIGNvbXByZXNz aW9uIGxpYnJhcnk6ICVzXG4iLCB6cC0+bXNnKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBjbG9z ZSBjb21wcmVzc2lvbiBsaWJyYXJ5OiAlcyIsIHpwLT5tc2cpOwogCiAJZnJlZShidWYpOwog CWZyZWUob3V0KTsKQEAgLTUxNiw3ICs1MDUsNyBAQCBjZm9wZW5fd3JpdGUoY29uc3QgY2hh ciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwgaW50IGNvbXByZXNzaW9uKQogCQlmcCA9IGNm b3BlbihmbmFtZSwgbW9kZSwgY29tcHJlc3Npb24pOwogCQlmcmVlX2tlZXBfZXJybm8oZm5h bWUpOwogI2Vsc2UKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAibm90IGJ1aWx0IHdp dGggemxpYiBzdXBwb3J0XG4iKTsKKwkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3Vw cG9ydCIpOwogCQlmcCA9IE5VTEw7CQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KICNl bmRpZgogCX0KQEAgLTU1OSw3ICs1NDgsNyBAQCBjZm9wZW4oY29uc3QgY2hhciAqcGF0aCwg Y29uc3QgY2hhciAqbW9kZSwgaW50IGNvbXByZXNzaW9uKQogCQkJZnAgPSBOVUxMOwogCQl9 CiAjZWxzZQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJub3QgYnVpbHQgd2l0aCB6 bGliIHN1cHBvcnRcbiIpOworCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0 Iik7CiAjZW5kaWYKIAl9CiAJZWxzZQpAQCAtNTk2LDggKzU4NSw3IEBAIGNmcmVhZCh2b2lk ICpwdHIsIGludCBzaXplLCBjZnAgKmZwKQogCQkJaW50CQkJZXJybnVtOwogCQkJY29uc3Qg Y2hhciAqZXJybXNnID0gZ3plcnJvcihmcC0+Y29tcHJlc3NlZGZwLCAmZXJybnVtKTsKIAot CQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJICAiY291bGQgbm90IHJlYWQg ZnJvbSBpbnB1dCBmaWxlOiAlc1xuIiwKKwkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9t IGlucHV0IGZpbGU6ICVzIiwKIAkJCQkJCSAgZXJybnVtID09IFpfRVJSTk8gPyBzdHJlcnJv cihlcnJubykgOiBlcnJtc2cpOwogCQl9CiAJfQpAQCAtNjM0LDExICs2MjIsOSBAQCBjZmdl dGMoY2ZwICpmcCkKIAkJaWYgKHJldCA9PSBFT0YpCiAJCXsKIAkJCWlmICghZ3plb2YoZnAt PmNvbXByZXNzZWRmcCkpCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJ CSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXNcbiIsIHN0cmVycm9yKGVy cm5vKSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXMi LCBzdHJlcnJvcihlcnJubykpOwogCQkJZWxzZQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxl bmFtZSwKLQkJCQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBv ZiBmaWxlXG4iKTsKKwkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxl OiBlbmQgb2YgZmlsZSIpOwogCQl9CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9ubHMubWsgYi9zcmMvYmluL3BnX2R1bXAvbmxzLm1rCmluZGV4IDM3MjM0NzE3 Y2IuLjM3ODYzNWZiY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9ubHMubWsKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL25scy5tawpAQCAtMSw3ICsxLDggQEAKICMgc3JjL2Jpbi9w Z19kdW1wL25scy5tawogQ0FUQUxPR19OQU1FICAgICA9IHBnX2R1bXAKIEFWQUlMX0xBTkdV QUdFUyAgPSBjcyBkZSBlcyBmciBoZSBpdCBqYSBrbyBwbCBwdF9CUiBydSBzdiB0ciB6aF9D TgotR0VUVEVYVF9GSUxFUyAgICA9IHBnX2JhY2t1cF9hcmNoaXZlci5jIHBnX2JhY2t1cF9k Yi5jIHBnX2JhY2t1cF9jdXN0b20uYyBcCitHRVRURVhUX0ZJTEVTICAgID0gJChGUk9OVEVO RF9DT01NT05fR0VUVEVYVF9GSUxFUykgXAorICAgICAgICAgICAgICAgICAgIHBnX2JhY2t1 cF9hcmNoaXZlci5jIHBnX2JhY2t1cF9kYi5jIHBnX2JhY2t1cF9jdXN0b20uYyBcCiAgICAg ICAgICAgICAgICAgICAgcGdfYmFja3VwX251bGwuYyBwZ19iYWNrdXBfdGFyLmMgXAogICAg ICAgICAgICAgICAgICAgIHBnX2JhY2t1cF9kaXJlY3RvcnkuYyBkdW1wdXRpbHMuYyBjb21w cmVzc19pby5jIFwKICAgICAgICAgICAgICAgICAgICBwZ19kdW1wLmMgY29tbW9uLmMgcGdf ZHVtcF9zb3J0LmMgXApAQCAtOSwxMCArMTAsMTAgQEAgR0VUVEVYVF9GSUxFUyAgICA9IHBn X2JhY2t1cF9hcmNoaXZlci5jIHBnX2JhY2t1cF9kYi5jIHBnX2JhY2t1cF9jdXN0b20uYyBc CiAgICAgICAgICAgICAgICAgICAgcGFyYWxsZWwuYyBwYXJhbGxlbC5oIHBnX2JhY2t1cF91 dGlscy5jIHBnX2JhY2t1cF91dGlscy5oIFwKICAgICAgICAgICAgICAgICAgICAuLi8uLi9j b21tb24vZXhlYy5jIC4uLy4uL2NvbW1vbi9mZV9tZW11dGlscy5jIFwKICAgICAgICAgICAg ICAgICAgICAuLi8uLi9jb21tb24vd2FpdF9lcnJvci5jCi1HRVRURVhUX1RSSUdHRVJTID0g d3JpdGVfbXNnOjIgZXhpdF9ob3JyaWJseToyIHNpbXBsZV9wcm9tcHQgXAotICAgICAgICAg ICAgICAgICAgIEV4ZWN1dGVTcWxDb21tYW5kOjMgYWhsb2c6MyB3YXJuX29yX2V4aXRfaG9y cmlibHk6MwotR0VUVEVYVF9GTEFHUyAgPSBcCitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9O VEVORF9DT01NT05fR0VUVEVYVF9UUklHR0VSUykgXAorICAgICAgICAgICAgICAgICAgIGZh dGFsIHdyaXRlX21zZzoyIHNpbXBsZV9wcm9tcHQgXAorICAgICAgICAgICAgICAgICAgIEV4 ZWN1dGVTcWxDb21tYW5kOjMgd2Fybl9vcl9leGl0X2hvcnJpYmx5OjMKK0dFVFRFWFRfRkxB R1MgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdTKSBcCisgICAgZmF0YWw6 MTpjLWZvcm1hdCBcCiAgICAgd3JpdGVfbXNnOjI6Yy1mb3JtYXQgXAotICAgIGV4aXRfaG9y cmlibHk6MjpjLWZvcm1hdCBcCi0gICAgYWhsb2c6MzpjLWZvcm1hdCBcCiAgICAgd2Fybl9v cl9leGl0X2hvcnJpYmx5OjM6Yy1mb3JtYXQKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wYXJhbGxlbC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMKaW5kZXggOTZiMmMw YmU1MC4uYzI5NGRmZmQ5NSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVs LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMKQEAgLTE5Nyw4ICsxOTcsNiBA QCBib29sCQlwYXJhbGxlbF9pbml0X2RvbmUgPSBmYWxzZTsKIERXT1JECQltYWluVGhyZWFk SWQ7CiAjZW5kaWYJCQkJCQkJLyogV0lOMzIgKi8KIAotc3RhdGljIGNvbnN0IGNoYXIgKm1v ZHVsZW5hbWUgPSBnZXR0ZXh0X25vb3AoInBhcmFsbGVsIGFyY2hpdmVyIik7Ci0KIC8qIExv Y2FsIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KIHN0YXRpYyBQYXJhbGxlbFNsb3QgKkdldE15 UFNsb3QoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlKTsKIHN0YXRpYyB2b2lkIGFyY2hpdmVfY2xv c2VfY29ubmVjdGlvbihpbnQgY29kZSwgdm9pZCAqYXJnKTsKQEAgLTQwNiw4ICs0MDQsOCBA QCBhcmNoaXZlX2Nsb3NlX2Nvbm5lY3Rpb24oaW50IGNvZGUsIHZvaWQgKmFyZykKICAqIEZv cmNpYmx5IHNodXQgZG93biBhbnkgcmVtYWluaW5nIHdvcmtlcnMsIHdhaXRpbmcgZm9yIHRo ZW0gdG8gZmluaXNoLgogICoKICAqIE5vdGUgdGhhdCB3ZSBkb24ndCBleHBlY3QgdG8gY29t ZSBoZXJlIGR1cmluZyBub3JtYWwgZXhpdCAodGhlIHdvcmtlcnMKLSAqIHNob3VsZCBiZSBs b25nIGdvbmUsIGFuZCB0aGUgUGFyYWxsZWxTdGF0ZSB0b28pLiAgV2UncmUgb25seSBoZXJl IGluIGFuCi0gKiBleGl0X2hvcnJpYmx5KCkgc2l0dWF0aW9uLCBzbyBpbnRlcnZlbmluZyB0 byBjYW5jZWwgYWN0aXZlIGNvbW1hbmRzIGlzCisgKiBzaG91bGQgYmUgbG9uZyBnb25lLCBh bmQgdGhlIFBhcmFsbGVsU3RhdGUgdG9vKS4gIFdlJ3JlIG9ubHkgaGVyZSBpbiBhCisgKiBm YXRhbCgpIHNpdHVhdGlvbiwgc28gaW50ZXJ2ZW5pbmcgdG8gY2FuY2VsIGFjdGl2ZSBjb21t YW5kcyBpcwogICogYXBwcm9wcmlhdGUuCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC02OTksNyAr Njk3LDcgQEAgY29uc29sZUhhbmRsZXIoRFdPUkQgZHdDdHJsVHlwZSkKIAogCQkvKgogCQkg KiBSZXBvcnQgd2UncmUgcXVpdHRpbmcsIHVzaW5nIG5vdGhpbmcgbW9yZSBjb21wbGljYXRl ZCB0aGFuCi0JCSAqIHdyaXRlKDIpLiAgKFdlIG1pZ2h0IGJlIGFibGUgdG8gZ2V0IGF3YXkg d2l0aCB1c2luZyB3cml0ZV9tc2coKQorCQkgKiB3cml0ZSgyKS4gIChXZSBtaWdodCBiZSBh YmxlIHRvIGdldCBhd2F5IHdpdGggdXNpbmcgcGdfbG9nXyooKQogCQkgKiBoZXJlLCBidXQg c2luY2Ugd2UgdGVybWluYXRlZCBvdGhlciB0aHJlYWRzIHVuY2xlYW5seSBhYm92ZSwgaXQK IAkJICogc2VlbXMgYmV0dGVyIHRvIGFzc3VtZSBhcyBsaXR0bGUgYXMgcG9zc2libGUuKQog CQkgKi8KQEAgLTk2OSw5ICs5NjcsNyBAQCBQYXJhbGxlbEJhY2t1cFN0YXJ0KEFyY2hpdmVI YW5kbGUgKkFIKQogCiAJCS8qIENyZWF0ZSBjb21tdW5pY2F0aW9uIHBpcGVzIGZvciB0aGlz IHdvcmtlciAqLwogCQlpZiAocGdwaXBlKHBpcGVNVykgPCAwIHx8IHBncGlwZShwaXBlV00p IDwgMCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCSAgImNvdWxkIG5v dCBjcmVhdGUgY29tbXVuaWNhdGlvbiBjaGFubmVsczogJXNcbiIsCi0JCQkJCQkgIHN0cmVy cm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQgbm90IGNyZWF0ZSBjb21tdW5pY2F0aW9u IGNoYW5uZWxzOiAlbSIpOwogCiAJCXBzdGF0ZS0+dGVbaV0gPSBOVUxMOwkvKiBqdXN0IGZv ciBzYWZldHkgKi8KIApAQCAtMTAzNCw5ICsxMDMwLDcgQEAgUGFyYWxsZWxCYWNrdXBTdGFy dChBcmNoaXZlSGFuZGxlICpBSCkKIAkJZWxzZSBpZiAocGlkIDwgMCkKIAkJewogCQkJLyog Zm9yayBmYWlsZWQgKi8KLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCSAg ImNvdWxkIG5vdCBjcmVhdGUgd29ya2VyIHByb2Nlc3M6ICVzXG4iLAotCQkJCQkJICBzdHJl cnJvcihlcnJubykpOworCQkJZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgd29ya2VyIHByb2Nl c3M6ICVtIik7CiAJCX0KIAogCQkvKiBJbiBNYXN0ZXIgYWZ0ZXIgc3VjY2Vzc2Z1bCBmb3Jr ICovCkBAIC0xMTY1LDggKzExNTksNyBAQCBwYXJzZVdvcmtlckNvbW1hbmQoQXJjaGl2ZUhh bmRsZSAqQUgsIFRvY0VudHJ5ICoqdGUsIFRfQWN0aW9uICphY3QsCiAJCUFzc2VydCgqdGUg IT0gTlVMTCk7CiAJfQogCWVsc2UKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJ CQkgICJ1bnJlY29nbml6ZWQgY29tbWFuZCByZWNlaXZlZCBmcm9tIG1hc3RlcjogXCIlc1wi XG4iLAorCQlmYXRhbCgidW5yZWNvZ25pemVkIGNvbW1hbmQgcmVjZWl2ZWQgZnJvbSBtYXN0 ZXI6IFwiJXNcIiIsCiAJCQkJCSAgbXNnKTsKIH0KIApAQCAtMTIwOSw4ICsxMjAyLDcgQEAg cGFyc2VXb3JrZXJSZXNwb25zZShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLAog CQlBSC0+cHVibGljLm5fZXJyb3JzICs9IG5fZXJyb3JzOwogCX0KIAllbHNlCi0JCWV4aXRf aG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiaW52YWxpZCBtZXNzYWdlIHJlY2VpdmVk IGZyb20gd29ya2VyOiBcIiVzXCJcbiIsCisJCWZhdGFsKCJpbnZhbGlkIG1lc3NhZ2UgcmVj ZWl2ZWQgZnJvbSB3b3JrZXI6IFwiJXNcIiIsCiAJCQkJCSAgbXNnKTsKIAogCXJldHVybiBz dGF0dXM7CkBAIC0xMzQyLDExICsxMzM0LDEwIEBAIGxvY2tUYWJsZUZvcldvcmtlcihBcmNo aXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCXJlcyA9IFBRZXhlYyhBSC0+Y29ubmVj dGlvbiwgcXVlcnktPmRhdGEpOwogCiAJaWYgKCFyZXMgfHwgUFFyZXN1bHRTdGF0dXMocmVz KSAhPSBQR1JFU19DT01NQU5EX09LKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0J CQkJCSAgImNvdWxkIG5vdCBvYnRhaW4gbG9jayBvbiByZWxhdGlvbiBcIiVzXCJcbiIKLQkJ CQkJICAiVGhpcyB1c3VhbGx5IG1lYW5zIHRoYXQgc29tZW9uZSByZXF1ZXN0ZWQgYW4gQUND RVNTIEVYQ0xVU0lWRSBsb2NrICIKLQkJCQkJICAib24gdGhlIHRhYmxlIGFmdGVyIHRoZSBw Z19kdW1wIHBhcmVudCBwcm9jZXNzIGhhZCBnb3R0ZW4gdGhlICIKLQkJCQkJICAiaW5pdGlh bCBBQ0NFU1MgU0hBUkUgbG9jayBvbiB0aGUgdGFibGUuXG4iLCBxdWFsSWQpOworCQlmYXRh bCgiY291bGQgbm90IG9idGFpbiBsb2NrIG9uIHJlbGF0aW9uIFwiJXNcIlxuIgorCQkJICAi VGhpcyB1c3VhbGx5IG1lYW5zIHRoYXQgc29tZW9uZSByZXF1ZXN0ZWQgYW4gQUNDRVNTIEVY Q0xVU0lWRSBsb2NrICIKKwkJCSAgIm9uIHRoZSB0YWJsZSBhZnRlciB0aGUgcGdfZHVtcCBw YXJlbnQgcHJvY2VzcyBoYWQgZ290dGVuIHRoZSAiCisJCQkgICJpbml0aWFsIEFDQ0VTUyBT SEFSRSBsb2NrIG9uIHRoZSB0YWJsZS4iLCBxdWFsSWQpOwogCiAJUFFjbGVhcihyZXMpOwog CWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CkBAIC0xNDMyLDcgKzE0MjMsNyBAQCBMaXN0 ZW5Ub1dvcmtlcnMoQXJjaGl2ZUhhbmRsZSAqQUgsIFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSwg Ym9vbCBkb193YWl0KQogCXsKIAkJLyogSWYgZG9fd2FpdCBpcyB0cnVlLCB3ZSBtdXN0IGhh dmUgZGV0ZWN0ZWQgRU9GIG9uIHNvbWUgc29ja2V0ICovCiAJCWlmIChkb193YWl0KQotCQkJ ZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiYSB3b3JrZXIgcHJvY2VzcyBkaWVkIHVuZXhw ZWN0ZWRseVxuIik7CisJCQlmYXRhbCgiYSB3b3JrZXIgcHJvY2VzcyBkaWVkIHVuZXhwZWN0 ZWRseSIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xNDQ5LDggKzE0NDAsNyBAQCBM aXN0ZW5Ub1dvcmtlcnMoQXJjaGl2ZUhhbmRsZSAqQUgsIFBhcmFsbGVsU3RhdGUgKnBzdGF0 ZSwgYm9vbCBkb193YWl0KQogCQlwc3RhdGUtPnRlW3dvcmtlcl0gPSBOVUxMOwogCX0KIAll bHNlCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiaW52YWxpZCBtZXNz YWdlIHJlY2VpdmVkIGZyb20gd29ya2VyOiBcIiVzXCJcbiIsCisJCWZhdGFsKCJpbnZhbGlk IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSB3b3JrZXI6IFwiJXNcIiIsCiAJCQkJCSAgbXNnKTsK IAogCS8qIEZyZWUgdGhlIHN0cmluZyByZXR1cm5lZCBmcm9tIGdldE1lc3NhZ2VGcm9tV29y a2VyICovCkBAIC0xNTU1LDkgKzE1NDUsNyBAQCBzZW5kTWVzc2FnZVRvTWFzdGVyKGludCBw aXBlZmRbMl0sIGNvbnN0IGNoYXIgKnN0cikKIAlpbnQJCQlsZW4gPSBzdHJsZW4oc3RyKSAr IDE7CiAKIAlpZiAocGlwZXdyaXRlKHBpcGVmZFtQSVBFX1dSSVRFXSwgc3RyLCBsZW4pICE9 IGxlbikKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3Qg d3JpdGUgdG8gdGhlIGNvbW11bmljYXRpb24gY2hhbm5lbDogJXNcbiIsCi0JCQkJCSAgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0byB0aGUgY29tbXVu aWNhdGlvbiBjaGFubmVsOiAlbSIpOwogfQogCiAvKgpAQCAtMTYzNCw3ICsxNjIyLDcgQEAg Z2V0TWVzc2FnZUZyb21Xb3JrZXIoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlLCBib29sIGRvX3dh aXQsIGludCAqd29ya2VyKQogCX0KIAogCWlmIChpIDwgMCkKLQkJZXhpdF9ob3JyaWJseSht b2R1bGVuYW1lLCAic2VsZWN0KCkgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsK KwkJZmF0YWwoInNlbGVjdCgpIGZhaWxlZDogJW0iKTsKIAogCWZvciAoaSA9IDA7IGkgPCBw c3RhdGUtPm51bVdvcmtlcnM7IGkrKykKIAl7CkBAIC0xNjczLDkgKzE2NjEsNyBAQCBzZW5k TWVzc2FnZVRvV29ya2VyKFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSwgaW50IHdvcmtlciwgY29u c3QgY2hhciAqc3RyKQogCiAJaWYgKHBpcGV3cml0ZShwc3RhdGUtPnBhcmFsbGVsU2xvdFt3 b3JrZXJdLnBpcGVXcml0ZSwgc3RyLCBsZW4pICE9IGxlbikKIAl7Ci0JCWV4aXRfaG9ycmli bHkobW9kdWxlbmFtZSwKLQkJCQkJICAiY291bGQgbm90IHdyaXRlIHRvIHRoZSBjb21tdW5p Y2F0aW9uIGNoYW5uZWw6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCWZh dGFsKCJjb3VsZCBub3Qgd3JpdGUgdG8gdGhlIGNvbW11bmljYXRpb24gY2hhbm5lbDogJW0i KTsKIAl9CiB9CiAKQEAgLTE3NTksNyArMTc0NSw3IEBAIHBncGlwZShpbnQgaGFuZGxlc1sy XSkKIAkgKi8KIAlpZiAoKHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApKSA9 PSBQR0lOVkFMSURfU09DS0VUKQogCXsKLQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUsICJwZ3Bp cGU6IGNvdWxkIG5vdCBjcmVhdGUgc29ja2V0OiBlcnJvciBjb2RlICVkXG4iLAorCQlwZ19s b2dfZXJyb3IoInBncGlwZTogY291bGQgbm90IGNyZWF0ZSBzb2NrZXQ6IGVycm9yIGNvZGUg JWQiLAogCQkJCSAgV1NBR2V0TGFzdEVycm9yKCkpOwogCQlyZXR1cm4gLTE7CiAJfQpAQCAt MTc3MCwyMSArMTc1NiwyMSBAQCBwZ3BpcGUoaW50IGhhbmRsZXNbMl0pCiAJc2Vydl9hZGRy LnNpbl9hZGRyLnNfYWRkciA9IHBnX2h0b24zMihJTkFERFJfTE9PUEJBQ0spOwogCWlmIChi aW5kKHMsIChTT0NLQUREUiAqKSAmc2Vydl9hZGRyLCBsZW4pID09IFNPQ0tFVF9FUlJPUikK IAl7Ci0JCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAicGdwaXBlOiBjb3VsZCBub3QgYmluZDog ZXJyb3IgY29kZSAlZFxuIiwKKwkJcGdfbG9nX2Vycm9yKCJwZ3BpcGU6IGNvdWxkIG5vdCBi aW5kOiBlcnJvciBjb2RlICVkIiwKIAkJCQkgIFdTQUdldExhc3RFcnJvcigpKTsKIAkJY2xv c2Vzb2NrZXQocyk7CiAJCXJldHVybiAtMTsKIAl9CiAJaWYgKGxpc3RlbihzLCAxKSA9PSBT T0NLRVRfRVJST1IpCiAJewotCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgInBncGlwZTogY291 bGQgbm90IGxpc3RlbjogZXJyb3IgY29kZSAlZFxuIiwKKwkJcGdfbG9nX2Vycm9yKCJwZ3Bp cGU6IGNvdWxkIG5vdCBsaXN0ZW46IGVycm9yIGNvZGUgJWQiLAogCQkJCSAgV1NBR2V0TGFz dEVycm9yKCkpOwogCQljbG9zZXNvY2tldChzKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlpZiAo Z2V0c29ja25hbWUocywgKFNPQ0tBRERSICopICZzZXJ2X2FkZHIsICZsZW4pID09IFNPQ0tF VF9FUlJPUikKIAl7Ci0JCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAicGdwaXBlOiBnZXRzb2Nr bmFtZSgpIGZhaWxlZDogZXJyb3IgY29kZSAlZFxuIiwKKwkJcGdfbG9nX2Vycm9yKCJwZ3Bp cGU6IGdldHNvY2tuYW1lKCkgZmFpbGVkOiBlcnJvciBjb2RlICVkIiwKIAkJCQkgIFdTQUdl dExhc3RFcnJvcigpKTsKIAkJY2xvc2Vzb2NrZXQocyk7CiAJCXJldHVybiAtMTsKQEAgLTE3 OTUsNyArMTc4MSw3IEBAIHBncGlwZShpbnQgaGFuZGxlc1syXSkKIAkgKi8KIAlpZiAoKHRt cF9zb2NrID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKSkgPT0gUEdJTlZBTElE X1NPQ0tFVCkKIAl7Ci0JCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAicGdwaXBlOiBjb3VsZCBu b3QgY3JlYXRlIHNlY29uZCBzb2NrZXQ6IGVycm9yIGNvZGUgJWRcbiIsCisJCXBnX2xvZ19l cnJvcigicGdwaXBlOiBjb3VsZCBub3QgY3JlYXRlIHNlY29uZCBzb2NrZXQ6IGVycm9yIGNv ZGUgJWQiLAogCQkJCSAgV1NBR2V0TGFzdEVycm9yKCkpOwogCQljbG9zZXNvY2tldChzKTsK IAkJcmV0dXJuIC0xOwpAQCAtMTgwNCw3ICsxNzkwLDcgQEAgcGdwaXBlKGludCBoYW5kbGVz WzJdKQogCiAJaWYgKGNvbm5lY3QoaGFuZGxlc1sxXSwgKFNPQ0tBRERSICopICZzZXJ2X2Fk ZHIsIGxlbikgPT0gU09DS0VUX0VSUk9SKQogCXsKLQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUs ICJwZ3BpcGU6IGNvdWxkIG5vdCBjb25uZWN0IHNvY2tldDogZXJyb3IgY29kZSAlZFxuIiwK KwkJcGdfbG9nX2Vycm9yKCJwZ3BpcGU6IGNvdWxkIG5vdCBjb25uZWN0IHNvY2tldDogZXJy b3IgY29kZSAlZCIsCiAJCQkJICBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCWNsb3Nlc29ja2V0 KGhhbmRsZXNbMV0pOwogCQloYW5kbGVzWzFdID0gLTE7CkBAIC0xODEzLDcgKzE3OTksNyBA QCBwZ3BpcGUoaW50IGhhbmRsZXNbMl0pCiAJfQogCWlmICgodG1wX3NvY2sgPSBhY2NlcHQo cywgKFNPQ0tBRERSICopICZzZXJ2X2FkZHIsICZsZW4pKSA9PSBQR0lOVkFMSURfU09DS0VU KQogCXsKLQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUsICJwZ3BpcGU6IGNvdWxkIG5vdCBhY2Nl cHQgY29ubmVjdGlvbjogZXJyb3IgY29kZSAlZFxuIiwKKwkJcGdfbG9nX2Vycm9yKCJwZ3Bp cGU6IGNvdWxkIG5vdCBhY2NlcHQgY29ubmVjdGlvbjogZXJyb3IgY29kZSAlZCIsCiAJCQkJ ICBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCWNsb3Nlc29ja2V0KGhhbmRsZXNbMV0pOwogCQlo YW5kbGVzWzFdID0gLTE7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5k ZXggMmMyZjZmYjRhOS4uODNhOTMzNWFhNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf YXJjaGl2ZXIuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgInBnX2JhY2t1cF9kYi5o IgogI2luY2x1ZGUgInBnX2JhY2t1cF91dGlscy5oIgogI2luY2x1ZGUgImR1bXB1dGlscy5o IgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9z dHJpbmdfdXRpbHMuaCIKIAogI2luY2x1ZGUgImxpYnBxL2xpYnBxLWZzLmgiCkBAIC0yNzEs OCArMjcyLDcgQEAgQ2xvc2VBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkJcmVzID0gZmNsb3Nl KEFILT5PRik7CiAKIAlpZiAocmVzICE9IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFt ZSwgImNvdWxkIG5vdCBjbG9zZSBvdXRwdXQgZmlsZTogJXNcbiIsCi0JCQkJCSAgc3RyZXJy b3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBvdXRwdXQgZmlsZTogJW0i KTsKIH0KIAogLyogUHVibGljICovCkBAIC0zMTYsMTkgKzMxNiwxNyBAQCBQcm9jZXNzQXJj aGl2ZVJlc3RvcmVPcHRpb25zKEFyY2hpdmUgKkFIWCkKIAkJCQkJYnJlYWs7CiAJCQkJY2Fz ZSBTRUNUSU9OX1BSRV9EQVRBOgogCQkJCQlpZiAoY3VyU2VjdGlvbiAhPSBTRUNUSU9OX1BS RV9EQVRBKQotCQkJCQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUsCi0JCQkJCQkJCSAgIldBUk5J Tkc6IGFyY2hpdmUgaXRlbXMgbm90IGluIGNvcnJlY3Qgc2VjdGlvbiBvcmRlclxuIik7CisJ CQkJCQlwZ19sb2dfd2FybmluZygiYXJjaGl2ZSBpdGVtcyBub3QgaW4gY29ycmVjdCBzZWN0 aW9uIG9yZGVyIik7CiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgU0VDVElPTl9EQVRBOgogCQkJ CQlpZiAoY3VyU2VjdGlvbiA9PSBTRUNUSU9OX1BPU1RfREFUQSkKLQkJCQkJCXdyaXRlX21z Zyhtb2R1bGVuYW1lLAotCQkJCQkJCQkgICJXQVJOSU5HOiBhcmNoaXZlIGl0ZW1zIG5vdCBp biBjb3JyZWN0IHNlY3Rpb24gb3JkZXJcbiIpOworCQkJCQkJcGdfbG9nX3dhcm5pbmcoImFy Y2hpdmUgaXRlbXMgbm90IGluIGNvcnJlY3Qgc2VjdGlvbiBvcmRlciIpOwogCQkJCQlicmVh azsKIAkJCQljYXNlIFNFQ1RJT05fUE9TVF9EQVRBOgogCQkJCQkvKiBvayBubyBtYXR0ZXIg d2hpY2ggc2VjdGlvbiB3ZSB3ZXJlIGluICovCiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6 Ci0JCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInVuZXhwZWN0ZWQgc2VjdGlvbiBj b2RlICVkXG4iLAorCQkJCQlmYXRhbCgidW5leHBlY3RlZCBzZWN0aW9uIGNvZGUgJWQiLAog CQkJCQkJCQkgIChpbnQpIHRlLT5zZWN0aW9uKTsKIAkJCQkJYnJlYWs7CiAJCQl9CkBAIC0z NjUsMTEgKzM2MywxMSBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJewogCQkv KiBXZSBoYXZlbid0IGdvdCByb3VuZCB0byBtYWtpbmcgdGhpcyB3b3JrIGZvciBhbGwgYXJj aGl2ZSBmb3JtYXRzICovCiAJCWlmIChBSC0+Q2xvbmVQdHIgPT0gTlVMTCB8fCBBSC0+UmVv cGVuUHRyID09IE5VTEwpCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJwYXJhbGxl bCByZXN0b3JlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGlzIGFyY2hpdmUgZmlsZSBmb3Jt YXRcbiIpOworCQkJZmF0YWwoInBhcmFsbGVsIHJlc3RvcmUgaXMgbm90IHN1cHBvcnRlZCB3 aXRoIHRoaXMgYXJjaGl2ZSBmaWxlIGZvcm1hdCIpOwogCiAJCS8qIERvZXNuJ3Qgd29yayBp ZiB0aGUgYXJjaGl2ZSByZXByZXNlbnRzIGRlcGVuZGVuY2llcyBhcyBPSURzICovCiAJCWlm IChBSC0+dmVyc2lvbiA8IEtfVkVSU18xXzgpCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsICJwYXJhbGxlbCByZXN0b3JlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBhcmNoaXZlcyBt YWRlIGJ5IHByZS04LjAgcGdfZHVtcFxuIik7CisJCQlmYXRhbCgicGFyYWxsZWwgcmVzdG9y ZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggYXJjaGl2ZXMgbWFkZSBieSBwcmUtOC4wIHBnX2R1 bXAiKTsKIAogCQkvKgogCQkgKiBJdCdzIGFsc28gbm90IGdvbm5hIHdvcmsgaWYgd2UgY2Fu J3QgcmVvcGVuIHRoZSBpbnB1dCBmaWxlLCBzbwpAQCAtMzg3LDcgKzM4NSw3IEBAIFJlc3Rv cmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkJZm9yICh0ZSA9IEFILT50b2MtPm5leHQ7IHRl ICE9IEFILT50b2M7IHRlID0gdGUtPm5leHQpCiAJCXsKIAkJCWlmICh0ZS0+aGFkRHVtcGVy ICYmICh0ZS0+cmVxcyAmIFJFUV9EQVRBKSAhPSAwKQotCQkJCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwgImNhbm5vdCByZXN0b3JlIGZyb20gY29tcHJlc3NlZCBhcmNoaXZlIChjb21w cmVzc2lvbiBub3Qgc3VwcG9ydGVkIGluIHRoaXMgaW5zdGFsbGF0aW9uKVxuIik7CisJCQkJ ZmF0YWwoImNhbm5vdCByZXN0b3JlIGZyb20gY29tcHJlc3NlZCBhcmNoaXZlIChjb21wcmVz c2lvbiBub3Qgc3VwcG9ydGVkIGluIHRoaXMgaW5zdGFsbGF0aW9uKSIpOwogCQl9CiAJfQog I2VuZGlmCkBAIC00MDQsOSArNDAyLDkgQEAgUmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhY KQogCSAqLwogCWlmIChyb3B0LT51c2VEQikKIAl7Ci0JCWFobG9nKEFILCAxLCAiY29ubmVj dGluZyB0byBkYXRhYmFzZSBmb3IgcmVzdG9yZVxuIik7CisJCXBnX2xvZ19pbmZvKCJjb25u ZWN0aW5nIHRvIGRhdGFiYXNlIGZvciByZXN0b3JlIik7CiAJCWlmIChBSC0+dmVyc2lvbiA8 IEtfVkVSU18xXzMpCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJkaXJlY3QgZGF0 YWJhc2UgY29ubmVjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gcHJlLTEuMyBhcmNoaXZl c1xuIik7CisJCQlmYXRhbCgiZGlyZWN0IGRhdGFiYXNlIGNvbm5lY3Rpb25zIGFyZSBub3Qg c3VwcG9ydGVkIGluIHByZS0xLjMgYXJjaGl2ZXMiKTsKIAogCQkvKgogCQkgKiBXZSBkb24n dCB3YW50IHRvIGd1ZXNzIGF0IHdoZXRoZXIgdGhlIGR1bXAgd2lsbCBzdWNjZXNzZnVsbHkK QEAgLTQ1MSw3ICs0NDksNyBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJCWlm IChpbXBsaWVkRGF0YU9ubHkpCiAJCXsKIAkJCXJvcHQtPmRhdGFPbmx5ID0gaW1wbGllZERh dGFPbmx5OwotCQkJYWhsb2coQUgsIDEsICJpbXBsaWVkIGRhdGEtb25seSByZXN0b3JlXG4i KTsKKwkJCXBnX2xvZ19pbmZvKCJpbXBsaWVkIGRhdGEtb25seSByZXN0b3JlIik7CiAJCX0K IAl9CiAKQEAgLTUxNyw3ICs1MTUsNyBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgp CiAJCQkvKiBPdGhlcndpc2UsIGRyb3AgYW55dGhpbmcgdGhhdCdzIHNlbGVjdGVkIGFuZCBo YXMgYSBkcm9wU3RtdCAqLwogCQkJaWYgKCgodGUtPnJlcXMgJiAoUkVRX1NDSEVNQSB8IFJF UV9EQVRBKSkgIT0gMCkgJiYgdGUtPmRyb3BTdG10KQogCQkJewotCQkJCWFobG9nKEFILCAx LCAiZHJvcHBpbmcgJXMgJXNcbiIsIHRlLT5kZXNjLCB0ZS0+dGFnKTsKKwkJCQlwZ19sb2df aW5mbygiZHJvcHBpbmcgJXMgJXMiLCB0ZS0+ZGVzYywgdGUtPnRhZyk7CiAJCQkJLyogU2Vs ZWN0IG93bmVyIGFuZCBzY2hlbWEgYXMgbmVjZXNzYXJ5ICovCiAJCQkJX2JlY29tZU93bmVy KEFILCB0ZSk7CiAJCQkJX3NlbGVjdE91dHB1dFNjaGVtYShBSCwgdGUtPm5hbWVzcGFjZSk7 CkBAIC02MTIsOCArNjEwLDcgQEAgUmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKQogCQkJ CQkJCQllbHNlCiAJCQkJCQkJCXsKIAkJCQkJCQkJCS8qIGNvbXBsYWluIGFuZCBlbWl0IHVu bW9kaWZpZWQgY29tbWFuZCAqLwotCQkJCQkJCQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUsCi0J CQkJCQkJCQkJCSAgIldBUk5JTkc6IGNvdWxkIG5vdCBmaW5kIHdoZXJlIHRvIGluc2VydCBJ RiBFWElTVFMgaW4gc3RhdGVtZW50IFwiJXNcIlxuIiwKKwkJCQkJCQkJCXBnX2xvZ193YXJu aW5nKCJjb3VsZCBub3QgZmluZCB3aGVyZSB0byBpbnNlcnQgSUYgRVhJU1RTIGluIHN0YXRl bWVudCBcIiVzXCIiLAogCQkJCQkJCQkJCQkgIGRyb3BTdG10T3JpZyk7CiAJCQkJCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihmdFN0bXQsIGRyb3BTdG10KTsKIAkJCQkJCQkJfQpAQCAt NzY5LDkgKzc2Niw5IEBAIHJlc3RvcmVfdG9jX2VudHJ5KEFyY2hpdmVIYW5kbGUgKkFILCBU b2NFbnRyeSAqdGUsIGJvb2wgaXNfcGFyYWxsZWwpCiAJaWYgKCFyb3B0LT5zdXBwcmVzc0R1 bXBXYXJuaW5ncyAmJiBzdHJjbXAodGUtPmRlc2MsICJXQVJOSU5HIikgPT0gMCkKIAl7CiAJ CWlmICghcm9wdC0+ZGF0YU9ubHkgJiYgdGUtPmRlZm4gIT0gTlVMTCAmJiBzdHJsZW4odGUt PmRlZm4pICE9IDApCi0JCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIndhcm5pbmcgZnJvbSBv cmlnaW5hbCBkdW1wIGZpbGU6ICVzXG4iLCB0ZS0+ZGVmbik7CisJCQlwZ19sb2dfd2Fybmlu Zygid2FybmluZyBmcm9tIG9yaWdpbmFsIGR1bXAgZmlsZTogJXMiLCB0ZS0+ZGVmbik7CiAJ CWVsc2UgaWYgKHRlLT5jb3B5U3RtdCAhPSBOVUxMICYmIHN0cmxlbih0ZS0+Y29weVN0bXQp ICE9IDApCi0JCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIndhcm5pbmcgZnJvbSBvcmlnaW5h bCBkdW1wIGZpbGU6ICVzXG4iLCB0ZS0+Y29weVN0bXQpOworCQkJcGdfbG9nX3dhcm5pbmco Indhcm5pbmcgZnJvbSBvcmlnaW5hbCBkdW1wIGZpbGU6ICVzIiwgdGUtPmNvcHlTdG10KTsK IAl9CiAKIAkvKiBXb3JrIG91dCB3aGF0LCBpZiBhbnl0aGluZywgd2Ugd2FudCBmcm9tIHRo aXMgZW50cnkgKi8KQEAgLTc4NiwxMCArNzgzLDExIEBAIHJlc3RvcmVfdG9jX2VudHJ5KEFy Y2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIGJvb2wgaXNfcGFyYWxsZWwpCiAJewog CQkvKiBTaG93IG5hbWVzcGFjZSBpbiBsb2cgbWVzc2FnZSBpZiBhdmFpbGFibGUgKi8KIAkJ aWYgKHRlLT5uYW1lc3BhY2UpCi0JCQlhaGxvZyhBSCwgMSwgImNyZWF0aW5nICVzIFwiJXMu JXNcIlxuIiwKLQkJCQkgIHRlLT5kZXNjLCB0ZS0+bmFtZXNwYWNlLCB0ZS0+dGFnKTsKKwkJ CXBnX2xvZ19pbmZvKCJjcmVhdGluZyAlcyBcIiVzLiVzXCIiLAorCQkJCQkJdGUtPmRlc2Ms IHRlLT5uYW1lc3BhY2UsIHRlLT50YWcpOwogCQllbHNlCi0JCQlhaGxvZyhBSCwgMSwgImNy ZWF0aW5nICVzIFwiJXNcIlxuIiwgdGUtPmRlc2MsIHRlLT50YWcpOworCQkJcGdfbG9nX2lu Zm8oImNyZWF0aW5nICVzIFwiJXNcIiIsCisJCQkJCQl0ZS0+ZGVzYywgdGUtPnRhZyk7CiAK IAkJX3ByaW50VG9jRW50cnkoQUgsIHRlLCBmYWxzZSk7CiAJCWRlZm5EdW1wZWQgPSB0cnVl OwpAQCAtODQ1LDcgKzg0Myw3IEBAIHJlc3RvcmVfdG9jX2VudHJ5KEFyY2hpdmVIYW5kbGUg KkFILCBUb2NFbnRyeSAqdGUsIGJvb2wgaXNfcGFyYWxsZWwpCiAJCQlhcHBlbmRDb25uU3Ry VmFsKCZjb25uc3RyLCB0ZS0+dGFnKTsKIAkJCS8qIEFiYW5kb24gc3RydWN0LCBidXQga2Vl cCBpdHMgYnVmZmVyIHVudGlsIHByb2Nlc3MgZXhpdC4gKi8KIAotCQkJYWhsb2coQUgsIDEs ICJjb25uZWN0aW5nIHRvIG5ldyBkYXRhYmFzZSBcIiVzXCJcbiIsIHRlLT50YWcpOworCQkJ cGdfbG9nX2luZm8oImNvbm5lY3RpbmcgdG8gbmV3IGRhdGFiYXNlIFwiJXNcIiIsIHRlLT50 YWcpOwogCQkJX3JlY29ubmVjdFRvREIoQUgsIHRlLT50YWcpOwogCQkJcm9wdC0+ZGJuYW1l ID0gY29ubnN0ci5kYXRhOwogCQl9CkBAIC04NzMsNyArODcxLDcgQEAgcmVzdG9yZV90b2Nf ZW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc19wYXJhbGxl bCkKIAkJCQlpZiAoc3RyY21wKHRlLT5kZXNjLCAiQkxPQlMiKSA9PSAwIHx8CiAJCQkJCXN0 cmNtcCh0ZS0+ZGVzYywgIkJMT0IgQ09NTUVOVFMiKSA9PSAwKQogCQkJCXsKLQkJCQkJYWhs b2coQUgsIDEsICJwcm9jZXNzaW5nICVzXG4iLCB0ZS0+ZGVzYyk7CisJCQkJCXBnX2xvZ19p bmZvKCJwcm9jZXNzaW5nICVzIiwgdGUtPmRlc2MpOwogCiAJCQkJCV9zZWxlY3RPdXRwdXRT Y2hlbWEoQUgsICJwZ19jYXRhbG9nIik7CiAKQEAgLTg5Myw3ICs4OTEsNyBAQCByZXN0b3Jl X3RvY19lbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBib29sIGlzX3Bh cmFsbGVsKQogCQkJCQlfYmVjb21lT3duZXIoQUgsIHRlKTsKIAkJCQkJX3NlbGVjdE91dHB1 dFNjaGVtYShBSCwgdGUtPm5hbWVzcGFjZSk7CiAKLQkJCQkJYWhsb2coQUgsIDEsICJwcm9j ZXNzaW5nIGRhdGEgZm9yIHRhYmxlIFwiJXMuJXNcIlxuIiwKKwkJCQkJcGdfbG9nX2luZm8o InByb2Nlc3NpbmcgZGF0YSBmb3IgdGFibGUgXCIlcy4lc1wiIiwKIAkJCQkJCSAgdGUtPm5h bWVzcGFjZSwgdGUtPnRhZyk7CiAKIAkJCQkJLyoKQEAgLTk1NSw3ICs5NTMsNyBAQCByZXN0 b3JlX3RvY19lbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBib29sIGlz X3BhcmFsbGVsKQogCQllbHNlIGlmICghZGVmbkR1bXBlZCkKIAkJewogCQkJLyogSWYgd2Ug aGF2ZW4ndCBhbHJlYWR5IGR1bXBlZCB0aGUgZGVmbiBwYXJ0LCBkbyBzbyBub3cgKi8KLQkJ CWFobG9nKEFILCAxLCAiZXhlY3V0aW5nICVzICVzXG4iLCB0ZS0+ZGVzYywgdGUtPnRhZyk7 CisJCQlwZ19sb2dfaW5mbygiZXhlY3V0aW5nICVzICVzIiwgdGUtPmRlc2MsIHRlLT50YWcp OwogCQkJX3ByaW50VG9jRW50cnkoQUgsIHRlLCBmYWxzZSk7CiAJCX0KIAl9CkBAIC05OTQs NyArOTkyLDcgQEAgX2Rpc2FibGVUcmlnZ2Vyc0lmTmVjZXNzYXJ5KEFyY2hpdmVIYW5kbGUg KkFILCBUb2NFbnRyeSAqdGUpCiAJaWYgKCFyb3B0LT5kYXRhT25seSB8fCAhcm9wdC0+ZGlz YWJsZV90cmlnZ2VycykKIAkJcmV0dXJuOwogCi0JYWhsb2coQUgsIDEsICJkaXNhYmxpbmcg dHJpZ2dlcnMgZm9yICVzXG4iLCB0ZS0+dGFnKTsKKwlwZ19sb2dfaW5mbygiZGlzYWJsaW5n IHRyaWdnZXJzIGZvciAlcyIsIHRlLT50YWcpOwogCiAJLyoKIAkgKiBCZWNvbWUgc3VwZXJ1 c2VyIGlmIHBvc3NpYmxlLCBzaW5jZSB0aGV5IGFyZSB0aGUgb25seSBvbmVzIHdobyBjYW4K QEAgLTEwMjAsNyArMTAxOCw3IEBAIF9lbmFibGVUcmlnZ2Vyc0lmTmVjZXNzYXJ5KEFyY2hp dmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiAJaWYgKCFyb3B0LT5kYXRhT25seSB8fCAh cm9wdC0+ZGlzYWJsZV90cmlnZ2VycykKIAkJcmV0dXJuOwogCi0JYWhsb2coQUgsIDEsICJl bmFibGluZyB0cmlnZ2VycyBmb3IgJXNcbiIsIHRlLT50YWcpOworCXBnX2xvZ19pbmZvKCJl bmFibGluZyB0cmlnZ2VycyBmb3IgJXMiLCB0ZS0+dGFnKTsKIAogCS8qCiAJICogQmVjb21l IHN1cGVydXNlciBpZiBwb3NzaWJsZSwgc2luY2UgdGhleSBhcmUgdGhlIG9ubHkgb25lcyB3 aG8gY2FuCkBAIC0xMDQ4LDcgKzEwNDYsNyBAQCBXcml0ZURhdGEoQXJjaGl2ZSAqQUhYLCBj b25zdCB2b2lkICpkYXRhLCBzaXplX3QgZExlbikKIAlBcmNoaXZlSGFuZGxlICpBSCA9IChB cmNoaXZlSGFuZGxlICopIEFIWDsKIAogCWlmICghQUgtPmN1cnJUb2MpCi0JCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgImludGVybmFsIGVycm9yIC0tIFdyaXRlRGF0YSBjYW5ub3Qg YmUgY2FsbGVkIG91dHNpZGUgdGhlIGNvbnRleHQgb2YgYSBEYXRhRHVtcGVyIHJvdXRpbmVc biIpOworCQlmYXRhbCgiaW50ZXJuYWwgZXJyb3IgLS0gV3JpdGVEYXRhIGNhbm5vdCBiZSBj YWxsZWQgb3V0c2lkZSB0aGUgY29udGV4dCBvZiBhIERhdGFEdW1wZXIgcm91dGluZSIpOwog CiAJQUgtPldyaXRlRGF0YVB0cihBSCwgZGF0YSwgZExlbik7CiAKQEAgLTEyNTIsNyArMTI1 MCw3IEBAIFN0YXJ0QmxvYihBcmNoaXZlICpBSFgsIE9pZCBvaWQpCiAJQXJjaGl2ZUhhbmRs ZSAqQUggPSAoQXJjaGl2ZUhhbmRsZSAqKSBBSFg7CiAKIAlpZiAoIUFILT5TdGFydEJsb2JQ dHIpCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImxhcmdlLW9iamVjdCBvdXRwdXQg bm90IHN1cHBvcnRlZCBpbiBjaG9zZW4gZm9ybWF0XG4iKTsKKwkJZmF0YWwoImxhcmdlLW9i amVjdCBvdXRwdXQgbm90IHN1cHBvcnRlZCBpbiBjaG9zZW4gZm9ybWF0Iik7CiAKIAlBSC0+ U3RhcnRCbG9iUHRyKEFILCBBSC0+Y3VyclRvYywgb2lkKTsKIApAQCAtMTMxMCw4ICsxMzA4 LDggQEAgRW5kUmVzdG9yZUJsb2JzKEFyY2hpdmVIYW5kbGUgKkFIKQogCQkJYWhwcmludGYo QUgsICJDT01NSVQ7XG5cbiIpOwogCX0KIAotCWFobG9nKEFILCAxLCBuZ2V0dGV4dCgicmVz dG9yZWQgJWQgbGFyZ2Ugb2JqZWN0XG4iLAotCQkJCQkJICAicmVzdG9yZWQgJWQgbGFyZ2Ug b2JqZWN0c1xuIiwKKwlwZ19sb2dfaW5mbyhuZ2V0dGV4dCgicmVzdG9yZWQgJWQgbGFyZ2Ug b2JqZWN0IiwKKwkJCQkJCSAicmVzdG9yZWQgJWQgbGFyZ2Ugb2JqZWN0cyIsCiAJCQkJCQkg IEFILT5ibG9iQ291bnQpLAogCQkgIEFILT5ibG9iQ291bnQpOwogfQpAQCAtMTMzMSw3ICsx MzI5LDcgQEAgU3RhcnRSZXN0b3JlQmxvYihBcmNoaXZlSGFuZGxlICpBSCwgT2lkIG9pZCwg Ym9vbCBkcm9wKQogCS8qIEluaXRpYWxpemUgdGhlIExPIEJ1ZmZlciAqLwogCUFILT5sb19i dWZfdXNlZCA9IDA7CiAKLQlhaGxvZyhBSCwgMSwgInJlc3RvcmluZyBsYXJnZSBvYmplY3Qg d2l0aCBPSUQgJXVcbiIsIG9pZCk7CisJcGdfbG9nX2luZm8oInJlc3RvcmluZyBsYXJnZSBv YmplY3Qgd2l0aCBPSUQgJXUiLCBvaWQpOwogCiAJLyogV2l0aCBhbiBvbGQgYXJjaGl2ZSB3 ZSBtdXN0IGRvIGRyb3AgYW5kIGNyZWF0ZSBsb2dpYyBoZXJlICovCiAJaWYgKG9sZF9ibG9i X3N0eWxlICYmIGRyb3ApCkBAIC0xMzQzLDEyICsxMzQxLDEyIEBAIFN0YXJ0UmVzdG9yZUJs b2IoQXJjaGl2ZUhhbmRsZSAqQUgsIE9pZCBvaWQsIGJvb2wgZHJvcCkKIAkJewogCQkJbG9P aWQgPSBsb19jcmVhdGUoQUgtPmNvbm5lY3Rpb24sIG9pZCk7CiAJCQlpZiAobG9PaWQgPT0g MCB8fCBsb09pZCAhPSBvaWQpCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291 bGQgbm90IGNyZWF0ZSBsYXJnZSBvYmplY3QgJXU6ICVzIiwKKwkJCQlmYXRhbCgiY291bGQg bm90IGNyZWF0ZSBsYXJnZSBvYmplY3QgJXU6ICVzIiwKIAkJCQkJCQkgIG9pZCwgUFFlcnJv ck1lc3NhZ2UoQUgtPmNvbm5lY3Rpb24pKTsKIAkJfQogCQlBSC0+bG9GZCA9IGxvX29wZW4o QUgtPmNvbm5lY3Rpb24sIG9pZCwgSU5WX1dSSVRFKTsKIAkJaWYgKEFILT5sb0ZkID09IC0x KQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4gbGFyZ2Ug b2JqZWN0ICV1OiAlcyIsCisJCQlmYXRhbCgiY291bGQgbm90IG9wZW4gbGFyZ2Ugb2JqZWN0 ICV1OiAlcyIsCiAJCQkJCQkgIG9pZCwgUFFlcnJvck1lc3NhZ2UoQUgtPmNvbm5lY3Rpb24p KTsKIAl9CiAJZWxzZQpAQCAtMTQwNiw4ICsxNDA0LDcgQEAgU29ydFRvY0Zyb21GaWxlKEFy Y2hpdmUgKkFIWCkKIAkvKiBTZXR1cCB0aGUgZmlsZSAqLwogCWZoID0gZm9wZW4ocm9wdC0+ dG9jRmlsZSwgUEdfQklOQVJZX1IpOwogCWlmICghZmgpCi0JCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwgImNvdWxkIG5vdCBvcGVuIFRPQyBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJ CSAgcm9wdC0+dG9jRmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5v dCBvcGVuIFRPQyBmaWxlIFwiJXNcIjogJW0iLCByb3B0LT50b2NGaWxlKTsKIAogCWluY29t cGxldGVfbGluZSA9IGZhbHNlOwogCXdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBm aCkgIT0gTlVMTCkKQEAgLTE0NDcsMTQgKzE0NDQsMTQgQEAgU29ydFRvY0Zyb21GaWxlKEFy Y2hpdmUgKkFIWCkKIAkJaWYgKGVuZHB0ciA9PSBidWYgfHwgaWQgPD0gMCB8fCBpZCA+IEFI LT5tYXhEdW1wSWQgfHwKIAkJCXJvcHQtPmlkV2FudGVkW2lkIC0gMV0pCiAJCXsKLQkJCXdy aXRlX21zZyhtb2R1bGVuYW1lLCAiV0FSTklORzogbGluZSBpZ25vcmVkOiAlc1xuIiwgYnVm KTsKKwkJCXBnX2xvZ193YXJuaW5nKCJsaW5lIGlnbm9yZWQ6ICVzIiwgYnVmKTsKIAkJCWNv bnRpbnVlOwogCQl9CiAKIAkJLyogRmluZCBUT0MgZW50cnkgKi8KIAkJdGUgPSBnZXRUb2NF bnRyeUJ5RHVtcElkKEFILCBpZCk7CiAJCWlmICghdGUpCi0JCQlleGl0X2hvcnJpYmx5KG1v ZHVsZW5hbWUsICJjb3VsZCBub3QgZmluZCBlbnRyeSBmb3IgSUQgJWRcbiIsCisJCQlmYXRh bCgiY291bGQgbm90IGZpbmQgZW50cnkgZm9yIElEICVkIiwKIAkJCQkJCSAgaWQpOwogCiAJ CS8qIE1hcmsgaXQgd2FudGVkICovCkBAIC0xNDc1LDggKzE0NzIsNyBAQCBTb3J0VG9jRnJv bUZpbGUoQXJjaGl2ZSAqQUhYKQogCX0KIAogCWlmIChmY2xvc2UoZmgpICE9IDApCi0JCWV4 aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBjbG9zZSBUT0MgZmlsZTogJXNc biIsCi0JCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBjbG9z ZSBUT0MgZmlsZTogJW0iKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioKQEAgLTE1 ODYsMTEgKzE1ODIsOSBAQCBTZXRPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNo YXIgKmZpbGVuYW1lLCBpbnQgY29tcHJlc3Npb24pCiAJaWYgKCFBSC0+T0YpCiAJewogCQlp ZiAoZmlsZW5hbWUpCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qg b3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkJICBmaWxlbmFtZSwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBc IiVzXCI6ICVtIiwgZmlsZW5hbWUpOwogCQllbHNlCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZTogJXNcbiIsCi0JCQkJCQkgIHN0 cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGU6 ICVtIik7CiAJfQogfQogCkBAIC0xNjE2LDggKzE2MTAsNyBAQCBSZXN0b3JlT3V0cHV0KEFy Y2hpdmVIYW5kbGUgKkFILCBPdXRwdXRDb250ZXh0IHNhdmVkQ29udGV4dCkKIAkJcmVzID0g ZmNsb3NlKEFILT5PRik7CiAKIAlpZiAocmVzICE9IDApCi0JCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwgImNvdWxkIG5vdCBjbG9zZSBvdXRwdXQgZmlsZTogJXNcbiIsCi0JCQkJCSAg c3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBvdXRwdXQgZmls ZTogJW0iKTsKIAogCUFILT5nek91dCA9IHNhdmVkQ29udGV4dC5nek91dDsKIAlBSC0+T0Yg PSBzYXZlZENvbnRleHQuT0Y7CkBAIC0xNjYyLDE5ICsxNjU1LDYgQEAgYWhwcmludGYoQXJj aGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiAJcmV0dXJuIChpbnQpIGNu dDsKIH0KIAotdm9pZAotYWhsb2coQXJjaGl2ZUhhbmRsZSAqQUgsIGludCBsZXZlbCwgY29u c3QgY2hhciAqZm10LC4uLikKLXsKLQl2YV9saXN0CQlhcDsKLQotCWlmIChBSC0+ZGVidWdM ZXZlbCA8IGxldmVsICYmICghQUgtPnB1YmxpYy52ZXJib3NlIHx8IGxldmVsID4gMSkpCi0J CXJldHVybjsKLQotCXZhX3N0YXJ0KGFwLCBmbXQpOwotCXZ3cml0ZV9tc2coTlVMTCwgZm10 LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQogLyoKICAqIFNpbmdsZSBwbGFjZSBmb3IgbG9n aWMgd2hpY2ggc2F5cyAnV2UgYXJlIHJlc3RvcmluZyB0byBhIGRpcmVjdCBEQiBjb25uZWN0 aW9uJy4KICAqLwpAQCAtMTY5NywxMyArMTY3NywxMiBAQCBkdW1wX2xvX2J1ZihBcmNoaXZl SGFuZGxlICpBSCkKIAkJc2l6ZV90CQlyZXM7CiAKIAkJcmVzID0gbG9fd3JpdGUoQUgtPmNv bm5lY3Rpb24sIEFILT5sb0ZkLCBBSC0+bG9fYnVmLCBBSC0+bG9fYnVmX3VzZWQpOwotCQlh aGxvZyhBSCwgNSwgbmdldHRleHQoIndyb3RlICVsdSBieXRlIG9mIGxhcmdlIG9iamVjdCBk YXRhIChyZXN1bHQgPSAlbHUpXG4iLAorCQlwZ19sb2dfZGVidWcobmdldHRleHQoIndyb3Rl ICVsdSBieXRlIG9mIGxhcmdlIG9iamVjdCBkYXRhIChyZXN1bHQgPSAlbHUpXG4iLAogCQkJ CQkJCSAgIndyb3RlICVsdSBieXRlcyBvZiBsYXJnZSBvYmplY3QgZGF0YSAocmVzdWx0ID0g JWx1KVxuIiwKIAkJCQkJCQkgIEFILT5sb19idWZfdXNlZCksCiAJCQkgICh1bnNpZ25lZCBs b25nKSBBSC0+bG9fYnVmX3VzZWQsICh1bnNpZ25lZCBsb25nKSByZXMpOwogCQlpZiAocmVz ICE9IEFILT5sb19idWZfdXNlZCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJ CQkJCSAgImNvdWxkIG5vdCB3cml0ZSB0byBsYXJnZSBvYmplY3QgKHJlc3VsdDogJWx1LCBl eHBlY3RlZDogJWx1KVxuIiwKKwkJCWZhdGFsKCJjb3VsZCBub3Qgd3JpdGUgdG8gbGFyZ2Ug b2JqZWN0IChyZXN1bHQ6ICVsdSwgZXhwZWN0ZWQ6ICVsdSkiLAogCQkJCQkJICAodW5zaWdu ZWQgbG9uZykgcmVzLCAodW5zaWduZWQgbG9uZykgQUgtPmxvX2J1Zl91c2VkKTsKIAl9CiAJ ZWxzZQpAQCAtMTg4NCw3ICsxODYzLDcgQEAgYnVpbGRUb2NFbnRyeUFycmF5cyhBcmNoaXZl SGFuZGxlICpBSCkKIAl7CiAJCS8qIHRoaXMgY2hlY2sgaXMgcHVyZWx5IHBhcmFub2lhLCBt YXhEdW1wSWQgc2hvdWxkIGJlIGNvcnJlY3QgKi8KIAkJaWYgKHRlLT5kdW1wSWQgPD0gMCB8 fCB0ZS0+ZHVtcElkID4gbWF4RHVtcElkKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LCAiYmFkIGR1bXBJZFxuIik7CisJCQlmYXRhbCgiYmFkIGR1bXBJZCIpOwogCiAJCS8qIHRv Y3NCeUR1bXBJZCBpbmRleGVzIGFsbCBUT0NzIGJ5IHRoZWlyIGR1bXAgSUQgKi8KIAkJQUgt PnRvY3NCeUR1bXBJZFt0ZS0+ZHVtcElkXSA9IHRlOwpAQCAtMTkwNSw3ICsxODg0LDcgQEAg YnVpbGRUb2NFbnRyeUFycmF5cyhBcmNoaXZlSGFuZGxlICpBSCkKIAkJCSAqIGl0ZW0ncyBk dW1wIElELCBzbyB0aGVyZSBzaG91bGQgYmUgYSBwbGFjZSBmb3IgaXQgaW4gdGhlIGFycmF5 LgogCQkJICovCiAJCQlpZiAodGFibGVJZCA8PSAwIHx8IHRhYmxlSWQgPiBtYXhEdW1wSWQp Ci0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiYmFkIHRhYmxlIGR1bXBJZCBmb3Ig VEFCTEUgREFUQSBpdGVtXG4iKTsKKwkJCQlmYXRhbCgiYmFkIHRhYmxlIGR1bXBJZCBmb3Ig VEFCTEUgREFUQSBpdGVtIik7CiAKIAkJCUFILT50YWJsZURhdGFJZFt0YWJsZUlkXSA9IHRl LT5kdW1wSWQ7CiAJCX0KQEAgLTE5OTcsNyArMTk3Niw3IEBAIFJlYWRPZmZzZXQoQXJjaGl2 ZUhhbmRsZSAqQUgsIHBnb2ZmX3QgKiBvKQogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKLQkJ CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInVuZXhwZWN0ZWQgZGF0YSBvZmZzZXQgZmxh ZyAlZFxuIiwgb2Zmc2V0RmxnKTsKKwkJCWZhdGFsKCJ1bmV4cGVjdGVkIGRhdGEgb2Zmc2V0 IGZsYWcgJWQiLCBvZmZzZXRGbGcpOwogCX0KIAogCS8qCkBAIC0yMDEwLDcgKzE5ODksNyBA QCBSZWFkT2Zmc2V0KEFyY2hpdmVIYW5kbGUgKkFILCBwZ29mZl90ICogbykKIAkJZWxzZQog CQl7CiAJCQlpZiAoQUgtPlJlYWRCeXRlUHRyKEFIKSAhPSAwKQotCQkJCWV4aXRfaG9ycmli bHkobW9kdWxlbmFtZSwgImZpbGUgb2Zmc2V0IGluIGR1bXAgZmlsZSBpcyB0b28gbGFyZ2Vc biIpOworCQkJCWZhdGFsKCJmaWxlIG9mZnNldCBpbiBkdW1wIGZpbGUgaXMgdG9vIGxhcmdl Iik7CiAJCX0KIAl9CiAKQEAgLTIxMjIsOSArMjEwMSw3IEBAIF9kaXNjb3ZlckFyY2hpdmVG b3JtYXQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJc2l6ZV90CQljbnQ7CiAJaW50CQkJd2FudENs b3NlID0gMDsKIAotI2lmIDAKLQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgImF0dGVtcHRpbmcg dG8gYXNjZXJ0YWluIGFyY2hpdmUgZm9ybWF0XG4iKTsKLSNlbmRpZgorCXBnX2xvZ19kZWJ1 ZygiYXR0ZW1wdGluZyB0byBhc2NlcnRhaW4gYXJjaGl2ZSBmb3JtYXQiKTsKIAogCWlmIChB SC0+bG9va2FoZWFkKQogCQlmcmVlKEFILT5sb29rYWhlYWQpOwpAQCAtMjE0OSw3ICsyMTI2 LDcgQEAgX2Rpc2NvdmVyQXJjaGl2ZUZvcm1hdChBcmNoaXZlSGFuZGxlICpBSCkKIAkJCWNo YXIJCWJ1ZltNQVhQR1BBVEhdOwogCiAJCQlpZiAoc25wcmludGYoYnVmLCBNQVhQR1BBVEgs ICIlcy90b2MuZGF0IiwgQUgtPmZTcGVjKSA+PSBNQVhQR1BBVEgpCi0JCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAiZGlyZWN0b3J5IG5hbWUgdG9vIGxvbmc6IFwiJXNcIlxuIiwK KwkJCQlmYXRhbCgiZGlyZWN0b3J5IG5hbWUgdG9vIGxvbmc6IFwiJXNcIiIsCiAJCQkJCQkJ ICBBSC0+ZlNwZWMpOwogCQkJaWYgKHN0YXQoYnVmLCAmc3QpID09IDAgJiYgU19JU1JFRyhz dC5zdF9tb2RlKSkKIAkJCXsKQEAgLTIxNTksNyArMjEzNiw3IEBAIF9kaXNjb3ZlckFyY2hp dmVGb3JtYXQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKICNpZmRlZiBIQVZFX0xJQloKIAkJCWlm IChzbnByaW50ZihidWYsIE1BWFBHUEFUSCwgIiVzL3RvYy5kYXQuZ3oiLCBBSC0+ZlNwZWMp ID49IE1BWFBHUEFUSCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJkaXJlY3Rv cnkgbmFtZSB0b28gbG9uZzogXCIlc1wiXG4iLAorCQkJCWZhdGFsKCJkaXJlY3RvcnkgbmFt ZSB0b28gbG9uZzogXCIlc1wiIiwKIAkJCQkJCQkgIEFILT5mU3BlYyk7CiAJCQlpZiAoc3Rh dChidWYsICZzdCkgPT0gMCAmJiBTX0lTUkVHKHN0LnN0X21vZGUpKQogCQkJewpAQCAtMjE2 Nyw3ICsyMTQ0LDcgQEAgX2Rpc2NvdmVyQXJjaGl2ZUZvcm1hdChBcmNoaXZlSGFuZGxlICpB SCkKIAkJCQlyZXR1cm4gQUgtPmZvcm1hdDsKIAkJCX0KICNlbmRpZgotCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAiZGlyZWN0b3J5IFwiJXNcIiBkb2VzIG5vdCBhcHBlYXIgdG8g YmUgYSB2YWxpZCBhcmNoaXZlIChcInRvYy5kYXRcIiBkb2VzIG5vdCBleGlzdClcbiIsCisJ CQlmYXRhbCgiZGlyZWN0b3J5IFwiJXNcIiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB2YWxp ZCBhcmNoaXZlIChcInRvYy5kYXRcIiBkb2VzIG5vdCBleGlzdCkiLAogCQkJCQkJICBBSC0+ ZlNwZWMpOwogCQkJZmggPSBOVUxMOwkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAkJ fQpAQCAtMjE3NSwyNCArMjE1MiwyMiBAQCBfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFyY2hp dmVIYW5kbGUgKkFIKQogCQl7CiAJCQlmaCA9IGZvcGVuKEFILT5mU3BlYywgUEdfQklOQVJZ X1IpOwogCQkJaWYgKCFmaCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3Vs ZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCQkJICBBSC0+ZlNw ZWMsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIGlucHV0 IGZpbGUgXCIlc1wiOiAlbSIsIEFILT5mU3BlYyk7CiAJCX0KIAl9CiAJZWxzZQogCXsKIAkJ ZmggPSBzdGRpbjsKIAkJaWYgKCFmaCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwg ImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGU6ICVzXG4iLAotCQkJCQkJICBzdHJlcnJvcihl cnJubykpOworCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGU6ICVtIik7CiAJ fQogCiAJaWYgKChjbnQgPSBmcmVhZChzaWcsIDEsIDUsIGZoKSkgIT0gNSkKIAl7CiAJCWlm IChmZXJyb3IoZmgpKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90 IHJlYWQgaW5wdXQgZmlsZTogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgi Y291bGQgbm90IHJlYWQgaW5wdXQgZmlsZTogJW0iKTsKIAkJZWxzZQotCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAiaW5wdXQgZmlsZSBpcyB0b28gc2hvcnQgKHJlYWQgJWx1LCBl eHBlY3RlZCA1KVxuIiwKKwkJCWZhdGFsKCJpbnB1dCBmaWxlIGlzIHRvbyBzaG9ydCAocmVh ZCAlbHUsIGV4cGVjdGVkIDUpIiwKIAkJCQkJCSAgKHVuc2lnbmVkIGxvbmcpIGNudCk7CiAJ fQogCkBAIC0yMjc3LDE5ICsyMjUyLDE5IEBAIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQoQXJj aGl2ZUhhbmRsZSAqQUgpCiAJCQkgKiBsb29rcyBsaWtlIGl0J3MgcHJvYmFibHkgYSB0ZXh0 IGZvcm1hdCBkdW1wLiBzbyBzdWdnZXN0IHRoZXkKIAkJCSAqIHRyeSBwc3FsCiAJCQkgKi8K LQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImlucHV0IGZpbGUgYXBwZWFycyB0byBi ZSBhIHRleHQgZm9ybWF0IGR1bXAuIFBsZWFzZSB1c2UgcHNxbC5cbiIpOworCQkJZmF0YWwo ImlucHV0IGZpbGUgYXBwZWFycyB0byBiZSBhIHRleHQgZm9ybWF0IGR1bXAuIFBsZWFzZSB1 c2UgcHNxbC4iKTsKIAkJfQogCiAJCWlmIChBSC0+bG9va2FoZWFkTGVuICE9IDUxMikKIAkJ ewogCQkJaWYgKGZlb2YoZmgpKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImlu cHV0IGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgdmFsaWQgYXJjaGl2ZSAodG9vIHNo b3J0PylcbiIpOworCQkJCWZhdGFsKCJpbnB1dCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBi ZSBhIHZhbGlkIGFyY2hpdmUgKHRvbyBzaG9ydD8pIik7CiAJCQllbHNlCiAJCQkJUkVBRF9F UlJPUl9FWElUKGZoKTsKIAkJfQogCiAJCWlmICghaXNWYWxpZFRhckhlYWRlcihBSC0+bG9v a2FoZWFkKSkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImlucHV0IGZpbGUgZG9l cyBub3QgYXBwZWFyIHRvIGJlIGEgdmFsaWQgYXJjaGl2ZVxuIik7CisJCQlmYXRhbCgiaW5w dXQgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB2YWxpZCBhcmNoaXZlIik7CiAKIAkJ QUgtPmZvcm1hdCA9IGFyY2hUYXI7CiAJfQpAQCAtMjMwOSw4ICsyMjg0LDcgQEAgX2Rpc2Nv dmVyQXJjaGl2ZUZvcm1hdChBcmNoaXZlSGFuZGxlICpBSCkKIAkvKiBDbG9zZSB0aGUgZmls ZSAqLwogCWlmICh3YW50Q2xvc2UpCiAJCWlmIChmY2xvc2UoZmgpICE9IDApCi0JCQlleGl0 X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgY2xvc2UgaW5wdXQgZmlsZTogJXNc biIsCi0JCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQgbm90IGNs b3NlIGlucHV0IGZpbGU6ICVtIik7CiAKIAlyZXR1cm4gQUgtPmZvcm1hdDsKIH0KQEAgLTIz MjYsMTQgKzIzMDAsMTAgQEAgX2FsbG9jQUgoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0 IEFyY2hpdmVGb3JtYXQgZm10LAogewogCUFyY2hpdmVIYW5kbGUgKkFIOwogCi0jaWYgMAot CXdyaXRlX21zZyhtb2R1bGVuYW1lLCAiYWxsb2NhdGluZyBBSCBmb3IgJXMsIGZvcm1hdCAl ZFxuIiwgRmlsZVNwZWMsIGZtdCk7Ci0jZW5kaWYKKwlwZ19sb2dfZGVidWcoImFsbG9jYXRp bmcgQUggZm9yICVzLCBmb3JtYXQgJWQiLCBGaWxlU3BlYywgZm10KTsKIAogCUFIID0gKEFy Y2hpdmVIYW5kbGUgKikgcGdfbWFsbG9jMChzaXplb2YoQXJjaGl2ZUhhbmRsZSkpOwogCi0J LyogQUgtPmRlYnVnTGV2ZWwgPSAxMDA7ICovCi0KIAlBSC0+dmVyc2lvbiA9IEtfVkVSU19T RUxGOwogCiAJLyogaW5pdGlhbGl6ZSBmb3IgYmFja3dhcmRzIGNvbXBhdGlibGUgc3RyaW5n IHByb2Nlc3NpbmcgKi8KQEAgLTI0MjcsNyArMjM5Nyw3IEBAIF9hbGxvY0FIKGNvbnN0IGNo YXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKIAkJCWJyZWFrOwogCiAJ CWRlZmF1bHQ6Ci0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJ1bnJlY29nbml6ZWQg ZmlsZSBmb3JtYXQgXCIlZFwiXG4iLCBmbXQpOworCQkJZmF0YWwoInVucmVjb2duaXplZCBm aWxlIGZvcm1hdCBcIiVkXCIiLCBmbXQpOwogCX0KIAogCXJldHVybiBBSDsKQEAgLTI1MDks MTEgKzI0NzksMTEgQEAgbWFya19kdW1wX2pvYl9kb25lKEFyY2hpdmVIYW5kbGUgKkFILAog CQkJCSAgIGludCBzdGF0dXMsCiAJCQkJICAgdm9pZCAqY2FsbGJhY2tfZGF0YSkKIHsKLQlh aGxvZyhBSCwgMSwgImZpbmlzaGVkIGl0ZW0gJWQgJXMgJXNcbiIsCisJcGdfbG9nX2luZm8o ImZpbmlzaGVkIGl0ZW0gJWQgJXMgJXMiLAogCQkgIHRlLT5kdW1wSWQsIHRlLT5kZXNjLCB0 ZS0+dGFnKTsKIAogCWlmIChzdGF0dXMgIT0gMCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVu YW1lLCAid29ya2VyIHByb2Nlc3MgZmFpbGVkOiBleGl0IGNvZGUgJWRcbiIsCisJCWZhdGFs KCJ3b3JrZXIgcHJvY2VzcyBmYWlsZWQ6IGV4aXQgY29kZSAlZCIsCiAJCQkJCSAgc3RhdHVz KTsKIH0KIApAQCAtMjYzMiw4ICsyNjAyLDcgQEAgUmVhZFRvYyhBcmNoaXZlSGFuZGxlICpB SCkKIAogCQkvKiBTYW5pdHkgY2hlY2sgKi8KIAkJaWYgKHRlLT5kdW1wSWQgPD0gMCkKLQkJ CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCSAgImVudHJ5IElEICVkIG91dCBv ZiByYW5nZSAtLSBwZXJoYXBzIGEgY29ycnVwdCBUT0NcbiIsCisJCQlmYXRhbCgiZW50cnkg SUQgJWQgb3V0IG9mIHJhbmdlIC0tIHBlcmhhcHMgYSBjb3JydXB0IFRPQyIsCiAJCQkJCQkg IHRlLT5kdW1wSWQpOwogCiAJCXRlLT5oYWREdW1wZXIgPSBSZWFkSW50KEFIKTsKQEAgLTI2 OTcsOCArMjY2Niw3IEBAIFJlYWRUb2MoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkJdGUtPm93 bmVyID0gUmVhZFN0cihBSCk7CiAJCWlmIChBSC0+dmVyc2lvbiA8IEtfVkVSU18xXzkgfHwg c3RyY21wKFJlYWRTdHIoQUgpLCAidHJ1ZSIpID09IDApCi0JCQl3cml0ZV9tc2cobW9kdWxl bmFtZSwKLQkJCQkJICAiV0FSTklORzogcmVzdG9yaW5nIHRhYmxlcyBXSVRIIE9JRFMgaXMg bm90IHN1cHBvcnRlZCBhbnltb3JlXG4iKTsKKwkJCXBnX2xvZ193YXJuaW5nKCJyZXN0b3Jp bmcgdGFibGVzIFdJVEggT0lEUyBpcyBub3Qgc3VwcG9ydGVkIGFueW1vcmUiKTsKIAogCQkv KiBSZWFkIFRPQyBlbnRyeSBkZXBlbmRlbmNpZXMgKi8KIAkJaWYgKEFILT52ZXJzaW9uID49 IEtfVkVSU18xXzUpCkBAIC0yNzQ0LDcgKzI3MTIsNyBAQCBSZWFkVG9jKEFyY2hpdmVIYW5k bGUgKkFIKQogCQlpZiAoQUgtPlJlYWRFeHRyYVRvY1B0cikKIAkJCUFILT5SZWFkRXh0cmFU b2NQdHIoQUgsIHRlKTsKIAotCQlhaGxvZyhBSCwgMywgInJlYWQgVE9DIGVudHJ5ICVkIChJ RCAlZCkgZm9yICVzICVzXG4iLAorCQlwZ19sb2dfZGVidWcoInJlYWQgVE9DIGVudHJ5ICVk IChJRCAlZCkgZm9yICVzICVzIiwKIAkJCSAgaSwgdGUtPmR1bXBJZCwgdGUtPmRlc2MsIHRl LT50YWcpOwogCiAJCS8qIGxpbmsgY29tcGxldGVkIGVudHJ5IGludG8gVE9DIGNpcmN1bGFy IGxpc3QgKi8KQEAgLTI3ODAsMTIgKzI3NDgsMTIgQEAgcHJvY2Vzc0VuY29kaW5nRW50cnko QXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAkJKnB0cjIgPSAnXDAnOwogCQll bmNvZGluZyA9IHBnX2NoYXJfdG9fZW5jb2RpbmcocHRyMSk7CiAJCWlmIChlbmNvZGluZyA8 IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJ1bnJlY29nbml6ZWQgZW5jb2Rp bmcgXCIlc1wiXG4iLAorCQkJZmF0YWwoInVucmVjb2duaXplZCBlbmNvZGluZyBcIiVzXCIi LAogCQkJCQkJICBwdHIxKTsKIAkJQUgtPnB1YmxpYy5lbmNvZGluZyA9IGVuY29kaW5nOwog CX0KIAllbHNlCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImludmFsaWQgRU5DT0RJ TkcgaXRlbTogJXNcbiIsCisJCWZhdGFsKCJpbnZhbGlkIEVOQ09ESU5HIGl0ZW06ICVzIiwK IAkJCQkJICB0ZS0+ZGVmbik7CiAKIAlmcmVlKGRlZm4pOwpAQCAtMjgwMyw3ICsyNzcxLDcg QEAgcHJvY2Vzc1N0ZFN0cmluZ3NFbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkg KnRlKQogCWVsc2UgaWYgKHB0cjEgJiYgc3RybmNtcChwdHIxLCAiJ29mZiciLCA1KSA9PSAw KQogCQlBSC0+cHVibGljLnN0ZF9zdHJpbmdzID0gZmFsc2U7CiAJZWxzZQotCQlleGl0X2hv cnJpYmx5KG1vZHVsZW5hbWUsICJpbnZhbGlkIFNURFNUUklOR1MgaXRlbTogJXNcbiIsCisJ CWZhdGFsKCJpbnZhbGlkIFNURFNUUklOR1MgaXRlbTogJXMiLAogCQkJCQkgIHRlLT5kZWZu KTsKIH0KIApAQCAtMjgyOCwzNSArMjc5NiwzNSBAQCBTdHJpY3ROYW1lc0NoZWNrKFJlc3Rv cmVPcHRpb25zICpyb3B0KQogCXsKIAkJbWlzc2luZ19uYW1lID0gc2ltcGxlX3N0cmluZ19s aXN0X25vdF90b3VjaGVkKCZyb3B0LT5zY2hlbWFOYW1lcyk7CiAJCWlmIChtaXNzaW5nX25h bWUgIT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInNjaGVtYSBcIiVz XCIgbm90IGZvdW5kXG4iLCBtaXNzaW5nX25hbWUpOworCQkJZmF0YWwoInNjaGVtYSBcIiVz XCIgbm90IGZvdW5kIiwgbWlzc2luZ19uYW1lKTsKIAl9CiAKIAlpZiAocm9wdC0+dGFibGVO YW1lcy5oZWFkICE9IE5VTEwpCiAJewogCQltaXNzaW5nX25hbWUgPSBzaW1wbGVfc3RyaW5n X2xpc3Rfbm90X3RvdWNoZWQoJnJvcHQtPnRhYmxlTmFtZXMpOwogCQlpZiAobWlzc2luZ19u YW1lICE9IE5VTEwpCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJ0YWJsZSBcIiVz XCIgbm90IGZvdW5kXG4iLCBtaXNzaW5nX25hbWUpOworCQkJZmF0YWwoInRhYmxlIFwiJXNc IiBub3QgZm91bmQiLCBtaXNzaW5nX25hbWUpOwogCX0KIAogCWlmIChyb3B0LT5pbmRleE5h bWVzLmhlYWQgIT0gTlVMTCkKIAl7CiAJCW1pc3NpbmdfbmFtZSA9IHNpbXBsZV9zdHJpbmdf bGlzdF9ub3RfdG91Y2hlZCgmcm9wdC0+aW5kZXhOYW1lcyk7CiAJCWlmIChtaXNzaW5nX25h bWUgIT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImluZGV4IFwiJXNc IiBub3QgZm91bmRcbiIsIG1pc3NpbmdfbmFtZSk7CisJCQlmYXRhbCgiaW5kZXggXCIlc1wi IG5vdCBmb3VuZCIsIG1pc3NpbmdfbmFtZSk7CiAJfQogCiAJaWYgKHJvcHQtPmZ1bmN0aW9u TmFtZXMuaGVhZCAhPSBOVUxMKQogCXsKIAkJbWlzc2luZ19uYW1lID0gc2ltcGxlX3N0cmlu Z19saXN0X25vdF90b3VjaGVkKCZyb3B0LT5mdW5jdGlvbk5hbWVzKTsKIAkJaWYgKG1pc3Np bmdfbmFtZSAhPSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZnVuY3Rp b24gXCIlc1wiIG5vdCBmb3VuZFxuIiwgbWlzc2luZ19uYW1lKTsKKwkJCWZhdGFsKCJmdW5j dGlvbiBcIiVzXCIgbm90IGZvdW5kIiwgbWlzc2luZ19uYW1lKTsKIAl9CiAKIAlpZiAocm9w dC0+dHJpZ2dlck5hbWVzLmhlYWQgIT0gTlVMTCkKIAl7CiAJCW1pc3NpbmdfbmFtZSA9IHNp bXBsZV9zdHJpbmdfbGlzdF9ub3RfdG91Y2hlZCgmcm9wdC0+dHJpZ2dlck5hbWVzKTsKIAkJ aWYgKG1pc3NpbmdfbmFtZSAhPSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LCAidHJpZ2dlciBcIiVzXCIgbm90IGZvdW5kXG4iLCBtaXNzaW5nX25hbWUpOworCQkJZmF0 YWwoInRyaWdnZXIgXCIlc1wiIG5vdCBmb3VuZCIsIG1pc3NpbmdfbmFtZSk7CiAJfQogfQog CkBAIC0zMjMyLDcgKzMyMDAsNyBAQCBfZG9TZXRTZXNzaW9uQXV0aChBcmNoaXZlSGFuZGxl ICpBSCwgY29uc3QgY2hhciAqdXNlcikKIAogCQlpZiAoIXJlcyB8fCBQUXJlc3VsdFN0YXR1 cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJCQkvKiBOT1Qgd2Fybl9vcl9leGl0X2hv cnJpYmx5Li4uIHVzZSAtTyBpbnN0ZWFkIHRvIHNraXAgdGhpcy4gKi8KLQkJCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBzZXQgc2Vzc2lvbiB1c2VyIHRvIFwiJXNc IjogJXMiLAorCQkJZmF0YWwoImNvdWxkIG5vdCBzZXQgc2Vzc2lvbiB1c2VyIHRvIFwiJXNc IjogJXMiLAogCQkJCQkJICB1c2VyLCBQUWVycm9yTWVzc2FnZShBSC0+Y29ubmVjdGlvbikp OwogCiAJCVBRY2xlYXIocmVzKTsKQEAgLTM1MjcsNyArMzQ5NSw3IEBAIF9nZXRPYmplY3RE ZXNjcmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIFRvY0VudHJ5ICp0ZSwgQXJjaGl2ZUhhbmRs ZSAqQUgpCiAJCXJldHVybjsKIAl9CiAKLQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIldBUk5J Tkc6IGRvbid0IGtub3cgaG93IHRvIHNldCBvd25lciBmb3Igb2JqZWN0IHR5cGUgXCIlc1wi XG4iLAorCXBnX2xvZ193YXJuaW5nKCJkb24ndCBrbm93IGhvdyB0byBzZXQgb3duZXIgZm9y IG9iamVjdCB0eXBlIFwiJXNcIiIsCiAJCQkgIHR5cGUpOwogfQogCkBAIC0zNjk1LDcgKzM2 NjMsNyBAQCBfcHJpbnRUb2NFbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRl LCBib29sIGlzRGF0YSkKIAkJfQogCQllbHNlCiAJCXsKLQkJCXdyaXRlX21zZyhtb2R1bGVu YW1lLCAiV0FSTklORzogZG9uJ3Qga25vdyBob3cgdG8gc2V0IG93bmVyIGZvciBvYmplY3Qg dHlwZSBcIiVzXCJcbiIsCisJCQlwZ19sb2dfd2FybmluZygiZG9uJ3Qga25vdyBob3cgdG8g c2V0IG93bmVyIGZvciBvYmplY3QgdHlwZSBcIiVzXCIiLAogCQkJCQkgIHRlLT5kZXNjKTsK IAkJfQogCX0KQEAgLTM3ODUsNyArMzc1Myw3IEBAIFJlYWRIZWFkKEFyY2hpdmVIYW5kbGUg KkFIKQogCQlBSC0+UmVhZEJ1ZlB0cihBSCwgdG1wTWFnLCA1KTsKIAogCQlpZiAoc3RybmNt cCh0bXBNYWcsICJQR0RNUCIsIDUpICE9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsICJkaWQgbm90IGZpbmQgbWFnaWMgc3RyaW5nIGluIGZpbGUgaGVhZGVyXG4iKTsKKwkJ CWZhdGFsKCJkaWQgbm90IGZpbmQgbWFnaWMgc3RyaW5nIGluIGZpbGUgaGVhZGVyIik7CiAK IAkJdm1haiA9IEFILT5SZWFkQnl0ZVB0cihBSCk7CiAJCXZtaW4gPSBBSC0+UmVhZEJ5dGVQ dHIoQUgpOwpAQCAtMzc5OCwxNiArMzc2NiwxNiBAQCBSZWFkSGVhZChBcmNoaXZlSGFuZGxl ICpBSCkKIAkJQUgtPnZlcnNpb24gPSBNQUtFX0FSQ0hJVkVfVkVSU0lPTih2bWFqLCB2bWlu LCB2cmV2KTsKIAogCQlpZiAoQUgtPnZlcnNpb24gPCBLX1ZFUlNfMV8wIHx8IEFILT52ZXJz aW9uID4gS19WRVJTX01BWCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInVuc3Vw cG9ydGVkIHZlcnNpb24gKCVkLiVkKSBpbiBmaWxlIGhlYWRlclxuIiwKKwkJCWZhdGFsKCJ1 bnN1cHBvcnRlZCB2ZXJzaW9uICglZC4lZCkgaW4gZmlsZSBoZWFkZXIiLAogCQkJCQkJICB2 bWFqLCB2bWluKTsKIAogCQlBSC0+aW50U2l6ZSA9IEFILT5SZWFkQnl0ZVB0cihBSCk7CiAJ CWlmIChBSC0+aW50U2l6ZSA+IDMyKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAi c2FuaXR5IGNoZWNrIG9uIGludGVnZXIgc2l6ZSAoJWx1KSBmYWlsZWRcbiIsCisJCQlmYXRh bCgic2FuaXR5IGNoZWNrIG9uIGludGVnZXIgc2l6ZSAoJWx1KSBmYWlsZWQiLAogCQkJCQkJ ICAodW5zaWduZWQgbG9uZykgQUgtPmludFNpemUpOwogCiAJCWlmIChBSC0+aW50U2l6ZSA+ IHNpemVvZihpbnQpKQotCQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUsICJXQVJOSU5HOiBhcmNo aXZlIHdhcyBtYWRlIG9uIGEgbWFjaGluZSB3aXRoIGxhcmdlciBpbnRlZ2Vycywgc29tZSBv cGVyYXRpb25zIG1pZ2h0IGZhaWxcbiIpOworCQkJcGdfbG9nX3dhcm5pbmcoImFyY2hpdmUg d2FzIG1hZGUgb24gYSBtYWNoaW5lIHdpdGggbGFyZ2VyIGludGVnZXJzLCBzb21lIG9wZXJh dGlvbnMgbWlnaHQgZmFpbCIpOwogCiAJCWlmIChBSC0+dmVyc2lvbiA+PSBLX1ZFUlNfMV83 KQogCQkJQUgtPm9mZlNpemUgPSBBSC0+UmVhZEJ5dGVQdHIoQUgpOwpAQCAtMzgxNyw3ICsz Nzg1LDcgQEAgUmVhZEhlYWQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCWZtdCA9IEFILT5SZWFk Qnl0ZVB0cihBSCk7CiAKIAkJaWYgKEFILT5mb3JtYXQgIT0gZm10KQotCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAiZXhwZWN0ZWQgZm9ybWF0ICglZCkgZGlmZmVycyBmcm9tIGZv cm1hdCBmb3VuZCBpbiBmaWxlICglZClcbiIsCisJCQlmYXRhbCgiZXhwZWN0ZWQgZm9ybWF0 ICglZCkgZGlmZmVycyBmcm9tIGZvcm1hdCBmb3VuZCBpbiBmaWxlICglZCkiLAogCQkJCQkJ ICBBSC0+Zm9ybWF0LCBmbXQpOwogCX0KIApAQCAtMzgzMyw3ICszODAxLDcgQEAgUmVhZEhl YWQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKICNpZm5kZWYgSEFWRV9MSUJaCiAJaWYgKEFILT5j b21wcmVzc2lvbiAhPSAwKQotCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIldBUk5JTkc6IGFy Y2hpdmUgaXMgY29tcHJlc3NlZCwgYnV0IHRoaXMgaW5zdGFsbGF0aW9uIGRvZXMgbm90IHN1 cHBvcnQgY29tcHJlc3Npb24gLS0gbm8gZGF0YSB3aWxsIGJlIGF2YWlsYWJsZVxuIik7CisJ CXBnX2xvZ193YXJuaW5nKCJhcmNoaXZlIGlzIGNvbXByZXNzZWQsIGJ1dCB0aGlzIGluc3Rh bGxhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGNvbXByZXNzaW9uIC0tIG5vIGRhdGEgd2lsbCBi ZSBhdmFpbGFibGUiKTsKICNlbmRpZgogCiAJaWYgKEFILT52ZXJzaW9uID49IEtfVkVSU18x XzQpCkBAIC0zODUxLDcgKzM4MTksNyBAQCBSZWFkSGVhZChBcmNoaXZlSGFuZGxlICpBSCkK IAkJQUgtPmNyZWF0ZURhdGUgPSBta3RpbWUoJmNydG0pOwogCiAJCWlmIChBSC0+Y3JlYXRl RGF0ZSA9PSAodGltZV90KSAtMSkKLQkJCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAiV0FSTklO RzogaW52YWxpZCBjcmVhdGlvbiBkYXRlIGluIGhlYWRlclxuIik7CisJCQlwZ19sb2dfd2Fy bmluZygiaW52YWxpZCBjcmVhdGlvbiBkYXRlIGluIGhlYWRlciIpOwogCX0KIAogCWlmIChB SC0+dmVyc2lvbiA+PSBLX1ZFUlNfMV8xMCkKQEAgLTM5MjQsNyArMzg5Miw3IEBAIHJlc3Rv cmVfdG9jX2VudHJpZXNfcHJlZm9yayhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnBl bmRpbmdfbGlzdCkKIAlib29sCQlza2lwcGVkX3NvbWU7CiAJVG9jRW50cnkgICAqbmV4dF93 b3JrX2l0ZW07CiAKLQlhaGxvZyhBSCwgMiwgImVudGVyaW5nIHJlc3RvcmVfdG9jX2VudHJp ZXNfcHJlZm9ya1xuIik7CisJcGdfbG9nX2RlYnVnKCJlbnRlcmluZyByZXN0b3JlX3RvY19l bnRyaWVzX3ByZWZvcmsiKTsKIAogCS8qIEFkanVzdCBkZXBlbmRlbmN5IGluZm9ybWF0aW9u ICovCiAJZml4X2RlcGVuZGVuY2llcyhBSCk7CkBAIC0zOTg4LDcgKzM5NTYsNyBAQCByZXN0 b3JlX3RvY19lbnRyaWVzX3ByZWZvcmsoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICpw ZW5kaW5nX2xpc3QpCiAJCWlmIChkb19ub3cpCiAJCXsKIAkJCS8qIE9LLCByZXN0b3JlIHRo ZSBpdGVtIGFuZCB1cGRhdGUgaXRzIGRlcGVuZGVuY2llcyAqLwotCQkJYWhsb2coQUgsIDEs ICJwcm9jZXNzaW5nIGl0ZW0gJWQgJXMgJXNcbiIsCisJCQlwZ19sb2dfaW5mbygicHJvY2Vz c2luZyBpdGVtICVkICVzICVzIiwKIAkJCQkgIG5leHRfd29ya19pdGVtLT5kdW1wSWQsCiAJ CQkJICBuZXh0X3dvcmtfaXRlbS0+ZGVzYywgbmV4dF93b3JrX2l0ZW0tPnRhZyk7CiAKQEAg LTQwNDEsNyArNDAwOSw3IEBAIHJlc3RvcmVfdG9jX2VudHJpZXNfcGFyYWxsZWwoQXJjaGl2 ZUhhbmRsZSAqQUgsIFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSwKIAlQYXJhbGxlbFJlYWR5TGlz dCByZWFkeV9saXN0OwogCVRvY0VudHJ5ICAgKm5leHRfd29ya19pdGVtOwogCi0JYWhsb2co QUgsIDIsICJlbnRlcmluZyByZXN0b3JlX3RvY19lbnRyaWVzX3BhcmFsbGVsXG4iKTsKKwlw Z19sb2dfZGVidWcoImVudGVyaW5nIHJlc3RvcmVfdG9jX2VudHJpZXNfcGFyYWxsZWwiKTsK IAogCS8qIFNldCB1cCByZWFkeV9saXN0IHdpdGggZW5vdWdoIHJvb20gZm9yIGFsbCBrbm93 biBUb2NFbnRyeXMgKi8KIAlyZWFkeV9saXN0X2luaXQoJnJlYWR5X2xpc3QsIEFILT50b2ND b3VudCk7CkBAIC00MDY0LDcgKzQwMzIsNyBAQCByZXN0b3JlX3RvY19lbnRyaWVzX3BhcmFs bGVsKEFyY2hpdmVIYW5kbGUgKkFILCBQYXJhbGxlbFN0YXRlICpwc3RhdGUsCiAJICogbGVm dCB0byBiZSBkb25lLiAgTm90ZSBpbnZhcmlhbnQ6IGF0IHRvcCBvZiBsb29wLCB0aGVyZSBz aG91bGQgYWx3YXlzCiAJICogYmUgYXQgbGVhc3Qgb25lIHdvcmtlciBhdmFpbGFibGUgdG8g ZGlzcGF0Y2ggYSBqb2IgdG8uCiAJICovCi0JYWhsb2coQUgsIDEsICJlbnRlcmluZyBtYWlu IHBhcmFsbGVsIGxvb3BcbiIpOworCXBnX2xvZ19pbmZvKCJlbnRlcmluZyBtYWluIHBhcmFs bGVsIGxvb3AiKTsKIAogCWZvciAoOzspCiAJewpAQCAtNDA3NSw3ICs0MDQzLDcgQEAgcmVz dG9yZV90b2NfZW50cmllc19wYXJhbGxlbChBcmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxT dGF0ZSAqcHN0YXRlLAogCQkJLyogSWYgbm90IHRvIGJlIHJlc3RvcmVkLCBkb24ndCB3YXN0 ZSB0aW1lIGxhdW5jaGluZyBhIHdvcmtlciAqLwogCQkJaWYgKChuZXh0X3dvcmtfaXRlbS0+ cmVxcyAmIChSRVFfU0NIRU1BIHwgUkVRX0RBVEEpKSA9PSAwKQogCQkJewotCQkJCWFobG9n KEFILCAxLCAic2tpcHBpbmcgaXRlbSAlZCAlcyAlc1xuIiwKKwkJCQlwZ19sb2dfaW5mbygi c2tpcHBpbmcgaXRlbSAlZCAlcyAlcyIsCiAJCQkJCSAgbmV4dF93b3JrX2l0ZW0tPmR1bXBJ ZCwKIAkJCQkJICBuZXh0X3dvcmtfaXRlbS0+ZGVzYywgbmV4dF93b3JrX2l0ZW0tPnRhZyk7 CiAJCQkJLyogVXBkYXRlIGl0cyBkZXBlbmRlbmNpZXMgYXMgdGhvdWdoIHdlJ2QgY29tcGxl dGVkIGl0ICovCkBAIC00MDg0LDcgKzQwNTIsNyBAQCByZXN0b3JlX3RvY19lbnRyaWVzX3Bh cmFsbGVsKEFyY2hpdmVIYW5kbGUgKkFILCBQYXJhbGxlbFN0YXRlICpwc3RhdGUsCiAJCQkJ Y29udGludWU7CiAJCQl9CiAKLQkJCWFobG9nKEFILCAxLCAibGF1bmNoaW5nIGl0ZW0gJWQg JXMgJXNcbiIsCisJCQlwZ19sb2dfaW5mbygibGF1bmNoaW5nIGl0ZW0gJWQgJXMgJXMiLAog CQkJCSAgbmV4dF93b3JrX2l0ZW0tPmR1bXBJZCwKIAkJCQkgIG5leHRfd29ya19pdGVtLT5k ZXNjLCBuZXh0X3dvcmtfaXRlbS0+dGFnKTsKIApAQCAtNDEzOCw3ICs0MTA2LDcgQEAgcmVz dG9yZV90b2NfZW50cmllc19wYXJhbGxlbChBcmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxT dGF0ZSAqcHN0YXRlLAogCiAJcmVhZHlfbGlzdF9mcmVlKCZyZWFkeV9saXN0KTsKIAotCWFo bG9nKEFILCAxLCAiZmluaXNoZWQgbWFpbiBwYXJhbGxlbCBsb29wXG4iKTsKKwlwZ19sb2df aW5mbygiZmluaXNoZWQgbWFpbiBwYXJhbGxlbCBsb29wIik7CiB9CiAKIC8qCkBAIC00MTU2 LDcgKzQxMjQsNyBAQCByZXN0b3JlX3RvY19lbnRyaWVzX3Bvc3Rmb3JrKEFyY2hpdmVIYW5k bGUgKkFILCBUb2NFbnRyeSAqcGVuZGluZ19saXN0KQogCVJlc3RvcmVPcHRpb25zICpyb3B0 ID0gQUgtPnB1YmxpYy5yb3B0OwogCVRvY0VudHJ5ICAgKnRlOwogCi0JYWhsb2coQUgsIDIs ICJlbnRlcmluZyByZXN0b3JlX3RvY19lbnRyaWVzX3Bvc3Rmb3JrXG4iKTsKKwlwZ19sb2df ZGVidWcoImVudGVyaW5nIHJlc3RvcmVfdG9jX2VudHJpZXNfcG9zdGZvcmsiKTsKIAogCS8q CiAJICogTm93IHJlY29ubmVjdCB0aGUgc2luZ2xlIHBhcmVudCBjb25uZWN0aW9uLgpAQCAt NDE3Niw3ICs0MTQ0LDcgQEAgcmVzdG9yZV90b2NfZW50cmllc19wb3N0Zm9yayhBcmNoaXZl SGFuZGxlICpBSCwgVG9jRW50cnkgKnBlbmRpbmdfbGlzdCkKIAkgKi8KIAlmb3IgKHRlID0g cGVuZGluZ19saXN0LT5wZW5kaW5nX25leHQ7IHRlICE9IHBlbmRpbmdfbGlzdDsgdGUgPSB0 ZS0+cGVuZGluZ19uZXh0KQogCXsKLQkJYWhsb2coQUgsIDEsICJwcm9jZXNzaW5nIG1pc3Nl ZCBpdGVtICVkICVzICVzXG4iLAorCQlwZ19sb2dfaW5mbygicHJvY2Vzc2luZyBtaXNzZWQg aXRlbSAlZCAlcyAlcyIsCiAJCQkgIHRlLT5kdW1wSWQsIHRlLT5kZXNjLCB0ZS0+dGFnKTsK IAkJKHZvaWQpIHJlc3RvcmVfdG9jX2VudHJ5KEFILCB0ZSwgZmFsc2UpOwogCX0KQEAgLTQ0 MTgsNyArNDM4Niw3IEBAIHBvcF9uZXh0X3dvcmtfaXRlbShBcmNoaXZlSGFuZGxlICpBSCwg UGFyYWxsZWxSZWFkeUxpc3QgKnJlYWR5X2xpc3QsCiAJCXJldHVybiB0ZTsKIAl9CiAKLQlh aGxvZyhBSCwgMiwgIm5vIGl0ZW0gcmVhZHlcbiIpOworCXBnX2xvZ19kZWJ1Zygibm8gaXRl bSByZWFkeSIpOwogCXJldHVybiBOVUxMOwogfQogCkBAIC00NDYyLDcgKzQ0MzAsNyBAQCBt YXJrX3Jlc3RvcmVfam9iX2RvbmUoQXJjaGl2ZUhhbmRsZSAqQUgsCiB7CiAJUGFyYWxsZWxS ZWFkeUxpc3QgKnJlYWR5X2xpc3QgPSAoUGFyYWxsZWxSZWFkeUxpc3QgKikgY2FsbGJhY2tf ZGF0YTsKIAotCWFobG9nKEFILCAxLCAiZmluaXNoZWQgaXRlbSAlZCAlcyAlc1xuIiwKKwlw Z19sb2dfaW5mbygiZmluaXNoZWQgaXRlbSAlZCAlcyAlcyIsCiAJCSAgdGUtPmR1bXBJZCwg dGUtPmRlc2MsIHRlLT50YWcpOwogCiAJaWYgKHN0YXR1cyA9PSBXT1JLRVJfQ1JFQVRFX0RP TkUpCkBAIC00NDc1LDcgKzQ0NDMsNyBAQCBtYXJrX3Jlc3RvcmVfam9iX2RvbmUoQXJjaGl2 ZUhhbmRsZSAqQUgsCiAJZWxzZSBpZiAoc3RhdHVzID09IFdPUktFUl9JR05PUkVEX0VSUk9S UykKIAkJQUgtPnB1YmxpYy5uX2Vycm9ycysrOwogCWVsc2UgaWYgKHN0YXR1cyAhPSAwKQot CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJ3b3JrZXIgcHJvY2VzcyBmYWlsZWQ6IGV4 aXQgY29kZSAlZFxuIiwKKwkJZmF0YWwoIndvcmtlciBwcm9jZXNzIGZhaWxlZDogZXhpdCBj b2RlICVkIiwKIAkJCQkJICBzdGF0dXMpOwogCiAJcmVkdWNlX2RlcGVuZGVuY2llcyhBSCwg dGUsIHJlYWR5X2xpc3QpOwpAQCAtNDY0Nyw3ICs0NjE1LDcgQEAgcmVwb2ludF90YWJsZV9k ZXBlbmRlbmNpZXMoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkJCQl0ZS0+ZGVwZW5kZW5jaWVz W2ldID0gdGFibGVkYXRhaWQ7CiAJCQkJdGUtPmRhdGFMZW5ndGggPSBNYXgodGUtPmRhdGFM ZW5ndGgsIHRhYmxlZGF0YXRlLT5kYXRhTGVuZ3RoKTsKLQkJCQlhaGxvZyhBSCwgMiwgInRy YW5zZmVycmluZyBkZXBlbmRlbmN5ICVkIC0+ICVkIHRvICVkXG4iLAorCQkJCXBnX2xvZ19k ZWJ1ZygidHJhbnNmZXJyaW5nIGRlcGVuZGVuY3kgJWQgLT4gJWQgdG8gJWQiLAogCQkJCQkg IHRlLT5kdW1wSWQsIG9sZGRlcCwgdGFibGVkYXRhaWQpOwogCQkJfQogCQl9CkBAIC00NzI5 LDcgKzQ2OTcsNyBAQCByZWR1Y2VfZGVwZW5kZW5jaWVzKEFyY2hpdmVIYW5kbGUgKkFILCBU b2NFbnRyeSAqdGUsCiB7CiAJaW50CQkJaTsKIAotCWFobG9nKEFILCAyLCAicmVkdWNpbmcg ZGVwZW5kZW5jaWVzIGZvciAlZFxuIiwgdGUtPmR1bXBJZCk7CisJcGdfbG9nX2RlYnVnKCJy ZWR1Y2luZyBkZXBlbmRlbmNpZXMgZm9yICVkIiwgdGUtPmR1bXBJZCk7CiAKIAlmb3IgKGkg PSAwOyBpIDwgdGUtPm5SZXZEZXBzOyBpKyspCiAJewpAQCAtNDc4MSw3ICs0NzQ5LDcgQEAg bWFya19jcmVhdGVfZG9uZShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogc3Rh dGljIHZvaWQKIGluaGliaXRfZGF0YV9mb3JfZmFpbGVkX3RhYmxlKEFyY2hpdmVIYW5kbGUg KkFILCBUb2NFbnRyeSAqdGUpCiB7Ci0JYWhsb2coQUgsIDEsICJ0YWJsZSBcIiVzXCIgY291 bGQgbm90IGJlIGNyZWF0ZWQsIHdpbGwgbm90IHJlc3RvcmUgaXRzIGRhdGFcbiIsCisJcGdf bG9nX2luZm8oInRhYmxlIFwiJXNcIiBjb3VsZCBub3QgYmUgY3JlYXRlZCwgd2lsbCBub3Qg cmVzdG9yZSBpdHMgZGF0YSIsCiAJCSAgdGUtPnRhZyk7CiAKIAlpZiAoQUgtPnRhYmxlRGF0 YUlkW3RlLT5kdW1wSWRdICE9IDApCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX2FyY2hpdmVyLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVy LmgKaW5kZXggMzA2ZDJjZWJhOS4uMWUzNjYxNTViNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfYXJjaGl2ZXIuaApAQCAtMTI2LDE3ICsxMjYsMTQgQEAgc3RydWN0IFBhcmFsbGVs U3RhdGU7CiAjZGVmaW5lIFJFQURfRVJST1JfRVhJVChmZCkgXAogCWRvIHsgXAogCQlpZiAo ZmVvZihmZCkpIFwKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgXAotCQkJCQkJICAi Y291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiBlbmQgb2YgZmlsZVxuIik7IFwKKwkJ CWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBvZiBmaWxlIik7 IFwKIAkJZWxzZSBcCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsIFwKLQkJCQkJImNv dWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7 IFwKKwkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVtIik7IFwK IAl9IHdoaWxlICgwKQogCiAjZGVmaW5lIFdSSVRFX0VSUk9SX0VYSVQgXAogCWRvIHsgXAot CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgd3JpdGUgdG8gb3V0cHV0 IGZpbGU6ICVzXG4iLCBcCi0JCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsgXAorCQlmYXRhbCgi Y291bGQgbm90IHdyaXRlIHRvIG91dHB1dCBmaWxlOiAlbSIpOyBcCiAJfSB3aGlsZSAoMCkK IAogdHlwZWRlZiBlbnVtIFRfQWN0aW9uCkBAIC0yNDYsOCArMjQzLDYgQEAgc3RydWN0IF9h cmNoaXZlSGFuZGxlCiAJY2hhcgkgICAqYXJjaGl2ZUR1bXBWZXJzaW9uOyAvKiBXaGVuIHJl YWRpbmcgYW4gYXJjaGl2ZSwgdGhlIHZlcnNpb24gb2YKIAkJCQkJCQkJCSAqIHRoZSBkdW1w ZXIgKi8KIAotCWludAkJCWRlYnVnTGV2ZWw7CQkvKiBVc2VkIGZvciBsb2dnaW5nIChjdXJy ZW50bHkgb25seSBieQotCQkJCQkJCQkgKiAtLXZlcmJvc2UpICovCiAJc2l6ZV90CQlpbnRT aXplOwkJLyogU2l6ZSBvZiBhbiBpbnRlZ2VyIGluIHRoZSBhcmNoaXZlICovCiAJc2l6ZV90 CQlvZmZTaXplOwkJLyogU2l6ZSBvZiBhIGZpbGUgb2Zmc2V0IGluIHRoZSBhcmNoaXZlIC0K IAkJCQkJCQkJICogQWRkZWQgVjEuNyAqLwpAQCAtNDY4LDYgKzQ2Myw0IEBAIGV4dGVybiB2 b2lkIERyb3BCbG9iSWZFeGlzdHMoQXJjaGl2ZUhhbmRsZSAqQUgsIE9pZCBvaWQpOwogdm9p ZAkJYWh3cml0ZShjb25zdCB2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIs IEFyY2hpdmVIYW5kbGUgKkFIKTsKIGludAkJCWFocHJpbnRmKEFyY2hpdmVIYW5kbGUgKkFI LCBjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDMpOwogCi12 b2lkCQlhaGxvZyhBcmNoaXZlSGFuZGxlICpBSCwgaW50IGxldmVsLCBjb25zdCBjaGFyICpm bXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDMsIDQpOwotCiAjZW5kaWYKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMgYi9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2N1c3RvbS5jCmluZGV4IDk2ZjQ0ZTg4YjEuLmU4MTFjNmM5MWEgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYwpAQCAtMjksNiArMjksNyBAQAogI2lu Y2x1ZGUgInBhcmFsbGVsLmgiCiAjaW5jbHVkZSAicGdfYmFja3VwX3V0aWxzLmgiCiAjaW5j bHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5n LmgiCiAKIC8qLS0tLS0tLS0KICAqIFJvdXRpbmVzIGluIHRoZSBmb3JtYXQgaW50ZXJmYWNl CkBAIC05MSw5ICs5Miw2IEBAIHN0YXRpYyBwZ29mZl90IF9nZXRGaWxlUG9zKEFyY2hpdmVI YW5kbGUgKkFILCBsY2xDb250ZXh0ICpjdHgpOwogc3RhdGljIHZvaWQgX0N1c3RvbVdyaXRl RnVuYyhBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKTsK IHN0YXRpYyBzaXplX3QgX0N1c3RvbVJlYWRGdW5jKEFyY2hpdmVIYW5kbGUgKkFILCBjaGFy ICoqYnVmLCBzaXplX3QgKmJ1Zmxlbik7CiAKLS8qIHRyYW5zbGF0b3I6IHRoaXMgaXMgYSBt b2R1bGUgbmFtZSAqLwotc3RhdGljIGNvbnN0IGNoYXIgKm1vZHVsZW5hbWUgPSBnZXR0ZXh0 X25vb3AoImN1c3RvbSBhcmNoaXZlciIpOwotCiAKIAogLyoKQEAgLTE1OSwxNSArMTU3LDEz IEBAIEluaXRBcmNoaXZlRm10X0N1c3RvbShBcmNoaXZlSGFuZGxlICpBSCkKIAkJewogCQkJ QUgtPkZIID0gZm9wZW4oQUgtPmZTcGVjLCBQR19CSU5BUllfVyk7CiAJCQlpZiAoIUFILT5G SCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBvdXRw dXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkJCSAgQUgtPmZTcGVjLCBzdHJlcnJvcihl cnJubykpOworCQkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6 ICVtIiwgQUgtPmZTcGVjKTsKIAkJfQogCQllbHNlCiAJCXsKIAkJCUFILT5GSCA9IHN0ZG91 dDsKIAkJCWlmICghQUgtPkZIKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNv dWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlOiAlc1xuIiwKLQkJCQkJCQkgIHN0cmVycm9yKGVy cm5vKSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlOiAlbSIpOwog CQl9CiAKIAkJY3R4LT5oYXNTZWVrID0gY2hlY2tTZWVrKEFILT5GSCk7CkBAIC0xNzgsMTUg KzE3NCwxMyBAQCBJbml0QXJjaGl2ZUZtdF9DdXN0b20oQXJjaGl2ZUhhbmRsZSAqQUgpCiAJ CXsKIAkJCUFILT5GSCA9IGZvcGVuKEFILT5mU3BlYywgUEdfQklOQVJZX1IpOwogCQkJaWYg KCFBSC0+RkgpCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9w ZW4gaW5wdXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkJCSAgQUgtPmZTcGVjLCBzdHJl cnJvcihlcnJubykpOworCQkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwi JXNcIjogJW0iLCBBSC0+ZlNwZWMpOwogCQl9CiAJCWVsc2UKIAkJewogCQkJQUgtPkZIID0g c3RkaW47CiAJCQlpZiAoIUFILT5GSCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs ICJjb3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlOiAlc1xuIiwKLQkJCQkJCQkgIHN0cmVycm9y KGVycm5vKSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGU6ICVtIik7 CiAJCX0KIAogCQljdHgtPmhhc1NlZWsgPSBjaGVja1NlZWsoQUgtPkZIKTsKQEAgLTM4MSw3 ICszNzUsNyBAQCBfU3RhcnRCbG9iKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUs IE9pZCBvaWQpCiAJbGNsQ29udGV4dCAqY3R4ID0gKGxjbENvbnRleHQgKikgQUgtPmZvcm1h dERhdGE7CiAKIAlpZiAob2lkID09IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwg ImludmFsaWQgT0lEIGZvciBsYXJnZSBvYmplY3RcbiIpOworCQlmYXRhbCgiaW52YWxpZCBP SUQgZm9yIGxhcmdlIG9iamVjdCIpOwogCiAJV3JpdGVJbnQoQUgsIG9pZCk7CiAKQEAgLTQ1 MSw4ICs0NDUsNyBAQCBfUHJpbnRUb2NEYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRy eSAqdGUpCiAJCQkJCWJyZWFrOwogCiAJCQkJZGVmYXVsdDoJCS8qIEFsd2F5cyBoYXZlIGEg ZGVmYXVsdCAqLwotCQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkJCSAg InVucmVjb2duaXplZCBkYXRhIGJsb2NrIHR5cGUgKCVkKSB3aGlsZSBzZWFyY2hpbmcgYXJj aGl2ZVxuIiwKKwkJCQkJZmF0YWwoInVucmVjb2duaXplZCBkYXRhIGJsb2NrIHR5cGUgKCVk KSB3aGlsZSBzZWFyY2hpbmcgYXJjaGl2ZSIsCiAJCQkJCQkJCSAgYmxrVHlwZSk7CiAJCQkJ CWJyZWFrOwogCQkJfQpAQCAtNDYzLDggKzQ1Niw3IEBAIF9QcmludFRvY0RhdGEoQXJjaGl2 ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAl7CiAJCS8qIFdlIGNhbiBqdXN0IHNlZWsg dG8gdGhlIHBsYWNlIHdlIG5lZWQgdG8gYmUuICovCiAJCWlmIChmc2Vla28oQUgtPkZILCB0 Y3R4LT5kYXRhUG9zLCBTRUVLX1NFVCkgIT0gMCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxl bmFtZSwgImVycm9yIGR1cmluZyBmaWxlIHNlZWs6ICVzXG4iLAotCQkJCQkJICBzdHJlcnJv cihlcnJubykpOworCQkJZmF0YWwoImVycm9yIGR1cmluZyBmaWxlIHNlZWs6ICVtIik7CiAK IAkJX3JlYWRCbG9ja0hlYWRlcihBSCwgJmJsa1R5cGUsICZpZCk7CiAJfQpAQCAtNDczLDI0 ICs0NjUsMjQgQEAgX1ByaW50VG9jRGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkg KnRlKQogCWlmIChibGtUeXBlID09IEVPRikKIAl7CiAJCWlmICh0Y3R4LT5kYXRhU3RhdGUg PT0gS19PRkZTRVRfUE9TX05PVF9TRVQpCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs ICJjb3VsZCBub3QgZmluZCBibG9jayBJRCAlZCBpbiBhcmNoaXZlIC0tICIKLQkJCQkJCSAg InBvc3NpYmx5IGR1ZSB0byBvdXQtb2Ytb3JkZXIgcmVzdG9yZSByZXF1ZXN0LCAiCi0JCQkJ CQkgICJ3aGljaCBjYW5ub3QgYmUgaGFuZGxlZCBkdWUgdG8gbGFjayBvZiBkYXRhIG9mZnNl dHMgaW4gYXJjaGl2ZVxuIiwKLQkJCQkJCSAgdGUtPmR1bXBJZCk7CisJCQlmYXRhbCgiY291 bGQgbm90IGZpbmQgYmxvY2sgSUQgJWQgaW4gYXJjaGl2ZSAtLSAiCisJCQkJICAicG9zc2li bHkgZHVlIHRvIG91dC1vZi1vcmRlciByZXN0b3JlIHJlcXVlc3QsICIKKwkJCQkgICJ3aGlj aCBjYW5ub3QgYmUgaGFuZGxlZCBkdWUgdG8gbGFjayBvZiBkYXRhIG9mZnNldHMgaW4gYXJj aGl2ZSIsCisJCQkJICB0ZS0+ZHVtcElkKTsKIAkJZWxzZSBpZiAoIWN0eC0+aGFzU2VlaykK LQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBmaW5kIGJsb2NrIElE ICVkIGluIGFyY2hpdmUgLS0gIgotCQkJCQkJICAicG9zc2libHkgZHVlIHRvIG91dC1vZi1v cmRlciByZXN0b3JlIHJlcXVlc3QsICIKLQkJCQkJCSAgIndoaWNoIGNhbm5vdCBiZSBoYW5k bGVkIGR1ZSB0byBub24tc2Vla2FibGUgaW5wdXQgZmlsZVxuIiwKLQkJCQkJCSAgdGUtPmR1 bXBJZCk7CisJCQlmYXRhbCgiY291bGQgbm90IGZpbmQgYmxvY2sgSUQgJWQgaW4gYXJjaGl2 ZSAtLSAiCisJCQkJICAicG9zc2libHkgZHVlIHRvIG91dC1vZi1vcmRlciByZXN0b3JlIHJl cXVlc3QsICIKKwkJCQkgICJ3aGljaCBjYW5ub3QgYmUgaGFuZGxlZCBkdWUgdG8gbm9uLXNl ZWthYmxlIGlucHV0IGZpbGUiLAorCQkJCSAgdGUtPmR1bXBJZCk7CiAJCWVsc2UJCQkJCS8q IGh1aCwgdGhlIGRhdGFQb3MgbGVkIHVzIHRvIEVPRj8gKi8KLQkJCWV4aXRfaG9ycmlibHko bW9kdWxlbmFtZSwgImNvdWxkIG5vdCBmaW5kIGJsb2NrIElEICVkIGluIGFyY2hpdmUgLS0g IgotCQkJCQkJICAicG9zc2libHkgY29ycnVwdCBhcmNoaXZlXG4iLAotCQkJCQkJICB0ZS0+ ZHVtcElkKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgZmluZCBibG9jayBJRCAlZCBpbiBhcmNo aXZlIC0tICIKKwkJCQkgICJwb3NzaWJseSBjb3JydXB0IGFyY2hpdmUiLAorCQkJCSAgdGUt PmR1bXBJZCk7CiAJfQogCiAJLyogQXJlIHdlIHNhbmU/ICovCiAJaWYgKGlkICE9IHRlLT5k dW1wSWQpCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImZvdW5kIHVuZXhwZWN0ZWQg YmxvY2sgSUQgKCVkKSB3aGVuIHJlYWRpbmcgZGF0YSAtLSBleHBlY3RlZCAlZFxuIiwKKwkJ ZmF0YWwoImZvdW5kIHVuZXhwZWN0ZWQgYmxvY2sgSUQgKCVkKSB3aGVuIHJlYWRpbmcgZGF0 YSAtLSBleHBlY3RlZCAlZCIsCiAJCQkJCSAgaWQsIHRlLT5kdW1wSWQpOwogCiAJc3dpdGNo IChibGtUeXBlKQpAQCAtNTA0LDcgKzQ5Niw3IEBAIF9QcmludFRvY0RhdGEoQXJjaGl2ZUhh bmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6CQkJCS8q IEFsd2F5cyBoYXZlIGEgZGVmYXVsdCAqLwotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LCAidW5yZWNvZ25pemVkIGRhdGEgYmxvY2sgdHlwZSAlZCB3aGlsZSByZXN0b3JpbmcgYXJj aGl2ZVxuIiwKKwkJCWZhdGFsKCJ1bnJlY29nbml6ZWQgZGF0YSBibG9jayB0eXBlICVkIHdo aWxlIHJlc3RvcmluZyBhcmNoaXZlIiwKIAkJCQkJCSAgYmxrVHlwZSk7CiAJCQlicmVhazsK IAl9CkBAIC01ODQsMTEgKzU3Niw5IEBAIF9za2lwRGF0YShBcmNoaXZlSGFuZGxlICpBSCkK IAkJaWYgKChjbnQgPSBmcmVhZChidWYsIDEsIGJsa0xlbiwgQUgtPkZIKSkgIT0gYmxrTGVu KQogCQl7CiAJCQlpZiAoZmVvZihBSC0+RkgpKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxl bmFtZSwKLQkJCQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBv ZiBmaWxlXG4iKTsKKwkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxl OiBlbmQgb2YgZmlsZSIpOwogCQkJZWxzZQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFt ZSwKLQkJCQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzXG4iLCBz dHJlcnJvcihlcnJubykpOworCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0 IGZpbGU6ICVtIik7CiAJCX0KIAogCQljdHgtPmZpbGVQb3MgKz0gYmxrTGVuOwpAQCAtNzA2 LDggKzY5Niw3IEBAIF9DbG9zZUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCS8qIFJl bWVtYmVyIFRPQydzIHNlZWsgcG9zaXRpb24gZm9yIHVzZSBiZWxvdyAqLwogCQl0cG9zID0g ZnRlbGxvKEFILT5GSCk7CiAJCWlmICh0cG9zIDwgMCAmJiBjdHgtPmhhc1NlZWspCi0JCQll eGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgZGV0ZXJtaW5lIHNlZWsgcG9z aXRpb24gaW4gYXJjaGl2ZSBmaWxlOiAlc1xuIiwKLQkJCQkJCSAgc3RyZXJyb3IoZXJybm8p KTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHNlZWsgcG9zaXRpb24gaW4gYXJj aGl2ZSBmaWxlOiAlbSIpOwogCQlXcml0ZVRvYyhBSCk7CiAJCWN0eC0+ZGF0YVN0YXJ0ID0g X2dldEZpbGVQb3MoQUgsIGN0eCk7CiAJCVdyaXRlRGF0YUNodW5rcyhBSCwgTlVMTCk7CkBA IC03MjQsMTEgKzcxMywxMSBAQCBfQ2xvc2VBcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFIKQog CX0KIAogCWlmIChmY2xvc2UoQUgtPkZIKSAhPSAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsICJjb3VsZCBub3QgY2xvc2UgYXJjaGl2ZSBmaWxlOiAlc1xuIiwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBhcmNoaXZlIGZpbGU6ICVtIik7 CiAKIAkvKiBTeW5jIHRoZSBvdXRwdXQgZmlsZSBpZiBvbmUgaXMgZGVmaW5lZCAqLwogCWlm IChBSC0+ZG9zeW5jICYmIEFILT5tb2RlID09IGFyY2hNb2RlV3JpdGUgJiYgQUgtPmZTcGVj KQotCQkodm9pZCkgZnN5bmNfZm5hbWUoQUgtPmZTcGVjLCBmYWxzZSwgcHJvZ25hbWUpOwor CQkodm9pZCkgZnN5bmNfZm5hbWUoQUgtPmZTcGVjLCBmYWxzZSk7CiAKIAlBSC0+RkggPSBO VUxMOwogfQpAQCAtNzQ3LDM2ICs3MzYsMzIgQEAgX1Jlb3BlbkFyY2hpdmUoQXJjaGl2ZUhh bmRsZSAqQUgpCiAJcGdvZmZfdAkJdHBvczsKIAogCWlmIChBSC0+bW9kZSA9PSBhcmNoTW9k ZVdyaXRlKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjYW4gb25seSByZW9wZW4g aW5wdXQgYXJjaGl2ZXNcbiIpOworCQlmYXRhbCgiY2FuIG9ubHkgcmVvcGVuIGlucHV0IGFy Y2hpdmVzIik7CiAKIAkvKgogCSAqIFRoZXNlIHR3byBjYXNlcyBhcmUgdXNlci1mYWNpbmcg ZXJyb3JzIHNpbmNlIHRoZXkgcmVwcmVzZW50IHVuc3VwcG9ydGVkCiAJICogKGJ1dCBub3Qg aW52YWxpZCkgdXNlLWNhc2VzLiAgV29yZCB0aGUgZXJyb3IgbWVzc2FnZXMgYXBwcm9wcmlh dGVseS4KIAkgKi8KIAlpZiAoQUgtPmZTcGVjID09IE5VTEwgfHwgc3RyY21wKEFILT5mU3Bl YywgIiIpID09IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInBhcmFsbGVsIHJl c3RvcmUgZnJvbSBzdGFuZGFyZCBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkXG4iKTsKKwkJZmF0 YWwoInBhcmFsbGVsIHJlc3RvcmUgZnJvbSBzdGFuZGFyZCBpbnB1dCBpcyBub3Qgc3VwcG9y dGVkIik7CiAJaWYgKCFjdHgtPmhhc1NlZWspCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFt ZSwgInBhcmFsbGVsIHJlc3RvcmUgZnJvbSBub24tc2Vla2FibGUgZmlsZSBpcyBub3Qgc3Vw cG9ydGVkXG4iKTsKKwkJZmF0YWwoInBhcmFsbGVsIHJlc3RvcmUgZnJvbSBub24tc2Vla2Fi bGUgZmlsZSBpcyBub3Qgc3VwcG9ydGVkIik7CiAKIAl0cG9zID0gZnRlbGxvKEFILT5GSCk7 CiAJaWYgKHRwb3MgPCAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBu b3QgZGV0ZXJtaW5lIHNlZWsgcG9zaXRpb24gaW4gYXJjaGl2ZSBmaWxlOiAlc1xuIiwKLQkJ CQkJICBzdHJlcnJvcihlcnJubykpOworCQlmYXRhbCgiY291bGQgbm90IGRldGVybWluZSBz ZWVrIHBvc2l0aW9uIGluIGFyY2hpdmUgZmlsZTogJW0iKTsKIAogI2lmbmRlZiBXSU4zMgog CWlmIChmY2xvc2UoQUgtPkZIKSAhPSAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs ICJjb3VsZCBub3QgY2xvc2UgYXJjaGl2ZSBmaWxlOiAlc1xuIiwKLQkJCQkJICBzdHJlcnJv cihlcnJubykpOworCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIGFyY2hpdmUgZmlsZTogJW0i KTsKICNlbmRpZgogCiAJQUgtPkZIID0gZm9wZW4oQUgtPmZTcGVjLCBQR19CSU5BUllfUik7 CiAJaWYgKCFBSC0+RkgpCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5v dCBvcGVuIGlucHV0IGZpbGUgXCIlc1wiOiAlc1xuIiwKLQkJCQkJICBBSC0+ZlNwZWMsIHN0 cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwi JXNcIjogJW0iLCBBSC0+ZlNwZWMpOwogCiAJaWYgKGZzZWVrbyhBSC0+RkgsIHRwb3MsIFNF RUtfU0VUKSAhPSAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qg c2V0IHNlZWsgcG9zaXRpb24gaW4gYXJjaGl2ZSBmaWxlOiAlc1xuIiwKLQkJCQkJICBzdHJl cnJvcihlcnJubykpOworCQlmYXRhbCgiY291bGQgbm90IHNldCBzZWVrIHBvc2l0aW9uIGlu IGFyY2hpdmUgZmlsZTogJW0iKTsKIH0KIAogLyoKQEAgLTgzMSw4ICs4MTYsNyBAQCBfUHJl cFBhcmFsbGVsUmVzdG9yZShBcmNoaXZlSGFuZGxlICpBSCkKIAkJcGdvZmZfdAkJZW5kcG9z OwogCiAJCWlmIChmc2Vla28oQUgtPkZILCAwLCBTRUVLX0VORCkgIT0gMCkKLQkJCWV4aXRf aG9ycmlibHkobW9kdWxlbmFtZSwgImVycm9yIGR1cmluZyBmaWxlIHNlZWs6ICVzXG4iLAot CQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJZmF0YWwoImVycm9yIGR1cmluZyBmaWxl IHNlZWs6ICVtIik7CiAJCWVuZHBvcyA9IGZ0ZWxsbyhBSC0+RkgpOwogCQlpZiAoZW5kcG9z ID4gcHJldl90Y3R4LT5kYXRhUG9zKQogCQkJcHJldl90ZS0+ZGF0YUxlbmd0aCA9IGVuZHBv cyAtIHByZXZfdGN0eC0+ZGF0YVBvczsKQEAgLTg1Myw3ICs4MzcsNyBAQCBfQ2xvbmUoQXJj aGl2ZUhhbmRsZSAqQUgpCiAKIAkvKiBzYW5pdHkgY2hlY2ssIHNob3VsZG4ndCBoYXBwZW4g Ki8KIAlpZiAoY3R4LT5jcyAhPSBOVUxMKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs ICJjb21wcmVzc29yIGFjdGl2ZVxuIik7CisJCWZhdGFsKCJjb21wcmVzc29yIGFjdGl2ZSIp OwogCiAJLyoKIAkgKiBOb3RlOiB3ZSBkbyBub3QgbWFrZSBhIGxvY2FsIGxvX2J1ZiBiZWNh dXNlIHdlIGV4cGVjdCBhdCBtb3N0IG9uZSBCTE9CUwpAQCAtOTA1LDExICs4ODksMTAgQEAg X2dldEZpbGVQb3MoQXJjaGl2ZUhhbmRsZSAqQUgsIGxjbENvbnRleHQgKmN0eCkKIAkJICov CiAJCXBvcyA9IGZ0ZWxsbyhBSC0+RkgpOwogCQlpZiAocG9zIDwgMCkKLQkJCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBkZXRlcm1pbmUgc2VlayBwb3NpdGlvbiBp biBhcmNoaXZlIGZpbGU6ICVzXG4iLAotCQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJ ZmF0YWwoImNvdWxkIG5vdCBkZXRlcm1pbmUgc2VlayBwb3NpdGlvbiBpbiBhcmNoaXZlIGZp bGU6ICVtIik7CiAKIAkJaWYgKHBvcyAhPSBjdHgtPmZpbGVQb3MpCi0JCQl3cml0ZV9tc2co bW9kdWxlbmFtZSwgIldBUk5JTkc6IGZ0ZWxsIG1pc21hdGNoIHdpdGggZXhwZWN0ZWQgcG9z aXRpb24gLS0gZnRlbGwgdXNlZFxuIik7CisJCQlwZ19sb2dfd2FybmluZygiZnRlbGwgbWlz bWF0Y2ggd2l0aCBleHBlY3RlZCBwb3NpdGlvbiAtLSBmdGVsbCB1c2VkIik7CiAJfQogCWVs c2UKIAkJcG9zID0gY3R4LT5maWxlUG9zOwpAQCAtOTI4LDcgKzkxMSw3IEBAIF9yZWFkQmxv Y2tIZWFkZXIoQXJjaGl2ZUhhbmRsZSAqQUgsIGludCAqdHlwZSwgaW50ICppZCkKIAlpbnQJ CQlieXQ7CiAKIAkvKgotCSAqIE5vdGU6IGlmIHdlIGFyZSBhdCBFT0Ygd2l0aCBhIHByZS0x LjMgaW5wdXQgZmlsZSwgd2UnbGwgZXhpdF9ob3JyaWJseQorCSAqIE5vdGU6IGlmIHdlIGFy ZSBhdCBFT0Ygd2l0aCBhIHByZS0xLjMgaW5wdXQgZmlsZSwgd2UnbGwgZmF0YWwoKQogCSAq IGluc2lkZSBSZWFkSW50IHJhdGhlciB0aGFuIHJldHVybmluZyBFT0YuICBJdCBkb2Vzbid0 IHNlZW0gd29ydGgKIAkgKiBqdW1waW5nIHRocm91Z2ggaG9vcHMgdG8gZGVhbCB3aXRoIHRo YXQgY2FzZSBiZXR0ZXIsIGJlY2F1c2Ugbm8gc3VjaAogCSAqIGZpbGVzIGFyZSBsaWtlbHkg dG8gZXhpc3QgaW4gdGhlIHdpbGQ6IG9ubHkgc29tZSA3LjEgZGV2ZWxvcG1lbnQKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXBfZGIuYwppbmRleCA1ZTMyZWU4YTViLi5mYTU3NmViNThmIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RiLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9kYi5jCkBAIC0xMyw2ICsxMyw3IEBACiAKICNpbmNsdWRlICJkdW1w dXRpbHMuaCIKICNpbmNsdWRlICJmZV91dGlscy9jb25uZWN0LmgiCisjaW5jbHVkZSAiZmVf dXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgog I2luY2x1ZGUgInBhcmFsbGVsLmgiCiAjaW5jbHVkZSAicGdfYmFja3VwX2FyY2hpdmVyLmgi CkBAIC00Myw3ICs0NCw3IEBAIF9jaGVja19kYXRhYmFzZV92ZXJzaW9uKEFyY2hpdmVIYW5k bGUgKkFIKQogCXJlbW90ZXZlcnNpb25fc3RyID0gUFFwYXJhbWV0ZXJTdGF0dXMoQUgtPmNv bm5lY3Rpb24sICJzZXJ2ZXJfdmVyc2lvbiIpOwogCXJlbW90ZXZlcnNpb24gPSBQUXNlcnZl clZlcnNpb24oQUgtPmNvbm5lY3Rpb24pOwogCWlmIChyZW1vdGV2ZXJzaW9uID09IDAgfHwg IXJlbW90ZXZlcnNpb25fc3RyKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3Vs ZCBub3QgZ2V0IHNlcnZlcl92ZXJzaW9uIGZyb20gbGlicHFcbiIpOworCQlmYXRhbCgiY291 bGQgbm90IGdldCBzZXJ2ZXJfdmVyc2lvbiBmcm9tIGxpYnBxIik7CiAKIAlBSC0+cHVibGlj LnJlbW90ZVZlcnNpb25TdHIgPSBwZ19zdHJkdXAocmVtb3RldmVyc2lvbl9zdHIpOwogCUFI LT5wdWJsaWMucmVtb3RlVmVyc2lvbiA9IHJlbW90ZXZlcnNpb247CkBAIC01NCw5ICs1NSw5 IEBAIF9jaGVja19kYXRhYmFzZV92ZXJzaW9uKEFyY2hpdmVIYW5kbGUgKkFIKQogCQkmJiAo cmVtb3RldmVyc2lvbiA8IEFILT5wdWJsaWMubWluUmVtb3RlVmVyc2lvbiB8fAogCQkJcmVt b3RldmVyc2lvbiA+IEFILT5wdWJsaWMubWF4UmVtb3RlVmVyc2lvbikpCiAJewotCQl3cml0 ZV9tc2coTlVMTCwgInNlcnZlciB2ZXJzaW9uOiAlczsgJXMgdmVyc2lvbjogJXNcbiIsCisJ CXBnX2xvZ19lcnJvcigic2VydmVyIHZlcnNpb246ICVzOyAlcyB2ZXJzaW9uOiAlcyIsCiAJ CQkJICByZW1vdGV2ZXJzaW9uX3N0ciwgcHJvZ25hbWUsIFBHX1ZFUlNJT04pOwotCQlleGl0 X2hvcnJpYmx5KE5VTEwsICJhYm9ydGluZyBiZWNhdXNlIG9mIHNlcnZlciB2ZXJzaW9uIG1p c21hdGNoXG4iKTsKKwkJZmF0YWwoImFib3J0aW5nIGJlY2F1c2Ugb2Ygc2VydmVyIHZlcnNp b24gbWlzbWF0Y2giKTsKIAl9CiAKIAkvKgpAQCAtMTM5LDcgKzE0MCw3IEBAIF9jb25uZWN0 REIoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKnJlcWRiLCBjb25zdCBjaGFyICpy ZXF1c2VyKQogCWVsc2UKIAkJbmV3dXNlciA9IHJlcXVzZXI7CiAKLQlhaGxvZyhBSCwgMSwg ImNvbm5lY3RpbmcgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiXG4iLAorCXBn X2xvZ19pbmZvKCJjb25uZWN0aW5nIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNc IiIsCiAJCSAgbmV3ZGIsIG5ld3VzZXIpOwogCiAJcGFzc3dvcmQgPSBBSC0+c2F2ZWRQYXNz d29yZDsKQEAgLTE3OCwxMiArMTc5LDEyIEBAIF9jb25uZWN0REIoQXJjaGl2ZUhhbmRsZSAq QUgsIGNvbnN0IGNoYXIgKnJlcWRiLCBjb25zdCBjaGFyICpyZXF1c2VyKQogCQluZXdDb25u ID0gUFFjb25uZWN0ZGJQYXJhbXMoa2V5d29yZHMsIHZhbHVlcywgdHJ1ZSk7CiAKIAkJaWYg KCFuZXdDb25uKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZmFpbGVkIHRvIHJl Y29ubmVjdCB0byBkYXRhYmFzZVxuIik7CisJCQlmYXRhbCgiZmFpbGVkIHRvIHJlY29ubmVj dCB0byBkYXRhYmFzZSIpOwogCiAJCWlmIChQUXN0YXR1cyhuZXdDb25uKSA9PSBDT05ORUNU SU9OX0JBRCkKIAkJewogCQkJaWYgKCFQUWNvbm5lY3Rpb25OZWVkc1Bhc3N3b3JkKG5ld0Nv bm4pKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCByZWNvbm5l Y3QgdG8gZGF0YWJhc2U6ICVzIiwKKwkJCQlmYXRhbCgiY291bGQgbm90IHJlY29ubmVjdCB0 byBkYXRhYmFzZTogJXMiLAogCQkJCQkJCSAgUFFlcnJvck1lc3NhZ2UobmV3Q29ubikpOwog CQkJUFFmaW5pc2gobmV3Q29ubik7CiAKQEAgLTE5OSw3ICsyMDAsNyBAQCBfY29ubmVjdERC KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpyZXFkYiwgY29uc3QgY2hhciAqcmVx dXNlcikKIAkJCQlwYXNzd29yZCA9IHBhc3NidWY7CiAJCQl9CiAJCQllbHNlCi0JCQkJZXhp dF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY29ubmVjdGlvbiBuZWVkcyBwYXNzd29yZFxuIik7 CisJCQkJZmF0YWwoImNvbm5lY3Rpb24gbmVlZHMgcGFzc3dvcmQiKTsKIAogCQkJbmV3X3Bh c3MgPSB0cnVlOwogCQl9CkBAIC0yNTAsNyArMjUxLDcgQEAgQ29ubmVjdERhdGFiYXNlKEFy Y2hpdmUgKkFIWCwKIAlib29sCQluZXdfcGFzczsKIAogCWlmIChBSC0+Y29ubmVjdGlvbikK LQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiYWxyZWFkeSBjb25uZWN0ZWQgdG8gYSBk YXRhYmFzZVxuIik7CisJCWZhdGFsKCJhbHJlYWR5IGNvbm5lY3RlZCB0byBhIGRhdGFiYXNl Iik7CiAKIAlwYXNzd29yZCA9IEFILT5zYXZlZFBhc3N3b3JkOwogCkBAIC0yODksNyArMjkw LDcgQEAgQ29ubmVjdERhdGFiYXNlKEFyY2hpdmUgKkFIWCwKIAkJQUgtPmNvbm5lY3Rpb24g PSBQUWNvbm5lY3RkYlBhcmFtcyhrZXl3b3JkcywgdmFsdWVzLCB0cnVlKTsKIAogCQlpZiAo IUFILT5jb25uZWN0aW9uKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZmFpbGVk IHRvIGNvbm5lY3QgdG8gZGF0YWJhc2VcbiIpOworCQkJZmF0YWwoImZhaWxlZCB0byBjb25u ZWN0IHRvIGRhdGFiYXNlIik7CiAKIAkJaWYgKFBRc3RhdHVzKEFILT5jb25uZWN0aW9uKSA9 PSBDT05ORUNUSU9OX0JBRCAmJgogCQkJUFFjb25uZWN0aW9uTmVlZHNQYXNzd29yZChBSC0+ Y29ubmVjdGlvbikgJiYKQEAgLTMwNSw3ICszMDYsNyBAQCBDb25uZWN0RGF0YWJhc2UoQXJj aGl2ZSAqQUhYLAogCiAJLyogY2hlY2sgdG8gc2VlIHRoYXQgdGhlIGJhY2tlbmQgY29ubmVj dGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hZGUgKi8KIAlpZiAoUFFzdGF0dXMoQUgtPmNvbm5l Y3Rpb24pID09IENPTk5FQ1RJT05fQkFEKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs ICJjb25uZWN0aW9uIHRvIGRhdGFiYXNlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJZmF0YWwo ImNvbm5lY3Rpb24gdG8gZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiLAogCQkJCQkgIFBR ZGIoQUgtPmNvbm5lY3Rpb24pID8gUFFkYihBSC0+Y29ubmVjdGlvbikgOiAiIiwKIAkJCQkJ ICBQUWVycm9yTWVzc2FnZShBSC0+Y29ubmVjdGlvbikpOwogCkBAIC0zNTEsNyArMzUyLDcg QEAgRGlzY29ubmVjdERhdGFiYXNlKEFyY2hpdmUgKkFIWCkKIAkJLyoKIAkJICogSWYgd2Ug aGF2ZSBhbiBhY3RpdmUgcXVlcnksIHNlbmQgYSBjYW5jZWwgYmVmb3JlIGNsb3NpbmcsIGln bm9yaW5nCiAJCSAqIGFueSBlcnJvcnMuICBUaGlzIGlzIG9mIG5vIHVzZSBmb3IgYSBub3Jt YWwgZXhpdCwgYnV0IG1pZ2h0IGJlCi0JCSAqIGhlbHBmdWwgZHVyaW5nIGV4aXRfaG9ycmli bHkoKS4KKwkJICogaGVscGZ1bCBkdXJpbmcgZmF0YWwoKS4KIAkJICovCiAJCWlmIChQUXRy YW5zYWN0aW9uU3RhdHVzKEFILT5jb25uZWN0aW9uKSA9PSBQUVRSQU5TX0FDVElWRSkKIAkJ CSh2b2lkKSBQUWNhbmNlbChBSC0+Y29ubkNhbmNlbCwgZXJyYnVmLCBzaXplb2YoZXJyYnVm KSk7CkBAIC0zODAsMTMgKzM4MSwxMyBAQCBub3RpY2VfcHJvY2Vzc29yKHZvaWQgKmFyZywg Y29uc3QgY2hhciAqbWVzc2FnZSkKIAl3cml0ZV9tc2coTlVMTCwgIiVzIiwgbWVzc2FnZSk7 CiB9CiAKLS8qIExpa2UgZXhpdF9ob3JyaWJseSgpLCBidXQgd2l0aCBhIGNvbXBsYWludCBh Ym91dCBhIHBhcnRpY3VsYXIgcXVlcnkuICovCisvKiBMaWtlIGV4aXRfZmF0YWwoKSwgYnV0 IHdpdGggYSBjb21wbGFpbnQgYWJvdXQgYSBwYXJ0aWN1bGFyIHF1ZXJ5LiAqLwogc3RhdGlj IHZvaWQKIGRpZV9vbl9xdWVyeV9mYWlsdXJlKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBj aGFyICptb2R1bGVuYW1lLCBjb25zdCBjaGFyICpxdWVyeSkKIHsKLQl3cml0ZV9tc2cobW9k dWxlbmFtZSwgInF1ZXJ5IGZhaWxlZDogJXMiLAorCXBnX2xvZ19lcnJvcigicXVlcnkgZmFp bGVkOiAlcyIsCiAJCQkgIFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9uKSk7Ci0JZXhp dF9ob3JyaWJseShtb2R1bGVuYW1lLCAicXVlcnkgd2FzOiAlc1xuIiwgcXVlcnkpOworCWZh dGFsKCJxdWVyeSB3YXM6ICVzIiwgcXVlcnkpOwogfQogCiB2b2lkCkBAIC00MjcsOSArNDI4 LDggQEAgRXhlY3V0ZVNxbFF1ZXJ5Rm9yU2luZ2xlUm93KEFyY2hpdmUgKmZvdXQsIGNvbnN0 IGNoYXIgKnF1ZXJ5KQogCS8qIEV4cGVjdGluZyBhIHNpbmdsZSByZXN1bHQgb25seSAqLwog CW50dXBzID0gUFFudHVwbGVzKHJlcyk7CiAJaWYgKG50dXBzICE9IDEpCi0JCWV4aXRfaG9y cmlibHkoTlVMTCwKLQkJCQkJICBuZ2V0dGV4dCgicXVlcnkgcmV0dXJuZWQgJWQgcm93IGlu c3RlYWQgb2Ygb25lOiAlc1xuIiwKLQkJCQkJCQkgICAicXVlcnkgcmV0dXJuZWQgJWQgcm93 cyBpbnN0ZWFkIG9mIG9uZTogJXNcbiIsCisJCWZhdGFsKG5nZXR0ZXh0KCJxdWVyeSByZXR1 cm5lZCAlZCByb3cgaW5zdGVhZCBvZiBvbmU6ICVzIiwKKwkJCQkJICAgInF1ZXJ5IHJldHVy bmVkICVkIHJvd3MgaW5zdGVhZCBvZiBvbmU6ICVzIiwKIAkJCQkJCQkgICBudHVwcyksCiAJ CQkJCSAgbnR1cHMsIHF1ZXJ5KTsKIApAQCAtNTczLDcgKzU3Myw3IEBAIEV4ZWN1dGVTcWxD b21tYW5kQnVmKEFyY2hpdmUgKkFIWCwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgYnVmTGVu KQogCQkgKi8KIAkJaWYgKEFILT5wZ0NvcHlJbiAmJgogCQkJUFFwdXRDb3B5RGF0YShBSC0+ Y29ubmVjdGlvbiwgYnVmLCBidWZMZW4pIDw9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsICJlcnJvciByZXR1cm5lZCBieSBQUXB1dENvcHlEYXRhOiAlcyIsCisJCQlmYXRh bCgiZXJyb3IgcmV0dXJuZWQgYnkgUFFwdXRDb3B5RGF0YTogJXMiLAogCQkJCQkJICBQUWVy cm9yTWVzc2FnZShBSC0+Y29ubmVjdGlvbikpOwogCX0KIAllbHNlIGlmIChBSC0+b3V0cHV0 S2luZCA9PSBPVVRQVVRfT1RIRVJEQVRBKQpAQCAtNjIyLDcgKzYyMiw3IEBAIEVuZERCQ29w eU1vZGUoQXJjaGl2ZSAqQUhYLCBjb25zdCBjaGFyICp0b2NFbnRyeVRhZykKIAkJUEdyZXN1 bHQgICAqcmVzOwogCiAJCWlmIChQUXB1dENvcHlFbmQoQUgtPmNvbm5lY3Rpb24sIE5VTEwp IDw9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJlcnJvciByZXR1cm5lZCBi eSBQUXB1dENvcHlFbmQ6ICVzIiwKKwkJCWZhdGFsKCJlcnJvciByZXR1cm5lZCBieSBQUXB1 dENvcHlFbmQ6ICVzIiwKIAkJCQkJCSAgUFFlcnJvck1lc3NhZ2UoQUgtPmNvbm5lY3Rpb24p KTsKIAogCQkvKiBDaGVjayBjb21tYW5kIHN0YXR1cyBhbmQgcmV0dXJuIHRvIG5vcm1hbCBs aWJwcSBzdGF0ZSAqLwpAQCAtNjM0LDcgKzYzNCw3IEBAIEVuZERCQ29weU1vZGUoQXJjaGl2 ZSAqQUhYLCBjb25zdCBjaGFyICp0b2NFbnRyeVRhZykKIAogCQkvKiBEbyB0aGlzIHRvIGVu c3VyZSB3ZSd2ZSBwdW1wZWQgbGlicHEgYmFjayB0byBpZGxlIHN0YXRlICovCiAJCWlmIChQ UWdldFJlc3VsdChBSC0+Y29ubmVjdGlvbikgIT0gTlVMTCkKLQkJCXdyaXRlX21zZyhOVUxM LCAiV0FSTklORzogdW5leHBlY3RlZCBleHRyYSByZXN1bHRzIGR1cmluZyBDT1BZIG9mIHRh YmxlIFwiJXNcIlxuIiwKKwkJCXBnX2xvZ193YXJuaW5nKCJ1bmV4cGVjdGVkIGV4dHJhIHJl c3VsdHMgZHVyaW5nIENPUFkgb2YgdGFibGUgXCIlc1wiIiwKIAkJCQkJICB0b2NFbnRyeVRh Zyk7CiAKIAkJQUgtPnBnQ29weUluID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cF9kaXJlY3RvcnkuYwppbmRleCBlNjI2MTI1MmM3Li43MGVjYTgyYzkxIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5jCisrKyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKQEAgLTYxLDkgKzYxLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAljaGFyCSAgICpmaWxlbmFtZTsJCS8qIGZpbGVuYW1lIGV4Y2x1ZGluZyB0 aGUgZGlyZWN0b3J5IChiYXNlbmFtZSkgKi8KIH0gbGNsVG9jRW50cnk7CiAKLS8qIHRyYW5z bGF0b3I6IHRoaXMgaXMgYSBtb2R1bGUgbmFtZSAqLwotc3RhdGljIGNvbnN0IGNoYXIgKm1v ZHVsZW5hbWUgPSBnZXR0ZXh0X25vb3AoImRpcmVjdG9yeSBhcmNoaXZlciIpOwotCiAvKiBw cm90b3R5cGVzIGZvciBwcml2YXRlIGZ1bmN0aW9ucyAqLwogc3RhdGljIHZvaWQgX0FyY2hp dmVFbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKTsKIHN0YXRpYyB2b2lk IF9TdGFydERhdGEoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSk7CkBAIC0xNTYs NyArMTUzLDcgQEAgSW5pdEFyY2hpdmVGbXRfRGlyZWN0b3J5KEFyY2hpdmVIYW5kbGUgKkFI KQogCSAqLwogCiAJaWYgKCFBSC0+ZlNwZWMgfHwgc3RyY21wKEFILT5mU3BlYywgIiIpID09 IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgIm5vIG91dHB1dCBkaXJlY3Rvcnkg c3BlY2lmaWVkXG4iKTsKKwkJZmF0YWwoIm5vIG91dHB1dCBkaXJlY3Rvcnkgc3BlY2lmaWVk Iik7CiAKIAljdHgtPmRpcmVjdG9yeSA9IEFILT5mU3BlYzsKIApAQCAtMTg1LDE4ICsxODIs MTggQEAgSW5pdEFyY2hpdmVGbXRfRGlyZWN0b3J5KEFyY2hpdmVIYW5kbGUgKkFIKQogCQkJ CX0KIAogCQkJCWlmIChlcnJubykKLQkJCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAi Y291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIsCi0JCQkJCQkJCSAgY3R4 LT5kaXJlY3RvcnksIHN0cmVycm9yKGVycm5vKSk7CisJCQkJCWZhdGFsKCJjb3VsZCBub3Qg cmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCQkgIGN0eC0+ZGlyZWN0b3J5KTsK IAogCQkJCWlmIChjbG9zZWRpcihkaXIpKQotCQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsICJjb3VsZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIsCi0JCQkJCQkJ CSAgY3R4LT5kaXJlY3RvcnksIHN0cmVycm9yKGVycm5vKSk7CisJCQkJCWZhdGFsKCJjb3Vs ZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkJICBjdHgtPmRpcmVj dG9yeSk7CiAJCQl9CiAJCX0KIAogCQlpZiAoIWlzX2VtcHR5ICYmIG1rZGlyKGN0eC0+ZGly ZWN0b3J5LCAwNzAwKSA8IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3Vs ZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iLAotCQkJCQkJICBjdHgtPmRp cmVjdG9yeSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgY3JlYXRl IGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkgIGN0eC0+ZGlyZWN0b3J5KTsKIAl9CiAJ ZWxzZQogCXsJCQkJCQkJLyogUmVhZCBNb2RlICovCkBAIC0yMDcsOSArMjA0LDcgQEAgSW5p dEFyY2hpdmVGbXRfRGlyZWN0b3J5KEFyY2hpdmVIYW5kbGUgKkFIKQogCiAJCXRvY0ZIID0g Y2ZvcGVuX3JlYWQoZm5hbWUsIFBHX0JJTkFSWV9SKTsKIAkJaWYgKHRvY0ZIID09IE5VTEwp Ci0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkgICJjb3VsZCBub3Qgb3Bl biBpbnB1dCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCQkgIGZuYW1lLCBzdHJlcnJvcihl cnJubykpOworCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGUgXCIlc1wiOiAl bSIsIGZuYW1lKTsKIAogCQljdHgtPmRhdGFGSCA9IHRvY0ZIOwogCkBAIC0yMjQsOCArMjE5 LDcgQEAgSW5pdEFyY2hpdmVGbXRfRGlyZWN0b3J5KEFyY2hpdmVIYW5kbGUgKkFIKQogCiAJ CS8qIE5vdGhpbmcgZWxzZSBpbiB0aGUgZmlsZSwgc28gY2xvc2UgaXQgYWdhaW4uLi4gKi8K IAkJaWYgKGNmY2xvc2UodG9jRkgpICE9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsICJjb3VsZCBub3QgY2xvc2UgVE9DIGZpbGU6ICVzXG4iLAotCQkJCQkJICBzdHJlcnJv cihlcnJubykpOworCQkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBUT0MgZmlsZTogJW0iKTsK IAkJY3R4LT5kYXRhRkggPSBOVUxMOwogCX0KIH0KQEAgLTMzNSw4ICszMjksNyBAQCBfU3Rh cnREYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiAKIAljdHgtPmRhdGFG SCA9IGNmb3Blbl93cml0ZShmbmFtZSwgUEdfQklOQVJZX1csIEFILT5jb21wcmVzc2lvbik7 CiAJaWYgKGN0eC0+ZGF0YUZIID09IE5VTEwpCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFt ZSwgImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCSAg Zm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRw dXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwogfQogCiAvKgpAQCAtMzU0LDcgKzM0Nyw3 IEBAIF9Xcml0ZURhdGEoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IHZvaWQgKmRhdGEsIHNp emVfdCBkTGVuKQogCWxjbENvbnRleHQgKmN0eCA9IChsY2xDb250ZXh0ICopIEFILT5mb3Jt YXREYXRhOwogCiAJaWYgKGRMZW4gPiAwICYmIGNmd3JpdGUoZGF0YSwgZExlbiwgY3R4LT5k YXRhRkgpICE9IGRMZW4pCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5v dCB3cml0ZSB0byBvdXRwdXQgZmlsZTogJXNcbiIsCisJCWZhdGFsKCJjb3VsZCBub3Qgd3Jp dGUgdG8gb3V0cHV0IGZpbGU6ICVzIiwKIAkJCQkJICBnZXRfY2ZwX2Vycm9yKGN0eC0+ZGF0 YUZIKSk7CiAKIApAQCAtMzk1LDggKzM4OCw3IEBAIF9QcmludEZpbGVEYXRhKEFyY2hpdmVI YW5kbGUgKkFILCBjaGFyICpmaWxlbmFtZSkKIAljZnAgPSBjZm9wZW5fcmVhZChmaWxlbmFt ZSwgUEdfQklOQVJZX1IpOwogCiAJaWYgKCFjZnApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxl bmFtZSwgImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGUgXCIlc1wiOiAlc1xuIiwKLQkJCQkJ ICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBvcGVu IGlucHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKTsKIAogCWJ1ZiA9IHBnX21hbGxv YyhaTElCX09VVF9TSVpFKTsKIAlidWZsZW4gPSBaTElCX09VVF9TSVpFOwpAQCAtNDA4LDgg KzQwMCw3IEBAIF9QcmludEZpbGVEYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBjaGFyICpmaWxl bmFtZSkKIAogCWZyZWUoYnVmKTsKIAlpZiAoY2ZjbG9zZShjZnApICE9MCkKLQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIGRhdGEgZmlsZTogJXNcbiIs Ci0JCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBk YXRhIGZpbGU6ICVtIik7CiB9CiAKIC8qCkBAIC00NDksOCArNDQwLDggQEAgX0xvYWRCbG9i cyhBcmNoaXZlSGFuZGxlICpBSCkKIAljdHgtPmJsb2JzVG9jRkggPSBjZm9wZW5fcmVhZChm bmFtZSwgUEdfQklOQVJZX1IpOwogCiAJaWYgKGN0eC0+YmxvYnNUb2NGSCA9PSBOVUxMKQot CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBsYXJnZSBvYmpl Y3QgVE9DIGZpbGUgXCIlc1wiIGZvciBpbnB1dDogJXNcbiIsCi0JCQkJCSAgZm5hbWUsIHN0 cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBsYXJnZSBvYmplY3Qg VE9DIGZpbGUgXCIlc1wiIGZvciBpbnB1dDogJW0iLAorCQkJICBmbmFtZSk7CiAKIAkvKiBS ZWFkIHRoZSBibG9icyBUT0MgZmlsZSBsaW5lLWJ5LWxpbmUsIGFuZCBwcm9jZXNzIGVhY2gg YmxvYiAqLwogCXdoaWxlICgoY2ZnZXRzKGN0eC0+YmxvYnNUb2NGSCwgbGluZSwgTUFYUEdQ QVRIKSkgIT0gTlVMTCkKQEAgLTQ2MCw3ICs0NTEsNyBAQCBfTG9hZEJsb2JzKEFyY2hpdmVI YW5kbGUgKkFIKQogCiAJCS8qIENhbid0IG92ZXJmbG93IGJlY2F1c2UgbGluZSBhbmQgZm5h bWUgYXJlIHRoZSBzYW1lIGxlbmd0aC4gKi8KIAkJaWYgKHNzY2FuZihsaW5lLCAiJXUgJXNc biIsICZvaWQsIGZuYW1lKSAhPSAyKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAi aW52YWxpZCBsaW5lIGluIGxhcmdlIG9iamVjdCBUT0MgZmlsZSBcIiVzXCI6IFwiJXNcIlxu IiwKKwkJCWZhdGFsKCJpbnZhbGlkIGxpbmUgaW4gbGFyZ2Ugb2JqZWN0IFRPQyBmaWxlIFwi JXNcIjogXCIlc1wiIiwKIAkJCQkJCSAgZm5hbWUsIGxpbmUpOwogCiAJCVN0YXJ0UmVzdG9y ZUJsb2IoQUgsIG9pZCwgQUgtPnB1YmxpYy5yb3B0LT5kcm9wU2NoZW1hKTsKQEAgLTQ2OSwx MiArNDYwLDEyIEBAIF9Mb2FkQmxvYnMoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCUVuZFJlc3Rv cmVCbG9iKEFILCBvaWQpOwogCX0KIAlpZiAoIWNmZW9mKGN0eC0+YmxvYnNUb2NGSCkpCi0J CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImVycm9yIHJlYWRpbmcgbGFyZ2Ugb2JqZWN0 IFRPQyBmaWxlIFwiJXNcIlxuIiwKKwkJZmF0YWwoImVycm9yIHJlYWRpbmcgbGFyZ2Ugb2Jq ZWN0IFRPQyBmaWxlIFwiJXNcIiIsCiAJCQkJCSAgZm5hbWUpOwogCiAJaWYgKGNmY2xvc2Uo Y3R4LT5ibG9ic1RvY0ZIKSAhPSAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJj b3VsZCBub3QgY2xvc2UgbGFyZ2Ugb2JqZWN0IFRPQyBmaWxlIFwiJXNcIjogJXNcbiIsCi0J CQkJCSAgZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3QgY2xv c2UgbGFyZ2Ugb2JqZWN0IFRPQyBmaWxlIFwiJXNcIjogJW0iLAorCQkJICBmbmFtZSk7CiAK IAljdHgtPmJsb2JzVG9jRkggPSBOVUxMOwogCkBAIC00OTQsNyArNDg1LDcgQEAgX1dyaXRl Qnl0ZShBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgaW50IGkpCiAJbGNsQ29udGV4dCAqY3R4 ID0gKGxjbENvbnRleHQgKikgQUgtPmZvcm1hdERhdGE7CiAKIAlpZiAoY2Z3cml0ZSgmYywg MSwgY3R4LT5kYXRhRkgpICE9IDEpCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNv dWxkIG5vdCB3cml0ZSB0byBvdXRwdXQgZmlsZTogJXNcbiIsCisJCWZhdGFsKCJjb3VsZCBu b3Qgd3JpdGUgdG8gb3V0cHV0IGZpbGU6ICVzIiwKIAkJCQkJICBnZXRfY2ZwX2Vycm9yKGN0 eC0+ZGF0YUZIKSk7CiAKIAlyZXR1cm4gMTsKQEAgLTUyNCw3ICs1MTUsNyBAQCBfV3JpdGVC dWYoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKIAls Y2xDb250ZXh0ICpjdHggPSAobGNsQ29udGV4dCAqKSBBSC0+Zm9ybWF0RGF0YTsKIAogCWlm IChjZndyaXRlKGJ1ZiwgbGVuLCBjdHgtPmRhdGFGSCkgIT0gbGVuKQotCQlleGl0X2hvcnJp Ymx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgd3JpdGUgdG8gb3V0cHV0IGZpbGU6ICVzXG4i LAorCQlmYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIG91dHB1dCBmaWxlOiAlcyIsCiAJCQkJ CSAgZ2V0X2NmcF9lcnJvcihjdHgtPmRhdGFGSCkpOwogCiAJcmV0dXJuOwpAQCAtNTQ1LDgg KzUzNiw3IEBAIF9SZWFkQnVmKEFyY2hpdmVIYW5kbGUgKkFILCB2b2lkICpidWYsIHNpemVf dCBsZW4pCiAJICogZXhpdCBvbiBzaG9ydCByZWFkcy4KIAkgKi8KIAlpZiAoY2ZyZWFkKGJ1 ZiwgbGVuLCBjdHgtPmRhdGFGSCkgIT0gbGVuKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsCi0JCQkJCSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZp bGVcbiIpOworCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiBlbmQg b2YgZmlsZSIpOwogCiAJcmV0dXJuOwogfQpAQCAtNTgxLDggKzU3MSw3IEBAIF9DbG9zZUFy Y2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCS8qIFRoZSBUT0MgaXMgYWx3YXlzIGNyZWF0 ZWQgdW5jb21wcmVzc2VkICovCiAJCXRvY0ZIID0gY2ZvcGVuX3dyaXRlKGZuYW1lLCBQR19C SU5BUllfVywgMCk7CiAJCWlmICh0b2NGSCA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseSht b2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlc1xuIiwK LQkJCQkJCSAgZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQgbm90 IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIAkJY3R4LT5kYXRhRkgg PSB0b2NGSDsKIAogCQkvKgpAQCAtNTk1LDggKzU4NCw3IEBAIF9DbG9zZUFyY2hpdmUoQXJj aGl2ZUhhbmRsZSAqQUgpCiAJCUFILT5mb3JtYXQgPSBhcmNoRGlyZWN0b3J5OwogCQlXcml0 ZVRvYyhBSCk7CiAJCWlmIChjZmNsb3NlKHRvY0ZIKSAhPSAwKQotCQkJZXhpdF9ob3JyaWJs eShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIFRPQyBmaWxlOiAlc1xuIiwKLQkJCQkJ CSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgY2xvc2UgVE9DIGZp bGU6ICVtIik7CiAJCVdyaXRlRGF0YUNodW5rcyhBSCwgY3R4LT5wc3RhdGUpOwogCiAJCVBh cmFsbGVsQmFja3VwRW5kKEFILCBjdHgtPnBzdGF0ZSk7CkBAIC02MDYsNyArNTk0LDcgQEAg X0Nsb3NlQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCkKIAkJICogaW5kaXZpZHVhbGx5LiBK dXN0IHJlY3Vyc2Ugb25jZSB0aHJvdWdoIGFsbCB0aGUgZmlsZXMgZ2VuZXJhdGVkLgogCQkg Ki8KIAkJaWYgKEFILT5kb3N5bmMpCi0JCQlmc3luY19kaXJfcmVjdXJzZShjdHgtPmRpcmVj dG9yeSwgcHJvZ25hbWUpOworCQkJZnN5bmNfZGlyX3JlY3Vyc2UoY3R4LT5kaXJlY3Rvcnkp OwogCX0KIAlBSC0+RkggPSBOVUxMOwogfQpAQCAtNjQ2LDggKzYzNCw3IEBAIF9TdGFydEJs b2JzKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiAJLyogVGhlIGJsb2IgVE9D IGZpbGUgaXMgbmV2ZXIgY29tcHJlc3NlZCAqLwogCWN0eC0+YmxvYnNUb2NGSCA9IGNmb3Bl bl93cml0ZShmbmFtZSwgImFiIiwgMCk7CiAJaWYgKGN0eC0+YmxvYnNUb2NGSCA9PSBOVUxM KQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBvdXRwdXQg ZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOwor CQlmYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1l KTsKIH0KIAogLyoKQEAgLTY2Niw4ICs2NTMsNyBAQCBfU3RhcnRCbG9iKEFyY2hpdmVIYW5k bGUgKkFILCBUb2NFbnRyeSAqdGUsIE9pZCBvaWQpCiAJY3R4LT5kYXRhRkggPSBjZm9wZW5f d3JpdGUoZm5hbWUsIFBHX0JJTkFSWV9XLCBBSC0+Y29tcHJlc3Npb24pOwogCiAJaWYgKGN0 eC0+ZGF0YUZIID09IE5VTEwpCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxk IG5vdCBvcGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCSAgZm5hbWUsIHN0 cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBc IiVzXCI6ICVtIiwgZm5hbWUpOwogfQogCiAvKgpAQCAtNjg5LDcgKzY3NSw3IEBAIF9FbmRC bG9iKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIE9pZCBvaWQpCiAJLyogcmVn aXN0ZXIgdGhlIGJsb2IgaW4gYmxvYnMudG9jICovCiAJbGVuID0gc25wcmludGYoYnVmLCBz aXplb2YoYnVmKSwgIiV1IGJsb2JfJXUuZGF0XG4iLCBvaWQsIG9pZCk7CiAJaWYgKGNmd3Jp dGUoYnVmLCBsZW4sIGN0eC0+YmxvYnNUb2NGSCkgIT0gbGVuKQotCQlleGl0X2hvcnJpYmx5 KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgd3JpdGUgdG8gYmxvYnMgVE9DIGZpbGVcbiIpOwor CQlmYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIGJsb2JzIFRPQyBmaWxlIik7CiB9CiAKIC8q CkBAIC03MjEsNyArNzA3LDcgQEAgc2V0RmlsZVBhdGgoQXJjaGl2ZUhhbmRsZSAqQUgsIGNo YXIgKmJ1ZiwgY29uc3QgY2hhciAqcmVsYXRpdmVGaWxlbmFtZSkKIAlkbmFtZSA9IGN0eC0+ ZGlyZWN0b3J5OwogCiAJaWYgKHN0cmxlbihkbmFtZSkgKyAxICsgc3RybGVuKHJlbGF0aXZl RmlsZW5hbWUpICsgMSA+IE1BWFBHUEFUSCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LCAiZmlsZSBuYW1lIHRvbyBsb25nOiBcIiVzXCJcbiIsIGRuYW1lKTsKKwkJZmF0YWwoImZp bGUgbmFtZSB0b28gbG9uZzogXCIlc1wiIiwgZG5hbWUpOwogCiAJc3RyY3B5KGJ1ZiwgZG5h bWUpOwogCXN0cmNhdChidWYsICIvIik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX251bGwuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfbnVsbC5jCmlu ZGV4IDYyZjZlNjI0ZjAuLmYzM2Y3YmE0MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXBfbnVsbC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfbnVs bC5jCkBAIC03Miw3ICs3Miw3IEBAIEluaXRBcmNoaXZlRm10X051bGwoQXJjaGl2ZUhhbmRs ZSAqQUgpCiAJICogTm93IHByZXZlbnQgcmVhZGluZy4uLgogCSAqLwogCWlmIChBSC0+bW9k ZSA9PSBhcmNoTW9kZVJlYWQpCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwgInRoaXMgZm9ybWF0 IGNhbm5vdCBiZSByZWFkXG4iKTsKKwkJZmF0YWwoInRoaXMgZm9ybWF0IGNhbm5vdCBiZSBy ZWFkIik7CiB9CiAKIC8qCkBAIC0xNDcsNyArMTQ3LDcgQEAgX1N0YXJ0QmxvYihBcmNoaXZl SGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBPaWQgb2lkKQogCWJvb2wJCW9sZF9ibG9iX3N0 eWxlID0gKEFILT52ZXJzaW9uIDwgS19WRVJTXzFfMTIpOwogCiAJaWYgKG9pZCA9PSAwKQot CQlleGl0X2hvcnJpYmx5KE5VTEwsICJpbnZhbGlkIE9JRCBmb3IgbGFyZ2Ugb2JqZWN0XG4i KTsKKwkJZmF0YWwoImludmFsaWQgT0lEIGZvciBsYXJnZSBvYmplY3QiKTsKIAogCS8qIFdp dGggYW4gb2xkIGFyY2hpdmUgd2UgbXVzdCBkbyBkcm9wIGFuZCBjcmVhdGUgbG9naWMgaGVy ZSAqLwogCWlmIChvbGRfYmxvYl9zdHlsZSAmJiBBSC0+cHVibGljLnJvcHQtPmRyb3BTY2hl bWEpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF90YXIuYwppbmRleCA0MDdhNTZkOGQ0Li5iNTI1OTNj M2MwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMKQEAgLTk5LDkgKzk5LDYgQEAgdHlw ZWRlZiBzdHJ1Y3QKIAljaGFyCSAgICpmaWxlbmFtZTsKIH0gbGNsVG9jRW50cnk7CiAKLS8q IHRyYW5zbGF0b3I6IHRoaXMgaXMgYSBtb2R1bGUgbmFtZSAqLwotc3RhdGljIGNvbnN0IGNo YXIgKm1vZHVsZW5hbWUgPSBnZXR0ZXh0X25vb3AoInRhciBhcmNoaXZlciIpOwotCiBzdGF0 aWMgdm9pZCBfTG9hZEJsb2JzKEFyY2hpdmVIYW5kbGUgKkFIKTsKIAogc3RhdGljIFRBUl9N RU1CRVIgKnRhck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1l LCBjaGFyIG1vZGUpOwpAQCAtMTc3LDE3ICsxNzQsMTQgQEAgSW5pdEFyY2hpdmVGbXRfVGFy KEFyY2hpdmVIYW5kbGUgKkFIKQogCQl7CiAJCQljdHgtPnRhckZIID0gZm9wZW4oQUgtPmZT cGVjLCBQR19CSU5BUllfVyk7CiAJCQlpZiAoY3R4LT50YXJGSCA9PSBOVUxMKQotCQkJCWV4 aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCQkgICJjb3VsZCBub3Qgb3BlbiBUT0Mg ZmlsZSBcIiVzXCIgZm9yIG91dHB1dDogJXNcbiIsCi0JCQkJCQkJICBBSC0+ZlNwZWMsIHN0 cmVycm9yKGVycm5vKSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIFRPQyBmaWxlIFwi JXNcIiBmb3Igb3V0cHV0OiAlbSIsCisJCQkJCSAgQUgtPmZTcGVjKTsKIAkJfQogCQllbHNl CiAJCXsKIAkJCWN0eC0+dGFyRkggPSBzdGRvdXQ7CiAJCQlpZiAoY3R4LT50YXJGSCA9PSBO VUxMKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCQkgICJjb3VsZCBu b3Qgb3BlbiBUT0MgZmlsZSBmb3Igb3V0cHV0OiAlc1xuIiwKLQkJCQkJCQkgIHN0cmVycm9y KGVycm5vKSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIFRPQyBmaWxlIGZvciBvdXRw dXQ6ICVtIik7CiAJCX0KIAogCQljdHgtPnRhckZIcG9zID0gMDsKQEAgLTIwNiw4ICsyMDAs NyBAQCBJbml0QXJjaGl2ZUZtdF9UYXIoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCSAqIHBvc2l0 aW9uaW5nLgogCQkgKi8KIAkJaWYgKEFILT5jb21wcmVzc2lvbiAhPSAwKQotCQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJICAiY29tcHJlc3Npb24gaXMgbm90IHN1cHBv cnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXRcbiIpOworCQkJZmF0YWwoImNvbXByZXNzaW9u IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0Iik7CiAJfQogCWVsc2UK IAl7CQkJCQkJCS8qIFJlYWQgTW9kZSAqLwpAQCAtMjE1LDE1ICsyMDgsMTQgQEAgSW5pdEFy Y2hpdmVGbXRfVGFyKEFyY2hpdmVIYW5kbGUgKkFIKQogCQl7CiAJCQljdHgtPnRhckZIID0g Zm9wZW4oQUgtPmZTcGVjLCBQR19CSU5BUllfUik7CiAJCQlpZiAoY3R4LT50YXJGSCA9PSBO VUxMKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBvcGVuIFRP QyBmaWxlIFwiJXNcIiBmb3IgaW5wdXQ6ICVzXG4iLAotCQkJCQkJCSAgQUgtPmZTcGVjLCBz dHJlcnJvcihlcnJubykpOworCQkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBUT0MgZmlsZSBc IiVzXCIgZm9yIGlucHV0OiAlbSIsCisJCQkJCSAgQUgtPmZTcGVjKTsKIAkJfQogCQllbHNl CiAJCXsKIAkJCWN0eC0+dGFyRkggPSBzdGRpbjsKIAkJCWlmIChjdHgtPnRhckZIID09IE5V TEwpCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4gVE9D IGZpbGUgZm9yIGlucHV0OiAlc1xuIiwKLQkJCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJ CQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIFRPQyBmaWxlIGZvciBpbnB1dDogJW0iKTsKIAkJ fQogCiAJCS8qCkBAIC0zNDksNyArMzQxLDcgQEAgdGFyT3BlbihBcmNoaXZlSGFuZGxlICpB SCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIgbW9kZSkKIAkJCQkgKiBDb3VsZG4ndCBm aW5kIHRoZSByZXF1ZXN0ZWQgZmlsZS4gRnV0dXJlOiBkbyBTRUVLKDApIGFuZAogCQkJCSAq IHJldHJ5LgogCQkJCSAqLwotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxk IG5vdCBmaW5kIGZpbGUgXCIlc1wiIGluIGFyY2hpdmVcbiIsIGZpbGVuYW1lKTsKKwkJCQlm YXRhbCgiY291bGQgbm90IGZpbmQgZmlsZSBcIiVzXCIgaW4gYXJjaGl2ZSIsIGZpbGVuYW1l KTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTM2Myw3ICszNTUsNyBAQCB0YXJPcGVuKEFy Y2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciBtb2RlKQogCQlp ZiAoQUgtPmNvbXByZXNzaW9uID09IDApCiAJCQl0bS0+bkZIID0gY3R4LT50YXJGSDsKIAkJ ZWxzZQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY29tcHJlc3Npb24gaXMgbm90 IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXRcbiIpOworCQkJZmF0YWwoImNvbXBy ZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0Iik7CiAJCS8q IHRtLT56RkggPSBnemRvcGVuKGR1cChmaWxlbm8oY3R4LT50YXJGSCkpLCAicmIiKTsgKi8K ICNlbHNlCiAJCXRtLT5uRkggPSBjdHgtPnRhckZIOwpAQCAtNDE1LDcgKzQwNyw3IEBAIHRh ck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyIG1v ZGUpCiAjZW5kaWYKIAogCQlpZiAodG0tPnRtcEZIID09IE5VTEwpCi0JCQlleGl0X2hvcnJp Ymx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgZ2VuZXJhdGUgdGVtcG9yYXJ5IGZpbGUgbmFt ZTogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQgbm90IGdlbmVy YXRlIHRlbXBvcmFyeSBmaWxlIG5hbWU6ICVtIik7CiAKIAkJdW1hc2sob2xkX3VtYXNrKTsK IApAQCAtNDI2LDcgKzQxOCw3IEBAIHRhck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0 IGNoYXIgKmZpbGVuYW1lLCBjaGFyIG1vZGUpCiAJCQlzcHJpbnRmKGZtb2RlLCAid2IlZCIs IEFILT5jb21wcmVzc2lvbik7CiAJCQl0bS0+ekZIID0gZ3pkb3BlbihkdXAoZmlsZW5vKHRt LT50bXBGSCkpLCBmbW9kZSk7CiAJCQlpZiAodG0tPnpGSCA9PSBOVUxMKQotCQkJCWV4aXRf aG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBvcGVuIHRlbXBvcmFyeSBmaWxlXG4i KTsKKwkJCQlmYXRhbCgiY291bGQgbm90IG9wZW4gdGVtcG9yYXJ5IGZpbGUiKTsKIAkJfQog CQllbHNlCiAJCQl0bS0+bkZIID0gdG0tPnRtcEZIOwpAQCAtNDUzLDcgKzQ0NSw3IEBAIHRh ckNsb3NlKEFyY2hpdmVIYW5kbGUgKkFILCBUQVJfTUVNQkVSICp0aCkKIAkgKi8KIAlpZiAo QUgtPmNvbXByZXNzaW9uICE9IDApCiAJCWlmIChHWkNMT1NFKHRoLT56RkgpICE9IDApCi0J CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgY2xvc2UgdGFyIG1lbWJl clxuIik7CisJCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIHRhciBtZW1iZXIiKTsKIAogCWlm ICh0aC0+bW9kZSA9PSAndycpCiAJCV90YXJBZGRGaWxlKEFILCB0aCk7CS8qIFRoaXMgd2ls bCBjbG9zZSB0aGUgdGVtcCBmaWxlICovCkBAIC01NjAsMTIgKzU1MiwxMCBAQCBfdGFyUmVh ZFJhdyhBcmNoaXZlSGFuZGxlICpBSCwgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBUQVJfTUVN QkVSICp0aCwgRklMRSAqZmgpCiAJCQkJCWludAkJCWVycm51bTsKIAkJCQkJY29uc3QgY2hh ciAqZXJybXNnID0gZ3plcnJvcih0aC0+ekZILCAmZXJybnVtKTsKIAotCQkJCQlleGl0X2hv cnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkJCSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5w dXQgZmlsZTogJXNcbiIsCisJCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0 IGZpbGU6ICVzIiwKIAkJCQkJCQkJICBlcnJudW0gPT0gWl9FUlJOTyA/IHN0cmVycm9yKGVy cm5vKSA6IGVycm1zZyk7CiAjZWxzZQotCQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs Ci0JCQkJCQkJCSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXNcbiIsCisJ CQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzIiwKIAkJCQkJ CQkJICBzdHJlcnJvcihlcnJubykpOwogI2VuZGlmCiAJCQkJfQpAQCAtNTc4LDcgKzU2OCw3 IEBAIF90YXJSZWFkUmF3KEFyY2hpdmVIYW5kbGUgKkFILCB2b2lkICpidWYsIHNpemVfdCBs ZW4sIFRBUl9NRU1CRVIgKnRoLCBGSUxFICpmaCkKIAkJCX0KIAkJfQogCQllbHNlCi0JCQll eGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJpbnRlcm5hbCBlcnJvciAtLSBuZWl0aGVyIHRo IG5vciBmaCBzcGVjaWZpZWQgaW4gdGFyUmVhZFJhdygpXG4iKTsKKwkJCWZhdGFsKCJpbnRl cm5hbCBlcnJvciAtLSBuZWl0aGVyIHRoIG5vciBmaCBzcGVjaWZpZWQgaW4gdGFyUmVhZFJh dygpXG4iKTsKIAl9CiAKIAljdHgtPnRhckZIcG9zICs9IHJlcyArIHVzZWQ7CkBAIC03MDAs OCArNjkwLDcgQEAgX1ByaW50VG9jRGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkg KnRlKQogCQkJcG9zMSA9IChpbnQpIHN0cmxlbih0ZS0+Y29weVN0bXQpIC0gMTM7CiAJCQlp ZiAocG9zMSA8IDYgfHwgc3RybmNtcCh0ZS0+Y29weVN0bXQsICJDT1BZICIsIDUpICE9IDAg fHwKIAkJCQlzdHJjbXAodGUtPmNvcHlTdG10ICsgcG9zMSwgIiBGUk9NIHN0ZGluO1xuIikg IT0gMCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkJICAidW5leHBl Y3RlZCBDT1BZIHN0YXRlbWVudCBzeW50YXg6IFwiJXNcIlxuIiwKKwkJCQlmYXRhbCgidW5l eHBlY3RlZCBDT1BZIHN0YXRlbWVudCBzeW50YXg6IFwiJXNcIiIsCiAJCQkJCQkJICB0ZS0+ Y29weVN0bXQpOwogCiAJCQkvKiBFbWl0IGFsbCBidXQgdGhlIEZST00gcGFydCAuLi4gKi8K QEAgLTc0Niw3ICs3MzUsNyBAQCBfTG9hZEJsb2JzKEFyY2hpdmVIYW5kbGUgKkFIKQogCQkJ b2lkID0gYXRvb2lkKCZ0aC0+dGFyZ2V0RmlsZVs1XSk7CiAJCQlpZiAob2lkICE9IDApCiAJ CQl7Ci0JCQkJYWhsb2coQUgsIDEsICJyZXN0b3JpbmcgbGFyZ2Ugb2JqZWN0IHdpdGggT0lE ICV1XG4iLCBvaWQpOworCQkJCXBnX2xvZ19pbmZvKCJyZXN0b3JpbmcgbGFyZ2Ugb2JqZWN0 IHdpdGggT0lEICV1Iiwgb2lkKTsKIAogCQkJCVN0YXJ0UmVzdG9yZUJsb2IoQUgsIG9pZCwg QUgtPnB1YmxpYy5yb3B0LT5kcm9wU2NoZW1hKTsKIApAQCAtODAzLDggKzc5Miw3IEBAIF9S ZWFkQnl0ZShBcmNoaXZlSGFuZGxlICpBSCkKIAlyZXMgPSB0YXJSZWFkKCZjLCAxLCBjdHgt PkZIKTsKIAlpZiAocmVzICE9IDEpCiAJCS8qIFdlIGFscmVhZHkgd291bGQgaGF2ZSBleGl0 ZWQgZm9yIGVycm9ycyBvbiByZWFkcywgbXVzdCBiZSBFT0YgKi8KLQkJZXhpdF9ob3JyaWJs eShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6 IGVuZCBvZiBmaWxlXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQg ZmlsZTogZW5kIG9mIGZpbGUiKTsKIAljdHgtPmZpbGVQb3MgKz0gMTsKIAlyZXR1cm4gYzsK IH0KQEAgLTgyNyw4ICs4MTUsNyBAQCBfUmVhZEJ1ZihBcmNoaXZlSGFuZGxlICpBSCwgdm9p ZCAqYnVmLCBzaXplX3QgbGVuKQogCiAJaWYgKHRhclJlYWQoYnVmLCBsZW4sIGN0eC0+Rkgp ICE9IGxlbikKIAkJLyogV2UgYWxyZWFkeSB3b3VsZCBoYXZlIGV4aXRlZCBmb3IgZXJyb3Jz IG9uIHJlYWRzLCBtdXN0IGJlIEVPRiAqLwotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs Ci0JCQkJCSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZpbGVc biIpOworCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiBlbmQgb2Yg ZmlsZSIpOwogCiAJY3R4LT5maWxlUG9zICs9IGxlbjsKIAlyZXR1cm47CkBAIC05MTcsNyAr OTA0LDcgQEAgX0Nsb3NlQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCkKIAogCQkvKiBTeW5j IHRoZSBvdXRwdXQgZmlsZSBpZiBvbmUgaXMgZGVmaW5lZCAqLwogCQlpZiAoQUgtPmRvc3lu YyAmJiBBSC0+ZlNwZWMpCi0JCQkodm9pZCkgZnN5bmNfZm5hbWUoQUgtPmZTcGVjLCBmYWxz ZSwgcHJvZ25hbWUpOworCQkJKHZvaWQpIGZzeW5jX2ZuYW1lKEFILT5mU3BlYywgZmFsc2Up OwogCX0KIAogCUFILT5GSCA9IE5VTEw7CkBAIC05NzEsNyArOTU4LDcgQEAgX1N0YXJ0Qmxv YihBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBPaWQgb2lkKQogCWNoYXIJICAg KnNmeDsKIAogCWlmIChvaWQgPT0gMCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAi aW52YWxpZCBPSUQgZm9yIGxhcmdlIG9iamVjdCAoJXUpXG4iLCBvaWQpOworCQlmYXRhbCgi aW52YWxpZCBPSUQgZm9yIGxhcmdlIG9iamVjdCAoJXUpIiwgb2lkKTsKIAogCWlmIChBSC0+ Y29tcHJlc3Npb24gIT0gMCkKIAkJc2Z4ID0gIi5neiI7CkBAIC0xMTAxLDggKzEwODgsNyBA QCBfdGFyQWRkRmlsZShBcmNoaXZlSGFuZGxlICpBSCwgVEFSX01FTUJFUiAqdGgpCiAJZnNl ZWtvKHRtcCwgMCwgU0VFS19FTkQpOwogCXRoLT5maWxlTGVuID0gZnRlbGxvKHRtcCk7CiAJ aWYgKHRoLT5maWxlTGVuIDwgMCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291 bGQgbm90IGRldGVybWluZSBzZWVrIHBvc2l0aW9uIGluIGFyY2hpdmUgZmlsZTogJXNcbiIs Ci0JCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBkZXRlcm1p bmUgc2VlayBwb3NpdGlvbiBpbiBhcmNoaXZlIGZpbGU6ICVtIik7CiAJZnNlZWtvKHRtcCwg MCwgU0VFS19TRVQpOwogCiAJX3RhcldyaXRlSGVhZGVyKHRoKTsKQEAgLTExMTcsOCArMTEw Myw3IEBAIF90YXJBZGRGaWxlKEFyY2hpdmVIYW5kbGUgKkFILCBUQVJfTUVNQkVSICp0aCkK IAkJUkVBRF9FUlJPUl9FWElUKHRtcCk7CiAKIAlpZiAoZmNsb3NlKHRtcCkgIT0gMCkJCS8q IFRoaXMgKnNob3VsZCogZGVsZXRlIGl0Li4uICovCi0JCWV4aXRfaG9ycmlibHkobW9kdWxl bmFtZSwgImNvdWxkIG5vdCBjbG9zZSB0ZW1wb3JhcnkgZmlsZTogJXNcbiIsCi0JCQkJCSAg c3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSB0ZW1wb3Jhcnkg ZmlsZTogJW0iKTsKIAogCWlmIChsZW4gIT0gdGgtPmZpbGVMZW4pCiAJewpAQCAtMTEyNyw3 ICsxMTEyLDcgQEAgX3RhckFkZEZpbGUoQXJjaGl2ZUhhbmRsZSAqQUgsIFRBUl9NRU1CRVIg KnRoKQogCiAJCXNucHJpbnRmKGJ1ZjEsIHNpemVvZihidWYxKSwgSU5UNjRfRk9STUFULCAo aW50NjQpIGxlbik7CiAJCXNucHJpbnRmKGJ1ZjIsIHNpemVvZihidWYyKSwgSU5UNjRfRk9S TUFULCAoaW50NjQpIHRoLT5maWxlTGVuKTsKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LCAiYWN0dWFsIGZpbGUgbGVuZ3RoICglcykgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgKCVz KVxuIiwKKwkJZmF0YWwoImFjdHVhbCBmaWxlIGxlbmd0aCAoJXMpIGRvZXMgbm90IG1hdGNo IGV4cGVjdGVkICglcykiLAogCQkJCQkgIGJ1ZjEsIGJ1ZjIpOwogCX0KIApAQCAtMTE2NCw3 ICsxMTQ5LDcgQEAgX3RhclBvc2l0aW9uVG8oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNo YXIgKmZpbGVuYW1lKQogCiAJCXNucHJpbnRmKGJ1ZjEsIHNpemVvZihidWYxKSwgSU5UNjRf Rk9STUFULCAoaW50NjQpIGN0eC0+dGFyRkhwb3MpOwogCQlzbnByaW50ZihidWYyLCBzaXpl b2YoYnVmMiksIElOVDY0X0ZPUk1BVCwgKGludDY0KSBjdHgtPnRhck5leHRNZW1iZXIpOwot CQlhaGxvZyhBSCwgNCwgIm1vdmluZyBmcm9tIHBvc2l0aW9uICVzIHRvIG5leHQgbWVtYmVy IGF0IGZpbGUgcG9zaXRpb24gJXNcbiIsCisJCXBnX2xvZ19kZWJ1ZygibW92aW5nIGZyb20g cG9zaXRpb24gJXMgdG8gbmV4dCBtZW1iZXIgYXQgZmlsZSBwb3NpdGlvbiAlcyIsCiAJCQkg IGJ1ZjEsIGJ1ZjIpOwogCiAJCXdoaWxlIChjdHgtPnRhckZIcG9zIDwgY3R4LT50YXJOZXh0 TWVtYmVyKQpAQCAtMTE3NSw3ICsxMTYwLDcgQEAgX3RhclBvc2l0aW9uVG8oQXJjaGl2ZUhh bmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCQljaGFyCQlidWZbMTAwXTsKIAog CQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBJTlQ2NF9GT1JNQVQsIChpbnQ2NCkgY3R4 LT50YXJGSHBvcyk7Ci0JCWFobG9nKEFILCA0LCAibm93IGF0IGZpbGUgcG9zaXRpb24gJXNc biIsIGJ1Zik7CisJCXBnX2xvZ19kZWJ1Zygibm93IGF0IGZpbGUgcG9zaXRpb24gJXMiLCBi dWYpOwogCX0KIAogCS8qIFdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9yIGF0 IHRoZSBuZXh0IG1lbWJlciAqLwpAQCAtMTE4NCw3ICsxMTY5LDcgQEAgX3RhclBvc2l0aW9u VG8oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCWlmICghX3Rh ckdldEhlYWRlcihBSCwgdGgpKQogCXsKIAkJaWYgKGZpbGVuYW1lKQotCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGZpbmQgaGVhZGVyIGZvciBmaWxlIFwiJXNc IiBpbiB0YXIgYXJjaGl2ZVxuIiwgZmlsZW5hbWUpOworCQkJZmF0YWwoImNvdWxkIG5vdCBm aW5kIGhlYWRlciBmb3IgZmlsZSBcIiVzXCIgaW4gdGFyIGFyY2hpdmUiLCBmaWxlbmFtZSk7 CiAJCWVsc2UKIAkJewogCQkJLyoKQEAgLTExOTgsMTIgKzExODMsMTIgQEAgX3RhclBvc2l0 aW9uVG8oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCiAJd2hp bGUgKGZpbGVuYW1lICE9IE5VTEwgJiYgc3RyY21wKHRoLT50YXJnZXRGaWxlLCBmaWxlbmFt ZSkgIT0gMCkKIAl7Ci0JCWFobG9nKEFILCA0LCAic2tpcHBpbmcgdGFyIG1lbWJlciAlc1xu IiwgdGgtPnRhcmdldEZpbGUpOworCQlwZ19sb2dfZGVidWcoInNraXBwaW5nIHRhciBtZW1i ZXIgJXMiLCB0aC0+dGFyZ2V0RmlsZSk7CiAKIAkJaWQgPSBhdG9pKHRoLT50YXJnZXRGaWxl KTsKIAkJaWYgKChUb2NJRFJlcXVpcmVkKEFILCBpZCkgJiBSRVFfREFUQSkgIT0gMCkKLQkJ CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInJlc3RvcmluZyBkYXRhIG91dCBvZiBvcmRl ciBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYXJjaGl2ZSBmb3JtYXQ6ICIKLQkJCQkJCSAg IlwiJXNcIiBpcyByZXF1aXJlZCwgYnV0IGNvbWVzIGJlZm9yZSBcIiVzXCIgaW4gdGhlIGFy Y2hpdmUgZmlsZS5cbiIsCisJCQlmYXRhbCgicmVzdG9yaW5nIGRhdGEgb3V0IG9mIG9yZGVy IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBhcmNoaXZlIGZvcm1hdDogIgorCQkJCQkJICAi XCIlc1wiIGlzIHJlcXVpcmVkLCBidXQgY29tZXMgYmVmb3JlIFwiJXNcIiBpbiB0aGUgYXJj aGl2ZSBmaWxlLiIsCiAJCQkJCQkgIHRoLT50YXJnZXRGaWxlLCBmaWxlbmFtZSk7CiAKIAkJ LyogSGVhZGVyIGRvZXNuJ3QgbWF0Y2gsIHNvIHJlYWQgdG8gbmV4dCBoZWFkZXIgKi8KQEAg LTEyMTQsNyArMTE5OSw3IEBAIF90YXJQb3NpdGlvblRvKEFyY2hpdmVIYW5kbGUgKkFILCBj b25zdCBjaGFyICpmaWxlbmFtZSkKIAkJCV90YXJSZWFkUmF3KEFILCAmaGVhZGVyWzBdLCA1 MTIsIE5VTEwsIGN0eC0+dGFyRkgpOwogCiAJCWlmICghX3RhckdldEhlYWRlcihBSCwgdGgp KQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGZpbmQgaGVhZGVy IGZvciBmaWxlIFwiJXNcIiBpbiB0YXIgYXJjaGl2ZVxuIiwgZmlsZW5hbWUpOworCQkJZmF0 YWwoImNvdWxkIG5vdCBmaW5kIGhlYWRlciBmb3IgZmlsZSBcIiVzXCIgaW4gdGFyIGFyY2hp dmUiLCBmaWxlbmFtZSk7CiAJfQogCiAJY3R4LT50YXJOZXh0TWVtYmVyID0gY3R4LT50YXJG SHBvcyArICgodGgtPmZpbGVMZW4gKyA1MTEpICYgfjUxMSk7CkBAIC0xMjQ3LDkgKzEyMzIs OCBAQCBfdGFyR2V0SGVhZGVyKEFyY2hpdmVIYW5kbGUgKkFILCBUQVJfTUVNQkVSICp0aCkK IAkJCXJldHVybiAwOwogCiAJCWlmIChsZW4gIT0gNTEyKQotCQkJZXhpdF9ob3JyaWJseSht b2R1bGVuYW1lLAotCQkJCQkJICBuZ2V0dGV4dCgiaW5jb21wbGV0ZSB0YXIgaGVhZGVyIGZv dW5kICglbHUgYnl0ZSlcbiIsCi0JCQkJCQkJCSAgICJpbmNvbXBsZXRlIHRhciBoZWFkZXIg Zm91bmQgKCVsdSBieXRlcylcbiIsCisJCQlmYXRhbChuZ2V0dGV4dCgiaW5jb21wbGV0ZSB0 YXIgaGVhZGVyIGZvdW5kICglbHUgYnl0ZSkiLAorCQkJCQkJICAgImluY29tcGxldGUgdGFy IGhlYWRlciBmb3VuZCAoJWx1IGJ5dGVzKSIsCiAJCQkJCQkJCSAgIGxlbiksCiAJCQkJCQkg ICh1bnNpZ25lZCBsb25nKSBsZW4pOwogCkBAIC0xMjg5LDcgKzEyNzMsNyBAQCBfdGFyR2V0 SGVhZGVyKEFyY2hpdmVIYW5kbGUgKkFILCBUQVJfTUVNQkVSICp0aCkKIAogCQlzbnByaW50 Zihwb3NidWYsIHNpemVvZihwb3NidWYpLCBVSU5UNjRfRk9STUFULCAodWludDY0KSBoUG9z KTsKIAkJc25wcmludGYobGVuYnVmLCBzaXplb2YobGVuYnVmKSwgVUlOVDY0X0ZPUk1BVCwg KHVpbnQ2NCkgbGVuKTsKLQkJYWhsb2coQUgsIDMsICJUT0MgRW50cnkgJXMgYXQgJXMgKGxl bmd0aCAlcywgY2hlY2tzdW0gJWQpXG4iLAorCQlwZ19sb2dfZGVidWcoIlRPQyBFbnRyeSAl cyBhdCAlcyAobGVuZ3RoICVzLCBjaGVja3N1bSAlZCkiLAogCQkJICB0YWcsIHBvc2J1Ziwg bGVuYnVmLCBzdW0pOwogCX0KIApAQCAtMTI5OSw5ICsxMjgzLDcgQEAgX3RhckdldEhlYWRl cihBcmNoaXZlSGFuZGxlICpBSCwgVEFSX01FTUJFUiAqdGgpCiAKIAkJc25wcmludGYocG9z YnVmLCBzaXplb2YocG9zYnVmKSwgVUlOVDY0X0ZPUk1BVCwKIAkJCQkgKHVpbnQ2NCkgZnRl bGxvKGN0eC0+dGFyRkgpKTsKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkg ICJjb3JydXB0IHRhciBoZWFkZXIgZm91bmQgaW4gJXMgIgotCQkJCQkgICIoZXhwZWN0ZWQg JWQsIGNvbXB1dGVkICVkKSBmaWxlIHBvc2l0aW9uICVzXG4iLAorCQlmYXRhbCgiY29ycnVw dCB0YXIgaGVhZGVyIGZvdW5kIGluICVzIChleHBlY3RlZCAlZCwgY29tcHV0ZWQgJWQpIGZp bGUgcG9zaXRpb24gJXMiLAogCQkJCQkgIHRhZywgc3VtLCBjaGssIHBvc2J1Zik7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3V0aWxzLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwX3V0aWxzLmMKaW5kZXggMWJkY2U2OGZmOS4uODBjMjU5 NGU1NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF91dGlscy5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuYwpAQCAtOTMsMjkgKzkzLDE1 IEBAIHZ3cml0ZV9tc2coY29uc3QgY2hhciAqbW9kdWxlbmFtZSwgY29uc3QgY2hhciAqZm10 LCB2YV9saXN0IGFwKQogCXZmcHJpbnRmKHN0ZGVyciwgXyhmbXQpLCBhcCk7CiB9CiAKLS8q Ci0gKiBGYWlsIGFuZCBkaWUsIHdpdGggYSBtZXNzYWdlIHRvIHN0ZGVyci4gIFBhcmFtZXRl cnMgYXMgZm9yIHdyaXRlX21zZy4KLSAqCi0gKiBOb3RlIHRoYXQgb25fZXhpdF9uaWNlbHkg Y2FsbGJhY2tzIHdpbGwgZ2V0IHJ1bi4KLSAqLwotdm9pZAotZXhpdF9ob3JyaWJseShjb25z dCBjaGFyICptb2R1bGVuYW1lLCBjb25zdCBjaGFyICpmbXQsLi4uKQotewotCXZhX2xpc3QJ CWFwOwotCi0JdmFfc3RhcnQoYXAsIGZtdCk7Ci0JdndyaXRlX21zZyhtb2R1bGVuYW1lLCBm bXQsIGFwKTsKLQl2YV9lbmQoYXApOwotCi0JZXhpdF9uaWNlbHkoMSk7Ci19Ci0KIC8qIFJl Z2lzdGVyIGEgY2FsbGJhY2sgdG8gYmUgcnVuIHdoZW4gZXhpdF9uaWNlbHkgaXMgaW52b2tl ZC4gKi8KIHZvaWQKIG9uX2V4aXRfbmljZWx5KG9uX2V4aXRfbmljZWx5X2NhbGxiYWNrIGZ1 bmN0aW9uLCB2b2lkICphcmcpCiB7CiAJaWYgKG9uX2V4aXRfbmljZWx5X2luZGV4ID49IE1B WF9PTl9FWElUX05JQ0VMWSkKLQkJZXhpdF9ob3JyaWJseShOVUxMLCAib3V0IG9mIG9uX2V4 aXRfbmljZWx5IHNsb3RzXG4iKTsKKwl7CisJCXBnX2xvZ19mYXRhbCgib3V0IG9mIG9uX2V4 aXRfbmljZWx5IHNsb3RzIik7CisJCWV4aXRfbmljZWx5KDEpOworCX0KIAlvbl9leGl0X25p Y2VseV9saXN0W29uX2V4aXRfbmljZWx5X2luZGV4XS5mdW5jdGlvbiA9IGZ1bmN0aW9uOwog CW9uX2V4aXRfbmljZWx5X2xpc3Rbb25fZXhpdF9uaWNlbHlfaW5kZXhdLmFyZyA9IGFyZzsK IAlvbl9leGl0X25pY2VseV9pbmRleCsrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF91dGlscy5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF91dGlscy5o CmluZGV4IDdkYmYzYzlmZWIuLjJlMWYzMWYwNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfdXRpbHMuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X3V0aWxzLmgKQEAgLTE1LDYgKzE1LDggQEAKICNpZm5kZWYgUEdfQkFDS1VQX1VUSUxTX0gK ICNkZWZpbmUgUEdfQkFDS1VQX1VUSUxTX0gKIAorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKKwogdHlwZWRlZiBlbnVtCQkJCQkvKiBiaXRzIHJldHVybmVkIGJ5IHNldF9kdW1w X3NlY3Rpb24gKi8KIHsKIAlEVU1QX1BSRV9EQVRBID0gMHgwMSwKQEAgLTMzLDYgKzM1LDYg QEAgZXh0ZXJuIHZvaWQgdndyaXRlX21zZyhjb25zdCBjaGFyICptb2R1bGVuYW1lLCBjb25z dCBjaGFyICpmbXQsIHZhX2xpc3QgYXApIHBnX2EKIGV4dGVybiB2b2lkIG9uX2V4aXRfbmlj ZWx5KG9uX2V4aXRfbmljZWx5X2NhbGxiYWNrIGZ1bmN0aW9uLCB2b2lkICphcmcpOwogZXh0 ZXJuIHZvaWQgZXhpdF9uaWNlbHkoaW50IGNvZGUpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigp OwogCi1leHRlcm4gdm9pZCBleGl0X2hvcnJpYmx5KGNvbnN0IGNoYXIgKm1vZHVsZW5hbWUs IGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmludGYoMiwgMykgcGdfYXR0 cmlidXRlX25vcmV0dXJuKCk7CisjZGVmaW5lIGZhdGFsKC4uLikgZG8geyBwZ19sb2dfZXJy b3IoX19WQV9BUkdTX18pOyBleGl0X25pY2VseSgxKTsgfSB3aGlsZSgwKQogCiAjZW5kaWYJ CQkJCQkJLyogUEdfQkFDS1VQX1VUSUxTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDBlMTI5 Zjk2NTQuLjVmN2E1MGM4YzIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNjIsNiArNjIsNyBAQAog I2luY2x1ZGUgInBnX2JhY2t1cF91dGlscy5oIgogI2luY2x1ZGUgInBnX2R1bXAuaCIKICNp bmNsdWRlICJmZV91dGlscy9jb25uZWN0LmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2lu Zy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCiAKQEAgLTkxLDgg KzkyLDYgQEAgdHlwZWRlZiBlbnVtIE9pZE9wdGlvbnMKIH0gT2lkT3B0aW9uczsKIAogLyog Z2xvYmFsIGRlY2xzICovCi1ib29sCQlnX3ZlcmJvc2U7CQkJLyogVXNlciB3YW50cyB2ZXJi b3NlIG5hcnJhdGlvbiBvZiBvdXIKLQkJCQkJCQkJICogYWN0aXZpdGllcy4gKi8KIHN0YXRp YyBib29sIGRvc3luYyA9IHRydWU7CQkvKiBJc3N1ZSBmc3luYygpIHRvIG1ha2UgZHVtcCBk dXJhYmxlIG9uIGRpc2suICovCiAKIC8qIHN1YnF1ZXJ5IHVzZWQgdG8gY29udmVydCB1c2Vy IElEIChlZywgZGF0ZGJhKSB0byB1c2VyIG5hbWUgKi8KQEAgLTMwNCw2ICszMDMsNyBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpbnQJCQlvcHRpbmRleDsKIAlSZXN0b3Jl T3B0aW9ucyAqcm9wdDsKIAlBcmNoaXZlICAgICpmb3V0OwkJCS8qIHRoZSBzY3JpcHQgZmls ZSAqLworCWJvb2wJCWdfdmVyYm9zZSA9IGZhbHNlOwogCWNvbnN0IGNoYXIgKmR1bXBlbmNv ZGluZyA9IE5VTEw7CiAJY29uc3QgY2hhciAqZHVtcHNuYXBzaG90ID0gTlVMTDsKIAljaGFy CSAgICp1c2Vfcm9sZSA9IE5VTEw7CkBAIC0zODIsNiArMzgyLDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJfTsKIAogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlsw XSwgUEdfVEVYVERPTUFJTigicGdfZHVtcCIpKTsKKwlwZ19sb2dnaW5nX2luaXQoYXJndlsw XSk7CisJcGdfbG9nZ2luZ19zZXRfbGV2ZWwoUEdfTE9HX1dBUk5JTkcpOwogCiAJLyoKIAkg KiBJbml0aWFsaXplIHdoYXQgd2UgbmVlZCBmb3IgcGFyYWxsZWwgZXhlY3V0aW9uLCBlc3Bl Y2lhbGx5IGZvciB0aHJlYWQKQEAgLTM4OSw4ICszOTEsNiBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkgKi8KIAlpbml0X3BhcmFsbGVsX2R1bXBfdXRpbHMoKTsKIAotCWdf dmVyYm9zZSA9IGZhbHNlOwotCiAJc3RyY3B5KGdfY29tbWVudF9zdGFydCwgIi0tICIpOwog CWdfY29tbWVudF9lbmRbMF0gPSAnXDAnOwogCXN0cmNweShnX29wYXF1ZV90eXBlLCAib3Bh cXVlIik7CkBAIC01MDYsNiArNTA2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAKIAkJCWNhc2UgJ3YnOgkJCS8qIHZlcmJvc2UgKi8KIAkJCQlnX3ZlcmJvc2UgPSB0cnVl OworCQkJCXBnX2xvZ2dpbmdfc2V0X2xldmVsKFBHX0xPR19JTkZPKTsKIAkJCQlicmVhazsK IAogCQkJY2FzZSAndyc6CkBAIC01MjQsNyArNTI1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJCQkJY29tcHJlc3NMZXZlbCA9IGF0b2kob3B0YXJnKTsKIAkJCQlpZiAo Y29tcHJlc3NMZXZlbCA8IDAgfHwgY29tcHJlc3NMZXZlbCA+IDkpCiAJCQkJewotCQkJCQl3 cml0ZV9tc2coTlVMTCwgImNvbXByZXNzaW9uIGxldmVsIG11c3QgYmUgaW4gcmFuZ2UgMC4u OVxuIik7CisJCQkJCXBnX2xvZ19lcnJvcigiY29tcHJlc3Npb24gbGV2ZWwgbXVzdCBiZSBp biByYW5nZSAwLi45Iik7CiAJCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJCX0KIAkJCQlicmVh azsKQEAgLTU3Myw4ICs1NzQsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkv KiBDb21wbGFpbiBpZiBhbnkgYXJndW1lbnRzIHJlbWFpbiAqLwogCWlmIChvcHRpbmQgPCBh cmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxp bmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJn dltvcHRpbmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJn dW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZw cmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlv bi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdF9uaWNlbHkoMSk7CkBAIC01OTQsMjEg KzU5NSwyMSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChkb3B0LmRh dGFPbmx5ICYmIGRvcHQuc2NoZW1hT25seSkKIAl7Ci0JCXdyaXRlX21zZyhOVUxMLCAib3B0 aW9ucyAtcy8tLXNjaGVtYS1vbmx5IGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNl ZCB0b2dldGhlclxuIik7CisJCXBnX2xvZ19lcnJvcigib3B0aW9ucyAtcy8tLXNjaGVtYS1v bmx5IGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpOwogCQll eGl0X25pY2VseSgxKTsKIAl9CiAKIAlpZiAoZG9wdC5kYXRhT25seSAmJiBkb3B0Lm91dHB1 dENsZWFuKQogCXsKLQkJd3JpdGVfbXNnKE5VTEwsICJvcHRpb25zIC1jLy0tY2xlYW4gYW5k IC1hLy0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXG4iKTsKKwkJcGdfbG9n X2Vycm9yKCJvcHRpb25zIC1jLy0tY2xlYW4gYW5kIC1hLy0tZGF0YS1vbmx5IGNhbm5vdCBi ZSB1c2VkIHRvZ2V0aGVyIik7CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIAogCWlmIChkb3B0 LmlmX2V4aXN0cyAmJiAhZG9wdC5vdXRwdXRDbGVhbikKLQkJZXhpdF9ob3JyaWJseShOVUxM LCAib3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAtYy8tLWNsZWFuXG4iKTsK KwkJZmF0YWwoIm9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBvcHRpb24gLWMvLS1jbGVh biIpOwogCiAJaWYgKGRvcHQuZG9fbm90aGluZyAmJiAhKGRvcHQuZHVtcF9pbnNlcnRzIHx8 IGRvcHQuY29sdW1uX2luc2VydHMpKQotCQlleGl0X2hvcnJpYmx5KE5VTEwsICJvcHRpb24g LS1vbi1jb25mbGljdC1kby1ub3RoaW5nIHJlcXVpcmVzIG9wdGlvbiAtLWluc2VydHMgb3Ig LS1jb2x1bW4taW5zZXJ0c1xuIik7CisJCWZhdGFsKCJvcHRpb24gLS1vbi1jb25mbGljdC1k by1ub3RoaW5nIHJlcXVpcmVzIG9wdGlvbiAtLWluc2VydHMgb3IgLS1jb2x1bW4taW5zZXJ0 cyIpOwogCiAJLyogSWRlbnRpZnkgYXJjaGl2ZSBmb3JtYXQgdG8gZW1pdCAqLwogCWFyY2hp dmVGb3JtYXQgPSBwYXJzZUFyY2hpdmVGb3JtYXQoZm9ybWF0LCAmYXJjaGl2ZU1vZGUpOwpA QCAtNjMwLDggKzYzMSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAjaWZu ZGVmIEhBVkVfTElCWgogCWlmIChjb21wcmVzc0xldmVsICE9IDApCi0JCXdyaXRlX21zZyhO VUxMLCAiV0FSTklORzogcmVxdWVzdGVkIGNvbXByZXNzaW9uIG5vdCBhdmFpbGFibGUgaW4g dGhpcyAiCi0JCQkJICAiaW5zdGFsbGF0aW9uIC0tIGFyY2hpdmUgd2lsbCBiZSB1bmNvbXBy ZXNzZWRcbiIpOworCQlwZ19sb2dfd2FybmluZygicmVxdWVzdGVkIGNvbXByZXNzaW9uIG5v dCBhdmFpbGFibGUgaW4gdGhpcyBpbnN0YWxsYXRpb24gLS0gYXJjaGl2ZSB3aWxsIGJlIHVu Y29tcHJlc3NlZCIpOwogCWNvbXByZXNzTGV2ZWwgPSAwOwogI2VuZGlmCiAKQEAgLTY1Miwx MSArNjUyLDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl8fCBudW1Xb3Jr ZXJzID4gTUFYSU1VTV9XQUlUX09CSkVDVFMKICNlbmRpZgogCQkpCi0JCWV4aXRfaG9ycmli bHkoTlVMTCwgImludmFsaWQgbnVtYmVyIG9mIHBhcmFsbGVsIGpvYnNcbiIpOworCQlmYXRh bCgiaW52YWxpZCBudW1iZXIgb2YgcGFyYWxsZWwgam9icyIpOwogCiAJLyogUGFyYWxsZWwg YmFja3VwIG9ubHkgaW4gdGhlIGRpcmVjdG9yeSBhcmNoaXZlIGZvcm1hdCBzbyBmYXIgKi8K IAlpZiAoYXJjaGl2ZUZvcm1hdCAhPSBhcmNoRGlyZWN0b3J5ICYmIG51bVdvcmtlcnMgPiAx KQotCQlleGl0X2hvcnJpYmx5KE5VTEwsICJwYXJhbGxlbCBiYWNrdXAgb25seSBzdXBwb3J0 ZWQgYnkgdGhlIGRpcmVjdG9yeSBmb3JtYXRcbiIpOworCQlmYXRhbCgicGFyYWxsZWwgYmFj a3VwIG9ubHkgc3VwcG9ydGVkIGJ5IHRoZSBkaXJlY3RvcnkgZm9ybWF0Iik7CiAKIAkvKiBP cGVuIHRoZSBvdXRwdXQgZmlsZSAqLwogCWZvdXQgPSBDcmVhdGVBcmNoaXZlKGZpbGVuYW1l LCBhcmNoaXZlRm9ybWF0LCBjb21wcmVzc0xldmVsLCBkb3N5bmMsCkBAIC02NzEsNiArNjcx LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJLyogTGV0IHRoZSBhcmNoaXZl ciBrbm93IGhvdyBub2lzeSB0byBiZSAqLwogCWZvdXQtPnZlcmJvc2UgPSBnX3ZlcmJvc2U7 CiAKKwogCS8qCiAJICogV2UgYWxsb3cgdGhlIHNlcnZlciB0byBiZSBiYWNrIHRvIDguMCwg YW5kIHVwIHRvIGFueSBtaW5vciByZWxlYXNlIG9mCiAJICogb3VyIG93biBtYWpvciB2ZXJz aW9uLiAgKFNlZSBhbHNvIHZlcnNpb24gY2hlY2sgaW4gcGdfZHVtcGFsbC5jLikKQEAgLTcx MCwxNSArNzExLDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCS8qIGNoZWNr IHRoZSB2ZXJzaW9uIGZvciB0aGUgc3luY2hyb25pemVkIHNuYXBzaG90cyBmZWF0dXJlICov CiAJaWYgKG51bVdvcmtlcnMgPiAxICYmIGZvdXQtPnJlbW90ZVZlcnNpb24gPCA5MDIwMAog CQkmJiAhZG9wdC5ub19zeW5jaHJvbml6ZWRfc25hcHNob3RzKQotCQlleGl0X2hvcnJpYmx5 KE5VTEwsCi0JCQkJCSAgIlN5bmNocm9uaXplZCBzbmFwc2hvdHMgYXJlIG5vdCBzdXBwb3J0 ZWQgYnkgdGhpcyBzZXJ2ZXIgdmVyc2lvbi5cbiIKLQkJCQkJICAiUnVuIHdpdGggLS1uby1z eW5jaHJvbml6ZWQtc25hcHNob3RzIGluc3RlYWQgaWYgeW91IGRvIG5vdCBuZWVkXG4iCi0J CQkJCSAgInN5bmNocm9uaXplZCBzbmFwc2hvdHMuXG4iKTsKKwkJZmF0YWwoIlN5bmNocm9u aXplZCBzbmFwc2hvdHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBzZXJ2ZXIgdmVyc2lv bi5cbiIKKwkJCSAgIlJ1biB3aXRoIC0tbm8tc3luY2hyb25pemVkLXNuYXBzaG90cyBpbnN0 ZWFkIGlmIHlvdSBkbyBub3QgbmVlZFxuIgorCQkJICAic3luY2hyb25pemVkIHNuYXBzaG90 cy4iKTsKIAogCS8qIGNoZWNrIHRoZSB2ZXJzaW9uIHdoZW4gYSBzbmFwc2hvdCBpcyBleHBs aWNpdGx5IHNwZWNpZmllZCBieSB1c2VyICovCiAJaWYgKGR1bXBzbmFwc2hvdCAmJiBmb3V0 LT5yZW1vdGVWZXJzaW9uIDwgOTAyMDApCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwKLQkJCQkJ ICAiRXhwb3J0ZWQgc25hcHNob3RzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgc2VydmVy IHZlcnNpb24uXG4iKTsKKwkJZmF0YWwoIkV4cG9ydGVkIHNuYXBzaG90cyBhcmUgbm90IHN1 cHBvcnRlZCBieSB0aGlzIHNlcnZlciB2ZXJzaW9uLiIpOwogCiAJLyoKIAkgKiBGaW5kIHRo ZSBsYXN0IGJ1aWx0LWluIE9JRCwgaWYgbmVlZGVkIChwcmlvciB0byA4LjEpCkBAIC03MzAs OCArNzI5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJZWxzZQogCQlnX2xh c3RfYnVpbHRpbl9vaWQgPSBGaXJzdE5vcm1hbE9iamVjdElkIC0gMTsKIAotCWlmIChnX3Zl cmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAibGFzdCBidWlsdC1pbiBPSUQgaXMgJXVcbiIs IGdfbGFzdF9idWlsdGluX29pZCk7CisJcGdfbG9nX2luZm8oImxhc3QgYnVpbHQtaW4gT0lE IGlzICV1IiwgZ19sYXN0X2J1aWx0aW5fb2lkKTsKIAogCS8qIEV4cGFuZCBzY2hlbWEgc2Vs ZWN0aW9uIHBhdHRlcm5zIGludG8gT0lEIGxpc3RzICovCiAJaWYgKHNjaGVtYV9pbmNsdWRl X3BhdHRlcm5zLmhlYWQgIT0gTlVMTCkKQEAgLTc0MCw3ICs3MzgsNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkJCQkJCQkJCSZzY2hlbWFfaW5jbHVkZV9vaWRzLAogCQkJ CQkJCQkJc3RyaWN0X25hbWVzKTsKIAkJaWYgKHNjaGVtYV9pbmNsdWRlX29pZHMuaGVhZCA9 PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShOVUxMLCAibm8gbWF0Y2hpbmcgc2NoZW1hcyB3 ZXJlIGZvdW5kXG4iKTsKKwkJCWZhdGFsKCJubyBtYXRjaGluZyBzY2hlbWFzIHdlcmUgZm91 bmQiKTsKIAl9CiAJZXhwYW5kX3NjaGVtYV9uYW1lX3BhdHRlcm5zKGZvdXQsICZzY2hlbWFf ZXhjbHVkZV9wYXR0ZXJucywKIAkJCQkJCQkJJnNjaGVtYV9leGNsdWRlX29pZHMsCkBAIC03 NTQsNyArNzUyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJCQkJCSAg ICZ0YWJsZV9pbmNsdWRlX29pZHMsCiAJCQkJCQkJCSAgIHN0cmljdF9uYW1lcyk7CiAJCWlm ICh0YWJsZV9pbmNsdWRlX29pZHMuaGVhZCA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShO VUxMLCAibm8gbWF0Y2hpbmcgdGFibGVzIHdlcmUgZm91bmRcbiIpOworCQkJZmF0YWwoIm5v IG1hdGNoaW5nIHRhYmxlcyB3ZXJlIGZvdW5kIik7CiAJfQogCWV4cGFuZF90YWJsZV9uYW1l X3BhdHRlcm5zKGZvdXQsICZ0YWJsZV9leGNsdWRlX3BhdHRlcm5zLAogCQkJCQkJCSAgICZ0 YWJsZV9leGNsdWRlX29pZHMsCkBAIC0xMDE2LDggKzEwMTQsOCBAQCBzZXR1cF9jb25uZWN0 aW9uKEFyY2hpdmUgKkFILCBjb25zdCBjaGFyICpkdW1wZW5jb2RpbmcsCiAJaWYgKGR1bXBl bmNvZGluZykKIAl7CiAJCWlmIChQUXNldENsaWVudEVuY29kaW5nKGNvbm4sIGR1bXBlbmNv ZGluZykgPCAwKQotCQkJZXhpdF9ob3JyaWJseShOVUxMLCAiaW52YWxpZCBjbGllbnQgZW5j b2RpbmcgXCIlc1wiIHNwZWNpZmllZFxuIiwKLQkJCQkJCSAgZHVtcGVuY29kaW5nKTsKKwkJ CWZhdGFsKCJpbnZhbGlkIGNsaWVudCBlbmNvZGluZyBcIiVzXCIgc3BlY2lmaWVkIiwKKwkJ CQkgIGR1bXBlbmNvZGluZyk7CiAJfQogCiAJLyoKQEAgLTExNTIsMTAgKzExNTAsOSBAQCBz ZXR1cF9jb25uZWN0aW9uKEFyY2hpdmUgKkFILCBjb25zdCBjaGFyICpkdW1wZW5jb2Rpbmcs CiAJCQkgIWRvcHQtPm5vX3N5bmNocm9uaXplZF9zbmFwc2hvdHMpCiAJewogCQlpZiAoQUgt PmlzU3RhbmRieSAmJiBBSC0+cmVtb3RlVmVyc2lvbiA8IDEwMDAwMCkKLQkJCWV4aXRfaG9y cmlibHkoTlVMTCwKLQkJCQkJCSAgIlN5bmNocm9uaXplZCBzbmFwc2hvdHMgb24gc3RhbmRi eSBzZXJ2ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgc2VydmVyIHZlcnNpb24uXG4i Ci0JCQkJCQkgICJSdW4gd2l0aCAtLW5vLXN5bmNocm9uaXplZC1zbmFwc2hvdHMgaW5zdGVh ZCBpZiB5b3UgZG8gbm90IG5lZWRcbiIKLQkJCQkJCSAgInN5bmNocm9uaXplZCBzbmFwc2hv dHMuXG4iKTsKKwkJCWZhdGFsKCJTeW5jaHJvbml6ZWQgc25hcHNob3RzIG9uIHN0YW5kYnkg c2VydmVycyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIHNlcnZlciB2ZXJzaW9uLlxuIgor CQkJCSAgIlJ1biB3aXRoIC0tbm8tc3luY2hyb25pemVkLXNuYXBzaG90cyBpbnN0ZWFkIGlm IHlvdSBkbyBub3QgbmVlZFxuIgorCQkJCSAgInN5bmNocm9uaXplZCBzbmFwc2hvdHMuIik7 CiAKIAogCQlBSC0+c3luY19zbmFwc2hvdF9pZCA9IGdldF9zeW5jaHJvbml6ZWRfc25hcHNo b3QoQUgpOwpAQCAtMTIyMiw3ICsxMjE5LDcgQEAgcGFyc2VBcmNoaXZlRm9ybWF0KGNvbnN0 IGNoYXIgKmZvcm1hdCwgQXJjaGl2ZU1vZGUgKm1vZGUpCiAJZWxzZSBpZiAocGdfc3RyY2Fz ZWNtcChmb3JtYXQsICJ0YXIiKSA9PSAwKQogCQlhcmNoaXZlRm9ybWF0ID0gYXJjaFRhcjsK IAllbHNlCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwgImludmFsaWQgb3V0cHV0IGZvcm1hdCBc IiVzXCIgc3BlY2lmaWVkXG4iLCBmb3JtYXQpOworCQlmYXRhbCgiaW52YWxpZCBvdXRwdXQg Zm9ybWF0IFwiJXNcIiBzcGVjaWZpZWQiLCBmb3JtYXQpOwogCXJldHVybiBhcmNoaXZlRm9y bWF0OwogfQogCkBAIC0xMjYwLDcgKzEyNTcsNyBAQCBleHBhbmRfc2NoZW1hX25hbWVfcGF0 dGVybnMoQXJjaGl2ZSAqZm91dCwKIAogCQlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwg cXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CiAJCWlmIChzdHJpY3RfbmFtZXMgJiYg UFFudHVwbGVzKHJlcykgPT0gMCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgIm5vIG1hdGNo aW5nIHNjaGVtYXMgd2VyZSBmb3VuZCBmb3IgcGF0dGVybiBcIiVzXCJcbiIsIGNlbGwtPnZh bCk7CisJCQlmYXRhbCgibm8gbWF0Y2hpbmcgc2NoZW1hcyB3ZXJlIGZvdW5kIGZvciBwYXR0 ZXJuIFwiJXNcIiIsIGNlbGwtPnZhbCk7CiAKIAkJZm9yIChpID0gMDsgaSA8IFBRbnR1cGxl cyhyZXMpOyBpKyspCiAJCXsKQEAgLTEzMjQsNyArMTMyMSw3IEBAIGV4cGFuZF90YWJsZV9u YW1lX3BhdHRlcm5zKEFyY2hpdmUgKmZvdXQsCiAJCVBRY2xlYXIoRXhlY3V0ZVNxbFF1ZXJ5 Rm9yU2luZ2xlUm93KGZvdXQsCiAJCQkJCQkJCQkJCUFMV0FZU19TRUNVUkVfU0VBUkNIX1BB VEhfU1FMKSk7CiAJCWlmIChzdHJpY3RfbmFtZXMgJiYgUFFudHVwbGVzKHJlcykgPT0gMCkK LQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgIm5vIG1hdGNoaW5nIHRhYmxlcyB3ZXJlIGZvdW5k IGZvciBwYXR0ZXJuIFwiJXNcIlxuIiwgY2VsbC0+dmFsKTsKKwkJCWZhdGFsKCJubyBtYXRj aGluZyB0YWJsZXMgd2VyZSBmb3VuZCBmb3IgcGF0dGVybiBcIiVzXCIiLCBjZWxsLT52YWwp OwogCiAJCWZvciAoaSA9IDA7IGkgPCBQUW50dXBsZXMocmVzKTsgaSsrKQogCQl7CkBAIC0x NzM4LDkgKzE3MzUsOCBAQCBkdW1wVGFibGVEYXRhX2NvcHkoQXJjaGl2ZSAqZm91dCwgdm9p ZCAqZGNvbnRleHQpCiAJY2hhcgkgICAqY29weWJ1ZjsKIAljb25zdCBjaGFyICpjb2x1bW5f bGlzdDsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAiZHVtcGluZyBj b250ZW50cyBvZiB0YWJsZSBcIiVzLiVzXCJcbiIsCi0JCQkJICB0YmluZm8tPmRvYmoubmFt ZXNwYWNlLT5kb2JqLm5hbWUsIGNsYXNzbmFtZSk7CisJcGdfbG9nX2luZm8oImR1bXBpbmcg Y29udGVudHMgb2YgdGFibGUgXCIlcy4lc1wiIiwKKwkJCQl0YmluZm8tPmRvYmoubmFtZXNw YWNlLT5kb2JqLm5hbWUsIGNsYXNzbmFtZSk7CiAKIAkvKgogCSAqIFNwZWNpZnkgdGhlIGNv bHVtbiBsaXN0IGV4cGxpY2l0bHkgc28gdGhhdCB3ZSBoYXZlIG5vIHBvc3NpYmlsaXR5IG9m CkBAIC0xODQwLDkgKzE4MzYsOSBAQCBkdW1wVGFibGVEYXRhX2NvcHkoQXJjaGl2ZSAqZm91 dCwgdm9pZCAqZGNvbnRleHQpCiAJaWYgKHJldCA9PSAtMikKIAl7CiAJCS8qIGNvcHkgZGF0 YSB0cmFuc2ZlciBmYWlsZWQgKi8KLQkJd3JpdGVfbXNnKE5VTEwsICJEdW1waW5nIHRoZSBj b250ZW50cyBvZiB0YWJsZSBcIiVzXCIgZmFpbGVkOiBQUWdldENvcHlEYXRhKCkgZmFpbGVk LlxuIiwgY2xhc3NuYW1lKTsKLQkJd3JpdGVfbXNnKE5VTEwsICJFcnJvciBtZXNzYWdlIGZy b20gc2VydmVyOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKLQkJd3JpdGVfbXNnKE5V TEwsICJUaGUgY29tbWFuZCB3YXM6ICVzXG4iLCBxLT5kYXRhKTsKKwkJcGdfbG9nX2Vycm9y KCJEdW1waW5nIHRoZSBjb250ZW50cyBvZiB0YWJsZSBcIiVzXCIgZmFpbGVkOiBQUWdldENv cHlEYXRhKCkgZmFpbGVkLiIsIGNsYXNzbmFtZSk7CisJCXBnX2xvZ19lcnJvcigiRXJyb3Ig bWVzc2FnZSBmcm9tIHNlcnZlcjogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBn X2xvZ19lcnJvcigiVGhlIGNvbW1hbmQgd2FzOiAlcyIsIHEtPmRhdGEpOwogCQlleGl0X25p Y2VseSgxKTsKIAl9CiAKQEAgLTE4NTAsMTYgKzE4NDYsMTYgQEAgZHVtcFRhYmxlRGF0YV9j b3B5KEFyY2hpdmUgKmZvdXQsIHZvaWQgKmRjb250ZXh0KQogCXJlcyA9IFBRZ2V0UmVzdWx0 KGNvbm4pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0sp CiAJewotCQl3cml0ZV9tc2coTlVMTCwgIkR1bXBpbmcgdGhlIGNvbnRlbnRzIG9mIHRhYmxl IFwiJXNcIiBmYWlsZWQ6IFBRZ2V0UmVzdWx0KCkgZmFpbGVkLlxuIiwgY2xhc3NuYW1lKTsK LQkJd3JpdGVfbXNnKE5VTEwsICJFcnJvciBtZXNzYWdlIGZyb20gc2VydmVyOiAlcyIsIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKLQkJd3JpdGVfbXNnKE5VTEwsICJUaGUgY29tbWFuZCB3 YXM6ICVzXG4iLCBxLT5kYXRhKTsKKwkJcGdfbG9nX2Vycm9yKCJEdW1waW5nIHRoZSBjb250 ZW50cyBvZiB0YWJsZSBcIiVzXCIgZmFpbGVkOiBQUWdldFJlc3VsdCgpIGZhaWxlZC4iLCBj bGFzc25hbWUpOworCQlwZ19sb2dfZXJyb3IoIkVycm9yIG1lc3NhZ2UgZnJvbSBzZXJ2ZXI6 ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoIlRoZSBjb21t YW5kIHdhczogJXMiLCBxLT5kYXRhKTsKIAkJZXhpdF9uaWNlbHkoMSk7CiAJfQogCVBRY2xl YXIocmVzKTsKIAogCS8qIERvIHRoaXMgdG8gZW5zdXJlIHdlJ3ZlIHB1bXBlZCBsaWJwcSBi YWNrIHRvIGlkbGUgc3RhdGUgKi8KIAlpZiAoUFFnZXRSZXN1bHQoY29ubikgIT0gTlVMTCkK LQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiB1bmV4cGVjdGVkIGV4dHJhIHJlc3VsdHMg ZHVyaW5nIENPUFkgb2YgdGFibGUgXCIlc1wiXG4iLAorCQlwZ19sb2dfd2FybmluZygidW5l eHBlY3RlZCBleHRyYSByZXN1bHRzIGR1cmluZyBDT1BZIG9mIHRhYmxlIFwiJXNcIiIsCiAJ CQkJICBjbGFzc25hbWUpOwogCiAJZGVzdHJveVBRRXhwQnVmZmVyKHEpOwpAQCAtMjU2MCw4 ICsyNTU2LDcgQEAgZHVtcERhdGFiYXNlKEFyY2hpdmUgKmZvdXQpCiAJCQkJbWlubXhpZDsK IAljaGFyCSAgICpxZGF0bmFtZTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhO VUxMLCAic2F2aW5nIGRhdGFiYXNlIGRlZmluaXRpb25cbiIpOworCXBnX2xvZ19pbmZvKCJz YXZpbmcgZGF0YWJhc2UgZGVmaW5pdGlvbiIpOwogCiAJLyogRmV0Y2ggdGhlIGRhdGFiYXNl LWxldmVsIHByb3BlcnRpZXMgZm9yIHRoaXMgZGF0YWJhc2UgKi8KIAlpZiAoZm91dC0+cmVt b3RlVmVyc2lvbiA+PSA5MDYwMCkKQEAgLTMwMDYsOCArMzAwMSw3IEBAIGR1bXBFbmNvZGlu ZyhBcmNoaXZlICpBSCkKIAljb25zdCBjaGFyICplbmNuYW1lID0gcGdfZW5jb2RpbmdfdG9f Y2hhcihBSC0+ZW5jb2RpbmcpOwogCVBRRXhwQnVmZmVyIHFyeSA9IGNyZWF0ZVBRRXhwQnVm ZmVyKCk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInNhdmluZyBl bmNvZGluZyA9ICVzXG4iLCBlbmNuYW1lKTsKKwlwZ19sb2dfaW5mbygic2F2aW5nIGVuY29k aW5nID0gJXMiLCBlbmNuYW1lKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHFyeSwgIlNF VCBjbGllbnRfZW5jb2RpbmcgPSAiKTsKIAlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocXJ5LCBl bmNuYW1lLCBBSCk7CkBAIC0zMDMzLDkgKzMwMjcsOCBAQCBkdW1wU3RkU3RyaW5ncyhBcmNo aXZlICpBSCkKIAljb25zdCBjaGFyICpzdGRzdHJpbmdzID0gQUgtPnN0ZF9zdHJpbmdzID8g Im9uIiA6ICJvZmYiOwogCVBRRXhwQnVmZmVyIHFyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7 CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInNhdmluZyBzdGFuZGFy ZF9jb25mb3JtaW5nX3N0cmluZ3MgPSAlc1xuIiwKLQkJCQkgIHN0ZHN0cmluZ3MpOworCXBn X2xvZ19pbmZvKCJzYXZpbmcgc3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmdzID0gJXMiLAor CQkJCXN0ZHN0cmluZ3MpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXIocXJ5LCAiU0VUIHN0YW5k YXJkX2NvbmZvcm1pbmdfc3RyaW5ncyA9ICclcyc7XG4iLAogCQkJCQkgIHN0ZHN0cmluZ3Mp OwpAQCAtMzA3NCw3ICszMDY3LDcgQEAgZHVtcFNlYXJjaFBhdGgoQXJjaGl2ZSAqQUgpCiAJ CQkJCQkJCQkgICJTRUxFQ1QgcGdfY2F0YWxvZy5jdXJyZW50X3NjaGVtYXMoZmFsc2UpIik7 CiAKIAlpZiAoIXBhcnNlUEdBcnJheShQUWdldHZhbHVlKHJlcywgMCwgMCksICZzY2hlbWFu YW1lcywgJm5zY2hlbWFuYW1lcykpCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwgImNvdWxkIG5v dCBwYXJzZSByZXN1bHQgb2YgY3VycmVudF9zY2hlbWFzKClcbiIpOworCQlmYXRhbCgiY291 bGQgbm90IHBhcnNlIHJlc3VsdCBvZiBjdXJyZW50X3NjaGVtYXMoKSIpOwogCiAJLyoKIAkg KiBXZSB1c2Ugc2V0X2NvbmZpZygpLCBub3QgYSBzaW1wbGUgIlNFVCBzZWFyY2hfcGF0aCIg Y29tbWFuZCwgYmVjYXVzZQpAQCAtMzA5Myw4ICszMDg2LDcgQEAgZHVtcFNlYXJjaFBhdGgo QXJjaGl2ZSAqQUgpCiAJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHFyeSwgcGF0aC0+ZGF0YSwg QUgpOwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHFyeSwgIiwgZmFsc2UpO1xuIik7CiAKLQlp ZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInNhdmluZyBzZWFyY2hfcGF0aCA9 ICVzXG4iLCBwYXRoLT5kYXRhKTsKKwlwZ19sb2dfaW5mbygic2F2aW5nIHNlYXJjaF9wYXRo ID0gJXMiLCBwYXRoLT5kYXRhKTsKIAogCUFyY2hpdmVFbnRyeShBSCwgbmlsQ2F0YWxvZ0lk LCBjcmVhdGVEdW1wSWQoKSwKIAkJCQkgIlNFQVJDSFBBVEgiLCBOVUxMLCBOVUxMLCAiIiwK QEAgLTMxMzUsOSArMzEyNyw3IEBAIGdldEJsb2JzKEFyY2hpdmUgKmZvdXQpCiAJaW50CQkJ aV9pbml0bG9tYWNsOwogCWludAkJCWlfaW5pdHJsb21hY2w7CiAKLQkvKiBWZXJib3NlIG1l c3NhZ2UgKi8KLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcg bGFyZ2Ugb2JqZWN0c1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgbGFyZ2Ugb2JqZWN0 cyIpOwogCiAJLyogRmV0Y2ggQkxPQiBPSURzLCBhbmQgb3duZXIvQUNMIGRhdGEgaWYgPj0g OS4wICovCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gOTA2MDApCkBAIC0zMzIwLDgg KzMzMTAsNyBAQCBkdW1wQmxvYnMoQXJjaGl2ZSAqZm91dCwgdm9pZCAqYXJnKQogCWludAkJ CWk7CiAJaW50CQkJY250OwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEws ICJzYXZpbmcgbGFyZ2Ugb2JqZWN0c1xuIik7CisJcGdfbG9nX2luZm8oInNhdmluZyBsYXJn ZSBvYmplY3RzIik7CiAKIAkvKgogCSAqIEN1cnJlbnRseSwgd2UgcmUtZmV0Y2ggYWxsIEJM T0IgT0lEcyB1c2luZyBhIGN1cnNvci4gIENvbnNpZGVyIHNjYW5uaW5nCkBAIC0zMzU3LDcg KzMzNDYsNyBAQCBkdW1wQmxvYnMoQXJjaGl2ZSAqZm91dCwgdm9pZCAqYXJnKQogCQkJLyog T3BlbiB0aGUgQkxPQiAqLwogCQkJbG9GZCA9IGxvX29wZW4oY29ubiwgYmxvYk9pZCwgSU5W X1JFQUQpOwogCQkJaWYgKGxvRmQgPT0gLTEpCi0JCQkJZXhpdF9ob3JyaWJseShOVUxMLCAi Y291bGQgbm90IG9wZW4gbGFyZ2Ugb2JqZWN0ICV1OiAlcyIsCisJCQkJZmF0YWwoImNvdWxk IG5vdCBvcGVuIGxhcmdlIG9iamVjdCAldTogJXMiLAogCQkJCQkJCSAgYmxvYk9pZCwgUFFl cnJvck1lc3NhZ2UoY29ubikpOwogCiAJCQlTdGFydEJsb2IoZm91dCwgYmxvYk9pZCk7CkBA IC0zMzY3LDcgKzMzNTYsNyBAQCBkdW1wQmxvYnMoQXJjaGl2ZSAqZm91dCwgdm9pZCAqYXJn KQogCQkJewogCQkJCWNudCA9IGxvX3JlYWQoY29ubiwgbG9GZCwgYnVmLCBMT0JCVUZTSVpF KTsKIAkJCQlpZiAoY250IDwgMCkKLQkJCQkJZXhpdF9ob3JyaWJseShOVUxMLCAiZXJyb3Ig cmVhZGluZyBsYXJnZSBvYmplY3QgJXU6ICVzIiwKKwkJCQkJZmF0YWwoImVycm9yIHJlYWRp bmcgbGFyZ2Ugb2JqZWN0ICV1OiAlcyIsCiAJCQkJCQkJCSAgYmxvYk9pZCwgUFFlcnJvck1l c3NhZ2UoY29ubikpOwogCiAJCQkJV3JpdGVEYXRhKGZvdXQsIGJ1ZiwgY250KTsKQEAgLTM0 MTksMTAgKzM0MDgsOSBAQCBnZXRQb2xpY2llcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8g dGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQlpZiAoISh0YmluZm8tPmRvYmouZHVtcCAm IERVTVBfQ09NUE9ORU5UX1BPTElDWSkpCiAJCQljb250aW51ZTsKIAotCQlpZiAoZ192ZXJi b3NlKQotCQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHJvdyBzZWN1cml0eSBlbmFibGVk IGZvciB0YWJsZSBcIiVzLiVzXCJcbiIsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWVzcGFj ZS0+ZG9iai5uYW1lLAotCQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lKTsKKwkJcGdfbG9nX2lu Zm8oInJlYWRpbmcgcm93IHNlY3VyaXR5IGVuYWJsZWQgZm9yIHRhYmxlIFwiJXMuJXNcIiIs CisJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJdGJpbmZv LT5kb2JqLm5hbWUpOwogCiAJCS8qCiAJCSAqIEdldCByb3cgc2VjdXJpdHkgZW5hYmxlZCBp bmZvcm1hdGlvbiBmb3IgdGhlIHRhYmxlLiBXZSByZXByZXNlbnQKQEAgLTM0NTEsMTAgKzM0 MzksOSBAQCBnZXRQb2xpY2llcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1td LCBpbnQgbnVtVGFibGVzKQogCQkJcG9saW5mby0+cG9sd2l0aGNoZWNrID0gTlVMTDsKIAkJ fQogCi0JCWlmIChnX3ZlcmJvc2UpCi0JCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgcG9s aWNpZXMgZm9yIHRhYmxlIFwiJXMuJXNcIlxuIiwKLQkJCQkJICB0YmluZm8tPmRvYmoubmFt ZXNwYWNlLT5kb2JqLm5hbWUsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOworCQlwZ19s b2dfaW5mbygicmVhZGluZyBwb2xpY2llcyBmb3IgdGFibGUgXCIlcy4lc1wiIiwKKwkJCQkJ dGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAorCQkJCQl0YmluZm8tPmRvYmou bmFtZSk7CiAKIAkJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CiAKQEAgLTM2MDIsNyArMzU4 OSw3IEBAIGR1bXBQb2xpY3koQXJjaGl2ZSAqZm91dCwgUG9saWN5SW5mbyAqcG9saW5mbykK IAkJY21kID0gIiBGT1IgREVMRVRFIjsKIAllbHNlCiAJewotCQl3cml0ZV9tc2coTlVMTCwg InVuZXhwZWN0ZWQgcG9saWN5IGNvbW1hbmQgdHlwZTogJWNcbiIsCisJCXBnX2xvZ19lcnJv cigidW5leHBlY3RlZCBwb2xpY3kgY29tbWFuZCB0eXBlOiAlYyIsCiAJCQkJICBwb2xpbmZv LT5wb2xjbWQpOwogCQlleGl0X25pY2VseSgxKTsKIAl9CkBAIC0zNzMwLDcgKzM3MTcsNyBA QCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJCShzdHJjbXAoUFFnZXR2YWx1 ZShyZXMsIGksIGlfcHVidHJ1bmNhdGUpLCAidCIpID09IDApOwogCiAJCWlmIChzdHJsZW4o cHViaW5mb1tpXS5yb2xuYW1lKSA9PSAwKQotCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5H OiBvd25lciBvZiBwdWJsaWNhdGlvbiBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkXG4i LAorCQkJcGdfbG9nX3dhcm5pbmcoIm93bmVyIG9mIHB1YmxpY2F0aW9uIFwiJXNcIiBhcHBl YXJzIHRvIGJlIGludmFsaWQiLAogCQkJCQkgIHB1YmluZm9baV0uZG9iai5uYW1lKTsKIAog CQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KQEAgLTM4NjksMTAg KzM4NTYsOSBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQlpZiAoISh0YmluZm8tPmRvYmouZHVt cCAmIERVTVBfQ09NUE9ORU5UX0RFRklOSVRJT04pKQogCQkJY29udGludWU7CiAKLQkJaWYg KGdfdmVyYm9zZSkKLQkJCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBwdWJsaWNhdGlvbiBt ZW1iZXJzaGlwIGZvciB0YWJsZSBcIiVzLiVzXCJcbiIsCi0JCQkJCSAgdGJpbmZvLT5kb2Jq Lm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lKTsKKwkJ cGdfbG9nX2luZm8oInJlYWRpbmcgcHVibGljYXRpb24gbWVtYmVyc2hpcCBmb3IgdGFibGUg XCIlcy4lc1wiIiwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAor CQkJCQl0YmluZm8tPmRvYmoubmFtZSk7CiAKIAkJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7 CiAKQEAgLTQwMTYsNyArNDAwMiw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91 dCkKIAkJCQkJCQkgIFBHUkVTX1RVUExFU19PSyk7CiAJCW4gPSBhdG9pKFBRZ2V0dmFsdWUo cmVzLCAwLCAwKSk7CiAJCWlmIChuID4gMCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklO Rzogc3Vic2NyaXB0aW9ucyBub3QgZHVtcGVkIGJlY2F1c2UgY3VycmVudCB1c2VyIGlzIG5v dCBhIHN1cGVydXNlclxuIik7CisJCQlwZ19sb2dfd2FybmluZygic3Vic2NyaXB0aW9ucyBu b3QgZHVtcGVkIGJlY2F1c2UgY3VycmVudCB1c2VyIGlzIG5vdCBhIHN1cGVydXNlciIpOwog CQlQUWNsZWFyKHJlcyk7CiAJCXJldHVybjsKIAl9CkBAIC00MDcwLDcgKzQwNTYsNyBAQCBn ZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCQlwZ19zdHJkdXAoUFFnZXR2YWx1 ZShyZXMsIGksIGlfc3VicHVibGljYXRpb25zKSk7CiAKIAkJaWYgKHN0cmxlbihzdWJpbmZv W2ldLnJvbG5hbWUpID09IDApCi0JCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IG93bmVy IG9mIHN1YnNjcmlwdGlvbiBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkXG4iLAorCQkJ cGdfbG9nX3dhcm5pbmcoIm93bmVyIG9mIHN1YnNjcmlwdGlvbiBcIiVzXCIgYXBwZWFycyB0 byBiZSBpbnZhbGlkIiwKIAkJCQkJICBzdWJpbmZvW2ldLmRvYmoubmFtZSk7CiAKIAkJLyog RGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCkBAIC00MTE0LDggKzQxMDAs NyBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIFN1YnNjcmlwdGlvbkluZm8g KnN1YmluZm8pCiAJLyogQnVpbGQgbGlzdCBvZiBxdW90ZWQgcHVibGljYXRpb25zIGFuZCBh cHBlbmQgdGhlbSB0byBxdWVyeS4gKi8KIAlpZiAoIXBhcnNlUEdBcnJheShzdWJpbmZvLT5z dWJwdWJsaWNhdGlvbnMsICZwdWJuYW1lcywgJm5wdWJuYW1lcykpCiAJewotCQl3cml0ZV9t c2coTlVMTCwKLQkJCQkgICJXQVJOSU5HOiBjb3VsZCBub3QgcGFyc2Ugc3VicHVibGljYXRp b25zIGFycmF5XG4iKTsKKwkJcGdfbG9nX3dhcm5pbmcoImNvdWxkIG5vdCBwYXJzZSBzdWJw dWJsaWNhdGlvbnMgYXJyYXkiKTsKIAkJaWYgKHB1Ym5hbWVzKQogCQkJZnJlZShwdWJuYW1l cyk7CiAJCXB1Ym5hbWVzID0gTlVMTDsKQEAgLTQzODMsNyArNDM2OCw3IEBAIGJpbmFyeV91 cGdyYWRlX2V4dGVuc2lvbl9tZW1iZXIoUFFFeHBCdWZmZXIgdXBncmFkZV9idWZmZXIsCiAJ CWV4dG9iaiA9IE5VTEw7CiAJfQogCWlmIChleHRvYmogPT0gTlVMTCkKLQkJZXhpdF9ob3Jy aWJseShOVUxMLCAiY291bGQgbm90IGZpbmQgcGFyZW50IGV4dGVuc2lvbiBmb3IgJXMgJXNc biIsCisJCWZhdGFsKCJjb3VsZCBub3QgZmluZCBwYXJlbnQgZXh0ZW5zaW9uIGZvciAlcyAl cyIsCiAJCQkJCSAgb2JqdHlwZSwgb2JqbmFtZSk7CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0 cih1cGdyYWRlX2J1ZmZlciwKQEAgLTQ1MTUsNyArNDUwMCw3IEBAIGdldE5hbWVzcGFjZXMo QXJjaGl2ZSAqZm91dCwgaW50ICpudW1OYW1lc3BhY2VzKQogCQkJbnNpbmZvW2ldLmRvYmou ZHVtcCAmPSB+RFVNUF9DT01QT05FTlRfQUNMOwogCiAJCWlmIChzdHJsZW4obnNpbmZvW2ld LnJvbG5hbWUpID09IDApCi0JCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IG93bmVyIG9m IHNjaGVtYSBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkXG4iLAorCQkJcGdfbG9nX3dh cm5pbmcoIm93bmVyIG9mIHNjaGVtYSBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkIiwK IAkJCQkJICBuc2luZm9baV0uZG9iai5uYW1lKTsKIAl9CiAKQEAgLTQ1MzgsNyArNDUyMyw3 IEBAIGZpbmROYW1lc3BhY2UoQXJjaGl2ZSAqZm91dCwgT2lkIG5zb2lkKQogCiAJbnNpbmZv ID0gZmluZE5hbWVzcGFjZUJ5T2lkKG5zb2lkKTsKIAlpZiAobnNpbmZvID09IE5VTEwpCi0J CWV4aXRfaG9ycmlibHkoTlVMTCwgInNjaGVtYSB3aXRoIE9JRCAldSBkb2VzIG5vdCBleGlz dFxuIiwgbnNvaWQpOworCQlmYXRhbCgic2NoZW1hIHdpdGggT0lEICV1IGRvZXMgbm90IGV4 aXN0IiwgbnNvaWQpOwogCXJldHVybiBuc2luZm87CiB9CiAKQEAgLTQ4NjMsNyArNDg0OCw3 IEBAIGdldFR5cGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVHlwZXMpCiAJCX0KIAogCQlp ZiAoc3RybGVuKHR5aW5mb1tpXS5yb2xuYW1lKSA9PSAwKQotCQkJd3JpdGVfbXNnKE5VTEws ICJXQVJOSU5HOiBvd25lciBvZiBkYXRhIHR5cGUgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52 YWxpZFxuIiwKKwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBvZiBkYXRhIHR5cGUgXCIlc1wi IGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAgdHlpbmZvW2ldLmRvYmoubmFtZSk7 CiAJfQogCkBAIC00OTQ4LDcgKzQ5MzMsNyBAQCBnZXRPcGVyYXRvcnMoQXJjaGl2ZSAqZm91 dCwgaW50ICpudW1PcHJzKQogCQlvcHJpbmZvW2ldLmRvYmouZHVtcCAmPSB+RFVNUF9DT01Q T05FTlRfQUNMOwogCiAJCWlmIChzdHJsZW4ob3ByaW5mb1tpXS5yb2xuYW1lKSA9PSAwKQot CQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBvd25lciBvZiBvcGVyYXRvciBcIiVzXCIg YXBwZWFycyB0byBiZSBpbnZhbGlkXG4iLAorCQkJcGdfbG9nX3dhcm5pbmcoIm93bmVyIG9m IG9wZXJhdG9yIFwiJXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWQiLAogCQkJCQkgIG9wcmlu Zm9baV0uZG9iai5uYW1lKTsKIAl9CiAKQEAgLTUyNTAsNyArNTIzNSw3IEBAIGdldE9wY2xh c3NlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bU9wY2xhc3NlcykKIAkJb3BjaW5mb1tpXS5k b2JqLmR1bXAgJj0gfkRVTVBfQ09NUE9ORU5UX0FDTDsKIAogCQlpZiAoc3RybGVuKG9wY2lu Zm9baV0ucm9sbmFtZSkgPT0gMCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogb3du ZXIgb2Ygb3BlcmF0b3IgY2xhc3MgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZFxuIiwK KwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBvZiBvcGVyYXRvciBjbGFzcyBcIiVzXCIgYXBw ZWFycyB0byBiZSBpbnZhbGlkIiwKIAkJCQkJICBvcGNpbmZvW2ldLmRvYmoubmFtZSk7CiAJ fQogCkBAIC01MzM0LDcgKzUzMTksNyBAQCBnZXRPcGZhbWlsaWVzKEFyY2hpdmUgKmZvdXQs IGludCAqbnVtT3BmYW1pbGllcykKIAkJb3BmaW5mb1tpXS5kb2JqLmR1bXAgJj0gfkRVTVBf Q09NUE9ORU5UX0FDTDsKIAogCQlpZiAoc3RybGVuKG9wZmluZm9baV0ucm9sbmFtZSkgPT0g MCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogb3duZXIgb2Ygb3BlcmF0b3IgZmFt aWx5IFwiJXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQlwZ19sb2dfd2Fybmlu Zygib3duZXIgb2Ygb3BlcmF0b3IgZmFtaWx5IFwiJXNcIiBhcHBlYXJzIHRvIGJlIGludmFs aWQiLAogCQkJCQkgIG9wZmluZm9baV0uZG9iai5uYW1lKTsKIAl9CiAKQEAgLTU1MDMsNyAr NTQ4OCw3IEBAIGdldEFnZ3JlZ2F0ZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1BZ2dzKQog CQkJCQkJICBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfYWdnbmFtZXNwYWNlKSkpOwog CQlhZ2dpbmZvW2ldLmFnZ2ZuLnJvbG5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMs IGksIGlfcm9sbmFtZSkpOwogCQlpZiAoc3RybGVuKGFnZ2luZm9baV0uYWdnZm4ucm9sbmFt ZSkgPT0gMCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogb3duZXIgb2YgYWdncmVn YXRlIGZ1bmN0aW9uIFwiJXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQlwZ19s b2dfd2FybmluZygib3duZXIgb2YgYWdncmVnYXRlIGZ1bmN0aW9uIFwiJXNcIiBhcHBlYXJz IHRvIGJlIGludmFsaWQiLAogCQkJCQkgIGFnZ2luZm9baV0uYWdnZm4uZG9iai5uYW1lKTsK IAkJYWdnaW5mb1tpXS5hZ2dmbi5sYW5nID0gSW52YWxpZE9pZDsgLyogbm90IGN1cnJlbnRs eSBpbnRlcmVzdGluZyAqLwogCQlhZ2dpbmZvW2ldLmFnZ2ZuLnByb3JldHR5cGUgPSBJbnZh bGlkT2lkOwkvKiBub3Qgc2F2ZWQgKi8KQEAgLTU3NjMsOCArNTc0OCw3IEBAIGdldEZ1bmNz KEFyY2hpdmUgKmZvdXQsIGludCAqbnVtRnVuY3MpCiAJCQlmaW5mb1tpXS5kb2JqLmR1bXAg Jj0gfkRVTVBfQ09NUE9ORU5UX0FDTDsKIAogCQlpZiAoc3RybGVuKGZpbmZvW2ldLnJvbG5h bWUpID09IDApCi0JCQl3cml0ZV9tc2coTlVMTCwKLQkJCQkJICAiV0FSTklORzogb3duZXIg b2YgZnVuY3Rpb24gXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZFxuIiwKKwkJCXBnX2xv Z193YXJuaW5nKCJvd25lciBvZiBmdW5jdGlvbiBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZh bGlkIiwKIAkJCQkJICBmaW5mb1tpXS5kb2JqLm5hbWUpOwogCX0KIApAQCAtNjU0OCw3ICs2 NTMyLDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCiAJ CS8qIEVtaXQgbm90aWNlIGlmIGpvaW4gZm9yIG93bmVyIGZhaWxlZCAqLwogCQlpZiAoc3Ry bGVuKHRibGluZm9baV0ucm9sbmFtZSkgPT0gMCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FS TklORzogb3duZXIgb2YgdGFibGUgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZFxuIiwK KwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBvZiB0YWJsZSBcIiVzXCIgYXBwZWFycyB0byBi ZSBpbnZhbGlkIiwKIAkJCQkJICB0YmxpbmZvW2ldLmRvYmoubmFtZSk7CiAJfQogCkBAIC02 NTkwLDcgKzY1NzQsNyBAQCBnZXRPd25lZFNlcXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZv IHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAogCQlvd25pbmdfdGFiID0gZmluZFRhYmxl QnlPaWQoc2VxaW5mby0+b3duaW5nX3RhYik7CiAJCWlmIChvd25pbmdfdGFiID09IE5VTEwp Ci0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJmYWlsZWQgc2FuaXR5IGNoZWNrLCBwYXJlbnQg dGFibGUgd2l0aCBPSUQgJXUgb2Ygc2VxdWVuY2Ugd2l0aCBPSUQgJXUgbm90IGZvdW5kXG4i LAorCQkJZmF0YWwoImZhaWxlZCBzYW5pdHkgY2hlY2ssIHBhcmVudCB0YWJsZSB3aXRoIE9J RCAldSBvZiBzZXF1ZW5jZSB3aXRoIE9JRCAldSBub3QgZm91bmQiLAogCQkJCQkJICBzZXFp bmZvLT5vd25pbmdfdGFiLCBzZXFpbmZvLT5kb2JqLmNhdElkLm9pZCk7CiAKIAkJLyoKQEAg LTY3MzQsMTAgKzY3MTgsOSBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkhdGJpbmZvLT5pbnRlcmVzdGluZykK IAkJCWNvbnRpbnVlOwogCi0JCWlmIChnX3ZlcmJvc2UpCi0JCQl3cml0ZV9tc2coTlVMTCwg InJlYWRpbmcgaW5kZXhlcyBmb3IgdGFibGUgXCIlcy4lc1wiXG4iLAotCQkJCQkgIHRiaW5m by0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKLQkJCQkJICB0YmluZm8tPmRvYmoubmFt ZSk7CisJCXBnX2xvZ19pbmZvKCJyZWFkaW5nIGluZGV4ZXMgZm9yIHRhYmxlIFwiJXMuJXNc IiIsCisJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJdGJp bmZvLT5kb2JqLm5hbWUpOwogCiAJCS8qCiAJCSAqIFRoZSBwb2ludCBvZiB0aGUgbWVzc3kt bG9va2luZyBvdXRlciBqb2luIGlzIHRvIGZpbmQgYSBjb25zdHJhaW50CkBAIC03MTM2LDEw ICs3MTE5LDkgQEAgZ2V0Q29uc3RyYWludHMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRi bGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCSEodGJpbmZvLT5kb2JqLmR1bXAgJiBEVU1Q X0NPTVBPTkVOVF9ERUZJTklUSU9OKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChnX3ZlcmJv c2UpCi0JCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgZm9yZWlnbiBrZXkgY29uc3RyYWlu dHMgZm9yIHRhYmxlIFwiJXMuJXNcIlxuIiwKLQkJCQkJICB0YmluZm8tPmRvYmoubmFtZXNw YWNlLT5kb2JqLm5hbWUsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOworCQlwZ19sb2df aW5mbygicmVhZGluZyBmb3JlaWduIGtleSBjb25zdHJhaW50cyBmb3IgdGFibGUgXCIlcy4l c1wiIiwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAorCQkJCQl0 YmluZm8tPmRvYmoubmFtZSk7CiAKIAkJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CiAJCWlm IChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDExMDAwMCkKQEAgLTczNTYsNyArNzMzOCw3IEBA IGdldFJ1bGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUnVsZXMpCiAJCXJ1bGV0YWJsZW9p ZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9ydWxldGFibGUpKTsKIAkJcnVsZWlu Zm9baV0ucnVsZXRhYmxlID0gZmluZFRhYmxlQnlPaWQocnVsZXRhYmxlb2lkKTsKIAkJaWYg KHJ1bGVpbmZvW2ldLnJ1bGV0YWJsZSA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShOVUxM LCAiZmFpbGVkIHNhbml0eSBjaGVjaywgcGFyZW50IHRhYmxlIHdpdGggT0lEICV1IG9mIHBn X3Jld3JpdGUgZW50cnkgd2l0aCBPSUQgJXUgbm90IGZvdW5kXG4iLAorCQkJZmF0YWwoImZh aWxlZCBzYW5pdHkgY2hlY2ssIHBhcmVudCB0YWJsZSB3aXRoIE9JRCAldSBvZiBwZ19yZXdy aXRlIGVudHJ5IHdpdGggT0lEICV1IG5vdCBmb3VuZCIsCiAJCQkJCQkgIHJ1bGV0YWJsZW9p ZCwgcnVsZWluZm9baV0uZG9iai5jYXRJZC5vaWQpOwogCQlydWxlaW5mb1tpXS5kb2JqLm5h bWVzcGFjZSA9IHJ1bGVpbmZvW2ldLnJ1bGV0YWJsZS0+ZG9iai5uYW1lc3BhY2U7CiAJCXJ1 bGVpbmZvW2ldLmRvYmouZHVtcCA9IHJ1bGVpbmZvW2ldLnJ1bGV0YWJsZS0+ZG9iai5kdW1w OwpAQCAtNzQzOSwxMCArNzQyMSw5IEBAIGdldFRyaWdnZXJzKEFyY2hpdmUgKmZvdXQsIFRh YmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkhKHRiaW5mby0+ZG9iai5k dW1wICYgRFVNUF9DT01QT05FTlRfREVGSU5JVElPTikpCiAJCQljb250aW51ZTsKIAotCQlp ZiAoZ192ZXJib3NlKQotCQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHRyaWdnZXJzIGZv ciB0YWJsZSBcIiVzLiVzXCJcbiIsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ ZG9iai5uYW1lLAotCQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lKTsKKwkJcGdfbG9nX2luZm8o InJlYWRpbmcgdHJpZ2dlcnMgZm9yIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCXRiaW5mby0+ ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOwog CiAJCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lv biA+PSA5MDAwMCkKQEAgLTc1NzMsNyArNzU1NCw3IEBAIGdldFRyaWdnZXJzKEFyY2hpdmUg KmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJCWlmIChP aWRJc1ZhbGlkKHRnaW5mb1tqXS50Z2NvbnN0cnJlbGlkKSkKIAkJCQkJewogCQkJCQkJaWYg KFBRZ2V0aXNudWxsKHJlcywgaiwgaV90Z2NvbnN0cnJlbG5hbWUpKQotCQkJCQkJCWV4aXRf aG9ycmlibHkoTlVMTCwgInF1ZXJ5IHByb2R1Y2VkIG51bGwgcmVmZXJlbmNlZCB0YWJsZSBu YW1lIGZvciBmb3JlaWduIGtleSB0cmlnZ2VyIFwiJXNcIiBvbiB0YWJsZSBcIiVzXCIgKE9J RCBvZiB0YWJsZTogJXUpXG4iLAorCQkJCQkJCWZhdGFsKCJxdWVyeSBwcm9kdWNlZCBudWxs IHJlZmVyZW5jZWQgdGFibGUgbmFtZSBmb3IgZm9yZWlnbiBrZXkgdHJpZ2dlciBcIiVzXCIg b24gdGFibGUgXCIlc1wiIChPSUQgb2YgdGFibGU6ICV1KSIsCiAJCQkJCQkJCQkJICB0Z2lu Zm9bal0uZG9iai5uYW1lLAogCQkJCQkJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUsCiAJCQkJ CQkJCQkJICB0Z2luZm9bal0udGdjb25zdHJyZWxpZCk7CkBAIC04MTI3LDEwICs4MTA4LDkg QEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGlu dCBudW1UYWJsZXMpCiAJCSAqIHdlIG11c3QgcmVhZCB0aGUgYXR0cmlidXRlIG5hbWVzIGlu IGF0dHJpYnV0ZSBudW1iZXIgb3JkZXIhIGJlY2F1c2UKIAkJICogd2Ugd2lsbCB1c2UgdGhl IGF0dG51bSB0byBpbmRleCBpbnRvIHRoZSBhdHRuYW1lcyBhcnJheSBsYXRlci4KIAkJICov Ci0JCWlmIChnX3ZlcmJvc2UpCi0JCQl3cml0ZV9tc2coTlVMTCwgImZpbmRpbmcgdGhlIGNv bHVtbnMgYW5kIHR5cGVzIG9mIHRhYmxlIFwiJXMuJXNcIlxuIiwKLQkJCQkJICB0YmluZm8t PmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUp OworCQlwZ19sb2dfaW5mbygiZmluZGluZyB0aGUgY29sdW1ucyBhbmQgdHlwZXMgb2YgdGFi bGUgXCIlcy4lc1wiIiwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1l LAorCQkJCQl0YmluZm8tPmRvYmoubmFtZSk7CiAKIAkJcmVzZXRQUUV4cEJ1ZmZlcihxKTsK IApAQCAtODI1NSw4ICs4MjM1LDcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCWZvciAoaiA9IDA7IGogPCBu dHVwczsgaisrKQogCQl7CiAJCQlpZiAoaiArIDEgIT0gYXRvaShQUWdldHZhbHVlKHJlcywg aiwgaV9hdHRudW0pKSkKLQkJCQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJCQkJICAiaW52 YWxpZCBjb2x1bW4gbnVtYmVyaW5nIGluIHRhYmxlIFwiJXNcIlxuIiwKKwkJCQlmYXRhbCgi aW52YWxpZCBjb2x1bW4gbnVtYmVyaW5nIGluIHRhYmxlIFwiJXNcIiIsCiAJCQkJCQkJICB0 YmluZm8tPmRvYmoubmFtZSk7CiAJCQl0YmluZm8tPmF0dG5hbWVzW2pdID0gcGdfc3RyZHVw KFBRZ2V0dmFsdWUocmVzLCBqLCBpX2F0dG5hbWUpKTsKIAkJCXRiaW5mby0+YXR0dHlwbmFt ZXNbal0gPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIGlfYXR0dHlwbmFtZSkpOwpA QCAtODI5MiwxMCArODI3MSw5IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFi bGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJQXR0ckRlZkluZm8gKmF0dHJk ZWZzOwogCQkJaW50CQkJbnVtRGVmYXVsdHM7CiAKLQkJCWlmIChnX3ZlcmJvc2UpCi0JCQkJ d3JpdGVfbXNnKE5VTEwsICJmaW5kaW5nIGRlZmF1bHQgZXhwcmVzc2lvbnMgb2YgdGFibGUg XCIlcy4lc1wiXG4iLAotCQkJCQkJICB0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5h bWUsCi0JCQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lKTsKKwkJCXBnX2xvZ19pbmZvKCJmaW5k aW5nIGRlZmF1bHQgZXhwcmVzc2lvbnMgb2YgdGFibGUgXCIlcy4lc1wiIiwKKwkJCQkJCXRi aW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCXRiaW5mby0+ZG9iai5u YW1lKTsKIAogCQkJcHJpbnRmUFFFeHBCdWZmZXIocSwgIlNFTEVDVCB0YWJsZW9pZCwgb2lk LCBhZG51bSwgIgogCQkJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYWRiaW4sIGFk cmVsaWQpIEFTIGFkc3JjICIKQEAgLTgzMTUsOCArODI5Myw3IEBAIGdldFRhYmxlQXR0cnMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJ CWFkbnVtID0gYXRvaShQUWdldHZhbHVlKHJlcywgaiwgMikpOwogCiAJCQkJaWYgKGFkbnVt IDw9IDAgfHwgYWRudW0gPiBudHVwcykKLQkJCQkJZXhpdF9ob3JyaWJseShOVUxMLAotCQkJ CQkJCQkgICJpbnZhbGlkIGFkbnVtIHZhbHVlICVkIGZvciB0YWJsZSBcIiVzXCJcbiIsCisJ CQkJCWZhdGFsKCJpbnZhbGlkIGFkbnVtIHZhbHVlICVkIGZvciB0YWJsZSBcIiVzXCIiLAog CQkJCQkJCQkgIGFkbnVtLCB0YmluZm8tPmRvYmoubmFtZSk7CiAKIAkJCQkvKgpAQCAtODM4 MSwxMCArODM1OCw5IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZv ICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJQ29uc3RyYWludEluZm8gKmNvbnN0cnM7 CiAJCQlpbnQJCQludW1Db25zdHJzOwogCi0JCQlpZiAoZ192ZXJib3NlKQotCQkJCXdyaXRl X21zZyhOVUxMLCAiZmluZGluZyBjaGVjayBjb25zdHJhaW50cyBmb3IgdGFibGUgXCIlcy4l c1wiXG4iLAotCQkJCQkJICB0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsCi0J CQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lKTsKKwkJCXBnX2xvZ19pbmZvKCJmaW5kaW5nIGNo ZWNrIGNvbnN0cmFpbnRzIGZvciB0YWJsZSBcIiVzLiVzXCIiLAorCQkJCQkJdGJpbmZvLT5k b2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAorCQkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOwog CiAJCQlyZXNldFBRRXhwQnVmZmVyKHEpOwogCQkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24g Pj0gOTAyMDApCkBAIC04NDMxLDExICs4NDA3LDExIEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJbnVtQ29u c3RycyA9IFBRbnR1cGxlcyhyZXMpOwogCQkJaWYgKG51bUNvbnN0cnMgIT0gdGJpbmZvLT5u Y2hlY2spCiAJCQl7Ci0JCQkJd3JpdGVfbXNnKE5VTEwsIG5nZXR0ZXh0KCJleHBlY3RlZCAl ZCBjaGVjayBjb25zdHJhaW50IG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWRcbiIsCi0J CQkJCQkJCQkJICJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50cyBvbiB0YWJsZSBcIiVz XCIgYnV0IGZvdW5kICVkXG4iLAotCQkJCQkJCQkJCSB0YmluZm8tPm5jaGVjayksCisJCQkJ cGdfbG9nX2Vycm9yKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50IG9u IHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAorCQkJCQkJCQkJICAiZXhwZWN0ZWQgJWQg Y2hlY2sgY29uc3RyYWludHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJ CQkJCQkgIHRiaW5mby0+bmNoZWNrKSwKIAkJCQkJCSAgdGJpbmZvLT5uY2hlY2ssIHRiaW5m by0+ZG9iai5uYW1lLCBudW1Db25zdHJzKTsKLQkJCQl3cml0ZV9tc2coTlVMTCwgIihUaGUg c3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4pXG4iKTsKKwkJCQlwZ19sb2df ZXJyb3IoIihUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4pIik7CiAJ CQkJZXhpdF9uaWNlbHkoMSk7CiAJCQl9CiAKQEAgLTEwMDEwLDcgKzk5ODYsNyBAQCBkdW1w VHlwZShBcmNoaXZlICpmb3V0LCBUeXBlSW5mbyAqdHlpbmZvKQogCWVsc2UgaWYgKHR5aW5m by0+dHlwdHlwZSA9PSBUWVBUWVBFX1BTRVVETyAmJiAhdHlpbmZvLT5pc0RlZmluZWQpCiAJ CWR1bXBVbmRlZmluZWRUeXBlKGZvdXQsIHR5aW5mbyk7CiAJZWxzZQotCQl3cml0ZV9tc2co TlVMTCwgIldBUk5JTkc6IHR5cHR5cGUgb2YgZGF0YSB0eXBlIFwiJXNcIiBhcHBlYXJzIHRv IGJlIGludmFsaWRcbiIsCisJCXBnX2xvZ193YXJuaW5nKCJ0eXB0eXBlIG9mIGRhdGEgdHlw ZSBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkIiwKIAkJCQkgIHR5aW5mby0+ZG9iai5u YW1lKTsKIH0KIApAQCAtMTEzNzAsNyArMTEzNDYsNyBAQCBmb3JtYXRfZnVuY3Rpb25fYXJn dW1lbnRzX29sZChBcmNoaXZlICpmb3V0LAogCQkJCQlhcmdtb2RlID0gIklOT1VUICI7CiAJ CQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6Ci0JCQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklO RzogYm9ndXMgdmFsdWUgaW4gcHJvYXJnbW9kZXMgYXJyYXlcbiIpOworCQkJCQlwZ19sb2df d2FybmluZygiYm9ndXMgdmFsdWUgaW4gcHJvYXJnbW9kZXMgYXJyYXkiKTsKIAkJCQkJYXJn bW9kZSA9ICIiOwogCQkJCQlicmVhazsKIAkJCX0KQEAgLTExNzE1LDcgKzExNjkxLDcgQEAg ZHVtcEZ1bmMoQXJjaGl2ZSAqZm91dCwgRnVuY0luZm8gKmZpbmZvKQogCQlpZiAoIXBhcnNl UEdBcnJheShwcm9hbGxhcmd0eXBlcywgJmFsbGFyZ3R5cGVzLCAmbml0ZW1zKSB8fAogCQkJ bml0ZW1zIDwgZmluZm8tPm5hcmdzKQogCQl7Ci0JCQl3cml0ZV9tc2coTlVMTCwgIldBUk5J Tkc6IGNvdWxkIG5vdCBwYXJzZSBwcm9hbGxhcmd0eXBlcyBhcnJheVxuIik7CisJCQlwZ19s b2dfd2FybmluZygiY291bGQgbm90IHBhcnNlIHByb2FsbGFyZ3R5cGVzIGFycmF5Iik7CiAJ CQlpZiAoYWxsYXJndHlwZXMpCiAJCQkJZnJlZShhbGxhcmd0eXBlcyk7CiAJCQlhbGxhcmd0 eXBlcyA9IE5VTEw7CkBAIC0xMTczMSw3ICsxMTcwNyw3IEBAIGR1bXBGdW5jKEFyY2hpdmUg KmZvdXQsIEZ1bmNJbmZvICpmaW5mbykKIAkJaWYgKCFwYXJzZVBHQXJyYXkocHJvYXJnbW9k ZXMsICZhcmdtb2RlcywgJm5pdGVtcykgfHwKIAkJCW5pdGVtcyAhPSBuYWxsYXJncykKIAkJ ewotCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBjb3VsZCBub3QgcGFyc2UgcHJvYXJn bW9kZXMgYXJyYXlcbiIpOworCQkJcGdfbG9nX3dhcm5pbmcoImNvdWxkIG5vdCBwYXJzZSBw cm9hcmdtb2RlcyBhcnJheSIpOwogCQkJaWYgKGFyZ21vZGVzKQogCQkJCWZyZWUoYXJnbW9k ZXMpOwogCQkJYXJnbW9kZXMgPSBOVUxMOwpAQCAtMTE3NDUsNyArMTE3MjEsNyBAQCBkdW1w RnVuYyhBcmNoaXZlICpmb3V0LCBGdW5jSW5mbyAqZmluZm8pCiAJCWlmICghcGFyc2VQR0Fy cmF5KHByb2FyZ25hbWVzLCAmYXJnbmFtZXMsICZuaXRlbXMpIHx8CiAJCQluaXRlbXMgIT0g bmFsbGFyZ3MpCiAJCXsKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogY291bGQgbm90 IHBhcnNlIHByb2FyZ25hbWVzIGFycmF5XG4iKTsKKwkJCXBnX2xvZ193YXJuaW5nKCJjb3Vs ZCBub3QgcGFyc2UgcHJvYXJnbmFtZXMgYXJyYXkiKTsKIAkJCWlmIChhcmduYW1lcykKIAkJ CQlmcmVlKGFyZ25hbWVzKTsKIAkJCWFyZ25hbWVzID0gTlVMTDsKQEAgLTExNzU2LDcgKzEx NzMyLDcgQEAgZHVtcEZ1bmMoQXJjaGl2ZSAqZm91dCwgRnVuY0luZm8gKmZpbmZvKQogCXsK IAkJaWYgKCFwYXJzZVBHQXJyYXkocHJvY29uZmlnLCAmY29uZmlnaXRlbXMsICZuY29uZmln aXRlbXMpKQogCQl7Ci0JCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IGNvdWxkIG5vdCBw YXJzZSBwcm9jb25maWcgYXJyYXlcbiIpOworCQkJcGdfbG9nX3dhcm5pbmcoImNvdWxkIG5v dCBwYXJzZSBwcm9jb25maWcgYXJyYXkiKTsKIAkJCWlmIChjb25maWdpdGVtcykKIAkJCQlm cmVlKGNvbmZpZ2l0ZW1zKTsKIAkJCWNvbmZpZ2l0ZW1zID0gTlVMTDsKQEAgLTExODM2LDcg KzExODEyLDcgQEAgZHVtcEZ1bmMoQXJjaGl2ZSAqZm91dCwgRnVuY0luZm8gKmZpbmZvKQog CQllbHNlIGlmIChwcm92b2xhdGlsZVswXSA9PSBQUk9WT0xBVElMRV9TVEFCTEUpCiAJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIFNUQUJMRSIpOwogCQllbHNlIGlmIChwcm92b2xh dGlsZVswXSAhPSBQUk9WT0xBVElMRV9WT0xBVElMRSkKLQkJCWV4aXRfaG9ycmlibHkoTlVM TCwgInVucmVjb2duaXplZCBwcm92b2xhdGlsZSB2YWx1ZSBmb3IgZnVuY3Rpb24gXCIlc1wi XG4iLAorCQkJZmF0YWwoInVucmVjb2duaXplZCBwcm92b2xhdGlsZSB2YWx1ZSBmb3IgZnVu Y3Rpb24gXCIlc1wiIiwKIAkJCQkJCSAgZmluZm8tPmRvYmoubmFtZSk7CiAJfQogCkBAIC0x MTg4MCw3ICsxMTg1Niw3IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZvdXQsIEZ1bmNJbmZvICpm aW5mbykKIAkJZWxzZSBpZiAocHJvcGFyYWxsZWxbMF0gPT0gUFJPUEFSQUxMRUxfUkVTVFJJ Q1RFRCkKIAkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIgUEFSQUxMRUwgUkVTVFJJQ1RF RCIpOwogCQllbHNlIGlmIChwcm9wYXJhbGxlbFswXSAhPSBQUk9QQVJBTExFTF9VTlNBRkUp Ci0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJ1bnJlY29nbml6ZWQgcHJvcGFyYWxsZWwgdmFs dWUgZm9yIGZ1bmN0aW9uIFwiJXNcIlxuIiwKKwkJCWZhdGFsKCJ1bnJlY29nbml6ZWQgcHJv cGFyYWxsZWwgdmFsdWUgZm9yIGZ1bmN0aW9uIFwiJXNcIiIsCiAJCQkJCQkgIGZpbmZvLT5k b2JqLm5hbWUpOwogCX0KIApAQCAtMTIwMTQsNyArMTE5OTAsNyBAQCBkdW1wQ2FzdChBcmNo aXZlICpmb3V0LCBDYXN0SW5mbyAqY2FzdCkKIAl7CiAJCWZ1bmNJbmZvID0gZmluZEZ1bmNC eU9pZChjYXN0LT5jYXN0ZnVuYyk7CiAJCWlmIChmdW5jSW5mbyA9PSBOVUxMKQotCQkJZXhp dF9ob3JyaWJseShOVUxMLCAiY291bGQgbm90IGZpbmQgZnVuY3Rpb24gZGVmaW5pdGlvbiBm b3IgZnVuY3Rpb24gd2l0aCBPSUQgJXVcbiIsCisJCQlmYXRhbCgiY291bGQgbm90IGZpbmQg ZnVuY3Rpb24gZGVmaW5pdGlvbiBmb3IgZnVuY3Rpb24gd2l0aCBPSUQgJXUiLAogCQkJCQkJ ICBjYXN0LT5jYXN0ZnVuYyk7CiAJfQogCkBAIC0xMjA1MywxMCArMTIwMjksMTAgQEAgZHVt cENhc3QoQXJjaGl2ZSAqZm91dCwgQ2FzdEluZm8gKmNhc3QpCiAJCQkJZnJlZShmc2lnKTsK IAkJCX0KIAkJCWVsc2UKLQkJCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IGJvZ3VzIHZh bHVlIGluIHBnX2Nhc3QuY2FzdGZ1bmMgb3IgcGdfY2FzdC5jYXN0bWV0aG9kIGZpZWxkXG4i KTsKKwkJCQlwZ19sb2dfd2FybmluZygiYm9ndXMgdmFsdWUgaW4gcGdfY2FzdC5jYXN0ZnVu YyBvciBwZ19jYXN0LmNhc3RtZXRob2QgZmllbGQiKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgotCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBib2d1cyB2YWx1ZSBpbiBwZ19jYXN0 LmNhc3RtZXRob2QgZmllbGRcbiIpOworCQkJcGdfbG9nX3dhcm5pbmcoImJvZ3VzIHZhbHVl IGluIHBnX2Nhc3QuY2FzdG1ldGhvZCBmaWVsZCIpOwogCX0KIAogCWlmIChjYXN0LT5jYXN0 Y29udGV4dCA9PSAnYScpCkBAIC0xMjEyNCwxNCArMTIxMDAsMTQgQEAgZHVtcFRyYW5zZm9y bShBcmNoaXZlICpmb3V0LCBUcmFuc2Zvcm1JbmZvICp0cmFuc2Zvcm0pCiAJewogCQlmcm9t c3FsRnVuY0luZm8gPSBmaW5kRnVuY0J5T2lkKHRyYW5zZm9ybS0+dHJmZnJvbXNxbCk7CiAJ CWlmIChmcm9tc3FsRnVuY0luZm8gPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwg ImNvdWxkIG5vdCBmaW5kIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIGZ1bmN0aW9uIHdpdGgg T0lEICV1XG4iLAorCQkJZmF0YWwoImNvdWxkIG5vdCBmaW5kIGZ1bmN0aW9uIGRlZmluaXRp b24gZm9yIGZ1bmN0aW9uIHdpdGggT0lEICV1IiwKIAkJCQkJCSAgdHJhbnNmb3JtLT50cmZm cm9tc3FsKTsKIAl9CiAJaWYgKE9pZElzVmFsaWQodHJhbnNmb3JtLT50cmZ0b3NxbCkpCiAJ ewogCQl0b3NxbEZ1bmNJbmZvID0gZmluZEZ1bmNCeU9pZCh0cmFuc2Zvcm0tPnRyZnRvc3Fs KTsKIAkJaWYgKHRvc3FsRnVuY0luZm8gPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkoTlVM TCwgImNvdWxkIG5vdCBmaW5kIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIGZ1bmN0aW9uIHdp dGggT0lEICV1XG4iLAorCQkJZmF0YWwoImNvdWxkIG5vdCBmaW5kIGZ1bmN0aW9uIGRlZmlu aXRpb24gZm9yIGZ1bmN0aW9uIHdpdGggT0lEICV1IiwKIAkJCQkJCSAgdHJhbnNmb3JtLT50 cmZ0b3NxbCk7CiAJfQogCkBAIC0xMjE1MCw3ICsxMjEyNiw3IEBAIGR1bXBUcmFuc2Zvcm0o QXJjaGl2ZSAqZm91dCwgVHJhbnNmb3JtSW5mbyAqdHJhbnNmb3JtKQogCQkJCQkgIHRyYW5z Zm9ybVR5cGUsIGxhbm5hbWUpOwogCiAJaWYgKCF0cmFuc2Zvcm0tPnRyZmZyb21zcWwgJiYg IXRyYW5zZm9ybS0+dHJmdG9zcWwpCi0JCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogYm9n dXMgdHJhbnNmb3JtIGRlZmluaXRpb24sIGF0IGxlYXN0IG9uZSBvZiB0cmZmcm9tc3FsIGFu ZCB0cmZ0b3NxbCBzaG91bGQgYmUgbm9uemVyb1xuIik7CisJCXBnX2xvZ193YXJuaW5nKCJi b2d1cyB0cmFuc2Zvcm0gZGVmaW5pdGlvbiwgYXQgbGVhc3Qgb25lIG9mIHRyZmZyb21zcWwg YW5kIHRyZnRvc3FsIHNob3VsZCBiZSBub256ZXJvIik7CiAKIAlpZiAodHJhbnNmb3JtLT50 cmZmcm9tc3FsKQogCXsKQEAgLTEyMTY3LDcgKzEyMTQzLDcgQEAgZHVtcFRyYW5zZm9ybShB cmNoaXZlICpmb3V0LCBUcmFuc2Zvcm1JbmZvICp0cmFuc2Zvcm0pCiAJCQlmcmVlKGZzaWcp OwogCQl9CiAJCWVsc2UKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogYm9ndXMgdmFs dWUgaW4gcGdfdHJhbnNmb3JtLnRyZmZyb21zcWwgZmllbGRcbiIpOworCQkJcGdfbG9nX3dh cm5pbmcoImJvZ3VzIHZhbHVlIGluIHBnX3RyYW5zZm9ybS50cmZmcm9tc3FsIGZpZWxkIik7 CiAJfQogCiAJaWYgKHRyYW5zZm9ybS0+dHJmdG9zcWwpCkBAIC0xMjE4OCw3ICsxMjE2NCw3 IEBAIGR1bXBUcmFuc2Zvcm0oQXJjaGl2ZSAqZm91dCwgVHJhbnNmb3JtSW5mbyAqdHJhbnNm b3JtKQogCQkJZnJlZShmc2lnKTsKIAkJfQogCQllbHNlCi0JCQl3cml0ZV9tc2coTlVMTCwg IldBUk5JTkc6IGJvZ3VzIHZhbHVlIGluIHBnX3RyYW5zZm9ybS50cmZ0b3NxbCBmaWVsZFxu Iik7CisJCQlwZ19sb2dfd2FybmluZygiYm9ndXMgdmFsdWUgaW4gcGdfdHJhbnNmb3JtLnRy ZnRvc3FsIGZpZWxkIik7CiAJfQogCiAJYXBwZW5kUFFFeHBCdWZmZXIoZGVmcXJ5LCAiKTtc biIpOwpAQCAtMTI1MDQsNyArMTI0ODAsNyBAQCBnZXRGb3JtYXR0ZWRPcGVyYXRvck5hbWUo QXJjaGl2ZSAqZm91dCwgY29uc3QgY2hhciAqb3Byb2lkKQogCW9wckluZm8gPSBmaW5kT3By QnlPaWQoYXRvb2lkKG9wcm9pZCkpOwogCWlmIChvcHJJbmZvID09IE5VTEwpCiAJewotCQl3 cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IGNvdWxkIG5vdCBmaW5kIG9wZXJhdG9yIHdpdGgg T0lEICVzXG4iLAorCQlwZ19sb2dfd2FybmluZygiY291bGQgbm90IGZpbmQgb3BlcmF0b3Ig d2l0aCBPSUQgJXMiLAogCQkJCSAgb3Byb2lkKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAt MTI1NjksNyArMTI1NDUsNyBAQCBkdW1wQWNjZXNzTWV0aG9kKEFyY2hpdmUgKmZvdXQsIEFj Y2Vzc01ldGhvZEluZm8gKmFtaW5mbykKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICJUWVBF IElOREVYICIpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQl3cml0ZV9tc2coTlVMTCwg IldBUk5JTkc6IGludmFsaWQgdHlwZSBcIiVjXCIgb2YgYWNjZXNzIG1ldGhvZCBcIiVzXCJc biIsCisJCQlwZ19sb2dfd2FybmluZygiaW52YWxpZCB0eXBlIFwiJWNcIiBvZiBhY2Nlc3Mg bWV0aG9kIFwiJXNcIiIsCiAJCQkJCSAgYW1pbmZvLT5hbXR5cGUsIHFhbW5hbWUpOwogCQkJ ZGVzdHJveVBRRXhwQnVmZmVyKHEpOwogCQkJZGVzdHJveVBRRXhwQnVmZmVyKGRlbHEpOwpA QCAtMTMzMjAsOCArMTMyOTYsNyBAQCBkdW1wQ29sbGF0aW9uKEFyY2hpdmUgKmZvdXQsIENv bGxJbmZvICpjb2xsaW5mbykKIAkJLyogdG8gYWxsb3cgZHVtcGluZyBwZ19jYXRhbG9nOyBu b3QgYWNjZXB0ZWQgb24gaW5wdXQgKi8KIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgImRl ZmF1bHQiKTsKIAllbHNlCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwKLQkJCQkJICAidW5yZWNv Z25pemVkIGNvbGxhdGlvbiBwcm92aWRlcjogJXNcbiIsCisJCWZhdGFsKCJ1bnJlY29nbml6 ZWQgY29sbGF0aW9uIHByb3ZpZGVyOiAlc1xuIiwKIAkJCQkJICBjb2xscHJvdmlkZXIpOwog CiAJaWYgKHN0cmNtcChjb2xsY29sbGF0ZSwgY29sbGN0eXBlKSA9PSAwKQpAQCAtMTM3OTIs NyArMTM3NjcsNyBAQCBkdW1wQWdnKEFyY2hpdmUgKmZvdXQsIEFnZ0luZm8gKmFnZ2luZm8p CiAKIAlpZiAoIWNvbnZlcnRvaykKIAl7Ci0JCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzog YWdncmVnYXRlIGZ1bmN0aW9uICVzIGNvdWxkIG5vdCBiZSBkdW1wZWQgY29ycmVjdGx5IGZv ciB0aGlzIGRhdGFiYXNlIHZlcnNpb247IGlnbm9yZWRcbiIsCisJCXBnX2xvZ193YXJuaW5n KCJhZ2dyZWdhdGUgZnVuY3Rpb24gJXMgY291bGQgbm90IGJlIGR1bXBlZCBjb3JyZWN0bHkg Zm9yIHRoaXMgZGF0YWJhc2UgdmVyc2lvbjsgaWdub3JlZCIsCiAJCQkJICBhZ2dzaWcpOwog CiAJCWlmIChhZ2dmdWxsc2lnKQpAQCAtMTM4NDcsNyArMTM4MjIsNyBAQCBkdW1wQWdnKEFy Y2hpdmUgKmZvdXQsIEFnZ0luZm8gKmFnZ2luZm8pCiAJCQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKGRldGFpbHMsICIsXG4gICAgRklOQUxGVU5DX01PRElGWSA9IFJFQURfV1JJVEUiKTsK IAkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKLQkJCQkJZXhpdF9ob3JyaWJseShOVUxMLCAi dW5yZWNvZ25pemVkIGFnZ2ZpbmFsbW9kaWZ5IHZhbHVlIGZvciBhZ2dyZWdhdGUgXCIlc1wi XG4iLAorCQkJCQlmYXRhbCgidW5yZWNvZ25pemVkIGFnZ2ZpbmFsbW9kaWZ5IHZhbHVlIGZv ciBhZ2dyZWdhdGUgXCIlc1wiIiwKIAkJCQkJCQkJICBhZ2dpbmZvLT5hZ2dmbi5kb2JqLm5h bWUpOwogCQkJCQlicmVhazsKIAkJCX0KQEAgLTEzOTAzLDcgKzEzODc4LDcgQEAgZHVtcEFn ZyhBcmNoaXZlICpmb3V0LCBBZ2dJbmZvICphZ2dpbmZvKQogCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihkZXRhaWxzLCAiLFxuICAgIE1GSU5BTEZVTkNfTU9ESUZZID0gUkVBRF9XUklU RSIpOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgotCQkJCQlleGl0X2hvcnJpYmx5KE5V TEwsICJ1bnJlY29nbml6ZWQgYWdnbWZpbmFsbW9kaWZ5IHZhbHVlIGZvciBhZ2dyZWdhdGUg XCIlc1wiXG4iLAorCQkJCQlmYXRhbCgidW5yZWNvZ25pemVkIGFnZ21maW5hbG1vZGlmeSB2 YWx1ZSBmb3IgYWdncmVnYXRlIFwiJXNcIiIsCiAJCQkJCQkJCSAgYWdnaW5mby0+YWdnZm4u ZG9iai5uYW1lKTsKIAkJCQkJYnJlYWs7CiAJCQl9CkBAIC0xMzkyOCw3ICsxMzkwMyw3IEBA IGR1bXBBZ2coQXJjaGl2ZSAqZm91dCwgQWdnSW5mbyAqYWdnaW5mbykKIAkJZWxzZSBpZiAo cHJvcGFyYWxsZWxbMF0gPT0gUFJPUEFSQUxMRUxfUkVTVFJJQ1RFRCkKIAkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKGRldGFpbHMsICIsXG4gICAgUEFSQUxMRUwgPSByZXN0cmljdGVkIik7 CiAJCWVsc2UgaWYgKHByb3BhcmFsbGVsWzBdICE9IFBST1BBUkFMTEVMX1VOU0FGRSkKLQkJ CWV4aXRfaG9ycmlibHkoTlVMTCwgInVucmVjb2duaXplZCBwcm9wYXJhbGxlbCB2YWx1ZSBm b3IgZnVuY3Rpb24gXCIlc1wiXG4iLAorCQkJZmF0YWwoInVucmVjb2duaXplZCBwcm9wYXJh bGxlbCB2YWx1ZSBmb3IgZnVuY3Rpb24gXCIlc1wiIiwKIAkJCQkJCSAgYWdnaW5mby0+YWdn Zm4uZG9iai5uYW1lKTsKIAl9CiAKQEAgLTE0NjM3LDggKzE0NjEyLDcgQEAgZHVtcERlZmF1 bHRBQ0woQXJjaGl2ZSAqZm91dCwgRGVmYXVsdEFDTEluZm8gKmRhY2xpbmZvKQogCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KLQkJCWV4aXRf aG9ycmlibHkoTlVMTCwKLQkJCQkJCSAgInVucmVjb2duaXplZCBvYmplY3QgdHlwZSBpbiBk ZWZhdWx0IHByaXZpbGVnZXM6ICVkXG4iLAorCQkJZmF0YWwoInVucmVjb2duaXplZCBvYmpl Y3QgdHlwZSBpbiBkZWZhdWx0IHByaXZpbGVnZXM6ICVkIiwKIAkJCQkJCSAgKGludCkgZGFj bGluZm8tPmRlZmFjbG9ianR5cGUpOwogCQkJdHlwZSA9ICIiOwkJCS8qIGtlZXAgY29tcGls ZXIgcXVpZXQgKi8KIAl9CkBAIC0xNDY1Niw3ICsxNDYzMCw3IEBAIGR1bXBEZWZhdWx0QUNM KEFyY2hpdmUgKmZvdXQsIERlZmF1bHRBQ0xJbmZvICpkYWNsaW5mbykKIAkJCQkJCQkJIGRh Y2xpbmZvLT5kZWZhY2xyb2xlLAogCQkJCQkJCQkgZm91dC0+cmVtb3RlVmVyc2lvbiwKIAkJ CQkJCQkJIHEpKQotCQlleGl0X2hvcnJpYmx5KE5VTEwsICJjb3VsZCBub3QgcGFyc2UgZGVm YXVsdCBBQ0wgbGlzdCAoJXMpXG4iLAorCQlmYXRhbCgiY291bGQgbm90IHBhcnNlIGRlZmF1 bHQgQUNMIGxpc3QgKCVzKSIsCiAJCQkJCSAgZGFjbGluZm8tPmRlZmFjbGFjbCk7CiAKIAlp ZiAoZGFjbGluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0FDTCkKQEAgLTE0NzM3 LDggKzE0NzExLDcgQEAgZHVtcEFDTChBcmNoaXZlICpmb3V0LCBDYXRhbG9nSWQgb2JqQ2F0 SWQsIER1bXBJZCBvYmpEdW1wSWQsCiAJCWlmICghYnVpbGRBQ0xDb21tYW5kcyhuYW1lLCBz dWJuYW1lLCBuc3BuYW1lLCB0eXBlLAogCQkJCQkJCSAgaW5pdGFjbHMsIGluaXRyYWNscywg b3duZXIsCiAJCQkJCQkJICAiIiwgZm91dC0+cmVtb3RlVmVyc2lvbiwgc3FsKSkKLQkJCWV4 aXRfaG9ycmlibHkoTlVMTCwKLQkJCQkJCSAgImNvdWxkIG5vdCBwYXJzZSBpbml0aWFsIEdS QU5UIEFDTCBsaXN0ICglcykgb3IgaW5pdGlhbCBSRVZPS0UgQUNMIGxpc3QgKCVzKSBmb3Ig b2JqZWN0IFwiJXNcIiAoJXMpXG4iLAorCQkJZmF0YWwoImNvdWxkIG5vdCBwYXJzZSBpbml0 aWFsIEdSQU5UIEFDTCBsaXN0ICglcykgb3IgaW5pdGlhbCBSRVZPS0UgQUNMIGxpc3QgKCVz KSBmb3Igb2JqZWN0IFwiJXNcIiAoJXMpIiwKIAkJCQkJCSAgaW5pdGFjbHMsIGluaXRyYWNs cywgbmFtZSwgdHlwZSk7CiAJCWFwcGVuZFBRRXhwQnVmZmVyKHNxbCwgIlNFTEVDVCBwZ19j YXRhbG9nLmJpbmFyeV91cGdyYWRlX3NldF9yZWNvcmRfaW5pdF9wcml2cyhmYWxzZSk7XG4i KTsKIAl9CkBAIC0xNDc0Niw4ICsxNDcxOSw3IEBAIGR1bXBBQ0woQXJjaGl2ZSAqZm91dCwg Q2F0YWxvZ0lkIG9iakNhdElkLCBEdW1wSWQgb2JqRHVtcElkLAogCWlmICghYnVpbGRBQ0xD b21tYW5kcyhuYW1lLCBzdWJuYW1lLCBuc3BuYW1lLCB0eXBlLAogCQkJCQkJICBhY2xzLCBy YWNscywgb3duZXIsCiAJCQkJCQkgICIiLCBmb3V0LT5yZW1vdGVWZXJzaW9uLCBzcWwpKQot CQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJCSAgImNvdWxkIG5vdCBwYXJzZSBHUkFOVCBB Q0wgbGlzdCAoJXMpIG9yIFJFVk9LRSBBQ0wgbGlzdCAoJXMpIGZvciBvYmplY3QgXCIlc1wi ICglcylcbiIsCisJCWZhdGFsKCJjb3VsZCBub3QgcGFyc2UgR1JBTlQgQUNMIGxpc3QgKCVz KSBvciBSRVZPS0UgQUNMIGxpc3QgKCVzKSBmb3Igb2JqZWN0IFwiJXNcIiAoJXMpIiwKIAkJ CQkJICBhY2xzLCByYWNscywgbmFtZSwgdHlwZSk7CiAKIAlpZiAoc3FsLT5sZW4gPiAwKQpA QCAtMTUyNDEsMTcgKzE1MjEzLDE3IEBAIGNyZWF0ZVZpZXdBc0NsYXVzZShBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gKnRiaW5mbykKIAlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSkKIAl7 CiAJCWlmIChQUW50dXBsZXMocmVzKSA8IDEpCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJx dWVyeSB0byBvYnRhaW4gZGVmaW5pdGlvbiBvZiB2aWV3IFwiJXNcIiByZXR1cm5lZCBubyBk YXRhXG4iLAorCQkJZmF0YWwoInF1ZXJ5IHRvIG9idGFpbiBkZWZpbml0aW9uIG9mIHZpZXcg XCIlc1wiIHJldHVybmVkIG5vIGRhdGEiLAogCQkJCQkJICB0YmluZm8tPmRvYmoubmFtZSk7 CiAJCWVsc2UKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgInF1ZXJ5IHRvIG9idGFpbiBkZWZp bml0aW9uIG9mIHZpZXcgXCIlc1wiIHJldHVybmVkIG1vcmUgdGhhbiBvbmUgZGVmaW5pdGlv blxuIiwKKwkJCWZhdGFsKCJxdWVyeSB0byBvYnRhaW4gZGVmaW5pdGlvbiBvZiB2aWV3IFwi JXNcIiByZXR1cm5lZCBtb3JlIHRoYW4gb25lIGRlZmluaXRpb24iLAogCQkJCQkJICB0Ymlu Zm8tPmRvYmoubmFtZSk7CiAJfQogCiAJbGVuID0gUFFnZXRsZW5ndGgocmVzLCAwLCAwKTsK IAogCWlmIChsZW4gPT0gMCkKLQkJZXhpdF9ob3JyaWJseShOVUxMLCAiZGVmaW5pdGlvbiBv ZiB2aWV3IFwiJXNcIiBhcHBlYXJzIHRvIGJlIGVtcHR5IChsZW5ndGggemVybylcbiIsCisJ CWZhdGFsKCJkZWZpbml0aW9uIG9mIHZpZXcgXCIlc1wiIGFwcGVhcnMgdG8gYmUgZW1wdHkg KGxlbmd0aCB6ZXJvKSIsCiAJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJLyogU3Ry aXAgb2ZmIHRoZSB0cmFpbGluZyBzZW1pY29sb24gc28gdGhhdCBvdGhlciB0aGluZ3MgbWF5 IGZvbGxvdy4gKi8KQEAgLTE1MzMzLDggKzE1MzA1LDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFy Y2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJpbmZvKQogCiAKIAlpZiAodGJpbmZvLT5oYXNv aWRzKQotCQl3cml0ZV9tc2coTlVMTCwKLQkJCQkgICJXQVJOSU5HOiBXSVRIIE9JRFMgaXMg bm90IHN1cHBvcnRlZCBhbnltb3JlICh0YWJsZSBcIiVzXCIpXG4iLAorCQlwZ19sb2dfd2Fy bmluZygiV0lUSCBPSURTIGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZSAodGFibGUgXCIlc1wi KSIsCiAJCQkJICBxcmVsbmFtZSk7CiAKIAlpZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUpCkBA IC0xNTQ2MSw3ICsxNTQzMiw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gKnRiaW5mbykKIAkJCSAqIHBhcmVudC4KIAkJCSAqLwogCQkJaWYgKHRiaW5m by0+bnVtUGFyZW50cyAhPSAxKQotCQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgImludmFsaWQg bnVtYmVyIG9mIHBhcmVudHMgJWQgZm9yIHRhYmxlIFwiJXNcIlxuIiwKKwkJCQlmYXRhbCgi aW52YWxpZCBudW1iZXIgb2YgcGFyZW50cyAlZCBmb3IgdGFibGUgXCIlc1wiIiwKIAkJCQkJ CQkgIHRiaW5mby0+bnVtUGFyZW50cywgdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJCQlhcHBl bmRQUUV4cEJ1ZmZlcihxLCAiIFBBUlRJVElPTiBPRiAlcyIsCkBAIC0xNjEzNCw3ICsxNjEw NSw3IEBAIGdldEF0dHJOYW1lKGludCBhdHRybnVtLCBUYWJsZUluZm8gKnRibEluZm8pCiAJ CWNhc2UgVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXI6CiAJCQlyZXR1cm4gInRhYmxlb2lkIjsK IAl9Ci0JZXhpdF9ob3JyaWJseShOVUxMLCAiaW52YWxpZCBjb2x1bW4gbnVtYmVyICVkIGZv ciB0YWJsZSBcIiVzXCJcbiIsCisJZmF0YWwoImludmFsaWQgY29sdW1uIG51bWJlciAlZCBm b3IgdGFibGUgXCIlc1wiIiwKIAkJCQkgIGF0dHJudW0sIHRibEluZm8tPmRvYmoubmFtZSk7 CiAJcmV0dXJuIE5VTEw7CQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIH0KQEAgLTE2 NDAwLDcgKzE2MzcxLDcgQEAgZHVtcENvbnN0cmFpbnQoQXJjaGl2ZSAqZm91dCwgQ29uc3Ry YWludEluZm8gKmNvbmluZm8pCiAJCWluZHhpbmZvID0gKEluZHhJbmZvICopIGZpbmRPYmpl Y3RCeUR1bXBJZChjb25pbmZvLT5jb25pbmRleCk7CiAKIAkJaWYgKGluZHhpbmZvID09IE5V TEwpCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJtaXNzaW5nIGluZGV4IGZvciBjb25zdHJh aW50IFwiJXNcIlxuIiwKKwkJCWZhdGFsKCJtaXNzaW5nIGluZGV4IGZvciBjb25zdHJhaW50 IFwiJXNcIiIsCiAJCQkJCQkgIGNvbmluZm8tPmRvYmoubmFtZSk7CiAKIAkJaWYgKGRvcHQt PmJpbmFyeV91cGdyYWRlKQpAQCAtMTY2MjMsNyArMTY1OTQsNyBAQCBkdW1wQ29uc3RyYWlu dChBcmNoaXZlICpmb3V0LCBDb25zdHJhaW50SW5mbyAqY29uaW5mbykKIAl9CiAJZWxzZQog CXsKLQkJZXhpdF9ob3JyaWJseShOVUxMLCAidW5yZWNvZ25pemVkIGNvbnN0cmFpbnQgdHlw ZTogJWNcbiIsCisJCWZhdGFsKCJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlOiAlYyIs CiAJCQkJCSAgY29uaW5mby0+Y29udHlwZSk7CiAJfQogCkBAIC0xNjc1NSw4ICsxNjcyNiw4 IEBAIGR1bXBTZXF1ZW5jZShBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRiaW5mbykKIAog CWlmIChQUW50dXBsZXMocmVzKSAhPSAxKQogCXsKLQkJd3JpdGVfbXNnKE5VTEwsIG5nZXR0 ZXh0KCJxdWVyeSB0byBnZXQgZGF0YSBvZiBzZXF1ZW5jZSBcIiVzXCIgcmV0dXJuZWQgJWQg cm93IChleHBlY3RlZCAxKVxuIiwKLQkJCQkJCQkJICJxdWVyeSB0byBnZXQgZGF0YSBvZiBz ZXF1ZW5jZSBcIiVzXCIgcmV0dXJuZWQgJWQgcm93cyAoZXhwZWN0ZWQgMSlcbiIsCisJCXBn X2xvZ19lcnJvcihuZ2V0dGV4dCgicXVlcnkgdG8gZ2V0IGRhdGEgb2Ygc2VxdWVuY2UgXCIl c1wiIHJldHVybmVkICVkIHJvdyAoZXhwZWN0ZWQgMSkiLAorCQkJCQkJCSAgInF1ZXJ5IHRv IGdldCBkYXRhIG9mIHNlcXVlbmNlIFwiJXNcIiByZXR1cm5lZCAlZCByb3dzIChleHBlY3Rl ZCAxKSIsCiAJCQkJCQkJCSBQUW50dXBsZXMocmVzKSksCiAJCQkJICB0YmluZm8tPmRvYmou bmFtZSwgUFFudHVwbGVzKHJlcykpOwogCQlleGl0X25pY2VseSgxKTsKQEAgLTE2Nzg5LDcg KzE2NzYwLDcgQEAgZHVtcFNlcXVlbmNlKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJp bmZvKQogCX0KIAllbHNlCiAJewotCQlleGl0X2hvcnJpYmx5KE5VTEwsICJ1bnJlY29nbml6 ZWQgc2VxdWVuY2UgdHlwZTogJXNcbiIsIHNlcXR5cGUpOworCQlmYXRhbCgidW5yZWNvZ25p emVkIHNlcXVlbmNlIHR5cGU6ICVzIiwgc2VxdHlwZSk7CiAJCWRlZmF1bHRfbWludiA9IGRl ZmF1bHRfbWF4diA9IDA7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAl9CiAKQEAgLTE2 OTExLDcgKzE2ODgyLDcgQEAgZHVtcFNlcXVlbmNlKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byAqdGJpbmZvKQogCQlUYWJsZUluZm8gICpvd25pbmdfdGFiID0gZmluZFRhYmxlQnlPaWQo dGJpbmZvLT5vd25pbmdfdGFiKTsKIAogCQlpZiAob3duaW5nX3RhYiA9PSBOVUxMKQotCQkJ ZXhpdF9ob3JyaWJseShOVUxMLCAiZmFpbGVkIHNhbml0eSBjaGVjaywgcGFyZW50IHRhYmxl IHdpdGggT0lEICV1IG9mIHNlcXVlbmNlIHdpdGggT0lEICV1IG5vdCBmb3VuZFxuIiwKKwkJ CWZhdGFsKCJmYWlsZWQgc2FuaXR5IGNoZWNrLCBwYXJlbnQgdGFibGUgd2l0aCBPSUQgJXUg b2Ygc2VxdWVuY2Ugd2l0aCBPSUQgJXUgbm90IGZvdW5kIiwKIAkJCQkJCSAgdGJpbmZvLT5v d25pbmdfdGFiLCB0YmluZm8tPmRvYmouY2F0SWQub2lkKTsKIAogCQlpZiAob3duaW5nX3Rh Yi0+ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfREVGSU5JVElPTikKQEAgLTE2OTc2LDgg KzE2OTQ3LDggQEAgZHVtcFNlcXVlbmNlRGF0YShBcmNoaXZlICpmb3V0LCBUYWJsZURhdGFJ bmZvICp0ZGluZm8pCiAKIAlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSkKIAl7Ci0JCXdyaXRl X21zZyhOVUxMLCBuZ2V0dGV4dCgicXVlcnkgdG8gZ2V0IGRhdGEgb2Ygc2VxdWVuY2UgXCIl c1wiIHJldHVybmVkICVkIHJvdyAoZXhwZWN0ZWQgMSlcbiIsCi0JCQkJCQkJCSAicXVlcnkg dG8gZ2V0IGRhdGEgb2Ygc2VxdWVuY2UgXCIlc1wiIHJldHVybmVkICVkIHJvd3MgKGV4cGVj dGVkIDEpXG4iLAorCQlwZ19sb2dfZXJyb3IobmdldHRleHQoInF1ZXJ5IHRvIGdldCBkYXRh IG9mIHNlcXVlbmNlIFwiJXNcIiByZXR1cm5lZCAlZCByb3cgKGV4cGVjdGVkIDEpIiwKKwkJ CQkJCQkgICJxdWVyeSB0byBnZXQgZGF0YSBvZiBzZXF1ZW5jZSBcIiVzXCIgcmV0dXJuZWQg JWQgcm93cyAoZXhwZWN0ZWQgMSkiLAogCQkJCQkJCQkgUFFudHVwbGVzKHJlcykpLAogCQkJ CSAgdGJpbmZvLT5kb2JqLm5hbWUsIFBRbnR1cGxlcyhyZXMpKTsKIAkJZXhpdF9uaWNlbHko MSk7CkBAIC0xNzA3Miw3ICsxNzA0Myw3IEBAIGR1bXBUcmlnZ2VyKEFyY2hpdmUgKmZvdXQs IFRyaWdnZXJJbmZvICp0Z2luZm8pCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwg IklOU1RFQUQgT0YiKTsKIAkJZWxzZQogCQl7Ci0JCQl3cml0ZV9tc2coTlVMTCwgInVuZXhw ZWN0ZWQgdGd0eXBlIHZhbHVlOiAlZFxuIiwgdGdpbmZvLT50Z3R5cGUpOworCQkJcGdfbG9n X2Vycm9yKCJ1bmV4cGVjdGVkIHRndHlwZSB2YWx1ZTogJWQiLCB0Z2luZm8tPnRndHlwZSk7 CiAJCQlleGl0X25pY2VseSgxKTsKIAkJfQogCkBAIC0xNzE0Niw3ICsxNzExNyw3IEBAIGR1 bXBUcmlnZ2VyKEFyY2hpdmUgKmZvdXQsIFRyaWdnZXJJbmZvICp0Z2luZm8pCiAJCQlpZiAo cCArIHRsZW4gPj0gdGdhcmdzICsgbGVudGdhcmdzKQogCQkJewogCQkJCS8qIGhtLCBub3Qg Zm91bmQgYmVmb3JlIGVuZCBvZiBieXRlYSB2YWx1ZS4uLiAqLwotCQkJCXdyaXRlX21zZyhO VUxMLCAiaW52YWxpZCBhcmd1bWVudCBzdHJpbmcgKCVzKSBmb3IgdHJpZ2dlciBcIiVzXCIg b24gdGFibGUgXCIlc1wiXG4iLAorCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhcmd1bWVu dCBzdHJpbmcgKCVzKSBmb3IgdHJpZ2dlciBcIiVzXCIgb24gdGFibGUgXCIlc1wiIiwKIAkJ CQkJCSAgdGdpbmZvLT50Z2FyZ3MsCiAJCQkJCQkgIHRnaW5mby0+ZG9iai5uYW1lLAogCQkJ CQkJICB0YmluZm8tPmRvYmoubmFtZSk7CkBAIC0xNzM3Niw3ICsxNzM0Nyw3IEBAIGR1bXBS dWxlKEFyY2hpdmUgKmZvdXQsIFJ1bGVJbmZvICpyaW5mbykKIAogCQlpZiAoUFFudHVwbGVz KHJlcykgIT0gMSkKIAkJewotCQkJd3JpdGVfbXNnKE5VTEwsICJxdWVyeSB0byBnZXQgcnVs ZSBcIiVzXCIgZm9yIHRhYmxlIFwiJXNcIiBmYWlsZWQ6IHdyb25nIG51bWJlciBvZiByb3dz IHJldHVybmVkXG4iLAorCQkJcGdfbG9nX2Vycm9yKCJxdWVyeSB0byBnZXQgcnVsZSBcIiVz XCIgZm9yIHRhYmxlIFwiJXNcIiBmYWlsZWQ6IHdyb25nIG51bWJlciBvZiByb3dzIHJldHVy bmVkIiwKIAkJCQkJICByaW5mby0+ZG9iai5uYW1lLCB0YmluZm8tPmRvYmoubmFtZSk7CiAJ CQlleGl0X25pY2VseSgxKTsKIAkJfQpAQCAtMTc1MzksNyArMTc1MTAsNyBAQCBnZXRFeHRl bnNpb25NZW1iZXJzaGlwKEFyY2hpdmUgKmZvdXQsIEV4dGVuc2lvbkluZm8gZXh0aW5mb1td LAogCQlpZiAoZXh0ID09IE5VTEwpCiAJCXsKIAkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8K LQkJCWZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IGZpbmQgcmVmZXJlbmNlZCBleHRlbnNp b24gJXVcbiIsIGV4dElkKTsKKwkJCXBnX2xvZ193YXJuaW5nKCJjb3VsZCBub3QgZmluZCBy ZWZlcmVuY2VkIGV4dGVuc2lvbiAldSIsIGV4dElkKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAK QEAgLTE3NzUxLDggKzE3NzIyLDcgQEAgZ2V0RGVwZW5kZW5jaWVzKEFyY2hpdmUgKmZvdXQp CiAJRHVtcGFibGVPYmplY3QgKmRvYmosCiAJCQkgICAqcmVmZG9iajsKIAotCWlmIChnX3Zl cmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBkZXBlbmRlbmN5IGRhdGFcbiIp OworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIGRlcGVuZGVuY3kgZGF0YSIpOwogCiAJcXVlcnkg PSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCkBAIC0xNzgwNyw3ICsxNzc3Nyw3IEBAIGdldERl cGVuZGVuY2llcyhBcmNoaXZlICpmb3V0KQogCQlpZiAoZG9iaiA9PSBOVUxMKQogCQl7CiAj aWZkZWYgTk9UX1VTRUQKLQkJCWZwcmludGYoc3RkZXJyLCAibm8gcmVmZXJlbmNpbmcgb2Jq ZWN0ICV1ICV1XG4iLAorCQkJcGdfbG9nX3dhcm5pbmcoIm5vIHJlZmVyZW5jaW5nIG9iamVj dCAldSAldSIsCiAJCQkJCW9iaklkLnRhYmxlb2lkLCBvYmpJZC5vaWQpOwogI2VuZGlmCiAJ CQljb250aW51ZTsKQEAgLTE3ODE4LDcgKzE3Nzg4LDcgQEAgZ2V0RGVwZW5kZW5jaWVzKEFy Y2hpdmUgKmZvdXQpCiAJCWlmIChyZWZkb2JqID09IE5VTEwpCiAJCXsKICNpZmRlZiBOT1Rf VVNFRAotCQkJZnByaW50ZihzdGRlcnIsICJubyByZWZlcmVuY2VkIG9iamVjdCAldSAldVxu IiwKKwkJCXBnX2xvZ193YXJuaW5nKCJubyByZWZlcmVuY2VkIG9iamVjdCAldSAldSIsCiAJ CQkJCXJlZm9iaklkLnRhYmxlb2lkLCByZWZvYmpJZC5vaWQpOwogI2VuZGlmCiAJCQljb250 aW51ZTsKQEAgLTE4MTgzLDUgKzE4MTUzLDUgQEAgYXBwZW5kUmVsb3B0aW9uc0FycmF5QUgo UFFFeHBCdWZmZXIgYnVmZmVyLCBjb25zdCBjaGFyICpyZWxvcHRpb25zLAogCXJlcyA9IGFw cGVuZFJlbG9wdGlvbnNBcnJheShidWZmZXIsIHJlbG9wdGlvbnMsIHByZWZpeCwgZm91dC0+ ZW5jb2RpbmcsCiAJCQkJCQkJCWZvdXQtPnN0ZF9zdHJpbmdzKTsKIAlpZiAoIXJlcykKLQkJ d3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBjb3VsZCBub3QgcGFyc2UgcmVsb3B0aW9ucyBh cnJheVxuIik7CisJCXBnX2xvZ193YXJuaW5nKCJjb3VsZCBub3QgcGFyc2UgcmVsb3B0aW9u cyBhcnJheSIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggMjFkMmFiMDViMC4uYzU0NmI3NTJm OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02MzcsNyArNjM3LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qg X2V4dGVuc2lvbk1lbWJlcklkCiAKIC8qIGdsb2JhbCBkZWNscyAqLwogZXh0ZXJuIGJvb2wg Zm9yY2VfcXVvdGVzOwkJLyogZG91YmxlLXF1b3RlcyBmb3IgaWRlbnRpZmllcnMgZmxhZyAq LwotZXh0ZXJuIGJvb2wgZ192ZXJib3NlOwkJCS8qIHZlcmJvc2UgZmxhZyAqLwogCiAvKiBw bGFjZWhvbGRlcnMgZm9yIGNvbW1lbnQgc3RhcnRpbmcgYW5kIGVuZGluZyBkZWxpbWl0ZXJz ICovCiBleHRlcm4gY2hhciBnX2NvbW1lbnRfc3RhcnRbMTBdOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBf c29ydC5jCmluZGV4IDA4MDA1YzUzMGYuLjYzOTA1YmQ0ODcgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cF9zb3J0LmMKQEAgLTIwLDkgKzIwLDcgQEAKICNpbmNsdWRlICJwZ19kdW1wLmgiCiAKICNp bmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzX2QuaCIKLQotLyogdHJhbnNsYXRvcjogdGhpcyBp cyBhIG1vZHVsZSBuYW1lICovCi1zdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlbmFtZSA9IGdl dHRleHRfbm9vcCgic29ydGVyIik7CisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgog CiAvKgogICogU29ydCBwcmlvcml0eSBmb3IgZGF0YWJhc2Ugb2JqZWN0IHR5cGVzLgpAQCAt MzI4LDEzICszMjYsMTMgQEAgVG9wb1NvcnQoRHVtcGFibGVPYmplY3QgKipvYmpzLAogCQlv YmogPSBvYmpzW2ldOwogCQlqID0gb2JqLT5kdW1wSWQ7CiAJCWlmIChqIDw9IDAgfHwgaiA+ IG1heER1bXBJZCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImludmFsaWQgZHVt cElkICVkXG4iLCBqKTsKKwkJCWZhdGFsKCJpbnZhbGlkIGR1bXBJZCAlZCIsIGopOwogCQlp ZE1hcFtqXSA9IGk7CiAJCWZvciAoaiA9IDA7IGogPCBvYmotPm5EZXBzOyBqKyspCiAJCXsK IAkJCWsgPSBvYmotPmRlcGVuZGVuY2llc1tqXTsKIAkJCWlmIChrIDw9IDAgfHwgayA+IG1h eER1bXBJZCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJpbnZhbGlkIGRlcGVu ZGVuY3kgJWRcbiIsIGspOworCQkJCWZhdGFsKCJpbnZhbGlkIGRlcGVuZGVuY3kgJWQiLCBr KTsKIAkJCWJlZm9yZUNvbnN0cmFpbnRzW2tdKys7CiAJCX0KIAl9CkBAIC01NjcsNyArNTY1 LDcgQEAgZmluZERlcGVuZGVuY3lMb29wcyhEdW1wYWJsZU9iamVjdCAqKm9ianMsIGludCBu T2JqcywgaW50IHRvdE9ianMpCiAKIAkvKiBXZSdkIGJldHRlciBoYXZlIGZpeGVkIGF0IGxl YXN0IG9uZSBsb29wICovCiAJaWYgKCFmaXhlZGxvb3ApCi0JCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwgImNvdWxkIG5vdCBpZGVudGlmeSBkZXBlbmRlbmN5IGxvb3BcbiIpOworCQlm YXRhbCgiY291bGQgbm90IGlkZW50aWZ5IGRlcGVuZGVuY3kgbG9vcCIpOwogCiAJZnJlZSh3 b3Jrc3BhY2UpOwogCWZyZWUoc2VhcmNoRmFpbGVkKTsKQEAgLTExMTQsMTMgKzExMTIsMTMg QEAgcmVwYWlyRGVwZW5kZW5jeUxvb3AoRHVtcGFibGVPYmplY3QgKipsb29wLAogCX0KIAlp ZiAoaSA+PSBuTG9vcCkKIAl7Ci0JCXdyaXRlX21zZyhOVUxMLCBuZ2V0dGV4dCgiTk9USUNF OiB0aGVyZSBhcmUgY2lyY3VsYXIgZm9yZWlnbi1rZXkgY29uc3RyYWludHMgb24gdGhpcyB0 YWJsZTpcbiIsCi0JCQkJCQkJCSAiTk9USUNFOiB0aGVyZSBhcmUgY2lyY3VsYXIgZm9yZWln bi1rZXkgY29uc3RyYWludHMgYW1vbmcgdGhlc2UgdGFibGVzOlxuIiwKLQkJCQkJCQkJIG5M b29wKSk7CisJCXBnX2xvZ193YXJuaW5nKG5nZXR0ZXh0KCJ0aGVyZSBhcmUgY2lyY3VsYXIg Zm9yZWlnbi1rZXkgY29uc3RyYWludHMgb24gdGhpcyB0YWJsZToiLAorCQkJCQkJCQkidGhl cmUgYXJlIGNpcmN1bGFyIGZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzIGFtb25nIHRoZXNlIHRh YmxlczoiLAorCQkJCQkJCQluTG9vcCkpOwogCQlmb3IgKGkgPSAwOyBpIDwgbkxvb3A7IGkr KykKLQkJCXdyaXRlX21zZyhOVUxMLCAiICAlc1xuIiwgbG9vcFtpXS0+bmFtZSk7Ci0JCXdy aXRlX21zZyhOVUxMLCAiWW91IG1pZ2h0IG5vdCBiZSBhYmxlIHRvIHJlc3RvcmUgdGhlIGR1 bXAgd2l0aG91dCB1c2luZyAtLWRpc2FibGUtdHJpZ2dlcnMgb3IgdGVtcG9yYXJpbHkgZHJv cHBpbmcgdGhlIGNvbnN0cmFpbnRzLlxuIik7Ci0JCXdyaXRlX21zZyhOVUxMLCAiQ29uc2lk ZXIgdXNpbmcgYSBmdWxsIGR1bXAgaW5zdGVhZCBvZiBhIC0tZGF0YS1vbmx5IGR1bXAgdG8g YXZvaWQgdGhpcyBwcm9ibGVtLlxuIik7CisJCQlwZ19sb2dfd2FybmluZygiICAlcyIsIGxv b3BbaV0tPm5hbWUpOworCQlwZ19sb2dfd2FybmluZygiWW91IG1pZ2h0IG5vdCBiZSBhYmxl IHRvIHJlc3RvcmUgdGhlIGR1bXAgd2l0aG91dCB1c2luZyAtLWRpc2FibGUtdHJpZ2dlcnMg b3IgdGVtcG9yYXJpbHkgZHJvcHBpbmcgdGhlIGNvbnN0cmFpbnRzLiIpOworCQlwZ19sb2df d2FybmluZygiQ29uc2lkZXIgdXNpbmcgYSBmdWxsIGR1bXAgaW5zdGVhZCBvZiBhIC0tZGF0 YS1vbmx5IGR1bXAgdG8gYXZvaWQgdGhpcyBwcm9ibGVtLiIpOwogCQlpZiAobkxvb3AgPiAx KQogCQkJcmVtb3ZlT2JqZWN0RGVwZW5kZW5jeShsb29wWzBdLCBsb29wWzFdLT5kdW1wSWQp OwogCQllbHNlCQkJCQkvKiBtdXN0IGJlIGEgc2VsZi1kZXBlbmRlbmN5ICovCkBAIC0xMTMy LDEzICsxMTMwLDEzIEBAIHJlcGFpckRlcGVuZGVuY3lMb29wKER1bXBhYmxlT2JqZWN0ICoq bG9vcCwKIAkgKiBJZiB3ZSBjYW4ndCBmaW5kIGEgcHJpbmNpcGxlZCB3YXkgdG8gYnJlYWsg dGhlIGxvb3AsIGNvbXBsYWluIGFuZCBicmVhawogCSAqIGl0IGluIGFuIGFyYml0cmFyeSBm YXNoaW9uLgogCSAqLwotCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAiV0FSTklORzogY291bGQg bm90IHJlc29sdmUgZGVwZW5kZW5jeSBsb29wIGFtb25nIHRoZXNlIGl0ZW1zOlxuIik7CisJ cGdfbG9nX3dhcm5pbmcoImNvdWxkIG5vdCByZXNvbHZlIGRlcGVuZGVuY3kgbG9vcCBhbW9u ZyB0aGVzZSBpdGVtczoiKTsKIAlmb3IgKGkgPSAwOyBpIDwgbkxvb3A7IGkrKykKIAl7CiAJ CWNoYXIJCWJ1ZlsxMDI0XTsKIAogCQlkZXNjcmliZUR1bXBhYmxlT2JqZWN0KGxvb3BbaV0s IGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIiAgJXNcbiIs IGJ1Zik7CisJCXBnX2xvZ193YXJuaW5nKCIgICVzIiwgYnVmKTsKIAl9CiAKIAlpZiAobkxv b3AgPiAxKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMKaW5kZXggMWQ1MzkxOTNjYS4uMjY2NDI4ZmNh NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYworKysgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAi cGdfYmFja3VwLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKICNpbmNsdWRl ICJmZV91dGlscy9jb25uZWN0LmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgog I2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCiAvKiB2ZXJzaW9uIHN0cmlu ZyB3ZSBleHBlY3QgYmFjayBmcm9tIHBnX2R1bXAgKi8KQEAgLTE2Miw3ICsxNjMsOCBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaW50CQkJb3B0aW5kZXg7CiAKIAlzZXRf cGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX2R1bXAiKSk7 Ci0KKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CisJcGdfbG9nZ2luZ19zZXRfbGV2ZWwo UEdfTE9HX1dBUk5JTkcpOwogCXByb2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwog CiAJaWYgKGFyZ2MgPiAxKQpAQCAtMTg4LDE4ICsxOTAsMTUgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCQkJc3RybGNweShmdWxsX3BhdGgsIHByb2duYW1lLCBzaXplb2Yo ZnVsbF9wYXRoKSk7CiAKIAkJaWYgKHJldCA9PSAtMSkKLQkJCWZwcmludGYoc3RkZXJyLAot CQkJCQlfKCJUaGUgcHJvZ3JhbSBcInBnX2R1bXBcIiBpcyBuZWVkZWQgYnkgJXMgIgotCQkJ CQkgICJidXQgd2FzIG5vdCBmb3VuZCBpbiB0aGVcbiIKLQkJCQkJICAic2FtZSBkaXJlY3Rv cnkgYXMgXCIlc1wiLlxuIgotCQkJCQkgICJDaGVjayB5b3VyIGluc3RhbGxhdGlvbi5cbiIp LAotCQkJCQlwcm9nbmFtZSwgZnVsbF9wYXRoKTsKKwkJCXBnX2xvZ19lcnJvcigiVGhlIHBy b2dyYW0gXCJwZ19kdW1wXCIgaXMgbmVlZGVkIGJ5ICVzIGJ1dCB3YXMgbm90IGZvdW5kIGlu IHRoZVxuIgorCQkJCQkJICJzYW1lIGRpcmVjdG9yeSBhcyBcIiVzXCIuXG4iCisJCQkJCQkg IkNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLiIsCisJCQkJCQkgcHJvZ25hbWUsIGZ1bGxfcGF0 aCk7CiAJCWVsc2UKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCJUaGUgcHJvZ3JhbSBc InBnX2R1bXBcIiB3YXMgZm91bmQgYnkgXCIlc1wiXG4iCi0JCQkJCSAgImJ1dCB3YXMgbm90 IHRoZSBzYW1lIHZlcnNpb24gYXMgJXMuXG4iCi0JCQkJCSAgIkNoZWNrIHlvdXIgaW5zdGFs bGF0aW9uLlxuIiksCi0JCQkJCWZ1bGxfcGF0aCwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vy cm9yKCJUaGUgcHJvZ3JhbSBcInBnX2R1bXBcIiB3YXMgZm91bmQgYnkgXCIlc1wiXG4iCisJ CQkJCQkgImJ1dCB3YXMgbm90IHRoZSBzYW1lIHZlcnNpb24gYXMgJXMuXG4iCisJCQkJCQkg IkNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLiIsCisJCQkJCQkgZnVsbF9wYXRoLCBwcm9nbmFt ZSk7CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIApAQCAtMjgxLDYgKzI4MCw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCQkJY2FzZSAndic6CiAJCQkJdmVyYm9zZSA9 IHRydWU7CisJCQkJcGdfbG9nZ2luZ19zZXRfbGV2ZWwoUEdfTE9HX0lORk8pOwogCQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHBnZHVtcG9wdHMsICIgLXYiKTsKIAkJCQlicmVhazsKIApA QCAtMzI3LDggKzMyNyw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBD b21wbGFpbiBpZiBhbnkgYXJndW1lbnRzIHJlbWFpbiAqLwogCWlmIChvcHRpbmQgPCBhcmdj KQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUg YXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJndltv cHRpbmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1l bnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZwcmlu dGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5c biIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdF9uaWNlbHkoMSk7CkBAIC0zMzcsOCArMzM3 LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIE1ha2Ugc3VyZSB0aGUg dXNlciBoYXNuJ3Qgc3BlY2lmaWVkIGEgbWl4IG9mIGdsb2JhbHMtb25seSBvcHRpb25zICov CiAJaWYgKGdsb2JhbHNfb25seSAmJiByb2xlc19vbmx5KQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBvcHRpb25zIC1nLy0tZ2xvYmFscy1vbmx5IGFuZCAtci8tLXJvbGVzLW9u bHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdf bG9nX2Vycm9yKCJvcHRpb25zIC1nLy0tZ2xvYmFscy1vbmx5IGFuZCAtci8tLXJvbGVzLW9u bHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRy eSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25h bWUpOwogCQlleGl0X25pY2VseSgxKTsKQEAgLTM0Niw4ICszNDUsNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAKIAlpZiAoZ2xvYmFsc19vbmx5ICYmIHRhYmxlc3BhY2Vz X29ubHkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9wdGlvbnMgLWcvLS1nbG9i YWxzLW9ubHkgYW5kIC10Ly0tdGFibGVzcGFjZXMtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dl dGhlclxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm9wdGlvbnMgLWcv LS1nbG9iYWxzLW9ubHkgYW5kIC10Ly0tdGFibGVzcGFjZXMtb25seSBjYW5ub3QgYmUgdXNl ZCB0b2dldGhlciIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIg Zm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXRfbmlj ZWx5KDEpOwpAQCAtMzU1LDE1ICszNTMsMTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCiAJaWYgKGlmX2V4aXN0cyAmJiAhb3V0cHV0X2NsZWFuKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBvcHRpb24gLS1pZi1leGlzdHMgcmVxdWlyZXMgb3B0aW9uIC1j Ly0tY2xlYW5cbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJvcHRpb24g LS1pZi1leGlzdHMgcmVxdWlyZXMgb3B0aW9uIC1jLy0tY2xlYW4iKTsKIAkJZXhpdF9uaWNl bHkoMSk7CiAJfQogCiAJaWYgKHJvbGVzX29ubHkgJiYgdGFibGVzcGFjZXNfb25seSkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3B0aW9ucyAtci8tLXJvbGVzLW9ubHkgYW5k IC10Ly0tdGFibGVzcGFjZXMtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxuIiksCi0J CQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm9wdGlvbnMgLXIvLS1yb2xlcy1vbmx5 IGFuZCAtdC8tLXRhYmxlc3BhY2VzLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsK IAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9y bWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0X25pY2VseSgxKTsKQEAgLTQy NCw4ICs0MjAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkJaWYgKCFj b25uKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjb25uZWN0 IHRvIGRhdGFiYXNlIFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCBwZ2RiKTsKKwkJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgXCIlc1wiIiwgcGdk Yik7CiAJCQlleGl0X25pY2VseSgxKTsKIAkJfQogCX0KQEAgLTQzOSw5ICs0MzQsOCBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkJaWYgKCFjb25uKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlcyBc InBvc3RncmVzXCIgb3IgXCJ0ZW1wbGF0ZTFcIlxuIgotCQkJCQkJCSAgIlBsZWFzZSBzcGVj aWZ5IGFuIGFsdGVybmF0aXZlIGRhdGFiYXNlLlxuIiksCi0JCQkJCXByb2duYW1lKTsKKwkJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2VzIFwicG9zdGdy ZXNcIiBvciBcInRlbXBsYXRlMVwiXG4iCisJCQkJCQkgIlBsZWFzZSBzcGVjaWZ5IGFuIGFs dGVybmF0aXZlIGRhdGFiYXNlLiIpOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVz IC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJCXByb2duYW1lKTsK IAkJCWV4aXRfbmljZWx5KDEpOwpAQCAtNDU2LDggKzQ1MCw4IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkJT1BGID0gZm9wZW4oZmlsZW5hbWUsIFBHX0JJTkFSWV9XKTsK IAkJaWYgKCFPUEYpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90 IG9wZW4gdGhlIG91dHB1dCBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwg ZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBvcGVuIHRoZSBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCSBmaWxlbmFtZSk7 CiAJCQlleGl0X25pY2VseSgxKTsKIAkJfQogCX0KQEAgLTQ3MSw4ICs0NjUsOCBAQCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJewogCQlpZiAoUFFzZXRDbGllbnRFbmNvZGlu Zyhjb25uLCBkdW1wZW5jb2RpbmcpIDwgMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBpbnZhbGlkIGNsaWVudCBlbmNvZGluZyBcIiVzXCIgc3BlY2lmaWVkXG4iKSwKLQkJ CQkJcHJvZ25hbWUsIGR1bXBlbmNvZGluZyk7CisJCQlwZ19sb2dfZXJyb3IoImludmFsaWQg Y2xpZW50IGVuY29kaW5nIFwiJXNcIiBzcGVjaWZpZWQiLAorCQkJCQkJIGR1bXBlbmNvZGlu Zyk7CiAJCQlleGl0X25pY2VseSgxKTsKIAkJfQogCX0KQEAgLTU3OCw3ICs1NzIsNyBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkJLyogc3luYyB0aGUgcmVzdWx0aW5n IGZpbGUsIGVycm9ycyBhcmUgbm90IGZhdGFsICovCiAJCWlmIChkb3N5bmMpCi0JCQkodm9p ZCkgZnN5bmNfZm5hbWUoZmlsZW5hbWUsIGZhbHNlLCBwcm9nbmFtZSk7CisJCQkodm9pZCkg ZnN5bmNfZm5hbWUoZmlsZW5hbWUsIGZhbHNlKTsKIAl9CiAKIAlleGl0X25pY2VseSgwKTsK QEAgLTg0Niw4ICs4NDAsOCBAQCBkdW1wUm9sZXMoUEdjb25uICpjb25uKQogCiAJCWlmIChz dHJuY21wKHJvbGVuYW1lLCAicGdfIiwgMykgPT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiByb2xlIG5hbWUgc3RhcnRpbmcgd2l0aCBcInBnX1wiIHNraXBwZWQgKCVz KVxuIiksCi0JCQkJCXByb2duYW1lLCByb2xlbmFtZSk7CisJCQlwZ19sb2dfd2FybmluZygi cm9sZSBuYW1lIHN0YXJ0aW5nIHdpdGggXCJwZ19cIiBza2lwcGVkICglcykiLAorCQkJCQkJ ICAgcm9sZW5hbWUpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtMTIyOCw4ICsxMjIyLDgg QEAgZHVtcFRhYmxlc3BhY2VzKFBHY29ubiAqY29ubikKIAkJCQkJCQkgIHNwY2FjbCwgcnNw Y2FjbCwKIAkJCQkJCQkgIHNwY293bmVyLCAiIiwgc2VydmVyX3ZlcnNpb24sIGJ1ZikpCiAJ CXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHBhcnNlIEFDTCBsaXN0 ICglcykgZm9yIHRhYmxlc3BhY2UgXCIlc1wiXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHNwY2Fj bCwgc3BjbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSBBQ0wgbGlz dCAoJXMpIGZvciB0YWJsZXNwYWNlIFwiJXNcIiIsCisJCQkJCQkgc3BjYWNsLCBzcGNuYW1l KTsKIAkJCVBRZmluaXNoKGNvbm4pOwogCQkJZXhpdF9uaWNlbHkoMSk7CiAJCX0KQEAgLTEz ODgsOCArMTM4Miw3IEBAIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uKQogCQlpZiAoc3Ry Y21wKGRibmFtZSwgInRlbXBsYXRlMCIpID09IDApCiAJCQljb250aW51ZTsKIAotCQlpZiAo dmVyYm9zZSkKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZHVtcGluZyBkYXRhYmFzZSBc IiVzXCIuLi5cbiIpLCBwcm9nbmFtZSwgZGJuYW1lKTsKKwkJcGdfbG9nX2luZm8oImR1bXBp bmcgZGF0YWJhc2UgXCIlc1wiLi4uIiwgZGJuYW1lKTsKIAogCQkvKgogCQkgKiBXZSBhc3N1 bWUgdGhhdCAidGVtcGxhdGUxIiBhbmQgInBvc3RncmVzIiBhbHJlYWR5IGV4aXN0IGluIHRo ZQpAQCAtMTQxOSw3ICsxNDEyLDcgQEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4pCiAJ CXJldCA9IHJ1blBnRHVtcChkYm5hbWUsIGNyZWF0ZV9vcHRzKTsKIAkJaWYgKHJldCAhPSAw KQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHBnX2R1bXAgZmFpbGVkIG9uIGRh dGFiYXNlIFwiJXNcIiwgZXhpdGluZ1xuIiksIHByb2duYW1lLCBkYm5hbWUpOworCQkJcGdf bG9nX2Vycm9yKCJwZ19kdW1wIGZhaWxlZCBvbiBkYXRhYmFzZSBcIiVzXCIsIGV4aXRpbmci LCBkYm5hbWUpOwogCQkJZXhpdF9uaWNlbHkoMSk7CiAJCX0KIApAQCAtMTQyOCw4ICsxNDIx LDggQEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4pCiAJCQlPUEYgPSBmb3BlbihmaWxl bmFtZSwgUEdfQklOQVJZX0EpOwogCQkJaWYgKCFPUEYpCiAJCQl7Ci0JCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmUtb3BlbiB0aGUgb3V0cHV0IGZpbGUgXCIlc1wi OiAlc1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7 CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmUtb3BlbiB0aGUgb3V0cHV0IGZpbGUg XCIlc1wiOiAlbSIsCisJCQkJCQkJIGZpbGVuYW1lKTsKIAkJCQlleGl0X25pY2VseSgxKTsK IAkJCX0KIAkJfQpAQCAtMTQ3Miw4ICsxNDY1LDcgQEAgcnVuUGdEdW1wKGNvbnN0IGNoYXIg KmRibmFtZSwgY29uc3QgY2hhciAqY3JlYXRlX29wdHMpCiAKIAlhcHBlbmRTaGVsbFN0cmlu ZyhjbWQsIGNvbm5zdHJidWYtPmRhdGEpOwogCi0JaWYgKHZlcmJvc2UpCi0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogcnVubmluZyBcIiVzXCJcbiIpLCBwcm9nbmFtZSwgY21kLT5kYXRh KTsKKwlwZ19sb2dfaW5mbygicnVubmluZyBcIiVzXCIiLCBjbWQtPmRhdGEpOwogCiAJZmZs dXNoKHN0ZG91dCk7CiAJZmZsdXNoKHN0ZGVycik7CkBAIC0xNTczLDcgKzE1NjUsNyBAQCBj b25uZWN0RGF0YWJhc2UoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjb25uZWN0 aW9uX3N0cmluZywKIAkJCWNvbm5fb3B0cyA9IFBRY29ubmluZm9QYXJzZShjb25uZWN0aW9u X3N0cmluZywgJmVycl9tc2cpOwogCQkJaWYgKGNvbm5fb3B0cyA9PSBOVUxMKQogCQkJewot CQkJCWZwcmludGYoc3RkZXJyLCAiJXM6ICVzIiwgcHJvZ25hbWUsIGVycl9tc2cpOworCQkJ CXBnX2xvZ19lcnJvcigiJXMiLCBlcnJfbXNnKTsKIAkJCQlleGl0X25pY2VseSgxKTsKIAkJ CX0KIApAQCAtMTY0Myw4ICsxNjM1LDcgQEAgY29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIg KmRibmFtZSwgY29uc3QgY2hhciAqY29ubmVjdGlvbl9zdHJpbmcsCiAKIAkJaWYgKCFjb25u KQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjb25uZWN0IHRv IGRhdGFiYXNlIFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCBkYm5hbWUpOworCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVzXCIiLCBkYm5h bWUpOwogCQkJZXhpdF9uaWNlbHkoMSk7CiAJCX0KIApAQCAtMTY2NSw5ICsxNjU2LDggQEAg Y29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqY29ubmVj dGlvbl9zdHJpbmcsCiAJewogCQlpZiAoZmFpbF9vbl9lcnJvcikKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBc IiVzXCI6ICVzIiksCi0JCQkJCXByb2duYW1lLCBkYm5hbWUsIFBRZXJyb3JNZXNzYWdlKGNv bm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2Ug XCIlc1wiOiAlcyIsCisJCQkJCQkgZGJuYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJ CQlleGl0X25pY2VseSgxKTsKIAkJfQogCQllbHNlCkBAIC0xNjk2LDE0ICsxNjg2LDE0IEBA IGNvbm5lY3REYXRhYmFzZShjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNvbm5l Y3Rpb25fc3RyaW5nLAogCXJlbW90ZXZlcnNpb25fc3RyID0gUFFwYXJhbWV0ZXJTdGF0dXMo Y29ubiwgInNlcnZlcl92ZXJzaW9uIik7CiAJaWYgKCFyZW1vdGV2ZXJzaW9uX3N0cikKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGdldCBzZXJ2ZXIgdmVyc2lv blxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0IHNlcnZl ciB2ZXJzaW9uIik7CiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIAlzZXJ2ZXJfdmVyc2lvbiA9 IFBRc2VydmVyVmVyc2lvbihjb25uKTsKIAlpZiAoc2VydmVyX3ZlcnNpb24gPT0gMCkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHBhcnNlIHNlcnZlciB2ZXJz aW9uIFwiJXNcIlxuIiksCi0JCQkJcHJvZ25hbWUsIHJlbW90ZXZlcnNpb25fc3RyKTsKKwkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2Ugc2VydmVyIHZlcnNpb24gXCIlc1wiIiwK KwkJCQkJIHJlbW90ZXZlcnNpb25fc3RyKTsKIAkJZXhpdF9uaWNlbHkoMSk7CiAJfQogCkBA IC0xNzE3LDkgKzE3MDcsOSBAQCBjb25uZWN0RGF0YWJhc2UoY29uc3QgY2hhciAqZGJuYW1l LCBjb25zdCBjaGFyICpjb25uZWN0aW9uX3N0cmluZywKIAkJJiYgKHNlcnZlcl92ZXJzaW9u IDwgODAwMDAgfHwKIAkJCShzZXJ2ZXJfdmVyc2lvbiAvIDEwMCkgPiAobXlfdmVyc2lvbiAv IDEwMCkpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oInNlcnZlciB2ZXJzaW9uOiAlczsg JXMgdmVyc2lvbjogJXNcbiIpLAotCQkJCXJlbW90ZXZlcnNpb25fc3RyLCBwcm9nbmFtZSwg UEdfVkVSU0lPTik7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCJhYm9ydGluZyBiZWNhdXNlIG9m IHNlcnZlciB2ZXJzaW9uIG1pc21hdGNoXG4iKSk7CisJCXBnX2xvZ19lcnJvcigic2VydmVy IHZlcnNpb246ICVzOyAlcyB2ZXJzaW9uOiAlcyIsCisJCQkJCSByZW1vdGV2ZXJzaW9uX3N0 ciwgcHJvZ25hbWUsIFBHX1ZFUlNJT04pOworCQlwZ19sb2dfZXJyb3IoImFib3J0aW5nIGJl Y2F1c2Ugb2Ygc2VydmVyIHZlcnNpb24gbWlzbWF0Y2giKTsKIAkJZXhpdF9uaWNlbHkoMSk7 CiAJfQogCkBAIC0xNzc0LDE3ICsxNzY0LDE0IEBAIGV4ZWN1dGVRdWVyeShQR2Nvbm4gKmNv bm4sIGNvbnN0IGNoYXIgKnF1ZXJ5KQogewogCVBHcmVzdWx0ICAgKnJlczsKIAotCWlmICh2 ZXJib3NlKQotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGV4ZWN1dGluZyAlc1xuIiksIHBy b2duYW1lLCBxdWVyeSk7CisJcGdfbG9nX2luZm8oImV4ZWN1dGluZyAlcyIsIHF1ZXJ5KTsK IAogCXJlcyA9IFBRZXhlYyhjb25uLCBxdWVyeSk7CiAJaWYgKCFyZXMgfHwKIAkJUFFyZXN1 bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IHF1ZXJ5IGZhaWxlZDogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1l c3NhZ2UoY29ubikpOwotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHF1ZXJ5IHdhczogJXNc biIpLAotCQkJCXByb2duYW1lLCBxdWVyeSk7CisJCXBnX2xvZ19lcnJvcigicXVlcnkgZmFp bGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJxdWVy eSB3YXM6ICVzIiwgcXVlcnkpOwogCQlQUWZpbmlzaChjb25uKTsKIAkJZXhpdF9uaWNlbHko MSk7CiAJfQpAQCAtMTgwMCwxNyArMTc4NywxNCBAQCBleGVjdXRlQ29tbWFuZChQR2Nvbm4g KmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5KQogewogCVBHcmVzdWx0ICAgKnJlczsKIAotCWlm ICh2ZXJib3NlKQotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGV4ZWN1dGluZyAlc1xuIiks IHByb2duYW1lLCBxdWVyeSk7CisJcGdfbG9nX2luZm8oImV4ZWN1dGluZyAlcyIsIHF1ZXJ5 KTsKIAogCXJlcyA9IFBRZXhlYyhjb25uLCBxdWVyeSk7CiAJaWYgKCFyZXMgfHwKIAkJUFFy ZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBxdWVyeSBmYWlsZWQ6ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRZXJy b3JNZXNzYWdlKGNvbm4pKTsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBxdWVyeSB3YXM6 ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcXVlcnkpOworCQlwZ19sb2dfZXJyb3IoInF1ZXJ5 IGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigi cXVlcnkgd2FzOiAlcyIsIHF1ZXJ5KTsKIAkJUFFmaW5pc2goY29ubik7CiAJCWV4aXRfbmlj ZWx5KDEpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jCmluZGV4IDQ0MDEyZmY0NGQuLjk2YzFk NDFkMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1 ZGUgInBhcmFsbGVsLmgiCiAjaW5jbHVkZSAicGdfYmFja3VwX3V0aWxzLmgiCiAKKyNpbmNs dWRlICJmZV91dGlscy9sb2dnaW5nLmgiCisKIAogc3RhdGljIHZvaWQgdXNhZ2UoY29uc3Qg Y2hhciAqcHJvZ25hbWUpOwogCkBAIC0xMjksNiArMTMxLDcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJfTsKIAogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwg UEdfVEVYVERPTUFJTigicGdfZHVtcCIpKTsKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7 CiAKIAlpbml0X3BhcmFsbGVsX2R1bXBfdXRpbHMoKTsKIApAQCAtMjk2LDggKzI5OSw4IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCS8qIENvbXBsYWluIGlmIGFueSBhcmd1 bWVudHMgcmVtYWluICovCiAJaWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlz IFwiJXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2df ZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNc IikiLAorCQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBc IiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUp OwogCQlleGl0X25pY2VseSgxKTsKQEAgLTMwOCw4ICszMTEsNyBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAl7CiAJCWlmIChvcHRzLT5maWxlbmFtZSkKIAkJewotCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBvcHRpb25zIC1kLy0tZGJuYW1lIGFuZCAtZi8tLWZpbGUg Y2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19s b2dfZXJyb3IoIm9wdGlvbnMgLWQvLS1kYm5hbWUgYW5kIC1mLy0tZmlsZSBjYW5ub3QgYmUg dXNlZCB0b2dldGhlciIpOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVs cFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJCXByb2duYW1lKTsKIAkJCWV4 aXRfbmljZWx5KDEpOwpAQCAtMzE5LDE1ICszMjEsMTMgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAKIAlpZiAob3B0cy0+ZGF0YU9ubHkgJiYgb3B0cy0+c2NoZW1hT25seSkK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3B0aW9ucyAtcy8tLXNjaGVtYS1vbmx5 IGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxuIiksCi0JCQkJ cHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm9wdGlvbnMgLXMvLS1zY2hlbWEtb25seSBh bmQgLWEvLS1kYXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsKIAkJZXhpdF9u aWNlbHkoMSk7CiAJfQogCiAJaWYgKG9wdHMtPmRhdGFPbmx5ICYmIG9wdHMtPmRyb3BTY2hl bWEpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9wdGlvbnMgLWMvLS1jbGVhbiBh bmQgLWEvLS1kYXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcbiIpLAotCQkJCXBy b2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJvcHRpb25zIC1jLy0tY2xlYW4gYW5kIC1hLy0t ZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CiAJCWV4aXRfbmljZWx5KDEp OwogCX0KIApAQCAtMzM3LDE0ICszMzcsMTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJICovCiAJaWYgKG9wdHMtPmNyZWF0ZURCICYmIG9wdHMtPnNpbmdsZV90eG4pCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9wdGlvbnMgLUMvLS1jcmVhdGUgYW5kIC0x Ly0tc2luZ2xlLXRyYW5zYWN0aW9uIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXG4iKSwKLQkJ CQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigib3B0aW9ucyAtQy8tLWNyZWF0ZSBhbmQg LTEvLS1zaW5nbGUtdHJhbnNhY3Rpb24gY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsKIAkJ ZXhpdF9uaWNlbHkoMSk7CiAJfQogCiAJaWYgKG51bVdvcmtlcnMgPD0gMCkKIAl7Ci0JCWZw cmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBudW1iZXIgb2YgcGFyYWxsZWwgam9ic1xu IiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIG51bWJlciBvZiBwYXJh bGxlbCBqb2JzIik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0zNTIsOCArMzUxLDggQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAjaWZkZWYgV0lOMzIKIAlpZiAobnVtV29ya2Vy cyA+IE1BWElNVU1fV0FJVF9PQkpFQ1RTKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBqb2JzIGlzICVkXG4iKSwKLQkJCQlwcm9n bmFtZSwgTUFYSU1VTV9XQUlUX09CSkVDVFMpOworCQlwZ19sb2dfZXJyb3IoIm1heGltdW0g bnVtYmVyIG9mIHBhcmFsbGVsIGpvYnMgaXMgJWQiLAorCQkJCQkgTUFYSU1VTV9XQUlUX09C SkVDVFMpOwogCQlleGl0KDEpOwogCX0KICNlbmRpZgpAQCAtMzYxLDggKzM2MCw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCS8qIENhbid0IGRvIHNpbmdsZS10eG4gbW9k ZSB3aXRoIG11bHRpcGxlIGNvbm5lY3Rpb25zICovCiAJaWYgKG9wdHMtPnNpbmdsZV90eG4g JiYgbnVtV29ya2VycyA+IDEpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNhbm5v dCBzcGVjaWZ5IGJvdGggLS1zaW5nbGUtdHJhbnNhY3Rpb24gYW5kIG11bHRpcGxlIGpvYnNc biIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3Qgc3BlY2lmeSBi b3RoIC0tc2luZ2xlLXRyYW5zYWN0aW9uIGFuZCBtdWx0aXBsZSBqb2JzIik7CiAJCWV4aXRf bmljZWx5KDEpOwogCX0KIApAQCAtMzc4LDggKzM3Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCiAJaWYgKGlmX2V4aXN0cyAmJiAhb3B0cy0+ZHJvcFNjaGVtYSkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVz IG9wdGlvbiAtYy8tLWNsZWFuXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJv cigib3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAtYy8tLWNsZWFuIik7CiAJ CWV4aXRfbmljZWx5KDEpOwogCX0KIAlvcHRzLT5pZl9leGlzdHMgPSBpZl9leGlzdHM7CkBA IC00MDUsNyArNDAyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJYnJl YWs7CiAKIAkJCWRlZmF1bHQ6Ci0JCQkJd3JpdGVfbXNnKE5VTEwsICJ1bnJlY29nbml6ZWQg YXJjaGl2ZSBmb3JtYXQgXCIlc1wiOyBwbGVhc2Ugc3BlY2lmeSBcImNcIiwgXCJkXCIsIG9y IFwidFwiXG4iLAorCQkJCXBnX2xvZ19lcnJvcigidW5yZWNvZ25pemVkIGFyY2hpdmUgZm9y bWF0IFwiJXNcIjsgcGxlYXNlIHNwZWNpZnkgXCJjXCIsIFwiZFwiLCBvciBcInRcIiIsCiAJ CQkJCQkgIG9wdHMtPmZvcm1hdE5hbWUpOwogCQkJCWV4aXRfbmljZWx5KDEpOwogCQl9CkBA IC00NDUsOCArNDQyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAkvKiBk b25lLCBwcmludCBhIHN1bW1hcnkgb2YgaWdub3JlZCBlcnJvcnMgKi8KIAlpZiAoQUgtPm5f ZXJyb3JzKQotCQlmcHJpbnRmKHN0ZGVyciwgXygiV0FSTklORzogZXJyb3JzIGlnbm9yZWQg b24gcmVzdG9yZTogJWRcbiIpLAotCQkJCUFILT5uX2Vycm9ycyk7CisJCXBnX2xvZ193YXJu aW5nKCJlcnJvcnMgaWdub3JlZCBvbiByZXN0b3JlOiAlZCIsIEFILT5uX2Vycm9ycyk7CiAK IAkvKiBBSCBtYXkgYmUgZnJlZWQgaW4gQ2xvc2VBcmNoaXZlPyAqLwogCWV4aXRfY29kZSA9 IEFILT5uX2Vycm9ycyA/IDEgOiAwOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IGE4 NzVkNTQwYjguLjg3ZDI1MDk5YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAw MV9iYXNpYy5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTMw LDEyMyArMzAsMTIzIEBACiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywg J3FxcScsICdhYmMnIF0sCi0JcXIvXFFwZ19kdW1wOiB0b28gbWFueSBjb21tYW5kLWxpbmUg YXJndW1lbnRzIChmaXJzdCBpcyAiYWJjIilcRS8sCi0JJ3BnX2R1bXA6IHRvbyBtYW55IGNv bW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzICJhc2QiKScpOworCXFyL1xRcGdfZHVt cDogZXJyb3I6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzICJh YmMiKVxFLywKKwkncGdfZHVtcDogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cycp OwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfcmVzdG9yZScsICdxcXEnLCAnYWJj JyBdLAotCXFyL1xRcGdfcmVzdG9yZTogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50 cyAoZmlyc3QgaXMgImFiYyIpXEUvLAotCSdwZ19yZXN0b3JlIHRvbyBtYW55IGNvbW1hbmQt bGluZSBhcmd1bWVudHMgKGZpcnN0IGlzICJhYmMiKScpOworCXFyL1xRcGdfcmVzdG9yZTog ZXJyb3I6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzICJhYmMi KVxFLywKKwkncGdfcmVzdG9yZTogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cycp OwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcGFsbCcsICdxcXEnLCAnYWJj JyBdLAotCXFyL1xRcGdfZHVtcGFsbDogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50 cyAoZmlyc3QgaXMgInFxcSIpXEUvLAotCSdwZ19kdW1wYWxsOiB0b28gbWFueSBjb21tYW5k LWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyAicXFxIiknKTsKKwlxci9cUXBnX2R1bXBhbGw6 IGVycm9yOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyAicXFx IilcRS8sCisJJ3BnX2R1bXBhbGw6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMn KTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXAnLCAnLXMnLCAnLWEnIF0s Ci0JcXIvXFFwZ19kdW1wOiBvcHRpb25zIC1zXC8tLXNjaGVtYS1vbmx5IGFuZCAtYVwvLS1k YXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcRS8sCisJcXIvXFFwZ19kdW1wOiBl cnJvcjogb3B0aW9ucyAtc1wvLS1zY2hlbWEtb25seSBhbmQgLWFcLy0tZGF0YS1vbmx5IGNh bm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAogCSdwZ19kdW1wOiBvcHRpb25zIC1zLy0tc2No ZW1hLW9ubHkgYW5kIC1hLy0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJwog KTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX3Jlc3RvcmUnLCAnLXMnLCAnLWEn IF0sCi0JcXIvXFFwZ19yZXN0b3JlOiBvcHRpb25zIC1zXC8tLXNjaGVtYS1vbmx5IGFuZCAt YVwvLS1kYXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcRS8sCisJcXIvXFFwZ19y ZXN0b3JlOiBlcnJvcjogb3B0aW9ucyAtc1wvLS1zY2hlbWEtb25seSBhbmQgLWFcLy0tZGF0 YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAogCSdwZ19yZXN0b3JlOiBvcHRp b25zIC1zLy0tc2NoZW1hLW9ubHkgYW5kIC1hLy0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2Vk IHRvZ2V0aGVyJwogKTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX3Jlc3RvcmUn LCAnLWQnLCAneHh4JywgJy1mJywgJ3h4eCcgXSwKLQlxci9cUXBnX3Jlc3RvcmU6IG9wdGlv bnMgLWRcLy0tZGJuYW1lIGFuZCAtZlwvLS1maWxlIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVy XEUvLAorCXFyL1xRcGdfcmVzdG9yZTogZXJyb3I6IG9wdGlvbnMgLWRcLy0tZGJuYW1lIGFu ZCAtZlwvLS1maWxlIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAogCSdwZ19yZXN0b3Jl OiBvcHRpb25zIC1kLy0tZGJuYW1lIGFuZCAtZi8tLWZpbGUgY2Fubm90IGJlIHVzZWQgdG9n ZXRoZXInKTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXAnLCAnLWMnLCAn LWEnIF0sCi0JcXIvXFFwZ19kdW1wOiBvcHRpb25zIC1jXC8tLWNsZWFuIGFuZCAtYVwvLS1k YXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcRS8sCisJcXIvXFFwZ19kdW1wOiBl cnJvcjogb3B0aW9ucyAtY1wvLS1jbGVhbiBhbmQgLWFcLy0tZGF0YS1vbmx5IGNhbm5vdCBi ZSB1c2VkIHRvZ2V0aGVyXEUvLAogCSdwZ19kdW1wOiBvcHRpb25zIC1jLy0tY2xlYW4gYW5k IC1hLy0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJyk7CiAKIGNvbW1hbmRf ZmFpbHNfbGlrZSgKIAlbICdwZ19yZXN0b3JlJywgJy1jJywgJy1hJyBdLAotCXFyL1xRcGdf cmVzdG9yZTogb3B0aW9ucyAtY1wvLS1jbGVhbiBhbmQgLWFcLy0tZGF0YS1vbmx5IGNhbm5v dCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAorCXFyL1xRcGdfcmVzdG9yZTogZXJyb3I6IG9wdGlv bnMgLWNcLy0tY2xlYW4gYW5kIC1hXC8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dl dGhlclxFLywKIAkncGdfcmVzdG9yZTogb3B0aW9ucyAtYy8tLWNsZWFuIGFuZCAtYS8tLWRh dGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcicKICk7CiAKIGNvbW1hbmRfZmFpbHNf bGlrZSgKIAlbICdwZ19kdW1wJywgJy0taWYtZXhpc3RzJyBdLAotCXFyL1xRcGdfZHVtcDog b3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAtY1wvLS1jbGVhblxFLywKKwlx ci9cUXBnX2R1bXA6IGVycm9yOiBvcHRpb24gLS1pZi1leGlzdHMgcmVxdWlyZXMgb3B0aW9u IC1jXC8tLWNsZWFuXEUvLAogCSdwZ19kdW1wOiBvcHRpb24gLS1pZi1leGlzdHMgcmVxdWly ZXMgb3B0aW9uIC1jLy0tY2xlYW4nKTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3Bn X2R1bXAnLCAnLWozJyBdLAotCXFyL1xRcGdfZHVtcDogcGFyYWxsZWwgYmFja3VwIG9ubHkg c3VwcG9ydGVkIGJ5IHRoZSBkaXJlY3RvcnkgZm9ybWF0XEUvLAorCXFyL1xRcGdfZHVtcDog ZXJyb3I6IHBhcmFsbGVsIGJhY2t1cCBvbmx5IHN1cHBvcnRlZCBieSB0aGUgZGlyZWN0b3J5 IGZvcm1hdFxFLywKIAkncGdfZHVtcDogcGFyYWxsZWwgYmFja3VwIG9ubHkgc3VwcG9ydGVk IGJ5IHRoZSBkaXJlY3RvcnkgZm9ybWF0Jyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlb ICdwZ19kdW1wJywgJy1qJywgJy0xJyBdLAotCXFyL1xRcGdfZHVtcDogaW52YWxpZCBudW1i ZXIgb2YgcGFyYWxsZWwgam9ic1xFLywKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBpbnZhbGlk IG51bWJlciBvZiBwYXJhbGxlbCBqb2JzXEUvLAogCSdwZ19kdW1wOiBpbnZhbGlkIG51bWJl ciBvZiBwYXJhbGxlbCBqb2JzJyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19k dW1wJywgJy1GJywgJ2dhcmJhZ2UnIF0sCi0JcXIvXFFwZ19kdW1wOiBpbnZhbGlkIG91dHB1 dCBmb3JtYXRcRS8sCisJcXIvXFFwZ19kdW1wOiBlcnJvcjogaW52YWxpZCBvdXRwdXQgZm9y bWF0XEUvLAogCSdwZ19kdW1wOiBpbnZhbGlkIG91dHB1dCBmb3JtYXQnKTsKIAogY29tbWFu ZF9mYWlsc19saWtlKAogCVsgJ3BnX3Jlc3RvcmUnLCAnLWonLCAnLTEnIF0sCi0JcXIvXFFw Z19yZXN0b3JlOiBpbnZhbGlkIG51bWJlciBvZiBwYXJhbGxlbCBqb2JzXEUvLAorCXFyL1xR cGdfcmVzdG9yZTogZXJyb3I6IGludmFsaWQgbnVtYmVyIG9mIHBhcmFsbGVsIGpvYnNcRS8s CiAJJ3BnX3Jlc3RvcmU6IGludmFsaWQgbnVtYmVyIG9mIHBhcmFsbGVsIGpvYnMnKTsKIAog Y29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX3Jlc3RvcmUnLCAnLS1zaW5nbGUtdHJhbnNh Y3Rpb24nLCAnLWozJyBdLAotCXFyL1xRcGdfcmVzdG9yZTogY2Fubm90IHNwZWNpZnkgYm90 aCAtLXNpbmdsZS10cmFuc2FjdGlvbiBhbmQgbXVsdGlwbGUgam9ic1xFLywKKwlxci9cUXBn X3Jlc3RvcmU6IGVycm9yOiBjYW5ub3Qgc3BlY2lmeSBib3RoIC0tc2luZ2xlLXRyYW5zYWN0 aW9uIGFuZCBtdWx0aXBsZSBqb2JzXEUvLAogCSdwZ19yZXN0b3JlOiBjYW5ub3Qgc3BlY2lm eSBib3RoIC0tc2luZ2xlLXRyYW5zYWN0aW9uIGFuZCBtdWx0aXBsZSBqb2JzJyk7CiAKIGNv bW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy1aJywgJy0xJyBdLAotCXFyL1xR cGdfZHVtcDogY29tcHJlc3Npb24gbGV2ZWwgbXVzdCBiZSBpbiByYW5nZSAwLi45XEUvLAor CXFyL1xRcGdfZHVtcDogZXJyb3I6IGNvbXByZXNzaW9uIGxldmVsIG11c3QgYmUgaW4gcmFu Z2UgMC4uOVxFLywKIAkncGdfZHVtcDogY29tcHJlc3Npb24gbGV2ZWwgbXVzdCBiZSBpbiBy YW5nZSAwLi45Jyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19yZXN0b3JlJywg Jy0taWYtZXhpc3RzJyBdLAotCXFyL1xRcGdfcmVzdG9yZTogb3B0aW9uIC0taWYtZXhpc3Rz IHJlcXVpcmVzIG9wdGlvbiAtY1wvLS1jbGVhblxFLywKKwlxci9cUXBnX3Jlc3RvcmU6IGVy cm9yOiBvcHRpb24gLS1pZi1leGlzdHMgcmVxdWlyZXMgb3B0aW9uIC1jXC8tLWNsZWFuXEUv LAogCSdwZ19yZXN0b3JlOiBvcHRpb24gLS1pZi1leGlzdHMgcmVxdWlyZXMgb3B0aW9uIC1j Ly0tY2xlYW4nKTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX3Jlc3RvcmUnLCAn LUYnLCAnZ2FyYmFnZScgXSwKLQlxci9cUXBnX3Jlc3RvcmU6IHVucmVjb2duaXplZCBhcmNo aXZlIGZvcm1hdCAiZ2FyYmFnZSI7XEUvLAorCXFyL1xRcGdfcmVzdG9yZTogZXJyb3I6IHVu cmVjb2duaXplZCBhcmNoaXZlIGZvcm1hdCAiZ2FyYmFnZSI7XEUvLAogCSdwZ19kdW1wOiB1 bnJlY29nbml6ZWQgYXJjaGl2ZSBmb3JtYXQnKTsKIAogY29tbWFuZF9mYWlsc19saWtlKAog CVsgJ3BnX2R1bXAnLCAnLS1vbi1jb25mbGljdC1kby1ub3RoaW5nJyBdLAotCXFyL1xRcGdf ZHVtcDogb3B0aW9uIC0tb24tY29uZmxpY3QtZG8tbm90aGluZyByZXF1aXJlcyBvcHRpb24g LS1pbnNlcnRzIG9yIC0tY29sdW1uLWluc2VydHNcRS8sCisJcXIvXFFwZ19kdW1wOiBlcnJv cjogb3B0aW9uIC0tb24tY29uZmxpY3QtZG8tbm90aGluZyByZXF1aXJlcyBvcHRpb24gLS1p bnNlcnRzIG9yIC0tY29sdW1uLWluc2VydHNcRS8sCiAJJ3BnX2R1bXA6IG9wdGlvbiAtLW9u LWNvbmZsaWN0LWRvLW5vdGhpbmcgcmVxdWlyZXMgb3B0aW9uIC0taW5zZXJ0cyBvciAtLWNv bHVtbi1pbnNlcnRzJyk7CiAKICMgcGdfZHVtcGFsbCBjb21tYW5kLWxpbmUgYXJndW1lbnQg Y2hlY2tzCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcGFsbCcsICctZycsICct cicgXSwKLQlxci9cUXBnX2R1bXBhbGw6IG9wdGlvbnMgLWdcLy0tZ2xvYmFscy1vbmx5IGFu ZCAtclwvLS1yb2xlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAorCXFyL1xR cGdfZHVtcGFsbDogZXJyb3I6IG9wdGlvbnMgLWdcLy0tZ2xvYmFscy1vbmx5IGFuZCAtclwv LS1yb2xlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAogCSdwZ19kdW1wYWxs OiBvcHRpb25zIC1nLy0tZ2xvYmFscy1vbmx5IGFuZCAtci8tLXJvbGVzLW9ubHkgY2Fubm90 IGJlIHVzZWQgdG9nZXRoZXInCiApOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdf ZHVtcGFsbCcsICctZycsICctdCcgXSwKLQlxci9cUXBnX2R1bXBhbGw6IG9wdGlvbnMgLWdc Ly0tZ2xvYmFscy1vbmx5IGFuZCAtdFwvLS10YWJsZXNwYWNlcy1vbmx5IGNhbm5vdCBiZSB1 c2VkIHRvZ2V0aGVyXEUvLAorCXFyL1xRcGdfZHVtcGFsbDogZXJyb3I6IG9wdGlvbnMgLWdc Ly0tZ2xvYmFscy1vbmx5IGFuZCAtdFwvLS10YWJsZXNwYWNlcy1vbmx5IGNhbm5vdCBiZSB1 c2VkIHRvZ2V0aGVyXEUvLAogCSdwZ19kdW1wYWxsOiBvcHRpb25zIC1nLy0tZ2xvYmFscy1v bmx5IGFuZCAtdC8tLXRhYmxlc3BhY2VzLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIn CiApOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcGFsbCcsICctcicsICct dCcgXSwKLQlxci9cUXBnX2R1bXBhbGw6IG9wdGlvbnMgLXJcLy0tcm9sZXMtb25seSBhbmQg LXRcLy0tdGFibGVzcGFjZXMtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKKwlx ci9cUXBnX2R1bXBhbGw6IGVycm9yOiBvcHRpb25zIC1yXC8tLXJvbGVzLW9ubHkgYW5kIC10 XC8tLXRhYmxlc3BhY2VzLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcRS8sCiAJJ3Bn X2R1bXBhbGw6IG9wdGlvbnMgLXIvLS1yb2xlcy1vbmx5IGFuZCAtdC8tLXRhYmxlc3BhY2Vz LW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXInCiApOwogCiBjb21tYW5kX2ZhaWxzX2xp a2UoCiAJWyAncGdfZHVtcGFsbCcsICctLWlmLWV4aXN0cycgXSwKLQlxci9cUXBnX2R1bXBh bGw6IG9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBvcHRpb24gLWNcLy0tY2xlYW5cRS8s CisJcXIvXFFwZ19kdW1wYWxsOiBlcnJvcjogb3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVz IG9wdGlvbiAtY1wvLS1jbGVhblxFLywKIAkncGdfZHVtcGFsbDogb3B0aW9uIC0taWYtZXhp c3RzIHJlcXVpcmVzIG9wdGlvbiAtYy8tLWNsZWFuJyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlr ZSgKIAlbICdwZ19yZXN0b3JlJywgJy1DJywgJy0xJyBdLAotCXFyL1xRcGdfcmVzdG9yZTog b3B0aW9ucyAtQ1wvLS1jcmVhdGUgYW5kIC0xXC8tLXNpbmdsZS10cmFuc2FjdGlvbiBjYW5u b3QgYmUgdXNlZCB0b2dldGhlclxFLywKKwlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiBvcHRp b25zIC1DXC8tLWNyZWF0ZSBhbmQgLTFcLy0tc2luZ2xlLXRyYW5zYWN0aW9uIGNhbm5vdCBi ZSB1c2VkIHRvZ2V0aGVyXEUvLAogCSdwZ19yZXN0b3JlOiBvcHRpb25zIC1DXC8tLWNyZWF0 ZSBhbmQgLTFcLy0tc2luZ2xlLXRyYW5zYWN0aW9uIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVy JwogKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIv c3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggMjQ1ZmNiZjVjZS4uYTk0 OTNlY2NjNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTMyMDEsOCArMzIw MSw4IEBACiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy1wJywgIiRw b3J0IiwgJ3FxcScgXSwKLQlxci9cUXBnX2R1bXA6IFthcmNoaXZlciAoZGIpXSBjb25uZWN0 aW9uIHRvIGRhdGFiYXNlICJxcXEiIGZhaWxlZDogRkFUQUw6ICBkYXRhYmFzZSAicXFxIiBk b2VzIG5vdCBleGlzdFxFLywKLQkncGdfZHVtcDogW2FyY2hpdmVyIChkYildIGNvbm5lY3Rp b24gdG8gZGF0YWJhc2UgInFxcSIgZmFpbGVkOiBGQVRBTDogIGRhdGFiYXNlICJxcXEiIGRv ZXMgbm90IGV4aXN0JworCXFyL1xRcGdfZHVtcDogZXJyb3I6IGNvbm5lY3Rpb24gdG8gZGF0 YWJhc2UgInFxcSIgZmFpbGVkOiBGQVRBTDogIGRhdGFiYXNlICJxcXEiIGRvZXMgbm90IGV4 aXN0XEUvLAorCSdwZ19kdW1wOiBlcnJvcjogY29ubmVjdGlvbiB0byBkYXRhYmFzZSAicXFx IiBmYWlsZWQ6IEZBVEFMOiAgZGF0YWJhc2UgInFxcSIgZG9lcyBub3QgZXhpc3QnCiApOwog CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzIxMCwz MCArMzIxMCwzMCBAQAogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICct cCcsICIkcG9ydCIsICctLXJvbGU9cmVncmVzc19kdW1wX3Rlc3Rfcm9sZScgXSwKLQlxci9c UXBnX2R1bXA6IFthcmNoaXZlciAoZGIpXSBxdWVyeSBmYWlsZWQ6IEVSUk9SOiAgcGVybWlz c2lvbiBkZW5pZWQgZm9yXEUvLAotCSdwZ19kdW1wOiBbYXJjaGl2ZXIgKGRiKV0gcXVlcnkg ZmFpbGVkOiBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvcicpOworCXFyL1xRcGdfZHVt cDogZXJyb3I6IHF1ZXJ5IGZhaWxlZDogRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Jc RS8sCisJJ3BnX2R1bXA6IGVycm9yOiBxdWVyeSBmYWlsZWQ6IEVSUk9SOiAgcGVybWlzc2lv biBkZW5pZWQgZm9yJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAjIFRlc3QgZHVtcGluZyBhIG5vbi1leGlzdGVudCBzY2hlbWEsIHRhYmxlLCBh bmQgcGF0dGVybnMgd2l0aCAtLXN0cmljdC1uYW1lcwogCiBjb21tYW5kX2ZhaWxzX2xpa2Uo CiAJWyAncGdfZHVtcCcsICctcCcsICIkcG9ydCIsICctbicsICdub25leGlzdGFudCcgXSwK LQlxci9cUXBnX2R1bXA6IG5vIG1hdGNoaW5nIHNjaGVtYXMgd2VyZSBmb3VuZFxFLywKKwlx ci9cUXBnX2R1bXA6IGVycm9yOiBubyBtYXRjaGluZyBzY2hlbWFzIHdlcmUgZm91bmRcRS8s CiAJJ3BnX2R1bXA6IG5vIG1hdGNoaW5nIHNjaGVtYXMgd2VyZSBmb3VuZCcpOwogCiBjb21t YW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICctcCcsICIkcG9ydCIsICctdCcsICdu b25leGlzdGFudCcgXSwKLQlxci9cUXBnX2R1bXA6IG5vIG1hdGNoaW5nIHRhYmxlcyB3ZXJl IGZvdW5kXEUvLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6IG5vIG1hdGNoaW5nIHRhYmxlcyB3 ZXJlIGZvdW5kXEUvLAogCSdwZ19kdW1wOiBubyBtYXRjaGluZyB0YWJsZXMgd2VyZSBmb3Vu ZCcpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICctcCcsICIkcG9y dCIsICctLXN0cmljdC1uYW1lcycsICctbicsICdub25leGlzdGFudConIF0sCi0JcXIvXFFw Z19kdW1wOiBubyBtYXRjaGluZyBzY2hlbWFzIHdlcmUgZm91bmQgZm9yIHBhdHRlcm5cRS8s CisJcXIvXFFwZ19kdW1wOiBlcnJvcjogbm8gbWF0Y2hpbmcgc2NoZW1hcyB3ZXJlIGZvdW5k IGZvciBwYXR0ZXJuXEUvLAogCSdwZ19kdW1wOiBubyBtYXRjaGluZyBzY2hlbWFzIHdlcmUg Zm91bmQgZm9yIHBhdHRlcm4nKTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1 bXAnLCAnLXAnLCAiJHBvcnQiLCAnLS1zdHJpY3QtbmFtZXMnLCAnLXQnLCAnbm9uZXhpc3Rh bnQqJyBdLAotCXFyL1xRcGdfZHVtcDogbm8gbWF0Y2hpbmcgdGFibGVzIHdlcmUgZm91bmQg Zm9yIHBhdHRlcm5cRS8sCisJcXIvXFFwZ19kdW1wOiBlcnJvcjogbm8gbWF0Y2hpbmcgdGFi bGVzIHdlcmUgZm91bmQgZm9yIHBhdHRlcm5cRS8sCiAJJ3BnX2R1bXA6IG5vIG1hdGNoaW5n IHRhYmxlcyB3ZXJlIGZvdW5kIGZvciBwYXR0ZXJuJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0 d2FsL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9NYWtlZmlsZQppbmRleCAyYTM4 MzU2OTFmLi4wOWVkZTFlZmQyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL01h a2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvTWFrZWZpbGUKQEAgLTE1LDExICsx NSwxMyBAQCBzdWJkaXIgPSBzcmMvYmluL3BnX3Jlc2V0d2FsCiB0b3BfYnVpbGRkaXIgPSAu Li8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAog CitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAt bHBnZmV1dGlscworCiBPQkpTPSBwZ19yZXNldHdhbC5vICQoV0lOMzJSRVMpCiAKIGFsbDog cGdfcmVzZXR3YWwKIAotcGdfcmVzZXR3YWw6ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBncG9y dAorcGdfcmVzZXR3YWw6ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxp YnBnZmV1dGlscwogCSQoQ0MpICQoQ0ZMQUdTKSAkXiAkKExERkxBR1MpICQoTERGTEFHU19F WCkgJChMSUJTKSAtbyAkQCQoWCkKIAogaW5zdGFsbDogYWxsIGluc3RhbGxkaXJzCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0d2FsL25scy5tayBiL3NyYy9iaW4vcGdfcmVzZXR3 YWwvbmxzLm1rCmluZGV4IDgyZWM0Zjc0M2MuLmNjNDA4NzViNDggMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfcmVzZXR3YWwvbmxzLm1rCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvbmxz Lm1rCkBAIC0xLDQgKzEsNiBAQAogIyBzcmMvYmluL3BnX3Jlc2V0d2FsL25scy5tawogQ0FU QUxPR19OQU1FICAgICA9IHBnX3Jlc2V0d2FsCiBBVkFJTF9MQU5HVUFHRVMgID0gY3MgZGUg ZXMgZnIgaXQgamEga28gcGwgcHRfQlIgcnUgc3YgdHIgemhfQ04KLUdFVFRFWFRfRklMRVMg ICAgPSBwZ19yZXNldHdhbC5jIC4uLy4uL2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmMKK0dF VFRFWFRfRklMRVMgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZJTEVTKSBwZ19y ZXNldHdhbC5jIC4uLy4uL2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmMKK0dFVFRFWFRfVFJJ R0dFUlMgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX1RSSUdHRVJTKQorR0VUVEVYVF9G TEFHUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRkxBR1MpCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgYi9zcmMvYmluL3BnX3Jlc2V0 d2FsL3BnX3Jlc2V0d2FsLmMKaW5kZXggZTMyMTNkNDA0YS4uYzZhYTE2NDRkNyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCisrKyBiL3NyYy9iaW4v cGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUg ImNvbW1vbi9mZV9tZW11dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIK ICNpbmNsdWRlICJjb21tb24vcmVzdHJpY3RlZF90b2tlbi5oIgorI2luY2x1ZGUgImZlX3V0 aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhcmdlX29iamVjdC5oIgogI2lu Y2x1ZGUgInBnX2dldG9wdC5oIgogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCkBAIC0xMTcs NyArMTE4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWludAkJCWZkOwog CiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19y ZXNldHdhbCIpKTsKLQorCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlwcm9nbmFtZSA9 IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAogCWlmIChhcmdjID4gMSkKQEAgLTE1NywxMyAr MTU4LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQl7CiAJCQkJCS8q LS0tLS0tCiAJCQkJCSAgdHJhbnNsYXRvcjogdGhlIHNlY29uZCAlcyBpcyBhIGNvbW1hbmQg bGluZSBhcmd1bWVudCAoLWUsIGV0YykgKi8KLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXNcbiIpLCBwcm9nbmFtZSwgIi1lIik7 CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzIiwg Ii1lIik7CiAJCQkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJ fQogCQkJCWlmIChzZXRfeGlkX2Vwb2NoID09IC0xKQogCQkJCXsKLQkJCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiB0cmFuc2FjdGlvbiBJRCBlcG9jaCAoLWUpIG11c3Qgbm90IGJlIC0x XG4iKSwgcHJvZ25hbWUpOworCQkJCQlwZ19sb2dfZXJyb3IoInRyYW5zYWN0aW9uIElEIGVw b2NoICgtZSkgbXVzdCBub3QgYmUgLTEiKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJ YnJlYWs7CkBAIC0xNzIsMTMgKzE3MywxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJCQkJc2V0X3hpZCA9IHN0cnRvdWwob3B0YXJnLCAmZW5kcHRyLCAwKTsKIAkJCQlp ZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcpCiAJCQkJewotCQkJCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlc1xu IiksIHByb2duYW1lLCAiLXgiKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3Vt ZW50IGZvciBvcHRpb24gJXMiLCAiLXgiKTsKIAkJCQkJZnByaW50ZihzdGRlcnIsIF8oIlRy eSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsK IAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJaWYgKHNldF94aWQgPT0gMCkKIAkJCQl7Ci0J CQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogdHJhbnNhY3Rpb24gSUQgKC14KSBtdXN0IG5v dCBiZSAwXG4iKSwgcHJvZ25hbWUpOworCQkJCQlwZ19sb2dfZXJyb3IoInRyYW5zYWN0aW9u IElEICgteCkgbXVzdCBub3QgYmUgMCIpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQli cmVhazsKQEAgLTE4NywxNCArMTg4LDE0IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkJCQlzZXRfb2xkZXN0X2NvbW1pdF90c194aWQgPSBzdHJ0b3VsKG9wdGFyZywgJmVu ZHB0ciwgMCk7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnLCcp CiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgYXJndW1lbnQg Zm9yIG9wdGlvbiAlc1xuIiksIHByb2duYW1lLCAiLWMiKTsKKwkJCQkJcGdfbG9nX2Vycm9y KCJpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXMiLCAiLWMiKTsKIAkJCQkJZnByaW50 ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxu IiksIHByb2duYW1lKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJc2V0X25ld2VzdF9j b21taXRfdHNfeGlkID0gc3RydG91bChlbmRwdHIgKyAxLCAmZW5kcHRyMiwgMCk7CiAJCQkJ aWYgKGVuZHB0cjIgPT0gZW5kcHRyICsgMSB8fCAqZW5kcHRyMiAhPSAnXDAnKQogCQkJCXsK LQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRp b24gJXNcbiIpLCBwcm9nbmFtZSwgIi1jIik7CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxp ZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzIiwgIi1jIik7CiAJCQkJCWZwcmludGYoc3RkZXJy LCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9n bmFtZSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQpAQCAtMjAyLDE0ICsyMDMsMTQgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCWlmIChzZXRfb2xkZXN0X2NvbW1pdF90 c194aWQgPCAyICYmCiAJCQkJCXNldF9vbGRlc3RfY29tbWl0X3RzX3hpZCAhPSAwKQogCQkJ CXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0cmFuc2FjdGlvbiBJRCAoLWMpIG11 c3QgYmUgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDJcbiIpLCBwcm9n bmFtZSk7CisJCQkJCXBnX2xvZ19lcnJvcigidHJhbnNhY3Rpb24gSUQgKC1jKSBtdXN0IGJl IGVpdGhlciAwIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAyIik7CiAJCQkJCWV4aXQo MSk7CiAJCQkJfQogCiAJCQkJaWYgKHNldF9uZXdlc3RfY29tbWl0X3RzX3hpZCA8IDIgJiYK IAkJCQkJc2V0X25ld2VzdF9jb21taXRfdHNfeGlkICE9IDApCiAJCQkJewotCQkJCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IHRyYW5zYWN0aW9uIElEICgtYykgbXVzdCBiZSBlaXRoZXIg MCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMlxuIiksIHByb2duYW1lKTsKKwkJCQkJ cGdfbG9nX2Vycm9yKCJ0cmFuc2FjdGlvbiBJRCAoLWMpIG11c3QgYmUgZWl0aGVyIDAgb3Ig Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIiKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJ CQkJYnJlYWs7CkBAIC0yMTgsMTMgKzIxOSwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJCQkJc2V0X29pZCA9IHN0cnRvdWwob3B0YXJnLCAmZW5kcHRyLCAwKTsKIAkJ CQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcpCiAJCQkJewotCQkJ CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAl c1xuIiksIHByb2duYW1lLCAiLW8iKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFy Z3VtZW50IGZvciBvcHRpb24gJXMiLCAiLW8iKTsKIAkJCQkJZnByaW50ZihzdGRlcnIsIF8o IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1l KTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJaWYgKHNldF9vaWQgPT0gMCkKIAkJCQl7 Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogT0lEICgtbykgbXVzdCBub3QgYmUgMFxu IiksIHByb2duYW1lKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJPSUQgKC1vKSBtdXN0IG5vdCBi ZSAwIik7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtMjMzLDcgKzIz NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlzZXRfbXhpZCA9IHN0 cnRvdWwob3B0YXJnLCAmZW5kcHRyLCAwKTsKIAkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8 fCAqZW5kcHRyICE9ICcsJykKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog aW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzXG4iKSwgcHJvZ25hbWUsICItbSIpOwor CQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlcyIsICIt bSIpOwogCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1v cmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQkJCQlleGl0KDEpOwogCQkJCX0K QEAgLTI0MSwxMyArMjQyLDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJ CQlzZXRfb2xkZXN0bXhpZCA9IHN0cnRvdWwoZW5kcHRyICsgMSwgJmVuZHB0cjIsIDApOwog CQkJCWlmIChlbmRwdHIyID09IGVuZHB0ciArIDEgfHwgKmVuZHB0cjIgIT0gJ1wwJykKIAkJ CQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBhcmd1bWVudCBmb3Ig b3B0aW9uICVzXG4iKSwgcHJvZ25hbWUsICItbSIpOworCQkJCQlwZ19sb2dfZXJyb3IoImlu dmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlcyIsICItbSIpOwogCQkJCQlmcHJpbnRmKHN0 ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwg cHJvZ25hbWUpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlpZiAoc2V0X214aWQgPT0g MCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogbXVsdGl0cmFuc2FjdGlv biBJRCAoLW0pIG11c3Qgbm90IGJlIDBcbiIpLCBwcm9nbmFtZSk7CisJCQkJCXBnX2xvZ19l cnJvcigibXVsdGl0cmFuc2FjdGlvbiBJRCAoLW0pIG11c3Qgbm90IGJlIDAiKTsKIAkJCQkJ ZXhpdCgxKTsKIAkJCQl9CiAKQEAgLTI1Nyw4ICsyNTgsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJCQkJICovCiAJCQkJaWYgKHNldF9vbGRlc3RteGlkID09IDApCiAJ CQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9sZGVzdCBtdWx0aXRyYW5zYWN0 aW9uIElEICgtbSkgbXVzdCBub3QgYmUgMFxuIiksCi0JCQkJCQkJcHJvZ25hbWUpOworCQkJ CQlwZ19sb2dfZXJyb3IoIm9sZGVzdCBtdWx0aXRyYW5zYWN0aW9uIElEICgtbSkgbXVzdCBu b3QgYmUgMCIpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTI2Nywx MyArMjY3LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlzZXRfbXhv ZmYgPSBzdHJ0b3VsKG9wdGFyZywgJmVuZHB0ciwgMCk7CiAJCQkJaWYgKGVuZHB0ciA9PSBv cHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXNcbiIpLCBwcm9nbmFtZSwg Ii1PIik7CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9u ICVzIiwgIi1PIik7CiAJCQkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBc IiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQkJCWV4aXQoMSk7 CiAJCQkJfQogCQkJCWlmIChzZXRfbXhvZmYgPT0gLTEpCiAJCQkJewotCQkJCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IG11bHRpdHJhbnNhY3Rpb24gb2Zmc2V0ICgtTykgbXVzdCBub3Qg YmUgLTFcbiIpLCBwcm9nbmFtZSk7CisJCQkJCXBnX2xvZ19lcnJvcigibXVsdGl0cmFuc2Fj dGlvbiBvZmZzZXQgKC1PKSBtdXN0IG5vdCBiZSAtMSIpOwogCQkJCQlleGl0KDEpOwogCQkJ CX0KIAkJCQlicmVhazsKQEAgLTI4MSw3ICsyODEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJCQljYXNlICdsJzoKIAkJCQlpZiAoc3Ryc3BuKG9wdGFyZywgIjAxMjM0 NTY3ODkwQUJDREVGYWJjZGVmIikgIT0gWExPR19GTkFNRV9MRU4pCiAJCQkJewotCQkJCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlc1xu IiksIHByb2duYW1lLCAiLWwiKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3Vt ZW50IGZvciBvcHRpb24gJXMiLCAiLWwiKTsKIAkJCQkJZnByaW50ZihzdGRlcnIsIF8oIlRy eSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsK IAkJCQkJZXhpdCgxKTsKIAkJCQl9CkBAIC0yOTcsMTYgKzI5NywxMiBAQCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJCQkJc2V0X3dhbF9zZWdzaXplID0gc3RydG9sKG9wdGFy ZywgJmVuZHB0ciwgMTApICogMTAyNCAqIDEwMjQ7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRh cmcgfHwgKmVuZHB0ciAhPSAnXDAnKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0J CQkJCQkJXygiJXM6IGFyZ3VtZW50IG9mIC0td2FsLXNlZ3NpemUgbXVzdCBiZSBhIG51bWJl clxuIiksCi0JCQkJCQkJcHJvZ25hbWUpOworCQkJCQlwZ19sb2dfZXJyb3IoImFyZ3VtZW50 IG9mIC0td2FsLXNlZ3NpemUgbXVzdCBiZSBhIG51bWJlciIpOwogCQkJCQlleGl0KDEpOwog CQkJCX0KIAkJCQlpZiAoIUlzVmFsaWRXYWxTZWdTaXplKHNldF93YWxfc2Vnc2l6ZSkpCiAJ CQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQlfKCIlczogYXJndW1lbnQgb2Yg LS13YWwtc2Vnc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgMiBiZXR3ZWVuIDEgYW5kIDEwMjRc biIpLAotCQkJCQkJCXByb2duYW1lKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJhcmd1bWVudCBv ZiAtLXdhbC1zZWdzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIGJldHdlZW4gMSBhbmQgMTAy NCIpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTMyMyw4ICszMTks OCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLyogQ29tcGxhaW4gaWYgYW55 IGFyZ3VtZW50cyByZW1haW4gKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmly c3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBn X2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMg XCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0ZGVyciwgXygi VHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9n bmFtZSk7CiAJCWV4aXQoMSk7CkBAIC0zMzIsNyArMzI4LDcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCiAJaWYgKERhdGFEaXIgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogbm8gZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkXG4iKSwgcHJvZ25h bWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIGRhdGEgZGlyZWN0b3J5IHNwZWNpZmllZCIpOwog CQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0KQEAgLTM0NiwyMSArMzQy LDIwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICNpZm5kZWYgV0lOMzIKIAlp ZiAoZ2V0ZXVpZCgpID09IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNhbm5v dCBiZSBleGVjdXRlZCBieSBcInJvb3RcIlxuIiksCi0JCQkJcHJvZ25hbWUpOwotCQlmcHJp bnRmKHN0ZGVyciwgXygiWW91IG11c3QgcnVuICVzIGFzIHRoZSBQb3N0Z3JlU1FMIHN1cGVy dXNlci5cbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgYmUg ZXhlY3V0ZWQgYnkgXCJyb290XCIiKTsKKwkJcGdfbG9nX2luZm8oIllvdSBtdXN0IHJ1biAl cyBhcyB0aGUgUG9zdGdyZVNRTCBzdXBlcnVzZXIuIiwKKwkJCQkJcHJvZ25hbWUpOwogCQll eGl0KDEpOwogCX0KICNlbmRpZgogCi0JZ2V0X3Jlc3RyaWN0ZWRfdG9rZW4ocHJvZ25hbWUp OworCWdldF9yZXN0cmljdGVkX3Rva2VuKCk7CiAKIAkvKiBTZXQgbWFzayBiYXNlZCBvbiBQ R0RBVEEgcGVybWlzc2lvbnMgKi8KIAlpZiAoIUdldERhdGFEaXJlY3RvcnlDcmVhdGVQZXJt KERhdGFEaXIpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVh ZCBwZXJtaXNzaW9ucyBvZiBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25h bWUsIERhdGFEaXIsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IHJlYWQgcGVybWlzc2lvbnMgb2YgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkg RGF0YURpcik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0zNjgsOCArMzYzLDggQEAgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKGNoZGlyKERhdGFEaXIpIDwgMCkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNoYW5nZSBkaXJlY3Rvcnkg dG8gXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIERhdGFEaXIsIHN0cmVycm9yKGVy cm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNoYW5nZSBkaXJlY3RvcnkgdG8g XCIlc1wiOiAlbSIsCisJCQkJCSBEYXRhRGlyKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTM4 NCwxNiArMzc5LDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl7CiAJCWlm IChlcnJubyAhPSBFTk9FTlQpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291 bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVzXG4iKSwKLQkJCQkJcHJv Z25hbWUsICJwb3N0bWFzdGVyLnBpZCIsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAlbSIsCisJ CQkJCQkgInBvc3RtYXN0ZXIucGlkIik7CiAJCQlleGl0KDEpOwogCQl9CiAJfQogCWVsc2UK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbG9jayBmaWxlIFwiJXNcIiBleGlzdHNc biIKLQkJCQkJCSAgIklzIGEgc2VydmVyIHJ1bm5pbmc/ICBJZiBub3QsIGRlbGV0ZSB0aGUg bG9jayBmaWxlIGFuZCB0cnkgYWdhaW4uXG4iKSwKLQkJCQlwcm9nbmFtZSwgInBvc3RtYXN0 ZXIucGlkIik7CisJCXBnX2xvZ19lcnJvcigibG9jayBmaWxlIFwiJXNcIiBleGlzdHMiLCAi cG9zdG1hc3Rlci5waWQiKTsKKwkJcGdfbG9nX2luZm8oIklzIGEgc2VydmVyIHJ1bm5pbmc/ ICBJZiBub3QsIGRlbGV0ZSB0aGUgbG9jayBmaWxlIGFuZCB0cnkgYWdhaW4uIik7CiAJCWV4 aXQoMSk7CiAJfQogCkBAIC01NDUsOCArNTM5LDggQEAgQ2hlY2tEYXRhVmVyc2lvbih2b2lk KQogCiAJaWYgKCh2ZXJfZmQgPSBmb3Blbih2ZXJfZmlsZSwgInIiKSkgPT0gTlVMTCkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIg Zm9yIHJlYWRpbmc6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgdmVyX2ZpbGUsIHN0cmVycm9y KGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIg Zm9yIHJlYWRpbmc6ICVtIiwKKwkJCQkJIHZlcl9maWxlKTsKIAkJZXhpdCgxKTsKIAl9CiAK QEAgLTU1NCwxNSArNTQ4LDkgQEAgQ2hlY2tEYXRhVmVyc2lvbih2b2lkKQogCWlmICghZmdl dHMocmF3bGluZSwgc2l6ZW9mKHJhd2xpbmUpLCB2ZXJfZmQpKQogCXsKIAkJaWYgKCFmZXJy b3IodmVyX2ZkKSkKLQkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB1bmV4cGVjdGVk IGVtcHR5IGZpbGUgXCIlc1wiXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHZlcl9maWxlKTsKLQkJ fQorCQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIGVtcHR5IGZpbGUgXCIlc1wiIiwgdmVy X2ZpbGUpOwogCQllbHNlCi0JCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IHJlYWQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHZlcl9maWxl LCBzdHJlcnJvcihlcnJubykpOwotCQl9CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBy ZWFkIGZpbGUgXCIlc1wiOiAlbSIsIHZlcl9maWxlKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAg LTU3Nyw5ICs1NjUsOSBAQCBDaGVja0RhdGFWZXJzaW9uKHZvaWQpCiAKIAlpZiAoc3RyY21w KHJhd2xpbmUsIFBHX01BSk9SVkVSU0lPTikgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogZGF0YSBkaXJlY3RvcnkgaXMgb2Ygd3JvbmcgdmVyc2lvblxuIgotCQkJCQkJ ICAiRmlsZSBcIiVzXCIgY29udGFpbnMgXCIlc1wiLCB3aGljaCBpcyBub3QgY29tcGF0aWJs ZSB3aXRoIHRoaXMgcHJvZ3JhbSdzIHZlcnNpb24gXCIlc1wiLlxuIiksCi0JCQkJcHJvZ25h bWUsIHZlcl9maWxlLCByYXdsaW5lLCBQR19NQUpPUlZFUlNJT04pOworCQlwZ19sb2dfZXJy b3IoImRhdGEgZGlyZWN0b3J5IGlzIG9mIHdyb25nIHZlcnNpb24iKTsKKwkJcGdfbG9nX2lu Zm8oIkZpbGUgXCIlc1wiIGNvbnRhaW5zIFwiJXNcIiwgd2hpY2ggaXMgbm90IGNvbXBhdGli bGUgd2l0aCB0aGlzIHByb2dyYW0ncyB2ZXJzaW9uIFwiJXNcIi4iLAorCQkJCQl2ZXJfZmls ZSwgcmF3bGluZSwgUEdfTUFKT1JWRVJTSU9OKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTYw OCwxMyArNTk2LDEzIEBAIFJlYWRDb250cm9sRmlsZSh2b2lkKQogCQkgKiBhcmUgd2UndmUg YmVlbiBoYW5kZWQgYSBiYWQgRGF0YURpciBwYXRoLCBzbyBnaXZlIHVwLiBVc2VyIGNhbiBk bwogCQkgKiAidG91Y2ggcGdfY29udHJvbCIgdG8gZm9yY2UgdXMgdG8gcHJvY2VlZC4KIAkJ ICovCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVz XCIgZm9yIHJlYWRpbmc6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgWExPR19DT05UUk9MX0ZJ TEUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4g ZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVtIiwKKwkJCQkJIFhMT0dfQ09OVFJPTF9GSUxF KTsKIAkJaWYgKGVycm5vID09IEVOT0VOVCkKLQkJCWZwcmludGYoc3RkZXJyLCBfKCJJZiB5 b3UgYXJlIHN1cmUgdGhlIGRhdGEgZGlyZWN0b3J5IHBhdGggaXMgY29ycmVjdCwgZXhlY3V0 ZVxuIgotCQkJCQkJCSAgIiAgdG91Y2ggJXNcbiIKLQkJCQkJCQkgICJhbmQgdHJ5IGFnYWlu LlxuIiksCi0JCQkJCVhMT0dfQ09OVFJPTF9GSUxFKTsKKwkJCXBnX2xvZ19pbmZvKCJJZiB5 b3UgYXJlIHN1cmUgdGhlIGRhdGEgZGlyZWN0b3J5IHBhdGggaXMgY29ycmVjdCwgZXhlY3V0 ZVxuIgorCQkJCQkJIiAgdG91Y2ggJXNcbiIKKwkJCQkJCSJhbmQgdHJ5IGFnYWluLiIsCisJ CQkJCQlYTE9HX0NPTlRST0xfRklMRSk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC02MjQsOCAr NjEyLDcgQEAgUmVhZENvbnRyb2xGaWxlKHZvaWQpCiAJbGVuID0gcmVhZChmZCwgYnVmZmVy LCBQR19DT05UUk9MX0ZJTEVfU0laRSk7CiAJaWYgKGxlbiA8IDApCiAJewotCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0J CQkJcHJvZ25hbWUsIFhMT0dfQ09OVFJPTF9GSUxFLCBzdHJlcnJvcihlcnJubykpOworCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsIFhMT0dfQ09O VFJPTF9GSUxFKTsKIAkJZXhpdCgxKTsKIAl9CiAJY2xvc2UoZmQpOwpAQCAtNjQzLDkgKzYz MCw3IEBAIFJlYWRDb250cm9sRmlsZSh2b2lkKQogCQlpZiAoIUVRX0NSQzMyQyhjcmMsICgo Q29udHJvbEZpbGVEYXRhICopIGJ1ZmZlciktPmNyYykpCiAJCXsKIAkJCS8qIFdlIHdpbGwg dXNlIHRoZSBkYXRhIGJ1dCB0cmVhdCBpdCBhcyBndWVzc2VkLiAqLwotCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCV8oIiVzOiBwZ19jb250cm9sIGV4aXN0cyBidXQgaGFzIGludmFsaWQg Q1JDOyBwcm9jZWVkIHdpdGggY2F1dGlvblxuIiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBn X2xvZ193YXJuaW5nKCJwZ19jb250cm9sIGV4aXN0cyBidXQgaGFzIGludmFsaWQgQ1JDOyBw cm9jZWVkIHdpdGggY2F1dGlvbiIpOwogCQkJZ3Vlc3NlZCA9IHRydWU7CiAJCX0KIApAQCAt NjU0LDExICs2MzksMTAgQEAgUmVhZENvbnRyb2xGaWxlKHZvaWQpCiAJCS8qIHJldHVybiBm YWxzZSBpZiBXQUwgc2VnbWVudCBzaXplIGlzIG5vdCB2YWxpZCAqLwogCQlpZiAoIUlzVmFs aWRXYWxTZWdTaXplKENvbnRyb2xGaWxlLnhsb2dfc2VnX3NpemUpKQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJbmdldHRleHQoIiVzOiBwZ19jb250cm9sIHNwZWNpZmllcyBp bnZhbGlkIFdBTCBzZWdtZW50IHNpemUgKCVkIGJ5dGUpOyBwcm9jZWVkIHdpdGggY2F1dGlv blxuIiwKLQkJCQkJCQkgIiVzOiBwZ19jb250cm9sIHNwZWNpZmllcyBpbnZhbGlkIFdBTCBz ZWdtZW50IHNpemUgKCVkIGJ5dGVzKTsgcHJvY2VlZCB3aXRoIGNhdXRpb25cbiIsCi0JCQkJ CQkJIENvbnRyb2xGaWxlLnhsb2dfc2VnX3NpemUpLAotCQkJCQlwcm9nbmFtZSwgQ29udHJv bEZpbGUueGxvZ19zZWdfc2l6ZSk7CisJCQlwZ19sb2dfd2FybmluZyhuZ2V0dGV4dCgicGdf Y29udHJvbCBzcGVjaWZpZXMgaW52YWxpZCBXQUwgc2VnbWVudCBzaXplICglZCBieXRlKTsg cHJvY2VlZCB3aXRoIGNhdXRpb24iLAorCQkJCQkJCQkJInBnX2NvbnRyb2wgc3BlY2lmaWVz IGludmFsaWQgV0FMIHNlZ21lbnQgc2l6ZSAoJWQgYnl0ZXMpOyBwcm9jZWVkIHdpdGggY2F1 dGlvbiIsCisJCQkJCQkJCQlDb250cm9sRmlsZS54bG9nX3NlZ19zaXplKSwKKwkJCQkJCSAg IENvbnRyb2xGaWxlLnhsb2dfc2VnX3NpemUpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAK QEAgLTY2Niw4ICs2NTAsNyBAQCBSZWFkQ29udHJvbEZpbGUodm9pZCkKIAl9CiAKIAkvKiBM b29rcyBsaWtlIGl0J3MgYSBtZXNzLiAqLwotCWZwcmludGYoc3RkZXJyLCBfKCIlczogcGdf Y29udHJvbCBleGlzdHMgYnV0IGlzIGJyb2tlbiBvciB3cm9uZyB2ZXJzaW9uOyBpZ25vcmlu ZyBpdFxuIiksCi0JCQlwcm9nbmFtZSk7CisJcGdfbG9nX3dhcm5pbmcoInBnX2NvbnRyb2wg ZXhpc3RzIGJ1dCBpcyBicm9rZW4gb3Igd3JvbmcgdmVyc2lvbjsgaWdub3JpbmcgaXQiKTsK IAlyZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTk4Myw4ICs5NjYsNyBAQCBSZXdyaXRlQ29udHJv bEZpbGUodm9pZCkKIAkJCSAgcGdfZmlsZV9jcmVhdGVfbW9kZSk7CiAJaWYgKGZkIDwgMCkK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBwZ19jb250 cm9sIGZpbGU6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHBnX2NvbnRyb2wgZmlsZTogJW0iKTsK IAkJZXhpdCgxKTsKIAl9CiAKQEAgLTk5NCwxNCArOTc2LDEzIEBAIFJld3JpdGVDb250cm9s RmlsZSh2b2lkKQogCQkvKiBpZiB3cml0ZSBkaWRuJ3Qgc2V0IGVycm5vLCBhc3N1bWUgcHJv YmxlbSBpcyBubyBkaXNrIHNwYWNlICovCiAJCWlmIChlcnJubyA9PSAwKQogCQkJZXJybm8g PSBFTk9TUEM7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHdyaXRlIHBn X2NvbnRyb2wgZmlsZTogJXNcbiIpLAotCQkJCXByb2duYW1lLCBzdHJlcnJvcihlcnJubykp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSBwZ19jb250cm9sIGZpbGU6ICVt Iik7CiAJCWV4aXQoMSk7CiAJfQogCiAJaWYgKGZzeW5jKGZkKSAhPSAwKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBmc3luYyBlcnJvcjogJXNcbiIpLCBwcm9nbmFtZSwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJmc3luYyBlcnJvcjogJW0iKTsKIAkJ ZXhpdCgxKTsKIAl9CiAKQEAgLTEwNDEsOCArMTAyMiw3IEBAIEZpbmRFbmRPZlhMT0codm9p ZCkKIAl4bGRpciA9IG9wZW5kaXIoWExPR0RJUik7CiAJaWYgKHhsZGlyID09IE5VTEwpCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBc IiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgWExPR0RJUiwgc3RyZXJyb3IoZXJybm8p KTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAl bSIsIFhMT0dESVIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTA3NywxNSArMTA1NywxMyBA QCBGaW5kRW5kT2ZYTE9HKHZvaWQpCiAKIAlpZiAoZXJybm8pCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwK LQkJCQlwcm9nbmFtZSwgWExPR0RJUiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIFhMT0dESVIpOwog CQlleGl0KDEpOwogCX0KIAogCWlmIChjbG9zZWRpcih4bGRpcikpCiAJewotCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xu IiksCi0JCQkJcHJvZ25hbWUsIFhMT0dESVIsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgWExPR0RJ Uik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xMTEyLDggKzEwOTAsNyBAQCBLaWxsRXhpc3Rp bmdYTE9HKHZvaWQpCiAJeGxkaXIgPSBvcGVuZGlyKFhMT0dESVIpOwogCWlmICh4bGRpciA9 PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBk aXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIFhMT0dESVIsIHN0cmVy cm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5 IFwiJXNcIjogJW0iLCBYTE9HRElSKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTExMjUsOCAr MTEwMiw3IEBAIEtpbGxFeGlzdGluZ1hMT0codm9pZCkKIAkJCXNucHJpbnRmKHBhdGgsIHNp emVvZihwYXRoKSwgIiVzLyVzIiwgWExPR0RJUiwgeGxkZS0+ZF9uYW1lKTsKIAkJCWlmICh1 bmxpbmsocGF0aCkgPCAwKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291 bGQgbm90IGRlbGV0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHBh dGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZGVs ZXRlIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAJCX0K QEAgLTExMzQsMTUgKzExMTAsMTMgQEAgS2lsbEV4aXN0aW5nWExPRyh2b2lkKQogCiAJaWYg KGVycm5vKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBk aXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIFhMT0dESVIsIHN0cmVy cm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJlYWQgZGlyZWN0b3J5 IFwiJXNcIjogJW0iLCBYTE9HRElSKTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlpZiAoY2xvc2Vk aXIoeGxkaXIpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY2xv c2UgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBYTE9HRElSLCBz dHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsIFhMT0dESVIpOwogCQlleGl0KDEpOwogCX0KIH0KQEAgLTEx NjMsOCArMTEzNyw3IEBAIEtpbGxFeGlzdGluZ0FyY2hpdmVTdGF0dXModm9pZCkKIAl4bGRp ciA9IG9wZW5kaXIoQVJDSFNUQVRESVIpOwogCWlmICh4bGRpciA9PSBOVUxMKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wi OiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIEFSQ0hTVEFURElSLCBzdHJlcnJvcihlcnJubykp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVt IiwgQVJDSFNUQVRESVIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTE3OSw4ICsxMTUyLDcg QEAgS2lsbEV4aXN0aW5nQXJjaGl2ZVN0YXR1cyh2b2lkKQogCQkJc25wcmludGYocGF0aCwg c2l6ZW9mKHBhdGgpLCAiJXMvJXMiLCBBUkNIU1RBVERJUiwgeGxkZS0+ZF9uYW1lKTsKIAkJ CWlmICh1bmxpbmsocGF0aCkgPCAwKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IGRlbGV0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJcHJvZ25h bWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgZGVsZXRlIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpOwogCQkJCWV4aXQoMSk7CiAJCQl9 CiAJCX0KQEAgLTExODgsMTUgKzExNjAsMTMgQEAgS2lsbEV4aXN0aW5nQXJjaGl2ZVN0YXR1 cyh2b2lkKQogCiAJaWYgKGVycm5vKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUs IEFSQ0hTVEFURElSLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgQVJDSFNUQVRESVIpOwogCQlleGl0 KDEpOwogCX0KIAogCWlmIChjbG9zZWRpcih4bGRpcikpCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0J CQkJcHJvZ25hbWUsIEFSQ0hTVEFURElSLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIEFSQ0hTVEFU RElSKTsKIAkJZXhpdCgxKTsKIAl9CiB9CkBAIC0xMjYzLDggKzEyMzMsNyBAQCBXcml0ZUVt cHR5WExPRyh2b2lkKQogCQkJICBwZ19maWxlX2NyZWF0ZV9tb2RlKTsKIAlpZiAoZmQgPCAw KQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwi JXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwor CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgp OwogCQlleGl0KDEpOwogCX0KIApAQCAtMTI3NCw4ICsxMjQzLDcgQEAgV3JpdGVFbXB0eVhM T0codm9pZCkKIAkJLyogaWYgd3JpdGUgZGlkbid0IHNldCBlcnJubywgYXNzdW1lIHByb2Js ZW0gaXMgbm8gZGlzayBzcGFjZSAqLwogCQlpZiAoZXJybm8gPT0gMCkKIAkJCWVycm5vID0g RU5PU1BDOwotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCB3cml0ZSBmaWxl IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBw YXRoKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTEyODgsMTUgKzEyNTYsMTQgQEAgV3JpdGVF bXB0eVhMT0codm9pZCkKIAkJewogCQkJaWYgKGVycm5vID09IDApCiAJCQkJZXJybm8gPSBF Tk9TUEM7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCB3cml0ZSBmaWxl IFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8p KTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIs IHBhdGgpOwogCQkJZXhpdCgxKTsKIAkJfQogCX0KIAogCWlmIChmc3luYyhmZCkgIT0gMCkK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogZnN5bmMgZXJyb3I6ICVzXG4iKSwgcHJv Z25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiZnN5bmMgZXJyb3I6 ICVtIik7CiAJCWV4aXQoMSk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0 d2FsL3QvMDAyX2NvcnJ1cHRlZC5wbCBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDJfY29y cnVwdGVkLnBsCmluZGV4IDAwMjJkY2I4ZmYuLmY5OTQwZDdmYzUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfcmVzZXR3YWwvdC8wMDJfY29ycnVwdGVkLnBsCisrKyBiL3NyYy9iaW4vcGdf cmVzZXR3YWwvdC8wMDJfY29ycnVwdGVkLnBsCkBAIC0zMiw3ICszMiw3IEBACiAJMCwKIAlb cXIvcGdfY29udHJvbCB2ZXJzaW9uIG51bWJlci9dLAogCVsKLQkJcXIvcGdfcmVzZXR3YWw6 IHBnX2NvbnRyb2wgZXhpc3RzIGJ1dCBpcyBicm9rZW4gb3Igd3JvbmcgdmVyc2lvbjsgaWdu b3JpbmcgaXQvCisJCXFyL3BnX3Jlc2V0d2FsOiB3YXJuaW5nOiBwZ19jb250cm9sIGV4aXN0 cyBidXQgaXMgYnJva2VuIG9yIHdyb25nIHZlcnNpb247IGlnbm9yaW5nIGl0LwogCV0sCiAJ J3Byb2Nlc3NlcyBjb3JydXB0ZWQgcGdfY29udHJvbCBhbGwgemVyb2VzJyk7CiAKQEAgLTQ4 LDYgKzQ4LDYgQEAKIAkwLAogCVtxci9wZ19jb250cm9sIHZlcnNpb24gbnVtYmVyL10sCiAJ WwotCQlxci9cUXBnX3Jlc2V0d2FsOiBwZ19jb250cm9sIHNwZWNpZmllcyBpbnZhbGlkIFdB TCBzZWdtZW50IHNpemUgKDAgYnl0ZXMpOyBwcm9jZWVkIHdpdGggY2F1dGlvblxFLworCQlx ci9cUXBnX3Jlc2V0d2FsOiB3YXJuaW5nOiBwZ19jb250cm9sIHNwZWNpZmllcyBpbnZhbGlk IFdBTCBzZWdtZW50IHNpemUgKDAgYnl0ZXMpOyBwcm9jZWVkIHdpdGggY2F1dGlvblxFLwog CV0sCiAJJ3Byb2Nlc3NlcyB6ZXJvIFdBTCBzZWdtZW50IHNpemUnKTsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfcmV3aW5kL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ19yZXdpbmQvTWFrZWZp bGUKaW5kZXggMDRmM2I4ZjUyMC4uMDE5ZTE5OTg2ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19yZXdpbmQvTWFrZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ19yZXdpbmQvTWFrZWZpbGUKQEAg LTE2LDcgKzE2LDcgQEAgdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3Bf YnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0g LUkkKGxpYnBxX3NyY2RpcikgLURGUk9OVEVORCAkKENQUEZMQUdTKQotTERGTEFHU19JTlRF Uk5BTCArPSAkKGxpYnBxX3BncG9ydCkKK0xERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRvcF9i dWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzICQobGlicHFfcGdwb3J0KQogCiBP QkpTCT0gcGdfcmV3aW5kLm8gcGFyc2V4bG9nLm8geGxvZ3JlYWRlci5vIGRhdGFwYWdlbWFw Lm8gdGltZWxpbmUubyBcCiAJZmV0Y2gubyBmaWxlX29wcy5vIGNvcHlfZmV0Y2gubyBsaWJw cV9mZXRjaC5vIGZpbGVtYXAubyBsb2dnaW5nLm8gXApAQCAtMjYsNyArMjYsNyBAQCBFWFRS QV9DTEVBTiA9IHhsb2dyZWFkZXIuYwogCiBhbGw6IHBnX3Jld2luZAogCi1wZ19yZXdpbmQ6 ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0CitwZ19yZXdpbmQ6 ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGli cGdmZXV0aWxzCiAJJChDQykgJChDRkxBR1MpICReICQoTERGTEFHUykgJChMREZMQUdTX0VY KSAkKExJQlMpIC1vICRAJChYKQogCiB4bG9ncmVhZGVyLmM6ICUgOiAkKHRvcF9zcmNkaXIp L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtLyUKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf cmV3aW5kL2NvcHlfZmV0Y2guYyBiL3NyYy9iaW4vcGdfcmV3aW5kL2NvcHlfZmV0Y2guYwpp bmRleCBhMjgzNDA1ZjZjLi4zZmQwNDA0ZGRmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jl d2luZC9jb3B5X2ZldGNoLmMKKysrIGIvc3JjL2Jpbi9wZ19yZXdpbmQvY29weV9mZXRjaC5j CkBAIC01Nyw4ICs1Nyw4IEBAIHJlY3Vyc2VfZGlyKGNvbnN0IGNoYXIgKmRhdGFkaXIsIGNv bnN0IGNoYXIgKnBhcmVudHBhdGgsCiAKIAl4bGRpciA9IG9wZW5kaXIoZnVsbHBhcmVudHBh dGgpOwogCWlmICh4bGRpciA9PSBOVUxMKQotCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4g ZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIsCi0JCQkJIGZ1bGxwYXJlbnRwYXRoLCBzdHJlcnJv cihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNc IjogJW0iLAorCQkJCSBmdWxscGFyZW50cGF0aCk7CiAKIAl3aGlsZSAoZXJybm8gPSAwLCAo eGxkZSA9IHJlYWRkaXIoeGxkaXIpKSAhPSBOVUxMKQogCXsKQEAgLTg2LDggKzg2LDggQEAg cmVjdXJzZV9kaXIoY29uc3QgY2hhciAqZGF0YWRpciwgY29uc3QgY2hhciAqcGFyZW50cGF0 aCwKIAkJCQkgKi8KIAkJCX0KIAkJCWVsc2UKLQkJCQlwZ19mYXRhbCgiY291bGQgbm90IHN0 YXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkJIGZ1bGxwYXRoLCBzdHJlcnJvcihlcnJu bykpOworCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLAor CQkJCQkJIGZ1bGxwYXRoKTsKIAkJfQogCiAJCWlmIChwYXJlbnRwYXRoKQpAQCAtMTE1LDEw ICsxMTUsMTAgQEAgcmVjdXJzZV9kaXIoY29uc3QgY2hhciAqZGF0YWRpciwgY29uc3QgY2hh ciAqcGFyZW50cGF0aCwKIAogCQkJbGVuID0gcmVhZGxpbmsoZnVsbHBhdGgsIGxpbmtfdGFy Z2V0LCBzaXplb2YobGlua190YXJnZXQpKTsKIAkJCWlmIChsZW4gPCAwKQotCQkJCXBnX2Zh dGFsKCJjb3VsZCBub3QgcmVhZCBzeW1ib2xpYyBsaW5rIFwiJXNcIjogJXNcbiIsCi0JCQkJ CQkgZnVsbHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfZmF0YWwoImNvdWxkIG5v dCByZWFkIHN5bWJvbGljIGxpbmsgXCIlc1wiOiAlbSIsCisJCQkJCQkgZnVsbHBhdGgpOwog CQkJaWYgKGxlbiA+PSBzaXplb2YobGlua190YXJnZXQpKQotCQkJCXBnX2ZhdGFsKCJzeW1i b2xpYyBsaW5rIFwiJXNcIiB0YXJnZXQgaXMgdG9vIGxvbmdcbiIsCisJCQkJcGdfZmF0YWwo InN5bWJvbGljIGxpbmsgXCIlc1wiIHRhcmdldCBpcyB0b28gbG9uZyIsCiAJCQkJCQkgZnVs bHBhdGgpOwogCQkJbGlua190YXJnZXRbbGVuXSA9ICdcMCc7CiAKQEAgLTEzMywxOSArMTMz LDE5IEBAIHJlY3Vyc2VfZGlyKGNvbnN0IGNoYXIgKmRhdGFkaXIsIGNvbnN0IGNoYXIgKnBh cmVudHBhdGgsCiAJCQkJc3RyY21wKHBhdGgsICJwZ193YWwiKSA9PSAwKQogCQkJCXJlY3Vy c2VfZGlyKGRhdGFkaXIsIHBhdGgsIGNhbGxiYWNrKTsKICNlbHNlCi0JCQlwZ19mYXRhbCgi XCIlc1wiIGlzIGEgc3ltYm9saWMgbGluaywgYnV0IHN5bWJvbGljIGxpbmtzIGFyZSBub3Qg c3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1cbiIsCisJCQlwZ19mYXRhbCgiXCIlc1wiIGlz IGEgc3ltYm9saWMgbGluaywgYnV0IHN5bWJvbGljIGxpbmtzIGFyZSBub3Qgc3VwcG9ydGVk IG9uIHRoaXMgcGxhdGZvcm0iLAogCQkJCQkgZnVsbHBhdGgpOwogI2VuZGlmCQkJCQkJCS8q IEhBVkVfUkVBRExJTksgKi8KIAkJfQogCX0KIAogCWlmIChlcnJubykKLQkJcGdfZmF0YWwo ImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iLAotCQkJCSBmdWxscGFy ZW50cGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFk IGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkgZnVsbHBhcmVudHBhdGgpOwogCiAJaWYg KGNsb3NlZGlyKHhsZGlyKSkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBkaXJlY3Rv cnkgXCIlc1wiOiAlc1xuIiwKLQkJCQkgZnVsbHBhcmVudHBhdGgsIHN0cmVycm9yKGVycm5v KSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJW0i LAorCQkJCSBmdWxscGFyZW50cGF0aCk7CiB9CiAKIC8qCkBAIC0xNjQsMTEgKzE2NCwxMSBA QCByZXdpbmRfY29weV9maWxlX3JhbmdlKGNvbnN0IGNoYXIgKnBhdGgsIG9mZl90IGJlZ2lu LCBvZmZfdCBlbmQsIGJvb2wgdHJ1bmMpCiAKIAlzcmNmZCA9IG9wZW4oc3JjcGF0aCwgT19S RE9OTFkgfCBQR19CSU5BUlksIDApOwogCWlmIChzcmNmZCA8IDApCi0JCXBnX2ZhdGFsKCJj b3VsZCBub3Qgb3BlbiBzb3VyY2UgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCSBzcmNwYXRo LCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gc291cmNl IGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJIHNyY3BhdGgpOwogCiAJaWYgKGxzZWVrKHNyY2Zk LCBiZWdpbiwgU0VFS19TRVQpID09IC0xKQotCQlwZ19mYXRhbCgiY291bGQgbm90IHNlZWsg aW4gc291cmNlIGZpbGU6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgi Y291bGQgbm90IHNlZWsgaW4gc291cmNlIGZpbGU6ICVtIik7CiAKIAlvcGVuX3RhcmdldF9m aWxlKHBhdGgsIHRydW5jKTsKIApAQCAtMTg1LDE3ICsxODUsMTcgQEAgcmV3aW5kX2NvcHlf ZmlsZV9yYW5nZShjb25zdCBjaGFyICpwYXRoLCBvZmZfdCBiZWdpbiwgb2ZmX3QgZW5kLCBi b29sIHRydW5jKQogCQlyZWFkbGVuID0gcmVhZChzcmNmZCwgYnVmLmRhdGEsIGxlbik7CiAK IAkJaWYgKHJlYWRsZW4gPCAwKQotCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUg XCIlc1wiOiAlc1xuIiwKLQkJCQkJIHNyY3BhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQlw Z19mYXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJIHNyY3Bh dGgpOwogCQllbHNlIGlmIChyZWFkbGVuID09IDApCi0JCQlwZ19mYXRhbCgidW5leHBlY3Rl ZCBFT0Ygd2hpbGUgcmVhZGluZyBmaWxlIFwiJXNcIlxuIiwgc3JjcGF0aCk7CisJCQlwZ19m YXRhbCgidW5leHBlY3RlZCBFT0Ygd2hpbGUgcmVhZGluZyBmaWxlIFwiJXNcIiIsIHNyY3Bh dGgpOwogCiAJCXdyaXRlX3RhcmdldF9yYW5nZShidWYuZGF0YSwgYmVnaW4sIHJlYWRsZW4p OwogCQliZWdpbiArPSByZWFkbGVuOwogCX0KIAogCWlmIChjbG9zZShzcmNmZCkgIT0gMCkK LQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJXNcbiIsIHNyY3Bh dGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY2xvc2UgZmls ZSBcIiVzXCI6ICVtIiwgc3JjcGF0aCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX3Jld2luZC9kYXRhcGFnZW1hcC5jIGIvc3JjL2Jpbi9wZ19yZXdpbmQvZGF0YXBhZ2Vt YXAuYwppbmRleCA2MjYyZjFmODcwLi5mYzcwZmU1NzA2IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3Jld2luZC9kYXRhcGFnZW1hcC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL2RhdGFw YWdlbWFwLmMKQEAgLTEzLDcgKzEzLDggQEAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgog CiAjaW5jbHVkZSAiZGF0YXBhZ2VtYXAuaCIKLSNpbmNsdWRlICJsb2dnaW5nLmgiCisKKyNp bmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAKIHN0cnVjdCBkYXRhcGFnZW1hcF9pdGVy YXRvcgogewpAQCAtMTIxLDcgKzEyMiw3IEBAIGRhdGFwYWdlbWFwX3ByaW50KGRhdGFwYWdl bWFwX3QgKm1hcCkKIAogCWl0ZXIgPSBkYXRhcGFnZW1hcF9pdGVyYXRlKG1hcCk7CiAJd2hp bGUgKGRhdGFwYWdlbWFwX25leHQoaXRlciwgJmJsb2NrbnVtKSkKLQkJcGdfbG9nKFBHX0RF QlVHLCAiICBibG9jayAldVxuIiwgYmxvY2tudW0pOworCQlwZ19sb2dfZGVidWcoImJsb2Nr ICV1IiwgYmxvY2tudW0pOwogCiAJcGdfZnJlZShpdGVyKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfcmV3aW5kL2ZpbGVfb3BzLmMgYi9zcmMvYmluL3BnX3Jld2luZC9maWxlX29w cy5jCmluZGV4IGJiZGNiZTQ0YWMuLmU0NDJmOTM1NTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfcmV3aW5kL2ZpbGVfb3BzLmMKKysrIGIvc3JjL2Jpbi9wZ19yZXdpbmQvZmlsZV9vcHMu YwpAQCAtNjAsOCArNjAsOCBAQCBvcGVuX3RhcmdldF9maWxlKGNvbnN0IGNoYXIgKnBhdGgs IGJvb2wgdHJ1bmMpCiAJCW1vZGUgfD0gT19UUlVOQzsKIAlkc3RmZCA9IG9wZW4oZHN0cGF0 aCwgbW9kZSwgcGdfZmlsZV9jcmVhdGVfbW9kZSk7CiAJaWYgKGRzdGZkIDwgMCkKLQkJcGdf ZmF0YWwoImNvdWxkIG5vdCBvcGVuIHRhcmdldCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJ IGRzdHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3Bl biB0YXJnZXQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkgZHN0cGF0aCk7CiB9CiAKIC8qCkBA IC03NCw4ICs3NCw4IEBAIGNsb3NlX3RhcmdldF9maWxlKHZvaWQpCiAJCXJldHVybjsKIAog CWlmIChjbG9zZShkc3RmZCkgIT0gMCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjbG9zZSB0 YXJnZXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCSBkc3RwYXRoLCBzdHJlcnJvcihlcnJu bykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IGNsb3NlIHRhcmdldCBmaWxlIFwiJXNcIjog JW0iLAorCQkJCSBkc3RwYXRoKTsKIAogCWRzdGZkID0gLTE7CiB9CkBAIC05NCw4ICs5NCw4 IEBAIHdyaXRlX3RhcmdldF9yYW5nZShjaGFyICpidWYsIG9mZl90IGJlZ2luLCBzaXplX3Qg c2l6ZSkKIAkJcmV0dXJuOwogCiAJaWYgKGxzZWVrKGRzdGZkLCBiZWdpbiwgU0VFS19TRVQp ID09IC0xKQotCQlwZ19mYXRhbCgiY291bGQgbm90IHNlZWsgaW4gdGFyZ2V0IGZpbGUgXCIl c1wiOiAlc1xuIiwKLQkJCQkgZHN0cGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfZmF0 YWwoImNvdWxkIG5vdCBzZWVrIGluIHRhcmdldCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCSBk c3RwYXRoKTsKIAogCXdyaXRlbGVmdCA9IHNpemU7CiAJcCA9IGJ1ZjsKQEAgLTExMCw4ICsx MTAsOCBAQCB3cml0ZV90YXJnZXRfcmFuZ2UoY2hhciAqYnVmLCBvZmZfdCBiZWdpbiwgc2l6 ZV90IHNpemUpCiAJCQkvKiBpZiB3cml0ZSBkaWRuJ3Qgc2V0IGVycm5vLCBhc3N1bWUgcHJv YmxlbSBpcyBubyBkaXNrIHNwYWNlICovCiAJCQlpZiAoZXJybm8gPT0gMCkKIAkJCQllcnJu byA9IEVOT1NQQzsKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6 ICVzXG4iLAotCQkJCQkgZHN0cGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2ZhdGFs KCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJIGRzdHBhdGgpOwog CQl9CiAKIAkJcCArPSB3cml0ZWxlbjsKQEAgLTE2MCw3ICsxNjAsNyBAQCBjcmVhdGVfdGFy Z2V0KGZpbGVfZW50cnlfdCAqZW50cnkpCiAKIAkJY2FzZSBGSUxFX1RZUEVfUkVHVUxBUjoK IAkJCS8qIGNhbid0IGhhcHBlbi4gUmVndWxhciBmaWxlcyBhcmUgY3JlYXRlZCB3aXRoIG9w ZW5fdGFyZ2V0X2ZpbGUuICovCi0JCQlwZ19mYXRhbCgiaW52YWxpZCBhY3Rpb24gKENSRUFU RSkgZm9yIHJlZ3VsYXIgZmlsZVxuIik7CisJCQlwZ19mYXRhbCgiaW52YWxpZCBhY3Rpb24g KENSRUFURSkgZm9yIHJlZ3VsYXIgZmlsZSIpOwogCQkJYnJlYWs7CiAJfQogfQpAQCAtMTgz LDggKzE4Myw4IEBAIHJlbW92ZV90YXJnZXRfZmlsZShjb25zdCBjaGFyICpwYXRoLCBib29s IG1pc3Npbmdfb2spCiAJCWlmIChlcnJubyA9PSBFTk9FTlQgJiYgbWlzc2luZ19vaykKIAkJ CXJldHVybjsKIAotCQlwZ19mYXRhbCgiY291bGQgbm90IHJlbW92ZSBmaWxlIFwiJXNcIjog JXNcbiIsCi0JCQkJIGRzdHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJj b3VsZCBub3QgcmVtb3ZlIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJIGRzdHBhdGgpOwogCX0K IH0KIApAQCAtMjAxLDEyICsyMDEsMTIgQEAgdHJ1bmNhdGVfdGFyZ2V0X2ZpbGUoY29uc3Qg Y2hhciAqcGF0aCwgb2ZmX3QgbmV3c2l6ZSkKIAogCWZkID0gb3Blbihkc3RwYXRoLCBPX1dS T05MWSwgcGdfZmlsZV9jcmVhdGVfbW9kZSk7CiAJaWYgKGZkIDwgMCkKLQkJcGdfZmF0YWwo ImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciB0cnVuY2F0aW9uOiAlc1xuIiwKLQkJ CQkgZHN0cGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBv cGVuIGZpbGUgXCIlc1wiIGZvciB0cnVuY2F0aW9uOiAlbSIsCisJCQkJIGRzdHBhdGgpOwog CiAJaWYgKGZ0cnVuY2F0ZShmZCwgbmV3c2l6ZSkgIT0gMCkKLQkJcGdfZmF0YWwoImNvdWxk IG5vdCB0cnVuY2F0ZSBmaWxlIFwiJXNcIiB0byAldTogJXNcbiIsCi0JCQkJIGRzdHBhdGgs ICh1bnNpZ25lZCBpbnQpIG5ld3NpemUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFs KCJjb3VsZCBub3QgdHJ1bmNhdGUgZmlsZSBcIiVzXCIgdG8gJXU6ICVtIiwKKwkJCQkgZHN0 cGF0aCwgKHVuc2lnbmVkIGludCkgbmV3c2l6ZSk7CiAKIAljbG9zZShmZCk7CiB9CkBAIC0y MjEsOCArMjIxLDggQEAgY3JlYXRlX3RhcmdldF9kaXIoY29uc3QgY2hhciAqcGF0aCkKIAog CXNucHJpbnRmKGRzdHBhdGgsIHNpemVvZihkc3RwYXRoKSwgIiVzLyVzIiwgZGF0YWRpcl90 YXJnZXQsIHBhdGgpOwogCWlmIChta2Rpcihkc3RwYXRoLCBwZ19kaXJfY3JlYXRlX21vZGUp ICE9IDApCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6 ICVzXG4iLAotCQkJCSBkc3RwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgi Y291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJIGRzdHBhdGgp OwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjM1LDggKzIzNSw4IEBAIHJlbW92ZV90YXJnZXRf ZGlyKGNvbnN0IGNoYXIgKnBhdGgpCiAKIAlzbnByaW50Zihkc3RwYXRoLCBzaXplb2YoZHN0 cGF0aCksICIlcy8lcyIsIGRhdGFkaXJfdGFyZ2V0LCBwYXRoKTsKIAlpZiAocm1kaXIoZHN0 cGF0aCkgIT0gMCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZW1vdmUgZGlyZWN0b3J5IFwi JXNcIjogJXNcbiIsCi0JCQkJIGRzdHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2Zh dGFsKCJjb3VsZCBub3QgcmVtb3ZlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkgZHN0 cGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNDksOCArMjQ5LDggQEAgY3JlYXRlX3Rh cmdldF9zeW1saW5rKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmxpbmspCiAKIAlz bnByaW50Zihkc3RwYXRoLCBzaXplb2YoZHN0cGF0aCksICIlcy8lcyIsIGRhdGFkaXJfdGFy Z2V0LCBwYXRoKTsKIAlpZiAoc3ltbGluayhsaW5rLCBkc3RwYXRoKSAhPSAwKQotCQlwZ19m YXRhbCgiY291bGQgbm90IGNyZWF0ZSBzeW1ib2xpYyBsaW5rIGF0IFwiJXNcIjogJXNcbiIs Ci0JCQkJIGRzdHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBu b3QgY3JlYXRlIHN5bWJvbGljIGxpbmsgYXQgXCIlc1wiOiAlbSIsCisJCQkJIGRzdHBhdGgp OwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjYzLDggKzI2Myw4IEBAIHJlbW92ZV90YXJnZXRf c3ltbGluayhjb25zdCBjaGFyICpwYXRoKQogCiAJc25wcmludGYoZHN0cGF0aCwgc2l6ZW9m KGRzdHBhdGgpLCAiJXMvJXMiLCBkYXRhZGlyX3RhcmdldCwgcGF0aCk7CiAJaWYgKHVubGlu ayhkc3RwYXRoKSAhPSAwKQotCQlwZ19mYXRhbCgiY291bGQgbm90IHJlbW92ZSBzeW1ib2xp YyBsaW5rIFwiJXNcIjogJXNcbiIsCi0JCQkJIGRzdHBhdGgsIHN0cmVycm9yKGVycm5vKSk7 CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVtb3ZlIHN5bWJvbGljIGxpbmsgXCIlc1wiOiAl bSIsCisJCQkJIGRzdHBhdGgpOwogfQogCiAKQEAgLTI5NCwxMiArMjk0LDEyIEBAIHNsdXJw RmlsZShjb25zdCBjaGFyICpkYXRhZGlyLCBjb25zdCBjaGFyICpwYXRoLCBzaXplX3QgKmZp bGVzaXplKQogCXNucHJpbnRmKGZ1bGxwYXRoLCBzaXplb2YoZnVsbHBhdGgpLCAiJXMvJXMi LCBkYXRhZGlyLCBwYXRoKTsKIAogCWlmICgoZmQgPSBvcGVuKGZ1bGxwYXRoLCBPX1JET05M WSB8IFBHX0JJTkFSWSwgMCkpID09IC0xKQotCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4g ZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVzXG4iLAotCQkJCSBmdWxscGF0aCwgc3RyZXJy b3IoZXJybm8pKTsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZv ciByZWFkaW5nOiAlbSIsCisJCQkJIGZ1bGxwYXRoKTsKIAogCWlmIChmc3RhdChmZCwgJnN0 YXRidWYpIDwgMCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZv ciByZWFkaW5nOiAlc1xuIiwKLQkJCQkgZnVsbHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJ CXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3IgcmVhZGluZzogJW0i LAorCQkJCSBmdWxscGF0aCk7CiAKIAlsZW4gPSBzdGF0YnVmLnN0X3NpemU7CiAKQEAgLTMw OSwxMCArMzA5LDEwIEBAIHNsdXJwRmlsZShjb25zdCBjaGFyICpkYXRhZGlyLCBjb25zdCBj aGFyICpwYXRoLCBzaXplX3QgKmZpbGVzaXplKQogCWlmIChyICE9IGxlbikKIAl7CiAJCWlm IChyIDwgMCkKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJXNc biIsCi0JCQkJCSBmdWxscGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2ZhdGFsKCJj b3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkgZnVsbHBhdGgpOwogCQll bHNlCi0JCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6IHJlYWQgJWQg b2YgJXp1XG4iLAorCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiBy ZWFkICVkIG9mICV6dSIsCiAJCQkJCSBmdWxscGF0aCwgciwgKFNpemUpIGxlbik7CiAJfQog CWNsb3NlKGZkKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAuYyBi L3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAuYwppbmRleCBiYjRmZmQwZTM4Li4xNzBkYzY0 ZGRhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jld2luZC9maWxlbWFwLmMKKysrIGIvc3Jj L2Jpbi9wZ19yZXdpbmQvZmlsZW1hcC5jCkBAIC0yMCw2ICsyMCw3IEBACiAKICNpbmNsdWRl ICJjb21tb24vc3RyaW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlX2Qu aCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9m ZC5oIgogCiBmaWxlbWFwX3QgICpmaWxlbWFwID0gTlVMTDsKQEAgLTE3NCw3ICsxNzUsNyBA QCBwcm9jZXNzX3NvdXJjZV9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGZpbGVfdHlwZV90IHR5 cGUsIHNpemVfdCBuZXdzaXplLAogCSAqIHJlZ3VsYXIgZmlsZQogCSAqLwogCWlmICh0eXBl ICE9IEZJTEVfVFlQRV9SRUdVTEFSICYmIGlzUmVsRGF0YUZpbGUocGF0aCkpCi0JCXBnX2Zh dGFsKCJkYXRhIGZpbGUgXCIlc1wiIGluIHNvdXJjZSBpcyBub3QgYSByZWd1bGFyIGZpbGVc biIsIHBhdGgpOworCQlwZ19mYXRhbCgiZGF0YSBmaWxlIFwiJXNcIiBpbiBzb3VyY2UgaXMg bm90IGEgcmVndWxhciBmaWxlIiwgcGF0aCk7CiAKIAlzbnByaW50Zihsb2NhbHBhdGgsIHNp emVvZihsb2NhbHBhdGgpLCAiJXMvJXMiLCBkYXRhZGlyX3RhcmdldCwgcGF0aCk7CiAKQEAg LTE4Miw4ICsxODMsOCBAQCBwcm9jZXNzX3NvdXJjZV9maWxlKGNvbnN0IGNoYXIgKnBhdGgs IGZpbGVfdHlwZV90IHR5cGUsIHNpemVfdCBuZXdzaXplLAogCWlmIChsc3RhdChsb2NhbHBh dGgsICZzdGF0YnVmKSA8IDApCiAJewogCQlpZiAoZXJybm8gIT0gRU5PRU5UKQotCQkJcGdf ZmF0YWwoImNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlc1xuIiwKLQkJCQkJIGxvY2Fs cGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgc3RhdCBm aWxlIFwiJXNcIjogJW0iLAorCQkJCQkgbG9jYWxwYXRoKTsKIAogCQlleGlzdHMgPSBmYWxz ZTsKIAl9CkBAIC0xOTYsNyArMTk3LDcgQEAgcHJvY2Vzc19zb3VyY2VfZmlsZShjb25zdCBj aGFyICpwYXRoLCBmaWxlX3R5cGVfdCB0eXBlLCBzaXplX3QgbmV3c2l6ZSwKIAkJCWlmIChl eGlzdHMgJiYgIVNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSAmJiBzdHJjbXAocGF0aCwgInBn X3dhbCIpICE9IDApCiAJCQl7CiAJCQkJLyogaXQncyBhIGRpcmVjdG9yeSBpbiBzb3VyY2Us IGJ1dCBub3QgaW4gdGFyZ2V0LiBTdHJhbmdlLi4gKi8KLQkJCQlwZ19mYXRhbCgiXCIlc1wi IGlzIG5vdCBhIGRpcmVjdG9yeVxuIiwgbG9jYWxwYXRoKTsKKwkJCQlwZ19mYXRhbCgiXCIl c1wiIGlzIG5vdCBhIGRpcmVjdG9yeSIsIGxvY2FscGF0aCk7CiAJCQl9CiAKIAkJCWlmICgh ZXhpc3RzKQpAQCAtMjE5LDcgKzIyMCw3IEBAIHByb2Nlc3Nfc291cmNlX2ZpbGUoY29uc3Qg Y2hhciAqcGF0aCwgZmlsZV90eXBlX3QgdHlwZSwgc2l6ZV90IG5ld3NpemUsCiAJCQkJICog SXQncyBhIHN5bWJvbGljIGxpbmsgaW4gc291cmNlLCBidXQgbm90IGluIHRhcmdldC4KIAkJ CQkgKiBTdHJhbmdlLi4KIAkJCQkgKi8KLQkJCQlwZ19mYXRhbCgiXCIlc1wiIGlzIG5vdCBh IHN5bWJvbGljIGxpbmtcbiIsIGxvY2FscGF0aCk7CisJCQkJcGdfZmF0YWwoIlwiJXNcIiBp cyBub3QgYSBzeW1ib2xpYyBsaW5rIiwgbG9jYWxwYXRoKTsKIAkJCX0KIAogCQkJaWYgKCFl eGlzdHMpCkBAIC0yMzEsNyArMjMyLDcgQEAgcHJvY2Vzc19zb3VyY2VfZmlsZShjb25zdCBj aGFyICpwYXRoLCBmaWxlX3R5cGVfdCB0eXBlLCBzaXplX3QgbmV3c2l6ZSwKIAogCQljYXNl IEZJTEVfVFlQRV9SRUdVTEFSOgogCQkJaWYgKGV4aXN0cyAmJiAhU19JU1JFRyhzdGF0YnVm LnN0X21vZGUpKQotCQkJCXBnX2ZhdGFsKCJcIiVzXCIgaXMgbm90IGEgcmVndWxhciBmaWxl XG4iLCBsb2NhbHBhdGgpOworCQkJCXBnX2ZhdGFsKCJcIiVzXCIgaXMgbm90IGEgcmVndWxh ciBmaWxlIiwgbG9jYWxwYXRoKTsKIAogCQkJaWYgKCFleGlzdHMgfHwgIWlzUmVsRGF0YUZp bGUocGF0aCkpCiAJCQl7CkBAIC0zNDUsOCArMzQ2LDggQEAgcHJvY2Vzc190YXJnZXRfZmls ZShjb25zdCBjaGFyICpwYXRoLCBmaWxlX3R5cGVfdCB0eXBlLCBzaXplX3Qgb2xkc2l6ZSwK IAlpZiAobHN0YXQobG9jYWxwYXRoLCAmc3RhdGJ1ZikgPCAwKQogCXsKIAkJaWYgKGVycm5v ICE9IEVOT0VOVCkKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjog JXNcbiIsCi0JCQkJCSBsb2NhbHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19mYXRh bCgiY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJIGxvY2FscGF0aCk7 CiAKIAkJZXhpc3RzID0gZmFsc2U7CiAJfQpAQCAtMzU3LDcgKzM1OCw3IEBAIHByb2Nlc3Nf dGFyZ2V0X2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgZmlsZV90eXBlX3QgdHlwZSwgc2l6ZV90 IG9sZHNpemUsCiAJCWlmIChtYXAtPm5saXN0ID09IDApCiAJCXsKIAkJCS8qIHNob3VsZCBu b3QgaGFwcGVuICovCi0JCQlwZ19mYXRhbCgic291cmNlIGZpbGUgbGlzdCBpcyBlbXB0eVxu Iik7CisJCQlwZ19mYXRhbCgic291cmNlIGZpbGUgbGlzdCBpcyBlbXB0eSIpOwogCQl9CiAK IAkJZmlsZW1hcF9saXN0X3RvX2FycmF5KG1hcCk7CkBAIC00NzIsNyArNDczLDcgQEAgcHJv Y2Vzc19ibG9ja19jaGFuZ2UoRm9ya051bWJlciBmb3JrbnVtLCBSZWxGaWxlTm9kZSBybm9k ZSwgQmxvY2tOdW1iZXIgYmxrbm8pCiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgRklMRV9BQ1RJ T05fQ1JFQVRFOgotCQkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHBhZ2UgbW9kaWZpY2F0aW9u IGZvciBkaXJlY3Rvcnkgb3Igc3ltYm9saWMgbGluayBcIiVzXCJcbiIsIGVudHJ5LT5wYXRo KTsKKwkJCQlwZ19mYXRhbCgidW5leHBlY3RlZCBwYWdlIG1vZGlmaWNhdGlvbiBmb3IgZGly ZWN0b3J5IG9yIHN5bWJvbGljIGxpbmsgXCIlc1wiIiwgZW50cnktPnBhdGgpOwogCQl9CiAJ fQogCWVsc2UKQEAgLTUwNywxMCArNTA4LDEwIEBAIGNoZWNrX2ZpbGVfZXhjbHVkZWQoY29u c3QgY2hhciAqcGF0aCwgYm9vbCBpc19zb3VyY2UpCiAJCWlmIChzdHJjbXAoZmlsZW5hbWUs IGV4Y2x1ZGVGaWxlc1tleGNsdWRlSWR4XSkgPT0gMCkKIAkJewogCQkJaWYgKGlzX3NvdXJj ZSkKLQkJCQlwZ19sb2coUEdfREVCVUcsICJlbnRyeSBcIiVzXCIgZXhjbHVkZWQgZnJvbSBz b3VyY2UgZmlsZSBsaXN0XG4iLAorCQkJCXBnX2xvZ19kZWJ1ZygiZW50cnkgXCIlc1wiIGV4 Y2x1ZGVkIGZyb20gc291cmNlIGZpbGUgbGlzdCIsCiAJCQkJCSAgIHBhdGgpOwogCQkJZWxz ZQotCQkJCXBnX2xvZyhQR19ERUJVRywgImVudHJ5IFwiJXNcIiBleGNsdWRlZCBmcm9tIHRh cmdldCBmaWxlIGxpc3RcbiIsCisJCQkJcGdfbG9nX2RlYnVnKCJlbnRyeSBcIiVzXCIgZXhj bHVkZWQgZnJvbSB0YXJnZXQgZmlsZSBsaXN0IiwKIAkJCQkJICAgcGF0aCk7CiAJCQlyZXR1 cm4gdHJ1ZTsKIAkJfQpAQCAtNTI3LDEwICs1MjgsMTAgQEAgY2hlY2tfZmlsZV9leGNsdWRl ZChjb25zdCBjaGFyICpwYXRoLCBib29sIGlzX3NvdXJjZSkKIAkJaWYgKHN0cnN0cihwYXRo LCBsb2NhbHBhdGgpID09IHBhdGgpCiAJCXsKIAkJCWlmIChpc19zb3VyY2UpCi0JCQkJcGdf bG9nKFBHX0RFQlVHLCAiZW50cnkgXCIlc1wiIGV4Y2x1ZGVkIGZyb20gc291cmNlIGZpbGUg bGlzdFxuIiwKKwkJCQlwZ19sb2dfZGVidWcoImVudHJ5IFwiJXNcIiBleGNsdWRlZCBmcm9t IHNvdXJjZSBmaWxlIGxpc3QiLAogCQkJCQkgICBwYXRoKTsKIAkJCWVsc2UKLQkJCQlwZ19s b2coUEdfREVCVUcsICJlbnRyeSBcIiVzXCIgZXhjbHVkZWQgZnJvbSB0YXJnZXQgZmlsZSBs aXN0XG4iLAorCQkJCXBnX2xvZ19kZWJ1ZygiZW50cnkgXCIlc1wiIGV4Y2x1ZGVkIGZyb20g dGFyZ2V0IGZpbGUgbGlzdCIsCiAJCQkJCSAgIHBhdGgpOwogCQkJcmV0dXJuIHRydWU7CiAJ CX0KQEAgLTY1OCwxMCArNjU5LDcgQEAgcHJpbnRfZmlsZW1hcCh2b2lkKQogCQlpZiAoZW50 cnktPmFjdGlvbiAhPSBGSUxFX0FDVElPTl9OT05FIHx8CiAJCQllbnRyeS0+cGFnZW1hcC5i aXRtYXBzaXplID4gMCkKIAkJewotCQkJcGdfbG9nKFBHX0RFQlVHLAotCQkJLyotLS0tLS0K LQkJCSAgIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIGEgZmlsZSBwYXRoLCBzZWNvbmQgaXMg YSBrZXl3b3JkIHN1Y2ggYXMgQ09QWSAqLwotCQkJCSAgICIlcyAoJXMpXG4iLCBlbnRyeS0+ cGF0aCwKKwkJCXBnX2xvZ19kZWJ1ZygiJXMgKCVzKSIsIGVudHJ5LT5wYXRoLAogCQkJCSAg IGFjdGlvbl90b19zdHIoZW50cnktPmFjdGlvbikpOwogCiAJCQlpZiAoZW50cnktPnBhZ2Vt YXAuYml0bWFwc2l6ZSA+IDApCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9saWJw cV9mZXRjaC5jIGIvc3JjL2Jpbi9wZ19yZXdpbmQvbGlicHFfZmV0Y2guYwppbmRleCBkMDZl Mjc3NDMyLi5jNzU2YjcwMTljIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jld2luZC9saWJw cV9mZXRjaC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL2xpYnBxX2ZldGNoLmMKQEAgLTI0 LDYgKzI0LDcgQEAKICNpbmNsdWRlICJsaWJwcS1mZS5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHlwZV9kLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvY29ubmVjdC5oIgorI2luY2x1ZGUg ImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJwb3J0L3BnX2Jzd2FwLmgiCiAKIHN0 YXRpYyBQR2Nvbm4gKmNvbm4gPSBOVUxMOwpAQCAtNTIsNyArNTMsNyBAQCBsaWJwcUNvbm5l Y3QoY29uc3QgY2hhciAqY29ubnN0cikKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBjb25uZWN0 IHRvIHNlcnZlcjogJXMiLAogCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAKLQlwZ19s b2coUEdfUFJPR1JFU1MsICJjb25uZWN0ZWQgdG8gc2VydmVyXG4iKTsKKwlwZ19sb2dfaW5m bygiY29ubmVjdGVkIHRvIHNlcnZlciIpOwogCiAJcmVzID0gUFFleGVjKGNvbm4sIEFMV0FZ U19TRUNVUkVfU0VBUkNIX1BBVEhfU1FMKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAh PSBQR1JFU19UVVBMRVNfT0spCkBAIC02OCw3ICs2OSw3IEBAIGxpYnBxQ29ubmVjdChjb25z dCBjaGFyICpjb25uc3RyKQogCSAqLwogCXN0ciA9IHJ1bl9zaW1wbGVfcXVlcnkoIlNFTEVD VCBwZ19pc19pbl9yZWNvdmVyeSgpIik7CiAJaWYgKHN0cmNtcChzdHIsICJmIikgIT0gMCkK LQkJcGdfZmF0YWwoInNvdXJjZSBzZXJ2ZXIgbXVzdCBub3QgYmUgaW4gcmVjb3ZlcnkgbW9k ZVxuIik7CisJCXBnX2ZhdGFsKCJzb3VyY2Ugc2VydmVyIG11c3Qgbm90IGJlIGluIHJlY292 ZXJ5IG1vZGUiKTsKIAlwZ19mcmVlKHN0cik7CiAKIAkvKgpAQCAtNzgsNyArNzksNyBAQCBs aWJwcUNvbm5lY3QoY29uc3QgY2hhciAqY29ubnN0cikKIAkgKi8KIAlzdHIgPSBydW5fc2lt cGxlX3F1ZXJ5KCJTSE9XIGZ1bGxfcGFnZV93cml0ZXMiKTsKIAlpZiAoc3RyY21wKHN0ciwg Im9uIikgIT0gMCkKLQkJcGdfZmF0YWwoImZ1bGxfcGFnZV93cml0ZXMgbXVzdCBiZSBlbmFi bGVkIGluIHRoZSBzb3VyY2Ugc2VydmVyXG4iKTsKKwkJcGdfZmF0YWwoImZ1bGxfcGFnZV93 cml0ZXMgbXVzdCBiZSBlbmFibGVkIGluIHRoZSBzb3VyY2Ugc2VydmVyIik7CiAJcGdfZnJl ZShzdHIpOwogCiAJLyoKQEAgLTExMyw3ICsxMTQsNyBAQCBydW5fc2ltcGxlX3F1ZXJ5KGNv bnN0IGNoYXIgKnNxbCkKIAogCS8qIHNhbml0eSBjaGVjayB0aGUgcmVzdWx0IHNldCAqLwog CWlmIChQUW5maWVsZHMocmVzKSAhPSAxIHx8IFBRbnR1cGxlcyhyZXMpICE9IDEgfHwgUFFn ZXRpc251bGwocmVzLCAwLCAwKSkKLQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgcmVzdWx0IHNl dCBmcm9tIHF1ZXJ5XG4iKTsKKwkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgcmVzdWx0IHNldCBm cm9tIHF1ZXJ5Iik7CiAKIAlyZXN1bHQgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIDAs IDApKTsKIApAQCAtMTM2LDcgKzEzNyw3IEBAIGxpYnBxR2V0Q3VycmVudFhsb2dJbnNlcnRM b2NhdGlvbih2b2lkKQogCXZhbCA9IHJ1bl9zaW1wbGVfcXVlcnkoIlNFTEVDVCBwZ19jdXJy ZW50X3dhbF9pbnNlcnRfbHNuKCkiKTsKIAogCWlmIChzc2NhbmYodmFsLCAiJVgvJVgiLCAm aGksICZsbykgIT0gMikKLQkJcGdfZmF0YWwoInVucmVjb2duaXplZCByZXN1bHQgXCIlc1wi IGZvciBjdXJyZW50IFdBTCBpbnNlcnQgbG9jYXRpb25cbiIsIHZhbCk7CisJCXBnX2ZhdGFs KCJ1bnJlY29nbml6ZWQgcmVzdWx0IFwiJXNcIiBmb3IgY3VycmVudCBXQUwgaW5zZXJ0IGxv Y2F0aW9uIiwgdmFsKTsKIAogCXJlc3VsdCA9ICgodWludDY0KSBoaSkgPDwgMzIgfCBsbzsK IApAQCAtMTkxLDcgKzE5Miw3IEBAIGxpYnBxUHJvY2Vzc0ZpbGVMaXN0KHZvaWQpCiAKIAkv KiBzYW5pdHkgY2hlY2sgdGhlIHJlc3VsdCBzZXQgKi8KIAlpZiAoUFFuZmllbGRzKHJlcykg IT0gNCkKLQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgcmVzdWx0IHNldCB3aGlsZSBmZXRjaGlu ZyBmaWxlIGxpc3RcbiIpOworCQlwZ19mYXRhbCgidW5leHBlY3RlZCByZXN1bHQgc2V0IHdo aWxlIGZldGNoaW5nIGZpbGUgbGlzdCIpOwogCiAJLyogUmVhZCByZXN1bHQgdG8gbG9jYWwg dmFyaWFibGVzICovCiAJZm9yIChpID0gMDsgaSA8IFBRbnR1cGxlcyhyZXMpOyBpKyspCkBA IC0yNDEsMTAgKzI0MiwxMCBAQCByZWNlaXZlRmlsZUNodW5rcyhjb25zdCBjaGFyICpzcWwp CiAJaWYgKFBRc2VuZFF1ZXJ5UGFyYW1zKGNvbm4sIHNxbCwgMCwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCwgMSkgIT0gMSkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBzZW5kIHF1ZXJ5OiAl cyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAotCXBnX2xvZyhQR19ERUJVRywgImdldHRp bmcgZmlsZSBjaHVua3NcbiIpOworCXBnX2xvZ19kZWJ1ZygiZ2V0dGluZyBmaWxlIGNodW5r cyIpOwogCiAJaWYgKFBRc2V0U2luZ2xlUm93TW9kZShjb25uKSAhPSAxKQotCQlwZ19mYXRh bCgiY291bGQgbm90IHNldCBsaWJwcSBjb25uZWN0aW9uIHRvIHNpbmdsZSByb3cgbW9kZVxu Iik7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgc2V0IGxpYnBxIGNvbm5lY3Rpb24gdG8gc2lu Z2xlIHJvdyBtb2RlIik7CiAKIAl3aGlsZSAoKHJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pKSAh PSBOVUxMKQogCXsKQEAgLTI3MSwxMyArMjcyLDEzIEBAIHJlY2VpdmVGaWxlQ2h1bmtzKGNv bnN0IGNoYXIgKnNxbCkKIAogCQkvKiBzYW5pdHkgY2hlY2sgdGhlIHJlc3VsdCBzZXQgKi8K IAkJaWYgKFBRbmZpZWxkcyhyZXMpICE9IDMgfHwgUFFudHVwbGVzKHJlcykgIT0gMSkKLQkJ CXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHJlc3VsdCBzZXQgc2l6ZSB3aGlsZSBmZXRjaGluZyBy ZW1vdGUgZmlsZXNcbiIpOworCQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgcmVzdWx0IHNldCBz aXplIHdoaWxlIGZldGNoaW5nIHJlbW90ZSBmaWxlcyIpOwogCiAJCWlmIChQUWZ0eXBlKHJl cywgMCkgIT0gVEVYVE9JRCB8fAogCQkJUFFmdHlwZShyZXMsIDEpICE9IElOVDhPSUQgfHwK IAkJCVBRZnR5cGUocmVzLCAyKSAhPSBCWVRFQU9JRCkKIAkJewotCQkJcGdfZmF0YWwoInVu ZXhwZWN0ZWQgZGF0YSB0eXBlcyBpbiByZXN1bHQgc2V0IHdoaWxlIGZldGNoaW5nIHJlbW90 ZSBmaWxlczogJXUgJXUgJXVcbiIsCisJCQlwZ19mYXRhbCgidW5leHBlY3RlZCBkYXRhIHR5 cGVzIGluIHJlc3VsdCBzZXQgd2hpbGUgZmV0Y2hpbmcgcmVtb3RlIGZpbGVzOiAldSAldSAl dSIsCiAJCQkJCSBQUWZ0eXBlKHJlcywgMCksIFBRZnR5cGUocmVzLCAxKSwgUFFmdHlwZShy ZXMsIDIpKTsKIAkJfQogCkBAIC0yODUsMTcgKzI4NiwxNyBAQCByZWNlaXZlRmlsZUNodW5r cyhjb25zdCBjaGFyICpzcWwpCiAJCQlQUWZmb3JtYXQocmVzLCAxKSAhPSAxICYmCiAJCQlQ UWZmb3JtYXQocmVzLCAyKSAhPSAxKQogCQl7Ci0JCQlwZ19mYXRhbCgidW5leHBlY3RlZCBy ZXN1bHQgZm9ybWF0IHdoaWxlIGZldGNoaW5nIHJlbW90ZSBmaWxlc1xuIik7CisJCQlwZ19m YXRhbCgidW5leHBlY3RlZCByZXN1bHQgZm9ybWF0IHdoaWxlIGZldGNoaW5nIHJlbW90ZSBm aWxlcyIpOwogCQl9CiAKIAkJaWYgKFBRZ2V0aXNudWxsKHJlcywgMCwgMCkgfHwKIAkJCVBR Z2V0aXNudWxsKHJlcywgMCwgMSkpCiAJCXsKLQkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIG51 bGwgdmFsdWVzIGluIHJlc3VsdCB3aGlsZSBmZXRjaGluZyByZW1vdGUgZmlsZXNcbiIpOwor CQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgbnVsbCB2YWx1ZXMgaW4gcmVzdWx0IHdoaWxlIGZl dGNoaW5nIHJlbW90ZSBmaWxlcyIpOwogCQl9CiAKIAkJaWYgKFBRZ2V0bGVuZ3RoKHJlcywg MCwgMSkgIT0gc2l6ZW9mKGludDY0KSkKLQkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHJlc3Vs dCBsZW5ndGggd2hpbGUgZmV0Y2hpbmcgcmVtb3RlIGZpbGVzXG4iKTsKKwkJCXBnX2ZhdGFs KCJ1bmV4cGVjdGVkIHJlc3VsdCBsZW5ndGggd2hpbGUgZmV0Y2hpbmcgcmVtb3RlIGZpbGVz Iik7CiAKIAkJLyogUmVhZCByZXN1bHQgc2V0IHRvIGxvY2FsIHZhcmlhYmxlcyAqLwogCQlt ZW1jcHkoJmNodW5rb2ZmLCBQUWdldHZhbHVlKHJlcywgMCwgMSksIHNpemVvZihpbnQ2NCkp OwpAQCAtMzE5LDggKzMyMCw3IEBAIHJlY2VpdmVGaWxlQ2h1bmtzKGNvbnN0IGNoYXIgKnNx bCkKIAkJICovCiAJCWlmIChQUWdldGlzbnVsbChyZXMsIDAsIDIpKQogCQl7Ci0JCQlwZ19s b2coUEdfREVCVUcsCi0JCQkJICAgInJlY2VpdmVkIG51bGwgdmFsdWUgZm9yIGNodW5rIGZv ciBmaWxlIFwiJXNcIiwgZmlsZSBoYXMgYmVlbiBkZWxldGVkXG4iLAorCQkJcGdfbG9nX2Rl YnVnKCJyZWNlaXZlZCBudWxsIHZhbHVlIGZvciBjaHVuayBmb3IgZmlsZSBcIiVzXCIsIGZp bGUgaGFzIGJlZW4gZGVsZXRlZCIsCiAJCQkJICAgZmlsZW5hbWUpOwogCQkJcmVtb3ZlX3Rh cmdldF9maWxlKGZpbGVuYW1lLCB0cnVlKTsKIAkJCXBnX2ZyZWUoZmlsZW5hbWUpOwpAQCAt MzMzLDcgKzMzMyw3IEBAIHJlY2VpdmVGaWxlQ2h1bmtzKGNvbnN0IGNoYXIgKnNxbCkKIAkJ ICogdHJhbnNsYXRhYmxlIHN0cmluZ3MuCiAJCSAqLwogCQlzbnByaW50ZihjaHVua29mZl9z dHIsIHNpemVvZihjaHVua29mZl9zdHIpLCBJTlQ2NF9GT1JNQVQsIGNodW5rb2ZmKTsKLQkJ cGdfbG9nKFBHX0RFQlVHLCAicmVjZWl2ZWQgY2h1bmsgZm9yIGZpbGUgXCIlc1wiLCBvZmZz ZXQgJXMsIHNpemUgJWRcbiIsCisJCXBnX2xvZ19kZWJ1ZygicmVjZWl2ZWQgY2h1bmsgZm9y IGZpbGUgXCIlc1wiLCBvZmZzZXQgJXMsIHNpemUgJWQiLAogCQkJICAgZmlsZW5hbWUsIGNo dW5rb2ZmX3N0ciwgY2h1bmtzaXplKTsKIAogCQlvcGVuX3RhcmdldF9maWxlKGZpbGVuYW1l LCBmYWxzZSk7CkBAIC0zNjcsNyArMzY3LDcgQEAgbGlicHFHZXRGaWxlKGNvbnN0IGNoYXIg KmZpbGVuYW1lLCBzaXplX3QgKmZpbGVzaXplKQogCiAJLyogc2FuaXR5IGNoZWNrIHRoZSBy ZXN1bHQgc2V0ICovCiAJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEgfHwgUFFnZXRpc251bGwo cmVzLCAwLCAwKSkKLQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgcmVzdWx0IHNldCB3aGlsZSBm ZXRjaGluZyByZW1vdGUgZmlsZSBcIiVzXCJcbiIsCisJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVk IHJlc3VsdCBzZXQgd2hpbGUgZmV0Y2hpbmcgcmVtb3RlIGZpbGUgXCIlc1wiIiwKIAkJCQkg ZmlsZW5hbWUpOwogCiAJLyogUmVhZCByZXN1bHQgdG8gbG9jYWwgdmFyaWFibGVzICovCkBA IC0zNzgsNyArMzc4LDcgQEAgbGlicHFHZXRGaWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBz aXplX3QgKmZpbGVzaXplKQogCiAJUFFjbGVhcihyZXMpOwogCi0JcGdfbG9nKFBHX0RFQlVH LCAiZmV0Y2hlZCBmaWxlIFwiJXNcIiwgbGVuZ3RoICVkXG4iLCBmaWxlbmFtZSwgbGVuKTsK KwlwZ19sb2dfZGVidWcoImZldGNoZWQgZmlsZSBcIiVzXCIsIGxlbmd0aCAlZCIsIGZpbGVu YW1lLCBsZW4pOwogCiAJaWYgKGZpbGVzaXplKQogCQkqZmlsZXNpemUgPSBsZW47CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9sb2dnaW5nLmMgYi9zcmMvYmluL3BnX3Jld2lu ZC9sb2dnaW5nLmMKaW5kZXggNTcyYTc1OTkzNy4uODVmMjU2NzQ0MSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19yZXdpbmQvbG9nZ2luZy5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL2xv Z2dpbmcuYwpAQCAtMjMsNzIgKzIzLDYgQEAgdWludDY0CQlmZXRjaF9kb25lOwogCiBzdGF0 aWMgcGdfdGltZV90IGxhc3RfcHJvZ3Jlc3NfcmVwb3J0ID0gMDsKIAotI2RlZmluZSBRVUVS WV9BTExPQwkJCTgxOTIKLQotc3RhdGljCi1wZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDApCi12 b2lkCi1wZ19sb2dfdihlTG9nVHlwZSB0eXBlLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3Qg YXApCi17Ci0JY2hhcgkJbWVzc2FnZVtRVUVSWV9BTExPQ107Ci0KLQl2c25wcmludGYobWVz c2FnZSwgc2l6ZW9mKG1lc3NhZ2UpLCBfKGZtdCksIGFwKTsKLQotCXN3aXRjaCAodHlwZSkK LQl7Ci0JCWNhc2UgUEdfREVCVUc6Ci0JCQlpZiAoZGVidWcpCi0JCQkJcHJpbnRmKCIlcyIs IG1lc3NhZ2UpOwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBQR19QUk9HUkVTUzoKLQkJCWlmIChz aG93cHJvZ3Jlc3MpCi0JCQkJcHJpbnRmKCIlcyIsIG1lc3NhZ2UpOwotCQkJYnJlYWs7Ci0K LQkJY2FzZSBQR19XQVJOSU5HOgotCQkJcHJpbnRmKCIlcyIsIG1lc3NhZ2UpOwotCQkJYnJl YWs7Ci0KLQkJY2FzZSBQR19GQVRBTDoKLQkJCXByaW50ZigiXG4lcyIsIG1lc3NhZ2UpOwot CQkJcHJpbnRmKCIlcyIsIF8oIkZhaWx1cmUsIGV4aXRpbmdcbiIpKTsKLQkJCWV4aXQoMSk7 Ci0JCQlicmVhazsKLQotCQlkZWZhdWx0OgotCQkJYnJlYWs7Ci0JfQotCWZmbHVzaChzdGRv dXQpOwotfQotCi0KLXZvaWQKLXBnX2xvZyhlTG9nVHlwZSB0eXBlLCBjb25zdCBjaGFyICpm bXQsLi4uKQotewotCXZhX2xpc3QJCWFyZ3M7Ci0KLQl2YV9zdGFydChhcmdzLCBmbXQpOwot CXBnX2xvZ192KHR5cGUsIGZtdCwgYXJncyk7Ci0JdmFfZW5kKGFyZ3MpOwotfQotCi0KLS8q Ci0gKiBQcmludCBhbiBlcnJvciBtZXNzYWdlLCBhbmQgZXhpdC4KLSAqLwotdm9pZAotcGdf ZmF0YWwoY29uc3QgY2hhciAqZm10LC4uLikKLXsKLQl2YV9saXN0CQlhcmdzOwotCi0JdmFf c3RhcnQoYXJncywgZm10KTsKLQlwZ19sb2dfdihQR19GQVRBTCwgZm10LCBhcmdzKTsKLQl2 YV9lbmQoYXJncyk7Ci0JLyogc2hvdWxkIG5vdCBnZXQgaGVyZSwgcGdfbG9nX3YoKSBleGl0 ZWQgYWxyZWFkeSAqLwotCWV4aXQoMSk7Ci19Ci0KIAogLyoKICAqIFByaW50IGEgcHJvZ3Jl c3MgcmVwb3J0IGJhc2VkIG9uIHRoZSBnbG9iYWwgdmFyaWFibGVzLgpAQCAtMTM1LDggKzY5 LDkgQEAgcHJvZ3Jlc3NfcmVwb3J0KGJvb2wgZm9yY2UpCiAJc25wcmludGYoZmV0Y2hfc2l6 ZV9zdHIsIHNpemVvZihmZXRjaF9zaXplX3N0ciksIElOVDY0X0ZPUk1BVCwKIAkJCSBmZXRj aF9zaXplIC8gMTAyNCk7CiAKLQlwZ19sb2coUEdfUFJPR1JFU1MsICIlKnMvJXMga0IgKCVk JSUpIGNvcGllZCIsCisJcHJpbnRmKF8oIiUqcy8lcyBrQiAoJWQlJSkgY29waWVkIiksCiAJ CSAgIChpbnQpIHN0cmxlbihmZXRjaF9zaXplX3N0ciksIGZldGNoX2RvbmVfc3RyLCBmZXRj aF9zaXplX3N0ciwKIAkJICAgcGVyY2VudCk7CiAJcHJpbnRmKCJcciIpOworCWZmbHVzaChz dGRvdXQpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdpbmQvbG9nZ2luZy5oIGIv c3JjL2Jpbi9wZ19yZXdpbmQvbG9nZ2luZy5oCmluZGV4IDVjMDMxZTE4MjEuLjgxZTE3YWMx ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL2xvZ2dpbmcuaAorKysgYi9zcmMv YmluL3BnX3Jld2luZC9sb2dnaW5nLmgKQEAgLTEyLDI0ICsxMiwxNCBAQAogI2lmbmRlZiBQ R19SRVdJTkRfTE9HR0lOR19ICiAjZGVmaW5lIFBHX1JFV0lORF9MT0dHSU5HX0gKIAorI2lu Y2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKKwogLyogcHJvZ3Jlc3MgY291bnRlcnMgKi8K IGV4dGVybiB1aW50NjQgZmV0Y2hfc2l6ZTsKIGV4dGVybiB1aW50NjQgZmV0Y2hfZG9uZTsK IAotLyoKLSAqIEVudW1lcmF0aW9uIHRvIGRlbm90ZSBwZ19sb2cgbW9kZXMKLSAqLwotdHlw ZWRlZiBlbnVtCi17Ci0JUEdfREVCVUcsCi0JUEdfUFJPR1JFU1MsCi0JUEdfV0FSTklORywK LQlQR19GQVRBTAotfSBlTG9nVHlwZTsKLQotZXh0ZXJuIHZvaWQgcGdfbG9nKGVMb2dUeXBl IHR5cGUsIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmludGYoMiwgMyk7 Ci1leHRlcm4gdm9pZCBwZ19mYXRhbChjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1 dGVfcHJpbnRmKDEsIDIpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwotCiBleHRlcm4gdm9p ZCBwcm9ncmVzc19yZXBvcnQoYm9vbCBmb3JjZSk7CiAKKyNkZWZpbmUgcGdfZmF0YWwoLi4u KSBkbyB7IHBnX2xvZ19mYXRhbChfX1ZBX0FSR1NfXyk7IGV4aXQoMSk7IH0gd2hpbGUoMCkK KwogI2VuZGlmCQkJCQkJCS8qIFBHX1JFV0lORF9MT0dHSU5HX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfcmV3aW5kL25scy5tayBiL3NyYy9iaW4vcGdfcmV3aW5kL25scy5tawpp bmRleCAyZmI2M2JlYWQ4Li41OGM5ZWRlNTQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jl d2luZC9ubHMubWsKKysrIGIvc3JjL2Jpbi9wZ19yZXdpbmQvbmxzLm1rCkBAIC0xLDkgKzEs OCBAQAogIyBzcmMvYmluL3BnX3Jld2luZC9ubHMubWsKIENBVEFMT0dfTkFNRSAgICAgPSBw Z19yZXdpbmQKIEFWQUlMX0xBTkdVQUdFUyAgPWRlIGVzIGZyIGl0IGphIGtvIHBsIHB0X0JS IHJ1IHN2IHRyIHpoX0NOCi1HRVRURVhUX0ZJTEVTICAgID0gY29weV9mZXRjaC5jIGRhdGFw YWdlbWFwLmMgZmV0Y2guYyBmaWxlX29wcy5jIGZpbGVtYXAuYyBsaWJwcV9mZXRjaC5jIGxv Z2dpbmcuYyBwYXJzZXhsb2cuYyBwZ19yZXdpbmQuYyB0aW1lbGluZS5jIC4uLy4uL2NvbW1v bi9mZV9tZW11dGlscy5jIC4uLy4uL2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmMgeGxvZ3Jl YWRlci5jCi0KLUdFVFRFWFRfVFJJR0dFUlMgPSBwZ19sb2c6MiBwZ19mYXRhbCByZXBvcnRf aW52YWxpZF9yZWNvcmQ6MgotR0VUVEVYVF9GTEFHUyAgICA9IHBnX2xvZzoyOmMtZm9ybWF0 IFwKK0dFVFRFWFRfRklMRVMgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZJTEVT KSBjb3B5X2ZldGNoLmMgZGF0YXBhZ2VtYXAuYyBmZXRjaC5jIGZpbGVfb3BzLmMgZmlsZW1h cC5jIGxpYnBxX2ZldGNoLmMgbG9nZ2luZy5jIHBhcnNleGxvZy5jIHBnX3Jld2luZC5jIHRp bWVsaW5lLmMgLi4vLi4vY29tbW9uL2ZlX21lbXV0aWxzLmMgLi4vLi4vY29tbW9uL3Jlc3Ry aWN0ZWRfdG9rZW4uYyB4bG9ncmVhZGVyLmMKK0dFVFRFWFRfVFJJR0dFUlMgPSAkKEZST05U RU5EX0NPTU1PTl9HRVRURVhUX1RSSUdHRVJTKSBwZ19mYXRhbCByZXBvcnRfaW52YWxpZF9y ZWNvcmQ6MgorR0VUVEVYVF9GTEFHUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRf RkxBR1MpIFwKICAgICBwZ19mYXRhbDoxOmMtZm9ybWF0IFwKICAgICByZXBvcnRfaW52YWxp ZF9yZWNvcmQ6MjpjLWZvcm1hdApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdpbmQvcGFy c2V4bG9nLmMgYi9zcmMvYmluL3BnX3Jld2luZC9wYXJzZXhsb2cuYwppbmRleCBlMTljMjY1 Y2JiLi44NDFlMDY5NGIzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jld2luZC9wYXJzZXhs b2cuYworKysgYi9zcmMvYmluL3BnX3Jld2luZC9wYXJzZXhsb2cuYwpAQCAtNzIsNyArNzIs NyBAQCBleHRyYWN0UGFnZU1hcChjb25zdCBjaGFyICpkYXRhZGlyLCBYTG9nUmVjUHRyIHN0 YXJ0cG9pbnQsIGludCB0bGlJbmRleCwKIAl4bG9ncmVhZGVyID0gWExvZ1JlYWRlckFsbG9j YXRlKFdhbFNlZ1N6LCAmU2ltcGxlWExvZ1BhZ2VSZWFkLAogCQkJCQkJCQkJJnByaXZhdGUp OwogCWlmICh4bG9ncmVhZGVyID09IE5VTEwpCi0JCXBnX2ZhdGFsKCJvdXQgb2YgbWVtb3J5 XG4iKTsKKwkJcGdfZmF0YWwoIm91dCBvZiBtZW1vcnkiKTsKIAogCWRvCiAJewpAQCAtODUs MTEgKzg1LDExIEBAIGV4dHJhY3RQYWdlTWFwKGNvbnN0IGNoYXIgKmRhdGFkaXIsIFhMb2dS ZWNQdHIgc3RhcnRwb2ludCwgaW50IHRsaUluZGV4LAogCQkJZXJycHRyID0gc3RhcnRwb2lu dCA/IHN0YXJ0cG9pbnQgOiB4bG9ncmVhZGVyLT5FbmRSZWNQdHI7CiAKIAkJCWlmIChlcnJv cm1zZykKLQkJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgV0FMIHJlY29yZCBhdCAlWC8l WDogJXNcbiIsCisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIFdBTCByZWNvcmQgYXQg JVgvJVg6ICVzIiwKIAkJCQkJCSAodWludDMyKSAoZXJycHRyID4+IDMyKSwgKHVpbnQzMikg KGVycnB0ciksCiAJCQkJCQkgZXJyb3Jtc2cpOwogCQkJZWxzZQotCQkJCXBnX2ZhdGFsKCJj b3VsZCBub3QgcmVhZCBXQUwgcmVjb3JkIGF0ICVYLyVYXG4iLAorCQkJCXBnX2ZhdGFsKCJj b3VsZCBub3QgcmVhZCBXQUwgcmVjb3JkIGF0ICVYLyVYIiwKIAkJCQkJCSAodWludDMyKSAo c3RhcnRwb2ludCA+PiAzMiksCiAJCQkJCQkgKHVpbnQzMikgKHN0YXJ0cG9pbnQpKTsKIAkJ fQpAQCAtMTI2LDE2ICsxMjYsMTYgQEAgcmVhZE9uZVJlY29yZChjb25zdCBjaGFyICpkYXRh ZGlyLCBYTG9nUmVjUHRyIHB0ciwgaW50IHRsaUluZGV4KQogCXhsb2dyZWFkZXIgPSBYTG9n UmVhZGVyQWxsb2NhdGUoV2FsU2VnU3osICZTaW1wbGVYTG9nUGFnZVJlYWQsCiAJCQkJCQkJ CQkmcHJpdmF0ZSk7CiAJaWYgKHhsb2dyZWFkZXIgPT0gTlVMTCkKLQkJcGdfZmF0YWwoIm91 dCBvZiBtZW1vcnlcbiIpOworCQlwZ19mYXRhbCgib3V0IG9mIG1lbW9yeSIpOwogCiAJcmVj b3JkID0gWExvZ1JlYWRSZWNvcmQoeGxvZ3JlYWRlciwgcHRyLCAmZXJyb3Jtc2cpOwogCWlm IChyZWNvcmQgPT0gTlVMTCkKIAl7CiAJCWlmIChlcnJvcm1zZykKLQkJCXBnX2ZhdGFsKCJj b3VsZCBub3QgcmVhZCBXQUwgcmVjb3JkIGF0ICVYLyVYOiAlc1xuIiwKKwkJCXBnX2ZhdGFs KCJjb3VsZCBub3QgcmVhZCBXQUwgcmVjb3JkIGF0ICVYLyVYOiAlcyIsCiAJCQkJCSAodWlu dDMyKSAocHRyID4+IDMyKSwgKHVpbnQzMikgKHB0ciksIGVycm9ybXNnKTsKIAkJZWxzZQot CQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIFdBTCByZWNvcmQgYXQgJVgvJVhcbiIsCisJ CQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgV0FMIHJlY29yZCBhdCAlWC8lWCIsCiAJCQkJ CSAodWludDMyKSAocHRyID4+IDMyKSwgKHVpbnQzMikgKHB0cikpOwogCX0KIAllbmRwdHIg PSB4bG9ncmVhZGVyLT5FbmRSZWNQdHI7CkBAIC0xODQsNyArMTg0LDcgQEAgZmluZExhc3RD aGVja3BvaW50KGNvbnN0IGNoYXIgKmRhdGFkaXIsIFhMb2dSZWNQdHIgZm9ya3B0ciwgaW50 IHRsaUluZGV4LAogCXhsb2dyZWFkZXIgPSBYTG9nUmVhZGVyQWxsb2NhdGUoV2FsU2VnU3os ICZTaW1wbGVYTG9nUGFnZVJlYWQsCiAJCQkJCQkJCQkmcHJpdmF0ZSk7CiAJaWYgKHhsb2dy ZWFkZXIgPT0gTlVMTCkKLQkJcGdfZmF0YWwoIm91dCBvZiBtZW1vcnlcbiIpOworCQlwZ19m YXRhbCgib3V0IG9mIG1lbW9yeSIpOwogCiAJc2VhcmNocHRyID0gZm9ya3B0cjsKIAlmb3Ig KDs7KQpAQCAtMTk2LDExICsxOTYsMTEgQEAgZmluZExhc3RDaGVja3BvaW50KGNvbnN0IGNo YXIgKmRhdGFkaXIsIFhMb2dSZWNQdHIgZm9ya3B0ciwgaW50IHRsaUluZGV4LAogCQlpZiAo cmVjb3JkID09IE5VTEwpCiAJCXsKIAkJCWlmIChlcnJvcm1zZykKLQkJCQlwZ19mYXRhbCgi Y291bGQgbm90IGZpbmQgcHJldmlvdXMgV0FMIHJlY29yZCBhdCAlWC8lWDogJXNcbiIsCisJ CQkJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5kIHByZXZpb3VzIFdBTCByZWNvcmQgYXQgJVgv JVg6ICVzIiwKIAkJCQkJCSAodWludDMyKSAoc2VhcmNocHRyID4+IDMyKSwgKHVpbnQzMikg KHNlYXJjaHB0ciksCiAJCQkJCQkgZXJyb3Jtc2cpOwogCQkJZWxzZQotCQkJCXBnX2ZhdGFs KCJjb3VsZCBub3QgZmluZCBwcmV2aW91cyBXQUwgcmVjb3JkIGF0ICVYLyVYXG4iLAorCQkJ CXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBwcmV2aW91cyBXQUwgcmVjb3JkIGF0ICVYLyVY IiwKIAkJCQkJCSAodWludDMyKSAoc2VhcmNocHRyID4+IDMyKSwgKHVpbnQzMikgKHNlYXJj aHB0cikpOwogCQl9CiAKQEAgLTM4Nyw4ICszODcsOCBAQCBleHRyYWN0UGFnZUluZm8oWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCSAqIHdlIGRvbid0IHJlY29nbml6ZSB0aGUgdHlw ZS4gVGhhdCdzIGJhZCAtIHdlIGRvbid0IGtub3cgaG93IHRvCiAJCSAqIHRyYWNrIHRoYXQg Y2hhbmdlLgogCQkgKi8KLQkJcGdfZmF0YWwoIldBTCByZWNvcmQgbW9kaWZpZXMgYSByZWxh dGlvbiwgYnV0IHJlY29yZCB0eXBlIGlzIG5vdCByZWNvZ25pemVkXG4iCi0JCQkJICJsc246 ICVYLyVYLCBybWdyOiAlcywgaW5mbzogJTAyWFxuIiwKKwkJcGdfZmF0YWwoIldBTCByZWNv cmQgbW9kaWZpZXMgYSByZWxhdGlvbiwgYnV0IHJlY29yZCB0eXBlIGlzIG5vdCByZWNvZ25p emVkOiAiCisJCQkJICJsc246ICVYLyVYLCBybWdyOiAlcywgaW5mbzogJTAyWCIsCiAJCQkJ ICh1aW50MzIpIChyZWNvcmQtPlJlYWRSZWNQdHIgPj4gMzIpLCAodWludDMyKSAocmVjb3Jk LT5SZWFkUmVjUHRyKSwKIAkJCQkgUm1nck5hbWVzW3JtaWRdLCBpbmZvKTsKIAl9CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9wZ19yZXdpbmQuYyBiL3NyYy9iaW4vcGdfcmV3 aW5kL3BnX3Jld2luZC5jCmluZGV4IGEwZGZkYTcwMWUuLmE3N2IxOWY2MDcgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3 aW5kL3BnX3Jld2luZC5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29tbW9uL2Zp bGVfcGVybS5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAi Y29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5n LmgiCiAjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBh Z2UuaCIKIApAQCAtNTMsNyArNTQsNyBAQCBjaGFyCSAgICpkYXRhZGlyX3RhcmdldCA9IE5V TEw7CiBjaGFyCSAgICpkYXRhZGlyX3NvdXJjZSA9IE5VTEw7CiBjaGFyCSAgICpjb25uc3Ry X3NvdXJjZSA9IE5VTEw7CiAKLWJvb2wJCWRlYnVnID0gZmFsc2U7CitzdGF0aWMgYm9vbAlk ZWJ1ZyA9IGZhbHNlOwogYm9vbAkJc2hvd3Byb2dyZXNzID0gZmFsc2U7CiBib29sCQlkcnlf cnVuID0gZmFsc2U7CiBib29sCQlkb19zeW5jID0gdHJ1ZTsKQEAgLTExMiw2ICsxMTMsOCBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlDb250cm9sRmlsZURhdGEgQ29udHJv bEZpbGVfbmV3OwogCiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2WzBdLCBQR19URVhU RE9NQUlOKCJwZ19yZXdpbmQiKSk7CisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOworCXBn X2xvZ2dpbmdfc2V0X2xldmVsKFBHX0xPR19XQVJOSU5HKTsKIAlwcm9nbmFtZSA9IGdldF9w cm9nbmFtZShhcmd2WzBdKTsKIAogCS8qIFByb2Nlc3MgY29tbWFuZC1saW5lIGFyZ3VtZW50 cyAqLwpAQCAtMTM5LDYgKzE0Miw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog CiAJCQljYXNlICdQJzoKIAkJCQlzaG93cHJvZ3Jlc3MgPSB0cnVlOworCQkJCXBnX2xvZ2dp bmdfc2V0X2xldmVsKFBHX0xPR19JTkZPKTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSAnbic6 CkBAIC0xNTEsNiArMTU1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAkJ CWNhc2UgMzoKIAkJCQlkZWJ1ZyA9IHRydWU7CisJCQkJcGdfbG9nZ2luZ19zZXRfbGV2ZWwo UEdfTE9HX0RFQlVHKTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSAnRCc6CQkJLyogLUQgb3Ig LS10YXJnZXQtcGdkYXRhICovCkBAIC0xNjgsMjkgKzE3MywyOSBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAogCWlmIChkYXRhZGlyX3NvdXJjZSA9PSBOVUxMICYmIGNvbm5z dHJfc291cmNlID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5vIHNv dXJjZSBzcGVjaWZpZWQgKC0tc291cmNlLXBnZGF0YSBvciAtLXNvdXJjZS1zZXJ2ZXIpXG4i KSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIHNvdXJjZSBzcGVjaWZpZWQgKC0t c291cmNlLXBnZGF0YSBvciAtLXNvdXJjZS1zZXJ2ZXIpIik7CiAJCWZwcmludGYoc3RkZXJy LCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9n bmFtZSk7CiAJCWV4aXQoMSk7CiAJfQogCiAJaWYgKGRhdGFkaXJfc291cmNlICE9IE5VTEwg JiYgY29ubnN0cl9zb3VyY2UgIT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogb25seSBvbmUgb2YgLS1zb3VyY2UtcGdkYXRhIG9yIC0tc291cmNlLXNlcnZlciBjYW4g YmUgc3BlY2lmaWVkXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm9ubHkgb25l IG9mIC0tc291cmNlLXBnZGF0YSBvciAtLXNvdXJjZS1zZXJ2ZXIgY2FuIGJlIHNwZWNpZmll ZCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUg aW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0KIAogCWlmIChk YXRhZGlyX3RhcmdldCA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBu byB0YXJnZXQgZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkICgtLXRhcmdldC1wZ2RhdGEpXG4i KSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIHRhcmdldCBkYXRhIGRpcmVjdG9y eSBzcGVjaWZpZWQgKC0tdGFyZ2V0LXBnZGF0YSkiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8o IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1l KTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmly c3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBn X2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMg XCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0ZGVyciwgXygi VHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUp OwogCQlleGl0KDEpOwogCX0KQEAgLTIwNCwyMCArMjA5LDIwIEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogI2lmbmRlZiBXSU4zMgogCWlmIChnZXRldWlkKCkgPT0gMCkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCJjYW5ub3QgYmUgZXhlY3V0ZWQgYnkgXCJyb290XCJc biIpKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgYmUgZXhlY3V0ZWQgYnkgXCJyb290XCIi KTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIllvdSBtdXN0IHJ1biAlcyBhcyB0aGUgUG9zdGdy ZVNRTCBzdXBlcnVzZXIuXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQog I2VuZGlmCiAKLQlnZXRfcmVzdHJpY3RlZF90b2tlbihwcm9nbmFtZSk7CisJZ2V0X3Jlc3Ry aWN0ZWRfdG9rZW4oKTsKIAogCS8qIFNldCBtYXNrIGJhc2VkIG9uIFBHREFUQSBwZXJtaXNz aW9ucyAqLwogCWlmICghR2V0RGF0YURpcmVjdG9yeUNyZWF0ZVBlcm0oZGF0YWRpcl90YXJn ZXQpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBwZXJt aXNzaW9ucyBvZiBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGRh dGFkaXJfdGFyZ2V0LCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCByZWFkIHBlcm1pc3Npb25zIG9mIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJ IGRhdGFkaXJfdGFyZ2V0KTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTMwNSw5ICszMTAsOSBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgKiBCdWlsZCB0aGUgZmlsZW1hcCwg YnkgY29tcGFyaW5nIHRoZSBzb3VyY2UgYW5kIHRhcmdldCBkYXRhIGRpcmVjdG9yaWVzLgog CSAqLwogCWZpbGVtYXBfY3JlYXRlKCk7Ci0JcGdfbG9nKFBHX1BST0dSRVNTLCAicmVhZGlu ZyBzb3VyY2UgZmlsZSBsaXN0XG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyBzb3VyY2Ug ZmlsZSBsaXN0Iik7CiAJZmV0Y2hTb3VyY2VGaWxlTGlzdCgpOwotCXBnX2xvZyhQR19QUk9H UkVTUywgInJlYWRpbmcgdGFyZ2V0IGZpbGUgbGlzdFxuIik7CisJcGdfbG9nX2luZm8oInJl YWRpbmcgdGFyZ2V0IGZpbGUgbGlzdCIpOwogCXRyYXZlcnNlX2RhdGFkaXIoZGF0YWRpcl90 YXJnZXQsICZwcm9jZXNzX3RhcmdldF9maWxlKTsKIAogCS8qCkBAIC0zMTcsNyArMzIyLDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICogWFhYOiBJZiB3ZSBzdXBwb3J0 ZWQgcmV3aW5kaW5nIGEgc2VydmVyIHRoYXQgd2FzIG5vdCBzaHV0IGRvd24gY2xlYW5seSwK IAkgKiB3ZSB3b3VsZCBuZWVkIHRvIHJlcGxheSB1bnRpbCB0aGUgZW5kIG9mIFdBTCBoZXJl LgogCSAqLwotCXBnX2xvZyhQR19QUk9HUkVTUywgInJlYWRpbmcgV0FMIGluIHRhcmdldFxu Iik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgV0FMIGluIHRhcmdldCIpOwogCWV4dHJhY3RQ YWdlTWFwKGRhdGFkaXJfdGFyZ2V0LCBjaGtwdHJlYywgbGFzdGNvbW1vbnRsaUluZGV4LAog CQkJCSAgIENvbnRyb2xGaWxlX3RhcmdldC5jaGVja1BvaW50KTsKIAlmaWxlbWFwX2ZpbmFs aXplKCk7CkBAIC0zMzQsNyArMzM5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJICovCiAJaWYgKHNob3dwcm9ncmVzcykKIAl7Ci0JCXBnX2xvZyhQR19QUk9HUkVTUywg Im5lZWQgdG8gY29weSAlbHUgTUIgKHRvdGFsIHNvdXJjZSBkaXJlY3Rvcnkgc2l6ZSBpcyAl bHUgTUIpXG4iLAorCQlwZ19sb2dfaW5mbygibmVlZCB0byBjb3B5ICVsdSBNQiAodG90YWwg c291cmNlIGRpcmVjdG9yeSBzaXplIGlzICVsdSBNQikiLAogCQkJICAgKHVuc2lnbmVkIGxv bmcpIChmaWxlbWFwLT5mZXRjaF9zaXplIC8gKDEwMjQgKiAxMDI0KSksCiAJCQkgICAodW5z aWduZWQgbG9uZykgKGZpbGVtYXAtPnRvdGFsX3NpemUgLyAoMTAyNCAqIDEwMjQpKSk7CiAK QEAgLTM1MCw4ICszNTUsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlleGVj dXRlRmlsZU1hcCgpOwogCiAJcHJvZ3Jlc3NfcmVwb3J0KHRydWUpOworCXByaW50ZigiXG4i KTsKIAotCXBnX2xvZyhQR19QUk9HUkVTUywgIlxuY3JlYXRpbmcgYmFja3VwIGxhYmVsIGFu ZCB1cGRhdGluZyBjb250cm9sIGZpbGVcbiIpOworCXBnX2xvZ19pbmZvKCJjcmVhdGluZyBi YWNrdXAgbGFiZWwgYW5kIHVwZGF0aW5nIGNvbnRyb2wgZmlsZSIpOwogCWNyZWF0ZUJhY2t1 cExhYmVsKGNoa3B0cmVkbywgY2hrcHR0bGksIGNoa3B0cmVjKTsKIAogCS8qCkBAIC0zNzks NyArMzg1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJQ29udHJvbEZpbGVf bmV3LnN0YXRlID0gREJfSU5fQVJDSElWRV9SRUNPVkVSWTsKIAl1cGRhdGVDb250cm9sRmls ZSgmQ29udHJvbEZpbGVfbmV3KTsKIAotCXBnX2xvZyhQR19QUk9HUkVTUywgInN5bmNpbmcg dGFyZ2V0IGRhdGEgZGlyZWN0b3J5XG4iKTsKKwlwZ19sb2dfaW5mbygic3luY2luZyB0YXJn ZXQgZGF0YSBkaXJlY3RvcnkiKTsKIAlzeW5jVGFyZ2V0RGlyZWN0b3J5KGFyZ3ZbMF0pOwog CiAJcHJpbnRmKF8oIkRvbmUhXG4iKSk7CkBAIC0zOTQsNyArNDAwLDcgQEAgc2FuaXR5Q2hl Y2tzKHZvaWQpCiAKIAkvKiBDaGVjayBzeXN0ZW1faWQgbWF0Y2ggKi8KIAlpZiAoQ29udHJv bEZpbGVfdGFyZ2V0LnN5c3RlbV9pZGVudGlmaWVyICE9IENvbnRyb2xGaWxlX3NvdXJjZS5z eXN0ZW1faWRlbnRpZmllcikKLQkJcGdfZmF0YWwoInNvdXJjZSBhbmQgdGFyZ2V0IGNsdXN0 ZXJzIGFyZSBmcm9tIGRpZmZlcmVudCBzeXN0ZW1zXG4iKTsKKwkJcGdfZmF0YWwoInNvdXJj ZSBhbmQgdGFyZ2V0IGNsdXN0ZXJzIGFyZSBmcm9tIGRpZmZlcmVudCBzeXN0ZW1zIik7CiAK IAkvKiBjaGVjayB2ZXJzaW9uICovCiAJaWYgKENvbnRyb2xGaWxlX3RhcmdldC5wZ19jb250 cm9sX3ZlcnNpb24gIT0gUEdfQ09OVFJPTF9WRVJTSU9OIHx8CkBAIC00MDIsNyArNDA4LDcg QEAgc2FuaXR5Q2hlY2tzKHZvaWQpCiAJCUNvbnRyb2xGaWxlX3RhcmdldC5jYXRhbG9nX3Zl cnNpb25fbm8gIT0gQ0FUQUxPR19WRVJTSU9OX05PIHx8CiAJCUNvbnRyb2xGaWxlX3NvdXJj ZS5jYXRhbG9nX3ZlcnNpb25fbm8gIT0gQ0FUQUxPR19WRVJTSU9OX05PKQogCXsKLQkJcGdf ZmF0YWwoImNsdXN0ZXJzIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgdmVyc2lvbiBv ZiBwZ19yZXdpbmRcbiIpOworCQlwZ19mYXRhbCgiY2x1c3RlcnMgYXJlIG5vdCBjb21wYXRp YmxlIHdpdGggdGhpcyB2ZXJzaW9uIG9mIHBnX3Jld2luZCIpOwogCX0KIAogCS8qCkBAIC00 MTIsNyArNDE4LDcgQEAgc2FuaXR5Q2hlY2tzKHZvaWQpCiAJaWYgKENvbnRyb2xGaWxlX3Rh cmdldC5kYXRhX2NoZWNrc3VtX3ZlcnNpb24gIT0gUEdfREFUQV9DSEVDS1NVTV9WRVJTSU9O ICYmCiAJCSFDb250cm9sRmlsZV90YXJnZXQud2FsX2xvZ19oaW50cykKIAl7Ci0JCXBnX2Zh dGFsKCJ0YXJnZXQgc2VydmVyIG5lZWRzIHRvIHVzZSBlaXRoZXIgZGF0YSBjaGVja3N1bXMg b3IgXCJ3YWxfbG9nX2hpbnRzID0gb25cIlxuIik7CisJCXBnX2ZhdGFsKCJ0YXJnZXQgc2Vy dmVyIG5lZWRzIHRvIHVzZSBlaXRoZXIgZGF0YSBjaGVja3N1bXMgb3IgXCJ3YWxfbG9nX2hp bnRzID0gb25cIiIpOwogCX0KIAogCS8qCkBAIC00MjMsNyArNDI5LDcgQEAgc2FuaXR5Q2hl Y2tzKHZvaWQpCiAJICovCiAJaWYgKENvbnRyb2xGaWxlX3RhcmdldC5zdGF0ZSAhPSBEQl9T SFVURE9XTkVEICYmCiAJCUNvbnRyb2xGaWxlX3RhcmdldC5zdGF0ZSAhPSBEQl9TSFVURE9X TkVEX0lOX1JFQ09WRVJZKQotCQlwZ19mYXRhbCgidGFyZ2V0IHNlcnZlciBtdXN0IGJlIHNo dXQgZG93biBjbGVhbmx5XG4iKTsKKwkJcGdfZmF0YWwoInRhcmdldCBzZXJ2ZXIgbXVzdCBi ZSBzaHV0IGRvd24gY2xlYW5seSIpOwogCiAJLyoKIAkgKiBXaGVuIHRoZSBzb3VyY2UgaXMg YSBkYXRhIGRpcmVjdG9yeSwgYWxzbyByZXF1aXJlIHRoYXQgdGhlIHNvdXJjZQpAQCAtNDMz LDcgKzQzOSw3IEBAIHNhbml0eUNoZWNrcyh2b2lkKQogCWlmIChkYXRhZGlyX3NvdXJjZSAm JgogCQlDb250cm9sRmlsZV9zb3VyY2Uuc3RhdGUgIT0gREJfU0hVVERPV05FRCAmJgogCQlD b250cm9sRmlsZV9zb3VyY2Uuc3RhdGUgIT0gREJfU0hVVERPV05FRF9JTl9SRUNPVkVSWSkK LQkJcGdfZmF0YWwoInNvdXJjZSBkYXRhIGRpcmVjdG9yeSBtdXN0IGJlIHNodXQgZG93biBj bGVhbmx5XG4iKTsKKwkJcGdfZmF0YWwoInNvdXJjZSBkYXRhIGRpcmVjdG9yeSBtdXN0IGJl IHNodXQgZG93biBjbGVhbmx5Iik7CiB9CiAKIC8qCkBAIC00OTksOSArNTA1LDkgQEAgZ2V0 VGltZWxpbmVIaXN0b3J5KENvbnRyb2xGaWxlRGF0YSAqY29udHJvbEZpbGUsIGludCAqbmVu dHJpZXMpCiAJCWludAkJCWk7CiAKIAkJaWYgKGNvbnRyb2xGaWxlID09ICZDb250cm9sRmls ZV9zb3VyY2UpCi0JCQlwZ19sb2coUEdfREVCVUcsICJTb3VyY2UgdGltZWxpbmUgaGlzdG9y eTpcbiIpOworCQkJcGdfbG9nX2RlYnVnKCJTb3VyY2UgdGltZWxpbmUgaGlzdG9yeToiKTsK IAkJZWxzZSBpZiAoY29udHJvbEZpbGUgPT0gJkNvbnRyb2xGaWxlX3RhcmdldCkKLQkJCXBn X2xvZyhQR19ERUJVRywgIlRhcmdldCB0aW1lbGluZSBoaXN0b3J5OlxuIik7CisJCQlwZ19s b2dfZGVidWcoIlRhcmdldCB0aW1lbGluZSBoaXN0b3J5OiIpOwogCQllbHNlCiAJCQlBc3Nl cnQoZmFsc2UpOwogCkBAIC01MTMsOSArNTE5LDcgQEAgZ2V0VGltZWxpbmVIaXN0b3J5KENv bnRyb2xGaWxlRGF0YSAqY29udHJvbEZpbGUsIGludCAqbmVudHJpZXMpCiAJCQlUaW1lTGlu ZUhpc3RvcnlFbnRyeSAqZW50cnk7CiAKIAkJCWVudHJ5ID0gJmhpc3RvcnlbaV07Ci0JCQlw Z19sb2coUEdfREVCVUcsCi0JCQkvKiB0cmFuc2xhdG9yOiAlZCBpcyBhIHRpbWVsaW5lIG51 bWJlciwgb3RoZXJzIGFyZSBMU04gcG9zaXRpb25zICovCi0JCQkJICAgIiVkOiAlWC8lWCAt ICVYLyVYXG4iLCBlbnRyeS0+dGxpLAorCQkJcGdfbG9nX2RlYnVnKCIlZDogJVgvJVggLSAl WC8lWCIsIGVudHJ5LT50bGksCiAJCQkJICAgKHVpbnQzMikgKGVudHJ5LT5iZWdpbiA+PiAz MiksICh1aW50MzIpIChlbnRyeS0+YmVnaW4pLAogCQkJCSAgICh1aW50MzIpIChlbnRyeS0+ ZW5kID4+IDMyKSwgKHVpbnQzMikgKGVudHJ5LT5lbmQpKTsKIAkJfQpAQCAtNTc0LDcgKzU3 OCw3IEBAIGZpbmRDb21tb25BbmNlc3RvclRpbWVsaW5lKFhMb2dSZWNQdHIgKnJlY3B0ciwg aW50ICp0bGlJbmRleCkKIAl9CiAJZWxzZQogCXsKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBm aW5kIGNvbW1vbiBhbmNlc3RvciBvZiB0aGUgc291cmNlIGFuZCB0YXJnZXQgY2x1c3Rlcidz IHRpbWVsaW5lc1xuIik7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBjb21tb24gYW5j ZXN0b3Igb2YgdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGNsdXN0ZXIncyB0aW1lbGluZXMiKTsK IAl9CiB9CiAKQEAgLTYxNSw3ICs2MTksNyBAQCBjcmVhdGVCYWNrdXBMYWJlbChYTG9nUmVj UHRyIHN0YXJ0cG9pbnQsIFRpbWVMaW5lSUQgc3RhcnR0bGksIFhMb2dSZWNQdHIgY2hlY2tw bwogCQkJCSAgICh1aW50MzIpIChjaGVja3BvaW50bG9jID4+IDMyKSwgKHVpbnQzMikgY2hl Y2twb2ludGxvYywKIAkJCQkgICBzdHJmYnVmKTsKIAlpZiAobGVuID49IHNpemVvZihidWYp KQotCQlwZ19mYXRhbCgiYmFja3VwIGxhYmVsIGJ1ZmZlciB0b28gc21hbGxcbiIpOwkvKiBz aG91bGRuJ3QgaGFwcGVuICovCisJCXBnX2ZhdGFsKCJiYWNrdXAgbGFiZWwgYnVmZmVyIHRv byBzbWFsbCIpOwkvKiBzaG91bGRuJ3QgaGFwcGVuICovCiAKIAkvKiBUT0RPOiBtb3ZlIG9s ZCBmaWxlIG91dCBvZiB0aGUgd2F5LCBpZiBhbnkuICovCiAJb3Blbl90YXJnZXRfZmlsZSgi YmFja3VwX2xhYmVsIiwgdHJ1ZSk7IC8qIEJBQ0tVUF9MQUJFTF9GSUxFICovCkBAIC02Mzgs NyArNjQyLDcgQEAgY2hlY2tDb250cm9sRmlsZShDb250cm9sRmlsZURhdGEgKkNvbnRyb2xG aWxlKQogCiAJLyogQW5kIHNpbXBseSBjb21wYXJlIGl0ICovCiAJaWYgKCFFUV9DUkMzMkMo Y3JjLCBDb250cm9sRmlsZS0+Y3JjKSkKLQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgY29udHJv bCBmaWxlIENSQ1xuIik7CisJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIGNvbnRyb2wgZmlsZSBD UkMiKTsKIH0KIAogLyoKQEAgLTY0OCw3ICs2NTIsNyBAQCBzdGF0aWMgdm9pZAogZGlnZXN0 Q29udHJvbEZpbGUoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwgY2hhciAqc3JjLCBz aXplX3Qgc2l6ZSkKIHsKIAlpZiAoc2l6ZSAhPSBQR19DT05UUk9MX0ZJTEVfU0laRSkKLQkJ cGdfZmF0YWwoInVuZXhwZWN0ZWQgY29udHJvbCBmaWxlIHNpemUgJWQsIGV4cGVjdGVkICVk XG4iLAorCQlwZ19mYXRhbCgidW5leHBlY3RlZCBjb250cm9sIGZpbGUgc2l6ZSAlZCwgZXhw ZWN0ZWQgJWQiLAogCQkJCSAoaW50KSBzaXplLCBQR19DT05UUk9MX0ZJTEVfU0laRSk7CiAK IAltZW1jcHkoQ29udHJvbEZpbGUsIHNyYywgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOwpA QCAtNjU3LDggKzY2MSw4IEBAIGRpZ2VzdENvbnRyb2xGaWxlKENvbnRyb2xGaWxlRGF0YSAq Q29udHJvbEZpbGUsIGNoYXIgKnNyYywgc2l6ZV90IHNpemUpCiAJV2FsU2VnU3ogPSBDb250 cm9sRmlsZS0+eGxvZ19zZWdfc2l6ZTsKIAogCWlmICghSXNWYWxpZFdhbFNlZ1NpemUoV2Fs U2VnU3opKQotCQlwZ19mYXRhbChuZ2V0dGV4dCgiV0FMIHNlZ21lbnQgc2l6ZSBtdXN0IGJl IGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBhbmQgMSBHQiwgYnV0IHRoZSBjb250cm9s IGZpbGUgc3BlY2lmaWVzICVkIGJ5dGVcbiIsCi0JCQkJCQkgICJXQUwgc2VnbWVudCBzaXpl IG11c3QgYmUgYSBwb3dlciBvZiB0d28gYmV0d2VlbiAxIE1CIGFuZCAxIEdCLCBidXQgdGhl IGNvbnRyb2wgZmlsZSBzcGVjaWZpZXMgJWQgYnl0ZXNcbiIsCisJCXBnX2ZhdGFsKG5nZXR0 ZXh0KCJXQUwgc2VnbWVudCBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28gYmV0d2VlbiAx IE1CIGFuZCAxIEdCLCBidXQgdGhlIGNvbnRyb2wgZmlsZSBzcGVjaWZpZXMgJWQgYnl0ZSIs CisJCQkJCQkgICJXQUwgc2VnbWVudCBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28gYmV0 d2VlbiAxIE1CIGFuZCAxIEdCLCBidXQgdGhlIGNvbnRyb2wgZmlsZSBzcGVjaWZpZXMgJWQg Ynl0ZXMiLAogCQkJCQkJICBXYWxTZWdTeiksCiAJCQkJIFdhbFNlZ1N6KTsKIApAQCAtNzIw LDUgKzcyNCw1IEBAIHN5bmNUYXJnZXREaXJlY3RvcnkoY29uc3QgY2hhciAqYXJndjApCiAJ aWYgKCFkb19zeW5jIHx8IGRyeV9ydW4pCiAJCXJldHVybjsKIAotCWZzeW5jX3BnZGF0YShk YXRhZGlyX3RhcmdldCwgcHJvZ25hbWUsIFBHX1ZFUlNJT05fTlVNKTsKKwlmc3luY19wZ2Rh dGEoZGF0YWRpcl90YXJnZXQsIFBHX1ZFUlNJT05fTlVNKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5oIGIvc3JjL2Jpbi9wZ19yZXdpbmQvcGdfcmV3 aW5kLmgKaW5kZXggODNiMjg5OGI4Yi4uZjJjYzI4MDBhYSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19yZXdpbmQvcGdfcmV3aW5kLmgKKysrIGIvc3JjL2Jpbi9wZ19yZXdpbmQvcGdfcmV3 aW5kLmgKQEAgLTIxLDcgKzIxLDYgQEAKIGV4dGVybiBjaGFyICpkYXRhZGlyX3RhcmdldDsK IGV4dGVybiBjaGFyICpkYXRhZGlyX3NvdXJjZTsKIGV4dGVybiBjaGFyICpjb25uc3RyX3Nv dXJjZTsKLWV4dGVybiBib29sIGRlYnVnOwogZXh0ZXJuIGJvb2wgc2hvd3Byb2dyZXNzOwog ZXh0ZXJuIGJvb2wgZHJ5X3J1bjsKIGV4dGVybiBpbnQJV2FsU2VnU3o7CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3Jld2luZC90aW1lbGluZS5jIGIvc3JjL2Jpbi9wZ19yZXdpbmQvdGlt ZWxpbmUuYwppbmRleCAxZDM0M2RlNTJiLi4xMmIxOWIzNTNjIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3Jld2luZC90aW1lbGluZS5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL3RpbWVs aW5lLmMKQEAgLTEzLDYgKzEzLDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90aW1lbGluZS5o IgogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCisjaW5jbHVkZSAiZmVfdXRp bHMvbG9nZ2luZy5oIgogCiAvKgogICogVGhpcyBpcyBjb3B5LXBhc3RlZCBmcm9tIHRoZSBi YWNrZW5kIHJlYWRUaW1lTGluZUhpc3RvcnksIG1vZGlmaWVkIHRvCkBAIC03MywyMCArNzQs MjAgQEAgcmV3aW5kX3BhcnNlVGltZUxpbmVIaXN0b3J5KGNoYXIgKmJ1ZmZlciwgVGltZUxp bmVJRCB0YXJnZXRUTEksIGludCAqbmVudHJpZXMpCiAJCWlmIChuZmllbGRzIDwgMSkKIAkJ ewogCQkJLyogZXhwZWN0IGEgbnVtZXJpYyB0aW1lbGluZSBJRCBhcyBmaXJzdCBmaWVsZCBv ZiBsaW5lICovCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygic3ludGF4IGVycm9yIGluIGhpc3Rv cnkgZmlsZTogJXNcbiIpLCBmbGluZSk7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiRXhwZWN0 ZWQgYSBudW1lcmljIHRpbWVsaW5lIElELlxuIikpOworCQkJcGdfbG9nX2Vycm9yKCJzeW50 YXggZXJyb3IgaW4gaGlzdG9yeSBmaWxlOiAlcyIsIGZsaW5lKTsKKwkJCXBnX2xvZ19lcnJv cigiRXhwZWN0ZWQgYSBudW1lcmljIHRpbWVsaW5lIElELiIpOwogCQkJZXhpdCgxKTsKIAkJ fQogCQlpZiAobmZpZWxkcyAhPSAzKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygic3lu dGF4IGVycm9yIGluIGhpc3RvcnkgZmlsZTogJXNcbiIpLCBmbGluZSk7Ci0JCQlmcHJpbnRm KHN0ZGVyciwgXygiRXhwZWN0ZWQgYSB3cml0ZS1haGVhZCBsb2cgc3dpdGNocG9pbnQgbG9j YXRpb24uXG4iKSk7CisJCQlwZ19sb2dfZXJyb3IoInN5bnRheCBlcnJvciBpbiBoaXN0b3J5 IGZpbGU6ICVzIiwgZmxpbmUpOworCQkJcGdfbG9nX2Vycm9yKCJFeHBlY3RlZCBhIHdyaXRl LWFoZWFkIGxvZyBzd2l0Y2hwb2ludCBsb2NhdGlvbi4iKTsKIAkJCWV4aXQoMSk7CiAJCX0K IAkJaWYgKGVudHJpZXMgJiYgdGxpIDw9IGxhc3R0bGkpCiAJCXsKLQkJCWZwcmludGYoc3Rk ZXJyLCBfKCJpbnZhbGlkIGRhdGEgaW4gaGlzdG9yeSBmaWxlOiAlc1xuIiksIGZsaW5lKTsK LQkJCWZwcmludGYoc3RkZXJyLCBfKCJUaW1lbGluZSBJRHMgbXVzdCBiZSBpbiBpbmNyZWFz aW5nIHNlcXVlbmNlLlxuIikpOworCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGRhdGEgaW4g aGlzdG9yeSBmaWxlOiAlcyIsIGZsaW5lKTsKKwkJCXBnX2xvZ19lcnJvcigiVGltZWxpbmUg SURzIG11c3QgYmUgaW4gaW5jcmVhc2luZyBzZXF1ZW5jZS4iKTsKIAkJCWV4aXQoMSk7CiAJ CX0KIApAQCAtMTA2LDggKzEwNyw4IEBAIHJld2luZF9wYXJzZVRpbWVMaW5lSGlzdG9yeShj aGFyICpidWZmZXIsIFRpbWVMaW5lSUQgdGFyZ2V0VExJLCBpbnQgKm5lbnRyaWVzKQogCiAJ aWYgKGVudHJpZXMgJiYgdGFyZ2V0VExJIDw9IGxhc3R0bGkpCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwgXygiaW52YWxpZCBkYXRhIGluIGhpc3RvcnkgZmlsZVxuIikpOwotCQlmcHJpbnRm KHN0ZGVyciwgXygiVGltZWxpbmUgSURzIG11c3QgYmUgbGVzcyB0aGFuIGNoaWxkIHRpbWVs aW5lJ3MgSUQuXG4iKSk7CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBkYXRhIGluIGhpc3Rv cnkgZmlsZSIpOworCQlwZ19sb2dfZXJyb3IoIlRpbWVsaW5lIElEcyBtdXN0IGJlIGxlc3Mg dGhhbiBjaGlsZCB0aW1lbGluZSdzIElELiIpOwogCQlleGl0KDEpOwogCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ190ZXN0X2ZzeW5jL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ190ZXN0 X2ZzeW5jL01ha2VmaWxlCmluZGV4IDkwNDk2ZGY1NjYuLjc2OWRhZWNmMmIgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfdGVzdF9mc3luYy9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX3Rl c3RfZnN5bmMvTWFrZWZpbGUKQEAgLTcsMTEgKzcsMTMgQEAgc3ViZGlyID0gc3JjL2Jpbi9w Z190ZXN0X2ZzeW5jCiB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9i dWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCitMREZMQUdTX0lOVEVSTkFMICs9IC1M JCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGlscworCiBPQkpTID0gcGdf dGVzdF9mc3luYy5vICQoV0lOMzJSRVMpCiAKIGFsbDogcGdfdGVzdF9mc3luYwogCi1wZ190 ZXN0X2ZzeW5jOiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQKK3BnX3Rlc3RfZnN5bmM6 ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscwogCSQo Q0MpICQoQ0ZMQUdTKSAkXiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAk QCQoWCkKIAogaW5zdGFsbDogYWxsIGluc3RhbGxkaXJzCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX3Rlc3RfZnN5bmMvcGdfdGVzdF9mc3luYy5jIGIvc3JjL2Jpbi9wZ190ZXN0X2ZzeW5j L3BnX3Rlc3RfZnN5bmMuYwppbmRleCBlNmY3ZWY4NTU3Li4yYzAwNWE5NDJhIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3Rlc3RfZnN5bmMvcGdfdGVzdF9mc3luYy5jCisrKyBiL3NyYy9i aW4vcGdfdGVzdF9mc3luYy9wZ190ZXN0X2ZzeW5jLmMKQEAgLTE0LDYgKzE0LDcgQEAKIAog I2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgi CisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogCiAKIC8qCkBAIC00Niw3ICs0Nyw3 IEBAIGRvIHsgXAogCWlmIChDcmVhdGVUaHJlYWQoTlVMTCwgMCwgcHJvY2Vzc19hbGFybSwg TlVMTCwgMCwgTlVMTCkgPT0gXAogCQlJTlZBTElEX0hBTkRMRV9WQUxVRSkgXAogCXsgXAot CQlmcHJpbnRmKHN0ZGVyciwgXygiQ291bGQgbm90IGNyZWF0ZSB0aHJlYWQgZm9yIGFsYXJt XG4iKSk7IFwKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHRocmVhZCBmb3Ig YWxhcm0iKTsgXAogCQlleGl0KDEpOyBcCiAJfSBcCiAJZ2V0dGltZW9mZGF5KCZzdGFydF90 LCBOVUxMKTsgXApAQCAtOTIsMTMgKzkzLDE1IEBAIHN0YXRpYyB2b2lkIHNpZ25hbF9jbGVh bnVwKGludCBzaWcpOwogc3RhdGljIGludAlwZ19mc3luY193cml0ZXRocm91Z2goaW50IGZk KTsKICNlbmRpZgogc3RhdGljIHZvaWQgcHJpbnRfZWxhcHNlKHN0cnVjdCB0aW1ldmFsIHN0 YXJ0X3QsIHN0cnVjdCB0aW1ldmFsIHN0b3BfdCwgaW50IG9wcyk7Ci1zdGF0aWMgdm9pZCBk aWUoY29uc3QgY2hhciAqc3RyKTsKKworI2RlZmluZSBkaWUobXNnKSBkbyB7IHBnX2xvZ19l cnJvcigiJXM6ICVtIiwgXyhtc2cpKTsgZXhpdCgxKTsgfSB3aGlsZSgwKQogCiAKIGludAog bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogCXNldF9wZ2xvY2FsZV9wZ3NlcnZp Y2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfdGVzdF9mc3luYyIpKTsKKwlwZ19sb2dn aW5nX2luaXQoYXJndlswXSk7CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7 CiAKIAloYW5kbGVfYXJncyhhcmdjLCBhcmd2KTsKQEAgLTE4NCw5ICsxODcsOCBAQCBoYW5k bGVfYXJncyhpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKGFyZ2MgPiBvcHRpbmQp CiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogdG9vIG1hbnkgY29tbWFuZC1s aW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFy Z3Zbb3B0aW5kXSk7CisJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFy Z3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlm cHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRp b24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC02MDEsMTAgKzYwMywz IEBAIHByb2Nlc3NfYWxhcm0oTFBWT0lEIHBhcmFtKQogCUV4aXRUaHJlYWQoMCk7CiB9CiAj ZW5kaWYKLQotc3RhdGljIHZvaWQKLWRpZShjb25zdCBjaGFyICpzdHIpCi17Ci0JZnByaW50 ZihzdGRlcnIsIF8oIiVzOiAlc1xuIiksIF8oc3RyKSwgc3RyZXJyb3IoZXJybm8pKTsKLQll eGl0KDEpOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUu YyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKaW5kZXggOTJkODk0MGE5Zi4u MDU2YjY2N2VhNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUu YworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCkBAIC00MSw2ICs0MSw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzc19kLmgiCiAjaW5jbHVkZSAiY29tbW9u L2ZpbGVfcGVybS5oIgogI2luY2x1ZGUgImNvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmgiCisj aW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmlu Z191dGlscy5oIgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICkBAIC03OSwxMyArODAsMTQg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJYm9vbAkJbGl2ZV9jaGVjayA9IGZh bHNlOwogCiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2WzBdLCBQR19URVhURE9NQUlO KCJwZ191cGdyYWRlIikpOworCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAogCS8qIFNl dCBkZWZhdWx0IHJlc3RyaWN0aXZlIG1hc2sgdW50aWwgbmV3IGNsdXN0ZXIgcGVybWlzc2lv bnMgYXJlIHJlYWQgKi8KIAl1bWFzayhQR19NT0RFX01BU0tfT1dORVIpOwogCiAJcGFyc2VD b21tYW5kTGluZShhcmdjLCBhcmd2KTsKIAotCWdldF9yZXN0cmljdGVkX3Rva2VuKG9zX2lu Zm8ucHJvZ25hbWUpOworCWdldF9yZXN0cmljdGVkX3Rva2VuKCk7CiAKIAlhZGp1c3RfZGF0 YV9kaXIoJm9sZF9jbHVzdGVyKTsKIAlhZGp1c3RfZGF0YV9kaXIoJm5ld19jbHVzdGVyKTsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9NYWtlZmlsZSBiL3Ny Yy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9NYWtlZmlsZQppbmRleCBhYjZkM2VhOWUyLi4y N2ZhMzNhZWE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1bXMvTWFr ZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zL01ha2VmaWxlCkBAIC0x NSwxMSArMTUsMTMgQEAgc3ViZGlyID0gc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zCiB0 b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01h a2VmaWxlLmdsb2JhbAogCitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIp L3NyYy9mZV91dGlscyAtbHBnZmV1dGlscworCiBPQkpTPSBwZ192ZXJpZnlfY2hlY2tzdW1z Lm8gJChXSU4zMlJFUykKIAogYWxsOiBwZ192ZXJpZnlfY2hlY2tzdW1zCiAKLXBnX3Zlcmlm eV9jaGVja3N1bXM6ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBncG9ydAorcGdfdmVyaWZ5X2No ZWNrc3VtczogJChPQkpTKSB8IHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0 aWxzCiAJJChDQykgJChDRkxBR1MpICReICQoTERGTEFHUykgJChMREZMQUdTX0VYKSAkKExJ QlMpIC1vICRAJChYKQogCiBpbnN0YWxsOiBhbGwgaW5zdGFsbGRpcnMKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9ubHMubWsgYi9zcmMvYmluL3BnX3Zlcmlm eV9jaGVja3N1bXMvbmxzLm1rCmluZGV4IDg5M2VmYWYwZjAuLjllMWZhOTlkM2YgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9ubHMubWsKKysrIGIvc3JjL2Jp bi9wZ192ZXJpZnlfY2hlY2tzdW1zL25scy5tawpAQCAtMSw0ICsxLDYgQEAKICMgc3JjL2Jp bi9wZ192ZXJpZnlfY2hlY2tzdW1zL25scy5tawogQ0FUQUxPR19OQU1FICAgICA9IHBnX3Zl cmlmeV9jaGVja3N1bXMKIEFWQUlMX0xBTkdVQUdFUyAgPQotR0VUVEVYVF9GSUxFUyAgICA9 IHBnX3ZlcmlmeV9jaGVja3N1bXMuYworR0VUVEVYVF9GSUxFUyAgICA9ICQoRlJPTlRFTkRf Q09NTU9OX0dFVFRFWFRfRklMRVMpIHBnX3ZlcmlmeV9jaGVja3N1bXMuYworR0VUVEVYVF9U UklHR0VSUyA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfVFJJR0dFUlMpCitHRVRURVhU X0ZMQUdTICAgID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GTEFHUykKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9wZ192ZXJpZnlfY2hlY2tzdW1zLmMg Yi9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1bXMvcGdfdmVyaWZ5X2NoZWNrc3Vtcy5jCmlu ZGV4IGNjNmViYjlkZjAuLjBhNTAwOTdhMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVy aWZ5X2NoZWNrc3Vtcy9wZ192ZXJpZnlfY2hlY2tzdW1zLmMKKysrIGIvc3JjL2Jpbi9wZ192 ZXJpZnlfY2hlY2tzdW1zL3BnX3ZlcmlmeV9jaGVja3N1bXMuYwpAQCAtMTUsNiArMTUsNyBA QAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAiY29tbW9u L2NvbnRyb2xkYXRhX3V0aWxzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgog I2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5jbHVkZSAicGdfZ2V0b3B0LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCkBAIC05MCw4ICs5MSw3IEBAIHNjYW5fZmlsZShj b25zdCBjaGFyICpmbiwgQmxvY2tOdW1iZXIgc2VnbWVudG5vKQogCWYgPSBvcGVuKGZuLCBP X1JET05MWSB8IFBHX0JJTkFSWSwgMCk7CiAJaWYgKGYgPCAwKQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJ CXByb2duYW1lLCBmbiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJW0iLCBmbik7CiAJCWV4aXQoMSk7CiAJfQogCkBA IC0xMDYsOCArMTA2LDggQEAgc2Nhbl9maWxlKGNvbnN0IGNoYXIgKmZuLCBCbG9ja051bWJl ciBzZWdtZW50bm8pCiAJCQlicmVhazsKIAkJaWYgKHIgIT0gQkxDS1NaKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGJsb2NrICV1IGluIGZpbGUg XCIlc1wiOiByZWFkICVkIG9mICVkXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGJsb2Nrbm8sIGZu LCByLCBCTENLU1opOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBibG9jayAl dSBpbiBmaWxlIFwiJXNcIjogcmVhZCAlZCBvZiAlZCIsCisJCQkJCQkgYmxvY2tubywgZm4s IHIsIEJMQ0tTWik7CiAJCQlleGl0KDEpOwogCQl9CiAJCWJsb2NrcysrOwpAQCAtMTIwLDE1 ICsxMjAsMTQgQEAgc2Nhbl9maWxlKGNvbnN0IGNoYXIgKmZuLCBCbG9ja051bWJlciBzZWdt ZW50bm8pCiAJCWlmIChjc3VtICE9IGhlYWRlci0+cGRfY2hlY2tzdW0pCiAJCXsKIAkJCWlm IChDb250cm9sRmlsZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uID09IFBHX0RBVEFfQ0hFQ0tT VU1fVkVSU0lPTikKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNoZWNrc3VtIHZlcmlm aWNhdGlvbiBmYWlsZWQgaW4gZmlsZSBcIiVzXCIsIGJsb2NrICV1OiBjYWxjdWxhdGVkIGNo ZWNrc3VtICVYIGJ1dCBibG9jayBjb250YWlucyAlWFxuIiksCi0JCQkJCQlwcm9nbmFtZSwg Zm4sIGJsb2Nrbm8sIGNzdW0sIGhlYWRlci0+cGRfY2hlY2tzdW0pOworCQkJCXBnX2xvZ19l cnJvcigiY2hlY2tzdW0gdmVyaWZpY2F0aW9uIGZhaWxlZCBpbiBmaWxlIFwiJXNcIiwgYmxv Y2sgJXU6IGNhbGN1bGF0ZWQgY2hlY2tzdW0gJVggYnV0IGJsb2NrIGNvbnRhaW5zICVYIiwK KwkJCQkJCQkgZm4sIGJsb2Nrbm8sIGNzdW0sIGhlYWRlci0+cGRfY2hlY2tzdW0pOwogCQkJ YmFkYmxvY2tzKys7CiAJCX0KIAl9CiAKIAlpZiAodmVyYm9zZSkKLQkJZnByaW50ZihzdGRl cnIsCi0JCQkJXygiJXM6IGNoZWNrc3VtcyB2ZXJpZmllZCBpbiBmaWxlIFwiJXNcIlxuIiks IHByb2duYW1lLCBmbik7CisJCXBnX2xvZ19pbmZvKCJjaGVja3N1bXMgdmVyaWZpZWQgaW4g ZmlsZSBcIiVzXCIiLCBmbik7CiAKIAljbG9zZShmKTsKIH0KQEAgLTE0NCw4ICsxNDMsNyBA QCBzY2FuX2RpcmVjdG9yeShjb25zdCBjaGFyICpiYXNlZGlyLCBjb25zdCBjaGFyICpzdWJk aXIpCiAJZGlyID0gb3BlbmRpcihwYXRoKTsKIAlpZiAoIWRpcikKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIp LAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4 aXQoMSk7CiAJfQogCXdoaWxlICgoZGUgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpCkBAIC0x NzIsOCArMTcwLDcgQEAgc2Nhbl9kaXJlY3RvcnkoY29uc3QgY2hhciAqYmFzZWRpciwgY29u c3QgY2hhciAqc3ViZGlyKQogCQlzbnByaW50Zihmbiwgc2l6ZW9mKGZuKSwgIiVzLyVzIiwg cGF0aCwgZGUtPmRfbmFtZSk7CiAJCWlmIChsc3RhdChmbiwgJnN0KSA8IDApCiAJCXsKLQkJ CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVz XG4iKSwKLQkJCQkJcHJvZ25hbWUsIGZuLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLCBmbik7CiAJCQlleGl0 KDEpOwogCQl9CiAJCWlmIChTX0lTUkVHKHN0LnN0X21vZGUpKQpAQCAtMjAwLDggKzE5Nyw4 IEBAIHNjYW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmJhc2VkaXIsIGNvbnN0IGNoYXIgKnN1 YmRpcikKIAkJCQlzZWdtZW50bm8gPSBhdG9pKHNlZ21lbnRwYXRoKTsKIAkJCQlpZiAoc2Vn bWVudG5vID09IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFs aWQgc2VnbWVudCBudW1iZXIgJWQgaW4gZmlsZSBuYW1lIFwiJXNcIlxuIiksCi0JCQkJCQkJ cHJvZ25hbWUsIHNlZ21lbnRubywgZm4pOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQg c2VnbWVudCBudW1iZXIgJWQgaW4gZmlsZSBuYW1lIFwiJXNcIiIsCisJCQkJCQkJCSBzZWdt ZW50bm8sIGZuKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQl9CkBAIC0yNDEsNyArMjM4 LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWJvb2wJCWNyY19vazsKIAog CXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfdmVy aWZ5X2NoZWNrc3VtcyIpKTsKLQorCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlwcm9n bmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAogCWlmIChhcmdjID4gMSkKQEAgLTI3 MSw3ICsyNjgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQljYXNlICdy JzoKIAkJCQlpZiAoYXRvaShvcHRhcmcpID09IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGludmFsaWQgcmVsZmlsZW5vZGUgc3BlY2lmaWNhdGlvbiwgbXVzdCBi ZSBudW1lcmljOiAlc1xuIiksIHByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJy b3IoImludmFsaWQgcmVsZmlsZW5vZGUgc3BlY2lmaWNhdGlvbiwgbXVzdCBiZSBudW1lcmlj OiAlcyIsIG9wdGFyZyk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCW9ubHlfcmVsZmls ZW5vZGUgPSBwc3RyZHVwKG9wdGFyZyk7CkBAIC0yOTIsNyArMjg5LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCQkvKiBJZiBubyBEYXRhRGlyIHdhcyBzcGVjaWZpZWQs IGFuZCBub25lIGNvdWxkIGJlIGZvdW5kLCBlcnJvciBvdXQgKi8KIAkJaWYgKERhdGFEaXIg PT0gTlVMTCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBubyBkYXRhIGRpcmVj dG9yeSBzcGVjaWZpZWRcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIm5vIGRh dGEgZGlyZWN0b3J5IHNwZWNpZmllZCIpOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBc IiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJ CWV4aXQoMSk7CiAJCX0KQEAgLTMwMSwzMSArMjk4LDMxIEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkvKiBDb21wbGFpbiBpZiBhbnkgYXJndW1lbnRzIHJlbWFpbiAqLwog CWlmIChvcHRpbmQgPCBhcmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28g bWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJ CQlwcm9nbmFtZSwgYXJndltvcHRpbmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBj b21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zb b3B0aW5kXSk7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKIAl9 CiAKIAkvKiBDaGVjayBpZiBjbHVzdGVyIGlzIHJ1bm5pbmcgKi8KLQlDb250cm9sRmlsZSA9 IGdldF9jb250cm9sZmlsZShEYXRhRGlyLCBwcm9nbmFtZSwgJmNyY19vayk7CisJQ29udHJv bEZpbGUgPSBnZXRfY29udHJvbGZpbGUoRGF0YURpciwgJmNyY19vayk7CiAJaWYgKCFjcmNf b2spCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHBnX2NvbnRyb2wgQ1JDIHZhbHVl IGlzIGluY29ycmVjdFxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJwZ19jb250 cm9sIENSQyB2YWx1ZSBpcyBpbmNvcnJlY3QiKTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlpZiAo Q29udHJvbEZpbGUtPnN0YXRlICE9IERCX1NIVVRET1dORUQgJiYKIAkJQ29udHJvbEZpbGUt PnN0YXRlICE9IERCX1NIVVRET1dORURfSU5fUkVDT1ZFUlkpCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNsdXN0ZXIgbXVzdCBiZSBzaHV0IGRvd24gdG8gdmVyaWZ5IGNoZWNr c3Vtc1xuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJjbHVzdGVyIG11c3QgYmUg c2h1dCBkb3duIHRvIHZlcmlmeSBjaGVja3N1bXMiKTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlp ZiAoQ29udHJvbEZpbGUtPmRhdGFfY2hlY2tzdW1fdmVyc2lvbiA9PSAwKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBkYXRhIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQgaW4g Y2x1c3RlclxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJkYXRhIGNoZWNrc3Vt cyBhcmUgbm90IGVuYWJsZWQgaW4gY2x1c3RlciIpOwogCQlleGl0KDEpOwogCX0KIApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ193YWxk dW1wL01ha2VmaWxlCmluZGV4IGY1OTU3YmQ3NWEuLmJmZTk0OThiODAgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAv TWFrZWZpbGUKQEAgLTExLDYgKzExLDcgQEAgT0JKUyA9IHBnX3dhbGR1bXAubyBjb21wYXQu byB4bG9ncmVhZGVyLm8gcm1ncmRlc2MubyBcCiAJJChSTUdSREVTQ09CSlMpICQoV0lOMzJS RVMpCiAKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1ERlJPTlRFTkQgJChDUFBGTEFHUykKK0xE RkxBR1NfSU5URVJOQUwgKz0gLUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdm ZXV0aWxzCiAKIFJNR1JERVNDU09VUkNFUyA9ICQoc29ydCAkKG5vdGRpciAkKHdpbGRjYXJk ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjLypkZXNjLmMpKSkK IFJNR1JERVNDT0JKUyA9ICQocGF0c3Vic3QgJS5jLCUubywkKFJNR1JERVNDU09VUkNFUykp CkBAIC0xOCw3ICsxOSw3IEBAIFJNR1JERVNDT0JKUyA9ICQocGF0c3Vic3QgJS5jLCUubywk KFJNR1JERVNDU09VUkNFUykpCiAKIGFsbDogcGdfd2FsZHVtcAogCi1wZ193YWxkdW1wOiAk KE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQKK3BnX3dhbGR1bXA6ICQoT0JKUykgfCBzdWJt YWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscwogCSQoQ0MpICQoQ0ZMQUdTKSAk XiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAogeGxvZ3Jl YWRlci5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8l CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvbmxzLm1rIGIvc3JjL2Jpbi9wZ193 YWxkdW1wL25scy5tawppbmRleCBjNjE4ZjkzMTQ1Li4yZWUyZGE3OTAxIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3dhbGR1bXAvbmxzLm1rCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9u bHMubWsKQEAgLTEsNiArMSw2IEBACiAjIHNyYy9iaW4vcGdfd2FsZHVtcC9ubHMubWsKIENB VEFMT0dfTkFNRSAgICAgPSBwZ193YWxkdW1wCiBBVkFJTF9MQU5HVUFHRVMgID0gZGUgZXMg ZnIgamEga28gcnUgc3YgdHIgdmkKLUdFVFRFWFRfRklMRVMgICAgPSBwZ193YWxkdW1wLmMK LUdFVFRFWFRfVFJJR0dFUlMgPSBmYXRhbF9lcnJvcgotR0VUVEVYVF9GTEFHUyAgICA9IGZh dGFsX2Vycm9yOjE6Yy1mb3JtYXQKK0dFVFRFWFRfRklMRVMgICAgPSAkKEZST05URU5EX0NP TU1PTl9HRVRURVhUX0ZJTEVTKSBwZ193YWxkdW1wLmMKK0dFVFRFWFRfVFJJR0dFUlMgPSAk KEZST05URU5EX0NPTU1PTl9HRVRURVhUX1RSSUdHRVJTKSBmYXRhbF9lcnJvcgorR0VUVEVY VF9GTEFHUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRkxBR1MpIGZhdGFsX2Vy cm9yOjE6Yy1mb3JtYXQKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxk dW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IDFlNTM3OWVi M2UuLjcwOTFmZmYzYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxk dW1wLmMKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwpAQCAtMjEsNiAr MjEsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJjb21tb24vZmVfbWVtdXRpbHMuaCIKKyNp bmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIK ICNpbmNsdWRlICJybWdyZGVzYy5oIgogCkBAIC03MCwyNiArNzEsNyBAQCB0eXBlZGVmIHN0 cnVjdCBYTG9nRHVtcFN0YXRzCiAJU3RhdHMJCXJlY29yZF9zdGF0c1tSTV9ORVhUX0lEXVtN QVhfWExJTkZPX1RZUEVTXTsKIH0gWExvZ0R1bXBTdGF0czsKIAotc3RhdGljIHZvaWQgZmF0 YWxfZXJyb3IoY29uc3QgY2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlX3ByaW50ZigxLCAy KTsKLQotLyoKLSAqIEJpZyByZWQgYnV0dG9uIHRvIHB1c2ggd2hlbiB0aGluZ3MgZ28gaG9y cmlibHkgd3JvbmcuCi0gKi8KLXN0YXRpYyB2b2lkCi1mYXRhbF9lcnJvcihjb25zdCBjaGFy ICpmbXQsLi4uKQotewotCXZhX2xpc3QJCWFyZ3M7Ci0KLQlmZmx1c2goc3Rkb3V0KTsKLQot CWZwcmludGYoc3RkZXJyLCBfKCIlczogRkFUQUw6ICAiKSwgcHJvZ25hbWUpOwotCXZhX3N0 YXJ0KGFyZ3MsIGZtdCk7Ci0JdmZwcmludGYoc3RkZXJyLCBfKGZtdCksIGFyZ3MpOwotCXZh X2VuZChhcmdzKTsKLQlmcHV0YygnXG4nLCBzdGRlcnIpOwotCi0JZXhpdChFWElUX0ZBSUxV UkUpOwotfQorI2RlZmluZSBmYXRhbF9lcnJvciguLi4pIGRvIHsgcGdfbG9nX2Vycm9yKF9f VkFfQVJHU19fKTsgZXhpdChFWElUX0ZBSUxVUkUpOyB9IHdoaWxlKDApCiAKIHN0YXRpYyB2 b2lkCiBwcmludF9ybWdyX2xpc3Qodm9pZCkKQEAgLTg1OSw2ICs4NDEsNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAlpbnQJCQlvcHRpbmRleCA9IDA7CiAKIAlzZXRfcGds b2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX3dhbGR1bXAiKSk7 CisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCXByb2duYW1lID0gZ2V0X3Byb2duYW1l KGFyZ3ZbMF0pOwogCiAJbWVtc2V0KCZwcml2YXRlLCAwLCBzaXplb2YoWExvZ0R1bXBQcml2 YXRlKSk7CkBAIC04ODIsNyArODY1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAKIAlpZiAoYXJnYyA8PSAxKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBubyBh cmd1bWVudHMgc3BlY2lmaWVkXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5v IGFyZ3VtZW50cyBzcGVjaWZpZWQiKTsKIAkJZ290byBiYWRfYXJndW1lbnQ7CiAJfQogCkBA IC04OTcsOCArODgwLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQljYXNl ICdlJzoKIAkJCQlpZiAoc3NjYW5mKG9wdGFyZywgIiVYLyVYIiwgJnhsb2dpZCwgJnhyZWNv ZmYpICE9IDIpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCBwYXJzZSBlbmQgV0FMIGxvY2F0aW9uIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUs IG9wdGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIGVuZCBXQUwg bG9jYXRpb24gXCIlc1wiIiwKKwkJCQkJCQkJIG9wdGFyZyk7CiAJCQkJCWdvdG8gYmFkX2Fy Z3VtZW50OwogCQkJCX0KIAkJCQlwcml2YXRlLmVuZHB0ciA9ICh1aW50NjQpIHhsb2dpZCA8 PCAzMiB8IHhyZWNvZmY7CkBAIC05MTMsOCArODk2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJCQljYXNlICduJzoKIAkJCQlpZiAoc3NjYW5mKG9wdGFyZywgIiVkIiwg JmNvbmZpZy5zdG9wX2FmdGVyX3JlY29yZHMpICE9IDEpCiAJCQkJewotCQkJCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBwYXJzZSBsaW1pdCBcIiVzXCJcbiIpLAotCQkJ CQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBw YXJzZSBsaW1pdCBcIiVzXCIiLCBvcHRhcmcpOwogCQkJCQlnb3RvIGJhZF9hcmd1bWVudDsK IAkJCQl9CiAJCQkJYnJlYWs7CkBAIC05NDIsOCArOTI0LDggQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAKIAkJCQkJaWYgKGNvbmZpZy5maWx0ZXJfYnlfcm1nciA9PSAtMSkK IAkJCQkJewotCQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiByZXNvdXJjZSBtYW5hZ2Vy IFwiJXNcIiBkb2VzIG5vdCBleGlzdFxuIiksCi0JCQkJCQkJCXByb2duYW1lLCBvcHRhcmcp OworCQkJCQkJcGdfbG9nX2Vycm9yKCJyZXNvdXJjZSBtYW5hZ2VyIFwiJXNcIiBkb2VzIG5v dCBleGlzdCIsCisJCQkJCQkJCQkgb3B0YXJnKTsKIAkJCQkJCWdvdG8gYmFkX2FyZ3VtZW50 OwogCQkJCQl9CiAJCQkJfQpAQCAtOTUxLDggKzkzMyw4IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCQkJY2FzZSAncyc6CiAJCQkJaWYgKHNzY2FuZihvcHRhcmcsICIlWC8l WCIsICZ4bG9naWQsICZ4cmVjb2ZmKSAhPSAyKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3QgcGFyc2Ugc3RhcnQgV0FMIGxvY2F0aW9uIFwiJXNcIlxu IiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IHBhcnNlIHN0YXJ0IFdBTCBsb2NhdGlvbiBcIiVzXCIiLAorCQkJCQkJCQkgb3B0 YXJnKTsKIAkJCQkJZ290byBiYWRfYXJndW1lbnQ7CiAJCQkJfQogCQkJCWVsc2UKQEAgLTk2 MSw4ICs5NDMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNhc2UgJ3Qn OgogCQkJCWlmIChzc2NhbmYob3B0YXJnLCAiJWQiLCAmcHJpdmF0ZS50aW1lbGluZSkgIT0g MSkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHBhcnNl IHRpbWVsaW5lIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7CisJCQkJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIHRpbWVsaW5lIFwiJXNcIiIsIG9wdGFy Zyk7CiAJCQkJCWdvdG8gYmFkX2FyZ3VtZW50OwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTk3 Myw4ICs5NTQsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNhc2UgJ3gn OgogCQkJCWlmIChzc2NhbmYob3B0YXJnLCAiJXUiLCAmY29uZmlnLmZpbHRlcl9ieV94aWQp ICE9IDEpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBw YXJzZSBcIiVzXCIgYXMgYSB0cmFuc2FjdGlvbiBJRFxuIiksCi0JCQkJCQkJcHJvZ25hbWUs IG9wdGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIFwiJXNcIiBh cyBhIHRyYW5zYWN0aW9uIElEIiwKKwkJCQkJCQkJIG9wdGFyZyk7CiAJCQkJCWdvdG8gYmFk X2FyZ3VtZW50OwogCQkJCX0KIAkJCQljb25maWcuZmlsdGVyX2J5X3hpZF9lbmFibGVkID0g dHJ1ZTsKQEAgLTk4OCw4ICs5NjksOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkJCQkJCWNvbmZpZy5zdGF0c19wZXJfcmVjb3JkID0gdHJ1ZTsKIAkJCQkJZWxzZSBpZiAo c3RyY21wKG9wdGFyZywgInJtZ3IiKSAhPSAwKQogCQkJCQl7Ci0JCQkJCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IHVucmVjb2duaXplZCBhcmd1bWVudCB0byAtLXN0YXRzOiAlc1xuIiks Ci0JCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQkJcGdfbG9nX2Vycm9yKCJ1bnJl Y29nbml6ZWQgYXJndW1lbnQgdG8gLS1zdGF0czogJXMiLAorCQkJCQkJCQkJIG9wdGFyZyk7 CiAJCQkJCQlnb3RvIGJhZF9hcmd1bWVudDsKIAkJCQkJfQogCQkJCX0KQEAgLTEwMDEsOSAr OTgyLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAoKG9wdGluZCAr IDIpIDwgYXJnYykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiB0b28gbWFu eSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlw cm9nbmFtZSwgYXJndltvcHRpbmQgKyAyXSk7CisJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkg Y29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCSBhcmd2 W29wdGluZCArIDJdKTsKIAkJZ290byBiYWRfYXJndW1lbnQ7CiAJfQogCkBAIC0xMDEyLDkg Kzk5Miw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkvKiB2YWxpZGF0ZSBw YXRoIHBvaW50cyB0byBkaXJlY3RvcnkgKi8KIAkJaWYgKCF2ZXJpZnlfZGlyZWN0b3J5KHBy aXZhdGUuaW5wYXRoKSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBw YXRoIFwiJXNcIiBjb3VsZCBub3QgYmUgb3BlbmVkOiAlc1xuIiksCi0JCQkJCXByb2duYW1l LCBwcml2YXRlLmlucGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigi cGF0aCBcIiVzXCIgY291bGQgbm90IGJlIG9wZW5lZDogJXMiLAorCQkJCQkJIHByaXZhdGUu aW5wYXRoLCBzdHJlcnJvcihlcnJubykpOwogCQkJZ290byBiYWRfYXJndW1lbnQ7CiAJCX0K IAl9CkBAIC0xMDUxLDkgKzEwMzAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCAwLCBXYWxTZWdTeiwgcHJpdmF0 ZS5zdGFydHB0cik7CiAJCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLnN0YXJ0cHRy LCBzZWdubywgV2FsU2VnU3opKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygi JXM6IHN0YXJ0IFdBTCBsb2NhdGlvbiAlWC8lWCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wi XG4iKSwKLQkJCQkJcHJvZ25hbWUsCisJCQlwZ19sb2dfZXJyb3IoInN0YXJ0IFdBTCBsb2Nh dGlvbiAlWC8lWCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKIAkJCQkJKHVpbnQzMikg KHByaXZhdGUuc3RhcnRwdHIgPj4gMzIpLAogCQkJCQkodWludDMyKSBwcml2YXRlLnN0YXJ0 cHRyLAogCQkJCQlmbmFtZSk7CkBAIC0xMDk2LDkgKzEwNzMsNyBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkJaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLmVuZHB0ciwgc2Vn bm8sIFdhbFNlZ1N6KSAmJgogCQkJcHJpdmF0ZS5lbmRwdHIgIT0gKHNlZ25vICsgMSkgKiBX YWxTZWdTeikKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBlbmQgV0FM IGxvY2F0aW9uICVYLyVYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCJcbiIpLAotCQkJCQlw cm9nbmFtZSwKKwkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAlWC8lWCBpcyBu b3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKIAkJCQkJKHVpbnQzMikgKHByaXZhdGUuZW5kcHRy ID4+IDMyKSwKIAkJCQkJKHVpbnQzMikgcHJpdmF0ZS5lbmRwdHIsCiAJCQkJCWFyZ3ZbYXJn YyAtIDFdKTsKQEAgLTExMTEsNyArMTA4Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCS8qIHdlIGRvbid0IGtub3cgd2hhdCB0byBwcmludCAqLwogCWlmIChYTG9nUmVj UHRySXNJbnZhbGlkKHByaXZhdGUuc3RhcnRwdHIpKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBubyBzdGFydCBXQUwgbG9jYXRpb24gZ2l2ZW5cbiIpLCBwcm9nbmFtZSk7CisJ CXBnX2xvZ19lcnJvcigibm8gc3RhcnQgV0FMIGxvY2F0aW9uIGdpdmVuIik7CiAJCWdvdG8g YmFkX2FyZ3VtZW50OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggNDk2NzA3NjhmNS4uYjNl ODZmN2E1ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi cG9zdGdyZXNfZmUuaCIKICNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiZmVf dXRpbHMvY29uZGl0aW9uYWwuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAj aW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKICNpbmNsdWRlICJsaWJwcS1mZS5oIgogI2luY2x1 ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIKQEAgLTYxMCw3ICs2MTEsNiBAQCBzdGF0 aWMgdm9pZCBkb0xvZyhUU3RhdGUgKnRocmVhZCwgQ1N0YXRlICpzdCwKIAkgIFN0YXRzRGF0 YSAqYWdnLCBib29sIHNraXBwZWQsIGRvdWJsZSBsYXRlbmN5LCBkb3VibGUgbGFnKTsKIHN0 YXRpYyB2b2lkIHByb2Nlc3NYYWN0U3RhdHMoVFN0YXRlICp0aHJlYWQsIENTdGF0ZSAqc3Qs IGluc3RyX3RpbWUgKm5vdywKIAkJCQkgYm9vbCBza2lwcGVkLCBTdGF0c0RhdGEgKmFnZyk7 Ci1zdGF0aWMgdm9pZCBwZ2JlbmNoX2Vycm9yKGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0 dHJpYnV0ZV9wcmludGYoMSwgMik7CiBzdGF0aWMgdm9pZCBhbGxvY2F0ZV9jb21tYW5kX3Zh cnByZWZpeChDb21tYW5kICpjbWQsIGludCB0b3RhbHF1ZXJpZXMpOwogc3RhdGljIHZvaWQg YWRkU2NyaXB0KFBhcnNlZFNjcmlwdCBzY3JpcHQpOwogc3RhdGljIHZvaWQgKnRocmVhZFJ1 bih2b2lkICphcmcpOwpAQCAtNjI3LDcgKzYyNyw2IEBAIHN0YXRpYyBib29sIHNvY2tldF9o YXNfaW5wdXQoc29ja2V0X3NldCAqc2EsIGludCBmZCwgaW50IGlkeCk7CiAvKiBjYWxsYmFj ayBmdW5jdGlvbnMgZm9yIG91ciBmbGV4IGxleGVyICovCiBzdGF0aWMgY29uc3QgUHNxbFNj YW5DYWxsYmFja3MgcGdiZW5jaF9jYWxsYmFja3MgPSB7CiAJTlVMTCwJCQkJCQkvKiBkb24n dCBuZWVkIGdldF92YXJpYWJsZSBmdW5jdGlvbmFsaXR5ICovCi0JcGdiZW5jaF9lcnJvcgog fTsKIAogCkBAIC00MTM5LDIwICs0MTM4LDYgQEAgcGFyc2VRdWVyeShDb21tYW5kICpjbWQp CiAJcmV0dXJuIHRydWU7CiB9CiAKLS8qCi0gKiBTaW1wbGUgZXJyb3ItcHJpbnRpbmcgZnVu Y3Rpb24sIG1pZ2h0IGJlIG5lZWRlZCBieSBsZXhlcgotICovCi1zdGF0aWMgdm9pZAotcGdi ZW5jaF9lcnJvcihjb25zdCBjaGFyICpmbXQsLi4uKQotewotCXZhX2xpc3QJCWFwOwotCi0J ZmZsdXNoKHN0ZG91dCk7Ci0JdmFfc3RhcnQoYXAsIGZtdCk7Ci0JdmZwcmludGYoc3RkZXJy LCBfKGZtdCksIGFwKTsKLQl2YV9lbmQoYXApOwotfQotCiAvKgogICogc3ludGF4IGVycm9y IHdoaWxlIHBhcnNpbmcgYSBzY3JpcHQgKGluIHByYWN0aWNlLCB3aGlsZSBwYXJzaW5nIGEK ICAqIGJhY2tzbGFzaCBjb21tYW5kLCBiZWNhdXNlIHdlIGRvbid0IGRldGVjdCBzeW50YXgg ZXJyb3JzIGluIFNRTCkKQEAgLTUyNTQsNiArNTIzOSw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCWludAkJCWV4aXRfY29kZSA9IDA7CiAKIAlwcm9nbmFtZSA9IGdldF9w cm9nbmFtZShhcmd2WzBdKTsKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAKIAlpZiAo YXJnYyA+IDEpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3Ny Yy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggY2JlNWU1MThjOS4uMDZjZmVjM2Y1ZiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29t bWFuZC5jCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJsaWJwcS1mZS5oIgogI2lu Y2x1ZGUgInBxZXhwYnVmZmVyLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgog I2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCiAjaW5jbHVkZSAiY29tbW9u LmgiCkBAIC0yMTYsMTAgKzIxNyw5IEBAIEhhbmRsZVNsYXNoQ21kcyhQc3FsU2NhblN0YXRl IHNjYW5fc3RhdGUsCiAKIAlpZiAoc3RhdHVzID09IFBTUUxfQ01EX1VOS05PV04pCiAJewor CQlwZ19sb2dfZXJyb3IoImludmFsaWQgY29tbWFuZCBcXCVzIiwgY21kKTsKIAkJaWYgKHBz ZXQuY3VyX2NtZF9pbnRlcmFjdGl2ZSkKLQkJCXBzcWxfZXJyb3IoIkludmFsaWQgY29tbWFu ZCBcXCVzLiBUcnkgXFw/IGZvciBoZWxwLlxuIiwgY21kKTsKLQkJZWxzZQotCQkJcHNxbF9l cnJvcigiaW52YWxpZCBjb21tYW5kIFxcJXNcbiIsIGNtZCk7CisJCQlwZ19sb2dfaW5mbygi VHJ5IFxcPyBmb3IgaGVscC4iKTsKIAkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJfQog CkBAIC0yMzcsNyArMjM3LDcgQEAgSGFuZGxlU2xhc2hDbWRzKFBzcWxTY2FuU3RhdGUgc2Nh bl9zdGF0ZSwKIAkJCQkJCQkJCQkJIE9UX05PUk1BTCwgTlVMTCwgZmFsc2UpKSkKIAkJewog CQkJaWYgKGFjdGl2ZV9icmFuY2gpCi0JCQkJcHNxbF9lcnJvcigiXFwlczogZXh0cmEgYXJn dW1lbnQgXCIlc1wiIGlnbm9yZWRcbiIsIGNtZCwgYXJnKTsKKwkJCQlwZ19sb2dfd2Fybmlu ZygiXFwlczogZXh0cmEgYXJndW1lbnQgXCIlc1wiIGlnbm9yZWQiLCBjbWQsIGFyZyk7CiAJ CQlmcmVlKGFyZyk7CiAJCX0KIAkJY29uZGl0aW9uYWxfc3RhY2tfcG9wKGNzdGFjayk7CkBA IC0yODksNyArMjg5LDcgQEAgZXhlY19jb21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAlpZiAo cHNldC5jdXJfY21kX2ludGVyYWN0aXZlICYmICFhY3RpdmVfYnJhbmNoICYmCiAJCSFpc19i cmFuY2hpbmdfY29tbWFuZChjbWQpKQogCXsKLQkJcHNxbF9lcnJvcigiXFwlcyBjb21tYW5k IGlnbm9yZWQ7IHVzZSBcXGVuZGlmIG9yIEN0cmwtQyB0byBleGl0IGN1cnJlbnQgXFxpZiBi bG9ja1xuIiwKKwkJcGdfbG9nX3dhcm5pbmcoIlxcJXMgY29tbWFuZCBpZ25vcmVkOyB1c2Ug XFxlbmRpZiBvciBDdHJsLUMgdG8gZXhpdCBjdXJyZW50IFxcaWYgYmxvY2siLAogCQkJCSAg IGNtZCk7CiAJfQogCkBAIC01NDksNyArNTQ5LDcgQEAgZXhlY19jb21tYW5kX2NkKFBzcWxT Y2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpj bWQpCiAJCQlwdyA9IGdldHB3dWlkKHVzZXJfaWQpOwogCQkJaWYgKCFwdykKIAkJCXsKLQkJ CQlwc3FsX2Vycm9yKCJjb3VsZCBub3QgZ2V0IGhvbWUgZGlyZWN0b3J5IGZvciB1c2VyIElE ICVsZDogJXNcbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0IGhvbWUgZGly ZWN0b3J5IGZvciB1c2VyIElEICVsZDogJXMiLAogCQkJCQkJICAgKGxvbmcpIHVzZXJfaWQs CiAJCQkJCQkgICBlcnJubyA/IHN0cmVycm9yKGVycm5vKSA6IF8oInVzZXIgZG9lcyBub3Qg ZXhpc3QiKSk7CiAJCQkJZXhpdChFWElUX0ZBSUxVUkUpOwpAQCAtNTY3LDggKzU2Nyw4IEBA IGV4ZWNfY29tbWFuZF9jZChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZl X2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQogCiAJCWlmIChjaGRpcihkaXIpID09IC0xKQog CQl7Ci0JCQlwc3FsX2Vycm9yKCJcXCVzOiBjb3VsZCBub3QgY2hhbmdlIGRpcmVjdG9yeSB0 byBcIiVzXCI6ICVzXG4iLAotCQkJCQkgICBjbWQsIGRpciwgc3RyZXJyb3IoZXJybm8pKTsK KwkJCXBnX2xvZ19lcnJvcigiXFwlczogY291bGQgbm90IGNoYW5nZSBkaXJlY3RvcnkgdG8g XCIlc1wiOiAlbSIsCisJCQkJCQkgY21kLCBkaXIpOwogCQkJc3VjY2VzcyA9IGZhbHNlOwog CQl9CiAKQEAgLTkwOCw3ICs5MDgsNyBAQCBleGVjX2NvbW1hbmRfZWRpdChQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAl7CiAJCWlmICghcXVlcnlf YnVmKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJubyBxdWVyeSBidWZmZXJcbiIpOworCQkJcGdf bG9nX2Vycm9yKCJubyBxdWVyeSBidWZmZXIiKTsKIAkJCXN0YXR1cyA9IFBTUUxfQ01EX0VS Uk9SOwogCQl9CiAJCWVsc2UKQEAgLTk0MSw3ICs5NDEsNyBAQCBleGVjX2NvbW1hbmRfZWRp dChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAkJCQls aW5lbm8gPSBhdG9pKGxuKTsKIAkJCQlpZiAobGluZW5vIDwgMSkKIAkJCQl7Ci0JCQkJCXBz cWxfZXJyb3IoImludmFsaWQgbGluZSBudW1iZXI6ICVzXG4iLCBsbik7CisJCQkJCXBnX2xv Z19lcnJvcigiaW52YWxpZCBsaW5lIG51bWJlcjogJXMiLCBsbik7CiAJCQkJCXN0YXR1cyA9 IFBTUUxfQ01EX0VSUk9SOwogCQkJCX0KIAkJCX0KQEAgLTk5NSwxNiArOTk1LDE2IEBAIGV4 ZWNfY29tbWFuZF9lZl9ldihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZl X2JyYW5jaCwKIAkJCWZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxz ZSwKIAkJCQkJCQkJICBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpOwogCQkJaWYgKGlzX2Z1 bmMpCi0JCQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qg c3VwcG9ydCBlZGl0aW5nIGZ1bmN0aW9uIHNvdXJjZS5cbiIsCisJCQkJcGdfbG9nX2Vycm9y KCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGVkaXRpbmcgZnVu Y3Rpb24gc291cmNlLiIsCiAJCQkJCQkgICBzdmVyYnVmKTsKIAkJCWVsc2UKLQkJCQlwc3Fs X2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGVkaXRp bmcgdmlldyBkZWZpbml0aW9ucy5cbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVy ICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGVkaXRpbmcgdmlldyBkZWZpbml0aW9u cy4iLAogCQkJCQkJICAgc3ZlcmJ1Zik7CiAJCQlzdGF0dXMgPSBQU1FMX0NNRF9FUlJPUjsK IAkJfQogCQllbHNlIGlmICghcXVlcnlfYnVmKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJubyBx dWVyeSBidWZmZXJcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJubyBxdWVyeSBidWZmZXIiKTsK IAkJCXN0YXR1cyA9IFBTUUxfQ01EX0VSUk9SOwogCQl9CiAJCWVsc2UKQEAgLTExNTcsNyAr MTE1Nyw3IEBAIGV4ZWNfY29tbWFuZF9lbmNvZGluZyhQc3FsU2NhblN0YXRlIHNjYW5fc3Rh dGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKIAkJewogCQkJLyogc2V0IGVuY29kaW5nICovCiAJ CQlpZiAoUFFzZXRDbGllbnRFbmNvZGluZyhwc2V0LmRiLCBlbmNvZGluZykgPT0gLTEpCi0J CQkJcHNxbF9lcnJvcigiJXM6IGludmFsaWQgZW5jb2RpbmcgbmFtZSBvciBjb252ZXJzaW9u IHByb2NlZHVyZSBub3QgZm91bmRcbiIsIGVuY29kaW5nKTsKKwkJCQlwZ19sb2dfZXJyb3Io IiVzOiBpbnZhbGlkIGVuY29kaW5nIG5hbWUgb3IgY29udmVyc2lvbiBwcm9jZWR1cmUgbm90 IGZvdW5kIiwgZW5jb2RpbmcpOwogCQkJZWxzZQogCQkJewogCQkJCS8qIHNhdmUgZW5jb2Rp bmcgaW5mbyBpbnRvIHBzcWwgaW50ZXJuYWwgZGF0YSAqLwpAQCAtMTE5Miw3ICsxMTkyLDcg QEAgZXhlY19jb21tYW5kX2VycnZlcmJvc2UoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBi b29sIGFjdGl2ZV9icmFuY2gpCiAJCQkJCQkJCQkJCSAgUFFTSE9XX0NPTlRFWFRfQUxXQVlT KTsKIAkJCWlmIChtc2cpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiJXMiLCBtc2cpOworCQkJ CXBnX2xvZ19lcnJvcigiJXMiLCBtc2cpOwogCQkJCVBRZnJlZW1lbShtc2cpOwogCQkJfQog CQkJZWxzZQpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgZXhlY19jb21tYW5kX2luY2x1ZGUoUHNx bFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIg KmMKIAogCQlpZiAoIWZuYW1lKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXCVzOiBtaXNzaW5n IHJlcXVpcmVkIGFyZ3VtZW50XG4iLCBjbWQpOworCQkJcGdfbG9nX2Vycm9yKCJcXCVzOiBt aXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgY21kKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsK IAkJfQogCQllbHNlCkBAIC0xNTE4LDEyICsxNTE4LDEyIEBAIGV4ZWNfY29tbWFuZF9lbGlm KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgQ29uZGl0aW9uYWxTdGFjayBjc3RhY2ssCiAJ CQlicmVhazsKIAkJY2FzZSBJRlNUQVRFX0VMU0VfVFJVRToKIAkJY2FzZSBJRlNUQVRFX0VM U0VfRkFMU0U6Ci0JCQlwc3FsX2Vycm9yKCJcXGVsaWY6IGNhbm5vdCBvY2N1ciBhZnRlciBc XGVsc2VcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJcXGVsaWY6IGNhbm5vdCBvY2N1ciBhZnRl ciBcXGVsc2UiKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCWJyZWFrOwogCQljYXNlIElG U1RBVEVfTk9ORToKIAkJCS8qIG5vIFxpZiB0byBlbGlmIGZyb20gKi8KLQkJCXBzcWxfZXJy b3IoIlxcZWxpZjogbm8gbWF0Y2hpbmcgXFxpZlxuIik7CisJCQlwZ19sb2dfZXJyb3IoIlxc ZWxpZjogbm8gbWF0Y2hpbmcgXFxpZiIpOwogCQkJc3VjY2VzcyA9IGZhbHNlOwogCQkJYnJl YWs7CiAJfQpAQCAtMTU4NywxMiArMTU4NywxMiBAQCBleGVjX2NvbW1hbmRfZWxzZShQc3Fs U2NhblN0YXRlIHNjYW5fc3RhdGUsIENvbmRpdGlvbmFsU3RhY2sgY3N0YWNrLAogCQkJYnJl YWs7CiAJCWNhc2UgSUZTVEFURV9FTFNFX1RSVUU6CiAJCWNhc2UgSUZTVEFURV9FTFNFX0ZB TFNFOgotCQkJcHNxbF9lcnJvcigiXFxlbHNlOiBjYW5ub3Qgb2NjdXIgYWZ0ZXIgXFxlbHNl XG4iKTsKKwkJCXBnX2xvZ19lcnJvcigiXFxlbHNlOiBjYW5ub3Qgb2NjdXIgYWZ0ZXIgXFxl bHNlIik7CiAJCQlzdWNjZXNzID0gZmFsc2U7CiAJCQlicmVhazsKIAkJY2FzZSBJRlNUQVRF X05PTkU6CiAJCQkvKiBubyBcaWYgdG8gZWxzZSBmcm9tICovCi0JCQlwc3FsX2Vycm9yKCJc XGVsc2U6IG5vIG1hdGNoaW5nIFxcaWZcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJcXGVsc2U6 IG5vIG1hdGNoaW5nIFxcaWYiKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCWJyZWFrOwog CX0KQEAgLTE2MzIsNyArMTYzMiw3IEBAIGV4ZWNfY29tbWFuZF9lbmRpZihQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIENvbmRpdGlvbmFsU3RhY2sgY3N0YWNrLAogCQkJYnJlYWs7CiAJ CWNhc2UgSUZTVEFURV9OT05FOgogCQkJLyogbm8gXGlmIHRvIGVuZCAqLwotCQkJcHNxbF9l cnJvcigiXFxlbmRpZjogbm8gbWF0Y2hpbmcgXFxpZlxuIik7CisJCQlwZ19sb2dfZXJyb3Io IlxcZW5kaWY6IG5vIG1hdGNoaW5nIFxcaWYiKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJ CWJyZWFrOwogCX0KQEAgLTE2OTIsNyArMTY5Miw3IEBAIGV4ZWNfY29tbWFuZF9sbyhQc3Fs U2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAq Y21kKQogCQl7CiAJCQlpZiAoIW9wdDIpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiXFwlczog bWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsKKwkJCQlwZ19sb2dfZXJyb3Io IlxcJXM6IG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBjbWQpOwogCQkJCXN1Y2Nlc3Mg PSBmYWxzZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE3MDYsNyArMTcwNiw3IEBAIGV4ZWNfY29t bWFuZF9sbyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwg Y29uc3QgY2hhciAqY21kKQogCQl7CiAJCQlpZiAoIW9wdDEpCiAJCQl7Ci0JCQkJcHNxbF9l cnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsKKwkJCQlw Z19sb2dfZXJyb3IoIlxcJXM6IG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBjbWQpOwog CQkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE3MjMsNyArMTcyMyw3 IEBAIGV4ZWNfY29tbWFuZF9sbyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0 aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQogCQl7CiAJCQlpZiAoIW9wdDEpCiAJCQl7 Ci0JCQkJcHNxbF9lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwg Y21kKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxcJXM6IG1pc3NpbmcgcmVxdWlyZWQgYXJndW1l bnQiLCBjbWQpOwogCQkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE4 MTQsNyArMTgxNCw3IEBAIGV4ZWNfY29tbWFuZF9wYXNzd29yZChQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKIAogCQlpZiAoc3RyY21wKHB3MSwgcHcy KSAhPSAwKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJQYXNzd29yZHMgZGlkbid0IG1hdGNoLlxu Iik7CisJCQlwZ19sb2dfZXJyb3IoIlBhc3N3b3JkcyBkaWRuJ3QgbWF0Y2guIik7CiAJCQlz dWNjZXNzID0gZmFsc2U7CiAJCX0KIAkJZWxzZQpAQCAtMTgzMSw3ICsxODMxLDcgQEAgZXhl Y19jb21tYW5kX3Bhc3N3b3JkKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3Rp dmVfYnJhbmNoKQogCiAJCQlpZiAoIWVuY3J5cHRlZF9wYXNzd29yZCkKIAkJCXsKLQkJCQlw c3FsX2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKKwkJCQlwZ19sb2df ZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikpOwogCQkJCXN1Y2Nlc3MgPSBm YWxzZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE4ODMsNyArMTg4Myw3IEBAIGV4ZWNfY29tbWFu ZF9wcm9tcHQoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gs CiAKIAkJaWYgKCFhcmcxKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJl cXVpcmVkIGFyZ3VtZW50XG4iLCBjbWQpOworCQkJcGdfbG9nX2Vycm9yKCJcXCVzOiBtaXNz aW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgY21kKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJ fQogCQllbHNlCkBAIC0xOTEzLDcgKzE5MTMsNyBAQCBleGVjX2NvbW1hbmRfcHJvbXB0KFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJCXJlc3Vs dCA9IGdldHNfZnJvbUZpbGUoc3RkaW4pOwogCQkJCWlmICghcmVzdWx0KQogCQkJCXsKLQkJ CQkJcHNxbF9lcnJvcigiXFwlczogY291bGQgbm90IHJlYWQgdmFsdWUgZm9yIHZhcmlhYmxl XG4iLAorCQkJCQlwZ19sb2dfZXJyb3IoIlxcJXM6IGNvdWxkIG5vdCByZWFkIHZhbHVlIGZv ciB2YXJpYWJsZSIsCiAJCQkJCQkJICAgY21kKTsKIAkJCQkJc3VjY2VzcyA9IGZhbHNlOwog CQkJCX0KQEAgLTIxMjAsMTIgKzIxMjAsMTIgQEAgZXhlY19jb21tYW5kX3NldGVudihQc3Fs U2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAogCQlpZiAoIWVu dnZhcikKIAkJewotCQkJcHNxbF9lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1 bWVudFxuIiwgY21kKTsKKwkJCXBnX2xvZ19lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJl ZCBhcmd1bWVudCIsIGNtZCk7CiAJCQlzdWNjZXNzID0gZmFsc2U7CiAJCX0KIAkJZWxzZSBp ZiAoc3RyY2hyKGVudnZhciwgJz0nKSAhPSBOVUxMKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJc XCVzOiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIG11c3Qgbm90IGNvbnRhaW4gXCI9XCJc biIsCisJCQlwZ19sb2dfZXJyb3IoIlxcJXM6IGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUg bXVzdCBub3QgY29udGFpbiBcIj1cIiIsCiAJCQkJCSAgIGNtZCk7CiAJCQlzdWNjZXNzID0g ZmFsc2U7CiAJCX0KQEAgLTIxODYsMTkgKzIxODYsMTkgQEAgZXhlY19jb21tYW5kX3NmX3N2 KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJZm9y bWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkgIHN2 ZXJidWYsIHNpemVvZihzdmVyYnVmKSk7CiAJCQlpZiAoaXNfZnVuYykKLQkJCQlwc3FsX2Vy cm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IHNob3dpbmcg ZnVuY3Rpb24gc291cmNlLlxuIiwKKwkJCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZl cnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc2hvd2luZyBmdW5jdGlvbiBzb3VyY2UuIiwK IAkJCQkJCSAgIHN2ZXJidWYpOwogCQkJZWxzZQotCQkJCXBzcWxfZXJyb3IoIlRoZSBzZXJ2 ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc2hvd2luZyB2aWV3IGRlZmluaXRp b25zLlxuIiwKKwkJCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRv ZXMgbm90IHN1cHBvcnQgc2hvd2luZyB2aWV3IGRlZmluaXRpb25zLiIsCiAJCQkJCQkgICBz dmVyYnVmKTsKIAkJCXN0YXR1cyA9IFBTUUxfQ01EX0VSUk9SOwogCQl9CiAJCWVsc2UgaWYg KCFvYmpfZGVzYykKIAkJewogCQkJaWYgKGlzX2Z1bmMpCi0JCQkJcHNxbF9lcnJvcigiZnVu Y3Rpb24gbmFtZSBpcyByZXF1aXJlZFxuIik7CisJCQkJcGdfbG9nX2Vycm9yKCJmdW5jdGlv biBuYW1lIGlzIHJlcXVpcmVkIik7CiAJCQllbHNlCi0JCQkJcHNxbF9lcnJvcigidmlldyBu YW1lIGlzIHJlcXVpcmVkXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoInZpZXcgbmFtZSBpcyBy ZXF1aXJlZCIpOwogCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJCX0KIAkJZWxzZSBp ZiAoIWxvb2t1cF9vYmplY3Rfb2lkKGVvdCwgb2JqX2Rlc2MsICZvYmpfb2lkKSkKQEAgLTIz NTYsNyArMjM1Niw3IEBAIGV4ZWNfY29tbWFuZF91bnNldChQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAogCQlpZiAoIW9wdCkKIAkJewotCQkJcHNx bF9lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsKKwkJ CXBnX2xvZ19lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGNtZCk7 CiAJCQlzdWNjZXNzID0gZmFsc2U7CiAJCX0KIAkJZWxzZSBpZiAoIVNldFZhcmlhYmxlKHBz ZXQudmFycywgb3B0LCBOVUxMKSkKQEAgLTIzODksMTQgKzIzODksMTQgQEAgZXhlY19jb21t YW5kX3dyaXRlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNo LAogCiAJCWlmICghcXVlcnlfYnVmKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJubyBxdWVyeSBi dWZmZXJcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJubyBxdWVyeSBidWZmZXIiKTsKIAkJCXN0 YXR1cyA9IFBTUUxfQ01EX0VSUk9SOwogCQl9CiAJCWVsc2UKIAkJewogCQkJaWYgKCFmbmFt ZSkKIAkJCXsKLQkJCQlwc3FsX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJlcXVpcmVkIGFyZ3Vt ZW50XG4iLCBjbWQpOworCQkJCXBnX2xvZ19lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJl ZCBhcmd1bWVudCIsIGNtZCk7CiAJCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJCQl9 CiAJCQllbHNlCkBAIC0yNDE1LDcgKzI0MTUsNyBAQCBleGVjX2NvbW1hbmRfd3JpdGUoUHNx bFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJCQkJfQogCQkJ CWlmICghZmQpCiAJCQkJewotCQkJCQlwc3FsX2Vycm9yKCIlczogJXNcbiIsIGZuYW1lLCBz dHJlcnJvcihlcnJubykpOworCQkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIGZuYW1lKTsK IAkJCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJCQkJfQogCQkJfQpAQCAtMjQ0Myw3 ICsyNDQzLDcgQEAgZXhlY19jb21tYW5kX3dyaXRlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCiAJCQlpZiAocmVzdWx0ID09IEVPRikKIAkJCXsK LQkJCQlwc3FsX2Vycm9yKCIlczogJXNcbiIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOwor CQkJCXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQkJCXN0YXR1cyA9IFBTUUxf Q01EX0VSUk9SOwogCQkJfQogCQl9CkBAIC0yODgzLDggKzI4ODMsOCBAQCBkb19jb25uZWN0 KGVudW0gdHJpdmFsdWUgcmV1c2VfcHJldmlvdXNfc3BlY2lmaWNhdGlvbiwKIAkJICogY29u bmVjdCB0byB0aGUgd3JvbmcgZGF0YWJhc2UgYnkgdXNpbmcgZGVmYXVsdHMsIHNvIHJlcXVp cmUgYWxsCiAJCSAqIHBhcmFtZXRlcnMgdG8gYmUgc3BlY2lmaWVkLgogCQkgKi8KLQkJcHNx bF9lcnJvcigiQWxsIGNvbm5lY3Rpb24gcGFyYW1ldGVycyBtdXN0IGJlIHN1cHBsaWVkIGJl Y2F1c2Ugbm8gIgotCQkJCSAgICJkYXRhYmFzZSBjb25uZWN0aW9uIGV4aXN0c1xuIik7CisJ CXBnX2xvZ19lcnJvcigiQWxsIGNvbm5lY3Rpb24gcGFyYW1ldGVycyBtdXN0IGJlIHN1cHBs aWVkIGJlY2F1c2Ugbm8gIgorCQkJCQkgImRhdGFiYXNlIGNvbm5lY3Rpb24gZXhpc3RzIik7 CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTMwNjcsMTUgKzMwNjcsMTUgQEAgZG9fY29u bmVjdChlbnVtIHRyaXZhbHVlIHJldXNlX3ByZXZpb3VzX3NwZWNpZmljYXRpb24sCiAJCSAq LwogCQlpZiAocHNldC5jdXJfY21kX2ludGVyYWN0aXZlKQogCQl7Ci0JCQlwc3FsX2Vycm9y KCIlcyIsIFBRZXJyb3JNZXNzYWdlKG5fY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCIlcyIs IFBRZXJyb3JNZXNzYWdlKG5fY29ubikpOwogCiAJCQkvKiBwc2V0LmRiIGlzIGxlZnQgdW5t b2RpZmllZCAqLwogCQkJaWYgKG9fY29ubikKLQkJCQlwc3FsX2Vycm9yKCJQcmV2aW91cyBj b25uZWN0aW9uIGtlcHRcbiIpOworCQkJCXBnX2xvZ19lcnJvcigiUHJldmlvdXMgY29ubmVj dGlvbiBrZXB0Iik7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXGNvbm5l Y3Q6ICVzIiwgUFFlcnJvck1lc3NhZ2Uobl9jb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoIlxc Y29ubmVjdDogJXMiLCBQUWVycm9yTWVzc2FnZShuX2Nvbm4pKTsKIAkJCWlmIChvX2Nvbm4p CiAJCQl7CiAJCQkJUFFmaW5pc2gob19jb25uKTsKQEAgLTMzMzcsNyArMzMzNyw3IEBAIGVk aXRGaWxlKGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgbGluZW5vKQogI2VuZGlmCiAJCWlmICgh ZWRpdG9yX2xpbmVub19hcmcpCiAJCXsKLQkJCXBzcWxfZXJyb3IoImVudmlyb25tZW50IHZh cmlhYmxlIFBTUUxfRURJVE9SX0xJTkVOVU1CRVJfQVJHIG11c3QgYmUgc2V0IHRvIHNwZWNp ZnkgYSBsaW5lIG51bWJlclxuIik7CisJCQlwZ19sb2dfZXJyb3IoImVudmlyb25tZW50IHZh cmlhYmxlIFBTUUxfRURJVE9SX0xJTkVOVU1CRVJfQVJHIG11c3QgYmUgc2V0IHRvIHNwZWNp ZnkgYSBsaW5lIG51bWJlciIpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMzM2 Niw5ICszMzY2LDkgQEAgZWRpdEZpbGUoY29uc3QgY2hhciAqZm5hbWUsIGludCBsaW5lbm8p CiAjZW5kaWYKIAlyZXN1bHQgPSBzeXN0ZW0oc3lzKTsKIAlpZiAocmVzdWx0ID09IC0xKQot CQlwc3FsX2Vycm9yKCJjb3VsZCBub3Qgc3RhcnQgZWRpdG9yIFwiJXNcIlxuIiwgZWRpdG9y TmFtZSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHN0YXJ0IGVkaXRvciBcIiVzXCIi LCBlZGl0b3JOYW1lKTsKIAllbHNlIGlmIChyZXN1bHQgPT0gMTI3KQotCQlwc3FsX2Vycm9y KCJjb3VsZCBub3Qgc3RhcnQgL2Jpbi9zaFxuIik7CisJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IHN0YXJ0IC9iaW4vc2giKTsKIAlmcmVlKHN5cyk7CiAKIAlyZXR1cm4gcmVzdWx0ID09 IDA7CkBAIC0zNDA2LDcgKzM0MDYsNyBAQCBkb19lZGl0KGNvbnN0IGNoYXIgKmZpbGVuYW1l X2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCQlyZXQgPSBHZXRUZW1wUGF0aChNQVhQ R1BBVEgsIHRtcGRpcik7CiAJCWlmIChyZXQgPT0gMCB8fCByZXQgPiBNQVhQR1BBVEgpCiAJ CXsKLQkJCXBzcWxfZXJyb3IoImNvdWxkIG5vdCBsb2NhdGUgdGVtcG9yYXJ5IGRpcmVjdG9y eTogJXNcbiIsCisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBsb2NhdGUgdGVtcG9yYXJ5 IGRpcmVjdG9yeTogJXMiLAogCQkJCQkgICAhcmV0ID8gc3RyZXJyb3IoZXJybm8pIDogIiIp OwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CkBAIC0zNDMzLDcgKzM0MzMsNyBAQCBkb19lZGl0 KGNvbnN0IGNoYXIgKmZpbGVuYW1lX2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCiAJ CWlmIChmZCA9PSAtMSB8fCAhc3RyZWFtKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJjb3VsZCBu b3Qgb3BlbiB0ZW1wb3JhcnkgZmlsZSBcIiVzXCI6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gdGVtcG9yYXJ5IGZp bGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIAkJCWVycm9yID0gdHJ1ZTsKIAkJfQogCQllbHNl CkBAIC0zNDQ4LDIxICszNDQ4LDIxIEBAIGRvX2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVf YXJnLCBQUUV4cEJ1ZmZlciBxdWVyeV9idWYsCiAKIAkJCWlmIChmd3JpdGUocXVlcnlfYnVm LT5kYXRhLCAxLCBxbCwgc3RyZWFtKSAhPSBxbCkKIAkJCXsKLQkJCQlwc3FsX2Vycm9yKCIl czogJXNcbiIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigi JXM6ICVtIiwgZm5hbWUpOwogCiAJCQkJaWYgKGZjbG9zZShzdHJlYW0pICE9IDApCi0JCQkJ CXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJ CXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCiAJCQkJaWYgKHJlbW92ZShmbmFt ZSkgIT0gMCkKLQkJCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAKIAkJCQll cnJvciA9IHRydWU7CiAJCQl9CiAJCQllbHNlIGlmIChmY2xvc2Uoc3RyZWFtKSAhPSAwKQog CQkJewotCQkJCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgZm5hbWUsIHN0cmVycm9yKGVycm5v KSk7CisJCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAJCQkJaWYgKHJlbW92 ZShmbmFtZSkgIT0gMCkKLQkJCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBmbmFtZSwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAJ CQkJZXJyb3IgPSB0cnVlOwogCQkJfQogCQl9CkBAIC0zNDcwLDcgKzM0NzAsNyBAQCBkb19l ZGl0KGNvbnN0IGNoYXIgKmZpbGVuYW1lX2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAog CiAJaWYgKCFlcnJvciAmJiBzdGF0KGZuYW1lLCAmYmVmb3JlKSAhPSAwKQogCXsKLQkJcHNx bF9lcnJvcigiJXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9n X2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAJCWVycm9yID0gdHJ1ZTsKIAl9CiAKQEAgLTM0 ODAsNyArMzQ4MCw3IEBAIGRvX2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQUUV4 cEJ1ZmZlciBxdWVyeV9idWYsCiAKIAlpZiAoIWVycm9yICYmIHN0YXQoZm5hbWUsICZhZnRl cikgIT0gMCkKIAl7Ci0JCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgZm5hbWUsIHN0cmVycm9y KGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQllcnJvciA9 IHRydWU7CiAJfQogCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBkb19lZGl0KGNvbnN0IGNoYXIg KmZpbGVuYW1lX2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCQlzdHJlYW0gPSBmb3Bl bihmbmFtZSwgUEdfQklOQVJZX1IpOwogCQlpZiAoIXN0cmVhbSkKIAkJewotCQkJcHNxbF9l cnJvcigiJXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19l cnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQkJZXJyb3IgPSB0cnVlOwogCQl9CiAJCWVsc2UK QEAgLTM1MDMsNyArMzUwMyw3IEBAIGRvX2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVfYXJn LCBQUUV4cEJ1ZmZlciBxdWVyeV9idWYsCiAKIAkJCWlmIChmZXJyb3Ioc3RyZWFtKSkKIAkJ CXsKLQkJCQlwc3FsX2Vycm9yKCIlczogJXNcbiIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykp OworCQkJCXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQkJCWVycm9yID0gdHJ1 ZTsKIAkJCX0KIAkJCWVsc2UgaWYgKGVkaXRlZCkKQEAgLTM1MjAsNyArMzUyMCw3IEBAIGRv X2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQUUV4cEJ1ZmZlciBxdWVyeV9idWYs CiAJewogCQlpZiAocmVtb3ZlKGZuYW1lKSA9PSAtMSkKIAkJewotCQkJcHNxbF9lcnJvcigi JXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigi JXM6ICVtIiwgZm5hbWUpOwogCQkJZXJyb3IgPSB0cnVlOwogCQl9CiAJfQpAQCAtMzU3OCw3 ICszNTc4LDcgQEAgcHJvY2Vzc19maWxlKGNoYXIgKmZpbGVuYW1lLCBib29sIHVzZV9yZWxh dGl2ZV9wYXRoKQogCiAJCWlmICghZmQpCiAJCXsKLQkJCXBzcWxfZXJyb3IoIiVzOiAlc1xu IiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoIiVzOiAl bSIsIGZpbGVuYW1lKTsKIAkJCXJldHVybiBFWElUX0ZBSUxVUkU7CiAJCX0KIAl9CkBAIC0z NTkxLDEyICszNTkxLDE3IEBAIHByb2Nlc3NfZmlsZShjaGFyICpmaWxlbmFtZSwgYm9vbCB1 c2VfcmVsYXRpdmVfcGF0aCkKIAlvbGRmaWxlbmFtZSA9IHBzZXQuaW5wdXRmaWxlOwogCXBz ZXQuaW5wdXRmaWxlID0gZmlsZW5hbWU7CiAKKwlwZ19sb2dnaW5nX2NvbmZpZyhwc2V0Lmlu cHV0ZmlsZSA/IDAgOiBQR19MT0dfRkxBR19URVJTRSk7CisKIAlyZXN1bHQgPSBNYWluTG9v cChmZCk7CiAKIAlpZiAoZmQgIT0gc3RkaW4pCiAJCWZjbG9zZShmZCk7CiAKIAlwc2V0Lmlu cHV0ZmlsZSA9IG9sZGZpbGVuYW1lOworCisJcGdfbG9nZ2luZ19jb25maWcocHNldC5pbnB1 dGZpbGUgPyAwIDogUEdfTE9HX0ZMQUdfVEVSU0UpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0K IApAQCAtMzcyMSw3ICszNzI2LDcgQEAgZG9fcHNldChjb25zdCBjaGFyICpwYXJhbSwgY29u c3QgY2hhciAqdmFsdWUsIHByaW50UXVlcnlPcHQgKnBvcHQsIGJvb2wgcXVpZXQpCiAJCQkJ CQltYXRjaF9wb3MgPSBpOwogCQkJCQllbHNlCiAJCQkJCXsKLQkJCQkJCXBzcWxfZXJyb3Io IlxccHNldDogYW1iaWd1b3VzIGFiYnJldmlhdGlvbiBcIiVzXCIgbWF0Y2hlcyBib3RoIFwi JXNcIiBhbmQgXCIlc1wiXG4iLAorCQkJCQkJcGdfbG9nX2Vycm9yKCJcXHBzZXQ6IGFtYmln dW91cyBhYmJyZXZpYXRpb24gXCIlc1wiIG1hdGNoZXMgYm90aCBcIiVzXCIgYW5kIFwiJXNc IiIsCiAJCQkJCQkJCSAgIHZhbHVlLAogCQkJCQkJCQkgICBmb3JtYXRzW21hdGNoX3Bvc10u bmFtZSwgZm9ybWF0c1tpXS5uYW1lKTsKIAkJCQkJCXJldHVybiBmYWxzZTsKQEAgLTM3NDEs NyArMzc0Niw3IEBAIGRvX3BzZXQoY29uc3QgY2hhciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZh bHVlLCBwcmludFF1ZXJ5T3B0ICpwb3B0LCBib29sIHF1aWV0KQogCQkJfQogCQkJZWxzZQog CQkJewotCQkJCXBzcWxfZXJyb3IoIlxccHNldDogYWxsb3dlZCBmb3JtYXRzIGFyZSBhbGln bmVkLCBhc2NpaWRvYywgY3N2LCBodG1sLCBsYXRleCwgbGF0ZXgtbG9uZ3RhYmxlLCB0cm9m Zi1tcywgdW5hbGlnbmVkLCB3cmFwcGVkXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxccHNl dDogYWxsb3dlZCBmb3JtYXRzIGFyZSBhbGlnbmVkLCBhc2NpaWRvYywgY3N2LCBodG1sLCBs YXRleCwgbGF0ZXgtbG9uZ3RhYmxlLCB0cm9mZi1tcywgdW5hbGlnbmVkLCB3cmFwcGVkIik7 CiAJCQkJcmV0dXJuIGZhbHNlOwogCQkJfQogCQl9CkBAIC0zNzYwLDcgKzM3NjUsNyBAQCBk b19wc2V0KGNvbnN0IGNoYXIgKnBhcmFtLCBjb25zdCBjaGFyICp2YWx1ZSwgcHJpbnRRdWVy eU9wdCAqcG9wdCwgYm9vbCBxdWlldCkKIAkJCXBvcHQtPnRvcHQubGluZV9zdHlsZSA9ICZw Z191dGY4Zm9ybWF0OwogCQllbHNlCiAJCXsKLQkJCXBzcWxfZXJyb3IoIlxccHNldDogYWxs b3dlZCBsaW5lIHN0eWxlcyBhcmUgYXNjaWksIG9sZC1hc2NpaSwgdW5pY29kZVxuIik7CisJ CQlwZ19sb2dfZXJyb3IoIlxccHNldDogYWxsb3dlZCBsaW5lIHN0eWxlcyBhcmUgYXNjaWks IG9sZC1hc2NpaSwgdW5pY29kZSIpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAt Mzc3NSw3ICszNzgwLDcgQEAgZG9fcHNldChjb25zdCBjaGFyICpwYXJhbSwgY29uc3QgY2hh ciAqdmFsdWUsIHByaW50UXVlcnlPcHQgKnBvcHQsIGJvb2wgcXVpZXQpCiAJCQlyZWZyZXNo X3V0Zjhmb3JtYXQoJihwb3B0LT50b3B0KSk7CiAJCWVsc2UKIAkJewotCQkJcHNxbF9lcnJv cigiXFxwc2V0OiBhbGxvd2VkIFVuaWNvZGUgYm9yZGVyIGxpbmUgc3R5bGVzIGFyZSBzaW5n bGUsIGRvdWJsZVxuIik7CisJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogYWxsb3dlZCBVbmlj b2RlIGJvcmRlciBsaW5lIHN0eWxlcyBhcmUgc2luZ2xlLCBkb3VibGUiKTsKIAkJCXJldHVy biBmYWxzZTsKIAkJfQogCX0KQEAgLTM3OTAsNyArMzc5NSw3IEBAIGRvX3BzZXQoY29uc3Qg Y2hhciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBwcmludFF1ZXJ5T3B0ICpwb3B0LCBi b29sIHF1aWV0KQogCQkJcmVmcmVzaF91dGY4Zm9ybWF0KCYocG9wdC0+dG9wdCkpOwogCQll bHNlCiAJCXsKLQkJCXBzcWxfZXJyb3IoIlxccHNldDogYWxsb3dlZCBVbmljb2RlIGNvbHVt biBsaW5lIHN0eWxlcyBhcmUgc2luZ2xlLCBkb3VibGVcbiIpOworCQkJcGdfbG9nX2Vycm9y KCJcXHBzZXQ6IGFsbG93ZWQgVW5pY29kZSBjb2x1bW4gbGluZSBzdHlsZXMgYXJlIHNpbmds ZSwgZG91YmxlIik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9CkBAIC0zODA1LDcgKzM4 MTAsNyBAQCBkb19wc2V0KGNvbnN0IGNoYXIgKnBhcmFtLCBjb25zdCBjaGFyICp2YWx1ZSwg cHJpbnRRdWVyeU9wdCAqcG9wdCwgYm9vbCBxdWlldCkKIAkJCXJlZnJlc2hfdXRmOGZvcm1h dCgmKHBvcHQtPnRvcHQpKTsKIAkJZWxzZQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXHBzZXQ6 IGFsbG93ZWQgVW5pY29kZSBoZWFkZXIgbGluZSBzdHlsZXMgYXJlIHNpbmdsZSwgZG91Ymxl XG4iKTsKKwkJCXBnX2xvZ19lcnJvcigiXFxwc2V0OiBhbGxvd2VkIFVuaWNvZGUgaGVhZGVy IGxpbmUgc3R5bGVzIGFyZSBzaW5nbGUsIGRvdWJsZSIpOwogCQkJcmV0dXJuIGZhbHNlOwog CQl9CiAJfQpAQCAtMzg0OCwxMiArMzg1MywxMiBAQCBkb19wc2V0KGNvbnN0IGNoYXIgKnBh cmFtLCBjb25zdCBjaGFyICp2YWx1ZSwgcHJpbnRRdWVyeU9wdCAqcG9wdCwgYm9vbCBxdWll dCkKIAkJCS8qIENTViBzZXBhcmF0b3IgaGFzIHRvIGJlIGEgb25lLWJ5dGUgY2hhcmFjdGVy ICovCiAJCQlpZiAoc3RybGVuKHZhbHVlKSAhPSAxKQogCQkJewotCQkJCXBzcWxfZXJyb3Io IlxccHNldDogY3N2X2ZpZWxkc2VwIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFj dGVyXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogY3N2X2ZpZWxkc2VwIG11c3Qg YmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIik7CiAJCQkJcmV0dXJuIGZhbHNlOwog CQkJfQogCQkJaWYgKHZhbHVlWzBdID09ICciJyB8fCB2YWx1ZVswXSA9PSAnXG4nIHx8IHZh bHVlWzBdID09ICdccicpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiXFxwc2V0OiBjc3ZfZmll bGRzZXAgY2Fubm90IGJlIGEgZG91YmxlIHF1b3RlLCBhIG5ld2xpbmUsIG9yIGEgY2Fycmlh Z2UgcmV0dXJuXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogY3N2X2ZpZWxkc2Vw IGNhbm5vdCBiZSBhIGRvdWJsZSBxdW90ZSwgYSBuZXdsaW5lLCBvciBhIGNhcnJpYWdlIHJl dHVybiIpOwogCQkJCXJldHVybiBmYWxzZTsKIAkJCX0KIAkJCXBvcHQtPnRvcHQuY3N2Rmll bGRTZXBbMF0gPSB2YWx1ZVswXTsKQEAgLTM5OTAsNyArMzk5NSw3IEBAIGRvX3BzZXQoY29u c3QgY2hhciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBwcmludFF1ZXJ5T3B0ICpwb3B0 LCBib29sIHF1aWV0KQogCX0KIAllbHNlCiAJewotCQlwc3FsX2Vycm9yKCJcXHBzZXQ6IHVu a25vd24gb3B0aW9uOiAlc1xuIiwgcGFyYW0pOworCQlwZ19sb2dfZXJyb3IoIlxccHNldDog dW5rbm93biBvcHRpb246ICVzIiwgcGFyYW0pOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBA IC00MTc2LDcgKzQxODEsNyBAQCBwcmludFBzZXRJbmZvKGNvbnN0IGNoYXIgKnBhcmFtLCBz dHJ1Y3QgcHJpbnRRdWVyeU9wdCAqcG9wdCkKIAogCWVsc2UKIAl7Ci0JCXBzcWxfZXJyb3Io IlxccHNldDogdW5rbm93biBvcHRpb246ICVzXG4iLCBwYXJhbSk7CisJCXBnX2xvZ19lcnJv cigiXFxwc2V0OiB1bmtub3duIG9wdGlvbjogJXMiLCBwYXJhbSk7CiAJCXJldHVybiBmYWxz ZTsKIAl9CiAKQEAgLTQzMzIsNyArNDMzNyw3IEBAIGRvX3NoZWxsKGNvbnN0IGNoYXIgKmNv bW1hbmQpCiAKIAlpZiAocmVzdWx0ID09IDEyNyB8fCByZXN1bHQgPT0gLTEpCiAJewotCQlw c3FsX2Vycm9yKCJcXCE6IGZhaWxlZFxuIik7CisJCXBnX2xvZ19lcnJvcigiXFwhOiBmYWls ZWQiKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAlyZXR1cm4gdHJ1ZTsKQEAgLTQzNTcsNyAr NDM2Miw3IEBAIGRvX3dhdGNoKFBRRXhwQnVmZmVyIHF1ZXJ5X2J1ZiwgZG91YmxlIHNsZWVw KQogCiAJaWYgKCFxdWVyeV9idWYgfHwgcXVlcnlfYnVmLT5sZW4gPD0gMCkKIAl7Ci0JCXBz cWxfZXJyb3IoIlxcd2F0Y2ggY2Fubm90IGJlIHVzZWQgd2l0aCBhbiBlbXB0eSBxdWVyeVxu Iik7CisJCXBnX2xvZ19lcnJvcigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIGFuIGVt cHR5IHF1ZXJ5Iik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTQ2NTQsNyArNDY1OSw3 IEBAIGdldF9jcmVhdGVfb2JqZWN0X2NtZChFZGl0YWJsZU9iamVjdFR5cGUgb2JqX3R5cGUs IE9pZCBvaWQsCiAJCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoYnVmLCAiQ1JFQVRFIE9S IFJFUExBQ0UgVklFVyAiKTsKIAkJCQkJCQlicmVhazsKIAkJCQkJCWRlZmF1bHQ6Ci0JCQkJ CQkJcHNxbF9lcnJvcigiXCIlcy4lc1wiIGlzIG5vdCBhIHZpZXdcbiIsCisJCQkJCQkJcGdf bG9nX2Vycm9yKCJcIiVzLiVzXCIgaXMgbm90IGEgdmlldyIsCiAJCQkJCQkJCQkgICBuc3Bu YW1lLCByZWxuYW1lKTsKIAkJCQkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCQkJCQlicmVhazsK QEAgLTQ2NzAsNyArNDY3NSw3IEBAIGdldF9jcmVhdGVfb2JqZWN0X2NtZChFZGl0YWJsZU9i amVjdFR5cGUgb2JqX3R5cGUsIE9pZCBvaWQsCiAJCQkJCQkJCQkJCQkgICBwc2V0LmVuY29k aW5nLAogCQkJCQkJCQkJCQkJICAgc3RhbmRhcmRfc3RyaW5ncygpKSkKIAkJCQkJCXsKLQkJ CQkJCQlwc3FsX2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgcmVsb3B0aW9ucyBhcnJheVxuIik7 CisJCQkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgcmVsb3B0aW9ucyBhcnJh eSIpOwogCQkJCQkJCXJlc3VsdCA9IGZhbHNlOwogCQkJCQkJfQogCQkJCQkJYXBwZW5kUFFF eHBCdWZmZXJDaGFyKGJ1ZiwgJyknKTsKQEAgLTQ3NTksNyArNDc2NCw3IEBAIHN0cmlwX2xp bmVub19mcm9tX29iamRlc2MoY2hhciAqb2JqKQogCWxpbmVubyA9IGF0b2koYyk7CiAJaWYg KGxpbmVubyA8IDEpCiAJewotCQlwc3FsX2Vycm9yKCJpbnZhbGlkIGxpbmUgbnVtYmVyOiAl c1xuIiwgYyk7CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBsaW5lIG51bWJlcjogJXMiLCBj KTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC00ODYxLDcgKzQ4NjYsNyBAQCBtaW5pbWFsX2Vy cm9yX21lc3NhZ2UoUEdyZXN1bHQgKnJlcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIobXNn LCAiKG5vdCBhdmFpbGFibGUpIik7CiAJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKG1zZywgJ1xu Jyk7CiAKLQlwc3FsX2Vycm9yKCIlcyIsIG1zZy0+ZGF0YSk7CisJcGdfbG9nX2Vycm9yKCIl cyIsIG1zZy0+ZGF0YSk7CiAKIAlkZXN0cm95UFFFeHBCdWZmZXIobXNnKTsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwpp bmRleCBiMTFkN2FjNmNlLi42ZGYxN2QzNjc4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv Y29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCkBAIC0xOSw2ICsxOSw3IEBA CiAjaW5jbHVkZSA8d2luMzIuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9n Z2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUg InBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIKIApAQCAtNjcsNyArNjgsNyBAQCBvcGVuUXVl cnlPdXRwdXRGaWxlKGNvbnN0IGNoYXIgKmZuYW1lLCBGSUxFICoqZm91dCwgYm9vbCAqaXNf cGlwZSkKIAogCWlmICgqZm91dCA9PSBOVUxMKQogCXsKLQkJcHNxbF9lcnJvcigiJXM6ICVz XG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCIlczogJW0i LCBmbmFtZSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTE1Niw3ICsxNTcsNyBAQCBw c3FsX2dldF92YXJpYWJsZShjb25zdCBjaGFyICp2YXJuYW1lLCBQc3FsU2NhblF1b3RlVHlw ZSBxdW90ZSwKIAogCQkJCWlmICghcHNldC5kYikKIAkJCQl7Ci0JCQkJCXBzcWxfZXJyb3Io ImNhbm5vdCBlc2NhcGUgd2l0aG91dCBhY3RpdmUgY29ubmVjdGlvblxuIik7CisJCQkJCXBn X2xvZ19lcnJvcigiY2Fubm90IGVzY2FwZSB3aXRob3V0IGFjdGl2ZSBjb25uZWN0aW9uIik7 CiAJCQkJCXJldHVybiBOVUxMOwogCQkJCX0KIApAQCAtMTcxLDcgKzE3Miw3IEBAIHBzcWxf Z2V0X3ZhcmlhYmxlKGNvbnN0IGNoYXIgKnZhcm5hbWUsIFBzcWxTY2FuUXVvdGVUeXBlIHF1 b3RlLAogCQkJCXsKIAkJCQkJY29uc3QgY2hhciAqZXJyb3IgPSBQUWVycm9yTWVzc2FnZShw c2V0LmRiKTsKIAotCQkJCQlwc3FsX2Vycm9yKCIlcyIsIGVycm9yKTsKKwkJCQkJcGdfbG9n X2Vycm9yKCIlcyIsIGVycm9yKTsKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCkBAIC0x OTcsNyArMTk4LDcgQEAgcHNxbF9nZXRfdmFyaWFibGUoY29uc3QgY2hhciAqdmFybmFtZSwg UHNxbFNjYW5RdW90ZVR5cGUgcXVvdGUsCiAJCQkJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwog CQkJCWlmICghYXBwZW5kU2hlbGxTdHJpbmdOb0Vycm9yKCZidWYsIHZhbHVlKSkKIAkJCQl7 Ci0JCQkJCXBzcWxfZXJyb3IoInNoZWxsIGNvbW1hbmQgYXJndW1lbnQgY29udGFpbnMgYSBu ZXdsaW5lIG9yIGNhcnJpYWdlIHJldHVybjogXCIlc1wiXG4iLAorCQkJCQlwZ19sb2dfZXJy b3IoInNoZWxsIGNvbW1hbmQgYXJndW1lbnQgY29udGFpbnMgYSBuZXdsaW5lIG9yIGNhcnJp YWdlIHJldHVybjogXCIlc1wiIiwKIAkJCQkJCQkgICB2YWx1ZSk7CiAJCQkJCWZyZWUoYnVm LmRhdGEpOwogCQkJCQlyZXR1cm4gTlVMTDsKQEAgLTIxMywyOCArMjE0LDYgQEAgcHNxbF9n ZXRfdmFyaWFibGUoY29uc3QgY2hhciAqdmFybmFtZSwgUHNxbFNjYW5RdW90ZVR5cGUgcXVv dGUsCiB9CiAKIAotLyoKLSAqIEVycm9yIHJlcG9ydGluZyBmb3Igc2NyaXB0cy4gRXJyb3Jz IHNob3VsZCBsb29rIGxpa2UKLSAqCSBwc3FsOmZpbGVuYW1lOmxpbmVubzogbWVzc2FnZQot ICovCi12b2lkCi1wc3FsX2Vycm9yKGNvbnN0IGNoYXIgKmZtdCwuLi4pCi17Ci0JdmFfbGlz dAkJYXA7Ci0KLQlmZmx1c2goc3Rkb3V0KTsKLQlpZiAocHNldC5xdWVyeUZvdXQgJiYgcHNl dC5xdWVyeUZvdXQgIT0gc3Rkb3V0KQotCQlmZmx1c2gocHNldC5xdWVyeUZvdXQpOwotCi0J aWYgKHBzZXQuaW5wdXRmaWxlKQotCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiVzOiIgVUlOVDY0 X0ZPUk1BVCAiOiAiLCBwc2V0LnByb2duYW1lLCBwc2V0LmlucHV0ZmlsZSwgcHNldC5saW5l bm8pOwotCXZhX3N0YXJ0KGFwLCBmbXQpOwotCXZmcHJpbnRmKHN0ZGVyciwgXyhmbXQpLCBh cCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQotCi0KIC8qCiAgKiBmb3IgYmFja2VuZCBOb3RpY2Ug bWVzc2FnZXMgKElORk8sIFdBUk5JTkcsIGV0YykKICAqLwpAQCAtMjQyLDcgKzIyMSw3IEBA IHZvaWQKIE5vdGljZVByb2Nlc3Nvcih2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1lc3NhZ2Up CiB7CiAJKHZvaWQpIGFyZzsJCQkJCS8qIG5vdCB1c2VkICovCi0JcHNxbF9lcnJvcigiJXMi LCBtZXNzYWdlKTsKKwlwZ19sb2dfaW5mbygiJXMiLCBtZXNzYWdlKTsKIH0KIAogCkBAIC00 MTMsMjMgKzM5MiwyMyBAQCBDaGVja0Nvbm5lY3Rpb24odm9pZCkKIAl7CiAJCWlmICghcHNl dC5jdXJfY21kX2ludGVyYWN0aXZlKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJjb25uZWN0aW9u IHRvIHNlcnZlciB3YXMgbG9zdFxuIik7CisJCQlwZ19sb2dfZmF0YWwoImNvbm5lY3Rpb24g dG8gc2VydmVyIHdhcyBsb3N0Iik7CiAJCQlleGl0KEVYSVRfQkFEQ09OTik7CiAJCX0KIAot CQlwc3FsX2Vycm9yKCJUaGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIHdhcyBsb3N0LiBB dHRlbXB0aW5nIHJlc2V0OiAiKTsKKwkJZnByaW50ZihzdGRlcnIsIF8oIlRoZSBjb25uZWN0 aW9uIHRvIHRoZSBzZXJ2ZXIgd2FzIGxvc3QuIEF0dGVtcHRpbmcgcmVzZXQ6ICIpKTsKIAkJ UFFyZXNldChwc2V0LmRiKTsKIAkJT0sgPSBDb25uZWN0aW9uVXAoKTsKIAkJaWYgKCFPSykK IAkJewotCQkJcHNxbF9lcnJvcigiRmFpbGVkLlxuIik7CisJCQlmcHJpbnRmKHN0ZGVyciwg XygiRmFpbGVkLlxuIikpOwogCQkJUFFmaW5pc2gocHNldC5kYik7CiAJCQlwc2V0LmRiID0g TlVMTDsKIAkJCVJlc2V0Q2FuY2VsQ29ubigpOwogCQkJVW5zeW5jVmFyaWFibGVzKCk7CiAJ CX0KIAkJZWxzZQotCQkJcHNxbF9lcnJvcigiU3VjY2VlZGVkLlxuIik7CisJCQlmcHJpbnRm KHN0ZGVyciwgXygiU3VjY2VlZGVkLlxuIikpOwogCX0KIAogCXJldHVybiBPSzsKQEAgLTUy OSw3ICs1MDgsNyBAQCBBY2NlcHRSZXN1bHQoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCkKIAog CQkJZGVmYXVsdDoKIAkJCQlPSyA9IGZhbHNlOwotCQkJCXBzcWxfZXJyb3IoInVuZXhwZWN0 ZWQgUFFyZXN1bHRTdGF0dXM6ICVkXG4iLAorCQkJCXBnX2xvZ19lcnJvcigidW5leHBlY3Rl ZCBQUXJlc3VsdFN0YXR1czogJWQiLAogCQkJCQkJICAgUFFyZXN1bHRTdGF0dXMocmVzdWx0 KSk7CiAJCQkJYnJlYWs7CiAJCX0KQEAgLTUzOSw3ICs1MTgsNyBAQCBBY2NlcHRSZXN1bHQo Y29uc3QgUEdyZXN1bHQgKnJlc3VsdCkKIAkJY29uc3QgY2hhciAqZXJyb3IgPSBQUWVycm9y TWVzc2FnZShwc2V0LmRiKTsKIAogCQlpZiAoc3RybGVuKGVycm9yKSkKLQkJCXBzcWxfZXJy b3IoIiVzIiwgZXJyb3IpOworCQkJcGdfbG9nX2Vycm9yKCIlcyIsIGVycm9yKTsKIAogCQlD aGVja0Nvbm5lY3Rpb24oKTsKIAl9CkBAIC02OTMsNyArNjcyLDcgQEAgUFNRTGV4ZWMoY29u c3QgY2hhciAqcXVlcnkpCiAKIAlpZiAoIXBzZXQuZGIpCiAJewotCQlwc3FsX2Vycm9yKCJZ b3UgYXJlIGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuXG4iKTsKKwkJ cGdfbG9nX2Vycm9yKCJZb3UgYXJlIGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0 YWJhc2UuIik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtNzUxLDcgKzczMCw3IEBAIFBT UUxleGVjV2F0Y2goY29uc3QgY2hhciAqcXVlcnksIGNvbnN0IHByaW50UXVlcnlPcHQgKm9w dCkKIAogCWlmICghcHNldC5kYikKIAl7Ci0JCXBzcWxfZXJyb3IoIllvdSBhcmUgY3VycmVu dGx5IG5vdCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS5cbiIpOworCQlwZ19sb2dfZXJyb3Io IllvdSBhcmUgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS4iKTsKIAkJ cmV0dXJuIDA7CiAJfQogCkBAIC03OTksMTkgKzc3OCwxOSBAQCBQU1FMZXhlY1dhdGNoKGNv bnN0IGNoYXIgKnF1ZXJ5LCBjb25zdCBwcmludFF1ZXJ5T3B0ICpvcHQpCiAJCQlicmVhazsK IAogCQljYXNlIFBHUkVTX0VNUFRZX1FVRVJZOgotCQkJcHNxbF9lcnJvcigiXFx3YXRjaCBj YW5ub3QgYmUgdXNlZCB3aXRoIGFuIGVtcHR5IHF1ZXJ5XG4iKTsKKwkJCXBnX2xvZ19lcnJv cigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIGFuIGVtcHR5IHF1ZXJ5Iik7CiAJCQlQ UWNsZWFyKHJlcyk7CiAJCQlyZXR1cm4gLTE7CiAKIAkJY2FzZSBQR1JFU19DT1BZX09VVDoK IAkJY2FzZSBQR1JFU19DT1BZX0lOOgogCQljYXNlIFBHUkVTX0NPUFlfQk9USDoKLQkJCXBz cWxfZXJyb3IoIlxcd2F0Y2ggY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZXG4iKTsKKwkJCXBn X2xvZ19lcnJvcigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkiKTsKIAkJCVBR Y2xlYXIocmVzKTsKIAkJCXJldHVybiAtMTsKIAogCQlkZWZhdWx0OgotCQkJcHNxbF9lcnJv cigidW5leHBlY3RlZCByZXN1bHQgc3RhdHVzIGZvciBcXHdhdGNoXG4iKTsKKwkJCXBnX2xv Z19lcnJvcigidW5leHBlY3RlZCByZXN1bHQgc3RhdHVzIGZvciBcXHdhdGNoIik7CiAJCQlQ UWNsZWFyKHJlcyk7CiAJCQlyZXR1cm4gLTE7CiAJfQpAQCAtOTA3LDEyICs4ODYsMTIgQEAg U3RvcmVRdWVyeVR1cGxlKGNvbnN0IFBHcmVzdWx0ICpyZXN1bHQpCiAKIAlpZiAoUFFudHVw bGVzKHJlc3VsdCkgPCAxKQogCXsKLQkJcHNxbF9lcnJvcigibm8gcm93cyByZXR1cm5lZCBm b3IgXFxnc2V0XG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJubyByb3dzIHJldHVybmVkIGZvciBc XGdzZXQiKTsKIAkJc3VjY2VzcyA9IGZhbHNlOwogCX0KIAllbHNlIGlmIChQUW50dXBsZXMo cmVzdWx0KSA+IDEpCiAJewotCQlwc3FsX2Vycm9yKCJtb3JlIHRoYW4gb25lIHJvdyByZXR1 cm5lZCBmb3IgXFxnc2V0XG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJtb3JlIHRoYW4gb25lIHJv dyByZXR1cm5lZCBmb3IgXFxnc2V0Iik7CiAJCXN1Y2Nlc3MgPSBmYWxzZTsKIAl9CiAJZWxz ZQpAQCAtMTA4MSw3ICsxMDYwLDcgQEAgUHJvY2Vzc1Jlc3VsdChQR3Jlc3VsdCAqKnJlc3Vs dHMpCiAJCQlkZWZhdWx0OgogCQkJCS8qIEFjY2VwdFJlc3VsdCgpIHNob3VsZCBoYXZlIGNh dWdodCBhbnl0aGluZyBlbHNlLiAqLwogCQkJCWlzX2NvcHkgPSBmYWxzZTsKLQkJCQlwc3Fs X2Vycm9yKCJ1bmV4cGVjdGVkIFBRcmVzdWx0U3RhdHVzOiAlZFxuIiwgcmVzdWx0X3N0YXR1 cyk7CisJCQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIFBRcmVzdWx0U3RhdHVzOiAlZCIs IHJlc3VsdF9zdGF0dXMpOwogCQkJCWJyZWFrOwogCQl9CiAKQEAgLTEyNTUsNyArMTIzNCw3 IEBAIFByaW50UXVlcnlSZXN1bHRzKFBHcmVzdWx0ICpyZXN1bHRzKQogCiAJCWRlZmF1bHQ6 CiAJCQlzdWNjZXNzID0gZmFsc2U7Ci0JCQlwc3FsX2Vycm9yKCJ1bmV4cGVjdGVkIFBRcmVz dWx0U3RhdHVzOiAlZFxuIiwKKwkJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCBQUXJlc3Vs dFN0YXR1czogJWQiLAogCQkJCQkgICBQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSk7CiAJCQli cmVhazsKIAl9CkBAIC0xMjkxLDcgKzEyNzAsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAq cXVlcnkpCiAKIAlpZiAoIXBzZXQuZGIpCiAJewotCQlwc3FsX2Vycm9yKCJZb3UgYXJlIGN1 cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuXG4iKTsKKwkJcGdfbG9nX2Vy cm9yKCJZb3UgYXJlIGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuIik7 CiAJCWdvdG8gc2VuZHF1ZXJ5X2NsZWFudXA7CiAJfQogCkBAIC0xMzM3LDcgKzEzMTYsNyBA QCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpCiAJCXJlc3VsdHMgPSBQUWV4ZWMocHNl dC5kYiwgIkJFR0lOIik7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSAhPSBQR1JF U19DT01NQU5EX09LKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdl KHBzZXQuZGIpKTsKKwkJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShwc2V0 LmRiKSk7CiAJCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHRzKTsKIAkJCVJlc2V0Q2FuY2Vs Q29ubigpOwogCQkJZ290byBzZW5kcXVlcnlfY2xlYW51cDsKQEAgLTEzNTUsNyArMTMzNCw3 IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkKIAkJewogCQkJY2hhcgkJc3ZlcmJ1 ZlszMl07CiAKLQkJCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMg bm90IHN1cHBvcnQgc2F2ZXBvaW50cyBmb3IgT05fRVJST1JfUk9MTEJBQ0suXG4iLAorCQkJ cGdfbG9nX3dhcm5pbmcoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBv cnQgc2F2ZXBvaW50cyBmb3IgT05fRVJST1JfUk9MTEJBQ0suIiwKIAkJCQkJICAgZm9ybWF0 UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCQkgc3Zl cmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCQlvbl9lcnJvcl9yb2xsYmFja193YXJuaW5n ID0gdHJ1ZTsKQEAgLTEzNjUsNyArMTM0NCw3IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpx dWVyeSkKIAkJCXJlc3VsdHMgPSBQUWV4ZWMocHNldC5kYiwgIlNBVkVQT0lOVCBwZ19wc3Fs X3RlbXBvcmFyeV9zYXZlcG9pbnQiKTsKIAkJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHRz KSAhPSBQR1JFU19DT01NQU5EX09LKQogCQkJewotCQkJCXBzcWxfZXJyb3IoIiVzIiwgUFFl cnJvck1lc3NhZ2UocHNldC5kYikpOworCQkJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9y TWVzc2FnZShwc2V0LmRiKSk7CiAJCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0cyk7CiAJ CQkJUmVzZXRDYW5jZWxDb25uKCk7CiAJCQkJZ290byBzZW5kcXVlcnlfY2xlYW51cDsKQEAg LTE0MTgsNyArMTM5Nyw3IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkKIAl9CiAK IAlpZiAoIU9LICYmIHBzZXQuZWNobyA9PSBQU1FMX0VDSE9fRVJST1JTKQotCQlwc3FsX2Vy cm9yKCJTVEFURU1FTlQ6ICAlc1xuIiwgcXVlcnkpOworCQlwZ19sb2dfaW5mbygiU1RBVEVN RU5UOiAgJXMiLCBxdWVyeSk7CiAKIAkvKiBJZiB3ZSBtYWRlIGEgdGVtcG9yYXJ5IHNhdmVw b2ludCwgcG9zc2libHkgcmVsZWFzZS9yb2xsYmFjayAqLwogCWlmIChvbl9lcnJvcl9yb2xs YmFja19zYXZlcG9pbnQpCkBAIC0xNDYxLDcgKzE0NDAsNyBAQCBTZW5kUXVlcnkoY29uc3Qg Y2hhciAqcXVlcnkpCiAJCQkJT0sgPSBmYWxzZTsKIAkJCQkvKiBQUVRSQU5TX1VOS05PV04g aXMgZXhwZWN0ZWQgZ2l2ZW4gYSBicm9rZW4gY29ubmVjdGlvbi4gKi8KIAkJCQlpZiAodHJh bnNhY3Rpb25fc3RhdHVzICE9IFBRVFJBTlNfVU5LTk9XTiB8fCBDb25uZWN0aW9uVXAoKSkK LQkJCQkJcHNxbF9lcnJvcigidW5leHBlY3RlZCB0cmFuc2FjdGlvbiBzdGF0dXMgKCVkKVxu IiwKKwkJCQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIHRyYW5zYWN0aW9uIHN0YXR1cyAo JWQpIiwKIAkJCQkJCQkgICB0cmFuc2FjdGlvbl9zdGF0dXMpOwogCQkJCWJyZWFrOwogCQl9 CkBAIC0xNDczLDcgKzE0NTIsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpCiAJ CQlzdnB0cmVzID0gUFFleGVjKHBzZXQuZGIsIHN2cHRjbWQpOwogCQkJaWYgKFBRcmVzdWx0 U3RhdHVzKHN2cHRyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJCQl7Ci0JCQkJcHNxbF9l cnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7CisJCQkJcGdfbG9nX2Vycm9y KCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKIAkJCQlDbGVhck9yU2F2ZVJlc3Vs dChzdnB0cmVzKTsKIAkJCQlPSyA9IGZhbHNlOwogCkBAIC0xNTc2LDcgKzE1NTUsNyBAQCBE ZXNjcmliZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykK IAlyZXN1bHRzID0gUFFwcmVwYXJlKHBzZXQuZGIsICIiLCBxdWVyeSwgMCwgTlVMTCk7CiAJ aWYgKFBRcmVzdWx0U3RhdHVzKHJlc3VsdHMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJewot CQlwc3FsX2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKKwkJcGdfbG9n X2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKIAkJU2V0UmVzdWx0VmFy aWFibGVzKHJlc3VsdHMsIGZhbHNlKTsKIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0cyk7 CiAJCXJldHVybiBmYWxzZTsKQEAgLTE2MTQsNyArMTU5Myw3IEBAIERlc2NyaWJlUXVlcnko Y29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQogCiAJCQkJaWYgKGVz Y25hbWUgPT0gTlVMTCkKIAkJCQl7Ci0JCQkJCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1l c3NhZ2UocHNldC5kYikpOworCQkJCQlwZ19sb2dfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3Nh Z2UocHNldC5kYikpOwogCQkJCQlQUWNsZWFyKHJlc3VsdHMpOwogCQkJCQl0ZXJtUFFFeHBC dWZmZXIoJmJ1Zik7CiAJCQkJCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHNxbC9jb21tb24uaCBiL3NyYy9iaW4vcHNxbC9jb21tb24uaAppbmRleCAxZjJhNGJmMWFl Li40NzM5YjhlZTMzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9uLmgKKysrIGIv c3JjL2Jpbi9wc3FsL2NvbW1vbi5oCkBAIC0yMCw4ICsyMCw2IEBAIGV4dGVybiBib29sIHNl dFFGb3V0KGNvbnN0IGNoYXIgKmZuYW1lKTsKIGV4dGVybiBjaGFyICpwc3FsX2dldF92YXJp YWJsZShjb25zdCBjaGFyICp2YXJuYW1lLCBQc3FsU2NhblF1b3RlVHlwZSBxdW90ZSwKIAkJ CQkgIHZvaWQgKnBhc3N0aHJvdWdoKTsKIAotZXh0ZXJuIHZvaWQgcHNxbF9lcnJvcihjb25z dCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDEsIDIpOwotCiBleHRlcm4g dm9pZCBOb3RpY2VQcm9jZXNzb3Iodm9pZCAqYXJnLCBjb25zdCBjaGFyICptZXNzYWdlKTsK IAogZXh0ZXJuIHZvbGF0aWxlIGJvb2wgc2lnaW50X2ludGVycnVwdF9lbmFibGVkOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvcHkuYyBiL3NyYy9iaW4vcHNxbC9jb3B5LmMKaW5k ZXggMDJjODUxMTlmZS4uOGY1NGY0OTZmYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Nv cHkuYworKysgYi9zcmMvYmluL3BzcWwvY29weS5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5j bHVkZSAicHJvbXB0LmgiCiAjaW5jbHVkZSAic3RyaW5ndXRpbHMuaCIKIAorI2luY2x1ZGUg ImZlX3V0aWxzL2xvZ2dpbmcuaCIKIAogLyoKICAqIHBhcnNlX3NsYXNoX2NvcHkKQEAgLTk2 LDcgKzk3LDcgQEAgcGFyc2Vfc2xhc2hfY29weShjb25zdCBjaGFyICphcmdzKQogCiAJaWYg KCFhcmdzKQogCXsKLQkJcHNxbF9lcnJvcigiXFxjb3B5OiBhcmd1bWVudHMgcmVxdWlyZWRc biIpOworCQlwZ19sb2dfZXJyb3IoIlxcY29weTogYXJndW1lbnRzIHJlcXVpcmVkIik7CiAJ CXJldHVybiBOVUxMOwogCX0KIApAQCAtMjUxLDkgKzI1Miw5IEBAIHBhcnNlX3NsYXNoX2Nv cHkoY29uc3QgY2hhciAqYXJncykKIAogZXJyb3I6CiAJaWYgKHRva2VuKQotCQlwc3FsX2Vy cm9yKCJcXGNvcHk6IHBhcnNlIGVycm9yIGF0IFwiJXNcIlxuIiwgdG9rZW4pOworCQlwZ19s b2dfZXJyb3IoIlxcY29weTogcGFyc2UgZXJyb3IgYXQgXCIlc1wiIiwgdG9rZW4pOwogCWVs c2UKLQkJcHNxbF9lcnJvcigiXFxjb3B5OiBwYXJzZSBlcnJvciBhdCBlbmQgb2YgbGluZVxu Iik7CisJCXBnX2xvZ19lcnJvcigiXFxjb3B5OiBwYXJzZSBlcnJvciBhdCBlbmQgb2YgbGlu ZSIpOwogCWZyZWVfY29weV9vcHRpb25zKHJlc3VsdCk7CiAKIAlyZXR1cm4gTlVMTDsKQEAg LTMyNiwxMSArMzI3LDExIEBAIGRvX2NvcHkoY29uc3QgY2hhciAqYXJncykKIAlpZiAoIWNv cHlzdHJlYW0pCiAJewogCQlpZiAob3B0aW9ucy0+cHJvZ3JhbSkKLQkJCXBzcWxfZXJyb3Io ImNvdWxkIG5vdCBleGVjdXRlIGNvbW1hbmQgXCIlc1wiOiAlc1xuIiwKLQkJCQkJICAgb3B0 aW9ucy0+ZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IGV4ZWN1dGUgY29tbWFuZCBcIiVzXCI6ICVtIiwKKwkJCQkJCSBvcHRpb25zLT5maWxl KTsKIAkJZWxzZQotCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLAotCQkJCQkgICBvcHRpb25z LT5maWxlLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLAor CQkJCQkJIG9wdGlvbnMtPmZpbGUpOwogCQlmcmVlX2NvcHlfb3B0aW9ucyhvcHRpb25zKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KQEAgLTM0MiwxMiArMzQzLDEyIEBAIGRvX2NvcHkoY29u c3QgY2hhciAqYXJncykKIAogCQkvKiBtYWtlIHN1cmUgdGhlIHNwZWNpZmllZCBmaWxlIGlz IG5vdCBhIGRpcmVjdG9yeSAqLwogCQlpZiAoKHJlc3VsdCA9IGZzdGF0KGZpbGVubyhjb3B5 c3RyZWFtKSwgJnN0KSkgPCAwKQotCQkJcHNxbF9lcnJvcigiY291bGQgbm90IHN0YXQgZmls ZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgICBvcHRpb25zLT5maWxlLCBzdHJlcnJvcihlcnJu bykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0i LAorCQkJCQkJIG9wdGlvbnMtPmZpbGUpOwogCiAJCWlmIChyZXN1bHQgPT0gMCAmJiBTX0lT RElSKHN0LnN0X21vZGUpKQotCQkJcHNxbF9lcnJvcigiJXM6IGNhbm5vdCBjb3B5IGZyb20v dG8gYSBkaXJlY3RvcnlcbiIsCi0JCQkJCSAgIG9wdGlvbnMtPmZpbGUpOworCQkJcGdfbG9n X2Vycm9yKCIlczogY2Fubm90IGNvcHkgZnJvbS90byBhIGRpcmVjdG9yeSIsCisJCQkJCQkg b3B0aW9ucy0+ZmlsZSk7CiAKIAkJaWYgKHJlc3VsdCA8IDAgfHwgU19JU0RJUihzdC5zdF9t b2RlKSkKIAkJewpAQCAtMzgzLDEzICszODQsMTIgQEAgZG9fY29weShjb25zdCBjaGFyICph cmdzKQogCQkJaWYgKHBjbG9zZV9yYyAhPSAwKQogCQkJewogCQkJCWlmIChwY2xvc2VfcmMg PCAwKQotCQkJCQlwc3FsX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgcGlwZSB0byBleHRlcm5h bCBjb21tYW5kOiAlc1xuIiwKLQkJCQkJCQkgICBzdHJlcnJvcihlcnJubykpOworCQkJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBwaXBlIHRvIGV4dGVybmFsIGNvbW1hbmQ6 ICVtIik7CiAJCQkJZWxzZQogCQkJCXsKIAkJCQkJY2hhcgkgICAqcmVhc29uID0gd2FpdF9y ZXN1bHRfdG9fc3RyKHBjbG9zZV9yYyk7CiAKLQkJCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4i LCBvcHRpb25zLT5maWxlLAorCQkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlcyIsIG9wdGlvbnMt PmZpbGUsCiAJCQkJCQkJICAgcmVhc29uID8gcmVhc29uIDogIiIpOwogCQkJCQlpZiAocmVh c29uKQogCQkJCQkJZnJlZShyZWFzb24pOwpAQCAtNDAyLDcgKzQwMiw3IEBAIGRvX2NvcHko Y29uc3QgY2hhciAqYXJncykKIAkJewogCQkJaWYgKGZjbG9zZShjb3B5c3RyZWFtKSAhPSAw KQogCQkJewotCQkJCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgb3B0aW9ucy0+ZmlsZSwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIG9wdGlvbnMtPmZp bGUpOwogCQkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KIAkJfQpAQCAtNDQ5LDggKzQ0OSw3 IEBAIGhhbmRsZUNvcHlPdXQoUEdjb25uICpjb25uLCBGSUxFICpjb3B5c3RyZWFtLCBQR3Jl c3VsdCAqKnJlcykKIAkJewogCQkJaWYgKE9LICYmIGZ3cml0ZShidWYsIDEsIHJldCwgY29w eXN0cmVhbSkgIT0gcmV0KQogCQkJewotCQkJCXBzcWxfZXJyb3IoImNvdWxkIG5vdCB3cml0 ZSBDT1BZIGRhdGE6ICVzXG4iLAotCQkJCQkJICAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSBDT1BZIGRhdGE6ICVtIik7CiAJCQkJLyog Y29tcGxhaW4gb25seSBvbmNlLCBrZWVwIHJlYWRpbmcgZGF0YSBmcm9tIHNlcnZlciAqLwog CQkJCU9LID0gZmFsc2U7CiAJCQl9CkBAIC00NjAsMTQgKzQ1OSwxMyBAQCBoYW5kbGVDb3B5 T3V0KFBHY29ubiAqY29ubiwgRklMRSAqY29weXN0cmVhbSwgUEdyZXN1bHQgKipyZXMpCiAK IAlpZiAoT0sgJiYgZmZsdXNoKGNvcHlzdHJlYW0pKQogCXsKLQkJcHNxbF9lcnJvcigiY291 bGQgbm90IHdyaXRlIENPUFkgZGF0YTogJXNcbiIsCi0JCQkJICAgc3RyZXJyb3IoZXJybm8p KTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgQ09QWSBkYXRhOiAlbSIpOwog CQlPSyA9IGZhbHNlOwogCX0KIAogCWlmIChyZXQgPT0gLTIpCiAJewotCQlwc3FsX2Vycm9y KCJDT1BZIGRhdGEgdHJhbnNmZXIgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4p KTsKKwkJcGdfbG9nX2Vycm9yKCJDT1BZIGRhdGEgdHJhbnNmZXIgZmFpbGVkOiAlcyIsIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJT0sgPSBmYWxzZTsKIAl9CiAKQEAgLTQ4Niw3ICs0 ODQsNyBAQCBoYW5kbGVDb3B5T3V0KFBHY29ubiAqY29ubiwgRklMRSAqY29weXN0cmVhbSwg UEdyZXN1bHQgKipyZXMpCiAJKnJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pOwogCWlmIChQUXJl c3VsdFN0YXR1cygqcmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJcHNxbF9lcnJv cigiJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiJXMiLCBQ UWVycm9yTWVzc2FnZShjb25uKSk7CiAJCU9LID0gZmFsc2U7CiAJfQogCkBAIC03MDUsNyAr NzAzLDcgQEAgaGFuZGxlQ29weUluKFBHY29ubiAqY29ubiwgRklMRSAqY29weXN0cmVhbSwg Ym9vbCBpc2JpbmFyeSwgUEdyZXN1bHQgKipyZXMpCiAJfQogCWlmIChQUXJlc3VsdFN0YXR1 cygqcmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJcHNxbF9lcnJvcigiJXMiLCBQ UWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9yTWVz c2FnZShjb25uKSk7CiAJCU9LID0gZmFsc2U7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvY3Jvc3N0YWJ2aWV3LmMgYi9zcmMvYmluL3BzcWwvY3Jvc3N0YWJ2aWV3LmMKaW5k ZXggZmI3N2NlNzAzMy4uNmFmZDNlMDkzOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Ny b3NzdGFidmlldy5jCisrKyBiL3NyYy9iaW4vcHNxbC9jcm9zc3RhYnZpZXcuYwpAQCAtMTMs NiArMTMsNyBAQAogI2luY2x1ZGUgInBzcWxzY2Fuc2xhc2guaCIKICNpbmNsdWRlICJzZXR0 aW5ncy5oIgogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogCiAvKgogICogVmFs dWUvcG9zaXRpb24gZnJvbSB0aGUgcmVzdWx0c2V0IHRoYXQgZ29lcyBpbnRvIHRoZSBob3Jp em9udGFsIG9yIHZlcnRpY2FsCkBAIC0xMjAsMTMgKzEyMSwxMyBAQCBQcmludFJlc3VsdHNJ bkNyb3NzdGFiKGNvbnN0IFBHcmVzdWx0ICpyZXMpCiAKIAlpZiAoUFFyZXN1bHRTdGF0dXMo cmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewotCQlwc3FsX2Vycm9yKCJcXGNyb3NzdGFi dmlldzogc3RhdGVtZW50IGRpZCBub3QgcmV0dXJuIGEgcmVzdWx0IHNldFxuIik7CisJCXBn X2xvZ19lcnJvcigiXFxjcm9zc3RhYnZpZXc6IHN0YXRlbWVudCBkaWQgbm90IHJldHVybiBh IHJlc3VsdCBzZXQiKTsKIAkJZ290byBlcnJvcl9yZXR1cm47CiAJfQogCiAJaWYgKFBRbmZp ZWxkcyhyZXMpIDwgMykKIAl7Ci0JCXBzcWxfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBxdWVy eSBtdXN0IHJldHVybiBhdCBsZWFzdCB0aHJlZSBjb2x1bW5zXG4iKTsKKwkJcGdfbG9nX2Vy cm9yKCJcXGNyb3NzdGFidmlldzogcXVlcnkgbXVzdCByZXR1cm4gYXQgbGVhc3QgdGhyZWUg Y29sdW1ucyIpOwogCQlnb3RvIGVycm9yX3JldHVybjsKIAl9CiAKQEAgLTE1Myw3ICsxNTQs NyBAQCBQcmludFJlc3VsdHNJbkNyb3NzdGFiKGNvbnN0IFBHcmVzdWx0ICpyZXMpCiAJLyog SW5zaXN0IHRoYXQgaGVhZGVyIGNvbHVtbnMgYmUgZGlzdGluY3QgKi8KIAlpZiAoZmllbGRf Zm9yX2NvbHVtbnMgPT0gZmllbGRfZm9yX3Jvd3MpCiAJewotCQlwc3FsX2Vycm9yKCJcXGNy b3NzdGFidmlldzogdmVydGljYWwgYW5kIGhvcml6b250YWwgaGVhZGVycyBtdXN0IGJlIGRp ZmZlcmVudCBjb2x1bW5zXG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJcXGNyb3NzdGFidmlldzog dmVydGljYWwgYW5kIGhvcml6b250YWwgaGVhZGVycyBtdXN0IGJlIGRpZmZlcmVudCBjb2x1 bW5zIik7CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwogCX0KIApAQCAtMTY5LDcgKzE3MCw3IEBA IFByaW50UmVzdWx0c0luQ3Jvc3N0YWIoY29uc3QgUEdyZXN1bHQgKnJlcykKIAkJICovCiAJ CWlmIChQUW5maWVsZHMocmVzKSAhPSAzKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXGNyb3Nz dGFidmlldzogZGF0YSBjb2x1bW4gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBxdWVyeSByZXR1 cm5zIG1vcmUgdGhhbiB0aHJlZSBjb2x1bW5zXG4iKTsKKwkJCXBnX2xvZ19lcnJvcigiXFxj cm9zc3RhYnZpZXc6IGRhdGEgY29sdW1uIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gcXVlcnkg cmV0dXJucyBtb3JlIHRoYW4gdGhyZWUgY29sdW1ucyIpOwogCQkJZ290byBlcnJvcl9yZXR1 cm47CiAJCX0KIApAQCAtMjI1LDcgKzIyNiw3IEBAIFByaW50UmVzdWx0c0luQ3Jvc3N0YWIo Y29uc3QgUEdyZXN1bHQgKnJlcykKIAogCQlpZiAocGl2X2NvbHVtbnMuY291bnQgPiBDUk9T U1RBQlZJRVdfTUFYX0NPTFVNTlMpCiAJCXsKLQkJCXBzcWxfZXJyb3IoIlxcY3Jvc3N0YWJ2 aWV3OiBtYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zICglZCkgZXhjZWVkZWRcbiIsCisJCQlw Z19sb2dfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBtYXhpbXVtIG51bWJlciBvZiBjb2x1bW5z ICglZCkgZXhjZWVkZWQiLAogCQkJCQkgICBDUk9TU1RBQlZJRVdfTUFYX0NPTFVNTlMpOwog CQkJZ290byBlcnJvcl9yZXR1cm47CiAJCX0KQEAgLTM5NCw3ICszOTUsNyBAQCBwcmludENy b3NzdGFiKGNvbnN0IFBHcmVzdWx0ICpyZXN1bHRzLAogCQkJICovCiAJCQlpZiAoY29udC5j ZWxsc1tpZHhdICE9IE5VTEwpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiXFxjcm9zc3RhYnZp ZXc6IHF1ZXJ5IHJlc3VsdCBjb250YWlucyBtdWx0aXBsZSBkYXRhIHZhbHVlcyBmb3Igcm93 IFwiJXNcIiwgY29sdW1uIFwiJXNcIlxuIiwKKwkJCQlwZ19sb2dfZXJyb3IoIlxcY3Jvc3N0 YWJ2aWV3OiBxdWVyeSByZXN1bHQgY29udGFpbnMgbXVsdGlwbGUgZGF0YSB2YWx1ZXMgZm9y IHJvdyBcIiVzXCIsIGNvbHVtbiBcIiVzXCIiLAogCQkJCQkJICAgcnAtPm5hbWUgPyBycC0+ bmFtZSA6CiAJCQkJCQkgICAocG9wdC5udWxsUHJpbnQgPyBwb3B0Lm51bGxQcmludCA6ICIo bnVsbCkiKSwKIAkJCQkJCSAgIGNwLT5uYW1lID8gY3AtPm5hbWUgOgpAQCAtNjQyLDcgKzY0 Myw3IEBAIGluZGV4T2ZDb2x1bW4oY2hhciAqYXJnLCBjb25zdCBQR3Jlc3VsdCAqcmVzKQog CQlpZHggPSBhdG9pKGFyZykgLSAxOwogCQlpZiAoaWR4IDwgMCB8fCBpZHggPj0gUFFuZmll bGRzKHJlcykpCiAJCXsKLQkJCXBzcWxfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBjb2x1bW4g bnVtYmVyICVkIGlzIG91dCBvZiByYW5nZSAxLi4lZFxuIiwKKwkJCXBnX2xvZ19lcnJvcigi XFxjcm9zc3RhYnZpZXc6IGNvbHVtbiBudW1iZXIgJWQgaXMgb3V0IG9mIHJhbmdlIDEuLiVk IiwKIAkJCQkJICAgaWR4ICsgMSwgUFFuZmllbGRzKHJlcykpOwogCQkJcmV0dXJuIC0xOwog CQl9CkBAIC02NjcsNyArNjY4LDcgQEAgaW5kZXhPZkNvbHVtbihjaGFyICphcmcsIGNvbnN0 IFBHcmVzdWx0ICpyZXMpCiAJCQkJaWYgKGlkeCA+PSAwKQogCQkJCXsKIAkJCQkJLyogYW5v dGhlciBpZHggd2FzIGFscmVhZHkgZm91bmQgZm9yIHRoZSBzYW1lIG5hbWUgKi8KLQkJCQkJ cHNxbF9lcnJvcigiXFxjcm9zc3RhYnZpZXc6IGFtYmlndW91cyBjb2x1bW4gbmFtZTogXCIl c1wiXG4iLCBhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBhbWJp Z3VvdXMgY29sdW1uIG5hbWU6IFwiJXNcIiIsIGFyZyk7CiAJCQkJCXJldHVybiAtMTsKIAkJ CQl9CiAJCQkJaWR4ID0gaTsKQEAgLTY3NSw3ICs2NzYsNyBAQCBpbmRleE9mQ29sdW1uKGNo YXIgKmFyZywgY29uc3QgUEdyZXN1bHQgKnJlcykKIAkJfQogCQlpZiAoaWR4ID09IC0xKQog CQl7Ci0JCQlwc3FsX2Vycm9yKCJcXGNyb3NzdGFidmlldzogY29sdW1uIG5hbWUgbm90IGZv dW5kOiBcIiVzXCJcbiIsIGFyZyk7CisJCQlwZ19sb2dfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3 OiBjb2x1bW4gbmFtZSBub3QgZm91bmQ6IFwiJXNcIiIsIGFyZyk7CiAJCQlyZXR1cm4gLTE7 CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDRkYTY3MTljZTcuLjdmNmJjYmEwOGQgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jYXN0X2Qu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzX2QuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX2RlZmF1bHRfYWNsX2QuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAj aW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAKICNpbmNsdWRlICJjb21tb24u aCIKQEAgLTE1Nyw3ICsxNTgsNyBAQCBkZXNjcmliZUFjY2Vzc01ldGhvZHMoY29uc3QgY2hh ciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAK LQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9y dCBhY2Nlc3MgbWV0aG9kcy5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVy c2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBhY2Nlc3MgbWV0aG9kcy4iLAogCQkJCSAgIGZv cm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJCQkg c3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpAQCAtMjI0LDcg KzIyNSw3IEBAIGRlc2NyaWJlVGFibGVzcGFjZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9v bCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9lcnJvcigi VGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCB0YWJsZXNwYWNlcy5c biIsCisJCXBnX2xvZ19pbmZvKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBz dXBwb3J0IHRhYmxlc3BhY2VzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBz ZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1 ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC0zMjcsNyArMzI4LDcgQEAgZGVzY3JpYmVGdW5j dGlvbnMoY29uc3QgY2hhciAqZnVuY3R5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29s IHZlcmJvc2UsIGJvb2wKIAogCWlmIChzdHJsZW4oZnVuY3R5cGVzKSAhPSBzdHJzcG4oZnVu Y3R5cGVzLCAiYW5wdHdTKyIpKQogCXsKLQkJcHNxbF9lcnJvcigiXFxkZiBvbmx5IHRha2Vz IFthbnB0d1MrXSBhcyBvcHRpb25zXG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJcXGRmIG9ubHkg dGFrZXMgW2FucHR3UytdIGFzIG9wdGlvbnMiKTsKIAkJcmV0dXJuIHRydWU7CiAJfQogCkBA IC0zMzUsNyArMzM2LDcgQEAgZGVzY3JpYmVGdW5jdGlvbnMoY29uc3QgY2hhciAqZnVuY3R5 cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wKIAl7CiAJCWNo YXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlxcZGYgZG9lcyBub3QgdGFrZSBh IFwiJWNcIiBvcHRpb24gd2l0aCBzZXJ2ZXIgdmVyc2lvbiAlc1xuIiwKKwkJcGdfbG9nX2Vy cm9yKCJcXGRmIGRvZXMgbm90IHRha2UgYSBcIiVjXCIgb3B0aW9uIHdpdGggc2VydmVyIHZl cnNpb24gJXMiLAogCQkJCSAgICdwJywKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIo cHNldC5zdmVyc2lvbiwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVy YnVmKSkpOwpAQCAtMzQ2LDcgKzM0Nyw3IEBAIGRlc2NyaWJlRnVuY3Rpb25zKGNvbnN0IGNo YXIgKmZ1bmN0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29s CiAJewogCQljaGFyCQlzdmVyYnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJcXGRmIGRvZXMg bm90IHRha2UgYSBcIiVjXCIgb3B0aW9uIHdpdGggc2VydmVyIHZlcnNpb24gJXNcbiIsCisJ CXBnX2xvZ19lcnJvcigiXFxkZiBkb2VzIG5vdCB0YWtlIGEgXCIlY1wiIG9wdGlvbiB3aXRo IHNlcnZlciB2ZXJzaW9uICVzIiwKIAkJCQkgICAndycsCiAJCQkJICAgZm9ybWF0UEdWZXJz aW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBz aXplb2Yoc3ZlcmJ1ZikpKTsKQEAgLTEwOTUsNyArMTA5Niw3IEBAIGxpc3REZWZhdWx0QUNM cyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJ cHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBh bHRlcmluZyBkZWZhdWx0IHByaXZpbGVnZXMuXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBz ZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgYWx0ZXJpbmcgZGVmYXVsdCBw cml2aWxlZ2VzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNp b24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJ cmV0dXJuIHRydWU7CkBAIC0xMzk2LDEwICsxMzk3LDEwIEBAIGRlc2NyaWJlVGFibGVEZXRh aWxzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVt KQogCQlpZiAoIXBzZXQucXVpZXQpCiAJCXsKIAkJCWlmIChwYXR0ZXJuKQotCQkJCXBzcWxf ZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgcmVsYXRpb24gbmFtZWQgXCIlc1wiLlxuIiwKKwkJ CQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgcmVsYXRpb24gbmFtZWQgXCIlc1wi LiIsCiAJCQkJCQkgICBwYXR0ZXJuKTsKIAkJCWVsc2UKLQkJCQlwc3FsX2Vycm9yKCJEaWQg bm90IGZpbmQgYW55IHJlbGF0aW9ucy5cbiIpOworCQkJCXBnX2xvZ19lcnJvcigiRGlkIG5v dCBmaW5kIGFueSByZWxhdGlvbnMuIik7CiAJCX0KIAkJUFFjbGVhcihyZXMpOwogCQlyZXR1 cm4gZmFsc2U7CkBAIC0xNjMzLDcgKzE2MzQsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWls cyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCWlmIChQUW50dXBsZXMocmVzKSA9PSAwKQog CXsKIAkJaWYgKCFwc2V0LnF1aWV0KQotCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFu eSByZWxhdGlvbiB3aXRoIE9JRCAlcy5cbiIsIG9pZCk7CisJCQlwZ19sb2dfZXJyb3IoIkRp ZCBub3QgZmluZCBhbnkgcmVsYXRpb24gd2l0aCBPSUQgJXMuIiwgb2lkKTsKIAkJZ290byBl cnJvcl9yZXR1cm47CiAJfQogCkBAIC0zNDI3LDcgKzM0MjgsNyBAQCBsaXN0RGJSb2xlU2V0 dGluZ3MoY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqcGF0dGVybjIpCiAJewog CQljaGFyCQlzdmVyYnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJz aW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IHBlci1kYXRhYmFzZSByb2xlIHNldHRpbmdzLlxu IiwKKwkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBz dXBwb3J0IHBlci1kYXRhYmFzZSByb2xlIHNldHRpbmdzLiIsCiAJCQkJICAgZm9ybWF0UEdW ZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVm LCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC0zNDYzLDEzICszNDY0 LDEzIEBAIGxpc3REYlJvbGVTZXR0aW5ncyhjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBj aGFyICpwYXR0ZXJuMikKIAlpZiAoUFFudHVwbGVzKHJlcykgPT0gMCAmJiAhcHNldC5xdWll dCkKIAl7CiAJCWlmIChwYXR0ZXJuICYmIHBhdHRlcm4yKQotCQkJcHNxbF9lcnJvcigiRGlk IG5vdCBmaW5kIGFueSBzZXR0aW5ncyBmb3Igcm9sZSBcIiVzXCIgYW5kIGRhdGFiYXNlIFwi JXNcIi5cbiIsCisJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2V0dGluZ3Mg Zm9yIHJvbGUgXCIlc1wiIGFuZCBkYXRhYmFzZSBcIiVzXCIuIiwKIAkJCQkJICAgcGF0dGVy biwgcGF0dGVybjIpOwogCQllbHNlIGlmIChwYXR0ZXJuKQotCQkJcHNxbF9lcnJvcigiRGlk IG5vdCBmaW5kIGFueSBzZXR0aW5ncyBmb3Igcm9sZSBcIiVzXCIuXG4iLAorCQkJcGdfbG9n X2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHNldHRpbmdzIGZvciByb2xlIFwiJXNcIi4iLAog CQkJCQkgICBwYXR0ZXJuKTsKIAkJZWxzZQotCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5k IGFueSBzZXR0aW5ncy5cbiIpOworCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55 IHNldHRpbmdzLiIpOwogCX0KIAllbHNlCiAJewpAQCAtMzYzOSwxMCArMzY0MCwxMCBAQCBs aXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBi b29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5cwogCWlmIChQUW50dXBsZXMocmVzKSA9PSAwICYm ICFwc2V0LnF1aWV0KQogCXsKIAkJaWYgKHBhdHRlcm4pCi0JCQlwc3FsX2Vycm9yKCJEaWQg bm90IGZpbmQgYW55IHJlbGF0aW9uIG5hbWVkIFwiJXNcIi5cbiIsCisJCQlwZ19sb2dfZXJy b3IoIkRpZCBub3QgZmluZCBhbnkgcmVsYXRpb24gbmFtZWQgXCIlc1wiLiIsCiAJCQkJCSAg IHBhdHRlcm4pOwogCQllbHNlCi0JCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHJl bGF0aW9ucy5cbiIpOworCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHJlbGF0 aW9ucy4iKTsKIAl9CiAJZWxzZQogCXsKQEAgLTQwOTgsNyArNDA5OSw3IEBAIGxpc3RDb2xs YXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lz dGVtKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNl cnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBjb2xsYXRpb25zLlxuIiwKKwkJ cGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0 IGNvbGxhdGlvbnMuIiwKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVy c2lvbiwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwog CQlyZXR1cm4gdHJ1ZTsKQEAgLTQyMzgsNyArNDIzOSw3IEBAIGxpc3RUU1BhcnNlcnMoY29u c3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1Zlsz Ml07CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qg c3VwcG9ydCBmdWxsIHRleHQgc2VhcmNoLlxuIiwKKwkJcGdfbG9nX2Vycm9yKCJUaGUgc2Vy dmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZ1bGwgdGV4dCBzZWFyY2guIiwK IAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVyc2lvbiwgZmFsc2UsCiAJ CQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwogCQlyZXR1cm4gdHJ1ZTsK QEAgLTQzMTgsMTAgKzQzMTksMTAgQEAgbGlzdFRTUGFyc2Vyc1ZlcmJvc2UoY29uc3QgY2hh ciAqcGF0dGVybikKIAkJaWYgKCFwc2V0LnF1aWV0KQogCQl7CiAJCQlpZiAocGF0dGVybikK LQkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIHBhcnNlciBu YW1lZCBcIiVzXCIuXG4iLAorCQkJCXBnX2xvZ19lcnJvcigiRGlkIG5vdCBmaW5kIGFueSB0 ZXh0IHNlYXJjaCBwYXJzZXIgbmFtZWQgXCIlc1wiLiIsCiAJCQkJCQkgICBwYXR0ZXJuKTsK IAkJCWVsc2UKLQkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNo IHBhcnNlcnMuXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgdGV4 dCBzZWFyY2ggcGFyc2Vycy4iKTsKIAkJfQogCQlQUWNsZWFyKHJlcyk7CiAJCXJldHVybiBm YWxzZTsKQEAgLTQ0ODUsNyArNDQ4Niw3IEBAIGxpc3RUU0RpY3Rpb25hcmllcyhjb25zdCBj aGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJewogCQljaGFyCQlzdmVyYnVmWzMyXTsK IAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBw b3J0IGZ1bGwgdGV4dCBzZWFyY2guXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIg KHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZnVsbCB0ZXh0IHNlYXJjaC4iLAogCQkJ CSAgIGZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJ CQkJCQkgc3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpAQCAt NDU1Niw3ICs0NTU3LDcgQEAgbGlzdFRTVGVtcGxhdGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4s IGJvb2wgdmVyYm9zZSkKIAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJy b3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZnVsbCB0ZXh0 IHNlYXJjaC5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykg ZG9lcyBub3Qgc3VwcG9ydCBmdWxsIHRleHQgc2VhcmNoLiIsCiAJCQkJICAgZm9ybWF0UEdW ZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVm LCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC00NjI3LDcgKzQ2Mjgs NyBAQCBsaXN0VFNDb25maWdzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkK IAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIg KHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZnVsbCB0ZXh0IHNlYXJjaC5cbiIsCisJ CXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9y dCBmdWxsIHRleHQgc2VhcmNoLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBz ZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1 ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC00NzA4LDEwICs0NzA5LDEwIEBAIGxpc3RUU0Nv bmZpZ3NWZXJib3NlKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCWlmICghcHNldC5xdWlldCkK IAkJewogCQkJaWYgKHBhdHRlcm4pCi0JCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFu eSB0ZXh0IHNlYXJjaCBjb25maWd1cmF0aW9uIG5hbWVkIFwiJXNcIi5cbiIsCisJCQkJcGdf bG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIGNvbmZpZ3VyYXRpb24g bmFtZWQgXCIlc1wiLiIsCiAJCQkJCQkgICBwYXR0ZXJuKTsKIAkJCWVsc2UKLQkJCQlwc3Fs X2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIGNvbmZpZ3VyYXRpb25zLlxu Iik7CisJCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIGNv bmZpZ3VyYXRpb25zLiIpOwogCQl9CiAJCVBRY2xlYXIocmVzKTsKIAkJcmV0dXJuIGZhbHNl OwpAQCAtNDgzMyw3ICs0ODM0LDcgQEAgbGlzdEZvcmVpZ25EYXRhV3JhcHBlcnMoY29uc3Qg Y2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07 CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3Vw cG9ydCBmb3JlaWduLWRhdGEgd3JhcHBlcnMuXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBz ZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZm9yZWlnbi1kYXRhIHdyYXBw ZXJzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZh bHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJu IHRydWU7CkBAIC00OTE2LDcgKzQ5MTcsNyBAQCBsaXN0Rm9yZWlnblNlcnZlcnMoY29uc3Qg Y2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07 CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3Vw cG9ydCBmb3JlaWduIHNlcnZlcnMuXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIg KHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZm9yZWlnbiBzZXJ2ZXJzLiIsCiAJCQkJ ICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJ CQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC00 OTk4LDcgKzQ5OTksNyBAQCBsaXN0VXNlck1hcHBpbmdzKGNvbnN0IGNoYXIgKnBhdHRlcm4s IGJvb2wgdmVyYm9zZSkKIAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJy b3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgdXNlciBtYXBw aW5ncy5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9l cyBub3Qgc3VwcG9ydCB1c2VyIG1hcHBpbmdzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9u TnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXpl b2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC01MDU5LDcgKzUwNjAsNyBAQCBs aXN0Rm9yZWlnblRhYmxlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJ ewogCQljaGFyCQlzdmVyYnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2 ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZvcmVpZ24gdGFibGVzLlxuIiwKKwkJcGdf bG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZv cmVpZ24gdGFibGVzLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3Zl cnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsK IAkJcmV0dXJuIHRydWU7CkBAIC01MTM3LDcgKzUxMzgsNyBAQCBsaXN0RXh0ZW5zaW9ucyhj b25zdCBjaGFyICpwYXR0ZXJuKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNx bF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBleHRl bnNpb25zLlxuIiwKKwkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBk b2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbnMuIiwKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25O dW1iZXIocHNldC5zdmVyc2lvbiwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVv ZihzdmVyYnVmKSkpOwogCQlyZXR1cm4gdHJ1ZTsKQEAgLTUxOTQsNyArNTE5NSw3IEBAIGxp c3RFeHRlbnNpb25Db250ZW50cyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCXsKIAkJY2hhcgkJ c3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykg ZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb25zLlxuIiwKKwkJcGdfbG9nX2Vycm9yKCJUaGUg c2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbnMuIiwKIAkJ CQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVyc2lvbiwgZmFsc2UsCiAJCQkJ CQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwogCQlyZXR1cm4gdHJ1ZTsKQEAg LTUyMjIsMTAgKzUyMjMsMTAgQEAgbGlzdEV4dGVuc2lvbkNvbnRlbnRzKGNvbnN0IGNoYXIg KnBhdHRlcm4pCiAJCWlmICghcHNldC5xdWlldCkKIAkJewogCQkJaWYgKHBhdHRlcm4pCi0J CQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBleHRlbnNpb24gbmFtZWQgXCIlc1wi LlxuIiwKKwkJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgZXh0ZW5zaW9uIG5h bWVkIFwiJXNcIi4iLAogCQkJCQkJICAgcGF0dGVybik7CiAJCQllbHNlCi0JCQkJcHNxbF9l cnJvcigiRGlkIG5vdCBmaW5kIGFueSBleHRlbnNpb25zLlxuIik7CisJCQkJcGdfbG9nX2Vy cm9yKCJEaWQgbm90IGZpbmQgYW55IGV4dGVuc2lvbnMuIik7CiAJCX0KIAkJUFFjbGVhcihy ZXMpOwogCQlyZXR1cm4gZmFsc2U7CkBAIC01MzA4LDcgKzUzMDksNyBAQCBsaXN0UHVibGlj YXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJewogCQljaGFyCQlzdmVyYnVmWzMyXTsK IAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBw b3J0IHB1YmxpY2F0aW9ucy5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVy c2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBwdWJsaWNhdGlvbnMuIiwKIAkJCQkgICBmb3Jt YXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVyc2lvbiwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2 ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwogCQlyZXR1cm4gdHJ1ZTsKQEAgLTUzNzksNyAr NTM4MCw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJ ewogCQljaGFyCQlzdmVyYnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2 ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IHB1YmxpY2F0aW9ucy5cbiIsCisJCXBnX2xv Z19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBwdWJs aWNhdGlvbnMuIiwKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVyc2lv biwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwogCQly ZXR1cm4gdHJ1ZTsKQEAgLTU0MTcsMTAgKzU0MTgsMTAgQEAgZGVzY3JpYmVQdWJsaWNhdGlv bnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJaWYgKCFwc2V0LnF1aWV0KQogCQl7CiAJCQlp ZiAocGF0dGVybikKLQkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHB1YmxpY2F0 aW9uIG5hbWVkIFwiJXNcIi5cbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQg YW55IHB1YmxpY2F0aW9uIG5hbWVkIFwiJXNcIi4iLAogCQkJCQkJICAgcGF0dGVybik7CiAJ CQllbHNlCi0JCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBwdWJsaWNhdGlvbnMu XG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgcHVibGljYXRpb25z LiIpOwogCQl9CiAKIAkJdGVybVBRRXhwQnVmZmVyKCZidWYpOwpAQCAtNTUzNSw3ICs1NTM2 LDcgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wg dmVyYm9zZSkKIAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRo ZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc3Vic2NyaXB0aW9ucy5c biIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qg c3VwcG9ydCBzdWJzY3JpcHRpb25zLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVy KHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3Zl cmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVs cC5jIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwppbmRleCBhNDAzNDMxNzYwLi40MTVmNjY5Y2Qy IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvaGVscC5jCisrKyBiL3NyYy9iaW4vcHNxbC9o ZWxwLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJzZXR0aW5ncy5oIgogI2luY2x1 ZGUgInNxbF9oZWxwLmgiCiAKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAKIC8q CiAgKiBQTEVBU0U6CkBAIC01OSw3ICs2MCw3IEBAIHVzYWdlKHVuc2lnbmVkIHNob3J0IGlu dCBwYWdlcikKIAkJdXNlciA9IGdldF91c2VyX25hbWUoJmVycnN0cik7CiAJCWlmICghdXNl cikKIAkJewotCQkJcHNxbF9lcnJvcigiJXNcbiIsIGVycnN0cik7CisJCQlwZ19sb2dfZmF0 YWwoIiVzIiwgZXJyc3RyKTsKIAkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAkJfQogCX0KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9pbnB1dC5jIGIvc3JjL2Jpbi9wc3FsL2lucHV0LmMK aW5kZXggMDgzMGI3YmIwOS4uOTNjMGQ0YzQ5ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L2lucHV0LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2lucHV0LmMKQEAgLTE4LDYgKzE4LDggQEAK ICNpbmNsdWRlICJ0YWItY29tcGxldGUuaCIKICNpbmNsdWRlICJjb21tb24uaCIKIAorI2lu Y2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKKwogI2lmbmRlZiBXSU4zMgogI2RlZmluZSBQ U1FMSElTVE9SWSAiLnBzcWxfaGlzdG9yeSIKICNlbHNlCkBAIC0yMTMsOCArMjE1LDcgQEAg Z2V0c19mcm9tRmlsZShGSUxFICpzb3VyY2UpCiAJCXsKIAkJCWlmIChmZXJyb3Ioc291cmNl KSkKIAkJCXsKLQkJCQlwc3FsX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZp bGU6ICVzXG4iLAotCQkJCQkJICAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJW0iKTsKIAkJCQlyZXR1cm4g TlVMTDsKIAkJCX0KIAkJCWJyZWFrOwpAQCAtMjI0LDcgKzIyNSw3IEBAIGdldHNfZnJvbUZp bGUoRklMRSAqc291cmNlKQogCiAJCWlmIChQUUV4cEJ1ZmZlckJyb2tlbihidWZmZXIpKQog CQl7Ci0JCQlwc3FsX2Vycm9yKCJvdXQgb2YgbWVtb3J5XG4iKTsKKwkJCXBnX2xvZ19lcnJv cigib3V0IG9mIG1lbW9yeSIpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIApAQCAtNDY4LDgg KzQ2OSw3IEBAIHNhdmVIaXN0b3J5KGNoYXIgKmZuYW1lLCBpbnQgbWF4X2xpbmVzKQogCQl9 CiAjZW5kaWYKIAotCQlwc3FsX2Vycm9yKCJjb3VsZCBub3Qgc2F2ZSBoaXN0b3J5IHRvIGZp bGUgXCIlc1wiOiAlc1xuIiwKLQkJCQkgICBmbmFtZSwgc3RyZXJyb3IoZXJybnVtKSk7CisJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNhdmUgaGlzdG9yeSB0byBmaWxlIFwiJXNcIjog JW0iLCBmbmFtZSk7CiAJfQogCXJldHVybiBmYWxzZTsKIH0KQEAgLTUwNyw4ICs1MDcsNyBA QCBwcmludEhpc3RvcnkoY29uc3QgY2hhciAqZm5hbWUsIHVuc2lnbmVkIHNob3J0IGludCBw YWdlcikKIAkJb3V0cHV0ID0gZm9wZW4oZm5hbWUsICJ3Iik7CiAJCWlmIChvdXRwdXQgPT0g TlVMTCkKIAkJewotCQkJcHNxbF9lcnJvcigiY291bGQgbm90IHNhdmUgaGlzdG9yeSB0byBm aWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCSAgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOwor CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2F2ZSBoaXN0b3J5IHRvIGZpbGUgXCIlc1wi OiAlbSIsIGZuYW1lKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQlpc19wYWdlciA9IGZh bHNlOwpAQCAtNTI3LDcgKzUyNiw3IEBAIHByaW50SGlzdG9yeShjb25zdCBjaGFyICpmbmFt ZSwgdW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCiAJcmV0dXJuIHRydWU7CiAjZWxzZQot CXBzcWxfZXJyb3IoImhpc3RvcnkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGluc3RhbGxh dGlvblxuIik7CisJcGdfbG9nX2Vycm9yKCJoaXN0b3J5IGlzIG5vdCBzdXBwb3J0ZWQgYnkg dGhpcyBpbnN0YWxsYXRpb24iKTsKIAlyZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9sYXJnZV9vYmouYyBiL3NyYy9iaW4vcHNxbC9sYXJnZV9v YmouYwppbmRleCAyMDQ3MzkzNDQxLi43ZGMyZTFlZGM0IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvbGFyZ2Vfb2JqLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2xhcmdlX29iai5jCkBAIC04 LDEwICs4LDExIEBACiAjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKICNpbmNsdWRlICJsYXJn ZV9vYmouaCIKIAotCiAjaW5jbHVkZSAic2V0dGluZ3MuaCIKICNpbmNsdWRlICJjb21tb24u aCIKIAorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKKwogc3RhdGljIHZvaWQgcHJp bnRfbG9fcmVzdWx0KGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmludGYo MSwgMik7CiAKIHN0YXRpYyB2b2lkCkBAIC02MSw3ICs2Miw3IEBAIHN0YXJ0X2xvX3hhY3Qo Y29uc3QgY2hhciAqb3BlcmF0aW9uLCBib29sICpvd25fdHJhbnNhY3Rpb24pCiAKIAlpZiAo IXBzZXQuZGIpCiAJewotCQlwc3FsX2Vycm9yKCIlczogbm90IGNvbm5lY3RlZCB0byBhIGRh dGFiYXNlXG4iLCBvcGVyYXRpb24pOworCQlwZ19sb2dfZXJyb3IoIiVzOiBub3QgY29ubmVj dGVkIHRvIGEgZGF0YWJhc2UiLCBvcGVyYXRpb24pOwogCQlyZXR1cm4gZmFsc2U7CiAJfQog CkBAIC04MCwxMCArODEsMTAgQEAgc3RhcnRfbG9feGFjdChjb25zdCBjaGFyICpvcGVyYXRp b24sIGJvb2wgKm93bl90cmFuc2FjdGlvbikKIAkJCS8qIHVzZSB0aGUgZXhpc3RpbmcgeGFj dCAqLwogCQkJYnJlYWs7CiAJCWNhc2UgUFFUUkFOU19JTkVSUk9SOgotCQkJcHNxbF9lcnJv cigiJXM6IGN1cnJlbnQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZFxuIiwgb3BlcmF0aW9uKTsK KwkJCXBnX2xvZ19lcnJvcigiJXM6IGN1cnJlbnQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCIs IG9wZXJhdGlvbik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCWRlZmF1bHQ6Ci0JCQlwc3FsX2Vy cm9yKCIlczogdW5rbm93biB0cmFuc2FjdGlvbiBzdGF0dXNcbiIsIG9wZXJhdGlvbik7CisJ CQlwZ19sb2dfZXJyb3IoIiVzOiB1bmtub3duIHRyYW5zYWN0aW9uIHN0YXR1cyIsIG9wZXJh dGlvbik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgZG9f bG9fZXhwb3J0KGNvbnN0IGNoYXIgKmxvaWRfYXJnLCBjb25zdCBjaGFyICpmaWxlbmFtZV9h cmcpCiAJLyogb2YgY291cnNlIHRoaXMgc3RhdHVzIGlzIGRvY3VtZW50ZWQgbm93aGVyZSA6 KCAqLwogCWlmIChzdGF0dXMgIT0gMSkKIAl7Ci0JCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJv ck1lc3NhZ2UocHNldC5kYikpOworCQlwZ19sb2dfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3Nh Z2UocHNldC5kYikpOwogCQlyZXR1cm4gZmFpbF9sb194YWN0KCJcXGxvX2V4cG9ydCIsIG93 bl90cmFuc2FjdGlvbik7CiAJfQogCkBAIC0xODgsNyArMTg5LDcgQEAgZG9fbG9faW1wb3J0 KGNvbnN0IGNoYXIgKmZpbGVuYW1lX2FyZywgY29uc3QgY2hhciAqY29tbWVudF9hcmcpCiAK IAlpZiAobG9pZCA9PSBJbnZhbGlkT2lkKQogCXsKLQkJcHNxbF9lcnJvcigiJXMiLCBQUWVy cm9yTWVzc2FnZShwc2V0LmRiKSk7CisJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9yTWVz c2FnZShwc2V0LmRiKSk7CiAJCXJldHVybiBmYWlsX2xvX3hhY3QoIlxcbG9faW1wb3J0Iiwg b3duX3RyYW5zYWN0aW9uKTsKIAl9CiAKQEAgLTI1MCw3ICsyNTEsNyBAQCBkb19sb191bmxp bmsoY29uc3QgY2hhciAqbG9pZF9hcmcpCiAKIAlpZiAoc3RhdHVzID09IC0xKQogCXsKLQkJ cHNxbF9lcnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7CisJCXBnX2xvZ19l cnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7CiAJCXJldHVybiBmYWlsX2xv X3hhY3QoIlxcbG9fdW5saW5rIiwgb3duX3RyYW5zYWN0aW9uKTsKIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9tYWlubG9vcC5jIGIvc3JjL2Jpbi9wc3FsL21haW5sb29wLmMK aW5kZXggNDgxZDAxMmZiMC4uM2FlNDQ3MDQxZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L21haW5sb29wLmMKKysrIGIvc3JjL2Jpbi9wc3FsL21haW5sb29wLmMKQEAgLTE0LDEzICsx NCwxMyBAQAogI2luY2x1ZGUgInByb21wdC5oIgogI2luY2x1ZGUgInNldHRpbmdzLmgiCiAK KyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIu aCIKIAogCiAvKiBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIG91ciBmbGV4IGxleGVyICovCiBj b25zdCBQc3FsU2NhbkNhbGxiYWNrcyBwc3Fsc2Nhbl9jYWxsYmFja3MgPSB7CiAJcHNxbF9n ZXRfdmFyaWFibGUsCi0JcHNxbF9lcnJvcgogfTsKIAogCkBAIC03OSw3ICs3OSw3IEBAIE1h aW5Mb29wKEZJTEUgKnNvdXJjZSkKIAkJUFFFeHBCdWZmZXJCcm9rZW4ocHJldmlvdXNfYnVm KSB8fAogCQlQUUV4cEJ1ZmZlckJyb2tlbihoaXN0b3J5X2J1ZikpCiAJewotCQlwc3FsX2Vy cm9yKCJvdXQgb2YgbWVtb3J5XG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJvdXQgb2YgbWVtb3J5 Iik7CiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAl9CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBN YWluTG9vcChGSUxFICpzb3VyY2UpCiAJCQkJICovCiAJCQkJaWYgKCFjb25kaXRpb25hbF9z dGFja19lbXB0eShjb25kX3N0YWNrKSkKIAkJCQl7Ci0JCQkJCXBzcWxfZXJyb3IoIlxcaWY6 IGVzY2FwZWRcbiIpOworCQkJCQlwZ19sb2dfZXJyb3IoIlxcaWY6IGVzY2FwZWQiKTsKIAkJ CQkJY29uZGl0aW9uYWxfc3RhY2tfcG9wKGNvbmRfc3RhY2spOwogCQkJCX0KIAkJCX0KQEAg LTM4Myw3ICszODMsNyBAQCBNYWluTG9vcChGSUxFICpzb3VyY2UpCiAKIAkJCWlmIChQUUV4 cEJ1ZmZlckJyb2tlbihxdWVyeV9idWYpKQogCQkJewotCQkJCXBzcWxfZXJyb3IoIm91dCBv ZiBtZW1vcnlcbiIpOworCQkJCXBnX2xvZ19lcnJvcigib3V0IG9mIG1lbW9yeSIpOwogCQkJ CWV4aXQoRVhJVF9GQUlMVVJFKTsKIAkJCX0KIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIE1haW5M b29wKEZJTEUgKnNvdXJjZSkKIAkJCQl7CiAJCQkJCS8qIGlmIGludGVyYWN0aXZlLCB3YXJu IGFib3V0IG5vbi1leGVjdXRlZCBxdWVyeSAqLwogCQkJCQlpZiAocHNldC5jdXJfY21kX2lu dGVyYWN0aXZlKQotCQkJCQkJcHNxbF9lcnJvcigicXVlcnkgaWdub3JlZDsgdXNlIFxcZW5k aWYgb3IgQ3RybC1DIHRvIGV4aXQgY3VycmVudCBcXGlmIGJsb2NrXG4iKTsKKwkJCQkJCXBn X2xvZ19lcnJvcigicXVlcnkgaWdub3JlZDsgdXNlIFxcZW5kaWYgb3IgQ3RybC1DIHRvIGV4 aXQgY3VycmVudCBcXGlmIGJsb2NrIik7CiAJCQkJCS8qIGZha2UgYW4gT0sgcmVzdWx0IGZv ciBwdXJwb3NlcyBvZiBsb29wIGNoZWNrcyAqLwogCQkJCQlzdWNjZXNzID0gdHJ1ZTsKIAkJ CQkJc2xhc2hDbWRTdGF0dXMgPSBQU1FMX0NNRF9TRU5EOwpAQCAtNTg4LDcgKzU4OCw3IEBA IE1haW5Mb29wKEZJTEUgKnNvdXJjZSkKIAkJZWxzZQogCQl7CiAJCQlpZiAocHNldC5jdXJf Y21kX2ludGVyYWN0aXZlKQotCQkJCXBzcWxfZXJyb3IoInF1ZXJ5IGlnbm9yZWQ7IHVzZSBc XGVuZGlmIG9yIEN0cmwtQyB0byBleGl0IGN1cnJlbnQgXFxpZiBibG9ja1xuIik7CisJCQkJ cGdfbG9nX2Vycm9yKCJxdWVyeSBpZ25vcmVkOyB1c2UgXFxlbmRpZiBvciBDdHJsLUMgdG8g ZXhpdCBjdXJyZW50IFxcaWYgYmxvY2siKTsKIAkJCXN1Y2Nlc3MgPSB0cnVlOwogCQl9CiAK QEAgLTYwNiw3ICs2MDYsNyBAQCBNYWluTG9vcChGSUxFICpzb3VyY2UpCiAJCXN1Y2Nlc3NS ZXN1bHQgIT0gRVhJVF9VU0VSICYmCiAJCSFjb25kaXRpb25hbF9zdGFja19lbXB0eShjb25k X3N0YWNrKSkKIAl7Ci0JCXBzcWxfZXJyb3IoInJlYWNoZWQgRU9GIHdpdGhvdXQgZmluZGlu ZyBjbG9zaW5nIFxcZW5kaWYocylcbiIpOworCQlwZ19sb2dfZXJyb3IoInJlYWNoZWQgRU9G IHdpdGhvdXQgZmluZGluZyBjbG9zaW5nIFxcZW5kaWYocykiKTsKIAkJaWYgKGRpZV9vbl9l cnJvciAmJiAhcHNldC5jdXJfY21kX2ludGVyYWN0aXZlKQogCQkJc3VjY2Vzc1Jlc3VsdCA9 IEVYSVRfVVNFUjsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvbmxzLm1rIGIvc3Jj L2Jpbi9wc3FsL25scy5tawppbmRleCBlMzU1ZjIxOWI5Li4yZTcwN2Y0NDFjIDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvbmxzLm1rCisrKyBiL3NyYy9iaW4vcHNxbC9ubHMubWsKQEAg LTEsMTIgKzEsMTQgQEAKICMgc3JjL2Jpbi9wc3FsL25scy5tawogQ0FUQUxPR19OQU1FICAg ICA9IHBzcWwKIEFWQUlMX0xBTkdVQUdFUyAgPSBjcyBkZSBlcyBmciBoZSBpdCBqYSBrbyBw bCBwdF9CUiBydSBzdiB6aF9DTiB6aF9UVwotR0VUVEVYVF9GSUxFUyAgICA9IGNvbW1hbmQu YyBjb21tb24uYyBjb3B5LmMgY3Jvc3N0YWJ2aWV3LmMgaGVscC5jIGlucHV0LmMgbGFyZ2Vf b2JqLmMgXAorR0VUVEVYVF9GSUxFUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRf RklMRVMpIFwKKyAgICAgICAgICAgICAgICAgICBjb21tYW5kLmMgY29tbW9uLmMgY29weS5j IGNyb3NzdGFidmlldy5jIGhlbHAuYyBpbnB1dC5jIGxhcmdlX29iai5jIFwKICAgICAgICAg ICAgICAgICAgICBtYWlubG9vcC5jIHBzcWxzY2Fuc2xhc2guYyBzdGFydHVwLmMgXAogICAg ICAgICAgICAgICAgICAgIGRlc2NyaWJlLmMgc3FsX2hlbHAuaCBzcWxfaGVscC5jIFwKICAg ICAgICAgICAgICAgICAgICB0YWItY29tcGxldGUuYyB2YXJpYWJsZXMuYyBcCiAgICAgICAg ICAgICAgICAgICAgLi4vLi4vZmVfdXRpbHMvcHJpbnQuYyAuLi8uLi9mZV91dGlscy9wc3Fs c2Nhbi5jIFwKICAgICAgICAgICAgICAgICAgICAuLi8uLi9jb21tb24vZXhlYy5jIC4uLy4u L2NvbW1vbi9mZV9tZW11dGlscy5jIC4uLy4uL2NvbW1vbi91c2VybmFtZS5jIFwKICAgICAg ICAgICAgICAgICAgICAuLi8uLi9jb21tb24vd2FpdF9lcnJvci5jCi1HRVRURVhUX1RSSUdH RVJTID0gTl8gcHNxbF9lcnJvciBzaW1wbGVfcHJvbXB0IHdyaXRlX2Vycm9yCi1HRVRURVhU X0ZMQUdTICAgID0gcHNxbF9lcnJvcjoxOmMtZm9ybWF0IHdyaXRlX2Vycm9yOjE6Yy1mb3Jt YXQKK0dFVFRFWFRfVFJJR0dFUlMgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX1RSSUdH RVJTKSBcCisgICAgICAgICAgICAgICAgICAgTl8gc2ltcGxlX3Byb21wdAorR0VUVEVYVF9G TEFHUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRkxBR1MpCmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvcHNxbHNjYW5zbGFzaC5sIGIvc3JjL2Jpbi9wc3FsL3BzcWxzY2Fu c2xhc2gubAppbmRleCAxNTE0YWE3NGQzLi5mNzgxOGU2ZTYwIDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvcHNxbHNjYW5zbGFzaC5sCisrKyBiL3NyYy9iaW4vcHNxbC9wc3Fsc2NhbnNs YXNoLmwKQEAgLTIwLDYgKzIwLDcgQEAKIAogI2luY2x1ZGUgInBzcWxzY2Fuc2xhc2guaCIK ICNpbmNsdWRlICJmZV91dGlscy9jb25kaXRpb25hbC5oIgorI2luY2x1ZGUgImZlX3V0aWxz L2xvZ2dpbmcuaCIKIAogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiB9CkBAIC02MzMsNyArNjM0 LDcgQEAgcHNxbF9zY2FuX3NsYXNoX29wdGlvbihQc3FsU2NhblN0YXRlIHN0YXRlLAogCQlj YXNlIHhzbGFzaGJhY2txdW90ZToKIAkJY2FzZSB4c2xhc2hkcXVvdGU6CiAJCQkvKiBtdXN0 IGhhdmUgaGl0IEVPTCBpbnNpZGUgcXVvdGVzICovCi0JCQlzdGF0ZS0+Y2FsbGJhY2tzLT53 cml0ZV9lcnJvcigidW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmdcbiIpOworCQkJcGdfbG9n X2Vycm9yKCJ1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZyIpOwogCQkJdGVybVBRRXhwQnVm ZmVyKCZteWJ1Zik7CiAJCQlyZXR1cm4gTlVMTDsKIAkJY2FzZSB4c2xhc2h3aG9sZWxpbmU6 CkBAIC03NzksNyArNzgwLDcgQEAgZXZhbHVhdGVfYmFja3RpY2soUHNxbFNjYW5TdGF0ZSBz dGF0ZSkKIAlmZCA9IHBvcGVuKGNtZCwgUEdfQklOQVJZX1IpOwogCWlmICghZmQpCiAJewot CQlzdGF0ZS0+Y2FsbGJhY2tzLT53cml0ZV9lcnJvcigiJXM6ICVzXG4iLCBjbWQsIHN0cmVy cm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgY21kKTsKIAkJZXJyb3Ig PSB0cnVlOwogCX0KIApAQCAtNzkwLDcgKzc5MSw3IEBAIGV2YWx1YXRlX2JhY2t0aWNrKFBz cWxTY2FuU3RhdGUgc3RhdGUpCiAJCQlyZXN1bHQgPSBmcmVhZChidWYsIDEsIHNpemVvZihi dWYpLCBmZCk7CiAJCQlpZiAoZmVycm9yKGZkKSkKIAkJCXsKLQkJCQlzdGF0ZS0+Y2FsbGJh Y2tzLT53cml0ZV9lcnJvcigiJXM6ICVzXG4iLCBjbWQsIHN0cmVycm9yKGVycm5vKSk7CisJ CQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBjbWQpOwogCQkJCWVycm9yID0gdHJ1ZTsKIAkJ CQlicmVhazsKIAkJCX0KQEAgLTgwMCwxMyArODAxLDEzIEBAIGV2YWx1YXRlX2JhY2t0aWNr KFBzcWxTY2FuU3RhdGUgc3RhdGUpCiAKIAlpZiAoZmQgJiYgcGNsb3NlKGZkKSA9PSAtMSkK IAl7Ci0JCXN0YXRlLT5jYWxsYmFja3MtPndyaXRlX2Vycm9yKCIlczogJXNcbiIsIGNtZCwg c3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBjbWQpOwogCQll cnJvciA9IHRydWU7CiAJfQogCiAJaWYgKFBRRXhwQnVmZmVyRGF0YUJyb2tlbihjbWRfb3V0 cHV0KSkKIAl7Ci0JCXN0YXRlLT5jYWxsYmFja3MtPndyaXRlX2Vycm9yKCIlczogb3V0IG9m IG1lbW9yeVxuIiwgY21kKTsKKwkJcGdfbG9nX2Vycm9yKCIlczogb3V0IG9mIG1lbW9yeSIs IGNtZCk7CiAJCWVycm9yID0gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC9zdGFydHVwLmMgYi9zcmMvYmluL3BzcWwvc3RhcnR1cC5jCmluZGV4IGYzY2VlZmRhOWIu LmRlNzZjOWU3ZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKKysrIGIv c3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImhl bHAuaCIKICNpbmNsdWRlICJpbnB1dC5oIgogI2luY2x1ZGUgIm1haW5sb29wLmgiCisjaW5j bHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3ByaW50Lmgi CiAjaW5jbHVkZSAic2V0dGluZ3MuaCIKIApAQCAtODksNiArOTAsMjggQEAgc3RhdGljIHZv aWQgRXN0YWJsaXNoVmFyaWFibGVTcGFjZSh2b2lkKTsKIAogI2RlZmluZSBOT1BBR0VSCQkw CiAKK3N0YXRpYyB2b2lkCitsb2dfcHJlX2NhbGxiYWNrKHZvaWQpCit7CisJaWYgKHBzZXQu cXVlcnlGb3V0ICYmIHBzZXQucXVlcnlGb3V0ICE9IHN0ZG91dCkKKwkJZmZsdXNoKHBzZXQu cXVlcnlGb3V0KTsKK30KKworc3RhdGljIHZvaWQKK2xvZ19sb2N1c19jYWxsYmFjayhjb25z dCBjaGFyICoqZmlsZW5hbWUsIHVpbnQ2NCAqbGluZW5vKQoreworCWlmIChwc2V0LmlucHV0 ZmlsZSkKKwl7CisJCSpmaWxlbmFtZSA9IHBzZXQuaW5wdXRmaWxlOworCQkqbGluZW5vID0g IHBzZXQubGluZW5vOworCX0KKwllbHNlCisJeworCQkqZmlsZW5hbWUgPSBOVUxMOworCQkq bGluZW5vID0gMDsKKwl9Cit9CisKIC8qCiAgKgogICogbWFpbgpAQCAtMTA0LDYgKzEyNyw5 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlib29sCQluZXdfcGFzczsKIAog CXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicHNxbCIp KTsKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CisJcGdfbG9nZ2luZ19zZXRfcHJlX2Nh bGxiYWNrKGxvZ19wcmVfY2FsbGJhY2spOworCXBnX2xvZ2dpbmdfc2V0X2xvY3VzX2NhbGxi YWNrKGxvZ19sb2N1c19jYWxsYmFjayk7CiAKIAlpZiAoYXJnYyA+IDEpCiAJewpAQCAtMTkw LDcgKzIxNiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBCYWlsIG91 dCBpZiAtMSB3YXMgc3BlY2lmaWVkIGJ1dCB3aWxsIGJlIGlnbm9yZWQuICovCiAJaWYgKG9w dGlvbnMuc2luZ2xlX3R4biAmJiBvcHRpb25zLmFjdGlvbnMuaGVhZCA9PSBOVUxMKQogCXsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiAtMSBjYW4gb25seSBiZSB1c2VkIGluIG5vbi1p bnRlcmFjdGl2ZSBtb2RlXG4iKSwgcHNldC5wcm9nbmFtZSk7CisJCXBnX2xvZ19mYXRhbCgi LTEgY2FuIG9ubHkgYmUgdXNlZCBpbiBub24taW50ZXJhY3RpdmUgbW9kZSIpOwogCQlleGl0 KEVYSVRfRkFJTFVSRSk7CiAJfQogCkBAIC0yNzcsNyArMzAzLDcgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCiAJaWYgKFBRc3RhdHVzKHBzZXQuZGIpID09IENPTk5FQ1RJ T05fQkFEKQogCXsKLQkJZnByaW50ZihzdGRlcnIsICIlczogJXMiLCBwc2V0LnByb2duYW1l LCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7CisJCXBnX2xvZ19mYXRhbCgiJXMiLCBQUWVy cm9yTWVzc2FnZShwc2V0LmRiKSk7CiAJCVBRZmluaXNoKHBzZXQuZGIpOwogCQlleGl0KEVY SVRfQkFEQ09OTik7CiAJfQpAQCAtMzA1LDggKzMzMSw4IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJcHNldC5sb2dmaWxlID0gZm9wZW4ob3B0aW9ucy5sb2dmaWxlbmFt ZSwgImEiKTsKIAkJaWYgKCFwc2V0LmxvZ2ZpbGUpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IG9wZW4gbG9nIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJ CXBzZXQucHJvZ25hbWUsIG9wdGlvbnMubG9nZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7 CisJCQlwZ19sb2dfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGxvZyBmaWxlIFwiJXNcIjogJW0i LAorCQkJCQkJIG9wdGlvbnMubG9nZmlsZW5hbWUpOwogCQkJZXhpdChFWElUX0ZBSUxVUkUp OwogCQl9CiAJfQpAQCAtNTYyLDcgKzU4OCw3IEBAIHBhcnNlX3BzcWxfb3B0aW9ucyhpbnQg YXJnYywgY2hhciAqYXJndltdLCBzdHJ1Y3QgYWRob2Nfb3B0cyAqb3B0aW9ucykKIAogCQkJ CQlpZiAoIXJlc3VsdCkKIAkJCQkJewotCQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3Qgc2V0IHByaW50aW5nIHBhcmFtZXRlciBcIiVzXCJcbiIpLCBwc2V0LnByb2du YW1lLCB2YWx1ZSk7CisJCQkJCQlwZ19sb2dfZmF0YWwoImNvdWxkIG5vdCBzZXQgcHJpbnRp bmcgcGFyYW1ldGVyIFwiJXNcIiIsIHZhbHVlKTsKIAkJCQkJCWV4aXQoRVhJVF9GQUlMVVJF KTsKIAkJCQkJfQogCkBAIC02ODQsOCArNzEwLDggQEAgcGFyc2VfcHNxbF9vcHRpb25zKGlu dCBhcmdjLCBjaGFyICphcmd2W10sIHN0cnVjdCBhZGhvY19vcHRzICpvcHRpb25zKQogCQll bHNlIGlmICghb3B0aW9ucy0+dXNlcm5hbWUpCiAJCQlvcHRpb25zLT51c2VybmFtZSA9IGFy Z3Zbb3B0aW5kXTsKIAkJZWxzZSBpZiAoIXBzZXQucXVpZXQpCi0JCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IHdhcm5pbmc6IGV4dHJhIGNvbW1hbmQtbGluZSBhcmd1bWVudCBcIiVzXCIg aWdub3JlZFxuIiksCi0JCQkJCXBzZXQucHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCQlw Z19sb2dfd2FybmluZygiZXh0cmEgY29tbWFuZC1saW5lIGFyZ3VtZW50IFwiJXNcIiBpZ25v cmVkIiwKKwkJCQkJCSAgIGFyZ3Zbb3B0aW5kXSk7CiAKIAkJb3B0aW5kKys7CiAJfQpAQCAt NzMzLDcgKzc1OSw3IEBAIHByb2Nlc3NfcHNxbHJjKGNoYXIgKmFyZ3YwKQogCiAJaWYgKGZp bmRfbXlfZXhlYyhhcmd2MCwgbXlfZXhlY19wYXRoKSA8IDApCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBmaW5kIG93biBwcm9ncmFtIGV4ZWN1dGFibGVcbiIp LCBhcmd2MCk7CisJCXBnX2xvZ19mYXRhbCgiY291bGQgbm90IGZpbmQgb3duIHByb2dyYW0g ZXhlY3V0YWJsZSIpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvdmFyaWFibGVzLmMgYi9zcmMvYmluL3BzcWwvdmFyaWFibGVzLmMK aW5kZXggNzJmZGRmMjU2Yy4uNWQ0N2Q1YThhYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L3ZhcmlhYmxlcy5jCisrKyBiL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuYwpAQCAtMTAsNiAr MTAsOCBAQAogI2luY2x1ZGUgImNvbW1vbi5oIgogI2luY2x1ZGUgInZhcmlhYmxlcy5oIgog CisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgorCiAKIC8qCiAgKiBDaGVjayB3aGV0 aGVyIGEgdmFyaWFibGUncyBuYW1lIGlzIGFsbG93ZWQuCkBAIC0xMzYsNyArMTM4LDcgQEAg UGFyc2VWYXJpYWJsZUJvb2woY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUs IGJvb2wgKnJlc3VsdCkKIAl7CiAJCS8qIHN0cmluZyBpcyBub3QgcmVjb2duaXplZDsgZG9u J3QgY2xvYmJlciAqcmVzdWx0ICovCiAJCWlmIChuYW1lKQotCQkJcHNxbF9lcnJvcigidW5y ZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiOiBCb29sZWFuIGV4cGVjdGVkXG4i LAorCQkJcGdfbG9nX2Vycm9yKCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wiIGZvciBcIiVz XCI6IEJvb2xlYW4gZXhwZWN0ZWQiLAogCQkJCQkgICB2YWx1ZSwgbmFtZSk7CiAJCXZhbGlk ID0gZmFsc2U7CiAJfQpAQCAtMTczLDcgKzE3NSw3IEBAIFBhcnNlVmFyaWFibGVOdW0oY29u c3QgY2hhciAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCAqcmVzdWx0KQogCXsKIAkJ Lyogc3RyaW5nIGlzIG5vdCByZWNvZ25pemVkOyBkb24ndCBjbG9iYmVyICpyZXN1bHQgKi8K IAkJaWYgKG5hbWUpCi0JCQlwc3FsX2Vycm9yKCJpbnZhbGlkIHZhbHVlIFwiJXNcIiBmb3Ig XCIlc1wiOiBpbnRlZ2VyIGV4cGVjdGVkXG4iLAorCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlk IHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiOiBpbnRlZ2VyIGV4cGVjdGVkIiwKIAkJCQkJICAg dmFsdWUsIG5hbWUpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpAQCAtMjIxLDcgKzIyMyw3IEBA IFNldFZhcmlhYmxlKFZhcmlhYmxlU3BhY2Ugc3BhY2UsIGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKnZhbHVlKQogCQkvKiBEZWxldGlvbiBvZiBub24tZXhpc3RlbnQgdmFyaWFi bGUgaXMgbm90IGFuIGVycm9yICovCiAJCWlmICghdmFsdWUpCiAJCQlyZXR1cm4gdHJ1ZTsK LQkJcHNxbF9lcnJvcigiaW52YWxpZCB2YXJpYWJsZSBuYW1lOiBcIiVzXCJcbiIsIG5hbWUp OworCQlwZ19sb2dfZXJyb3IoImludmFsaWQgdmFyaWFibGUgbmFtZTogXCIlc1wiIiwgbmFt ZSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTM5MCw2ICszOTIsNyBAQCBEZWxldGVW YXJpYWJsZShWYXJpYWJsZVNwYWNlIHNwYWNlLCBjb25zdCBjaGFyICpuYW1lKQogdm9pZAog UHNxbFZhckVudW1FcnJvcihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSwg Y29uc3QgY2hhciAqc3VnZ2VzdGlvbnMpCiB7Ci0JcHNxbF9lcnJvcigidW5yZWNvZ25pemVk IHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiXG5BdmFpbGFibGUgdmFsdWVzIGFyZTogJXMuXG4i LAorCXBnX2xvZ19lcnJvcigidW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wi XG4iCisJCQkJICJBdmFpbGFibGUgdmFsdWVzIGFyZTogJXMuIiwKIAkJCSAgIHZhbHVlLCBu YW1lLCBzdWdnZXN0aW9ucyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvY2x1 c3RlcmRiLmMgYi9zcmMvYmluL3NjcmlwdHMvY2x1c3RlcmRiLmMKaW5kZXggNDFkZDJhNTc1 OC4uNTViYTFjODBiNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NsdXN0ZXJkYi5j CisrKyBiL3NyYy9iaW4vc2NyaXB0cy9jbHVzdGVyZGIuYwpAQCAtMTEsNiArMTEsNyBAQAog CiAjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKICNpbmNsdWRlICJjb21tb24uaCIKKyNpbmNs dWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc2ltcGxlX2xp c3QuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIApAQCAtNjQsNiAr NjUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlwcm9nbmFtZSA9IGdl dF9wcm9nbmFtZShhcmd2WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0s IFBHX1RFWFRET01BSU4oInBnc2NyaXB0cyIpKTsKKwlwZ19sb2dnaW5nX2luaXQoYXJndlsw XSk7CiAKIAloYW5kbGVfaGVscF92ZXJzaW9uX29wdHMoYXJnYywgYXJndiwgImNsdXN0ZXJk YiIsIGhlbHApOwogCkBAIC0xMjUsOCArMTI3LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCiAJaWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNc IilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2dfZXJyb3Io InRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAor CQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0t aGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJZXhpdCgx KTsKIAl9CkBAIC0xMzcsMTUgKzEzOSwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJewogCQlpZiAoZGJuYW1lKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNhbm5vdCBjbHVzdGVyIGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMgb25lIGF0IHRo ZSBzYW1lIHRpbWVcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNh bm5vdCBjbHVzdGVyIGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMgb25lIGF0IHRoZSBz YW1lIHRpbWUiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAogCQlpZiAodGFibGVzLmhlYWQgIT0g TlVMTCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgY2x1c3RlciBz cGVjaWZpYyB0YWJsZShzKSBpbiBhbGwgZGF0YWJhc2VzXG4iKSwKLQkJCQkJcHJvZ25hbWUp OworCQkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgY2x1c3RlciBzcGVjaWZpYyB0YWJsZShzKSBp biBhbGwgZGF0YWJhc2VzIik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTIxMywxMSArMjEz LDExIEBAIGNsdXN0ZXJfb25lX2RhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgYm9vbCB2 ZXJib3NlLCBjb25zdCBjaGFyICp0YWJsZSwKIAlpZiAoIWV4ZWN1dGVNYWludGVuYW5jZUNv bW1hbmQoY29ubiwgc3FsLmRhdGEsIGVjaG8pKQogCXsKIAkJaWYgKHRhYmxlKQotCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjbHVzdGVyaW5nIG9mIHRhYmxlIFwiJXNcIiBpbiBkYXRh YmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgdGFibGUsIFBRZGIo Y29ubiksIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY2x1c3Rl cmluZyBvZiB0YWJsZSBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiLAor CQkJCQkJIHRhYmxlLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCWVs c2UKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2x1c3RlcmluZyBvZiBkYXRhYmFzZSBc IiVzXCIgZmFpbGVkOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgUFFkYihjb25uKSwgUFFlcnJv ck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJjbHVzdGVyaW5nIG9mIGRhdGFi YXNlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJCSBQUWRiKGNvbm4pLCBQUWVycm9yTWVz c2FnZShjb25uKSk7CiAJCVBRZmluaXNoKGNvbm4pOwogCQlleGl0KDEpOwogCX0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9jb21tb24uYyBiL3NyYy9iaW4vc2NyaXB0cy9jb21t b24uYwppbmRleCA0MjE1YmMzZDZlLi5hYjRkOTViMjU4IDEwMDY0NAotLS0gYS9zcmMvYmlu L3NjcmlwdHMvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL2NvbW1vbi5jCkBAIC0x OSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJjb21tb24uaCIKICNpbmNsdWRlICJmZV91dGls cy9jb25uZWN0LmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUg ImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCiAKQEAgLTExMyw4ICsxMTQsOCBAQCBjb25u ZWN0RGF0YWJhc2UoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpwZ2hvc3QsCiAK IAkJaWYgKCFjb25uKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCBjb25uZWN0IHRvIGRhdGFiYXNlICVzOiBvdXQgb2YgbWVtb3J5XG4iKSwKLQkJCQkJcHJv Z25hbWUsIGRibmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjb25uZWN0IHRv IGRhdGFiYXNlICVzOiBvdXQgb2YgbWVtb3J5IiwKKwkJCQkJCSBkYm5hbWUpOwogCQkJZXhp dCgxKTsKIAkJfQogCkBAIC0xNDAsOCArMTQxLDggQEAgY29ubmVjdERhdGFiYXNlKGNvbnN0 IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqcGdob3N0LAogCQkJUFFmaW5pc2goY29ubik7 CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxk IG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlICVzOiAlcyIpLAotCQkJCXByb2duYW1lLCBkYm5h bWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg Y29ubmVjdCB0byBkYXRhYmFzZSAlczogJXMiLAorCQkJCQkgZGJuYW1lLCBQUWVycm9yTWVz c2FnZShjb25uKSk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xOTMsMTAgKzE5NCw4IEBAIGV4 ZWN1dGVRdWVyeShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5LCBjb25zdCBjaGFy ICpwcm9nbmFtZSwgYm9vbCBlY2hvKQogCWlmICghcmVzIHx8CiAJCVBRcmVzdWx0U3RhdHVz KHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBxdWVyeSBmYWlsZWQ6ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNv bm4pKTsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBxdWVyeSB3YXM6ICVzXG4iKSwKLQkJ CQlwcm9nbmFtZSwgcXVlcnkpOworCQlwZ19sb2dfZXJyb3IoInF1ZXJ5IGZhaWxlZDogJXMi LCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19pbmZvKCJxdWVyeSB3YXM6ICVz IiwgcXVlcnkpOwogCQlQUWZpbmlzaChjb25uKTsKIAkJZXhpdCgxKTsKIAl9CkBAIC0yMjEs MTAgKzIyMCw4IEBAIGV4ZWN1dGVDb21tYW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAq cXVlcnksCiAJaWYgKCFyZXMgfHwKIAkJUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19D T01NQU5EX09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBxdWVyeSBmYWlsZWQ6 ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBxdWVyeSB3YXM6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcXVl cnkpOworCQlwZ19sb2dfZXJyb3IoInF1ZXJ5IGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2Fn ZShjb25uKSk7CisJCXBnX2xvZ19pbmZvKCJxdWVyeSB3YXM6ICVzIiwgcXVlcnkpOwogCQlQ UWZpbmlzaChjb25uKTsKIAkJZXhpdCgxKTsKIAl9CkBAIC0zNDcsMTEgKzM0NCwxMCBAQCBh cHBlbmRRdWFsaWZpZWRSZWxhdGlvbihQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IGNoYXIgKnNw ZWMsCiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAlpZiAobnR1cHMgIT0gMSkKIAl7Ci0J CWZwcmludGYoc3RkZXJyLAotCQkJCW5nZXR0ZXh0KCIlczogcXVlcnkgcmV0dXJuZWQgJWQg cm93IGluc3RlYWQgb2Ygb25lOiAlc1xuIiwKLQkJCQkJCSAiJXM6IHF1ZXJ5IHJldHVybmVk ICVkIHJvd3MgaW5zdGVhZCBvZiBvbmU6ICVzXG4iLAotCQkJCQkJIG50dXBzKSwKLQkJCQlw cm9nbmFtZSwgbnR1cHMsIHNxbC5kYXRhKTsKKwkJcGdfbG9nX2Vycm9yKG5nZXR0ZXh0KCJx dWVyeSByZXR1cm5lZCAlZCByb3cgaW5zdGVhZCBvZiBvbmU6ICVzIiwKKwkJCQkJCQkgICJx dWVyeSByZXR1cm5lZCAlZCByb3dzIGluc3RlYWQgb2Ygb25lOiAlcyIsCisJCQkJCQkJICBu dHVwcyksCisJCQkJCSBudHVwcywgc3FsLmRhdGEpOwogCQlQUWZpbmlzaChjb25uKTsKIAkJ ZXhpdCgxKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvY3JlYXRlZGIuYyBi L3NyYy9iaW4vc2NyaXB0cy9jcmVhdGVkYi5jCmluZGV4IGM3NjViOGVjNjYuLjg4NGI4Njhm ODggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy9jcmVhdGVkYi5jCisrKyBiL3NyYy9i aW4vc2NyaXB0cy9jcmVhdGVkYi5jCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSAicG9z dGdyZXNfZmUuaCIKIAogI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImZlX3V0aWxz L2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogCkBA IC02Niw2ICs2Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXByb2du YW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2Uo YXJndlswXSwgUEdfVEVYVERPTUFJTigicGdzY3JpcHRzIikpOworCXBnX2xvZ2dpbmdfaW5p dChhcmd2WzBdKTsKIAogCWhhbmRsZV9oZWxwX3ZlcnNpb25fb3B0cyhhcmdjLCBhcmd2LCAi Y3JlYXRlZGIiLCBoZWxwKTsKIApAQCAtMTMzLDggKzEzNSw4IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkJCWNvbW1lbnQgPSBhcmd2W29wdGluZCArIDFdOwogCQkJYnJl YWs7CiAJCWRlZmF1bHQ6Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBtYW55IGNv bW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJCQlwcm9n bmFtZSwgYXJndltvcHRpbmQgKyAyXSk7CisJCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNv bW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkJIGFyZ3Zb b3B0aW5kICsgMl0pOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwi IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJCWV4aXQoMSk7CiAJ fQpAQCAtMTQzLDE0ICsxNDUsMTIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CXsKIAkJaWYgKGxjX2N0eXBlKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9u bHkgb25lIG9mIC0tbG9jYWxlIGFuZCAtLWxjLWN0eXBlIGNhbiBiZSBzcGVjaWZpZWRcbiIp LAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIm9ubHkgb25lIG9mIC0tbG9j YWxlIGFuZCAtLWxjLWN0eXBlIGNhbiBiZSBzcGVjaWZpZWQiKTsKIAkJCWV4aXQoMSk7CiAJ CX0KIAkJaWYgKGxjX2NvbGxhdGUpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog b25seSBvbmUgb2YgLS1sb2NhbGUgYW5kIC0tbGMtY29sbGF0ZSBjYW4gYmUgc3BlY2lmaWVk XG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJvbmx5IG9uZSBvZiAt LWxvY2FsZSBhbmQgLS1sYy1jb2xsYXRlIGNhbiBiZSBzcGVjaWZpZWQiKTsKIAkJCWV4aXQo MSk7CiAJCX0KIAkJbGNfY3R5cGUgPSBsb2NhbGU7CkBAIC0xNjEsOCArMTYxLDcgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXsKIAkJaWYgKHBnX2NoYXJfdG9fZW5jb2Rp bmcoZW5jb2RpbmcpIDwgMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBcIiVz XCIgaXMgbm90IGEgdmFsaWQgZW5jb2RpbmcgbmFtZVxuIiksCi0JCQkJCXByb2duYW1lLCBl bmNvZGluZyk7CisJCQlwZ19sb2dfZXJyb3IoIlwiJXNcIiBpcyBub3QgYSB2YWxpZCBlbmNv ZGluZyBuYW1lIiwgZW5jb2RpbmcpOwogCQkJZXhpdCgxKTsKIAkJfQogCX0KQEAgLTIxMCw4 ICsyMDksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzdWx0KSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBkYXRhYmFzZSBjcmVhdGlvbiBmYWlsZWQ6ICVzIiksCi0JCQkJcHJv Z25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJkYXRhYmFz ZSBjcmVhdGlvbiBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlQUWZp bmlzaChjb25uKTsKIAkJZXhpdCgxKTsKIAl9CkBAIC0yMzAsOCArMjI4LDggQEAgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHQp ICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y29tbWVudCBjcmVhdGlvbiBmYWlsZWQgKGRhdGFiYXNlIHdhcyBjcmVhdGVkKTogJXMiKSwK LQkJCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJv cigiY29tbWVudCBjcmVhdGlvbiBmYWlsZWQgKGRhdGFiYXNlIHdhcyBjcmVhdGVkKTogJXMi LAorCQkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCVBRZmluaXNoKGNvbm4pOwog CQkJZXhpdCgxKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZXVz ZXIuYyBiL3NyYy9iaW4vc2NyaXB0cy9jcmVhdGV1c2VyLmMKaW5kZXggODA5OGY0ODJiYi4u NzgyYzkyNGNkMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZXVzZXIuYwor KysgYi9zcmMvYmluL3NjcmlwdHMvY3JlYXRldXNlci5jCkBAIC0xMiw2ICsxMiw3IEBACiAK ICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1 ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zaW1wbGVfbGlz dC5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCkBAIC04Myw2ICs4 NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXByb2duYW1lID0gZ2V0 X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwg UEdfVEVYVERPTUFJTigicGdzY3JpcHRzIikpOworCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBd KTsKIAogCWhhbmRsZV9oZWxwX3ZlcnNpb25fb3B0cyhhcmdjLCBhcmd2LCAiY3JlYXRldXNl ciIsIGhlbHApOwogCkBAIC0xNzYsOCArMTc4LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCQkJbmV3dXNlciA9IGFyZ3Zbb3B0aW5kXTsKIAkJCWJyZWFrOwogCQlkZWZh dWx0OgotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUg YXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGFyZ3Zb b3B0aW5kICsgMV0pOworCQkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUg YXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJCSBhcmd2W29wdGluZCArIDFd KTsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBp bmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQlleGl0KDEpOwogCX0KQEAgLTI2OSw4 ICsyNzEsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJCQkJCQkJCQkg ICBOVUxMKTsKIAkJaWYgKCFlbmNyeXB0ZWRfcGFzc3dvcmQpCiAJCXsKLQkJCWZwcmludGYo c3RkZXJyLCBfKCIlczogcGFzc3dvcmQgZW5jcnlwdGlvbiBmYWlsZWQ6ICVzIiksCi0JCQkJ CXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoInBh c3N3b3JkIGVuY3J5cHRpb24gZmFpbGVkOiAlcyIsCisJCQkJCQkgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOwogCQkJZXhpdCgxKTsKIAkJfQogCQlhcHBlbmRTdHJpbmdMaXRlcmFsQ29ubigm c3FsLCBlbmNyeXB0ZWRfcGFzc3dvcmQsIGNvbm4pOwpAQCAtMzI0LDggKzMyNiw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1 bHQpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNyZWF0aW9uIG9mIG5ldyByb2xlIGZhaWxlZDogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFl cnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoImNyZWF0aW9uIG9mIG5ldyBy b2xlIGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCVBRZmluaXNoKGNv bm4pOwogCQlleGl0KDEpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9kcm9w ZGIuYyBiL3NyYy9iaW4vc2NyaXB0cy9kcm9wZGIuYwppbmRleCA0NTY4MGRkZTI3Li43OTdh ZWMwOWI5IDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvZHJvcGRiLmMKKysrIGIvc3Jj L2Jpbi9zY3JpcHRzL2Ryb3BkYi5jCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlICJw b3N0Z3Jlc19mZS5oIgogI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImZlX3V0aWxz L2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogCkBA IC01Niw2ICs1Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXByb2du YW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2Uo YXJndlswXSwgUEdfVEVYVERPTUFJTigicGdzY3JpcHRzIikpOworCXBnX2xvZ2dpbmdfaW5p dChhcmd2WzBdKTsKIAogCWhhbmRsZV9oZWxwX3ZlcnNpb25fb3B0cyhhcmdjLCBhcmd2LCAi ZHJvcGRiIiwgaGVscCk7CiAKQEAgLTk5LDE1ICsxMDEsMTUgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCXN3aXRjaCAoYXJnYyAtIG9wdGluZCkKIAl7CiAJCWNhc2UgMDoK LQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCBk YXRhYmFzZSBuYW1lXG4iKSwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJtaXNzaW5n IHJlcXVpcmVkIGFyZ3VtZW50IGRhdGFiYXNlIG5hbWUiKTsKIAkJCWZwcmludGYoc3RkZXJy LCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9n bmFtZSk7CiAJCQlleGl0KDEpOwogCQljYXNlIDE6CiAJCQlkYm5hbWUgPSBhcmd2W29wdGlu ZF07CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog dG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiks Ci0JCQkJCXByb2duYW1lLCBhcmd2W29wdGluZCArIDFdKTsKKwkJCXBnX2xvZ19lcnJvcigi dG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJ CQkJCQkgYXJndltvcHRpbmQgKyAxXSk7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwi JXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQkJ ZXhpdCgxKTsKIAl9CkBAIC0xMzcsOCArMTM5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCXJlc3VsdCA9IFBRZXhlYyhjb25uLCBzcWwuZGF0YSk7CiAJaWYgKFBRcmVz dWx0U3RhdHVzKHJlc3VsdCkgIT0gUEdSRVNfQ09NTUFORF9PSykKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogZGF0YWJhc2UgcmVtb3ZhbCBmYWlsZWQ6ICVzIiksCi0JCQkJcHJv Z25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJkYXRhYmFz ZSByZW1vdmFsIGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCVBRZmlu aXNoKGNvbm4pOwogCQlleGl0KDEpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0 cy9kcm9wdXNlci5jIGIvc3JjL2Jpbi9zY3JpcHRzL2Ryb3B1c2VyLmMKaW5kZXggMmI2Zjcy MTg0NC4uMzdhMGM5ODU4MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2Ryb3B1c2Vy LmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL2Ryb3B1c2VyLmMKQEAgLTEyLDYgKzEyLDcgQEAK IAogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAjaW5jbHVkZSAiY29tbW9uLmgiCisjaW5j bHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191 dGlscy5oIgogCiAKQEAgLTU1LDYgKzU2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAJc2V0X3BnbG9j YWxlX3Bnc2VydmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ3NjcmlwdHMiKSk7CisJ cGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCiAJaGFuZGxlX2hlbHBfdmVyc2lvbl9vcHRz KGFyZ2MsIGFyZ3YsICJkcm9wdXNlciIsIGhlbHApOwogCkBAIC0xMDAsOCArMTAyLDggQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJZHJvcHVzZXIgPSBhcmd2W29wdGlu ZF07CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog dG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiks Ci0JCQkJCXByb2duYW1lLCBhcmd2W29wdGluZCArIDFdKTsKKwkJCXBnX2xvZ19lcnJvcigi dG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJ CQkJCQkgYXJndltvcHRpbmQgKyAxXSk7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwi JXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQkJ ZXhpdCgxKTsKIAl9CkBAIC0xMTYsNyArMTE4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCQl9CiAJCWVsc2UKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBt aXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IHJvbGUgbmFtZVxuIiksIHByb2duYW1lKTsKKwkJ CXBnX2xvZ19lcnJvcigibWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCByb2xlIG5hbWUiKTsK IAkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZv cm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQlleGl0KDEpOwogCQl9CkBAIC0xNDIsOCAr MTQ0LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKFBRcmVzdWx0 U3RhdHVzKHJlc3VsdCkgIT0gUEdSRVNfQ09NTUFORF9PSykKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogcmVtb3ZhbCBvZiByb2xlIFwiJXNcIiBmYWlsZWQ6ICVzIiksCi0JCQkJ cHJvZ25hbWUsIGRyb3B1c2VyLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19l cnJvcigicmVtb3ZhbCBvZiByb2xlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJIGRyb3B1 c2VyLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCVBRZmluaXNoKGNvbm4pOwogCQlleGl0 KDEpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9ubHMubWsgYi9zcmMvYmlu L3NjcmlwdHMvbmxzLm1rCmluZGV4IDQwMzhjZGIzYjYuLjJjOTlhNmE0NjEgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vc2NyaXB0cy9ubHMubWsKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL25scy5t awpAQCAtMSwxMSArMSwxMyBAQAogIyBzcmMvYmluL3NjcmlwdHMvbmxzLm1rCiBDQVRBTE9H X05BTUUgICAgID0gcGdzY3JpcHRzCiBBVkFJTF9MQU5HVUFHRVMgID0gY3MgZGUgZXMgZnIg aGUgaXQgamEga28gcGwgcHRfQlIgcnUgc3YgdHIgemhfQ04KLUdFVFRFWFRfRklMRVMgICAg PSBjcmVhdGVkYi5jIGNyZWF0ZXVzZXIuYyBcCitHRVRURVhUX0ZJTEVTICAgID0gJChGUk9O VEVORF9DT01NT05fR0VUVEVYVF9GSUxFUykgXAorICAgICAgICAgICAgICAgICAgIGNyZWF0 ZWRiLmMgY3JlYXRldXNlci5jIFwKICAgICAgICAgICAgICAgICAgICBkcm9wZGIuYyBkcm9w dXNlci5jIFwKICAgICAgICAgICAgICAgICAgICBjbHVzdGVyZGIuYyB2YWN1dW1kYi5jIHJl aW5kZXhkYi5jIFwKICAgICAgICAgICAgICAgICAgICBwZ19pc3JlYWR5LmMgXAogICAgICAg ICAgICAgICAgICAgIGNvbW1vbi5jIFwKICAgICAgICAgICAgICAgICAgICAuLi8uLi9mZV91 dGlscy9wcmludC5jIFwKICAgICAgICAgICAgICAgICAgICAuLi8uLi9jb21tb24vZmVfbWVt dXRpbHMuYyAuLi8uLi9jb21tb24vdXNlcm5hbWUuYwotR0VUVEVYVF9UUklHR0VSUyA9IHNp bXBsZV9wcm9tcHQgeWVzbm9fcHJvbXB0CitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9OVEVO RF9DT01NT05fR0VUVEVYVF9UUklHR0VSUykgc2ltcGxlX3Byb21wdCB5ZXNub19wcm9tcHQK K0dFVFRFWFRfRkxBR1MgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdTKQpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3BnX2lzcmVhZHkuYyBiL3NyYy9iaW4vc2Ny aXB0cy9wZ19pc3JlYWR5LmMKaW5kZXggNDY3YzIyODkxYy4uNzAyNWRmNTIwMiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9zY3JpcHRzL3BnX2lzcmVhZHkuYworKysgYi9zcmMvYmluL3Njcmlw dHMvcGdfaXNyZWFkeS5jCkBAIC0xMSw2ICsxMSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jl c19mZS5oIgogI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKIAogI2RlZmluZSBERUZBVUxUX0NPTk5FQ1RfVElNRU9VVCAiMyIKIApAQCAtNjUs NiArNjYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCXByb2duYW1lID0g Z2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlsw XSwgUEdfVEVYVERPTUFJTigicGdzY3JpcHRzIikpOworCXBnX2xvZ2dpbmdfaW5pdChhcmd2 WzBdKTsKIAloYW5kbGVfaGVscF92ZXJzaW9uX29wdHMoYXJnYywgYXJndiwgcHJvZ25hbWUs IGhlbHApOwogCiAJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImQ6aDpw OnF0OlU6IiwgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpCkBAIC0xMDIsOCArMTA0LDgg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAob3B0aW5kIDwgYXJnYykK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFy Z3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0 aW5kXSk7CisJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50 cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRm KHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4i KSwgcHJvZ25hbWUpOwogCiAJCS8qCkBAIC0xMzksNyArMTQxLDcgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCW9wdHMgPSBQUWNvbm5pbmZvUGFyc2UocGdkYm5hbWUsICZl cnJtc2cpOwogCQlpZiAob3B0cyA9PSBOVUxMKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6ICVzIiksIHByb2duYW1lLCBlcnJtc2cpOworCQkJcGdfbG9nX2Vycm9yKCIlcyIs IGVycm1zZyk7CiAJCQlleGl0KFBRUElOR19OT19BVFRFTVBUKTsKIAkJfQogCX0KQEAgLTE0 Nyw3ICsxNDksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlkZWZzID0gUFFj b25uZGVmYXVsdHMoKTsKIAlpZiAoZGVmcyA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3QgZmV0Y2ggZGVmYXVsdCBvcHRpb25zXG4iKSwgcHJvZ25h bWUpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBmZXRjaCBkZWZhdWx0IG9wdGlvbnMi KTsKIAkJZXhpdChQUVBJTkdfTk9fQVRURU1QVCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmluL3NjcmlwdHMvcmVpbmRleGRiLmMgYi9zcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMK aW5kZXggNjlmYjJmOGZkMi4uNTUyNmViYmMxYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3Jp cHRzL3JlaW5kZXhkYi5jCisrKyBiL3NyYy9iaW4vc2NyaXB0cy9yZWluZGV4ZGIuYwpAQCAt MTEsNiArMTEsNyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKICNpbmNsdWRlICJj b21tb24uaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVf dXRpbHMvc2ltcGxlX2xpc3QuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMu aCIKIApAQCAtNzQsNiArNzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAK IAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdz ZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnc2NyaXB0cyIpKTsKKwlwZ19sb2dn aW5nX2luaXQoYXJndlswXSk7CiAKIAloYW5kbGVfaGVscF92ZXJzaW9uX29wdHMoYXJnYywg YXJndiwgInJlaW5kZXhkYiIsIGhlbHApOwogCkBAIC0xNDUsOCArMTQ3LDggQEAgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMg KGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOwor CQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0 IGlzIFwiJXNcIikiLAorCQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIs IF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2du YW1lKTsKIAkJZXhpdCgxKTsKIAl9CkBAIC0xNTcsMjcgKzE1OSwyNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJewogCQlpZiAoZGJuYW1lKQogCQl7Ci0JCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNhbm5vdCByZWluZGV4IGFsbCBkYXRhYmFzZXMgYW5kIGEgc3Bl Y2lmaWMgb25lIGF0IHRoZSBzYW1lIHRpbWVcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2df ZXJyb3IoImNhbm5vdCByZWluZGV4IGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMgb25l IGF0IHRoZSBzYW1lIHRpbWUiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJaWYgKHN5c2NhdGFs b2cpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHJlaW5kZXggYWxs IGRhdGFiYXNlcyBhbmQgc3lzdGVtIGNhdGFsb2dzIGF0IHRoZSBzYW1lIHRpbWVcbiIpLCBw cm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNhbm5vdCByZWluZGV4IGFsbCBkYXRhYmFz ZXMgYW5kIHN5c3RlbSBjYXRhbG9ncyBhdCB0aGUgc2FtZSB0aW1lIik7CiAJCQlleGl0KDEp OwogCQl9CiAJCWlmIChzY2hlbWFzLmhlYWQgIT0gTlVMTCkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjYW5ub3QgcmVpbmRleCBzcGVjaWZpYyBzY2hlbWEocykgaW4gYWxs IGRhdGFiYXNlc1xuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IHJl aW5kZXggc3BlY2lmaWMgc2NoZW1hKHMpIGluIGFsbCBkYXRhYmFzZXMiKTsKIAkJCWV4aXQo MSk7CiAJCX0KIAkJaWYgKHRhYmxlcy5oZWFkICE9IE5VTEwpCiAJCXsKLQkJCWZwcmludGYo c3RkZXJyLCBfKCIlczogY2Fubm90IHJlaW5kZXggc3BlY2lmaWMgdGFibGUocykgaW4gYWxs IGRhdGFiYXNlc1xuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IHJl aW5kZXggc3BlY2lmaWMgdGFibGUocykgaW4gYWxsIGRhdGFiYXNlcyIpOwogCQkJZXhpdCgx KTsKIAkJfQogCQlpZiAoaW5kZXhlcy5oZWFkICE9IE5VTEwpCiAJCXsKLQkJCWZwcmludGYo c3RkZXJyLCBfKCIlczogY2Fubm90IHJlaW5kZXggc3BlY2lmaWMgaW5kZXgoZXMpIGluIGFs bCBkYXRhYmFzZXNcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNhbm5vdCBy ZWluZGV4IHNwZWNpZmljIGluZGV4KGVzKSBpbiBhbGwgZGF0YWJhc2VzIik7CiAJCQlleGl0 KDEpOwogCQl9CiAKQEAgLTE4OCwxNyArMTkwLDE3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAl7CiAJCWlmIChzY2hlbWFzLmhlYWQgIT0gTlVMTCkKIAkJewotCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgcmVpbmRleCBzcGVjaWZpYyBzY2hlbWEocykg YW5kIHN5c3RlbSBjYXRhbG9ncyBhdCB0aGUgc2FtZSB0aW1lXG4iKSwgcHJvZ25hbWUpOwor CQkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgcmVpbmRleCBzcGVjaWZpYyBzY2hlbWEocykgYW5k IHN5c3RlbSBjYXRhbG9ncyBhdCB0aGUgc2FtZSB0aW1lIik7CiAJCQlleGl0KDEpOwogCQl9 CiAJCWlmICh0YWJsZXMuaGVhZCAhPSBOVUxMKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNhbm5vdCByZWluZGV4IHNwZWNpZmljIHRhYmxlKHMpIGFuZCBzeXN0ZW0gY2F0 YWxvZ3MgYXQgdGhlIHNhbWUgdGltZVxuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJv cigiY2Fubm90IHJlaW5kZXggc3BlY2lmaWMgdGFibGUocykgYW5kIHN5c3RlbSBjYXRhbG9n cyBhdCB0aGUgc2FtZSB0aW1lIik7CiAJCQlleGl0KDEpOwogCQl9CiAJCWlmIChpbmRleGVz LmhlYWQgIT0gTlVMTCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3Qg cmVpbmRleCBzcGVjaWZpYyBpbmRleChlcykgYW5kIHN5c3RlbSBjYXRhbG9ncyBhdCB0aGUg c2FtZSB0aW1lXG4iKSwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgcmVp bmRleCBzcGVjaWZpYyBpbmRleChlcykgYW5kIHN5c3RlbSBjYXRhbG9ncyBhdCB0aGUgc2Ft ZSB0aW1lIik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTMwNSwxNyArMzA3LDE3IEBAIHJl aW5kZXhfb25lX2RhdGFiYXNlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmRibmFt ZSwgY29uc3QgY2hhciAqdHlwZSwKIAlpZiAoIWV4ZWN1dGVNYWludGVuYW5jZUNvbW1hbmQo Y29ubiwgc3FsLmRhdGEsIGVjaG8pKQogCXsKIAkJaWYgKHN0cmNtcCh0eXBlLCAiVEFCTEUi KSA9PSAwKQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiByZWluZGV4aW5nIG9mIHRhYmxl IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIpLAotCQkJCQlwcm9nbmFt ZSwgbmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9n X2Vycm9yKCJyZWluZGV4aW5nIG9mIHRhYmxlIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIg ZmFpbGVkOiAlcyIsCisJCQkJCQkgbmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOwogCQlpZiAoc3RyY21wKHR5cGUsICJJTkRFWCIpID09IDApCi0JCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IHJlaW5kZXhpbmcgb2YgaW5kZXggXCIlc1wiIGluIGRhdGFiYXNl IFwiJXNcIiBmYWlsZWQ6ICVzIiksCi0JCQkJCXByb2duYW1lLCBuYW1lLCBQUWRiKGNvbm4p LCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoInJlaW5kZXhpbmcg b2YgaW5kZXggXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJ CSBuYW1lLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCWlmIChzdHJj bXAodHlwZSwgIlNDSEVNQSIpID09IDApCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHJl aW5kZXhpbmcgb2Ygc2NoZW1hIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAl cyIpLAotCQkJCQlwcm9nbmFtZSwgbmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJyZWluZGV4aW5nIG9mIHNjaGVtYSBcIiVzXCIg aW4gZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiLAorCQkJCQkJIG5hbWUsIFBRZGIoY29u biksIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJZWxzZQotCQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiByZWluZGV4aW5nIG9mIGRhdGFiYXNlIFwiJXNcIiBmYWlsZWQ6ICVzIiksCi0J CQkJCXByb2duYW1lLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlw Z19sb2dfZXJyb3IoInJlaW5kZXhpbmcgb2YgZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMi LAorCQkJCQkJIFBRZGIoY29ubiksIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJUFFmaW5p c2goY29ubik7CiAJCWV4aXQoMSk7CiAJfQpAQCAtMzg2LDggKzM4OCw4IEBAIHJlaW5kZXhf c3lzdGVtX2NhdGFsb2dzKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqaG9zdCwg Y29uc3QgY2hhciAqcG9ydCwKIAogCWlmICghZXhlY3V0ZU1haW50ZW5hbmNlQ29tbWFuZChj b25uLCBzcWwuZGF0YSwgZWNobykpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHJl aW5kZXhpbmcgb2Ygc3lzdGVtIGNhdGFsb2dzIGZhaWxlZDogJXMiKSwKLQkJCQlwcm9nbmFt ZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoInJlaW5kZXhpbmcg b2Ygc3lzdGVtIGNhdGFsb2dzIGZhaWxlZDogJXMiLAorCQkJCQkgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOwogCQlQUWZpbmlzaChjb25uKTsKIAkJZXhpdCgxKTsKIAl9CmRpZmYgLS1naXQg YS9zcmMvYmluL3NjcmlwdHMvdmFjdXVtZGIuYyBiL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1k Yi5jCmluZGV4IDEyN2I3NWUwYjQuLmQ0NDliZTU5YWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v c2NyaXB0cy92YWN1dW1kYi5jCisrKyBiL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1kYi5jCkBA IC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzc19kLmgiCiAKICNp bmNsdWRlICJjb21tb24uaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5j bHVkZSAiZmVfdXRpbHMvc2ltcGxlX2xpc3QuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJp bmdfdXRpbHMuaCIKIApAQCAtMTQxLDYgKzE0Miw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAogCXNldF9w Z2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdzY3JpcHRzIikp OworCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAogCWhhbmRsZV9oZWxwX3ZlcnNpb25f b3B0cyhhcmdjLCBhcmd2LCAidmFjdXVtZGIiLCBoZWxwKTsKIApAQCAtMjAwLDE0ICsyMDIs MTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCWNvbmN1cnJlbnRDb25z ID0gYXRvaShvcHRhcmcpOwogCQkJCWlmIChjb25jdXJyZW50Q29ucyA8PSAwKQogCQkJCXsK LQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBudW1iZXIgb2YgcGFyYWxsZWwgam9icyBt dXN0IGJlIGF0IGxlYXN0IDFcbiIpLAotCQkJCQkJCXByb2duYW1lKTsKKwkJCQkJcGdfbG9n X2Vycm9yKCJudW1iZXIgb2YgcGFyYWxsZWwgam9icyBtdXN0IGJlIGF0IGxlYXN0IDEiKTsK IAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJaWYgKGNvbmN1cnJlbnRDb25zID4gRkRfU0VU U0laRSAtIDEpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBtYW55 IHBhcmFsbGVsIGpvYnMgcmVxdWVzdGVkIChtYXhpbXVtOiAlZClcbiIpLAotCQkJCQkJCXBy b2duYW1lLCBGRF9TRVRTSVpFIC0gMSk7CisJCQkJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkg cGFyYWxsZWwgam9icyByZXF1ZXN0ZWQgKG1heGltdW06ICVkKSIsCisJCQkJCQkJCSBGRF9T RVRTSVpFIC0gMSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtMjQx LDggKzI0Miw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChvcHRp bmQgPCBhcmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21t YW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFt ZSwgYXJndltvcHRpbmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxp bmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7 CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZv cm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQpAQCAtMjUxLDE0ICsy NTIsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXsKIAkJaWYgKHZhY29w dHMuZnVsbCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdXNlIHRo ZSBcIiVzXCIgb3B0aW9uIHdoZW4gcGVyZm9ybWluZyBvbmx5IGFuYWx5emVcbiIpLAotCQkJ CQlwcm9nbmFtZSwgImZ1bGwiKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IHVzZSB0aGUg XCIlc1wiIG9wdGlvbiB3aGVuIHBlcmZvcm1pbmcgb25seSBhbmFseXplIiwKKwkJCQkJCSAi ZnVsbCIpOwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAodmFjb3B0cy5mcmVlemUpCiAJCXsK LQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHVzZSB0aGUgXCIlc1wiIG9wdGlv biB3aGVuIHBlcmZvcm1pbmcgb25seSBhbmFseXplXG4iKSwKLQkJCQkJcHJvZ25hbWUsICJm cmVlemUiKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IHVzZSB0aGUgXCIlc1wiIG9wdGlv biB3aGVuIHBlcmZvcm1pbmcgb25seSBhbmFseXplIiwKKwkJCQkJCSAiZnJlZXplIik7CiAJ CQlleGl0KDEpOwogCQl9CiAJCWlmICh2YWNvcHRzLmRpc2FibGVfcGFnZV9za2lwcGluZykK QEAgLTI4MCwxNCArMjgxLDEyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl7 CiAJCWlmIChkYm5hbWUpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90 IHZhY3V1bSBhbGwgZGF0YWJhc2VzIGFuZCBhIHNwZWNpZmljIG9uZSBhdCB0aGUgc2FtZSB0 aW1lXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgdmFj dXVtIGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMgb25lIGF0IHRoZSBzYW1lIHRpbWUi KTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJaWYgKHRhYmxlcy5oZWFkICE9IE5VTEwpCiAJCXsK LQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHZhY3V1bSBzcGVjaWZpYyB0YWJs ZShzKSBpbiBhbGwgZGF0YWJhc2VzXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9n X2Vycm9yKCJjYW5ub3QgdmFjdXVtIHNwZWNpZmljIHRhYmxlKHMpIGluIGFsbCBkYXRhYmFz ZXMiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIApAQCAtNzkwLDEyICs3ODksMTEgQEAgcnVuX3Zh Y3V1bV9jb21tYW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqc3FsLCBib29sIGVjaG8s CiAJaWYgKCFzdGF0dXMpCiAJewogCQlpZiAodGFibGUpCi0JCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJXygiJXM6IHZhY3V1bWluZyBvZiB0YWJsZSBcIiVzXCIgaW4gZGF0YWJhc2UgXCIl c1wiIGZhaWxlZDogJXMiKSwKLQkJCQkJcHJvZ25hbWUsIHRhYmxlLCBQUWRiKGNvbm4pLCBQ UWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoInZhY3V1bWluZyBvZiB0 YWJsZSBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiLAorCQkJCQkJIHRh YmxlLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCWVsc2UKLQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogdmFjdXVtaW5nIG9mIGRhdGFiYXNlIFwiJXNcIiBmYWls ZWQ6ICVzIiksCi0JCQkJCXByb2duYW1lLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShj b25uKSk7CisJCQlwZ19sb2dfZXJyb3IoInZhY3V1bWluZyBvZiBkYXRhYmFzZSBcIiVzXCIg ZmFpbGVkOiAlcyIsCisJCQkJCQkgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikp OwogCiAJCWlmICghYXN5bmMpCiAJCXsKQEAgLTkyOSw4ICs5MjcsOCBAQCBQcm9jZXNzUXVl cnlSZXN1bHQoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzdWx0LCBjb25zdCBjaGFyICpw cm9nbmFtZSkKIAl7CiAJCWNoYXIJICAgKnNxbFN0YXRlID0gUFFyZXN1bHRFcnJvckZpZWxk KHJlc3VsdCwgUEdfRElBR19TUUxTVEFURSk7CiAKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiB2YWN1dW1pbmcgb2YgZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiKSwKLQkJCQlwcm9n bmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJy b3IoInZhY3V1bWluZyBvZiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIsCisJCQkJCSBQ UWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAKIAkJaWYgKHNxbFN0YXRlICYm IHN0cmNtcChzcWxTdGF0ZSwgRVJSQ09ERV9VTkRFRklORURfVEFCTEUpICE9IDApCiAJCXsK ZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vY29udHJvbGRhdGFfdXRpbHMuYyBiL3NyYy9jb21t b24vY29udHJvbGRhdGFfdXRpbHMuYwppbmRleCBhYmZlNzA2NWY1Li4xNzk5OGE5ZjM5IDEw MDY0NAotLS0gYS9zcmMvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmMKKysrIGIvc3JjL2Nv bW1vbi9jb250cm9sZGF0YV91dGlscy5jCkBAIC0yNiwxMCArMjYsMTMgQEAKIAogI2luY2x1 ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgImNvbW1vbi9jb250cm9sZGF0 YV91dGlscy5oIgorI2lmZGVmIEZST05URU5ECisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2lu Zy5oIgorI2VuZGlmCiAjaW5jbHVkZSAicG9ydC9wZ19jcmMzMmMuaCIKIAogLyoKLSAqIGdl dF9jb250cm9sZmlsZShjaGFyICpEYXRhRGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSwgYm9v bCAqY3JjX29rX3ApCisgKiBnZXRfY29udHJvbGZpbGUoY2hhciAqRGF0YURpciwgYm9vbCAq Y3JjX29rX3ApCiAgKgogICogR2V0IGNvbnRyb2xmaWxlIHZhbHVlcy4gIFRoZSByZXN1bHQg aXMgcmV0dXJuZWQgYXMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZQogICogY29udHJvbCBmaWxl IGRhdGEuCkBAIC0zOCw3ICs0MSw3IEBACiAgKiBmaWxlIGRhdGEgaXMgY29ycmVjdC4KICAq LwogQ29udHJvbEZpbGVEYXRhICoKLWdldF9jb250cm9sZmlsZShjb25zdCBjaGFyICpEYXRh RGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSwgYm9vbCAqY3JjX29rX3ApCitnZXRfY29udHJv bGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwgYm9vbCAqY3JjX29rX3ApCiB7CiAJQ29udHJv bEZpbGVEYXRhICpDb250cm9sRmlsZTsKIAlpbnQJCQlmZDsKQEAgLTU5LDggKzYyLDggQEAg Z2V0X2NvbnRyb2xmaWxlKGNvbnN0IGNoYXIgKkRhdGFEaXIsIGNvbnN0IGNoYXIgKnByb2du YW1lLCBib29sICpjcmNfb2tfcCkKIAkJCQkJCUNvbnRyb2xGaWxlUGF0aCkpKTsKICNlbHNl CiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIl c1wiIGZvciByZWFkaW5nOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIENvbnRyb2xGaWxlUGF0 aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBm aWxlIFwiJXNcIiBmb3IgcmVhZGluZzogJW0iLAorCQkJCQkgQ29udHJvbEZpbGVQYXRoKTsK IAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNlbmRpZgpAQCAtNzUsOCArNzgsNyBAQCBn ZXRfY29udHJvbGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwgY29uc3QgY2hhciAqcHJvZ25h bWUsIGJvb2wgKmNyY19va19wKQogCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVhZCBmaWxl IFwiJXNcIjogJW0iLCBDb250cm9sRmlsZVBhdGgpKSk7CiAjZWxzZQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlc1xuIiks Ci0JCQkJCXByb2duYW1lLCBDb250cm9sRmlsZVBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJ CQlwZ19sb2dfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsIENvbnRy b2xGaWxlUGF0aCk7CiAJCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJCX0KICNlbmRpZgpAQCAt ODgsOCArOTAsOCBAQCBnZXRfY29udHJvbGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwgY29u c3QgY2hhciAqcHJvZ25hbWUsIGJvb2wgKmNyY19va19wKQogCQkJCQkJCUNvbnRyb2xGaWxl UGF0aCwgciwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpKSk7CiAjZWxzZQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiByZWFk ICVkIG9mICV6dVxuIiksCi0JCQkJCXByb2duYW1lLCBDb250cm9sRmlsZVBhdGgsIHIsIHNp emVvZihDb250cm9sRmlsZURhdGEpKTsKKwkJCXBnX2xvZ19mYXRhbCgiY291bGQgbm90IHJl YWQgZmlsZSBcIiVzXCI6IHJlYWQgJWQgb2YgJXp1IiwKKwkJCQkJCSBDb250cm9sRmlsZVBh dGgsIHIsIHNpemVvZihDb250cm9sRmlsZURhdGEpKTsKIAkJCWV4aXQoRVhJVF9GQUlMVVJF KTsKIAkJfQogI2VuZGlmCkBAIC0xMTIsMTAgKzExNCwxMCBAQCBnZXRfY29udHJvbGZpbGUo Y29uc3QgY2hhciAqRGF0YURpciwgY29uc3QgY2hhciAqcHJvZ25hbWUsIGJvb2wgKmNyY19v a19wKQogI2lmbmRlZiBGUk9OVEVORAogCQllbG9nKEVSUk9SLCBfKCJieXRlIG9yZGVyaW5n IG1pc21hdGNoIikpOwogI2Vsc2UKLQkJcHJpbnRmKF8oIldBUk5JTkc6IHBvc3NpYmxlIGJ5 dGUgb3JkZXJpbmcgbWlzbWF0Y2hcbiIKLQkJCQkgIlRoZSBieXRlIG9yZGVyaW5nIHVzZWQg dG8gc3RvcmUgdGhlIHBnX2NvbnRyb2wgZmlsZSBtaWdodCBub3QgbWF0Y2ggdGhlIG9uZVxu IgotCQkJCSAidXNlZCBieSB0aGlzIHByb2dyYW0uICBJbiB0aGF0IGNhc2UgdGhlIHJlc3Vs dHMgYmVsb3cgd291bGQgYmUgaW5jb3JyZWN0LCBhbmRcbiIKLQkJCQkgInRoZSBQb3N0Z3Jl U1FMIGluc3RhbGxhdGlvbiB3b3VsZCBiZSBpbmNvbXBhdGlibGUgd2l0aCB0aGlzIGRhdGEg ZGlyZWN0b3J5LlxuIikpOworCQlwZ19sb2dfd2FybmluZygicG9zc2libGUgYnl0ZSBvcmRl cmluZyBtaXNtYXRjaFxuIgorCQkJCQkgICAiVGhlIGJ5dGUgb3JkZXJpbmcgdXNlZCB0byBz dG9yZSB0aGUgcGdfY29udHJvbCBmaWxlIG1pZ2h0IG5vdCBtYXRjaCB0aGUgb25lXG4iCisJ CQkJCSAgICJ1c2VkIGJ5IHRoaXMgcHJvZ3JhbS4gIEluIHRoYXQgY2FzZSB0aGUgcmVzdWx0 cyBiZWxvdyB3b3VsZCBiZSBpbmNvcnJlY3QsIGFuZFxuIgorCQkJCQkgICAidGhlIFBvc3Rn cmVTUUwgaW5zdGFsbGF0aW9uIHdvdWxkIGJlIGluY29tcGF0aWJsZSB3aXRoIHRoaXMgZGF0 YSBkaXJlY3RvcnkuIik7CiAjZW5kaWYKIAogCXJldHVybiBDb250cm9sRmlsZTsKZGlmZiAt LWdpdCBhL3NyYy9jb21tb24vZmlsZV91dGlscy5jIGIvc3JjL2NvbW1vbi9maWxlX3V0aWxz LmMKaW5kZXggNGJjYjljMWUwNS4uZTQ1YjBkOGUwZSAxMDA2NDQKLS0tIGEvc3JjL2NvbW1v bi9maWxlX3V0aWxzLmMKKysrIGIvc3JjL2NvbW1vbi9maWxlX3V0aWxzLmMKQEAgLTIwLDYg KzIwLDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9maWxl X3V0aWxzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogCiAKIC8qIERlZmlu ZSBQR19GTFVTSF9EQVRBX1dPUktTIGlmIHdlIGhhdmUgYW4gaW1wbGVtZW50YXRpb24gZm9y IHBnX2ZsdXNoX2RhdGEgKi8KQEAgLTM1LDEyICszNiwxMSBAQAogI2RlZmluZSBNSU5JTVVN X1ZFUlNJT05fRk9SX1BHX1dBTAkxMDAwMDAKIAogI2lmZGVmIFBHX0ZMVVNIX0RBVEFfV09S S1MKLXN0YXRpYyBpbnQgcHJlX3N5bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wg aXNkaXIsCi0JCQkgICBjb25zdCBjaGFyICpwcm9nbmFtZSk7CitzdGF0aWMgaW50IHByZV9z eW5jX2ZuYW1lKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyKTsKICNlbmRpZgogc3Rh dGljIHZvaWQgd2Fsa2Rpcihjb25zdCBjaGFyICpwYXRoLAotCQlpbnQgKCphY3Rpb24pIChj b25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hhciAqcHJvZ25hbWUpLAot CQlib29sIHByb2Nlc3Nfc3ltbGlua3MsIGNvbnN0IGNoYXIgKnByb2duYW1lKTsKKwkJaW50 ICgqYWN0aW9uKSAoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIpLAorCQlib29sIHBy b2Nlc3Nfc3ltbGlua3MpOwogCiAvKgogICogSXNzdWUgZnN5bmMgcmVjdXJzaXZlbHkgb24g UEdEQVRBIGFuZCBhbGwgaXRzIGNvbnRlbnRzLgpAQCAtNTYsNyArNTYsNiBAQCBzdGF0aWMg dm9pZCB3YWxrZGlyKGNvbnN0IGNoYXIgKnBhdGgsCiAgKi8KIHZvaWQKIGZzeW5jX3BnZGF0 YShjb25zdCBjaGFyICpwZ19kYXRhLAotCQkJIGNvbnN0IGNoYXIgKnByb2duYW1lLAogCQkJ IGludCBzZXJ2ZXJWZXJzaW9uKQogewogCWJvb2wJCXhsb2dfaXNfc3ltbGluazsKQEAgLTc5 LDggKzc4LDcgQEAgZnN5bmNfcGdkYXRhKGNvbnN0IGNoYXIgKnBnX2RhdGEsCiAJCXN0cnVj dCBzdGF0IHN0OwogCiAJCWlmIChsc3RhdChwZ193YWwsICZzdCkgPCAwKQotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJXNcbiIpLAot CQkJCQlwcm9nbmFtZSwgcGdfd2FsLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLCBwZ193YWwpOwogCQllbHNl IGlmIChTX0lTTE5LKHN0LnN0X21vZGUpKQogCQkJeGxvZ19pc19zeW1saW5rID0gdHJ1ZTsK IAl9CkBAIC05NCwxMCArOTIsMTAgQEAgZnN5bmNfcGdkYXRhKGNvbnN0IGNoYXIgKnBnX2Rh dGEsCiAJICogZGlyZWN0b3J5IGFuZCBpdHMgY29udGVudHMuCiAJICovCiAjaWZkZWYgUEdf RkxVU0hfREFUQV9XT1JLUwotCXdhbGtkaXIocGdfZGF0YSwgcHJlX3N5bmNfZm5hbWUsIGZh bHNlLCBwcm9nbmFtZSk7CisJd2Fsa2RpcihwZ19kYXRhLCBwcmVfc3luY19mbmFtZSwgZmFs c2UpOwogCWlmICh4bG9nX2lzX3N5bWxpbmspCi0JCXdhbGtkaXIocGdfd2FsLCBwcmVfc3lu Y19mbmFtZSwgZmFsc2UsIHByb2duYW1lKTsKLQl3YWxrZGlyKHBnX3RibHNwYywgcHJlX3N5 bmNfZm5hbWUsIHRydWUsIHByb2duYW1lKTsKKwkJd2Fsa2RpcihwZ193YWwsIHByZV9zeW5j X2ZuYW1lLCBmYWxzZSk7CisJd2Fsa2RpcihwZ190YmxzcGMsIHByZV9zeW5jX2ZuYW1lLCB0 cnVlKTsKICNlbmRpZgogCiAJLyoKQEAgLTEwOSwxMCArMTA3LDEwIEBAIGZzeW5jX3BnZGF0 YShjb25zdCBjaGFyICpwZ19kYXRhLAogCSAqIGluIHBnX3RibHNwYywgdGhleSdsbCBnZXQg ZnN5bmMnZCB0d2ljZS4gIFRoYXQncyBub3QgYW4gZXhwZWN0ZWQgY2FzZQogCSAqIHNvIHdl IGRvbid0IHdvcnJ5IGFib3V0IG9wdGltaXppbmcgaXQuCiAJICovCi0Jd2Fsa2RpcihwZ19k YXRhLCBmc3luY19mbmFtZSwgZmFsc2UsIHByb2duYW1lKTsKKwl3YWxrZGlyKHBnX2RhdGEs IGZzeW5jX2ZuYW1lLCBmYWxzZSk7CiAJaWYgKHhsb2dfaXNfc3ltbGluaykKLQkJd2Fsa2Rp cihwZ193YWwsIGZzeW5jX2ZuYW1lLCBmYWxzZSwgcHJvZ25hbWUpOwotCXdhbGtkaXIocGdf dGJsc3BjLCBmc3luY19mbmFtZSwgdHJ1ZSwgcHJvZ25hbWUpOworCQl3YWxrZGlyKHBnX3dh bCwgZnN5bmNfZm5hbWUsIGZhbHNlKTsKKwl3YWxrZGlyKHBnX3RibHNwYywgZnN5bmNfZm5h bWUsIHRydWUpOwogfQogCiAvKgpAQCAtMTIxLDE3ICsxMTksMTcgQEAgZnN5bmNfcGdkYXRh KGNvbnN0IGNoYXIgKnBnX2RhdGEsCiAgKiBUaGlzIGlzIGEgY29udmVuaWVudCB3cmFwcGVy IG9uIHRvcCBvZiB3YWxrZGlyKCkuCiAgKi8KIHZvaWQKLWZzeW5jX2Rpcl9yZWN1cnNlKGNv bnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqcHJvZ25hbWUpCitmc3luY19kaXJfcmVjdXJz ZShjb25zdCBjaGFyICpkaXIpCiB7CiAJLyoKIAkgKiBJZiBwb3NzaWJsZSwgaGludCB0byB0 aGUga2VybmVsIHRoYXQgd2UncmUgc29vbiBnb2luZyB0byBmc3luYyB0aGUgZGF0YQogCSAq IGRpcmVjdG9yeSBhbmQgaXRzIGNvbnRlbnRzLgogCSAqLwogI2lmZGVmIFBHX0ZMVVNIX0RB VEFfV09SS1MKLQl3YWxrZGlyKGRpciwgcHJlX3N5bmNfZm5hbWUsIGZhbHNlLCBwcm9nbmFt ZSk7CisJd2Fsa2RpcihkaXIsIHByZV9zeW5jX2ZuYW1lLCBmYWxzZSk7CiAjZW5kaWYKIAot CXdhbGtkaXIoZGlyLCBmc3luY19mbmFtZSwgZmFsc2UsIHByb2duYW1lKTsKKwl3YWxrZGly KGRpciwgZnN5bmNfZm5hbWUsIGZhbHNlKTsKIH0KIAogLyoKQEAgLTE1MCw4ICsxNDgsOCBA QCBmc3luY19kaXJfcmVjdXJzZShjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKnByb2du YW1lKQogICovCiBzdGF0aWMgdm9pZAogd2Fsa2Rpcihjb25zdCBjaGFyICpwYXRoLAotCQlp bnQgKCphY3Rpb24pIChjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hh ciAqcHJvZ25hbWUpLAotCQlib29sIHByb2Nlc3Nfc3ltbGlua3MsIGNvbnN0IGNoYXIgKnBy b2duYW1lKQorCQlpbnQgKCphY3Rpb24pIChjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2Rp ciksCisJCWJvb2wgcHJvY2Vzc19zeW1saW5rcykKIHsKIAlESVIJCSAgICpkaXI7CiAJc3Ry dWN0IGRpcmVudCAqZGU7CkBAIC0xNTksOCArMTU3LDcgQEAgd2Fsa2Rpcihjb25zdCBjaGFy ICpwYXRoLAogCWRpciA9IG9wZW5kaXIocGF0aCk7CiAJaWYgKGRpciA9PSBOVUxMKQogCXsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIl c1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBw YXRoKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTgzLDIwICsxODAsMTggQEAgd2Fsa2Rpcihj b25zdCBjaGFyICpwYXRoLAogCiAJCWlmIChzcmV0IDwgMCkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJ CQlwcm9nbmFtZSwgc3VicGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVtIiwgc3VicGF0aCk7CiAJCQljb250 aW51ZTsKIAkJfQogCiAJCWlmIChTX0lTUkVHKGZzdC5zdF9tb2RlKSkKLQkJCSgqYWN0aW9u KSAoc3VicGF0aCwgZmFsc2UsIHByb2duYW1lKTsKKwkJCSgqYWN0aW9uKSAoc3VicGF0aCwg ZmFsc2UpOwogCQllbHNlIGlmIChTX0lTRElSKGZzdC5zdF9tb2RlKSkKLQkJCXdhbGtkaXIo c3VicGF0aCwgYWN0aW9uLCBmYWxzZSwgcHJvZ25hbWUpOworCQkJd2Fsa2RpcihzdWJwYXRo LCBhY3Rpb24sIGZhbHNlKTsKIAl9CiAKIAlpZiAoZXJybm8pCi0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJ CXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAKIAkodm9pZCkg Y2xvc2VkaXIoZGlyKTsKIApAQCAtMjA2LDcgKzIwMSw3IEBAIHdhbGtkaXIoY29uc3QgY2hh ciAqcGF0aCwKIAkgKiBzeW5jZWQuICBSZWNlbnQgdmVyc2lvbnMgb2YgZXh0NCBoYXZlIG1h ZGUgdGhlIHdpbmRvdyBtdWNoIHdpZGVyIGJ1dAogCSAqIGl0J3MgYmVlbiBhbiBpc3N1ZSBm b3IgZXh0MyBhbmQgb3RoZXIgZmlsZXN5c3RlbXMgaW4gdGhlIHBhc3QuCiAJICovCi0JKCph Y3Rpb24pIChwYXRoLCB0cnVlLCBwcm9nbmFtZSk7CisJKCphY3Rpb24pIChwYXRoLCB0cnVl KTsKIH0KIAogLyoKQEAgLTIxOCw3ICsyMTMsNyBAQCB3YWxrZGlyKGNvbnN0IGNoYXIgKnBh dGgsCiAjaWZkZWYgUEdfRkxVU0hfREFUQV9XT1JLUwogCiBzdGF0aWMgaW50Ci1wcmVfc3lu Y19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hhciAqcHJv Z25hbWUpCitwcmVfc3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpcikK IHsKIAlpbnQJCQlmZDsKIApAQCAtMjI4LDggKzIyMyw3IEBAIHByZV9zeW5jX2ZuYW1lKGNv bnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKIAl7 CiAJCWlmIChlcnJubyA9PSBFQUNDRVMgfHwgKGlzZGlyICYmIGVycm5vID09IEVJU0RJUikp CiAJCQlyZXR1cm4gMDsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3Bl biBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBmbmFtZSwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjog JW0iLCBmbmFtZSk7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTI2MCw3ICsyNTQsNyBAQCBw cmVfc3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hh ciAqcHJvZ25hbWUpCiAgKiBvdGhlciBlcnJvcnMgbm9uLWZhdGFsbHkuCiAgKi8KIGludAot ZnN5bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIsIGNvbnN0IGNoYXIg KnByb2duYW1lKQorZnN5bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIp CiB7CiAJaW50CQkJZmQ7CiAJaW50CQkJZmxhZ3M7CkBAIC0yODgsOCArMjgyLDcgQEAgZnN5 bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIsIGNvbnN0IGNoYXIgKnBy b2duYW1lKQogCXsKIAkJaWYgKGVycm5vID09IEVBQ0NFUyB8fCAoaXNkaXIgJiYgZXJybm8g PT0gRUlTRElSKSkKIAkJCXJldHVybiAwOwotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNv dWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGZuYW1l LCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZp bGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMzAxLDgg KzI5NCw3IEBAIGZzeW5jX2ZuYW1lKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyLCBj b25zdCBjaGFyICpwcm9nbmFtZSkKIAkgKi8KIAlpZiAocmV0dXJuY29kZSAhPSAwICYmICEo aXNkaXIgJiYgZXJybm8gPT0gRUJBREYpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3QgZnN5bmMgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwg Zm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGZz eW5jIGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIAkJKHZvaWQpIGNsb3NlKGZkKTsKIAkJ cmV0dXJuIC0xOwogCX0KQEAgLTMxOCw3ICszMTAsNyBAQCBmc3luY19mbmFtZShjb25zdCBj aGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hhciAqcHJvZ25hbWUpCiAgKiBhbiBP UyBjcmFzaCBvciBwb3dlciBmYWlsdXJlLgogICovCiBpbnQKLWZzeW5jX3BhcmVudF9wYXRo KGNvbnN0IGNoYXIgKmZuYW1lLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKK2ZzeW5jX3BhcmVu dF9wYXRoKGNvbnN0IGNoYXIgKmZuYW1lKQogewogCWNoYXIJCXBhcmVudHBhdGhbTUFYUEdQ QVRIXTsKIApAQCAtMzMzLDcgKzMyNSw3IEBAIGZzeW5jX3BhcmVudF9wYXRoKGNvbnN0IGNo YXIgKmZuYW1lLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKIAlpZiAoc3RybGVuKHBhcmVudHBh dGgpID09IDApCiAJCXN0cmxjcHkocGFyZW50cGF0aCwgIi4iLCBNQVhQR1BBVEgpOwogCi0J aWYgKGZzeW5jX2ZuYW1lKHBhcmVudHBhdGgsIHRydWUsIHByb2duYW1lKSAhPSAwKQorCWlm IChmc3luY19mbmFtZShwYXJlbnRwYXRoLCB0cnVlKSAhPSAwKQogCQlyZXR1cm4gLTE7CiAK IAlyZXR1cm4gMDsKQEAgLTM0NSw3ICszMzcsNyBAQCBmc3luY19wYXJlbnRfcGF0aChjb25z dCBjaGFyICpmbmFtZSwgY29uc3QgY2hhciAqcHJvZ25hbWUpCiAgKiBXcmFwcGVyIGFyb3Vu ZCByZW5hbWUsIHNpbWlsYXIgdG8gdGhlIGJhY2tlbmQgdmVyc2lvbi4KICAqLwogaW50Ci1k dXJhYmxlX3JlbmFtZShjb25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxl LCBjb25zdCBjaGFyICpwcm9nbmFtZSkKK2R1cmFibGVfcmVuYW1lKGNvbnN0IGNoYXIgKm9s ZGZpbGUsIGNvbnN0IGNoYXIgKm5ld2ZpbGUpCiB7CiAJaW50CQkJZmQ7CiAKQEAgLTM1Niw3 ICszNDgsNyBAQCBkdXJhYmxlX3JlbmFtZShjb25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBj aGFyICpuZXdmaWxlLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKIAkgKiBiZWNhdXNlIGl0J3Mg dGhlbiBndWFyYW50ZWVkIHRoYXQgZWl0aGVyIHNvdXJjZSBvciB0YXJnZXQgZmlsZSBleGlz dHMKIAkgKiBhZnRlciBhIGNyYXNoLgogCSAqLwotCWlmIChmc3luY19mbmFtZShvbGRmaWxl LCBmYWxzZSwgcHJvZ25hbWUpICE9IDApCisJaWYgKGZzeW5jX2ZuYW1lKG9sZGZpbGUsIGZh bHNlKSAhPSAwKQogCQlyZXR1cm4gLTE7CiAKIAlmZCA9IG9wZW4obmV3ZmlsZSwgUEdfQklO QVJZIHwgT19SRFdSLCAwKTsKQEAgLTM2NCw4ICszNTYsNyBAQCBkdXJhYmxlX3JlbmFtZShj b25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxlLCBjb25zdCBjaGFyICpw cm9nbmFtZSkKIAl7CiAJCWlmIChlcnJubyAhPSBFTk9FTlQpCiAJCXsKLQkJCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJ CQkJcHJvZ25hbWUsIG5ld2ZpbGUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIG5ld2ZpbGUpOwogCQkJcmV0 dXJuIC0xOwogCQl9CiAJfQpAQCAtMzczLDggKzM2NCw3IEBAIGR1cmFibGVfcmVuYW1lKGNv bnN0IGNoYXIgKm9sZGZpbGUsIGNvbnN0IGNoYXIgKm5ld2ZpbGUsIGNvbnN0IGNoYXIgKnBy b2duYW1lKQogCXsKIAkJaWYgKGZzeW5jKGZkKSAhPSAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJ CQlwcm9nbmFtZSwgbmV3ZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlbSIsIG5ld2ZpbGUpOwogCQkJY2xv c2UoZmQpOwogCQkJcmV0dXJuIC0xOwogCQl9CkBAIC0zODQsOCArMzc0LDggQEAgZHVyYWJs ZV9yZW5hbWUoY29uc3QgY2hhciAqb2xkZmlsZSwgY29uc3QgY2hhciAqbmV3ZmlsZSwgY29u c3QgY2hhciAqcHJvZ25hbWUpCiAJLyogVGltZSB0byBkbyB0aGUgcmVhbCBkZWFsLi4uICov CiAJaWYgKHJlbmFtZShvbGRmaWxlLCBuZXdmaWxlKSAhPSAwKQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVuYW1lIGZpbGUgXCIlc1wiIHRvIFwiJXNcIjog JXNcbiIpLAotCQkJCXByb2duYW1lLCBvbGRmaWxlLCBuZXdmaWxlLCBzdHJlcnJvcihlcnJu bykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZW5hbWUgZmlsZSBcIiVzXCIgdG8g XCIlc1wiOiAlbSIsCisJCQkJCSBvbGRmaWxlLCBuZXdmaWxlKTsKIAkJcmV0dXJuIC0xOwog CX0KIApAQCAtMzkzLDEwICszODMsMTAgQEAgZHVyYWJsZV9yZW5hbWUoY29uc3QgY2hhciAq b2xkZmlsZSwgY29uc3QgY2hhciAqbmV3ZmlsZSwgY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJ ICogVG8gZ3VhcmFudGVlIHJlbmFtaW5nIHRoZSBmaWxlIGlzIHBlcnNpc3RlbnQsIGZzeW5j IHRoZSBmaWxlIHdpdGggaXRzCiAJICogbmV3IG5hbWUsIGFuZCBpdHMgY29udGFpbmluZyBk aXJlY3RvcnkuCiAJICovCi0JaWYgKGZzeW5jX2ZuYW1lKG5ld2ZpbGUsIGZhbHNlLCBwcm9n bmFtZSkgIT0gMCkKKwlpZiAoZnN5bmNfZm5hbWUobmV3ZmlsZSwgZmFsc2UpICE9IDApCiAJ CXJldHVybiAtMTsKIAotCWlmIChmc3luY19wYXJlbnRfcGF0aChuZXdmaWxlLCBwcm9nbmFt ZSkgIT0gMCkKKwlpZiAoZnN5bmNfcGFyZW50X3BhdGgobmV3ZmlsZSkgIT0gMCkKIAkJcmV0 dXJuIC0xOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3BnZm5hbWVz LmMgYi9zcmMvY29tbW9uL3BnZm5hbWVzLmMKaW5kZXggZjllMGE2OWJlMC4uOTViMTdlNDdk OCAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9wZ2ZuYW1lcy5jCisrKyBiL3NyYy9jb21tb24v cGdmbmFtZXMuYwpAQCAtMjAsNiArMjAsMTIgQEAKIAogI2luY2x1ZGUgPGRpcmVudC5oPgog CisjaWZuZGVmIEZST05URU5ECisjZGVmaW5lIHBnX2xvZ193YXJuaW5nKC4uLikgZWxvZyhX QVJOSU5HLCBfX1ZBX0FSR1NfXykKKyNlbHNlCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2lu Zy5oIgorI2VuZGlmCisKIC8qCiAgKiBwZ2ZuYW1lcwogICoKQEAgLTM5LDEyICs0NSw3IEBA IHBnZm5hbWVzKGNvbnN0IGNoYXIgKnBhdGgpCiAJZGlyID0gb3BlbmRpcihwYXRoKTsKIAlp ZiAoZGlyID09IE5VTEwpCiAJewotI2lmbmRlZiBGUk9OVEVORAotCQllbG9nKFdBUk5JTkcs ICJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHBhdGgpOwotI2Vsc2UK LQkJZnByaW50ZihzdGRlcnIsIF8oImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6 ICVzXG4iKSwKLQkJCQlwYXRoLCBzdHJlcnJvcihlcnJubykpOwotI2VuZGlmCisJCXBnX2xv Z193YXJuaW5nKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHBhdGgp OwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTY1LDI2ICs2NiwxMiBAQCBwZ2ZuYW1lcyhj b25zdCBjaGFyICpwYXRoKQogCX0KIAogCWlmIChlcnJubykKLQl7Ci0jaWZuZGVmIEZST05U RU5ECi0JCWVsb2coV0FSTklORywgImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6 ICVtIiwgcGF0aCk7Ci0jZWxzZQotCQlmcHJpbnRmKHN0ZGVyciwgXygiY291bGQgbm90IHJl YWQgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXBhdGgsIHN0cmVycm9yKGVycm5v KSk7Ci0jZW5kaWYKLQl9CisJCXBnX2xvZ193YXJuaW5nKCJjb3VsZCBub3QgcmVhZCBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsIHBhdGgpOwogCiAJZmlsZW5hbWVzW251bW5hbWVzXSA9IE5V TEw7CiAKIAlpZiAoY2xvc2VkaXIoZGlyKSkKLQl7Ci0jaWZuZGVmIEZST05URU5ECi0JCWVs b2coV0FSTklORywgImNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHBh dGgpOwotI2Vsc2UKLQkJZnByaW50ZihzdGRlcnIsIF8oImNvdWxkIG5vdCBjbG9zZSBkaXJl Y3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKLSNl bmRpZgotCX0KKwkJcGdfbG9nX3dhcm5pbmcoImNvdWxkIG5vdCBjbG9zZSBkaXJlY3Rvcnkg XCIlc1wiOiAlbSIsIHBhdGgpOwogCiAJcmV0dXJuIGZpbGVuYW1lczsKIH0KZGlmZiAtLWdp dCBhL3NyYy9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5jIGIvc3JjL2NvbW1vbi9yZXN0cmlj dGVkX3Rva2VuLmMKaW5kZXggYzRjY2MwZTU1Yy4uM2Y1N2ZmOGI0MCAxMDA2NDQKLS0tIGEv c3JjL2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmMKKysrIGIvc3JjL2NvbW1vbi9yZXN0cmlj dGVkX3Rva2VuLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5o IgogCiAjaW5jbHVkZSAiY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCIKKyNpbmNsdWRlICJm ZV91dGlscy9sb2dnaW5nLmgiCiAKICNpZmRlZiBXSU4zMgogCkBAIC00Myw3ICs0NCw3IEBA IHR5cGVkZWYgQk9PTCAoV0lOQVBJICogX19DcmVhdGVSZXN0cmljdGVkVG9rZW4pIChIQU5E TEUsIERXT1JELCBEV09SRCwgUFNJRF9BTkRfCiAgKiBOT1QgZXhlY3V0ZSBhbnl0aGluZy4K ICAqLwogSEFORExFCi1DcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjaGFyICpjbWQsIFBST0NF U1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZvLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKK0Ny ZWF0ZVJlc3RyaWN0ZWRQcm9jZXNzKGNoYXIgKmNtZCwgUFJPQ0VTU19JTkZPUk1BVElPTiAq cHJvY2Vzc0luZm8pCiB7CiAJQk9PTAkJYjsKIAlTVEFSVFVQSU5GTyBzaTsKQEAgLTY1LDcg KzY2LDcgQEAgQ3JlYXRlUmVzdHJpY3RlZFByb2Nlc3MoY2hhciAqY21kLCBQUk9DRVNTX0lO Rk9STUFUSU9OICpwcm9jZXNzSW5mbywgY29uc3QgY2hhcgogCiAJaWYgKF9DcmVhdGVSZXN0 cmljdGVkVG9rZW4gPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogV0FS TklORzogY2Fubm90IGNyZWF0ZSByZXN0cmljdGVkIHRva2VucyBvbiB0aGlzIHBsYXRmb3Jt XG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfd2FybmluZygiY2Fubm90IGNyZWF0ZSByZXN0 cmljdGVkIHRva2VucyBvbiB0aGlzIHBsYXRmb3JtIik7CiAJCWlmIChBZHZhcGkzMkhhbmRs ZSAhPSBOVUxMKQogCQkJRnJlZUxpYnJhcnkoQWR2YXBpMzJIYW5kbGUpOwogCQlyZXR1cm4g MDsKQEAgLTc0LDcgKzc1LDcgQEAgQ3JlYXRlUmVzdHJpY3RlZFByb2Nlc3MoY2hhciAqY21k LCBQUk9DRVNTX0lORk9STUFUSU9OICpwcm9jZXNzSW5mbywgY29uc3QgY2hhcgogCS8qIE9w ZW4gdGhlIGN1cnJlbnQgdG9rZW4gdG8gdXNlIGFzIGEgYmFzZSBmb3IgdGhlIHJlc3RyaWN0 ZWQgb25lICovCiAJaWYgKCFPcGVuUHJvY2Vzc1Rva2VuKEdldEN1cnJlbnRQcm9jZXNzKCks IFRPS0VOX0FMTF9BQ0NFU1MsICZvcmlnVG9rZW4pKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBwcm9jZXNzIHRva2VuOiBlcnJvciBjb2RlICVsdVxu IiksIHByb2duYW1lLCBHZXRMYXN0RXJyb3IoKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IG9wZW4gcHJvY2VzcyB0b2tlbjogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3Io KSk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtODcsOCArODgsNyBAQCBDcmVhdGVSZXN0cmlj dGVkUHJvY2VzcyhjaGFyICpjbWQsIFBST0NFU1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZv LCBjb25zdCBjaGFyCiAJCQkJCQkJCSAgU0VDVVJJVFlfQlVJTFRJTl9ET01BSU5fUklELCBE T01BSU5fQUxJQVNfUklEX1BPV0VSX1VTRVJTLCAwLCAwLCAwLCAwLCAwLAogCQkJCQkJCQkg IDAsICZkcm9wU2lkc1sxXS5TaWQpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3QgYWxsb2NhdGUgU0lEczogZXJyb3IgY29kZSAlbHVcbiIpLAotCQkJCXByb2du YW1lLCBHZXRMYXN0RXJyb3IoKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGFsbG9j YXRlIFNJRHM6IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9yKCkpOwogCQlyZXR1cm4g MDsKIAl9CiAKQEAgLTEwNyw4ICsxMDcsNyBAQCBDcmVhdGVSZXN0cmljdGVkUHJvY2Vzcyhj aGFyICpjbWQsIFBST0NFU1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZvLCBjb25zdCBjaGFy CiAKIAlpZiAoIWIpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBj cmVhdGUgcmVzdHJpY3RlZCB0b2tlbjogZXJyb3IgY29kZSAlbHVcbiIpLAotCQkJCXByb2du YW1lLCBHZXRMYXN0RXJyb3IoKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0 ZSByZXN0cmljdGVkIHRva2VuOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsK IAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xMjksNyArMTI4LDcgQEAgQ3JlYXRlUmVzdHJpY3Rl ZFByb2Nlc3MoY2hhciAqY21kLCBQUk9DRVNTX0lORk9STUFUSU9OICpwcm9jZXNzSW5mbywg Y29uc3QgY2hhcgogCQkJCQkJCSBwcm9jZXNzSW5mbykpCiAKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IHN0YXJ0IHByb2Nlc3MgZm9yIGNvbW1hbmQgXCIlc1wi OiBlcnJvciBjb2RlICVsdVxuIiksIHByb2duYW1lLCBjbWQsIEdldExhc3RFcnJvcigpKTsK KwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc3RhcnQgcHJvY2VzcyBmb3IgY29tbWFuZCBc IiVzXCI6IGVycm9yIGNvZGUgJWx1IiwgY21kLCBHZXRMYXN0RXJyb3IoKSk7CiAJCXJldHVy biAwOwogCX0KIApAQCAtMTQzLDcgKzE0Miw3IEBAIENyZWF0ZVJlc3RyaWN0ZWRQcm9jZXNz KGNoYXIgKmNtZCwgUFJPQ0VTU19JTkZPUk1BVElPTiAqcHJvY2Vzc0luZm8sIGNvbnN0IGNo YXIKICAqIE9uIG90aGVyIHBsYXRmb3JtcyBkbyBub3RoaW5nLgogICovCiB2b2lkCi1nZXRf cmVzdHJpY3RlZF90b2tlbihjb25zdCBjaGFyICpwcm9nbmFtZSkKK2dldF9yZXN0cmljdGVk X3Rva2VuKHZvaWQpCiB7CiAjaWZkZWYgV0lOMzIKIAlIQU5ETEUJCXJlc3RyaWN0ZWRUb2tl bjsKQEAgLTE2NSw5ICsxNjQsOSBAQCBnZXRfcmVzdHJpY3RlZF90b2tlbihjb25zdCBjaGFy ICpwcm9nbmFtZSkKIAogCQlwdXRlbnYoIlBHX1JFU1RSSUNUX0VYRUM9MSIpOwogCi0JCWlm ICgocmVzdHJpY3RlZFRva2VuID0gQ3JlYXRlUmVzdHJpY3RlZFByb2Nlc3MoY21kbGluZSwg JnBpLCBwcm9nbmFtZSkpID09IDApCisJCWlmICgocmVzdHJpY3RlZFRva2VuID0gQ3JlYXRl UmVzdHJpY3RlZFByb2Nlc3MoY21kbGluZSwgJnBpKSkgPT0gMCkKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmUtZXhlY3V0ZSB3aXRoIHJlc3RyaWN0ZWQg dG9rZW46IGVycm9yIGNvZGUgJWx1XG4iKSwgcHJvZ25hbWUsIEdldExhc3RFcnJvcigpKTsK KwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJlLWV4ZWN1dGUgd2l0aCByZXN0cmljdGVk IHRva2VuOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKIAkJfQogCQllbHNl CiAJCXsKQEAgLTE4Myw3ICsxODIsNyBAQCBnZXRfcmVzdHJpY3RlZF90b2tlbihjb25zdCBj aGFyICpwcm9nbmFtZSkKIAogCQkJaWYgKCFHZXRFeGl0Q29kZVByb2Nlc3MocGkuaFByb2Nl c3MsICZ4KSkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBn ZXQgZXhpdCBjb2RlIGZyb20gc3VicHJvY2VzczogZXJyb3IgY29kZSAlbHVcbiIpLCBwcm9n bmFtZSwgR2V0TGFzdEVycm9yKCkpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGdl dCBleGl0IGNvZGUgZnJvbSBzdWJwcm9jZXNzOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RF cnJvcigpKTsKIAkJCQlleGl0KDEpOwogCQkJfQogCQkJZXhpdCh4KTsKZGlmZiAtLWdpdCBh L3NyYy9jb21tb24vcm10cmVlLmMgYi9zcmMvY29tbW9uL3JtdHJlZS5jCmluZGV4IDU3MTY0 ZDQ1ZDYuLjMwNTJkMDEzZWUgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vcm10cmVlLmMKKysr IGIvc3JjL2NvbW1vbi9ybXRyZWUuYwpAQCAtMjAsNiArMjAsMTIgQEAKICNpbmNsdWRlIDx1 bmlzdGQuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCisjaWZuZGVmIEZST05URU5ECisj ZGVmaW5lIHBnX2xvZ193YXJuaW5nKC4uLikgZWxvZyhXQVJOSU5HLCBfX1ZBX0FSR1NfXykK KyNlbHNlCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgorI2VuZGlmCisKIAogLyoK ICAqCXJtdHJlZQpAQCAtNzAsMTMgKzc2LDggQEAgcm10cmVlKGNvbnN0IGNoYXIgKnBhdGgs IGJvb2wgcm10b3BkaXIpCiAJCXsKIAkJCWlmIChlcnJubyAhPSBFTk9FTlQpCiAJCQl7Ci0j aWZuZGVmIEZST05URU5ECi0JCQkJZWxvZyhXQVJOSU5HLCAiY291bGQgbm90IHN0YXQgZmls ZSBvciBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJcGdfbG9nX3dhcm5pbmcoImNvdWxk IG5vdCBzdGF0IGZpbGUgb3IgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAogCQkJCQkgcGF0aGJ1 Zik7Ci0jZWxzZQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCJjb3VsZCBub3Qgc3RhdCBmaWxl IG9yIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXBhdGhidWYsIHN0cmVycm9y KGVycm5vKSk7Ci0jZW5kaWYKIAkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCX0KIAkJCWNvbnRp bnVlOwpAQCAtOTcsMTMgKzk4LDggQEAgcm10cmVlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wg cm10b3BkaXIpCiAJCQl7CiAJCQkJaWYgKGVycm5vICE9IEVOT0VOVCkKIAkJCQl7Ci0jaWZu ZGVmIEZST05URU5ECi0JCQkJCWVsb2coV0FSTklORywgImNvdWxkIG5vdCByZW1vdmUgZmls ZSBvciBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCXBnX2xvZ193YXJuaW5nKCJjb3Vs ZCBub3QgcmVtb3ZlIGZpbGUgb3IgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAogCQkJCQkJIHBh dGhidWYpOwotI2Vsc2UKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oImNvdWxkIG5vdCByZW1v dmUgZmlsZSBvciBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQkJcGF0aGJ1Ziwg c3RyZXJyb3IoZXJybm8pKTsKLSNlbmRpZgogCQkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCQl9 CiAJCQl9CkBAIC0xMTQsMTMgKzExMCw4IEBAIHJtdHJlZShjb25zdCBjaGFyICpwYXRoLCBi b29sIHJtdG9wZGlyKQogCXsKIAkJaWYgKHJtZGlyKHBhdGgpICE9IDApCiAJCXsKLSNpZm5k ZWYgRlJPTlRFTkQKLQkJCWVsb2coV0FSTklORywgImNvdWxkIG5vdCByZW1vdmUgZmlsZSBv ciBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQlwZ19sb2dfd2FybmluZygiY291bGQgbm90 IHJlbW92ZSBmaWxlIG9yIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKIAkJCQkgcGF0aCk7Ci0j ZWxzZQotCQkJZnByaW50ZihzdGRlcnIsIF8oImNvdWxkIG5vdCByZW1vdmUgZmlsZSBvciBk aXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXBhdGgsIHN0cmVycm9yKGVycm5vKSk7 Ci0jZW5kaWYKIAkJCXJlc3VsdCA9IGZhbHNlOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3Jj L2ZlX3V0aWxzL01ha2VmaWxlIGIvc3JjL2ZlX3V0aWxzL01ha2VmaWxlCmluZGV4IDdkNzM4 MDAzMjMuLjk2MGVjZjBiNmEgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9NYWtlZmlsZQor KysgYi9zcmMvZmVfdXRpbHMvTWFrZWZpbGUKQEAgLTE5LDcgKzE5LDcgQEAgaW5jbHVkZSAk KHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBvdmVycmlkZSBDUFBGTEFH UyA6PSAtREZST05URU5EIC1JJChsaWJwcV9zcmNkaXIpICQoQ1BQRkxBR1MpCiAKLU9CSlMg PSBtYnByaW50Lm8gcHJpbnQubyBwc3Fsc2Nhbi5vIHNpbXBsZV9saXN0Lm8gc3RyaW5nX3V0 aWxzLm8gY29uZGl0aW9uYWwubworT0JKUyA9IGxvZ2dpbmcubyBtYnByaW50Lm8gcHJpbnQu byBwc3Fsc2Nhbi5vIHNpbXBsZV9saXN0Lm8gc3RyaW5nX3V0aWxzLm8gY29uZGl0aW9uYWwu bwogCiBhbGw6IGxpYnBnZmV1dGlscy5hCiAKZGlmZiAtLWdpdCBhL3NyYy9mZV91dGlscy9s b2dnaW5nLmMgYi9zcmMvZmVfdXRpbHMvbG9nZ2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjhhYThkYTYwZjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv ZmVfdXRpbHMvbG9nZ2luZy5jCkBAIC0wLDAgKzEsMTY1IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqIExvZ2dpbmcgZnJhbWV3b3JrIGZvciBmcm9udGVuZCBwcm9ncmFtcworICoK KyAqIENvcHlyaWdodCAoYykgMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqCisgKiBzcmMvZmVfdXRpbHMvbG9nZ2luZy5jCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSA8 dW5pc3RkLmg+CisKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCisKK3N0YXRpYyBj b25zdCBjaGFyICpwcm9nbmFtZTsKKworZW51bSBwZ19sb2dfbGV2ZWwgX19wZ19sb2dfbGV2 ZWw7CitzdGF0aWMgaW50IGxvZ19mbGFnczsKK3ZvaWQgKCpsb2dfcHJlX2NhbGxiYWNrKSh2 b2lkKTsKK3ZvaWQgKCpsb2dfbG9jdXNfY2FsbGJhY2spKGNvbnN0IGNoYXIgKiosIHVpbnQ2 NCAqKTsKK3N0YXRpYyBib29sIGxvZ19jb2xvcjsKKworY29uc3QgY2hhciAqc2dyX2Vycm9y ID0gIjAxOzMxIjsKK2NvbnN0IGNoYXIgKnNncl93YXJuaW5nID0gIjAxOzM1IjsKK2NvbnN0 IGNoYXIgKnNncl9sb2N1cyA9ICIwMSI7CisKKyNkZWZpbmUgQU5TSV9FU0NBUEVfRk1UICJc eDFiWyVzbSIKKyNkZWZpbmUgQU5TSV9FU0NBUEVfUkVTRVQgIlx4MWJbMG0iCisKK3ZvaWQK K3BnX2xvZ2dpbmdfaW5pdChjb25zdCBjaGFyICphcmd2MCkKK3sKKwljb25zdCBjaGFyICpw Z19jb2xvcl9lbnYgPSBnZXRlbnYoIlBHX0NPTE9SIik7CisKKwlwcm9nbmFtZSA9IGdldF9w cm9nbmFtZShhcmd2MCk7CisJX19wZ19sb2dfbGV2ZWwgPSBQR19MT0dfSU5GTzsKKworCWlm IChwZ19jb2xvcl9lbnYpCisJeworCQlpZiAoc3RyY21wKHBnX2NvbG9yX2VudiwgImFsd2F5 cyIpID09IDAgfHwKKwkJCShzdHJjbXAocGdfY29sb3JfZW52LCAiYXV0byIpID09IDAgJiYg aXNhdHR5KGZpbGVubyhzdGRlcnIpKSkpCisJCQlsb2dfY29sb3IgPSB0cnVlOworCX0KK30K Kwordm9pZAorcGdfbG9nZ2luZ19jb25maWcoaW50IG5ld19mbGFncykKK3sKKwlsb2dfZmxh Z3MgPSBuZXdfZmxhZ3M7Cit9CisKK3ZvaWQKK3BnX2xvZ2dpbmdfc2V0X2xldmVsKGVudW0g cGdfbG9nX2xldmVsIG5ld19sZXZlbCkKK3sKKwlfX3BnX2xvZ19sZXZlbCA9IG5ld19sZXZl bDsKK30KKwordm9pZAorcGdfbG9nZ2luZ19zZXRfcHJlX2NhbGxiYWNrKHZvaWQgKCpjYiko dm9pZCkpCit7CisJbG9nX3ByZV9jYWxsYmFjayA9IGNiOworfQorCit2b2lkCitwZ19sb2dn aW5nX3NldF9sb2N1c19jYWxsYmFjayh2b2lkICgqY2IpKGNvbnN0IGNoYXIgKipmaWxlbmFt ZSwgdWludDY0ICpsaW5lbm8pKQoreworCWxvZ19sb2N1c19jYWxsYmFjayA9IGNiOworfQor Cit2b2lkCitwZ19sb2dfZ2VuZXJpYyhlbnVtIHBnX2xvZ19sZXZlbCBsZXZlbCwgY29uc3Qg Y2hhciAqIHBnX3Jlc3RyaWN0IGZtdCwgLi4uKQoreworCWludAkJCXNhdmVfZXJybm8gPSBl cnJubzsKKwljb25zdCBjaGFyICpmaWxlbmFtZSA9IE5VTEw7CisJdWludDY0CQlsaW5lbm8g PSAwOworCXZhX2xpc3QJCWFwOworCXNpemVfdAkJcmVxdWlyZWRfbGVuOworCWNoYXIJICAg KmJ1ZjsKKworCUFzc2VydChwcm9nbmFtZSk7CisJQXNzZXJ0KGxldmVsKTsKKwlBc3NlcnQo Zm10KTsKKwlBc3NlcnQoZm10W3N0cmxlbihmbXQpIC0gMV0gIT0gJ1xuJyk7CisKKwlmZmx1 c2goc3Rkb3V0KTsKKwlpZiAobG9nX3ByZV9jYWxsYmFjaykKKwkJbG9nX3ByZV9jYWxsYmFj aygpOworCisJaWYgKGxvZ19sb2N1c19jYWxsYmFjaykKKwkJbG9nX2xvY3VzX2NhbGxiYWNr KCZmaWxlbmFtZSwgJmxpbmVubyk7CisKKwlmbXQgPSBfKGZtdCk7CisKKwlpZiAobG9nX2Nv bG9yKQorCQlmcHJpbnRmKHN0ZGVyciwgQU5TSV9FU0NBUEVfRk1ULCBzZ3JfbG9jdXMpOwor CWlmICghKGxvZ19mbGFncyAmIFBHX0xPR19GTEFHX1RFUlNFKSkKKwkJZnByaW50ZihzdGRl cnIsICIlczoiLCBwcm9nbmFtZSk7CisJaWYgKGZpbGVuYW1lKQorCXsKKwkJZnByaW50Zihz dGRlcnIsICIlczoiLCBmaWxlbmFtZSk7CisJCWlmIChsaW5lbm8gPiAwKQorCQkJZnByaW50 ZihzdGRlcnIsIFVJTlQ2NF9GT1JNQVQgIjoiLCBsaW5lbm8pOworCX0KKwlpZiAoIShsb2df ZmxhZ3MgJiBQR19MT0dfRkxBR19URVJTRSkgfHwgZmlsZW5hbWUpCisJCWZwcmludGYoc3Rk ZXJyLCAiICIpOworCWlmIChsb2dfY29sb3IpCisJCWZwcmludGYoc3RkZXJyLCBBTlNJX0VT Q0FQRV9SRVNFVCk7CisKKwlpZiAoIShsb2dfZmxhZ3MgJiBQR19MT0dfRkxBR19URVJTRSkp CisJc3dpdGNoIChsZXZlbCkKKwl7CisJCWNhc2UgUEdfTE9HX0ZBVEFMOgorCQkJaWYgKGxv Z19jb2xvcikKKwkJCQlmcHJpbnRmKHN0ZGVyciwgQU5TSV9FU0NBUEVfRk1ULCBzZ3JfZXJy b3IpOworCQkJZnByaW50ZihzdGRlcnIsIF8oImZhdGFsOiAiKSk7CisJCQlpZiAobG9nX2Nv bG9yKQorCQkJCWZwcmludGYoc3RkZXJyLCBBTlNJX0VTQ0FQRV9SRVNFVCk7CisJCQlicmVh azsKKwkJY2FzZSBQR19MT0dfRVJST1I6CisJCQlpZiAobG9nX2NvbG9yKQorCQkJCWZwcmlu dGYoc3RkZXJyLCBBTlNJX0VTQ0FQRV9GTVQsIHNncl9lcnJvcik7CisJCQlmcHJpbnRmKHN0 ZGVyciwgXygiZXJyb3I6ICIpKTsKKwkJCWlmIChsb2dfY29sb3IpCisJCQkJZnByaW50Zihz dGRlcnIsIEFOU0lfRVNDQVBFX1JFU0VUKTsKKwkJCWJyZWFrOworCQljYXNlIFBHX0xPR19X QVJOSU5HOgorCQkJaWYgKGxvZ19jb2xvcikKKwkJCQlmcHJpbnRmKHN0ZGVyciwgQU5TSV9F U0NBUEVfRk1ULCBzZ3Jfd2FybmluZyk7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygid2Fybmlu ZzogIikpOworCQkJaWYgKGxvZ19jb2xvcikKKwkJCQlmcHJpbnRmKHN0ZGVyciwgQU5TSV9F U0NBUEVfUkVTRVQpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwl9CisK KwllcnJubyA9IHNhdmVfZXJybm87CisKKwl2YV9zdGFydChhcCwgZm10KTsKKwlyZXF1aXJl ZF9sZW4gPSB2c25wcmludGYoTlVMTCwgMCwgZm10LCBhcCkgKyAxOworCXZhX2VuZChhcCk7 CisKKwlidWYgPSBwZ19tYWxsb2NfZXh0ZW5kZWQocmVxdWlyZWRfbGVuLCBNQ1hUX0FMTE9D X05PX09PTSk7CisKKwlpZiAoIWJ1ZikKKwl7CisJCS8qIG1lbW9yeSB0cm91YmxlLCBqdXN0 IHByaW50IHdoYXQgd2UgY2FuIGFuZCBnZXQgb3V0IG9mIGhlcmUgKi8KKwkJdmFfc3RhcnQo YXAsIGZtdCk7CisJCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7CisJCXZhX2VuZChhcCk7 CisJCXJldHVybjsKKwl9CisKKwl2YV9zdGFydChhcCwgZm10KTsKKwl2c25wcmludGYoYnVm LCByZXF1aXJlZF9sZW4sIGZtdCwgYXApOworCXZhX2VuZChhcCk7CisKKwkvKiBzdHJpcCBv bmUgbmV3bGluZSwgZm9yIFBRZXJyb3JNZXNzYWdlKCkgKi8KKwlpZiAoYnVmW3JlcXVpcmVk X2xlbiAtIDJdID09ICdcbicpCisJCWJ1ZltyZXF1aXJlZF9sZW4gLSAyXSA9ICdcMCc7CisK KwlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBidWYpOworCWZyZWUoYnVmKTsKK30KZGlmZiAt LWdpdCBhL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2Fu LmwKaW5kZXggMzIxNzQ0Y2RkYi4uZWUzMjU0Nzg5NyAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0 aWxzL3BzcWxzY2FuLmwKKysrIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwKQEAgLTM0LDYg KzM0LDcgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAKKyNpbmNsdWRlICJm ZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvcHNxbHNjYW4uaCIKIAog I2luY2x1ZGUgImxpYnBxLWZlLmgiCkBAIC03MzIsNyArNzMzLDcgQEAgb3RoZXIJCQkuCiAJ CQkJCQlpZiAocHNxbHNjYW5fdmFyX2lzX2N1cnJlbnRfc291cmNlKGN1cl9zdGF0ZSwgdmFy bmFtZSkpCiAJCQkJCQl7CiAJCQkJCQkJLyogUmVjdXJzaXZlIGV4cGFuc2lvbiAtLS0gZG9u J3QgZ28gdGhlcmUgKi8KLQkJCQkJCQljdXJfc3RhdGUtPmNhbGxiYWNrcy0+d3JpdGVfZXJy b3IoInNraXBwaW5nIHJlY3Vyc2l2ZSBleHBhbnNpb24gb2YgdmFyaWFibGUgXCIlc1wiXG4i LAorCQkJCQkJCXBnX2xvZ193YXJuaW5nKCJza2lwcGluZyByZWN1cnNpdmUgZXhwYW5zaW9u IG9mIHZhcmlhYmxlIFwiJXNcIiIsCiAJCQkJCQkJCQkJCQkJCQkgIHZhcm5hbWUpOwogCQkJ CQkJCS8qIEluc3RlYWQgY29weSB0aGUgc3RyaW5nIGFzIGlzICovCiAJCQkJCQkJRUNITzsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi9jb250cm9sZGF0YV91dGlscy5oIGIv c3JjL2luY2x1ZGUvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmgKaW5kZXggMGZmYTIwMDBm Yy4uZDQ5YzdiMGIwMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL2NvbnRyb2xk YXRhX3V0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxz LmgKQEAgLTEyLDYgKzEyLDYgQEAKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5o IgogCi1leHRlcm4gQ29udHJvbEZpbGVEYXRhICpnZXRfY29udHJvbGZpbGUoY29uc3QgY2hh ciAqRGF0YURpciwgY29uc3QgY2hhciAqcHJvZ25hbWUsIGJvb2wgKmNyY19va19wKTsKK2V4 dGVybiBDb250cm9sRmlsZURhdGEgKmdldF9jb250cm9sZmlsZShjb25zdCBjaGFyICpEYXRh RGlyLCBib29sICpjcmNfb2tfcCk7CiAKICNlbmRpZgkJCQkJCQkvKiBDT01NT05fQ09OVFJP TERBVEFfVVRJTFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbW9uL2ZpbGVf dXRpbHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1vbi9maWxlX3V0aWxzLmgKaW5kZXggYjFmMWEz YTFjMS4uNWNiMWZkM2EwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL2ZpbGVf dXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tb24vZmlsZV91dGlscy5oCkBAIC0xNSwx MyArMTUsMTAgQEAKICNpZm5kZWYgRklMRV9VVElMU19ICiAjZGVmaW5lIEZJTEVfVVRJTFNf SAogCi1leHRlcm4gaW50IGZzeW5jX2ZuYW1lKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlz ZGlyLAotCQkJY29uc3QgY2hhciAqcHJvZ25hbWUpOwotZXh0ZXJuIHZvaWQgZnN5bmNfcGdk YXRhKGNvbnN0IGNoYXIgKnBnX2RhdGEsIGNvbnN0IGNoYXIgKnByb2duYW1lLAotCQkJIGlu dCBzZXJ2ZXJWZXJzaW9uKTsKLWV4dGVybiB2b2lkIGZzeW5jX2Rpcl9yZWN1cnNlKGNvbnN0 IGNoYXIgKmRpciwgY29uc3QgY2hhciAqcHJvZ25hbWUpOwotZXh0ZXJuIGludCBkdXJhYmxl X3JlbmFtZShjb25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxlLAotCQkJ ICAgY29uc3QgY2hhciAqcHJvZ25hbWUpOwotZXh0ZXJuIGludAlmc3luY19wYXJlbnRfcGF0 aChjb25zdCBjaGFyICpmbmFtZSwgY29uc3QgY2hhciAqcHJvZ25hbWUpOworZXh0ZXJuIGlu dCBmc3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2Rpcik7CitleHRlcm4g dm9pZCBmc3luY19wZ2RhdGEoY29uc3QgY2hhciAqcGdfZGF0YSwgaW50IHNlcnZlclZlcnNp b24pOworZXh0ZXJuIHZvaWQgZnN5bmNfZGlyX3JlY3Vyc2UoY29uc3QgY2hhciAqZGlyKTsK K2V4dGVybiBpbnQgZHVyYWJsZV9yZW5hbWUoY29uc3QgY2hhciAqb2xkZmlsZSwgY29uc3Qg Y2hhciAqbmV3ZmlsZSk7CitleHRlcm4gaW50CWZzeW5jX3BhcmVudF9wYXRoKGNvbnN0IGNo YXIgKmZuYW1lKTsKIAogI2VuZGlmCQkJCQkJCS8qIEZJTEVfVVRJTFNfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCBiL3NyYy9pbmNs dWRlL2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmgKaW5kZXggZDcxNDk5ZDA3ZS4uMDc4Mzg1 YzZhMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4u aAorKysgYi9zcmMvaW5jbHVkZS9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5oCkBAIC0xNCwx MSArMTQsMTEgQEAKICAqIE9uIFdpbmRvd3MgbWFrZSBzdXJlIHRoYXQgd2UgYXJlIHJ1bm5p bmcgd2l0aCBhIHJlc3RyaWN0ZWQgdG9rZW4sCiAgKiBPbiBvdGhlciBwbGF0Zm9ybXMgZG8g bm90aGluZy4KICAqLwotdm9pZAkJZ2V0X3Jlc3RyaWN0ZWRfdG9rZW4oY29uc3QgY2hhciAq cHJvZ25hbWUpOwordm9pZAkJZ2V0X3Jlc3RyaWN0ZWRfdG9rZW4odm9pZCk7CiAKICNpZmRl ZiBXSU4zMgogLyogQ3JlYXRlIGEgcmVzdHJpY3RlZCB0b2tlbiBhbmQgZXhlY3V0ZSB0aGUg c3BlY2lmaWVkIHByb2Nlc3Mgd2l0aCBpdC4gKi8KLUhBTkRMRQkJQ3JlYXRlUmVzdHJpY3Rl ZFByb2Nlc3MoY2hhciAqY21kLCBQUk9DRVNTX0lORk9STUFUSU9OICpwcm9jZXNzSW5mbywg Y29uc3QgY2hhciAqcHJvZ25hbWUpOworSEFORExFCQlDcmVhdGVSZXN0cmljdGVkUHJvY2Vz cyhjaGFyICpjbWQsIFBST0NFU1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZvKTsKICNlbmRp ZgogCiAjZW5kaWYJCQkJCQkJLyogQ09NTU9OX1JFU1RSSUNURURfVE9LRU5fSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZmVfdXRpbHMvbG9nZ2luZy5oIGIvc3JjL2luY2x1ZGUv ZmVfdXRpbHMvbG9nZ2luZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjliNTc4ZDQ2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9mZV91dGls cy9sb2dnaW5nLmgKQEAgLTAsMCArMSw5NCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KiBMb2dnaW5nIGZyYW1ld29yayBmb3IgZnJvbnRlbmQgcHJvZ3JhbXMKKyAqCisgKiBDb3B5 cmlnaHQgKGMpIDIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICogc3JjL2luY2x1ZGUvZmVfdXRpbHMvbG9nZ2luZy5oCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgRkVfVVRJTFNfTE9HR0lOR19ICisjZGVmaW5lIEZF X1VUSUxTX0xPR0dJTkdfSAorCisvKgorICogTG9nIGxldmVscyBhcmUgaW5mb3JtYXRpb25h bCBvbmx5LiAgVGhleSBkbyBub3QgYWZmZWN0IHByb2dyYW0gZmxvdy4KKyAqLworZW51bSBw Z19sb2dfbGV2ZWwKK3sKKwkvKgorCSAqIE5vdCBpbml0aWFsaXplZCB5ZXQKKwkgKi8KKwlQ R19MT0dfTk9UU0VUID0gMCwKKworCS8qCisJICogTG93IGxldmVsIG1lc3NhZ2VzIHRoYXQg YXJlIG5vcm1hbGx5IG9mZiBieSBkZWZhdWx0LgorCSAqLworCVBHX0xPR19ERUJVRywKKwor CS8qCisJICogQW55IHByb2dyYW0gbWVzc2FnZXMgdGhhdCBnbyB0byBzdGRlcnIsIHNob3du IGJ5IGRlZmF1bHQuICAoVGhlCisJICogcHJvZ3JhbSdzIG5vcm1hbCBvdXRwdXQgc2hvdWxk IGdvIHRvIHN0ZG91dCBhbmQgbm90IHVzZSB0aGUgbG9nZ2luZworCSAqIHN5c3RlbS4pCisJ ICovCisJUEdfTE9HX0lORk8sCisKKwkvKgorCSAqIFdhcm5pbmdzIGFuZCAiYWxtb3N0IiBl cnJvcnMsIGRlcGVuZHMgb24gdGhlIHByb2dyYW0KKwkgKi8KKwlQR19MT0dfV0FSTklORywK KworCS8qCisJICogRXJyb3JzCisJICovCisJUEdfTE9HX0VSUk9SLAorCisJLyoKKwkgKiBT ZXZlcmUgZXJyb3JzIHRoYXQgY2F1c2UgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4gIChPbmUtc2hv dCBwcm9ncmFtcyBtYXkKKwkgKiBjaG9zZSB0byBsYWJlbCBldmVuIGZhdGFsIGVycm9ycyBh cyBtZXJlbHkgImVycm9ycyIuICBUaGUgZGlzdGluY3Rpb24KKwkgKiBpcyB1cCB0byB0aGUg cHJvZ3JhbS4pCisJICovCisJUEdfTE9HX0ZBVEFMLAorCisJLyoKKwkgKiBUdXJuIGFsbCBs b2dnaW5nIG9mZi4KKwkgKi8KKwlQR19MT0dfT0ZGLAorfTsKKworZXh0ZXJuIGVudW0gcGdf bG9nX2xldmVsIF9fcGdfbG9nX2xldmVsOworCisvKgorICogS2luZCBvZiBhIGhhY2sgdG8g YmUgYWJsZSB0byBwcm9kdWNlIHRoZSBwc3FsIG91dHB1dCBleGFjdGx5IGFzIHJlcXVpcmVk IGJ5CisgKiB0aGUgcmVncmVzc2lvbiB0ZXN0cy4KKyAqLworI2RlZmluZSBQR19MT0dfRkxB R19URVJTRQkxCisKK3ZvaWQgcGdfbG9nZ2luZ19pbml0KGNvbnN0IGNoYXIgKmFyZ3YwKTsK K3ZvaWQgcGdfbG9nZ2luZ19jb25maWcoaW50IG5ld19mbGFncyk7Cit2b2lkIHBnX2xvZ2dp bmdfc2V0X2xldmVsKGVudW0gcGdfbG9nX2xldmVsIG5ld19sZXZlbCk7Cit2b2lkIHBnX2xv Z2dpbmdfc2V0X3ByZV9jYWxsYmFjayh2b2lkICgqY2IpKHZvaWQpKTsKK3ZvaWQgcGdfbG9n Z2luZ19zZXRfbG9jdXNfY2FsbGJhY2sodm9pZCAoKmNiKShjb25zdCBjaGFyICoqZmlsZW5h bWUsIHVpbnQ2NCAqbGluZW5vKSk7CisKK3ZvaWQgcGdfbG9nX2dlbmVyaWMoZW51bSBwZ19s b2dfbGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIgKiBwZ19yZXN0cmljdCBmbXQsIC4uLikgcGdf YXR0cmlidXRlX3ByaW50ZigyLCAzKTsKKworI2RlZmluZSBwZ19sb2dfZmF0YWwoLi4uKSBk byB7IFwKKwkJaWYgKGxpa2VseShfX3BnX2xvZ19sZXZlbCA8PSBQR19MT0dfRkFUQUwpKSBw Z19sb2dfZ2VuZXJpYyhQR19MT0dfRkFUQUwsIF9fVkFfQVJHU19fKTsgXAorCX0gd2hpbGUo MCkKKworI2RlZmluZSBwZ19sb2dfZXJyb3IoLi4uKSBkbyB7IFwKKwkJaWYgKGxpa2VseShf X3BnX2xvZ19sZXZlbCA8PSBQR19MT0dfRVJST1IpKSBwZ19sb2dfZ2VuZXJpYyhQR19MT0df RVJST1IsIF9fVkFfQVJHU19fKTsgXAorCX0gd2hpbGUoMCkKKworI2RlZmluZSBwZ19sb2df d2FybmluZyguLi4pIGRvIHsgXAorCQlpZiAobGlrZWx5KF9fcGdfbG9nX2xldmVsIDw9IFBH X0xPR19XQVJOSU5HKSkgcGdfbG9nX2dlbmVyaWMoUEdfTE9HX1dBUk5JTkcsIF9fVkFfQVJH U19fKTsgXAorCX0gd2hpbGUoMCkKKworI2RlZmluZSBwZ19sb2dfaW5mbyguLi4pIGRvIHsg XAorCQlpZiAobGlrZWx5KF9fcGdfbG9nX2xldmVsIDw9IFBHX0xPR19JTkZPKSkgcGdfbG9n X2dlbmVyaWMoUEdfTE9HX0lORk8sIF9fVkFfQVJHU19fKTsgXAorCX0gd2hpbGUoMCkKKwor I2RlZmluZSBwZ19sb2dfZGVidWcoLi4uKSBkbyB7IFwKKwkJaWYgKHVubGlrZWx5KF9fcGdf bG9nX2xldmVsIDw9IFBHX0xPR19ERUJVRykpIHBnX2xvZ19nZW5lcmljKFBHX0xPR19ERUJV RywgX19WQV9BUkdTX18pOyBcCisJfSB3aGlsZSgwKQorCisjZW5kaWYJLyogRkVfVVRJTFNf TE9HR0lOR19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mZV91dGlscy9wc3Fsc2Nh bi5oIGIvc3JjL2luY2x1ZGUvZmVfdXRpbHMvcHNxbHNjYW4uaAppbmRleCBkNmZlZjlmZjc3 Li4zOTVhYzc4YzU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9mZV91dGlscy9wc3Fsc2Nh bi5oCisrKyBiL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuLmgKQEAgLTY0LDEzICs2 NCw2IEBAIHR5cGVkZWYgc3RydWN0IFBzcWxTY2FuQ2FsbGJhY2tzCiAJLyogVGhpcyBwb2lu dGVyIGNhbiBiZSBOVUxMIGlmIG5vIHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBpcyB3YW50ZWQg Ki8KIAljaGFyCSAgICooKmdldF92YXJpYWJsZSkgKGNvbnN0IGNoYXIgKnZhcm5hbWUsIFBz cWxTY2FuUXVvdGVUeXBlIHF1b3RlLAogCQkJCQkJCQkgdm9pZCAqcGFzc3Rocm91Z2gpOwot CS8qIFByaW50IGFuIGVycm9yIG1lc3NhZ2Ugc29tZXBsYWNlIGFwcHJvcHJpYXRlICovCi0J LyogKHZlcnkgb2xkIGdjYyB2ZXJzaW9ucyBkb24ndCBzdXBwb3J0IGF0dHJpYnV0ZXMgb24g ZnVuY3Rpb24gcG9pbnRlcnMpICovCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVD X18gPCA0Ci0Jdm9pZAkJKCp3cml0ZV9lcnJvcikgKGNvbnN0IGNoYXIgKmZtdCwuLi4pOwot I2Vsc2UKLQl2b2lkCQkoKndyaXRlX2Vycm9yKSAoY29uc3QgY2hhciAqZm10LC4uLikgcGdf YXR0cmlidXRlX3ByaW50ZigxLCAyKTsKLSNlbmRpZgogfSBQc3FsU2NhbkNhbGxiYWNrczsK IAogCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvTWFrZWZpbGUgYi9z cmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvTWFrZWZpbGUKaW5kZXggYmU1M2I3Yjk0ZC4uZTZk NmY4MGVlZiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L01ha2VmaWxl CisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9NYWtlZmlsZQpAQCAtMTUsNiArMTUs OCBAQCBvdmVycmlkZSBDUFBGTEFHUyA6PSBcCiAJJy1ERExTVUZGSVg9IiQoRExTVUZGSVgp IicgXAogCSQoQ1BQRkxBR1MpCiAKK0xERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRvcF9idWls ZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCisKICMgZGVmYXVsdCBlbmNvZGluZyBm b3IgcmVncmVzc2lvbiB0ZXN0cwogRU5DT0RJTkcgPSBTUUxfQVNDSUkKIApkaWZmIC0tZ2l0 IGEvc3JjL25scy1nbG9iYWwubWsgYi9zcmMvbmxzLWdsb2JhbC5tawppbmRleCA0ZmM5OTM3 OTkxLi5jNTAyYWMzZmM5IDEwMDY0NAotLS0gYS9zcmMvbmxzLWdsb2JhbC5taworKysgYi9z cmMvbmxzLWdsb2JhbC5tawpAQCAtNjcsNiArNjcsMTQgQEAgQkFDS0VORF9DT01NT05fR0VU VEVYVF9GTEFHUyA9IFwKICAgICBlcnJoaW50OjE6Yy1mb3JtYXQgXAogICAgIGVycmNvbnRl eHQ6MTpjLWZvcm1hdAogCitGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GSUxFUyA9ICQodG9w X3NyY2Rpcikvc3JjL2ZlX3V0aWxzL2xvZ2dpbmcuYworCitGUk9OVEVORF9DT01NT05fR0VU VEVYVF9UUklHR0VSUyA9IFwKKyAgICBwZ19sb2dfZmF0YWwgcGdfbG9nX2Vycm9yIHBnX2xv Z193YXJuaW5nIHBnX2xvZ19pbmZvCisKK0ZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdT ID0gXAorICAgIHBnX2xvZ19mYXRhbDoxOmMtZm9ybWF0IHBnX2xvZ19lcnJvcjoxOmMtZm9y bWF0IHBnX2xvZ193YXJuaW5nOjE6Yy1mb3JtYXQgcGdfbG9nX2luZm86MTpjLWZvcm1hdAor CiAKIGFsbC1wbzogJChNT19GSUxFUykKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL01ha2VmaWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL01ha2VmaWxlCmluZGV4IGMzYzgy ODBlYTIuLmZiYmJjYTA1YzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9NYWtl ZmlsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vTWFrZWZpbGUKQEAgLTEwLDYgKzEwLDcg QEAgdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3Ny Yy9NYWtlZmlsZS5nbG9iYWwKIAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKHNyY2Rpcikg LUkkKGxpYnBxX3NyY2RpcikgLUkkKHNyY2RpcikvLi4vcmVncmVzcyAkKENQUEZMQUdTKQor TERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxw Z2ZldXRpbHMKIAogT0JKUyA9ICBzcGVjcGFyc2UubyBpc29sYXRpb250ZXN0ZXIubyAkKFdJ TjMyUkVTKQogCkBAIC0zMSw3ICszMiw3IEBAIHBnX3JlZ3Jlc3MubzogfCBzdWJtYWtlLXJl Z3Jlc3MKIHBnX2lzb2xhdGlvbl9yZWdyZXNzJChYKTogaXNvbGF0aW9uX21haW4ubyBwZ19y ZWdyZXNzLm8gJChXSU4zMlJFUykKIAkkKENDKSAkKENGTEFHUykgJF4gJChMREZMQUdTKSAk KExERkxBR1NfRVgpICQoTElCUykgLW8gJEAKIAotaXNvbGF0aW9udGVzdGVyJChYKTogJChP QkpTKSB8IHN1Ym1ha2UtbGlicHEgc3VibWFrZS1saWJwZ3BvcnQKK2lzb2xhdGlvbnRlc3Rl ciQoWCk6ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1h a2UtbGlicGdmZXV0aWxzCiAJJChDQykgJChDRkxBR1MpICReICQobGlicHFfcGdwb3J0KSAk KExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQAogCiBkaXN0cHJlcDogc3Bl Y3BhcnNlLmMgc3BlY3NjYW5uZXIuYwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9H TlVtYWtlZmlsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvR05VbWFrZWZpbGUKaW5kZXggYTI0Y2Zk NGUwMS4uMzhmZDI1ZTU2OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtl ZmlsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlCkBAIC0yMyw2ICsyMyw4 IEBAIGlmZGVmIE1BWF9DT05ORUNUSU9OUwogTUFYQ09OTk9QVCArPSAtLW1heC1jb25uZWN0 aW9ucz0kKE1BWF9DT05ORUNUSU9OUykKIGVuZGlmCiAKK0xERkxBR1NfSU5URVJOQUwgKz0g LUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCisKICMgc3R1ZmYg dG8gcGFzcyBpbnRvIGJ1aWxkIG9mIHBnX3JlZ3Jlc3MKIEVYVFJBREVGUyA9ICctREhPU1Rf VFVQTEU9IiQoaG9zdF90dXBsZSkiJyBcCiAJJy1EU0hFTExQUk9HPSIkKFNIRUxMKSInIFwK QEAgLTM2LDcgKzM4LDcgQEAgRVhUUkFERUZTID0gJy1ESE9TVF9UVVBMRT0iJChob3N0X3R1 cGxlKSInIFwKIAogYWxsOiBwZ19yZWdyZXNzJChYKQogCi1wZ19yZWdyZXNzJChYKTogcGdf cmVncmVzcy5vIHBnX3JlZ3Jlc3NfbWFpbi5vICQoV0lOMzJSRVMpIHwgc3VibWFrZS1saWJw Z3BvcnQKK3BnX3JlZ3Jlc3MkKFgpOiBwZ19yZWdyZXNzLm8gcGdfcmVncmVzc19tYWluLm8g JChXSU4zMlJFUykgfCBzdWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscwog CSQoQ0MpICQoQ0ZMQUdTKSAkXiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAt byAkQAogCiAjIGRlcGVuZGVuY2llcyBlbnN1cmUgdGhhdCBwYXRoIGNoYW5nZXMgcHJvcGFn YXRlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BnX3JlZ3Jlc3MuYyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jCmluZGV4IGQ0ZjA0YThhMmMuLmFkZDI1M2ExZDYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRl ICJjb21tb24vcmVzdHJpY3RlZF90b2tlbi5oIgogI2luY2x1ZGUgImNvbW1vbi91c2VybmFt ZS5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJnZXRvcHRf bG9uZy5oIgogI2luY2x1ZGUgImxpYnBxL3BxY29tbS5oIgkJLyogbmVlZGVkIGZvciBVTklY U09DS19QQVRIKCkgKi8KICNpbmNsdWRlICJwZ19jb25maWdfcGF0aHMuaCIKQEAgLTExNzMs NyArMTE3NCw3IEBAIHNwYXduX3Byb2Nlc3MoY29uc3QgY2hhciAqY21kbGluZSkKIAljbWRs aW5lMiA9IHBzcHJpbnRmKCJjbWQgL2MgXCIlc1wiIiwgY21kbGluZSk7CiAKIAlpZiAoKHJl c3RyaWN0ZWRUb2tlbiA9Ci0JCSBDcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjbWRsaW5lMiwg JnBpLCBwcm9nbmFtZSkpID09IDApCisJCSBDcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjbWRs aW5lMiwgJnBpKSkgPT0gMCkKIAkJZXhpdCgyKTsKIAogCUNsb3NlSGFuZGxlKHBpLmhUaHJl YWQpOwpAQCAtMjA3NSw4ICsyMDc2LDkgQEAgcmVncmVzc2lvbl9tYWluKGludCBhcmdjLCBj aGFyICphcmd2W10sIGluaXRfZnVuY3Rpb24gaWZ1bmMsIHRlc3RfZnVuY3Rpb24gdGZ1bmMK IAogCXByb2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9w Z3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfcmVncmVzcyIpKTsKKwlwZ19s b2dnaW5nX2luaXQoYXJndlswXSk7CiAKLQlnZXRfcmVzdHJpY3RlZF90b2tlbihwcm9nbmFt ZSk7CisJZ2V0X3Jlc3RyaWN0ZWRfdG9rZW4oKTsKIAogCWF0ZXhpdChzdG9wX3Bvc3RtYXN0 ZXIpOwogCgpiYXNlLWNvbW1pdDogOGI4OWE4ODYxOGRmZjc4ZGVjMjVmMDhlZTBjYTgzODI0 YjY5YjM0YgotLSAKMi4yMC4xCgo= --------------D45B2DDFBC09D3429D0BF77D--