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 1uUuiJ-00AUzj-4x for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Jun 2025 22:04:59 +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 1uUuiH-00FiMo-5q for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Jun 2025 22:04:57 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uUuiG-00FiKl-6d for pgsql-hackers@lists.postgresql.org; Thu, 26 Jun 2025 22:04:57 +0000 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uUui8-004Ain-0o for pgsql-hackers@lists.postgresql.org; Thu, 26 Jun 2025 22:04:55 +0000 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-adb4e36904bso313886866b.1 for ; Thu, 26 Jun 2025 15:04:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750975486; x=1751580286; 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=twihG/XI70nWk4aqon+juboMhUus+vasYMM4ZtsrM+Q=; b=VD2X0ZJmvXEFYOAmJhs2P7H94ul+NORT+MVH62MjSQ+oUke/yVxjqI+gl3dj5LASgA Mzh/EB5wDdEoPkIqk05iz16ivEZNCL/WAQEq54ZaBHbNDIkL+PPo3cbaekKn4KM3UlGM 1u8fQ8vAZxdJGk9jopQJQWOFRzbDU7Yd2enDGBP3hpCAwfJYtMzgEY8Cz1yRcFXj3zba vYBQH59tovSmVdtmw5is4xKkj7YVghViXrgGQKeEeiMXov1zjjJmOEaBWkcROOXkXcfR KkO/uY0fqQ1JeKBoOtcpUBnDIKpQ5t6MiR/G1XeEE67VWQuZqlToZjVeBos71XES9d5w ZlSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750975486; x=1751580286; 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=twihG/XI70nWk4aqon+juboMhUus+vasYMM4ZtsrM+Q=; b=aplwSwAXFThAkIyoxtn5O8yHYhTmeVA5uLgBPn24HyBUBTBc7R2HHNRtIFIL6vLYEZ UkTplOMlLf77bY0Lp06zNGwZl1V/7NNpvUys7z36akV2I8qM4tLFP3YzfiOQeH+spX3l XNpA8thq2mG0SB2VvL3t6qw6ONQlD5+YX57sF5rURA3ehaQnuFQ47Mr3Q8omRiMjPoRn BMHFCjDaCWGITvbY82xm8rWCvxG1uaAhHNE1l2qOsyV823jM2zAFS3WR6sqOUdoCHMFA sayrhSF/EQcgjKEMJljEgb0L3DhUNsUYIvY0fkOkYfUe1sFKHhA7nsRSRsXoG0MbdCeJ +3Pw== X-Gm-Message-State: AOJu0YxQgKchZzaU/ovRbuY18E+yPHwlfVTTyNMvqbwfdWm4PLkSSpy+ bQACpLeHR2lBqGB61nVQ+hiA73tqwg4IYyJbK6+NPTC0IKUJRVj0q+8lujVrX3SjHEpoegTWTZN nniEaJtSWztDSFUdoTBXc8mezeaUyH1ELRA== X-Gm-Gg: ASbGnctHoS5tOvoLGNlippsbfFOvXEhM63OS7pCFehI/WiWunXBi3WCj3r8TPCCx/rz +g+ZExTO7SkQkT9CddKz/ndyh0d/C8Hbrm89UqHcXxdpbJN7nCl9Z5VhUR/5xHpLKixkBzv8vut sOjiQdbpQ024FE3MVBlBBmtZc4tOqPr4jzXJ5GN/TvDy8D+c3KPem25g== X-Google-Smtp-Source: AGHT+IH76hcOAI0evBIpksmC1Cxk71m9YbkZ4K5bptVJ+S8LcKqX+p0/YaA4l2x+2iJG9xOK8s6r0fm8xF8bVOIX0jY= X-Received: by 2002:a17:907:7fa9:b0:ae0:d08b:e85 with SMTP id a640c23a62f3a-ae350238e32mr62167866b.61.1750975486128; Thu, 26 Jun 2025 15:04:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Melanie Plageman Date: Thu, 26 Jun 2025 18:04:34 -0400 X-Gm-Features: Ac12FXw1vI37EQgiYflfjOtyrcQww0mcuS9eOQP-7TXMJWVeSNyPO38BZytnJTY Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: PostgreSQL Hackers Cc: Andres Freund , Robert Haas Content-Type: multipart/mixed; boundary="000000000000dd2a91063880bfd3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dd2a91063880bfd3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jun 23, 2025 at 4:25=E2=80=AFPM Melanie Plageman wrote: > > The attached patch set eliminates xl_heap_visible, the WAL record > emitted when a block of the heap is set all-visible/frozen in the > visibility map. Instead, it includes the information needed to update > the VM in the WAL record already emitted by the operation modifying > the heap page. Rebased in light of recent changes on master: 0001: cleanup 0002: preparatory work 0003: eliminate xl_heap_visible for COPY FREEZE 0004 - 0005: eliminate xl_heap_visible for vacuum's phase III 0006: eliminate xl_heap_visible for vacuum phase I empty pages 0007 - 0010: preparatory refactoring 0011: eliminate xl_heap_visible from vacuum phase I prune/freeze 0012: remove xl_heap_visible - Melanie --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0002-Introduce-unlogged-versions-of-VM-functions.patch" Content-Disposition: attachment; filename="v2-0002-Introduce-unlogged-versions-of-VM-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv001 RnJvbSAzYjljYmFhYzNiNDA5NzZlZjA0ZWFkM2UyNTAwZjI0ZDg5MzhiZGE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAwMi8xMl0gSW50cm9kdWNlIHVubG9nZ2VkIHZlcnNpb25zIG9mIFZNIGZ1bmN0aW9u cwoKRnV0dXJlIGNvbW1pdHMgd2lsbCBlbGltaW5hdGUgdXNhZ2VzIG9mIHhsX2hlYXBfdmlzaWJs ZSBhbmQgaW5jb3Jwb3JhdGUKc2V0dGluZyB0aGUgVk0gaW50byB0aGUgV0FMIHJlY29yZHMgbWFr aW5nIG90aGVyIGNoYW5nZXMgdG8gdGhlIGhlYXAKcGFnZS4gQXMgYSBzdGVwIHRvd2FyZCB0aGlz IG1ha2UgdmVyc2lvbnMgb2YgdGhlIGZ1bmN0aW9ucyB3aGljaCB1cGRhdGUKdGhlIFZNIGFuZCBp dHMgaGVhcC1zcGVjaWZpYyB3cmFwcGVyIHdoaWNoIGRvIG5vdCBlbWl0IHRoZWlyIG93biBXQUwu CgpUaGVzZSB3aWxsIGJlIHVzZWQgaW4gZm9sbG93LW9uIGNvbW1pdHMuCi0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgIHwgNDQgKysrKysrKysrKysrKysrKysrKysr KysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgfCA0NSArKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAg ICAgfCAgMyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCAgICAgIHwgIDIg KysKIDQgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggMTEyZjk0NmRhYjAuLmQxMjU3ODdmY2I2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNzg5OCw2ICs3ODk4LDUwIEBAIGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyhS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWYsCiAJcmV0 dXJuIG9sZF92bWJpdHM7CiB9CiAKKy8qCisgKiBFbnN1cmUgdGhlIHByb3ZpZGVkIGhlYXAgcGFn ZSBpcyBtYXJrZWQgUERfQUxMX1ZJU0lCTEUgYW5kIHRoZW4gc2V0IHRoZQorICogcHJvdmlkZWQg dm1mbGFncyBpbiB0aGUgcHJvdmlkZWQgdm1idWYuCisgKgorICogQm90aCB0aGUgaGVhcCBwYWdl IGFuZCBWTSBwYWdlIHNob3VsZCBiZSBwaW5uZWQgYW5kIGV4Y2x1c2l2ZSBsb2NrZWQuCisgKiBZ b3UgbXVzdCBwYXNzIGEgVk0gYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgcGFnZSBvZiB0 aGUgbWFwCisgKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXNzZWQgaW4gaGVhcCBibG9jay4KKyAq CisgKiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBhIGNyaXRpY2FsIHNlY3Rpb24gdGhh dCBhbHNvIGVtaXRzIFdBTCAoYXMKKyAqIG5lZWRlZCkgZm9yIGJvdGggaGVhcCBwYWdlIGNoYW5n ZXMgYW5kIFZNIHBhZ2UgY2hhbmdlcy4KKyAqLwordWludDgKK2hlYXBfcGFnZV9zZXRfdm0oUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmLAorCQkJCSBC dWZmZXIgdm1idWYsIHVpbnQ4IHZtZmxhZ3MpCit7CisJUGFnZQkJaGVhcF9wYWdlID0gQnVmZmVy R2V0UGFnZShoZWFwX2J1Zik7CisKKwlBc3NlcnQoQnVmZmVySXNWYWxpZChoZWFwX2J1ZikpOwor CUFzc2VydChDcml0U2VjdGlvbkNvdW50ID4gMCk7CisKKwkvKiBDaGVjayB0aGF0IHdlIGhhdmUg dGhlIHJpZ2h0IGhlYXAgcGFnZSBwaW5uZWQgKi8KKwlpZiAoQnVmZmVyR2V0QmxvY2tOdW1iZXIo aGVhcF9idWYpICE9IGhlYXBfYmxrKQorCQllbG9nKEVSUk9SLCAid3JvbmcgaGVhcCBidWZmZXIg cGFzc2VkIHRvIGhlYXBfcGFnZV9zZXRfdm0iKTsKKworCS8qCisJICogV2UgbXVzdCBuZXZlciBl bmQgdXAgd2l0aCB0aGUgVk0gYml0IHNldCBhbmQgdGhlIHBhZ2UtbGV2ZWwKKwkgKiBQRF9BTExf VklTSUJMRSBiaXQgY2xlYXIuIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgYSBzdWJzZXF1ZW50IHBh Z2UKKwkgKiBtb2RpZmljYXRpb24gd291bGQgZmFpbCB0byBjbGVhciB0aGUgVk0gYml0LgorCSAq CisJICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3IgdGhlIHBhZ2Ut bGV2ZWwgYml0IHRvIGJlIHNldAorCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNsZWFyLiBUaGlz IGNvdWxkIGhhcHBlbiBpZiB3ZSBjcmFzaGVkIGFmdGVyCisJICogc2V0dGluZyBQRF9BTExfVklT SUJMRSBidXQgYmVmb3JlIHNldHRpbmcgYml0cyBpbiB0aGUgVk0uIFNpbmNlCisJICogUG9zdGdy ZXMgMTksIHNpbmNlIGhlYXAgcGFnZSBtb2RpZmljYXRpb25zIGFyZSBkb25lIGluIHRoZSBzYW1l CisJICogY3JpdGljYWwgc2VjdGlvbiBhcyBzZXR0aW5nIHRoZSBWTSBiaXRzLCB0aGF0IHNob3Vs ZCBub3QgbG9uZ2VyIGhhcHBlbi4KKwkgKi8KKwlpZiAoIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9w YWdlKSkKKwl7CisJCVBhZ2VTZXRBbGxWaXNpYmxlKGhlYXBfcGFnZSk7CisJCU1hcmtCdWZmZXJE aXJ0eShoZWFwX2J1Zik7CisJfQorCisJcmV0dXJuIHZpc2liaWxpdHltYXBfc2V0X3ZtYnl0ZShy ZWwsIGhlYXBfYmxrLCB2bWJ1Ziwgdm1mbGFncyk7Cit9CisKIC8qCiAgKiBoZWFwX3R1cGxlX3No b3VsZF9mcmVlemUKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNp YmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5k ZXggYzU3NjMyMTY4YzcuLmNhYmQwZmEwODgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlz aWJpbGl0eW1hcC5jCkBAIC0zMDAsNiArMzAwLDUxIEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0 aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJcmV0dXJuIHN0 YXR1czsKIH0KIAorLyoKKyAqIFNldCBmbGFncyBpbiB0aGUgVk0gYmxvY2sgY29udGFpbmVkIGlu IHRoZSBwYXNzZWQgaW4gdm1CdWYuCisgKiBDYWxsZXIgbXVzdCBoYXZlIHBpbm5lZCBhbmQgZXhj bHVzaXZlIGxvY2tlZCB0aGUgY29ycmVjdCBibG9jayBvZiB0aGUgVk0gaW4KKyAqIHZtQnVmLgor ICogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBXQUwgbG9nZ2luZyB0aGUgY2hhbmdlcyB0byB0 aGUgVk0gYnVmZmVyIGFuZCBmb3IKKyAqIG1ha2luZyBhbnkgY2hhbmdlcyBuZWVkZWQgdG8gdGhl IGFzc29jaWF0ZWQgaGVhcCBwYWdlLgorICovCit1aW50OAordmlzaWJpbGl0eW1hcF9zZXRfdm1i eXRlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCSBCdWZmZXIgdm1C dWYsIHVpbnQ4IGZsYWdzKQoreworCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19N QVBCTE9DSyhoZWFwQmxrKTsKKwl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUo aGVhcEJsayk7CisJdWludDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGsp OworCVBhZ2UJCXBhZ2U7CisJdWludDgJICAgKm1hcDsKKwl1aW50OAkJc3RhdHVzOworCisjaWZk ZWYgVFJBQ0VfVklTSUJJTElUWU1BUAorCWVsb2coREVCVUcxLCAidm1fc2V0ICVzICVkIiwgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcEJsayk7CisjZW5kaWYKKworCS8qIEZsYWdz IHNob3VsZCBiZSB2YWxpZC4gQWxzbyBuZXZlciBjbGVhciBiaXRzIHdpdGggdGhpcyBmdW5jdGlv biAqLworCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdz KTsKKworCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0 aW5nIGFsbF92aXNpYmxlIGJpdCAqLworCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pOworCisJLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBWTSBwYWdlIHBp bm5lZCAqLworCWlmICghQnVmZmVySXNWYWxpZCh2bUJ1ZikgfHwgQnVmZmVyR2V0QmxvY2tOdW1i ZXIodm1CdWYpICE9IG1hcEJsb2NrKQorCQllbG9nKEVSUk9SLCAid3JvbmcgVk0gYnVmZmVyIHBh c3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOworCisJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1C dWYpOworCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29udGVudHMocGFnZSk7CisKKwlzdGF0dXMg PSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7 CisJaWYgKGZsYWdzICE9IHN0YXR1cykKKwl7CisJCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwg bWFwT2Zmc2V0KTsKKwkJTWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKKwl9CisKKwlyZXR1cm4gc3Rh dHVzOworfQorCiAvKgogICoJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBv ZiBiaXRzCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDkzNzUyOTYwNjJmLi41MTI3ZmRiOWM3NyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaApAQCAtMzYwLDYgKzM2MCw5IEBAIGV4dGVybiBib29sIGhlYXBfdHVw bGVfc2hvdWxkX2ZyZWV6ZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUsCiAJCQkJCQkJCQkgVHJhbnNh Y3Rpb25JZCAqTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkLAogCQkJCQkJCQkJIE11bHRpWGFjdElk ICpOb0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkKTsKIGV4dGVybiBib29sIGhlYXBfdHVwbGVfbmVlZHNf ZXZlbnR1YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSk7CisKK2V4dGVybiB1aW50OCBo ZWFwX3BhZ2Vfc2V0X3ZtKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZl ciBoZWFwX2J1ZiwKKwkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZiwgdWludDggdm1mbGFncyk7CiBleHRl cm4gdWludDggaGVhcF9wYWdlX3NldF92bV9hbmRfbG9nKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcF9ibGssIEJ1ZmZlciBoZWFwX2J1ZiwKIAkJCQkJCQkJCSAgQnVmZmVyIHZtYnVmLCBU cmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCiAJCQkJCQkJCQkgIHVpbnQ4IHZtZmxhZ3MpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXggNGM3NDcyZTBiNTEuLjkxZWYzNzA1ZTg0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKQEAgLTM3LDYgKzM3LDggQEAgZXh0ZXJuIHVp bnQ4IHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgICBCdWZmZXIgdm1C dWYsCiAJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAogCQkJCQkJCSAgIHVpbnQ4 IGZsYWdzKTsKK2V4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJCQkJICBCdWZmZXIgdm1CdWYsIHVpbnQ4 IGZsYWdzKTsKIGV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiB2b2lkIHZp c2liaWxpdHltYXBfY291bnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciAqYWxsX3Zpc2libGUs IEJsb2NrTnVtYmVyICphbGxfZnJvemVuKTsKIGV4dGVybiBCbG9ja051bWJlciB2aXNpYmlsaXR5 bWFwX3ByZXBhcmVfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLAotLSAKMi4zNC4xCgo= --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-Introduce-heap-specific-wrapper-for-visibilitymap.patch" Content-Disposition: attachment; filename="v2-0001-Introduce-heap-specific-wrapper-for-visibilitymap.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkuzu0 RnJvbSA0NDM3MGY0ODBhMWRhMWM1MTY0MGZhYTUwOThlZjEyN2JlN2YzMDkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDI2IEp1biAyMDI1IDE1OjU3OjUzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAwMS8xMl0gSW50cm9kdWNlIGhlYXAtc3BlY2lmaWMgd3JhcHBlciBmb3IKIHZpc2li aWxpdHltYXBfc2V0KCkKCnZpc2liaWxpdHltYXBfc2V0KCksIHdoaWNoIHNldHMgYml0cyBpbiB0 aGUgdmlzaWJpbGl0eSBtYXAgY29ycmVzcG9uZGluZwp0byB0aGUgaGVhcCBibG9jayBvZiB0aGUg dGFibGUgcGFzc2VkIGluLCBhcmd1YWJseSBicmVha3MgYSBmZXcgb2YgdGhlCmNvZGluZyBydWxl cyBmb3IgbW9kaWZ5aW5nIGFuZCBXQUwgbG9nZ2luZyBidWZmZXJzIHNldCBvdXQgaW4KYWNjZXNz L3RyYW5zYW0vUkVBRE1FLgoKSW4gc2V2ZXJhbCBvZiB0aGUgcGxhY2VzIHdoZXJlIHZpc2liaWxp dHltYXBfc2V0KCkgaXMgY2FsbGVkLCBzZXR0aW5nCnRoZSBoZWFwIHBhZ2UgUERfQUxMX1ZJU0lC TEUgYW5kIG1hcmtpbmcgdGhlIGJ1ZmZlciBkaXJ0eSBhcmUgZG9uZQpvdXRzaWRlIG9mIGEgY3Jp dGljYWwgc2VjdGlvbi4KCkluIHNvbWUgcGxhY2VzIGJlZm9yZSB2aXNpYmlsaXR5bWFwX3NldCgp IGlzIGNhbGxlZCwgTWFya0J1ZmZlckRpcnR5KCkKaXMgdXNlZCB3aGVuIE1hcmtCdWZmZXJEaXJ0 eUhpbnQoKSB3b3VsZCBiZSBhcHByb3ByaWF0ZS4KCkFuZCBpbiBzb21lIHBsYWNlcyB3aGVyZSBQ RF9BTExfVklTSUJMRSBtYXkgYWxyZWFkeSBiZSBzZXQgYW5kIHdlIGRvbid0Cm1hcmsgdGhlIGJ1 ZmZlciBkaXJ0eSwgd2hlbiBjaGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZAp2aXNp YmlsaXR5bWFwX3NldCgpIHdpbGwgc3RpbGwgc2V0IHRoZSBoZWFwIHBhZ2UgTFNOIC0tIGV2ZW4g dGhvdWdoIGl0CndhcyBjb3JyZWN0IG5vdCB0byBzZXQgdGhlIGJ1ZmZlciBkaXJ0eS4KCkJlc2lk ZXMgYWxsIG9mIHRoZXNlIGlzc3VlcywgaGF2aW5nIHRoZXNlIG9wZXJhdGlvbnMgb3Blbi1jb2Rl ZCBhbGwgb3Zlcgp0aGUgcGxhY2UgaXMgZXJyb3ItcHJvbmUuIFRoaXMgY29tbWl0IGludHJvZHVj ZXMgYSB3cmFwcGVyIHRoYXQgZG9lcyB0aGUKY29ycmVjdCBvcGVyYXRpb25zIHRvIHRoZSBoZWFw IHBhZ2UgaXRzZWxmIGFuZCBpbnZva2VzCnZpc2liaWxpdHltYXBfc2V0KCkgdG8gbWFrZSBjaGFu Z2VzIHRvIHRoZSBWTSBwYWdlLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j ICAgICAgICB8IDkyICsrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMgICAgfCA2NiArKysrKy0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYyB8IDU4ICsrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICB8ICAzICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy92 aXNpYmlsaXR5bWFwLmggICAgICB8ICAyICstCiA2IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRp b25zKCspLCAxMDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCAw ZGNkNmVlODE3ZS4uMTEyZjk0NmRhYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0y NTA1LDggKzI1MDUsNiBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVw bGVUYWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJCQkJCQkJCUJ1ZmZlckdldEJsb2Nr TnVtYmVyKGJ1ZmZlciksCiAJCQkJCQkJCXZtYnVmZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMpOwogCQl9Ci0JCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQotCQkJUGFnZVNldEFsbFZpc2li bGUocGFnZSk7CiAKIAkJLyoKIAkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxl IG9uIHRoaXMgcGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCkBAIC0yNjMyLDIzICsyNjMwLDE2IEBA IGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNs b3RzLCBpbnQgbnR1cGxlcywKIAogCQkvKgogCQkgKiBJZiB3ZSd2ZSBmcm96ZW4gZXZlcnl0aGlu ZyBvbiB0aGUgcGFnZSwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5bWFwLgotCQkgKiBXZSdyZSBhbHJl YWR5IGhvbGRpbmcgcGluIG9uIHRoZSB2bWJ1ZmZlci4KKwkJICogV2UncmUgYWxyZWFkeSBob2xk aW5nIHBpbiBvbiB0aGUgdm1idWZmZXIuIEl0J3MgZmluZSB0byB1c2UKKwkJICogSW52YWxpZFRy YW5zYWN0aW9uSWQgYXMgdGhlIGN1dG9mZl94aWQgaGVyZSAtIHRoaXMgaXMgb25seSB1c2VkCisJ CSAqIHdoZW4gSEVBUF9JTlNFUlRfRlJPWkVOIGlzIHNwZWNpZmllZCwgd2hpY2ggaW50ZW50aW9u YWxseSB2aW9sYXRlcworCQkgKiB2aXNpYmlsaXR5IHJ1bGVzLgogCQkgKi8KIAkJaWYgKGFsbF9m cm96ZW5fc2V0KQotCQl7Ci0JCQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7Ci0JCQlB c3NlcnQodmlzaWJpbGl0eW1hcF9waW5fb2soQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwg dm1idWZmZXIpKTsKLQotCQkJLyoKLQkJCSAqIEl0J3MgZmluZSB0byB1c2UgSW52YWxpZFRyYW5z YWN0aW9uSWQgaGVyZSAtIHRoaXMgaXMgb25seSB1c2VkCi0JCQkgKiB3aGVuIEhFQVBfSU5TRVJU X0ZST1pFTiBpcyBzcGVjaWZpZWQsIHdoaWNoIGludGVudGlvbmFsbHkKLQkJCSAqIHZpb2xhdGVz IHZpc2liaWxpdHkgcnVsZXMuCi0JCQkgKi8KLQkJCXZpc2liaWxpdHltYXBfc2V0KHJlbGF0aW9u LCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCBidWZmZXIsCi0JCQkJCQkJICBJbnZhbGlk WExvZ1JlY1B0ciwgdm1idWZmZXIsCi0JCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJ CQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfCBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU4pOwotCQl9CisJCQloZWFwX3BhZ2Vfc2V0X3ZtX2FuZF9sb2cocmVsYXRpb24sIEJ1ZmZlckdl dEJsb2NrTnVtYmVyKGJ1ZmZlciksIGJ1ZmZlciwKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9W SVNJQkxFIHwgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKIAogCQlVbmxvY2tSZWxlYXNlQnVm ZmVyKGJ1ZmZlcik7CiAJCW5kb25lICs9IG50aGlzcGFnZTsKQEAgLTc4NDAsNiArNzgzMSw3MyBA QCBoZWFwX3R1cGxlX25lZWRzX2V2ZW50dWFsX2ZyZWV6ZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUp CiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogTWFrZSB0aGUgaGVhcCBhbmQgVk0gcGFnZSBj aGFuZ2VzIG5lZWRlZCB0byBzZXQgYSBwYWdlIGFsbC12aXNpYmxlLgorICogRG8gbm90IGNhbGwg aW4gcmVjb3ZlcnkuCisgKi8KK3VpbnQ4CitoZWFwX3BhZ2Vfc2V0X3ZtX2FuZF9sb2coUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmLAorCQkJCQkJIEJ1 ZmZlciB2bWJ1ZiwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAorCQkJCQkJIHVpbnQ4IHZtZmxh Z3MpCit7CisJUGFnZQkJaGVhcF9wYWdlID0gQnVmZmVyR2V0UGFnZShoZWFwX2J1Zik7CisJYm9v bAkJc2V0X2hlYXBfbHNuID0gZmFsc2U7CisJWExvZ1JlY1B0cglyZWNwdHIgPSBJbnZhbGlkWExv Z1JlY1B0cjsKKwl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CisKKwlBc3NlcnQoQnVmZmVySXNWYWxp ZChoZWFwX2J1ZikpOworCisJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwkvKiBDaGVjayB0aGF0 IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFnZSBwaW5uZWQsIGlmIHByZXNlbnQgKi8KKwlpZiAo QnVmZmVyR2V0QmxvY2tOdW1iZXIoaGVhcF9idWYpICE9IGhlYXBfYmxrKQorCQllbG9nKEVSUk9S LCAid3JvbmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyIp OworCisJLyoKKwkgKiBXZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRoIHRoZSBWTSBiaXQgc2V0IGFu ZCB0aGUgcGFnZS1sZXZlbAorCSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBjbGVhci4gSWYgdGhhdCB3 ZXJlIHRvIG9jY3VyLCBhIHN1YnNlcXVlbnQgcGFnZQorCSAqIG1vZGlmaWNhdGlvbiB3b3VsZCBm YWlsIHRvIGNsZWFyIHRoZSBWTSBiaXQuIFRob3VnaCBpdCBpcyBwb3NzaWJsZSBmb3IKKwkgKiB0 aGUgcGFnZS1sZXZlbCBiaXQgdG8gYmUgc2V0IGFuZCB0aGUgVk0gYml0IHRvIGJlIGNsZWFyIGlm IGNoZWNrc3VtcworCSAqIGFuZCB3YWxfbG9nX2hpbnRzIGFyZSBub3QgZW5hYmxlZC4KKwkgKi8K KwlpZiAoIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSkKKwl7CisJCVBhZ2VTZXRBbGxWaXNp YmxlKGhlYXBfcGFnZSk7CisKKwkJLyoKKwkJICogQnVmZmVyIHdpbGwgdXN1YWxseSBiZSBkaXJ0 eSBmcm9tIG90aGVyIGNoYW5nZXMsIHNvIGl0IGlzIHdvcnRoIHRoZQorCQkgKiBleHRyYSBjaGVj aworCQkgKi8KKwkJaWYgKCFCdWZmZXJJc0RpcnR5KGhlYXBfYnVmKSkKKwkJeworCQkJaWYgKFhM b2dIaW50Qml0SXNOZWVkZWQoKSkKKwkJCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWYpOworCQkJ ZWxzZQorCQkJCU1hcmtCdWZmZXJEaXJ0eUhpbnQoaGVhcF9idWYsIHRydWUpOworCQl9CisKKwkJ c2V0X2hlYXBfbHNuID0gWExvZ0hpbnRCaXRJc05lZWRlZCgpOworCX0KKworCW9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX3NldChyZWwsIGhlYXBfYmxrLCBoZWFwX2J1ZiwKKwkJCQkJCQkJICAg JnJlY3B0ciwgdm1idWYsIGN1dG9mZl94aWQsIHZtZmxhZ3MpOworCisJLyoKKwkgKiBJZiB3ZSBt b2RpZmllZCB0aGUgaGVhcCBwYWdlIGFuZCBkYXRhIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCAob3IK KwkgKiB3YWxfbG9nX2hpbnRzPW9uKSwgd2UgbmVlZCB0byBwcm90ZWN0IHRoZSBoZWFwIHBhZ2Ug ZnJvbSBiZWluZyB0b3JuLgorCSAqCisJICogSWYgbm90LCB0aGVuIHdlIG11c3QgKm5vdCogdXBk YXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uIEluIHRoaXMgY2FzZSwKKwkgKiB0aGUgRlBJIGZvciB0 aGUgaGVhcCBwYWdlIHdhcyBvbWl0dGVkIGZyb20gdGhlIFdBTCByZWNvcmQgaW5zZXJ0ZWQgaW4K KwkgKiB0aGUgVk0gcmVjb3JkLCBzbyBpdCB3b3VsZCBiZSBpbmNvcnJlY3QgdG8gdXBkYXRlIHRo ZSBoZWFwIHBhZ2UncyBMU04uCisJICovCisJaWYgKHNldF9oZWFwX2xzbikKKwkJUGFnZVNldExT TihoZWFwX3BhZ2UsIHJlY3B0cik7CisKKwlFTkRfQ1JJVF9TRUNUSU9OKCk7CisKKwlyZXR1cm4g b2xkX3ZtYml0czsKK30KKwogLyoKICAqIGhlYXBfdHVwbGVfc2hvdWxkX2ZyZWV6ZQogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGViNGJkM2Q2YWUzLi5mMmJjMWJk MDZlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0yOTcsNyArMjk3 LDcgQEAgaGVhcF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCXJlbG4g PSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7CiAJCXZpc2liaWxpdHltYXBfcGlu KHJlbG4sIGJsa25vLCAmdm1idWZmZXIpOwogCi0JCXZpc2liaWxpdHltYXBfc2V0KHJlbG4sIGJs a25vLCBJbnZhbGlkQnVmZmVyLCBsc24sIHZtYnVmZmVyLAorCQl2aXNpYmlsaXR5bWFwX3NldChy ZWxuLCBibGtubywgSW52YWxpZEJ1ZmZlciwgJmxzbiwgdm1idWZmZXIsCiAJCQkJCQkgIHhscmVj LT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdm1iaXRzKTsKIAogCQlSZWxlYXNlQnVmZmVyKHZt YnVmZmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA4YTQyZTE3YWVj Mi4uYzA2MDhhZjdkMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4 NzQsOSArMTg3NCw2IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVs LCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJewogCQkJU1RBUlRfQ1JJVF9TRUNU SU9OKCk7CiAKLQkJCS8qIG1hcmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3cml0aW5nIGEgV0FMIHJl Y29yZCAqLwotCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0KIAkJCS8qCiAJCQkgKiBJdCdzIHBv c3NpYmxlIHRoYXQgYW5vdGhlciBiYWNrZW5kIGhhcyBleHRlbmRlZCB0aGUgaGVhcCwKIAkJCSAq IGluaXRpYWxpemVkIHRoZSBwYWdlLCBhbmQgdGhlbiBmYWlsZWQgdG8gV0FMLWxvZyB0aGUgcGFn ZSBkdWUKQEAgLTE4ODgsMTQgKzE4ODUsMTUgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJICovCiAJ CQlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkgJiYKIAkJCQlQYWdlR2V0TFNOKHBh Z2UpID09IEludmFsaWRYTG9nUmVjUHRyKQorCQkJeworCQkJCU1hcmtCdWZmZXJEaXJ0eShidWYp OwogCQkJCWxvZ19uZXdwYWdlX2J1ZmZlcihidWYsIHRydWUpOworCQkJfQogCi0JCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtu bywgYnVmLAotCQkJCQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJICB2bWJ1ZmZlciwg SW52YWxpZFRyYW5zYWN0aW9uSWQsCi0JCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF IHwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CisJCQloZWFwX3BhZ2Vfc2V0 X3ZtX2FuZF9sb2codmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCisJCQkJCQkJCQkgdm1idWZmZXIs IEludmFsaWRUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEUgfAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CiAJCQlFTkRfQ1JJVF9T RUNUSU9OKCk7CiAKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVuIHBhZ2VzIGZvciBs b2dnaW5nICovCkBAIC0yMDY5LDI1ICsyMDY3LDkgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3Rh dGUgKnZhY3JlbCwKIAkJCWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKIAkJfQog Ci0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmls aXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xl YXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVja3N1bXMgYXJlIG5v dCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBn ZXQgYmFjayBpbiBzeW5jLgotCQkgKgotCQkgKiBOQjogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwt dmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQotCQkgKiBkb24ndCBuZWVkIHRv IGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMgYXJlCi0JCSAqIGVu YWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0 aWVkCi0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1 c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICogR2l2ZW4gdGhhdCB0aGlzIHNpdHVhdGlvbiBzaG91 bGQgb25seSBoYXBwZW4gaW4gcmFyZSBjYXNlcyBhZnRlciBhCi0JCSAqIGNyYXNoLCBpdCBpcyBu b3Qgd29ydGggb3B0aW1pemluZy4KLQkJICovCi0JCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwot CQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0 KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIs Ci0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJ CQkJCQkJICAgZmxhZ3MpOworCQlvbGRfdm1iaXRzID0gaGVhcF9wYWdlX3NldF92bV9hbmRfbG9n KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAorCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCBwcmVzdWx0 LnZtX2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQkJCSAgZmxhZ3MpOwogCiAJCS8qCiAJCSAq IElmIHRoZSBwYWdlIHdhc24ndCBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZy b3plbiBpbiB0aGUKQEAgLTIxNTksMTcgKzIxNDEsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxT dGF0ZSAqdmFjcmVsLAogCXsKIAkJdWludDgJCW9sZF92bWJpdHM7CiAKLQkJLyoKLQkJICogQXZv aWQgcmVseWluZyBvbiBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYXMgYSBwcm94eSBmb3Ig dGhlCi0JCSAqIHBhZ2UtbGV2ZWwgUERfQUxMX1ZJU0lCTEUgYml0IGJlaW5nIHNldCwgc2luY2Ug aXQgbWlnaHQgaGF2ZSBiZWNvbWUKLQkJICogc3RhbGUgLS0gZXZlbiB3aGVuIGFsbF92aXNpYmxl IGlzIHNldAotCQkgKi8KLQkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQotCQl7Ci0JCQlQ YWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl9Ci0K IAkJLyoKIAkJICogU2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4gKGFuZCBhbGwtdmlzaWJsZSkgaW4g dGhlIFZNLgogCQkgKgpAQCAtMjE3OCwxMSArMjE0OSwxMCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLAogCQkgKiB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMg d2VyZSBmcm96ZW4uCiAJCSAqLwogCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1 bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9z ZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0 ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkJ CSAgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1B UF9BTExfRlJPWkVOKTsKKwkJb2xkX3ZtYml0cyA9IGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyh2 YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKKwkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgSW52YWxpZFRy YW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJ CQkJCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKIAogCQkvKgogCQkgKiBUaGUg cGFnZSB3YXMgbGlrZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTS4gSG93ZXZl ciwKQEAgLTI5MTMsMTEgKzI4ODMsOSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0 ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCWZsYWdzIHw9 IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKIAkJfQogCi0JCVBhZ2VTZXRBbGxWaXNpYmxlKHBh Z2UpOwotCQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZmZlciwKLQkJ CQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkgIHZtYnVmZmVyLCB2aXNpYmlsaXR5X2N1 dG9mZl94aWQsCi0JCQkJCQkgIGZsYWdzKTsKKwkJaGVhcF9wYWdlX3NldF92bV9hbmRfbG9nKHZh Y3JlbC0+cmVsLCBibGtubywgYnVmZmVyLAorCQkJCQkJCQkgdm1idWZmZXIsIHZpc2liaWxpdHlf Y3V0b2ZmX3hpZCwKKwkJCQkJCQkJIGZsYWdzKTsKIAogCQkvKiBDb3VudCB0aGUgbmV3bHkgc2V0 IFZNIHBhZ2UgZm9yIGxvZ2dpbmcgKi8KIAkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysr OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDc0NWEwNGVmMjZl Li5jNTc2MzIxNjhjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpA QCAtMjIyLDI5ICsyMjIsMzEgQEAgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVh cEJsaywgQnVmZmVyIHZtYnVmKQogLyoKICAqCXZpc2liaWxpdHltYXBfc2V0IC0gc2V0IGJpdChz KSBvbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKICAqCi0gKiByZWNwdHIgaXMgdGhlIExTTiBv ZiB0aGUgWExPRyByZWNvcmQgd2UncmUgcmVwbGF5aW5nLCBpZiB3ZSdyZSBpbiByZWNvdmVyeSwK LSAqIG9yIEludmFsaWRYTG9nUmVjUHRyIGluIG5vcm1hbCBydW5uaW5nLiAgVGhlIFZNIHBhZ2Ug TFNOIGlzIGFkdmFuY2VkIHRvIHRoZQotICogb25lIHByb3ZpZGVkOyBpbiBub3JtYWwgcnVubmlu Zywgd2UgZ2VuZXJhdGUgYSBuZXcgWExPRyByZWNvcmQgYW5kIHNldCB0aGUKLSAqIHBhZ2UgTFNO IHRvIHRoYXQgdmFsdWUgKHRob3VnaCB0aGUgaGVhcCBwYWdlJ3MgTFNOIG1heSAqbm90KiBiZSB1 cGRhdGVkOwotICogc2VlIGJlbG93KS4gIGN1dG9mZl94aWQgaXMgdGhlIGxhcmdlc3QgeG1pbiBv biB0aGUgcGFnZSBiZWluZyBtYXJrZWQKLSAqIGFsbC12aXNpYmxlOyBpdCBpcyBuZWVkZWQgZm9y IEhvdCBTdGFuZGJ5LCBhbmQgY2FuIGJlIEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiBpZiB0aGUg cGFnZSBjb250YWlucyBubyB0dXBsZXMuICBJdCBjYW4gYWxzbyBiZSBzZXQgdG8gSW52YWxpZFRy YW5zYWN0aW9uSWQKLSAqIHdoZW4gYSBwYWdlIHRoYXQgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBp cyBiZWluZyBtYXJrZWQgYWxsLWZyb3plbi4KLSAqCiAgKiBDYWxsZXIgaXMgZXhwZWN0ZWQgdG8g c2V0IHRoZSBoZWFwIHBhZ2UncyBQRF9BTExfVklTSUJMRSBiaXQgYmVmb3JlIGNhbGxpbmcKLSAq IHRoaXMgZnVuY3Rpb24uIEV4Y2VwdCBpbiByZWNvdmVyeSwgY2FsbGVyIHNob3VsZCBhbHNvIHBh c3MgdGhlIGhlYXAKLSAqIGJ1ZmZlci4gV2hlbiBjaGVja3N1bXMgYXJlIGVuYWJsZWQgYW5kIHdl J3JlIG5vdCBpbiByZWNvdmVyeSwgd2UgbXVzdCBhZGQKLSAqIHRoZSBoZWFwIGJ1ZmZlciB0byB0 aGUgV0FMIGNoYWluIHRvIHByb3RlY3QgaXQgZnJvbSBiZWluZyB0b3JuLgorICogdGhpcyBmdW5j dGlvbi4gRXhjZXB0IGluIHJlY292ZXJ5LCBjYWxsZXIgc2hvdWxkIGFsc28gcGFzcyB0aGUgaGVh cCBidWZmZXIuCisgKiBXaGVuIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQgd2UncmUgbm90IGlu IHJlY292ZXJ5LCB3ZSBtdXN0IGFkZCB0aGUgaGVhcAorICogYnVmZmVyIHRvIHRoZSBXQUwgY2hh aW4gdG8gcHJvdGVjdCBpdCBmcm9tIGJlaW5nIHRvcm4uCiAgKgogICogWW91IG11c3QgcGFzcyBh IGJ1ZmZlciBjb250YWluaW5nIHRoZSBjb3JyZWN0IG1hcCBwYWdlIHRvIHRoaXMgZnVuY3Rpb24u CiAgKiBDYWxsIHZpc2liaWxpdHltYXBfcGluIGZpcnN0IHRvIHBpbiB0aGUgcmlnaHQgb25lLiBU aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZG8KICAqIGFueSBJL08uCiAgKgotICogUmV0dXJucyB0aGUg c3RhdGUgb2YgdGhlIHBhZ2UncyBWTSBiaXRzIGJlZm9yZSBzZXR0aW5nIGZsYWdzLgorICogY3V0 b2ZmX3hpZCBpcyB0aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nIG1hcmtlZCBhbGwt dmlzaWJsZTsgaXQgaXMKKyAqIG5lZWRlZCBmb3IgSG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52 YWxpZFRyYW5zYWN0aW9uSWQgaWYgdGhlIHBhZ2UKKyAqIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0 IGNhbiBhbHNvIGJlIHNldCB0byBJbnZhbGlkVHJhbnNhY3Rpb25JZCB3aGVuIGEgcGFnZQorICog dGhhdCBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGlzIGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgor ICoKKyAqIElmIHdlJ3JlIGluIHJlY292ZXJ5LCByZWNwdHIgcG9pbnRzIHRvIHRoZSBMU04gb2Yg dGhlIFhMT0cgcmVjb3JkIHdlJ3JlCisgKiByZXBsYXlpbmcgYW5kIHRoZSBWTSBwYWdlIExTTiBp cyBhZHZhbmNlZCB0byB0aGlzIExTTi4gRHVyaW5nIG5vcm1hbAorICogcnVubmluZywgd2UnbGwg Z2VuZXJhdGUgYSBuZXcgWExPRyByZWNvcmQgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBWTSBhbmQg c2V0CisgKiB0aGUgVk0gcGFnZSBMU04uIFdlIHdpbGwgcmV0dXJuIHRoaXMgTFNOIGluIHJlY3B0 ciwgYW5kIHRoZSBjYWxsZXIgbWF5IHVzZQorICogdGhpcyB0byBzZXQgdGhlIGhlYXAgcGFnZSBM U04uCisgKgorICogUmV0dXJucyB0aGUgc3RhdGUgb2YgdGhlIHBhZ2UncyBWTSBiaXRzIGJlZm9y ZSBzZXR0aW5nIGZsYWdzIGFuZCBzZXRzLgogICovCiB1aW50OAogdmlzaWJpbGl0eW1hcF9zZXQo UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkg IFhMb2dSZWNQdHIgcmVjcHRyLCBCdWZmZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hp ZCwKKwkJCQkgIFhMb2dSZWNQdHIgKnJlY3B0ciwgQnVmZmVyIHZtQnVmLCBUcmFuc2FjdGlvbklk IGN1dG9mZl94aWQsCiAJCQkJICB1aW50OCBmbGFncykKIHsKIAlCbG9ja051bWJlciBtYXBCbG9j ayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CkBAIC0yNTgsMTcgKzI2MCwxMyBAQCB2 aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZl ciBoZWFwQnVmLAogCWVsb2coREVCVUcxLCAidm1fc2V0ICVzICVkIiwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSwgaGVhcEJsayk7CiAjZW5kaWYKIAotCUFzc2VydChJblJlY292ZXJ5IHx8 IFhMb2dSZWNQdHJJc0ludmFsaWQocmVjcHRyKSk7CisJQXNzZXJ0KEluUmVjb3ZlcnkgfHwgWExv Z1JlY1B0cklzSW52YWxpZCgqcmVjcHRyKSk7CiAJQXNzZXJ0KEluUmVjb3ZlcnkgfHwgUGFnZUlz QWxsVmlzaWJsZSgoUGFnZSkgQnVmZmVyR2V0UGFnZShoZWFwQnVmKSkpOwogCUFzc2VydCgoZmxh Z3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdzKTsKIAogCS8qIE11c3QgbmV2 ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0aW5nIGFsbF92aXNpYmxlIGJp dCAqLwogCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwogCi0JLyog Q2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBhZ2UgcGlubmVkLCBpZiBwcmVzZW50 ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIo aGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwgIndyb25nIGhlYXAgYnVmZmVyIHBh c3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCiAJLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRo ZSByaWdodCBWTSBwYWdlIHBpbm5lZCAqLwogCWlmICghQnVmZmVySXNWYWxpZCh2bUJ1ZikgfHwg QnVmZmVyR2V0QmxvY2tOdW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQogCQllbG9nKEVSUk9SLCAi d3JvbmcgVk0gYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwpAQCAtMjg3LDI4 ICsyODUsMTIgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBo ZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAogCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQog CQl7Ci0JCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChyZWNwdHIpKQorCQkJaWYgKFhMb2dSZWNQ dHJJc0ludmFsaWQoKnJlY3B0cikpCiAJCQl7CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJ CQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94 aWQsIGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYgZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJs ZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJCSAqIG5lZWQgdG8gcHJvdGVjdCB0aGUg aGVhcCBwYWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkgKgotCQkJCSAqIElmIG5vdCwgdGhlbiB3 ZSBtdXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLiBJbgotCQkJCSAqIHRoaXMg Y2FzZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3YXMgb21pdHRlZCBmcm9tIHRoZQotCQkJ CSAqIFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNvIGl0IHdvdWxkIGJlIGluY29ycmVjdCB0 bwotCQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgotCQkJCSAqLwotCQkJCWlmIChY TG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJCQlQYWdlCQloZWFwUGFnZSA9IEJ1ZmZl ckdldFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNldExTTihoZWFwUGFnZSwgcmVjcHRyKTsK LQkJCQl9CisJCQkJKnJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLCBoZWFwQnVmLCB2bUJ1 ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCQkJfQotCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIp OworCQkJUGFnZVNldExTTihwYWdlLCAqcmVjcHRyKTsKIAkJfQogCiAJCUVORF9DUklUX1NFQ1RJ T04oKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAzYTk0MjRjMTljOS4uOTM3NTI5NjA2MmYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmgKQEAgLTM2MCw2ICszNjAsOSBAQCBleHRlcm4gYm9vbCBoZWFwX3R1cGxlX3No b3VsZF9mcmVlemUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9u SWQgKk5vRnJlZXplUGFnZVJlbGZyb3plblhpZCwKIAkJCQkJCQkJCSBNdWx0aVhhY3RJZCAqTm9G cmVlemVQYWdlUmVsbWluTXhpZCk7CiBleHRlcm4gYm9vbCBoZWFwX3R1cGxlX25lZWRzX2V2ZW50 dWFsX2ZyZWV6ZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUpOworZXh0ZXJuIHVpbnQ4IGhlYXBfcGFn ZV9zZXRfdm1fYW5kX2xvZyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZm ZXIgaGVhcF9idWYsCisJCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZiwgVHJhbnNhY3Rpb25JZCBjdXRv ZmZfeGlkLAorCQkJCQkJCQkJICB1aW50OCB2bWZsYWdzKTsKIAogZXh0ZXJuIHZvaWQgc2ltcGxl X2hlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwKTsKIGV4dGVybiB2 b2lkIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgdGlk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCmluZGV4IGJlMjFjNmRkMWEzLi40Yzc0NzJl MGI1MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCkBAIC0zMyw3ICszMyw3IEBAIGV4 dGVybiB2b2lkIHZpc2liaWxpdHltYXBfcGluKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVh cEJsaywKIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBC bGssIEJ1ZmZlciB2bWJ1Zik7CiBleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRp b24gcmVsLAogCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAot CQkJCQkJCSAgIFhMb2dSZWNQdHIgcmVjcHRyLAorCQkJCQkJCSAgIFhMb2dSZWNQdHIgKnJlY3B0 ciwKIAkJCQkJCQkgICBCdWZmZXIgdm1CdWYsCiAJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRv ZmZfeGlkLAogCQkJCQkJCSAgIHVpbnQ4IGZsYWdzKTsKLS0gCjIuMzQuMQoK --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0004-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Disposition: attachment; filename="v2-0004-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv033 RnJvbSBiOTI3ZmI4MzdkMGQwODk3NjIwZTJhODA1YjBhOGQ1MTc1MjJhMGJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDE1OjQ4OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAwNC8xMl0gTWFrZSBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUgaW5kZXBlbmRlbnQg b2YKIExWUmVsU3RhdGUKCkZ1dHVyZSBjb21taXRzIHdpbGwgdXNlIHRoaXMgZnVuY3Rpb24gaW5z aWRlIG9mIHBydW5laGVhcC5jIHdoZXJlIHdlIGRvCm5vdCBoYXZlIGFjY2VzcyB0byB0aGUgTFZS ZWxTdGF0ZS4gV2Ugb25seSBuZWVkIHR3byBwYXJhbWV0ZXJzIGZyb20gdGhlCkxWUmVsU3RhdGUs IHNvIGp1c3QgcGFzcyB0aG9zZSBpbiBleHBsaWNpdGx5LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyB8IDQ1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggYzA2MDhhZjdkMjkuLmU2MjBmMGE2MzViIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjQsOCArNDY0LDExIEBAIHN0 YXRpYyB2b2lkIGRlYWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIg Ymxrbm8sIE9mZnNldE51bWJlciAqCiAJCQkJCQkgICBpbnQgbnVtX29mZnNldHMpOwogc3RhdGlj IHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQg ZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7Ci1zdGF0aWMgYm9vbCBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAotCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgYm9vbCAqYWxsX2Zy b3plbik7CitzdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJ CQkJCSBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxp dHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsK IHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWxzdGF0c19hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNy ZWwpOwogc3RhdGljIHZvaWQgdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0 aWMgdm9pZCB1cGRhdGVfdmFjdXVtX2Vycm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLApAQCAt MjAwNSw4ICsyMDA4LDkgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAog CQlBc3NlcnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7CiAKLQkJaWYgKCFoZWFwX3BhZ2Vf aXNfYWxsX3Zpc2libGUodmFjcmVsLCBidWYsCi0JCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsICZk ZWJ1Z19hbGxfZnJvemVuKSkKKwkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVs LT5yZWwsIGJ1ZiwKKwkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sICZkZWJ1 Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmdmFjcmVsLT5vZmZudW0p KQogCQkJQXNzZXJ0KGZhbHNlKTsKIAogCQlBc3NlcnQocHJlc3VsdC5hbGxfZnJvemVuID09IGRl YnVnX2FsbF9mcm96ZW4pOwpAQCAtMjg3Miw4ICsyODc2LDggQEAgbGF6eV92YWN1dW1faGVhcF9w YWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIs CiAJICogZW1pdHRlZC4KIAkgKi8KIAlBc3NlcnQoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwot CWlmIChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLCBidWZmZXIsICZ2aXNpYmlsaXR5 X2N1dG9mZl94aWQsCi0JCQkJCQkJCSAmYWxsX2Zyb3plbikpCisJaWYgKGhlYXBfcGFnZV9pc19h bGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1p biwKKwkJCQkJCQkJICZhbGxfZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCAmdmFjcmVs LT5vZmZudW0pKQogCXsKIAkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJM RTsKIApAQCAtMzU1NSw5ICszNTU5LDE2IEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRl ICp2YWNyZWwpCiAKIC8qCiAgKiBDaGVjayBpZiBldmVyeSB0dXBsZSBpbiB0aGUgZ2l2ZW4gcGFn ZSBpcyB2aXNpYmxlIHRvIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUKLSAqIHRyYW5zYWN0aW9ucy4g QWxzbyByZXR1cm4gdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCB3aGljaCBpcyB0aGUgaGlnaGVz dAotICogeG1pbiBhbW9uZ3N0IHRoZSB2aXNpYmxlIHR1cGxlcy4gIFNldCAqYWxsX2Zyb3plbiB0 byB0cnVlIGlmIGV2ZXJ5IHR1cGxlCi0gKiBvbiB0aGlzIHBhZ2UgaXMgZnJvemVuLgorICogdHJh bnNhY3Rpb25zLgorICoKKyAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJp bGl0eS4KKyAqCisgKiAqbG9nZ2luZ19vZmZudW0gd2lsbCBoYXZlIHRoZSBPZmZzZXROdW1iZXIg b2YgdGhlIGN1cnJlbnQgdHVwbGUgYmVpbmcKKyAqIHByb2Nlc3NlZCBmb3IgdmFjdXVtJ3MgZXJy b3IgY2FsbGJhY2sgc3lzdGVtLgorICoKKyAqIFJldHVybiB0aGUgdmlzaWJpbGl0eV9jdXRvZmZf eGlkIHdoaWNoIGlzIHRoZSBoaWdoZXN0IHhtaW4gYW1vbmdzdCB0aGUKKyAqIHZpc2libGUgdHVw bGVzLiBTZXRzICphbGxfZnJvemVuIHRvIHRydWUgaWYgZXZlcnkgdHVwbGUgb24gdGhpcyBwYWdl IGlzCisgKiBmcm96ZW4uCiAgKgogICogVGhpcyBpcyBhIHN0cmlwcGVkIGRvd24gdmVyc2lvbiBv ZiBsYXp5X3NjYW5fcHJ1bmUoKS4gIElmIHlvdSBjaGFuZ2UKICAqIGFueXRoaW5nIGhlcmUsIG1h a2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUgdGhhdCBhbgpAQCAt MzU2NSw5ICszNTc2LDExIEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwp CiAgKiBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3RzIGhlcmUuCiAgKi8KIHN0YXRpYyBib29s Ci1oZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVm LAoraGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJ CQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwK IAkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkgYm9v bCAqYWxsX2Zyb3plbikKKwkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewog CVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9 IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Zik7CkBAIC0zNTkwLDcgKzM2MDMsNyBAQCBoZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkgKiBT ZXQgdGhlIG9mZnNldCBudW1iZXIgc28gdGhhdCB3ZSBjYW4gZGlzcGxheSBpdCBhbG9uZyB3aXRo IGFueQogCQkgKiBlcnJvciB0aGF0IG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhpcyB0dXBs ZS4KIAkJICovCi0JCXZhY3JlbC0+b2ZmbnVtID0gb2ZmbnVtOworCQkqbG9nZ2luZ19vZmZudW0g PSBvZmZudW07CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVtKTsKIAogCQkv KiBVbnVzZWQgb3IgcmVkaXJlY3QgbGluZSBwb2ludGVycyBhcmUgb2Ygbm8gaW50ZXJlc3QgKi8K QEAgLTM2MTQsOSArMzYyNyw5IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAKIAkJdHVwbGUudF9kYXRhID0gKEhlYXBUdXBsZUhlYWRl cikgUGFnZUdldEl0ZW0ocGFnZSwgaXRlbWlkKTsKIAkJdHVwbGUudF9sZW4gPSBJdGVtSWRHZXRM ZW5ndGgoaXRlbWlkKTsKLQkJdHVwbGUudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQodmFj cmVsLT5yZWwpOworCQl0dXBsZS50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwog Ci0JCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKCZ0dXBsZSwgdmFjcmVsLT5jdXRv ZmZzLk9sZGVzdFhtaW4sCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKCZ0dXBs ZSwgT2xkZXN0WG1pbiwKIAkJCQkJCQkJCQkgYnVmKSkKIAkJewogCQkJY2FzZSBIRUFQVFVQTEVf TElWRToKQEAgLTM2MzcsNyArMzY1MCw3IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCSAqLwogCQkJCQl4bWluID0gSGVhcFR1 cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwogCQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQ cmVjZWRlcyh4bWluLAotCQkJCQkJCQkJCQkgICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbikp CisJCQkJCQkJCQkJCSAgIE9sZGVzdFhtaW4pKQogCQkJCQl7CiAJCQkJCQlhbGxfdmlzaWJsZSA9 IGZhbHNlOwogCQkJCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKQEAgLTM2NzIsNyArMzY4NSw3IEBA IGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYs CiAJfQkJCQkJCQkvKiBzY2FuIGFsb25nIHBhZ2UgKi8KIAogCS8qIENsZWFyIHRoZSBvZmZzZXQg aW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KLQl2 YWNyZWwtPm9mZm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CisJKmxvZ2dpbmdfb2ZmbnVtID0g SW52YWxpZE9mZnNldE51bWJlcjsKIAogCXJldHVybiBhbGxfdmlzaWJsZTsKIH0KLS0gCjIuMzQu MQoK --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0005-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Disposition: attachment; filename="v2-0005-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv044 RnJvbSBjMjhiMmVkYmQ2ODJlMjI1NDZkNGJjZTA4MDcyOGIyZWY4YTM1NjAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAwNS8xMl0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJSUkKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSB4bF9oZWFwX3Zpc2libGUgcmVj b3JkIGZvciBlYWNoIHBhZ2UgdGhhdAppcyBhbGwtdmlzaWJsZSBhZnRlciB2YWN1dW0ncyB0aGly ZCBwaGFzZSwgdXNlIHRoZSBWTS1yZWxhdGVkIG9wdGlvbnMKd2hlbiBlbWl0dGluZyB0aGUgeGxf aGVhcF9wcnVuZSByZWNvcmQgd2l0aCB0aGUgY2hhbmdlcyB2YWN1dW0gbWFrZXMgaW4KcGhhc2Ug SUlJLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgIHwgMTQ4ICsr KysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jICAgIHwgIDQ4ICsrKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgICB8IDE0NiArKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9oZWFwZGVzYy5jIHwgIDEzICsrLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o ICAgICAgICAgICAgfCAgIDkgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAg ICAgIHwgICAzICsKIDYgZmlsZXMgY2hhbmdlZCwgMzAxIGluc2VydGlvbnMoKyksIDY2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9n LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IDcxNzU0ZmQ3 N2M0Li43MGE0NmEzNzM1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBA IC0zNSw3ICszNSw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpCiAJQnVmZmVyCQlidWZmZXI7CiAJUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3I7CiAJQmxv Y2tOdW1iZXIgYmxrbm87Ci0JWExvZ1JlZG9BY3Rpb24gYWN0aW9uOworCUJ1ZmZlcgkJdm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyOworCXVpbnQ4CQl2bWZsYWdzID0gMDsKIAogCVhMb2dSZWNHZXRC bG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgJmJsa25vKTsKIAltZW1jcHkoJnhs cmVjLCBtYWluZGF0YXB0ciwgU2l6ZU9mSGVhcFBydW5lKTsKQEAgLTUxLDEwICs1MiwxNSBAQCBo ZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkgICAoeGxy ZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwgWExIUF9IQVNfREVBRF9JVEVNUykp ID09IDApOwogCiAJLyoKLQkgKiBXZSBhcmUgYWJvdXQgdG8gcmVtb3ZlIGFuZC9vciBmcmVlemUg dHVwbGVzLiAgSW4gSG90IFN0YW5kYnkgbW9kZSwKLQkgKiBlbnN1cmUgdGhhdCB0aGVyZSBhcmUg bm8gcXVlcmllcyBydW5uaW5nIGZvciB3aGljaCB0aGUgcmVtb3ZlZCB0dXBsZXMKLQkgKiBhcmUg c3RpbGwgdmlzaWJsZSBvciB3aGljaCBzdGlsbCBjb25zaWRlciB0aGUgZnJvemVuIHhpZHMgYXMg cnVubmluZy4KLQkgKiBUaGUgY29uZmxpY3QgaG9yaXpvbiBYSUQgY29tZXMgYWZ0ZXIgeGxfaGVh cF9wcnVuZS4KKwkgKiBBZnRlciB4bF9oZWFwX3BydW5lIGlzIHRoZSBvcHRpb25hbCBzbmFwc2hv dCBjb25mbGljdCBob3Jpem9uLgorCSAqCisJICogSW4gSG90IFN0YW5kYnkgbW9kZSwgd2UgbXVz dCBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcnVubmluZyBxdWVyaWVzCisJICogd2hpY2ggd291 bGQgY29uZmxpY3Qgd2l0aCB0aGUgY2hhbmdlcyBpbiB0aGlzIHJlY29yZC4gSWYgcHJ1bmluZywg dGhhdAorCSAqIG1lYW5zIHdlIGNhbm5vdCByZW1vdmUgdHVwbGVzIHN0aWxsIHZpc2libGUgdG8g dHJhbnNhY3Rpb25zIG9uIHRoZQorCSAqIHN0YW5kYnkuIElmIGZyZWV6aW5nLCB0aGF0IG1lYW5z IHdlIGNhbm5vdCBmcmVlemUgdHVwbGVzIHdpdGggeGlkcyB0aGF0CisJICogYXJlIHN0aWxsIGNv bnNpZGVyZWQgcnVubmluZyBvbiB0aGUgc3RhbmRieS4gQW5kIGZvciBzZXR0aW5nIHRoZSBWTSwg d2UKKwkgKiBjYW5ub3QgZG8gc28gaWYgdGhlIHBhZ2UgaXNuJ3QgYWxsLXZpc2libGUgdG8gYWxs IHRyYW5zYWN0aW9ucyBvbiB0aGUKKwkgKiBzdGFuZGJ5LgogCSAqLwogCWlmICgoeGxyZWMuZmxh Z3MgJiBYTEhQX0hBU19DT05GTElDVF9IT1JJWk9OKSAhPSAwKQogCXsKQEAgLTcwLDEzICs3Niwy OCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJ CQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIAorCS8qIE5leHQgYXJlIHRoZSBvcHRpb25hbGx5IGlu Y2x1ZGVkIHZtZmxhZ3MuIENvcHkgdGhlbSBvdXQgZm9yIGxhdGVyIHVzZS4gKi8KKwlpZiAoKHhs cmVjLmZsYWdzICYgWExIUF9IQVNfVk1GTEFHUykgIT0gMCkKKwl7CisJCW1lbWNweSgmdm1mbGFn cywgbWFpbmRhdGFwdHIsIHNpemVvZih1aW50OCkpOworCQltYWluZGF0YXB0ciArPSBzaXplb2Yo dWludDgpOworCisJCS8qCisJCSAqIFdlIGRvbid0IHNldCBWSVNJQklMSVRZTUFQX1hMT0dfQ0FU QUxPR19SRUwgaW4gdGhlIGNvbWJpbmVkIHJlY29yZAorCQkgKiBiZWNhdXNlIHdlIGFscmVhZHkg aGF2ZSBYTEhQX0lTX0NBVEFMT0dfUkVMLgorCQkgKi8KKwkJQXNzZXJ0KCh2bWZsYWdzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsKKwkJLyogTXVzdCBuZXZlciBzZXQg YWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNldHRpbmcgYWxsX3Zpc2libGUgYml0ICovCisJ CUFzc2VydCh2bWZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CisJfQorCiAJLyoK LQkgKiBJZiB3ZSBoYXZlIGEgZnVsbC1wYWdlIGltYWdlLCByZXN0b3JlIGl0IGFuZCB3ZSdyZSBk b25lLgorCSAqIElmIHdlIGhhdmUgYSBmdWxsLXBhZ2UgaW1hZ2Ugb2YgdGhlIGhlYXAgYmxvY2ss IHJlc3RvcmUgaXQgYW5kIHdlJ3JlCisJICogZG9uZSB3aXRoIHRoZSBoZWFwIGJsb2NrLgogCSAq LwotCWFjdGlvbiA9IFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMCwgUkJN X05PUk1BTCwKLQkJCQkJCQkJCQkgICAoeGxyZWMuZmxhZ3MgJiBYTEhQX0NMRUFOVVBfTE9DSykg IT0gMCwKLQkJCQkJCQkJCQkgICAmYnVmZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19S RURPKQorCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9O T1JNQUwsCisJCQkJCQkJCQkgICh4bHJlYy5mbGFncyAmIFhMSFBfQ0xFQU5VUF9MT0NLKSAhPSAw LAorCQkJCQkJCQkJICAmYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKIAl7CiAJCVBhZ2UJCXBh Z2UgPSAoUGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQlPZmZzZXROdW1iZXIgKnJlZGly ZWN0ZWQ7CkBAIC04OSw2ICsxMTAsOSBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQlTaXplCQlkYXRhbGVuOwogCQl4bGhwX2ZyZWV6ZV9wbGFuICpw bGFuczsKIAkJT2Zmc2V0TnVtYmVyICpmcnpfb2Zmc2V0czsKKwkJYm9vbAkJZG9fcHJ1bmU7CisJ CWJvb2wJCW1hcmtfYnVmZmVyX2RpcnR5OworCQlib29sCQlzZXRfaGVhcF9sc247CiAJCWNoYXIJ ICAgKmRhdGFwdHIgPSBYTG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwog CiAJCWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGRhdGFwdHIsIHhscmVj LmZsYWdzLApAQCAtOTcsMTEgKzEyMSwxOCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbmRlYWQsICZub3dkZWFkLAogCQkJ CQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNlZCk7CiAKKwkJZG9fcHJ1bmUgPSBucmVkaXJl Y3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOworCQlzZXRfaGVhcF9sc24gPSBt YXJrX2J1ZmZlcl9kaXJ0eSA9IGRvX3BydW5lIHx8IG5wbGFucyA+IDA7CisKKwkJLyogRW5zdXJl IHRoZSByZWNvcmQgZG9lcyBzb21ldGhpbmcgKi8KKwkJQXNzZXJ0KGRvX3BydW5lIHx8IG5wbGFu cyA+IDAgfHwKKwkJCSAgIHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOworCiAJ CS8qCiAJCSAqIFVwZGF0ZSBhbGwgbGluZSBwb2ludGVycyBwZXIgdGhlIHJlY29yZCwgYW5kIHJl cGFpciBmcmFnbWVudGF0aW9uCiAJCSAqIGlmIG5lZWRlZC4KIAkJICovCi0JCWlmIChucmVkaXJl Y3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwKQorCQlpZiAoZG9fcHJ1bmUpCiAJ CQloZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShidWZmZXIsCiAJCQkJCQkJCQkoeGxyZWMuZmxhZ3Mg JiBYTEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0ZWQsIG5yZWRpcmVj dGVkLApAQCAtMTM4LDI2ICsxNjksNzggQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAkJLyogVGhlcmUgc2hvdWxkIGJlIG5vIG1vcmUgZGF0YSAqLwog CQlBc3NlcnQoKGNoYXIgKikgZnJ6X29mZnNldHMgPT0gZGF0YXB0ciArIGRhdGFsZW4pOwogCisJ CUFzc2VydChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikgJiYKKwkJCSAgIEJ1ZmZlckdldEJsb2NrTnVt YmVyKGJ1ZmZlcikgPT0gYmxrbm8pOworCisJCS8qCisJCSAqIE5vdyBzZXQgUERfQUxMX1ZJU0lC TEUsIGlmIHJlcXVpcmVkLiBXZSdsbCBvbmx5IGRvIHRoaXMgaWYgd2UgYXJlCisJCSAqIGFsc28g Z29pbmcgdG8gc2V0IGJpdHMgaW4gdGhlIFZNIGxhdGVyLgorCQkgKgorCQkgKiBXZSBtdXN0IG5l dmVyIGVuZCB1cCB3aXRoIHRoZSBWTSBiaXQgc2V0IGFuZCB0aGUgcGFnZS1sZXZlbAorCQkgKiBQ RF9BTExfVklTSUJMRSBiaXQgY2xlYXIuIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgYSBzdWJzZXF1 ZW50IHBhZ2UKKwkJICogbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIgdGhlIFZNIGJp dC4KKwkJICoKKwkJICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3Ig dGhlIHBhZ2UtbGV2ZWwgYml0IHRvIGJlCisJCSAqIHNldCBhbmQgdGhlIFZNIGJpdCB0byBiZSBj bGVhci4gVGhpcyBjb3VsZCBoYXBwZW4gaWYgd2UgY3Jhc2hlZAorCQkgKiBhZnRlciBzZXR0aW5n IFBEX0FMTF9WSVNJQkxFIGJ1dCBiZWZvcmUgc2V0dGluZyBiaXRzIGluIHRoZSBWTS4KKwkJICov CisJCWlmICgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgJiYgIVBhZ2VJc0Fs bFZpc2libGUocGFnZSkpCisJCXsKKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCisJCQkv KgorCQkJICogU2V0dGluZyBQRF9BTExfVklTSUJMRSBvbmx5IGZvcmNlcyB1cyB0byB1cGRhdGUg dGhlIGhlYXAgcGFnZQorCQkJICogTFNOIGlmIGNoZWNrc3VtcyBvciB3YWxfbG9nX2hpbnRzIGFy ZSBlbmFibGVkIChpbiB3aGljaCBjYXNlIHdlCisJCQkgKiBtdXN0KS4gVGhpcyBleHBvc2VzIHVz IHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2Ugd2UncmUKKwkJCSAqIG5vdCBpbnNwZWN0 aW5nIHRoZSBleGlzdGluZyBwYWdlIGNvbnRlbnRzIGluIGFueSB3YXksIHdlIGRvbid0CisJCQkg KiBjYXJlLgorCQkJICovCisJCQlzZXRfaGVhcF9sc24gPSBYTG9nSGludEJpdElzTmVlZGVkKCkg PyB0cnVlIDogc2V0X2hlYXBfbHNuOworCQkJbWFya19idWZmZXJfZGlydHkgPSB0cnVlOworCQl9 CisKIAkJLyoKIAkJICogTm90ZTogd2UgZG9uJ3Qgd29ycnkgYWJvdXQgdXBkYXRpbmcgdGhlIHBh Z2UncyBwcnVuYWJpbGl0eSBoaW50cy4KIAkJICogQXQgd29yc3QgdGhpcyB3aWxsIGNhdXNlIGFu IGV4dHJhIHBydW5lIGN5Y2xlIHRvIG9jY3VyIHNvb24uCiAJCSAqLwogCi0JCVBhZ2VTZXRMU04o cGFnZSwgbHNuKTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCWlmIChtYXJrX2J1ZmZl cl9kaXJ0eSkKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlpZiAoc2V0X2hlYXBfbHNu KQorCQkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCX0KIAogCS8qCi0JICogSWYgd2UgcmVsZWFz ZWQgYW55IHNwYWNlIG9yIGxpbmUgcG9pbnRlcnMsIHVwZGF0ZSB0aGUgZnJlZSBzcGFjZSBtYXAu CisJICogSWYgd2UgcmVsZWFzZWQgYW55IHNwYWNlIG9yIGxpbmUgcG9pbnRlcnMgb3Igd2lsbCBi ZSBzZXR0aW5nIGEgcGFnZSBpbgorCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCwgdXBkYXRlIHRoZSBm cmVlIHNwYWNlIG1hcC4KKwkgKgorCSAqIEV2ZW4gaWYgd2UgYXJlIGp1c3QgdXBkYXRpbmcgdGhl IFZNIChhbmQgdGh1cyBub3QgZnJlZWluZyB1cCBhbnkKKwkgKiBzcGFjZSksIHdlJ2xsIHN0aWxs IHVwZGF0ZSB0aGUgRlNNIGZvciB0aGlzIHBhZ2UuIFNpbmNlIEZTTSBpcyBub3QKKwkgKiBXQUwt bG9nZ2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQgZWFzaWx5IGJlY29tZXMg c3RhbGUgaW4KKwkgKiBzdGFuZGJ5cy4gIElmIHRoZSBzdGFuZGJ5IGlzIGxhdGVyIHByb21vdGVk IGFuZCBydW5zIFZBQ1VVTSwgaXQgd2lsbAorCSAqIHNraXAgdXBkYXRpbmcgaW5kaXZpZHVhbCBm cmVlIHNwYWNlIGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lCisJICogYWxsLXZpc2libGUg KG9yIGFsbC1mcm96ZW4sIGRlcGVuZGluZyBvbiB0aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcwor CSAqIHRyb3VibGVzb21lIHdoZW4gRnJlZVNwYWNlTWFwVmFjdXVtIHByb3BhZ2F0ZXMgdG9vIG9w dGltaXN0aWMgZnJlZQorCSAqIHNwYWNlIHZhbHVlcyB0byB1cHBlciBGU00gbGF5ZXJzOyBsYXRl ciBpbnNlcnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzCisJICogb25seSB0byBmaW5kIG91dCB0 aGF0IHRoZXkgYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMKKwkgKiB3 aGVuIHRoZXJlIGFyZSBtYW55IHN1Y2ggcGFnZXMuCisJICoKKwkgKiBGb3Jlc3RhbGwgdGhvc2Ug cHJvYmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdCBpcworCSAq IGJlY29taW5nIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4uCiAJICoKIAkgKiBEbyB0aGlzIHJl Z2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlIEZT TQogCSAqIGRhdGEgaXMgbm90IGluIHRoZSBwYWdlIGFueXdheS4KKwkgKgorCSAqIFdlIHdhbnQg dG8gYXZvaWQgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgaGVhcCBidWZmZXIgd2hp bGUKKwkgKiBkb2luZyBJTyAoZWl0aGVyIG9mIHRoZSBGU00gb3IgdGhlIFZNKSwgc28gd2UnbGwg cmVsZWFzZSB0aGUgbG9jayBvbgorCSAqIHRoZSBoZWFwIGJ1ZmZlciBiZWZvcmUgZG9pbmcgZWl0 aGVyLgogCSAqLwogCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCiAJewotCQlpZiAoeGxyZWMu ZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwKLQkJCQkJCSAgIFhMSFBfSEFTX0RFQURf SVRFTVMgfAotCQkJCQkJICAgWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUykpCisJCWlmICgoeGxy ZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwKKwkJCQkJCQlYTEhQX0hBU19ERUFE X0lURU1TIHwKKwkJCQkJCQlYTEhQX0hBU19OT1dfVU5VU0VEX0lURU1TKSkgfHwKKwkJCXZtZmxh Z3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCiAJCXsKIAkJCVNpemUJCWZyZWVzcGFjZSA9 IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7CiAKQEAgLTE2OCw2 ICsyNTEsMzcgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAkJZWxzZQogCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCX0KKworCS8qCisJ ICogUmVhZCBhbmQgdXBkYXRlIHRoZSBWTSBibG9jay4gRXZlbiBpZiB3ZSBza2lwcGVkIHVwZGF0 aW5nIHRoZSBoZWFwIHBhZ2UKKwkgKiBkdWUgdG8gdGhlIGZpbGUgYmVpbmcgZHJvcHBlZCBvciB0 cnVuY2F0ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIGl0J3MKKwkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0 ZSB0aGUgdmlzaWJpbGl0eSBtYXAuICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycworCSAqIHRo ZSB2aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNO LCBzbyBhbnkKKwkgKiBiaXRzIHRoYXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUg Y2xlYXJlZC4KKwkgKgorCSAqIE5vdGUgdGhhdCBpdCBpcyAqb25seSogb2theSB0aGF0IHdlIGRv IG5vdCBob2xkIGEgbG9jayBvbiB0aGUgaGVhcCBwYWdlCisJICogYmVjYXVzZSB3ZSBhcmUgaW4g cmVjb3ZlcnkgYW5kIGNhbiBleHBlY3Qgbm8gb3RoZXIgd3JpdGVycyB0byBjbGVhcgorCSAqIFBE X0FMTF9WSVNJQkxFIGJlZm9yZSB3ZSBhcmUgYWJsZSB0byB1cGRhdGUgdGhlIFZNLgorCSAqLwor CWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTICYmCisJCVhMb2dSZWFkQnVm ZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMSwKKwkJCQkJCQkJCSAgUkJNX1pFUk9fT05fRVJS T1IsCisJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJICAmdm1idWZmZXIpID09IEJMS19ORUVE U19SRURPKQorCXsKKwkJdWludDgJCW9sZF92bWJpdHMgPSAwOworCQlSZWxhdGlvbglyZWxuID0g Q3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOworCisJCXZpc2liaWxpdHltYXBfcGlu KHJlbG4sIGJsa25vLCAmdm1idWZmZXIpOworCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9z ZXRfdm1ieXRlKHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFncyk7CisJCS8qIE9ubHkgc2V0 IFZNIHBhZ2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRoZSBwYWdlICovCisJCWlmIChvbGRfdm1iaXRz ICE9IHZtZmxhZ3MpCisJCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCBsc24p OworCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7CisJfQorCisJaWYgKEJ1ZmZlcklzVmFs aWQodm1idWZmZXIpKQorCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggYTgwMjU4ODliZTAuLmQ5YmEwZjk2 ZTM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjEsNiArMjEsNyBAQAog I2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNp bmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5 bWFwZGVmcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTgzNSw2ICs4MzYs NyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVy IGJ1ZmZlciwKIAkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsK IAogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJ CQkJICBJbnZhbGlkQnVmZmVyLCAwLCBmYWxzZSwKIAkJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAog CQkJCQkJCQkJICB0cnVlLCByZWFzb24sCiAJCQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0 YXRlLm5mcm96ZW4sCkBAIC0yMDQ1LDEyICsyMDQ3LDIzIEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFu KEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIHJlcGxheWluZyAndW51 c2VkJyBpdGVtcyBkZXBlbmRzIG9uIHdoZXRoZXIgdGhleSB3ZXJlIGFsbCBwcmV2aW91c2x5IG1h cmtlZAogICogYXMgZGVhZC4KICAqCisgKiBJZiB0aGUgVk0gaXMgYmVpbmcgdXBkYXRlZCwgdm1m bGFncyB3aWxsIGNvbnRhaW4gdGhlIGJpdHMgdG8gc2V0LiBJbiB0aGlzCisgKiBjYXNlLCB2bWJ1 ZmZlciBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gdXBkYXRlZCBhbmQgbWFya2VkIGRpcnR5IGFu ZCBzaG91bGQKKyAqIHN0aWxsIGJlIHBpbm5lZCBhbmQgbG9ja2VkLgorICoKKyAqIHNldF9wZF9h bGxfdmlzIGluZGljYXRlcyB0aGF0IHdlIHNldCBQRF9BTExfVklTSUJMRSBhbmQgdGh1cyBzaG91 bGQgdXBkYXRlCisgKiB0aGUgcGFnZSBMU04gd2hlbiBjaGVja3N1bXMvd2FsX2xvZ19oaW50cyBh cmUgZW5hYmxlZCBldmVuIGlmIHdlIGRpZCBub3QKKyAqIHBydW5lIG9yIGZyZWV6ZSB0dXBsZXMg b24gdGhlIHBhZ2UuCisgKgogICogTm90ZTogVGhpcyBmdW5jdGlvbiBzY3JpYmJsZXMgb24gdGhl ICdmcm96ZW4nIGFycmF5LgogICoKICAqIE5vdGU6IFRoaXMgaXMgY2FsbGVkIGluIGEgY3JpdGlj YWwgc2VjdGlvbiwgc28gY2FyZWZ1bCB3aGF0IHlvdSBkbyBoZXJlLgogICovCiB2b2lkCiBsb2df aGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAor CQkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCisJCQkJCQkg IGJvb2wgc2V0X3BkX2FsbF92aXMsCiAJCQkJCQkgIFRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlk LAogCQkJCQkJICBib29sIGNsZWFudXBfbG9jaywKIAkJCQkJCSAgUHJ1bmVSZWFzb24gcmVhc29u LApAQCAtMjA2Miw2ICsyMDc1LDcgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAl4bF9oZWFwX3BydW5lIHhscmVjOwogCVhMb2dS ZWNQdHIJcmVjcHRyOwogCXVpbnQ4CQlpbmZvOworCXVpbnQ4CQlyZWdidWZfZmxhZ3M7CiAKIAkv KiBUaGUgZm9sbG93aW5nIGxvY2FsIHZhcmlhYmxlcyBob2xkIGRhdGEgcmVnaXN0ZXJlZCBpbiB0 aGUgV0FMIHJlY29yZDogKi8KIAl4bGhwX2ZyZWV6ZV9wbGFuIHBsYW5zW01heEhlYXBUdXBsZXNQ ZXJQYWdlXTsKQEAgLTIwNzAsOCArMjA4NCwxOSBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXhsaHBfcHJ1bmVfaXRlbXMgZGVh ZF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIHVudXNlZF9pdGVtczsKIAlPZmZzZXROdW1iZXIg ZnJ6X29mZnNldHNbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOworCWJvb2wJCWRvX3BydW5lID0gbnJl ZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMDsKIAogCXhscmVjLmZsYWdz ID0gMDsKKwlyZWdidWZfZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7CisKKwkvKgorCSAqIFdlIGNh biBhdm9pZCBhbiBGUEkgaWYgdGhlIG9ubHkgbW9kaWZpY2F0aW9uIHdlIGFyZSBtYWtpbmcgdG8g dGhlIGhlYXAKKwkgKiBwYWdlIGlzIHRvIHNldCBQRF9BTExfVklTSUJMRSBhbmQgY2hlY2tzdW1z L3dhbF9sb2dfaGludHMgYXJlIGRpc2FibGVkLgorCSAqLworCWlmICghZG9fcHJ1bmUgJiYKKwkJ bmZyb3plbiA9PSAwICYmCisJCSghc2V0X3BkX2FsbF92aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVk ZWQoKSkpCisJCXJlZ2J1Zl9mbGFncyB8PSBSRUdCVUZfTk9fSU1BR0U7CiAKIAkvKgogCSAqIFBy ZXBhcmUgZGF0YSBmb3IgdGhlIGJ1ZmZlci4gIFRoZSBhcnJheXMgYXJlIG5vdCBhY3R1YWxseSBp biB0aGUKQEAgLTIwNzksNyArMjEwNCwxMSBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIHBhZ2UgaW1hZ2UsIHRoZSBhcnJh eXMgY2FuIGJlIG9taXR0ZWQuCiAJICovCiAJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lz dGVyQnVmZmVyKDAsIGJ1ZmZlciwgUkVHQlVGX1NUQU5EQVJEKTsKKwlYTG9nUmVnaXN0ZXJCdWZm ZXIoMCwgYnVmZmVyLCByZWdidWZfZmxhZ3MpOworCisJaWYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZ TUFQX1ZBTElEX0JJVFMpCisJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCB2bWJ1ZmZlciwgMCk7CisK IAlpZiAobmZyb3plbiA+IDApCiAJewogCQlpbnQJCQlucGxhbnM7CkBAIC0yMTM2LDYgKzIxNjUs OCBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIg YnVmZmVyLAogCSAqIFByZXBhcmUgdGhlIG1haW4geGxfaGVhcF9wcnVuZSByZWNvcmQuICBXZSBh bHJlYWR5IHNldCB0aGUgWExIUF9IQVNfKgogCSAqIGZsYWcgYWJvdmUuCiAJICovCisJaWYgKHZt ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCisJCXhscmVjLmZsYWdzIHw9IFhMSFBf SEFTX1ZNRkxBR1M7CiAJaWYgKFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmco cmVsYXRpb24pKQogCQl4bHJlYy5mbGFncyB8PSBYTEhQX0lTX0NBVEFMT0dfUkVMOwogCWlmIChU cmFuc2FjdGlvbklkSXNWYWxpZChjb25mbGljdF94aWQpKQpAQCAtMjE1MCw2ICsyMTgxLDggQEAg bG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIAlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mSGVhcFBydW5lKTsKIAlpZiAoVHJh bnNhY3Rpb25JZElzVmFsaWQoY29uZmxpY3RfeGlkKSkKIAkJWExvZ1JlZ2lzdGVyRGF0YSgmY29u ZmxpY3RfeGlkLCBzaXplb2YoVHJhbnNhY3Rpb25JZCkpOworCWlmICh2bWZsYWdzICYgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKQorCQlYTG9nUmVnaXN0ZXJEYXRhKCZ2bWZsYWdzLCBzaXplb2Yo dWludDgpKTsKIAogCXN3aXRjaCAocmVhc29uKQogCXsKQEAgLTIxNjgsNSArMjIwMSwxNiBAQCBs b2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCX0KIAlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hFQVAyX0lELCBpbmZvKTsKIAotCVBhZ2VT ZXRMU04oQnVmZmVyR2V0UGFnZShidWZmZXIpLCByZWNwdHIpOworCWlmICh2bWZsYWdzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZm ZXIpLCByZWNwdHIpOworCisJLyoKKwkgKiBJZiBwcnVuaW5nIG9yIGZyZWV6aW5nIHR1cGxlcyBv ciBzZXR0aW5nIHRoZSBwYWdlIGFsbC12aXNpYmxlIHdoZW4KKwkgKiBjaGVja3N1bXMgb3Igd2Fs X2hpbnRfYml0cyBhcmUgZW5hYmxlZCwgd2UgbXVzdCBidW1wIHRoZSBMU04uIFRvcm4KKwkgKiBw YWdlcyBhcmUgcG9zc2libGUgaWYgd2UgdXBkYXRlIFBEX0FMTF9WSVNJQkxFIHdpdGhvdXQgYnVt cGluZyB0aGUgTFNOLAorCSAqIGJ1dCB0aGlzIGlzIGRlZW1lZCBva2F5IGZvciBwYWdlIGhpbnQg dXBkYXRlcy4KKwkgKi8KKwlpZiAoZG9fcHJ1bmUgfHwgbmZyb3plbiA+IDAgfHwKKwkJKHNldF9w ZF9hbGxfdmlzICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCVBhZ2VTZXRMU04oQnVmZmVy R2V0UGFnZShidWZmZXIpLCByZWNwdHIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IGU2MjBmMGE2MzViLi41NmFjYjIyNGQ3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwpAQCAtNDY0LDExICs0NjQsMTMgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVt c19hZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVy ICoKIAkJCQkJCSAgIGludCBudW1fb2Zmc2V0cyk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX3Jl c2V0KExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2NsZWFudXAo TFZSZWxTdGF0ZSAqdmFjcmVsKTsKLXN0YXRpYyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJs ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRl c3RYbWluLAotCQkJCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkgVHJhbnNhY3Rp b25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9n Z2luZ19vZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlX2V4Y2Vw dF9scGRlYWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJCQkJICAgVHJhbnNh Y3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zm c2V0cywKKwkJCQkJCQkJCQkJCSAgIGludCBhbGxvd2VkX251bV9vZmZzZXRzLAorCQkJCQkJCQkJ CQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZp c2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2lu Z19vZmZudW0pOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9pbmRleGVzKExWUmVs U3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2 YWNyZWwsCkBAIC0yODEyLDggKzI4MTQsMTEgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVs U3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJT2Zmc2V0 TnVtYmVyIHVudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CiAJaW50CQkJbnVudXNlZCA9IDA7 CiAJVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJVHJhbnNhY3Rpb25JZCBj b25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlib29sCQlhbGxfZnJvemVuOwog CUxWU2F2ZWRFcnJJbmZvIHNhdmVkX2Vycl9pbmZvOworCXVpbnQ4CQl2bWZsYWdzID0gMDsKKwli b29sCQlzZXRfcGRfYWxsX3ZpcyA9IGZhbHNlOwogCiAJQXNzZXJ0KHZhY3JlbC0+ZG9faW5kZXhf dmFjdXVtaW5nKTsKIApAQCAtMjgyNCw2ICsyODI5LDIwIEBAIGxhenlfdmFjdXVtX2hlYXBfcGFn ZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAog CQkJCQkJCSBWQUNVVU1fRVJSQ0JfUEhBU0VfVkFDVVVNX0hFQVAsIGJsa25vLAogCQkJCQkJCSBJ bnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAorCWlmIChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGVfZXhj ZXB0X2xwZGVhZCh2YWNyZWwtPnJlbCwgYnVmZmVyLAorCQkJCQkJCQkJCQkgICB2YWNyZWwtPmN1 dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRz LAorCQkJCQkJCQkJCQkgICAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJ CQkJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtKSkKKwl7CisJCXZtZmxhZ3MgfD0gVklTSUJJTElU WU1BUF9BTExfVklTSUJMRTsKKwkJaWYgKGFsbF9mcm96ZW4pCisJCXsKKwkJCXZtZmxhZ3MgfD0g VklTSUJJTElUWU1BUF9BTExfRlJPWkVOOworCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZCh2aXNpYmlsaXR5X2N1dG9mZl94aWQpKTsKKwkJfQorCX0KKwogCVNUQVJUX0NSSVRfU0VDVElP TigpOwogCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fb2Zmc2V0czsgaSsrKQpAQCAtMjg0Myw2 ICsyODYyLDE3IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJs b2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCS8qIEF0dGVtcHQgdG8gdHJ1bmNhdGUg bGluZSBwb2ludGVyIGFycmF5IG5vdyAqLwogCVBhZ2VUcnVuY2F0ZUxpbmVQb2ludGVyQXJyYXko cGFnZSk7CiAKKwlpZiAoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICE9IDAp CisJeworCQlBc3NlcnQoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpOworCQlzZXRfcGRfYWxsX3Zp cyA9IHRydWU7CisJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 CisJCWhlYXBfcGFnZV9zZXRfdm0odmFjcmVsLT5yZWwsCisJCQkJCQkgYmxrbm8sIGJ1ZmZlciwK KwkJCQkJCSB2bWJ1ZmZlciwgdm1mbGFncyk7CisJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlf Y3V0b2ZmX3hpZDsKKwl9CisKIAkvKgogCSAqIE1hcmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3ZSB3 cml0ZSBXQUwuCiAJICovCkBAIC0yODUyLDcgKzI4ODIsMTAgQEAgbGF6eV92YWN1dW1faGVhcF9w YWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIs CiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwodmFjcmVsLT5yZWwpKQogCXsKIAkJbG9nX2hlYXBfcHJ1 bmVfYW5kX2ZyZWV6ZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAotCQkJCQkJCQkgIEludmFsaWRUcmFu c2FjdGlvbklkLAorCQkJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJCQkgIHZtZmxhZ3MsCisJCQkJ CQkJCSAgc2V0X3BkX2FsbF92aXMsCisJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkg IGZhbHNlLAkvKiBubyBjbGVhbnVwIGxvY2sgcmVxdWlyZWQgKi8KIAkJCQkJCQkJICBQUlVORV9W QUNVVU1fQ0xFQU5VUCwKIAkJCQkJCQkJICBOVUxMLCAwLAkvKiBmcm96ZW4gKi8KQEAgLTI4NjEs MzcgKzI4OTQsMTIgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwg QmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSAgdW51c2VkLCBudW51 c2VkKTsKIAl9CiAKLQkvKgotCSAqIEVuZCBjcml0aWNhbCBzZWN0aW9uLCBzbyB3ZSBzYWZlbHkg Y2FuIGRvIHZpc2liaWxpdHkgdGVzdHMgKHdoaWNoCi0JICogcG9zc2libHkgbmVlZCB0byBwZXJm b3JtIElPIGFuZCBhbGxvY2F0ZSBtZW1vcnkhKS4gSWYgd2UgY3Jhc2ggbm93IHRoZQotCSAqIHBh Z2UgKGluY2x1ZGluZyB0aGUgY29ycmVzcG9uZGluZyB2bSBiaXQpIG1pZ2h0IG5vdCBiZSBtYXJr ZWQgYWxsCi0JICogdmlzaWJsZSwgYnV0IHRoYXQncyBmaW5lLiBBIGxhdGVyIHZhY3V1bSB3aWxs IGZpeCB0aGF0LgotCSAqLwogCUVORF9DUklUX1NFQ1RJT04oKTsKIAotCS8qCi0JICogTm93IHRo YXQgd2UgaGF2ZSByZW1vdmVkIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UsIG9uY2Ug YWdhaW4KLQkgKiBjaGVjayBpZiB0aGUgcGFnZSBoYXMgYmVjb21lIGFsbC12aXNpYmxlLiAgVGhl IHBhZ2UgaXMgYWxyZWFkeSBtYXJrZWQKLQkgKiBkaXJ0eSwgZXhjbHVzaXZlbHkgbG9ja2VkLCBh bmQsIGlmIG5lZWRlZCwgYSBmdWxsIHBhZ2UgaW1hZ2UgaGFzIGJlZW4KLQkgKiBlbWl0dGVkLgot CSAqLwotCUFzc2VydCghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7Ci0JaWYgKGhlYXBfcGFnZV9p c19hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0 WG1pbiwKLQkJCQkJCQkJICZhbGxfZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCAmdmFj cmVsLT5vZmZudW0pKQorCWlmICgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUp ICE9IDApCiAJewotCQl1aW50OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwot Ci0JCWlmIChhbGxfZnJvemVuKQotCQl7Ci0JCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpOwotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExf RlJPWkVOOwotCQl9Ci0KLQkJaGVhcF9wYWdlX3NldF92bV9hbmRfbG9nKHZhY3JlbC0+cmVsLCBi bGtubywgYnVmZmVyLAotCQkJCQkJCQkgdm1idWZmZXIsIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwK LQkJCQkJCQkJIGZsYWdzKTsKLQogCQkvKiBDb3VudCB0aGUgbmV3bHkgc2V0IFZNIHBhZ2UgZm9y IGxvZ2dpbmcgKi8KKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsK IAkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwogCQlpZiAoYWxsX2Zyb3plbikKIAkJ CXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CkBAIC0zNTU3LDYgKzM1NjUs MjUgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAl2YWNyZWwtPnB2 cyA9IE5VTEw7CiB9CiAKKy8qCisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGVfZXhjZXB0X2xwZGVhZCgpIHdoaWNoIGNhbiBiZSB1c2VkIGZvcgorICogY2FsbGVycyB0aGF0 IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBwYWdlLgorICovCitib29sCitoZWFwX3BhZ2VfaXNf YWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJIFRyYW5zYWN0aW9u SWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBib29sICphbGxfZnJvemVuLAorCQkJCQkJIFRyYW5zYWN0 aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dp bmdfb2ZmbnVtKQoreworCisJcmV0dXJuIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZV9leGNlcHRf bHBkZWFkKHJlbCwgYnVmLCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJ CQkJCQkJCQkJICBhbGxfZnJvemVuLAorCQkJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkJCQkJCQkgIGxvZ2dpbmdfb2ZmbnVtKTsKK30KKwogLyoKICAqIENoZWNrIGlm IGV2ZXJ5IHR1cGxlIGluIHRoZSBnaXZlbiBwYWdlIGlzIHZpc2libGUgdG8gYWxsIGN1cnJlbnQg YW5kIGZ1dHVyZQogICogdHJhbnNhY3Rpb25zLgpAQCAtMzU3MCwyMyArMzU5NywzNSBAQCBkZWFk X2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogICogdmlzaWJsZSB0dXBsZXMuIFNl dHMgKmFsbF9mcm96ZW4gdG8gdHJ1ZSBpZiBldmVyeSB0dXBsZSBvbiB0aGlzIHBhZ2UgaXMKICAq IGZyb3plbi4KICAqCi0gKiBUaGlzIGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIGxhenlf c2Nhbl9wcnVuZSgpLiAgSWYgeW91IGNoYW5nZQotICogYW55dGhpbmcgaGVyZSwgbWFrZSBzdXJl IHRoYXQgZXZlcnl0aGluZyBzdGF5cyBpbiBzeW5jLiAgTm90ZSB0aGF0IGFuCi0gKiBhc3NlcnRp b24gY2FsbHMgdXMgdG8gdmVyaWZ5IHRoYXQgZXZlcnlib2R5IHN0aWxsIGFncmVlcy4gIEJlIHN1 cmUgdG8gYXZvaWQKLSAqIGludHJvZHVjaW5nIG5ldyBzaWRlLWVmZmVjdHMgaGVyZS4KKyAqIGRl YWRvZmZzZXRzIGFyZSB0aGUgb2Zmc2V0cyB3ZSBrbm93IGFib3V0IGFuZCBhcmUgYWJvdXQgdG8g c2V0IExQX1VOVVNFRC4KKyAqIGFsbG93ZWRfbnVtX29mZnNldHMgaXMgdGhlIG51bWJlciBvZiB0 aG9zZS4gQXMgbG9uZyBhcyB0aGUgTFBfREVBRCBpdGVtcyB3ZQorICogZW5jb3VudGVyIG9uIHRo ZSBwYWdlIG1hdGNoIHRob3NlIGV4YWN0bHksIHdlIGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2li bGUKKyAqIGluIHRoZSBWTS4KKyAqCisgKiBDYWxsZXJzIGxvb2tpbmcgdG8gdmVyaWZ5IHRoYXQg dGhlIHBhZ2UgaXMgYWxsLXZpc2libGUgY2FuIGNhbGwKKyAqIGhlYXBfcGFnZV9pc19hbGxfdmlz aWJsZSgpLgorICoKKyAqIFRoaXMgaXMgc2ltaWxhciBsb2dpYyB0byB0aGF0IGluIGhlYXBfcHJ1 bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKSBJZgorICogeW91IGNoYW5nZSBhbnl0aGlu ZyBoZXJlLCBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIHN0YXlzIGluIHN5bmMuICBOb3RlCisg KiB0aGF0IGFuIGFzc2VydGlvbiBjYWxscyB1cyB0byB2ZXJpZnkgdGhhdCBldmVyeWJvZHkgc3Rp bGwgYWdyZWVzLiAgQmUgc3VyZQorICogdG8gYXZvaWQgaW50cm9kdWNpbmcgbmV3IHNpZGUtZWZm ZWN0cyBoZXJlLgogICovCiBzdGF0aWMgYm9vbAotaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4s Ci0JCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmls aXR5X2N1dG9mZl94aWQsCi0JCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKK2hl YXBfcGFnZV9pc19hbGxfdmlzaWJsZV9leGNlcHRfbHBkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKKwkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAg IE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJCQkJCQkgICBpbnQgYWxsb3dlZF9udW1f b2Zmc2V0cywKKwkJCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkJCQkgICBUcmFu c2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7 CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Zik7CiAJT2Zm c2V0TnVtYmVyIG9mZm51bSwKIAkJCQltYXhvZmY7CiAJYm9vbAkJYWxsX3Zpc2libGUgPSB0cnVl OworCU9mZnNldE51bWJlciBjdXJyZW50X2RlYWRfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFn ZV07CisJc2l6ZV90CQljdXJyZW50X251bV9vZmZzZXRzID0gMDsKIAogCSp2aXNpYmlsaXR5X2N1 dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAkqYWxsX2Zyb3plbiA9IHRydWU7CkBA IC0zNjE4LDkgKzM2NTcsOCBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLAogCQkgKi8KIAkJaWYgKEl0ZW1JZElzRGVhZChpdGVtaWQpKQogCQl7Ci0J CQlhbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCWJyZWFr OworCQkJY3VycmVudF9kZWFkX29mZnNldHNbY3VycmVudF9udW1fb2Zmc2V0cysrXSA9IG9mZm51 bTsKKwkJCWNvbnRpbnVlOwogCQl9CiAKIAkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGl0ZW1pZCkp OwpAQCAtMzY4Nyw3ICszNzI1LDIzIEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCiAJLyogQ2xlYXIgdGhlIG9mZnNldCBpbmZvcm1hdGlvbiBvbmNl IHdlIGhhdmUgcHJvY2Vzc2VkIHRoZSBnaXZlbiBwYWdlLiAqLwogCSpsb2dnaW5nX29mZm51bSA9 IEludmFsaWRPZmZzZXROdW1iZXI7CiAKLQlyZXR1cm4gYWxsX3Zpc2libGU7CisJLyogSWYgd2Ug YWxyZWFkeSBrbm93IGl0J3Mgbm90IGFsbC12aXNpYmxlLCByZXR1cm4gZmFsc2UgKi8KKwlpZiAo IWFsbF92aXNpYmxlKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBJZiB3ZSB3ZXJlbid0IGFsbG93 ZWQgYW55IGRlYWQgb2Zmc2V0cywgd2UncmUgZG9uZSAqLworCWlmIChhbGxvd2VkX251bV9vZmZz ZXRzID09IDApCisJCXJldHVybiBjdXJyZW50X251bV9vZmZzZXRzID09IDA7CisKKwkvKiBJZiB0 aGUgbnVtYmVyIG9mIGRlYWQgb2Zmc2V0cyBoYXMgY2hhbmdlZCwgdGhhdCdzIHdyb25nICovCisJ aWYgKGN1cnJlbnRfbnVtX29mZnNldHMgIT0gYWxsb3dlZF9udW1fb2Zmc2V0cykKKwkJcmV0dXJu IGZhbHNlOworCisJQXNzZXJ0KGRlYWRvZmZzZXRzKTsKKworCS8qIFRoZSBkZWFkIG9mZnNldHMg bXVzdCBiZSB0aGUgc2FtZSBkZWFkIG9mZnNldHMgKi8KKwlyZXR1cm4gbWVtY21wKGN1cnJlbnRf ZGVhZF9vZmZzZXRzLCBkZWFkb2Zmc2V0cywKKwkJCQkgIGFsbG93ZWRfbnVtX29mZnNldHMgKiBz aXplb2YoT2Zmc2V0TnVtYmVyKSkgPT0gMDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL2hlYXBkZXNjLmMKaW5kZXggYjQ4ZDdkYzFkMjQuLmQ2Yzg2Y2NhYzIwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMjY2LDYgKzI2Niw3IEBAIGhlYXAyX2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogewogCWNoYXIJICAg KnJlYyA9IFhMb2dSZWNHZXREYXRhKHJlY29yZCk7CiAJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0 SW5mbyhyZWNvcmQpICYgflhMUl9JTkZPX01BU0s7CisJY2hhcgkgICAqbWFpbmRhdGFwdHIgPSBy ZWMgKyBTaXplT2ZIZWFwUHJ1bmU7CiAKIAlpbmZvICY9IFhMT0dfSEVBUF9PUE1BU0s7CiAJaWYg KGluZm8gPT0gWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MgfHwKQEAgLTI3OCw3ICsyNzksOCBA QCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJ ewogCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQ7CiAKLQkJCW1lbWNweSgmY29uZmxpY3Rf eGlkLCByZWMgKyBTaXplT2ZIZWFwUHJ1bmUsIHNpemVvZihUcmFuc2FjdGlvbklkKSk7CisJCQlt ZW1jcHkoJmNvbmZsaWN0X3hpZCwgbWFpbmRhdGFwdHIsIHNpemVvZihUcmFuc2FjdGlvbklkKSk7 CisJCQltYWluZGF0YXB0ciArPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CiAKIAkJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1IiwKIAkJCQkJCQkgY29u ZmxpY3RfeGlkKTsKQEAgLTI4Nyw2ICsyODksMTUgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1 ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCBp c0NhdGFsb2dSZWw6ICVjIiwKIAkJCQkJCSB4bHJlYy0+ZmxhZ3MgJiBYTEhQX0lTX0NBVEFMT0df UkVMID8gJ1QnIDogJ0YnKTsKIAorCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIUF9IQVNfVk1GTEFH UykKKwkJeworCQkJdWludDgJCXZtZmxhZ3M7CisKKwkJCW1lbWNweSgmdm1mbGFncywgbWFpbmRh dGFwdHIsIHNpemVvZih1aW50OCkpOworCQkJbWFpbmRhdGFwdHIgKz0gc2l6ZW9mKHVpbnQ4KTsK KwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCB2bV9mbGFnczogMHglMDJYIiwgdm1mbGFncyk7 CisJCX0KKwogCQlpZiAoWExvZ1JlY0hhc0Jsb2NrRGF0YShyZWNvcmQsIDApKQogCQl7CiAJCQlT aXplCQlkYXRhbGVuOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDUxMjdmZGI5Yzc3Li5kMmFjMzgwYmI2 NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMzQzLDYgKzM0MywxMiBAQCBleHRlcm4gdm9pZCBoZWFw X2lucGxhY2VfdXBkYXRlX2FuZF91bmxvY2soUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJ ICAgQnVmZmVyIGJ1ZmZlcik7CiBleHRlcm4gdm9pZCBoZWFwX2lucGxhY2VfdW5sb2NrKFJlbGF0 aW9uIHJlbGF0aW9uLAogCQkJCQkJCQlIZWFwVHVwbGUgb2xkdHVwLCBCdWZmZXIgYnVmZmVyKTsK KworZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkg Ym9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1 dG9mZl94aWQsCisJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBleHRl cm4gYm9vbCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwK IAkJCQkJCQkJCSAgY29uc3Qgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCiAJCQkJCQkJ CQkgIEhlYXBQYWdlRnJlZXplICpwYWdlZnJ6LApAQCAtMzkzLDYgKzM5OSw5IEBAIGV4dGVybiB2 b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNh dGVfb25seSwKIAkJCQkJCQkJCU9mZnNldE51bWJlciAqbm93dW51c2VkLCBpbnQgbnVudXNlZCk7 CiBleHRlcm4gdm9pZCBoZWFwX2dldF9yb290X3R1cGxlcyhQYWdlIHBhZ2UsIE9mZnNldE51bWJl ciAqcm9vdF9vZmZzZXRzKTsKIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1 ZmZlciwKKwkJCQkJCQkJCSAgdWludDggdm1mbGFncywKKwkJCQkJCQkJCSAgYm9vbCB2bV9tb2Rp ZmllZF9oZWFwX3BhZ2UsCiAJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkLAog CQkJCQkJCQkJICBib29sIGNsZWFudXBfbG9jaywKIAkJCQkJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRleCAyNzdkZjZiM2NmMC4uY2VhZTljMDgz ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yOTUsNiArMjk1LDkgQEAgdHlwZWRl ZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogCiAjZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0 b2YoeGxfaGVhcF9wcnVuZSwgZmxhZ3MpICsgc2l6ZW9mKHVpbnQ4KSkKIAorLyogSWYgdGhlIHJl Y29yZCBzaG91bGQgdXBkYXRlIHRoZSBWTSwgdGhpcyBpcyB0aGUgbmV3IHZhbHVlICovCisjZGVm aW5lCQlYTEhQX0hBU19WTUZMQUdTCQkJKDEgPDwgMCkKKwogLyogdG8gaGFuZGxlIHJlY292ZXJ5 IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KICNkZWZpbmUJ CVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQogCi0tIAoyLjM0LjEKCg== --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0003-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Disposition: attachment; filename="v2-0003-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv012 RnJvbSBiMGU1NDlhYjZkOTQxZTA0ZGQ4YTEzODA1MjNhYWQyNDllN2ZkZGU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjQwOjI4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAwMy8xMl0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBpbiBDT1BZIEZSRUVaRQoK SW5zdGVhZCBvZiBlbWl0dGluZyBhIHNlcGFyYXRlIFdBTCByZWNvcmQgZm9yIHNldHRpbmcgdGhl IFZNIGJpdHMgaW4KeGxfaGVhcF92aXNpYmxlLCBpbmNsdWRlIHRoZSByZXF1aXJlZCB1cGRhdGUg aW4gdGhlIHhsX2hlYXBfbXVsdGlfaW5zZXJ0CnJlY29yZCBpbnN0ZWFkLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgIHwgNDIgKysrKysrKysrKysrKysrKystLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgIHwgMzMgKysrKysr KysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIHwg IDUgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggZDEyNTc4N2ZjYjYuLmQyY2Y4YWE5ZmI4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjQ5Myw5ICsyNDkzLDYgQEAgaGVhcF9t dWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGlu dCBudHVwbGVzLAogCQkvKgogCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwgdmlzaWJsZSwgbmVlZCB0 byBjbGVhciB0aGF0LCB1bmxlc3Mgd2UncmUgb25seQogCQkgKiBnb2luZyB0byBhZGQgZnVydGhl ciBmcm96ZW4gcm93cyB0byBpdC4KLQkJICoKLQkJICogSWYgd2UncmUgb25seSBhZGRpbmcgYWxy ZWFkeSBmcm96ZW4gcm93cyB0byBhIHByZXZpb3VzbHkgZW1wdHkKLQkJICogcGFnZSwgbWFyayBp dCBhcyBhbGwtdmlzaWJsZS4KIAkJICovCiAJCWlmIChQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYm ICEob3B0aW9ucyAmIEhFQVBfSU5TRVJUX0ZST1pFTikpCiAJCXsKQEAgLTI1MDYsNiArMjUwMywy MiBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3Qg KipzbG90cywgaW50IG50dXBsZXMsCiAJCQkJCQkJCXZtYnVmZmVyLCBWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpOwogCQl9CiAKKwkJLyoKKwkJICogSWYgd2UncmUgb25seSBhZGRpbmcgYWxyZWFk eSBmcm96ZW4gcm93cyB0byBhIHByZXZpb3VzbHkgZW1wdHkKKwkJICogcGFnZSwgbWFyayBpdCBh cyBhbGwtdmlzaWJsZS4gQW5kIGlmIHdlJ3ZlIGZyb3plbiBldmVyeXRoaW5nIG9uIHRoZQorCQkg KiBwYWdlLCB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLiBXZSdyZSBhbHJlYWR5IGhvbGRpbmcg YSBwaW4gb24gdGhlCisJCSAqIHZtYnVmZmVyLgorCQkgKi8KKwkJZWxzZSBpZiAoYWxsX2Zyb3pl bl9zZXQpCisJCXsKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lW RSk7CisJCQloZWFwX3BhZ2Vfc2V0X3ZtKHJlbGF0aW9uLAorCQkJCQkJCSBCdWZmZXJHZXRCbG9j a051bWJlcihidWZmZXIpLCBidWZmZXIsCisJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCSBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVO KTsKKwkJfQorCiAJCS8qCiAJCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVuYWJsZSBv biB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQogCQkgKi8KQEAgLTI1NTIsNiArMjU2NSwx MiBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3Qg KipzbG90cywgaW50IG50dXBsZXMsCiAJCQl4bHJlYy0+ZmxhZ3MgPSAwOwogCQkJaWYgKGFsbF92 aXNpYmxlX2NsZWFyZWQpCiAJCQkJeGxyZWMtPmZsYWdzID0gWExIX0lOU0VSVF9BTExfVklTSUJM RV9DTEVBUkVEOworCisJCQkvKgorCQkJICogV2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBp bmNsdWRpbmcgYSBjb25mbGljdCB4aWQgaW4gdGhlCisJCQkgKiBXQUwgcmVjb3JkIGFzIEhFQVBf SU5TRVJUX0ZST1pFTiBpbnRlbnRpb25hbGx5IHZpb2xhdGVzCisJCQkgKiB2aXNpYmlsaXR5IHJ1 bGVzLgorCQkJICovCiAJCQlpZiAoYWxsX2Zyb3plbl9zZXQpCiAJCQkJeGxyZWMtPmZsYWdzID0g WExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVDsKIApAQCAtMjYxNCw3ICsyNjMzLDEwIEBAIGhlYXBf bXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBp bnQgbnR1cGxlcywKIAogCQkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCQlYTG9nUmVnaXN0ZXJEYXRh KHhscmVjLCB0dXBsZWRhdGEgLSBzY3JhdGNoLmRhdGEpOworCiAJCQlYTG9nUmVnaXN0ZXJCdWZm ZXIoMCwgYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQgfCBidWZmbGFncyk7CisJCQlpZiAoYWxsX2Zy b3plbl9zZXQpCisJCQkJWExvZ1JlZ2lzdGVyQnVmZmVyKDEsIHZtYnVmZmVyLCAwKTsKIAogCQkJ WExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCB0dXBsZWRhdGEsIHRvdGFsZGF0YWxlbik7CiAKQEAgLTI2 MjQsMjIgKzI2NDYsMTQgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1 cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQkJcmVjcHRyID0gWExvZ0luc2Vy dChSTV9IRUFQMl9JRCwgaW5mbyk7CiAKIAkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKKwkJ CWlmIChhbGxfZnJvemVuX3NldCkKKwkJCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZm ZXIpLCByZWNwdHIpOwogCQl9CiAKIAkJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JCS8qCi0JCSAq IElmIHdlJ3ZlIGZyb3plbiBldmVyeXRoaW5nIG9uIHRoZSBwYWdlLCB1cGRhdGUgdGhlIHZpc2li aWxpdHltYXAuCi0JCSAqIFdlJ3JlIGFscmVhZHkgaG9sZGluZyBwaW4gb24gdGhlIHZtYnVmZmVy LiBJdCdzIGZpbmUgdG8gdXNlCi0JCSAqIEludmFsaWRUcmFuc2FjdGlvbklkIGFzIHRoZSBjdXRv ZmZfeGlkIGhlcmUgLSB0aGlzIGlzIG9ubHkgdXNlZAotCQkgKiB3aGVuIEhFQVBfSU5TRVJUX0ZS T1pFTiBpcyBzcGVjaWZpZWQsIHdoaWNoIGludGVudGlvbmFsbHkgdmlvbGF0ZXMKLQkJICogdmlz aWJpbGl0eSBydWxlcy4KLQkJICovCiAJCWlmIChhbGxfZnJvemVuX3NldCkKLQkJCWhlYXBfcGFn ZV9zZXRfdm1fYW5kX2xvZyhyZWxhdGlvbiwgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwg YnVmZmVyLAotCQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIEludmFsaWRUcmFuc2FjdGlv bklkLAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfCBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NL KTsKIAogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJCW5kb25lICs9IG50aGlzcGFn ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGYyYmMxYmQwNmVlLi43 MTc1NGZkNzdjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC01NTIs NiArNTUyLDcgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAlpbnQJCQlpOwogCWJvb2wJCWlzaW5pdCA9IChYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYg WExPR19IRUFQX0lOSVRfUEFHRSkgIT0gMDsKIAlYTG9nUmVkb0FjdGlvbiBhY3Rpb247CisJQnVm ZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAkvKgogCSAqIEluc2VydGlvbiBkb2Vz bid0IG92ZXJ3cml0ZSBNVkNDIGRhdGEsIHNvIG5vIGNvbmZsaWN0IHByb2Nlc3NpbmcgaXMKQEAg LTU3MiwxMSArNTczLDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xF QVJFRCkKIAl7CiAJCVJlbGF0aW9uCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9j YXRvcik7Ci0JCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJCXZpc2liaWxp dHltYXBfcGluKHJlbG4sIGJsa25vLCAmdm1idWZmZXIpOwogCQl2aXNpYmlsaXR5bWFwX2NsZWFy KHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKIAkJUmVs ZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7CisJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAkJRnJl ZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOwogCX0KIApAQCAtNjYzLDYgKzY2NCwzNiBAQCBoZWFw X3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWlmIChCdWZmZXJJ c1ZhbGlkKGJ1ZmZlcikpCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKIAorCWJ1ZmZl ciA9IEludmFsaWRCdWZmZXI7CisKKwkvKgorCSAqIE5vdyByZWFkIGFuZCB1cGRhdGUgdGhlIFZN IGJsb2NrLiBFdmVuIGlmIHdlIHNraXBwZWQgdXBkYXRpbmcgdGhlIGhlYXAKKwkgKiBwYWdlIGR1 ZSB0byB0aGUgZmlsZSBiZWluZyBkcm9wcGVkIG9yIHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVy eSwgaXQncworCSAqIHN0aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gIEFu eSBXQUwgcmVjb3JkIHRoYXQgY2xlYXJzCisJICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBkb2Vz IHNvIGJlZm9yZSBjaGVja2luZyB0aGUgcGFnZSBMU04sIHNvIGFueQorCSAqIGJpdHMgdGhhdCBu ZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVkLgorCSAqCisJICogSXQgaXMg b25seSBva2F5IHRvIHNldCB0aGUgVk0gYml0cyB3aXRob3V0IGhvbGRpbmcgdGhlIGhlYXAgcGFn ZSBsb2NrCisJICogYmVjYXVzZSB3ZSBjYW4gZXhwZWN0IG5vIG90aGVyIHdyaXRlcnMgb2YgdGhp cyBwYWdlLgorCSAqLworCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5f U0VUICYmCisJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMSwgUkJNX1pF Uk9fT05fRVJST1IsIGZhbHNlLAorCQkJCQkJCQkJICAmdm1idWZmZXIpID09IEJMS19ORUVEU19S RURPKQorCXsKKwkJUmVsYXRpb24JcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2Nh dG9yKTsKKworCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxuLCBibGtubywgJnZtYnVmZmVyKTsKKwkJ dmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHJlbG4sIGJsa25vLAorCQkJCQkJCQkgdm1idWZmZXIs CisJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTik7CisJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlciks IGxzbik7CisJCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsKKwl9CisKKwlpZiAoQnVmZmVy SXNWYWxpZCh2bWJ1ZmZlcikpCisJCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCiAJ LyoKIAkgKiBJZiB0aGUgcGFnZSBpcyBydW5uaW5nIGxvdyBvbiBmcmVlIHNwYWNlLCB1cGRhdGUg dGhlIEZTTSBhcyB3ZWxsLgogCSAqIEFyYml0cmFyaWx5LCBvdXIgZGVmaW5pdGlvbiBvZiAibG93 IiBpcyBsZXNzIHRoYW4gMjAlLiBXZSBjYW4ndCBkbyBtdWNoCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9oZWFwZGVzYy5jCmluZGV4IDgyYjYyYzk1ZGU1Li5iNDhkN2RjMWQyNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1 ZGUgImFjY2Vzcy9oZWFwYW1feGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy9ybWdyZGVzY191dGls cy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc3RhbmRieWRlZnMuaCIKIAogLyoKQEAgLTM1NCw2ICszNTUsMTAgQEAgaGVhcDJfZGVz YyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAibnR1cGxlczogJWQsIGZsYWdzOiAweCUwMlgiLCB4bHJlYy0+bnR1cGxlcywK IAkJCQkJCSB4bHJlYy0+ZmxhZ3MpOwogCisJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJU X0FMTF9GUk9aRU5fU0VUKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIHZtX2ZsYWdzOiAw eCUwMlgiLAorCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwgVklTSUJJTElUWU1B UF9BTExfRlJPWkVOKTsKKwogCQlpZiAoWExvZ1JlY0hhc0Jsb2NrRGF0YShyZWNvcmQsIDApICYm ICFpc2luaXQpCiAJCXsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCBvZmZzZXRz OiIpOwotLSAKMi4zNC4xCgo= --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0008-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Disposition: attachment; filename="v2-0008-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv087 RnJvbSA4NzE2YWM4MGIxYjliODQwYTM0ZWJjYzEwMTI1NjVjYTAzNzVlMDQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjM1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAwOC8xMl0gQ29tYmluZSB2YWN1dW0gcGhhc2UgSSBWTSB1cGRhdGUgY2FzZXMKCkFm dGVyIHBoYXNlIEkgb2YgdmFjdXVtIHdlIHVwZGF0ZSB0aGUgVk0sIGVpdGhlciBzZXR0aW5nIHRo ZSBWTSBiaXRzCndoZW4gYWxsIGJpdHMgYXJlIGN1cnJlbnRseSB1bnNldCBvciBzZXR0aW5nIGp1 c3QgdGhlIGZyb3plbiBiaXQgd2hlbgp0aGUgYWxsLXZpc2libGUgYml0IGlzIGFscmVhZHkgc2V0 LiBUaG9zZSBjYXNlcyBoYWQgYSBsb3Qgb2YgZHVwbGljYXRlZApjb2RlLiBDb21iaW5lIHRoZW0u IFRoaXMgaXMgc2ltcGxlciB0byB1bmRlcnN0YW5kIGFuZCBhbHNvIGFsbG93cyBtYWtlcwp0aGUg Y29kZSBjb21wYWN0IGVub3VnaCB0byBzdGFydCB1c2luZyB0byB1cGRhdGUgdGhlIFZNIHdoaWxl IHBydW5pbmcKYW5kIGZyZWV6aW5nLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYyB8IDcxICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyMiBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKaW5kZXggMGM1Zjg0ODQ4NjYuLjQwMmIyYmQ2NWNhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMTUxLDExICsyMTUxLDI2IEBAIGxhenlfc2Nhbl9w cnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJewogCQkvKiBEb24ndCB1cGRhdGUgdGhlIFZNIGlm IHdlIGp1c3QgY2xlYXJlZCBjb3JydXB0aW9uIGluIGl0ICovCiAJfQotCWVsc2UgaWYgKCFhbGxf dmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKworCS8qCisJ ICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0gb3Ig aXQgaXMgYW5kIG5lZWRzCisJICogdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVwZGF0ZSB0aGUg Vk0gTm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seQorCSAqIHZhbGlkIGlmIGFsbF92aXNpYmxl IGlzIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxf ZnJvemVuLgorCSAqLworCWVsc2UgaWYgKHByZXN1bHQuYWxsX3Zpc2libGUgJiYKKwkJCSAoIWFs bF92aXNpYmxlX2FjY29yZGluZ190b192bSB8fAorCQkJICAocHJlc3VsdC5hbGxfZnJvemVuICYm ICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkpKQogCXsKIAkJ dWludDgJCW9sZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEU7CiAKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgd2UgY2FuIHBh c3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMgb3VyCisJCSAqIGN1dG9mZl94aWQsIHNpbmNlIGEg c25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBtYWtlCisJCSAqIGV2ZXJ5dGhp bmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZQor CQkgKiBmcm96ZW4uCisJCSAqLwogCQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQogCQl7CiAJCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikp OwpAQCAtMjE2Nyw2ICsyMTgyLDEyIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNy ZWwsCiAJCQkJCQkJCQkJCSAgZmxhZ3MpOwogCiAJCS8qCisJCSAqIEV2ZW4gaWYgd2UgYXJlIG9u bHkgc2V0dGluZyB0aGUgYWxsLWZyb3plbiBiaXQsIHRoZXJlIGlzIGEgc21hbGwKKwkJICogY2hh bmNlIHRoYXQgdGhlIFZNIHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3ZWVuIHNldHRpbmcKKwkJ ICogYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2luZyB0aGUgdmlzaWJpbGl0 eSBkdXJpbmcKKwkJICogcHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBvbGRfdm1i aXRzIHRvIGVuc3VyZSB0aGUKKwkJICogdmlzaWJpbGl0eSBtYXAgY291bnRlcnMgdXNlZCBmb3Ig bG9nZ2luZyBhcmUgYWNjdXJhdGUuCisJCSAqCiAJCSAqIElmIHRoZSBwYWdlIHdhc24ndCBhbHJl YWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUKIAkJICogVk0sIGNv dW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KIAkJICovCkBAIC0yMTg2LDU0ICsyMjA3 LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJCSp2bV9wYWdlX2Zy b3plbiA9IHRydWU7CiAJCX0KIAl9Ci0KLQkvKgotCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdl IGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBh cyBhbGwtZnJvemVuLiAgTm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxf dmlzaWJsZSBpcwotCSAqIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBh bmQgYWxsX2Zyb3plbi4KLQkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSAmJgotCQkJIHByZXN1bHQuYWxsX2Zyb3plbiAmJiAh Vk1fQUxMX0ZST1pFTih2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpCi0JewotCQl1aW50 OAkJb2xkX3ZtYml0czsKLQotCQkvKgotCQkgKiBTZXQgdGhlIHBhZ2UgYWxsLWZyb3plbiAoYW5k IGFsbC12aXNpYmxlKSBpbiB0aGUgVk0uCi0JCSAqCi0JCSAqIFdlIGNhbiBwYXNzIEludmFsaWRU cmFuc2FjdGlvbklkIGFzIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhCi0JCSAqIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8K LQkJICogd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVuLgotCQkg Ki8KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hv cml6b24pKTsKLQkJb2xkX3ZtYml0cyA9IGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyh2YWNyZWwt PnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0 aW9uSWQsCi0JCQkJCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCQkvKgotCQkgKiBUaGUgcGFnZSB3 YXMgbGlrZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTS4gSG93ZXZlciwKLQkJ ICogdGhlcmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBpdCB3YXMgbW9kaWZpZWQgc29tZXRpbWUg YmV0d2VlbgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hl Y2tpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5nIHBydW5pbmcuIENoZWNrIHRoZSByZXR1 cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8KLQkJICogZW5zdXJlIHRoZSB2aXNpYmls aXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4KLQkJICovCi0J CWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsK LQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zp c2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0K LQkJLyoKLQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIHBhZ2Ugd2FzIG5vdCBzZXQg YWxsLWZyb3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUsIHNvIHdlIGRvbid0IG5lZWQgdG8gdGVz dCB0aGUgdmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICovCi0JCWVsc2UKLQkJewotCQkJdmFjcmVs LT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9 Ci0JfQogfQogCiAvKgotLSAKMi4zNC4xCgo= --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0007-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Disposition: attachment; filename="v2-0007-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv076 RnJvbSBmMWE0N2QzZTNlZjQ4MjI2ODlhY2VkZjFlZWE1NTU3YWE4ZmRkODUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjA0OjAzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAwNy8xMl0gQ29tYmluZSBsYXp5X3NjYW5fcHJ1bmUgVk0gY29ycnVwdGlvbiBjYXNl cwoKbGF6eV9zY2FuX3BydW5lKCkgdXBkYXRlcyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhh c2UgSSBvZiBoZWFwCnZhY3V1bWluZy4gSXQgYWxzbyBjaGVja3MgYW5kIGZpeGVzIGNvcnJ1cHRp b24gaW4gdGhlIFZNLiBUaGUgY29ycnVwdGlvbgpjYXNlcyB3aGVyZSBtaXhlZCBpbiB3aXRoIHRo ZSBub3JtYWwgdmlzaWJpbGl0eSBtYXAgdXBkYXRlIGNhc2VzLgoKQ2FyZWZ1bCBzdHVkeSBvZiB0 aGUgb3JkZXJpbmcgb2YgdGhlIGN1cnJlbnQgbG9naWMgcmV2ZWFscyB0aGF0IHRoZQpjb3JydXB0 aW9uIGNhc2VzIGNhbiBiZSByZW9yZGVyZWQgYW5kIGV4dHJhY3RlZCBpbnRvIGEgc2VwYXJhdGUK ZnVuY3Rpb24uIFRoaXMgc2hvdWxkIHJlc3VsdCBpbiBubyBhZGRpdGlvbmFsIG92ZXJoZWFkIHdo ZW4gY29tcGFyZWQgdG8KcHJldmlvdXMgZXhlY3V0aW9uLgoKVGhpcyByZW9yZGVyaW5nIG1ha2Vz IGl0IGNsZWFyIHdoaWNoIGNhc2VzIGFyZSBhYm91dCBjb3JydXB0aW9uIGFuZAp3aGljaCBjYXNl cyBhcmUgbm9ybWFsIFZNIHVwZGF0ZXMuIFNlcGFyYXRpbmcgdGhlbSBhbHNvIG1ha2VzIGl0CnBv c3NpYmxlIHRvIGNvbWJpbmUgdGhlIG5vcm1hbCBjYXNlcyBpbiBhIGZ1dHVyZSBjb21taXQuIFRo aXMgd2lsbCBtYWtlCnRoZSBsb2dpYyBlYXNpZXIgdG8gdW5kZXJzdGFuZCBhbmQgYWxsb3cgZm9y IGZ1cnRoZXIgc2VwYXJhdGlvbiBvZiB0aGUKbG9naWMgdG8gYWxsb3cgdXBkYXRpbmcgdGhlIFZN IGluIHRoZSBzYW1lIHJlY29yZCBhcyBwcnVuaW5nIGFuZApmcmVlemluZyBpbiBwaGFzZSBJLgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDExNSArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA0MSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNjhjOGIw ZjQ0NzUuLjBjNWY4NDg0ODY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC00MzEsNiArNDMxLDEzIEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9j ayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxh enlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJ CQkJCQkgICBCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNo YXJlbG9jaywgQnVmZmVyIHZtYnVmZmVyKTsKKworc3RhdGljIGJvb2wgaWRlbnRpZnlfYW5kX2Zp eF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIEJsb2NrTnVt YmVyIGhlYXBfYmxrLAorCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFw X3BhZ2UsCisJCQkJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKKwkJCQkJCQkJCQkg ICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlcik7CiBz dGF0aWMgdm9pZCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVm LAogCQkJCQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZt YnVmZmVyLCBib29sIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5MzMsNiArMTk0 MCw2NiBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVy IGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogV2hl biB1cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWlu Zywgd2UgdGFrZSB0aGUKKyAqIG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZN IGNvcnJ1cHRpb24uCisgKgorICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkg c3RhdHVzIG9mIHRoZSBoZWFwIHBhZ2UgY29sbGVjdGVkCisgKiB3aGlsZSBmaW5kaW5nIHRoZSBu ZXh0IHVuc2tpcHBhYmxlIGJsb2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgorICov CitzdGF0aWMgYm9vbAoraWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJl bGF0aW9uLAorCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCSAgIEJ1ZmZl ciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19r bm93bl9hdiwKKwkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlcikKK3sKKwkvKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJp bGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBi aXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkg KiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNv IHdlIG11c3QgcmVjaGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcg dGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYg IVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgorCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0 dXMocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllbG9nKFdBUk5J TkcsICJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJp dCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJl bGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0 aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRv IHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkg KiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZl IHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25S ZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1l cyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYg d2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0 aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxs eSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoK KwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQ RF9BTExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAobmxwZGVhZF9pdGVt cyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZWxvZyhXQVJOSU5H LCAicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxl IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWxhdGlvbiksIGhlYXBfYmxrKTsKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2Up OworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFwX2NsZWFy KHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJ RF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisKIC8q IHFzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwogc3RhdGljIGlu dAogY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQpAQCAtMjA3 Nyw5ICsyMTQ0LDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyoK IAkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRp b24gZnJvbSB0aGUgVk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2so KSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJs ZXMKKwkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3IgYW55IFZN IGNvcnJ1cHRpb24uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYg cHJlc3VsdC5hbGxfdmlzaWJsZSkKKwlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9u KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLCBwYWdlLAorCQkJCQkJCQkJICAgYWxsX3Zpc2libGVf YWNjb3JkaW5nX3RvX3ZtLCBwcmVzdWx0LmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCXsKKwkJ LyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBp dCAqLworCX0KKwllbHNlIGlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1 bHQuYWxsX3Zpc2libGUpCiAJewogCQl1aW50OAkJb2xkX3ZtYml0czsKIAkJdWludDgJCWZsYWdz ID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKQEAgLTIxMTUsNDUgKzIxODcsNiBAQCBsYXp5 X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl9CiAJfQogCi0JLyoKLQkgKiBBcyBv ZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUg c2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBw b3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2Fu X25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3aXRoIGJ1 ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCi0JICov Ci0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdlSXNBbGxWaXNp YmxlKHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+cmVsLCBi bGtubywgJnZtYnVmZmVyKSAhPSAwKQotCXsKLQkJZWxvZyhXQVJOSU5HLCAicGFnZSBpcyBub3Qg bWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0 aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCSB2YWNyZWwtPnJlbG5hbWUsIGJsa25vKTsKLQkJdmlz aWJpbGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3NpYmxlIGZv ciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3JvbmcgZm9yIHVz IHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUK LQkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBz YWZlIHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3RO b25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0 aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0JICogc28g aWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxl cyB0aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1 YWxseSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCi0J ICoKLQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0 aCBQRF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQllbHNlIGlmIChwcmVz dWx0LmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQl7Ci0JCWVs b2coV0FSTklORywgInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBh bGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkgdmFjcmVsLT5yZWxu YW1lLCBibGtubyk7Ci0JCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJE aXJ0eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1i dWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KIAkvKgogCSAq IElmIHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMg c3VjaCB5ZXQsIG1hcmsKIAkgKiBpdCBhcyBhbGwtZnJvemVuLiAgTm90ZSB0aGF0IGFsbF9mcm96 ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotLSAKMi4zNC4xCgo= --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0009-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Disposition: attachment; filename="v2-0009-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv098 RnJvbSA2ZTAyMWM1NGRiM2Y3MjNjODE0YTczZDQzMWEzMDk5NWQ5MjU2NjU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjQ1OjU5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAwOS8xMl0gRmluZCBhbmQgZml4IFZNIGNvcnJ1cHRpb24gaW4KIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplCgpGdXR1cmUgY29tbWl0cyB3aWxsIHVwZGF0ZSB0aGUgVk0gaW4gdGhl IHNhbWUgY3JpdGljYWwgc2VjdGlvbiBhbmQgV0FMCnJlY29yZCBhcyBwcnVuaW5nIGFuZCBmcmVl emluZy4gRm9yIGVhc2Ugb2YgcmV2aWV3LCB0aGlzIGNvbW1pdCBtYWtlcwpvbmUgc3RlcCB0b3dh cmQgZG9pbmcgdGhpcy4gSXQgbW92ZXMgdGhlIFZNIGNvcnJ1cHRpb24gaGFuZGxpbmcgY2FzZSB0 bwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDc4ICsrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8ICA0ICsrCiAzIGZp bGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggOTdlNTFmNzg4NTQuLjQ5NmI3MGUzMThmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJh Y2Nlc3MveGxvZ2luc2VydC5oIgotI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5o IgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv dmFjdXVtLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgpAQCAtMTc3LDYgKzE3NywxMyBAQCBzdGF0aWMgdm9pZCBoZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0Tgog CiBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIAorc3RhdGlj IGJvb2wgaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAor CQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCQkJCSAgIEJ1ZmZlciBo ZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19r bm93bl9hdiwKKwkJCQkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJCSAg IEJ1ZmZlciB2bWJ1ZmZlcik7CisKIAogLyoKICAqIE9wdGlvbmFsbHkgcHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGluIHRoZSBzcGVjaWZpZWQgcGFnZS4KQEAgLTI2MSw3ICsyNjgsOSBA QCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQog CQkJICogbm90IHRoZSByZWxhdGlvbiBoYXMgaW5kZXhlcywgc2luY2Ugd2UgY2Fubm90IHNhZmVs eSBkZXRlcm1pbmUKIAkJCSAqIHRoYXQgZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nIHdpdGggdGhl IGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCiAJCQkgKi8KLQkJCWhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIHZpc3Rlc3QsIDAsCisJCQloZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCBmYWxzZSwKKwkJCQkJCQkJCSAgIEludmFsaWRC dWZmZXIsCisJCQkJCQkJCQkgICB2aXN0ZXN0LCAwLAogCQkJCQkJCQkJICAgTlVMTCwgJnByZXN1 bHQsIFBSVU5FX09OX0FDQ0VTUywgJmR1bW15X29mZl9sb2MsIE5VTEwsIE5VTEwpOwogCiAJCQkv KgpAQCAtMjk0LDYgKzMwMyw2NCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyKQogCX0KIH0KIAorLyoKKyAqIFdoZW4gdXBkYXRpbmcgdGhlIHZp c2liaWxpdHkgbWFwIGFmdGVyIHBoYXNlIEkgaGVhcCB2YWN1dW1pbmcsIHdlIHRha2UgdGhlCisg KiBvcHBvcnR1bml0eSB0byBpZGVudGlmeSBhbmQgZml4IGFueSBWTSBjb3JydXB0aW9uLgorICoK KyAqIGhlYXBfYmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVh cCBwYWdlIGNvbGxlY3RlZAorICogd2hpbGUgZmluZGluZyB0aGUgbmV4dCB1bnNraXBwYWJsZSBi bG9jayBpbiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKS4KKyAqLworc3RhdGljIGJvb2wKK2lk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkg ICBCbG9ja051bWJlciBoZWFwX2JsaywKKwkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCisJCQkJCQkJ ICAgaW50NjQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpCit7CisJ LyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91 bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93 ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICogY2xlYXJlZCBhZnRlciBo ZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sK KwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNv cnJ1cHQuCisJICovCisJaWYgKGhlYXBfYmxrX2tub3duX2F2ICYmICFQYWdlSXNBbGxWaXNpYmxl KGhlYXBfcGFnZSkgJiYKKwkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHJlbGF0aW9uLCBoZWFw X2JsaywgJnZtYnVmZmVyKSAhPSAwKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAicGFnZSBpcyBub3Qg bWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0 aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlv biksIGhlYXBfYmxrKTsKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGss IHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0 cnVlOworCX0KKworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVk IGJ5CisJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFj a3dhcmRzLCBzbyBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQg YXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICogeWV0LCB3aGlsZSBQRF9B TExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCisJICog bmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rp b25JZCgpIGlzCisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVl IHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRy YWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQorCSAqIHRoaW5r IGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCisJ ICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJICogVGhlcmUgc2hvdWxk IG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0 LAorCSAqIGhvd2V2ZXIuCisJICovCisJaWYgKG5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0Fs bFZpc2libGUoaGVhcF9wYWdlKSkKKwl7CisJCWVsb2coV0FSTklORywgInBhZ2UgY29udGFpbmlu ZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVz XCIgcGFnZSAldSIsCisJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFw X2Jsayk7CisJCVBhZ2VDbGVhckFsbFZpc2libGUoaGVhcF9wYWdlKTsKKwkJTWFya0J1ZmZlckRp cnR5KGhlYXBfYnVmZmVyKTsKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9i bGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVy biB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KIAogLyoKICAqIFBydW5lIGFuZCByZXBh aXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUKQEAg LTMxNCw2ICszODEsMTAgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlcikKICAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qgc2V0LCBi ZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxsZXJzCiAgKiB0aGF0IGFsc28gZnJlZXplIG5l ZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCisgKiBibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxp dHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGFzIG9mIHRoZSBsYXN0IGNhbGwKKyAqIHRvIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIHRoYXQg bWF5IGFscmVhZHkKKyAqIGNvbnRhaW4gdGhlIHJlcXVpcmVkIGJsb2NrIG9mIHRoZSB2aXNpYmls aXR5IG1hcC4KKyAqCiAgKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0 dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5UTFlfREVBRAogICogKHNlZSBoZWFwX3BydW5lX3NhdGlz Zmllc192YWN1dW0pLgogICoKQEAgLTM0OSw2ICs0MjAsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0 KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogICovCiB2b2lkCiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJ CSAgIGJvb2wgYmxrX2tub3duX2F2LAorCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJ ICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJ CSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzLApAQCAtODk3LDYgKzk3MCwxNiBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0 aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAK KwkvKgorCSAqIENsZWFyIGFueSBWTSBjb3JydXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8g YmUgZG9uZSBpbiBhIGNyaXRpY2FsCisJICogc2VjdGlvbi4KKwkgKi8KKwlwcmVzdWx0LT52bV9j b3JydXB0aW9uID0gZmFsc2U7CisJaWYgKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRF X1ZNKQorCQlwcmVzdWx0LT52bV9jb3JydXB0aW9uID0gaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3Jy dXB0aW9uKHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJCQkJCWJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwK KwkJCQkJCQkJCQkJCQkJCQlibGtfa25vd25fYXYsCisJCQkJCQkJCQkJCQkJCQkJcHJzdGF0ZS5s cGRlYWRfaXRlbXMsIHZtYnVmZmVyKTsKIAlpZiAocHJzdGF0ZS5mcmVlemUpCiAJewogCQlpZiAo cHJlc3VsdC0+bmZyb3plbiA+IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggNDAyYjJiZDY1Y2EuLjllMGIwYTMxMDEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC00MzEsMTMgKzQzMSw2IEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBw YWJsZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRp YyBib29sIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIg YnVmLAogCQkJCQkJCQkgICBCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkg ICBib29sIHNoYXJlbG9jaywgQnVmZmVyIHZtYnVmZmVyKTsKLQotc3RhdGljIGJvb2wgaWRlbnRp ZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJCSAg IEJsb2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwg UGFnZSBoZWFwX3BhZ2UsCi0JCQkJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKLQkJ CQkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1 ZmZlcik7CiBzdGF0aWMgdm9pZCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBC dWZmZXIgYnVmLAogCQkJCQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJ QnVmZmVyIHZtYnVmZmVyLCBib29sIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5 NDAsNjUgKzE5MzMsNiBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3Jl bCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCi0v KgotICogV2hlbiB1cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFw IHZhY3V1bWluZywgd2UgdGFrZSB0aGUKLSAqIG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBm aXggYW55IFZNIGNvcnJ1cHRpb24uCi0gKgotICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZp c2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIHBhZ2UgY29sbGVjdGVkCi0gKiB3aGlsZSBmaW5k aW5nIHRoZSBuZXh0IHVuc2tpcHBhYmxlIGJsb2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9j aygpLgotICovCi1zdGF0aWMgYm9vbAotaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJl bGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJ CSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCi0JCQkJCQkJICAgYm9vbCBo ZWFwX2Jsa19rbm93bl9hdiwKLQkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJ CSAgIEJ1ZmZlciB2bWJ1ZmZlcikKLXsKLQkvKgotCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0 aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0JICogcGFn ZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJp dCBnb3QKLQkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBj YWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawotCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNv bmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KLQkgKi8KLQlpZiAoaGVhcF9ibGtfa25v d25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgotCQl2aXNpYmlsaXR5bWFw X2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCi0JewotCQll bG9nKFdBUk5JTkcsICJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxp dHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOwotCQl2aXNpYmlsaXR5bWFw X2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3Np YmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVU cmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3Jvbmcg Zm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZl cnlvbmUKLQkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUg cmVhbCBzYWZlIHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRP bGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5k IHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0J ICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhl IHR1cGxlcyB0aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHll dCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJl Y3QuCi0JICoKLQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBh Z2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQlpZiAobmxw ZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQotCXsKLQkJZWxv ZyhXQVJOSU5HLCAicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFs bC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCSBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKTsKLQkJUGFnZUNsZWFyQWxsVmlzaWJsZSho ZWFwX3BhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOwotCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JcmV0dXJuIGZhbHNlOwot fQotCiAKIC8qIHFzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwog c3RhdGljIGludApAQCAtMjA1NSwxMSArMTk4OSwxNCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxT dGF0ZSAqdmFjcmVsLAogCSAqIHR1cGxlcy4gUHJ1bmluZyB3aWxsIGhhdmUgZGV0ZXJtaW5lZCB3 aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcwogCSAqIGFsbC12aXNpYmxlLgogCSAqLwotCXBydW5l X29wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFOworCXBydW5lX29wdGlvbnMgPSBIRUFQ X1BBR0VfUFJVTkVfRlJFRVpFIHwgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTTsKIAlpZiAodmFj cmVsLT5uaW5kZXhlcyA9PSAwKQogCQlwcnVuZV9vcHRpb25zIHw9IEhFQVBfUEFHRV9QUlVORV9N QVJLX1VOVVNFRF9OT1c7CiAKLQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWwsIGJ1Ziwg dmFjcmVsLT52aXN0ZXN0LCBwcnVuZV9vcHRpb25zLAorCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKHJlbCwgYnVmLAorCQkJCQkJCSAgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKKwkJ CQkJCQkgICB2bWJ1ZmZlciwKKwkJCQkJCQkgICB2YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlv bnMsCiAJCQkJCQkJICAgJnZhY3JlbC0+Y3V0b2ZmcywgJnByZXN1bHQsIFBSVU5FX1ZBQ1VVTV9T Q0FOLAogCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSwKIAkJCQkJCQkgICAmdmFjcmVsLT5OZXdS ZWxmcm96ZW5YaWQsICZ2YWNyZWwtPk5ld1JlbG1pbk14aWQpOwpAQCAtMjE0NCwxMCArMjA4MSw5 IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyoKIAkgKiBIYW5kbGUg c2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUg Vk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5k IGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJsZXMuIFN0YXJ0IGJ5 IGxvb2tpbmcgZm9yIGFueSBWTSBjb3JydXB0aW9uLgorCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVz LgogCSAqLwotCWlmIChpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24odmFjcmVsLT5yZWws IGJsa25vLCBidWYsIHBhZ2UsCi0JCQkJCQkJCQkgICBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0sIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcikpCisJaWYgKHByZXN1bHQudm1fY29y cnVwdGlvbikKIAl7CiAJCS8qIERvbid0IHVwZGF0ZSB0aGUgVk0gaWYgd2UganVzdCBjbGVhcmVk IGNvcnJ1cHRpb24gaW4gaXQgKi8KIAl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMWZhNmViMDQ3ZmQu LjA4ODY4NjdhMTYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC00MSw2ICs0MSw3IEBACiAvKiAib3B0 aW9ucyIgZmxhZyBiaXRzIGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSAqLwogI2RlZmlu ZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XCQkoMSA8PCAwKQogI2RlZmluZSBIRUFQ X1BBR0VfUFJVTkVfRlJFRVpFCQkJCSgxIDw8IDEpCisjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9V UERBVEVfVk0JCQkoMSA8PCAyKQogCiB0eXBlZGVmIHN0cnVjdCBCdWxrSW5zZXJ0U3RhdGVEYXRh ICpCdWxrSW5zZXJ0U3RhdGU7CiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3Q7CkBAIC0yNDYsNiArMjQ3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlib29sCQlhbGxfdmlzaWJs ZTsKIAlib29sCQlhbGxfZnJvemVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpv bjsKKwlib29sCQl2bV9jb3JydXB0aW9uOwogCiAJLyoKIAkgKiBXaGV0aGVyIG9yIG5vdCB0aGUg cGFnZSBtYWtlcyByZWwgdHJ1bmNhdGlvbiB1bnNhZmUuICBUaGlzIGlzIHNldCB0bwpAQCAtMzg1 LDYgKzM4Nyw4IEBAIGV4dGVybiBUcmFuc2FjdGlvbklkIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxl cyhSZWxhdGlvbiByZWwsCiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGU7CiBleHRlcm4gdm9pZCBoZWFw X3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKTsKIGV4dGVy biB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAorCQkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCisJCQkJCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCiAJCQkJCQkJCQkgICBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCiAJCQkJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1D dXRvZmZzICpjdXRvZmZzLAotLSAKMi4zNC4xCgo= --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0010-Update-VM-in-pruneheap.c.patch" Content-Disposition: attachment; filename="v2-0010-Update-VM-in-pruneheap.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv0b9 RnJvbSBjZGY4MzczMmJiNjMzMTk5ZWFiNjAxNmUwOGU3Y2MxYzIxODVjMTQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgSnVuIDIwMjUgMTE6MDQ6MTQgLTA0MDAKU3ViamVjdDogW1BB VENIIHYyIDEwLzEyXSBVcGRhdGUgVk0gaW4gcHJ1bmVoZWFwLmMKCkFzIGEgc3RlcCB0b3dhcmQg dXBkYXRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gYW5kIFdBTApyZWNv cmQgYXMgcHJ1bmluZyBhbmQgZnJlZXppbmcgKGR1cmluZyBwaGFzZSBJIG9mIHZhY3V1bWluZyks IGZpcnN0IG1vdmUKdGhlIFZNIHVwZGF0ZSAoc3RpbGwgaW4gaXRzIG93biBjcml0aWNhbCBzZWN0 aW9uIGFuZCBXQUwgcmVjb3JkKSBpbnRvCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuIFRo aXMgbWFrZXMgcmV2aWV3IGVhc2llci4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyAgfCA5OSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCA4MSArKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgMTUgKysrLS0KIDMgZmlsZXMgY2hh bmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKaW5kZXggNDk2YjcwZTMxOGYuLjQyNWRjYzc3NTM0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMzY0LDcgKzM2NCw4IEBAIGlkZW50aWZ5X2FuZF9m aXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKIAogLyoKICAqIFBydW5lIGFuZCBy ZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUK LSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3Mgdmlz aWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgorICogdGhlIFZNLgogICoK ICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9uIHRoZSBw YWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1hdGlvbiBm b3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKQEAgLTQ0MCw2ICs0NDEs OCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVy IGJ1ZmZlciwKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CiAJYm9vbAkJZG9f aGludDsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAwOwogCWJv b2wJCWhpbnRfYml0X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2Zw aTsKIApAQCAtOTM5LDcgKzk0Miw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqCiAJICogTm93IHRoYXQgZnJlZXppbmcg aGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUKIAkgKiBh bnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHBy ZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNhbGxlci4K KwkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5 IG1hcC4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxwZGVhZF9p dGVtcyA9PSAwKQogCXsKQEAgLTk1NSwzMSArOTU4LDkxIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXByZXN1bHQtPmhhc3R1 cCA9IHByc3RhdGUuaGFzdHVwOwogCiAJLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmluZyB0byB1 cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAqIGZvciB0 aGF0IHJlY29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIs IGlmIHRoZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBj b25mbGljdCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVtYWluIElu dmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRoYXQgd2Ug anVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQKLQkgKiBp bmNsdWRlZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vzbid0IG5l ZWQgaXQuCisJICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3Qg aG9yaXpvbiBmb3IgdGhhdCByZWNvcmQKKwkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0 aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCisJICogY29tcGxldGVseSBmcm96ZW4s IHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6b24KKwkg KiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcyB0aGUg Y2FzZSB0aGF0IHdlCisJICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZy ZWV6ZSByZWNvcmQgaW5jbHVkZWQgdGhlCisJICogY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhl IFZNIHVwZGF0ZSByZWNvcmQgZG9lc24ndCBuZWVkIGl0LgogCSAqLwogCWlmIChwcmVzdWx0LT5h bGxfZnJvemVuKQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CiAJZWxzZQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0 ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAKLQlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0 YXRlLmxwZGVhZF9pdGVtczsKLQkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2Fz IGFscmVhZHkgZmlsbGVkIGluICovCi0KIAkvKgotCSAqIENsZWFyIGFueSBWTSBjb3JydXB0aW9u LiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsCi0JICogc2VjdGlv bi4KKwkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3Jt YXRpb24gZnJvbSB0aGUgVk0gKGFzCisJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxv Y2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCisJICogYWxsX2Zyb3plbiB2YXJp YWJsZXMuCiAJICovCi0JcHJlc3VsdC0+dm1fY29ycnVwdGlvbiA9IGZhbHNlOwogCWlmIChvcHRp b25zICYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSkKLQkJcHJlc3VsdC0+dm1fY29ycnVwdGlv biA9IGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJCQkJCQkJ CQkJCQlibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJCQkJCQkJYmxrX2tub3duX2F2 LAotCQkJCQkJCQkJCQkJCQkJCXByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcik7CisJewor CQlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAorCQkJCQkJCQkJ CSAgIGJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkgICBibGtfa25vd25fYXYsCisJ CQkJCQkJCQkJICAgcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwkJeworCQkJLyog SWYgd2UgZml4IGNvcnJ1cHRpb24sIGRvbid0IHVwZGF0ZSB0aGUgVk0gZnVydGhlciAqLworCQl9 CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlzaWJsZSBp biB0aGUgVk0gb3IgaXQgaXMgYW5kCisJCSAqIG5lZWRzIHRvIG1lIG1hcmtlZCBhbGwtZnJvemVu LCB1cGRhdGUgdGhlIFZNIE5vdGUgdGhhdCBhbGxfZnJvemVuCisJCSAqIGlzIG9ubHkgdmFsaWQg aWYgYWxsX3Zpc2libGUgaXMgdHJ1ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoCisJCSAqIGFsbF92 aXNpYmxlIGFuZCBhbGxfZnJvemVuLgorCQkgKi8KKwkJZWxzZSBpZiAocHJlc3VsdC0+YWxsX3Zp c2libGUgJiYKKwkJCQkgKCFibGtfa25vd25fYXYgfHwKKwkJCQkgIChwcmVzdWx0LT5hbGxfZnJv emVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBibG9ja25vLCAmdm1idWZmZXIpKSkpCisJ CXsKKwkJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKwkJCXZtZmxhZ3MgPSBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCisJCQkvKgorCQkJICogSWYgdGhlIHBhZ2UgaXMg YWxsLWZyb3plbiwgd2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKKwkJCSAqIG91 ciBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQg dG8KKwkJCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0 aGUgcGFnZSdzIHR1cGxlcworCQkJICogd2VyZSBmcm96ZW4uCisJCQkgKi8KKwkJCWlmIChwcmVz dWx0LT5hbGxfZnJvemVuKQorCQkJeworCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo cHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbikpOworCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElU WU1BUF9BTExfRlJPWkVOOworCQkJfQorCisJCQkvKgorCQkJICogSXQncyBwb3NzaWJsZSBmb3Ig dGhlIFZNIGJpdCB0byBiZSBjbGVhciBhbmQgdGhlIHBhZ2UtbGV2ZWwgYml0CisJCQkgKiB0byBi ZSBzZXQgaWYgY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZC4KKwkJCSAqCisJCQkgKiBBbmQgZXZl biBpZiB3ZSBhcmUganVzdCBwbGFubmluZyB0byB1cGRhdGUgdGhlIGZyb3plbiBiaXQgaW4KKwkJ CSAqIHRoZSBWTSwgd2Ugc2hvdWxkbid0IHJlbHkgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3Rv X3ZtIGFzIGEKKwkJCSAqIHByb3h5IGZvciB0aGUgcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBi aXQgYmVpbmcgc2V0LCBzaW5jZSBpdAorCQkJICogbWlnaHQgaGF2ZSBiZWNvbWUgc3RhbGUuCisJ CQkgKgorCQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJp dCBpcyBub3Qgc2V0LCB3ZQorCQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUgaGVhcCBwYWdl LiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQorCQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0 byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKKwkJCSAqIGJlZm9yZSBw YXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlCisJCQkg KiBsb2dnZWQuCisJCQkgKi8KKwkJCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSB8fCBYTG9n SGludEJpdElzTmVlZGVkKCkpCisJCQl7CisJCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJ CQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCQl9CisKKwkJCW9sZF92bWJpdHMgPSBoZWFw X3BhZ2Vfc2V0X3ZtX2FuZF9sb2cocmVsYXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwKKwkJCQkJCQkJ CQkJCSAgdm1idWZmZXIsIHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQkJ CQkgIHZtZmxhZ3MpOworCQl9CisJfQorCisJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0 ZS5scGRlYWRfaXRlbXM7CisJLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBh bHJlYWR5IGZpbGxlZCBpbiAqLworCisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7 CisJcHJlc3VsdC0+bmV3X3ZtYml0cyA9IHZtZmxhZ3M7CisKIAlpZiAocHJzdGF0ZS5mcmVlemUp CiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKaW5kZXggOWUwYjBhMzEwMTMuLjhkYWFkNTRhMGZlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTMzLDcgKzE5MzMsNiBAQCBsYXp5X3NjYW5fbmV3X29y X2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8s CiAJcmV0dXJuIGZhbHNlOwogfQogCi0KIC8qIHFzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcg T2Zmc2V0TnVtYmVycyAqLwogc3RhdGljIGludAogY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiKQpAQCAtMTk0OSw3ICsxOTQ4LDggQEAgY21wT2Zmc2V0TnVtYmVy cyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogICogdm1idWZmZXIgaXMgdGhlIGJ1ZmZl ciBjb250YWluaW5nIHRoZSBWTSBibG9jayB3aXRoIHZpc2liaWxpdHkgaW5mb3JtYXRpb24KICAq IGZvciB0aGUgaGVhcCBibG9jaywgYmxrbm8uIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBp cyB0aGUgc2F2ZWQKICAqIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGxvb2tl ZCB1cCBlYXJsaWVyIGJ5IHRoZSBjYWxsZXIuIFdlCi0gKiB3b24ndCByZWx5IGVudGlyZWx5IG9u IHRoaXMgc3RhdHVzLCBhcyBpdCBtYXkgYmUgb3V0IG9mIGRhdGUuCisgKiB3b24ndCByZWx5IGVu dGlyZWx5IG9uIHRoaXMgc3RhdHVzLCBhcyBpdCBtYXkgYmUgb3V0IG9mIGRhdGUuIFRoZXNlIHdp bGwgYmUKKyAqIHBhc3NlZCBvbiB0byBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVz ZSB3aGlsZSBzZXR0aW5nIHRoZSBWTS4KICAqCiAgKiAqaGFzX2xwZGVhZF9pdGVtcyBpcyBzZXQg dG8gdHJ1ZSBvciBmYWxzZSBkZXBlbmRpbmcgb24gd2hldGhlciwgdXBvbiByZXR1cm4KICAqIGZy b20gdGhpcyBmdW5jdGlvbiwgYW55IExQX0RFQUQgaXRlbXMgYXJlIHN0aWxsIHByZXNlbnQgb24g dGhlIHBhZ2UuCkBAIC0xOTc2LDYgKzE5NzYsNyBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0 ZSAqdmFjcmVsLAogCiAJLyoKIAkgKiBQcnVuZSBhbGwgSE9ULXVwZGF0ZSBjaGFpbnMgYW5kIHBv dGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhpcyBwYWdlLgorCSAqIFRoZW4sIGlmIHRoZSBw YWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSB0aGUgVk0uCiAJICoK IAkgKiBJZiB0aGUgcmVsYXRpb24gaGFzIG5vIGluZGV4ZXMsIHdlIGNhbiBpbW1lZGlhdGVseSBt YXJrIHdvdWxkLWJlIGRlYWQKIAkgKiBpdGVtcyBMUF9VTlVTRUQuCkBAIC0xOTg0LDEwICsxOTg1 LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkgKiBwcmVzdWx0Lm5k ZWxldGVkLiAgSXQgc2hvdWxkIG5vdCBiZSBjb25mdXNlZCB3aXRoIHByZXN1bHQubHBkZWFkX2l0 ZW1zOwogCSAqIHByZXN1bHQubHBkZWFkX2l0ZW1zJ3MgZmluYWwgdmFsdWUgY2FuIGJlIHRob3Vn aHQgb2YgYXMgdGhlIG51bWJlciBvZgogCSAqIHR1cGxlcyB0aGF0IHdlcmUgZGVsZXRlZCBmcm9t IGluZGV4ZXMuCi0JICoKLQkgKiBXZSB3aWxsIHVwZGF0ZSB0aGUgVk0gYWZ0ZXIgY29sbGVjdGlu ZyBMUF9ERUFEIGl0ZW1zIGFuZCBmcmVlemluZwotCSAqIHR1cGxlcy4gUHJ1bmluZyB3aWxsIGhh dmUgZGV0ZXJtaW5lZCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcwotCSAqIGFsbC12aXNpYmxl LgogCSAqLwogCXBydW5lX29wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIHwgSEVBUF9Q QUdFX1BSVU5FX1VQREFURV9WTTsKIAlpZiAodmFjcmVsLT5uaW5kZXhlcyA9PSAwKQpAQCAtMjA3 OSw3MCArMjA3NiwyNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCUFz c2VydCghcHJlc3VsdC5hbGxfdmlzaWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7CiAKIAkv KgotCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1h dGlvbiBmcm9tIHRoZSBWTSAoYXMKLQkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9j aygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlh Ymxlcy4KLQkgKi8KLQlpZiAocHJlc3VsdC52bV9jb3JydXB0aW9uKQotCXsKLQkJLyogRG9uJ3Qg dXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAqLwotCX0K LQotCS8qCi0JICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0 aGUgVk0gb3IgaXQgaXMgYW5kIG5lZWRzCi0JICogdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVw ZGF0ZSB0aGUgVk0gTm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seQotCSAqIHZhbGlkIGlmIGFs bF92aXNpYmxlIGlzIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQK LQkgKiBhbGxfZnJvemVuLgorCSAqIEZvciB0aGUgcHVycG9zZXMgb2YgbG9nZ2luZywgY291bnQg d2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzIG5ld2x5CisJICogc2V0IGFsbC12aXNpYmxlIGFu ZCwgcG90ZW50aWFsbHksIGFsbC1mcm96ZW4uCiAJICovCi0JZWxzZSBpZiAocHJlc3VsdC5hbGxf dmlzaWJsZSAmJgotCQkJICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIHx8Ci0JCQkgIChw cmVzdWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAm dm1idWZmZXIpKSkpCisJaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFKSA9PSAwICYmCisJCShwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFKSAhPSAwKQogCXsKLQkJdWludDgJCW9sZF92bWJpdHM7Ci0JCXVpbnQ4CQlm bGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBh Z2UgaXMgYWxsLWZyb3plbiwgd2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMgb3Vy Ci0JCSAqIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmlj aWVudCB0byBtYWtlCi0JCSAqIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdo ZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZQotCQkgKiBmcm96ZW4uCi0JCSAqLwotCQlpZiAocHJl c3VsdC5hbGxfZnJvemVuKQotCQl7Ci0JCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHBy ZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9B TExfRlJPWkVOOwotCQl9Ci0KLQkJb2xkX3ZtYml0cyA9IGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xv Zyh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgcHJlc3Vs dC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJCQkgIGZsYWdzKTsKLQotCQkvKgotCQkg KiBFdmVuIGlmIHdlIGFyZSBvbmx5IHNldHRpbmcgdGhlIGFsbC1mcm96ZW4gYml0LCB0aGVyZSBp cyBhIHNtYWxsCi0JCSAqIGNoYW5jZSB0aGF0IHRoZSBWTSB3YXMgbW9kaWZpZWQgc29tZXRpbWUg YmV0d2VlbiBzZXR0aW5nCi0JCSAqIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hl Y2tpbmcgdGhlIHZpc2liaWxpdHkgZHVyaW5nCi0JCSAqIHBydW5pbmcuIENoZWNrIHRoZSByZXR1 cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyB0byBlbnN1cmUgdGhlCi0JCSAqIHZpc2liaWxpdHkgbWFw IGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgotCQkgKgotCQkgKiBJZiB0 aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4g aW4gdGhlCi0JCSAqIFZNLCBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCi0JCSAq LwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQot CQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0JCQlpZiAocHJlc3VsdC5h bGxfZnJvemVuKQotCQkJewotCQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2Vz Kys7Ci0JCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJCX0KLQkJfQotCQllbHNlIGlmICgo b2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgotCQkJCSBwcmVz dWx0LmFsbF9mcm96ZW4pCisJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKKwkJaWYg KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJ CXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOworCQkJdmFjcmVsLT52bV9uZXdf dmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKIAkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJCX0K IAl9CisJZWxzZSBpZiAoKHByZXN1bHQub2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTikgPT0gMCAmJgorCQkJIChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pICE9IDApCisJeworCQlBc3NlcnQoKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lC SUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApOworCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFn ZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKaW5kZXggMDg4Njg2N2ExNjEuLjUzNGE2M2FhYjMxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0y MzQsMjAgKzIzNCwyMSBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJ CXJlY2VudGx5X2RlYWRfdHVwbGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zy b3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkgKiBiaXRz IGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFmdGVyIHBy dW5pbmcuCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgdGhlIHN0YXR1 cyBvZiB0aGUgcGFnZSBhcyByZWZsZWN0ZWQKKwkgKiBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0 ZXIgcHJ1bmluZywgZnJlZXppbmcsIGFuZCBzZXR0aW5nIGFueSBwYWdlcworCSAqIGFsbC12aXNp YmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcC4KIAkgKgotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24g aXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiAgVGhlCi0JICog Y2FsbGVyIGNhbiB1c2UgaXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hlbiBzZXR0aW5nIHRo ZSBWTSBiaXRzLiAgSXQKLQkgKiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVz IChuZnJvemVuID4gMCksIGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2bV9jb25m bGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFn ZQorCSAqIChvbGRlciB0aGFuIE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBvbmx5IGJlIHZhbGlkIGlm IHdlIGRpZCBub3Qgc2V0IHRoZQorCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uCiAJICoK IAkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBp cyBzZXQuCiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlU cmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247Ci0JYm9vbAkJdm1fY29ycnVwdGlvbjsK Kwl1aW50OAkJb2xkX3ZtYml0czsKKwl1aW50OAkJbmV3X3ZtYml0czsKIAogCS8qCiAJICogV2hl dGhlciBvciBub3QgdGhlIHBhZ2UgbWFrZXMgcmVsIHRydW5jYXRpb24gdW5zYWZlLiAgVGhpcyBp cyBzZXQgdG8KLS0gCjIuMzQuMQoK --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0006-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Disposition: attachment; filename="v2-0006-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv055 RnJvbSA4NjY4NGQyYzMxYWIyZGEyNWQ3NDIwMjhmYWI1MDJlNjdjYzczNTQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAwNi8xMl0gVXNlIHhsX2hlYXBfcHJ1bmUgcmVjb3JkIGZvciBzZXR0aW5nIGVtcHR5 IHBhZ2VzCiBhbGwtdmlzaWJsZQoKQXMgcGFydCBvZiBhIHByb2plY3QgdG8gZWxpbWluYXRlIHhs X2hlYXBfdmlzaWJsZSByZWNvcmRzLCBlbGltaW5hdGUKdGhlaXIgdXNhZ2UgaW4gcGhhc2UgSSB2 YWN1dW0gb2YgZW1wdHkgcGFnZXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgIHwgMTQgKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YyB8IDU0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaCAgICAgICAgICB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygr KSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBk OWJhMGY5NmUzNC4uOTdlNTFmNzg4NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CkBAIC04MzYsNiArODM2LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRl c3RfeGlkX3JlbW92ZWQ7CiAKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24s IGJ1ZmZlciwKKwkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsIDAs IGZhbHNlLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIHRydWUsIHJlYXNv biwKQEAgLTIwNTEsNiArMjA1Miw5IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZy ZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIGNhc2UsIHZtYnVmZmVyIHNob3VsZCBhbHJl YWR5IGhhdmUgYmVlbiB1cGRhdGVkIGFuZCBtYXJrZWQgZGlydHkgYW5kIHNob3VsZAogICogc3Rp bGwgYmUgcGlubmVkIGFuZCBsb2NrZWQuCiAgKgorICogZm9yY2VfaGVhcF9mcGkgaW5kaWNhdGVz IHRoYXQgYSBmdWxsIHBhZ2UgaW1hZ2Ugb2YgdGhlIGhlYXAgYmxvY2sgc2hvdWxkIGJlCisgKiBm b3JjZWQuCisgKgogICogc2V0X3BkX2FsbF92aXMgaW5kaWNhdGVzIHRoYXQgd2Ugc2V0IFBEX0FM TF9WSVNJQkxFIGFuZCB0aHVzIHNob3VsZCB1cGRhdGUKICAqIHRoZSBwYWdlIExTTiB3aGVuIGNo ZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBlbmFibGVkIGV2ZW4gaWYgd2UgZGlkIG5vdAogICog cHJ1bmUgb3IgZnJlZXplIHR1cGxlcyBvbiB0aGUgcGFnZS4KQEAgLTIwNjEsNiArMjA2NSw3IEBA IGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxl cywKICAqLwogdm9pZAogbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCSAgYm9vbCBmb3JjZV9oZWFwX2ZwaSwKIAkJCQkJCSAg QnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJICB1aW50OCB2bWZsYWdzLAogCQkJCQkJICBib29sIHNl dF9wZF9hbGxfdmlzLApAQCAtMjA4OSwxMyArMjA5NCwxNiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXhscmVjLmZsYWdzID0g MDsKIAlyZWdidWZfZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7CiAKKwlpZiAoZm9yY2VfaGVhcF9m cGkpCisJCXJlZ2J1Zl9mbGFncyB8PSBSRUdCVUZfRk9SQ0VfSU1BR0U7CisKIAkvKgogCSAqIFdl IGNhbiBhdm9pZCBhbiBGUEkgaWYgdGhlIG9ubHkgbW9kaWZpY2F0aW9uIHdlIGFyZSBtYWtpbmcg dG8gdGhlIGhlYXAKIAkgKiBwYWdlIGlzIHRvIHNldCBQRF9BTExfVklTSUJMRSBhbmQgY2hlY2tz dW1zL3dhbF9sb2dfaGludHMgYXJlIGRpc2FibGVkLgogCSAqLwotCWlmICghZG9fcHJ1bmUgJiYK LQkJbmZyb3plbiA9PSAwICYmCi0JCSghc2V0X3BkX2FsbF92aXMgfHwgIVhMb2dIaW50Qml0SXNO ZWVkZWQoKSkpCisJZWxzZSBpZiAoIWRvX3BydW5lICYmCisJCQkgbmZyb3plbiA9PSAwICYmCisJ CQkgKCFzZXRfcGRfYWxsX3ZpcyB8fCAhWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKIAkJcmVnYnVm X2ZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKaW5kZXggNTZhY2IyMjRkNzEuLjY4YzhiMGY0NDc1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xODUwLDYgKzE4NTAsNyBAQCBsYXp5X3NjYW5fbmV3X29y X2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8s CiAKIAlpZiAoUGFnZUlzRW1wdHkocGFnZSkpCiAJeworCiAJCS8qCiAJCSAqIEl0IHNlZW1zIGxp a2VseSB0aGF0IGNhbGxlciB3aWxsIGFsd2F5cyBiZSBhYmxlIHRvIGdldCBhIGNsZWFudXAKIAkJ ICogbG9jayBvbiBhbiBlbXB0eSBwYWdlLiAgQnV0IGRvbid0IHRha2UgYW55IGNoYW5jZXMgLS0g ZXNjYWxhdGUgdG8KQEAgLTE4NzcsMzEgKzE4NzgsNDcgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0 eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkg Ki8KIAkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQl1aW50OCBuZXdfdm1i aXRzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJVklTSUJJTElUWU1BUF9BTExf RlJPWkVOOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAotCQkJLyoKLQkJCSAqIEl0J3Mg cG9zc2libGUgdGhhdCBhbm90aGVyIGJhY2tlbmQgaGFzIGV4dGVuZGVkIHRoZSBoZWFwLAotCQkJ ICogaW5pdGlhbGl6ZWQgdGhlIHBhZ2UsIGFuZCB0aGVuIGZhaWxlZCB0byBXQUwtbG9nIHRoZSBw YWdlIGR1ZQotCQkJICogdG8gYW4gRVJST1IuICBTaW5jZSBoZWFwIGV4dGVuc2lvbiBpcyBub3Qg V0FMLWxvZ2dlZCwgcmVjb3ZlcnkKLQkJCSAqIG1pZ2h0IHRyeSB0byByZXBsYXkgb3VyIHJlY29y ZCBzZXR0aW5nIHRoZSBwYWdlIGFsbC12aXNpYmxlIGFuZAotCQkJICogZmluZCB0aGF0IHRoZSBw YWdlIGlzbid0IGluaXRpYWxpemVkLCB3aGljaCB3aWxsIGNhdXNlIGEgUEFOSUMuCi0JCQkgKiBU byBwcmV2ZW50IHRoYXQsIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcHJldmlvdXNs eQotCQkJICogV0FMLWxvZ2dlZCwgYW5kIGlmIG5vdCwgZG8gdGhhdCBub3cuCi0JCQkgKi8KLQkJ CWlmIChSZWxhdGlvbk5lZWRzV0FMKHZhY3JlbC0+cmVsKSAmJgotCQkJCVBhZ2VHZXRMU04ocGFn ZSkgPT0gSW52YWxpZFhMb2dSZWNQdHIpCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpOworCQkJaGVhcF9wYWdlX3NldF92bSh2YWNyZWwtPnJlbCwgYmxrbm8s IGJ1ZiwKKwkJCQkJCQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1iaXRzKTsKKworCQkJLyogU2hvdWxk IGhhdmUgc2V0IFBEX0FMTF9WSVNJQkxFIGFuZCBtYXJrZWQgYnVmIGRpcnR5ICovCisJCQlBc3Nl cnQoQnVmZmVySXNEaXJ0eShidWYpKTsKKworCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwodmFjcmVs LT5yZWwpKQogCQkJewotCQkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQkJCWxvZ19uZXdwYWdl X2J1ZmZlcihidWYsIHRydWUpOworCQkJCS8qCisJCQkJICogSXQncyBwb3NzaWJsZSB0aGF0IGFu b3RoZXIgYmFja2VuZCBoYXMgZXh0ZW5kZWQgdGhlIGhlYXAsCisJCQkJICogaW5pdGlhbGl6ZWQg dGhlIHBhZ2UsIGFuZCB0aGVuIGZhaWxlZCB0byBXQUwtbG9nIHRoZSBwYWdlCisJCQkJICogZHVl IHRvIGFuIEVSUk9SLiAgU2luY2UgaGVhcCBleHRlbnNpb24gaXMgbm90IFdBTC1sb2dnZWQsCisJ CQkJICogcmVjb3ZlcnkgbWlnaHQgdHJ5IHRvIHJlcGxheSBvdXIgcmVjb3JkIHNldHRpbmcgdGhl IHBhZ2UKKwkJCQkgKiBhbGwtdmlzaWJsZSBhbmQgZmluZCB0aGF0IHRoZSBwYWdlIGlzbid0IGlu aXRpYWxpemVkLCB3aGljaAorCQkJCSAqIHdpbGwgY2F1c2UgYSBQQU5JQy4gVG8gcHJldmVudCB0 aGF0LCBpZiB0aGUgcGFnZSBoYXNuJ3QKKwkJCQkgKiBiZWVuIHByZXZpb3VzbHkgV0FMLWxvZ2dl ZCwgZm9yY2UgYSBoZWFwIEZQSS4KKwkJCQkgKi8KKwkJCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJl ZXplKHZhY3JlbC0+cmVsLCBidWYsCisJCQkJCQkJCQkJICBQYWdlR2V0TFNOKHBhZ2UpID09IElu dmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBuZXdf dm1iaXRzLAorCQkJCQkJCQkJCSAgdHJ1ZSwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlv bklkLAorCQkJCQkJCQkJCSAgZmFsc2UsIFBSVU5FX1ZBQ1VVTV9TQ0FOLAorCQkJCQkJCQkJCSAg TlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJ CQkJCQkJCSAgTlVMTCwgMCk7CiAJCQl9CiAKLQkJCWhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyh2 YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSB2bWJ1ZmZlciwgSW52YWxpZFRyYW5z YWN0aW9uSWQsCi0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJ CQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKIAkJCUVORF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogQ291bnQgdGhlIG5ld2x5IGFsbC1mcm96ZW4gcGFnZXMgZm9yIGxvZ2dpbmcgKi8KKwkJ CUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKKwkJCS8qIENvdW50 IHRoZSBuZXdseSBhbGwtZnJvemVuIHBhZ2VzIGZvciBsb2dnaW5nLiAqLwogCQkJdmFjcmVsLT52 bV9uZXdfdmlzaWJsZV9wYWdlcysrOwogCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5f cGFnZXMrKzsKIAkJfQpAQCAtMjg4Miw2ICsyODk5LDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdl KExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJ aWYgKFJlbGF0aW9uTmVlZHNXQUwodmFjcmVsLT5yZWwpKQogCXsKIAkJbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAorCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJ CQkgIHZtYnVmZmVyLAogCQkJCQkJCQkgIHZtZmxhZ3MsCiAJCQkJCQkJCSAgc2V0X3BkX2FsbF92 aXMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggZDJhYzM4MGJiNjQuLjFmYTZlYjA0N2ZkIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCkBAIC0zOTksNiArMzk5LDcgQEAgZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5l X2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQkJCQkJCQkJ T2Zmc2V0TnVtYmVyICpub3d1bnVzZWQsIGludCBudW51c2VkKTsKIGV4dGVybiB2b2lkIGhlYXBf Z2V0X3Jvb3RfdHVwbGVzKFBhZ2UgcGFnZSwgT2Zmc2V0TnVtYmVyICpyb290X29mZnNldHMpOwog ZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJCSAgYm9vbCBmb3JjZV9oZWFwX2ZwaSwKIAkJCQkJCQkJ CSAgQnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJCQkJICB1aW50OCB2bWZsYWdzLAogCQkJCQkJCQkJ ICBib29sIHZtX21vZGlmaWVkX2hlYXBfcGFnZSwKLS0gCjIuMzQuMQoK --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0011-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Disposition: attachment; filename="v2-0011-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv0c10 RnJvbSAwYWEyZjkzZmYxMWEyN2MyMWY4NTczMjZlOTBjODEzZTc2NWVjYWRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQxOjAwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAxMS8xMl0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJCiBwcnVuZS9mcmVlemUKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSBXQUwgcmVj b3JkIGZvciBldmVyeSBibG9jayByZW5kZXJlZAphbGwtdmlzaWJsZS9mcm96ZW4gYnkgdmFjdXVt J3MgcGhhc2UgSSwgaW5jbHVkZSB0aGUgY2hhbmdlcyB0byB0aGUgVk0gaW4KdGhlIHhsX2hlYXBf cHJ1bmUgcmVjb3JkIGFscmVhZHkgZW1pdHRlZC4KClRoaXMgaXMgb25seSBlbmFibGVkIGZvciB2 YWN1dW0ncyBwcnVuZS9mcmVlemUgd29yaywgbm90IGZvciBvbi1hY2Nlc3MKcHJ1bmluZy4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAzODQgKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAg MzAgLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAgMTUgKy0KIDMg ZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlvbnMoKyksIDIwNiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDQyNWRjYzc3NTM0Li4yZDk2MjRhMjQ2ZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQ0LDYgKzQ0LDEzIEBAIHR5cGVk ZWYgc3RydWN0CiAJYm9vbAkJbWFya191bnVzZWRfbm93OwogCS8qIHdoZXRoZXIgdG8gYXR0ZW1w dCBmcmVlemluZyB0dXBsZXMgKi8KIAlib29sCQlmcmVlemU7CisKKwkvKgorCSAqIFdoZXRoZXIg b3Igbm90IHRvIGNvbnNpZGVyIHVwZGF0aW5nIHRoZSBWTS4gVGhlcmUgaXMgc29tZSBib29ra2Vl cGluZworCSAqIHRoYXQgbXVzdCBiZSBtYWludGFpbmVkIGlmIHdlIHdvdWxkIGxpa2UgdG8gdXBk YXRlIHRoZSBWTS4KKwkgKi8KKwlib29sCQl1cGRhdGVfdm07CisKIAlzdHJ1Y3QgVmFjdXVtQ3V0 b2ZmcyAqY3V0b2ZmczsKIAogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTA4LDggKzExNSw5IEBAIHR5cGVkZWYgc3RydWN0CiAJ ICoKIAkgKiBUaGVzZSBmaWVsZHMgYXJlIG5vdCB1c2VkIGJ5IHBydW5pbmcgaXRzZWxmIGZvciB0 aGUgbW9zdCBwYXJ0LCBidXQgYXJlCiAJICogdXNlZCB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFi b3V0IHdoYXQgd2FzIHBydW5lZCBhbmQgd2hhdCBzdGF0ZSB0aGUKLQkgKiBwYWdlIGlzIGluIGFm dGVyIHBydW5pbmcsIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgY2FsbGVyLiAgVGhleSBhcmUKLQkg KiBjb3BpZWQgdG8gdGhlIGNhbGxlcidzIFBydW5lRnJlZXplUmVzdWx0IGF0IHRoZSBlbmQuCisJ ICogcGFnZSBpcyBpbiBhZnRlciBwcnVuaW5nIHRvIHVzZSB3aGVuIHVwZGF0aW5nIHRoZSB2aXNp YmlsaXR5IG1hcCBhbmQKKwkgKiBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIGNhbGxlci4gIFRoZXkg YXJlIGNvcGllZCB0byB0aGUgY2FsbGVyJ3MKKwkgKiBQcnVuZUZyZWV6ZVJlc3VsdCBhdCB0aGUg ZW5kLgogCSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIAkgKi8KIApAQCAtMTM4LDExICsxNDYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkg KiBiaXRzLiAgSXQgaXMgb25seSB2YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcywgYW5kIGFs bF9mcm96ZW4gaXMKIAkgKiB0cnVlLgogCSAqCi0JICogTk9URTogYWxsX3Zpc2libGUgYW5kIGFs bF9mcm96ZW4gZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zLiAgVGhhdCdzCi0JICogY29udmVu aWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSwgdG8gdXNlIHRoZW0gdG8gZGVj aWRlCi0JICogd2hldGhlciB0byBmcmVlemUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlIGFsbF92aXNp YmxlIGFuZCBhbGxfZnJvemVuCi0JICogdmFsdWVzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgYXJl IGFkanVzdGVkIHRvIGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhdAotCSAqIHRoZSBlbmQuCisJICog Tk9URTogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0 ZW1zIHVudGlsCisJICogZGlyZWN0bHkgYmVmb3JlIHVwZGF0aW5nIHRoZSBWTS4gV2UgaWdub3Jl IExQX0RFQUQgaXRlbXMgd2hlbiBkZWNpZGluZworCSAqIHdoZXRoZXIgb3Igbm90IHRvIG9wcG9y dHVuaXN0aWNhbGx5IGZyZWV6ZSBhbmQgd2hlbiBkZXRlcm1pbmluZyB0aGUKKwkgKiBzbmFwc2hv dCBjb25mbGljdCBob3Jpem9uIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcgdHVwbGVzLgogCSAqCiAJ ICogYWxsX2Zyb3plbiBzaG91bGQgb25seSBiZSBjb25zaWRlcmVkIHZhbGlkIGlmIGFsbF92aXNp YmxlIGlzIGFsc28gc2V0OwogCSAqIHdlIGRvbid0IGJvdGhlciB0byBjbGVhciB0aGUgYWxsX2Zy b3plbiBmbGFnIGV2ZXJ5IHRpbWUgd2UgY2xlYXIgdGhlCkBAIC0zNzcsMTEgKzM4NCwxNSBAQCBp ZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCiAgKiBjb25z aWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8g c28gbm93LiAgVGhlCiAgKiAnY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlk JyBhbmQgJ25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzCiAgKiBhcmUgcmVxdWlyZWQgd2hlbiBm cmVlemluZy4gIFdoZW4gSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldCwgd2UgYWxzbwot ICogc2V0IHByZXN1bHQtPmFsbF92aXNpYmxlIGFuZCBwcmVzdWx0LT5hbGxfZnJvemVuIG9uIGV4 aXQsIHRvIGluZGljYXRlIGlmCi0gKiB0aGUgVk0gYml0cyBjYW4gYmUgc2V0LiAgVGhleSBhcmUg YWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZQotICogSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIG5vdCBzZXQsIGJlY2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMKKyAqIHNldCBw cmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBvbiBleGl0LCBmb3Ig dXNlIHdoZW4KKyAqIHZhbGlkYXRpbmcgdGhlIGNoYW5nZXMgbWFkZSB0byB0aGUgVk0uIFRoZXkg YXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbgorICogdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9w dGlvbiBpcyBub3Qgc2V0LCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxsZXJzCiAgKiB0 aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCisgKiBJZiBIRUFQX1BB R0VfUFJVTkVfVVBEQVRFX1ZNIGlzIHNldCBhbmQgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRo ZSBwYWdlCisgKiBoYXMgY2hhbmdlZCwgd2Ugd2lsbCB1cGRhdGUgdGhlIFZNIGF0IHRoZSBzYW1l IHRpbWUgYXMgcHJ1bmluZyBhbmQgZnJlZXppbmcKKyAqIHRoZSBoZWFwIHBhZ2UuCisgKgogICog YmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBibG9jayBh cyBvZiB0aGUgbGFzdCBjYWxsCiAgKiB0byBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soKS4g dm1idWZmZXIgaXMgdGhlIGJ1ZmZlciB0aGF0IG1heSBhbHJlYWR5CiAgKiBjb250YWluIHRoZSBy ZXF1aXJlZCBibG9jayBvZiB0aGUgdmlzaWJpbGl0eSBtYXAuCkBAIC0zOTYsNiArNDA3LDggQEAg aWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogICogICBG UkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxs IHJldHVybgogICogICAnYWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNh bGxlci4KICAqCisgKiAgIFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUg cGFnZSdzIHN0YXR1cyBpbiB0aGUgVk0uCisgKgogICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJl ZXplIGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCiAgKiBv ZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUg b3B0aW9uIGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRl dGVybWluZSBpZiBkZWFkIHR1cGxlcyBhcmUKQEAgLTQ0MSwxNSArNDU0LDE5IEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWJv b2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKIAlib29sCQlkb19oaW50OworCWJvb2wJ CWRvX3NldF92bTsKIAl1aW50OAkJdm1mbGFncyA9IDA7CiAJdWludDgJCW9sZF92bWJpdHMgPSAw OwogCWJvb2wJCWhpbnRfYml0X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uu d2FsX2ZwaTsKKwlib29sCQlhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gZmFsc2U7CisJYm9v bAkJc2V0X3BkX2FsbF92aXNpYmxlID0gZmFsc2U7CiAKIAkvKiBDb3B5IHBhcmFtZXRlcnMgdG8g cHJzdGF0ZSAqLwogCXByc3RhdGUudmlzdGVzdCA9IHZpc3Rlc3Q7CiAJcHJzdGF0ZS5tYXJrX3Vu dXNlZF9ub3cgPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cpICE9 IDA7CiAJcHJzdGF0ZS5mcmVlemUgPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUp ICE9IDA7CisJcHJzdGF0ZS51cGRhdGVfdm0gPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9V UERBVEVfVk0pICE9IDA7CiAJcHJzdGF0ZS5jdXRvZmZzID0gY3V0b2ZmczsKIAogCS8qCkBAIC00 OTYsMjkgKzUxMywyNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlwcnN0YXRlLmRlYWRvZmZzZXRzID0gcHJlc3VsdC0+ZGVh ZG9mZnNldHM7CiAKIAkvKgotCSAqIENhbGxlciBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdy ZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRoZSBwYWdlIHdpbGwg YmUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBhbmQKLQkgKiBmcmVl emluZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKwkgKiBLZWVwIHRyYWNrIG9mIHdo ZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgYW5kCisJICogYWxsLWZy b3plbiBmb3IgdXNlIGluIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgYW5kIHRvIHVwZGF0ZSB0aGUg Vk0gaWYKKwkgKiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgorCSAqCisJICogQ3VycmVudGx5LCBv bmx5IFZBQ1VVTSBhdHRlbXB0cyBmcmVlemluZyBhbmQgc2V0dGluZyB0aGUgVk0gYml0cy4gQnV0 CisJICogb3RoZXIgY2FsbGVycyBjb3VsZCBkbyBlaXRoZXIgb25lLiBUaGUgdmlzaWJpbGl0eSBi b29ra2VlcGluZyBpcworCSAqIHJlcXVpcmVkIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIChp biBhZGRpdGlvbiB0byBzZXR0aW5nIHRoZSBWTQorCSAqIGJpdHMpIGJlY2F1c2Ugd2Ugb25seSBj b25zaWRlciBvcHBvcnR1bmlzdGljYWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlCisJICogd2hv bGUgcGFnZSB3b3VsZCBiZWNvbWUgYWxsLWZyb3plbiBvciBpZiB0aGUgd2hvbGUgcGFnZSB3aWxs IGJlIGZyb3plbgorCSAqIGV4Y2VwdCBmb3IgZGVhZCB0dXBsZXMgdGhhdCB3aWxsIGJlIHJlbW92 ZWQgYnkgdmFjdXVtLgogCSAqCi0JICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBzZXRzIHRoZSBW TSBiaXRzLiAgVG8gc2F2ZSB0aGUgZWZmb3J0LCBvbmx5IGRvCi0JICogdGhlIGJvb2trZWVwaW5n IGlmIHRoZSBjYWxsZXIgbmVlZHMgaXQuICBDdXJyZW50bHksIHRoYXQncyB0aWVkIHRvCi0JICog SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwgYnV0IGl0IGNvdWxkIGJlIGEgc2VwYXJhdGUgZmxhZyBp ZiB5b3Ugd2FudGVkCi0JICogdG8gdXBkYXRlIHRoZSBWTSBiaXRzIHdpdGhvdXQgYWxzbyBmcmVl emluZyBvciBmcmVlemUgd2l0aG91dCBhbHNvCi0JICogc2V0dGluZyB0aGUgVk0gYml0cy4KKwkg KiBEZWFkIHR1cGxlcyB3aGljaCB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1p bmcgc2hvdWxkIG5vdAorCSAqIHByZWNsdWRlIHVzIGZyb20gb3Bwb3J0dW5pc3RpY2FsbHkgZnJl ZXppbmcsIHNvIHdlIGRvIG5vdCBjbGVhcgorCSAqIGFsbF92aXNpYmxlIHdoZW4gd2Ugc2VlIExQ X0RFQUQgaXRlbXMuIFdlIGZpeCB0aGF0IGFmdGVyIGRldGVybWluaW5nCisJICogd2hldGhlciBv ciBub3QgdG8gZnJlZXplIGJ1dCBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciBvciBub3QgdG8gdXBk YXRlCisJICogdGhlIFZNIHNvIHRoYXQgd2UgZG9uJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0 bHkuCiAJICoKLQkgKiBJbiBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxsZXIgd2hldGhlciBp dCBjYW4gc2V0IHRoZSBWTSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92aXNpYmxlJyBhbmQg J2FsbF9mcm96ZW4nIGZvciBvdXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYKLQkgKiB0aGUgd2hv bGUgcGFnZSB3b3VsZCBiZWNvbWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBvcnR1bmlzdGljYWxs eQotCSAqIGZyZWV6aW5nIHR1cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUgdG8gZnJlZXplIHRo ZSB3aG9sZSBwYWdlIGlmIHRoZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5v dCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRlYWQgdHVwbGVzIHdo aWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCi0J ICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJl Y2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBv ZiB0aGF0LCB3ZSBkbyBub3QgY2xlYXIKLQkgKiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9E RUFEIGl0ZW1zLiAgV2UgZml4IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUKLQkgKiBmdW5jdGlvbiwg d2hlbiB3ZSByZXR1cm4gdGhlIHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxl cgotCSAqIGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCisJICogSWYgbm90IGZy ZWV6aW5nIG9yIHVwZGF0aW5nIHRoZSBWTSwgd2Ugb3RoZXJ3aXNlIGF2b2lkIHRoZSBleHRyYQor CSAqIGJvb2trZWVwaW5nLgogCSAqLwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0 ZS5mcmVlemUgfHwgcHJzdGF0ZS51cGRhdGVfdm0pCiAJewogCQlwcnN0YXRlLmFsbF92aXNpYmxl ID0gdHJ1ZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gdHJ1ZTsKQEAgLTUzNCwxMiArNTQ5LDE1 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIg YnVmZmVyLAogCX0KIAogCS8qCi0JICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUg bmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlCi0JICogcGFnZS4gIEluIHRoZSBjb21t b24gY2FzZSwgdGhpcyB3aWxsIGJlIHNldCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB0aGUKLQkg KiBjYWxsZXIgY2FuIHVzZSBmb3IgdXBkYXRpbmcgdGhlIFZNLiAgSWYsIGF0IHRoZSBlbmQgb2Yg ZnJlZXppbmcgYW5kCi0JICogcHJ1bmluZywgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgdGhlcmUg aXMgbm8gcG9zc2liaWxpdHkgdGhhdCBhbnkKLQkgKiBydW5uaW5nIHRyYW5zYWN0aW9uIG9uIHRo ZSBzdGFuZGJ5IGRvZXMgbm90IHNlZSB0dXBsZXMgb24gdGhlIHBhZ2UgYXMKLQkgKiBhbGwtdmlz aWJsZSwgc28gdGhlIGNvbmZsaWN0IGhvcml6b24gcmVtYWlucyBJbnZhbGlkVHJhbnNhY3Rpb25J ZC4KKwkgKiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBs aXZlLCBjb21taXR0ZWQgdHVwbGVzCisJICogb2xkZXIgdGhhbiBPbGRlc3RYbWluIG9uIHRoZSBw YWdlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlCisJICogaWYgdGhlIHBhZ2Ug aXMgYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlz CisJICogbm90IHZpc2libGUgdG8gYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMg bG9uZyBhcyBpdCBpcworCSAqIG1haW50YWluZWQsIGl0IGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0 ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbi4KKwkgKiBUaGlzIGlzIG1vc3QgbGlrZWx5 IHRvIGhhcHBlbiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsCisJICog bGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuIEl0IGlzIHVwZGF0ZWQgYmVmb3JlIHJldHVybmluZyB0 byB0aGUgY2FsbGVyCisJICogYmVjYXVzZSB2YWN1dW0gZG9lcyBhc3NlcnQtYnVpbGQgb25seSB2 YWxpZGF0aW9uIG9uIHRoZSBwYWdlIHVzaW5nIHRoaXMKKwkgKiBmaWVsZC4KIAkgKi8KIAlwcnN0 YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCkBAIC04 MjcsNiArODQ1LDY4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkgKi8KIAl9CiAKKwkvKgorCSAqIEl0IHdhcyBjb252ZW5p ZW50IHRvIGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxlIGVhcmxpZXIgb24gdG8K KwkgKiBtYWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdl IHVuYWZmZWN0ZWQgYnkgdGhlCisJICogc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0 ZW1zLiAgVGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJlCisJICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0 byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKKwkgKiBtYXR0 ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVu ZHMgdXAKKwkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9u Z29pbmcgVkFDVVVNIGRvZXMgaXQuCisJICoKKwkgKiBOb3cgdGhhdCBmcmVlemluZyBoYXMgYmVl biBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFyZQorCSAqIGFueSBMUF9E RUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiBJdCBuZWVkcyB0byByZWZsZWN0IHRoZSBwcmVzZW50IHN0 YXRlIG9mCisJICogdGhlIHBhZ2Ugd2hlbiB1c2luZyBpdCB0byBkZXRlcm1pbmUgd2hldGhlciBv ciBub3QgdG8gdXBkYXRlIHRoZSBWTS4KKwkgKgorCSAqIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBv ciBub3QgdGhlIHBhZ2Ugd2FzIGFsbC1mcm96ZW4gZXhjZXB0IExQX0RFQUQKKwkgKiBpdGVtcyBm b3IgdGhlIHB1cnBvc2VzIG9mIGNhbGN1bGF0aW5nIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jp em9uLAorCSAqIHRob3VnaC4KKwkgKi8KKwlhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gcHJz dGF0ZS5hbGxfZnJvemVuOworCWlmIChwcnN0YXRlLmxwZGVhZF9pdGVtcyA+IDApCisJeworCQlw cnN0YXRlLmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNl OworCX0KKworCS8qCisJICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2Vk IG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcworCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nh bl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAorCSAqIGFsbF9m cm96ZW4gdmFyaWFibGVzLgorCSAqLworCWlmIChwcnN0YXRlLnVwZGF0ZV92bSkKKwl7CisJCS8q CisJCSAqIENsZWFyIGFueSBWTSBjb3JydXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUg aW4gYSBjcml0aWNhbAorCQkgKiBzZWN0aW9uLCBzbyB3ZSBkbyBpdCBmaXJzdC4gSWYgUERfQUxM X1ZJU0lCTEUgaXMgaW5jb3JyZWN0bHkgc2V0LAorCQkgKiB3ZSBtYXkgbWFyayB0aGUgaGVhcCBw YWdlIGJ1ZmZlciBkaXJ0eSBoZXJlIGFuZCBjb3VsZCBlbmQgdXAgZG9pbmcKKwkJICogc28gYWdh aW4gbGF0ZXIuIFRoaXMgaXMgbm90IGEgY29ycmVjdG5lc3MgaXNzdWUgYW5kIGlzIGluIHRoZSBw YXRoCisJCSAqIG9mIFZNIGNvcnJ1cHRpb24sIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJv dXQgdGhlIGV4dHJhCisJCSAqIHBlcmZvcm1hbmNlIG92ZXJoZWFkLgorCQkgKi8KKwkJaWYgKGlk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBibG9j a25vLCBidWZmZXIsIHBhZ2UsCisJCQkJCQkJCQkJICAgYmxrX2tub3duX2F2LCBwcnN0YXRlLmxw ZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCQl7CisJCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwg ZG9uJ3QgdXBkYXRlIHRoZSBWTSBmdXJ0aGVyICovCisJCX0KKworCQkvKiBEZXRlcm1pbmUgaWYg d2UgYWN0dWFsbHkgbmVlZCB0byBzZXQgdGhlIFZNIGFuZCB3aGljaCBiaXRzIHRvIHNldC4gKi8K KwkJZWxzZSBpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgorCQkJCSAoIWJsa19rbm93bl9hdiB8 fAorCQkJCSAgKHByc3RhdGUuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwg YmxvY2tubywgJnZtYnVmZmVyKSkpKQorCQl7CisJCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEU7CisJCQlpZiAocHJzdGF0ZS5hbGxfZnJvemVuKQorCQkJCXZtZmxhZ3MgfD0g VklTSUJJTElUWU1BUF9BTExfRlJPWkVOOworCQl9CisJfQorCisJZG9fc2V0X3ZtID0gdm1mbGFn cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKKwlzZXRfcGRfYWxsX3Zpc2libGUgPSBkb19z ZXRfdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSk7CisKKwkvKiBTYXZlIHRoZXNlIGZvciB0 aGUgY2FsbGVyIGluIGNhc2Ugd2UgbGF0ZXIgemVybyBvdXQgdm1mbGFncyAqLworCXByZXN1bHQt Pm5ld192bWJpdHMgPSB2bWZsYWdzOworCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRo ZSBjaGFuZ2VzIGlzIGNyaXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKQEAgLTg0 OCwxMyArOTI4LDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkvKgogCQkgKiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBk byB0byB0aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2VkCiAJCSAqIGhpbnQuICBJZiB3 ZSBhcmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lIHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJ ICogdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICogdGhlIGJ1ZmZlciBkaXJ0eSBhbmQgZW1p dCBXQUwgYmVsb3cuCiAJCSAqLwotCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUpCisJCWlm ICghZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJiAhZG9fc2V0X3ZtKQogCQkJTWFya0J1ZmZlckRp cnR5SGludChidWZmZXIsIHRydWUpOwogCX0KIAotCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUp CisJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pCiAJewogCQkvKiBBcHBs eSB0aGUgcGxhbm5lZCBpdGVtIGNoYW5nZXMgYW5kIHJlcGFpciBwYWdlIGZyYWdtZW50YXRpb24u ICovCiAJCWlmIChkb19wcnVuZSkKQEAgLTg2OCw3ICs5NDgsMjMgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCWlmIChkb19m cmVlemUpCiAJCQloZWFwX2ZyZWV6ZV9wcmVwYXJlZF90dXBsZXMoYnVmZmVyLCBwcnN0YXRlLmZy b3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKIAotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJ aWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSkKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwor CisJCWlmIChkb19zZXRfdm0pCisJCXsKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9M T0NLX0VYQ0xVU0lWRSk7CisJCQlvbGRfdm1iaXRzID0gaGVhcF9wYWdlX3NldF92bShyZWxhdGlv biwgYmxvY2tubywgYnVmZmVyLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsIHZtZmxhZ3MpOworCisJ CQlpZiAob2xkX3ZtYml0cyA9PSB2bWZsYWdzKQorCQkJeworCQkJCUxvY2tCdWZmZXIodm1idWZm ZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQkJZG9fc2V0X3ZtID0gZmFsc2U7CisJCQkJLyog MCBvdXQgdm1mbGFncyBzbyB3ZSBkb24ndCBlbWl0IFZNIHVwZGF0ZSBXQUwgKi8KKwkJCQl2bWZs YWdzID0gMDsKKwkJCX0KKwkJfQogCiAJCS8qCiAJCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9Q UlVORV9GUkVFWkUgcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKQEAgLTg4NSwzNSArOTgxLDU3 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIg YnVmZmVyLAogCQkJICogb24gdGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlIHlv dW5nZXN0IHR1cGxlIHRoaXMKIAkJCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0 LgogCQkJICovCi0JCQlUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7Ci0JCQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKKwkJCVRyYW5z YWN0aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKKwkJCS8qCisJ CQkgKiBJZiB3ZSBhcmUgdXBkYXRpbmcgdGhlIFZNLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBh bG1vc3QKKwkJCSAqIGFsd2F5cyB0aGUgdmlzaWJpbGl0eSBjdXRvZmYgWElELgorCQkJICoKKwkJ CSAqIFNlcGFyYXRlbHksIGlmIHdlIGFyZSBmcmVlemluZyBhbnkgdHVwbGVzLCBhcyBhbiBvcHRp bWl6YXRpb24sCisJCQkgKiB3ZSBjYW4gdXNlIHRoZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgYXMg dGhlIGNvbmZsaWN0IGhvcml6b24gaWYKKwkJCSAqIHRoZSBwYWdlIHdpbGwgYmUgYWxsLWZyb3pl bi4gVGhpcyBpcyB0cnVlIGV2ZW4gaWYgdGhlcmUgYXJlCisJCQkgKiBMUF9ERUFEIGxpbmUgcG9p bnRlcnMgYmVjYXVzZSB3ZSBpZ25vcmVkIHRob3NlIHdoZW4gbWFpbnRhaW5pbmcKKwkJCSAqIHRo ZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQuCisJCQkgKi8KKwkJCWlmIChkb19zZXRfdm0gfHwgKGRv X2ZyZWV6ZSAmJiBhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkKSkKKwkJCQljb25mbGljdF94aWQg PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKIAogCQkJLyoKLQkJCSAqIFdlIGNhbiB1 c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmIGZvcgotCQkJICogY29u ZmxpY3RzIHdoZW4gdGhlIHdob2xlIHBhZ2UgaXMgZWxpZ2libGUgdG8gYmVjb21lIGFsbC1mcm96 ZW4KLQkJCSAqIGluIHRoZSBWTSBvbmNlIHdlJ3JlIGRvbmUgd2l0aCBpdC4gIE90aGVyd2lzZSB3 ZSBnZW5lcmF0ZSBhCi0JCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJhY2sg ZnJvbSBPbGRlc3RYbWluLgorCQkJICogT3RoZXJ3aXNlLCBpZiB3ZSBhcmUgZnJlZXppbmcgYnV0 IHRoZSBwYWdlIHdvdWxkIG5vdCBiZQorCQkJICogYWxsLWZyb3plbiwgd2UgaGF2ZSB0byB1c2Ug dGhlIG1vcmUgcGVzc2ltaXN0aWMgaG9yaXpvbiBvZgorCQkJICogT2xkZXN0WG1pbiwgd2hpY2gg bWF5IGJlIG5ld2VyIHRoYW4gdGhlIG5ld2VzdCB0dXBsZSB3ZSBmcm96ZS4KKwkJCSAqIFRoYXQn cyBiZWNhdXNlIHdlIHdvbid0IGhhdmUgbWFpbnRhaW5lZCB0aGUKKwkJCSAqIHZpc2liaWxpdHlf Y3V0b2ZmX3hpZC4KIAkJCSAqLwotCQkJaWYgKGRvX2ZyZWV6ZSkKKwkJCWVsc2UgaWYgKGRvX2Zy ZWV6ZSkKIAkJCXsKLQkJCQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmFsbF9m cm96ZW4pCi0JCQkJCWZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1 dG9mZl94aWQ7Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJLyogQXZvaWRzIGZhbHNlIGNvbmZsaWN0 cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGluIHVzZSAqLwotCQkJCQlmcnpfY29uZmxpY3Rf aG9yaXpvbiA9IHByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbjsKLQkJCQkJVHJhbnNhY3Rpb25J ZFJldHJlYXQoZnJ6X2NvbmZsaWN0X2hvcml6b24pOwotCQkJCX0KKwkJCQljb25mbGljdF94aWQg PSBwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW47CisJCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQo Y29uZmxpY3RfeGlkKTsKIAkJCX0KIAotCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGZyel9j b25mbGljdF9ob3Jpem9uLCBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxp Y3RfeGlkID0gZnJ6X2NvbmZsaWN0X2hvcml6b247Ci0JCQllbHNlCisJCQkvKgorCQkJICogSWYg d2UgYXJlIHJlbW92aW5nIHR1cGxlcyB3aXRoIGEgeW91bmdlciB4bWF4IHRoYW4gb3VyIHNvIGZh cgorCQkJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3Vy IGhvcml6b24uCisJCQkgKi8KKwkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyhwcnN0YXRlLmxh dGVzdF94aWRfcmVtb3ZlZCwgY29uZmxpY3RfeGlkKSkKIAkJCQljb25mbGljdF94aWQgPSBwcnN0 YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKIAorCQkJLyoKKwkJCSAqIFdlIGNhbiBvbWl0IHRoZSBz bmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGlmIHdlIGFyZSBub3QgcHJ1bmluZworCQkJICogb3Ig ZnJlZXppbmcgYW55IHR1cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJs ZQorCQkJICogcGFnZSBhbGwtZnJvemVuIGluIHRoZSBWTS4gSW4gdGhpcyBjYXNlLCBhbGwgb2Yg dGhlIHR1cGxlcyBvbgorCQkJICogdGhlIHBhZ2UgbXVzdCBhbHJlYWR5IGJlIHZpc2libGUgdG8g YWxsIE1WQ0Mgc25hcHNob3RzIG9uIHRoZQorCQkJICogc3RhbmRieS4KKwkJCSAqLworCQkJaWYg KCFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmIGRvX3NldF92bSAmJgorCQkJCWJsa19rbm93bl9h diAmJiAodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikpCisJCQkJY29uZmxpY3Rf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVl emUocmVsYXRpb24sIGJ1ZmZlciwKIAkJCQkJCQkJCSAgZmFsc2UsCi0JCQkJCQkJCQkgIEludmFs aWRCdWZmZXIsIDAsIGZhbHNlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgdm1m bGFncywKKwkJCQkJCQkJCSAgc2V0X3BkX2FsbF92aXNpYmxlLAogCQkJCQkJCQkJICBjb25mbGlj dF94aWQsCiAJCQkJCQkJCQkgIHRydWUsIHJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5mcm96 ZW4sIHByc3RhdGUubmZyb3plbiwKQEAgLTkyNSwxMjQgKzEwNDMsNTUgQEAgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAlFTkRf Q1JJVF9TRUNUSU9OKCk7CiAKLQkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxlciAq LwotCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKLQlwcmVzdWx0LT5ubmV3 bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKLQlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJv emVuOwotCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKLQlwcmVz dWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7 Ci0KLQkvKgotCSAqIEl0IHdhcyBjb252ZW5pZW50IHRvIGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGlu IGFsbF92aXNpYmxlIGVhcmxpZXIgb24gdG8KLQkgKiBtYWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhl ciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHVuYWZmZWN0ZWQgYnkgdGhlCi0JICogc2hvcnQt dGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJl Ci0JICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1h a2luZy4gIEl0IGRvZXNuJ3QKLQkgKiBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5p dGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVuZHMgdXAKLQkgKiBzZXR0aW5nIHRoZSBwYWdlIGFs bC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMgaXQuCi0JICoKLQkg KiBOb3cgdGhhdCBmcmVlemluZyBoYXMgYmVlbiBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxl IGlmIHRoZXJlIGFyZQotCSAqIGFueSBMUF9ERUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiAgSXQgbmVl ZHMgdG8gcmVmbGVjdCB0aGUgcHJlc2VudCBzdGF0ZQotCSAqIG9mIHRoZSBwYWdlLCBhcyBleHBl Y3RlZCBmb3IgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLgotCSAqLwotCWlmIChwcnN0YXRl LmFsbF92aXNpYmxlICYmIHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApCi0JewotCQlwcmVzdWx0 LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX3Zpc2libGU7Ci0JCXByZXN1bHQtPmFsbF9mcm96 ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47Ci0JfQotCWVsc2UKLQl7Ci0JCXByZXN1bHQtPmFsbF92 aXNpYmxlID0gZmFsc2U7Ci0JCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQl9CisJaWYg KGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsK IAotCXByZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwotCi0JLyoKLQkgKiBJZiB1cGRh dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGF0IHJl Y29yZAotCSAqIG11c3QgYmUgdGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZlciwg aWYgdGhlIHBhZ2UgaXMKLQkgKiBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5vIGNv bmZsaWN0IGFuZCB0aGUgdm1fY29uZmxpY3RfaG9yaXpvbgotCSAqIHNob3VsZCByZW1haW4gSW52 YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1ZGVzIHRoZSBjYXNlIHRoYXQgd2UKLQkgKiBq dXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZCBpbmNsdWRl ZCB0aGUKLQkgKiBjb25mbGljdCBYSUQgYWxyZWFkeSBzbyB0aGUgVk0gdXBkYXRlIHJlY29yZCBk b2Vzbid0IG5lZWQgaXQuCi0JICovCi0JaWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1 bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0J CXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZDsKKwlBc3NlcnQoIXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0 ZW1zID09IDApKTsKIAogCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0 IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92 YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAq IGFsbF9mcm96ZW4gdmFyaWFibGVzLgorCSAqIFZBQ1VVTSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKCkgZHVyaW5nIHRoZSBzZWNvbmQgcGFzcyBvdmVyCisJICogdGhlIGhlYXAg dG8gZGV0ZXJtaW5lIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0 aGlzCisJICogaXMgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMg ZnVuY3Rpb24uICBOb3cgdGhhdAorCSAqIHdlJ3ZlIGZpbmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6 aW5nLCBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBpbiB0b3RhbAorCSAqIGFncmVlbWVudCB3aXRoIGhl YXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIHVzaW5nIGFuIGFzc2VydGlvbi4gV2Ugd2lsbAorCSAq IGhhdmUgYWxyZWFkeSBzZXQgdGhlIHBhZ2UgaW4gdGhlIFZNLCBzbyB0aGlzIGFzc2VydGlvbiB3 aWxsIG9ubHkgbGV0CisJICogeW91IGtub3cgdGhhdCB5b3UndmUgYWxyZWFkeSBkb25lIHNvbWV0 aGluZyB3cm9uZy4KIAkgKi8KLQlpZiAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVf Vk0pCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCWlmIChwcnN0YXRlLmFsbF92aXNpYmxl KQogCXsKLQkJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJ CQkJCQkJCQkgICBibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJICAgYmxrX2tub3du X2F2LAotCQkJCQkJCQkJCSAgIHByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcikpCi0JCXsK LQkJCS8qIElmIHdlIGZpeCBjb3JydXB0aW9uLCBkb24ndCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIg Ki8KLQkJfQorCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKKwkJYm9vbAkJZGVidWdfYWxs X2Zyb3plbjsKIAotCQkvKgotCQkgKiBJZiB0aGUgcGFnZSBpc24ndCB5ZXQgbWFya2VkIGFsbC12 aXNpYmxlIGluIHRoZSBWTSBvciBpdCBpcyBhbmQKLQkJICogbmVlZHMgdG8gbWUgbWFya2VkIGFs bC1mcm96ZW4sIHVwZGF0ZSB0aGUgVk0gTm90ZSB0aGF0IGFsbF9mcm96ZW4KLQkJICogaXMgb25s eSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyB0cnVlLCBzbyB3ZSBtdXN0IGNoZWNrIGJvdGgKLQkJ ICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4uCi0JCSAqLwotCQllbHNlIGlmIChwcmVzdWx0 LT5hbGxfdmlzaWJsZSAmJgotCQkJCSAoIWJsa19rbm93bl9hdiB8fAotCQkJCSAgKHByZXN1bHQt PmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4ocmVsYXRpb24sIGJsb2Nrbm8sICZ2bWJ1ZmZl cikpKSkKLQkJewotCQkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwotCQkJdm1m bGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCUFzc2VydChjdXRvZmZzKTsKIAot CQkJLyoKLQkJCSAqIElmIHRoZSBwYWdlIGlzIGFsbC1mcm96ZW4sIHdlIGNhbiBwYXNzIEludmFs aWRUcmFuc2FjdGlvbklkIGFzCi0JCQkgKiBvdXIgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvCi0JCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2Fm ZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKLQkJCSAqIHdlcmUg ZnJvemVuLgotCQkJICovCi0JCQlpZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKLQkJCXsKLQkJCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24p KTsKLQkJCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJCX0KKwkJQXNz ZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwogCi0JCQkvKgotCQkJICogSXQncyBwb3Nz aWJsZSBmb3IgdGhlIFZNIGJpdCB0byBiZSBjbGVhciBhbmQgdGhlIHBhZ2UtbGV2ZWwgYml0Ci0J CQkgKiB0byBiZSBzZXQgaWYgY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZC4KLQkJCSAqCi0JCQkg KiBBbmQgZXZlbiBpZiB3ZSBhcmUganVzdCBwbGFubmluZyB0byB1cGRhdGUgdGhlIGZyb3plbiBi aXQgaW4KLQkJCSAqIHRoZSBWTSwgd2Ugc2hvdWxkbid0IHJlbHkgb24gYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtIGFzIGEKLQkJCSAqIHByb3h5IGZvciB0aGUgcGFnZS1sZXZlbCBQRF9BTExf VklTSUJMRSBiaXQgYmVpbmcgc2V0LCBzaW5jZSBpdAotCQkJICogbWlnaHQgaGF2ZSBiZWNvbWUg c3RhbGUuCi0JCQkgKgotCQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQg dGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQotCQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUg aGVhcCBwYWdlLiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQotCQkJICogZW5hYmxlZCwgd2Ug ZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJCSAq IGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5 IGJlCi0JCQkgKiBsb2dnZWQuCi0JCQkgKi8KLQkJCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdl KSB8fCBYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQl7Ci0JCQkJUGFnZVNldEFsbFZpc2libGUo cGFnZSk7Ci0JCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7Ci0JCQl9CisJCWlmICghaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHJlbGF0aW9uLCBidWZmZXIsCisJCQkJCQkJCQkgIGN1dG9mZnMt Pk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJICAm ZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKKwkJCUFzc2VydChmYWxzZSk7CiAKLQkJCW9sZF92bWJp dHMgPSBoZWFwX3BhZ2Vfc2V0X3ZtX2FuZF9sb2cocmVsYXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwK LQkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24sCi0J CQkJCQkJCQkJCQkgIHZtZmxhZ3MpOwotCQl9CisJCUFzc2VydChwcnN0YXRlLmFsbF9mcm96ZW4g PT0gZGVidWdfYWxsX2Zyb3plbik7CisKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChk ZWJ1Z19jdXRvZmYpIHx8CisJCQkgICBkZWJ1Z19jdXRvZmYgPT0gcHJzdGF0ZS52aXNpYmlsaXR5 X2N1dG9mZl94aWQpOwogCX0KKyNlbmRpZgogCisJLyogQ29weSBpbmZvcm1hdGlvbiBiYWNrIGZv ciBjYWxsZXIgKi8KKwlwcmVzdWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7CisJcHJl c3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7CisJcHJlc3VsdC0+bmZyb3plbiA9IHBy c3RhdGUubmZyb3plbjsKKwlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBs ZXM7CisJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2Rl YWRfdHVwbGVzOworCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOworCS8qIG5ld192 bWJpdHMgd2FzIHNldCBhYm92ZSAqLworCXByZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVw OwogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRo ZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIAot CXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOwotCXByZXN1bHQtPm5ld192bWJpdHMg PSB2bWZsYWdzOwotCiAJaWYgKHByc3RhdGUuZnJlZXplKQogCXsKIAkJaWYgKHByZXN1bHQtPm5m cm96ZW4gPiAwKQpAQCAtMTYyNCw4ICsxNjczLDEzIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hh bmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1i CiAJCQlicmVhazsKIAl9CiAKLQkvKiBDb25zaWRlciBmcmVlemluZyBhbnkgbm9ybWFsIHR1cGxl cyB3aGljaCB3aWxsIG5vdCBiZSByZW1vdmVkICovCi0JaWYgKHByc3RhdGUtPmZyZWV6ZSkKKwkv KgorCSAqIENvbnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNoIHdpbGwgbm90 IGJlIHJlbW92ZWQuCisJICogUmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSB3YW50IHRv IGZyZWV6ZSB0aGUgdHVwbGVzLCBpZiB3ZSB3YW50CisJICogdG8gdXBkYXRlIHRoZSBWTSwgd2Ug aGF2ZSB0byBjYWxsIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBvbiBldmVyeQorCSAqIHR1 cGxlIHRvIGtub3cgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2lsbCBiZSB0b3RhbGx5IGZyb3pl bi4KKwkgKi8KKwlpZiAocHJzdGF0ZS0+ZnJlZXplIHx8IHByc3RhdGUtPnVwZGF0ZV92bSkKIAl7 CiAJCWJvb2wJCXRvdGFsbHlfZnJvemVuOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggOGRhYWQ1NGEwZmUuLjI0NmJhMDdkYjljIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC0yMDEyLDM0ICsyMDEyLDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVs U3RhdGUgKnZhY3JlbCwKIAkJdmFjcmVsLT5uZXdfZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQog Ci0JLyoKLQkgKiBWQUNVVU0gd2lsbCBjYWxsIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1 cmluZyB0aGUgc2Vjb25kIHBhc3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxf dmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3Bl Y2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRo YXQKLQkgKiB3ZSd2ZSBmaW5pc2hlZCBwcnVuaW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRo YXQgd2UncmUgaW4gdG90YWwKLQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zp c2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24uCi0JICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVD S0lORwotCS8qIE5vdGUgdGhhdCBhbGxfZnJvemVuIHZhbHVlIGRvZXMgbm90IG1hdHRlciB3aGVu ICFhbGxfdmlzaWJsZSAqLwotCWlmIChwcmVzdWx0LmFsbF92aXNpYmxlKQotCXsKLQkJVHJhbnNh Y3Rpb25JZCBkZWJ1Z19jdXRvZmY7Ci0JCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47Ci0KLQkJQXNz ZXJ0KHByZXN1bHQubHBkZWFkX2l0ZW1zID09IDApOwotCi0JCWlmICghaGVhcF9wYWdlX2lzX2Fs bF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYsCi0JCQkJCQkJCQkgIHZhY3JlbC0+Y3V0b2Zmcy5P bGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3plbiwKLQkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwg JnZhY3JlbC0+b2ZmbnVtKSkKLQkJCUFzc2VydChmYWxzZSk7Ci0KLQkJQXNzZXJ0KHByZXN1bHQu YWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlBc3NlcnQoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9PSBwcmVzdWx0 LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJLyoKIAkgKiBOb3cgc2F2ZSBk ZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UgaW4gdmFjcmVsCiAJICov CkBAIC0yMDczLDggKzIwNDUsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVs LAogCS8qIERpZCB3ZSBmaW5kIExQX0RFQUQgaXRlbXM/ICovCiAJKmhhc19scGRlYWRfaXRlbXMg PSAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwKTsKIAotCUFzc2VydCghcHJlc3VsdC5hbGxfdmlz aWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7Ci0KIAkvKgogCSAqIEZvciB0aGUgcHVycG9z ZXMgb2YgbG9nZ2luZywgY291bnQgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzIG5ld2x5CiAJ ICogc2V0IGFsbC12aXNpYmxlIGFuZCwgcG90ZW50aWFsbHksIGFsbC1mcm96ZW4uCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKaW5kZXggNTM0YTYzYWFiMzEuLmUzNWI0YWRmMzhkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBA IC0yMzQsMTkgKzIzNCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWlu dAkJCXJlY2VudGx5X2RlYWRfdHVwbGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxs X2Zyb3plbiBpbmRpY2F0ZSB0aGUgc3RhdHVzIG9mIHRoZSBwYWdlIGFzIHJlZmxlY3RlZAotCSAq IGluIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwcnVuaW5nLCBmcmVlemluZywgYW5kIHNldHRp bmcgYW55IHBhZ2VzCi0JICogYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgorCSAq IG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96 ZW4gYml0cyBpbiB0aGUKKwkgKiB2aXNpYmlsaXR5IG1hcCBiZWZvcmUgdXBkYXRpbmcgaXQgZHVy aW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgorCSAqIG5ld192bWJpdHMgYXJlIHRoZSBzdGF0ZSBv ZiB0aG9zZSBiaXRzIGFmdGVyIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgogCSAqCi0JICogdm1fY29u ZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBh Z2UKLQkgKiAob2xkZXIgdGhhbiBPbGRlc3RYbWluKS4gIEl0IHdpbGwgb25seSBiZSB2YWxpZCBp ZiB3ZSBkaWQgbm90IHNldCB0aGUKLQkgKiBwYWdlIGFsbC1mcm96ZW4gaW4gdGhlIFZNLgotCSAq Ci0JICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgc2V0LgorCSAqIFRoZXNlIGFyZSBvbmx5IHNldCBpZiB0aGUgSEVBUF9QQUdFX1BSVU5FX1VQ REFURV9WTSBvcHRpb24gaXMgc2V0LgogCSAqLwotCWJvb2wJCWFsbF92aXNpYmxlOwotCWJvb2wJ CWFsbF9mcm96ZW47Ci0JVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOwogCXVpbnQ4 CQlvbGRfdm1iaXRzOwogCXVpbnQ4CQluZXdfdm1iaXRzOwogCi0tIAoyLjM0LjEKCg== --000000000000dd2a91063880bfd3 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0012-Remove-xl_heap_visible-entirely.patch" Content-Disposition: attachment; filename="v2-0012-Remove-xl_heap_visible-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcdxkv0d11 RnJvbSBhMWJiZmYyZTQyYjc3MWJiZDhhNGI4ZTJiMDcxOWU0NTgyYmZjZjFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjMwOjQyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MiAxMi8xMl0gUmVtb3ZlIHhsX2hlYXBfdmlzaWJsZSBlbnRpcmVseQoKVGhlcmUgYXJl IG5vdyBubyB1c2VycyBvZiB0aGlzLCBzbyBlbGltaW5hdGUgaXQgZW50aXJlbHkuCgpjaS1vcy1v bmx5OgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDMg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAxMTMgKy0tLS0t LS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAx NTAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYyAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHlt YXAuYyAgfCAgODQgKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMgICB8ICAxMCAtLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNv ZGUuYyB8ICAgMSAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgIHwg ICAzIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAgfCAgIDYgLQog c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCAgICAgICB8ICAxMCArLQogMTAgZmls ZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMzcwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9idWZtYXNrLmMKaW5kZXggYmIyNjBjZmZhNjguLjFmZmYwMTM4M2IzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpAQCAtNTYsOCArNTYsNyBAQCBtYXNrX3BhZ2Vf aGludF9iaXRzKFBhZ2UgcGFnZSkKIAogCS8qCiAJICogRHVyaW5nIHJlcGxheSwgaWYgdGhlIHBh Z2UgTFNOIGhhcyBhZHZhbmNlZCBwYXN0IG91ciBYTE9HIHJlY29yZCdzIExTTiwKLQkgKiB3ZSBk b24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3Zpc2libGUoKSBm b3IKLQkgKiBkZXRhaWxzLgorCSAqIHdlIGRvbid0IG1hcmsgdGhlIHBhZ2UgYWxsLXZpc2libGUu CiAJICovCiAJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggZDJjZjhhYTlmYjguLjZmMTM0ZGZkNTM1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy92YWxpZC5oIgogI2lu Y2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNl cnQuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2VfZC5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNzg0NSw3MyArNzg0Niw2IEBAIGhlYXBfdHVwbGVf bmVlZHNfZXZlbnR1YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSkKIAlyZXR1cm4gZmFs c2U7CiB9CiAKLS8qCi0gKiBNYWtlIHRoZSBoZWFwIGFuZCBWTSBwYWdlIGNoYW5nZXMgbmVlZGVk IHRvIHNldCBhIHBhZ2UgYWxsLXZpc2libGUuCi0gKiBEbyBub3QgY2FsbCBpbiByZWNvdmVyeS4K LSAqLwotdWludDgKLWhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyhSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWYsCi0JCQkJCQkgQnVmZmVyIHZtYnVmLCBU cmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJCQkgdWludDggdm1mbGFncykKLXsKLQlQYWdl CQloZWFwX3BhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBfYnVmKTsKLQlib29sCQlzZXRfaGVhcF9s c24gPSBmYWxzZTsKLQlYTG9nUmVjUHRyCXJlY3B0ciA9IEludmFsaWRYTG9nUmVjUHRyOwotCXVp bnQ4CQlvbGRfdm1iaXRzID0gMDsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBfYnVmKSk7 Ci0KLQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKLQotCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUg cmlnaHQgaGVhcCBwYWdlIHBpbm5lZCwgaWYgcHJlc2VudCAqLwotCWlmIChCdWZmZXJHZXRCbG9j a051bWJlcihoZWFwX2J1ZikgIT0gaGVhcF9ibGspCi0JCWVsb2coRVJST1IsICJ3cm9uZyBoZWFw IGJ1ZmZlciBwYXNzZWQgdG8gaGVhcF9wYWdlX3NldF92bV9hbmRfbG9nIik7Ci0KLQkvKgotCSAq IFdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGggdGhlIFZNIGJpdCBzZXQgYW5kIHRoZSBwYWdlLWxl dmVsCi0JICogUERfQUxMX1ZJU0lCTEUgYml0IGNsZWFyLiBJZiB0aGF0IHdlcmUgdG8gb2NjdXIs IGEgc3Vic2VxdWVudCBwYWdlCi0JICogbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIg dGhlIFZNIGJpdC4gVGhvdWdoIGl0IGlzIHBvc3NpYmxlIGZvcgotCSAqIHRoZSBwYWdlLWxldmVs IGJpdCB0byBiZSBzZXQgYW5kIHRoZSBWTSBiaXQgdG8gYmUgY2xlYXIgaWYgY2hlY2tzdW1zCi0J ICogYW5kIHdhbF9sb2dfaGludHMgYXJlIG5vdCBlbmFibGVkLgotCSAqLwotCWlmICghUGFnZUlz QWxsVmlzaWJsZShoZWFwX3BhZ2UpKQotCXsKLQkJUGFnZVNldEFsbFZpc2libGUoaGVhcF9wYWdl KTsKLQotCQkvKgotCQkgKiBCdWZmZXIgd2lsbCB1c3VhbGx5IGJlIGRpcnR5IGZyb20gb3RoZXIg Y2hhbmdlcywgc28gaXQgaXMgd29ydGggdGhlCi0JCSAqIGV4dHJhIGNoZWNrCi0JCSAqLwotCQlp ZiAoIUJ1ZmZlcklzRGlydHkoaGVhcF9idWYpKQotCQl7Ci0JCQlpZiAoWExvZ0hpbnRCaXRJc05l ZWRlZCgpKQotCQkJCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1Zik7Ci0JCQllbHNlCi0JCQkJTWFy a0J1ZmZlckRpcnR5SGludChoZWFwX2J1ZiwgdHJ1ZSk7Ci0JCX0KLQotCQlzZXRfaGVhcF9sc24g PSBYTG9nSGludEJpdElzTmVlZGVkKCk7Ci0JfQotCi0Jb2xkX3ZtYml0cyA9IHZpc2liaWxpdHlt YXBfc2V0KHJlbCwgaGVhcF9ibGssIGhlYXBfYnVmLAotCQkJCQkJCQkgICAmcmVjcHRyLCB2bWJ1 ZiwgY3V0b2ZmX3hpZCwgdm1mbGFncyk7Ci0KLQkvKgotCSAqIElmIHdlIG1vZGlmaWVkIHRoZSBo ZWFwIHBhZ2UgYW5kIGRhdGEgY2hlY2tzdW1zIGFyZSBlbmFibGVkIChvcgotCSAqIHdhbF9sb2df aGludHM9b24pLCB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGhlYXAgcGFnZSBmcm9tIGJlaW5nIHRv cm4uCi0JICoKLQkgKiBJZiBub3QsIHRoZW4gd2UgbXVzdCAqbm90KiB1cGRhdGUgdGhlIGhlYXAg cGFnZSdzIExTTi4gSW4gdGhpcyBjYXNlLAotCSAqIHRoZSBGUEkgZm9yIHRoZSBoZWFwIHBhZ2Ug d2FzIG9taXR0ZWQgZnJvbSB0aGUgV0FMIHJlY29yZCBpbnNlcnRlZCBpbgotCSAqIHRoZSBWTSBy ZWNvcmQsIHNvIGl0IHdvdWxkIGJlIGluY29ycmVjdCB0byB1cGRhdGUgdGhlIGhlYXAgcGFnZSdz IExTTi4KLQkgKi8KLQlpZiAoc2V0X2hlYXBfbHNuKQotCQlQYWdlU2V0TFNOKGhlYXBfcGFnZSwg cmVjcHRyKTsKLQotCUVORF9DUklUX1NFQ1RJT04oKTsKLQotCXJldHVybiBvbGRfdm1iaXRzOwot fQotCiAvKgogICogRW5zdXJlIHRoZSBwcm92aWRlZCBoZWFwIHBhZ2UgaXMgbWFya2VkIFBEX0FM TF9WSVNJQkxFIGFuZCB0aGVuIHNldCB0aGUKICAqIHByb3ZpZGVkIHZtZmxhZ3MgaW4gdGhlIHBy b3ZpZGVkIHZtYnVmLgpAQCAtNzk1Myw3ICs3ODg3LDcgQEAgaGVhcF9wYWdlX3NldF92bShSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWYsCiAJCU1hcmtC dWZmZXJEaXJ0eShoZWFwX2J1Zik7CiAJfQogCi0JcmV0dXJuIHZpc2liaWxpdHltYXBfc2V0X3Zt Ynl0ZShyZWwsIGhlYXBfYmxrLCB2bWJ1Ziwgdm1mbGFncyk7CisJcmV0dXJuIHZpc2liaWxpdHlt YXBfc2V0KHJlbCwgaGVhcF9ibGssIHZtYnVmLCB2bWZsYWdzKTsKIH0KIAogLyoKQEAgLTg4OTUs NDkgKzg4MjksNiBAQCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxldGVPcCAq ZGVsc3RhdGUpCiAJcmV0dXJuIG5ibG9ja3NmYXZvcmFibGU7CiB9CiAKLS8qCi0gKiBQZXJmb3Jt IFhMb2dJbnNlcnQgZm9yIGEgaGVhcC12aXNpYmxlIG9wZXJhdGlvbi4gICdibG9jaycgaXMgdGhl IGJsb2NrCi0gKiBiZWluZyBtYXJrZWQgYWxsLXZpc2libGUsIGFuZCB2bV9idWZmZXIgaXMgdGhl IGJ1ZmZlciBjb250YWluaW5nIHRoZQotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1hcCBi bG9jay4gIEJvdGggc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIG1vZGlmaWVkCi0gKiBhbmQgZGly dGllZC4KLSAqCi0gKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBjb21lcyBmcm9tIHRoZSBsYXJn ZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcKLSAqIG1hcmtlZCBhbGwtdmlzaWJsZS4gIFJFRE8g cm91dGluZSB1c2VzIGl0IHRvIGdlbmVyYXRlIHJlY292ZXJ5IGNvbmZsaWN0cy4KLSAqCi0gKiBJ ZiBjaGVja3N1bXMgb3Igd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCwgd2UgbWF5IGFsc28gZ2Vu ZXJhdGUgYSBmdWxsLXBhZ2UKLSAqIGltYWdlIG9mIGhlYXBfYnVmZmVyLiBPdGhlcndpc2UsIHdl IG9wdGltaXplIGF3YXkgdGhlIEZQSSAoYnkgc3BlY2lmeWluZwotICogUkVHQlVGX05PX0lNQUdF IGZvciB0aGUgaGVhcCBidWZmZXIpLCBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIgc2hvdWxkICpu b3QqCi0gKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLSAqLwotWExvZ1JlY1B0cgotbG9n X2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZt X2J1ZmZlciwKLQkJCQkgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdWlu dDggdm1mbGFncykKLXsKLQl4bF9oZWFwX3Zpc2libGUgeGxyZWM7Ci0JWExvZ1JlY1B0cglyZWNw dHI7Ci0JdWludDgJCWZsYWdzOwotCi0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9idWZmZXIp KTsKLQlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKLQotCXhscmVjLnNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247Ci0JeGxyZWMuZmxhZ3Mg PSB2bWZsYWdzOwotCWlmIChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJl bCkpCi0JCXhscmVjLmZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTDsKLQlY TG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mSGVhcFZp c2libGUpOwotCi0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHZtX2J1ZmZlciwgMCk7Ci0KLQlmbGFn cyA9IFJFR0JVRl9TVEFOREFSRDsKLQlpZiAoIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJZmxh Z3MgfD0gUkVHQlVGX05PX0lNQUdFOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCBoZWFwX2J1ZmZl ciwgZmxhZ3MpOwotCi0JcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgWExPR19IRUFQ Ml9WSVNJQkxFKTsKLQotCXJldHVybiByZWNwdHI7Ci19CiAKIC8qCiAgKiBQZXJmb3JtIFhMb2dJ bnNlcnQgZm9yIGEgaGVhcC11cGRhdGUgb3BlcmF0aW9uLiAgQ2FsbGVyIG11c3QgYWxyZWFkeQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggNzBhNDZhMzczNTcuLjk3NWE1 OWQ3MTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTI3Myw3ICsy NzMsNyBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CQlSZWxhdGlvbglyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOwogCiAJ CXZpc2liaWxpdHltYXBfcGluKHJlbG4sIGJsa25vLCAmdm1idWZmZXIpOwotCQlvbGRfdm1iaXRz ID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFn cyk7CisJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBibGtubywgdm1idWZm ZXIsIHZtZmxhZ3MpOwogCQkvKiBPbmx5IHNldCBWTSBwYWdlIExTTiBpZiB3ZSBtb2RpZmllZCB0 aGUgcGFnZSAqLwogCQlpZiAob2xkX3ZtYml0cyAhPSB2bWZsYWdzKQogCQkJUGFnZVNldExTTihC dWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgbHNuKTsKQEAgLTI4NCwxNDMgKzI4NCw2IEBAIGhlYXBf eGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVVubG9ja1JlbGVh c2VCdWZmZXIodm1idWZmZXIpOwogfQogCi0vKgotICogUmVwbGF5IFhMT0dfSEVBUDJfVklTSUJM RSByZWNvcmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQgaGVy ZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgKLSAqIGEgc2l0dWF0aW9uIHdoZXJl IHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQgdGhlIHBhZ2UtbGV2ZWwKLSAqIFBE X0FMTF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgdGhlbiBh IHN1YnNlcXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIgdGhl IHZpc2liaWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZvaWQKLWhlYXBfeGxvZ192aXNpYmxl KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dSZWNQdHIJbHNuID0gcmVjb3JkLT5F bmRSZWNQdHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikg WExvZ1JlY0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZl cjsKLQlCdWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwotCVJlbEZpbGVMb2NhdG9yIHJsb2Nh dG9yOwotCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKLQotCUFz c2VydCgoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJVFMpID09IHhs cmVjLT5mbGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAxLCAmcmxvY2F0b3Is IE5VTEwsICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJlIGFyZSBhbnkgSG90IFN0YW5kYnkg dHJhbnNhY3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHhtaW4KLQkgKiBob3Jpem9uIG9sZCBl bm91Z2ggdGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2libGUgZm9yIHRoZW0sIHRoZXkKLQkg KiBtaWdodCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBpbmRleC1vbmx5IHNjYW4gY2FuIHNr aXAgYSBoZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1pZ2h0IGJlIGJldHRlciB0byB0aHJv dyBzb21lIGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUgdGhhdAotCSAqIGZvcmNlcyBhbnkg aW5kZXgtb25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRvIHBlcmZvcm0gaGVhcCBmZXRjaGVz LAotCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJpZ2h0LgotCSAq LwotCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJCQkJeGxyZWMtPmZs YWdzICYgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMLAotCQkJCQkJCQkJCQlybG9jYXRv cik7Ci0KLQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwgaWYgaXQgc3RpbGwgZXhpc3RzLiBJ ZiB0aGUgaGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICogdHJ1bmNhdGVkIGxhdGVyIGluIHJl Y292ZXJ5LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUgcGFnZSwgYnV0IHdlJ2QKLQkgKiBi ZXR0ZXIgc3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4KLQkgKi8KLQlhY3Rpb24gPSBY TG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVmZmVyKTsKLQlpZiAoYWN0aW9uID09 IEJMS19ORUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2UgZG9uJ3QgYnVtcCB0aGUgTFNOIG9m IHRoZSBoZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIG1hcCBiaXQg KHVubGVzcyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBpcyBlbmFibGVkLCBpbiB3aGljaAot CQkgKiBjYXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMgdG8gdG9ybiBwYWdlIGhhemFyZHMs IGJ1dCBzaW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGluZyB0aGUgZXhpc3RpbmcgcGFnZSBj b250ZW50cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBjYXJlLgotCQkgKi8KLQkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQot CQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFnZVNldExTTihwYWdlLCBsc24pOwot Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQllbHNlIGlmIChhY3Rpb24gPT0gQkxL X1JFU1RPUkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBibG9jayB3YXMgYmFja2VkIHVwLCB3 ZSBhbHJlYWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0JCSAqIG5vdGhpbmcgbW9yZSB0byBk by4gKFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tzdW1zIG9yCi0JCSAqIHdhbF9sb2df aGludHMgZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikp Ci0JewotCQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3BhY2UoQnVmZmVyR2V0UGFnZShidWZm ZXIpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7Ci0KLQkJLyoKLQkJICogU2lu Y2UgRlNNIGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGljYWxseSwg aXQKLQkJICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3RhbmRieXMuICBJZiB0aGUgc3RhbmRi eSBpcyBsYXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBWQUNVVU0sIGl0IHdpbGwgc2tpcCB1 cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICogZmlndXJlcyBmb3IgcGFnZXMgdGhh dCBiZWNhbWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4sIGRlcGVuZGluZwotCQkgKiBvbiB0 aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29tZSB3aGVuIEZyZWVTcGFjZU1hcFZh Y3V1bQotCQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGljIGZyZWUgc3BhY2UgdmFsdWVzIHRv IHVwcGVyIEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2VydGVycyB0cnkgdG8gdXNlIHN1Y2gg cGFnZXMgb25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJICogYXJlIHVudXNhYmxlLiAgVGhp cyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBhcmUgbWFueSBzdWNoCi0JCSAqIHBh Z2VzLgotCQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJvYmxlbXMgYnkgdXBkYXRpbmcgRlNN J3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBiZWNvbWluZyBhbGwtdmlzaWJsZSBv ciBhbGwtZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgYSBmdWxsLXBh Z2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0JCSAqIEZTTSBkYXRhIGlzIG5vdCBp biB0aGUgcGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxyZWMtPmZsYWdzICYgVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2NhdG9y LCBibGtubywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZlbiBpZiB3ZSBza2lwcGVkIHRoZSBo ZWFwIHBhZ2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVybG9jaywgaXQncwotCSAqIHN0aWxs IHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gIEFueSBXQUwgcmVjb3JkIHRoYXQg Y2xlYXJzCi0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBkb2VzIHNvIGJlZm9yZSBjaGVja2lu ZyB0aGUgcGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFyZWQg d2lsbCBzdGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJlZG9F eHRlbmRlZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKLQkJCQkJCQkJCSAg JnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCVBhZ2UJCXZtcGFnZSA9IEJ1ZmZl ckdldFBhZ2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxuOwotCQl1aW50OAkJdm1iaXRzOwot Ci0JCS8qIGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2FzIHJlYWQgYXMgemVyb3MgKi8KLQkJ aWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDApOwot Ci0JCS8qIHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAqLwotCQl2bWJpdHMgPSB4bHJlYy0+ ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0KLQkJLyoKLQkJICogWExvZ1JlYWRC dWZmZXJGb3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZmZXIuIEJ1dAotCQkgKiB2aXNpYmls aXR5bWFwX3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2VsZi4KLQkJICovCi0JCUxvY2tCdWZm ZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJcmVsbiA9IENyZWF0ZUZha2VS ZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsbiwgYmxrbm8s ICZ2bWJ1ZmZlcik7Ci0KLQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRC dWZmZXIsICZsc24sIHZtYnVmZmVyLAotCQkJCQkJICB4bHJlYy0+c25hcHNob3RDb25mbGljdEhv cml6b24sIHZtYml0cyk7Ci0KLQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCUZyZWVGYWtl UmVsY2FjaGVFbnRyeShyZWxuKTsKLQl9Ci0JZWxzZSBpZiAoQnVmZmVySXNWYWxpZCh2bWJ1ZmZl cikpCi0JCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotfQotCiAvKgogICogR2l2ZW4g YW4gImluZm9iaXRzIiBmaWVsZCBmcm9tIGFuIFhMb2cgcmVjb3JkLCBzZXQgdGhlIGNvcnJlY3Qg Yml0cyBpbiB0aGUKICAqIGdpdmVuIGluZm9tYXNrIGFuZCBpbmZvbWFzazIgZm9yIHRoZSB0dXBs ZSB0b3VjaGVkIGJ5IHRoZSByZWNvcmQuCkBAIC03OTcsMTAgKzY2MCwxMCBAQCBoZWFwX3hsb2df bXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlSZWxhdGlvbglyZWxuID0g Q3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOwogCiAJCXZpc2liaWxpdHltYXBfcGlu KHJlbG4sIGJsa25vLCAmdm1idWZmZXIpOwotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUocmVs biwgYmxrbm8sCi0JCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxM X1ZJU0lCTEUgfAotCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJdmlzaWJp bGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJICBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVO KTsKIAkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgbHNuKTsKIAkJRnJlZUZh a2VSZWxjYWNoZUVudHJ5KHJlbG4pOwogCX0KQEAgLTEzODAsOSArMTI0Myw2IEBAIGhlYXAyX3Jl ZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNV VU1fQ0xFQU5VUDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFr OwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29y ZCk7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBf eGxvZ19tdWx0aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCmluZGV4IDI0NmJhMDdkYjljLi45MzcxZDZmMzdjMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTg3OCwxNCArMTg3OCwxNCBAQCBsYXp5X3NjYW5f bmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJCSAqLwogCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKLQkJCXVp bnQ4IG5ld192bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCXVpbnQ4CQlu ZXdfdm1iaXRzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CiAJCQkJVklTSUJJTElUWU1B UF9BTExfRlJPWkVOOwogCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAogCQkJTG9ja0J1ZmZl cih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKIAkJCWhlYXBfcGFnZV9zZXRfdm0o dmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJCQkJICB2bWJ1ZmZlciwgbmV3X3ZtYml0 cyk7CisJCQkJCQkJIHZtYnVmZmVyLCBuZXdfdm1iaXRzKTsKIAogCQkJLyogU2hvdWxkIGhhdmUg c2V0IFBEX0FMTF9WSVNJQkxFIGFuZCBtYXJrZWQgYnVmIGRpcnR5ICovCiAJCQlBc3NlcnQoQnVm ZmVySXNEaXJ0eShidWYpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zp c2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpp bmRleCBjYWJkMGZhMDg4MC4uYTI0NTU0ZmUxOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 aXNpYmlsaXR5bWFwLmMKQEAgLTIxOSw4NiArMjE5LDYgQEAgdmlzaWJpbGl0eW1hcF9waW5fb2so QmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKQogCXJldHVybiBCdWZmZXJJc1ZhbGlk KHZtYnVmKSAmJiBCdWZmZXJHZXRCbG9ja051bWJlcih2bWJ1ZikgPT0gbWFwQmxvY2s7CiB9CiAK LS8qCi0gKgl2aXNpYmlsaXR5bWFwX3NldCAtIHNldCBiaXQocykgb24gYSBwcmV2aW91c2x5IHBp bm5lZCBwYWdlCi0gKgotICogQ2FsbGVyIGlzIGV4cGVjdGVkIHRvIHNldCB0aGUgaGVhcCBwYWdl J3MgUERfQUxMX1ZJU0lCTEUgYml0IGJlZm9yZSBjYWxsaW5nCi0gKiB0aGlzIGZ1bmN0aW9uLiBF eGNlcHQgaW4gcmVjb3ZlcnksIGNhbGxlciBzaG91bGQgYWxzbyBwYXNzIHRoZSBoZWFwIGJ1ZmZl ci4KLSAqIFdoZW4gY2hlY2tzdW1zIGFyZSBlbmFibGVkIGFuZCB3ZSdyZSBub3QgaW4gcmVjb3Zl cnksIHdlIG11c3QgYWRkIHRoZSBoZWFwCi0gKiBidWZmZXIgdG8gdGhlIFdBTCBjaGFpbiB0byBw cm90ZWN0IGl0IGZyb20gYmVpbmcgdG9ybi4KLSAqCi0gKiBZb3UgbXVzdCBwYXNzIGEgYnVmZmVy IGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgbWFwIHBhZ2UgdG8gdGhpcyBmdW5jdGlvbi4KLSAqIENh bGwgdmlzaWJpbGl0eW1hcF9waW4gZmlyc3QgdG8gcGluIHRoZSByaWdodCBvbmUuIFRoaXMgZnVu Y3Rpb24gZG9lc24ndCBkbwotICogYW55IEkvTy4KLSAqCi0gKiBjdXRvZmZfeGlkIGlzIHRoZSBs YXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcgbWFya2VkIGFsbC12aXNpYmxlOyBpdCBpcwot ICogbmVlZGVkIGZvciBIb3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJhbnNhY3Rpb25J ZCBpZiB0aGUgcGFnZQotICogY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFsc28gYmUgc2V0 IHRvIEludmFsaWRUcmFuc2FjdGlvbklkIHdoZW4gYSBwYWdlCi0gKiB0aGF0IGlzIGFscmVhZHkg YWxsLXZpc2libGUgaXMgYmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICogSWYgd2UncmUg aW4gcmVjb3ZlcnksIHJlY3B0ciBwb2ludHMgdG8gdGhlIExTTiBvZiB0aGUgWExPRyByZWNvcmQg d2UncmUKLSAqIHJlcGxheWluZyBhbmQgdGhlIFZNIHBhZ2UgTFNOIGlzIGFkdmFuY2VkIHRvIHRo aXMgTFNOLiBEdXJpbmcgbm9ybWFsCi0gKiBydW5uaW5nLCB3ZSdsbCBnZW5lcmF0ZSBhIG5ldyBY TE9HIHJlY29yZCBmb3IgdGhlIGNoYW5nZXMgdG8gdGhlIFZNIGFuZCBzZXQKLSAqIHRoZSBWTSBw YWdlIExTTi4gV2Ugd2lsbCByZXR1cm4gdGhpcyBMU04gaW4gcmVjcHRyLCBhbmQgdGhlIGNhbGxl ciBtYXkgdXNlCi0gKiB0aGlzIHRvIHNldCB0aGUgaGVhcCBwYWdlIExTTi4KLSAqCi0gKiBSZXR1 cm5zIHRoZSBzdGF0ZSBvZiB0aGUgcGFnZSdzIFZNIGJpdHMgYmVmb3JlIHNldHRpbmcgZmxhZ3Mg YW5kIHNldHMuCi0gKi8KLXVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCSAgWExvZ1JlY1B0ciAqcmVj cHRyLCBCdWZmZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4 IGZsYWdzKQotewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyho ZWFwQmxrKTsKLQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7 Ci0JdWludDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJ CXBhZ2U7Ci0JdWludDgJICAgKm1hcDsKLQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0Vf VklTSUJJTElUWU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0ICVzICVkIiwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSwgaGVhcEJsayk7Ci0jZW5kaWYKLQotCUFzc2VydChJblJlY292ZXJ5 IHx8IFhMb2dSZWNQdHJJc0ludmFsaWQoKnJlY3B0cikpOwotCUFzc2VydChJblJlY292ZXJ5IHx8 IFBhZ2VJc0FsbFZpc2libGUoKFBhZ2UpIEJ1ZmZlckdldFBhZ2UoaGVhcEJ1ZikpKTsKLQlBc3Nl cnQoKGZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSBmbGFncyk7Ci0KLQkvKiBN dXN0IG5ldmVyIHNldCBhbGxfZnJvemVuIGJpdCB3aXRob3V0IGFsc28gc2V0dGluZyBhbGxfdmlz aWJsZSBiaXQgKi8KLQlBc3NlcnQoZmxhZ3MgIT0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsK LQotCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlp ZiAoIUJ1ZmZlcklzVmFsaWQodm1CdWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAh PSBtYXBCbG9jaykKLQkJZWxvZyhFUlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlz aWJpbGl0eW1hcF9zZXQiKTsKLQotCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAg PSAodWludDggKikgUGFnZUdldENvbnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJV RkZFUl9MT0NLX0VYQ0xVU0lWRSk7Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9m ZnNldCkgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykK LQl7Ci0JCVNUQVJUX0NSSVRfU0VDVElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3Mg PDwgbWFwT2Zmc2V0KTsKLQkJTWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRp b25OZWVkc1dBTChyZWwpKQotCQl7Ci0JCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZCgqcmVjcHRy KSkKLQkJCXsKLQkJCQlBc3NlcnQoIUluUmVjb3ZlcnkpOwotCQkJCSpyZWNwdHIgPSBsb2dfaGVh cF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKLQkJCX0K LQkJCVBhZ2VTZXRMU04ocGFnZSwgKnJlY3B0cik7Ci0JCX0KLQotCQlFTkRfQ1JJVF9TRUNUSU9O KCk7Ci0JfQotCi0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQlyZXR1 cm4gc3RhdHVzOwotfQogCiAvKgogICogU2V0IGZsYWdzIGluIHRoZSBWTSBibG9jayBjb250YWlu ZWQgaW4gdGhlIHBhc3NlZCBpbiB2bUJ1Zi4KQEAgLTMwOCw4ICsyMjgsOCBAQCB2aXNpYmlsaXR5 bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVm LAogICogbWFraW5nIGFueSBjaGFuZ2VzIG5lZWRlZCB0byB0aGUgYXNzb2NpYXRlZCBoZWFwIHBh Z2UuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUoUmVsYXRpb24gcmVsLCBC bG9ja051bWJlciBoZWFwQmxrLAotCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MpCit2 aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJ ICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzKQogewogCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0g SEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxL X1RPX01BUEJZVEUoaGVhcEJsayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5j CmluZGV4IGQ2Yzg2Y2NhYzIwLi5mNzg4MGE0ZWQ4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL2hlYXBkZXNjLmMKQEAgLTM1MSwxMyArMzUxLDYgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZv IGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0JZWxzZSBpZiAo aW5mbyA9PSBYTE9HX0hFQVAyX1ZJU0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2libGUgKnhscmVj ID0gKHhsX2hlYXBfdmlzaWJsZSAqKSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJz bmFwc2hvdENvbmZsaWN0SG9yaXpvbjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJCQkJIHhscmVj LT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJZWxzZSBpZiAo aW5mbyA9PSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBfbXVsdGlfaW5z ZXJ0ICp4bHJlYyA9ICh4bF9oZWFwX211bHRpX2luc2VydCAqKSByZWM7CkBAIC00NjIsOSArNDU1 LDYgQEAgaGVhcDJfaWRlbnRpZnkodWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5F X1ZBQ1VVTV9DTEVBTlVQOgogCQkJaWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAiOwogCQkJYnJl YWs7Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJMRSI7Ci0JCQli cmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0gIk1VTFRJX0lO U0VSVCI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5j CmluZGV4IGNjMDNmMDcwNmU5Li4yZmRkNGFmOTBhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCkBAIC00NTQsNyArNDU0LDYgQEAgaGVhcDJfZGVjb2RlKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQljYXNlIFhM T0dfSEVBUDJfUFJVTkVfT05fQUNDRVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVN X1NDQU46CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKLQkJY2FzZSBY TE9HX0hFQVAyX1ZJU0lCTEU6CiAJCWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFURUQ6CiAJCQli cmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlMzViNGFkZjM4ZC4uYzQwNGI3 OTRmZGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM2NSw5ICszNjUsNiBAQCBleHRlcm4gYm9vbCBo ZWFwX3R1cGxlX25lZWRzX2V2ZW50dWFsX2ZyZWV6ZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUpOwog CiBleHRlcm4gdWludDggaGVhcF9wYWdlX3NldF92bShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWYsCiAJCQkJCQkJICBCdWZmZXIgdm1idWYsIHVpbnQ4 IHZtZmxhZ3MpOwotZXh0ZXJuIHVpbnQ4IGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyhSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWYsCi0JCQkJCQkJCQkg IEJ1ZmZlciB2bWJ1ZiwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCQkJCQkJICB1aW50 OCB2bWZsYWdzKTsKIAogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBfaW5zZXJ0KFJlbGF0aW9uIHJl bGF0aW9uLCBIZWFwVHVwbGUgdHVwKTsKIGV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX2RlbGV0ZShS ZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgdGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9n LmgKaW5kZXggY2VhZTljMDgzZmYuLjlhNjE0MzRiODgxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaApAQCAtNjAsNyArNjAsNiBAQAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VT UwkJMHgxMAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCTB4MjAKICNkZWZp bmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUAkweDMwCi0jZGVmaW5lIFhMT0dfSEVB UDJfVklTSUJMRQkJMHg0MAogI2RlZmluZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCAweDUwCiAj ZGVmaW5lIFhMT0dfSEVBUDJfTE9DS19VUERBVEVEIDB4NjAKICNkZWZpbmUgWExPR19IRUFQMl9O RVdfQ0lECQkweDcwCkBAIC00OTUsMTEgKzQ5NCw2IEBAIGV4dGVybiB2b2lkIGhlYXAyX2Rlc2Mo U3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiBjb25zdCBj aGFyICpoZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKTsKIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19s b2dpY2FsX3Jld3JpdGUoWExvZ1JlYWRlclN0YXRlICpyKTsKIAotZXh0ZXJuIFhMb2dSZWNQdHIg bG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJCQkJ CQkJICAgQnVmZmVyIHZtX2J1ZmZlciwKLQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJICAgdWludDggdm1mbGFncyk7Ci0KIC8qIGluIGhl YXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBmcm9udGVuZC9iYWNrZW5kIGNv ZGUgKi8KIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXpl KGNoYXIgKmN1cnNvciwgdWludDggZmxhZ3MsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5wbGFucywg eGxocF9mcmVlemVfcGxhbiAqKnBsYW5zLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L3Zpc2liaWxpdHltYXAuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5k ZXggOTFlZjM3MDVlODQuLjIwMTQxZTNlODA1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFw LmgKQEAgLTMxLDE0ICszMSw4IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xlYXIoUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1h cF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAgQnVmZmVy ICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051bWJlciBo ZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0KFJl bGF0aW9uIHJlbCwKLQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1 ZiwKLQkJCQkJCQkgICBYTG9nUmVjUHRyICpyZWNwdHIsCi0JCQkJCQkJICAgQnVmZmVyIHZtQnVm LAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkgICB1aW50OCBm bGFncyk7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBm bGFncyk7CitleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBoZWFwQmxrLAorCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MpOwog ZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1h cF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tOdW1i ZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBfcHJlcGFy ZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCi0tIAoyLjM0LjEKCg== --000000000000dd2a91063880bfd3--