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.96) (envelope-from ) id 1vcqCb-00BN9R-1V for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Jan 2026 19:25:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vcqCZ-003zff-31 for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Jan 2026 19:25:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vcqCZ-003zfV-19 for pgsql-hackers@lists.postgresql.org; Mon, 05 Jan 2026 19:25:16 +0000 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vcqCU-004jqK-1e for pgsql-hackers@lists.postgresql.org; Mon, 05 Jan 2026 19:25:15 +0000 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-64b560e425eso306342a12.1 for ; Mon, 05 Jan 2026 11:25:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767641109; x=1768245909; 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=cKYxnMMZWFwK6Udphw0xqubEHzcika7J97NQxqdcxJ8=; b=cQSSNaUAnYaB7T7cC7kayP5hjta70IhoWlCyp0zn7HMoz3BQh4zQ3LXNYPnvSi97xa kVga2925jLHjAQfTTbjBbpgAXn+jo7MVs7GMoPdBxZmGT9B3Nv5eZNRYuYVZFbpFlIBP mSdCTTZC1VfN4C+EecF7JLN37XM7Q+oLKKywbE3xOivYmrZPq7hpmzQ/3Gz6YZxEGUFk jrR/IYlAVcEcy0/CL0RPR5cvebPoz89opQ/kzW4l73mBChqBQ47H267enKOXFtL4071O vfqqo8QTiWss9CdeKpgWhWZCUSDAFiol95hHLjb6CndZi5gVu4hg7U2K/1Op+k7J5nwc 65Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767641109; x=1768245909; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cKYxnMMZWFwK6Udphw0xqubEHzcika7J97NQxqdcxJ8=; b=bfKFyNSkQY1WpMlcvoUZWy1LPRMsJ5zA80X5iJDcxPasPf/Q+H7cPyrNMTJL4Nc80H ZtnI9Kb0PXGXiNXcJDDP/3ouxbF/bb8jPJYbX9x19x9VUDzETLF/A11WX5J7PWV2Dgny VXWDfeLBVBKJrFI00BreoGebLlzHeSwt4xaYNGJ6F7IhrRTb9rpSk8CuFeYiWkUKpNH9 K8jDQRvBtJcw7PcGaW3cEFBAvIAdxntUjYhimOkN2z7rhpedv53nLqeNpQflM/Cwbq8k tPACwAw6whcUoTOIZk9BSPoSTJm57EmVHoT1R/D6KRxggv7zre1qK8fShFOdV1vfamhg WUeg== X-Forwarded-Encrypted: i=1; AJvYcCXexa5+hsSzjgq0+cloYHjMiaWda03behTvFgEAeJVGxtTuZDfCzMS4TvsKYtn5iGoeBbz/CRJq/+aljZNY@lists.postgresql.org X-Gm-Message-State: AOJu0YwnnsfOMRtWjqaKpXqnOaNtVFpAW1pNfJO58CHjFnELdoSP2X78 1RAmzCqhQuxNUfdXM+G+qNakXAhrLaqB6wU44ak4SY7w1e6fGMQ6eg5qJig5ZgnkHGvhO8UcsqX 3LN7yC2sjCqiA1pMshK50DXGKV/kHnrQ= X-Gm-Gg: AY/fxX6MOdJ+l/wbxF0vrIEdj789mXn95E1haFQslVQbZ63wvkJ8e9su/K+oHgw/xPA 6BP3KKYrlpA2DwE3bz62dYU+K+SaR264dHrzISlWsVyDpdelAd9q6w2NGHgQcSAHVgS3pOQnhpO x78E9mC7vpXn4qpREIJH2ZcvKJoJa48SVrdXREdnOkxXf5pyukLhFeRICbAdFWlRPQJ4uCF9isF xQoM8tj1E43H8V0i3QHrx1k5c8SNDAvCFLz756w/Pmx22HB8191732jnHJXJ4HJ+AISW700 X-Google-Smtp-Source: AGHT+IGBaJZ/tOPBBHNAcfU+Un5nQAAWoLHn7ughjsQ9yjxFRbpgULVH6h6/sBLCzeuYPz2o+pQdSv0tkgV8NFGEVqc= X-Received: by 2002:a05:6402:4314:b0:64f:cfa0:9024 with SMTP id 4fb4d7f45d1cf-650797a7fccmr432045a12.34.1767641109127; Mon, 05 Jan 2026 11:25:09 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> <6BC5DBAB-6084-4BB8-8450-52E9648AB021@gmail.com> <7F5BCD7A-764D-4D8D-8E27-6F2CAAEA1CEE@gmail.com> In-Reply-To: From: Melanie Plageman Date: Mon, 5 Jan 2026 14:24:54 -0500 X-Gm-Features: AQt7F2qpTK9seiB5w-Xav4N7ccmnxB2egg7b2ZfolLJRYEOLl5emntyrlpgC85M Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Kirill Reshke Cc: Chao Li , Xuneng Zhou , Andres Freund , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="00000000000066b50f0647a904bd" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000066b50f0647a904bd Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Jan 3, 2026 at 4:36=E2=80=AFPM Kirill Reshke wrote: > > After thinking about it for a week or so, I would actually suggest > moving forward with v31 (Remove OldestXmin from TAM). > I think this is a low probability of getting complaints about that. > Also, we're breaking ABI, so we will know about any important use-case > not long after 19-beta1. > Another user of extensible TAM, Cloudberry [0], does not use > OldestXmin also. I also did not find any user of > scan_analyze_next_tuple other than postgresql itself with > http://codesearch.decbian.net/ . Using code-search on github I found > [1]. Looks like this does not need OldestXmin either. Thanks for doing this research. I've attached v32 which is rebased over a change in master and also resolves the one open issue in the patch set: why the killtuples isolation test heap accesses count changed after setting pd_prune_xid. That test creates a table, inserts tuples, accesses one page, deletes all the data, accesses a single page again (until the table is vacuumed, the pages will still be there and have to be scanned even though the data is deleted). The first time we set the VM on-access, we have to extend the VM. That VM access is an extend and not a hit. Once we set pd_prune_xid on the page, the extend happens during the first access (before the delete), so when we access the VM after the delete step, that is counted as a hit and we end up with more hits in the stats. - Melanie --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="UTF-8"; name="v32-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Disposition: attachment; filename="v32-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jrmt00 RnJvbSA4ZTEyODZjMWE2ZGJmZTMzMDlkMTExYWFhMjFhZjVhOGU2MjM3YmI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDggRGVjIDIwMjUgMTU6NDk6NTQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMiAwMS8xNl0gQ29tYmluZSB2aXNpYmlsaXR5bWFwX3NldCgpIGNhc2VzIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKbGF6eV9zY2Fu X3BydW5lKCkgcHJldmlvdXNseSBoYWQgdHdvIHNlcGFyYXRlIGNhc2VzIHRoYXQgY2FsbGVkCnZp c2liaWxpdHltYXBfc2V0KCkgYWZ0ZXIgcHJ1bmluZyBhbmQgZnJlZXppbmcuIFRoZXNlIGJyYW5j aGVzIHdlcmUKbmVhcmx5IGlkZW50aWNhbCBleGNlcHQgdGhhdCBvbmUgYXR0ZW1wdGVkIHRvIGF2 b2lkIGRpcnR5aW5nIHRoZSBoZWFwCmJ1ZmZlci4gSG93ZXZlciwgdGhhdCBzaXR1YXRpb24gY2Fu IG5ldmVyIG9jY3VyIOKAlCB0aGUgaGVhcCBidWZmZXIgY2Fubm90CmJlIGNsZWFuIGF0IHRoYXQg cG9pbnQgKGFuZCB3ZSB3b3VsZCBoaXQgYW4gYXNzZXJ0aW9uIGlmIGl0IHdlcmUpLgoKSW4gbGF6 eV9zY2FuX3BydW5lKCksIHdoZW4gd2UgY2hhbmdlIGEgcHJldmlvdXNseSBhbGwtdmlzaWJsZSBw YWdlIHRvCmFsbC1mcm96ZW4gYW5kIHRoZSBwYWdlIHdhcyByZWNvcmRlZCBhcyBhbGwtdmlzaWJs ZSBpbiB0aGUgdmlzaWJpbGl0eQptYXAgYnkgZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCks IHRoZSBoZWFwIGJ1ZmZlciB3aWxsIGFsd2F5cyBiZQpkaXJ0eS4gRWl0aGVyIHdlIGhhdmUganVz dCBmcm96ZW4gYSB0dXBsZSBhbmQgYWxyZWFkeSBkaXJ0aWVkIHRoZQpidWZmZXIsIG9yIHRoZSBi dWZmZXIgd2FzIG1vZGlmaWVkIGJldHdlZW4gZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkK YW5kIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgYW5kIHRoZW4gcHJ1bmVkIGluCmhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuCgpBZGRpdGlvbmFsbHksIFhMb2dSZWdpc3RlckJ1ZmZl cigpIGFzc2VydHMgdGhhdCB0aGUgYnVmZmVyIGlzIGRpcnR5LCBzbwphdHRlbXB0aW5nIHRvIGFk ZCBhIGNsZWFuIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gd291bGQgYXNzZXJ0IG91dAph bnl3YXkuCgpTaW5jZSB0aGUg4oCcY2xlYW4gaGVhcCBidWZmZXIgd2l0aCBhbHJlYWR5IHNldCBW TeKAnSBjYXNlIGlzIGltcG9zc2libGUsCnRoZSB0d28gdmlzaWJpbGl0eW1hcF9zZXQoKSBicmFu Y2hlcyBpbiBsYXp5X3NjYW5fcHJ1bmUoKSBjYW4gYmUgbWVyZ2VkLgpEb2luZyBzbyBtYWtlcyB0 aGUgaW50ZW50IGNsZWFyZXIgYW5kIGVtcGhhc2l6ZXMgdGhhdCB0aGUgaGVhcCBidWZmZXIKbXVz dCBhbHdheXMgYmUgbWFya2VkIGRpcnR5IGJlZm9yZSBiZWluZyBhZGRlZCB0byB0aGUgV0FMIGNo YWluLgoKVGhpcyBjb21taXQgYWxzbyBhZGRzIGEgdGVzdCBjYXNlIGZvciB2YWN1dW1pbmcgd2hl biBubyBoZWFwCm1vZGlmaWNhdGlvbnMgYXJlIHJlcXVpcmVkLiBDdXJyZW50bHkgdGhpcyBlbnN1 cmVzIHRoYXQgdGhlIGhlYXAgYnVmZmVyCmlzIG1hcmtlZCBkaXJ0eSBiZWZvcmUgaXQgaXMgYWRk ZWQgdG8gdGhlIFdBTCBjaGFpbiwgYnV0IGlmIHdlIGxhdGVyCnJlbW92ZSB0aGUgaGVhcCBidWZm ZXIgZnJvbSB0aGUgVk0tc2V0IFdBTCBjaGFpbiBvciBwYXNzIGl0IHdpdGggdGhlClJFR0JVRl9O T19DSEFOR0VTIGZsYWcsIHRoaXMgdGVzdCB3b3VsZCBndWFyZCB0aGF0IGJlaGF2aW9yLgoKQXV0 aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFNyaW5h dGggUmVkZHkgU2FkaXBpcmFsbGEgPHNyaW5hdGgyMTMzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBYdW5l bmcgWmhvdSA8eHVuZW5nemhvdUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vNUNFQUExNjItNjdCMS00NERBLUI2MEQtOEI2NTcxN0U4QjA1JTQwZ21haWwuY29tCkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWld4NWdDYmVDZjdQV0N2 OHA1JTNEJTNEYjdFRXdzMFZEMndrc0R4cFhDdkN5SHZRJTQwbWFpbC5nbWFpbC5jb20KLS0tCiAu Li4vcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dCAgfCA0NCArKysrKysr KysrCiBjb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsICAgfCAyMCAr KysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICAgIHwgODcg KysrKy0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA2 OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0 ZWQvcGdfdmlzaWJpbGl0eS5vdXQgYi9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdf dmlzaWJpbGl0eS5vdXQKaW5kZXggMDlmYTU5MzNhMzUuLmUxMGYxNzA2MDE1IDEwMDY0NAotLS0g YS9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdfdmlzaWJpbGl0eS5vdXQKKysrIGIv Y29udHJpYi9wZ192aXNpYmlsaXR5L2V4cGVjdGVkL3BnX3Zpc2liaWxpdHkub3V0CkBAIC0xLDQg KzEsNSBAQAogQ1JFQVRFIEVYVEVOU0lPTiBwZ192aXNpYmlsaXR5OworQ1JFQVRFIEVYVEVOU0lP TiBwYWdlaW5zcGVjdDsKIC0tCiAtLSByZWNlbnRseS1kcm9wcGVkIHRhYmxlCiAtLQpAQCAtMjA0 LDYgKzIwNSw0OSBAQCBzZWxlY3QgcGdfdHJ1bmNhdGVfdmlzaWJpbGl0eV9tYXAoJ3Rlc3RfcGFy dGl0aW9uJyk7CiAgCiAoMSByb3cpCiAKKy0tIHRlc3QgdGhlIGNhc2Ugd2hlcmUgdmFjdXVtIHBo YXNlIEkgZG9lcyBub3QgbmVlZCB0byBtb2RpZnkgdGhlIGhlYXAgYnVmZmVyCistLSBhbmQgb25s eSBuZWVkcyB0byBzZXQgdGhlIFZNCitjcmVhdGUgdGFibGUgdGVzdF92YWNfdW5tb2RpZmllZF9o ZWFwKGEgaW50KTsKK2luc2VydCBpbnRvIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCB2YWx1ZXMg KDEpOwordmFjdXVtIChmcmVlemUpIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcDsKK3NlbGVjdCBw Z192aXNpYmlsaXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKyBw Z192aXNpYmlsaXR5X21hcF9zdW1tYXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KDEsMSkKKygxIHJvdykKKworLS0gdGhlIGNoZWNrcG9pbnQgY2xlYW5zIHRoZSBidWZmZXIgZGly dGllZCBieSBmcmVlemluZyB0aGUgc29sZSB0dXBsZQorY2hlY2twb2ludDsKKy0tIHRydW5jYXRp bmcgdGhlIFZNIGVuc3VyZXMgdGhhdCB0aGUgbmV4dCB2YWN1dW0gd2lsbCBuZWVkIHRvIHNldCBp dAorc2VsZWN0IHBnX3RydW5jYXRlX3Zpc2liaWxpdHlfbWFwKCd0ZXN0X3ZhY191bm1vZGlmaWVk X2hlYXAnKTsKKyBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21hcCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1h cnkoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcpOworIHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1h cnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMCwwKQorKDEgcm93KQorCistLSB0 aG91Z2ggdGhlIFZNIGlzIHRydW5jYXRlZCwgdGhlIGhlYXAgcGFnZS1sZXZlbCB2aXNpYmlsaXR5 IGhpbnQsCistLSBQRF9BTExfVklTSUJMRSBzaG91bGQgc3RpbGwgYmUgc2V0CitTRUxFQ1QgKGZs YWdzICYgeCcwMDA0Jzo6aW50KSA8PiAwCisgICAgICAgIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jh d19wYWdlKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnLCAwKSk7CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgdAorKDEgcm93KQorCistLSB2YWN1dW0gc2V0cyB0aGUgVk0KK3ZhY3V1bSB0ZXN0 X3ZhY191bm1vZGlmaWVkX2hlYXA7CitzZWxlY3QgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgn dGVzdF92YWNfdW5tb2RpZmllZF9oZWFwJyk7CisgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDEpCisoMSByb3cpCisKIC0tIHRlc3Qg Y29weSBmcmVlemUKIGNyZWF0ZSB0YWJsZSBjb3B5ZnJlZXplIChhIGludCwgYiBjaGFyKDE1MDAp KTsKIC0tIGxvYWQgYWxsIHJvd3MgdmlhIENPUFkgRlJFRVpFIGFuZCBlbnN1cmUgdGhhdCBhbGwg cGFnZXMgYXJlIHNldCBhbGwtdmlzaWJsZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ192aXNpYmls aXR5L3NxbC9wZ192aXNpYmlsaXR5LnNxbCBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9zcWwvcGdf dmlzaWJpbGl0eS5zcWwKaW5kZXggNWFmMDZlYzViNzYuLjU3YWY4YTBjNWI2IDEwMDY0NAotLS0g YS9jb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsCisrKyBiL2NvbnRy aWIvcGdfdmlzaWJpbGl0eS9zcWwvcGdfdmlzaWJpbGl0eS5zcWwKQEAgLTEsNCArMSw1IEBACiBD UkVBVEUgRVhURU5TSU9OIHBnX3Zpc2liaWxpdHk7CitDUkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNw ZWN0OwogCiAtLQogLS0gcmVjZW50bHktZHJvcHBlZCB0YWJsZQpAQCAtOTQsNiArOTUsMjUgQEAg c2VsZWN0IGNvdW50KCopID4gMCBmcm9tIHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1hcnkoJ3Rlc3Rf cGFydGl0aW9uJyk7CiBzZWxlY3QgKiBmcm9tIHBnX2NoZWNrX2Zyb3plbigndGVzdF9wYXJ0aXRp b24nKTsgLS0gaG9wZWZ1bGx5IG5vbmUKIHNlbGVjdCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21h cCgndGVzdF9wYXJ0aXRpb24nKTsKIAorLS0gdGVzdCB0aGUgY2FzZSB3aGVyZSB2YWN1dW0gcGhh c2UgSSBkb2VzIG5vdCBuZWVkIHRvIG1vZGlmeSB0aGUgaGVhcCBidWZmZXIKKy0tIGFuZCBvbmx5 IG5lZWRzIHRvIHNldCB0aGUgVk0KK2NyZWF0ZSB0YWJsZSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hl YXAoYSBpbnQpOworaW5zZXJ0IGludG8gdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwIHZhbHVlcyAo MSk7Cit2YWN1dW0gKGZyZWV6ZSkgdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwOworc2VsZWN0IHBn X3Zpc2liaWxpdHlfbWFwX3N1bW1hcnkoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcpOworLS0g dGhlIGNoZWNrcG9pbnQgY2xlYW5zIHRoZSBidWZmZXIgZGlydGllZCBieSBmcmVlemluZyB0aGUg c29sZSB0dXBsZQorY2hlY2twb2ludDsKKy0tIHRydW5jYXRpbmcgdGhlIFZNIGVuc3VyZXMgdGhh dCB0aGUgbmV4dCB2YWN1dW0gd2lsbCBuZWVkIHRvIHNldCBpdAorc2VsZWN0IHBnX3RydW5jYXRl X3Zpc2liaWxpdHlfbWFwKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKK3NlbGVjdCBwZ192 aXNpYmlsaXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKy0tIHRo b3VnaCB0aGUgVk0gaXMgdHJ1bmNhdGVkLCB0aGUgaGVhcCBwYWdlLWxldmVsIHZpc2liaWxpdHkg aGludCwKKy0tIFBEX0FMTF9WSVNJQkxFIHNob3VsZCBzdGlsbCBiZSBzZXQKK1NFTEVDVCAoZmxh Z3MgJiB4JzAwMDQnOjppbnQpIDw+IDAKKyAgICAgICAgRlJPTSBwYWdlX2hlYWRlcihnZXRfcmF3 X3BhZ2UoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcsIDApKTsKKy0tIHZhY3V1bSBzZXRzIHRo ZSBWTQordmFjdXVtIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcDsKK3NlbGVjdCBwZ192aXNpYmls aXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKwogLS0gdGVzdCBj b3B5IGZyZWV6ZQogY3JlYXRlIHRhYmxlIGNvcHlmcmVlemUgKGEgaW50LCBiIGNoYXIoMTUwMCkp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMjA4NmE1NzcxOTkuLjJk YTM1Yzg1ZTc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMTIyLDE2 ICsyMTIyLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogb2Yg bGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2li bGUgYW5kCiAJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMKIAkgKi8KLQlpZiAoIWFsbF92aXNpYmxl X2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0LmFsbF92aXNpYmxlKQorCWlmICgocHJlc3VsdC5h bGxfdmlzaWJsZSAmJiAhYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtKSB8fAorCQkocHJlc3Vs dC5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpKQog CXsKIAkJdWludDgJCW9sZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEU7CiAKIAkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKIAkJ CWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQogCiAJCS8qCiAJCSAqIEl0 IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlz IHNldApAQCAtMjEzOSwxNSArMjEzNywyNSBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAq dmFjcmVsLAogCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNl dCBib3RoIGJpdHMgc28gdGhhdCB3ZQogCQkgKiBnZXQgYmFjayBpbiBzeW5jLgogCQkgKgotCQkg KiBOQjogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBu b3Qgc2V0LCB3ZQotCQkgKiBkb24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dl dmVyLCBpZiBjaGVja3N1bXMgYXJlCi0JCSAqIGVuYWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkCi0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0 IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICog R2l2ZW4gdGhhdCB0aGlzIHNpdHVhdGlvbiBzaG91bGQgb25seSBoYXBwZW4gaW4gcmFyZSBjYXNl cyBhZnRlciBhCi0JCSAqIGNyYXNoLCBpdCBpcyBub3Qgd29ydGggb3B0aW1pemluZy4KKwkJICog RXZlbiBpZiBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldCwgd2UgZG9uJ3QgbmVlZCB0byB3 b3JyeSBhYm91dAorCQkgKiB1bm5lY2Vzc2FyaWx5IGRpcnR5aW5nIHRoZSBoZWFwIGJ1ZmZlci4g TmVhcmx5IHRoZSBvbmx5IHNjZW5hcmlvCisJCSAqIHdoZXJlIFBEX0FMTF9WSVNJQkxFIGlzIHNl dCBidXQgdGhlIFZNIGlzIG5vdCBpcyBpZiB0aGUgVk0gd2FzCisJCSAqIHJlbW92ZWQgLS0gYW5k IHRoYXQgaXNuJ3Qgd29ydGggb3B0aW1pemluZyBmb3IuIEFuZCBpZiB3ZSBhZGQgdGhlCisJCSAq IGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gKHdpdGhvdXQgcGFzc2luZyBSRUdCVUZfTk9f Q0hBTkdFUyksCisJCSAqIGl0IG11c3QgYmUgbWFya2VkIGRpcnR5LgogCQkgKi8KIAkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7CiAJCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCisJCS8qCisJCSAq IElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBhbGwtZnJvemVuLCB3ZSBwYXNzIEludmFsaWRUcmFu c2FjdGlvbklkCisJCSAqIGFzIHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24gc3VmZmljaWVudCB0bworCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3Ig UkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKKwkJICogd2VyZSBmcm96ZW4u CisJCSAqLworCQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fAorCQkJICAgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOworCiAJCW9sZF92bWJp dHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKIAkJCQkJCQkJ CSAgIEludmFsaWRYTG9nUmVjUHRyLAogCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1f Y29uZmxpY3RfaG9yaXpvbiwKQEAgLTIyMTksNjUgKzIyMjcsNiBAQCBsYXp5X3NjYW5fcHJ1bmUo TFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJ fQogCi0JLyoKLQkgKiBJZiB0aGUgYWxsLXZpc2libGUgcGFnZSBpcyBhbGwtZnJvemVuIGJ1dCBu b3QgbWFya2VkIGFzIHN1Y2ggeWV0LCBtYXJrCi0JICogaXQgYXMgYWxsLWZyb3plbi4KLQkgKi8K LQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfZnJv emVuICYmCi0JCQkgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIp KQotCXsKLQkJdWludDgJCW9sZF92bWJpdHM7Ci0KLQkJLyoKLQkJICogQXZvaWQgcmVseWluZyBv biBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYXMgYSBwcm94eSBmb3IgdGhlCi0JCSAqIHBh Z2UtbGV2ZWwgUERfQUxMX1ZJU0lCTEUgYml0IGJlaW5nIHNldCwgc2luY2UgaXQgbWlnaHQgaGF2 ZSBiZWNvbWUKLQkJICogc3RhbGUgLS0gZXZlbiB3aGVuIGFsbF92aXNpYmxlIGlzIHNldAotCQkg Ki8KLQkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQotCQl7Ci0JCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKLQkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl9Ci0KLQkJLyoKLQkJICog U2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4gKGFuZCBhbGwtdmlzaWJsZSkgaW4gdGhlIFZNLgotCQkg KgotCQkgKiBXZSBjYW4gcGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhcyBvdXIgY3V0b2ZmX3hp ZCwgc2luY2UgYQotCQkgKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1h a2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPCi0JCSAqIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFn ZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkJICovCi0JCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0JCW9sZF92bWJpdHMgPSB2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFs aWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklk LAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgICBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwotCi0JCS8qCi0JCSAqIFRoZSBwYWdlIHdhcyBsaWtl bHkgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgaW4gdGhlIFZNLiBIb3dldmVyLAotCQkgKiB0aGVy ZSBpcyBhIHNtYWxsIGNoYW5jZSB0aGF0IGl0IHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3ZWVu Ci0JCSAqIHNldHRpbmcgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2luZyB0 aGUgdmlzaWJpbGl0eQotCQkgKiBkdXJpbmcgcHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2YWx1 ZSBvZiBvbGRfdm1iaXRzIGFueXdheSB0bwotCQkgKiBlbnN1cmUgdGhlIHZpc2liaWxpdHkgbWFw IGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgotCQkgKi8KLQkJaWYgKChv bGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFj cmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9m cm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KLQotCQkvKgot CQkgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgcGFnZSB3YXMgbm90IHNldCBhbGwtZnJv emVuIGluIHRoZSBWTQotCQkgKiBhYm92ZSwgc28gd2UgZG9uJ3QgbmVlZCB0byB0ZXN0IHRoZSB2 YWx1ZSBvZiBvbGRfdm1iaXRzLgotCQkgKi8KLQkJZWxzZQotCQl7Ci0JCQl2YWNyZWwtPnZtX25l d19mcm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KLQl9Ci0K IAlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKIH0KIAotLSAKMi40My4wCgo= --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Disposition: attachment; filename="v32-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jrr3d1 RnJvbSA0ZDM3MjQzZjlmYTBkYzRlMjY0YTI4YmNlZTQ0ODc4N2ZiOGQ3ZjY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDExIERlYyAyMDI1IDEwOjQ4OjEzIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzIgMDIvMTZdIEVsaW1pbmF0ZSB1c2Ugb2YgY2FjaGVkIFZNIHZhbHVlIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQoKbGF6eV9zY2FuX3BydW5lKCkgdGFrZXMgYSBwYXJhbWV0ZXIgZnJvbSBs YXp5X3NjYW5faGVhcCgpIGluZGljYXRpbmcKd2hldGhlciB0aGUgcGFnZSB3YXMgbWFya2VkIGFs bC12aXNpYmxlIGluIHRoZSBWTSBhdCB0aGUgdGltZSBpdCB3YXMKbGFzdCBjaGVja2VkIGluIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiBUaGlzIGJlaGF2aW9yIGlzCmhpc3RvcmljYWws IGRhdGluZyBiYWNrIHRvIGNvbW1pdCA2MDgxOTVhM2EzNjUsIHdoZW4gd2UgZGlkIG5vdCBwaW4g dGhlClZNIHBhZ2UgdW50aWwgZGVjaWRpbmcgd2UgbXVzdCByZWFkIGl0LiBOb3cgdGhhdCB0aGUg Vk0gcGFnZSBpcyBhbHJlYWR5CnBpbm5lZCwgdGhlcmUgaXMgbm8gbWVhbmluZ2Z1bCBiZW5lZml0 IHRvIHJlbHlpbmcgb24gYSBjYWNoZWQgVk0gc3RhdHVzLgoKUmVtb3ZpbmcgdGhpcyBjYWNoZWQg dmFsdWUgc2ltcGxpZmllcyB0aGUgbG9naWMgaW4gYm90aCBsYXp5X3NjYW5faGVhcCgpCmFuZCBs YXp5X3NjYW5fcHJ1bmUoKS4gSXQgYWxzbyBjbGFyaWZpZXMgZnV0dXJlIHdvcmsgdGhhdCB3aWxs IHNldCB0aGUKdmlzaWJpbGl0eSBtYXAgb24tYWNjZXNzOiBzdWNoIHBhdGhzIHdpbGwgbm90IGhh dmUgYSBjYWNoZWQgdmFsdWUKYXZhaWxhYmxlLCB3aGljaCB3b3VsZCBtYWtlIHRoZSBsb2dpYyBo YXJkZXIgdG8gcmVhc29uIGFib3V0LiBBbmQKZWxpbWluYXRpbmcgaXQgZW5hYmxlcyB1cyB0byBk ZXRlY3QgYW5kIHJlcGFpciBWTSBjb3JydXB0aW9uIG9uLWFjY2Vzcy4KCkFsb25nIHdpdGggcmVt b3ZpbmcgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgdW5jb25kaXRpb25hbGx5IGNoZWNraW5nIHRoZQp2 aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBwYWdlLCB0aGlzIGNvbW1pdCBhbHNvIG1vdmVz IHRoZSBWTQpjb3JydXB0aW9uIGhhbmRsaW5nIHRvIG9jY3VyIGZpcnN0LiBUaGlzIHJlb3JkZXJp bmcgc2hvdWxkIGhhdmUgbm8KcGVyZm9ybWFuY2UgaW1wYWN0LCBzaW5jZSB0aGUgY2hlY2tzIGFy ZSBpbmV4cGVuc2l2ZSBhbmQgcGVyZm9ybWVkIG9ubHkKb25jZSBwZXIgcGFnZS4gSXQgZG9lcywg aG93ZXZlciwgbWFrZSB0aGUgY29udHJvbCBmbG93IGVhc2llciB0bwp1bmRlcnN0YW5kLiBUaGUg bmV3IHJlc3RydWN0dXJpbmcgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzZXQgdGhlIFZNCmFm dGVyIGZpeGluZyBjb3JydXB0aW9uIChpZiBwcnVuaW5nIGZvdW5kIHRoZSBwYWdlIGFsbC12aXNp YmxlKS4KCk5vdyB0aGF0IG5vIGNhbGxlcnMgb2YgdmlzaWJpbGl0eW1hcF9zZXQoKSB1c2UgaXRz IHJldHVybiB2YWx1ZSwgY2hhbmdlCml0cyAoYW5kIHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cygp KSByZXR1cm4gdHlwZSB0byB2b2lkLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmll cGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2ly aWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBYdW5lbmcgWmhvdSA8eHVuZW5nemhvdUBnbWFpbC5jb20+CkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNUNFQUExNjItNjdCMS00NERBLUI2MEQtOEI2NTcx N0U4QjA1JTQwZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jICAgIHwgMTgyICsrKysrKysrKysrLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmlzaWJpbGl0eW1hcC5jIHwgICA5ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcC5oICAgICAgfCAgMTggKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMo KyksIDExNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggMmRhMzVjODVlNzYuLjM3MzNhMWNiYzQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0yNDgsMTMgKzI0OCw2IEBAIHR5cGVkZWYgZW51bQogICovCiAjZGVmaW5lIEVB R0VSX1NDQU5fUkVHSU9OX1NJWkUgNDA5NgogCi0vKgotICogaGVhcF92YWNfc2Nhbl9uZXh0X2Js b2NrKCkgc2V0cyB0aGVzZSBmbGFncyB0byBjb21tdW5pY2F0ZSBpbmZvcm1hdGlvbgotICogYWJv dXQgdGhlIGJsb2NrIGl0IHJlYWQgdG8gdGhlIGNhbGxlci4KLSAqLwotI2RlZmluZSBWQUNfQkxL X1dBU19FQUdFUl9TQ0FOTkVEICgxIDw8IDApCi0jZGVmaW5lIFZBQ19CTEtfQUxMX1ZJU0lCTEVf QUNDT1JESU5HX1RPX1ZNICgxIDw8IDEpCi0KIHR5cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIHsK IAkvKiBUYXJnZXQgaGVhcCByZWxhdGlvbiBhbmQgaXRzIGluZGV4ZXMgKi8KQEAgLTM2MCw3ICsz NTMsNiBAQCB0eXBlZGVmIHN0cnVjdCBMVlJlbFN0YXRlCiAJLyogU3RhdGUgbWFpbnRhaW5lZCBi eSBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSAqLwogCUJsb2NrTnVtYmVyIGN1cnJlbnRfYmxv Y2s7CS8qIGxhc3QgYmxvY2sgcmV0dXJuZWQgKi8KIAlCbG9ja051bWJlciBuZXh0X3Vuc2tpcHBh YmxlX2Jsb2NrOyAvKiBuZXh0IHVuc2tpcHBhYmxlIGJsb2NrICovCi0JYm9vbAkJbmV4dF91bnNr aXBwYWJsZV9hbGx2aXM7CS8qIGl0cyB2aXNpYmlsaXR5IHN0YXR1cyAqLwogCWJvb2wJCW5leHRf dW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZDsgLyogaWYgaXQgd2FzIGVhZ2VybHkgc2Nhbm5lZCAq LwogCUJ1ZmZlcgkJbmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlcjsJLyogYnVmZmVyIGNvbnRhaW5p bmcgaXRzIFZNIGJpdCAqLwogCkBAIC00MzQsNyArNDI2LDcgQEAgc3RhdGljIGJvb2wgbGF6eV9z Y2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJ CSAgIGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOwogc3RhdGljIGludAlsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCUJsb2NrTnVt YmVyIGJsa25vLCBQYWdlIHBhZ2UsCi0JCQkJCQkJQnVmZmVyIHZtYnVmZmVyLCBib29sIGFsbF92 aXNpYmxlX2FjY29yZGluZ190b192bSwKKwkJCQkJCQlCdWZmZXIgdm1idWZmZXIsCiAJCQkJCQkJ Ym9vbCAqaGFzX2xwZGVhZF9pdGVtcywgYm9vbCAqdm1fcGFnZV9mcm96ZW4pOwogc3RhdGljIGJv b2wgbGF6eV9zY2FuX25vcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJ CQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKQEAgLTEyNzcsNyArMTI2OSw2IEBA IGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkvKiBJbml0aWFsaXplIGZvciB0 aGUgZmlyc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCAqLwogCXZhY3JlbC0+Y3Vy cmVudF9ibG9jayA9IEludmFsaWRCbG9ja051bWJlcjsKIAl2YWNyZWwtPm5leHRfdW5za2lwcGFi bGVfYmxvY2sgPSBJbnZhbGlkQmxvY2tOdW1iZXI7Ci0JdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxl X2FsbHZpcyA9IGZhbHNlOwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVk ID0gZmFsc2U7CiAJdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyID0gSW52YWxpZEJ1 ZmZlcjsKIApAQCAtMTI5MywxMyArMTI4NCwxMyBAQCBsYXp5X3NjYW5faGVhcChMVlJlbFN0YXRl ICp2YWNyZWwpCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWhlYXBfdmFjX3Nj YW5fbmV4dF9ibG9jaywKIAkJCQkJCQkJCQl2YWNyZWwsCi0JCQkJCQkJCQkJc2l6ZW9mKHVpbnQ4 KSk7CisJCQkJCQkJCQkJc2l6ZW9mKGJvb2wpKTsKIAogCXdoaWxlICh0cnVlKQogCXsKIAkJQnVm ZmVyCQlidWY7CiAJCVBhZ2UJCXBhZ2U7Ci0JCXVpbnQ4CQlibGtfaW5mbyA9IDA7CisJCWJvb2wJ CXdhc19lYWdlcl9zY2FubmVkID0gZmFsc2U7CiAJCWludAkJCW5kZWxldGVkID0gMDsKIAkJYm9v bAkJaGFzX2xwZGVhZF9pdGVtczsKIAkJdm9pZAkgICAqcGVyX2J1ZmZlcl9kYXRhID0gTlVMTDsK QEAgLTEzNjgsMTMgKzEzNTksMTMgQEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVs KQogCQlpZiAoIUJ1ZmZlcklzVmFsaWQoYnVmKSkKIAkJCWJyZWFrOwogCi0JCWJsa19pbmZvID0g KigodWludDggKikgcGVyX2J1ZmZlcl9kYXRhKTsKKwkJd2FzX2VhZ2VyX3NjYW5uZWQgPSAqKChi b29sICopIHBlcl9idWZmZXJfZGF0YSk7CiAJCUNoZWNrQnVmZmVySXNQaW5uZWRPbmNlKGJ1Zik7 CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCWJsa25vID0gQnVmZmVyR2V0QmxvY2tO dW1iZXIoYnVmKTsKIAogCQl2YWNyZWwtPnNjYW5uZWRfcGFnZXMrKzsKLQkJaWYgKGJsa19pbmZv ICYgVkFDX0JMS19XQVNfRUFHRVJfU0NBTk5FRCkKKwkJaWYgKHdhc19lYWdlcl9zY2FubmVkKQog CQkJdmFjcmVsLT5lYWdlcl9zY2FubmVkX3BhZ2VzKys7CiAKIAkJLyogUmVwb3J0IGFzIGJsb2Nr IHNjYW5uZWQsIHVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KQEAgLTE0NDUs NyArMTQzNiw2IEBAIGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJaWYgKGdv dF9jbGVhbnVwX2xvY2spCiAJCQluZGVsZXRlZCA9IGxhenlfc2Nhbl9wcnVuZSh2YWNyZWwsIGJ1 ZiwgYmxrbm8sIHBhZ2UsCiAJCQkJCQkJCQkgICB2bWJ1ZmZlciwKLQkJCQkJCQkJCSAgIGJsa19p bmZvICYgVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk0sCiAJCQkJCQkJCQkgICAm aGFzX2xwZGVhZF9pdGVtcywgJnZtX3BhZ2VfZnJvemVuKTsKIAogCQkvKgpAQCAtMTQ2Miw4ICsx NDUyLDcgQEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkgKiBleGNsdWRl IHBhZ2VzIHNraXBwZWQgZHVlIHRvIGNsZWFudXAgbG9jayBjb250ZW50aW9uIGZyb20gZWFnZXIK IAkJICogZnJlZXplIGFsZ29yaXRobSBjYXBzLgogCQkgKi8KLQkJaWYgKGdvdF9jbGVhbnVwX2xv Y2sgJiYKLQkJCShibGtfaW5mbyAmIFZBQ19CTEtfV0FTX0VBR0VSX1NDQU5ORUQpKQorCQlpZiAo Z290X2NsZWFudXBfbG9jayAmJiB3YXNfZWFnZXJfc2Nhbm5lZCkKIAkJewogCQkJLyogQWdncmVz c2l2ZSB2YWN1dW1zIGRvIG5vdCBlYWdlciBzY2FuLiAqLwogCQkJQXNzZXJ0KCF2YWNyZWwtPmFn Z3Jlc3NpdmUpOwpAQCAtMTYzMCw3ICsxNjE5LDYgQEAgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2Nr KFJlYWRTdHJlYW0gKnN0cmVhbSwKIHsKIAlCbG9ja051bWJlciBuZXh0X2Jsb2NrOwogCUxWUmVs U3RhdGUgKnZhY3JlbCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKLQl1aW50OAkJYmxrX2luZm8g PSAwOwogCiAJLyogcmVsaWVzIG9uIEludmFsaWRCbG9ja051bWJlciArIDEgb3ZlcmZsb3dpbmcg dG8gMCBvbiBmaXJzdCBjYWxsICovCiAJbmV4dF9ibG9jayA9IHZhY3JlbC0+Y3VycmVudF9ibG9j ayArIDE7CkBAIC0xNjkzLDggKzE2ODEsOCBAQCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soUmVh ZFN0cmVhbSAqc3RyZWFtLAogCQkgKiBvdGhlcndpc2UgdGhleSB3b3VsZCd2ZSBiZWVuIHVuc2tp cHBhYmxlLgogCQkgKi8KIAkJdmFjcmVsLT5jdXJyZW50X2Jsb2NrID0gbmV4dF9ibG9jazsKLQkJ YmxrX2luZm8gfD0gVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk07Ci0JCSooKHVp bnQ4ICopIHBlcl9idWZmZXJfZGF0YSkgPSBibGtfaW5mbzsKKwkJLyogQmxvY2sgd2FzIG5vdCBl YWdlciBzY2FubmVkICovCisJCSooKGJvb2wgKikgcGVyX2J1ZmZlcl9kYXRhKSA9IGZhbHNlOwog CQlyZXR1cm4gdmFjcmVsLT5jdXJyZW50X2Jsb2NrOwogCX0KIAllbHNlCkBAIC0xNzA2LDExICsx Njk0LDcgQEAgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0gKnN0cmVhbSwKIAkJ QXNzZXJ0KG5leHRfYmxvY2sgPT0gdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKTsKIAog CQl2YWNyZWwtPmN1cnJlbnRfYmxvY2sgPSBuZXh0X2Jsb2NrOwotCQlpZiAodmFjcmVsLT5uZXh0 X3Vuc2tpcHBhYmxlX2FsbHZpcykKLQkJCWJsa19pbmZvIHw9IFZBQ19CTEtfQUxMX1ZJU0lCTEVf QUNDT1JESU5HX1RPX1ZNOwotCQlpZiAodmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2VhZ2VyX3Nj YW5uZWQpCi0JCQlibGtfaW5mbyB8PSBWQUNfQkxLX1dBU19FQUdFUl9TQ0FOTkVEOwotCQkqKCh1 aW50OCAqKSBwZXJfYnVmZmVyX2RhdGEpID0gYmxrX2luZm87CisJCSooKGJvb2wgKikgcGVyX2J1 ZmZlcl9kYXRhKSA9IHZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVkOwogCQly ZXR1cm4gdmFjcmVsLT5jdXJyZW50X2Jsb2NrOwogCX0KIH0KQEAgLTE3MzUsNyArMTcxOSw2IEBA IGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNr aXBzYWxsdmlzKQogCUJsb2NrTnVtYmVyIG5leHRfdW5za2lwcGFibGVfYmxvY2sgPSB2YWNyZWwt Pm5leHRfdW5za2lwcGFibGVfYmxvY2sgKyAxOwogCUJ1ZmZlcgkJbmV4dF91bnNraXBwYWJsZV92 bWJ1ZmZlciA9IHZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlcjsKIAlib29sCQluZXh0 X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQgPSBmYWxzZTsKLQlib29sCQluZXh0X3Vuc2tpcHBh YmxlX2FsbHZpczsKIAogCSpza2lwc2FsbHZpcyA9IGZhbHNlOwogCkBAIC0xNzQ1LDcgKzE3Mjgs NiBAQCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29s ICpza2lwc2FsbHZpcykKIAkJCQkJCQkJCQkJCQkgICBuZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrLAog CQkJCQkJCQkJCQkJCSAgICZuZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyKTsKIAotCQluZXh0X3Vu c2tpcHBhYmxlX2FsbHZpcyA9IChtYXBiaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkg IT0gMDsKIAogCQkvKgogCQkgKiBBdCB0aGUgc3RhcnQgb2YgZWFjaCBlYWdlciBzY2FuIHJlZ2lv biwgbm9ybWFsIHZhY3V1bXMgd2l0aCBlYWdlcgpAQCAtMTc2NCw3ICsxNzQ2LDcgQEAgZmluZF9u ZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2 aXMpCiAJCSAqIEEgYmxvY2sgaXMgdW5za2lwcGFibGUgaWYgaXQgaXMgbm90IGFsbCB2aXNpYmxl IGFjY29yZGluZyB0byB0aGUKIAkJICogdmlzaWJpbGl0eSBtYXAuCiAJCSAqLwotCQlpZiAoIW5l eHRfdW5za2lwcGFibGVfYWxsdmlzKQorCQlpZiAoKG1hcGJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFKSA9PSAwKQogCQl7CiAJCQlBc3NlcnQoKG1hcGJpdHMgJiBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pID09IDApOwogCQkJYnJlYWs7CkBAIC0xODIxLDcgKzE4MDMsNiBAQCBmaW5k X25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2Fs bHZpcykKIAogCS8qIHdyaXRlIHRoZSBsb2NhbCB2YXJpYWJsZXMgYmFjayB0byB2YWNyZWwgKi8K IAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfYmxvY2sgPSBuZXh0X3Vuc2tpcHBhYmxlX2Jsb2Nr OwotCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9hbGx2aXMgPSBuZXh0X3Vuc2tpcHBhYmxlX2Fs bHZpczsKIAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZCA9IG5leHRfdW5z a2lwcGFibGVfZWFnZXJfc2Nhbm5lZDsKIAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfdm1idWZm ZXIgPSBuZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyOwogfQpAQCAtMTk4Miw5ICsxOTYzLDcgQEAg Y21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogICogQ2FsbGVy IG11c3QgaG9sZCBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIGJ1ZmZlci4KICAq CiAgKiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIFZNIGJsb2NrIHdpdGgg dmlzaWJpbGl0eSBpbmZvcm1hdGlvbgotICogZm9yIHRoZSBoZWFwIGJsb2NrLCBibGtuby4gYWxs X3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGlzIHRoZSBzYXZlZAotICogdmlzaWJpbGl0eSBzdGF0 dXMgb2YgdGhlIGhlYXAgYmxvY2sgbG9va2VkIHVwIGVhcmxpZXIgYnkgdGhlIGNhbGxlci4gV2UK LSAqIHdvbid0IHJlbHkgZW50aXJlbHkgb24gdGhpcyBzdGF0dXMsIGFzIGl0IG1heSBiZSBvdXQg b2YgZGF0ZS4KKyAqIGZvciB0aGUgaGVhcCBibG9jaywgYmxrbm8uCiAgKgogICogKmhhc19scGRl YWRfaXRlbXMgaXMgc2V0IHRvIHRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIsIHVw b24gcmV0dXJuCiAgKiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFueSBMUF9ERUFEIGl0ZW1zIGFyZSBz dGlsbCBwcmVzZW50IG9uIHRoZSBwYWdlLgpAQCAtMjAwMSw3ICsxOTgwLDYgQEAgbGF6eV9zY2Fu X3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJCQlCbG9ja051bWJlciBibGtubywKIAkJCQlQ YWdlIHBhZ2UsCiAJCQkJQnVmZmVyIHZtYnVmZmVyLAotCQkJCWJvb2wgYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtLAogCQkJCWJvb2wgKmhhc19scGRlYWRfaXRlbXMsCiAJCQkJYm9vbCAqdm1f cGFnZV9mcm96ZW4pCiB7CkBAIC0yMDE1LDYgKzE5OTMsOCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLAogCQkudmlzdGVzdCA9IHZhY3JlbC0+dmlzdGVzdCwKIAkJLmN1dG9m ZnMgPSAmdmFjcmVsLT5jdXRvZmZzLAogCX07CisJdWludDgJCW9sZF92bWJpdHMgPSAwOworCXVp bnQ4CQluZXdfdm1iaXRzID0gMDsKIAogCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihidWYp ID09IGJsa25vKTsKIApAQCAtMjExNyw3MCArMjA5Nyw3IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJl bFN0YXRlICp2YWNyZWwsCiAJQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19s cGRlYWRfaXRlbXMpKTsKIAlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fCBwcmVzdWx0LmFs bF92aXNpYmxlKTsKIAotCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0 IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92 YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAq IGFsbF9mcm96ZW4gdmFyaWFibGVzCi0JICovCi0JaWYgKChwcmVzdWx0LmFsbF92aXNpYmxlICYm ICFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0pIHx8Ci0JCShwcmVzdWx0LmFsbF9mcm96ZW4g JiYgIVZNX0FMTF9GUk9aRU4ocmVsLCBibGtubywgJnZtYnVmZmVyKSkpCi0JewotCQl1aW50OAkJ b2xkX3ZtYml0czsKLQkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsK LQotCQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9B TExfRlJPWkVOOwotCi0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0 IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZl bCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVj a3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhh dCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkgKgotCQkgKiBFdmVuIGlmIFBEX0FMTF9W SVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0Ci0JCSAq IHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLiBOZWFybHkgdGhlIG9ubHkg c2NlbmFyaW8KLQkJICogd2hlcmUgUERfQUxMX1ZJU0lCTEUgaXMgc2V0IGJ1dCB0aGUgVk0gaXMg bm90IGlzIGlmIHRoZSBWTSB3YXMKLQkJICogcmVtb3ZlZCAtLSBhbmQgdGhhdCBpc24ndCB3b3J0 aCBvcHRpbWl6aW5nIGZvci4gQW5kIGlmIHdlIGFkZCB0aGUKLQkJICogaGVhcCBidWZmZXIgdG8g dGhlIFdBTCBjaGFpbiAod2l0aG91dCBwYXNzaW5nIFJFR0JVRl9OT19DSEFOR0VTKSwKLQkJICog aXQgbXVzdCBiZSBtYXJrZWQgZGlydHkuCi0JCSAqLwotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdl KTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBhZ2UgaXMg YmVpbmcgc2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQKLQkJICog YXMgdGhlIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZm aWNpZW50IHRvCi0JCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQg d2hlbiB0aGUgcGFnZSdzIHR1cGxlcwotCQkgKiB3ZXJlIGZyb3plbi4KLQkJICovCi0JCUFzc2Vy dCghcHJlc3VsdC5hbGxfZnJvemVuIHx8Ci0JCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJl c3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0KLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHlt YXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dS ZWNQdHIsCi0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9u LAotCQkJCQkJCQkJICAgZmxhZ3MpOwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIHdhc24ndCBh bHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUKLQkJICogVk0s IGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KLQkJICovCi0JCWlmICgob2xkX3Zt Yml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCQl7 Ci0JCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLQkJCQkqdm1fcGFn ZV9mcm96ZW4gPSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklT SUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkJIHByZXN1bHQuYWxsX2Zyb3plbikK LQkJewotCQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96 ZW4gPSB0cnVlOwotCQl9Ci0JfQorCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0 dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpOwogCiAJLyoKIAkgKiBBcyBvZiBQb3N0 Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlm IHRoZQpAQCAtMjE4OCw4ICsyMTA1LDggQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBj YWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawogCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNv bmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KIAkgKi8KLQllbHNlIGlmIChhbGxfdmlz aWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJCSB2 aXNpYmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpICE9 IDApCisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYmCisJCShvbGRfdm1iaXRzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKSAhPSAwKQogCXsKIAkJZXJlcG9ydChXQVJOSU5HLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLApAQCAtMjE5OCw2ICsyMTE1LDggQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAogCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIsCiAJCQkJCQkJVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTKTsKKwkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFyICovCisJCW9sZF92bWJpdHMg PSAwOwogCX0KIAogCS8qCkBAIC0yMjI1LDYgKzIxNDQsNzEgQEAgbGF6eV9zY2FuX3BydW5lKExW UmVsU3RhdGUgKnZhY3JlbCwKIAkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAJCXZpc2liaWxpdHlt YXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZlciwKIAkJCQkJCQlWSVNJQklMSVRZ TUFQX1ZBTElEX0JJVFMpOworCQkvKiBWTSBiaXRzIGFyZSBub3cgY2xlYXIgKi8KKwkJb2xkX3Zt Yml0cyA9IDA7CisJfQorCisJaWYgKCFwcmVzdWx0LmFsbF92aXNpYmxlKQorCQlyZXR1cm4gcHJl c3VsdC5uZGVsZXRlZDsKKworCS8qIFNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2Ugdmlz aWJpbGl0eSBoaW50ICovCisJbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7 CisKKwlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQorCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlN QVBfQUxMX0ZST1pFTjsKKworCS8qIE5vdGhpbmcgdG8gZG8gKi8KKwlpZiAob2xkX3ZtYml0cyA9 PSBuZXdfdm1iaXRzKQorCQlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKKworCUFzc2VydChwcmVz dWx0LmFsbF92aXNpYmxlKTsKKworCS8qCisJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNl IHRoYXQgdGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0IHdoaWxlCisJICogdGhlIHBhZ2Ut bGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYgY2hlY2tz dW1zCisJICogYXJlIG5vdCBlbmFibGVkKS4gUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0 aGF0IHdlIGdldCBiYWNrIGluCisJICogc3luYy4KKwkgKgorCSAqIFRoZSBoZWFwIGJ1ZmZlciBt dXN0IGJlIG1hcmtlZCBkaXJ0eSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwgY2hhaW4KKwkg KiB3aGVuIHNldHRpbmcgdGhlIFZNLiBXZSBkb24ndCB3b3JyeSBhYm91dCB1bm5lY2Vzc2FyaWx5 IGRpcnR5aW5nIHRoZQorCSAqIGhlYXAgYnVmZmVyIGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVh ZHkgc2V0LCB0aG91Z2guIEl0IGlzIGV4dHJlbWVseQorCSAqIHJhcmUgdG8gaGF2ZSBhIGNsZWFu IGhlYXAgYnVmZmVyIHdpdGggUERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQgYW5kCisJICogdGhl IFZNIGJpdHMgY2xlYXIsIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluIG9wdGltaXppbmcgaXQuCisJ ICovCisJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CisK KwkvKgorCSAqIElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBhbGwtZnJvemVuLCB3ZSBwYXNzIElu dmFsaWRUcmFuc2FjdGlvbklkIGFzCisJICogdGhlIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNo b3QgY29uZmxpY3QgaG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UKKwkgKiBldmVyeXRoaW5nIHNh ZmUgZm9yIFJFRE8gd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVu LgorCSAqLworCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8CisJCSAgICFUcmFuc2FjdGlv bklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKworCXZpc2liaWxpdHlt YXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAorCQkJCQkgIEludmFsaWRYTG9nUmVjUHRy LAorCQkJCQkgIHZtYnVmZmVyLCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCisJCQkJCSAg bmV3X3ZtYml0cyk7CisKKwkvKgorCSAqIElmIHRoZSBwYWdlIHdhc24ndCBhbHJlYWR5IHNldCBh bGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUgVk0sCisJICogY291bnQgaXQgYXMg bmV3bHkgc2V0IGZvciBsb2dnaW5nLgorCSAqLworCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCisJeworCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3Bh Z2VzKys7CisJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCisJCXsKKwkJCXZhY3JlbC0+dm1fbmV3 X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CisJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOworCQl9 CisJfQorCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9 PSAwICYmCisJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCXsKKwkJdmFjcmVsLT52bV9uZXdfZnJv emVuX3BhZ2VzKys7CisJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJfQogCiAJcmV0dXJuIHBy ZXN1bHQubmRlbGV0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNp YmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5k ZXggMjM4MmQxOGY3MmIuLjMwNDdiZDQ2ZGVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlz aWJpbGl0eW1hcC5jCkBAIC0yNDAsMTAgKzI0MCw4IEBAIHZpc2liaWxpdHltYXBfcGluX29rKEJs b2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZikKICAqIFlvdSBtdXN0IHBhc3MgYSBidWZm ZXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBtYXAgcGFnZSB0byB0aGlzIGZ1bmN0aW9uLgogICog Q2FsbCB2aXNpYmlsaXR5bWFwX3BpbiBmaXJzdCB0byBwaW4gdGhlIHJpZ2h0IG9uZS4gVGhpcyBm dW5jdGlvbiBkb2Vzbid0IGRvCiAgKiBhbnkgSS9PLgotICoKLSAqIFJldHVybnMgdGhlIHN0YXRl IG9mIHRoZSBwYWdlJ3MgVk0gYml0cyBiZWZvcmUgc2V0dGluZyBmbGFncy4KICAqLwotdWludDgK K3ZvaWQKIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJs aywgQnVmZmVyIGhlYXBCdWYsCiAJCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwgQnVmZmVyIHZtQnVm LCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCiAJCQkJICB1aW50OCBmbGFncykKQEAgLTMyMCw3 ICszMTgsNiBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhl YXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCX0KIAogCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9M T0NLX1VOTE9DSyk7Ci0JcmV0dXJuIHN0YXR1czsKIH0KIAogLyoKQEAgLTM0Myw3ICszNDAsNyBA QCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1 ZmZlciBoZWFwQnVmLAogICoKICAqIHJsb2NhdG9yIGlzIHVzZWQgb25seSBmb3IgZGVidWdnaW5n IG1lc3NhZ2VzLgogICovCi11aW50OAordm9pZAogdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJs b2NrTnVtYmVyIGhlYXBCbGssCiAJCQkJCQkgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKIAkJ CQkJCSBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKQEAgLTM4Niw4ICszODMsNiBAQCB2 aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJbWFwW21hcEJ5 dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwogCQlNYXJrQnVmZmVyRGlydHkodm1CdWYpOwog CX0KLQotCXJldHVybiBzdGF0dXM7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAu aAppbmRleCA0N2FkNDg5YTlhNy4uYTAxNjZjNWI0MTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxp dHltYXAuaApAQCAtMzIsMTUgKzMyLDE1IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xl YXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJp bGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAg QnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBf c2V0KFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIg aGVhcEJ1ZiwKLQkJCQkJCQkgICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgICBCdWZmZXIg dm1CdWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCQkJCSAgIHVp bnQ4IGZsYWdzKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoQmxvY2tO dW1iZXIgaGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKLQkJ CQkJCQkJCSAgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOworZXh0ZXJuIHZvaWQgdmlz aWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLAorCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcEJs aywgQnVmZmVyIGhlYXBCdWYsCisJCQkJCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwKKwkJCQkJCQkg IEJ1ZmZlciB2bUJ1ZiwKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKKwkJCQkJ CQkgIHVpbnQ4IGZsYWdzKTsKK2V4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhC bG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3Ms CisJCQkJCQkJCQkgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOwogZXh0ZXJuIHVpbnQ4 IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBC bGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96 ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShS ZWxhdGlvbiByZWwsCi0tIAoyLjQzLjAKCg== --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Disposition: attachment; filename="v32-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jrwy62 RnJvbSAwZmMxYjRjYmI0ZTY3YjE5M2VjYTgzNDdkY2ExYmY4MDUzZDIwMjBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MzY6MzkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMiAwMy8xNl0gUmVmYWN0b3IgbGF6eV9zY2FuX3BydW5lKCkgVk0gY2xlYXIgbG9naWMg aW50bwogaGVscGVyCgpFbmNhcHN1bGF0aW5nIHRoZW0gaW4gYSBoZWxwZXIgbWFrZXMgdGhlIHdo b2xlIGZ1bmN0aW9uIGNsZWFyZXIuIFRoZXJlCmlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIG90aGVy IHRoYW4gbW92aW5nIGl0IGludG8gYSBoZWxwZXIuCgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4u Y2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IHwgMTMyICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDg1IGlu c2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCAzNzMzYTFjYmM0Ny4uNTg1N2ZkMWJmYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKQEAgLTQyNCw2ICs0MjQsMTEgQEAgc3RhdGljIHZvaWQgZmluZF9uZXh0 X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMp Owogc3RhdGljIGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWws IEJ1ZmZlciBidWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJ CQkJCQkJCSAgIGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOworc3RhdGljIGJvb2wg aWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBf YnVmZmVyLAorCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQYWdlIGhlYXBfcGFn ZSwKKwkJCQkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIg dm1idWZmZXIsCisJCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKIHN0YXRpYyBpbnQJbGF6eV9z Y2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQlCbG9ja051 bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCUJ1ZmZlciB2bWJ1ZmZlciwKQEAgLTE5NTcs NiArMTk2Miw4MyBAQCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQg KmIpCiAJcmV0dXJuIHBnX2NtcF91MTYoKihjb25zdCBPZmZzZXROdW1iZXIgKikgYSwgKihjb25z dCBPZmZzZXROdW1iZXIgKikgYik7CiB9CiAKKy8qCisgKiBIZWxwZXIgdG8gY29ycmVjdCBhbnkg Y29ycnVwdGlvbiBkZXRlY3RlZCBvbiBhIGhlYXAgcGFnZSBhbmQgaXRzCisgKiBjb3JyZXNwb25k aW5nIHZpc2liaWxpdHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVmb3JlIHNldHRpbmcg dGhlCisgKiB2aXNpYmlsaXR5IG1hcC4gSXQgZXhhbWluZXMgdGhlIGhlYXAgcGFnZSwgdGhlIGFz c29jaWF0ZWQgVk0gcGFnZSwgYW5kIHRoZQorICogbnVtYmVyIG9mIGRlYWQgaXRlbXMgcHJldmlv dXNseSBpZGVudGlmaWVkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2hp bGUgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgaGVhcAorICogYnVmZmVyLCBhbmQg dGhlIGRlYWQgaXRlbXMgbXVzdCBoYXZlIGJlZW4gZGlzY292ZXJlZCB1bmRlciB0aGF0IHNhbWUg bG9jay4KKworICogVGhlIHByb3ZpZGVkIHZtYml0cyBtdXN0IHJlZmxlY3QgdGhlIGN1cnJlbnQg c3RhdGUgb2YgdGhlIFZNIGJsb2NrCisgKiByZWZlcmVuY2VkIGJ5IHZtYnVmZmVyLiBBbHRob3Vn aCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24gdGhlIFZNIGJ1ZmZlciwgaXQKKyAqIGlzIHBpbm5l ZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBleGNsdXNpdmVseSBsb2NrZWQsIGVuc3VyaW5nIHRo YXQgbm8KKyAqIG90aGVyIGJhY2tlbmQgY2FuIHVwZGF0ZSB0aGUgVk0gYml0cyBjb3JyZXNwb25k aW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBjbGVhcmVk IGNvcnJ1cHRpb24gYW5kIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK2lkZW50 aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwKKwkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCisJCQkJ CQkJICAgaW50IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJ CQkJCSAgIHVpbnQ4IHZtYml0cykKK3sKKwlBc3NlcnQodmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVz KHJlbCwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgPT0gdm1iaXRzKTsKKworCUFzc2VydChCdWZmZXJJ c0xvY2tlZEJ5TWVJbk1vZGUoaGVhcF9idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOwor CisJLyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBz aG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAg SG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICogY2xlYXJlZCBhZnRl ciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hl Y2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlz IGNvcnJ1cHQuCisJICovCisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJ KCh2bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICE9IDApKQorCXsKKwkJZXJlcG9y dChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBl cnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAg Yml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmlsaXR5bWFwX2NsZWFy KHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklU Uyk7CisJCXJldHVybiB0cnVlOworCX0KKworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhl IHZhbHVlIHJldHVybmVkIGJ5CisJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25J ZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBz ZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICog eWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4 bWluIHZhbHVlCisJICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVt b3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMg cmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdl IHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhh dCB3ZQorCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkg YXJlLCBhbmQgdGhlCisJICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJ ICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERf QUxMX1ZJU0lCTEUgc2V0LAorCSAqIGhvd2V2ZXIuCisJICovCisJZWxzZSBpZiAoUGFnZUlzQWxs VmlzaWJsZShoZWFwX3BhZ2UpICYmIG5scGRlYWRfaXRlbXMgPiAwKQorCXsKKwkJZXJlcG9ydChX QVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJt c2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJs ZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKworCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFn ZSk7CisJCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7CisJCXZpc2liaWxpdHltYXBfY2xl YXIocmVsLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJ bGF6eV9zY2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hlYXAoKSBwcnVuaW5nIGFuZCBmcmVlemlu Zy4KICAqCkBAIC0yMDk5LDU0ICsyMTgxLDEwIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRl ICp2YWNyZWwsCiAKIAlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3Jl bC0+cmVsLCBibGtubywgJnZtYnVmZmVyKTsKIAotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5 LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkg KiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0 aGUgYml0IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkg d2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZv cmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmICghUGFnZUlz QWxsVmlzaWJsZShwYWdlKSAmJgotCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURf QklUUykgIT0gMCkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZp c2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBh Z2UgJXUiLAotCQkJCQkJdmFjcmVsLT5yZWxuYW1lLCBibGtubykpKTsKLQotCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKLQkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFyICovCisJaWYgKGlk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYnVmLCBibGtubywgcGFn ZSwKKwkJCQkJCQkJCSAgIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKKwkJCQkJCQkJ CSAgIG9sZF92bWJpdHMpKQogCQlvbGRfdm1iaXRzID0gMDsKLQl9Ci0KLQkvKgotCSAqIEl0J3Mg cG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92 YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3 cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0 byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQu IFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0 IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2 ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFs bCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhh dCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlv bmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMg Y29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9u IGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWVs c2UgaWYgKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKHBhZ2Up KQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JS VVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1h cmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQl2 YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkpOwotCi0JCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7 Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+ cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsK LQkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFyICovCi0JCW9sZF92bWJpdHMgPSAwOwotCX0KIAog CWlmICghcHJlc3VsdC5hbGxfdmlzaWJsZSkKIAkJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7Ci0t IAoyLjQzLjAKCg== --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Disposition: attachment; filename="v32-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1js1s23 RnJvbSA1YzY1ZTczMjQ2YjQ5NjhkZGZhOWQzNzM5ZjUzZDBkODczNGI4NzI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMiAwNC8xNl0gU2V0IHRoZSBWTSBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp CgpUaGlzIGhhcyBubyBpbmRlcGVuZGVudCBiZW5lZml0LiBJdCBpcyBtZWFudCBmb3IgZWFzZSBv ZiByZXZpZXcuIEFzIG9mCnRoaXMgY29tbWl0LCB0aGVyZSBpcyBzdGlsbCBhIHNlcGFyYXRlIFdB TCByZWNvcmQgZW1pdHRlZCBmb3Igc2V0dGluZwp0aGUgVk0gYWZ0ZXIgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEJ1dCBpdCBpcyBlYXNpZXIgdG8gcmV2aWV3IGlmIG1vdmluZwp0aGUgbG9naWMgaW50 byBwcnVuZWhlYXAuYyBpcyBzZXBhcmF0ZSBmcm9tIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1l CldBTCByZWNvcmQuCgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNv bT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAzMTUgKysrKysr KysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgfCAxNTAgKy0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAg ICAgIHwgIDIwICsrCiAzIGZpbGVzIGNoYW5nZWQsIDI5OSBpbnNlcnRpb25zKCspLCAxODYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBhZjc4OGIyOTcx NC4uNTNiNzcxMWFiMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOSw3 ICsxOSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFj Y2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgotI2luY2x1ZGUg ImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5 bWFwLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2lu c2VydC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNDQsNiArNDQsOCBAQCB0 eXBlZGVmIHN0cnVjdAogCWJvb2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0 dGVtcHQgZnJlZXppbmcgdHVwbGVzICovCiAJYm9vbAkJYXR0ZW1wdF9mcmVlemU7CisJLyogd2hl dGhlciBvciBub3QgdG8gYXR0ZW1wdCB1cGRhdGluZyB0aGUgVk0gKi8KKwlib29sCQlhdHRlbXB0 X3VwZGF0ZV92bTsKIAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIAogCS8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQw LDE2ICsxNDIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zy b3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkgKiBiaXRz IGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0ZXIgcHJ1 bmluZy4KIAkgKgotCSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4g b2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNlIGl0IGFz IHRoZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0cy4gIEl0 IGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJvemVuIGlz Ci0JICogdHJ1ZS4KKwkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2VzdCB4bWlu IG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFzIHRoZSBj b25mbGljdCBob3Jpem9uIHdoZW4gc2V0dGluZyB0aGUgVk0gb3Igd2hlbgorCSAqIGZyZWV6aW5n IGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdCBpcyBvbmx5IHZhbGlkIHdoZW4gYWxsIHRo ZSBsaXZlCisJICogdHVwbGVzIG9uIHRoZSBwYWdlIGFyZSBhbGwtdmlzaWJsZS4KIAkgKgogCSAq IE5PVEU6IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluaXRpYWxseSBkb24ndCBpbmNsdWRl IExQX0RFQUQgaXRlbXMuCiAJICogVGhhdCdzIGNvbnZlbmllbnQgZm9yIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKCkgdG8gdXNlIHRoZW0gdG8KLQkgKiBkZWNpZGUgd2hldGhlciB0byBmcmVl emUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4g dmFsdWVzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUKLQkg KiBMUF9ERUFEIGl0ZW1zIGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyIHRvIG9wcG9ydHVuaXN0 aWNhbGx5IGZyZWV6ZS4KKwkgKiBkZWNpZGUgd2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBm cmVlemUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96 ZW4gdmFsdWVzIHVsdGltYXRlbHkgdXNlZCB0byBzZXQgdGhlIFZNIGFyZQorCSAqIGFkanVzdGVk IHRvIGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciBvciBu b3QgdG8KKwkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTE5MSw2ICsxOTQsMTcgQEAgc3RhdGljIHZv aWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFnZSk7CiBzdGF0aWMgYm9vbCBoZWFwX3Bh Z2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJ CSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9faGludF9w cnVuZSwKIAkJCQkJCQkJICBQcnVuZVN0YXRlICpwcnN0YXRlKTsKK3N0YXRpYyBib29sIGlkZW50 aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwKKwkJCQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsIGlu dCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJ CQkgICB1aW50OCB2bWJpdHMpOworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBy dW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJ CSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3Bh Z2UsCisJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgIGludCBubHBkZWFkX2l0 ZW1zLAorCQkJCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAorCQkJCQkJCQkgIHVpbnQ4ICpuZXdf dm1iaXRzKTsKIAogCiAvKgpAQCAtMjgwLDYgKzI5NCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJCQlQcnVuZUZyZWV6ZVBhcmFtcyBw YXJhbXMgPSB7CiAJCQkJLnJlbGF0aW9uID0gcmVsYXRpb24sCiAJCQkJLmJ1ZmZlciA9IGJ1ZmZl ciwKKwkJCQkudm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyLAogCQkJCS5yZWFzb24gPSBQUlVORV9P Tl9BQ0NFU1MsCiAJCQkJLm9wdGlvbnMgPSAwLAogCQkJCS52aXN0ZXN0ID0gdmlzdGVzdCwKQEAg LTM0MSw2ICszNTYsOCBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkvKiBjdXRvZmZzIG11c3QgYmUgcHJvdmlkZWQgaWYgd2Ugd2lsbCBhdHRlbXB0IGZy ZWV6aW5nICovCiAJQXNzZXJ0KCEocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSkgfHwgcGFyYW1zLT5jdXRvZmZzKTsKIAlwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA9IChw YXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUt PmF0dGVtcHRfdXBkYXRlX3ZtID0KKwkJKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVO RV9VUERBVEVfVk0pICE9IDA7CiAJcHJzdGF0ZS0+Y3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsK IAogCS8qCkBAIC0zOTYsNTEgKzQxMyw1NCBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAlwcnN0YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpvbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBWYWN1dW0gbWF5IHVwZGF0ZSB0aGUgVk0gYWZ0 ZXIgd2UncmUgZG9uZS4gIFdlIGNhbiBrZWVwIHRyYWNrIG9mCi0JICogd2hldGhlciB0aGUgcGFn ZSB3aWxsIGJlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGFmdGVyIHBydW5pbmcgYW5kCi0J ICogZnJlZXppbmcgdG8gaGVscCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCisJICogVHJhY2sgd2hl dGhlciB0aGUgcGFnZSBjb3VsZCBiZSBtYXJrZWQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96 ZW4uCisJICogVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6 aW5nIGFuZCBmb3IgdXBkYXRpbmcKKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgKFZNKSBpZiByZXF1 ZXN0ZWQgYnkgdGhlIGNhbGxlci4KIAkgKgotCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gc2V0 cyB0aGUgVk0gYml0cy4gIFRvIHNhdmUgdGhlIGVmZm9ydCwgb25seSBkbwotCSAqIHRoZSBib29r a2VlcGluZyBpZiB0aGUgY2FsbGVyIG5lZWRzIGl0LiAgQ3VycmVudGx5LCB0aGF0J3MgdGllZCB0 bwotCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsIGJ1dCBpdCBjb3VsZCBiZSBhIHNlcGFyYXRl IGZsYWcgaWYgeW91IHdhbnRlZAotCSAqIHRvIHVwZGF0ZSB0aGUgVk0gYml0cyB3aXRob3V0IGFs c28gZnJlZXppbmcgb3IgZnJlZXplIHdpdGhvdXQgYWxzbwotCSAqIHNldHRpbmcgdGhlIFZNIGJp dHMuCisJICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBwZXJmb3JtcyBmcmVlemluZywgYnV0IG90 aGVyIGNhbGxlcnMgbWF5IGluIHRoZQorCSAqIGZ1dHVyZS4gVmlzaWJpbGl0eSBib29ra2VlcGlu ZyBpcyByZXF1aXJlZCBub3QganVzdCBmb3Igc2V0dGluZyB0aGUgVk0KKwkgKiBiaXRzLCBidXQg YWxzbyBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZzogd2Ugb25seSBjb25zaWRlciBmcmVlemlu ZyBpZgorCSAqIHRoZSBwYWdlIHdvdWxkIGJlY29tZSBhbGwtZnJvemVuLCBvciBpZiBpdCB3b3Vs ZCBiZSBhbGwtZnJvemVuIGV4Y2VwdAorCSAqIGZvciBkZWFkIHR1cGxlcyB0aGF0IFZBQ1VVTSB3 aWxsIHJlbW92ZS4gSWYgYXR0ZW1wdF91cGRhdGVfdm0gaXMgZmFsc2UsCisJICogd2Ugd2lsbCBu b3Qgc2V0IHRoZSBWTSBiaXQgZXZlbiBpZiB0aGUgcGFnZSBpcyBmb3VuZCB0byBiZSBhbGwtdmlz aWJsZS4KIAkgKgotCSAqIEluIGFkZGl0aW9uIHRvIHRlbGxpbmcgdGhlIGNhbGxlciB3aGV0aGVy IGl0IGNhbiBzZXQgdGhlIFZNIGJpdCwgd2UKLQkgKiBhbHNvIHVzZSAnYWxsX3Zpc2libGUnIGFu ZCAnYWxsX2Zyb3plbicgZm9yIG91ciBvd24gZGVjaXNpb24tbWFraW5nLiBJZgotCSAqIHRoZSB3 aG9sZSBwYWdlIHdvdWxkIGJlY29tZSBmcm96ZW4sIHdlIGNvbnNpZGVyIG9wcG9ydHVuaXN0aWNh bGx5Ci0JICogZnJlZXppbmcgdHVwbGVzLiAgV2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmcmVlemUg dGhlIHdob2xlIHBhZ2UgaWYgdGhlcmUKLQkgKiBhcmUgdHVwbGVzIHByZXNlbnQgdGhhdCBhcmUg bm90IHZpc2libGUgdG8gZXZlcnlvbmUgb3IgaWYgdGhlcmUgYXJlCi0JICogZGVhZCB0dXBsZXMg d2hpY2ggYXJlIG5vdCB5ZXQgcmVtb3ZhYmxlLiAgSG93ZXZlciwgZGVhZCB0dXBsZXMgd2hpY2gK LQkgKiB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1pbmcgc2hvdWxkIG5vdCBw cmVjbHVkZSB1cyBmcm9tCi0JICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXppbmcuICBCZWNhdXNl IG9mIHRoYXQsIHdlIGRvIG5vdCBpbW1lZGlhdGVseQotCSAqIGNsZWFyIGFsbF92aXNpYmxlIGFu ZCBhbGxfZnJvemVuIHdoZW4gd2Ugc2VlIExQX0RFQUQgaXRlbXMuICBXZSBmaXgKLQkgKiB0aGF0 IGFmdGVyIHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJzLiBXZSBtdXN0IGNvcnJlY3QgYWxsX3Zp c2libGUgYW5kCi0JICogYWxsX2Zyb3plbiBiZWZvcmUgd2UgcmV0dXJuIHRoZW0gdG8gdGhlIGNh bGxlciwgc28gdGhhdCB0aGUgY2FsbGVyCi0JICogZG9lc24ndCBzZXQgdGhlIFZNIGJpdHMgaW5j b3JyZWN0bHkuCisJICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpcyBwYXNzZWQgd2l0 aG91dCBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLAorCSAqIHByc3RhdGUuYWxsX2Zyb3plbiBtdXN0 IGJlIGluaXRpYWxpemVkIHRvIGZhbHNlLCBzaW5jZSB3ZSB3aWxsIG5vdCBjYWxsCisJICogaGVh cF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSgpIGZvciBlYWNoIHR1cGxlLgorCSAqCisJICogRGVhZCB0 dXBsZXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW0gc2hvdWxkIG5v dAorCSAqIHByZXZlbnQgb3Bwb3J0dW5pc3RpYyBmcmVlemluZy4gVGhlcmVmb3JlLCB3ZSBkbyBu b3QgY2xlYXIgYWxsX3Zpc2libGUKKwkgKiBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIGVuY291bnRl ciBMUF9ERUFEIGl0ZW1zLiBJbnN0ZWFkLCB3ZSBjb3JyZWN0CisJICogdGhlbSBhZnRlciBkZWNp ZGluZyB3aGV0aGVyIHRvIGZyZWV6ZSwgYnV0IGJlZm9yZSB1cGRhdGluZyB0aGUgVk0sIHRvCisJ ICogYXZvaWQgc2V0dGluZyB0aGUgVk0gYml0cyBpbmNvcnJlY3RseS4KKwkgKgorCSAqIElmIG5l aXRoZXIgZnJlZXppbmcgbm9yIFZNIHVwZGF0ZXMgYXJlIHJlcXVlc3RlZCwgd2Ugc2tpcCB0aGUg ZXh0cmEKKwkgKiBib29ra2VlcGluZy4gSW4gdGhpcyBjYXNlLCBpbml0aWFsaXppbmcgYWxsX3Zp c2libGUgdG8gZmFsc2UgYWxsb3dzCisJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbCgpIHRvIGJ5cGFzcyB1bm5lY2Vzc2FyeSB3b3JrLgogCSAqLwogCWlmIChwcnN0YXRl LT5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gdHJ1ZTsKIAkJ cHJzdGF0ZS0+YWxsX2Zyb3plbiA9IHRydWU7CiAJfQorCWVsc2UgaWYgKHByc3RhdGUtPmF0dGVt cHRfdXBkYXRlX3ZtKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSB0cnVlOworCQlwcnN0 YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CisJfQogCWVsc2UKIAl7Ci0JCS8qCi0JCSAqIEluaXRp YWxpemluZyB0byBmYWxzZSBhbGxvd3Mgc2tpcHBpbmcgdGhlIHdvcmsgdG8gdXBkYXRlIHRoZW0g aW4KLQkJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgotCQkgKi8K IAkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9 IGZhbHNlOwogCX0KIAogCS8qCi0JICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUg bmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlCi0JICogcGFnZS4gIEluIHRoZSBjb21t b24gY2FzZSwgdGhpcyB3aWxsIGJlIHNldCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB0aGUKLQkg KiBjYWxsZXIgY2FuIHVzZSBmb3IgdXBkYXRpbmcgdGhlIFZNLiAgSWYsIGF0IHRoZSBlbmQgb2Yg ZnJlZXppbmcgYW5kCi0JICogcHJ1bmluZywgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgdGhlcmUg aXMgbm8gcG9zc2liaWxpdHkgdGhhdCBhbnkKLQkgKiBydW5uaW5nIHRyYW5zYWN0aW9uIG9uIHRo ZSBzdGFuZGJ5IGRvZXMgbm90IHNlZSB0dXBsZXMgb24gdGhlIHBhZ2UgYXMKLQkgKiBhbGwtdmlz aWJsZSwgc28gdGhlIGNvbmZsaWN0IGhvcml6b24gcmVtYWlucyBJbnZhbGlkVHJhbnNhY3Rpb25J ZC4KKwkgKiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBs aXZlLCBjb21taXR0ZWQgdHVwbGVzCisJICogb2xkZXIgdGhhbiBPbGRlc3RYbWluIG9uIHRoZSBw YWdlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlCisJICogaWYgdGhlIHBhZ2Ug aXMgYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlz CisJICogbm90IHZpc2libGUgdG8gYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMg bG9uZyBhcyBpdCBpcworCSAqIG1haW50YWluZWQsIGl0IGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0 ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbgorCSAqIHdoZW4gdXBkYXRpbmcgdGhlIFZN IGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkgKi8KIAlwcnN0 YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIH0KQEAg LTc3NSwxMCArNzk1LDE0OCBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJcmV0dXJuIGRvX2ZyZWV6ZTsKIH0KIAorLyoKKyAqIEhlbHBl ciB0byBjb3JyZWN0IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGEgaGVhcCBwYWdlIGFuZCBp dHMKKyAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgcGFnZSBhZnRlciBwcnVuaW5nIGJ1 dCBiZWZvcmUgc2V0dGluZyB0aGUKKyAqIHZpc2liaWxpdHkgbWFwLiBJdCBleGFtaW5lcyB0aGUg aGVhcCBwYWdlLCB0aGUgYXNzb2NpYXRlZCBWTSBwYWdlLCBhbmQgdGhlCisgKiBudW1iZXIgb2Yg ZGVhZCBpdGVtcyBwcmV2aW91c2x5IGlkZW50aWZpZWQuCisgKgorICogVGhpcyBmdW5jdGlvbiBt dXN0IGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHRoZSBoZWFw CisgKiBidWZmZXIsIGFuZCB0aGUgZGVhZCBpdGVtcyBtdXN0IGhhdmUgYmVlbiBkaXNjb3ZlcmVk IHVuZGVyIHRoYXQgc2FtZSBsb2NrLgorICoKKyAqIFRoZSBwcm92aWRlZCB2bWJpdHMgbXVzdCBy ZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBWTSBibG9jaworICogcmVmZXJlbmNlZCBi eSB2bWJ1ZmZlci4gQWx0aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2NrIG9uIHRoZSBWTSBidWZm ZXIsIGl0CisgKiBpcyBwaW5uZWQsIGFuZCB0aGUgaGVhcCBidWZmZXIgaXMgZXhjbHVzaXZlbHkg bG9ja2VkLCBlbnN1cmluZyB0aGF0IG5vCisgKiBvdGhlciBiYWNrZW5kIGNhbiB1cGRhdGUgdGhl IFZNIGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4KKyAqCisgKiBSZXR1cm5z IHRydWUgaWYgaXQgY2xlYXJlZCBjb3JydXB0aW9uIGFuZCBmYWxzZSBvdGhlcndpc2UuCisgKi8K K3N0YXRpYyBib29sCitpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsCisJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1 ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkgICB1aW50OCB2bWJpdHMpCit7CisJQXNzZXJ0KHZpc2li aWxpdHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1idWZmZXIpID09IHZtYml0cyk7 CisKKwlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhlYXBfYnVmZmVyLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpKTsKKworCS8qCisJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKKwkgKiBwYWdlLWxl dmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdv dAorCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxl ZCwgc28gd2UgbXVzdCByZWNoZWNrCisJICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1 ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqLworCWlmICghUGFnZUlzQWxsVmlzaWJs ZShoZWFwX3BhZ2UpICYmCisJCSgodm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAh PSAwKSkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFf Q09SUlVQVEVEKSwKKwkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUg YnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUi LAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7CisKKwkJ dmlzaWJpbGl0eW1hcF9jbGVhcihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJ QklMSVRZTUFQX1ZBTElEX0JJVFMpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIEl0 J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQorCSAqIEdldE9sZGVzdE5vblJl bW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKKwkg KiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJs ZSB0byBldmVyeW9uZQorCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBz ZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQorCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywg YnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcworCSAqIGNvbnNlcnZh dGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBz bWFsbCwKKwkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMg dGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKKwkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZl cnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQorCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcg aXMgY29ycmVjdC4KKwkgKgorCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1z IG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKKwkgKiBob3dldmVyLgorCSAqLwor CWVsc2UgaWYgKFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1zID4g MCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09S UlVQVEVEKSwKKwkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBt YXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJ UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7CisKKwkJUGFnZUNsZWFy QWxsVmlzaWJsZShoZWFwX3BhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOwor CQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KKworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBt YXAgYml0cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCisgKiBmb3IgaGVhcF9ibGsgdXNp bmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgUHJ1bmVTdGF0ZSBhbmQgVk0uCisgKgorICogVGhpcyBm dW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxseSBzZXQgdGhlIFZNIGJpdHMgb3IgcGFnZS1sZXZlbCB2 aXNpYmlsaXR5CisgKiBoaW50LCBQRF9BTExfVklTSUJMRS4KKyAqCisgKiBIb3dldmVyLCBpZiBp dCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZpc2liaWxpdHkgaGludCBvciBWTSBpcworICog Y29ycnVwdGVkLCBpdCB3aWxsIGZpeCB0aGVtIGJ5IGNsZWFyaW5nIHRoZSBWTSBiaXRzIGFuZCB2 aXNpYmlsaXR5IGhpbnQuCisgKiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNy aXRpY2FsIHNlY3Rpb24uCisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3RoIFZNIGJp dHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCByZXR1cm5pbmcgdGhlCisgKiBjdXJyZW50IHZh bHVlIG9mIHRoZSBWTSBiaXRzIGluICpvbGRfdm1iaXRzIGFuZCB0aGUgZGVzaXJlZCBuZXcgdmFs dWUgb2YKKyAqIHRoZSBWTSBiaXRzIGluICpuZXdfdm1iaXRzLgorICoKKyAqIElmIHRoZSBWTSBz aG91bGQgbm90IGJlIHNldCwgaXQgcmV0dXJucyBmYWxzZS4gSWYgd2Ugd29uJ3QgY29uc2lkZXIK KyAqIHVwZGF0aW5nIHRoZSBWTSwgKm9sZF92bWJpdHMgd2lsbCBiZSAwLCByZWdhcmRsZXNzIG9m IHRoZSBjdXJyZW50IHZhbHVlIG9mCisgKiB0aGUgVk0gYml0cy4KKyAqLworc3RhdGljIGJvb2wK K2hlYXBfcGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgIFJlbGF0 aW9uIHJlbGF0aW9uLAorCQkJCQkgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9i dWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAorCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJICBp bnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJICB1aW50OCAqb2xkX3ZtYml0cywKKwkJCQkJICB1aW50 OCAqbmV3X3ZtYml0cykKK3sKKwkqb2xkX3ZtYml0cyA9IDA7CisJKm5ld192bWJpdHMgPSAwOwor CisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSkKKwkJcmV0dXJuIGZhbHNlOworCisJ Km9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxr LAorCQkJCQkJCQkJCSAgICZ2bWJ1ZmZlcik7CisKKwkvKiBXZSBkbyB0aGlzIGV2ZW4gaWYgbm90 IGFsbC12aXNpYmxlICovCisJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxh dGlvbiwgaGVhcF9idWZmZXIsIGhlYXBfYmxrLCBoZWFwX3BhZ2UsCisJCQkJCQkJCQkgICBubHBk ZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgICpvbGRfdm1iaXRzKSkKKwkJKm9sZF92 bWJpdHMgPSAwOworCisJaWYgKCFwcnN0YXRlLT5hbGxfdmlzaWJsZSkKKwkJcmV0dXJuIGZhbHNl OworCisJKm5ld192bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCisJaWYgKHBy c3RhdGUtPmFsbF9mcm96ZW4pCisJCSpuZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTjsKKworCWlmICgqbmV3X3ZtYml0cyA9PSAqb2xkX3ZtYml0cykKKwl7CisJCSpuZXdfdm1i aXRzID0gMDsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCiAKIC8q CiAgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6 ZSB0dXBsZXMgb24gdGhlCi0gKiBzcGVjaWZpZWQgcGFnZS4KKyAqIHNwZWNpZmllZCBwYWdlLiBJ ZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3RhdHVzIGhhcyBjaGFuZ2VkLCB1cGRhdGUgaXQgaW4K KyAqIHRoZSBWTS4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIHBpbiBhbmQgYnVmZmVyIGNsZWFu dXAgbG9jayBvbiB0aGUgcGFnZS4gIE5vdGUgdGhhdCB3ZQogICogZG9uJ3QgdXBkYXRlIHRoZSBG U00gaW5mb3JtYXRpb24gZm9yIHBhZ2Ugb24gY2FsbGVyJ3MgYmVoYWxmLiAgQ2FsbGVyIG1pZ2h0 CkBAIC03OTMsMTIgKzk1MSwxMyBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKiB0dXBsZXMgaWYgaXQncyByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yCiAgKiBpZiBpdCdzIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbwogICogbm93LiAgVGhlICdwYXJhbXMuY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxm cm96ZW5feGlkJyBhbmQKLSAqICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWly ZWQgd2hlbiBmcmVlemluZy4gIFdoZW4KLSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUKLSAqIGFuZCBwcmVz dWx0LT5hbGxfZnJvemVuIGFmdGVyIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvCi0gKiBv cHBvcnR1bmlzdGljYWxseSBmcmVlemUsIHRvIGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbiBi ZSBzZXQuICBUaGV5IGFyZQotICogYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BB R0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLAotICogYmVjYXVzZSBhdCB0aGUg bW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlv bi4KKyAqICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVl emluZy4KKyAqCisgKiBJZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIHNldCBpbiBwYXJh bXMgYW5kIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZgorICogdGhlIHBhZ2UgaGFzIGNoYW5nZWQs IHdlIHdpbGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcgYW5kCisg KiBmcmVlemluZyB0aGUgaGVhcCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1bHQtPm9s ZF92bWJpdHMgYW5kCisgKiBwcmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRlIG9mIHRo ZSBWTSBiZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxlciB0byB1 c2UgaW4gYm9va2tlZXBpbmcuCiAgKgogICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQgcGFyYW1l dGVycyBuZWVkZWQgYnkgY2FsbGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCiAgKiB0dXBsZXMg cmVtb3ZlZCBhbmQgdGhlIG9mZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRlciBw cnVuaW5nLgpAQCAtODIzLDEzICs5ODIsMTggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVs bWluX214aWQpCiB7CiAJQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKKwlCdWZmZXIJ CXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWZmZXIpOworCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihi dWZmZXIpOwogCVBydW5lU3RhdGUJcHJzdGF0ZTsKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJ ZG9fcHJ1bmU7CiAJYm9vbAkJZG9faGludF9wcnVuZTsKKwlib29sCQlkb19zZXRfdm07CiAJYm9v bAkJZGlkX3R1cGxlX2hpbnRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53 YWxfZnBpOworCXVpbnQ4CQluZXdfdm1iaXRzOworCXVpbnQ4CQlvbGRfdm1iaXRzOwogCiAJLyog SW5pdGlhbGl6ZSBwcnN0YXRlICovCiAJcHJ1bmVfZnJlZXplX3NldHVwKHBhcmFtcywKQEAgLTEw MTEsNiArMTE3NSw2NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5Ob0Zy ZWV6ZVBhZ2VSZWxtaW5NeGlkOwogCQl9CiAJfQorCisJLyogTm93IHVwZGF0ZSB0aGUgdmlzaWJp bGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8KKwlBc3NlcnQoIXByc3RhdGUuYWxs X3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKKworCWRvX3NldF92bSA9 IGhlYXBfcGFnZV93aWxsX3NldF92bSgmcHJzdGF0ZSwKKwkJCQkJCQkJCSAgcGFyYW1zLT5yZWxh dGlvbiwKKwkJCQkJCQkJCSAgYmxvY2tubywKKwkJCQkJCQkJCSAgYnVmZmVyLAorCQkJCQkJCQkJ ICBwYWdlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5scGRlYWRf aXRlbXMsCisJCQkJCQkJCQkgICZvbGRfdm1iaXRzLAorCQkJCQkJCQkJICAmbmV3X3ZtYml0cyk7 CisKKwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3aGV0aGVy IG9yIG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBpbnRlbmQg dG8gc2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192bWJpdHMgPT0g MCk7CisKKwkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxpdHkgaGlu dCwgaWYgcmVsZXZhbnQgKi8KKwlpZiAoZG9fc2V0X3ZtKQorCXsKKwkJQXNzZXJ0KHByc3RhdGUu YWxsX3Zpc2libGUpOworCisJCS8qCisJCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0 aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAorCQkgKiB3aGlsZSB0aGUgcGFnZS1s ZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgorCQkgKiBj aGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0 aGF0IHdlCisJCSAqIGdldCBiYWNrIGluIHN5bmMuCisJCSAqCisJCSAqIFRoZSBoZWFwIGJ1ZmZl ciBtdXN0IGJlIG1hcmtlZCBkaXJ0eSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwKKwkJICog Y2hhaW4gd2hlbiBzZXR0aW5nIHRoZSBWTS4gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgdW5uZWNlc3Nh cmlseQorCQkgKiBkaXJ0eWluZyB0aGUgaGVhcCBidWZmZXIgaWYgUERfQUxMX1ZJU0lCTEUgaXMg YWxyZWFkeSBzZXQsIHRob3VnaC4KKwkJICogSXQgaXMgZXh0cmVtZWx5IHJhcmUgdG8gaGF2ZSBh IGNsZWFuIGhlYXAgYnVmZmVyIHdpdGgKKwkJICogUERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQg YW5kIHRoZSBWTSBiaXRzIGNsZWFyLCBzbyB0aGVyZSBpcyBubworCQkgKiBwb2ludCBpbiBvcHRp bWl6aW5nIGl0LgorCQkgKi8KKwkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCU1hcmtCdWZm ZXJEaXJ0eShidWZmZXIpOworCisJCS8qCisJCSAqIElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBh bGwtZnJvemVuLCB3ZSBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkCisJCSAqIGFzIHRoZSBjdXRv ZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0bwor CQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBh Z2UncyB0dXBsZXMKKwkJICogd2VyZSBmcm96ZW4uCisJCSAqLworCQlBc3NlcnQoIXByc3RhdGUu YWxsX2Zyb3plbiB8fAorCQkJICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2Nv bmZsaWN0X2hvcml6b24pKTsKKworCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9u LCBibG9ja25vLCBidWZmZXIsCisJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJICB2 bWJ1ZmZlciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCSAgbmV3X3ZtYml0 cyk7CisJfQorCisJLyogU2F2ZSB0aGUgdm1iaXRzIGZvciBjYWxsZXIgKi8KKwlwcmVzdWx0LT5v bGRfdm1iaXRzID0gb2xkX3ZtYml0czsKKwlwcmVzdWx0LT5uZXdfdm1iaXRzID0gbmV3X3ZtYml0 czsKIH0KIAogCkBAIC0xNDg1LDYgKzE3MDgsOCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5n ZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgog CQkJewogCQkJCVRyYW5zYWN0aW9uSWQgeG1pbjsKIAorCQkJCUFzc2VydChwcnN0YXRlLT5hdHRl bXB0X3VwZGF0ZV92bSk7CisKIAkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0ZWQo aHR1cCkpCiAJCQkJewogCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDU4NTdmZDFiZmI2Li5mZTgxNjI5OWY0YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDI0LDExICs0MjQsNyBAQCBz dGF0aWMgdm9pZCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVs LCBib29sICpza2lwc2FsbHZpcyk7CiBzdGF0aWMgYm9vbCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5 KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJICAgQmxvY2tOdW1iZXIg Ymxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQkJICAgYm9vbCBzaGFyZWxvY2ssIEJ1ZmZlciB2bWJ1 ZmZlcik7Ci1zdGF0aWMgYm9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRp b24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVh cF9ibGssIFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAot CQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKLQkJCQkJCQkJCQkgICB1aW50OCB2bWJpdHMp OworCiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQlCdWZm ZXIgdm1idWZmZXIsCkBAIC0xOTYyLDgzICsxOTU4LDYgQEAgY21wT2Zmc2V0TnVtYmVycyhjb25z dCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCXJldHVybiBwZ19jbXBfdTE2KCooY29uc3QgT2Zm c2V0TnVtYmVyICopIGEsICooY29uc3QgT2Zmc2V0TnVtYmVyICopIGIpOwogfQogCi0vKgotICog SGVscGVyIHRvIGNvcnJlY3QgYW55IGNvcnJ1cHRpb24gZGV0ZWN0ZWQgb24gYSBoZWFwIHBhZ2Ug YW5kIGl0cwotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVyIHBydW5p bmcgYnV0IGJlZm9yZSBzZXR0aW5nIHRoZQotICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4YW1pbmVz IHRoZSBoZWFwIHBhZ2UsIHRoZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKLSAqIG51bWJl ciBvZiBkZWFkIGl0ZW1zIHByZXZpb3VzbHkgaWRlbnRpZmllZC4KLSAqCi0gKiBUaGlzIGZ1bmN0 aW9uIG11c3QgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sgb24gdGhl IGhlYXAKLSAqIGJ1ZmZlciwgYW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVuIGRpc2Nv dmVyZWQgdW5kZXIgdGhhdCBzYW1lIGxvY2suCi0KLSAqIFRoZSBwcm92aWRlZCB2bWJpdHMgbXVz dCByZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBWTSBibG9jawotICogcmVmZXJlbmNl ZCBieSB2bWJ1ZmZlci4gQWx0aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2NrIG9uIHRoZSBWTSBi dWZmZXIsIGl0Ci0gKiBpcyBwaW5uZWQsIGFuZCB0aGUgaGVhcCBidWZmZXIgaXMgZXhjbHVzaXZl bHkgbG9ja2VkLCBlbnN1cmluZyB0aGF0IG5vCi0gKiBvdGhlciBiYWNrZW5kIGNhbiB1cGRhdGUg dGhlIFZNIGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4KLSAqCi0gKiBSZXR1 cm5zIHRydWUgaWYgaXQgY2xlYXJlZCBjb3JydXB0aW9uIGFuZCBmYWxzZSBvdGhlcndpc2UuCi0g Ki8KLXN0YXRpYyBib29sCi1pZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24g cmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGss IFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCSAg IEJ1ZmZlciB2bWJ1ZmZlciwKLQkJCQkJCQkgICB1aW50OCB2bWJpdHMpCi17Ci0JQXNzZXJ0KHZp c2liaWxpdHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1idWZmZXIpID09IHZtYml0 cyk7Ci0KLQlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhlYXBfYnVmZmVyLCBCVUZG RVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRo ZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdl LWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0 IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNh bGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29u Y2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmICghUGFnZUlzQWxsVmlz aWJsZShoZWFwX3BhZ2UpICYmCi0JCSgodm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KSAhPSAwKSkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2li bGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2Ug JXUiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0K LQkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQkvKgotCSAq IEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5v blJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QK LQkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlz aWJsZSB0byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFk eSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJk cywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNl cnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3Nhcmls eSBzbWFsbCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVh bnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8g ZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZs YWcgaXMgY29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0 ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAq LwotCWVsc2UgaWYgKFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1z ID4gMCkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFf Q09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBp cyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0KLQkJUGFnZUNs ZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIp OwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJ CVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JCXJldHVybiB0cnVlOwotCX0KLQotCXJldHVy biBmYWxzZTsKLX0KLQogLyoKICAqCWxhenlfc2Nhbl9wcnVuZSgpIC0tIGxhenlfc2Nhbl9oZWFw KCkgcHJ1bmluZyBhbmQgZnJlZXppbmcuCiAgKgpAQCAtMjA3MCwxMyArMTk4OSwxMiBAQCBsYXp5 X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCVBydW5lRnJlZXplUGFyYW1zIHBhcmFt cyA9IHsKIAkJLnJlbGF0aW9uID0gcmVsLAogCQkuYnVmZmVyID0gYnVmLAorCQkudm1idWZmZXIg PSB2bWJ1ZmZlciwKIAkJLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9TQ0FOLAotCQkub3B0aW9ucyA9 IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJCS5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0sCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52 aXN0ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMsCiAJfTsKLQl1aW50OAkJb2xk X3ZtYml0cyA9IDA7Ci0JdWludDgJCW5ld192bWJpdHMgPSAwOwogCiAJQXNzZXJ0KEJ1ZmZlckdl dEJsb2NrTnVtYmVyKGJ1ZikgPT0gYmxrbm8pOwogCkBAIC0yMTc2LDc1ICsyMDk0LDI1IEBAIGxh enlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyogRGlkIHdlIGZpbmQgTFBfREVB RCBpdGVtcz8gKi8KIAkqaGFzX2xwZGVhZF9pdGVtcyA9IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+ IDApOwogCi0JQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19scGRlYWRfaXRl bXMpKTsKLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fCBwcmVzdWx0LmFsbF92aXNpYmxl KTsKLQotCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWws IGJsa25vLCAmdm1idWZmZXIpOwotCi0JaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlv bih2YWNyZWwtPnJlbCwgYnVmLCBibGtubywgcGFnZSwKLQkJCQkJCQkJCSAgIHByZXN1bHQubHBk ZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKLQkJCQkJCQkJCSAgIG9sZF92bWJpdHMpKQotCQlvbGRfdm1i aXRzID0gMDsKLQotCWlmICghcHJlc3VsdC5hbGxfdmlzaWJsZSkKLQkJcmV0dXJuIHByZXN1bHQu bmRlbGV0ZWQ7Ci0KLQkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxp dHkgaGludCAqLwotCW5ld192bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0J aWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJbmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU47Ci0KLQkvKiBOb3RoaW5nIHRvIGRvICovCi0JaWYgKG9sZF92bWJpdHMgPT0gbmV3 X3ZtYml0cykKLQkJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7Ci0KLQlBc3NlcnQocHJlc3VsdC5h bGxfdmlzaWJsZSk7Ci0KLQkvKgotCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0 IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldCB3aGlsZQotCSAqIHRoZSBwYWdlLWxldmVs IGJpdCBpcyBjbGVhciwgYnV0IHRoZSByZXZlcnNlIGlzIGFsbG93ZWQgKGlmIGNoZWNrc3Vtcwot CSAqIGFyZSBub3QgZW5hYmxlZCkuIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3 ZSBnZXQgYmFjayBpbgotCSAqIHN5bmMuCi0JICoKLQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBi ZSBtYXJrZWQgZGlydHkgYmVmb3JlIGFkZGluZyBpdCB0byB0aGUgV0FMIGNoYWluCi0JICogd2hl biBzZXR0aW5nIHRoZSBWTS4gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgdW5uZWNlc3NhcmlseSBkaXJ0 eWluZyB0aGUKLQkgKiBoZWFwIGJ1ZmZlciBpZiBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNl dCwgdGhvdWdoLiBJdCBpcyBleHRyZW1lbHkKLQkgKiByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFw IGJ1ZmZlciB3aXRoIFBEX0FMTF9WSVNJQkxFIGFscmVhZHkgc2V0IGFuZAotCSAqIHRoZSBWTSBi aXRzIGNsZWFyLCBzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LgotCSAqLwot CVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCi0JLyoK LQkgKiBJZiB0aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJbnZhbGlk VHJhbnNhY3Rpb25JZCBhcwotCSAqIHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNv bmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0byBtYWtlCi0JICogZXZlcnl0aGluZyBzYWZlIGZv ciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkg Ki8KLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fAotCQkgICAhVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0KLQl2aXNpYmlsaXR5bWFwX3Nl dCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJ CQkJICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkgIG5ld192 bWJpdHMpOwogCiAJLyoKIAkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZp c2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhlIFZNLAogCSAqIGNvdW50IGl0IGFzIG5ld2x5 IHNldCBmb3IgbG9nZ2luZy4KIAkgKi8KLQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFKSA9PSAwKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7CiAJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVf cGFnZXMrKzsKLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKKwkJaWYgKChwcmVzdWx0Lm5ld192 bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJCXsKIAkJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVl OwogCQl9CiAJfQotCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJP WkVOKSA9PSAwICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCWVsc2UgaWYgKChwcmVzdWx0 Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAocHJl c3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQogCXsKKwkJ QXNzZXJ0KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAh PSAwKTsKIAkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CiAJCSp2bV9wYWdlX2Zyb3pl biA9IHRydWU7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGNlNDhmYWM0MmJhLi4yYzA3ZTE5N2Rj OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIsNyBAQAogLyogIm9wdGlvbnMiIGZsYWcg Yml0cyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgKi8KICNkZWZpbmUgSEVBUF9QQUdF X1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRQkJCQkoMSA8PCAxKQorI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNCQkJ KDEgPDwgMikKIAogdHlwZWRlZiBzdHJ1Y3QgQnVsa0luc2VydFN0YXRlRGF0YSAqQnVsa0luc2Vy dFN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CkBA IC0yMzgsNiArMjM5LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAJUmVs YXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVu ZWQgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCiAKKwkv KgorCSAqIElmIHdlIHdpbGwgY29uc2lkZXIgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB2 bWJ1ZmZlciBzaG91bGQKKwkgKiBjb250YWluIHRoZSBjb3JyZWN0IGJsb2NrIG9mIHRoZSB2aXNp YmlsaXR5IG1hcCBhbmQgYmUgcGlubmVkLgorCSAqLworCUJ1ZmZlcgkJdm1idWZmZXI7CisKIAkv KgogCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0byBz ZXQgdGhlIFdBTCByZWNvcmQKIAkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdnaW5n IGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KQEAgLTI1Miw2ICsyNTksOSBAQCB0eXBlZGVmIHN0cnVj dCBQcnVuZUZyZWV6ZVBhcmFtcwogCSAqCiAJICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBpbmRp Y2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kCiAJICogd2lsbCByZXR1 cm4gJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisJICoK KwkgKiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgc2V0 IHRoZSBwYWdlJ3Mgc3RhdHVzCisJICogaW4gdGhlIFZNLgogCSAqLwogCWludAkJCW9wdGlvbnM7 CiAKQEAgLTI5OSw2ICszMDksMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQK IAlib29sCQlhbGxfZnJvemVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbjsK IAorCS8qCisJICogb2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBh bmQgYWxsLWZyb3plbiBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRh dGluZyBpdCBkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBhcmUg dGhlIHN0YXRlIG9mIHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICoK KwkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0g b3B0aW9uIGlzIHNldC4KKwkgKi8KKwl1aW50OAkJbmV3X3ZtYml0czsKKwl1aW50OAkJb2xkX3Zt Yml0czsKKwogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhlIHBhZ2UgbWFrZXMgcmVsIHRydW5j YXRpb24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KIAkgKiAndHJ1ZScsIGV2ZW4gaWYgdGhlIHBh Z2UgY29udGFpbnMgTFBfREVBRCBpdGVtcy4gIFZBQ1VVTSB3aWxsIHJlbW92ZQotLSAKMi40My4w Cgo= --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Disposition: attachment; filename="v32-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1js7mk4 RnJvbSAwMTYyYzc4YzQyNzY0Y2RiMGVjZjBhZDgyZWI2MTY5NTRkMTVhOTRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6NTc6MzQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMiAwNS8xNl0gTW92ZSBWTSBhc3NlcnQgaW50byBwcnVuZS9mcmVlemUgY29kZQoKVGhp cyBpcyBhIHN0ZXAgdG93YXJkIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIFdBTCByZWNvcmQg YXMgcHJ1bmluZwphbmQgZnJlZXppbmcuIEl0IG1vdmVzIHRoZSBjaGVjayBvZiB0aGUgaGVhcCBw YWdlIGludG8gcHJ1bmUvZnJlZXplIGNvZGUKYmVmb3JlIHNldHRpbmcgdGhlIFZNLiBUaGlzIGFs bG93cyB1cyB0byByZW1vdmUgc29tZSBmaWVsZHMgb2YgdGhlClBydW5lRnJlZXplUmVzdWx0LgoK UmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgODYgKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgNjggKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwg MjUgKysrLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNTNiNzcxMWFiMjEu Ljg1YWMxYTU0ODgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtOTMyLDYg KzkzMiwzMSBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAly ZXR1cm4gdHJ1ZTsKIH0KIAorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKworLyoKKyAqIFdy YXBwZXIgZm9yIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHdoaWNoIGNhbiBiZSB1 c2VkIGZvciBjYWxsZXJzCisgKiB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBwYWdlLiBD dXJyZW50bHkgYXNzZXJ0LW9ubHksIGJ1dCB0aGVyZSBpcyBubworICogcmVhc29uIG5vdCB0byB1 c2UgaXQgb3V0c2lkZSBvZiBhc3NlcnRzLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCSBUcmFuc2FjdGlv bklkIE9sZGVzdFhtaW4sCisJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCSBUcmFuc2Fj dGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dn aW5nX29mZm51bSkKK3sKKworCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUo cmVsLCBidWYsCisJCQkJCQkJCQkJICBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwK KwkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCisJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkJCQkJICBsb2dnaW5nX29mZm51bSk7Cit9CisjZW5kaWYKKworCiAKIC8qCiAg KiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0 dXBsZXMgb24gdGhlCkBAIC05ODUsNiArMTAxMCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFt cy0+dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9j a051bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKKwlUcmFuc2Fj dGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlQcnVu ZVN0YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwpAQCAt MTE0MiwyMyArMTE2OCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKIAlw cmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CiAJcHJlc3VsdC0+cmVj ZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOwotCXByZXN1 bHQtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfdmlzaWJsZTsKLQlwcmVzdWx0LT5hbGxfZnJv emVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwogCXByZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFz dHVwOwogCi0JLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmluZyB0byB1cGRhdGUgdGhlIHZpc2li aWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAqIGZvciB0aGF0IHJlY29yZCBtdXN0 IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZQotCSAqIHBh Z2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhl Ci0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlv bklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRoYXQgd2UganVzdCBmcm96ZSBhbGwg dGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQKLQkgKiBpbmNsdWRlZCB0aGUgY29u ZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vzbid0IG5lZWQgaXQuCi0JICovCi0J aWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24g PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hv cml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKLQogCXByZXN1bHQtPmxwZGVh ZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zm c2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIApAQCAtMTE3Niw2ICsxMTg3LDQ2 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMs CiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhl IGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVjb3JkCisJICogbXVzdCBiZSB0aGUgbmV3ZXN0 IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0aGUgcGFnZSBpcworCSAqIGNvbXBsZXRl bHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZSB2bV9jb25mbGljdF9o b3Jpem9uCisJICogc2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5j bHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQorCSAqIGp1c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRo ZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVkIHRoZQorCSAqIGNvbmZsaWN0IFhJRCBhbHJl YWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4uCisJICovCisJaWYgKHByc3RhdGUuYWxsX2Zy b3plbikKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCWVs c2UKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlk OworCisJLyoKKwkgKiBEdXJpbmcgaXRzIHNlY29uZCBwYXNzIG92ZXIgdGhlIGhlYXAsIFZBQ1VV TSBjYWxscworCSAqIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHRvIGRldGVybWlu ZSB3aGV0aGVyIGEgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLiBUaGUg bG9naWMgaGVyZSBpcyBzaW1pbGFyLiBBZnRlciBjb21wbGV0aW5nCisJICogcHJ1bmluZyBhbmQg ZnJlZXppbmcsIHVzZSBhbiBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoYXQgb3VyIHJlc3VsdHMKKwkg KiByZW1haW4gY29uc2lzdGVudCB3aXRoIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgp LgorCSAqLworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0ZS5hbGxfdmlz aWJsZSkKKwl7CisJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQlib29sCQlkZWJ1Z19h bGxfZnJvemVuOworCisJCUFzc2VydChwcmVzdWx0LT5scGRlYWRfaXRlbXMgPT0gMCk7CisKKwkJ QXNzZXJ0KGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIs CisJCQkJCQkJCQkJcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJCSZkZWJ1 Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKTsKKworCQlB c3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOworCisJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAorCQkJICAgZGVidWdfY3V0 b2ZmID09IHZtX2NvbmZsaWN0X2hvcml6b24pOworCX0KKyNlbmRpZgorCiAJLyogTm93IHVwZGF0 ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8KIAlBc3NlcnQo IXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKIApA QCAtMTIyMiwxMiArMTI3MywxMSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZy ZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3 YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKIAkJICogd2VyZSBmcm96ZW4uCiAJCSAq LwotCQlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fAotCQkJICAgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKwkJQXNzZXJ0KCFwcnN0YXRl LmFsbF9mcm96ZW4gfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZtX2NvbmZsaWN0X2hvcml6b24p KTsKIAogCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9uLCBibG9ja25vLCBidWZm ZXIsCiAJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJICB2bWJ1ZmZlciwgcHJlc3Vs dC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCSAgdm1idWZmZXIsIHZtX2NvbmZsaWN0X2hv cml6b24sCiAJCQkJCQkgIG5ld192bWJpdHMpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCmluZGV4IGZlODE2Mjk5ZjRiLi5iN2Q4MzQ5NjlkNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDU5LDIwICs0NTksNiBAQCBzdGF0aWMgdm9pZCBkZWFk X2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXRO dW1iZXIgKgogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwp Owogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAK LSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9u SWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJCQkJIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCSBPZmZzZXROdW1i ZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKLSNlbmRpZgotc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dvdWxk X2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCQkgICBU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFk b2Zmc2V0cywKLQkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAotCQkJCQkJCQkJCSAgIGJv b2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9j dXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwog c3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3Jl bCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRp YyB2b2lkIHVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCkBAIC0y MDM1LDMyICsyMDIxLDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJ dmFjcmVsLT5uZXdfZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQogCi0JLyoKLQkgKiBWQUNVVU0g d2lsbCBjYWxsIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUgc2Vjb25kIHBh c3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zy b3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBv ZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3ZSd2ZSBmaW5p c2hlZCBwcnVuaW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUgaW4gdG90YWwK LQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBh c3NlcnRpb24uCi0JICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlmIChwcmVzdWx0 LmFsbF92aXNpYmxlKQotCXsKLQkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7Ci0JCWJvb2wJ CWRlYnVnX2FsbF9mcm96ZW47Ci0KLQkJQXNzZXJ0KHByZXN1bHQubHBkZWFkX2l0ZW1zID09IDAp OwotCi0JCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwK LQkJCQkJCQkJCQl2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2FsbF9mcm96ZW4s Ci0JCQkJCQkJCQkJJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSk7Ci0KLQkJQXNzZXJ0 KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9 PSBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJLyoKIAkgKiBO b3cgc2F2ZSBkZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UgaW4gdmFj cmVsCiAJICovCkBAIC0zNTIyLDI5ICszNDgyLDYgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVs U3RhdGUgKnZhY3JlbCkKIAl2YWNyZWwtPnB2cyA9IE5VTEw7CiB9CiAKLSNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCi0KLS8qCi0gKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxs X3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycwotICogdGhhdCBleHBlY3Qg bm8gTFBfREVBRCBvbiB0aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBidXQgdGhlcmUg aXMgbm8KLSAqIHJlYXNvbiBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0cy4KLSAqLwot c3RhdGljIGJvb2wKLWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJIGJvb2wgKmFs bF9mcm96ZW4sCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAot CQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCi17Ci0KLQlyZXR1cm4gaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLAotCQkJCQkJCQkJCSAgT2xkZXN0WG1p biwKLQkJCQkJCQkJCQkgIE5VTEwsIDAsCi0JCQkJCQkJCQkJICBhbGxfZnJvemVuLAotCQkJCQkJ CQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgbG9nZ2luZ19vZmZudW0p OwotfQotI2VuZGlmCiAKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHRoZSBoZWFwIHBhZ2UgaW4gYnVm IGlzIGFsbC12aXNpYmxlIGV4Y2VwdCBmb3IgdGhlIGRlYWQKQEAgLTM1NjgsMTUgKzM1MDUsMTIg QEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAq ICAtICpsb2dnaW5nX29mZm51bTogT2Zmc2V0TnVtYmVyIG9mIGN1cnJlbnQgdHVwbGUgYmVpbmcg cHJvY2Vzc2VkOwogICogICAgIHVzZWQgYnkgdmFjdXVtJ3MgZXJyb3IgY2FsbGJhY2sgc3lzdGVt LgogICoKLSAqIENhbGxlcnMgbG9va2luZyB0byB2ZXJpZnkgdGhhdCB0aGUgcGFnZSBpcyBhbHJl YWR5IGFsbC12aXNpYmxlIGNhbiBjYWxsCi0gKiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKS4K LSAqCiAgKiBUaGlzIGxvZ2ljIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBoZWFwX3BydW5lX3JlY29y ZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAgKiBJZiB5b3UgbW9kaWZ5IHRoaXMgZnVuY3Rpb24s IGVuc3VyZSBjb25zaXN0ZW5jeSB3aXRoIHRoYXQgY29kZS4gQW4KICAqIGFzc2VydGlvbiBjcm9z cy1jaGVja3MgdGhhdCBib3RoIHJlbWFpbiBpbiBhZ3JlZW1lbnQuIERvIG5vdCBpbnRyb2R1Y2Ug bmV3CiAgKiBzaWRlLWVmZmVjdHMuCiAgKi8KLXN0YXRpYyBib29sCitib29sCiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCSAg IFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRv ZmZzZXRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDJjMDdlMTk3ZGM4Li5lMGRhMWY3Y2RjYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaApAQCAtMjU3LDggKzI1Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJl ZXplUGFyYW1zCiAJICogSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMg dGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQKIAkgKiBMUF9VTlVTRUQgZHVyaW5nIHBydW5pbmcu CiAJICoKLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwg YWxzbyBmcmVlemUgdHVwbGVzLCBhbmQKLQkgKiB3aWxsIHJldHVybiAnYWxsX3Zpc2libGUnLCAn YWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKwkgKiBIRUFQX1BBR0VfUFJVTkVfRlJF RVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLgogCSAqCiAJICog SEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUg cGFnZSdzIHN0YXR1cwogCSAqIGluIHRoZSBWTS4KQEAgLTI5NCwyMSArMjkzLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlpbnQJCQlsaXZlX3R1cGxlczsKIAlpbnQJCQly ZWNlbnRseV9kZWFkX3R1cGxlczsKIAotCS8qCi0JICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96 ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCi0JICogYml0cyBp biB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdlLCBhZnRlciBwcnVu aW5nLgotCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4gb2Yg bGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVzZSBpdCBhcyB0 aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJdAotCSAqIGlz IG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAwKSwgYW5kIGFs bF9mcm96ZW4gaXMKLQkgKiB0cnVlLgotCSAqCi0JICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRo ZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCi0JICovCi0JYm9vbAkJYWxs X3Zpc2libGU7Ci0JYm9vbAkJYWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0 X2hvcml6b247Ci0KIAkvKgogCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUgYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKIAkgKiB2aXNpYmlsaXR5IG1hcCBi ZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgpAQCAtNDUzLDYg KzQzNywxMyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogLyogaW4gaGVhcC92YWN1dW1sYXp5LmMgKi8KIGV4 dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFj dXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKK2V4dGVy biBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCisJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJ CSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJCQkJCQkJICAgaW50IG5kZWFkb2Zm c2V0cywKKwkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgIFRyYW5z YWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIAogLyogaW4gaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jICov CiBleHRlcm4gYm9vbCBIZWFwVHVwbGVTYXRpc2ZpZXNWaXNpYmlsaXR5KEhlYXBUdXBsZSBodHVw LCBTbmFwc2hvdCBzbmFwc2hvdCwKLS0gCjIuNDMuMAoK --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v32-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jsqso5 RnJvbSBjZGY1Nzc2ZmFkZWFlMzQzMGM2OTI5OTliMzdmOGE3ZWM5NDRiZGExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTY6MTY6MjIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMiAwNi8xNl0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog S2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8g TGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhk SzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgfCAyNzUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDE1NyBpbnNlcnRpb25zKCspLCAxMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCA4NWFjMWE1NDg4Mi4uYjNlYTQyZjFiZTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMDUsNiArMjA1LDExIEBAIHN0YXRpYyBib29sIGhlYXBf cGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCQkgIGludCBubHBk ZWFkX2l0ZW1zLAogCQkJCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkJCQkgIHVpbnQ4 ICpuZXdfdm1iaXRzKTsKK3N0YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9v bCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wgZG9fc2V0X3ZtLAorCQkJCQkJCQkJICB1 aW50OCBvbGRfdm1iaXRzLCB1aW50OCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJICBUcmFuc2FjdGlv bklkIGxhdGVzdF94aWRfcmVtb3ZlZCwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBmcnpfY29u ZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9m Zl94aWQpOwogCiAKIC8qCkBAIC03OTUsNiArODAwLDY4IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlyZXR1cm4gZG9fZnJlZXplOwog fQogCisvKgorICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgd2hvbGUg WExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgorICogb3IgWExPR19IRUFQMl9QUlVORV9PTl9B Q0NFU1MgcmVjb3JkLgorICovCitzdGF0aWMgVHJhbnNhY3Rpb25JZAorZ2V0X2NvbmZsaWN0X3hp ZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRfdm0sCisJCQkJIHVp bnQ4IG9sZF92bWJpdHMsIHVpbnQ4IG5ld192bWJpdHMsCisJCQkJIFRyYW5zYWN0aW9uSWQgbGF0 ZXN0X3hpZF9yZW1vdmVkLCBUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJ CSBUcmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCkKK3sKKwlUcmFuc2FjdGlvbklk IGNvbmZsaWN0X3hpZDsKKworCS8qCisJICogV2UgY2FuIG9taXQgdGhlIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24gaWYgd2UgYXJlIG5vdCBwcnVuaW5nIG9yCisJICogZnJlZXppbmcgYW55IHR1 cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJsZSBwYWdlCisJICogYWxs LWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMgY2FzZSwgYWxsIG9mIHRoZSB0dXBsZXMgb24gdGhl IHBhZ2UgbXVzdAorCSAqIGFscmVhZHkgYmUgdmlzaWJsZSB0byBhbGwgTVZDQyBzbmFwc2hvdHMg b24gdGhlIHN0YW5kYnkuCisJICovCisJaWYgKCFkb19wcnVuZSAmJgorCQkhZG9fZnJlZXplICYm CisJCWRvX3NldF92bSAmJgorCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEUpICE9IDAgJiYKKwkJKG5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9 IDApCisJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCS8qCisJICogVGhlIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUgbW9z dAorCSAqIGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFu eSBvZiB0aGUgcG9zc2libGUKKwkgKiBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2ls bCBwcnVuZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMgb24KKwkgKiB0aGUgc3RhbmRieSBvbGRl ciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZSBtb3N0IHJlY2VudGx5IHJlbW92ZWQKKwkg KiB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwgY29uZmxpY3QuICBJZiB0aGlzIHJl Y29yZCB3aWxsIGZyZWV6ZQorCSAqIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucyBvbiB0aGUgc3Rh bmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUKKwkgKiB5b3VuZ2VzdCB0dXBsZSB0aGlzIHJl Y29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgorCSAqLworCWNvbmZsaWN0X3hpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgdXBkYXRpbmcgdGhlIFZN LCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1vc3QgYWx3YXlzIHRoZQorCSAqIHZpc2liaWxp dHkgY3V0b2ZmIFhJRC4KKwkgKgorCSAqIFNlcGFyYXRlbHksIGlmIHdlIGFyZSBmcmVlemluZyBh bnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24sIHdlIGNhbgorCSAqIHVzZSB0aGUgdmlzaWJp bGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGljdCBob3Jpem9uIGlmIHRoZSBwYWdlIHdpbGwK KwkgKiBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBpZiB0aGVyZSBhcmUgTFBfREVB RCBsaW5lIHBvaW50ZXJzCisJICogYmVjYXVzZSB3ZSBpZ25vcmVkIHRob3NlIHdoZW4gbWFpbnRh aW5pbmcgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZC4KKwkgKiBUaGlzIHdpbGwgaGF2ZSBiZWVu IGNhbGN1bGF0ZWQgZWFybGllciBhcyB0aGUgZnJ6X2NvbmZsaWN0X2hvcml6b24gd2hlbgorCSAq IHdlIGRldGVybWluZWQgd2Ugd291bGQgZnJlZXplLgorCSAqLworCWlmIChkb19zZXRfdm0pCisJ CWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwllbHNlIGlmIChkb19mcmVl emUpCisJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOworCisJLyoKKwkgKiBJ ZiB3ZSBhcmUgcmVtb3ZpbmcgdHVwbGVzIHdpdGggYSB5b3VuZ2VyIHhtYXggdGhhbiBvdXIgc28g ZmFyCisJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3Vy IGhvcml6b24uCisJICovCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGxhdGVzdF94aWRfcmVt b3ZlZCwgY29uZmxpY3RfeGlkKSkKKwkJY29uZmxpY3RfeGlkID0gbGF0ZXN0X3hpZF9yZW1vdmVk OworCisJcmV0dXJuIGNvbmZsaWN0X3hpZDsKK30KKwogLyoKICAqIEhlbHBlciB0byBjb3JyZWN0 IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGEgaGVhcCBwYWdlIGFuZCBpdHMKICAqIGNvcnJl c3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgcGFnZSBhZnRlciBwcnVuaW5nIGJ1dCBiZWZvcmUgc2V0 dGluZyB0aGUKQEAgLTEwMTAsNyArMTA3Nyw2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFtcy0+ dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051 bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKLQlUcmFuc2FjdGlv bklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlQcnVuZVN0 YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwpAQCAtMTAx OCw2ICsxMDg0LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAlib29sCQlkb19zZXRfdm07CiAJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBp OwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53YWxfZnBpOworCVRyYW5zYWN0aW9u SWQgY29uZmxpY3RfeGlkOwogCXVpbnQ4CQluZXdfdm1iaXRzOwogCXVpbnQ4CQlvbGRfdm1iaXRz OwogCkBAIC0xMDgxLDYgKzExNDgsMzcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1 bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUu YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJz dGF0ZS5hbGxfdmlzaWJsZSk7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0 YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIHRvIHNl dCB0aGUgVk0gYml0cyBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSBhbmQKKwkgKiB0 aGUgYWxsX3Zpc2libGUvYWxsX2Zyb3plbiBmbGFncy4KKwkgKi8KKwlkb19zZXRfdm0gPSBoZWFw X3BhZ2Vfd2lsbF9zZXRfdm0oJnByc3RhdGUsCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24s CisJCQkJCQkJCQkgIGJsb2Nrbm8sCisJCQkJCQkJCQkgIGJ1ZmZlciwKKwkJCQkJCQkJCSAgcGFn ZSwKKwkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHByc3RhdGUubHBkZWFkX2l0ZW1z LAorCQkJCQkJCQkJICAmb2xkX3ZtYml0cywKKwkJCQkJCQkJCSAgJm5ld192bWJpdHMpOworCisJ LyoKKwkgKiBuZXdfdm1iaXRzIHNob3VsZCBiZSAwIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBu b3QgdGhlIHBhZ2UgaXMKKwkgKiBhbGwtdmlzaWJsZSBpZiB3ZSBkbyBub3QgaW50ZW5kIHRvIHNl dCB0aGUgVk0uCisJICovCisJQXNzZXJ0KGRvX3NldF92bSB8fCBuZXdfdm1iaXRzID09IDApOwor CisJY29uZmxpY3RfeGlkID0gZ2V0X2NvbmZsaWN0X3hpZChkb19wcnVuZSwgZG9fZnJlZXplLCBk b19zZXRfdm0sCisJCQkJCQkJCQlvbGRfdm1iaXRzLCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJcHJz dGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQsCisJCQkJCQkJCQlwcnN0YXRlLmZyel9jb25mbGljdF9o b3Jpem9uLAorCQkJCQkJCQkJcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpOworCisJLyog TG9jayB2bWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcgYSBjcml0aWNhbCBzZWN0aW9uICovCisJaWYg KGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZF KTsKIAogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNh bCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwpAQCAtMTEwMiwxNCArMTIwMCwxNyBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJCS8q CiAJCSAqIElmIHRoYXQncyBhbGwgd2UgaGFkIHRvIGRvIHRvIHRoZSBwYWdlLCB0aGlzIGlzIGEg bm9uLVdBTC1sb2dnZWQKLQkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBmcmVlemUgb3Ig cHJ1bmUgdGhlIHBhZ2UsIHdlIHdpbGwgbWFyawotCQkgKiB0aGUgYnVmZmVyIGRpcnR5IGJlbG93 LgorCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFn ZSBvciBzZXQKKwkJICogUERfQUxMX1ZJU0lCTEUsIHdlIHdpbGwgbWFyayB0aGUgYnVmZmVyIGRp cnR5IGJlbG93LgorCQkgKgorCQkgKiBTZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGlzIGZ1bGx5IFdB TC1sb2dnZWQgYmVjYXVzZSBpdCBpcyBmb3JiaWRkZW4KKwkJICogZm9yIHRoZSBWTSB0byBiZSBz ZXQgYW5kIFBEX0FMTF9WSVNJQkxFIHRvIGJlIGNsZWFyLgogCQkgKi8KLQkJaWYgKCFkb19mcmVl emUgJiYgIWRvX3BydW5lKQorCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUgJiYgIWRvX3Nl dF92bSkKIAkJCU1hcmtCdWZmZXJEaXJ0eUhpbnQoYnVmZmVyLCB0cnVlKTsKIAl9CiAKLQlpZiAo ZG9fcHJ1bmUgfHwgZG9fZnJlZXplKQorCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUgfHwgZG9f c2V0X3ZtKQogCXsKIAkJLyogQXBwbHkgdGhlIHBsYW5uZWQgaXRlbSBjaGFuZ2VzIGFuZCByZXBh aXIgcGFnZSBmcmFnbWVudGF0aW9uLiAqLwogCQlpZiAoZG9fcHJ1bmUpCkBAIC0xMTIzLDYgKzEy MjQsMjYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJaWYgKGRvX2ZyZWV6ZSkKIAkJCWhlYXBfZnJlZXplX3ByZXBhcmVkX3R1cGxlcyhi dWZmZXIsIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4pOwogCisJCS8qIFNldCB0aGUg dmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2UgdmlzaWJpbGl0eSBoaW50ICovCisJCWlmIChkb19zZXRf dm0pCisJCXsKKwkJCS8qCisJCQkgKiBXaGlsZSBpdCBpcyB2YWxpZCBmb3IgUERfQUxMX1ZJU0lC TEUgdG8gYmUgc2V0IHdoZW4gdGhlCisJCQkgKiBjb3JyZXNwb25kaW5nIFZNIGJpdCBpcyBjbGVh ciwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbQorCQkJICogaW4gc3luYy4KKwkJCSAq CisJCQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBiZSBtYXJrZWQgZGlydHkgYmVmb3JlIGFkZGlu ZyBpdCB0byB0aGUKKwkJCSAqIFdBTCBjaGFpbiB3aGVuIHNldHRpbmcgdGhlIFZNLiBXZSBkb24n dCB3b3JyeSBhYm91dAorCQkJICogdW5uZWNlc3NhcmlseSBkaXJ0eWluZyB0aGUgaGVhcCBidWZm ZXIgaWYgUERfQUxMX1ZJU0lCTEUgaXMKKwkJCSAqIGFscmVhZHkgc2V0LCB0aG91Z2guIEl0IGlz IGV4dHJlbWVseSByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFwCisJCQkgKiBidWZmZXIgd2l0aCBQ RF9BTExfVklTSUJMRSBhbHJlYWR5IHNldCBhbmQgdGhlIFZNIGJpdHMgY2xlYXIsCisJCQkgKiBz byB0aGVyZSBpcyBubyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LgorCQkJICovCisJCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25vLCB2 bWJ1ZmZlciwgbmV3X3ZtYml0cywKKwkJCQkJCQkJCSBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2Nh dG9yKTsKKwkJfQorCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCiAJCS8qCkBAIC0xMTMw LDI5ICsxMjUxLDEyIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAJCSAqLwogCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0 aW9uKSkKIAkJewotCQkJLyoKLQkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3Ig dGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhlCi0JCQkgKiBtb3N0IGNvbnNlcnZhdGl2ZSBv ZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUKLQkJCSAqIHBvc3Np YmxlIG1vZGlmaWNhdGlvbnMuICBJZiB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHR1cGxlcywgYW55 Ci0JCQkgKiB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5kYnkgb2xkZXIgdGhhbiB0aGUgeW91bmdl c3QgeG1heCBvZiB0aGUKLQkJCSAqIG1vc3QgcmVjZW50bHkgcmVtb3ZlZCB0dXBsZSB0aGlzIHJl Y29yZCB3aWxsIHBydW5lIHdpbGwKLQkJCSAqIGNvbmZsaWN0LiAgSWYgdGhpcyByZWNvcmQgd2ls bCBmcmVlemUgdHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25zCi0JCQkgKiBvbiB0aGUgc3RhbmRieSB3 aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwotCQkJICogcmVjb3Jk IHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCi0JCQkgKi8KLQkJCVRyYW5zYWN0aW9uSWQgY29u ZmxpY3RfeGlkOwotCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MocHJzdGF0ZS5mcnpfY29u ZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0J CQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbjsKLQkJCWVsc2UK LQkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKLQogCQkJbG9n X2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJ CQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICovCi0JCQkJCQkJCQkgIDAsCS8qIHZtZmxh Z3MgKi8KKwkJCQkJCQkJCSAgZG9fc2V0X3ZtID8gdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAor CQkJCQkJCQkJICBkb19zZXRfdm0gPyBuZXdfdm1iaXRzIDogMCwKIAkJCQkJCQkJCSAgY29uZmxp Y3RfeGlkLAotCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKKwkJCQkJCQkJCSAgdHJ1 ZSwgLyogY2xlYW51cCBsb2NrICovCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVhc29uLAogCQkJCQkJ CQkJICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuLAogCQkJCQkJCQkJICBwcnN0YXRl LnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIHByc3RhdGUubm93 ZGVhZCwgcHJzdGF0ZS5uZGVhZCwKQEAgLTExNjIsNDMgKzEyNjYsOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJRU5EX0NSSVRfU0VD VElPTigpOwogCi0JLyogQ29weSBpbmZvcm1hdGlvbiBiYWNrIGZvciBjYWxsZXIgKi8KLQlwcmVz dWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7Ci0JcHJlc3VsdC0+bm5ld2xwZGVhZCA9 IHByc3RhdGUubmRlYWQ7Ci0JcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKLQlw cmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7Ci0JcHJlc3VsdC0+cmVj ZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOwotCXByZXN1 bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwotCi0JcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0g cHJzdGF0ZS5scGRlYWRfaXRlbXM7Ci0JLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5 IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwotCi0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUp Ci0JewotCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVu X3hpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlkOwotCQkJKm5ld19y ZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZDsKLQkJfQot CQllbHNlCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVuX3hpZCA9IHByc3RhdGUucGFnZWZyei5Ob0Zy ZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7Ci0JCQkqbmV3X3JlbG1pbl9teGlkID0gcHJzdGF0ZS5wYWdl ZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQ7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIElmIHVwZGF0 aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVj b3JkCi0JICogbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBp ZiB0aGUgcGFnZSBpcwotCSAqIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29u ZmxpY3QgYW5kIHRoZSB2bV9jb25mbGljdF9ob3Jpem9uCi0JICogc2hvdWxkIHJlbWFpbiBJbnZh bGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQotCSAqIGp1 c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVk IHRoZQotCSAqIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4u Ci0JICovCi0JaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwotCWVsc2UKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHBy c3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCWlmIChkb19zZXRfdm0pCisJCUxvY2tCdWZm ZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkvKgogCSAqIER1cmluZyBpdHMg c2Vjb25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVNIGNhbGxzCkBAIC0xMjEzLDcgKzEyODIs OCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3pl bjsKIAotCQlBc3NlcnQocHJlc3VsdC0+bHBkZWFkX2l0ZW1zID09IDApOworCQlBc3NlcnQocHJz dGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJ CUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVy LAogCQkJCQkJCQkJCXByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbiwKQEAgLTEyMjMsNjcgKzEy OTMsMzYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsK IAogCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAg IGRlYnVnX2N1dG9mZiA9PSB2bV9jb25mbGljdF9ob3Jpem9uKTsKKwkJCSAgIGRlYnVnX2N1dG9m ZiA9PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCk7CiAJfQogI2VuZGlmCiAKLQkvKiBO b3cgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgUERfQUxMX1ZJU0lCTEUgaGludCAqLwot CUFzc2VydCghcHJzdGF0ZS5hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0g MCkpOwotCi0JZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKCZwcnN0YXRlLAotCQkJ CQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLAotCQkJCQkJCQkJICBibG9ja25vLAotCQkJCQkJCQkJ ICBidWZmZXIsCi0JCQkJCQkJCQkgIHBhZ2UsCi0JCQkJCQkJCQkgIHZtYnVmZmVyLAotCQkJCQkJ CQkJICBwcnN0YXRlLmxwZGVhZF9pdGVtcywKLQkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCi0JCQkJ CQkJCQkgICZuZXdfdm1iaXRzKTsKKwkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxl ciAqLworCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKKwlwcmVzdWx0LT5u bmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKKwlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5u ZnJvemVuOworCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKKwlw cmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBs ZXM7CisJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJcHJlc3VsdC0+bmV3X3Zt Yml0cyA9IG5ld192bWJpdHM7CisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7CiAK LQkvKgotCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9y IG5vdCB0aGUgcGFnZSBpcwotCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBpbnRlbmQgdG8g c2V0IHRoZSBWTS4KLQkgKi8KLQlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192bWJpdHMgPT0gMCk7 CisJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7CisJLyogdGhl IHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwogCi0J LyogU2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQsIGlmIHJl bGV2YW50ICovCi0JaWYgKGRvX3NldF92bSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkK IAl7Ci0JCUFzc2VydChwcnN0YXRlLmFsbF92aXNpYmxlKTsKLQotCQkvKgotCQkgKiBJdCBzaG91 bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQK LQkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2Ug aXMgYWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuIFJlZ2FyZGxl c3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkg KgotCQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBiZSBtYXJrZWQgZGlydHkgYmVmb3JlIGFkZGlu ZyBpdCB0byB0aGUgV0FMCi0JCSAqIGNoYWluIHdoZW4gc2V0dGluZyB0aGUgVk0uIFdlIGRvbid0 IHdvcnJ5IGFib3V0IHVubmVjZXNzYXJpbHkKLQkJICogZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVy IGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB0aG91Z2guCi0JCSAqIEl0IGlzIGV4 dHJlbWVseSByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFwIGJ1ZmZlciB3aXRoCi0JCSAqIFBEX0FM TF9WSVNJQkxFIGFscmVhZHkgc2V0IGFuZCB0aGUgVk0gYml0cyBjbGVhciwgc28gdGhlcmUgaXMg bm8KLQkJICogcG9pbnQgaW4gb3B0aW1pemluZyBpdC4KLQkJICovCi0JCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQotCQkvKgotCQkgKiBJZiB0 aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJbnZhbGlkVHJhbnNhY3Rp b25JZAotCQkgKiBhcyB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdCBjb25mbGljdCBo b3Jpem9uIHN1ZmZpY2llbnQgdG8KLQkJICogbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8g d2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzCi0JCSAqIHdlcmUgZnJvemVuLgotCQkg Ki8KLQkJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQotCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJl bGF0aW9uLCBibG9ja25vLCBidWZmZXIsCi0JCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJ CQkJICB2bWJ1ZmZlciwgdm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCSAgbmV3X3ZtYml0cyk7 CisJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKKwkJeworCQkJKm5ld19yZWxmcm96ZW5feGlk ID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7CisJCQkqbmV3X3JlbG1p bl9teGlkID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlkOworCQl9CisJCWVs c2UKKwkJeworCQkJKm5ld19yZWxmcm96ZW5feGlkID0gcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXpl UGFnZVJlbGZyb3plblhpZDsKKwkJCSpuZXdfcmVsbWluX214aWQgPSBwcnN0YXRlLnBhZ2Vmcnou Tm9GcmVlemVQYWdlUmVsbWluTXhpZDsKKwkJfQogCX0KLQotCS8qIFNhdmUgdGhlIHZtYml0cyBm b3IgY2FsbGVyICovCi0JcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7Ci0JcHJlc3Vs dC0+bmV3X3ZtYml0cyA9IG5ld192bWJpdHM7CiB9CiAKIAotLSAKMi40My4wCgo= --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v32-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jsvpo6 RnJvbSA4YTNkMDJjY2I5MTY1ZDUzZTUwYzM5MWRkNGQ3MWNjMTA4YzllZjE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzIgMDcvMTZdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggYjdkODM0OTY5ZDYuLmFmYTJjM2FmODMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xODk2LDkgKzE4OTYsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTkxNSwxMyArMTkxOCwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVs LT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCisJCQkv KgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAg cGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8K KwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJ CQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAp OworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVuIHBh Z2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v32-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jszsc7 RnJvbSBlYjUxNmZlZmRmNGIyZGRlMzUzMDZkMzhjNWJjMDdiMmY4ZGUwMTgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzIgMDgvMTZdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTA5ICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyMCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwLmggICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFw ZGVmcy5oICAgfCAgIDkgLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg ICAgfCAgIDEgLQogMTMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzcwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKaW5kZXggMWE5ZTdiZWE1ZDIu LmJjZTc2N2Q3YjcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpAQCAtNTYsOCAr NTYsOCBAQCBtYXNrX3BhZ2VfaGludF9iaXRzKFBhZ2UgcGFnZSkKIAogCS8qCiAJICogRHVyaW5n IHJlcGxheSwgaWYgdGhlIHBhZ2UgTFNOIGhhcyBhZHZhbmNlZCBwYXN0IG91ciBYTE9HIHJlY29y ZCdzIExTTiwKLQkgKiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVh cF94bG9nX3Zpc2libGUoKSBmb3IKLQkgKiBkZXRhaWxzLgorCSAqIHdlIGRvbid0IG1hcmsgdGhl IHBhZ2UgYWxsLXZpc2libGUuIFNlZSBoZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisJICog Zm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBhZDlkNjMzOGVjMi4uZjIxOWM3YTcxY2YgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yNTQyLDExICsyNTQyLDExIEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQpCiAJCXsKIAkJCVBhZ2VTZXRBbGxW aXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJ1ZmZlckdldEJsb2Nr TnVtYmVyKGJ1ZmZlciksCi0JCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAot CQkJCQkJCQkJIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KEJ1 ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOLAorCQkJCQkJCSAgcmVsYXRpb24tPnJkX2xvY2F0b3IpOwogCQl9CiAKIAkJLyoKQEAg LTg4MzEsNTAgKzg4MzEsNiBAQCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxl dGVPcCAqZGVsc3RhdGUpCiAJcmV0dXJuIG5ibG9ja3NmYXZvcmFibGU7CiB9CiAKLS8qCi0gKiBQ ZXJmb3JtIFhMb2dJbnNlcnQgZm9yIGEgaGVhcC12aXNpYmxlIG9wZXJhdGlvbi4gICdibG9jaycg aXMgdGhlIGJsb2NrCi0gKiBiZWluZyBtYXJrZWQgYWxsLXZpc2libGUsIGFuZCB2bV9idWZmZXIg aXMgdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZQotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5 IG1hcCBibG9jay4gIEJvdGggc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIG1vZGlmaWVkCi0gKiBh bmQgZGlydGllZC4KLSAqCi0gKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBjb21lcyBmcm9tIHRo ZSBsYXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcKLSAqIG1hcmtlZCBhbGwtdmlzaWJsZS4g IFJFRE8gcm91dGluZSB1c2VzIGl0IHRvIGdlbmVyYXRlIHJlY292ZXJ5IGNvbmZsaWN0cy4KLSAq Ci0gKiBJZiBjaGVja3N1bXMgb3Igd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCwgd2UgbWF5IGFs c28gZ2VuZXJhdGUgYSBmdWxsLXBhZ2UKLSAqIGltYWdlIG9mIGhlYXBfYnVmZmVyLiBPdGhlcndp c2UsIHdlIG9wdGltaXplIGF3YXkgdGhlIEZQSSAoYnkgc3BlY2lmeWluZwotICogUkVHQlVGX05P X0lNQUdFIGZvciB0aGUgaGVhcCBidWZmZXIpLCBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIgc2hv dWxkICpub3QqCi0gKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLSAqLwotWExvZ1JlY1B0 cgotbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVm ZmVyIHZtX2J1ZmZlciwKLQkJCQkgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpv biwgdWludDggdm1mbGFncykKLXsKLQl4bF9oZWFwX3Zpc2libGUgeGxyZWM7Ci0JWExvZ1JlY1B0 cglyZWNwdHI7Ci0JdWludDgJCWZsYWdzOwotCi0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9i dWZmZXIpKTsKLQlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKLQotCXhscmVjLnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247Ci0JeGxyZWMu ZmxhZ3MgPSB2bWZsYWdzOwotCWlmIChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKHJlbCkpCi0JCXhscmVjLmZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TDsKLQlYTG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9m SGVhcFZpc2libGUpOwotCi0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHZtX2J1ZmZlciwgMCk7Ci0K LQlmbGFncyA9IFJFR0JVRl9TVEFOREFSRDsKLQlpZiAoIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkK LQkJZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCBoZWFw X2J1ZmZlciwgZmxhZ3MpOwotCi0JcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgWExP R19IRUFQMl9WSVNJQkxFKTsKLQotCXJldHVybiByZWNwdHI7Ci19Ci0KIC8qCiAgKiBQZXJmb3Jt IFhMb2dJbnNlcnQgZm9yIGEgaGVhcC11cGRhdGUgb3BlcmF0aW9uLiAgQ2FsbGVyIG11c3QgYWxy ZWFkeQogICogaGF2ZSBtb2RpZmllZCB0aGUgYnVmZmVyKHMpIGFuZCBtYXJrZWQgdGhlbSBkaXJ0 eS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGY3NjUzNDVlOWU0Li45 YTI5ZmRhMzYwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0yMzYs NyArMjM2LDcgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1os IDApOwogCi0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywgdm1idWZmZXIsIHZtZmxh Z3MsIHJsb2NhdG9yKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sIHZtYnVmZmVyLCB2bWZs YWdzLCBybG9jYXRvcik7CiAKIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKIAkJ UGFnZVNldExTTih2bXBhZ2UsIGxzbik7CkBAIC0yNDksMTQyICsyNDksNiBAQCBoZWFwX3hsb2df cHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjb3JkUGFnZVdp dGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBmcmVlc3BhY2UpOwogfQogCi0vKgotICogUmVw bGF5IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRl Z3JpdHkgcmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgK LSAqIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQg dGhlIHBhZ2UtbGV2ZWwKLSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQg d2VyZSB0byBvY2N1ciwgdGhlbiBhIHN1YnNlcXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdv dWxkIGZhaWwgdG8gY2xlYXIgdGhlIHZpc2liaWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZv aWQKLWhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dS ZWNQdHIJbHNuID0gcmVjb3JkLT5FbmRSZWNQdHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9 ICh4bF9oZWFwX3Zpc2libGUgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZt YnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKLQlCdWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwot CVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwotCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRv QWN0aW9uIGFjdGlvbjsKLQotCUFzc2VydCgoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9Y TE9HX1ZBTElEX0JJVFMpID09IHhscmVjLT5mbGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWco cmVjb3JkLCAxLCAmcmxvY2F0b3IsIE5VTEwsICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJl IGFyZSBhbnkgSG90IFN0YW5kYnkgdHJhbnNhY3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHht aW4KLQkgKiBob3Jpem9uIG9sZCBlbm91Z2ggdGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2li bGUgZm9yIHRoZW0sIHRoZXkKLQkgKiBtaWdodCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBp bmRleC1vbmx5IHNjYW4gY2FuIHNraXAgYSBoZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1p Z2h0IGJlIGJldHRlciB0byB0aHJvdyBzb21lIGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUg dGhhdAotCSAqIGZvcmNlcyBhbnkgaW5kZXgtb25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRv IHBlcmZvcm0gaGVhcCBmZXRjaGVzLAotCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5z YWN0aW9uIG91dHJpZ2h0LgotCSAqLwotCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK LQkJCQkJCQkJCQkJeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVM LAotCQkJCQkJCQkJCQlybG9jYXRvcik7Ci0KLQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwg aWYgaXQgc3RpbGwgZXhpc3RzLiBJZiB0aGUgaGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICog dHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUg cGFnZSwgYnV0IHdlJ2QKLQkgKiBiZXR0ZXIgc3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1h cC4KLQkgKi8KLQlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVm ZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2Ug ZG9uJ3QgYnVtcCB0aGUgTFNOIG9mIHRoZSBoZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNp YmlsaXR5Ci0JCSAqIG1hcCBiaXQgKHVubGVzcyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBp cyBlbmFibGVkLCBpbiB3aGljaAotCQkgKiBjYXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMg dG8gdG9ybiBwYWdlIGhhemFyZHMsIGJ1dCBzaW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGlu ZyB0aGUgZXhpc3RpbmcgcGFnZSBjb250ZW50cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBj YXJlLgotCQkgKi8KLQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKLQotCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFn ZVNldExTTihwYWdlLCBsc24pOwotCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQll bHNlIGlmIChhY3Rpb24gPT0gQkxLX1JFU1RPUkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBi bG9jayB3YXMgYmFja2VkIHVwLCB3ZSBhbHJlYWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0J CSAqIG5vdGhpbmcgbW9yZSB0byBkby4gKFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tz dW1zIG9yCi0JCSAqIHdhbF9sb2dfaGludHMgZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChC dWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCi0JewotCQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3Bh Y2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZl cik7Ci0KLQkJLyoKLQkJICogU2luY2UgRlNNIGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVw ZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQKLQkJICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3Rh bmRieXMuICBJZiB0aGUgc3RhbmRieSBpcyBsYXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBW QUNVVU0sIGl0IHdpbGwgc2tpcCB1cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICog ZmlndXJlcyBmb3IgcGFnZXMgdGhhdCBiZWNhbWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4s IGRlcGVuZGluZwotCQkgKiBvbiB0aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29t ZSB3aGVuIEZyZWVTcGFjZU1hcFZhY3V1bQotCQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGlj IGZyZWUgc3BhY2UgdmFsdWVzIHRvIHVwcGVyIEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2Vy dGVycyB0cnkgdG8gdXNlIHN1Y2ggcGFnZXMgb25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJ ICogYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBh cmUgbWFueSBzdWNoCi0JCSAqIHBhZ2VzLgotCQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJv YmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBi ZWNvbWluZyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJl Z2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0J CSAqIEZTTSBkYXRhIGlzIG5vdCBpbiB0aGUgcGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxy ZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZl biBpZiB3ZSBza2lwcGVkIHRoZSBoZWFwIHBhZ2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVy bG9jaywgaXQncwotCSAqIHN0aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4g IEFueSBXQUwgcmVjb3JkIHRoYXQgY2xlYXJzCi0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBk b2VzIHNvIGJlZm9yZSBjaGVja2luZyB0aGUgcGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhh dCBuZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChY TG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9S LCBmYWxzZSwKLQkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0J CVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxu OwotCQl1aW50OAkJdm1iaXRzOwotCi0JCS8qIGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2Fz IHJlYWQgYXMgemVyb3MgKi8KLQkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQo dm1wYWdlLCBCTENLU1osIDApOwotCi0JCS8qIHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAq LwotCQl2bWJpdHMgPSB4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0K LQkJLyoKLQkJICogWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZm ZXIuIEJ1dAotCQkgKiB2aXNpYmlsaXR5bWFwX3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2Vs Zi4KLQkJICovCi0JCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0K LQkJcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQotCQl2aXNpYmls aXR5bWFwX3NldChyZWxuLCBibGtubywgSW52YWxpZEJ1ZmZlciwgbHNuLCB2bWJ1ZmZlciwKLQkJ CQkJCSAgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB2bWJpdHMpOwotCi0JCVJlbGVh c2VCdWZmZXIodm1idWZmZXIpOwotCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7Ci0JfQot CWVsc2UgaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQotCQlVbmxvY2tSZWxlYXNlQnVmZmVy KHZtYnVmZmVyKTsKLX0KLQogLyoKICAqIEdpdmVuIGFuICJpbmZvYml0cyIgZmllbGQgZnJvbSBh biBYTG9nIHJlY29yZCwgc2V0IHRoZSBjb3JyZWN0IGJpdHMgaW4gdGhlCiAgKiBnaXZlbiBpbmZv bWFzayBhbmQgaW5mb21hc2syIGZvciB0aGUgdHVwbGUgdG91Y2hlZCBieSB0aGUgcmVjb3JkLgpA QCAtNzYyLDggKzYyNiw4IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJICoKIAkgKiBEdXJpbmcgcmVjb3ZlcnksIGhvd2V2ZXIsIG5vIGNvbmN1cnJl bnQgd3JpdGVycyBleGlzdC4gVGhlcmVmb3JlLAogCSAqIHVwZGF0aW5nIHRoZSBWTSB3aXRob3V0 IGhvbGRpbmcgdGhlIGhlYXAgcGFnZSBsb2NrIGlzIHNhZmUgZW5vdWdoLiBUaGlzCi0JICogc2Ft ZSBhcHByb2FjaCBpcyB0YWtlbiB3aGVuIHJlcGxheWluZyB4bF9oZWFwX3Zpc2libGUgcmVjb3Jk cyAoc2VlCi0JICogaGVhcF94bG9nX3Zpc2libGUoKSkuCisJICogc2FtZSBhcHByb2FjaCBpcyB0 YWtlbiB3aGVuIHJlcGxheWluZyBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmRzIChzZWUKKwkgKiBo ZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpKS4KIAkgKi8KIAlpZiAoKHhscmVjLT5mbGFncyAm IFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpICYmCiAJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4 dGVuZGVkKHJlY29yZCwgMSwgUkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLApAQCAtNzc1LDExICs2 MzksMTEgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDAp OwogCi0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZtYnVmZmVy LAotCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCSBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBf c2V0KGJsa25vLAorCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSB8CisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCSAgcmxv Y2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRM U04odm1wYWdlLCBsc24pOwpAQCAtMTM2MCw5ICsxMjI0LDYgQEAgaGVhcDJfcmVkbyhYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQ OgogCQkJaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShyZWNvcmQpOwogCQkJYnJlYWs7Ci0JCWNhc2Ug WExPR19IRUFQMl9WSVNJQkxFOgotCQkJaGVhcF94bG9nX3Zpc2libGUocmVjb3JkKTsKLQkJCWJy ZWFrOwogCQljYXNlIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUOgogCQkJaGVhcF94bG9nX211bHRp X2luc2VydChyZWNvcmQpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CmluZGV4IGIzZWE0MmYxYmUxLi5jYWMwOWRmZjMxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTEyNDAsOCArMTI0MCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkgKiBzbyB0aGVyZSBpcyBubyBwb2ludCBp biBvcHRpbWl6aW5nIGl0LgogCQkJICovCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJ CXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25vLCB2bWJ1ZmZlciwgbmV3X3ZtYml0cywK LQkJCQkJCQkJCSBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHlt YXBfc2V0KGJsb2Nrbm8sIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCSAgcGFyYW1zLT5y ZWxhdGlvbi0+cmRfbG9jYXRvcik7CiAJCX0KIAogCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBhZmEyYzNhZjgzMy4uNGQ3ZTE2 MzY1MjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5MTgsMTEgKzE5 MTgsMTEgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCWxvZ19uZXdwYWdlX2J1ZmZlcihidWYsIHRy dWUpOwogCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0 X3ZtYml0cyhibGtubywKLQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJQklMSVRZ TUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCi0J CQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQo Ymxrbm8sCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCSAgdmFj cmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCiAJCQkvKgogCQkJICogRW1pdCBXQUwgZm9yIHNldHRp bmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAgcGFnZSBhbmQKQEAgLTI4MDAsOSArMjgwMCw5 IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkgKiBzZXQgUERfQUxMX1ZJU0lCTEUuCiAJCSAqLwog CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJs a25vLAotCQkJCQkJCQkgdm1idWZmZXIsIHZtZmxhZ3MsCi0JCQkJCQkJCSB2YWNyZWwtPnJlbC0+ cmRfbG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJICB2bWJ1ZmZl ciwgdm1mbGFncywKKwkJCQkJCSAgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCQljb25mbGlj dF94aWQgPSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKaW5kZXggMzA0N2JkNDZkZWYuLmZlNzZiYzM3ZGNlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsxNCw3IEBACiAgKgkJ dmlzaWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlz aWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Ig c2V0dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBj b3JyZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJ IC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5kIGxvZwotICoJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyAtIHNldCBiaXQocykgaW4gYSBwaW5uZWQgcGFnZQorICoJ CXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBw YWdlCiAgKgkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBiaXRzCiAg KgkJdmlzaWJpbGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBzZXQgaW4gdmlz aWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUgLQpAQCAtMjIw LDEwNiArMjE5LDYgQEAgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywg QnVmZmVyIHZtYnVmKQogCXJldHVybiBCdWZmZXJJc1ZhbGlkKHZtYnVmKSAmJiBCdWZmZXJHZXRC bG9ja051bWJlcih2bWJ1ZikgPT0gbWFwQmxvY2s7CiB9CiAKLS8qCi0gKgl2aXNpYmlsaXR5bWFw X3NldCAtIHNldCBiaXQocykgb24gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCi0gKgotICogcmVj cHRyIGlzIHRoZSBMU04gb2YgdGhlIFhMT0cgcmVjb3JkIHdlJ3JlIHJlcGxheWluZywgaWYgd2Un cmUgaW4gcmVjb3ZlcnksCi0gKiBvciBJbnZhbGlkWExvZ1JlY1B0ciBpbiBub3JtYWwgcnVubmlu Zy4gIFRoZSBWTSBwYWdlIExTTiBpcyBhZHZhbmNlZCB0byB0aGUKLSAqIG9uZSBwcm92aWRlZDsg aW4gbm9ybWFsIHJ1bm5pbmcsIHdlIGdlbmVyYXRlIGEgbmV3IFhMT0cgcmVjb3JkIGFuZCBzZXQg dGhlCi0gKiBwYWdlIExTTiB0byB0aGF0IHZhbHVlICh0aG91Z2ggdGhlIGhlYXAgcGFnZSdzIExT TiBtYXkgKm5vdCogYmUgdXBkYXRlZDsKLSAqIHNlZSBiZWxvdykuICBjdXRvZmZfeGlkIGlzIHRo ZSBsYXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcgbWFya2VkCi0gKiBhbGwtdmlzaWJsZTsg aXQgaXMgbmVlZGVkIGZvciBIb3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJhbnNhY3Rp b25JZAotICogaWYgdGhlIHBhZ2UgY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFsc28gYmUg c2V0IHRvIEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiB3aGVuIGEgcGFnZSB0aGF0IGlzIGFscmVh ZHkgYWxsLXZpc2libGUgaXMgYmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICogQ2FsbGVy IGlzIGV4cGVjdGVkIHRvIHNldCB0aGUgaGVhcCBwYWdlJ3MgUERfQUxMX1ZJU0lCTEUgYml0IGJl Zm9yZSBjYWxsaW5nCi0gKiB0aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3ZlcnksIGNhbGxl ciBzaG91bGQgYWxzbyBwYXNzIHRoZSBoZWFwCi0gKiBidWZmZXIuIFdoZW4gY2hlY2tzdW1zIGFy ZSBlbmFibGVkIGFuZCB3ZSdyZSBub3QgaW4gcmVjb3ZlcnksIHdlIG11c3QgYWRkCi0gKiB0aGUg aGVhcCBidWZmZXIgdG8gdGhlIFdBTCBjaGFpbiB0byBwcm90ZWN0IGl0IGZyb20gYmVpbmcgdG9y bi4KLSAqCi0gKiBZb3UgbXVzdCBwYXNzIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3Qg bWFwIHBhZ2UgdG8gdGhpcyBmdW5jdGlvbi4KLSAqIENhbGwgdmlzaWJpbGl0eW1hcF9waW4gZmly c3QgdG8gcGluIHRoZSByaWdodCBvbmUuIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbwotICogYW55 IEkvTy4KLSAqLwotdm9pZAotdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkgIFhMb2dSZWNQdHIgcmVjcHRyLCBC dWZmZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4IGZsYWdz KQotewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxr KTsKLQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7Ci0JdWlu dDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJCXBhZ2U7 Ci0JdWludDgJICAgKm1hcDsKLQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0VfVklTSUJJ TElUWU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAot CQkgZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGspOwotI2VuZGlm Ci0KLQlBc3NlcnQoSW5SZWNvdmVyeSB8fCAhWExvZ1JlY1B0cklzVmFsaWQocmVjcHRyKSk7Ci0J QXNzZXJ0KEluUmVjb3ZlcnkgfHwgUGFnZUlzQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKGhlYXBC dWYpKSk7Ci0JQXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gZmxh Z3MpOwotCi0JLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNl dHRpbmcgYWxsX3Zpc2libGUgYml0ICovCi0JQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJVFlNQVBf QUxMX0ZST1pFTik7Ci0KLQkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFn ZSBwaW5uZWQsIGlmIHByZXNlbnQgKi8KLQlpZiAoQnVmZmVySXNWYWxpZChoZWFwQnVmKSAmJiBC dWZmZXJHZXRCbG9ja051bWJlcihoZWFwQnVmKSAhPSBoZWFwQmxrKQotCQllbG9nKEVSUk9SLCAi d3JvbmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0KLQlBc3Nl cnQoIUJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgfHwKLQkJICAgQnVmZmVySXNMb2NrZWRCeU1lSW5N b2RlKGhlYXBCdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOwotCi0JLyogQ2hlY2sgdGhhdCB3 ZSBoYXZlIHRoZSByaWdodCBWTSBwYWdlIHBpbm5lZCAqLwotCWlmICghQnVmZmVySXNWYWxpZCh2 bUJ1ZikgfHwgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQotCQllbG9n KEVSUk9SLCAid3JvbmcgVk0gYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwot Ci0JcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1CdWYpOwotCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0 Q29udGVudHMocGFnZSk7Ci0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZF KTsKLQotCXN0YXR1cyA9IChtYXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlN QVBfVkFMSURfQklUUzsKLQlpZiAoZmxhZ3MgIT0gc3RhdHVzKQotCXsKLQkJU1RBUlRfQ1JJVF9T RUNUSU9OKCk7Ci0KLQkJbWFwW21hcEJ5dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwotCQlN YXJrQnVmZmVyRGlydHkodm1CdWYpOwotCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0J CXsKLQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocmVjcHRyKSkKLQkJCXsKLQkJCQlBc3NlcnQo IUluUmVjb3ZlcnkpOwotCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLCBoZWFwQnVm LCB2bUJ1ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwotCi0JCQkJLyoKLQkJCQkgKiBJZiBkYXRhIGNo ZWNrc3VtcyBhcmUgZW5hYmxlZCAob3Igd2FsX2xvZ19oaW50cz1vbiksIHdlCi0JCQkJICogbmVl ZCB0byBwcm90ZWN0IHRoZSBoZWFwIHBhZ2UgZnJvbSBiZWluZyB0b3JuLgotCQkJCSAqCi0JCQkJ ICogSWYgbm90LCB0aGVuIHdlIG11c3QgKm5vdCogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04u IEluCi0JCQkJICogdGhpcyBjYXNlLCB0aGUgRlBJIGZvciB0aGUgaGVhcCBwYWdlIHdhcyBvbWl0 dGVkIGZyb20gdGhlCi0JCQkJICogV0FMIHJlY29yZCBpbnNlcnRlZCBhYm92ZSwgc28gaXQgd291 bGQgYmUgaW5jb3JyZWN0IHRvCi0JCQkJICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0J CQkJICovCi0JCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCQl7Ci0JCQkJCVBhZ2UJ CWhlYXBQYWdlID0gQnVmZmVyR2V0UGFnZShoZWFwQnVmKTsKLQotCQkJCQlQYWdlU2V0TFNOKGhl YXBQYWdlLCByZWNwdHIpOwotCQkJCX0KLQkJCX0KLQkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRy KTsKLQkJfQotCi0JCUVORF9DUklUX1NFQ1RJT04oKTsKLQl9Ci0KLQlMb2NrQnVmZmVyKHZtQnVm LCBCVUZGRVJfTE9DS19VTkxPQ0spOwotfQotCiAvKgogICogU2V0IFZNICh2aXNpYmlsaXR5IG1h cCkgZmxhZ3MgaW4gdGhlIFZNIGJsb2NrIGluIHZtQnVmLgogICoKQEAgLTM0MSw5ICsyNDAsOSBA QCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1 ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5IGZvciBkZWJ1Z2dpbmcgbWVz c2FnZXMuCiAgKi8KIHZvaWQKLXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJlciBo ZWFwQmxrLAotCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCi0JCQkJCQkgY29uc3Qg UmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpCit2aXNpYmlsaXR5bWFwX3NldChCbG9ja051bWJlciBo ZWFwQmxrLAorCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKKwkJCQkgIGNvbnN0IFJl bEZpbGVMb2NhdG9yIHJsb2NhdG9yKQogewogCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJM S19UT19NQVBCTE9DSyhoZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01B UEJZVEUoaGVhcEJsayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4 IDAyYWU5MTY1M2MxLi43NWFlNmY5ZDM3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMKQEAgLTM0OSwxMyArMzQ5LDYgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1Ziwg WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0JZWxzZSBpZiAoaW5mbyA9 PSBYTE9HX0hFQVAyX1ZJU0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2libGUgKnhscmVjID0gKHhs X2hlYXBfdmlzaWJsZSAqKSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJzbmFwc2hv dENvbmZsaWN0SG9yaXpvbjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJCQkJIHhscmVjLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJZWxzZSBpZiAoaW5mbyA9 PSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBfbXVsdGlfaW5zZXJ0ICp4 bHJlYyA9ICh4bF9oZWFwX211bHRpX2luc2VydCAqKSByZWM7CkBAIC00NjEsOSArNDU0LDYgQEAg aGVhcDJfaWRlbnRpZnkodWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VV TV9DTEVBTlVQOgogCQkJaWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAiOwogCQkJYnJlYWs7Ci0J CWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJMRSI7Ci0JCQlicmVhazsK IAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0gIk1VTFRJX0lOU0VSVCI7 CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4 IGUyNWRkNmJjMzY2Li5mN2RkYjU2ZmMzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jCkBAIC00NDksNyArNDQ5LDYgQEAgaGVhcDJfZGVjb2RlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQljYXNlIFhMT0dfSEVB UDJfUFJVTkVfT05fQUNDRVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU46 CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKLQkJY2FzZSBYTE9HX0hF QVAyX1ZJU0lCTEU6CiAJCWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFURUQ6CiAJCQlicmVhazsK IAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBhZmZmYWI3NzEwNi4u Zjg2ODFkY2M5YzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTQ3NSwxMiArNDc1 LDEyIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b24sCiAJICogSWYgd2UgZ2V0IHBhc3NlZCBJbnZhbGlkVHJh bnNhY3Rpb25JZCB0aGVuIHdlIGRvIG5vdGhpbmcgKG5vIGNvbmZsaWN0KS4KIAkgKgogCSAqIFRo aXMgY2FuIGhhcHBlbiB3aGVuIHJlcGxheWluZyBhbHJlYWR5LWFwcGxpZWQgV0FMIHJlY29yZHMg YWZ0ZXIgYQotCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcg YW4gWExPR19IRUFQMl9WSVNJQkxFCi0JICogcmVjb3JkIHRoYXQgbWFya3MgYXMgZnJvemVuIGEg cGFnZSB3aGljaCB3YXMgYWxyZWFkeSBhbGwtdmlzaWJsZS4gIEl0J3MKLQkgKiBhbHNvIHF1aXRl IGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleCBkZWxldGlvbgotCSAq IChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBhIHJl Y292ZXJ5IGNvbmZsaWN0Ci0JICogd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0aW9u IG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UgYmVmb3JlCi0JICogcmVwbGF5IG9mIHRoZSBkZWxl dGlvbiByZWNvcmQgaXRzZWxmKS4KKwkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9yIHdo ZW4gcmVwbGF5aW5nIGEgcmVjb3JkIHRoYXQgbWFya3MgYXMKKwkgKiBmcm96ZW4gYSBwYWdlIHdo aWNoIHdhcyBhbHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eQorCSAq IG1hcC4gIEl0J3MgYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJp bmcgaW5kZXgKKwkgKiBkZWxldGlvbiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlv biBjYW4gcmVhc29uIHRoYXQgYSByZWNvdmVyeQorCSAqIGNvbmZsaWN0IHdoaWNoIGlzIHN1ZmZp Y2llbnQgZm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlCisJICogYmVm b3JlIHJlcGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCiAJICovCiAJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikpCiAJCXJldHVybjsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggY2UzNTY2YmE5NDkuLjVlZWQ1NjdhOGU1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtNjAsNyArNjAsNiBAQAogI2RlZmluZSBYTE9H X0hFQVAyX1BSVU5FX09OX0FDQ0VTUwkJMHgxMAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZB Q1VVTV9TQ0FOCTB4MjAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUAkw eDMwCi0jZGVmaW5lIFhMT0dfSEVBUDJfVklTSUJMRQkJMHg0MAogI2RlZmluZSBYTE9HX0hFQVAy X01VTFRJX0lOU0VSVCAweDUwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9DS19VUERBVEVEIDB4NjAK ICNkZWZpbmUgWExPR19IRUFQMl9ORVdfQ0lECQkweDcwCkBAIC00NDMsMjAgKzQ0Miw2IEBAIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJbnBs YWNlCShvZmZzZXRvZih4bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQogCi0v KgotICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJp bGl0eSBtYXAgYml0Ci0gKgotICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZmZXIK LSAqIEJhY2t1cCBibGsgMTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF92aXNpYmxlCi17Ci0JVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl1 aW50OAkJZmxhZ3M7Ci19IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFwVmlz aWJsZSAob2Zmc2V0b2YoeGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgpKQot CiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNTAwLDExICs0ODUs NiBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5m byk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0 ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAg IHVpbnQ4IHZtZmxhZ3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVk IGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hsb2df ZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywK IAkJCQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAppbmRleCBhMDE2NmM1YjQxMC4uMDAxYWZiMDM3ZjMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyArMTUsNiBAQAogI2RlZmlu ZSBWSVNJQklMSVRZTUFQX0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5o IgotI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVsZmlsZWxv Y2F0b3IuaCIKQEAgLTMyLDE1ICszMSw5IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xl YXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJp bGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAg QnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9z ZXQoUmVsYXRpb24gcmVsLAotCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhl YXBCdWYsCi0JCQkJCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgIEJ1ZmZlciB2bUJ1 ZiwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkgIHVpbnQ4IGZs YWdzKTsKLWV4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJlciBo ZWFwQmxrLAotCQkJCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCi0JCQkJCQkJCQkg Y29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOworZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1h cF9zZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDgg ZmxhZ3MsCisJCQkJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcik7CiBleHRlcm4g dWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg aGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX2NvdW50 KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9ja051bWJlciAqYWxs X2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5j YXRlKFJlbGF0aW9uIHJlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKaW5k ZXggODkxNTNiM2NkOWEuLmU1Nzk0Yzg1NTllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcGRlZnMuaApAQCAtMjEsMTQgKzIxLDUgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOCTB4MDIKICNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCTB4MDMJLyogT1Ig b2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKIAkJCQkJCQkJCQkJICogZmxhZ3MgYml0cyAqLwot LyoKLSAqIFRvIGRldGVjdCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rp bmcgb24gYSBzdGFuZGJ5LCB3ZSBuZWVkCi0gKiB0byBrbm93IGlmIGEgdGFibGUgaXMgYSB1c2Vy IGNhdGFsb2cgdGFibGUuIEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFsCi0gKiBiaXQgaW50 byB4bF9oZWFwX3Zpc2libGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZS4KLSAqCi0g KiBOQjogVklTSUJJTElUWU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQgdG8gdmlzaWJpbGl0 eW1hcF9zZXQoKS4KLSAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwJ MHgwNAotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUwkoVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTIHwgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMKQogCiAjZW5kaWYJ CQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCBiOWU2NzFmY2RhOC4uMzA4Y2ZmZjk5OWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC00MzMxLDcgKzQzMzEsNiBAQCB4bF9oZWFwX3BydW5lCiB4bF9oZWFwX3Jld3JpdGVfbWFw cGluZwogeGxfaGVhcF90cnVuY2F0ZQogeGxfaGVhcF91cGRhdGUKLXhsX2hlYXBfdmlzaWJsZQog eGxfaW52YWxpZF9wYWdlCiB4bF9pbnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZhbGlkYXRpb25zCi0t IAoyLjQzLjAKCg== --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Disposition: attachment; filename="v32-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jt53c8 RnJvbSAzMGQ1ODEyODA5ZWJiM2I2NmE0YjMzYjBlYmM0YWE2YjEyNjhhY2Q4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDEzOjU3OjE2IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzIgMDkvMTZdIFNpbXBsaWZ5IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSB2 aXNpYmlsaXR5CiBjaGVjawoKaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgZG9lc24n dCBjYXJlIGFib3V0IHRoZSBkaXN0aW5jdGlvbgpiZXR3ZWVuIEhFQVBUVVBMRV9SRUNFTlRMWV9E RUFEIGFuZCBIRUFQVFVQTEVfREVBRCB0dXBsZXMgLS0gYW55IHR1cGxlCnRoYXQgaXMgbm90IEhF QVBUVVBMRV9MSVZFIG1lYW5zIHRoZSBwYWdlIGlzIG5vdCBhbGwtdmlzaWJsZSBhbmQgY2F1c2Vz CnVzIHRvIHJldHVybiBmYWxzZS4KClRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgpLCB3aGljaAppbmNsdWRlcyBhbiBleHRyYSBzdGVwIHRv IGRpc3Rpbmd1aXNoIGJldHdlZW4gZGVhZCBhbmQgcmVjZW50bHkgZGVhZAp0dXBsZXMgdXNpbmcg T2xkZXN0WG1pbi4gUmVwbGFjZSBpdCB3aXRoIHRoZSBtb3JlIG1pbmltYWwKSGVhcFR1cGxlU2F0 aXNmaWVzVmFjdXVtSG9yaXpvbigpLgoKVGhpcyBoYXMgdGhlIGFkZGVkIGJlbmVmaXQgb2YgbWFr aW5nIGl0IGVhc2llciB0byByZXBsYWNlIHVzZXMgb2YKT2xkZXN0WG1pbiBpbiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoKSBpbiB0aGUgZnV0dXJlLgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQUxkU1NQanZoR1hpaFRfOWYtR0phYllVJTNEX1BqckZEVXhZYVVSdVRiZkx5UU02VEVy ZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIHwgOSArKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDRkN2UxNjM2 NTI2Li40YjJhMjZmNzMzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MzU3MCw2ICszNTcwLDcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKIAl7CiAJCUl0ZW1JZAkJaXRlbWlkOwogCQlIZWFwVHVwbGVEYXRh IHR1cGxlOworCQlUcmFuc2FjdGlvbklkIGRlYWRfYWZ0ZXI7CiAKIAkJLyoKIAkJICogU2V0IHRo ZSBvZmZzZXQgbnVtYmVyIHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgaXQgYWxvbmcgd2l0aCBhbnkK QEAgLTM2MDksMTIgKzM2MTAsMTQgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAogCQkvKiBWaXNpYmlsaXR5IGNoZWNrcyBtYXkgZG8g SU8gb3IgYWxsb2NhdGUgbWVtb3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlvbkNvdW50ID09IDAp OwotCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIE9sZGVzdFhtaW4s IGJ1ZikpCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbigmdHVwbGUs IGJ1ZiwgJmRlYWRfYWZ0ZXIpKQogCQl7CiAJCQljYXNlIEhFQVBUVVBMRV9MSVZFOgogCQkJCXsK IAkJCQkJVHJhbnNhY3Rpb25JZCB4bWluOwogCisJCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoZGVhZF9hZnRlcikpOworCiAJCQkJCS8qIENoZWNrIGNvbW1lbnRzIGluIGxhenlfc2Nh bl9wcnVuZS4gKi8KIAkJCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKHR1cGxl LnRfZGF0YSkpCiAJCQkJCXsKQEAgLTM2NDcsOCArMzY1MCwxMCBAQCBoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCX0KIAkJCQlicmVh azsKIAotCQkJY2FzZSBIRUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVBUFRVUExFX1JFQ0VOVExZ X0RFQUQ6CisJCQkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIpKTsKKwkJ CQkvKiBGQUxMVEhST1VHSCAqLworCQkJY2FzZSBIRUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVB UFRVUExFX0lOU0VSVF9JTl9QUk9HUkVTUzoKIAkJCWNhc2UgSEVBUFRVUExFX0RFTEVURV9JTl9Q Uk9HUkVTUzoKIAkJCQl7Ci0tIAoyLjQzLjAKCg== --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0010-Remove-table_scan_analyze_next_tuple-unneeded-pa.patch" Content-Disposition: attachment; filename="v32-0010-Remove-table_scan_analyze_next_tuple-unneeded-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jt9fs9 RnJvbSA0Y2Y2NjAyODNiMWVkOTJiZWZiNWZkOGE3ZjBjOWEyODE5NjE5MDM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIyIERlYyAyMDI1IDEwOjQ2OjQ1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzIgMTAvMTZdIFJlbW92ZSB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZSB1bm5l ZWRlZAogcGFyYW1ldGVyIE9sZGVzdFhtaW4KCmhlYXBhbV9zY2FuX2FuYWx5emVfbmV4dF90dXBs ZSgpIGRvZXNuJ3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBkZWFkIGFuZApyZWNlbnRseSBkZWFkIHR1 cGxlcyB3aGVuIGNvdW50aW5nIHRoZW0sIHNvIGl0IGRvZXNuJ3QgbmVlZCBPbGRlc3RYbWluLgoK TG9va2luZyBhdCBvdGhlciB0YWJsZSBBTXMgaW1wbGVtZW50aW5nIHRhYmxlX3NjYW5fYW5hbHl6 ZV9uZXh0X3R1cGxlKCksCml0IGFwcGVhcnMgbW9zdCBkbyBub3QgdXNlIE9sZGVzdFhtaW4gZWl0 aGVyLgoKU3VnZ2VzdGVkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUxkU1NQanZoR1hpaFRfOWYtR0phYllVJTNE X1BqckZEVXhZYVVSdVRiZkx5UU02VEVyZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyB8IDEzICsrKysrKysrKy0tLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAgICAgfCAgNiArLS0tLS0KIHNyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgfCAgNSArKy0tLQogMyBmaWxlcyBjaGFu Z2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAwOWE0NTZlOTk2Ni4uZGYyNDQwZTgyYTcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTAyNiw3ICsxMDI2 LDcgQEAgaGVhcGFtX3NjYW5fYW5hbHl6ZV9uZXh0X2Jsb2NrKFRhYmxlU2NhbkRlc2Mgc2Nhbiwg UmVhZFN0cmVhbSAqc3RyZWFtKQogfQogCiBzdGF0aWMgYm9vbAotaGVhcGFtX3NjYW5fYW5hbHl6 ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWlu LAoraGVhcGFtX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAkJ CQkJCQkgICBkb3VibGUgKmxpdmVyb3dzLCBkb3VibGUgKmRlYWRyb3dzLAogCQkJCQkJCSAgIFR1 cGxlVGFibGVTbG90ICpzbG90KQogewpAQCAtMTA0Nyw2ICsxMDQ3LDcgQEAgaGVhcGFtX3NjYW5f YW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJhbnNhY3Rpb25JZCBPbGRl c3RYbWluLAogCQlJdGVtSWQJCWl0ZW1pZDsKIAkJSGVhcFR1cGxlCXRhcmd0dXBsZSA9ICZoc2xv dC0+YmFzZS50dXBkYXRhOwogCQlib29sCQlzYW1wbGVfaXQgPSBmYWxzZTsKKwkJVHJhbnNhY3Rp b25JZCBkZWFkX2FmdGVyOwogCiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQodGFyZ3BhZ2UsIGhz Y2FuLT5yc19jaW5kZXgpOwogCkBAIC0xMDY5LDE2ICsxMDcwLDIwIEBAIGhlYXBhbV9zY2FuX2Fu YWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKIAkJdGFyZ3R1cGxlLT50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRl bSh0YXJncGFnZSwgaXRlbWlkKTsKIAkJdGFyZ3R1cGxlLT50X2xlbiA9IEl0ZW1JZEdldExlbmd0 aChpdGVtaWQpOwogCi0JCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKHRhcmd0dXBs ZSwgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCQkgaHNjYW4tPnJzX2NidWYpKQorCQlzd2l0Y2ggKEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24odGFyZ3R1cGxlLAorCQkJCQkJCQkJCQkJaHNj YW4tPnJzX2NidWYsCisJCQkJCQkJCQkJCQkmZGVhZF9hZnRlcikpCiAJCXsKIAkJCWNhc2UgSEVB UFRVUExFX0xJVkU6CiAJCQkJc2FtcGxlX2l0ID0gdHJ1ZTsKIAkJCQkqbGl2ZXJvd3MgKz0gMTsK IAkJCQlicmVhazsKIAotCQkJY2FzZSBIRUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVBUFRVUExF X1JFQ0VOVExZX0RFQUQ6CisJCQkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0 ZXIpKTsKKwkJCQkvKiBGQUxMVEhST1VHSCAqLworCisJCQljYXNlIEhFQVBUVVBMRV9ERUFEOgog CQkJCS8qIENvdW50IGRlYWQgYW5kIHJlY2VudGx5LWRlYWQgcm93cyAqLwogCQkJCSpkZWFkcm93 cyArPSAxOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCmluZGV4IGE0ODM0MjQxNTJj Li41M2FkYWM5MTM5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtMTIxMyw3ICsxMjEzLDYg QEAgYWNxdWlyZV9zYW1wbGVfcm93cyhSZWxhdGlvbiBvbmVyZWwsIGludCBlbGV2ZWwsCiAJZG91 YmxlCQlyb3dzdG9za2lwID0gLTE7CS8qIC0xIG1lYW5zIG5vdCBzZXQgeWV0ICovCiAJdWludDMy CQlyYW5kc2VlZDsJCS8qIFNlZWQgZm9yIGJsb2NrIHNhbXBsZXIocykgKi8KIAlCbG9ja051bWJl ciB0b3RhbGJsb2NrczsKLQlUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW47CiAJQmxvY2tTYW1wbGVy RGF0YSBiczsKIAlSZXNlcnZvaXJTdGF0ZURhdGEgcnN0YXRlOwogCVR1cGxlVGFibGVTbG90ICpz bG90OwpAQCAtMTIyNiw5ICsxMjI1LDYgQEAgYWNxdWlyZV9zYW1wbGVfcm93cyhSZWxhdGlvbiBv bmVyZWwsIGludCBlbGV2ZWwsCiAKIAl0b3RhbGJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZC bG9ja3Mob25lcmVsKTsKIAotCS8qIE5lZWQgYSBjdXRvZmYgeG1pbiBmb3IgSGVhcFR1cGxlU2F0 aXNmaWVzVmFjdXVtICovCi0JT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5z YWN0aW9uSWQob25lcmVsKTsKLQogCS8qIFByZXBhcmUgZm9yIHNhbXBsaW5nIGJsb2NrIG51bWJl cnMgKi8KIAlyYW5kc2VlZCA9IHBnX3BybmdfdWludDMyKCZwZ19nbG9iYWxfcHJuZ19zdGF0ZSk7 CiAJbmJsb2NrcyA9IEJsb2NrU2FtcGxlcl9Jbml0KCZicywgdG90YWxibG9ja3MsIHRhcmdyb3dz LCByYW5kc2VlZCk7CkBAIC0xMjYxLDcgKzEyNTcsNyBAQCBhY3F1aXJlX3NhbXBsZV9yb3dzKFJl bGF0aW9uIG9uZXJlbCwgaW50IGVsZXZlbCwKIAl7CiAJCXZhY3V1bV9kZWxheV9wb2ludCh0cnVl KTsKIAotCQl3aGlsZSAodGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoc2NhbiwgT2xkZXN0 WG1pbiwgJmxpdmVyb3dzLCAmZGVhZHJvd3MsIHNsb3QpKQorCQl3aGlsZSAodGFibGVfc2Nhbl9h bmFseXplX25leHRfdHVwbGUoc2NhbiwgJmxpdmVyb3dzLCAmZGVhZHJvd3MsIHNsb3QpKQogCQl7 CiAJCQkvKgogCQkJICogVGhlIGZpcnN0IHRhcmdyb3dzIHNhbXBsZSByb3dzIGFyZSBzaW1wbHkg Y29waWVkIGludG8gdGhlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBlMmVjNTI4OWQ0ZC4uYzlmYTlm MjU5Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjgzLDcgKzY4Myw2IEBAIHR5cGVkZWYgc3Ry dWN0IFRhYmxlQW1Sb3V0aW5lCiAJICogY2FsbGJhY2spLgogCSAqLwogCWJvb2wJCSgqc2Nhbl9h bmFseXplX25leHRfdHVwbGUpIChUYWJsZVNjYW5EZXNjIHNjYW4sCi0JCQkJCQkJCQkJCVRyYW5z YWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkJCQkJZG91YmxlICpsaXZlcm93cywKIAkJCQkJ CQkJCQkJZG91YmxlICpkZWFkcm93cywKIAkJCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3Qp OwpAQCAtMTcxNCwxMSArMTcxMywxMSBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF9ibG9jayhU YWJsZVNjYW5EZXNjIHNjYW4sIFJlYWRTdHJlYW0gKnN0cmVhbSkKICAqIHR1cGxlcy4KICAqLwog c3RhdGljIGlubGluZSBib29sCi10YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNj YW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKK3RhYmxlX3NjYW5fYW5hbHl6 ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAkJCQkJCQkgIGRvdWJsZSAqbGl2ZXJv d3MsIGRvdWJsZSAqZGVhZHJvd3MsCiAJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIHsK LQlyZXR1cm4gc2Nhbi0+cnNfcmQtPnJkX3RhYmxlYW0tPnNjYW5fYW5hbHl6ZV9uZXh0X3R1cGxl KHNjYW4sIE9sZGVzdFhtaW4sCisJcmV0dXJuIHNjYW4tPnJzX3JkLT5yZF90YWJsZWFtLT5zY2Fu X2FuYWx5emVfbmV4dF90dXBsZShzY2FuLAogCQkJCQkJCQkJCQkJCQkJbGl2ZXJvd3MsIGRlYWRy b3dzLAogCQkJCQkJCQkJCQkJCQkJc2xvdCk7CiB9Ci0tIAoyLjQzLjAKCg== --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="UTF-8"; name="v32-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v32-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jtd0610 RnJvbSBmN2QyYTAzNTNhNzljYTI5ZDkwMGI2YmNhYjBkYWI5NDZmYWM1NzUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDE2OjUxOjA1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzIgMTEvMTZdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKCkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQg cGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxlcycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2Ug Y2FuIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2 aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBhcmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUg WElEIGNob3NlbiBhdAp0aGUgc3RhcnQgb2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVz ZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2ggYWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0 aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhh dmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxz byBiZW5lZml0cyB2YWN1dW06IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heSBhZHZh bmNlCmR1cmluZyBhIHZhY3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lk ZXJlZCBhbGwtdmlzaWJsZS4KQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRk IGEgaGV1cmlzdGljIHRvIHVwZGF0ZQpHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVy aW5nIHZhY3V1bXMgb2YgbGFyZ2UgdGFibGVzLgoKT2xkZXN0WG1pbiBpcyBzdGlsbCB1c2VkIGZv ciBmcmVlemluZyBhbmQgYXMgYSBiYWNrc3RvcCB0byBlbnN1cmUgd2UKZG9uJ3QgZnJlZXplIGEg ZGVhZCB0dXBsZSB0aGF0IHdhc24ndCB5ZXQgcHJ1bmFibGUgYWNjb3JkaW5nIHRvCkdsb2JhbFZp c1N0YXRlIGluIHRoZSByYXJlIG9jY3VycmVuY2VzIHdoZXJlIEdsb2JhbFZpc1N0YXRlIG1vdmVz CmJhY2t3YXJkcy4KCkJlY2F1c2UgY29tcGFyaW5nIGEgdHJhbnNhY3Rpb24gSUQgYWdhaW5zdCBH bG9iYWxWaXNTdGF0ZSBpcyBtb3JlCmV4cGVuc2l2ZSB0aGFuIGNvbXBhcmluZyBhZ2FpbnN0IGEg c2luZ2xlIFhJRCwgd2UgZGVmZXIgdGhpcyBjaGVjayB1bnRpbAphZnRlciBzY2FubmluZyBhbGwg dHVwbGVzIG9uIHRoZSBwYWdlLiBJZiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2FzCm1haW50YWlu ZWQsIHdlIHBlcmZvcm0gdGhlIEdsb2JhbFZpc1N0YXRlIGNoZWNrIG9ubHkgb25jZSBwZXIgcGFn ZS4KVGhpcyBpcyBzYWZlIGJlY2F1c2UgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIHJlY29yZHMgdGhl IG5ld2VzdCB4bWluIG9uCnRoZSBwYWdlOyBpZiBpdCBpcyBnbG9iYWxseSB2aXNpYmxlLCB0aGVu IHRoZSBlbnRpcmUgcGFnZSBpcyBhbGwtdmlzaWJsZS4KClRoaXMgYXBwcm9hY2ggbWF5IHJlc3Vs dCBpbiBleGFtaW5pbmcgbW9yZSB0dXBsZSB4bWlucyB0aGFuIGJlZm9yZSwKc2luY2Ugd2l0aCBP bGRlc3RYbWluIHdlIGNvdWxkIHNvbWV0aW1lcyBydWxlIG91dCB0aGUgcGFnZSBiZWluZwphbGwt dmlzaWJsZSBlYXJsaWVyLiBIb3dldmVyLCBwcm9maWxpbmcgc2hvd3MgdGhlIGFkZGl0aW9uYWwg Y29zdCBpcyBub3QKc2lnbmlmaWNhbnQuCgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5k cmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWls LmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwg MjIgKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAg IHwgNTMgKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgICAgICAgIHwgMzggKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggICAgICAgICAgICAgICAgIHwgIDQgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNzYgaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV92aXNpYmlsaXR5LmMKaW5kZXggMDVlNzBiN2Q5MmEuLmI0NDg5MDIwNjA5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKQEAgLTEwNTMsNiArMTA1 MywyOCBAQCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0 aW9uSWQgT2xkZXN0WG1pbiwKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogV3JhcHBlciBhcm91 bmQgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgZm9yIHVzZSB3aGVuIGV4YW1pbmluZyBs aXZlCisgKiB0dXBsZXMuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gWElEIG1heSBiZSBjb25z aWRlcmVkIHJ1bm5pbmcgYnkgYXQgbGVhc3QKKyAqIG9uZSBzbmFwc2hvdC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGFsb25lIGlzIGluc3VmZmljaWVudCB0byBkZXRlcm1pbmUgdHVwbGUgdmlzaWJp bGl0eTsgY2FsbGVycworICogbXVzdCBhbHNvIGNvbnNpZGVyIHRoZSBYSUQncyBjb21taXQgc3Rh dHVzLiBJdHMgcHVycG9zZSBpcyBwdXJlbHkgc2VtYW50aWM6CisgKiB3aGVuIGFwcGxpZWQgdG8g bGl2ZSB0dXBsZXMsIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIGlzIGNoZWNraW5nCisg KiB3aGV0aGVyIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gaXMgc3RpbGwgY29uc2lkZXJlZCBy dW5uaW5nLCBub3Qgd2hldGhlcgorICogdGhlIHR1cGxlIGlzIHJlbW92YWJsZS4gTGl2ZSB0dXBs ZXMgYXJlLCBieSBkZWZpbml0aW9uLCBub3QgcmVtb3ZhYmxlLCBidXQKKyAqIHRoZSBzbmFwc2hv dCBjcml0ZXJpYSBmb3Ig4oCcdHJhbnNhY3Rpb24gc3RpbGwgcnVubmluZ+KAnSBhcmUgaWRlbnRp Y2FsIHRvCisgKiB0aG9zZSB1c2VkIGZvciByZW1vdmFsIFhJRHMuCisgKgorICogU2VlIHRoZSBj b21tZW50IGFib3ZlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVtGdWxsXVhpZCgpIGZvciBkZXRh aWxzIG9uIHRoZQorICogcmVxdWlyZWQgcHJlY29uZGl0aW9ucyBmb3IgY2FsbGluZyB0aGlzIGZ1 bmN0aW9uLgorICovCitib29sCitHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJcmV0dXJuICFHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVYaWQoc3RhdGUsIHhpZCk7Cit9CisKIC8qCiAgKiBXb3JrIGhvcnNlIGZv ciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0gYW5kIHNpbWlsYXIgcm91dGluZXMuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBjYWMwOWRmZjMxZi4uZGEwOWM3NjliNGQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC00NjEsMTEgKzQ2MSwxMiBAQCBw cnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCS8qCiAJICog VGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29t bWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhp cyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12 aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAqIG5v dCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMg aXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3Ig ZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICogb24gdGhlIHBhZ2Ugb2xk ZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAqIEds b2JhbFZpc1N0YXRlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlIGlmIHRoZSBw YWdlIGlzCisJICogYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJl ZCB0aGF0IGlzIG5vdCB2aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRh aW5lZC4gQXMgbG9uZyBhcyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4gYmUKKwkgKiB1c2VkIHRv IGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHVwZGF0aW5nIHRo ZSBWTQorCSAqIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkg Ki8KIAlwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIH0KQEAgLTEwMDgsMTQgKzEwMDksMTQgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5l U3RhdGUgKnByc3RhdGUsCiAgKi8KIHN0YXRpYyBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKKwkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxf ZnJvemVuLAogCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJ CQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCiAJcmV0dXJuIGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4s CisJCQkJCQkJCQkJICB2aXN0ZXN0LAogCQkJCQkJCQkJCSAgTlVMTCwgMCwKIAkJCQkJCQkJCQkg IGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCkBAIC0xMTAy LDYgKzExMDMsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAlwcnVuZV9mcmVlemVfcGxhbihSZWxhdGlvbkdldFJlbGlkKHBhcmFtcy0+ cmVsYXRpb24pLAogCQkJCQkgIGJ1ZmZlciwgJnByc3RhdGUsIG9mZl9sb2MpOwogCisJLyoKKwkg KiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UsIGlmIHRo ZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nc3QgdGhlbSBtYXkgYmUgY29uc2lkZXJlZCBydW5uaW5n IGJ5IGFueSBzbmFwc2hvdCwgdGhlIHBhZ2UgY2Fubm90CisJICogYmUgYWxsLXZpc2libGUuCisJ ICovCisJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFs KHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgorCQlHbG9iYWxWaXNUZXN0WGlkTWF5 YmVSdW5uaW5nKHByc3RhdGUudmlzdGVzdCwgcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQp KQorCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisK IAkvKgogCSAqIElmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgY2FsbGluZyBoZWFwX3BydW5lX3Nh dGlzZmllc192YWN1dW0oKSB3aGlsZQogCSAqIGNoZWNraW5nIHR1cGxlIHZpc2liaWxpdHkgaW5m b3JtYXRpb24gaW4gcHJ1bmVfZnJlZXplX3BsYW4oKSBtYXkgaGF2ZQpAQCAtMTI4MywxMCArMTI5 NCw5IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJh bXMsCiAJCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47CiAKIAkJQXNzZXJ0KHByc3RhdGUubHBkZWFk X2l0ZW1zID09IDApOwotCQlBc3NlcnQocHJzdGF0ZS5jdXRvZmZzKTsKIAogCQlBc3NlcnQoaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJ CQlwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW4sCisJCQkJCQkJCQkJcHJzdGF0ZS52aXN0ZXN0 LAogCQkJCQkJCQkJCSZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYs IG9mZl9sb2MpKTsKIApAQCAtMTgwNywyOCArMTgxNywxNSBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29t bWl0dGVkLiAgQnV0IGlzIGl0IG9sZCBlbm91Z2gKLQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMg aXQgYXMgY29tbWl0dGVkPyAgQSBGcm96ZW5UcmFuc2FjdGlvbklkCi0JCQkJICogaXMgc2VlbiBh cyBjb21taXR0ZWQgdG8gZXZlcnlvbmUuICBPdGhlcndpc2UsIHdlIGNoZWNrIGlmCi0JCQkJICog dGhlcmUgaXMgYSBzbmFwc2hvdCB0aGF0IGNvbnNpZGVycyB0aGlzIHhpZCB0byBzdGlsbCBiZQot CQkJCSAqIHJ1bm5pbmcsIGFuZCBpZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlIHBhZ2UgYWxs LXZpc2libGUuCisJCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQg d2UgZG9uJ3Qga25vdyBpZiBpdAorCQkJCSAqIGlzIG9sZCBlbm91Z2ggdGhhdCBldmVyeW9uZSBz ZWVzIGl0IGFzIGNvbW1pdHRlZC4gTGF0ZXIsCisJCQkJICogYWZ0ZXIgcHJvY2Vzc2luZyBhbGwg dGhlIHR1cGxlcyBvbiB0aGUgcGFnZSwgd2UnbGwgY2hlY2sgaWYKKwkJCQkgKiB0aGVyZSBpcyBh bnkgc25hcHNob3QgdGhhdCBzdGlsbCBjb25zaWRlcnMgdGhlIG5ld2VzdCB4aWQKKwkJCQkgKiBv biB0aGUgcGFnZSB0byBiZSBydW5uaW5nLiBJZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlCisJ CQkJICogcGFnZSBhbGwtdmlzaWJsZS4KIAkJCQkgKi8KIAkJCQl4bWluID0gSGVhcFR1cGxlSGVh ZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHBy c3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdlIG9ubHkgdXBk YXRlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5nCi0JCQkJICog aXMgcmVxdWVzdGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkCi0J CQkJICogaW5zdGVhZCwgaWYgYSBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhl IFZNIGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYg KCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1p bikpCi0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJCQlwcnN0 YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQogCQkJCS8qIFRy YWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dz KHhtaW4sIHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKIAkJCQkJVHJhbnNhY3Rp b25JZElzTm9ybWFsKHhtaW4pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4 IDRiMmEyNmY3MzM2Li5jOTdhZDJhOTMxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwpAQCAtMjc1NCw3ICsyNzU0LDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3Rh dGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICogZG9uZSBv dXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIHZhY3JlbC0+ Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LAogCQkJCQkJ CQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJCQkJCQkJICAgJmFsbF9mcm96ZW4s ICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVsLT5vZmZudW0pKQpA QCAtMzUxOSw3ICszNTE5LDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3Jl bCkKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFu IHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0g KiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisgKiB2aXN0ZXN0 IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgKgogICogT3V0cHV0IHBhcmFtZXRl cnM6CiAgKgpAQCAtMzUzNSw3ICszNTM1LDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3Rh dGUgKnZhY3JlbCkKICAqLwogYm9vbAogaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFht aW4sCisJCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJICAgT2Zmc2V0 TnVtYmVyICpkZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJ CSAgIGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0zNjE4LDcgKzM2MTgsNyBAQCBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCiAJCQkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwogCi0JCQkJCS8qIENoZWNrIGNv bW1lbnRzIGluIGxhenlfc2Nhbl9wcnVuZS4gKi8KKwkJCQkJLyogQ2hlY2sgaGVhcF9wcnVuZV9y ZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCBjb21tZW50cyAqLwogCQkJCQlpZiAoIUhlYXBUdXBs ZUhlYWRlclhtaW5Db21taXR0ZWQodHVwbGUudF9kYXRhKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zp c2libGUgPSBmYWxzZTsKQEAgLTM2MjcsMTYgKzM2MjcsMTcgQEAgaGVhcF9wYWdlX3dvdWxkX2Jl X2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJfQogCiAJCQkJCS8q Ci0JCQkJCSAqIFRoZSBpbnNlcnRlciBkZWZpbml0ZWx5IGNvbW1pdHRlZC4gQnV0IGlzIGl0IG9s ZCBlbm91Z2gKLQkJCQkJICogdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KKwkJ CQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQgd2UgZG9uJ3Qga25v dyBpZgorCQkJCQkgKiBpdCBpcyBvbGQgZW5vdWdoIHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBj b21taXR0ZWQuCisJCQkJCSAqIERvbid0IGNoZWNrIHRoYXQgbm93LgorCQkJCQkgKgorCQkJCQkg KiBJZiB3ZSBzY2FuIGFsbCB0dXBsZXMgd2l0aG91dCBmaW5kaW5nIG9uZSB0aGF0IHByZXZlbnRz CisJCQkJCSAqIHRoZSBwYWdlIGZyb20gYmVpbmcgYWxsLXZpc2libGUsIHdlIHRoZW4gY2hlY2sg d2hldGhlcgorCQkJCQkgKiBhbnkgc25hcHNob3Qgc3RpbGwgY29uc2lkZXJzIHRoZSBuZXdlc3Qg WElEIG9uIHRoZSBwYWdlCisJCQkJCSAqIHRvIGJlIHJ1bm5pbmcuIEluIHRoYXQgY2FzZSwgdGhl IHBhZ2UgaXMgbm90IGNvbnNpZGVyZWQKKwkJCQkJICogYWxsLXZpc2libGUuCiAJCQkJCSAqLwog CQkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwotCQkJCQlp ZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBPbGRlc3RYbWluKSkKLQkJCQkJewotCQkJ CQkJYWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJCQkJCSphbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJ CQlicmVhazsKLQkJCQkJfQogCiAJCQkJCS8qIFRyYWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICov CiAJCQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyh4bWluLCAqdmlzaWJpbGl0eV9jdXRvZmZf eGlkKSAmJgpAQCAtMzY2Nyw2ICszNjY4LDE5IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCX0KIAl9CQkJCQkJCS8qIHNjYW4gYWxv bmcgcGFnZSAqLwogCisJLyoKKwkgKiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBs ZXMgb24gdGhlIHBhZ2UsIGlmIHRoZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nIHRoZW0gbWF5IHN0 aWxsIGJlIGNvbnNpZGVyZWQgcnVubmluZyBieSBhbnkgc25hcHNob3QsIHRoZSBwYWdlCisJICog Y2Fubm90IGJlIGFsbC12aXNpYmxlLgorCSAqLworCWlmIChhbGxfdmlzaWJsZSAmJgorCQlUcmFu c2FjdGlvbklkSXNOb3JtYWwoKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKKwkJR2xvYmFsVmlz VGVzdFhpZE1heWJlUnVubmluZyh2aXN0ZXN0LCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKKwl7 CisJCWFsbF92aXNpYmxlID0gZmFsc2U7CisJCSphbGxfZnJvemVuID0gZmFsc2U7CisJfQorCiAJ LyogQ2xlYXIgdGhlIG9mZnNldCBpbmZvcm1hdGlvbiBvbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIHRo ZSBnaXZlbiBwYWdlLiAqLwogCSpsb2dnaW5nX29mZm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlMGRhMWY3Y2RjYy4uYWM3NzEzOTBhMzcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKQEAgLTQzOCw3ICs0MzgsNyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogZXh0ZXJuIHZvaWQg aGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMg cGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwogZXh0ZXJuIGJvb2wgaGVh cF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJ CQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAgR2xvYmFs VmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0 cywKIAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJvb2wgKmFs bF9mcm96ZW4sCkBAIC00NTIsNiArNDUyLDggQEAgZXh0ZXJuIFRNX1Jlc3VsdCBIZWFwVHVwbGVT YXRpc2ZpZXNVcGRhdGUoSGVhcFR1cGxlIGh0dXAsIENvbW1hbmRJZCBjdXJjaWQsCiAJCQkJCQkJ CQkJICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJ CQkJCQkJQnVmZmVyIGJ1ZmZlcik7CisKK2V4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RYaWRNYXli ZVJ1bm5pbmcoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRl cm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbihIZWFwVHVwbGUg aHR1cCwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKmRlYWRf YWZ0ZXIpOwogZXh0ZXJuIHZvaWQgSGVhcFR1cGxlU2V0SGludEJpdHMoSGVhcFR1cGxlSGVhZGVy IHR1cGxlLCBCdWZmZXIgYnVmZmVyLAotLSAKMi40My4wCgo= --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="UTF-8"; name="v32-0012-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v32-0012-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jtndx11 RnJvbSBhMzNiYzM3OGEzOTcwNjQ3NjAyYmRmYjFhNjhjZjc2ZWQ5NzkxMWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzIgMTIvMTZdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCgpSZXZpZXdlZC1i eTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyB8IDE1ICsrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwppbmRleCBkYTA5Yzc2OWI0ZC4uOWYxMjU3NTI5YjkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNjgyLDggKzE2ODIsMTMgQEAgaGVhcF9wcnVuZV9yZWNvcmRf ZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCS8qCiAJICog RGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBsYXRlcgogCSAqIGR1cmluZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hv dWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZQotCSAqIHBhZ2UuCisJICogcGFnZS4gSWYgd2Ug d29uJ3QgYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3Vn aC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0K IAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRl YWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE5NDMsOCAr MTk0OCwxNCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3Qg dW5zZXQgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdW50aWwgbGF0ZXIsIGF0IHRoZQogCSAq IGVuZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVz IHRvIGF0dGVtcHQgdG8KIAkgKiBmcmVlemUgdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxv bmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nCi0JICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2ls bCBiZSBjb3JyZWN0LiBJZiB3ZSB3b24ndCBhdHRlbXB0IGZyZWV6aW5nLAorCSAqIHRob3VnaCwg anVzdCB1bnNldCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBub3cuCiAJICovCisJaWYgKCFw cnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFs c2U7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhl IGRlYWQgb2Zmc2V0IGZvciB2YWN1dW0gKi8KIAlwcnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRl LT5scGRlYWRfaXRlbXMrK10gPSBvZmZudW07Ci0tIAoyLjQzLjAKCg== --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0013-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v32-0013-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jtqy012 RnJvbSBiZDVlM2U5Y2IxMDg1OGY0ZDE4ZWE0ODdkOGJjOTgzNDRhZmQ4YTVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMiAxMy8xNl0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgoKUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hh b0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgfCA0ICsr KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIHwgMiArKwogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgfCA2ICsrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggY2ExNGNkYWJkZDAuLjZhMDI4 Mzk4NWMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwogCQkJ fQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dtYXJrLCB0aGUgcmVsYXRpb24gbWF5IGJlIG1vZGlm aWVkICovCisJCQllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGVz dGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQlyYy0+cnRpKTsKKwogCQkJ LyogQ2hlY2sgdGhhdCByZWxhdGlvbiBpcyBhIGxlZ2FsIHRhcmdldCBmb3IgbWFya2luZyAqLwog CQkJaWYgKHJlbGF0aW9uKQogCQkJCUNoZWNrVmFsaWRSb3dNYXJrUmVsKHJlbGF0aW9uLCByYy0+ bWFya1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBjYzNjNWRlNzFlYi4uZGNi MmVmMjI3NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04OTMsNiArODkzLDggQEAg RXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywKIAkJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zID0gKFJlc3VsdFJlbElu Zm8gKiopCiAJCQlwYWxsb2MwKGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSAqIHNpemVvZihS ZXN1bHRSZWxJbmZvICopKTsKIAllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnNbcnRpIC0gMV0g PSByZXN1bHRSZWxJbmZvOworCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1zX2FkZF9t ZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQlydGkpOwogCiAJ LyoKIAkgKiBTYXZpbmcgaW4gdGhlIGxpc3QgYWxsb3dzIHRvIGF2b2lkIG5lZWRsZXNzbHkgdHJh dmVyc2luZyB0aGUgd2hvbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMDIyNjU0NTY5NzguLjI5 ZTJlMmRhN2VhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBAQCB0eXBl ZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgKi8K IAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVz YyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBieSB0aGUg cXVlcnkgdGhyb3VnaCBhCisJICogVVBEQVRFL0RFTEVURS9JTlNFUlQvTUVSR0Ugb3IgdGFyZ2V0 ZWQgYnkgYSBTRUxFQ1QgRk9SIFVQREFURS4KKwkgKi8KKwlCaXRtYXBzZXQgICplc19tb2RpZmll ZF9yZWxpZHM7CisKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVu ayBmaWx0ZXIsIGlmIGFueSAqLwogCiAJLyogSWYgcXVlcnkgY2FuIGluc2VydC9kZWxldGUgdHVw bGVzLCB0aGUgY29tbWFuZCBJRCB0byBtYXJrIHRoZW0gd2l0aCAqLwotLSAKMi40My4wCgo= --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0014-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v32-0014-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jttn913 RnJvbSAyMzliYTJhODEzNDc1NWQ4NzAwYjk3MTgwMTBiOGYwYTdiMjlmZWYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MTI6MTggLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMiAxNC8xNl0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv biB0byBzY2FuCiBub2RlCgpQYXNzIGRvd24gaW5mb3JtYXRpb24gdG8gc2VxdWVudGlhbCBzY2Fu LCBpbmRleCBzY2FuLCBhbmQgYml0bWFwIHRhYmxlCnNjYW4gbm9kZXMgb24gd2hldGhlciBvciBu b3QgdGhlIHF1ZXJ5IG1vZGlmaWVzIHRoZSByZWxhdGlvbiBiZWluZwpzY2FubmVkLiBBIGxhdGVy IGNvbW1pdCB3aWxsIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIHVwZGF0ZSB0aGUgVk0KZHVyaW5n IG9uLWFjY2VzcyBwcnVuaW5nIG9ubHkgaWYgdGhlIHJlbGF0aW9uIGlzIG5vdCBtb2RpZmllZCBi eSB0aGUKcXVlcnkuCi0tLQogY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYyAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgfCAg MyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgIHwgIDMgKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICB8ICA3ICsrKy0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgfCAgNCArKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAgICB8ICA2ICsrKy0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgfCAgNyArKystLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbnN0cmFpbnQuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jICAgICAgICAgIHwgIDggKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNt ZHMuYyAgICAgICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhp bmcuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YyAgICB8ICA4ICsrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nh bi5jIHwgIDkgKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2Fu LmMgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgIHwg MTEgKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAg fCAyNiArKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMg ICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAg ICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgfCAg NiArKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgIHwgMTkg KysrKysrKysrKy0tLS0tLS0KIDIzIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDQ2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tz LmMgYi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCmluZGV4IGY4ODI2OTMzMmI2Li4y N2YwMWQ4MDU1ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYwor KysgYi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCkBAIC0xMTQsNyArMTE0LDcgQEAg cGdyb3dsb2NrcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKTsKIAogCS8qIFNjYW4gdGhlIHJlbGF0aW9uICovCi0Jc2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMLCAwKTsKIAloc2Nh biA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlhdHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJ bk1ldGFkYXRhKHJzaW5mby0+c2V0RGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggNjg4 N2U0MjE0NDIuLjRkOTY4NGIxYjE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODQzLDcg KzI4NDMsOCBAQCBfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAq c3RhdGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJy ZW50OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSk7CisJCQkJCQkJCQlQ YXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7 CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRl eEluZm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRDYWxsYmFja1BhcmFsbGVs LCBzdGF0ZSwgc2Nhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBjMDhlYTky N2FjNS4uYjUwMmQ0MDg4ZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjA1 OCw3ICsyMDU4LDggQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChHaW5CdWlsZFN0YXRl ICpzdGF0ZSwKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBnaW5zaGFyZWQtPmlzY29uY3Vy cmVudDsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJ CVBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCkpOworCQkJCQkJ CQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKKwkJCQkJ CQkJCTApOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRl eCwgaW5kZXhJbmZvLCB0cnVlLCBwcm9ncmVzcywKIAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJh Y2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggZGYyNDQwZTgyYTcuLmU4OGRiNTJmZDdlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTc5LDEyICs3OSwxMyBAQCBoZWFwYW1fc2xv dF9jYWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24pCiAgKi8KIAogc3RhdGljIEluZGV4RmV0Y2hU YWJsZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK2hlYXBh bV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRl eEZldGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9jMF9vYmplY3QoSW5kZXhGZXRjaEhlYXBEYXRh KTsKIAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsKIAloc2Nhbi0+eHNfY2J1ZiA9IEludmFs aWRCdWZmZXI7CisJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRf UkVMX1JFQURfT05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpAQCAtNzUzLDcg Kzc1NCw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhl YXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkJdGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNjYW4g PSBOVUxMOwotCQlpbmRleFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5kZXgs IFNuYXBzaG90QW55LCBOVUxMLCAwLCAwKTsKKwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2Fu KE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCwgMCk7CiAJCWluZGV4 X3Jlc2NhbihpbmRleFNjYW4sIE5VTEwsIDAsIE5VTEwsIDApOwogCX0KIAllbHNlCkBAIC03NjIs NyArNzYzLDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xk SGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DTFVTVEVSX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhBU0Vf U0VRX1NDQU5fSEVBUCk7CiAKLQkJdGFibGVTY2FuID0gdGFibGVfYmVnaW5zY2FuKE9sZEhlYXAs IFNuYXBzaG90QW55LCAwLCAoU2NhbktleSkgTlVMTCk7CisJCXRhYmxlU2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihPbGRIZWFwLCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwsIDApOwogCQlo ZWFwU2NhbiA9IChIZWFwU2NhbkRlc2MpIHRhYmxlU2NhbjsKIAkJaW5kZXhTY2FuID0gTlVMTDsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCBhMjliZTZmNDY3Yi4uNWFjN2QyMmU0OWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NDcsNyArNDQ3LDcgQEAgc3lzdGFibGVf YmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJfQogCiAJCXN5c3NjYW4tPmlzY2Fu ID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaXJlbCwKLQkJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwKTsKKwkJCQkJCQkJCQkgc25hcHNob3QsIE5VTEwsIG5rZXlzLCAw LCAwKTsKIAkJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxM LCAwKTsKIAkJc3lzc2Nhbi0+c2NhbiA9IE5VTEw7CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCBzeXN0 YWJsZV9iZWdpbnNjYW5fb3JkZXJlZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJfQogCiAJc3lz c2Nhbi0+aXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLCBpbmRleFJlbGF0aW9u LAotCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCk7CisJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oc3lzc2Nhbi0+aXNjYW4sIGlk eGtleSwgbmtleXMsIE5VTEwsIDApOwogCXN5c3NjYW4tPnNjYW4gPSBOVUxMOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCA0ZWQwNTA4YzYwNS4uNGRmNTYwODc4NDEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGluZGV4X2JlZ2lu c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwK IAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnQsCi0JCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQorCQkJCWludCBua2V5cywg aW50IG5vcmRlcmJ5cywgdWludDMyIGZsYWdzKQogewogCUluZGV4U2NhbkRlc2Mgc2NhbjsKIApA QCAtMjg0LDcgKzI4NCw3IEBAIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGluc3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNo IGluZGV4IG1hdGNoZXMgZnJvbSB0YWJsZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxl X2luZGV4X2ZldGNoX2JlZ2luKGhlYXBSZWxhdGlvbik7CisJc2Nhbi0+eHNfaGVhcGZldGNoID0g dGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcFJlbGF0aW9uLCBmbGFncyk7CiAKIAlyZXR1cm4g c2NhbjsKIH0KQEAgLTYxNSw3ICs2MTUsNyBAQCBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVs YXRpb24gaGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsCiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGlu c3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNoIGluZGV4IG1hdGNoZXMgZnJvbSB0YWJs ZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwpOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwsIDApOwogCiAJcmV0dXJuIHNjYW47CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j CmluZGV4IDkwYWI0ZTkxYjU2Li44YWU1NDIxN2YzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKQEAgLTE5MjUsNyArMTkyNSw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0 KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCWluZGV4SW5mbyA9IEJ1aWxk SW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBi dHNoYXJlZC0+aXNjb25jdXJyZW50OwogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwo YnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0 c2hhcmVkKSk7CisJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJl ZCksIDApOwogCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oYnRzcG9vbC0+aGVh cCwgYnRzcG9vbC0+aW5kZXgsIGluZGV4SW5mbywKIAkJCQkJCQkJCSAgIHRydWUsIHByb2dyZXNz LCBfYnRfYnVpbGRfY2FsbGJhY2ssCiAJCQkJCQkJCQkgICAmYnVpbGRzdGF0ZSwgc2Nhbik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCA4NzQ5MTc5NjUyMy4uMmZmMjliNmU0MGIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMTYzLDEwICsxNjMsMTEgQEAgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2MgcHNjYW4sCiB9CiAKIFRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQordGFibGVf YmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRl c2MgcHNjYW4sIHVpbnQzMiBmbGFncykKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQl1aW50MzIJ CWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKworCWZsYWdzIHw9IFNPX1RZUEVfU0VRU0NBTiB8 CiAJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwog CiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nh bi0+cGhzX2xvY2F0b3IpKTsKQEAgLTI0OCw3ICsyNDksNyBAQCB0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJYm9vbAkJZm91bmQ7CiAKIAlzbG90ID0gdGFibGVf c2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKLQlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4o cmVsKTsKKwlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCAwKTsKIAlmb3VuZCA9 IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxs X2FnYWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOwogCXRhYmxlX2luZGV4X2ZldGNoX2VuZChzY2Fu KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwppbmRleCBjYzExYzQ3YjZmMi4uMzdjZmJkNjM5 MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKQEAgLTEwNiw3ICsxMDYsNyBAQCB1bmlx dWVfa2V5X3JlY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAl0bXB0aWQgPSBjaGVja3Rp ZDsKIAl7Ci0JCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9i ZWdpbih0cmlnZGF0YS0+dGdfcmVsYXRpb24pOworCQlJbmRleEZldGNoVGFibGVEYXRhICpzY2Fu ID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCAwKTsKIAkJ Ym9vbAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCiAJCWlmICghdGFibGVfaW5kZXhfZmV0Y2hfdHVw bGUoc2NhbiwgJnRtcHRpZCwgU25hcHNob3RTZWxmLCBzbG90LApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpp bmRleCA0YWI0YTM4OTNkNS4uNDI2MWJhZjRhNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0x MTU2LDcgKzExNTYsNyBAQCBDb3B5UmVsYXRpb25UbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gcm9vdF9yZWwsIHVpbnQ2NCAqcHJvYwogCUF0dHJNYXAgICAgKm1h cCA9IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKnJvb3Rfc2xvdCA9IE5VTEw7CiAKLQlzY2FuZGVz YyA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOwor CXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwg TlVMTCwgMCk7CiAJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmOTc2YzBlNWM3ZS4uZWIzNWRiYmM4NTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC02Mzc4LDcgKzYzNzgsNyBAQCBBVFJld3JpdGVU YWJsZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwKQogCQkgKiBjaGVja2lu ZyBhbGwgdGhlIGNvbnN0cmFpbnRzLgogCQkgKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJl bCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJlbCwg c25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCkBAIC0xMzc2OCw3ICsx Mzc2OCw3IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkg Ki8KIAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJ c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihyZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJl bCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJcGVyVHVwQ3h0ID0gQWxsb2NTZXRDb250ZXh0 Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJICAidmFsaWRhdGVGb3JlaWdu S2V5Q29uc3RyYWludCIsCkBAIC0yMjYyNiw3ICsyMjYyNiw3IEBAIE1lcmdlUGFydGl0aW9uc01v dmVSb3dzKExpc3QgKip3cXVldWUsIExpc3QgKm1lcmdpbmdQYXJ0aXRpb25zLCBSZWxhdGlvbiBu ZXdQYXJ0CiAKIAkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLwogCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFi bGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAog CQkvKgogCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBp dCBmb3IgZWFjaCB0dXBsZQpAQCAtMjMwOTAsNyArMjMwOTAsNyBAQCBTcGxpdFBhcnRpdGlvbk1v dmVSb3dzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsCiAK IAkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICovCiAJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRS ZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHNwbGl0UmVs LCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkvKgogCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwppbmRleCBlNWZhMDU3ODg4OS4uOGMxMTRmYTU2ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdmFsaWRhdGVEb21haW5Ob3ROdWxsQ29uc3Ry YWludChPaWQgZG9tYWlub2lkKQogCiAJCS8qIFNjYW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJlbGF0 aW9uICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgp KTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7 CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUodGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxlICh0 YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkK IAkJewpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdmFsaWRhdGVEb21haW5DaGVja0NvbnN0cmFpbnQo T2lkIGRvbWFpbm9pZCwgY29uc3QgY2hhciAqY2NiaW4sIExPQ0tNT0RFIGxvY2ttb2QKIAogCQkv KiBTY2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxhdGlvbiAqLwogCQlzbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNj YW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAkJc2xvdCA9IHRhYmxlX3Nsb3RfY3Jl YXRlKHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2Fu LCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0lu ZGV4aW5nLmMKaW5kZXggNmFlMGY5NTk1OTIuLjZkM2U5ZDJmMzExIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjSW5kZXhpbmcuYwpAQCAtODE2LDcgKzgxNiw3IEBAIGNoZWNrX2V4Y2x1c2lvbl9vcl91 bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHJldHJ5Ogog CWNvbmZsaWN0ID0gZmFsc2U7CiAJZm91bmRfc2VsZiA9IGZhbHNlOwotCWluZGV4X3NjYW4gPSBp bmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZEaXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5 YXR0cywgMCk7CisJaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwLCBpbmRleCwgJkRp cnR5U25hcHNob3QsIE5VTEwsIGluZG5rZXlhdHRzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oaW5k ZXhfc2Nhbiwgc2NhbmtleXMsIGluZG5rZXlhdHRzLCBOVUxMLCAwKTsKIAogCXdoaWxlIChpbmRl eF9nZXRuZXh0X3Nsb3QoaW5kZXhfc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIGV4aXN0aW5n X3Nsb3QpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCAxNzNkMmZl NTQ4ZC4uZGIxYjMyMmM2NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleChSZWxhdGlv biByZWwsIE9pZCBpZHhvaWQsCiAJc2tleV9hdHRvZmYgPSBidWlsZF9yZXBsaW5kZXhfc2Nhbl9r ZXkoc2tleSwgcmVsLCBpZHhyZWwsIHNlYXJjaHNsb3QpOwogCiAJLyogU3RhcnQgYW4gaW5kZXgg c2Nhbi4gKi8KLQlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVM TCwgc2tleV9hdHRvZmYsIDApOworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhyZWws ICZzbmFwLCBOVUxMLCBza2V5X2F0dG9mZiwgMCwgMCk7CiAKIHJldHJ5OgogCWZvdW5kID0gZmFs c2U7CkBAIC0zODIsNyArMzgyLDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9u IHJlbCwgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKIAogCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiAq LwogCUluaXREaXJ0eVNuYXBzaG90KHNuYXApOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVs LCAmc25hcCwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsICZzbmFwLCAw LCBOVUxMLCAwKTsKIAlzY2Fuc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAK IHJldHJ5OgpAQCAtNjAxLDcgKzYwMSw3IEBAIFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9T ZXEoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc2VhcmNoc2xvdCwKIAkgKiBub3QgeWV0 IGNvbW1pdHRlZCBvciB0aG9zZSBqdXN0IGNvbW1pdHRlZCBwcmlvciB0byB0aGUgc2NhbiBhcmUK IAkgKiBleGNsdWRlZCBpbiB1cGRhdGVfbW9zdF9yZWNlbnRfZGVsZXRpb25faW5mbygpLgogCSAq LwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCk7CisJ c2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIFNuYXBzaG90QW55LCAwLCBOVUxMLCAwKTsKIAlz Y2Fuc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAl0YWJsZV9yZXNjYW4o c2NhbiwgTlVMTCk7CkBAIC02NjUsNyArNjY1LDcgQEAgUmVsYXRpb25GaW5kRGVsZXRlZFR1cGxl SW5mb0J5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCSAqIG5vdCB5ZXQgY29tbWl0 dGVkIG9yIHRob3NlIGp1c3QgY29tbWl0dGVkIHByaW9yIHRvIHRoZSBzY2FuIGFyZQogCSAqIGV4 Y2x1ZGVkIGluIHVwZGF0ZV9tb3N0X3JlY2VudF9kZWxldGlvbl9pbmZvKCkuCiAJICovCi0Jc2Nh biA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgU25hcHNob3RBbnksIE5VTEwsIHNrZXlf YXR0b2ZmLCAwKTsKKwlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCBTbmFwc2hv dEFueSwgTlVMTCwgc2tleV9hdHRvZmYsIDAsIDApOwogCiAJaW5kZXhfcmVzY2FuKHNjYW4sIHNr ZXksIHNrZXlfYXR0b2ZmLCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSGVhcHNjYW4uYwppbmRleCAyYzY4MzI3Y2IyOS4uNjJkZmYwMTBkMTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUsMTEgKzEwNSwxOCBAQCBC aXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlm ICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7 CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2Nh bnJlbGlkLAorCQkJCQkJICAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykp CisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQlub2RlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MgPQogCQkJdGFibGVfYmVnaW5zY2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiwKIAkJCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJ CQkJICAgMCwKLQkJCQkJCQkgICBOVUxMKTsKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIGZs YWdzKTsKIAl9CiAKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJh dG9yID0gdGJtaXRlcmF0b3I7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCBjMmQwOTM3NDUxNy4uY2Y0ZDlhNGY4MzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4b25seXNjYW4uYwpAQCAtOTQsNyArOTQsNyBAQCBJbmRleE9ubHlOZXh0KEluZGV4 T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJ CQkJCQkJICAgJm5vZGUtPmlvc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19O dW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJ CQkJCSAgIG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlvc3NfU2Nh bkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4 IDg0ODIzZjBiNjE1Li4wMGU4NmM1YmZkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYwpAQCAtMTAyLDYgKzEwMiwxMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUp CiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJ CWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxp ZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09f SElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGlu ZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVj dXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgpAQCAt MTExLDcgKzExNyw4IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJ ICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50 LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlz c19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywK KwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CkBAIC0yMDcsNyArMjE0LDcgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUg Km5vZGUpCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJCSAgICZub2Rl LT5pc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAotCQkJ CQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCQkJCQkJCQkgICBub2RlLT5pc3Nf TnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCBiODExOWZhY2U0My4uNzcxODM3NmJj MmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtNjUsMTMgKzY1LDIwIEBAIFNl cU5leHQoU2VxU2NhblN0YXRlICpub2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJewor CQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5v ZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVk X3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkg KiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUg c2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEgc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBh cmFsbGVsLgogCQkgKi8KIAkJc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4obm9kZS0+c3Muc3Nf Y3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJ CQkgICAwLCBOVUxMKTsKKwkJCQkJCQkJICAgMCwgTlVMTCwgZmxhZ3MpOworCiAJCW5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNjOwogCX0KIApAQCAtMzY3LDE0ICszNzQsMjAg QEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIHsKIAlFU3Rh dGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCVBhcmFsbGVsVGFibGVTY2FuRGVz YyBwc2NhbjsKKwl1aW50MzIJCWZsYWdzID0gMDsKIAogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0 ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJ CQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywg bm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CisJaWYgKCFibXNfaXNfbWVt YmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBlc3Rh dGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCWZsYWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZ OworCiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3Bh cmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4pOworCQl0YWJsZV9iZWdp bnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2NhbiwKKwkJCQkJ CQkJIGZsYWdzKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0LDggKzQxNywxNSBAQCBFeGVjU2Vx U2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVs V29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOwor CXVpbnQzMgkJZmxhZ3MgPSAwOworCisJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2Rl LT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNf bW9kaWZpZWRfcmVsaWRzKSkKKwkJZmxhZ3MgPSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CiAKIAlw c2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5f bm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsK KwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwK KwkJCQkJCQkJIHBzY2FuLAorCQkJCQkJCQkgZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmMKaW5kZXggMGNhMzEyYWMyN2QuLmI3YzRlNmQxMDcxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTMzNjIsNyArMzM2Miw3IEBAIGNoZWNrX2Rl ZmF1bHRfcGFydGl0aW9uX2NvbnRlbnRzKFJlbGF0aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVs dF9yZWwsCiAJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJCXR1cHNs b3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0X3JlbCwgJmVzdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7 Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGFydF9yZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsK KwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihwYXJ0X3JlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJl c2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IDI5ZmVj NjU1NTkzLi5hYzE4MTg1MzIyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTcxODEs NyArNzE4MSw3IEBAIGdldF9hY3R1YWxfdmFyaWFibGVfZW5kcG9pbnQoUmVsYXRpb24gaGVhcFJl bCwKIAogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbCwgaW5kZXhSZWwsCiAJ CQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1hYmxlLCBOVUxMLAotCQkJCQkJCQkgMSwgMCk7CisJ CQkJCQkJCSAxLCAwLCAwKTsKIAkvKiBTZXQgaXQgdXAgZm9yIGluZGV4LW9ubHkgc2NhbiAqLwog CWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3Nj YW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggZTM3ODM0YzQwNmQu LjQzYjlkOGFhYWYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTc3LDcgKzE3Nyw3IEBAIGV4dGVybiBJ bmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJ CQkJCQkgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCSBTbmFwc2hvdCBzbmFwc2hv dCwKIAkJCQkJCQkJCSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCi0JCQkJ CQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKKwkJCQkJCQkJCSBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIHVpbnQzMiBmbGFncyk7CiBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9i ZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBz aG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3Ry dW1lbnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggYWM3NzEzOTBhMzcuLmEwZTg5MzY1YzcwIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCkBAIC0xMTksNiArMTE5LDEyIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0 Y2hIZWFwRGF0YQogCiAJQnVmZmVyCQl4c19jYnVmOwkJLyogY3VycmVudCBoZWFwIGJ1ZmZlciBp biBzY2FuLCBpZiBhbnkgKi8KIAkvKiBOQjogaWYgeHNfY2J1ZiBpcyBub3QgSW52YWxpZEJ1ZmZl ciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlciAqLworCisJLyoKKwkgKiBTb21lIG9wdGlt aXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2Rp ZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4gVHJhY2sgdGhhdCBoZXJlLgorCSAqLwor CWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJl c3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAppbmRleCBjOWZhOWYyNTljZC4uNjA2NmFlMTU2ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAt NjMsNiArNjMsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMKIAogCS8qIHVucmVnaXN0ZXIg c25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkv KiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3QgbW9kaWZ5IHRoZSByZWwgKi8KKwlTT19ISU5UX1JF TF9SRUFEX09OTFkgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtNDIwLDcg KzQyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJICoKIAkgKiBUdXBsZXMg Zm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgaW5kZXhfZmV0Y2hfdHVw bGUuCiAJICovCi0Jc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVn aW4pIChSZWxhdGlvbiByZWwpOworCXN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICooKmluZGV4 X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpOwogCiAJLyoKIAkgKiBS ZXNldCBpbmRleCBmZXRjaC4gVHlwaWNhbGx5IHRoaXMgd2lsbCByZWxlYXNlIGNyb3NzIGluZGV4 IGZldGNoCkBAIC04NzMsOSArODc1LDkgQEAgZXh0ZXJuIFR1cGxlVGFibGVTbG90ICp0YWJsZV9z bG90X2NyZWF0ZShSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqKnJlZ2xpc3QpOwogICovCiBzdGF0 aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIFNu YXBzaG90IHNuYXBzaG90LAotCQkJCWludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQlp bnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZs YWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwlmbGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlT T19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAogCXJl dHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtl eSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTE4LDkgKzkyMCw5IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJh dChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogICovCiBzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9ibShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNu YXBzaG90LAotCQkJCSAgIGludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQg bmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdz ID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CisJZmxhZ3MgfD0gU09f VFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90 YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkg ICBOVUxMLCBmbGFncyk7CkBAIC0xMTI3LDcgKzExMjksOCBAQCBleHRlcm4gdm9pZCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAgKiBDYWxsZXIgbXVzdCBob2xk IGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVsYXRpb24uCiAgKi8KIGV4dGVybiBUYWJsZVNjYW5E ZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJ CQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOworCQkJCQkJCQkJCQkgIFBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJICB1aW50MzIgZmxhZ3MpOwogCiAvKgog ICogQmVnaW4gYSBwYXJhbGxlbCB0aWQgcmFuZ2Ugc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZl IGJlZW4gaW5pdGlhbGl6ZWQKQEAgLTExNjMsOSArMTE2Niw5IEBAIHRhYmxlX3BhcmFsbGVsc2Nh bl9yZWluaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4p CiAgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgdGFi bGVfaW5kZXhfZmV0Y2hfdHVwbGUoKS4KICAqLwogc3RhdGljIGlubGluZSBJbmRleEZldGNoVGFi bGVEYXRhICoKLXRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK3RhYmxlX2lu ZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCwgdWludDMyIGZsYWdzKQogewotCXJldHVybiBy ZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJlbCk7CisJcmV0dXJuIHJlbC0+cmRf dGFibGVhbS0+aW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBmbGFncyk7CiB9CiAKIC8qCi0tIAoyLjQz LjAKCg== --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0015-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v32-0015-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1jtyng14 RnJvbSA0YjdjYTdjNGZlYmM1MGM2ZWUwMTljZjAxMjUyYTE5ZWYxYzA2Nzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MjQ6MDggLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMiAxNS8xNl0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gYW5kIENPUFkgRlJFRVpFIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJs ZSBvcgphbGwtZnJvemVuLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0gc2V0 dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWluZyBo ZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmls bCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1W N1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKysr LS0KIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICst CiA1IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBmMjE5YzdhNzFjZi4uODk0MDI5N2Y2ZjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01NzMsNiArNTczLDcgQEAgaGVhcF9wcmVwYXJlX3Bh Z2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19j YnVmOwogCUJsb2NrTnVtYmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNu YXBzaG90OworCUJ1ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50 CQkJbGluZXM7CiAJYm9vbAkJYWxsX3Zpc2libGU7CkBAIC01ODcsNyArNTg4LDkgQEAgaGVhcF9w cmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQg cmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkg Ki8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJ aWYgKHNzY2FuLT5yc19mbGFncyAmIFNPX0hJTlRfUkVMX1JFQURfT05MWSkKKwkJdm1idWZmZXIg PSAmc2Nhbi0+cnNfdm1idWZmZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNl LnJzX3JkLCBidWZmZXIsIHZtYnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJl IGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI2 NCw2ICsxMjY3LDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJ fQogCisJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJs ZVNjYW5EZXNjKSBzY2FuOwogfQpAQCAtMTMwMiw2ICsxMzA2LDEyIEBAIGhlYXBfcmVzY2FuKFRh YmxlU2NhbkRlc2Mgc3NjYW4sIFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4t PnJzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4t PnJzX3ZtYnVmZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOwor CQlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19U WVBFX0JJVE1BUFNDQU4gd291bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3Qg aG9sZCBhbnkKIAkgKiBhZGRpdGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEz MzQsNiArMTM0NCw5IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChC dWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2Ni dWYpOwogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNl QnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFk IHN0cmVhbSBiZWZvcmUgZnJlZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBlODhkYjUyZmQ3ZS4u YWIxNzU5NDhjNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpA QCAtODUsNiArODUsNyBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsLCB1 aW50MzIgZmxhZ3MpCiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2Ni dWYgPSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7 CiAJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRfUkVMX1JFQURf T05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwpAQCAtMTAwLDYgKzEwMSwxMiBAQCBo ZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbikKIAkJUmVs ZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1 ZmZlcjsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+eHNfdm1idWZmZXIpKQorCXsK KwkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOworCQloc2Nhbi0+eHNfdm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOSw3ICsxNDYs OCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEg KnNjYW4sCiAJCSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlmIHdlIHdlcmVuJ3QgYWxyZWFkeSBv biB0aGlzIHBhZ2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAhPSBoc2Nhbi0+eHNfY2J1ZikKLQkJ CWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVsLCBoc2Nhbi0+eHNfY2J1Zik7 CisJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4tPnhzX2Ni dWYsCisJCQkJCQkJCWhzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/IE5VTEwgOiAmaHNjYW4tPnhz X3ZtYnVmZmVyKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUgYnVmZmVyIHNv IHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzcsNiArMjQ4NSw3IEBAIEJpdG1h cEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVzdWx0 ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BBR0Vd OwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7CiAK IAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwogCUFzc2VydCho c2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUyMyw3ICsyNTMyLDkgQEAgQml0bWFwSGVhcFNj YW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0J aGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAoc2Nhbi0+cnNf ZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5yc192 bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZtYnVm ZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBj b250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCA5ZjEyNTc1MjliOS4uMDRhYTU2ZTgxYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0yMDIsNiArMjAyLDggQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxf c2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJCSAgUmVsYXRpb24gcmVsYXRpb24s CiAJCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCiAJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgIFBydW5l UmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJICBib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwK IAkJCQkJCQkJICBpbnQgbmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJICB1aW50OCAqb2xkX3ZtYml0 cywKIAkJCQkJCQkJICB1aW50OCAqbmV3X3ZtYml0cyk7CkBAIC0yMjMsOSArMjI1LDEzIEBAIHN0 YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBk b19mcmVlemUsIGJvb2wgZG9fc2V0CiAgKiBpZiB0aGVyZSdzIG5vdCBhbnkgdXNlIGluIHBydW5p bmcuCiAgKgogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gb24gdGhlIGJ1ZmZlciwgYW5kIG11c3Qg Km5vdCogaGF2ZSBhIGxvY2sgb24gaXQuCisgKgorICogSWYgdm1idWZmZXIgaXMgbm90IE5VTEws IGl0IGlzIG9rYXkgZm9yIHBydW5pbmcgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBpZgorICog dGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuIFdlIHdpbGwgdGFrZSBjYXJlIG9mIHBpbm5pbmcgYW5k LCBpZiBuZWVkZWQsCisgKiByZWFkaW5nIGluIHRoZSBwYWdlIG9mIHRoZSB2aXNpYmlsaXR5IG1h cC4KICAqLwogdm9pZAotaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcikKK2hlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsIEJ1ZmZlciAqdm1idWZmZXIpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKIAlUcmFuc2FjdGlvbklkIHBydW5lX3hpZDsKQEAgLTMwNiw2ICszMTIsMTMg QEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikK IAkJCQkuY3V0b2ZmcyA9IE5VTEwsCiAJCQl9OwogCisJCQlpZiAodm1idWZmZXIpCisJCQl7CisJ CQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZl ciksIHZtYnVmZmVyKTsKKwkJCQlwYXJhbXMub3B0aW9ucyB8PSBIRUFQX1BBR0VfUFJVTkVfVVBE QVRFX1ZNOworCQkJCXBhcmFtcy52bWJ1ZmZlciA9ICp2bWJ1ZmZlcjsKKwkJCX0KKwogCQkJaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoJnBhcmFtcywgJnByZXN1bHQsICZkdW1teV9vZmZfbG9j LAogCQkJCQkJCQkJICAgTlVMTCwgTlVMTCk7CiAKQEAgLTk1MSw2ICs5NjQsOSBAQCBpZGVudGlm eV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIs CiAgKiBjb3JydXB0ZWQsIGl0IHdpbGwgZml4IHRoZW0gYnkgY2xlYXJpbmcgdGhlIFZNIGJpdHMg YW5kIHZpc2liaWxpdHkgaGludC4KICAqIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBkb25lIGlu IGEgY3JpdGljYWwgc2VjdGlvbi4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBh ZnRlciBkb19mcmVlemUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVl biBzZXQpLCBhcyB0aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9u LgorICoKICAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBz ZXQsIGFsb25nIHdpdGggcmV0dXJuaW5nIHRoZQogICogY3VycmVudCB2YWx1ZSBvZiB0aGUgVk0g Yml0cyBpbiAqb2xkX3ZtYml0cyBhbmQgdGhlIGRlc2lyZWQgbmV3IHZhbHVlIG9mCiAgKiB0aGUg Vk0gYml0cyBpbiAqbmV3X3ZtYml0cy4KQEAgLTk2NCw2ICs5ODAsOCBAQCBoZWFwX3BhZ2Vfd2ls bF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJICBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhl YXBfcGFnZSwKIAkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAogCQkJCQkgIGludCBu bHBkZWFkX2l0ZW1zLAogCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkgIHVpbnQ4ICpu ZXdfdm1iaXRzKQpAQCAtOTc0LDYgKzk5MiwyNCBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwKIAlpZiAoIXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCQly ZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5k IHdlJ3JlIG5vdCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2li aWxpdHkgbWFwIGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJ ICogdGhlIHBhZ2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBp bmNsdWRpbmcgYQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGlu IHRoZSBXQUwuIFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2Vz cyBwcnVuaW5nIGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFs aWQuCisJICovCisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFCdWZmZXJJ c0RpcnR5KGhlYXBfYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChoZWFwX2J1 ZmZlcikpKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJKm9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLAogCQkJCQkJCQkJ CSAgICZ2bWJ1ZmZlcik7CiAKQEAgLTExNzEsNiArMTIwNyw4IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgIGJ1ZmZlciwK IAkJCQkJCQkJCSAgcGFnZSwKIAkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHBhcmFt cy0+cmVhc29uLAorCQkJCQkJCQkJICBkb19wcnVuZSwgZG9fZnJlZXplLAogCQkJCQkJCQkJICBw cnN0YXRlLmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCiAJCQkJCQkJCQkg ICZuZXdfdm1iaXRzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBhMGU4OTM2NWM3MC4uN2U2ODkyOGYz ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhl YXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAq cnNfcGFyYWxsZWx3b3JrZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBh bmQgYml0bWFwIGhlYXAgc2NhbnMuIElmIHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBt b2RpZmllZCwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBw YWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLwor CUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBh Z2UtYXQtYS10aW1lIG1vZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2Np bmRleDsJCS8qIGN1cnJlbnQgdHVwbGUncyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJ CXJzX250dXBsZXM7CQkvKiBudW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAt MTE3LDggKzEyNCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJ bmRleEZldGNoVGFibGVEYXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhl IGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZm ZXIgaW4gc2NhbiwgaWYgYW55ICovCi0JLyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRC dWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQg aGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJ bnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZl cgkJeHNfY2J1ZjsKKworCS8qCisJICogRm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlm eSB0aGUgdW5kZXJseWluZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSBy ZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8K KwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogCiAJLyoKIAkg KiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBk b2VzIG5vdCBtb2RpZnkKQEAgLTQxOSw3ICs0MzYsOCBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBo ZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQkgIFRNX0lu ZGV4RGVsZXRlT3AgKmRlbHN0YXRlKTsKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwotZXh0 ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVybiB2b2lk IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ CQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNl dE51bWJlciAqb2ZmX2xvYywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0 YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCBkMjY0YTY5OGZmNi4uYTU1MzZiYTRmZjYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rp bmcucGwKQEAgLTI5Niw2ICsyOTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBs aWNhdGlvbl9zbG90cyA9IDQKIG1heF93YWxfc2VuZGVycyA9IDQKIGF1dG92YWN1dW0gPSBvZmYK K2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KIH0pOwogJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZv OwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC03NDgsNyArNzQ5LDcgQEAgY2hlY2tfcGdfcmVj dmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5s b2dmaWxlOwogCiByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygn c2hhcmVkX3Jvd19yZW1vdmFsXycsCi0JJ25vX2NvbmZsaWN0XycsIDAsIDEpOworCSdub19jb25m bGljdF8nLCAxLCAwKTsKIAogIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0CiB3 YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --00000000000066b50f0647a904bd Content-Type: text/x-patch; charset="UTF-8"; name="v32-0016-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v32-0016-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1ju1ac15 RnJvbSBiNTVjNTYxZDA2NDUxNzIzNDQ0N2M1ZDFhMjBiODY4NDgyNzYyYjA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzIgMTYvMTZdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKVGhlIGlu ZGV4IGtpbGx0dXBsZXMgdGVzdCBoYWQgdG8gYmUgdXBkYXRlZCB0byByZWZsZWN0IGEgbGFyZ2Vy IG51bWJlcgpvZiBoaXRzIGJ5IHNvbWUgYWNjZXNzZXMuIFNpbmNlIHRoZSBwcnVuZV94aWQgaXMg c2V0IGJ5IHRoZSBmaWxsL2luc2VydApzdGVwLCBvbi1hY2Nlc3MgcHJ1bmluZyBjYW4gaGFwcGVu IGR1cmluZyB0aGUgZmlyc3QgYWNjZXNzIHN0ZXAgKGJlZm9yZQp0aGUgREVMRVRFKS4gVGhpcyBp cyB3aGVuIHRoZSBWTSBpcyBleHRlbmRlZC4gQWZ0ZXIgdGhlIERFTEVURSwgdGhlIG5leHQKYWNj ZXNzIGhpdHMgdGhlIFZNIGJsb2NrIGluc3RlYWQgb2YgZXh0ZW5kaW5nIGl0LiBUaHVzLCBhbiBh ZGRpdGlvbmFsCmJ1ZmZlciBoaXQgaXMgY291bnRlZCBmb3IgdGhlIHRhYmxlLgoKUmV2aWV3ZWQt Ynk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICAgICAgIHwgMTUgKysrKysr KysrKy0KIC4uLi9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0ICAgICB8ICA2 ICsrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggODk0MDI5N2Y2ZjMuLjE4NDEzZDU4Nzhm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjEyMiw2ICsyMTIyLDcgQEAgaGVhcF9p bnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJ VHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwogCUhlYXBUdXBs ZQloZWFwdHVwOwogCUJ1ZmZlcgkJYnVmZmVyOworCVBhZ2UJCXBhZ2U7CiAJQnVmZmVyCQl2bWJ1 ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNl OwogCkBAIC0yMTgxLDE1ICsyMTgyLDE5IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCX0KIAogCS8qCi0JICogWFhYIFNob3Vs ZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/CisJICogU2V0IHBkX3BydW5l X3hpZCB0byB0cmlnZ2VyIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgb25jZSB0aGUgcGFn ZQorCSAqIGlzIGZ1bGwgc28gdGhhdCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC12aXNpYmxlIGlu IHRoZSBWTS4KIAkgKgotCSAqIFRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gbWF5IGV2ZW50dWFs bHkgYWJvcnQgdGh1cyBtYWtpbmcgdGhpcyB0dXBsZQotCSAqIERFQUQgYW5kIGhlbmNlIGF2YWls YWJsZSBmb3IgcHJ1bmluZy4gVGhvdWdoIHdlIGRvbid0IHdhbnQgdG8gb3B0aW1pemUKLQkgKiBm b3IgYWJvcnRzLCBpZiBubyBvdGhlciB0dXBsZSBpbiB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxF VEVkLCB0aGUKLQkgKiBhYm9ydGVkIHR1cGxlIHdpbGwgbmV2ZXIgYmUgcHJ1bmVkIHVudGlsIG5l eHQgdmFjdXVtIGlzIHRyaWdnZXJlZC4KKwkgKiBTZXR0aW5nIHBkX3BydW5lX3hpZCBpcyBhbHNv IGhhbmR5IGlmIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBldmVudHVhbGx5IGFib3J0 cyBtYWtpbmcgdGhpcyB0dXBsZSBERUFEIGFuZCBoZW5jZSBhdmFpbGFibGUgZm9yCisJICogcHJ1 bmluZy4gSWYgbm8gb3RoZXIgdHVwbGUgaW4gdGhpcyBwYWdlIGlzIFVQREFURWQvREVMRVRFZCwg dGhlIGFib3J0ZWQKKwkgKiB0dXBsZSB3b3VsZCBuZXZlciBvdGhlcndpc2UgYmUgcHJ1bmVkIHVu dGlsIG5leHQgdmFjdXVtIGlzIHRyaWdnZXJlZC4KIAkgKgotCSAqIElmIHlvdSBkbyBhZGQgUGFn ZVNldFBydW5hYmxlIGhlcmUsIGFkZCBpdCBpbiBoZWFwX3hsb2dfaW5zZXJ0IHRvby4KKwkgKiBE b24ndCBzZXQgaXQgaWYgd2UgYXJlIGluIGJvb3RzdHJhcCBtb2RlLCB0aG91Z2guCiAJICovCisJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKwlpZiAoVHJhbnNhY3Rpb25JZElzTm9ybWFs KHhpZCkpCisJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJTWFya0J1ZmZlckRpcnR5 KGJ1ZmZlcik7CiAKQEAgLTIxOTksNyArMjIwNCw2IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJl bGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQl4bF9oZWFwX2luc2VydCB4 bHJlYzsKIAkJeGxfaGVhcF9oZWFkZXIgeGxoZHI7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQlQ YWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQl1aW50OAkJaW5mbyA9IFhMT0df SEVBUF9JTlNFUlQ7CiAJCWludAkJCWJ1ZmZsYWdzID0gMDsKIApAQCAtMjU2Myw4ICsyNTY3LDEz IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAq KnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJfQogCiAJCS8qCi0JCSAqIFhYWCBTaG91bGQgd2Ugc2V0 IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQorCQkgKiBT ZXQgcGRfcHJ1bmVfeGlkLiBTZWUgaGVhcF9pbnNlcnQoKSBmb3IgbW9yZSBvbiB3aHkgd2UgZG8g dGhpcyB3aGVuCisJCSAqIGluc2VydGluZyB0dXBsZXMuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBp ZiB3ZSBhcmVuJ3QgYWxyZWFkeQorCQkgKiBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiBpbiB0aGUg Vk0uIFdlIGFsc28gZG9uJ3Qgc2V0IGl0IGluCisJCSAqIGJvb3RzdHJhcCBtb2RlLgogCQkgKi8K KwkJaWYgKCFhbGxfZnJvemVuX3NldCAmJiBUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJ CVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5YTI5ZmRhMzYwMS4u NDljYzgzYTY0NzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNDQ3 LDYgKzQ0NywxMiBAQCBoZWFwX3hsb2dfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CiAJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKHBhZ2UpOyAvKiBuZWVkZWQgdG8g dXBkYXRlIEZTTSBiZWxvdyAqLwogCisJCS8qCisJCSAqIFNldCB0aGUgcGFnZSBwcnVuYWJsZSB0 byB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxhdGVyIHdoaWNoIG1heQorCQkgKiBzZXQgdGhl IHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgorCQkgKi8KKwkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CisKIAkJUGFnZVNldExTTihwYWdlLCBsc24pOwog CiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCkBA IC01OTYsOSArNjAyLDE2IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NM RUFSRUQpCiAJCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogCi0JCS8qIFhMSF9JTlNFUlRf QUxMX0ZST1pFTl9TRVQgaW1wbGllcyB0aGF0IGFsbCB0dXBsZXMgYXJlIHZpc2libGUgKi8KKwkJ LyoKKwkJICogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRoYXQgYWxsIHR1cGxl cyBhcmUgdmlzaWJsZS4gSWYKKwkJICogd2UgYXJlIG5vdCBzZXR0aW5nIHRoZSBwYWdlIGZyb3pl biwgdGhlbiBzZXQgdGhlIHBhZ2UncyBwcnVuYWJsZQorCQkgKiBoaW50IHNvIHRoYXQgd2UgdHJp Z2dlciBvbi1hY2Nlc3MgcHJ1bmluZyBsYXRlciB3aGljaCBtYXkgc2V0IHRoZQorCQkgKiBwYWdl IGFsbC12aXNpYmxlIGluIHRoZSBWTS4KKwkJICovCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhf SU5TRVJUX0FMTF9GUk9aRU5fU0VUKQogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCWVs c2UKKwkJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOwogCiAJ CU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luZGV4 L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CmluZGV4IGJlN2RkZDc1NmVmLi5iMjlmMjQzNGIwMCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9leHBlY3RlZC9raWxsdHVwbGVzLm91 dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CkBA IC01NCw3ICs1NCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxr c19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMgRlJPTSBj b3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3Jf dHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAg ICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJlOiBVUERB VEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBo ZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdr aWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RlcCBmbHVzaDogU0VMRUNU IEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDogU0VMRUNUIGhl YXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3NlcyBBUyBu ZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJF IHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3NlcwogLS0tLS0t LS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgMgogKDEgcm93 KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vzc2VzID0gKFNF TEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0aW9fYWxsX3Rh YmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTI4Myw3ICsyODMs NyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK IHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291 bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdf c3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5l d19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAg ICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIg U0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hp dCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90 dXBsZScpOwotLSAKMi40My4wCgo= --00000000000066b50f0647a904bd--