Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tI7aS-00CIcO-Nn for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Dec 2024 14:39:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tI7aP-000Nzx-CG for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Dec 2024 14:39:42 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tI7aO-000Nzd-KI for pgsql-hackers@lists.postgresql.org; Mon, 02 Dec 2024 14:39:42 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tI7aF-000fMs-TP for pgsql-hackers@postgresql.org; Mon, 02 Dec 2024 14:39:41 +0000 Received: from [192.168.1.110] (dsl-hkibng22-50ddb7-241.dhcp.inet.fi [80.221.183.241]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4Y25ym6grHz49Q1F; Mon, 2 Dec 2024 16:39:28 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1733150370; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=5aBNbQpSV8BXlA+RQZFzfuoB3fR9HK7aHLgtsPin/a4=; b=ul/e4C23OkHQX46ds9qCM7JTMp4zLZCFxZ/UH+SmShiHX378w/rgccB05pqzGHDuas4CwF lCk4bFFXRHNflQfLlWdbBQ9EtD4nuAo7ZfhbrpNCAGHCSy1dblYiBuHzD2HGLe4SbHIlX9 1CdzfqL4HXjdO03JZtxT9Py3fcX7cugRPQy4KDcxSOo/VbhlilCKKQL5xIkXlLpURBRc/N a3R8A1lG0AconqJtzCF5KhsF6X+VDZcscMNo/ALHWLmPBq1jwE6L0mBbV78TVe2LWFcpm5 6psyLGXleAPhSqwYn3i6oiaMARb0OdtZNwzN3/PDCjYFKkwccwzsg6nOxM5tXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1733150370; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=5aBNbQpSV8BXlA+RQZFzfuoB3fR9HK7aHLgtsPin/a4=; b=DU5MxxZxyDzZ36aATDVGprYfsT3h2aU4CBXkvI5rfF4LNTbtM8pbutGXU6PGRKAVjmSVKJ Og4z+ReO5IULL4VG1rbYKDRVl+GqRfPYZii+sjZjYSWh79aRMLxrnyG8fzHCuyTWAOlTLl 3wtqJwaj3s5Vx9phCO4dU77L0B6aVUldyTPaFAInb3yb4u7Uz1hGIKIQRYgpfWyL1gtSLd X2Kew54x7MjGY7k6WpsHR2++TBRj+UNtI59agFGmQUMndTLc6z6UiWzotnvTxsSkl+0+Pf PID5V5C5k7J7YGY5b4141e5SM0YL52XAhUkG6f8HUSz/rvP6flHuQulxbljr2w== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1733150370; a=rsa-sha256; cv=none; b=IhjfGwJHMWWvBp7L6HbJRTT1O5KvLtvF/qr/BAyeYrfDm02P7AYJGcJ1wLZsq+O7L5/b3L +UquwPw5SgyNjLA3PGVlM4uNSvC7a2Q+Ne7m5vZAVtzD5Z/aEVWimSAClgxAesVz57HgCt u0VAEZrXnGu/kOOGJXODn2hbIy/Pf9rJ7JARe8NK8xbm6t5Q0fOIbbV536UBE9BEFxix17 1ST5oGfOoBYFgTpj4J0TB7R4sBe61tDp85N3IGh+iyWlydONMfzZ8pqSST4lJi26Kpf1gB Chblrp8pcuc7shfkW2OVFatgGlgsRbbSz8sCYjKgm3wSRhEF+ZYeQ735eJuWpQ== Content-Type: multipart/mixed; boundary="------------ymTh4egrZR2y6G65Gu5Lb4oy" Message-ID: <4ddab51d-e932-40c5-b6fa-18c52db0e082@iki.fi> Date: Mon, 2 Dec 2024 16:39:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Interrupts vs signals From: Heikki Linnakangas To: Thomas Munro Cc: Michael Paquier , Robert Haas , Fujii Masao , pgsql-hackers , Andres Freund References: <3b996d73-2a10-4072-a58d-0386af0cbb78@iki.fi> <46f047a1-bfd5-406a-a0f3-97205d9529ad@iki.fi> <476672e7-62f1-4cab-a822-f3a8e949dd3f@iki.fi> <391abe21-413e-4d91-a650-b663af49500c@iki.fi> <8a0ff52f-de8e-49d2-a3af-ea5bc12f5b97@iki.fi> Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------ymTh4egrZR2y6G65Gu5Lb4oy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 02/12/2024 12:42, Heikki Linnakangas wrote: > On 02/12/2024 09:32, Thomas Munro wrote: >> On Sat, Nov 23, 2024 at 10:58 AM Heikki Linnakangas >> wrote: >>> Hmm, so this would replace the maybeSleepingOnInterrupts bitmask I >>> envisioned. Makes a lot of sense. If it's a single bit though, that >>> means that you'll still get woken up by interrupts that you're not >>> waiting for. Maybe that's fine. Or we could merge the >>> maybeSleepingOnInterrupts and pendingInterrupts bitmasks to a single >>> atomic word, so that you would have a separate "maybe sleeping" bit for >>> each interrupt bit, but could still use atomic_fetch_or atomically read >>> the interrupt bits and announce the sleeping. >> >> I think one bit is fine for now.  At least, until we have a serious >> problem with interrupts arriving when you're sleeping but not ready to >> service that particular interrupt.  The 'interrupt bit already set, >> don't try to wake me' stuff discussed earlier would limit the number >> of useless wakeups to one, until you eventually are ready and consume >> the interrupt.  The main case I can think of, if we fast forward to >> the all-procsignals-become-interrupts patch (which I'll be rebasing on >> top of this when the next version appears), is that you might receive >> a sinval catchup request, but you might be busy running a long query. >> Sinval catchup messages are only processed between queries, so you >> just keep ignoring them until end of query.  I think that's fine, and >> unlikely.  Do you have other cases in mind? > > Yeah, no, I think one bit is is good enough. Let's go with that. Here's a new patch set version, with the following changes: - Implement the "maybe sleeping" flag as a single bit in the pending interrupts mask, per above discussion. One notable change is that I moved the check for whether an interrupt is set out of the loop in WaitEventSetWait(). It seemed redundant; all the WaitEventSetWaitBlock() implementations also check the interrupt mask if the wakeup is received. I'm sure it doesn't make a difference from performance point of view, but it feels more natural to me this way. - Suppress the wakeup in SendInterrupt if the interrupt was already pending, per discussion - Rename INTERRUPT_GENERAL_WAKEUP to INTERRUPT_GENERAL per Robert's suggestion - Fix a bunch of minor comment issues, some pointed out off-list by Álvaro (thanks!) -- Heikki Linnakangas Neon (https://neon.tech) --------------ymTh4egrZR2y6G65Gu5Lb4oy Content-Type: text/x-patch; charset=UTF-8; name="v5-0001-Replace-Latches-with-Interrupts.patch" Content-Disposition: attachment; filename="v5-0001-Replace-Latches-with-Interrupts.patch" Content-Transfer-Encoding: base64 RnJvbSBlZmY4ZGUxMWZiZmVhNGUyYWFkY2U5YzFkNzE0NTJiMGY1YTFiODBiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMiBEZWMgMjAyNCAxNTo1MTo1NCArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjUgMS80XSBSZXBsYWNlIExhdGNoZXMgd2l0aCBJbnRlcnJ1cHRz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGUgTGF0Y2ggd2FzIGEg ZmxhZywgd2l0aCBhbiBpbnRlci1wcm9jZXNzIHNpZ25hbGxpbmcgbWVjaGFuaXNtIHRoYXQK YWxsb3dlZCBhIHByb2Nlc3MgdG8gd2FpdCBmb3IgdGhlIExhdGNoIHRvIGJlIHNldC4gTXkg b3JpZ2luYWwgdmlzaW9uCmZvciBMYXRjaGVzIHdhcyB0aGF0IHlvdSBjb3VsZCBoYXZlIGRp ZmZlcmVudCBsYXRjaGVzIGZvciBkaWZmZXJlbnQKdGhpbmdzIHRoYXQgeW91IG5lZWQgdG8g d2FpdCBmb3IsIGJ1dCBpbiBwcmFjdGljZSwgYWxtb3N0IGFsbCBjb2RlCnVzZWQgb25lICJw cm9jZXNzIGxhdGNoIiB0aGF0IHdhcyBzaGFyZWQgZm9yIGFsbCB3YWtldXBzLiBUaGUgb25s eQpleGNlcHRpb24gd2FzIHRoZSAicmVjb3ZlcnlXYWtldXBMYXRjaCIuIEkgdGhpbmsgdGhl IHJlYXNvbiB0aGF0IHdlCmVuZGVkIHVwIGp1c3Qgc2hhcmluZyB0aGUgc2FtZSBsYXRjaCBm b3IgYWxsIHdha2V1cHMgaXMgdGhhdCBpdCB3YXMKY3VtYmVyc29tZSBpbiBwcmFjdGljZSB0 byBkZWFsIHdpdGggbXVsdGlwbGUgbGF0Y2hlcy4gRm9yIHN0YXJ0ZXJzLAp0aGVyZSB3YXMg bm8gbWFjaGluZXJ5IGZvciB3YWl0aW5nIGZvciBtdWx0aXBsZSBsYXRjaGVzIGF0IHRoZSBz YW1lCnRpbWUuIFNlY29uZGx5LCBjaGFuZ2luZyB0aGUgIm93bmVyc2hpcCIgb2YgYSBsYXRj aCBuZWVkZWQgZXh0cmEKbG9ja2luZyBvciBvdGhlciBjb29yZGluYXRpb24uIFRoaXJkbHks IGVhY2ggaW50ZXItcHJvY2VzcyBsYXRjaApuZWVkZWQgdG8gYmUgaW5pdGlhbGl6ZWQgYXQg cG9zdG1hc3RlciBzdGFydHVwIHRpbWUuCgpUaGlzIHBhdGNoIGVtYnJhY2VzIHRoZSByZWFs aXR5IG9mIGhvdyBMYXRjaGVzIHdlcmUgdXNlZCwgYW5kIHJlcGxhY2VzCnRoZSBMYXRjaGVz IHdpdGggYSBwZXItcHJvY2VzcyBpbnRlcnJ1cHQgbWFzay4gWW91IGNhbiBubyBsb25nZXIK YWxsb2NhdGUgTGF0Y2hlcyBpbiBhcmJpdHJhcnkgc2hhcmVkIG1lbW9yeSBzdHJ1Y3RzIGFu ZCBhbiBpbnRlcnJ1cHQKaXMgYWx3YXlzIGRpcmVjdGVkIGF0IGEgcGFydGljdWxhciBwcm9j ZXNzLCBhZGRyZXNzZWQgYnkgaXRzClByb2NOdW1iZXIuICBFYWNoIHByb2Nlc3MgaGFzIGEg Yml0bWFzayBvZiBwZW5kaW5nIGludGVycnVwdHMgaW4KUEdQUk9DLgoKVGhpcyBjb21taXQg aW50cm9kdWNlcyB0d28gaW50ZXJydXB0IGJpdHMuIElOVEVSUlVQVF9HRU5FUkFMIHJlcGxh Y2VzCnRoZSBnZW5lcmFsLXB1cnBvc2UgcGVyLXByb2Nlc3MgbGF0Y2guIEFsbCBjb2RlIHRo YXQgcHJldmlvdXNseSBzZXQgYQpwcm9jZXNzJ3MgcHJvY2VzcyBsYXRjaCBub3cgc2V0cyBp dHMgSU5URVJSVVBUX0dFTkVSQUwgaW50ZXJydXB0IGJpdAppbnN0ZWFkLgoKVGhlIHNlY29u ZCBpbnRlcnJ1cHQgYml0LCBJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUsIHJlcGxhY2Vz CnJlY292ZXJ5V2FrZXVwTGF0Y2guIFdpdGggdGhpcyBuZXcgaW50ZXJmYWNlLCB0aGUgY29k ZSBjYW4gZWFzaWx5IHdhaXQKZm9yIHRoZSByZWd1bGFyIGludGVycnVwdHMgKElOVEVSUlVQ VF9HRU5FUkFMKSBhdCB0aGUgc2FtZSB0aW1lIGFzCklOVEVSUlVQVF9SRUNPVkVSWV9DT05U SU5VRS4gUHJldmlvdXNseSwgdGhlIGNvZGUgdGhhdCB3YWl0ZWQgb24KcmVjb3ZlcnlXYWtl dXBMYXRjaCBoYWQgdG8gcmVzb3J0IHRvIHRpbWVvdXRzIHRvIHJlYWN0IHRvIG90aGVyCnNp Z25hbHMsIGJlY2F1c2UgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byB3YWl0IGZvciB0d28gbGF0 Y2hlcyBhdCB0aGUKc2FtZSB0aW1lLiBQcmV2aW91cyBhdHRlbXB0IGF0IHVuaWZ5aW5nIHRo b3NlIHdha2V1cHMgd2FzIGluIGNvbW1pdAphYzIyOTI5YTI2LCBidXQgaXQgd2FzIHJldmVy dGVkIGluIGNvbW1pdCAwMGY2OTBhMjM5IGJlY2F1c2UgaXQgY2F1c2VkCmEgbG90IG9mIHNw dXJpb3VzIHdha2V1cHMgd2hlbiB0aGUgc3RhcnR1cCBwcm9jZXNzIHdhcyB3YWl0aW5nIGZv cgpyZWNvdmVyeSBjb25mbGljdHMuIFRoZSBuZXcgbWFjaGluZXJ5IGF2b2lkcyB0aGF0IHBy b2JsZW0gYnkgbWFraW5nIGl0CmVhc3kgdG8gd2FpdCBmb3IgdHdvIGludGVycnVwdHMgYXQg dGhlIHNhbWUgdGltZS4KCk1vcmUgaW50ZXJydXB0IGJpdHMgYXJlIHBsYW5uZWQgZm9yIGZv bGxvd3VwIHBhdGNoZXMsIHRvIHJlcGxhY2UgdGhlCnZhcmlvdXMgUHJvY1NpZ25hbCBiaXRz LCBhcyB3ZWxsIGFzIENvbmZpZ1JlbG9hZFBlbmRpbmcgYW5kClNodXRkb3duUmVxdWVzdFBl bmRpbmcuCgpUaGlzIGFsc28gbW92ZXMgdGhlIFdhaXRFdmVudFNldCBmdW5jdGlvbnMgdG8g YSBkaWZmZXJlbnQgc291cmNlIGZpbGUsCndhaXRldmVudHNldC5jLiBUaGlzIHNlcGFyYXRl cyB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IGNvZGUgd2FpdGluZyBhbmQKc2lnbmFsbGluZyBj b2RlIGZyb20gdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50IHBhcnRzLgoKUmV2aWV3ZWQtYnk6 IFRob21hcyBNdW5ybywgUm9iZXJ0IEhhYXMsIMOBbHZhcm8gSGVycmVyYQpEaXNjdXNzaW9u OiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzQ3NjY3MmU3LTYyZjEt NGNhYi1hODIyLWYzYThlOTQ5ZGQzZkBpa2kuZmkKLS0tCiBjb250cmliL3BnX3ByZXdhcm0v YXV0b3ByZXdhcm0uYyAgICAgICAgICAgICAgfCAgMjAgKy0KIGNvbnRyaWIvcG9zdGdyZXNf ZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8ICAyMiArLQogY29udHJpYi9wb3N0Z3Jl c19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgICA0ICstCiBkb2Mvc3JjL3NnbWwv Ymd3b3JrZXIuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRvYy9zcmMvc2dt bC9zb3VyY2VzLnNnbWwgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICAgIHwgIDExICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgICAgICAgICB8ICAzMCArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgIDE0ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyAgICAgICAgfCAgMTIgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jICAgICB8ICA5MSAr LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jICAgICAgICB8ICAg NiArLQogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYyAgICAgIHwg IDE4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jICAgICAgICAgICAgICAgICAg fCAgMTkgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAg ICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgICAgICAg ICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2xpYnBxL2F1dGguYyAgICAgICAgICAgICAg ICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLWdzc2FwaS5j ICAgICAgICAgIHwgIDE1ICstCiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNz bC5jICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS5jICAg ICAgICAgICAgICAgICB8ICAyOSArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMgICAg ICAgICAgICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFja2VuZC9saWJwcS9wcW1xLmMgICAg ICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2xpYnBxL3Bxc2lnbmFs LmMgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDIyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1eHByb2Nlc3MuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jICAgICAgICAgICAgIHwgIDE4ICstCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd3JpdGVyLmMgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvY2hlY2twb2ludGVyLmMgICAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9pbnRlcnJ1cHQuYyAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9w b3N0bWFzdGVyL3BnYXJjaC5jICAgICAgICAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jICAgICAgICAgICB8ICAzMyArLQogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9zdGFydHVwLmMgICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jICAgICAgICB8ICAyNCArLQogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYyAgICAgICAgICAgIHwgIDIzICstCiAu Li4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgMzIgKy0K IC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8ICAzOSAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgIHwgIDU0 ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgICAgfCAg MjMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8 ICAzNSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAg IHwgIDI1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMgICAgICAgICAg ICAgfCAgMjkgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgICAg ICAgICB8ICA0NyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5j cy5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAg ICAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j ICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxp c3QuYyAgICAgICAgIHwgIDI3ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmls ZSAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2ludGVy cnVwdC5jICAgICAgICAgICB8IDEyNSArKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9t ZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYyAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2htX21xLmMgICAgICAgICAgICAgIHwgMTAyICstLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2lnbmFsZnVuY3MuYyAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zaW52YWwuYyAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICAgICB8ICAyMiArLQogLi4uL3N0b3JhZ2Uv aXBjL3tsYXRjaC5jID0+IHdhaXRldmVudHNldC5jfSAgIHwgNjc2ICsrKysrKystLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jIHwg IDM0ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgICAg fCAgIDggKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgICAgICAg ICB8IDEyNyArKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jICAgICAgICAg ICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAg ICAgICAgICB8ICAyNSArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyAgICAgICAg ICAgICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMg ICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5j ICAgICAgICAgICAgICB8ICAgOSAtCiBzcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0 LmMgICAgICAgICAgICAgfCAgNjAgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYyAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90aW1l b3V0LmMgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL21j eHQuYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJh bGxlbC5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9saWJwcS9saWJw cS1iZS1mZS1oZWxwZXJzLmggICAgICAgfCAgNDUgKy0KIHNyYy9pbmNsdWRlL2xpYnBxL2xp YnBxLmggICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbWlzY2Fk bWluLmggICAgICAgICAgICAgICAgICAgICAgIHwgICA0IC0KIHNyYy9pbmNsdWRlL3N0b3Jh Z2UvaW50ZXJydXB0LmggICAgICAgICAgICAgICB8IDE3MSArKysrKwogc3JjL2luY2x1ZGUv c3RvcmFnZS9sYXRjaC5oICAgICAgICAgICAgICAgICAgIHwgMTk2IC0tLS0tCiBzcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgMTcgKy0KIHNyYy9p bmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmggICAgICAgICAgICB8IDEyMCArKysrCiBz cmMvcG9ydC9wZ3NsZWVwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0K IHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYyAgICAgICAgICB8ICAgMiAr LQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jICAgICAgICAgIHwgICA5 ICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYyAgICAgICAgICAgfCAg MTMgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMgICAgICAgICB8 ICAgMyArLQogc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyAgICAg IHwgIDIwICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAg ICAgfCAgIDIgKy0KIDg0IGZpbGVzIGNoYW5nZWQsIDE0NTUgaW5zZXJ0aW9ucygrKSwgMTQw OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pbnRlcnJ1cHQuYwogcmVuYW1lIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3tsYXRj aC5jID0+IHdhaXRldmVudHNldC5jfSAoNzYlKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvaW5j bHVkZS9zdG9yYWdlL2xhdGNoLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9z dG9yYWdlL3dhaXRldmVudHNldC5oCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19wcmV3YXJt L2F1dG9wcmV3YXJtLmMgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYwppbmRl eCBmYWM0MDUxZTFhLi43YzI5MWM5OTZjIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3ByZXdh cm0vYXV0b3ByZXdhcm0uYworKysgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0u YwpAQCAtMzcsOCArMzcsOCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9kc21fcmVnaXN0cnkuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisj aW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5o IgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9j ay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc21nci5oIgpAQCAtMjE2LDEwICsyMTYsMTAgQEAgYXV0b3ByZXdhcm1fbWFpbihEYXR1 bSBtYWluX2FyZykKIAkJaWYgKGF1dG9wcmV3YXJtX2ludGVydmFsIDw9IDApCiAJCXsKIAkJ CS8qIFdlJ3JlIG9ubHkgZHVtcGluZyBhdCBzaHV0ZG93biwgc28ganVzdCB3YWl0IGZvcmV2 ZXIuICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENI X1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIC0xTCwKLQkJCQkJCQkgUEdf V0FJVF9FWFRFTlNJT04pOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCisJCQkJCQkJCSAtMUwsCisJCQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CiAJCX0K IAkJZWxzZQogCQl7CkBAIC0yNDMsMTQgKzI0MywxNCBAQCBhdXRvcHJld2FybV9tYWluKERh dHVtIG1haW5fYXJnKQogCQkJfQogCiAJCQkvKiBTbGVlcCB1bnRpbCB0aGUgbmV4dCBkdW1w IHRpbWUuICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xB VENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSBk ZWxheV9pbl9tcywKLQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOworCQkJKHZvaWQpIFdh aXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJIFdMX0lOVEVS UlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgZGVs YXlfaW5fbXMsCisJCQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CiAJCX0KIAogCQkvKiBS ZXNldCB0aGUgbGF0Y2gsIGxvb3AuICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvY29ubmVjdGlvbi5jCmluZGV4IDIzMjZmMzkxZDMuLjQyZmRiNTk3OTQgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250cmli L3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0Z3Jl c19mZHcuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgpAQCAtNzMxLDgg KzczMSw4IEBAIGRvX3NxbF9jb21tYW5kX2VuZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIg KnNxbCwgYm9vbCBjb25zdW1lX2lucHV0KQogCS8qCiAJICogSWYgcmVxdWVzdGVkLCBjb25z dW1lIHdoYXRldmVyIGRhdGEgaXMgYXZhaWxhYmxlIGZyb20gdGhlIHNvY2tldC4gKE5vdGUK IAkgKiB0aGF0IGlmIGFsbCBkYXRhIGlzIGF2YWlsYWJsZSwgdGhpcyBhbGxvd3MgcGdmZHdf Z2V0X3Jlc3VsdCB0byBjYWxsCi0JICogUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRo ZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwgd2hpY2gKLQkgKiB3b3VsZCBiZSBs YXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2YgUFFjb25zdW1lSW5wdXQuKQorCSAq IFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdEludGVy cnVwdE9yU29ja2V0LAorCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRo ZSBvdmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVfaW5w dXQgJiYgIVBRY29uc3VtZUlucHV0KGNvbm4pKQogCQlwZ2Zkd19yZXBvcnRfZXJyb3IoRVJS T1IsIE5VTEwsIGNvbm4sIGZhbHNlLCBzcWwpOwpAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgcGdm ZHdfY2FuY2VsX3F1ZXJ5X2VuZChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUs IGJvb2wgY29uc3VtZV9pbnB1dCkKIAkvKgogCSAqIElmIHJlcXVlc3RlZCwgY29uc3VtZSB3 aGF0ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQuIChOb3RlCiAJICog dGhhdCBpZiBhbGwgZGF0YSBpcyBhdmFpbGFibGUsIHRoaXMgYWxsb3dzIHBnZmR3X2dldF9j bGVhbnVwX3Jlc3VsdCB0bwotCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5n IHRoZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwKKwkgKiBjYWxsIFBRZ2V0UmVz dWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdEludGVycnVwdE9yU29j a2V0LAogCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBvdmVyaGVh ZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVfaW5wdXQgJiYgIVBR Y29uc3VtZUlucHV0KGNvbm4pKQpAQCAtMTQ2MSw3ICsxNDYxLDcgQEAgcGdmZHdfZXhlY19j bGVhbnVwX3F1ZXJ5X2VuZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5LAogCS8q CiAJICogSWYgcmVxdWVzdGVkLCBjb25zdW1lIHdoYXRldmVyIGRhdGEgaXMgYXZhaWxhYmxl IGZyb20gdGhlIHNvY2tldC4gKE5vdGUKIAkgKiB0aGF0IGlmIGFsbCBkYXRhIGlzIGF2YWls YWJsZSwgdGhpcyBhbGxvd3MgcGdmZHdfZ2V0X2NsZWFudXBfcmVzdWx0IHRvCi0JICogY2Fs bCBQUWdldFJlc3VsdCB3aXRob3V0IGZvcmNpbmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRMYXRj aE9yU29ja2V0LAorCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRoZSBv dmVyaGVhZCBvZiBXYWl0SW50ZXJydXB0T3JTb2NrZXQsCiAJICogd2hpY2ggd291bGQgYmUg bGFyZ2UgY29tcGFyZWQgdG8gdGhlIG92ZXJoZWFkIG9mIFBRY29uc3VtZUlucHV0LikKIAkg Ki8KIAlpZiAoY29uc3VtZV9pbnB1dCAmJiAhUFFjb25zdW1lSW5wdXQoY29ubikpCkBAIC0x NTQxLDEyICsxNTQxLDEyIEBAIHBnZmR3X2dldF9jbGVhbnVwX3Jlc3VsdChQR2Nvbm4gKmNv bm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUsIFBHcmVzdWx0ICoqcmVzdWx0LAogCQkJCQlwZ2Zk d193ZV9jbGVhbnVwX3Jlc3VsdCA9IFdhaXRFdmVudEV4dGVuc2lvbk5ldygiUG9zdGdyZXNG ZHdDbGVhbnVwUmVzdWx0Iik7CiAKIAkJCQkvKiBTbGVlcCB1bnRpbCB0aGVyZSdzIHNvbWV0 aGluZyB0byBkbyAqLwotCQkJCXdjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJ CQkJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8Ci0JCQkJCQkJ CQkgICBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCSAgIFBR c29ja2V0KGNvbm4pLAotCQkJCQkJCQkJICAgY3VyX3RpbWVvdXQsIHBnZmR3X3dlX2NsZWFu dXBfcmVzdWx0KTsKLQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCXdjID0gV2FpdElu dGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCQkJICAg V0xfSU5URVJSVVBUIHwgV0xfU09DS0VUX1JFQURBQkxFIHwKKwkJCQkJCQkJCQkgICBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCQkgICBQUXNvY2tldChj b25uKSwKKwkJCQkJCQkJCQkgICBjdXJfdGltZW91dCwgcGdmZHdfd2VfY2xlYW51cF9yZXN1 bHQpOworCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmMKaW5kZXggYzA4MTBmYmQ3Yy4uMGE2OTlmMmY3NiAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv cG9zdGdyZXNfZmR3LmMKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIv dGxpc3QuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicG9z dGdyZXNfZmR3LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNp bmNsdWRlICJ1dGlscy9mbG9hdC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtNzM1 NCw3ICs3MzU0LDcgQEAgcG9zdGdyZXNGb3JlaWduQXN5bmNDb25maWd1cmVXYWl0KEFzeW5j UmVxdWVzdCAqYXJlcSkKIAkJQXNzZXJ0KHBlbmRpbmdBcmVxID09IGFyZXEpOwogCiAJQWRk V2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9TT0NLRVRfUkVBREFCTEUsIFBRc29ja2V0KGZzc3Rh dGUtPmNvbm4pLAotCQkJCQkgIE5VTEwsIGFyZXEpOworCQkJCQkgIDAsIGFyZXEpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvYmd3b3JrZXIuc2dtbAppbmRleCAyYzM5MzM4NWE5Li4zMTcxMDU0ZTU1IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv Ymd3b3JrZXIuc2dtbApAQCAtMjI3LDcgKzIyNyw3IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tn cm91bmRXb3JrZXIKICAgIHJlaW5pdGlhbGl6ZXMgdGhlIGNsdXN0ZXIgZHVlIHRvIGEgYmFj a2VuZCBmYWlsdXJlLiAgQmFja2VuZHMgd2hpY2ggbmVlZAogICAgdG8gc3VzcGVuZCBleGVj dXRpb24gb25seSB0ZW1wb3JhcmlseSBzaG91bGQgdXNlIGFuIGludGVycnVwdGlibGUgc2xl ZXAKICAgIHJhdGhlciB0aGFuIGV4aXRpbmc7IHRoaXMgY2FuIGJlIGFjaGlldmVkIGJ5IGNh bGxpbmcKLSAgIDxmdW5jdGlvbj5XYWl0TGF0Y2goKTwvZnVuY3Rpb24+LiBNYWtlIHN1cmUg dGhlCisgICA8ZnVuY3Rpb24+V2FpdEludGVycnVwdCgpPC9mdW5jdGlvbj4uIE1ha2Ugc3Vy ZSB0aGUKICAgIDxsaXRlcmFsPldMX1BPU1RNQVNURVJfREVBVEg8L2xpdGVyYWw+IGZsYWcg aXMgc2V0IHdoZW4gY2FsbGluZyB0aGF0IGZ1bmN0aW9uLCBhbmQKICAgIHZlcmlmeSB0aGUg cmV0dXJuIGNvZGUgZm9yIGEgcHJvbXB0IGV4aXQgaW4gdGhlIGVtZXJnZW5jeSBjYXNlIHRo YXQKICAgIDxjb21tYW5kPnBvc3RncmVzPC9jb21tYW5kPiBpdHNlbGYgaGFzIHRlcm1pbmF0 ZWQuCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sIGIvZG9jL3NyYy9z Z21sL3NvdXJjZXMuc2dtbAppbmRleCBmYTY4ZDRkMDI0Li5mYzY0MmY1ZjcxIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zb3Vy Y2VzLnNnbWwKQEAgLTk4OSwxOSArOTg5LDE5IEBAIE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhN ZW1vcnlDb250ZXh0IGNvbnRleHQpCiAgICAgIGNhbGwgYXN5bmMtc2lnbmFsIHNhZmUgZnVu Y3Rpb25zIChhcyBkZWZpbmVkIGluIFBPU0lYKSBhbmQgYWNjZXNzCiAgICAgIHZhcmlhYmxl cyBvZiB0eXBlIDxsaXRlcmFsPnZvbGF0aWxlIHNpZ19hdG9taWNfdDwvbGl0ZXJhbD4uIEEg ZmV3CiAgICAgIGZ1bmN0aW9ucyBpbiA8Y29tbWFuZD5wb3N0Z3JlczwvY29tbWFuZD4gYXJl IGFsc28gZGVlbWVkIHNpZ25hbCBzYWZlLCBpbXBvcnRhbnRseQotICAgICA8ZnVuY3Rpb24+ U2V0TGF0Y2goKTwvZnVuY3Rpb24+LgorICAgICA8ZnVuY3Rpb24+UmFpc2VJbnRlcnJ1cHQo KTwvZnVuY3Rpb24+LgogICAgIDwvcGFyYT4KICAgICA8cGFyYT4KICAgICAgSW4gbW9zdCBj YXNlcyBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIGRvIG5vdGhpbmcgbW9yZSB0aGFuIG5vdGUK ICAgICAgdGhhdCBhIHNpZ25hbCBoYXMgYXJyaXZlZCwgYW5kIHdha2UgdXAgY29kZSBydW5u aW5nIG91dHNpZGUgb2YKLSAgICAgdGhlIGhhbmRsZXIgdXNpbmcgYSBsYXRjaC4gQW4gZXhh bXBsZSBvZiBzdWNoIGEgaGFuZGxlciBpcyB0aGUKKyAgICAgdGhlIGhhbmRsZXIgdXNpbmcg UmFpc2VJbnRlcnJ1cHQoKS4gQW4gZXhhbXBsZSBvZiBzdWNoIGEgaGFuZGxlciBpcyB0aGUK ICAgICAgZm9sbG93aW5nOgogPHByb2dyYW1saXN0aW5nPgogc3RhdGljIHZvaWQKIGhhbmRs ZV9zaWdodXAoU0lHTkFMX0FSR1MpCiB7CiAgICAgZ290X1NJR0hVUCA9IHRydWU7Ci0gICAg U2V0TGF0Y2goTXlMYXRjaCk7CisgICAgUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogfQogPC9wcm9ncmFtbGlzdGluZz4KICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNDg1NjQ0ZjEyZC4uYzU5YmE0ZTVmOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNTMsNiArNTMsNyBAQAog I2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv YnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mcmVlc3BhY2UuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3BnX3J1c2FnZS5oIgpA QCAtMjYwNywxMSArMjYwOCwxMSBAQCBsYXp5X3RydW5jYXRlX2hlYXAoTFZSZWxTdGF0ZSAq dmFjcmVsKQogCQkJCXJldHVybjsKIAkJCX0KIAotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxh dGNoLAotCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKLQkJCQkJCQkgVkFDVVVNX1RSVU5DQVRFX0xPQ0tfV0FJVF9JTlRFUlZBTCwK LQkJCQkJCQkgV0FJVF9FVkVOVF9WQUNVVU1fVFJVTkNBVEUpOwotCQkJUmVzZXRMYXRjaChN eUxhdGNoKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVS QUwsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKKwkJCQkJCQkJIFZBQ1VVTV9UUlVOQ0FURV9MT0NLX1dBSVRfSU5URVJWQUws CisJCQkJCQkJCSBXQUlUX0VWRU5UX1ZBQ1VVTV9UUlVOQ0FURSk7CisJCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vUkVBRE1FIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vUkVBRE1FCmluZGV4IDZlNDcxMWRhY2UuLmIxMmQ4YmU2NDcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9SRUFETUUKQEAgLTc5NCw3ICs3OTQsNyBAQCBjb21taXQgdG8gbWlu aW1pemUgdGhlIHdpbmRvdyBpbiB3aGljaCB0aGUgZmlsZXN5c3RlbSBjaGFuZ2UgaGFzIGJl ZW4gbWFkZQogYnV0IHRoZSB0cmFuc2FjdGlvbiBpc24ndCBndWFyYW50ZWVkIGNvbW1pdHRl ZC4KIAogVGhlIHdhbHdyaXRlciByZWd1bGFybHkgd2FrZXMgdXAgKHZpYSB3YWxfd3JpdGVy X2RlbGF5KSBvciBpcyB3b2tlbiB1cAotKHZpYSBpdHMgbGF0Y2gsIHdoaWNoIGlzIHNldCBi eSBiYWNrZW5kcyBjb21taXR0aW5nIGFzeW5jaHJvbm91c2x5KSBhbmQKKyh2aWEgYW4gaW50 ZXJydXB0LCB3aGljaCBpcyBzZXQgYnkgYmFja2VuZHMgY29tbWl0dGluZyBhc3luY2hyb25v dXNseSkgYW5kCiBwZXJmb3JtcyBhbiBYTG9nQmFja2dyb3VuZEZsdXNoKCkuICBUaGlzIGNo ZWNrcyB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QKIGNvbXBsZXRlbHkgZmlsbGVkIFdBTCBw YWdlLiAgSWYgdGhhdCBoYXMgbW92ZWQgZm9yd2FyZHMsIHRoZW4gd2Ugd3JpdGUgYWxsCiB0 aGUgY2hhbmdlZCBidWZmZXJzIHVwIHRvIHRoYXQgcG9pbnQsIHNvIHRoYXQgdW5kZXIgZnVs bCBsb2FkIHdlIHdyaXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwpp bmRleCAwYTFlMDg5ZWMxLi4yN2MzZGI5ZTNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3BhcmFsbGVsLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdl L2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zcGluLmgiCkBAIC03NTUsMTYgKzc1NiwxNiBAQCBXYWl0Rm9yUGFyYWxsZWxXb3Jr ZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJewogCQkJCS8qCiAJCQkJ ICogV29ya2VyIG5vdCB5ZXQgc3RhcnRlZCwgc28gd2UgbXVzdCB3YWl0LiAgVGhlIHBvc3Rt YXN0ZXIKLQkJCQkgKiB3aWxsIG5vdGlmeSB1cyBpZiB0aGUgd29ya2VyJ3Mgc3RhdGUgY2hh bmdlcy4gIE91ciBsYXRjaAotCQkJCSAqIG1pZ2h0IGFsc28gZ2V0IHNldCBmb3Igc29tZSBv dGhlciByZWFzb24sIGJ1dCBpZiBzbyB3ZSdsbAotCQkJCSAqIGp1c3QgZW5kIHVwIHdhaXRp bmcgZm9yIHRoZSBzYW1lIHdvcmtlciBhZ2Fpbi4KKwkJCQkgKiB3aWxsIG5vdGlmeSB1cyBp ZiB0aGUgd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4gIFRoZQorCQkJCSAqIGludGVycnVwdCBt aWdodCBhbHNvIGdldCBzZXQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLCBidXQgaWYKKwkJCQkg KiBzbyB3ZSdsbCBqdXN0IGVuZCB1cCB3YWl0aW5nIGZvciB0aGUgc2FtZSB3b3JrZXIgYWdh aW4uCiAJCQkJICovCi0JCQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkgICBX TF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSAgIC0xLCBXQUlU X0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOworCQkJCXJjID0gV2FpdEludGVycnVwdCgxIDw8 IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9FWElU X09OX1BNX0RFQVRILAorCQkJCQkJCQkgICAtMSwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFS VFVQKTsKIAotCQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJCQkJUmVzZXRMYXRjaChN eUxhdGNoKTsKKwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCisJCQkJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCX0KIAkJfQogCkBAIC04NzMsMTUgKzg3NCwx NiBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9GaW5pc2goUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogCQkJCSAqIHRoZSB3b3JrZXIgd3JpdGVzIG1lc3NhZ2VzIGFuZCB0ZXJtaW5hdGVz IGFmdGVyIHRoZQogCQkJCSAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgbmVhciB0aGUgdG9w IG9mIHRoaXMgZnVuY3Rpb24gYW5kCiAJCQkJICogYmVmb3JlIHRoZSBjYWxsIHRvIEdldEJh Y2tncm91bmRXb3JrZXJQaWQoKS4gIEluIHRoYXQgY2FzZSwKLQkJCQkgKiBvciBsYXRjaCBz aG91bGQgaGF2ZSBiZWVuIHNldCBhcyB3ZWxsIGFuZCB0aGUgcmlnaHQgdGhpbmdzCi0JCQkJ ICogd2lsbCBoYXBwZW4gb24gdGhlIG5leHQgcGFzcyB0aHJvdWdoIHRoZSBsb29wLgorCQkJ CSAqIElOVEVSUlVQVF9HRU5FUkFMIHNob3VsZCBoYXZlIGJlZW4gc2V0IGFzIHdlbGwgYW5k IHRoZQorCQkJCSAqIHJpZ2h0IHRoaW5ncyB3aWxsIGhhcHBlbiBvbiB0aGUgbmV4dCBwYXNz IHRocm91Z2ggdGhlIGxvb3AuCiAJCQkJICovCiAJCQl9CiAJCX0KIAotCQkodm9pZCkgV2Fp dExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIC0x LAotCQkJCQkJIFdBSVRfRVZFTlRfUEFSQUxMRUxfRklOSVNIKTsKLQkJUmVzZXRMYXRjaChN eUxhdGNoKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJB TCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgLTEsCisJ CQkJCQkJIFdBSVRfRVZFTlRfUEFSQUxMRUxfRklOSVNIKTsKKwkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAogCWlmIChwY3h0LT50b2MgIT0gTlVMTCkKQEAg LTEwMzQsNyArMTAzNiw3IEBAIEhhbmRsZVBhcmFsbGVsTWVzc2FnZUludGVycnVwdCh2b2lk KQogewogCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwogCVBhcmFsbGVsTWVzc2FnZVBlbmRp bmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpp bmRleCA2ZjU4NDEyYmNhLi41ZmUwYmZjNTI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jCkBAIC04NCw5ICs4NCw5IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbGFyZ2Vfb2JqZWN0LmgiCi0jaW5jbHVk ZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKQEAgLTI2NzYsNyArMjY3Niw3IEBAIFhMb2dTZXRBc3luY1hhY3RMU04oWExvZ1JlY1B0 ciBhc3luY1hhY3RMU04pCiAJCVByb2NOdW1iZXIJd2Fsd3JpdGVyUHJvYyA9IHByb2NnbG9i YWwtPndhbHdyaXRlclByb2M7CiAKIAkJaWYgKHdhbHdyaXRlclByb2MgIT0gSU5WQUxJRF9Q Uk9DX05VTUJFUikKLQkJCVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcih3YWx3cml0ZXJQ cm9jKS0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUws IFByb2NHbG9iYWwtPndhbHdyaXRlclByb2MpOwogCX0KIH0KIApAQCAtOTM0NywxMSArOTM0 NywxMSBAQCBkb19wZ19iYWNrdXBfc3RvcChCYWNrdXBTdGF0ZSAqc3RhdGUsIGJvb2wgd2Fp dGZvcmFyY2hpdmUpCiAJCQkJcmVwb3J0ZWRfd2FpdGluZyA9IHRydWU7CiAJCQl9CiAKLQkJ CSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIDEwMDBMLAotCQkJCQkJ CSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9BUkNISVZFKTsKLQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5F UkFMLAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkJCSAxMDAwTCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfQkFDS1VQ X1dBSVRfV0FMX0FSQ0hJVkUpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogCiAJCQlpZiAoKyt3YWl0cyA+PSBzZWNvbmRzX2JlZm9yZV93YXJuaW5nKQogCQkJ ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwppbmRleCBiMGM2ZDdj Njg3Li4zZTFkNjA3NGNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVu Y3MuYwpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgot I2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTcxOCwxNyArNzE4 LDE3IEBAIHBnX3Byb21vdGUoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCWludAkJCXJjOwog Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAogCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQkJUEdfUkVUVVJO X0JPT0wodHJ1ZSk7CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQlyYyA9IFdh aXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwg V0xfUE9TVE1BU1RFUl9ERUFUSCwKLQkJCQkJICAgMTAwMEwgLyBXQUlUU19QRVJfU0VDT05E LAotCQkJCQkgICBXQUlUX0VWRU5UX1BST01PVEUpOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQo MSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJ TUVPVVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILAorCQkJCQkJICAgMTAwMEwgLyBXQUlUU19Q RVJfU0VDT05ELAorCQkJCQkJICAgV0FJVF9FVkVOVF9QUk9NT1RFKTsKIAogCQkvKgogCQkg KiBFbWVyZ2VuY3kgYmFpbG91dCBpZiBwb3N0bWFzdGVyIGhhcyBkaWVkLiAgVGhpcyBpcyB0 byBhdm9pZCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKaW5kZXggYzY5OTRiNzgyOC4uNjc2ZDY3MTBhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAgLTUyLDkgKzUyLDEwIEBACiAjaW5jbHVk ZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3Rv cmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCkBA IC0zMTUsMjMgKzMxNiw2IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dSZWNvdmVyeUN0bERhdGEK IAkgKi8KIAlib29sCQlTaGFyZWRQcm9tb3RlSXNUcmlnZ2VyZWQ7CiAKLQkvKgotCSAqIHJl Y292ZXJ5V2FrZXVwTGF0Y2ggaXMgdXNlZCB0byB3YWtlIHVwIHRoZSBzdGFydHVwIHByb2Nl c3MgdG8gY29udGludWUKLQkgKiBXQUwgcmVwbGF5LCBpZiBpdCBpcyB3YWl0aW5nIGZvciBX QUwgdG8gYXJyaXZlIG9yIHByb21vdGlvbiB0byBiZQotCSAqIHJlcXVlc3RlZC4KLQkgKgot CSAqIE5vdGUgdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNzIGFsc28gdXNlcyBhbm90aGVyIGxh dGNoLCBpdHMgcHJvY0xhdGNoLAotCSAqIHRvIHdhaXQgZm9yIHJlY292ZXJ5IGNvbmZsaWN0 LiBJZiB3ZSBnZXQgcmlkIG9mIHJlY292ZXJ5V2FrZXVwTGF0Y2ggZm9yCi0JICogc2lnbmFs aW5nIHRoZSBzdGFydHVwIHByb2Nlc3MgaW4gZmF2b3Igb2YgdXNpbmcgaXRzIHByb2NMYXRj aCwgd2hpY2gKLQkgKiBjb21wb3J0cyBiZXR0ZXIgd2l0aCBwb3NzaWJsZSBnZW5lcmljIHNp Z25hbCBoYW5kbGVycyB1c2luZyB0aGF0IGxhdGNoLgotCSAqIEJ1dCB3ZSBzaG91bGQgbm90 IGRvIHRoYXQgYmVjYXVzZSB0aGUgc3RhcnR1cCBwcm9jZXNzIGRvZXNuJ3QgYXNzdW1lCi0J ICogdGhhdCBpdCdzIHdha2VuIHVwIGJ5IHdhbHJlY2VpdmVyIHByb2Nlc3Mgb3IgU0lHSFVQ IHNpZ25hbCBoYW5kbGVyCi0JICogd2hpbGUgaXQncyB3YWl0aW5nIGZvciByZWNvdmVyeSBj b25mbGljdC4gVGhlIHNlcGFyYXRlIGxhdGNoZXMsCi0JICogcmVjb3ZlcnlXYWtldXBMYXRj aCBhbmQgcHJvY0xhdGNoLCBzaG91bGQgYmUgdXNlZCBmb3IgaW50ZXItcHJvY2VzcwotCSAq IGNvbW11bmljYXRpb24gZm9yIFdBTCByZXBsYXkgYW5kIHJlY292ZXJ5IGNvbmZsaWN0LCBy ZXNwZWN0aXZlbHkuCi0JICovCi0JTGF0Y2gJCXJlY292ZXJ5V2FrZXVwTGF0Y2g7Ci0KIAkv KgogCSAqIExhc3QgcmVjb3JkIHN1Y2Nlc3NmdWxseSByZXBsYXllZC4KIAkgKi8KQEAgLTQ2 Niw3ICs0NTAsNiBAQCBYTG9nUmVjb3ZlcnlTaG1lbUluaXQodm9pZCkKIAltZW1zZXQoWExv Z1JlY292ZXJ5Q3RsLCAwLCBzaXplb2YoWExvZ1JlY292ZXJ5Q3RsRGF0YSkpOwogCiAJU3Bp bkxvY2tJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKLQlJbml0U2hhcmVkTGF0 Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CiAJQ29uZGl0aW9u VmFyaWFibGVJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5Tm90UGF1c2VkQ1YpOwog fQogCkBAIC01NDAsMTMgKzUyMyw2IEBAIEluaXRXYWxSZWNvdmVyeShDb250cm9sRmlsZURh dGEgKkNvbnRyb2xGaWxlLCBib29sICp3YXNTaHV0ZG93bl9wdHIsCiAJcmVhZFJlY292ZXJ5 U2lnbmFsRmlsZSgpOwogCXZhbGlkYXRlUmVjb3ZlcnlQYXJhbWV0ZXJzKCk7CiAKLQkvKgot CSAqIFRha2Ugb3duZXJzaGlwIG9mIHRoZSB3YWtldXAgbGF0Y2ggaWYgd2UncmUgZ29pbmcg dG8gc2xlZXAgZHVyaW5nCi0JICogcmVjb3ZlcnksIGlmIHJlcXVpcmVkLgotCSAqLwotCWlm IChBcmNoaXZlUmVjb3ZlcnlSZXF1ZXN0ZWQpCi0JCU93bkxhdGNoKCZYTG9nUmVjb3ZlcnlD dGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwotCiAJLyoKIAkgKiBTZXQgdGhlIFdBTCByZWFk aW5nIHByb2Nlc3NvciBub3csIGFzIGl0IHdpbGwgYmUgbmVlZGVkIHdoZW4gcmVhZGluZwog CSAqIHRoZSBjaGVja3BvaW50IHJlY29yZCByZXF1aXJlZCAoYmFja3VwX2xhYmVsIG9yIG5v dCkuCkBAIC0xNjM0LDEzICsxNjEwLDYgQEAgU2h1dGRvd25XYWxSZWNvdmVyeSh2b2lkKQog CQlzbnByaW50ZihyZWNvdmVyeVBhdGgsIE1BWFBHUEFUSCwgWExPR0RJUiAiL1JFQ09WRVJZ SElTVE9SWSIpOwogCQl1bmxpbmsocmVjb3ZlcnlQYXRoKTsJLyogaWdub3JlIGFueSBlcnJv ciAqLwogCX0KLQotCS8qCi0JICogV2UgZG9uJ3QgbmVlZCB0aGUgbGF0Y2ggYW55bW9yZS4g SXQncyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IHRvIGRpc293bgotCSAqIGl0LCBidXQgbGV0 J3MgZG8gaXQgZm9yIHRoZSBzYWtlIG9mIHRpZGluZXNzLgotCSAqLwotCWlmIChBcmNoaXZl UmVjb3ZlcnlSZXF1ZXN0ZWQpCi0JCURpc293bkxhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJl Y292ZXJ5V2FrZXVwTGF0Y2gpOwogfQogCiAvKgpAQCAtMTgwMCw3ICsxNzY5LDcgQEAgUGVy Zm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBJZiB3ZSd2ZSBi ZWVuIGFza2VkIHRvIGxhZyB0aGUgcHJpbWFyeSwgd2FpdCBvbiBsYXRjaCB1bnRpbAorCQkJ ICogSWYgd2UndmUgYmVlbiBhc2tlZCB0byBsYWcgdGhlIHByaW1hcnksIHdhaXQgb24gaW50 ZXJydXB0IHVudGlsCiAJCQkgKiBlbm91Z2ggdGltZSBoYXMgcGFzc2VkLgogCQkJICovCiAJ CQlpZiAocmVjb3ZlcnlBcHBseURlbGF5KHhsb2dyZWFkZXIpKQpAQCAtMzAyMyw4ICsyOTky LDggQEAgcmVjb3ZlcnlBcHBseURlbGF5KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWRl bGF5VW50aWwgPSBUaW1lc3RhbXBUelBsdXNNaWxsaXNlY29uZHMoeHRpbWUsIHJlY292ZXJ5 X21pbl9hcHBseV9kZWxheSk7CiAKIAkvKgotCSAqIEV4aXQgd2l0aG91dCBhcm1pbmcgdGhl IGxhdGNoIGlmIGl0J3MgYWxyZWFkeSBwYXN0IHRpbWUgdG8gYXBwbHkgdGhpcwotCSAqIHJl Y29yZAorCSAqIEV4aXQgd2l0aG91dCBjbGVhcmluZyB0aGUgaW50ZXJydXB0IGlmIGl0J3Mg YWxyZWFkeSBwYXN0IHRpbWUgdG8gYXBwbHkKKwkgKiB0aGlzIHJlY29yZAogCSAqLwogCW1z ZWNzID0gVGltZXN0YW1wRGlmZmVyZW5jZU1pbGxpc2Vjb25kcyhHZXRDdXJyZW50VGltZXN0 YW1wKCksIGRlbGF5VW50aWwpOwogCWlmIChtc2VjcyA8PSAwKQpAQCAtMzAzMiwxMSArMzAw MSwxOSBAQCByZWNvdmVyeUFwcGx5RGVsYXkoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAK IAl3aGlsZSAodHJ1ZSkKIAl7Ci0JCVJlc2V0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVj b3ZlcnlXYWtldXBMYXRjaCk7CisJCS8qCisJCSAqIElOVEVSUlVQVF9HRU5FUkFMIGlzIHVz ZWQgZm9yIGFsbCB0aGUgdXN1YWwgaW50ZXJydXB0cywgbGlrZSBjb25maWcKKwkJICogcmVs b2Fkcy4gIFRoZSB3YWtldXBzIHdoZW4gbW9yZSBXQUwgYXJyaXZlIHVzZSBhIGRpZmZlcmVu dAorCQkgKiBpbnRlcnJ1cHQgbnVtYmVyIChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUp IHNvIHRoYXQgbW9yZSBXQUwKKwkJICogYXJyaXZpbmcgZG9uJ3Qgd2FrZSB1cCB0aGUgc3Rh cnR1cCBwcm9jZXNzIGV4Y2Vzc2l2ZWx5LCB3aGVuIHdlJ3JlCisJCSAqIHdhaXRpbmcgaW4g b3RoZXIgcGxhY2VzLCBsaWtlIGZvciByZWNvdmVyeSBjb25mbGljdHMuCisJCSAqLworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyogVGhpcyBtaWdodCBj aGFuZ2UgcmVjb3ZlcnlfbWluX2FwcGx5X2RlbGF5LiAqLwogCQlIYW5kbGVTdGFydHVwUHJv Y0ludGVycnVwdHMoKTsKIAorCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllf Q09OVElOVUUpOwogCQlpZiAoQ2hlY2tGb3JTdGFuZGJ5VHJpZ2dlcigpKQogCQkJYnJlYWs7 CiAKQEAgLTMwNTcsMTAgKzMwMzQsMTEgQEAgcmVjb3ZlcnlBcHBseURlbGF5KFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWVsb2coREVCVUcyLCAicmVjb3ZlcnkgYXBwbHkgZGVs YXkgJWxkIG1pbGxpc2Vjb25kcyIsIG1zZWNzKTsKIAotCQkodm9pZCkgV2FpdExhdGNoKCZY TG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hf U0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgbXNlY3Ms Ci0JCQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9BUFBMWV9ERUxBWSk7CisJCSh2b2lkKSBX YWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFIHwKKwkJCQkJ CQkgMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIG1zZWNzLAorCQkJCQkJ CSBXQUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZX0RFTEFZKTsKIAl9CiAJcmV0dXJuIHRydWU7 CiB9CkBAIC0zNzAzLDE1ICszNjgxLDE3IEBAIFdhaXRGb3JXQUxUb0JlY29tZUF2YWlsYWJs ZShYTG9nUmVjUHRyIFJlY1B0ciwgYm9vbCByYW5kQWNjZXNzLAogCQkJCQkJLyogRG8gYmFj a2dyb3VuZCB0YXNrcyB0aGF0IG1pZ2h0IGJlbmVmaXQgdXMgbGF0ZXIuICovCiAJCQkJCQlL bm93bkFzc2lnbmVkVHJhbnNhY3Rpb25JZHNJZGxlTWFpbnRlbmFuY2UoKTsKIAotCQkJCQkJ KHZvaWQpIFdhaXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNo LAotCQkJCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwKLQkJCQkJCQkJCQkg V0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCQkgd2FpdF90aW1lLAotCQkJCQkJCQkJ CSBXQUlUX0VWRU5UX1JFQ09WRVJZX1JFVFJJRVZFX1JFVFJZX0lOVEVSVkFMKTsKLQkJCQkJ CVJlc2V0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CisJ CQkJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9SRUNPVkVSWV9DT05U SU5VRSB8CisJCQkJCQkJCQkJCSAxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkJ CQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8CisJCQkJCQkJCQkJCSBXTF9FWElUX09O X1BNX0RFQVRILAorCQkJCQkJCQkJCQkgd2FpdF90aW1lLAorCQkJCQkJCQkJCQkgV0FJVF9F VkVOVF9SRUNPVkVSWV9SRVRSSUVWRV9SRVRSWV9JTlRFUlZBTCk7CisJCQkJCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUpOwogCQkJCQkJbm93ID0gR2V0 Q3VycmVudFRpbWVzdGFtcCgpOwogCiAJCQkJCQkvKiBIYW5kbGUgaW50ZXJydXB0IHNpZ25h bHMgb2Ygc3RhcnR1cCBwcm9jZXNzICovCisJCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7CiAJCQkJCQlIYW5kbGVTdGFydHVwUHJvY0ludGVycnVwdHMoKTsKIAkJ CQkJfQogCQkJCQlsYXN0X2ZhaWxfdGltZSA9IG5vdzsKQEAgLTM5NzgsMTEgKzM5NTgsMTIg QEAgV2FpdEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhMb2dSZWNQdHIgUmVjUHRyLCBib29s IHJhbmRBY2Nlc3MsCiAJCQkJCSAqIFdhaXQgZm9yIG1vcmUgV0FMIHRvIGFycml2ZSwgd2hl biB3ZSB3aWxsIGJlIHdva2VuCiAJCQkJCSAqIGltbWVkaWF0ZWx5IGJ5IHRoZSBXQUwgcmVj ZWl2ZXIuCiAJCQkJCSAqLwotCQkJCQkodm9pZCkgV2FpdExhdGNoKCZYTG9nUmVjb3ZlcnlD dGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gsCi0JCQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCSAtMUwsCi0JCQkJCQkJCQkgV0FJVF9FVkVO VF9SRUNPVkVSWV9XQUxfU1RSRUFNKTsKLQkJCQkJUmVzZXRMYXRjaCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKKwkJCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQo MSA8PCBJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUgfAorCQkJCQkJCQkJCSAxIDw8IElO VEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRILAorCQkJCQkJCQkJCSAtMUwsCisJCQkJCQkJCQkJIFdBSVRfRVZFTlRfUkVD T1ZFUllfV0FMX1NUUkVBTSk7CisJCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9SRUNP VkVSWV9DT05USU5VRSk7CiAJCQkJCWJyZWFrOwogCQkJCX0KIApAQCAtNDAwMiw2ICszOTgz LDcgQEAgV2FpdEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhMb2dSZWNQdHIgUmVjUHRyLCBi b29sIHJhbmRBY2Nlc3MsCiAJCSAqIFRoaXMgcG9zc2libHktbG9uZyBsb29wIG5lZWRzIHRv IGhhbmRsZSBpbnRlcnJ1cHRzIG9mIHN0YXJ0dXAKIAkJICogcHJvY2Vzcy4KIAkJICovCisJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJSGFuZGxlU3RhcnR1cFBy b2NJbnRlcnJ1cHRzKCk7CiAJfQogCkBAIC00NDc2LDcgKzQ0NTgsMTAgQEAgQ2hlY2tQcm9t b3RlU2lnbmFsKHZvaWQpCiB2b2lkCiBXYWtldXBSZWNvdmVyeSh2b2lkKQogewotCVNldExh dGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOworCVByb2NOdW1i ZXIJcHJvY25vID0gKCh2b2xhdGlsZSBQUk9DX0hEUiAqKSBQcm9jR2xvYmFsKS0+c3RhcnR1 cFByb2M7CisKKwlpZiAocHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCVNlbmRJ bnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFLCBwcm9jbm8pOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwppbmRleCA1Mjk1Yjg1 ZmUwLi40MWYwY2RlNjI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9ndXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRp bHMuYwpAQCAtODUzLDkgKzg1Myw5IEBAIHdhbF9zZWdtZW50X2Nsb3NlKFhMb2dSZWFkZXJT dGF0ZSAqc3RhdGUpCiAgKiBvdXRwdXQgbWV0aG9kIG91dHNpZGUgd2Fsc2VuZGVyLCBlLmcu IGluIGEgYmd3b3JrZXIuCiAgKgogICogVE9ETzogVGhlIHdhbHNlbmRlciBoYXMgaXRzIG93 biB2ZXJzaW9uIG9mIHRoaXMsIGJ1dCBpdCByZWxpZXMgb24gdGhlCi0gKiB3YWxzZW5kZXIn cyBsYXRjaCBiZWluZyBzZXQgd2hlbmV2ZXIgV0FMIGlzIGZsdXNoZWQuIE5vIHN1Y2ggaW5m cmFzdHJ1Y3R1cmUKLSAqIGV4aXN0cyBmb3Igbm9ybWFsIGJhY2tlbmRzLCBzbyB3ZSBoYXZl IHRvIGRvIGEgY2hlY2svc2xlZXAvcmVwZWF0IHN0eWxlIG9mCi0gKiBsb29wIGZvciBub3cu CisgKiB3YWxzZW5kZXIncyBpbnRlcnJ1cHQgYmVpbmcgc2V0IHdoZW5ldmVyIFdBTCBpcyBm bHVzaGVkLiBObyBzdWNoCisgKiBpbmZyYXN0cnVjdHVyZSBleGlzdHMgZm9yIG5vcm1hbCBi YWNrZW5kcywgc28gd2UgaGF2ZSB0byBkbyBhCisgKiBjaGVjay9zbGVlcC9yZXBlYXQgc3R5 bGUgb2YgbG9vcCBmb3Igbm93LgogICovCiBpbnQKIHJlYWRfbG9jYWxfeGxvZ19wYWdlKFhM b2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMgYi9zcmMv YmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jCmluZGV4IDQ0Nzc5NDVlNjEu LjNkODY1ZmE2MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3Vw X3Rocm90dGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0 bGUuYwpAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgImJhY2t1cC9iYXNlYmFja3VwX3Np bmsuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNp bmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgYmJz aW5rX3Rocm90dGxlCkBAIC0xNDYsNyArMTQ2LDcgQEAgdGhyb3R0bGUoYmJzaW5rX3Rocm90 dGxlICpzaW5rLCBzaXplX3QgaW5jcmVtZW50KQogCQkoc2luay0+dGhyb3R0bGluZ19jb3Vu dGVyIC8gc2luay0+dGhyb3R0bGluZ19zYW1wbGUpOwogCiAJLyoKLQkgKiBTaW5jZSB0aGUg bGF0Y2ggY291bGQgYmUgc2V0IHJlcGVhdGVkbHkgYmVjYXVzZSBvZiBjb25jdXJyZW50bHkg V0FMCisJICogU2luY2UgdGhlIGludGVycnVwdCBjb3VsZCBiZSBzZXQgcmVwZWF0ZWRseSBi ZWNhdXNlIG9mIGNvbmN1cnJlbnRseSBXQUwKIAkgKiBhY3Rpdml0eSwgc2xlZXAgaW4gYSBs b29wIHRvIGVuc3VyZSBlbm91Z2ggdGltZSBoYXMgcGFzc2VkLgogCSAqLwogCWZvciAoOzsp CkBAIC0xNjMsMjEgKzE2MywyMSBAQCB0aHJvdHRsZShiYnNpbmtfdGhyb3R0bGUgKnNpbmss IHNpemVfdCBpbmNyZW1lbnQpCiAJCWlmIChzbGVlcCA8PSAwKQogCQkJYnJlYWs7CiAKLQkJ UmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogCi0JCS8qIFdlJ3JlIGVhdGluZyBhIHBvdGVudGlhbGx5IHNldCBsYXRjaCwgc28g Y2hlY2sgZm9yIGludGVycnVwdHMgKi8KKwkJLyogV2UncmUgZWF0aW5nIGEgd2FrZXVwLCBz byBjaGVjayBmb3IgaW50ZXJydXB0cyAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CiAJCS8qCiAJCSAqIChUQVJfU0VORF9TSVpFIC8gdGhyb3R0bGluZ19zYW1wbGUgKiBlbGFw c2VkX21pbl91bml0KSBzaG91bGQgYmUKIAkJICogdGhlIG1heGltdW0gdGltZSB0byBzbGVl cC4gVGh1cyB0aGUgY2FzdCB0byBsb25nIGlzIHNhZmUuCiAJCSAqLwotCQl3YWl0X3Jlc3Vs dCA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCQlXTF9MQVRDSF9TRVQgfCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJKGxvbmcpIChzbGVlcCAvIDEw MDApLAotCQkJCQkJCQlXQUlUX0VWRU5UX0JBU0VfQkFDS1VQX1RIUk9UVExFKTsKKwkJd2Fp dF9yZXN1bHQgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJ CQkJCQlXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK KwkJCQkJCQkJCShsb25nKSAoc2xlZXAgLyAxMDAwKSwKKwkJCQkJCQkJCVdBSVRfRVZFTlRf QkFTRV9CQUNLVVBfVEhST1RUTEUpOwogCi0JCWlmICh3YWl0X3Jlc3VsdCAmIFdMX0xBVENI X1NFVCkKKwkJaWYgKHdhaXRfcmVzdWx0ICYgV0xfSU5URVJSVVBUKQogCQkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAogCQkvKiBEb25lIHdhaXRpbmc/ICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5 bmMuYwppbmRleCA4ZWQ1MDNlMWMxLi5iYzk1NGU5MDU2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5j LmMKQEAgLTkxLDcgKzkxLDcgQEAKICAqCSAgc2hvdWxkIGdvIG91dCBpbW1lZGlhdGVseSBh ZnRlciBlYWNoIGNvbW1pdC4KICAqCiAgKiA1LiBVcG9uIHJlY2VpcHQgb2YgYSBQUk9DU0lH X05PVElGWV9JTlRFUlJVUFQgc2lnbmFsLCB0aGUgc2lnbmFsIGhhbmRsZXIKLSAqCSAgc2V0 cyB0aGUgcHJvY2VzcydzIGxhdGNoLCB3aGljaCB0cmlnZ2VycyB0aGUgZXZlbnQgdG8gYmUg cHJvY2Vzc2VkCisgKgkgIHJhaXNlcyBJTlRFUlJVUFRfR0VORVJBTCwgd2hpY2ggdHJpZ2dl cnMgdGhlIGV2ZW50IHRvIGJlIHByb2Nlc3NlZAogICoJICBpbW1lZGlhdGVseSBpZiB0aGlz IGJhY2tlbmQgaXMgaWRsZSAoaS5lLiwgaXQgaXMgd2FpdGluZyBmb3IgYSBmcm9udGVuZAog ICoJICBjb21tYW5kIGFuZCBpcyBub3Qgd2l0aGluIGEgdHJhbnNhY3Rpb24gYmxvY2suIEMu Zi4KICAqCSAgUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSkuICBPdGhlcndpc2UgdGhl IGhhbmRsZXIgbWF5IG9ubHkgc2V0IGEKQEAgLTE0MCw2ICsxNDAsNyBAQAogI2luY2x1ZGUg ImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCkBAIC00MDYsOSArNDA3LDkgQEAgc3RhdGljIE5v dGlmaWNhdGlvbkxpc3QgKnBlbmRpbmdOb3RpZmllcyA9IE5VTEw7CiAvKgogICogSW5ib3Vu ZCBub3RpZmljYXRpb25zIGFyZSBpbml0aWFsbHkgcHJvY2Vzc2VkIGJ5IEhhbmRsZU5vdGlm eUludGVycnVwdCgpLAogICogY2FsbGVkIGZyb20gaW5zaWRlIGEgc2lnbmFsIGhhbmRsZXIu IFRoYXQganVzdCBzZXRzIHRoZQotICogbm90aWZ5SW50ZXJydXB0UGVuZGluZyBmbGFnIGFu ZCBzZXRzIHRoZSBwcm9jZXNzCi0gKiBsYXRjaC4gUHJvY2Vzc05vdGlmeUludGVycnVwdCgp IHdpbGwgdGhlbiBiZSBjYWxsZWQgd2hlbmV2ZXIgaXQncyBzYWZlIHRvCi0gKiBhY3R1YWxs eSBkZWFsIHdpdGggdGhlIGludGVycnVwdC4KKyAqIG5vdGlmeUludGVycnVwdFBlbmRpbmcg ZmxhZyBhbmQgcmFpc2VzIHRoZSBJTlRFUlJVUFRfR0VORVJBTCBpbnRlcnJ1cHQuCisgKiBQ cm9jZXNzTm90aWZ5SW50ZXJydXB0KCkgd2lsbCB0aGVuIGJlIGNhbGxlZCB3aGVuZXZlciBp dCdzIHNhZmUgdG8gYWN0dWFsbHkKKyAqIGRlYWwgd2l0aCB0aGUgaW50ZXJydXB0LgogICov CiB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgbm90aWZ5SW50ZXJydXB0UGVuZGluZyA9IGZhbHNl OwogCkBAIC0xODEyLDcgKzE4MTMsNyBAQCBIYW5kbGVOb3RpZnlJbnRlcnJ1cHQodm9pZCkK IAlub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKIAogCS8qIG1ha2Ugc3VyZSB0aGUg ZXZlbnQgaXMgcHJvY2Vzc2VkIGluIGR1ZSBjb3Vyc2UgKi8KLQlTZXRMYXRjaChNeUxhdGNo KTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0x ODIxLDEwICsxODIyLDEwIEBAIEhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lkKQogICoJCVRo aXMgaXMgY2FsbGVkIGlmIHdlIHNlZSBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nIHNldCwganVz dCBiZWZvcmUKICAqCQl0cmFuc21pdHRpbmcgUmVhZHlGb3JRdWVyeSBhdCB0aGUgZW5kIG9m IGEgZnJvbnRlbmQgY29tbWFuZCwgYW5kCiAgKgkJYWxzbyBpZiBhIG5vdGlmeSBzaWduYWwg b2NjdXJzIHdoaWxlIHJlYWRpbmcgZnJvbSB0aGUgZnJvbnRlbmQuCi0gKgkJSGFuZGxlTm90 aWZ5SW50ZXJydXB0KCkgd2lsbCBjYXVzZSB0aGUgcmVhZCB0byBiZSBpbnRlcnJ1cHRlZAot ICoJCXZpYSB0aGUgcHJvY2VzcydzIGxhdGNoLCBhbmQgdGhpcyByb3V0aW5lIHdpbGwgZ2V0 IGNhbGxlZC4KLSAqCQlJZiB3ZSBhcmUgdHJ1bHkgaWRsZSAoaWUsICpub3QqIGluc2lkZSBh IHRyYW5zYWN0aW9uIGJsb2NrKSwKLSAqCQlwcm9jZXNzIHRoZSBpbmNvbWluZyBub3RpZmll cy4KKyAqCQlIYW5kbGVOb3RpZnlJbnRlcnJ1cHQoKSB3aWxsIGNhdXNlIHRoZSByZWFkIHRv IGJlIGludGVycnVwdGVkIHdpdGgKKyAqCQlJTlRFUlJVUFRfR0VORVJBTCwgYW5kIHRoaXMg cm91dGluZSB3aWxsIGdldCBjYWxsZWQuICBJZiB3ZSBhcmUgdHJ1bHkKKyAqCQlpZGxlIChp ZSwgKm5vdCogaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2spLCBwcm9jZXNzIHRoZSBpbmNv bWluZworICoJCW5vdGlmaWVzLgogICoKICAqCQlJZiAiZmx1c2giIGlzIHRydWUsIGZvcmNl IGFueSBmcm9udGVuZCBtZXNzYWdlcyBvdXQgaW1tZWRpYXRlbHkuCiAgKgkJVGhpcyBjYW4g YmUgZmFsc2Ugd2hlbiBiZWluZyBjYWxsZWQgYXQgdGhlIGVuZCBvZiBhIGZyb250ZW5kIGNv bW1hbmQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IGJiNjM5ZWY1MWYuLjUzOWU0NjYw ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0yNDEyLDggKzI0MTIsOCBAQCB2YWN1 dW1fZGVsYXlfcG9pbnQodm9pZCkKIAkJLyoKIAkJICogV2UgZG9uJ3Qgd2FudCB0byBpZ25v cmUgcG9zdG1hc3RlciBkZWF0aCBkdXJpbmcgdmVyeSBsb25nIHZhY3V1bXMKIAkJICogd2l0 aCB2YWN1dW1fY29zdF9kZWxheSBjb25maWd1cmVkLiAgV2UgY2FuJ3QgdXNlIHRoZSB1c3Vh bAotCQkgKiBXYWl0TGF0Y2goKSBhcHByb2FjaCBoZXJlIGJlY2F1c2Ugd2Ugd2FudCBtaWNy b3NlY29uZC1iYXNlZCBzbGVlcAotCQkgKiBkdXJhdGlvbnMgYWJvdmUuCisJCSAqIFdhaXRJ bnRlcnJ1cHQoKSBhcHByb2FjaCBoZXJlIGJlY2F1c2Ugd2Ugd2FudCBtaWNyb3NlY29uZC1i YXNlZAorCQkgKiBzbGVlcCBkdXJhdGlvbnMgYWJvdmUuCiAJCSAqLwogCQlpZiAoSXNVbmRl clBvc3RtYXN0ZXIgJiYgIVBvc3RtYXN0ZXJJc0FsaXZlKCkpCiAJCQlleGl0KDEpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGNhMGY1NGQ2NzYuLjMxNGUzZDhmYmIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTYxLDkgKzYxLDggQEAKICNp bmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQXBwZW5kLmgiCi0jaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAic3RvcmFn ZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCiAKIC8qIFNo YXJlZCBzdGF0ZSBmb3IgcGFyYWxsZWwtYXdhcmUgQXBwZW5kLiAqLwogc3RydWN0IFBhcmFs bGVsQXBwZW5kU3RhdGUKQEAgLTEwMjgsNyArMTAyNyw3IEBAIEV4ZWNBcHBlbmRBc3luY0V2 ZW50V2FpdChBcHBlbmRTdGF0ZSAqbm9kZSkKIAlBc3NlcnQobm9kZS0+YXNfZXZlbnRzZXQg PT0gTlVMTCk7CiAJbm9kZS0+YXNfZXZlbnRzZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoQ3Vy cmVudFJlc291cmNlT3duZXIsIG5ldmVudHMpOwogCUFkZFdhaXRFdmVudFRvU2V0KG5vZGUt PmFzX2V2ZW50c2V0LCBXTF9FWElUX09OX1BNX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAot CQkJCQkgIE5VTEwsIE5VTEwpOworCQkJCQkgIDAsIE5VTEwpOwogCiAJLyogR2l2ZSBlYWNo IHdhaXRpbmcgc3VicGxhbiBhIGNoYW5jZSB0byBhZGQgYW4gZXZlbnQuICovCiAJaSA9IC0x OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDdmN2VkYzdmOWYuLjQ1Mzk3 MGU3ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTM2LDYgKzM2LDcg QEAKICNpbmNsdWRlICJleGVjdXRvci90cXVldWUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIApAQCAt MzgyLDkgKzM4MywxMCBAQCBnYXRoZXJfcmVhZG5leHQoR2F0aGVyU3RhdGUgKmdhdGhlcnN0 YXRlKQogCQkJCXJldHVybiBOVUxMOwogCiAJCQkvKiBOb3RoaW5nIHRvIGRvIGV4Y2VwdCB3 YWl0IGZvciBkZXZlbG9wbWVudHMuICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gs IFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkJIFdBSVRf RVZFTlRfRVhFQ1VURV9HQVRIRVIpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCSh2 b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgV0FJVF9F VkVOVF9FWEVDVVRFX0dBVEhFUik7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7CiAJCQludmlzaXRlZCA9IDA7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9saWJwcS9hdXRoLmMgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMKaW5kZXggNDdl OGM5MTYwNi4uZWY3Y2JhNjVlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYXV0 aC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYwpAQCAtMTY2Myw4ICsxNjYzLDkg QEAgaW50ZXJwcmV0X2lkZW50X3Jlc3BvbnNlKGNvbnN0IGNoYXIgKmlkZW50X3Jlc3BvbnNl LAogICoJb3ducyB0aGUgdGNwIGNvbm5lY3Rpb24gdG8gImxvY2FsX2FkZHIiCiAgKglJZiB0 aGUgdXNlcm5hbWUgaXMgc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCwgY2hlY2sgdGhlIHVzZXJt YXAuCiAgKgotICoJWFhYOiBVc2luZyBXYWl0TGF0Y2hPclNvY2tldCgpIGFuZCBkb2luZyBh IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaWYgdGhlCi0gKglsYXRjaCB3YXMgc2V0IHdvdWxk IGltcHJvdmUgdGhlIHJlc3BvbnNpdmVuZXNzIHRvIHRpbWVvdXRzL2NhbmNlbGxhdGlvbnMu CisgKglYWFg6IFVzaW5nIFdhaXRJbnRlcnJ1cHRPclNvY2tldCgpIGFuZCBkb2luZyBhIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkKKyAqCWlmIHRoZSBpbnRlcnJ1cHQgd2FzIHBlbmRpbmcg d291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgdG8KKyAqCXRpbWVvdXRzL2NhbmNl bGxhdGlvbnMuCiAgKi8KIHN0YXRpYyBpbnQKIGlkZW50X2luZXQoaGJhUG9ydCAqcG9ydCkK QEAgLTMwOTgsOCArMzA5OSw4IEBAIFBlcmZvcm1SYWRpdXNUcmFuc2FjdGlvbihjb25zdCBj aGFyICpzZXJ2ZXIsIGNvbnN0IGNoYXIgKnNlY3JldCwgY29uc3QgY2hhciAqcG9yCiAJICog cGFja2V0cyB0byBvdXIgcG9ydCB0aHVzIGNhdXNpbmcgdXMgdG8gcmV0cnkgaW4gYSBsb29w IGFuZCBuZXZlciB0aW1lCiAJICogb3V0LgogCSAqCi0JICogWFhYOiBVc2luZyBXYWl0TGF0 Y2hPclNvY2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaWYKLQkg KiB0aGUgbGF0Y2ggd2FzIHNldCB3b3VsZCBpbXByb3ZlIHRoZSByZXNwb25zaXZlbmVzcyB0 bworCSAqIFhYWDogVXNpbmcgV2FpdEludGVycnVwdE9yU29ja2V0KCkgYW5kIGRvaW5nIGEg Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQorCSAqIGlmIHRoZSBpbnRlcnJ1cHQgd2FzIHBlbmRp bmcgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgdG8KIAkgKiB0aW1lb3V0cy9j YW5jZWxsYXRpb25zLgogCSAqLwogCWdldHRpbWVvZmRheSgmZW5kdGltZSwgTlVMTCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMgYi9zcmMv YmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMKaW5kZXggNWEwMDk3NzZkMS4uMjM4 MmVhMDhhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLWdzc2Fw aS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1nc3NhcGkuYwpAQCAtMjEs NiArMjEsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5o IgogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCiAKQEAgLTQxNCw3ICs0MTUsNyBAQCBiZV9nc3NhcGlfcmVh ZChQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAKIC8qCiAgKiBSZWFkIHRo ZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ5dGVzIG9mZiB0aGUgd2lyZSwgd2FpdGluZyB1c2lu ZwotICogV2FpdExhdGNoT3JTb2NrZXQgaWYgd2Ugd291bGQgYmxvY2suCisgKiBXYWl0SW50 ZXJydXB0T3JTb2NrZXQgaWYgd2Ugd291bGQgYmxvY2suCiAgKgogICogUmVzdWx0cyBhcmUg cmVhZCBpbnRvIFBxR1NTUmVjdkJ1ZmZlci4KICAqCkBAIC00NTAsOSArNDUxLDggQEAgcmVh ZF9vcl93YWl0KFBvcnQgKnBvcnQsIHNzaXplX3QgbGVuKQogCQkgKi8KIAkJaWYgKHJldCA8 PSAwKQogCQl7Ci0JCQlXYWl0TGF0Y2hPclNvY2tldChOVUxMLAotCQkJCQkJCSAgV0xfU09D S0VUX1JFQURBQkxFIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgIHBvcnQtPnNv Y2ssIDAsIFdBSVRfRVZFTlRfR1NTX09QRU5fU0VSVkVSKTsKKwkJCVdhaXRJbnRlcnJ1cHRP clNvY2tldCgwLCBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRILAor CQkJCQkJCQkgIHBvcnQtPnNvY2ssIDAsIFdBSVRfRVZFTlRfR1NTX09QRU5fU0VSVkVSKTsK IAogCQkJLyoKIAkJCSAqIElmIHdlIGdvdCBiYWNrIHplcm8gYnl0ZXMsIGFuZCB0aGVuIHdh aXRlZCBvbiB0aGUgc29ja2V0IHRvIGJlCkBAIC00ODksNyArNDg5LDcgQEAgcmVhZF9vcl93 YWl0KFBvcnQgKnBvcnQsIHNzaXplX3QgbGVuKQogICoKICAqIE5vdGUgdGhhdCB1bmxpa2Ug dGhlIGJlX2dzc2FwaV9yZWFkL2JlX2dzc2FwaV93cml0ZSBmdW5jdGlvbnMsIHRoaXMKICAq IGZ1bmN0aW9uIFdJTEwgYmxvY2sgb24gdGhlIHNvY2tldCB0byBiZSByZWFkeSBmb3IgcmVh ZC93cml0ZSAodXNpbmcKLSAqIFdhaXRMYXRjaE9yU29ja2V0KSBhcyBhcHByb3ByaWF0ZSB3 aGlsZSBlc3RhYmxpc2hpbmcgdGhlIEdTU0FQSQorICogV2FpdEludGVycnVwdE9yU29ja2V0 KSBhcyBhcHByb3ByaWF0ZSB3aGlsZSBlc3RhYmxpc2hpbmcgdGhlIEdTU0FQSQogICogc2Vz c2lvbi4KICAqLwogc3NpemVfdApAQCAtNjY4LDkgKzY2OCw4IEBAIHNlY3VyZV9vcGVuX2dz c2FwaShQb3J0ICpwb3J0KQogCQkJCS8qIFdhaXQgYW5kIHJldHJ5IGlmIHdlIGNvdWxkbid0 IHdyaXRlIHlldCAqLwogCQkJCWlmIChyZXQgPD0gMCkKIAkJCQl7Ci0JCQkJCVdhaXRMYXRj aE9yU29ja2V0KE5VTEwsCi0JCQkJCQkJCQkgIFdMX1NPQ0tFVF9XUklURUFCTEUgfCBXTF9F WElUX09OX1BNX0RFQVRILAotCQkJCQkJCQkJICBwb3J0LT5zb2NrLCAwLCBXQUlUX0VWRU5U X0dTU19PUEVOX1NFUlZFUik7CisJCQkJCVdhaXRJbnRlcnJ1cHRPclNvY2tldCgwLCBXTF9T T0NLRVRfV1JJVEVBQkxFIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCQkgIHBv cnQtPnNvY2ssIDAsIFdBSVRfRVZFTlRfR1NTX09QRU5fU0VSVkVSKTsKIAkJCQkJY29udGlu dWU7CiAJCQkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUt b3BlbnNzbC5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYwppbmRl eCA5MWE4NmQ2MmEzLi5jZGFiNmIwZjU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJw cS9iZS1zZWN1cmUtb3BlbnNzbC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3Vy ZS1vcGVuc3NsLmMKQEAgLTMyLDcgKzMyLDggQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVk ZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCisj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC01MjIsOCArNTIzLDggQEAgYWxvb3A6 CiAJCQkJZWxzZQogCQkJCQl3YWl0Zm9yID0gV0xfU09DS0VUX1dSSVRFQUJMRSB8IFdMX0VY SVRfT05fUE1fREVBVEg7CiAKLQkJCQkodm9pZCkgV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwg d2FpdGZvciwgcG9ydC0+c29jaywgMCwKLQkJCQkJCQkJCQkgV0FJVF9FVkVOVF9TU0xfT1BF Tl9TRVJWRVIpOworCQkJCSh2b2lkKSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMCwgd2FpdGZv ciwgcG9ydC0+c29jaywgMCwKKwkJCQkJCQkJCQkJIFdBSVRfRVZFTlRfU1NMX09QRU5fU0VS VkVSKTsKIAkJCQlnb3RvIGFsb29wOwogCQkJY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKIAkJ CQlpZiAociA8IDAgJiYgZXJybm8gIT0gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xp YnBxL2JlLXNlY3VyZS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKaW5kZXgg MjEzOWY4MWYyNC4uOTEzNDYwMjdkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEv YmUtc2VjdXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKQEAgLTI4 LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KIAogI2luY2x1ZGUgImxpYnBx L2xpYnBxLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRp bHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgpA QCAtMjEzLDcgKzIxMyw3IEBAIHJldHJ5OgogCiAJCUFzc2VydCh3YWl0Zm9yKTsKIAotCQlN b2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCB3YWl0 Zm9yLCBOVUxMKTsKKwkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNl dFNvY2tldFBvcywgd2FpdGZvciwgMCk7CiAKIAkJV2FpdEV2ZW50U2V0V2FpdChGZUJlV2Fp dFNldCwgLTEgLyogbm8gdGltZW91dCAqLyAsICZldmVudCwgMSwKIAkJCQkJCSBXQUlUX0VW RU5UX0NMSUVOVF9SRUFEKTsKQEAgLTIyOCwxMiArMjI4LDEyIEBAIHJldHJ5OgogCQkgKiBu ZXcgY29ubmVjdGlvbnMgY2FuIGJlIGFjY2VwdGVkLiAgRXhpdGluZyBjbGVhcnMgdGhlIGRl Y2sgZm9yIGEKIAkJICogcG9zdG1hc3RlciByZXN0YXJ0LgogCQkgKgotCQkgKiAoTm90ZSB0 aGF0IHdlIG9ubHkgbWFrZSB0aGlzIGNoZWNrIHdoZW4gd2Ugd291bGQgb3RoZXJ3aXNlIHNs ZWVwIG9uCi0JCSAqIG91ciBsYXRjaC4gIFdlIG1pZ2h0IHN0aWxsIGNvbnRpbnVlIHJ1bm5p bmcgZm9yIGEgd2hpbGUgaWYgdGhlCi0JCSAqIHBvc3RtYXN0ZXIgaXMga2lsbGVkIGluIG1p ZC1xdWVyeSwgb3IgZXZlbiB0aHJvdWdoIG11bHRpcGxlIHF1ZXJpZXMKLQkJICogaWYgd2Ug bmV2ZXIgaGF2ZSB0byB3YWl0IGZvciByZWFkLiAgV2UgZG9uJ3Qgd2FudCB0byBidXJuIHRv byBtYW55Ci0JCSAqIGN5Y2xlcyBjaGVja2luZyBmb3IgdGhpcyB2ZXJ5IHJhcmUgY29uZGl0 aW9uLCBhbmQgdGhpcyBzaG91bGQgY2F1c2UKLQkJICogdXMgdG8gZXhpdCBxdWlja2x5IGlu IG1vc3QgY2FzZXMuKQorCQkgKiAoTm90ZSB0aGF0IHdlIG9ubHkgbWFrZSB0aGlzIGNoZWNr IHdoZW4gd2Ugd291bGQgb3RoZXJ3aXNlIHNsZWVwCisJCSAqIHdhaXRpbmcgZm9yIGludGVy cnVwdC4gIFdlIG1pZ2h0IHN0aWxsIGNvbnRpbnVlIHJ1bm5pbmcgZm9yIGEgd2hpbGUKKwkJ ICogaWYgdGhlIHBvc3RtYXN0ZXIgaXMga2lsbGVkIGluIG1pZC1xdWVyeSwgb3IgZXZlbiB0 aHJvdWdoIG11bHRpcGxlCisJCSAqIHF1ZXJpZXMgaWYgd2UgbmV2ZXIgaGF2ZSB0byB3YWl0 IGZvciByZWFkLiAgV2UgZG9uJ3Qgd2FudCB0byBidXJuCisJCSAqIHRvbyBtYW55IGN5Y2xl cyBjaGVja2luZyBmb3IgdGhpcyB2ZXJ5IHJhcmUgY29uZGl0aW9uLCBhbmQgdGhpcworCQkg KiBzaG91bGQgY2F1c2UgdXMgdG8gZXhpdCBxdWlja2x5IGluIG1vc3QgY2FzZXMuKQogCQkg Ki8KIAkJaWYgKGV2ZW50LmV2ZW50cyAmIFdMX1BPU1RNQVNURVJfREVBVEgpCiAJCQllcmVw b3J0KEZBVEFMLApAQCAtMjQxLDkgKzI0MSw5IEBAIHJldHJ5OgogCQkJCQkgZXJybXNnKCJ0 ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byB1bmV4cGVjdGVkIHBvc3RtYXN0ZXIgZXhp dCIpKSk7CiAKIAkJLyogSGFuZGxlIGludGVycnVwdC4gKi8KLQkJaWYgKGV2ZW50LmV2ZW50 cyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKGV2ZW50LmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkK IAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKIAkJCVByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KHRydWUpOwog CiAJCQkvKgpAQCAtMjg0LDcgKzI4NCw4IEBAIHNlY3VyZV9yYXdfcmVhZChQb3J0ICpwb3J0 LCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAKIAkvKgogCSAqIFRyeSB0byByZWFkIGZyb20g dGhlIHNvY2tldCB3aXRob3V0IGJsb2NraW5nLiBJZiBpdCBzdWNjZWVkcyB3ZSdyZQotCSAq IGRvbmUsIG90aGVyd2lzZSB3ZSdsbCB3YWl0IGZvciB0aGUgc29ja2V0IHVzaW5nIHRoZSBs YXRjaCBtZWNoYW5pc20uCisJICogZG9uZSwgb3RoZXJ3aXNlIHdlJ2xsIHdhaXQgZm9yIHRo ZSBzb2NrZXQgdXNpbmcgdGhlIGludGVycnVwdAorCSAqIG1lY2hhbmlzbS4KIAkgKi8KICNp ZmRlZiBXSU4zMgogCXBnd2luMzJfbm9ibG9jayA9IHRydWU7CkBAIC0zMzgsNyArMzM5LDcg QEAgcmV0cnk6CiAKIAkJQXNzZXJ0KHdhaXRmb3IpOwogCi0JCU1vZGlmeVdhaXRFdmVudChG ZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHdhaXRmb3IsIE5VTEwpOworCQlN b2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCB3YWl0 Zm9yLCAwKTsKIAogCQlXYWl0RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0LCAtMSAvKiBubyB0 aW1lb3V0ICovICwgJmV2ZW50LCAxLAogCQkJCQkJIFdBSVRfRVZFTlRfQ0xJRU5UX1dSSVRF KTsKQEAgLTM1MCw5ICszNTEsOSBAQCByZXRyeToKIAkJCQkJIGVycm1zZygidGVybWluYXRp bmcgY29ubmVjdGlvbiBkdWUgdG8gdW5leHBlY3RlZCBwb3N0bWFzdGVyIGV4aXQiKSkpOwog CiAJCS8qIEhhbmRsZSBpbnRlcnJ1cHQuICovCi0JCWlmIChldmVudC5ldmVudHMgJiBXTF9M QVRDSF9TRVQpCisJCWlmIChldmVudC5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJ CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7CiAJCQlQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQodHJ1ZSk7CiAKIAkJCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYyBiL3NyYy9iYWNrZW5k L2xpYnBxL3BxY29tbS5jCmluZGV4IDg5NmUxNDc2YjUuLmM0YzMyYzQ1MGEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBx L3BxY29tbS5jCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicG9ydC9wZ19ic3dhcC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1h c3Rlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgpAQCAtMTc1LDcgKzE3Niw3IEBAIHBxX2luaXQoQ2xpZW50U29j a2V0ICpjbGllbnRfc29jaykKIHsKIAlQb3J0CSAgICpwb3J0OwogCWludAkJCXNvY2tldF9w b3MgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwotCWludAkJCWxhdGNoX3BvcyBQR19VU0VE X0ZPUl9BU1NFUlRTX09OTFk7CisJaW50CQkJaW50ZXJydXB0X3BvcyBQR19VU0VEX0ZPUl9B U1NFUlRTX09OTFk7CiAKIAkvKiBhbGxvY2F0ZSB0aGUgUG9ydCBzdHJ1Y3QgYW5kIGNvcHkg dGhlIENsaWVudFNvY2tldCBjb250ZW50cyB0byBpdCAqLwogCXBvcnQgPSBwYWxsb2MwKHNp emVvZihQb3J0KSk7CkBAIC0yODcsOCArMjg4LDggQEAgcHFfaW5pdChDbGllbnRTb2NrZXQg KmNsaWVudF9zb2NrKQogCiAJLyoKIAkgKiBJbiBiYWNrZW5kcyAoYXMgc29vbiBhcyBmb3Jr ZWQpIHdlIG9wZXJhdGUgdGhlIHVuZGVybHlpbmcgc29ja2V0IGluCi0JICogbm9uYmxvY2tp bmcgbW9kZSBhbmQgdXNlIGxhdGNoZXMgdG8gaW1wbGVtZW50IGJsb2NraW5nIHNlbWFudGlj cyBpZgotCSAqIG5lZWRlZC4gVGhhdCBhbGxvd3MgdXMgdG8gcHJvdmlkZSBzYWZlbHkgaW50 ZXJydXB0aWJsZSByZWFkcyBhbmQKKwkgKiBub25ibG9ja2luZyBtb2RlIGFuZCB1c2UgV2Fp dEV2ZW50U2V0IHRvIGltcGxlbWVudCBibG9ja2luZyBzZW1hbnRpY3MKKwkgKiBpZiBuZWVk ZWQuIFRoYXQgYWxsb3dzIHVzIHRvIHByb3ZpZGUgc2FmZWx5IGludGVycnVwdGlibGUgcmVh ZHMgYW5kCiAJICogd3JpdGVzLgogCSAqLwogI2lmbmRlZiBXSU4zMgpAQCAtMzA2LDE4ICsz MDcsMTggQEAgcHFfaW5pdChDbGllbnRTb2NrZXQgKmNsaWVudF9zb2NrKQogCiAJRmVCZVdh aXRTZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgRmVCZVdhaXRTZXRORXZlbnRzKTsK IAlzb2NrZXRfcG9zID0gQWRkV2FpdEV2ZW50VG9TZXQoRmVCZVdhaXRTZXQsIFdMX1NPQ0tF VF9XUklURUFCTEUsCi0JCQkJCQkJCSAgIHBvcnQtPnNvY2ssIE5VTEwsIE5VTEwpOwotCWxh dGNoX3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9MQVRDSF9TRVQs IFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkJCSAgTXlMYXRjaCwgTlVMTCk7CisJCQkJCQkJ CSAgIHBvcnQtPnNvY2ssIDAsIE5VTEwpOworCWludGVycnVwdF9wb3MgPSBBZGRXYWl0RXZl bnRUb1NldChGZUJlV2FpdFNldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAor CQkJCQkJCQkJICAxIDw8IElOVEVSUlVQVF9HRU5FUkFMLCBOVUxMKTsKIAlBZGRXYWl0RXZl bnRUb1NldChGZUJlV2FpdFNldCwgV0xfUE9TVE1BU1RFUl9ERUFUSCwgUEdJTlZBTElEX1NP Q0tFVCwKLQkJCQkJICBOVUxMLCBOVUxMKTsKKwkJCQkJICAwLCBOVUxMKTsKIAogCS8qCiAJ ICogVGhlIGV2ZW50IHBvc2l0aW9ucyBtYXRjaCB0aGUgb3JkZXIgd2UgYWRkZWQgdGhlbSwg YnV0IGxldCdzIHNhbml0eQogCSAqIGNoZWNrIHRoZW0gdG8gYmUgc3VyZS4KIAkgKi8KIAlB c3NlcnQoc29ja2V0X3BvcyA9PSBGZUJlV2FpdFNldFNvY2tldFBvcyk7Ci0JQXNzZXJ0KGxh dGNoX3BvcyA9PSBGZUJlV2FpdFNldExhdGNoUG9zKTsKKwlBc3NlcnQoaW50ZXJydXB0X3Bv cyA9PSBGZUJlV2FpdFNldEludGVycnVwdFBvcyk7CiAKIAlyZXR1cm4gcG9ydDsKIH0KQEAg LTIwNjAsNyArMjA2MSw3IEBAIHBxX2NoZWNrX2Nvbm5lY3Rpb24odm9pZCkKIAkgKiBJdCdz IE9LIHRvIG1vZGlmeSB0aGUgc29ja2V0IGV2ZW50IGZpbHRlciB3aXRob3V0IHJlc3Rvcmlu ZywgYmVjYXVzZQogCSAqIGFsbCBGZUJlV2FpdFNldCBzb2NrZXQgd2FpdCBzaXRlcyBkbyB0 aGUgc2FtZS4KIAkgKi8KLQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0 U2V0U29ja2V0UG9zLCBXTF9TT0NLRVRfQ0xPU0VELCBOVUxMKTsKKwlNb2RpZnlXYWl0RXZl bnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCBXTF9TT0NLRVRfQ0xPU0VE LCAwKTsKIAogcmV0cnk6CiAJcmMgPSBXYWl0RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0LCAw LCBldmVudHMsIGxlbmd0aG9mKGV2ZW50cyksIDApOwpAQCAtMjA2OCwxNSArMjA2OSwxNSBA QCByZXRyeToKIAl7CiAJCWlmIChldmVudHNbaV0uZXZlbnRzICYgV0xfU09DS0VUX0NMT1NF RCkKIAkJCXJldHVybiBmYWxzZTsKLQkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9MQVRD SF9TRVQpCisJCWlmIChldmVudHNbaV0uZXZlbnRzICYgV0xfSU5URVJSVVBUKQogCQl7CiAJ CQkvKgotCQkJICogQSBsYXRjaCBldmVudCBtaWdodCBiZSBwcmV2ZW50aW5nIG90aGVyIGV2 ZW50cyBmcm9tIGJlaW5nCisJCQkgKiBBbiBpbnRlcnJ1cHQgZXZlbnQgbWlnaHQgYmUgcHJl dmVudGluZyBvdGhlciBldmVudHMgZnJvbSBiZWluZwogCQkJICogcmVwb3J0ZWQuICBSZXNl dCBpdCBhbmQgcG9sbCBhZ2Fpbi4gIE5vIG5lZWQgdG8gcmVzdG9yZSBpdAotCQkJICogYmVj YXVzZSBubyBjb2RlIHNob3VsZCBleHBlY3QgbGF0Y2hlcyB0byBzdXJ2aXZlIGFjcm9zcwot CQkJICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4KKwkJCSAqIGJlY2F1c2Ugbm8gY29kZSBz aG91bGQgZXhwZWN0IElOVEVSUlVQVF9HRU5FUkFMIHRvIHN1cnZpdmUKKwkJCSAqIGFjcm9z cyBDSEVDS19GT1JfSU5URVJSVVBUUygpLgogCQkJICovCi0JCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJZ290byBy ZXRyeTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBi L3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwppbmRleCBmZDczNWUyZmVhLi42ZjZmNjI4OGU2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKKysrIGIvc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi dGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAKQEAgLTE4 MSw5ICsxODIsMTAgQEAgbXFfcHV0bWVzc2FnZShjaGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIg KnMsIHNpemVfdCBsZW4pCiAJCWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQog CQkJYnJlYWs7CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQg fCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9R VUVVRV9QVVRfTUVTU0FHRSk7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCSh2b2lkKSBX YWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJIFdMX0lOVEVS UlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfTUVT U0FHRV9RVUVVRV9QVVRfTUVTU0FHRSk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2xpYnBxL3Bxc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9saWJwcS9wcXNp Z25hbC5jCmluZGV4IDIyYTE2YzUwYjIuLjJmNWVlYmRmZWMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2xpYnBxL3Bxc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFzaWdu YWwuYwpAQCAtNDIsNyArNDIsNyBAQCBwcWluaXRtYXNrKHZvaWQpCiB7CiAJc2lnZW1wdHlz ZXQoJlVuQmxvY2tTaWcpOwogCi0JLyogTm90ZTogSW5pdGlhbGl6ZUxhdGNoU3VwcG9ydCgp IG1vZGlmaWVzIFVuQmxvY2tTaWcuICovCisJLyogTm90ZTogSW5pdGlhbGl6ZVdhaXRFdmVu dFN1cHBvcnQoKSBtb2RpZmllcyBVbkJsb2NrU2lnLiAqLwogCiAJLyogRmlyc3Qgc2V0IGFs bCBzaWduYWxzLCB0aGVuIGNsZWFyIHNvbWUuICovCiAJc2lnZmlsbHNldCgmQmxvY2tTaWcp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCBkYzNjZjg3YWJhLi5h YTVhZGNlMTVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtODks OCArODksOCBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3Iu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKQEAgLTU3MSwxMCArNTcxLDEwIEBAIEF1dG9WYWNMYXVuY2hlck1haW4o Y2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJYm9vbAkJ Y2FuX2xhdW5jaDsKIAogCQkvKgotCQkgKiBUaGlzIGxvb3AgaXMgYSBiaXQgZGlmZmVyZW50 IGZyb20gdGhlIG5vcm1hbCB1c2Ugb2YgV2FpdExhdGNoLAorCQkgKiBUaGlzIGxvb3AgaXMg YSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1hbCB1c2Ugb2YgV2FpdEludGVycnVwdCwK IAkJICogYmVjYXVzZSB3ZSdkIGxpa2UgdG8gc2xlZXAgYmVmb3JlIHRoZSBmaXJzdCBsYXVu Y2ggb2YgYSBjaGlsZAotCQkgKiBwcm9jZXNzLiAgU28gaXQncyBXYWl0TGF0Y2gsIHRoZW4g UmVzZXRMYXRjaCwgdGhlbiBjaGVjayBmb3IKLQkJICogd2FrZW5pbmcgY29uZGl0aW9ucy4K KwkJICogcHJvY2Vzcy4gIFNvIGl0J3MgV2FpdEludGVycnVwdCwgdGhlbiBDbGVhckludGVy cnVwdCwgdGhlbiBjaGVjaworCQkgKiBmb3Igd2FrZW5pbmcgY29uZGl0aW9ucy4KIAkJICov CiAKIAkJbGF1bmNoZXJfZGV0ZXJtaW5lX3NsZWVwKCFkbGlzdF9pc19lbXB0eSgmQXV0b1Zh Y3V1bVNobWVtLT5hdl9mcmVlV29ya2VycyksCkBAIC01ODIsMTQgKzU4MiwxNCBAQCBBdXRv VmFjTGF1bmNoZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0 YV9sZW4pCiAKIAkJLyoKIAkJICogV2FpdCB1bnRpbCBuYXB0aW1lIGV4cGlyZXMgb3Igd2Ug Z2V0IHNvbWUgdHlwZSBvZiBzaWduYWwgKGFsbCB0aGUKLQkJICogc2lnbmFsIGhhbmRsZXJz IHdpbGwgd2FrZSB1cyBieSBjYWxsaW5nIFNldExhdGNoKS4KKwkJICogc2lnbmFsIGhhbmRs ZXJzIHdpbGwgd2FrZSB1cyBieSBjYWxsaW5nIFJhaXNlSW50ZXJydXB0KS4KIAkJICovCi0J CSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAobmFwLnR2X3NlYyAqIDEw MDBMKSArIChuYXAudHZfdXNlYyAvIDEwMDBMKSwKLQkJCQkJCSBXQUlUX0VWRU5UX0FVVE9W QUNVVU1fTUFJTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dF TkVSQUwsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAorCQkJCQkJCSAobmFwLnR2X3NlYyAqIDEwMDBMKSArIChuYXAudHZfdXNl YyAvIDEwMDBMKSwKKwkJCQkJCQkgV0FJVF9FVkVOVF9BVVRPVkFDVVVNX01BSU4pOwogCi0J CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIAogCQlIYW5kbGVBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKCk7CiAKQEAgLTEz NDYsNyArMTM0Niw3IEBAIHN0YXRpYyB2b2lkCiBhdmxfc2lndXNyMl9oYW5kbGVyKFNJR05B TF9BUkdTKQogewogCWdvdF9TSUdVU1IyID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsK KwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2F1eHByb2Nlc3MuYwppbmRleCBkMTkxNzRiZGEzLi41Y2MwNTZjZDVhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwpAQCAtMjMsNiArMjMsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25h bC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVz b3duZXIuaCIKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKIAogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggMDdiYzU1MTdmYy4uODI4ZmMwYjczMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUg InBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBj LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHds b2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgpAQCAtMTIyNiw5ICsxMjI2LDkgQEAgV2FpdEZvckJhY2tncm91bmRXb3Jr ZXJTdGFydHVwKEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSwgcGlkX3QgKnBpZHAp CiAJCWlmIChzdGF0dXMgIT0gQkdXSF9OT1RfWUVUX1NUQVJURUQpCiAJCQlicmVhazsKIAot CQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9Q T1NUTUFTVEVSX0RFQVRILCAwLAotCQkJCQkgICBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJU VVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJ CQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCisJCQkJCQkg ICBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOwogCiAJCWlmIChyYyAmIFdMX1BPU1RN QVNURVJfREVBVEgpCiAJCXsKQEAgLTEyMzYsNyArMTIzNiw3IEBAIFdhaXRGb3JCYWNrZ3Jv dW5kV29ya2VyU3RhcnR1cChCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90 ICpwaWRwKQogCQkJYnJlYWs7CiAJCX0KIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJfQogCiAJcmV0dXJuIHN0YXR1 czsKQEAgLTEyNjksOSArMTI2OSw5IEBAIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU2h1dGRv d24oQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQogCQlpZiAoc3RhdHVzID09IEJH V0hfU1RPUFBFRCkKIAkJCWJyZWFrOwogCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCi0JCQkJCSAg IFdBSVRfRVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQo MSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1BP U1RNQVNURVJfREVBVEgsIDAsCisJCQkJCQkgICBXQUlUX0VWRU5UX0JHV09SS0VSX1NIVVRE T1dOKTsKIAogCQlpZiAocmMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQl7CkBAIC0xMjc5 LDcgKzEyNzksNyBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclNodXRkb3duKEJhY2tncm91 bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKIAkJCWJyZWFrOwogCQl9CiAKLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0K IAogCXJldHVybiBzdGF0dXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2Jnd3JpdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd3JpdGVyLmMKaW5kZXgg MGY3NTU0ODc1OS4uNDIwMDE1OGE2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIu YwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY3NpZ25hbC5oIgpAQCAtMjI0LDcgKzIyNSw3IEBAIEJhY2tncm91bmRXcml0 ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJ CWludAkJCXJjOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAq LwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCk7CiAKIAkJSGFuZGxlTWFpbkxvb3BJbnRlcnJ1cHRzKCk7CiAKQEAgLTI5OSwy MiArMzAwLDIyIEBAIEJhY2tncm91bmRXcml0ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwg c2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIHdpbGwgY2FsbCBpdCBldmVyeSBCZ1dy aXRlckRlbGF5IG1zZWMuICBXaGlsZSBpdCdzIG5vdCBjcml0aWNhbCBmb3IKIAkJICogY29y cmVjdG5lc3MgdGhhdCB0aGF0IGJlIGV4YWN0LCB0aGUgZmVlZGJhY2sgbG9vcCBtaWdodCBt aXNiZWhhdmUKIAkJICogaWYgd2Ugc3RyYXkgdG9vIGZhciBmcm9tIHRoYXQuICBIZW5jZSwg YXZvaWQgbG9hZGluZyB0aGlzIHByb2Nlc3MKLQkJICogZG93biB3aXRoIGxhdGNoIGV2ZW50 cyB0aGF0IGFyZSBsaWtlbHkgdG8gaGFwcGVuIGZyZXF1ZW50bHkgZHVyaW5nCi0JCSAqIG5v cm1hbCBvcGVyYXRpb24uCisJCSAqIGRvd24gd2l0aCBpbnRlcnJ1cHQgZXZlbnRzIHRoYXQg YXJlIGxpa2VseSB0byBoYXBwZW4gZnJlcXVlbnRseQorCQkgKiBkdXJpbmcgbm9ybWFsIG9w ZXJhdGlvbi4KIAkJICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdM X0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkg ICBCZ1dyaXRlckRlbGF5IC8qIG1zICovICwgV0FJVF9FVkVOVF9CR1dSSVRFUl9NQUlOKTsK KwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkg ICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJ CQkJCSAgIEJnV3JpdGVyRGVsYXkgLyogbXMgKi8gLCBXQUlUX0VWRU5UX0JHV1JJVEVSX01B SU4pOwogCiAJCS8qCi0JCSAqIElmIG5vIGxhdGNoIGV2ZW50IGFuZCBCZ0J1ZmZlclN5bmMg c2F5cyBub3RoaW5nJ3MgaGFwcGVuaW5nLCBleHRlbmQKLQkJICogdGhlIHNsZWVwIGluICJo aWJlcm5hdGlvbiIgbW9kZSwgd2hlcmUgd2Ugc2xlZXAgZm9yIG11Y2ggbG9uZ2VyCi0JCSAq IHRoYW4gYmd3cml0ZXJfZGVsYXkgc2F5cy4gIEZld2VyIHdha2V1cHMgc2F2ZSBlbGVjdHJp Y2l0eS4gIFdoZW4gYQotCQkgKiBiYWNrZW5kIHN0YXJ0cyB1c2luZyBidWZmZXJzIGFnYWlu LCBpdCB3aWxsIHdha2UgdXMgdXAgYnkgc2V0dGluZwotCQkgKiBvdXIgbGF0Y2guICBCZWNh dXNlIHRoZSBleHRyYSBzbGVlcCB3aWxsIHBlcnNpc3Qgb25seSBhcyBsb25nIGFzIG5vCi0J CSAqIGJ1ZmZlciBhbGxvY2F0aW9ucyBoYXBwZW4sIHRoaXMgc2hvdWxkIG5vdCBkaXN0b3J0 IHRoZSBiZWhhdmlvciBvZgotCQkgKiBCZ0J1ZmZlclN5bmMncyBjb250cm9sIGxvb3AgdG9v IGJhZGx5OyBlc3NlbnRpYWxseSwgaXQgd2lsbCB0aGluawotCQkgKiB0aGF0IHRoZSBzeXN0 ZW0td2lkZSBpZGxlIGludGVydmFsIGRpZG4ndCBleGlzdC4KKwkJICogSWYgbm8gaW50ZXJy dXB0IGV2ZW50IGFuZCBCZ0J1ZmZlclN5bmMgc2F5cyBub3RoaW5nJ3MgaGFwcGVuaW5nLAor CQkgKiBleHRlbmQgdGhlIHNsZWVwIGluICJoaWJlcm5hdGlvbiIgbW9kZSwgd2hlcmUgd2Ug c2xlZXAgZm9yIG11Y2gKKwkJICogbG9uZ2VyIHRoYW4gYmd3cml0ZXJfZGVsYXkgc2F5cy4g IEZld2VyIHdha2V1cHMgc2F2ZSBlbGVjdHJpY2l0eS4KKwkJICogV2hlbiBhIGJhY2tlbmQg c3RhcnRzIHVzaW5nIGJ1ZmZlcnMgYWdhaW4sIGl0IHdpbGwgd2FrZSB1cyB1cCBieQorCQkg KiBzZW5kaW5nIHVzIGFuIGludGVycnVwdC4gIEJlY2F1c2UgdGhlIGV4dHJhIHNsZWVwIHdp bGwgcGVyc2lzdCBvbmx5CisJCSAqIGFzIGxvbmcgYXMgbm8gYnVmZmVyIGFsbG9jYXRpb25z IGhhcHBlbiwgdGhpcyBzaG91bGQgbm90IGRpc3RvcnQKKwkJICogdGhlIGJlaGF2aW9yIG9m IEJnQnVmZmVyU3luYydzIGNvbnRyb2wgbG9vcCB0b28gYmFkbHk7IGVzc2VudGlhbGx5LAor CQkgKiBpdCB3aWxsIHRoaW5rIHRoYXQgdGhlIHN5c3RlbS13aWRlIGlkbGUgaW50ZXJ2YWwg ZGlkbid0IGV4aXN0LgogCQkgKgogCQkgKiBUaGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGhl cmUsIGluIHRoYXQgYSBiYWNrZW5kIG1pZ2h0IGFsbG9jYXRlIGEKIAkJICogYnVmZmVyIGJl dHdlZW4gdGhlIHRpbWUgQmdCdWZmZXJTeW5jIHNhdyB0aGUgYWxsb2MgY291bnQgYXMgemVy bwpAQCAtMzI5LDEwICszMzAsMTAgQEAgQmFja2dyb3VuZFdyaXRlck1haW4oY2hhciAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJCS8qIEFzayBmb3Igbm90 aWZpY2F0aW9uIGF0IG5leHQgYnVmZmVyIGFsbG9jYXRpb24gKi8KIAkJCVN0cmF0ZWd5Tm90 aWZ5QmdXcml0ZXIoTXlQcm9jTnVtYmVyKTsKIAkJCS8qIFNsZWVwIC4uLiAqLwotCQkJKHZv aWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgQmdXcml0ZXJEZWxheSAqIEhJ QkVSTkFURV9GQUNUT1IsCi0JCQkJCQkJIFdBSVRfRVZFTlRfQkdXUklURVJfSElCRVJOQVRF KTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJ CQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCQkJIEJnV3JpdGVyRGVsYXkgKiBISUJFUk5BVEVfRkFDVE9SLAorCQkJCQkJ CQkgV0FJVF9FVkVOVF9CR1dSSVRFUl9ISUJFUk5BVEUpOwogCQkJLyogUmVzZXQgdGhlIG5v dGlmaWNhdGlvbiByZXF1ZXN0IGluIGNhc2Ugd2UgdGltZWQgb3V0ICovCiAJCQlTdHJhdGVn eU5vdGlmeUJnV3JpdGVyKC0xKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMKaW5kZXggOTgyNTcyYTc1ZC4uOTdhYmVjMzEzOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJs ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s d2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTM0Myw3ICszNDQsNyBA QCBDaGVja3BvaW50ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBf ZGF0YV9sZW4pCiAJCWJvb2wJCWNoa3B0X29yX3JzdHB0X3RpbWVkID0gZmFsc2U7CiAKIAkJ LyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkv KgogCQkgKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBzaWduYWxzIHJlY2VpdmVkIHJlY2Vu dGx5LgpAQCAtNTU1LDEwICs1NTYsMTAgQEAgQ2hlY2twb2ludGVyTWFpbihjaGFyICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJY3VyX3RpbWVvdXQgPSBN aW4oY3VyX3RpbWVvdXQsIFhMb2dBcmNoaXZlVGltZW91dCAtIGVsYXBzZWRfc2Vjcyk7CiAJ CX0KIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgY3VyX3RpbWVv dXQgKiAxMDAwTCAvKiBjb252ZXJ0IHRvIG1zICovICwKLQkJCQkJCSBXQUlUX0VWRU5UX0NI RUNLUE9JTlRFUl9NQUlOKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCQkJIGN1cl90aW1lb3V0ICogMTAwMEwgLyogY29udmVy dCB0byBtcyAqLyAsCisJCQkJCQkJIFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4pOwog CX0KIH0KIApAQCAtNzU4LDEwICs3NTksMTEgQEAgQ2hlY2twb2ludFdyaXRlRGVsYXkoaW50 IGZsYWdzLCBkb3VibGUgcHJvZ3Jlc3MpCiAJCSAqIENoZWNrcG9pbnRlciBhbmQgYmd3cml0 ZXIgYXJlIG5vIGxvbmdlciByZWxhdGVkIHNvIHRha2UgdGhlIEJpZwogCQkgKiBTbGVlcC4K IAkJICovCi0JCVdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09O X1BNX0RFQVRIIHwgV0xfVElNRU9VVCwKLQkJCQkgIDEwMCwKLQkJCQkgIFdBSVRfRVZFTlRf Q0hFQ0tQT0lOVF9XUklURV9ERUxBWSk7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCVdh aXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJICBXTF9JTlRFUlJV UFQgfCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9VVCwKKwkJCQkJICAxMDAsCisJ CQkJCSAgV0FJVF9FVkVOVF9DSEVDS1BPSU5UX1dSSVRFX0RFTEFZKTsKKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAllbHNlIGlmICgtLWFic29yYl9jb3Vu dGVyIDw9IDApCiAJewpAQCAtODczLDcgKzg3NSw3IEBAIFJlcUNoZWNrcG9pbnRIYW5kbGVy KFNJR05BTF9BUkdTKQogCSAqIFRoZSBzaWduYWxpbmcgcHJvY2VzcyBzaG91bGQgaGF2ZSBz ZXQgY2twdF9mbGFncyBub256ZXJvLCBzbyBhbGwgd2UKIAkgKiBuZWVkIGRvIGlzIGVuc3Vy ZSB0aGF0IG91ciBtYWluIGxvb3AgZ2V0cyBraWNrZWQgb3V0IG9mIGFueSB3YWl0LgogCSAq LwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIH0KIAogCkBAIC0xMTQ1LDcgKzExNDcsNyBAQCBGb3J3YXJkU3luY1JlcXVlc3Qo Y29uc3QgRmlsZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUpCiAJCVByb2NOdW1i ZXIJY2hlY2twb2ludGVyUHJvYyA9IHByb2NnbG9iYWwtPmNoZWNrcG9pbnRlclByb2M7CiAK IAkJaWYgKGNoZWNrcG9pbnRlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJCVNl dExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihjaGVja3BvaW50ZXJQcm9jKS0+cHJvY0xhdGNo KTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFByb2NHbG9iYWwtPmNo ZWNrcG9pbnRlclByb2MpOwogCX0KIAogCXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvaW50ZXJydXB0LmMKaW5kZXggZWVkYzA5ODBjZi4uYWYzNDQzZWZjMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCkBAIC0xOCw4ICsxOCw4IEBACiAKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK LSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2ln bmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZAogU2lnbmFsSGFuZGxlckZvckNvbmZpZ1Jl bG9hZChTSUdOQUxfQVJHUykKIHsKIAlDb25maWdSZWxvYWRQZW5kaW5nID0gdHJ1ZTsKLQlT ZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiB9CiAKIC8qCkBAIC0xMDUsNSArMTA1LDUgQEAgdm9pZAogU2lnbmFsSGFuZGxlckZvclNo dXRkb3duUmVxdWVzdChTSUdOQUxfQVJHUykKIHsKIAlTaHV0ZG93blJlcXVlc3RQZW5kaW5n ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bn YXJjaC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwppbmRleCAwMmY5MTQz MWY1Li5iMzJjZjc4OGVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bn YXJjaC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKQEAgLTQxLDgg KzQxLDggQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3BnYXJjaC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgor I2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNp Z25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY3NpZ25hbC5oIgpAQCAtMjQ3LDggKzI0Nyw4IEBAIFBnQXJjaGl2ZXJNYWluKGNoYXIg KnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJb25fc2htZW1fZXhp dChwZ2FyY2hfZGllLCAwKTsKIAogCS8qCi0JICogQWR2ZXJ0aXNlIG91ciBwcm9jIG51bWJl ciBzbyB0aGF0IGJhY2tlbmRzIGNhbiB1c2Ugb3VyIGxhdGNoIHRvIHdha2UgdXMKLQkgKiB1 cCB3aGlsZSB3ZSdyZSBzbGVlcGluZy4KKwkgKiBBZHZlcnRpc2Ugb3VyIHByb2MgbnVtYmVy IHNvIHRoYXQgYmFja2VuZHMgY2FuIHdha2UgdXMgdXAgd2hpbGUgd2UncmUKKwkgKiBzbGVl cGluZy4KIAkgKi8KIAlQZ0FyY2gtPnBncHJvY25vID0gTXlQcm9jTnVtYmVyOwogCkBAIC0y ODIsMTMgKzI4MiwxMiBAQCBQZ0FyY2hXYWtldXAodm9pZCkKIAlpbnQJCQlhcmNoX3BncHJv Y25vID0gUGdBcmNoLT5wZ3Byb2NubzsKIAogCS8qCi0JICogV2UgZG9uJ3QgYWNxdWlyZSBQ cm9jQXJyYXlMb2NrIGhlcmUuICBJdCdzIGFjdHVhbGx5IGZpbmUgYmVjYXVzZQotCSAqIHBy b2NMYXRjaCBpc24ndCBldmVyIGZyZWVkLCBzbyB3ZSBqdXN0IGNhbiBwb3RlbnRpYWxseSBz ZXQgdGhlIHdyb25nCi0JICogcHJvY2VzcycgKG9yIG5vIHByb2Nlc3MnKSBsYXRjaC4gIEV2 ZW4gaW4gdGhhdCBjYXNlIHRoZSBhcmNoaXZlciB3aWxsCi0JICogYmUgcmVsYXVuY2hlZCBz aG9ydGx5IGFuZCB3aWxsIHN0YXJ0IGFyY2hpdmluZy4KKwkgKiBXZSBkb24ndCBhY3F1aXJl IFByb2NBcnJheUxvY2sgaGVyZSwgc28gd2UgbWF5IHNlbmQgdGhlIGludGVycnVwdCB0bwor CSAqIHdyb25nIHByb2Nlc3MsIGJ1dCB0aGF0J3MgaGFybWxlc3MuICBFdmVuIGluIHRoYXQg Y2FzZSB0aGUgYXJjaGl2ZXIKKwkgKiB3aWxsIGJlIHJlbGF1bmNoZWQgc2hvcnRseSBhbmQg d2lsbCBzdGFydCBhcmNoaXZpbmcuCiAJICovCiAJaWYgKGFyY2hfcGdwcm9jbm8gIT0gSU5W QUxJRF9QUk9DX05VTUJFUikKLQkJU2V0TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW2Fy Y2hfcGdwcm9jbm9dLnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwsIGFyY2hfcGdwcm9jbm8pOwogfQogCiAKQEAgLTI5OCw3ICsyOTcsNyBAQCBwZ2Fy Y2hfd2FrZW5fc3RvcChTSUdOQUxfQVJHUykKIHsKIAkvKiBzZXQgZmxhZyB0byBkbyBhIGZp bmFsIGN5Y2xlIGFuZCBzaHV0IGRvd24gYWZ0ZXJ3YXJkcyAqLwogCXJlYWR5X3RvX3N0b3Ag PSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKIH0KIAogLyoKQEAgLTMxOCw3ICszMTcsNyBAQCBwZ2FyY2hfTWFpbkxv b3Aodm9pZCkKIAkgKi8KIAlkbwogCXsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCS8qIFdoZW4gd2UgZ2V0IFNJ R1VTUjIsIHdlIGRvIG9uZSBtb3JlIGFyY2hpdmUgY3ljbGUsIHRoZW4gZXhpdCAqLwogCQl0 aW1lX3RvX3N0b3AgPSByZWFkeV90b19zdG9wOwpAQCAtMzU1LDEwICszNTQsMTAgQEAgcGdh cmNoX01haW5Mb29wKHZvaWQpCiAJCXsKIAkJCWludAkJCXJjOwogCi0JCQlyYyA9IFdhaXRM YXRjaChNeUxhdGNoLAotCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X1BPU1RNQVNURVJfREVBVEgsCi0JCQkJCQkgICBQR0FSQ0hfQVVUT1dBS0VfSU5URVJWQUwg KiAxMDAwTCwKLQkJCQkJCSAgIFdBSVRfRVZFTlRfQVJDSElWRVJfTUFJTik7CisJCQlyYyA9 IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgICBXTF9J TlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwKKwkJCQkJCQkg ICBQR0FSQ0hfQVVUT1dBS0VfSU5URVJWQUwgKiAxMDAwTCwKKwkJCQkJCQkgICBXQUlUX0VW RU5UX0FSQ0hJVkVSX01BSU4pOwogCQkJaWYgKHJjICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkK IAkJCQl0aW1lX3RvX3N0b3AgPSB0cnVlOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9z dG1hc3Rlci5jCmluZGV4IDYzNzZkNDMwODcuLjRlMjhiZmIyZjkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC0xMDksNiArMTA5LDcgQEAKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRl ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w bXNpZ25hbC5oIgogI2luY2x1ZGUgInRjb3AvYmFja2VuZF9zdGFydHVwLmgiCkBAIC01MzUs OCArNTM2LDcgQEAgUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlw cXNpZ25hbChTSUdDSExELCBoYW5kbGVfcG1fY2hpbGRfZXhpdF9zaWduYWwpOwogCiAJLyog VGhpcyBtYXkgY29uZmlndXJlIFNJR1VSRywgZGVwZW5kaW5nIG9uIHBsYXRmb3JtLiAqLwot CUluaXRpYWxpemVMYXRjaFN1cHBvcnQoKTsKLQlJbml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsK KwlJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCgpOwogCiAJLyoKIAkgKiBObyBvdGhlciBw bGFjZSBpbiBQb3N0Z3JlcyBzaG91bGQgdG91Y2ggU0lHVFRJTi9TSUdUVE9VIGhhbmRsaW5n LiAgV2UKQEAgLTE1OTUsMTQgKzE1OTUsMTQgQEAgQ29uZmlndXJlUG9zdG1hc3RlcldhaXRT ZXQoYm9vbCBhY2NlcHRfY29ubmVjdGlvbnMpCiAKIAlwbV93YWl0X3NldCA9IENyZWF0ZVdh aXRFdmVudFNldChOVUxMLAogCQkJCQkJCQkJIGFjY2VwdF9jb25uZWN0aW9ucyA/ICgxICsg TnVtTGlzdGVuU29ja2V0cykgOiAxKTsKLQlBZGRXYWl0RXZlbnRUb1NldChwbV93YWl0X3Nl dCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULCBNeUxhdGNoLAotCQkJCQkgIE5V TEwpOworCUFkZFdhaXRFdmVudFRvU2V0KHBtX3dhaXRfc2V0LCBXTF9JTlRFUlJVUFQsIFBH SU5WQUxJRF9TT0NLRVQsCisJCQkJCSAgMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgTlVMTCk7 CiAKIAlpZiAoYWNjZXB0X2Nvbm5lY3Rpb25zKQogCXsKIAkJZm9yIChpbnQgaSA9IDA7IGkg PCBOdW1MaXN0ZW5Tb2NrZXRzOyBpKyspCiAJCQlBZGRXYWl0RXZlbnRUb1NldChwbV93YWl0 X3NldCwgV0xfU09DS0VUX0FDQ0VQVCwgTGlzdGVuU29ja2V0c1tpXSwKLQkJCQkJCQkgIE5V TEwsIE5VTEwpOworCQkJCQkJCSAgMCwgTlVMTCk7CiAJfQogfQogCkBAIC0xNjMxLDE5ICsx NjMxLDIwIEBAIFNlcnZlckxvb3Aodm9pZCkKIAkJCQkJCQkJICAgMCAvKiBwb3N0bWFzdGVy IHBvc3RzIG5vIHdhaXRfZXZlbnRzICovICk7CiAKIAkJLyoKLQkJICogTGF0Y2ggc2V0IGJ5 IHNpZ25hbCBoYW5kbGVyLCBvciBuZXcgY29ubmVjdGlvbiBwZW5kaW5nIG9uIGFueSBvZgot CQkgKiBvdXIgc29ja2V0cz8gSWYgdGhlIGxhdHRlciwgZm9yayBhIGNoaWxkIHByb2Nlc3Mg dG8gZGVhbCB3aXRoIGl0LgorCQkgKiBJbnRlcnJ1cHQgcmFpc2VkIGJ5IHNpZ25hbCBoYW5k bGVyLCBvciBuZXcgY29ubmVjdGlvbiBwZW5kaW5nIG9uCisJCSAqIGFueSBvZiBvdXIgc29j a2V0cz8gIElmIHRoZSBsYXR0ZXIsIGZvcmsgYSBjaGlsZCBwcm9jZXNzIHRvIGRlYWwKKwkJ ICogd2l0aCBpdC4KIAkJICovCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgbmV2ZW50czsgaSsr KQogCQl7Ci0JCQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJCQlS ZXNldExhdGNoKE15TGF0Y2gpOworCQkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9JTlRF UlJVUFQpCisJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCQkv KgogCQkJICogVGhlIGZvbGxvd2luZyByZXF1ZXN0cyBhcmUgaGFuZGxlZCB1bmNvbmRpdGlv bmFsbHksIGV2ZW4gaWYgd2UKLQkJCSAqIGRpZG4ndCBzZWUgV0xfTEFUQ0hfU0VULiAgVGhp cyBnaXZlcyBoaWdoIHByaW9yaXR5IHRvIHNodXRkb3duCi0JCQkgKiBhbmQgcmVsb2FkIHJl cXVlc3RzIHdoZXJlIHRoZSBsYXRjaCBoYXBwZW5zIHRvIGFwcGVhciBsYXRlciBpbgotCQkJ ICogZXZlbnRzW10gb3Igd2lsbCBiZSByZXBvcnRlZCBieSBhIGxhdGVyIGNhbGwgdG8KKwkJ CSAqIGRpZG4ndCBzZWUgV0xfSU5URVJSVVBULiAgVGhpcyBnaXZlcyBoaWdoIHByaW9yaXR5 IHRvIHNodXRkb3duCisJCQkgKiBhbmQgcmVsb2FkIHJlcXVlc3RzIHdoZXJlIHRoZSBpbnRl cnJ1cHQgZXZlbnQgaGFwcGVucyB0byBhcHBlYXIKKwkJCSAqIGxhdGVyIGluIGV2ZW50c1td IG9yIHdpbGwgYmUgcmVwb3J0ZWQgYnkgYSBsYXRlciBjYWxsIHRvCiAJCQkgKiBXYWl0RXZl bnRTZXRXYWl0KCkuCiAJCQkgKi8KIAkJCWlmIChwZW5kaW5nX3BtX3NodXRkb3duX3JlcXVl c3QpCkBAIC0xOTM3LDcgKzE5MzgsNyBAQCBzdGF0aWMgdm9pZAogaGFuZGxlX3BtX3Btc2ln bmFsX3NpZ25hbChTSUdOQUxfQVJHUykKIHsKIAlwZW5kaW5nX3BtX3Btc2lnbmFsID0gdHJ1 ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7CiB9CiAKIC8qCkBAIC0xOTQ3LDcgKzE5NDgsNyBAQCBzdGF0aWMgdm9pZAogaGFu ZGxlX3BtX3JlbG9hZF9yZXF1ZXN0X3NpZ25hbChTSUdOQUxfQVJHUykKIHsKIAlwZW5kaW5n X3BtX3JlbG9hZF9yZXF1ZXN0ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlz ZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0yMDI0LDcgKzIw MjUsNyBAQCBoYW5kbGVfcG1fc2h1dGRvd25fcmVxdWVzdF9zaWduYWwoU0lHTkFMX0FSR1Mp CiAJCQlwZW5kaW5nX3BtX3NodXRkb3duX3JlcXVlc3QgPSB0cnVlOwogCQkJYnJlYWs7CiAJ fQotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIH0KIAogLyoKQEAgLTIxODUsNyArMjE4Niw3IEBAIHN0YXRpYyB2b2lkCiBoYW5k bGVfcG1fY2hpbGRfZXhpdF9zaWduYWwoU0lHTkFMX0FSR1MpCiB7CiAJcGVuZGluZ19wbV9j aGlsZF9leGl0ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1 cC5jCmluZGV4IGVmNmY5OGViY2QuLjIwMjBmMTcwZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv c3RhcnR1cC5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zdGFy dHVwLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Bt c2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVk ZSAidXRpbHMvZ3VjLmgiCkBAIC00MCw3ICs0MSw3IEBACiAgKiBPbiBzeXN0ZW1zIHRoYXQg bmVlZCB0byBtYWtlIGEgc3lzdGVtIGNhbGwgdG8gZmluZCBvdXQgaWYgdGhlIHBvc3RtYXN0 ZXIgaGFzCiAgKiBnb25lIGF3YXksIHdlJ2xsIGRvIHNvIG9ubHkgZXZlcnkgTnRoIGNhbGwg dG8gSGFuZGxlU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCkuCiAgKiBUaGlzIG9ubHkgYWZmZWN0 cyBob3cgbG9uZyBpdCB0YWtlcyB1cyB0byBkZXRlY3QgdGhlIGNvbmRpdGlvbiB3aGlsZSB3 ZSdyZQotICogYnVzeSByZXBsYXlpbmcgV0FMLiAgTGF0Y2ggd2FpdHMgYW5kIHNpbWlsYXIg d2hpY2ggc2hvdWxkIHJlYWN0IGltbWVkaWF0ZWx5CisgKiBidXN5IHJlcGxheWluZyBXQUwu ICBJbnRlcnJ1cHQgd2FpdHMgYW5kIHNpbWlsYXIgc2hvdWxkIHJlYWN0IGltbWVkaWF0ZWx5 CiAgKiB0aHJvdWdoIHRoZSB1c3VhbCB0ZWNobmlxdWVzLgogICovCiAjZGVmaW5lIFBPU1RN QVNURVJfUE9MTF9SQVRFX0xJTUlUIDEwMjQKQEAgLTIwNSw2ICsyMDYsOCBAQCBTdGFydHVw UHJvY0V4aXQoaW50IGNvZGUsIERhdHVtIGFyZykKIAkvKiBTaHV0ZG93biB0aGUgcmVjb3Zl cnkgZW52aXJvbm1lbnQgKi8KIAlpZiAoc3RhbmRieVN0YXRlICE9IFNUQU5EQllfRElTQUJM RUQpCiAJCVNodXRkb3duUmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KCk7CisKKwlQ cm9jR2xvYmFsLT5zdGFydHVwUHJvYyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiB9CiAKIApA QCAtMjIwLDYgKzIyMywxMiBAQCBTdGFydHVwUHJvY2Vzc01haW4oY2hhciAqc3RhcnR1cF9k YXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlNeUJhY2tlbmRUeXBlID0gQl9TVEFS VFVQOwogCUF1eGlsaWFyeVByb2Nlc3NNYWluQ29tbW9uKCk7CiAKKwkvKgorCSAqIEFkdmVy dGlzZSBvdXIgcHJvYyBudW1iZXIgc28gdGhhdCBiYWNrZW5kcyBjYW4gd2FrZSB1cyB1cCwg d2hlbiB0aGUKKwkgKiBzZXJ2ZXIgaXMgcHJvbW90ZWQgb3IgcmVjb3ZlcnkgaXMgcGF1c2Vk L3Jlc3VtZWQuCisJICovCisJUHJvY0dsb2JhbC0+c3RhcnR1cFByb2MgPSBNeVByb2NOdW1i ZXI7CisKIAkvKiBBcnJhbmdlIHRvIGNsZWFuIHVwIGF0IHN0YXJ0dXAgcHJvY2VzcyBleGl0 ICovCiAJb25fc2htZW1fZXhpdChTdGFydHVwUHJvY0V4aXQsIDApOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9zeXNsb2dnZXIuYwppbmRleCBmMTI2MzkwNTZmLi43ZGE0OTE2NTY3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKQEAgLTQ0LDggKzQ0LDggQEAKICNpbmNs dWRlICJwb3N0bWFzdGVyL3N5c2xvZ2dlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInRjb3AvdGNv cHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTMyOCw3ICszMjgsNyBAQCBT eXNMb2dnZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9s ZW4pCiAJd2hlcmVUb1NlbmRPdXRwdXQgPSBEZXN0Tm9uZTsKIAogCS8qCi0JICogU2V0IHVw IGEgcmV1c2FibGUgV2FpdEV2ZW50U2V0IG9iamVjdCB3ZSdsbCB1c2UgdG8gd2FpdCBmb3Ig b3VyIGxhdGNoLAorCSAqIFNldCB1cCBhIHJldXNhYmxlIFdhaXRFdmVudFNldCBvYmplY3Qg d2UnbGwgdXNlIHRvIHdhaXQgZm9yIGludGVycnVwdHMsCiAJICogYW5kIChleGNlcHQgb24g V2luZG93cykgb3VyIHNvY2tldC4KIAkgKgogCSAqIFVubGlrZSBhbGwgb3RoZXIgcG9zdG1h c3RlciBjaGlsZCBwcm9jZXNzZXMsIHdlJ2xsIGlnbm9yZSBwb3N0bWFzdGVyCkBAIC0zMzgs OSArMzM4LDkgQEAgU3lzTG9nZ2VyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBz dGFydHVwX2RhdGFfbGVuKQogCSAqIChpbmNsdWRpbmcgdGhlIHBvc3RtYXN0ZXIpLgogCSAq LwogCXdlcyA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLCAyKTsKLQlBZGRXYWl0RXZlbnRU b1NldCh3ZXMsIFdMX0xBVENIX1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwgTXlMYXRjaCwgTlVM TCk7CisJQWRkV2FpdEV2ZW50VG9TZXQod2VzLCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJRF9T T0NLRVQsIDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIE5VTEwpOwogI2lmbmRlZiBXSU4zMgot CUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfU09DS0VUX1JFQURBQkxFLCBzeXNsb2dQaXBl WzBdLCBOVUxMLCBOVUxMKTsKKwlBZGRXYWl0RXZlbnRUb1NldCh3ZXMsIFdMX1NPQ0tFVF9S RUFEQUJMRSwgc3lzbG9nUGlwZVswXSwgMCwgTlVMTCk7CiAjZW5kaWYKIAogCS8qIG1haW4g d29ya2VyIGxvb3AgKi8KQEAgLTM1Niw3ICszNTYsNyBAQCBTeXNMb2dnZXJNYWluKGNoYXIg KnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAjZW5kaWYKIAogCQkv KiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRMYXRjaChN eUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCS8q CiAJCSAqIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50 bHkuCkBAIC0xMTg2LDcgKzExODYsNyBAQCBwaXBlVGhyZWFkKHZvaWQgKmFyZykKIAkJCWlm IChmdGVsbChzeXNsb2dGaWxlKSA+PSBMb2dfUm90YXRpb25TaXplICogMTAyNEwgfHwKIAkJ CQkoY3N2bG9nRmlsZSAhPSBOVUxMICYmIGZ0ZWxsKGNzdmxvZ0ZpbGUpID49IExvZ19Sb3Rh dGlvblNpemUgKiAxMDI0TCkgfHwKIAkJCQkoanNvbmxvZ0ZpbGUgIT0gTlVMTCAmJiBmdGVs bChqc29ubG9nRmlsZSkgPj0gTG9nX1JvdGF0aW9uU2l6ZSAqIDEwMjRMKSkKLQkJCQlTZXRM YXRjaChNeUxhdGNoKTsKKwkJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJCX0KIAkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnN5c2xvZ2dlclNlY3Rpb24pOwogCX0K QEAgLTExOTcsOCArMTE5Nyw4IEBAIHBpcGVUaHJlYWQodm9pZCAqYXJnKQogCS8qIGlmIHRo ZXJlJ3MgYW55IGRhdGEgbGVmdCB0aGVuIGZvcmNlIGl0IG91dCBub3cgKi8KIAlmbHVzaF9w aXBlX2lucHV0KGxvZ2J1ZmZlciwgJmJ5dGVzX2luX2xvZ2J1ZmZlcik7CiAKLQkvKiBzZXQg dGhlIGxhdGNoIHRvIHdha2VuIHRoZSBtYWluIHRocmVhZCwgd2hpY2ggd2lsbCBxdWl0ICov Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJLyogcmFpc2UgdGhlIGludGVycnVwdCB0byB3YWtl biB0aGUgbWFpbiB0aHJlYWQsIHdoaWNoIHdpbGwgcXVpdCAqLworCVJhaXNlSW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzeXNsb2dn ZXJTZWN0aW9uKTsKIAlfZW5kdGhyZWFkKCk7CkBAIC0xNTkzLDUgKzE1OTMsNSBAQCBzdGF0 aWMgdm9pZAogc2lnVXNyMUhhbmRsZXIoU0lHTkFMX0FSR1MpCiB7CiAJcm90YXRpb25fcmVx dWVzdGVkID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3dhbHN1bW1hcml6ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFy aXplci5jCmluZGV4IDQ4MzUwYmVjNTIuLmFkNjQ2ZmIzYzAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC0zOCw4ICszOCw4IEBACiAjaW5jbHVkZSAi cG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fs cmVjZWl2ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgpAQCAt MzE1LDEwICszMTUsOCBAQCBXYWxTdW1tYXJpemVyTWFpbihjaGFyICpzdGFydHVwX2RhdGEs IHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkgKiBTbyBhIHJlYWxseSBmYXN0IHJldHJ5 IHRpbWUgZG9lc24ndCBzZWVtIHRvIGJlIGVzcGVjaWFsbHkKIAkJICogYmVuZWZpY2lhbCwg YW5kIGl0IHdpbGwgY2x1dHRlciB0aGUgbG9ncy4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0 Y2goTlVMTCwKLQkJCQkJCSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJ CQkJCSAxMDAwMCwKLQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX0VSUk9SKTsK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMCwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsIDEwMDAwLAorCQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX0VSUk9S KTsKIAl9CiAKIAkvKiBXZSBjYW4gbm93IGhhbmRsZSBlcmVwb3J0KEVSUk9SKSAqLwpAQCAt NjMwLDggKzYyOCw4IEBAIEdldE9sZGVzdFVuc3VtbWFyaXplZExTTihUaW1lTGluZUlEICp0 bGksIGJvb2wgKmxzbl9pc19leGFjdCkKICAqCiAgKiBUaGlzIG1pZ2h0IG5vdCB3b3JrLCBi ZWNhdXNlIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIFdBTCBzdW1tYXJpemVyCiAg KiBwcm9jZXNzIHdhcyBzdWNjZXNzZnVsbHkgc3RhcnRlZCwgYW5kIGl0IGFsc28gbWlnaHQg aGF2ZSBzdGFydGVkIGJ1dAotICogc3Vic2VxdWVudGx5IHRlcm1pbmF0ZWQuIFNvLCB1bmRl ciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgdGhpcyB3aWxsIGdldCB0aGUKLSAqIGxhdGNoIHNl dCwgYnV0IHRoZXJlJ3Mgbm8gZ3VhcmFudGVlLgorICogc3Vic2VxdWVudGx5IHRlcm1pbmF0 ZWQuIFNvLCB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgdGhpcyB3aWxsIHNlbmQKKyAq IHRoZSBpbnRlcnJ1cHQsIGJ1dCB0aGVyZSdzIG5vIGd1YXJhbnRlZS4KICAqLwogdm9pZAog V2FrZXVwV2FsU3VtbWFyaXplcih2b2lkKQpAQCAtNjQ2LDcgKzY0NCw3IEBAIFdha2V1cFdh bFN1bW1hcml6ZXIodm9pZCkKIAlMV0xvY2tSZWxlYXNlKFdBTFN1bW1hcml6ZXJMb2NrKTsK IAogCWlmIChwZ3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgm UHJvY0dsb2JhbC0+YWxsUHJvY3NbcGdwcm9jbm9dLnByb2NMYXRjaCk7CisJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIHBncHJvY25vKTsKIH0KIAogLyoKQEAgLTE2Mzcs MTEgKzE2MzUsMTEgQEAgc3VtbWFyaXplcl93YWl0X2Zvcl93YWwodm9pZCkKIAl9CiAKIAkv KiBPSywgbm93IHNsZWVwLiAqLwotCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJ IFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJ CQkgc2xlZXBfcXVhbnRhICogTVNfUEVSX1NMRUVQX1FVQU5UVU0sCi0JCQkJCSBXQUlUX0VW RU5UX1dBTF9TVU1NQVJJWkVSX1dBTCk7Ci0JUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkodm9p ZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJIFdMX0lO VEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJIHNs ZWVwX3F1YW50YSAqIE1TX1BFUl9TTEVFUF9RVUFOVFVNLAorCQkJCQkJIFdBSVRfRVZFTlRf V0FMX1NVTU1BUklaRVJfV0FMKTsKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCk7CiAKIAkvKiBSZXNldCBjb3VudCBvZiBwYWdlcyByZWFkLiAqLwogCXBhZ2VzX3JlYWRf c2luY2VfbGFzdF9zbGVlcCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3dhbHdyaXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYwpp bmRleCA1YTNjYjg5NDY1Li4xODA3MzU5MGU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL3dhbHdyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fs d3JpdGVyLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKQEAgLTIyMiwxMiArMjIzLDEyIEBAIFdhbFdy aXRlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikK IAogCQkvKgogCQkgKiBBZHZlcnRpc2Ugd2hldGhlciB3ZSBtaWdodCBoaWJlcm5hdGUgaW4g dGhpcyBjeWNsZS4gIFdlIGRvIHRoaXMKLQkJICogYmVmb3JlIHJlc2V0dGluZyB0aGUgbGF0 Y2ggdG8gZW5zdXJlIHRoYXQgYW55IGFzeW5jIGNvbW1pdHMgd2lsbAotCQkgKiBzZWUgdGhl IGZsYWcgc2V0IGlmIHRoZXkgbWlnaHQgcG9zc2libHkgbmVlZCB0byB3YWtlIHVzIHVwLCBh bmQKLQkJICogdGhhdCB3ZSB3b24ndCBtaXNzIGFueSBzaWduYWwgdGhleSBzZW5kIHVzLiAg KElmIHdlIGRpc2NvdmVyIHdvcmsKLQkJICogdG8gZG8gaW4gdGhlIGxhc3QgY3ljbGUgYmVm b3JlIHdlIHdvdWxkIGhpYmVybmF0ZSwgdGhlIGdsb2JhbCBmbGFnCi0JCSAqIHdpbGwgYmUg c2V0IHVubmVjZXNzYXJpbHksIGJ1dCBsaXR0bGUgaGFybSBpcyBkb25lLikgIEJ1dCBhdm9p ZAotCQkgKiB0b3VjaGluZyB0aGUgZ2xvYmFsIGZsYWcgaWYgaXQgZG9lc24ndCBuZWVkIHRv IGNoYW5nZS4KKwkJICogYmVmb3JlIGNsZWFyaW5nIHRoZSBpbnRlcnJ1cHQgZmxhZyB0byBl bnN1cmUgdGhhdCBhbnkgYXN5bmMgY29tbWl0cworCQkgKiB3aWxsIHNlZSB0aGUgZmxhZyBz ZXQgaWYgdGhleSBtaWdodCBwb3NzaWJseSBuZWVkIHRvIHdha2UgdXMgdXAsCisJCSAqIGFu ZCB0aGF0IHdlIHdvbid0IG1pc3MgYW55IHNpZ25hbCB0aGV5IHNlbmQgdXMuICAoSWYgd2Ug ZGlzY292ZXIKKwkJICogd29yayB0byBkbyBpbiB0aGUgbGFzdCBjeWNsZSBiZWZvcmUgd2Ug d291bGQgaGliZXJuYXRlLCB0aGUgZ2xvYmFsCisJCSAqIGZsYWcgd2lsbCBiZSBzZXQgdW5u ZWNlc3NhcmlseSwgYnV0IGxpdHRsZSBoYXJtIGlzIGRvbmUuKSAgQnV0CisJCSAqIGF2b2lk IHRvdWNoaW5nIHRoZSBnbG9iYWwgZmxhZyBpZiBpdCBkb2Vzbid0IG5lZWQgdG8gY2hhbmdl LgogCQkgKi8KIAkJaWYgKGhpYmVybmF0aW5nICE9IChsZWZ0X3RpbGxfaGliZXJuYXRlIDw9 IDEpKQogCQl7CkBAIC0yMzYsNyArMjM3LDcgQEAgV2FsV3JpdGVyTWFpbihjaGFyICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQl9CiAKIAkJLyogQ2xlYXIg YW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkvKiBQcm9jZXNz IGFueSBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5ICovCiAJCUhhbmRsZU1haW5Mb29wSW50 ZXJydXB0cygpOwpAQCAtMjYzLDkgKzI2NCw5IEBAIFdhbFdyaXRlck1haW4oY2hhciAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJZWxzZQogCQkJY3VyX3Rp bWVvdXQgPSBXYWxXcml0ZXJEZWxheSAqIEhJQkVSTkFURV9GQUNUT1I7CiAKLQkJKHZvaWQp IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIGN1cl90aW1lb3V0LAotCQkJCQkJIFdB SVRfRVZFTlRfV0FMX1dSSVRFUl9NQUlOKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8 PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9V VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIGN1cl90aW1lb3V0LAorCQkJCQkJ CSBXQUlUX0VWRU5UX1dBTF9XUklURVJfTUFJTik7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2Fs cmVjZWl2ZXIuYwppbmRleCBjNzQzNjk5NTNmLi5mOGJkMmI2N2Q2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2 ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xp YnBxd2FscmVjZWl2ZXIuYwpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5o IgogI2luY2x1ZGUgInBxZXhwYnVmZmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fs cmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCkBAIC0y MzcsMTYgKzIzNywxNiBAQCBsaWJwcXJjdl9jb25uZWN0KGNvbnN0IGNoYXIgKmNvbm5pbmZv LCBib29sIHJlcGxpY2F0aW9uLCBib29sIGxvZ2ljYWwsCiAJCWVsc2UKIAkJCWlvX2ZsYWcg PSBXTF9TT0NLRVRfV1JJVEVBQkxFOwogCi0JCXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlM YXRjaCwKLQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfTEFUQ0hfU0VUIHwg aW9fZmxhZywKLQkJCQkJCQkgICBQUXNvY2tldChjb25uLT5zdHJlYW1Db25uKSwKLQkJCQkJ CQkgICAwLAotCQkJCQkJCSAgIFdBSVRfRVZFTlRfTElCUFFXQUxSRUNFSVZFUl9DT05ORUNU KTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJB TCwKKwkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8IGlv X2ZsYWcsCisJCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4tPnN0cmVhbUNvbm4pLAorCQkJCQkJ CQkgICAwLAorCQkJCQkJCQkgICBXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfQ09OTkVD VCk7CiAKIAkJLyogSW50ZXJydXB0ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkK KwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJUHJvY2Vzc1dh bFJjdkludGVycnVwdHMoKTsKIAkJfQogCkBAIC04NDgsMTcgKzg0OCwxNyBAQCBsaWJwcXJj dl9QUWdldFJlc3VsdChQR2Nvbm4gKnN0cmVhbUNvbm4pCiAJCSAqIHNpbmNlIHdlJ2xsIGdl dCBpbnRlcnJ1cHRlZCBieSBzaWduYWxzIGFuZCBjYW4gaGFuZGxlIGFueQogCQkgKiBpbnRl cnJ1cHRzIGhlcmUuCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gs Ci0JCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8 Ci0JCQkJCQkJICAgV0xfTEFUQ0hfU0VULAotCQkJCQkJCSAgIFBRc29ja2V0KHN0cmVhbUNv bm4pLAotCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAgV0FJVF9FVkVOVF9MSUJQUVdBTFJFQ0VJ VkVSX1JFQ0VJVkUpOworCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMLAorCQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfU09D S0VUX1JFQURBQkxFIHwKKwkJCQkJCQkJICAgV0xfSU5URVJSVVBULAorCQkJCQkJCQkgICBQ UXNvY2tldChzdHJlYW1Db25uKSwKKwkJCQkJCQkJICAgMCwKKwkJCQkJCQkJICAgV0FJVF9F VkVOVF9MSUJQUVdBTFJFQ0VJVkVSX1JFQ0VJVkUpOwogCiAJCS8qIEludGVycnVwdGVkPyAq LwotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkK IAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKIAkJCVByb2Nlc3NXYWxSY3ZJbnRlcnJ1cHRzKCk7CiAJCX0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYwppbmRleCBlN2Y3ZDRjNWU0Li5lYjVkYzMxMTZlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYwpAQCAtMTY1LDYgKzE2NSw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC04MDQsMTMgKzgw NSwxMyBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQog CQkJCWludAkJCXJjOwogCiAJCQkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLwotCQkJCXJj ID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJICAgMTAwMEwsCi0JCQkJCQkJ ICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4pOworCQkJCXJjID0g V2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkgICBXTF9J TlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJ ICAgMTAwMEwsCisJCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBM WV9NQUlOKTsKIAotCQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJCQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCisJCQkJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCX0KIAkJfQogCQllbHNlCkBAIC05OTAs NyArOTkxLDcgQEAgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkK IHsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKIAlQYXJhbGxlbEFwcGx5TWVzc2FnZVBl bmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKIH0KIAogLyoKQEAgLTExODIsMTQgKzExODMsMTQgQEAgcGFf c2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMs IGNvbnN0IHZvaWQgKmRhdGEpCiAJCUFzc2VydChyZXN1bHQgPT0gU0hNX01RX1dPVUxEX0JM T0NLKTsKIAogCQkvKiBXYWl0IGJlZm9yZSByZXRyeWluZy4gKi8KLQkJcmMgPSBXYWl0TGF0 Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TLAot CQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfU0VORF9EQVRBKTsKKwkJcmMgPSBX YWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkgICBXTF9JTlRF UlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIFNI TV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TLAorCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FM X0FQUExZX1NFTkRfREFUQSk7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAo cmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCQl9CiAKQEAgLTEyNTQsMTMgKzEyNTUsMTMgQEAgcGFfd2FpdF9mb3JfeGFj dF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJCQlicmVhazsKIAog CQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxh dGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BN X0RFQVRILAotCQkJCQkJIDEwTCwKLQkJCQkJCSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxM RUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJ TlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIDEwTCwKKwkJCQkJCQkgV0FJVF9FVkVO VF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CiAKLQkJLyogUmVzZXQg dGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCS8qIENsZWFyIHRoZSBpbnRlcnJ1cHQgZmxhZyBzbyB3ZSBkb24ndCBzcGluLiAqLwor CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyogQW4gaW50ZXJy dXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbGF1bmNoZXIuYwppbmRleCBlNWZkY2E4YmJmLi45NzY1YTA5OWVjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC0zNCw2ICszNCw3 IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY2FycmF5LmgiCkBAIC0yMTgsMTYgKzIxOSwxNyBAQCBXYWl0Rm9yUmVwbGljYXRp b25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQl9CiAKIAkJLyoK LQkJICogV2UgbmVlZCB0aW1lb3V0IGJlY2F1c2Ugd2UgZ2VuZXJhbGx5IGRvbid0IGdldCBu b3RpZmllZCB2aWEgbGF0Y2gKLQkJICogYWJvdXQgdGhlIHdvcmtlciBhdHRhY2guICBCdXQg d2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25nLgorCQkgKiBXZSBuZWVkIHRp bWVvdXQgYmVjYXVzZSB3ZSBnZW5lcmFsbHkgZG9uJ3QgZ2V0IG5vdGlmaWVkIHZpYSBhbgor CQkgKiBpbnRlcnJ1cHQgYWJvdXQgdGhlIHdvcmtlciBhdHRhY2guICBCdXQgd2UgZG9uJ3Qg ZXhwZWN0IHRvIGhhdmUgdG8KKwkJICogd2FpdCBsb25nLgogCQkgKi8KLQkJcmMgPSBXYWl0 TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktFUl9T VEFSVFVQKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUws CisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAot CQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJ ewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAl9CkBAIC01 NTMsMTMgKzU1NSwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2lj YWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25vKQogCQlMV0xvY2tSZWxlYXNlKExvZ2lj YWxSZXBXb3JrZXJMb2NrKTsKIAogCQkvKiBXYWl0IGEgYml0IC0tLSB3ZSBkb24ndCBleHBl Y3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gs Ci0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CisJCXJj ID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJICAgV0xf SU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkg ICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CiAKLQkJaWYgKHJjICYgV0xf TEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0 Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKQEAgLTU5NCwxMyArNTk2LDEzIEBA IGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29y a2VyLCBpbnQgc2lnbm8pCiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2sp OwogCiAJCS8qIFdhaXQgYSBiaXQgLS0tIHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRvIHdh aXQgbG9uZy4gKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFU Q0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIDEw TCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TSFVURE9XTik7CisJCXJjID0gV2FpdEludGVycnVw dCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICAxMEwsIFdBSVRfRVZF TlRfQkdXT1JLRVJfU0hVVERPV04pOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJ aWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOwor CQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKIAkJfQogCkBAIC02NzYsNyArNjc4LDcgQEAgbG9naWNhbHJlcF9wYV93 b3JrZXJfc3RvcChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiB9CiAKIC8qCi0g KiBXYWtlIHVwICh1c2luZyBsYXRjaCkgYW55IGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vy IGZvciBzcGVjaWZpZWQgc3ViL3JlbC4KKyAqIFdha2UgdXAgKHVzaW5nIGludGVycnVwdCkg YW55IGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzcGVjaWZpZWQgc3ViL3JlbC4K ICAqLwogdm9pZAogbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lkIHJl bGlkKQpAQCAtNjk0LDcgKzY5Niw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChPaWQg c3ViaWQsIE9pZCByZWxpZCkKIH0KIAogLyoKLSAqIFdha2UgdXAgKHVzaW5nIGxhdGNoKSB0 aGUgc3BlY2lmaWVkIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyLgorICogV2FrZSB1cCAo dXNpbmcgaW50ZXJydXB0KSB0aGUgc3BlY2lmaWVkIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyLgogICoKICAqIENhbGxlciBtdXN0IGhvbGQgbG9jaywgZWxzZSB3b3JrZXItPnByb2Mg Y291bGQgY2hhbmdlIHVuZGVyIHVzLgogICovCkBAIC03MDMsNyArNzA1LDcgQEAgbG9naWNh bHJlcF93b3JrZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiB7CiAJ QXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CiAKLQlTZXRM YXRjaCgmd29ya2VyLT5wcm9jLT5wcm9jTGF0Y2gpOworCVNlbmRJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwsIEdldE51bWJlckZyb21QR1Byb2Mod29ya2VyLT5wcm9jKSk7CiB9CiAK IC8qCkBAIC0xMjIxLDE0ICsxMjIzLDE0IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1h aW5fYXJnKQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKHN1YmN0eCk7CiAKIAkJLyogV2FpdCBm b3IgbW9yZSB3b3JrLiAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ ICAgd2FpdF90aW1lLAotCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJ Tik7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJ CQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJCQkgICB3YWl0X3RpbWUsCisJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfTEFV TkNIRVJfTUFJTik7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBX TF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMu YwppbmRleCBmNGY4MGIyMzEyLi45YjVmNWJiMTU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3Rz eW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc25hcGJ1aWxkLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtMTI1 MiwxMyArMTI1MywxMyBAQCB3YWl0X2Zvcl9zbG90X2FjdGl2aXR5KGJvb2wgc29tZV9zbG90 X3VwZGF0ZWQpCiAJCXNsZWVwX21zID0gTUlOX1NMT1RTWU5DX1dPUktFUl9OQVBUSU1FX01T OwogCX0KIAotCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJICAgV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJICAgc2xlZXBfbXMs Ci0JCQkJICAgV0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9UU1lOQ19NQUlOKTsKKwlyYyA9 IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJICAgV0xfSU5U RVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCSAgIHNs ZWVwX21zLAorCQkJCQkgICBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5DX01BSU4p OwogCi0JaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQotCQlSZXNldExhdGNoKE15TGF0Y2gpOwor CWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogfQogCiAvKgpAQCAtMTU5MCwxMyArMTU5MSwxMyBAQCBTaHV0RG93blNsb3RT eW5jKHZvaWQpCiAJCWludAkJCXJjOwogCiAJCS8qIFdhaXQgYSBiaXQsIHdlIGRvbid0IGV4 cGVjdCB0byBoYXZlIHRvIHdhaXQgbG9uZyAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJICAgMTBMLCBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5DX1NI VVRET1dOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUws CisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9UU1lOQ19T SFVURE9XTik7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9J TlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFi bGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5j CmluZGV4IDdjOGEwZTljZmUuLmRmZjRmNWNiYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTExLDYgKzExMSw3IEBACiAjaW5j bHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisj aW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5o IgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgpA QCAtMjEwLDExICsyMTEsMTEgQEAgd2FpdF9mb3JfcmVsYXRpb25fc3RhdGVfY2hhbmdlKE9p ZCByZWxpZCwgY2hhciBleHBlY3RlZF9zdGF0ZSkKIAkJaWYgKCF3b3JrZXIpCiAJCQlicmVh azsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgMTAwMEwsIFdB SVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSk7CisJCSh2b2lkKSBXYWl0SW50 ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAxMDAwTCwgV0FJ VF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsKIAotCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJfQogCiAJ cmV0dXJuIGZhbHNlOwpAQCAtMjYwLDE1ICsyNjEsMTUgQEAgd2FpdF9mb3Jfd29ya2VyX3N0 YXRlX2NoYW5nZShjaGFyIGV4cGVjdGVkX3N0YXRlKQogCQkJYnJlYWs7CiAKIAkJLyoKLQkJ ICogV2FpdC4gIFdlIGV4cGVjdCB0byBnZXQgYSBsYXRjaCBzaWduYWwgYmFjayBmcm9tIHRo ZSBhcHBseSB3b3JrZXIsCisJCSAqIFdhaXQuICBXZSBleHBlY3QgdG8gZ2V0IGFuIGludGVy cnVwdCB3YWtldXAgZnJvbSB0aGUgYXBwbHkgd29ya2VyLAogCQkgKiBidXQgdXNlIGEgdGlt ZW91dCBpbiBjYXNlIGl0IGRpZXMgd2l0aG91dCBzZW5kaW5nIG9uZS4KIAkJICovCi0JCXJj ID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAxMDAwTCwgV0FJVF9FVkVOVF9M T0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwg SU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwMDBMLCBXQUlUX0VWRU5UX0xP R0lDQUxfU1lOQ19TVEFURV9DSEFOR0UpOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkK LQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAl9CiAKIAlyZXR1cm4gZmFs c2U7CkBAIC01NTUsNyArNTU2LDcgQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBw bHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkJCQkJCSAqIHRoZSBleGlzdGluZyBsb2Nr cyBiZWZvcmUgZW50ZXJpbmcgYSBidXN5IGxvb3AuCiAJCQkJCQkgKiBUaGlzIGlzIHJlcXVp cmVkIHRvIGF2b2lkIGFueSB1bmRldGVjdGVkIGRlYWRsb2NrcwogCQkJCQkJICogZHVlIHRv IGFueSBleGlzdGluZyBsb2NrIGFzIGRlYWRsb2NrIGRldGVjdG9yIHdvbid0Ci0JCQkJCQkg KiBiZSBhYmxlIHRvIGRldGVjdCB0aGUgd2FpdHMgb24gdGhlIGxhdGNoLgorCQkJCQkJICog YmUgYWJsZSB0byBkZXRlY3QgdGhlIHdhaXRzIG9uIHRoZSBpbnRlcnJ1cHQKIAkJCQkJCSAq LwogCQkJCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJCQkJCQlwZ3N0YXRfcmVw b3J0X3N0YXQoZmFsc2UpOwpAQCAtNzcxLDE0ICs3NzIsMTQgQEAgY29weV9yZWFkX2RhdGEo dm9pZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAJCX0KIAogCQkvKgot CQkgKiBXYWl0IGZvciBtb3JlIGRhdGEgb3IgbGF0Y2guCisJCSAqIFdhaXQgZm9yIG1vcmUg ZGF0YSBvciBpbnRlcnJ1cHQuCiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNoT3JTb2NrZXQo TXlMYXRjaCwKLQkJCQkJCQkJIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0xBVENIX1NFVCB8 Ci0JCQkJCQkJCSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJ IGZkLCAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSk7CisJCSh2b2lkKSBX YWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJ CSBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9JTlRFUlJVUFQgfAorCQkJCQkJCQkJIFdMX1RJ TUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkJIGZkLCAxMDAwTCwgV0FJ VF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSk7CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsK KwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAogCXJldHVybiBi eXRlc3JlYWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpp bmRleCA5MjVkZmY5Y2M0Li43NDAzN2M4ODM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTE3Nyw2ICsxNzcsNyBAQAogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0 ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgpAQCAtMzcy OSwyNiArMzczMCwyNiBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9y ZWNlaXZlZCkKIAkJCWJyZWFrOwogCiAJCS8qCi0JCSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBv ciBsYXRjaC4gIElmIHdlIGhhdmUgdW5mbHVzaGVkIHRyYW5zYWN0aW9ucywKLQkJICogd2Fr ZSB1cCBhZnRlciBXYWxXcml0ZXJEZWxheSB0byBzZWUgaWYgdGhleSd2ZSBiZWVuIGZsdXNo ZWQgeWV0IChpbgotCQkgKiB3aGljaCBjYXNlIHdlIHNob3VsZCBzZW5kIGEgZmVlZGJhY2sg bWVzc2FnZSkuICBPdGhlcndpc2UsIHRoZXJlJ3MKLQkJICogbm8gcGFydGljdWxhciB1cmdl bmN5IGFib3V0IHdha2luZyB1cCB1bmxlc3Mgd2UgZ2V0IGRhdGEgb3IgYQotCQkgKiBzaWdu YWwuCisJCSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBvciBpbnRlcnJ1cHQuICBJZiB3ZSBoYXZl IHVuZmx1c2hlZAorCQkgKiB0cmFuc2FjdGlvbnMsIHdha2UgdXAgYWZ0ZXIgV2FsV3JpdGVy RGVsYXkgdG8gc2VlIGlmIHRoZXkndmUgYmVlbgorCQkgKiBmbHVzaGVkIHlldCAoaW4gd2hp Y2ggY2FzZSB3ZSBzaG91bGQgc2VuZCBhIGZlZWRiYWNrIG1lc3NhZ2UpLgorCQkgKiBPdGhl cndpc2UsIHRoZXJlJ3Mgbm8gcGFydGljdWxhciB1cmdlbmN5IGFib3V0IHdha2luZyB1cCB1 bmxlc3Mgd2UKKwkJICogZ2V0IGRhdGEgb3IgYSBzaWduYWwuCiAJCSAqLwogCQlpZiAoIWRs aXN0X2lzX2VtcHR5KCZsc25fbWFwcGluZykpCiAJCQl3YWl0X3RpbWUgPSBXYWxXcml0ZXJE ZWxheTsKIAkJZWxzZQogCQkJd2FpdF90aW1lID0gTkFQVElNRV9QRVJfQ1lDTEU7CiAKLQkJ cmMgPSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX1NPQ0tFVF9S RUFEQUJMRSB8IFdMX0xBVENIX1NFVCB8Ci0JCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCi0JCQkJCQkJICAgZmQsIHdhaXRfdGltZSwKLQkJCQkJCQkgICBX QUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfTUFJTik7CisJCXJjID0gV2FpdEludGVycnVwdE9y U29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCSAgIFdMX1NPQ0tFVF9S RUFEQUJMRSB8IFdMX0lOVEVSUlVQVCB8CisJCQkJCQkJCSAgIFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgICBmZCwgd2FpdF90aW1lLAorCQkJCQkJCQkg ICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfTUFJTik7CiAKLQkJaWYgKHJjICYgV0xfTEFU Q0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3N5bmNyZXAuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNy ZXAuYwppbmRleCBlMTEyNjczNGVmLi44YjZiMWU4ZmMxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc3luY3JlcC5jCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24v c3luY3JlcC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ0 Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCkBAIC0yMjIs MjIgKzIyMywyMiBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwgYm9vbCBj b21taXQpCiAJLyoKIAkgKiBXYWl0IGZvciBzcGVjaWZpZWQgTFNOIHRvIGJlIGNvbmZpcm1l ZC4KIAkgKgotCSAqIEVhY2ggcHJvYyBoYXMgaXRzIG93biB3YWl0IGxhdGNoLCBzbyB3ZSBw ZXJmb3JtIGEgbm9ybWFsIGxhdGNoCisJICogRWFjaCBwcm9jIGhhcyBpdHMgb3duIHdhaXQg aW50ZXJydXB0IHZlY3Rvciwgc28gd2UgcGVyZm9ybSBhIG5vcm1hbAogCSAqIGNoZWNrL3dh aXQgbG9vcCBoZXJlLgogCSAqLwogCWZvciAoOzspCiAJewogCQlpbnQJCQlyYzsKIAotCQkv KiBNdXN0IHJlc2V0IHRoZSBsYXRjaCBiZWZvcmUgdGVzdGluZyBzdGF0ZS4gKi8KLQkJUmVz ZXRMYXRjaChNeUxhdGNoKTsKKwkJLyogTXVzdCBjbGVhciB0aGUgaW50ZXJydXB0IGZsYWcg YmVmb3JlIHRlc3Rpbmcgc3RhdGUuICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAogCQkvKgotCQkgKiBBY3F1aXJpbmcgdGhlIGxvY2sgaXMgbm90IG5lZWRl ZCwgdGhlIGxhdGNoIGVuc3VyZXMgcHJvcGVyCi0JCSAqIGJhcnJpZXJzLiBJZiBpdCBsb29r cyBsaWtlIHdlJ3JlIGRvbmUsIHdlIG11c3QgcmVhbGx5IGJlIGRvbmUsCi0JCSAqIGJlY2F1 c2Ugb25jZSB3YWxzZW5kZXIgY2hhbmdlcyB0aGUgc3RhdGUgdG8gU1lOQ19SRVBfV0FJVF9D T01QTEVURSwKLQkJICogaXQgd2lsbCBuZXZlciB1cGRhdGUgaXQgYWdhaW4sIHNvIHdlIGNh bid0IGJlIHNlZWluZyBhIHN0YWxlIHZhbHVlCi0JCSAqIGluIHRoYXQgY2FzZS4KKwkJICog QWNxdWlyaW5nIHRoZSBsb2NrIGlzIG5vdCBuZWVkZWQsIHRoZSBpbnRlcnJ1cHQgZW5zdXJl cyBwcm9wZXIKKwkJICogYmFycmllcnMgKEZJWE1FOiBpcyB0aGF0IHNvPykuIElmIGl0IGxv b2tzIGxpa2Ugd2UncmUgZG9uZSwgd2UgbXVzdAorCQkgKiByZWFsbHkgYmUgZG9uZSwgYmVj YXVzZSBvbmNlIHdhbHNlbmRlciBjaGFuZ2VzIHRoZSBzdGF0ZSB0bworCQkgKiBTWU5DX1JF UF9XQUlUX0NPTVBMRVRFLCBpdCB3aWxsIG5ldmVyIHVwZGF0ZSBpdCBhZ2Fpbiwgc28gd2Ug Y2FuJ3QKKwkJICogYmUgc2VlaW5nIGEgc3RhbGUgdmFsdWUgaW4gdGhhdCBjYXNlLgogCQkg Ki8KIAkJaWYgKE15UHJvYy0+c3luY1JlcFN0YXRlID09IFNZTkNfUkVQX1dBSVRfQ09NUExF VEUpCiAJCQlicmVhazsKQEAgLTI4MiwxMSArMjgzLDEzIEBAIFN5bmNSZXBXYWl0Rm9yTFNO KFhMb2dSZWNQdHIgbHNuLCBib29sIGNvbW1pdCkKIAkJfQogCiAJCS8qCi0JCSAqIFdhaXQg b24gbGF0Y2guICBBbnkgY29uZGl0aW9uIHRoYXQgc2hvdWxkIHdha2UgdXMgdXAgd2lsbCBz ZXQgdGhlCi0JCSAqIGxhdGNoLCBzbyBubyBuZWVkIGZvciB0aW1lb3V0LgorCQkgKiBXYWl0 IG9uIGludGVycnVwdC4gIEFueSBjb25kaXRpb24gdGhhdCBzaG91bGQgd2FrZSB1cyB1cCB3 aWxsIHNldAorCQkgKiB0aGUgaW50ZXJydXB0LCBzbyBubyBuZWVkIGZvciB0aW1lb3V0Lgog CQkgKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfUE9T VE1BU1RFUl9ERUFUSCwgLTEsCi0JCQkJCSAgIFdBSVRfRVZFTlRfU1lOQ19SRVApOworCQly YyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCSAgIFdM X0lOVEVSUlVQVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCisJCQkJCQkgICAtMSwKKwkJCQkJ CSAgIFdBSVRfRVZFTlRfU1lOQ19SRVApOwogCiAJCS8qCiAJCSAqIElmIHRoZSBwb3N0bWFz dGVyIGRpZXMsIHdlJ2xsIHByb2JhYmx5IG5ldmVyIGdldCBhbiBhY2tub3dsZWRnbWVudCwK QEAgLTkwMiw3ICs5MDUsNyBAQCBTeW5jUmVwV2FrZVF1ZXVlKGJvb2wgYWxsLCBpbnQgbW9k ZSkKIAkJLyoKIAkJICogV2FrZSBvbmx5IHdoZW4gd2UgaGF2ZSBzZXQgc3RhdGUgYW5kIHJl bW92ZWQgZnJvbSBxdWV1ZS4KIAkJICovCi0JCVNldExhdGNoKCYocHJvYy0+cHJvY0xhdGNo KSk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIEdldE51bWJlckZyb21Q R1Byb2MocHJvYykpOwogCiAJCW51bXByb2NzKys7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggNWY2NDFkMjc5MC4uM2I3Y2Q2MjkwZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCkBAIC02Nyw2ICs2Nyw3IEBACiAj aW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgor I2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Nh cnJheS5oIgpAQCAtMTQ2LDE3ICsxNDcsMTcgQEAgc3RhdGljIHZvaWQgUHJvY2Vzc1dhbFNu ZHJNZXNzYWdlKFhMb2dSZWNQdHIgd2FsRW5kLCBUaW1lc3RhbXBUeiBzZW5kVGltZSk7CiBz dGF0aWMgdm9pZCBXYWxSY3ZDb21wdXRlTmV4dFdha2V1cChXYWxSY3ZXYWtldXBSZWFzb24g cmVhc29uLCBUaW1lc3RhbXBUeiBub3cpOwogCiAvKgotICogUHJvY2VzcyBhbnkgaW50ZXJy dXB0cyB0aGUgd2FscmVjZWl2ZXIgcHJvY2VzcyBtYXkgaGF2ZSByZWNlaXZlZC4KLSAqIFRo aXMgc2hvdWxkIGJlIGNhbGxlZCBhbnkgdGltZSB0aGUgcHJvY2VzcydzIGxhdGNoIGhhcyBi ZWNvbWUgc2V0LgorICogUHJvY2VzcyBhbnkgaW50ZXJydXB0cyB0aGUgd2FscmVjZWl2ZXIg cHJvY2VzcyBtYXkgaGF2ZSByZWNlaXZlZC4gIFRoaXMKKyAqIHNob3VsZCBiZSBjYWxsZWQg YW55IHRpbWUgdGhlIElOVEVSUlVQVF9HRU5FUkFMIGludGVycnVwdCBoYXMgYmVjb21lIHNl dC4KICAqCiAgKiBDdXJyZW50bHksIG9ubHkgU0lHVEVSTSBpcyBvZiBpbnRlcmVzdC4gIFdl IGNhbid0IGp1c3QgZXhpdCgxKSB3aXRoaW4gdGhlCiAgKiBTSUdURVJNIHNpZ25hbCBoYW5k bGVyLCBiZWNhdXNlIHRoZSBzaWduYWwgbWlnaHQgYXJyaXZlIGluIHRoZSBtaWRkbGUgb2YK ICAqIHNvbWUgY3JpdGljYWwgb3BlcmF0aW9uLCBsaWtlIHdoaWxlIHdlJ3JlIGhvbGRpbmcg YSBzcGlubG9jay4gIEluc3RlYWQsIHRoZQotICogc2lnbmFsIGhhbmRsZXIgc2V0cyBhIGZs YWcgdmFyaWFibGUgYXMgd2VsbCBhcyBzZXR0aW5nIHRoZSBwcm9jZXNzJ3MgbGF0Y2guCisg KiBzaWduYWwgaGFuZGxlciBzZXRzIGEgZmxhZyB2YXJpYWJsZSBhcyB3ZWxsIGFzIHJhaXNp bmcgSU5URVJSVVBUX0dFTkVSQUwuCiAgKiBXZSBtdXN0IGNoZWNrIHRoZSBmbGFnIChieSBj YWxsaW5nIFByb2Nlc3NXYWxSY3ZJbnRlcnJ1cHRzKSBhbnl0aW1lIHRoZQotICogbGF0Y2gg aGFzIGJlY29tZSBzZXQuICBPcGVyYXRpb25zIHRoYXQgY291bGQgYmxvY2sgZm9yIGEgbG9u ZyB0aW1lLCBzdWNoIGFzCi0gKiByZWFkaW5nIGZyb20gYSByZW1vdGUgc2VydmVyLCBtdXN0 IHBheSBhdHRlbnRpb24gdG8gdGhlIGxhdGNoIHRvbzsgc2VlCi0gKiBsaWJwcXJjdl9QUWdl dFJlc3VsdCBmb3IgZXhhbXBsZS4KKyAqIElOVEVSUlVQVF9HRU5FUkFMIGhhcyBiZWNvbWUg c2V0LiAgT3BlcmF0aW9ucyB0aGF0IGNvdWxkIGJsb2NrIGZvciBhIGxvbmcKKyAqIHRpbWUs IHN1Y2ggYXMgcmVhZGluZyBmcm9tIGEgcmVtb3RlIHNlcnZlciwgbXVzdCBwYXkgYXR0ZW50 aW9uIHRvIHRoZQorICogaW50ZXJydXB0IHRvbzsgc2VlIGxpYnBxcmN2X1BRZ2V0UmVzdWx0 IGZvciBleGFtcGxlLgogICovCiB2b2lkCiBQcm9jZXNzV2FsUmN2SW50ZXJydXB0cyh2b2lk KQpAQCAtNTM2LDI1ICs1MzcsMjUgQEAgV2FsUmVjZWl2ZXJNYWluKGNoYXIgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJCQkvKgogCQkJCSAqIElkZWFs bHkgd2Ugd291bGQgcmV1c2UgYSBXYWl0RXZlbnRTZXQgb2JqZWN0IHJlcGVhdGVkbHkKLQkJ CQkgKiBoZXJlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZHMgb2YgV2FpdExhdGNoT3JTb2NrZXQg b24gZXBvbGwKLQkJCQkgKiBzeXN0ZW1zLCBidXQgd2UgY2FuJ3QgYmUgc3VyZSB0aGF0IGxp YnBxIChvciBhbnkgb3RoZXIKLQkJCQkgKiB3YWxyZWNlaXZlciBpbXBsZW1lbnRhdGlvbikg aGFzIHRoZSBzYW1lIHNvY2tldCAoZXZlbiBpZgotCQkJCSAqIHRoZSBmZCBpcyB0aGUgc2Ft ZSBudW1iZXIsIGl0IG1heSBoYXZlIGJlZW4gY2xvc2VkIGFuZAorCQkJCSAqIGhlcmUgdG8g YXZvaWQgdGhlIG92ZXJoZWFkcyBvZiBXYWl0SW50ZXJydXB0T3JTb2NrZXQgb24KKwkJCQkg KiBlcG9sbCBzeXN0ZW1zLCBidXQgd2UgY2FuJ3QgYmUgc3VyZSB0aGF0IGxpYnBxIChvciBh bnkKKwkJCQkgKiBvdGhlciB3YWxyZWNlaXZlciBpbXBsZW1lbnRhdGlvbikgaGFzIHRoZSBz YW1lIHNvY2tldCAoZXZlbgorCQkJCSAqIGlmIHRoZSBmZCBpcyB0aGUgc2FtZSBudW1iZXIs IGl0IG1heSBoYXZlIGJlZW4gY2xvc2VkIGFuZAogCQkJCSAqIHJlb3BlbmVkIHNpbmNlIHRo ZSBsYXN0IHRpbWUpLiAgSW4gZnV0dXJlLCBpZiB0aGVyZSBpcyBhCiAJCQkJICogZnVuY3Rp b24gZm9yIHJlbW92aW5nIHNvY2tldHMgZnJvbSBXYWl0RXZlbnRTZXQsIHRoZW4gd2UKIAkJ CQkgKiBjb3VsZCBhZGQgYW5kIHJlbW92ZSBqdXN0IHRoZSBzb2NrZXQgZWFjaCB0aW1lLCBw b3RlbnRpYWxseQogCQkJCSAqIGF2b2lkaW5nIHNvbWUgc3lzdGVtIGNhbGxzLgogCQkJCSAq LwogCQkJCUFzc2VydCh3YWl0X2ZkICE9IFBHSU5WQUxJRF9TT0NLRVQpOwotCQkJCXJjID0g V2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1f REVBVEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAotCQkJCQkJCQkJICAgV0xfVElNRU9VVCB8 IFdMX0xBVENIX1NFVCwKLQkJCQkJCQkJCSAgIHdhaXRfZmQsCi0JCQkJCQkJCQkgICBuYXAs Ci0JCQkJCQkJCQkgICBXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9NQUlOKTsKLQkJCQlpZiAo cmMgJiBXTF9MQVRDSF9TRVQpCisJCQkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8 PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRI IHwgV0xfU09DS0VUX1JFQURBQkxFIHwKKwkJCQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xf SU5URVJSVVBULAorCQkJCQkJCQkJCSAgIHdhaXRfZmQsCisJCQkJCQkJCQkJICAgbmFwLAor CQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4pOworCQkJCWlmIChy YyAmIFdMX0lOVEVSUlVQVCkKIAkJCQl7Ci0JCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCQkJUHJvY2Vzc1dh bFJjdkludGVycnVwdHMoKTsKIAogCQkJCQlpZiAod2FscmN2LT5mb3JjZV9yZXBseSkKQEAg LTY5Miw3ICs2OTMsNyBAQCBXYWxSY3ZXYWl0Rm9yU3RhcnRQb3NpdGlvbihYTG9nUmVjUHRy ICpzdGFydHBvaW50LCBUaW1lTGluZUlEICpzdGFydHBvaW50VExJKQogCVdha2V1cFJlY292 ZXJ5KCk7CiAJZm9yICg7OykKIAl7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQlQcm9jZXNzV2FsUmN2SW50ZXJy dXB0cygpOwogCkBAIC03MjQsOCArNzI1LDEwIEBAIFdhbFJjdldhaXRGb3JTdGFydFBvc2l0 aW9uKFhMb2dSZWNQdHIgKnN0YXJ0cG9pbnQsIFRpbWVMaW5lSUQgKnN0YXJ0cG9pbnRUTEkp CiAJCX0KIAkJU3BpbkxvY2tSZWxlYXNlKCZ3YWxyY3YtPm11dGV4KTsKIAotCQkodm9pZCkg V2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs IDAsCi0JCQkJCQkgV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfV0FJVF9TVEFSVCk7CisJCSh2 b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIDAsCisJCQkJCQkJ IFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQpOwogCX0KIAogCWlmICh1cGRh dGVfcHJvY2Vzc190aXRsZSkKQEAgLTEzNjYsNyArMTM2OSw3IEBAIFdhbFJjdkZvcmNlUmVw bHkodm9pZCkKIAlwcm9jbm8gPSBXYWxSY3YtPnByb2NubzsKIAlTcGluTG9ja1JlbGVhc2Uo JldhbFJjdi0+bXV0ZXgpOwogCWlmIChwcm9jbm8gIT0gSU5WQUxJRF9QUk9DX05VTUJFUikK LQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKHByb2NubyktPnByb2NMYXRjaCk7CisJ CVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIHByb2Nubyk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKaW5kZXggODU1 N2QxMGNmOS4uY2JlNzNiOWRjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXJmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHJlY2VpdmVyZnVuY3MuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94 bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi93YWxyZWNlaXZlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKQEAgLTMxNyw3ICszMTgsNyBAQCBSZXF1 ZXN0WExvZ1N0cmVhbWluZyhUaW1lTGluZUlEIHRsaSwgWExvZ1JlY1B0ciByZWNwdHIsIGNv bnN0IGNoYXIgKmNvbm5pbmZvLAogCWlmIChsYXVuY2gpCiAJCVNlbmRQb3N0bWFzdGVyU2ln bmFsKFBNU0lHTkFMX1NUQVJUX1dBTFJFQ0VJVkVSKTsKIAllbHNlIGlmICh3YWxyY3ZfcHJv YyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1i ZXIod2FscmN2X3Byb2MpLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMLCB3YWxyY3ZfcHJvYyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jCmluZGV4IDM3MWVlZjNkZGQuLmFkODkyOTA1MGQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Nv bmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpA QCAtMTAxMyw4ICsxMDE0LDggQEAgU3RhcnRSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9u Q21kICpjbWQpCiAgKiBYTG9nUmVhZGVyUm91dGluZS0+cGFnZV9yZWFkIGNhbGxiYWNrIGZv ciBsb2dpY2FsIGRlY29kaW5nIGNvbnRleHRzLCBhcyBhCiAgKiB3YWxzZW5kZXIgcHJvY2Vz cy4KICAqCi0gKiBJbnNpZGUgdGhlIHdhbHNlbmRlciB3ZSBjYW4gZG8gYmV0dGVyIHRoYW4g cmVhZF9sb2NhbF94bG9nX3BhZ2UsCi0gKiB3aGljaCBoYXMgdG8gZG8gYSBwbGFpbiBzbGVl cC9idXN5IGxvb3AsIGJlY2F1c2UgdGhlIHdhbHNlbmRlcidzIGxhdGNoIGdldHMKKyAqIElu c2lkZSB0aGUgd2Fsc2VuZGVyIHdlIGNhbiBkbyBiZXR0ZXIgdGhhbiByZWFkX2xvY2FsX3hs b2dfcGFnZSwgd2hpY2gKKyAqIGhhcyB0byBkbyBhIHBsYWluIHNsZWVwL2J1c3kgbG9vcCwg YmVjYXVzZSB0aGUgd2Fsc2VuZGVyJ3MgaW50ZXJydXB0IGdldHMKICAqIHNldCBldmVyeSB0 aW1lIFdBTCBpcyBmbHVzaGVkLgogICovCiBzdGF0aWMgaW50CkBAIC0xNjExLDcgKzE2MTIs NyBAQCBQcm9jZXNzUGVuZGluZ1dyaXRlcyh2b2lkKQogCQkJCSAgIFdBSVRfRVZFTlRfV0FM X1NFTkRFUl9XUklURV9EQVRBKTsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5n IHdha2V1cHMgKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKQEAg LTE2MjgsOCArMTYyOSw4IEBAIFByb2Nlc3NQZW5kaW5nV3JpdGVzKHZvaWQpCiAJCQlXYWxT bmRTaHV0ZG93bigpOwogCX0KIAotCS8qIHJlYWN0aXZhdGUgbGF0Y2ggc28gV2FsU25kTG9v cCBrbm93cyB0byBjb250aW51ZSAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCS8qIHJlYWN0 aXZhdGUgaW50ZXJydXB0IHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8KKwlS YWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0xODE3LDcg KzE4MTgsNyBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCQlsb25nCQlz bGVlcHRpbWU7CiAKIAkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICov Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0xOTM3LDggKzE5 MzgsOCBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCQlXYWxTbmRXYWl0 KHdha2VFdmVudHMsIHNsZWVwdGltZSwgd2FpdF9ldmVudCk7CiAJfQogCi0JLyogcmVhY3Rp dmF0ZSBsYXRjaCBzbyBXYWxTbmRMb29wIGtub3dzIHRvIGNvbnRpbnVlICovCi0JU2V0TGF0 Y2goTXlMYXRjaCk7CisJLyogcmVhY3RpdmF0ZSBpbnRlcnJ1cHQgZmxhZyBzbyBXYWxTbmRM b29wIGtub3dzIHRvIGNvbnRpbnVlICovCisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogCXJldHVybiBSZWNlbnRGbHVzaFB0cjsKIH0KIApAQCAtMjc1NSw3ICsyNzU2 LDcgQEAgV2FsU25kTG9vcChXYWxTbmRTZW5kRGF0YUNhbGxiYWNrIHNlbmRfZGF0YSkKIAlm b3IgKDs7KQogCXsKIAkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICov Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0zNTU0LDcgKzM1 NTUsNyBAQCBzdGF0aWMgdm9pZAogV2FsU25kTGFzdEN5Y2xlSGFuZGxlcihTSUdOQUxfQVJH UykKIHsKIAlnb3RfU0lHVVNSMiA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFp c2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKiBTZXQgdXAgc2lnbmFs IGhhbmRsZXJzICovCkBAIC0zNjYwLDcgKzM2NjEsNyBAQCBXYWxTbmRXYWl0KHVpbnQzMiBz b2NrZXRfZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50KQogewogCVdh aXRFdmVudAlldmVudDsKIAotCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdh aXRTZXRTb2NrZXRQb3MsIHNvY2tldF9ldmVudHMsIE5VTEwpOworCU1vZGlmeVdhaXRFdmVu dChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHNvY2tldF9ldmVudHMsIDAp OwogCiAJLyoKIAkgKiBXZSB1c2UgYSBjb25kaXRpb24gdmFyaWFibGUgdG8gZWZmaWNpZW50 bHkgd2FrZSB1cCB3YWxzZW5kZXJzIGluCkBAIC0zNjcyLDggKzM2NzMsOCBAQCBXYWxTbmRX YWl0KHVpbnQzMiBzb2NrZXRfZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2 ZW50KQogCSAqIENvbmRpdGlvblZhcmlhYmxlU2xlZXAoKSkuIEl0IHN0aWxsIHVzZXMgV2Fp dEV2ZW50U2V0V2FpdCgpIGZvcgogCSAqIHdhaXRpbmcsIGJlY2F1c2Ugd2UgYWxzbyBuZWVk IHRvIHdhaXQgZm9yIHNvY2tldCBldmVudHMuIFRoZSBwcm9jZXNzZXMKIAkgKiAoc3RhcnR1 cCBwcm9jZXNzLCB3YWxyZWNlaXZlciBldGMuKSB3YW50aW5nIHRvIHdha2UgdXAgd2Fsc2Vu ZGVycyB1c2UKLQkgKiBDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdCgpLCB3aGljaCBpbiB0 dXJuIGNhbGxzIFNldExhdGNoKCksIGhlbHBpbmcKLQkgKiB3YWxzZW5kZXJzIGNvbWUgb3V0 IG9mIFdhaXRFdmVudFNldFdhaXQoKS4KKwkgKiBDb25kaXRpb25WYXJpYWJsZUJyb2FkY2Fz dCgpLCB3aGljaCBpbiB0dXJuIGNhbGxzIFNlbmRJbnRlcnJ1cHQoKSwKKwkgKiBoZWxwaW5n IHdhbHNlbmRlcnMgY29tZSBvdXQgb2YgV2FpdEV2ZW50U2V0V2FpdCgpLgogCSAqCiAJICog VGhpcyBhcHByb2FjaCBpcyBzaW1wbGUgYW5kIGVmZmljaWVudCBiZWNhdXNlLCBvbmUgZG9l c24ndCBoYXZlIHRvIGxvb3AKIAkgKiB0aHJvdWdoIGFsbCB0aGUgd2Fsc2VuZGVycyBzbG90 cywgd2l0aCBhIHNwaW5sb2NrIGFjcXVpc2l0aW9uIGFuZApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3IuYwppbmRleCBjYzk3ODJiNzEzLi4xNjg2MzMxYjExIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUg InN0b3JhZ2UvYnVmX2ludGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3Iu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTI4ODIsNyArMjg4Myw3IEBAIFVu cGluQnVmZmVyTm9Pd25lcihCdWZmZXJEZXNjICpidWYpCiAKIAkJCQlidWZfc3RhdGUgJj0g fkJNX1BJTl9DT1VOVF9XQUlURVI7CiAJCQkJVW5sb2NrQnVmSGRyKGJ1ZiwgYnVmX3N0YXRl KTsKLQkJCQlQcm9jU2VuZFNpZ25hbCh3YWl0X2JhY2tlbmRfcGdwcm9jbm8pOworCQkJCVNl bmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIHdhaXRfYmFja2VuZF9wZ3Byb2Nubyk7 CiAJCQl9CiAJCQllbHNlCiAJCQkJVW5sb2NrQnVmSGRyKGJ1ZiwgYnVmX3N0YXRlKTsKQEAg LTUzNDQsNyArNTM0NSwxMiBAQCBMb2NrQnVmZmVyRm9yQ2xlYW51cChCdWZmZXIgYnVmZmVy KQogCQkJU2V0U3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZCgtMSk7CiAJCX0KIAkJZWxzZQot CQkJUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwkJeworCQkJ V2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBX TF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJICBXQUlUX0VWRU5UX0JVRkZFUl9QSU4p OworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCQkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKKwkJfQogCiAJCS8qCiAJCSAqIFJlbW92ZSBmbGFnIG1hcmtpbmcg dXMgYXMgd2FpdGVyLiBOb3JtYWxseSB0aGlzIHdpbGwgbm90IGJlIHNldApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKaW5kZXggZGZmZGQ1N2U5Yi4uNjViMDJmMjQx YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC0xOSw2ICsx OSw3IEBACiAjaW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9i dWZfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAj ZGVmaW5lIElOVF9BQ0NFU1NfT05DRSh2YXIpCSgoaW50KSgqKCh2b2xhdGlsZSBpbnQgKikm KHZhcikpKSkKQEAgLTIxOSwyNyArMjIwLDI1IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50MzIgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJv bV9yCiAJLyoKIAkgKiBJZiBhc2tlZCwgd2UgbmVlZCB0byB3YWtlbiB0aGUgYmd3cml0ZXIu IFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gcmVseSBvbgogCSAqIGEgc3BpbmxvY2sgZm9yIHRo aXMgd2UgZm9yY2UgYSByZWFkIGZyb20gc2hhcmVkIG1lbW9yeSBvbmNlLCBhbmQgdGhlbgot CSAqIHNldCB0aGUgbGF0Y2ggYmFzZWQgb24gdGhhdCB2YWx1ZS4gV2UgbmVlZCB0byBnbyB0 aHJvdWdoIHRoYXQgbGVuZ3RoCi0JICogYmVjYXVzZSBvdGhlcndpc2UgYmd3cHJvY25vIG1p Z2h0IGJlIHJlc2V0IHdoaWxlL2FmdGVyIHdlIGNoZWNrIGJlY2F1c2UKLQkgKiB0aGUgY29t cGlsZXIgbWlnaHQganVzdCByZXJlYWQgZnJvbSBtZW1vcnkuCisJICogc2VuZCB0aGUgaW50 ZXJydXB0IGJhc2VkIG9uIHRoYXQgdmFsdWUuIFdlIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGF0 CisJICogbGVuZ3RoIGJlY2F1c2Ugb3RoZXJ3aXNlIGJnd3Byb2NubyBtaWdodCBiZSByZXNl dCB3aGlsZS9hZnRlciB3ZSBjaGVjaworCSAqIGJlY2F1c2UgdGhlIGNvbXBpbGVyIG1pZ2h0 IGp1c3QgcmVyZWFkIGZyb20gbWVtb3J5LgogCSAqCi0JICogVGhpcyBjYW4gcG9zc2libHkg c2V0IHRoZSBsYXRjaCBvZiB0aGUgd3JvbmcgcHJvY2VzcyBpZiB0aGUgYmd3cml0ZXIKLQkg KiBkaWVzIGluIHRoZSB3cm9uZyBtb21lbnQuIEJ1dCBzaW5jZSBQR1BST0MtPnByb2NMYXRj aCBpcyBuZXZlcgotCSAqIGRlYWxsb2NhdGVkIHRoZSB3b3JzdCBjb25zZXF1ZW5jZSBvZiB0 aGF0IGlzIHRoYXQgd2Ugc2V0IHRoZSBsYXRjaCBvZgotCSAqIHNvbWUgYXJiaXRyYXJ5IHBy b2Nlc3MuCisJICogVGhpcyBjYW4gcG9zc2libHkgc2VuZCB0aGUgaW50ZXJydXB0IHRvIHRo ZSB3cm9uZyBwcm9jZXNzIGlmIHRoZQorCSAqIGJnd3JpdGVyIGRpZXMgaW4gdGhlIHdyb25n IG1vbWVudCwgYnV0IHRoYXQncyBoYXJtbGVzcy4KIAkgKi8KIAliZ3dwcm9jbm8gPSBJTlRf QUNDRVNTX09OQ0UoU3RyYXRlZ3lDb250cm9sLT5iZ3dwcm9jbm8pOwogCWlmIChiZ3dwcm9j bm8gIT0gLTEpCiAJewotCQkvKiByZXNldCBiZ3dwcm9jbm8gZmlyc3QsIGJlZm9yZSBzZXR0 aW5nIHRoZSBsYXRjaCAqLworCQkvKiByZXNldCBiZ3dwcm9jbm8gZmlyc3QsIGJlZm9yZSBz ZW5kaW5nIHRoZSBpbnRlcnJ1cHQgKi8KIAkJU3RyYXRlZ3lDb250cm9sLT5iZ3dwcm9jbm8g PSAtMTsKIAogCQkvKgotCQkgKiBOb3QgYWNxdWlyaW5nIFByb2NBcnJheUxvY2sgaGVyZSB3 aGljaCBpcyBzbGlnaHRseSBpY2t5LiBJdCdzCi0JCSAqIGFjdHVhbGx5IGZpbmUgYmVjYXVz ZSBwcm9jTGF0Y2ggaXNuJ3QgZXZlciBmcmVlZCwgc28gd2UganVzdCBjYW4KLQkJICogcG90 ZW50aWFsbHkgc2V0IHRoZSB3cm9uZyBwcm9jZXNzJyAob3Igbm8gcHJvY2VzcycpIGxhdGNo LgorCQkgKiBOb3QgYWNxdWlyaW5nIFByb2NBcnJheUxvY2sgaGVyZSB3aGljaCBpcyBzbGln aHRseSBpY2t5LCBiZWNhdXNlIHdlCisJCSAqIGNhbiBwb3RlbnRpYWxseSBzZW5kIHRoZSBp bnRlcnJ1cHQgdG8gdGhlIHdyb25nIHByb2Nlc3MgKG9yIG5vCisJCSAqIHByb2Nlc3MpLCBi dXQgaXQncyBoYXJtbGVzcy4KIAkJICovCi0JCVNldExhdGNoKCZQcm9jR2xvYmFsLT5hbGxQ cm9jc1tiZ3dwcm9jbm9dLnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUwsIGJnd3Byb2Nubyk7CiAJfQogCiAJLyoKQEAgLTQyMCwxMCArNDE5LDEwIEBA IFN0cmF0ZWd5U3luY1N0YXJ0KHVpbnQzMiAqY29tcGxldGVfcGFzc2VzLCB1aW50MzIgKm51 bV9idWZfYWxsb2MpCiB9CiAKIC8qCi0gKiBTdHJhdGVneU5vdGlmeUJnV3JpdGVyIC0tIHNl dCBvciBjbGVhciBhbGxvY2F0aW9uIG5vdGlmaWNhdGlvbiBsYXRjaAorICogU3RyYXRlZ3lO b3RpZnlCZ1dyaXRlciAtLSBzZXQgb3IgY2xlYXIgYWxsb2NhdGlvbiBub3RpZmljYXRpb24g cHJvY2VzcwogICoKICAqIElmIGJnd3Byb2NubyBpc24ndCAtMSwgdGhlIG5leHQgaW52b2Nh dGlvbiBvZiBTdHJhdGVneUdldEJ1ZmZlciB3aWxsCi0gKiBzZXQgdGhhdCBsYXRjaC4gIFBh c3MgLTEgdG8gY2xlYXIgdGhlIHBlbmRpbmcgbm90aWZpY2F0aW9uIGJlZm9yZSBpdAorICog aW50ZXJydXB0IHRoYXQgcHJvY2Vzcy4gIFBhc3MgLTEgdG8gY2xlYXIgdGhlIHBlbmRpbmcg bm90aWZpY2F0aW9uIGJlZm9yZSBpdAogICogaGFwcGVucy4gIFRoaXMgZmVhdHVyZSBpcyB1 c2VkIGJ5IHRoZSBiZ3dyaXRlciBwcm9jZXNzIHRvIHdha2UgaXRzZWxmIHVwCiAgKiBmcm9t IGhpYmVybmF0aW9uLCBhbmQgaXMgbm90IG1lYW50IGZvciBhbnlib2R5IGVsc2UgdG8gdXNl LgogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZSBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCmluZGV4IGQ4YTE2NTNlYjYuLjVj N2M3MmY5MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxl CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCkBAIC0xMyw5ICsxMyw5 IEBAIE9CSlMgPSBcCiAJZHNtLm8gXAogCWRzbV9pbXBsLm8gXAogCWRzbV9yZWdpc3RyeS5v IFwKKwlpbnRlcnJ1cHQubyBcCiAJaXBjLm8gXAogCWlwY2kubyBcCi0JbGF0Y2gubyBcCiAJ cG1zaWduYWwubyBcCiAJcHJvY2FycmF5Lm8gXAogCXByb2NzaWduYWwubyBcCkBAIC0yNSw2 ICsyNSw3IEBAIE9CSlMgPSBcCiAJc2lnbmFsZnVuY3MubyBcCiAJc2ludmFsLm8gXAogCXNp bnZhbGFkdC5vIFwKLQlzdGFuZGJ5Lm8KKwlzdGFuZGJ5Lm8gXAorCXdhaXRldmVudHNldC5v CiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvaW50ZXJydXB0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uNTM0NzNhMzUyZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jCkBAIC0wLDAgKzEsMTI1IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBpbnRlcnJ1cHQuYworICoJICBJbnRlcnJ1cHQgaGFuZGxp bmcgcm91dGluZXMuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5p YQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2ludGVycnVwdC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgorI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKKyNpbmNs dWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5oIgorI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgor I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisKK3N0YXRpYyBwZ19hdG9taWNfdWludDMy IExvY2FsUGVuZGluZ0ludGVycnVwdHM7CisKK3BnX2F0b21pY191aW50MzIgKk15UGVuZGlu Z0ludGVycnVwdHMgPSAmTG9jYWxQZW5kaW5nSW50ZXJydXB0czsKKworLyoKKyAqIFN3aXRj aCB0byBsb2NhbCBpbnRlcnJ1cHRzLiAgT3RoZXIgYmFja2VuZHMgY2FuJ3Qgc2VuZCBpbnRl cnJ1cHRzIHRvIHRoaXMKKyAqIG9uZS4gIE9ubHkgUmFpc2VJbnRlcnJ1cHQoKSBjYW4gc2V0 IHRoZW0sIGZyb20gaW5zaWRlIHRoaXMgcHJvY2Vzcy4KKyAqLwordm9pZAorU3dpdGNoVG9M b2NhbEludGVycnVwdHModm9pZCkKK3sKKwlpZiAoTXlQZW5kaW5nSW50ZXJydXB0cyA9PSAm TG9jYWxQZW5kaW5nSW50ZXJydXB0cykKKwkJcmV0dXJuOworCisJTXlQZW5kaW5nSW50ZXJy dXB0cyA9ICZMb2NhbFBlbmRpbmdJbnRlcnJ1cHRzOworCisJLyoKKwkgKiBNYWtlIHN1cmUg dGhhdCBTSUdBTFJNIGhhbmRsZXJzIHRoYXQgY2FsbCBSYWlzZUludGVycnVwdCgpIGFyZSBu b3cKKwkgKiBzZWVpbmcgdGhlIG5ldyBNeVBlbmRpbmdJbnRlcnJ1cHRzIGRlc3RpbmF0aW9u LgorCSAqLworCXBnX21lbW9yeV9iYXJyaWVyKCk7CisKKwkvKgorCSAqIE1peCBpbiB0aGUg aW50ZXJydXB0cyB0aGF0IHdlIGhhdmUgcmVjZWl2ZWQgYWxyZWFkeSBpbiBvdXIgc2hhcmVk CisJICogaW50ZXJydXB0IHZlY3Rvciwgd2hpbGUgYXRvbWljYWxseSBjbGVhcmluZyBpdC4g IE90aGVyIGJhY2tlbmRzIG1heQorCSAqIGNvbnRpbnVlIHRvIHNldCBiaXRzIGluIGl0IGFm dGVyIHRoaXMgcG9pbnQsIGJ1dCB3ZSd2ZSBhdG9taWNhbGx5CisJICogdHJhbnNmZXJyZWQg dGhlIGV4aXN0aW5nIGJpdHMgdG8gb3VyIGxvY2FsIHZlY3RvciBzbyB3ZSB3b24ndCBnZXQK KwkgKiBkdXBsaWNhdGVkIGludGVycnVwdHMgbGF0ZXIgaWYgd2Ugc3dpdGNoIGJhY2t4Lgor CSAqLworCXBnX2F0b21pY19mZXRjaF9vcl91MzIoTXlQZW5kaW5nSW50ZXJydXB0cywKKwkJ CQkJCSAgIHBnX2F0b21pY19leGNoYW5nZV91MzIoJk15UHJvYy0+cGVuZGluZ0ludGVycnVw dHMsIDApKTsKK30KKworLyoKKyAqIFN3aXRjaCB0byBzaGFyZWQgbWVtb3J5IGludGVycnVw dHMuICBPdGhlciBiYWNrZW5kcyBjYW4gc2VuZCBpbnRlcnJ1cHRzIHRvCisgKiB0aGlzIG9u ZSBpZiB0aGV5IGtub3cgaXRzIFByb2NOdW1iZXIsIGFuZCB3ZSdsbCBub3cgc2VlIGFueSB0 aGF0IHdlIG1pc3NlZC4KKyAqLwordm9pZAorU3dpdGNoVG9TaGFyZWRJbnRlcnJ1cHRzKHZv aWQpCit7CisJaWYgKE15UGVuZGluZ0ludGVycnVwdHMgPT0gJk15UHJvYy0+cGVuZGluZ0lu dGVycnVwdHMpCisJCXJldHVybjsKKworCU15UGVuZGluZ0ludGVycnVwdHMgPSAmTXlQcm9j LT5wZW5kaW5nSW50ZXJydXB0czsKKworCS8qCisJICogTWFrZSBzdXJlIHRoYXQgU0lHQUxS TSBoYW5kbGVycyB0aGF0IGNhbGwgUmFpc2VJbnRlcnJ1cHQoKSBhcmUgbm93CisJICogc2Vl aW5nIHRoZSBuZXcgTXlQZW5kaW5nSW50ZXJydXB0cyBkZXN0aW5hdGlvbi4KKwkgKi8KKwlw Z19tZW1vcnlfYmFycmllcigpOworCisJLyogTWl4IGluIGFueSB1bmhhbmRsZWQgYml0cyBm cm9tIExvY2FsUGVuZGluZ0ludGVycnVwdHMuICovCisJcGdfYXRvbWljX2ZldGNoX29yX3Uz MihNeVBlbmRpbmdJbnRlcnJ1cHRzLAorCQkJCQkJICAgcGdfYXRvbWljX2V4Y2hhbmdlX3Uz MigmTG9jYWxQZW5kaW5nSW50ZXJydXB0cywgMCkpOworfQorCisvKgorICogU2V0IGFuIGlu dGVycnVwdCBmbGFnIGluIHRoaXMgYmFja2VuZC4KKyAqLwordm9pZAorUmFpc2VJbnRlcnJ1 cHQoSW50ZXJydXB0VHlwZSByZWFzb24pCit7CisJdWludDMyCQlvbGRfcGVuZGluZzsKKwor CW9sZF9wZW5kaW5nID0gcGdfYXRvbWljX2ZldGNoX29yX3UzMihNeVBlbmRpbmdJbnRlcnJ1 cHRzLCAxIDw8IHJlYXNvbik7CisKKwkvKgorCSAqIElmIHRoZSBwcm9jZXNzIGlzIGN1cnJl bnRseSBibG9ja2VkIHdhaXRpbmcgZm9yIGFuIGludGVycnVwdCB0byBhcnJpdmUsCisJICog YW5kIHRoZSBpbnRlcnJ1cHQgd2Fzbid0IGFscmVhZHkgcGVuZGluZywgd2FrZSBpdCB1cC4K KwkgKi8KKwlpZiAoKG9sZF9wZW5kaW5nICYgKDEgPDwgcmVhc29uIHwgMSA8PCBTTEVFUElO R19PTl9JTlRFUlJVUFRTKSkgPT0gMSA8PCBTTEVFUElOR19PTl9JTlRFUlJVUFRTKQorCQlX YWtldXBNeVByb2MoKTsKK30KKworLyoKKyAqIFNldCBhbiBpbnRlcnJ1cHQgZmxhZyBpbiBh bm90aGVyIGJhY2tlbmQuCisgKi8KK3ZvaWQKK1NlbmRJbnRlcnJ1cHQoSW50ZXJydXB0VHlw ZSByZWFzb24sIFByb2NOdW1iZXIgcGdwcm9jbm8pCit7CisJUEdQUk9DCSAgICpwcm9jOwor CXVpbnQzMgkJb2xkX3BlbmRpbmc7CisKKwlBc3NlcnQocGdwcm9jbm8gIT0gSU5WQUxJRF9Q Uk9DX05VTUJFUik7CisJQXNzZXJ0KHBncHJvY25vID49IDApOworCUFzc2VydChwZ3Byb2Nu byA8IFByb2NHbG9iYWwtPmFsbFByb2NDb3VudCk7CisKKwlwcm9jID0gJlByb2NHbG9iYWwt PmFsbFByb2NzW3BncHJvY25vXTsKKwlvbGRfcGVuZGluZyA9IHBnX2F0b21pY19mZXRjaF9v cl91MzIoJnByb2MtPnBlbmRpbmdJbnRlcnJ1cHRzLCAxIDw8IHJlYXNvbik7CisKKwkvKgor CSAqIElmIHRoZSBwcm9jZXNzIGlzIGN1cnJlbnRseSBibG9ja2VkIHdhaXRpbmcgZm9yIGFu IGludGVycnVwdCB0byBhcnJpdmUsCisJICogYW5kIHRoZSBpbnRlcnJ1cHQgd2Fzbid0IGFs cmVhZHkgcGVuZGluZywgd2FrZSBpdCB1cC4KKwkgKi8KKwlpZiAoKG9sZF9wZW5kaW5nICYg KDEgPDwgcmVhc29uIHwgMSA8PCBTTEVFUElOR19PTl9JTlRFUlJVUFRTKSkgPT0gMSA8PCBT TEVFUElOR19PTl9JTlRFUlJVUFRTKQorCQlXYWtldXBPdGhlclByb2MocHJvYyk7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZCBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkCmluZGV4IDVhOTM2MTcxZjcuLjRlYmE0 MWI3OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxk CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkCkBAIC01LDkgKzUs OSBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdkc20uYycsCiAgICdkc21faW1w bC5jJywKICAgJ2RzbV9yZWdpc3RyeS5jJywKKyAgJ2ludGVycnVwdC5jJywKICAgJ2lwYy5j JywKICAgJ2lwY2kuYycsCi0gICdsYXRjaC5jJywKICAgJ3Btc2lnbmFsLmMnLAogICAncHJv Y2FycmF5LmMnLAogICAncHJvY3NpZ25hbC5jJywKQEAgLTE4LDUgKzE4LDYgQEAgYmFja2Vu ZF9zb3VyY2VzICs9IGZpbGVzKAogICAnc2ludmFsLmMnLAogICAnc2ludmFsYWR0LmMnLAog ICAnc3RhbmRieS5jJywKKyAgJ3dhaXRldmVudHNldC5jJywKIAogKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IDg3MDI3ZjI3ZWIuLjJlZmJhOWVlMDUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKQEAgLTI1LDggKzI1LDggQEAK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFy aWFibGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbC5oIgogI2luY2x1ZGUg InN0b3JhZ2Uvc21nci5oIgpAQCAtNDgxLDcgKzQ4MSw3IEBAIEhhbmRsZVByb2NTaWduYWxC YXJyaWVySW50ZXJydXB0KHZvaWQpCiB7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CiAJ UHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gdHJ1ZTsKLQkvKiBsYXRjaCB3aWxsIGJlIHNl dCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLworCS8qIGludGVycnVwdCB3aWxs IGJlIHJhaXNlZCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwogfQogCiAvKgpA QCAtNzEyLDcgKzcxMiw3IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9B UkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9C VUZGRVJQSU4pKQogCQlIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOKTsKIAotCVNldExhdGNoKE15TGF0Y2gpOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2htX21xLmMKaW5kZXggOTIzNWZjZDA4ZS4uZGUwYTUyMjFlMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htX21xLmMKQEAgLTQsNyArNCw3IEBACiAgKgkgIHNpbmdsZS1y ZWFkZXIsIHNpbmdsZS13cml0ZXIgc2hhcmVkIG1lbW9yeSBtZXNzYWdlIHF1ZXVlCiAgKgog ICogQm90aCB0aGUgc2VuZGVyIGFuZCB0aGUgcmVjZWl2ZXIgbXVzdCBoYXZlIGEgUEdQUk9D OyB0aGVpciByZXNwZWN0aXZlCi0gKiBwcm9jZXNzIGxhdGNoZXMgYXJlIHVzZWQgZm9yIHN5 bmNocm9uaXphdGlvbi4gIE9ubHkgdGhlIHNlbmRlciBtYXkgc2VuZCwKKyAqIHByb2Nlc3Mg aW50ZXJydXB0cyBhcmUgdXNlZCBmb3Igc3luY2hyb25pemF0aW9uLiAgT25seSB0aGUgc2Vu ZGVyIG1heSBzZW5kLAogICogYW5kIG9ubHkgdGhlIHJlY2VpdmVyIG1heSByZWNlaXZlLiAg VGhpcyBpcyBpbnRlbmRlZCB0byBhbGxvdyBhIHVzZXIKICAqIGJhY2tlbmQgdG8gY29tbXVu aWNhdGUgd2l0aCB3b3JrZXIgYmFja2VuZHMgdGhhdCBpdCBoYXMgcmVnaXN0ZXJlZC4KICAq CkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9y dC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21x LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKQEAgLTQ0LDEwICs0NSwxMSBAQAogICoKICAqIG1xX2RldGFjaGVkIG5lZWRzIG5v IGxvY2tpbmcuICBJdCBjYW4gYmUgc2V0IGJ5IGVpdGhlciB0aGUgc2VuZGVyIG9yIHRoZQog ICogcmVjZWl2ZXIsIGJ1dCBvbmx5IGV2ZXIgZnJvbSBmYWxzZSB0byB0cnVlLCBzbyByZWR1 bmRhbnQgd3JpdGVzIGRvbid0Ci0gKiBtYXR0ZXIuICBJdCBpcyBpbXBvcnRhbnQgdGhhdCBp ZiB3ZSBzZXQgbXFfZGV0YWNoZWQgYW5kIHRoZW4gc2V0IHRoZQotICogY291bnRlcnBhcnR5 J3MgbGF0Y2gsIHRoZSBjb3VudGVycGFydHkgbXVzdCBiZSBjZXJ0YWluIHRvIHNlZSB0aGUg Y2hhbmdlCi0gKiBhZnRlciB3YWtpbmcgdXAuICBTaW5jZSBTZXRMYXRjaCBiZWdpbnMgd2l0 aCBhIG1lbW9yeSBiYXJyaWVyIGFuZCBSZXNldExhdGNoCi0gKiBlbmRzIHdpdGggb25lLCB0 aGlzIHNob3VsZCBiZSBPSy4KKyAqIG1hdHRlci4gIEl0IGlzIGltcG9ydGFudCB0aGF0IGlm IHdlIHNldCBtcV9kZXRhY2hlZCBhbmQgdGhlbiBzZW5kIHRoZQorICogaW50ZXJydXB0IHRv IHRoZSBjb3VudGVycGFydHksIHRoZSBjb3VudGVycGFydHkgbXVzdCBiZSBjZXJ0YWluIHRv IHNlZSB0aGUKKyAqIGNoYW5nZSBhZnRlciB3YWtpbmcgdXAuICBTaW5jZSBTZW5kSW50ZXJy dXB0IGJlZ2lucyB3aXRoIGEgbWVtb3J5IGJhcnJpZXIKKyAqIGFuZCBDbGVhckludGVycnVw dCBlbmRzIHdpdGggb25lLCB0aGlzIHNob3VsZCBiZSBPSy4KKyAqIFhYWDogTm8gZXhwbGlj aXQgbWVtb3J5IGJhcnJpZXJzIGluIFNlbmRJbnR0ZXJ1cHQvQ2xlYXJJbnRlcnJ1cHQsIGRv IHdlIG5lZWQgdG8gYWRkIHNvbWU/CiAgKgogICogbXFfcmluZ19zaXplIGFuZCBtcV9yaW5n X29mZnNldCBuZXZlciBjaGFuZ2UgYWZ0ZXIgaW5pdGlhbGl6YXRpb24sIGFuZAogICogY2Fu IHRoZXJlZm9yZSBiZSByZWFkIHdpdGhvdXQgdGhlIGxvY2suCkBAIC0xMTIsNyArMTE0LDcg QEAgc3RydWN0IHNobV9tcQogICogeWV0IHVwZGF0ZWQgaW4gdGhlIHNoYXJlZCBtZW1vcnku ICBXZSB3aWxsIG5vdCB1cGRhdGUgaXQgdW50aWwgdGhlIHdyaXR0ZW4KICAqIGRhdGEgaXMg MS80dGggb2YgdGhlIHJpbmcgc2l6ZSBvciB0aGUgdHVwbGUgcXVldWUgaXMgZnVsbC4gIFRo aXMgd2lsbAogICogcHJldmVudCBmcmVxdWVudCBDUFUgY2FjaGUgbWlzc2VzLCBhbmQgaXQg d2lsbCBhbHNvIGF2b2lkIGZyZXF1ZW50Ci0gKiBTZXRMYXRjaCgpIGNhbGxzLCB3aGljaCBh cmUgcXVpdGUgZXhwZW5zaXZlLgorICogU2VuZEludGVycnVwdCgpIGNhbGxzLCB3aGljaCBh cmUgcXVpdGUgZXhwZW5zaXZlLgogICoKICAqIG1xaF9wYXJ0aWFsX2J5dGVzLCBtcWhfZXhw ZWN0ZWRfYnl0ZXMsIGFuZCBtcWhfbGVuZ3RoX3dvcmRfY29tcGxldGUKICAqIGFyZSB1c2Vk IHRvIHRyYWNrIHRoZSBzdGF0ZSBvZiBub24tYmxvY2tpbmcgb3BlcmF0aW9ucy4gIFdoZW4g dGhlIGNhbGxlcgpAQCAtMjE0LDcgKzIxNiw3IEBAIHNobV9tcV9zZXRfcmVjZWl2ZXIoc2ht X21xICptcSwgUEdQUk9DICpwcm9jKQogCVNwaW5Mb2NrUmVsZWFzZSgmbXEtPm1xX211dGV4 KTsKIAogCWlmIChzZW5kZXIgIT0gTlVMTCkKLQkJU2V0TGF0Y2goJnNlbmRlci0+cHJvY0xh dGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgR2V0TnVtYmVyRnJv bVBHUHJvYyhzZW5kZXIpKTsKIH0KIAogLyoKQEAgLTIzMiw3ICsyMzQsNyBAQCBzaG1fbXFf c2V0X3NlbmRlcihzaG1fbXEgKm1xLCBQR1BST0MgKnByb2MpCiAJU3BpbkxvY2tSZWxlYXNl KCZtcS0+bXFfbXV0ZXgpOwogCiAJaWYgKHJlY2VpdmVyICE9IE5VTEwpCi0JCVNldExhdGNo KCZyZWNlaXZlci0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhyZWNlaXZlcikpOwogfQogCiAvKgpAQCAtMzQx LDE0ICszNDMsMTQgQEAgc2htX21xX3NlbmQoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5i eXRlcywgY29uc3Qgdm9pZCAqZGF0YSwgYm9vbCBub3dhaXQsCiAgKiBXcml0ZSBhIG1lc3Nh Z2UgaW50byBhIHNoYXJlZCBtZXNzYWdlIHF1ZXVlLCBnYXRoZXJlZCBmcm9tIG11bHRpcGxl CiAgKiBhZGRyZXNzZXMuCiAgKgotICogV2hlbiBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2Fp dCBvbiBvdXIgcHJvY2VzcyBsYXRjaCB3aGVuIHRoZSByaW5nIGJ1ZmZlcgotICogZmlsbHMg dXAsIGFuZCB0aGVuIGNvbnRpbnVlIHdyaXRpbmcgb25jZSB0aGUgcmVjZWl2ZXIgaGFzIGRy YWluZWQgc29tZSBkYXRhLgotICogVGhlIHByb2Nlc3MgbGF0Y2ggaXMgcmVzZXQgYWZ0ZXIg ZWFjaCB3YWl0LgorICogV2hlbiBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2FpdCBvbiBvdXIg cHJvY2VzcyBpbnRlcnJ1cHQgd2hlbiB0aGUgcmluZworICogYnVmZmVyIGZpbGxzIHVwLCBh bmQgdGhlbiBjb250aW51ZSB3cml0aW5nIG9uY2UgdGhlIHJlY2VpdmVyIGhhcyBkcmFpbmVk CisgKiBzb21lIGRhdGEuICBUaGUgcHJvY2VzcyBpbnRlcnJ1cHQgaXMgY2xlYXJlZCBhZnRl ciBlYWNoIHdhaXQuCiAgKgotICogV2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBkbyBub3QgbWFu aXB1bGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3MgbGF0Y2g7CisgKiBXaGVuIG5vd2Fp dCA9IHRydWUsIHdlIGRvIG5vdCBtYW5pcHVsYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcHJvY2Vz cyBpbnRlcnJ1cHQ7CiAgKiBpbnN0ZWFkLCBpZiB0aGUgYnVmZmVyIGJlY29tZXMgZnVsbCwg d2UgcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSy4gIEluCiAgKiB0aGlzIGNhc2UsIHRoZSBj YWxsZXIgc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBhZ2Fpbiwgd2l0aCB0aGUgc2FtZQot ICogYXJndW1lbnRzLCBlYWNoIHRpbWUgdGhlIHByb2Nlc3MgbGF0Y2ggaXMgc2V0LiAgKE9u Y2UgYmVndW4sIHRoZSBzZW5kaW5nCisgKiBhcmd1bWVudHMsIGVhY2ggdGltZSB0aGUgcHJv Y2VzcyBpbnRlcnJ1cHQgaXMgc2V0LiAgKE9uY2UgYmVndW4sIHRoZSBzZW5kaW5nCiAgKiBv ZiBhIG1lc3NhZ2UgY2Fubm90IGJlIGFib3J0ZWQgZXhjZXB0IGJ5IGRldGFjaGluZyBmcm9t IHRoZSBxdWV1ZTsgY2hhbmdpbmcKICAqIHRoZSBsZW5ndGggb3IgcGF5bG9hZCB3aWxsIGNv cnJ1cHQgdGhlIHF1ZXVlLikKICAqCkBAIC01MzksNyArNTQxLDcgQEAgc2htX21xX3NlbmR2 KHNobV9tcV9oYW5kbGUgKm1xaCwgc2htX21xX2lvdmVjICppb3YsIGludCBpb3ZjbnQsIGJv b2wgbm93YWl0LAogCXsKIAkJc2htX21xX2luY19ieXRlc193cml0dGVuKG1xLCBtcWgtPm1x aF9zZW5kX3BlbmRpbmcpOwogCQlpZiAocmVjZWl2ZXIgIT0gTlVMTCkKLQkJCVNldExhdGNo KCZyZWNlaXZlci0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwsIEdldE51bWJlckZyb21QR1Byb2MocmVjZWl2ZXIpKTsKIAkJbXFoLT5tcWhfc2Vu ZF9wZW5kaW5nID0gMDsKIAl9CiAKQEAgLTU1NywxNiArNTU5LDE2IEBAIHNobV9tcV9zZW5k dihzaG1fbXFfaGFuZGxlICptcWgsIHNobV9tcV9pb3ZlYyAqaW92LCBpbnQgaW92Y250LCBi b29sIG5vd2FpdCwKICAqIHdoaWxlIHN0aWxsIGFsbG93aW5nIGxvbmdlciBtZXNzYWdlcy4g IEluIGVpdGhlciBjYXNlLCB0aGUgcmV0dXJuIHZhbHVlCiAgKiByZW1haW5zIHZhbGlkIHVu dGlsIHRoZSBuZXh0IHJlY2VpdmUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBvbiB0aGUgcXVl dWUuCiAgKgotICogV2hlbiBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2FpdCBvbiBvdXIgcHJv Y2VzcyBsYXRjaCB3aGVuIHRoZSByaW5nIGJ1ZmZlcgotICogaXMgZW1wdHkgYW5kIHdlIGhh dmUgbm90IHlldCByZWNlaXZlZCBhIGZ1bGwgbWVzc2FnZS4gIFRoZSBzZW5kZXIgd2lsbAot ICogc2V0IG91ciBwcm9jZXNzIGxhdGNoIGFmdGVyIG1vcmUgZGF0YSBoYXMgYmVlbiB3cml0 dGVuLCBhbmQgd2UnbGwgcmVzdW1lCi0gKiBwcm9jZXNzaW5nLiAgRWFjaCBjYWxsIHdpbGwg dGhlcmVmb3JlIHJldHVybiBhIGNvbXBsZXRlIG1lc3NhZ2UKKyAqIFdoZW4gbm93YWl0ID0g ZmFsc2UsIHdlJ2xsIHdhaXQgb24gb3VyIHByb2Nlc3MgaW50ZXJydXB0IHdoZW4gdGhlIHJp bmcKKyAqIGJ1ZmZlciBpcyBlbXB0eSBhbmQgd2UgaGF2ZSBub3QgeWV0IHJlY2VpdmVkIGEg ZnVsbCBtZXNzYWdlLiAgVGhlIHNlbmRlcgorICogd2lsbCBzZXQgb3VyIHByb2Nlc3MgaW50 ZXJydXB0IGFmdGVyIG1vcmUgZGF0YSBoYXMgYmVlbiB3cml0dGVuLCBhbmQgd2UnbGwKKyAq IHJlc3VtZSBwcm9jZXNzaW5nLiAgRWFjaCBjYWxsIHdpbGwgdGhlcmVmb3JlIHJldHVybiBh IGNvbXBsZXRlIG1lc3NhZ2UKICAqICh1bmxlc3MgdGhlIHNlbmRlciBkZXRhY2hlcyB0aGUg cXVldWUpLgogICoKLSAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgd2UgZG8gbm90IG1hbmlwdWxh dGUgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzIGxhdGNoOwotICogaW5zdGVhZCwgd2hlbmV2 ZXIgdGhlIGJ1ZmZlciBpcyBlbXB0eSBhbmQgd2UgbmVlZCB0byByZWFkIGZyb20gaXQsIHdl Ci0gKiByZXR1cm4gU0hNX01RX1dPVUxEX0JMT0NLLiAgSW4gdGhpcyBjYXNlLCB0aGUgY2Fs bGVyIHNob3VsZCBjYWxsIHRoaXMKLSAqIGZ1bmN0aW9uIGFnYWluIGFmdGVyIHRoZSBwcm9j ZXNzIGxhdGNoIGhhcyBiZWVuIHNldC4KKyAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgd2UgZG8g bm90IG1hbmlwdWxhdGUgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzCisgKiBpbnRlcnJ1cHQ7 IGluc3RlYWQsIHdoZW5ldmVyIHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIHdlIG5lZWQgdG8g cmVhZCBmcm9tCisgKiBpdCwgd2UgcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSy4gIEluIHRo aXMgY2FzZSwgdGhlIGNhbGxlciBzaG91bGQgY2FsbAorICogdGhpcyBmdW5jdGlvbiBhZ2Fp biBhZnRlciB0aGUgcHJvY2VzcyBpbnRlcnJ1cHQgaGFzIGJlZW4gc2V0LgogICovCiBzaG1f bXFfcmVzdWx0CiBzaG1fbXFfcmVjZWl2ZShzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgKm5i eXRlc3AsIHZvaWQgKipkYXRhcCwgYm9vbCBub3dhaXQpCkBAIC02MTksOCArNjIxLDggQEAg c2htX21xX3JlY2VpdmUoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplICpuYnl0ZXNwLCB2b2lk ICoqZGF0YXAsIGJvb2wgbm93YWl0KQogCSAqIElmIHdlJ3ZlIGNvbnN1bWVkIGFuIGFtb3Vu dCBvZiBkYXRhIGdyZWF0ZXIgdGhhbiAxLzR0aCBvZiB0aGUgcmluZwogCSAqIHNpemUsIG1h cmsgaXQgY29uc3VtZWQgaW4gc2hhcmVkIG1lbW9yeS4gIFdlIHRyeSB0byBhdm9pZCBkb2lu ZyB0aGlzCiAJICogdW5uZWNlc3NhcmlseSB3aGVuIG9ubHkgYSBzbWFsbCBhbW91bnQgb2Yg ZGF0YSBoYXMgYmVlbiBjb25zdW1lZCwKLQkgKiBiZWNhdXNlIFNldExhdGNoKCkgaXMgZmFp cmx5IGV4cGVuc2l2ZSBhbmQgd2UgZG9uJ3Qgd2FudCB0byBkbyBpdCB0b28KLQkgKiBvZnRl bi4KKwkgKiBiZWNhdXNlIFNlbmRJbnRlcnJ1cHQoKSBpcyBmYWlybHkgZXhwZW5zaXZlIGFu ZCB3ZSBkb24ndCB3YW50IHRvIGRvIGl0CisJICogdG9vIG9mdGVuLgogCSAqLwogCWlmICht cWgtPm1xaF9jb25zdW1lX3BlbmRpbmcgPiBtcS0+bXFfcmluZ19zaXplIC8gNCkKIAl7CkBA IC04OTUsNyArODk3LDcgQEAgc2htX21xX2RldGFjaF9pbnRlcm5hbChzaG1fbXEgKm1xKQog CVNwaW5Mb2NrUmVsZWFzZSgmbXEtPm1xX211dGV4KTsKIAogCWlmICh2aWN0aW0gIT0gTlVM TCkKLQkJU2V0TGF0Y2goJnZpY3RpbS0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCwgR2V0TnVtYmVyRnJvbVBHUHJvYyh2aWN0aW0pKTsKIH0KIAog LyoKQEAgLTk5Myw3ICs5OTUsNyBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxl ICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJICogVGhlcmVmb3Jl LCB3ZSBjYW4gcmVhZCBpdCB3aXRob3V0IGFjcXVpcmluZyB0aGUgc3BpbmxvY2suCiAJCQkg Ki8KIAkJCUFzc2VydChtcWgtPm1xaF9jb3VudGVycGFydHlfYXR0YWNoZWQpOwotCQkJU2V0 TGF0Y2goJm1xLT5tcV9yZWNlaXZlci0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwsIEdldE51bWJlckZyb21QR1Byb2MobXEtPm1xX3JlY2VpdmVy KSk7CiAKIAkJCS8qCiAJCQkgKiBXZSBoYXZlIGp1c3QgdXBkYXRlZCB0aGUgbXFoX3NlbmRf cGVuZGluZyBieXRlcyBpbiB0aGUgc2hhcmVkCkBAIC0xMDAxLDcgKzEwMDMsNyBAQCBzaG1f bXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2 b2lkICpkYXRhLAogCQkJICovCiAJCQltcWgtPm1xaF9zZW5kX3BlbmRpbmcgPSAwOwogCi0J CQkvKiBTa2lwIG1hbmlwdWxhdGlvbiBvZiBvdXIgbGF0Y2ggaWYgbm93YWl0ID0gdHJ1ZS4g Ki8KKwkJCS8qIFNraXAgd2FpdGluZyBpZiBub3dhaXQgPSB0cnVlLiAqLwogCQkJaWYgKG5v d2FpdCkKIAkJCXsKIAkJCQkqYnl0ZXNfd3JpdHRlbiA9IHNlbnQ7CkBAIC0xMDA5LDE3ICsx MDExLDE3IEBAIHNobV9tcV9zZW5kX2J5dGVzKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSBu Ynl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsCiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBXYWl0IGZv ciBvdXIgbGF0Y2ggdG8gYmUgc2V0LiAgSXQgbWlnaHQgYWxyZWFkeSBiZSBzZXQgZm9yIHNv bWUKKwkJCSAqIFdhaXQgZm9yIHRoZSBpbnRlcnJ1cHQuICBJdCBtaWdodCBhbHJlYWR5IGJl IHNldCBmb3Igc29tZQogCQkJICogdW5yZWxhdGVkIHJlYXNvbiwgYnV0IHRoYXQnbGwganVz dCByZXN1bHQgaW4gb25lIGV4dHJhIHRyaXAKLQkJCSAqIHRocm91Z2ggdGhlIGxvb3AuICBJ dCdzIHdvcnRoIGl0IHRvIGF2b2lkIHJlc2V0dGluZyB0aGUgbGF0Y2gKLQkJCSAqIGF0IHRv cCBvZiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxyZWFkeS1zZXQgbGF0Y2ggaXMgbXVj aAotCQkJICogY2hlYXBlciB0aGFuIHNldHRpbmcgb25lIHRoYXQgaGFzIGJlZW4gcmVzZXQu CisJCQkgKiB0aHJvdWdoIHRoZSBsb29wLiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCBjbGVh cmluZyB0aGUKKwkJCSAqIGludGVycnVwdCBhdCB0b3Agb2YgbG9vcCwgYmVjYXVzZSBzZXR0 aW5nIGFuIGFscmVhZHktc2V0CisJCQkgKiBpbnRlcnJ1cHQgaXMgbXVjaCBjaGVhcGVyIHRo YW4gc2V0dGluZyBvbmUgdGhhdCBoYXMgYmVlbiByZXNldC4KIAkJCSAqLwotCQkJKHZvaWQp IFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LCAwLAotCQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfU0VORCk7CisJCQkodm9p ZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQg fCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdF X1FVRVVFX1NFTkQpOwogCi0JCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bp bi4gKi8KLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkvKiBDbGVhciB0aGUgaW50ZXJy dXB0IHNvIHdlIGRvbid0IHNwaW4uICovCisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCk7CiAKIAkJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGls ZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpAQCAt MTA1NCw3ICsxMDU2LDcgQEAgc2htX21xX3NlbmRfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFo LCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKIAogCQkJLyoKIAkJCSAqIEZvciBl ZmZpY2llbmN5LCB3ZSBkb24ndCB1cGRhdGUgdGhlIGJ5dGVzIHdyaXR0ZW4gaW4gdGhlIHNo YXJlZAotCQkJICogbWVtb3J5IGFuZCBhbHNvIGRvbid0IHNldCB0aGUgcmVhZGVyJ3MgbGF0 Y2ggaGVyZS4gIFJlZmVyIHRvCisJCQkgKiBtZW1vcnkgYW5kIGFsc28gZG9uJ3Qgc2VuZCB0 aGUgcmVhZGVyIGludGVycnVwdCBoZXJlLiAgUmVmZXIgdG8KIAkJCSAqIHRoZSBjb21tZW50 cyBhdG9wIHRoZSBzaG1fbXFfaGFuZGxlIHN0cnVjdHVyZSBmb3IgbW9yZQogCQkJICogaW5m b3JtYXRpb24uCiAJCQkgKi8KQEAgLTExNTAsMjIgKzExNTIsMjIgQEAgc2htX21xX3JlY2Vp dmVfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIGJ5dGVzX25lZWRlZCwgYm9vbCBu b3dhaXQsCiAJCQltcWgtPm1xaF9jb25zdW1lX3BlbmRpbmcgPSAwOwogCQl9CiAKLQkJLyog U2tpcCBtYW5pcHVsYXRpb24gb2Ygb3VyIGxhdGNoIGlmIG5vd2FpdCA9IHRydWUuICovCisJ CS8qIFNraXAgd2FpdGluZyBpZiBub3dhaXQgPSB0cnVlLiAqLwogCQlpZiAobm93YWl0KQog CQkJcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSzsKIAogCQkvKgotCQkgKiBXYWl0IGZvciBv dXIgbGF0Y2ggdG8gYmUgc2V0LiAgSXQgbWlnaHQgYWxyZWFkeSBiZSBzZXQgZm9yIHNvbWUK KwkJICogV2FpdCBmb3IgdGhlIGludGVycnVwdCB0byBiZSBzZXQuICBJdCBtaWdodCBhbHJl YWR5IGJlIHNldCBmb3Igc29tZQogCQkgKiB1bnJlbGF0ZWQgcmVhc29uLCBidXQgdGhhdCds bCBqdXN0IHJlc3VsdCBpbiBvbmUgZXh0cmEgdHJpcCB0aHJvdWdoCi0JCSAqIHRoZSBsb29w LiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGxhdGNoIGF0IHRvcCBv ZgotCQkgKiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxyZWFkeS1zZXQgbGF0Y2ggaXMg bXVjaCBjaGVhcGVyIHRoYW4KLQkJICogc2V0dGluZyBvbmUgdGhhdCBoYXMgYmVlbiByZXNl dC4KKwkJICogdGhlIGxvb3AuICBJdCdzIHdvcnRoIGl0IHRvIGF2b2lkIGNsZWFyaW5nIHRo ZSBpbnRlcnJ1cHQgYXQgdG9wIG9mCisJCSAqIGxvb3AsIGJlY2F1c2Ugc2V0dGluZyBhbiBh bHJlYWR5LXNldCBpbnRlcnJ1cHQgaXMgbXVjaCBjaGVhcGVyIHRoYW4KKwkJICogc2V0dGlu ZyBvbmUgdGhhdCBoYXMgYmVlbiBjbGVhcmVkLgogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRj aChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJ CQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9SRUNFSVZFKTsKKwkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1JF Q0VJVkUpOwogCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLwot CQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IHNvIHdl IGRvbid0IHNwaW4uICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsK IAogCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3 YWl0aW5nLiAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpAQCAtMTI1MCwxMSArMTI1 MiwxMSBAQCBzaG1fbXFfd2FpdF9pbnRlcm5hbChzaG1fbXEgKm1xLCBQR1BST0MgKipwdHIs IEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKIAkJfQogCiAJCS8qIFdhaXQgdG8g YmUgc2lnbmFsZWQuICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hf U0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCSBXQUlUX0VWRU5UX01FU1NB R0VfUVVFVUVfSU5URVJOQUwpOworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAor CQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfSU5URVJOQUwpOwogCi0JCS8qIFJl c2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLwotCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IHNvIHdlIGRvbid0IHNwaW4uICovCisJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkvKiBBbiBpbnRlcnJ1 cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwogCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwpAQCAtMTI5Myw3ICsxMjk1LDcgQEAgc2htX21xX2luY19i eXRlc19yZWFkKHNobV9tcSAqbXEsIFNpemUgbikKIAkgKi8KIAlzZW5kZXIgPSBtcS0+bXFf c2VuZGVyOwogCUFzc2VydChzZW5kZXIgIT0gTlVMTCk7Ci0JU2V0TGF0Y2goJnNlbmRlci0+ cHJvY0xhdGNoKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBHZXROdW1i ZXJGcm9tUEdQcm9jKHNlbmRlcikpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NpZ25hbGZ1bmNzLmMKaW5kZXggZDgzNTMyNzYwMC4uMmFjOWYwOWY3YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9zeXNsb2dnZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgpAQCAtMjA0LDEyICsyMDUsMTIg QEAgcGdfd2FpdF91bnRpbF90ZXJtaW5hdGlvbihpbnQgcGlkLCBpbnQ2NCB0aW1lb3V0KQog CQkvKiBQcm9jZXNzIGludGVycnVwdHMsIGlmIGFueSwgYmVmb3JlIHdhaXRpbmcgKi8KIAkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gs Ci0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCi0JCQkJCQkgd2FpdHRpbWUsCi0JCQkJCQkgV0FJVF9FVkVOVF9CQUNLRU5EX1RFUk1J TkFUSU9OKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJB TCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkJIHdhaXR0aW1lLAorCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tFTkRf VEVSTUlOQVRJT04pOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQlyZW1haW5pbmd0aW1lIC09IHdhaXR0aW1l OwogCX0gd2hpbGUgKHJlbWFpbmluZ3RpbWUgPiAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lu dmFsLmMKaW5kZXggZDliMTZmODRkMS4uNzI2MzBiMjdhYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2ludmFsLmMKQEAgLTE2LDcgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0 LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z aW52YWxhZHQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogCkBAIC0zMSw4ICszMSw4 IEBAIHVpbnQ2NAkJU2hhcmVkSW52YWxpZE1lc3NhZ2VDb3VudGVyOwogICogdGhyb3VnaCBh IGNhY2hlIHJlc2V0IGV4ZXJjaXNlLiAgVGhpcyBpcyBkb25lIGJ5IHNlbmRpbmcKICAqIFBS T0NTSUdfQ0FUQ0hVUF9JTlRFUlJVUFQgdG8gYW55IGJhY2tlbmQgdGhhdCBnZXRzIHRvbyBm YXIgYmVoaW5kLgogICoKLSAqIFRoZSBzaWduYWwgaGFuZGxlciB3aWxsIHNldCBhbiBpbnRl cnJ1cHQgcGVuZGluZyBmbGFnIGFuZCB3aWxsIHNldCB0aGUKLSAqIHByb2Nlc3NlcyBsYXRj aC4gV2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVhZCBmcm9tIHRoZSBjbGllbnQsIG9yIHdoZW4K KyAqIFRoZSBzaWduYWwgaGFuZGxlciB3aWxsIHNldCBhbiBpbnRlcnJ1cHQgcGVuZGluZyBm bGFnIGFuZCByYWlzZSB0aGUKKyAqIElOVEVSUlVQVF9HRU5FUkFMLiBXaGVuZXZlciBzdGFy dGluZyB0byByZWFkIGZyb20gdGhlIGNsaWVudCwgb3Igd2hlbgogICogaW50ZXJydXB0ZWQg d2hpbGUgZG9pbmcgc28sIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KCkgd2lsbCBjYWxs CiAgKiBQcm9jZXNzQ2F0Y2h1cEV2ZW50KCkuCiAgKi8KQEAgLTE0OCw3ICsxNDgsNyBAQCBS ZWNlaXZlU2hhcmVkSW52YWxpZE1lc3NhZ2VzKHZvaWQgKCppbnZhbEZ1bmN0aW9uKSAoU2hh cmVkSW52YWxpZGF0aW9uTWVzc2FnZSAqbQogICoKICAqIFdlIHVzZWQgdG8gZGlyZWN0bHkg Y2FsbCBQcm9jZXNzQ2F0Y2h1cEV2ZW50IGRpcmVjdGx5IHdoZW4gaWRsZS4gVGhlc2UgZGF5 cwogICogd2UganVzdCBzZXQgYSBmbGFnIHRvIGRvIGl0IGxhdGVyIGFuZCBub3RpZnkgdGhl IHByb2Nlc3Mgb2YgdGhhdCBmYWN0IGJ5Ci0gKiBzZXR0aW5nIHRoZSBwcm9jZXNzJ3MgbGF0 Y2guCisgKiByYWlzaW5nIElOVEVSUlVQVF9HRU5FUkFMLgogICovCiB2b2lkCiBIYW5kbGVD YXRjaHVwSW50ZXJydXB0KHZvaWQpCkBAIC0xNjEsNyArMTYxLDcgQEAgSGFuZGxlQ2F0Y2h1 cEludGVycnVwdCh2b2lkKQogCWNhdGNodXBJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKIAog CS8qIG1ha2Ugc3VyZSB0aGUgZXZlbnQgaXMgcHJvY2Vzc2VkIGluIGR1ZSBjb3Vyc2UgKi8K LQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFu ZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5kZXggMjUyNjdm MGY4NS4uNzNkZTk2YWNjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAt MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5o IgpAQCAtNTk0LDcgKzU5NSw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFi YXNlKE9pZCBkYmlkKQogICogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayBpcyBj YWxsZWQgZnJvbSBQcm9jU2xlZXAoKQogICogdG8gcmVzb2x2ZSBjb25mbGljdHMgd2l0aCBv dGhlciBiYWNrZW5kcyBob2xkaW5nIHJlbGF0aW9uIGxvY2tzLgogICoKLSAqIFRoZSBXYWl0 TGF0Y2ggc2xlZXAgbm9ybWFsbHkgZG9uZSBpbiBQcm9jU2xlZXAoKQorICogVGhlIFdhaXRJ bnRlcnJ1cHQgc2xlZXAgbm9ybWFsbHkgZG9uZSBpbiBQcm9jU2xlZXAoKQogICogKHdoZW4g bm90IEluSG90U3RhbmRieSkgaXMgcGVyZm9ybWVkIGhlcmUsIGZvciBjb2RlIGNsYXJpdHku CiAgKgogICogV2UgZWl0aGVyIHJlc29sdmUgY29uZmxpY3RzIGltbWVkaWF0ZWx5IG9yIHNl dCBhIHRpbWVvdXQgdG8gd2FrZSB1cyBhdApAQCAtNjk2LDcgKzY5NywxMCBAQCBSZXNvbHZl UmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywgYm9vbCBsb2dnaW5n X2NvbmZsaWN0KQogCX0KIAogCS8qIFdhaXQgdG8gYmUgc2lnbmFsZWQgYnkgdGhlIHJlbGVh c2Ugb2YgdGhlIFJlbGF0aW9uIExvY2sgKi8KLQlQcm9jV2FpdEZvclNpZ25hbChQR19XQUlU X0xPQ0sgfCBsb2NrdGFnLmxvY2t0YWdfdHlwZSk7CisJV2FpdEludGVycnVwdCgxIDw8IElO VEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAw LAorCQkJCSAgUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUpOworCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwlDSEVDS19GT1JfSU5URVJSVVBUUygp OwogCiAJLyoKIAkgKiBFeGl0IGlmIGx0aW1lIGlzIHJlYWNoZWQuIFRoZW4gYWxsIHRoZSBi YWNrZW5kcyBob2xkaW5nIGNvbmZsaWN0aW5nCkBAIC03NDUsNyArNzQ5LDEwIEBAIFJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvY2soTE9DS1RBRyBsb2NrdGFnLCBib29sIGxvZ2dp bmdfY29uZmxpY3QpCiAJCSAqIHVudGlsIHRoZSByZWxhdGlvbiBsb2NrcyBhcmUgcmVsZWFz ZWQgb3IgbHRpbWUgaXMgcmVhY2hlZC4KIAkJICovCiAJCWdvdF9zdGFuZGJ5X2RlYWRsb2Nr X3RpbWVvdXQgPSBmYWxzZTsKLQkJUHJvY1dhaXRGb3JTaWduYWwoUEdfV0FJVF9MT0NLIHwg bG9ja3RhZy5sb2NrdGFnX3R5cGUpOworCQlXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBU X0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJ CSAgUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUpOworCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJ fQogCiBjbGVhbnVwOgpAQCAtODM3LDkgKzg0NCwxNCBAQCBSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhCdWZmZXJQaW4odm9pZCkKIAkgKiBXZSBhc3N1bWUgdGhhdCBvbmx5IFVucGlu QnVmZmVyKCkgYW5kIHRoZSB0aW1lb3V0IHJlcXVlc3RzIGVzdGFibGlzaGVkCiAJICogYWJv dmUgY2FuIHdha2UgdXMgdXAgaGVyZS4gV2FrZXVwUmVjb3ZlcnkoKSBjYWxsZWQgYnkgd2Fs cmVjZWl2ZXIgb3IKIAkgKiBTSUdIVVAgc2lnbmFsIGhhbmRsZXIsIGV0YyBjYW5ub3QgZG8g dGhhdCBiZWNhdXNlIGl0IHVzZXMgdGhlIGRpZmZlcmVudAotCSAqIGxhdGNoIGZyb20gdGhh dCBQcm9jV2FpdEZvclNpZ25hbCgpIHdhaXRzIG9uLgorCSAqIGludGVycnVwdCBmbGFnLiBG SVhNRTogc2VlbXMgbGlrZSBhIHNoYWt5IGFzc3VtcHRpb24uIFdha2V1cFJlY292ZXJ5KCkK KwkgKiBpbmRlZWQgdXNlcyBhIGRpZmZlcmVudCBpbnRlcnJ1cHQgZmxhZyAoZGlmZmVyZW50 IGxhdGNoIGVhcmxpZXIpLCBidXQKKwkgKiB0aGUgc2lnbmFsIGhhbmRsZXI/PwogCSAqLwot CVByb2NXYWl0Rm9yU2lnbmFsKFdBSVRfRVZFTlRfQlVGRkVSX1BJTik7CisJV2FpdEludGVy cnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAorCQkJCSAgV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAogCWlmIChnb3Rfc3RhbmRieV9kZWxheV90aW1lb3V0KQogCQlTZW5kUmVjb3ZlcnlDb25m bGljdFdpdGhCdWZmZXJQaW4oUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4p OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jCnNpbWlsYXJpdHkgaW5kZXggNzYl CnJlbmFtZSBmcm9tIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKcmVuYW1lIHRv IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jCmluZGV4IGYxOWNlNWU3 YWYuLmVkMzc1OGNkNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xh dGNoLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKQEAg LTEsMTcgKzEsMzIgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKLSAqIGxhdGNoLmMK LSAqCSAgUm91dGluZXMgZm9yIGludGVyLXByb2Nlc3MgbGF0Y2hlcworICogd2FpdGV2ZW50 c2V0LmMKKyAqCSAgcHBvbGwoKS9wc2VsZWN0KCkgbGlrZSBhYnN0cmFjdGlvbgogICoKLSAq IFRoZSBwb2xsKCkgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc28tY2FsbGVkIHNlbGYtcGlw ZSB0cmljayB0byBvdmVyY29tZSB0aGUKLSAqIHJhY2UgY29uZGl0aW9uIGludm9sdmVkIHdp dGggcG9sbCgpIGFuZCBzZXR0aW5nIGEgZ2xvYmFsIGZsYWcgaW4gdGhlIHNpZ25hbAotICog aGFuZGxlci4gV2hlbiBhIGxhdGNoIGlzIHNldCBhbmQgdGhlIGN1cnJlbnQgcHJvY2VzcyBp cyB3YWl0aW5nIGZvciBpdCwgdGhlCi0gKiBzaWduYWwgaGFuZGxlciB3YWtlcyB1cCB0aGUg cG9sbCgpIGluIFdhaXRMYXRjaCBieSB3cml0aW5nIGEgYnl0ZSB0byBhIHBpcGUuCi0gKiBB IHNpZ25hbCBieSBpdHNlbGYgZG9lc24ndCBpbnRlcnJ1cHQgcG9sbCgpIG9uIGFsbCBwbGF0 Zm9ybXMsIGFuZCBldmVuIG9uCi0gKiBwbGF0Zm9ybXMgd2hlcmUgaXQgZG9lcywgYSBzaWdu YWwgdGhhdCBhcnJpdmVzIGp1c3QgYmVmb3JlIHRoZSBwb2xsKCkgY2FsbAotICogZG9lcyBu b3QgcHJldmVudCBwb2xsKCkgZnJvbSBlbnRlcmluZyBzbGVlcC4gQW4gaW5jb21pbmcgYnl0 ZSBvbiBhIHBpcGUKLSAqIGhvd2V2ZXIgcmVsaWFibHkgaW50ZXJydXB0cyB0aGUgc2xlZXAs IGFuZCBjYXVzZXMgcG9sbCgpIHRvIHJldHVybgotICogaW1tZWRpYXRlbHkgZXZlbiBpZiB0 aGUgc2lnbmFsIGFycml2ZXMgYmVmb3JlIHBvbGwoKSBiZWdpbnMuCisgKiBXYWl0RXZlbnRz IGFyZSBhbiBhYnN0cmFjdGlvbiBmb3Igd2FpdGluZyBmb3Igb25lIG9yIG1vcmUgZXZlbnRz IGF0IGEgdGltZS4KKyAqIFRoZSB3YWl0aW5nIGNhbiBiZSBkb25lIGluIGEgcmFjZSBmcmVl IGZhc2hpb24sIHNpbWlsYXIgcHBvbGwoKSBvcgorICogcHNlbGVjdCgpIChhcyBvcHBvc2Vk IHRvIHBsYWluIHBvbGwoKS9zZWxlY3QoKSkuCisgKgorICogWW91IGNhbiB3YWl0IGZvcjoK KyAqIC0gYW4gaW50ZXJydXB0IGZyb20gYW5vdGhlciBwcm9jZXNzIG9yIGZyb20gc2lnbmFs IGhhbmRsZXIgaW4gdGhlIHNhbWUKKyAqICAgcHJvY2VzcyAoV0xfSU5URVJSVVBUKQorICog LSBkYXRhIHRvIGJlY29tZSByZWFkYWJsZSBvciB3cml0ZWFibGUgb24gYSBzb2NrZXQgKFdM X1NPQ0tFVF8qKQorICogLSBwb3N0bWFzdGVyIGRlYXRoIChXTF9QT1NUTUFTVEVSX0RFQVRI IG9yIFdMX0VYSVRfT05fUE1fREVBVEgpCisgKiAtIHRpbWVvdXQgKFdMX1RJTUVPVVQpCisg KgorICogSW1wbGVtZW50YXRpb24KKyAqIC0tLS0tLS0tLS0tLS0tCisgKgorICogVGhlIHBv bGwoKSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBzby1jYWxsZWQgc2VsZi1waXBlIHRyaWNr IHRvIG92ZXJjb21lCisgKiB0aGUgcmFjZSBjb25kaXRpb24gaW52b2x2ZWQgd2l0aCBwb2xs KCkgYW5kIHNldHRpbmcgYSBnbG9iYWwgZmxhZyBpbiB0aGUKKyAqIHNpZ25hbCBoYW5kbGVy LiBXaGVuIGFuIGludGVycnVwdCBpcyByZWNlaXZlZCBhbmQgdGhlIGN1cnJlbnQgcHJvY2Vz cyBpcworICogd2FpdGluZyBmb3IgaXQsIHRoZSBzaWduYWwgaGFuZGxlciB3YWtlcyB1cCB0 aGUgcG9sbCgpIGluIFdhaXRJbnRlcnJ1cHQgYnkKKyAqIHdyaXRpbmcgYSBieXRlIHRvIGEg cGlwZS4gIEEgc2lnbmFsIGJ5IGl0c2VsZiBkb2Vzbid0IGludGVycnVwdCBwb2xsKCkgb24K KyAqIGFsbCBwbGF0Zm9ybXMsIGFuZCBldmVuIG9uIHBsYXRmb3JtcyB3aGVyZSBpdCBkb2Vz LCBhIHNpZ25hbCB0aGF0IGFycml2ZXMKKyAqIGp1c3QgYmVmb3JlIHRoZSBwb2xsKCkgY2Fs bCBkb2VzIG5vdCBwcmV2ZW50IHBvbGwoKSBmcm9tIGVudGVyaW5nIHNsZWVwLiBBbgorICog aW5jb21pbmcgYnl0ZSBvbiBhIHBpcGUgaG93ZXZlciByZWxpYWJseSBpbnRlcnJ1cHRzIHRo ZSBzbGVlcCwgYW5kIGNhdXNlcworICogcG9sbCgpIHRvIHJldHVybiBpbW1lZGlhdGVseSBl dmVuIGlmIHRoZSBzaWduYWwgYXJyaXZlcyBiZWZvcmUgcG9sbCgpCisgKiBiZWdpbnMuCiAg KgogICogVGhlIGVwb2xsKCkgaW1wbGVtZW50YXRpb24gb3ZlcmNvbWVzIHRoZSByYWNlIHdp dGggYSBkaWZmZXJlbnQgdGVjaG5pcXVlOiBpdAogICoga2VlcHMgU0lHVVJHIGJsb2NrZWQg YW5kIGNvbnN1bWVzIGZyb20gYSBzaWduYWxmZCgpIGRlc2NyaXB0b3IgaW5zdGVhZC4gIFdl CkBAIC0yNyw3ICs0Miw3IEBACiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQogICoKICAqIElERU5USUZJ Q0FUSU9OCi0gKgkgIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKKyAqCSAgc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKICAqCiAgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqLwpAQCAtNTcsOSArNzIsMTEgQEAKICNpbmNsdWRlICJwb3J0YWJpbGl0 eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJv Yy5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogCkBAIC05OCw3 ICsxMTUsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotLyogdHlwZWRlZiBpbiBsYXRjaC5oICov CisvKiB0eXBlZGVmIGluIHdhaXRldmVudHNldC5oICovCiBzdHJ1Y3QgV2FpdEV2ZW50U2V0 CiB7CiAJUmVzb3VyY2VPd25lciBvd25lcjsKQEAgLTExMywxMyArMTMwLDEzIEBAIHN0cnVj dCBXYWl0RXZlbnRTZXQKIAlXYWl0RXZlbnQgICpldmVudHM7CiAKIAkvKgotCSAqIElmIFdM X0xBVENIX1NFVCBpcyBzcGVjaWZpZWQgaW4gYW55IHdhaXQgZXZlbnQsIGxhdGNoIGlzIGEg cG9pbnRlciB0bwotCSAqIHNhaWQgbGF0Y2gsIGFuZCBsYXRjaF9wb3MgdGhlIG9mZnNldCBp biB0aGUgLT5ldmVudHMgYXJyYXkuIFRoaXMgaXMKLQkgKiB1c2VmdWwgYmVjYXVzZSB3ZSBj aGVjayB0aGUgc3RhdGUgb2YgdGhlIGxhdGNoIGJlZm9yZSBwZXJmb3JtaW5nIGRvaW5nCi0J ICogc3lzY2FsbHMgcmVsYXRlZCB0byB3YWl0aW5nLgorCSAqIElmIFdMX0lOVEVSUlVQVCBp cyBzcGVjaWZpZWQgaW4gYW55IHdhaXQgZXZlbnQsIGludGVycnVwdE1hc2sgaXMgdGhlCisJ ICogaW50ZXJydXB0cyB0byB3YWl0IGZvciwgYW5kIGludGVycnVwdF9wb3MgdGhlIG9mZnNl dCBpbiB0aGUgLT5ldmVudHMKKwkgKiBhcnJheS4gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB3 ZSBjaGVjayB0aGUgc3RhdGUgb2YgcGVuZGluZyBpbnRlcnJ1cHRzCisJICogYmVmb3JlIHBl cmZvcm1pbmcgZG9pbmcgc3lzY2FsbHMgcmVsYXRlZCB0byB3YWl0aW5nLgogCSAqLwotCUxh dGNoCSAgICpsYXRjaDsKLQlpbnQJCQlsYXRjaF9wb3M7CisJdWludDMyCQlpbnRlcnJ1cHRf bWFzazsKKwlpbnQJCQlpbnRlcnJ1cHRfcG9zOwogCiAJLyoKIAkgKiBXTF9FWElUX09OX1BN X0RFQVRIIGlzIGNvbnZlcnRlZCB0byBXTF9QT1NUTUFTVEVSX0RFQVRILCBidXQgdGhpcyBm bGFnCkBAIC0xNTEsMTQgKzE2OCwxNCBAQCBzdHJ1Y3QgV2FpdEV2ZW50U2V0CiAjZW5kaWYK IH07CiAKLS8qIEEgY29tbW9uIFdhaXRFdmVudFNldCB1c2VkIHRvIGltcGxlbWVudCBXYWl0 TGF0Y2goKSAqLwotc3RhdGljIFdhaXRFdmVudFNldCAqTGF0Y2hXYWl0U2V0OworLyogQSBj b21tb24gV2FpdEV2ZW50U2V0IHVzZWQgdG8gaW1wbGVtZW50IFdhaXRJbnRlcnJ1cHQoKSAq Lworc3RhdGljIFdhaXRFdmVudFNldCAqSW50ZXJydXB0V2FpdFNldDsKIAotLyogVGhlIHBv c2l0aW9uIG9mIHRoZSBsYXRjaCBpbiBMYXRjaFdhaXRTZXQuICovCi0jZGVmaW5lIExhdGNo V2FpdFNldExhdGNoUG9zIDAKKy8qIFRoZSBwb3NpdGlvbiBvZiB0aGUgaW50ZXJydXB0IGlu IEludGVycnVwdFdhaXRTZXQuICovCisjZGVmaW5lIEludGVycnVwdFdhaXRTZXRJbnRlcnJ1 cHRQb3MgMAogCiAjaWZuZGVmIFdJTjMyCi0vKiBBcmUgd2UgY3VycmVudGx5IGluIFdhaXRM YXRjaD8gVGhlIHNpZ25hbCBoYW5kbGVyIHdvdWxkIGxpa2UgdG8ga25vdy4gKi8KKy8qIEFy ZSB3ZSBjdXJyZW50bHkgaW4gV2FpdEludGVycnVwdD8gVGhlIHNpZ25hbCBoYW5kbGVyIHdv dWxkIGxpa2UgdG8ga25vdy4gKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgd2Fp dGluZyA9IGZhbHNlOwogI2VuZGlmCiAKQEAgLTE3NCw5ICsxOTEsMTYgQEAgc3RhdGljIGlu dAlzZWxmcGlwZV93cml0ZWZkID0gLTE7CiAKIC8qIFByb2Nlc3Mgb3duaW5nIHRoZSBzZWxm LXBpcGUgLS0tIG5lZWRlZCBmb3IgY2hlY2tpbmcgcHVycG9zZXMgKi8KIHN0YXRpYyBpbnQJ c2VsZnBpcGVfb3duZXJfcGlkID0gMDsKKyNlbmRpZgorCisjaWZkZWYgV0FJVF9VU0VfV0lO MzIKK3N0YXRpYyBIQU5ETEUgTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudDsKKyNlbmRpZgog CiAvKiBQcml2YXRlIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KLXN0YXRpYyB2b2lkIGxhdGNo X3NpZ3VyZ19oYW5kbGVyKFNJR05BTF9BUkdTKTsKKworI2lmZGVmIFdBSVRfVVNFX1NFTEZf UElQRQorc3RhdGljIHZvaWQgaW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKFNJR05BTF9BUkdT KTsKIHN0YXRpYyB2b2lkIHNlbmRTZWxmUGlwZUJ5dGUodm9pZCk7CiAjZW5kaWYKIApAQCAt MjIzLDEzICsyNDcsMTMgQEAgUmVzb3VyY2VPd25lckZvcmdldFdhaXRFdmVudFNldChSZXNv dXJjZU93bmVyIG93bmVyLCBXYWl0RXZlbnRTZXQgKnNldCkKIAogCiAvKgotICogSW5pdGlh bGl6ZSB0aGUgcHJvY2Vzcy1sb2NhbCBsYXRjaCBpbmZyYXN0cnVjdHVyZS4KKyAqIEluaXRp YWxpemUgdGhlIHByb2Nlc3MtbG9jYWwgd2FpdCBldmVudCBpbmZyYXN0cnVjdHVyZS4KICAq CiAgKiBUaGlzIG11c3QgYmUgY2FsbGVkIG9uY2UgZHVyaW5nIHN0YXJ0dXAgb2YgYW55IHBy b2Nlc3MgdGhhdCBjYW4gd2FpdCBvbgotICogbGF0Y2hlcywgYmVmb3JlIGl0IGlzc3VlcyBh bnkgSW5pdExhdGNoKCkgb3IgT3duTGF0Y2goKSBjYWxscy4KKyAqIGludGVycnVwdHMuCiAg Ki8KIHZvaWQKLUluaXRpYWxpemVMYXRjaFN1cHBvcnQodm9pZCkKK0luaXRpYWxpemVXYWl0 RXZlbnRTdXBwb3J0KHZvaWQpCiB7CiAjaWYgZGVmaW5lZChXQUlUX1VTRV9TRUxGX1BJUEUp CiAJaW50CQkJcGlwZWZkWzJdOwpAQCAtMjc2LDEyICszMDAsMTIgQEAgSW5pdGlhbGl6ZUxh dGNoU3VwcG9ydCh2b2lkKQogCiAJLyoKIAkgKiBTZXQgdXAgdGhlIHNlbGYtcGlwZSB0aGF0 IGFsbG93cyBhIHNpZ25hbCBoYW5kbGVyIHRvIHdha2UgdXAgdGhlCi0JICogcG9sbCgpL2Vw b2xsX3dhaXQoKSBpbiBXYWl0TGF0Y2guIE1ha2UgdGhlIHdyaXRlLWVuZCBub24tYmxvY2tp bmcsIHNvCi0JICogdGhhdCBTZXRMYXRjaCB3b24ndCBibG9jayBpZiB0aGUgZXZlbnQgaGFz IGFscmVhZHkgYmVlbiBzZXQgbWFueSB0aW1lcwotCSAqIGZpbGxpbmcgdGhlIGtlcm5lbCBi dWZmZXIuIE1ha2UgdGhlIHJlYWQtZW5kIG5vbi1ibG9ja2luZyB0b28sIHNvIHRoYXQKLQkg KiB3ZSBjYW4gZWFzaWx5IGNsZWFyIHRoZSBwaXBlIGJ5IHJlYWRpbmcgdW50aWwgRUFHQUlO IG9yIEVXT1VMREJMT0NLLgotCSAqIEFsc28sIG1ha2UgYm90aCBGRHMgY2xvc2Utb24tZXhl Yywgc2luY2Ugd2Ugc3VyZWx5IGRvIG5vdCB3YW50IGFueQotCSAqIGNoaWxkIHByb2Nlc3Nl cyBtZXNzaW5nIHdpdGggdGhlbS4KKwkgKiBwb2xsKCkvZXBvbGxfd2FpdCgpIGluIFdhaXRJ bnRlcnJ1cHQuIE1ha2UgdGhlIHdyaXRlLWVuZCBub24tYmxvY2tpbmcsCisJICogc28gdGhh dCBTZW5kSW50ZXJydXB0IHdvbid0IGJsb2NrIGlmIHRoZSBldmVudCBoYXMgYWxyZWFkeSBi ZWVuIHNldAorCSAqIG1hbnkgdGltZXMgZmlsbGluZyB0aGUga2VybmVsIGJ1ZmZlci4gTWFr ZSB0aGUgcmVhZC1lbmQgbm9uLWJsb2NraW5nCisJICogdG9vLCBzbyB0aGF0IHdlIGNhbiBl YXNpbHkgY2xlYXIgdGhlIHBpcGUgYnkgcmVhZGluZyB1bnRpbCBFQUdBSU4gb3IKKwkgKiBF V09VTERCTE9DSy4gQWxzbywgbWFrZSBib3RoIEZEcyBjbG9zZS1vbi1leGVjLCBzaW5jZSB3 ZSBzdXJlbHkgZG8gbm90CisJICogd2FudCBhbnkgY2hpbGQgcHJvY2Vzc2VzIG1lc3Npbmcg d2l0aCB0aGVtLgogCSAqLwogCWlmIChwaXBlKHBpcGVmZCkgPCAwKQogCQllbG9nKEZBVEFM LCAicGlwZSgpIGZhaWxlZDogJW0iKTsKQEAgLTMwMiw3ICszMjYsNyBAQCBJbml0aWFsaXpl TGF0Y2hTdXBwb3J0KHZvaWQpCiAJUmVzZXJ2ZUV4dGVybmFsRkQoKTsKIAlSZXNlcnZlRXh0 ZXJuYWxGRCgpOwogCi0JcHFzaWduYWwoU0lHVVJHLCBsYXRjaF9zaWd1cmdfaGFuZGxlcik7 CisJcHFzaWduYWwoU0lHVVJHLCBpbnRlcnJ1cHRfc2lndXJnX2hhbmRsZXIpOwogI2VuZGlm CiAKICNpZmRlZiBXQUlUX1VTRV9TSUdOQUxGRApAQCAtMzQwLDM3ICszNjQsNDMgQEAgSW5p dGlhbGl6ZUxhdGNoU3VwcG9ydCh2b2lkKQogCS8qIElnbm9yZSBTSUdVUkcsIGJlY2F1c2Ug d2UnbGwgcmVjZWl2ZSBpdCB2aWEga3F1ZXVlLiAqLwogCXBxc2lnbmFsKFNJR1VSRywgU0lH X0lHTik7CiAjZW5kaWYKKworI2lmZGVmIFdBSVRfVVNFX1dJTjMyCisJTG9jYWxJbnRlcnJ1 cHRXYWtldXBFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKTsK KwlpZiAoTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudCA9PSBOVUxMKQorCQllbG9nKEVSUk9S LCAiQ3JlYXRlRXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigp KTsKKyNlbmRpZgogfQogCiB2b2lkCi1Jbml0aWFsaXplTGF0Y2hXYWl0U2V0KHZvaWQpCitJ bml0aWFsaXplSW50ZXJydXB0V2FpdFNldCh2b2lkKQogewotCWludAkJCWxhdGNoX3BvcyBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisJaW50CQkJaW50ZXJydXB0X3BvcyBQR19VU0VE X0ZPUl9BU1NFUlRTX09OTFk7CiAKLQlBc3NlcnQoTGF0Y2hXYWl0U2V0ID09IE5VTEwpOwor CUFzc2VydChJbnRlcnJ1cHRXYWl0U2V0ID09IE5VTEwpOwogCi0JLyogU2V0IHVwIHRoZSBX YWl0RXZlbnRTZXQgdXNlZCBieSBXYWl0TGF0Y2goKS4gKi8KLQlMYXRjaFdhaXRTZXQgPSBD cmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgMik7Ci0JbGF0Y2hfcG9zID0gQWRkV2FpdEV2ZW50 VG9TZXQoTGF0Y2hXYWl0U2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0J CQkJCQkJCSAgTXlMYXRjaCwgTlVMTCk7CisJLyogU2V0IHVwIHRoZSBXYWl0RXZlbnRTZXQg dXNlZCBieSBXYWl0SW50ZXJydXB0KCkuICovCisJSW50ZXJydXB0V2FpdFNldCA9IENyZWF0 ZVdhaXRFdmVudFNldChOVUxMLCAyKTsKKwlpbnRlcnJ1cHRfcG9zID0gQWRkV2FpdEV2ZW50 VG9TZXQoSW50ZXJydXB0V2FpdFNldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VU LAorCQkJCQkJCQkJICAwLCBOVUxMKTsKIAlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCi0JCUFk ZFdhaXRFdmVudFRvU2V0KExhdGNoV2FpdFNldCwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJ CQkJCSAgUEdJTlZBTElEX1NPQ0tFVCwgTlVMTCwgTlVMTCk7CisJCUFkZFdhaXRFdmVudFRv U2V0KEludGVycnVwdFdhaXRTZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgIFBH SU5WQUxJRF9TT0NLRVQsIDAsIE5VTEwpOwogCi0JQXNzZXJ0KGxhdGNoX3BvcyA9PSBMYXRj aFdhaXRTZXRMYXRjaFBvcyk7CisJQXNzZXJ0KGludGVycnVwdF9wb3MgPT0gSW50ZXJydXB0 V2FpdFNldEludGVycnVwdFBvcyk7CiB9CiAKIHZvaWQKLVNodXRkb3duTGF0Y2hTdXBwb3J0 KHZvaWQpCitTaHV0ZG93bldhaXRFdmVudFN1cHBvcnQodm9pZCkKIHsKICNpZiBkZWZpbmVk KFdBSVRfVVNFX1BPTEwpCiAJcHFzaWduYWwoU0lHVVJHLCBTSUdfSUdOKTsKICNlbmRpZgog Ci0JaWYgKExhdGNoV2FpdFNldCkKKwlpZiAoSW50ZXJydXB0V2FpdFNldCkKIAl7Ci0JCUZy ZWVXYWl0RXZlbnRTZXQoTGF0Y2hXYWl0U2V0KTsKLQkJTGF0Y2hXYWl0U2V0ID0gTlVMTDsK KwkJRnJlZVdhaXRFdmVudFNldChJbnRlcnJ1cHRXYWl0U2V0KTsKKwkJSW50ZXJydXB0V2Fp dFNldCA9IE5VTEw7CiAJfQogCiAjaWYgZGVmaW5lZChXQUlUX1VTRV9TRUxGX1BJUEUpCkBA IC0zODgsMTM0ICs0MTgsMjQgQEAgU2h1dGRvd25MYXRjaFN1cHBvcnQodm9pZCkKIH0KIAog LyoKLSAqIEluaXRpYWxpemUgYSBwcm9jZXNzLWxvY2FsIGxhdGNoLgotICovCi12b2lkCi1J bml0TGF0Y2goTGF0Y2ggKmxhdGNoKQotewotCWxhdGNoLT5pc19zZXQgPSBmYWxzZTsKLQls YXRjaC0+bWF5YmVfc2xlZXBpbmcgPSBmYWxzZTsKLQlsYXRjaC0+b3duZXJfcGlkID0gTXlQ cm9jUGlkOwotCWxhdGNoLT5pc19zaGFyZWQgPSBmYWxzZTsKLQotI2lmIGRlZmluZWQoV0FJ VF9VU0VfU0VMRl9QSVBFKQotCS8qIEFzc2VydCBJbml0aWFsaXplTGF0Y2hTdXBwb3J0IGhh cyBiZWVuIGNhbGxlZCBpbiB0aGlzIHByb2Nlc3MgKi8KLQlBc3NlcnQoc2VsZnBpcGVfcmVh ZGZkID49IDAgJiYgc2VsZnBpcGVfb3duZXJfcGlkID09IE15UHJvY1BpZCk7Ci0jZWxpZiBk ZWZpbmVkKFdBSVRfVVNFX1NJR05BTEZEKQotCS8qIEFzc2VydCBJbml0aWFsaXplTGF0Y2hT dXBwb3J0IGhhcyBiZWVuIGNhbGxlZCBpbiB0aGlzIHByb2Nlc3MgKi8KLQlBc3NlcnQoc2ln bmFsX2ZkID49IDApOwotI2VsaWYgZGVmaW5lZChXQUlUX1VTRV9XSU4zMikKLQlsYXRjaC0+ ZXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7Ci0JaWYgKGxh dGNoLT5ldmVudCA9PSBOVUxMKQotCQllbG9nKEVSUk9SLCAiQ3JlYXRlRXZlbnQgZmFpbGVk OiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKLSNlbmRpZgkJCQkJCQkvKiBX SU4zMiAqLwotfQotCi0vKgotICogSW5pdGlhbGl6ZSBhIHNoYXJlZCBsYXRjaCB0aGF0IGNh biBiZSBzZXQgZnJvbSBvdGhlciBwcm9jZXNzZXMuIFRoZSBsYXRjaAotICogaXMgaW5pdGlh bGx5IG93bmVkIGJ5IG5vLW9uZTsgdXNlIE93bkxhdGNoIHRvIGFzc29jaWF0ZSBpdCB3aXRo IHRoZQotICogY3VycmVudCBwcm9jZXNzLgotICoKLSAqIEluaXRTaGFyZWRMYXRjaCBuZWVk cyB0byBiZSBjYWxsZWQgaW4gcG9zdG1hc3RlciBiZWZvcmUgZm9ya2luZyBjaGlsZAotICog cHJvY2Vzc2VzLCB1c3VhbGx5IHJpZ2h0IGFmdGVyIGFsbG9jYXRpbmcgdGhlIHNoYXJlZCBt ZW1vcnkgYmxvY2sKLSAqIGNvbnRhaW5pbmcgdGhlIGxhdGNoIHdpdGggU2htZW1Jbml0U3Ry dWN0LiAoVGhlIFVuaXggaW1wbGVtZW50YXRpb24KLSAqIGRvZXNuJ3QgYWN0dWFsbHkgcmVx dWlyZSB0aGF0LCBidXQgdGhlIFdpbmRvd3Mgb25lIGRvZXMuKSBCZWNhdXNlIG9mCi0gKiB0 aGlzIHJlc3RyaWN0aW9uLCB3ZSBoYXZlIG5vIGNvbmN1cnJlbmN5IGlzc3VlcyB0byB3b3Jy eSBhYm91dCBoZXJlLgotICoKLSAqIE5vdGUgdGhhdCBvdGhlciBoYW5kbGVzIGNyZWF0ZWQg aW4gdGhpcyBtb2R1bGUgYXJlIG5ldmVyIG1hcmtlZCBhcwotICogaW5oZXJpdGFibGUuICBU aHVzIHdlIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNsZWFuaW5nIHVwIGNoaWxkCi0g KiBwcm9jZXNzIHJlZmVyZW5jZXMgdG8gcG9zdG1hc3Rlci1wcml2YXRlIGxhdGNoZXMgb3Ig V2FpdEV2ZW50U2V0cy4KLSAqLwotdm9pZAotSW5pdFNoYXJlZExhdGNoKExhdGNoICpsYXRj aCkKLXsKLSNpZmRlZiBXSU4zMgotCVNFQ1VSSVRZX0FUVFJJQlVURVMgc2E7Ci0KLQkvKgot CSAqIFNldCB1cCBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIHNwZWNpZnkgdGhhdCB0aGUgZXZl bnRzIGFyZSBpbmhlcml0ZWQuCi0JICovCi0JWmVyb01lbW9yeSgmc2EsIHNpemVvZihzYSkp OwotCXNhLm5MZW5ndGggPSBzaXplb2Yoc2EpOwotCXNhLmJJbmhlcml0SGFuZGxlID0gVFJV RTsKLQotCWxhdGNoLT5ldmVudCA9IENyZWF0ZUV2ZW50KCZzYSwgVFJVRSwgRkFMU0UsIE5V TEwpOwotCWlmIChsYXRjaC0+ZXZlbnQgPT0gTlVMTCkKLQkJZWxvZyhFUlJPUiwgIkNyZWF0 ZUV2ZW50IGZhaWxlZDogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7Ci0jZW5k aWYKLQotCWxhdGNoLT5pc19zZXQgPSBmYWxzZTsKLQlsYXRjaC0+bWF5YmVfc2xlZXBpbmcg PSBmYWxzZTsKLQlsYXRjaC0+b3duZXJfcGlkID0gMDsKLQlsYXRjaC0+aXNfc2hhcmVkID0g dHJ1ZTsKLX0KLQotLyoKLSAqIEFzc29jaWF0ZSBhIHNoYXJlZCBsYXRjaCB3aXRoIHRoZSBj dXJyZW50IHByb2Nlc3MsIGFsbG93aW5nIGl0IHRvCi0gKiB3YWl0IG9uIHRoZSBsYXRjaC4K LSAqCi0gKiBBbHRob3VnaCB0aGVyZSBpcyBhIHNhbml0eSBjaGVjayBmb3IgbGF0Y2gtYWxy ZWFkeS1vd25lZCwgd2UgZG9uJ3QgZG8KLSAqIGFueSBzb3J0IG9mIGxvY2tpbmcgaGVyZSwg bWVhbmluZyB0aGF0IHdlIGNvdWxkIGZhaWwgdG8gZGV0ZWN0IHRoZSBlcnJvcgotICogaWYg dHdvIHByb2Nlc3NlcyB0cnkgdG8gb3duIHRoZSBzYW1lIGxhdGNoIGF0IGFib3V0IHRoZSBz YW1lIHRpbWUuICBJZgotICogdGhlcmUgaXMgYW55IHJpc2sgb2YgdGhhdCwgY2FsbGVyIG11 c3QgcHJvdmlkZSBhbiBpbnRlcmxvY2sgdG8gcHJldmVudCBpdC4KLSAqLwotdm9pZAotT3du TGF0Y2goTGF0Y2ggKmxhdGNoKQotewotCWludAkJCW93bmVyX3BpZDsKLQotCS8qIFNhbml0 eSBjaGVja3MgKi8KLQlBc3NlcnQobGF0Y2gtPmlzX3NoYXJlZCk7Ci0KLSNpZiBkZWZpbmVk KFdBSVRfVVNFX1NFTEZfUElQRSkKLQkvKiBBc3NlcnQgSW5pdGlhbGl6ZUxhdGNoU3VwcG9y dCBoYXMgYmVlbiBjYWxsZWQgaW4gdGhpcyBwcm9jZXNzICovCi0JQXNzZXJ0KHNlbGZwaXBl X3JlYWRmZCA+PSAwICYmIHNlbGZwaXBlX293bmVyX3BpZCA9PSBNeVByb2NQaWQpOwotI2Vs aWYgZGVmaW5lZChXQUlUX1VTRV9TSUdOQUxGRCkKLQkvKiBBc3NlcnQgSW5pdGlhbGl6ZUxh dGNoU3VwcG9ydCBoYXMgYmVlbiBjYWxsZWQgaW4gdGhpcyBwcm9jZXNzICovCi0JQXNzZXJ0 KHNpZ25hbF9mZCA+PSAwKTsKLSNlbmRpZgotCi0Jb3duZXJfcGlkID0gbGF0Y2gtPm93bmVy X3BpZDsKLQlpZiAob3duZXJfcGlkICE9IDApCi0JCWVsb2coUEFOSUMsICJsYXRjaCBhbHJl YWR5IG93bmVkIGJ5IFBJRCAlZCIsIG93bmVyX3BpZCk7Ci0KLQlsYXRjaC0+b3duZXJfcGlk ID0gTXlQcm9jUGlkOwotfQotCi0vKgotICogRGlzb3duIGEgc2hhcmVkIGxhdGNoIGN1cnJl bnRseSBvd25lZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLgotICovCi12b2lkCi1EaXNvd25M YXRjaChMYXRjaCAqbGF0Y2gpCi17Ci0JQXNzZXJ0KGxhdGNoLT5pc19zaGFyZWQpOwotCUFz c2VydChsYXRjaC0+b3duZXJfcGlkID09IE15UHJvY1BpZCk7Ci0KLQlsYXRjaC0+b3duZXJf cGlkID0gMDsKLX0KLQotLyoKLSAqIFdhaXQgZm9yIGEgZ2l2ZW4gbGF0Y2ggdG8gYmUgc2V0 LCBvciBmb3IgcG9zdG1hc3RlciBkZWF0aCwgb3IgdW50aWwgdGltZW91dAotICogaXMgZXhj ZWVkZWQuICd3YWtlRXZlbnRzJyBpcyBhIGJpdG1hc2sgdGhhdCBzcGVjaWZpZXMgd2hpY2gg b2YgdGhvc2UgZXZlbnRzCi0gKiB0byB3YWl0IGZvci4gSWYgdGhlIGxhdGNoIGlzIGFscmVh ZHkgc2V0IChhbmQgV0xfTEFUQ0hfU0VUIGlzIGdpdmVuKSwgdGhlCi0gKiBmdW5jdGlvbiBy ZXR1cm5zIGltbWVkaWF0ZWx5LgorICogV2FpdCBmb3IgYW55IG9mIHRoZSBpbnRlcnJ1cHRz IGluIGludGVycnVwdE1hc2sgdG8gYmUgc2V0LCBvciBmb3IKKyAqIHBvc3RtYXN0ZXIgZGVh dGgsIG9yIHVudGlsIHRpbWVvdXQgaXMgZXhjZWVkZWQuICd3YWtlRXZlbnRzJyBpcyBhIGJp dG1hc2sKKyAqIHRoYXQgc3BlY2lmaWVzIHdoaWNoIG9mIHRob3NlIGV2ZW50cyB0byB3YWl0 IGZvci4gSWYgdGhlIGludGVycnVwdCBpcworICogYWxyZWFkeSBwZW5kaW5nIChhbmQgV0xf SU5URVJSVVBUIGlzIGdpdmVuKSwgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAqIGltbWVkaWF0 ZWx5LgogICoKICAqIFRoZSAidGltZW91dCIgaXMgZ2l2ZW4gaW4gbWlsbGlzZWNvbmRzLiBJ dCBtdXN0IGJlID49IDAgaWYgV0xfVElNRU9VVCBmbGFnCiAgKiBpcyBnaXZlbi4gIEFsdGhv dWdoIGl0IGlzIGRlY2xhcmVkIGFzICJsb25nIiwgd2UgZG9uJ3QgYWN0dWFsbHkgc3VwcG9y dAogICogdGltZW91dHMgbG9uZ2VyIHRoYW4gSU5UX01BWCBtaWxsaXNlY29uZHMuICBOb3Rl IHRoYXQgc29tZSBleHRyYSBvdmVyaGVhZAogICogaXMgaW5jdXJyZWQgd2hlbiBXTF9USU1F T1VUIGlzIGdpdmVuLCBzbyBhdm9pZCB1c2luZyBhIHRpbWVvdXQgaWYgcG9zc2libGUuCiAg KgotICogVGhlIGxhdGNoIG11c3QgYmUgb3duZWQgYnkgdGhlIGN1cnJlbnQgcHJvY2Vzcywg aWUuIGl0IG11c3QgYmUgYQotICogcHJvY2Vzcy1sb2NhbCBsYXRjaCBpbml0aWFsaXplZCB3 aXRoIEluaXRMYXRjaCwgb3IgYSBzaGFyZWQgbGF0Y2gKLSAqIGFzc29jaWF0ZWQgd2l0aCB0 aGUgY3VycmVudCBwcm9jZXNzIGJ5IGNhbGxpbmcgT3duTGF0Y2guCi0gKgogICogUmV0dXJu cyBiaXQgbWFzayBpbmRpY2F0aW5nIHdoaWNoIGNvbmRpdGlvbihzKSBjYXVzZWQgdGhlIHdh a2UtdXAuIE5vdGUKICAqIHRoYXQgaWYgbXVsdGlwbGUgd2FrZS11cCBjb25kaXRpb25zIGFy ZSB0cnVlLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdAogICogd2UgcmV0dXJuIGFsbCBv ZiB0aGVtIGluIG9uZSBjYWxsLCBidXQgd2Ugd2lsbCByZXR1cm4gYXQgbGVhc3Qgb25lLgog ICovCiBpbnQKLVdhaXRMYXRjaChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBsb25n IHRpbWVvdXQsCi0JCSAgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKK1dhaXRJbnRlcnJ1cHQo dWludDMyIGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBsb25nIHRpbWVvdXQsCisJ CQkgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiB7CiAJV2FpdEV2ZW50CWV2ZW50OwogCkBA IC01MjUsMTcgKzQ0NSwxNyBAQCBXYWl0TGF0Y2goTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2 ZW50cywgbG9uZyB0aW1lb3V0LAogCQkgICAod2FrZUV2ZW50cyAmIFdMX1BPU1RNQVNURVJf REVBVEgpKTsKIAogCS8qCi0JICogU29tZSBjYWxsZXJzIG1heSBoYXZlIGEgbGF0Y2ggb3Ro ZXIgdGhhbiBNeUxhdGNoLCBvciBubyBsYXRjaCBhdCBhbGwsCi0JICogb3Igd2FudCB0byBo YW5kbGUgcG9zdG1hc3RlciBkZWF0aCBkaWZmZXJlbnRseS4gIEl0J3MgY2hlYXAgdG8gYXNz aWduCi0JICogdGhvc2UsIHNvIGp1c3QgZG8gaXQgZXZlcnkgdGltZS4KKwkgKiBTb21lIGNh bGxlcnMgbWF5IGhhdmUgYW4gaW50ZXJydXB0IG1hc2sgZGlmZmVyZW50IGZyb20gbGFzdCB0 aW1lLCBvciBubworCSAqIGludGVycnVwdCBtYXNrIGF0IGFsbCwgb3Igd2FudCB0byBoYW5k bGUgcG9zdG1hc3RlciBkZWF0aCBkaWZmZXJlbnRseS4KKwkgKiBJdCdzIGNoZWFwIHRvIGFz c2lnbiB0aG9zZSwgc28ganVzdCBkbyBpdCBldmVyeSB0aW1lLgogCSAqLwotCWlmICghKHdh a2VFdmVudHMgJiBXTF9MQVRDSF9TRVQpKQotCQlsYXRjaCA9IE5VTEw7Ci0JTW9kaWZ5V2Fp dEV2ZW50KExhdGNoV2FpdFNldCwgTGF0Y2hXYWl0U2V0TGF0Y2hQb3MsIFdMX0xBVENIX1NF VCwgbGF0Y2gpOwotCUxhdGNoV2FpdFNldC0+ZXhpdF9vbl9wb3N0bWFzdGVyX2RlYXRoID0K KwlpZiAoISh3YWtlRXZlbnRzICYgV0xfSU5URVJSVVBUKSkKKwkJaW50ZXJydXB0TWFzayA9 IDA7CisJTW9kaWZ5V2FpdEV2ZW50KEludGVycnVwdFdhaXRTZXQsIEludGVycnVwdFdhaXRT ZXRJbnRlcnJ1cHRQb3MsIFdMX0lOVEVSUlVQVCwgaW50ZXJydXB0TWFzayk7CisJSW50ZXJy dXB0V2FpdFNldC0+ZXhpdF9vbl9wb3N0bWFzdGVyX2RlYXRoID0KIAkJKCh3YWtlRXZlbnRz ICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkgIT0gMCk7CiAKLQlpZiAoV2FpdEV2ZW50U2V0V2Fp dChMYXRjaFdhaXRTZXQsCisJaWYgKFdhaXRFdmVudFNldFdhaXQoSW50ZXJydXB0V2FpdFNl dCwKIAkJCQkJCSAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91dCA6IC0xLAog CQkJCQkJICZldmVudCwgMSwKIAkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09IDApCkBAIC01 NDUsNyArNDY1LDcgQEAgV2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMs IGxvbmcgdGltZW91dCwKIH0KIAogLyoKLSAqIExpa2UgV2FpdExhdGNoLCBidXQgd2l0aCBh biBleHRyYSBzb2NrZXQgYXJndW1lbnQgZm9yIFdMX1NPQ0tFVF8qCisgKiBMaWtlIFdhaXRJ bnRlcnJ1cHQsIGJ1dCB3aXRoIGFuIGV4dHJhIHNvY2tldCBhcmd1bWVudCBmb3IgV0xfU09D S0VUXyoKICAqIGNvbmRpdGlvbnMuCiAgKgogICogV2hlbiB3YWl0aW5nIG9uIGEgc29ja2V0 LCBFT0YgYW5kIGVycm9yIGNvbmRpdGlvbnMgYWx3YXlzIGNhdXNlIHRoZSBzb2NrZXQKQEAg LTU1OCwxMiArNDc4LDEyIEBAIFdhaXRMYXRjaChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZl bnRzLCBsb25nIHRpbWVvdXQsCiAgKiB3aGVyZSBzb21lIGJlaGF2aW9yIG90aGVyIHRoYW4g aW1tZWRpYXRlIGV4aXQgaXMgbmVlZGVkLgogICoKICAqIE5COiBUaGVzZSBkYXlzIHRoaXMg aXMganVzdCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBXYWl0RXZlbnRTZXQgQVBJLiBXaGVuCi0g KiB1c2luZyBhIGxhdGNoIHZlcnkgZnJlcXVlbnRseSwgY29uc2lkZXIgY3JlYXRpbmcgYSBs b25nZXIgbGl2aW5nCisgKiB1c2luZyBhbiBpbnRlcnJ1cHQgdmVyeSBmcmVxdWVudGx5LCBj b25zaWRlciBjcmVhdGluZyBhIGxvbmdlciBsaXZpbmcKICAqIFdhaXRFdmVudFNldCBpbnN0 ZWFkOyB0aGF0J3MgbW9yZSBlZmZpY2llbnQuCiAgKi8KIGludAotV2FpdExhdGNoT3JTb2Nr ZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQgc29jaywKLQkJCQkg IGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKK1dhaXRJbnRlcnJ1cHRP clNvY2tldCh1aW50MzIgaW50ZXJydXB0TWFzaywgaW50IHdha2VFdmVudHMsIHBnc29ja2V0 IHNvY2ssCisJCQkJCSAgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQog ewogCWludAkJCXJldCA9IDA7CiAJaW50CQkJcmM7CkBAIC01NzUsOSArNDk1LDkgQEAgV2Fp dExhdGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQg c29jaywKIAllbHNlCiAJCXRpbWVvdXQgPSAtMTsKIAotCWlmICh3YWtlRXZlbnRzICYgV0xf TEFUQ0hfU0VUKQotCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0xBVENIX1NFVCwgUEdJ TlZBTElEX1NPQ0tFVCwKLQkJCQkJCSAgbGF0Y2gsIE5VTEwpOworCWlmICh3YWtlRXZlbnRz ICYgV0xfSU5URVJSVVBUKQorCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0lOVEVSUlVQ VCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJCSAgaW50ZXJydXB0TWFzaywgTlVMTCk7CiAK IAkvKiBQb3N0bWFzdGVyLW1hbmFnZWQgY2FsbGVycyBtdXN0IGhhbmRsZSBwb3N0bWFzdGVy IGRlYXRoIHNvbWVob3cuICovCiAJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3RlciB8fApAQCAt NTg2LDE4ICs1MDYsMTggQEAgV2FpdExhdGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQg d2FrZUV2ZW50cywgcGdzb2NrZXQgc29jaywKIAogCWlmICgod2FrZUV2ZW50cyAmIFdMX1BP U1RNQVNURVJfREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVyKQogCQlBZGRXYWl0RXZlbnRU b1NldChzZXQsIFdMX1BPU1RNQVNURVJfREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJ CQkgIE5VTEwsIE5VTEwpOworCQkJCQkJICAwLCBOVUxMKTsKIAogCWlmICgod2FrZUV2ZW50 cyAmIFdMX0VYSVRfT05fUE1fREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVyKQogCQlBZGRX YWl0RXZlbnRUb1NldChzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NL RVQsCi0JCQkJCQkgIE5VTEwsIE5VTEwpOworCQkJCQkJICAwLCBOVUxMKTsKIAogCWlmICh3 YWtlRXZlbnRzICYgV0xfU09DS0VUX01BU0spCiAJewogCQlpbnQJCQlldjsKIAogCQlldiA9 IHdha2VFdmVudHMgJiBXTF9TT0NLRVRfTUFTSzsKLQkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0 LCBldiwgc29jaywgTlVMTCwgTlVMTCk7CisJCUFkZFdhaXRFdmVudFRvU2V0KHNldCwgZXYs IHNvY2ssIDAsIE5VTEwpOwogCX0KIAogCXJjID0gV2FpdEV2ZW50U2V0V2FpdChzZXQsIHRp bWVvdXQsICZldmVudCwgMSwgd2FpdF9ldmVudF9pbmZvKTsKQEAgLTYwNiw3ICs1MjYsNyBA QCBXYWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBwZ3Nv Y2tldCBzb2NrLAogCQlyZXQgfD0gV0xfVElNRU9VVDsKIAllbHNlCiAJewotCQlyZXQgfD0g ZXZlbnQuZXZlbnRzICYgKFdMX0xBVENIX1NFVCB8CisJCXJldCB8PSBldmVudC5ldmVudHMg JiAoV0xfSU5URVJSVVBUIHwKIAkJCQkJCQkgICBXTF9QT1NUTUFTVEVSX0RFQVRIIHwKIAkJ CQkJCQkgICBXTF9TT0NLRVRfTUFTSyk7CiAJfQpAQCAtNjE3LDEyNSArNTM3LDQ3IEBAIFdh aXRMYXRjaE9yU29ja2V0KExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIHBnc29ja2V0 IHNvY2ssCiB9CiAKIC8qCi0gKiBTZXRzIGEgbGF0Y2ggYW5kIHdha2VzIHVwIGFueW9uZSB3 YWl0aW5nIG9uIGl0LgorICogV2FrZSB1cCBteSBwcm9jZXNzIGlmIGl0J3MgY3VycmVudGx5 IHdhaXRpbmcuCiAgKgotICogVGhpcyBpcyBjaGVhcCBpZiB0aGUgbGF0Y2ggaXMgYWxyZWFk eSBzZXQsIG90aGVyd2lzZSBub3Qgc28gbXVjaC4KLSAqCi0gKiBOQjogd2hlbiBjYWxsaW5n IHRoaXMgaW4gYSBzaWduYWwgaGFuZGxlciwgYmUgc3VyZSB0byBzYXZlIGFuZCByZXN0b3Jl Ci0gKiBlcnJubyBhcm91bmQgaXQuICAoVGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlIGluIG1v c3Qgc2lnbmFsIGhhbmRsZXJzLCBvZgotICogY291cnNlLCBidXQgd2UgdXNlZCB0byBvbWl0 IGl0IGluIGhhbmRsZXJzIHRoYXQgb25seSBzZXQgYSBmbGFnLikKKyAqIE5COiBiZSBzdXJl IHRvIHNhdmUgYW5kIHJlc3RvcmUgZXJybm8gYXJvdW5kIGl0LiAgKFRoYXQncyBzdGFuZGFy ZCBwcmFjdGljZQorICogaW4gbW9zdCBzaWduYWwgaGFuZGxlcnMsIG9mIGNvdXJzZSwgYnV0 IHdlIHVzZWQgdG8gb21pdCBpdCBpbiBoYW5kbGVycyB0aGF0CisgKiBvbmx5IHNldCBhIGZs YWcuKSBYWFgKICAqCiAgKiBOQjogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBjcml0 aWNhbCBzZWN0aW9ucyBhbmQgc2lnbmFsIGhhbmRsZXJzIHNvCiAgKiB0aHJvd2luZyBhbiBl cnJvciBpcyBub3QgYSBnb29kIGlkZWEuCiAgKi8KIHZvaWQKLVNldExhdGNoKExhdGNoICps YXRjaCkKK1dha2V1cE15UHJvYyh2b2lkKQogewogI2lmbmRlZiBXSU4zMgotCXBpZF90CQlv d25lcl9waWQ7Ci0jZWxzZQotCUhBTkRMRQkJaGFuZGxlOwotI2VuZGlmCi0KLQkvKgotCSAq IFRoZSBtZW1vcnkgYmFycmllciBoYXMgdG8gYmUgcGxhY2VkIGhlcmUgdG8gZW5zdXJlIHRo YXQgYW55IGZsYWcKLQkgKiB2YXJpYWJsZXMgcG9zc2libHkgY2hhbmdlZCBieSB0aGlzIHBy b2Nlc3MgaGF2ZSBiZWVuIGZsdXNoZWQgdG8gbWFpbgotCSAqIG1lbW9yeSwgYmVmb3JlIHdl IGNoZWNrL3NldCBpc19zZXQuCi0JICovCi0JcGdfbWVtb3J5X2JhcnJpZXIoKTsKLQotCS8q IFF1aWNrIGV4aXQgaWYgYWxyZWFkeSBzZXQgKi8KLQlpZiAobGF0Y2gtPmlzX3NldCkKLQkJ cmV0dXJuOwotCi0JbGF0Y2gtPmlzX3NldCA9IHRydWU7Ci0KLQlwZ19tZW1vcnlfYmFycmll cigpOwotCWlmICghbGF0Y2gtPm1heWJlX3NsZWVwaW5nKQotCQlyZXR1cm47Ci0KLSNpZm5k ZWYgV0lOMzIKLQotCS8qCi0JICogU2VlIGlmIGFueW9uZSdzIHdhaXRpbmcgZm9yIHRoZSBs YXRjaC4gSXQgY2FuIGJlIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYKLQkgKiB3ZSdyZSBpbiBh IHNpZ25hbCBoYW5kbGVyLiBXZSB1c2UgdGhlIHNlbGYtcGlwZSBvciBTSUdVUkcgdG8gb3Vy c2VsdmVzCi0JICogdG8gd2FrZSB1cCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soKSB3aXRob3V0 IHJhY2VzIGluIHRoYXQgY2FzZS4gSWYgaXQncwotCSAqIGFub3RoZXIgcHJvY2Vzcywgc2Vu ZCBhIHNpZ25hbC4KLQkgKgotCSAqIEZldGNoIG93bmVyX3BpZCBvbmx5IG9uY2UsIGluIGNh c2UgdGhlIGxhdGNoIGlzIGNvbmN1cnJlbnRseSBnZXR0aW5nCi0JICogb3duZWQgb3IgZGlz b3duZWQuIFhYWDogVGhpcyBhc3N1bWVzIHRoYXQgcGlkX3QgaXMgYXRvbWljLCB3aGljaCBp c24ndAotCSAqIGd1YXJhbnRlZWQgdG8gYmUgdHJ1ZSEgSW4gcHJhY3RpY2UsIHRoZSBlZmZl Y3RpdmUgcmFuZ2Ugb2YgcGlkX3QgZml0cwotCSAqIGluIGEgMzIgYml0IGludGVnZXIsIGFu ZCBzbyBzaG91bGQgYmUgYXRvbWljLiBJbiB0aGUgd29yc3QgY2FzZSwgd2UKLQkgKiBtaWdo dCBlbmQgdXAgc2lnbmFsaW5nIHRoZSB3cm9uZyBwcm9jZXNzLiBFdmVuIHRoZW4sIHlvdSdy ZSB2ZXJ5Ci0JICogdW5sdWNreSBpZiBhIHByb2Nlc3Mgd2l0aCB0aGF0IGJvZ3VzIHBpZCBl eGlzdHMgYW5kIGJlbG9uZ3MgdG8KLQkgKiBQb3N0Z3JlczsgYW5kIFBHIGRhdGFiYXNlIHBy b2Nlc3NlcyBzaG91bGQgaGFuZGxlIGV4Y2VzcyBTSUdVU1IxCi0JICogaW50ZXJydXB0cyB3 aXRob3V0IGEgcHJvYmxlbSBhbnlob3cuCi0JICoKLQkgKiBBbm90aGVyIHNvcnQgb2YgcmFj ZSBjb25kaXRpb24gdGhhdCdzIHBvc3NpYmxlIGhlcmUgaXMgZm9yIGEgbmV3Ci0JICogcHJv Y2VzcyB0byBvd24gdGhlIGxhdGNoIGltbWVkaWF0ZWx5IGFmdGVyIHdlIGxvb2ssIHNvIHdl IGRvbid0IHNpZ25hbAotCSAqIGl0LiBUaGlzIGlzIG9rYXkgc28gbG9uZyBhcyBhbGwgY2Fs bGVycyBvZiBSZXNldExhdGNoL1dhaXRMYXRjaCBmb2xsb3cKLQkgKiB0aGUgc3RhbmRhcmQg Y29kaW5nIGNvbnZlbnRpb24gb2Ygd2FpdGluZyBhdCB0aGUgYm90dG9tIG9mIHRoZWlyIGxv b3BzLAotCSAqIG5vdCB0aGUgdG9wLCBzbyB0aGF0IHRoZXknbGwgY29ycmVjdGx5IHByb2Nl c3MgbGF0Y2gtc2V0dGluZyBldmVudHMKLQkgKiB0aGF0IGhhcHBlbiBiZWZvcmUgdGhleSBl bnRlciB0aGUgbG9vcC4KLQkgKi8KLQlvd25lcl9waWQgPSBsYXRjaC0+b3duZXJfcGlkOwot CWlmIChvd25lcl9waWQgPT0gMCkKLQkJcmV0dXJuOwotCWVsc2UgaWYgKG93bmVyX3BpZCA9 PSBNeVByb2NQaWQpCi0JewogI2lmIGRlZmluZWQoV0FJVF9VU0VfU0VMRl9QSVBFKQotCQlp ZiAod2FpdGluZykKLQkJCXNlbmRTZWxmUGlwZUJ5dGUoKTsKKwlpZiAod2FpdGluZykKKwkJ c2VuZFNlbGZQaXBlQnl0ZSgpOwogI2Vsc2UKLQkJaWYgKHdhaXRpbmcpCi0JCQlraWxsKE15 UHJvY1BpZCwgU0lHVVJHKTsKKwlpZiAod2FpdGluZykKKwkJa2lsbChNeVByb2NQaWQsIFNJ R1VSRyk7CiAjZW5kaWYKLQl9Ci0JZWxzZQotCQlraWxsKG93bmVyX3BpZCwgU0lHVVJHKTsK LQogI2Vsc2UKLQotCS8qCi0JICogU2VlIGlmIGFueW9uZSdzIHdhaXRpbmcgZm9yIHRoZSBs YXRjaC4gSXQgY2FuIGJlIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYKLQkgKiB3ZSdyZSBpbiBh IHNpZ25hbCBoYW5kbGVyLgotCSAqCi0JICogVXNlIGEgbG9jYWwgdmFyaWFibGUgaGVyZSBq dXN0IGluIGNhc2Ugc29tZWJvZHkgY2hhbmdlcyB0aGUgZXZlbnQgZmllbGQKLQkgKiBjb25j dXJyZW50bHkgKHdoaWNoIHJlYWxseSBzaG91bGQgbm90IGhhcHBlbikuCi0JICovCi0JaGFu ZGxlID0gbGF0Y2gtPmV2ZW50OwotCWlmIChoYW5kbGUpCi0JewotCQlTZXRFdmVudChoYW5k bGUpOwotCi0JCS8qCi0JCSAqIE5vdGUgdGhhdCB3ZSBzaWxlbnRseSBpZ25vcmUgYW55IGVy cm9ycy4gV2UgbWlnaHQgYmUgaW4gYSBzaWduYWwKLQkJICogaGFuZGxlciBvciBvdGhlciBj cml0aWNhbCBwYXRoIHdoZXJlIGl0J3Mgbm90IHNhZmUgdG8gY2FsbCBlbG9nKCkuCi0JCSAq LwotCX0KKwlTZXRFdmVudChNeVByb2MgPyBNeVByb2MtPmludGVycnVwdFdha2V1cEV2ZW50 IDogTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudCk7CiAjZW5kaWYKIH0KIAogLyoKLSAqIENs ZWFyIHRoZSBsYXRjaC4gQ2FsbGluZyBXYWl0TGF0Y2ggYWZ0ZXIgdGhpcyB3aWxsIHNsZWVw LCB1bmxlc3MKLSAqIHRoZSBsYXRjaCBpcyBzZXQgYWdhaW4gYmVmb3JlIHRoZSBXYWl0TGF0 Y2ggY2FsbC4KKyAqIFdha2UgdXAgYW5vdGhlciBwcm9jZXNzIGlmIGl0J3MgY3VycmVudGx5 IHdhaXRpbmcuCiAgKi8KIHZvaWQKLVJlc2V0TGF0Y2goTGF0Y2ggKmxhdGNoKQorV2FrZXVw T3RoZXJQcm9jKFBHUFJPQyAqcHJvYykKIHsKLQkvKiBPbmx5IHRoZSBvd25lciBzaG91bGQg cmVzZXQgdGhlIGxhdGNoICovCi0JQXNzZXJ0KGxhdGNoLT5vd25lcl9waWQgPT0gTXlQcm9j UGlkKTsKLQlBc3NlcnQobGF0Y2gtPm1heWJlX3NsZWVwaW5nID09IGZhbHNlKTsKLQotCWxh dGNoLT5pc19zZXQgPSBmYWxzZTsKKyNpZm5kZWYgV0lOMzIKKwlraWxsKHByb2MtPnBpZCwg U0lHVVJHKTsKKyNlbHNlCisJU2V0RXZlbnQocHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQp OwogCiAJLyoKLQkgKiBFbnN1cmUgdGhhdCB0aGUgd3JpdGUgdG8gaXNfc2V0IGdldHMgZmx1 c2hlZCB0byBtYWluIG1lbW9yeSBiZWZvcmUgd2UKLQkgKiBleGFtaW5lIGFueSBmbGFnIHZh cmlhYmxlcy4gIE90aGVyd2lzZSBhIGNvbmN1cnJlbnQgU2V0TGF0Y2ggbWlnaHQKLQkgKiBm YWxzZWx5IGNvbmNsdWRlIHRoYXQgaXQgbmVlZG4ndCBzaWduYWwgdXMsIGV2ZW4gdGhvdWdo IHdlIGhhdmUgbWlzc2VkCi0JICogc2VlaW5nIHNvbWUgZmxhZyB1cGRhdGVzIHRoYXQgU2V0 TGF0Y2ggd2FzIHN1cHBvc2VkIHRvIGluZm9ybSB1cyBvZi4KKwkgKiBOb3RlIHRoYXQgd2Ug c2lsZW50bHkgaWdub3JlIGFueSBlcnJvcnMuIFdlIG1pZ2h0IGJlIGluIGEgc2lnbmFsCisJ ICogaGFuZGxlciBvciBvdGhlciBjcml0aWNhbCBwYXRoIHdoZXJlIGl0J3Mgbm90IHNhZmUg dG8gY2FsbCBlbG9nKCkuCiAJICovCi0JcGdfbWVtb3J5X2JhcnJpZXIoKTsKKyNlbmRpZgog fQogCiAvKgpAQCAtNzk5LDcgKzY0MSw4IEBAIENyZWF0ZVdhaXRFdmVudFNldChSZXNvdXJj ZU93bmVyIHJlc293bmVyLCBpbnQgbmV2ZW50cykKIAlkYXRhICs9IE1BWEFMSUdOKHNpemVv ZihIQU5ETEUpICogbmV2ZW50cyk7CiAjZW5kaWYKIAotCXNldC0+bGF0Y2ggPSBOVUxMOwor CXNldC0+aW50ZXJydXB0X21hc2sgPSAwOworCXNldC0+aW50ZXJydXB0X3BvcyA9IC0xOwog CXNldC0+bmV2ZW50c19zcGFjZSA9IG5ldmVudHM7CiAJc2V0LT5leGl0X29uX3Bvc3RtYXN0 ZXJfZGVhdGggPSBmYWxzZTsKIApAQCAtODg0LDkgKzcyNyw5IEBAIEZyZWVXYWl0RXZlbnRT ZXQoV2FpdEV2ZW50U2V0ICpzZXQpCiAJCSBjdXJfZXZlbnQgPCAoc2V0LT5ldmVudHMgKyBz ZXQtPm5ldmVudHMpOwogCQkgY3VyX2V2ZW50KyspCiAJewotCQlpZiAoY3VyX2V2ZW50LT5l dmVudHMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50cyAmIFdMX0lO VEVSUlVQVCkKIAkJewotCQkJLyogdXNlcyB0aGUgbGF0Y2gncyBIQU5ETEUgKi8KKwkJCS8q IHVzZXMgdGhlIHByb2Nlc3MncyB3YWtldXAgSEFORExFICovCiAJCX0KIAkJZWxzZSBpZiAo Y3VyX2V2ZW50LT5ldmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQl7CkBAIC05MjMs NyArNzY2LDcgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNl dCkKIAogLyogLS0tCiAgKiBBZGQgYW4gZXZlbnQgdG8gdGhlIHNldC4gUG9zc2libGUgZXZl bnRzIGFyZToKLSAqIC0gV0xfTEFUQ0hfU0VUOiBXYWl0IGZvciB0aGUgbGF0Y2ggdG8gYmUg c2V0CisgKiAtIFdMX0lOVEVSUlVQVDogV2FpdCBmb3IgdGhlIGludGVycnVwdCB0byBiZSBz ZXQKICAqIC0gV0xfUE9TVE1BU1RFUl9ERUFUSDogV2FpdCBmb3IgcG9zdG1hc3RlciB0byBk aWUKICAqIC0gV0xfU09DS0VUX1JFQURBQkxFOiBXYWl0IGZvciBzb2NrZXQgdG8gYmVjb21l IHJlYWRhYmxlLAogICoJIGNhbiBiZSBjb21iaW5lZCBpbiBvbmUgZXZlbnQgd2l0aCBvdGhl ciBXTF9TT0NLRVRfKiBldmVudHMKQEAgLTk0MSwxMCArNzg0LDYgQEAgRnJlZVdhaXRFdmVu dFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCkKICAqIFJldHVybnMgdGhlIG9mZnNl dCBpbiBXYWl0RXZlbnRTZXQtPmV2ZW50cyAoc3RhcnRpbmcgZnJvbSAwKSwgd2hpY2ggY2Fu IGJlCiAgKiB1c2VkIHRvIG1vZGlmeSBwcmV2aW91c2x5IGFkZGVkIHdhaXQgZXZlbnRzIHVz aW5nIE1vZGlmeVdhaXRFdmVudCgpLgogICoKLSAqIEluIHRoZSBXTF9MQVRDSF9TRVQgY2Fz ZSB0aGUgbGF0Y2ggbXVzdCBiZSBvd25lZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLAotICog aS5lLiBpdCBtdXN0IGJlIGEgcHJvY2Vzcy1sb2NhbCBsYXRjaCBpbml0aWFsaXplZCB3aXRo IEluaXRMYXRjaCwgb3IgYQotICogc2hhcmVkIGxhdGNoIGFzc29jaWF0ZWQgd2l0aCB0aGUg Y3VycmVudCBwcm9jZXNzIGJ5IGNhbGxpbmcgT3duTGF0Y2guCi0gKgogICogSW4gdGhlIFdM X1NPQ0tFVF9SRUFEQUJMRS9XUklURUFCTEUvQ09OTkVDVEVEL0FDQ0VQVCBjYXNlcywgRU9G IGFuZCBlcnJvcgogICogY29uZGl0aW9ucyBjYXVzZSB0aGUgc29ja2V0IHRvIGJlIHJlcG9y dGVkIGFzIHJlYWRhYmxlL3dyaXRhYmxlL2Nvbm5lY3RlZCwKICAqIHNvIHRoYXQgdGhlIGNh bGxlciBjYW4gZGVhbCB3aXRoIHRoZSBjb25kaXRpb24uCkBAIC05NTQsNyArNzkzLDcgQEAg RnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCkKICAqIGV2ZW50 cy4KICAqLwogaW50Ci1BZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWlu dDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKK0FkZFdhaXRFdmVudFRv U2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRzLCBwZ3NvY2tldCBmZCwgdWlu dDMyIGludGVycnVwdE1hc2ssCiAJCQkJICB2b2lkICp1c2VyX2RhdGEpCiB7CiAJV2FpdEV2 ZW50ICAqZXZlbnQ7CkBAIC05NjgsMTkgKzgwNywxNiBAQCBBZGRXYWl0RXZlbnRUb1NldChX YWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICps YXRjaCwKIAkJc2V0LT5leGl0X29uX3Bvc3RtYXN0ZXJfZGVhdGggPSB0cnVlOwogCX0KIAot CWlmIChsYXRjaCkKLQl7Ci0JCWlmIChsYXRjaC0+b3duZXJfcGlkICE9IE15UHJvY1BpZCkK LQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBhIGxhdGNoIG93bmVkIGJ5IGFub3Ro ZXIgcHJvY2VzcyIpOwotCQlpZiAoc2V0LT5sYXRjaCkKLQkJCWVsb2coRVJST1IsICJjYW5u b3Qgd2FpdCBvbiBtb3JlIHRoYW4gb25lIGxhdGNoIik7Ci0JCWlmICgoZXZlbnRzICYgV0xf TEFUQ0hfU0VUKSAhPSBXTF9MQVRDSF9TRVQpCi0JCQllbG9nKEVSUk9SLCAibGF0Y2ggZXZl bnRzIG9ubHkgc3VwcG9ydCBiZWluZyBzZXQiKTsKLQl9Ci0JZWxzZQorCS8qCisJICogSXQg ZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgdG8gd2FpdCBmb3IgV0xfSU5URVJSVVBUIHdpdGgg ZW1wdHkKKwkgKiBpbnRlcnJ1cHRNYXNrLCBidXQgd2UgYWxsb3cgaXQgc28gdGhhdCB5b3Ug Y2FuIHVzZSBNb2RpZnlFdmVudCB0byBzZXQKKwkgKiB0aGUgaW50ZXJydXB0TWFzayBsYXRl ci4gTm9uLXplcm8gaW50ZXJydXB0TWFzayBkb2Vzbid0IG1ha2Ugc2Vuc2UKKwkgKiB3aXRo b3V0IFdMX0lOVEVSUlVQVCwgaG93ZXZlci4KKwkgKi8KKwlpZiAoaW50ZXJydXB0TWFzayAh PSAwKQogCXsKLQkJaWYgKGV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJCWVsb2coRVJST1Is ICJjYW5ub3Qgd2FpdCBvbiBsYXRjaCB3aXRob3V0IGEgc3BlY2lmaWVkIGxhdGNoIik7CisJ CWlmICgoZXZlbnRzICYgV0xfSU5URVJSVVBUKSAhPSBXTF9JTlRFUlJVUFQpCisJCQllbG9n KEVSUk9SLCAiaW50ZXJydXB0ZWQgZXZlbnRzIG9ubHkgc3VwcG9ydCBiZWluZyBzZXQiKTsK IAl9CiAKIAkvKiB3YWl0aW5nIGZvciBzb2NrZXQgcmVhZGluZXNzIHdpdGhvdXQgYSBzb2Nr ZXQgaW5kaWNhdGVzIGEgYnVnICovCkBAIC05OTYsMTAgKzgzMiwxMCBAQCBBZGRXYWl0RXZl bnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQs IExhdGNoICpsYXRjaCwKIAlldmVudC0+cmVzZXQgPSBmYWxzZTsKICNlbmRpZgogCi0JaWYg KGV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYgKGV2ZW50cyA9PSBXTF9JTlRFUlJVUFQp CiAJewotCQlzZXQtPmxhdGNoID0gbGF0Y2g7Ci0JCXNldC0+bGF0Y2hfcG9zID0gZXZlbnQt PnBvczsKKwkJc2V0LT5pbnRlcnJ1cHRfbWFzayA9IGludGVycnVwdE1hc2s7CisJCXNldC0+ aW50ZXJydXB0X3BvcyA9IGV2ZW50LT5wb3M7CiAjaWYgZGVmaW5lZChXQUlUX1VTRV9TRUxG X1BJUEUpCiAJCWV2ZW50LT5mZCA9IHNlbGZwaXBlX3JlYWRmZDsKICNlbGlmIGRlZmluZWQo V0FJVF9VU0VfU0lHTkFMRkQpCkBAIC0xMDMzLDE0ICs4NjksMTQgQEAgQWRkV2FpdEV2ZW50 VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZkLCBM YXRjaCAqbGF0Y2gsCiB9CiAKIC8qCi0gKiBDaGFuZ2UgdGhlIGV2ZW50IG1hc2sgYW5kLCBp biB0aGUgV0xfTEFUQ0hfU0VUIGNhc2UsIHRoZSBsYXRjaCBhc3NvY2lhdGVkCi0gKiB3aXRo IHRoZSBXYWl0RXZlbnQuICBUaGUgbGF0Y2ggbWF5IGJlIGNoYW5nZWQgdG8gTlVMTCB0byBk aXNhYmxlIHRoZSBsYXRjaAotICogdGVtcG9yYXJpbHksIGFuZCB0aGVuIHNldCBiYWNrIHRv IGEgbGF0Y2ggbGF0ZXIuCisgKiBDaGFuZ2UgdGhlIGV2ZW50IG1hc2sgYW5kLCBpbiB0aGUg V0xfSU5URVJSVVBUIGNhc2UsIHRoZSBpbnRlcnJ1cHQgbWFzaworICogYXNzb2NpYXRlZCB3 aXRoIHRoZSBXYWl0RXZlbnQuICBUaGUgaW50ZXJydXB0IG1hc2sgbWF5IGJlIGNoYW5nZWQg dG8gMCB0bworICogZGlzYWJsZSB0aGUgd2FrZXVwcyBvbiBpbnRlcnJ1cHRzIHRlbXBvcmFy aWx5LCBhbmQgdGhlbiBzZXQgYmFjayBsYXRlci4KICAqCiAgKiAncG9zJyBpcyB0aGUgaWQg cmV0dXJuZWQgYnkgQWRkV2FpdEV2ZW50VG9TZXQuCiAgKi8KIHZvaWQKLU1vZGlmeVdhaXRF dmVudChXYWl0RXZlbnRTZXQgKnNldCwgaW50IHBvcywgdWludDMyIGV2ZW50cywgTGF0Y2gg KmxhdGNoKQorTW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgcG9zLCB1 aW50MzIgZXZlbnRzLCB1aW50MzIgaW50ZXJydXB0TWFzaykKIHsKIAlXYWl0RXZlbnQgICpl dmVudDsKICNpZiBkZWZpbmVkKFdBSVRfVVNFX0tRVUVVRSkKQEAgLTEwNTUsMTkgKzg5MSwx OSBAQCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQz MiBldmVudHMsIExhdGNoICpsYXRjaCkKICNlbmRpZgogCiAJLyoKLQkgKiBJZiBuZWl0aGVy IHRoZSBldmVudCBtYXNrIG5vciB0aGUgYXNzb2NpYXRlZCBsYXRjaCBjaGFuZ2VzLCByZXR1 cm4KLQkgKiBlYXJseS4gVGhhdCdzIGFuIGltcG9ydGFudCBvcHRpbWl6YXRpb24gZm9yIHNv bWUgc29ja2V0cywgd2hlcmUKKwkgKiBJZiBuZWl0aGVyIHRoZSBldmVudCBtYXNrIG5vciB0 aGUgYXNzb2NpYXRlZCBpbnRlcnJ1cHQgbWFzayBjaGFuZ2VzLAorCSAqIHJldHVybiBlYXJs eS4gVGhhdCdzIGFuIGltcG9ydGFudCBvcHRpbWl6YXRpb24gZm9yIHNvbWUgc29ja2V0cywg d2hlcmUKIAkgKiBNb2RpZnlXYWl0RXZlbnQgaXMgZnJlcXVlbnRseSB1c2VkIHRvIHN3aXRj aCBmcm9tIHdhaXRpbmcgZm9yIHJlYWRzIHRvCiAJICogd2FpdGluZyBvbiB3cml0ZXMuCiAJ ICovCiAJaWYgKGV2ZW50cyA9PSBldmVudC0+ZXZlbnRzICYmCi0JCSghKGV2ZW50LT5ldmVu dHMgJiBXTF9MQVRDSF9TRVQpIHx8IHNldC0+bGF0Y2ggPT0gbGF0Y2gpKQorCQkoIShldmVu dC0+ZXZlbnRzICYgV0xfSU5URVJSVVBUKSB8fCBzZXQtPmludGVycnVwdF9tYXNrID09IGlu dGVycnVwdE1hc2spKQogCQlyZXR1cm47CiAKLQlpZiAoZXZlbnQtPmV2ZW50cyAmIFdMX0xB VENIX1NFVCAmJgorCWlmIChldmVudC0+ZXZlbnRzICYgV0xfSU5URVJSVVBUICYmCiAJCWV2 ZW50cyAhPSBldmVudC0+ZXZlbnRzKQogCXsKLQkJZWxvZyhFUlJPUiwgImNhbm5vdCBtb2Rp ZnkgbGF0Y2ggZXZlbnQiKTsKKwkJZWxvZyhFUlJPUiwgImNhbm5vdCBtb2RpZnkgaW50ZXJy dXB0cyBldmVudCIpOwogCX0KIAogCWlmIChldmVudC0+ZXZlbnRzICYgV0xfUE9TVE1BU1RF Ul9ERUFUSCkKQEAgLTEwNzgsMjUgKzkxNCwxOSBAQCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2 ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQzMiBldmVudHMsIExhdGNoICpsYXRjaCkKIAkv KiBGSVhNRTogdmFsaWRhdGUgZXZlbnQgbWFzayAqLwogCWV2ZW50LT5ldmVudHMgPSBldmVu dHM7CiAKLQlpZiAoZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnRzID09IFdM X0lOVEVSUlVQVCkKIAl7Ci0JCWlmIChsYXRjaCAmJiBsYXRjaC0+b3duZXJfcGlkICE9IE15 UHJvY1BpZCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBhIGxhdGNoIG93bmVk IGJ5IGFub3RoZXIgcHJvY2VzcyIpOwotCQlzZXQtPmxhdGNoID0gbGF0Y2g7CisJCXNldC0+ aW50ZXJydXB0X21hc2sgPSBpbnRlcnJ1cHRNYXNrOwogCiAJCS8qCi0JCSAqIE9uIFVuaXgs IHdlIGRvbid0IG5lZWQgdG8gbW9kaWZ5IHRoZSBrZXJuZWwgb2JqZWN0IGJlY2F1c2UgdGhl Ci0JCSAqIHVuZGVybHlpbmcgcGlwZSAoaWYgdGhlcmUgaXMgb25lKSBpcyB0aGUgc2FtZSBm b3IgYWxsIGxhdGNoZXMgc28gd2UKLQkJICogY2FuIHJldHVybiBpbW1lZGlhdGVseS4gIE9u IFdpbmRvd3MsIHdlIG5lZWQgdG8gdXBkYXRlIG91ciBhcnJheSBvZgotCQkgKiBoYW5kbGVz LCBidXQgd2UgbGVhdmUgdGhlIG9sZCBvbmUgaW4gcGxhY2UgYW5kIHRvbGVyYXRlIHNwdXJp b3VzCi0JCSAqIHdha2V1cHMgaWYgdGhlIGxhdGNoIGlzIGRpc2FibGVkLgorCQkgKiBXZSBk b24ndCBib3RoZXIgdG8gYWRqdXN0IHRoZSBldmVudCB3aGVuIHRoZSBpbnRlcnJ1cHQgbWFz aworCQkgKiBjaGFuZ2VzLiAgSXQgbWVhbnMgdGhhdCB3aGVuIGludGVycnVwdCBtYXNrIGlz IHNldCB0byAwLCB3ZSB3aWxsCisJCSAqIGxpc3RlbiBvbiB0aGUga2VybmVsIG9iamVjdCB1 bm5lY2Vzc2FyaWx5LCBhbmQgbWlnaHQgZ2V0IHNvbWUKKwkJICogc3B1cmlvdXMgd2FrZXVw cy4gVGhlIGludGVycnVwdCBzZW5kaW5nIGNvZGUgc2hvdWxkIG5vdCB3YWtlIHVzIHVwCisJ CSAqIGlmIHRoZSBTTEVFUElOR19PTl9JTlRFUlJVUFRTIGJpdCBpcyBub3QgYXJtZWQsIHRo b3VnaCwgc28gaXQKKwkJICogc2hvdWxkIGJlIHJhcmUuCiAJCSAqLwotI2lmIGRlZmluZWQo V0FJVF9VU0VfV0lOMzIpCi0JCWlmICghbGF0Y2gpCi0JCQlyZXR1cm47Ci0jZWxzZQogCQly ZXR1cm47Ci0jZW5kaWYKIAl9CiAKICNpZiBkZWZpbmVkKFdBSVRfVVNFX0VQT0xMKQpAQCAt MTEyNiw5ICs5NTYsOCBAQCBXYWl0RXZlbnRBZGp1c3RFcG9sbChXYWl0RXZlbnRTZXQgKnNl dCwgV2FpdEV2ZW50ICpldmVudCwgaW50IGFjdGlvbikKIAllcG9sbF9ldi5ldmVudHMgPSBF UE9MTEVSUiB8IEVQT0xMSFVQOwogCiAJLyogcHJlcGFyZSBwb2xsZmQgZW50cnkgb25jZSAq LwotCWlmIChldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnQtPmV2 ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlBc3NlcnQoc2V0LT5sYXRjaCAhPSBOVUxM KTsKIAkJZXBvbGxfZXYuZXZlbnRzIHw9IEVQT0xMSU47CiAJfQogCWVsc2UgaWYgKGV2ZW50 LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCkKQEAgLTExNzUsOSArMTAwNCw4IEBA IFdhaXRFdmVudEFkanVzdFBvbGwoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVudCAqZXZl bnQpCiAJcG9sbGZkLT5mZCA9IGV2ZW50LT5mZDsKIAogCS8qIHByZXBhcmUgcG9sbGZkIGVu dHJ5IG9uY2UgKi8KLQlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYg KGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJQXNzZXJ0KHNldC0+bGF0 Y2ggIT0gTlVMTCk7CiAJCXBvbGxmZC0+ZXZlbnRzID0gUE9MTElOOwogCX0KIAllbHNlIGlm IChldmVudC0+ZXZlbnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgpCkBAIC0xMjM5LDkgKzEw NjcsOSBAQCBXYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRQb3N0bWFzdGVyKHN0cnVjdCBrZXZl bnQgKmtfZXYsIFdhaXRFdmVudCAqZXZlbnQpCiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAot V2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkTGF0Y2goc3RydWN0IGtldmVudCAqa19ldiwgV2Fp dEV2ZW50ICpldmVudCkKK1dhaXRFdmVudEFkanVzdEtxdWV1ZUFkZEludGVycnVwdFdha2V1 cChzdHJ1Y3Qga2V2ZW50ICprX2V2LCBXYWl0RXZlbnQgKmV2ZW50KQogewotCS8qIEZvciBu b3cgbGF0Y2ggY2FuIG9ubHkgYmUgYWRkZWQsIG5vdCByZW1vdmVkLiAqLworCS8qIEZvciBu b3cgaW50ZXJydXB0IHdha2V1cCBjYW4gb25seSBiZSBhZGRlZCwgbm90IHJlbW92ZWQuICov CiAJa19ldi0+aWRlbnQgPSBTSUdVUkc7CiAJa19ldi0+ZmlsdGVyID0gRVZGSUxUX1NJR05B TDsKIAlrX2V2LT5mbGFncyA9IEVWX0FERDsKQEAgLTEyNjcsOCArMTA5NSw3IEBAIFdhaXRF dmVudEFkanVzdEtxdWV1ZShXYWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50ICpldmVudCwg aW50IG9sZF9ldmVudHMpCiAJaWYgKG9sZF9ldmVudHMgPT0gZXZlbnQtPmV2ZW50cykKIAkJ cmV0dXJuOwogCi0JQXNzZXJ0KGV2ZW50LT5ldmVudHMgIT0gV0xfTEFUQ0hfU0VUIHx8IHNl dC0+bGF0Y2ggIT0gTlVMTCk7Ci0JQXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hf U0VUIHx8CisJQXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUIHx8CiAJCSAg IGV2ZW50LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCB8fAogCQkgICAoZXZlbnQt PmV2ZW50cyAmIChXTF9TT0NLRVRfUkVBREFCTEUgfAogCQkJCQkJCSBXTF9TT0NLRVRfV1JJ VEVBQkxFIHwKQEAgLTEyODMsMTAgKzExMTAsMTAgQEAgV2FpdEV2ZW50QWRqdXN0S3F1ZXVl KFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50LCBpbnQgb2xkX2V2ZW50cykK IAkJICovCiAJCVdhaXRFdmVudEFkanVzdEtxdWV1ZUFkZFBvc3RtYXN0ZXIoJmtfZXZbY291 bnQrK10sIGV2ZW50KTsKIAl9Ci0JZWxzZSBpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRD SF9TRVQpCisJZWxzZSBpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewot CQkvKiBXZSBkZXRlY3QgbGF0Y2ggd2FrZXVwIHVzaW5nIGEgc2lnbmFsIGV2ZW50LiAqLwot CQlXYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRMYXRjaCgma19ldltjb3VudCsrXSwgZXZlbnQp OworCQkvKiBXZSBkZXRlY3QgaW50ZXJydXB0IHdha2V1cCB1c2luZyBhIHNpZ25hbCBldmVu dC4gKi8KKwkJV2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkSW50ZXJydXB0V2FrZXVwKCZrX2V2 W2NvdW50KytdLCBldmVudCk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMzY0LDEwICsxMTkxLDEz IEBAIFdhaXRFdmVudEFkanVzdFdpbjMyKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQg KmV2ZW50KQogewogCUhBTkRMRQkgICAqaGFuZGxlID0gJnNldC0+aGFuZGxlc1tldmVudC0+ cG9zICsgMV07CiAKLQlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYg KGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJQXNzZXJ0KHNldC0+bGF0 Y2ggIT0gTlVMTCk7Ci0JCSpoYW5kbGUgPSBzZXQtPmxhdGNoLT5ldmVudDsKKwkJLyoKKwkJ ICogV2UgcmVnaXN0ZXIgdGhlIGV2ZW50IGV2ZW4gaWYgaW50ZXJydXB0X21hc2sgaXMgemVy by4gV2UgbWlnaHQgZ2V0CisJCSAqIHNvbWUgc3B1cmlvdXMgd2FrZXVwcywgYnV0IHRoYXQn cyBPSworCQkgKi8KKwkJKmhhbmRsZSA9IE15UHJvYyA/IE15UHJvYy0+aW50ZXJydXB0V2Fr ZXVwRXZlbnQgOiBMb2NhbEludGVycnVwdFdha2V1cEV2ZW50OwogCX0KIAllbHNlIGlmIChl dmVudC0+ZXZlbnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgpCiAJewpAQCAtMTQyMyw2ICsx MjUzLDcgQEAgV2FpdEV2ZW50U2V0V2FpdChXYWl0RXZlbnRTZXQgKnNldCwgbG9uZyB0aW1l b3V0LAogCWluc3RyX3RpbWUJc3RhcnRfdGltZTsKIAlpbnN0cl90aW1lCWN1cl90aW1lOwog CWxvbmcJCWN1cl90aW1lb3V0ID0gLTE7CisJYm9vbAkJc2xlZXBpbmdfZmxhZ19hcm1lZCA9 IGZhbHNlOwogCiAJQXNzZXJ0KG5ldmVudHMgPiAwKTsKIApAQCAtMTQ0NCw2MyArMTI3NSw3 NyBAQCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQs CiAjaWZuZGVmIFdJTjMyCiAJd2FpdGluZyA9IHRydWU7CiAjZWxzZQotCS8qIEVuc3VyZSB0 aGF0IHNpZ25hbHMgYXJlIHNlcnZpY2VkIGV2ZW4gaWYgbGF0Y2ggaXMgYWxyZWFkeSBzZXQg Ki8KKwkvKiBFbnN1cmUgdGhhdCBzaWduYWxzIGFyZSBzZXJ2aWNlZCBldmVuIGlmIGludGVy cnVwdCBpcyBhbHJlYWR5IHBlbmRpbmcgKi8KIAlwZ3dpbjMyX2Rpc3BhdGNoX3F1ZXVlZF9z aWduYWxzKCk7CiAjZW5kaWYKLQl3aGlsZSAocmV0dXJuZWRfZXZlbnRzID09IDApCisKKwkv KgorCSAqIEF0b21pY2FsbHkgY2hlY2sgaWYgdGhlIGludGVycnVwdCBpcyBhbHJlYWR5IHBl bmRpbmcgYW5kIGFkdmVydGlzZSB0aGF0CisJICogd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHNs ZWVwaW5nLiBJZiBpdCB3YXMgYWxyZWFkeSBwZW5kaW5nLCBhdm9pZAorCSAqIGJsb2NraW5n IGFsdG9nZXRoZXIuIFdlIGRvbid0IGF0dGVtcHQgdG8gcmVwb3J0IGFueSBvdGhlciBldmVu dHMgdGhhdAorCSAqIG1pZ2h0IGFsc28gYmUgc2F0aXNmaWVkIGluIHRoYXQgY2FzZS4KKwkg KgorCSAqIElmIHNvbWVvbmUgc2V0cyB0aGUgaW50ZXJydXB0IGZsYWcgYmV0d2VlbiB0aGlz IGFuZCB0aGUKKwkgKiBXYWl0RXZlbnRTZXRXYWl0QmxvY2soKSBiZWxvdywgdGhlIHNldHRl ciB3aWxsIHdyaXRlIGEgYnl0ZSB0byB0aGUgcGlwZQorCSAqIChvciBzaWduYWwgdXMgYW5k IHRoZSBzaWduYWwgaGFuZGxlciB3aWxsIGRvIHRoYXQpLCBhbmQgdGhlIHJlYWRpbmVzcwor CSAqIHJvdXRpbmUgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuCisJICoKKwkgKiBPbiB1bml4 LCBJZiB0aGVyZSdzIGEgcGVuZGluZyBieXRlIGluIHRoZSBzZWxmIHBpcGUsIHdlJ2xsIG5v dGljZQorCSAqIHdoZW5ldmVyIGJsb2NraW5nLiBPbmx5IGNsZWFyaW5nIHRoZSBwaXBlIGlu IHRoYXQgY2FzZSBhdm9pZHMgaGF2aW5nIHRvCisJICogZHJhaW4gaXQgZXZlcnkgdGltZSBX YWl0SW50ZXJydXB0T3JTb2NrZXQoKSBpcyB1c2VkLiAgU2hvdWxkIHRoZQorCSAqIHBpcGUt YnVmZmVyIGZpbGwgdXAgd2UncmUgc3RpbGwgb2ssIGJlY2F1c2UgdGhlIHBpcGUgaXMgaW4g bm9uYmxvY2tpbmcKKwkgKiBtb2RlLiBJdCdzIHVubGlrZWx5IGZvciB0aGF0IHRvIGhhcHBl biwgYmVjYXVzZSB0aGUgc2VsZiBwaXBlIGlzbid0CisJICogZmlsbGVkIHVubGVzcyB3ZSdy ZSBibG9ja2luZyAod2FpdGluZyA9IHRydWUpLCBvciBmcm9tIGluc2lkZSBhIHNpZ25hbAor CSAqIGhhbmRsZXIgaW4gaW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKCkuCisJICoKKwkgKiBP biB3aW5kb3dzLCB3ZSdsbCBhbHNvIG5vdGljZSBpZiB0aGVyZSdzIGEgcGVuZGluZyBldmVu dCBmb3IgdGhlCisJICogaW50ZXJydXB0IHdoZW4gYmxvY2tpbmcsIGJ1dCB0aGVyZSdzIG5v IGRhbmdlciBvZiBhbnl0aGluZyBmaWxsaW5nIHVwLAorCSAqIGFzICJTZXR0aW5nIGFuIGV2 ZW50IHRoYXQgaXMgYWxyZWFkeSBzZXQgaGFzIG5vIGVmZmVjdC4iLgorCSAqLworCWlmIChz ZXQtPmludGVycnVwdF9tYXNrICE9IDApCiAJewotCQlpbnQJCQlyYzsKKwkJdWludDMyCQlv bGRfbWFzazsKKwkJYm9vbAkJYWxyZWFkeV9wZW5kaW5nID0gZmFsc2U7CiAKIAkJLyoKLQkJ ICogQ2hlY2sgaWYgdGhlIGxhdGNoIGlzIHNldCBhbHJlYWR5LiBJZiBzbywgbGVhdmUgdGhl IGxvb3AKLQkJICogaW1tZWRpYXRlbHksIGF2b2lkIGJsb2NraW5nIGFnYWluLiBXZSBkb24n dCBhdHRlbXB0IHRvIHJlcG9ydCBhbnkKLQkJICogb3RoZXIgZXZlbnRzIHRoYXQgbWlnaHQg YWxzbyBiZSBzYXRpc2ZpZWQuCi0JCSAqCi0JCSAqIElmIHNvbWVvbmUgc2V0cyB0aGUgbGF0 Y2ggYmV0d2VlbiB0aGlzIGFuZCB0aGUKLQkJICogV2FpdEV2ZW50U2V0V2FpdEJsb2NrKCkg YmVsb3csIHRoZSBzZXR0ZXIgd2lsbCB3cml0ZSBhIGJ5dGUgdG8gdGhlCi0JCSAqIHBpcGUg KG9yIHNpZ25hbCB1cyBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIHdpbGwgZG8gdGhhdCksIGFu ZCB0aGUKLQkJICogcmVhZGluZXNzIHJvdXRpbmUgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHku Ci0JCSAqCi0JCSAqIE9uIHVuaXgsIElmIHRoZXJlJ3MgYSBwZW5kaW5nIGJ5dGUgaW4gdGhl IHNlbGYgcGlwZSwgd2UnbGwgbm90aWNlCi0JCSAqIHdoZW5ldmVyIGJsb2NraW5nLiBPbmx5 IGNsZWFyaW5nIHRoZSBwaXBlIGluIHRoYXQgY2FzZSBhdm9pZHMKLQkJICogaGF2aW5nIHRv IGRyYWluIGl0IGV2ZXJ5IHRpbWUgV2FpdExhdGNoT3JTb2NrZXQoKSBpcyB1c2VkLiBTaG91 bGQKLQkJICogdGhlIHBpcGUtYnVmZmVyIGZpbGwgdXAgd2UncmUgc3RpbGwgb2ssIGJlY2F1 c2UgdGhlIHBpcGUgaXMgaW4KLQkJICogbm9uYmxvY2tpbmcgbW9kZS4gSXQncyB1bmxpa2Vs eSBmb3IgdGhhdCB0byBoYXBwZW4sIGJlY2F1c2UgdGhlCi0JCSAqIHNlbGYgcGlwZSBpc24n dCBmaWxsZWQgdW5sZXNzIHdlJ3JlIGJsb2NraW5nICh3YWl0aW5nID0gdHJ1ZSksIG9yCi0J CSAqIGZyb20gaW5zaWRlIGEgc2lnbmFsIGhhbmRsZXIgaW4gbGF0Y2hfc2lndXJnX2hhbmRs ZXIoKS4KLQkJICoKLQkJICogT24gd2luZG93cywgd2UnbGwgYWxzbyBub3RpY2UgaWYgdGhl cmUncyBhIHBlbmRpbmcgZXZlbnQgZm9yIHRoZQotCQkgKiBsYXRjaCB3aGVuIGJsb2NraW5n LCBidXQgdGhlcmUncyBubyBkYW5nZXIgb2YgYW55dGhpbmcgZmlsbGluZyB1cCwKLQkJICog YXMgIlNldHRpbmcgYW4gZXZlbnQgdGhhdCBpcyBhbHJlYWR5IHNldCBoYXMgbm8gZWZmZWN0 LiIuCi0JCSAqCi0JCSAqIE5vdGU6IHdlIGFzc3VtZSB0aGF0IHRoZSBrZXJuZWwgY2FsbHMg aW52b2x2ZWQgaW4gbGF0Y2ggbWFuYWdlbWVudAotCQkgKiB3aWxsIHByb3ZpZGUgYWRlcXVh dGUgc3luY2hyb25pemF0aW9uIG9uIG1hY2hpbmVzIHdpdGggd2VhayBtZW1vcnkKLQkJICog b3JkZXJpbmcsIHNvIHRoYXQgd2UgY2Fubm90IG1pc3Mgc2VlaW5nIGlzX3NldCBpZiBhIG5v dGlmaWNhdGlvbgotCQkgKiBoYXMgYWxyZWFkeSBiZWVuIHF1ZXVlZC4KKwkJICogUGVyZm9y bSBhIHBsYWluIGF0b21pYyByZWFkIGZpcnN0IGFzIGEgZmFzdCBwYXRoIGZvciB0aGUgY2Fz ZSB0aGF0CisJCSAqIGFuIGludGVycnVwdCBpcyBhbHJlYWR5IHBlbmRpbmcuCiAJCSAqLwot CQlpZiAoc2V0LT5sYXRjaCAmJiAhc2V0LT5sYXRjaC0+aXNfc2V0KQorCQlvbGRfbWFzayA9 IHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKTsKKwkJYWxyZWFkeV9w ZW5kaW5nID0gKChvbGRfbWFzayAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApOworCisJ CWlmICghYWxyZWFkeV9wZW5kaW5nKQogCQl7Ci0JCQkvKiBhYm91dCB0byBzbGVlcCBvbiBh IGxhdGNoICovCi0JCQlzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyA9IHRydWU7Ci0JCQlw Z19tZW1vcnlfYmFycmllcigpOwotCQkJLyogYW5kIHJlY2hlY2sgKi8KKwkJCS8qCisJCQkg KiBBdG9taWNhbGx5IHNldCB0aGUgU0xFRVBJTkdfT05fSU5URVJSVVBUUyBiaXQgYW5kIHJl LWNoZWNrIGlmCisJCQkgKiBhbiBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBwZW5kaW5nLiBUaGUg YXRvbWljIG9wIHByb3ZpZGVzCisJCQkgKiBzeW5jaHJvbml6YXRpb24gc28gdGhhdCBpZiBh biBpbnRlcnJ1cHQgYml0IGlzIHNldCBhZnRlciB0aGlzLAorCQkJICogdGhlIHNldHRlciB3 aWxsIHdha2UgdXMgdXAuCisJCQkgKi8KKwkJCW9sZF9tYXNrID0gcGdfYXRvbWljX2ZldGNo X29yX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzLCAxIDw8IFNMRUVQSU5HX09OX0lOVEVSUlVQ VFMpOworCQkJYWxyZWFkeV9wZW5kaW5nID0gKChvbGRfbWFzayAmIHNldC0+aW50ZXJydXB0 X21hc2spICE9IDApOworCisJCQkvKiByZW1lbWJlciB0byBjbGVhciB0aGUgU0xFRVBJTkdf T05fSU5URVJSVVBUUyBmbGFnIGxhdGVyICovCisJCQlzbGVlcGluZ19mbGFnX2FybWVkID0g dHJ1ZTsKIAkJfQogCi0JCWlmIChzZXQtPmxhdGNoICYmIHNldC0+bGF0Y2gtPmlzX3NldCkK KwkJaWYgKGFscmVhZHlfcGVuZGluZykKIAkJewogCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9 IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQlvY2N1cnJlZF9ldmVudHMtPnBvcyA9IHNldC0+bGF0 Y2hfcG9zOworCQkJb2NjdXJyZWRfZXZlbnRzLT5wb3MgPSBzZXQtPmludGVycnVwdF9wb3M7 CiAJCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9Ci0JCQkJc2V0LT5ldmVudHNbc2V0 LT5sYXRjaF9wb3NdLnVzZXJfZGF0YTsKLQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0g V0xfTEFUQ0hfU0VUOworCQkJCXNldC0+ZXZlbnRzW3NldC0+aW50ZXJydXB0X3Bvc10udXNl cl9kYXRhOworCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJ CQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCXJldHVybmVkX2V2ZW50cysrOwogCi0JCQkvKiBj b3VsZCBoYXZlIGJlZW4gc2V0IGFib3ZlICovCi0JCQlzZXQtPmxhdGNoLT5tYXliZV9zbGVl cGluZyA9IGZhbHNlOwotCi0JCQlicmVhazsKKwkJCS8qIHdlIHdpbGwgZmFsbCB0aHJvdWdo IHdpdGhvdXQgc2xlZXBpbmcgKi8KIAkJfQorCX0KKworCXdoaWxlIChyZXR1cm5lZF9ldmVu dHMgPT0gMCkKKwl7CisJCWludAkJCXJjOwogCiAJCS8qCiAJCSAqIFdhaXQgZm9yIGV2ZW50 cyB1c2luZyB0aGUgcmVhZGluZXNzIHByaW1pdGl2ZSBjaG9zZW4gYXQgdGhlIHRvcCBvZgpA QCAtMTUxMCwxMiArMTM1NSw2IEBAIFdhaXRFdmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpz ZXQsIGxvbmcgdGltZW91dCwKIAkJcmMgPSBXYWl0RXZlbnRTZXRXYWl0QmxvY2soc2V0LCBj dXJfdGltZW91dCwKIAkJCQkJCQkJICAgb2NjdXJyZWRfZXZlbnRzLCBuZXZlbnRzKTsKIAot CQlpZiAoc2V0LT5sYXRjaCkKLQkJewotCQkJQXNzZXJ0KHNldC0+bGF0Y2gtPm1heWJlX3Ns ZWVwaW5nKTsKLQkJCXNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nID0gZmFsc2U7Ci0JCX0K LQogCQlpZiAocmMgPT0gLTEpCiAJCQlicmVhazsJCQkJLyogdGltZW91dCBvY2N1cnJlZCAq LwogCQllbHNlCkBAIC0xNTMxLDYgKzEzNzAsMTEgQEAgV2FpdEV2ZW50U2V0V2FpdChXYWl0 RXZlbnRTZXQgKnNldCwgbG9uZyB0aW1lb3V0LAogCQkJCWJyZWFrOwogCQl9CiAJfQorCisJ LyogSWYgd2Ugc2V0IHRoZSBTTEVFUElOR19PTl9JTlRFUlJVUFRTIGZsYWcsIHJlc2V0IGl0 IGFnYWluICovCisJaWYgKHNsZWVwaW5nX2ZsYWdfYXJtZWQpCisJCXBnX2F0b21pY19mZXRj aF9hbmRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIH4oKHVpbnQzMikgMSA8PCBTTEVFUElO R19PTl9JTlRFUlJVUFRTKSk7CisKICNpZm5kZWYgV0lOMzIKIAl3YWl0aW5nID0gZmFsc2U7 CiAjZW5kaWYKQEAgLTE2MDEsMTYgKzE0NDUsMTYgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2Nr KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50 cy0+dXNlcl9kYXRhID0gY3VyX2V2ZW50LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50 cy0+ZXZlbnRzID0gMDsKIAotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hf U0VUICYmCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJ CWN1cl9lcG9sbF9ldmVudC0+ZXZlbnRzICYgKEVQT0xMSU4gfCBFUE9MTEVSUiB8IEVQT0xM SFVQKSkKIAkJewogCQkJLyogRHJhaW4gdGhlIHNpZ25hbGZkLiAqLwogCQkJZHJhaW4oKTsK IAotCQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNl dC0+aW50ZXJydXB0X21hc2sgIT0gMCAmJiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGlu Z0ludGVycnVwdHMpICYgc2V0LT5pbnRlcnJ1cHRfbWFzaykgIT0gMCkKIAkJCXsKIAkJCQlv Y2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKLQkJCQlvY2N1cnJlZF9l dmVudHMtPmV2ZW50cyA9IFdMX0xBVENIX1NFVDsKKwkJCQlvY2N1cnJlZF9ldmVudHMtPmV2 ZW50cyA9IFdMX0lOVEVSUlVQVDsKIAkJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCQlyZXR1 cm5lZF9ldmVudHMrKzsKIAkJCX0KQEAgLTE3NjMsMTMgKzE2MDcsMTMgQEAgV2FpdEV2ZW50 U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCW9j Y3VycmVkX2V2ZW50cy0+dXNlcl9kYXRhID0gY3VyX2V2ZW50LT51c2VyX2RhdGE7CiAJCW9j Y3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gMDsKIAotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMg PT0gV0xfTEFUQ0hfU0VUICYmCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRF UlJVUFQgJiYKIAkJCWN1cl9rcXVldWVfZXZlbnQtPmZpbHRlciA9PSBFVkZJTFRfU0lHTkFM KQogCQl7Ci0JCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlp ZiAoc2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQ ZW5kaW5nSW50ZXJydXB0cykgJiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQogCQkJewog CQkJCW9jY3VycmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJCW9jY3Vy cmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCW9jY3VycmVkX2V2ZW50 cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBUOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJ CXJldHVybmVkX2V2ZW50cysrOwogCQkJfQpAQCAtMTg4NSwxNiArMTcyOSwxNiBAQCBXYWl0 RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwK IAkJb2NjdXJyZWRfZXZlbnRzLT51c2VyX2RhdGEgPSBjdXJfZXZlbnQtPnVzZXJfZGF0YTsK IAkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSAwOwogCi0JCWlmIChjdXJfZXZlbnQtPmV2 ZW50cyA9PSBXTF9MQVRDSF9TRVQgJiYKKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdM X0lOVEVSUlVQVCAmJgogCQkJKGN1cl9wb2xsZmQtPnJldmVudHMgJiAoUE9MTElOIHwgUE9M TEhVUCB8IFBPTExFUlIgfCBQT0xMTlZBTCkpKQogCQl7CiAJCQkvKiBUaGVyZSdzIGRhdGEg aW4gdGhlIHNlbGYtcGlwZSwgY2xlYXIgaXQuICovCiAJCQlkcmFpbigpOwogCi0JCQlpZiAo c2V0LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlpZiAoc2V0LT5pbnRlcnJ1 cHRfbWFzayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0 cykgJiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQogCQkJewogCQkJCW9jY3VycmVkX2V2 ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZl bnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xf SU5URVJSVVBUOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJCXJldHVybmVkX2V2ZW50 cysrOwogCQkJfQpAQCAtMTk5Myw2ICsxODM3LDE1IEBAIFdhaXRFdmVudFNldFdhaXRCbG9j ayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAogCQkJY3VyX2V2ZW50LT5y ZXNldCA9IGZhbHNlOwogCQl9CiAKKwkJLyoKKwkJICogV2UgbmVlZCB0byB1c2UgZGlmZmVy ZW50IGV2ZW50IG9iamVjdCBkZXBlbmRpbmcgb24gd2hldGhlciAibG9jYWwiCisJCSAqIG9y ICJzaGFyZWQgbWVtb3J5IiBpbnRlcnJ1cHRzIGFyZSBpbiB1c2UuIFRoZXJlJ3Mgbm8gZWFz eSB3YXkgdG8KKwkJICogYWRqdXN0IGFsbCBleGlzdGluZyBXYWl0RXZlbnRTZXQgd2hlbiB5 b3Ugc3dpdGNoIGZyb20gbG9jYWwgdG8KKwkJICogc2hhcmVkIG9yIGJhY2ssIHNvIHdlIHJl ZnJlc2ggaXQgb24gZXZlcnkgY2FsbC4KKwkJICovCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50 cyAmIFdMX0lOVEVSUlVQVCkKKwkJCVdhaXRFdmVudEFkanVzdFdpbjMyKHNldCwgY3VyX2V2 ZW50KTsKKwogCQkvKgogCQkgKiBXZSBhc3NvY2lhdGUgdGhlIHNvY2tldCB3aXRoIGEgbmV3 IGV2ZW50IGhhbmRsZSBmb3IgZWFjaAogCQkgKiBXYWl0RXZlbnRTZXQuICBGRF9DTE9TRSBp cyBvbmx5IGdlbmVyYXRlZCBvbmNlIGlmIHRoZSBvdGhlciBlbmQKQEAgLTIwOTgsMTkgKzE5 NTEsMTUgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQg Y3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50cy0+dXNlcl9kYXRhID0gY3VyX2V2ZW50 LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gMDsKIAotCQlpZiAo Y3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCQlpZiAoY3VyX2V2ZW50LT5l dmVudHMgPT0gV0xfSU5URVJSVVBUKQogCQl7Ci0JCQkvKgotCQkJICogV2UgY2Fubm90IHVz ZSBzZXQtPmxhdGNoLT5ldmVudCB0byByZXNldCB0aGUgZmlyZWQgZXZlbnQgaWYgd2UKLQkJ CSAqIGFyZW4ndCB3YWl0aW5nIG9uIHRoaXMgbGF0Y2ggbm93LgotCQkJICovCiAJCQlpZiAo IVJlc2V0RXZlbnQoc2V0LT5oYW5kbGVzW2N1cl9ldmVudC0+cG9zICsgMV0pKQogCQkJCWVs b2coRVJST1IsICJSZXNldEV2ZW50IGZhaWxlZDogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0 RXJyb3IoKSk7CiAKLQkJCWlmIChzZXQtPmxhdGNoICYmIHNldC0+bGF0Y2gtPmlzX3NldCkK KwkJCWlmIChzZXQtPmludGVycnVwdF9tYXNrICE9IDAgJiYgKHBnX2F0b21pY19yZWFkX3Uz MihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApCiAJ CQl7CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQkJ b2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJb2NjdXJyZWRf ZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQkJb2NjdXJyZWRfZXZlbnRzKys7 CiAJCQkJcmV0dXJuZWRfZXZlbnRzKys7CiAJCQl9CkBAIC0yMTU1LDcgKzIwMDQsNyBAQCBX YWl0RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91 dCwKIAogCQkJCS8qLS0tLS0tCiAJCQkJICogV2FpdEZvck11bHRpcGxlT2JqZWN0cyBkb2Vz bid0IGd1YXJhbnRlZSB0aGF0IGEgcmVhZCBldmVudAotCQkJCSAqIHdpbGwgYmUgcmV0dXJu ZWQgaWYgdGhlIGxhdGNoIGlzIHNldCBhdCB0aGUgc2FtZSB0aW1lLiAgRXZlbgorCQkJCSAq IHdpbGwgYmUgcmV0dXJuZWQgaWYgdGhlIGludGVycnVwdCBpcyBzZXQgYXQgdGhlIHNhbWUg dGltZS4gIEV2ZW4KIAkJCQkgKiBpZiBpdCBkaWQsIHRoZSBjYWxsZXIgbWlnaHQgZHJvcCB0 aGF0IGV2ZW50IGV4cGVjdGluZyBpdCB0bwogCQkJCSAqIHJlb2NjdXIgb24gbmV4dCBjYWxs LiAgU28sIHdlIG11c3QgZm9yY2UgdGhlIGV2ZW50IHRvIGJlCiAJCQkJICogcmVzZXQgaWYg dGhpcyBXYWl0RXZlbnRTZXQgaXMgdXNlZCBhZ2FpbiBpbiBvcmRlciB0byBhdm9pZApAQCAt MjI2MSwxOCArMjExMCwxNyBAQCBHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhXYWl0RXZl bnRTZXQgKnNldCkKICNpZiBkZWZpbmVkKFdBSVRfVVNFX1NFTEZfUElQRSkKIAogLyoKLSAq IFNldExhdGNoIHVzZXMgU0lHVVJHIHRvIHdha2UgdXAgdGhlIHByb2Nlc3Mgd2FpdGluZyBv biB0aGUgbGF0Y2guCi0gKgotICogV2FrZSB1cCBXYWl0TGF0Y2gsIGlmIHdlJ3JlIHdhaXRp bmcuCisgKiBXYWtldXBPdGhlclByb2MgYW5kIFdha3VwTXlQcm9jIHVzZSBTSUdVUkcgdG8g d2FrZSB1cCB0aGUgcHJvY2VzcyB3YWl0aW5nCisgKiBmb3IgYW4gaW50ZXJydXB0CiAgKi8K IHN0YXRpYyB2b2lkCi1sYXRjaF9zaWd1cmdfaGFuZGxlcihTSUdOQUxfQVJHUykKK2ludGVy cnVwdF9zaWd1cmdfaGFuZGxlcihTSUdOQUxfQVJHUykKIHsKIAlpZiAod2FpdGluZykKIAkJ c2VuZFNlbGZQaXBlQnl0ZSgpOwogfQogCi0vKiBTZW5kIG9uZSBieXRlIHRvIHRoZSBzZWxm LXBpcGUsIHRvIHdha2UgdXAgV2FpdExhdGNoICovCisvKiBTZW5kIG9uZSBieXRlIHRvIHRo ZSBzZWxmLXBpcGUsIHRvIHdha2UgdXAgV2FpdEludGVycnVwdCAqLwogc3RhdGljIHZvaWQK IHNlbmRTZWxmUGlwZUJ5dGUodm9pZCkKIHsKQEAgLTIyODksNyArMjEzNyw3IEBAIHJldHJ5 OgogCiAJCS8qCiAJCSAqIElmIHRoZSBwaXBlIGlzIGZ1bGwsIHdlIGRvbid0IG5lZWQgdG8g cmV0cnksIHRoZSBkYXRhIHRoYXQncyB0aGVyZQotCQkgKiBhbHJlYWR5IGlzIGVub3VnaCB0 byB3YWtlIHVwIFdhaXRMYXRjaC4KKwkJICogYWxyZWFkeSBpcyBlbm91Z2ggdG8gd2FrZSB1 cCBXYWl0SW50ZXJydXB0LgogCQkgKi8KIAkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJu byA9PSBFV09VTERCTE9DSykKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYwppbmRleCAxMTJhNTE4YmFlLi41OWZjNjQ2 NmI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3Zh cmlhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJp YWJsZS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29u ZGl0aW9uX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NsaXN0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCkBAIC0xNDcsMjMgKzE0OCwyMyBAQCBDb25k aXRpb25WYXJpYWJsZVRpbWVkU2xlZXAoQ29uZGl0aW9uVmFyaWFibGUgKmN2LCBsb25nIHRp bWVvdXQsCiAJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnRfdGltZSk7CiAJCUFzc2Vy dCh0aW1lb3V0ID49IDAgJiYgdGltZW91dCA8PSBJTlRfTUFYKTsKIAkJY3VyX3RpbWVvdXQg PSB0aW1lb3V0OwotCQl3YWl0X2V2ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRIOworCQl3YWl0X2V2ZW50cyA9IFdMX0lOVEVSUlVQVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOwogCX0KIAllbHNlCi0JCXdhaXRf ZXZlbnRzID0gV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKKwkJd2FpdF9l dmVudHMgPSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRIOwogCiAJd2hpbGUg KHRydWUpCiAJewogCQlib29sCQlkb25lID0gZmFsc2U7CiAKIAkJLyoKLQkJICogV2FpdCBm b3IgbGF0Y2ggdG8gYmUgc2V0LiAgKElmIHdlJ3JlIGF3YWtlbmVkIGZvciBzb21lIG90aGVy Ci0JCSAqIHJlYXNvbiwgdGhlIGNvZGUgYmVsb3cgd2lsbCBjb3BlIGFueXdheS4pCisJCSAq IFdhaXQgZm9yIGludGVycnVwdC4gIChJZiB3ZSdyZSBhd2FrZW5lZCBmb3Igc29tZSBvdGhl ciByZWFzb24sIHRoZQorCQkgKiBjb2RlIGJlbG93IHdpbGwgY29wZSBhbnl3YXkuKQogCQkg Ki8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCB3YWl0X2V2ZW50cywgY3VyX3RpbWVv dXQsIHdhaXRfZXZlbnRfaW5mbyk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5U RVJSVVBUX0dFTkVSQUwsIHdhaXRfZXZlbnRzLCBjdXJfdGltZW91dCwgd2FpdF9ldmVudF9p bmZvKTsKIAotCQkvKiBSZXNldCBsYXRjaCBiZWZvcmUgZXhhbWluaW5nIHRoZSBzdGF0ZSBv ZiB0aGUgd2FpdCBsaXN0LiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkvKiBDbGVh ciB0aGUgZmxhZyBiZWZvcmUgZXhhbWluaW5nIHRoZSBzdGF0ZSBvZiB0aGUgd2FpdCBsaXN0 LiAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyoKIAkJ ICogSWYgdGhpcyBwcm9jZXNzIGhhcyBiZWVuIHRha2VuIG91dCBvZiB0aGUgd2FpdCBsaXN0 LCB0aGVuIHdlIGtub3cKQEAgLTE3Niw5ICsxNzcsMTAgQEAgQ29uZGl0aW9uVmFyaWFibGVU aW1lZFNsZWVwKENvbmRpdGlvblZhcmlhYmxlICpjdiwgbG9uZyB0aW1lb3V0LAogCQkgKiB0 aGUgd2FpdCBsaXN0IG9ubHkgd2hlbiB0aGUgY2FsbGVyIGNhbGxzCiAJCSAqIENvbmRpdGlv blZhcmlhYmxlQ2FuY2VsU2xlZXAuCiAJCSAqCi0JCSAqIElmIHdlJ3JlIHN0aWxsIGluIHRo ZSB3YWl0IGxpc3QsIHRoZW4gdGhlIGxhdGNoIG11c3QgaGF2ZSBiZWVuIHNldAotCQkgKiBi eSBzb21ldGhpbmcgb3RoZXIgdGhhbiBDb25kaXRpb25WYXJpYWJsZVNpZ25hbDsgdGhvdWdo IHdlIGRvbid0Ci0JCSAqIGd1YXJhbnRlZSBub3QgdG8gcmV0dXJuIHNwdXJpb3VzbHksIHdl J2xsIGF2b2lkIHRoaXMgb2J2aW91cyBjYXNlLgorCQkgKiBJZiB3ZSdyZSBzdGlsbCBpbiB0 aGUgd2FpdCBsaXN0LCB0aGVuIHRoZSBpbnRlcnJ1cHQgbXVzdCBoYXZlIGJlZW4KKwkJICog c2VudCBieSBzb21ldGhpbmcgb3RoZXIgdGhhbiBDb25kaXRpb25WYXJpYWJsZVNpZ25hbDsg dGhvdWdoIHdlCisJCSAqIGRvbid0IGd1YXJhbnRlZSBub3QgdG8gcmV0dXJuIHNwdXJpb3Vz bHksIHdlJ2xsIGF2b2lkIHRoaXMgb2J2aW91cworCQkgKiBjYXNlLgogCQkgKi8KIAkJU3Bp bkxvY2tBY3F1aXJlKCZjdi0+bXV0ZXgpOwogCQlpZiAoIXByb2NsaXN0X2NvbnRhaW5zKCZj di0+d2FrZXVwLCBNeVByb2NOdW1iZXIsIGN2V2FpdExpbmspKQpAQCAtMjY2LDkgKzI2OCw5 IEBAIENvbmRpdGlvblZhcmlhYmxlU2lnbmFsKENvbmRpdGlvblZhcmlhYmxlICpjdikKIAkJ cHJvYyA9IHByb2NsaXN0X3BvcF9oZWFkX25vZGUoJmN2LT53YWtldXAsIGN2V2FpdExpbmsp OwogCVNwaW5Mb2NrUmVsZWFzZSgmY3YtPm11dGV4KTsKIAotCS8qIElmIHdlIGZvdW5kIHNv bWVvbmUgc2xlZXBpbmcsIHNldCB0aGVpciBsYXRjaCB0byB3YWtlIHRoZW0gdXAuICovCisJ LyogSWYgd2UgZm91bmQgc29tZW9uZSBzbGVlcGluZywgd2FrZSB0aGVtIHVwLiAqLwogCWlm IChwcm9jICE9IE5VTEwpCi0JCVNldExhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOworCQlTZW5k SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2Mp KTsKIH0KIAogLyoKQEAgLTI5Nyw4ICsyOTksOCBAQCBDb25kaXRpb25WYXJpYWJsZUJyb2Fk Y2FzdChDb25kaXRpb25WYXJpYWJsZSAqY3YpCiAJICogQ1YgYW5kIGluIGRvaW5nIHNvIHJl bW92ZSBvdXIgc2VudGluZWwgZW50cnkuICBCdXQgdGhhdCdzIGZpbmU6IHNpbmNlCiAJICog Q1Ygd2FpdGVycyBhcmUgYWx3YXlzIGFkZGVkIGFuZCByZW1vdmVkIGluIG9yZGVyLCB0aGF0 IG11c3QgbWVhbiB0aGF0CiAJICogZXZlcnkgcHJldmlvdXMgd2FpdGVyIGhhcyBiZWVuIHdh a2VuZWQsIHNvIHdlJ3JlIGRvbmUuICBXZSdsbCBnZXQgYW4KLQkgKiBleHRyYSAic2V0IiBv biBvdXIgbGF0Y2ggZnJvbSB0aGUgc29tZW9uZSBlbHNlJ3Mgc2lnbmFsLCB3aGljaCBpcwot CSAqIHNsaWdodGx5IGluZWZmaWNpZW50IGJ1dCBoYXJtbGVzcy4KKwkgKiBleHRyYSBpbnRl cnJ1cHQgZnJvbSB0aGUgc29tZW9uZSBlbHNlJ3Mgc2lnbmFsLCB3aGljaCBpcyBzbGlnaHRs eQorCSAqIGluZWZmaWNpZW50IGJ1dCBoYXJtbGVzcy4KIAkgKgogCSAqIFdlIGNhbid0IGlu c2VydCBvdXIgY3ZXYWl0TGluayBhcyBhIHNlbnRpbmVsIGlmIGl0J3MgYWxyZWFkeSBpbiB1 c2UgaW4KIAkgKiBzb21lIG90aGVyIHByb2NsaXN0LiAgV2hpbGUgdGhhdCdzIG5vdCBleHBl Y3RlZCB0byBiZSB0cnVlIGZvciB0eXBpY2FsCkBAIC0zMzEsNyArMzMzLDcgQEAgQ29uZGl0 aW9uVmFyaWFibGVCcm9hZGNhc3QoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogCiAJLyogQXdh a2VuIGZpcnN0IHdhaXRlciwgaWYgdGhlcmUgd2FzIG9uZS4gKi8KIAlpZiAocHJvYyAhPSBO VUxMKQotCQlTZXRMYXRjaCgmcHJvYy0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiAKIAl3aGls ZSAoaGF2ZV9zZW50aW5lbCkKIAl7CkBAIC0zNTUsNiArMzU3LDYgQEAgQ29uZGl0aW9uVmFy aWFibGVCcm9hZGNhc3QoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogCQlTcGluTG9ja1JlbGVh c2UoJmN2LT5tdXRleCk7CiAKIAkJaWYgKHByb2MgIT0gTlVMTCAmJiBwcm9jICE9IE15UHJv YykKLQkJCVNldExhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiAJfQogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IDIwMzAzMjJmOTUuLmE4 NDA3MTA1NmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNh dGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTIw Nyw2ICsyMDcsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3Rh dC5oIgogI2luY2x1ZGUgInBvcnQvcGdfbGZpbmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcmVkaWNhdGVfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j LmgiCkBAIC0xNTc2LDcgKzE1NzcsMTAgQEAgR2V0U2FmZVNuYXBzaG90KFNuYXBzaG90IG9y aWdTbmFwc2hvdCkKIAkJCQkgU3hhY3RJc1JPVW5zYWZlKE15U2VyaWFsaXphYmxlWGFjdCkp KQogCQl7CiAJCQlMV0xvY2tSZWxlYXNlKFNlcmlhbGl6YWJsZVhhY3RIYXNoTG9jayk7Ci0J CQlQcm9jV2FpdEZvclNpZ25hbChXQUlUX0VWRU5UX1NBRkVfU05BUFNIT1QpOworCQkJV2Fp dEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9F WElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJICBXQUlUX0VWRU5UX1NBRkVfU05BUFNIT1Qp OworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCQkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAkJCUxXTG9ja0FjcXVpcmUoU2VyaWFsaXphYmxlWGFjdEhhc2hM b2NrLCBMV19FWENMVVNJVkUpOwogCQl9CiAJCU15U2VyaWFsaXphYmxlWGFjdC0+ZmxhZ3Mg Jj0gflNYQUNUX0ZMQUdfREVGRVJSQUJMRV9XQUlUSU5HOwpAQCAtMzYwOSw3ICszNjEzLDcg QEAgUmVsZWFzZVByZWRpY2F0ZUxvY2tzKGJvb2wgaXNDb21taXQsIGJvb2wgaXNSZWFkT25s eVNhZmUpCiAJCQkgKi8KIAkJCWlmIChTeGFjdElzRGVmZXJyYWJsZVdhaXRpbmcocm9YYWN0 KSAmJgogCQkJCShTeGFjdElzUk9VbnNhZmUocm9YYWN0KSB8fCBTeGFjdElzUk9TYWZlKHJv WGFjdCkpKQotCQkJCVByb2NTZW5kU2lnbmFsKHJvWGFjdC0+cGdwcm9jbm8pOworCQkJCVNl bmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIHJvWGFjdC0+cGdwcm9jbm8pOwogCQl9 CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCA3MjBlZjk5ZWU4Li44ZDFk MzFhMjc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTQyLDYgKzQyLDcgQEAK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3N5bmNyZXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Bt c2lnbmFsLmgiCkBAIC0yNTcsMTQgKzI1OCwyOCBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQog CQlBc3NlcnQoZnBQdHIgPD0gZnBFbmRQdHIpOwogCiAJCS8qCi0JCSAqIFNldCB1cCBwZXIt UEdQUk9DIHNlbWFwaG9yZSwgbGF0Y2gsIGFuZCBmcEluZm9Mb2NrLiAgUHJlcGFyZWQgeGFj dAotCQkgKiBkdW1teSBQR1BST0NzIGRvbid0IG5lZWQgdGhlc2UgdGhvdWdoIC0gdGhleSdy ZSBuZXZlciBhc3NvY2lhdGVkCi0JCSAqIHdpdGggYSByZWFsIHByb2Nlc3MKKwkJICogU2V0 IHVwIHBlci1QR1BST0Mgc2VtYXBob3JlLCBpbnRlcnJ1cHQgd2FrZXVwIGV2ZW50IChvbiBX aW5kb3dzKSwKKwkJICogYW5kIGZwSW5mb0xvY2suICBQcmVwYXJlZCB4YWN0IGR1bW15IFBH UFJPQ3MgZG9uJ3QgbmVlZCB0aGVzZQorCQkgKiB0aG91Z2ggLSB0aGV5J3JlIG5ldmVyIGFz c29jaWF0ZWQgd2l0aCBhIHJlYWwgcHJvY2VzcwogCQkgKi8KIAkJaWYgKGkgPCBNYXhCYWNr ZW5kcyArIE5VTV9BVVhJTElBUllfUFJPQ1MpCiAJCXsKKyNpZmRlZiBXSU4zMgorCQkJU0VD VVJJVFlfQVRUUklCVVRFUyBzYTsKKworCQkJLyoKKwkJCSAqIFNldCB1cCBzZWN1cml0eSBh dHRyaWJ1dGVzIHRvIHNwZWNpZnkgdGhhdCB0aGUgZXZlbnRzIGFyZQorCQkJICogaW5oZXJp dGVkLgorCQkJICovCisJCQlaZXJvTWVtb3J5KCZzYSwgc2l6ZW9mKHNhKSk7CisJCQlzYS5u TGVuZ3RoID0gc2l6ZW9mKHNhKTsKKwkJCXNhLmJJbmhlcml0SGFuZGxlID0gVFJVRTsKKwor CQkJcHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQgPSBDcmVhdGVFdmVudCgmc2EsIFRSVUUs IEZBTFNFLCBOVUxMKTsKKwkJCWlmIChwcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA9PSBO VUxMKQorCQkJCWVsb2coRVJST1IsICJDcmVhdGVFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUg JWx1IiwgR2V0TGFzdEVycm9yKCkpOworI2VuZGlmCiAJCQlwcm9jLT5zZW0gPSBQR1NlbWFw aG9yZUNyZWF0ZSgpOwotCQkJSW5pdFNoYXJlZExhdGNoKCYocHJvYy0+cHJvY0xhdGNoKSk7 CiAJCQlMV0xvY2tJbml0aWFsaXplKCYocHJvYy0+ZnBJbmZvTG9jayksIExXVFJBTkNIRV9M T0NLX0ZBU1RQQVRIKTsKIAkJfQogCkBAIC00NzQsMTMgKzQ4OSw4IEBAIEluaXRQcm9jZXNz KHZvaWQpCiAJTXlQcm9jLT5jbG9nR3JvdXBNZW1iZXJMc24gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZNeVByb2MtPmNsb2dHcm91cE5leHQp ID09IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCi0JLyoKLQkgKiBBY3F1aXJlIG93bmVyc2hp cCBvZiB0aGUgUEdQUk9DJ3MgbGF0Y2gsIHNvIHRoYXQgd2UgY2FuIHVzZSBXYWl0TGF0Y2gK LQkgKiBvbiBpdC4gIFRoYXQgYWxsb3dzIHVzIHRvIHJlcG9pbnQgdGhlIHByb2Nlc3MgbGF0 Y2gsIHdoaWNoIHNvIGZhcgotCSAqIHBvaW50cyB0byBwcm9jZXNzIGxvY2FsIG9uZSwgdG8g dGhlIHNoYXJlZCBvbmUuCi0JICovCi0JT3duTGF0Y2goJk15UHJvYy0+cHJvY0xhdGNoKTsK LQlTd2l0Y2hUb1NoYXJlZExhdGNoKCk7CisJLyogU3RhcnQgYWNjZXB0aW5nIGludGVycnVw dHMgZnJvbSBvdGhlciBwcm9jZXNzZXMgKi8KKwlTd2l0Y2hUb1NoYXJlZEludGVycnVwdHMo KTsKIAogCS8qIG5vdyB0aGF0IHdlIGhhdmUgYSBwcm9jLCByZXBvcnQgd2FpdCBldmVudHMg dG8gc2hhcmVkIG1lbW9yeSAqLwogCXBnc3RhdF9zZXRfd2FpdF9ldmVudF9zdG9yYWdlKCZN eVByb2MtPndhaXRfZXZlbnRfaW5mbyk7CkBAIC02NDQsMTMgKzY1NCw4IEBAIEluaXRBdXhp bGlhcnlQcm9jZXNzKHZvaWQpCiAJfQogI2VuZGlmCiAKLQkvKgotCSAqIEFjcXVpcmUgb3du ZXJzaGlwIG9mIHRoZSBQR1BST0MncyBsYXRjaCwgc28gdGhhdCB3ZSBjYW4gdXNlIFdhaXRM YXRjaAotCSAqIG9uIGl0LiAgVGhhdCBhbGxvd3MgdXMgdG8gcmVwb2ludCB0aGUgcHJvY2Vz cyBsYXRjaCwgd2hpY2ggc28gZmFyCi0JICogcG9pbnRzIHRvIHByb2Nlc3MgbG9jYWwgb25l LCB0byB0aGUgc2hhcmVkIG9uZS4KLQkgKi8KLQlPd25MYXRjaCgmTXlQcm9jLT5wcm9jTGF0 Y2gpOwotCVN3aXRjaFRvU2hhcmVkTGF0Y2goKTsKKwkvKiBTdGFydCBhY2NlcHRpbmcgaW50 ZXJydXB0cyBmcm9tIG90aGVyIHByb2Nlc3NlcyAqLworCVN3aXRjaFRvU2hhcmVkSW50ZXJy dXB0cygpOwogCiAJLyogbm93IHRoYXQgd2UgaGF2ZSBhIHByb2MsIHJlcG9ydCB3YWl0IGV2 ZW50cyB0byBzaGFyZWQgbWVtb3J5ICovCiAJcGdzdGF0X3NldF93YWl0X2V2ZW50X3N0b3Jh Z2UoJk15UHJvYy0+d2FpdF9ldmVudF9pbmZvKTsKQEAgLTkyNywyMSArOTMyLDIwIEBAIFBy b2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJfQogCiAJLyoKLQkgKiBSZXNldCBNeUxh dGNoIHRvIHRoZSBwcm9jZXNzIGxvY2FsIG9uZS4gIFRoaXMgaXMgc28gdGhhdCBzaWduYWwK LQkgKiBoYW5kbGVycyBldCBhbCBjYW4gY29udGludWUgdXNpbmcgdGhlIGxhdGNoIGFmdGVy IHRoZSBzaGFyZWQgbGF0Y2gKLQkgKiBpc24ndCBvdXJzIGFueW1vcmUuCisJICogUmVzZXQg aW50ZXJydXB0IHZlY3RvciB0byB0aGUgcHJvY2VzcyBsb2NhbCBvbmUuICBUaGlzIGlzIHNv IHRoYXQKKwkgKiBzaWduYWwgaGFuZGxlcnMgZXQgYWwgY2FuIGNvbnRpbnVlIHVzaW5nIGlu dGVycnVwdHMgYWZ0ZXIgdGhlIFBHUFJPQworCSAqIGVudHJ5IGlzbid0IG91cnMgYW55bW9y ZS4KIAkgKgogCSAqIFNpbWlsYXJseSwgc3RvcCByZXBvcnRpbmcgd2FpdCBldmVudHMgdG8g TXlQcm9jLT53YWl0X2V2ZW50X2luZm8uCiAJICoKLQkgKiBBZnRlciB0aGF0IGNsZWFyIE15 UHJvYyBhbmQgZGlzb3duIHRoZSBzaGFyZWQgbGF0Y2guCisJICogQWZ0ZXIgdGhhdCBjbGVh ciBNeVByb2MuCiAJICovCi0JU3dpdGNoQmFja1RvTG9jYWxMYXRjaCgpOworCVN3aXRjaFRv TG9jYWxJbnRlcnJ1cHRzKCk7CiAJcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSgp OwogCiAJcHJvYyA9IE15UHJvYzsKIAlNeVByb2MgPSBOVUxMOwogCU15UHJvY051bWJlciA9 IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JRGlzb3duTGF0Y2goJnByb2MtPnByb2NMYXRjaCk7 CiAKIAkvKiBNYXJrIHRoZSBwcm9jIG5vIGxvbmdlciBpbiB1c2UgKi8KIAlwcm9jLT5waWQg PSAwOwpAQCAtMTAwNCwxMyArMTAwOCwxMiBAQCBBdXhpbGlhcnlQcm9jS2lsbChpbnQgY29k ZSwgRGF0dW0gYXJnKQogCUNvbmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xlZXAoKTsKIAogCS8q IGxvb2sgYXQgdGhlIGVxdWl2YWxlbnQgUHJvY0tpbGwoKSBjb2RlIGZvciBjb21tZW50cyAq LwotCVN3aXRjaEJhY2tUb0xvY2FsTGF0Y2goKTsKKwlTd2l0Y2hUb0xvY2FsSW50ZXJydXB0 cygpOwogCXBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3JhZ2UoKTsKIAogCXByb2MgPSBN eVByb2M7CiAJTXlQcm9jID0gTlVMTDsKIAlNeVByb2NOdW1iZXIgPSBJTlZBTElEX1BST0Nf TlVNQkVSOwotCURpc293bkxhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOwogCiAJU3BpbkxvY2tB Y3F1aXJlKFByb2NTdHJ1Y3RMb2NrKTsKIApAQCAtMTMzNywxOCArMTM0MCwxOCBAQCBQcm9j U2xlZXAoTE9DQUxMT0NLICpsb2NhbGxvY2spCiAJfQogCiAJLyoKLQkgKiBJZiBzb21lYm9k eSB3YWtlcyB1cyBiZXR3ZWVuIExXTG9ja1JlbGVhc2UgYW5kIFdhaXRMYXRjaCwgdGhlIGxh dGNoCi0JICogd2lsbCBub3Qgd2FpdC4gQnV0IGEgc2V0IGxhdGNoIGRvZXMgbm90IG5lY2Vz c2FyaWx5IG1lYW4gdGhhdCB0aGUgbG9jawotCSAqIGlzIGZyZWUgbm93LCBhcyB0aGVyZSBh cmUgbWFueSBvdGhlciBzb3VyY2VzIGZvciBsYXRjaCBzZXRzIHRoYW4KLQkgKiBzb21lYm9k eSByZWxlYXNpbmcgdGhlIGxvY2suCisJICogSWYgc29tZWJvZHkgd2FrZXMgdXMgYmV0d2Vl biBMV0xvY2tSZWxlYXNlIGFuZCBXYWl0SW50ZXJydXB0LAorCSAqIFdhaXRJbnRlcnJ1cHQg d2lsbCBub3Qgd2FpdC4gQnV0IGFuIGludGVycnVwdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBt ZWFuCisJICogdGhhdCB0aGUgbG9jayBpcyBmcmVlIG5vdywgYXMgdGhlcmUgYXJlIG1hbnkg b3RoZXIgc291cmNlcyBmb3IgdGhlCisJICogaW50ZXJydXB0IHRoYW4gc29tZWJvZHkgcmVs ZWFzaW5nIHRoZSBsb2NrLgogCSAqCi0JICogV2UgcHJvY2VzcyBpbnRlcnJ1cHRzIHdoZW5l dmVyIHRoZSBsYXRjaCBoYXMgYmVlbiBzZXQsIHNvIGNhbmNlbC9kaWUKLQkgKiBpbnRlcnJ1 cHRzIGFyZSBwcm9jZXNzZWQgcXVpY2tseS4gVGhpcyBtZWFucyB3ZSBtdXN0IG5vdCBtaW5k IGxvc2luZwotCSAqIGNvbnRyb2wgdG8gYSBjYW5jZWwvZGllIGludGVycnVwdCBoZXJlLiAg V2UgZG9uJ3QsIGJlY2F1c2Ugd2UgaGF2ZSBubwotCSAqIHNoYXJlZC1zdGF0ZS1jaGFuZ2Ug d29yayB0byBkbyBhZnRlciBiZWluZyBncmFudGVkIHRoZSBsb2NrICh0aGUKLQkgKiBncmFu dG9yIGRpZCBpdCBhbGwpLiAgV2UgZG8gaGF2ZSB0byB3b3JyeSBhYm91dCBjYW5jZWxpbmcg dGhlIGRlYWRsb2NrCi0JICogdGltZW91dCBhbmQgdXBkYXRpbmcgdGhlIGxvY2FsbG9jayB0 YWJsZSwgYnV0IGlmIHdlIGxvc2UgY29udHJvbCB0byBhbgotCSAqIGVycm9yLCBMb2NrRXJy b3JDbGVhbnVwIHdpbGwgZml4IHRoYXQgdXAuCisJICogV2UgcHJvY2VzcyBpbnRlcnJ1cHRz IHdoZW5ldmVyIHRoZSBpbnRlcnJ1cHQgaGFzIGJlZW4gc2V0LCBzbworCSAqIGNhbmNlbC9k aWUgaW50ZXJydXB0cyBhcmUgcHJvY2Vzc2VkIHF1aWNrbHkuIFRoaXMgbWVhbnMgd2UgbXVz dCBub3QKKwkgKiBtaW5kIGxvc2luZyBjb250cm9sIHRvIGEgY2FuY2VsL2RpZSBpbnRlcnJ1 cHQgaGVyZS4gIFdlIGRvbid0LCBiZWNhdXNlCisJICogd2UgaGF2ZSBubyBzaGFyZWQtc3Rh dGUtY2hhbmdlIHdvcmsgdG8gZG8gYWZ0ZXIgYmVpbmcgZ3JhbnRlZCB0aGUgbG9jaworCSAq ICh0aGUgZ3JhbnRvciBkaWQgaXQgYWxsKS4gIFdlIGRvIGhhdmUgdG8gd29ycnkgYWJvdXQg Y2FuY2VsaW5nIHRoZQorCSAqIGRlYWRsb2NrIHRpbWVvdXQgYW5kIHVwZGF0aW5nIHRoZSBs b2NhbGxvY2sgdGFibGUsIGJ1dCBpZiB3ZSBsb3NlCisJICogY29udHJvbCB0byBhbiBlcnJv ciwgTG9ja0Vycm9yQ2xlYW51cCB3aWxsIGZpeCB0aGF0IHVwLgogCSAqLwogCWRvCiAJewpA QCAtMTM5NCw5ICsxMzk3LDkgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQog CQl9CiAJCWVsc2UKIAkJewotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRD SF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJCSBQR19XQUlUX0xPQ0sg fCBsb2NhbGxvY2stPnRhZy5sb2NrLmxvY2t0YWdfdHlwZSk7Ci0JCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJB TCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCQkJIFBH X1dBSVRfTE9DSyB8IGxvY2FsbG9jay0+dGFnLmxvY2subG9ja3RhZ190eXBlKTsKKwkJCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCS8qIGNoZWNrIGZvciBkZWFk bG9ja3MgZmlyc3QsIGFzIHRoYXQncyBwcm9iYWJseSBsb2ctd29ydGh5ICovCiAJCQlpZiAo Z290X2RlYWRsb2NrX3RpbWVvdXQpCiAJCQl7CkBAIC0xNjg4LDcgKzE2OTEsNyBAQCBQcm9j U2xlZXAoTE9DQUxMT0NLICpsb2NhbGxvY2spCiAKIAogLyoKLSAqIFByb2NXYWtldXAgLS0g d2FrZSB1cCBhIHByb2Nlc3MgYnkgc2V0dGluZyBpdHMgbGF0Y2guCisgKiBQcm9jV2FrZXVw IC0tIHdha2UgdXAgYSBwcm9jZXNzIGJ5IHNlbmRpbmcgaXQgYW4gaW50ZXJydXB0LgogICoK ICAqCSBBbHNvIHJlbW92ZSB0aGUgcHJvY2VzcyBmcm9tIHRoZSB3YWl0IHF1ZXVlIGFuZCBz ZXQgaXRzIGxpbmtzIGludmFsaWQuCiAgKgpAQCAtMTcxNyw3ICsxNzIwLDcgQEAgUHJvY1dh a2V1cChQR1BST0MgKnByb2MsIFByb2NXYWl0U3RhdHVzIHdhaXRTdGF0dXMpCiAJcGdfYXRv bWljX3dyaXRlX3U2NCgmTXlQcm9jLT53YWl0U3RhcnQsIDApOwogCiAJLyogQW5kIGF3YWtl biBpdCAqLwotCVNldExhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOworCVNlbmRJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwsIEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwogfQogCiAv KgpAQCAtMTg2OSw0NSArMTg3MiwxOSBAQCBDaGVja0RlYWRMb2NrQWxlcnQodm9pZCkKIAln b3RfZGVhZGxvY2tfdGltZW91dCA9IHRydWU7CiAKIAkvKgotCSAqIEhhdmUgdG8gc2V0IHRo ZSBsYXRjaCBhZ2FpbiwgZXZlbiBpZiBoYW5kbGVfc2lnX2FsYXJtIGFscmVhZHkgZGlkLiBC YWNrCi0JICogdGhlbiBnb3RfZGVhZGxvY2tfdGltZW91dCB3YXNuJ3QgeWV0IHNldC4uLiBJ dCdzIHVubGlrZWx5IHRoYXQgdGhpcwotCSAqIGV2ZXIgd291bGQgYmUgYSBwcm9ibGVtLCBi dXQgc2V0dGluZyBhIHNldCBsYXRjaCBhZ2FpbiBpcyBjaGVhcC4KKwkgKiBIYXZlIHRvIHJh aXNlIHRoZSBpbnRlcnJ1cHQgYWdhaW4sIGV2ZW4gaWYgaGFuZGxlX3NpZ19hbGFybSBhbHJl YWR5CisJICogZGlkLiBCYWNrIHRoZW4gZ290X2RlYWRsb2NrX3RpbWVvdXQgd2Fzbid0IHll dCBzZXQuLi4gSXQncyB1bmxpa2VseQorCSAqIHRoYXQgdGhpcyBldmVyIHdvdWxkIGJlIGEg cHJvYmxlbSwgYnV0IHJhaXNpbmcgYW4gaW50ZXJydXB0IGFnYWluIGlzCisJICogY2hlYXAu CiAJICoKIAkgKiBOb3RlIHRoYXQsIHdoZW4gdGhpcyBmdW5jdGlvbiBydW5zIGluc2lkZSBw cm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcigpLAotCSAqIHRoZSBoYW5kbGVyIGZ1bmN0aW9u IHNldHMgdGhlIGxhdGNoIGFnYWluIGFmdGVyIHRoZSBsYXRjaCBpcyBzZXQgaGVyZS4KKwkg KiB0aGUgaGFuZGxlciBmdW5jdGlvbiByYWlzZXMgdGhlIGludGVycnVwdCBhZ2FpbiBhZnRl ciB0aGUgaW50ZXJydXB0IGlzCisJICogcmFpc2VkIGhlcmUuCiAJICovCi0JU2V0TGF0Y2go TXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCWVycm5v ID0gc2F2ZV9lcnJubzsKIH0KIAotLyoKLSAqIFByb2NXYWl0Rm9yU2lnbmFsIC0gd2FpdCBm b3IgYSBzaWduYWwgZnJvbSBhbm90aGVyIGJhY2tlbmQuCi0gKgotICogQXMgdGhpcyB1c2Vz IHRoZSBnZW5lcmljIHByb2Nlc3MgbGF0Y2ggdGhlIGNhbGxlciBoYXMgdG8gYmUgcm9idXN0 IGFnYWluc3QKLSAqIHVucmVsYXRlZCB3YWtldXBzOiBBbHdheXMgY2hlY2sgdGhhdCB0aGUg ZGVzaXJlZCBzdGF0ZSBoYXMgb2NjdXJyZWQsIGFuZAotICogd2FpdCBhZ2FpbiBpZiBub3Qu Ci0gKi8KLXZvaWQKLVByb2NXYWl0Rm9yU2lnbmFsKHVpbnQzMiB3YWl0X2V2ZW50X2luZm8p Ci17Ci0JKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElU X09OX1BNX0RFQVRILCAwLAotCQkJCQkgd2FpdF9ldmVudF9pbmZvKTsKLQlSZXNldExhdGNo KE15TGF0Y2gpOwotCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci19Ci0KLS8qCi0gKiBQcm9j U2VuZFNpZ25hbCAtIHNldCB0aGUgbGF0Y2ggb2YgYSBiYWNrZW5kIGlkZW50aWZpZWQgYnkg UHJvY051bWJlcgotICovCi12b2lkCi1Qcm9jU2VuZFNpZ25hbChQcm9jTnVtYmVyIHByb2NO dW1iZXIpCi17Ci0JaWYgKHByb2NOdW1iZXIgPCAwIHx8IHByb2NOdW1iZXIgPj0gUHJvY0ds b2JhbC0+YWxsUHJvY0NvdW50KQotCQllbG9nKEVSUk9SLCAicHJvY051bWJlciBvdXQgb2Yg cmFuZ2UiKTsKLQotCVNldExhdGNoKCZQcm9jR2xvYmFsLT5hbGxQcm9jc1twcm9jTnVtYmVy XS5wcm9jTGF0Y2gpOwotfQotCiAvKgogICogQmVjb21lTG9ja0dyb3VwTGVhZGVyIC0gZGVz aWduYXRlIHByb2Nlc3MgYXMgbG9jayBncm91cCBsZWFkZXIKICAqCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9z eW5jL3N5bmMuYwppbmRleCBhYjcxMzdkMGZmLi5iZWM0MmY0MDYwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2Uvc3luYy9zeW5jLmMKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJwb3J0YWJpbGl0 eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dyaXRlci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL21kLmgiCiAj aW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CkBAIC02MTEsOCArNjExLDggQEAgUmVnaXN0ZXJTeW5jUmVxdWVzdChjb25zdCBGaWxlVGFn ICpmdGFnLCBTeW5jUmVxdWVzdFR5cGUgdHlwZSwKIAkJaWYgKHJldCB8fCAoIXJldCAmJiAh cmV0cnlPbkVycm9yKSkKIAkJCWJyZWFrOwogCi0JCVdhaXRMYXRjaChOVUxMLCBXTF9FWElU X09OX1BNX0RFQVRIIHwgV0xfVElNRU9VVCwgMTAsCi0JCQkJICBXQUlUX0VWRU5UX1JFR0lT VEVSX1NZTkNfUkVRVUVTVCk7CisJCVdhaXRJbnRlcnJ1cHQoMCwgV0xfRVhJVF9PTl9QTV9E RUFUSCB8IFdMX1RJTUVPVVQsIDEwLAorCQkJCQkgIFdBSVRfRVZFTlRfUkVHSVNURVJfU1lO Q19SRVFVRVNUKTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4 IDRiOTg1YmQwNTYuLjNjYjU1NGZlNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTYxLDYg KzYxLDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRl ICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3Iu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgpAQCAtNTMxLDE1ICs1MzIsMTUgQEAgUHJvY2Vzc0NsaWVudFJlYWRJbnRl cnJ1cHQoYm9vbCBibG9ja2VkKQogCQkvKgogCQkgKiBXZSdyZSBkeWluZy4gIElmIHRoZXJl IGlzIG5vIGRhdGEgYXZhaWxhYmxlIHRvIHJlYWQsIHRoZW4gaXQncyBzYWZlCiAJCSAqIChh bmQgc2FuZSkgdG8gaGFuZGxlIHRoYXQgbm93LiAgSWYgd2UgaGF2ZW4ndCB0cmllZCB0byBy ZWFkIHlldCwKLQkJICogbWFrZSBzdXJlIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldCwgc28g dGhhdCBpZiB0aGVyZSBpcyBubyBkYXRhCisJCSAqIG1ha2Ugc3VyZSB0aGUgaW50ZXJydXB0 IGZsYWcgaXMgc2V0LCBzbyB0aGF0IGlmIHRoZXJlIGlzIG5vIGRhdGEKIAkJICogdGhlbiB3 ZSdsbCBjb21lIGJhY2sgaGVyZSBhbmQgZGllLiAgSWYgd2UncmUgZG9uZSByZWFkaW5nLCBh bHNvCi0JCSAqIG1ha2Ugc3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQsIGFzIHdlIG1p Z2h0J3ZlIHVuZGVzaXJhYmx5CisJCSAqIG1ha2Ugc3VyZSB0aGUgaW50ZXJydXB0IGZsYWcg aXMgc2V0LCBhcyB3ZSBtaWdodCd2ZSB1bmRlc2lyYWJseQogCQkgKiBjbGVhcmVkIGl0IHdo aWxlIHJlYWRpbmcuCiAJCSAqLwogCQlpZiAoYmxvY2tlZCkKIAkJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CiAJCWVsc2UKLQkJCVNldExhdGNoKE15TGF0Y2gpOworCQkJUmFpc2VJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAogCWVycm5vID0gc2F2ZV9lcnJubzsK QEAgLTU2NSw5ICs1NjYsOSBAQCBQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoYm9vbCBi bG9ja2VkKQogCQkgKiBXZSdyZSBkeWluZy4gIElmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHdy aXRlLCB0aGVuIHdlIHNob3VsZCBoYW5kbGUKIAkJICogdGhhdCBpbW1lZGlhdGVseSwgZWxz ZSBhIHN0dWNrIGNsaWVudCBjb3VsZCBpbmRlZmluaXRlbHkgZGVsYXkgb3VyCiAJCSAqIHJl c3BvbnNlIHRvIHRoZSBzaWduYWwuICBJZiB3ZSBoYXZlbid0IHRyaWVkIHRvIHdyaXRlIHll dCwgbWFrZQotCQkgKiBzdXJlIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldCwgc28gdGhhdCBp ZiB0aGUgd3JpdGUgd291bGQgYmxvY2sKKwkJICogc3VyZSB0aGUgaW50ZXJydXB0IGZsYWcg aXMgc2V0LCBzbyB0aGF0IGlmIHRoZSB3cml0ZSB3b3VsZCBibG9jawogCQkgKiB0aGVuIHdl J2xsIGNvbWUgYmFjayBoZXJlIGFuZCBkaWUuICBJZiB3ZSdyZSBkb25lIHdyaXRpbmcsIGFs c28KLQkJICogbWFrZSBzdXJlIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldCwgYXMgd2UgbWln aHQndmUgdW5kZXNpcmFibHkKKwkJICogbWFrZSBzdXJlIHRoZSBpbnRlcnJ1cHQgZmxhZyBp cyBzZXQsIGFzIHdlIG1pZ2h0J3ZlIHVuZGVzaXJhYmx5CiAJCSAqIGNsZWFyZWQgaXQgd2hp bGUgd3JpdGluZy4KIAkJICovCiAJCWlmIChibG9ja2VkKQpAQCAtNTkxLDcgKzU5Miw3IEBA IFByb2Nlc3NDbGllbnRXcml0ZUludGVycnVwdChib29sIGJsb2NrZWQpCiAJCQl9CiAJCX0K IAkJZWxzZQotCQkJU2V0TGF0Y2goTXlMYXRjaCk7CisJCQlSYWlzZUludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7CiAJfQogCiAJZXJybm8gPSBzYXZlX2Vycm5vOwpAQCAtMzAyNCwx MiArMzAyNSwxMiBAQCBkaWUoU0lHTkFMX0FSR1MpCiAJLyogZm9yIHRoZSBjdW11bGF0aXZl IHN0YXRzIHN5c3RlbSAqLwogCXBnU3RhdFNlc3Npb25FbmRDYXVzZSA9IERJU0NPTk5FQ1Rf S0lMTEVEOwogCi0JLyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcgd2Fp dGluZyBvbiB0aGUgcHJvY2VzcyBsYXRjaCAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCS8q IElmIHdlJ3JlIHN0aWxsIGhlcmUsIHdha2VuIGFueXRoaW5nIHdhaXRpbmcgb24gdGhlIGlu dGVycnVwdCAqLworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCS8q CiAJICogSWYgd2UncmUgaW4gc2luZ2xlIHVzZXIgbW9kZSwgd2Ugd2FudCB0byBxdWl0IGlt bWVkaWF0ZWx5IC0gd2UgY2FuJ3QKLQkgKiByZWx5IG9uIGxhdGNoZXMgYXMgdGhleSB3b3Vs ZG4ndCB3b3JrIHdoZW4gc3RkaW4vc3Rkb3V0IGlzIGEgZmlsZS4KKwkgKiByZWx5IG9uIGlu dGVycnVwdHMgYXMgdGhleSB3b3VsZG4ndCB3b3JrIHdoZW4gc3RkaW4vc3Rkb3V0IGlzIGEg ZmlsZS4KIAkgKiBSYXRoZXIgdWdseSwgYnV0IGl0J3MgdW5saWtlbHkgdG8gYmUgd29ydGh3 aGlsZSB0byBpbnZlc3QgbXVjaCBtb3JlCiAJICogZWZmb3J0IGp1c3QgZm9yIHRoZSBiZW5l Zml0IG9mIHNpbmdsZSB1c2VyIG1vZGUuCiAJICovCkBAIC0zMDUzLDggKzMwNTQsOCBAQCBT dGF0ZW1lbnRDYW5jZWxIYW5kbGVyKFNJR05BTF9BUkdTKQogCQlRdWVyeUNhbmNlbFBlbmRp bmcgPSB0cnVlOwogCX0KIAotCS8qIElmIHdlJ3JlIHN0aWxsIGhlcmUsIHdha2VuIGFueXRo aW5nIHdhaXRpbmcgb24gdGhlIHByb2Nlc3MgbGF0Y2ggKi8KLQlTZXRMYXRjaChNeUxhdGNo KTsKKwkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJlLCB3YWtlbiBhbnl0aGluZyB3YWl0aW5nIG9u IHRoZSBpbnRlcnJ1cHQgKi8KKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiB9CiAKIC8qIHNpZ25hbCBoYW5kbGVyIGZvciBmbG9hdGluZyBwb2ludCBleGNlcHRpb24g Ki8KQEAgLTMwODAsNyArMzA4MSw3IEBAIEhhbmRsZVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1 cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJUmVjb3ZlcnlDb25mbGljdFBlbmRpbmdS ZWFzb25zW3JlYXNvbl0gPSB0cnVlOwogCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1 ZTsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQkvKiBsYXRjaCB3aWxsIGJlIHNldCBi eSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLworCS8qIElOVEVSUlVQVF9HRU5FUkFM IHdpbGwgYmUgcmFpc2VkIGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L21pc2MuYwppbmRleCAxYWE4YmJiMzA2Li41NDgyZGYxNDM4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9taXNjLmMKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJwb3N0 bWFzdGVyL3N5c2xvZ2dlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIu aCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidGNvcC90Y29w cHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMv Zm1ncm9pZHMuaCIKQEAgLTM3MywxNiArMzczLDE2IEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9O X0FSR1MpCiAJZmxvYXQ4CQllbmR0aW1lOwogCiAJLyoKLQkgKiBXZSBzbGVlcCB1c2luZyBX YWl0TGF0Y2gsIHRvIGVuc3VyZSB0aGF0IHdlJ2xsIHdha2UgdXAgcHJvbXB0bHkgaWYgYW4K LQkgKiBpbXBvcnRhbnQgc2lnbmFsIChzdWNoIGFzIFNJR0FMUk0gb3IgU0lHSU5UKSBhcnJp dmVzLiAgQmVjYXVzZQotCSAqIFdhaXRMYXRjaCdzIHVwcGVyIGxpbWl0IG9mIGRlbGF5IGlz IElOVF9NQVggbWlsbGlzZWNvbmRzLCBhbmQgdGhlIHVzZXIKLQkgKiBtaWdodCBhc2sgZm9y IG1vcmUgdGhhbiB0aGF0LCB3ZSBzbGVlcCBmb3IgYXQgbW9zdCAxMCBtaW51dGVzIGFuZCB0 aGVuCi0JICogbG9vcC4KKwkgKiBXZSBzbGVlcCB1c2luZyBXYWl0SW50ZXJydXB0LCB0byBl bnN1cmUgdGhhdCB3ZSdsbCB3YWtlIHVwIHByb21wdGx5IGlmCisJICogYW4gaW1wb3J0YW50 IHNpZ25hbCAoc3VjaCBhcyBTSUdBTFJNIG9yIFNJR0lOVCkgYXJyaXZlcy4gIEJlY2F1c2UK KwkgKiBXYWl0SW50ZXJydXB0J3MgdXBwZXIgbGltaXQgb2YgZGVsYXkgaXMgSU5UX01BWCBt aWxsaXNlY29uZHMsIGFuZCB0aGUKKwkgKiB1c2VyIG1pZ2h0IGFzayBmb3IgbW9yZSB0aGFu IHRoYXQsIHdlIHNsZWVwIGZvciBhdCBtb3N0IDEwIG1pbnV0ZXMgYW5kCisJICogdGhlbiBs b29wLgogCSAqCiAJICogQnkgY29tcHV0aW5nIHRoZSBpbnRlbmRlZCBzdG9wIHRpbWUgaW5p dGlhbGx5LCB3ZSBhdm9pZCBhY2N1bXVsYXRpb24gb2YKIAkgKiBleHRyYSBkZWxheSBhY3Jv c3MgbXVsdGlwbGUgc2xlZXBzLiAgVGhpcyBhbHNvIGVuc3VyZXMgd2Ugd29uJ3QgZGVsYXkK LQkgKiBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCB0aW1lIHdoZW4gV2FpdExhdGNoIGlzIHRl cm1pbmF0ZWQgZWFybHkgYnkgYQotCSAqIG5vbi1xdWVyeS1jYW5jZWxpbmcgc2lnbmFsIHN1 Y2ggYXMgU0lHSFVQLgorCSAqIGxlc3MgdGhhbiB0aGUgc3BlY2lmaWVkIHRpbWUgd2hlbiBX YWl0SW50ZXJydXB0IGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkKKwkgKiBhIG5vbi1xdWVyeS1j YW5jZWxpbmcgc2lnbmFsIHN1Y2ggYXMgU0lHSFVQLgogCSAqLwogI2RlZmluZSBHZXROb3dG bG9hdCgpCSgoZmxvYXQ4KSBHZXRDdXJyZW50VGltZXN0YW1wKCkgLyAxMDAwMDAwLjApCiAK QEAgLTQwMywxMSArNDAzLDExIEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVs c2UKIAkJCWJyZWFrOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ CSBkZWxheV9tcywKLQkJCQkJCSBXQUlUX0VWRU5UX1BHX1NMRUVQKTsKLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VO RVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkJIGRlbGF5X21zLAorCQkJCQkJCSBXQUlUX0VWRU5UX1BHX1NM RUVQKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAogCVBH X1JFVFVSTl9WT0lEKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGlt ZXN0YW1wLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKaW5kZXggZTAw Y2QzYzk2OS4uZjNlM2NhZmMwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RpbWVzdGFtcC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYwpA QCAtMTczOCwxMCArMTczOCwxMCBAQCBUaW1lc3RhbXBEaWZmZXJlbmNlKFRpbWVzdGFtcFR6 IHN0YXJ0X3RpbWUsIFRpbWVzdGFtcFR6IHN0b3BfdGltZSwKICAqIFRpbWVzdGFtcERpZmZl cmVuY2VNaWxsaXNlY29uZHMgLS0gY29udmVydCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3 bwogICogCQl0aW1lc3RhbXBzIGludG8gaW50ZWdlciBtaWxsaXNlY29uZHMKICAqCi0gKiBU aGlzIGlzIHR5cGljYWxseSB1c2VkIHRvIGNhbGN1bGF0ZSBhIHdhaXQgdGltZW91dCBmb3Ig V2FpdExhdGNoKCkKKyAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsY3VsYXRlIGEg d2FpdCB0aW1lb3V0IGZvciBXYWl0SW50ZXJydXB0KCkKICAqIG9yIGEgcmVsYXRlZCBmdW5j dGlvbi4gIFRoZSBjaG9pY2Ugb2YgImxvbmciIGFzIHRoZSByZXN1bHQgdHlwZQogICogaXMg dG8gaGFybW9uaXplIHdpdGggdGhhdDsgZnVydGhlcm1vcmUsIHdlIGNsYW1wIHRoZSByZXN1 bHQgdG8gYXQgbW9zdAotICogSU5UX01BWCBtaWxsaXNlY29uZHMsIGJlY2F1c2UgdGhhdCdz IGFsbCB0aGF0IFdhaXRMYXRjaCgpIGFsbG93cy4KKyAqIElOVF9NQVggbWlsbGlzZWNvbmRz LCBiZWNhdXNlIHRoYXQncyBhbGwgdGhhdCBXYWl0SW50ZXJydXB0KCkgYWxsb3dzLgogICoK ICAqIFdlIGV4cGVjdCBzdGFydF90aW1lIDw9IHN0b3BfdGltZS4gIElmIG5vdCwgd2UgcmV0 dXJuIHplcm8sCiAgKiBzaW5jZSB0aGVuIHdlJ3JlIGFscmVhZHkgcGFzdCB0aGUgcHJldmlv dXNseSBkZXRlcm1pbmVkIHN0b3BfdGltZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMK aW5kZXggMDNhNTQ0NTFhYy4uY2I1MzQzZDI4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9i YWxzLmMKQEAgLTUyLDE1ICs1Miw2IEBAIGJvb2wJCU15Q2FuY2VsS2V5VmFsaWQgPSBmYWxz ZTsKIGludDMyCQlNeUNhbmNlbEtleSA9IDA7CiBpbnQJCQlNeVBNQ2hpbGRTbG90OwogCi0v KgotICogTXlMYXRjaCBwb2ludHMgdG8gdGhlIGxhdGNoIHRoYXQgc2hvdWxkIGJlIHVzZWQg Zm9yIHNpZ25hbCBoYW5kbGluZyBieSB0aGUKLSAqIGN1cnJlbnQgcHJvY2Vzcy4gSXQgd2ls bCBlaXRoZXIgcG9pbnQgdG8gYSBwcm9jZXNzIGxvY2FsIGxhdGNoIGlmIHRoZQotICogY3Vy cmVudCBwcm9jZXNzIGRvZXMgbm90IGhhdmUgYSBQR1BST0MgZW50cnkgaW4gdGhhdCBtb21l bnQsIG9yIHRvCi0gKiBQR1BST0MtPnByb2NMYXRjaCBpZiBpdCBoYXMuIFRodXMgaXQgY2Fu IGFsd2F5cyBiZSB1c2VkIGluIHNpZ25hbCBoYW5kbGVycywKLSAqIHdpdGhvdXQgY2hlY2tp bmcgZm9yIGl0cyBleGlzdGVuY2UuCi0gKi8KLXN0cnVjdCBMYXRjaCAqTXlMYXRjaDsKLQog LyoKICAqIERhdGFEaXIgaXMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHRvcCBsZXZlbCBv ZiB0aGUgUEdEQVRBIGRpcmVjdG9yeSB0cmVlLgogICogRXhjZXB0IGR1cmluZyBlYXJseSBz dGFydHVwLCB0aGlzIGlzIGFsc28gdGhlIHNlcnZlcidzIHdvcmtpbmcgZGlyZWN0b3J5Owpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCmluZGV4IDNiN2IyZWJlYzAuLmI1MDdmNGMz ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTQyLDggKzQyLDggQEAK ICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVk ZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKICNp bmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CkBAIC02Niw4ICs2Niw2IEBAIEJhY2tlbmRUeXBlIE15QmFja2VuZFR5cGU7CiAvKiBMaXN0 IG9mIGxvY2sgZmlsZXMgdG8gYmUgcmVtb3ZlZCBhdCBwcm9jIGV4aXQgKi8KIHN0YXRpYyBM aXN0ICpsb2NrX2ZpbGVzID0gTklMOwogCi1zdGF0aWMgTGF0Y2ggTG9jYWxMYXRjaERhdGE7 Ci0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCQlpZ25vcmluZyBzeXN0ZW0gaW5kZXhlcyBzdXBwb3J0 IHN0dWZmCiAgKgpAQCAtMTMzLDEwICsxMzEsOSBAQCBJbml0UG9zdG1hc3RlckNoaWxkKHZv aWQpCiAJcHFpbml0bWFzaygpOwogI2VuZGlmCiAKLQkvKiBJbml0aWFsaXplIHByb2Nlc3Mt bG9jYWwgbGF0Y2ggc3VwcG9ydCAqLwotCUluaXRpYWxpemVMYXRjaFN1cHBvcnQoKTsKLQlJ bml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsKLQlJbml0aWFsaXplTGF0Y2hXYWl0U2V0KCk7CisJ LyogSW5pdGlhbGl6ZSBwcm9jZXNzLWxvY2FsIGludGVycnVwdCBzdXBwb3J0ICovCisJSW5p dGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQoKTsKKwlJbml0aWFsaXplSW50ZXJydXB0V2FpdFNl dCgpOwogCiAJLyoKIAkgKiBJZiBwb3NzaWJsZSwgbWFrZSB0aGlzIHByb2Nlc3MgYSBncm91 cCBsZWFkZXIsIHNvIHRoYXQgdGhlIHBvc3RtYXN0ZXIKQEAgLTE5NCwxMCArMTkxLDkgQEAg SW5pdFN0YW5kYWxvbmVQcm9jZXNzKGNvbnN0IGNoYXIgKmFyZ3YwKQogCiAJSW5pdFByb2Nl c3NHbG9iYWxzKCk7CiAKLQkvKiBJbml0aWFsaXplIHByb2Nlc3MtbG9jYWwgbGF0Y2ggc3Vw cG9ydCAqLwotCUluaXRpYWxpemVMYXRjaFN1cHBvcnQoKTsKLQlJbml0UHJvY2Vzc0xvY2Fs TGF0Y2goKTsKLQlJbml0aWFsaXplTGF0Y2hXYWl0U2V0KCk7CisJLyogSW5pdGlhbGl6ZSBw cm9jZXNzLWxvY2FsIGludGVycnVwdCBzdXBwb3J0ICovCisJSW5pdGlhbGl6ZVdhaXRFdmVu dFN1cHBvcnQoKTsKKwlJbml0aWFsaXplSW50ZXJydXB0V2FpdFNldCgpOwogCiAJLyoKIAkg KiBGb3IgY29uc2lzdGVuY3kgd2l0aCBJbml0UG9zdG1hc3RlckNoaWxkLCBpbml0aWFsaXpl IHNpZ25hbCBtYXNrIGhlcmUuCkBAIC0yMTgsNDggKzIxNCw2IEBAIEluaXRTdGFuZGFsb25l UHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCkKIAkJZ2V0X3BrZ2xpYl9wYXRoKG15X2V4ZWNf cGF0aCwgcGtnbGliX3BhdGgpOwogfQogCi12b2lkCi1Td2l0Y2hUb1NoYXJlZExhdGNoKHZv aWQpCi17Ci0JQXNzZXJ0KE15TGF0Y2ggPT0gJkxvY2FsTGF0Y2hEYXRhKTsKLQlBc3NlcnQo TXlQcm9jICE9IE5VTEwpOwotCi0JTXlMYXRjaCA9ICZNeVByb2MtPnByb2NMYXRjaDsKLQot CWlmIChGZUJlV2FpdFNldCkKLQkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJl V2FpdFNldExhdGNoUG9zLCBXTF9MQVRDSF9TRVQsCi0JCQkJCQlNeUxhdGNoKTsKLQotCS8q Ci0JICogU2V0IHRoZSBzaGFyZWQgbGF0Y2ggYXMgdGhlIGxvY2FsIG9uZSBtaWdodCBoYXZl IGJlZW4gc2V0LiBUaGlzCi0JICogc2hvdWxkbid0IG5vcm1hbGx5IGJlIG5lY2Vzc2FyeSBh cyBjb2RlIGlzIHN1cHBvc2VkIHRvIGNoZWNrIHRoZQotCSAqIGNvbmRpdGlvbiBiZWZvcmUg d2FpdGluZyBmb3IgdGhlIGxhdGNoLCBidXQgYSBiaXQgY2FyZSBjYW4ndCBodXJ0LgotCSAq LwotCVNldExhdGNoKE15TGF0Y2gpOwotfQotCi12b2lkCi1Jbml0UHJvY2Vzc0xvY2FsTGF0 Y2godm9pZCkKLXsKLQlNeUxhdGNoID0gJkxvY2FsTGF0Y2hEYXRhOwotCUluaXRMYXRjaChN eUxhdGNoKTsKLX0KLQotdm9pZAotU3dpdGNoQmFja1RvTG9jYWxMYXRjaCh2b2lkKQotewot CUFzc2VydChNeUxhdGNoICE9ICZMb2NhbExhdGNoRGF0YSk7Ci0JQXNzZXJ0KE15UHJvYyAh PSBOVUxMICYmIE15TGF0Y2ggPT0gJk15UHJvYy0+cHJvY0xhdGNoKTsKLQotCU15TGF0Y2gg PSAmTG9jYWxMYXRjaERhdGE7Ci0KLQlpZiAoRmVCZVdhaXRTZXQpCi0JCU1vZGlmeVdhaXRF dmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRMYXRjaFBvcywgV0xfTEFUQ0hfU0VULAot CQkJCQkJTXlMYXRjaCk7Ci0KLQlTZXRMYXRjaChNeUxhdGNoKTsKLX0KLQogLyoKICAqIFJl dHVybiBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEJhY2tl bmRUeXBlLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCA1YjY1N2Ez ZjEzLi5jYzk2Zjc1OTAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bv c3Rpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC00 Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgog I2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpA QCAtMTM4OCw3ICsxMzg5LDcgQEAgVHJhbnNhY3Rpb25UaW1lb3V0SGFuZGxlcih2b2lkKQog ewogCVRyYW5zYWN0aW9uVGltZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVwdFBlbmRp bmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOTYsNyArMTM5Nyw3IEBA IElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJSWRs ZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVw dFBlbmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE0MDQsNyArMTQw NSw3IEBAIElkbGVTZXNzaW9uVGltZW91dEhhbmRsZXIodm9pZCkKIHsKIAlJZGxlU2Vzc2lv blRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlT ZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDEyLDcgKzE0MTMsNyBAQCBJZGxlU3RhdHNVcGRh dGVUaW1lb3V0SGFuZGxlcih2b2lkKQogewogCUlkbGVTdGF0c1VwZGF0ZVRpbWVvdXRQZW5k aW5nID0gdHJ1ZTsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxh dGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIHN0YXRp YyB2b2lkCkBAIC0xNDIwLDcgKzE0MjEsNyBAQCBDbGllbnRDaGVja1RpbWVvdXRIYW5kbGVy KHZvaWQpCiB7CiAJQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZyA9IHRydWU7CiAJSW50 ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Rp bWVvdXQuYwppbmRleCBlYzdlNTcwOTIwLi40NGI4Y2VhYmVlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3RpbWVvdXQuYwpAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+ CiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgi CisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1l b3V0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKQEAgLTM3MSwxMCArMzcx LDEwIEBAIGhhbmRsZV9zaWdfYWxhcm0oU0lHTkFMX0FSR1MpCiAJSE9MRF9JTlRFUlJVUFRT KCk7CiAKIAkvKgotCSAqIFNJR0FMUk0gaXMgYWx3YXlzIGNhdXNlIGZvciB3YWtpbmcgYW55 dGhpbmcgd2FpdGluZyBvbiB0aGUgcHJvY2VzcwotCSAqIGxhdGNoLgorCSAqIFNJR0FMUk0g aXMgYWx3YXlzIGNhdXNlIGZvciB3YWtpbmcgYW55dGhpbmcgd2FpdGluZyBvbgorCSAqIElO VEVSUlVQVF9HRU5FUkFMLgogCSAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCS8qCiAJICogQWx3YXlzIHJlc2V0IHNp Z25hbF9wZW5kaW5nLCBldmVuIGlmICFhbGFybV9lbmFibGVkLCBzaW5jZSBpbmRlZWQgbm8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggNzBkMzMyMjZjYi4uMDY1ZWMzN2RhNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9tY3h0LmMKQEAgLTEyNzMsNyArMTI3Myw3IEBAIEhhbmRsZUxvZ01l bW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKIHsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1 ZTsKIAlMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IHRydWU7Ci0JLyogbGF0Y2ggd2lsbCBi ZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KKwkvKiBJTlRFUlJVUFRf R0VORVJBTCB3aWxsIGJlIHJhaXNlZCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAq LwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAppbmRleCA2OWZmZTU0OThmLi43ZGFl YzdlZjgzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMTQsNiArMTQsOCBAQAogI2lm bmRlZiBQQVJBTExFTF9ICiAjZGVmaW5lIFBBUkFMTEVMX0gKIAorI2luY2x1ZGUgPHNpZ25h bC5oPgorCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAibGliL2ls aXN0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oIGIvc3JjL2luY2x1ZGUv bGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oCmluZGV4IDQ2YTkwZGZiMDIuLmI4ODE5Y2Vj NjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMu aAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1mZS1oZWxwZXJzLmgKQEAgLTQz LDcgKzQzLDcgQEAKICNpbmNsdWRlICJsaWJwcS1mZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy90 aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKQEAgLTE3Nyw4 ICsxNzcsOCBAQCBsaWJwcXNydl9jb25uZWN0X2ludGVybmFsKFBHY29ubiAqY29ubiwgdWlu dDMyIHdhaXRfZXZlbnRfaW5mbykKIAkJcmV0dXJuOwogCiAJLyoKLQkgKiBXYWl0TGF0Y2hP clNvY2tldCgpIGNhbiBjb25jZWl2YWJseSBmYWlsLCBoYW5kbGUgdGhhdCBjYXNlIGhlcmUg aW5zdGVhZAotCSAqIG9mIHJlcXVpcmluZyBhbGwgY2FsbGVycyB0byBkbyBzby4KKwkgKiBX YWl0SW50ZXJydXB0T3JTb2NrZXQoKSBjYW4gY29uY2VpdmFibHkgZmFpbCwgaGFuZGxlIHRo YXQgY2FzZSBoZXJlCisJICogaW5zdGVhZCBvZiByZXF1aXJpbmcgYWxsIGNhbGxlcnMgdG8g ZG8gc28uCiAJICovCiAJUEdfVFJZKCk7CiAJewpAQCAtMjA5LDE2ICsyMDksMTYgQEAgbGli cHFzcnZfY29ubmVjdF9pbnRlcm5hbChQR2Nvbm4gKmNvbm4sIHVpbnQzMiB3YWl0X2V2ZW50 X2luZm8pCiAJCQllbHNlCiAJCQkJaW9fZmxhZyA9IFdMX1NPQ0tFVF9XUklURUFCTEU7CiAK LQkJCXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkJICAgV0xfRVhJ VF9PTl9QTV9ERUFUSCB8IFdMX0xBVENIX1NFVCB8IGlvX2ZsYWcsCi0JCQkJCQkJCSAgIFBR c29ja2V0KGNvbm4pLAotCQkJCQkJCQkgICAwLAotCQkJCQkJCQkgICB3YWl0X2V2ZW50X2lu Zm8pOworCQkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VO RVJBTCwKKwkJCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9JTlRFUlJVUFQg fCBpb19mbGFnLAorCQkJCQkJCQkJICAgUFFzb2NrZXQoY29ubiksCisJCQkJCQkJCQkgICAw LAorCQkJCQkJCQkJICAgd2FpdF9ldmVudF9pbmZvKTsKIAogCQkJLyogSW50ZXJydXB0ZWQ/ ICovCi0JCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQlpZiAocmMgJiBXTF9JTlRFUlJV UFQpCiAJCQl7Ci0JCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCQlDbGVhckludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJ CX0KIApAQCAtMzQxLDE3ICszNDEsMTcgQEAgbGlicHFzcnZfZ2V0X3Jlc3VsdChQR2Nvbm4g KmNvbm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJewogCQlpbnQJCQlyYzsKIAotCQly YyA9IFdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfRVhJVF9PTl9Q TV9ERUFUSCB8IFdMX0xBVENIX1NFVCB8Ci0JCQkJCQkJICAgV0xfU09DS0VUX1JFQURBQkxF LAotCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLAotCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAg d2FpdF9ldmVudF9pbmZvKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJ TlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdM X0lOVEVSUlVQVCB8CisJCQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSwKKwkJCQkJCQkJ ICAgUFFzb2NrZXQoY29ubiksCisJCQkJCQkJCSAgIDAsCisJCQkJCQkJCSAgIHdhaXRfZXZl bnRfaW5mbyk7CiAKIAkJLyogSW50ZXJydXB0ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xBVENI X1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQogCkBAIC00MDcsNyArNDA3LDcgQEAgbGlicHFz cnZfY2FuY2VsKFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogZW5kdGltZSkKIAkJCVBvc3Rn cmVzUG9sbGluZ1N0YXR1c1R5cGUgcG9sbHJlczsKIAkJCVRpbWVzdGFtcFR6IG5vdzsKIAkJ CWxvbmcJCWN1cl90aW1lb3V0OwotCQkJaW50CQkJd2FpdEV2ZW50cyA9IFdMX0xBVENIX1NF VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCQkJaW50CQkJd2FpdEV2 ZW50cyA9IFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI OwogCiAJCQlwb2xscmVzID0gUFFjYW5jZWxQb2xsKGNhbmNlbF9jb25uKTsKIAkJCWlmIChw b2xscmVzID09IFBHUkVTX1BPTExJTkdfT0spCkBAIC00MzYsMTAgKzQzNiwxMSBAQCBsaWJw cXNydl9jYW5jZWwoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lKQogCQkJfQog CiAJCQkvKiBTbGVlcCB1bnRpbCB0aGVyZSdzIHNvbWV0aGluZyB0byBkbyAqLwotCQkJV2Fp dExhdGNoT3JTb2NrZXQoTXlMYXRjaCwgd2FpdEV2ZW50cywgUFFjYW5jZWxTb2NrZXQoY2Fu Y2VsX2Nvbm4pLAotCQkJCQkJCSAgY3VyX3RpbWVvdXQsIFBHX1dBSVRfQ0xJRU5UKTsKKwkJ CVdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLCB3YWl0RXZl bnRzLAorCQkJCQkJCQkgIFBRY2FuY2VsU29ja2V0KGNhbmNlbF9jb25uKSwKKwkJCQkJCQkJ ICBjdXJfdGltZW91dCwgUEdfV0FJVF9DTElFTlQpOwogCi0JCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJw cS9saWJwcS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaAppbmRleCAwN2U1YjEyNTM2 Li40MzNmYmE5YmQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oCisr KyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKQEAgLTE4LDcgKzE4LDcgQEAKIAogI2lu Y2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUuaCIK LSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZl bnRzZXQuaCIKIAogCiAvKgpAQCAtNjEsNyArNjEsNyBAQCBleHRlcm4gY29uc3QgUEdETExJ TVBPUlQgUFFjb21tTWV0aG9kcyAqUHFDb21tTWV0aG9kczsKIGV4dGVybiBQR0RMTElNUE9S VCBXYWl0RXZlbnRTZXQgKkZlQmVXYWl0U2V0OwogCiAjZGVmaW5lIEZlQmVXYWl0U2V0U29j a2V0UG9zIDAKLSNkZWZpbmUgRmVCZVdhaXRTZXRMYXRjaFBvcyAxCisjZGVmaW5lIEZlQmVX YWl0U2V0SW50ZXJydXB0UG9zIDEKICNkZWZpbmUgRmVCZVdhaXRTZXRORXZlbnRzIDMKIAog ZXh0ZXJuIGludAlMaXN0ZW5TZXJ2ZXJQb3J0KGludCBmYW1pbHksIGNvbnN0IGNoYXIgKmhv c3ROYW1lLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaAppbmRleCA0MmEyYjM4Y2FjLi4zZDQ0MmYyNTZkIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRt aW4uaApAQCAtMTkwLDcgKzE5MCw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTXlQcm9j UGlkOwogZXh0ZXJuIFBHRExMSU1QT1JUIHBnX3RpbWVfdCBNeVN0YXJ0VGltZTsKIGV4dGVy biBQR0RMTElNUE9SVCBUaW1lc3RhbXBUeiBNeVN0YXJ0VGltZXN0YW1wOwogZXh0ZXJuIFBH RExMSU1QT1JUIHN0cnVjdCBQb3J0ICpNeVByb2NQb3J0OwotZXh0ZXJuIFBHRExMSU1QT1JU IHN0cnVjdCBMYXRjaCAqTXlMYXRjaDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIE15Q2Fu Y2VsS2V5VmFsaWQ7CiBleHRlcm4gUEdETExJTVBPUlQgaW50MzIgTXlDYW5jZWxLZXk7CiBl eHRlcm4gUEdETExJTVBPUlQgaW50IE15UE1DaGlsZFNsb3Q7CkBAIC0zMTcsOSArMzE2LDYg QEAgZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKkRhdGFiYXNlUGF0aDsKIC8qIG5vdyBpbiB1 dGlscy9pbml0L21pc2Npbml0LmMgKi8KIGV4dGVybiB2b2lkIEluaXRQb3N0bWFzdGVyQ2hp bGQodm9pZCk7CiBleHRlcm4gdm9pZCBJbml0U3RhbmRhbG9uZVByb2Nlc3MoY29uc3QgY2hh ciAqYXJndjApOwotZXh0ZXJuIHZvaWQgSW5pdFByb2Nlc3NMb2NhbExhdGNoKHZvaWQpOwot ZXh0ZXJuIHZvaWQgU3dpdGNoVG9TaGFyZWRMYXRjaCh2b2lkKTsKLWV4dGVybiB2b2lkIFN3 aXRjaEJhY2tUb0xvY2FsTGF0Y2godm9pZCk7CiAKIC8qCiAgKiBNeUJhY2tlbmRUeXBlIGlu ZGljYXRlcyB3aGF0IGtpbmQgb2YgYSBiYWNrZW5kIHRoaXMgaXMuCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9zdG9yYWdlL2ludGVycnVwdC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9p bnRlcnJ1cHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xZGEw NTM2OWMzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1 cHQuaApAQCAtMCwwICsxLDE3MSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog aW50ZXJydXB0LmgKKyAqCSAgSW50ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmVzLgorICoKKyAq ICJJbnRlcnJ1cHRzIiBhcmUgYSBzZXQgb2YgZmxhZ3MgdGhhdCByZXByZXNlbnQgY29uZGl0 aW9ucyB0aGF0IHNob3VsZCBiZQorICogaGFuZGxlZCBhdCBhIGxhdGVyIHRpbWUuICBUaGV5 IGFyZSByb3VnaGx5IGFuYWxvZ291cyB0byBVbml4IHNpZ25hbHMsCisgKiBleGNlcHQgdGhh dCB0aGV5IGFyZSBoYW5kbGVkIGNvb3BlcmF0aXZlbHkgYnkgY2hlY2tpbmcgZm9yIHRoZW0g YXQgbWFueQorICogcG9pbnRzIGluIHRoZSBjb2RlLgorICoKKyAqIEludGVycnVwdCBmbGFn cyBjYW4gYmUgInJhaXNlZCIgc3luY2hyb25vdXNseSBieSBjb2RlIHRoYXQgd2FudHMgdG8g ZGVmZXIKKyAqIGFuIGFjdGlvbiwgb3IgYXN5bmNocm9ub3VzbHkgYnkgdGltZXIgc2lnbmFs IGhhbmRsZXJzLCBvdGhlciBzaWduYWwKKyAqIGhhbmRsZXJzIG9yICJzZW50IiBieSBvdGhl ciBiYWNrZW5kcyBzZXR0aW5nIHRoZW0gZGlyZWN0bHkuCisgKgorICogTW9zdCBjb2RlIGN1 cnJlbnRseSBkZWFscyB3aXRoIHRoZSBJTlRFUlJVUFRfR0VORVJBTCBpbnRlcnJ1cHQuIEl0 IGlzCisgKiByYWlzZWQgYnkgYW55IG9mIHRoZSBldmVudHMgY2hlY2tlZCBieSBDSEVDS19G T1JfSU5URVJSVVBUUygpLCBsaWtlIHF1ZXJ5CisgKiBjYW5jZWxsYXRpb24gb3IgaWRsZSBz ZXNzaW9uIHRpbWVvdXQuIFdlbGwgYmVoYXZlZCBiYWNrZW5kIGNvZGUgcGVyZm9ybXMKKyAq IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgcGVyaW9kaWNhbGx5IGluIGxvbmcgY29tcHV0YXRp b25zLCBhbmQgc2hvdWxkIG5ldmVyCisgKiBzbGVlcCB1c2luZyBtZWNoYW5pc21zIG90aGVy IHRoYW4gdGhlIFdhaXRFdmVudFNldCBtZWNoYW5pc20gb3IgdGhlIG1vcmUKKyAqIGNvbnZl bmllbnQgV2FpdEludGVycnVwdC9XYWl0U29ja2VyT3JJbnRlcnJ1cHQgZnVuY3Rpb25zIChl eGNlcHQgZm9yCisgKiBib3VuZGVkIHNob3J0IHBlcmlvZHMsIGVnIExXTG9jayB3YWl0cyks IHNvIHRoZXkgc2hvdWxkIHJlYWN0IGluIGdvb2QgdGltZS4KKyAqCisgKiBUaGUgInN0YW5k YXJkIiBzZXQgb2YgaW50ZXJydXB0cyBpcyBoYW5kbGVkIGJ5IENIRUNLX0ZPUl9JTlRFUlJV UFRTKCksIGFuZAorICogY29uc2lzdHMgb2YgdGFza3MgdGhhdCBhcmUgc2FmZSB0byBwZXJm b3JtIGF0IG1vc3QgdGltZXMuICBUaGV5IGNhbiBiZQorICogc3VwcHJlc3NlZCBieSBIT0xE X0lOVEVSUlVQVFMoKS9SRVNVTUVfSU5URVJSVVBUUygpLgorICoKKyAqCisgKiBUaGUgY29y cmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9yIGV2ZW50KHMpIHVzaW5nIElOVEVSUlVQVF9HRU5F UkFMIGlzOgorICoKKyAqIGZvciAoOzspCisgKiB7CisgKgkgICBDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CisgKgkgICBpZiAod29yayB0byBkbykKKyAqCQkgICBEbyBT dHVmZigpOworICoJICAgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLCAu Li4pOworICogfQorICoKKyAqIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFyIHRoZSBpbnRlcnJ1 cHQgKmJlZm9yZSogY2hlY2tpbmcgaWYgdGhlcmUncyB3b3JrIHRvCisgKiBkby4gT3RoZXJ3 aXNlLCBpZiBzb21lb25lIHNldHMgdGhlIGludGVycnVwdCBiZXR3ZWVuIHRoZSBjaGVjayBh bmQgdGhlCisgKiBDbGVhckludGVycnVwdCgpIGNhbGwsIHlvdSB3aWxsIG1pc3MgaXQgYW5k IFdhaXQgd2lsbCBpbmNvcnJlY3RseSBibG9jay4KKyAqCisgKiBBbm90aGVyIHZhbGlkIGNv ZGluZyBwYXR0ZXJuIGxvb2tzIGxpa2U6CisgKgorICogZm9yICg7OykKKyAqIHsKKyAqCSAg IGlmICh3b3JrIHRvIGRvKQorICoJCSAgIERvIFN0dWZmKCk7IC8vIGluIHBhcnRpY3VsYXIs IGV4aXQgbG9vcCBpZiBzb21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQKKyAqCSAgIFdhaXRJbnRl cnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgLi4uKTsKKyAqCSAgIENsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKyAqIH0KKyAqCisgKiBUaGlzIGlzIHVzZWZ1bCB0 byByZWR1Y2UgaW50ZXJydXB0IHRyYWZmaWMgaWYgaXQncyBleHBlY3RlZCB0aGF0IHRoZSBs b29wJ3MKKyAqIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiB3aWxsIG9mdGVuIGJlIHNhdGlzZmll ZCBpbiB0aGUgZmlyc3QgaXRlcmF0aW9uOyB0aGUKKyAqIGNvc3QgaXMgYW4gZXh0cmEgbG9v cCBpdGVyYXRpb24gYmVmb3JlIGJsb2NraW5nIHdoZW4gaXQgaXMgbm90LiAgV2hhdCBtdXN0 CisgKiBiZSBhdm9pZGVkIGlzIHBsYWNpbmcgYW55IGNoZWNrcyBmb3IgYXN5bmNocm9ub3Vz IGV2ZW50cyBhZnRlcgorICogV2FpdEludGVycnVwdCBhbmQgYmVmb3JlIENsZWFySW50ZXJy dXB0LCBhcyB0aGF0IGNyZWF0ZXMgYSByYWNlIGNvbmRpdGlvbi4KKyAqCisgKiBUbyB3YWtl IHVwIHRoZSB3YWl0ZXIsIHlvdSBtdXN0IGZpcnN0IHNldCBhIGdsb2JhbCBmbGFnIG9yIHNv bWV0aGluZyBlbHNlCisgKiB0aGF0IHRoZSB3YWl0IGxvb3AgdGVzdHMgaW4gdGhlICJpZiAo d29yayB0byBkbykiIHBhcnQsIGFuZCBjYWxsCisgKiBTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKSAqYWZ0ZXIqIHRoYXQuIFNlbmRJbnRlcnJ1cHQgaXMgZGVzaWduZWQgdG8K KyAqIHJldHVybiBxdWlja2x5IGlmIHRoZSBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBzZXQuIElu IG1vcmUgY29tcGxleCBzY2VuYXJpb3MKKyAqIHdpdGggbmVzdGVkIGxvb3BzIHRoYXQgY2Fu IGNvbnN1bWUgZGlmZmVyZW50IGV2ZW50cywgeW91IGNhbiBkZWZpbmUgeW91cgorICogb3du IElOVEVSUlVQVF8qIGZsYWcgaW5zdGVhZCBvZiByZWx5aW5nIG9uIElOVEVSUlVQVF9HRU5F UkFMLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJICBzcmMvaW5jbHVkZS9zdG9yYWdlL2ludGVycnVwdC5o CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lmbmRlZiBTVE9SQUdFX0lO VEVSUlVQVF9ICisjZGVmaW5lIFNUT1JBR0VfSU5URVJSVVBUX0gKKworI2luY2x1ZGUgInBv cnQvYXRvbWljcy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKwor ZXh0ZXJuIFBHRExMSU1QT1JUIHBnX2F0b21pY191aW50MzIgKk15UGVuZGluZ0ludGVycnVw dHM7CisKKy8qCisgKiBGbGFncyBpbiB0aGUgcGVuZGluZyBpbnRlcnJ1cHRzIGJpdG1hc2su IEVhY2ggdmFsdWUgcmVwcmVzZW50cyBvbmUgYml0IGluCisgKiB0aGUgYml0bWFzay4KKyAq LwordHlwZWRlZiBlbnVtCit7CisJLyoKKwkgKiBTTEVFUElOR19PTl9JTlRFUlJVUFRTIGlu ZGljYXRlcyB0aGF0IHRoZSBiYWNrZW5kIGlzIGN1cnJlbnRseSBibG9ja2VkCisJICogd2Fp dGluZyBmb3IgYW4gaW50ZXJydXB0LiBJZiBpdCdzIHNldCwgdGhlIGJhY2tlbmQgbmVlZHMg dG8gYmUgd29rZW4gdXAKKwkgKiB3aGVuIGEgYml0IGluIHRoZSBwZW5kaW5nIGludGVycnVw dHMgbWFzayBpcyBzZXQuIEl0J3MgdXNlZCBpbnRlcm5hbGx5CisJICogYnkgdGhlIGludGVy cnVwdCBtYWNoaW5lcnksIGFuZCBjYW5ub3QgYmUgdXNlZCBkaXJlY3RseSBpbiB0aGUgcHVi bGljCisJICogZnVuY3Rpb25zLiBJdCdzIG5hbWVkIGRpZmZlcmVudGx5IHRvIGRpc3Rpbmd1 aXNoIGl0IGZyb20gdGhlIGFjdHVhbAorCSAqIGludGVycnVwdCBmbGFncy4KKwkgKi8KKwlT TEVFUElOR19PTl9JTlRFUlJVUFRTID0gMCwKKworCS8qCisJICogSU5URVJSVVBUX0dFTkVS QUwgaXMgbXVsdGlwbGV4ZWQgZm9yIG1hbnkgcmVhc29ucywgbGlrZSBxdWVyeQorCSAqIGNh bmNlbGxhdGlvbiB0ZXJtaW5hdGlvbiByZXF1ZXN0cywgcmVjb3ZlcnkgY29uZmxpY3RzLCBh bmQgY29uZmlnCisJICogcmVsb2FkIHJlcXVlc3RzLiAgVXBvbiByZWNlaXZpbmcgSU5URVJS VVBUX0dFTkVSQUwsIHlvdSBzaG91bGQgY2FsbAorCSAqIENIRUNLX0ZPUl9JTlRFUlJVUFRT KCkgdG8gcHJvY2VzcyB0aG9zZSByZXF1ZXN0cy4gIEl0IGlzIGFsc28gdXNlZCBmb3IKKwkg KiB2YXJpb3VzIG90aGVyIGNvbnRleHQtZGVwZW5kZW50IHB1cnBvc2VzLCBidXQgbm90ZSB0 aGF0IGlmIGl0J3MgdXNlZCB0bworCSAqIHdha2UgdXAgZm9yIG90aGVyIHJlYXNvbnMsIHlv dSBtdXN0IHN0aWxsIGNhbGwgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQorCSAqIG9uY2UgcGVy IGl0ZXJhdGlvbi4KKwkgKi8KKwlJTlRFUlJVUFRfR0VORVJBTCwKKworCS8qCisJICogSU5U RVJSVVBUX1JFQ09WRVJZX1dBS0VVUCBpcyB1c2VkIHRvIHdha2UgdXAgc3RhcnR1cCBwcm9j ZXNzLCB0byB0ZWxsCisJICogaXQgdGhhdCBpdCBzaG91bGQgY29udGludWUgV0FMIHJlcGxh eS4gSXQncyBzZW50IGJ5IFdBTCByZWNlaXZlciB3aGVuCisJICogbW9yZSBXQUwgYXJyaXZl cywgb3Igd2hlbiBwcm9tb3Rpb24gaXMgcmVxdWVzdGVkLgorCSAqLworCUlOVEVSUlVQVF9S RUNPVkVSWV9DT05USU5VRSwKK30gSW50ZXJydXB0VHlwZTsKKworLyoKKyAqIFRlc3QgYW4g aW50ZXJydXB0IGZsYWcuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorSW50ZXJydXB0SXNQ ZW5kaW5nKEludGVycnVwdFR5cGUgcmVhc29uKQoreworCXJldHVybiAocGdfYXRvbWljX3Jl YWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgKDEgPDwgcmVhc29uKSkgIT0gMDsKK30K KworLyoKKyAqIFRlc3QgYW4gaW50ZXJydXB0IGZsYWcuCisgKi8KK3N0YXRpYyBpbmxpbmUg Ym9vbAorSW50ZXJydXB0c1BlbmRpbmcodWludDMyIG1hc2spCit7CisJcmV0dXJuIChwZ19h dG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiAobWFzaykpICE9IDA7Cit9 CisKKy8qCisgKiBDbGVhciBhbiBpbnRlcnJ1cHQgZmxhZy4KKyAqLworc3RhdGljIGlubGlu ZSB2b2lkCitDbGVhckludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKK3sKKwlwZ19h dG9taWNfZmV0Y2hfYW5kX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzLCB+KDEgPDwgcmVhc29u KSk7Cit9CisKKy8qCisgKiBUZXN0IGFuZCBjbGVhciBhbiBpbnRlcnJ1cHQgZmxhZy4KKyAq Lworc3RhdGljIGlubGluZSBib29sCitDb25zdW1lSW50ZXJydXB0KEludGVycnVwdFR5cGUg cmVhc29uKQoreworCWlmIChsaWtlbHkoIUludGVycnVwdElzUGVuZGluZyhyZWFzb24pKSkK KwkJcmV0dXJuIGZhbHNlOworCisJQ2xlYXJJbnRlcnJ1cHQocmVhc29uKTsKKworCXJldHVy biB0cnVlOworfQorCitleHRlcm4gdm9pZCBSYWlzZUludGVycnVwdChJbnRlcnJ1cHRUeXBl IHJlYXNvbik7CitleHRlcm4gdm9pZCBTZW5kSW50ZXJydXB0KEludGVycnVwdFR5cGUgcmVh c29uLCBQcm9jTnVtYmVyIHBncHJvY25vKTsKK2V4dGVybiBpbnQJV2FpdEludGVycnVwdCh1 aW50MzIgaW50ZXJydXB0TWFzaywgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwKKwkJ CQkJCSAgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CitleHRlcm4gaW50CVdhaXRJbnRlcnJ1 cHRPclNvY2tldCh1aW50MzIgaW50ZXJydXB0TWFzaywgaW50IHdha2VFdmVudHMsIHBnc29j a2V0IHNvY2ssCisJCQkJCQkJCSAgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVudF9p bmZvKTsKK2V4dGVybiB2b2lkIFN3aXRjaFRvTG9jYWxJbnRlcnJ1cHRzKHZvaWQpOworZXh0 ZXJuIHZvaWQgU3dpdGNoVG9TaGFyZWRJbnRlcnJ1cHRzKHZvaWQpOworZXh0ZXJuIHZvaWQg SW5pdGlhbGl6ZUludGVycnVwdFdhaXRTZXQodm9pZCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sYXRjaC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9s YXRjaC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTE5NGQ1MzZmLi4wMDAw MDAwMDAwCi0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2guaAorKysgL2Rldi9udWxs CkBAIC0xLDE5NiArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiBsYXRj aC5oCi0gKgkgIFJvdXRpbmVzIGZvciBpbnRlcnByb2Nlc3MgbGF0Y2hlcwotICoKLSAqIEEg bGF0Y2ggaXMgYSBib29sZWFuIHZhcmlhYmxlLCB3aXRoIG9wZXJhdGlvbnMgdGhhdCBsZXQg cHJvY2Vzc2VzIHNsZWVwCi0gKiB1bnRpbCBpdCBpcyBzZXQuIEEgbGF0Y2ggY2FuIGJlIHNl dCBmcm9tIGFub3RoZXIgcHJvY2Vzcywgb3IgYSBzaWduYWwKLSAqIGhhbmRsZXIgd2l0aGlu IHRoZSBzYW1lIHByb2Nlc3MuCi0gKgotICogVGhlIGxhdGNoIGludGVyZmFjZSBpcyBhIHJl bGlhYmxlIHJlcGxhY2VtZW50IGZvciB0aGUgY29tbW9uIHBhdHRlcm4gb2YKLSAqIHVzaW5n IHBnX3VzbGVlcCgpIG9yIHNlbGVjdCgpIHRvIHdhaXQgdW50aWwgYSBzaWduYWwgYXJyaXZl cywgd2hlcmUgdGhlCi0gKiBzaWduYWwgaGFuZGxlciBzZXRzIGEgZmxhZyB2YXJpYWJsZS4g QmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyBhbgotICogaW5jb21pbmcgc2lnbmFsIGRvZXNu J3QgaW50ZXJydXB0IHNsZWVwLCBhbmQgZXZlbiBvbiBwbGF0Zm9ybXMgd2hlcmUgaXQKLSAq IGRvZXMgdGhlcmUgaXMgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUgc2lnbmFsIGFycml2ZXMg anVzdCBiZWZvcmUKLSAqIGVudGVyaW5nIHRoZSBzbGVlcCwgdGhlIGNvbW1vbiBwYXR0ZXJu IG11c3QgcGVyaW9kaWNhbGx5IHdha2UgdXAgYW5kCi0gKiBwb2xsIHRoZSBmbGFnIHZhcmlh YmxlLiBUaGUgcHNlbGVjdCgpIHN5c3RlbSBjYWxsIHdhcyBpbnZlbnRlZCB0byBzb2x2ZQot ICogdGhpcyBwcm9ibGVtLCBidXQgaXQgaXMgbm90IHBvcnRhYmxlIGVub3VnaC4gTGF0Y2hl cyBhcmUgZGVzaWduZWQgdG8KLSAqIG92ZXJjb21lIHRoZXNlIGxpbWl0YXRpb25zLCBhbGxv d2luZyB5b3UgdG8gc2xlZXAgd2l0aG91dCBwb2xsaW5nIGFuZAotICogZW5zdXJpbmcgcXVp Y2sgcmVzcG9uc2UgdG8gc2lnbmFscyBmcm9tIG90aGVyIHByb2Nlc3Nlcy4KLSAqCi0gKiBU aGVyZSBhcmUgdHdvIGtpbmRzIG9mIGxhdGNoZXM6IGxvY2FsIGFuZCBzaGFyZWQuIEEgbG9j YWwgbGF0Y2ggaXMKLSAqIGluaXRpYWxpemVkIGJ5IEluaXRMYXRjaCwgYW5kIGNhbiBvbmx5 IGJlIHNldCBmcm9tIHRoZSBzYW1lIHByb2Nlc3MuCi0gKiBBIGxvY2FsIGxhdGNoIGNhbiBi ZSB1c2VkIHRvIHdhaXQgZm9yIGEgc2lnbmFsIHRvIGFycml2ZSwgYnkgY2FsbGluZwotICog U2V0TGF0Y2ggaW4gdGhlIHNpZ25hbCBoYW5kbGVyLiBBIHNoYXJlZCBsYXRjaCByZXNpZGVz IGluIHNoYXJlZCBtZW1vcnksCi0gKiBhbmQgbXVzdCBiZSBpbml0aWFsaXplZCBhdCBwb3N0 bWFzdGVyIHN0YXJ0dXAgYnkgSW5pdFNoYXJlZExhdGNoLiBCZWZvcmUKLSAqIGEgc2hhcmVk IGxhdGNoIGNhbiBiZSB3YWl0ZWQgb24sIGl0IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEg cHJvY2VzcwotICogd2l0aCBPd25MYXRjaC4gT25seSB0aGUgcHJvY2VzcyBvd25pbmcgdGhl IGxhdGNoIGNhbiB3YWl0IG9uIGl0LCBidXQgYW55Ci0gKiBwcm9jZXNzIGNhbiBzZXQgaXQu Ci0gKgotICogVGhlcmUgYXJlIHRocmVlIGJhc2ljIG9wZXJhdGlvbnMgb24gYSBsYXRjaDoK LSAqCi0gKiBTZXRMYXRjaAkJLSBTZXRzIHRoZSBsYXRjaAotICogUmVzZXRMYXRjaAktIENs ZWFycyB0aGUgbGF0Y2gsIGFsbG93aW5nIGl0IHRvIGJlIHNldCBhZ2FpbgotICogV2FpdExh dGNoCS0gV2FpdHMgZm9yIHRoZSBsYXRjaCB0byBiZWNvbWUgc2V0Ci0gKgotICogV2FpdExh dGNoIGluY2x1ZGVzIGEgcHJvdmlzaW9uIGZvciB0aW1lb3V0cyAod2hpY2ggc2hvdWxkIGJl IGF2b2lkZWQKLSAqIHdoZW4gcG9zc2libGUsIGFzIHRoZXkgaW5jdXIgZXh0cmEgb3Zlcmhl YWQpIGFuZCBhIHByb3Zpc2lvbiBmb3IKLSAqIHBvc3RtYXN0ZXIgY2hpbGQgcHJvY2Vzc2Vz IHRvIHdha2UgdXAgaW1tZWRpYXRlbHkgb24gcG9zdG1hc3RlciBkZWF0aC4KLSAqIFNlZSBs YXRjaC5jIGZvciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGV4cG9ydGVkIGZ1 bmN0aW9ucy4KLSAqCi0gKiBUaGUgY29ycmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9yIGV2ZW50 KHMpIGlzOgotICoKLSAqIGZvciAoOzspCi0gKiB7Ci0gKgkgICBSZXNldExhdGNoKCk7Ci0g KgkgICBpZiAod29yayB0byBkbykKLSAqCQkgICBEbyBTdHVmZigpOwotICoJICAgV2FpdExh dGNoKCk7Ci0gKiB9Ci0gKgotICogSXQncyBpbXBvcnRhbnQgdG8gcmVzZXQgdGhlIGxhdGNo ICpiZWZvcmUqIGNoZWNraW5nIGlmIHRoZXJlJ3Mgd29yayB0bwotICogZG8uIE90aGVyd2lz ZSwgaWYgc29tZW9uZSBzZXRzIHRoZSBsYXRjaCBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhl Ci0gKiBSZXNldExhdGNoIGNhbGwsIHlvdSB3aWxsIG1pc3MgaXQgYW5kIFdhaXQgd2lsbCBp bmNvcnJlY3RseSBibG9jay4KLSAqCi0gKiBBbm90aGVyIHZhbGlkIGNvZGluZyBwYXR0ZXJu IGxvb2tzIGxpa2U6Ci0gKgotICogZm9yICg7OykKLSAqIHsKLSAqCSAgIGlmICh3b3JrIHRv IGRvKQotICoJCSAgIERvIFN0dWZmKCk7IC8vIGluIHBhcnRpY3VsYXIsIGV4aXQgbG9vcCBp ZiBzb21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQKLSAqCSAgIFdhaXRMYXRjaCgpOwotICoJICAg UmVzZXRMYXRjaCgpOwotICogfQotICoKLSAqIFRoaXMgaXMgdXNlZnVsIHRvIHJlZHVjZSBs YXRjaCB0cmFmZmljIGlmIGl0J3MgZXhwZWN0ZWQgdGhhdCB0aGUgbG9vcCdzCi0gKiB0ZXJt aW5hdGlvbiBjb25kaXRpb24gd2lsbCBvZnRlbiBiZSBzYXRpc2ZpZWQgaW4gdGhlIGZpcnN0 IGl0ZXJhdGlvbjsKLSAqIHRoZSBjb3N0IGlzIGFuIGV4dHJhIGxvb3AgaXRlcmF0aW9uIGJl Zm9yZSBibG9ja2luZyB3aGVuIGl0IGlzIG5vdC4KLSAqIFdoYXQgbXVzdCBiZSBhdm9pZGVk IGlzIHBsYWNpbmcgYW55IGNoZWNrcyBmb3IgYXN5bmNocm9ub3VzIGV2ZW50cyBhZnRlcgot ICogV2FpdExhdGNoIGFuZCBiZWZvcmUgUmVzZXRMYXRjaCwgYXMgdGhhdCBjcmVhdGVzIGEg cmFjZSBjb25kaXRpb24uCi0gKgotICogVG8gd2FrZSB1cCB0aGUgd2FpdGVyLCB5b3UgbXVz dCBmaXJzdCBzZXQgYSBnbG9iYWwgZmxhZyBvciBzb21ldGhpbmcKLSAqIGVsc2UgdGhhdCB0 aGUgd2FpdCBsb29wIHRlc3RzIGluIHRoZSAiaWYgKHdvcmsgdG8gZG8pIiBwYXJ0LCBhbmQg Y2FsbAotICogU2V0TGF0Y2ggKmFmdGVyKiB0aGF0LiBTZXRMYXRjaCBpcyBkZXNpZ25lZCB0 byByZXR1cm4gcXVpY2tseSBpZiB0aGUKLSAqIGxhdGNoIGlzIGFscmVhZHkgc2V0LgotICoK LSAqIE9uIHNvbWUgcGxhdGZvcm1zLCBzaWduYWxzIHdpbGwgbm90IGludGVycnVwdCB0aGUg bGF0Y2ggd2FpdCBwcmltaXRpdmUKLSAqIGJ5IHRoZW1zZWx2ZXMuICBUaGVyZWZvcmUsIGl0 IGlzIGNyaXRpY2FsIHRoYXQgYW55IHNpZ25hbCBoYW5kbGVyIHRoYXQKLSAqIGlzIG1lYW50 IHRvIHRlcm1pbmF0ZSBhIFdhaXRMYXRjaCB3YWl0IGNhbGxzIFNldExhdGNoLgotICoKLSAq IE5vdGUgdGhhdCB1c2Ugb2YgdGhlIHByb2Nlc3MgbGF0Y2ggKFBHUFJPQy5wcm9jTGF0Y2gp IGlzIGdlbmVyYWxseSBiZXR0ZXIKLSAqIHRoYW4gYW4gYWQtaG9jIHNoYXJlZCBsYXRjaCBm b3Igc2lnbmFsaW5nIGF1eGlsaWFyeSBwcm9jZXNzZXMuICBUaGlzIGlzCi0gKiBiZWNhdXNl IGdlbmVyaWMgc2lnbmFsIGhhbmRsZXJzIHdpbGwgY2FsbCBTZXRMYXRjaCBvbiB0aGUgcHJv Y2VzcyBsYXRjaAotICogb25seSwgc28gdXNpbmcgYW55IGxhdGNoIG90aGVyIHRoYW4gdGhl IHByb2Nlc3MgbGF0Y2ggZWZmZWN0aXZlbHkgcHJlY2x1ZGVzCi0gKiB1c2Ugb2YgYW55IGdl bmVyaWMgaGFuZGxlci4KLSAqCi0gKgotICogV2FpdEV2ZW50U2V0cyBhbGxvdyB0byB3YWl0 IGZvciBsYXRjaGVzIGJlaW5nIHNldCBhbmQgYWRkaXRpb25hbCBldmVudHMgLQotICogcG9z dG1hc3RlciBkeWluZyBhbmQgc29ja2V0IHJlYWRpbmVzcyBvZiBzZXZlcmFsIHNvY2tldHMg Y3VycmVudGx5IC0gYXQgdGhlCi0gKiBzYW1lIHRpbWUuICBPbiBtYW55IHBsYXRmb3JtcyB1 c2luZyBhIGxvbmcgbGl2ZWQgZXZlbnQgc2V0IGlzIG1vcmUKLSAqIGVmZmljaWVudCB0aGFu IHVzaW5nIFdhaXRMYXRjaCBvciBXYWl0TGF0Y2hPclNvY2tldC4KLSAqCi0gKgotICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMg b2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQotICoKLSAqIHNyYy9pbmNsdWRlL3N0 b3JhZ2UvbGF0Y2guaAotICoKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi0jaWZuZGVm IExBVENIX0gKLSNkZWZpbmUgTEFUQ0hfSAotCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KLSNp bmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgotCi0vKgotICogTGF0Y2ggc3RydWN0dXJlIHNo b3VsZCBiZSB0cmVhdGVkIGFzIG9wYXF1ZSBhbmQgb25seSBhY2Nlc3NlZCB0aHJvdWdoCi0g KiB0aGUgcHVibGljIGZ1bmN0aW9ucy4gSXQgaXMgZGVmaW5lZCBoZXJlIHRvIGFsbG93IGVt YmVkZGluZyBMYXRjaGVzIGFzCi0gKiBwYXJ0IG9mIGJpZ2dlciBzdHJ1Y3RzLgotICovCi10 eXBlZGVmIHN0cnVjdCBMYXRjaAotewotCXNpZ19hdG9taWNfdCBpc19zZXQ7Ci0Jc2lnX2F0 b21pY190IG1heWJlX3NsZWVwaW5nOwotCWJvb2wJCWlzX3NoYXJlZDsKLQlpbnQJCQlvd25l cl9waWQ7Ci0jaWZkZWYgV0lOMzIKLQlIQU5ETEUJCWV2ZW50OwotI2VuZGlmCi19IExhdGNo OwotCi0vKgotICogQml0bWFza3MgZm9yIGV2ZW50cyB0aGF0IG1heSB3YWtlLXVwIFdhaXRM YXRjaCgpLCBXYWl0TGF0Y2hPclNvY2tldCgpLCBvcgotICogV2FpdEV2ZW50U2V0V2FpdCgp LgotICovCi0jZGVmaW5lIFdMX0xBVENIX1NFVAkJICgxIDw8IDApCi0jZGVmaW5lIFdMX1NP Q0tFVF9SRUFEQUJMRQkgKDEgPDwgMSkKLSNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJMRSAg KDEgPDwgMikKLSNkZWZpbmUgV0xfVElNRU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9yIFdh aXRFdmVudFNldFdhaXQoKSAqLwotI2RlZmluZSBXTF9QT1NUTUFTVEVSX0RFQVRIICAoMSA8 PCA0KQotI2RlZmluZSBXTF9FWElUX09OX1BNX0RFQVRICSAoMSA8PCA1KQotI2lmZGVmIFdJ TjMyCi0jZGVmaW5lIFdMX1NPQ0tFVF9DT05ORUNURUQgICgxIDw8IDYpCi0jZWxzZQotLyog YXZvaWQgaGF2aW5nIHRvIGRlYWwgd2l0aCBjYXNlIG9uIHBsYXRmb3JtcyBub3QgcmVxdWly aW5nIGl0ICovCi0jZGVmaW5lIFdMX1NPQ0tFVF9DT05ORUNURUQgIFdMX1NPQ0tFVF9XUklU RUFCTEUKLSNlbmRpZgotI2RlZmluZSBXTF9TT0NLRVRfQ0xPU0VEIAkgKDEgPDwgNykKLSNp ZmRlZiBXSU4zMgotI2RlZmluZSBXTF9TT0NLRVRfQUNDRVBUCSAoMSA8PCA4KQotI2Vsc2UK LS8qIGF2b2lkIGhhdmluZyB0byBkZWFsIHdpdGggY2FzZSBvbiBwbGF0Zm9ybXMgbm90IHJl cXVpcmluZyBpdCAqLwotI2RlZmluZSBXTF9TT0NLRVRfQUNDRVBUCVdMX1NPQ0tFVF9SRUFE QUJMRQotI2VuZGlmCi0jZGVmaW5lIFdMX1NPQ0tFVF9NQVNLCQkoV0xfU09DS0VUX1JFQURB QkxFIHwgXAotCQkJCQkJCSBXTF9TT0NLRVRfV1JJVEVBQkxFIHwgXAotCQkJCQkJCSBXTF9T T0NLRVRfQ09OTkVDVEVEIHwgXAotCQkJCQkJCSBXTF9TT0NLRVRfQUNDRVBUIHwgXAotCQkJ CQkJCSBXTF9TT0NLRVRfQ0xPU0VEKQotCi10eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnQKLXsK LQlpbnQJCQlwb3M7CQkJLyogcG9zaXRpb24gaW4gdGhlIGV2ZW50IGRhdGEgc3RydWN0dXJl ICovCi0JdWludDMyCQlldmVudHM7CQkJLyogdHJpZ2dlcmVkIGV2ZW50cyAqLwotCXBnc29j a2V0CWZkOwkJCQkvKiBzb2NrZXQgZmQgYXNzb2NpYXRlZCB3aXRoIGV2ZW50ICovCi0Jdm9p ZAkgICAqdXNlcl9kYXRhOwkJLyogcG9pbnRlciBwcm92aWRlZCBpbiBBZGRXYWl0RXZlbnRU b1NldCAqLwotI2lmZGVmIFdJTjMyCi0JYm9vbAkJcmVzZXQ7CQkJLyogSXMgcmVzZXQgb2Yg dGhlIGV2ZW50IHJlcXVpcmVkPyAqLwotI2VuZGlmCi19IFdhaXRFdmVudDsKLQotLyogZm9y d2FyZCBkZWNsYXJhdGlvbiB0byBhdm9pZCBleHBvc2luZyBsYXRjaC5jIGltcGxlbWVudGF0 aW9uIGRldGFpbHMgKi8KLXR5cGVkZWYgc3RydWN0IFdhaXRFdmVudFNldCBXYWl0RXZlbnRT ZXQ7Ci0KLS8qCi0gKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbGF0Y2guYwotICov Ci1leHRlcm4gdm9pZCBJbml0aWFsaXplTGF0Y2hTdXBwb3J0KHZvaWQpOwotZXh0ZXJuIHZv aWQgSW5pdExhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBJbml0U2hhcmVkTGF0 Y2goTGF0Y2ggKmxhdGNoKTsKLWV4dGVybiB2b2lkIE93bkxhdGNoKExhdGNoICpsYXRjaCk7 Ci1leHRlcm4gdm9pZCBEaXNvd25MYXRjaChMYXRjaCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQg U2V0TGF0Y2goTGF0Y2ggKmxhdGNoKTsKLWV4dGVybiB2b2lkIFJlc2V0TGF0Y2goTGF0Y2gg KmxhdGNoKTsKLWV4dGVybiB2b2lkIFNodXRkb3duTGF0Y2hTdXBwb3J0KHZvaWQpOwotCi1l eHRlcm4gV2FpdEV2ZW50U2V0ICpDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25lciBy ZXNvd25lciwgaW50IG5ldmVudHMpOwotZXh0ZXJuIHZvaWQgRnJlZVdhaXRFdmVudFNldChX YWl0RXZlbnRTZXQgKnNldCk7Ci1leHRlcm4gdm9pZCBGcmVlV2FpdEV2ZW50U2V0QWZ0ZXJG b3JrKFdhaXRFdmVudFNldCAqc2V0KTsKLWV4dGVybiBpbnQJQWRkV2FpdEV2ZW50VG9TZXQo V2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZkLAotCQkJCQkJ CSAgTGF0Y2ggKmxhdGNoLCB2b2lkICp1c2VyX2RhdGEpOwotZXh0ZXJuIHZvaWQgTW9kaWZ5 V2FpdEV2ZW50KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBM YXRjaCAqbGF0Y2gpOwotCi1leHRlcm4gaW50CVdhaXRFdmVudFNldFdhaXQoV2FpdEV2ZW50 U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKLQkJCQkJCQkgV2FpdEV2ZW50ICpvY2N1cnJlZF9l dmVudHMsIGludCBuZXZlbnRzLAotCQkJCQkJCSB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsK LWV4dGVybiBpbnQJV2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIGxv bmcgdGltZW91dCwKLQkJCQkJICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKLWV4dGVybiBp bnQJV2FpdExhdGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywKLQkJ CQkJCQkgIHBnc29ja2V0IHNvY2ssIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRf aW5mbyk7Ci1leHRlcm4gdm9pZCBJbml0aWFsaXplTGF0Y2hXYWl0U2V0KHZvaWQpOwotZXh0 ZXJuIGludAlHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhXYWl0RXZlbnRTZXQgKnNldCk7 Ci1leHRlcm4gYm9vbCBXYWl0RXZlbnRTZXRDYW5SZXBvcnRDbG9zZWQodm9pZCk7Ci0KLSNl bmRpZgkJCQkJCQkvKiBMQVRDSF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4IDVhM2RkNWQy ZDQuLjYwNjBiNTdhMGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5o CisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC0xNyw3ICsxNyw2IEBACiAj aW5jbHVkZSAiYWNjZXNzL2Nsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIK ICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wZ19zZW1hLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jbGlzdF90eXBlcy5oIgpAQCAtMTcyLDkgKzE3MSw2 IEBAIHN0cnVjdCBQR1BST0MKIAlQR1NlbWFwaG9yZSBzZW07CQkJLyogT05FIHNlbWFwaG9y ZSB0byBzbGVlcCBvbiAqLwogCVByb2NXYWl0U3RhdHVzIHdhaXRTdGF0dXM7CiAKLQlMYXRj aAkJcHJvY0xhdGNoOwkJLyogZ2VuZXJpYyBsYXRjaCBmb3IgcHJvY2VzcyAqLwotCi0KIAlU cmFuc2FjdGlvbklkIHhpZDsJCQkvKiBpZCBvZiB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gY3Vy cmVudGx5IGJlaW5nCiAJCQkJCQkJCSAqIGV4ZWN1dGVkIGJ5IHRoaXMgcHJvYywgaWYgcnVu bmluZyBhbmQgWElECiAJCQkJCQkJCSAqIGlzIGFzc2lnbmVkOyBlbHNlIEludmFsaWRUcmFu c2FjdGlvbklkLgpAQCAtMzEwLDYgKzMwNiwxNCBAQCBzdHJ1Y3QgUEdQUk9DCiAJUEdQUk9D CSAgICpsb2NrR3JvdXBMZWFkZXI7CS8qIGxvY2sgZ3JvdXAgbGVhZGVyLCBpZiBJJ20gYSBt ZW1iZXIgKi8KIAlkbGlzdF9oZWFkCWxvY2tHcm91cE1lbWJlcnM7CS8qIGxpc3Qgb2YgbWVt YmVycywgaWYgSSdtIGEgbGVhZGVyICovCiAJZGxpc3Rfbm9kZQlsb2NrR3JvdXBMaW5rOwkv KiBteSBtZW1iZXIgbGluaywgaWYgSSdtIGEgbWVtYmVyICovCisKKwlwZ19hdG9taWNfdWlu dDMyIHBlbmRpbmdJbnRlcnJ1cHRzOworCXBnX2F0b21pY191aW50MzIgbWF5YmVTbGVlcGlu Z09uSW50ZXJydXB0czsKKworI2lmZGVmIFdJTjMyCisJLyogRXZlbnQgaGFuZGxlIHRvIHdh a2UgdXAgdGhlIHByb2Nlc3Mgd2hlbiBzZW5kaW5nIGFuIGludGVycnVwdCAqLworCUhBTkRM RQkJaW50ZXJydXB0V2FrZXVwRXZlbnQ7CisjZW5kaWYKIH07CiAKIC8qIE5PVEU6ICJ0eXBl ZGVmIHN0cnVjdCBQR1BST0MgUEdQUk9DIiBhcHBlYXJzIGluIHN0b3JhZ2UvbG9jay5oLiAq LwpAQCAtNDI1LDYgKzQyOSw4IEBAIHR5cGVkZWYgc3RydWN0IFBST0NfSERSCiAJICovCiAJ UHJvY051bWJlcgl3YWx3cml0ZXJQcm9jOwogCVByb2NOdW1iZXIJY2hlY2twb2ludGVyUHJv YzsKKwlQcm9jTnVtYmVyCXdhbHJlY2VpdmVyUHJvYzsKKwlQcm9jTnVtYmVyCXN0YXJ0dXBQ cm9jOwogCiAJLyogQ3VycmVudCBzaGFyZWQgZXN0aW1hdGUgb2YgYXBwcm9wcmlhdGUgc3Bp bnNfcGVyX2RlbGF5IHZhbHVlICovCiAJaW50CQkJc3BpbnNfcGVyX2RlbGF5OwpAQCAtNDky LDkgKzQ5OCw2IEBAIGV4dGVybiB2b2lkIFByb2NMb2NrV2FrZXVwKExvY2tNZXRob2QgbG9j a01ldGhvZFRhYmxlLCBMT0NLICpsb2NrKTsKIGV4dGVybiB2b2lkIENoZWNrRGVhZExvY2tB bGVydCh2b2lkKTsKIGV4dGVybiB2b2lkIExvY2tFcnJvckNsZWFudXAodm9pZCk7CiAKLWV4 dGVybiB2b2lkIFByb2NXYWl0Rm9yU2lnbmFsKHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwot ZXh0ZXJuIHZvaWQgUHJvY1NlbmRTaWduYWwoUHJvY051bWJlciBwcm9jTnVtYmVyKTsKLQog ZXh0ZXJuIFBHUFJPQyAqQXV4aWxpYXJ5UGlkR2V0UHJvYyhpbnQgcGlkKTsKIAogZXh0ZXJu IHZvaWQgQmVjb21lTG9ja0dyb3VwTGVhZGVyKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2Fp dGV2ZW50c2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZWQz NGZmOGI2MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2 ZW50c2V0LmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIHdhaXRldmVudHNldC5oCisgKgkgIHBwb2xsKCkgLyBwc2VsZWN0KCkgbGlrZSBpbnRl cmZhY2UgZm9yIHdhaXRpbmcgZm9yIGV2ZW50cworICoKKyAqIFRoaXMgaXMgYSByZWxpYWJs ZSByZXBsYWNlbWVudCBmb3IgdGhlIGNvbW1vbiBwYXR0ZXJuIG9mIHVzaW5nIHBnX3VzbGVl cCgpCisgKiBvciBzZWxlY3QoKSB0byB3YWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMsIHdo ZXJlIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMKKyAqIGFuIGludGVycnVwdCAoc2VlIHN0 b3JhZ2UvaW50ZXJydXB0LmgpLiBCZWNhdXNlIG9uIHNvbWUgcGxhdGZvcm1zIGFuCisgKiBp bmNvbWluZyBzaWduYWwgZG9lc24ndCBpbnRlcnJ1cHQgc2xlZXAsIGFuZCBldmVuIG9uIHBs YXRmb3JtcyB3aGVyZSBpdAorICogZG9lcyB0aGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGlm IHRoZSBzaWduYWwgYXJyaXZlcyBqdXN0IGJlZm9yZSBlbnRlcmluZworICogdGhlIHNsZWVw LCB0aGUgY29tbW9uIHBhdHRlcm4gbXVzdCBwZXJpb2RpY2FsbHkgd2FrZSB1cCBhbmQgcG9s bCB0aGUgZmxhZworICogdmFyaWFibGUuIFRoZSBwc2VsZWN0KCkgc3lzdGVtIGNhbGwgd2Fz IGludmVudGVkIHRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgYnV0CisgKiBpdCBpcyBub3QgcG9y dGFibGUgZW5vdWdoLiBXYWl0RXZlbnRTZXRzIGFuZCBJbnRlcnJ1cHRzIGFyZSBkZXNpZ25l ZCB0bworICogb3ZlcmNvbWUgdGhlc2UgbGltaXRhdGlvbnMsIGFsbG93aW5nIHlvdSB0byBz bGVlcCB3aXRob3V0IHBvbGxpbmcgYW5kCisgKiBlbnN1cmluZyBxdWljayByZXNwb25zZSB0 byBzaWduYWxzIGZyb20gb3RoZXIgcHJvY2Vzc2VzLgorICoKKyAqIFdhaXRJbnRlcnJ1cHQg aW5jbHVkZXMgYSBwcm92aXNpb24gZm9yIHRpbWVvdXRzICh3aGljaCBzaG91bGQgYmUgYXZv aWRlZAorICogd2hlbiBwb3NzaWJsZSwgYXMgdGhleSBpbmN1ciBleHRyYSBvdmVyaGVhZCkg YW5kIGEgcHJvdmlzaW9uIGZvciBwb3N0bWFzdGVyCisgKiBjaGlsZCBwcm9jZXNzZXMgdG8g d2FrZSB1cCBpbW1lZGlhdGVseSBvbiBwb3N0bWFzdGVyIGRlYXRoLiAgU2VlCisgKiBzdG9y YWdlL2lwYy9pbnRlcnJ1cHQuYyBmb3IgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgZm9yIHRo ZSBleHBvcnRlZAorICogZnVuY3Rpb25zLgorICoKKyAqIE9uIHNvbWUgcGxhdGZvcm1zLCBz aWduYWxzIHdpbGwgbm90IGludGVycnVwdCB0aGUgd2FpdCBwcmltaXRpdmUgYnkKKyAqIHRo ZW1zZWx2ZXMuICBUaGVyZWZvcmUsIGl0IGlzIGNyaXRpY2FsIHRoYXQgYW55IHNpZ25hbCBo YW5kbGVyIHRoYXQgaXMKKyAqIG1lYW50IHRvIHRlcm1pbmF0ZSBhIFdhaXRJbnRlcnJ1cHQg d2FpdCBjYWxscyBSYWlzZUludGVycnVwdC4KKyAqCisgKiBXYWl0RXZlbnRTZXRzIGFsbG93 IHRvIHdhaXQgZm9yIGludGVycnVwdHMgYmVpbmcgc2V0IGFuZCBhZGRpdGlvbmFsIGV2ZW50 cyAtCisgKiBwb3N0bWFzdGVyIGR5aW5nIGFuZCBzb2NrZXQgcmVhZGluZXNzIG9mIHNldmVy YWwgc29ja2V0cyBjdXJyZW50bHkgLSBhdCB0aGUKKyAqIHNhbWUgdGltZS4gIE9uIG1hbnkg cGxhdGZvcm1zIHVzaW5nIGEgbG9uZyBsaXZlZCBldmVudCBzZXQgaXMgbW9yZQorICogZWZm aWNpZW50IHRoYW4gdXNpbmcgV2FpdEludGVycnVwdCBvciBXYWl0SW50ZXJydXB0T3JTb2Nr ZXQuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAq CisgKiBzcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNldC5oCisgKgorICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgV0FJVEVWRU5UU0VUX0gKKyNkZWZpbmUgV0FJ VEVWRU5UU0VUX0gKKworI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaW5jbHVkZSAic3RvcmFn ZS9wcm9jbnVtYmVyLmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKworLyoKKyAq IEJpdG1hc2tzIGZvciBldmVudHMgdGhhdCBtYXkgd2FrZS11cCBXYWl0SW50ZXJydXB0KCks CisgKiBXYWl0SW50ZXJydXB0T3JTb2NrZXQoKSwgb3IgV2FpdEV2ZW50U2V0V2FpdCgpLgor ICovCisjZGVmaW5lIFdMX0lOVEVSUlVQVAkJICgxIDw8IDApCisjZGVmaW5lIFdMX1NPQ0tF VF9SRUFEQUJMRQkgKDEgPDwgMSkKKyNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJMRSAgKDEg PDwgMikKKyNkZWZpbmUgV0xfVElNRU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9yIFdhaXRF dmVudFNldFdhaXQoKSAqLworI2RlZmluZSBXTF9QT1NUTUFTVEVSX0RFQVRIICAoMSA8PCA0 KQorI2RlZmluZSBXTF9FWElUX09OX1BNX0RFQVRICSAoMSA8PCA1KQorI2lmZGVmIFdJTjMy CisjZGVmaW5lIFdMX1NPQ0tFVF9DT05ORUNURUQgICgxIDw8IDYpCisjZWxzZQorLyogYXZv aWQgaGF2aW5nIHRvIGRlYWwgd2l0aCBjYXNlIG9uIHBsYXRmb3JtcyBub3QgcmVxdWlyaW5n IGl0ICovCisjZGVmaW5lIFdMX1NPQ0tFVF9DT05ORUNURUQgIFdMX1NPQ0tFVF9XUklURUFC TEUKKyNlbmRpZgorI2RlZmluZSBXTF9TT0NLRVRfQ0xPU0VEIAkgKDEgPDwgNykKKyNpZmRl ZiBXSU4zMgorI2RlZmluZSBXTF9TT0NLRVRfQUNDRVBUCSAoMSA8PCA4KQorI2Vsc2UKKy8q IGF2b2lkIGhhdmluZyB0byBkZWFsIHdpdGggY2FzZSBvbiBwbGF0Zm9ybXMgbm90IHJlcXVp cmluZyBpdCAqLworI2RlZmluZSBXTF9TT0NLRVRfQUNDRVBUCVdMX1NPQ0tFVF9SRUFEQUJM RQorI2VuZGlmCisjZGVmaW5lIFdMX1NPQ0tFVF9NQVNLCQkoV0xfU09DS0VUX1JFQURBQkxF IHwgXAorCQkJCQkJCSBXTF9TT0NLRVRfV1JJVEVBQkxFIHwgXAorCQkJCQkJCSBXTF9TT0NL RVRfQ09OTkVDVEVEIHwgXAorCQkJCQkJCSBXTF9TT0NLRVRfQUNDRVBUIHwgXAorCQkJCQkJ CSBXTF9TT0NLRVRfQ0xPU0VEKQorCit0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnQKK3sKKwlp bnQJCQlwb3M7CQkJLyogcG9zaXRpb24gaW4gdGhlIGV2ZW50IGRhdGEgc3RydWN0dXJlICov CisJdWludDMyCQlldmVudHM7CQkJLyogdHJpZ2dlcmVkIGV2ZW50cyAqLworCXBnc29ja2V0 CWZkOwkJCQkvKiBzb2NrZXQgZmQgYXNzb2NpYXRlZCB3aXRoIGV2ZW50ICovCisJdm9pZAkg ICAqdXNlcl9kYXRhOwkJLyogcG9pbnRlciBwcm92aWRlZCBpbiBBZGRXYWl0RXZlbnRUb1Nl dCAqLworI2lmZGVmIFdJTjMyCisJYm9vbAkJcmVzZXQ7CQkJLyogSXMgcmVzZXQgb2YgdGhl IGV2ZW50IHJlcXVpcmVkPyAqLworI2VuZGlmCit9IFdhaXRFdmVudDsKKworLyogZm9yd2Fy ZCBkZWNsYXJhdGlvbiB0byBhdm9pZCBleHBvc2luZyBpbnRlcnJ1cHQuYyBpbXBsZW1lbnRh dGlvbiBkZXRhaWxzICovCit0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnRTZXQgV2FpdEV2ZW50 U2V0OworCitzdHJ1Y3QgUEdQUk9DOworCisvKgorICogcHJvdG90eXBlcyBmb3IgZnVuY3Rp b25zIGluIHdhaXRldmVudHNldC5jCisgKi8KK2V4dGVybiB2b2lkIEluaXRpYWxpemVXYWl0 RXZlbnRTdXBwb3J0KHZvaWQpOworZXh0ZXJuIHZvaWQgU2h1dGRvd25XYWl0RXZlbnRTdXBw b3J0KHZvaWQpOworI2lmZGVmIFdJTjMyCitleHRlcm4gSEFORExFIENyZWF0ZVNoYXJlZFdh a2V1cEhhbmRsZSh2b2lkKTsKKyNlbmRpZgorCitleHRlcm4gV2FpdEV2ZW50U2V0ICpDcmVh dGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25lciByZXNvd25lciwgaW50IG5ldmVudHMpOwor ZXh0ZXJuIHZvaWQgRnJlZVdhaXRFdmVudFNldChXYWl0RXZlbnRTZXQgKnNldCk7CitleHRl cm4gdm9pZCBGcmVlV2FpdEV2ZW50U2V0QWZ0ZXJGb3JrKFdhaXRFdmVudFNldCAqc2V0KTsK K2V4dGVybiBpbnQJQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQz MiBldmVudHMsIHBnc29ja2V0IGZkLAorCQkJCQkJCSAgdWludDMyIGludGVycnVwdE1hc2ss IHZvaWQgKnVzZXJfZGF0YSk7CitleHRlcm4gdm9pZCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2 ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQzMiBldmVudHMsIHVpbnQzMiBpbnRlcnJ1cHRN YXNrKTsKKworZXh0ZXJuIGludAlXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0 LCBsb25nIHRpbWVvdXQsCisJCQkJCQkJIFdhaXRFdmVudCAqb2NjdXJyZWRfZXZlbnRzLCBp bnQgbmV2ZW50cywKKwkJCQkJCQkgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CitleHRlcm4g dm9pZCBJbml0aWFsaXplSW50ZXJydXB0V2FpdFNldCh2b2lkKTsKK2V4dGVybiBpbnQJR2V0 TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMoV2FpdEV2ZW50U2V0ICpzZXQpOworZXh0ZXJuIGJv b2wgV2FpdEV2ZW50U2V0Q2FuUmVwb3J0Q2xvc2VkKHZvaWQpOworCisvKiBsb3cgbGV2ZWwg ZnVuY3Rpb25zIHVzZWQgdG8gaW1wbGVtZW50IFNlbmRJbnRlcnJ1cHQgKi8KK2V4dGVybiB2 b2lkIFdha2V1cE15UHJvYyh2b2lkKTsKK2V4dGVybiB2b2lkIFdha2V1cE90aGVyUHJvYyhz dHJ1Y3QgUEdQUk9DICpwcm9jKTsKKworI2VuZGlmCQkJCQkJCS8qIFdBSVRFVkVOVFNFVF9I ICovCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ3NsZWVwLmMgYi9zcmMvcG9ydC9wZ3NsZWVw LmMKaW5kZXggMTI4NDQ1OGJmYy4uOWQ4ZWYyNjEyOSAxMDA2NDQKLS0tIGEvc3JjL3BvcnQv cGdzbGVlcC5jCisrKyBiL3NyYy9wb3J0L3Bnc2xlZXAuYwpAQCAtMzIsMTAgKzMyLDEwIEBA CiAgKgogICogQ0FVVElPTjogSXQncyBub3QgYSBnb29kIGlkZWEgdG8gdXNlIGxvbmcgc2xl ZXBzIGluIHRoZSBiYWNrZW5kLiAgVGhleSB3aWxsCiAgKiBzaWxlbnRseSByZXR1cm4gZWFy bHkgaWYgYSBzaWduYWwgaXMgY2F1Z2h0LCBidXQgdGhhdCBkb2Vzbid0IGluY2x1ZGUKLSAq IGxhdGNoZXMgYmVpbmcgc2V0IG9uIG1vc3QgT1NlcywgYW5kIGV2ZW4gc2lnbmFsIGhhbmRs ZXJzIHRoYXQgc2V0IE15TGF0Y2gKLSAqIG1pZ2h0IGhhcHBlbiB0byBydW4gYmVmb3JlIHRo ZSBzbGVlcCBiZWdpbnMsIGFsbG93aW5nIHRoZSBmdWxsIGRlbGF5LgotICogQmV0dGVyIHBy YWN0aWNlIGlzIHRvIHVzZSBXYWl0TGF0Y2goKSB3aXRoIGEgdGltZW91dCwgc28gdGhhdCBi YWNrZW5kcwotICogcmVzcG9uZCB0byBsYXRjaGVzIGFuZCBzaWduYWxzIHByb21wdGx5Lgor ICogaW50ZXJydXB0cyBiZWluZyBzZXQgb24gbW9zdCBPU2VzLCBhbmQgZXZlbiBzaWduYWwg aGFuZGxlcnMgdGhhdCByYWlzZSBhbgorICogaW50ZXJydXB0IG1pZ2h0IGhhcHBlbiB0byBy dW4gYmVmb3JlIHRoZSBzbGVlcCBiZWdpbnMsIGFsbG93aW5nIHRoZSBmdWxsCisgKiBkZWxh eS4gIEJldHRlciBwcmFjdGljZSBpcyB0byB1c2UgV2FpdEludGVycnVwdCgpIHdpdGggYSB0 aW1lb3V0LCBzbyB0aGF0CisgKiBiYWNrZW5kcyByZXNwb25kIHRvIGludGVycnVwdHMgYW5k IHNpZ25hbHMgcHJvbXB0bHkuCiAgKi8KIHZvaWQKIHBnX3VzbGVlcChsb25nIG1pY3Jvc2Vj KQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jIGIv c3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jCmluZGV4IGUwMWMwYzlkZTku LjAzMDc4MDc4ODkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250 ZXN0ZXIuYworKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMKQEAg LTc2Miw3ICs3NjIsNyBAQCB0cnlfY29tcGxldGVfc3RlcHMoVGVzdFNwZWMgKnRlc3RzcGVj LCBQZXJtdXRhdGlvblN0ZXAgKip3YWl0aW5nLAogCXsKIAkJaW50CQkJdyA9IDA7CiAKLQkJ LyogUmVzZXQgbGF0Y2g7IHdlIG9ubHkgY2FyZSBhYm91dCBub3RpY2VzIHJlY2VpdmVkIHdp dGhpbiBsb29wLiAqLworCQkvKiBSZXNldCBmbGFnOyB3ZSBvbmx5IGNhcmUgYWJvdXQgbm90 aWNlcyByZWNlaXZlZCB3aXRoaW4gbG9vcC4gKi8KIAkJYW55X25ld19ub3RpY2UgPSBmYWxz ZTsKIAogCQkvKiBMaWtld2lzZSwgdGhlc2UgdmFyaWFibGVzIHJlc2V0IGZvciBlYWNoIHJl dHJ5LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1 cC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jCmluZGV4IGZiMjM1 NjA0MzkuLjI1ZjRjMzNmZjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1fbXEvc2V0dXAuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVw LmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIK ICNpbmNsdWRlICJ0ZXN0X3NobV9tcS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CkBAIC0yODUsMTEgKzI4NiwxMSBAQCB3YWl0X2Zvcl93b3JrZXJzX3RvX2JlY29tZV9yZWFk eSh3b3JrZXJfc3RhdGUgKndzdGF0ZSwKIAkJCXdlX2Jnd29ya2VyX3N0YXJ0dXAgPSBXYWl0 RXZlbnRFeHRlbnNpb25OZXcoIlRlc3RTaG1NcUJnV29ya2VyU3RhcnR1cCIpOwogCiAJCS8q IFdhaXQgdG8gYmUgc2lnbmFsZWQuICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwg V0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCSB3ZV9iZ3dv cmtlcl9zdGFydHVwKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRf R0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJ CQkgd2VfYmd3b3JrZXJfc3RhcnR1cCk7CiAKLQkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdl IGRvbid0IHNwaW4uICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCS8qIENsZWFyIHRo ZSBpbnRlcnJ1cHQgZmxhZyBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlDbGVhckludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9j Y3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5j IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMKaW5kZXggM2QyMzU1Njhi OC4uYzNlZmFjNWE4ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9t cS90ZXN0LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMKQEAg LTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJmbWdyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJ2YXJhdHQuaCIKIAogI2luY2x1ZGUgInRlc3Rfc2htX21xLmgiCkBA IC0yMzQsMTMgKzIzNSwxMyBAQCB0ZXN0X3NobV9tcV9waXBlbGluZWQoUEdfRlVOQ1RJT05f QVJHUykKIAogCQkJLyoKIAkJCSAqIElmIHdlIG1hZGUgbm8gcHJvZ3Jlc3MsIHdhaXQgZm9y IG9uZSBvZiB0aGUgb3RoZXIgcHJvY2Vzc2VzIHRvCi0JCQkgKiB3aGljaCB3ZSBhcmUgY29u bmVjdGVkIHRvIHNldCBvdXIgbGF0Y2gsIGluZGljYXRpbmcgdGhhdCB0aGV5Ci0JCQkgKiBo YXZlIHJlYWQgb3Igd3JpdHRlbiBkYXRhIGFuZCB0aGVyZWZvcmUgdGhlcmUgbWF5IG5vdyBi ZSB3b3JrCi0JCQkgKiBmb3IgdXMgdG8gZG8uCisJCQkgKiB3aGljaCB3ZSBhcmUgY29ubmVj dGVkIHRvIHNlbmQgdXMgYW4gaW50ZXJydXB0LCBpbmRpY2F0aW5nIHRoYXQKKwkJCSAqIHRo ZXkgaGF2ZSByZWFkIG9yIHdyaXR0ZW4gZGF0YSBhbmQgdGhlcmVmb3JlIHRoZXJlIG1heSBu b3cgYmUKKwkJCSAqIHdvcmsgZm9yIHVzIHRvIGRvLgogCQkJICovCi0JCQkodm9pZCkgV2Fp dExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAs Ci0JCQkJCQkJIHdlX21lc3NhZ2VfcXVldWUpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsK KwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lO VEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJCSB3ZV9tZXNzYWdl X3F1ZXVlKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS93b3JrZXIuYwppbmRleCA2YzRmYmM3ODI3Li42NzUxNWUwZmVkIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIK QEAgLTEyOCw3ICsxMjksNyBAQCB0ZXN0X3NobV9tcV9tYWluKERhdHVtIG1haW5fYXJnKQog CQllbG9nKERFQlVHMSwgInJlZ2lzdHJhbnQgYmFja2VuZCBoYXMgZXhpdGVkIHByZW1hdHVy ZWx5Iik7CiAJCXByb2NfZXhpdCgxKTsKIAl9Ci0JU2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnBy b2NMYXRjaCk7CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgR2V0TnVtYmVy RnJvbVBHUHJvYyhyZWdpc3RyYW50KSk7CiAKIAkvKiBEbyB0aGUgd29yay4gKi8KIAljb3B5 X21lc3NhZ2VzKGlucWgsIG91dHFoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv d29ya2VyX3NwaS93b3JrZXJfc3BpLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkv d29ya2VyX3NwaS5jCmluZGV4IGQ0NDAzYjI0ZDkuLmRmNjAzOWNkMGQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwpAQCAtNSw3ICs1LDcgQEAKICAq CQlwYXR0ZXJuczogZXN0YWJsaXNoaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvbjsgc3RhcnRp bmcgYW5kIGNvbW1pdHRpbmcKICAqCQl0cmFuc2FjdGlvbnM7IHVzaW5nIEdVQyB2YXJpYWJs ZXMsIGFuZCBoZWVkaW5nIFNJR0hVUCB0byByZXJlYWQKICAqCQl0aGUgY29uZmlndXJhdGlv biBmaWxlOyByZXBvcnRpbmcgdG8gcGdfc3RhdF9hY3Rpdml0eTsgdXNpbmcgdGhlCi0gKgkJ cHJvY2VzcyBsYXRjaCB0byBzbGVlcCBhbmQgZXhpdCBpbiBjYXNlIG9mIHBvc3RtYXN0ZXIg ZGVhdGguCisgKgkJV2FpdEludGVycnVwdCB0byBzbGVlcCBhbmQgZXhpdCBpbiBjYXNlIG9m IHBvc3RtYXN0ZXIgZGVhdGguCiAgKgogICogVGhpcyBjb2RlIGNvbm5lY3RzIHRvIGEgZGF0 YWJhc2UsIGNyZWF0ZXMgYSBzY2hlbWEgYW5kIHRhYmxlLCBhbmQgc3VtbWFyaXplcwogICog dGhlIG51bWJlcnMgY29udGFpbmVkIHRoZXJlaW4uICBUbyBzZWUgaXQgd29ya2luZywgaW5z ZXJ0IGFuIGluaXRpYWwgdmFsdWUKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisj aW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKIAogLyogdGhlc2UgaGVhZGVycyBhcmUg dXNlZCBieSB0aGlzIHBhcnRpY3VsYXIgd29ya2VyJ3MgY29kZSAqLwogI2luY2x1ZGUgImFj Y2Vzcy94YWN0LmgiCkBAIC0yMjMsMTUgKzIyMywxNSBAQCB3b3JrZXJfc3BpX21haW4oRGF0 dW0gbWFpbl9hcmcpCiAKIAkJLyoKIAkJICogQmFja2dyb3VuZCB3b3JrZXJzIG11c3RuJ3Qg Y2FsbCB1c2xlZXAoKSBvciBhbnkgZGlyZWN0IGVxdWl2YWxlbnQ6Ci0JCSAqIGluc3RlYWQs IHRoZXkgbWF5IHdhaXQgb24gdGhlaXIgcHJvY2VzcyBsYXRjaCwgd2hpY2ggc2xlZXBzIGFz Ci0JCSAqIG5lY2Vzc2FyeSwgYnV0IGlzIGF3YWtlbmVkIGlmIHBvc3RtYXN0ZXIgZGllcy4g IFRoYXQgd2F5IHRoZQotCQkgKiBiYWNrZ3JvdW5kIHByb2Nlc3MgZ29lcyBhd2F5IGltbWVk aWF0ZWx5IGluIGFuIGVtZXJnZW5jeS4KKwkJICogaW5zdGVhZCwgdGhleSBtYXkgdXNlIFdh aXRJbnRlcnJ1cHQsIHdoaWNoIHNsZWVwcyBhcyBuZWNlc3NhcnksIGJ1dAorCQkgKiBpcyBh d2FrZW5lZCBpZiBwb3N0bWFzdGVyIGRpZXMuICBUaGF0IHdheSB0aGUgYmFja2dyb3VuZCBw cm9jZXNzCisJCSAqIGdvZXMgYXdheSBpbW1lZGlhdGVseSBpbiBhbiBlbWVyZ2VuY3kuCiAJ CSAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgd29ya2VyX3Nw aV9uYXB0aW1lICogMTAwMEwsCi0JCQkJCQkgd29ya2VyX3NwaV93YWl0X2V2ZW50X21haW4p OwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8 IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgd29ya2VyX3NwaV9uYXB0aW1lICog MTAwMEwsCisJCQkJCQkJIHdvcmtlcl9zcGlfd2FpdF9ldmVudF9tYWluKTsKKwkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMmQ0Yzg3MDQyMy4uZTQ5 MjJjMjFhZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK KysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEyNTQsNiArMTI1 NCw3IEBAIEludGVnZXIKIEludGVnZXJTZXQKIEludGVybmFsRGVmYXVsdEFDTAogSW50ZXJu YWxHcmFudAorSW50ZXJydXB0VHlwZQogSW50ZXJ2YWwKIEludGVydmFsQWdnU3RhdGUKIElu dG9DbGF1c2UKQEAgLTE0OTIsNyArMTQ5Myw2IEBAIExaNFN0YXRlCiBMYWJlbFByb3ZpZGVy CiBMYWdUcmFja2VyCiBMYXJnZU9iamVjdERlc2MKLUxhdGNoCiBMYXVuY2hlckxhc3RTdGFy dFRpbWVzRW50cnkKIExlcnBGdW5jCiBMZXhEZXNjcgotLSAKMi4zOS41Cgo= --------------ymTh4egrZR2y6G65Gu5Lb4oy Content-Type: text/x-patch; charset=UTF-8; name="v5-0002-Fix-lost-wakeup-issue-in-logical-replication-laun.patch" Content-Disposition: attachment; filename*0="v5-0002-Fix-lost-wakeup-issue-in-logical-replication-laun.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjZDBmZTMzNDZjYWJmMzM3ZTdiYjU1NzQwNGE4OTE3ODU1ODM5NzUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMiBEZWMgMjAyNCAxNTo1NToxOCArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjUgMi80XSBGaXggbG9zdCB3YWtldXAgaXNzdWUgaW4gbG9naWNh bCByZXBsaWNhdGlvbiBsYXVuY2hlcgoKRml4IGl0IGJ5IHVzaW5nIGEgc2VwYXJhdGUgaW50 ZXJydXB0IGJpdCBmb3Igc3Vic2NyaXB0aW9uIGNoYW5nZXMuCgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzQ3NjY3MmU3LTYyZjEtNGNhYi1h ODIyLWYzYThlOTQ5ZGQzZkBpa2kuZmkKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWVzc2FnZS1pZC9mZjA2NjNkOS04MDExLTQyMGYtYTE2OS1lZmJmNTczMjdj YjVAaWtpLmZpCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jIHwgMjMgKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9p bnRlcnJ1cHQuaCAgICAgICAgICAgIHwgIDUgKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTkg aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggOTc2NWEwOTllYy4uNTEyMjcyOGRmYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAt NTcsNyArNTcsNyBAQCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXIgPSBO VUxMOwogdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcEN0eFN0cnVjdAogewogCS8qIFN1cGVy dmlzb3IgcHJvY2Vzcy4gKi8KLQlwaWRfdAkJbGF1bmNoZXJfcGlkOworCVByb2NOdW1iZXIJ bGF1bmNoZXJfcHJvY25vOwogCiAJLyogSGFzaCB0YWJsZSBob2xkaW5nIGxhc3Qgc3RhcnQg dGltZXMgb2Ygc3Vic2NyaXB0aW9ucycgYXBwbHkgd29ya2Vycy4gKi8KIAlkc2FfaGFuZGxl CWxhc3Rfc3RhcnRfZHNhOwpAQCAtODE0LDcgKzgxNCw3IEBAIGxvZ2ljYWxyZXBfd29ya2Vy X2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQogc3RhdGljIHZvaWQKIGxvZ2lj YWxyZXBfbGF1bmNoZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiB7Ci0JTG9naWNh bFJlcEN0eC0+bGF1bmNoZXJfcGlkID0gMDsKKwlMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9w cm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogfQogCiAvKgpAQCAtOTc0LDYgKzk3NCw3 IEBAIEFwcGx5TGF1bmNoZXJTaG1lbUluaXQodm9pZCkKIAogCQltZW1zZXQoTG9naWNhbFJl cEN0eCwgMCwgQXBwbHlMYXVuY2hlclNobWVtU2l6ZSgpKTsKIAorCQlMb2dpY2FsUmVwQ3R4 LT5sYXVuY2hlcl9wcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQlMb2dpY2FsUmVw Q3R4LT5sYXN0X3N0YXJ0X2RzYSA9IERTQV9IQU5ETEVfSU5WQUxJRDsKIAkJTG9naWNhbFJl cEN0eC0+bGFzdF9zdGFydF9kc2ggPSBEU0hBU0hfSEFORExFX0lOVkFMSUQ7CiAKQEAgLTEx MTksOCArMTEyMCwxMiBAQCBBcHBseUxhdW5jaGVyV2FrZXVwQXRDb21taXQodm9pZCkKIHN0 YXRpYyB2b2lkCiBBcHBseUxhdW5jaGVyV2FrZXVwKHZvaWQpCiB7Ci0JaWYgKExvZ2ljYWxS ZXBDdHgtPmxhdW5jaGVyX3BpZCAhPSAwKQotCQlraWxsKExvZ2ljYWxSZXBDdHgtPmxhdW5j aGVyX3BpZCwgU0lHVVNSMSk7CisJdm9sYXRpbGUgTG9naWNhbFJlcEN0eFN0cnVjdCAqcmVw Y3R4ID0gTG9naWNhbFJlcEN0eDsKKwlQcm9jTnVtYmVyCWxhdW5jaGVyX3Byb2NubzsKKwor CWxhdW5jaGVyX3Byb2NubyA9IHJlcGN0eC0+bGF1bmNoZXJfcHJvY25vOworCWlmIChsYXVu Y2hlcl9wcm9jbm8gIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfU1VCU0NSSVBUSU9OX0NIQU5HRSwgbGF1bmNoZXJfcHJvY25vKTsKIH0KIAog LyoKQEAgLTExMzQsOCArMTEzOSw4IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5f YXJnKQogCiAJYmVmb3JlX3NobWVtX2V4aXQobG9naWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQs IChEYXR1bSkgMCk7CiAKLQlBc3NlcnQoTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcGlkID09 IDApOwotCUxvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3BpZCA9IE15UHJvY1BpZDsKKwlBc3Nl cnQoTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcHJvY25vID09IElOVkFMSURfUFJPQ19OVU1C RVIpOworCUxvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3Byb2NubyA9IE15UHJvY051bWJlcjsK IAogCS8qIEVzdGFibGlzaCBzaWduYWwgaGFuZGxlcnMuICovCiAJcHFzaWduYWwoU0lHSFVQ LCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKQEAgLTExNjcsNiArMTE3Miw3IEBA IEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvbGRjdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oc3ViY3R4KTsKIAogCQkvKiBTdGFydCBhbnkgbWlzc2luZyB3b3Jr ZXJzIGZvciBlbmFibGVkIHN1YnNjcmlwdGlvbnMuICovCisJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFKTsKIAkJc3VibGlzdCA9IGdldF9zdWJzY3Jp cHRpb25fbGlzdCgpOwogCQlmb3JlYWNoKGxjLCBzdWJsaXN0KQogCQl7CkBAIC0xMjIzLDcg KzEyMjksOCBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJTWVtb3J5 Q29udGV4dERlbGV0ZShzdWJjdHgpOwogCiAJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8K LQkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCXJjID0g V2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMIHwKKwkJCQkJCSAgIDEgPDwg SU5URVJSVVBUX1NVQlNDUklQVElPTl9DSEFOR0UsCiAJCQkJCQkgICBXTF9JTlRFUlJVUFQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCSAgIHdhaXRfdGlt ZSwKIAkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlOKTsKQEAgLTEy NTAsNyArMTI1Nyw3IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogYm9v bAogSXNMb2dpY2FsTGF1bmNoZXIodm9pZCkKIHsKLQlyZXR1cm4gTG9naWNhbFJlcEN0eC0+ bGF1bmNoZXJfcGlkID09IE15UHJvY1BpZDsKKwlyZXR1cm4gTG9naWNhbFJlcEN0eC0+bGF1 bmNoZXJfcHJvY25vID09IE15UHJvY051bWJlcjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2lu dGVycnVwdC5oCmluZGV4IDFkYTA1MzY5YzMuLjM5ODE1YmY0ODggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9pbnRlcnJ1cHQuaApAQCAtMTEwLDExICsxMTAsMTQgQEAgdHlwZWRlZiBlbnVtCiAJSU5U RVJSVVBUX0dFTkVSQUwsCiAKIAkvKgotCSAqIElOVEVSUlVQVF9SRUNPVkVSWV9XQUtFVVAg aXMgdXNlZCB0byB3YWtlIHVwIHN0YXJ0dXAgcHJvY2VzcywgdG8gdGVsbAorCSAqIElOVEVS UlVQVF9SRUNPVkVSWV9DT05USU5VRSBpcyB1c2VkIHRvIHdha2UgdXAgc3RhcnR1cCBwcm9j ZXNzLCB0byB0ZWxsCiAJICogaXQgdGhhdCBpdCBzaG91bGQgY29udGludWUgV0FMIHJlcGxh eS4gSXQncyBzZW50IGJ5IFdBTCByZWNlaXZlciB3aGVuCiAJICogbW9yZSBXQUwgYXJyaXZl cywgb3Igd2hlbiBwcm9tb3Rpb24gaXMgcmVxdWVzdGVkLgogCSAqLwogCUlOVEVSUlVQVF9S RUNPVkVSWV9DT05USU5VRSwKKworCS8qIHNlbnQgdG8gbG9naWNhbCByZXBsaWNhdGlvbiBs YXVuY2hlciwgd2hlbiBhIHN1YnNjcmlwdGlvbiBjaGFuZ2VzICovCisJSU5URVJSVVBUX1NV QlNDUklQVElPTl9DSEFOR0UsCiB9IEludGVycnVwdFR5cGU7CiAKIC8qCi0tIAoyLjM5LjUK Cg== --------------ymTh4egrZR2y6G65Gu5Lb4oy Content-Type: text/x-patch; charset=UTF-8; name="v5-0003-Use-INTERRUPT_GENERAL-for-bgworker-state-change-n.patch" Content-Disposition: attachment; filename*0="v5-0003-Use-INTERRUPT_GENERAL-for-bgworker-state-change-n.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkM2E4Y2QwM2RlODllYjQxODRiOWViNjUyNjdlODBhOTIyZTcxNjc3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMiBEZWMgMjAyNCAxNTo1NToyMSArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjUgMy80XSBVc2UgSU5URVJSVVBUX0dFTkVSQUwgZm9yIGJnd29y a2VyIHN0YXRlIGNoYW5nZQogbm90aWZpY2F0aW9uCgpBcyBwYXJ0IG9mIGEgcHJvamVjdCB0 byByZW1vdmUgdGhlIHJlbGlhbmNlIG9uIFBJRHMgdG8gaWRlbnRpZnkKYmFja2VuZHMsIGJh Y2tlbmRzIHRoYXQgcmVnaXN0ZXIgZHluYW1pYyBiYWNrZ3JvdW5kIHdvcmtlcnMgd2lsbCBu b3cKcmVjZWl2ZSBJTlRFUlJVUFRfR0VORVJBTCBzZW50IGRpcmVjdGx5IGJ5IHRoZSBwb3N0 bWFzdGVyIHdoZW4gdGhlCndvcmtlciBzdGF0ZSBjaGFuZ2VzLiAgUHJldmlvdXNseSwgdGhl IHBvc3RtYXN0ZXIgd291bGQgc2VuZCBhIFNJR1VTUjEKc2lnbmFsLCB3aGljaCByZWxpZWQg b24gdGhlIFByb2NTaWduYWwgc3lzdGVtJ3MgaGFuZGxlciBzZXR0aW5nIHRoZQppbnRlcnJ1 cHQgZmxhZywgd2l0aCB0aGUgc2FtZSBlbmQgZWZmZWN0LiAgTm93IHRoYXQgaW50ZXJtZWRp YXRlIHN0ZXAKaXMgc2tpcHBlZC4KClRoZSBmaWVsZCBiZ3dfbm90aWZ5X3BpZCBzdGlsbCBl eGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBidXQKaGFzIG5vIGVmZmVjdCBh bmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBsYXRlciByZWxlYXNlLgpSZWdpc3RlckJhY2tncm91 bmRXb3JrZXIoKSBub3cgYXV0b21hdGljYWxseSBhc3N1bWVzIHRoYXQgdGhlIGNhbGxlcgp3 b3VsZCBsaWtlIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb25zIGRlbGl2ZXJlZCB0byBpdHMg cHJvYyBudW1iZXIsCnVubGVzcyBCR1dfTk9fTk9USUZZIGlzIHNldCBpbiBiZ3dfZmxhZ3Mu CgpSZW1vdmluZyBvdGhlciBjYXNlcyBvZiBQSURzIGZyb20gdGhlIGJnd29ya2VyIEFQSSBp cyBsZWZ0IGZvciBsYXRlcgp3b3JrOyB0aGlzIHBhdGNoIGlzIGNvbmNlcm5lZCBvbmx5IHdp dGggcmVtb3ZpbmcgYSBkZXBlbmRlbmN5IG9uClByb2NTaWduYWwgaW5mcmFzdHJ1Y3R1cmUg dGhhdCBpcyBkdWUgdG8gYmUgcmVtb3ZlZCBieSBhIGxhdGVyIGNvbW1pdC4KClRoaXMgcmVw cmVzZW50cyB0aGUgZmlyc3QgdXNlIG9mIFNlbmRJbnRlcnJ1cHQoKSBpbiB0aGUgcG9zdG1h c3Rlci4KSXQgbWlnaHQgc2VlbSBtb3JlIG5hdHVyYWwgdG8gdXNlIGNvbmRpdGlvbiB2YXJp YWJsZXMgaW4gdGhlCndhaXQtZm9yLXN0YXRlLWNoYW5nZSBmdW5jdGlvbnMsIHNvIHRoYXQg YW55b25lIHdpdGggYSBoYW5kbGUgY2FuCndhaXQsIGJ1dCBjb25kaXRpb24gdmFyaWFibGVz IGFzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCB3b3VsZCBiZSBhIGxvdApsZXNzIHJvYnVzdCB0 aGFuIHNpbXBsZSBpbnRlcnJ1cHRzLgoKQXV0aG9yOiBUaG9tYXMgTXVucm8gPHRob21hcy5t dW5yb0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBIZWlra2kgTGlubmFrYW5nYXMgPGhsaW5u YWthQGlraS5maT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQSUyQmhVS0cl MkIzTWtTMjF5SzRqTDRjZ1p5d2RubkdLaUJnMGphdG9WNmt6YW5pQm1jcWJRJTQwbWFpbC5n bWFpbC5jb20KLS0tCiBjb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYyAgICAgICAg ICAgIHwgICA2IC0KIGRvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sICAgICAgICAgICAgICAg ICAgfCAgMjcgKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMg ICAgICAgfCAgIDEgLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAg ICAgICB8IDEyOCArKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmMgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jICB8ICAgMiAtCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pbnRlcnJ1cHQuYyAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3dhaXRldmVudHNldC5jICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9i Z3dvcmtlci5oICAgICAgICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9i Z3dvcmtlcl9pbnRlcm5hbHMuaCB8ICAgNCArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS9zZXR1cC5jICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS90ZXN0X3NobV9tcS5oICB8ICAgMiArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2ht X21xL3dvcmtlci5jICAgICAgIHwgICA5ICstCiBzcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9z cGkvd29ya2VyX3NwaS5jICAgIHwgICAzIC0KIDE0IGZpbGVzIGNoYW5nZWQsIDExMiBpbnNl cnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3By ZXdhcm0vYXV0b3ByZXdhcm0uYyBiL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5j CmluZGV4IDdjMjkxYzk5NmMuLjdiMjkyNmU2NmQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdf cHJld2FybS9hdXRvcHJld2FybS5jCisrKyBiL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJl d2FybS5jCkBAIC04MTcsOSArODE3LDYgQEAgYXB3X3N0YXJ0X2xlYWRlcl93b3JrZXIodm9p ZCkKIAkJcmV0dXJuOwogCX0KIAotCS8qIG11c3Qgc2V0IG5vdGlmeSBQSUQgdG8gd2FpdCBm b3Igc3RhcnR1cCAqLwotCXdvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKLQog CWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmd29ya2VyLCAmaGFuZGxl KSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVO VF9SRVNPVVJDRVMpLApAQCAtODUzLDkgKzg1MCw2IEBAIGFwd19zdGFydF9kYXRhYmFzZV93 b3JrZXIodm9pZCkKIAlzdHJjcHkod29ya2VyLmJnd19uYW1lLCAiYXV0b3ByZXdhcm0gd29y a2VyIik7CiAJc3RyY3B5KHdvcmtlci5iZ3dfdHlwZSwgImF1dG9wcmV3YXJtIHdvcmtlciIp OwogCi0JLyogbXVzdCBzZXQgbm90aWZ5IFBJRCB0byB3YWl0IGZvciBzaHV0ZG93biAqLwot CXdvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKLQogCWlmICghUmVnaXN0ZXJE eW5hbWljQmFja2dyb3VuZFdvcmtlcigmd29ya2VyLCAmaGFuZGxlKSkKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9SRVNPVVJDRVMpLApk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwv Ymd3b3JrZXIuc2dtbAppbmRleCAzMTcxMDU0ZTU1Li44NzFmNjg2OWQ2IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvYmd3b3Jr ZXIuc2dtbApAQCAtNjMsNyArNjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3JvdW5kV29y a2VyCiAgICAgY2hhciAgICAgICAgYmd3X2Z1bmN0aW9uX25hbWVbQkdXX01BWExFTl07CiAg ICAgRGF0dW0gICAgICAgYmd3X21haW5fYXJnOwogICAgIGNoYXIgICAgICAgIGJnd19leHRy YVtCR1dfRVhUUkFMRU5dOwotICAgIHBpZF90ICAgICAgIGJnd19ub3RpZnlfcGlkOworICAg IHBpZF90ICAgICAgIGJnd19ub3RpZnlfcGlkOwkJCS8qIG5vdCB1c2VkICovCiB9IEJhY2tn cm91bmRXb3JrZXI7CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3BhcmE+CkBAIC0xMDgsNiAr MTA4LDE4IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKICAgICAgPC9saXN0 aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnk+CisgICAg IDx0ZXJtPjxsaXRlcmFsPkJHV09SS0VSX05PX05PVElGWTwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxpbmRleHRlcm0+PHByaW1h cnk+QkdXT1JLRVJfTk9fTk9USUZZPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAgICAgIE5v cm1hbGx5LCB0aGUgYmFja2VuZCB0aGF0IHJlZ2lzdGVycyBhIGR5bmFtaWMgd29ya2VyIHdp bGwgYmUgbm90aWZpZWQKKyAgICAgICB3aXRoIDxsaXRlcmFsPklOVEVSUlVQVF9HRU5FUkFM PC9saXRlcmFsPiB3aGVuIHRoZSB3b3JrZXJzIHN0YXRlIGNoYW5nZXMsIHdoaWNoIGFsbG93 cyB0aGUKKyAgICAgICBjYWxsZXIgdG8gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBzdGFydCBh bmQgc2h1dCBkb3duLiAgVGhhdCBjYW4gYmUKKyAgICAgICBzdXBwcmVzc2VkIGJ5IHNldHRp bmcgdGhpcyBmbGFnLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwv dmFybGlzdGVudHJ5PgogICAgPC92YXJpYWJsZWxpc3Q+CiAKICAgPC9wYXJhPgpAQCAtMTgx LDEyICsxOTMsOCBAQCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3JvdW5kV29ya2VyCiAgIDwvcGFy YT4KIAogICA8cGFyYT4KLSAgIDxzdHJ1Y3RmaWVsZD5iZ3dfbm90aWZ5X3BpZDwvc3RydWN0 ZmllbGQ+IGlzIHRoZSBQSUQgb2YgYSBQb3N0Z3JlU1FMCi0gICBiYWNrZW5kIHByb2Nlc3Mg dG8gd2hpY2ggdGhlIHBvc3RtYXN0ZXIgc2hvdWxkIHNlbmQgPGxpdGVyYWw+U0lHVVNSMTwv bGl0ZXJhbD4KLSAgIHdoZW4gdGhlIHByb2Nlc3MgaXMgc3RhcnRlZCBvciBleGl0cy4gIEl0 IHNob3VsZCBiZSAwIGZvciB3b3JrZXJzIHJlZ2lzdGVyZWQKLSAgIGF0IHBvc3RtYXN0ZXIg c3RhcnR1cCB0aW1lLCBvciB3aGVuIHRoZSBiYWNrZW5kIHJlZ2lzdGVyaW5nIHRoZSB3b3Jr ZXIgZG9lcwotICAgbm90IHdpc2ggdG8gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBzdGFydCB1 cC4gIE90aGVyd2lzZSwgaXQgc2hvdWxkIGJlCi0gICBpbml0aWFsaXplZCB0byA8bGl0ZXJh bD5NeVByb2NQaWQ8L2xpdGVyYWw+LgorICAgPHN0cnVjdGZpZWxkPmJnd19ub3RpZnlfcGlk PC9zdHJ1Y3RmaWVsZD4gaXMgbm90IHVzZWQgYW5kIG1heSBiZSByZW1vdmVkCisgICBpbiBh IGZ1dHVyZSByZWxlYXNlLgogICA8L3BhcmE+CiAKICAgPHBhcmE+T25jZSBydW5uaW5nLCB0 aGUgcHJvY2VzcyBjYW4gY29ubmVjdCB0byBhIGRhdGFiYXNlIGJ5IGNhbGxpbmcKQEAgLTI1 OCwxMCArMjY2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQmFja2dyb3VuZFdvcmtlcgogCiAgIDxw YXJhPgogICAgSW4gc29tZSBjYXNlcywgYSBwcm9jZXNzIHdoaWNoIHJlZ2lzdGVycyBhIGJh Y2tncm91bmQgd29ya2VyIG1heSB3aXNoIHRvCi0gICB3YWl0IGZvciB0aGUgd29ya2VyIHRv IHN0YXJ0IHVwLiAgVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IGluaXRpYWxpemluZwot ICAgPHN0cnVjdGZpZWxkPmJnd19ub3RpZnlfcGlkPC9zdHJ1Y3RmaWVsZD4gdG8gPGxpdGVy YWw+TXlQcm9jUGlkPC9saXRlcmFsPiBhbmQKLSAgIHRoZW4gcGFzc2luZyB0aGUgPHR5cGU+ QmFja2dyb3VuZFdvcmtlckhhbmRsZSAqPC90eXBlPiBvYnRhaW5lZCBhdAotICAgcmVnaXN0 cmF0aW9uIHRpbWUgdG8KKyAgIHdhaXQgZm9yIHRoZSB3b3JrZXIgdG8gc3RhcnQgdXAuICBU aGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgd2l0aCB0aGUKICAgIDxmdW5jdGlvbj5XYWl0Rm9y QmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoPHBhcmFtZXRlcj5CYWNrZ3JvdW5kV29ya2VySGFu ZGxlCiAgICAqaGFuZGxlPC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPnBpZF90ICo8L3BhcmFt ZXRlcj4pPC9mdW5jdGlvbj4gZnVuY3Rpb24uCiAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmxv Y2sgdW50aWwgdGhlIHBvc3RtYXN0ZXIgaGFzIGF0dGVtcHRlZCB0byBzdGFydCB0aGUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCmluZGV4IDI3YzNkYjllM2MuLjk4 NDkzNmFhMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFs bGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwpAQCAt NjAwLDcgKzYwMCw2IEBAIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQg KnBjeHQpCiAJc3ByaW50Zih3b3JrZXIuYmd3X2xpYnJhcnlfbmFtZSwgInBvc3RncmVzIik7 CiAJc3ByaW50Zih3b3JrZXIuYmd3X2Z1bmN0aW9uX25hbWUsICJQYXJhbGxlbFdvcmtlck1h aW4iKTsKIAl3b3JrZXIuYmd3X21haW5fYXJnID0gVUludDMyR2V0RGF0dW0oZHNtX3NlZ21l bnRfaGFuZGxlKHBjeHQtPnNlZykpOwotCXdvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IE15UHJv Y1BpZDsKIAogCS8qCiAJICogU3RhcnQgd29ya2Vycy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuYwppbmRleCA4MjhmYzBiNzMyLi4zNDRjZWYyNDAyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dvcmtlci5jCkBAIC03OCw2ICs3OCw4IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tn cm91bmRXb3JrZXJTbG90CiAJcGlkX3QJCXBpZDsJCQkvKiBJbnZhbGlkUGlkID0gbm90IHN0 YXJ0ZWQgeWV0OyAwID0gZGVhZCAqLwogCXVpbnQ2NAkJZ2VuZXJhdGlvbjsJCS8qIGluY3Jl bWVudGVkIHdoZW4gc2xvdCBpcyByZWN5Y2xlZCAqLwogCUJhY2tncm91bmRXb3JrZXIgd29y a2VyOworCWludAkJCW5vdGlmeV9wbWNoaWxkOworCVByb2NOdW1iZXIJbm90aWZ5X3Byb2Nf bnVtYmVyOwogfSBCYWNrZ3JvdW5kV29ya2VyU2xvdDsKIAogLyoKQEAgLTE5Miw4ICsxOTQs OSBAQCBCYWNrZ3JvdW5kV29ya2VyU2htZW1Jbml0KHZvaWQpCiAJCQlzbG90LT50ZXJtaW5h dGUgPSBmYWxzZTsKIAkJCXNsb3QtPnBpZCA9IEludmFsaWRQaWQ7CiAJCQlzbG90LT5nZW5l cmF0aW9uID0gMDsKKwkJCXNsb3QtPm5vdGlmeV9wbWNoaWxkID0gMDsKKwkJCXNsb3QtPm5v dGlmeV9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCQlydy0+cndfc2ht ZW1fc2xvdCA9IHNsb3RubzsKLQkJCXJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQgPSAw OwkvKiBtaWdodCBiZSByZWluaXQgYWZ0ZXIgY3Jhc2ggKi8KIAkJCW1lbWNweSgmc2xvdC0+ d29ya2VyLCAmcnctPnJ3X3dvcmtlciwgc2l6ZW9mKEJhY2tncm91bmRXb3JrZXIpKTsKIAkJ CSsrc2xvdG5vOwogCQl9CkBAIC0yMzQsNiArMjM3LDE0IEBAIEZpbmRSZWdpc3RlcmVkV29y a2VyQnlTbG90TnVtYmVyKGludCBzbG90bm8pCiAJcmV0dXJuIE5VTEw7CiB9CiAKK1Byb2NO dW1iZXIKK0dldE5vdGlmeVByb2NOdW1iZXJGb3JSZWdpc3RlcmVkV29ya2VyKFJlZ2lzdGVy ZWRCZ1dvcmtlciAqcncpCit7CisJQmFja2dyb3VuZFdvcmtlclNsb3QgKnNsb3QgPSAmQmFj a2dyb3VuZFdvcmtlckRhdGEtPnNsb3RbcnctPnJ3X3NobWVtX3Nsb3RdOworCisJcmV0dXJu IHNsb3QtPm5vdGlmeV9wcm9jX251bWJlcjsKK30KKwogLyoKICAqIE5vdGljZSBjaGFuZ2Vz IHRvIHNoYXJlZCBtZW1vcnkgbWFkZSBieSBvdGhlciBiYWNrZW5kcy4KICAqIEFjY2VwdCBu ZXcgd29ya2VyIHJlcXVlc3RzIG9ubHkgaWYgYWxsb3dfbmV3X3dvcmtlcnMgaXMgdHJ1ZS4K QEAgLTMxNSwyMCArMzI2LDIwIEBAIEJhY2tncm91bmRXb3JrZXJTdGF0ZUNoYW5nZShib29s IGFsbG93X25ld193b3JrZXJzKQogCQkvKgogCQkgKiBJZiB0aGUgd29ya2VyIGlzIG1hcmtl ZCBmb3IgdGVybWluYXRpb24sIHdlIGRvbid0IG5lZWQgdG8gYWRkIGl0IHRvCiAJCSAqIHRo ZSByZWdpc3RlcmVkIHdvcmtlcnMgbGlzdDsgd2UgY2FuIGp1c3QgZnJlZSB0aGUgc2xvdC4g SG93ZXZlciwgaWYKLQkJICogYmd3X25vdGlmeV9waWQgaXMgc2V0LCB0aGUgcHJvY2VzcyB0 aGF0IHJlZ2lzdGVyZWQgdGhlIHdvcmtlciBtYXkKLQkJICogbmVlZCB0byBrbm93IHRoYXQg d2UndmUgcHJvY2Vzc2VkIHRoZSB0ZXJtaW5hdGUgcmVxdWVzdCwgc28gYmUgc3VyZQotCQkg KiB0byBzaWduYWwgaXQuCisJCSAqIGJnd19ub3RpZnlfcHJvY19udW1iZXIgaXMgc2V0LCB0 aGUgcHJvY2VzcyB0aGF0IHJlZ2lzdGVyZWQgdGhlCisJCSAqIHdvcmtlciBtYXkgbmVlZCB0 byBrbm93IHRoYXQgd2UndmUgcHJvY2Vzc2VkIHRoZSB0ZXJtaW5hdGUgcmVxdWVzdCwKKwkJ ICogc28gYmUgc3VyZSB0byBzaWduYWwgaXQuCiAJCSAqLwogCQlpZiAoc2xvdC0+dGVybWlu YXRlKQogCQl7Ci0JCQlpbnQJCQlub3RpZnlfcGlkOworCQkJaW50CQkJbm90aWZ5X3Byb2Nf bnVtYmVyOwogCiAJCQkvKgogCQkJICogV2UgbmVlZCBhIG1lbW9yeSBiYXJyaWVyIGhlcmUg dG8gbWFrZSBzdXJlIHRoYXQgdGhlIGxvYWQgb2YKLQkJCSAqIGJnd19ub3RpZnlfcGlkIGFu ZCB0aGUgdXBkYXRlIG9mIHBhcmFsbGVsX3Rlcm1pbmF0ZV9jb3VudAotCQkJICogY29tcGxl dGUgYmVmb3JlIHRoZSBzdG9yZSB0byBpbl91c2UuCisJCQkgKiBiZ3dfbm90aWZ5X3Byb2Nf bnVtYmVyIGFuZCB0aGUgdXBkYXRlIG9mCisJCQkgKiBwYXJhbGxlbF90ZXJtaW5hdGVfY291 bnQgY29tcGxldGUgYmVmb3JlIHRoZSBzdG9yZSB0byBpbl91c2UuCiAJCQkgKi8KLQkJCW5v dGlmeV9waWQgPSBzbG90LT53b3JrZXIuYmd3X25vdGlmeV9waWQ7CisJCQlub3RpZnlfcHJv Y19udW1iZXIgPSBzbG90LT5ub3RpZnlfcHJvY19udW1iZXI7CiAJCQlpZiAoKHNsb3QtPndv cmtlci5iZ3dfZmxhZ3MgJiBCR1dPUktFUl9DTEFTU19QQVJBTExFTCkgIT0gMCkKIAkJCQlC YWNrZ3JvdW5kV29ya2VyRGF0YS0+cGFyYWxsZWxfdGVybWluYXRlX2NvdW50Kys7CiAJCQlz bG90LT5waWQgPSAwOwpAQCAtMzM2LDggKzM0Nyw4IEBAIEJhY2tncm91bmRXb3JrZXJTdGF0 ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJzKQogCQkJcGdfbWVtb3J5X2JhcnJpZXIo KTsKIAkJCXNsb3QtPmluX3VzZSA9IGZhbHNlOwogCi0JCQlpZiAobm90aWZ5X3BpZCAhPSAw KQotCQkJCWtpbGwobm90aWZ5X3BpZCwgU0lHVVNSMSk7CisJCQlpZiAobm90aWZ5X3Byb2Nf bnVtYmVyICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCQkJU2VuZEludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCwgbm90aWZ5X3Byb2NfbnVtYmVyKTsKIAogCQkJY29udGludWU7CiAJ CX0KQEAgLTM4MywyMyArMzk0LDYgQEAgQmFja2dyb3VuZFdvcmtlclN0YXRlQ2hhbmdlKGJv b2wgYWxsb3dfbmV3X3dvcmtlcnMpCiAJCXJ3LT5yd193b3JrZXIuYmd3X21haW5fYXJnID0g c2xvdC0+d29ya2VyLmJnd19tYWluX2FyZzsKIAkJbWVtY3B5KHJ3LT5yd193b3JrZXIuYmd3 X2V4dHJhLCBzbG90LT53b3JrZXIuYmd3X2V4dHJhLCBCR1dfRVhUUkFMRU4pOwogCi0JCS8q Ci0JCSAqIENvcHkgdGhlIFBJRCB0byBiZSBub3RpZmllZCBhYm91dCBzdGF0ZSBjaGFuZ2Vz LCBidXQgb25seSBpZiB0aGUKLQkJICogcG9zdG1hc3RlciBrbm93cyBhYm91dCBhIGJhY2tl bmQgd2l0aCB0aGF0IFBJRC4gIEl0IGlzbid0IGFuIGVycm9yCi0JCSAqIGlmIHRoZSBwb3N0 bWFzdGVyIGRvZXNuJ3Qga25vdyBhYm91dCB0aGUgUElELCBiZWNhdXNlIHRoZSBiYWNrZW5k Ci0JCSAqIHRoYXQgcmVxdWVzdGVkIHRoZSB3b3JrZXIgY291bGQgaGF2ZSBkaWVkIChvciBi ZWVuIGtpbGxlZCkganVzdAotCQkgKiBhZnRlciBkb2luZyBzby4gIE5vbmV0aGVsZXNzLCBh dCBsZWFzdCB1bnRpbCB3ZSBnZXQgc29tZSBleHBlcmllbmNlCi0JCSAqIHdpdGggaG93IHRo aXMgcGxheXMgb3V0IGluIHRoZSB3aWxkLCBsb2cgYSBtZXNzYWdlIGF0IGEgcmVsYXRpdmUK LQkJICogaGlnaCBkZWJ1ZyBsZXZlbC4KLQkJICovCi0JCXJ3LT5yd193b3JrZXIuYmd3X25v dGlmeV9waWQgPSBzbG90LT53b3JrZXIuYmd3X25vdGlmeV9waWQ7Ci0JCWlmICghUG9zdG1h c3Rlck1hcmtQSURGb3JXb3JrZXJOb3RpZnkocnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3Bp ZCkpCi0JCXsKLQkJCWVsb2coREVCVUcxLCAid29ya2VyIG5vdGlmaWNhdGlvbiBQSUQgJWQg aXMgbm90IHZhbGlkIiwKLQkJCQkgKGludCkgcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3Bp ZCk7Ci0JCQlydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkID0gMDsKLQkJfQotCiAJCS8q IEluaXRpYWxpemUgcG9zdG1hc3RlciBib29ra2VlcGluZy4gKi8KIAkJcnctPnJ3X3BpZCA9 IDA7CiAJCXJ3LT5yd19jcmFzaGVkX2F0ID0gMDsKQEAgLTQyMSw3ICs0MTUsNyBAQCBCYWNr Z3JvdW5kV29ya2VyU3RhdGVDaGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2VycykKICAqIE5P VEU6IFRoZSBlbnRyeSBpcyB1bmxpbmtlZCBmcm9tIEJhY2tncm91bmRXb3JrZXJMaXN0LiAg SWYgdGhlIGNhbGxlciBpcwogICogaXRlcmF0aW5nIHRocm91Z2ggaXQsIGJldHRlciB1c2Ug YSBtdXRhYmxlIGl0ZXJhdG9yIQogICoKLSAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3Ig bm90aWZ5aW5nIGJnd19ub3RpZnlfcGlkLCBpZiBhcHByb3ByaWF0ZS4KKyAqIENhbGxlciBp cyByZXNwb25zaWJsZSBmb3Igbm90aWZ5aW5nIGJnd19ub3RpZnlfcHJvY19udW1iZXIsIGlm IGFwcHJvcHJpYXRlLgogICoKICAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBpbnZva2VkIG9u bHkgaW4gdGhlIHBvc3RtYXN0ZXIuCiAgKi8KQEAgLTQ2Niw4ICs0NjAsOCBAQCBSZXBvcnRC YWNrZ3JvdW5kV29ya2VyUElEKFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncpCiAJc2xvdCA9ICZC YWNrZ3JvdW5kV29ya2VyRGF0YS0+c2xvdFtydy0+cndfc2htZW1fc2xvdF07CiAJc2xvdC0+ cGlkID0gcnctPnJ3X3BpZDsKIAotCWlmIChydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlk ICE9IDApCi0JCWtpbGwocnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCwgU0lHVVNSMSk7 CisJaWYgKHNsb3QtPm5vdGlmeV9wcm9jX251bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVS KQorCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBzbG90LT5ub3RpZnlfcHJv Y19udW1iZXIpOwogfQogCiAvKgpAQCAtNDgzLDEyICs0NzcsMTIgQEAgdm9pZAogUmVwb3J0 QmFja2dyb3VuZFdvcmtlckV4aXQoUmVnaXN0ZXJlZEJnV29ya2VyICpydykKIHsKIAlCYWNr Z3JvdW5kV29ya2VyU2xvdCAqc2xvdDsKLQlpbnQJCQlub3RpZnlfcGlkOworCVByb2NOdW1i ZXIJbm90aWZ5X3Byb2NfbnVtYmVyOwogCiAJQXNzZXJ0KHJ3LT5yd19zaG1lbV9zbG90IDwg bWF4X3dvcmtlcl9wcm9jZXNzZXMpOwogCXNsb3QgPSAmQmFja2dyb3VuZFdvcmtlckRhdGEt PnNsb3RbcnctPnJ3X3NobWVtX3Nsb3RdOwogCXNsb3QtPnBpZCA9IHJ3LT5yd19waWQ7Ci0J bm90aWZ5X3BpZCA9IHJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQ7CisJbm90aWZ5X3By b2NfbnVtYmVyID0gc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVyOwogCiAJLyoKIAkgKiBJZiB0 aGlzIHdvcmtlciBpcyBzbGF0ZWQgZm9yIGRlcmVnaXN0cmF0aW9uLCBkbyB0aGF0IGJlZm9y ZSBub3RpZnlpbmcKQEAgLTUwMSwyNyArNDk1LDM0IEBAIFJlcG9ydEJhY2tncm91bmRXb3Jr ZXJFeGl0KFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncpCiAJCXJ3LT5yd193b3JrZXIuYmd3X3Jl c3RhcnRfdGltZSA9PSBCR1dfTkVWRVJfUkVTVEFSVCkKIAkJRm9yZ2V0QmFja2dyb3VuZFdv cmtlcihydyk7CiAKLQlpZiAobm90aWZ5X3BpZCAhPSAwKQotCQlraWxsKG5vdGlmeV9waWQs IFNJR1VTUjEpOworCWlmIChub3RpZnlfcHJvY19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05V TUJFUikKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgbm90aWZ5X3Byb2Nf bnVtYmVyKTsKIH0KIAogLyoKLSAqIENhbmNlbCBTSUdVU1IxIG5vdGlmaWNhdGlvbnMgZm9y IGEgUElEIGJlbG9uZ2luZyB0byBhbiBleGl0aW5nIGJhY2tlbmQuCisgKiBDYW5jZWwgbm90 aWZpY2F0aW9ucyBmb3IgYSBQSUQgYmVsb25naW5nIHRvIGFuIGV4aXRpbmcgYmFja2VuZC4K ICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBw b3N0bWFzdGVyLgogICovCiB2b2lkCi1CYWNrZ3JvdW5kV29ya2VyU3RvcE5vdGlmaWNhdGlv bnMocGlkX3QgcGlkKQorQmFja2dyb3VuZFdvcmtlclN0b3BOb3RpZmljYXRpb25zKGludCBw bWNoaWxkKQogewogCWRsaXN0X2l0ZXIJaXRlcjsKIAogCWRsaXN0X2ZvcmVhY2goaXRlciwg JkJhY2tncm91bmRXb3JrZXJMaXN0KQogCXsKIAkJUmVnaXN0ZXJlZEJnV29ya2VyICpydzsK KwkJQmFja2dyb3VuZFdvcmtlclNsb3QgKnNsb3Q7CiAKIAkJcncgPSBkbGlzdF9jb250YWlu ZXIoUmVnaXN0ZXJlZEJnV29ya2VyLCByd19sbm9kZSwgaXRlci5jdXIpOwotCQlpZiAocnct PnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9PSBwaWQpCi0JCQlydy0+cndfd29ya2VyLmJn d19ub3RpZnlfcGlkID0gMDsKKwkJQXNzZXJ0KHJ3LT5yd19zaG1lbV9zbG90IDwgbWF4X3dv cmtlcl9wcm9jZXNzZXMpOworCQlzbG90ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90 W3J3LT5yd19zaG1lbV9zbG90XTsKKworCQlpZiAoc2xvdC0+bm90aWZ5X3BtY2hpbGQgPT0g cG1jaGlsZCkKKwkJeworCQkJc2xvdC0+bm90aWZ5X3BtY2hpbGQgPSAwOworCQkJc2xvdC0+ bm90aWZ5X3Byb2NfbnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKKwkJfQogCX0KIH0K IApAQCAtNTUzLDE0ICs1NTQsMTQgQEAgRm9yZ2V0VW5zdGFydGVkQmFja2dyb3VuZFdvcmtl cnModm9pZCkKIAogCQkvKiBJZiBpdCdzIG5vdCB5ZXQgc3RhcnRlZCwgYW5kIHRoZXJlJ3Mg c29tZW9uZSB3YWl0aW5nIC4uLiAqLwogCQlpZiAoc2xvdC0+cGlkID09IEludmFsaWRQaWQg JiYKLQkJCXJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQgIT0gMCkKKwkJCXNsb3QtPm5v dGlmeV9wcm9jX251bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQl7CiAJCQkvKiAu Li4gdGhlbiB6YXAgaXQsIGFuZCBub3RpZnkgdGhlIHdhaXRlciAqLwotCQkJaW50CQkJbm90 aWZ5X3BpZCA9IHJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQ7CisJCQlpbnQJCQlub3Rp ZnlfcHJvY19udW1iZXIgPSBzbG90LT5ub3RpZnlfcHJvY19udW1iZXI7CiAKIAkJCUZvcmdl dEJhY2tncm91bmRXb3JrZXIocncpOwotCQkJaWYgKG5vdGlmeV9waWQgIT0gMCkKLQkJCQlr aWxsKG5vdGlmeV9waWQsIFNJR1VTUjEpOworCQkJaWYgKG5vdGlmeV9wcm9jX251bWJlciAh PSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwsIG5vdGlmeV9wcm9jX251bWJlcik7CiAJCX0KIAl9CiB9CkBAIC02MTMsMTEgKzYx NCw2IEBAIFJlc2V0QmFja2dyb3VuZFdvcmtlckNyYXNoVGltZXModm9pZCkKIAkJCSAqIHJl c2V0dGluZy4KIAkJCSAqLwogCQkJcnctPnJ3X2NyYXNoZWRfYXQgPSAwOwotCi0JCQkvKgot CQkJICogSWYgdGhlcmUgd2FzIGFueW9uZSB3YWl0aW5nIGZvciBpdCwgdGhleSdyZSBoaXN0 b3J5LgotCQkJICovCi0JCQlydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkID0gMDsKIAkJ fQogCX0KIH0KQEAgLTk4MSwxNSArOTc3LDYgQEAgUmVnaXN0ZXJCYWNrZ3JvdW5kV29ya2Vy KEJhY2tncm91bmRXb3JrZXIgKndvcmtlcikKIAlpZiAoIVNhbml0eUNoZWNrQmFja2dyb3Vu ZFdvcmtlcih3b3JrZXIsIExPRykpCiAJCXJldHVybjsKIAotCWlmICh3b3JrZXItPmJnd19u b3RpZnlfcGlkICE9IDApCi0JewotCQllcmVwb3J0KExPRywKLQkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygiYmFja2dyb3VuZCB3 b3JrZXIgXCIlc1wiOiBvbmx5IGR5bmFtaWMgYmFja2dyb3VuZCB3b3JrZXJzIGNhbiByZXF1 ZXN0IG5vdGlmaWNhdGlvbiIsCi0JCQkJCQl3b3JrZXItPmJnd19uYW1lKSkpOwotCQlyZXR1 cm47Ci0JfQotCiAJLyoKIAkgKiBFbmZvcmNlIG1heGltdW0gbnVtYmVyIG9mIHdvcmtlcnMu ICBOb3RlIHRoaXMgaXMgb3Zlcmx5IHJlc3RyaWN0aXZlOiB3ZQogCSAqIGNvdWxkIGFsbG93 IG1vcmUgbm9uLXNobWVtLWNvbm5lY3RlZCB3b3JrZXJzLCBiZWNhdXNlIHRoZXNlIGRvbid0 IGNvdW50CkBAIC0xMTA1LDYgKzEwOTIsMjUgQEAgUmVnaXN0ZXJEeW5hbWljQmFja2dyb3Vu ZFdvcmtlcihCYWNrZ3JvdW5kV29ya2VyICp3b3JrZXIsCiAJCQlpZiAocGFyYWxsZWwpCiAJ CQkJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVsX3JlZ2lzdGVyX2NvdW50Kys7CiAK KwkJCWlmICgoc2xvdC0+d29ya2VyLmJnd19mbGFncyAmIEJHV09SS0VSX1NITUVNX0FDQ0VT UykgIT0gMCAmJgorCQkJCShzbG90LT53b3JrZXIuYmd3X2ZsYWdzICYgQkdXT1JLRVJfTk9f Tk9USUZZKSA9PSAwKQorCQkJeworCQkJCS8qCisJCQkJICogU2V0IG5vdGlmeV9wcm9jX251 bWJlciBzbyB0aGF0IHBvc3RtYXN0ZXIgd2lsbCBzZW5kIHVzIGFuCisJCQkJICogaW50ZXJy dXB0LiBBbHNvIHJlbWVtYmVyIHRoZSBwbWNoaWxkIHNsb3QgbnVtYmVyOworCQkJCSAqIHBv c3RtYXN0ZXIgbmVlZHMgaXQgdG8gZGV0ZWN0IHdoZW4gd2UgZXhpdCwgdG8gZGlzYXJtIHRo ZQorCQkJCSAqIG5vdGlmaWNhdGlvbi4KKwkJCQkgKi8KKwkJCQlzbG90LT5ub3RpZnlfcG1j aGlsZCA9IE15UE1DaGlsZFNsb3Q7CisJCQkJc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVyID0g TXlQcm9jTnVtYmVyOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qIE5vIG5vdGlmaWNh dGlvbnMuICovCisJCQkJc2xvdC0+bm90aWZ5X3BtY2hpbGQgPSAwOworCQkJCXNsb3QtPm5v dGlmeV9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJCQl9CisKIAkJCS8q CiAJCQkgKiBNYWtlIHN1cmUgcG9zdG1hc3RlciBkb2Vzbid0IHNlZSB0aGUgc2xvdCBhcyBp biB1c2UgYmVmb3JlIGl0CiAJCQkgKiBzZWVzIHRoZSBuZXcgY29udGVudHMuCkBAIC0xMjA1 LDggKzEyMTEsOSBAQCBHZXRCYWNrZ3JvdW5kV29ya2VyUGlkKEJhY2tncm91bmRXb3JrZXJI YW5kbGUgKmhhbmRsZSwgcGlkX3QgKnBpZHApCiAgKiBCR1dIX1BPU1RNQVNURVJfRElFRCwg c2luY2UgaXQgdGhhdCBjYXNlIHdlIGtub3cgdGhhdCBzdGFydHVwIHdpbGwgbm90CiAgKiB0 YWtlIHBsYWNlLgogICoKLSAqIFRoZSBjYWxsZXIgKm11c3QqIGhhdmUgc2V0IG91ciBQSUQg YXMgdGhlIHdvcmtlcidzIGJnd19ub3RpZnlfcGlkLAotICogZWxzZSB3ZSB3aWxsIG5vdCBi ZSBhd29rZW4gcHJvbXB0bHkgd2hlbiB0aGUgd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4KKyAq IFRoaXMgd29ya3Mgb25seSBpZiB0aGUgd29ya2VyIHdhcyByZWdpc3RlcmVkIHdpdGggQkdX T1JLRVJfU0hNRU1fQUNDRVNTIGFuZAorICogd2l0aG91dCBCR1dPUktFUl9OT19OT1RJRlks IGVsc2Ugd2Ugd2lsbCBub3QgYmUgYXdva2VuIHByb21wdGx5IHdoZW4gdGhlCisgKiB3b3Jr ZXIncyBzdGF0ZSBjaGFuZ2VzLgogICovCiBCZ3dIYW5kbGVTdGF0dXMKIFdhaXRGb3JCYWNr Z3JvdW5kV29ya2VyU3RhcnR1cChCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBp ZF90ICpwaWRwKQpAQCAtMTI1MCw4ICsxMjU3LDkgQEAgV2FpdEZvckJhY2tncm91bmRXb3Jr ZXJTdGFydHVwKEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSwgcGlkX3QgKnBpZHAp CiAgKiB1cCBhbmQgcmV0dXJuIEJHV0hfUE9TVE1BU1RFUl9ESUVELCBiZWNhdXNlIGl0J3Mg dGhlIHBvc3RtYXN0ZXIgdGhhdAogICogbm90aWZpZXMgdXMgd2hlbiBhIHdvcmtlcidzIHN0 YXRlIGNoYW5nZXMuCiAgKgotICogVGhlIGNhbGxlciAqbXVzdCogaGF2ZSBzZXQgb3VyIFBJ RCBhcyB0aGUgd29ya2VyJ3MgYmd3X25vdGlmeV9waWQsCi0gKiBlbHNlIHdlIHdpbGwgbm90 IGJlIGF3b2tlbiBwcm9tcHRseSB3aGVuIHRoZSB3b3JrZXIncyBzdGF0ZSBjaGFuZ2VzLgor ICogVGhpcyB3b3JrcyBvbmx5IGlmIHRoZSB3b3JrZXIgd2FzIHJlZ2lzdGVyZWQgd2l0aCBC R1dPUktFUl9TSE1FTV9BQ0NFU1MgYW5kCisgKiB3aXRob3V0IEJHV09SS0VSX05PX05PVElG WSwgZWxzZSB3ZSB3aWxsIG5vdCBiZSBhd29rZW4gcHJvbXB0bHkgd2hlbiB0aGUKKyAqIHdv cmtlcidzIHN0YXRlIGNoYW5nZXMuCiAgKi8KIEJnd0hhbmRsZVN0YXR1cwogV2FpdEZvckJh Y2tncm91bmRXb3JrZXJTaHV0ZG93bihCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDRlMjhiZmIyZjkuLmY2 M2JhNzM2OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC0zOTk5 LDE1ICszOTk5LDE1IEBAIG1heWJlX3N0YXJ0X2Jnd29ya2Vycyh2b2lkKQogCQl7CiAJCQlp ZiAocnctPnJ3X3dvcmtlci5iZ3dfcmVzdGFydF90aW1lID09IEJHV19ORVZFUl9SRVNUQVJU KQogCQkJewotCQkJCWludAkJCW5vdGlmeV9waWQ7CisJCQkJUHJvY051bWJlcglub3RpZnlf cHJvY19udW1iZXI7CiAKLQkJCQlub3RpZnlfcGlkID0gcnctPnJ3X3dvcmtlci5iZ3dfbm90 aWZ5X3BpZDsKKwkJCQlub3RpZnlfcHJvY19udW1iZXIgPSBHZXROb3RpZnlQcm9jTnVtYmVy Rm9yUmVnaXN0ZXJlZFdvcmtlcihydyk7CiAKIAkJCQlGb3JnZXRCYWNrZ3JvdW5kV29ya2Vy KHJ3KTsKIAogCQkJCS8qIFJlcG9ydCB3b3JrZXIgaXMgZ29uZSBub3cuICovCi0JCQkJaWYg KG5vdGlmeV9waWQgIT0gMCkKLQkJCQkJa2lsbChub3RpZnlfcGlkLCBTSUdVU1IxKTsKKwkJ CQlpZiAobm90aWZ5X3Byb2NfbnVtYmVyICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCQkJ CVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIG5vdGlmeV9wcm9jX251bWJlcik7 CiAKIAkJCQljb250aW51ZTsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYwppbmRleCA1MTIyNzI4ZGZiLi41NmFlZGE4ZjE1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01MDUsNyAr NTA1LDYgQEAgcmV0cnk6CiAJfQogCiAJYmd3LmJnd19yZXN0YXJ0X3RpbWUgPSBCR1dfTkVW RVJfUkVTVEFSVDsKLQliZ3cuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CiAJYmd3LmJn d19tYWluX2FyZyA9IEludDMyR2V0RGF0dW0oc2xvdCk7CiAKIAlpZiAoIVJlZ2lzdGVyRHlu YW1pY0JhY2tncm91bmRXb3JrZXIoJmJndywgJmJnd19oYW5kbGUpKQpAQCAtOTQ4LDcgKzk0 Nyw2IEBAIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKQogCXNucHJpbnRmKGJndy5iZ3df dHlwZSwgQkdXX01BWExFTiwKIAkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBsYXVuY2hlciIp OwogCWJndy5iZ3dfcmVzdGFydF90aW1lID0gNTsKLQliZ3cuYmd3X25vdGlmeV9waWQgPSAw OwogCWJndy5iZ3dfbWFpbl9hcmcgPSAoRGF0dW0pIDA7CiAKIAlSZWdpc3RlckJhY2tncm91 bmRXb3JrZXIoJmJndyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9p bnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jCmluZGV4 IDUzNDczYTM1MmQuLmVjMmZkNmEzY2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2ludGVycnVwdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2ludGVy cnVwdC5jCkBAIC0xMDIsNiArMTAyLDkgQEAgUmFpc2VJbnRlcnJ1cHQoSW50ZXJydXB0VHlw ZSByZWFzb24pCiAKIC8qCiAgKiBTZXQgYW4gaW50ZXJydXB0IGZsYWcgaW4gYW5vdGhlciBi YWNrZW5kLgorICoKKyAqIE5vdGU6IFRoaXMgY2FuIGFsc28gYmUgY2FsbGVkIGZyb20gdGhl IHBvc3RtYXN0ZXIsIHNvIGJlIGNhcmVmdWwgdG8gbm90CisgKiB0cnVzdCB0aGUgY29udGVu dHMgb2Ygc2hhcmVkIG1lbW9yeS4KICAqLwogdm9pZAogU2VuZEludGVycnVwdChJbnRlcnJ1 cHRUeXBlIHJlYXNvbiwgUHJvY051bWJlciBwZ3Byb2NubykKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvd2FpdGV2ZW50c2V0LmMKaW5kZXggZWQzNzU4Y2Q0YS4uOWQxMGJjNWZjZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKQEAgLTU2OCw2ICs1Njgs MTEgQEAgV2FrZXVwTXlQcm9jKHZvaWQpCiB2b2lkCiBXYWtldXBPdGhlclByb2MoUEdQUk9D ICpwcm9jKQogeworCS8qCisJICogTm90ZTogVGhpcyBjYW4gYWxzbyBiZSBjYWxsZWQgZnJv bSB0aGUgcG9zdG1hc3Rlciwgc28gYmUgY2FyZWZ1bCB0byBub3QKKwkgKiBhc3N1bWUgdGhh dCB0aGUgY29udGVudHMgb2Ygc2hhcmVkIG1lbW9yeSBhcmUgdmFsaWQuICBSZWFkaW5nIHRo ZSAncGlkJworCSAqIChvciBldmVudCBoYW5kbGUgb24gV2luZG93cykgaXMgc2FmZSBlbm91 Z2guCisJICovCiAjaWZuZGVmIFdJTjMyCiAJa2lsbChwcm9jLT5waWQsIFNJR1VSRyk7CiAj ZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oIGIv c3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oCmluZGV4IDIyZmM0OWVjMjcuLjhh ZDRhMTI3MjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIu aAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyLmgKQEAgLTU5LDYgKzU5 LDE0IEBACiAgKi8KICNkZWZpbmUgQkdXT1JLRVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNU SU9OCQkweDAwMDIKIAorLyoKKyAqIER5bmFtaWMgd29ya2VycyBjcmVhdGVkIHdpdGggc2hh cmVkIG1lbW9yeSBhY2Nlc3MgdXN1YWxseSBzZW5kIGFuIGludGVycnVwdAorICogdG8gdGhl IGNyZWF0aW5nIGJhY2tlbmQgd2hlbiB0aGV5IHN0YXJ0IGFuZCBzdG9wLCBhbGxvd2luZwor ICogV2FpdEZvckJhY2tncm91bmRXb3JrZXJ7U3RhcnR1cCxTaHV0ZG93bn0oKSB0byB3b3Jr LiAgU3VjaCBub3RpZmljYXRpb25zCisgKiBjYW4gYmUgc3VwcHJlc3NlZCB3aXRoIHRoaXMg ZmxhZy4KKyAqLworI2RlZmluZSBCR1dPUktFUl9OT19OT1RJRlkJCQkJCQkJMHgwMDA0CisK IC8qCiAgKiBUaGlzIGNsYXNzIGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgcGFyYWxsZWwgcXVl cmllcywgdG8ga2VlcCB0cmFjayBvZiB0aGUKICAqIG51bWJlciBvZiBhY3RpdmUgcGFyYWxs ZWwgd29ya2VycyBhbmQgbWFrZSBzdXJlIHdlIG5ldmVyIGxhdW5jaCBtb3JlIHRoYW4KQEAg LTk3LDcgKzEwNSw3IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKIAljaGFy CQliZ3dfZnVuY3Rpb25fbmFtZVtCR1dfTUFYTEVOXTsKIAlEYXR1bQkJYmd3X21haW5fYXJn OwogCWNoYXIJCWJnd19leHRyYVtCR1dfRVhUUkFMRU5dOwotCXBpZF90CQliZ3dfbm90aWZ5 X3BpZDsgLyogU0lHVVNSMSB0aGlzIGJhY2tlbmQgb24gc3RhcnQvc3RvcCAqLworCXBpZF90 CQliZ3dfbm90aWZ5X3BpZDsgLyogbm90IHVzZWQgKi8KIH0gQmFja2dyb3VuZFdvcmtlcjsK IAogdHlwZWRlZiBlbnVtIEJnd0hhbmRsZVN0YXR1cwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaCBiL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgKaW5kZXggZjU1YWRjODVlZi4uZGIzMGUzZmQ2 YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5h bHMuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5o CkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCiAj aW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5o IgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgogCiAvKiBHVUMgb3B0aW9ucyAq LwogCkBAIC00Nyw5ICs0OCwxMCBAQCBleHRlcm4gdm9pZCBCYWNrZ3JvdW5kV29ya2VyU3Rh dGVDaGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2Vycyk7CiBleHRlcm4gdm9pZCBGb3JnZXRC YWNrZ3JvdW5kV29ya2VyKFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncpOwogZXh0ZXJuIHZvaWQg UmVwb3J0QmFja2dyb3VuZFdvcmtlclBJRChSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KTsKIGV4 dGVybiB2b2lkIFJlcG9ydEJhY2tncm91bmRXb3JrZXJFeGl0KFJlZ2lzdGVyZWRCZ1dvcmtl ciAqcncpOwotZXh0ZXJuIHZvaWQgQmFja2dyb3VuZFdvcmtlclN0b3BOb3RpZmljYXRpb25z KHBpZF90IHBpZCk7CitleHRlcm4gdm9pZCBCYWNrZ3JvdW5kV29ya2VyU3RvcE5vdGlmaWNh dGlvbnMoaW50IHBtY2hpbGQpOwogZXh0ZXJuIHZvaWQgRm9yZ2V0VW5zdGFydGVkQmFja2dy b3VuZFdvcmtlcnModm9pZCk7CiBleHRlcm4gdm9pZCBSZXNldEJhY2tncm91bmRXb3JrZXJD cmFzaFRpbWVzKHZvaWQpOworZXh0ZXJuIFByb2NOdW1iZXIgR2V0Tm90aWZ5UHJvY051bWJl ckZvclJlZ2lzdGVyZWRXb3JrZXIoUmVnaXN0ZXJlZEJnV29ya2VyICpydyk7CiAKIC8qIEVu dHJ5IHBvaW50IGZvciBiYWNrZ3JvdW5kIHdvcmtlciBwcm9jZXNzZXMgKi8KIGV4dGVybiB2 b2lkIEJhY2tncm91bmRXb3JrZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0 YXJ0dXBfZGF0YV9sZW4pIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3NobV9tcS9zZXR1cC5jCmluZGV4IDI1ZjRjMzNmZjguLjhjODFjMmI0ZDMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYworKysgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKQEAgLTEzNCw2ICsxMzQsNyBA QCBzZXR1cF9keW5hbWljX3NoYXJlZF9tZW1vcnkoaW50NjQgcXVldWVfc2l6ZSwgaW50IG53 b3JrZXJzLAogCiAJLyogU2V0IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAqLwogCWhkciA9IHNo bV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2YodGVzdF9zaG1fbXFfaGVhZGVyKSk7CisJaGRy LT5sZWFkZXJfcHJvY19udW1iZXIgPSBNeVByb2NOdW1iZXI7CiAJU3BpbkxvY2tJbml0KCZo ZHItPm11dGV4KTsKIAloZHItPndvcmtlcnNfdG90YWwgPSBud29ya2VyczsKIAloZHItPndv cmtlcnNfYXR0YWNoZWQgPSAwOwpAQCAtMjIzLDggKzIyNCw2IEBAIHNldHVwX2JhY2tncm91 bmRfd29ya2VycyhpbnQgbndvcmtlcnMsIGRzbV9zZWdtZW50ICpzZWcpCiAJc3ByaW50Zih3 b3JrZXIuYmd3X2Z1bmN0aW9uX25hbWUsICJ0ZXN0X3NobV9tcV9tYWluIik7CiAJc25wcmlu dGYod29ya2VyLmJnd190eXBlLCBCR1dfTUFYTEVOLCAidGVzdF9zaG1fbXEiKTsKIAl3b3Jr ZXIuYmd3X21haW5fYXJnID0gVUludDMyR2V0RGF0dW0oZHNtX3NlZ21lbnRfaGFuZGxlKHNl ZykpOwotCS8qIHNldCBiZ3dfbm90aWZ5X3BpZCwgc28gd2UgY2FuIGRldGVjdCBpZiB0aGUg d29ya2VyIHN0b3BzICovCi0Jd29ya2VyLmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwog CiAJLyogUmVnaXN0ZXIgdGhlIHdvcmtlcnMuICovCiAJZm9yIChpID0gMDsgaSA8IG53b3Jr ZXJzOyArK2kpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rl c3Rfc2htX21xLmggYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3Rfc2htX21x LmgKaW5kZXggMGFlN2JkNjRjZC4uN2YyN2E2MWFmZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0X3NobV9tcS5oCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9zaG1fbXEvdGVzdF9zaG1fbXEuaApAQCAtMjgsNiArMjgsOCBAQAogICovCiB0 eXBlZGVmIHN0cnVjdAogeworCVByb2NOdW1iZXIJbGVhZGVyX3Byb2NfbnVtYmVyOworCiAJ c2xvY2tfdAkJbXV0ZXg7CiAJaW50CQkJd29ya2Vyc190b3RhbDsKIAlpbnQJCQl3b3JrZXJz X2F0dGFjaGVkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS93 b3JrZXIuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMKaW5kZXgg Njc1MTVlMGZlZC4uZTVkMzUzZDExYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3NobV9tcS93b3JrZXIuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21x L3dvcmtlci5jCkBAIC01Myw3ICs1Myw2IEBAIHRlc3Rfc2htX21xX21haW4oRGF0dW0gbWFp bl9hcmcpCiAJc2htX21xX2hhbmRsZSAqb3V0cWg7CiAJdm9sYXRpbGUgdGVzdF9zaG1fbXFf aGVhZGVyICpoZHI7CiAJaW50CQkJbXl3b3JrZXJudW1iZXI7Ci0JUEdQUk9DCSAgICpyZWdp c3RyYW50OwogCiAJLyoKIAkgKiBFc3RhYmxpc2ggc2lnbmFsIGhhbmRsZXJzLgpAQCAtMTIz LDEzICsxMjIsNyBAQCB0ZXN0X3NobV9tcV9tYWluKERhdHVtIG1haW5fYXJnKQogCVNwaW5M b2NrQWNxdWlyZSgmaGRyLT5tdXRleCk7CiAJKytoZHItPndvcmtlcnNfcmVhZHk7CiAJU3Bp bkxvY2tSZWxlYXNlKCZoZHItPm11dGV4KTsKLQlyZWdpc3RyYW50ID0gQmFja2VuZFBpZEdl dFByb2MoTXlCZ3dvcmtlckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7Ci0JaWYgKHJlZ2lzdHJh bnQgPT0gTlVMTCkKLQl7Ci0JCWVsb2coREVCVUcxLCAicmVnaXN0cmFudCBiYWNrZW5kIGhh cyBleGl0ZWQgcHJlbWF0dXJlbHkiKTsKLQkJcHJvY19leGl0KDEpOwotCX0KLQlTZW5kSW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBHZXROdW1iZXJGcm9tUEdQcm9jKHJlZ2lzdHJh bnQpKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBoZHItPmxlYWRlcl9w cm9jX251bWJlcik7CiAKIAkvKiBEbyB0aGUgd29yay4gKi8KIAljb3B5X21lc3NhZ2VzKGlu cWgsIG91dHFoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93 b3JrZXJfc3BpLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5j CmluZGV4IGRmNjAzOWNkMGQuLjU4YjgxZTVkYzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy93 b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwpAQCAtMzc2LDcgKzM3Niw2IEBAIF9QR19pbml0KHZv aWQpCiAJd29ya2VyLmJnd19yZXN0YXJ0X3RpbWUgPSBCR1dfTkVWRVJfUkVTVEFSVDsKIAlz cHJpbnRmKHdvcmtlci5iZ3dfbGlicmFyeV9uYW1lLCAid29ya2VyX3NwaSIpOwogCXNwcmlu dGYod29ya2VyLmJnd19mdW5jdGlvbl9uYW1lLCAid29ya2VyX3NwaV9tYWluIik7Ci0Jd29y a2VyLmJnd19ub3RpZnlfcGlkID0gMDsKIAogCS8qCiAJICogTm93IGZpbGwgaW4gd29ya2Vy LXNwZWNpZmljIGRhdGEsIGFuZCBkbyB0aGUgYWN0dWFsIHJlZ2lzdHJhdGlvbnMuCkBAIC00 MjUsOCArNDI0LDYgQEAgd29ya2VyX3NwaV9sYXVuY2goUEdfRlVOQ1RJT05fQVJHUykKIAlz bnByaW50Zih3b3JrZXIuYmd3X25hbWUsIEJHV19NQVhMRU4sICJ3b3JrZXJfc3BpIGR5bmFt aWMgd29ya2VyICVkIiwgaSk7CiAJc25wcmludGYod29ya2VyLmJnd190eXBlLCBCR1dfTUFY TEVOLCAid29ya2VyX3NwaSBkeW5hbWljIik7CiAJd29ya2VyLmJnd19tYWluX2FyZyA9IElu dDMyR2V0RGF0dW0oaSk7Ci0JLyogc2V0IGJnd19ub3RpZnlfcGlkIHNvIHRoYXQgd2UgY2Fu IHVzZSBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAgKi8KLQl3b3JrZXIuYmd3X25v dGlmeV9waWQgPSBNeVByb2NQaWQ7CiAKIAkvKiBleHRyYWN0IGZsYWdzLCBpZiBhbnkgKi8K IAluZGltID0gQVJSX05ESU0oYXJyKTsKLS0gCjIuMzkuNQoK --------------ymTh4egrZR2y6G65Gu5Lb4oy--