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 1uvkMI-000rRx-Pg for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Sep 2025 22:29:12 +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 1uvkMG-008BDu-8P for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Sep 2025 22:29:08 +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 1uvkMF-008BDl-IO for pgsql-hackers@lists.postgresql.org; Mon, 08 Sep 2025 22:29:08 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uvkM7-001HNH-2x for pgsql-hackers@lists.postgresql.org; Mon, 08 Sep 2025 22:29:07 +0000 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-62105d21297so7236279a12.0 for ; Mon, 08 Sep 2025 15:29:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757370540; x=1757975340; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=HRqHmsK1lFumRWcK4ppyWzahrL2FrhGVxcsF/MTUw1U=; b=hUztIPyX5Ayg1hj1mSkGlmSpFO+Npx5belSIgJSOBCOuH++FyLgO89ySihc1TFkPu5 YogbZw3jmSyhpK2gj3jnk+s11VJn9YTkKq5lTHJUcxzS0Wza6BJ/OUSoPgqTzAx/IkuA iW6fM8hqUcz2gH5+6TXzACVWi8283AazcxqJ0euYAP1tH9Lnj/YwwhF6nUIsZpbhQzKN IdDLZK0mKOLEzuaypJMn6d10xu9xEgk6pleYLFoCeXd2gXBYxGjMgbqe+8g1Uf4vjQMg kBDdGWfWGFytbtZHr8VtZTZpNEi2JHhWqULw2qIFR7jU8t4nw+oU/NU0h/3kufdonA/u 6jIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757370540; x=1757975340; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HRqHmsK1lFumRWcK4ppyWzahrL2FrhGVxcsF/MTUw1U=; b=qZbzyaJwsJwQGrvvLi9t6RT6vhbYygB2u0a9DBP7fqejeQo86Mn+mIVh1veonmG4+V BJ6DL4GCRYfmSlp2Qqxwgg2Ol8CybMWLeosKGVRG7s//kTAUdimJB2AFWV0iP2lzySaj 5W0q9BnIjz7TFbu0yZ9O73+V56uI83CqGrSEXowzcYgvgl9RF2uVhHN6v1u7BM/f5OpS bHvBb7UqAZ6/mIHP8f5xuPl0SvX+tgNsjsRyg8ZTnm116wYQHvqyQmgFh4N4UjYQN9nF wUVPWVvScpYA35ZXmpDQod/8WfdvGp1j+CpyH63aze2NMDH8sU97HI8hENgkJUsn+90h FdwA== X-Forwarded-Encrypted: i=1; AJvYcCXH8AQk6Pgt/fSZLypJPdLC7J8QI7an6uwyzFGsa73gr736zokBi43taW8IUpapoyUUqHM+6/mSrEsSxI7K@lists.postgresql.org X-Gm-Message-State: AOJu0YyT55RK5we3c9S1tkublnlGVGY0NLQYbvBY/cd2uUAZwrpcxied a9dA1uiR2xtVAmGnUn5+EdyMKoq3XZl/ilXBdz9PyTerKqvDtf47ESkX9aYuNKnYLUjJqceyrPU 9Y57WmBb0KfptAXWkqsgMulq0eq4jnk8= X-Gm-Gg: ASbGncvKTaTqm8hJOb1MPwyzUOZlXN8lxzjmGUeCKN/o18cg8kePiiBRFKPnwqEVUO5 rXIzMRuLN1JRysPgveNYiXA5+qdq1s7WgZcBm5+x49U7dRVDRpv498Sz9NXtIFkKLtoGAodsiJ7 wfpp6PgzBmLSXe8PL1AphDXRObwJjE/x3QTXv3Qe4skhFoO0M7nMgx/23r95rUPsZPLt5kA8GGy OLjTgQZntf2KaPZUz7DRJLo+FOX40QKkL1e88tN/W8AVR+J1A== X-Google-Smtp-Source: AGHT+IEHNM6leOLfZ/ehMnTlxkMPfnm2gUQpI1IOpuwM/QQMFj24FXQ+qn04QcSdVku/u+wkHfWkVX/npaMltlAZy1Y= X-Received: by 2002:a05:6402:5106:b0:628:f0c5:12ca with SMTP id 4fb4d7f45d1cf-628f0c51743mr3477681a12.29.1757370539470; Mon, 08 Sep 2025 15:28:59 -0700 (PDT) MIME-Version: 1.0 References: <87DD95AA-274F-4F4F-BAD9-7738E5B1F905@yandex-team.ru> In-Reply-To: From: Melanie Plageman Date: Mon, 8 Sep 2025 18:28:46 -0400 X-Gm-Features: AS18NWBPlIzM7Erb_ll37tpbgsn-ekCsGEfIWM3KvlgRjiVyT8nPJhEOPi9PHuo Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Robert Haas Cc: Andres Freund , Kirill Reshke , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="000000000000bf09ec063e51b60e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bf09ec063e51b60e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Sep 8, 2025 at 4:15=E2=80=AFPM Robert Haas = wrote: > > Reviewing 0003: > > Locking a buffer in a critical section violates the order of > operations proposed in the 'Write-Ahead Log Coding' section of > src/backend/access/transam/README. Right, I noticed some other callers of visibiltymap_set() (like lazy_scan_new_or_empty()) did call it in a critical section (and it exclusive locks the VM page), so I thought perhaps it was better to keep this operation as close as possible to where we update the VM (similar to how it is in master in visibilitymap_set()). But, I think you're right that maintaining the order of operations proposed in transam/README is more important. As such, in attached v11, I've modified this patch and the other patches where I replace visibilitymap_set() with visibilitymap_set_vmbits() to exclusively lock the vmbuffer before the critical section. visibilitymap_set_vmbits() asserts that we have the vmbuffer exclusively locked, so we should be good. > + * Now read and update the VM block. Even if we skipped > updating the heap > + * page due to the file being dropped or truncated later in > recovery, it's > + * still safe to update the visibility map. Any WAL record that = clears > + * the visibility map bit does so before checking the page LSN, s= o any > + * bits that need to be cleared will still be cleared. > + * > + * It is only okay to set the VM bits without holding the heap pa= ge lock > + * because we can expect no other writers of this page. > > The first paragraph of this paraphrases a similar content in > xlog_heap_visible(), but I don't see the variation in phrasing as an > improvement. The only difference is I replaced the phrase "LSN interlock" with "being dropped or truncated later in recovery" -- which is more specific and, I thought, more clear. Without this comment, it took me some time to understand the scenarios that might lead us to skip updating the heap block. heap_xlog_visible() has cause to describe this situation in an earlier comment -- which is why I think the LSN interlock comment is less confusing there. Anyway, I'm open to changing the comment. I could: 1) copy-paste the same comment as heap_xlog_visible() 2) refer to the comment in heap_xlog_visible() (comment seemed a bit short for that) 3) diverge the comments further by improving the new comment in heap_xlog_multi_insert() in some way 4) something else? > The second paragraph does not convince me at all. I see no reason to > believe that this is safe, or that it is a good idea. The code in > xlog_heap_visible() thinks its OK to unlock and relock the page to > make visibilitymap_set() happy, which is cringy but probably safe for > lack of concurrent writers, but skipping locking altogether seems > deeply unwise. Actually in master, heap_xlog_visible() has no lock on the heap page when it calls visibiltymap_set(). It releases that lock before recording the freespace in the FSM and doesn't take it again. It does unlock and relock the VM page -- because visibilitymap_set() expects to take the lock on the VM. I agree that not holding the heap lock while updating the VM is unsatisfying. We can't hold it while doing the IO to read in the VM block in XLogReadBufferForRedoExtended(). So, we could take it again before calling visibilitymap_set(). But we don't always have the heap buffer, though. I suspect this is partially why heap_xlog_visible() unconditionally passes InvalidBuffer to visibilitymap_set() as the heap buffer and has special case handling for recovery when we don't have the heap buffer. In any case, it isn't an active bug, and I don't think future-proofing VM replay (i.e. against parallel recovery) is a prerequisite for committing this patch since it is also that way on master. > - * visibilitymap_set - set a bit in a previously pinn= ed page > + * visibilitymap_set - set bit(s) in a previously > pinned page and log > + * visibilitymap_set_vmbits - set bit(s) in a pinned page > > I suspect the indentation was done with a different mix of spaces and > tabs here, because this doesn't align for me. oops, fixed. I pushed the ERRCODE_DATA_CORRUPTED patch, so attached v11 is rebased and also has the changes mentioned above. Since you've started reviewing the set, I'll note that patches 0005-0011 are split up for ease of review and it may not necessarily make sense to keep that separation for eventual commit. They are a series of steps to move VM updates from lazy_scan_prune() into pruneheap.c. - Melanie --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0001-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Disposition: attachment; filename="v11-0001-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdxu0 RnJvbSAxY2UzNzI5NmI5N2JiNDBlNzE3YjNkYzFmMjA1MmRhMGIwMjJmYTc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMDEvMjBdIEVsaW1pbmF0ZSB4bF9oZWFwX3Zpc2libGUgaW4gQ09QWSBGUkVFWkUK Ckluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSBXQUwgcmVjb3JkIGZvciBzZXR0aW5nIHRo ZSBWTSBiaXRzIGluCnhsX2hlYXBfdmlzaWJsZSwgc3BlY2lmeSB0aGUgY2hhbmdlcyB0byBtYWtl IHRvIHRoZSBWTSBibG9jayBpbiB0aGUKeGxfaGVhcF9tdWx0aV9pbnNlcnQgcmVjb3JkIGluc3Rl YWQuCgpUaGlzIGhhbHZlcyB0aGUgbnVtYmVyIG9mIFdBTCByZWNvcmRzIGVtaXR0ZWQgYnkgQ09Q WSBGUkVFWkUuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vz c2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndR M2NNT014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgfCA1MCArKysrKysrKysrKy0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICB8IDQzICsrKysrKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyB8IDY3ICsrKysr KysrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVz Yy5jICB8ICA1ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgfCAg MiArCiA1IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDRjNWFlMjA1YTdhLi5jZmY1MzFhNDgwMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTI0NjYsNyArMjQ2NiwxMSBAQCBoZWFwX211 bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50 IG50dXBsZXMsCiAJCXN0YXJ0aW5nX3dpdGhfZW1wdHlfcGFnZSA9IFBhZ2VHZXRNYXhPZmZzZXRO dW1iZXIocGFnZSkgPT0gMDsKIAogCQlpZiAoc3RhcnRpbmdfd2l0aF9lbXB0eV9wYWdlICYmIChv cHRpb25zICYgSEVBUF9JTlNFUlRfRlJPWkVOKSkKKwkJewogCQkJYWxsX2Zyb3plbl9zZXQgPSB0 cnVlOworCQkJLyogTG9jayB0aGUgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIHRoZSBjcml0aWNh bCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJ VkUpOworCQl9CiAKIAkJLyogTk8gRVJFUE9SVChFUlJPUikgZnJvbSBoZXJlIHRpbGwgY2hhbmdl cyBhcmUgbG9nZ2VkICovCiAJCVNUQVJUX0NSSVRfU0VDVElPTigpOwpAQCAtMjUwNCw5ICsyNTA4 LDYgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90 ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQkvKgogCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwgdmlz aWJsZSwgbmVlZCB0byBjbGVhciB0aGF0LCB1bmxlc3Mgd2UncmUgb25seQogCQkgKiBnb2luZyB0 byBhZGQgZnVydGhlciBmcm96ZW4gcm93cyB0byBpdC4KLQkJICoKLQkJICogSWYgd2UncmUgb25s eSBhZGRpbmcgYWxyZWFkeSBmcm96ZW4gcm93cyB0byBhIHByZXZpb3VzbHkgZW1wdHkKLQkJICog cGFnZSwgbWFyayBpdCBhcyBhbGwtdmlzaWJsZS4KIAkJICovCiAJCWlmIChQYWdlSXNBbGxWaXNp YmxlKHBhZ2UpICYmICEob3B0aW9ucyAmIEhFQVBfSU5TRVJUX0ZST1pFTikpCiAJCXsKQEAgLTI1 MTYsOCArMjUxNywyMSBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVw bGVUYWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJCQkJCQkJCUJ1ZmZlckdldEJsb2Nr TnVtYmVyKGJ1ZmZlciksCiAJCQkJCQkJCXZtYnVmZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMpOwogCQl9CisKKwkJLyoKKwkJICogSWYgd2UncmUgb25seSBhZGRpbmcgYWxyZWFkeSBmcm96 ZW4gcm93cyB0byBhIHByZXZpb3VzbHkgZW1wdHkKKwkJICogcGFnZSwgbWFyayBpdCBhcyBhbGwt ZnJvemVuIGFuZCB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLiBXZSdyZQorCQkgKiBhbHJlYWR5 IGhvbGRpbmcgYSBwaW4gb24gdGhlIHZtYnVmZmVyLgorCQkgKi8KIAkJZWxzZSBpZiAoYWxsX2Zy b3plbl9zZXQpCisJCXsKIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzKHJlbGF0aW9uLAorCQkJCQkJCQkJIEJ1ZmZlckdldEJsb2NrTnVtYmVy KGJ1ZmZlciksCisJCQkJCQkJCQkgdm1idWZmZXIsCisJCQkJCQkJCQkgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSB8CisJCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJfQog CiAJCS8qCiAJCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBh Z2UgPyBTZWUgaGVhcF9pbnNlcnQoKQpAQCAtMjU2NSw2ICsyNTc5LDEyIEBAIGhlYXBfbXVsdGlf aW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1 cGxlcywKIAkJCXhscmVjLT5mbGFncyA9IDA7CiAJCQlpZiAoYWxsX3Zpc2libGVfY2xlYXJlZCkK IAkJCQl4bHJlYy0+ZmxhZ3MgPSBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQ7CisKKwkJ CS8qCisJCQkgKiBXZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IGluY2x1ZGluZyBhIGNvbmZs aWN0IHhpZCBpbiB0aGUKKwkJCSAqIFdBTCByZWNvcmQgYXMgSEVBUF9JTlNFUlRfRlJPWkVOIGlu dGVudGlvbmFsbHkgdmlvbGF0ZXMKKwkJCSAqIHZpc2liaWxpdHkgcnVsZXMuCisJCQkgKi8KIAkJ CWlmIChhbGxfZnJvemVuX3NldCkKIAkJCQl4bHJlYy0+ZmxhZ3MgPSBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUOwogCkBAIC0yNjI3LDcgKzI2NDcsMTAgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCiAJ CQlYTG9nQmVnaW5JbnNlcnQoKTsKIAkJCVhMb2dSZWdpc3RlckRhdGEoeGxyZWMsIHR1cGxlZGF0 YSAtIHNjcmF0Y2guZGF0YSk7CisKIAkJCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBidWZmZXIsIFJF R0JVRl9TVEFOREFSRCB8IGJ1ZmZsYWdzKTsKKwkJCWlmIChhbGxfZnJvemVuX3NldCkKKwkJCQlY TG9nUmVnaXN0ZXJCdWZmZXIoMSwgdm1idWZmZXIsIDApOwogCiAJCQlYTG9nUmVnaXN0ZXJCdWZE YXRhKDAsIHR1cGxlZGF0YSwgdG90YWxkYXRhbGVuKTsKIApAQCAtMjYzNywyNiArMjY2MCwxNyBA QCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipz bG90cywgaW50IG50dXBsZXMsCiAJCQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hFQVAyX0lELCBp bmZvKTsKIAogCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIpOworCQkJaWYgKGFsbF9mcm96ZW5f c2V0KQorCQkJeworCQkJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CisJCQkJUGFn ZVNldExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgcmVjcHRyKTsKKwkJCX0KIAkJfQogCiAJ CUVORF9DUklUX1NFQ1RJT04oKTsKIAotCQkvKgotCQkgKiBJZiB3ZSd2ZSBmcm96ZW4gZXZlcnl0 aGluZyBvbiB0aGUgcGFnZSwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5bWFwLgotCQkgKiBXZSdyZSBh bHJlYWR5IGhvbGRpbmcgcGluIG9uIHRoZSB2bWJ1ZmZlci4KLQkJICovCiAJCWlmIChhbGxfZnJv emVuX3NldCkKLQkJewotCQkJLyoKLQkJCSAqIEl0J3MgZmluZSB0byB1c2UgSW52YWxpZFRyYW5z YWN0aW9uSWQgaGVyZSAtIHRoaXMgaXMgb25seSB1c2VkCi0JCQkgKiB3aGVuIEhFQVBfSU5TRVJU X0ZST1pFTiBpcyBzcGVjaWZpZWQsIHdoaWNoIGludGVudGlvbmFsbHkKLQkJCSAqIHZpb2xhdGVz IHZpc2liaWxpdHkgcnVsZXMuCi0JCQkgKi8KLQkJCXZpc2liaWxpdHltYXBfc2V0KHJlbGF0aW9u LCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCBidWZmZXIsCi0JCQkJCQkJICBJbnZhbGlk WExvZ1JlY1B0ciwgdm1idWZmZXIsCi0JCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJ CQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfCBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU4pOwotCQl9CisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwog CiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKIAkJbmRvbmUgKz0gbnRoaXNwYWdlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggY2Y4NDMyNzc5MzguLjA4MjBm N2QwNTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTU1MSw2ICs1 NTEsNyBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CWludAkJCWk7CiAJYm9vbAkJaXNpbml0ID0gKFhMb2dSZWNHZXRJbmZvKHJlY29yZCkgJiBYTE9H X0hFQVBfSU5JVF9QQUdFKSAhPSAwOwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKKwlCdWZmZXIJ CXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAogCS8qCiAJICogSW5zZXJ0aW9uIGRvZXNuJ3Qg b3ZlcndyaXRlIE1WQ0MgZGF0YSwgc28gbm8gY29uZmxpY3QgcHJvY2Vzc2luZyBpcwpAQCAtNTcx LDExICs1NzIsMTEgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfVklTSUJMRV9DTEVBUkVE KQogCXsKIAkJUmVsYXRpb24JcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9y KTsKLQkJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAkJdmlzaWJpbGl0eW1h cF9waW4ocmVsbiwgYmxrbm8sICZ2bWJ1ZmZlcik7CiAJCXZpc2liaWxpdHltYXBfY2xlYXIocmVs biwgYmxrbm8sIHZtYnVmZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwogCQlSZWxlYXNl QnVmZmVyKHZtYnVmZmVyKTsKKwkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCQlGcmVlRmFr ZVJlbGNhY2hlRW50cnkocmVsbik7CiAJfQogCkBAIC02NjIsNiArNjYzLDQ2IEBAIGhlYXBfeGxv Z19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJaWYgKEJ1ZmZlcklzVmFs aWQoYnVmZmVyKSkKIAkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCisJYnVmZmVyID0g SW52YWxpZEJ1ZmZlcjsKKworCS8qCisJICogTm93IHJlYWQgYW5kIHVwZGF0ZSB0aGUgVk0gYmxv Y2suIEV2ZW4gaWYgd2Ugc2tpcHBlZCB1cGRhdGluZyB0aGUgaGVhcAorCSAqIHBhZ2UgZHVlIHRv IHRoZSBmaWxlIGJlaW5nIGRyb3BwZWQgb3IgdHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5LCBp dCdzCisJICogc3RpbGwgc2FmZSB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLiAgQW55IFdB TCByZWNvcmQgdGhhdCBjbGVhcnMKKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGRvZXMgc28g YmVmb3JlIGNoZWNraW5nIHRoZSBwYWdlIExTTiwgc28gYW55CisJICogYml0cyB0aGF0IG5lZWQg dG8gYmUgY2xlYXJlZCB3aWxsIHN0aWxsIGJlIGNsZWFyZWQuCisJICoKKwkgKiBJdCBpcyBvbmx5 IG9rYXkgdG8gc2V0IHRoZSBWTSBiaXRzIHdpdGhvdXQgaG9sZGluZyB0aGUgaGVhcCBwYWdlIGxv Y2sKKwkgKiBiZWNhdXNlIHdlIGNhbiBleHBlY3Qgbm8gb3RoZXIgd3JpdGVycyBvZiB0aGlzIHBh Z2UuCisJICovCisJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQg JiYKKwkJWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAxLCBSQk1fWkVST19P Tl9FUlJPUiwgZmFsc2UsCisJCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8p CisJeworCQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKTsKKwkJUmVsYXRp b24JcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKKworCQkvKiBpbml0 aWFsaXplIHRoZSBwYWdlIGlmIGl0IHdhcyByZWFkIGFzIHplcm9zICovCisJCWlmIChQYWdlSXNO ZXcodm1wYWdlKSkKKwkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKKworCQl2aXNpYmls aXR5bWFwX3NldF92bWJpdHMocmVsbiwgYmxrbm8sCisJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkgVklTSUJJTElUWU1BUF9B TExfRlJPWkVOKTsKKworCQkvKgorCQkgKiBJdCBpcyBub3QgcG9zc2libGUgdGhhdCB0aGUgVk0g d2FzIGFscmVhZHkgc2V0IGZvciB0aGlzIGhlYXAgcGFnZSwKKwkJICogc28gdGhlIHZtYnVmZmVy IG11c3QgaGF2ZSBiZWVuIG1vZGlmaWVkIGFuZCBtYXJrZWQgZGlydHkuCisJCSAqLworCQlBc3Nl cnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOworCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uo dm1idWZmZXIpLCBsc24pOworCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7CisJfQorCisJ aWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQorCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHZtYnVm ZmVyKTsKKwogCS8qCiAJICogSWYgdGhlIHBhZ2UgaXMgcnVubmluZyBsb3cgb24gZnJlZSBzcGFj ZSwgdXBkYXRlIHRoZSBGU00gYXMgd2VsbC4KIAkgKiBBcmJpdHJhcmlseSwgb3VyIGRlZmluaXRp b24gb2YgImxvdyIgaXMgbGVzcyB0aGFuIDIwJS4gV2UgY2FuJ3QgZG8gbXVjaApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDczMDZjMTZmMDVjLi5hYTQ4YTQzNjEw OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMTQsNyArMTQs OCBAQAogICoJCXZpc2liaWxpdHltYXBfY2xlYXIgIC0gY2xlYXIgYml0cyBmb3Igb25lIHBhZ2Ug aW4gdGhlIHZpc2liaWxpdHkgbWFwCiAgKgkJdmlzaWJpbGl0eW1hcF9waW4JIC0gcGluIGEgbWFw IHBhZ2UgZm9yIHNldHRpbmcgYSBiaXQKICAqCQl2aXNpYmlsaXR5bWFwX3Bpbl9vayAtIGNoZWNr IHdoZXRoZXIgY29ycmVjdCBtYXAgcGFnZSBpcyBhbHJlYWR5IHBpbm5lZAotICoJCXZpc2liaWxp dHltYXBfc2V0CSAtIHNldCBhIGJpdCBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKKyAqCQl2 aXNpYmlsaXR5bWFwX3NldAkgLSBzZXQgYml0KHMpIGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFn ZSBhbmQgbG9nCisgKgkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzIC0gc2V0IGJpdChzKSBpbiBh IHBpbm5lZCBwYWdlCiAgKgkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBv ZiBiaXRzCiAgKgkJdmlzaWJpbGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBz ZXQgaW4gdmlzaWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUg LQpAQCAtMzIxLDYgKzMyMiw3MCBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCXJldHVybiBzdGF0dXM7CiB9CiAK Ky8qCisgKiBTZXQgZmxhZ3MgaW4gdGhlIFZNIGJsb2NrIGNvbnRhaW5lZCBpbiB0aGUgcGFzc2Vk IGluIHZtQnVmLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgZm9yIGNhbGxlcnMgd2hpY2ggaW5j bHVkZSB0aGUgVk0gY2hhbmdlcyBpbiB0aGUgc2FtZSBXQUwKKyAqIHJlY29yZCBhcyB0aGUgbW9k aWZpY2F0aW9ucyBvZiB0aGUgaGVhcCBwYWdlIHdoaWNoIHJlbmRlcmVkIGl0IGFsbC12aXNpYmxl LgorICogQ2FsbGVycyBzZXBhcmF0ZWx5IGxvZ2dpbmcgdGhlIFZNIGNoYW5nZXMgc2hvdWxkIGlu dm9rZSB2aXNpYmlsaXR5bWFwX3NldCgpCisgKiBpbnN0ZWFkLgorICoKKyAqIENhbGxlciBtdXN0 IGhhdmUgcGlubmVkIGFuZCBleGNsdXNpdmUgbG9ja2VkIHRoZSBjb3JyZWN0IGJsb2NrIG9mIHRo ZSBWTSBpbgorICogdm1CdWYuIFRoaXMgYmxvY2sgc2hvdWxkIGNvbnRhaW4gdGhlIFZNIGJpdHMg Zm9yIHRoZSBnaXZlbiBoZWFwQmxrLgorICoKKyAqIER1cmluZyBub3JtYWwgb3BlcmF0aW9uIChp LmUuIG5vdCByZWNvdmVyeSksIHRoaXMgc2hvdWxkIGJlIGNhbGxlZCBpbiBhCisgKiBjcml0aWNh bCBzZWN0aW9uIHdoaWNoIGFsc28gbWFrZXMgYW55IG5lY2Vzc2FyeSBjaGFuZ2VzIHRvIHRoZSBo ZWFwIHBhZ2UKKyAqIGFuZCwgaWYgcmVsZXZhbnQsIGVtaXRzIFdBTC4KKyAqCisgKiBDYWxsZXIg aXMgcmVzcG9uc2libGUgZm9yIFdBTCBsb2dnaW5nIHRoZSBjaGFuZ2VzIHRvIHRoZSBWTSBidWZm ZXIgYW5kIGZvcgorICogbWFraW5nIGFueSBjaGFuZ2VzIG5lZWRlZCB0byB0aGUgYXNzb2NpYXRl ZCBoZWFwIHBhZ2UuIFRoaXMgaW5jbHVkZXMKKyAqIG1haW50YWluaW5nIGFueSBpbnZhcmlhbnRz IHN1Y2ggYXMgZW5zdXJpbmcgdGhlIGJ1ZmZlciBjb250YWluaW5nIGhlYXBCbGsKKyAqIGlzIHBp bm5lZCBhbmQgZXhjbHVzaXZlIGxvY2tlZC4KKyAqLwordWludDgKK3Zpc2liaWxpdHltYXBfc2V0 X3ZtYml0cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJCQkgQnVmZmVy IHZtQnVmLCB1aW50OCBmbGFncykKK3sKKwlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtf VE9fTUFQQkxPQ0soaGVhcEJsayk7CisJdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBC WVRFKGhlYXBCbGspOworCXVpbnQ4CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFw QmxrKTsKKwlQYWdlCQlwYWdlOworCXVpbnQ4CSAgICptYXA7CisJdWludDgJCXN0YXR1czsKKwor I2lmZGVmIFRSQUNFX1ZJU0lCSUxJVFlNQVAKKwllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAw eCUwMlggZm9yICVzICVkIiwKKwkJIGZsYWdzLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp LCBoZWFwQmxrKTsKKyNlbmRpZgorCisJLyogQ2FsbCBpbiBzYW1lIGNyaXRpY2FsIHNlY3Rpb24g d2hlcmUgV0FMIGlzIGVtaXR0ZWQuICovCisJQXNzZXJ0KEluUmVjb3ZlcnkgfHwgQ3JpdFNlY3Rp b25Db3VudCA+IDApOworCisJLyogRmxhZ3Mgc2hvdWxkIGJlIHZhbGlkLiBBbHNvIG5ldmVyIGNs ZWFyIGJpdHMgd2l0aCB0aGlzIGZ1bmN0aW9uICovCisJQXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUykgPT0gZmxhZ3MpOworCisJLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zy b3plbiBiaXQgd2l0aG91dCBhbHNvIHNldHRpbmcgYWxsX3Zpc2libGUgYml0ICovCisJQXNzZXJ0 KGZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CisKKwkvKiBDaGVjayB0aGF0IHdl IGhhdmUgdGhlIHJpZ2h0IFZNIHBhZ2UgcGlubmVkICovCisJaWYgKCFCdWZmZXJJc1ZhbGlkKHZt QnVmKSB8fCBCdWZmZXJHZXRCbG9ja051bWJlcih2bUJ1ZikgIT0gbWFwQmxvY2spCisJCWVsb2co RVJST1IsICJ3cm9uZyBWTSBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7CisK KwlBc3NlcnQoQnVmZmVySXNFeGNsdXNpdmVMb2NrZWQodm1CdWYpKTsKKworCXBhZ2UgPSBCdWZm ZXJHZXRQYWdlKHZtQnVmKTsKKwltYXAgPSAodWludDggKikgUGFnZUdldENvbnRlbnRzKHBhZ2Up OworCisJc3RhdHVzID0gKG1hcFttYXBCeXRlXSA+PiBtYXBPZmZzZXQpICYgVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTOworCWlmIChmbGFncyAhPSBzdGF0dXMpCisJeworCQltYXBbbWFwQnl0ZV0g fD0gKGZsYWdzIDw8IG1hcE9mZnNldCk7CisJCU1hcmtCdWZmZXJEaXJ0eSh2bUJ1Zik7CisJfQor CisJcmV0dXJuIHN0YXR1czsKK30KKwogLyoKICAqCXZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyAt IGdldCBzdGF0dXMgb2YgYml0cwogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNj LmMKaW5kZXggODJiNjJjOTVkZTUuLmI0OGQ3ZGMxZDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MvaGVhcGRlc2MuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2hl YXBhbV94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JtZ3JkZXNjX3V0aWxzLmgiCisjaW5jbHVk ZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5 ZGVmcy5oIgogCiAvKgpAQCAtMzU0LDYgKzM1NSwxMCBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8g YnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJu dHVwbGVzOiAlZCwgZmxhZ3M6IDB4JTAyWCIsIHhscmVjLT5udHVwbGVzLAogCQkJCQkJIHhscmVj LT5mbGFncyk7CiAKKwkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9T RVQpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgdm1fZmxhZ3M6IDB4JTAyWCIsCisJCQkJ CQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfCBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4p OworCiAJCWlmIChYTG9nUmVjSGFzQmxvY2tEYXRhKHJlY29yZCwgMCkgJiYgIWlzaW5pdCkKIAkJ ewogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsIG9mZnNldHM6Iik7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3Zpc2liaWxpdHltYXAuaAppbmRleCBiZTIxYzZkZDFhMy4uZmM3MDU2YTkxZWEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMzcsNiArMzcsOCBAQCBleHRlcm4gdWludDgg dmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLAogCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwK IAkJCQkJCQkgICBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCiAJCQkJCQkJICAgdWludDggZmxh Z3MpOworZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxh Z3MpOwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJp bGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxv Y2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBf cHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCi0tIAoyLjQzLjAKCg== --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0003-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Disposition: attachment; filename="v11-0003-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdye2 RnJvbSBmZmY0MjVhOGY0ODBmNjZkYzYxYzYxZmZiMmIxNWY2Nzk5MDEzMzFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMDMvMjBdIEVsaW1pbmF0ZSB4bF9oZWFwX3Zpc2libGUgZnJvbSB2YWN1dW0gcGhh c2UgSUlJCgpJbnN0ZWFkIG9mIGVtaXR0aW5nIGEgc2VwYXJhdGUgeGxfaGVhcF92aXNpYmxlIHJl Y29yZCBmb3IgZWFjaCBwYWdlIHRoYXQKaXMgcmVuZGVyZWQgYWxsLXZpc2libGUgYnkgdmFjdXVt J3MgdGhpcmQgcGhhc2UsIGluY2x1ZGUgdGhlIHVwZGF0ZXMgdG8KdGhlIFZNIGluIHRoZSBhbHJl YWR5IGVtaXR0ZWQgeGxfaGVhcF9wcnVuZSByZWNvcmQuCgpUaGUgdmlzaWJpbGl0eW1hcCBiaXRz IGFyZSBzdG9yZWQgaW4gdGhlIGZsYWdzIG1lbWJlciBvZiB0aGUKeGxfaGVhcF9wcnVuZSByZWNv cmQuCgpUaGlzIGNhbiBkZWNyZWFzZSB0aGUgbnVtYmVyIG9mIG9mIFdBTCByZWNvcmRzIHZhY3V1 bSBwaGFzZSBJSUkgZW1pdHMgYnkKYXMgbXVjaCBhcyBoYWxmLgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQg PGFuZHJlc0BhbmFyYXplbC5kZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0 L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQw bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j ICB8IDE0NSArKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jICAgIHwgIDY2ICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYyAgIHwgMTY2ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIHwgICA2ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggICAgICAgICAgICB8ICAgOSArKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94 bG9nLmggICAgICAgfCAgMzYgKysrKy0tCiA2IGZpbGVzIGNoYW5nZWQsIDMzMiBpbnNlcnRpb25z KCspLCA5NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpp bmRleCAwODIwZjdkMDUyZC4uMTFjMTE5MjllZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtMzUsNyArMzUsOSBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCUJ1ZmZlcgkJYnVmZmVyOwogCVJlbEZpbGVMb2NhdG9yIHJs b2NhdG9yOwogCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKKwlC dWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJ U2l6ZQkJZnJlZXNwYWNlID0gMDsKIAogCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZy bG9jYXRvciwgTlVMTCwgJmJsa25vKTsKIAltZW1jcHkoJnhscmVjLCBtYWluZGF0YXB0ciwgU2l6 ZU9mSGVhcFBydW5lKTsKQEAgLTUwLDExICs1MiwxNyBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXpl KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCUFzc2VydCgoeGxyZWMuZmxhZ3MgJiBYTEhQX0NM RUFOVVBfTE9DSykgIT0gMCB8fAogCQkgICAoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJF Q1RJT05TIHwgWExIUF9IQVNfREVBRF9JVEVNUykpID09IDApOwogCisJdm1mbGFncyA9IHhscmVj LmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOworCiAJLyoKLQkgKiBXZSBhcmUgYWJv dXQgdG8gcmVtb3ZlIGFuZC9vciBmcmVlemUgdHVwbGVzLiAgSW4gSG90IFN0YW5kYnkgbW9kZSwK LQkgKiBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcXVlcmllcyBydW5uaW5nIGZvciB3aGljaCB0 aGUgcmVtb3ZlZCB0dXBsZXMKLQkgKiBhcmUgc3RpbGwgdmlzaWJsZSBvciB3aGljaCBzdGlsbCBj b25zaWRlciB0aGUgZnJvemVuIHhpZHMgYXMgcnVubmluZy4KLQkgKiBUaGUgY29uZmxpY3QgaG9y aXpvbiBYSUQgY29tZXMgYWZ0ZXIgeGxfaGVhcF9wcnVuZS4KKwkgKiBBZnRlciB4bF9oZWFwX3By dW5lIGlzIHRoZSBvcHRpb25hbCBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLgorCSAqCisJICog SW4gSG90IFN0YW5kYnkgbW9kZSwgd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcnVu bmluZyBxdWVyaWVzCisJICogd2hpY2ggd291bGQgY29uZmxpY3Qgd2l0aCB0aGUgY2hhbmdlcyBp biB0aGlzIHJlY29yZC4gVGhhdCBtZWFucyB3ZQorCSAqIGNhbid0IHJlcGxheSB0aGlzIHJlY29y ZCBpZiBpdCByZW1vdmVzIHR1cGxlcyB0aGF0IGFyZSBzdGlsbCB2aXNpYmxlIHRvCisJICogdHJh bnNhY3Rpb25zIG9uIHRoZSBzdGFuZGJ5LCBmcmVlemUgdHVwbGVzIHdpdGggeGlkcyB0aGF0IGFy ZSBzdGlsbAorCSAqIGNvbnNpZGVyZWQgcnVubmluZyBvbiB0aGUgc3RhbmRieSwgb3Igc2V0IGEg cGFnZSBhcyBhbGwtdmlzaWJsZSBpbiB0aGUKKwkgKiBWTSBpZiBpdCBpc24ndCBhbGwtdmlzaWJs ZSB0byBhbGwgdHJhbnNhY3Rpb25zIG9uIHRoZSBzdGFuZGJ5LgogCSAqLwogCWlmICgoeGxyZWMu ZmxhZ3MgJiBYTEhQX0hBU19DT05GTElDVF9IT1JJWk9OKSAhPSAwKQogCXsKQEAgLTcxLDEyICs3 OSwxMiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CX0KIAogCS8qCi0JICogSWYgd2UgaGF2ZSBhIGZ1bGwtcGFnZSBpbWFnZSwgcmVzdG9yZSBpdCBh bmQgd2UncmUgZG9uZS4KKwkgKiBJZiB3ZSBoYXZlIGEgZnVsbC1wYWdlIGltYWdlIG9mIHRoZSBo ZWFwIGJsb2NrLCByZXN0b3JlIGl0IGFuZCB3ZSdyZQorCSAqIGRvbmUgd2l0aCB0aGUgaGVhcCBi bG9jay4KIAkgKi8KLQlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNv cmQsIDAsIFJCTV9OT1JNQUwsCi0JCQkJCQkJCQkJICAgKHhscmVjLmZsYWdzICYgWExIUF9DTEVB TlVQX0xPQ0spICE9IDAsCi0JCQkJCQkJCQkJICAgJmJ1ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBC TEtfTkVFRFNfUkVETykKKwlpZiAoWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3Jk LCAwLCBSQk1fTk9STUFMLAorCQkJCQkJCQkJICAoeGxyZWMuZmxhZ3MgJiBYTEhQX0NMRUFOVVBf TE9DSykgIT0gMCwKKwkJCQkJCQkJCSAgJmJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCiAJewog CQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQlPZmZzZXROdW1iZXIgKnJl ZGlyZWN0ZWQ7CkBAIC04OSw2ICs5Nyw5IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCVNpemUJCWRhdGFsZW47CiAJCXhsaHBfZnJlZXplX3BsYW4g KnBsYW5zOwogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOworCQlib29sCQlkb19wcnVuZTsK KwkJYm9vbAkJbWFya19idWZmZXJfZGlydHk7CisJCWJvb2wJCXNldF9oZWFwX2xzbjsKIAkJY2hh cgkgICAqZGF0YXB0ciA9IFhMb2dSZWNHZXRCbG9ja0RhdGEocmVjb3JkLCAwLCAmZGF0YWxlbik7 CiAKIAkJaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoZGF0YXB0ciwgeGxy ZWMuZmxhZ3MsCkBAIC05NywxMSArMTA4LDE4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkJCSAgICZuZGVhZCwgJm5vd2RlYWQsCiAJ CQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkKTsKIAorCQlkb19wcnVuZSA9IG5yZWRp cmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisJCXNldF9oZWFwX2xzbiA9 IG1hcmtfYnVmZmVyX2RpcnR5ID0gZG9fcHJ1bmUgfHwgbnBsYW5zID4gMDsKKworCQkvKiBFbnN1 cmUgdGhlIHJlY29yZCBkb2VzIHNvbWV0aGluZyAqLworCQlBc3NlcnQoZG9fcHJ1bmUgfHwgbnBs YW5zID4gMCB8fAorCQkJICAgdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisK IAkJLyoKIAkJICogVXBkYXRlIGFsbCBsaW5lIHBvaW50ZXJzIHBlciB0aGUgcmVjb3JkLCBhbmQg cmVwYWlyIGZyYWdtZW50YXRpb24KIAkJICogaWYgbmVlZGVkLgogCQkgKi8KLQkJaWYgKG5yZWRp cmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDApCisJCWlmIChkb19wcnVuZSkK IAkJCWhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKGJ1ZmZlciwKIAkJCQkJCQkJCSh4bHJlYy5mbGFn cyAmIFhMSFBfQ0xFQU5VUF9MT0NLKSA9PSAwLAogCQkJCQkJCQkJcmVkaXJlY3RlZCwgbnJlZGly ZWN0ZWQsCkBAIC0xMzgsMzYgKzE1NiwxMTcgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJLyogVGhlcmUgc2hvdWxkIGJlIG5vIG1vcmUgZGF0YSAq LwogCQlBc3NlcnQoKGNoYXIgKikgZnJ6X29mZnNldHMgPT0gZGF0YXB0ciArIGRhdGFsZW4pOwog CisJCS8qCisJCSAqIE5vdyBzZXQgUERfQUxMX1ZJU0lCTEUsIGlmIHJlcXVpcmVkLiBXZSdsbCBv bmx5IGRvIHRoaXMgaWYgd2UgYXJlCisJCSAqIGFsc28gZ29pbmcgdG8gc2V0IGJpdHMgaW4gdGhl IFZNIGxhdGVyLgorCQkgKgorCQkgKiBXZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRoIHRoZSBWTSBi aXQgc2V0IGFuZCB0aGUgcGFnZS1sZXZlbAorCQkgKiBQRF9BTExfVklTSUJMRSBiaXQgY2xlYXIu IElmIHRoYXQgd2VyZSB0byBvY2N1ciwgYSBzdWJzZXF1ZW50IHBhZ2UKKwkJICogbW9kaWZpY2F0 aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIgdGhlIFZNIGJpdC4KKwkJICovCisJCWlmICgodm1mbGFn cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkp CisJCXsKKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCisJCQkvKgorCQkJICogSWYgdGhl IG9ubHkgY2hhbmdlIHRvIHRoZSBoZWFwIHBhZ2UgaXMgc2V0dGluZyBQRF9BTExfVklTSUJMRSwK KwkJCSAqIHdlIGNhbiBhdm9pZCBzZXR0aW5nIHRoZSBwYWdlIExTTiB1bmxlc3MgY2hlY2tzdW1z IG9yCisJCQkgKiB3YWxfbG9nX2hpbnRzIGFyZSBlbmFibGVkLgorCQkJICovCisJCQlzZXRfaGVh cF9sc24gPSBYTG9nSGludEJpdElzTmVlZGVkKCkgPyB0cnVlIDogc2V0X2hlYXBfbHNuOworCQkJ bWFya19idWZmZXJfZGlydHkgPSB0cnVlOworCQl9CisKIAkJLyoKIAkJICogTm90ZTogd2UgZG9u J3Qgd29ycnkgYWJvdXQgdXBkYXRpbmcgdGhlIHBhZ2UncyBwcnVuYWJpbGl0eSBoaW50cy4KIAkJ ICogQXQgd29yc3QgdGhpcyB3aWxsIGNhdXNlIGFuIGV4dHJhIHBydW5lIGN5Y2xlIHRvIG9jY3Vy IHNvb24uCiAJCSAqLwogCi0JCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKLQkJTWFya0J1ZmZlckRp cnR5KGJ1ZmZlcik7CisJCWlmIChtYXJrX2J1ZmZlcl9kaXJ0eSkKKwkJCU1hcmtCdWZmZXJEaXJ0 eShidWZmZXIpOworCQlpZiAoc2V0X2hlYXBfbHNuKQorCQkJUGFnZVNldExTTihwYWdlLCBsc24p OwogCX0KIAogCS8qCi0JICogSWYgd2UgcmVsZWFzZWQgYW55IHNwYWNlIG9yIGxpbmUgcG9pbnRl cnMsIHVwZGF0ZSB0aGUgZnJlZSBzcGFjZSBtYXAuCisJICogSWYgd2UgcmVsZWFzZWQgYW55IHNw YWNlIG9yIGxpbmUgcG9pbnRlcnMgb3Igd2lsbCBiZSBzZXR0aW5nIGEgcGFnZSBpbgorCSAqIHRo ZSB2aXNpYmlsaXR5IG1hcCwgbWVhc3VyZSB0aGUgcGFnZSdzIGZyZWVzcGFjZSB0byBsYXRlciB1 cGRhdGUgdGhlCisJICogZnJlZXNwYWNlIG1hcC4KKwkgKgorCSAqIEV2ZW4gaWYgd2UgYXJlIGp1 c3QgdXBkYXRpbmcgdGhlIFZNIChhbmQgdGh1cyBub3QgZnJlZWluZyB1cCBhbnkKKwkgKiBzcGFj ZSksIHdlJ2xsIHN0aWxsIHVwZGF0ZSB0aGUgRlNNIGZvciB0aGlzIHBhZ2UuIFNpbmNlIEZTTSBp cyBub3QKKwkgKiBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQg ZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4KKwkgKiBzdGFuZGJ5cy4gIElmIHRoZSBzdGFuZGJ5IGlz IGxhdGVyIHByb21vdGVkIGFuZCBydW5zIFZBQ1VVTSwgaXQgd2lsbAorCSAqIHNraXAgdXBkYXRp bmcgaW5kaXZpZHVhbCBmcmVlIHNwYWNlIGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lCisJ ICogYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4sIGRlcGVuZGluZyBvbiB0aGUgdmFjdXVtIG1v ZGUsKSB3aGljaCBpcworCSAqIHRyb3VibGVzb21lIHdoZW4gRnJlZVNwYWNlTWFwVmFjdXVtIHBy b3BhZ2F0ZXMgdG9vIG9wdGltaXN0aWMgZnJlZQorCSAqIHNwYWNlIHZhbHVlcyB0byB1cHBlciBG U00gbGF5ZXJzOyBsYXRlciBpbnNlcnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzCisJICogb25s eSB0byBmaW5kIG91dCB0aGF0IHRoZXkgYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4gY2F1c2UgbG9u ZyBzdGFsbHMKKwkgKiB3aGVuIHRoZXJlIGFyZSBtYW55IHN1Y2ggcGFnZXMuCisJICoKKwkgKiBG b3Jlc3RhbGwgdGhvc2UgcHJvYmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBhYm91dCBhIHBh Z2UgdGhhdCBpcworCSAqIGJlY29taW5nIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4uCiAJICoK IAkgKiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGll ZCwgc2luY2UgdGhlIEZTTQogCSAqIGRhdGEgaXMgbm90IGluIHRoZSBwYWdlIGFueXdheS4KKwkg KgorCSAqIFdlIHdhbnQgdG8gYXZvaWQgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUg aGVhcCBidWZmZXIgd2hpbGUKKwkgKiBkb2luZyBJTyAoZWl0aGVyIG9mIHRoZSBGU00gb3IgdGhl IFZNKSwgc28gd2UnbGwgcmVsZWFzZSB0aGUgbG9jayBvbgorCSAqIHRoZSBoZWFwIGJ1ZmZlciBi ZWZvcmUgZG9pbmcgZWl0aGVyLgogCSAqLwogCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCiAJ ewotCQlpZiAoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwKLQkJCQkJCSAg IFhMSFBfSEFTX0RFQURfSVRFTVMgfAotCQkJCQkJICAgWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVN UykpCi0JCXsKLQkJCVNpemUJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKSk7CisJCWlmICgoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJF Q1RJT05TIHwKKwkJCQkJCQlYTEhQX0hBU19ERUFEX0lURU1TIHwKKwkJCQkJCQlYTEhQX0hBU19O T1dfVU5VU0VEX0lURU1TKSkgfHwKKwkJCXZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMpCisJCQlmcmVlc3BhY2UgPSBQYWdlR2V0SGVhcEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1 ZmZlcikpOworCisJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwl9CisKKwkvKgorCSAq IFJlYWQgYW5kIHVwZGF0ZSB0aGUgVk0gYmxvY2suIEV2ZW4gaWYgd2Ugc2tpcHBlZCB1cGRhdGlu ZyB0aGUgaGVhcCBwYWdlCisJICogZHVlIHRvIHRoZSBmaWxlIGJlaW5nIGRyb3BwZWQgb3IgdHJ1 bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5LCBpdCdzCisJICogc3RpbGwgc2FmZSB0byB1cGRhdGUg dGhlIHZpc2liaWxpdHkgbWFwLiAgQW55IFdBTCByZWNvcmQgdGhhdCBjbGVhcnMKKwkgKiB0aGUg dmlzaWJpbGl0eSBtYXAgYml0IGRvZXMgc28gYmVmb3JlIGNoZWNraW5nIHRoZSBwYWdlIExTTiwg c28gYW55CisJICogYml0cyB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZCB3aWxsIHN0aWxsIGJlIGNs ZWFyZWQuCisJICoKKwkgKiBOb3RlIHRoYXQgaXQgaXMgX29ubHlfIG9rYXkgdGhhdCB3ZSBkbyBu b3QgaG9sZCBhIGxvY2sgb24gdGhlIGhlYXAgcGFnZQorCSAqIGJlY2F1c2Ugd2UgYXJlIGluIHJl Y292ZXJ5IGFuZCBjYW4gZXhwZWN0IG5vIG90aGVyIHdyaXRlcnMgdG8gY2xlYXIKKwkgKiBQRF9B TExfVklTSUJMRSBiZWZvcmUgd2UgYXJlIGFibGUgdG8gdXBkYXRlIHRoZSBWTS4KKwkgKi8KKwlp ZiAodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyAmJgorCQlYTG9nUmVhZEJ1ZmZl ckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsCisJCQkJCQkJCQkgIFJCTV9aRVJPX09OX0VSUk9S LAorCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNf UkVETykKKwl7CisJCVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOworCQl1 aW50OAkJb2xkX3ZtYml0cyA9IDA7CisJCVJlbGF0aW9uCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2Fj aGVFbnRyeShybG9jYXRvcik7CiAKLQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJ LyogaW5pdGlhbGl6ZSB0aGUgcGFnZSBpZiBpdCB3YXMgcmVhZCBhcyB6ZXJvcyAqLworCQlpZiAo UGFnZUlzTmV3KHZtcGFnZSkpCisJCQlQYWdlSW5pdCh2bXBhZ2UsIEJMQ0tTWiwgMCk7CisKKwkJ b2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhyZWxuLCBibGtubywgdm1idWZm ZXIsIHZtZmxhZ3MpOwogCi0JCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0b3Is IGJsa25vLCBmcmVlc3BhY2UpOworCQkvKiBPbmx5IHNldCBWTSBwYWdlIExTTiBpZiB3ZSBtb2Rp ZmllZCB0aGUgcGFnZSAqLworCQlpZiAob2xkX3ZtYml0cyAhPSB2bWZsYWdzKQorCQl7CisJCQlB c3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOworCQkJUGFnZVNldExTTihCdWZmZXJHZXRQ YWdlKHZtYnVmZmVyKSwgbHNuKTsKIAkJfQotCQllbHNlCi0JCQlVbmxvY2tSZWxlYXNlQnVmZmVy KGJ1ZmZlcik7CisKKwkJRnJlZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOwogCX0KKworCWlmIChC dWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKKwkJVW5sb2NrUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7 CisKKwlpZiAoZnJlZXNwYWNlID4gMCkKKwkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJs b2NhdG9yLCBibGtubywgZnJlZXNwYWNlKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKaW5kZXggN2ViZDIyZjAwYTMuLmYwYjMzZDFiNjk2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90cmFu c2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2lu c2VydC5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTgzNSw2ICs4MzYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQljb25mbGlj dF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKIAogCQkJbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBJbnZhbGlkQnVmZmVyLCAw LCBmYWxzZSwKIAkJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkJICB0cnVlLCByZWFz b24sCiAJCQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCkBAIC0yMDMw LDE0ICsyMDMyLDE4IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVw bGVzLCBpbnQgbnR1cGxlcywKICAqCiAgKiBUaGlzIGlzIHVzZWQgZm9yIHNldmVyYWwgZGlmZmVy ZW50IHBhZ2UgbWFpbnRlbmFuY2Ugb3BlcmF0aW9uczoKICAqCi0gKiAtIFBhZ2UgcHJ1bmluZywg aW4gVkFDVVVNJ3MgMXN0IHBhc3Mgb3Igb24gYWNjZXNzOiBTb21lIGl0ZW1zIGFyZQorICogLSBQ YWdlIHBydW5pbmcsIGluIHZhY3V1bSBwaGFzZSBJIG9yIG9uLWFjY2VzczogU29tZSBpdGVtcyBh cmUKICAqICAgcmVkaXJlY3RlZCwgc29tZSBtYXJrZWQgZGVhZCwgYW5kIHNvbWUgcmVtb3ZlZCBh bHRvZ2V0aGVyLgogICoKLSAqIC0gRnJlZXppbmc6IEl0ZW1zIGFyZSBtYXJrZWQgYXMgJ2Zyb3pl bicuCisgKiAtIEZyZWV6aW5nOiBEdXJpbmcgdmFjdXVtIHBoYXNlIEksIGl0ZW1zIGFyZSBtYXJr ZWQgYXMgJ2Zyb3plbicKICAqCi0gKiAtIFZhY3V1bSwgMm5kIHBhc3M6IEl0ZW1zIHRoYXQgYXJl IGFscmVhZHkgTFBfREVBRCBhcmUgbWFya2VkIGFzIHVudXNlZC4KKyAqIC0gUmVhcGluZzogRHVy aW5nIHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQgYXJlIGFscmVhZHkgTFBfREVBRCBhcmUK KyAqICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiBUaGV5IGhhdmUgZW5vdWdoIGNvbW1vbmFs aXRpZXMgdGhhdCB3ZSB1c2UgYSBzaW5nbGUgV0FMIHJlY29yZCBmb3IgdGhlbQorICogLSBWTSB1 cGRhdGVzOiBBZnRlciB2YWN1dW0gcGhhc2UgSUlJLCB0aGUgaGVhcCBwYWdlIG1heSBiZSBtYXJr ZWQKKyAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKgorICogVGhlc2UgY2hhbmdl cyBhbGwgaGFwcGVuIHRvZ2V0aGVyLCBzbyB3ZSB1c2UgYSBzaW5nZWwgV0FMIHJlY29yZCBmb3Ig dGhlbQogICogYWxsLgogICoKICAqIElmIHJlcGxheWluZyB0aGUgcmVjb3JkIHJlcXVpcmVzIGEg Y2xlYW51cCBsb2NrLCBwYXNzIGNsZWFudXBfbG9jayA9IHRydWUuCkBAIC0yMDQ1LDEyICsyMDUx LDIzIEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQg bnR1cGxlcywKICAqIHJlcGxheWluZyAndW51c2VkJyBpdGVtcyBkZXBlbmRzIG9uIHdoZXRoZXIg dGhleSB3ZXJlIGFsbCBwcmV2aW91c2x5IG1hcmtlZAogICogYXMgZGVhZC4KICAqCisgKiBJZiB0 aGUgVk0gaXMgYmVpbmcgdXBkYXRlZCwgdm1mbGFncyB3aWxsIGNvbnRhaW4gdGhlIGJpdHMgdG8g c2V0LiBJbiB0aGlzCisgKiBjYXNlLCB2bWJ1ZmZlciBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4g dXBkYXRlZCBhbmQgbWFya2VkIGRpcnR5IGFuZCBzaG91bGQKKyAqIHN0aWxsIGJlIHBpbm5lZCBh bmQgbG9ja2VkLgorICoKKyAqIHNldF9wZF9hbGxfdmlzIGluZGljYXRlcyB0aGF0IHdlIHNldCBQ RF9BTExfVklTSUJMRSBhbmQgdGh1cyBzaG91bGQgdXBkYXRlCisgKiB0aGUgcGFnZSBMU04gd2hl biBjaGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCBldmVuIGlmIHdlIGRpZCBub3QK KyAqIHBydW5lIG9yIGZyZWV6ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisgKgogICogTm90ZTogVGhp cyBmdW5jdGlvbiBzY3JpYmJsZXMgb24gdGhlICdmcm96ZW4nIGFycmF5LgogICoKICAqIE5vdGU6 IFRoaXMgaXMgY2FsbGVkIGluIGEgY3JpdGljYWwgc2VjdGlvbiwgc28gY2FyZWZ1bCB3aGF0IHlv dSBkbyBoZXJlLgogICovCiB2b2lkCiBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJ CQkgIHVpbnQ4IHZtZmxhZ3MsCisJCQkJCQkgIGJvb2wgc2V0X3BkX2FsbF92aXMsCiAJCQkJCQkg IFRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkLAogCQkJCQkJICBib29sIGNsZWFudXBfbG9jaywK IAkJCQkJCSAgUHJ1bmVSZWFzb24gcmVhc29uLApAQCAtMjA2Miw2ICsyMDc5LDcgQEAgbG9nX2hl YXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAl4 bF9oZWFwX3BydW5lIHhscmVjOwogCVhMb2dSZWNQdHIJcmVjcHRyOwogCXVpbnQ4CQlpbmZvOwor CXVpbnQ4CQlyZWdidWZfZmxhZ3M7CiAKIAkvKiBUaGUgZm9sbG93aW5nIGxvY2FsIHZhcmlhYmxl cyBob2xkIGRhdGEgcmVnaXN0ZXJlZCBpbiB0aGUgV0FMIHJlY29yZDogKi8KIAl4bGhwX2ZyZWV6 ZV9wbGFuIHBsYW5zW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKQEAgLTIwNzAsOCArMjA4OCwyMSBA QCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCXhsaHBfcHJ1bmVfaXRlbXMgZGVhZF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIHVu dXNlZF9pdGVtczsKIAlPZmZzZXROdW1iZXIgZnJ6X29mZnNldHNbTWF4SGVhcFR1cGxlc1BlclBh Z2VdOworCWJvb2wJCWRvX3BydW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBu dW51c2VkID4gMDsKKworCUFzc2VydCgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklU UykgPT0gdm1mbGFncyk7CisJeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOwogCi0JeGxyZWMuZmxhZ3Mg PSAwOworCXJlZ2J1Zl9mbGFncyA9IFJFR0JVRl9TVEFOREFSRDsKKworCS8qCisJICogV2UgY2Fu IGF2b2lkIGFuIEZQSSBpZiB0aGUgb25seSBtb2RpZmljYXRpb24gd2UgYXJlIG1ha2luZyB0byB0 aGUgaGVhcAorCSAqIHBhZ2UgaXMgdG8gc2V0IFBEX0FMTF9WSVNJQkxFIGFuZCBjaGVja3N1bXMv d2FsX2xvZ19oaW50cyBhcmUgZGlzYWJsZWQuCisJICovCisJaWYgKCFkb19wcnVuZSAmJgorCQlu ZnJvemVuID09IDAgJiYKKwkJKCFzZXRfcGRfYWxsX3ZpcyB8fCAhWExvZ0hpbnRCaXRJc05lZWRl ZCgpKSkKKwkJcmVnYnVmX2ZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKIAogCS8qCiAJICogUHJl cGFyZSBkYXRhIGZvciB0aGUgYnVmZmVyLiAgVGhlIGFycmF5cyBhcmUgbm90IGFjdHVhbGx5IGlu IHRoZQpAQCAtMjA3OSw3ICsyMTEwLDExIEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJICogcGFnZSBpbWFnZSwgdGhlIGFycmF5 cyBjYW4gYmUgb21pdHRlZC4KIAkgKi8KIAlYTG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVnaXN0 ZXJCdWZmZXIoMCwgYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQpOworCVhMb2dSZWdpc3RlckJ1ZmZl cigwLCBidWZmZXIsIHJlZ2J1Zl9mbGFncyk7CisKKwlpZiAodm1mbGFncyAmIFZJU0lCSUxJVFlN QVBfVkFMSURfQklUUykKKwkJWExvZ1JlZ2lzdGVyQnVmZmVyKDEsIHZtYnVmZmVyLCAwKTsKKwog CWlmIChuZnJvemVuID4gMCkKIAl7CiAJCWludAkJCW5wbGFuczsKQEAgLTIxNjgsNSArMjIwMywy MiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIg YnVmZmVyLAogCX0KIAlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hFQVAyX0lELCBpbmZvKTsKIAot CVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZShidWZmZXIpLCByZWNwdHIpOworCWlmICh2bWZsYWdz ICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCXsKKwkJQXNzZXJ0KEJ1ZmZlcklzRGlydHko dm1idWZmZXIpKTsKKwkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgcmVjcHRy KTsKKwl9CisKKwkvKgorCSAqIElmIHBydW5pbmcgb3IgZnJlZXppbmcgdHVwbGVzIG9yIHNldHRp bmcgdGhlIHBhZ2UgYWxsLXZpc2libGUgd2hlbgorCSAqIGNoZWNrc3VtcyBvciB3YWxfaGludF9i aXRzIGFyZSBlbmFibGVkLCB3ZSBtdXN0IGJ1bXAgdGhlIExTTi4gVG9ybgorCSAqIHBhZ2VzIGFy ZSBwb3NzaWJsZSBpZiB3ZSB1cGRhdGUgUERfQUxMX1ZJU0lCTEUgd2l0aG91dCBidW1waW5nIHRo ZSBMU04sCisJICogYnV0IHRoaXMgaXMgZGVlbWVkIG9rYXkgZm9yIHBhZ2UgaGludCB1cGRhdGVz LgorCSAqLworCWlmIChkb19wcnVuZSB8fCBuZnJvemVuID4gMCB8fAorCQkoc2V0X3BkX2FsbF92 aXMgJiYgWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKKwl7CisJCUFzc2VydChCdWZmZXJJc0RpcnR5 KGJ1ZmZlcikpOworCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgcmVjcHRyKTsK Kwl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggOGE4NGJkZmUwYTku LjUxMDY3MjY0MDA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjMs MTEgKzQ2MywxMyBAQCBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNy ZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXROdW1iZXIgKgogCQkJCQkJICAgaW50IG51bV9v ZmZzZXRzKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVs KTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwot c3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkgYm9v bCAqYWxsX2Zyb3plbiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9m Zl94aWQsCi0JCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CitzdGF0aWMg Ym9vbCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIg YnVmLAorCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkg ICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAorCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNl dHMsCisJCQkJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVy ICpsb2dnaW5nX29mZm51bSk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsc3RhdHNfYWxsX2luZGV4 ZXMoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIHZhY3V1bV9lcnJvcl9jYWxsYmFj ayh2b2lkICphcmcpOwogc3RhdGljIHZvaWQgdXBkYXRlX3ZhY3V1bV9lcnJvcl9pbmZvKExWUmVs U3RhdGUgKnZhY3JlbCwKQEAgLTI4NTIsOCArMjg1NCwxMSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3Bh Z2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwK IAlPZmZzZXROdW1iZXIgdW51c2VkW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIAlpbnQJCQludW51 c2VkID0gMDsKIAlUcmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwlUcmFuc2Fj dGlvbklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCWJvb2wJCWFsbF9m cm96ZW47CiAJTFZTYXZlZEVyckluZm8gc2F2ZWRfZXJyX2luZm87CisJdWludDgJCXZtZmxhZ3Mg PSAwOworCWJvb2wJCXNldF9wZF9hbGxfdmlzID0gZmFsc2U7CiAKIAlBc3NlcnQodmFjcmVsLT5k b19pbmRleF92YWN1dW1pbmcpOwogCkBAIC0yODY0LDYgKzI4NjksMjMgQEAgbGF6eV92YWN1dW1f aGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBi dWZmZXIsCiAJCQkJCQkJIFZBQ1VVTV9FUlJDQl9QSEFTRV9WQUNVVU1fSEVBUCwgYmxrbm8sCiAJ CQkJCQkJIEludmFsaWRPZmZzZXROdW1iZXIpOwogCisJaWYgKGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAorCQkJCQkJCQkJICAgdmFjcmVsLT5jdXRv ZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICBkZWFkb2Zmc2V0cywgbnVtX29mZnNldHMsCisJ CQkJCQkJCQkgICAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJ CSAgICZ2YWNyZWwtPm9mZm51bSkpCisJeworCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxM X1ZJU0lCTEU7CisJCWlmIChhbGxfZnJvemVuKQorCQl7CisJCQl2bWZsYWdzIHw9IFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTjsKKwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQodmlzaWJp bGl0eV9jdXRvZmZfeGlkKSk7CisJCX0KKworCQkvKiBUYWtlIHRoZSBsb2NrIG9uIHRoZSB2bWJ1 ZmZlciBiZWZvcmUgZW50ZXJpbmcgYSBjcml0aWNhbCBzZWN0aW9uICovCisJCUxvY2tCdWZmZXIo dm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJfQorCiAJU1RBUlRfQ1JJVF9TRUNU SU9OKCk7CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IG51bV9vZmZzZXRzOyBpKyspCkBAIC0yODgz LDYgKzI5MDUsMTcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwg QmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJLyogQXR0ZW1wdCB0byB0cnVuY2F0 ZSBsaW5lIHBvaW50ZXIgYXJyYXkgbm93ICovCiAJUGFnZVRydW5jYXRlTGluZVBvaW50ZXJBcnJh eShwYWdlKTsKIAorCWlmICgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgIT0g MCkKKwl7CisJCUFzc2VydCghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CisJCXNldF9wZF9hbGxf dmlzID0gdHJ1ZTsKKwkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCXZpc2liaWxpdHltYXBf c2V0X3ZtYml0cyh2YWNyZWwtPnJlbCwKKwkJCQkJCQkJIGJsa25vLAorCQkJCQkJCQkgdm1idWZm ZXIsIHZtZmxhZ3MpOworCQljb25mbGljdF94aWQgPSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJ fQorCiAJLyoKIAkgKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd2Ugd3JpdGUgV0FMLgogCSAq LwpAQCAtMjg5Miw3ICsyOTI1LDEwIEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCWlmIChSZWxhdGlv bk5lZWRzV0FMKHZhY3JlbC0+cmVsKSkKIAl7CiAJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUo dmFjcmVsLT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJ CQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJICB2bWZsYWdzLAorCQkJCQkJCQkgIHNldF9wZF9h bGxfdmlzLAorCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKIAkJCQkJCQkJICBmYWxzZSwJLyogbm8g Y2xlYW51cCBsb2NrIHJlcXVpcmVkICovCiAJCQkJCQkJCSAgUFJVTkVfVkFDVVVNX0NMRUFOVVAs CiAJCQkJCQkJCSAgTlVMTCwgMCwJLyogZnJvemVuICovCkBAIC0yOTAxLDM5ICsyOTM3LDEyIEBA IGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJs a25vLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgIHVudXNlZCwgbnVudXNlZCk7CiAJfQogCi0J LyoKLQkgKiBFbmQgY3JpdGljYWwgc2VjdGlvbiwgc28gd2Ugc2FmZWx5IGNhbiBkbyB2aXNpYmls aXR5IHRlc3RzICh3aGljaAotCSAqIHBvc3NpYmx5IG5lZWQgdG8gcGVyZm9ybSBJTyBhbmQgYWxs b2NhdGUgbWVtb3J5ISkuIElmIHdlIGNyYXNoIG5vdyB0aGUKLQkgKiBwYWdlIChpbmNsdWRpbmcg dGhlIGNvcnJlc3BvbmRpbmcgdm0gYml0KSBtaWdodCBub3QgYmUgbWFya2VkIGFsbAotCSAqIHZp c2libGUsIGJ1dCB0aGF0J3MgZmluZS4gQSBsYXRlciB2YWN1dW0gd2lsbCBmaXggdGhhdC4KLQkg Ki8KIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKLQkvKgotCSAqIE5vdyB0aGF0IHdlIGhhdmUgcmVt b3ZlZCB0aGUgTFBfREVBRCBpdGVtcyBmcm9tIHRoZSBwYWdlLCBvbmNlIGFnYWluCi0JICogY2hl Y2sgaWYgdGhlIHBhZ2UgaGFzIGJlY29tZSBhbGwtdmlzaWJsZS4gIFRoZSBwYWdlIGlzIGFscmVh ZHkgbWFya2VkCi0JICogZGlydHksIGV4Y2x1c2l2ZWx5IGxvY2tlZCwgYW5kLCBpZiBuZWVkZWQs IGEgZnVsbCBwYWdlIGltYWdlIGhhcyBiZWVuCi0JICogZW1pdHRlZC4KLQkgKi8KLQlBc3NlcnQo IVBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwotCWlmIChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo dmFjcmVsLT5yZWwsIGJ1ZmZlciwgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCi0JCQkJCQkJ CSAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgJnZhY3JlbC0+b2ZmbnVtKSkK KwlpZiAoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKQogCXsKLQkJ dWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQotCQlpZiAoYWxsX2Zy b3plbikKLQkJewotCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZCh2aXNpYmlsaXR5X2N1 dG9mZl94aWQpKTsKLQkJCWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQot Ci0JCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwt PnJlbCwgYmxrbm8sIGJ1ZmZlciwKLQkJCQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkg IHZtYnVmZmVyLCB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkgIGZsYWdzKTsKLQogCQkv KiBDb3VudCB0aGUgbmV3bHkgc2V0IFZNIHBhZ2UgZm9yIGxvZ2dpbmcgKi8KKwkJTG9ja0J1ZmZl cih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAkJdmFjcmVsLT52bV9uZXdfdmlzaWJs ZV9wYWdlcysrOwogCQlpZiAoYWxsX2Zyb3plbikKIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVf ZnJvemVuX3BhZ2VzKys7CkBAIC0zNjAwLDQwICszNjA5LDg1IEBAIGRlYWRfaXRlbXNfY2xlYW51 cChMVlJlbFN0YXRlICp2YWNyZWwpCiB9CiAKIC8qCi0gKiBDaGVjayBpZiBldmVyeSB0dXBsZSBp biB0aGUgZ2l2ZW4gcGFnZSBpbiBidWYgaXMgdmlzaWJsZSB0byBhbGwgY3VycmVudCBhbmQKLSAq IGZ1dHVyZSB0cmFuc2FjdGlvbnMuCisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVf YWxsX3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IKKyAqIGNhbGxlcnMgdGhhdCBleHBl Y3Qgbm8gTFBfREVBRCBvbiB0aGUgcGFnZS4KKyAqLworYm9vbAoraGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCSBUcmFuc2FjdGlvbklkIE9s ZGVzdFhtaW4sCisJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCSBUcmFuc2FjdGlvbklk ICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29m Zm51bSkKK3sKKworCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUocmVsLCBi dWYsIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgYWxsX2Zy b3plbiwKKwkJCQkJCQkJCQkgIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgIGxv Z2dpbmdfb2ZmbnVtKTsKK30KKworLyoKKyAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgdGhl IGhlYXAgcGFnZSBpbiBidWYgaXMgYWxsLXZpc2libGUgb3RoZXIgdGhhbgorICogdGhlIGRlYWQg bGluZSBwb2ludGVycyByZWZlcnJlZCB0byBieSB0aGUgcHJvdmlkZWQgZGVhZG9mZnNldHMgYXJy YXkuCiAgKgotICogT2xkZXN0WG1pbiBpcyB1c2VkIHRvIGRldGVybWluZSB2aXNpYmlsaXR5Lgor ICogZGVhZG9mZnNldHMgYXJlIHRoZSBvZmZzZXRzIHRoZSBjYWxsZXIga25vd3MgYWJvdXQgYW5k IGFscmVhZHkgcmVtb3ZlZAorICogYXNzb2NpYXRlZCBpbmRleCBlbnRyaWVzLiBWYWN1dW0gd2ls bCBjYWxsIHRoaXMgYmVmb3JlIHNldHRpbmcgdGhvc2UgbGluZQorICogcG9pbnRlcnMgTFBfVU5V U0VELiBTbywgaWYgdGhlcmUgYXJlIG5vIG5ldyBMUF9ERUFEIGl0ZW1zLCB0aGVuIHRoZSBwYWdl CisgKiBjYW4gYmUgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTSBieSB0aGUgY2FsbGVyLgorICoK KyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFuIHRo ZSBwcm92aWRlZAorICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBT ZXRzICphbGxfZnJvemVuIHRvIHRydWUgaWYgZXZlcnkgdHVwbGUgb24gdGhpcyBwYWdlIGlzIGZy b3plbi4KKyAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KICAq Ci0gKiBTZXRzICp2aXNpYmlsaXR5X2N1dG9mZl94aWQgdG8gdGhlIGhpZ2hlc3QgeG1pbiBhbW9u Z3N0IHRoZSB2aXNpYmxlIHR1cGxlcy4KLSAqIEl0IGlzIG9ubHkgdmFsaWQgaWYgdGhlIHBhZ2Ug aXMgYWxsLXZpc2libGUuCisgKiAqYWxsX2Zyb3plbiBpcyBhbiBvdXRwdXQgcGFyYW1ldGVyIGlu ZGljYXRpbmcgdG8gdGhlIGNhbGxlciBpZiBldmVyeSB0dXBsZQorICogb24gdGhlIHBhZ2UgaXMg ZnJvemVuLgogICoKICAqICpsb2dnaW5nX29mZm51bSB3aWxsIGhhdmUgdGhlIE9mZnNldE51bWJl ciBvZiB0aGUgY3VycmVudCB0dXBsZSBiZWluZwogICogcHJvY2Vzc2VkIGZvciB2YWN1dW0ncyBl cnJvciBjYWxsYmFjayBzeXN0ZW0uCiAgKgotICogVGhpcyBpcyBhIHN0cmlwcGVkIGRvd24gdmVy c2lvbiBvZiBsYXp5X3NjYW5fcHJ1bmUoKS4gIElmIHlvdSBjaGFuZ2UKLSAqIGFueXRoaW5nIGhl cmUsIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUgdGhhdCBh bgotICogYXNzZXJ0aW9uIGNhbGxzIHVzIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5Ym9keSBzdGlsbCBh Z3JlZXMuICBCZSBzdXJlIHRvIGF2b2lkCi0gKiBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3Rz IGhlcmUuCisgKiAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIGFuIG91dHB1dCBwYXJhbWV0ZXIg d2l0aCB0aGUgaGlnaGVzdCB4bWluIGFtb25nc3QgdGhlCisgKiB2aXNpYmxlIHR1cGxlcy4gSXQg aXMgb25seSB2YWxpZCBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4KKyAqCisgKiBDYWxsZXJz IGxvb2tpbmcgdG8gdmVyaWZ5IHRoYXQgdGhlIHBhZ2UgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBj YW4gY2FsbAorICogaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkuCisgKgorICogVGhpcyBpcyBz aW1pbGFyIGxvZ2ljIHRvIHRoYXQgaW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25v cm1hbCgpIElmCisgKiB5b3UgY2hhbmdlIGFueXRoaW5nIGhlcmUsIG1ha2Ugc3VyZSB0aGF0IGV2 ZXJ5dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUKKyAqIHRoYXQgYW4gYXNzZXJ0aW9uIGNhbGxz IHVzIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5Ym9keSBzdGlsbCBhZ3JlZXMuICBCZSBzdXJlCisgKiB0 byBhdm9pZCBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3RzIGhlcmUuCiAgKi8KIHN0YXRpYyBi b29sCi1oZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAot CQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCSBib29sICphbGxfZnJvemVu LAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCSBP ZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQoraGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNp YmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9s ZGVzdFhtaW4sCisJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKKwkJCQkJCQkg ICBpbnQgbmRlYWRvZmZzZXRzLAorCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkJ ICAgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCSAgIE9mZnNl dE51bWJlciAqbG9nZ2luZ19vZmZudW0pCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmKTsKIAlCbG9ja051bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsK IAlPZmZzZXROdW1iZXIgb2ZmbnVtLAogCQkJCW1heG9mZjsKIAlib29sCQlhbGxfdmlzaWJsZSA9 IHRydWU7CisJaW50CQkJbWF0Y2hlZF9kZWFkX2NvdW50ID0gMDsKIAogCSp2aXNpYmlsaXR5X2N1 dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAkqYWxsX2Zyb3plbiA9IHRydWU7CiAK KwlBc3NlcnQobmRlYWRvZmZzZXRzID09IDAgfHwgZGVhZG9mZnNldHMpOworCisjaWZkZWYgVVNF X0FTU0VSVF9DSEVDS0lORworCS8qIENvbmZpcm0gaW5wdXQgZGVhZG9mZnNldHNbXSBpcyBzdHJp Y3RseSBzb3J0ZWQgKi8KKwlpZiAobmRlYWRvZmZzZXRzID4gMSkKKwl7CisJCWZvciAoaW50IGkg PSAxOyBpIDwgbmRlYWRvZmZzZXRzOyBpKyspCisJCQlBc3NlcnQoZGVhZG9mZnNldHNbaSAtIDFd IDwgZGVhZG9mZnNldHNbaV0pOworCX0KKyNlbmRpZgorCiAJbWF4b2ZmID0gUGFnZUdldE1heE9m ZnNldE51bWJlcihwYWdlKTsKIAlmb3IgKG9mZm51bSA9IEZpcnN0T2Zmc2V0TnVtYmVyOwogCQkg b2ZmbnVtIDw9IG1heG9mZiAmJiBhbGxfdmlzaWJsZTsKQEAgLTM2NjEsOSArMzcxNSwxNSBAQCBo ZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkgKi8K IAkJaWYgKEl0ZW1JZElzRGVhZChpdGVtaWQpKQogCQl7Ci0JCQlhbGxfdmlzaWJsZSA9IGZhbHNl OwotCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCWJyZWFrOworCQkJaWYgKCFkZWFkb2Zmc2V0 cyB8fAorCQkJCW1hdGNoZWRfZGVhZF9jb3VudCA+PSBuZGVhZG9mZnNldHMgfHwKKwkJCQlkZWFk b2Zmc2V0c1ttYXRjaGVkX2RlYWRfY291bnRdICE9IG9mZm51bSkKKwkJCXsKKwkJCQkqYWxsX2Zy b3plbiA9IGFsbF92aXNpYmxlID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisJCQltYXRjaGVk X2RlYWRfY291bnQrKzsKKwkJCWNvbnRpbnVlOwogCQl9CiAKIAkJQXNzZXJ0KEl0ZW1JZElzTm9y bWFsKGl0ZW1pZCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCBi NDhkN2RjMWQyNC4uNDM5ZjMzYjgwNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFw ZGVzYy5jCkBAIC0xMDMsNyArMTAzLDcgQEAgcGxhbl9lbGVtX2Rlc2MoU3RyaW5nSW5mbyBidWYs IHZvaWQgKnBsYW4sIHZvaWQgKmRhdGEpCiAgKiBjb2RlLCB0aGUgbGF0dGVyIG9mIHdoaWNoIGlz IHVzZWQgaW4gZnJvbnRlbmQgKHBnX3dhbGR1bXApIGNvZGUuCiAgKi8KIHZvaWQKLWhlYXBfeGxv Z19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDggZmxhZ3Ms CitoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVp bnQxNiBmbGFncywKIAkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoq cGxhbnMsCiAJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJ CSAgIGludCAqbnJlZGlyZWN0ZWQsIE9mZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCkBAIC0yODcs NiArMjg3LDEwIEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgaXNDYXRhbG9nUmVsOiAlYyIsCiAJ CQkJCQkgeGxyZWMtPmZsYWdzICYgWExIUF9JU19DQVRBTE9HX1JFTCA/ICdUJyA6ICdGJyk7CiAK KwkJaWYgKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKKwkJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiLCB2bV9mbGFnczogMHglMDJYIiwKKwkJCQkJCQkgeGxyZWMtPmZs YWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwogCQlpZiAoWExvZ1JlY0hhc0Jsb2Nr RGF0YShyZWNvcmQsIDApKQogCQl7CiAJCQlTaXplCQlkYXRhbGVuOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmlu ZGV4IGEyYmQ1YTg5N2Y4Li44YjQ3Mjk1ZWZhMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMzQ0LDYg KzM0NCwxMiBAQCBleHRlcm4gdm9pZCBoZWFwX2lucGxhY2VfdXBkYXRlX2FuZF91bmxvY2soUmVs YXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJICAgQnVmZmVyIGJ1ZmZlcik7CiBleHRlcm4gdm9p ZCBoZWFwX2lucGxhY2VfdW5sb2NrKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQlIZWFwVHVw bGUgb2xkdHVwLCBCdWZmZXIgYnVmZmVyKTsKKworZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2Fs bF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlv bklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCSBU cmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkgT2Zmc2V0TnVt YmVyICpsb2dnaW5nX29mZm51bSk7CiBleHRlcm4gYm9vbCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1 cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAkJCQkJCQkJCSAgY29uc3Qgc3RydWN0IFZhY3V1 bUN1dG9mZnMgKmN1dG9mZnMsCiAJCQkJCQkJCQkgIEhlYXBQYWdlRnJlZXplICpwYWdlZnJ6LApA QCAtMzg4LDYgKzM5NCw5IEBAIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1 ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCQkJCQkJCU9mZnNldE51bWJl ciAqbm93dW51c2VkLCBpbnQgbnVudXNlZCk7CiBleHRlcm4gdm9pZCBoZWFwX2dldF9yb290X3R1 cGxlcyhQYWdlIHBhZ2UsIE9mZnNldE51bWJlciAqcm9vdF9vZmZzZXRzKTsKIGV4dGVybiB2b2lk IGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCisJCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgdWludDggdm1mbGFn cywKKwkJCQkJCQkJCSAgYm9vbCB2bV9tb2RpZmllZF9oZWFwX3BhZ2UsCiAJCQkJCQkJCQkgIFRy YW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkJICBib29sIGNsZWFudXBfbG9jaywK IAkJCQkJCQkJCSAgUHJ1bmVSZWFzb24gcmVhc29uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApp bmRleCBkNGMwNjI1YjYzMi4uZDg1MDg1OTNlN2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o CkBAIC0yNDksNyArMjQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqIE1h aW4gZGF0YSBzZWN0aW9uOgogICoKICAqCXhsX2hlYXBfcHJ1bmUKLSAqCQl1aW50OAkJCQlmbGFn cworICoJCXVpbnQxNgkJCQlmbGFncwogICoJVHJhbnNhY3Rpb25JZAkJCXNuYXBzaG90X2NvbmZs aWN0X2hvcml6b24KICAqCiAgKiBCbG9jayAwIGRhdGEgc2VjdGlvbjoKQEAgLTI4NCw3ICsyODQs NyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICovCiB0eXBlZGVmIHN0cnVjdCB4 bF9oZWFwX3BydW5lCiB7Ci0JdWludDgJCWZsYWdzOworCXVpbnQxNgkJZmxhZ3M7CiAKIAkvKgog CSAqIElmIFhMSFBfSEFTX0NPTkZMSUNUX0hPUklaT04gaXMgc2V0LCB0aGUgY29uZmxpY3QgaG9y aXpvbiBYSUQgZm9sbG93cywKQEAgLTI5MiwxMCArMjkyLDIyIEBAIHR5cGVkZWYgc3RydWN0IHhs X2hlYXBfcHJ1bmUKIAkgKi8KIH0geGxfaGVhcF9wcnVuZTsKIAotI2RlZmluZSBTaXplT2ZIZWFw UHJ1bmUgKG9mZnNldG9mKHhsX2hlYXBfcHJ1bmUsIGZsYWdzKSArIHNpemVvZih1aW50OCkpCisj ZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVuZSwgZmxhZ3MpICsg c2l6ZW9mKHVpbnQxNikpCisKKy8qCisgKiBUaGUgeGxfaGVhcF9wcnVuZSByZWNvcmQncyBmbGFn cyBtYXkgYWxzbyBjb250YWluIHdoaWNoIFZNIGJpdHMgdG8gc2V0LiBBcworICogc3VjaCwgKDEg PDwgMCkgYW5kICgxIDw8IDEpIGFyZSByZXNlcnZlZCBmb3IgVklTSUJJTElUWU1BUF9BTExfVklT SUJMRSBhbmQKKyAqIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTi4KKyAqLwogCi0vKiB0byBoYW5k bGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSAq LwotI2RlZmluZQkJWExIUF9JU19DQVRBTE9HX1JFTAkJCSgxIDw8IDEpCisvKgorICogVG8gaGFu ZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnks IHdlIG11c3Qga25vdworICogaWYgdGhlIHRhYmxlIGlzIGEgY2F0YWxvZyB0YWJsZS4gTm90ZSB0 aGF0IGluIHZpc2liaWxpdHltYXBkZWZzLmgKKyAqIFZJU0lCTElUWU1BUF9YTE9HX0NBVEFMT0df UkVMIGlzIGFsc28gZGVmaW5lZCBhcyAoMSA8PCAyKS4geGxfaGVhcF9wcnVuZQorICogcmVjb3Jk cyBzaG91bGQgdXNlIFhMSFBfSVNfQ0FUQUxPR19SRUwsIG5vdCBWSVNJQklMSVlUTUFQX1hMT0df Q0FUQUxPR19SRUwgLS0KKyAqIGV2ZW4gaWYgdGhleSBvbmx5IGNvbnRhaW4gdXBkYXRlcyB0byB0 aGUgVk0uCisgKi8KKyNkZWZpbmUJCVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAyKQogCiAv KgogICogRG9lcyByZXBsYXlpbmcgdGhlIHJlY29yZCByZXF1aXJlIGEgY2xlYW51cC1sb2NrPwpA QCAtMzA1LDcgKzMxNyw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKICAqIG1hcmtz IExQX0RFQUQgbGluZSBwb2ludGVycyBhcyB1bnVzZWQgd2l0aG91dCBtb3ZpbmcgYW55IHR1cGxl IGRhdGEsIGFuCiAgKiBvcmRpbmFyeSBleGNsdXNpdmUgbG9jayBpcyBzdWZmaWNpZW50LgogICov Ci0jZGVmaW5lCQlYTEhQX0NMRUFOVVBfTE9DSwkgICAgICAgKDEgPDwgMikKKyNkZWZpbmUJCVhM SFBfQ0xFQU5VUF9MT0NLCSAgICAgICAoMSA8PCAzKQogCiAvKgogICogSWYgd2UgcmVtb3ZlIG9y IGZyZWV6ZSBhbnkgZW50cmllcyB0aGF0IGNvbnRhaW4geGlkcywgd2UgbmVlZCB0byBpbmNsdWRl IGEKQEAgLTMxMywyMiArMzI1LDIyIEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKICAq IHRoZXJlIGFyZSBubyBxdWVyaWVzIHJ1bm5pbmcgZm9yIHdoaWNoIHRoZSByZW1vdmVkIHR1cGxl cyBhcmUgc3RpbGwKICAqIHZpc2libGUsIG9yIHdoaWNoIHN0aWxsIGNvbnNpZGVyIHRoZSBmcm96 ZW4gWElEcyBhcyBydW5uaW5nLgogICovCi0jZGVmaW5lCQlYTEhQX0hBU19DT05GTElDVF9IT1JJ Wk9OICAgKDEgPDwgMykKKyNkZWZpbmUJCVhMSFBfSEFTX0NPTkZMSUNUX0hPUklaT04gICAoMSA8 PCA0KQogCiAvKgogICogSW5kaWNhdGVzIHRoYXQgYW4geGxocF9mcmVlemVfcGxhbnMgc3ViLXJl Y29yZCBhbmQgb25lIG9yIG1vcmUKICAqIHhsaHBfZnJlZXplX3BsYW4gc3ViLXJlY29yZHMgYXJl IHByZXNlbnQuCiAgKi8KLSNkZWZpbmUJCVhMSFBfSEFTX0ZSRUVaRV9QTEFOUwkJKDEgPDwgNCkK KyNkZWZpbmUJCVhMSFBfSEFTX0ZSRUVaRV9QTEFOUwkJKDEgPDwgNSkKIAogLyoKICAqIFhMSFBf SEFTX1JFRElSRUNUSU9OUywgWExIUF9IQVNfREVBRF9JVEVNUywgYW5kIFhMSFBfSEFTX05PV19V TlVTRURfSVRFTVMKICAqIGluZGljYXRlIHRoYXQgeGxocF9wcnVuZV9pdGVtcyBzdWItcmVjb3Jk cyB3aXRoIHJlZGlyZWN0ZWQsIGRlYWQsIGFuZAogICogdW51c2VkIGl0ZW0gb2Zmc2V0cyBhcmUg cHJlc2VudC4KICAqLwotI2RlZmluZQkJWExIUF9IQVNfUkVESVJFQ1RJT05TCQkoMSA8PCA1KQot I2RlZmluZQkJWExIUF9IQVNfREVBRF9JVEVNUwkgICAgICAgICgxIDw8IDYpCi0jZGVmaW5lCQlY TEhQX0hBU19OT1dfVU5VU0VEX0lURU1TICAgKDEgPDwgNykKKyNkZWZpbmUJCVhMSFBfSEFTX1JF RElSRUNUSU9OUwkJKDEgPDwgNikKKyNkZWZpbmUJCVhMSFBfSEFTX0RFQURfSVRFTVMJICAgICAg ICAoMSA8PCA3KQorI2RlZmluZQkJWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUyAgICgxIDw8IDgp CiAKIC8qCiAgKiB4bGhwX2ZyZWV6ZV9wbGFuIGRlc2NyaWJlcyBob3cgdG8gZnJlZXplIGEgZ3Jv dXAgb2Ygb25lIG9yIG1vcmUgaGVhcCB0dXBsZXMKQEAgLTQ5Nyw3ICs1MDksNyBAQCBleHRlcm4g WExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVm ZmVyLAogCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKIAogLyogaW4gaGVhcGRlc2MuYywgc28g aXQgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGZyb250ZW5kL2JhY2tlbmQgY29kZSAqLwotZXh0ZXJu IHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29y LCB1aW50OCBmbGFncywKK2V4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9h bmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJCQkJICAgaW50 ICpucGxhbnMsIHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywKIAkJCQkJCQkJCQkJCSAgIE9mZnNl dE51bWJlciAqKmZyel9vZmZzZXRzLAogCQkJCQkJCQkJCQkJICAgaW50ICpucmVkaXJlY3RlZCwg T2Zmc2V0TnVtYmVyICoqcmVkaXJlY3RlZCwKLS0gCjIuNDMuMAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0002-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Disposition: attachment; filename="v11-0002-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdy91 RnJvbSA5NGRlNTgzZjBjNzc4NmVkNDlkMjc2ODUwNTVhMWUzYmQwY2VjYjYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDE1OjQ4OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMDIvMjBdIE1ha2UgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlIGluZGVwZW5kZW50 IG9mCiBMVlJlbFN0YXRlCgpGdXR1cmUgY29tbWl0cyB3aWxsIHVzZSB0aGlzIGZ1bmN0aW9uIGlu c2lkZSBvZiBwcnVuZWhlYXAuYyB3aGVyZSB3ZSBkbwpub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIExW UmVsU3RhdGUuIFdlIG9ubHkgbmVlZCBhIGZldyBwYXJhbWV0ZXJzIGZyb20KdGhlIExWUmVsU3Rh dGUsIHNvIGp1c3QgcGFzcyB0aG9zZSBpbiBleHBsaWNpdGx5LgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09M eGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgfCA0OCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMzEgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCmluZGV4IDk4MWQ5MzgwYTkyLi44YTg0YmRmZTBhOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDYzLDggKzQ2MywxMSBAQCBzdGF0aWMgdm9pZCBk ZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZz ZXROdW1iZXIgKgogCQkJCQkJICAgaW50IG51bV9vZmZzZXRzKTsKIHN0YXRpYyB2b2lkIGRlYWRf aXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNf Y2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwotc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2Fs bF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFu c2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsIGJvb2wgKmFsbF9mcm96ZW4pOworc3Rh dGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkgYm9vbCAq YWxsX2Zyb3plbiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBzdGF0aWMgdm9p ZCB1cGRhdGVfcmVsc3RhdHNfYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRp YyB2b2lkIHZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIHZvaWQgdXBk YXRlX3ZhY3V1bV9lcnJvcl9pbmZvKExWUmVsU3RhdGUgKnZhY3JlbCwKQEAgLTIwMDksOCArMjAx Miw5IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAKIAkJQXNzZXJ0KHBy ZXN1bHQubHBkZWFkX2l0ZW1zID09IDApOwogCi0JCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKHZhY3JlbCwgYnVmLAotCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmZGVidWdfYWxsX2Zy b3plbikpCisJCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYs CisJCQkJCQkJCQkgIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3pl biwKKwkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSkKIAkJCUFzc2Vy dChmYWxzZSk7CiAKIAkJQXNzZXJ0KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJv emVuKTsKQEAgLTI5MTIsOCArMjkxNiw4IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0 YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCSAqIGVtaXR0 ZWQuCiAJICovCiAJQXNzZXJ0KCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQlpZiAoaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbCwgYnVmZmVyLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlk LAotCQkJCQkJCQkgJmFsbF9mcm96ZW4pKQorCWlmIChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo dmFjcmVsLT5yZWwsIGJ1ZmZlciwgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJ CSAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgJnZhY3JlbC0+b2ZmbnVtKSkK IAl7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CiAKQEAgLTM1 OTYsMTAgKzM2MDAsMTggQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkK IH0KIAogLyoKLSAqIENoZWNrIGlmIGV2ZXJ5IHR1cGxlIGluIHRoZSBnaXZlbiBwYWdlIGlzIHZp c2libGUgdG8gYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZQotICogdHJhbnNhY3Rpb25zLiBBbHNvIHJl dHVybiB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIHdoaWNoIGlzIHRoZSBoaWdoZXN0Ci0gKiB4 bWluIGFtb25nc3QgdGhlIHZpc2libGUgdHVwbGVzLiAgU2V0ICphbGxfZnJvemVuIHRvIHRydWUg aWYgZXZlcnkgdHVwbGUKLSAqIG9uIHRoaXMgcGFnZSBpcyBmcm96ZW4uCisgKiBDaGVjayBpZiBl dmVyeSB0dXBsZSBpbiB0aGUgZ2l2ZW4gcGFnZSBpbiBidWYgaXMgdmlzaWJsZSB0byBhbGwgY3Vy cmVudCBhbmQKKyAqIGZ1dHVyZSB0cmFuc2FjdGlvbnMuCisgKgorICogT2xkZXN0WG1pbiBpcyB1 c2VkIHRvIGRldGVybWluZSB2aXNpYmlsaXR5LgorICoKKyAqIFNldHMgKmFsbF9mcm96ZW4gdG8g dHJ1ZSBpZiBldmVyeSB0dXBsZSBvbiB0aGlzIHBhZ2UgaXMgZnJvemVuLgorICoKKyAqIFNldHMg KnZpc2liaWxpdHlfY3V0b2ZmX3hpZCB0byB0aGUgaGlnaGVzdCB4bWluIGFtb25nc3QgdGhlIHZp c2libGUgdHVwbGVzLgorICogSXQgaXMgb25seSB2YWxpZCBpZiB0aGUgcGFnZSBpcyBhbGwtdmlz aWJsZS4KKyAqCisgKiAqbG9nZ2luZ19vZmZudW0gd2lsbCBoYXZlIHRoZSBPZmZzZXROdW1iZXIg b2YgdGhlIGN1cnJlbnQgdHVwbGUgYmVpbmcKKyAqIHByb2Nlc3NlZCBmb3IgdmFjdXVtJ3MgZXJy b3IgY2FsbGJhY2sgc3lzdGVtLgogICoKICAqIFRoaXMgaXMgYSBzdHJpcHBlZCBkb3duIHZlcnNp b24gb2YgbGF6eV9zY2FuX3BydW5lKCkuICBJZiB5b3UgY2hhbmdlCiAgKiBhbnl0aGluZyBoZXJl LCBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIHN0YXlzIGluIHN5bmMuICBOb3RlIHRoYXQgYW4K QEAgLTM2MDcsOSArMzYxOSwxMSBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFj cmVsKQogICogaW50cm9kdWNpbmcgbmV3IHNpZGUtZWZmZWN0cyBoZXJlLgogICovCiBzdGF0aWMg Ym9vbAotaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVy IGJ1ZiwKK2hlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYs CisJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIGJvb2wgKmFsbF9mcm96 ZW4sCiAJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJ IGJvb2wgKmFsbF9mcm96ZW4pCisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkK IHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCUJsb2NrTnVtYmVyIGJsb2Nr bm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOwpAQCAtMzYzMiw3ICszNjQ2LDcgQEAgaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJ ICogU2V0IHRoZSBvZmZzZXQgbnVtYmVyIHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgaXQgYWxvbmcg d2l0aCBhbnkKIAkJICogZXJyb3IgdGhhdCBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoaXMg dHVwbGUuCiAJCSAqLwotCQl2YWNyZWwtPm9mZm51bSA9IG9mZm51bTsKKwkJKmxvZ2dpbmdfb2Zm bnVtID0gb2ZmbnVtOwogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CiAK IAkJLyogVW51c2VkIG9yIHJlZGlyZWN0IGxpbmUgcG9pbnRlcnMgYXJlIG9mIG5vIGludGVyZXN0 ICovCkBAIC0zNjU2LDkgKzM2NzAsOSBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxT dGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCiAJCXR1cGxlLnRfZGF0YSA9IChIZWFwVHVwbGVI ZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAJCXR1cGxlLnRfbGVuID0gSXRlbUlk R2V0TGVuZ3RoKGl0ZW1pZCk7Ci0JCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlk KHZhY3JlbC0+cmVsKTsKKwkJdHVwbGUudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVs KTsKIAotCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIHZhY3JlbC0+ Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgm dHVwbGUsIE9sZGVzdFhtaW4sCiAJCQkJCQkJCQkJIGJ1ZikpCiAJCXsKIAkJCWNhc2UgSEVBUFRV UExFX0xJVkU6CkBAIC0zNjc5LDcgKzM2OTMsNyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo TFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkgKi8KIAkJCQkJeG1pbiA9IEhl YXBUdXBsZUhlYWRlckdldFhtaW4odHVwbGUudF9kYXRhKTsKIAkJCQkJaWYgKCFUcmFuc2FjdGlv bklkUHJlY2VkZXMoeG1pbiwKLQkJCQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFht aW4pKQorCQkJCQkJCQkJCQkgICBPbGRlc3RYbWluKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zpc2li bGUgPSBmYWxzZTsKIAkJCQkJCSphbGxfZnJvemVuID0gZmFsc2U7CkBAIC0zNzE0LDcgKzM3Mjgs NyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIg YnVmLAogCX0JCQkJCQkJLyogc2NhbiBhbG9uZyBwYWdlICovCiAKIAkvKiBDbGVhciB0aGUgb2Zm c2V0IGluZm9ybWF0aW9uIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzZWQgdGhlIGdpdmVuIHBhZ2UuICov Ci0JdmFjcmVsLT5vZmZudW0gPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCSpsb2dnaW5nX29mZm51 bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAKIAlyZXR1cm4gYWxsX3Zpc2libGU7CiB9Ci0tIAoy LjQzLjAKCg== --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0005-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Disposition: attachment; filename="v11-0005-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdyk4 RnJvbSA2ZWQyMTFhOTBhMmUzYjM4NGJhMDZkODVhZTE4M2Y1MTNjYTNmZmMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjA0OjAzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMDUvMjBdIENvbWJpbmUgbGF6eV9zY2FuX3BydW5lIFZNIGNvcnJ1cHRpb24gY2Fz ZXMKCmxhenlfc2Nhbl9wcnVuZSgpIHVwZGF0ZXMgdGhlIHZpc2liaWxpdHkgbWFwIGFmdGVyIHBo YXNlIEkgb2YgaGVhcAp2YWN1dW1pbmcuIEl0IGFsc28gY2hlY2tzIGFuZCBmaXhlcyBjb3JydXB0 aW9uIGluIHRoZSBWTS4gVGhlIGNvcnJ1cHRpb24KY2FzZXMgd2hlcmUgbWl4ZWQgaW4gd2l0aCB0 aGUgbm9ybWFsIHZpc2liaWxpdHkgbWFwIHVwZGF0ZSBjYXNlcy4KCkNhcmVmdWwgc3R1ZHkgb2Yg dGhlIG9yZGVyaW5nIG9mIHRoZSBjdXJyZW50IGxvZ2ljIHJldmVhbHMgdGhhdCB0aGUKY29ycnVw dGlvbiBjYXNlcyBjYW4gYmUgcmVvcmRlcmVkIGFuZCBleHRyYWN0ZWQgaW50byBhIHNlcGFyYXRl CmZ1bmN0aW9uLiBUaGlzIHNob3VsZCByZXN1bHQgaW4gbm8gYWRkaXRpb25hbCBvdmVyaGVhZCB3 aGVuIGNvbXBhcmVkIHRvCnByZXZpb3VzIGV4ZWN1dGlvbi4KClRoaXMgcmVvcmRlcmluZyBtYWtl cyBpdCBjbGVhciB3aGljaCBjYXNlcyBhcmUgYWJvdXQgY29ycnVwdGlvbiBhbmQKd2hpY2ggY2Fz ZXMgYXJlIG5vcm1hbCBWTSB1cGRhdGVzLiBTZXBhcmF0aW5nIHRoZW0gYWxzbyBtYWtlcyBpdApw b3NzaWJsZSB0byBjb21iaW5lIHRoZSBub3JtYWwgY2FzZXMgaW4gYSBmdXR1cmUgY29tbWl0LiBU aGlzIHdpbGwgbWFrZQp0aGUgbG9naWMgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIGFsbG93IGZv ciBmdXJ0aGVyIHNlcGFyYXRpb24gb2YgdGhlCmxvZ2ljIHRvIGFsbG93IHVwZGF0aW5nIHRoZSBW TSBpbiB0aGUgc2FtZSByZWNvcmQgYXMgcHJ1bmluZyBhbmQKZnJlZXppbmcgaW4gcGhhc2UgSS4K LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAxMjYgKysrKysrKysr KysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgNDcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGExY2Rh YWViYjU3Li5lOWI0ZTkyNGQyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpA QCAtNDMwLDYgKzQzMCwxMiBAQCBzdGF0aWMgdm9pZCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxv Y2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZpcyk7CiBzdGF0aWMgYm9vbCBs YXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJ CQkJCQkJICAgQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQkJICAgYm9vbCBz aGFyZWxvY2ssIEJ1ZmZlciB2bWJ1ZmZlcik7CitzdGF0aWMgYm9vbCBpZGVudGlmeV9hbmRfZml4 X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJICAgQmxvY2tOdW1i ZXIgaGVhcF9ibGssCisJCQkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBf cGFnZSwKKwkJCQkJCQkJCQkgICBib29sIGhlYXBfYmxrX2tub3duX2F2LAorCQkJCQkJCQkJCSAg IGludDY0IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyKTsKIHN0 YXRpYyBpbnQJbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwK IAkJCQkJCQlCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCUJ1ZmZlciB2bWJ1 ZmZlciwgYm9vbCBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCkBAIC0xOTM0LDYgKzE5NDAs NzIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBi dWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIFdoZW4g dXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwIGFmdGVyIHBoYXNlIEkgaGVhcCB2YWN1dW1pbmcs IHdlIHRha2UgdGhlCisgKiBvcHBvcnR1bml0eSB0byBpZGVudGlmeSBhbmQgZml4IGFueSBWTSBj b3JydXB0aW9uLgorICoKKyAqIGhlYXBfYmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0 YXR1cyBvZiB0aGUgaGVhcCBwYWdlIGNvbGxlY3RlZAorICogd2hpbGUgZmluZGluZyB0aGUgbmV4 dCB1bnNraXBwYWJsZSBibG9jayBpbiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKS4KKyAqLwor c3RhdGljIGJvb2wKK2lkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxh dGlvbiwKKwkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywKKwkJCQkJCQkgICBCdWZmZXIg aGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAorCQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25v d25fYXYsCisJCQkJCQkJICAgaW50NjQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkgICBCdWZmZXIg dm1idWZmZXIpCit7CisJLyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxp dHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0 IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICog Y2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3 ZSBtdXN0IHJlY2hlY2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRo YXQgdGhlIFZNIGlzIGNvcnJ1cHQuCisJICovCisJaWYgKGhlYXBfYmxrX2tub3duX2F2ICYmICFQ YWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVz KHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSAhPSAwKQorCXsKKwkJZXJlcG9ydChXQVJO SU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2co InBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlz IHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCXZpc2liaWxpdHltYXBfY2xlYXIo cmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIEl0J3MgcG9zc2libGUgZm9y IHRoZSB2YWx1ZSByZXR1cm5lZCBieQorCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0 aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKKwkgKiB3cm9uZyBmb3IgdXMg dG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQor CSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNh ZmUgeG1pbiB2YWx1ZQorCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5v blJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcworCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRp bWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKKwkgKiBzbyBp ZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVz IHRoYXQgd2UKKwkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVh bGx5IGFyZSwgYW5kIHRoZQorCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KKwkg KgorCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRo IFBEX0FMTF9WSVNJQkxFIHNldCwKKwkgKiBob3dldmVyLgorCSAqLworCWlmIChubHBkZWFkX2l0 ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCisJeworCQllcmVwb3J0KFdB Uk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJIGVycm1z ZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxl IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFw X3BhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFw X2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQor CisKIC8qIHFzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwogc3Rh dGljIGludAogY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQpA QCAtMjA4MCw5ICsyMTUyLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJLyoKIAkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5m b3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRf YmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2 YXJpYWJsZXMKKwkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3Ig YW55IFZNIGNvcnJ1cHRpb24uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKwlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3Jy dXB0aW9uKHZhY3JlbC0+cmVsLCBibGtubywgYnVmLCBwYWdlLAorCQkJCQkJCQkJICAgYWxsX3Zp c2libGVfYWNjb3JkaW5nX3RvX3ZtLCBwcmVzdWx0LmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQor CXsKKwkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlv biBpbiBpdCAqLworCX0KKwllbHNlIGlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYm IHByZXN1bHQuYWxsX3Zpc2libGUpCiAJewogCQl1aW50OAkJb2xkX3ZtYml0czsKIAkJdWludDgJ CWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKQEAgLTIxMzQsNTEgKzIyMTEsNiBA QCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl9CiAJfQogCi0JLyoKLQkg KiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2 ZXIgYmUgc2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwg aXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3 aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQu Ci0JICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+ cmVsLCBibGtubywgJnZtYnVmZmVyKSAhPSAwKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgaXMg bm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiBy ZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkp OwotCi0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZlciwK LQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KLQotCS8qCi0JICogSXQncyBw b3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3Zh YmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAqIHdy b25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRv IGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4g VGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0JICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQg R2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0aXZl IGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxs LAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0 IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9u ZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCi0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBj b3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24g YSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0JZWxz ZSBpZiAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2libGUocGFnZSkp Ci0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJV UFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFy a2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCXZh Y3JlbC0+cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsK LQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5y ZWwsIGJsa25vLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwot CX0KLQogCS8qCiAJICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3plbiBidXQg bm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawogCSAqIGl0IGFzIGFsbC1mcm96ZW4uICBOb3Rl IHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzCi0tIAoyLjQz LjAKCg== --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0004-Use-xl_heap_prune-record-for-setting-empty-pages.patch" Content-Disposition: attachment; filename="v11-0004-Use-xl_heap_prune-record-for-setting-empty-pages.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdyh3 RnJvbSAzNzJiYThjYjJhMGYxYjIzNGRiMWIyZGNhOTI5YWUwMjVkNDNhMDM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMDQvMjBdIFVzZSB4bF9oZWFwX3BydW5lIHJlY29yZCBmb3Igc2V0dGluZyBlbXB0 eSBwYWdlcwogYWxsLXZpc2libGUKCkFzIHBhcnQgb2YgYSBwcm9qZWN0IHRvIGVsaW1pbmF0ZSB4 bF9oZWFwX3Zpc2libGUgcmVjb3JkcywgZWxpbWluYXRlCnRoZWlyIHVzYWdlIGluIHBoYXNlIEkg dmFjdXVtIG9mIGVtcHR5IHBhZ2VzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jICB8IDE0ICsrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YyB8IDU3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaCAgICAgICAgICB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygr KSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBm MGIzM2QxYjY5Ni4uMzczOTg2YjIwNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CkBAIC04MzYsNiArODM2LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRl c3RfeGlkX3JlbW92ZWQ7CiAKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24s IGJ1ZmZlciwKKwkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsIDAs IGZhbHNlLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIHRydWUsIHJlYXNv biwKQEAgLTIwNTUsNiArMjA1Niw5IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZy ZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIGNhc2UsIHZtYnVmZmVyIHNob3VsZCBhbHJl YWR5IGhhdmUgYmVlbiB1cGRhdGVkIGFuZCBtYXJrZWQgZGlydHkgYW5kIHNob3VsZAogICogc3Rp bGwgYmUgcGlubmVkIGFuZCBsb2NrZWQuCiAgKgorICogZm9yY2VfaGVhcF9mcGkgaW5kaWNhdGVz IHRoYXQgYSBmdWxsIHBhZ2UgaW1hZ2Ugb2YgdGhlIGhlYXAgYmxvY2sgc2hvdWxkIGJlCisgKiBm b3JjZWQuCisgKgogICogc2V0X3BkX2FsbF92aXMgaW5kaWNhdGVzIHRoYXQgd2Ugc2V0IFBEX0FM TF9WSVNJQkxFIGFuZCB0aHVzIHNob3VsZCB1cGRhdGUKICAqIHRoZSBwYWdlIExTTiB3aGVuIGNo ZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBlbmFibGVkIGV2ZW4gaWYgd2UgZGlkIG5vdAogICog cHJ1bmUgb3IgZnJlZXplIHR1cGxlcyBvbiB0aGUgcGFnZS4KQEAgLTIwNjUsNiArMjA2OSw3IEBA IGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxl cywKICAqLwogdm9pZAogbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCSAgYm9vbCBmb3JjZV9oZWFwX2ZwaSwKIAkJCQkJCSAg QnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJICB1aW50OCB2bWZsYWdzLAogCQkJCQkJICBib29sIHNl dF9wZF9hbGxfdmlzLApAQCAtMjA5NSwxMyArMjEwMCwxNiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAJcmVnYnVmX2ZsYWdz ID0gUkVHQlVGX1NUQU5EQVJEOwogCisJaWYgKGZvcmNlX2hlYXBfZnBpKQorCQlyZWdidWZfZmxh Z3MgfD0gUkVHQlVGX0ZPUkNFX0lNQUdFOworCiAJLyoKIAkgKiBXZSBjYW4gYXZvaWQgYW4gRlBJ IGlmIHRoZSBvbmx5IG1vZGlmaWNhdGlvbiB3ZSBhcmUgbWFraW5nIHRvIHRoZSBoZWFwCiAJICog cGFnZSBpcyB0byBzZXQgUERfQUxMX1ZJU0lCTEUgYW5kIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRz IGFyZSBkaXNhYmxlZC4KIAkgKi8KLQlpZiAoIWRvX3BydW5lICYmCi0JCW5mcm96ZW4gPT0gMCAm JgotCQkoIXNldF9wZF9hbGxfdmlzIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCWVsc2Ug aWYgKCFkb19wcnVuZSAmJgorCQkJIG5mcm96ZW4gPT0gMCAmJgorCQkJICghc2V0X3BkX2FsbF92 aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCiAJCXJlZ2J1Zl9mbGFncyB8PSBSRUdCVUZf Tk9fSU1BR0U7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDUx MDY3MjY0MDA0Li5hMWNkYWFlYmI1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwpAQCAtMTg3NywzMyArMTg3Nyw0OSBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3Rh dGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCSAqLwogCQlpZiAo IVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKKwkJCXVpbnQ4CQluZXdfdm1iaXRzID0gVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwor CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICov CisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlT VEFSVF9DUklUX1NFQ1RJT04oKTsKIAotCQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdy aXRpbmcgYSBXQUwgcmVjb3JkICovCisJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKIAkJCU1h cmtCdWZmZXJEaXJ0eShidWYpOwogCi0JCQkvKgotCQkJICogSXQncyBwb3NzaWJsZSB0aGF0IGFu b3RoZXIgYmFja2VuZCBoYXMgZXh0ZW5kZWQgdGhlIGhlYXAsCi0JCQkgKiBpbml0aWFsaXplZCB0 aGUgcGFnZSwgYW5kIHRoZW4gZmFpbGVkIHRvIFdBTC1sb2cgdGhlIHBhZ2UgZHVlCi0JCQkgKiB0 byBhbiBFUlJPUi4gIFNpbmNlIGhlYXAgZXh0ZW5zaW9uIGlzIG5vdCBXQUwtbG9nZ2VkLCByZWNv dmVyeQotCQkJICogbWlnaHQgdHJ5IHRvIHJlcGxheSBvdXIgcmVjb3JkIHNldHRpbmcgdGhlIHBh Z2UgYWxsLXZpc2libGUgYW5kCi0JCQkgKiBmaW5kIHRoYXQgdGhlIHBhZ2UgaXNuJ3QgaW5pdGlh bGl6ZWQsIHdoaWNoIHdpbGwgY2F1c2UgYSBQQU5JQy4KLQkJCSAqIFRvIHByZXZlbnQgdGhhdCwg Y2hlY2sgd2hldGhlciB0aGUgcGFnZSBoYXMgYmVlbiBwcmV2aW91c2x5Ci0JCQkgKiBXQUwtbG9n Z2VkLCBhbmQgaWYgbm90LCBkbyB0aGF0IG5vdy4KLQkJCSAqLwotCQkJaWYgKFJlbGF0aW9uTmVl ZHNXQUwodmFjcmVsLT5yZWwpICYmCi0JCQkJUGFnZUdldExTTihwYWdlKSA9PSBJbnZhbGlkWExv Z1JlY1B0cikKLQkJCQlsb2dfbmV3cGFnZV9idWZmZXIoYnVmLCB0cnVlKTsKKwkJCXZpc2liaWxp dHltYXBfc2V0X3ZtYml0cyh2YWNyZWwtPnJlbCwgYmxrbm8sCisJCQkJCQkJCQkgdm1idWZmZXIs IG5ld192bWJpdHMpOworCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJ CQl7CisJCQkJLyoKKwkJCQkgKiBJdCdzIHBvc3NpYmxlIHRoYXQgYW5vdGhlciBiYWNrZW5kIGhh cyBleHRlbmRlZCB0aGUgaGVhcCwKKwkJCQkgKiBpbml0aWFsaXplZCB0aGUgcGFnZSwgYW5kIHRo ZW4gZmFpbGVkIHRvIFdBTC1sb2cgdGhlIHBhZ2UKKwkJCQkgKiBkdWUgdG8gYW4gRVJST1IuICBT aW5jZSBoZWFwIGV4dGVuc2lvbiBpcyBub3QgV0FMLWxvZ2dlZCwKKwkJCQkgKiByZWNvdmVyeSBt aWdodCB0cnkgdG8gcmVwbGF5IG91ciByZWNvcmQgc2V0dGluZyB0aGUgcGFnZQorCQkJCSAqIGFs bC12aXNpYmxlIGFuZCBmaW5kIHRoYXQgdGhlIHBhZ2UgaXNuJ3QgaW5pdGlhbGl6ZWQsIHdoaWNo CisJCQkJICogd2lsbCBjYXVzZSBhIFBBTklDLiBUbyBwcmV2ZW50IHRoYXQsIGlmIHRoZSBwYWdl IGhhc24ndAorCQkJCSAqIGJlZW4gcHJldmlvdXNseSBXQUwtbG9nZ2VkLCBmb3JjZSBhIGhlYXAg RlBJLgorCQkJCSAqLworCQkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUodmFjcmVsLT5yZWws IGJ1ZiwKKwkJCQkJCQkJCQkgIFBhZ2VHZXRMU04ocGFnZSkgPT0gSW52YWxpZFhMb2dSZWNQdHIs CisJCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgIG5ld192bWJpdHMsCisJCQkJCQkJ CQkJICB0cnVlLAorCQkJCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJ ICBmYWxzZSwgUFJVTkVfVkFDVVVNX1NDQU4sCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJ CQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAw KTsKKwkJCX0KIAotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFw X3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRy LAotCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU4pOwogCQkJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBDb3VudCB0aGUgbmV3bHkgYWxs LWZyb3plbiBwYWdlcyBmb3IgbG9nZ2luZyAqLworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVG RkVSX0xPQ0tfVU5MT0NLKTsKKworCQkJLyogQ291bnQgdGhlIG5ld2x5IGFsbC1mcm96ZW4gcGFn ZXMgZm9yIGxvZ2dpbmcuICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwogCQl9CkBAIC0yOTI1LDYg KzI5NDEsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9j a051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNy ZWwtPnJlbCkpCiAJewogCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVsLCBi dWZmZXIsCisJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCSAgdm1idWZmZXIsCiAJCQkJCQkJCSAg dm1mbGFncywKIAkJCQkJCQkJICBzZXRfcGRfYWxsX3ZpcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA4 YjQ3Mjk1ZWZhMi4uZTcxMjlhNjQ0YTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM5NCw2ICszOTQs NyBAQCBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBi b29sIGxwX3RydW5jYXRlX29ubHksCiAJCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwg aW50IG51bnVzZWQpOwogZXh0ZXJuIHZvaWQgaGVhcF9nZXRfcm9vdF90dXBsZXMoUGFnZSBwYWdl LCBPZmZzZXROdW1iZXIgKnJvb3Rfb2Zmc2V0cyk7CiBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQkJ ICBib29sIGZvcmNlX2hlYXBfZnBpLAogCQkJCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJ CQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJCQkJCQkgIGJvb2wgdm1fbW9kaWZpZWRfaGVhcF9w YWdlLAotLSAKMi40My4wCgo= --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0008-Keep-all_frozen-updated-too-in-heap_page_prune_a.patch" Content-Disposition: attachment; filename="v11-0008-Keep-all_frozen-updated-too-in-heap_page_prune_a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdyu7 RnJvbSA3NmM0NWZmNzYyMmY1Yzc4NTllYTA5ZWI2NWMxYzU1MmFiNmIzZWMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIzIEp1bCAyMDI1IDE2OjAxOjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMDgvMjBdIEtlZXAgYWxsX2Zyb3plbiB1cGRhdGVkIHRvbyBpbgogaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUKCldlIHByZXZpb3VzbHkgcmVsaWVkIG9uIG9ubHkgdXNpbmcgYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4gdG9nZXRoZXIKYnV0IGl0J3MgYmVzdCB0byBrZWVwIHRo ZW0gYm90aCB1cGRhdGVkLgoKRnV0dXJlIGNvbW1pdHMgd2lsbCBzZXBhcmF0ZSB1c2FnZSBvZiB0 aGVzZSBmaWVsZHMsIHNvIGl0IGlzIGJlc3Qgbm90IHRvCnJlbHkgb24gYWxsX3Zpc2libGUgZm9y IGFsbF9mcm96ZW4ncyB2YWxpZGl0eS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyB8IDE1ICsrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9u cygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4 IDU0YWYzMjk2YjkxLi5iYmQ4M2U0ZmNjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMKQEAgLTE0MywxMCArMTQzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiB3aGV0aGVyIHRvIGZy ZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KIAkg KiB2YWx1ZXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBM UF9ERUFEIGl0ZW1zIGF0CiAJICogdGhlIGVuZC4KLQkgKgotCSAqIGFsbF9mcm96ZW4gc2hvdWxk IG9ubHkgYmUgY29uc2lkZXJlZCB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyBhbHNvIHNldDsKLQkg KiB3ZSBkb24ndCBib3RoZXIgdG8gY2xlYXIgdGhlIGFsbF9mcm96ZW4gZmxhZyBldmVyeSB0aW1l IHdlIGNsZWFyIHRoZQotCSAqIGFsbF92aXNpYmxlIGZsYWcuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTgzMCw2ICs4MjYsNyBAQCBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJICov CiAJfQogCisJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJs ZSk7CiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2Fs ICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKQEAgLTE0NzQsNyArMTQ3MSw3IEBAIGhlYXBf cHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpw cnN0YXRlLCBPZmZzZXROdW1iCiAKIAkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0 ZWQoaHR1cCkpCiAJCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJ CQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAkJ CQkJYnJlYWs7CiAJCQkJfQogCkBAIC0xNDk2LDcgKzE0OTMsNyBAQCBoZWFwX3BydW5lX3JlY29y ZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYgogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKIAkJCQlpZiAoIVRyYW5zYWN0 aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluKSkKIAkJCQl7 Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQkJCXByc3RhdGUtPmFsbF92 aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCQkJCQlicmVhazsKIAkJCQl9 CiAKQEAgLTE1MDksNyArMTUwNiw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9u b3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAKIAkJY2Fz ZSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRDoKIAkJCXByc3RhdGUtPnJlY2VudGx5X2RlYWRfdHVw bGVzKys7Ci0JCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0ZS0+YWxs X3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBU aGlzIHR1cGxlIHdpbGwgc29vbiBiZWNvbWUgREVBRC4gIFVwZGF0ZSB0aGUgaGludCBmaWVsZCBz bwpAQCAtMTUyOCw3ICsxNTI1LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25v cm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCSAqIGFz c3VtcHRpb24gaXMgYSBiaXQgc2hha3ksIGJ1dCBpdCBpcyB3aGF0IGFjcXVpcmVfc2FtcGxlX3Jv d3MoKQogCQkJICogZG9lcywgc28gYmUgY29uc2lzdGVudC4KIAkJCSAqLwotCQkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJCQkvKgogCQkJICogSWYgd2Ugd2FudGVkIHRvIG9wdGlt aXplIGZvciBhYm9ydHMsIHdlIG1pZ2h0IGNvbnNpZGVyIG1hcmtpbmcKQEAgLTE1NDYsNyArMTU0 Myw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQ cnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkgKiB3aWxsIGNvbW1pdCBhbmQgdXBk YXRlIHRoZSBjb3VudGVycyBhZnRlciB3ZSByZXBvcnQuCiAJCQkgKi8KIAkJCXByc3RhdGUtPmxp dmVfdHVwbGVzKys7Ci0JCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0 ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJ CQkgKiBUaGlzIHR1cGxlIG1heSBzb29uIGJlY29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZp ZWxkIHNvIHRoYXQKLS0gCjIuNDMuMAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0007-Find-and-fix-VM-corruption-in-heap_page_prune_an.patch" Content-Disposition: attachment; filename="v11-0007-Find-and-fix-VM-corruption-in-heap_page_prune_an.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdyq6 RnJvbSAzNDE4OGRhZGU0MzcwNmQ3NjQzOTJlZjY4YWY4MmMxZTZkZWI2NjNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjQ1OjU5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMDcvMjBdIEZpbmQgYW5kIGZpeCBWTSBjb3JydXB0aW9uIGluCiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZQoKRnV0dXJlIGNvbW1pdHMgd2lsbCB1cGRhdGUgdGhlIFZNIGluIHRo ZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gYW5kIFdBTApyZWNvcmQgYXMgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEZvciBlYXNlIG9mIHJldmlldywgdGhpcyBjb21taXQgbWFrZXMKb25lIHN0ZXAgdG93 YXJkIGRvaW5nIHRoaXMuIEl0IG1vdmVzIHRoZSBWTSBjb3JydXB0aW9uIGhhbmRsaW5nIGNhc2Ug dG8KaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4KClRoaXMgY29tbWl0IGlzIG9ubHkgcmVh bGx5IG1lYW50IGZvciByZXZpZXcsIGFzIGl0IGFkZHMgYSBtZW1iZXIgdG8KUHJ1bmVGcmVlemVS ZXN1bHQgKHZtX2NvcnJ1cHRpb24pIHRoYXQgaXMgcmVtb3ZlZCBpbiBsYXRlciBjb21taXRzLgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDkzICsrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 IDg0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICB8ICA0ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCA3 OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDM3Mzk4 NmIyMDRhLi41NGFmMzI5NmI5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAg LTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKLSNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1h cC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2lu c3RydW1lbnQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTE3Nyw2ICsxNzcsMTMgQEAg c3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5l U3RhdGUgKnByc3RhdGUsIE9mZnNldE4KIAogc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJl Y3RzKFBhZ2UgcGFnZSk7CiAKK3N0YXRpYyBib29sIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVw dGlvbihSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2Js aywKKwkJCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAorCQkJ CQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCisJCQkJCQkJCQkJICAgaW50NjQgbmxw ZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpOworCiAKIC8qCiAgKiBP cHRpb25hbGx5IHBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBpbiB0aGUgc3BlY2lmaWVk IHBhZ2UuCkBAIC0yNjEsNyArMjY4LDkgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJCSAqIG5vdCB0aGUgcmVsYXRpb24gaGFzIGluZGV4 ZXMsIHNpbmNlIHdlIGNhbm5vdCBzYWZlbHkgZGV0ZXJtaW5lCiAJCQkgKiB0aGF0IGR1cmluZyBv bi1hY2Nlc3MgcHJ1bmluZyB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgogCQkJICov Ci0JCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCB2aXN0ZXN0 LCAwLAorCQkJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwgZmFs c2UsCisJCQkJCQkJCQkgICBJbnZhbGlkQnVmZmVyLAorCQkJCQkJCQkJICAgdmlzdGVzdCwgMCwK IAkJCQkJCQkJCSAgIE5VTEwsICZwcmVzdWx0LCBQUlVORV9PTl9BQ0NFU1MsICZkdW1teV9vZmZf bG9jLCBOVUxMLCBOVUxMKTsKIAogCQkJLyoKQEAgLTI5NCw2ICszMDMsNzAgQEAgaGVhcF9wYWdl X3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAl9CiB9CiAKKy8q CisgKiBXaGVuIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwaGFzZSBJIGhlYXAg dmFjdXVtaW5nLCB3ZSB0YWtlIHRoZQorICogb3Bwb3J0dW5pdHkgdG8gaWRlbnRpZnkgYW5kIGZp eCBhbnkgVk0gY29ycnVwdGlvbi4KKyAqCisgKiBoZWFwX2Jsa19rbm93bl9hdiBpcyB0aGUgdmlz aWJpbGl0eSBzdGF0dXMgb2YgdGhlIGhlYXAgcGFnZSBjb2xsZWN0ZWQKKyAqIHdoaWxlIGZpbmRp bmcgdGhlIG5leHQgdW5za2lwcGFibGUgYmxvY2sgaW4gaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2Nr KCkuCisgKi8KK3N0YXRpYyBib29sCitpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVs YXRpb24gcmVsYXRpb24sCisJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCQkJ ICAgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKKwkJCQkJCQkgICBib29sIGhl YXBfYmxrX2tub3duX2F2LAorCQkJCQkJCSAgIGludDY0IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJ ICAgQnVmZmVyIHZtYnVmZmVyKQoreworCS8qCisJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRo ZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKKwkgKiBwYWdl LWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0 IGdvdAorCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNh bGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCisJICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29u Y2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqLworCWlmIChoZWFwX2Jsa19rbm93 bl9hdiAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCisJCXZpc2liaWxpdHltYXBf Z2V0X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKKwl7CisJCWVy ZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJ CQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkg bWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBv c3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFi bGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3Jv bmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8g ZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBU aGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBH ZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUg YW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGws CisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQg dGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25l IHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNv cnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBh IHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAo bmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJ ZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAor CQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBh bGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZp c2libGUoaGVhcF9wYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmZmVyKTsKKwkJdmlz aWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KIAogLyoKICAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90 ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUKQEAgLTMxNCw2ICszODcsMTAgQEAgaGVhcF9w YWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKICAqIEhFQVBf UFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qgc2V0LCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25s eSBjYWxsZXJzCiAgKiB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAq CisgKiBibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJs b2NrIGFzIG9mIHRoZSBsYXN0IGNhbGwKKyAqIHRvIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9j aygpLiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIHRoYXQgbWF5IGFscmVhZHkKKyAqIGNvbnRhaW4g dGhlIHJlcXVpcmVkIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5IG1hcC4KKyAqCiAgKiB2aXN0ZXN0 IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5U TFlfREVBRAogICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLgogICoKQEAgLTM0 OSw2ICs0MjYsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyKQogICovCiB2b2lkCiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAor CQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCiAJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZz ICpjdXRvZmZzLApAQCAtODk3LDYgKzk3NiwxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlwcmVzdWx0LT5scGRlYWRfaXRl bXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMg YXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAKKwkvKgorCSAqIENsZWFyIGFueSBWTSBj b3JydXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsCisJ ICogc2VjdGlvbi4KKwkgKi8KKwlwcmVzdWx0LT52bV9jb3JydXB0aW9uID0gZmFsc2U7CisJaWYg KG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNKQorCQlwcmVzdWx0LT52bV9jb3Jy dXB0aW9uID0gaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAorCQkJCQkJ CQkJCQkJCQkJCWJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkJCQkJCQlibGtfa25v d25fYXYsCisJCQkJCQkJCQkJCQkJCQkJcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKTsK IAlpZiAocHJzdGF0ZS5mcmVlemUpCiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMWZlYmI1MjRkNDEuLjU3NGU0MTVi MGUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00MzAsMTIgKzQzMCw2 IEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2 YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxhenlfc2Nhbl9uZXdfb3Jf ZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQkgICBCbG9ja051 bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNoYXJlbG9jaywgQnVmZmVy IHZtYnVmZmVyKTsKLXN0YXRpYyBib29sIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihS ZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywKLQkJ CQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCQkJ CSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCi0JCQkJCQkJCQkJICAgaW50NjQgbmxwZGVhZF9p dGVtcywKLQkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpOwogc3RhdGljIGludAlsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCUJsb2NrTnVt YmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZtYnVmZmVyLCBib29sIGFsbF92 aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5NDAsNzIgKzE5MzQsNiBAQCBsYXp5X3NjYW5f bmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCi0vKgotICogV2hlbiB1cGRhdGluZyB0aGUgdmlz aWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWluZywgd2UgdGFrZSB0aGUKLSAq IG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZNIGNvcnJ1cHRpb24uCi0gKgot ICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFw IHBhZ2UgY29sbGVjdGVkCi0gKiB3aGlsZSBmaW5kaW5nIHRoZSBuZXh0IHVuc2tpcHBhYmxlIGJs b2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgotICovCi1zdGF0aWMgYm9vbAotaWRl bnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCSAg IEJsb2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCi0JCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKLQkJCQkJCQkg ICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlcikKLXsKLQkv KgotCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3Vs ZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0JICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dl dmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKLQkgKiBjbGVhcmVkIGFmdGVyIGhl YXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawot CSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29y cnVwdC4KLQkgKi8KLQlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUo aGVhcF9wYWdlKSAmJgotCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBf YmxrLCAmdm1idWZmZXIpICE9IDApCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFy a2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9u IFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSwgaGVhcF9ibGspKSk7Ci0KLQkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9i bGssIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JCXJldHVy biB0cnVlOwotCX0KLQotCS8qCi0JICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVy bmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUg YmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRo YXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQ RF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0J ICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNh Y3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZh bHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNv bnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRo aW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhl Ci0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hv dWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUg c2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0JaWYgKG5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJ c0FsbFZpc2libGUoaGVhcF9wYWdlKSkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5p bmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIl c1wiIHBhZ2UgJXUiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBo ZWFwX2JsaykpKTsKLQotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFnZSk7Ci0JCU1hcmtC dWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIocmVsYXRpb24s IGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwot CQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLQogLyogcXNvcnQgY29t cGFyYXRvciBmb3Igc29ydGluZyBPZmZzZXROdW1iZXJzICovCiBzdGF0aWMgaW50CiBjbXBPZmZz ZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCkBAIC0yMDYzLDExICsxOTkx LDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogdHVwbGVzLiBQ cnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJ ICogYWxsLXZpc2libGUuCiAJICovCi0JcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9G UkVFWkU7CisJcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgfCBIRUFQX1BB R0VfUFJVTkVfVVBEQVRFX1ZNOwogCWlmICh2YWNyZWwtPm5pbmRleGVzID09IDApCiAJCXBydW5l X29wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKIAotCWhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwgYnVmLCB2YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlv bnMsCisJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsLCBidWYsCisJCQkJCQkJICAgYWxs X3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAorCQkJCQkJCSAgIHZtYnVmZmVyLAorCQkJCQkJCSAg IHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywKIAkJCQkJCQkgICAmdmFjcmVsLT5jdXRv ZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4sCiAJCQkJCQkJICAgJnZhY3JlbC0+b2Zm bnVtLAogCQkJCQkJCSAgICZ2YWNyZWwtPk5ld1JlbGZyb3plblhpZCwgJnZhY3JlbC0+TmV3UmVs bWluTXhpZCk7CkBAIC0yMTUyLDEwICsyMDgzLDkgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3Rh dGUgKnZhY3JlbCwKIAkvKgogCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBi YXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKIAkgKiBvZiBsYXN0IGhlYXBfdmFj X3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBh bGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3IgYW55IFZNIGNvcnJ1cHRp b24uCisJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMuCiAJICovCi0JaWYgKGlkZW50aWZ5X2FuZF9m aXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwgcGFnZSwKLQkJCQkJCQkJ CSAgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwgcHJlc3VsdC5scGRlYWRfaXRlbXMsIHZt YnVmZmVyKSkKKwlpZiAocHJlc3VsdC52bV9jb3JydXB0aW9uKQogCXsKIAkJLyogRG9uJ3QgdXBk YXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAqLwogCX0KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaAppbmRleCBlNzEyOWE2NDRhMS4uMGM3ZWI1ZTQ2ZjQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKQEAgLTQyLDYgKzQyLDcgQEAKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplICovCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNF RF9OT1cJCSgxIDw8IDApCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUJCQkJKDEgPDwg MSkKKyNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTQkJCSgxIDw8IDIpCiAKIHR5cGVk ZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1bGtJbnNlcnRTdGF0ZTsKIHN0cnVjdCBU dXBsZVRhYmxlU2xvdDsKQEAgLTI0Nyw2ICsyNDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZy ZWV6ZVJlc3VsdAogCWJvb2wJCWFsbF92aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96ZW47CiAJVHJh bnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOworCWJvb2wJCXZtX2NvcnJ1cHRpb247CiAK IAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVu c2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBAIC0zODAsNiArMzgyLDggQEAgZXh0ZXJuIFRyYW5zYWN0 aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIHN0cnVjdCBHbG9i YWxWaXNTdGF0ZTsKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkJCQkgICBib29s IGJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCQkJCSAg IHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCSAgIGludCBvcHRpb25z LAogCQkJCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCi0tIAoyLjQzLjAK Cg== --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0006-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Disposition: attachment; filename="v11-0006-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdyo5 RnJvbSA4NzkxZjY5MzgwYzRiMzBjODVhNTkwYmY2OTc0NDBlZmEwNjRhYzdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjM1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMDYvMjBdIENvbWJpbmUgdmFjdXVtIHBoYXNlIEkgVk0gdXBkYXRlIGNhc2VzCgpX ZSB1cGRhdGUgdGhlIFZNIGFmdGVyIHBoYXNlIEkgb2YgdmFjdXVtIC0tIGVpdGhlciBzZXR0aW5n IGJvdGggdGhlIFZNCmJpdHMgd2hlbiBhbGwgYml0cyBhcmUgY3VycmVudGx5IHVuc2V0IG9yIHNl dHRpbmcganVzdCB0aGUgZnJvemVuIGJpdAp3aGVuIHRoZSBhbGwtdmlzaWJsZSBiaXQgaXMgYWxy ZWFkeSBzZXQuCgpUaG9zZSB0d28gY2FzZXMgc2hhcmVkIG11Y2ggb2YgdGhlIHNhbWUgY29kZSAt LSBsZWFkaW5nIHRvIHVubmVjZXNzYXJ5CmR1cGxpY2F0aW9uLiBUaGlzIGNvbW1pdCBjb21iaW5l cyB0aGVtLCB3aGljaCBpcyBzaW1wbGVyIGFuZCBlYXNpZXIgdG8KdW5kZXJzdGFuZC4KClRoZSBj b21iaW5lZCBjYXNlIGFsc28gaGFwcGVucyB0byBmaXggYSBsb25nc3RhbmRpbmcgYnVnIHdoZXJl IGlmIHdlIGFyZQpvbmx5IHNldHRpbmcgYW4gYWxsLXZpc2libGUgcGFnZSBhbGwtZnJvemVuIGFu ZCBjaGVja3N1bXMvd2FsX2xvZ19oaW50cwphcmUgZW5hYmxlZCwgd2Ugd291bGQgZmFpbCB0byBz ZXQgdGhlIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgc2V0dGluZyB0aGUKcGFnZSBMU04gaW4gdmlzaWJp bGl0eW1hcF9zZXQoKS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg fCAxMDEgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzIgaW5z ZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IGU5YjRlOTI0ZDIyLi4xZmViYjUyNGQ0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwpAQCAtMjE1OSwxMSArMjE1OSwyNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLAogCXsKIAkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0 IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAqLwogCX0KLQllbHNlIGlmICghYWxsX3Zpc2libGVf YWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX3Zpc2libGUpCisKKwkvKgorCSAqIElmIHRo ZSBwYWdlIGlzbid0IHlldCBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIFZNIG9yIGl0IGlzIGFu ZCBuZWVkcworCSAqIHRvIG1lIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3Rl IHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5CisJICogdmFsaWQgaWYgYWxsX3Zpc2libGUgaXMgdHJ1 ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZAorCSAqIGFsbF9mcm96ZW4u CisJICovCisJZWxzZSBpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSAmJgorCQkJICghYWxsX3Zpc2li bGVfYWNjb3JkaW5nX3RvX3ZtIHx8CisJCQkgIChwcmVzdWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FM TF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpKSkpCiAJewogCQl1aW50OAkJ b2xkX3ZtYml0czsKIAkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsK IAorCQkvKgorCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB3ZSBjYW4gcGFzcyBJbnZh bGlkVHJhbnNhY3Rpb25JZCBhcyBvdXIKKwkJICogY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UKKwkJICogZXZlcnl0aGluZyBzYWZl IGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlCisJCSAqIGZy b3plbi4KKwkJICovCiAJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCiAJCXsKIAkJCUFzc2VydCgh VHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7CkBAIC0y MTc2LDIxICsyMTkxLDI5IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJ CSAqIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJkbGVzcywgc2V0IGJvdGggYml0 cyBzbyB0aGF0IHdlCiAJCSAqIGdldCBiYWNrIGluIHN5bmMuCiAJCSAqCi0JCSAqIE5COiBJZiB0 aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdl Ci0JCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNo ZWNrc3VtcyBhcmUKLQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0 aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJp bGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgotCQkgKiBHaXZlbiB0aGF0 IHRoaXMgc2l0dWF0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiBpbiByYXJlIGNhc2VzIGFmdGVyIGEK LQkJICogY3Jhc2gsIGl0IGlzIG5vdCB3b3J0aCBvcHRpbWl6aW5nLgorCQkgKiBJZiB0aGUgaGVh cCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlIGRvbid0 CisJCSAqIG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3Vt cyBhcmUgZW5hYmxlZCwgd2UKKwkJICogZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVh cCBwYWdlIGlzIGRpcnRpZWQgYmVmb3JlIHBhc3NpbmcKKwkJICogaXQgdG8gdmlzaWJpbGl0eW1h cF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgogCQkgKi8KLQkJUGFnZVNldEFsbFZp c2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCQlpZiAoIVBhZ2VJc0FsbFZp c2libGUocGFnZSkgfHwgWExvZ0hpbnRCaXRJc05lZWRlZCgpKQorCQl7CisJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCQl9CisKIAkJb2xkX3Zt Yml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAogCQkJCQkJ CQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCiAJCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52 bV9jb25mbGljdF9ob3Jpem9uLAogCQkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCS8qCisJCSAqIEV2 ZW4gaWYgd2UgYXJlIG9ubHkgc2V0dGluZyB0aGUgYWxsLWZyb3plbiBiaXQsIHRoZXJlIGlzIGEg c21hbGwKKwkJICogY2hhbmNlIHRoYXQgdGhlIFZNIHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3 ZWVuIHNldHRpbmcKKwkJICogYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2lu ZyB0aGUgdmlzaWJpbGl0eSBkdXJpbmcKKwkJICogcHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2 YWx1ZSBvZiBvbGRfdm1iaXRzIHRvIGVuc3VyZSB0aGUKKwkJICogdmlzaWJpbGl0eSBtYXAgY291 bnRlcnMgdXNlZCBmb3IgbG9nZ2luZyBhcmUgYWNjdXJhdGUuCisJCSAqCiAJCSAqIElmIHRoZSBw YWdlIHdhc24ndCBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0 aGUKIAkJICogVk0sIGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KIAkJICovCkBA IC0yMjExLDY2ICsyMjM0LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwK IAkJfQogCX0KIAotCS8qCi0JICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3pl biBidXQgbm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFsbC1mcm96ZW4u ICBOb3RlIHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzCi0J ICogdHJ1ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVu LgotCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0 LmFsbF92aXNpYmxlICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVO KHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRz OwotCi0JCS8qCi0JCSAqIEF2b2lkIHJlbHlpbmcgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3Rv X3ZtIGFzIGEgcHJveHkgZm9yIHRoZQotCQkgKiBwYWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJp dCBiZWluZyBzZXQsIHNpbmNlIGl0IG1pZ2h0IGhhdmUgYmVjb21lCi0JCSAqIHN0YWxlIC0tIGV2 ZW4gd2hlbiBhbGxfdmlzaWJsZSBpcyBzZXQKLQkJICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJs ZShwYWdlKSkKLQkJewotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVy RGlydHkoYnVmKTsKLQkJfQotCi0JCS8qCi0JCSAqIFNldCB0aGUgcGFnZSBhbGwtZnJvemVuIChh bmQgYWxsLXZpc2libGUpIGluIHRoZSBWTS4KLQkJICoKLQkJICogV2UgY2FuIHBhc3MgSW52YWxp ZFRyYW5zYWN0aW9uSWQgYXMgb3VyIGN1dG9mZl94aWQsIHNpbmNlIGEKLQkJICogc25hcHNob3RD b25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVE TwotCQkgKiB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0J CSAqLwotCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3Rf aG9yaXpvbikpOwotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWws IGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlN QVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsK LQotCQkvKgotCQkgKiBUaGUgcGFnZSB3YXMgbGlrZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxl IGluIHRoZSBWTS4gSG93ZXZlciwKLQkJICogdGhlcmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBp dCB3YXMgbW9kaWZpZWQgc29tZXRpbWUgYmV0d2VlbgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxl X2FjY29yZGluZ190b192bSBhbmQgY2hlY2tpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5n IHBydW5pbmcuIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8K LQkJICogZW5zdXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5n IGFyZSBhY2N1cmF0ZS4KLQkJICovCi0JCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMr KzsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFn ZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0KLQkJLyoKLQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRo YXQgdGhlIHBhZ2Ugd2FzIG5vdCBzZXQgYWxsLWZyb3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUs IHNvIHdlIGRvbid0IG5lZWQgdG8gdGVzdCB0aGUgdmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICov Ci0JCWVsc2UKLQkJewotCQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1f cGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0JfQotCiAJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7 CiB9CiAKLS0gCjIuNDMuMAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0009-Update-VM-in-pruneheap.c.patch" Content-Disposition: attachment; filename="v11-0009-Update-VM-in-pruneheap.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdyw8 RnJvbSAwNGFiYmJkNzZiZGVkMDdiODBhNDhmYjdhZjllMzBiYzhjY2E5M2EyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgSnVuIDIwMjUgMTE6MDQ6MTQgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxMSAwOS8yMF0gVXBkYXRlIFZNIGluIHBydW5laGVhcC5jCgpBcyBhIHN0ZXAgdG93YXJk IHVwZGF0aW5nIHRoZSBWTSBpbiB0aGUgc2FtZSBjcml0aWNhbCBzZWN0aW9uIGFuZCBXQUwKcmVj b3JkIGFzIHBydW5pbmcgYW5kIGZyZWV6aW5nIChkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcp LCBmaXJzdCBtb3ZlCnRoZSBWTSB1cGRhdGUgKHN0aWxsIGluIGl0cyBvd24gY3JpdGljYWwgc2Vj dGlvbiBhbmQgV0FMIHJlY29yZCkgaW50bwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiBU aGlzIG1ha2VzIHJldmlldyBlYXNpZXIuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMgIHwgOTkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgOTggKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAxNSArKystLQogMyBmaWxl cyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggYmJkODNlNGZjYzcuLjM5ODk2MmVkMWNiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMzY2LDcgKzM2Niw4IEBAIGlkZW50aWZ5 X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKIAogLyoKICAqIFBydW5l IGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBv biB0aGUKLSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdl J3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgorICogdGhlIFZN LgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9u IHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1h dGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKQEAgLTQ0Miw2 ICs0NDMsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CiAJYm9v bAkJZG9faGludDsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAw OwogCWJvb2wJCWhpbnRfYml0X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uu d2FsX2ZwaTsKIApAQCAtOTQyLDcgKzk0NSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqCiAJICogTm93IHRoYXQgZnJl ZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUK IAkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3Qg dGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNh bGxlci4KKwkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNp YmlsaXR5IG1hcC4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxw ZGVhZF9pdGVtcyA9PSAwKQogCXsKQEAgLTk1OCwzMSArOTYxLDkxIEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXByZXN1bHQt Pmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwogCiAJLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmlu ZyB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAq IGZvciB0aGF0IHJlY29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhv d2V2ZXIsIGlmIHRoZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBi ZSBubyBjb25mbGljdCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVt YWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRo YXQgd2UganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQK LQkgKiBpbmNsdWRlZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vz bid0IG5lZWQgaXQuCisJICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29u ZmxpY3QgaG9yaXpvbiBmb3IgdGhhdCByZWNvcmQKKwkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1p biBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCisJICogY29tcGxldGVseSBm cm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6 b24KKwkgKiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRl cyB0aGUgY2FzZSB0aGF0IHdlCisJICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBy dW5lLWZyZWV6ZSByZWNvcmQgaW5jbHVkZWQgdGhlCisJICogY29uZmxpY3QgWElEIGFscmVhZHkg c28gdGhlIFZNIHVwZGF0ZSByZWNvcmQgZG9lc24ndCBuZWVkIGl0LgogCSAqLwogCWlmIChwcmVz dWx0LT5hbGxfZnJvemVuKQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CiAJZWxzZQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0g cHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAKLQlwcmVzdWx0LT5scGRlYWRfaXRlbXMg PSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKLQkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJy YXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCi0KIAkvKgotCSAqIENsZWFyIGFueSBWTSBjb3Jy dXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsCi0JICog c2VjdGlvbi4KKwkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24g aW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCisJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCisJICogYWxsX2Zyb3pl biB2YXJpYWJsZXMuCiAJICovCi0JcHJlc3VsdC0+dm1fY29ycnVwdGlvbiA9IGZhbHNlOwogCWlm IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSkKLQkJcHJlc3VsdC0+dm1fY29y cnVwdGlvbiA9IGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJ CQkJCQkJCQkJCQlibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJCQkJCQkJYmxrX2tu b3duX2F2LAotCQkJCQkJCQkJCQkJCQkJCXByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcik7 CisJeworCQlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAorCQkJ CQkJCQkJCSAgIGJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkgICBibGtfa25vd25f YXYsCisJCQkJCQkJCQkJICAgcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwkJewor CQkJLyogSWYgd2UgZml4IGNvcnJ1cHRpb24sIGRvbid0IHVwZGF0ZSB0aGUgVk0gZnVydGhlciAq LworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlz aWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5kCisJCSAqIG5lZWRzIHRvIG1lIG1hcmtlZCBhbGwt ZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3RlIHRoYXQgYWxsX2Zyb3plbgorCQkgKiBpcyBvbmx5 IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aAorCQkg KiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4KKwkJICovCisJCWVsc2UgaWYgKHByZXN1bHQt PmFsbF92aXNpYmxlICYmCisJCQkJICghYmxrX2tub3duX2F2IHx8CisJCQkJICAocHJlc3VsdC0+ YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxvY2tubywgJnZtYnVmZmVy KSkpKQorCQl7CisJCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCQl2bWZs YWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSBw YWdlIGlzIGFsbC1mcm96ZW4sIHdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkIGFzCisJ CQkgKiBvdXIgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZm aWNpZW50IHRvCisJCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2Vk IHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKKwkJCSAqIHdlcmUgZnJvemVuLgorCQkJICovCisJCQlp ZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKKwkJCXsKKwkJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKwkJCQl2bWZsYWdzIHw9IFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJCX0KKworCQkJLyoKKwkJCSAqIEl0J3MgcG9zc2li bGUgZm9yIHRoZSBWTSBiaXQgdG8gYmUgY2xlYXIgYW5kIHRoZSBwYWdlLWxldmVsIGJpdAorCQkJ ICogdG8gYmUgc2V0IGlmIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQuCisJCQkgKgorCQkJICog QW5kIGV2ZW4gaWYgd2UgYXJlIGp1c3QgcGxhbm5pbmcgdG8gdXBkYXRlIHRoZSBmcm96ZW4gYml0 IGluCisJCQkgKiB0aGUgVk0sIHdlIHNob3VsZG4ndCByZWx5IG9uIGFsbF92aXNpYmxlX2FjY29y ZGluZ190b192bSBhcyBhCisJCQkgKiBwcm94eSBmb3IgdGhlIHBhZ2UtbGV2ZWwgUERfQUxMX1ZJ U0lCTEUgYml0IGJlaW5nIHNldCwgc2luY2UgaXQKKwkJCSAqIG1pZ2h0IGhhdmUgYmVjb21lIHN0 YWxlLgorCQkJICoKKwkJCSAqIElmIHRoZSBoZWFwIHBhZ2UgaXMgYWxsLXZpc2libGUgYnV0IHRo ZSBWTSBiaXQgaXMgbm90IHNldCwgd2UKKwkJCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhl YXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3VtcyBhcmUKKwkJCSAqIGVuYWJsZWQsIHdlIGRv IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkCisJCQkgKiBi ZWZvcmUgcGFzc2luZyBpdCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLCBiZWNhdXNlIGl0IG1heSBi ZQorCQkJICogbG9nZ2VkLgorCQkJICovCisJCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkg fHwgWExvZ0hpbnRCaXRJc05lZWRlZCgpKQorCQkJeworCQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBh Z2UpOworCQkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQkJfQorCisJCQlvbGRfdm1iaXRz ID0gdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwgSW52YWxpZFhM b2dSZWNQdHIsCisJCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQtPnZtX2NvbmZsaWN0X2hv cml6b24sCisJCQkJCQkJCQkJICAgdm1mbGFncyk7CisJCX0KKwl9CisKKwlwcmVzdWx0LT5scGRl YWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKKwkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9m ZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCisKKwlwcmVzdWx0LT5vbGRfdm1i aXRzID0gb2xkX3ZtYml0czsKKwlwcmVzdWx0LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKKwogCWlm IChwcnN0YXRlLmZyZWV6ZSkKIAl7CiAJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA1NzRlNDE1YjBlMC4uOTQ5MjQyMzE0MWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5NDksNyArMTk0OSw4IEBA IGNtcE9mZnNldE51bWJlcnMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKICAqIHZtYnVm ZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgVk0gYmxvY2sgd2l0aCB2aXNpYmlsaXR5 IGluZm9ybWF0aW9uCiAgKiBmb3IgdGhlIGhlYXAgYmxvY2ssIGJsa25vLiBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gaXMgdGhlIHNhdmVkCiAgKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUg aGVhcCBibG9jayBsb29rZWQgdXAgZWFybGllciBieSB0aGUgY2FsbGVyLiBXZQotICogd29uJ3Qg cmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBvZiBkYXRlLgor ICogd29uJ3QgcmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBv ZiBkYXRlLiBUaGVzZSB3aWxsIGJlCisgKiBwYXNzZWQgb24gdG8gaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoKSB0byB1c2Ugd2hpbGUgc2V0dGluZyB0aGUgVk0uCiAgKgogICogKmhhc19scGRl YWRfaXRlbXMgaXMgc2V0IHRvIHRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIsIHVw b24gcmV0dXJuCiAgKiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFueSBMUF9ERUFEIGl0ZW1zIGFyZSBz dGlsbCBwcmVzZW50IG9uIHRoZSBwYWdlLgpAQCAtMTk3OCw2ICsxOTc5LDcgQEAgbGF6eV9zY2Fu X3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAogCS8qCiAJICogUHJ1bmUgYWxsIEhPVC11cGRh dGUgY2hhaW5zIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoaXMgcGFnZS4KKwkg KiBUaGVuLCBpZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3RhdHVzIGhhcyBjaGFuZ2VkLCB1cGRh dGUgdGhlIFZNLgogCSAqCiAJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCB3ZSBj YW4gaW1tZWRpYXRlbHkgbWFyayB3b3VsZC1iZSBkZWFkCiAJICogaXRlbXMgTFBfVU5VU0VELgpA QCAtMTk4NiwxMCArMTk4OCw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJICogcHJlc3VsdC5uZGVsZXRlZC4gIEl0IHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCBw cmVzdWx0LmxwZGVhZF9pdGVtczsKIAkgKiBwcmVzdWx0LmxwZGVhZF9pdGVtcydzIGZpbmFsIHZh bHVlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIHRoZSBudW1iZXIgb2YKIAkgKiB0dXBsZXMgdGhhdCB3 ZXJlIGRlbGV0ZWQgZnJvbSBpbmRleGVzLgotCSAqCi0JICogV2Ugd2lsbCB1cGRhdGUgdGhlIFZN IGFmdGVyIGNvbGxlY3RpbmcgTFBfREVBRCBpdGVtcyBhbmQgZnJlZXppbmcKLQkgKiB0dXBsZXMu IFBydW5pbmcgd2lsbCBoYXZlIGRldGVybWluZWQgd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMK LQkgKiBhbGwtdmlzaWJsZS4KIAkgKi8KIAlwcnVuZV9vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk07CiAJaWYgKHZhY3JlbC0+bmluZGV4 ZXMgPT0gMCkKQEAgLTIwODEsODggKzIwNzksMjYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3Rh dGUgKnZhY3JlbCwKIAlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVh ZF9pdGVtcykpOwogCiAJLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQg YmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICog YWxsX2Zyb3plbiB2YXJpYWJsZXMuCisJICogRm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dnaW5nLCBj b3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKKwkgKiBzZXQgYWxsLXZpc2li bGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KIAkgKi8KLQlpZiAocHJlc3VsdC52bV9j b3JydXB0aW9uKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSkgIT0gMCkKIAl7Ci0JCS8qIERvbid0IHVwZGF0ZSB0aGUgVk0gaWYgd2UganVz dCBjbGVhcmVkIGNvcnJ1cHRpb24gaW4gaXQgKi8KLQl9Ci0KLQkvKgotCSAqIElmIHRoZSBwYWdl IGlzbid0IHlldCBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIFZNIG9yIGl0IGlzIGFuZCBuZWVk cwotCSAqIHRvIG1lIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3RlIHRoYXQg YWxsX2Zyb3plbiBpcyBvbmx5Ci0JICogdmFsaWQgaWYgYWxsX3Zpc2libGUgaXMgdHJ1ZSwgc28g d2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4uCi0JICov Ci0JZWxzZSBpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSAmJgotCQkJICghYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtIHx8Ci0JCQkgIChwcmVzdWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9a RU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpKSkpCi0JewotCQl1aW50OAkJb2xkX3Zt Yml0czsKLQkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQotCQkv KgotCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB3ZSBjYW4gcGFzcyBJbnZhbGlkVHJh bnNhY3Rpb25JZCBhcyBvdXIKLQkJICogY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UKLQkJICogZXZlcnl0aGluZyBzYWZlIGZvciBS RURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlCi0JCSAqIGZyb3plbi4K LQkJICovCi0JCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCXsKLQkJCUFzc2VydCghVHJhbnNh Y3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0JCQlmbGFncyB8 PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KLQotCQkvKgotCQkgKiBJdCBzaG91bGQg bmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQKLQkJ ICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMg YWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuICBSZWdhcmRsZXNz LCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UKLQkJICogZ2V0IGJhY2sgaW4gc3luYy4KLQkJICoK LQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBu b3Qgc2V0LCB3ZSBkb24ndAotCQkgKiBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dl dmVyLCBpZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQsIHdlCi0JCSAqIGRvIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkIGJlZm9yZSBwYXNzaW5nCi0JCSAqIGl0 IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICov Ci0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSB8fCBYTG9nSGludEJpdElzTmVlZGVkKCkp Ci0JCXsKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJTWFya0J1ZmZlckRpcnR5KGJ1 Zik7Ci0JCX0KLQotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWws IGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAg IHZtYnVmZmVyLCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJCQkJCQkgICBmbGFn cyk7Ci0KLQkJLyoKLQkJICogRXZlbiBpZiB3ZSBhcmUgb25seSBzZXR0aW5nIHRoZSBhbGwtZnJv emVuIGJpdCwgdGhlcmUgaXMgYSBzbWFsbAotCQkgKiBjaGFuY2UgdGhhdCB0aGUgVk0gd2FzIG1v ZGlmaWVkIHNvbWV0aW1lIGJldHdlZW4gc2V0dGluZwotCQkgKiBhbGxfdmlzaWJsZV9hY2NvcmRp bmdfdG9fdm0gYW5kIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5IGR1cmluZwotCQkgKiBwcnVuaW5n LiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgdG8gZW5zdXJlIHRoZQotCQkg KiB2aXNpYmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4K LQkJICoKLQkJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGFu ZC9vciBhbGwtZnJvemVuIGluIHRoZQotCQkgKiBWTSwgY291bnQgaXQgYXMgbmV3bHkgc2V0IGZv ciBsb2dnaW5nLgotCQkgKi8KLQkJaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwot CQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJCXsKLQkJCQl2YWNyZWwtPnZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlcysrOwotCQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCQl9Ci0J CX0KLQkJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09 IDAgJiYKLQkJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCQl2YWNyZWwtPnZtX25ld192aXNpYmxl X3BhZ2VzKys7CisJCWlmICgocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOKSAhPSAwKQogCQl7Ci0JCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKKwkJ CXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9mcm96 ZW4gPSB0cnVlOwogCQl9CiAJfQorCWVsc2UgaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAocHJlc3VsdC5uZXdfdm1iaXRzICYg VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQorCXsKKwkJQXNzZXJ0KChwcmVzdWx0Lm5l d192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKTsKKwkJdmFjcmVsLT52 bV9uZXdfZnJvemVuX3BhZ2VzKys7CisJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CisJfQogCiAJ cmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMGM3ZWI1ZTQ2 ZjQuLmI4NTY0ODQ1NmU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0yMzUsMjAgKzIzNSwyMSBAQCB0 eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCXJlY2VudGx5X2RlYWRfdHVw bGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0 aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkgKiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5 IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFmdGVyIHBydW5pbmcuCisJICogYWxsX3Zp c2libGUgYW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgcGFnZSBhcyBy ZWZsZWN0ZWQKKwkgKiBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcHJ1bmluZywgZnJlZXpp bmcsIGFuZCBzZXR0aW5nIGFueSBwYWdlcworCSAqIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmls aXR5IG1hcC4KIAkgKgotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gaXMgdGhlIG5ld2VzdCB4bWlu IG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiAgVGhlCi0JICogY2FsbGVyIGNhbiB1c2UgaXQg YXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hlbiBzZXR0aW5nIHRoZSBWTSBiaXRzLiAgSXQKLQkg KiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzIChuZnJvemVuID4gMCksIGFu ZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlzIHRo ZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZQorCSAqIChvbGRlciB0aGFu IE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBvbmx5IGJlIHZhbGlkIGlmIHdlIGRpZCBub3Qgc2V0IHRo ZQorCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uCiAJICoKIAkgKiBUaGVzZSBhcmUgb25s eSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCiAJICovCiAJYm9v bAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlUcmFuc2FjdGlvbklkIHZtX2Nv bmZsaWN0X2hvcml6b247Ci0JYm9vbAkJdm1fY29ycnVwdGlvbjsKKwl1aW50OAkJb2xkX3ZtYml0 czsKKwl1aW50OAkJbmV3X3ZtYml0czsKIAogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhlIHBh Z2UgbWFrZXMgcmVsIHRydW5jYXRpb24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KLS0gCjIuNDMu MAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0010-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Disposition: attachment; filename="v11-0010-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdyz9 RnJvbSAxMzNjNjFhYmIyNGE4MzIwMzNkOTczZmQyNTA5MjMwYTY4Y2I5YjlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDE0OjA3OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTAvMjBdIFJlbmFtZSBQcnVuZVN0YXRlLmZyZWV6ZSB0byBhdHRlbXB0X2ZyZWV6 ZQoKVGhpcyBtYWtlcyBpdCBtb3JlIGNsZWFyIHRoYXQgdGhpcyBpcyB0byBpbmRpY2F0ZSB0aGUg Y2FsbGVyIHdvdWxkIGxpa2UKaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBjb25zaWRl ciBmcmVlemluZyB0dXBsZXMgLS0gbm90IHRoYXQgd2UKdWx0aW1hdGVseSB3aWxsIGVuZCB1cCBm cmVlemluZyB0aGVtLgoKQWxzbyByZW5hbWUgbG9jYWwgdmFyaWFibGUgaGludF9iaXRfZnBpIHRv IGRpZF90dXBsZV9oaW50X2ZwaS4gVGhpcwptYWtlcyBpdCBjbGVhciBpdCBpcyBhYm91dCB0dXBs ZSBoaW50cyBhbmQgbm90IHBhZ2UgaGludHMgYW5kIHRoYXQgaXQKaW5kaWNhdGVzIHNvbWV0aGlu ZyB0aGF0IGhhcHBlbmVkIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgY291bGQgaGFwcGVuLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIHwgMjAgKysrKysrKysrKy0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDM5ODk2MmVkMWNiLi5kZjNlNjQz OTE3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQzLDcgKzQzLDcgQEAg dHlwZWRlZiBzdHJ1Y3QKIAkvKiB3aGV0aGVyIG9yIG5vdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQg TFBfVU5VU0VEIGR1cmluZyBwcnVuaW5nICovCiAJYm9vbAkJbWFya191bnVzZWRfbm93OwogCS8q IHdoZXRoZXIgdG8gYXR0ZW1wdCBmcmVlemluZyB0dXBsZXMgKi8KLQlib29sCQlmcmVlemU7CisJ Ym9vbAkJYXR0ZW1wdF9mcmVlemU7CiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiAK IAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTQ0NSwxMyArNDQ1LDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWJvb2wJCWRvX2hpbnQ7CiAJdWludDgJCXZt ZmxhZ3MgPSAwOwogCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKLQlib29sCQloaW50X2JpdF9mcGk7 CisJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxV c2FnZS53YWxfZnBpOwogCiAJLyogQ29weSBwYXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0 YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXByc3RhdGUubWFya191bnVzZWRfbm93ID0gKG9wdGlv bnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOwotCXByc3RhdGUuZnJl ZXplID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUu YXR0ZW1wdF9mcmVlemUgPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7 CiAJcHJzdGF0ZS5jdXRvZmZzID0gY3V0b2ZmczsKIAogCS8qCkBAIC00NzMsNyArNDczLDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAKIAkvKiBpbml0aWFsaXplIHBhZ2UgZnJlZXppbmcgd29ya2luZyBzdGF0ZSAqLwogCXBy c3RhdGUucGFnZWZyei5mcmVlemVfcmVxdWlyZWQgPSBmYWxzZTsKLQlpZiAocHJzdGF0ZS5mcmVl emUpCisJaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCiAJewogCQlBc3NlcnQobmV3X3JlbGZy b3plbl94aWQgJiYgbmV3X3JlbG1pbl9teGlkKTsKIAkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBh Z2VSZWxmcm96ZW5YaWQgPSAqbmV3X3JlbGZyb3plbl94aWQ7CkBAIC01MjAsNyArNTIwLDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAJICogZnVuY3Rpb24sIHdoZW4gd2UgcmV0dXJuIHRoZSB2YWx1ZSB0byB0aGUgY2FsbGVy LCBzbyB0aGF0IHRoZSBjYWxsZXIKIAkgKiBkb2Vzbid0IHNldCB0aGUgVk0gYml0IGluY29ycmVj dGx5LgogCSAqLwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2Zy ZWV6ZSkKIAl7CiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSB0cnVlOwogCQlwcnN0YXRlLmFsbF9m cm96ZW4gPSB0cnVlOwpAQCAtNjM0LDcgKzYzNCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIElmIGNoZWNrc3VtcyBh cmUgZW5hYmxlZCwgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5IGhhdmUgY2F1c2Vk CiAJICogYW4gRlBJIHRvIGJlIGVtaXR0ZWQuCiAJICovCi0JaGludF9iaXRfZnBpID0gZnBpX2Jl Zm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJZGlkX3R1cGxlX2hpbnRfZnBpID0gZnBpX2Jl Zm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CiAKIAkvKgogCSAqIFByb2Nlc3MgSE9UIGNoYWlu cy4KQEAgLTc1MCw3ICs3NTAsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90 LgogCSAqLwogCWRvX2ZyZWV6ZSA9IGZhbHNlOwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAo cHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCWlmIChwcnN0YXRlLnBhZ2VmcnouZnJlZXpl X3JlcXVpcmVkKQogCQl7CkBAIC03ODMsNyArNzgzLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJICovCiAJCQkJaWYg KFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pKQogCQkJCXsKLQkJCQkJaWYgKGhpbnRfYml0X2Zw aSkKKwkJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKIAkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7 CiAJCQkJCWVsc2UgaWYgKGRvX3BydW5lKQogCQkJCQl7CkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIAlwcmVzdWx0LT5vbGRfdm1iaXRzID0gb2xkX3ZtYml0czsKIAlwcmVzdWx0LT5uZXdfdm1i aXRzID0gdm1mbGFnczsKIAotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS5hdHRl bXB0X2ZyZWV6ZSkKIAl7CiAJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKIAkJewpAQCAtMTYy OCw3ICsxNjI4LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdl IHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAl9CiAKIAkvKiBDb25zaWRl ciBmcmVlemluZyBhbnkgbm9ybWFsIHR1cGxlcyB3aGljaCB3aWxsIG5vdCBiZSByZW1vdmVkICov Ci0JaWYgKHByc3RhdGUtPmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJ ewogCQlib29sCQl0b3RhbGx5X2Zyb3plbjsKIAotLSAKMi40My4wCgo= --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0013-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v11-0013-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdz912 RnJvbSA3NGUxOTY1ODQyMDRmOTU1NGMyNDI1YmM3YmU5ZWQ5ZTFhOTgyMWZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTMvMjBdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKCkN1cnJlbnRseSwgd2Ugb25seSB1c2UgR2xvYmFs VmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgdG8gY2hlY2sgaWYgYQp0dXBsZSdzIHhtYXggaXMgdmlz aWJsZSB0byBhbGwsIG1lYW5pbmcgd2UgY2FuIHJlbW92ZSBpdC4gQnV0IGZ1dHVyZQpjb21taXRz IHdpbGwgdXNlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIHRvIHRlc3QgaWYgYSB0dXBs ZSdzIHhtaW4KaXMgdmlzaWJsZSB0byBhbGwgZm9yIHRoZSBwdXJwb3NlcyBvZiBkZXRlcm1pbmlu ZyBpZiBzZXR0aW5nIHRoZSBwYWdlCmFsbC12aXNpYmxlIGluIHRoZSBWTS4gSW4gdGhhdCBjYXNl LCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIGNhbGwgdGhlCmZ1bmN0aW9uIEdsb2JhbFZpc1hpZFZp c2libGVUb0FsbCgpLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBn bWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHku YyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAg ICB8IDE0ICsrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1 bS5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAg ICAgICAgfCAxMyArKysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggICAg ICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCsp LCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2li aWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgSGVh cFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25h cHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwog Ci0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3QtPnZpc3Rlc3QsIGRl YWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNuYXBzaG90LT52aXN0 ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwogCX0KIAllbHNlCkBA IC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVhcFR1cGxlIGh0dXAs IEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBEZWxldGVy IGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9sZCBlbm91Z2guICov Ci0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LAotCQkJCQkJCQkJ ICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVybiBHbG9iYWxWaXNY aWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhlYWRlckdldFJhd1ht YXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg NjYzNzk2NmU5MjcuLjAyMTFlZmZlZWM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtMjMxLDcgKzIzMSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZpc1Rlc3RGb3IocmVs YXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwgcHJ1 bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBwcnVuZV94 aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNTgwLDkgKzU4MCw5IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIERldGVy bWluaW5nIEhUU1Ygb25seSBvbmNlIGZvciBlYWNoIHR1cGxlIGlzIHJlcXVpcmVkIGZvciBjb3Jy ZWN0bmVzcywKIAkgKiB0byBkZWFsIHdpdGggY2FzZXMgd2hlcmUgcnVubmluZyBIVFNWIHR3aWNl IGNvdWxkIHJlc3VsdCBpbiBkaWZmZXJlbnQKIAkgKiByZXN1bHRzLiAgRm9yIGV4YW1wbGUsIFJF Q0VOVExZX0RFQUQgY2FuIHR1cm4gdG8gREVBRCBpZiBhbm90aGVyCi0JICogY2hlY2tlZCBpdGVt IGNhdXNlcyBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgdG8gdXBkYXRlIHRoZQot CSAqIGhvcml6b24sIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERFQUQgaWYg dGhlIGluc2VydGluZwotCSAqIHRyYW5zYWN0aW9uIGFib3J0cy4KKwkgKiBjaGVja2VkIGl0ZW0g Y2F1c2VzIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCgpIHRvIHVwZGF0ZSB0aGUgaG9yaXpvbiwK KwkgKiBvciBJTlNFUlRfSU5fUFJPR1JFU1MgY2FuIGNoYW5nZSB0byBERUFEIGlmIHRoZSBpbnNl cnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBhYm9ydHMuCiAJICoKIAkgKiBJdCdzIGFsc28gZ29vZCBm b3IgcGVyZm9ybWFuY2UuIE1vc3QgY29tbW9ubHkgdHVwbGVzIHdpdGhpbiBhIHBhZ2UgYXJlCiAJ ICogc3RvcmVkIGF0IGRlY3JlYXNpbmcgb2Zmc2V0cyAod2hpbGUgdGhlIGl0ZW1zIGFyZSBzdG9y ZWQgYXQgaW5jcmVhc2luZwpAQCAtMTE4MiwxMSArMTE4MiwxMSBAQCBoZWFwX3BydW5lX3NhdGlz Zmllc192YWN1dW0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVyIGJ1 ZmZlcikKIAkgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHR1cGxlIGlzIGNvbnNpZGVy ZWQgZGVhZCB3aGVuIGNvbXBhcmVkCiAJICogd2l0aCB0aGUgcHJvdmlkZWQgR2xvYmFsVmlzU3Rh dGUuIE9uLWFjY2VzcyBwcnVuaW5nIGRvZXMgbm90IHByb3ZpZGUKIAkgKiBWYWN1dW1DdXRvZmZz LiBBbmQgZm9yIHZhY3V1bSwgZXZlbiBpZiB0aGUgdHVwbGUncyB4bWF4IGlzIG5vdCBvbGRlcgot CSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgY291bGQg ZmluZCB0aGUgcm93IGRlYWQKLQkgKiBpZiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBk YXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZworCSAqIHRoYW4gT2xkZXN0WG1p biwgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQgaWYK KwkgKiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5u aW5nIG9mIHZhY3V1bWluZwogCSAqIHRoZSByZWxhdGlvbi4KIAkgKi8KLQlpZiAoR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlWGlkKHByc3RhdGUtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCWlmIChH bG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCiAJ CXJldHVybiBIRUFQVFVQTEVfREVBRDsKIAogCXJldHVybiByZXM7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd2YWN1dW0uYwppbmRleCA4ZjhhMWFkNzc5Ni4uNDk2Y2NhNjk0MTAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZhY3V1bVJl ZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIFJlbGF0aW9uIGhlYXByZWwsIEJ1 ZmZlciBidWZmZXIpCiAJCSAqLwogCQlpZiAoZHQtPnR1cHN0YXRlID09IFNQR0lTVF9SRURJUkVD VCAmJgogCQkJKCFUcmFuc2FjdGlvbklkSXNWYWxpZChkdC0+eGlkKSB8fAotCQkJIEdsb2JhbFZp c1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LCBkdC0+eGlkKSkpCisJCQkgR2xvYmFsVmlzWGlk VmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGR0LT54aWQpKSkKIAkJewogCQkJZHQtPnR1cHN0YXRlID0g U1BHSVNUX1BMQUNFSE9MREVSOwogCQkJQXNzZXJ0KG9wYXF1ZS0+blJlZGlyZWN0aW9uID4gMCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IDIwMGY3MmM2ZTI1Li5mNjdmMDFj MTdjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTQxODEsOCArNDE4MSw3 IEBAIEdsb2JhbFZpc1VwZGF0ZSh2b2lkKQogICogU2VlIGNvbW1lbnQgZm9yIEdsb2JhbFZpc1N0 YXRlIGZvciBkZXRhaWxzLgogICovCiBib29sCi1HbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxs WGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwKLQkJCQkJCQkJRnVsbFRyYW5zYWN0aW9uSWQgZnhp ZCkKK0dsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBG dWxsVHJhbnNhY3Rpb25JZCBmeGlkKQogewogCS8qCiAJICogSWYgZnhpZCBpcyBvbGRlciB0aGFu IG1heWJlX25lZWRlZCBib3VuZCwgaXQgZGVmaW5pdGVseSBpcyB2aXNpYmxlIHRvCkBAIC00MjIz LDcgKzQyMjIsNyBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKEdsb2JhbFZpc1N0 YXRlICpzdGF0ZSwKICAqIHJlbGZyb3plbnhpZCkuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJ c1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKQor R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rp b25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKIApAQCAtNDIzNyw3ICs0MjM2 LDcgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwg VHJhbnNhY3Rpb25JZCB4aWQpCiAJICovCiAJZnhpZCA9IEZ1bGxYaWRSZWxhdGl2ZVRvKHN0YXRl LT5kZWZpbml0ZWx5X25lZWRlZCwgeGlkKTsKIAotCXJldHVybiBHbG9iYWxWaXNUZXN0SXNSZW1v dmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVsbFhpZFZpc2li bGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCkBAIC00MjUxLDEyICs0MjUwLDEyIEBAIEds b2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlv bklkIGZ4aWQpCiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBH bG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xv YmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252 ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlz VGVzdElzVmlzaWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2Jh bFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBA IC00MjY1LDcgKzQyNjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiBy ZWwsIFRyYW5zYWN0aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7 CiAKLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJl dHVybiBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9z bmFwbWdyLmgKaW5kZXggNjA0YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5o CkBAIC0xMDAsOCArMTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90 IHNuYXBzaG90KTsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlz U3RhdGU7CiBleHRlcm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24g cmVsKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNT dGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rl c3RJc1JlbW92YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxW aXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZp c0Z1bGxYaWRWaXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0 aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tS ZW1vdmFibGVGdWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAK LS0gCjIuNDMuMAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0014-Use-GlobalVisState-to-determine-page-level-visib.patch" Content-Disposition: attachment; filename="v11-0014-Use-GlobalVisState-to-determine-page-level-visib.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdzd13 RnJvbSAxZTgzNmE0YmNhNjFkNmFiNzQ4YTlkMWM0M2RmY2VmNmUwYjA2ZjgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTQvMjBdIFVzZSBHbG9iYWxWaXNTdGF0ZSB0byBkZXRlcm1pbmUgcGFnZSBsZXZl bAogdmlzaWJpbGl0eQoKRHVyaW5nIHBydW5pbmcgYW5kIGR1cmluZyB2YWN1dW0ncyB0aGlyZCBw aGFzZSwgd2UgdHJ5IHRvIGRldGVybWluZSBpZgp0aGUgd2hvbGUgcGFnZSBjYW4gYmUgc2V0IGFs bC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcC4gSW5zdGVhZCBvZgp1c2luZyBPbGRlc3RY bWluIHRvIGRldGVybWluZSBpZiBhbGwgdGhlIHR1cGxlcyBvbiBhIHBhZ2UgYXJlIHZpc2libGUg dG8KZXZlcnlvbmUsIHVzZSB0aGUgR2xvYmFsVmlzU3RhdGUuIFRoaXMgYWxsb3dzIHVzIHRvIHN0 YXJ0IHNldHRpbmcgdGhlIFZNCmR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyBpbiBhIGZ1dHVyZSBj b21taXQuCgpJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIEdsb2JhbFZpc1N0YXRlIHRvIGNoYW5nZSBk dXJpbmcgdGhlIGNvdXJzZSBvZiBhCnZhY3V1bS4gSW4gYWxsIGJ1dCBleHRyYW9yZGluYXJ5IGNh c2VzLCBpdCBtb3ZlcyBmb3J3YXJkLCBtZWFuaW5nIG1vcmUKcGFnZXMgY291bGQgcG90ZW50aWFs bHkgYmUgc2V0IGluIHRoZSBWTS4KCkJlY2F1c2UgY29tcGFyaW5nIGEgdHJhbnNhY3Rpb24gSUQg dG8gdGhlIEdsb2JhbFZpc1N0YXRlIHJlcXVpcmVzIG1vcmUKb3BlcmF0aW9ucyB0aGFuIGNvbXBh cmluZyBpdCB0byBhbm90aGVyIHNpbmdsZSB0cmFuc2FjdGlvbiBJRCwgd2Ugbm93CndhaXQgdW50 aWwgYWZ0ZXIgZXhhbWluaW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlIGFuZCBpZiB3ZSBo YXZlCm1haW50YWluZWQgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgd2UgY29tcGFyZSB0aGF0 IHRvIHRoZQpHbG9iYWxWaXNTdGF0ZSBqdXN0IG9uY2UgcGVyIHBhZ2UuIFRoaXMgd29ya3MgYmVj YXVzZSBpZiB0aGUgcGFnZSBpcwphbGwtdmlzaWJsZSBhbmQgaGFzIGxpdmUsIGNvbW1pdHRlZCB0 dXBsZXMgb24gaXQsIHRoZQp2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2lsbCBjb250YWluIHRoZSBu ZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gSWYKZXZlcnlvbmUgY2FuIHNlZSBpdCwgdGhlIHBhZ2Ug aXMgdHJ1bHkgYWxsLXZpc2libGUuCgpEb2luZyB0aGlzIG1heSBtZWFuIHdlIGV4YW1pbmUgbW9y ZSB0dXBsZXMnIHhtaW5zIHRoYW4gYmVmb3JlLCBhcyB3ZSBtYXkKaGF2ZSBzZXQgYWxsX3Zpc2li bGUgdG8gZmFsc2Ugc29vbmVyIHdoZW4gZW5jb3VudGVyaW5nIGEgbGl2ZSB0dXBsZQpuZXdlciB0 aGFuIE9sZGVzdFhtaW4uIEhvd2V2ZXIsIHRoZXNlIGV4dHJhIGNvbXBhcmlzb25zIHdlcmUgZm91 bmQgbm90CnRvIGJlIHNpZ25pZmljYW50IGluIGEgcHJvZmlsZS4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwgMjggKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAgIHwgNDggKysrKysrKysrLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgIHwgMTkg KysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgfCAg NCArLQogNCBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwppbmRleCA0ZWJj OGFiZGJlYi4uZWRkNTI5ZGMzYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X3Zpc2liaWxpdHkuYwpAQCAtMTE4OSw2ICsxMTg5LDM0IEBAIEhlYXBUdXBsZVNhdGlzZmllc1Zh Y3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCXJldHVybiBy ZXM7CiB9CiAKKy8qCisgKiBOZWFybHkgdGhlIHNhbWUgYXMgSGVhcFR1cGxlU2F0aXNmaWVzVmFj dXVtLCBidXQgdXNlcyBhIEdsb2JhbFZpc1N0YXRlIHRvCisgKiBkZXRlcm1pbmUgd2hldGhlciBv ciBub3QgYSB0dXBsZSBpcyBIRUFQVFVQTEVfREVBRCBPcgorICogSEVBUFRVUExFX1JFQ0VOVExZ X0RFQUQuIEl0IHNlcnZlcyB0aGUgc2FtZSBwdXJwb3NlIGJ1dCBjYW4gYmUgdXNlZCBieQorICog Y2FsbGVycyB0aGF0IGhhdmUgbm90IGNhbGN1bGF0ZWQgYSBzaW5nbGUgT2xkZXN0WG1pbiB2YWx1 ZS4KKyAqLworSFRTVl9SZXN1bHQKK0hlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUdsb2JhbFZpcyhI ZWFwVHVwbGUgaHR1cCwgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCisJCQkJCQkJCSAgQnVmZmVy IGJ1ZmZlcikKK3sKKwlUcmFuc2FjdGlvbklkIGRlYWRfYWZ0ZXIgPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKwlIVFNWX1Jlc3VsdCByZXM7CisKKwlyZXMgPSBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1 dW1Ib3Jpem9uKGh0dXAsIGJ1ZmZlciwgJmRlYWRfYWZ0ZXIpOworCisJaWYgKHJlcyA9PSBIRUFQ VFVQTEVfUkVDRU5UTFlfREVBRCkKKwl7CisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChk ZWFkX2FmdGVyKSk7CisKKwkJaWYgKEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBk ZWFkX2FmdGVyKSkKKwkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOworCX0KKwllbHNlCisJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOworCisJcmV0dXJuIHJlczsKK30K KwogLyoKICAqIFdvcmsgaG9yc2UgZm9yIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSBhbmQgc2lt aWxhciByb3V0aW5lcy4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDAy MTFlZmZlZWM3Li5jNjkzNWU0NWNlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTE0MSwxMCArMTQxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQg YWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkg KiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0 ZXIgcHJ1bmluZy4KIAkgKgotCSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNl IGl0IGFzIHRoZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0 cy4gIEl0IGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJv emVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2Vz dCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFz IHRoZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNIG9yIHdoZW4KKwkgKiBm cmVlemluZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqCiAJICogTk9URTog YWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIHVu dGlsCiAJICogZGlyZWN0bHkgYmVmb3JlIHVwZGF0aW5nIHRoZSBWTS4gV2UgaWdub3JlIExQX0RF QUQgaXRlbXMgd2hlbiBkZWNpZGluZwpAQCAtNTU5LDE0ICs1NTgsMTIgQEAgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAkvKgog CSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUs IGNvbW1pdHRlZCB0dXBsZXMKLQkgKiBvbGRlciB0aGFuIE9sZGVzdFhtaW4gb24gdGhlIHBhZ2Uu IFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUKLQkgKiBpZiB0aGUgcGFnZSBpcyBh bGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMKLQkg KiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25n IGFzIGl0IGlzCi0JICogbWFpbnRhaW5lZCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRo ZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLgotCSAqIFRoaXMgaXMgbW9zdCBsaWtlbHkgdG8g aGFwcGVuIHdoZW4gdXBkYXRpbmcgdGhlIFZNIGFuZC9vciBmcmVlemluZyBhbGwKLQkgKiBsaXZl IHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQgaXMgdXBkYXRlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIHRo ZSBjYWxsZXIKLQkgKiBiZWNhdXNlIHZhY3V1bSBkb2VzIGFzc2VydC1idWlsZCBvbmx5IHZhbGlk YXRpb24gb24gdGhlIHBhZ2UgdXNpbmcgdGhpcwotCSAqIGZpZWxkLgorCSAqIG9uIHRoZSBwYWdl IG9sZGVyIHRoYW4gdGhlIHZpc2liaWxpdHkgaG9yaXpvbiByZXByZXNlbnRlZCBpbiB0aGUKKwkg KiBHbG9iYWxWaXNTdGF0ZS4KKwkgKgorCSAqIElmIHdlIGVuY291bnRlciBhbiB1bmNvbW1pdHRl ZCB0dXBsZSwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIElmCisJICogdGhlIHBhZ2UgaXMg YmVpbmcgc2V0IGFsbC12aXNpYmxlIG9yIHdoZW4gZnJlZXppbmcgYWxsIGxpdmUgdHVwbGVzIG9u CisJICogdGhlIHBhZ2UsIGl0IGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25m bGljdCBob3Jpem9uLgogCSAqLwogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTc2Miw2ICs3NTksMTYgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCXByc3RhdGUu bmRlYWQgPiAwIHx8CiAJCXByc3RhdGUubnVudXNlZCA+IDA7CiAKKwkvKgorCSAqIEFmdGVyIHBy b2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4 bWluCisJICogYW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFn ZSBjYW5ub3QgYmUKKwkgKiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfdmlz aWJsZSAmJgorCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9m Zl94aWQpICYmCisJCSFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBw cnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBw cnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBw cnVuZSBhbnl0aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3By dW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRl IHRob3NlCkBAIC0xMTA4LDEyICsxMTE1LDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlUcmFuc2FjdGlvbklkIGRlYnVn X2N1dG9mZjsKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAotCQlBc3NlcnQoY3V0b2Zmcyk7 Ci0KIAkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwogCiAJCWlmICghaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkgIGN1dG9mZnMt Pk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgIHByc3RhdGUudmlzdGVzdCwKIAkJCQkJCQkJCSAgJmRl YnVnX2FsbF9mcm96ZW4sCiAJCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKQogCQkJ QXNzZXJ0KGZhbHNlKTsKQEAgLTE2MzgsMTkgKzE2NDMsNiBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCSAqLwogCQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKGh0dXApOwog Ci0JCQkJLyoKLQkJCQkgKiBGb3Igbm93IGFsd2F5cyB1c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3Ig dGhpcyB0ZXN0LCBiZWNhdXNlCi0JCQkJICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyB3 aGVuIGZyZWV6aW5nIGlzIHJlcXVlc3RlZC4gV2UKLQkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlWGlkIGluc3RlYWQsIGlmIGEKLQkJCQkgKiBub24tZnJlZXppbmcgY2Fs bGVyIHdhbnRlZCB0byBzZXQgdGhlIFZNIGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0 ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0 ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikpCi0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJs ZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCiAJ CQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KIAkJCQlpZiAoVHJhbnNhY3Rpb25J ZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgogCQkJCQlU cmFuc2FjdGlvbklkSXNOb3JtYWwoeG1pbikpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggMmRjY2EwNzFhNDUuLjRhZDA1YmE0ZGI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVtc19h ZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVyICoK IHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRp YyB2b2lkIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIGJv b2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwKLQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAg R2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFk b2Zmc2V0cywKIAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJv b2wgKmFsbF9mcm96ZW4sCkBAIC0yNzE3LDcgKzI3MTcsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3Bh Z2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwK IAkJCQkJCQkgSW52YWxpZE9mZnNldE51bWJlcik7CiAKIAlpZiAoaGVhcF9wYWdlX3dvdWxkX2Jl X2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWZmZXIsCi0JCQkJCQkJCQkgICB2YWNyZWwtPmN1 dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwKIAkJCQkJCQkJ CSAgIGRlYWRvZmZzZXRzLCBudW1fb2Zmc2V0cywKIAkJCQkJCQkJCSAgICZhbGxfZnJvemVuLCAm dmlzaWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtKSkKQEAg LTM0NjIsMTMgKzM0NjIsMTMgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3Jl bCkKICAqLwogYm9vbAogaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgR2xvYmFs VmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKIAkJCQkJCSBUcmFu c2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkgT2Zmc2V0TnVtYmVyICps b2dnaW5nX29mZm51bSkKIHsKIAotCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2li bGUocmVsLCBidWYsIE9sZGVzdFhtaW4sCisJcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxf dmlzaWJsZShyZWwsIGJ1ZiwgdmlzdGVzdCwKIAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJ CQkJICBhbGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLApAQCAt MzQ4Nyw3ICszNDg3LDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZiwKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBv dGhlciB0aGFuIHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lz ZS4KICAqCi0gKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisg KiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgKgogICogKmFsbF9m cm96ZW4gaXMgYW4gb3V0cHV0IHBhcmFtZXRlciBpbmRpY2F0aW5nIHRvIHRoZSBjYWxsZXIgaWYg ZXZlcnkgdHVwbGUKICAqIG9uIHRoZSBwYWdlIGlzIGZyb3plbi4KQEAgLTM1MDgsNyArMzUwOCw3 IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAg Ki8KIHN0YXRpYyBib29sCiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJ CQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkgICBPZmZzZXROdW1iZXIg KmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgYm9v bCAqYWxsX2Zyb3plbiwKQEAgLTM1ODAsOCArMzU4MCw4IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCXR1cGxlLnRfbGVuID0gSXRl bUlkR2V0TGVuZ3RoKGl0ZW1pZCk7CiAJCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJl bGlkKHJlbCk7CiAKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBP bGRlc3RYbWluLAotCQkJCQkJCQkJCSBidWYpKQorCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmll c1ZhY3V1bUdsb2JhbFZpcygmdHVwbGUsIHZpc3Rlc3QsCisJCQkJCQkJCQkJCQkgIGJ1ZikpCiAJ CXsKIAkJCWNhc2UgSEVBUFRVUExFX0xJVkU6CiAJCQkJewpAQCAtMzYwMCw4ICszNjAwLDcgQEAg aGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK IAkJCQkJICogdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KIAkJCQkJICovCiAJ CQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7Ci0JCQkJCWlm ICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sCi0JCQkJCQkJCQkJCSAgIE9sZGVzdFhtaW4p KQorCQkJCQlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCB4bWluKSkKIAkJ CQkJewogCQkJCQkJYWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJCQkJCSphbGxfZnJvemVuID0gZmFs c2U7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMGI5YmIxYzliMTMuLjQyNzhmMzUxYmRmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCkBAIC0zNDIsNyArMzQyLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcF9pbnBsYWNlX3Vu bG9jayhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJSGVhcFR1cGxlIG9sZHR1cCwgQnVmZmVy IGJ1ZmZlcik7CiAKIGV4dGVybiBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAor CQkJCQkJCQkJIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCQkJIGJvb2wgKmFsbF9m cm96ZW4sCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAog CQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwpAQCAtNDE1LDYgKzQxNSw4 IEBAIGV4dGVybiBUTV9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVXBkYXRlKEhlYXBUdXBsZSBo dHVwLCBDb21tYW5kSWQgY3VyY2lkLAogCQkJCQkJCQkJCSAgQnVmZmVyIGJ1ZmZlcik7CiBleHRl cm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKEhlYXBUdXBsZSBodHVwLCBU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJCQkJCQkJCQkJCUJ1ZmZlciBidWZmZXIpOworZXh0 ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUdsb2JhbFZpcyhIZWFwVHVw bGUgaHR1cCwKKwkJCQkJCQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsIEJ1ZmZlciBi dWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6 b24oSGVhcFR1cGxlIGh0dXAsIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkICpkZWFkX2FmdGVyKTsKIGV4dGVybiB2b2lkIEhlYXBUdXBsZVNldEhpbnRCaXRzKEhl YXBUdXBsZUhlYWRlciB0dXBsZSwgQnVmZmVyIGJ1ZmZlciwKLS0gCjIuNDMuMAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0011-Eliminate-xl_heap_visible-from-vacuum-phase-I-pr.patch" Content-Disposition: attachment; filename="v11-0011-Eliminate-xl_heap_visible-from-vacuum-phase-I-pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdz310 RnJvbSAwMjkzMTJiMmQ4YTY0NzgyMTc5ZGYxYmNlZDE1NDViZWMxNjc1MjExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQxOjAwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTEvMjBdIEVsaW1pbmF0ZSB4bF9oZWFwX3Zpc2libGUgZnJvbSB2YWN1dW0gcGhh c2UgSQogcHJ1bmUvZnJlZXplCgpJbnN0ZWFkIG9mIGVtaXR0aW5nIGEgc2VwYXJhdGUgV0FMIHJl Y29yZCBmb3IgZXZlcnkgYmxvY2sgcmVuZGVyZWQKYWxsLXZpc2libGUvZnJvemVuIGJ5IHZhY3V1 bSdzIHBoYXNlIEksIGluY2x1ZGUgdGhlIGNoYW5nZXMgdG8gdGhlIFZNIGluCnRoZSB4bF9oZWFw X3BydW5lIHJlY29yZCBhbHJlYWR5IGVtaXR0ZWQuCgpUaGlzIGlzIG9ubHkgZW5hYmxlZCBmb3Ig dmFjdXVtJ3MgcHJ1bmUvZnJlZXplIHdvcmssIG5vdCBmb3Igb24tYWNjZXNzCnBydW5pbmcuCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgNDU5ICsrKysrKysrKysr KysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwg IDMwIC0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAgMTUgKy0KIDMg ZmlsZXMgY2hhbmdlZCwgMjgyIGluc2VydGlvbnMoKyksIDIyMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGRmM2U2NDM5MTc2Li5kY2U5MDI1ZDI2OCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQ0LDYgKzQ0LDEzIEBAIHR5cGVk ZWYgc3RydWN0CiAJYm9vbAkJbWFya191bnVzZWRfbm93OwogCS8qIHdoZXRoZXIgdG8gYXR0ZW1w dCBmcmVlemluZyB0dXBsZXMgKi8KIAlib29sCQlhdHRlbXB0X2ZyZWV6ZTsKKworCS8qCisJICog V2hldGhlciBvciBub3QgdG8gY29uc2lkZXIgdXBkYXRpbmcgdGhlIFZNLiBUaGVyZSBpcyBzb21l IGJvb2trZWVwaW5nCisJICogdGhhdCBtdXN0IGJlIG1haW50YWluZWQgaWYgd2Ugd291bGQgbGlr ZSB0byB1cGRhdGUgdGhlIFZNLgorCSAqLworCWJvb2wJCWNvbnNpZGVyX3VwZGF0ZV92bTsKKwog CXN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDgsOCArMTE1LDkgQEAg dHlwZWRlZiBzdHJ1Y3QKIAkgKgogCSAqIFRoZXNlIGZpZWxkcyBhcmUgbm90IHVzZWQgYnkgcHJ1 bmluZyBpdHNlbGYgZm9yIHRoZSBtb3N0IHBhcnQsIGJ1dCBhcmUKIAkgKiB1c2VkIHRvIGNvbGxl Y3QgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB3YXMgcHJ1bmVkIGFuZCB3aGF0IHN0YXRlIHRoZQot CSAqIHBhZ2UgaXMgaW4gYWZ0ZXIgcHJ1bmluZywgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBjYWxs ZXIuICBUaGV5IGFyZQotCSAqIGNvcGllZCB0byB0aGUgY2FsbGVyJ3MgUHJ1bmVGcmVlemVSZXN1 bHQgYXQgdGhlIGVuZC4KKwkgKiBwYWdlIGlzIGluIGFmdGVyIHBydW5pbmcgdG8gdXNlIHdoZW4g dXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwIGFuZAorCSAqIGZvciB0aGUgYmVuZWZpdCBvZiB0 aGUgY2FsbGVyLiAgVGhleSBhcmUgY29waWVkIHRvIHRoZSBjYWxsZXIncworCSAqIFBydW5lRnJl ZXplUmVzdWx0IGF0IHRoZSBlbmQuCiAJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSAqLwogCkBAIC0xMzgsMTEgKzE0NiwxMCBAQCB0 eXBlZGVmIHN0cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNv bWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUuCiAJICoKLQkgKiBOT1RFOiBh bGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMuICBU aGF0J3MKLQkgKiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLCB0 byB1c2UgdGhlbSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBu b3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0dXJuZWQg dG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIGF0Ci0J ICogdGhlIGVuZC4KKwkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBp bmNsdWRlIExQX0RFQUQgaXRlbXMgdW50aWwKKwkgKiBkaXJlY3RseSBiZWZvcmUgdXBkYXRpbmcg dGhlIFZNLiBXZSBpZ25vcmUgTFBfREVBRCBpdGVtcyB3aGVuIGRlY2lkaW5nCisJICogd2hldGhl ciBvciBub3QgdG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIGFuZCB3aGVuIGRldGVybWluaW5n IHRoZQorCSAqIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gcmVxdWlyZWQgd2hlbiBmcmVlemlu ZyB0dXBsZXMuCiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsK QEAgLTM3NywxMiArMzg0LDE1IEBAIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxh dGlvbiByZWxhdGlvbiwKICAqIElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0 LCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcyBpZiBpdCdzCiAgKiByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbyBub3cuICBUaGUKLSAqICdjdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94 aWQnIGFuZCAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMKLSAqIGFyZSByZXF1aXJlZCB3aGVu IGZyZWV6aW5nLiAgV2hlbiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSBhbHNv Ci0gKiBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24g ZXhpdCwgdG8gaW5kaWNhdGUgaWYKLSAqIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFy ZSBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRp b24gaXMgbm90IHNldCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycwotICogdGhh dCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiAnY3V0b2ZmcycsICduZXdf cmVsZnJvemVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWly ZWQKKyAqIHdoZW4gZnJlZXppbmcuCisgKgorICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9W TSBpcyBzZXQgYW5kIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgcGFnZQorICogaGFzIGNo YW5nZWQsIHdlIHdpbGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcg YW5kIGZyZWV6aW5nCisgKiB0aGUgaGVhcCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1 bHQtPm9sZF92bWJpdHMgYW5kCisgKiBwcmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRl IG9mIHRoZSBWTSBiZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxl ciB0byB1c2UgaW4gYm9va2tlZXBpbmcuIE5vdGUgdGhhdCBuZXcgYW5kIG9sZF92bWJpdHMgd2ls bCBiZQorICogMCBpZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIG5vdCBzZXQuCiAgKgog ICogYmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBibG9j ayBhcyBvZiB0aGUgbGFzdCBjYWxsCiAgKiB0byBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2so KS4gdm1idWZmZXIgaXMgdGhlIGJ1ZmZlciB0aGF0IG1heSBhbHJlYWR5CkBAIC0zOTgsNiArNDA4 LDggQEAgaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAog ICogICBGUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFu ZCB3aWxsIHJldHVybgogICogICAnYWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8g dGhlIGNhbGxlci4KICAqCisgKiAgIFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNl dCB0aGUgcGFnZSdzIHN0YXR1cyBpbiB0aGUgVk0uCisgKgogICogY3V0b2ZmcyBjb250YWlucyB0 aGUgZnJlZXplIGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5n CiAgKiBvZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9G UkVFWkUgb3B0aW9uIGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2Vk IHRvIGRldGVybWluZSBpZiBkZWFkIHR1cGxlcyBhcmUKQEAgLTQ0MiwxOCArNDU0LDI0IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCUhlYXBUdXBsZURhdGEgdHVwOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVu ZTsKLQlib29sCQlkb19oaW50OworCWJvb2wJCWRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZTsKKwli b29sCQlkb19zZXRfdm07CiAJdWludDgJCXZtZmxhZ3MgPSAwOwogCXVpbnQ4CQlvbGRfdm1iaXRz ID0gMDsKIAlib29sCQlkaWRfdHVwbGVfaGludF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBw Z1dhbFVzYWdlLndhbF9mcGk7CisJYm9vbAkJYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9IGZh bHNlOworCWJvb2wJCXNldF9wZF9hbGxfdmlzaWJsZSA9IGZhbHNlOwogCiAJLyogQ29weSBwYXJh bWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXByc3Rh dGUubWFya191bnVzZWRfbm93ID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVT RURfTk9XKSAhPSAwOwogCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAob3B0aW9ucyAmIEhFQVBf UEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CisJcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0gPSAo b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0pICE9IDA7CiAJcHJzdGF0ZS5jdXRv ZmZzID0gY3V0b2ZmczsKIAorCUFzc2VydCghcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0gfHwg dm1idWZmZXIpOworCiAJLyoKIAkgKiBPdXIgc3RyYXRlZ3kgaXMgdG8gc2NhbiB0aGUgcGFnZSBh bmQgbWFrZSBsaXN0cyBvZiBpdGVtcyB0byBjaGFuZ2UsCiAJICogdGhlbiBhcHBseSB0aGUgY2hh bmdlcyB3aXRoaW4gYSBjcml0aWNhbCBzZWN0aW9uLiAgVGhpcyBrZWVwcyBhcyBtdWNoCkBAIC00 OTgsNTAgKzUxNiw1NyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlwcnN0YXRlLmRlYWRvZmZzZXRzID0gcHJlc3VsdC0+ZGVh ZG9mZnNldHM7CiAKIAkvKgotCSAqIENhbGxlciBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdy ZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRoZSBwYWdlIHdpbGwg YmUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBhbmQKLQkgKiBmcmVl emluZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKwkgKiBLZWVwIHRyYWNrIG9mIHdo ZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgYW5kCisJICogYWxsLWZy b3plbiBmb3IgdXNlIGluIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgYW5kIHRvIHVwZGF0ZSB0aGUg Vk0gaWYKKwkgKiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgorCSAqCisJICogQ3VycmVudGx5LCBv bmx5IFZBQ1VVTSBhdHRlbXB0cyBmcmVlemluZyBhbmQgc2V0dGluZyB0aGUgVk0gYml0cy4gQnV0 CisJICogb3RoZXIgY2FsbGVycyBjb3VsZCBkbyBlaXRoZXIgb25lLiBUaGUgdmlzaWJpbGl0eSBi b29ra2VlcGluZyBpcworCSAqIHJlcXVpcmVkIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIChp biBhZGRpdGlvbiB0byBzZXR0aW5nIHRoZSBWTQorCSAqIGJpdHMpIGJlY2F1c2Ugd2Ugb25seSBj b25zaWRlciBvcHBvcnR1bmlzdGljYWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlCisJICogd2hv bGUgcGFnZSB3b3VsZCBiZWNvbWUgYWxsLWZyb3plbiBvciBpZiB0aGUgd2hvbGUgcGFnZSB3aWxs IGJlIGZyb3plbgorCSAqIGV4Y2VwdCBmb3IgZGVhZCB0dXBsZXMgdGhhdCB3aWxsIGJlIHJlbW92 ZWQgYnkgdmFjdXVtLgogCSAqCi0JICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBzZXRzIHRoZSBW TSBiaXRzLiAgVG8gc2F2ZSB0aGUgZWZmb3J0LCBvbmx5IGRvCi0JICogdGhlIGJvb2trZWVwaW5n IGlmIHRoZSBjYWxsZXIgbmVlZHMgaXQuICBDdXJyZW50bHksIHRoYXQncyB0aWVkIHRvCi0JICog SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwgYnV0IGl0IGNvdWxkIGJlIGEgc2VwYXJhdGUgZmxhZyBp ZiB5b3Ugd2FudGVkCi0JICogdG8gdXBkYXRlIHRoZSBWTSBiaXRzIHdpdGhvdXQgYWxzbyBmcmVl emluZyBvciBmcmVlemUgd2l0aG91dCBhbHNvCi0JICogc2V0dGluZyB0aGUgVk0gYml0cy4KKwkg KiBJZiBvbmx5IHVwZGF0aW5nIHRoZSBWTSwgd2UgbXVzdCBpbml0aWFsaXplIGFsbF9mcm96ZW4g dG8gZmFsc2UsIGFzCisJICogaGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSgpIHdpbGwgbm90IGJl IGNhbGxlZCBmb3IgZWFjaCB0dXBsZSBvbiB0aGUKKwkgKiBwYWdlIGFuZCB3ZSB3aWxsIG5vdCBl bmQgdXAgY29ycmVjdGx5IHNldHRpbmcgaXQgdG8gZmFsc2UgbGF0ZXIuCiAJICoKLQkgKiBJbiBh ZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxsZXIgd2hldGhlciBpdCBjYW4gc2V0IHRoZSBWTSBi aXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIGZvciBv dXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYKLQkgKiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNv bWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBvcnR1bmlzdGljYWxseQotCSAqIGZyZWV6aW5nIHR1 cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUgdG8gZnJlZXplIHRoZSB3aG9sZSBwYWdlIGlmIHRo ZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5 b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJl bW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCi0JICogd2lsbCBiZSByZW1vdmVk IGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAq IG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3Qg Y2xlYXIKLQkgKiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUKLQkgKiBmdW5jdGlvbiwgd2hlbiB3ZSByZXR1cm4gdGhl IHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0 IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCisJICogRGVhZCB0dXBsZXMgd2hpY2ggd2lsbCBiZSBy ZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QKKwkgKiBwcmVjbHVkZSB1 cyBmcm9tIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLCBzbyB3ZSBkbyBub3QgY2xlYXIKKwkg KiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiBXZSBmaXggdGhhdCBhZnRl ciBkZXRlcm1pbmluZworCSAqIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSBidXQgYmVmb3JlIGRl Y2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIHVwZGF0ZQorCSAqIHRoZSBWTSBzbyB0aGF0IHdlIGRv bid0IHNldCB0aGUgVk0gYml0IGluY29ycmVjdGx5LgorCSAqCisJICogSWYgbm90IGZyZWV6aW5n IG9yIHVwZGF0aW5nIHRoZSBWTSwgd2Ugb3RoZXJ3aXNlIGF2b2lkIHRoZSBleHRyYQorCSAqIGJv b2trZWVwaW5nLiBJbml0aWFsaXppbmcgYWxsX3Zpc2libGUgdG8gZmFsc2UgYWxsb3dzIHNraXBw aW5nIHRoZSB3b3JrCisJICogdG8gdXBkYXRlIHRoZW0gaW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5j aGFuZ2VkX2xwX25vcm1hbCgpLgogCSAqLwogCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQog CXsKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CiAJCXByc3RhdGUuYWxsX2Zyb3plbiA9 IHRydWU7CiAJfQorCWVsc2UgaWYgKHByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtKQorCXsKKwkJ cHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNl OworCX0KIAllbHNlCiAJewotCQkvKgotCQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dz IHNraXBwaW5nIHRoZSB3b3JrIHRvIHVwZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KLQkJICovCiAJCXByc3RhdGUuYWxsX3Zpc2libGUg PSBmYWxzZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBU aGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxl cyBvbiB0aGUKLQkgKiBwYWdlLiAgSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUgc2V0 IGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1cGRh dGluZyB0aGUgVk0uICBJZiwgYXQgdGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVuaW5n LCB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0IGFu eQotCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1 cGxlcyBvbiB0aGUgcGFnZSBhcwotCSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3QgaG9y aXpvbiByZW1haW5zIEludmFsaWRUcmFuc2FjdGlvbklkLgorCSAqIFRoZSB2aXNpYmlsaXR5IGN1 dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKKwkg KiBvbGRlciB0aGFuIE9sZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBr ZXB0IHVwLXRvLWRhdGUKKwkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBh cyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMKKwkgKiBub3QgdmlzaWJsZSB0byBhbGws IHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCisJICogbWFpbnRh aW5lZCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBo b3Jpem9uLgorCSAqIFRoaXMgaXMgbW9zdCBsaWtlbHkgdG8gaGFwcGVuIHdoZW4gdXBkYXRpbmcg dGhlIFZNIGFuZC9vciBmcmVlemluZyBhbGwKKwkgKiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4g SXQgaXMgdXBkYXRlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIHRoZSBjYWxsZXIKKwkgKiBiZWNhdXNl IHZhY3V1bSBkb2VzIGFzc2VydC1idWlsZCBvbmx5IHZhbGlkYXRpb24gb24gdGhlIHBhZ2UgdXNp bmcgdGhpcworCSAqIGZpZWxkLgogCSAqLwogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTczOSwxMCArNzY0LDExIEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAJ LyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5l dyB2YWx1ZSBmb3IgdGhlCi0JICogcGRfcHJ1bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBt YXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhlIGhpbnQKLQkgKiBiaXQuCisJICogcGRfcHJ1 bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUg dGhvc2UKKwkgKiBoaW50IGJpdHMuCiAJICovCi0JZG9faGludCA9ICgoUGFnZUhlYWRlcikgcGFn ZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94aWQgfHwKKwlkb19oaW50X2Z1 bGxfb3JfcHJ1bmFibGUgPQorCQkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0g cHJzdGF0ZS5uZXdfcHJ1bmVfeGlkIHx8CiAJCVBhZ2VJc0Z1bGwocGFnZSk7CiAKIAkvKgpAQCAt NzkwLDcgKzgxNiw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJaWYgKFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3Vw KGJ1ZmZlcikpCiAJCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKIAkJCQkJfQotCQkJCQllbHNlIGlm IChkb19oaW50KQorCQkJCQllbHNlIGlmIChkb19oaW50X2Z1bGxfb3JfcHJ1bmFibGUpCiAJCQkJ CXsKIAkJCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkgJiYgWExvZ0NoZWNrQnVmZmVyTmVl ZHNCYWNrdXAoYnVmZmVyKSkKIAkJCQkJCQlkb19mcmVlemUgPSB0cnVlOwpAQCAtODI5LDExICs4 NTUsODggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJCSAqLwogCX0KIAorCS8qCisJICogSXQgd2FzIGNvbnZlbmllbnQgdG8g aWdub3JlIExQX0RFQUQgaXRlbXMgaW4gYWxsX3Zpc2libGUgZWFybGllciBvbiB0bworCSAqIG1h a2UgdGhlIGNob2ljZSBvZiB3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgdGhlIHBhZ2UgdW5hZmZl Y3RlZCBieSB0aGUKKwkgKiBzaG9ydC10ZXJtIHByZXNlbmNlIG9mIExQX0RFQUQgaXRlbXMuICBU aGVzZSBMUF9ERUFEIGl0ZW1zIHdlcmUKKwkgKiBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQ X1VOVVNFRCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQgZG9lc24ndAorCSAqIG1hdHRlciB3aGlj aCB2YWN1dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcyB1cAor CSAqIHNldHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBW QUNVVU0gZG9lcyBpdC4KKwkgKgorCSAqIE5vdyB0aGF0IGZyZWV6aW5nIGhhcyBiZWVuIGZpbmFs aXplZCwgdW5zZXQgYWxsX3Zpc2libGUgaWYgdGhlcmUgYXJlCisJICogYW55IExQX0RFQUQgaXRl bXMgb24gdGhlIHBhZ2UuIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUgb2YK KwkgKiB0aGUgcGFnZSB3aGVuIHVzaW5nIGl0IHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0 byB1cGRhdGUgdGhlIFZNLgorCSAqCisJICogS2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0 aGUgcGFnZSB3YXMgYWxsLWZyb3plbiBleGNlcHQgTFBfREVBRAorCSAqIGl0ZW1zIGZvciB0aGUg cHVycG9zZXMgb2YgY2FsY3VsYXRpbmcgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24sCisJ ICogdGhvdWdoLgorCSAqLworCWFsbF9mcm96ZW5fZXhjZXB0X2xwX2RlYWQgPSBwcnN0YXRlLmFs bF9mcm96ZW47CisJaWYgKHByc3RhdGUubHBkZWFkX2l0ZW1zID4gMCkKKwl7CisJCXByc3RhdGUu YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisJfQor CiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJsZSk7CisK KwkvKgorCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZv cm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKKwkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9i bG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxfZnJvemVuIHZh cmlhYmxlcy4KKwkgKi8KKwlpZiAocHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0pCisJeworCQkv KgorCQkgKiBDbGVhciBhbnkgVk0gY29ycnVwdGlvbi4gVGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJl IGluIGEgY3JpdGljYWwKKwkJICogc2VjdGlvbiwgc28gd2UgZG8gaXQgZmlyc3QuIElmIFBEX0FM TF9WSVNJQkxFIGlzIGluY29ycmVjdGx5IHNldCwKKwkJICogd2UgbWF5IG1hcmsgdGhlIGhlYXAg cGFnZSBidWZmZXIgZGlydHkgaGVyZSBhbmQgY291bGQgZW5kIHVwIGRvaW5nCisJCSAqIHNvIGFn YWluIGxhdGVyLiBUaGlzIGlzIG5vdCBhIGNvcnJlY3RuZXNzIGlzc3VlIGFuZCBpcyBpbiB0aGUg cGF0aAorCQkgKiBvZiBWTSBjb3JydXB0aW9uLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFi b3V0IHRoZSBleHRyYQorCQkgKiBwZXJmb3JtYW5jZSBvdmVyaGVhZC4KKwkJICovCisJCWlmIChp ZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkJICAgYmxv Y2tubywgYnVmZmVyLCBwYWdlLAorCQkJCQkJCQkJCSAgIGJsa19rbm93bl9hdiwgcHJzdGF0ZS5s cGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwkJeworCQkJLyogSWYgd2UgZml4IGNvcnJ1cHRpb24s IGRvbid0IHVwZGF0ZSB0aGUgVk0gZnVydGhlciAqLworCQl9CisKKwkJLyogRGV0ZXJtaW5lIGlm IHdlIGFjdHVhbGx5IG5lZWQgdG8gc2V0IHRoZSBWTSBhbmQgd2hpY2ggYml0cyB0byBzZXQuICov CisJCWVsc2UgaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJCQkgKCFibGtfa25vd25fYXYg fHwKKwkJCQkgIChwcnN0YXRlLmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4ocmVsYXRpb24s IGJsb2Nrbm8sICZ2bWJ1ZmZlcikpKSkKKwkJeworCQkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFOworCQkJaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKKwkJCQl2bWZsYWdzIHw9 IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJfQorCX0KKworCWRvX3NldF92bSA9IHZtZmxh Z3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CisKKwkvKiBMb2NrIHZtYnVmZmVyIGJlZm9y ZSBlbnRlcmluZyBhIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2Nr QnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCisJLyoKKwkgKiBEb24n dCBzZXQgUERfQUxMX1ZJU0lCTEUgdW5sZXNzIHdlIGFsc28gcGxhbiB0byBzZXQgdGhlIFZNLiBX aGlsZSBpdCBpcworCSAqIGNvcnJlY3QgZm9yIGEgaGVhcCBwYWdlIHRvIGhhdmUgUERfQUxMX1ZJ U0lCTEUgZXZlbiBpZiB0aGUgVk0gaXMgbm90CisJICogc2V0LCB3ZSBzdHJvbmdseSBwcmVmZXIg dG8ga2VlcCB0aGVtIGluIHN5bmMuCisJICoKKwkgKiBQcmlvciB0byBQb3N0Z3JlcyAxOSwgaXQg d2FzIHBvc3NpYmxlIGZvciB0aGUgcGFnZS1sZXZlbCBiaXQgdG8gYmUgc2V0CisJICogYW5kIHRo ZSBWTSBiaXQgdG8gYmUgY2xlYXIuIFRoaXMgY291bGQgaGFwcGVuIGlmIHdlIGNyYXNoZWQgYWZ0 ZXIKKwkgKiBzZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGJ1dCBiZWZvcmUgc2V0dGluZyBiaXRzIGlu IHRoZSBWTS4KKwkgKi8KKwlzZXRfcGRfYWxsX3Zpc2libGUgPSBkb19zZXRfdm0gJiYgIVBhZ2VJ c0FsbFZpc2libGUocGFnZSk7CisKKwkvKiBTYXZlIHRoZXNlIGZvciB0aGUgY2FsbGVyIGluIGNh c2Ugd2UgbGF0ZXIgemVybyBvdXQgdm1mbGFncyAqLworCXByZXN1bHQtPm5ld192bWJpdHMgPSB2 bWZsYWdzOworCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNy aXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKLQlpZiAoZG9faGludCkKKwlpZiAo ZG9faGludF9mdWxsX29yX3BydW5hYmxlKQogCXsKIAkJLyoKIAkJICogVXBkYXRlIHRoZSBwYWdl J3MgcGRfcHJ1bmVfeGlkIGZpZWxkIHRvIGVpdGhlciB6ZXJvLCBvciB0aGUgbG93ZXN0CkBAIC04 NDksMTUgKzk1MiwxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJUGFnZUNsZWFyRnVsbChwYWdlKTsKIAogCQkvKgotCQkg KiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBkbyB0byB0aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1X QUwtbG9nZ2VkCi0JCSAqIGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5l IHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJICogdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJ ICogSWYgd2UgYXJlIF9vbmx5XyBzZXR0aW5nIHRoZSBwcnVuZV94aWQgb3IgUERfUEFHRV9GVUxM IGhpbnQsIHRoZW4KKwkJICogdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2VkIGhpbnQuICBJZiB3ZSBh cmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lCisJCSAqIHR1cGxlcyBvbiB0aGUgcGFnZSBvciBz ZXQgUERfQUxMX1ZJU0lCTEUsIHdlIHdpbGwgbWFyayB0aGUgYnVmZmVyCisJCSAqIGRpcnR5IGFu ZCBlbWl0IFdBTCBiZWxvdy4KIAkJICovCi0JCWlmICghZG9fZnJlZXplICYmICFkb19wcnVuZSkK KwkJaWYgKCFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmICFzZXRfcGRfYWxsX3Zpc2libGUpCiAJ CQlNYXJrQnVmZmVyRGlydHlIaW50KGJ1ZmZlciwgdHJ1ZSk7CiAJfQogCi0JaWYgKGRvX3BydW5l IHx8IGRvX2ZyZWV6ZSkKKwlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplIHx8IGRvX3NldF92bSkK IAl7CiAJCS8qIEFwcGx5IHRoZSBwbGFubmVkIGl0ZW0gY2hhbmdlcyBhbmQgcmVwYWlyIHBhZ2Ug ZnJhZ21lbnRhdGlvbi4gKi8KIAkJaWYgKGRvX3BydW5lKQpAQCAtODcxLDEyICs5NzUsNDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAJCWlmIChkb19mcmVlemUpCiAJCQloZWFwX2ZyZWV6ZV9wcmVwYXJlZF90dXBsZXMoYnVm ZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKIAotCQlNYXJrQnVmZmVyRGly dHkoYnVmZmVyKTsKKwkJaWYgKHNldF9wZF9hbGxfdmlzaWJsZSkKKwkJCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwogCiAJCS8qCi0JCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9QUlVORV9GUkVF WkUgcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKKwkJICogV2Ugb25seSBzZXQgUERfQUxMX1ZJ U0lCTEUgaWYgd2UgYWxzbyBzZXQgdGhlIFZNLCBhbmQgc2luY2Ugc2V0dGluZworCQkgKiB0aGUg Vk0gcmVxdWlyZXMgZW1pdHRpbmcgV0FMLCBNYXJrQnVmZmVyRGlydHlIaW50KCkgaXNuJ3QKKwkJ ICogYXBwcm9wcmlhdGUgaGVyZS4KIAkJICovCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbGF0 aW9uKSkKKwkJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBzZXRfcGRfYWxsX3Zpc2libGUp CisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQlpZiAoZG9fc2V0X3ZtKQorCQl7CisJ CQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CisJCQlvbGRfdm1iaXRzID0gdmlzaWJp bGl0eW1hcF9zZXRfdm1iaXRzKHJlbGF0aW9uLCBibG9ja25vLAorCQkJCQkJCQkJCQkJICB2bWJ1 ZmZlciwgdm1mbGFncyk7CisKKwkJCWlmIChvbGRfdm1iaXRzID09IHZtZmxhZ3MpCisJCQl7CisJ CQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQlkb19zZXRf dm0gPSBmYWxzZTsKKwkJCQkvKiAwIG91dCB2bWZsYWdzIHNvIHdlIGRvbid0IGVtaXQgV0FMIHRv IHVwZGF0ZSB0aGUgVk0gKi8KKwkJCQl2bWZsYWdzID0gMDsKKwkJCX0KKwkJfQorCisJCS8qCisJ CSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IFBEX0FMTF9WSVNJQkxFIGlzIG5v dCBzZXQgYW5kIHRoZQorCQkgKiBWTSBpcyBzZXQuIE9yLCBpZiBpdCB3ZXJlLCB3ZSBzaG91bGQg aGF2ZSBjYXVnaHQgaXQgZWFybGllciB3aGVuCisJCSAqIGZpbmRpbmcgYW5kIGZpeGluZyBWTSBj b3JydXB0aW9uLiBTbywgaWYgd2UgZm91bmQgb3V0IHRoZSBWTSB3YXMKKwkJICogYWxyZWFkeSBz ZXQgYWJvdmUsIHdlIHNob3VsZCBoYXZlIGZvdW5kIFBEX0FMTF9WSVNJQkxFIHNldCBlYXJsaWVy LgorCQkgKi8KKwkJQXNzZXJ0KCFzZXRfcGRfYWxsX3Zpc2libGUgfHwgZG9fc2V0X3ZtKTsKKwor CQkvKgorCQkgKiBFbWl0IGEgV0FMIFhMT0dfSEVBUDJfUFJVTkVfRlJFRVpFIHJlY29yZCBzaG93 aW5nIHdoYXQgd2UgZGlkLiBJZgorCQkgKiB3ZSB3ZXJlIG9ubHkgdXBkYXRpbmcgdGhlIFZNIGFu ZCBpdCB0dXJucyBvdXQgaXQgd2FzIGFscmVhZHkgc2V0LAorCQkgKiB3ZSB3aWxsIGhhdmUgdW5z ZXQgZG9fc2V0X3ZtIGVhcmxpZXIuIEFzIHN1Y2gsIGNoZWNrIGl0IGFnYWluCisJCSAqIGJlZm9y ZSBlbWl0dGluZyB0aGUgcmVjb3JkLgorCQkgKi8KKwkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVs YXRpb24pICYmIChkb19zZXRfdm0gfHwgZG9fcHJ1bmUgfHwgZG9fZnJlZXplKSkKIAkJewogCQkJ LyoKIAkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29y ZCBzaG91bGQgYmUgdGhlCkBAIC04ODgsMzUgKzEwMjcsNTYgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkgKiBvbiB0aGUg c3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwogCQkJ ICogcmVjb3JkIHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCiAJCQkgKi8KLQkJCVRyYW5zYWN0 aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJCVRy YW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOworCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCQkJLyoKKwkJCSAqIElmIHdlIGFyZSB1cGRhdGlu ZyB0aGUgVk0sIHRoZSBjb25mbGljdCBob3Jpem9uIGlzIGFsbW9zdAorCQkJICogYWx3YXlzIHRo ZSB2aXNpYmlsaXR5IGN1dG9mZiBYSUQuCisJCQkgKgorCQkJICogU2VwYXJhdGVseSwgaWYgd2Ug YXJlIGZyZWV6aW5nIGFueSB0dXBsZXMsIGFzIGFuIG9wdGltaXphdGlvbiwKKwkJCSAqIHdlIGNh biB1c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiBp ZgorCQkJICogdGhlIHBhZ2Ugd2lsbCBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBp ZiB0aGVyZSBhcmUKKwkJCSAqIExQX0RFQUQgbGluZSBwb2ludGVycyBiZWNhdXNlIHdlIGlnbm9y ZWQgdGhvc2Ugd2hlbiBtYWludGFpbmluZworCQkJICogdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hp ZC4KKwkJCSAqLworCQkJaWYgKGRvX3NldF92bSB8fCAoZG9fZnJlZXplICYmIGFsbF9mcm96ZW5f ZXhjZXB0X2xwX2RlYWQpKQorCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUudmlzaWJpbGl0eV9j dXRvZmZfeGlkOwogCiAJCQkvKgotCQkJICogV2UgY2FuIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRv ZmZfeGlkIGFzIG91ciBjdXRvZmYgZm9yCi0JCQkgKiBjb25mbGljdHMgd2hlbiB0aGUgd2hvbGUg cGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxsLWZyb3plbgotCQkJICogaW4gdGhlIFZNIG9u Y2Ugd2UncmUgZG9uZSB3aXRoIGl0LiAgT3RoZXJ3aXNlIHdlIGdlbmVyYXRlIGEKLQkJCSAqIGNv bnNlcnZhdGl2ZSBjdXRvZmYgYnkgc3RlcHBpbmcgYmFjayBmcm9tIE9sZGVzdFhtaW4uCisJCQkg KiBPdGhlcndpc2UsIGlmIHdlIGFyZSBmcmVlemluZyBidXQgdGhlIHBhZ2Ugd291bGQgbm90IGJl CisJCQkgKiBhbGwtZnJvemVuLCB3ZSBoYXZlIHRvIHVzZSB0aGUgbW9yZSBwZXNzaW1pc3RpYyBo b3Jpem9uIG9mCisJCQkgKiBPbGRlc3RYbWluLCB3aGljaCBtYXkgYmUgbmV3ZXIgdGhhbiB0aGUg bmV3ZXN0IHR1cGxlIHdlIGZyb3plLgorCQkJICogV2UgY3VycmVudGx5IGRvbid0IHRyYWNrIHRo ZSBuZXdlc3QgdHVwbGUgd2UgZnJvemUuCiAJCQkgKi8KLQkJCWlmIChkb19mcmVlemUpCisJCQll bHNlIGlmIChkb19mcmVlemUpCiAJCQl7Ci0JCQkJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYg cHJzdGF0ZS5hbGxfZnJvemVuKQotCQkJCQlmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUu dmlzaWJpbGl0eV9jdXRvZmZfeGlkOwotCQkJCWVsc2UKLQkJCQl7Ci0JCQkJCS8qIEF2b2lkcyBm YWxzZSBjb25mbGljdHMgd2hlbiBob3Rfc3RhbmRieV9mZWVkYmFjayBpbiB1c2UgKi8KLQkJCQkJ ZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW47Ci0JCQkJ CVRyYW5zYWN0aW9uSWRSZXRyZWF0KGZyel9jb25mbGljdF9ob3Jpem9uKTsKLQkJCQl9CisJCQkJ Y29uZmxpY3RfeGlkID0gcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluOworCQkJCVRyYW5zYWN0 aW9uSWRSZXRyZWF0KGNvbmZsaWN0X3hpZCk7CiAJCQl9CiAKLQkJCWlmIChUcmFuc2FjdGlvbklk Rm9sbG93cyhmcnpfY29uZmxpY3RfaG9yaXpvbiwgcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQp KQotCQkJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOwotCQkJZWxzZQorCQkJ LyoKKwkJCSAqIElmIHdlIGFyZSByZW1vdmluZyB0dXBsZXMgd2l0aCBhIHlvdW5nZXIgeG1heCB0 aGFuIG91ciBzbyBmYXIKKwkJCSAqIGNhbGN1bGF0ZWQgY29uZmxpY3RfeGlkLCB3ZSBtdXN0IHVz ZSB0aGlzIGFzIG91ciBob3Jpem9uLgorCQkJICovCisJCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxv d3MocHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQsIGNvbmZsaWN0X3hpZCkpCiAJCQkJY29uZmxp Y3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7CiAKKwkJCS8qCisJCQkgKiBXZSBj YW4gb21pdCB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBpZiB3ZSBhcmUgbm90IHBydW5p bmcKKwkJCSAqIG9yIGZyZWV6aW5nIGFueSB0dXBsZXMgYW5kIGFyZSBzZXR0aW5nIGFuIGFscmVh ZHkgYWxsLXZpc2libGUKKwkJCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMg Y2FzZSwgYWxsIG9mIHRoZSB0dXBsZXMgb24KKwkJCSAqIHRoZSBwYWdlIG11c3QgYWxyZWFkeSBi ZSB2aXNpYmxlIHRvIGFsbCBNVkNDIHNuYXBzaG90cyBvbiB0aGUKKwkJCSAqIHN0YW5kYnkuCisJ CQkgKi8KKwkJCWlmICghZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJiBkb19zZXRfdm0gJiYKKwkJ CQlibGtfa25vd25fYXYgJiYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pKQor CQkJCWNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCiAJCQlsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsCiAJCQkJCQkJCQkgIGZhbHNlLAotCQkJ CQkJCQkJICBJbnZhbGlkQnVmZmVyLCAwLCBmYWxzZSwKKwkJCQkJCQkJCSAgdm1idWZmZXIsCisJ CQkJCQkJCQkgIHZtZmxhZ3MsCisJCQkJCQkJCQkgIHNldF9wZF9hbGxfdmlzaWJsZSwKIAkJCQkJ CQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkJICB0cnVlLCByZWFzb24sCiAJCQkJCQkJCQkg IHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCkBAIC05MjgsMTI0ICsxMDg4LDU1IEBA IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCiAJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JLyogQ29weSBpbmZvcm1hdGlvbiBiYWNr IGZvciBjYWxsZXIgKi8KLQlwcmVzdWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7Ci0J cHJlc3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7Ci0JcHJlc3VsdC0+bmZyb3plbiA9 IHByc3RhdGUubmZyb3plbjsKLQlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90 dXBsZXM7Ci0JcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5 X2RlYWRfdHVwbGVzOwotCi0JLyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBf REVBRCBpdGVtcyBpbiBhbGxfdmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0aGUgY2hv aWNlIG9mIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRo ZQotCSAqIHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RF QUQgaXRlbXMgd2VyZQotCSAqIGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0 ZW1zIGluIHRoZSBtYWtpbmcuICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZhY3V1bSBo ZWFwIHBhc3MgKGluaXRpYWwgcGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICogc2V0dGlu ZyB0aGUgcGFnZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2Vz IGl0LgotCSAqCi0JICogTm93IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNl dCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUg cGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUg cGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcC4KLQkgKi8K LQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKQot CXsKLQkJcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOwotCQlwcmVz dWx0LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwotCX0KLQllbHNlCi0JewotCQlw cmVzdWx0LT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcmVzdWx0LT5hbGxfZnJvemVuID0gZmFs c2U7Ci0JfQotCi0JcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJaWYgKGRvX3Nl dF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAotCS8q Ci0JICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpv biBmb3IgdGhhdCByZWNvcmQKLQkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFn ZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCi0JICogY29tcGxldGVseSBmcm96ZW4sIHRoZXJl IGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6b24KLQkgKiBzaG91 bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcyB0aGUgY2FzZSB0 aGF0IHdlCi0JICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSBy ZWNvcmQgaW5jbHVkZWQgdGhlCi0JICogY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIFZNIHVw ZGF0ZSByZWNvcmQgZG9lc24ndCBuZWVkIGl0LgotCSAqLwotCWlmIChwcmVzdWx0LT5hbGxfZnJv emVuKQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7Ci0JZWxzZQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNp YmlsaXR5X2N1dG9mZl94aWQ7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0 YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CiAKIAkvKgotCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2li aWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKLQkgKiBv ZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlz aWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4KKwkgKiBWQUNVVU0gd2lsbCBjYWxs IGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUgc2Vjb25kIHBhc3Mgb3Zlcgor CSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBmb3Ig dGhlIHBhZ2UgLS0gdGhpcworCSAqIGlzIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbG9n aWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKKwkgKiB3ZSd2ZSBmaW5pc2hlZCBwcnVu aW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUgaW4gdG90YWwKKwkgKiBhZ3Jl ZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24u IFdlIHdpbGwKKwkgKiBoYXZlIGFscmVhZHkgc2V0IHRoZSBwYWdlIGluIHRoZSBWTSwgc28gdGhp cyBhc3NlcnRpb24gd2lsbCBvbmx5IGxldAorCSAqIHlvdSBrbm93IHRoYXQgeW91J3ZlIGFscmVh ZHkgZG9uZSBzb21ldGhpbmcgd3JvbmcuCiAJICovCi0JaWYgKG9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfVVBEQVRFX1ZNKQorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0 ZS5hbGxfdmlzaWJsZSkKIAl7Ci0JCWlmIChpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24o cmVsYXRpb24sCi0JCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVyLCBwYWdlLAotCQkJCQkJCQkJ CSAgIGJsa19rbm93bl9hdiwKLQkJCQkJCQkJCQkgICBwcnN0YXRlLmxwZGVhZF9pdGVtcywgdm1i dWZmZXIpKQotCQl7Ci0JCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwgZG9uJ3QgdXBkYXRlIHRo ZSBWTSBmdXJ0aGVyICovCi0JCX0KKwkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7CisJCWJv b2wJCWRlYnVnX2FsbF9mcm96ZW47CiAKLQkJLyoKLQkJICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0 IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5kCi0JCSAqIG5lZWRzIHRv IG1lIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3RlIHRoYXQgYWxsX2Zyb3pl bgotCQkgKiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIHRydWUsIHNvIHdlIG11c3Qg Y2hlY2sgYm90aAotCQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4KLQkJICovCi0JCWVs c2UgaWYgKHByZXN1bHQtPmFsbF92aXNpYmxlICYmCi0JCQkJICghYmxrX2tub3duX2F2IHx8Ci0J CQkJICAocHJlc3VsdC0+YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxv Y2tubywgJnZtYnVmZmVyKSkpKQotCQl7Ci0JCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMg PT0gMCk7Ci0JCQl2bWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJQXNzZXJ0 KGN1dG9mZnMpOwogCi0JCQkvKgotCQkJICogSWYgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgd2Ug Y2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKLQkJCSAqIG91ciBjdXRvZmZfeGlkLCBz aW5jZSBhIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8KLQkJCSAqIG1ha2Ug ZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxl cwotCQkJICogd2VyZSBmcm96ZW4uCi0JCQkgKi8KLQkJCWlmIChwcmVzdWx0LT5hbGxfZnJvemVu KQotCQkJewotCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC0+dm1fY29u ZmxpY3RfaG9yaXpvbikpOwotCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVO OwotCQkJfQorCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CiAKLQkJCS8qCi0J CQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgVk0gYml0IHRvIGJlIGNsZWFyIGFuZCB0aGUgcGFn ZS1sZXZlbCBiaXQKLQkJCSAqIHRvIGJlIHNldCBpZiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVk LgotCQkJICoKLQkJCSAqIEFuZCBldmVuIGlmIHdlIGFyZSBqdXN0IHBsYW5uaW5nIHRvIHVwZGF0 ZSB0aGUgZnJvemVuIGJpdCBpbgotCQkJICogdGhlIFZNLCB3ZSBzaG91bGRuJ3QgcmVseSBvbiBh bGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYXMgYQotCQkJICogcHJveHkgZm9yIHRoZSBwYWdl LWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNpbmNlIGl0Ci0JCQkgKiBtaWdo dCBoYXZlIGJlY29tZSBzdGFsZS4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFs bC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlCi0JCQkgKiBkb24ndCBuZWVk IHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMgYXJlCi0JCQkg KiBlbmFibGVkLCB3ZSBkbyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoZWFwIHBhZ2UgaXMg ZGlydGllZAotCQkJICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwg YmVjYXVzZSBpdCBtYXkgYmUKLQkJCSAqIGxvZ2dlZC4KLQkJCSAqLwotCQkJaWYgKCFQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpIHx8IFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCXsKLQkJCQlQYWdl U2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQkJCX0K KwkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocmVsYXRpb24sIGJ1ZmZlciwKKwkJCQkJ CQkJCSAgY3V0b2Zmcy0+T2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgJmRlYnVnX2FsbF9mcm96ZW4s CisJCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKQorCQkJQXNzZXJ0KGZhbHNlKTsK IAotCQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHJlbGF0aW9uLCBibG9ja25vLCBi dWZmZXIsIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBwcmVzdWx0 LT52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJCSAgIHZtZmxhZ3MpOwotCQl9CisJCUFz c2VydChwcnN0YXRlLmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7CisKKwkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWJ1Z19jdXRvZmYpIHx8CisJCQkgICBkZWJ1Z19jdXRv ZmYgPT0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpOwogCX0KKyNlbmRpZgogCisJLyog Q29weSBpbmZvcm1hdGlvbiBiYWNrIGZvciBjYWxsZXIgKi8KKwlwcmVzdWx0LT5uZGVsZXRlZCA9 IHByc3RhdGUubmRlbGV0ZWQ7CisJcHJlc3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7 CisJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKKwlwcmVzdWx0LT5saXZlX3R1 cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CisJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBs ZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOworCXByZXN1bHQtPm9sZF92bWJpdHMg PSBvbGRfdm1iaXRzOworCS8qIG5ld192bWJpdHMgd2FzIHNldCBhYm92ZSAqLworCXByZXN1bHQt Pmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3Rh dGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMg YWxyZWFkeSBmaWxsZWQgaW4gKi8KIAotCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRz OwotCXByZXN1bHQtPm5ld192bWJpdHMgPSB2bWZsYWdzOwotCiAJaWYgKHByc3RhdGUuYXR0ZW1w dF9mcmVlemUpCiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCkBAIC0xNjI3LDcgKzE3 MTgsMTIgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCWJyZWFrOwogCX0KIAotCS8qIENv bnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNoIHdpbGwgbm90IGJlIHJlbW92 ZWQgKi8KKwkvKgorCSAqIENvbnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNo IHdpbGwgbm90IGJlIHJlbW92ZWQuCisJICogUmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB3 ZSB3YW50IHRvIGZyZWV6ZSB0aGUgdHVwbGVzLCBpZiB3ZSB3YW50CisJICogdG8gdXBkYXRlIHRo ZSBWTSwgd2UgaGF2ZSB0byBjYWxsIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBvbiBldmVy eQorCSAqIHR1cGxlIHRvIGtub3cgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2lsbCBiZSB0b3Rh bGx5IGZyb3plbi4KKwkgKi8KIAlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewogCQli b29sCQl0b3RhbGx5X2Zyb3plbjsKQEAgLTIxOTAsNyArMjI4Niw3IEBAIGhlYXBfbG9nX2ZyZWV6 ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIC0gUmVhcGlu ZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQgYXJlIGFscmVhZHkgTFBfREVB RCBhcmUKICAqICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAtIFZNIHVwZGF0ZXM6IEFmdGVy IHZhY3V1bSBwaGFzZSBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5IGJlIG1hcmtlZAorICogLSBWTSB1 cGRhdGVzOiBBZnRlciB2YWN1dW0gcGhhc2VzIEkgYW5kIElJSSwgdGhlIGhlYXAgcGFnZSBtYXkg YmUgbWFya2VkCiAgKiAgIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLgogICoKICAqIFRoZXNl IGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2UgdXNlIGEgc2luZ2VsIFdBTCByZWNv cmQgZm9yIHRoZW0KQEAgLTIyNDQsNiArMjM0MCw3IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJT2Zmc2V0TnVtYmVyIGZyel9v ZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIAlib29sCQlkb19wcnVuZSA9IG5yZWRpcmVj dGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CiAKKwlBc3NlcnQoZG9fcHJ1bmUg fHwgbmZyb3plbiA+IDAgfHwgdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJ QXNzZXJ0KCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsK IAl4bHJlYy5mbGFncyA9IHZtZmxhZ3M7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwppbmRleCA5NDkyNDIzMTQxZS4uNzUyMDUxNzliODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKQEAgLTIwMTUsMzQgKzIwMTUsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxT dGF0ZSAqdmFjcmVsLAogCQl2YWNyZWwtPm5ld19mcm96ZW5fdHVwbGVfcGFnZXMrKzsKIAl9CiAK LQkvKgotCSAqIFZBQ1VVTSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgZHVy aW5nIHRoZSBzZWNvbmQgcGFzcyBvdmVyCi0JICogdGhlIGhlYXAgdG8gZGV0ZXJtaW5lIGFsbF92 aXNpYmxlIGFuZCBhbGxfZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0aGlzCi0JICogaXMgYSBzcGVj aWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMgZnVuY3Rpb24uICBOb3cgdGhh dAotCSAqIHdlJ3ZlIGZpbmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6aW5nLCBtYWtlIHN1cmUgdGhh dCB3ZSdyZSBpbiB0b3RhbAotCSAqIGFncmVlbWVudCB3aXRoIGhlYXBfcGFnZV9pc19hbGxfdmlz aWJsZSgpIHVzaW5nIGFuIGFzc2VydGlvbi4KLQkgKi8KLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNL SU5HCi0JLyogTm90ZSB0aGF0IGFsbF9mcm96ZW4gdmFsdWUgZG9lcyBub3QgbWF0dGVyIHdoZW4g IWFsbF92aXNpYmxlICovCi0JaWYgKHByZXN1bHQuYWxsX3Zpc2libGUpCi0JewotCQlUcmFuc2Fj dGlvbklkIGRlYnVnX2N1dG9mZjsKLQkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKLQotCQlBc3Nl cnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7Ci0KLQkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwKLQkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZzLk9s ZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVuLAotCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAm dmFjcmVsLT5vZmZudW0pKQotCQkJQXNzZXJ0KGZhbHNlKTsKLQotCQlBc3NlcnQocHJlc3VsdC5h bGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOwotCi0JCUFzc2VydCghVHJhbnNhY3Rpb25J ZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAotCQkJICAgZGVidWdfY3V0b2ZmID09IHByZXN1bHQu dm1fY29uZmxpY3RfaG9yaXpvbik7Ci0JfQotI2VuZGlmCi0KIAkvKgogCSAqIE5vdyBzYXZlIGRl dGFpbHMgb2YgdGhlIExQX0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSBpbiB2YWNyZWwKIAkgKi8K QEAgLTIwNzYsOCArMjA0OCw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJLyogRGlkIHdlIGZpbmQgTFBfREVBRCBpdGVtcz8gKi8KIAkqaGFzX2xwZGVhZF9pdGVtcyA9 IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+IDApOwogCi0JQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNp YmxlIHx8ICEoKmhhc19scGRlYWRfaXRlbXMpKTsKLQogCS8qCiAJICogRm9yIHRoZSBwdXJwb3Nl cyBvZiBsb2dnaW5nLCBjb3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKIAkg KiBzZXQgYWxsLXZpc2libGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAppbmRleCBiODU2NDg0NTZlOS4uMGI5YmIxYzliMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAg LTIzNSwxOSArMjM1LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0CiAJaW50 CQkJcmVjZW50bHlfZGVhZF90dXBsZXM7CiAKIAkvKgotCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxf ZnJvemVuIGluZGljYXRlIHRoZSBzdGF0dXMgb2YgdGhlIHBhZ2UgYXMgcmVmbGVjdGVkCi0JICog aW4gdGhlIHZpc2liaWxpdHkgbWFwIGFmdGVyIHBydW5pbmcsIGZyZWV6aW5nLCBhbmQgc2V0dGlu ZyBhbnkgcGFnZXMKLQkgKiBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCisJICog b2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3pl biBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRhdGluZyBpdCBkdXJp bmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9m IHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCiAJICoKLQkgKiB2bV9jb25m bGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFn ZQotCSAqIChvbGRlciB0aGFuIE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBvbmx5IGJlIHZhbGlkIGlm IHdlIGRpZCBub3Qgc2V0IHRoZQotCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uCi0JICoK LQkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBp cyBzZXQuCisJICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BBR0VfUFJVTkVfVVBE QVRFX1ZNIG9wdGlvbiBpcyBzZXQuCiAJICovCi0JYm9vbAkJYWxsX3Zpc2libGU7Ci0JYm9vbAkJ YWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247CiAJdWludDgJ CW9sZF92bWJpdHM7CiAJdWludDgJCW5ld192bWJpdHM7CiAKLS0gCjIuNDMuMAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0012-Remove-xl_heap_visible-entirely.patch" Content-Disposition: attachment; filename="v11-0012-Remove-xl_heap_visible-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdz711 RnJvbSAwNjFiM2NmY2M1ODY4OTU3ODdhMWQ2ODIxNTZmNzNkYzZhOTcwNWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjMwOjQyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTIvMjBdIFJlbW92ZSB4bF9oZWFwX3Zpc2libGUgZW50aXJlbHkKClRoZXJlIGFy ZSBub3cgbm8gdXNlcnMgb2YgdGhpcywgc28gZWxpbWluYXRlIGl0IGVudGlyZWx5LgotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDMgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTIgKystLS0tLS0tLS0tLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTAgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyAgfCAxMDkgKy0tLS0tLS0tLS0tLS0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgICB8ICAxMCAtLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyB8ICAgMSAtCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtX3hsb2cuaCAgICAgICAgIHwgIDIwIC0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Zp c2liaWxpdHltYXAuaCAgICAgICB8ICAxMSArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmggICB8ICAgOSAtLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICB8ICAgMSAtCiAxMyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzNjQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZt YXNrLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwppbmRleCBiYjI2MGNm ZmE2OC4uMWZmZjAxMzgzYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v YnVmbWFzay5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCkBAIC01 Niw4ICs1Niw3IEBAIG1hc2tfcGFnZV9oaW50X2JpdHMoUGFnZSBwYWdlKQogCiAJLyoKIAkgKiBE dXJpbmcgcmVwbGF5LCBpZiB0aGUgcGFnZSBMU04gaGFzIGFkdmFuY2VkIHBhc3Qgb3VyIFhMT0cg cmVjb3JkJ3MgTFNOLAotCSAqIHdlIGRvbid0IG1hcmsgdGhlIHBhZ2UgYWxsLXZpc2libGUuIFNl ZSBoZWFwX3hsb2dfdmlzaWJsZSgpIGZvcgotCSAqIGRldGFpbHMuCisJICogd2UgZG9uJ3QgbWFy ayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4KIAkgKi8KIAlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2Up OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBjZmY1MzFhNDgwMS4uNmYxNjFhNmVh YjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3ZhbGlkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNp bmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCkBAIC0yNTI2LDEx ICsyNTI3LDExIEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRh YmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQp CiAJCXsKIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRf dm1iaXRzKHJlbGF0aW9uLAotCQkJCQkJCQkJIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciks Ci0JCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJM RSB8Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZpc2liaWxpdHlt YXBfc2V0KHJlbGF0aW9uLAorCQkJCQkJCSAgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwK KwkJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8 CisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwogCQl9CiAKIAkJLyoKQEAgLTg4 MDEsNDkgKzg4MDIsNiBAQCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxldGVP cCAqZGVsc3RhdGUpCiAJcmV0dXJuIG5ibG9ja3NmYXZvcmFibGU7CiB9CiAKLS8qCi0gKiBQZXJm b3JtIFhMb2dJbnNlcnQgZm9yIGEgaGVhcC12aXNpYmxlIG9wZXJhdGlvbi4gICdibG9jaycgaXMg dGhlIGJsb2NrCi0gKiBiZWluZyBtYXJrZWQgYWxsLXZpc2libGUsIGFuZCB2bV9idWZmZXIgaXMg dGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZQotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1h cCBibG9jay4gIEJvdGggc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIG1vZGlmaWVkCi0gKiBhbmQg ZGlydGllZC4KLSAqCi0gKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBjb21lcyBmcm9tIHRoZSBs YXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcKLSAqIG1hcmtlZCBhbGwtdmlzaWJsZS4gIFJF RE8gcm91dGluZSB1c2VzIGl0IHRvIGdlbmVyYXRlIHJlY292ZXJ5IGNvbmZsaWN0cy4KLSAqCi0g KiBJZiBjaGVja3N1bXMgb3Igd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCwgd2UgbWF5IGFsc28g Z2VuZXJhdGUgYSBmdWxsLXBhZ2UKLSAqIGltYWdlIG9mIGhlYXBfYnVmZmVyLiBPdGhlcndpc2Us IHdlIG9wdGltaXplIGF3YXkgdGhlIEZQSSAoYnkgc3BlY2lmeWluZwotICogUkVHQlVGX05PX0lN QUdFIGZvciB0aGUgaGVhcCBidWZmZXIpLCBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIgc2hvdWxk ICpub3QqCi0gKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLSAqLwotWExvZ1JlY1B0cgot bG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVy IHZtX2J1ZmZlciwKLQkJCQkgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwg dWludDggdm1mbGFncykKLXsKLQl4bF9oZWFwX3Zpc2libGUgeGxyZWM7Ci0JWExvZ1JlY1B0cgly ZWNwdHI7Ci0JdWludDgJCWZsYWdzOwotCi0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9idWZm ZXIpKTsKLQlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKLQotCXhscmVjLnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247Ci0JeGxyZWMuZmxh Z3MgPSB2bWZsYWdzOwotCWlmIChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5n KHJlbCkpCi0JCXhscmVjLmZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTDsK LQlYTG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mSGVh cFZpc2libGUpOwotCi0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHZtX2J1ZmZlciwgMCk7Ci0KLQlm bGFncyA9IFJFR0JVRl9TVEFOREFSRDsKLQlpZiAoIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJ ZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCBoZWFwX2J1 ZmZlciwgZmxhZ3MpOwotCi0JcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgWExPR19I RUFQMl9WSVNJQkxFKTsKLQotCXJldHVybiByZWNwdHI7Ci19CiAKIC8qCiAgKiBQZXJmb3JtIFhM b2dJbnNlcnQgZm9yIGEgaGVhcC11cGRhdGUgb3BlcmF0aW9uLiAgQ2FsbGVyIG11c3QgYWxyZWFk eQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggMTFjMTE5MjllZDkuLmZm M2FkOGI0Y2QyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTUzLDYg KzUzLDggQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJICAgKHhscmVjLmZsYWdzICYgKFhMSFBfSEFTX1JFRElSRUNUSU9OUyB8IFhMSFBfSEFTX0RF QURfSVRFTVMpKSA9PSAwKTsKIAogCXZtZmxhZ3MgPSB4bHJlYy5mbGFncyAmIFZJU0lCSUxJVFlN QVBfVkFMSURfQklUUzsKKwkvKiBNdXN0IG5ldmVyIHNldCBhbGxfZnJvemVuIGJpdCB3aXRob3V0 IGFsc28gc2V0dGluZyBhbGxfdmlzaWJsZSBiaXQgKi8KKwlBc3NlcnQodm1mbGFncyAhPSBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU4pOwogCiAJLyoKIAkgKiBBZnRlciB4bF9oZWFwX3BydW5lIGlz IHRoZSBvcHRpb25hbCBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLgpAQCAtMjUwLDcgKzI1Miw3 IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWlm IChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAot CQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKHJlbG4sIGJsa25vLCB2bWJ1 ZmZlciwgdm1mbGFncyk7CisJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBi bGtubywgdm1idWZmZXIsIHZtZmxhZ3MpOwogCiAJCS8qIE9ubHkgc2V0IFZNIHBhZ2UgTFNOIGlm IHdlIG1vZGlmaWVkIHRoZSBwYWdlICovCiAJCWlmIChvbGRfdm1iaXRzICE9IHZtZmxhZ3MpCkBA IC0yNjksMTQyICsyNzEsNiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25v LCBmcmVlc3BhY2UpOwogfQogCi0vKgotICogUmVwbGF5IFhMT0dfSEVBUDJfVklTSUJMRSByZWNv cmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQgaGVyZSBpcyB0 aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgKLSAqIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQgdGhlIHBhZ2UtbGV2ZWwKLSAqIFBEX0FMTF9W SVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgdGhlbiBhIHN1YnNl cXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIgdGhlIHZpc2li aWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZvaWQKLWhlYXBfeGxvZ192aXNpYmxlKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dSZWNQdHIJbHNuID0gcmVjb3JkLT5FbmRSZWNQ dHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgWExvZ1Jl Y0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKLQlC dWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwotCVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwot CUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKLQotCUFzc2VydCgo eGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJVFMpID09IHhscmVjLT5m bGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAxLCAmcmxvY2F0b3IsIE5VTEws ICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJlIGFyZSBhbnkgSG90IFN0YW5kYnkgdHJhbnNh Y3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHhtaW4KLQkgKiBob3Jpem9uIG9sZCBlbm91Z2gg dGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2libGUgZm9yIHRoZW0sIHRoZXkKLQkgKiBtaWdo dCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBpbmRleC1vbmx5IHNjYW4gY2FuIHNraXAgYSBo ZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1pZ2h0IGJlIGJldHRlciB0byB0aHJvdyBzb21l IGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUgdGhhdAotCSAqIGZvcmNlcyBhbnkgaW5kZXgt b25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRvIHBlcmZvcm0gaGVhcCBmZXRjaGVzLAotCSAq IHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJpZ2h0LgotCSAqLwotCWlm IChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs cmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJCQkJeGxyZWMtPmZsYWdzICYg VklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMLAotCQkJCQkJCQkJCQlybG9jYXRvcik7Ci0K LQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwgaWYgaXQgc3RpbGwgZXhpc3RzLiBJZiB0aGUg aGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICogdHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5 LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUgcGFnZSwgYnV0IHdlJ2QKLQkgKiBiZXR0ZXIg c3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4KLQkgKi8KLQlhY3Rpb24gPSBYTG9nUmVh ZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVmZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19O RUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2UgZG9uJ3QgYnVtcCB0aGUgTFNOIG9mIHRoZSBo ZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIG1hcCBiaXQgKHVubGVz cyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBpcyBlbmFibGVkLCBpbiB3aGljaAotCQkgKiBj YXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMgdG8gdG9ybiBwYWdlIGhhemFyZHMsIGJ1dCBz aW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGluZyB0aGUgZXhpc3RpbmcgcGFnZSBjb250ZW50 cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBjYXJlLgotCQkgKi8KLQkJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQotCQlpZiAo WExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFnZVNldExTTihwYWdlLCBsc24pOwotCi0JCU1h cmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQllbHNlIGlmIChhY3Rpb24gPT0gQkxLX1JFU1RP UkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBibG9jayB3YXMgYmFja2VkIHVwLCB3ZSBhbHJl YWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0JCSAqIG5vdGhpbmcgbW9yZSB0byBkby4gKFRo aXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tzdW1zIG9yCi0JCSAqIHdhbF9sb2dfaGludHMg ZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCi0Jewot CQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3BhY2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsK LQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7Ci0KLQkJLyoKLQkJICogU2luY2UgRlNN IGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQKLQkJ ICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3RhbmRieXMuICBJZiB0aGUgc3RhbmRieSBpcyBs YXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBWQUNVVU0sIGl0IHdpbGwgc2tpcCB1cGRhdGlu ZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICogZmlndXJlcyBmb3IgcGFnZXMgdGhhdCBiZWNh bWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4sIGRlcGVuZGluZwotCQkgKiBvbiB0aGUgdmFj dXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29tZSB3aGVuIEZyZWVTcGFjZU1hcFZhY3V1bQot CQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGljIGZyZWUgc3BhY2UgdmFsdWVzIHRvIHVwcGVy IEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2VydGVycyB0cnkgdG8gdXNlIHN1Y2ggcGFnZXMg b25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJICogYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4g Y2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBhcmUgbWFueSBzdWNoCi0JCSAqIHBhZ2VzLgot CQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJvYmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRl YSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBiZWNvbWluZyBhbGwtdmlzaWJsZSBvciBhbGwt ZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1h Z2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0JCSAqIEZTTSBkYXRhIGlzIG5vdCBpbiB0aGUg cGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtu bywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZlbiBpZiB3ZSBza2lwcGVkIHRoZSBoZWFwIHBh Z2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVybG9jaywgaXQncwotCSAqIHN0aWxsIHNhZmUg dG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gIEFueSBXQUwgcmVjb3JkIHRoYXQgY2xlYXJz Ci0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBkb2VzIHNvIGJlZm9yZSBjaGVja2luZyB0aGUg cGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBz dGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRl ZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKLQkJCQkJCQkJCSAgJnZtYnVm ZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBh Z2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxuOwotCQl1aW50OAkJdm1iaXRzOwotCi0JCS8q IGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2FzIHJlYWQgYXMgemVyb3MgKi8KLQkJaWYgKFBh Z2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDApOwotCi0JCS8q IHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAqLwotCQl2bWJpdHMgPSB4bHJlYy0+ZmxhZ3Mg JiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0KLQkJLyoKLQkJICogWExvZ1JlYWRCdWZmZXJG b3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZmZXIuIEJ1dAotCQkgKiB2aXNpYmlsaXR5bWFw X3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2VsZi4KLQkJICovCi0JCUxvY2tCdWZmZXIodm1i dWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNo ZUVudHJ5KHJsb2NhdG9yKTsKLQotCQl2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBibGtubywgSW52 YWxpZEJ1ZmZlciwgbHNuLCB2bWJ1ZmZlciwKLQkJCQkJCSAgeGxyZWMtPnNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uLCB2bWJpdHMpOwotCi0JCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotCQlGcmVl RmFrZVJlbGNhY2hlRW50cnkocmVsbik7Ci0JfQotCWVsc2UgaWYgKEJ1ZmZlcklzVmFsaWQodm1i dWZmZXIpKQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLX0KLQogLyoKICAqIEdp dmVuIGFuICJpbmZvYml0cyIgZmllbGQgZnJvbSBhbiBYTG9nIHJlY29yZCwgc2V0IHRoZSBjb3Jy ZWN0IGJpdHMgaW4gdGhlCiAgKiBnaXZlbiBpbmZvbWFzayBhbmQgaW5mb21hc2syIGZvciB0aGUg dHVwbGUgdG91Y2hlZCBieSB0aGUgcmVjb3JkLgpAQCAtNzg1LDE1ICs2NTEsMTQgQEAgaGVhcF94 bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKFBhZ2VJc05l dyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDApOwogCi0JCXZpc2liaWxp dHltYXBfc2V0X3ZtYml0cyhyZWxuLCBibGtubywKLQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJ CQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pOwotCiAJCS8qCiAJCSAqIEl0IGlzIG5vdCBwb3NzaWJsZSB0aGF0IHRoZSBWTSB3 YXMgYWxyZWFkeSBzZXQgZm9yIHRoaXMgaGVhcCBwYWdlLAogCQkgKiBzbyB0aGUgdm1idWZmZXIg bXVzdCBoYXZlIGJlZW4gbW9kaWZpZWQgYW5kIG1hcmtlZCBkaXJ0eS4KIAkJICovCisJCXZpc2li aWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLAorCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF Tik7CiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04oQnVm ZmVyR2V0UGFnZSh2bWJ1ZmZlciksIGxzbik7CiAJCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxu KTsKQEAgLTEzNzQsOSArMTIzOSw2IEBAIGhlYXAyX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWhlYXBfeGxv Z19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklT SUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQlicmVhazsKIAkJY2FzZSBY TE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0aV9pbnNlcnQocmVjb3Jk KTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBkY2U5MDI1 ZDI2OC4uNjYzNzk2NmU5MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC05 ODksOCArOTg5LDggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJCWlmIChkb19zZXRfdm0pCiAJCXsKIAkJCUFzc2VydChQYWdl SXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMocmVsYXRpb24sIGJsb2Nrbm8sCi0JCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdz KTsKKwkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChyZWxhdGlvbiwgYmxvY2tubywK KwkJCQkJCQkJCQkgICB2bWJ1ZmZlciwgdm1mbGFncyk7CiAKIAkJCWlmIChvbGRfdm1iaXRzID09 IHZtZmxhZ3MpCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNzUy MDUxNzliODMuLjJkY2NhMDcxYTQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0xODg4LDggKzE4ODgsOCBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUg KnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKIAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCi0JCQl2aXNpYmlsaXR5bWFw X3NldF92bWJpdHModmFjcmVsLT5yZWwsIGJsa25vLAotCQkJCQkJCQkJIHZtYnVmZmVyLCBuZXdf dm1iaXRzKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywKKwkJCQkJ CQkgIHZtYnVmZmVyLCBuZXdfdm1iaXRzKTsKIAogCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwodmFj cmVsLT5yZWwpKQogCQkJewpAQCAtMjc1Nyw5ICsyNzU3LDkgQEAgbGF6eV92YWN1dW1faGVhcF9w YWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIs CiAJCUFzc2VydCghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAJCXNldF9wZF9hbGxfdmlzID0g dHJ1ZTsKIAkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0X3Zt Yml0cyh2YWNyZWwtPnJlbCwKLQkJCQkJCQkJIGJsa25vLAotCQkJCQkJCQkgdm1idWZmZXIsIHZt ZmxhZ3MpOworCQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwKKwkJCQkJCSAgYmxrbm8s CisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzKTsKIAkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0 eV9jdXRvZmZfeGlkOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j CmluZGV4IGFhNDhhNDM2MTA4Li5mN2JhZDY4ZmZjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYwpAQCAtMTQsOCArMTQsNyBAQAogICoJCXZpc2liaWxpdHltYXBfY2xl YXIgIC0gY2xlYXIgYml0cyBmb3Igb25lIHBhZ2UgaW4gdGhlIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9waW4JIC0gcGluIGEgbWFwIHBhZ2UgZm9yIHNldHRpbmcgYSBiaXQKICAq CQl2aXNpYmlsaXR5bWFwX3Bpbl9vayAtIGNoZWNrIHdoZXRoZXIgY29ycmVjdCBtYXAgcGFnZSBp cyBhbHJlYWR5IHBpbm5lZAotICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4g YSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cKLSAqCQl2aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlubmVkIHBhZ2UKKyAqCQl2aXNpYmlsaXR5bWFwX3Nl dAkgLSBzZXQgYml0KHMpIGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQogICoJCXZpc2liaWxp dHltYXBfZ2V0X3N0YXR1cyAtIGdldCBzdGF0dXMgb2YgYml0cwogICoJCXZpc2liaWxpdHltYXBf Y291bnQgIC0gY291bnQgbnVtYmVyIG9mIGJpdHMgc2V0IGluIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlIC0KQEAgLTIyMCwxMDggKzIxOSw2IEBAIHZp c2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZikKIAly ZXR1cm4gQnVmZmVySXNWYWxpZCh2bWJ1ZikgJiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1idWYp ID09IG1hcEJsb2NrOwogfQogCi0vKgotICoJdmlzaWJpbGl0eW1hcF9zZXQgLSBzZXQgYml0KHMp IG9uIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQotICoKLSAqIHJlY3B0ciBpcyB0aGUgTFNOIG9m IHRoZSBYTE9HIHJlY29yZCB3ZSdyZSByZXBsYXlpbmcsIGlmIHdlJ3JlIGluIHJlY292ZXJ5LAot ICogb3IgSW52YWxpZFhMb2dSZWNQdHIgaW4gbm9ybWFsIHJ1bm5pbmcuICBUaGUgVk0gcGFnZSBM U04gaXMgYWR2YW5jZWQgdG8gdGhlCi0gKiBvbmUgcHJvdmlkZWQ7IGluIG5vcm1hbCBydW5uaW5n LCB3ZSBnZW5lcmF0ZSBhIG5ldyBYTE9HIHJlY29yZCBhbmQgc2V0IHRoZQotICogcGFnZSBMU04g dG8gdGhhdCB2YWx1ZSAodGhvdWdoIHRoZSBoZWFwIHBhZ2UncyBMU04gbWF5ICpub3QqIGJlIHVw ZGF0ZWQ7Ci0gKiBzZWUgYmVsb3cpLiAgY3V0b2ZmX3hpZCBpcyB0aGUgbGFyZ2VzdCB4bWluIG9u IHRoZSBwYWdlIGJlaW5nIG1hcmtlZAotICogYWxsLXZpc2libGU7IGl0IGlzIG5lZWRlZCBmb3Ig SG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52YWxpZFRyYW5zYWN0aW9uSWQKLSAqIGlmIHRoZSBw YWdlIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0IGNhbiBhbHNvIGJlIHNldCB0byBJbnZhbGlkVHJh bnNhY3Rpb25JZAotICogd2hlbiBhIHBhZ2UgdGhhdCBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGlz IGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgotICoKLSAqIENhbGxlciBpcyBleHBlY3RlZCB0byBz ZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWZvcmUgY2FsbGluZwotICog dGhpcyBmdW5jdGlvbi4gRXhjZXB0IGluIHJlY292ZXJ5LCBjYWxsZXIgc2hvdWxkIGFsc28gcGFz cyB0aGUgaGVhcAotICogYnVmZmVyLiBXaGVuIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQgd2Un cmUgbm90IGluIHJlY292ZXJ5LCB3ZSBtdXN0IGFkZAotICogdGhlIGhlYXAgYnVmZmVyIHRvIHRo ZSBXQUwgY2hhaW4gdG8gcHJvdGVjdCBpdCBmcm9tIGJlaW5nIHRvcm4uCi0gKgotICogWW91IG11 c3QgcGFzcyBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBjb3JyZWN0IG1hcCBwYWdlIHRvIHRoaXMg ZnVuY3Rpb24uCi0gKiBDYWxsIHZpc2liaWxpdHltYXBfcGluIGZpcnN0IHRvIHBpbiB0aGUgcmln aHQgb25lLiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZG8KLSAqIGFueSBJL08uCi0gKgotICogUmV0 dXJucyB0aGUgc3RhdGUgb2YgdGhlIHBhZ2UncyBWTSBiaXRzIGJlZm9yZSBzZXR0aW5nIGZsYWdz LgotICovCi11aW50OAotdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkgIFhMb2dSZWNQdHIgcmVjcHRyLCBCdWZm ZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4IGZsYWdzKQot ewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsK LQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7Ci0JdWludDgJ CW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJCXBhZ2U7Ci0J dWludDgJICAgKm1hcDsKLQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0VfVklTSUJJTElU WU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAotCQkg ZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGspOwotI2VuZGlmCi0K LQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBYTG9nUmVjUHRySXNJbnZhbGlkKHJlY3B0cikpOwotCUFz c2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFwQnVm KSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdz KTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0 aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBhZ2Ug cGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYgQnVm ZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwgIndy b25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNzZXJ0 KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8IEJ1ZmZlcklzRXhjbHVzaXZlTG9ja2VkKGhlYXBC dWYpKTsKLQotCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQg Ki8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQodm1CdWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZt QnVmKSAhPSBtYXBCbG9jaykKLQkJZWxvZyhFUlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQg dG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQotCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsK LQltYXAgPSAodWludDggKikgUGFnZUdldENvbnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1C dWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+ IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0 YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRfU0VDVElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAo ZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJTWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAo UmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQl7Ci0JCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChy ZWNwdHIpKQotCQkJewotCQkJCUFzc2VydCghSW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0gbG9n X2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7Ci0K LQkJCQkvKgotCQkJCSAqIElmIGRhdGEgY2hlY2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxfbG9n X2hpbnRzPW9uKSwgd2UKLQkJCQkgKiBuZWVkIHRvIHByb3RlY3QgdGhlIGhlYXAgcGFnZSBmcm9t IGJlaW5nIHRvcm4uCi0JCQkJICoKLQkJCQkgKiBJZiBub3QsIHRoZW4gd2UgbXVzdCAqbm90KiB1 cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4gSW4KLQkJCQkgKiB0aGlzIGNhc2UsIHRoZSBGUEkg Zm9yIHRoZSBoZWFwIHBhZ2Ugd2FzIG9taXR0ZWQgZnJvbSB0aGUKLQkJCQkgKiBXQUwgcmVjb3Jk IGluc2VydGVkIGFib3ZlLCBzbyBpdCB3b3VsZCBiZSBpbmNvcnJlY3QgdG8KLQkJCQkgKiB1cGRh dGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLQkJCQkgKi8KLQkJCQlpZiAoWExvZ0hpbnRCaXRJc05l ZWRlZCgpKQotCQkJCXsKLQkJCQkJUGFnZQkJaGVhcFBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBC dWYpOwotCi0JCQkJCVBhZ2VTZXRMU04oaGVhcFBhZ2UsIHJlY3B0cik7Ci0JCQkJfQotCQkJfQot CQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIpOwotCQl9Ci0KLQkJRU5EX0NSSVRfU0VDVElPTigp OwotCX0KLQotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JcmV0dXJu IHN0YXR1czsKLX0KLQogLyoKICAqIFNldCBmbGFncyBpbiB0aGUgVk0gYmxvY2sgY29udGFpbmVk IGluIHRoZSBwYXNzZWQgaW4gdm1CdWYuCiAgKgpAQCAtMzQzLDggKzI0MCw4IEBAIHZpc2liaWxp dHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBC dWYsCiAgKiBpcyBwaW5uZWQgYW5kIGV4Y2x1c2l2ZSBsb2NrZWQuCiAgKi8KIHVpbnQ4Ci12aXNp YmlsaXR5bWFwX3NldF92bWJpdHMoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAot CQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MpCit2aXNpYmlsaXR5bWFwX3NldChSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJICBCdWZmZXIgdm1CdWYsIHVpbnQ4 IGZsYWdzKQogewogCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyho ZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4IDQzOWYzM2I4MDYxLi4z MzQyYWYwMmM3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBk ZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKQEAgLTM0 NCwxMyArMzQ0LDYgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0JZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX1ZJ U0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2libGUgKnhscmVjID0gKHhsX2hlYXBfdmlzaWJsZSAq KSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJzbmFwc2hvdENvbmZsaWN0SG9yaXpv bjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJCQkJIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9y aXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX01V TFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBfbXVsdGlfaW5zZXJ0ICp4bHJlYyA9ICh4bF9oZWFw X211bHRpX2luc2VydCAqKSByZWM7CkBAIC00NTUsOSArNDQ4LDYgQEAgaGVhcDJfaWRlbnRpZnko dWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgogCQkJ aWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAiOwogCQkJYnJlYWs7Ci0JCWNhc2UgWExPR19IRUFQ Ml9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJMRSI7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hF QVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0gIk1VTFRJX0lOU0VSVCI7CiAJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IGNjMDNmMDcwNmU5Li4y ZmRkNGFmOTBhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBA IC00NTQsNyArNDU0LDYgQEAgaGVhcDJfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfT05fQUND RVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU46CiAJCWNhc2UgWExPR19I RUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6CiAJ CWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFURUQ6CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCA0MjIyYmRhYjA3OC4uYzYxOTY0M2UxMjEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTQ3NSwxMiArNDc1LDEyIEBAIFJlc29sdmVS ZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGlj dEhvcml6b24sCiAJICogSWYgd2UgZ2V0IHBhc3NlZCBJbnZhbGlkVHJhbnNhY3Rpb25JZCB0aGVu IHdlIGRvIG5vdGhpbmcgKG5vIGNvbmZsaWN0KS4KIAkgKgogCSAqIFRoaXMgY2FuIGhhcHBlbiB3 aGVuIHJlcGxheWluZyBhbHJlYWR5LWFwcGxpZWQgV0FMIHJlY29yZHMgYWZ0ZXIgYQotCSAqIHN0 YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcgYW4gWExPR19IRUFQMl9W SVNJQkxFCi0JICogcmVjb3JkIHRoYXQgbWFya3MgYXMgZnJvemVuIGEgcGFnZSB3aGljaCB3YXMg YWxyZWFkeSBhbGwtdmlzaWJsZS4gIEl0J3MKLQkgKiBhbHNvIHF1aXRlIGNvbW1vbiB3aXRoIHJl Y29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleCBkZWxldGlvbgotCSAqIChvcmlnaW5hbCBleGVj dXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBhIHJlY292ZXJ5IGNvbmZsaWN0 Ci0JICogd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0aW9uIG9wZXJhdGlvbiBtdXN0 IHRha2UgcGxhY2UgYmVmb3JlCi0JICogcmVwbGF5IG9mIHRoZSBkZWxldGlvbiByZWNvcmQgaXRz ZWxmKS4KKwkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9yIHdoZW4gcmVwbGF5aW5nIGEg cmVjb3JkIHRoYXQgbWFya3MgYXMKKwkgKiBmcm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJlYWR5 IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eQorCSAqIG1hcC4gIEl0J3MgYWxz byBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJpbmcgaW5kZXgKKwkgKiBk ZWxldGlvbiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlvbiBjYW4gcmVhc29uIHRo YXQgYSByZWNvdmVyeQorCSAqIGNvbmZsaWN0IHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9yIHRoZSBk ZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlCisJICogYmVmb3JlIHJlcGxheSBvZiB0 aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCiAJICovCiAJaWYgKCFUcmFuc2FjdGlvbklkSXNW YWxpZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bV94bG9nLmgKaW5kZXggZDg1MDg1OTNlN2MuLjM2NzJmMzcyYWE4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtX3hsb2cuaApAQCAtNjAsNyArNjAsNiBAQAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX09O X0FDQ0VTUwkJMHgxMAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCTB4MjAK ICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUAkweDMwCi0jZGVmaW5lIFhM T0dfSEVBUDJfVklTSUJMRQkJMHg0MAogI2RlZmluZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCAw eDUwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9DS19VUERBVEVEIDB4NjAKICNkZWZpbmUgWExPR19I RUFQMl9ORVdfQ0lECQkweDcwCkBAIC00NDYsMjAgKzQ0NSw2IEBAIHR5cGVkZWYgc3RydWN0IHhs X2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJbnBsYWNlCShvZmZzZXRvZih4 bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQogCi0vKgotICogVGhpcyBpcyB3 aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJpbGl0eSBtYXAgYml0Ci0g KgotICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZmZXIKLSAqIEJhY2t1cCBibGsg MTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF92aXNpYmxlCi17Ci0J VHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl1aW50OAkJZmxhZ3M7Ci19 IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFwVmlzaWJsZSAob2Zmc2V0b2Yo eGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgpKQotCiB0eXBlZGVmIHN0cnVj dCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNTAzLDExICs0ODgsNiBAQCBleHRlcm4gdm9p ZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBl eHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9p ZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVy biBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9i dWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJCQkJCSAgIFRyYW5zYWN0 aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3Mp OwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZnJvbnRl bmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1 bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJCQkJCSAg IGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2li aWxpdHltYXAuaAppbmRleCBmYzcwNTZhOTFlYS4uYzViMWUxZjdhZGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyArMTUsNiBAQAogI2RlZmluZSBWSVNJQklMSVRZTUFQ X0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgotI2luY2x1ZGUgImFj Y2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2suaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCkBAIC0zMSwxNCArMzAs OCBAQCBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX2NsZWFyKFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgaGVhcEJsaywKIGV4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfcGluKFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJCQkJCQkgIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJu IGJvb2wgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZt YnVmKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsCi0JCQkJ CQkJICAgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJCQkJICAgWExv Z1JlY1B0ciByZWNwdHIsCi0JCQkJCQkJICAgQnVmZmVyIHZtQnVmLAotCQkJCQkJCSAgIFRyYW5z YWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkgICB1aW50OCBmbGFncyk7Ci1leHRlcm4gdWlu dDggdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVh cEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncyk7CitleHRlcm4gdWlu dDggdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAor CQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MpOwogZXh0ZXJuIHVpbnQ4IHZpc2li aWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1 ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwog ZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlv biByZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCmluZGV4IDVhZDVjMDIw ODc3Li5lMDFiY2U0Yzk5ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgK QEAgLTIxLDE0ICsyMSw1IEBACiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAy CiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxp ZCB2aXNpYmlsaXR5bWFwCiAJCQkJCQkJCQkJCSAqIGZsYWdzIGJpdHMgKi8KLS8qCi0gKiBUbyBk ZXRlY3QgcmVjb3ZlcnkgY29uZmxpY3RzIGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3Rh bmRieSwgd2UgbmVlZAotICogdG8ga25vdyBpZiBhIHRhYmxlIGlzIGEgdXNlciBjYXRhbG9nIHRh YmxlLiBGb3IgdGhhdCB3ZSBhZGQgYW4gYWRkaXRpb25hbAotICogYml0IGludG8geGxfaGVhcF92 aXNpYmxlLmZsYWdzLCBpbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUuCi0gKgotICogTkI6IFZJU0lC SUxJVFlNQVBfWExPR18qIG1heSBub3QgYmUgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0KCku Ci0gKi8KLSNkZWZpbmUgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMCTB4MDQKLSNkZWZp bmUgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJVFMJKFZJU0lCSUxJVFlNQVBfVkFMSURfQklU UyB8IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTCkKIAogI2VuZGlmCQkJCQkJCS8qIFZJ U0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTEzZTgx NjI4OTAuLmI0Yzg4MGMwODNmIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDI3Myw3 ICs0MjczLDYgQEAgeGxfaGVhcF9wcnVuZQogeGxfaGVhcF9yZXdyaXRlX21hcHBpbmcKIHhsX2hl YXBfdHJ1bmNhdGUKIHhsX2hlYXBfdXBkYXRlCi14bF9oZWFwX3Zpc2libGUKIHhsX2ludmFsaWRf cGFnZQogeGxfaW52YWxpZF9wYWdlX2tleQogeGxfaW52YWxpZGF0aW9ucwotLSAKMi40My4wCgo= --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0015-Inline-TransactionIdFollows-Precedes.patch" Content-Disposition: attachment; filename="v11-0015-Inline-TransactionIdFollows-Precedes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdzf14 RnJvbSA2N2NkMDE2NGY4MWZjOTYxMjg3NWVkZDAyNGI5MTdlZDc5NzA3YjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDA5OjU3OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTUvMjBdIElubGluZSBUcmFuc2FjdGlvbklkRm9sbG93cy9QcmVjZWRlcygpCgpD YWxsaW5nIHRoZXNlIGZyb20gb24tYWNjZXNzIHBydW5pbmcgY29kZSBoYWQgbm90aWNlYWJsZSBv dmVyaGVhZCBpbiBhCnByb2ZpbGUuIFRoZXJlIGRvZXMgbm90IHNlZW0gdG8gYmUgYSByZWFzb24g bm90IHRvIGlubGluZSB0aGVtLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5j IHwgNjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5z YW0uaCAgICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMiBmaWxlcyBj aGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS90cmFuc2FtLmMKaW5kZXggOWEzOTQ1MWEyOWEuLjU1M2Q2NzU2Y2IzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5jCkBAIC0yNzMsNzAgKzI3Myw2IEBAIFRyYW5zYWN0 aW9uSWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25J ZCAqeGlkcykKIAkJCQkJCQkgICBUUkFOU0FDVElPTl9TVEFUVVNfQUJPUlRFRCwgSW52YWxpZFhM b2dSZWNQdHIpOwogfQogCi0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0tLSBpcyBpZDEg bG9naWNhbGx5IDwgaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNh Y3Rpb25JZCBpZDEsIFRyYW5zYWN0aW9uSWQgaWQyKQotewotCS8qCi0JICogSWYgZWl0aGVyIElE IGlzIGEgcGVybWFuZW50IFhJRCB0aGVuIHdlIGNhbiBqdXN0IGRvIHVuc2lnbmVkCi0JICogY29t cGFyaXNvbi4gIElmIGJvdGggYXJlIG5vcm1hbCwgZG8gYSBtb2R1bG8tMl4zMiBjb21wYXJpc29u LgotCSAqLwotCWludDMyCQlkaWZmOwotCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQx KSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCi0JCXJldHVybiAoaWQxIDwgaWQyKTsK LQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlmZiA8IDApOwotfQot Ci0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMgLS0tIGlzIGlkMSBsb2dpY2Fs bHkgPD0gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhUcmFu c2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlp ZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwo aWQyKSkKLQkJcmV0dXJuIChpZDEgPD0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBp ZDIpOwotCXJldHVybiAoZGlmZiA8PSAwKTsKLX0KLQotLyoKLSAqIFRyYW5zYWN0aW9uSWRGb2xs b3dzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID4gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklk Rm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJ CWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlv bklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChpZDEgPiBpZDIpOwotCi0JZGlmZiA9IChpbnQz MikgKGlkMSAtIGlkMik7Ci0JcmV0dXJuIChkaWZmID4gMCk7Ci19Ci0KLS8qCi0gKiBUcmFuc2Fj dGlvbklkRm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KLSAqLwot Ym9vbAotVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2FjdGlvbklkIGlkMSwgVHJh bnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJ c05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChp ZDEgPj0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlm ZiA+PSAwKTsKLX0KLQogCiAvKgogICogVHJhbnNhY3Rpb25JZExhdGVzdCAtLS0gZ2V0IGxhdGVz dCBYSUQgYW1vbmcgYSBtYWluIHhhY3QgYW5kIGl0cyBjaGlsZHJlbgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgK aW5kZXggN2Q4MmNkMmViNTYuLmM5ZTIwNDE4Mjc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTI1 NSw2ICsyNTUsNzIgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJhbnNhbVZhcmlhYmxlc0RhdGEKIH0gVHJh bnNhbVZhcmlhYmxlc0RhdGE7CiAKIAorCisvKgorICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0t LSBpcyBpZDEgbG9naWNhbGx5IDwgaWQyPworICovCitzdGF0aWMgaW5saW5lIGJvb2wKK1RyYW5z YWN0aW9uSWRQcmVjZWRlcyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7 CisJLyoKKwkgKiBJZiBlaXRoZXIgSUQgaXMgYSBwZXJtYW5lbnQgWElEIHRoZW4gd2UgY2FuIGp1 c3QgZG8gdW5zaWduZWQKKwkgKiBjb21wYXJpc29uLiAgSWYgYm90aCBhcmUgbm9ybWFsLCBkbyBh IG1vZHVsby0yXjMyIGNvbXBhcmlzb24uCisJICovCisJaW50MzIJCWRpZmY7CisKKwlpZiAoIVRy YW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkK KwkJcmV0dXJuIChpZDEgPCBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJ cmV0dXJuIChkaWZmIDwgMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVx dWFscyAtLS0gaXMgaWQxIGxvZ2ljYWxseSA8PSBpZDI/CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9v bAorVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoVHJhbnNhY3Rpb25JZCBpZDEsIFRyYW5z YWN0aW9uSWQgaWQyKQoreworCWludDMyCQlkaWZmOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNO b3JtYWwoaWQxKSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCisJCXJldHVybiAoaWQx IDw9IGlkMik7CisKKwlkaWZmID0gKGludDMyKSAoaWQxIC0gaWQyKTsKKwlyZXR1cm4gKGRpZmYg PD0gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkRm9sbG93cyAtLS0gaXMgaWQxIGxvZ2lj YWxseSA+IGlkMj8KKyAqLworc3RhdGljIGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93 cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7CisJaW50MzIJCWRpZmY7 CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNO b3JtYWwoaWQyKSkKKwkJcmV0dXJuIChpZDEgPiBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlk MSAtIGlkMik7CisJcmV0dXJuIChkaWZmID4gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklk Rm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KKyAqLworc3RhdGlj IGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQg aWQxLCBUcmFuc2FjdGlvbklkIGlkMikKK3sKKwlpbnQzMgkJZGlmZjsKKworCWlmICghVHJhbnNh Y3Rpb25JZElzTm9ybWFsKGlkMSkgfHwgIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDIpKQorCQly ZXR1cm4gKGlkMSA+PSBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJcmV0 dXJuIChkaWZmID49IDApOworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlleHRlcm4g ZGVjbGFyYXRpb25zCiAgKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yNzQsMTAgKzM0MCw2IEBAIGV4 dGVybiBib29sIFRyYW5zYWN0aW9uSWREaWRBYm9ydChUcmFuc2FjdGlvbklkIHRyYW5zYWN0aW9u SWQpOwogZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25JZENvbW1pdFRyZWUoVHJhbnNhY3Rpb25JZCB4 aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gdm9pZCBUcmFuc2Fj dGlvbklkQXN5bmNDb21taXRUcmVlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnhpZHMsIFRyYW5z YWN0aW9uSWQgKnhpZHMsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiB2b2lkIFRyYW5zYWN0aW9u SWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAq eGlkcyk7Ci1leHRlcm4gYm9vbCBUcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNhY3Rpb25JZCBp ZDEsIFRyYW5zYWN0aW9uSWQgaWQyKTsKLWV4dGVybiBib29sIFRyYW5zYWN0aW9uSWRQcmVjZWRl c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQgaWQxLCBUcmFuc2FjdGlvbklkIGlkMik7Ci1leHRlcm4g Ym9vbCBUcmFuc2FjdGlvbklkRm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25J ZCBpZDIpOwotZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2Fj dGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgVHJh bnNhY3Rpb25JZExhdGVzdChUcmFuc2FjdGlvbklkIG1haW54aWQsCiAJCQkJCQkJCQkJIGludCBu eGlkcywgY29uc3QgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gWExvZ1JlY1B0ciBUcmFu c2FjdGlvbklkR2V0Q29tbWl0TFNOKFRyYW5zYWN0aW9uSWQgeGlkKTsKLS0gCjIuNDMuMAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0016-Unset-all-visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v11-0016-Unset-all-visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdzj15 RnJvbSA2YTRmMDA5NTc5ZTMwNjczNzFkNTBiYjg1MDgwMjQzYTI2ZmQzMzNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM1OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTYvMjBdIFVuc2V0IGFsbC12aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK CkluIHBydW5lL2ZyZWV6ZSBjb2RlLCB3ZSBkZWxheSB1bnNldHRpbmcgYWxsLXZpc2libGUvYWxs LWZyb3plbiBpbiB0aGUKcHJlc2VuY2Ugb2YgZGVhZCBpdGVtcyB0byBhbGxvdyBvcHBvcnR1bmlz dGljYWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlCndob2xlIHBhZ2Ugd291bGQgYmUgZnJvemVu IGV4Y2VwdCBmb3IgdGhvc2UgZGVhZCBpdGVtcyAtLSB3aGljaCBhcmUKcmVtb3ZlZCBsYXRlciBp biB2YWN1dW0ncyB0aGlyZCBwaGFzZS4KCkZ1dHVyZSBjb21taXRzIHdpbGwgYWxsb3cgb24tYWNj ZXNzIHBydW5pbmcgdG8gc2V0IHRoZSBWTSwgd2hpY2ggbWVhbnMKYWxsLXZpc2libGUgd2lsbCBi ZSBpbml0aWFsaXplZCB0byB0cnVlIGluc3RlYWQgb2YgZmFsc2UgYW5kIHdlIHdpbGwgZG8KZXh0 cmEgYm9va2tlZXBpbmcgaW4gaGVhcF9wcnVuZV91bmNoYW5nZWRfbHBfbm9ybWFsKCkgdG8ga2Vl cCB0cmFjayBvZgp3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4KCkJlY2F1 c2Ugb24tYWNjZXNzIHBydW5pbmcgd2lsbCBub3QgZnJlZXplIHR1cGxlcywgaXQgbWFrZXMgc2Vu c2UgdG8KdW5zZXQgYWxsLXZpc2libGUgYXMgc29vbiBhcyB3ZSBlbmNvdW50ZXIgYW4gTFBfREVB RCBpdGVtIGFuZAphdm9pZCBjb250aW51ZWQgYm9va2tlZXBpbmcgc2luY2Ugd2Uga25vdyB0aGUg cGFnZSBpcyBub3QgYWxsLXZpc2libGUKYW5kIHdlIHdvbid0IGJlIGFibGUgdG8gcmVtb3ZlIHRo b3NlIGRlYWQgaXRlbXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg fCAxMCArKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggYzY5MzVlNDVjZWMu LmJhOGRkYzdmYTM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTUwMyw4 ICsxNTAzLDExIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwg T2Zmc2V0TnVtYmVyIG9mZm51bSwKIAogCS8qCiAJICogRGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0 dGluZyBhbGxfdmlzaWJsZSB1bnRpbCBsYXRlciBkdXJpbmcgcHJ1bmluZy4KLQkgKiBSZW1vdmFi bGUgZGVhZCB0dXBsZXMgc2hvdWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZSBwYWdlLgorCSAq IFJlbW92YWJsZSBkZWFkIHR1cGxlcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBh Z2UuIElmIHdlIHdvbid0CisJICogYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlz aWJsZSBub3csIHRob3VnaC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQor CQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAog CS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRv ZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE3NjIsOCArMTc2 NSwxMSBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2UsIFBy dW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3QgdW5z ZXQgYWxsX3Zpc2libGUgdW50aWwgbGF0ZXIsIGF0IHRoZSBlbmQgb2YKIAkgKiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVzIHRvIGF0dGVtcHQgdG8gZnJl ZXplCiAJICogdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxvbmcgYXMgd2UgdW5zZXQgaXQg YmVmb3JlIHVwZGF0aW5nIHRoZQotCSAqIHZpc2liaWxpdHkgbWFwLCB0aGlzIHdpbGwgYmUgY29y cmVjdC4KKwkgKiB2aXNpYmlsaXR5IG1hcCwgdGhpcyB3aWxsIGJlIGNvcnJlY3QuIElmIHdlIHdv bid0IGF0dGVtcHQgZnJlZXppbmcsCisJICogdGhvdWdoLCBqdXN0IHVuc2V0IGFsbC12aXNpYmxl IG5vdy4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCQlwcnN0YXRlLT5h bGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCS8qIFJlY29yZCB0 aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRvZmZzZXRzW3Byc3Rh dGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKLS0gCjIuNDMuMAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0017-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v11-0017-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdzm16 RnJvbSA5MDMwMzhjOTVjNDI1ZmZhZjM1OTI1NDgzYWUzZjNhNGMwMTBmNWE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTcvMjBdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVu LgoKU3VwcG9ydGluZyB0aGlzIHJlcXVpcmVzIHBhc3NpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hl dGhlciB0aGUgcmVsYXRpb24KaXMgbW9kaWZpZWQgZnJvbSB0aGUgZXhlY3V0b3IgZG93biB0byB0 aGUgc2NhbiBkZXNjcmlwdG9yLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0g c2V0dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWlu ZyBoZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAxNSArKysr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysr Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgICB8IDY3ICsr KysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAg ICAgICAgICB8IDQ2ICsrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZWFtLmMgICAgICAgICAgICB8IDM5ICsrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgNCArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMgICAgICAgICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEhlYXBzY2FuLmMgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYyAgICAgICAgICB8IDE4ICsrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vx c2Nhbi5jICAgICAgICAgICAgfCAyNCArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aCAgICAgICAgICAgICAgICAgICAgfCAxMSArKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICAgICAgICAgICB8IDI0ICsrKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmggICAgICAgICAgICAgICAgICB8ICA2ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICA2ICsrCiAuLi4vdC8wMzVfc3RhbmRieV9sb2dp Y2FsX2RlY29kaW5nLnBsICAgICAgICAgfCAgMyArLQogMTYgZmlsZXMgY2hhbmdlZCwgMjc3IGlu c2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5k ZXggNmYxNjFhNmVhYjIuLmY5ZTUwZDQ3YWVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpA QCAtNTU2LDYgKzU1Niw3IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNz Y2FuKQogCUJ1ZmZlcgkJYnVmZmVyID0gc2Nhbi0+cnNfY2J1ZjsKIAlCbG9ja051bWJlciBibG9j ayA9IHNjYW4tPnJzX2NibG9jazsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKKwlCdWZmZXIJICAgKnZt YnVmZmVyID0gTlVMTDsKIAlQYWdlCQlwYWdlOwogCWludAkJCWxpbmVzOwogCWJvb2wJCWFsbF92 aXNpYmxlOwpAQCAtNTcwLDcgKzU3MSw5IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNj YW5EZXNjIHNzY2FuKQogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZv ciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29w dChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIpOworCWlmIChzc2Nhbi0+cnNfZmxhZ3MgJiBT T19BTExPV19WTV9TRVQpCisJCXZtYnVmZmVyID0gJnNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBf cGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5yc19yZCwgYnVmZmVyLCB2bWJ1ZmZlcik7CiAK IAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2NrIG9uIHRoZSBidWZmZXIgY29udGVudCB3 aGlsZSBleGFtaW5pbmcgdHVwbGUKQEAgLTEyNDcsNiArMTI1MCw3IEBAIGhlYXBfYmVnaW5zY2Fu KFJlbGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJCQkJICBz aXplb2YoVEJNSXRlcmF0ZVJlc3VsdCkpOwogCX0KIAorCXNjYW4tPnJzX3ZtYnVmZmVyID0gSW52 YWxpZEJ1ZmZlcjsKIAogCXJldHVybiAoVGFibGVTY2FuRGVzYykgc2NhbjsKIH0KQEAgLTEyODUs NiArMTI4OSwxMiBAQCBoZWFwX3Jlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuLCBTY2FuS2V5IGtl eSwgYm9vbCBzZXRfcGFyYW1zLAogCQlzY2FuLT5yc19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9 CiAKKwlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNl QnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwkJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlk QnVmZmVyOworCX0KKwogCS8qCiAJICogU09fVFlQRV9CSVRNQVBTQ0FOIHdvdWxkIGJlIGNsZWFu ZWQgdXAgaGVyZSwgYnV0IGl0IGRvZXMgbm90IGhvbGQgYW55CiAJICogYWRkaXRpb25hbCBkYXRh IHZzIGEgbm9ybWFsIEhlYXBTY2FuCkBAIC0xMzE3LDYgKzEzMjcsOSBAQCBoZWFwX2VuZHNjYW4o VGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkK IAkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc19jYnVmKTsKIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNj YW4tPnJzX3ZtYnVmZmVyKSkKKwkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisK IAkvKgogCSAqIE11c3QgZnJlZSB0aGUgcmVhZCBzdHJlYW0gYmVmb3JlIGZyZWVpbmcgdGhlIEJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5LgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggYmNiYWM4NDRiYjYuLmYwNWI5ZTQ5NjhkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTg1LDYgKzg1LDcgQEAgaGVhcGFtX2luZGV4 X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKIAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsK IAloc2Nhbi0+eHNfY2J1ZiA9IEludmFsaWRCdWZmZXI7CisJaHNjYW4tPnhzX3ZtYnVmZmVyID0g SW52YWxpZEJ1ZmZlcjsKIAogCXJldHVybiAmaHNjYW4tPnhzX2Jhc2U7CiB9CkBAIC05OSw2ICsx MDAsMTIgQEAgaGVhcGFtX2luZGV4X2ZldGNoX3Jlc2V0KEluZGV4RmV0Y2hUYWJsZURhdGEgKnNj YW4pCiAJCVJlbGVhc2VCdWZmZXIoaHNjYW4tPnhzX2NidWYpOwogCQloc2Nhbi0+eHNfY2J1ZiA9 IEludmFsaWRCdWZmZXI7CiAJfQorCisJaWYgKEJ1ZmZlcklzVmFsaWQoaHNjYW4tPnhzX3ZtYnVm ZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoaHNjYW4tPnhzX3ZtYnVmZmVyKTsKKwkJaHNjYW4t PnhzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0x MzgsNyArMTQ1LDggQEAgaGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZldGNo VGFibGVEYXRhICpzY2FuLAogCQkgKiBQcnVuZSBwYWdlLCBidXQgb25seSBpZiB3ZSB3ZXJlbid0 IGFscmVhZHkgb24gdGhpcyBwYWdlCiAJCSAqLwogCQlpZiAocHJldl9idWYgIT0gaHNjYW4tPnhz X2NidWYpCi0JCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4t PnhzX2NidWYpOworCQkJaGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNfYmFzZS5yZWwsIGhz Y2FuLT54c19jYnVmLAorCQkJCQkJCQlzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/IE5VTEwgOiAm aHNjYW4tPnhzX3ZtYnVmZmVyKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUg YnVmZmVyIHNvIHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzEsNiArMjQ3OSw3 IEBAIEJpdG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVy YXRlUmVzdWx0ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNf UEVSX1BBR0VdOwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9 IE5VTEw7CiAKIAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwog CUFzc2VydChoc2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUxNyw3ICsyNTI2LDkgQEAgQml0 bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUg YW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUu CiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAo c2Nhbi0+cnNfZmxhZ3MgJiBTT19BTExPV19WTV9TRVQpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5y c192bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZt YnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZl ciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwppbmRleCBiYThkZGM3ZmEzNS4uNjlkOGU0MmJkYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jCkBAIC0xOTgsOSArMTk4LDEzIEBAIHN0YXRpYyBib29sIGlkZW50aWZ5X2Fu ZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKICAqIGlmIHRoZXJlJ3Mgbm90 IGFueSB1c2UgaW4gcHJ1bmluZy4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIHBpbiBvbiB0aGUg YnVmZmVyLCBhbmQgbXVzdCAqbm90KiBoYXZlIGEgbG9jayBvbiBpdC4KKyAqCisgKiBJZiB2bWJ1 ZmZlciBpcyBub3QgTlVMTCwgaXQgaXMgb2theSBmb3IgcHJ1bmluZyB0byBzZXQgdGhlIHZpc2li aWxpdHkgbWFwIGlmCisgKiB0aGUgcGFnZSBpcyBhbGwgdmlzaWJsZS4gV2Ugd2lsbCB0YWtlIGNh cmUgb2YgcGlubmluZyBhbmQsIGlmIG5lZWRlZCwKKyAqIHJlYWRpbmcgaW4gdGhlIHBhZ2Ugb2Yg dGhlIHZpc2liaWxpdHkgbWFwLgogICovCiB2b2lkCi1oZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQoraGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2bWJ1ZmZlcikKIHsKIAlQYWdlCQlw YWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCVRyYW5zYWN0aW9uSWQgcHJ1bmVfeGlkOwpA QCAtMjY0LDYgKzI2OCwxMyBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyKQogCQl7CiAJCQlPZmZzZXROdW1iZXIgZHVtbXlfb2ZmX2xvYzsKIAkJ CVBydW5lRnJlZXplUmVzdWx0IHByZXN1bHQ7CisJCQlpbnQJCQlvcHRpb25zID0gMDsKKworCQkJ aWYgKHZtYnVmZmVyKQorCQkJeworCQkJCXZpc2liaWxpdHltYXBfcGluKHJlbGF0aW9uLCBCdWZm ZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2bWJ1ZmZlcik7CisJCQkJb3B0aW9ucyA9IEhFQVBf UEFHRV9QUlVORV9VUERBVEVfVk07CisJCQl9CiAKIAkJCS8qCiAJCQkgKiBGb3Igbm93LCBwYXNz IG1hcmtfdW51c2VkX25vdyBhcyBmYWxzZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKQEAgLTI3 MSw5ICsyODIsMTAgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcikKIAkJCSAqIHRoYXQgZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nIHdpdGggdGhl IGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCiAJCQkgKi8KIAkJCWhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIGZhbHNlLAotCQkJCQkJCQkJICAgSW52YWxpZEJ1ZmZl ciwKLQkJCQkJCQkJCSAgIHZpc3Rlc3QsIDAsCi0JCQkJCQkJCQkgICBOVUxMLCAmcHJlc3VsdCwg UFJVTkVfT05fQUNDRVNTLCAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7CisJCQkJCQkJCQkg ICB2bWJ1ZmZlciA/ICp2bWJ1ZmZlciA6IEludmFsaWRCdWZmZXIsCisJCQkJCQkJCQkgICB2aXN0 ZXN0LCBvcHRpb25zLAorCQkJCQkJCQkJICAgTlVMTCwgJnByZXN1bHQsIFBSVU5FX09OX0FDQ0VT UywKKwkJCQkJCQkJCSAgICZkdW1teV9vZmZfbG9jLCBOVUxMLCBOVUxMKTsKIAogCQkJLyoKIAkJ CSAqIFJlcG9ydCB0aGUgbnVtYmVyIG9mIHR1cGxlcyByZWNsYWltZWQgdG8gcGdzdGF0cy4gIFRo aXMgaXMKQEAgLTUxOSwxMiArNTMxLDE3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIGFsbC1mcm96ZW4gZm9yIHVzZSBp biBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIGFuZCB0byB1cGRhdGUgdGhlIFZNIGlmCiAJICogdGhl IGNhbGxlciByZXF1ZXN0cyBpdC4KIAkgKgotCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gYXR0 ZW1wdHMgZnJlZXppbmcgYW5kIHNldHRpbmcgdGhlIFZNIGJpdHMuIEJ1dAotCSAqIG90aGVyIGNh bGxlcnMgY291bGQgZG8gZWl0aGVyIG9uZS4gVGhlIHZpc2liaWxpdHkgYm9va2tlZXBpbmcgaXMK LQkgKiByZXF1aXJlZCBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZyAoaW4gYWRkaXRpb24gdG8g c2V0dGluZyB0aGUgVk0KLQkgKiBiaXRzKSBiZWNhdXNlIHdlIG9ubHkgY29uc2lkZXIgb3Bwb3J0 dW5pc3RpY2FsbHkgZnJlZXppbmcgdHVwbGVzIGlmIHRoZQotCSAqIHdob2xlIHBhZ2Ugd291bGQg YmVjb21lIGFsbC1mcm96ZW4gb3IgaWYgdGhlIHdob2xlIHBhZ2Ugd2lsbCBiZSBmcm96ZW4KLQkg KiBleGNlcHQgZm9yIGRlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHZhY3V1bS4K KwkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVNIGF0dGVtcHRzIGZyZWV6aW5nLiBCdXQgb3RoZXIg Y2FsbGVycyBjb3VsZC4gVGhlCisJICogdmlzaWJpbGl0eSBib29ra2VlcGluZyBpcyByZXF1aXJl ZCBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZyAoaW4KKwkgKiBhZGRpdGlvbiB0byBzZXR0aW5n IHRoZSBWTSBiaXRzKSBiZWNhdXNlIHdlIG9ubHkgY29uc2lkZXIKKwkgKiBvcHBvcnR1bmlzdGlj YWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlIHdob2xlIHBhZ2Ugd291bGQgYmVjb21lCisJICog YWxsLWZyb3plbiBvciBpZiB0aGUgd2hvbGUgcGFnZSB3aWxsIGJlIGZyb3plbiBleGNlcHQgZm9y IGRlYWQgdHVwbGVzCisJICogdGhhdCB3aWxsIGJlIHJlbW92ZWQgYnkgdmFjdXVtLiBCdXQgaWYg Y29uc2lkZXJfdXBkYXRlX3ZtIGlzIGZhbHNlLAorCSAqIHdlJ2xsIG5vdCBzZXQgdGhlIFZNIGV2 ZW4gaWYgdGhlIHBhZ2UgaXMgZGlzY292ZXJlZCB0byBiZSBhbGwtdmlzaWJsZS4KKwkgKgorCSAq IElmIG9ubHkgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpcyBwYXNzZWQgYW5kIG5vdAorCSAq IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsIHByc3RhdGUuYWxsX2Zyb3plbiBtdXN0IGJlIGluaXRp YWxpemVkIHRvIGZhbHNlCisJICogYmVjYXVzZSB3ZSB3aWxsIG5vdCBjYWxsIGhlYXBfcHJlcGFy ZV9mcmVlemVfdHVwbGUoKSBvbiBlYWNoIHR1cGxlLgogCSAqCiAJICogSWYgb25seSB1cGRhdGlu ZyB0aGUgVk0sIHdlIG11c3QgaW5pdGlhbGl6ZSBhbGxfZnJvemVuIHRvIGZhbHNlLCBhcwogCSAq IGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGVhY2gg dHVwbGUgb24gdGhlCkBAIC01MzYsNyArNTUzLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJICogd2hldGhlciBvciBub3Qg dG8gZnJlZXplIGJ1dCBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciBvciBub3QgdG8gdXBkYXRlCiAJ ICogdGhlIFZNIHNvIHRoYXQgd2UgZG9uJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCiAJ ICoKLQkgKiBJZiBub3QgZnJlZXppbmcgb3IgdXBkYXRpbmcgdGhlIFZNLCB3ZSBvdGhlcndpc2Ug YXZvaWQgdGhlIGV4dHJhCisJICogSWYgbm90IGZyZWV6aW5nIGFuZCBub3QgdXBkYXRpbmcgdGhl IFZNLCB3ZSBhdm9pZCB0aGUgZXh0cmEKIAkgKiBib29ra2VlcGluZy4gSW5pdGlhbGl6aW5nIGFs bF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUgd29yawogCSAqIHRvIHVwZGF0 ZSB0aGVtIGluIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KIAkgKi8K QEAgLTg4NSwxMiArOTAyLDMwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsK IAl9CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5kIHdlJ3JlIG5v dCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2liaWxpdHkgbWFw IGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJICogdGhlIHBh Z2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBpbmNsdWRpbmcg YQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGluIHRoZSBXQUwu IFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2VzcyBwcnVuaW5n IGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFsaWQuCisJICov CisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS5jb25zaWRlcl91 cGRhdGVfdm0gJiYKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYgIWRv X2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklzRGlydHkoYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJO ZWVkc0JhY2t1cChidWZmZXIpKSkKKwl7CisJCXByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtID0g ZmFsc2U7CisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxz ZTsKKwl9CisKIAlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNp YmxlKTsKIAogCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2Vk IG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nh bl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9m cm96ZW4gdmFyaWFibGVzLgorCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBi YXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoaWYKKwkgKiBwcm92aWRlZCwgZS5nLiBi eSB2YWN1dW0gZnJvbSB0aGUgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKQorCSAqIGNh bGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB2YXJpYWJsZXMuCiAJICov CiAJaWYgKHByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtKQogCXsKQEAgLTIyODQsOCArMjMxOSw4 IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1 cGxlcywKICAqIC0gUmVhcGluZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQg YXJlIGFscmVhZHkgTFBfREVBRCBhcmUKICAqICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAt IFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdl IG1heSBiZSBtYXJrZWQKLSAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKiAtIFZN IHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJIGFuZCBvbi1hY2Nlc3MsIHRo ZSBoZWFwIHBhZ2UKKyAqICAgbWF5IGJlIG1hcmtlZCBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3pl bi4KICAqCiAgKiBUaGVzZSBjaGFuZ2VzIGFsbCBoYXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVzZSBh IHNpbmdlbCBXQUwgcmVjb3JkIGZvciB0aGVtCiAgKiBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2lu ZGV4YW0uYwppbmRleCA4NmQxMWY0ZWM3OS4uNDYwM2VjZTA5YmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYwpAQCAtMjg5LDYgKzI4OSwzMiBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCXJldHVybiBzY2FuOwogfQogCisvKgorICogU2ltaWxhciB0byBp bmRleF9iZWdpbnNjYW4oKSwgYnV0IGFsbG93cyB0aGUgY2FsbGVyIHRvIGluZGljYXRlIHdoZXRo ZXIgdGhlCisgKiBxdWVyeSBtb2RpZmllcyB0aGUgdW5kZXJseWluZyBiYXNlIHJlbGF0aW9uLiBU aGlzIGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyCisgKiB3YW50cyB0byBhdHRlbXB0IG1hcmtpbmcg cGFnZXMgaW4gdGhlIGJhc2UgcmVsYXRpb24gYXMgYWxsLXZpc2libGUgaW4gdGhlCisgKiB2aXNp YmlsaXR5IG1hcCBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcuCisgKi8KK0luZGV4U2NhbkRlc2MK K2luZGV4X2JlZ2luc2Nhbl92bXNldChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCSAgUmVs YXRpb24gaW5kZXhSZWxhdGlvbiwKKwkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJICBJ bmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCSAgaW50IG5rZXlzLCBp bnQgbm9yZGVyYnlzLCBib29sIG1vZGlmaWVzX2Jhc2VfcmVsKQoreworCUluZGV4U2NhbkRlc2Mg c2NhbjsKKworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJICAg aW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIHNuYXBzaG90LAorCQkJCQkJICAgaW5zdHJ1bWVudCwK KwkJCQkJCSAgIG5rZXlzLCBub3JkZXJieXMpOworCisJc2Nhbi0+eHNfaGVhcGZldGNoLT5tb2Rp Zmllc19iYXNlX3JlbCA9IG1vZGlmaWVzX2Jhc2VfcmVsOworCisJcmV0dXJuIHNjYW47Cit9CisK IC8qCiAgKiBpbmRleF9iZWdpbnNjYW5fYml0bWFwIC0gc3RhcnQgYSBzY2FuIG9mIGFuIGluZGV4 IHdpdGggYW1nZXRiaXRtYXAKICAqCkBAIC02MjAsNiArNjQ2LDI2IEBAIGluZGV4X2JlZ2luc2Nh bl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKIAlyZXR1cm4g c2NhbjsKIH0KIAorLyoKKyAqIFBhcmFsbGVsIHZlcnNpb24gb2YgaW5kZXhfYmVnaW5zY2FuX3Zt c2V0KCkKKyAqLworSW5kZXhTY2FuRGVzYworaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0 KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLAorCQkJCQkJCSAgIEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkgICBpbnQgbmtleXMsIGludCBu b3JkZXJieXMsCisJCQkJCQkJICAgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLAorCQkJCQkJ CSAgIGJvb2wgbW9kaWZpZXNfYmFzZV9yZWwpCit7CisJSW5kZXhTY2FuRGVzYyBzY2FuOworCisJ c2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwcmVsLCBpbmRleHJlbCwKKwkJCQkJ CQkJCWluc3RydW1lbnQsCisJCQkJCQkJCQlua2V5cywgbm9yZGVyYnlzLAorCQkJCQkJCQkJcHNj YW4pOworCXNjYW4tPnhzX2hlYXBmZXRjaC0+bW9kaWZpZXNfYmFzZV9yZWwgPSBtb2RpZmllc19i YXNlX3JlbDsKKwlyZXR1cm4gc2NhbjsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICogaW5k ZXhfZ2V0bmV4dF90aWQgLSBnZXQgdGhlIG5leHQgVElEIGZyb20gYSBzY2FuCiAgKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggYTU2YzVlY2ViMTQuLjY3ZGJmOTlmNWI1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTQ5LDYgKzQ5LDEwIEBACiBjaGFyCSAgICpk ZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2QgPSBERUZBVUxUX1RBQkxFX0FDQ0VTU19NRVRIT0Q7 CiBib29sCQlzeW5jaHJvbml6ZV9zZXFzY2FucyA9IHRydWU7CiAKKy8qIEhlbHBlciBmb3IgdGFi bGVfYmVnaW5zY2FuX3BhcmFsbGVsKCkgYW5kIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNl dCgpICovCitzdGF0aWMgVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfY29t bW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJ CQkJCQkJCQkJIHVpbnQzMiBmbGFncyk7CisKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICog U2xvdCBmdW5jdGlvbnMuCkBAIC0xNjIsMTIgKzE2NiwxNCBAQCB0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKIAl9 CiB9CiAKLVRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBy ZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQorLyoKKyAqIENvbW1vbiBoZWxw ZXIgZm9yIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbCgpIGFuZCB0YWJsZV9iZWdpbnNjYW5fcGFy YWxsZWxfdm1zZXQoKQorICovCitzdGF0aWMgVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsX2NvbW1vbihSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNj IHBzY2FuLAorCQkJCQkJCQl1aW50MzIgZmxhZ3MpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7Ci0J dWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8Ci0JCVNPX0FMTE9XX1NUUkFUIHwgU09f QUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9y RXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsKIApAQCAt MTg4LDYgKzE5NCwzMSBAQCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRp b24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKIAkJCQkJCQkJCQkJcHNjYW4sIGZsYWdz KTsKIH0KIAorVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9u IHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCit7CisJdWludDMyCQlmbGFn cyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8 IFNPX0FMTE9XX1BBR0VNT0RFOworCisJcmV0dXJuIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF9j b21tb24ocmVsYXRpb24sIHBzY2FuLCBmbGFncyk7Cit9CisKKy8qCisgKiBQYXJhbGxlbCB2ZXJz aW9uIG9mIHRhYmxlX2JlZ2luc2Nhbl92bXNldCgpCisgKi8KK1RhYmxlU2NhbkRlc2MKK3RhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJs ZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCSAgIGJvb2wgbW9kaWZpZXNfcmVsKQoreworCXVpbnQz MgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9X X1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKworCWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFn cyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs X2NvbW1vbihyZWxhdGlvbiwgcHNjYW4sIGZsYWdzKTsKK30KKwogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKiBJbmRleCBzY2FuIHJlbGF0ZWQgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKaW5kZXggZmYxMmUyZTEzNjQuLjJlMDQ3NGM5NDhhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dt YXJrLCB0aGUgcmVsYXRpb24gaXMgbW9kaWZpZWQgKi8KKwkJCWVzdGF0ZS0+ZXNfbW9kaWZpZWRf cmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJ CQkJCQkJCQkJCXJjLT5ydGkpOworCiAJCQkvKiBDaGVjayB0aGF0IHJlbGF0aW9uIGlzIGEgbGVn YWwgdGFyZ2V0IGZvciBtYXJraW5nICovCiAJCQlpZiAocmVsYXRpb24pCiAJCQkJQ2hlY2tWYWxp ZFJvd01hcmtSZWwocmVsYXRpb24sIHJjLT5tYXJrVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCmluZGV4IGZkYzY1YzJiNDJiLi4yOGEwNmRjZDI0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMKQEAgLTg5Myw2ICs4OTMsOCBAQCBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAq ZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQllc3RhdGUtPmVzX3Jlc3Vs dF9yZWxhdGlvbnMgPSAoUmVzdWx0UmVsSW5mbyAqKikKIAkJCXBhbGxvYzAoZXN0YXRlLT5lc19y YW5nZV90YWJsZV9zaXplICogc2l6ZW9mKFJlc3VsdFJlbEluZm8gKikpOwogCWVzdGF0ZS0+ZXNf cmVzdWx0X3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlc3VsdFJlbEluZm87CisJZXN0YXRlLT5lc19t b2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlk cywKKwkJCQkJCQkJCQkJCXJ0aSk7CiAKIAkvKgogCSAqIFNhdmluZyBpbiB0aGUgbGlzdCBhbGxv d3MgdG8gYXZvaWQgbmVlZGxlc3NseSB0cmF2ZXJzaW5nIHRoZSB3aG9sZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2ZlMC4uYWY2ZGI5Zjc5 MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUs MTEgKzEwNSwxNiBAQCBCaXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpu b2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJYm9v bAkJbW9kaWZpZXNfcmVsID0KKwkJCWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBz LnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmll ZF9yZWxpZHMpOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCQl0YWJsZV9i ZWdpbnNjYW5fYm0obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCSAgIG5vZGUt PnNzLnBzLnN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5VTEwp OworCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIAl9CiAKIAlub2Rl LT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0b3I7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggN2ZjYWEzN2ZlNjIuLmMyZmZi ZDNiMDhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC0xMDIsMTYgKzEw MiwyMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2Mg PT0gTlVMTCkKIAl7CisKKwkJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWwgPQorCQkJYm1zX2lzX21l bWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYg dGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxs eSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVs LgogCQkgKi8KLQkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVu dFJlbGF0aW9uLAotCQkJCQkJCQkgICBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAotCQkJCQkJCQkg ICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQs Ci0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNz X051bU9yZGVyQnlLZXlzKTsKKwkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW5fdm1zZXQobm9k ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJCSBub2RlLT5pc3NfUmVsYXRpb25E ZXNjLAorCQkJCQkJCQkJCSBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkJCSAmbm9kZS0+ aXNzX0luc3RydW1lbnQsCisJCQkJCQkJCQkJIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJ CQkJCQkgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkJCSBtb2RpZmllc19iYXNl X3JlbCk7CiAKIAkJbm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDk0MDQ3ZDI5NDMwLi5mZDY5Mjc1YzE4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC02NSwxMyArNjUsMTggQEAgU2VxTmV4dChTZXFTY2Fu U3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCWJvb2wJCW1vZGlm aWVzX3JlbCA9CisJCQlibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+ c2NhbnJlbGlkLAorCQkJCQkJICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkJLyoK IAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdl J3JlIHNlcmlhbGx5CiAJCSAqIGV4ZWN1dGluZyBhIHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBi ZSBwYXJhbGxlbC4KIAkJICovCi0JCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKG5vZGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiwKLQkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKLQkJ CQkJCQkJICAgMCwgTlVMTCk7CisJCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuX3Ztc2V0KG5v ZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCQkgZXN0YXRlLT5lc19zbmFwc2hv dCwKKwkJCQkJCQkJCQkgMCwgTlVMTCwgbW9kaWZpZXNfcmVsKTsKKwogCQlub2RlLT5zcy5zc19j dXJyZW50U2NhbkRlc2MgPSBzY2FuZGVzYzsKIAl9CiAKQEAgLTM2Niw2ICszNzEsNyBAQCBFeGVj U2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJIFBhcmFsbGVs Q29udGV4dCAqcGN4dCkKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRl OworCWJvb2wJCW1vZGlmaWVzX3JlbDsKIAlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAK IAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwpA QCAtMzczLDggKzM3OSwxMSBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRl ICpub2RlLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3Qp OwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2Rl X2lkLCBwc2Nhbik7CisJbW9kaWZpZXNfcmVsID0gYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9k ZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCQkJIGVzdGF0ZS0+ZXNfbW9kaWZpZWRf cmVsaWRzKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQotCQl0YWJsZV9iZWdpbnNj YW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7CisJCXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBz Y2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0 LDggKzQxMywxMyBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpu b2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxU YWJsZVNjYW5EZXNjIHBzY2FuOworCWJvb2wJCW1vZGlmaWVzX3JlbCA9CisJCWJtc19pc19tZW1i ZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCSAgbm9kZS0+ c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CiAKIAlwc2NhbiA9IHNobV90b2NfbG9v a3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwog CW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCSAg IHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXgg NWIyYWIxODFiNWYuLmJmMjcyYzJjMzdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTgwLDYgKzE4MCwx MSBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSBpbnQgbmtleXMsIGludCBu b3JkZXJieXMpOworZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX3Ztc2V0KFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbGF0aW9u LAorCQkJCQkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJCQkJCSAgIEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkJCQkgICBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIGJvb2wgbW9kaWZpZXNfaGVhcF9yZWwpOwogZXh0ZXJuIEluZGV4U2NhbkRl c2MgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJ CQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50LApAQCAtMjA2LDYgKzIxMSwxMiBAQCBleHRlcm4gSW5kZXhTY2FuRGVz YyBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJ ICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCiAJCQkJCQkJCQkJCSAgaW50 IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJCQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhTY2FuRGVz YyBwc2Nhbik7CisKK2V4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxl bF92bXNldChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKKwkJCQkJCQkJCQkJ CQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCQkJCQkJCQkJaW50 IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAorCQkJCQkJCQkJCQkJCVBhcmFsbGVsSW5kZXhTY2FuRGVz YyBwc2NhbiwKKwkJCQkJCQkJCQkJCQlib29sIG1vZGlmaWVzX3JlbCk7CiBleHRlcm4gSXRlbVBv aW50ZXIgaW5kZXhfZ2V0bmV4dF90aWQoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJIFNj YW5EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAppbmRleCA0Mjc4ZjM1MWJkZi4uMTZmNzkwNGEyMWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAg LTk0LDYgKzk0LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQ YXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3JrZXJkYXRhOwog CisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAgc2NhbnMuIElm IHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBtb2RpZmllZCwgb24tYWNjZXNzIHBydW5p bmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBwYWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5n IFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisK IAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1vZGUgYW5kIGZv ciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJlbnQgdHVwbGUn cyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkvKiBudW1iZXIg b2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAtMTE2LDggKzEyMywxOCBAQCB0eXBlZGVm IHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVEYXRhIHhzX2Jh c2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZl cgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55ICovCi0J LyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4gb24g dGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYg YW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEg cGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKworCS8qCisJICog Rm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyBoZWFwIHRh YmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJyZW50IGhlYXAg cGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8KKwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8K KwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJlc3Vs dCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCkBAIC0zNzQsNyArMzkxLDgg QEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9u IHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwogc3RydWN0IEdsb2JhbFZpc1N0YXRl OwotZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVy biB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCQkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCiAJCQkJCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBiNWUwZmIzODZjMC4uZjQ5NmUw YjQ5MzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtMTIxLDYgKzEyMSwxMiBAQCB0eXBlZGVmIHN0 cnVjdCBQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqUGFyYWxsZWxCbG9ja1RhYmxl U2NhbldvcmtlcjsKIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEKIHsKIAlSZWxh dGlvbglyZWw7CisKKwkvKgorCSAqIFNvbWUgb3B0aW1pemF0aW9ucyBjYW4gb25seSBiZSBwZXJm b3JtZWQgaWYgdGhlIHF1ZXJ5IGRvZXMgbm90IG1vZGlmeQorCSAqIHRoZSB1bmRlcmx5aW5nIHJl bGF0aW9uLiBUcmFjayB0aGF0IGhlcmUuCisJICovCisJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWw7 CiB9IEluZGV4RmV0Y2hUYWJsZURhdGE7CiAKIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRp b247CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBiMmNlMzVlMmEzNC4uZTMxYzIxY2Y4ZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaApAQCAtNjIsNiArNjIsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMK IAogCS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQ U0hPVCA9IDEgPDwgOSwKKwkvKiB3aGV0aGVyIG9yIG5vdCBzY2FuIHNob3VsZCBhdHRlbXB0IHRv IHNldCB0aGUgVk0gKi8KKwlTT19BTExPV19WTV9TRVQgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRp b25zOwogCiAvKgpAQCAtODgxLDYgKzg4MywyNSBAQCB0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24g cmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2Jl Z2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKIH0KIAorLyoKKyAq IFNpbWlsYXIgdG8gdGFibGVfYmVnaW5zY2FuKCksIGJ1dCBhbGxvd3MgdGhlIGNhbGxlciB0byBp bmRpY2F0ZSB3aGV0aGVyIHRoZQorICogcXVlcnkgbW9kaWZpZXMgdGhlIHJlbGF0aW9uLiBUaGlz IGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyIHdhbnRzIHRvIGF0dGVtcHQKKyAqIG1hcmtpbmcgcGFn ZXMgaW4gdGhlIHJlbGF0aW9uIGFzIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBk dXJpbmcKKyAqIG9uLWFjY2VzcyBwcnVuaW5nLgorICovCitzdGF0aWMgaW5saW5lIFRhYmxlU2Nh bkRlc2MKK3RhYmxlX2JlZ2luc2Nhbl92bXNldChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBz aG90LAorCQkJCQkgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksIGJvb2wgbW9k aWZpZXNfcmVsKQoreworCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCQlTT19B TExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKworCWlmICgh bW9kaWZpZXNfcmVsKQorCQlmbGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1cm4gcmVs LT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEws IGZsYWdzKTsKK30KKwogLyoKICAqIExpa2UgdGFibGVfYmVnaW5zY2FuKCksIGJ1dCBmb3Igc2Nh bm5pbmcgY2F0YWxvZy4gSXQnbGwgYXV0b21hdGljYWxseSB1c2UgYQogICogc25hcHNob3QgYXBw cm9wcmlhdGUgZm9yIHNjYW5uaW5nIGNhdGFsb2cgcmVsYXRpb25zLgpAQCAtOTE4LDEwICs5Mzks MTMgQEAgdGFibGVfYmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNo b3QsCiAgKi8KIHN0YXRpYyBpbmxpbmUgVGFibGVTY2FuRGVzYwogdGFibGVfYmVnaW5zY2FuX2Jt KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJICAgaW50IG5rZXlzLCBzdHJ1 Y3QgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQgbmtleXMsIHN0cnVjdCBTY2FuS2V5RGF0 YSAqa2V5LCBib29sIG1vZGlmaWVzX3JlbCkKIHsKIAl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9C SVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKKwlpZiAoIW1vZGlmaWVzX3JlbCkKKwkJ ZmxhZ3MgfD0gU09fQUxMT1dfVk1fU0VUOworCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nh bl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LAogCQkJCQkJCQkJICAgTlVMTCwgZmxh Z3MpOwogfQpAQCAtMTEzMCw2ICsxMTU0LDEwIEBAIGV4dGVybiB2b2lkIHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwKIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkJICBQYXJh bGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOwogCitleHRlcm4gVGFibGVTY2FuRGVzYyB0YWJsZV9i ZWdpbnNjYW5fcGFyYWxsZWxfdm1zZXQoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCQkJCQkJCWJvb2wgbW9kaWZpZXNf cmVsKTsKKwogLyoKICAqIFJlc3RhcnQgYSBwYXJhbGxlbCBzY2FuLiAgQ2FsbCB0aGlzIGluIHRo ZSBsZWFkZXIgcHJvY2Vzcy4gIENhbGxlciBpcwogICogcmVzcG9uc2libGUgZm9yIG1ha2luZyBz dXJlIHRoYXQgYWxsIHdvcmtlcnMgaGF2ZSBmaW5pc2hlZCB0aGUgc2NhbgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAppbmRleCBkZTc4MjAxNGIyZC4uODM5YzFiZTFkN2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CkBAIC02NzgsNiArNjc4LDEyIEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJICog RXhlY0RvSW5pdGlhbFBydW5pbmcoKSAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8q IFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKKwkvKgorCSAqIFJUIGluZGV4ZXMgb2Yg cmVsYXRpb25zIG1vZGlmaWVkIGJ5IHRoZSBxdWVyeSBlaXRoZXIgdGhyb3VnaAorCSAqIFVQREFU RS9ERUxFVEUvSU5TRVJUL01FUkdFIG9yIFNFTEVDVCBGT1IgVVBEQVRFCisJICovCisJQml0bWFw c2V0ICAqZXNfbW9kaWZpZWRfcmVsaWRzOworCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJ LyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KIAogCS8qIElmIHF1ZXJ5IGNhbiBp bnNlcnQvZGVsZXRlIHR1cGxlcywgdGhlIGNvbW1hbmQgSUQgdG8gbWFyayB0aGVtIHdpdGggKi8K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNv ZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbAppbmRleCBjOWMxODI4OTJjZi4uZjVjMGM2NWIyNjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTI5Niw2ICsy OTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQK IG1heF93YWxfc2VuZGVycyA9IDQKIGF1dG92YWN1dW0gPSBvZmYKK2hvdF9zdGFuZGJ5X2ZlZWRi YWNrID0gb24KIH0pOwogJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOwogJG5vZGVfcHJpbWFyeS0+ c3RhcnQ7CkBAIC03NDUsNyArNzQ2LDcgQEAgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRo YW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwogCiByZWFjdGl2 ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygnc2hhcmVkX3Jvd19yZW1vdmFs XycsCi0JJ25vX2NvbmZsaWN0XycsIDAsIDEpOworCSdub19jb25mbGljdF8nLCAxLCAwKTsKIAog IyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0CiB3YWl0X3VudGlsX3ZhY3V1bV9j YW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0020-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v11-0020-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdzu19 RnJvbSAxZjFhMjIyZjEzZjU1YzBjOGU0YzY2ZmU1MDc1YjBiZDNmN2YxOTQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMjAvMjBdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0CgpOb3cgdGhhdCB3ZSBj YW4gc2V0IHRoZSBWTSBkdXJpbmcgcmVhZC1vbmx5IHF1ZXJpZXMsIGl0IG1ha2VzIHNlbnNlIHRv CnN0YXJ0IHNldHRpbmcgdGhlIHBhZ2UgcHJ1bmFibGUgaGludCBvbiBpbnNlcnQuIFRoaXMgd2ls bCBhbGxvdwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIGJlIGNhbGxlZCB3aGVuIHRo ZSBwYWdlIGlzIGZ1bGwgb3IKbW9zdGx5IGZ1bGwuCgpGb3IgeWVhcnMgdGhlcmUgaGFzIGJlZW4g YSBub3RlIGluIGhlYXBfaW5zZXJ0KCkgYW5kIGhlYXBfbXVsdGlfaW5zZXJ0KCkKcG9pbnRpbmcg b3V0IHRoYXQgc2V0dGluZyBwZF9wcnVuZV94aWQgd291bGQgaGVscCBjbGVhbiB1cCBhYm9ydGVk Cmluc2VydGVkIHR1cGxlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgYmUgY2xlYW5lZCB1cCB1 bnRpbCB2YWN1dW0uClNvLCB0aGF0J3MgYW5vdGhlciBiZW5lZml0IG9mIHNldHRpbmcgaXQuCgpT ZXR0aW5nIHBkX3BydW5lX3hpZCBvbiBpbnNlcnQgY2F1c2VzIGEgcGFnZSB0byBiZSBwcnVuZWQg YW5kIHRoZW4Kd3JpdHRlbiBvdXQgd2hpY2ggdGhlbiBhZmZlY3RzIHRoZSByZXBvcnRlZCBudW1i ZXIgb2YgaGl0cyBpbiB0aGUKaW5kZXgta2lsbHR1cGxlcyBpc29sYXRpb24gdGVzdC4gVGhpcyBp cyBhIHF1aXJrIG9mIGhvdyBoaXRzIGFyZSB0cmFja2VkCndoaWNoIHNvbWV0aW1lcyBsZWFkcyB0 aGVtIHRvIGJlIGRvdWJsZSBjb3VudGVkLiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZQpmaXhlZCBv ciBjaGFuZ2VkIGluZGVwZW5kZW50bHkuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICAgICAgIHwgMTUgKysrKysrKysrKy0KIC4uLi9p c29sYXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQgICB8ICA2ICsrLS0tCiAzIGZp bGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKaW5kZXggZjllNTBkNDdhZWUuLjA5ZDk3ODk2YzY2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwpAQCAtMjEwNSw2ICsyMTA1LDcgQEAgaGVhcF9pbnNlcnQoUmVsYXRp b24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJVHJhbnNhY3Rpb25J ZCB4aWQgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwogCUhlYXBUdXBsZQloZWFwdHVwOwog CUJ1ZmZlcgkJYnVmZmVyOworCVBhZ2UJCXBhZ2U7CiAJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFs aWRCdWZmZXI7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNlOwogCkBAIC0yMTY0 LDE1ICsyMTY1LDE5IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUg dHVwLCBDb21tYW5kSWQgY2lkLAogCX0KIAogCS8qCi0JICogWFhYIFNob3VsZCB3ZSBzZXQgUGFn ZVNldFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/CisJICogU2V0IHBkX3BydW5lX3hpZCB0byB0cmln Z2VyIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgb25jZSB0aGUgcGFnZQorCSAqIGlzIGZ1 bGwgc28gdGhhdCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4KIAkg KgotCSAqIFRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gbWF5IGV2ZW50dWFsbHkgYWJvcnQgdGh1 cyBtYWtpbmcgdGhpcyB0dXBsZQotCSAqIERFQUQgYW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IgcHJ1 bmluZy4gVGhvdWdoIHdlIGRvbid0IHdhbnQgdG8gb3B0aW1pemUKLQkgKiBmb3IgYWJvcnRzLCBp ZiBubyBvdGhlciB0dXBsZSBpbiB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUKLQkg KiBhYm9ydGVkIHR1cGxlIHdpbGwgbmV2ZXIgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFjdXVtIGlz IHRyaWdnZXJlZC4KKwkgKiBTZXR0aW5nIHBkX3BydW5lX3hpZCBpcyBhbHNvIGhhbmR5IGlmIHRo ZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBldmVudHVhbGx5IGFib3J0cyBtYWtpbmcgdGhp cyB0dXBsZSBERUFEIGFuZCBoZW5jZSBhdmFpbGFibGUgZm9yCisJICogcHJ1bmluZy4gSWYgbm8g b3RoZXIgdHVwbGUgaW4gdGhpcyBwYWdlIGlzIFVQREFURWQvREVMRVRFZCwgdGhlIGFib3J0ZWQK KwkgKiB0dXBsZSB3b3VsZCBuZXZlciBvdGhlcndpc2UgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFj dXVtIGlzIHRyaWdnZXJlZC4KIAkgKgotCSAqIElmIHlvdSBkbyBhZGQgUGFnZVNldFBydW5hYmxl IGhlcmUsIGFkZCBpdCBpbiBoZWFwX3hsb2dfaW5zZXJ0IHRvby4KKwkgKiBEb24ndCBzZXQgaXQg aWYgd2UgYXJlIGluIGJvb3RzdHJhcCBtb2RlLCB0aG91Z2guCiAJICovCisJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKKwlpZiAoVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhpZCkpCisJCVBh Z2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAK QEAgLTIxODIsNyArMjE4Nyw2IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFw VHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQl4bF9oZWFwX2luc2VydCB4bHJlYzsKIAkJeGxf aGVhcF9oZWFkZXIgeGxoZHI7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQlQYWdlCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQl1aW50OAkJaW5mbyA9IFhMT0dfSEVBUF9JTlNFUlQ7 CiAJCWludAkJCWJ1ZmZsYWdzID0gMDsKIApAQCAtMjU0OCw4ICsyNTUyLDEzIEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJfQogCiAJCS8qCi0JCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVu YWJsZSBvbiB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQorCQkgKiBTZXQgcGRfcHJ1bmVf eGlkLiBTZWUgaGVhcF9pbnNlcnQoKSBmb3IgbW9yZSBvbiB3aHkgd2UgZG8gdGhpcyB3aGVuCisJ CSAqIGluc2VydGluZyB0dXBsZXMuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpZiB3ZSBhcmVuJ3Qg YWxyZWFkeQorCQkgKiBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiBpbiB0aGUgVk0uIFdlIGFsc28g ZG9uJ3Qgc2V0IGl0IGluCisJCSAqIGJvb3RzdHJhcCBtb2RlLgogCQkgKi8KKwkJaWYgKCFhbGxf ZnJvemVuX3NldCAmJiBUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJCVBhZ2VTZXRQcnVu YWJsZShwYWdlLCB4aWQpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBmZjNhZDhiNGNkMi4uZTdkNzgwNDg3MWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNDcwLDYgKzQ3MCwxMiBA QCBoZWFwX3hsb2dfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWZyZWVzcGFj ZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKHBhZ2UpOyAvKiBuZWVkZWQgdG8gdXBkYXRlIEZTTSBi ZWxvdyAqLwogCisJCS8qCisJCSAqIFNldCB0aGUgcGFnZSBwcnVuYWJsZSB0byB0cmlnZ2VyIG9u LWFjY2VzcyBwcnVuaW5nIGxhdGVyIHdoaWNoIG1heQorCQkgKiBzZXQgdGhlIHBhZ2UgYWxsLXZp c2libGUgaW4gdGhlIFZNLgorCQkgKi8KKwkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIFhMb2dSZWNH ZXRYaWQocmVjb3JkKSk7CisKIAkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCiAJCWlmICh4bHJl Yy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCkBAIC02MTksOSArNjI1 LDE2IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ CWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCiAJCQlQ YWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogCi0JCS8qIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9T RVQgaW1wbGllcyB0aGF0IGFsbCB0dXBsZXMgYXJlIHZpc2libGUgKi8KKwkJLyoKKwkJICogWExI X0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRoYXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJs ZS4gSWYKKwkJICogd2UgYXJlIG5vdCBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiwgdGhlbiBzZXQg dGhlIHBhZ2UncyBwcnVuYWJsZQorCQkgKiBoaW50IHNvIHRoYXQgd2UgdHJpZ2dlciBvbi1hY2Nl c3MgcHJ1bmluZyBsYXRlciB3aGljaCBtYXkgc2V0IHRoZQorCQkgKiBwYWdlIGFsbC12aXNpYmxl IGluIHRoZSBWTS4KKwkJICovCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUKQogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCWVsc2UKKwkJCVBhZ2VT ZXRQcnVuYWJsZShwYWdlLCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOwogCiAJCU1hcmtCdWZmZXJE aXJ0eShidWZmZXIpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3Rl ZC9pbmRleC1raWxsdHVwbGVzLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbmRl eC1raWxsdHVwbGVzLm91dAppbmRleCBiZTdkZGQ3NTZlZi4uYjI5ZjI0MzRiMDAgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dAorKysg Yi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQKQEAgLTU0 LDcgKzU0LDcgQEAgc3RlcCBmbHVzaDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CiBzdGVwIHJlc3VsdDogU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hp dCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50 ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBs ZSc7CiBuZXdfaGVhcF9hY2Nlc3NlcwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAg ICAxCisgICAgICAgICAgICAgICAgMgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBj b3VudGVyIFNFVCBoZWFwX2FjY2Vzc2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBf Ymxrc19oaXQgRlJPTSBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxf cHJpb3JfdHVwbGUnKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJP TSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9i bGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19o ZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVs bmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0t LS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAK IHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNU IGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVz IFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScpOwpAQCAtMjgzLDcgKzI4Myw3IEBA IHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3Rl cCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVy LmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0 aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hl YXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAg ICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQg aGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZS T00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxl Jyk7Ci0tIAoyLjQzLjAKCg== --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0018-Add-helper-functions-to-heap_page_prune_and_free.patch" Content-Disposition: attachment; filename="v11-0018-Add-helper-functions-to-heap_page_prune_and_free.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdzp17 RnJvbSBmYmYyN2MxNmYwYWRkMzIxMzU4MzZlYTg0M2NkYmMxYjhmYzRhYTQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMwIEp1bCAyMDI1IDE4OjUxOjQzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTgvMjBdIEFkZCBoZWxwZXIgZnVuY3Rpb25zIHRvIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplCgpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGhhcyBnb3R0ZW4gcmF0aGVy IGxvbmcuIEl0IGhhcyBzZXZlcmFsCnN0YWdlczoKCjEpIHNldHVwIC0gd2hlcmUgdGhlIFBydW5l U3RhdGUgaXMgc2V0IHVwCjIpIHR1cGxlIGV4YW1pbmF0aW9uIC0tIHdoZXJlIHR1cGxlcyBhbmQg bGluZSBwb2ludGVycyBhcmUgZXhhbWluZWQgdG8KICAgZGV0ZXJtaW5lIHdoYXQgbmVlZHMgdG8g YmUgcHJ1bmVkIGFuZCB3aGF0IGNvdWxkIGJlIGZyb3plbgozKSBldmFsdWF0aW9uIC0tIHdoZXJl IHdlIGRldGVybWluZSBiYXNlZCBvbiBjYWxsZXIgcHJvdmlkZWQgb3B0aW9ucywKICAgaGV1cmlz dGljcywgYW5kIHN0YXRlIGdhdGhlcmVkIGR1cmluZyBzdGFnZSAyIHdoZXRoZXIgb3Igbm90IHRv CiAgIGZyZWV6ZSB0dXBsZXMgYW5kIHNldCB0aGUgcGFnZSBpbiB0aGUgVk0KNCkgZXhlY3V0aW9u IC0gd2hlcmUgdGhlIHBhZ2UgY2hhbmdlcyBhcmUgYWN0dWFsbHkgbWFkZSBhbmQgbG9nZ2VkCgpU aGlzIGNvbW1pdCByZWZhY3RvcnMgdGhlIGV2YWx1YXRpb24gc3RhZ2UgaW50byBoZWxwZXJzIHdo aWNoIHJldHVybgp3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgYW5kIHNldCB0aGUgVk0uCgpYWFg6 IEZvciB0aGUgcHVycG9zZXMgb2YgY29tbWl0dGluZywgdGhpcyBsaWtlbHkgc2hvdWxkbid0IGJl IGEgc2VwYXJhdGUKY29tbWl0LiBCdXQgSSdtIG5vdCBzdXJlIHlldCB3aGV0aGVyIGl0IG1ha2Vz IG1vcmUgc2Vuc2UgdG8gZG8gdGhpcwpyZWZhY3RvcmluZyBlYXJsaWVyIGluIHRoZSBzZXQgZm9y IGNsYXJpdHkgZm9yIHRoZSByZXZpZXdlci4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyB8IDQ3MyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMjk2IGluc2VydGlvbnMoKyksIDE3NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCmluZGV4IDY5ZDhlNDJiZGM4Li42N2I1NmU0NWFkNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE3OSw2ICsxNzksMjIgQEAgc3RhdGljIHZvaWQg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3Rh dGUsIE9mZnNldE4KIAogc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFn ZSk7CiAKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJICBib29sIGRvX3BydW5lLAorCQkJCQkJCQkgIGJv b2wgZG9faGludF9mdWxsX29yX3BydW5hYmxlLAorCQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hp bnRfZnBpLAorCQkJCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgYm9vbCAq YWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCk7CisKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3VwZGF0ZV92bShSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCSBCdWZmZXIgYnVmZmVyLCBC bG9ja051bWJlciBibG9ja25vLCBQYWdlIHBhZ2UsCisJCQkJCQkJCQkgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkJCQkJIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkJCQkJ IGJvb2wgYmxrX2tub3duX2F2LAorCQkJCQkJCQkJIFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJ CQkJCQkgQnVmZmVyICp2bWJ1ZmZlciwgdWludDggKnZtZmxhZ3MsCisJCQkJCQkJCQkgYm9vbCAq c2V0X3BkX2FsbF92aXNpYmxlKTsKKwogc3RhdGljIGJvb2wgaWRlbnRpZnlfYW5kX2ZpeF92bV9j b3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhl YXBfYmxrLAogCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2Us CkBAIC0zODIsNiArMzk4LDI0OSBAQCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVs YXRpb24gcmVsYXRpb24sCiAJcmV0dXJuIGZhbHNlOwogfQogCisKKy8qCisgKiBEZXRlcm1pbmUg d2hldGhlciB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGJpdHMgYmFzZWQgb24gaW5mb3JtYXRp b24gZnJvbQorICogdGhlIFBydW5lU3RhdGUgYW5kIGJsa19rbm93bl9hdiwgd2hpY2ggc29tZSBj YWxsZXJzIHdpbGwgcHJvdmlkZSBhZnRlcgorICogcHJldmlvdXNseSBleGFtaW5pbmcgdGhpcyBo ZWFwIHBhZ2UncyBWTSBiaXRzIChlLmcuIHZhY3V1bSBmcm9tIHRoZSBsYXN0CisgKiBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSBjYWxsKS4KKyAqCisgKiBXZSBwYXNzIGluIGJsb2Nrbm8gYW5k IHBhZ2UgZXZlbiB0aG9zZSBjYW4gYmUgZGVyaXZlZCBmcm9tIGJ1ZmZlciB0byBhdm9pZAorICog ZXh0cmEgQnVmZmVyR2V0QmxvY2soKSBhbmQgQnVmZmVyR2V0QmxvY2tOdW1iZXIoKSBjYWxscy4K KyAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciBkb19mcmVlemUgaGFzIGJl ZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVlbiBzZXQpLCBhcyB0aGVzZSBmYWN0 b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9uLgorICoKKyAqIHByc3RhdGUgYW5k IHZtYnVmZmVyIGFyZSBpbnB1dC9vdXRwdXQgZmllbGRzLiB2bWZsYWdzIGFuZCBhbmQKKyAqIHNl dF9wZF9hbGxfdmlzaWJsZSBhcmUgb3V0cHV0IGZpZWxkcy4KKyAqCisgKiBSZXR1cm5zIHRydWUg aWYgdGhlIGNhbGxlciBzaG91bGQgc2V0IG9uZSBvciBib3RoIG9mIHRoZSBWTSBiaXRzIGFuZCBm YWxzZQorICogb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfdXBk YXRlX3ZtKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJIEJ1ZmZlciBidWZmZXIsIEJsb2NrTnVt YmVyIGJsb2Nrbm8sIFBhZ2UgcGFnZSwKKwkJCQkJCSBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJ CQkgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsCisJCQkJCQkgYm9vbCBibGtfa25vd25f YXYsCisJCQkJCQkgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCSBCdWZmZXIgKnZtYnVmZmVy LCB1aW50OCAqdm1mbGFncywKKwkJCQkJCSBib29sICpzZXRfcGRfYWxsX3Zpc2libGUpCit7CisJ Ym9vbAkJZG9fc2V0X3ZtID0gZmFsc2U7CisKKwkvKgorCSAqIElmIHRoZSBjYWxsZXIgc3BlY2lm aWVkIG5vdCB0byB1cGRhdGUgdGhlIFZNLCB2YWxpZGF0ZSBldmVyeXRoaW5nIGlzIGluCisJICog dGhlIHJpZ2h0IHN0YXRlIGFuZCBleGl0LgorCSAqLworCWlmICghcHJzdGF0ZS0+Y29uc2lkZXJf dXBkYXRlX3ZtKQorCXsKKwkJQXNzZXJ0KCFwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhcHJzdGF0 ZS0+YWxsX2Zyb3plbik7CisJCS8qIFdlIGRvbid0IHNldCBvbmx5IHRoZSBwYWdlIGxldmVsIHZp c2liaWxpdHkgaGludCAqLworCQlBc3NlcnQoISgqc2V0X3BkX2FsbF92aXNpYmxlKSk7CisJCUFz c2VydCgqdm1mbGFncyA9PSAwKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qCisJICogSWYg dGhpcyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90IGFjdHVhbGx5IHBydW5pbmcs IGF2b2lkCisJICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgaXQgd291bGQgbmV3bHkg ZGlydHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKKwkgKiB0aGUgcGFnZSBpcyBhbHJlYWR5IGRpcnR5 LCBpZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBhCisJICogZnVsbC1wYWdlIGlt YWdlIChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4gVGhpcyBzaXR1YXRpb24KKwkg KiBzaG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcgaXMgb25seSBhdHRlbXB0ZWQg d2hlbgorCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KKwkgKi8KKwlpZiAocmVhc29uID09IFBS VU5FX09OX0FDQ0VTUyAmJgorCQlwcnN0YXRlLT5jb25zaWRlcl91cGRhdGVfdm0gJiYKKwkJcHJz dGF0ZS0+YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFC dWZmZXJJc0RpcnR5KGJ1ZmZlcikgfHwgWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVy KSkpCisJeworCQlwcnN0YXRlLT5jb25zaWRlcl91cGRhdGVfdm0gPSBmYWxzZTsKKwkJcHJzdGF0 ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CisJfQorCisJQXNz ZXJ0KCFwcnN0YXRlLT5hbGxfZnJvemVuIHx8IHByc3RhdGUtPmFsbF92aXNpYmxlKTsKKworCS8q CisJICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBp biBhIGNyaXRpY2FsCisJICogc2VjdGlvbiwgc28gd2UgZG8gaXQgZmlyc3QuIElmIFBEX0FMTF9W SVNJQkxFIGlzIGluY29ycmVjdGx5IHNldCwgd2UKKwkgKiBtYXkgbWFyayB0aGUgaGVhcCBwYWdl IGJ1ZmZlciBkaXJ0eSBoZXJlIGFuZCBjb3VsZCBlbmQgdXAgZG9pbmcgc28KKwkgKiBhZ2FpbiBs YXRlci4gVGhpcyBpcyBub3QgYSBjb3JyZWN0bmVzcyBpc3N1ZSBhbmQgaXMgaW4gdGhlIHBhdGgg b2YgVk0KKwkgKiBjb3JydXB0aW9uLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRo ZSBleHRyYSBwZXJmb3JtYW5jZQorCSAqIG92ZXJoZWFkLgorCSAqLworCWlmIChpZGVudGlmeV9h bmRfZml4X3ZtX2NvcnJ1cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkgICBibG9ja25vLCBidWZm ZXIsIHBhZ2UsCisJCQkJCQkJCQkgICBibGtfa25vd25fYXYsIHByc3RhdGUtPmxwZGVhZF9pdGVt cywKKwkJCQkJCQkJCSAgICp2bWJ1ZmZlcikpCisJeworCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlv biwgZG9uJ3QgdXBkYXRlIHRoZSBWTSBmdXJ0aGVyICovCisJfQorCisJLyogRGV0ZXJtaW5lIGlm IHdlIGFjdHVhbGx5IG5lZWQgdG8gc2V0IHRoZSBWTSBhbmQgd2hpY2ggYml0cyB0byBzZXQuICov CisJZWxzZSBpZiAocHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYKKwkJCSAoIWJsa19rbm93bl9hdiB8 fAorCQkJICAocHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwg YmxvY2tubywgdm1idWZmZXIpKSkpCisJeworCQkqdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFOworCQlpZiAocHJzdGF0ZS0+YWxsX2Zyb3plbikKKwkJCSp2bWZsYWdzIHw9IFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwl9CisKKwlkb19zZXRfdm0gPSAqdm1mbGFncyAmIFZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUzsKKworCS8qCisJICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJ QkxFIHVubGVzcyB3ZSBhbHNvIHBsYW4gdG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKKwkgKiBj b3JyZWN0IGZvciBhIGhlYXAgcGFnZSB0byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhl IFZNIGlzIG5vdAorCSAqIHNldCwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBz eW5jLgorCSAqCisJICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3Ig dGhlIHBhZ2UtbGV2ZWwgYml0IHRvIGJlIHNldAorCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNs ZWFyLiBUaGlzIGNvdWxkIGhhcHBlbiBpZiB3ZSBjcmFzaGVkIGFmdGVyCisJICogc2V0dGluZyBQ RF9BTExfVklTSUJMRSBidXQgYmVmb3JlIHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCisJICovCisJ KnNldF9wZF9hbGxfdmlzaWJsZSA9IGRvX3NldF92bSAmJiAhUGFnZUlzQWxsVmlzaWJsZShwYWdl KTsKKwlyZXR1cm4gZG9fc2V0X3ZtOworfQorCisvKgorICogRGVjaWRlIGlmIHdlIHdhbnQgdG8g Z28gYWhlYWQgd2l0aCBmcmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZyZWV6ZSBwbGFucyB3ZQor ICogcHJlcGFyZWQgZm9yIHRoZSBnaXZlbiBidWZmZXIgb3Igbm90LiBJZiB0aGUgY2FsbGVyIHNw ZWNpZmllZCB3ZSBzaG91bGQgbm90CisgKiBmcmVlemUgdHVwbGVzLCBpdCBleGl0cyBlYXJseS4K KyAqCisgKiBkb19wcnVuZSwgZG9faGludF9mdWxsX29yX3BydW5hYmxlLCBhbmQgZGlkX3R1cGxl X2hpbnRfZnBpIG11c3QgYWxsIGhhdmUKKyAqIGJlZW4gZGVjaWRlZCBiZWZvcmUgY2FsbGluZyB0 aGlzIGZ1bmN0aW9uLgorICoKKyAqIHByc3RhdGUgaXMgYW4gaW5wdXQvb3V0cHV0IHBhcmFtZXRl ci4gYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCBpcyBzZXQgYW5kCisgKiB1c2VkIGxhdGVyIHRv IGRldGVybWluZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBmb3IgdGhlIHJlY29yZC4K KyAqCisgKiBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHVzZSBvdXIgZnJlZXplIHBsYW5zIGFu ZCBmcmVlemUgdHVwbGVzIG9uIHRoZSBwYWdlCisgKiBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICov CitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCisJCQkJCSAgYm9vbCBkb19oaW50 X2Z1bGxfb3JfcHJ1bmFibGUsCisJCQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksCisJCQkJ CSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJICBib29sICphbGxfZnJvemVuX2V4Y2VwdF9s cF9kZWFkKQoreworCWJvb2wJCWRvX2ZyZWV6ZSA9IGZhbHNlOworCisJLyoKKwkgKiBJZiB0aGUg Y2FsbGVyIHNwZWNpZmllZCB3ZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZnJlZXplIGFueSB0dXBs ZXMsCisJICogdmFsaWRhdGUgdGhhdCBldmVyeXRoaW5nIGlzIGluIHRoZSByaWdodCBzdGF0ZSBh bmQgZXhpdC4KKwkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJQXNz ZXJ0KCFwcnN0YXRlLT5hbGxfZnJvemVuICYmIHByc3RhdGUtPm5mcm96ZW4gPT0gMCk7CisJCUFz c2VydChwcnN0YXRlLT5scGRlYWRfaXRlbXMgPT0gMCB8fCAhcHJzdGF0ZS0+YWxsX3Zpc2libGUp OworCQlBc3NlcnQoISgqYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCkpOworCQlyZXR1cm4gZmFs c2U7CisJfQorCisJaWYgKHByc3RhdGUtPnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKQorCXsKKwkJ LyoKKwkJICogaGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSBpbmRpY2F0ZWQgdGhhdCBhdCBsZWFz dCBvbmUgWElEL01YSUQgZnJvbQorCQkgKiBiZWZvcmUgRnJlZXplTGltaXQvTXVsdGlYYWN0Q3V0 b2ZmIGlzIHByZXNlbnQuICBNdXN0IGZyZWV6ZSB0bworCQkgKiBhZHZhbmNlIHJlbGZyb3plbnhp ZC9yZWxtaW5teGlkLgorCQkgKi8KKwkJZG9fZnJlZXplID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsK KwkJLyoKKwkJICogT3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIGlmIHdlIGFyZSBn ZW5lcmF0aW5nIGFuIEZQSQorCQkgKiBhbnl3YXkgYW5kIGlmIGRvaW5nIHNvIG1lYW5zIHRoYXQg d2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtZnJvemVuCisJCSAqIGFmdGVyd2FyZHMgKG1pZ2h0IG5v dCBoYXBwZW4gdW50aWwgVkFDVVVNJ3MgZmluYWwgaGVhcCBwYXNzKS4KKwkJICoKKwkJICogWFhY OiBQcmV2aW91c2x5LCB3ZSBrbmV3IGlmIHBydW5pbmcgZW1pdHRlZCBhbiBGUEkgYnkgY2hlY2tp bmcKKwkJICogcGdXYWxVc2FnZS53YWxfZnBpIGJlZm9yZSBhbmQgYWZ0ZXIgcHJ1bmluZy4gIE9u Y2UgdGhlIGZyZWV6ZSBhbmQKKwkJICogcHJ1bmUgcmVjb3JkcyB3ZXJlIGNvbWJpbmVkLCB0aGlz IGhldXJpc3RpYyBjb3VsZG4ndCBiZSB1c2VkCisJCSAqIGFueW1vcmUuICBUaGUgb3Bwb3J0dW5p c3RpYyBmcmVlemUgaGV1cmlzdGljIG11c3QgYmUgaW1wcm92ZWQ7CisJCSAqIGhvd2V2ZXIsIGZv ciBub3csIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgorCQkgKi8KKwkJaWYgKHBy c3RhdGUtPmFsbF92aXNpYmxlICYmIHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZy b3plbiA+IDApCisJCXsKKwkJCS8qCisJCQkgKiBGcmVlemluZyB3b3VsZCBtYWtlIHRoZSBwYWdl IGFsbC1mcm96ZW4uICBIYXZlIGFscmVhZHkgZW1pdHRlZAorCQkJICogYW4gRlBJIG9yIHdpbGwg ZG8gc28gYW55d2F5PworCQkJICovCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikp CisJCQl7CisJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKKwkJCQkJZG9fZnJlZXplID0gdHJ1 ZTsKKwkJCQllbHNlIGlmIChkb19wcnVuZSkKKwkJCQl7CisJCQkJCWlmIChYTG9nQ2hlY2tCdWZm ZXJOZWVkc0JhY2t1cChidWZmZXIpKQorCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJ CQkJZWxzZSBpZiAoZG9faGludF9mdWxsX29yX3BydW5hYmxlKQorCQkJCXsKKwkJCQkJaWYgKFhM b2dIaW50Qml0SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIp KQorCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlpZiAo ZG9fZnJlZXplKQorCXsKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhlIHR1cGxlcyB3ZSB3aWxsIGJl IGZyZWV6aW5nIGJlZm9yZSBlbnRlcmluZyB0aGUKKwkJICogY3JpdGljYWwgc2VjdGlvbi4KKwkJ ICovCisJCWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3MoYnVmZmVyLCBwcnN0YXRlLT5mcm96ZW4sIHBy c3RhdGUtPm5mcm96ZW4pOworCX0KKwllbHNlIGlmIChwcnN0YXRlLT5uZnJvemVuID4gMCkKKwl7 CisJCS8qCisJCSAqIFRoZSBwYWdlIGNvbnRhaW5lZCBzb21lIHR1cGxlcyB0aGF0IHdlcmUgbm90 IGFscmVhZHkgZnJvemVuLCBhbmQgd2UKKwkJICogY2hvc2Ugbm90IHRvIGZyZWV6ZSB0aGVtIG5v dy4gIFRoZSBwYWdlIHdvbid0IGJlIGFsbC1mcm96ZW4gdGhlbi4KKwkJICovCisJCUFzc2VydCgh cHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpOworCisJCXByc3RhdGUtPmFsbF9mcm96 ZW4gPSBmYWxzZTsKKwkJcHJzdGF0ZS0+bmZyb3plbiA9IDA7CS8qIGF2b2lkIG1pc2NvdW50cyBp biBpbnN0cnVtZW50YXRpb24gKi8KKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogV2UgaGF2ZSBu byBmcmVlemUgcGxhbnMgdG8gZXhlY3V0ZS4gIFRoZSBwYWdlIG1pZ2h0IGFscmVhZHkgYmUKKwkJ ICogYWxsLWZyb3plbiAocGVyaGFwcyBvbmx5IGZvbGxvd2luZyBwcnVuaW5nKSwgdGhvdWdoLiAg U3VjaCBwYWdlcworCQkgKiBjYW4gYmUgbWFya2VkIGFsbC1mcm96ZW4gaW4gdGhlIFZNIGJ5IG91 ciBjYWxsZXIsIGV2ZW4gdGhvdWdoIG5vbmUKKwkJICogb2YgaXRzIHR1cGxlcyB3ZXJlIG5ld2x5 IGZyb3plbiBoZXJlLgorCQkgKi8KKwl9CisKKwkvKgorCSAqIEl0IHdhcyBjb252ZW5pZW50IHRv IGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxlIGVhcmxpZXIgb24gdG8KKwkgKiBt YWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHVuYWZm ZWN0ZWQgYnkgdGhlCisJICogc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAg VGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJlCisJICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0byBiZSBM UF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKKwkgKiBtYXR0ZXIgd2hp Y2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVuZHMgdXAK KwkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9uZ29pbmcg VkFDVVVNIGRvZXMgaXQuCisJICoKKwkgKiBOb3cgdGhhdCBmcmVlemluZyBoYXMgYmVlbiBmaW5h bGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFyZQorCSAqIGFueSBMUF9ERUFEIGl0 ZW1zIG9uIHRoZSBwYWdlLiBJdCBuZWVkcyB0byByZWZsZWN0IHRoZSBwcmVzZW50IHN0YXRlIG9m CisJICogdGhlIHBhZ2Ugd2hlbiB1c2luZyBpdCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qg dG8gdXBkYXRlIHRoZSBWTS4KKwkgKgorCSAqIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBvciBub3Qg dGhlIHBhZ2Ugd2FzIGFsbC1mcm96ZW4gZXhjZXB0IExQX0RFQUQKKwkgKiBpdGVtcyBmb3IgdGhl IHB1cnBvc2VzIG9mIGNhbGN1bGF0aW5nIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLAor CSAqIHRob3VnaC4KKwkgKi8KKwkqYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9IHByc3RhdGUt PmFsbF9mcm96ZW47CisJaWYgKHByc3RhdGUtPmxwZGVhZF9pdGVtcyA+IDApCisJeworCQlwcnN0 YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7 CisJfQorCisJcmV0dXJuIGRvX2ZyZWV6ZTsKK30KKworCiAvKgogICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQogICog c3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5n ZWQsIHVwZGF0ZSBpdCBpbgpAQCAtNzcyLDIwICsxMDMxLDMwIEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCS8qIENsZWFyIHRo ZSBvZmZzZXQgaW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFn ZS4gKi8KIAkqb2ZmX2xvYyA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAKLQlkb19wcnVuZSA9IHBy c3RhdGUubnJlZGlyZWN0ZWQgPiAwIHx8Ci0JCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3Rh dGUubnVudXNlZCA+IDA7Ci0KIAkvKgogCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZl IHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCiAJICogYW1vbmdzdCB0aGVt IGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKLQkgKiBhbGwt dmlzaWJsZS4KKwkgKiBhbGwtdmlzaWJsZS4gVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHdlIGRl Y2lkZSB3aGV0aGVyIG9yIG5vdCB0bworCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSBiZWxv dyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXpl IHRoZSBwYWdlIGlmIHRoZXJlIGFyZSBsaXZlIHR1cGxlcyBub3QgdmlzaWJsZQorCSAqIHRvIGV2 ZXJ5b25lLCB3aGljaCB3b3VsZCBwcmV2ZW50IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRo ZSBWTS4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgogCQlUcmFuc2FjdGlvbklk SXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYmCiAJCSFHbG9iYWxWaXNY aWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZCkpCiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxz ZTsKIAorCS8qCisJICogTm93IGRlY2lkZSBiYXNlZCBvbiBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQg d2hpbGUgZXhhbWluaW5nIGV2ZXJ5IHR1cGxlCisJICogd2hpY2ggYWN0aW9ucyB0byB0YWtlLiBJ ZiB0aGVyZSBhcmUgYW55IHBydW5hYmxlIHR1cGxlcywgd2UnbGwgcHJ1bmUKKwkgKiB0aGVtLiBI b3dldmVyLCB3ZSB3aWxsIGRlY2lkZSBiYXNlZCBvbiBvcHRpb25zIHNwZWNpZmllZCBieSB0aGUg Y2FsbGVyCisJICogYW5kIHZhcmlvdXMgaGV1cmlzdGljcyB3aGV0aGVyIG9yIG5vdCB0byBmcmVl emUgYW55IHR1cGxlcyBhbmQgd2hldGhlcgorCSAqIG9yIG5vdCB0aGUgcGFnZSBzaG91bGQgYmUg c2V0IGFsbC12aXNpYmxlL2FsbC1mcm96ZW4gaW4gdGhlIFZNLgorCSAqLworCWRvX3BydW5lID0g cHJzdGF0ZS5ucmVkaXJlY3RlZCA+IDAgfHwKKwkJcHJzdGF0ZS5uZGVhZCA+IDAgfHwKKwkJcHJz dGF0ZS5udW51c2VkID4gMDsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0 aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3BydW5lX3hpZCBm aWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRob3NlCkBA IC03OTYsMTg2ICsxMDY1LDM2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlQYWdlSXNGdWxsKHBhZ2UpOwogCiAJLyoKLQkg KiBEZWNpZGUgaWYgd2Ugd2FudCB0byBnbyBhaGVhZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0 byB0aGUgZnJlZXplCi0JICogcGxhbnMgd2UgcHJlcGFyZWQsIG9yIG5vdC4KLQkgKi8KLQlkb19m cmVlemUgPSBmYWxzZTsKLQlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKLQl7Ci0JCWlmIChw cnN0YXRlLnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKQotCQl7Ci0JCQkvKgotCQkJICogaGVhcF9w cmVwYXJlX2ZyZWV6ZV90dXBsZSBpbmRpY2F0ZWQgdGhhdCBhdCBsZWFzdCBvbmUgWElEL01YSUQK LQkJCSAqIGZyb20gYmVmb3JlIEZyZWV6ZUxpbWl0L011bHRpWGFjdEN1dG9mZiBpcyBwcmVzZW50 LiAgTXVzdAotCQkJICogZnJlZXplIHRvIGFkdmFuY2UgcmVsZnJvemVueGlkL3JlbG1pbm14aWQu Ci0JCQkgKi8KLQkJCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgot CQkJICogT3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIGlmIHdlIGFyZSBnZW5lcmF0 aW5nIGFuIEZQSQotCQkJICogYW55d2F5IGFuZCBpZiBkb2luZyBzbyBtZWFucyB0aGF0IHdlIGNh biBzZXQgdGhlIHBhZ2UKLQkJCSAqIGFsbC1mcm96ZW4gYWZ0ZXJ3YXJkcyAobWlnaHQgbm90IGhh cHBlbiB1bnRpbCBWQUNVVU0ncyBmaW5hbAotCQkJICogaGVhcCBwYXNzKS4KLQkJCSAqCi0JCQkg KiBYWFg6IFByZXZpb3VzbHksIHdlIGtuZXcgaWYgcHJ1bmluZyBlbWl0dGVkIGFuIEZQSSBieSBj aGVja2luZwotCQkJICogcGdXYWxVc2FnZS53YWxfZnBpIGJlZm9yZSBhbmQgYWZ0ZXIgcHJ1bmlu Zy4gIE9uY2UgdGhlIGZyZWV6ZQotCQkJICogYW5kIHBydW5lIHJlY29yZHMgd2VyZSBjb21iaW5l ZCwgdGhpcyBoZXVyaXN0aWMgY291bGRuJ3QgYmUKLQkJCSAqIHVzZWQgYW55bW9yZS4gIFRoZSBv cHBvcnR1bmlzdGljIGZyZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZQotCQkJICogaW1wcm92ZWQ7IGhv d2V2ZXIsIGZvciBub3csIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgotCQkJICov Ci0JCQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmFsbF9mcm96ZW4gJiYgcHJz dGF0ZS5uZnJvemVuID4gMCkKLQkJCXsKLQkJCQkvKgotCQkJCSAqIEZyZWV6aW5nIHdvdWxkIG1h a2UgdGhlIHBhZ2UgYWxsLWZyb3plbi4gIEhhdmUgYWxyZWFkeQotCQkJCSAqIGVtaXR0ZWQgYW4g RlBJIG9yIHdpbGwgZG8gc28gYW55d2F5PwotCQkJCSAqLwotCQkJCWlmIChSZWxhdGlvbk5lZWRz V0FMKHJlbGF0aW9uKSkKLQkJCQl7Ci0JCQkJCWlmIChkaWRfdHVwbGVfaGludF9mcGkpCi0JCQkJ CQlkb19mcmVlemUgPSB0cnVlOwotCQkJCQllbHNlIGlmIChkb19wcnVuZSkKLQkJCQkJewotCQkJ CQkJaWYgKFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCi0JCQkJCQkJZG9fZnJl ZXplID0gdHJ1ZTsKLQkJCQkJfQotCQkJCQllbHNlIGlmIChkb19oaW50X2Z1bGxfb3JfcHJ1bmFi bGUpCi0JCQkJCXsKLQkJCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkgJiYgWExvZ0NoZWNr QnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKLQkJCQkJCQlkb19mcmVlemUgPSB0cnVlOwotCQkJ CQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JaWYgKGRvX2ZyZWV6ZSkKLQl7Ci0JCS8qCi0J CSAqIFZhbGlkYXRlIHRoZSB0dXBsZXMgd2Ugd2lsbCBiZSBmcmVlemluZyBiZWZvcmUgZW50ZXJp bmcgdGhlCi0JCSAqIGNyaXRpY2FsIHNlY3Rpb24uCi0JCSAqLwotCQloZWFwX3ByZV9mcmVlemVf Y2hlY2tzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbik7Ci0JfQotCWVs c2UgaWYgKHByc3RhdGUubmZyb3plbiA+IDApCi0JewotCQkvKgotCQkgKiBUaGUgcGFnZSBjb250 YWluZWQgc29tZSB0dXBsZXMgdGhhdCB3ZXJlIG5vdCBhbHJlYWR5IGZyb3plbiwgYW5kIHdlCi0J CSAqIGNob3NlIG5vdCB0byBmcmVlemUgdGhlbSBub3cuICBUaGUgcGFnZSB3b24ndCBiZSBhbGwt ZnJvemVuIHRoZW4uCi0JCSAqLwotCQlBc3NlcnQoIXByc3RhdGUucGFnZWZyei5mcmVlemVfcmVx dWlyZWQpOwotCi0JCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwotCQlwcnN0YXRlLm5mcm96 ZW4gPSAwOwkvKiBhdm9pZCBtaXNjb3VudHMgaW4gaW5zdHJ1bWVudGF0aW9uICovCi0JfQotCWVs c2UKLQl7Ci0JCS8qCi0JCSAqIFdlIGhhdmUgbm8gZnJlZXplIHBsYW5zIHRvIGV4ZWN1dGUuICBU aGUgcGFnZSBtaWdodCBhbHJlYWR5IGJlCi0JCSAqIGFsbC1mcm96ZW4gKHBlcmhhcHMgb25seSBm b2xsb3dpbmcgcHJ1bmluZyksIHRob3VnaC4gIFN1Y2ggcGFnZXMKLQkJICogY2FuIGJlIG1hcmtl ZCBhbGwtZnJvemVuIGluIHRoZSBWTSBieSBvdXIgY2FsbGVyLCBldmVuIHRob3VnaCBub25lCi0J CSAqIG9mIGl0cyB0dXBsZXMgd2VyZSBuZXdseSBmcm96ZW4gaGVyZS4KLQkJICovCi0JfQotCi0J LyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBfREVBRCBpdGVtcyBpbiBhbGxf dmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0aGUgY2hvaWNlIG9mIHdoZXRoZXIgb3Ig bm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRoZQotCSAqIHNob3J0LXRlcm0g cHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RFQUQgaXRlbXMgd2VyZQotCSAq IGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0ZW1zIGluIHRoZSBtYWtpbmcu ICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZhY3V1bSBoZWFwIHBhc3MgKGluaXRpYWwg cGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICogc2V0dGluZyB0aGUgcGFnZSBhbGwtZnJv emVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2VzIGl0LgotCSAqCi0JICogTm93 IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0 aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gSXQgbmVlZHMgdG8g cmVmbGVjdCB0aGUgcHJlc2VudCBzdGF0ZSBvZgotCSAqIHRoZSBwYWdlIHdoZW4gdXNpbmcgaXQg dG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHVwZGF0ZSB0aGUgVk0uCi0JICoKLQkgKiBL ZWVwIHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdhcyBhbGwtZnJvemVuIGV4Y2Vw dCBMUF9ERUFECi0JICogaXRlbXMgZm9yIHRoZSBwdXJwb3NlcyBvZiBjYWxjdWxhdGluZyB0aGUg c25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiwKLQkgKiB0aG91Z2guCisJICogV2UgbXVzdCBkZWNp ZGUgd2hldGhlciBvciBub3QgdG8gZnJlZXplIGJlZm9yZSBkZWNpZGluZyBpZiBhbmQgd2hhdCB0 bworCSAqIHNldCBpbiB0aGUgVk0uCiAJICovCi0JYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9 IHByc3RhdGUuYWxsX2Zyb3plbjsKLQlpZiAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPiAwKQotCXsK LQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSBm YWxzZTsKLQl9CisJZG9fZnJlZXplID0gaGVhcF9wYWdlX3dpbGxfZnJlZXplKHJlbGF0aW9uLCBi dWZmZXIsCisJCQkJCQkJCQkgIGRvX3BydW5lLAorCQkJCQkJCQkJICBkb19oaW50X2Z1bGxfb3Jf cHJ1bmFibGUsCisJCQkJCQkJCQkgIGRpZF90dXBsZV9oaW50X2ZwaSwKKwkJCQkJCQkJCSAgJnBy c3RhdGUsCisJCQkJCQkJCQkgICZhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkKTsKKworCWRvX3Nl dF92bSA9IGhlYXBfcGFnZV93aWxsX3VwZGF0ZV92bShyZWxhdGlvbiwKKwkJCQkJCQkJCQkgYnVm ZmVyLCBibG9ja25vLCBwYWdlLAorCQkJCQkJCQkJCSByZWFzb24sCisJCQkJCQkJCQkJIGRvX3By dW5lLCBkb19mcmVlemUsCisJCQkJCQkJCQkJIGJsa19rbm93bl9hdiwKKwkJCQkJCQkJCQkgJnBy c3RhdGUsCisJCQkJCQkJCQkJICZ2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgJnZtZmxhZ3MsICZzZXRf cGRfYWxsX3Zpc2libGUpOwogCi0JLyoKLQkgKiBJZiB0aGlzIGlzIGFuIG9uLWFjY2VzcyBjYWxs IGFuZCB3ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQKLQkgKiBzZXR0aW5nIHRoZSB2 aXNpYmlsaXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVhcCBwYWdlIG9yLCBp ZgotCSAqIHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRvaW5nIHNvIHdvdWxkIHJlcXVp cmUgaW5jbHVkaW5nIGEKLQkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSkgb2YgdGhlIGhlYXAgcGFn ZSBpbiB0aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgotCSAqIHNob3VsZCBiZSByYXJlLCBhcyBvbi1h Y2Nlc3MgcHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCi0JICogcGRfcHJ1bmVfeGlkIGlz IHZhbGlkLgotCSAqLwotCWlmIChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTICYmCi0JCXByc3Rh dGUuY29uc2lkZXJfdXBkYXRlX3ZtICYmCi0JCXByc3RhdGUuYWxsX3Zpc2libGUgJiYKLQkJIWRv X3BydW5lICYmICFkb19mcmVlemUgJiYKLQkJKCFCdWZmZXJJc0RpcnR5KGJ1ZmZlcikgfHwgWExv Z0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkpCi0JewotCQlwcnN0YXRlLmNvbnNpZGVy X3VwZGF0ZV92bSA9IGZhbHNlOwotCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxf ZnJvemVuID0gZmFsc2U7Ci0JfQotCi0JQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJz dGF0ZS5hbGxfdmlzaWJsZSk7Ci0KLQkvKgotCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkg bWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoaWYKLQkgKiBwcm92aWRl ZCwgZS5nLiBieSB2YWN1dW0gZnJvbSB0aGUgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2so KQotCSAqIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB2YXJpYWJs ZXMuCi0JICovCi0JaWYgKHByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtKQotCXsKLQkJLyoKLQkJ ICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBpbiBh IGNyaXRpY2FsCi0JCSAqIHNlY3Rpb24sIHNvIHdlIGRvIGl0IGZpcnN0LiBJZiBQRF9BTExfVklT SUJMRSBpcyBpbmNvcnJlY3RseSBzZXQsCi0JCSAqIHdlIG1heSBtYXJrIHRoZSBoZWFwIHBhZ2Ug YnVmZmVyIGRpcnR5IGhlcmUgYW5kIGNvdWxkIGVuZCB1cCBkb2luZwotCQkgKiBzbyBhZ2FpbiBs YXRlci4gVGhpcyBpcyBub3QgYSBjb3JyZWN0bmVzcyBpc3N1ZSBhbmQgaXMgaW4gdGhlIHBhdGgK LQkJICogb2YgVk0gY29ycnVwdGlvbiwgc28gd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0 aGUgZXh0cmEKLQkJICogcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuCi0JCSAqLwotCQlpZiAoaWRlbnRp ZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIGJsb2Nrbm8s IGJ1ZmZlciwgcGFnZSwKLQkJCQkJCQkJCQkgICBibGtfa25vd25fYXYsIHByc3RhdGUubHBkZWFk X2l0ZW1zLCB2bWJ1ZmZlcikpCi0JCXsKLQkJCS8qIElmIHdlIGZpeCBjb3JydXB0aW9uLCBkb24n dCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIgKi8KLQkJfQotCi0JCS8qIERldGVybWluZSBpZiB3ZSBh Y3R1YWxseSBuZWVkIHRvIHNldCB0aGUgVk0gYW5kIHdoaWNoIGJpdHMgdG8gc2V0LiAqLwotCQll bHNlIGlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmCi0JCQkJICghYmxrX2tub3duX2F2IHx8Ci0J CQkJICAocHJzdGF0ZS5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBibG9j a25vLCAmdm1idWZmZXIpKSkpCi0JCXsKLQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExf VklTSUJMRTsKLQkJCWlmIChwcnN0YXRlLmFsbF9mcm96ZW4pCi0JCQkJdm1mbGFncyB8PSBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KLQl9Ci0KLQlkb19zZXRfdm0gPSB2bWZsYWdzICYg VklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOworCS8qIFNhdmUgdGhlc2UgZm9yIHRoZSBjYWxsZXIg aW4gY2FzZSB3ZSBsYXRlciB6ZXJvIG91dCB2bWZsYWdzICovCisJcHJlc3VsdC0+bmV3X3ZtYml0 cyA9IHZtZmxhZ3M7CiAKLQkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBhIGNyaXRp Y2FsIHNlY3Rpb24gKi8KKwkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBjcml0aWNh bCBzZWN0aW9uICovCiAJaWYgKGRvX3NldF92bSkKIAkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVG RkVSX0xPQ0tfRVhDTFVTSVZFKTsKIAogCS8qCi0JICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJQkxF IHVubGVzcyB3ZSBhbHNvIHBsYW4gdG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKLQkgKiBjb3Jy ZWN0IGZvciBhIGhlYXAgcGFnZSB0byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhlIFZN IGlzIG5vdAotCSAqIHNldCwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBzeW5j LgotCSAqCi0JICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3IgdGhl IHBhZ2UtbGV2ZWwgYml0IHRvIGJlIHNldAotCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNsZWFy LiBUaGlzIGNvdWxkIGhhcHBlbiBpZiB3ZSBjcmFzaGVkIGFmdGVyCi0JICogc2V0dGluZyBQRF9B TExfVklTSUJMRSBidXQgYmVmb3JlIHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCisJICogVGltZSB0 byBhY3R1YWxseSBtYWtlIHRoZSBjaGFuZ2VzIHRvIHRoZSBwYWdlIGFuZCBsb2cgdGhlbS4gQW55 IGVycm9yCisJICogd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwuCiAJICov Ci0Jc2V0X3BkX2FsbF92aXNpYmxlID0gZG9fc2V0X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKHBh Z2UpOwotCi0JLyogU2F2ZSB0aGVzZSBmb3IgdGhlIGNhbGxlciBpbiBjYXNlIHdlIGxhdGVyIHpl cm8gb3V0IHZtZmxhZ3MgKi8KLQlwcmVzdWx0LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKLQotCS8q IEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNU QVJUX0NSSVRfU0VDVElPTigpOwogCiAJaWYgKGRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZSkKLS0g CjIuNDMuMAoK --000000000000bf09ec063e51b60e Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0019-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Disposition: attachment; filename="v11-0019-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfbozdzr18 RnJvbSBlNzVlODZhYWM2NTU1N2YxMTlkNWQwMDA3N2NmMjExODNiNTVjZTQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDEyOjA4OjE4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTEgMTkvMjBdIFJlb3JkZXIgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgcGFyYW1l dGVycwoKUmVvcmRlciBwYXJhbWV0ZXJzIHNvIHRoYXQgYWxsIG9mIHRoZSBvdXRwdXQgcGFyYW1l dGVycyBhcmUgdG9nZXRoZXIgYXQKdGhlIGVuZCBvZiB0aGUgcGFyYW1ldGVyIGxpc3QuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgMzggKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgIDYg KystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8ICA0ICstLQogMyBm aWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDY3YjU2ZTQ1YWQ3Li4zZTU1YzQzZjE3YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTI5NywxMCArMjk3LDEwIEBAIGhlYXBf cGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1ZmZlciAq dm1idWZmZXIpCiAJCQkgKiBub3QgdGhlIHJlbGF0aW9uIGhhcyBpbmRleGVzLCBzaW5jZSB3ZSBj YW5ub3Qgc2FmZWx5IGRldGVybWluZQogCQkJICogdGhhdCBkdXJpbmcgb24tYWNjZXNzIHBydW5p bmcgd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAqLwotCQkJaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwgZmFsc2UsCisJCQloZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCBvcHRpb25zLCBmYWxzZSwKIAkJCQkJ CQkJCSAgIHZtYnVmZmVyID8gKnZtYnVmZmVyIDogSW52YWxpZEJ1ZmZlciwKLQkJCQkJCQkJCSAg IHZpc3Rlc3QsIG9wdGlvbnMsCi0JCQkJCQkJCQkgICBOVUxMLCAmcHJlc3VsdCwgUFJVTkVfT05f QUNDRVNTLAorCQkJCQkJCQkJICAgdmlzdGVzdCwKKwkJCQkJCQkJCSAgIE5VTEwsIFBSVU5FX09O X0FDQ0VTUywgJnByZXN1bHQsCiAJCQkJCQkJCQkgICAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVM TCk7CiAKIAkJCS8qCkBAIC02NTEsNiArNjUxLDE1IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGFsc28gbmVlZCB0byBhY2NvdW50 IGZvciBhIHJlZHVjdGlvbiBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIHBvaW50ZXIKICAqIGFy cmF5IGZvbGxvd2luZyBhcnJheSB0cnVuY2F0aW9uIGJ5IHVzLgogICoKKyAqIG9wdGlvbnM6Cisg KiAgIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQg TFBfVU5VU0VEIGR1cmluZworICogICBwcnVuaW5nLgorICoKKyAqICAgRlJFRVpFIGluZGljYXRl cyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQgd2lsbCByZXR1cm4KKyAqICAg J2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisgKgorICog ICBVUERBVEVfVk0gaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQgdGhlIHBhZ2UncyBzdGF0dXMg aW4gdGhlIFZNLgorICoKICAqIElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0 LCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcyBpZiBpdCdzCiAgKiByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbyBub3cuICBUaGUKQEAgLTY2OSwzMCArNjc4LDIxIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGNvbnRhaW4gdGhlIHJlcXVp cmVkIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5IG1hcC4KICAqCiAgKiB2aXN0ZXN0IGlzIHVzZWQg dG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5UTFlfREVBRAot ICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLgotICoKLSAqIG9wdGlvbnM6Ci0g KiAgIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQg TFBfVU5VU0VEIGR1cmluZwotICogICBwcnVuaW5nLgotICoKLSAqICAgRlJFRVpFIGluZGljYXRl cyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQgd2lsbCByZXR1cm4KLSAqICAg J2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCi0gKgotICog ICBVUERBVEVfVk0gaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQgdGhlIHBhZ2UncyBzdGF0dXMg aW4gdGhlIFZNLgorICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLiBJdCBpcyBh biBpbnB1dCBwYXJhbWV0ZXIuCiAgKgogICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJlZXplIGN1 dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCiAgKiBvZiB2YWN1 dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRldGVybWlu ZSBpZiBkZWFkIHR1cGxlcyBhcmUKLSAqIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEIG9yIEhFQVBU VVBMRV9ERUFELgorICogSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IgSEVBUFRVUExFX0RFQUQu IEl0IGlzIGFuIGlucHV0IHBhcmFtZXRlci4KKyAqCisgKiByZWFzb24gaW5kaWNhdGVzIHdoeSB0 aGUgcHJ1bmluZyBpcyBwZXJmb3JtZWQuICBJdCBpcyBpbmNsdWRlZCBpbiB0aGUgV0FMCisgKiBy ZWNvcmQgZm9yIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgcHVycG9zZXMsIGJ1dCBvdGhlcndpc2Ug aGFzIG5vIGVmZmVjdC4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJz IG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1v dmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5p bmcuCiAgKiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBp bml0aWFsaXppbmcgaXQuICBSZXF1aXJlZAogICogYnkgYWxsIGNhbGxlcnMuCiAgKgotICogcmVh c29uIGluZGljYXRlcyB3aHkgdGhlIHBydW5pbmcgaXMgcGVyZm9ybWVkLiAgSXQgaXMgaW5jbHVk ZWQgaW4gdGhlIFdBTAotICogcmVjb3JkIGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzIHB1cnBv c2VzLCBidXQgb3RoZXJ3aXNlIGhhcyBubyBlZmZlY3QuCi0gKgogICogb2ZmX2xvYyBpcyB0aGUg b2Zmc2V0IGxvY2F0aW9uIHJlcXVpcmVkIGJ5IHRoZSBjYWxsZXIgdG8gdXNlIGluIGVycm9yCiAg KiBjYWxsYmFjay4KICAqCkBAIC03MDUsMTMgKzcwNSwxMyBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKi8KIHZvaWQKIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJ CQkJICAgaW50IG9wdGlvbnMsCiAJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKIAkJCQkJCSAg IEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAotCQkJ CQkJICAgaW50IG9wdGlvbnMsCiAJCQkJCQkgICBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2Zm cywKLQkJCQkJCSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAogCQkJCQkJICAgUHJ1bmVS ZWFzb24gcmVhc29uLAorCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJ CQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCiAJCQkJCQkgICBUcmFuc2FjdGlvbklkICpuZXdf cmVsZnJvemVuX3hpZCwKIAkJCQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVsbWluX214aWQpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNGFkMDViYTRkYjYuLjRmYjkxNWUx ZDk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTkzLDExICsxOTkz LDExIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJaWYgKHZhY3JlbC0+ bmluZGV4ZXMgPT0gMCkKIAkJcHJ1bmVfb3B0aW9ucyB8PSBIRUFQX1BBR0VfUFJVTkVfTUFSS19V TlVTRURfTk9XOwogCi0JaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsLCBidWYsCisJaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsLCBidWYsIHBydW5lX29wdGlvbnMsCiAJCQkJCQkJ ICAgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAogCQkJCQkJCSAgIHZtYnVmZmVyLAotCQkJ CQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywKLQkJCQkJCQkgICAmdmFjcmVs LT5jdXRvZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4sCisJCQkJCQkJICAgdmFjcmVs LT52aXN0ZXN0LAorCQkJCQkJCSAgICZ2YWNyZWwtPmN1dG9mZnMsIFBSVU5FX1ZBQ1VVTV9TQ0FO LCAmcHJlc3VsdCwKIAkJCQkJCQkgICAmdmFjcmVsLT5vZmZudW0sCiAJCQkJCQkJICAgJnZhY3Jl bC0+TmV3UmVsZnJvemVuWGlkLCAmdmFjcmVsLT5OZXdSZWxtaW5NeGlkKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bS5oCmluZGV4IDE2Zjc5MDRhMjFlLi4wYzRlNTYwNzYyNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAt Mzk0LDEzICszOTQsMTMgQEAgc3RydWN0IEdsb2JhbFZpc1N0YXRlOwogZXh0ZXJuIHZvaWQgaGVh cF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJ CQkJQnVmZmVyICp2bWJ1ZmZlcik7CiBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJCSAgIGludCBv cHRpb25zLAogCQkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCiAJCQkJCQkJCQkgICBCdWZm ZXIgdm1idWZmZXIsCiAJCQkJCQkJCQkgICBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3Qs Ci0JCQkJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRv ZmZzICpjdXRvZmZzLAotCQkJCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJ CQkJCQkJCQkgICBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJl c3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKIAkJCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAogCQkJCQkJCQkJICAgTXVs dGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCk7Ci0tIAoyLjQzLjAKCg== --000000000000bf09ec063e51b60e--