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 1vVG8G-00HICU-05 for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Dec 2025 21:29:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vVG8D-002YWR-0q for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Dec 2025 21:29:26 +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 1vVG8C-002YWJ-2E for pgsql-hackers@lists.postgresql.org; Mon, 15 Dec 2025 21:29:25 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vVG88-000vvK-0O for pgsql-hackers@lists.postgresql.org; Mon, 15 Dec 2025 21:29:25 +0000 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-64981b544a1so5364427a12.1 for ; Mon, 15 Dec 2025 13:29:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765834159; x=1766438959; 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=s7xp7oFFsgBWrtISc8w3twpIax6Jg2G8I9MQfzLioRE=; b=WzNwNM9BxeqZjmjDZFwP8W15UmlZ+gjRtr/HAZgUagbTpME86/Cb2NpQI9aY5AP9M7 wCKD5vGr9Geog5DkAA24iWm9gRi8jMbZhnF6MY1GqNkyv2nKK+aqvxyCcynsjF6R7z9R 6h/hkL9j7sKlTQKbKndo+XQvvpsA1EYk2u8x/4zIXP+UfhPA6WKGaE2G0196VjucHCEK R80loCeg05suXASGiByuj1Y70xa95gK7t94fx56oLMkg3MjDEtCRnaOzizPu+S7feCUh qbeOFMnHYw8ejolU6PLO0SdxEQzW7nSyNH4g5aQHPPCGGGSg5QJ+5YxTEyMmydGs2tWT 6BHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765834159; x=1766438959; 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=s7xp7oFFsgBWrtISc8w3twpIax6Jg2G8I9MQfzLioRE=; b=Y+qAJQAcShXQYWefVZPXJWXRGowxBsgHCfpksmFeND2DaGmZLE4q5ciJpwj9whUx5y +EfEUXvyVN2E1rzewpqgRVjYzAFlrnBZNs+so5Fk7RCSKa2DAfHXF2mnNKT9tvR7o0GO vlPKB6zGayBj84BKz/K3g74dmMxW+gduU9aLwjInluU/Fdq2ErxjSDVTxGD+73FaGgT7 WFXniJoGXqZVgVj2lyacGviJMloZAaDV36IbK9UsBQz8I9otnZZ29/Yqf6Yb4A/ay8q2 5IJ5QA2J2PEw2yPHYWZFLXHU/Fpm45W7xwhx3ncN1A3VCV4ANngkZtJv2A+2yURf3BvJ CfxA== X-Forwarded-Encrypted: i=1; AJvYcCWoLAfFnJd5Xit0AQ+Kf9eo1mtTAR3XbVDNi40AIgnvlseis9Y9lO1ROhdF8hsRuasNH8WTbRfsdCYOHyRE@lists.postgresql.org X-Gm-Message-State: AOJu0Yx/dm7tUKEYN0OmoKxi1wV6tkZn4+L9apkqSnAwNg8tVB6v638o DKbx//iq9T4RDZwIKFSYQ/n55oN7tUBL9kUjQGQisys8joxwiWrTxuUDpQj4yj3/JnQHfabkMTk f5JUhrB5b+u2FlyFjMMNUE7gilzH3S4g= X-Gm-Gg: AY/fxX6M22eiKOVGmmHt1ejuk2tiPqOIurKbVNFX6DfBFgGzekvLFlRCZe6Hfk1C2ra lfOjjwg3z1YWp6/pbYyeqPlFT8GOUhTMHxeka0uoGvI0TMzRVQjRr9oIk2+IBFWN8n6T6+iq6M7 +n0jqg7g71ZPq0pQyP7KhES0FRAfWg2v6f0PgnA2auvUKE0vW2hAV7HRsKpLajV1YX1fmzmO8fA Df+HSzU6U8+VKoabTAxjmsCFa53XeAnhTvY1eRWpYOVvGO+Ve1t7abBIa0kCzNUhzpYDjRI X-Google-Smtp-Source: AGHT+IHYcwpJ+tbnZmzPZRlCF6tCBMbjUZyahQ5BtngloFFz71aOsY7OWZW+uVSoW4aWodXzf5yZv1KZYPOuJxhwUKE= X-Received: by 2002:a05:6402:2813:b0:641:1f22:fc68 with SMTP id 4fb4d7f45d1cf-6499b1d26ebmr12253011a12.24.1765834159181; Mon, 15 Dec 2025 13:29:19 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> <9B2211B5-14B4-4C22-96BD-F7B32E577DB6@gmail.com> <5CEAA162-67B1-44DA-B60D-8B65717E8B05@gmail.com> In-Reply-To: <5CEAA162-67B1-44DA-B60D-8B65717E8B05@gmail.com> From: Melanie Plageman Date: Mon, 15 Dec 2025 16:29:03 -0500 X-Gm-Features: AQt7F2pE9kfIhufGJWBDRyOSobUkCA2Cuemn_pB26Zz6NaB3ewNwshDE9LyXcH4 Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Chao Li Cc: Andres Freund , Kirill Reshke , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="000000000000cab3d20646044db9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cab3d20646044db9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Attached v26 includes a new patch, 0002, which gets rid of all_visible_according_to_vm in lazy_scan_prune(). We've kept this cached copy of the all-visible bit since the VM was added way back in 608195a3a365. Back then, the VM wasn't pinned unless all_visible_according_to_vm was false. Now that we unconditionally have the VM page pinned, there isn't much performance benefit to using that cached value. I did some testing of the worst possible case and saw no difference in timing. By removing that, we simplify heap vacuum code now. And we improve clarity once the VM update is combined into the prune/freeze WAL record and when the VM is set on-access. I think 0001 and 0002 (and maybe 0003) are worthwhile clarity improvements on their own. On Wed, Dec 10, 2025 at 11:07=E2=80=AFPM Chao Li w= rote: > > A few more small comments. Sorry for keeping come out new comments. Actua= lly I learned a lot about vacuum from reviewing this patch. Thanks for the continued review. Your feedback is improving the patchset. > The last vacuum is expected to set vm bits, but the test doesn=E2=80=99t = verify that. Should we verify that like: > ``` > evantest=3D# SELECT blkno, all_visible, all_frozen FROM pg_visibility_map= ('test_vac_unmodified_heap'); > blkno | all_visible | all_frozen > -------+-------------+------------ > 0 | t | t > (1 row) I've done this. I've actually added three such verifications -- one after each step where the VM is expected to change. It shouldn't be very expensive, so I think it is okay. The way the test would fail if the buffer wasn't correctly dirtied is that it would assert out -- so the visibility map test wouldn't even have a chance to fail. But, I think it is also okay to confirm that the expected things are happening with the VM -- it just gives us extra coverage. > if (presult.all_frozen) > { > + /* > + * We can pass InvalidTransactionId as our cutoff= _xid, since a > + * snapshotConflictHorizon sufficient to make eve= rything safe for > + * REDO was logged when the page's tuples were fr= ozen. > + */ > Assert(!TransactionIdIsValid(presult.vm_conflict_= horizon)); > - flags |=3D VISIBILITYMAP_ALL_FROZEN; > + new_vmbits |=3D VISIBILITYMAP_ALL_FROZEN; > } > > The comment here is a little confusing. In the old code, the Assert() as = immediately above the call visibilitymap_set(), and cutoff_xid is a paramet= er to the call. But the new code moves the Assert() as well as the comment = far away from the call visibilitymap_set(), so I think the comment should s= tay together with the call of visibilitymap_set(). Good point. I've moved it closer to visibilitymap_set() and modified and moved the assert so that it is together with the comment. I think the comment makes little sense without the assertion. > * If it finds that the page-level visibility hint or VM is corrupted, it= will > * fix them by clearing the VM bits and visibility page hint. This does no= t > > In the second line, =E2=80=9Cvisibility page hint=E2=80=9D is understanda= ble but feels not quite good. I know it=E2=80=99s actually =E2=80=9Cpage-le= vel visibility hint=E2=80=9D, so how about just =E2=80=9Cvisibility hint=E2= =80=9D. I've changed this. > /* > - * As of PostgreSQL 9.2, the visibility map bit should never be s= et if the > - * page-level bit is clear. However, it's possible that the bit = got > - * cleared after heap_vac_scan_next_block() was called, so we mus= t recheck > - * with buffer lock before concluding that the VM is corrupt. > + * For the purposes of logging, count whether or not the page was= newly > + * set all-visible and, potentially, all-frozen. > */ > - else if (all_visible_according_to_vm && !PageIsAllVisible(page) &= & > - visibilitymap_get_status(vacrel->rel, blkno, &vm= buffer) !=3D 0) > + if ((old_vmbits & VISIBILITYMAP_ALL_VISIBLE) =3D=3D 0 && > + (new_vmbits & VISIBILITYMAP_ALL_VISIBLE) !=3D 0) > { > ``` > > Without do_set_vm=3D=3Dtrue, old_vmbits will only be 0, thus this =E2=80= =9Cif-elseif=E2=80=9D that uses old_vmbits should be moved into =E2=80=9Cif= (do_set_vm)=E2=80=9D. From this perspective, if not do_set_vm, this functi= on can return early, like: Good point. I've actually gone ahead in 0002 and refactored this whole section a bit (I got rid of all_visible_according_to_vm). 0002 is a new patch in this attached v26, and it needs review. I think this refactoring makes the code quite a bit clearer -- especially once we start setting the VM on-access. It does, amongst other things, return early if all_visible is false, like you suggested. > + * Returns true if one or both VM bits should be set, along with returni= ng the > + * desired what bits should be set in the VM in *new_vmbits. > ``` > > Looks like a typo: =E2=80=9Creturning the desired what bits should be set= =E2=80=9D, maybe change to =E2=80=9Creturning the desired bits to be set=E2= =80=9D. Fixed. - Melanie --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="UTF-8"; name="v26-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Disposition: attachment; filename="v26-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7nzjfx0 RnJvbSAwNzQ5YjZhOTk3OGY2ZTc0YWY4OWQ5MWI4YmVkZGYwZmExYzdlZDAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDggRGVjIDIwMjUgMTU6NDk6NTQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNiAwMS8xNV0gQ29tYmluZSB2aXNpYmlsaXR5bWFwX3NldCgpIGNhc2VzIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKbGF6eV9zY2Fu X3BydW5lKCkgcHJldmlvdXNseSBoYWQgdHdvIHNlcGFyYXRlIGNhc2VzIHRoYXQgY2FsbGVkCnZp c2liaWxpdHltYXBfc2V0KCkgYWZ0ZXIgcHJ1bmluZyBhbmQgZnJlZXppbmcuIFRoZXNlIGJyYW5j aGVzIHdlcmUKbmVhcmx5IGlkZW50aWNhbCBleGNlcHQgdGhhdCBvbmUgYXR0ZW1wdGVkIHRvIGF2 b2lkIGRpcnR5aW5nIHRoZSBoZWFwCmJ1ZmZlci4gSG93ZXZlciwgdGhhdCBzaXR1YXRpb24gY2Fu IG5ldmVyIG9jY3VyIOKAlCB0aGUgaGVhcCBidWZmZXIgY2Fubm90CmJlIGNsZWFuIGF0IHRoYXQg cG9pbnQgKGFuZCB3ZSB3b3VsZCBoaXQgYW4gYXNzZXJ0aW9uIGlmIGl0IHdlcmUpLgoKSW4gbGF6 eV9zY2FuX3BydW5lKCksIHdoZW4gd2UgY2hhbmdlIGEgcHJldmlvdXNseSBhbGwtdmlzaWJsZSBw YWdlIHRvCmFsbC1mcm96ZW4gYW5kIHRoZSBwYWdlIHdhcyByZWNvcmRlZCBhcyBhbGwtdmlzaWJs ZSBpbiB0aGUgdmlzaWJpbGl0eQptYXAgYnkgZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCks IHRoZSBoZWFwIGJ1ZmZlciB3aWxsIGFsd2F5cyBiZQpkaXJ0eS4gRWl0aGVyIHdlIGhhdmUganVz dCBmcm96ZW4gYSB0dXBsZSBhbmQgYWxyZWFkeSBkaXJ0aWVkIHRoZQpidWZmZXIsIG9yIHRoZSBi dWZmZXIgd2FzIG1vZGlmaWVkIGJldHdlZW4gZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkK YW5kIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgYW5kIHRoZW4gcHJ1bmVkIGluCmhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuCgpBZGRpdGlvbmFsbHksIFhMb2dSZWdpc3RlckJ1ZmZl cigpIGFzc2VydHMgdGhhdCB0aGUgYnVmZmVyIGlzIGRpcnR5LCBzbwphdHRlbXB0aW5nIHRvIGFk ZCBhIGNsZWFuIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gd291bGQgZmFpbAphbnl3YXku CgpTaW5jZSB0aGUg4oCcY2xlYW4gaGVhcCBidWZmZXIgd2l0aCBhbHJlYWR5IHNldCBWTeKAnSBj YXNlIGlzIGltcG9zc2libGUsCnRoZSB0d28gdmlzaWJpbGl0eW1hcF9zZXQoKSBicmFuY2hlcyBp biBsYXp5X3NjYW5fcHJ1bmUoKSBjYW4gYmUgbWVyZ2VkLgpEb2luZyBzbyBtYWtlcyB0aGUgaW50 ZW50IGNsZWFyZXIgYW5kIGVtcGhhc2l6ZXMgdGhhdCB0aGUgaGVhcCBidWZmZXIKbXVzdCBhbHdh eXMgYmUgbWFya2VkIGRpcnR5IGJlZm9yZSBiZWluZyBhZGRlZCB0byB0aGUgV0FMIGNoYWluLgoK VGhpcyBjb21taXQgYWxzbyBhZGRzIGEgdGVzdCBjYXNlIGZvciB2YWN1dW1pbmcgd2hlbiBubyBo ZWFwCm1vZGlmaWNhdGlvbnMgYXJlIHJlcXVpcmVkLiBDdXJyZW50bHkgdGhpcyBlbnN1cmVzIHRo YXQgdGhlIGhlYXAgYnVmZmVyCmlzIG1hcmtlZCBkaXJ0eSBiZWZvcmUgaXQgaXMgYWRkZWQgdG8g dGhlIFdBTCBjaGFpbiwgYnV0IGlmIHdlIGxhdGVyCnJlbW92ZSB0aGUgaGVhcCBidWZmZXIgZnJv bSB0aGUgVk0tc2V0IFdBTCBjaGFpbiBvciBwYXNzIGl0IHdpdGggdGhlClJFR0JVRl9OT19DSEFO R0VTIGZsYWcsIHRoaXMgdGVzdCB3b3VsZCBndWFyZCB0aGF0IGJlaGF2aW9yLgoKQXV0aG9yOiBN ZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTog Q2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS81Q0VBQTE2Mi02N0IxLTQ0REEtQjYwRC04QjY1NzE3RThCMDUlNDBnbWFpbC5jb20K LS0tCiAuLi4vcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dCAgfCAzNSAr KysrKysrCiBjb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsICAgfCAx NiArKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCA5 NSArKysrKy0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyks IDczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBl Y3RlZC9wZ192aXNpYmlsaXR5Lm91dCBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9w Z192aXNpYmlsaXR5Lm91dAppbmRleCAwOWZhNTkzM2EzNS4uY2JjMDRhYWQwMTYgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dAorKysg Yi9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdfdmlzaWJpbGl0eS5vdXQKQEAgLTIw NCw2ICsyMDQsNDEgQEAgc2VsZWN0IHBnX3RydW5jYXRlX3Zpc2liaWxpdHlfbWFwKCd0ZXN0X3Bh cnRpdGlvbicpOwogIAogKDEgcm93KQogCistLSB0ZXN0IHRoZSBjYXNlIHdoZXJlIHZhY3V1bSBw aGFzZSBJIGRvZXMgbm90IG5lZWQgdG8gbW9kaWZ5IHRoZSBoZWFwIGJ1ZmZlcgorLS0gYW5kIG9u bHkgbmVlZHMgdG8gc2V0IHRoZSBWTQorY3JlYXRlIHRhYmxlIHRlc3RfdmFjX3VubW9kaWZpZWRf aGVhcChhIGludCk7CitpbnNlcnQgaW50byB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAgdmFsdWVz ICgxKTsKK3ZhY3V1bSAoZnJlZXplKSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXA7CitzZWxlY3Qg cGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgndGVzdF92YWNfdW5tb2RpZmllZF9oZWFwJyk7Cisg cGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICgxLDEpCisoMSByb3cpCisKKy0tIHRoZSBjaGVja3BvaW50IGNsZWFucyB0aGUgYnVmZmVyIGRp cnRpZWQgYnkgZnJlZXppbmcgdGhlIHNvbGUgdHVwbGUKK2NoZWNrcG9pbnQ7CistLSB0cnVuY2F0 aW5nIHRoZSBWTSBlbnN1cmVzIHRoYXQgdGhlIG5leHQgdmFjdXVtIHdpbGwgbmVlZCB0byBzZXQg aXQKK3NlbGVjdCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21hcCgndGVzdF92YWNfdW5tb2RpZmll ZF9oZWFwJyk7CisgcGdfdHJ1bmNhdGVfdmlzaWJpbGl0eV9tYXAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBwZ192aXNpYmlsaXR5X21hcF9zdW1t YXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKyBwZ192aXNpYmlsaXR5X21hcF9zdW1t YXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDAsMCkKKygxIHJvdykKKworLS0g dmFjdXVtIHNldHMgdGhlIFZNIGJ1dCBkb2VzIG5vdCBuZWVkIHRvIHNldCBQRF9BTExfVklTSUJM RSBzbyBubyBoZWFwIHBhZ2UKKy0tIG1vZGlmaWNhdGlvbgordmFjdXVtIHRlc3RfdmFjX3VubW9k aWZpZWRfaGVhcDsKK3NlbGVjdCBwZ192aXNpYmlsaXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191 bm1vZGlmaWVkX2hlYXAnKTsKKyBwZ192aXNpYmlsaXR5X21hcF9zdW1tYXJ5IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsMSkKKygxIHJvdykKKwogLS0gdGVzdCBjb3B5IGZyZWV6 ZQogY3JlYXRlIHRhYmxlIGNvcHlmcmVlemUgKGEgaW50LCBiIGNoYXIoMTUwMCkpOwogLS0gbG9h ZCBhbGwgcm93cyB2aWEgQ09QWSBGUkVFWkUgYW5kIGVuc3VyZSB0aGF0IGFsbCBwYWdlcyBhcmUg c2V0IGFsbC12aXNpYmxlCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3Bn X3Zpc2liaWxpdHkuc3FsIGIvY29udHJpYi9wZ192aXNpYmlsaXR5L3NxbC9wZ192aXNpYmlsaXR5 LnNxbAppbmRleCA1YWYwNmVjNWI3Ni4uMGQxMzExNjI0OGIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdfdmlzaWJpbGl0eS9zcWwvcGdfdmlzaWJpbGl0eS5zcWwKKysrIGIvY29udHJpYi9wZ192aXNp YmlsaXR5L3NxbC9wZ192aXNpYmlsaXR5LnNxbApAQCAtOTQsNiArOTQsMjIgQEAgc2VsZWN0IGNv dW50KCopID4gMCBmcm9tIHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1hcnkoJ3Rlc3RfcGFydGl0aW9u Jyk7CiBzZWxlY3QgKiBmcm9tIHBnX2NoZWNrX2Zyb3plbigndGVzdF9wYXJ0aXRpb24nKTsgLS0g aG9wZWZ1bGx5IG5vbmUKIHNlbGVjdCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21hcCgndGVzdF9w YXJ0aXRpb24nKTsKIAorLS0gdGVzdCB0aGUgY2FzZSB3aGVyZSB2YWN1dW0gcGhhc2UgSSBkb2Vz IG5vdCBuZWVkIHRvIG1vZGlmeSB0aGUgaGVhcCBidWZmZXIKKy0tIGFuZCBvbmx5IG5lZWRzIHRv IHNldCB0aGUgVk0KK2NyZWF0ZSB0YWJsZSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAoYSBpbnQp OworaW5zZXJ0IGludG8gdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwIHZhbHVlcyAoMSk7Cit2YWN1 dW0gKGZyZWV6ZSkgdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwOworc2VsZWN0IHBnX3Zpc2liaWxp dHlfbWFwX3N1bW1hcnkoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcpOworLS0gdGhlIGNoZWNr cG9pbnQgY2xlYW5zIHRoZSBidWZmZXIgZGlydGllZCBieSBmcmVlemluZyB0aGUgc29sZSB0dXBs ZQorY2hlY2twb2ludDsKKy0tIHRydW5jYXRpbmcgdGhlIFZNIGVuc3VyZXMgdGhhdCB0aGUgbmV4 dCB2YWN1dW0gd2lsbCBuZWVkIHRvIHNldCBpdAorc2VsZWN0IHBnX3RydW5jYXRlX3Zpc2liaWxp dHlfbWFwKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKK3NlbGVjdCBwZ192aXNpYmlsaXR5 X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKy0tIHZhY3V1bSBzZXRz IHRoZSBWTSBidXQgZG9lcyBub3QgbmVlZCB0byBzZXQgUERfQUxMX1ZJU0lCTEUgc28gbm8gaGVh cCBwYWdlCistLSBtb2RpZmljYXRpb24KK3ZhY3V1bSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXA7 CitzZWxlY3QgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgndGVzdF92YWNfdW5tb2RpZmllZF9o ZWFwJyk7CisKIC0tIHRlc3QgY29weSBmcmVlemUKIGNyZWF0ZSB0YWJsZSBjb3B5ZnJlZXplIChh IGludCwgYiBjaGFyKDE1MDApKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmlu ZGV4IDYyMDM1YjdmOWMzLi44MTFlN2UzMzY3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwpAQCAtMjA5NCwxNiArMjA5NCwxNCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0 ZSAqdmFjcmVsLAogCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCks IGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAogCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzCiAJICov Ci0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJs ZSkKKwlpZiAoKHByZXN1bHQuYWxsX3Zpc2libGUgJiYgIWFsbF92aXNpYmxlX2FjY29yZGluZ190 b192bSkgfHwKKwkJKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWwsIGJs a25vLCAmdm1idWZmZXIpKSkKIAl7CiAJCXVpbnQ4CQlvbGRfdm1iaXRzOwotCQl1aW50OAkJZmxh Z3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQl1aW50OAkJbmV3X3ZtYml0cyA9IFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CiAKIAkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJ ewotCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hv cml6b24pKTsKLQkJCWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQorCQkJ bmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CiAKIAkJLyoKIAkJICogSXQg c2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQgdGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMg c2V0CkBAIC0yMTExLDE5ICsyMTA5LDI5IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2 YWNyZWwsCiAJCSAqIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJkbGVzcywgc2V0 IGJvdGggYml0cyBzbyB0aGF0IHdlCiAJCSAqIGdldCBiYWNrIGluIHN5bmMuCiAJCSAqCi0JCSAq IE5COiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5v dCBzZXQsIHdlCi0JCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2 ZXIsIGlmIGNoZWNrc3VtcyBhcmUKLQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJICogYmVmb3JlIHBhc3NpbmcgaXQg dG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgotCQkgKiBH aXZlbiB0aGF0IHRoaXMgc2l0dWF0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiBpbiByYXJlIGNhc2Vz IGFmdGVyIGEKLQkJICogY3Jhc2gsIGl0IGlzIG5vdCB3b3J0aCBvcHRpbWl6aW5nLgorCQkgKiBF dmVuIGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdv cnJ5IGFib3V0CisJCSAqIHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLCBh cyBpdCBtdXN0IGJlIG1hcmtlZCBkaXJ0eQorCQkgKiBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBX QUwgY2hhaW4uIFRoZSBvbmx5IHNjZW5hcmlvIHdoZXJlIGl0IGlzCisJCSAqIG5vdCBhbHJlYWR5 IGRpcnR5IGlzIGlmIHRoZSBWTSB3YXMgcmVtb3ZlZCwgYW5kIHRoYXQgaXNuJ3Qgd29ydGgKKwkJ ICogb3B0aW1pemluZyBmb3IuCiAJCSAqLwogCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKIAkJ TWFya0J1ZmZlckRpcnR5KGJ1Zik7CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcg c2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQKKwkJICogYXMgdGhl IGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZmaWNpZW50 IHRvCisJCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0 aGUgcGFnZSdzIHR1cGxlcworCQkgKiB3ZXJlIGZyb3plbi4KKwkJICovCisJCUFzc2VydCghcHJl c3VsdC5hbGxfZnJvemVuIHx8CisJCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52 bV9jb25mbGljdF9ob3Jpem9uKSk7CisKIAkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0 KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAogCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIs Ci0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJ CQkJCQkJICAgZmxhZ3MpOworCQkJCQkJCQkJICAgdm1idWZmZXIsCisJCQkJCQkJCQkgICBwcmVz dWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQkgICBuZXdfdm1iaXRzKTsKIAogCQkv KgogCQkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29y IGFsbC1mcm96ZW4gaW4gdGhlCkBAIC0yMTkxLDY1ICsyMTk5LDYgQEAgbGF6eV9zY2FuX3BydW5l KExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwog CX0KIAotCS8qCi0JICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3plbiBidXQg bm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFsbC1mcm96ZW4uCi0JICov Ci0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX2Zy b3plbiAmJgotCQkJICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVy KSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRzOwotCi0JCS8qCi0JCSAqIEF2b2lkIHJlbHlpbmcg b24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEgcHJveHkgZm9yIHRoZQotCQkgKiBw YWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNpbmNlIGl0IG1pZ2h0IGhh dmUgYmVjb21lCi0JCSAqIHN0YWxlIC0tIGV2ZW4gd2hlbiBhbGxfdmlzaWJsZSBpcyBzZXQKLQkJ ICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQkJewotCQkJUGFnZVNldEFsbFZp c2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJfQotCi0JCS8qCi0JCSAq IFNldCB0aGUgcGFnZSBhbGwtZnJvemVuIChhbmQgYWxsLXZpc2libGUpIGluIHRoZSBWTS4KLQkJ ICoKLQkJICogV2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMgb3VyIGN1dG9mZl94 aWQsIHNpbmNlIGEKLQkJICogc25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBt YWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETwotCQkgKiB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBh Z2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0JCSAqLwotCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQlvbGRfdm1iaXRzID0gdmlz aWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZh bGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25J ZCwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJICAg VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCQkvKgotCQkgKiBUaGUgcGFnZSB3YXMgbGlr ZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTS4gSG93ZXZlciwKLQkJICogdGhl cmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBpdCB3YXMgbW9kaWZpZWQgc29tZXRpbWUgYmV0d2Vl bgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hlY2tpbmcg dGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5nIHBydW5pbmcuIENoZWNrIHRoZSByZXR1cm4gdmFs dWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8KLQkJICogZW5zdXJlIHRoZSB2aXNpYmlsaXR5IG1h cCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4KLQkJICovCi0JCWlmICgo b2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZh Y3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVf ZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0KLQkJLyoK LQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIHBhZ2Ugd2FzIG5vdCBzZXQgYWxsLWZy b3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUsIHNvIHdlIGRvbid0IG5lZWQgdG8gdGVzdCB0aGUg dmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICovCi0JCWVsc2UKLQkJewotCQkJdmFjcmVsLT52bV9u ZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0JfQot CiAJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7CiB9CiAKLS0gCjIuNDMuMAoK --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Disposition: attachment; filename="v26-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7nzmu61 RnJvbSBlZTFmZjBmMmU3MzIyZjBlMDM0MDgzZDM3Y2VhYjNkOGE4ZmYzNzRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDExIERlYyAyMDI1IDEwOjQ4OjEzIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjYgMDIvMTVdIEVsaW1pbmF0ZSB1c2Ugb2YgY2FjaGVkIFZNIHZhbHVlIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQoKbGF6eV9zY2FuX3BydW5lKCkgdGFrZXMgYSBwYXJhbWV0ZXIgZnJvbSBs YXp5X3NjYW5faGVhcCgpIGluZGljYXRpbmcKd2hldGhlciB0aGUgcGFnZSB3YXMgbWFya2VkIGFs bC12aXNpYmxlIGluIHRoZSBWTSBhdCB0aGUgdGltZSBpdCB3YXMKbGFzdCBjaGVja2VkIGluIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiBUaGlzIGJlaGF2aW9yIGlzCmhpc3RvcmljYWws IGRhdGluZyBiYWNrIHRvIGNvbW1pdCA2MDgxOTVhM2EzNjUsIHdoZW4gd2UgZGlkIG5vdCBwaW4g dGhlClZNIHBhZ2UgdW50aWwgY29uZmlybWluZyBpdCB3YXMgbm90IGFsbC12aXNpYmxlLiBOb3cg dGhhdCB0aGUgVk0gcGFnZSBpcwphbHJlYWR5IHBpbm5lZCwgdGhlcmUgaXMgbm8gbWVhbmluZ2Z1 bCBiZW5lZml0IHRvIHJlbHlpbmcgb24gYSBjYWNoZWQgVk0Kc3RhdHVzLgoKUmVtb3ZpbmcgdGhp cyBjYWNoZWQgdmFsdWUgc2ltcGxpZmllcyB0aGUgbG9naWMgaW4gYm90aCBsYXp5X3NjYW5faGVh cCgpCmFuZCBsYXp5X3NjYW5fcHJ1bmUoKS4gSXQgYWxzbyBjbGFyaWZpZXMgZnV0dXJlIHdvcmsg dGhhdCB3aWxsIHNldCB0aGUKdmlzaWJpbGl0eSBtYXAgb24tYWNjZXNzOiBzdWNoIHBhdGhzIHdp bGwgbm90IGhhdmUgYSBjYWNoZWQgdmFsdWUKYXZhaWxhYmxlIHdoaWNoIHdvdWxkIG1ha2UgdGhl IGxvZ2ljIGhhcmRlciB0byByZWFzb24gYWJvdXQuIEVsaW1pbmF0aW5nCml0IGFsc28gZW5hYmxl cyB1cyB0byBkZXRlY3QgYW5kIHJlcGFpciBWTSBjb3JydXB0aW9uIG9uLWFjY2Vzcy4KCkFsb25n IHdpdGggcmVtb3ZpbmcgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgdW5jb25kaXRpb25hbGx5IGNoZWNr aW5nIHRoZQp2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBwYWdlLCB0aGlzIGNvbW1pdCBh bHNvIG1vdmVzIHRoZSBWTQpjb3JydXB0aW9uIGhhbmRsaW5nIHRvIG9jY3VyIGZpcnN0LiBUaGlz IHJlb3JkZXJpbmcgc2hvdWxkIGhhdmUgbm8KcGVyZm9ybWFuY2UgaW1wYWN0LCBzaW5jZSB0aGUg Y2hlY2tzIGFyZSBpbmV4cGVuc2l2ZSBhbmQgcGVyZm9ybWVkIG9ubHkKb25jZSBwZXIgcGFnZS4g SXQgZG9lcywgaG93ZXZlciwgbWFrZSB0aGUgY29udHJvbCBmbG93IGVhc2llciB0bwp1bmRlcnN0 YW5kLiBUaGUgbmV3IHJlc3RydWN0dXJpbmcgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0aGF0IGFm dGVyCmZpeGluZyBjb3JydXB0aW9uLCB0aGUgVk0gY291bGQgYmUgbmV3bHkgc2V0LCBpZiBwcnVu aW5nIGZvdW5kIHRoZSBwYWdlCmFsbC12aXNpYmxlLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFu IDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tLzVDRUFBMTYyLTY3QjEtNDREQS1CNjBELThCNjU3MTdFOEIwNSU0MGdtYWlsLmNvbQotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDE3MiArKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCA5MyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggODExZTdlMzM2 NzguLjQzNjE0M2NkMTJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0y NTMsNyArMjUzLDYgQEAgdHlwZWRlZiBlbnVtCiAgKiBhYm91dCB0aGUgYmxvY2sgaXQgcmVhZCB0 byB0aGUgY2FsbGVyLgogICovCiAjZGVmaW5lIFZBQ19CTEtfV0FTX0VBR0VSX1NDQU5ORUQgKDEg PDwgMCkKLSNkZWZpbmUgVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk0gKDEgPDwg MSkKIAogdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogewpAQCAtMzU4LDcgKzM1Nyw2IEBAIHR5 cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIAkvKiBTdGF0ZSBtYWludGFpbmVkIGJ5IGhlYXBfdmFj X3NjYW5fbmV4dF9ibG9jaygpICovCiAJQmxvY2tOdW1iZXIgY3VycmVudF9ibG9jazsJLyogbGFz dCBibG9jayByZXR1cm5lZCAqLwogCUJsb2NrTnVtYmVyIG5leHRfdW5za2lwcGFibGVfYmxvY2s7 IC8qIG5leHQgdW5za2lwcGFibGUgYmxvY2sgKi8KLQlib29sCQluZXh0X3Vuc2tpcHBhYmxlX2Fs bHZpczsJLyogaXRzIHZpc2liaWxpdHkgc3RhdHVzICovCiAJYm9vbAkJbmV4dF91bnNraXBwYWJs ZV9lYWdlcl9zY2FubmVkOyAvKiBpZiBpdCB3YXMgZWFnZXJseSBzY2FubmVkICovCiAJQnVmZmVy CQluZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyOwkvKiBidWZmZXIgY29udGFpbmluZyBpdHMgVk0g Yml0ICovCiAKQEAgLTQzMiw3ICs0MzAsNyBAQCBzdGF0aWMgYm9vbCBsYXp5X3NjYW5fbmV3X29y X2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJICAgYm9vbCBz aGFyZWxvY2ssIEJ1ZmZlciB2bWJ1ZmZlcik7CiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShM VlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8s IFBhZ2UgcGFnZSwKLQkJCQkJCQlCdWZmZXIgdm1idWZmZXIsIGJvb2wgYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtLAorCQkJCQkJCUJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCQlib29sICpoYXNf bHBkZWFkX2l0ZW1zLCBib29sICp2bV9wYWdlX2Zyb3plbik7CiBzdGF0aWMgYm9vbCBsYXp5X3Nj YW5fbm9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJICBCbG9j a051bWJlciBibGtubywgUGFnZSBwYWdlLApAQCAtMTI0OSw3ICsxMjQ3LDYgQEAgbGF6eV9zY2Fu X2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCS8qIEluaXRpYWxpemUgZm9yIHRoZSBmaXJzdCBo ZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsICovCiAJdmFjcmVsLT5jdXJyZW50X2Jsb2Nr ID0gSW52YWxpZEJsb2NrTnVtYmVyOwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9ibG9jayA9 IEludmFsaWRCbG9ja051bWJlcjsKLQl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfYWxsdmlzID0g ZmFsc2U7CiAJdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQgPSBmYWxzZTsK IAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCkBA IC0xMjY1LDEzICsxMjYyLDEzIEBAIGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkK IAkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJaGVhcF92YWNfc2Nhbl9uZXh0X2Js b2NrLAogCQkJCQkJCQkJCXZhY3JlbCwKLQkJCQkJCQkJCQlzaXplb2YodWludDgpKTsKKwkJCQkJ CQkJCQlzaXplb2YoYm9vbCkpOwogCiAJd2hpbGUgKHRydWUpCiAJewogCQlCdWZmZXIJCWJ1ZjsK IAkJUGFnZQkJcGFnZTsKLQkJdWludDgJCWJsa19pbmZvID0gMDsKKwkJYm9vbAkJd2FzX2VhZ2Vy X3NjYW5uZWQgPSBmYWxzZTsKIAkJaW50CQkJbmRlbGV0ZWQgPSAwOwogCQlib29sCQloYXNfbHBk ZWFkX2l0ZW1zOwogCQl2b2lkCSAgICpwZXJfYnVmZmVyX2RhdGEgPSBOVUxMOwpAQCAtMTM0MCwx MyArMTMzNywxMyBAQCBsYXp5X3NjYW5faGVhcChMVlJlbFN0YXRlICp2YWNyZWwpCiAJCWlmICgh QnVmZmVySXNWYWxpZChidWYpKQogCQkJYnJlYWs7CiAKLQkJYmxrX2luZm8gPSAqKCh1aW50OCAq KSBwZXJfYnVmZmVyX2RhdGEpOworCQl3YXNfZWFnZXJfc2Nhbm5lZCA9ICooKGJvb2wgKikgcGVy X2J1ZmZlcl9kYXRhKTsKIAkJQ2hlY2tCdWZmZXJJc1Bpbm5lZE9uY2UoYnVmKTsKIAkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAkJYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYp OwogCiAJCXZhY3JlbC0+c2Nhbm5lZF9wYWdlcysrOwotCQlpZiAoYmxrX2luZm8gJiBWQUNfQkxL X1dBU19FQUdFUl9TQ0FOTkVEKQorCQlpZiAod2FzX2VhZ2VyX3NjYW5uZWQpCiAJCQl2YWNyZWwt PmVhZ2VyX3NjYW5uZWRfcGFnZXMrKzsKIAogCQkvKiBSZXBvcnQgYXMgYmxvY2sgc2Nhbm5lZCwg dXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbiAqLwpAQCAtMTQxNyw3ICsxNDE0LDYg QEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQlpZiAoZ290X2NsZWFudXBf bG9jaykKIAkJCW5kZWxldGVkID0gbGF6eV9zY2FuX3BydW5lKHZhY3JlbCwgYnVmLCBibGtubywg cGFnZSwKIAkJCQkJCQkJCSAgIHZtYnVmZmVyLAotCQkJCQkJCQkJICAgYmxrX2luZm8gJiBWQUNf QkxLX0FMTF9WSVNJQkxFX0FDQ09SRElOR19UT19WTSwKIAkJCQkJCQkJCSAgICZoYXNfbHBkZWFk X2l0ZW1zLCAmdm1fcGFnZV9mcm96ZW4pOwogCiAJCS8qCkBAIC0xNDM0LDggKzE0MzAsNyBAQCBs YXp5X3NjYW5faGVhcChMVlJlbFN0YXRlICp2YWNyZWwpCiAJCSAqIGV4Y2x1ZGUgcGFnZXMgc2tp cHBlZCBkdWUgdG8gY2xlYW51cCBsb2NrIGNvbnRlbnRpb24gZnJvbSBlYWdlcgogCQkgKiBmcmVl emUgYWxnb3JpdGhtIGNhcHMuCiAJCSAqLwotCQlpZiAoZ290X2NsZWFudXBfbG9jayAmJgotCQkJ KGJsa19pbmZvICYgVkFDX0JMS19XQVNfRUFHRVJfU0NBTk5FRCkpCisJCWlmIChnb3RfY2xlYW51 cF9sb2NrICYmIHdhc19lYWdlcl9zY2FubmVkKQogCQl7CiAJCQkvKiBBZ2dyZXNzaXZlIHZhY3V1 bXMgZG8gbm90IGVhZ2VyIHNjYW4uICovCiAJCQlBc3NlcnQoIXZhY3JlbC0+YWdncmVzc2l2ZSk7 CkBAIC0xNjAyLDcgKzE1OTcsNiBAQCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soUmVhZFN0cmVh bSAqc3RyZWFtLAogewogCUJsb2NrTnVtYmVyIG5leHRfYmxvY2s7CiAJTFZSZWxTdGF0ZSAqdmFj cmVsID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOwotCXVpbnQ4CQlibGtfaW5mbyA9IDA7CiAKIAkv KiByZWxpZXMgb24gSW52YWxpZEJsb2NrTnVtYmVyICsgMSBvdmVyZmxvd2luZyB0byAwIG9uIGZp cnN0IGNhbGwgKi8KIAluZXh0X2Jsb2NrID0gdmFjcmVsLT5jdXJyZW50X2Jsb2NrICsgMTsKQEAg LTE2NjUsOCArMTY1OSw4IEBAIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jayhSZWFkU3RyZWFtICpz dHJlYW0sCiAJCSAqIG90aGVyd2lzZSB0aGV5IHdvdWxkJ3ZlIGJlZW4gdW5za2lwcGFibGUuCiAJ CSAqLwogCQl2YWNyZWwtPmN1cnJlbnRfYmxvY2sgPSBuZXh0X2Jsb2NrOwotCQlibGtfaW5mbyB8 PSBWQUNfQkxLX0FMTF9WSVNJQkxFX0FDQ09SRElOR19UT19WTTsKLQkJKigodWludDggKikgcGVy X2J1ZmZlcl9kYXRhKSA9IGJsa19pbmZvOworCQkvKiBCbG9jayB3YXMgbm90IGVhZ2VyIHNjYW5u ZWQgKi8KKwkJKigoYm9vbCAqKSBwZXJfYnVmZmVyX2RhdGEpID0gZmFsc2U7CiAJCXJldHVybiB2 YWNyZWwtPmN1cnJlbnRfYmxvY2s7CiAJfQogCWVsc2UKQEAgLTE2NzgsMTEgKzE2NzIsNyBAQCBo ZWFwX3ZhY19zY2FuX25leHRfYmxvY2soUmVhZFN0cmVhbSAqc3RyZWFtLAogCQlBc3NlcnQobmV4 dF9ibG9jayA9PSB2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfYmxvY2spOwogCiAJCXZhY3JlbC0+ Y3VycmVudF9ibG9jayA9IG5leHRfYmxvY2s7Ci0JCWlmICh2YWNyZWwtPm5leHRfdW5za2lwcGFi bGVfYWxsdmlzKQotCQkJYmxrX2luZm8gfD0gVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdf VE9fVk07Ci0JCWlmICh2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZCkKLQkJ CWJsa19pbmZvIHw9IFZBQ19CTEtfV0FTX0VBR0VSX1NDQU5ORUQ7Ci0JCSooKHVpbnQ4ICopIHBl cl9idWZmZXJfZGF0YSkgPSBibGtfaW5mbzsKKwkJKigoYm9vbCAqKSBwZXJfYnVmZmVyX2RhdGEp ID0gdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQ7CiAJCXJldHVybiB2YWNy ZWwtPmN1cnJlbnRfYmxvY2s7CiAJfQogfQpAQCAtMTcwNyw3ICsxNjk3LDYgQEAgZmluZF9uZXh0 X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMp CiAJQmxvY2tOdW1iZXIgbmV4dF91bnNraXBwYWJsZV9ibG9jayA9IHZhY3JlbC0+bmV4dF91bnNr aXBwYWJsZV9ibG9jayArIDE7CiAJQnVmZmVyCQluZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyID0g dmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyOwogCWJvb2wJCW5leHRfdW5za2lwcGFi bGVfZWFnZXJfc2Nhbm5lZCA9IGZhbHNlOwotCWJvb2wJCW5leHRfdW5za2lwcGFibGVfYWxsdmlz OwogCiAJKnNraXBzYWxsdmlzID0gZmFsc2U7CiAKQEAgLTE3MTcsNyArMTcwNiw2IEBAIGZpbmRf bmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxs dmlzKQogCQkJCQkJCQkJCQkJCSAgIG5leHRfdW5za2lwcGFibGVfYmxvY2ssCiAJCQkJCQkJCQkJ CQkJICAgJm5leHRfdW5za2lwcGFibGVfdm1idWZmZXIpOwogCi0JCW5leHRfdW5za2lwcGFibGVf YWxsdmlzID0gKG1hcGJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwOwogCiAJ CS8qCiAJCSAqIEF0IHRoZSBzdGFydCBvZiBlYWNoIGVhZ2VyIHNjYW4gcmVnaW9uLCBub3JtYWwg dmFjdXVtcyB3aXRoIGVhZ2VyCkBAIC0xNzM2LDcgKzE3MjQsNyBAQCBmaW5kX25leHRfdW5za2lw cGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZpcykKIAkJICog QSBibG9jayBpcyB1bnNraXBwYWJsZSBpZiBpdCBpcyBub3QgYWxsIHZpc2libGUgYWNjb3JkaW5n IHRvIHRoZQogCQkgKiB2aXNpYmlsaXR5IG1hcC4KIAkJICovCi0JCWlmICghbmV4dF91bnNraXBw YWJsZV9hbGx2aXMpCisJCWlmICgobWFwYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUp ID09IDApCiAJCXsKIAkJCUFzc2VydCgobWFwYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TikgPT0gMCk7CiAJCQlicmVhazsKQEAgLTE3OTMsNyArMTc4MSw2IEBAIGZpbmRfbmV4dF91bnNr aXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKQogCiAJ Lyogd3JpdGUgdGhlIGxvY2FsIHZhcmlhYmxlcyBiYWNrIHRvIHZhY3JlbCAqLwogCXZhY3JlbC0+ bmV4dF91bnNraXBwYWJsZV9ibG9jayA9IG5leHRfdW5za2lwcGFibGVfYmxvY2s7Ci0JdmFjcmVs LT5uZXh0X3Vuc2tpcHBhYmxlX2FsbHZpcyA9IG5leHRfdW5za2lwcGFibGVfYWxsdmlzOwogCXZh Y3JlbC0+bmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVkID0gbmV4dF91bnNraXBwYWJsZV9l YWdlcl9zY2FubmVkOwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlciA9IG5leHRf dW5za2lwcGFibGVfdm1idWZmZXI7CiB9CkBAIC0xOTU0LDkgKzE5NDEsNyBAQCBjbXBPZmZzZXRO dW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAgKiBDYWxsZXIgbXVzdCBob2xk IHBpbiBhbmQgYnVmZmVyIGNsZWFudXAgbG9jayBvbiB0aGUgYnVmZmVyLgogICoKICAqIHZtYnVm ZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgVk0gYmxvY2sgd2l0aCB2aXNpYmlsaXR5 IGluZm9ybWF0aW9uCi0gKiBmb3IgdGhlIGhlYXAgYmxvY2ssIGJsa25vLiBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gaXMgdGhlIHNhdmVkCi0gKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUg aGVhcCBibG9jayBsb29rZWQgdXAgZWFybGllciBieSB0aGUgY2FsbGVyLiBXZQotICogd29uJ3Qg cmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBvZiBkYXRlLgor ICogZm9yIHRoZSBoZWFwIGJsb2NrLCBibGtuby4KICAqCiAgKiAqaGFzX2xwZGVhZF9pdGVtcyBp cyBzZXQgdG8gdHJ1ZSBvciBmYWxzZSBkZXBlbmRpbmcgb24gd2hldGhlciwgdXBvbiByZXR1cm4K ICAqIGZyb20gdGhpcyBmdW5jdGlvbiwgYW55IExQX0RFQUQgaXRlbXMgYXJlIHN0aWxsIHByZXNl bnQgb24gdGhlIHBhZ2UuCkBAIC0xOTczLDcgKzE5NTgsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLAogCQkJCUJsb2NrTnVtYmVyIGJsa25vLAogCQkJCVBhZ2UgcGFnZSwK IAkJCQlCdWZmZXIgdm1idWZmZXIsCi0JCQkJYm9vbCBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0sCiAJCQkJYm9vbCAqaGFzX2xwZGVhZF9pdGVtcywKIAkJCQlib29sICp2bV9wYWdlX2Zyb3pl bikKIHsKQEAgLTE5ODcsNiArMTk3MSw4IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2 YWNyZWwsCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52aXN0ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNy ZWwtPmN1dG9mZnMsCiAJfTsKKwl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CisJdWludDgJCW5ld192 bWJpdHMgPSAwOwogCiAJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZikgPT0gYmxrbm8p OwogCkBAIC0yMDg5LDcwICsyMDc1LDcgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVt cykpOwogCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUp OwogCi0JLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24g aW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3pl biB2YXJpYWJsZXMKLQkgKi8KLQlpZiAoKHByZXN1bHQuYWxsX3Zpc2libGUgJiYgIWFsbF92aXNp YmxlX2FjY29yZGluZ190b192bSkgfHwKLQkJKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxM X0ZST1pFTihyZWwsIGJsa25vLCAmdm1idWZmZXIpKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRz OwotCQl1aW50OAkJbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQkJ aWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJCW5ld192bWJpdHMgfD0gVklTSUJJTElUWU1BUF9B TExfRlJPWkVOOwotCi0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0 IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZl bCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVj a3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhh dCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkgKgotCQkgKiBFdmVuIGlmIFBEX0FMTF9W SVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0Ci0JCSAq IHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLCBhcyBpdCBtdXN0IGJlIG1h cmtlZCBkaXJ0eQotCQkgKiBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwgY2hhaW4uIFRoZSBv bmx5IHNjZW5hcmlvIHdoZXJlIGl0IGlzCi0JCSAqIG5vdCBhbHJlYWR5IGRpcnR5IGlzIGlmIHRo ZSBWTSB3YXMgcmVtb3ZlZCwgYW5kIHRoYXQgaXNuJ3Qgd29ydGgKLQkJICogb3B0aW1pemluZyBm b3IuCi0JCSAqLwotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJTWFya0J1ZmZlckRpcnR5 KGJ1Zik7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcgc2V0IGFsbC1mcm96ZW4s IHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQKLQkJICogYXMgdGhlIGN1dG9mZl94aWQsIHNp bmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZmaWNpZW50IHRvCi0JCSAqIG1ha2Ug ZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxl cwotCQkgKiB3ZXJlIGZyb3plbi4KLQkJICovCi0JCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVu IHx8Ci0JCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jp em9uKSk7Ci0KLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBi bGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkgICB2 bWJ1ZmZlciwKLQkJCQkJCQkJCSAgIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJ CQkJCSAgIG5ld192bWJpdHMpOwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIHdhc24ndCBhbHJl YWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUKLQkJICogVk0sIGNv dW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KLQkJICovCi0JCWlmICgob2xkX3ZtYml0 cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZhY3JlbC0+dm1f bmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCQl7Ci0J CQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLQkJCQkqdm1fcGFnZV9m cm96ZW4gPSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkJIHByZXN1bHQuYWxsX2Zyb3plbikKLQkJ ewotCQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4g PSB0cnVlOwotCQl9Ci0JfQorCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo dmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpOwogCiAJLyoKIAkgKiBBcyBvZiBQb3N0Z3Jl U1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRo ZQpAQCAtMjE2MCw4ICsyMDgzLDggQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3Jl bCwKIAkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxs ZWQsIHNvIHdlIG11c3QgcmVjaGVjawogCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNs dWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KIAkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJs ZV9hY2NvcmRpbmdfdG9fdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJCSB2aXNp YmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpICE9IDAp CisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYmCisJCShvbGRfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7CiAJCWVyZXBvcnQoV0FSTklORywKIAkJCQko ZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKQEAgLTIxOTksNiArMjEyMiw2OSBAQCBs YXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkJCQkJCVZJU0lCSUxJVFlNQVBf VkFMSURfQklUUyk7CiAJfQogCisJaWYgKCFwcmVzdWx0LmFsbF92aXNpYmxlKQorCQlyZXR1cm4g cHJlc3VsdC5uZGVsZXRlZDsKKworCS8qIFNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2Ug dmlzaWJpbGl0eSBoaW50ICovCisJbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEU7CisKKwlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQorCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTjsKKworCS8qIE5vdGhpbmcgdG8gZG8gKi8KKwlpZiAob2xkX3ZtYml0 cyA9PSBuZXdfdm1iaXRzKQorCQlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKKworCUFzc2VydChw cmVzdWx0LmFsbF92aXNpYmxlKTsKKworCS8qCisJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBj YXNlIHRoYXQgdGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0IHdoaWxlCisJICogdGhlIHBh Z2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYgY2hl Y2tzdW1zCisJICogYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMg c28gdGhhdCB3ZSBnZXQgYmFjayBpbgorCSAqIHN5bmMuCisJICoKKwkgKiBFdmVuIGlmIFBEX0FM TF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0CisJ ICogdW5uZWNlc3NhcmlseSBkaXJ0eWluZyB0aGUgaGVhcCBidWZmZXIsIGFzIGl0IG11c3QgYmUg bWFya2VkIGRpcnR5CisJICogYmVmb3JlIGFkZGluZyBpdCB0byB0aGUgV0FMIGNoYWluLiBUaGUg b25seSBzY2VuYXJpbyB3aGVyZSBpdCBpcyBub3QKKwkgKiBhbHJlYWR5IGRpcnR5IGlzIGlmIHRo ZSBWTSB3YXMgcmVtb3ZlZCwgYW5kIHRoYXQgaXNuJ3Qgd29ydGggb3B0aW1pemluZworCSAqIGZv ci4KKwkgKi8KKwlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwlNYXJrQnVmZmVyRGlydHkoYnVm KTsKKworCS8qCisJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcgc2V0IGFsbC1mcm96ZW4sIHdlIHBh c3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKKwkgKiB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBz bmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZQorCSAqIGV2ZXJ5dGhp bmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBm cm96ZW4uCisJICovCisJQXNzZXJ0KCFwcmVzdWx0LmFsbF9mcm96ZW4gfHwKKwkJICAgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOworCisJdmlzaWJp bGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCisJCQkJCSAgSW52YWxpZFhMb2dS ZWNQdHIsCisJCQkJCSAgdm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJ CQkJICBuZXdfdm1iaXRzKTsKKworCS8qCisJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkg c2V0IGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuIGluIHRoZSBWTSwKKwkgKiBjb3VudCBp dCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCisJICovCisJaWYgKChvbGRfdm1iaXRzICYgVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKKwl7CisJCXZhY3JlbC0+dm1fbmV3X3Zpc2li bGVfcGFnZXMrKzsKKwkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKKwkJeworCQkJdmFjcmVsLT52 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKKwkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7 CisJCX0KKwl9CisJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU4pID09IDAgJiYKKwkJCSBwcmVzdWx0LmFsbF9mcm96ZW4pCisJeworCQl2YWNyZWwtPnZtX25l d19mcm96ZW5fcGFnZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKKwl9CisKIAlyZXR1 cm4gcHJlc3VsdC5uZGVsZXRlZDsKIH0KIAotLSAKMi40My4wCgo= --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Disposition: attachment; filename="v26-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o06532 RnJvbSBhZDFkZGRlNjA5NDkxZjYwNmFkYzRiODc0MjljMzgwZTNiODZhZDUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MzY6MzkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNiAwMy8xNV0gUmVmYWN0b3IgbGF6eV9zY2FuX3BydW5lKCkgVk0gY2xlYXIgbG9naWMg aW50bwogaGVscGVyCgpFbmNhcHN1bGF0aW5nIHRoZW0gaW4gYSBoZWxwZXIgbWFrZXMgdGhlIHdo b2xlIGZ1bmN0aW9uIGNsZWFyZXIuIEJlZm9yZQp3ZSBtb3ZlIGFsbCBvZiB0aGlzIGxvZ2ljIGlu dG8gaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSwgd2Ugd2FudCB0bwptYWtlIGl0IG1vcmUg Y29tcGFjdCBhbmQgY2xlYXIuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIHwgMTIyICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc4 IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwppbmRleCA0MzYxNDNjZDEyYy4uNDI1ZGMyZjg2OTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKQEAgLTQyOCw2ICs0MjgsMTEgQEAgc3RhdGljIHZvaWQgZmluZF9u ZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2 aXMpOwogc3RhdGljIGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNy ZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2Us CiAJCQkJCQkJCSAgIGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOworc3RhdGljIHZv aWQgaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhl YXBfYnVmZmVyLAorCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQYWdlIGhlYXBf cGFnZSwKKwkJCQkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZm ZXIgdm1idWZmZXIsCisJCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKIHN0YXRpYyBpbnQJbGF6 eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQlCbG9j a051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCUJ1ZmZlciB2bWJ1ZmZlciwKQEAgLTE5 MzUsNiArMTk0MCw3NyBAQCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZv aWQgKmIpCiAJcmV0dXJuIHBnX2NtcF91MTYoKihjb25zdCBPZmZzZXROdW1iZXIgKikgYSwgKihj b25zdCBPZmZzZXROdW1iZXIgKikgYik7CiB9CiAKKy8qCisgKiBIZWxwZXIgdG8gY29ycmVjdCBh bnkgY29ycnVwdGlvbiBkZXRlY3RlZCBvbiBhbiBoZWFwIHBhZ2UgYW5kIGl0cworICogY29ycmVz cG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVyIHBydW5pbmcgYnV0IGJlZm9yZSBzZXR0 aW5nIHRoZQorICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4YW1pbmVzIHRoZSBoZWFwIHBhZ2UsIHRo ZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKKyAqIG51bWJlciBvZiBkZWFkIGl0ZW1zIHBy ZXZpb3VzbHkgaWRlbnRpZmllZC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVk IHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sgb24gdGhlIGhlYXAKKyAqIGJ1ZmZlciwg YW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVuIGRpc2NvdmVyZWQgdW5kZXIgdGhhdCBz YW1lIGxvY2suCisKKyAqIFRoZSBwcm92aWRlZCB2bWJpdHMgbXVzdCByZWZsZWN0IHRoZSBjdXJy ZW50IHN0YXRlIG9mIHRoZSBWTSBibG9jaworICogcmVmZXJlbmNlZCBieSB2bWJ1ZmZlci4gQWx0 aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2NrIG9uIHRoZSBWTSBidWZmZXIsIGl0CisgKiBpcyBw aW5uZWQsIGFuZCB0aGUgaGVhcCBidWZmZXIgaXMgZXhjbHVzaXZlbHkgbG9ja2VkLCBlbnN1cmlu ZyB0aGF0IG5vCisgKiBvdGhlciBiYWNrZW5kIGNhbiB1cGRhdGUgdGhlIFZNIGJpdHMgY29ycmVz cG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4KKyAqLworc3RhdGljIHZvaWQKK2lkZW50aWZ5X2Fu ZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKKwkJ CQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAg aW50IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCSAg IHVpbnQ4IHZtYml0cykKK3sKKwlBc3NlcnQodmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHJlbCwg aGVhcF9ibGssICZ2bWJ1ZmZlcikgPT0gdm1iaXRzKTsKKworCUFzc2VydChCdWZmZXJJc0xvY2tl ZEJ5TWVJbk1vZGUoaGVhcF9idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOworCisJLyoK KwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQg bmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZl ciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICogY2xlYXJlZCBhZnRlciBoZWFw X3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKKwkg KiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1 cHQuCisJICovCisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJKCh2bWJp dHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKSkKKwl7CisJCWVyZXBvcnQoV0FS TklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkgZXJybXNn KCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBp cyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7CisKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWws IGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwor CX0KKworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisJ ICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRz LCBzbyBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFy IHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICogeWV0LCB3aGlsZSBQRF9BTExfVklT SUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCisJICogbmV2ZXIg bW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgp IGlzCisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQn cyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rp b24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQorCSAqIHRoaW5rIGFyZSBu b3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCisJICogUERf QUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJICogVGhlcmUgc2hvdWxkIG5ldmVy IGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAorCSAq IGhvd2V2ZXIuCisJICovCisJZWxzZSBpZiAoUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYm IG5scGRlYWRfaXRlbXMgPiAwKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBM UF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIg cGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2Jsaykp KTsKKworCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFnZSk7CisJCU1hcmtCdWZmZXJEaXJ0 eShoZWFwX2J1ZmZlcik7CisJCXZpc2liaWxpdHltYXBfY2xlYXIocmVsLCBoZWFwX2Jsaywgdm1i dWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwl9Cit9CisKIC8qCiAg KglsYXp5X3NjYW5fcHJ1bmUoKSAtLSBsYXp5X3NjYW5faGVhcCgpIHBydW5pbmcgYW5kIGZyZWV6 aW5nLgogICoKQEAgLTIwNzcsNTAgKzIxNTMsOCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0 ZSAqdmFjcmVsLAogCiAJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyh2YWNy ZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcik7CiAKLQkvKgotCSAqIEFzIG9mIFBvc3RncmVTUUwg OS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0J ICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQg dGhlIGJpdCBnb3QKLQkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygp IHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawotCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVm b3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KLQkgKi8KLQlpZiAoIVBhZ2VJ c0FsbFZpc2libGUocGFnZSkgJiYKLQkJKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9W SVNJQkxFKSAhPSAwKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwt dmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIg cGFnZSAldSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkpOwotCi0JCXZpc2liaWxp dHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KLQotCS8qCi0JICogSXQncyBwb3NzaWJsZSBmb3IgdGhl IHZhbHVlIHJldHVybmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25J ZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAqIHdyb25nIGZvciB1cyB0byBz ZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCi0JICog eWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4 bWluIHZhbHVlCi0JICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVt b3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMg cmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAotCSAqIHNvIGlmIHdl IHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhh dCB3ZQotCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkg YXJlLCBhbmQgdGhlCi0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgotCSAqCi0J ICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERf QUxMX1ZJU0lCTEUgc2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0JZWxzZSBpZiAocHJlc3VsdC5s cGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2libGUocGFnZSkpCi0JewotCQllcmVwb3J0 KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJIGVy cm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNp YmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCXZhY3JlbC0+cmVsbmFtZSwg Ymxrbm8pKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKLQkJTWFya0J1ZmZlckRp cnR5KGJ1Zik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1 ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KKwlpZGVudGlmeV9h bmRfZml4X3ZtX2NvcnJ1cHRpb24odmFjcmVsLT5yZWwsIGJ1ZiwgYmxrbm8sIHBhZ2UsCisJCQkJ CQkJCSAgIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlciwgb2xkX3ZtYml0cyk7CiAKIAlp ZiAoIXByZXN1bHQuYWxsX3Zpc2libGUpCiAJCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwotLSAK Mi40My4wCgo= --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Disposition: attachment; filename="v26-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o0byz3 RnJvbSAwYzM2ODQ5NzkyZDI2ODQ0M2M0ZGUzMDBlODYwMDhmN2NkMWFkZWZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNiAwNC8xNV0gU2V0IHRoZSBWTSBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp CgpUaGlzIGhhcyBubyBpbmRlcGVuZGVudCBiZW5lZml0LiBJdCBpcyBtZWFudCBmb3IgZWFzZSBv ZiByZXZpZXcuIEFzIG9mCnRoaXMgY29tbWl0LCB0aGVyZSBpcyBzdGlsbCBhIHNlcGFyYXRlIFdB TCByZWNvcmQgZW1pdHRlZCBmb3Igc2V0dGluZwp0aGUgVk0gYWZ0ZXIgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEJ1dCBpdCBpcyBlYXNpZXIgdG8gcmV2aWV3IGlmIG1vdmluZwp0aGUgbG9naWMgaW50 byBwcnVuZWhlYXAuYyBpcyBzZXBhcmF0ZSBmcm9tIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1l CldBTCByZWNvcmQuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwg MzAxICsrKysrKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jIHwgMTQyICstLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCAgICAgICAgICB8ICAyMSArKwogMyBmaWxlcyBjaGFuZ2VkLCAyODUgaW5zZXJ0aW9ucygr KSwgMTc5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg Y2E0NDIyNWExMGUuLjBkODI1MjI4YjYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv 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 dm9pZCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIg aGVhcF9idWZmZXIsCisJCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBhZ2UgaGVh cF9wYWdlLCBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIs CisJCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJCQkgIFJlbGF0aW9uIHJlbGF0aW9u LAorCQkJCQkJCQkgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWZmZXIsIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJICBpbnQg bmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJICB1aW50OCAqb2xkX3ZtYml0cywKKwkJCQkJCQkJICB1 aW50OCAqbmV3X3ZtYml0cyk7CiAKIAogLyoKQEAgLTI4MCw2ICsyOTQsNyBAQCBoZWFwX3BhZ2Vf cHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJUHJ1bmVGcmVl emVQYXJhbXMgcGFyYW1zID0gewogCQkJCS5yZWxhdGlvbiA9IHJlbGF0aW9uLAogCQkJCS5idWZm ZXIgPSBidWZmZXIsCisJCQkJLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlciwKIAkJCQkucmVhc29u ID0gUFJVTkVfT05fQUNDRVNTLAogCQkJCS5vcHRpb25zID0gMCwKIAkJCQkudmlzdGVzdCA9IHZp c3Rlc3QsCkBAIC0zMzgsNiArMzUzLDggQEAgcHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJLyogY3V0b2ZmcyBtdXN0IGJlIHByb3ZpZGVkIGlmIHdlIHdpbGwg YXR0ZW1wdCBmcmVlemluZyAqLwogCUFzc2VydCghKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUpIHx8IHBhcmFtcy0+Y3V0b2Zmcyk7CiAJcHJzdGF0ZS0+YXR0ZW1wdF9m cmVlemUgPSAocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsK KwlwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZNKSAhPSAwOwogCXByc3RhdGUtPmN1dG9mZnMgPSBwYXJhbXMt PmN1dG9mZnM7CiAKIAkvKgpAQCAtMzg2LDUxICs0MDMsNTQgQEAgcHJ1bmVfZnJlZXplX3NldHVw 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 SWQ7CiB9CkBAIC03NjUsMTAgKzc4NSwxMzQgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXJldHVybiBkb19mcmVlemU7CiB9CiAKKy8q CisgKiBIZWxwZXIgdG8gY29ycmVjdCBhbnkgY29ycnVwdGlvbiBkZXRlY3RlZCBvbiBhbiBoZWFw IHBhZ2UgYW5kIGl0cworICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVy IHBydW5pbmcgYnV0IGJlZm9yZSBzZXR0aW5nIHRoZQorICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4 YW1pbmVzIHRoZSBoZWFwIHBhZ2UsIHRoZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKKyAq IG51bWJlciBvZiBkZWFkIGl0ZW1zIHByZXZpb3VzbHkgaWRlbnRpZmllZC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sg b24gdGhlIGhlYXAKKyAqIGJ1ZmZlciwgYW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVu IGRpc2NvdmVyZWQgdW5kZXIgdGhhdCBzYW1lIGxvY2suCisgKgorICogVGhlIHByb3ZpZGVkIHZt Yml0cyBtdXN0IHJlZmxlY3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFZNIGJsb2NrCisgKiBy ZWZlcmVuY2VkIGJ5IHZtYnVmZmVyLiBBbHRob3VnaCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24g dGhlIFZNIGJ1ZmZlciwgaXQKKyAqIGlzIHBpbm5lZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBl eGNsdXNpdmVseSBsb2NrZWQsIGVuc3VyaW5nIHRoYXQgbm8KKyAqIG90aGVyIGJhY2tlbmQgY2Fu IHVwZGF0ZSB0aGUgVk0gYml0cyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICov CitzdGF0aWMgdm9pZAoraWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGhlYXBfYnVmZmVyLAorCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQ YWdlIGhlYXBfcGFnZSwKKwkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCisJCQkJCQkJICAgdWludDggdm1iaXRzKQoreworCUFzc2VydCh2aXNp YmlsaXR5bWFwX2dldF9zdGF0dXMocmVsLCBoZWFwX2JsaywgJnZtYnVmZmVyKSA9PSB2bWJpdHMp OworCisJQXNzZXJ0KEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9kZShoZWFwX2J1ZmZlciwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKSk7CisKKwkvKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUg dmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1s ZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBn b3QKKwkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxs ZWQsIHNvIHdlIG11c3QgcmVjaGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNs dWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwlpZiAoIVBhZ2VJc0FsbFZpc2li bGUoaGVhcF9wYWdlKSAmJgorCQkoKHZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUp ICE9IDApKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFU QV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJs ZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAl dSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKwor CQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZv ciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVz IHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUK KwkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBz YWZlIHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3RO b25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0 aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28g aWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxl cyB0aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1 YWxseSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJ ICoKKwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0 aCBQRF9BTExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwllbHNlIGlmIChQYWdl SXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYgbmxwZGVhZF9pdGVtcyA+IDApCisJeworCQllcmVw b3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJ IGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12 aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksIGhlYXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZpc2libGUoaGVh cF9wYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmZmVyKTsKKwkJdmlzaWJpbGl0eW1h cF9jbGVhcihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpOworCX0KK30KKworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlz aWJpbGl0eSBtYXAgYml0cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCisgKiBmb3IgaGVh cF9ibGsgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgUHJ1bmVTdGF0ZSBhbmQgVk0uCisgKgor ICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxseSBzZXQgdGhlIFZNIGJpdHMgb3IgcGFn ZS1sZXZlbCB2aXNpYmlsaXR5CisgKiBoaW50LCBQRF9BTExfVklTSUJMRS4KKyAqCisgKiBIb3dl dmVyLCBpZiBpdCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZpc2liaWxpdHkgaGludCBvciBW TSBpcworICogY29ycnVwdGVkLCBpdCB3aWxsIGZpeCB0aGVtIGJ5IGNsZWFyaW5nIHRoZSBWTSBi aXRzIGFuZCB2aXNpYmlsaXR5IGhpbnQuCisgKiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9u ZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24uCisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBi b3RoIFZNIGJpdHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCByZXR1cm5pbmcgdGhlCisgKiBj dXJyZW50IHZhbHVlIG9mIHRoZSBWTSBiaXRzIGluICpvbGRfdm1iaXRzIGFuZCB0aGUgZGVzaXJl ZCBuZXcgdmFsdWUgb2YKKyAqIHRoZSBWTSBiaXRzIGluICpuZXdfdm1iaXRzLgorICovCitzdGF0 aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJ CSAgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZl ciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAor CQkJCQkgIGludCBubHBkZWFkX2l0ZW1zLAorCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAorCQkJ CQkgIHVpbnQ4ICpuZXdfdm1iaXRzKQoreworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVf dm0pCisJCXJldHVybiBmYWxzZTsKKworCSpvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRf c3RhdHVzKHJlbGF0aW9uLCBoZWFwX2JsaywKKwkJCQkJCQkJCQkgICAmdm1idWZmZXIpOworCisJ LyogV2UgZG8gdGhpcyBldmVuIGlmIG5vdCBhbGwtdmlzaWJsZSAqLworCWlkZW50aWZ5X2FuZF9m aXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwgaGVhcF9idWZmZXIsIGhlYXBfYmxrLCBoZWFwX3Bh Z2UsCisJCQkJCQkJCSAgIG5scGRlYWRfaXRlbXMsIHZtYnVmZmVyLAorCQkJCQkJCQkgICAqb2xk X3ZtYml0cyk7CisKKwlpZiAoIXByc3RhdGUtPmFsbF92aXNpYmxlKQorCQlyZXR1cm4gZmFsc2U7 CisKKwkqbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisKKwlpZiAocHJz dGF0ZS0+YWxsX2Zyb3plbikKKwkJKm5ld192bWJpdHMgfD0gVklTSUJJTElUWU1BUF9BTExfRlJP WkVOOworCisJaWYgKCpuZXdfdm1iaXRzID09ICpvbGRfdm1iaXRzKQorCXsKKwkJKm5ld192bWJp dHMgPSAwOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKIAogLyoK ICAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXpl IHR1cGxlcyBvbiB0aGUKLSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElm IHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgor ICogdGhlIFZNLgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51 cCBsb2NrIG9uIHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZT TSBpbmZvcm1hdGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQK QEAgLTc4MywxMiArOTI3LDEzIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIHR1cGxlcyBpZiBpdCdzIHJlcXVpcmVkIGluIG9yZGVy IHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlubXhpZCwgb3IKICAqIGlmIGl0J3MgY29u c2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRv IHNvCiAgKiBub3cuICBUaGUgJ3BhcmFtcy5jdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZy b3plbl94aWQnIGFuZAotICogJ25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJl ZCB3aGVuIGZyZWV6aW5nLiAgV2hlbgotICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgcGFzc2VkLCB3ZSBhbHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZQotICogYW5kIHByZXN1 bHQtPmFsbF9mcm96ZW4gYWZ0ZXIgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdG8KLSAqIG9w cG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSwgdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJl IHNldC4gIFRoZXkgYXJlCi0gKiBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5vdCBwYXNzZWQsCi0gKiBiZWNhdXNlIGF0IHRoZSBt b21lbnQgb25seSBjYWxsZXJzIHRoYXQgYWxzbyBmcmVlemUgbmVlZCB0aGF0IGluZm9ybWF0aW9u LgorICogJ25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6 aW5nLgorICoKKyAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0gaXMgc2V0IGluIHBhcmFt cyBhbmQgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mCisgKiB0aGUgcGFnZSBoYXMgY2hhbmdlZCwg d2Ugd2lsbCB1cGRhdGUgdGhlIFZNIGF0IHRoZSBzYW1lIHRpbWUgYXMgcHJ1bmluZyBhbmQKKyAq IGZyZWV6aW5nIHRoZSBoZWFwIHBhZ2UuIFdlIHdpbGwgYWxzbyB1cGRhdGUgcHJlc3VsdC0+b2xk X3ZtYml0cyBhbmQKKyAqIHByZXN1bHQtPm5ld192bWJpdHMgd2l0aCB0aGUgc3RhdGUgb2YgdGhl IFZNIGJlZm9yZSBhbmQgYWZ0ZXIgdXBkYXRpbmcgaXQKKyAqIGZvciB0aGUgY2FsbGVyIHRvIHVz ZSBpbiBib29ra2VlcGluZy4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0 ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyBy ZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBy dW5pbmcuCkBAIC04MTMsMTMgKzk1OCwxOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxt aW5fbXhpZCkKIHsKIAlCdWZmZXIJCWJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVyOworCUJ1ZmZlcgkJ dm1idWZmZXIgPSBwYXJhbXMtPnZtYnVmZmVyOwogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CisJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1 ZmZlcik7CiAJUHJ1bmVTdGF0ZQlwcnN0YXRlOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlk b19wcnVuZTsKIAlib29sCQlkb19oaW50X3BydW5lOworCWJvb2wJCWRvX3NldF92bTsKIAlib29s CQlkaWRfdHVwbGVfaGludF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndh bF9mcGk7CisJdWludDgJCW5ld192bWJpdHMgPSAwOworCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsK KwogCiAJLyogSW5pdGlhbGl6ZSBwcnN0YXRlICovCiAJcHJ1bmVfZnJlZXplX3NldHVwKHBhcmFt cywKQEAgLTEwMDEsNiArMTE1Miw2NCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVu ZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFn ZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkOwogCQl9CiAJfQorCisJLyogTm93IHVwZGF0ZSB0 aGUgdmlzaWJpbGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8KKwlBc3NlcnQoIXBy c3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKKworCWRv X3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92bSgmcHJzdGF0ZSwKKwkJCQkJCQkJCSAgcGFy YW1zLT5yZWxhdGlvbiwKKwkJCQkJCQkJCSAgYmxvY2tubywKKwkJCQkJCQkJCSAgYnVmZmVyLAor CQkJCQkJCQkJICBwYWdlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgcHJzdGF0 ZS5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkgICZvbGRfdm1iaXRzLAorCQkJCQkJCQkJICAmbmV3 X3ZtYml0cyk7CisKKwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBv ZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5v dCBpbnRlbmQgdG8gc2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192 bWJpdHMgPT0gMCk7CisKKwkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2li aWxpdHkgaGludCwgaWYgcmVsZXZhbnQgKi8KKwlpZiAoZG9fc2V0X3ZtKQorCXsKKwkJQXNzZXJ0 KHByc3RhdGUuYWxsX3Zpc2libGUpOworCisJCS8qCisJCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0 aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAorCQkgKiB3aGlsZSB0 aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChp ZgorCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3Ro IGJpdHMgc28gdGhhdCB3ZQorCQkgKiBnZXQgYmFjayBpbiBzeW5jLgorCQkgKgorCQkgKiBFdmVu IGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5 IGFib3V0CisJCSAqIHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLCBhcyBp dCBtdXN0IGJlIG1hcmtlZCBkaXJ0eQorCQkgKiBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwg Y2hhaW4uIFRoZSBvbmx5IHNjZW5hcmlvIHdoZXJlIGl0IGlzCisJCSAqIG5vdCBhbHJlYWR5IGRp cnR5IGlzIGlmIHRoZSBWTSB3YXMgcmVtb3ZlZCwgYW5kIHRoYXQgaXNuJ3Qgd29ydGgKKwkJICog b3B0aW1pemluZyBmb3IuCisJCSAqLworCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJTWFy a0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcg c2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQKKwkJICogYXMgdGhl IGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZmaWNpZW50 IHRvCisJCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0 aGUgcGFnZSdzIHR1cGxlcworCQkgKiB3ZXJlIGZyb3plbi4KKwkJICovCisJCUFzc2VydCghcHJz dGF0ZS5hbGxfZnJvemVuIHx8CisJCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC0+ dm1fY29uZmxpY3RfaG9yaXpvbikpOworCisJCXZpc2liaWxpdHltYXBfc2V0KHBhcmFtcy0+cmVs YXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwKKwkJCQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJ CQkgIHZtYnVmZmVyLCBwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uLAorCQkJCQkJICBuZXdf dm1iaXRzKTsKKwl9CisKKwkvKiBTYXZlIHRoZSB2bWJpdHMgZm9yIGNhbGxlciAqLworCXByZXN1 bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOworCXByZXN1bHQtPm5ld192bWJpdHMgPSBuZXdf dm1iaXRzOwogfQogCiAKQEAgLTE0NzUsNiArMTY4NCw4IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXRO dW1iCiAJCQl7CiAJCQkJVHJhbnNhY3Rpb25JZCB4bWluOwogCisJCQkJQXNzZXJ0KHByc3RhdGUt PmF0dGVtcHRfdXBkYXRlX3ZtKTsKKwogCQkJCWlmICghSGVhcFR1cGxlSGVhZGVyWG1pbkNvbW1p dHRlZChodHVwKSkKIAkJCQl7CiAJCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNDI1ZGMyZjg2OTEuLmNjZmFkNWIy ZGJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00MjgsMTEgKzQyOCw2 IEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2 YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxhenlfc2Nhbl9uZXdfb3Jf ZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQkgICBCbG9ja051 bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNoYXJlbG9jaywgQnVmZmVy IHZtYnVmZmVyKTsKLXN0YXRpYyB2b2lkIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihS ZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJCQkJCQkJCQkgICBCbG9ja051bWJl ciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCi0JCQkJCQkJCQkJICAgaW50IG5scGRlYWRfaXRl bXMsCi0JCQkJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAotCQkJCQkJCQkJCSAgIHVpbnQ4IHZt Yml0cyk7CiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1 ZmZlciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQlC dWZmZXIgdm1idWZmZXIsCkBAIC0xOTQwLDc3ICsxOTM1LDYgQEAgY21wT2Zmc2V0TnVtYmVycyhj b25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCXJldHVybiBwZ19jbXBfdTE2KCooY29uc3Qg T2Zmc2V0TnVtYmVyICopIGEsICooY29uc3QgT2Zmc2V0TnVtYmVyICopIGIpOwogfQogCi0vKgot ICogSGVscGVyIHRvIGNvcnJlY3QgYW55IGNvcnJ1cHRpb24gZGV0ZWN0ZWQgb24gYW4gaGVhcCBw YWdlIGFuZCBpdHMKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgcGFnZSBhZnRlciBw cnVuaW5nIGJ1dCBiZWZvcmUgc2V0dGluZyB0aGUKLSAqIHZpc2liaWxpdHkgbWFwLiBJdCBleGFt aW5lcyB0aGUgaGVhcCBwYWdlLCB0aGUgYXNzb2NpYXRlZCBWTSBwYWdlLCBhbmQgdGhlCi0gKiBu dW1iZXIgb2YgZGVhZCBpdGVtcyBwcmV2aW91c2x5IGlkZW50aWZpZWQuCi0gKgotICogVGhpcyBm dW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIGFuIGV4Y2x1c2l2ZSBsb2NrIG9u IHRoZSBoZWFwCi0gKiBidWZmZXIsIGFuZCB0aGUgZGVhZCBpdGVtcyBtdXN0IGhhdmUgYmVlbiBk aXNjb3ZlcmVkIHVuZGVyIHRoYXQgc2FtZSBsb2NrLgotCi0gKiBUaGUgcHJvdmlkZWQgdm1iaXRz IG11c3QgcmVmbGVjdCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgVk0gYmxvY2sKLSAqIHJlZmVy ZW5jZWQgYnkgdm1idWZmZXIuIEFsdGhvdWdoIHdlIGRvIG5vdCBob2xkIGEgbG9jayBvbiB0aGUg Vk0gYnVmZmVyLCBpdAotICogaXMgcGlubmVkLCBhbmQgdGhlIGhlYXAgYnVmZmVyIGlzIGV4Y2x1 c2l2ZWx5IGxvY2tlZCwgZW5zdXJpbmcgdGhhdCBubwotICogb3RoZXIgYmFja2VuZCBjYW4gdXBk YXRlIHRoZSBWTSBiaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBoZWFwIHBhZ2UuCi0gKi8KLXN0 YXRpYyB2b2lkCi1pZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBC dWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBhZ2Ug aGVhcF9wYWdlLAotCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlciwKLQkJCQkJCQkgICB1aW50OCB2bWJpdHMpCi17Ci0JQXNzZXJ0KHZpc2liaWxp dHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1idWZmZXIpID09IHZtYml0cyk7Ci0K LQlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhlYXBfYnVmZmVyLCBCVUZGRVJfTE9D S19FWENMVVNJVkUpKTsKLQotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNp YmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdlLWxldmVs IGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdvdAot CSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwg c28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGlu ZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmICghUGFnZUlzQWxsVmlzaWJsZSho ZWFwX3BhZ2UpICYmCi0JCSgodm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0g MCkpCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NP UlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFya2VkIGFsbC12aXNpYmxlIGJ1 dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwK LQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBfYmxrKSkpOwotCi0JCXZp c2liaWxpdHltYXBfY2xlYXIocmVsLCBoZWFwX2Jsaywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KLQkvKgotCSAqIEl0J3MgcG9zc2libGUgZm9yIHRo ZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9u SWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3cm9uZyBmb3IgdXMgdG8g c2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQotCSAq IHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUg eG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJl bW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVz IHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBzbyBpZiB3 ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRo YXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5 IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KLQkgKgot CSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBE X0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWVsc2UgaWYgKFBhZ2VJc0Fs bFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1zID4gMCkKLQl7Ci0JCWVyZXBvcnQo V0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJy bXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2li bGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3Bh Z2UpOwotCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOwotCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURf QklUUyk7Ci0JfQotfQotCiAvKgogICoJbGF6eV9zY2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hl YXAoKSBwcnVuaW5nIGFuZCBmcmVlemluZy4KICAqCkBAIC0yMDQyLDEzICsxOTY2LDEyIEBAIGxh enlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJUHJ1bmVGcmVlemVQYXJhbXMgcGFy YW1zID0gewogCQkucmVsYXRpb24gPSByZWwsCiAJCS5idWZmZXIgPSBidWYsCisJCS52bWJ1ZmZl ciA9IHZtYnVmZmVyLAogCQkucmVhc29uID0gUFJVTkVfVkFDVVVNX1NDQU4sCi0JCS5vcHRpb25z ID0gSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwKKwkJLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVf RlJFRVpFIHwgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSwKIAkJLnZpc3Rlc3QgPSB2YWNyZWwt PnZpc3Rlc3QsCiAJCS5jdXRvZmZzID0gJnZhY3JlbC0+Y3V0b2ZmcywKIAl9OwotCXVpbnQ4CQlv bGRfdm1iaXRzID0gMDsKLQl1aW50OAkJbmV3X3ZtYml0cyA9IDA7CiAKIAlBc3NlcnQoQnVmZmVy R2V0QmxvY2tOdW1iZXIoYnVmKSA9PSBibGtubyk7CiAKQEAgLTIxNDgsNzMgKzIwNzEsMjQgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKiBEaWQgd2UgZmluZCBMUF9E RUFEIGl0ZW1zPyAqLwogCSpoYXNfbHBkZWFkX2l0ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1z ID4gMCk7CiAKLQlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9p dGVtcykpOwotCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2li bGUpOwotCi0Jb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyh2YWNyZWwtPnJl bCwgYmxrbm8sICZ2bWJ1ZmZlcik7Ci0KLQlpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24o dmFjcmVsLT5yZWwsIGJ1ZiwgYmxrbm8sIHBhZ2UsCi0JCQkJCQkJCSAgIHByZXN1bHQubHBkZWFk X2l0ZW1zLCB2bWJ1ZmZlciwgb2xkX3ZtYml0cyk7Ci0KLQlpZiAoIXByZXN1bHQuYWxsX3Zpc2li bGUpCi0JCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwotCi0JLyogU2V0IHRoZSB2aXNpYmlsaXR5 IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQgKi8KLQluZXdfdm1iaXRzID0gVklTSUJJTElU WU1BUF9BTExfVklTSUJMRTsKLQotCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCW5ld192bWJp dHMgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwotCi0JLyogTm90aGluZyB0byBkbyAqLwot CWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCi0JCXJldHVybiBwcmVzdWx0Lm5kZWxldGVk OwotCi0JQXNzZXJ0KHByZXN1bHQuYWxsX3Zpc2libGUpOwotCi0JLyoKLQkgKiBJdCBzaG91bGQg bmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQgd2hp bGUKLQkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBh bGxvd2VkIChpZiBjaGVja3N1bXMKLQkgKiBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJkbGVzcywg c2V0IGJvdGggYml0cyBzbyB0aGF0IHdlIGdldCBiYWNrIGluCi0JICogc3luYy4KLQkgKgotCSAq IEV2ZW4gaWYgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQsIHdlIGRvbid0IG5lZWQgdG8g d29ycnkgYWJvdXQKLQkgKiB1bm5lY2Vzc2FyaWx5IGRpcnR5aW5nIHRoZSBoZWFwIGJ1ZmZlciwg YXMgaXQgbXVzdCBiZSBtYXJrZWQgZGlydHkKLQkgKiBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBX QUwgY2hhaW4uIFRoZSBvbmx5IHNjZW5hcmlvIHdoZXJlIGl0IGlzIG5vdAotCSAqIGFscmVhZHkg ZGlydHkgaXMgaWYgdGhlIFZNIHdhcyByZW1vdmVkLCBhbmQgdGhhdCBpc24ndCB3b3J0aCBvcHRp bWl6aW5nCi0JICogZm9yLgotCSAqLwotCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCU1hcmtC dWZmZXJEaXJ0eShidWYpOwotCi0JLyoKLQkgKiBJZiB0aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxs LWZyb3plbiwgd2UgcGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhcwotCSAqIHRoZSBjdXRvZmZf eGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0byBtYWtl Ci0JICogZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdz IHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkgKi8KLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8 fAotCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9u KSk7Ci0KLQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJ ICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGlj dF9ob3Jpem9uLAotCQkJCQkgIG5ld192bWJpdHMpOwotCiAJLyoKIAkgKiBJZiB0aGUgcGFnZSB3 YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhlIFZN LAogCSAqIGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KIAkgKi8KLQlpZiAoKG9s ZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQorCWlmICgocHJlc3Vs dC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCAmJgorCQkocHJl c3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7CiAJ CXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3pl bikKKwkJaWYgKChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4p ICE9IDApCiAJCXsKIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJ CQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwogCQl9CiAJfQotCWVsc2UgaWYgKChvbGRfdm1iaXRz ICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJv emVuKQorCWVsc2UgaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4pID09IDAgJiYKKwkJCSAocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfRlJPWkVOKSAhPSAwKQogCXsKKwkJQXNzZXJ0KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKTsKIAkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3Bh Z2VzKys7CiAJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4 IGY3ZTRhZTM4NDNjLi5mM2ZhNjFjOWMxYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIs NyBAQAogLyogIm9wdGlvbnMiIGZsYWcgYml0cyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUgKi8KICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkK ICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRQkJCQkoMSA8PCAxKQorI2RlZmluZSBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZNCQkJKDEgPDwgMikKIAogdHlwZWRlZiBzdHJ1Y3QgQnVsa0lu c2VydFN0YXRlRGF0YSAqQnVsa0luc2VydFN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlz U3RhdGUgR2xvYmFsVmlzU3RhdGU7CkBAIC0yMzgsNiArMjM5LDEyIEBAIHR5cGVkZWYgc3RydWN0 IFBydW5lRnJlZXplUGFyYW1zCiAJUmVsYXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250 YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZm ZXIgdG8gYmUgcHJ1bmVkICovCiAKKwkvKgorCSAqIHZtYnVmZmVyIGlzIHRoZSBidWZmZXIgdGhh dCBtdXN0IGFscmVhZHkgY29udGFpbiB0aGUgcmVxdWlyZWQgYmxvY2sgb2YKKwkgKiB0aGUgdmlz aWJpbGl0eSBtYXAgaWYgd2UgYXJlIHRvIHVwZGF0ZSBpdC4KKwkgKi8KKwlCdWZmZXIJCXZtYnVm ZmVyOworCiAJLyoKIAkgKiBUaGUgcmVhc29uIHBydW5pbmcgd2FzIHBlcmZvcm1lZC4gIEl0IGlz IHVzZWQgdG8gc2V0IHRoZSBXQUwgcmVjb3JkCiAJICogb3Bjb2RlIHdoaWNoIGlzIHVzZWQgZm9y IGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgcHVycG9zZXMuCkBAIC0yNTIsNiArMjU5LDkgQEAgdHlw ZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKIAkgKgogCSAqIEhFQVBfUEFHRV9QUlVORV9G UkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZAogCSAq IHdpbGwgcmV0dXJuICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2Fs bGVyLgorCSAqCisJICogSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3 ZSB3aWxsIHNldCB0aGUgcGFnZSdzIHN0YXR1cworCSAqIGluIHRoZSBWTS4KIAkgKi8KIAlpbnQJ CQlvcHRpb25zOwogCkBAIC0yOTksNiArMzA5LDE3IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJl ZXplUmVzdWx0CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0 X2hvcml6b247CiAKKwkvKgorCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUgYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKKwkgKiB2aXNpYmlsaXR5IG1hcCBi ZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgorCSAqIG5ld192 bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aG9zZSBiaXRzIGFmdGVyIHBoYXNlIEkgb2YgdmFjdXVt aW5nLgorCSAqCisJICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BBR0VfUFJVTkVf VVBEQVRFX1ZNIG9wdGlvbiBpcyBzZXQgYW5kCisJICogd2UgaGF2ZSBhdHRlbXB0ZWQgdG8gdXBk YXRlIHRoZSBWTS4KKwkgKi8KKwl1aW50OAkJbmV3X3ZtYml0czsKKwl1aW50OAkJb2xkX3ZtYml0 czsKKwogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhlIHBhZ2UgbWFrZXMgcmVsIHRydW5jYXRp b24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KIAkgKiAndHJ1ZScsIGV2ZW4gaWYgdGhlIHBhZ2Ug Y29udGFpbnMgTFBfREVBRCBpdGVtcy4gIFZBQ1VVTSB3aWxsIHJlbW92ZQotLSAKMi40My4wCgo= --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Disposition: attachment; filename="v26-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o0hwn4 RnJvbSAwNmUxNzkxOGQ3OTlhNGI2NTRlY2NkNzZlMWEzOWIyYmQ0OWU1MDViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6NTc6MzQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNiAwNS8xNV0gTW92ZSBWTSBhc3NlcnQgaW50byBwcnVuZS9mcmVlemUgY29kZQoKVGhp cyBpcyBhIHN0ZXAgdG93YXJkIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIFdBTCByZWNvcmQg YXMgcHJ1bmluZwphbmQgZnJlZXppbmcuIEl0IG1vdmVzIHRoZSBjaGVjayBvZiB0aGUgaGVhcCBw YWdlIGludG8gcHJ1bmUvZnJlZXplIGNvZGUKYmVmb3JlIHNldHRpbmcgdGhlIFZNLiBUaGlzIGFs bG93cyB1cyB0byByZW1vdmUgc29tZSBmaWVsZHMgb2YgdGhlClBydW5lRnJlZXplUmVzdWx0Lgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDg2ICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 IDY4ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICB8IDI1ICsrKy0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyks IDEwMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDBk ODI1MjI4YjYyLi5hYjU2N2U3NTE4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTkwOCw2ICs5MDgsMzEgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnBy c3RhdGUsCiAJcmV0dXJuIHRydWU7CiB9CiAKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisK Ky8qCisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKSB3aGlj aCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycworICogdGhhdCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0 aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBidXQgdGhlcmUgaXMgbm8KKyAqIHJlYXNv biBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0cy4KKyAqLworc3RhdGljIGJvb2wKK2hl YXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkg VHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJ CQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJIE9mZnNldE51 bWJlciAqbG9nZ2luZ19vZmZudW0pCit7CisKKwlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKHJlbCwgYnVmLAorCQkJCQkJCQkJCSAgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkg IE5VTEwsIDAsCisJCQkJCQkJCQkJICBhbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgdmlzaWJpbGl0 eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJCSAgbG9nZ2luZ19vZmZudW0pOworfQorI2VuZGlmCisK KwogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxs eSBmcmVlemUgdHVwbGVzIG9uIHRoZQpAQCAtOTYxLDYgKzk4Niw3IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZl ciA9IHBhcmFtcy0+dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVy KTsKIAlCbG9ja051bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsK KwlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlQcnVuZVN0YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3By dW5lOwpAQCAtMTExOSwyMyArMTE0NSw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBy dW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZy b3plbjsKIAlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CiAJcHJl c3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVz OwotCXByZXN1bHQtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfdmlzaWJsZTsKLQlwcmVzdWx0 LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwogCXByZXN1bHQtPmhhc3R1cCA9IHBy c3RhdGUuaGFzdHVwOwogCi0JLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmluZyB0byB1cGRhdGUg dGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAqIGZvciB0aGF0IHJl Y29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRo ZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGlj dCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVtYWluIEludmFsaWRU cmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRoYXQgd2UganVzdCBm cm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQKLQkgKiBpbmNsdWRl ZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vzbid0IG5lZWQgaXQu Ci0JICovCi0JaWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0 X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZtX2Nv bmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKLQogCXByZXN1 bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0 LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIApAQCAtMTE1Myw2 ICsxMTY0LDQ2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1z ICpwYXJhbXMsCiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5 IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVjb3JkCisJICogbXVzdCBiZSB0 aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0aGUgcGFnZSBpcworCSAq IGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZSB2bV9j b25mbGljdF9ob3Jpem9uCisJICogc2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25JZC4g IFRoaXMgaW5jbHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQorCSAqIGp1c3QgZnJvemUgYWxsIHRoZSB0 dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVkIHRoZQorCSAqIGNvbmZsaWN0 IFhJRCBhbHJlYWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4uCisJICovCisJaWYgKHByc3Rh dGUuYWxsX2Zyb3plbikKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCWVsc2UKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9j dXRvZmZfeGlkOworCisJLyoKKwkgKiBEdXJpbmcgaXRzIHNlY29uZCBwYXNzIG92ZXIgdGhlIGhl YXAsIFZBQ1VVTSBjYWxscworCSAqIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHRv IGRldGVybWluZSB3aGV0aGVyIGEgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJv emVuLiBUaGUgbG9naWMgaGVyZSBpcyBzaW1pbGFyLiBBZnRlciBjb21wbGV0aW5nCisJICogcHJ1 bmluZyBhbmQgZnJlZXppbmcsIHVzZSBhbiBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoYXQgb3VyIHJl c3VsdHMKKwkgKiByZW1haW4gY29uc2lzdGVudCB3aXRoIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxf dmlzaWJsZSgpLgorCSAqLworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0 ZS5hbGxfdmlzaWJsZSkKKwl7CisJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQlib29s CQlkZWJ1Z19hbGxfZnJvemVuOworCisJCUFzc2VydChwcmVzdWx0LT5scGRlYWRfaXRlbXMgPT0g MCk7CisKKwkJQXNzZXJ0KGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9u LCBidWZmZXIsCisJCQkJCQkJCQkJcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJ CQkJCSZkZWJ1Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYsIG9mZl9sb2Mp KTsKKworCQlBc3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOwor CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAorCQkJICAg ZGVidWdfY3V0b2ZmID09IHZtX2NvbmZsaWN0X2hvcml6b24pOworCX0KKyNlbmRpZgorCiAJLyog Tm93IHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8K IAlBc3NlcnQoIXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09 IDApKTsKIApAQCAtMTE5OCwxMiArMTI0OSwxMSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBm b3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKIAkJICogd2VyZSBmcm96 ZW4uCiAJCSAqLwotCQlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fAotCQkJICAgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKwkJQXNzZXJ0 KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZtX2NvbmZsaWN0 X2hvcml6b24pKTsKIAogCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9uLCBibG9j a25vLCBidWZmZXIsCiAJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJICB2bWJ1ZmZl ciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCSAgdm1idWZmZXIsIHZtX2Nv bmZsaWN0X2hvcml6b24sCiAJCQkJCQkgIG5ld192bWJpdHMpOwogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGNjZmFkNWIyZGJhLi4zZmEwMzQ3MDcyMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDYyLDIwICs0NjIsNiBAQCBzdGF0aWMg dm9pZCBkZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25v LCBPZmZzZXROdW1iZXIgKgogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRl ICp2YWNyZWwpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZh Y3JlbCk7CiAKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0aWMgYm9vbCBoZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCSBP ZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKLSNlbmRpZgotc3RhdGljIGJvb2wgaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJ CQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkJICAgT2Zmc2V0TnVt YmVyICpkZWFkb2Zmc2V0cywKLQkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAotCQkJCQkJ CQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlz aWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19v ZmZudW0pOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3Rh dGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNy ZWwsCkBAIC0yMDEyLDMyICsxOTk4LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAkJdmFjcmVsLT5uZXdfZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQogCi0JLyoKLQkg KiBWQUNVVU0gd2lsbCBjYWxsIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUg c2Vjb25kIHBhc3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBh bmQgYWxsX2Zyb3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQg dmVyc2lvbiBvZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3 ZSd2ZSBmaW5pc2hlZCBwcnVuaW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUg aW4gdG90YWwKLQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1 c2luZyBhbiBhc3NlcnRpb24uCi0JICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlm IChwcmVzdWx0LmFsbF92aXNpYmxlKQotCXsKLQkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7 Ci0JCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47Ci0KLQkJQXNzZXJ0KHByZXN1bHQubHBkZWFkX2l0 ZW1zID09IDApOwotCi0JCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5y ZWwsIGJ1ZiwKLQkJCQkJCQkJCQl2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2Fs bF9mcm96ZW4sCi0JCQkJCQkJCQkJJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSk7Ci0K LQkJQXNzZXJ0KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVn X2N1dG9mZiA9PSBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJ LyoKIAkgKiBOb3cgc2F2ZSBkZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBh Z2UgaW4gdmFjcmVsCiAJICovCkBAIC0zNDk0LDI5ICszNDU0LDYgQEAgZGVhZF9pdGVtc19jbGVh bnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAl2YWNyZWwtPnB2cyA9IE5VTEw7CiB9CiAKLSNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0KLS8qCi0gKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycwotICogdGhh dCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBi dXQgdGhlcmUgaXMgbm8KLSAqIHJlYXNvbiBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0 cy4KLSAqLwotc3RhdGljIGJvb2wKLWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJ IGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRv ZmZfeGlkLAotCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCi17Ci0KLQlyZXR1 cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLAotCQkJCQkJCQkJCSAg T2xkZXN0WG1pbiwKLQkJCQkJCQkJCQkgIE5VTEwsIDAsCi0JCQkJCQkJCQkJICBhbGxfZnJvemVu LAotCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgbG9nZ2lu Z19vZmZudW0pOwotfQotI2VuZGlmCiAKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHRoZSBoZWFwIHBh Z2UgaW4gYnVmIGlzIGFsbC12aXNpYmxlIGV4Y2VwdCBmb3IgdGhlIGRlYWQKQEAgLTM1NDAsMTUg KzM0NzcsMTIgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKICAqICAtICpsb2dnaW5nX29mZm51bTogT2Zmc2V0TnVtYmVyIG9mIGN1cnJlbnQgdHVw bGUgYmVpbmcgcHJvY2Vzc2VkOwogICogICAgIHVzZWQgYnkgdmFjdXVtJ3MgZXJyb3IgY2FsbGJh Y2sgc3lzdGVtLgogICoKLSAqIENhbGxlcnMgbG9va2luZyB0byB2ZXJpZnkgdGhhdCB0aGUgcGFn ZSBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGNhbiBjYWxsCi0gKiBoZWFwX3BhZ2VfaXNfYWxsX3Zp c2libGUoKS4KLSAqCiAgKiBUaGlzIGxvZ2ljIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBoZWFwX3By dW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAgKiBJZiB5b3UgbW9kaWZ5IHRoaXMg ZnVuY3Rpb24sIGVuc3VyZSBjb25zaXN0ZW5jeSB3aXRoIHRoYXQgY29kZS4gQW4KICAqIGFzc2Vy dGlvbiBjcm9zcy1jaGVja3MgdGhhdCBib3RoIHJlbWFpbiBpbiBhZ3JlZW1lbnQuIERvIG5vdCBp bnRyb2R1Y2UgbmV3CiAgKiBzaWRlLWVmZmVjdHMuCiAgKi8KLXN0YXRpYyBib29sCitib29sCiBo ZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAog CQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmRlYWRvZmZzZXRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGYzZmE2MWM5YzFiLi45MTAwZDQy Y2NiYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjU3LDggKzI1Nyw3IEBAIHR5cGVkZWYgc3RydWN0 IFBydW5lRnJlZXplUGFyYW1zCiAJICogSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVyBp bmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQKIAkgKiBMUF9VTlVTRUQgZHVyaW5n IHBydW5pbmcuCiAJICoKLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0 IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQKLQkgKiB3aWxsIHJldHVybiAnYWxsX3Zp c2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKwkgKiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzCiAJ ICoKIAkgKiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGluZGljYXRlcyB0aGF0IHdlIHdpbGwg c2V0IHRoZSBwYWdlJ3Mgc3RhdHVzCiAJICogaW4gdGhlIFZNLgpAQCAtMjk0LDIxICsyOTMsNiBA QCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCWxpdmVfdHVwbGVzOwog CWludAkJCXJlY2VudGx5X2RlYWRfdHVwbGVzOwogCi0JLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQg YWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkg KiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFm dGVyIHBydW5pbmcuCi0JICoKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3Qg eG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4gIFRoZQotCSAqIGNhbGxlciBjYW4gdXNl IGl0IGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHdoZW4gc2V0dGluZyB0aGUgVk0gYml0cy4gIEl0 Ci0JICogaXMgb25seSB2YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcyAobmZyb3plbiA+IDAp LCBhbmQgYWxsX2Zyb3plbiBpcwotCSAqIHRydWUuCi0JICoKLQkgKiBUaGVzZSBhcmUgb25seSBz ZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCi0JICovCi0JYm9vbAkJ YWxsX3Zpc2libGU7Ci0JYm9vbAkJYWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZs aWN0X2hvcml6b247Ci0KIAkvKgogCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUg YWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKIAkgKiB2aXNpYmlsaXR5IG1h cCBiZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgpAQCAtNDU0 LDYgKzQzOCwxMyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogLyogaW4gaGVhcC92YWN1dW1sYXp5LmMgKi8K IGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3Qg VmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKK2V4 dGVybiBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCisJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJ CQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJCQkJCQkJICAgaW50IG5kZWFk b2Zmc2V0cywKKwkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgICBPZmZzZXRO dW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIAogLyogaW4gaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5j ICovCiBleHRlcm4gYm9vbCBIZWFwVHVwbGVTYXRpc2ZpZXNWaXNpYmlsaXR5KEhlYXBUdXBsZSBo dHVwLCBTbmFwc2hvdCBzbmFwc2hvdCwKLS0gCjIuNDMuMAoK --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v26-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o0lgj5 RnJvbSA1NDhhOWE4YWUzYzYzM2U1YWIyY2ZlYzQzOGFjYTAzYmE5ZDFlNmY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTY6MTY6MjIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNiAwNi8xNV0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog S2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8g TGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhk SzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgfCAyNzUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDE1NyBpbnNlcnRpb25zKCspLCAxMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCBhYjU2N2U3NTE4Yi4uNWE3YmE5MDRmMWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMDUsNiArMjA1LDExIEBAIHN0YXRpYyBib29sIGhlYXBf cGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCQkgIGludCBubHBk ZWFkX2l0ZW1zLAogCQkJCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkJCQkgIHVpbnQ4 ICpuZXdfdm1iaXRzKTsKK3N0YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9v bCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wgZG9fc2V0X3ZtLAorCQkJCQkJCQkJICB1 aW50OCBvbGRfdm1iaXRzLCB1aW50OCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJICBUcmFuc2FjdGlv bklkIGxhdGVzdF94aWRfcmVtb3ZlZCwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBmcnpfY29u ZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9m Zl94aWQpOwogCiAKIC8qCkBAIC03ODUsNiArNzkwLDY4IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 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 dHRpbmcgdGhlCkBAIC05ODYsNyArMTA1Myw2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFtcy0+ dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051 bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKLQlUcmFuc2FjdGlv bklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlQcnVuZVN0 YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwpAQCAtOTk0 LDEwICsxMDYwLDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAJYm9vbAkJZG9fc2V0X3ZtOwogCWJvb2wJCWRpZF90dXBsZV9oaW50X2Zw aTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKKwlUcmFuc2FjdGlv bklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCXVpbnQ4CQluZXdfdm1i aXRzID0gMDsKIAl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CiAKLQogCS8qIEluaXRpYWxpemUgcHJz dGF0ZSAqLwogCXBydW5lX2ZyZWV6ZV9zZXR1cChwYXJhbXMsCiAJCQkJCSAgIG5ld19yZWxmcm96 ZW5feGlkLCBuZXdfcmVsbWluX214aWQsCkBAIC0xMDU4LDYgKzExMjQsMzcgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5h bGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJQXNzZXJ0KCFwcnN0 YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJsZSk7CisJQXNzZXJ0KCFwcnN0YXRl LmFsbF92aXNpYmxlIHx8IChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CisKKwkvKgorCSAq IERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgVk0gYml0cyBiYXNlZCBvbiBpbmZvcm1hdGlvbiBm cm9tIHRoZSBWTSBhbmQKKwkgKiB0aGUgYWxsX3Zpc2libGUvYWxsX2Zyb3plbiBmbGFncy4KKwkg Ki8KKwlkb19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oJnByc3RhdGUsCisJCQkJCQkJ CQkgIHBhcmFtcy0+cmVsYXRpb24sCisJCQkJCQkJCQkgIGJsb2Nrbm8sCisJCQkJCQkJCQkgIGJ1 ZmZlciwKKwkJCQkJCQkJCSAgcGFnZSwKKwkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkg IHByc3RhdGUubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJICAmb2xkX3ZtYml0cywKKwkJCQkJCQkJ CSAgJm5ld192bWJpdHMpOworCisJLyoKKwkgKiBuZXdfdm1iaXRzIHNob3VsZCBiZSAwIHJlZ2Fy ZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMKKwkgKiBhbGwtdmlzaWJsZSBpZiB3 ZSBkbyBub3QgaW50ZW5kIHRvIHNldCB0aGUgVk0uCisJICovCisJQXNzZXJ0KGRvX3NldF92bSB8 fCBuZXdfdm1iaXRzID09IDApOworCisJY29uZmxpY3RfeGlkID0gZ2V0X2NvbmZsaWN0X3hpZChk b19wcnVuZSwgZG9fZnJlZXplLCBkb19zZXRfdm0sCisJCQkJCQkJCQlvbGRfdm1iaXRzLCBuZXdf dm1iaXRzLAorCQkJCQkJCQkJcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQsCisJCQkJCQkJCQlw cnN0YXRlLmZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJCQkJCQkJcHJzdGF0ZS52aXNpYmlsaXR5 X2N1dG9mZl94aWQpOworCisJLyogTG9jayB2bWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcgYSBjcml0 aWNhbCBzZWN0aW9uICovCisJaWYgKGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwg QlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKIAogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0 aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwpAQCAtMTA3 OSwxNCArMTE3NiwxNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCiAJCS8qCiAJCSAqIElmIHRoYXQncyBhbGwgd2UgaGFkIHRvIGRvIHRv IHRoZSBwYWdlLCB0aGlzIGlzIGEgbm9uLVdBTC1sb2dnZWQKLQkJICogaGludC4gIElmIHdlIGFy ZSBnb2luZyB0byBmcmVlemUgb3IgcHJ1bmUgdGhlIHBhZ2UsIHdlIHdpbGwgbWFyawotCQkgKiB0 aGUgYnVmZmVyIGRpcnR5IGJlbG93LgorCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZy ZWV6ZSBvciBwcnVuZSB0aGUgcGFnZSBvciBzZXQKKwkJICogUERfQUxMX1ZJU0lCTEUsIHdlIHdp bGwgbWFyayB0aGUgYnVmZmVyIGRpcnR5IGJlbG93LgorCQkgKgorCQkgKiBTZXR0aW5nIFBEX0FM TF9WSVNJQkxFIGlzIGZ1bGx5IFdBTC1sb2dnZWQgYmVjYXVzZSBpdCBpcyBmb3JiaWRkZW4KKwkJ ICogZm9yIHRoZSBWTSB0byBiZSBzZXQgYW5kIFBEX0FMTF9WSVNJQkxFIHRvIGJlIGNsZWFyLgog CQkgKi8KLQkJaWYgKCFkb19mcmVlemUgJiYgIWRvX3BydW5lKQorCQlpZiAoIWRvX2ZyZWV6ZSAm JiAhZG9fcHJ1bmUgJiYgIWRvX3NldF92bSkKIAkJCU1hcmtCdWZmZXJEaXJ0eUhpbnQoYnVmZmVy LCB0cnVlKTsKIAl9CiAKLQlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplKQorCWlmIChkb19wcnVu ZSB8fCBkb19mcmVlemUgfHwgZG9fc2V0X3ZtKQogCXsKIAkJLyogQXBwbHkgdGhlIHBsYW5uZWQg aXRlbSBjaGFuZ2VzIGFuZCByZXBhaXIgcGFnZSBmcmFnbWVudGF0aW9uLiAqLwogCQlpZiAoZG9f cHJ1bmUpCkBAIC0xMTAwLDYgKzEyMDAsMjYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJaWYgKGRvX2ZyZWV6ZSkKIAkJCWhlYXBfZnJl ZXplX3ByZXBhcmVkX3R1cGxlcyhidWZmZXIsIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96 ZW4pOwogCisJCS8qIFNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2UgdmlzaWJpbGl0eSBo aW50ICovCisJCWlmIChkb19zZXRfdm0pCisJCXsKKwkJCS8qCisJCQkgKiBXaGlsZSBpdCBpcyB2 YWxpZCBmb3IgUERfQUxMX1ZJU0lCTEUgdG8gYmUgc2V0IHdoZW4gdGhlCisJCQkgKiBjb3JyZXNw b25kaW5nIFZNIGJpdCBpcyBjbGVhciwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbQor CQkJICogaW4gc3luYy4KKwkJCSAqCisJCQkgKiBFdmVuIGlmIHdlIGFyZSBvbmx5IHNldHRpbmcg dGhlIFZNIGFuZCBQRF9BTExfVklTSUJMRSBpcworCQkJICogYWxyZWFkeSBzZXQsIHdlIGRvbid0 IG5lZWQgdG8gd29ycnkgYWJvdXQgdW5uZWNlc3NhcmlseQorCQkJICogZGlydHlpbmcgdGhlIGhl YXAgYnVmZmVyIGJlbG93LCBhcyBpdCBtdXN0IGJlIG1hcmtlZCBkaXJ0eQorCQkJICogYmVmb3Jl IGFkZGluZyBpdCB0byB0aGUgV0FMIGNoYWluLiBUaGUgb25seSBzY2VuYXJpbyB3aGVyZSBpdAor CQkJICogaXMgbm90IGFscmVhZHkgZGlydHkgaXMgaWYgdGhlIFZNIHdhcyByZW1vdmVkLCBhbmQg dGhhdCBpc24ndAorCQkJICogd29ydGggb3B0aW1pemluZyBmb3IuCisJCQkgKi8KKwkJCVBhZ2VT ZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsb2Nrbm8s IHZtYnVmZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xv Y2F0b3IpOworCQl9CisKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKIAkJLyoKQEAgLTEx MDcsMjkgKzEyMjcsMTIgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAkJICovCiAJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHBhcmFtcy0+cmVs YXRpb24pKQogCQl7Ci0JCQkvKgotCQkJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZv ciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUKLQkJCSAqIG1vc3QgY29uc2VydmF0aXZl IG9mIGFsbCB0aGUgaG9yaXpvbnMgY2FsY3VsYXRlZCBmb3IgYW55IG9mIHRoZQotCQkJICogcG9z c2libGUgbW9kaWZpY2F0aW9ucy4gIElmIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgdHVwbGVzLCBh bnkKLQkJCSAqIHRyYW5zYWN0aW9ucyBvbiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRoZSB5b3Vu Z2VzdCB4bWF4IG9mIHRoZQotCQkJICogbW9zdCByZWNlbnRseSByZW1vdmVkIHR1cGxlIHRoaXMg cmVjb3JkIHdpbGwgcHJ1bmUgd2lsbAotCQkJICogY29uZmxpY3QuICBJZiB0aGlzIHJlY29yZCB3 aWxsIGZyZWV6ZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMKLQkJCSAqIG9uIHRoZSBzdGFuZGJ5 IHdpdGggeGlkcyBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB0dXBsZSB0aGlzCi0JCQkgKiByZWNv cmQgd2lsbCBmcmVlemUgd2lsbCBjb25mbGljdC4KLQkJCSAqLwotCQkJVHJhbnNhY3Rpb25JZCBj b25mbGljdF94aWQ7Ci0KLQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyhwcnN0YXRlLmZyel9j b25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJIHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkKSkK LQkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmZyel9jb25mbGljdF9ob3Jpem9uOwotCQkJZWxz ZQotCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkOwotCiAJCQls b2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJ CQkJCSAgSW52YWxpZEJ1ZmZlciwJLyogdm1idWZmZXIgKi8KLQkJCQkJCQkJCSAgMCwJLyogdm1m bGFncyAqLworCQkJCQkJCQkJICBkb19zZXRfdm0gPyB2bWJ1ZmZlciA6IEludmFsaWRCdWZmZXIs CisJCQkJCQkJCQkgIGRvX3NldF92bSA/IG5ld192bWJpdHMgOiAwLAogCQkJCQkJCQkJICBjb25m bGljdF94aWQsCi0JCQkJCQkJCQkgIHRydWUsIHBhcmFtcy0+cmVhc29uLAorCQkJCQkJCQkJICB0 cnVlLCAvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCSAgcGFyYW1zLT5yZWFzb24sCiAJCQkJ CQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJCQkJCQkgIHByc3Rh dGUucmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5u b3dkZWFkLCBwcnN0YXRlLm5kZWFkLApAQCAtMTEzOSw0MyArMTI0Miw4IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAlFTkRfQ1JJVF9T RUNUSU9OKCk7CiAKLQkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxlciAqLwotCXBy ZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKLQlwcmVzdWx0LT5ubmV3bHBkZWFk ID0gcHJzdGF0ZS5uZGVhZDsKLQlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJvemVuOwot CXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKLQlwcmVzdWx0LT5y ZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7Ci0JcHJl c3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7Ci0KLQlwcmVzdWx0LT5scGRlYWRfaXRlbXMg PSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKLQkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJy YXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCi0KLQlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6 ZSkKLQl7Ci0JCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKLQkJewotCQkJKm5ld19yZWxmcm96 ZW5feGlkID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7Ci0JCQkqbmV3 X3JlbG1pbl9teGlkID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlkOwotCQl9 Ci0JCWVsc2UKLQkJewotCQkJKm5ld19yZWxmcm96ZW5feGlkID0gcHJzdGF0ZS5wYWdlZnJ6Lk5v RnJlZXplUGFnZVJlbGZyb3plblhpZDsKLQkJCSpuZXdfcmVsbWluX214aWQgPSBwcnN0YXRlLnBh Z2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZDsKLQkJfQotCX0KLQotCS8qCi0JICogSWYgdXBk YXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBmb3IgdGhhdCBy ZWNvcmQKLQkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIs IGlmIHRoZSBwYWdlIGlzCi0JICogY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBj b25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6b24KLQkgKiBzaG91bGQgcmVtYWluIElu dmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcyB0aGUgY2FzZSB0aGF0IHdlCi0JICog anVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQgaW5jbHVk ZWQgdGhlCi0JICogY29uZmxpY3QgWElEIGFscmVhZHkgc28gd2UgZG9uJ3QgbmVlZCB0byBhZ2Fp bi4KLQkgKi8KLQlpZiAocHJzdGF0ZS5hbGxfZnJvemVuKQotCQl2bV9jb25mbGljdF9ob3Jpem9u ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JZWxzZQotCQl2bV9jb25mbGljdF9ob3Jpem9uID0g cHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJaWYgKGRvX3NldF92bSkKKwkJTG9ja0J1 ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAogCS8qCiAJICogRHVyaW5nIGl0 cyBzZWNvbmQgcGFzcyBvdmVyIHRoZSBoZWFwLCBWQUNVVU0gY2FsbHMKQEAgLTExOTAsNyArMTI1 OCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJh bXMsCiAJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOwogCQlib29sCQlkZWJ1Z19hbGxfZnJv emVuOwogCi0JCUFzc2VydChwcmVzdWx0LT5scGRlYWRfaXRlbXMgPT0gMCk7CisJCUFzc2VydChw cnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKwkJQXNzZXJ0KHByc3RhdGUuY3V0b2Zmcyk7CiAK IAkJQXNzZXJ0KGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9uLCBidWZm ZXIsCiAJCQkJCQkJCQkJcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLApAQCAtMTIwMCw2NiAr MTI2OSwzNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCQlBc3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4p OwogCiAJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAotCQkJ ICAgZGVidWdfY3V0b2ZmID09IHZtX2NvbmZsaWN0X2hvcml6b24pOworCQkJICAgZGVidWdfY3V0 b2ZmID09IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKTsKIAl9CiAjZW5kaWYKIAotCS8q IE5vdyB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBQRF9BTExfVklTSUJMRSBoaW50ICov Ci0JQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9 PSAwKSk7Ci0KLQlkb19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oJnByc3RhdGUsCi0J CQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24sCi0JCQkJCQkJCQkgIGJsb2Nrbm8sCi0JCQkJCQkJ CQkgIGJ1ZmZlciwKLQkJCQkJCQkJCSAgcGFnZSwKLQkJCQkJCQkJCSAgdm1idWZmZXIsCi0JCQkJ CQkJCQkgIHByc3RhdGUubHBkZWFkX2l0ZW1zLAotCQkJCQkJCQkJICAmb2xkX3ZtYml0cywKLQkJ CQkJCQkJCSAgJm5ld192bWJpdHMpOworCS8qIENvcHkgaW5mb3JtYXRpb24gYmFjayBmb3IgY2Fs bGVyICovCisJcHJlc3VsdC0+bmRlbGV0ZWQgPSBwcnN0YXRlLm5kZWxldGVkOworCXByZXN1bHQt Pm5uZXdscGRlYWQgPSBwcnN0YXRlLm5kZWFkOworCXByZXN1bHQtPm5mcm96ZW4gPSBwcnN0YXRl Lm5mcm96ZW47CisJcHJlc3VsdC0+bGl2ZV90dXBsZXMgPSBwcnN0YXRlLmxpdmVfdHVwbGVzOwor CXByZXN1bHQtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gcHJzdGF0ZS5yZWNlbnRseV9kZWFkX3R1 cGxlczsKKwlwcmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKKwlwcmVzdWx0LT5uZXdf dm1iaXRzID0gbmV3X3ZtYml0czsKKwlwcmVzdWx0LT5vbGRfdm1iaXRzID0gb2xkX3ZtYml0czsK IAotCS8qCi0JICogbmV3X3ZtYml0cyBzaG91bGQgYmUgMCByZWdhcmRsZXNzIG9mIHdoZXRoZXIg b3Igbm90IHRoZSBwYWdlIGlzCi0JICogYWxsLXZpc2libGUgaWYgd2UgZG8gbm90IGludGVuZCB0 byBzZXQgdGhlIFZNLgotCSAqLwotCUFzc2VydChkb19zZXRfdm0gfHwgbmV3X3ZtYml0cyA9PSAw KTsKKwlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKKwkvKiB0 aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAK LQkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxpdHkgaGludCwgaWYg cmVsZXZhbnQgKi8KLQlpZiAoZG9fc2V0X3ZtKQorCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXpl KQogCXsKLQkJQXNzZXJ0KHByc3RhdGUuYWxsX3Zpc2libGUpOwotCi0JCS8qCi0JCSAqIEl0IHNo b3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNl dAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJz ZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2Fy ZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgot CQkgKgotCQkgKiBFdmVuIGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24n dCBuZWVkIHRvIHdvcnJ5IGFib3V0Ci0JCSAqIHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhl YXAgYnVmZmVyLCBhcyBpdCBtdXN0IGJlIG1hcmtlZCBkaXJ0eQotCQkgKiBiZWZvcmUgYWRkaW5n IGl0IHRvIHRoZSBXQUwgY2hhaW4uIFRoZSBvbmx5IHNjZW5hcmlvIHdoZXJlIGl0IGlzCi0JCSAq IG5vdCBhbHJlYWR5IGRpcnR5IGlzIGlmIHRoZSBWTSB3YXMgcmVtb3ZlZCwgYW5kIHRoYXQgaXNu J3Qgd29ydGgKLQkJICogb3B0aW1pemluZyBmb3IuCi0JCSAqLwotCQlQYWdlU2V0QWxsVmlzaWJs ZShwYWdlKTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7Ci0KLQkJLyoKLQkJICogSWYgdGhl IHBhZ2UgaXMgYmVpbmcgc2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9u SWQKLQkJICogYXMgdGhlIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9y aXpvbiBzdWZmaWNpZW50IHRvCi0JCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdh cyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcwotCQkgKiB3ZXJlIGZyb3plbi4KLQkJICov Ci0JCUFzc2VydCghcHJzdGF0ZS5hbGxfZnJvemVuIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZCh2 bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0KLQkJdmlzaWJpbGl0eW1hcF9zZXQocGFyYW1zLT5yZWxh dGlvbiwgYmxvY2tubywgYnVmZmVyLAotCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJ CSAgdm1idWZmZXIsIHZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJCQkgIG5ld192bWJpdHMpOwor CQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCisJCXsKKwkJCSpuZXdfcmVsZnJvemVuX3hpZCA9 IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlkOworCQkJKm5ld19yZWxtaW5f bXhpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZDsKKwkJfQorCQllbHNl CisJCXsKKwkJCSpuZXdfcmVsZnJvemVuX3hpZCA9IHByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBh Z2VSZWxmcm96ZW5YaWQ7CisJCQkqbmV3X3JlbG1pbl9teGlkID0gcHJzdGF0ZS5wYWdlZnJ6Lk5v RnJlZXplUGFnZVJlbG1pbk14aWQ7CisJCX0KIAl9Ci0KLQkvKiBTYXZlIHRoZSB2bWJpdHMgZm9y IGNhbGxlciAqLwotCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOwotCXByZXN1bHQt Pm5ld192bWJpdHMgPSBuZXdfdm1iaXRzOwogfQogCiAKLS0gCjIuNDMuMAoK --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v26-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o0qpa6 RnJvbSA3MDM1ODFjZDkwOWIzNTRiNGQxMDI4ZWViYTU3ZjdlZGQ0NTgzNmU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjYgMDcvMTVdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggM2ZhMDM0NzA3MjIuLjIxMGFmYTExMzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xODczLDkgKzE4NzMsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTg5MiwxMyArMTg5NSwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVs LT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCisJCQkv KgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAg cGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8K KwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJ CQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAp OworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVuIHBh Z2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v26-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o0ukx7 RnJvbSAzMjJjYjI0MmI0YTg2MWY3OTJmZWM3YjZlNTYxNGJmMGE5ZmMyZGFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjYgMDgvMTVdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEyICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcC5oICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1h cGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAg ICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDM3NCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2su YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCmluZGV4IGJiMjYwY2ZmYTY4 Li41ZjA3ZjE3OTQxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZt YXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKQEAgLTU2LDgg KzU2LDggQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2UpCiAKIAkvKgogCSAqIER1cmlu ZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQgcGFzdCBvdXIgWExPRyByZWNv cmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2VlIGhl YXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkgKiB3ZSBkb24ndCBtYXJrIHRo ZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKQorCSAq IGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNmRhZjRhODdkZWMuLmZiN2E3NTQ4YWEwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjUzOSwxMSArMjUzOSwxMSBAQCBoZWFwX211 bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50 IG50dXBsZXMsCiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQogCQl7CiAJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCdWZmZXJHZXRCbG9j a051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwK LQkJCQkJCQkJCSByZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChC dWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJ ICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTiwKKwkJCQkJCQkgIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKIAkJfQogCiAJCS8qCkBA IC04ODEzLDUwICs4ODEzLDYgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVs ZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3JhYmxlOwogfQogCi0vKgotICog UGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBvcGVyYXRpb24uICAnYmxvY2sn IGlzIHRoZSBibG9jawotICogYmVpbmcgbWFya2VkIGFsbC12aXNpYmxlLCBhbmQgdm1fYnVmZmVy IGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0 eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZAotICog YW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNob3RDb25mbGljdEhvcml6b24gY29tZXMgZnJvbSB0 aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBtYXJrZWQgYWxsLXZpc2libGUu ICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNvdmVyeSBjb25mbGljdHMuCi0g KgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQsIHdlIG1heSBh bHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBoZWFwX2J1ZmZlci4gT3RoZXJ3 aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNpZnlpbmcKLSAqIFJFR0JVRl9O T19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2ggY2FzZSB0aGUgY2FsbGVyIHNo b3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0gKi8KLVhMb2dSZWNQ dHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxlIHhscmVjOwotCVhMb2dSZWNQ dHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBf YnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVmZmVyKSk7Ci0KLQl4bHJlYy5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXhscmVj LmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19S RUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVP ZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCB2bV9idWZmZXIsIDApOwot Ci0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9nSGludEJpdElzTmVlZGVkKCkp Ci0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgaGVh cF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIFhM T0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwotfQotCiAvKgogICogUGVyZm9y bSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlvbi4gIENhbGxlciBtdXN0IGFs cmVhZHkKICAqIGhhdmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBhbmQgbWFya2VkIHRoZW0gZGly dHkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCAxODIzZmVmZjI5OC4u NDdkMjQ3OTQxNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMjM2 LDcgKzIzNiw3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1Na LCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sIHZtYnVmZmVyLCB2bWZs YWdzLCBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLCB2bWJ1ZmZlciwgdm1m bGFncywgcmxvY2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJ CVBhZ2VTZXRMU04odm1wYWdlLCBsc24pOwpAQCAtMjQ5LDE0MiArMjQ5LDYgQEAgaGVhcF94bG9n X3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNlKTsKIH0KIAotLyoKLSAqIFJl cGxheSBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jkcy4KLSAqCi0gKiBUaGUgY3JpdGljYWwgaW50 ZWdyaXR5IHJlcXVpcmVtZW50IGhlcmUgaXMgdGhhdCB3ZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRo Ci0gKiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCwgYW5k IHRoZSBwYWdlLWxldmVsCi0gKiBQRF9BTExfVklTSUJMRSBiaXQgaXMgY2xlYXIuICBJZiB0aGF0 IHdlcmUgdG8gb2NjdXIsIHRoZW4gYSBzdWJzZXF1ZW50Ci0gKiBwYWdlIG1vZGlmaWNhdGlvbiB3 b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQuCi0gKi8KLXN0YXRpYyB2 b2lkCi1oZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKLXsKLQlYTG9n UmVjUHRyCWxzbiA9IHJlY29yZC0+RW5kUmVjUHRyOwotCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMg PSAoeGxfaGVhcF92aXNpYmxlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7Ci0JQnVmZmVyCQl2 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0JQnVmZmVyCQlidWZmZXI7Ci0JUGFnZQkJcGFnZTsK LQlSZWxGaWxlTG9jYXRvciBybG9jYXRvcjsKLQlCbG9ja051bWJlciBibGtubzsKLQlYTG9nUmVk b0FjdGlvbiBhY3Rpb247Ci0KLQlBc3NlcnQoKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBf WExPR19WQUxJRF9CSVRTKSA9PSB4bHJlYy0+ZmxhZ3MpOwotCi0JWExvZ1JlY0dldEJsb2NrVGFn KHJlY29yZCwgMSwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwotCi0JLyoKLQkgKiBJZiB0aGVy ZSBhcmUgYW55IEhvdCBTdGFuZGJ5IHRyYW5zYWN0aW9ucyBydW5uaW5nIHRoYXQgaGF2ZSBhbiB4 bWluCi0JICogaG9yaXpvbiBvbGQgZW5vdWdoIHRoYXQgdGhpcyBwYWdlIGlzbid0IGFsbC12aXNp YmxlIGZvciB0aGVtLCB0aGV5Ci0JICogbWlnaHQgaW5jb3JyZWN0bHkgZGVjaWRlIHRoYXQgYW4g aW5kZXgtb25seSBzY2FuIGNhbiBza2lwIGEgaGVhcCBmZXRjaC4KLQkgKgotCSAqIE5COiBJdCBt aWdodCBiZSBiZXR0ZXIgdG8gdGhyb3cgc29tZSBraW5kIG9mICJzb2Z0IiBjb25mbGljdCBoZXJl IHRoYXQKLQkgKiBmb3JjZXMgYW55IGluZGV4LW9ubHkgc2NhbiB0aGF0IGlzIGluIGZsaWdodCB0 byBwZXJmb3JtIGhlYXAgZmV0Y2hlcywKLQkgKiByYXRoZXIgdGhhbiBraWxsaW5nIHRoZSB0cmFu c2FjdGlvbiBvdXRyaWdodC4KLQkgKi8KLQlpZiAoSW5Ib3RTdGFuZGJ5KQotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24s Ci0JCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TCwKLQkJCQkJCQkJCQkJcmxvY2F0b3IpOwotCi0JLyoKLQkgKiBSZWFkIHRoZSBoZWFwIHBhZ2Us IGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhlIGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgotCSAq IHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVyeSwgd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgdGhl IHBhZ2UsIGJ1dCB3ZSdkCi0JICogYmV0dGVyIHN0aWxsIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBt YXAuCi0JICovCi0JYWN0aW9uID0gWExvZ1JlYWRCdWZmZXJGb3JSZWRvKHJlY29yZCwgMSwgJmJ1 ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCS8qCi0JCSAqIFdl IGRvbid0IGJ1bXAgdGhlIExTTiBvZiB0aGUgaGVhcCBwYWdlIHdoZW4gc2V0dGluZyB0aGUgdmlz aWJpbGl0eQotCQkgKiBtYXAgYml0ICh1bmxlc3MgY2hlY2tzdW1zIG9yIHdhbF9oaW50X2JpdHMg aXMgZW5hYmxlZCwgaW4gd2hpY2gKLQkJICogY2FzZSB3ZSBtdXN0KS4gVGhpcyBleHBvc2VzIHVz IHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2UKLQkJICogd2UncmUgbm90IGluc3BlY3Rp bmcgdGhlIGV4aXN0aW5nIHBhZ2UgY29udGVudHMgaW4gYW55IHdheSwgd2UKLQkJICogZG9uJ3Qg Y2FyZS4KLQkJICovCi0JCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7Ci0KLQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7Ci0KLQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCVBh Z2VTZXRMU04ocGFnZSwgbHNuKTsKLQotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQl9Ci0J ZWxzZSBpZiAoYWN0aW9uID09IEJMS19SRVNUT1JFRCkKLQl7Ci0JCS8qCi0JCSAqIElmIGhlYXAg YmxvY2sgd2FzIGJhY2tlZCB1cCwgd2UgYWxyZWFkeSByZXN0b3JlZCBpdCBhbmQgdGhlcmUncwot CQkgKiBub3RoaW5nIG1vcmUgdG8gZG8uIChUaGlzIGNhbiBvbmx5IGhhcHBlbiB3aXRoIGNoZWNr c3VtcyBvcgotCQkgKiB3YWxfbG9nX2hpbnRzIGVuYWJsZWQuKQotCQkgKi8KLQl9Ci0KLQlpZiAo QnVmZmVySXNWYWxpZChidWZmZXIpKQotCXsKLQkJU2l6ZQkJc3BhY2UgPSBQYWdlR2V0RnJlZVNw YWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7Ci0KLQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZm ZXIpOwotCi0JCS8qCi0JCSAqIFNpbmNlIEZTTSBpcyBub3QgV0FMLWxvZ2dlZCBhbmQgb25seSB1 cGRhdGVkIGhldXJpc3RpY2FsbHksIGl0Ci0JCSAqIGVhc2lseSBiZWNvbWVzIHN0YWxlIGluIHN0 YW5kYnlzLiAgSWYgdGhlIHN0YW5kYnkgaXMgbGF0ZXIgcHJvbW90ZWQKLQkJICogYW5kIHJ1bnMg VkFDVVVNLCBpdCB3aWxsIHNraXAgdXBkYXRpbmcgaW5kaXZpZHVhbCBmcmVlIHNwYWNlCi0JCSAq IGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lIGFsbC12aXNpYmxlIChvciBhbGwtZnJvemVu LCBkZXBlbmRpbmcKLQkJICogb24gdGhlIHZhY3V1bSBtb2RlLCkgd2hpY2ggaXMgdHJvdWJsZXNv bWUgd2hlbiBGcmVlU3BhY2VNYXBWYWN1dW0KLQkJICogcHJvcGFnYXRlcyB0b28gb3B0aW1pc3Rp YyBmcmVlIHNwYWNlIHZhbHVlcyB0byB1cHBlciBGU00gbGF5ZXJzOwotCQkgKiBsYXRlciBpbnNl cnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzIG9ubHkgdG8gZmluZCBvdXQgdGhhdCB0aGV5Ci0J CSAqIGFyZSB1bnVzYWJsZS4gIFRoaXMgY2FuIGNhdXNlIGxvbmcgc3RhbGxzIHdoZW4gdGhlcmUg YXJlIG1hbnkgc3VjaAotCQkgKiBwYWdlcy4KLQkJICoKLQkJICogRm9yZXN0YWxsIHRob3NlIHBy b2JsZW1zIGJ5IHVwZGF0aW5nIEZTTSdzIGlkZWEgYWJvdXQgYSBwYWdlIHRoYXQKLQkJICogaXMg YmVjb21pbmcgYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4KLQkJICoKLQkJICogRG8gdGhpcyBy ZWdhcmRsZXNzIG9mIGEgZnVsbC1wYWdlIGltYWdlIGJlaW5nIGFwcGxpZWQsIHNpbmNlIHRoZQot CQkgKiBGU00gZGF0YSBpcyBub3QgaW4gdGhlIHBhZ2UgYW55d2F5LgotCQkgKi8KLQkJaWYgKHhs cmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKLQkJCVhMb2dSZWNvcmRQYWdl V2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIHNwYWNlKTsKLQl9Ci0KLQkvKgotCSAqIEV2 ZW4gaWYgd2Ugc2tpcHBlZCB0aGUgaGVhcCBwYWdlIHVwZGF0ZSBkdWUgdG8gdGhlIExTTiBpbnRl cmxvY2ssIGl0J3MKLQkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAu ICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycwotCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQg ZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBzbyBhbnkKLQkgKiBiaXRzIHRo YXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xlYXJlZC4KLQkgKi8KLQlpZiAo WExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAwLCBSQk1fWkVST19PTl9FUlJP UiwgZmFsc2UsCi0JCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCi0Jewot CQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKTsKLQkJUmVsYXRpb24JcmVs bjsKLQkJdWludDgJCXZtYml0czsKLQotCQkvKiBpbml0aWFsaXplIHRoZSBwYWdlIGlmIGl0IHdh cyByZWFkIGFzIHplcm9zICovCi0JCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKLQkJCVBhZ2VJbml0 KHZtcGFnZSwgQkxDS1NaLCAwKTsKLQotCQkvKiByZW1vdmUgVklTSUJJTElUWU1BUF9YTE9HXyog Ki8KLQkJdm1iaXRzID0geGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOwot Ci0JCS8qCi0JCSAqIFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkIGxvY2tlZCB0aGUgYnVm ZmVyLiBCdXQKLQkJICogdmlzaWJpbGl0eW1hcF9zZXQgd2lsbCBoYW5kbGUgbG9ja2luZyBpdHNl bGYuCi0JCSAqLwotCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwot Ci0JCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7Ci0KLQkJdmlzaWJp bGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRCdWZmZXIsIGxzbiwgdm1idWZmZXIsCi0J CQkJCQkgIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdm1iaXRzKTsKLQotCQlSZWxl YXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJRnJlZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOwotCX0K LQllbHNlIGlmIChCdWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKLQkJVW5sb2NrUmVsZWFzZUJ1ZmZl cih2bWJ1ZmZlcik7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhbiAiaW5mb2JpdHMiIGZpZWxkIGZyb20g YW4gWExvZyByZWNvcmQsIHNldCB0aGUgY29ycmVjdCBiaXRzIGluIHRoZQogICogZ2l2ZW4gaW5m b21hc2sgYW5kIGluZm9tYXNrMiBmb3IgdGhlIHR1cGxlIHRvdWNoZWQgYnkgdGhlIHJlY29yZC4K QEAgLTc2Miw4ICs2MjYsOCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCSAqCiAJICogRHVyaW5nIHJlY292ZXJ5LCBob3dldmVyLCBubyBjb25jdXJy ZW50IHdyaXRlcnMgZXhpc3QuIFRoZXJlZm9yZSwKIAkgKiB1cGRhdGluZyB0aGUgVk0gd2l0aG91 dCBob2xkaW5nIHRoZSBoZWFwIHBhZ2UgbG9jayBpcyBzYWZlIGVub3VnaC4gVGhpcwotCSAqIHNh bWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgeGxfaGVhcF92aXNpYmxlIHJlY29y ZHMgKHNlZQotCSAqIGhlYXBfeGxvZ192aXNpYmxlKCkpLgorCSAqIHNhbWUgYXBwcm9hY2ggaXMg dGFrZW4gd2hlbiByZXBsYXlpbmcgWExPR19IRUFQMl9QUlVORSogcmVjb3JkcyAoc2VlCisJICog aGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKSkuCiAJICovCiAJaWYgKCh4bHJlYy0+ZmxhZ3Mg JiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKSAmJgogCQlYTG9nUmVhZEJ1ZmZlckZvclJlZG9F eHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKQEAgLTc3NSwxMSAr NjM5LDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAw KTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJCSB2bWJ1ZmZl ciwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkgcmxvY2F0b3IpOworCQl2aXNpYmlsaXR5bWFw X3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxM X1ZJU0lCTEUgfAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkgIHJs b2NhdG9yKTsKIAogCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOwogCQlQYWdlU2V0 TFNOKHZtcGFnZSwgbHNuKTsKQEAgLTEzNjAsOSArMTIyNCw2IEBAIGhlYXAyX3JlZG8oWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5V UDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNl IFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQli cmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0 aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCA1YTdiYTkwNGYxYS4uMjhhNTBjODNhZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0xMjE2LDggKzEyMTYsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogd29ydGggb3B0aW1pemluZyBmb3Iu CiAJCQkgKi8KIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9z ZXRfdm1iaXRzKGJsb2Nrbm8sIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAotCQkJCQkJCQkJIHBhcmFt cy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQoYmxvY2tubywg dm1idWZmZXIsIG5ld192bWJpdHMsCisJCQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2Nh dG9yKTsKIAkJfQogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCmluZGV4IDIxMGFmYTExMzQ2Li44NzgyMGYzZmY0OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTg5NSwxMSArMTg5NSwxMSBAQCBsYXp5X3Nj YW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAKIAkJCVBhZ2VT ZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAot CQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUg fAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJCSB2YWNyZWwt PnJlbC0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCQkg IHZtYnVmZmVyLAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJCQkJ ICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkJICB2YWNyZWwtPnJlbC0+cmRfbG9j YXRvcik7CiAKIAkJCS8qCiAJCQkgKiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExfVklTSUJM RSBvbiB0aGUgaGVhcCBwYWdlIGFuZApAQCAtMjc3Niw5ICsyNzc2LDkgQEAgbGF6eV92YWN1dW1f aGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBi dWZmZXIsCiAJCSAqIHNldCBQRF9BTExfVklTSUJMRS4KIAkJICovCiAJCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJCSB2 bWJ1ZmZlciwgdm1mbGFncywKLQkJCQkJCQkJIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsKKwkJ dmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzLAorCQkJ CQkJICB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CiAJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxp dHlfY3V0b2ZmX3hpZDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAu YwppbmRleCBkMTQ1ODhlOTJhZS4uNzk5N2U5MjY4NzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKQEAgLTE0LDggKzE0LDcgQEAKICAqCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyICAtIGNsZWFyIGJpdHMgZm9yIG9uZSBwYWdlIGluIHRoZSB2aXNpYmlsaXR5IG1hcAogICoJ CXZpc2liaWxpdHltYXBfcGluCSAtIHBpbiBhIG1hcCBwYWdlIGZvciBzZXR0aW5nIGEgYml0CiAg KgkJdmlzaWJpbGl0eW1hcF9waW5fb2sgLSBjaGVjayB3aGV0aGVyIGNvcnJlY3QgbWFwIHBhZ2Ug aXMgYWxyZWFkeSBwaW5uZWQKLSAqCQl2aXNpYmlsaXR5bWFwX3NldAkgLSBzZXQgYml0KHMpIGlu IGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZSBhbmQgbG9nCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXRf dm1iaXRzIC0gc2V0IGJpdChzKSBpbiBhIHBpbm5lZCBwYWdlCisgKgkJdmlzaWJpbGl0eW1hcF9z ZXQJIC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKICAqCQl2aXNpYmls aXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAqCQl2aXNpYmlsaXR5bWFw X2NvdW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBpbiB2aXNpYmlsaXR5IG1hcAogICoJ CXZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBAIC0yMjAsMTA5ICsyMTksNiBAQCB2 aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpCiAJ cmV0dXJuIEJ1ZmZlcklzVmFsaWQodm1idWYpICYmIEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtYnVm KSA9PSBtYXBCbG9jazsKIH0KIAotLyoKLSAqCXZpc2liaWxpdHltYXBfc2V0IC0gc2V0IGJpdChz KSBvbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKLSAqCi0gKiByZWNwdHIgaXMgdGhlIExTTiBv ZiB0aGUgWExPRyByZWNvcmQgd2UncmUgcmVwbGF5aW5nLCBpZiB3ZSdyZSBpbiByZWNvdmVyeSwK LSAqIG9yIEludmFsaWRYTG9nUmVjUHRyIGluIG5vcm1hbCBydW5uaW5nLiAgVGhlIFZNIHBhZ2Ug TFNOIGlzIGFkdmFuY2VkIHRvIHRoZQotICogb25lIHByb3ZpZGVkOyBpbiBub3JtYWwgcnVubmlu Zywgd2UgZ2VuZXJhdGUgYSBuZXcgWExPRyByZWNvcmQgYW5kIHNldCB0aGUKLSAqIHBhZ2UgTFNO IHRvIHRoYXQgdmFsdWUgKHRob3VnaCB0aGUgaGVhcCBwYWdlJ3MgTFNOIG1heSAqbm90KiBiZSB1 cGRhdGVkOwotICogc2VlIGJlbG93KS4gIGN1dG9mZl94aWQgaXMgdGhlIGxhcmdlc3QgeG1pbiBv biB0aGUgcGFnZSBiZWluZyBtYXJrZWQKLSAqIGFsbC12aXNpYmxlOyBpdCBpcyBuZWVkZWQgZm9y IEhvdCBTdGFuZGJ5LCBhbmQgY2FuIGJlIEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiBpZiB0aGUg cGFnZSBjb250YWlucyBubyB0dXBsZXMuICBJdCBjYW4gYWxzbyBiZSBzZXQgdG8gSW52YWxpZFRy YW5zYWN0aW9uSWQKLSAqIHdoZW4gYSBwYWdlIHRoYXQgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBp cyBiZWluZyBtYXJrZWQgYWxsLWZyb3plbi4KLSAqCi0gKiBDYWxsZXIgaXMgZXhwZWN0ZWQgdG8g c2V0IHRoZSBoZWFwIHBhZ2UncyBQRF9BTExfVklTSUJMRSBiaXQgYmVmb3JlIGNhbGxpbmcKLSAq IHRoaXMgZnVuY3Rpb24uIEV4Y2VwdCBpbiByZWNvdmVyeSwgY2FsbGVyIHNob3VsZCBhbHNvIHBh c3MgdGhlIGhlYXAKLSAqIGJ1ZmZlci4gV2hlbiBjaGVja3N1bXMgYXJlIGVuYWJsZWQgYW5kIHdl J3JlIG5vdCBpbiByZWNvdmVyeSwgd2UgbXVzdCBhZGQKLSAqIHRoZSBoZWFwIGJ1ZmZlciB0byB0 aGUgV0FMIGNoYWluIHRvIHByb3RlY3QgaXQgZnJvbSBiZWluZyB0b3JuLgotICoKLSAqIFlvdSBt dXN0IHBhc3MgYSBidWZmZXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBtYXAgcGFnZSB0byB0aGlz IGZ1bmN0aW9uLgotICogQ2FsbCB2aXNpYmlsaXR5bWFwX3BpbiBmaXJzdCB0byBwaW4gdGhlIHJp Z2h0IG9uZS4gVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvCi0gKiBhbnkgSS9PLgotICoKLSAqIFJl dHVybnMgdGhlIHN0YXRlIG9mIHRoZSBwYWdlJ3MgVk0gYml0cyBiZWZvcmUgc2V0dGluZyBmbGFn cy4KLSAqLwotdWludDgKLXZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwgQnVm ZmVyIHZtQnVmLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJICB1aW50OCBmbGFncykK LXsKLQlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7 Ci0JdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwotCXVpbnQ4 CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFwQmxrKTsKLQlQYWdlCQlwYWdlOwot CXVpbnQ4CSAgICptYXA7Ci0JdWludDgJCXN0YXR1czsKLQotI2lmZGVmIFRSQUNFX1ZJU0lCSUxJ VFlNQVAKLQllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlggZm9yICVzICVkIiwKLQkJ IGZsYWdzLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsKLSNlbmRpZgot Ci0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpOwotCUFz c2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFwQnVm KSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdz KTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0 aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBhZ2Ug cGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYgQnVm ZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwgIndy b25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNzZXJ0 KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8Ci0JCSAgIEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9k ZShoZWFwQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qIENoZWNrIHRoYXQgd2Ug aGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQodm1C dWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxvZyhF UlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQot CXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikgUGFnZUdldENv bnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRfU0VD VElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJTWFy a0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQl7 Ci0JCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJQXNzZXJ0KCFJ blJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwg dm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYgZGF0YSBjaGVj a3N1bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJCSAqIG5lZWQg dG8gcHJvdGVjdCB0aGUgaGVhcCBwYWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkgKgotCQkJCSAq IElmIG5vdCwgdGhlbiB3ZSBtdXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLiBJ bgotCQkJCSAqIHRoaXMgY2FzZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3YXMgb21pdHRl ZCBmcm9tIHRoZQotCQkJCSAqIFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNvIGl0IHdvdWxk IGJlIGluY29ycmVjdCB0bwotCQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgotCQkJ CSAqLwotCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJCQlQYWdlCQlo ZWFwUGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNldExTTihoZWFw UGFnZSwgcmVjcHRyKTsKLQkJCQl9Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7 Ci0JCX0KLQotCQlFTkRfQ1JJVF9TRUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZlcih2bUJ1Ziwg QlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQlyZXR1cm4gc3RhdHVzOwotfQotCiAvKgogICogU2V0IFZN ICh2aXNpYmlsaXR5IG1hcCkgZmxhZ3MgaW4gdGhlIFZNIGJsb2NrIGluIHZtQnVmLgogICoKQEAg LTM0NCw5ICsyNDAsOSBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5IGZv ciBkZWJ1Z2dpbmcgbWVzc2FnZXMuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldF92bWJp dHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCSBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdz LAotCQkJCQkJIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQordmlzaWJpbGl0eW1hcF9z ZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3Ms CisJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKIHsKIAlCbG9ja051bWJlciBt YXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CiAJdWludDMyCQltYXBCeXRl ID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYwppbmRleCBjYTI2ZDFmMGVkMS4uMDg0NjFmZGY1OTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0zNDksMTMgKzM0OSw2IEBAIGhlYXAyX2Rlc2Mo U3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJfQogCQl9CiAJfQot CWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9WSVNJQkxFKQotCXsKLQkJeGxfaGVhcF92aXNp YmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgcmVjOwotCi0JCWFwcGVuZFN0cmluZ0lu Zm8oYnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1LCBmbGFnczogMHglMDJYIiwKLQkJ CQkJCSB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHhscmVjLT5mbGFncyk7Ci0JfQog CWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQpCiAJewogCQl4bF9oZWFw X211bHRpX2luc2VydCAqeGxyZWMgPSAoeGxfaGVhcF9tdWx0aV9pbnNlcnQgKikgcmVjOwpAQCAt NDYxLDkgKzQ1NCw2IEBAIGhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAJCWNhc2UgWExPR19I RUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWlkID0gIlBSVU5FX1ZBQ1VVTV9DTEVBTlVQ IjsKIAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWlkID0gIlZJU0lC TEUiOwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6CiAJCQlpZCA9 ICJNVUxUSV9JTlNFUlQiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9kZWNvZGUuYwppbmRleCA1ZTE1Y2IxODI1ZS4uYzBjYWM3ZWExYzMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNDU0LDcgKzQ1NCw2IEBAIGhlYXAyX2Rl Y29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikK IAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUzoKIAkJY2FzZSBYTE9HX0hFQVAyX1BS VU5FX1ZBQ1VVTV9TQ0FOOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6 Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgogCQljYXNlIFhMT0dfSEVBUDJfTE9DS19VUERB VEVEOgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5k ZXggZmM0NWQ3MmM3OWIuLjM2NTUzNThlZDZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j CkBAIC00NzUsMTIgKzQ3NSwxMiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hv dChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCSAqIElmIHdlIGdldCBw YXNzZWQgSW52YWxpZFRyYW5zYWN0aW9uSWQgdGhlbiB3ZSBkbyBub3RoaW5nIChubyBjb25mbGlj dCkuCiAJICoKIAkgKiBUaGlzIGNhbiBoYXBwZW4gd2hlbiByZXBsYXlpbmcgYWxyZWFkeS1hcHBs aWVkIFdBTCByZWNvcmRzIGFmdGVyIGEKLQkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9y IHdoZW4gcmVwbGF5aW5nIGFuIFhMT0dfSEVBUDJfVklTSUJMRQotCSAqIHJlY29yZCB0aGF0IG1h cmtzIGFzIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgYWxsLXZpc2libGUuICBJdCdz Ci0JICogYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJpbmcgaW5k ZXggZGVsZXRpb24KLQkgKiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlvbiBjYW4g cmVhc29uIHRoYXQgYSByZWNvdmVyeSBjb25mbGljdAotCSAqIHdoaWNoIGlzIHN1ZmZpY2llbnQg Zm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlIGJlZm9yZQotCSAqIHJl cGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCisJICogc3RhbmRieSBjcmFzaCBv ciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhIHJlY29yZCB0aGF0IG1hcmtzIGFzCisJICog ZnJvemVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhl IHZpc2liaWxpdHkKKwkgKiBtYXAuICBJdCdzIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3Jk cyBnZW5lcmF0ZWQgZHVyaW5nIGluZGV4CisJICogZGVsZXRpb24gKG9yaWdpbmFsIGV4ZWN1dGlv biBvZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkKKwkgKiBjb25mbGlj dCB3aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFr ZSBwbGFjZQorCSAqIGJlZm9yZSByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYp LgogCSAqLwogCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoc25hcHNob3RDb25mbGljdEhvcml6 b24pKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE2YzJiMmUzYzlj Li42OTY3ODE4NzgzMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9n LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTYwLDcgKzYwLDYg QEAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MJCTB4MTAKICNkZWZpbmUgWExP R19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgkweDIwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVf VkFDVVVNX0NMRUFOVVAJMHgzMAotI2RlZmluZSBYTE9HX0hFQVAyX1ZJU0lCTEUJCTB4NDAKICNk ZWZpbmUgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQgMHg1MAogI2RlZmluZSBYTE9HX0hFQVAyX0xP Q0tfVVBEQVRFRCAweDYwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTkVXX0NJRAkJMHg3MApAQCAtMjk0 LDcgKzI5MywxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAKICNkZWZpbmUgU2l6 ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWlu dDE2KSkKIAotLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRl Y29kaW5nIG9uIHN0YW5kYnkgKi8KKy8qCisgKiBUbyBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3Qg ZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSwgd2UgbXVzdCBrbm93CisgKiBpZiB0 aGUgdGFibGUgaXMgYSBjYXRhbG9nIHRhYmxlLiBOb3RlIHRoYXQgaW4gdmlzaWJpbGl0eW1hcGRl ZnMuaAorICogVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMIGlzIGFsc28gZGVmaW5lZCBh cyAoMSA8PCAyKS4geGxfaGVhcF9wcnVuZQorICogcmVjb3JkcyBzaG91bGQgdXNlIFhMSFBfSVNf Q0FUQUxPR19SRUwsIG5vdCBWSVNJQklMSVlUTUFQX1hMT0dfQ0FUQUxPR19SRUwgLS0KKyAqIGV2 ZW4gaWYgdGhleSBvbmx5IGNvbnRhaW4gdXBkYXRlcyB0byB0aGUgVk0uCisgKi8KICNkZWZpbmUJ CVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQogCiAvKgpAQCAtNDQzLDIwICs0NDgsNiBA QCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2lucGxhY2UKIAogI2RlZmluZSBNaW5TaXplT2ZIZWFw SW5wbGFjZQkob2Zmc2V0b2YoeGxfaGVhcF9pbnBsYWNlLCBubXNncykgKyBzaXplb2YoaW50KSkK IAotLyoKLSAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgc2V0dGluZyBhIHZp c2liaWxpdHkgbWFwIGJpdAotICoKLSAqIEJhY2t1cCBibGsgMDogdmlzaWJpbGl0eSBtYXAgYnVm ZmVyCi0gKiBCYWNrdXAgYmxrIDE6IGhlYXAgYnVmZmVyCi0gKi8KLXR5cGVkZWYgc3RydWN0IHhs X2hlYXBfdmlzaWJsZQotewotCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247 Ci0JdWludDgJCWZsYWdzOwotfSB4bF9oZWFwX3Zpc2libGU7Ci0KLSNkZWZpbmUgU2l6ZU9mSGVh cFZpc2libGUgKG9mZnNldG9mKHhsX2hlYXBfdmlzaWJsZSwgZmxhZ3MpICsgc2l6ZW9mKHVpbnQ4 KSkKLQogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9uZXdfY2lkCiB7CiAJLyoKQEAgLTUwMCwxMSAr NDkxLDYgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmhlYXAyX2lkZW50aWZ5KHVpbnQ4 IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2xvZ2ljYWxfcmV3cml0ZShYTG9nUmVhZGVy U3RhdGUgKnIpOwogCi1leHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAotCQkJCQkJCQkgICBCdWZmZXIgdm1fYnVmZmVyLAot CQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJ CQkgICB1aW50OCB2bWZsYWdzKTsKLQogLyogaW4gaGVhcGRlc2MuYywgc28gaXQgY2FuIGJlIHNo YXJlZCBiZXR3ZWVuIGZyb250ZW5kL2JhY2tlbmQgY29kZSAqLwogZXh0ZXJuIHZvaWQgaGVhcF94 bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxh Z3MsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5wbGFucywgeGxocF9mcmVlemVfcGxhbiAqKnBsYW5z LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXggYzZmYTM3YmU5NjguLjA1YmE2Nzg2 YjQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKQEAgLTE1LDcgKzE1LDYgQEAKICNk ZWZpbmUgVklTSUJJTElUWU1BUF9ICiAKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcGRl ZnMuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Js b2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlbGZp bGVsb2NhdG9yLmgiCkBAIC0zMiwxNSArMzEsOSBAQCBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFw X2NsZWFyKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIGV4dGVybiB2b2lkIHZp c2liaWxpdHltYXBfcGluKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJCQkJ CQkgIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxv Y2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5 bWFwX3NldChSZWxhdGlvbiByZWwsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVm ZmVyIGhlYXBCdWYsCi0JCQkJCQkJICAgWExvZ1JlY1B0ciByZWNwdHIsCi0JCQkJCQkJICAgQnVm ZmVyIHZtQnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkg ICB1aW50OCBmbGFncyk7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJs b2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3Ms Ci0JCQkJCQkJCQkgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKTsKK2V4dGVybiB1aW50 OCB2aXNpYmlsaXR5bWFwX3NldChCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJCSAgIEJ1ZmZl ciB2bUJ1ZiwgdWludDggZmxhZ3MsCisJCQkJCQkJICAgY29uc3QgUmVsRmlsZUxvY2F0b3Igcmxv Y2F0b3IpOwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlz aWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwg QmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHlt YXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwZGVmcy5oCmluZGV4IDVhZDVjMDIwODc3Li5lMDFiY2U0Yzk5ZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKQEAgLTIxLDE0ICsyMSw1IEBACiAjZGVmaW5lIFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfVkFMSURf QklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCiAJCQkJCQkJCQkJCSAq IGZsYWdzIGJpdHMgKi8KLS8qCi0gKiBUbyBkZXRlY3QgcmVjb3ZlcnkgY29uZmxpY3RzIGR1cmlu ZyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3RhbmRieSwgd2UgbmVlZAotICogdG8ga25vdyBpZiBh IHRhYmxlIGlzIGEgdXNlciBjYXRhbG9nIHRhYmxlLiBGb3IgdGhhdCB3ZSBhZGQgYW4gYWRkaXRp b25hbAotICogYml0IGludG8geGxfaGVhcF92aXNpYmxlLmZsYWdzLCBpbiBhZGRpdGlvbiB0byB0 aGUgYWJvdmUuCi0gKgotICogTkI6IFZJU0lCSUxJVFlNQVBfWExPR18qIG1heSBub3QgYmUgcGFz c2VkIHRvIHZpc2liaWxpdHltYXBfc2V0KCkuCi0gKi8KLSNkZWZpbmUgVklTSUJJTElUWU1BUF9Y TE9HX0NBVEFMT0dfUkVMCTB4MDQKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJ VFMJKFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyB8IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9H X1JFTCkKIAogI2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggMzQ1MTUzODU2NWUuLjI2N2Q3ZGM1NTI0IDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtNDMzMCw3ICs0MzMwLDYgQEAgeGxfaGVhcF9wcnVuZQogeGxf aGVhcF9yZXdyaXRlX21hcHBpbmcKIHhsX2hlYXBfdHJ1bmNhdGUKIHhsX2hlYXBfdXBkYXRlCi14 bF9oZWFwX3Zpc2libGUKIHhsX2ludmFsaWRfcGFnZQogeGxfaW52YWxpZF9wYWdlX2tleQogeGxf aW52YWxpZGF0aW9ucwotLSAKMi40My4wCgo= --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="UTF-8"; name="v26-0009-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v26-0009-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o0yq48 RnJvbSBjZjQ2MTVkODI2MzQwYTYyOTU3YmUyMmQwYzQxZjc4NzE5NGYwNjVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjYgMDkvMTVdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKClRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg YSB0dXBsZeKAmXMgeG1heCBpcwp2aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgKGFuZCB0aHVz IHJlbW92YWJsZSkuIFVwY29taW5nIGNoYW5nZXMgd2lsbAphbHNvIHVzZSBpdCB0byB0ZXN0IHdo ZXRoZXIgYSB0dXBsZeKAmXMgeG1pbiBpcyB2aXNpYmxlIHRvIGFsbCB0bwpkZWNpZGUgaWYgYSBw YWdlIGNhbiBiZSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKVGhl IG5ldyBuYW1lLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSwgYmV0dGVyIHJlZmxlY3RzIHRo aXMgYnJvYWRlcgpwdXJwb3NlLgoKUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0Bh bmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgfCAgNiArKystLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgfCAxMiArKysrKyst LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgICB8IDE3ICsrKysr KysrLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggICAgICAgICAgICAgICAg IHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJp bGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwppbmRl eCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgSGVhcFR1cGxlU2F0aXNm aWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25hcHNob3QsCiAJewog CQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwogCi0JCWlmIChHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3QtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQor CQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNuYXBzaG90LT52aXN0ZXN0LCBkZWFkX2Fm dGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwogCX0KIAllbHNlCkBAIC0xNTEyLDggKzE1 MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVhcFR1cGxlIGh0dXAsIEdsb2JhbFZpc1N0 YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBEZWxldGVyIGNvbW1pdHRlZCwg c28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9sZCBlbm91Z2guICovCi0JcmV0dXJuIEds b2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LAotCQkJCQkJCQkJICAgSGVhcFR1cGxl SGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVybiBHbG9iYWxWaXNYaWRWaXNpYmxlVG9B bGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgodHVwbGUpKTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggMjhhNTBjODNhZjQu LjA1NzRjNzhhNWViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjU1LDcg KzI1NSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsYXRpb24pOwogCi0J aWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwgcHJ1bmVfeGlkKSkKKwlp ZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBwcnVuZV94aWQpKQogCQlyZXR1 cm47CiAKIAkvKgpAQCAtNDg4LDcgKzQ4OCw3IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKE9pZCByZWxv aWQsIEJ1ZmZlciBidWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJICogRGV0ZXJtaW5pbmcg SFRTViBvbmx5IG9uY2UgZm9yIGVhY2ggdHVwbGUgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNz LAogCSAqIHRvIGRlYWwgd2l0aCBjYXNlcyB3aGVyZSBydW5uaW5nIEhUU1YgdHdpY2UgY291bGQg cmVzdWx0IGluIGRpZmZlcmVudAogCSAqIHJlc3VsdHMuICBGb3IgZXhhbXBsZSwgUkVDRU5UTFlf REVBRCBjYW4gdHVybiB0byBERUFEIGlmIGFub3RoZXIKLQkgKiBjaGVja2VkIGl0ZW0gY2F1c2Vz IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSB0byB1cGRhdGUgdGhlCisJICogY2hl Y2tlZCBpdGVtIGNhdXNlcyBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgdG8gdXBkYXRl IHRoZQogCSAqIGhvcml6b24sIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERF QUQgaWYgdGhlIGluc2VydGluZwogCSAqIHRyYW5zYWN0aW9uIGFib3J0cy4KIAkgKgpAQCAtMTMz MSwxMSArMTMzMSwxMSBAQCBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0oUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVyIGJ1ZmZlcikKIAkgKiBEZXRlcm1pbmUgd2hl dGhlciBvciBub3QgdGhlIHR1cGxlIGlzIGNvbnNpZGVyZWQgZGVhZCB3aGVuIGNvbXBhcmVkCiAJ ICogd2l0aCB0aGUgcHJvdmlkZWQgR2xvYmFsVmlzU3RhdGUuIE9uLWFjY2VzcyBwcnVuaW5nIGRv ZXMgbm90IHByb3ZpZGUKIAkgKiBWYWN1dW1DdXRvZmZzLiBBbmQgZm9yIHZhY3V1bSwgZXZlbiBp ZiB0aGUgdHVwbGUncyB4bWF4IGlzIG5vdCBvbGRlcgotCSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xv YmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQKLQkgKiBp ZiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5n IG9mIHZhY3V1bWluZworCSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xvYmFsVmlzWGlkVmlzaWJsZVRv QWxsKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQgaWYKKwkgKiB0aGUgR2xvYmFsVmlzU3RhdGUg aGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZwogCSAqIHRo ZSByZWxhdGlvbi4KIAkgKi8KLQlpZiAoR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHByc3Rh dGUtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCWlmIChHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwo cHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCiAJCXJldHVybiBIRUFQVFVQTEVfREVBRDsK IAogCXJldHVybiByZXM7CkBAIC0xNzk0LDcgKzE3OTQsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCS8qCiAJCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHByc3RhdGUtPmN1dG9mZnMg Zm9yIHRoaXMgdGVzdCwgYmVjYXVzZQogCQkJCSAqIHdlIG9ubHkgdXBkYXRlICdhbGxfdmlzaWJs ZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5nCi0JCQkJICogaXMgcmVxdWVzdGVkLiBX ZSBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkCisJCQkJICogaXMgcmVxdWVz dGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKIAkJCQkgKiBpbnN0 ZWFkLCBpZiBhIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRvIHNldCB0aGUgVk0gYml0Lgog CQkJCSAqLwogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3ZhY3V1bS5jCmluZGV4IGNiNTY3MWMxYTRlLi4zYTY4NzU3YzA5YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MzYsNyArNTM2LDcgQEAgdmFjdXVtUmVk aXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVsYXRpb24gaGVhcHJlbCwgQnVm ZmVyIGJ1ZmZlcikKIAkJICovCiAJCWlmIChkdC0+dHVwc3RhdGUgPT0gU1BHSVNUX1JFRElSRUNU ICYmCiAJCQkoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGR0LT54aWQpIHx8Ci0JCQkgR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsIGR0LT54aWQpKSkKKwkJCSBHbG9iYWxWaXNYaWRW aXNpYmxlVG9BbGwodmlzdGVzdCwgZHQtPnhpZCkpKQogCQl7CiAJCQlkdC0+dHVwc3RhdGUgPSBT UEdJU1RfUExBQ0VIT0xERVI7CiAJCQlBc3NlcnQob3BhcXVlLT5uUmVkaXJlY3Rpb24gPiAwKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggZjNhMTYwMzIwNGUuLjY3ZGE2NzM3 NDk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNDE3OSw4ICs0MTc5LDcg QEAgR2xvYmFsVmlzVXBkYXRlKHZvaWQpCiAgKiBTZWUgY29tbWVudCBmb3IgR2xvYmFsVmlzU3Rh dGUgZm9yIGRldGFpbHMuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLAotCQkJCQkJCQlGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KQorR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIEZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJLyoKIAkgKiBJZiBmeGlkIGlzIG9sZGVyIHRoYW4g bWF5YmVfbmVlZGVkIGJvdW5kLCBpdCBkZWZpbml0ZWx5IGlzIHZpc2libGUgdG8KQEAgLTQyMTQs MTQgKzQyMTMsMTQgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChHbG9iYWxWaXNT dGF0ZSAqc3RhdGUsCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVGdWxsWGlkKCkgZm9yIDMyYml0IHhpZHMuCisgKiBXcmFwcGVyIGFyb3VuZCBHbG9i YWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgZm9yIDMyYml0IHhpZHMuCiAgKgogICogSXQgaXMg Y3J1Y2lhbCB0aGF0IHRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgeGlkcyBmcm9tIGEgc291cmNl IHRoYXQKICAqIHByb3RlY3RzIGFnYWluc3QgeGlkIHdyYXBhcm91bmRzIChlLmcuIGZyb20gYSB0 YWJsZSBhbmQgdGh1cyBwcm90ZWN0ZWQgYnkKICAqIHJlbGZyb3plbnhpZCkuCiAgKi8KIGJvb2wK LUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5z YWN0aW9uSWQgeGlkKQorR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZpc1N0YXRlICpz dGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKIApA QCAtNDIzNSwxMiArNDIzNCwxMiBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoR2xvYmFs VmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIAkgKi8KIAlmeGlkID0gRnVsbFhp ZFJlbGF0aXZlVG8oc3RhdGUtPmRlZmluaXRlbHlfbmVlZGVkLCB4aWQpOwogCi0JcmV0dXJuIEds b2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJldHVybiBHbG9i YWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsKIH0KIAogLyoKICAqIENvbnZl bmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3IoKSBhbmQKLSAqIEdsb2JhbFZp c1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFs VmlzRnVsbFhpZFZpc2libGVUb0FsbCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wK IEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpCkBAIC00MjQ5LDEyICs0MjQ4LDEyIEBAIEdsb2JhbFZpc0NoZWNrUmVtb3Zh YmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiAKIAlzdGF0 ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBHbG9iYWxWaXNUZXN0SXNSZW1v dmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVsbFhpZFZpc2li bGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252ZW5pZW5jZSB3cmFwcGVyIGFy b3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVY aWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlzVGVzdElzVmlzaWJsZVhpZCgp LCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxl WGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBAIC00MjYzLDcgKzQyNjIsNyBA QCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiByZWwsIFRyYW5zYWN0aW9uSWQg eGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7CiAKLQlyZXR1cm4gR2xvYmFs VmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJldHVybiBHbG9iYWxWaXNYaWRW aXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgKaW5kZXggNjA0 YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9zbmFw bWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5oCkBAIC0xMDAsOCArMTAwLDgg QEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNuYXBzaG90KTsKICAqLwog dHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CiBleHRlcm4gR2xv YmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24gcmVsKTsKLWV4dGVybiBib29s IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5z YWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKTsKK2V4dGVy biBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRy YW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9B bGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKTsKIGV4dGVy biBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rp b25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVGdWxsWGlkKFJl bGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAKLS0gCjIuNDMuMAoK --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="UTF-8"; name="v26-0010-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v26-0010-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o136n9 RnJvbSBjYzY5YzIyYmU5NzRjNTc5ZTlmZGMxODZmODNkZDA2M2M0MGUwNmJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjYgMTAvMTVdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK CkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQgcGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxl cycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBh cmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUgWElEIGNob3NlbiBhdAp0aGUgc3RhcnQg b2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVzZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2gg YWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBw cnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhhdmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0 YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxzbyBiZW5lZml0cyB2YWN1dW0gZGlyZWN0 bHk6IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heQphZHZhbmNlIGR1cmluZyBhIHZh Y3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lkZXJlZAphbGwtdmlzaWJs ZS4gQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRkIGEgaGV1cmlzdGljIHRv CnVwZGF0ZSBHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVyaW5nIHZhY3V1bXMgb2Yg bGFyZ2UgdGFibGVzLiBJbgp0aGUgcmFyZSBjYXNlIHRoYXQgdGhlIEdsb2JhbFZpc1N0YXRlIG1v dmVzIGJhY2t3YXJkLCB2YWN1dW0gZmFsbHMgYmFjawp0byBPbGRlc3RYbWluIHRvIGVuc3VyZSB3 ZSBkb27igJl0IGF0dGVtcHQgdG8gZnJlZXplIGEgZGVhZCB0dXBsZSB0aGF0Cndhc27igJl0IHll dCBwcnVuYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEdsb2JhbFZpc1N0YXRlLgoKQmVjYXVzZSBjb21w YXJpbmcgYSB0cmFuc2FjdGlvbiBJRCBhZ2FpbnN0IEdsb2JhbFZpc1N0YXRlIGlzIG1vcmUKZXhw ZW5zaXZlIHRoYW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaW5nbGUgWElELCB3ZSBkZWZlciB0aGlz IGNoZWNrIHVudGlsCmFmdGVyIHNjYW5uaW5nIGFsbCB0dXBsZXMgb24gdGhlIHBhZ2UuIElmIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCB3YXMKbWFpbnRhaW5lZCwgd2UgcGVyZm9ybSB0aGUgR2xvYmFs VmlzU3RhdGUgY2hlY2sgb25seSBvbmNlIHBlciBwYWdlLgpUaGlzIGlzIHNhZmUgYmVjYXVzZSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgcmVjb3JkcyB0aGUgbmV3ZXN0IHhtaW4gb24KdGhlIHBhZ2U7 IGlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGlyZSBwYWdlIGlzIGFsbC12 aXNpYmxlLgoKVGhpcyBhcHByb2FjaCBtYXkgcmVzdWx0IGluIGV4YW1pbmluZyBtb3JlIHR1cGxl IHhtaW5zIHRoYW4gYmVmb3JlLApzaW5jZSB3aXRoIE9sZGVzdFhtaW4gd2UgY291bGQgc29tZXRp bWVzIHJ1bGUgb3V0IHRoZSBwYWdlIGJlaW5nCmFsbC12aXNpYmxlIGVhcmxpZXIuIEhvd2V2ZXIs IHByb2ZpbGluZyBzaG93cyB0aGUgYWRkaXRpb25hbCBjb3N0IGlzIG5vdApzaWduaWZpY2FudC4K ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2Vk LWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgfCAyOCArKysrKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICB8IDQzICsrKysrKysrKy0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICB8IDEw ICsrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgICAgIHwgMTEg KysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCmluZGV4IDRl YmM4YWJkYmViLi5lZGQ1MjlkYzNjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1fdmlzaWJpbGl0eS5jCkBAIC0xMTg5LDYgKzExODksMzQgQEAgSGVhcFR1cGxlU2F0aXNmaWVz VmFjdXVtKEhlYXBUdXBsZSBodHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJcmV0dXJu IHJlczsKIH0KIAorLyoKKyAqIE5lYXJseSB0aGUgc2FtZSBhcyBIZWFwVHVwbGVTYXRpc2ZpZXNW YWN1dW0sIGJ1dCB1c2VzIGEgR2xvYmFsVmlzU3RhdGUgdG8KKyAqIGRldGVybWluZSB3aGV0aGVy IG9yIG5vdCBhIHR1cGxlIGlzIEhFQVBUVVBMRV9ERUFEIE9yCisgKiBIRUFQVFVQTEVfUkVDRU5U TFlfREVBRC4gSXQgc2VydmVzIHRoZSBzYW1lIHB1cnBvc2UgYnV0IGNhbiBiZSB1c2VkIGJ5Cisg KiBjYWxsZXJzIHRoYXQgaGF2ZSBub3QgY2FsY3VsYXRlZCBhIHNpbmdsZSBPbGRlc3RYbWluIHZh bHVlLgorICovCitIVFNWX1Jlc3VsdAorSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlz KEhlYXBUdXBsZSBodHVwLCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKKwkJCQkJCQkJICBCdWZm ZXIgYnVmZmVyKQoreworCVRyYW5zYWN0aW9uSWQgZGVhZF9hZnRlciA9IEludmFsaWRUcmFuc2Fj dGlvbklkOworCUhUU1ZfUmVzdWx0IHJlczsKKworCXJlcyA9IEhlYXBUdXBsZVNhdGlzZmllc1Zh Y3V1bUhvcml6b24oaHR1cCwgYnVmZmVyLCAmZGVhZF9hZnRlcik7CisKKwlpZiAocmVzID09IEhF QVBUVVBMRV9SRUNFTlRMWV9ERUFEKQorCXsKKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlk KGRlYWRfYWZ0ZXIpKTsKKworCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3Qs IGRlYWRfYWZ0ZXIpKQorCQkJcmVzID0gSEVBUFRVUExFX0RFQUQ7CisJfQorCWVsc2UKKwkJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2FmdGVyKSk7CisKKwlyZXR1cm4gcmVzOwor fQorCiAvKgogICogV29yayBob3JzZSBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtIGFuZCBz aW1pbGFyIHJvdXRpbmVzLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg MDU3NGM3OGE1ZWIuLmU5NzU0ZDQzZjcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtNDUxLDExICs0NTEsMTIgQEAgcHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAKIAkvKgogCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhl IG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKLQkgKiBvbGRlciB0aGFuIE9s ZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUK LQkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVu Y291bnRlcmVkIHRoYXQgaXMKLQkgKiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQgaXMg dW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCi0JICogbWFpbnRhaW5lZCwgaXQgY2FuIGJl IHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uCi0JICogd2hl biB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBw YWdlLgorCSAqIG9uIHRoZSBwYWdlIG9sZGVyIHRoYW4gdGhlIHZpc2liaWxpdHkgaG9yaXpvbiBy ZXByZXNlbnRlZCBpbiB0aGUKKwkgKiBHbG9iYWxWaXNTdGF0ZS4gVGhpcyBmaWVsZCBpcyBvbmx5 IGtlcHQgdXAtdG8tZGF0ZSBpZiB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlLiBBcyBzb29u IGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcyBub3QgdmlzaWJsZSB0bworCSAqIGFs bCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMgaXQgaXMgbWFpbnRhaW5l ZCwgaXQgY2FuIGJlCisJICogdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0 IGhvcml6b24gd2hlbiB1cGRhdGluZyB0aGUgVk0KKwkgKiBhbmQvb3IgZnJlZXppbmcgYWxsIHRo ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJICovCiAJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiB9CkBAIC05ODQsMTQgKzk4NSwxMyBAQCBoZWFw X3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKICAqLwogc3RhdGljIGJvb2wK IGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJ CQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIEdsb2JhbFZpc1N0YXRlICp2aXN0 ZXN0LAogCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCiAJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlz aWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0p CiB7CiAKLQlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLAot CQkJCQkJCQkJCSAgT2xkZXN0WG1pbiwKKwlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92 aXNpYmxlKHJlbCwgYnVmLCB2aXN0ZXN0LAogCQkJCQkJCQkJCSAgTlVMTCwgMCwKIAkJCQkJCQkJ CQkgIGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCkBAIC0x MDc4LDYgKzEwNzgsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAlwcnVuZV9mcmVlemVfcGxhbihSZWxhdGlvbkdldFJlbGlkKHBhcmFt cy0+cmVsYXRpb24pLAogCQkJCQkgIGJ1ZmZlciwgJnByc3RhdGUsIG9mZl9sb2MpOwogCisJLyoK KwkgKiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UsIGlm IHRoZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nc3QgdGhlbSBpcyBub3QgdmlzaWJsZSB0byBldmVy eW9uZSwgdGhlIHBhZ2UgY2Fubm90IGJlCisJICogYWxsLXZpc2libGUuCisJICovCisJaWYgKHBy c3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHByc3RhdGUudmlz aWJpbGl0eV9jdXRvZmZfeGlkKSAmJgorCQkhR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHByc3Rh dGUudmlzdGVzdCwgcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpKQorCQlwcnN0YXRlLmFs bF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisKIAkvKgogCSAqIElmIGNo ZWNrc3VtcyBhcmUgZW5hYmxlZCwgY2FsbGluZyBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0o KSB3aGlsZQogCSAqIGNoZWNraW5nIHR1cGxlIHZpc2liaWxpdHkgaW5mb3JtYXRpb24gaW4gcHJ1 bmVfZnJlZXplX3BsYW4oKSBtYXkgaGF2ZQpAQCAtMTI1OSwxMCArMTI2OSw5IEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCWJvb2wJCWRl YnVnX2FsbF9mcm96ZW47CiAKIAkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwot CQlBc3NlcnQocHJzdGF0ZS5jdXRvZmZzKTsKIAogCQlBc3NlcnQoaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJCQlwcnN0YXRlLmN1dG9m ZnMtPk9sZGVzdFhtaW4sCisJCQkJCQkJCQkJcHJzdGF0ZS52aXN0ZXN0LAogCQkJCQkJCQkJCSZk ZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKTsKIApA QCAtMTc5MSwyMCArMTgwMCw2IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3Jt YWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJICovCiAJ CQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFhtaW4oaHR1cCk7CiAKLQkJCQkvKgotCQkJCSAq IEZvciBub3cgYWx3YXlzIHVzZSBwcnN0YXRlLT5jdXRvZmZzIGZvciB0aGlzIHRlc3QsIGJlY2F1 c2UKLQkJCQkgKiB3ZSBvbmx5IHVwZGF0ZSAnYWxsX3Zpc2libGUnIGFuZCAnYWxsX2Zyb3plbicg d2hlbiBmcmVlemluZwotCQkJCSAqIGlzIHJlcXVlc3RlZC4gV2UgY291bGQgdXNlIEdsb2JhbFZp c1hpZFZpc2libGVUb0FsbCgpCi0JCQkJICogaW5zdGVhZCwgaWYgYSBub24tZnJlZXppbmcgY2Fs bGVyIHdhbnRlZCB0byBzZXQgdGhlIFZNIGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0 ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0 ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikpCi0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJs ZSA9IGZhbHNlOwotCQkJCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCWJyZWFr OwotCQkJCX0KLQogCQkJCS8qIFRyYWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJCQkJaWYg KFRyYW5zYWN0aW9uSWRGb2xsb3dzKHhtaW4sIHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hp ZCkgJiYKIAkJCQkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhtaW4pKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCmluZGV4IDg3ODIwZjNmZjQ5Li40NzlmYjA5Njk3NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjczMCw3ICsyNzMwLDcgQEAgbGF6eV92YWN1 dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZl ciBidWZmZXIsCiAJICogZG9uZSBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwog CWlmIChoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwK LQkJCQkJCQkJCSAgIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFj cmVsLT52aXN0ZXN0LAogCQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJ CQkJCQkJICAgJmFsbF9mcm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkg ICAmdmFjcmVsLT5vZmZudW0pKQpAQCAtMzQ5MSw3ICszNDkxLDcgQEAgZGVhZF9pdGVtc19jbGVh bnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBh bGwtdmlzaWJsZSBvdGhlciB0aGFuIHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNldHMgYW5kIGZh bHNlIG90aGVyd2lzZS4KICAqCi0gKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZp c2liaWxpdHkuCisgKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAg KgogICogT3V0cHV0IHBhcmFtZXRlcnM6CiAgKgpAQCAtMzUwNyw3ICszNTA3LDcgQEAgZGVhZF9p dGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKICAqLwogYm9vbAogaGVhcF9wYWdlX3dv dWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkgICBU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCiAJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBpbnQg bmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0zNTgxLDcgKzM1 ODEsNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgYnVmLAogCiAJCS8qIFZpc2liaWxpdHkgY2hlY2tzIG1heSBkbyBJTyBvciBhbGxvY2F0ZSBt ZW1vcnkgKi8KIAkJQXNzZXJ0KENyaXRTZWN0aW9uQ291bnQgPT0gMCk7Ci0JCXN3aXRjaCAoSGVh cFR1cGxlU2F0aXNmaWVzVmFjdXVtKCZ0dXBsZSwgT2xkZXN0WG1pbiwgYnVmKSkKKwkJc3dpdGNo IChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1HbG9iYWxWaXMoJnR1cGxlLCB2aXN0ZXN0LCBidWYp KQogCQl7CiAJCQljYXNlIEhFQVBUVVBMRV9MSVZFOgogCQkJCXsKQEAgLTM2MDAsNyArMzYwMCw3 IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBi dWYsCiAJCQkJCSAqIHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBjb21taXR0ZWQ/CiAJCQkJCSAq LwogCQkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwotCQkJ CQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBPbGRlc3RYbWluKSkKKwkJCQkJaWYg KCFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwgeG1pbikpCiAJCQkJCXsKIAkJCQkJ CWFsbF92aXNpYmxlID0gZmFsc2U7CiAJCQkJCQkqYWxsX2Zyb3plbiA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCmluZGV4IDkxMDBkNDJjY2JiLi5hMzNiNWVmNTVhOCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApA QCAtMjcyLDEwICsyNzIsOSBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCiAJ LyoKIAkgKiBDb250YWlucyB0aGUgY3V0b2ZmcyB1c2VkIGZvciBmcmVlemluZy4gVGhleSBhcmUg cmVxdWlyZWQgaWYgdGhlCi0JICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0 LiBjdXRvZmZzLT5PbGRlc3RYbWluIGlzIGFsc28gdXNlZAotCSAqIHRvIGRldGVybWluZSBpZiBk ZWFkIHR1cGxlcyBhcmUgSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IKLQkgKiBIRUFQVFVQTEVf REVBRC4gQ3VycmVudGx5IG9ubHkgdmFjdXVtIHBhc3NlcyBpbiBjdXRvZmZzLiBWYWN1dW0KLQkg KiBjYWxjdWxhdGVzIHRoZW0gb25jZSwgYXQgdGhlIGJlZ2lubmluZyBvZiB2YWN1dW1pbmcgdGhl IHJlbGF0aW9uLgorCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldC4gQ3Vy cmVudGx5IG9ubHkgdmFjdXVtIHBhc3NlcyBpbgorCSAqIGN1dG9mZnMuIFZhY3V1bSBjYWxjdWxh dGVzIHRoZW0gb25jZSwgYXQgdGhlIGJlZ2lubmluZyBvZiB2YWN1dW1pbmcgdGhlCisJICogcmVs YXRpb24uCiAJICovCiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiB9IFBydW5lRnJl ZXplUGFyYW1zOwpAQCAtNDM5LDcgKzQzOCw3IEBAIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiBleHRlcm4gdm9p ZCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFt cyBwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CiBleHRlcm4gYm9vbCBo ZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAot CQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkgICBHbG9i YWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZz ZXRzLAogCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCiAJCQkJCQkJCQkJICAgYm9vbCAq YWxsX2Zyb3plbiwKQEAgLTQ1Myw2ICs0NTIsOCBAQCBleHRlcm4gVE1fUmVzdWx0IEhlYXBUdXBs ZVNhdGlzZmllc1VwZGF0ZShIZWFwVHVwbGUgaHR1cCwgQ29tbWFuZElkIGN1cmNpZCwKIAkJCQkJ CQkJCQkgIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCQkJ CQkJCQkJCQlCdWZmZXIgYnVmZmVyKTsKK2V4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRp c2ZpZXNWYWN1dW1HbG9iYWxWaXMoSGVhcFR1cGxlIGh0dXAsCisJCQkJCQkJCQkJCQkJIEdsb2Jh bFZpc1N0YXRlICp2aXN0ZXN0LCBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBI ZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1Ib3Jpem9uKEhlYXBUdXBsZSBodHVwLCBCdWZmZXIgYnVm ZmVyLAogCQkJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqZGVhZF9hZnRlcik7CiBleHRlcm4g dm9pZCBIZWFwVHVwbGVTZXRIaW50Qml0cyhIZWFwVHVwbGVIZWFkZXIgdHVwbGUsIEJ1ZmZlciBi dWZmZXIsCi0tIAoyLjQzLjAKCg== --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="UTF-8"; name="v26-0011-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v26-0011-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o166210 RnJvbSA2ZTEwZDU4NTc5YWUwNzEwODViZGYwZmZkNjEwYzc5MTI5YjU0OWQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjYgMTEvMTVdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCgpSZXZpZXdlZC1i eTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyB8IDE1ICsrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwppbmRleCBlOTc1NGQ0M2Y3Mi4uYTRjM2JkMDAyNTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNjU3LDggKzE2NTcsMTMgQEAgaGVhcF9wcnVuZV9yZWNvcmRf ZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCS8qCiAJICog RGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBsYXRlcgogCSAqIGR1cmluZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hv dWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZQotCSAqIHBhZ2UuCisJICogcGFnZS4gSWYgd2Ug d29uJ3QgYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3Vn aC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0K IAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRl YWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE5MTcsOCAr MTkyMiwxNCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3Qg dW5zZXQgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdW50aWwgbGF0ZXIsIGF0IHRoZQogCSAq IGVuZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVz IHRvIGF0dGVtcHQgdG8KIAkgKiBmcmVlemUgdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxv bmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nCi0JICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2ls bCBiZSBjb3JyZWN0LiBJZiB3ZSB3b24ndCBhdHRlbXB0IGZyZWV6aW5nLAorCSAqIHRob3VnaCwg anVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3cuCiAJICovCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0 X2ZyZWV6ZSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUt PmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0IGZv ciB2YWN1dW0gKi8KIAlwcnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRlLT5scGRlYWRfaXRlbXMr K10gPSBvZmZudW07Ci0tIAoyLjQzLjAKCg== --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0012-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v26-0012-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o193911 RnJvbSA4NDkzODgyMzA1YjdjNjMyYzk4YmZkYTdkYWZjZGI0Nzg1ZTM4OTJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNiAxMi8xNV0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 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== --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0013-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v26-0013-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o1c4n12 RnJvbSAxZDcyNzljNTMxMThlMzgyNDYzOTViM2JhNTc1ZGI0OGRjODE3MmZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MTI6MTggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNiAxMy8xNV0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv 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 c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMjZj Yjc1MDU4ZDEuLjRhZDg5NDFjNjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODQyLDcg KzI4NDIsOCBAQCBfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAq c3RhdGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJy ZW50OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSk7CisJCQkJCQkJCQlQ YXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7 CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRl eEluZm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRDYWxsYmFja1BhcmFsbGVs LCBzdGF0ZSwgc2Nhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBkZjMwZGNj MDIyOC4uYWFhNTQwMWI3MzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu 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 bHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggYTMzYjVlZjU1YTguLmJhM2ZmOGMwODQ1IDEwMDY0 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== --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0014-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v26-0014-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o1eew13 RnJvbSAxMTUzOTE1YmM0ZGIyMDdmNjNlMjcxODIzNDQ3OGQyMjM3ZmRiNzNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MjQ6MDggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNiAxNC8xNV0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gYW5kIENPUFkgRlJFRVpFIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJs ZSBvcgphbGwtZnJvemVuLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0gc2V0 dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWluZyBo ZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmls bCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1W N1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNDQgKysrKysrKysrKysrKysrKystLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKyst LQogLi4uL3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAgIHwgIDMgKy0K IDUgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZm 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 YwppbmRleCBhNGMzYmQwMDI1My4uZDFlYzZkMWI2MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k 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 LAogCQkJCQkJCQkJICAgTlVMTCwgTlVMTCk7CiAKQEAgLTkzNSw2ICs5NDgsOSBAQCBpZGVudGlm eV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIs CiAgKiBjb3JydXB0ZWQsIGl0IHdpbGwgZml4IHRoZW0gYnkgY2xlYXJpbmcgdGhlIFZNIGJpdHMg YW5kIHZpc2liaWxpdHkgaGludC4KICAqIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBkb25lIGlu IGEgY3JpdGljYWwgc2VjdGlvbi4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBh ZnRlciBkb19mcmVlemUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVl biBzZXQpLCBhcyB0aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9u LgorICoKICAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBz ZXQsIGFsb25nIHdpdGggcmV0dXJuaW5nIHRoZQogICogY3VycmVudCB2YWx1ZSBvZiB0aGUgVk0g Yml0cyBpbiAqb2xkX3ZtYml0cyBhbmQgdGhlIGRlc2lyZWQgbmV3IHZhbHVlIG9mCiAgKiB0aGUg Vk0gYml0cyBpbiAqbmV3X3ZtYml0cy4KQEAgLTk0NCw2ICs5NjAsOCBAQCBoZWFwX3BhZ2Vfd2ls bF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJICBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhl YXBfcGFnZSwKIAkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAogCQkJCQkgIGludCBu bHBkZWFkX2l0ZW1zLAogCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkgIHVpbnQ4ICpu ZXdfdm1iaXRzKQpAQCAtOTUxLDYgKzk2OSwyNCBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwKIAlpZiAoIXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCQly ZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5k IHdlJ3JlIG5vdCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2li aWxpdHkgbWFwIGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJ ICogdGhlIHBhZ2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBp bmNsdWRpbmcgYQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGlu IHRoZSBXQUwuIFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2Vz cyBwcnVuaW5nIGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFs aWQuCisJICovCisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFCdWZmZXJJ c0RpcnR5KGhlYXBfYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChoZWFwX2J1 ZmZlcikpKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJKm9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLAogCQkJCQkJCQkJ CSAgICZ2bWJ1ZmZlcik7CiAKQEAgLTExNDYsNiArMTE4Miw4IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgIGJ1ZmZlciwK IAkJCQkJCQkJCSAgcGFnZSwKIAkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHBhcmFt cy0+cmVhc29uLAorCQkJCQkJCQkJICBkb19wcnVuZSwgZG9fZnJlZXplLAogCQkJCQkJCQkJICBw cnN0YXRlLmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCiAJCQkJCQkJCQkg ICZuZXdfdm1iaXRzKTsKQEAgLTEyMzIsOSArMTI3MCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1 ZmZlcik7CiAKLQkJLyoKLQkJICogRW1pdCBhIFdBTCBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmQg c2hvd2luZyB3aGF0IHdlIGRpZAotCQkgKi8KKwkJLyogRW1pdCBhIFdBTCBYTE9HX0hFQVAyX1BS VU5FKiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZCAqLwogCQlpZiAoUmVsYXRpb25OZWVkc1dB TChwYXJhbXMtPnJlbGF0aW9uKSkKIAkJewogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShw YXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggYmEzZmY4YzA4NDUu LmM4MzVjNzkyYzgwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC05NSw2ICs5NSwxMyBAQCB0eXBlZGVm IHN0cnVjdCBIZWFwU2NhbkRlc2NEYXRhCiAJICovCiAJUGFyYWxsZWxCbG9ja1RhYmxlU2Nhbldv cmtlckRhdGEgKnJzX3BhcmFsbGVsd29ya2VyZGF0YTsKIAorCS8qCisJICogRm9yIHNlcXVlbnRp YWwgc2NhbnMgYW5kIGJpdG1hcCBoZWFwIHNjYW5zLiBJZiB0aGUgcmVsYXRpb24gaXMgbm90CisJ ICogYmVpbmcgbW9kaWZpZWQsIG9uLWFjY2VzcyBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJy ZW50IGhlYXAgcGFnZSdzCisJICogY29ycmVzcG9uZGluZyBWTSBibG9jayB0byB0aGlzIGJ1ZmZl ci4KKwkgKi8KKwlCdWZmZXIJCXJzX3ZtYnVmZmVyOworCiAJLyogdGhlc2UgZmllbGRzIG9ubHkg dXNlZCBpbiBwYWdlLWF0LWEtdGltZSBtb2RlIGFuZCBmb3IgYml0bWFwIHNjYW5zICovCiAJdWlu dDMyCQlyc19jaW5kZXg7CQkvKiBjdXJyZW50IHR1cGxlJ3MgaW5kZXggaW4gdmlzdHVwbGVzICov CiAJdWludDMyCQlyc19udHVwbGVzOwkJLyogbnVtYmVyIG9mIHZpc2libGUgdHVwbGVzIG9uIHBh Z2UgKi8KQEAgLTExNyw4ICsxMjQsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaEhlYXBE YXRhCiB7CiAJSW5kZXhGZXRjaFRhYmxlRGF0YSB4c19iYXNlOwkvKiBBTSBpbmRlcGVuZGVudCBw YXJ0IG9mIHRoZSBkZXNjcmlwdG9yICovCiAKLQlCdWZmZXIJCXhzX2NidWY7CQkvKiBjdXJyZW50 IGhlYXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueSAqLwotCS8qIE5COiBpZiB4c19jYnVmIGlzIG5v dCBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyICovCisJLyoKKwkg KiBDdXJyZW50IGhlYXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueS4gTkI6IGlmIHhzX2NidWYgaXMg bm90CisJICogSW52YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlci4KKwkg Ki8KKwlCdWZmZXIJCXhzX2NidWY7CisKKwkvKgorCSAqIEZvciBpbmRleCBzY2FucyB0aGF0IGRv IG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgaGVhcCB0YWJsZSwgb24tYWNjZXNzCisJICogcHJ1 bmluZyBtYXkgcmVhZCBpbiB0aGUgY3VycmVudCBoZWFwIHBhZ2UncyBjb3JyZXNwb25kaW5nIFZN IGJsb2NrIHRvCisJICogdGhpcyBidWZmZXIuCisJICovCisJQnVmZmVyCQl4c192bWJ1ZmZlcjsK IAogCS8qCiAJICogU29tZSBvcHRpbWl6YXRpb25zIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBpZiB0 aGUgcXVlcnkgZG9lcyBub3QgbW9kaWZ5CkBAIC00MTksNyArNDM2LDggQEAgZXh0ZXJuIFRyYW5z YWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJ CQkJICBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSk7CiAKIC8qIGluIGhlYXAvcHJ1bmVoZWFw LmMgKi8KLWV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIpOworZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJQnVmZmVyICp2bWJ1ZmZlcik7CiBl eHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCQkJCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJCQkJ CQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVy eS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90 LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKaW5kZXggZWJlMmZhZTE3ODkuLmJkZDlm MGE2MmNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2lj YWxfZGVjb2RpbmcucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dp Y2FsX2RlY29kaW5nLnBsCkBAIC0yOTYsNiArMjk2LDcgQEAgd2FsX2xldmVsID0gJ2xvZ2ljYWwn CiBtYXhfcmVwbGljYXRpb25fc2xvdHMgPSA0CiBtYXhfd2FsX3NlbmRlcnMgPSA0CiBhdXRvdmFj dXVtID0gb2ZmCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCiB9KTsKICRub2RlX3ByaW1hcnkt PmR1bXBfaW5mbzsKICRub2RlX3ByaW1hcnktPnN0YXJ0OwpAQCAtNzQ4LDcgKzc0OSw3IEBAIGNo ZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLAogJGxvZ3N0YXJ0ID0gLXMgJG5vZGVf c3RhbmRieS0+bG9nZmlsZTsKIAogcmVhY3RpdmVfc2xvdHNfY2hhbmdlX2hmc19hbmRfd2FpdF9m b3JfeG1pbnMoJ3NoYXJlZF9yb3dfcmVtb3ZhbF8nLAotCSdub19jb25mbGljdF8nLCAwLCAxKTsK Kwknbm9fY29uZmxpY3RfJywgMSwgMCk7CiAKICMgVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBj b25mbGljdAogd2FpdF91bnRpbF92YWN1dW1fY2FuX3JlbW92ZSgKLS0gCjIuNDMuMAoK --000000000000cab3d20646044db9 Content-Type: text/x-patch; charset="UTF-8"; name="v26-0015-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v26-0015-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj7o1ijm14 RnJvbSA4NjE4NzY2OWI0YzI1OTBlNTBhYzVmZTYxMTFjYjE1MzFhOWJjZWVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjYgMTUvMTVdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog 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== --000000000000cab3d20646044db9--