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 1vWhjs-007sXY-1i for pgsql-hackers@arkaria.postgresql.org; Fri, 19 Dec 2025 21:10: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 1vWhjo-0091bz-1o for pgsql-hackers@arkaria.postgresql.org; Fri, 19 Dec 2025 21:10:13 +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 1vWhjn-0091br-31 for pgsql-hackers@lists.postgresql.org; Fri, 19 Dec 2025 21:10:12 +0000 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vWhji-001esL-2y for pgsql-hackers@lists.postgresql.org; Fri, 19 Dec 2025 21:10:12 +0000 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-64b791b5584so2907379a12.0 for ; Fri, 19 Dec 2025 13:10:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766178601; x=1766783401; 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=7LC4vxjNf7FtIOPNkZLr+oKLbCylrfhr2g7/ZYthqis=; b=WyOyp+RnkxIl5kQNB9dQAyQMDLLTLtTMAZxR6IHVfiqtOiSmrMR9e+EseU8BieRhEt FlxgFhLdpTv1OEEgVZImsZQ7TWicXVFqwy3ZDgQUpAEWi1QppjUWAdI2d5R/U7gJoqx8 ChVWlUdq7CAK8IQYwWqFb8r6LbScoep9m4o5Zwvao0+k/j2t1/poXzJl3MxuvG2OHPM8 wnHfhnnLPH1ExcvyU1HoeI9M9vWH9XnwCt8lKmbQD9TVcF016fVys1Wz5HJJzMzWeeUg o3oq1ry7DDUL6W0k3hufhrFpcWSOL3r0zTGiuC3IX1PPgSXKwbcsgWw6yACWxBWfYubn FlPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766178601; x=1766783401; 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=7LC4vxjNf7FtIOPNkZLr+oKLbCylrfhr2g7/ZYthqis=; b=UD/WBqbbOBtu5rAd9zhC2jH1QIZ0K46tD4w0EpYFnbBRdxnhO/F3WD36Gd6xeuJx+q MhqnY/qqIv+pSVnleQGCbW0MNjpiOz4ATQbuzfGQMy+YM7Ls9+rKdDGvpuOld2yYEYnz 7FQIj6wNO3Firqnzhvz0LIpO8wbO6vB3lwDwNXL0Tq4w4IxWTrrH2w7nnHdchgeODoMX 3EFyKSvJnsQ6p4y8O10LTahpFPF/k/hv10fPWvsk5+9fqo+4F3OIJX1FoiJ60Z2sYQEV RL6ItrpCGzdYqW7i8dZHW/6P9tE4Z+RRaAQ720njz8h7kunc8cVBcfEcZMu3n3mR8HAx v+fw== X-Forwarded-Encrypted: i=1; AJvYcCUohow8BogZXgSwPU/GiAz9q+kbUSJ7AsrfNgafCzqWz3+lHrGRdZytYKW+Zw+znA0b3dv1VbZAJ49bmQDK@lists.postgresql.org X-Gm-Message-State: AOJu0Yy3Jein3ZDZFPbr3lwz+c2KDpy3Qvjz2j6bOkEMiyVb4HSMixWc lMqqLML3RlyH9TsSWGqcZUk6qE4m41RXyfVVQarGr6Byplvj3hJqKsDQTi+Q6w8MIq/+y/0DnGk vE9416NGXq9GTlQQIx4RvkcDGfL1729E= X-Gm-Gg: AY/fxX4QIh55daOsv/5cwpNPwbv6cTFY1Qns407DFUJHeA9uZjh3jg7/D8afgPXMZFL MkcdCvVTjz8k/J5FAjOaLI6aHENoeEl6FKFRLQL/35PmQd6uUntKaU/RUbxmhsBefWrTVwG8eNl TJOJKdIDlvTURRLHDHLfYD9Oyeat1E/BlZGuwUaA+T8GY2J7JCFIBW5uTnazUmMeXhJ36aO81Ss XBx/GZrB1rct/4JQ/HEoNzuWoh7Dzgisqx3Bpxyx9PEX08dZiLsGVA+PQlmM2ZD+xYTJXLg X-Google-Smtp-Source: AGHT+IEM4lTHpVYPW8SqXSfFtxeoYCPSYNQE8YlCl82zU/HWtkI83XW3q2949nuTg3Vautv6I2D6hyDUkuCak3ZHvd8= X-Received: by 2002:aa7:c590:0:b0:64b:58bf:a05 with SMTP id 4fb4d7f45d1cf-64b8ec6e31dmr3015384a12.18.1766178600595; Fri, 19 Dec 2025 13:10:00 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: From: Melanie Plageman Date: Fri, 19 Dec 2025 16:09:47 -0500 X-Gm-Features: AQt7F2rpt6conyJxVj4pE4BJk3nT2BKlniywp0y-_5yJB3Ajc9lqijjvEg_i3NM Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Xuneng Zhou Cc: Andres Freund , Kirill Reshke , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas , Chao Li Content-Type: multipart/mixed; boundary="00000000000019fcd206465480cb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000019fcd206465480cb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Attached v29 addresses some feedback and also corrects a small error with the assertion I had added in the previous version's 0009. On Thu, Dec 18, 2025 at 10:38=E2=80=AFPM Xuneng Zhou = wrote: > > I=E2=80=99ve done a basic review of patches 1 and 2. Here are some commen= ts > which may be somewhat immature, as this is a fairly large change set > and I=E2=80=99m new to some parts of the code. > > 1) Potential stale old_vmbits after VM repair n v2 Good catch! I've fixed this in attached v29. > 2) Add Assert(BufferIsDirty(buf)) > > Since the patch's core claim is "buffer must be dirty before WAL > registration", an assertion encodes this invariant. Should we add: > > Assert(BufferIsValid(buf)); > Assert(BufferIsDirty(buf)); > > right before the visibilitymap_set() call? There are already assertions that will trip in various places -- most importantly in XLogRegisterBuffer(), which is the one that inspired this refactor. > The comment at lines: > > "The only scenario where it is not already dirty is if the VM was remov= ed=E2=80=A6" > > This phrasing could become misleading after future refactors. Can we > make it more direct like: > > > "We must mark the heap buffer dirty before calling visibilitymap_set(),= because it may WAL-log the buffer and XLogRegisterBuffer() requires it." I see your point about future refactors missing updating comments like this. But, I don't think we are going to refactor the code such that we can have PD_ALL_VISIBLE set without the VM bits set more often. Also, it is common practice in Postgres to describe very specific edge cases or odd scenarios in order to explain code that may seem confusing without the comment. It does risk that comment later becoming stale, but it is better that future developers understand why the code is there. That being said, I take your point that the comment is confusing. I have updated it in a different way. > > "Even if PD_ALL_VISIBLE is already set, we don't need to worry about un= necessarily dirtying the heap buffer, as it must be marked dirty before add= ing it to the WAL chain. The only scenario where it is not already dirty is= if the VM was removed..." > > In this test we now call MarkBufferDirty() on the heap page even when > only setting the VM, so the comments claiming =E2=80=9Cdoes not need to m= odify > the heap buffer=E2=80=9D/=E2=80=9Cno heap page modification=E2=80=9D migh= t be misleading. It > might be better to say the test doesn=E2=80=99t need to modify heap > tuples/page contents or doesn=E2=80=99t need to prune/freeze. The point I'm trying to make is that we have to dirty the buffer even if we don't modify the page because of the XLOG sub-system requirements. And, it may seem like a waste to do that if not modifying the page, but the page will rarely be clean anyway. I've tried to make this more clear in attached v29. - Melanie --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="UTF-8"; name="v29-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Disposition: attachment; filename="v29-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd146g0 RnJvbSA4NDQyMjc4ODg0YzBkMTI4NTQ3OTEwZDE3ZDNiNjQwZTBhNDA3OGU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDggRGVjIDIwMjUgMTU6NDk6NTQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOSAwMS8xNV0gQ29tYmluZSB2aXNpYmlsaXR5bWFwX3NldCgpIGNhc2VzIGluCiBsYXp5 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 cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMzA3NzhhMTU2MzkuLmNl Y2JhMjE0NmVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMDkzLDE2 ICsyMDkzLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogb2Yg bGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2li bGUgYW5kCiAJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMKIAkgKi8KLQlpZiAoIWFsbF92aXNpYmxl X2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0LmFsbF92aXNpYmxlKQorCWlmICgocHJlc3VsdC5h bGxfdmlzaWJsZSAmJiAhYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtKSB8fAorCQkocHJlc3Vs dC5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpKQog CXsKIAkJdWludDgJCW9sZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEU7CiAKIAkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKIAkJ CWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQogCiAJCS8qCiAJCSAqIEl0 IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlz IHNldApAQCAtMjExMCwxNSArMjEwOCwyNSBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAq 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 Y29uZmxpY3RfaG9yaXpvbiwKQEAgLTIxOTAsNjUgKzIxOTgsNiBAQCBsYXp5X3NjYW5fcHJ1bmUo 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= --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Disposition: attachment; filename="v29-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd18qi1 RnJvbSA4MDkzM2JjYjlmNmE3NjJhOTFlZDc3M2UzNmVhNTFlODAwMTA1ZmFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDExIERlYyAyMDI1IDEwOjQ4OjEzIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjkgMDIvMTVdIEVsaW1pbmF0ZSB1c2Ugb2YgY2FjaGVkIFZNIHZhbHVlIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQoKbGF6eV9zY2FuX3BydW5lKCkgdGFrZXMgYSBwYXJhbWV0ZXIgZnJvbSBs YXp5X3NjYW5faGVhcCgpIGluZGljYXRpbmcKd2hldGhlciB0aGUgcGFnZSB3YXMgbWFya2VkIGFs bC12aXNpYmxlIGluIHRoZSBWTSBhdCB0aGUgdGltZSBpdCB3YXMKbGFzdCBjaGVja2VkIGluIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiBUaGlzIGJlaGF2aW9yIGlzCmhpc3RvcmljYWws IGRhdGluZyBiYWNrIHRvIGNvbW1pdCA2MDgxOTVhM2EzNjUsIHdoZW4gd2UgZGlkIG5vdCBwaW4g dGhlClZNIHBhZ2UgdW50aWwgY29uZmlybWluZyBpdCB3YXMgbm90IGFsbC12aXNpYmxlLiBOb3cg dGhhdCB0aGUgVk0gcGFnZSBpcwphbHJlYWR5IHBpbm5lZCwgdGhlcmUgaXMgbm8gbWVhbmluZ2Z1 bCBiZW5lZml0IHRvIHJlbHlpbmcgb24gYSBjYWNoZWQgVk0Kc3RhdHVzLgoKUmVtb3ZpbmcgdGhp cyBjYWNoZWQgdmFsdWUgc2ltcGxpZmllcyB0aGUgbG9naWMgaW4gYm90aCBsYXp5X3NjYW5faGVh cCgpCmFuZCBsYXp5X3NjYW5fcHJ1bmUoKS4gSXQgYWxzbyBjbGFyaWZpZXMgZnV0dXJlIHdvcmsg dGhhdCB3aWxsIHNldCB0aGUKdmlzaWJpbGl0eSBtYXAgb24tYWNjZXNzOiBzdWNoIHBhdGhzIHdp bGwgbm90IGhhdmUgYSBjYWNoZWQgdmFsdWUKYXZhaWxhYmxlIHdoaWNoIHdvdWxkIG1ha2UgdGhl IGxvZ2ljIGhhcmRlciB0byByZWFzb24gYWJvdXQuIEVsaW1pbmF0aW5nCml0IGFsc28gZW5hYmxl cyB1cyB0byBkZXRlY3QgYW5kIHJlcGFpciBWTSBjb3JydXB0aW9uIG9uLWFjY2Vzcy4KCkFsb25n IHdpdGggcmVtb3ZpbmcgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgdW5jb25kaXRpb25hbGx5IGNoZWNr aW5nIHRoZQp2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBwYWdlLCB0aGlzIGNvbW1pdCBh bHNvIG1vdmVzIHRoZSBWTQpjb3JydXB0aW9uIGhhbmRsaW5nIHRvIG9jY3VyIGZpcnN0LiBUaGlz IHJlb3JkZXJpbmcgc2hvdWxkIGhhdmUgbm8KcGVyZm9ybWFuY2UgaW1wYWN0LCBzaW5jZSB0aGUg Y2hlY2tzIGFyZSBpbmV4cGVuc2l2ZSBhbmQgcGVyZm9ybWVkIG9ubHkKb25jZSBwZXIgcGFnZS4g SXQgZG9lcywgaG93ZXZlciwgbWFrZSB0aGUgY29udHJvbCBmbG93IGVhc2llciB0bwp1bmRlcnN0 YW5kLiBUaGUgbmV3IHJlc3RydWN0dXJpbmcgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0aGF0IGFm dGVyCmZpeGluZyBjb3JydXB0aW9uLCB0aGUgVk0gY291bGQgYmUgbmV3bHkgc2V0LCBpZiBwcnVu aW5nIGZvdW5kIHRoZSBwYWdlCmFsbC12aXNpYmxlLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFu IDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8 cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFh1bmVuZyBaaG91IDx4dW5lbmd6 aG91QGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS81Q0VBQTE2Mi02 N0IxLTQ0REEtQjYwRC04QjY1NzE3RThCMDUlNDBnbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAxODIgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgOTkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGNlY2JhMjE0NmVhLi5kNDdlZDc4MTRj OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjQ4LDEzICsyNDgsNiBA QCB0eXBlZGVmIGVudW0KICAqLwogI2RlZmluZSBFQUdFUl9TQ0FOX1JFR0lPTl9TSVpFIDQwOTYK IAotLyoKLSAqIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHNldHMgdGhlc2UgZmxhZ3MgdG8g Y29tbXVuaWNhdGUgaW5mb3JtYXRpb24KLSAqIGFib3V0IHRoZSBibG9jayBpdCByZWFkIHRvIHRo ZSBjYWxsZXIuCi0gKi8KLSNkZWZpbmUgVkFDX0JMS19XQVNfRUFHRVJfU0NBTk5FRCAoMSA8PCAw KQotI2RlZmluZSBWQUNfQkxLX0FMTF9WSVNJQkxFX0FDQ09SRElOR19UT19WTSAoMSA8PCAxKQot CiB0eXBlZGVmIHN0cnVjdCBMVlJlbFN0YXRlCiB7CiAJLyogVGFyZ2V0IGhlYXAgcmVsYXRpb24g YW5kIGl0cyBpbmRleGVzICovCkBAIC0zNTgsNyArMzUxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZS ZWxTdGF0ZQogCS8qIFN0YXRlIG1haW50YWluZWQgYnkgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2Nr KCkgKi8KIAlCbG9ja051bWJlciBjdXJyZW50X2Jsb2NrOwkvKiBsYXN0IGJsb2NrIHJldHVybmVk ICovCiAJQmxvY2tOdW1iZXIgbmV4dF91bnNraXBwYWJsZV9ibG9jazsgLyogbmV4dCB1bnNraXBw YWJsZSBibG9jayAqLwotCWJvb2wJCW5leHRfdW5za2lwcGFibGVfYWxsdmlzOwkvKiBpdHMgdmlz aWJpbGl0eSBzdGF0dXMgKi8KIAlib29sCQluZXh0X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQ7 IC8qIGlmIGl0IHdhcyBlYWdlcmx5IHNjYW5uZWQgKi8KIAlCdWZmZXIJCW5leHRfdW5za2lwcGFi bGVfdm1idWZmZXI7CS8qIGJ1ZmZlciBjb250YWluaW5nIGl0cyBWTSBiaXQgKi8KIApAQCAtNDMy LDcgKzQyNCw3IEBAIHN0YXRpYyBib29sIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0 ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQkgICBib29sIHNoYXJlbG9jaywgQnVmZmVy IHZtYnVmZmVyKTsKIHN0YXRpYyBpbnQJbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3Jl bCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQlCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAotCQkJ CQkJCUJ1ZmZlciB2bWJ1ZmZlciwgYm9vbCBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCisJ CQkJCQkJQnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJCWJvb2wgKmhhc19scGRlYWRfaXRlbXMsIGJv b2wgKnZtX3BhZ2VfZnJvemVuKTsKIHN0YXRpYyBib29sIGxhenlfc2Nhbl9ub3BydW5lKExWUmVs U3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkgIEJsb2NrTnVtYmVyIGJsa25vLCBQ YWdlIHBhZ2UsCkBAIC0xMjQ4LDcgKzEyNDAsNiBAQCBsYXp5X3NjYW5faGVhcChMVlJlbFN0YXRl ICp2YWNyZWwpCiAJLyogSW5pdGlhbGl6ZSBmb3IgdGhlIGZpcnN0IGhlYXBfdmFjX3NjYW5fbmV4 dF9ibG9jaygpIGNhbGwgKi8KIAl2YWNyZWwtPmN1cnJlbnRfYmxvY2sgPSBJbnZhbGlkQmxvY2tO dW1iZXI7CiAJdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrID0gSW52YWxpZEJsb2NrTnVt YmVyOwotCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9hbGx2aXMgPSBmYWxzZTsKIAl2YWNyZWwt Pm5leHRfdW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZCA9IGZhbHNlOwogCXZhY3JlbC0+bmV4dF91 bnNraXBwYWJsZV92bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKQEAgLTEyNjQsMTMgKzEyNTUs MTMgQEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkJCQkJCQkJCU1BSU5f Rk9SS05VTSwKIAkJCQkJCQkJCQloZWFwX3ZhY19zY2FuX25leHRfYmxvY2ssCiAJCQkJCQkJCQkJ dmFjcmVsLAotCQkJCQkJCQkJCXNpemVvZih1aW50OCkpOworCQkJCQkJCQkJCXNpemVvZihib29s KSk7CiAKIAl3aGlsZSAodHJ1ZSkKIAl7CiAJCUJ1ZmZlcgkJYnVmOwogCQlQYWdlCQlwYWdlOwot CQl1aW50OAkJYmxrX2luZm8gPSAwOworCQlib29sCQl3YXNfZWFnZXJfc2Nhbm5lZCA9IGZhbHNl OwogCQlpbnQJCQluZGVsZXRlZCA9IDA7CiAJCWJvb2wJCWhhc19scGRlYWRfaXRlbXM7CiAJCXZv aWQJICAgKnBlcl9idWZmZXJfZGF0YSA9IE5VTEw7CkBAIC0xMzM5LDEzICsxMzMwLDEzIEBAIGxh enlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJaWYgKCFCdWZmZXJJc1ZhbGlkKGJ1 ZikpCiAJCQlicmVhazsKIAotCQlibGtfaW5mbyA9ICooKHVpbnQ4ICopIHBlcl9idWZmZXJfZGF0 YSk7CisJCXdhc19lYWdlcl9zY2FubmVkID0gKigoYm9vbCAqKSBwZXJfYnVmZmVyX2RhdGEpOwog CQlDaGVja0J1ZmZlcklzUGlubmVkT25jZShidWYpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShi dWYpOwogCQlibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Zik7CiAKIAkJdmFjcmVsLT5z Y2FubmVkX3BhZ2VzKys7Ci0JCWlmIChibGtfaW5mbyAmIFZBQ19CTEtfV0FTX0VBR0VSX1NDQU5O RUQpCisJCWlmICh3YXNfZWFnZXJfc2Nhbm5lZCkKIAkJCXZhY3JlbC0+ZWFnZXJfc2Nhbm5lZF9w YWdlcysrOwogCiAJCS8qIFJlcG9ydCBhcyBibG9jayBzY2FubmVkLCB1cGRhdGUgZXJyb3IgdHJh Y2ViYWNrIGluZm9ybWF0aW9uICovCkBAIC0xNDE2LDcgKzE0MDcsNiBAQCBsYXp5X3NjYW5faGVh cChMVlJlbFN0YXRlICp2YWNyZWwpCiAJCWlmIChnb3RfY2xlYW51cF9sb2NrKQogCQkJbmRlbGV0 ZWQgPSBsYXp5X3NjYW5fcHJ1bmUodmFjcmVsLCBidWYsIGJsa25vLCBwYWdlLAogCQkJCQkJCQkJ ICAgdm1idWZmZXIsCi0JCQkJCQkJCQkgICBibGtfaW5mbyAmIFZBQ19CTEtfQUxMX1ZJU0lCTEVf QUNDT1JESU5HX1RPX1ZNLAogCQkJCQkJCQkJICAgJmhhc19scGRlYWRfaXRlbXMsICZ2bV9wYWdl X2Zyb3plbik7CiAKIAkJLyoKQEAgLTE0MzMsOCArMTQyMyw3IEBAIGxhenlfc2Nhbl9oZWFwKExW UmVsU3RhdGUgKnZhY3JlbCkKIAkJICogZXhjbHVkZSBwYWdlcyBza2lwcGVkIGR1ZSB0byBjbGVh bnVwIGxvY2sgY29udGVudGlvbiBmcm9tIGVhZ2VyCiAJCSAqIGZyZWV6ZSBhbGdvcml0aG0gY2Fw cy4KIAkJICovCi0JCWlmIChnb3RfY2xlYW51cF9sb2NrICYmCi0JCQkoYmxrX2luZm8gJiBWQUNf QkxLX1dBU19FQUdFUl9TQ0FOTkVEKSkKKwkJaWYgKGdvdF9jbGVhbnVwX2xvY2sgJiYgd2FzX2Vh Z2VyX3NjYW5uZWQpCiAJCXsKIAkJCS8qIEFnZ3Jlc3NpdmUgdmFjdXVtcyBkbyBub3QgZWFnZXIg c2Nhbi4gKi8KIAkJCUFzc2VydCghdmFjcmVsLT5hZ2dyZXNzaXZlKTsKQEAgLTE2MDEsNyArMTU5 MCw2IEBAIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jayhSZWFkU3RyZWFtICpzdHJlYW0sCiB7CiAJ QmxvY2tOdW1iZXIgbmV4dF9ibG9jazsKIAlMVlJlbFN0YXRlICp2YWNyZWwgPSBjYWxsYmFja19w cml2YXRlX2RhdGE7Ci0JdWludDgJCWJsa19pbmZvID0gMDsKIAogCS8qIHJlbGllcyBvbiBJbnZh bGlkQmxvY2tOdW1iZXIgKyAxIG92ZXJmbG93aW5nIHRvIDAgb24gZmlyc3QgY2FsbCAqLwogCW5l eHRfYmxvY2sgPSB2YWNyZWwtPmN1cnJlbnRfYmxvY2sgKyAxOwpAQCAtMTY2NCw4ICsxNjUyLDgg QEAgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0gKnN0cmVhbSwKIAkJICogb3Ro ZXJ3aXNlIHRoZXkgd291bGQndmUgYmVlbiB1bnNraXBwYWJsZS4KIAkJICovCiAJCXZhY3JlbC0+ Y3VycmVudF9ibG9jayA9IG5leHRfYmxvY2s7Ci0JCWJsa19pbmZvIHw9IFZBQ19CTEtfQUxMX1ZJ U0lCTEVfQUNDT1JESU5HX1RPX1ZNOwotCQkqKCh1aW50OCAqKSBwZXJfYnVmZmVyX2RhdGEpID0g YmxrX2luZm87CisJCS8qIEJsb2NrIHdhcyBub3QgZWFnZXIgc2Nhbm5lZCAqLworCQkqKChib29s ICopIHBlcl9idWZmZXJfZGF0YSkgPSBmYWxzZTsKIAkJcmV0dXJuIHZhY3JlbC0+Y3VycmVudF9i bG9jazsKIAl9CiAJZWxzZQpAQCAtMTY3NywxMSArMTY2NSw3IEBAIGhlYXBfdmFjX3NjYW5fbmV4 dF9ibG9jayhSZWFkU3RyZWFtICpzdHJlYW0sCiAJCUFzc2VydChuZXh0X2Jsb2NrID09IHZhY3Jl bC0+bmV4dF91bnNraXBwYWJsZV9ibG9jayk7CiAKIAkJdmFjcmVsLT5jdXJyZW50X2Jsb2NrID0g bmV4dF9ibG9jazsKLQkJaWYgKHZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9hbGx2aXMpCi0JCQli bGtfaW5mbyB8PSBWQUNfQkxLX0FMTF9WSVNJQkxFX0FDQ09SRElOR19UT19WTTsKLQkJaWYgKHZh Y3JlbC0+bmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVkKQotCQkJYmxrX2luZm8gfD0gVkFD X0JMS19XQVNfRUFHRVJfU0NBTk5FRDsKLQkJKigodWludDggKikgcGVyX2J1ZmZlcl9kYXRhKSA9 IGJsa19pbmZvOworCQkqKChib29sICopIHBlcl9idWZmZXJfZGF0YSkgPSB2YWNyZWwtPm5leHRf dW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZDsKIAkJcmV0dXJuIHZhY3JlbC0+Y3VycmVudF9ibG9j azsKIAl9CiB9CkBAIC0xNzA2LDcgKzE2OTAsNiBAQCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxv Y2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZpcykKIAlCbG9ja051bWJlciBu ZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrID0gdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrICsg MTsKIAlCdWZmZXIJCW5leHRfdW5za2lwcGFibGVfdm1idWZmZXIgPSB2YWNyZWwtPm5leHRfdW5z a2lwcGFibGVfdm1idWZmZXI7CiAJYm9vbAkJbmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVk ID0gZmFsc2U7Ci0JYm9vbAkJbmV4dF91bnNraXBwYWJsZV9hbGx2aXM7CiAKIAkqc2tpcHNhbGx2 aXMgPSBmYWxzZTsKIApAQCAtMTcxNiw3ICsxNjk5LDYgQEAgZmluZF9uZXh0X3Vuc2tpcHBhYmxl X2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMpCiAJCQkJCQkJCQkJ CQkJICAgbmV4dF91bnNraXBwYWJsZV9ibG9jaywKIAkJCQkJCQkJCQkJCQkgICAmbmV4dF91bnNr aXBwYWJsZV92bWJ1ZmZlcik7CiAKLQkJbmV4dF91bnNraXBwYWJsZV9hbGx2aXMgPSAobWFwYml0 cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDA7CiAKIAkJLyoKIAkJICogQXQgdGhl IHN0YXJ0IG9mIGVhY2ggZWFnZXIgc2NhbiByZWdpb24sIG5vcm1hbCB2YWN1dW1zIHdpdGggZWFn ZXIKQEAgLTE3MzUsNyArMTcxNyw3IEBAIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJl bFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKQogCQkgKiBBIGJsb2NrIGlzIHVuc2tp cHBhYmxlIGlmIGl0IGlzIG5vdCBhbGwgdmlzaWJsZSBhY2NvcmRpbmcgdG8gdGhlCiAJCSAqIHZp c2liaWxpdHkgbWFwLgogCQkgKi8KLQkJaWYgKCFuZXh0X3Vuc2tpcHBhYmxlX2FsbHZpcykKKwkJ aWYgKChtYXBiaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKIAkJewogCQkJ QXNzZXJ0KChtYXBiaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwKTsKIAkJCWJy ZWFrOwpAQCAtMTc5Miw3ICsxNzc0LDYgQEAgZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKExW UmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMpCiAKIAkvKiB3cml0ZSB0aGUgbG9j YWwgdmFyaWFibGVzIGJhY2sgdG8gdmFjcmVsICovCiAJdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxl X2Jsb2NrID0gbmV4dF91bnNraXBwYWJsZV9ibG9jazsKLQl2YWNyZWwtPm5leHRfdW5za2lwcGFi bGVfYWxsdmlzID0gbmV4dF91bnNraXBwYWJsZV9hbGx2aXM7CiAJdmFjcmVsLT5uZXh0X3Vuc2tp cHBhYmxlX2VhZ2VyX3NjYW5uZWQgPSBuZXh0X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQ7CiAJ dmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyID0gbmV4dF91bnNraXBwYWJsZV92bWJ1 ZmZlcjsKIH0KQEAgLTE5NTMsOSArMTkzNCw3IEBAIGNtcE9mZnNldE51bWJlcnMoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYikKICAqIENhbGxlciBtdXN0IGhvbGQgcGluIGFuZCBidWZmZXIg Y2xlYW51cCBsb2NrIG9uIHRoZSBidWZmZXIuCiAgKgogICogdm1idWZmZXIgaXMgdGhlIGJ1ZmZl ciBjb250YWluaW5nIHRoZSBWTSBibG9jayB3aXRoIHZpc2liaWxpdHkgaW5mb3JtYXRpb24KLSAq IGZvciB0aGUgaGVhcCBibG9jaywgYmxrbm8uIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBp cyB0aGUgc2F2ZWQKLSAqIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGxvb2tl ZCB1cCBlYXJsaWVyIGJ5IHRoZSBjYWxsZXIuIFdlCi0gKiB3b24ndCByZWx5IGVudGlyZWx5IG9u IHRoaXMgc3RhdHVzLCBhcyBpdCBtYXkgYmUgb3V0IG9mIGRhdGUuCisgKiBmb3IgdGhlIGhlYXAg YmxvY2ssIGJsa25vLgogICoKICAqICpoYXNfbHBkZWFkX2l0ZW1zIGlzIHNldCB0byB0cnVlIG9y IGZhbHNlIGRlcGVuZGluZyBvbiB3aGV0aGVyLCB1cG9uIHJldHVybgogICogZnJvbSB0aGlzIGZ1 bmN0aW9uLCBhbnkgTFBfREVBRCBpdGVtcyBhcmUgc3RpbGwgcHJlc2VudCBvbiB0aGUgcGFnZS4K QEAgLTE5NzIsNyArMTk1MSw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJCQkJQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJUGFnZSBwYWdlLAogCQkJCUJ1ZmZlciB2bWJ1 ZmZlciwKLQkJCQlib29sIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKIAkJCQlib29sICpo YXNfbHBkZWFkX2l0ZW1zLAogCQkJCWJvb2wgKnZtX3BhZ2VfZnJvemVuKQogewpAQCAtMTk4Niw2 ICsxOTY0LDggQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJLnZpc3Rl c3QgPSB2YWNyZWwtPnZpc3Rlc3QsCiAJCS5jdXRvZmZzID0gJnZhY3JlbC0+Y3V0b2ZmcywKIAl9 OworCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKKwl1aW50OAkJbmV3X3ZtYml0cyA9IDA7CiAKIAlB c3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKSA9PSBibGtubyk7CiAKQEAgLTIwODgsNzAg KzIwNjgsNyBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCUFzc2VydCgh cHJlc3VsdC5hbGxfdmlzaWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7CiAJQXNzZXJ0KCFw cmVzdWx0LmFsbF9mcm96ZW4gfHwgcHJlc3VsdC5hbGxfdmlzaWJsZSk7CiAKLQkvKgotCSAqIEhh bmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9t IHRoZSBWTSAoYXMKLQkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwp LCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcwotCSAq LwotCWlmICgocHJlc3VsdC5hbGxfdmlzaWJsZSAmJiAhYWxsX3Zpc2libGVfYWNjb3JkaW5nX3Rv X3ZtKSB8fAotCQkocHJlc3VsdC5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbCwgYmxr bm8sICZ2bWJ1ZmZlcikpKQotCXsKLQkJdWludDgJCW9sZF92bWJpdHM7Ci0JCXVpbnQ4CQlmbGFn cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3pl bikKLQkJCWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQotCQkvKgotCQkgKiBJ dCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBp cyBzZXQKLQkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJl dmVyc2UgaXMgYWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuICBS ZWdhcmRsZXNzLCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UKLQkJICogZ2V0IGJhY2sgaW4gc3lu Yy4KLQkJICoKLQkJICogRXZlbiBpZiBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldCwgd2Ug ZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dAotCQkgKiB1bm5lY2Vzc2FyaWx5IGRpcnR5aW5nIHRo ZSBoZWFwIGJ1ZmZlci4gTmVhcmx5IHRoZSBvbmx5IHNjZW5hcmlvCi0JCSAqIHdoZXJlIFBEX0FM TF9WSVNJQkxFIGlzIHNldCBidXQgdGhlIFZNIGlzIG5vdCBpcyBpZiB0aGUgVk0gd2FzCi0JCSAq IHJlbW92ZWQgLS0gYW5kIHRoYXQgaXNuJ3Qgd29ydGggb3B0aW1pemluZyBmb3IuIEFuZCBpZiB3 ZSBhZGQgdGhlCi0JCSAqIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gKHdpdGhvdXQgcGFz c2luZyBSRUdCVUZfTk9fQ0hBTkdFUyksCi0JCSAqIGl0IG11c3QgYmUgbWFya2VkIGRpcnR5Lgot CQkgKi8KLQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYp OwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBhbGwtZnJvemVuLCB3ZSBw YXNzIEludmFsaWRUcmFuc2FjdGlvbklkCi0JCSAqIGFzIHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBh IHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0bwotCQkgKiBtYWtlIGV2ZXJ5 dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKLQkJ ICogd2VyZSBmcm96ZW4uCi0JCSAqLwotCQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fAot CQkJICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikp OwotCi0JCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8s IGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAgdm1idWZm ZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSAgIGZsYWdzKTsKLQot CQkvKgotCQkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5k L29yIGFsbC1mcm96ZW4gaW4gdGhlCi0JCSAqIFZNLCBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9y IGxvZ2dpbmcuCi0JCSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9W SVNJQkxFKSA9PSAwKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0J CQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQotCQkJewotCQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2li bGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJCX0KLQkJ fQotCQllbHNlIGlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0g MCAmJgotCQkJCSBwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zy b3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJfQotCX0KKwlvbGRf dm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+cmVsLCBibGtubywgJnZt YnVmZmVyKTsKIAogCS8qCiAJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5 IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKQEAgLTIxNTksOCArMjA3Niw4IEBA IGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogY2xlYXJlZCBhZnRlciBo ZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sK IAkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNv cnJ1cHQuCiAJICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQ YWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZh Y3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSAhPSAwKQorCWlmICghUGFnZUlzQWxsVmlzaWJs ZShwYWdlKSAmJgorCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgIT0g MCkKIAl7CiAJCWVyZXBvcnQoV0FSTklORywKIAkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09S UlVQVEVEKSwKQEAgLTIxNjksNiArMjA4Niw4IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRl ICp2YWNyZWwsCiAKIAkJdmlzaWJpbGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZt YnVmZmVyLAogCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCS8qIFZNIGJpdHMg YXJlIG5vdyBjbGVhciAqLworCQlvbGRfdm1iaXRzID0gMDsKIAl9CiAKIAkvKgpAQCAtMjE5Niw2 ICsyMTE1LDcxIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCU1hcmtC dWZmZXJEaXJ0eShidWYpOwogCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtu bywgdm1idWZmZXIsCiAJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwkJLyogVk0g Yml0cyBhcmUgbm93IGNsZWFyICovCisJCW9sZF92bWJpdHMgPSAwOworCX0KKworCWlmICghcHJl c3VsdC5hbGxfdmlzaWJsZSkKKwkJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7CisKKwkvKiBTZXQg dGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxpdHkgaGludCAqLworCW5ld192bWJp dHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCisJaWYgKHByZXN1bHQuYWxsX2Zyb3pl bikKKwkJbmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CisKKwkvKiBOb3Ro aW5nIHRvIGRvICovCisJaWYgKG9sZF92bWJpdHMgPT0gbmV3X3ZtYml0cykKKwkJcmV0dXJuIHBy ZXN1bHQubmRlbGV0ZWQ7CisKKwlBc3NlcnQocHJlc3VsdC5hbGxfdmlzaWJsZSk7CisKKwkvKgor CSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBw YWdlIGlzIHNldCB3aGlsZQorCSAqIHRoZSBwYWdlLWxldmVsIGJpdCBpcyBjbGVhciwgYnV0IHRo ZSByZXZlcnNlIGlzIGFsbG93ZWQgKGlmIGNoZWNrc3VtcworCSAqIGFyZSBub3QgZW5hYmxlZCku IFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZSBnZXQgYmFjayBpbgorCSAqIHN5 bmMuCisJICoKKwkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBiZSBtYXJrZWQgZGlydHkgYmVmb3Jl IGFkZGluZyBpdCB0byB0aGUgV0FMIGNoYWluCisJICogd2hlbiBzZXR0aW5nIHRoZSBWTS4gV2Ug ZG9uJ3Qgd29ycnkgYWJvdXQgdW5uZWNlc3NhcmlseSBkaXJ0eWluZyB0aGUKKwkgKiBoZWFwIGJ1 ZmZlciBpZiBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldCwgdGhvdWdoLiBJdCBpcyBleHRy ZW1lbHkKKwkgKiByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFwIGJ1ZmZlciB3aXRoIFBEX0FMTF9W SVNJQkxFIGFscmVhZHkgc2V0IGFuZAorCSAqIHRoZSBWTSBiaXRzIGNsZWFyLCBzbyB0aGVyZSBp cyBubyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LgorCSAqLworCVBhZ2VTZXRBbGxWaXNpYmxlKHBh Z2UpOworCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCisJLyoKKwkgKiBJZiB0aGUgcGFnZSBpcyBi ZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhcworCSAq IHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc3VmZmlj aWVudCB0byBtYWtlCisJICogZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hl biB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4KKwkgKi8KKwlBc3NlcnQoIXByZXN1bHQu YWxsX2Zyb3plbiB8fAorCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25m bGljdF9ob3Jpem9uKSk7CisKKwl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8s IGJ1ZiwKKwkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKKwkJCQkJICB2bWJ1ZmZlciwgcHJlc3Vs dC52bV9jb25mbGljdF9ob3Jpem9uLAorCQkJCQkgIG5ld192bWJpdHMpOworCisJLyoKKwkgKiBJ ZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96 ZW4gaW4gdGhlIFZNLAorCSAqIGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KKwkg Ki8KKwlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQor CXsKKwkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOworCQlpZiAocHJlc3VsdC5hbGxf ZnJvemVuKQorCQl7CisJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwor CQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKKwkJfQorCX0KKwllbHNlIGlmICgob2xkX3ZtYml0 cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgorCQkJIHByZXN1bHQuYWxsX2Zy b3plbikKKwl7CisJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOworCQkqdm1fcGFnZV9m cm96ZW4gPSB0cnVlOwogCX0KIAogCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwotLSAKMi40My4w Cgo= --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Disposition: attachment; filename="v29-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd1c4t2 RnJvbSAwNTI3NzQ1ZTlkNTFiOTY1MjBkNzQxZGE5YTljMDk5ZmNkODJhOWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MzY6MzkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOSAwMy8xNV0gUmVmYWN0b3IgbGF6eV9zY2FuX3BydW5lKCkgVk0gY2xlYXIgbG9naWMg aW50bwogaGVscGVyCgpFbmNhcHN1bGF0aW5nIHRoZW0gaW4gYSBoZWxwZXIgbWFrZXMgdGhlIHdo b2xlIGZ1bmN0aW9uIGNsZWFyZXIuIFRoZXJlCmlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIG90aGVy IHRoYW4gbW92aW5nIGl0IGludG8gYSBoZWxwZXIuCgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMgfCAxMzIgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCmluZGV4IGQ0N2VkNzgxNGM4Li4yYTAyNzgyODg5MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDIyLDYgKzQyMiwxMSBAQCBzdGF0aWMgdm9p ZCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpz a2lwc2FsbHZpcyk7CiBzdGF0aWMgYm9vbCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3Rh dGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJICAgQmxvY2tOdW1iZXIgYmxrbm8sIFBh Z2UgcGFnZSwKIAkJCQkJCQkJICAgYm9vbCBzaGFyZWxvY2ssIEJ1ZmZlciB2bWJ1ZmZlcik7Citz dGF0aWMgYm9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBC dWZmZXIgaGVhcF9idWZmZXIsCisJCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJ CSAgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgICB1aW50OCB2bWJpdHMpOwogc3RhdGlj IGludAlsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJ CQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZtYnVmZmVy LApAQCAtMTkyOCw2ICsxOTMzLDgzIEBAIGNtcE9mZnNldE51bWJlcnMoY29uc3Qgdm9pZCAqYSwg Y29uc3Qgdm9pZCAqYikKIAlyZXR1cm4gcGdfY21wX3UxNigqKGNvbnN0IE9mZnNldE51bWJlciAq KSBhLCAqKGNvbnN0IE9mZnNldE51bWJlciAqKSBiKTsKIH0KIAorLyoKKyAqIEhlbHBlciB0byBj b3JyZWN0IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGFuIGhlYXAgcGFnZSBhbmQgaXRzCisg KiBjb3JyZXNwb25kaW5nIHZpc2liaWxpdHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVm b3JlIHNldHRpbmcgdGhlCisgKiB2aXNpYmlsaXR5IG1hcC4gSXQgZXhhbWluZXMgdGhlIGhlYXAg cGFnZSwgdGhlIGFzc29jaWF0ZWQgVk0gcGFnZSwgYW5kIHRoZQorICogbnVtYmVyIG9mIGRlYWQg aXRlbXMgcHJldmlvdXNseSBpZGVudGlmaWVkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBi ZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgaGVhcAorICog YnVmZmVyLCBhbmQgdGhlIGRlYWQgaXRlbXMgbXVzdCBoYXZlIGJlZW4gZGlzY292ZXJlZCB1bmRl ciB0aGF0IHNhbWUgbG9jay4KKworICogVGhlIHByb3ZpZGVkIHZtYml0cyBtdXN0IHJlZmxlY3Qg dGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFZNIGJsb2NrCisgKiByZWZlcmVuY2VkIGJ5IHZtYnVm ZmVyLiBBbHRob3VnaCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24gdGhlIFZNIGJ1ZmZlciwgaXQK KyAqIGlzIHBpbm5lZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBleGNsdXNpdmVseSBsb2NrZWQs IGVuc3VyaW5nIHRoYXQgbm8KKyAqIG90aGVyIGJhY2tlbmQgY2FuIHVwZGF0ZSB0aGUgVk0gYml0 cyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBp ZiBpdCBjbGVhcmVkIGNvcnJ1cHRpb24gYW5kIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGlj IGJvb2wKK2lkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZl ciBoZWFwX2J1ZmZlciwKKwkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFw X3BhZ2UsCisJCQkJCQkJICAgaW50IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJICAgQnVmZmVyIHZt YnVmZmVyLAorCQkJCQkJCSAgIHVpbnQ4IHZtYml0cykKK3sKKwlBc3NlcnQodmlzaWJpbGl0eW1h cF9nZXRfc3RhdHVzKHJlbCwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgPT0gdm1iaXRzKTsKKworCUFz c2VydChCdWZmZXJJc0xvY2tlZEJ5TWVJbk1vZGUoaGVhcF9idWZmZXIsIEJVRkZFUl9MT0NLX0VY Q0xVU0lWRSkpOworCisJLyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxp dHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0 IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICog Y2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3 ZSBtdXN0IHJlY2hlY2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRo YXQgdGhlIFZNIGlzIGNvcnJ1cHQuCisJICovCisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKGhlYXBf cGFnZSkgJiYKKwkJKCh2bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICE9IDApKQor CXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBU RUQpLAorCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlz aWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJ CQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmls aXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlN QVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0cnVlOworCX0KKworCS8qCisJICogSXQncyBwb3Nz aWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxl VHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAorCSAqIHdyb25n IGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2 ZXJ5b25lCisJICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhl IHJlYWwgc2FmZSB4bWluIHZhbHVlCisJICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0 T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCisJICogY29uc2VydmF0aXZlIGFu ZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAor CSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRo ZSB0dXBsZXMgdGhhdCB3ZQorCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5 ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCisJICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3Jy ZWN0LgorCSAqCisJICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBw YWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAorCSAqIGhvd2V2ZXIuCisJICovCisJZWxzZSBp ZiAoUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmIG5scGRlYWRfaXRlbXMgPiAwKQorCXsK KwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQp LAorCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBh cyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKworCQlQYWdlQ2xlYXJBbGxWaXNp YmxlKGhlYXBfcGFnZSk7CisJCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7CisJCXZpc2li aWxpdHltYXBfY2xlYXIocmVsLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOwor fQorCiAvKgogICoJbGF6eV9zY2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hlYXAoKSBwcnVuaW5n IGFuZCBmcmVlemluZy4KICAqCkBAIC0yMDcwLDU0ICsyMTUyLDEwIEBAIGxhenlfc2Nhbl9wcnVu ZShMVlJlbFN0YXRlICp2YWNyZWwsCiAKIAlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRf c3RhdHVzKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKTsKIAotCS8qCi0JICogQXMgb2Yg UG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNl dCBpZiB0aGUKLQkgKiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9z c2libGUgdGhhdCB0aGUgYml0IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9u ZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZm ZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwot CWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSAmJgotCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUykgIT0gMCkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBt YXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRp b24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJdmFjcmVsLT5yZWxuYW1lLCBibGtubykpKTsKLQot CQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJ CQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFy ICovCisJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYnVm LCBibGtubywgcGFnZSwKKwkJCQkJCQkJCSAgIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZl ciwKKwkJCQkJCQkJCSAgIG9sZF92bWJpdHMpKQogCQlvbGRfdm1iaXRzID0gMDsKLQl9Ci0KLQkv KgotCSAqIEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9s ZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQn cyBub3QKLQkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3Qg YmUgdmlzaWJsZSB0byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMg YWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJh Y2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAq IGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNl c3NhcmlseSBzbWFsbCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1 c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2li bGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJ QkxFIGZsYWcgaXMgY29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9E RUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVy LgotCSAqLwotCWVsc2UgaWYgKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxW aXNpYmxlKHBhZ2UpKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFE IGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAl dSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkpOwotCi0JCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTKTsKLQkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFyICovCi0JCW9sZF92bWJpdHMg PSAwOwotCX0KIAogCWlmICghcHJlc3VsdC5hbGxfdmlzaWJsZSkKIAkJcmV0dXJuIHByZXN1bHQu bmRlbGV0ZWQ7Ci0tIAoyLjQzLjAKCg== --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Disposition: attachment; filename="v29-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd1fk43 RnJvbSBjODEyNmM3MDQ2YjgxMjk2ZDljZjNjODFjOGI2ZDZlNWQ5Y2YwOTUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOSAwNC8xNV0gU2V0IHRoZSBWTSBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp CgpUaGlzIGhhcyBubyBpbmRlcGVuZGVudCBiZW5lZml0LiBJdCBpcyBtZWFudCBmb3IgZWFzZSBv ZiByZXZpZXcuIEFzIG9mCnRoaXMgY29tbWl0LCB0aGVyZSBpcyBzdGlsbCBhIHNlcGFyYXRlIFdB TCByZWNvcmQgZW1pdHRlZCBmb3Igc2V0dGluZwp0aGUgVk0gYWZ0ZXIgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEJ1dCBpdCBpcyBlYXNpZXIgdG8gcmV2aWV3IGlmIG1vdmluZwp0aGUgbG9naWMgaW50 byBwcnVuZWhlYXAuYyBpcyBzZXBhcmF0ZSBmcm9tIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1l CldBTCByZWNvcmQuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwg MzA5ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jIHwgMTUwICstLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCAgICAgICAgICB8ICAyMSArKwogMyBmaWxlcyBjaGFuZ2VkLCAyOTQgaW5zZXJ0aW9ucygr KSwgMTg2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg MDdhYTA4Y2ZlMTQuLjYyNDA0NzY4YmVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNp bmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK LSNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv dmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKQEAgLTQ0LDYg KzQ0LDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyogd2hl dGhlciB0byBhdHRlbXB0IGZyZWV6aW5nIHR1cGxlcyAqLwogCWJvb2wJCWF0dGVtcHRfZnJlZXpl OworCS8qIHdoZXRoZXIgb3Igbm90IHRvIGF0dGVtcHQgdXBkYXRpbmcgdGhlIFZNICovCisJYm9v bAkJYXR0ZW1wdF91cGRhdGVfdm07CiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiAK IAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTE0MCwxNiArMTQyLDE3IEBAIHR5cGVkZWYgc3RydWN0CiAJICogYWxsX3Zpc2libGUg YW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVu CiAJICogYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdl IGFmdGVyIHBydW5pbmcuCiAJICoKLQkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5l d2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgotCSAqIFRoZSBjYWxsZXIgY2Fu IHVzZSBpdCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiwgd2hlbiBzZXR0aW5nIHRoZSBWTQotCSAq IGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgYWxs X2Zyb3plbiBpcwotCSAqIHRydWUuCisJICogdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRoZSBu ZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQKKwkgKiBjYW4gYmUgdXNl ZCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIG9yIHdoZW4KKwkg KiBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQgaXMgb25seSB2YWxpZCB3 aGVuIGFsbCB0aGUgbGl2ZQorCSAqIHR1cGxlcyBvbiB0aGUgcGFnZSBhcmUgYWxsLXZpc2libGUu CiAJICoKIAkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbml0aWFsbHkgZG9u J3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zLgogCSAqIFRoYXQncyBjb252ZW5pZW50IGZvciBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVzZSB0aGVtIHRvCi0JICogZGVjaWRlIHdoZXRo ZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBh bGxfZnJvemVuIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0byBp bmNsdWRlCi0JICogTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciB0byBv cHBvcnR1bmlzdGljYWxseSBmcmVlemUuCisJICogZGVjaWRlIHdoZXRoZXIgdG8gb3Bwb3J0dW5p c3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZQorCSAqIGFsbF92aXNpYmxlIGFu ZCBhbGxfZnJvemVuIHZhbHVlcyB1bHRpbWF0ZWx5IHVzZWQgdG8gc2V0IHRoZSBWTSBhcmUKKwkg KiBhZGp1c3RlZCB0byBpbmNsdWRlIExQX0RFQUQgaXRlbXMgYWZ0ZXIgd2UgZGV0ZXJtaW5lIHdo ZXRoZXIgb3Igbm90IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLgogCSAqLwogCWJv b2wJCWFsbF92aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96ZW47CkBAIC0xOTEsNiArMTk0LDE3IEBA IHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogc3RhdGljIGJv b2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29s IGRvX2hpbnRfcHJ1bmUsCiAJCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CitzdGF0aWMg Ym9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIg aGVhcF9idWZmZXIsCisJCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBhZ2UgaGVh cF9wYWdlLCBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIs CisJCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJCQkgIFJlbGF0aW9uIHJlbGF0aW9u LAorCQkJCQkJCQkgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWZmZXIsIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJICBpbnQg bmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJICB1aW50OCAqb2xkX3ZtYml0cywKKwkJCQkJCQkJICB1 aW50OCAqbmV3X3ZtYml0cyk7CiAKIAogLyoKQEAgLTI4MCw2ICsyOTQsNyBAQCBoZWFwX3BhZ2Vf cHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJUHJ1bmVGcmVl emVQYXJhbXMgcGFyYW1zID0gewogCQkJCS5yZWxhdGlvbiA9IHJlbGF0aW9uLAogCQkJCS5idWZm ZXIgPSBidWZmZXIsCisJCQkJLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlciwKIAkJCQkucmVhc29u ID0gUFJVTkVfT05fQUNDRVNTLAogCQkJCS5vcHRpb25zID0gMCwKIAkJCQkudmlzdGVzdCA9IHZp c3Rlc3QsCkBAIC0zNDEsNiArMzU2LDggQEAgcHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJLyogY3V0b2ZmcyBtdXN0IGJlIHByb3ZpZGVkIGlmIHdlIHdpbGwg YXR0ZW1wdCBmcmVlemluZyAqLwogCUFzc2VydCghKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUpIHx8IHBhcmFtcy0+Y3V0b2Zmcyk7CiAJcHJzdGF0ZS0+YXR0ZW1wdF9m cmVlemUgPSAocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsK KwlwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZNKSAhPSAwOwogCXByc3RhdGUtPmN1dG9mZnMgPSBwYXJhbXMt PmN1dG9mZnM7CiAKIAkvKgpAQCAtMzk2LDUxICs0MTMsNTQgQEAgcHJ1bmVfZnJlZXplX3NldHVw KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0X2hvcml6 b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogCS8qCi0JICogVmFjdXVtIG1heSB1cGRhdGUg dGhlIFZNIGFmdGVyIHdlJ3JlIGRvbmUuICBXZSBjYW4ga2VlcCB0cmFjayBvZgotCSAqIHdoZXRo ZXIgdGhlIHBhZ2Ugd2lsbCBiZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBhZnRlciBwcnVu aW5nIGFuZAotCSAqIGZyZWV6aW5nIHRvIGhlbHAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgorCSAq IFRyYWNrIHdoZXRoZXIgdGhlIHBhZ2UgY291bGQgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZC9v ciBhbGwtZnJvemVuLgorCSAqIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBmb3Igb3Bwb3J0dW5p c3RpYyBmcmVlemluZyBhbmQgZm9yIHVwZGF0aW5nCisJICogdGhlIHZpc2liaWxpdHkgbWFwIChW TSkgaWYgcmVxdWVzdGVkIGJ5IHRoZSBjYWxsZXIuCiAJICoKLQkgKiBDdXJyZW50bHksIG9ubHkg VkFDVVVNIHNldHMgdGhlIFZNIGJpdHMuICBUbyBzYXZlIHRoZSBlZmZvcnQsIG9ubHkgZG8KLQkg KiB0aGUgYm9va2tlZXBpbmcgaWYgdGhlIGNhbGxlciBuZWVkcyBpdC4gIEN1cnJlbnRseSwgdGhh dCdzIHRpZWQgdG8KLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLCBidXQgaXQgY291bGQgYmUg YSBzZXBhcmF0ZSBmbGFnIGlmIHlvdSB3YW50ZWQKLQkgKiB0byB1cGRhdGUgdGhlIFZNIGJpdHMg d2l0aG91dCBhbHNvIGZyZWV6aW5nIG9yIGZyZWV6ZSB3aXRob3V0IGFsc28KLQkgKiBzZXR0aW5n IHRoZSBWTSBiaXRzLgorCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gcGVyZm9ybXMgZnJlZXpp bmcsIGJ1dCBvdGhlciBjYWxsZXJzIG1heSBpbiB0aGUKKwkgKiBmdXR1cmUuIFZpc2liaWxpdHkg Ym9va2tlZXBpbmcgaXMgcmVxdWlyZWQgbm90IGp1c3QgZm9yIHNldHRpbmcgdGhlIFZNCisJICog Yml0cywgYnV0IGFsc28gZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmc6IHdlIG9ubHkgY29uc2lk ZXIgZnJlZXppbmcgaWYKKwkgKiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUgYWxsLWZyb3plbiwgb3Ig aWYgaXQgd291bGQgYmUgYWxsLWZyb3plbiBleGNlcHQKKwkgKiBmb3IgZGVhZCB0dXBsZXMgdGhh dCBWQUNVVU0gd2lsbCByZW1vdmUuIElmIGF0dGVtcHRfdXBkYXRlX3ZtIGlzIGZhbHNlLAorCSAq IHdlIHdpbGwgbm90IHNldCB0aGUgVk0gYml0IGV2ZW4gaWYgdGhlIHBhZ2UgaXMgZm91bmQgdG8g YmUgYWxsLXZpc2libGUuCiAJICoKLQkgKiBJbiBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxs ZXIgd2hldGhlciBpdCBjYW4gc2V0IHRoZSBWTSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92 aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIGZvciBvdXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYK LQkgKiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNvbWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBv cnR1bmlzdGljYWxseQotCSAqIGZyZWV6aW5nIHR1cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUg dG8gZnJlZXplIHRoZSB3aG9sZSBwYWdlIGlmIHRoZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50 IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRl YWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVw bGVzIHdoaWNoCi0JICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNo b3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5n LiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgaW1tZWRpYXRlbHkKLQkgKiBjbGVhciBhbGxf dmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 Ci0JICogdGhhdCBhZnRlciBzY2FubmluZyB0aGUgbGluZSBwb2ludGVycy4gV2UgbXVzdCBjb3Jy ZWN0IGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gYmVmb3JlIHdlIHJldHVybiB0aGVt IHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0IHRoZSBW TSBiaXRzIGluY29ycmVjdGx5LgorCSAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0gaXMg cGFzc2VkIHdpdGhvdXQgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwKKwkgKiBwcnN0YXRlLmFsbF9m cm96ZW4gbXVzdCBiZSBpbml0aWFsaXplZCB0byBmYWxzZSwgc2luY2Ugd2Ugd2lsbCBub3QgY2Fs bAorCSAqIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBmb3IgZWFjaCB0dXBsZS4KKwkgKgor CSAqIERlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVt IHNob3VsZCBub3QKKwkgKiBwcmV2ZW50IG9wcG9ydHVuaXN0aWMgZnJlZXppbmcuIFRoZXJlZm9y ZSwgd2UgZG8gbm90IGNsZWFyIGFsbF92aXNpYmxlCisJICogYW5kIGFsbF9mcm96ZW4gd2hlbiB3 ZSBlbmNvdW50ZXIgTFBfREVBRCBpdGVtcy4gSW5zdGVhZCwgd2UgY29ycmVjdAorCSAqIHRoZW0g YWZ0ZXIgZGVjaWRpbmcgd2hldGhlciB0byBmcmVlemUsIGJ1dCBiZWZvcmUgdXBkYXRpbmcgdGhl IFZNLCB0bworCSAqIGF2b2lkIHNldHRpbmcgdGhlIFZNIGJpdHMgaW5jb3JyZWN0bHkuCisJICoK KwkgKiBJZiBuZWl0aGVyIGZyZWV6aW5nIG5vciBWTSB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHdl IHNraXAgdGhlIGV4dHJhCisJICogYm9va2tlZXBpbmcuIEluIHRoaXMgY2FzZSwgaW5pdGlhbGl6 aW5nIGFsbF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cworCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoKSB0byBieXBhc3MgdW5uZWNlc3Nhcnkgd29yay4KIAkgKi8KIAlp ZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewogCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9 IHRydWU7CiAJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSB0cnVlOwogCX0KKwllbHNlIGlmIChwcnN0 YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gdHJ1 ZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0KIAllbHNlCiAJewotCQkvKgot CQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRoZSB3b3JrIHRvIHVw ZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwo KS4KLQkJICovCiAJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CiAJCXByc3RhdGUtPmFs bF9mcm96ZW4gPSBmYWxzZTsKIAl9CiAKIAkvKgotCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4 aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZQotCSAqIHBhZ2UuICBJ biB0aGUgY29tbW9uIGNhc2UsIHRoaXMgd2lsbCBiZSBzZXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6 b24gdGhlCi0JICogY2FsbGVyIGNhbiB1c2UgZm9yIHVwZGF0aW5nIHRoZSBWTS4gIElmLCBhdCB0 aGUgZW5kIG9mIGZyZWV6aW5nIGFuZAotCSAqIHBydW5pbmcsIHRoZSBwYWdlIGlzIGFsbC1mcm96 ZW4sIHRoZXJlIGlzIG5vIHBvc3NpYmlsaXR5IHRoYXQgYW55Ci0JICogcnVubmluZyB0cmFuc2Fj dGlvbiBvbiB0aGUgc3RhbmRieSBkb2VzIG5vdCBzZWUgdHVwbGVzIG9uIHRoZSBwYWdlIGFzCi0J ICogYWxsLXZpc2libGUsIHNvIHRoZSBjb25mbGljdCBob3Jpem9uIHJlbWFpbnMgSW52YWxpZFRy YW5zYWN0aW9uSWQuCisJICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSwgY29tbWl0dGVkIHR1cGxlcworCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1p biBvbiB0aGUgcGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQorCSAqIGlm IHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVy ZWQgdGhhdCBpcworCSAqIG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50 YWluZWQuIEFzIGxvbmcgYXMgaXQgaXMKKwkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0 byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24KKwkgKiB3aGVuIHVwZGF0 aW5nIHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJ ICovCiAJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiB9CkBAIC03NzUsMTAgKzc5NSwxNDEgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXJldHVybiBkb19mcmVlemU7CiB9CiAKKy8q CisgKiBIZWxwZXIgdG8gY29ycmVjdCBhbnkgY29ycnVwdGlvbiBkZXRlY3RlZCBvbiBhbiBoZWFw IHBhZ2UgYW5kIGl0cworICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVy IHBydW5pbmcgYnV0IGJlZm9yZSBzZXR0aW5nIHRoZQorICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4 YW1pbmVzIHRoZSBoZWFwIHBhZ2UsIHRoZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKKyAq IG51bWJlciBvZiBkZWFkIGl0ZW1zIHByZXZpb3VzbHkgaWRlbnRpZmllZC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sg b24gdGhlIGhlYXAKKyAqIGJ1ZmZlciwgYW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVu IGRpc2NvdmVyZWQgdW5kZXIgdGhhdCBzYW1lIGxvY2suCisgKgorICogVGhlIHByb3ZpZGVkIHZt Yml0cyBtdXN0IHJlZmxlY3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFZNIGJsb2NrCisgKiBy ZWZlcmVuY2VkIGJ5IHZtYnVmZmVyLiBBbHRob3VnaCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24g dGhlIFZNIGJ1ZmZlciwgaXQKKyAqIGlzIHBpbm5lZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBl eGNsdXNpdmVseSBsb2NrZWQsIGVuc3VyaW5nIHRoYXQgbm8KKyAqIG90aGVyIGJhY2tlbmQgY2Fu IHVwZGF0ZSB0aGUgVk0gYml0cyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICoK KyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBjbGVhcmVkIGNvcnJ1cHRpb24gYW5kIGZhbHNlIG90aGVy d2lzZS4KKyAqLworc3RhdGljIGJvb2wKK2lkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihS ZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKKwkJCQkJCQkgICBCbG9ja051bWJlciBo ZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAgaW50IG5scGRlYWRfaXRlbXMsCisJ CQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCSAgIHVpbnQ4IHZtYml0cykKK3sKKwlB c3NlcnQodmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHJlbCwgaGVhcF9ibGssICZ2bWJ1ZmZlcikg PT0gdm1iaXRzKTsKKworCUFzc2VydChCdWZmZXJJc0xvY2tlZEJ5TWVJbk1vZGUoaGVhcF9idWZm ZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOworCisJLyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FM IDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQor CSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0 IHRoZSBiaXQgZ290CisJICogY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2so KSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJl Zm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCisJICovCisJaWYgKCFQYWdl SXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJKCh2bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpICE9IDApKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVS UkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBh bGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVz XCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2Js aykpKTsKKworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAor CQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0cnVlOworCX0KKwor CS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisJICogR2V0 T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBp dCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5v dCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBp cyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCisJICogbmV2ZXIgbW92ZXMg YmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCisJ ICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5l Y2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQg anVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQorCSAqIHRoaW5rIGFyZSBub3Qgdmlz aWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCisJICogUERfQUxMX1ZJ U0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQ X0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAorCSAqIGhvd2V2 ZXIuCisJICovCisJZWxzZSBpZiAoUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmIG5scGRl YWRfaXRlbXMgPiAwKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFE IGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAl dSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKwor CQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFnZSk7CisJCU1hcmtCdWZmZXJEaXJ0eShoZWFw X2J1ZmZlcik7CisJCXZpc2liaWxpdHltYXBfY2xlYXIocmVsLCBoZWFwX2Jsaywgdm1idWZmZXIs CisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQor CisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXRzIChhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbikKKyAqIGZvciBo ZWFwX2JsayB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBQcnVuZVN0YXRlIGFuZCBWTS4KKyAq CisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFjdHVhbGx5IHNldCB0aGUgVk0gYml0cyBvciBw YWdlLWxldmVsIHZpc2liaWxpdHkKKyAqIGhpbnQsIFBEX0FMTF9WSVNJQkxFLgorICoKKyAqIEhv d2V2ZXIsIGlmIGl0IGZpbmRzIHRoYXQgdGhlIHBhZ2UtbGV2ZWwgdmlzaWJpbGl0eSBoaW50IG9y IFZNIGlzCisgKiBjb3JydXB0ZWQsIGl0IHdpbGwgZml4IHRoZW0gYnkgY2xlYXJpbmcgdGhlIFZN IGJpdHMgYW5kIHZpc2liaWxpdHkgaGludC4KKyAqIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBk b25lIGluIGEgY3JpdGljYWwgc2VjdGlvbi4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgb25lIG9y IGJvdGggVk0gYml0cyBzaG91bGQgYmUgc2V0LCBhbG9uZyB3aXRoIHJldHVybmluZyB0aGUKKyAq IGN1cnJlbnQgdmFsdWUgb2YgdGhlIFZNIGJpdHMgaW4gKm9sZF92bWJpdHMgYW5kIHRoZSBkZXNp cmVkIG5ldyB2YWx1ZSBvZgorICogdGhlIFZNIGJpdHMgaW4gKm5ld192bWJpdHMuCisgKi8KK3N0 YXRpYyBib29sCitoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJ CQkJICBSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJICBCbG9ja051bWJlciBoZWFwX2JsaywgQnVm ZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKKwkJCQkJICBCdWZmZXIgdm1idWZmZXIs CisJCQkJCSAgaW50IG5scGRlYWRfaXRlbXMsCisJCQkJCSAgdWludDggKm9sZF92bWJpdHMsCisJ CQkJCSAgdWludDggKm5ld192bWJpdHMpCit7CisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X3VwZGF0 ZV92bSkKKwkJcmV0dXJuIGZhbHNlOworCisJKm9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dl dF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLAorCQkJCQkJCQkJCSAgICZ2bWJ1ZmZlcik7CisK KwkvKiBXZSBkbyB0aGlzIGV2ZW4gaWYgbm90IGFsbC12aXNpYmxlICovCisJaWYgKGlkZW50aWZ5 X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwgaGVhcF9idWZmZXIsIGhlYXBfYmxrLCBo ZWFwX3BhZ2UsCisJCQkJCQkJCQkgICBubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKKwkJCQkJCQkJ CSAgICpvbGRfdm1iaXRzKSkKKwkJKm9sZF92bWJpdHMgPSAwOworCisJaWYgKCFwcnN0YXRlLT5h bGxfdmlzaWJsZSkKKwkJcmV0dXJuIGZhbHNlOworCisJKm5ld192bWJpdHMgPSBWSVNJQklMSVRZ TUFQX0FMTF9WSVNJQkxFOworCisJaWYgKHByc3RhdGUtPmFsbF9mcm96ZW4pCisJCSpuZXdfdm1i aXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKworCWlmICgqbmV3X3ZtYml0cyA9PSAq b2xkX3ZtYml0cykKKwl7CisJCSpuZXdfdm1iaXRzID0gMDsKKwkJcmV0dXJuIGZhbHNlOworCX0K KworCXJldHVybiB0cnVlOworfQorCiAKIC8qCiAgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50 YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCi0gKiBzcGVjaWZpZWQg cGFnZS4KKyAqIHNwZWNpZmllZCBwYWdlLiBJZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3RhdHVz IGhhcyBjaGFuZ2VkLCB1cGRhdGUgaXQgaW4KKyAqIHRoZSBWTS4KICAqCiAgKiBDYWxsZXIgbXVz dCBoYXZlIHBpbiBhbmQgYnVmZmVyIGNsZWFudXAgbG9jayBvbiB0aGUgcGFnZS4gIE5vdGUgdGhh dCB3ZQogICogZG9uJ3QgdXBkYXRlIHRoZSBGU00gaW5mb3JtYXRpb24gZm9yIHBhZ2Ugb24gY2Fs bGVyJ3MgYmVoYWxmLiAgQ2FsbGVyIG1pZ2h0CkBAIC03OTMsMTIgKzk0NCwxMyBAQCBoZWFwX3Bh Z2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKiB0dXBs ZXMgaWYgaXQncyByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJl bG1pbm14aWQsIG9yCiAgKiBpZiBpdCdzIGNvbnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVy YWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbwogICogbm93LiAgVGhlICdwYXJhbXMuY3V0 b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlkJyBhbmQKLSAqICduZXdfcmVsbWlu X214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4gIFdoZW4KLSAqIEhF QVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJlc3Vs dC0+YWxsX3Zpc2libGUKLSAqIGFuZCBwcmVzdWx0LT5hbGxfZnJvemVuIGFmdGVyIGRldGVybWlu aW5nIHdoZXRoZXIgb3Igbm90IHRvCi0gKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUsIHRvIGlu ZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZQotICogYWx3YXlzIHNl dCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qg cGFzc2VkLAotICogYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28g ZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KKyAqICduZXdfcmVsbWluX214aWQnIGFyZ3Vt ZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4KKyAqCisgKiBJZiBIRUFQX1BBR0VfUFJV TkVfVVBEQVRFX1ZNIGlzIHNldCBpbiBwYXJhbXMgYW5kIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBv ZgorICogdGhlIHBhZ2UgaGFzIGNoYW5nZWQsIHdlIHdpbGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUg c2FtZSB0aW1lIGFzIHBydW5pbmcgYW5kCisgKiBmcmVlemluZyB0aGUgaGVhcCBwYWdlLiBXZSB3 aWxsIGFsc28gdXBkYXRlIHByZXN1bHQtPm9sZF92bWJpdHMgYW5kCisgKiBwcmVzdWx0LT5uZXdf dm1iaXRzIHdpdGggdGhlIHN0YXRlIG9mIHRoZSBWTSBiZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5n IGl0CisgKiBmb3IgdGhlIGNhbGxlciB0byB1c2UgaW4gYm9va2tlZXBpbmcuCiAgKgogICogcHJl c3VsdCBjb250YWlucyBvdXRwdXQgcGFyYW1ldGVycyBuZWVkZWQgYnkgY2FsbGVycywgc3VjaCBh cyB0aGUgbnVtYmVyIG9mCiAgKiB0dXBsZXMgcmVtb3ZlZCBhbmQgdGhlIG9mZnNldHMgb2YgZGVh ZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLgpAQCAtODIzLDEzICs5NzUsMTkgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ CQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVsbWluX214aWQpCiB7CiAJQnVmZmVyCQlidWZmZXIg PSBwYXJhbXMtPmJ1ZmZlcjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsK IAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOworCUJsb2NrTnVtYmVyIGJsb2Nr bm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpOwogCVBydW5lU3RhdGUJcHJzdGF0ZTsK IAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CiAJYm9vbAkJZG9faGludF9wcnVu ZTsKKwlib29sCQlkb19zZXRfdm07CiAJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBpOwogCWludDY0 CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53YWxfZnBpOworCXVpbnQ4CQluZXdfdm1iaXRzID0g MDsKKwl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CisKIAogCS8qIEluaXRpYWxpemUgcHJzdGF0ZSAq LwogCXBydW5lX2ZyZWV6ZV9zZXR1cChwYXJhbXMsCkBAIC0xMDExLDYgKzExNjksNjUgQEAgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCSpu ZXdfcmVsbWluX214aWQgPSBwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZDsK IAkJfQogCX0KKworCS8qIE5vdyB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBQRF9BTExf VklTSUJMRSBoaW50ICovCisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0YXRl LmxwZGVhZF9pdGVtcyA9PSAwKSk7CisKKwlkb19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRf dm0oJnByc3RhdGUsCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24sCisJCQkJCQkJCQkgIGJs b2Nrbm8sCisJCQkJCQkJCQkgIGJ1ZmZlciwKKwkJCQkJCQkJCSAgcGFnZSwKKwkJCQkJCQkJCSAg dm1idWZmZXIsCisJCQkJCQkJCQkgIHByc3RhdGUubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJICAm b2xkX3ZtYml0cywKKwkJCQkJCQkJCSAgJm5ld192bWJpdHMpOworCisJLyoKKwkgKiBuZXdfdm1i aXRzIHNob3VsZCBiZSAwIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMK KwkgKiBhbGwtdmlzaWJsZSBpZiB3ZSBkbyBub3QgaW50ZW5kIHRvIHNldCB0aGUgVk0uCisJICov CisJQXNzZXJ0KGRvX3NldF92bSB8fCBuZXdfdm1iaXRzID09IDApOworCisJLyogU2V0IHRoZSB2 aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQsIGlmIHJlbGV2YW50ICovCisJ aWYgKGRvX3NldF92bSkKKwl7CisJCUFzc2VydChwcnN0YXRlLmFsbF92aXNpYmxlKTsKKworCQkv KgorCQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBt YXAgcGFnZSBpcyBzZXQKKwkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBi dXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYKKwkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5h YmxlZCkuIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQorCQkgKiBnZXQgYmFj ayBpbiBzeW5jLgorCQkgKgorCQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBiZSBtYXJrZWQgZGly dHkgYmVmb3JlIGFkZGluZyBpdCB0byB0aGUgV0FMCisJCSAqIGNoYWluIHdoZW4gc2V0dGluZyB0 aGUgVk0uIFdlIGRvbid0IHdvcnJ5IGFib3V0IHVubmVjZXNzYXJpbHkKKwkJICogZGlydHlpbmcg dGhlIGhlYXAgYnVmZmVyIGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB0aG91Z2gu CisJCSAqIEl0IGlzIGV4dHJlbWVseSByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFwIGJ1ZmZlciB3 aXRoCisJCSAqIFBEX0FMTF9WSVNJQkxFIGFscmVhZHkgc2V0IGFuZCB0aGUgVk0gYml0cyBjbGVh ciwgc28gdGhlcmUgaXMgbm8KKwkJICogcG9pbnQgaW4gb3B0aW1pemluZyBpdC4KKwkJICovCisJ CVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwor CQkvKgorCQkgKiBJZiB0aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJ bnZhbGlkVHJhbnNhY3Rpb25JZAorCQkgKiBhcyB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFw c2hvdCBjb25mbGljdCBob3Jpem9uIHN1ZmZpY2llbnQgdG8KKwkJICogbWFrZSBldmVyeXRoaW5n IHNhZmUgZm9yIFJFRE8gd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzCisJCSAqIHdl cmUgZnJvemVuLgorCQkgKi8KKwkJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwKKwkJCSAg ICFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uKSk7CisK KwkJdmlzaWJpbGl0eW1hcF9zZXQocGFyYW1zLT5yZWxhdGlvbiwgYmxvY2tubywgYnVmZmVyLAor CQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKKwkJCQkJCSAgdm1idWZmZXIsIHByZXN1bHQtPnZt X2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkgIG5ld192bWJpdHMpOworCX0KKworCS8qIFNhdmUg dGhlIHZtYml0cyBmb3IgY2FsbGVyICovCisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJp dHM7CisJcHJlc3VsdC0+bmV3X3ZtYml0cyA9IG5ld192bWJpdHM7CiB9CiAKIApAQCAtMTQ4NSw2 ICsxNzAyLDggQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBh Z2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCXsKIAkJCQlUcmFuc2FjdGlv bklkIHhtaW47CiAKKwkJCQlBc3NlcnQocHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVfdm0pOworCiAJ CQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKGh0dXApKQogCQkJCXsKIAkJCQkJ cHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCAyYTAyNzgyODg5MS4uOGI0ODkzNDkzMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKQEAgLTQyMiwxMSArNDIyLDcgQEAgc3RhdGljIHZvaWQgZmluZF9uZXh0 X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMp Owogc3RhdGljIGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWws IEJ1ZmZlciBidWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJ CQkJCQkJCSAgIGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOwotc3RhdGljIGJvb2wg aWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBf YnVmZmVyLAotCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQYWdlIGhlYXBfcGFn ZSwKLQkJCQkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKLQkJCQkJCQkJCQkgICBCdWZmZXIg dm1idWZmZXIsCi0JCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKKwogc3RhdGljIGludAlsYXp5 X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCUJsb2Nr TnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZtYnVmZmVyLApAQCAtMTkz Myw4MyArMTkyOSw2IEBAIGNtcE9mZnNldE51bWJlcnMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9p ZCAqYikKIAlyZXR1cm4gcGdfY21wX3UxNigqKGNvbnN0IE9mZnNldE51bWJlciAqKSBhLCAqKGNv bnN0IE9mZnNldE51bWJlciAqKSBiKTsKIH0KIAotLyoKLSAqIEhlbHBlciB0byBjb3JyZWN0IGFu eSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGFuIGhlYXAgcGFnZSBhbmQgaXRzCi0gKiBjb3JyZXNw b25kaW5nIHZpc2liaWxpdHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVmb3JlIHNldHRp bmcgdGhlCi0gKiB2aXNpYmlsaXR5IG1hcC4gSXQgZXhhbWluZXMgdGhlIGhlYXAgcGFnZSwgdGhl IGFzc29jaWF0ZWQgVk0gcGFnZSwgYW5kIHRoZQotICogbnVtYmVyIG9mIGRlYWQgaXRlbXMgcHJl dmlvdXNseSBpZGVudGlmaWVkLgotICoKLSAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQg d2hpbGUgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgaGVhcAotICogYnVmZmVyLCBh bmQgdGhlIGRlYWQgaXRlbXMgbXVzdCBoYXZlIGJlZW4gZGlzY292ZXJlZCB1bmRlciB0aGF0IHNh bWUgbG9jay4KLQotICogVGhlIHByb3ZpZGVkIHZtYml0cyBtdXN0IHJlZmxlY3QgdGhlIGN1cnJl bnQgc3RhdGUgb2YgdGhlIFZNIGJsb2NrCi0gKiByZWZlcmVuY2VkIGJ5IHZtYnVmZmVyLiBBbHRo b3VnaCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24gdGhlIFZNIGJ1ZmZlciwgaXQKLSAqIGlzIHBp bm5lZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBleGNsdXNpdmVseSBsb2NrZWQsIGVuc3VyaW5n IHRoYXQgbm8KLSAqIG90aGVyIGJhY2tlbmQgY2FuIHVwZGF0ZSB0aGUgVk0gYml0cyBjb3JyZXNw b25kaW5nIHRvIHRoaXMgaGVhcCBwYWdlLgotICoKLSAqIFJldHVybnMgdHJ1ZSBpZiBpdCBjbGVh cmVkIGNvcnJ1cHRpb24gYW5kIGZhbHNlIG90aGVyd2lzZS4KLSAqLwotc3RhdGljIGJvb2wKLWlk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1 ZmZlciwKLQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCi0J CQkJCQkJICAgaW50IG5scGRlYWRfaXRlbXMsCi0JCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAot CQkJCQkJCSAgIHVpbnQ4IHZtYml0cykKLXsKLQlBc3NlcnQodmlzaWJpbGl0eW1hcF9nZXRfc3Rh dHVzKHJlbCwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgPT0gdm1iaXRzKTsKLQotCUFzc2VydChCdWZm ZXJJc0xvY2tlZEJ5TWVJbk1vZGUoaGVhcF9idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkp OwotCi0JLyoKLQkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJp dCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFy LiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBh ZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJl Y2hlY2sKLQkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZN IGlzIGNvcnJ1cHQuCi0JICovCi0JaWYgKCFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYK LQkJKCh2bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICE9IDApKQotCXsKLQkJZXJl cG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJ CSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBt YXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKLQotCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURf QklUUyk7Ci0JCXJldHVybiB0cnVlOwotCX0KLQotCS8qCi0JICogSXQncyBwb3NzaWJsZSBmb3Ig dGhlIHZhbHVlIHJldHVybmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rp b25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAqIHdyb25nIGZvciB1cyB0 byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCi0J ICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2Fm ZSB4bWluIHZhbHVlCi0JICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9u UmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0aXZlIGFuZCBzb21ldGlt ZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAotCSAqIHNvIGlm IHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMg dGhhdCB3ZQotCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFs bHkgYXJlLCBhbmQgdGhlCi0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgotCSAq Ci0JICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGgg UERfQUxMX1ZJU0lCTEUgc2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0JZWxzZSBpZiAoUGFnZUlz QWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmIG5scGRlYWRfaXRlbXMgPiAwKQotCXsKLQkJZXJlcG9y dChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBl cnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlz aWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKLQotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBf cGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7Ci0JCXZpc2liaWxpdHltYXBf Y2xlYXIocmVsLCBoZWFwX2Jsaywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJ RF9CSVRTKTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JcmV0dXJuIGZhbHNlOwotfQotCiAvKgog ICoJbGF6eV9zY2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hlYXAoKSBwcnVuaW5nIGFuZCBmcmVl emluZy4KICAqCkBAIC0yMDQxLDEzICsxOTYwLDEyIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0 YXRlICp2YWNyZWwsCiAJUHJ1bmVGcmVlemVQYXJhbXMgcGFyYW1zID0gewogCQkucmVsYXRpb24g PSByZWwsCiAJCS5idWZmZXIgPSBidWYsCisJCS52bWJ1ZmZlciA9IHZtYnVmZmVyLAogCQkucmVh c29uID0gUFJVTkVfVkFDVVVNX1NDQU4sCi0JCS5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSwKKwkJLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIHwgSEVBUF9QQUdFX1BS VU5FX1VQREFURV9WTSwKIAkJLnZpc3Rlc3QgPSB2YWNyZWwtPnZpc3Rlc3QsCiAJCS5jdXRvZmZz ID0gJnZhY3JlbC0+Y3V0b2ZmcywKIAl9OwotCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKLQl1aW50 OAkJbmV3X3ZtYml0cyA9IDA7CiAKIAlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKSA9 PSBibGtubyk7CiAKQEAgLTIxNDcsNzUgKzIwNjUsMjUgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVs U3RhdGUgKnZhY3JlbCwKIAkvKiBEaWQgd2UgZmluZCBMUF9ERUFEIGl0ZW1zPyAqLwogCSpoYXNf bHBkZWFkX2l0ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCk7CiAKLQlBc3NlcnQoIXBy ZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOwotCUFzc2VydCghcHJl c3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwotCi0Jb2xkX3ZtYml0cyA9 IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyh2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcik7 Ci0KLQlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHZhY3JlbC0+cmVsLCBidWYs IGJsa25vLCBwYWdlLAotCQkJCQkJCQkJICAgcHJlc3VsdC5scGRlYWRfaXRlbXMsIHZtYnVmZmVy LAotCQkJCQkJCQkJICAgb2xkX3ZtYml0cykpCi0JCW9sZF92bWJpdHMgPSAwOwotCi0JaWYgKCFw cmVzdWx0LmFsbF92aXNpYmxlKQotCQlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKLQotCS8qIFNl dCB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2UgdmlzaWJpbGl0eSBoaW50ICovCi0JbmV3X3Zt Yml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQlpZiAocHJlc3VsdC5hbGxfZnJv emVuKQotCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQotCS8qIE5v dGhpbmcgdG8gZG8gKi8KLQlpZiAob2xkX3ZtYml0cyA9PSBuZXdfdm1iaXRzKQotCQlyZXR1cm4g cHJlc3VsdC5uZGVsZXRlZDsKLQotCUFzc2VydChwcmVzdWx0LmFsbF92aXNpYmxlKTsKLQotCS8q Ci0JICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQgdGhlIHZpc2liaWxpdHkgbWFw IHBhZ2UgaXMgc2V0IHdoaWxlCi0JICogdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQg dGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYgY2hlY2tzdW1zCi0JICogYXJlIG5vdCBlbmFibGVk KS4gUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0aGF0IHdlIGdldCBiYWNrIGluCi0JICog c3luYy4KLQkgKgotCSAqIFRoZSBoZWFwIGJ1ZmZlciBtdXN0IGJlIG1hcmtlZCBkaXJ0eSBiZWZv cmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwgY2hhaW4KLQkgKiB3aGVuIHNldHRpbmcgdGhlIFZNLiBX ZSBkb24ndCB3b3JyeSBhYm91dCB1bm5lY2Vzc2FyaWx5IGRpcnR5aW5nIHRoZQotCSAqIGhlYXAg YnVmZmVyIGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB0aG91Z2guIEl0IGlzIGV4 dHJlbWVseQotCSAqIHJhcmUgdG8gaGF2ZSBhIGNsZWFuIGhlYXAgYnVmZmVyIHdpdGggUERfQUxM X1ZJU0lCTEUgYWxyZWFkeSBzZXQgYW5kCi0JICogdGhlIFZNIGJpdHMgY2xlYXIsIHNvIHRoZXJl IGlzIG5vIHBvaW50IGluIG9wdGltaXppbmcgaXQuCi0JICovCi0JUGFnZVNldEFsbFZpc2libGUo cGFnZSk7Ci0JTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0KLQkvKgotCSAqIElmIHRoZSBwYWdlIGlz IGJlaW5nIHNldCBhbGwtZnJvemVuLCB3ZSBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkIGFzCi0J ICogdGhlIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZm aWNpZW50IHRvIG1ha2UKLQkgKiBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8gd2FzIGxvZ2dlZCB3 aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVuLgotCSAqLwotCUFzc2VydCghcHJlc3Vs dC5hbGxfZnJvemVuIHx8Ci0JCSAgICFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2Nv bmZsaWN0X2hvcml6b24pKTsKLQotCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtu bywgYnVmLAotCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkgIHZtYnVmZmVyLCBwcmVz dWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJCSAgbmV3X3ZtYml0cyk7CiAKIAkvKgogCSAq IElmIHRoZSBwYWdlIHdhc24ndCBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZy b3plbiBpbiB0aGUgVk0sCiAJICogY291bnQgaXQgYXMgbmV3bHkgc2V0IGZvciBsb2dnaW5nLgog CSAqLwotCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDAp CisJaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9 PSAwICYmCisJCShwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF KSAhPSAwKQogCXsKIAkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwotCQlpZiAocHJl c3VsdC5hbGxfZnJvemVuKQorCQlpZiAoKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlN QVBfQUxMX0ZST1pFTikgIT0gMCkKIAkJewogCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96 ZW5fcGFnZXMrKzsKIAkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJCX0KIAl9Ci0JZWxzZSBp ZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKLQkJCSBw cmVzdWx0LmFsbF9mcm96ZW4pCisJZWxzZSBpZiAoKHByZXN1bHQub2xkX3ZtYml0cyAmIFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgorCQkJIChwcmVzdWx0Lm5ld192bWJpdHMgJiBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJeworCQlBc3NlcnQoKHByZXN1bHQubmV3 X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApOwogCQl2YWNyZWwtPnZt X25ld19mcm96ZW5fcGFnZXMrKzsKIAkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKIAl9CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKaW5kZXggZjdlNGFlMzg0M2MuLmFkMmFmMTNlYzM5IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o CkBAIC00Miw2ICs0Miw3IEBACiAvKiAib3B0aW9ucyIgZmxhZyBiaXRzIGZvciBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZSAqLwogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURf Tk9XCQkoMSA8PCAwKQogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFCQkJCSgxIDw8IDEp CisjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0JCQkoMSA8PCAyKQogCiB0eXBlZGVm IHN0cnVjdCBCdWxrSW5zZXJ0U3RhdGVEYXRhICpCdWxrSW5zZXJ0U3RhdGU7CiB0eXBlZGVmIHN0 cnVjdCBHbG9iYWxWaXNTdGF0ZSBHbG9iYWxWaXNTdGF0ZTsKQEAgLTIzOCw2ICsyMzksMTIgQEAg dHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKIAlSZWxhdGlvbglyZWxhdGlvbjsJCS8q IHJlbGF0aW9uIGNvbnRhaW5pbmcgYnVmZmVyIHRvIGJlIHBydW5lZCAqLwogCUJ1ZmZlcgkJYnVm ZmVyOwkJCS8qIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KIAorCS8qCisJICogSWYgd2Ugd2lsbCBj b25zaWRlciB1cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAsIHZtYnVmZmVyIHNob3VsZAorCSAq IGNvbnRhaW4gdGhlIGNvcnJlY3QgYmxvY2sgb2YgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBiZSBw aW5uZWQuCisJICovCisJQnVmZmVyCQl2bWJ1ZmZlcjsKKwogCS8qCiAJICogVGhlIHJlYXNvbiBw cnVuaW5nIHdhcyBwZXJmb3JtZWQuICBJdCBpcyB1c2VkIHRvIHNldCB0aGUgV0FMIHJlY29yZAog CSAqIG9wY29kZSB3aGljaCBpcyB1c2VkIGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzIHB1cnBv c2VzLgpAQCAtMjUyLDYgKzI1OSw5IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1z CiAJICoKIAkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwg YWxzbyBmcmVlemUgdHVwbGVzLCBhbmQKIAkgKiB3aWxsIHJldHVybiAnYWxsX3Zpc2libGUnLCAn YWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKwkgKgorCSAqIEhFQVBfUEFHRV9QUlVO RV9VUERBVEVfVk0gaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQgdGhlIHBhZ2UncyBzdGF0dXMK KwkgKiBpbiB0aGUgVk0uCiAJICovCiAJaW50CQkJb3B0aW9uczsKIApAQCAtMjk5LDYgKzMwOSwx NyBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWJvb2wJCWFsbF9mcm96ZW47 CiAJVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOwogCisJLyoKKwkgKiBvbGRfdm1i aXRzIGFyZSB0aGUgc3RhdGUgb2YgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGJpdHMg aW4gdGhlCisJICogdmlzaWJpbGl0eSBtYXAgYmVmb3JlIHVwZGF0aW5nIGl0IGR1cmluZyBwaGFz ZSBJIG9mIHZhY3V1bWluZy4KKwkgKiBuZXdfdm1iaXRzIGFyZSB0aGUgc3RhdGUgb2YgdGhvc2Ug Yml0cyBhZnRlciBwaGFzZSBJIG9mIHZhY3V1bWluZy4KKwkgKgorCSAqIFRoZXNlIGFyZSBvbmx5 IHNldCBpZiB0aGUgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBvcHRpb24gaXMgc2V0IGFuZAor CSAqIHdlIGhhdmUgYXR0ZW1wdGVkIHRvIHVwZGF0ZSB0aGUgVk0uCisJICovCisJdWludDgJCW5l d192bWJpdHM7CisJdWludDgJCW9sZF92bWJpdHM7CisKIAkvKgogCSAqIFdoZXRoZXIgb3Igbm90 IHRoZSBwYWdlIG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVuc2FmZS4gIFRoaXMgaXMgc2V0IHRvCiAJ ICogJ3RydWUnLCBldmVuIGlmIHRoZSBwYWdlIGNvbnRhaW5zIExQX0RFQUQgaXRlbXMuICBWQUNV VU0gd2lsbCByZW1vdmUKLS0gCjIuNDMuMAoK --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Disposition: attachment; filename="v29-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd1k0n4 RnJvbSBmODAxZGQ4NmY2YjdiNDliMmQyYWE3NDdkMWM0MmExMWVmYmM1M2FiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6NTc6MzQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOSAwNS8xNV0gTW92ZSBWTSBhc3NlcnQgaW50byBwcnVuZS9mcmVlemUgY29kZQoKVGhp cyBpcyBhIHN0ZXAgdG93YXJkIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIFdBTCByZWNvcmQg YXMgcHJ1bmluZwphbmQgZnJlZXppbmcuIEl0IG1vdmVzIHRoZSBjaGVjayBvZiB0aGUgaGVhcCBw YWdlIGludG8gcHJ1bmUvZnJlZXplIGNvZGUKYmVmb3JlIHNldHRpbmcgdGhlIFZNLiBUaGlzIGFs bG93cyB1cyB0byByZW1vdmUgc29tZSBmaWVsZHMgb2YgdGhlClBydW5lRnJlZXplUmVzdWx0Lgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDg2ICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 IDY4ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICB8IDI1ICsrKy0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyks IDEwMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDYy NDA0NzY4YmVmLi43ZjM4ZDgxNWRlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTkyNSw2ICs5MjUsMzEgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnBy c3RhdGUsCiAJcmV0dXJuIHRydWU7CiB9CiAKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisK Ky8qCisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKSB3aGlj aCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycworICogdGhhdCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0 aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBidXQgdGhlcmUgaXMgbm8KKyAqIHJlYXNv biBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0cy4KKyAqLworc3RhdGljIGJvb2wKK2hl YXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkg VHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJ CQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJIE9mZnNldE51 bWJlciAqbG9nZ2luZ19vZmZudW0pCit7CisKKwlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKHJlbCwgYnVmLAorCQkJCQkJCQkJCSAgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkg IE5VTEwsIDAsCisJCQkJCQkJCQkJICBhbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgdmlzaWJpbGl0 eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJCSAgbG9nZ2luZ19vZmZudW0pOworfQorI2VuZGlmCisK KwogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxs eSBmcmVlemUgdHVwbGVzIG9uIHRoZQpAQCAtOTc4LDYgKzEwMDMsNyBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCUJ1ZmZlcgkJdm1idWZm ZXIgPSBwYXJhbXMtPnZtYnVmZmVyOwogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZl cik7CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7 CisJVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiAJUHJ1bmVTdGF0ZQlwcnN0YXRlOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19w cnVuZTsKQEAgLTExMzYsMjMgKzExNjIsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCXByZXN1bHQtPm5mcm96ZW4gPSBwcnN0YXRlLm5m cm96ZW47CiAJcHJlc3VsdC0+bGl2ZV90dXBsZXMgPSBwcnN0YXRlLmxpdmVfdHVwbGVzOwogCXBy ZXN1bHQtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gcHJzdGF0ZS5yZWNlbnRseV9kZWFkX3R1cGxl czsKLQlwcmVzdWx0LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX3Zpc2libGU7Ci0JcHJlc3Vs dC0+YWxsX2Zyb3plbiA9IHByc3RhdGUuYWxsX2Zyb3plbjsKIAlwcmVzdWx0LT5oYXN0dXAgPSBw cnN0YXRlLmhhc3R1cDsKIAotCS8qCi0JICogRm9yIGNhbGxlcnMgcGxhbm5pbmcgdG8gdXBkYXRl IHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24KLQkgKiBmb3IgdGhhdCBy ZWNvcmQgbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0 aGUKLQkgKiBwYWdlIGlzIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxp Y3QgYW5kIHRoZQotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gc2hvdWxkIHJlbWFpbiBJbnZhbGlk VHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMKLQkgKiB0aGUgY2FzZSB0aGF0IHdlIGp1c3Qg ZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkCi0JICogaW5jbHVk ZWQgdGhlIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNvIHRoZSBjYWxsZXIgZG9lc24ndCBuZWVkIGl0 LgotCSAqLwotCWlmIChwcmVzdWx0LT5hbGxfZnJvemVuKQotCQlwcmVzdWx0LT52bV9jb25mbGlj dF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JZWxzZQotCQlwcmVzdWx0LT52bV9j b25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7Ci0KIAlwcmVz dWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0aGUgcHJlc3Vs dC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAKQEAgLTExNzAs NiArMTE4MSw0NiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFt cyAqcGFyYW1zLAogCQl9CiAJfQogCisJLyoKKwkgKiBJZiB1cGRhdGluZyB0aGUgdmlzaWJpbGl0 eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGF0IHJlY29yZAorCSAqIG11c3QgYmUg dGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZlciwgaWYgdGhlIHBhZ2UgaXMKKwkg KiBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5vIGNvbmZsaWN0IGFuZCB0aGUgdm1f Y29uZmxpY3RfaG9yaXpvbgorCSAqIHNob3VsZCByZW1haW4gSW52YWxpZFRyYW5zYWN0aW9uSWQu ICBUaGlzIGluY2x1ZGVzIHRoZSBjYXNlIHRoYXQgd2UKKwkgKiBqdXN0IGZyb3plIGFsbCB0aGUg dHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZCBpbmNsdWRlZCB0aGUKKwkgKiBjb25mbGlj dCBYSUQgYWxyZWFkeSBzbyB3ZSBkb24ndCBuZWVkIHRvIGFnYWluLgorCSAqLworCWlmIChwcnN0 YXRlLmFsbF9mcm96ZW4pCisJCXZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKwllbHNlCisJCXZtX2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlf Y3V0b2ZmX3hpZDsKKworCS8qCisJICogRHVyaW5nIGl0cyBzZWNvbmQgcGFzcyBvdmVyIHRoZSBo ZWFwLCBWQUNVVU0gY2FsbHMKKwkgKiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKSB0 byBkZXRlcm1pbmUgd2hldGhlciBhIHBhZ2UgaXMKKwkgKiBhbGwtdmlzaWJsZSBhbmQgYWxsLWZy b3plbi4gVGhlIGxvZ2ljIGhlcmUgaXMgc2ltaWxhci4gQWZ0ZXIgY29tcGxldGluZworCSAqIHBy dW5pbmcgYW5kIGZyZWV6aW5nLCB1c2UgYW4gYXNzZXJ0aW9uIHRvIHZlcmlmeSB0aGF0IG91ciBy ZXN1bHRzCisJICogcmVtYWluIGNvbnNpc3RlbnQgd2l0aCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxs X3Zpc2libGUoKS4KKwkgKi8KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJaWYgKHByc3Rh dGUuYWxsX3Zpc2libGUpCisJeworCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKKwkJYm9v bAkJZGVidWdfYWxsX2Zyb3plbjsKKworCQlBc3NlcnQocHJlc3VsdC0+bHBkZWFkX2l0ZW1zID09 IDApOworCisJCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocGFyYW1zLT5yZWxhdGlv biwgYnVmZmVyLAorCQkJCQkJCQkJCXByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbiwKKwkJCQkJ CQkJCQkmZGVidWdfYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkmZGVidWdfY3V0b2ZmLCBvZmZfbG9j KSk7CisKKwkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsK KworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKKwkJCSAg IGRlYnVnX2N1dG9mZiA9PSB2bV9jb25mbGljdF9ob3Jpem9uKTsKKwl9CisjZW5kaWYKKwogCS8q IE5vdyB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBQRF9BTExfVklTSUJMRSBoaW50ICov CiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9 PSAwKSk7CiAKQEAgLTEyMTYsMTIgKzEyNjcsMTEgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJICogbWFrZSBldmVyeXRoaW5nIHNhZmUg Zm9yIFJFRE8gd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzCiAJCSAqIHdlcmUgZnJv emVuLgogCQkgKi8KLQkJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwKLQkJCSAgICFUcmFu c2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uKSk7CisJCUFzc2Vy dCghcHJzdGF0ZS5hbGxfZnJvemVuIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZCh2bV9jb25mbGlj dF9ob3Jpem9uKSk7CiAKIAkJdmlzaWJpbGl0eW1hcF9zZXQocGFyYW1zLT5yZWxhdGlvbiwgYmxv Y2tubywgYnVmZmVyLAogCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCSAgdm1idWZm ZXIsIHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkgIHZtYnVmZmVyLCB2bV9j b25mbGljdF9ob3Jpem9uLAogCQkJCQkJICBuZXdfdm1iaXRzKTsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA4YjQ4OTM0OTMxMi4uZjU2YTAyYTNkNDYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTQ1NywyMCArNDU3LDYgQEAgc3RhdGlj IHZvaWQgZGVhZF9pdGVtc19hZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtu bywgT2Zmc2V0TnVtYmVyICoKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfcmVzZXQoTFZSZWxTdGF0 ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2 YWNyZWwpOwogCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotc3RhdGljIGJvb2wgaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKLQkJ CQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkJCQkg T2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7Ci0jZW5kaWYKLXN0YXRpYyBib29sIGhlYXBf cGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJ CQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJCQkJCSAgIE9mZnNldE51 bWJlciAqZGVhZG9mZnNldHMsCi0JCQkJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKLQkJCQkJ CQkJCQkgICBib29sICphbGxfZnJvemVuLAotCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZp c2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmxvZ2dpbmdf b2ZmbnVtKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWxzdGF0c19hbGxfaW5kZXhlcyhMVlJlbFN0 YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFy Zyk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfdmFjdXVtX2Vycm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFj cmVsLApAQCAtMjAwNiwzMiArMTk5Miw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2 YWNyZWwsCiAJCXZhY3JlbC0+bmV3X2Zyb3plbl90dXBsZV9wYWdlcysrOwogCX0KIAotCS8qCi0J ICogVkFDVVVNIHdpbGwgY2FsbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSBkdXJpbmcgdGhl IHNlY29uZCBwYXNzIG92ZXIKLQkgKiB0aGUgaGVhcCB0byBkZXRlcm1pbmUgYWxsX3Zpc2libGUg YW5kIGFsbF9mcm96ZW4gZm9yIHRoZSBwYWdlIC0tIHRoaXMKLQkgKiBpcyBhIHNwZWNpYWxpemVk IHZlcnNpb24gb2YgdGhlIGxvZ2ljIGZyb20gdGhpcyBmdW5jdGlvbi4gIE5vdyB0aGF0Ci0JICog d2UndmUgZmluaXNoZWQgcHJ1bmluZyBhbmQgZnJlZXppbmcsIG1ha2Ugc3VyZSB0aGF0IHdlJ3Jl IGluIHRvdGFsCi0JICogYWdyZWVtZW50IHdpdGggaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkg dXNpbmcgYW4gYXNzZXJ0aW9uLgotCSAqLwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQlp ZiAocHJlc3VsdC5hbGxfdmlzaWJsZSkKLQl7Ci0JCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2Zm OwotCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwotCi0JCUFzc2VydChwcmVzdWx0LmxwZGVhZF9p dGVtcyA9PSAwKTsKLQotCQlBc3NlcnQoaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+ cmVsLCBidWYsCi0JCQkJCQkJCQkJdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sICZkZWJ1Z19h bGxfZnJvemVuLAotCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYsICZ2YWNyZWwtPm9mZm51bSkpOwot Ci0JCUFzc2VydChwcmVzdWx0LmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7Ci0KLQkJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWJ1Z19jdXRvZmYpIHx8Ci0JCQkgICBkZWJ1 Z19jdXRvZmYgPT0gcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKTsKLQl9Ci0jZW5kaWYKLQog CS8qCiAJICogTm93IHNhdmUgZGV0YWlscyBvZiB0aGUgTFBfREVBRCBpdGVtcyBmcm9tIHRoZSBw YWdlIGluIHZhY3JlbAogCSAqLwpAQCAtMzQ4OSwyOSArMzQ0OSw2IEBAIGRlYWRfaXRlbXNfY2xl YW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiAJdmFjcmVsLT5wdnMgPSBOVUxMOwogfQogCi0jaWZk ZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCi0vKgotICogV3JhcHBlciBmb3IgaGVhcF9wYWdlX3dv dWxkX2JlX2FsbF92aXNpYmxlKCkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGNhbGxlcnMKLSAqIHRo YXQgZXhwZWN0IG5vIExQX0RFQUQgb24gdGhlIHBhZ2UuIEN1cnJlbnRseSBhc3NlcnQtb25seSwg YnV0IHRoZXJlIGlzIG5vCi0gKiByZWFzb24gbm90IHRvIHVzZSBpdCBvdXRzaWRlIG9mIGFzc2Vy dHMuCi0gKi8KLXN0YXRpYyBib29sCi1oZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJ CSBib29sICphbGxfZnJvemVuLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCwKLQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQotewotCi0JcmV0 dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkg IE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkJICBOVUxMLCAwLAotCQkJCQkJCQkJCSAgYWxsX2Zyb3pl biwKLQkJCQkJCQkJCQkgIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCQkgIGxvZ2dp bmdfb2ZmbnVtKTsKLX0KLSNlbmRpZgogCiAvKgogICogQ2hlY2sgd2hldGhlciB0aGUgaGVhcCBw YWdlIGluIGJ1ZiBpcyBhbGwtdmlzaWJsZSBleGNlcHQgZm9yIHRoZSBkZWFkCkBAIC0zNTM1LDE1 ICszNDcyLDEyIEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCiAgKiAgLSAqbG9nZ2luZ19vZmZudW06IE9mZnNldE51bWJlciBvZiBjdXJyZW50IHR1 cGxlIGJlaW5nIHByb2Nlc3NlZDsKICAqICAgICB1c2VkIGJ5IHZhY3V1bSdzIGVycm9yIGNhbGxi YWNrIHN5c3RlbS4KICAqCi0gKiBDYWxsZXJzIGxvb2tpbmcgdG8gdmVyaWZ5IHRoYXQgdGhlIHBh Z2UgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBjYW4gY2FsbAotICogaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKCkuCi0gKgogICogVGhpcyBsb2dpYyBpcyBjbG9zZWx5IHJlbGF0ZWQgdG8gaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgogICogSWYgeW91IG1vZGlmeSB0aGlz IGZ1bmN0aW9uLCBlbnN1cmUgY29uc2lzdGVuY3kgd2l0aCB0aGF0IGNvZGUuIEFuCiAgKiBhc3Nl cnRpb24gY3Jvc3MtY2hlY2tzIHRoYXQgYm90aCByZW1haW4gaW4gYWdyZWVtZW50LiBEbyBub3Qg aW50cm9kdWNlIG5ldwogICogc2lkZS1lZmZlY3RzLgogICovCi1zdGF0aWMgYm9vbAorYm9vbAog aGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK IAkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJCQkJCQkJICAgT2Zmc2V0TnVt YmVyICpkZWFkb2Zmc2V0cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBhZDJhZjEzZWMzOS4uYmVjMmY4 NDAxMDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTI1Nyw4ICsyNTcsNyBAQCB0eXBlZGVmIHN0cnVj dCBQcnVuZUZyZWV6ZVBhcmFtcwogCSAqIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cg aW5kaWNhdGVzIHRoYXQgZGVhZCBpdGVtcyBjYW4gYmUgc2V0CiAJICogTFBfVU5VU0VEIGR1cmlu ZyBwcnVuaW5nLgogCSAqCi0JICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBpbmRpY2F0ZXMgdGhh dCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kCi0JICogd2lsbCByZXR1cm4gJ2FsbF92 aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisJICogSEVBUF9QQUdF X1BSVU5FX0ZSRUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcwog CSAqCiAJICogSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxs IHNldCB0aGUgcGFnZSdzIHN0YXR1cwogCSAqIGluIHRoZSBWTS4KQEAgLTI5NCwyMSArMjkzLDYg QEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlpbnQJCQlsaXZlX3R1cGxlczsK IAlpbnQJCQlyZWNlbnRseV9kZWFkX3R1cGxlczsKIAotCS8qCi0JICogYWxsX3Zpc2libGUgYW5k IGFsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCi0J ICogYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdlLCBh ZnRlciBwcnVuaW5nLgotCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVz ZSBpdCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJ dAotCSAqIGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAw KSwgYW5kIGFsbF9mcm96ZW4gaXMKLQkgKiB0cnVlLgotCSAqCi0JICogVGhlc2UgYXJlIG9ubHkg c2V0IGlmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LgotCSAqLwotCWJvb2wJ CWFsbF92aXNpYmxlOwotCWJvb2wJCWFsbF9mcm96ZW47Ci0JVHJhbnNhY3Rpb25JZCB2bV9jb25m bGljdF9ob3Jpem9uOwotCiAJLyoKIAkgKiBvbGRfdm1iaXRzIGFyZSB0aGUgc3RhdGUgb2YgdGhl IGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGJpdHMgaW4gdGhlCiAJICogdmlzaWJpbGl0eSBt YXAgYmVmb3JlIHVwZGF0aW5nIGl0IGR1cmluZyBwaGFzZSBJIG9mIHZhY3V1bWluZy4KQEAgLTQ1 NCw2ICs0MzgsMTMgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIC8qIGluIGhlYXAvdmFjdXVtbGF6eS5jICov CiBleHRlcm4gdm9pZCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0 IFZhY3V1bVBhcmFtcyBwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7Citl eHRlcm4gYm9vbCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLAorCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJ CQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAorCQkJCQkJCQkJCSAgIGludCBuZGVh ZG9mZnNldHMsCisJCQkJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkgICBU cmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJICAgT2Zmc2V0 TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiAKIC8qIGluIGhlYXAvaGVhcGFtX3Zpc2liaWxpdHku YyAqLwogZXh0ZXJuIGJvb2wgSGVhcFR1cGxlU2F0aXNmaWVzVmlzaWJpbGl0eShIZWFwVHVwbGUg aHR1cCwgU25hcHNob3Qgc25hcHNob3QsCi0tIAoyLjQzLjAKCg== --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v29-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd1ns15 RnJvbSA1M2IyNmMxY2Y2YmYxZTM3ZmI1ZGU0NTc2YWVmZWUwNGE1MGExZjJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTY6MTY6MjIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOSAwNi8xNV0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog S2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8g TGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhk SzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgfCAyNzYgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDE1NyBpbnNlcnRpb25zKCspLCAxMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCA3ZjM4ZDgxNWRlNC4uYjY2ZmM2YzE3ZTYgMTAwNjQ0Ci0tLSBhL3Ny 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 IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGFuIGhlYXAgcGFnZSBhbmQgaXRzCiAgKiBjb3Jy ZXNwb25kaW5nIHZpc2liaWxpdHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVmb3JlIHNl dHRpbmcgdGhlCkBAIC0xMDAzLDcgKzEwNzAsNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCUJ1ZmZlcgkJdm1idWZmZXIgPSBwYXJhbXMt PnZtYnVmZmVyOwogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJQmxvY2tO dW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7Ci0JVHJhbnNhY3Rp b25JZCB2bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJUHJ1bmVT dGF0ZQlwcnN0YXRlOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKQEAgLTEw MTEsMTAgKzEwNzcsMTAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAlib29sCQlkb19zZXRfdm07CiAJYm9vbAkJZGlkX3R1cGxlX2hpbnRf ZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53YWxfZnBpOworCVRyYW5zYWN0 aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJdWludDgJCW5ld192 bWJpdHMgPSAwOwogCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKIAotCiAJLyogSW5pdGlhbGl6ZSBw cnN0YXRlICovCiAJcHJ1bmVfZnJlZXplX3NldHVwKHBhcmFtcywKIAkJCQkJICAgbmV3X3JlbGZy b3plbl94aWQsIG5ld19yZWxtaW5fbXhpZCwKQEAgLTEwNzUsNiArMTE0MSwzNyBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlwcnN0YXRl LmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAlBc3NlcnQoIXBy c3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKKwlBc3NlcnQoIXByc3Rh dGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKKworCS8qCisJ ICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSBWTSBiaXRzIGJhc2VkIG9uIGluZm9ybWF0aW9u IGZyb20gdGhlIFZNIGFuZAorCSAqIHRoZSBhbGxfdmlzaWJsZS9hbGxfZnJvemVuIGZsYWdzLgor CSAqLworCWRvX3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92bSgmcHJzdGF0ZSwKKwkJCQkJ CQkJCSAgcGFyYW1zLT5yZWxhdGlvbiwKKwkJCQkJCQkJCSAgYmxvY2tubywKKwkJCQkJCQkJCSAg YnVmZmVyLAorCQkJCQkJCQkJICBwYWdlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJ CSAgcHJzdGF0ZS5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkgICZvbGRfdm1iaXRzLAorCQkJCQkJ CQkJICAmbmV3X3ZtYml0cyk7CisKKwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVn YXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlm IHdlIGRvIG5vdCBpbnRlbmQgdG8gc2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3Zt IHx8IG5ld192bWJpdHMgPT0gMCk7CisKKwljb25mbGljdF94aWQgPSBnZXRfY29uZmxpY3RfeGlk KGRvX3BydW5lLCBkb19mcmVlemUsIGRvX3NldF92bSwKKwkJCQkJCQkJCW9sZF92bWJpdHMsIG5l d192bWJpdHMsCisJCQkJCQkJCQlwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCwKKwkJCQkJCQkJ CXByc3RhdGUuZnJ6X2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQlwcnN0YXRlLnZpc2liaWxp dHlfY3V0b2ZmX3hpZCk7CisKKwkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBhIGNy aXRpY2FsIHNlY3Rpb24gKi8KKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwogCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5n IHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CkBAIC0x MDk2LDE0ICsxMTkzLDE3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAKIAkJLyoKIAkJICogSWYgdGhhdCdzIGFsbCB3ZSBoYWQgdG8gZG8g dG8gdGhlIHBhZ2UsIHRoaXMgaXMgYSBub24tV0FMLWxvZ2dlZAotCQkgKiBoaW50LiAgSWYgd2Ug YXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFnZSwgd2Ugd2lsbCBtYXJrCi0JCSAq IHRoZSBidWZmZXIgZGlydHkgYmVsb3cuCisJCSAqIGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8g ZnJlZXplIG9yIHBydW5lIHRoZSBwYWdlIG9yIHNldAorCQkgKiBQRF9BTExfVklTSUJMRSwgd2Ug d2lsbCBtYXJrIHRoZSBidWZmZXIgZGlydHkgYmVsb3cuCisJCSAqCisJCSAqIFNldHRpbmcgUERf QUxMX1ZJU0lCTEUgaXMgZnVsbHkgV0FMLWxvZ2dlZCBiZWNhdXNlIGl0IGlzIGZvcmJpZGRlbgor CQkgKiBmb3IgdGhlIFZNIHRvIGJlIHNldCBhbmQgUERfQUxMX1ZJU0lCTEUgdG8gYmUgY2xlYXIu CiAJCSAqLwotCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUpCisJCWlmICghZG9fZnJlZXpl ICYmICFkb19wcnVuZSAmJiAhZG9fc2V0X3ZtKQogCQkJTWFya0J1ZmZlckRpcnR5SGludChidWZm ZXIsIHRydWUpOwogCX0KIAotCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUpCisJaWYgKGRvX3By dW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pCiAJewogCQkvKiBBcHBseSB0aGUgcGxhbm5l ZCBpdGVtIGNoYW5nZXMgYW5kIHJlcGFpciBwYWdlIGZyYWdtZW50YXRpb24uICovCiAJCWlmIChk b19wcnVuZSkKQEAgLTExMTcsNiArMTIxNywyNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlpZiAoZG9fZnJlZXplKQogCQkJaGVhcF9m cmVlemVfcHJlcGFyZWRfdHVwbGVzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZy b3plbik7CiAKKwkJLyogU2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5 IGhpbnQgKi8KKwkJaWYgKGRvX3NldF92bSkKKwkJeworCQkJLyoKKwkJCSAqIFdoaWxlIGl0IGlz IHZhbGlkIGZvciBQRF9BTExfVklTSUJMRSB0byBiZSBzZXQgd2hlbiB0aGUKKwkJCSAqIGNvcnJl c3BvbmRpbmcgVk0gYml0IGlzIGNsZWFyLCB3ZSBzdHJvbmdseSBwcmVmZXIgdG8ga2VlcCB0aGVt CisJCQkgKiBpbiBzeW5jLgorCQkJICoKKwkJCSAqIFRoZSBoZWFwIGJ1ZmZlciBtdXN0IGJlIG1h cmtlZCBkaXJ0eSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZQorCQkJICogV0FMIGNoYWluIHdoZW4g c2V0dGluZyB0aGUgVk0uIFdlIGRvbid0IHdvcnJ5IGFib3V0CisJCQkgKiB1bm5lY2Vzc2FyaWx5 IGRpcnR5aW5nIHRoZSBoZWFwIGJ1ZmZlciBpZiBQRF9BTExfVklTSUJMRSBpcworCQkJICogYWxy ZWFkeSBzZXQsIHRob3VnaC4gSXQgaXMgZXh0cmVtZWx5IHJhcmUgdG8gaGF2ZSBhIGNsZWFuIGhl YXAKKwkJCSAqIGJ1ZmZlciB3aXRoIFBEX0FMTF9WSVNJQkxFIGFscmVhZHkgc2V0IGFuZCB0aGUg Vk0gYml0cyBjbGVhciwKKwkJCSAqIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluIG9wdGltaXppbmcg aXQuCisJCQkgKi8KKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJdmlzaWJpbGl0eW1h cF9zZXRfdm1iaXRzKGJsb2Nrbm8sIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJIHBh cmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQl9CisKIAkJTWFya0J1ZmZlckRpcnR5KGJ1 ZmZlcik7CiAKIAkJLyoKQEAgLTExMjQsMjkgKzEyNDQsMTIgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJICovCiAJCWlmIChSZWxhdGlv bk5lZWRzV0FMKHBhcmFtcy0+cmVsYXRpb24pKQogCQl7Ci0JCQkvKgotCQkJICogVGhlIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUKLQkJ CSAqIG1vc3QgY29uc2VydmF0aXZlIG9mIGFsbCB0aGUgaG9yaXpvbnMgY2FsY3VsYXRlZCBmb3Ig YW55IG9mIHRoZQotCQkJICogcG9zc2libGUgbW9kaWZpY2F0aW9ucy4gIElmIHRoaXMgcmVjb3Jk IHdpbGwgcHJ1bmUgdHVwbGVzLCBhbnkKLQkJCSAqIHRyYW5zYWN0aW9ucyBvbiB0aGUgc3RhbmRi eSBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZQotCQkJICogbW9zdCByZWNlbnRs eSByZW1vdmVkIHR1cGxlIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgd2lsbAotCQkJICogY29uZmxp Y3QuICBJZiB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMK LQkJCSAqIG9uIHRoZSBzdGFuZGJ5IHdpdGggeGlkcyBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB0 dXBsZSB0aGlzCi0JCQkgKiByZWNvcmQgd2lsbCBmcmVlemUgd2lsbCBjb25mbGljdC4KLQkJCSAq LwotCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQ7Ci0KLQkJCWlmIChUcmFuc2FjdGlvbklk Rm9sbG93cyhwcnN0YXRlLmZyel9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJIHByc3RhdGUu bGF0ZXN0X3hpZF9yZW1vdmVkKSkKLQkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmZyel9jb25m bGljdF9ob3Jpem9uOwotCQkJZWxzZQotCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUubGF0ZXN0 X3hpZF9yZW1vdmVkOwotCiAJCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHBhcmFtcy0+cmVs YXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJCSAgSW52YWxpZEJ1ZmZlciwJLyogdm1idWZmZXIgKi8K LQkJCQkJCQkJCSAgMCwJLyogdm1mbGFncyAqLworCQkJCQkJCQkJICBkb19zZXRfdm0gPyB2bWJ1 ZmZlciA6IEludmFsaWRCdWZmZXIsCisJCQkJCQkJCQkgIGRvX3NldF92bSA/IG5ld192bWJpdHMg OiAwLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCi0JCQkJCQkJCQkgIHRydWUsIHBhcmFtcy0+ cmVhc29uLAorCQkJCQkJCQkJICB0cnVlLCAvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCSAg cGFyYW1zLT5yZWFzb24sCiAJCQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96 ZW4sCiAJCQkJCQkJCQkgIHByc3RhdGUucmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwK IAkJCQkJCQkJCSAgcHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLApAQCAtMTE1Niw0MyAr MTI1OSw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpw YXJhbXMsCiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKLQkvKiBDb3B5IGluZm9ybWF0aW9uIGJh Y2sgZm9yIGNhbGxlciAqLwotCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsK LQlwcmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKLQlwcmVzdWx0LT5uZnJvemVu ID0gcHJzdGF0ZS5uZnJvemVuOwotCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZl X3R1cGxlczsKLQlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50 bHlfZGVhZF90dXBsZXM7Ci0JcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7Ci0KLQlw cmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKLQkvKiB0aGUgcHJl c3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCi0KLQlpZiAo cHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKLQl7Ci0JCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkK LQkJewotCQkJKm5ld19yZWxmcm96ZW5feGlkID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VS ZWxmcm96ZW5YaWQ7Ci0JCQkqbmV3X3JlbG1pbl9teGlkID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6 ZVBhZ2VSZWxtaW5NeGlkOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJKm5ld19yZWxmcm96ZW5feGlk ID0gcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbGZyb3plblhpZDsKLQkJCSpuZXdfcmVs bWluX214aWQgPSBwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZDsKLQkJfQot CX0KLQotCS8qCi0JICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxp Y3QgaG9yaXpvbiBmb3IgdGhhdCByZWNvcmQKLQkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBv biB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCi0JICogY29tcGxldGVseSBmcm96 ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6b24K LQkgKiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcyB0 aGUgY2FzZSB0aGF0IHdlCi0JICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5l LWZyZWV6ZSByZWNvcmQgaW5jbHVkZWQgdGhlCi0JICogY29uZmxpY3QgWElEIGFscmVhZHkgc28g d2UgZG9uJ3QgbmVlZCB0byBhZ2Fpbi4KLQkgKi8KLQlpZiAocHJzdGF0ZS5hbGxfZnJvemVuKQot CQl2bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JZWxzZQotCQl2 bV9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJaWYg KGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsK IAogCS8qCiAJICogRHVyaW5nIGl0cyBzZWNvbmQgcGFzcyBvdmVyIHRoZSBoZWFwLCBWQUNVVU0g Y2FsbHMKQEAgLTEyMDcsNyArMTI3NSw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBy dW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOwog CQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwogCi0JCUFzc2VydChwcmVzdWx0LT5scGRlYWRfaXRl bXMgPT0gMCk7CisJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKwkJQXNzZXJ0 KHByc3RhdGUuY3V0b2Zmcyk7CiAKIAkJQXNzZXJ0KGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShw YXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCiAJCQkJCQkJCQkJcHJzdGF0ZS5jdXRvZmZzLT5PbGRl c3RYbWluLApAQCAtMTIxNyw2NyArMTI4NiwzNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlBc3NlcnQocHJzdGF0ZS5hbGxfZnJvemVu ID09IGRlYnVnX2FsbF9mcm96ZW4pOwogCiAJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo ZGVidWdfY3V0b2ZmKSB8fAotCQkJICAgZGVidWdfY3V0b2ZmID09IHZtX2NvbmZsaWN0X2hvcml6 b24pOworCQkJICAgZGVidWdfY3V0b2ZmID09IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlk KTsKIAl9CiAjZW5kaWYKIAotCS8qIE5vdyB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBQ RF9BTExfVklTSUJMRSBoaW50ICovCi0JQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChw cnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7Ci0KLQlkb19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2ls bF9zZXRfdm0oJnByc3RhdGUsCi0JCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24sCi0JCQkJCQkJ CQkgIGJsb2Nrbm8sCi0JCQkJCQkJCQkgIGJ1ZmZlciwKLQkJCQkJCQkJCSAgcGFnZSwKLQkJCQkJ CQkJCSAgdm1idWZmZXIsCi0JCQkJCQkJCQkgIHByc3RhdGUubHBkZWFkX2l0ZW1zLAotCQkJCQkJ CQkJICAmb2xkX3ZtYml0cywKLQkJCQkJCQkJCSAgJm5ld192bWJpdHMpOworCS8qIENvcHkgaW5m b3JtYXRpb24gYmFjayBmb3IgY2FsbGVyICovCisJcHJlc3VsdC0+bmRlbGV0ZWQgPSBwcnN0YXRl Lm5kZWxldGVkOworCXByZXN1bHQtPm5uZXdscGRlYWQgPSBwcnN0YXRlLm5kZWFkOworCXByZXN1 bHQtPm5mcm96ZW4gPSBwcnN0YXRlLm5mcm96ZW47CisJcHJlc3VsdC0+bGl2ZV90dXBsZXMgPSBw cnN0YXRlLmxpdmVfdHVwbGVzOworCXByZXN1bHQtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gcHJz dGF0ZS5yZWNlbnRseV9kZWFkX3R1cGxlczsKKwlwcmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhh c3R1cDsKKwlwcmVzdWx0LT5uZXdfdm1iaXRzID0gbmV3X3ZtYml0czsKKwlwcmVzdWx0LT5vbGRf dm1iaXRzID0gb2xkX3ZtYml0czsKIAotCS8qCi0JICogbmV3X3ZtYml0cyBzaG91bGQgYmUgMCBy ZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCi0JICogYWxsLXZpc2libGUg aWYgd2UgZG8gbm90IGludGVuZCB0byBzZXQgdGhlIFZNLgotCSAqLwotCUFzc2VydChkb19zZXRf dm0gfHwgbmV3X3ZtYml0cyA9PSAwKTsKKwlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRl LmxwZGVhZF9pdGVtczsKKwkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFs cmVhZHkgZmlsbGVkIGluICovCiAKLQkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdl IHZpc2liaWxpdHkgaGludCwgaWYgcmVsZXZhbnQgKi8KLQlpZiAoZG9fc2V0X3ZtKQorCWlmIChw cnN0YXRlLmF0dGVtcHRfZnJlZXplKQogCXsKLQkJQXNzZXJ0KHByc3RhdGUuYWxsX3Zpc2libGUp OwotCi0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNp YmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZlbCBiaXQgaXMg Y2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVja3N1bXMgYXJl IG5vdCBlbmFibGVkKS4gUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0aGF0IHdlCi0JCSAq IGdldCBiYWNrIGluIHN5bmMuCi0JCSAqCi0JCSAqIFRoZSBoZWFwIGJ1ZmZlciBtdXN0IGJlIG1h cmtlZCBkaXJ0eSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwKLQkJICogY2hhaW4gd2hlbiBz ZXR0aW5nIHRoZSBWTS4gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgdW5uZWNlc3NhcmlseQotCQkgKiBk aXJ0eWluZyB0aGUgaGVhcCBidWZmZXIgaWYgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQs IHRob3VnaC4KLQkJICogSXQgaXMgZXh0cmVtZWx5IHJhcmUgdG8gaGF2ZSBhIGNsZWFuIGhlYXAg YnVmZmVyIHdpdGgKLQkJICogUERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQgYW5kIHRoZSBWTSBi aXRzIGNsZWFyLCBzbyB0aGVyZSBpcyBubwotCQkgKiBwb2ludCBpbiBvcHRpbWl6aW5nIGl0Lgot CQkgKi8KLQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWZm ZXIpOwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBhbGwtZnJvemVuLCB3 ZSBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkCi0JCSAqIGFzIHRoZSBjdXRvZmZfeGlkLCBzaW5j ZSBhIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0bwotCQkgKiBtYWtlIGV2 ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMK LQkJICogd2VyZSBmcm96ZW4uCi0JCSAqLwotCQlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQodm1fY29uZmxpY3RfaG9yaXpvbikpOwotCi0JCXZpc2li aWxpdHltYXBfc2V0KHBhcmFtcy0+cmVsYXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwKLQkJCQkJCSAg SW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkgIHZtYnVmZmVyLCB2bV9jb25mbGljdF9ob3Jpem9u LAotCQkJCQkJICBuZXdfdm1iaXRzKTsKKwkJaWYgKHByZXN1bHQtPm5mcm96ZW4gPiAwKQorCQl7 CisJCQkqbmV3X3JlbGZyb3plbl94aWQgPSBwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZVJlbGZy b3plblhpZDsKKwkJCSpuZXdfcmVsbWluX214aWQgPSBwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFn ZVJlbG1pbk14aWQ7CisJCX0KKwkJZWxzZQorCQl7CisJCQkqbmV3X3JlbGZyb3plbl94aWQgPSBw cnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkOworCQkJKm5ld19yZWxtaW5f bXhpZCA9IHByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkOworCQl9CiAJfQot Ci0JLyogU2F2ZSB0aGUgdm1iaXRzIGZvciBjYWxsZXIgKi8KLQlwcmVzdWx0LT5vbGRfdm1iaXRz ID0gb2xkX3ZtYml0czsKLQlwcmVzdWx0LT5uZXdfdm1iaXRzID0gbmV3X3ZtYml0czsKIH0KIAog Ci0tIAoyLjQzLjAKCg== --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v29-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd1rtk6 RnJvbSA2ZjA4NWZiZjA2ZDYzYzc0Mjc5NDZjYmE1MDkxN2M3ZmRmMDU4ZmFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjkgMDcvMTVdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggZjU2YTAyYTNkNDYuLmQyMmQyYTg2ZWQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xODY3LDkgKzE4NjcsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTg4NiwxMyArMTg4OSwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVs LT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCisJCQkv KgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAg cGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8K KwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJ CQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAp OworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVuIHBh Z2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v29-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd1v3w7 RnJvbSBlZGI1MzI4MjNlMmVlYmFlM2VkZjdjNjhlN2RjNWRmYThiZDNmNTA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjkgMDgvMTVdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEyICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyMCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwLmggICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFw ZGVmcy5oICAgfCAgIDkgLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg ICAgfCAgIDEgLQogMTMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzczIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKaW5kZXggYmIyNjBjZmZhNjgu LjVmMDdmMTc5NDE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpAQCAtNTYsOCAr NTYsOCBAQCBtYXNrX3BhZ2VfaGludF9iaXRzKFBhZ2UgcGFnZSkKIAogCS8qCiAJICogRHVyaW5n IHJlcGxheSwgaWYgdGhlIHBhZ2UgTFNOIGhhcyBhZHZhbmNlZCBwYXN0IG91ciBYTE9HIHJlY29y ZCdzIExTTiwKLQkgKiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVh cF94bG9nX3Zpc2libGUoKSBmb3IKLQkgKiBkZXRhaWxzLgorCSAqIHdlIGRvbid0IG1hcmsgdGhl IHBhZ2UgYWxsLXZpc2libGUuIFNlZSBoZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisJICog Zm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCA2ZGFmNGE4N2RlYy4uZmI3YTc1NDhhYTAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yNTM5LDExICsyNTM5LDExIEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQpCiAJCXsKIAkJCVBhZ2VTZXRBbGxW aXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJ1ZmZlckdldEJsb2Nr TnVtYmVyKGJ1ZmZlciksCi0JCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAot CQkJCQkJCQkJIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KEJ1 ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOLAorCQkJCQkJCSAgcmVsYXRpb24tPnJkX2xvY2F0b3IpOwogCQl9CiAKIAkJLyoKQEAg LTg4MTMsNTAgKzg4MTMsNiBAQCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxl 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 cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IDE4MjNmZWZmMjk4Li40 N2QyNDc5NDE1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hs 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 CmluZGV4IGI2NmZjNmMxN2U2Li41MzhkMDZmODQ0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTEyMzMsOCArMTIzMyw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkgKiBzbyB0aGVyZSBpcyBubyBwb2ludCBp biBvcHRpbWl6aW5nIGl0LgogCQkJICovCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJ CXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25vLCB2bWJ1ZmZlciwgbmV3X3ZtYml0cywK LQkJCQkJCQkJCSBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHlt YXBfc2V0KGJsb2Nrbm8sIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCSAgcGFyYW1zLT5y ZWxhdGlvbi0+cmRfbG9jYXRvcik7CiAJCX0KIAogCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBkMjJkMmE4NmVkMC4uOTNmMGYz OWM1ZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4ODksMTEgKzE4 ODksMTEgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCWxvZ19uZXdwYWdlX2J1ZmZlcihidWYsIHRy dWUpOwogCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0 X3ZtYml0cyhibGtubywKLQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJQklMSVRZ TUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCi0J CQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQo Ymxrbm8sCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCSAgdmFj cmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCiAJCQkvKgogCQkJICogRW1pdCBXQUwgZm9yIHNldHRp bmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAgcGFnZSBhbmQKQEAgLTI3NzEsOSArMjc3MSw5 IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkgKiBzZXQgUERfQUxMX1ZJU0lCTEUuCiAJCSAqLwog CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJs a25vLAotCQkJCQkJCQkgdm1idWZmZXIsIHZtZmxhZ3MsCi0JCQkJCQkJCSB2YWNyZWwtPnJlbC0+ cmRfbG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJICB2bWJ1ZmZl ciwgdm1mbGFncywKKwkJCQkJCSAgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCQljb25mbGlj dF94aWQgPSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKaW5kZXggZDE0NTg4ZTkyYWUuLjc5OTdlOTI2ODcyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsxNCw3IEBACiAgKgkJ dmlzaWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlz aWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Ig c2V0dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBj b3JyZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJ IC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5kIGxvZwotICoJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyAtIHNldCBiaXQocykgaW4gYSBwaW5uZWQgcGFnZQorICoJ CXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBw YWdlCiAgKgkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBiaXRzCiAg KgkJdmlzaWJpbGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBzZXQgaW4gdmlz aWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUgLQpAQCAtMjIw LDEwOSArMjE5LDYgQEAgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywg QnVmZmVyIHZtYnVmKQogCXJldHVybiBCdWZmZXJJc1ZhbGlkKHZtYnVmKSAmJiBCdWZmZXJHZXRC bG9ja051bWJlcih2bWJ1ZikgPT0gbWFwQmxvY2s7CiB9CiAKLS8qCi0gKgl2aXNpYmlsaXR5bWFw X3NldCAtIHNldCBiaXQocykgb24gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCi0gKgotICogcmVj cHRyIGlzIHRoZSBMU04gb2YgdGhlIFhMT0cgcmVjb3JkIHdlJ3JlIHJlcGxheWluZywgaWYgd2Un cmUgaW4gcmVjb3ZlcnksCi0gKiBvciBJbnZhbGlkWExvZ1JlY1B0ciBpbiBub3JtYWwgcnVubmlu Zy4gIFRoZSBWTSBwYWdlIExTTiBpcyBhZHZhbmNlZCB0byB0aGUKLSAqIG9uZSBwcm92aWRlZDsg aW4gbm9ybWFsIHJ1bm5pbmcsIHdlIGdlbmVyYXRlIGEgbmV3IFhMT0cgcmVjb3JkIGFuZCBzZXQg dGhlCi0gKiBwYWdlIExTTiB0byB0aGF0IHZhbHVlICh0aG91Z2ggdGhlIGhlYXAgcGFnZSdzIExT TiBtYXkgKm5vdCogYmUgdXBkYXRlZDsKLSAqIHNlZSBiZWxvdykuICBjdXRvZmZfeGlkIGlzIHRo ZSBsYXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcgbWFya2VkCi0gKiBhbGwtdmlzaWJsZTsg aXQgaXMgbmVlZGVkIGZvciBIb3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJhbnNhY3Rp b25JZAotICogaWYgdGhlIHBhZ2UgY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFsc28gYmUg c2V0IHRvIEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiB3aGVuIGEgcGFnZSB0aGF0IGlzIGFscmVh ZHkgYWxsLXZpc2libGUgaXMgYmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICogQ2FsbGVy IGlzIGV4cGVjdGVkIHRvIHNldCB0aGUgaGVhcCBwYWdlJ3MgUERfQUxMX1ZJU0lCTEUgYml0IGJl Zm9yZSBjYWxsaW5nCi0gKiB0aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3ZlcnksIGNhbGxl ciBzaG91bGQgYWxzbyBwYXNzIHRoZSBoZWFwCi0gKiBidWZmZXIuIFdoZW4gY2hlY2tzdW1zIGFy ZSBlbmFibGVkIGFuZCB3ZSdyZSBub3QgaW4gcmVjb3ZlcnksIHdlIG11c3QgYWRkCi0gKiB0aGUg aGVhcCBidWZmZXIgdG8gdGhlIFdBTCBjaGFpbiB0byBwcm90ZWN0IGl0IGZyb20gYmVpbmcgdG9y bi4KLSAqCi0gKiBZb3UgbXVzdCBwYXNzIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3Qg bWFwIHBhZ2UgdG8gdGhpcyBmdW5jdGlvbi4KLSAqIENhbGwgdmlzaWJpbGl0eW1hcF9waW4gZmly c3QgdG8gcGluIHRoZSByaWdodCBvbmUuIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbwotICogYW55 IEkvTy4KLSAqCi0gKiBSZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgcGFnZSdzIFZNIGJpdHMgYmVm b3JlIHNldHRpbmcgZmxhZ3MuCi0gKi8KLXVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldChSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCSAgWExvZ1Jl Y1B0ciByZWNwdHIsIEJ1ZmZlciB2bUJ1ZiwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJ CSAgdWludDggZmxhZ3MpCi17Ci0JQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01B UEJMT0NLKGhlYXBCbGspOwotCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURSho ZWFwQmxrKTsKLQl1aW50OAkJbWFwT2Zmc2V0ID0gSEVBUEJMS19UT19PRkZTRVQoaGVhcEJsayk7 Ci0JUGFnZQkJcGFnZTsKLQl1aW50OAkgICAqbWFwOwotCXVpbnQ4CQlzdGF0dXM7Ci0KLSNpZmRl ZiBUUkFDRV9WSVNJQklMSVRZTUFQCi0JZWxvZyhERUJVRzEsICJ2bV9zZXQgZmxhZ3MgMHglMDJY IGZvciAlcyAlZCIsCi0JCSBmbGFncywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVh cEJsayk7Ci0jZW5kaWYKLQotCUFzc2VydChJblJlY292ZXJ5IHx8ICFYTG9nUmVjUHRySXNWYWxp ZChyZWNwdHIpKTsKLQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBQYWdlSXNBbGxWaXNpYmxlKEJ1ZmZl ckdldFBhZ2UoaGVhcEJ1ZikpKTsKLQlBc3NlcnQoKGZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJ RF9CSVRTKSA9PSBmbGFncyk7Ci0KLQkvKiBNdXN0IG5ldmVyIHNldCBhbGxfZnJvemVuIGJpdCB3 aXRob3V0IGFsc28gc2V0dGluZyBhbGxfdmlzaWJsZSBiaXQgKi8KLQlBc3NlcnQoZmxhZ3MgIT0g VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUg cmlnaHQgaGVhcCBwYWdlIHBpbm5lZCwgaWYgcHJlc2VudCAqLwotCWlmIChCdWZmZXJJc1ZhbGlk KGhlYXBCdWYpICYmIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGhlYXBCdWYpICE9IGhlYXBCbGspCi0J CWVsb2coRVJST1IsICJ3cm9uZyBoZWFwIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9z ZXQiKTsKLQotCUFzc2VydCghQnVmZmVySXNWYWxpZChoZWFwQnVmKSB8fAotCQkgICBCdWZmZXJJ c0xvY2tlZEJ5TWVJbk1vZGUoaGVhcEJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKSk7Ci0KLQkv KiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IFZNIHBhZ2UgcGlubmVkICovCi0JaWYgKCFC dWZmZXJJc1ZhbGlkKHZtQnVmKSB8fCBCdWZmZXJHZXRCbG9ja051bWJlcih2bUJ1ZikgIT0gbWFw QmxvY2spCi0JCWVsb2coRVJST1IsICJ3cm9uZyBWTSBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxp dHltYXBfc2V0Iik7Ci0KLQlwYWdlID0gQnVmZmVyR2V0UGFnZSh2bUJ1Zik7Ci0JbWFwID0gKHVp bnQ4ICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKTsKLQlMb2NrQnVmZmVyKHZtQnVmLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpOwotCi0Jc3RhdHVzID0gKG1hcFttYXBCeXRlXSA+PiBtYXBPZmZzZXQp ICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOwotCWlmIChmbGFncyAhPSBzdGF0dXMpCi0Jewot CQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKLQotCQltYXBbbWFwQnl0ZV0gfD0gKGZsYWdzIDw8IG1h cE9mZnNldCk7Ci0JCU1hcmtCdWZmZXJEaXJ0eSh2bUJ1Zik7Ci0KLQkJaWYgKFJlbGF0aW9uTmVl ZHNXQUwocmVsKSkKLQkJewotCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChyZWNwdHIpKQotCQkJ ewotCQkJCUFzc2VydCghSW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlzaWJs ZShyZWwsIGhlYXBCdWYsIHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7Ci0KLQkJCQkvKgotCQkJ CSAqIElmIGRhdGEgY2hlY2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxfbG9nX2hpbnRzPW9uKSwg d2UKLQkJCQkgKiBuZWVkIHRvIHByb3RlY3QgdGhlIGhlYXAgcGFnZSBmcm9tIGJlaW5nIHRvcm4u Ci0JCQkJICoKLQkJCQkgKiBJZiBub3QsIHRoZW4gd2UgbXVzdCAqbm90KiB1cGRhdGUgdGhlIGhl YXAgcGFnZSdzIExTTi4gSW4KLQkJCQkgKiB0aGlzIGNhc2UsIHRoZSBGUEkgZm9yIHRoZSBoZWFw IHBhZ2Ugd2FzIG9taXR0ZWQgZnJvbSB0aGUKLQkJCQkgKiBXQUwgcmVjb3JkIGluc2VydGVkIGFi b3ZlLCBzbyBpdCB3b3VsZCBiZSBpbmNvcnJlY3QgdG8KLQkJCQkgKiB1cGRhdGUgdGhlIGhlYXAg cGFnZSdzIExTTi4KLQkJCQkgKi8KLQkJCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJ CXsKLQkJCQkJUGFnZQkJaGVhcFBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBCdWYpOwotCi0JCQkJ CVBhZ2VTZXRMU04oaGVhcFBhZ2UsIHJlY3B0cik7Ci0JCQkJfQotCQkJfQotCQkJUGFnZVNldExT TihwYWdlLCByZWNwdHIpOwotCQl9Ci0KLQkJRU5EX0NSSVRfU0VDVElPTigpOwotCX0KLQotCUxv Y2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JcmV0dXJuIHN0YXR1czsKLX0K LQogLyoKICAqIFNldCBWTSAodmlzaWJpbGl0eSBtYXApIGZsYWdzIGluIHRoZSBWTSBibG9jayBp biB2bUJ1Zi4KICAqCkBAIC0zNDQsOSArMjQwLDkgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKICAqIHJsb2NhdG9y IGlzIHVzZWQgb25seSBmb3IgZGVidWdnaW5nIG1lc3NhZ2VzLgogICovCiB1aW50OAotdmlzaWJp bGl0eW1hcF9zZXRfdm1iaXRzKEJsb2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkgQnVmZmVyIHZt QnVmLCB1aW50OCBmbGFncywKLQkJCQkJCSBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikK K3Zpc2liaWxpdHltYXBfc2V0KEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJICBCdWZmZXIgdm1C dWYsIHVpbnQ4IGZsYWdzLAorCQkJCSAgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpCiB7 CiAJQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NLKGhlYXBCbGspOwog CXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxrKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggY2EyNmQxZjBlZDEuLjA4NDYxZmRmNTkz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMzQ5LDEzICszNDks NiBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJCX0KIAkJfQogCX0KLQllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfVklTSUJMRSkKLQl7 Ci0JCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIHJlYzsKLQot CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOiAldSwgZmxh Z3M6IDB4JTAyWCIsCi0JCQkJCQkgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB4bHJl Yy0+ZmxhZ3MpOwotCX0KIAllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfTVVMVElfSU5TRVJU KQogCXsKIAkJeGxfaGVhcF9tdWx0aV9pbnNlcnQgKnhscmVjID0gKHhsX2hlYXBfbXVsdGlfaW5z ZXJ0ICopIHJlYzsKQEAgLTQ2MSw5ICs0NTQsNiBAQCBoZWFwMl9pZGVudGlmeSh1aW50OCBpbmZv KQogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6CiAJCQlpZCA9ICJQUlVO RV9WQUNVVU1fQ0xFQU5VUCI7CiAJCQlicmVhazsKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6 Ci0JCQlpZCA9ICJWSVNJQkxFIjsKLQkJCWJyZWFrOwogCQljYXNlIFhMT0dfSEVBUDJfTVVMVElf SU5TRVJUOgogCQkJaWQgPSAiTVVMVElfSU5TRVJUIjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggNWUxNWNiMTgyNWUuLmMwY2FjN2VhMWMz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTQ1NCw3ICs0 NTQsNiBAQCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVj b3JkQnVmZmVyICpidWYpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1M6CiAJCWNh c2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTjoKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5F X1ZBQ1VVTV9DTEVBTlVQOgotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKIAkJY2FzZSBYTE9H X0hFQVAyX0xPQ0tfVVBEQVRFRDoKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jCmluZGV4IGZjNDVkNzJjNzliLi4zNjU1MzU4ZWQ2YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYwpAQCAtNDc1LDEyICs0NzUsMTIgQEAgUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK IAkgKiBJZiB3ZSBnZXQgcGFzc2VkIEludmFsaWRUcmFuc2FjdGlvbklkIHRoZW4gd2UgZG8gbm90 aGluZyAobm8gY29uZmxpY3QpLgogCSAqCiAJICogVGhpcyBjYW4gaGFwcGVuIHdoZW4gcmVwbGF5 aW5nIGFscmVhZHktYXBwbGllZCBXQUwgcmVjb3JkcyBhZnRlciBhCi0JICogc3RhbmRieSBjcmFz aCBvciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhbiBYTE9HX0hFQVAyX1ZJU0lCTEUKLQkg KiByZWNvcmQgdGhhdCBtYXJrcyBhcyBmcm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJlYWR5IGFs bC12aXNpYmxlLiAgSXQncwotCSAqIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3JkcyBnZW5l cmF0ZWQgZHVyaW5nIGluZGV4IGRlbGV0aW9uCi0JICogKG9yaWdpbmFsIGV4ZWN1dGlvbiBvZiB0 aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkgY29uZmxpY3QKLQkgKiB3aGlj aCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFrZSBwbGFj ZSBiZWZvcmUKLQkgKiByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYpLgorCSAq IHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcgYSByZWNvcmQgdGhh dCBtYXJrcyBhcworCSAqIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgbWFya2VkIGFs bC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5CisJICogbWFwLiAgSXQncyBhbHNvIHF1aXRlIGNv bW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleAorCSAqIGRlbGV0aW9uIChv cmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBhIHJlY292 ZXJ5CisJICogY29uZmxpY3Qgd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0aW9uIG9w ZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UKKwkgKiBiZWZvcmUgcmVwbGF5IG9mIHRoZSBkZWxldGlv biByZWNvcmQgaXRzZWxmKS4KIAkgKi8KIAlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uKSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApp bmRleCAxNmMyYjJlM2M5Yy4uYjI3ZmNkZmIzNDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o CkBAIC02MCw3ICs2MCw2IEBACiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfT05fQUNDRVNTCQkw eDEwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU4JMHgyMAogI2RlZmluZSBY TE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQCTB4MzAKLSNkZWZpbmUgWExPR19IRUFQMl9W SVNJQkxFCQkweDQwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUIDB4NTAKICNkZWZp bmUgWExPR19IRUFQMl9MT0NLX1VQREFURUQgMHg2MAogI2RlZmluZSBYTE9HX0hFQVAyX05FV19D SUQJCTB4NzAKQEAgLTQ0MywyMCArNDQyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9pbnBs YWNlCiAKICNkZWZpbmUgTWluU2l6ZU9mSGVhcElucGxhY2UJKG9mZnNldG9mKHhsX2hlYXBfaW5w bGFjZSwgbm1zZ3MpICsgc2l6ZW9mKGludCkpCiAKLS8qCi0gKiBUaGlzIGlzIHdoYXQgd2UgbmVl ZCB0byBrbm93IGFib3V0IHNldHRpbmcgYSB2aXNpYmlsaXR5IG1hcCBiaXQKLSAqCi0gKiBCYWNr dXAgYmxrIDA6IHZpc2liaWxpdHkgbWFwIGJ1ZmZlcgotICogQmFja3VwIGJsayAxOiBoZWFwIGJ1 ZmZlcgotICovCi10eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3Zpc2libGUKLXsKLQlUcmFuc2FjdGlv bklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXVpbnQ4CQlmbGFnczsKLX0geGxfaGVhcF92 aXNpYmxlOwotCi0jZGVmaW5lIFNpemVPZkhlYXBWaXNpYmxlIChvZmZzZXRvZih4bF9oZWFwX3Zp c2libGUsIGZsYWdzKSArIHNpemVvZih1aW50OCkpCi0KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBf bmV3X2NpZAogewogCS8qCkBAIC01MDAsMTEgKzQ4NSw2IEBAIGV4dGVybiB2b2lkIGhlYXAyX2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiBjb25z dCBjaGFyICpoZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKTsKIGV4dGVybiB2b2lkIGhlYXBfeGxv Z19sb2dpY2FsX3Jld3JpdGUoWExvZ1JlYWRlclN0YXRlICpyKTsKIAotZXh0ZXJuIFhMb2dSZWNQ dHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJ CQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwKLQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJICAgdWludDggdm1mbGFncyk7Ci0KIC8qIGlu IGhlYXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBmcm9udGVuZC9iYWNrZW5k IGNvZGUgKi8KIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJl ZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJCQkJICAgaW50ICpucGxh bnMsIHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5o CmluZGV4IGM2ZmEzN2JlOTY4Li4wNWJhNjc4NmI0NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcC5oCkBAIC0xNSw3ICsxNSw2IEBACiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfSAogCiAjaW5j bHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3hsb2dk ZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9ibG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVm LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWxmaWxlbG9jYXRvci5oIgpAQCAtMzIsMTUgKzMxLDkg QEAgZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9jbGVhcihSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGhlYXBCbGssCiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX3BpbihSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGhlYXBCbGssCiAJCQkJCQkJICBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiBi b29sIHZpc2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1 Zik7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLAotCQkJCQkJ CSAgIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCQkJCSAgIFhMb2dS ZWNQdHIgcmVjcHRyLAotCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwKLQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkIGN1dG9mZl94aWQsCi0JCQkJCQkJICAgdWludDggZmxhZ3MpOwotZXh0ZXJuIHVpbnQ4 IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJlciBoZWFwQmxrLAotCQkJCQkJCQkJ ICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAotCQkJCQkJCQkJICBjb25zdCBSZWxGaWxlTG9j YXRvciBybG9jYXRvcik7CitleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoQmxvY2tOdW1i ZXIgaGVhcEJsaywKKwkJCQkJCQkgICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAorCQkJCQkJ CSAgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKTsKIGV4dGVybiB1aW50OCB2aXNpYmls aXR5bWFwX2dldF9zdGF0dXMoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZm ZXIgKnZtYnVmKTsKIGV4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfY291bnQoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciAqYWxsX3Zpc2libGUsIEJsb2NrTnVtYmVyICphbGxfZnJvemVuKTsKIGV4 dGVybiBCbG9ja051bWJlciB2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUoUmVsYXRpb24g cmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAppbmRleCA1YWQ1YzAyMDg3 Ny4uZTAxYmNlNGM5OWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5 bWFwZGVmcy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCkBA IC0yMSwxNCArMjEsNSBAQAogI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4JMHgwMgog I2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMJMHgwMwkvKiBPUiBvZiBhbGwgdmFsaWQg dmlzaWJpbGl0eW1hcAogCQkJCQkJCQkJCQkgKiBmbGFncyBiaXRzICovCi0vKgotICogVG8gZGV0 ZWN0IHJlY292ZXJ5IGNvbmZsaWN0cyBkdXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBhIHN0YW5k YnksIHdlIG5lZWQKLSAqIHRvIGtub3cgaWYgYSB0YWJsZSBpcyBhIHVzZXIgY2F0YWxvZyB0YWJs ZS4gRm9yIHRoYXQgd2UgYWRkIGFuIGFkZGl0aW9uYWwKLSAqIGJpdCBpbnRvIHhsX2hlYXBfdmlz aWJsZS5mbGFncywgaW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlLgotICoKLSAqIE5COiBWSVNJQklM SVRZTUFQX1hMT0dfKiBtYXkgbm90IGJlIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLgot ICovCi0jZGVmaW5lIFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTAkweDA0Ci0jZGVmaW5l IFZJU0lCSUxJVFlNQVBfWExPR19WQUxJRF9CSVRTCShWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMg fCBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwpCiAKICNlbmRpZgkJCQkJCQkvKiBWSVNJ QklMSVRZTUFQREVGU19IICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDA0ODQ1ZDVl NjgwLi42NTA1NjI4MTIwYyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTQzMzEsNyAr NDMzMSw2IEBAIHhsX2hlYXBfcHJ1bmUKIHhsX2hlYXBfcmV3cml0ZV9tYXBwaW5nCiB4bF9oZWFw X3RydW5jYXRlCiB4bF9oZWFwX3VwZGF0ZQoteGxfaGVhcF92aXNpYmxlCiB4bF9pbnZhbGlkX3Bh Z2UKIHhsX2ludmFsaWRfcGFnZV9rZXkKIHhsX2ludmFsaWRhdGlvbnMKLS0gCjIuNDMuMAoK --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Disposition: attachment; filename="v29-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd1xvq8 RnJvbSBlZWU4NTQ1ODc0ZDg1NTNjYzc0MDQyZmQ2ZTMxMTBjYzM4YTcxYmU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDEzOjU3OjE2IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjkgMDkvMTVdIFNpbXBsaWZ5IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSB2 aXNpYmlsaXR5CiBjaGVjawoKaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgZG9lc24n dCBjYXJlIGFib3V0IHRoZSBkaXN0aW5jdGlvbgpiZXR3ZWVuIEhFQVBUVVBMRV9SRUNFTlRMWV9E RUFEIGFuZCBIRUFQVFVQTEVfREVBRCB0dXBsZXMgLS0gYW55IHR1cGxlCnRoYXQgaXMgbm90IEhF QVBUVVBMRV9MSVZFIG1lYW5zIHRoZSBwYWdlIGlzIG5vdCBhbGwtdmlzaWJsZSBhbmQgY2F1c2Vz CnVzIHRvIHJldHVybiBmYWxzZS4KClRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgpLCB3aGljaAppbmNsdWRlcyBhbiBleHRyYSBzdGVwIHRv IGRpc3Rpbmd1aXNoIGJldHdlZW4gZGVhZCBhbmQgcmVjZW50bHkgZGVhZAp0dXBsZXMgdXNpbmcg T2xkZXN0WG1pbi4gUmVwbGFjZSBpdCB3aXRoIHRoZSBtb3JlIG1pbmltYWwKSGVhcFR1cGxlU2F0 aXNmaWVzVmFjdXVtSG9yaXpvbigpLgoKVGhpcyBoYXMgdGhlIGFkZGVkIGJlbmVmaXQgb2YgbWFr aW5nIGl0IGVhc2llciB0byByZXBsYWNlIHVzZXMgb2YKT2xkZXN0WG1pbiBpbiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoKSBpbiB0aGUgZnV0dXJlLgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDkgKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgNyBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCA5M2YwZjM5YzVmMC4uZmYyOTdiMGIwMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKQEAgLTM1MzcsNiArMzUzNyw3IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJewogCQlJdGVtSWQJCWl0ZW1p ZDsKIAkJSGVhcFR1cGxlRGF0YSB0dXBsZTsKKwkJVHJhbnNhY3Rpb25JZCBkZWFkX2FmdGVyID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkJLyoKIAkJICogU2V0IHRoZSBvZmZzZXQgbnVtYmVy IHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgaXQgYWxvbmcgd2l0aCBhbnkKQEAgLTM1NzYsMTIgKzM1 NzcsMTQgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKIAogCQkvKiBWaXNpYmlsaXR5IGNoZWNrcyBtYXkgZG8gSU8gb3IgYWxsb2NhdGUg bWVtb3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlvbkNvdW50ID09IDApOwotCQlzd2l0Y2ggKEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIE9sZGVzdFhtaW4sIGJ1ZikpCisJCXN3aXRj aCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbigmdHVwbGUsIGJ1ZiwgJmRlYWRfYWZ0 ZXIpKQogCQl7CiAJCQljYXNlIEhFQVBUVVBMRV9MSVZFOgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rp b25JZCB4bWluOwogCisJCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRl cikpOworCiAJCQkJCS8qIENoZWNrIGNvbW1lbnRzIGluIGxhenlfc2Nhbl9wcnVuZS4gKi8KIAkJ CQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKHR1cGxlLnRfZGF0YSkpCiAJCQkJ CXsKQEAgLTM2MTQsOCArMzYxNywxMCBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUo UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCX0KIAkJCQlicmVhazsKIAotCQkJY2FzZSBI RUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQ6CisJCQkJQXNz ZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIpKTsKKwkJCQkvKiBGQUxMVEhST1VH SCAqLworCQkJY2FzZSBIRUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVBUFRVUExFX0lOU0VSVF9J Tl9QUk9HUkVTUzoKIAkJCWNhc2UgSEVBUFRVUExFX0RFTEVURV9JTl9QUk9HUkVTUzoKIAkJCQl7 Ci0tIAoyLjQzLjAKCg== --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="UTF-8"; name="v29-0010-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v29-0010-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd20ji9 RnJvbSBjYTAyNjY5ODAzZjlhZjAxZTRlN2UzNzY3YTNlMWEwOGQ5MzFiZDBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDE2OjUxOjA1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjkgMTAvMTVdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l 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 YXBhbV92aXNpYmlsaXR5LmMKaW5kZXggYmY4OTljMmQyYzYuLjdkOWJkMjhkOGYwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKQEAgLTEwNTMsNiArMTA1 MywyOCBAQCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0 aW9uSWQgT2xkZXN0WG1pbiwKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogV3JhcHBlciBhcm91 bmQgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgZm9yIHVzZSB3aGVuIGV4YW1pbmluZyBs aXZlCisgKiB0dXBsZXMuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gWElEIG1heSBiZSBjb25z aWRlcmVkIHJ1bm5pbmcgYnkgYXQgbGVhc3QKKyAqIG9uZSBzbmFwc2hvdC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGFsb25lIGlzIGluc3VmZmljaWVudCB0byBkZXRlcm1pbmUgdHVwbGUgdmlzaWJp bGl0eTsgY2FsbGVycworICogbXVzdCBhbHNvIGNvbnNpZGVyIHRoZSBYSUQncyBjb21taXQgc3Rh dHVzLiBJdHMgcHVycG9zZSBpcyBwdXJlbHkgc2VtYW50aWM6CisgKiB3aGVuIGFwcGxpZWQgdG8g bGl2ZSB0dXBsZXMsIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIGlzIGNoZWNraW5nCisg KiB3aGV0aGVyIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gaXMgc3RpbGwgY29uc2lkZXJlZCBy dW5uaW5nLCBub3Qgd2hldGhlcgorICogdGhlIHR1cGxlIGlzIHJlbW92YWJsZS4gTGl2ZSB0dXBs ZXMgYXJlLCBieSBkZWZpbml0aW9uLCBub3QgcmVtb3ZhYmxlLCBidXQKKyAqIHRoZSBzbmFwc2hv dCBjcml0ZXJpYSBmb3Ig4oCcdHJhbnNhY3Rpb24gc3RpbGwgcnVubmluZ+KAnSBhcmUgaWRlbnRp Y2FsIHRvCisgKiB0aG9zZSB1c2VkIGZvciByZW1vdmFsIFhJRHMuCisgKgorICogU2VlIHRoZSBj b21tZW50IGFib3ZlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVtGdWxsXVhpZCgpIGZvciBkZXRh aWxzIG9uIHRoZQorICogcmVxdWlyZWQgcHJlY29uZGl0aW9ucyBmb3IgY2FsbGluZyB0aGlzIGZ1 bmN0aW9uLgorICovCitib29sCitHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJcmV0dXJuICFHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVYaWQoc3RhdGUsIHhpZCk7Cit9CisKIC8qCiAgKiBXb3JrIGhvcnNlIGZv ciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0gYW5kIHNpbWlsYXIgcm91dGluZXMuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA1MzhkMDZmODQ0OS4uNTRlNjBlMmM2MzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC00NjEsMTEgKzQ2MSwxMiBAQCBw cnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCS8qCiAJICog VGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29t bWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhp cyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12 aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAqIG5v dCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMg aXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3Ig ZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICogb24gdGhlIHBhZ2Ugb2xk ZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAqIEds b2JhbFZpc1N0YXRlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlIGlmIHRoZSBw YWdlIGlzCisJICogYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJl ZCB0aGF0IGlzIG5vdCB2aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRh aW5lZC4gQXMgbG9uZyBhcyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4gYmUKKwkgKiB1c2VkIHRv IGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHVwZGF0aW5nIHRo ZSBWTQorCSAqIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkg Ki8KIAlwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIH0KQEAgLTEwMDEsMTQgKzEwMDIsMTQgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5l U3RhdGUgKnByc3RhdGUsCiAgKi8KIHN0YXRpYyBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKKwkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxf ZnJvemVuLAogCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJ CQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCiAJcmV0dXJuIGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4s CisJCQkJCQkJCQkJICB2aXN0ZXN0LAogCQkJCQkJCQkJCSAgTlVMTCwgMCwKIAkJCQkJCQkJCQkg IGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCkBAIC0xMDk1 LDYgKzEwOTYsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAlwcnVuZV9mcmVlemVfcGxhbihSZWxhdGlvbkdldFJlbGlkKHBhcmFtcy0+ cmVsYXRpb24pLAogCQkJCQkgIGJ1ZmZlciwgJnByc3RhdGUsIG9mZl9sb2MpOwogCisJLyoKKwkg KiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UsIGlmIHRo ZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nc3QgdGhlbSBtYXkgYmUgY29uc2lkZXJlZCBydW5uaW5n IGJ5IGFueSBzbmFwc2hvdCwgdGhlIHBhZ2UgY2Fubm90CisJICogYmUgYWxsLXZpc2libGUuCisJ ICovCisJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFs KHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgorCQlHbG9iYWxWaXNUZXN0WGlkTWF5 YmVSdW5uaW5nKHByc3RhdGUudmlzdGVzdCwgcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQp KQorCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisK IAkvKgogCSAqIElmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgY2FsbGluZyBoZWFwX3BydW5lX3Nh dGlzZmllc192YWN1dW0oKSB3aGlsZQogCSAqIGNoZWNraW5nIHR1cGxlIHZpc2liaWxpdHkgaW5m b3JtYXRpb24gaW4gcHJ1bmVfZnJlZXplX3BsYW4oKSBtYXkgaGF2ZQpAQCAtMTI3NiwxMCArMTI4 Nyw5IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJh bXMsCiAJCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47CiAKIAkJQXNzZXJ0KHByc3RhdGUubHBkZWFk X2l0ZW1zID09IDApOwotCQlBc3NlcnQocHJzdGF0ZS5jdXRvZmZzKTsKIAogCQlBc3NlcnQoaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJ CQlwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW4sCisJCQkJCQkJCQkJcHJzdGF0ZS52aXN0ZXN0 LAogCQkJCQkJCQkJCSZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYs IG9mZl9sb2MpKTsKIApAQCAtMTgwMCwyOCArMTgxMCwxNSBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29t bWl0dGVkLiAgQnV0IGlzIGl0IG9sZCBlbm91Z2gKLQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMg aXQgYXMgY29tbWl0dGVkPyAgQSBGcm96ZW5UcmFuc2FjdGlvbklkCi0JCQkJICogaXMgc2VlbiBh cyBjb21taXR0ZWQgdG8gZXZlcnlvbmUuICBPdGhlcndpc2UsIHdlIGNoZWNrIGlmCi0JCQkJICog dGhlcmUgaXMgYSBzbmFwc2hvdCB0aGF0IGNvbnNpZGVycyB0aGlzIHhpZCB0byBzdGlsbCBiZQot CQkJCSAqIHJ1bm5pbmcsIGFuZCBpZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlIHBhZ2UgYWxs LXZpc2libGUuCisJCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQg d2UgZG9uJ3Qga25vdyBpZiBpdAorCQkJCSAqIGlzIG9sZCBlbm91Z2ggdGhhdCBldmVyeW9uZSBz ZWVzIGl0IGFzIGNvbW1pdHRlZC4gTGF0ZXIsCisJCQkJICogYWZ0ZXIgcHJvY2Vzc2luZyBhbGwg dGhlIHR1cGxlcyBvbiB0aGUgcGFnZSwgd2UnbGwgY2hlY2sgaWYKKwkJCQkgKiB0aGVyZSBpcyBh bnkgc25hcHNob3QgdGhhdCBzdGlsbCBjb25zaWRlciB0aGUgbmV3ZXN0IHhpZCBvbgorCQkJCSAq IHRoZSBwYWdlIHRvIGJlIHJ1bm5pbmcuIElmIHNvLCB3ZSBkb24ndCBjb25zaWRlciB0aGUgcGFn ZQorCQkJCSAqIGFsbC12aXNpYmxlLgogCQkJCSAqLwogCQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFk ZXJHZXRYbWluKGh0dXApOwogCi0JCQkJLyoKLQkJCQkgKiBGb3Igbm93IGFsd2F5cyB1c2UgcHJz dGF0ZS0+Y3V0b2ZmcyBmb3IgdGhpcyB0ZXN0LCBiZWNhdXNlCi0JCQkJICogd2Ugb25seSB1cGRh dGUgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIHdoZW4gZnJlZXppbmcKLQkJCQkgKiBp cyByZXF1ZXN0ZWQuIFdlIGNvdWxkIHVzZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQKLQkJ CQkgKiBpbnN0ZWFkLCBpZiBhIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRvIHNldCB0aGUg Vk0gYml0LgotCQkJCSAqLwotCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKLQkJCQlpZiAo IVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWlu KSkKLQkJCQl7Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCQkJCXByc3Rh dGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCiAJCQkJLyogVHJh Y2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KIAkJCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3Mo eG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgogCQkJCQlUcmFuc2FjdGlv bklkSXNOb3JtYWwoeG1pbikpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXgg ZmYyOTdiMGIwMjUuLjk0Zjg1NDZiZTk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCkBAIC0yNzI1LDcgKzI3MjUsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0 ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkgKiBkb25lIG91 dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24uCiAJICovCiAJaWYgKGhlYXBfcGFnZV93b3VsZF9i ZV9hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAotCQkJCQkJCQkJICAgdmFjcmVsLT5j dXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICB2YWNyZWwtPnZpc3Rlc3QsCiAJCQkJCQkJ CQkgICBkZWFkb2Zmc2V0cywgbnVtX29mZnNldHMsCiAJCQkJCQkJCQkgICAmYWxsX2Zyb3plbiwg JnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSkpCkBA IC0zNDg2LDcgKzM0ODYsNyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVs KQogICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlIG90aGVyIHRoYW4g dGhlIHByb3ZpZGVkCiAgKiBkZWFkb2Zmc2V0cyBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICoKLSAq IE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KKyAqIHZpc3Rlc3Qg aXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KICAqCiAgKiBPdXRwdXQgcGFyYW1ldGVy czoKICAqCkBAIC0zNTAyLDcgKzM1MDIsNyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0 ZSAqdmFjcmVsKQogICovCiBib29sCiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVs YXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1p biwKKwkJCQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkgICBPZmZzZXRO dW1iZXIgKmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCiAJCQkJCQkJ ICAgYm9vbCAqYWxsX2Zyb3plbiwKQEAgLTM1ODUsNyArMzU4NSw3IEBAIGhlYXBfcGFnZV93b3Vs ZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAKIAkJCQkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2FmdGVyKSk7CiAKLQkJCQkJLyogQ2hlY2sgY29t bWVudHMgaW4gbGF6eV9zY2FuX3BydW5lLiAqLworCQkJCQkvKiBDaGVjayBoZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfbm9ybWFsIGNvbW1lbnRzICovCiAJCQkJCWlmICghSGVhcFR1cGxl SGVhZGVyWG1pbkNvbW1pdHRlZCh0dXBsZS50X2RhdGEpKQogCQkJCQl7CiAJCQkJCQlhbGxfdmlz aWJsZSA9IGZhbHNlOwpAQCAtMzU5NCwxNiArMzU5NCwxNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVf YWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQl9CiAKIAkJCQkJLyoK LQkJCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQgaXMgaXQgb2xk IGVub3VnaAotCQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMgaXQgYXMgY29tbWl0dGVkPworCQkJ CQkgKiBUaGUgaW5zZXJ0ZXIgZGVmaW5pdGVseSBjb21taXR0ZWQuIEJ1dCB3ZSBkb24ndCBrbm93 IGlmCisJCQkJCSAqIGl0IGlzIG9sZCBlbm91Z2ggdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNv bW1pdHRlZC4KKwkJCQkJICogRG9uJ3QgY2hlY2sgdGhhdCBub3cuCisJCQkJCSAqCisJCQkJCSAq IElmIHdlIHNjYW4gYWxsIHR1cGxlcyB3aXRob3V0IGZpbmRpbmcgb25lIHRoYXQgcHJldmVudHMK KwkJCQkJICogdGhlIHBhZ2UgZnJvbSBiZWluZyBhbGwtdmlzaWJsZSwgd2UgdGhlbiBjaGVjayB3 aGV0aGVyCisJCQkJCSAqIGFueSBzbmFwc2hvdCBzdGlsbCBjb25zaWRlcnMgdGhlIG5ld2VzdCBY SUQgb24gdGhlIHBhZ2UKKwkJCQkJICogdG8gYmUgcnVubmluZy4gSW4gdGhhdCBjYXNlLCB0aGUg cGFnZSBpcyBub3QgY29uc2lkZXJlZAorCQkJCQkgKiBhbGwtdmlzaWJsZS4KIAkJCQkJICovCiAJ CQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7Ci0JCQkJCWlm ICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIE9sZGVzdFhtaW4pKQotCQkJCQl7Ci0JCQkJ CQlhbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJ CWJyZWFrOwotCQkJCQl9CiAKIAkJCQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8K IAkJCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKHhtaW4sICp2aXNpYmlsaXR5X2N1dG9mZl94 aWQpICYmCkBAIC0zNjM0LDYgKzM2MzUsMTkgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNp YmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJfQogCX0JCQkJCQkJLyogc2NhbiBhbG9u ZyBwYWdlICovCiAKKwkvKgorCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxl cyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCisJICogYW1vbmcgdGhlbSBtYXkgc3Rp bGwgYmUgY29uc2lkZXJlZCBydW5uaW5nIGJ5IGFueSBzbmFwc2hvdCwgdGhlIHBhZ2UKKwkgKiBj YW5ub3QgYmUgYWxsLXZpc2libGUuCisJICovCisJaWYgKGFsbF92aXNpYmxlICYmCisJCVRyYW5z YWN0aW9uSWRJc05vcm1hbCgqdmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgorCQlHbG9iYWxWaXNU ZXN0WGlkTWF5YmVSdW5uaW5nKHZpc3Rlc3QsICp2aXNpYmlsaXR5X2N1dG9mZl94aWQpKQorCXsK KwkJYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CisKIAkv KiBDbGVhciB0aGUgb2Zmc2V0IGluZm9ybWF0aW9uIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzZWQgdGhl IGdpdmVuIHBhZ2UuICovCiAJKmxvZ2dpbmdfb2ZmbnVtID0gSW52YWxpZE9mZnNldE51bWJlcjsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oCmluZGV4IGJlYzJmODQwMTAyLi4xNjI1YjEwNzU3NSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaApAQCAtNDM5LDcgKzQzOSw3IEBAIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2Fu ZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiBleHRlcm4gdm9pZCBo ZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyBw YXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CiBleHRlcm4gYm9vbCBoZWFw X3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJ CQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkgICBHbG9iYWxW aXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRz LAogCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCiAJCQkJCQkJCQkJICAgYm9vbCAqYWxs X2Zyb3plbiwKQEAgLTQ1Myw2ICs0NTMsOCBAQCBleHRlcm4gVE1fUmVzdWx0IEhlYXBUdXBsZVNh dGlzZmllc1VwZGF0ZShIZWFwVHVwbGUgaHR1cCwgQ29tbWFuZElkIGN1cmNpZCwKIAkJCQkJCQkJ CQkgIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmll c1ZhY3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCQkJCQkJ CQkJCQlCdWZmZXIgYnVmZmVyKTsKKworZXh0ZXJuIGJvb2wgR2xvYmFsVmlzVGVzdFhpZE1heWJl UnVubmluZyhHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVy biBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1Ib3Jpem9uKEhlYXBUdXBsZSBo dHVwLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqZGVhZF9h ZnRlcik7CiBleHRlcm4gdm9pZCBIZWFwVHVwbGVTZXRIaW50Qml0cyhIZWFwVHVwbGVIZWFkZXIg dHVwbGUsIEJ1ZmZlciBidWZmZXIsCi0tIAoyLjQzLjAKCg== --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="UTF-8"; name="v29-0011-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v29-0011-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd241110 RnJvbSAwOTc4NThhMGUzMWJjMzA3MTY5YWVlOGY1NGMxYzY5M2ZiOGNkYzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjkgMTEvMTVdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCgpSZXZpZXdlZC1i eTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyB8IDE1ICsrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwppbmRleCA1NGU2MGUyYzYzNS4uOGRmODE4MzMxNzkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNjc1LDggKzE2NzUsMTMgQEAgaGVhcF9wcnVuZV9yZWNvcmRf ZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCS8qCiAJICog RGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBsYXRlcgogCSAqIGR1cmluZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hv dWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZQotCSAqIHBhZ2UuCisJICogcGFnZS4gSWYgd2Ug d29uJ3QgYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3Vn aC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0K IAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRl YWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE5MzYsOCAr MTk0MSwxNCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3Qg dW5zZXQgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdW50aWwgbGF0ZXIsIGF0IHRoZQogCSAq IGVuZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVz IHRvIGF0dGVtcHQgdG8KIAkgKiBmcmVlemUgdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxv bmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nCi0JICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2ls bCBiZSBjb3JyZWN0LiBJZiB3ZSB3b24ndCBhdHRlbXB0IGZyZWV6aW5nLAorCSAqIHRob3VnaCwg anVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3cuCiAJICovCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0 X2ZyZWV6ZSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUt PmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0IGZv ciB2YWN1dW0gKi8KIAlwcnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRlLT5scGRlYWRfaXRlbXMr K10gPSBvZmZudW07Ci0tIAoyLjQzLjAKCg== --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0012-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v29-0012-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd271011 RnJvbSBlYTRmMGQ1YzM0YzMwM2UzY2Y5OWY5ZTI0MGU1YzBhMWRiMDg4Y2YwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOSAxMi8xNV0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgIHwgNCArKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNy Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgIHwgNiArKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgMTIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDc5N2Q4YjFj YTFjLi41YjI5OWVmODFhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC05MTYsNiArOTE2 LDEwIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCQli cmVhazsKIAkJCX0KIAorCQkJLyogSWYgaXQgaGFzIGEgcm93bWFyaywgdGhlIHJlbGF0aW9uIGlz IG1vZGlmaWVkICovCisJCQllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVt YmVyKGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQlyYy0+cnRpKTsK KwogCQkJLyogQ2hlY2sgdGhhdCByZWxhdGlvbiBpcyBhIGxlZ2FsIHRhcmdldCBmb3IgbWFya2lu ZyAqLwogCQkJaWYgKHJlbGF0aW9uKQogCQkJCUNoZWNrVmFsaWRSb3dNYXJrUmVsKHJlbGF0aW9u LCByYy0+bWFya1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBmZGM2NWMyYjQy Yi4uMjhhMDZkY2QyNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04OTMsNiArODkz LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKIAkJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zID0gKFJlc3Vs dFJlbEluZm8gKiopCiAJCQlwYWxsb2MwKGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSAqIHNp emVvZihSZXN1bHRSZWxJbmZvICopKTsKIAllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnNbcnRp IC0gMV0gPSByZXN1bHRSZWxJbmZvOworCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1z X2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQlydGkp OwogCiAJLyoKIAkgKiBTYXZpbmcgaW4gdGhlIGxpc3QgYWxsb3dzIHRvIGF2b2lkIG5lZWRsZXNz bHkgdHJhdmVyc2luZyB0aGUgd2hvbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMzk2ODQyOWY5 OTEuLmQ4YzM4NTIxNmUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBA QCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5n KCkgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1 ZXJ5RGVzYyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBi eSB0aGUgcXVlcnkgZWl0aGVyIHRocm91Z2gKKwkgKiBVUERBVEUvREVMRVRFL0lOU0VSVC9NRVJH RSBvciBTRUxFQ1QgRk9SIFVQREFURQorCSAqLworCUJpdG1hcHNldCAgKmVzX21vZGlmaWVkX3Jl bGlkczsKKwogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZp bHRlciwgaWYgYW55ICovCiAKIAkvKiBJZiBxdWVyeSBjYW4gaW5zZXJ0L2RlbGV0ZSB0dXBsZXMs IHRoZSBjb21tYW5kIElEIHRvIG1hcmsgdGhlbSB3aXRoICovCi0tIAoyLjQzLjAKCg== --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0013-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v29-0013-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd29sb12 RnJvbSAyMWMyODhmMjEyODg3ZTM3NDMzMTU1Y2E4MDA5M2FiMzg5M2VhMWY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MTI6MTggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOSAxMy8xNV0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv 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 c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggNDVk MzA2MDM3YTQuLjVjNGJmNWYwYzZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODQyLDcg KzI4NDIsOCBAQCBfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAq c3RhdGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJy ZW50OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSk7CisJCQkJCQkJCQlQ YXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7 CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRl eEluZm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRDYWxsYmFja1BhcmFsbGVs LCBzdGF0ZSwgc2Nhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCA4ODI0NjA3 MWM0Yi4uYjYzYmQyNGViZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjA1 OCw3ICsyMDU4LDggQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChHaW5CdWlsZFN0YXRl ICpzdGF0ZSwKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBnaW5zaGFyZWQtPmlzY29uY3Vy cmVudDsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJ CVBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCkpOworCQkJCQkJ CQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKKwkJCQkJ CQkJCTApOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRl eCwgaW5kZXhJbmZvLCB0cnVlLCBwcm9ncmVzcywKIAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJh Y2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggZGQ0ZmU2YmY2MmYuLjZjMmU0ZTA4YjE2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTc5LDEyICs3OSwxMyBAQCBoZWFwYW1fc2xv dF9jYWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24pCiAgKi8KIAogc3RhdGljIEluZGV4RmV0Y2hU YWJsZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK2hlYXBh bV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRl eEZldGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9jMF9vYmplY3QoSW5kZXhGZXRjaEhlYXBEYXRh KTsKIAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsKIAloc2Nhbi0+eHNfY2J1ZiA9IEludmFs aWRCdWZmZXI7CisJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRf UkVMX1JFQURfT05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpAQCAtNzUzLDcg Kzc1NCw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhl YXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkJdGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNjYW4g PSBOVUxMOwotCQlpbmRleFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5kZXgs IFNuYXBzaG90QW55LCBOVUxMLCAwLCAwKTsKKwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2Fu KE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCwgMCk7CiAJCWluZGV4 X3Jlc2NhbihpbmRleFNjYW4sIE5VTEwsIDAsIE5VTEwsIDApOwogCX0KIAllbHNlCkBAIC03NjIs NyArNzYzLDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xk SGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DTFVTVEVSX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhBU0Vf U0VRX1NDQU5fSEVBUCk7CiAKLQkJdGFibGVTY2FuID0gdGFibGVfYmVnaW5zY2FuKE9sZEhlYXAs IFNuYXBzaG90QW55LCAwLCAoU2NhbktleSkgTlVMTCk7CisJCXRhYmxlU2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihPbGRIZWFwLCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwsIDApOwogCQlo ZWFwU2NhbiA9IChIZWFwU2NhbkRlc2MpIHRhYmxlU2NhbjsKIAkJaW5kZXhTY2FuID0gTlVMTDsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCBiN2YxMGExYWVkMC4uMTVmOWNjMTE1ODIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NDcsNyArNDQ3LDcgQEAgc3lzdGFibGVf YmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJfQogCiAJCXN5c3NjYW4tPmlzY2Fu ID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaXJlbCwKLQkJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwKTsKKwkJCQkJCQkJCQkgc25hcHNob3QsIE5VTEwsIG5rZXlzLCAw LCAwKTsKIAkJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxM LCAwKTsKIAkJc3lzc2Nhbi0+c2NhbiA9IE5VTEw7CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCBzeXN0 YWJsZV9iZWdpbnNjYW5fb3JkZXJlZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJfQogCiAJc3lz c2Nhbi0+aXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLCBpbmRleFJlbGF0aW9u LAotCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCk7CisJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oc3lzc2Nhbi0+aXNjYW4sIGlk eGtleSwgbmtleXMsIE5VTEwsIDApOwogCXN5c3NjYW4tPnNjYW4gPSBOVUxMOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIzYi4uYjU1MjNjZjJhYjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGluZGV4X2JlZ2lu c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwK IAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnQsCi0JCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQorCQkJCWludCBua2V5cywg aW50IG5vcmRlcmJ5cywgdWludDMyIGZsYWdzKQogewogCUluZGV4U2NhbkRlc2Mgc2NhbjsKIApA QCAtMjg0LDcgKzI4NCw3IEBAIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGluc3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNo IGluZGV4IG1hdGNoZXMgZnJvbSB0YWJsZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxl X2luZGV4X2ZldGNoX2JlZ2luKGhlYXBSZWxhdGlvbik7CisJc2Nhbi0+eHNfaGVhcGZldGNoID0g dGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcFJlbGF0aW9uLCBmbGFncyk7CiAKIAlyZXR1cm4g c2NhbjsKIH0KQEAgLTYxNSw3ICs2MTUsNyBAQCBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVs YXRpb24gaGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsCiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGlu c3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNoIGluZGV4IG1hdGNoZXMgZnJvbSB0YWJs ZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwpOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwsIDApOwogCiAJcmV0dXJuIHNjYW47CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j CmluZGV4IGQ3Njk1ZGMxMTA4Li43YmRiYzdlNWZhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKQEAgLTE5MjUsNyArMTkyNSw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0 KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCWluZGV4SW5mbyA9IEJ1aWxk SW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBi dHNoYXJlZC0+aXNjb25jdXJyZW50OwogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwo YnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0 c2hhcmVkKSk7CisJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJl ZCksIDApOwogCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oYnRzcG9vbC0+aGVh cCwgYnRzcG9vbC0+aW5kZXgsIGluZGV4SW5mbywKIAkJCQkJCQkJCSAgIHRydWUsIHByb2dyZXNz LCBfYnRfYnVpbGRfY2FsbGJhY2ssCiAJCQkJCQkJCQkgICAmYnVpbGRzdGF0ZSwgc2Nhbik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCA3M2ViYzAxYTA4Zi4uYTAwYmRmZGY4MjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMTYzLDEwICsxNjMsMTEgQEAgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2MgcHNjYW4sCiB9CiAKIFRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQordGFibGVf YmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRl c2MgcHNjYW4sIHVpbnQzMiBmbGFncykKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQl1aW50MzIJ CWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKworCWZsYWdzIHw9IFNPX1RZUEVfU0VRU0NBTiB8 CiAJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwog CiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nh bi0+cGhzX2xvY2F0b3IpKTsKQEAgLTI0OCw3ICsyNDksNyBAQCB0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJYm9vbAkJZm91bmQ7CiAKIAlzbG90ID0gdGFibGVf c2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKLQlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4o cmVsKTsKKwlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCAwKTsKIAlmb3VuZCA9 IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxs X2FnYWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOwogCXRhYmxlX2luZGV4X2ZldGNoX2VuZChzY2Fu KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwppbmRleCAzNDk3YTgyMjFmMi4uOTdjODI3OGUz NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKQEAgLTEwNiw3ICsxMDYsNyBAQCB1bmlx dWVfa2V5X3JlY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAl0bXB0aWQgPSBjaGVja3Rp ZDsKIAl7Ci0JCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9i ZWdpbih0cmlnZGF0YS0+dGdfcmVsYXRpb24pOworCQlJbmRleEZldGNoVGFibGVEYXRhICpzY2Fu ID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCAwKTsKIAkJ Ym9vbAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCiAJCWlmICghdGFibGVfaW5kZXhfZmV0Y2hfdHVw bGUoc2NhbiwgJnRtcHRpZCwgU25hcHNob3RTZWxmLCBzbG90LApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpp bmRleCBkYWU5MTYzMGFjMy4uMTk1N2JiMGYxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0x MTU2LDcgKzExNTYsNyBAQCBDb3B5UmVsYXRpb25UbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gcm9vdF9yZWwsIHVpbnQ2NCAqcHJvYwogCUF0dHJNYXAgICAgKm1h cCA9IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKnJvb3Rfc2xvdCA9IE5VTEw7CiAKLQlzY2FuZGVz YyA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOwor CXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwg TlVMTCwgMCk7CiAJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA2YjFhMDBlZDQ3Ny4uMTMwYTY3MGQyNjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC02Mzc3LDcgKzYzNzcsNyBAQCBBVFJld3JpdGVU YWJsZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwKQogCQkgKiBjaGVja2lu ZyBhbGwgdGhlIGNvbnN0cmFpbnRzLgogCQkgKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJl bCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJlbCwg c25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCkBAIC0xMzc2Niw3ICsx Mzc2Niw3IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkg Ki8KIAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJ c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihyZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJl bCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJcGVyVHVwQ3h0ID0gQWxsb2NTZXRDb250ZXh0 Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJICAidmFsaWRhdGVGb3JlaWdu S2V5Q29uc3RyYWludCIsCkBAIC0yMjYyMyw3ICsyMjYyMyw3IEBAIE1lcmdlUGFydGl0aW9uc01v dmVSb3dzKExpc3QgKip3cXVldWUsIExpc3QgKm1lcmdpbmdQYXJ0aXRpb25zLCBSZWxhdGlvbiBu ZXdQYXJ0CiAKIAkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLwogCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFi bGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAog CQkvKgogCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBp dCBmb3IgZWFjaCB0dXBsZQpAQCAtMjMwODcsNyArMjMwODcsNyBAQCBTcGxpdFBhcnRpdGlvbk1v dmVSb3dzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsCiAK IAkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICovCiAJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRS ZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHNwbGl0UmVs LCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkvKgogCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwppbmRleCBiZTZmZmQ2ZGRiMC4uMjkyMWY2OGMxYzMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdmFsaWRhdGVEb21haW5Ob3ROdWxsQ29uc3Ry YWludChPaWQgZG9tYWlub2lkKQogCiAJCS8qIFNjYW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJlbGF0 aW9uICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgp KTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7 CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUodGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxlICh0 YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkK IAkJewpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdmFsaWRhdGVEb21haW5DaGVja0NvbnN0cmFpbnQo T2lkIGRvbWFpbm9pZCwgY29uc3QgY2hhciAqY2NiaW4sIExPQ0tNT0RFIGxvY2ttb2QKIAogCQkv KiBTY2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxhdGlvbiAqLwogCQlzbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNj YW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAkJc2xvdCA9IHRhYmxlX3Nsb3RfY3Jl YXRlKHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2Fu LCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0lu ZGV4aW5nLmMKaW5kZXggMGIzYTMxZjE3MDMuLjc0MjYyYTM0ODE5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjSW5kZXhpbmcuYwpAQCAtODE2LDcgKzgxNiw3IEBAIGNoZWNrX2V4Y2x1c2lvbl9vcl91 bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHJldHJ5Ogog CWNvbmZsaWN0ID0gZmFsc2U7CiAJZm91bmRfc2VsZiA9IGZhbHNlOwotCWluZGV4X3NjYW4gPSBp bmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZEaXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5 YXR0cywgMCk7CisJaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwLCBpbmRleCwgJkRp cnR5U25hcHNob3QsIE5VTEwsIGluZG5rZXlhdHRzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oaW5k ZXhfc2Nhbiwgc2NhbmtleXMsIGluZG5rZXlhdHRzLCBOVUxMLCAwKTsKIAogCXdoaWxlIChpbmRl eF9nZXRuZXh0X3Nsb3QoaW5kZXhfc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIGV4aXN0aW5n X3Nsb3QpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCA4NjBmNzlm OWNjMS4uNmU0OWVhNWM1ZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS 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 bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2ZlMC4uMGQ4NTRkYjUxYTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUsMTEgKzEwNSwxOCBAQCBC aXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlm ICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7 CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2Nh bnJlbGlkLAorCQkJCQkJICAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykp CisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQlub2RlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MgPQogCQkJdGFibGVfYmVnaW5zY2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiwKIAkJCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJ CQkJICAgMCwKLQkJCQkJCQkgICBOVUxMKTsKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIGZs YWdzKTsKIAl9CiAKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJh dG9yID0gdGJtaXRlcmF0b3I7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCA2YmVhNDJmMTI4Zi4uMmM4N2JhNWY3NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4b25seXNjYW4uYwpAQCAtOTQsNyArOTQsNyBAQCBJbmRleE9ubHlOZXh0KEluZGV4 T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJ CQkJCQkJICAgJm5vZGUtPmlvc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19O dW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJ CQkJCSAgIG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlvc3NfU2Nh bkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4 IDcyYjEzNWU1ZGNmLi45MjY3NDQ0MWM2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYwpAQCAtMTAyLDYgKzEwMiwxMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUp CiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJ CWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxp ZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09f SElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGlu ZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVj dXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgpAQCAt MTExLDcgKzExNyw4IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJ ICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50 LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlz c19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywK KwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CkBAIC0yMDcsNyArMjE0LDcgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUg Km5vZGUpCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJCSAgICZub2Rl LT5pc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAotCQkJ CQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCQkJCQkJCQkgICBub2RlLT5pc3Nf TnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA5NDA0N2QyOTQzMC4uNGQwY2JiOWRl ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIv 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 Zy9wYXJ0Ym91bmRzLmMKaW5kZXggMTZiMGFkYzE3MmMuLjkxYWNmMWVlMmQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTMzNjIsNyArMzM2Miw3IEBAIGNoZWNrX2Rl ZmF1bHRfcGFydGl0aW9uX2NvbnRlbnRzKFJlbGF0aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVs dF9yZWwsCiAJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJCXR1cHNs b3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0X3JlbCwgJmVzdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7 Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGFydF9yZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsK KwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihwYXJ0X3JlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJl c2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IGM3NjBi MTlkYjU1Li5lYzBkZWYwZDFlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTcxMDAs NyArNzEwMCw3IEBAIGdldF9hY3R1YWxfdmFyaWFibGVfZW5kcG9pbnQoUmVsYXRpb24gaGVhcFJl bCwKIAogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbCwgaW5kZXhSZWwsCiAJ CQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1hYmxlLCBOVUxMLAotCQkJCQkJCQkgMSwgMCk7CisJ CQkJCQkJCSAxLCAwLCAwKTsKIAkvKiBTZXQgaXQgdXAgZm9yIGluZGV4LW9ubHkgc2NhbiAqLwog CWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3Nj YW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggOTIwMGEyMmJkOWYu LmQyOWQ5ZTkwNWZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTc3LDcgKzE3Nyw3IEBAIGV4dGVybiBJ bmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJ CQkJCQkgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCSBTbmFwc2hvdCBzbmFwc2hv dCwKIAkJCQkJCQkJCSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCi0JCQkJ CQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKKwkJCQkJCQkJCSBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIHVpbnQzMiBmbGFncyk7CiBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9i ZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBz aG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3Ry dW1lbnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMTYyNWIxMDc1NzUuLjBiZmUyMzY2ZTFhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCkBAIC0xMTksNiArMTE5LDEyIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0 Y2hIZWFwRGF0YQogCiAJQnVmZmVyCQl4c19jYnVmOwkJLyogY3VycmVudCBoZWFwIGJ1ZmZlciBp biBzY2FuLCBpZiBhbnkgKi8KIAkvKiBOQjogaWYgeHNfY2J1ZiBpcyBub3QgSW52YWxpZEJ1ZmZl ciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlciAqLworCisJLyoKKwkgKiBTb21lIG9wdGlt aXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2Rp ZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4gVHJhY2sgdGhhdCBoZXJlLgorCSAqLwor CWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJl c3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAppbmRleCAyZmE3OTBiNmJmNS4uZDEwYjFiMDNjZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAt NjMsNiArNjMsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMKIAogCS8qIHVucmVnaXN0ZXIg c25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkv KiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3QgbW9kaWZ5IHRoZSByZWwgKi8KKwlTT19ISU5UX1JF TF9SRUFEX09OTFkgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtNDIwLDcg KzQyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJICoKIAkgKiBUdXBsZXMg Zm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgaW5kZXhfZmV0Y2hfdHVw bGUuCiAJICovCi0Jc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVn aW4pIChSZWxhdGlvbiByZWwpOworCXN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICooKmluZGV4 X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpOwogCiAJLyoKIAkgKiBS ZXNldCBpbmRleCBmZXRjaC4gVHlwaWNhbGx5IHRoaXMgd2lsbCByZWxlYXNlIGNyb3NzIGluZGV4 IGZldGNoCkBAIC04NzQsOSArODc2LDkgQEAgZXh0ZXJuIFR1cGxlVGFibGVTbG90ICp0YWJsZV9z bG90X2NyZWF0ZShSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqKnJlZ2xpc3QpOwogICovCiBzdGF0 aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIFNu YXBzaG90IHNuYXBzaG90LAotCQkJCWludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQlp bnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZs YWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwlmbGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlT T19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAogCXJl dHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtl eSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTE5LDkgKzkyMSw5IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJh dChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogICovCiBzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9ibShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNu YXBzaG90LAotCQkJCSAgIGludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQg bmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdz ID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CisJZmxhZ3MgfD0gU09f VFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90 YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkg ICBOVUxMLCBmbGFncyk7CkBAIC0xMTI4LDcgKzExMzAsOCBAQCBleHRlcm4gdm9pZCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAgKiBDYWxsZXIgbXVzdCBob2xk IGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVsYXRpb24uCiAgKi8KIGV4dGVybiBUYWJsZVNjYW5E ZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJ CQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOworCQkJCQkJCQkJCQkgIFBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJICB1aW50MzIgZmxhZ3MpOwogCiAvKgog ICogQmVnaW4gYSBwYXJhbGxlbCB0aWQgcmFuZ2Ugc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZl IGJlZW4gaW5pdGlhbGl6ZWQKQEAgLTExNjQsOSArMTE2Nyw5IEBAIHRhYmxlX3BhcmFsbGVsc2Nh bl9yZWluaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4p CiAgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgdGFi bGVfaW5kZXhfZmV0Y2hfdHVwbGUoKS4KICAqLwogc3RhdGljIGlubGluZSBJbmRleEZldGNoVGFi bGVEYXRhICoKLXRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK3RhYmxlX2lu ZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCwgdWludDMyIGZsYWdzKQogewotCXJldHVybiBy ZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJlbCk7CisJcmV0dXJuIHJlbC0+cmRf dGFibGVhbS0+aW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBmbGFncyk7CiB9CiAKIC8qCi0tIAoyLjQz LjAKCg== --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="US-ASCII"; name="v29-0014-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v29-0014-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd2cyq13 RnJvbSA3ZWFiMDAyNTk4NjhhYWEwN2NlM2I4MGYxYTAxYzM3OWViN2Y4OTA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MjQ6MDggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOSAxNC8xNV0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gYW5kIENPUFkgRlJFRVpFIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJs ZSBvcgphbGwtZnJvemVuLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0gc2V0 dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWluZyBo ZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmls bCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1W N1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKysr LS0KIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICst CiA1IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBmYjdhNzU0OGFhMC4uZDlkYzc5ZjRhOTYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01NzAsNiArNTcwLDcgQEAgaGVhcF9wcmVwYXJlX3Bh Z2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19j YnVmOwogCUJsb2NrTnVtYmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNu YXBzaG90OworCUJ1ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50 CQkJbGluZXM7CiAJYm9vbAkJYWxsX3Zpc2libGU7CkBAIC01ODQsNyArNTg1LDkgQEAgaGVhcF9w cmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQg cmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkg Ki8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJ aWYgKHNzY2FuLT5yc19mbGFncyAmIFNPX0hJTlRfUkVMX1JFQURfT05MWSkKKwkJdm1idWZmZXIg PSAmc2Nhbi0+cnNfdm1idWZmZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNl LnJzX3JkLCBidWZmZXIsIHZtYnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJl IGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI2 MSw2ICsxMjY0LDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJ fQogCisJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJs ZVNjYW5EZXNjKSBzY2FuOwogfQpAQCAtMTI5OSw2ICsxMzAzLDEyIEBAIGhlYXBfcmVzY2FuKFRh YmxlU2NhbkRlc2Mgc3NjYW4sIFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4t PnJzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4t PnJzX3ZtYnVmZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOwor CQlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19U WVBFX0JJVE1BUFNDQU4gd291bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3Qg aG9sZCBhbnkKIAkgKiBhZGRpdGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEz MzEsNiArMTM0MSw5IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChC dWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2Ni dWYpOwogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNl QnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFk IHN0cmVhbSBiZWZvcmUgZnJlZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA2YzJlNGUwOGIxNi4u MmNiOThlNTg5NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o 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 IHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzIsNiArMjQ4MCw3IEBAIEJpdG1h cEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVzdWx0 ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BBR0Vd OwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7CiAK IAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwogCUFzc2VydCho c2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUxOCw3ICsyNTI3LDkgQEAgQml0bWFwSGVhcFNj YW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0J aGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAoc2Nhbi0+cnNf ZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5yc192 bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZtYnVm ZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBj b250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCA4ZGY4MTgzMzE3OS4uM2RkYjFiMzk2YjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k 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 Vk0gYml0cyBpbiAqbmV3X3ZtYml0cy4KQEAgLTk2MCw2ICs5NzYsOCBAQCBoZWFwX3BhZ2Vfd2ls bF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJICBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhl YXBfcGFnZSwKIAkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAogCQkJCQkgIGludCBu bHBkZWFkX2l0ZW1zLAogCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkgIHVpbnQ4ICpu ZXdfdm1iaXRzKQpAQCAtOTY3LDYgKzk4NSwyNCBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwKIAlpZiAoIXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCQly ZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5k IHdlJ3JlIG5vdCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2li aWxpdHkgbWFwIGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJ ICogdGhlIHBhZ2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBp bmNsdWRpbmcgYQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGlu IHRoZSBXQUwuIFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2Vz cyBwcnVuaW5nIGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFs aWQuCisJICovCisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFCdWZmZXJJ c0RpcnR5KGhlYXBfYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChoZWFwX2J1 ZmZlcikpKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJKm9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLAogCQkJCQkJCQkJ CSAgICZ2bWJ1ZmZlcik7CiAKQEAgLTExNjQsNiArMTIwMCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgIGJ1ZmZlciwK IAkJCQkJCQkJCSAgcGFnZSwKIAkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHBhcmFt cy0+cmVhc29uLAorCQkJCQkJCQkJICBkb19wcnVuZSwgZG9fZnJlZXplLAogCQkJCQkJCQkJICBw cnN0YXRlLmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCiAJCQkJCQkJCQkg ICZuZXdfdm1iaXRzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAwYmZlMjM2NmUxYS4uMzMyOGY1NmMx MDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhl YXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAq cnNfcGFyYWxsZWx3b3JrZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBh bmQgYml0bWFwIGhlYXAgc2NhbnMuIElmIHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBt b2RpZmllZCwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBw YWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLwor CUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBh Z2UtYXQtYS10aW1lIG1vZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2Np bmRleDsJCS8qIGN1cnJlbnQgdHVwbGUncyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJ CXJzX250dXBsZXM7CQkvKiBudW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAt MTE3LDggKzEyNCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJ bmRleEZldGNoVGFibGVEYXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhl IGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZm ZXIgaW4gc2NhbiwgaWYgYW55ICovCi0JLyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRC dWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQg aGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJ bnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZl cgkJeHNfY2J1ZjsKKworCS8qCisJICogRm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlm eSB0aGUgdW5kZXJseWluZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSBy ZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8K KwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogCiAJLyoKIAkg KiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBk b2VzIG5vdCBtb2RpZnkKQEAgLTQyMCw3ICs0MzcsOCBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBo ZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQkgIFRNX0lu ZGV4RGVsZXRlT3AgKmRlbHN0YXRlKTsKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwotZXh0 ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVybiB2b2lk IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ CQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNl dE51bWJlciAqb2ZmX2xvYywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0 YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCBlYmUyZmFlMTc4OS4uYmRkOWYwYTYyY2QgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rp bmcucGwKQEAgLTI5Niw2ICsyOTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBs aWNhdGlvbl9zbG90cyA9IDQKIG1heF93YWxfc2VuZGVycyA9IDQKIGF1dG92YWN1dW0gPSBvZmYK K2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KIH0pOwogJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZv OwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC03NDgsNyArNzQ5LDcgQEAgY2hlY2tfcGdfcmVj dmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5s b2dmaWxlOwogCiByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygn c2hhcmVkX3Jvd19yZW1vdmFsXycsCi0JJ25vX2NvbmZsaWN0XycsIDAsIDEpOworCSdub19jb25m bGljdF8nLCAxLCAwKTsKIAogIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0CiB3 YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --00000000000019fcd206465480cb Content-Type: text/x-patch; charset="UTF-8"; name="v29-0015-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v29-0015-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjdd2ft014 RnJvbSBjMGU2YmIxYTMwNzYxNzA1NjQ1MTEwYzQyNmU3YWEzNzU5YTE4Mjk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjkgMTUvMTVdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL21vZHVsZXMvaW5kZXgv ZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQgICAgIHwgIDYgKystLS0KIDMgZmlsZXMgY2hhbmdlZCwg MzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBkOWRjNzlmNGE5Ni4uY2NlYmMxZjI0NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCkBAIC0yMTE5LDYgKzIxMTksNyBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhlYXB0dXA7CiAJQnVmZmVyCQlidWZm ZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAli b29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKQEAgLTIxNzgsMTUgKzIxNzksMTkg QEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJ ZCBjaWQsCiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUg b24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRyaWdnZXIgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMgZnVsbCBzbyB0aGF0IHdl IGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgogCSAqCi0JICogVGhlIGlu c2VydGluZyB0cmFuc2FjdGlvbiBtYXkgZXZlbnR1YWxseSBhYm9ydCB0aHVzIG1ha2luZyB0aGlz IHR1cGxlCi0JICogREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvciBwcnVuaW5nLiBUaG91Z2gg d2UgZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZQotCSAqIGZvciBhYm9ydHMsIGlmIG5vIG90aGVyIHR1 cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZQotCSAqIGFib3J0ZWQgdHVw bGUgd2lsbCBuZXZlciBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dlcmVkLgor CSAqIFNldHRpbmcgcGRfcHJ1bmVfeGlkIGlzIGFsc28gaGFuZHkgaWYgdGhlIGluc2VydGluZyB0 cmFuc2FjdGlvbgorCSAqIGV2ZW50dWFsbHkgYWJvcnRzIG1ha2luZyB0aGlzIHR1cGxlIERFQUQg YW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IKKwkgKiBwcnVuaW5nLiBJZiBubyBvdGhlciB0dXBsZSBp biB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUgYWJvcnRlZAorCSAqIHR1cGxlIHdv dWxkIG5ldmVyIG90aGVyd2lzZSBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dl cmVkLgogCSAqCi0JICogSWYgeW91IGRvIGFkZCBQYWdlU2V0UHJ1bmFibGUgaGVyZSwgYWRkIGl0 IGluIGhlYXBfeGxvZ19pbnNlcnQgdG9vLgorCSAqIERvbid0IHNldCBpdCBpZiB3ZSBhcmUgaW4g Ym9vdHN0cmFwIG1vZGUsIHRob3VnaC4KIAkgKi8KKwlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJUGFnZVNldFBydW5hYmxl KHBhZ2UsIHhpZCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIApAQCAtMjE5Niw3ICsy MjAxLDYgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENv bW1hbmRJZCBjaWQsCiAJCXhsX2hlYXBfaW5zZXJ0IHhscmVjOwogCQl4bF9oZWFwX2hlYWRlciB4 bGhkcjsKIAkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CiAJCXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsKIAkJaW50CQkJYnVm ZmxhZ3MgPSAwOwogCkBAIC0yNTYwLDggKzI1NjQsMTMgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl9 CiAKIAkJLyoKLQkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMg cGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCisJCSAqIFNldCBwZF9wcnVuZV94aWQuIFNlZSBoZWFw X2luc2VydCgpIGZvciBtb3JlIG9uIHdoeSB3ZSBkbyB0aGlzIHdoZW4KKwkJICogaW5zZXJ0aW5n IHR1cGxlcy4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZW4ndCBhbHJlYWR5CisJCSAq IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRoZSBWTS4gV2UgYWxzbyBkb24ndCBzZXQgaXQg aW4KKwkJICogYm9vdHN0cmFwIG1vZGUuCiAJCSAqLworCQlpZiAoIWFsbF9mcm96ZW5fc2V0ICYm IFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKQorCQkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIHhp ZCk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCmluZGV4IDQ3ZDI0Nzk0MTVlLi5hYjJkYjkzMWFhYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NDcsNiArNDQ3LDEyIEBAIGhlYXBfeGxvZ19p bnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNlID0gUGFnZUdldEhl YXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCiAKKwkJ LyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24tYWNjZXNzIHBydW5p bmcgbGF0ZXIgd2hpY2ggbWF5CisJCSAqIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUg Vk0uCisJCSAqLworCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQp KTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAKIAkJaWYgKHhscmVjLT5mbGFncyAmIFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAgLTU5Niw5ICs2MDIsMTYgQEAgaGVhcF94 bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKHhscmVjLT5m bGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRo YXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZSAqLworCQkvKgorCQkgKiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlLiBJZgorCQkgKiB3 ZSBhcmUgbm90IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuLCB0aGVuIHNldCB0aGUgcGFnZSdzIHBy dW5hYmxlCisJCSAqIGhpbnQgc28gdGhhdCB3ZSB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxh dGVyIHdoaWNoIG1heSBzZXQgdGhlCisJCSAqIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgor CQkgKi8KIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCiAJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJZWxzZQorCQkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9leHBlY3RlZC9raWxsdHVw bGVzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQK aW5kZXggYmU3ZGRkNzU2ZWYuLmIyOWYyNDM0YjAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQKQEAgLTU0LDcgKzU0LDcgQEAgc3RlcCBmbHVz aDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDog U0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nl c3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFi bGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nl cwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAg MgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vz c2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0 aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTEz MCw3ICsxMzAsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3Nf aGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291 bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1 cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAg ICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRF IGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVh cF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2ls bF9wcmlvcl90dXBsZScpOwpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBG Uk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFw X2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3 X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSBy ZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0t LS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykK IAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxF Q1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJs ZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7Ci0tIAoyLjQzLjAKCg== --00000000000019fcd206465480cb--