From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-40134.protonmail.ch (mail-40134.protonmail.ch [185.70.40.134]) by sourceware.org (Postfix) with ESMTPS id C5A0C3858C54 for ; Wed, 6 Dec 2023 07:33:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C5A0C3858C54 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=protonmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=protonmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C5A0C3858C54 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=185.70.40.134 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701848015; cv=none; b=dfiCtI8WDrTeqXwCuntXbpXLhK1KVPbUDdAGe3xvRJBUtlmXKpBKpf5hZkTEqUo7O5BsmXBoduOz5wUJoZu3Eyr3uEcGNBa4VLvGBRYVcBsDSNOuvb70rKLTAdjrnmU0rc3kHTgXYQ5pB1dKJiA4i3h/byN65fRez72INfyEoMI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701848015; c=relaxed/simple; bh=eUwXY3JyFVtgiscWMSfQF6DJurqHN0BTt9uD8Kw84i8=; h=DKIM-Signature:Date:To:From:Subject:Message-ID:MIME-Version; b=sZuIaWMa7rqotB8/oNOCEVoQ5SBQRpw3CG9up0KUGbKX2+8FmzPcRcnPCwrmR48+u+wm+XnKRAGK/pLq/StX69fevSnJYEVuRZVPAXnsoZzqcidWG4wAkc+/r/bZNkozUo9HYIAeXJ2lB3iqCHr8KZlmDdkl2663gLf48YhKXP0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1701848005; x=1702107205; bh=eUwXY3JyFVtgiscWMSfQF6DJurqHN0BTt9uD8Kw84i8=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=rvci5Ft8r83S9EYeqyNCAGQH7b4FBWWZrck+dOuZ2Z2dLEsz1o4J84HXhxV8dyAFp 7nu66yOhHAx5Aim5lg5F32oXVbyHXtfR2KGHDQwD7Igs1NQ/xiAAUC/2/5FYbUcwis WFTgeaHCmijcmgYPbJYxQwQEDxxU4DgIqyvQ6aYflpeSmMbniXU6R82EVYpnEaCNtw gJApK5ixc22nefKVH6TyYa6IlGQW/ryFPT0exdt/CbbKIX53pWVOtgTEyWZ8oT55QR wAFbk0o1OCNZDN0tCHj2NPEuwlwtdeWDtU+g63VsRwBMfIabipk6sdqb8MAqJ5GUgg wkXEmElgxXW1w== Date: Wed, 06 Dec 2023 07:33:21 +0000 To: waffl3x From: waffl3x Cc: Jason Merrill , "gcc-patches@gcc.gnu.org" Subject: Re: [PATCH v7 1/1] c++: Initial support for P0847R7 (Deducing This) [PR102609] Message-ID: In-Reply-To: <61NBWPmN34lD25i-dND5emZReJ7UbgkAcSiy1eYvjwWO9ALSTArJ4NWvOqN5UDOvbmr_dTNdRFNBCkpuu5eL41dHdZfNcqH4UZru7JK2k50=@protonmail.com> References: =?us-ascii?Q?___<=5Fe1O52EjoN=5FBFiH31iHE-0eYegNJhoOdDN2O0mduqtMmt7qTGpRWgduxNppnO1si01rORJ470oWcoM-=5Flk1ICFo9lhe=5FylBKQsJ791qMm=5Fk=3D@protonmail.com>_<1b3b0259-5ce4-4193-a36d-60f09e1c7c92@redhat.com>__<575c0bbe-a3d6-4a54-b299-edff64df84b1@redhat.com>__<59LofhYhxl7MLEuElXwZcESRB6MpjdG-iq-89B63siDRo5k0j-y6z-PVa6Y3iE1xE5LkJwpwTFi82bd0RZjB1yZbSJptFdPTBWfvOGj1W78=3D@protonmail.com>_<61NBWPmN34lD25i-dND5emZReJ7UbgkAcSiy1eYvjwW?= =?us-ascii?Q?O9ALSTArJ4NWvOqN5UDOvbmr=5FdTNdRFNBCkpuu5eL41dHdZfNcqH4UZru7JK2k50=3D@protonmail.com>?= Feedback-ID: 14591686:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_AN3cHr09pOt6pPRw4y5kmme6AE3Lyeb2s8vyhTOm70" X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --b1_AN3cHr09pOt6pPRw4y5kmme6AE3Lyeb2s8vyhTOm70 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Here is the next version, it feels very close to finished. As before, I haven't ran a bootstrap or the full testsuite yet but I did run the explicit-obj tests which completed as expected. There's a few test cases that still need to be written but more tests can always be added. The behavior added by CWG2789 works in at least one case, but I have not added tests for it yet. The test cases for dependent lambda expressions need to be fleshed out more, but a few temporary ones are included to demonstrate that they do work and that the crash is fixed. Explicit object conversion functions work, but I need to add fleshed out tests for them, explicit-obj-basic5.C has that test. I'll start the tests now and report back if anything fails, I'm confident everything will be fine though. Alex --b1_AN3cHr09pOt6pPRw4y5kmme6AE3Lyeb2s8vyhTOm70 Content-Type: text/x-patch; name=0001-P0847R7-Deducing-This-PR102609.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-P0847R7-Deducing-This-PR102609.patch RnJvbSA5MzdlMTJjNTcxNDViZmQ4NzhhMGJjNGNkOTczNWMyZDNjNGZjZjIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXYWZmbDN4IDx3YWZmbDN4QHByb3Rvbm1haWwuY29tPgpEYXRl OiBUdWUsIDUgRGVjIDIwMjMgMjM6MTY6MDEgLTA3MDAKU3ViamVjdDogW1BBVENIXSBQMDg0N1I3 IChEZWR1Y2luZyBUaGlzKSBbUFIxMDI2MDldIEFub3RoZXIgcXVpY2sgYW5kIGRpcnR5CiBwYXRj aCBmb3IgcmV2aWV3LCBob3BlZnVsbHkgdGhlIGxhc3QuIGdjYy9jcC9DaGFuZ2VMb2c6CgoJKiBj YWxsLmNjIChidWlsZF90aGlzX2NvbnZlcnNpb24pOgoJKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUp OgoJKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGVfcmVhbCk6CgkoYWRkX2NhbmRpZGF0ZXMpOgoJKGJ1 aWxkX292ZXJfY2FsbCk6CgkoY2FuZF9wYXJtc19tYXRjaCk6CgkqIGNsYXNzLmNjIChhZGRfbWV0 aG9kKToKCShyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6CgkqIGNwLXRy ZWUuaCAoc3RydWN0IGxhbmdfZGVjbF9mbik6CgkoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9Q KToKCShERUNMX0ZVTkNUSU9OX1hPQkpfRkxBRyk6CgkoREVDTF9YT0JKX01FTUJFUl9GVU5DVElP Tl9QKToKCShERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05fUCk6CgkoREVDTF9GVU5DVElPTl9N RU1CRVJfUCk6CgkoZW51bSBhdXRvX2RlZHVjdGlvbl9jb250ZXh0KToKCShURkZfWE9CSl9GVU5D KToKCShlbnVtIGNwX2RlY2xfc3BlYyk6CgkqIGRlY2wuY2MgKGdyb2tmbmRlY2wpOgoJKGdyb2tk ZWNsYXJhdG9yKToKCShncm9rX3NwZWNpYWxfbWVtYmVyX3Byb3BlcnRpZXMpOgoJKGdyb2tfb3Bf cHJvcGVydGllcyk6Cgkoc3RhcnRfcHJlcGFyc2VkX2Z1bmN0aW9uKToKCSogZXJyb3IuY2MgKGR1 bXBfYWdncl90eXBlKToKCShkdW1wX2xhbWJkYV9mdW5jdGlvbik6CgkoZHVtcF9mdW5jdGlvbl9k ZWNsKToKCShkdW1wX3BhcmFtZXRlcnMpOgoJKGZ1bmN0aW9uX2NhdGVnb3J5KToKCSogbGFtYmRh LmNjIChidWlsZF9jYXB0dXJlX3Byb3h5KToKCShsYW1iZGFfZXhwcl90aGlzX2NhcHR1cmUpOgoJ KG1heWJlX2dlbmVyaWNfdGhpc19jYXB0dXJlKToKCSogbWFuZ2xlLmNjICh3cml0ZV9uZXN0ZWRf bmFtZSk6CgkqIG1ldGhvZC5jYyAoc2tpcF9hcnRpZmljaWFsX3Bhcm1zX2Zvcik6CgkqIG1vZHVs ZS5jYyAodHJlZXNfb3V0OjpsYW5nX2RlY2xfYm9vbHMpOgoJKHRyZWVzX2luOjpsYW5nX2RlY2xf Ym9vbHMpOgoJKiBwYXJzZXIuY2MgKGNwX3BhcnNlcl9sYW1iZGFfZGVjbGFyYXRvcl9vcHQpOgoJ KGNwX3BhcnNlcl9kZWNsX3NwZWNpZmllcl9zZXEpOgoJKGNwX3BhcnNlcl9wYXJhbWV0ZXJfZGVj bGFyYXRpb24pOgoJKHNldF9hbmRfY2hlY2tfZGVjbF9zcGVjX2xvYyk6CgkqIHB0LmNjICh0c3Vi c3RfZnVuY3Rpb25fZGVjbCk6CgkodHN1YnN0X2xhbWJkYV9leHByKToKCShtb3JlX3NwZWNpYWxp emVkX2ZuKToKCSogc2VhcmNoLmNjIChwcm90ZWN0ZWRfYWNjZXNzaWJsZV9wKToKCShsb29rX2Zv cl9vdmVycmlkZXNfaGVyZSk6CgkobG9va19mb3Jfb3ZlcnJpZGVzX3IpOgoJKiBzZW1hbnRpY3Mu Y2MgKGZpbmlzaF90aGlzX2V4cHIpOgoJKGNhcHR1cmVfZGVjbHR5cGUpOgoJKiB0cmVlLmNjIChi dWlsZF9taW5fbm9uX2RlcF9vcF9vdmVybG9hZCk6CgkqIHR5cGVjay5jYyAoY3h4X2FsaWduYXNf ZXhwcik6CgkoaW52YWxpZF9ub25zdGF0aWNfbWVtZm5fcCk6CgkoY3BfYnVpbGRfYWRkcl9leHBy XzEpOgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWJhc2ljMS5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNp YzIuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMzLkM6IE5l dyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljNC5DOiBOZXcgdGVzdC4K CSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzUuQzogTmV3IHRlc3QuCgkqIGcrKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWUxLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMi5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1ieS12YWx1ZTMuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotYnktdmFsdWU0LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWNvbnN0cmFpbnRzLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4 eC1kaWFsZWN0LUEuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4 LWRpYWxlY3QtQi5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgt ZGlhbGVjdC1DLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1k aWFsZWN0LUQuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRp YWxlY3QtRS5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9z dGljczEuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3Rp Y3MyLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNz NC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczUu QzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M2LkM6 IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNy5DOiBO ZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGEtdGVtcDEuQzogTmV3 IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhLXRlbXAyLkM6IE5ldyB0 ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYTEuQzogTmV3IHRlc3QuCgkq IGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhMi5DOiBOZXcgdGVzdC4KCSogZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGEzLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWxhbWJkYVgwLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWxhbWJkYVgyMC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1sYW1iZGFYMjEuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFt YmRhWDI0LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVgy NS5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYNC5DOiBO ZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYNDAuQzogTmV3IHRl c3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDUuQzogTmV3IHRlc3QuCgkq IGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDYuQzogTmV3IHRlc3QuCgkqIGcrKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDYwLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWxhbWJkYVg3LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhw bGljaXQtb2JqLW9wcy1tZW0tYXJyb3cuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotb3BzLW1lbS1hc3NpZ25tZW50LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLW9wcy1tZW0tY2FsbC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1vcHMtbWVtLXN1YnNjcmlwdC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS1kZXAuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAy My9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0tbm9uLWRlcC5DOiBOZXcgdGVzdC4KCSogZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS5oOiBOZXcgdGVzdC4KCSogZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1vcHMtcmVxdWlyZXMtbWVtLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1aXJlcy1ub24tbWVtLkM6IE5ldyB0ZXN0LgoJKiBn KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXJlZGVjbC1jb25zdHJhaW50cy5DOiBOZXcgdGVzdC4K CSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1yZWRlY2wuQzogTmV3IHRlc3QuCgkqIGcrKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotcmVkZWNsMi5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1yZWRlY2wzLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLXZpcnR1YWwuQzogTmV3IHRlc3QuCgpTaWduZWQtb2ZmLWJ5OiBXYWZmbDN4IDx3YWZm bDN4QHByb3Rvbm1haWwuY29tPgotLS0KIGdjYy9jcC9jYWxsLmNjICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDE4NyArKysrLS0tCiBnY2MvY3AvY2xhc3MuY2MgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAyMDIgKysrKysrLQogZ2NjL2NwL2NwLXRyZWUuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDM5ICstCiBnY2MvY3AvZGVjbC5jYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxODQgKysrKysrLQogZ2NjL2NwL2Vycm9yLmNjICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI0ICstCiBnY2MvY3AvbGFtYmRhLmNjICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIGdjYy9jcC9tYW5nbGUuY2MgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogZ2NjL2NwL21ldGhvZC5jYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBnY2MvY3AvbW9kdWxlLmNjICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogZ2NjL2NwL3BhcnNlci5jYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMTQ3ICsrKysrLQogZ2NjL2NwL3B0LmNjICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDc4ICsrLQogZ2NjL2NwL3NlYXJjaC5jYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICstCiBnY2MvY3Avc2VtYW50aWNzLmNjICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMzUgKy0KIGdjYy9jcC90cmVlLmNjICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAxMCArLQogZ2NjL2NwL3R5cGVjay5jYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDM2ICstCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1iYXNpYzEuQyAgICAgICAgfCAxMTQgKysrKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotYmFzaWMyLkMgICAgICAgIHwgIDI4ICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWJhc2ljMy5DICAgICAgICB8IDQ5NiArKysrKysrKysrKysrKysrKysKIC4uLi9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWJhc2ljNC5DICAgICAgICB8IDExMyArKysrCiAuLi4vZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1iYXNpYzUuQyAgICAgICAgfCAgMzEgKysKIC4uLi9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMS5DICAgICB8ICA0OCArKwogLi4uL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotYnktdmFsdWUyLkMgICAgIHwgIDU4ICsrCiAuLi4vZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1ieS12YWx1ZTMuQyAgICAgfCAgNDEgKysKIC4uLi9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWJ5LXZhbHVlNC5DICAgICB8ICAyMCArCiAuLi4vZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1jb25zdHJhaW50cy5DICAgfCA0NzAgKysrKysrKysrKysrKysrKysKIC4uLi9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUEuQyB8ICAgNyArCiAuLi4vZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1CLkMgfCAgIDcgKwogLi4uL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQy5DIHwgICA5ICsKIC4uLi9nKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUQuQyB8ICAgOCArCiAuLi4vZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1FLkMgfCAgIDggKwogLi4uL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MxLkMgIHwgMTM5ICsrKysrCiAuLi4vZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczIuQyAgfCAgMjYgKwogLi4uL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M0LkMgIHwgIDIwICsKIC4uLi9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNS5DICB8ICAxNiArCiAuLi4vZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1kaWFnbm9zdGljczYuQyAgfCAgMjMgKwogLi4uL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotZGlhZ25vc3RpY3M3LkMgIHwgIDE3ICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWxhbWJkYS10ZW1wMS5DICB8ICA3MyArKysKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWxhbWJkYS10ZW1wMi5DICB8ICAzOCArKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotbGFtYmRhMS5DICAgICAgIHwgIDI1ICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWxhbWJkYTIuQyAgICAgICB8ICAyMyArCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1sYW1iZGEzLkMgICAgICAgfCAgNjQgKysrCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1sYW1iZGFYMC5DICAgICAgfCAgNjggKysrCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1sYW1iZGFYMjAuQyAgICAgfCAgNDYgKysKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWxhbWJkYVgyMS5DICAgICB8ICAzOSArKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot bGFtYmRhWDI0LkMgICAgIHwgIDk4ICsrKysKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWxhbWJkYVgyNS5DICAgICB8IDEwMSArKysrCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1sYW1iZGFYNC5DICAgICAgfCAgMjMgKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot bGFtYmRhWDQwLkMgICAgIHwgIDIwICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxh bWJkYVg1LkMgICAgICB8ICAyMSArCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1i ZGFYNi5DICAgICAgfCAgNDggKysKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJk YVg2MC5DICAgICB8IDI3OSArKysrKysrKysrCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1sYW1iZGFYNy5DICAgICAgfCAgODcgKysrCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1vcHMtbWVtLWFycm93LkMgfCAgMjggKwogLi4uL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbWVt LWFzc2lnbm1lbnQuQyAgIHwgIDI3ICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9w cy1tZW0tY2FsbC5DICB8ICA0MCArKwogLi4uL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbWVtLXN1 YnNjcmlwdC5DICAgIHwgIDQwICsrCiAuLi4vY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1ub24tbWVt LWRlcC5DICAgICAgfCAgNTggKysKIC4uLi9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0t bm9uLWRlcC5DICB8ICA1NyArKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5v bi1tZW0uaCAgIHwgMjEwICsrKysrKysrCiAuLi4vY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1 aXJlcy1tZW0uQyAgICAgfCAxNzEgKysrKysrCiAuLi4vY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1y ZXF1aXJlcy1ub24tbWVtLkMgfCAyMzcgKysrKysrKysrCiAuLi4vY3BwMjMvZXhwbGljaXQtb2Jq LXJlZGVjbC1jb25zdHJhaW50cy5DICAgfCAxMTUgKysrKwogLi4uL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotcmVkZWNsLkMgICAgICAgIHwgMjQ2ICsrKysrKysrKwogLi4uL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotcmVkZWNsMi5DICAgICAgIHwgMTYxICsrKysrKwogLi4uL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotcmVkZWNsMy5DICAgICAgIHwgMjYzICsrKysrKysrKysKIC4uLi9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXZpcnR1YWwuQyAgICAgICB8ICA5NSArKysrCiA2NiBm aWxlcyBjaGFuZ2VkLCA1MzE0IGluc2VydGlvbnMoKyksIDE2MSBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFz aWMxLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotYmFzaWMyLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMzLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWM0LkMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWM1LkMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot YnktdmFsdWUxLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotYnktdmFsdWUyLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWUzLkMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWU0LkMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotY29uc3RyYWludHMuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1BLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQi5DCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWN4eC1kaWFsZWN0LUMuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1ELkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRS5DCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWRpYWdub3N0aWNzMS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzMi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNC5DCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRp YWdub3N0aWNzNS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNy5DCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJk YS10ZW1wMS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWxhbWJkYS10ZW1wMi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYTEuQwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGEyLkMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot bGFtYmRhMy5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWxhbWJkYVgwLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDIwLkMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDIxLkMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot bGFtYmRhWDI0LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotbGFtYmRhWDI1LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDQuQwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYNDAuQwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1sYW1iZGFYNS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWxhbWJkYVg2LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDYwLkMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDcuQwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1vcHMtbWVtLWFycm93LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1hc3NpZ25tZW50LkMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1jYWxs LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotb3BzLW1lbS1zdWJzY3JpcHQuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS1kZXAuQwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9u LW1lbS1ub24tZGVwLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtcmVxdWlyZXMtbWVtLkMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot b3BzLXJlcXVpcmVzLW5vbi1tZW0uQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1yZWRlY2wtY29uc3RyYWludHMuQwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1yZWRlY2wu QwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1yZWRlY2wyLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotcmVkZWNsMy5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXZpcnR1YWwuQwoKZGlmZiAtLWdpdCBhL2dj Yy9jcC9jYWxsLmNjIGIvZ2NjL2NwL2NhbGwuY2MKaW5kZXggYWUwZGVjZDg3ZjEuLmZhNzcyMzQ0 ZWE5IDEwMDY0NAotLS0gYS9nY2MvY3AvY2FsbC5jYworKysgYi9nY2MvY3AvY2FsbC5jYwpAQCAt MjI3Nyw3ICsyMjc3LDcgQEAgYnVpbGRfdGhpc19jb252ZXJzaW9uICh0cmVlIGZuLCB0cmVlIGN0 eXBlLAogCQkgICAgICAgdHJlZSYgcGFybXR5cGUsIHRyZWUmIGFyZ3R5cGUsIHRyZWUmIGFyZywK IAkJICAgICAgIGludCBmbGFncywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiB7Ci0gIGdjY19h c3NlcnQgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikKKyAgZ2NjX2Fzc2Vy dCAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChmbikKIAkgICAgICAmJiAhREVDTF9DT05T VFJVQ1RPUl9QIChmbikpOwogCiAgIC8qIFRoZSB0eXBlIG9mIHRoZSBpbXBsaWNpdCBvYmplY3Qg cGFyYW1ldGVyICgndGhpcycpIGZvcgpAQCAtMjQ5MCw3ICsyNDkwLDcgQEAgYWRkX2Z1bmN0aW9u X2NhbmRpZGF0ZSAoc3RydWN0IHpfY2FuZGlkYXRlICoqY2FuZGlkYXRlcywKIAl7CiAJICB0cmVl IHBhcm10eXBlID0gVFJFRV9WQUxVRSAocGFybW5vZGUpOwogCSAgaWYgKGkgPT0gMAotCSAgICAg ICYmIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikKKwkgICAgICAmJiBERUNM X0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQogCSAgICAgICYmICFERUNMX0NPTlNUUlVDVE9S X1AgKGZuKSkKIAkgICAgdCA9IGJ1aWxkX3RoaXNfY29udmVyc2lvbiAoZm4sIGN0eXBlLCBwYXJt dHlwZSwgYXJndHlwZSwgYXJnLAogCQkJCSAgICAgICBmbGFncywgY29tcGxhaW4pOwpAQCAtMzQ0 Nyw3ICszNDQ3LDcgQEAgYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsIChzdHJ1Y3Qgel9jYW5k aWRhdGUgKipjYW5kaWRhdGVzLCB0cmVlIHRtcGwsCiAKICAgLyogV2UgZG9uJ3QgZG8gZGVkdWN0 aW9uIG9uIHRoZSBpbi1jaGFyZ2UgcGFyYW1ldGVyLCB0aGUgVlRUCiAgICAgIHBhcmFtZXRlciBv ciAndGhpcycuICAqLwotICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKHRt cGwpKQorICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QICh0bXBsKSkKICAgICB7CiAg ICAgICBpZiAoZmlyc3RfYXJnX3dpdGhvdXRfaW5fY2hyZyAhPSBOVUxMX1RSRUUpCiAJZmlyc3Rf YXJnX3dpdGhvdXRfaW5fY2hyZyA9IE5VTExfVFJFRTsKQEAgLTM1NTcsNyArMzU1Nyw3IEBAIGFk ZF90ZW1wbGF0ZV9jYW5kaWRhdGVfcmVhbCAoc3RydWN0IHpfY2FuZGlkYXRlICoqY2FuZGlkYXRl cywgdHJlZSB0bXBsLAogICAgICAgY29udnMgPSBhbGxvY19jb252ZXJzaW9ucyAobmFyZ3MpOwog CiAgICAgICBpZiAoc2hvcnRjdXRfYmFkX2NvbnZzCi0JICAmJiBERUNMX05PTlNUQVRJQ19NRU1C RVJfRlVOQ1RJT05fUCAodG1wbCkKKwkgICYmIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAo dG1wbCkKIAkgICYmICFERUNMX0NPTlNUUlVDVE9SX1AgKHRtcGwpKQogCXsKIAkgIC8qIENoZWNr IHRoZSAndGhpcycgY29udmVyc2lvbiBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIGRlZHVjdGlvbi4K QEAgLTY1NDQsNyArNjU0NCw3IEBAIGFkZF9jYW5kaWRhdGVzICh0cmVlIGZucywgdHJlZSBmaXJz dF9hcmcsIGNvbnN0IHZlYzx0cmVlLCB2YV9nYz4gKmFyZ3MsCiAgICAgICB0cmVlIGZuX2ZpcnN0 X2FyZyA9IE5VTExfVFJFRTsKICAgICAgIGNvbnN0IHZlYzx0cmVlLCB2YV9nYz4gKmZuX2FyZ3Mg PSBhcmdzOwogCi0gICAgICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZu KSkKKyAgICAgIGlmIChERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05fUCAoZm4pKQogCXsKIAkg IC8qIEZpZ3VyZSBvdXQgd2hlcmUgdGhlIG9iamVjdCBhcmcgY29tZXMgZnJvbS4gIElmIHRoaXMK IAkgICAgIGZ1bmN0aW9uIGlzIGEgbm9uLXN0YXRpYyBtZW1iZXIgYW5kIHdlIGRpZG4ndCBnZXQg YW4KQEAgLTY1ODYsNiArNjU4NiwxNyBAQCBhZGRfY2FuZGlkYXRlcyAodHJlZSBmbnMsIHRyZWUg Zmlyc3RfYXJnLCBjb25zdCB2ZWM8dHJlZSwgdmFfZ2M+ICphcmdzLAogCSAgICAgIC8qID8/PyBU aGlzIGtsdWRnZSBleGNsdWRlcyBpbmxpbmUgbmFtZXNwYWNlIG1lbWJlcnMgZm9yIHRoZSBICiAJ CSB0ZXN0IGluIHNwYWNlc2hpcC1lcTE1LkMsIGJ1dCBJIGRvbid0IHNlZSB3aHkgd2Ugd291bGQg d2FudAogCQkgdGhhdCBiZWhhdmlvci4gIEFza2VkIENvcmUgMjAyMi0xMS0wNC4gIERpc2FibGlu ZyBmb3Igbm93LiAgKi87CisJICAgIC8qIEZJWE1FOiBJIGJlbGlldmUgdGhpcyB3aWxsIGJlIGJ1 Z2dlZCBmb3IgeG9iaiBtZW1iZXIgZnVuY3Rpb25zLAorCSAgICAgICBsZWF2aW5nIHRoaXMgY29t bWVudCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBsb29rIGludG8gaXQKKwkgICAgICAgYXQgc29tZSBw b2ludC4KKwkgICAgICAgU2VlaW5nIHRoaXMgbWFrZXMgbWUgd2FudCBjb3JyZXNwb25kZW5jZSBj aGVja2luZyB0byBiZSB1bmlmaWVkCisJICAgICAgIGluIG9uZSBwbGFjZSB0aG91Z2gsIG5vdCBz dXJlIGlmIHRoaXMgb25lIG5lZWRzIHRvIGJlIGRpZmZlcmVudAorCSAgICAgICBmcm9tIG90aGVy IG9uZXMgdGhvdWdoLgorCSAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBoZXJlLCBi dXQgbWF5YmUgd2UgY2FuIHVzZSBpdCBpbiBhZGQKKwkgICAgICAgbWV0aG9kIGFuZCBtb3ZlIHNv bWUgb2YgdGhlIGxvZ2ljIG91dCBvZiB0aGVyZT8KKworCSAgICAgICBTaWRlIG5vdGU6IENXRzI1 ODYgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIHRoaXMgYXJlYSBpbgorCSAgICAgICBwYXJ0aWN1bGFy LCBwZXJoYXBzIHdlIHdhaXQgdG8gc2VlIGlmIGl0IGdldHMgYWNjZXB0ZWQgZmlyc3Q/ICAqLwog CSAgICBlbHNlIGlmIChmbnNfY29ycmVzcG9uZCAoZm4sICpuZSkpCiAJICAgICAgewogCQlmb3Vu ZCA9IHRydWU7CkBAIC05NzYyLDE0ICs5NzczLDkgQEAgYnVpbGRfb3Zlcl9jYWxsIChzdHJ1Y3Qg el9jYW5kaWRhdGUgKmNhbmQsIGludCBmbGFncywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAg IGNvbnN0IHZlYzx0cmVlLCB2YV9nYz4gKmFyZ3MgPSBjYW5kLT5hcmdzOwogICB0cmVlIGZpcnN0 X2FyZyA9IGNhbmQtPmZpcnN0X2FyZzsKICAgY29udmVyc2lvbiAqKmNvbnZzID0gY2FuZC0+Y29u dnM7Ci0gIGNvbnZlcnNpb24gKmNvbnY7CiAgIHRyZWUgcGFybSA9IFRZUEVfQVJHX1RZUEVTIChU UkVFX1RZUEUgKGZuKSk7CiAgIGludCBwYXJtbGVuOwogICB0cmVlIHZhbDsKLSAgaW50IGkgPSAw OwotICBpbnQgaiA9IDA7Ci0gIHVuc2lnbmVkIGludCBhcmdfaW5kZXggPSAwOwotICBpbnQgaXNf bWV0aG9kID0gMDsKICAgaW50IG5hcmdzOwogICB0cmVlICphcmdhcnJheTsKICAgYm9vbCBhbHJl YWR5X3VzZWQgPSBmYWxzZTsKQEAgLTk5NTUsNDUgKzk5NjEsNDYgQEAgYnVpbGRfb3Zlcl9jYWxs IChzdHJ1Y3Qgel9jYW5kaWRhdGUgKmNhbmQsIGludCBmbGFncywgdHN1YnN0X2ZsYWdzX3QgY29t cGxhaW4pCiAgIGlmIChpbW1lZGlhdGVfaW52b2NhdGlvbl9wIChTVFJJUF9URU1QTEFURSAoZm4p KSkKICAgICBpbl9jb25zdGV2YWxfaWZfcCA9IHRydWU7CiAKKyAgaW50IGFyZ2FycmF5X3NpemUg PSAwOworICB1bnNpZ25lZCBpbnQgYXJnX2luZGV4ID0gMDsKKyAgaW50IGNvbnZfaW5kZXggPSAw OworICBpbnQgcGFyYW1faW5kZXggPSAwOworCisgIGF1dG8gY29uc3VtZV9vYmplY3RfYXJnID0g WyZhcmdfaW5kZXgsICZmaXJzdF9hcmcsIGFyZ3NdKCkKKyAgICB7CisgICAgICBpZiAoIWZpcnN0 X2FyZykKKwlyZXR1cm4gKCphcmdzKVthcmdfaW5kZXgrK107CisgICAgICB0cmVlIG9iamVjdF9h cmcgPSBmaXJzdF9hcmc7CisgICAgICBmaXJzdF9hcmcgPSBOVUxMX1RSRUU7CisgICAgICByZXR1 cm4gb2JqZWN0X2FyZzsKKyAgICB9OworCiAgIC8qIFRoZSBpbXBsaWNpdCBwYXJhbWV0ZXJzIHRv IGEgY29uc3RydWN0b3IgYXJlIG5vdCBjb25zaWRlcmVkIGJ5IG92ZXJsb2FkCiAgICAgIHJlc29s dXRpb24sIGFuZCBtdXN0IGJlIG9mIHRoZSBwcm9wZXIgdHlwZS4gICovCiAgIGlmIChERUNMX0NP TlNUUlVDVE9SX1AgKGZuKSkKICAgICB7Ci0gICAgICB0cmVlIG9iamVjdF9hcmc7Ci0gICAgICBp ZiAoZmlyc3RfYXJnICE9IE5VTExfVFJFRSkKLQl7Ci0JICBvYmplY3RfYXJnID0gZmlyc3RfYXJn OwotCSAgZmlyc3RfYXJnID0gTlVMTF9UUkVFOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICBvYmpl Y3RfYXJnID0gKCphcmdzKVthcmdfaW5kZXhdOwotCSAgKythcmdfaW5kZXg7Ci0JfQotICAgICAg YXJnYXJyYXlbaisrXSA9IGJ1aWxkX3RoaXMgKG9iamVjdF9hcmcpOworICAgICAgdHJlZSBvYmpl Y3RfYXJnID0gY29uc3VtZV9vYmplY3RfYXJnICgpOworICAgICAgYXJnYXJyYXlbYXJnYXJyYXlf c2l6ZSsrXSA9IGJ1aWxkX3RoaXMgKG9iamVjdF9hcmcpOwogICAgICAgcGFybSA9IFRSRUVfQ0hB SU4gKHBhcm0pOwogICAgICAgLyogV2Ugc2hvdWxkIG5ldmVyIHRyeSB0byBjYWxsIHRoZSBhYnN0 cmFjdCBjb25zdHJ1Y3Rvci4gICovCiAgICAgICBnY2NfYXNzZXJ0ICghREVDTF9IQVNfSU5fQ0hB UkdFX1BBUk1fUCAoZm4pKTsKIAogICAgICAgaWYgKERFQ0xfSEFTX1ZUVF9QQVJNX1AgKGZuKSkK IAl7Ci0JICBhcmdhcnJheVtqKytdID0gKCphcmdzKVthcmdfaW5kZXhdOworCSAgYXJnYXJyYXlb YXJnYXJyYXlfc2l6ZSsrXSA9ICgqYXJncylbYXJnX2luZGV4XTsKIAkgICsrYXJnX2luZGV4Owog CSAgcGFybSA9IFRSRUVfQ0hBSU4gKHBhcm0pOwogCX0KICAgICB9CiAgIC8qIEJ5cGFzcyBhY2Nl c3MgY29udHJvbCBmb3IgJ3RoaXMnIHBhcmFtZXRlci4gICovCi0gIGVsc2UgaWYgKFRSRUVfQ09E RSAoVFJFRV9UWVBFIChmbikpID09IE1FVEhPRF9UWVBFKQorICBlbHNlIGlmIChERUNMX0lPQkpf TUVNQkVSX0ZVTkNUSU9OX1AgKGZuKSkKICAgICB7Ci0gICAgICB0cmVlIGFyZyA9IGJ1aWxkX3Ro aXMgKGZpcnN0X2FyZyAhPSBOVUxMX1RSRUUKLQkJCSAgICAgPyBmaXJzdF9hcmcKLQkJCSAgICAg OiAoKmFyZ3MpW2FyZ19pbmRleF0pOworICAgICAgdHJlZSBhcmcgPSBidWlsZF90aGlzIChjb25z dW1lX29iamVjdF9hcmcgKCkpOwogICAgICAgdHJlZSBhcmd0eXBlID0gVFJFRV9UWVBFIChhcmcp OwogCiAgICAgICBpZiAoYXJnID09IGVycm9yX21hcmtfbm9kZSkKIAlyZXR1cm4gZXJyb3JfbWFy a19ub2RlOwotCi0gICAgICBpZiAoY29udnNbaV0tPmJhZF9wKQorICAgICAgaWYgKGNvbnZzW2Nv bnZfaW5kZXgrK10tPmJhZF9wKQogCXsKIAkgIGlmIChjb21wbGFpbiAmIHRmX2Vycm9yKQogCSAg ICB7CkBAIC0xMDA2OCwyNSArMTAwNzUsNTcgQEAgYnVpbGRfb3Zlcl9jYWxsIChzdHJ1Y3Qgel9j YW5kaWRhdGUgKmNhbmQsIGludCBmbGFncywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAgICAg ICB0cmVlIGNvbnZlcnRlZF9hcmcgPSBidWlsZF9iYXNlX3BhdGggKFBMVVNfRVhQUiwgYXJnLAog CQkJCQkgICAgYmFzZV9iaW5mbywgMSwgY29tcGxhaW4pOwogCi0gICAgICBhcmdhcnJheVtqKytd ID0gY29udmVydGVkX2FyZzsKKyAgICAgIGFyZ2FycmF5W2FyZ2FycmF5X3NpemUrK10gPSBjb252 ZXJ0ZWRfYXJnOwogICAgICAgcGFybSA9IFRSRUVfQ0hBSU4gKHBhcm0pOwotICAgICAgaWYgKGZp cnN0X2FyZyAhPSBOVUxMX1RSRUUpCi0JZmlyc3RfYXJnID0gTlVMTF9UUkVFOworICAgIH0KKwor ICBhdXRvIGhhbmRsZV9hcmcgPSBbZm4sIGZsYWdzLCBjb21wbGFpbl0odHJlZSB0eXBlLAorICAJ CQkJCSAgdHJlZSBhcmcsCisJCQkJCSAgaW50IGNvbnN0IHBhcmFtX2luZGV4LAorCQkJCQkgIGNv bnZlcnNpb24gKmNvbnYsCisJCQkJCSAgYm9vbCBjb25zdCBjb252ZXJzaW9uX3dhcm5pbmcpCisg ICAgeworICAgICAgLyogU2V0IHVzZXJfY29udl9wIG9uIHRoZSBhcmd1bWVudCBjb252ZXJzaW9u cywgc28gcnZhbHVlL2Jhc2UgaGFuZGxpbmcKKwkga25vd3Mgbm90IHRvIGFsbG93IGFueSBtb3Jl IFVEQ3MuICBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB3ZQorCSBwcm9jZXNzIGNhbmQtPndh cm5pbmdzLiAgKi8KKyAgICAgIGlmIChmbGFncyAmIExPT0tVUF9OT19DT05WRVJTSU9OKQorCWNv bnYtPnVzZXJfY29udl9wID0gdHJ1ZTsKKworICAgICAgdHN1YnN0X2ZsYWdzX3QgY29uc3QgYXJn X2NvbXBsYWluCisJPSBjb252ZXJzaW9uX3dhcm5pbmcgPyBjb21wbGFpbiA6IGNvbXBsYWluICYg fnRmX3dhcm5pbmc7CisKKyAgICAgIGlmIChhcmdfY29tcGxhaW4gJiB0Zl93YXJuaW5nKQorCW1h eWJlX3dhcm5fcGVzc2ltaXppbmdfbW92ZSAoYXJnLCB0eXBlLCAvKnJldHVybl9wPSovZmFsc2Up OworCisgICAgICB0cmVlIHZhbCA9IGNvbnZlcnRfbGlrZV93aXRoX2NvbnRleHQgKGNvbnYsIGFy ZywgZm4sCisgICAgICAJCQkJCSAgICBwYXJhbV9pbmRleCwgYXJnX2NvbXBsYWluKTsKKyAgICAg IHZhbCA9IGNvbnZlcnRfZm9yX2FyZ19wYXNzaW5nICh0eXBlLCB2YWwsIGFyZ19jb21wbGFpbik7 CisgICAgICByZXR1cm4gdmFsOworICAgIH07CisKKyAgaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVO Q1RJT05fUCAoZm4pKQorICAgIHsKKyAgICAgIGdjY19hc3NlcnQgKGNhbmQtPm51bV9jb252cyA+ IDApOworICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbnZlcnNpb25fd2FybmluZyA9IHRy dWU7CisgICAgICB0cmVlIG9iamVjdF9hcmcgPSBjb25zdW1lX29iamVjdF9hcmcgKCk7CisgICAg ICB2YWwgPSBoYW5kbGVfYXJnIChUUkVFX1ZBTFVFIChwYXJtKSwKKwkJCW9iamVjdF9hcmcsCisJ CQlwYXJhbV9pbmRleCsrLAorCQkJY29udnNbY29udl9pbmRleCsrXSwKKwkJCWNvbnZlcnNpb25f d2FybmluZyk7CisKKyAgICAgIGlmICh2YWwgPT0gZXJyb3JfbWFya19ub2RlKQorCXJldHVybiBl cnJvcl9tYXJrX25vZGU7CiAgICAgICBlbHNlCi0JKythcmdfaW5kZXg7Ci0gICAgICArK2k7Ci0g ICAgICBpc19tZXRob2QgPSAxOworCWFyZ2FycmF5W2FyZ2FycmF5X3NpemUrK10gPSB2YWw7Cisg ICAgICBwYXJtID0gVFJFRV9DSEFJTiAocGFybSk7CiAgICAgfQogCiAgIGdjY19hc3NlcnQgKGZp cnN0X2FyZyA9PSBOVUxMX1RSRUUpOwogICBmb3IgKDsgYXJnX2luZGV4IDwgdmVjX3NhZmVfbGVu Z3RoIChhcmdzKSAmJiBwYXJtOwotICAgICAgIHBhcm0gPSBUUkVFX0NIQUlOIChwYXJtKSwgKyth cmdfaW5kZXgsICsraSkKKyAgICAgICBwYXJtID0gVFJFRV9DSEFJTiAocGFybSksICsrYXJnX2lu ZGV4LCArK3BhcmFtX2luZGV4LCArK2NvbnZfaW5kZXgpCiAgICAgewotICAgICAgdHJlZSB0eXBl ID0gVFJFRV9WQUxVRSAocGFybSk7Ci0gICAgICB0cmVlIGFyZyA9ICgqYXJncylbYXJnX2luZGV4 XTsKLSAgICAgIGJvb2wgY29udmVyc2lvbl93YXJuaW5nID0gdHJ1ZTsKLQotICAgICAgY29udiA9 IGNvbnZzW2ldOworICAgICAgdHJlZSBjdXJyZW50X2FyZyA9ICgqYXJncylbYXJnX2luZGV4XTsK IAogICAgICAgLyogSWYgdGhlIGFyZ3VtZW50IGlzIE5VTEwgYW5kIHVzZWQgdG8gKGltcGxpY2l0 bHkpIGluc3RhbnRpYXRlIGEKICAgICAgICAgIHRlbXBsYXRlIGZ1bmN0aW9uIChhbmQgYmluZCBv bmUgb2YgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cyB0bwpAQCAtMTAxMDgsNDcgKzEwMTQ3LDM1IEBA IGJ1aWxkX292ZXJfY2FsbCAoc3RydWN0IHpfY2FuZGlkYXRlICpjYW5kLCBpbnQgZmxhZ3MsIHRz dWJzdF9mbGFnc190IGNvbXBsYWluKQogICAgICAgICAgICAgIGZ1bmMoTlVMTCk7CiAgICAgICAg ICAgIH0KICAgICAgICovCi0gICAgICBpZiAobnVsbF9ub2RlX3AgKGFyZykKLSAgICAgICAgICAm JiBERUNMX1RFTVBMQVRFX0lORk8gKGZuKQotICAgICAgICAgICYmIGNhbmQtPnRlbXBsYXRlX2Rl Y2wKLQkgICYmICFjYW5kLT5leHBsaWNpdF90YXJncykKLSAgICAgICAgY29udmVyc2lvbl93YXJu aW5nID0gZmFsc2U7CisgICAgICBib29sIGNvbnN0IGNvbnZlcnNpb25fd2FybmluZyA9ICEobnVs bF9ub2RlX3AgKGN1cnJlbnRfYXJnKQorCQkJCQkmJiBERUNMX1RFTVBMQVRFX0lORk8gKGZuKQor CQkJCQkmJiBjYW5kLT50ZW1wbGF0ZV9kZWNsCisJCQkJCSYmICFjYW5kLT5leHBsaWNpdF90YXJn cyk7CiAKLSAgICAgIC8qIFNldCB1c2VyX2NvbnZfcCBvbiB0aGUgYXJndW1lbnQgY29udmVyc2lv bnMsIHNvIHJ2YWx1ZS9iYXNlIGhhbmRsaW5nCi0JIGtub3dzIG5vdCB0byBhbGxvdyBhbnkgbW9y ZSBVRENzLiAgVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UKLQkgcHJvY2VzcyBjYW5kLT53 YXJuaW5ncy4gICovCi0gICAgICBpZiAoZmxhZ3MgJiBMT09LVVBfTk9fQ09OVkVSU0lPTikKLQlj b252LT51c2VyX2NvbnZfcCA9IHRydWU7Ci0KLSAgICAgIHRzdWJzdF9mbGFnc190IGFyZ19jb21w bGFpbiA9IGNvbXBsYWluOwotICAgICAgaWYgKCFjb252ZXJzaW9uX3dhcm5pbmcpCi0JYXJnX2Nv bXBsYWluICY9IH50Zl93YXJuaW5nOwotCi0gICAgICBpZiAoYXJnX2NvbXBsYWluICYgdGZfd2Fy bmluZykKLQltYXliZV93YXJuX3Blc3NpbWl6aW5nX21vdmUgKGFyZywgdHlwZSwgLypyZXR1cm5f cCovZmFsc2UpOwotCi0gICAgICB2YWwgPSBjb252ZXJ0X2xpa2Vfd2l0aF9jb250ZXh0IChjb252 LCBhcmcsIGZuLCBpIC0gaXNfbWV0aG9kLAotCQkJCSAgICAgICBhcmdfY29tcGxhaW4pOwotICAg ICAgdmFsID0gY29udmVydF9mb3JfYXJnX3Bhc3NpbmcgKHR5cGUsIHZhbCwgYXJnX2NvbXBsYWlu KTsKKyAgICAgIHZhbCA9IGhhbmRsZV9hcmcgKFRSRUVfVkFMVUUgKHBhcm0pLAorCQkJY3VycmVu dF9hcmcsCisJCQlwYXJhbV9pbmRleCwKKwkJCWNvbnZzW2NvbnZfaW5kZXhdLAorCQkJY29udmVy c2lvbl93YXJuaW5nKTsKIAogICAgICAgaWYgKHZhbCA9PSBlcnJvcl9tYXJrX25vZGUpCi0gICAg ICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisJcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKICAg ICAgIGVsc2UKLSAgICAgICAgYXJnYXJyYXlbaisrXSA9IHZhbDsKKwlhcmdhcnJheVthcmdhcnJh eV9zaXplKytdID0gdmFsOwogICAgIH0KIAogICAvKiBEZWZhdWx0IGFyZ3VtZW50cyAqLwotICBm b3IgKDsgcGFybSAmJiBwYXJtICE9IHZvaWRfbGlzdF9ub2RlOyBwYXJtID0gVFJFRV9DSEFJTiAo cGFybSksIGkrKykKKyAgZm9yICg7IHBhcm0gJiYgcGFybSAhPSB2b2lkX2xpc3Rfbm9kZTsgcGFy bSA9IFRSRUVfQ0hBSU4gKHBhcm0pLCBwYXJhbV9pbmRleCsrKQogICAgIHsKICAgICAgIGlmIChU UkVFX1ZBTFVFIChwYXJtKSA9PSBlcnJvcl9tYXJrX25vZGUpCiAJcmV0dXJuIGVycm9yX21hcmtf bm9kZTsKICAgICAgIHZhbCA9IGNvbnZlcnRfZGVmYXVsdF9hcmcgKFRSRUVfVkFMVUUgKHBhcm0p LAogCQkJCSBUUkVFX1BVUlBPU0UgKHBhcm0pLAotCQkJCSBmbiwgaSAtIGlzX21ldGhvZCwKKwkJ CQkgZm4sIHBhcmFtX2luZGV4LAogCQkJCSBjb21wbGFpbik7CiAgICAgICBpZiAodmFsID09IGVy cm9yX21hcmtfbm9kZSkKLSAgICAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKLSAgICAgIGFy Z2FycmF5W2orK10gPSB2YWw7CisJcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKKyAgICAgIGFyZ2Fy cmF5W2FyZ2FycmF5X3NpemUrK10gPSB2YWw7CiAgICAgfQogCiAgIC8qIEVsbGlwc2lzICovCkBA IC0xMDE4NSwxMSArMTAyMTIsMTEgQEAgYnVpbGRfb3Zlcl9jYWxsIChzdHJ1Y3Qgel9jYW5kaWRh dGUgKmNhbmQsIGludCBmbGFncywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAJYSA9IGNvbnZl cnRfYXJnX3RvX2VsbGlwc2lzIChhLCBjb21wbGFpbik7CiAgICAgICBpZiAoYSA9PSBlcnJvcl9t YXJrX25vZGUpCiAJcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKLSAgICAgIGFyZ2FycmF5W2orK10g PSBhOworICAgICAgYXJnYXJyYXlbYXJnYXJyYXlfc2l6ZSsrXSA9IGE7CiAgICAgfQogCi0gIGdj Y19hc3NlcnQgKGogPD0gbmFyZ3MpOwotICBuYXJncyA9IGo7CisgIGdjY19hc3NlcnQgKGFyZ2Fy cmF5X3NpemUgPD0gbmFyZ3MpOworICBuYXJncyA9IGFyZ2FycmF5X3NpemU7CiAgIGljaXAucmVz ZXQgKCk7CiAKICAgLyogQXZvaWQgcGVyZm9ybWluZyBhcmd1bWVudCB0cmFuc2Zvcm1hdGlvbiBp ZiB3YXJuaW5ncyBhcmUgZGlzYWJsZWQuCkBAIC0xMDIwNSw3ICsxMDIzMiw3IEBAIGJ1aWxkX292 ZXJfY2FsbCAoc3RydWN0IHpfY2FuZGlkYXRlICpjYW5kLCBpbnQgZmxhZ3MsIHRzdWJzdF9mbGFn c190IGNvbXBsYWluKQogICAgIHsKICAgICAgIHRyZWUgKmZhcmdzID0gKCFuYXJncyA/IGFyZ2Fy cmF5CiAJCQkgICAgOiAodHJlZSAqKSBhbGxvY2EgKG5hcmdzICogc2l6ZW9mICh0cmVlKSkpOwot ICAgICAgZm9yIChqID0gMDsgaiA8IG5hcmdzOyBqKyspCisgICAgICBmb3IgKGludCBqID0gMDsg aiA8IG5hcmdzOyBqKyspCiAJewogCSAgLyogRm9yIC1XZm9ybWF0IHVuZG8gdGhlIGltcGxpY2l0 IHBhc3NpbmcgYnkgaGlkZGVuIHJlZmVyZW5jZQogCSAgICAgZG9uZSBieSBjb252ZXJ0X2FyZ190 b19lbGxpcHNpcy4gICovCkBAIC0xMjU3NCwxNyArMTI2MDEsMjUgQEAgY2FuZF9wYXJtc19tYXRj aCAoel9jYW5kaWRhdGUgKmMxLCB6X2NhbmRpZGF0ZSAqYzIpCiAgICAgICBmbjEgPSBERUNMX1RF TVBMQVRFX1JFU1VMVCAodDEpOwogICAgICAgZm4yID0gREVDTF9URU1QTEFURV9SRVNVTFQgKHQy KTsKICAgICB9CisgIC8qIFRoZSBjaGFuZ2VzIEkgbWFkZSBoZXJlIG1pZ2h0IGJlIHN0dWZmIEkg d2FzIHRvbGQgbm90IHRvIHdvcnJ5IGFib3V0PworICAgICBJJ20gbm90IHJlYWxseSBzdXJlIHNv IEknbSBnb2luZyB0byBsZWF2ZSBpdCBpbi4gICovCiAgIHRyZWUgcGFybXMxID0gVFlQRV9BUkdf VFlQRVMgKFRSRUVfVFlQRSAoZm4xKSk7CiAgIHRyZWUgcGFybXMyID0gVFlQRV9BUkdfVFlQRVMg KFRSRUVfVFlQRSAoZm4yKSk7CiAgIGlmIChERUNMX0ZVTkNUSU9OX01FTUJFUl9QIChmbjEpCiAg ICAgICAmJiBERUNMX0ZVTkNUSU9OX01FTUJFUl9QIChmbjIpCi0gICAgICAmJiAoREVDTF9OT05T VEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuMSkKLQkgICE9IERFQ0xfTk9OU1RBVElDX01FTUJF Ul9GVU5DVElPTl9QIChmbjIpKSkKKyAgICAgICYmIChERUNMX1NUQVRJQ19GVU5DVElPTl9QIChm bjEpCisJICAhPSBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChmbjIpKSkKICAgICB7CiAgICAgICAv KiBJZ25vcmUgJ3RoaXMnIHdoZW4gY29tcGFyaW5nIHRoZSBwYXJhbWV0ZXJzIG9mIGEgc3RhdGlj IG1lbWJlcgogCSBmdW5jdGlvbiB3aXRoIHRob3NlIG9mIGEgbm9uLXN0YXRpYyBvbmUuICAqLwot ICAgICAgcGFybXMxID0gc2tpcF9hcnRpZmljaWFsX3Bhcm1zX2ZvciAoZm4xLCBwYXJtczEpOwot ICAgICAgcGFybXMyID0gc2tpcF9hcnRpZmljaWFsX3Bhcm1zX2ZvciAoZm4yLCBwYXJtczIpOwor ICAgICAgYXV0byBza2lwX3Bhcm1zID0gW10odHJlZSBmbiwgdHJlZSBwYXJtcyl7CisJICBpZiAo REVDTF9YT0JKX01FTUJFUl9GVU5DVElPTl9QIChmbikpCisJICAgIHJldHVybiBUUkVFX0NIQUlO IChwYXJtcyk7CisJICBlbHNlCisJICAgIHJldHVybiBza2lwX2FydGlmaWNpYWxfcGFybXNfZm9y IChmbiwgcGFybXMpOworCX07CisgICAgICBwYXJtczEgPSBza2lwX3Bhcm1zIChmbjEsIHBhcm1z MSk7CisgICAgICBwYXJtczIgPSBza2lwX3Bhcm1zIChmbjIsIHBhcm1zMik7CiAgICAgfQogICBy ZXR1cm4gY29tcHBhcm1zIChwYXJtczEsIHBhcm1zMik7CiB9CmRpZmYgLS1naXQgYS9nY2MvY3Av Y2xhc3MuY2MgYi9nY2MvY3AvY2xhc3MuY2MKaW5kZXggNmZkYjU2YWJmYjkuLmQ3YTRhZDVhZDUx IDEwMDY0NAotLS0gYS9nY2MvY3AvY2xhc3MuY2MKKysrIGIvZ2NjL2NwL2NsYXNzLmNjCkBAIC0x MDc5LDggKzEwNzksOCBAQCBhZGRfbWV0aG9kICh0cmVlIHR5cGUsIHRyZWUgbWV0aG9kLCBib29s IHZpYV91c2luZykKICAgICAgIC8qIENvbXBhcmUgdGhlIHF1YWxzIG9uIHRoZSAndGhpcycgcGFy bS4gIERvbid0IGNvbXBhcmUKIAkgdGhlIHdob2xlIHR5cGVzLCBhcyB1c2VkIGZ1bmN0aW9ucyBh cmUgdHJlYXRlZCBhcwogCSBjb21pbmcgZnJvbSB0aGUgdXNpbmcgY2xhc3MgaW4gb3ZlcmxvYWQg cmVzb2x1dGlvbi4gICovCi0gICAgICBpZiAoISBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChmbikK LQkgICYmICEgREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAobWV0aG9kKQorICAgICAgaWYgKERFQ0xf SU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZm4pCisJICAmJiBERUNMX0lPQkpfTUVNQkVSX0ZVTkNU SU9OX1AgKG1ldGhvZCkKIAkgIC8qIEVpdGhlciBib3RoIG9yIG5laXRoZXIgbmVlZCB0byBiZSBy ZWYtcXVhbGlmaWVkIGZvcgogCSAgICAgZGlmZmVyaW5nIHF1YWxzIHRvIGFsbG93IG92ZXJsb2Fk aW5nLiAgKi8KIAkgICYmIChGVU5DVElPTl9SRUZfUVVBTElGSUVEIChmbl90eXBlKQpAQCAtMTA4 OSw2ICsxMDg5LDE2MSBAQCBhZGRfbWV0aG9kICh0cmVlIHR5cGUsIHRyZWUgbWV0aG9kLCBib29s IHZpYV91c2luZykKIAkgICAgICB8fCB0eXBlX21lbWZuX3JxdWFsIChmbl90eXBlKSAhPSB0eXBl X21lbWZuX3JxdWFsIChtZXRob2RfdHlwZSkpKQogCSAgY29udGludWU7CiAKKyAgICAgIGF1dG8g Z2V0X29iamVjdF9wYXJhbSA9IFtdKHRyZWUgZm4pCisJeworCSAgZ2NjX2Fzc2VydCAoREVDTF9P QkpFQ1RfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKSk7CisJICByZXR1cm4gVFJFRV9WQUxVRSAoVFlQ RV9BUkdfVFlQRVMgKFRSRUVfVFlQRSAoZm4pKSk7CisJfTsKKyAgICAgIGF1dG8gcmVmZXJlbmNl X3F1YWwgPSBbXSh0cmVlIHJlZikKKwl7CisJICBnY2NfYXNzZXJ0IChUWVBFX1JFRl9QIChyZWYp KTsKKwkgIHJldHVybiBUWVBFX1JFRl9JU19SVkFMVUUgKHJlZikgPyBSRUZfUVVBTF9SVkFMVUUK KwkJCQkJICA6IFJFRl9RVUFMX0xWQUxVRTsKKwl9OworCisgICAgICAvKiBIYW5kbGUgc3BlY2lh bCBjb3JyZXNwb25kZW5jZSBydWxlcyBmb3IgeG9iaiB2cyB4b2JqIGFuZCB4b2JqIHZzIGlvYmoK KwkgbWVtYmVyIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KKwkgV2UgZG9uJ3Qgd29ycnkgYWJvdXQg c3RhdGljIG1lbWJlciBmdW5jdGlvbnMgaGVyZS4gICovCisgICAgICBpZiAoKCFERUNMX1hPQkpf TUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQorCSAgICYmICFERUNMX1hPQkpfTUVNQkVSX0ZVTkNUSU9O X1AgKG1ldGhvZCkpCisJICB8fCBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChmbikgfHwgREVDTF9T VEFUSUNfRlVOQ1RJT05fUCAobWV0aG9kKSkKKwkvKiBFYXJseSBlc2NhcGUuICAqLzsKKyAgICAg IGVsc2UgaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZm4pCisJICAgICAgICYmIERF Q0xfWE9CSl9NRU1CRVJfRlVOQ1RJT05fUCAobWV0aG9kKSkKKwl7CisJICB0cmVlIGZuX3BhcmFt ID0gZ2V0X29iamVjdF9wYXJhbSAoZm4pOworCSAgdHJlZSBtZXRob2RfcGFyYW0gPSBnZXRfb2Jq ZWN0X3BhcmFtIChtZXRob2QpOworCSAgaWYgKCFzYW1lX3R5cGVfcCAoZm5fcGFyYW0sIG1ldGhv ZF9wYXJhbSkpCisJICAgIGNvbnRpbnVlOworCX0KKyAgICAgIGVsc2UgaWYgKERFQ0xfWE9CSl9N RU1CRVJfRlVOQ1RJT05fUCAoZm4pCisJICAgICAgIHx8IERFQ0xfWE9CSl9NRU1CRVJfRlVOQ1RJ T05fUCAobWV0aG9kKSkKKwl7CisJICB0cmVlIHhvYmpfZm4gPSBERUNMX1hPQkpfTUVNQkVSX0ZV TkNUSU9OX1AgKGZuKSA/IGZuIDogbWV0aG9kOworCSAgLyogQSByZWZlcmVuY2UsIHBvaW50ZXIs IG9yIHNvbWV0aGluZyBlbHNlLiAgKi8KKwkgIHRyZWUgeG9ial9wYXJhbSA9IGdldF9vYmplY3Rf cGFyYW0gKHhvYmpfZm4pOworCisJICAvKiBBbiBpb2JqIG1lbWJlciBmdW5jdGlvbidzIG9iamVj dCBwYXJhbWV0ZXIgY2FuJ3QgYmUgYW4gdW5yZWxhdGVkCisJICAgICB0eXBlLCB3ZSBrbm93IHRo aXMgY2FuJ3QgYmUgYSByZWRlY2xhcmF0aW9uIGlmIHRoZSB4b2JqIG1lbWJlcgorCSAgICAgZnVu Y3Rpb24ncyBvYmplY3QgcGFyYW1ldGVyIGlzIGFuIHVucmVsYXRlZCB0eXBlLgorCSAgICAgSWYg dGhlIGlvYmogbWVtYmVyIGZ1bmN0aW9uIHdhcyBpbnRyb2R1Y2VkIHdpdGggYSB1c2luZworCSAg ICAgZGVjbGFyYXRpb24sIHRoZW4gdGhlIHR5cGUgb2YgaXRzIG9iamVjdCBwYXJhbWV0ZXIgaXMg c3RpbGwKKwkgICAgIHRoYXQgb2YgdGhlIGNsYXNzIHdlIGFyZSBjdXJyZW50bHkgYWRkaW5nIGEg bWVtYmVyIGZ1bmN0aW9uIHRvLAorCSAgICAgc28gdGhpcyBhc3N1bXB0aW9uIGhvbGRzIHRydWUg aW4gdGhhdCBjYXNlIGFzIHdlbGwuCisKKwkgICAgIFtvdmVyLm1hdGNoLmZ1bmNzLmdlbmVyYWwu NF0KKwkgICAgIEZvciBub24tY29udmVyc2lvbiBmdW5jdGlvbnMgdGhhdCBhcmUgaW1wbGljaXQg b2JqZWN0IG1lbWJlcgorCSAgICAgZnVuY3Rpb25zIG5vbWluYXRlZCBieSBhIHVzaW5nLWRlY2xh cmF0aW9uIGluIGEgZGVyaXZlZCBjbGFzcywKKwkgICAgIHRoZSBmdW5jdGlvbiBpcyBjb25zaWRl cmVkIHRvIGJlIGEgbWVtYmVyIG9mIHRoZSBkZXJpdmVkIGNsYXNzCisJICAgICBmb3IgdGhlIHB1 cnBvc2Ugb2YgZGVmaW5pbmcgdGhlIHR5cGUgb2YgdGhlIGltcGxpY2l0IG9iamVjdAorCSAgICAg cGFyYW1ldGVyLgorCisJICAgICBXZSBkb24ndCBnZXQgdG8gYmFpbCB5ZXQgb3V0IGV2ZW4gaWYg dGhlIHhvYmogcGFyYW1ldGVyIGlzCisJICAgICBieS12YWx1ZSBhcyBlbGFib3JhdGVkIG9uIGJl bG93LgorCisJICAgICBUaGlzIGFsc28gaW1wbGljaXRseSBoYW5kbGVzIHhvYmogcGFyYW1ldGVy cyBvZiB0eXBlIHBvaW50ZXIuICAqLworCSAgaWYgKERFQ0xfQ09OVEVYVCAoeG9ial9mbikKKwkg ICAgICAhPSBUWVBFX01BSU5fVkFSSUFOVCAobm9uX3JlZmVyZW5jZSAoeG9ial9wYXJhbSkpKQor CSAgICBjb250aW51ZTsKKworCSAgLyogRnJvbSB0aGlzIHBvaW50IG9uLCB3ZSBrbm93IHdlIGFy ZSBkZWFsaW5nIHdpdGggYW4geG9iaiBwYXJhbWV0ZXIKKwkgICAgIHRoYXQgaGFzIGFuIG9iamVj dCBwYXJhbWV0ZXIgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgY2xhc3MgaXQKKwkgICAgIHdhcyBk ZWNsYXJlZCBpbi4KKwkgICAgIFdlIHN0aWxsIGRvbid0IGtub3cgaWYgd2UgaGF2ZSBhIHJlZmVy ZW5jZSBvciBieS12YWx1ZSBwYXJhbWV0ZXIKKwkgICAgIHlldCB0aG91Z2guICAqLworCisJICB0 cmVlIGlvYmpfZm4gPSBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKSA/IGZuIDogbWV0 aG9kOworCSAgdHJlZSBpb2JqX2ZuX3R5cGUgPSBUUkVFX1RZUEUgKGlvYmpfZm4pOworCSAgY3Bf cmVmX3F1YWxpZmllciBjb25zdCBpb2JqX3JlZl9xdWFsCisJICAgID0gdHlwZV9tZW1mbl9ycXVh bCAoaW9ial9mbl90eXBlKTsKKwkgIC8qIEkgYW0gY29uY2VybmVkIGFib3V0IHRoZSBvdGhlciBx dWFsaWZpZXIgYml0cywgZm9yIG5vdyBJIHdpbGwgbWFzaworCSAgICAgdGhlbSBvZmYuICAqLwor CSAgc3RhdGljIGNvbnN0ZXhwciBjcF9jdl9xdWFscyBjdl9iaXRzID0gVFlQRV9RVUFMX1ZPTEFU SUxFCisJCQkJCSAgICAgICB8IFRZUEVfUVVBTF9DT05TVDsKKwkgIGNwX2N2X3F1YWxzIGNvbnN0 IGlvYmpfY3ZfcXVhbHMKKwkgICAgPSB0eXBlX21lbWZuX3F1YWxzIChpb2JqX2ZuX3R5cGUpICYg Y3ZfYml0czsKKwkgIC8qIFdlIG5lZWQgdG8gaWdub3JlIHRoZSByZWYgcXVhbGlmaWVyIG9mIHRo ZSB4b2JqIHBhcmFtZXRlciBpZiB0aGUKKwkgICAgIGlvYmogbWVtYmVyIGZ1bmN0aW9uIGxhY2tz IGEgcmVmIHF1YWxpZmllci4KKworCSAgICAgW2Jhc2ljLnNjb3BlLnNjb3BlLjNdCisJICAgICBU d28gbm9uLXN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIGhhdmUgY29ycmVzcG9uZGluZyBvYmplY3QK KwkgICAgIHBhcmFtZXRlcnMgaWY6CisJICAgICAtLSBleGFjdGx5IG9uZSBpcyBhbiBpbXBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIHdpdGggbm8KKwkJcmVmLXF1YWxpZmllciBhbmQgdGhl IHR5cGVzIG9mIHRoZWlyIG9iamVjdCBwYXJhbWV0ZXJzCisJCShbZGNsLmZjdF0pLCBhZnRlciBy ZW1vdmluZyB0b3AtbGV2ZWwgcmVmZXJlbmNlcywgYXJlIHRoZQorCQlzYW1lLCBvcgorCSAgICAg LS0gdGhlaXIgb2JqZWN0IHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSB0eXBlLgorCisJICAgICBU aGUgY3YgcXVhbGlmaWVycyBvZiBhIGJ5LXZhbHVlIHBhcmFtZXRlciBhcmUgc3VwcG9zZWQgdG8g YmUKKwkgICAgIGRpc2NhcmRlZCwgc28gd2UgaWdub3JlIHRoZW0uCisKKwkgICAgIFtkY2wuZmN0 LjVdCisJICAgICBBZnRlciBwcm9kdWNpbmcgdGhlIGxpc3Qgb2YgcGFyYW1ldGVyIHR5cGVzLCBh bnkgdG9wLWxldmVsCisJICAgICBjdi1xdWFsaWZpZXJzIG1vZGlmeWluZyBhIHBhcmFtZXRlciB0 eXBlIGFyZSBkZWxldGVkIHdoZW4KKwkgICAgIGZvcm1pbmcgdGhlIGZ1bmN0aW9uIHR5cGUuCisK KwkgICAgIFRoZXkgc3RpbGwgbmVlZCB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBvdXIg eG9iaiBwYXJhbWV0ZXIKKwkgICAgIGlzIGEgcmVmZXJlbmNlIHRoYXQgaXMgYmVpbmcgaWdub3Jl ZCAoYWNjb3JkaW5nIHRvCisJICAgICBbYmFzaWMuc2NvcGUuc2NvcGUuM10gcXVvdGVkIGFib3Zl KSwgYnV0IHdoZW4gd2UgYXJlIGFjdHVhbGx5CisJICAgICBkZWFsaW5nIHdpdGggYSBieS12YWx1 ZSB4b2JqIHBhcmFtZXRlciB3ZSBjYW4gcHJvY2VlZCBmb2xsb3dpbmcKKwkgICAgIHRoaXMgdGFi bGUuCisJICAgICB8IGlvYmogfCB4b2JqIHwgZXF1YWwgfAorCSAgICAgfCBub25lIHwgbm9uZSB8 ICAgWCAgIHwKKwkgICAgIHwgbm9uZSB8ICAgIGMgfCAgIFggICB8CisJICAgICB8IG5vbmUgfCAg ICB2IHwgICBYICAgfAorCSAgICAgfCBub25lIHwgICBjdiB8ICAgWCAgIHwKKwkgICAgIHwgICAg YyB8IG5vbmUgfCAgIE8gICB8CisJICAgICB8ICAgIGMgfCAgICBjIHwgICBPICAgfAorCSAgICAg fCAgICBjIHwgICAgdiB8ICAgTyAgIHwKKwkgICAgIHwgICAgYyB8ICAgY3YgfCAgIE8gICB8CisJ ICAgICB8ICAgIHYgfCBub25lIHwgICBPICAgfAorCSAgICAgfCAgICB2IHwgICAgYyB8ICAgTyAg IHwKKwkgICAgIHwgICAgdiB8ICAgIHYgfCAgIE8gICB8CisJICAgICB8ICAgIHYgfCAgIGN2IHwg ICBPICAgfAorCSAgICAgfCAgIGN2IHwgbm9uZSB8ICAgTyAgIHwKKwkgICAgIHwgICBjdiB8ICAg IGMgfCAgIE8gICB8CisJICAgICB8ICAgY3YgfCAgICB2IHwgICBPICAgfAorCSAgICAgfCAgIGN2 IHwgICBjdiB8ICAgTyAgIHwKKworCSAgICAgQWRkaXRpb25hbGx5LCBpZiB0aGUgaW9iaiBtZW1i ZXIgZnVuY3Rpb24gaXMgcmVmIHF1YWxpZmllZCwKKwkgICAgIHdlIGFyZW4ndCBpZ25vcmluZyB0 aGUgcmVmIHF1YWxpZmllciBvZiB0aGUgaW9iaiBwYXJhbWV0ZXIsCisJICAgICBzbyB3ZSBjYW4n dCBiZSBkZWFsaW5nIHdpdGggYSByZWRlY2xhcmF0aW9uIGluIHRoYXQgY2FzZSBlaXRoZXIuCisK KwkgICAgIFNvIHRvIHJlY2FwLCBpZiB3ZSBoYXZlIGEgYnktdmFsdWUgeG9iaiBwYXJhbWV0ZXIs IHdlIGtub3cgZm9yCisJICAgICBzdXJlIHRoYXQgd2UgYXJlbid0IGRlYWxpbmcgd2l0aCBhIHJl ZGVjbGFyYXRpb24gaWYgdGhlIGlvYmoKKwkgICAgIG1lbWJlciBmdW5jdGlvbiBoYXMgYW55IGN2 LXJlZiBxdWFsaWZpZXJzLiAgVGhlIG9ubHkgY2FzZSB3aGVyZQorCSAgICAgd2UgbWlnaHQgc3Rp bGwgYmUgZGVhbGluZyB3aXRoIGEgcmVkZWNsYXJhdGlvbiBpcyB3aGVuIHRoZSBpb2JqCisJICAg ICBtZW1iZXIgZnVuY3Rpb24gbGFja3MgYW55IGN2LXJlZiBxdWFsaWZpY2F0aW9uLiAgKi8KKwkg IGlmICghVFlQRV9SRUZfUCAoeG9ial9wYXJhbSkpCisJICAgIHsKKwkgICAgICBpZiAoaW9ial9y ZWZfcXVhbCB8fCBpb2JqX2N2X3F1YWxzKQorCQljb250aW51ZTsKKwkgICAgfQorCSAgZWxzZQor CSAgICB7CisJICAgICAgLyogV2UgYXJlIGRlYWxpbmcgd2l0aCBhbiB4b2JqIHBhcmFtZXRlciB0 aGF0IGlzIGEgcmVmZXJlbmNlIG5vdywKKwkJIGJ1dCBkdWUgdG8gW2Jhc2ljLnNjb3BlLnNjb3Bl LjNdIHdlIG5lZWQgdG8gaWdub3JlIGl0cworCQkgcmVmZXJlbmNlIHF1YWxpZmllci4gICovCisJ ICAgICAgY3BfcmVmX3F1YWxpZmllciBjb25zdCB4b2JqX3JlZl9xdWFsCisJCT0gIVRZUEVfUkVG X1AgKHhvYmpfcGFyYW0pIHx8ICFpb2JqX3JlZl9xdWFsCisJCSAgPyBSRUZfUVVBTF9OT05FIDog cmVmZXJlbmNlX3F1YWwgKHhvYmpfcGFyYW0pOworCisJICAgICAgLyogRXZlbiBpZiB3ZSBhcmUg aWdub3JpbmcgdGhlIHJlZmVyZW5jZSBxdWFsaWZpZXIsIHRoZSB4b2JqCisJCSBwYXJhbWV0ZXIg d2FzIHN0aWxsIGEgcmVmZXJlbmNlIHNvIHdlIHN0aWxsIHRha2UgdGhlIGN2CisJCSBxdWFsaWZp ZXJzIGludG8gYWNjb3VudC4gICovCisJICAgICAgY3BfY3ZfcXVhbHMgY29uc3QgeG9ial9jdl9x dWFscworCQk9IGNwX3R5cGVfcXVhbHMgKFRSRUVfVFlQRSAoeG9ial9wYXJhbSkpICYgY3ZfYml0 czsKKworCSAgICAgIC8qIEZpbmFsbHksIGlmIHRoZSBxdWFsaWZpY2F0aW9ucyBkb24ndCBtYXRj aCBleGFjdGx5LCB0aGlzCisJCSBkZWZpbml0ZWx5IGlzbid0IGEgcmVkZWNsYXJhdGlvbi4gICov CisJICAgICAgaWYgKGlvYmpfcmVmX3F1YWwgIT0geG9ial9yZWZfcXVhbAorCQkgIHx8IGlvYmpf Y3ZfcXVhbHMgIT0geG9ial9jdl9xdWFscykKKwkJY29udGludWU7CisJICAgIH0KKwl9CisgICAg ICBlbHNlCisJZ2NjX3VucmVhY2hhYmxlICgpOworCiAgICAgICB0cmVlIHJlYWxfZm4gPSBmbjsK ICAgICAgIHRyZWUgcmVhbF9tZXRob2QgPSBtZXRob2Q7CiAKQEAgLTg3MjcsMjEgKzg4ODIsNDIg QEAgcmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24gKHRyZWUgdGFyZ2V0X3R5 cGUsCiAgIC8qIEdvb2QsIGV4YWN0bHkgb25lIG1hdGNoLiAgTm93LCBjb252ZXJ0IGl0IHRvIHRo ZSBjb3JyZWN0IHR5cGUuICAqLwogICBmbiA9IFRSRUVfUFVSUE9TRSAobWF0Y2hlcyk7CiAKLSAg aWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikKLSAgICAgICYmICEoY29t cGxhaW4gJiB0Zl9wdHJtZW1fb2spICYmICFmbGFnX21zX2V4dGVuc2lvbnMpCisgIGlmIChERUNM X09CSkVDVF9NRU1CRVJfRlVOQ1RJT05fUCAoZm4pCisgICAgICAmJiAhKGNvbXBsYWluICYgdGZf cHRybWVtX29rKSkKICAgICB7Ci0gICAgICBzdGF0aWMgaW50IGV4cGxhaW5lZDsKLQotICAgICAg aWYgKCEoY29tcGxhaW4gJiB0Zl9lcnJvcikpCisgICAgICAvKiBGb3IgaW9iaiBtZW1iZXIgZnVu Y3Rpb25zLCBpZiBpZiAtZm1zX2V4dGVuc2lvbnMgd2FzIHBhc3NlZCBpbiwgdGhpcworCSBpcyBu b3QgYW4gZXJyb3IsIHNvIHdlIGRvIG5vdGhpbmcuICBJdCBpcyBzdGlsbCBhbiBlcnJvciByZWdh cmRsZXNzCisJIGZvciB4b2JqIG1lbWJlciBmdW5jdGlvbnMgdGhvdWdoLCBhcyBpdCBpcyBhIG5l dyBmZWF0dXJlIHdlCisJIChob3BlZnVsbHkpIGRvbid0IG5lZWQgdG8gc3VwcG9ydCB0aGUgYmVo YXZpb3IuICAqLworICAgICAgaWYgKERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZm4pICYm IGZsYWdfbXNfZXh0ZW5zaW9ucykKKwkvKiBFYXJseSBlc2NhcGUuICAqLzsKKyAgICAgIGVsc2Ug aWYgKCEoY29tcGxhaW4gJiB0Zl9lcnJvcikpCiAJcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKLQot ICAgICAgYXV0b19kaWFnbm9zdGljX2dyb3VwIGQ7Ci0gICAgICBpZiAocGVybWVycm9yIChpbnB1 dF9sb2NhdGlvbiwgImFzc3VtaW5nIHBvaW50ZXIgdG8gbWVtYmVyICVxRCIsIGZuKQotCSAgJiYg IWV4cGxhaW5lZCkKKyAgICAgIGVsc2UgaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ1RJT05fUCAo Zm4pKQogCXsKLQkgIGluZm9ybSAoaW5wdXRfbG9jYXRpb24sICIoYSBwb2ludGVyIHRvIG1lbWJl ciBjYW4gb25seSBiZSAiCisJICBhdXRvX2RpYWdub3N0aWNfZ3JvdXAgZDsKKwkgIC8qIEVycm9y IG1lc3NhZ2UgY291bGQgYmUgYmV0dGVyLCBmaXhpdCB3b3VsZCBiZSBpZGVhbC4KKwkgICAgIFNo b3VsZCBhbHNvIG1hdGNoIHRoZSBlcnJvciBpbiB0eXBlY2suY2M6Y3BfYnVpbGRfYWRkcl9leHBy XzEuICAqLworCSAgZXJyb3JfYXQgKGlucHV0X2xvY2F0aW9uLAorCQkgICAgInRha2luZyB0aGUg YWRkcmVzcyBvZiBhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyICIKKwkJICAgICJmdW5jdGlvbiBt dXN0IGJlIHF1YWxpZmllZCIpOworCSAgaW5mb3JtIChpbnB1dF9sb2NhdGlvbiwKKwkJICAiKGEg cG9pbnRlciB0byBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGNhbiBvbmx5IGJlICIK IAkJICAiZm9ybWVkIHdpdGggJTwmJUUlPikiLCBmbik7Ci0JICBleHBsYWluZWQgPSAxOworCX0K KyAgICAgIGVsc2UKKwl7CisJICBzdGF0aWMgaW50IGV4cGxhaW5lZDsKKwkgIGdjY19hc3NlcnQg KERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZm4pICYmICFmbGFnX21zX2V4dGVuc2lvbnMp OworCisJICBhdXRvX2RpYWdub3N0aWNfZ3JvdXAgZDsKKwkgIGlmIChwZXJtZXJyb3IgKGlucHV0 X2xvY2F0aW9uLCAiYXNzdW1pbmcgcG9pbnRlciB0byBtZW1iZXIgJXFEIiwgZm4pCisJICAgICAg JiYgIWV4cGxhaW5lZCkKKwkgICAgeworCSAgICAgIGluZm9ybSAoaW5wdXRfbG9jYXRpb24sICIo YSBwb2ludGVyIHRvIG1lbWJlciBjYW4gb25seSBiZSAiCisJCQkJICAgICAgImZvcm1lZCB3aXRo ICU8JiVFJT4pIiwgZm4pOworCSAgICAgIGV4cGxhaW5lZCA9IDE7CisJICAgIH0KIAl9CiAgICAg fQogCmRpZmYgLS1naXQgYS9nY2MvY3AvY3AtdHJlZS5oIGIvZ2NjL2NwL2NwLXRyZWUuaAppbmRl eCA5OTc5YzVkYTYyMy4uZjExOGYxNmRmMGQgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jcC10cmVlLmgK KysrIGIvZ2NjL2NwL2NwLXRyZWUuaApAQCAtMjk0Niw4ICsyOTQ2LDkgQEAgc3RydWN0IEdUWSgo KSkgbGFuZ19kZWNsX2ZuIHsKICAgdW5zaWduZWQgbWF5YmVfZGVsZXRlZCA6IDE7CiAgIHVuc2ln bmVkIGNvcm91dGluZV9wIDogMTsKICAgdW5zaWduZWQgaW1wbGljaXRfY29uc3RleHByIDogMTsK KyAgdW5zaWduZWQgeG9ial9mdW5jIDogMTsKIAotICB1bnNpZ25lZCBzcGFyZSA6IDk7CisgIHVu c2lnbmVkIHNwYXJlIDogODsKIAogICAvKiAzMi1iaXRzIHBhZGRpbmcgb24gNjQtYml0IGhvc3Qu ICAqLwogCkBAIC0zMzQ2LDE0ICszMzQ3LDM0IEBAIHN0cnVjdCBHVFkoKCkpIGxhbmdfZGVjbCB7 CiAgIChMQU5HX0RFQ0xfRk5fQ0hFQ0sgKE5PREUpLT5zdGF0aWNfZnVuY3Rpb24pCiAKIC8qIE5v bnplcm8gZm9yIEZVTkNUSU9OX0RFQ0wgbWVhbnMgdGhhdCB0aGlzIGRlY2wgaXMgYSBub24tc3Rh dGljCi0gICBtZW1iZXIgZnVuY3Rpb24uICAqLworICAgbWVtYmVyIGZ1bmN0aW9uLCB1c2UgREVD TF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIGluc3RlYWQuICAqLwogI2RlZmluZSBERUNMX05PTlNU QVRJQ19NRU1CRVJfRlVOQ1RJT05fUChOT0RFKSBcCiAgIChUUkVFX0NPREUgKFRSRUVfVFlQRSAo Tk9ERSkpID09IE1FVEhPRF9UWVBFKQogCisvKiBOb256ZXJvIGZvciBGVU5DVElPTl9ERUNMIG1l YW5zIHRoYXQgdGhpcyBkZWNsIGlzIGFuIGltcGxpY2l0IG9iamVjdAorICAgbWVtYmVyIGZ1bmN0 aW9uLiAgKi8KKyNkZWZpbmUgREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QKE5PREUpIFwKKyAg KFRSRUVfQ09ERSAoVFJFRV9UWVBFIChOT0RFKSkgPT0gTUVUSE9EX1RZUEUpCisKKy8qIFNpbXBs ZSBtZW1iZXIgYWNjZXNzLCBvbmx5IHZhbGlkIGZvciBGVU5DVElPTl9ERUNMIG5vZGVzLiAgKi8K KyNkZWZpbmUgREVDTF9GVU5DVElPTl9YT0JKX0ZMQUcoTk9ERSkJXAorICAoTEFOR19ERUNMX0ZO X0NIRUNLIChOT0RFKS0+eG9ial9mdW5jKQorCisvKiBOb256ZXJvIGlmIE5PREUgaXMgYW4geG9i aiBtZW1iZXIgZnVuY3Rpb24sCisgICBzYWZlbHkgZXZhbHVhdGVzIHRvIGZhbHNlIGZvciBhbGwg bm9uIEZVTkNUSU9OX0RFQ0wgbm9kZXMuICAqLworI2RlZmluZSBERUNMX1hPQkpfTUVNQkVSX0ZV TkNUSU9OX1AoTk9ERSkJCVwKKyAgKFRSRUVfQ09ERSAoU1RSSVBfVEVNUExBVEUgKE5PREUpKSA9 PSBGVU5DVElPTl9ERUNMCVwKKyAgICYmIERFQ0xfRlVOQ1RJT05fWE9CSl9GTEFHIChOT0RFKSA9 PSAxKQorCisvKiBOb256ZXJvIGlmIE5PREUgaXMgYSBtZW1iZXIgZnVuY3Rpb24gd2l0aCBhbiBv YmplY3QgYXJndW1lbnQsCisgICBpbiBvdGhlciB3b3JkcywgYSBub24tc3RhdGljIG1lbWJlciBm dW5jdGlvbi4gICovCisjZGVmaW5lIERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DVElPTl9QKE5PREUp IFwKKyAgKERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoTk9ERSkgfHwgREVDTF9YT0JKX01F TUJFUl9GVU5DVElPTl9QIChOT0RFKSkKKwogLyogTm9uemVybyBmb3IgRlVOQ1RJT05fREVDTCBt ZWFucyB0aGF0IHRoaXMgZGVjbCBpcyBhIG1lbWJlciBmdW5jdGlvbgogICAgKHN0YXRpYyBvciBu b24tc3RhdGljKS4gICovCiAjZGVmaW5lIERFQ0xfRlVOQ1RJT05fTUVNQkVSX1AoTk9ERSkgXAot ICAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKE5PREUpIHx8IERFQ0xfU1RBVElD X0ZVTkNUSU9OX1AgKE5PREUpKQorICAoREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNUSU9OX1AgKE5P REUpIHx8IERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKE5PREUpKSBcCiAKIC8qIE5vbnplcm8gZm9y IEZVTkNUSU9OX0RFQ0wgbWVhbnMgdGhhdCB0aGlzIG1lbWJlciBmdW5jdGlvbgogICAgaGFzIGB0 aGlzJyBhcyBjb25zdCBYICpjb25zdC4gICovCkBAIC02MTM3LDcgKzYxNTgsOSBAQCBlbnVtIGF1 dG9fZGVkdWN0aW9uX2NvbnRleHQKICAgICAgICBpZGVudGljYWwgdG8gdGhlaXIgZGVmYXVsdHMu CiAgICBURkZfTk9fVEVNUExBVEVfQklORElOR1M6IGRvIG5vdCBwcmludCBpbmZvcm1hdGlvbiBh Ym91dCB0aGUgdGVtcGxhdGUKICAgICAgICBhcmd1bWVudHMgZm9yIGEgZnVuY3Rpb24gdGVtcGxh dGUgc3BlY2lhbGl6YXRpb24uCi0gICBURkZfUE9JTlRFUjogd2UgYXJlIHByaW50aW5nIGEgcG9p bnRlciB0eXBlLiAgKi8KKyAgIFRGRl9QT0lOVEVSOiB3ZSBhcmUgcHJpbnRpbmcgYSBwb2ludGVy IHR5cGUuCisgICBURkZfWE9CSl9GVU5DOiB3ZSBhcmUgcHJpbnRpbmcgYW4gZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbidzCisgICAgICAgcGFyYW1ldGVycy4gICovCiAKICNkZWZpbmUg VEZGX1BMQUlOX0lERU5USUZJRVIJCQkoMCkKICNkZWZpbmUgVEZGX1NDT1BFCQkJCSgxKQpAQCAt NjE1NSw2ICs2MTc4LDcgQEAgZW51bSBhdXRvX2RlZHVjdGlvbl9jb250ZXh0CiAjZGVmaW5lIFRG Rl9OT19PTUlUX0RFRkFVTFRfVEVNUExBVEVfQVJHVU1FTlRTCSgxIDw8IDEyKQogI2RlZmluZSBU RkZfTk9fVEVNUExBVEVfQklORElOR1MJCSgxIDw8IDEzKQogI2RlZmluZSBURkZfUE9JTlRFUgkJ ICAgICAgICAgICAgICAgICgxIDw8IDE0KQorI2RlZmluZSBURkZfWE9CSl9GVU5DCQkJCSgxIDw8 IDE1KQogCiAvKiBUaGVzZSBjb25zdGFudHMgY2FuIGJlIHVzZWQgYXMgYml0IGZsYWdzIHRvIGNv bnRyb2wgc3RyaXBfdHlwZWRlZnMuCiAKQEAgLTYyOTcsMTEgKzYzMjEsMTMgQEAgZW51bSBjcF9z dG9yYWdlX2NsYXNzIHsKIAogLyogQW4gaW5kaXZpZHVhbCBkZWNsLXNwZWNpZmllci4gIFRoaXMg aXMgdXNlZCB0byBpbmRleCB0aGUgYXJyYXkgb2YKICAgIGxvY2F0aW9ucyBmb3IgdGhlIGRlY2xz cGVjcyBpbiBzdHJ1Y3QgY3BfZGVjbF9zcGVjaWZpZXJfc2VxCi0gICBiZWxvdy4gICovCisgICBi ZWxvdy4KKyAgIEEgc3Vic2V0IG9mIHRoZXNlIGVudW1zIGFsc28gY29ycmVzcG9uZHMgdG8gZWxl bWVudHMgb2YKKyAgIGNwX3BhcnNlcl9zZXRfZGVjbF9zcGVjX3R5cGU6ZGVjbF9zcGVjX25hbWVz IGluIHBhcnNlci5jYy4gICovCiAKIGVudW0gY3BfZGVjbF9zcGVjIHsKICAgZHNfZmlyc3QsCi0g IGRzX3NpZ25lZCA9IGRzX2ZpcnN0LAorICBkc19zaWduZWQgPSBkc19maXJzdCwgLyogSW5kZXgg b2YgZmlyc3QgZWxlbWVudCBvZiBkZWNsX3NwZWNfbmFtZXMuICAqLwogICBkc191bnNpZ25lZCwK ICAgZHNfc2hvcnQsCiAgIGRzX2xvbmcsCkBAIC02MzE4LDYgKzYzNDQsNyBAQCBlbnVtIGNwX2Rl Y2xfc3BlYyB7CiAgIGRzX2NvbXBsZXgsCiAgIGRzX2NvbnN0aW5pdCwKICAgZHNfY29uc3RldmFs LAorICBkc190aGlzLCAvKiBJbmRleCBvZiBsYXN0IGVsZW1lbnQgb2YgZGVjbF9zcGVjX25hbWVz LiAgKi8KICAgZHNfdGhyZWFkLAogICBkc190eXBlX3NwZWMsCiAgIGRzX3JlZGVmaW5lZF9idWls dGluX3R5cGVfc3BlYywKZGlmZiAtLWdpdCBhL2djYy9jcC9kZWNsLmNjIGIvZ2NjL2NwL2RlY2wu Y2MKaW5kZXggNGI2ODUyNzAwOTcuLmU1MWVkZTVkMDQzIDEwMDY0NAotLS0gYS9nY2MvY3AvZGVj bC5jYworKysgYi9nY2MvY3AvZGVjbC5jYwpAQCAtMTAzODUsNiArMTAzODUsNyBAQCBncm9rZm5k ZWNsICh0cmVlIGN0eXBlLAogCSAgICBpbnQgcHVibGljcCwKIAkgICAgaW50IGlubGluZXAsCiAJ ICAgIGJvb2wgZGVsZXRlZHAsCisJICAgIGJvb2wgeG9ial9mdW5jX3AsCiAJICAgIHNwZWNpYWxf ZnVuY3Rpb25fa2luZCBzZmssCiAJICAgIGJvb2wgZnVuY2RlZl9mbGFnLAogCSAgICBib29sIGxh dGVfcmV0dXJuX3R5cGVfcCwKQEAgLTEwMzk0LDcgKzEwMzk1LDYgQEAgZ3Jva2ZuZGVjbCAodHJl ZSBjdHlwZSwKIAkgICAgbG9jYXRpb25fdCBsb2NhdGlvbikKIHsKICAgdHJlZSBkZWNsOwotICBp bnQgc3RhdGljcCA9IGN0eXBlICYmIFRSRUVfQ09ERSAodHlwZSkgPT0gRlVOQ1RJT05fVFlQRTsK ICAgdHJlZSB0OwogCiAgIGlmIChsb2NhdGlvbiA9PSBVTktOT1dOX0xPQ0FUSU9OKQpAQCAtMTA1 OTIsMTIgKzEwNTkyLDkgQEAgZ3Jva2ZuZGVjbCAodHJlZSBjdHlwZSwKIAkJICAoSURFTlRJRklF Ul9QT0lOVEVSIChkZWNsYXJhdG9yKSkpKSkpCiAgICAgU0VUX0RFQ0xfTEFOR1VBR0UgKGRlY2ws IGxhbmdfYyk7CiAKLSAgLyogU2hvdWxkIHByb2JhYmx5IHByb3BhZ2F0ZSBjb25zdCBvdXQgZnJv bSB0eXBlIHRvIGRlY2wgSSBiZXQgKG1ycykuICAqLwotICBpZiAoc3RhdGljcCkKLSAgICB7Ci0g ICAgICBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChkZWNsKSA9IDE7Ci0gICAgICBERUNMX0NPTlRF WFQgKGRlY2wpID0gY3R5cGU7Ci0gICAgfQorICBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChkZWNs KQorICAgID0gIXhvYmpfZnVuY19wICYmIGN0eXBlICYmIFRSRUVfQ09ERSAodHlwZSkgPT0gRlVO Q1RJT05fVFlQRTsKKyAgREVDTF9GVU5DVElPTl9YT0JKX0ZMQUcgKGRlY2wpID0geG9ial9mdW5j X3A7CiAKICAgaWYgKGRlbGV0ZWRwKQogICAgIERFQ0xfREVMRVRFRF9GTiAoZGVjbCkgPSAxOwpA QCAtMTA2NzcsMjQgKzEwNjc0LDMwIEBAIGdyb2tmbmRlY2wgKHRyZWUgY3R5cGUsCiAJVFJFRV9U WVBFIChkZWNsKSA9IGFwcGx5X21lbWZuX3F1YWxzIChUUkVFX1RZUEUgKGRlY2wpLAogCQkJCQkg ICAgICBUWVBFX1VOUVVBTElGSUVELAogCQkJCQkgICAgICBSRUZfUVVBTF9OT05FKTsKLQorICAg ICAgYXV0b19kaWFnbm9zdGljX2dyb3VwIGQ7CiAgICAgICBpZiAocXVhbHMpCi0JewotCSAgZXJy b3IgKGN0eXBlCisJZXJyb3IgKCFjdHlwZQorCSAgICAgICA/IEdfKCJub24tbWVtYmVyIGZ1bmN0 aW9uICVxRCBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiKQorCSAgICAgICA6ICF4b2JqX2Z1bmNf cAogCQkgPyBHXygic3RhdGljIG1lbWJlciBmdW5jdGlvbiAlcUQgY2Fubm90IGhhdmUgY3YtcXVh bGlmaWVyIikKLQkJIDogR18oIm5vbi1tZW1iZXIgZnVuY3Rpb24gJXFEIGNhbm5vdCBoYXZlIGN2 LXF1YWxpZmllciIpLAotCQkgZGVjbCk7Ci0JICBxdWFscyA9IFRZUEVfVU5RVUFMSUZJRUQ7Ci0J fQotCisJCSA6IEdfKCJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICIKKwkJICAgICAg IiVxRCBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiKSwKKwkgICAgICAgZGVjbCk7CiAgICAgICBp ZiAocnF1YWwpCi0JewotCSAgZXJyb3IgKGN0eXBlCisJZXJyb3IgKCFjdHlwZQorCSAgICAgICA/ IEdfKCJub24tbWVtYmVyIGZ1bmN0aW9uICVxRCBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIikK KwkgICAgICAgOiAheG9ial9mdW5jX3AKIAkJID8gR18oInN0YXRpYyBtZW1iZXIgZnVuY3Rpb24g JXFEIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiKQotCQkgOiBHXygibm9uLW1lbWJlciBmdW5j dGlvbiAlcUQgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIpLAorCQkgOiBHXygiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAiCisJCSAgICAgICIlcUQgY2Fubm90IGhhdmUgcmVmLXF1 YWxpZmllciIpLAogCQkgZGVjbCk7Ci0JICBycXVhbCA9IFJFRl9RVUFMX05PTkU7Ci0JfQorCisg ICAgICBpZiAoeG9ial9mdW5jX3AgJiYgKHF1YWxzIHx8IHJxdWFsKSkKKwlpbmZvcm0gKERFQ0xf U09VUkNFX0xPQ0FUSU9OIChERUNMX0FSR1VNRU5UUyAoZGVjbCkpLAorCQkiZXhwbGljaXQgb2Jq ZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIik7CisgICAgICBxdWFscyA9IFRZUEVfVU5RVUFM SUZJRUQ7CisgICAgICBycXVhbCA9IFJFRl9RVUFMX05PTkU7CisKICAgICB9CiAKICAgaWYgKGRl ZHVjdGlvbl9ndWlkZV9wIChkZWNsKSkKQEAgLTEzMDY2LDYgKzEzMDY5LDggQEAgZ3Jva2RlY2xh cmF0b3IgKGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3IsCiAgIGlmIChhdHRybGlzdCkK ICAgICBkaWFnbm9zZV9taXNhcHBsaWVkX2NvbnRyYWN0cyAoKmF0dHJsaXN0KTsKIAorICAvKiBT a2lwIG92ZXIgYnVpbGRfbWVtZm5fdHlwZSB3aGVuIGEgRlVOQ1RJT05fREVDTCBpcyBhbiB4b2Jq IG1lbWZuLiAgKi8KKyAgYm9vbCBpc194b2JqX21lbWJlcl9mdW5jdGlvbiA9IGZhbHNlOwogICAv KiBEZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIGVudGl0eSBkZWNsYXJlZCBieSByZWN1cnJpbmcg b24gdGhlCiAgICAgIGRlY2xhcmF0b3IuICAqLwogICBmb3IgKDsgZGVjbGFyYXRvcjsgZGVjbGFy YXRvciA9IGRlY2xhcmF0b3ItPmRlY2xhcmF0b3IpCkBAIC0xMzE4MSw2ICsxMzE4Niw5MSBAQCBn cm9rZGVjbGFyYXRvciAoY29uc3QgY3BfZGVjbGFyYXRvciAqZGVjbGFyYXRvciwKIAkgICAgaWYg KHJhaXNlcyA9PSBlcnJvcl9tYXJrX25vZGUpCiAJICAgICAgcmFpc2VzID0gTlVMTF9UUkVFOwog CisJICAgIGF1dG8gZmluZF94b2JqX3Bhcm0gPSBbXSh0cmVlIHBhcm1fbGlzdCkKKwkgICAgICB7 CisJCS8qIFRoZXJlIGlzIG5vIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBsaXN0LAorCQkgICBv bmx5IHRoZSBmaXJzdCBwYXJtIGNhbiBiZSBhIHZhbGlkIHhvYmogcGFybS4gICovCisJCWlmICgh cGFybV9saXN0IHx8IFRSRUVfUFVSUE9TRSAocGFybV9saXN0KSAhPSB0aGlzX2lkZW50aWZpZXIp CisJCSAgcmV0dXJuIE5VTExfVFJFRTsKKwkJLyogSWYgd2UgbWFrZSBpdCBoZXJlLCB3ZSBhcmUg bG9va2luZyBhdCBhbiB4b2JqIHBhcm0uCisKKwkJICAgTm9uLW51bGwgJ3B1cnBvc2UnIHVzdWFs bHkgbWVhbnMgdGhlIHBhcm0gaGFzIGEgZGVmYXVsdAorCQkgICBhcmd1bWVudCwgd2UgZG9uJ3Qg d2FudCB0byB2aW9sYXRlIHRoaXMgYXNzdW1wdGlvbi4gICovCisJCVRSRUVfUFVSUE9TRSAocGFy bV9saXN0KSA9IE5VTExfVFJFRTsKKwkJcmV0dXJuIFRSRUVfVkFMVUUgKHBhcm1fbGlzdCk7CisJ ICAgICAgfTsKKworCSAgICB0cmVlIHhvYmpfcGFybQorCSAgICAgID0gZmluZF94b2JqX3Bhcm0g KGRlY2xhcmF0b3ItPnUuZnVuY3Rpb24ucGFyYW1ldGVycyk7CisJICAgIGlzX3hvYmpfbWVtYmVy X2Z1bmN0aW9uID0geG9ial9wYXJtOworCisJICAgIGlmICh4b2JqX3Bhcm0gJiYgY3h4X2RpYWxl Y3QgPCBjeHgyMykKKwkgICAgICBwZWR3YXJuIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9w YXJtKSwgT1BUX1djX18yM19leHRlbnNpb25zLAorCQkgICAgICAgImV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gb25seSBhdmFpbGFibGUgIgorCQkgICAgICAgIndpdGggJTwtc3RkPWMr KzIzJT4gb3IgJTwtc3RkPWdudSsrMjMlPiIpOworCisJICAgIGlmICh4b2JqX3Bhcm0gJiYgZGVj bF9jb250ZXh0ID09IFRZUEVOQU1FKQorCSAgICAgIHsKKwkJLyogV2UgaW5mb3JtIGluIGV2ZXJ5 IGNhc2UsIGp1c3QgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoYXQKKwkJICAgY2FzZSBpdCBp cy4gICovCisJCWF1dG9fZGlhZ25vc3RpY19ncm91cCBkOworCQlib29sIHB0cl90eXBlID0gdHJ1 ZTsKKwkJLyogSWYgZGVjbGFyYXRvci0+a2luZCBpcyBjZGtfZnVuY3Rpb24gYW5kIHdlIGFyZSBh dCB0aGUgZW5kIG9mCisJCSAgIHRoZSBkZWNsYXJhdG9yIGNoYWluLCB3ZSBhcmUgbG9va2luZyBh dCBhIGZ1bmN0aW9uIHR5cGUuICAqLworCQlpZiAoIWRlY2xhcmF0b3ItPmRlY2xhcmF0b3IpCisJ CSAgeworCQkgICAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAor CQkJICAgICAgImEgZnVuY3Rpb24gdHlwZSBjYW5ub3QgIgorCQkJICAgICAgImhhdmUgYW4gZXhw bGljaXQgb2JqZWN0IHBhcmFtZXRlciIpOworCQkgICAgcHRyX3R5cGUgPSBmYWxzZTsKKwkJICB9 CisJCWVsc2UgaWYgKGRlY2xhcmF0b3ItPmRlY2xhcmF0b3ItPmtpbmQgPT0gY2RrX3BvaW50ZXIp CisJCSAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkJICAg ICJhIHBvaW50ZXIgdG8gZnVuY3Rpb24gdHlwZSBjYW5ub3QgIgorCQkJICAgICJoYXZlIGFuIGV4 cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIiKTsKKwkJZWxzZSBpZiAoZGVjbGFyYXRvci0+ZGVjbGFy YXRvci0+a2luZCA9PSBjZGtfcHRybWVtKQorCQkgIGVycm9yX2F0IChERUNMX1NPVVJDRV9MT0NB VElPTiAoeG9ial9wYXJtKSwKKwkJCSAgICAiYSBwb2ludGVyIHRvIG1lbWJlciBmdW5jdGlvbiB0 eXBlICIKKwkJCSAgICAiY2Fubm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIp OworCQllbHNlCisJCSAgZ2NjX3VucmVhY2hhYmxlICgpOworCisJCS8qIFRoZSBsb2NhdGlvbnMg YmVpbmcgdXNlZCBoZXJlIGFyZSBwcm9iYWJseSBub3QgY29ycmVjdC4gICovCisJCWlmIChwdHJf dHlwZSkKKwkJICBpbmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkJ ICAidGhlIHR5cGUgb2YgYSBwb2ludGVyIHRvIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgIgorCQkJ ICAiZnVuY3Rpb24gaXMgYSByZWd1bGFyIHBvaW50ZXIgdG8gZnVuY3Rpb24gdHlwZSIpOworCQll bHNlCisJCSAgaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJCSAg InRoZSB0eXBlIG9mIGFuIGV4cGxpY2l0IG9iamVjdCAiCisJCQkgICJtZW1iZXIgZnVuY3Rpb24g aXMgYSByZWd1bGFyIGZ1bmN0aW9uIHR5cGUiKTsKKwkJLyogSWRlYWxseSB3ZSBzaG91bGQgc3lu dGhlc2l6ZSB0aGUgY29ycmVjdCBzeW50YXgKKwkJICAgZm9yIHRoZSB1c2VyLCBwZXJoYXBzIHRo aXMgY291bGQgYmUgYWRkZWQgbGF0ZXIuICAqLworCSAgICAgIH0KKwkgICAgLyogU2luY2UgYSB2 YWxpZCB4b2JqIHBhcm0gaGFzIGl0cyBwdXJwb3NlIGNsZWFyZWQgaW4gZmluZF94b2JqX3Bhcm0K KwkgICAgICAgdGhlIGZpcnN0IHBhcm0gbm9kZSB3aWxsIG5ldmVyIGVycm9uZW91c2x5IGJlIGRl dGVjdGVkIGhlcmUuICAqLworCSAgICB7CisJICAgICAgYXV0b19kaWFnbm9zdGljX2dyb3VwIGQ7 CisJICAgICAgYm9vbCBiYWRfeG9ial9wYXJtX2VuY291bnRlcmVkID0gZmFsc2U7CisJICAgICAg Zm9yICh0cmVlIHBhcm0gPSBkZWNsYXJhdG9yLT51LmZ1bmN0aW9uLnBhcmFtZXRlcnM7CisJCSAg IHBhcm0gJiYgcGFybSAhPSB2b2lkX2xpc3Rfbm9kZTsKKwkJICAgcGFybSA9IFRSRUVfQ0hBSU4g KHBhcm0pKQorCQl7CisJCSAgaWYgKFRSRUVfUFVSUE9TRSAocGFybSkgIT0gdGhpc19pZGVudGlm aWVyKQorCQkgICAgY29udGludWU7CisJCSAgYmFkX3hvYmpfcGFybV9lbmNvdW50ZXJlZCA9IHRy dWU7CisJCSAgZ2NjX3JpY2hfbG9jYXRpb24gYmFkX3hvYmpfcGFybQorCQkgICAgKERFQ0xfU09V UkNFX0xPQ0FUSU9OIChUUkVFX1ZBTFVFIChwYXJtKSkpOworCQkgIC8qIEknbSBrZWVwaW5nIGl0 IG1vcmUgYmFzaWMgZm9yIG5vdy4gICovCisJCSAgZXJyb3JfYXQgKCZiYWRfeG9ial9wYXJtLAor CQkJICAiT25seSB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGEgbWVtYmVyIGZ1bmN0aW9uICIKKwkJ CSAgImNhbiBiZSBkZWNsYXJlZCBhcyBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIik7CisJ CX0KKwkgICAgICBpZiAoYmFkX3hvYmpfcGFybV9lbmNvdW50ZXJlZCAmJiB4b2JqX3Bhcm0pCisJ CWluZm9ybSAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSksCisJCQkiVmFsaWQgZXhw bGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIik7CisJICAgIH0KKwogCSAgICBp ZiAocmVxcykKIAkgICAgICBlcnJvcl9hdCAobG9jYXRpb25fb2YgKHJlcXMpLCAicmVxdWlyZXMt Y2xhdXNlIG9uIHJldHVybiB0eXBlIik7CiAJICAgIHJlcXMgPSBkZWNsYXJhdG9yLT51LmZ1bmN0 aW9uLnJlcXVpcmVzX2NsYXVzZTsKQEAgLTEzNDY4LDYgKzEzNTU4LDM4IEBAIGdyb2tkZWNsYXJh dG9yIChjb25zdCBjcF9kZWNsYXJhdG9yICpkZWNsYXJhdG9yLAogCQkgIGV4cGxpY2l0cCA9IDI7 CiAJICAgICAgfQogCisJICAgIGlmICh4b2JqX3Bhcm0pCisJICAgICAgeworCQlpZiAoIWN0eXBl CisJCSAgICAmJiBkZWNsX2NvbnRleHQgPT0gTk9STUFMCisJCSAgICAmJiAoaW5fbmFtZXNwYWNl CisJCQl8fCAhZGVjbGFyYXRvci0+ZGVjbGFyYXRvci0+dS5pZC5xdWFsaWZ5aW5nX3Njb3BlKSkK KwkJICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSksCisJCQkgICAg ImEgbm9uLW1lbWJlciBmdW5jdGlvbiBjYW5ub3QgaGF2ZSAiCisJCQkgICAgImFuIGV4cGxpY2l0 IG9iamVjdCBwYXJhbWV0ZXIiKTsKKwkJZWxzZQorCQkgIHsKKwkJICAgIGlmICh2aXJ0dWFscCkK KwkJICAgICAgeworCQkJYXV0b19kaWFnbm9zdGljX2dyb3VwIGQ7CisJCQllcnJvcl9hdCAoZGVj bHNwZWNzLT5sb2NhdGlvbnNbZHNfdmlydHVhbF0sCisJCQkJICAiYW4gZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiBjYW5ub3QgIgorCQkJCSAgImJlICU8dmlydHVhbCU+Iik7CisJCQlp bmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkJCSJleHBsaWNpdCBv YmplY3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUiKTsKKwkJCXZpcnR1YWxwID0gZmFsc2U7CisJ CSAgICAgIH0KKwkJICAgIGlmIChzdGF0aWNwID49IDIpCisJCSAgICAgIHsKKwkJCWF1dG9fZGlh Z25vc3RpY19ncm91cCBkOworCQkJZXJyb3JfYXQgKGRlY2xzcGVjcy0+bG9jYXRpb25zW2RzX3N0 b3JhZ2VfY2xhc3NdLAorCQkJCSAgImFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Y2Fubm90ICIKKwkJCQkgICJiZSAlPHN0YXRpYyU+Iik7CisJCQlpbmZvcm0gKERFQ0xfU09VUkNF X0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkJCSJleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGRl Y2xhcmVkIGhlcmUiKTsKKwkJICAgICAgfQorCQkgIH0KKwkgICAgICB9CiAJICAgIHRyZWUgcHVz aGVkX3Njb3BlID0gTlVMTF9UUkVFOwogCSAgICBpZiAoZnVuY2RlY2xfcAogCQkmJiBkZWNsX2Nv bnRleHQgIT0gRklFTEQKQEAgLTE0MjQ1LDYgKzE0MzY3LDggQEAgZ3Jva2RlY2xhcmF0b3IgKGNv bnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3IsCiAgICAgfQogCiAgIGlmIChjdHlwZSAmJiBU UkVFX0NPREUgKHR5cGUpID09IEZVTkNUSU9OX1RZUEUgJiYgc3RhdGljcCA8IDIKKyAgICAgIC8q IERvbid0IGNvbnZlcnQgeG9iaiBtZW1iZXIgZnVuY3Rpb25zIHRvIE1FVEhPRF9UWVBFLiAgKi8K KyAgICAgICYmICFpc194b2JqX21lbWJlcl9mdW5jdGlvbgogICAgICAgJiYgISh1bnF1YWxpZmll ZF9pZAogCSAgICYmIGlkZW50aWZpZXJfcCAodW5xdWFsaWZpZWRfaWQpCiAJICAgJiYgSURFTlRJ RklFUl9ORVdERUxfT1BfUCAodW5xdWFsaWZpZWRfaWQpKSkKQEAgLTE0NDY2LDcgKzE0NTkwLDgg QEAgZ3Jva2RlY2xhcmF0b3IgKGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3IsCiAJCQkg ICAgICAgZnJpZW5kcCA/IC0xIDogMCwgZnJpZW5kcCwgcHVibGljcCwKIAkJCSAgICAgICBpbmxp bmVwIHwgKDIgKiBjb25zdGV4cHJfcCkgfCAoNCAqIGNvbmNlcHRfcCkKIAkJCQkgICAgICAgfCAo OCAqIGNvbnN0ZXZhbF9wKSwKLQkJCSAgICAgICBpbml0aWFsaXplZCA9PSBTRF9ERUxFVEVELCBz ZmssCisJCQkgICAgICAgaW5pdGlhbGl6ZWQgPT0gU0RfREVMRVRFRCwKKwkJCSAgICAgICBpc194 b2JqX21lbWJlcl9mdW5jdGlvbiwgc2ZrLAogCQkJICAgICAgIGZ1bmNkZWZfZmxhZywgbGF0ZV9y ZXR1cm5fdHlwZV9wLAogCQkJICAgICAgIHRlbXBsYXRlX2NvdW50LCBpbl9uYW1lc3BhY2UsCiAJ CQkgICAgICAgYXR0cmxpc3QsIGlkX2xvYyk7CkBAIC0xNDgwMSw4ICsxNDkyNiw4IEBAIGdyb2tk ZWNsYXJhdG9yIChjb25zdCBjcF9kZWNsYXJhdG9yICpkZWNsYXJhdG9yLAogCQkJICAgaW5saW5l cCB8ICgyICogY29uc3RleHByX3ApIHwgKDQgKiBjb25jZXB0X3ApCiAJCQkJICAgfCAoOCAqIGNv bnN0ZXZhbF9wKSwKIAkJCSAgIGluaXRpYWxpemVkID09IFNEX0RFTEVURUQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBzZmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jZGVm X2ZsYWcsCisJCQkgICBpc194b2JqX21lbWJlcl9mdW5jdGlvbiwgc2ZrLAorCQkJICAgZnVuY2Rl Zl9mbGFnLAogCQkJICAgbGF0ZV9yZXR1cm5fdHlwZV9wLAogCQkJICAgdGVtcGxhdGVfY291bnQs IGluX25hbWVzcGFjZSwgYXR0cmxpc3QsCiAJCQkgICBpZF9sb2MpOwpAQCAtMTU1MDIsOSArMTU2 MjcsMTAgQEAgdm9pZAogZ3Jva19zcGVjaWFsX21lbWJlcl9wcm9wZXJ0aWVzICh0cmVlIGRlY2wp CiB7CiAgIHRyZWUgY2xhc3NfdHlwZTsKLQorICAvKiBJIGJlbGlldmUgd2UgaGF2ZSB0byBtYWtl IHNvbWUgY2hhbmdlcyBpbiBoZXJlIGRlcGVuZGluZyBvbiB0aGUgb3V0Y29tZQorICAgICBvZiBD V0cyNTg2LiAgKi8KICAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gVVNJTkdfREVDTAotICAgICAg fHwgIURFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChkZWNsKSkKKyAgICAgIHx8ICFE RUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkpCiAgICAgcmV0dXJuOwogCiAgIGNs YXNzX3R5cGUgPSBERUNMX0NPTlRFWFQgKGRlY2wpOwpAQCAtMTU2MDMsNyArMTU3MjksNyBAQCBi b29sCiBncm9rX29wX3Byb3BlcnRpZXMgKHRyZWUgZGVjbCwgYm9vbCBjb21wbGFpbikKIHsKICAg dHJlZSBhcmd0eXBlcyA9IFRZUEVfQVJHX1RZUEVTIChUUkVFX1RZUEUgKGRlY2wpKTsKLSAgYm9v bCBtZXRob2RwID0gVFJFRV9DT0RFIChUUkVFX1RZUEUgKGRlY2wpKSA9PSBNRVRIT0RfVFlQRTsK KyAgYm9vbCBjb25zdCBtZXRob2RwID0gREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChkZWNs KTsKICAgdHJlZSBuYW1lID0gREVDTF9OQU1FIChkZWNsKTsKICAgbG9jYXRpb25fdCBsb2MgPSBE RUNMX1NPVVJDRV9MT0NBVElPTiAoZGVjbCk7CiAKQEAgLTE1Njk2LDcgKzE1ODIyLDcgQEAgZ3Jv a19vcF9wcm9wZXJ0aWVzICh0cmVlIGRlY2wsIGJvb2wgY29tcGxhaW4pCiAgIC8qIEFuIG9wZXJh dG9yIGZ1bmN0aW9uIG11c3QgZWl0aGVyIGJlIGEgbm9uLXN0YXRpYyBtZW1iZXIgZnVuY3Rpb24K ICAgICAgb3IgaGF2ZSBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIG9mIGEgY2xhc3MsIGEgcmVmZXJl bmNlIHRvIGEgY2xhc3MsCiAgICAgIGFuIGVudW1lcmF0aW9uLCBvciBhIHJlZmVyZW5jZSB0byBh biBlbnVtZXJhdGlvbi4gIDEzLjQuMC42ICovCi0gIGlmICghIG1ldGhvZHAgfHwgREVDTF9TVEFU SUNfRlVOQ1RJT05fUCAoZGVjbCkpCisgIGlmICghREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNUSU9O X1AgKGRlY2wpKQogICAgIHsKICAgICAgIGlmIChvcGVyYXRvcl9jb2RlID09IFRZUEVfRVhQUgog CSAgfHwgb3BlcmF0b3JfY29kZSA9PSBDT01QT05FTlRfUkVGCkBAIC0xNTc4NSw3ICsxNTkxMSw3 IEBAIGdyb2tfb3BfcHJvcGVydGllcyAodHJlZSBkZWNsLCBib29sIGNvbXBsYWluKQogCX0KICAg ICAgICsrYXJpdHk7CiAgICAgfQotCisgIC8qIEZJWE1FOiBXZSBuZWVkIHRlc3RzIGZvciB0aGVz ZSBlcnJvcnMgd2l0aCB4b2JqIG1lbWJlciBmdW5jdGlvbnMuICAqLwogICAvKiBWZXJpZnkgY29y cmVjdCBudW1iZXIgb2YgYXJndW1lbnRzLiAgKi8KICAgc3dpdGNoIChvcF9mbGFncykKICAgICB7 CkBAIC0xNzY5NCw3ICsxNzgyMCw3IEBAIHN0YXJ0X3ByZXBhcnNlZF9mdW5jdGlvbiAodHJlZSBk ZWNsMSwgdHJlZSBhdHRycywgaW50IGZsYWdzKQogICAvKiBTdGFydCB0aGUgc3RhdGVtZW50LXRy ZWUsIHN0YXJ0IHRoZSB0cmVlIG5vdy4gICovCiAgIERFQ0xfU0FWRURfVFJFRSAoZGVjbDEpID0g cHVzaF9zdG10X2xpc3QgKCk7CiAKLSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElP Tl9QIChkZWNsMSkpCisgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wxKSkK ICAgICB7CiAgICAgICAvKiBXZSBrbm93IHRoYXQgdGhpcyB3YXMgc2V0IHVwIGJ5IGBncm9rY2xh c3NmbicuICBXZSBkbyBub3QKIAkgd2FpdCB1bnRpbCBgc3RvcmVfcGFybV9kZWNscycsIHNpbmNl IGV2aWwgcGFyc2UgZXJyb3JzIG1heQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2Vycm9yLmNjIGIvZ2Nj L2NwL2Vycm9yLmNjCmluZGV4IDc4NTkwOWMzNjJhLi5iMTA1ZWI2ZGRjZiAxMDA2NDQKLS0tIGEv Z2NjL2NwL2Vycm9yLmNjCisrKyBiL2djYy9jcC9lcnJvci5jYwpAQCAtODM4LDEwICs4MzgsMTQg QEAgZHVtcF9hZ2dyX3R5cGUgKGN4eF9wcmV0dHlfcHJpbnRlciAqcHAsIHRyZWUgdCwgaW50IGZs YWdzKQogICAgIHsKICAgICAgIC8qIEEgbGFtYmRhJ3MgInR5cGUiIGlzIGVzc2VudGlhbGx5IGl0 cyBzaWduYXR1cmUuICAqLwogICAgICAgcHBfc3RyaW5nIChwcCwgTV8oIjxsYW1iZGEiKSk7Ci0g ICAgICBpZiAobGFtYmRhX2Z1bmN0aW9uICh0KSkKLQlkdW1wX3BhcmFtZXRlcnMgKHBwLAotICAg ICAgICAgICAgICAgICAgICAgICAgIEZVTkNUSU9OX0ZJUlNUX1VTRVJfUEFSTVRZUEUgKGxhbWJk YV9mdW5jdGlvbiAodCkpLAotCQkJIGZsYWdzKTsKKyAgICAgIHRyZWUgY29uc3QgZm4gPSBsYW1i ZGFfZnVuY3Rpb24gKHQpOworICAgICAgaWYgKGZuKQorCXsKKwkgIGludCBjb25zdCBwYXJtX2Zs YWdzCisJICAgID0gREVDTF9YT0JKX01FTUJFUl9GVU5DVElPTl9QIChmbikgPyBURkZfWE9CSl9G VU5DIHwgZmxhZ3MKKwkJCQkJICAgICAgIDogZmxhZ3M7CisJICBkdW1wX3BhcmFtZXRlcnMgKHBw LCBGVU5DVElPTl9GSVJTVF9VU0VSX1BBUk1UWVBFIChmbiksIHBhcm1fZmxhZ3MpOworCX0KICAg ICAgIHBwX2dyZWF0ZXIgKHBwKTsKICAgICB9CiAgIGVsc2UgaWYgKCFkZWNsIHx8IElERU5USUZJ RVJfQU5PTl9QIChERUNMX05BTUUgKGRlY2wpKSkKQEAgLTE3MTAsNyArMTcxNCw5IEBAIGR1bXBf bGFtYmRhX2Z1bmN0aW9uIChjeHhfcHJldHR5X3ByaW50ZXIgKnBwLAogewogICAvKiBBIGxhbWJk YSdzIHNpZ25hdHVyZSBpcyBlc3NlbnRpYWxseSBpdHMgInR5cGUiLiAgKi8KICAgZHVtcF90eXBl IChwcCwgREVDTF9DT05URVhUIChmbiksIGZsYWdzKTsKLSAgaWYgKFRSRUVfQ09ERSAoVFJFRV9U WVBFIChmbikpID09IEZVTkNUSU9OX1RZUEUpCisgIGlmIChERUNMX1hPQkpfTUVNQkVSX0ZVTkNU SU9OX1AgKGZuKSkKKyAgICAvKiBFYXJseSBlc2NhcGUuICAqLzsKKyAgZWxzZSBpZiAoVFJFRV9D T0RFIChUUkVFX1RZUEUgKGZuKSkgPT0gRlVOQ1RJT05fVFlQRSkKICAgICB7CiAgICAgICBwcC0+ cGFkZGluZyA9IHBwX2JlZm9yZTsKICAgICAgIHBwX2Nfd3Nfc3RyaW5nIChwcCwgInN0YXRpYyIp OwpAQCAtMTgzMSw3ICsxODM3LDkgQEAgZHVtcF9mdW5jdGlvbl9kZWNsIChjeHhfcHJldHR5X3By aW50ZXIgKnBwLCB0cmVlIHQsIGludCBmbGFncykKIAogICBpZiAoIShmbGFncyAmIFRGRl9OT19G VU5DVElPTl9BUkdVTUVOVFMpKQogICAgIHsKLSAgICAgIGR1bXBfcGFyYW1ldGVycyAocHAsIHBh cm10eXBlcywgZmxhZ3MpOworICAgICAgaW50IGNvbnN0IHBhcm1fZmxhZ3MKKwk9IERFQ0xfWE9C Sl9NRU1CRVJfRlVOQ1RJT05fUCAodCkgPyBURkZfWE9CSl9GVU5DIHwgZmxhZ3MgOiBmbGFnczsK KyAgICAgIGR1bXBfcGFyYW1ldGVycyAocHAsIHBhcm10eXBlcywgcGFybV9mbGFncyk7CiAKICAg ICAgIGlmIChUUkVFX0NPREUgKGZudHlwZSkgPT0gTUVUSE9EX1RZUEUpCiAJewpAQCAtMTkxMCw2 ICsxOTE4LDggQEAgZHVtcF9wYXJhbWV0ZXJzIChjeHhfcHJldHR5X3ByaW50ZXIgKnBwLCB0cmVl IHBhcm10eXBlcywgaW50IGZsYWdzKQogICBmb3IgKGZpcnN0ID0gMTsgcGFybXR5cGVzICE9IHZv aWRfbGlzdF9ub2RlOwogICAgICAgIHBhcm10eXBlcyA9IFRSRUVfQ0hBSU4gKHBhcm10eXBlcykp CiAgICAgeworICAgICAgaWYgKGZpcnN0ICYmIGZsYWdzICYgVEZGX1hPQkpfRlVOQykKKwlwcF9z dHJpbmcgKHBwLCAidGhpcyAiKTsKICAgICAgIGlmICghZmlyc3QpCiAJcHBfc2VwYXJhdGVfd2l0 aF9jb21tYSAocHApOwogICAgICAgZmlyc3QgPSAwOwpAQCAtMzY4NSw2ICszNjk1LDggQEAgZnVu Y3Rpb25fY2F0ZWdvcnkgKHRyZWUgZm4pCiAJcmV0dXJuIF8oIkluIGRlc3RydWN0b3IgJXFEIik7 CiAgICAgICBlbHNlIGlmIChMQU1CREFfRlVOQ1RJT05fUCAoZm4pKQogCXJldHVybiBfKCJJbiBs YW1iZGEgZnVuY3Rpb24iKTsKKyAgICAgIGVsc2UgaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ1RJ T05fUCAoZm4pKQorCXJldHVybiBfKCJJbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u ICVxRCIpOwogICAgICAgZWxzZQogCXJldHVybiBfKCJJbiBtZW1iZXIgZnVuY3Rpb24gJXFEIik7 CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbWJkYS5jYyBiL2djYy9jcC9sYW1iZGEuY2MK aW5kZXggNTk5MGE2ZGU3MzYuLjhiYWY4MjU3OGM3IDEwMDY0NAotLS0gYS9nY2MvY3AvbGFtYmRh LmNjCisrKyBiL2djYy9jcC9sYW1iZGEuY2MKQEAgLTQwNCw4ICs0MDQsMTAgQEAgYnVpbGRfY2Fw dHVyZV9wcm94eSAodHJlZSBtZW1iZXIsIHRyZWUgaW5pdCkKICAgZm4gPSBsYW1iZGFfZnVuY3Rp b24gKGNsb3N1cmUpOwogICBsYW0gPSBDTEFTU1RZUEVfTEFNQkRBX0VYUFIgKGNsb3N1cmUpOwog CisgIG9iamVjdCA9IERFQ0xfQVJHVU1FTlRTIChmbik7CiAgIC8qIFRoZSBwcm94eSB2YXJpYWJs ZSBmb3J3YXJkcyB0byB0aGUgY2FwdHVyZSBmaWVsZC4gICovCi0gIG9iamVjdCA9IGJ1aWxkX2Zv bGRfaW5kaXJlY3RfcmVmIChERUNMX0FSR1VNRU5UUyAoZm4pKTsKKyAgaWYgKElORElSRUNUX1RZ UEVfUCAoVFJFRV9UWVBFIChvYmplY3QpKSkKKyAgICBvYmplY3QgPSBidWlsZF9mb2xkX2luZGly ZWN0X3JlZiAob2JqZWN0KTsKICAgb2JqZWN0ID0gZmluaXNoX25vbl9zdGF0aWNfZGF0YV9tZW1i ZXIgKG1lbWJlciwgb2JqZWN0LCBOVUxMX1RSRUUpOwogICBpZiAoUkVGRVJFTkNFX1JFRl9QIChv YmplY3QpKQogICAgIG9iamVjdCA9IFRSRUVfT1BFUkFORCAob2JqZWN0LCAwKTsKQEAgLTgzNSw3 ICs4MzcsOCBAQCBsYW1iZGFfZXhwcl90aGlzX2NhcHR1cmUgKHRyZWUgbGFtYmRhLCBpbnQgYWRk X2NhcHR1cmVfcCkKIAkgIGlmICghTEFNQkRBX0ZVTkNUSU9OX1AgKGNvbnRhaW5pbmdfZnVuY3Rp b24pKQogCSAgICB7CiAJICAgICAgLyogV2UgZm91bmQgYSBub24tbGFtYmRhIGZ1bmN0aW9uLiAg Ki8KLQkgICAgICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGNvbnRhaW5p bmdfZnVuY3Rpb24pKQorCSAgICAgIC8qIFRoZXJlIGlzIG5vIHRoaXMgcG9pbnRlciBpbiB4b2Jq IG1lbWJlciBmdW5jdGlvbnMuICAqLworCSAgICAgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNU SU9OX1AgKGNvbnRhaW5pbmdfZnVuY3Rpb24pKQogCQkvKiBGaXJzdCBwYXJhbWV0ZXIgaXMgJ3Ro aXMnLiAgKi8KIAkJaW5pdCA9IERFQ0xfQVJHVU1FTlRTIChjb250YWluaW5nX2Z1bmN0aW9uKTsK IAkgICAgICBicmVhazsKQEAgLTk2OSw3ICs5NzIsNyBAQCBtYXliZV9nZW5lcmljX3RoaXNfY2Fw dHVyZSAodHJlZSBvYmplY3QsIHRyZWUgZm5zKQogCWZvciAobGtwX2l0ZXJhdG9yIGl0ZXIgKGZu cyk7IGl0ZXI7ICsraXRlcikKIAkgIGlmICgoKCFpZF9leHByICYmIFRSRUVfQ09ERSAoKml0ZXIp ICE9IFVTSU5HX0RFQ0wpCiAJICAgICAgIHx8IFRSRUVfQ09ERSAoKml0ZXIpID09IFRFTVBMQVRF X0RFQ0wpCi0JICAgICAgJiYgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKCppdGVy KSkKKwkgICAgICAmJiBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKCppdGVyKSkKIAkgICAg ewogCSAgICAgIC8qIEZvdW5kIGEgbm9uLXN0YXRpYyBtZW1iZXIuICBDYXB0dXJlIHRoaXMuICAq LwogCSAgICAgIGxhbWJkYV9leHByX3RoaXNfY2FwdHVyZSAobGFtLCAvKm1heWJlKi8tMSk7CmRp ZmYgLS1naXQgYS9nY2MvY3AvbWFuZ2xlLmNjIGIvZ2NjL2NwL21hbmdsZS5jYwppbmRleCAwNjg0 ZjBlNjAzOC4uODQyOTRmMTBhNDIgMTAwNjQ0Ci0tLSBhL2djYy9jcC9tYW5nbGUuY2MKKysrIGIv Z2NjL2NwL21hbmdsZS5jYwpAQCAtMTIyMSw5ICsxMjIxLDkgQEAgd3JpdGVfbmVzdGVkX25hbWUg KGNvbnN0IHRyZWUgZGVjbCkKIAogICB3cml0ZV9jaGFyICgnTicpOwogCi0gIC8qIFdyaXRlIENW LXF1YWxpZmllcnMsIGlmIHRoaXMgaXMgYSBtZW1iZXIgZnVuY3Rpb24uICAqLworICAvKiBXcml0 ZSBDVi1xdWFsaWZpZXJzLCBpZiB0aGlzIGlzIGFuIGlvYmogbWVtYmVyIGZ1bmN0aW9uLiAgKi8K ICAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJT05fREVDTAotICAgICAgJiYgREVDTF9O T05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQorICAgICAgJiYgREVDTF9JT0JKX01F TUJFUl9GVU5DVElPTl9QIChkZWNsKSkKICAgICB7CiAgICAgICBpZiAoREVDTF9WT0xBVElMRV9N RU1GVU5DX1AgKGRlY2wpKQogCXdyaXRlX2NoYXIgKCdWJyk7CmRpZmYgLS1naXQgYS9nY2MvY3Av bWV0aG9kLmNjIGIvZ2NjL2NwL21ldGhvZC5jYwppbmRleCBhNzBkZDVkNmFkYy4uY2EzMTAyYTU3 YTUgMTAwNjQ0Ci0tLSBhL2djYy9jcC9tZXRob2QuY2MKKysrIGIvZ2NjL2NwL21ldGhvZC5jYwpA QCAtMzYwNyw3ICszNjA3LDcgQEAgbGF6aWx5X2RlY2xhcmVfZm4gKHNwZWNpYWxfZnVuY3Rpb25f a2luZCBzZmssIHRyZWUgdHlwZSkKIHRyZWUKIHNraXBfYXJ0aWZpY2lhbF9wYXJtc19mb3IgKGNv bnN0X3RyZWUgZm4sIHRyZWUgbGlzdCkKIHsKLSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9G VU5DVElPTl9QIChmbikpCisgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKSkK ICAgICBsaXN0ID0gVFJFRV9DSEFJTiAobGlzdCk7CiAgIGVsc2UKICAgICByZXR1cm4gbGlzdDsK ZGlmZiAtLWdpdCBhL2djYy9jcC9tb2R1bGUuY2MgYi9nY2MvY3AvbW9kdWxlLmNjCmluZGV4IDMz ZmNmMzk2ODc1Li5iYWU5NjY4MDI5MSAxMDA2NDQKLS0tIGEvZ2NjL2NwL21vZHVsZS5jYworKysg Yi9nY2MvY3AvbW9kdWxlLmNjCkBAIC01NjgzLDYgKzU2ODMsNyBAQCB0cmVlc19vdXQ6Omxhbmdf ZGVjbF9ib29scyAodHJlZSB0KQogICAgICAgV0IgKGxhbmctPnUuZm4uaGFzX2RlcGVuZGVudF9l eHBsaWNpdF9zcGVjX3ApOwogICAgICAgV0IgKGxhbmctPnUuZm4uaW1tZWRpYXRlX2ZuX3ApOwog ICAgICAgV0IgKGxhbmctPnUuZm4ubWF5YmVfZGVsZXRlZCk7CisgICAgICBXQiAobGFuZy0+dS5m bi54b2JqX2Z1bmMpOwogICAgICAgZ290byBsZHNfbWluOwogCiAgICAgY2FzZSBsZHNfZGVjb21w OiAgLyogbGFuZ19kZWNsX2RlY29tcC4gICovCkBAIC01NzUxLDYgKzU3NTIsNyBAQCB0cmVlc19p bjo6bGFuZ19kZWNsX2Jvb2xzICh0cmVlIHQpCiAgICAgICBSQiAobGFuZy0+dS5mbi5oYXNfZGVw ZW5kZW50X2V4cGxpY2l0X3NwZWNfcCk7CiAgICAgICBSQiAobGFuZy0+dS5mbi5pbW1lZGlhdGVf Zm5fcCk7CiAgICAgICBSQiAobGFuZy0+dS5mbi5tYXliZV9kZWxldGVkKTsKKyAgICAgIFJCIChs YW5nLT51LmZuLnhvYmpfZnVuYyk7CiAgICAgICBnb3RvIGxkc19taW47CiAKICAgICBjYXNlIGxk c19kZWNvbXA6ICAvKiBsYW5nX2RlY2xfZGVjb21wLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9jcC9w YXJzZXIuY2MgYi9nY2MvY3AvcGFyc2VyLmNjCmluZGV4IDhkOTExYjhjYjAyLi45M2Q0YjFmNzQ4 NCAxMDA2NDQKLS0tIGEvZ2NjL2NwL3BhcnNlci5jYworKysgYi9nY2MvY3AvcGFyc2VyLmNjCkBA IC0xMTc1NCw4ICsxMTc1NCwxNiBAQCBjcF9wYXJzZXJfbGFtYmRhX2RlY2xhcmF0b3Jfb3B0IChj cF9wYXJzZXIqIHBhcnNlciwgdHJlZSBsYW1iZGFfZXhwcikKICAgZWxzZSBpZiAoY3h4X2RpYWxl Y3QgPCBjeHgyMykKICAgICBvbWl0dGVkX3Bhcm1zX2xvYyA9IGNwX2xleGVyX3BlZWtfdG9rZW4g KHBhcnNlci0+bGV4ZXIpLT5sb2NhdGlvbjsKIAorICAvKiBSZXZpZXcgbm90ZTogSSBmaWd1cmVk IEkgbWlnaHQgYXMgd2VsbCB1cGRhdGUgdGhlIGNvbW1lbnRzIHNpbmNlIEknbSBoZXJlLgorICAg ICBUaGVyZSBhcmUgYWxzbyBzb21lIGFkZGl0aW9ucyB0byB0aGUgYmVsb3cuICAqLwogICAvKiBJ biB0aGUgZGVjbC1zcGVjaWZpZXItc2VxIG9mIHRoZSBsYW1iZGEtZGVjbGFyYXRvciwgZWFjaAog ICAgICBkZWNsLXNwZWNpZmllciBzaGFsbCBlaXRoZXIgYmUgbXV0YWJsZSBvciBjb25zdGV4cHIu ICAqLworICAvKiBbZXhwci5wcmltLmxhbWJkYS5nZW5lcmFsXQorICAgICBsYW1iZGEtc3BlY2lm aWVyOgorCWNvbnN0ZXZhbCwgY29uc3RleHByLCBtdXRhYmxlLCBzdGF0aWMKKyAgICAgWzRdIEEg bGFtYmRhLXNwZWNpZmllci1zZXEgc2hhbGwgY29udGFpbiBhdCBtb3N0IG9uZSBvZiBlYWNoCisJ IGxhbWJkYS1zcGVjaWZpZXIgYW5kIHNoYWxsIG5vdCBjb250YWluIGJvdGggY29uc3RleHByIGFu ZCBjb25zdGV2YWwuCisJIFRoZSBsYW1iZGEtc3BlY2lmaWVyLXNlcSBzaGFsbCBub3QgY29udGFp biBib3RoIG11dGFibGUgYW5kIHN0YXRpYy4gICovCiAgIGludCBkZWNsYXJlc19jbGFzc19vcl9l bnVtOwogICBpZiAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pc19kZWNsX3NwZWNpZmllcl9rZXl3b3Jk IChwYXJzZXItPmxleGVyKSkKICAgICBjcF9wYXJzZXJfZGVjbF9zcGVjaWZpZXJfc2VxIChwYXJz ZXIsCkBAIC0xMTc3MCwxOSArMTE3NzgsODggQEAgY3BfcGFyc2VyX2xhbWJkYV9kZWNsYXJhdG9y X29wdCAoY3BfcGFyc2VyKiBwYXJzZXIsIHRyZWUgbGFtYmRhX2V4cHIpCiAJICAgICAgICIlPC1z dGQ9Z251KysyYiU+Iik7CiAgICAgICBvbWl0dGVkX3Bhcm1zX2xvYyA9IFVOS05PV05fTE9DQVRJ T047CiAgICAgfQotCi0gIGlmIChsYW1iZGFfc3BlY3Muc3RvcmFnZV9jbGFzcyA9PSBzY19tdXRh YmxlKQorICAvKiBQZWVrIGF0IHRoZSBwYXJhbXMsIHNlZSBpZiB3ZSBoYXZlIGFuIHhvYmogcGFy YW1ldGVyLiAgKi8KKyAgaWYgKHBhcmFtX2xpc3QgJiYgVFJFRV9QVVJQT1NFIChwYXJhbV9saXN0 KSA9PSB0aGlzX2lkZW50aWZpZXIpCisgICAgeworICAgICAgcXVhbHMgPSBUWVBFX1VOUVVBTElG SUVEOworICAgICAgLyogV2Ugc3RpbGwgbmVlZCBncm9rZGVjbGFyYXRvciB0byBzZWUgdGhhdCB0 aGlzIGlzIGFuIHhvYmogZnVuY3Rpb24KKwkgYW5kIGZpbmlzaCB0aGUgcmVzdCBvZiB0aGUgd29y aywgZG9uJ3QgbXV0YXRlIGl0LiAgKi8KKyAgICAgIHRyZWUgY29uc3QgeG9ial9wYXJhbSA9IFRS RUVfVkFMVUUgKHBhcmFtX2xpc3QpOworICAgICAgdHJlZSBjb25zdCBwYXJhbV90eXBlID0gVFJF RV9UWVBFICh4b2JqX3BhcmFtKTsKKyAgICAgIC8qIFtleHByLnByaW0ubGFtYmRhLmNsb3N1cmUt NV0KKwkgR2l2ZW4gYSBsYW1iZGEgd2l0aCBhIGxhbWJkYS1jYXB0dXJlLCB0aGUgdHlwZSBvZiB0 aGUgZXhwbGljaXQgb2JqZWN0CisJIHBhcmFtZXRlciwgaWYgYW55LCBvZiB0aGUgbGFtYmRhJ3Mg ZnVuY3Rpb24gY2FsbCBvcGVyYXRvciAocG9zc2libHkKKwkgaW5zdGFudGlhdGVkIGZyb20gYSBm dW5jdGlvbiBjYWxsIG9wZXJhdG9yIHRlbXBsYXRlKSBzaGFsbCBiZSBlaXRoZXI6CisJIC0tIHRo ZSBjbG9zdXJlIHR5cGUsCisJIC0tIGEgY2xhc3MgdHlwZSBkZXJpdmVkIGZyb20gdGhlIGNsb3N1 cmUgdHlwZSwgb3IKKwkgLS0gYSByZWZlcmVuY2UgdG8gYSBwb3NzaWJseSBjdi1xdWFsaWZpZWQg c3VjaCB0eXBlLiAgKi8KKyAgICAgIGlmICgoTEFNQkRBX0VYUFJfREVGQVVMVF9DQVBUVVJFX01P REUgKGxhbWJkYV9leHByKSAhPSBDUExEX05PTkUKKwkgICB8fCBMQU1CREFfRVhQUl9DQVBUVVJF X0xJU1QgKGxhbWJkYV9leHByKSkKKwkgIC8qIFNpbmNlIGEgbGFtYmRhJ3MgdHlwZSBpcyBhbm9u eW1vdXMsIHdlIGNhbiBhc3N1bWUgYW4geG9iagorCSAgICAgcGFyYW1ldGVyIGlzIHVucmVsYXRl ZCB0byB0aGUgY2xvc3VyZSBpZiBpdCBpcyBub24tZGVwZW5kZW50LgorCSAgICAgSWYgaXQgaXMg ZGVwZW5kZW50IHdlIGhhbmRsZSBpdCBhdCBpbnN0YW50aWF0aW9uIHRpbWUuICAqLworCSAgJiYg IWRlcGVuZGVudF90eXBlX3AgKG5vbl9yZWZlcmVuY2UgKHBhcmFtX3R5cGUpKSkKKwl7CisJICBl cnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFyYW0pLAorCQkgICAgImEgbGFt YmRhIHdpdGggY2FwdHVyZXMgbWF5IG5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCAiCisJCSAg ICAicGFyYW1ldGVyIG9mIGFuIHVucmVsYXRlZCB0eXBlIik7CisJICBMQU1CREFfRVhQUl9DQVBU VVJFX0xJU1QgKGxhbWJkYV9leHByKSA9IE5VTExfVFJFRTsKKwl9CisKKyAgICAgIC8qIFtleHBy LnByaW0ubGFtYmRhLmdlbmVyYWwtNF0KKwkgSWYgdGhlIGxhbWJkYS1kZWNsYXJhdG9yIGNvbnRh aW5zIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIKKwkgKFtkY2wuZmN0XSksIHRoZW4gbm8g bGFtYmRhLXNwZWNpZmllciBpbiB0aGUgbGFtYmRhLXNwZWNpZmllci1zZXEKKwkgc2hhbGwgYmUg bXV0YWJsZSBvciBzdGF0aWMuICAqLworICAgICAgaWYgKGxhbWJkYV9zcGVjcy5zdG9yYWdlX2Ns YXNzID09IHNjX211dGFibGUpCisJeworCSAgYXV0b19kaWFnbm9zdGljX2dyb3VwIGQ7CisJICBl cnJvcl9hdCAobGFtYmRhX3NwZWNzLmxvY2F0aW9uc1tkc19zdG9yYWdlX2NsYXNzXSwKKwkJICAg ICIlPG11dGFibGUlPiBsYW1iZGEgc3BlY2lmaWVyICIKKwkJICAgICJ3aXRoIGV4cGxpY2l0IG9i amVjdCBwYXJhbWV0ZXIiKTsKKwkgIC8qIFRlbGwgdGhlIHVzZXIgaG93IHRvIGRvIHdoYXQgdGhl eSBwcm9iYWJseSBtZWFudCwgbWF5YmUgZml4aXRzCisJICAgICB3b3VsZCBiZSBhcHJvcHJpYXRl IGxhdGVyPyAgKi8KKwkgIGlmICghZGVwZW5kZW50X3R5cGVfcCAobm9uX3JlZmVyZW5jZSAocGFy YW1fdHlwZSkpKQorCSAgICAvKiBJZiB3ZSBhcmUgZ2l2ZW4gYSBub24tZGVwZW5kZW50IHR5cGUg d2Ugd2lsbCBoYXZlIGFscmVhZHkgZ2l2ZW4KKwkgICAgICAgYSBkaWFnbm9zaXMgdGhhdCB0aGUg Zm9sbG93aW5nIHdvdWxkIGNvbnRyYWRpY3Qgd2l0aC4gICovOworCSAgZWxzZSBpZiAoIVRZUEVf UkVGX1AgKHBhcmFtX3R5cGUpKQorCSAgICBpbmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4 b2JqX3BhcmFtKSwKKwkJICAgICJ0aGUgcGFzc2VkIGluIGNsb3N1cmUgb2JqZWN0IHdpbGwgbm90 IGJlIG11dGF0ZWQgYmVjYXVzZSAiCisJCSAgICAiaXQgaXMgdGFrZW4gYnkgY29weS9tb3ZlIik7 CisJICBlbHNlIGlmIChUWVBFX1JFQURPTkxZIChUUkVFX1RZUEUgKHBhcmFtX3R5cGUpKSkKKwkg ICAgaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJhbSksCisJCSAgICAiZGVj bGFyZSB0aGUgZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBhcyBub24tY29uc3QgIgorCQkgICAg InJlZmVyZW5jZSBpbnN0ZWFkIik7CisJICBlbHNlCisJICAgIGluZm9ybSAoREVDTF9TT1VSQ0Vf TE9DQVRJT04gKHhvYmpfcGFyYW0pLAorCQkgICAgImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIg aXMgYWxyZWFkeSBhIG11dGFibGUgIgorCQkgICAgInJlZmVyZW5jZSIpOworCX0KKyAgICAgIGVs c2UgaWYgKGxhbWJkYV9zcGVjcy5zdG9yYWdlX2NsYXNzID09IHNjX3N0YXRpYykKKwl7CisJICBh dXRvX2RpYWdub3N0aWNfZ3JvdXAgZDsKKwkgIGVycm9yX2F0IChsYW1iZGFfc3BlY3MubG9jYXRp b25zW2RzX3N0b3JhZ2VfY2xhc3NdLAorCQkgICAgIiU8c3RhdGljJT4gbGFtYmRhIHNwZWNpZmll ciAiCisJCSAgICAid2l0aCBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIik7CisJICBpbmZvcm0g KERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3BhcmFtKSwKKwkJICAiZXhwbGljaXQgb2JqZWN0 IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIik7CisJfQorICAgIH0KKyAgZWxzZSBpZiAobGFtYmRh X3NwZWNzLnN0b3JhZ2VfY2xhc3MgPT0gc2NfbXV0YWJsZSkKICAgICB7CiAgICAgICBxdWFscyA9 IFRZUEVfVU5RVUFMSUZJRUQ7CiAgICAgfQogICBlbHNlIGlmIChsYW1iZGFfc3BlY3Muc3RvcmFn ZV9jbGFzcyA9PSBzY19zdGF0aWMpCiAgICAgeworICAgICAgLyogW2V4cHIucHJpbS5sYW1iZGEu Z2VuZXJhbC00XQorCSBJZiB0aGUgbGFtYmRhLXNwZWNpZmllci1zZXEgY29udGFpbnMgc3RhdGlj LCB0aGVyZSBzaGFsbCBiZSBubworCSBsYW1iZGEtY2FwdHVyZS4gICovCiAgICAgICBpZiAoTEFN QkRBX0VYUFJfREVGQVVMVF9DQVBUVVJFX01PREUgKGxhbWJkYV9leHByKSAhPSBDUExEX05PTkUK IAkgIHx8IExBTUJEQV9FWFBSX0NBUFRVUkVfTElTVCAobGFtYmRhX2V4cHIpKQogCWVycm9yX2F0 IChsYW1iZGFfc3BlY3MubG9jYXRpb25zW2RzX3N0b3JhZ2VfY2xhc3NdLAogCQkgICIlPHN0YXRp YyU+IGxhbWJkYSBzcGVjaWZpZXIgd2l0aCBsYW1iZGEgY2FwdHVyZSIpOwogICAgICAgZWxzZQog CXsKKwkgIC8qIFdlIGNhbiByZW1vdmUgdGhpcyB0b28sIEkgd2lsbCBhZGRyZXNzIGl0IGluIGFu b3RoZXIgcGF0Y2guICAqLwogCSAgTEFNQkRBX0VYUFJfU1RBVElDX1AgKGxhbWJkYV9leHByKSA9 IDE7CiAJICBxdWFscyA9IFRZUEVfVU5RVUFMSUZJRUQ7CiAJfQpAQCAtMTE5MDEsNyArMTE5Nzgs NyBAQCBjcF9wYXJzZXJfbGFtYmRhX2RlY2xhcmF0b3Jfb3B0IChjcF9wYXJzZXIqIHBhcnNlciwg dHJlZSBsYW1iZGFfZXhwcikKICAgICAgIHsKIAlERUNMX0lOSVRJQUxJWkVEX0lOX0NMQVNTX1Ag KGZjbykgPSAxOwogCURFQ0xfQVJUSUZJQ0lBTCAoZmNvKSA9IDE7Ci0JaWYgKCFMQU1CREFfRVhQ Ul9TVEFUSUNfUCAobGFtYmRhX2V4cHIpKQorCWlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9O X1AgKGZjbykpCiAJICAvKiBHaXZlIHRoZSBvYmplY3QgcGFyYW1ldGVyIGEgZGlmZmVyZW50IG5h bWUuICAqLwogCSAgREVDTF9OQU1FIChERUNMX0FSR1VNRU5UUyAoZmNvKSkgPSBjbG9zdXJlX2lk ZW50aWZpZXI7CiAJREVDTF9TRVRfTEFNQkRBX0ZVTkNUSU9OIChmY28sIHRydWUpOwpAQCAtMTYw MjMsNiArMTYxMDAsOCBAQCBjcF9wYXJzZXJfZGVjbF9zcGVjaWZpZXJfc2VxIChjcF9wYXJzZXIq IHBhcnNlciwKICAgLyogQXNzdW1lIG5vIGNsYXNzIG9yIGVudW1lcmF0aW9uIHR5cGUgaXMgZGVj bGFyZWQuICAqLwogICAqZGVjbGFyZXNfY2xhc3Nfb3JfZW51bSA9IDA7CiAKKyAgLyogS2VlcCBh IHRva2VuIHRoYXQgYWRkaXRpb25hbGx5IHdpbGwgYmUgdXNlZCBmb3IgZGlhZ25vc3RpY3MuICAq LworICBjcF90b2tlbiAqZmlyc3Rfc3BlY2lmaWVyID0gTlVMTDsKICAgLyogS2VlcCByZWFkaW5n IHNwZWNpZmllcnMgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUgdG8gcmVhZC4gICovCiAgIHdoaWxl ICh0cnVlKQogICAgIHsKQEAgLTE2MDk1LDYgKzE2MTc0LDQwIEBAIGNwX3BhcnNlcl9kZWNsX3Nw ZWNpZmllcl9zZXEgKGNwX3BhcnNlciogcGFyc2VyLAogCSAgICBkZWNsX3NwZWNzLT5sb2NhdGlv bnNbZHNfYXR0cmlidXRlXSA9IHRva2VuLT5sb2NhdGlvbjsKIAkgIGNvbnRpbnVlOwogCX0KKyAg ICAgIC8qIFdlIGtub3cgYnkgdGhpcyBwb2ludCB0aGF0IHRoZSB0b2tlbiBpcyBub3QgcGFydCBv ZiBhbiBhdHRyaWJ1dGUuICAqLworICAgICAgaWYgKCFmaXJzdF9zcGVjaWZpZXIpCisJZmlyc3Rf c3BlY2lmaWVyID0gdG9rZW47CisgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yICJ0aGlzIiBzcGVj aWZpZXIsIGluZGljYXRpbmcgYSBwYXJtIGlzIGFuIHhvYmogcGFybS4KKwkgVGhlICJ0aGlzIiBz cGVjaWZpZXIgbXVzdCBiZSB0aGUgZmlyc3Qgc3BlY2lmaWVyIGluIHRoZSBkZWNsYXJhdGlvbiwK KwkgYWZ0ZXIgYW55IGF0dHJpYnV0ZXMuICAqLworICAgICAgaWYgKHRva2VuLT5rZXl3b3JkID09 IFJJRF9USElTKQorCXsKKwkgIGNwX2xleGVyX2NvbnN1bWVfdG9rZW4gKHBhcnNlci0+bGV4ZXIp OworCSAgaWYgKHRva2VuICE9IGZpcnN0X3NwZWNpZmllcikKKwkgICAgeworCSAgICAgIC8qIERv bid0IGVtaXQgZGlhZ25vc3RpY3MgaWYgd2UgaGF2ZSBhbHJlYWR5IHNlZW4gInRoaXMiLAorCQkg bGVhdmUgaXQgZm9yIHNldF9hbmRfY2hlY2tfZGVjbF9zcGVjX2xvYy4gICovCisJICAgICAgaWYg KGRlY2xfc3BlY3MtPmxvY2F0aW9uc1tkc190aGlzXSA9PSAwKQorCQl7CisJCSAgYXV0b19kaWFn bm9zdGljX2dyb3VwIGQ7CisJCSAgZ2NjX3JpY2hfbG9jYXRpb24gcmljaGxvYyAodG9rZW4tPmxv Y2F0aW9uKTsKKwkJICAvKiBJZGVhbGx5IHdlIHN5bnRoZXNpemUgYSBmdWxsIHJld3JpdGUsIGF0 IHRoZSBtb21lbnQKKwkJICAgICB0aGVyZSBhcmUgaXNzdWVzIHdpdGggaXQgdGhvdWdoLgorCQkg ICAgIEl0IHJld3JpdGVzICJmKFMgdGhpcyAmIHMpIiBjb3JyZWN0bHksIGJ1dCBmYWlscworCQkg ICAgIHRvIHJld3JpdGUgImYoY29uc3QgdGhpcyBTIHMpIiBjb3JyZWN0bHkuICBJdCBhbHNvCisJ CSAgICAgZG9lcyBub3QgaGFuZGxlICJmKFMmIHRoaXMgcykiIGNvcnJlY3RseSBhdCBhbGwuICAq LworCQkgIHJpY2hsb2MuYWRkX2ZpeGl0X3JlbW92ZSAoKTsKKwkJICByaWNobG9jLmFkZF9maXhp dF9pbnNlcnRfYmVmb3JlIChmaXJzdF9zcGVjaWZpZXItPmxvY2F0aW9uLAorCQkJCQkJICAgInRo aXMgIik7CisJCSAgZXJyb3JfYXQgKCZyaWNobG9jLAorCQkJICAgICIlPHRoaXMlPiBtdXN0IGJl IHRoZSBmaXJzdCBzcGVjaWZpZXIgIgorCQkJICAgICJpbiBhIHBhcmFtZXRlciBkZWNsYXJhdGlv biIpOworCQl9CisJICAgIH0KKwkgIHNldF9hbmRfY2hlY2tfZGVjbF9zcGVjX2xvYyAoZGVjbF9z cGVjcywgZHNfdGhpcywgdG9rZW4pOworCSAgY29udGludWU7CisJfQorCiAgICAgICAvKiBBc3N1 bWUgd2Ugd2lsbCBmaW5kIGEgZGVjbC1zcGVjaWZpZXIga2V5d29yZC4gICovCiAgICAgICBmb3Vu ZF9kZWNsX3NwZWMgPSB0cnVlOwogICAgICAgLyogSWYgdGhlIG5leHQgdG9rZW4gaXMgYW4gYXBw cm9wcmlhdGUga2V5d29yZCwgd2UgY2FuIHNpbXBseQpAQCAtMjU0NjMsMTIgKzI1NTc2LDE0IEBA IGNwX3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24gKGNwX3BhcnNlciAqcGFyc2VyLAogICAv KiBUaGUgcmVzdHJpY3Rpb24gb24gZGVmaW5pbmcgbmV3IHR5cGVzIGFwcGxpZXMgb25seSB0byB0 aGUgdHlwZQogICAgICBvZiB0aGUgcGFyYW1ldGVyLCBub3QgdG8gdGhlIGRlZmF1bHQgYXJndW1l bnQuICAqLwogICBwYXJzZXItPnR5cGVfZGVmaW5pdGlvbl9mb3JiaWRkZW5fbWVzc2FnZSA9IHNh dmVkX21lc3NhZ2U7Ci0KKyAgY3BfdG9rZW4gKmVxX3Rva2VuID0gTlVMTDsKICAgLyogSWYgdGhl IG5leHQgdG9rZW4gaXMgYD0nLCB0aGVuIHByb2Nlc3MgYSBkZWZhdWx0IGFyZ3VtZW50LiAgKi8K ICAgaWYgKGNwX2xleGVyX25leHRfdG9rZW5faXMgKHBhcnNlci0+bGV4ZXIsIENQUF9FUSkpCiAg ICAgewogICAgICAgdHJlZSB0eXBlID0gZGVjbF9zcGVjaWZpZXJzLnR5cGU7CiAgICAgICB0b2tl biA9IGNwX2xleGVyX3BlZWtfdG9rZW4gKHBhcnNlci0+bGV4ZXIpOworICAgICAgLyogVXNlZCBm b3IgZGlhZ25vc3RpY3Mgd2l0aCBhbiB4b2JqIHBhcmFtZXRlci4gICovCisgICAgICBlcV90b2tl biA9IHRva2VuOwogICAgICAgaWYgKGRlY2xhcmF0b3IpCiAJZGVjbGFyYXRvci0+aW5pdF9sb2Mg PSB0b2tlbi0+bG9jYXRpb247CiAgICAgICAvKiBJZiB3ZSBhcmUgZGVmaW5pbmcgYSBjbGFzcywg dGhlbiB0aGUgdG9rZW5zIHRoYXQgbWFrZSB1cCB0aGUKQEAgLTI1NTM3LDYgKzI1NjUyLDI1IEBA IGNwX3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24gKGNwX3BhcnNlciAqcGFyc2VyLAogICBp ZiAoZGVmYXVsdF9hcmd1bWVudCkKICAgICBTVFJJUF9BTllfTE9DQVRJT05fV1JBUFBFUiAoZGVm YXVsdF9hcmd1bWVudCk7CiAKKyAgaWYgKGRlY2xfc3BlY19zZXFfaGFzX3NwZWNfcCAoJmRlY2xf c3BlY2lmaWVycywgZHNfdGhpcykpCisgICAgeworICAgICAgaWYgKGRlZmF1bHRfYXJndW1lbnQp CisJeworCSAgLyogSWYgdGhlcmUgaXMgYSBkZWZhdWx0X2FyZ3VtZW50LCBlcV90b2tlbiBzaG91 bGQgYWx3YXlzIGJlIHNldC4gICovCisJICBnY2NfYXNzZXJ0IChlcV90b2tlbik7CisJICBsb2Nh dGlvbl90IHBhcmFtX3dpdGhfaW5pdF9sb2MKKwkgICAgPSBtYWtlX2xvY2F0aW9uIChlcV90b2tl bi0+bG9jYXRpb24sCisJCQkgICAgIGRlY2xfc3BlY190b2tlbl9zdGFydC0+bG9jYXRpb24sCisJ CQkgICAgIGlucHV0X2xvY2F0aW9uKTsKKwkgIGVycm9yX2F0IChwYXJhbV93aXRoX2luaXRfbG9j LAorCQkgICAgImFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgIgorCQkgICAgIm1heSBub3Qg aGF2ZSBhIGRlZmF1bHQgYXJndW1lbnQiKTsKKwl9CisgICAgICAvKiBYb2JqIHBhcmFtZXRlcnMg Y2FuIG5vdCBoYXZlIGRlZmF1bHQgYXJndW1lbnRzLCB0aHVzCisJIHdlIGNhbiByZXVzZSB0aGUg ZGVmYXVsdCBhcmd1bWVudCBmaWVsZCB0byBmbGFnIHRoZSBwYXJhbSBhcyBzdWNoLiAgKi8KKyAg ICAgIGRlZmF1bHRfYXJndW1lbnQgPSB0aGlzX2lkZW50aWZpZXI7CisgICAgfQorCiAgIC8qIEdl bmVyYXRlIGEgbG9jYXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIsIHJhbmdpbmcgZnJvbSB0aGUgc3Rh cnQgb2YgdGhlCiAgICAgIGluaXRpYWwgdG9rZW4gdG8gdGhlIGVuZCBvZiB0aGUgZmluYWwgdG9r ZW4gKHVzaW5nIGlucHV0X2xvY2F0aW9uIGZvcgogICAgICB0aGUgbGF0dGVyLCBzZXQgdXAgYnkg Y3BfbGV4ZXJfc2V0X3NvdXJjZV9wb3NpdGlvbl9mcm9tX3Rva2VuIHdoZW4KQEAgLTMzODk4LDYg KzM0MDMyLDggQEAgc2V0X2FuZF9jaGVja19kZWNsX3NwZWNfbG9jIChjcF9kZWNsX3NwZWNpZmll cl9zZXEgKmRlY2xfc3BlY3MsCiAJfQogICAgICAgZWxzZQogCXsKKwkgIC8qIFRoZXNlIGNvcnJl c3BvbmQgdG8gY3AtdHJlZS5oOmNwX2RlY2xfc3BlYywKKwkgICAgIGNoYW5nZXMgaGVyZSBzaG91 bGQgYWxzbyBiZSByZWZsZWN0ZWQgdGhlcmUuICAqLwogCSAgc3RhdGljIGNvbnN0IGNoYXIgKmNv bnN0IGRlY2xfc3BlY19uYW1lc1tdID0gewogCSAgICAic2lnbmVkIiwKIAkgICAgInVuc2lnbmVk IiwKQEAgLTMzOTE1LDcgKzM0MDUxLDggQEAgc2V0X2FuZF9jaGVja19kZWNsX3NwZWNfbG9jIChj cF9kZWNsX3NwZWNpZmllcl9zZXEgKmRlY2xfc3BlY3MsCiAJICAgICJjb25zdGV4cHIiLAogCSAg ICAiX19jb21wbGV4IiwKIAkgICAgImNvbnN0aW5pdCIsCi0JICAgICJjb25zdGV2YWwiCisJICAg ICJjb25zdGV2YWwiLAorCSAgICAidGhpcyIKIAkgIH07CiAJICBnY2NfcmljaF9sb2NhdGlvbiBy aWNobG9jIChsb2NhdGlvbik7CiAJICByaWNobG9jLmFkZF9maXhpdF9yZW1vdmUgKCk7CmRpZmYg LS1naXQgYS9nY2MvY3AvcHQuY2MgYi9nY2MvY3AvcHQuY2MKaW5kZXggZDEyZDU3Njg2ZjIuLjc0 NzNlZDRhNDFmIDEwMDY0NAotLS0gYS9nY2MvY3AvcHQuY2MKKysrIGIvZ2NjL2NwL3B0LmNjCkBA IC0xNDM5MSw5ICsxNDM5MSw5IEBAIHRzdWJzdF9mdW5jdGlvbl9kZWNsICh0cmVlIHQsIHRyZWUg YXJncywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4sCiAgIHRyZWUgY3R4ID0gY2xvc3VyZSA/IGNs b3N1cmUgOiBERUNMX0NPTlRFWFQgKHQpOwogICBib29sIG1lbWJlciA9IGN0eCAmJiBUWVBFX1Ag KGN0eCk7CiAKLSAgLyogSWYgdGhpcyBpcyBhIHN0YXRpYyBsYW1iZGEsIHJlbW92ZSB0aGUgJ3Ro aXMnIHBvaW50ZXIgYWRkZWQgaW4KKyAgLyogSWYgdGhpcyBpcyBhIHN0YXRpYyBvciB4b2JqIGxh bWJkYSwgcmVtb3ZlIHRoZSAndGhpcycgcG9pbnRlciBhZGRlZCBpbgogICAgICB0c3Vic3RfbGFt YmRhX2V4cHIgbm93IHRoYXQgd2Uga25vdyB0aGUgY2xvc3VyZSB0eXBlLiAgKi8KLSAgaWYgKGxh bWJkYV9mbnR5cGUgJiYgREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAodCkpCisgIGlmIChsYW1iZGFf Zm50eXBlICYmICFERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKHQpKQogICAgIGxhbWJkYV9m bnR5cGUgPSBzdGF0aWNfZm5fdHlwZSAobGFtYmRhX2ZudHlwZSk7CiAKICAgaWYgKG1lbWJlciAm JiAhY2xvc3VyZSkKQEAgLTE0NDY4LDEyICsxNDQ2OCwxMiBAQCB0c3Vic3RfZnVuY3Rpb25fZGVj bCAodHJlZSB0LCB0cmVlIGFyZ3MsIHRzdWJzdF9mbGFnc190IGNvbXBsYWluLAogICAgIERFQ0xf TkFNRSAocikgPSBtYWtlX2NvbnZfb3BfbmFtZSAoVFJFRV9UWVBFICh0eXBlKSk7CiAKICAgdHJl ZSBwYXJtcyA9IERFQ0xfQVJHVU1FTlRTICh0KTsKLSAgaWYgKGNsb3N1cmUgJiYgIURFQ0xfU1RB VElDX0ZVTkNUSU9OX1AgKHQpKQorICBpZiAoY2xvc3VyZSAmJiBERUNMX0lPQkpfTUVNQkVSX0ZV TkNUSU9OX1AgKHQpKQogICAgIHBhcm1zID0gREVDTF9DSEFJTiAocGFybXMpOwogICBwYXJtcyA9 IHRzdWJzdCAocGFybXMsIGFyZ3MsIGNvbXBsYWluLCB0KTsKICAgZm9yICh0cmVlIHBhcm0gPSBw YXJtczsgcGFybTsgcGFybSA9IERFQ0xfQ0hBSU4gKHBhcm0pKQogICAgIERFQ0xfQ09OVEVYVCAo cGFybSkgPSByOwotICBpZiAoY2xvc3VyZSAmJiAhREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAodCkp CisgIGlmIChjbG9zdXJlICYmIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAodCkpCiAgICAg ewogICAgICAgdHJlZSB0cGFybSA9IGJ1aWxkX3RoaXNfcGFybSAociwgY2xvc3VyZSwgdHlwZV9t ZW1mbl9xdWFscyAodHlwZSkpOwogICAgICAgREVDTF9OQU1FICh0cGFybSkgPSBjbG9zdXJlX2lk ZW50aWZpZXI7CkBAIC0xNDUwOSw2ICsxNDUwOSw2NiBAQCB0c3Vic3RfZnVuY3Rpb25fZGVjbCAo dHJlZSB0LCB0cmVlIGFyZ3MsIHRzdWJzdF9mbGFnc190IGNvbXBsYWluLAogICAgICAgJiYgIWdy b2tfb3BfcHJvcGVydGllcyAociwgLypjb21wbGFpbj0qL2ZhbHNlKSkKICAgICByZXR1cm4gZXJy b3JfbWFya19ub2RlOwogCisgIC8qIElmIHdlIGFyZSBsb29raW5nIGF0IGFuIHhvYmogbGFtYmRh LCB3ZSBtaWdodCBuZWVkIHRvIGNoZWNrIHRoZSB0eXBlIG9mCisgICAgIGl0cyB4b2JqIHBhcmFt ZXRlci4gICovCisgIGlmIChMQU1CREFfRlVOQ1RJT05fUCAocikgJiYgREVDTF9YT0JKX01FTUJF Ul9GVU5DVElPTl9QIChyKSkKKyAgICB7CisgICAgICB0cmVlIGNsb3N1cmVfb2JqID0gREVDTF9D T05URVhUIChyKTsKKyAgICAgIHRyZWUgbGFtYmRhX2V4cHIgPSBDTEFTU1RZUEVfTEFNQkRBX0VY UFIgKGNsb3N1cmVfb2JqKTsKKyAgICAgIHRyZWUgb2JqX3BhcmFtID0gVFJFRV9UWVBFIChERUNM X0FSR1VNRU5UUyAocikpOworCisgICAgICBpZiAoIShMQU1CREFfRVhQUl9ERUZBVUxUX0NBUFRV UkVfTU9ERSAobGFtYmRhX2V4cHIpICE9IENQTERfTk9ORQorCSAgICB8fCBMQU1CREFfRVhQUl9D QVBUVVJFX0xJU1QgKGxhbWJkYV9leHByKSkpCisJLyogSWYgYSBsYW1iZGEgaGFzIGFuIGVtcHR5 IGNhcHR1cmUgY2xhdXNlLCBhbiB4b2JqIHBhcmFtZXRlciBvZgorCSAgIHVucmVsYXRlZCB0eXBl IGlzIG5vdCBhbiBlcnJvci4gICovOworICAgICAgZWxzZSBpZiAoZGVwZW5kZW50X3R5cGVfcCAo b2JqX3BhcmFtKSkKKwkvKiBJZiB3ZSBhcmUgY29taW5nIGZyb20gdHN1YnN0X2xhbWJkYV9leHBy IHdlIG1pZ2h0IG5vdCBoYXZlCisJICAgc3Vic3RpdHV0ZWQgaW50byBvdXIgeG9iaiBwYXJhbWV0 ZXIgeWV0LiAgV2UgY2FuJ3QgZXJyb3Igb3V0IHVudGlsCisJICAgd2Uga25vdyB3aGF0IHRoZSB0 eXBlIHJlYWxseSBpcyBzbyBkbyBub3RoaW5nLi4uCisJICAgLi4uYnV0IGlmIHdlIGFyZSBpbnN0 YW50aWF0aW5nIHRoZSBjYWxsIG9wIGZvciByZWFsIGFuZCB3ZSBkb24ndAorCSAgIGhhdmUgYSBy ZWFsIHR5cGUgdGhlbiBzb21ldGhpbmcgaGFzIGdvbmUgaW5jcmVkaWJseSB3cm9uZy4gICovCisJ Z2NjX2Fzc2VydCAobGFtYmRhX2ZudHlwZSk7CisgICAgICBlbHNlCisJeworCSAgLyogV2UgaGF2 ZSBhIGxhbWJkYSB3aXRoIGNhcHR1cmVzLCBhbmQga25vdyB0aGUgdHlwZSBvZiB0aGUgeG9iagor CSAgICAgcGFyYW1ldGVyLCB0aW1lIHRvIGNoZWNrIGl0LiAgKi8KKwkgIHRyZWUgb2JqX3BhcmFt X3R5cGUgPSBUWVBFX01BSU5fVkFSSUFOVCAobm9uX3JlZmVyZW5jZSAob2JqX3BhcmFtKSk7CisJ ICBpZiAoIXNhbWVfb3JfYmFzZV90eXBlX3AgKGNsb3N1cmVfb2JqLCBvYmpfcGFyYW1fdHlwZSkp CisJICAgIHsKKwkgICAgICAvKiBUaGlzIGVycm9yIGRvZXMgbm90IGVtaXQgd2hlbiB0aGUgbGFt YmRhJ3MgY2FsbCBvcGVyYXRvcgorCQkgdGVtcGxhdGUgaXMgaW5zdGFudGlhdGVkIGJ5IHRha2lu ZyBpdHMgYWRkcmVzcywgc3VjaCBhcyBpbgorCQkgdGhlIGZvbGxvd2luZyBjYXNlOgorCisJCSBh dXRvIGYgPSBbeCA9IDBdKHRoaXMgYXV0byYmKXt9OworCQkgaW50ICgqZnApKGludCYpID0gJmRl Y2x0eXBlKGYpOjpvcGVyYXRvcigpOworCisJCSBJdCBvbmx5IGVtaXRzIHdoZW4gZXhwbGljaXRs eSBjYWxsaW5nIHRoZSBjYWxsIG9wZXJhdG9yIHdpdGgKKwkJIGFuIGV4cGxpY2l0IHRlbXBsYXRl IHBhcmFtZXRlcjoKKworCQkgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKwkJIHN0cnVjdCBTIDogVCB7 CisJCSAgIHVzaW5nIFQ6Om9wZXJhdG9yKCk7CisJCSAgIG9wZXJhdG9yIGludCgpIGNvbnN0IHty ZXR1cm4ge307fQorCQkgfTsKKworCQkgYXV0byBzID0gU3tbeCA9IDBdKHRoaXMgYXV0byYmKSB7 fX07CisJCSBzLm9wZXJhdG9yKCk8aW50PigpOworCisJCSBUaGlzIGlzIGR1ZSB0byByZXNvbHZl X2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbiBiZWluZworCQkgZGVmaWNpZW50IGF0IHJl cG9ydGluZyBjYW5kaWRhdGVzIHdoZW4gb3ZlcmxvYWQgcmVzb2x1dGlvbgorCQkgZmFpbHMuCisK KwkJIFRoaXMgZGlhZ25vc3RpYyB3aWxsIGJlIGFjdGl2ZSBpbiB0aGUgZmlyc3QgY2FzZSBpZi93 aGVuCisJCSByZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbiBpcyBmaXhlZCB0 byBwcm9wZXJseQorCQkgZW1pdCBjYW5kaWRhdGVzIHVwb24gZmFpbHVyZSB0byByZXNvbHZlIHRv IGFuIG92ZXJsb2FkLiAgKi8KKwkgICAgICBpZiAoY29tcGxhaW4gJiB0Zl9lcnJvcikKKwkJZXJy b3IgKCJhIGxhbWJkYSB3aXRoIGNhcHR1cmVzIG1heSBub3QgaGF2ZSBhbiBleHBsaWNpdCAiCisJ CSAgICAgICAib2JqZWN0IHBhcmFtZXRlciBvZiBhbiB1bnJlbGF0ZWQgdHlwZSIpOworCSAgICAg IHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisJICAgIH0KKwl9CisgICAgfQorCiAgIC8qIEFzc29j aWF0ZSB0aGUgY29uc3RyYWludHMgZGlyZWN0bHkgd2l0aCB0aGUgaW5zdGFudGlhdGlvbi4gV2UK ICAgICAgZG9uJ3Qgc3Vic3RpdHV0ZSB0aHJvdWdoIHRoZSBjb25zdHJhaW50czsgdGhhdCdzIG9u bHkgZG9uZSB3aGVuCiAgICAgIHRoZXkgYXJlIGNoZWNrZWQuICAqLwpAQCAtMTk0NzMsNyArMTk1 MzMsMTEgQEAgdHN1YnN0X2xhbWJkYV9leHByICh0cmVlIHQsIHRyZWUgYXJncywgdHN1YnN0X2Zs YWdzX3QgY29tcGxhaW4sIHRyZWUgaW5fZGVjbCkKIAkgd2hpY2ggd291bGQgYmUgc2tpcHBlZCBp ZiBjcF91bmV2YWx1YXRlZF9vcGVyYW5kLiAgKi8KICAgICAgIGNwX2V2YWx1YXRlZCBldjsKIAot ICAgICAgLyogRml4IHRoZSB0eXBlIG9mICd0aGlzJy4gICovCisgICAgICAvKiBGaXggdGhlIHR5 cGUgb2YgJ3RoaXMnLgorCSBGb3Igc3RhdGljIGFuZCB4b2JqIG1lbWJlciBmdW5jdGlvbnMgd2Ug dXNlIHRoaXMgdG8gdHJhbnNwb3J0IHRoZQorCSBsYW1iZGEncyBjbG9zdXJlIHR5cGUuICBJdCBh cHBlYXJzIHRoYXQgaW4gdGhlIHJlZ3VsYXIgY2FzZSB0aGUKKwkgb2JqZWN0IHBhcmFtZXRlciBp cyBzdGlsbCBwdWxsZWQgb2ZmLCBhbmQgdGhlbiByZS1hZGRlZCBhZ2FpbiBhbnl3YXkuCisJIFNv IHBlcmhhcHMgd2UgY291bGQgZG8gc29tZXRoaW5nIGJldHRlciBoZXJlPyAgKi8KICAgICAgIGZu dHlwZSA9IGJ1aWxkX21lbWZuX3R5cGUgKGZudHlwZSwgdHlwZSwKIAkJCQkgdHlwZV9tZW1mbl9x dWFscyAoZm50eXBlKSwKIAkJCQkgdHlwZV9tZW1mbl9ycXVhbCAoZm50eXBlKSk7CkBAIC0yNTE5 NywxNCArMjUyNjEsMTQgQEAgbW9yZV9zcGVjaWFsaXplZF9mbiAodHJlZSBwYXQxLCB0cmVlIHBh dDIsIGludCBsZW4pCiAgICAgIGFsc28uICBUaGlzIHNpdHVhdGlvbiBvY2N1cnMgZm9yIG9wZXJh dG9yIGZ1bmN0aW9ucyB3aGVyZSB3ZQogICAgICBsb2NhdGUgYm90aCBhIG1lbWJlciBmdW5jdGlv biAod2l0aCB0aGlzIHBvaW50ZXIpIGFuZCBub24tbWVtYmVyCiAgICAgIG9wZXJhdG9yICh3aXRo IGV4cGxpY2l0IGZpcnN0IG9wZXJhbmQpLiAgKi8KLSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJF Ul9GVU5DVElPTl9QIChkZWNsMSkpCisgIGlmIChERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05f UCAoZGVjbDEpKQogICAgIHsKICAgICAgIGxlbi0tOyAvKiBMRU4gaXMgdGhlIG51bWJlciBvZiBz aWduaWZpY2FudCBhcmd1bWVudHMgZm9yIERFQ0wxICovCiAgICAgICBhcmdzMSA9IFRSRUVfQ0hB SU4gKGFyZ3MxKTsKICAgICAgIGlmICghREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZGVjbDIpKQog CWFyZ3MyID0gVFJFRV9DSEFJTiAoYXJnczIpOwogICAgIH0KLSAgZWxzZSBpZiAoREVDTF9OT05T VEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wyKSkKKyAgZWxzZSBpZiAoREVDTF9PQkpFQ1Rf TUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wyKSkKICAgICB7CiAgICAgICBhcmdzMiA9IFRSRUVfQ0hB SU4gKGFyZ3MyKTsKICAgICAgIGlmICghREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZGVjbDEpKQpk aWZmIC0tZ2l0IGEvZ2NjL2NwL3NlYXJjaC5jYyBiL2djYy9jcC9zZWFyY2guY2MKaW5kZXggYWM3 OWI2MjViNmUuLmVmZWE1MDc4OTkyIDEwMDY0NAotLS0gYS9nY2MvY3Avc2VhcmNoLmNjCisrKyBi L2djYy9jcC9zZWFyY2guY2MKQEAgLTcxMyw2ICs3MTMsOCBAQCBwcm90ZWN0ZWRfYWNjZXNzaWJs ZV9wICh0cmVlIGRlY2wsIHRyZWUgZGVyaXZlZCwgdHJlZSB0eXBlLCB0cmVlIG90eXBlKQogICAg ICBkZXJpdmVkIGZyb20gdGhhdCBjbGFzcykgKF9leHByLnJlZl8pLiAgSWYgdGhlIGFjY2VzcyBp cyB0byBmb3JtCiAgICAgIGEgcG9pbnRlciB0byBtZW1iZXIsIHRoZSBuZXN0ZWQtbmFtZS1zcGVj aWZpZXIgc2hhbGwgbmFtZSB0aGUKICAgICAgZGVyaXZlZCBjbGFzcyAob3IgYW55IGNsYXNzIGRl cml2ZWQgZnJvbSB0aGF0IGNsYXNzKS4gICovCisgIC8qIFdpbGwgdGhpcyBjYXVzZSBwcm9ibGVt cyBmb3IgeG9iaiBtZW1iZXIgZnVuY3Rpb25zPworICAgICBXZSBkZWZpbml0ZWx5IG5lZWQgdGVz dHMgZm9yIHRoaXMgY2FzZS4gICovCiAgIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfUCAoZGVj bCkKICAgICAgICYmICFERVJJVkVEX0ZST01fUCAoZGVyaXZlZCwgb3R5cGUpKQogICAgIHJldHVy biAwOwpAQCAtMjIyMywxMCArMjIyNSwxMyBAQCBsb29rX2Zvcl9vdmVycmlkZXNfaGVyZSAodHJl ZSB0eXBlLCB0cmVlIGZuZGVjbCkKIAkvKiBOb3QgYSB2aXJ0dWFsLiAgKi87CiAgICAgICBlbHNl IGlmIChERUNMX0NPTlRFWFQgKGZuKSAhPSB0eXBlKQogCS8qIEludHJvZHVjZWQgd2l0aCBhIHVz aW5nIGRlY2xhcmF0aW9uLiAgKi87Ci0gICAgICBlbHNlIGlmIChERUNMX1NUQVRJQ19GVU5DVElP Tl9QIChmbmRlY2wpKQorICAgICAgZWxzZSBpZiAoREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZm5k ZWNsKQorCSAgICAgICB8fCBERUNMX1hPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuZGVjbCkpCiAJ ewogCSAgdHJlZSBidHlwZXMgPSBUWVBFX0FSR19UWVBFUyAoVFJFRV9UWVBFIChmbikpOwogCSAg dHJlZSBkdHlwZXMgPSBUWVBFX0FSR19UWVBFUyAoVFJFRV9UWVBFIChmbmRlY2wpKTsKKwkgIGR0 eXBlcyA9IERFQ0xfWE9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZm5kZWNsKSA/IFRSRUVfQ0hBSU4g KGR0eXBlcykKKwkJCQkJCQk6IGR0eXBlczsKIAkgIGlmIChjb21wcGFybXMgKFRSRUVfQ0hBSU4g KGJ0eXBlcyksIGR0eXBlcykpCiAJICAgIHJldHVybiBmbjsKIAl9CkBAIC0yMjU0LDYgKzIyNTks MTUgQEAgbG9va19mb3Jfb3ZlcnJpZGVzX3IgKHRyZWUgdHlwZSwgdHJlZSBmbmRlY2wpCiAJICBl cnJvciAoIiVxKyNEIGNhbm5vdCBiZSBkZWNsYXJlZCIsIGZuZGVjbCk7CiAJICBlcnJvciAoIiAg c2luY2UgJXErI0QgZGVjbGFyZWQgaW4gYmFzZSBjbGFzcyIsIGZuKTsKIAl9CisgICAgICBlbHNl IGlmIChERUNMX1hPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuZGVjbCkpCisJeworCSAgYXV0b19k aWFnbm9zdGljX2dyb3VwIGQ7CisJICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKGZu ZGVjbCksCisJCSAgICAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAiCisJCSAgICAi b3ZlcnJpZGVzIHZpcnR1YWwgZnVuY3Rpb24iKTsKKwkgIGluZm9ybSAoREVDTF9TT1VSQ0VfTE9D QVRJT04gKGZuKSwKKwkJICAidmlydHVhbCBmdW5jdGlvbiBkZWNsYXJlZCBoZXJlIik7CisJfQog ICAgICAgZWxzZQogCXsKIAkgIC8qIEl0J3MgZGVmaW5pdGVseSB2aXJ0dWFsLCBldmVuIGlmIG5v dCBleHBsaWNpdGx5IHNldC4gICovCmRpZmYgLS1naXQgYS9nY2MvY3Avc2VtYW50aWNzLmNjIGIv Z2NjL2NwL3NlbWFudGljcy5jYwppbmRleCBmYmJjMTgzMzZhMC4uOWY0YzVhOTFmNTYgMTAwNjQ0 Ci0tLSBhL2djYy9jcC9zZW1hbnRpY3MuY2MKKysrIGIvZ2NjL2NwL3NlbWFudGljcy5jYwpAQCAt NDUsNiArNDUsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYg bm90IHNlZQogI2luY2x1ZGUgImdvbXAtY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAicHJlZGljdC5o IgogI2luY2x1ZGUgIm1lbW1vZGVsLmgiCisjaW5jbHVkZSAiZ2NjLXJpY2gtbG9jYXRpb24uaCIK IAogLyogVGhlcmUgcm91dGluZXMgcHJvdmlkZSBhIG1vZHVsYXIgaW50ZXJmYWNlIHRvIHBlcmZv cm0gbWFueSBwYXJzaW5nCiAgICBvcGVyYXRpb25zLiAgVGhleSBtYXkgdGhlcmVmb3JlIGJlIHVz ZWQgZHVyaW5nIGFjdHVhbCBwYXJzaW5nLCBvcgpAQCAtMzA5Myw3ICszMDk0LDMxIEBAIGZpbmlz aF90aGlzX2V4cHIgKHZvaWQpCiAgICAgcmV0dXJuIHJ2YWx1ZSAocmVzdWx0KTsKIAogICB0cmVl IGZuID0gY3VycmVudF9ub25sYW1iZGFfZnVuY3Rpb24gKCk7Ci0gIGlmIChmbiAmJiBERUNMX1NU QVRJQ19GVU5DVElPTl9QIChmbikpCisgIGlmIChmbiAmJiBERUNMX1hPQkpfTUVNQkVSX0ZVTkNU SU9OX1AgKGZuKSkKKyAgICB7CisgICAgICBhdXRvX2RpYWdub3N0aWNfZ3JvdXAgZDsKKyAgICAg IGVycm9yICgiJTx0aGlzJT4gaXMgdW5hdmFpbGFibGUgZm9yIGV4cGxpY2l0IG9iamVjdCBtZW1i ZXIgIgorCSAgICAgImZ1bmN0aW9ucyIpOworICAgICAgLyogRG9pbmcgYSBmaXhpdCBoZXJlIGlz IHBvc3NpYmxlLCBidXQgaGFyZCwgbWlnaHQgYmUgd29ydGh3aGlsZQorCSBpbiB0aGUgZnV0dXJl LiAgKi8KKyAgICAgIHRyZWUgeG9ial9wYXJtID0gREVDTF9BUkdVTUVOVFMgKGZuKTsKKyAgICAg IGdjY19hc3NlcnQgKHhvYmpfcGFybSk7CisgICAgICB0cmVlIHBhcm1fbmFtZSA9IERFQ0xfTkFN RSAoeG9ial9wYXJtKTsKKyAgICAgIGlmIChwYXJtX25hbWUpCisJaW5mb3JtIChERUNMX1NPVVJD RV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJInVzZSBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVy ICVxRCBpbnN0ZWFkIiwKKwkJcGFybV9uYW1lKTsKKyAgICAgIGVsc2UKKwl7CisJICBnY2Nfcmlj aF9sb2NhdGlvbiB4b2JqX2xvYyAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSkpOwor CSAgLyogVGhpcyBkb2Vzbid0IHdvcmsgYW5kIEkgZG9uJ3Qga25vdyB3aHkuICBJJ2xsIHByb2Jh Ymx5IHJlbW92ZSBpdAorCSAgICAgYmVmb3JlIHRoZSBmaW5hbCB2ZXJzaW9uLiAgKi8KKwkgIHhv YmpfbG9jLmFkZF9maXhpdF9pbnNlcnRfYWZ0ZXIgKCIgc2VsZiIpOworCSAgaW5mb3JtIChERUNM X1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJICAibmFtZSBhbmQgdXNlIHRoZSBleHBs aWNpdCBvYmplY3QgcGFyYW1ldGVyIGluc3RlYWQiKTsKKwl9CisgICAgfQorICBlbHNlIGlmIChm biAmJiBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChmbikpCiAgICAgZXJyb3IgKCIlPHRoaXMlPiBp cyB1bmF2YWlsYWJsZSBmb3Igc3RhdGljIG1lbWJlciBmdW5jdGlvbnMiKTsKICAgZWxzZSBpZiAo Zm4gJiYgcHJvY2Vzc2luZ19jb250cmFjdF9jb25kaXRpb24gJiYgREVDTF9DT05TVFJVQ1RPUl9Q IChmbikpCiAgICAgZXJyb3IgKCJpbnZhbGlkIHVzZSBvZiAlPHRoaXMlPiBiZWZvcmUgaXQgaXMg dmFsaWQiKTsKQEAgLTEyODEyLDkgKzEyODM3LDExIEBAIGNhcHR1cmVfZGVjbHR5cGUgKHRyZWUg ZGVjbCkKICAgICAgIGlmIChXSUxEQ0FSRF9UWVBFX1AgKG5vbl9yZWZlcmVuY2UgKG9idHlwZSkp KQogCS8qIFdlIGRvbid0IGtub3cgd2hhdCB0aGUgZXZlbnR1YWwgb2J0eXBlIHF1YWxzIHdpbGwg YmUuICAqLwogCXJldHVybiBOVUxMX1RSRUU7Ci0gICAgICBpbnQgcXVhbHMgPSBjcF90eXBlX3F1 YWxzICh0eXBlKTsKLSAgICAgIGlmIChJTkRJUkVDVF9UWVBFX1AgKG9idHlwZSkpCi0JcXVhbHMg fD0gY3BfdHlwZV9xdWFscyAoVFJFRV9UWVBFIChvYnR5cGUpKTsKKyAgICAgIC8qIFRoaXMgY2hh bmdlIHBvc3NpYmx5IGNvbmZsaWN0cyB3aXRoIGFub3RoZXIgcGF0Y2ggdGhhdCBpcyBjdXJyZW50 bHkKKwkgaW4gZmxpZ2h0LiAoUGF0cmljayBQYWxrYSdzIFBSODMxNjcgcGF0Y2gpIEkgYW0ganVz dCBjaGFuZ2luZyBpdCBmb3IKKwkgbm93IHRvIHNhdGlzZnkgbXkgdGVzdHMuICAqLworICAgICAg aW50IGNvbnN0IHF1YWxzID0gY3BfdHlwZV9xdWFscyAodHlwZSkKKwkJICAgICAgfCBjcF90eXBl X3F1YWxzIChUUkVFX1RZUEUgKG9idHlwZSkpOwogICAgICAgdHlwZSA9IGNwX2J1aWxkX3F1YWxp ZmllZF90eXBlICh0eXBlLCBxdWFscyk7CiAgICAgICB0eXBlID0gYnVpbGRfcmVmZXJlbmNlX3R5 cGUgKHR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL2djYy9jcC90cmVlLmNjIGIvZ2NjL2NwL3Ry ZWUuY2MKaW5kZXggZTBiOWQ1MTJhZGMuLmFjMDViZmZlYTNmIDEwMDY0NAotLS0gYS9nY2MvY3Av dHJlZS5jYworKysgYi9nY2MvY3AvdHJlZS5jYwpAQCAtMzY3Myw3ICszNjczLDcgQEAgYnVpbGRf bWluX25vbl9kZXBfb3Bfb3ZlcmxvYWQgKGVudW0gdHJlZV9jb2RlIG9wLAogICBuYXJncyA9IGNh bGxfZXhwcl9uYXJncyAobm9uX2RlcCk7CiAKICAgZXhwZWN0ZWRfbmFyZ3MgPSBjcF90cmVlX2Nv ZGVfbGVuZ3RoIChvcCk7Ci0gIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAob3ZlcmxvYWQpKSA9 PSBNRVRIT0RfVFlQRQorICBpZiAoREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNUSU9OX1AgKG92ZXJs b2FkKQogICAgICAgLyogRm9yIEFSUkFZX1JFRiwgb3BlcmF0b3JbXSBpcyBlaXRoZXIgYSBub24t c3RhdGljIG1lbWJlciBvciBuZXdseQogCSBzdGF0aWMgbWVtYmVyLCBuZXZlciBvdXQgb2YgY2xh c3MgYW5kIGZvciB0aGUgc3RhdGljIG1lbWJlciBjYXNlCiAJIGlmIHVzZXIgdXNlcyBzaW5nbGUg aW5kZXggdGhlIG9wZXJhdG9yW10gbmVlZHMgdG8gaGF2ZSBhIHNpbmdsZQpAQCAtMzY5MSw3ICsz NjkxLDcgQEAgYnVpbGRfbWluX25vbl9kZXBfb3Bfb3ZlcmxvYWQgKGVudW0gdHJlZV9jb2RlIG9w LAogICByZWxlYXNpbmdfdmVjIGFyZ3M7CiAgIHZhX3N0YXJ0IChwLCBvdmVybG9hZCk7CiAKLSAg aWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChvdmVybG9hZCkpID09IEZVTkNUSU9OX1RZUEUpCisg IGlmICghREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNUSU9OX1AgKG92ZXJsb2FkKSkKICAgICB7CiAg ICAgICBmbiA9IG92ZXJsb2FkOwogICAgICAgaWYgKG9wID09IEFSUkFZX1JFRikKQEAgLTM3MDIs NyArMzcwMiw3IEBAIGJ1aWxkX21pbl9ub25fZGVwX29wX292ZXJsb2FkIChlbnVtIHRyZWVfY29k ZSBvcCwKIAkgIHZlY19zYWZlX3B1c2ggKGFyZ3MsIGFyZyk7CiAJfQogICAgIH0KLSAgZWxzZSBp ZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKG92ZXJsb2FkKSkgPT0gTUVUSE9EX1RZUEUpCisgIGVs c2UKICAgICB7CiAgICAgICB0cmVlIG9iamVjdCA9IHZhX2FyZyAocCwgdHJlZSk7CiAgICAgICB0 cmVlIGJpbmZvID0gVFlQRV9CSU5GTyAoVFJFRV9UWVBFIChvYmplY3QpKTsKQEAgLTM3MTUsOCAr MzcxNSw2IEBAIGJ1aWxkX21pbl9ub25fZGVwX29wX292ZXJsb2FkIChlbnVtIHRyZWVfY29kZSBv cCwKIAkgIHZlY19zYWZlX3B1c2ggKGFyZ3MsIGFyZyk7CiAJfQogICAgIH0KLSAgZWxzZQotICAg IGdjY191bnJlYWNoYWJsZSAoKTsKIAogICB2YV9lbmQgKHApOwogICBjYWxsID0gYnVpbGRfbWlu X25vbl9kZXBfY2FsbF92ZWMgKG5vbl9kZXAsIGZuLCBhcmdzKTsKQEAgLTM3NDMsNyArMzc0MSw3 IEBAIGJ1aWxkX21pbl9ub25fZGVwX29wX292ZXJsb2FkICh0cmVlIG5vbl9kZXAsIHRyZWUgb3Zl cmxvYWQsIHRyZWUgb2JqZWN0LAogCiAgIHVuc2lnbmVkIGludCBuYXJncyA9IGNhbGxfZXhwcl9u YXJncyAobm9uX2RlcCk7CiAgIHRyZWUgZm4gPSBvdmVybG9hZDsKLSAgaWYgKFRSRUVfQ09ERSAo VFJFRV9UWVBFIChvdmVybG9hZCkpID09IE1FVEhPRF9UWVBFKQorICBpZiAoREVDTF9PQkpFQ1Rf TUVNQkVSX0ZVTkNUSU9OX1AgKG92ZXJsb2FkKSkKICAgICB7CiAgICAgICB0cmVlIGJpbmZvID0g VFlQRV9CSU5GTyAoVFJFRV9UWVBFIChvYmplY3QpKTsKICAgICAgIHRyZWUgbWV0aG9kID0gYnVp bGRfYmFzZWxpbmsgKGJpbmZvLCBiaW5mbywgb3ZlcmxvYWQsIE5VTExfVFJFRSk7CmRpZmYgLS1n aXQgYS9nY2MvY3AvdHlwZWNrLmNjIGIvZ2NjL2NwL3R5cGVjay5jYwppbmRleCBiZjhmZmFhN2U3 NS4uNzM3MDc2MjRjZTQgMTAwNjQ0Ci0tLSBhL2djYy9jcC90eXBlY2suY2MKKysrIGIvZ2NjL2Nw L3R5cGVjay5jYwpAQCAtMjMzOSw3ICsyMzM5LDEwIEBAIGN4eF9hbGlnbmFzX2V4cHIgKHRyZWUg ZSkKICAgICAgdXNlZCBvbmx5IGFzIHRoZSBvcGVyYW5kIGZvciB0aGUgZnVuY3Rpb24gY2FsbCBv cGVyYXRvciAoKS4KIAogICAgYnkgaXNzdWluZyBhbiBlcnJvciBtZXNzYWdlIGlmIGFwcHJvcHJp YXRlLiAgUmV0dXJucyB0cnVlIGlmZiBFWFBSCi0gICB2aW9sYXRlcyB0aGVzZSBydWxlcy4gICov CisgICB2aW9sYXRlcyB0aGVzZSBydWxlcy4KKworICAgVGhlIG5hbWUgIm5vbnN0YXRpYyIgaXMg bm8gbG9uZ2VyIGFjY3VyYXRlIHdpdGggdGhlIGFkZGl0aW9uIG9mCisgICB4b2JqIG1lbWJlciBm dW5jdGlvbnMsIHNob3VsZCB3ZSBjaGFuZ2UgdGhlIG5hbWU/ICAqLwogCiBib29sCiBpbnZhbGlk X25vbnN0YXRpY19tZW1mbl9wIChsb2NhdGlvbl90IGxvYywgdHJlZSBleHByLCB0c3Vic3RfZmxh Z3NfdCBjb21wbGFpbikKQEAgLTIzNTIsNyArMjM1NSw3IEBAIGludmFsaWRfbm9uc3RhdGljX21l bWZuX3AgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGV4cHIsIHRzdWJzdF9mbGFnc190IGNvbXBsYWlu KQogICBpZiAoaXNfb3ZlcmxvYWRlZF9mbiAoZXhwcikgJiYgIXJlYWxseV9vdmVybG9hZGVkX2Zu IChleHByKSkKICAgICBleHByID0gZ2V0X2ZpcnN0X2ZuIChleHByKTsKICAgaWYgKFRSRUVfVFlQ RSAoZXhwcikKLSAgICAgICYmIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChleHBy KSkKKyAgICAgICYmIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZXhwcikpCiAgICAgewog ICAgICAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3IpCiAJewpAQCAtNzE3NCw2ICs3MTc3LDI0IEBA IGNwX2J1aWxkX2FkZHJfZXhwcl8xICh0cmVlIGFyZywgYm9vbCBzdHJpY3RfbHZhbHVlLCB0c3Vi c3RfZmxhZ3NfdCBjb21wbGFpbikKIAogICAgIGNhc2UgQkFTRUxJTks6CiAgICAgICBhcmcgPSBC QVNFTElOS19GVU5DVElPTlMgKGFyZyk7CisgICAgICAvKiBJZiB3ZSBhcmUgcGFzc2VkIGEgQkFT RUxJTkssIHRoZSBvcGVyYW5kIG9mIHRoZSBhZGRyZXNzLW9mIG9wZXJhdG9yCisJIHdhcyBub3Qg cXVhbGlmaWVkLCB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYSBub24tc3RhdGljIG1lbWJlciBmdW5j dGlvbgorCSBtdXN0IGJlIHF1YWxpZmllZCBieSB0aGUgY2xhc3MuCisJIEl0J3MgcG9zc2libGUg d2Ugc2hvdWxkbid0IGJlIG1ha2luZyB0aGlzIGJhc2VsaW5rIG9wdGltaXphdGlvbiBmb3IKKwkg eG9iaiBtZW1iZXIgZnVuY3Rpb25zIGF0IGFsbCwgd2Ugc2hvdWxkIGV2YWx1YXRlIHRoYXQgbGF0 ZXIuICAqLworICAgICAgaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoYXJnKSkKKwl7 CisJICAvKiBFcnJvciBzaG91bGQgbWF0Y2ggdGhhdCBpbgorCSAgICAgY2xhc3MuY2M6cmVzb2x2 ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24uCisJICAgICBXZSByZWFsbHkgc2hvdWxk IGRvIGEgZml4aXQgaGVyZS4gICovCisJICBlcnJvcl9hdCAoaW5wdXRfbG9jYXRpb24sCisJCSAg ICAidGFraW5nIHRoZSBhZGRyZXNzIG9mIGFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgIgorCQkg ICAgImZ1bmN0aW9uIG11c3QgYmUgcXVhbGlmaWVkIik7CisJICBpbmZvcm0gKGlucHV0X2xvY2F0 aW9uLAorCQkgICIoYSBwb2ludGVyIHRvIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Y2FuIG9ubHkgYmUgIgorCQkgICJmb3JtZWQgd2l0aCAlPCYlRSU+KSIsIGFyZyk7CisJICByZXR1 cm4gZXJyb3JfbWFya19ub2RlOworCX0KICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAKICAg ICBjYXNlIE9WRVJMT0FEOgpAQCAtNzIwNSw2ICs3MjI2LDE3IEBAIGNwX2J1aWxkX2FkZHJfZXhw cl8xICh0cmVlIGFyZywgYm9vbCBzdHJpY3RfbHZhbHVlLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFp bikKIAkgICAgJiYgIW1hcmtfdXNlZCAodCwgY29tcGxhaW4pICYmICEoY29tcGxhaW4gJiB0Zl9l cnJvcikpCiAJICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwogCisJLyogUHVsbCBvdXQgdGhlIGZ1 bmN0aW9uX2RlY2wgZm9yIGEgc2luZ2xlIHhvYmogbWVtYmVyIGZ1bmN0aW9uLCBhbmQKKwkgICBs ZXQgdGhlIHJlc3Qgb2YgdGhpcyBmdW5jdGlvbiBoYW5kbGUgaXQuICBUaGlzIGlzIGhhbmRsZWQg dGhlIHNhbWUKKwkgICB3YXkgYXMgdGhlIEJBU0VMSU5LIGNhc2UgYWJvdmUsIGJ1dCB3ZSBjYW4n dCBoYW5kbGUgeG9iaiBtZW1iZXIKKwkgICBmdW5jdGlvbnMgdGhlcmUgYXMgeG9iaiBtZW1iZXIg ZnVuY3Rpb25zIG11c3QgYmUgcXVhbGlmaWVkLCBoZW5jZQorCSAgIHRoZSBlcnJvciBhYm92ZS4g ICovCisJaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ1RJT05fUCAodCkpCisJICB7CisJICAgIGFy ZyA9IHQ7CisJICAgIGJyZWFrOworCSAgfQorCiAJdHlwZSA9IGJ1aWxkX3B0cm1lbV90eXBlIChj b250ZXh0X2Zvcl9uYW1lX2xvb2t1cCAodCksCiAJCQkJICBUUkVFX1RZUEUgKHQpKTsKIAl0ID0g bWFrZV9wdHJtZW1fY3N0ICh0eXBlLCB0KTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzEuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1iYXNpYzEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uMTM0MTgyYzc3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMxLkMKQEAgLTAsMCArMSwxMTQgQEAKKy8vIFAw ODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gYmFzaWMg dXNlIGNhc2VzIGFuZCBjYWxsaW5nCisKKy8vIG5vbi10cmFpbGluZyByZXR1cm4KKy8vIGRlZmlu aXRpb25zCitzdHJ1Y3QgUzAgeworICB2b2lkIGYwKHRoaXMgUzApIHt9CisgIHZvaWQgZjEodGhp cyBTMCYpIHt9CisgIHZvaWQgZjIodGhpcyBTMCYmKSB7fQorICB2b2lkIGYzKHRoaXMgUzAgY29u c3QmKSB7fQorICB2b2lkIGY0KHRoaXMgUzAgY29uc3QmJikge30KKyAgdGVtcGxhdGU8dHlwZW5h bWUgU2VsZj4KKyAgdm9pZCBkMCh0aGlzIFNlbGYmJikge30KKyAgdm9pZCBkMSh0aGlzIGF1dG8m Jikge30KK307CisvLyBkZWNsYXJhdGlvbnMKK3N0cnVjdCBTMSB7CisgIHZvaWQgZjAodGhpcyBT MSk7CisgIHZvaWQgZjEodGhpcyBTMSYpOworICB2b2lkIGYyKHRoaXMgUzEmJik7CisgIHZvaWQg ZjModGhpcyBTMSBjb25zdCYpOworICB2b2lkIGY0KHRoaXMgUzEgY29uc3QmJik7CisgIHRlbXBs YXRlPHR5cGVuYW1lIFNlbGY+CisgIHZvaWQgZDAodGhpcyBTZWxmJiYpOworICB2b2lkIGQxKHRo aXMgYXV0byYmKTsKK307CisvLyBvdXQgb2YgbGluZSBkZWZpbml0aW9ucwordm9pZCBTMTo6ZjAo dGhpcyBTMSkge30KK3ZvaWQgUzE6OmYxKHRoaXMgUzEmKSB7fQordm9pZCBTMTo6ZjIodGhpcyBT MSYmKSB7fQordm9pZCBTMTo6ZjModGhpcyBTMSBjb25zdCYpIHt9Cit2b2lkIFMxOjpmNCh0aGlz IFMxIGNvbnN0JiYpIHt9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgordm9pZCBTMTo6ZDAodGhp cyBTZWxmJiYpIHt9Cit2b2lkIFMxOjpkMSh0aGlzIGF1dG8mJikge30KKworLy8gdHJhaWxpbmcg cmV0dXJuCisvLyBkZWZpbml0aW9ucworc3RydWN0IFMyIHsKKyAgYXV0byBmMCh0aGlzIFMyKSAt PiB2b2lkIHt9CisgIGF1dG8gZjEodGhpcyBTMiYpIC0+IHZvaWQge30KKyAgYXV0byBmMih0aGlz IFMyJiYpIC0+IHZvaWQge30KKyAgYXV0byBmMyh0aGlzIFMyIGNvbnN0JikgLT4gdm9pZCB7fQor ICBhdXRvIGY0KHRoaXMgUzIgY29uc3QmJikgLT4gdm9pZCB7fQorICB0ZW1wbGF0ZTx0eXBlbmFt ZSBTZWxmPgorICBhdXRvIGQwKHRoaXMgU2VsZiYmKSAtPiB2b2lkIHt9CisKKyAgYXV0byBkMSh0 aGlzIGF1dG8mJikgLT4gdm9pZCB7fQorfTsKKy8vIGRlY2xhcmF0aW9ucworc3RydWN0IFMzIHsK KyAgYXV0byBmMCh0aGlzIFMzKSAtPiB2b2lkOworICBhdXRvIGYxKHRoaXMgUzMmKSAtPiB2b2lk OworICBhdXRvIGYyKHRoaXMgUzMmJikgLT4gdm9pZDsKKyAgYXV0byBmMyh0aGlzIFMzIGNvbnN0 JikgLT4gdm9pZDsKKyAgYXV0byBmNCh0aGlzIFMzIGNvbnN0JiYpIC0+IHZvaWQ7CisgIHRlbXBs YXRlPHR5cGVuYW1lIFNlbGY+CisgIGF1dG8gZDAodGhpcyBTZWxmJiYpIC0+IHZvaWQ7CisgIGF1 dG8gZDEodGhpcyBhdXRvJiYpIC0+IHZvaWQ7Cit9OworLy8gb3V0IG9mIGxpbmUgZGVmaW5pdGlv bnMKK2F1dG8gUzM6OmYwKHRoaXMgUzMpIC0+IHZvaWQge30KK2F1dG8gUzM6OmYxKHRoaXMgUzMm KSAtPiB2b2lkIHt9CithdXRvIFMzOjpmMih0aGlzIFMzJiYpIC0+IHZvaWQge30KK2F1dG8gUzM6 OmYzKHRoaXMgUzMgY29uc3QmKSAtPiB2b2lkIHt9CithdXRvIFMzOjpmNCh0aGlzIFMzIGNvbnN0 JiYpIC0+IHZvaWQge30KK3RlbXBsYXRlPHR5cGVuYW1lIFNlbGY+CithdXRvIFMzOjpkMCh0aGlz IFNlbGYmJikgLT4gdm9pZCB7fQorYXV0byBTMzo6ZDEodGhpcyBhdXRvJiYpIC0+IHZvaWQge30K KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgY2FsbF93aXRoX3F1YWxpZmljYXRpb24oKQor eworICBUIG9iant9OworICAvLyBieSB2YWx1ZSBzaG91bGQgdGFrZSBhbnkgcXVhbGlmaWNhdGlv biAoZjApCisgIFR7fS5mMCgpOworICBvYmouZjAoKTsKKyAgc3RhdGljX2Nhc3Q8VCYmPihvYmop LmYwKCk7IAorICBzdGF0aWNfY2FzdDxUIGNvbnN0Jj4ob2JqKS5mMCgpOworICBzdGF0aWNfY2Fz dDxUIGNvbnN0JiY+KG9iaikuZjAoKTsKKyAgLy8gc3BlY2lmaWMgcXVhbGlmaWNhdGlvbiAoZjEg LSBmNCkKKyAgVHt9LmYyKCk7CisgIFR7fS5mMygpOworICBUe30uZjQoKTsKKyAgb2JqLmYxKCk7 CisgIG9iai5mMygpOworICBzdGF0aWNfY2FzdDxUJiY+KG9iaikuZjIoKTsKKyAgc3RhdGljX2Nh c3Q8VCYmPihvYmopLmYzKCk7CisgIHN0YXRpY19jYXN0PFQmJj4ob2JqKS5mNCgpOworICBzdGF0 aWNfY2FzdDxUIGNvbnN0Jj4ob2JqKS5mMygpOworICBzdGF0aWNfY2FzdDxUIGNvbnN0JiY+KG9i aikuZjQoKTsKKyAgLy8gZGVkdWNlZCBzaG91bGQgKG9idmlvdXNseSkgdGFrZSBhbnkgcXVhbGlm aWNhdGlvbiAoZDAsIGQxKQorICBUe30uZDAoKTsKKyAgb2JqLmQwKCk7CisgIHN0YXRpY19jYXN0 PFQmJj4ob2JqKS5kMCgpOworICBzdGF0aWNfY2FzdDxUIGNvbnN0Jj4ob2JqKS5kMCgpOworICBz dGF0aWNfY2FzdDxUIGNvbnN0JiY+KG9iaikuZDAoKTsKKyAgVHt9LmQxKCk7CisgIG9iai5kMSgp OworICBzdGF0aWNfY2FzdDxUJiY+KG9iaikuZDEoKTsKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCY+ KG9iaikuZDEoKTsKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCYmPihvYmopLmQxKCk7Cit9CisKK3Zv aWQgcGVyZm9ybV9jYWxscygpCit7CisgIGNhbGxfd2l0aF9xdWFsaWZpY2F0aW9uPFMwPigpOwor ICBjYWxsX3dpdGhfcXVhbGlmaWNhdGlvbjxTMT4oKTsKKyAgY2FsbF93aXRoX3F1YWxpZmljYXRp b248UzI+KCk7CisgIGNhbGxfd2l0aF9xdWFsaWZpY2F0aW9uPFMzPigpOworfQorCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMyLkMgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMyLkMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZiMmNhZDEzMGZhCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljMi5DCkBA IC0wLDAgKzEsMjggQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzIz IH0gfQorCisvLyBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSBk ZWR1Y3Rpb24sCisvLyBjb252ZXJzaW9uIHRvIGZ1bmN0aW9uIHBvaW50ZXIsCisvLyBhbmQgY2Fs bGluZyB0aHJvdWdoIHBvaW50ZXIgdG8gZnVuY3Rpb24KKworc3RydWN0IFMgeworICBpbnQgX247 CisgIGludCBmKHRoaXMgUyYgc2VsZikgeyByZXR1cm4gc2VsZi5fbjsgfQorfTsKKwordXNpbmcg Zl90eXBlID0gaW50KCopKFMmKTsKKworc3RhdGljX2Fzc2VydCAoX19pc19zYW1lIChmX3R5cGUs IGRlY2x0eXBlICgmUzo6ZikpKTsKKworaW50IG1haW4oKQoreworICBhdXRvIGZwMCA9ICZTOjpm OworICBmX3R5cGUgZnAxID0gJlM6OmY7CisgIHN0YXRpY19hc3NlcnQgKF9faXNfc2FtZSAoZGVj bHR5cGUgKGZwMCksIGRlY2x0eXBlIChmcDEpKSk7CisgIFMgc3s0Mn07CisgIGlmIChmcDAgKHMp ICE9IDQyKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKGZwMSAocykgIT0gNDIpCisg ICAgX19idWlsdGluX2Fib3J0ICgpOworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMzLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotYmFzaWMzLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmU0NjZjYzk3NjFjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljMy5DCkBAIC0wLDAgKzEsNDk2IEBACisvLyBQ MDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIGJvZ3Vz IGRpYWdub3NpcyBvZiB2YWxpZCBkZWNsYXJhdGlvbnMgYXMgcmVkZWNsYXJhdGlvbnMKKy8vIHRl c3RzIGZvciBieS12YWx1ZSBhcmUgZWxzZXdoZXJlICh0b2RvOiBhZGQgZmlsZW5hbWUpCisKKy8v IGVhY2ggZ3JvdXAgaGFzIDggb3ZlcmxvYWRzIHRoYXQgZWFjaCB0YWtlCisvLyBsdmFsdWUgcmVm IHRvIFMKKy8vIHJ2YWx1ZSByZWYgdG8gUworLy8gbHZhbHVlIGMgcmVmIHRvIFMKKy8vIHJ2YWx1 ZSBjIHJlZiB0byBTCisvLyBsdmFsdWUgdiByZWYgdG8gUworLy8gcnZhbHVlIHYgcmVmIHRvIFMK Ky8vIGx2YWx1ZSBjdiByZWYgdG8gUworLy8gcnZhbHVlIGN2IHJlZiB0byBTCisvLyB3aGVyZSBT IGlzIHRoZSBzdHJ1Y3QgdGhlIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGluCisKKy8vIG9ubHkgeG9i aiAodGhlIG1vc3QgYmFzaWMgY2FzZSkKKworc3RydWN0IFMgeworICB2b2lkIGYodGhpcyBTICYp OworICB2b2lkIGYodGhpcyBTICYmKTsKKyAgdm9pZCBmKHRoaXMgUyBjb25zdCYpOworICB2b2lk IGYodGhpcyBTIGNvbnN0JiYpOworICB2b2lkIGYodGhpcyBTIHZvbGF0aWxlJik7CisgIHZvaWQg Zih0aGlzIFMgdm9sYXRpbGUmJik7CisgIHZvaWQgZih0aGlzIFMgY29uc3Qgdm9sYXRpbGUmKTsK KyAgdm9pZCBmKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKTsKK307CisKKy8vIEkqIGhhcyB0aGUg MSB4b2JqIDcgaW9iaiBjYXNlcworLy8gWCogaGFzIHRoZSA3IHhvYmogMSBpb2JqIGNhc2VzCisv LyAqMCBoYXMgdGhlIHVuaXF1ZSBmdW5jdGlvbiBmaXJzdCwgdGhlIHJlc3QgYWZ0ZXIKKy8vICox IGhhcyB0aGUgdW5pcXVlIGZ1bmN0aW9uIGxhc3QsIHRoZSByZXN0IGFmdGVyCisvLyAqMiBoYXMg dGhlIGZ1bmN0aW9ucyBpbiB0aGUgb3JkZXIgc3RhdGVkIGFib3ZlCisvLyB4b2JqIGZpcnN0LCAx IHhvYmosIDcgaW9iagorCisvLyAoeWVzIHRoZXJlIGFyZSBzb21lIHJlZHVuZGFudCBjYXNlcykK KworLy8gdW5pcXVlIGZpcnN0LCAxIHhvYmogNyBpb2JqCisKK3N0cnVjdCBJMCB7CisgIHZvaWQg ZjAodGhpcyBJMCYpOworICB2b2lkIGYwKCkgJiY7CisgIHZvaWQgZjAoKSBjb25zdCY7CisgIHZv aWQgZjAoKSBjb25zdCYmOworICB2b2lkIGYwKCkgdm9sYXRpbGUmOworICB2b2lkIGYwKCkgdm9s YXRpbGUmJjsKKyAgdm9pZCBmMCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmMCgpIGNvbnN0 IHZvbGF0aWxlJiY7CisKKyAgdm9pZCBmMSh0aGlzIEkwJiYpOworICB2b2lkIGYxKCkgJjsKKyAg dm9pZCBmMSgpIGNvbnN0JjsKKyAgdm9pZCBmMSgpIGNvbnN0JiY7CisgIHZvaWQgZjEoKSB2b2xh dGlsZSY7CisgIHZvaWQgZjEoKSB2b2xhdGlsZSYmOworICB2b2lkIGYxKCkgY29uc3Qgdm9sYXRp bGUmOworICB2b2lkIGYxKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZjMCh0aGlzIEkw IGNvbnN0Jik7CisgIHZvaWQgZmMwKCkgJjsKKyAgdm9pZCBmYzAoKSAmJjsKKyAgdm9pZCBmYzAo KSBjb25zdCYmOworICB2b2lkIGZjMCgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmYzAoKSB2b2xhdGls ZSYmOworICB2b2lkIGZjMCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmYzAoKSBjb25zdCB2 b2xhdGlsZSYmOworCisgIHZvaWQgZmMxKHRoaXMgSTAgY29uc3QmJik7CisgIHZvaWQgZmMxKCkg JjsKKyAgdm9pZCBmYzEoKSAmJjsKKyAgdm9pZCBmYzEoKSBjb25zdCY7CisgIHZvaWQgZmMxKCkg dm9sYXRpbGUmOworICB2b2lkIGZjMSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZmMxKCkgY29uc3Qg dm9sYXRpbGUmOworICB2b2lkIGZjMSgpIGNvbnN0IHZvbGF0aWxlJiY7CisKKyAgdm9pZCBmdjAo dGhpcyBJMCB2b2xhdGlsZSYpOworICB2b2lkIGZ2MCgpICY7CisgIHZvaWQgZnYwKCkgJiY7Cisg IHZvaWQgZnYwKCkgY29uc3QmOworICB2b2lkIGZ2MCgpIGNvbnN0JiY7CisgIHZvaWQgZnYwKCkg dm9sYXRpbGUmJjsKKyAgdm9pZCBmdjAoKSBjb25zdCB2b2xhdGlsZSY7CisgIHZvaWQgZnYwKCkg Y29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZ2MSh0aGlzIEkwIHZvbGF0aWxlJiYpOworICB2 b2lkIGZ2MSgpICY7CisgIHZvaWQgZnYxKCkgJiY7CisgIHZvaWQgZnYxKCkgY29uc3QmOworICB2 b2lkIGZ2MSgpIGNvbnN0JiY7CisgIHZvaWQgZnYxKCkgdm9sYXRpbGUmOworICB2b2lkIGZ2MSgp IGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmdjEoKSBjb25zdCB2b2xhdGlsZSYmOworCisgIHZv aWQgZmN2MCh0aGlzIEkwIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmN2MCgpICY7CisgIHZv aWQgZmN2MCgpICYmOworICB2b2lkIGZjdjAoKSBjb25zdCY7CisgIHZvaWQgZmN2MCgpIGNvbnN0 JiY7CisgIHZvaWQgZmN2MCgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmY3YwKCkgdm9sYXRpbGUmJjsK KyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZjdjEodGhpcyBJMCBj b25zdCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmY3YxKCkgJjsKKyAgdm9pZCBmY3YxKCkgJiY7Cisg IHZvaWQgZmN2MSgpIGNvbnN0JjsKKyAgdm9pZCBmY3YxKCkgY29uc3QmJjsKKyAgdm9pZCBmY3Yx KCkgdm9sYXRpbGUmOworICB2b2lkIGZjdjEoKSB2b2xhdGlsZSYmOworICB2b2lkIGZjdjEoKSBj b25zdCB2b2xhdGlsZSY7Cit9OworCisvLyB1bmlxdWUgbGFzdCwgMSB4b2JqIDcgaW9iagorCitz dHJ1Y3QgSTEgeworICB2b2lkIGYwKCkgJiY7CisgIHZvaWQgZjAoKSBjb25zdCY7CisgIHZvaWQg ZjAoKSBjb25zdCYmOworICB2b2lkIGYwKCkgdm9sYXRpbGUmOworICB2b2lkIGYwKCkgdm9sYXRp bGUmJjsKKyAgdm9pZCBmMCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmMCgpIGNvbnN0IHZv bGF0aWxlJiY7CisgIHZvaWQgZjAodGhpcyBJMSYpOworCisgIHZvaWQgZjEoKSAmOworICB2b2lk IGYxKCkgY29uc3QmOworICB2b2lkIGYxKCkgY29uc3QmJjsKKyAgdm9pZCBmMSgpIHZvbGF0aWxl JjsKKyAgdm9pZCBmMSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZjEoKSBjb25zdCB2b2xhdGlsZSY7 CisgIHZvaWQgZjEoKSBjb25zdCB2b2xhdGlsZSYmOworICB2b2lkIGYxKHRoaXMgSTEmJik7CisK KyAgdm9pZCBmYzAoKSAmOworICB2b2lkIGZjMCgpICYmOworICB2b2lkIGZjMCgpIGNvbnN0JiY7 CisgIHZvaWQgZmMwKCkgdm9sYXRpbGUmOworICB2b2lkIGZjMCgpIHZvbGF0aWxlJiY7CisgIHZv aWQgZmMwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZjMCgpIGNvbnN0IHZvbGF0aWxlJiY7 CisgIHZvaWQgZmMwKHRoaXMgSTEgY29uc3QmKTsKKworICB2b2lkIGZjMSgpICY7CisgIHZvaWQg ZmMxKCkgJiY7CisgIHZvaWQgZmMxKCkgY29uc3QmOworICB2b2lkIGZjMSgpIHZvbGF0aWxlJjsK KyAgdm9pZCBmYzEoKSB2b2xhdGlsZSYmOworICB2b2lkIGZjMSgpIGNvbnN0IHZvbGF0aWxlJjsK KyAgdm9pZCBmYzEoKSBjb25zdCB2b2xhdGlsZSYmOworICB2b2lkIGZjMSh0aGlzIEkxIGNvbnN0 JiYpOworCisgIHZvaWQgZnYwKCkgJjsKKyAgdm9pZCBmdjAoKSAmJjsKKyAgdm9pZCBmdjAoKSBj b25zdCY7CisgIHZvaWQgZnYwKCkgY29uc3QmJjsKKyAgdm9pZCBmdjAoKSB2b2xhdGlsZSYmOwor ICB2b2lkIGZ2MCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmdjAoKSBjb25zdCB2b2xhdGls ZSYmOworICB2b2lkIGZ2MCh0aGlzIEkxIHZvbGF0aWxlJik7CisKKyAgdm9pZCBmdjEoKSAmOwor ICB2b2lkIGZ2MSgpICYmOworICB2b2lkIGZ2MSgpIGNvbnN0JjsKKyAgdm9pZCBmdjEoKSBjb25z dCYmOworICB2b2lkIGZ2MSgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmdjEoKSBjb25zdCB2b2xhdGls ZSY7CisgIHZvaWQgZnYxKCkgY29uc3Qgdm9sYXRpbGUmJjsKKyAgdm9pZCBmdjEodGhpcyBJMSB2 b2xhdGlsZSYmKTsKKworICB2b2lkIGZjdjAoKSAmOworICB2b2lkIGZjdjAoKSAmJjsKKyAgdm9p ZCBmY3YwKCkgY29uc3QmOworICB2b2lkIGZjdjAoKSBjb25zdCYmOworICB2b2lkIGZjdjAoKSB2 b2xhdGlsZSY7CisgIHZvaWQgZmN2MCgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZmN2MCgpIGNvbnN0 IHZvbGF0aWxlJiY7CisgIHZvaWQgZmN2MCh0aGlzIEkxIGNvbnN0IHZvbGF0aWxlJik7CisKKyAg dm9pZCBmY3YxKCkgJjsKKyAgdm9pZCBmY3YxKCkgJiY7CisgIHZvaWQgZmN2MSgpIGNvbnN0JjsK KyAgdm9pZCBmY3YxKCkgY29uc3QmJjsKKyAgdm9pZCBmY3YxKCkgdm9sYXRpbGUmOworICB2b2lk IGZjdjEoKSB2b2xhdGlsZSYmOworICB2b2lkIGZjdjEoKSBjb25zdCB2b2xhdGlsZSY7CisgIHZv aWQgZmN2MSh0aGlzIEkxIGNvbnN0IHZvbGF0aWxlJiYpOworfTsKKworLy8gb3JkZXJlZCwgMSB4 b2JqIDcgaW9iagorCitzdHJ1Y3QgSTIgeworICB2b2lkIGYwKHRoaXMgSTImKTsKKyAgdm9pZCBm MCgpICYmOworICB2b2lkIGYwKCkgY29uc3QmOworICB2b2lkIGYwKCkgY29uc3QmJjsKKyAgdm9p ZCBmMCgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmMCgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZjAoKSBj b25zdCB2b2xhdGlsZSY7CisgIHZvaWQgZjAoKSBjb25zdCB2b2xhdGlsZSYmOworCisgIHZvaWQg ZjEoKSAmOworICB2b2lkIGYxKHRoaXMgSTImJik7CisgIHZvaWQgZjEoKSBjb25zdCY7CisgIHZv aWQgZjEoKSBjb25zdCYmOworICB2b2lkIGYxKCkgdm9sYXRpbGUmOworICB2b2lkIGYxKCkgdm9s YXRpbGUmJjsKKyAgdm9pZCBmMSgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmMSgpIGNvbnN0 IHZvbGF0aWxlJiY7CisKKyAgdm9pZCBmYzAoKSAmOworICB2b2lkIGZjMCgpICYmOworICB2b2lk IGZjMCh0aGlzIEkyIGNvbnN0Jik7CisgIHZvaWQgZmMwKCkgY29uc3QmJjsKKyAgdm9pZCBmYzAo KSB2b2xhdGlsZSY7CisgIHZvaWQgZmMwKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmYzAoKSBjb25z dCB2b2xhdGlsZSY7CisgIHZvaWQgZmMwKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZj MSgpICY7CisgIHZvaWQgZmMxKCkgJiY7CisgIHZvaWQgZmMxKCkgY29uc3QmOworICB2b2lkIGZj MSh0aGlzIEkyIGNvbnN0JiYpOworICB2b2lkIGZjMSgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmYzEo KSB2b2xhdGlsZSYmOworICB2b2lkIGZjMSgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmYzEo KSBjb25zdCB2b2xhdGlsZSYmOworCisgIHZvaWQgZnYwKCkgJjsKKyAgdm9pZCBmdjAoKSAmJjsK KyAgdm9pZCBmdjAoKSBjb25zdCY7CisgIHZvaWQgZnYwKCkgY29uc3QmJjsKKyAgdm9pZCBmdjAo dGhpcyBJMiB2b2xhdGlsZSYpOworICB2b2lkIGZ2MCgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZnYw KCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZ2MCgpIGNvbnN0IHZvbGF0aWxlJiY7CisKKyAg dm9pZCBmdjEoKSAmOworICB2b2lkIGZ2MSgpICYmOworICB2b2lkIGZ2MSgpIGNvbnN0JjsKKyAg dm9pZCBmdjEoKSBjb25zdCYmOworICB2b2lkIGZ2MSgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmdjEo dGhpcyBJMiB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmdjEoKSBjb25zdCB2b2xhdGlsZSY7CisgIHZv aWQgZnYxKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZjdjAoKSAmOworICB2b2lkIGZj djAoKSAmJjsKKyAgdm9pZCBmY3YwKCkgY29uc3QmOworICB2b2lkIGZjdjAoKSBjb25zdCYmOwor ICB2b2lkIGZjdjAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZmN2MCgpIHZvbGF0aWxlJiY7CisgIHZv aWQgZmN2MCh0aGlzIEkyIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmN2MCgpIGNvbnN0IHZv bGF0aWxlJiY7CisKKyAgdm9pZCBmY3YxKCkgJjsKKyAgdm9pZCBmY3YxKCkgJiY7CisgIHZvaWQg ZmN2MSgpIGNvbnN0JjsKKyAgdm9pZCBmY3YxKCkgY29uc3QmJjsKKyAgdm9pZCBmY3YxKCkgdm9s YXRpbGUmOworICB2b2lkIGZjdjEoKSB2b2xhdGlsZSYmOworICB2b2lkIGZjdjEoKSBjb25zdCB2 b2xhdGlsZSY7CisgIHZvaWQgZmN2MSh0aGlzIEkyIGNvbnN0IHZvbGF0aWxlJiYpOworfTsKKwor CisvLyBpb2JqIGZpcnN0LCA3IHhvYmosIDEgaW9iagorCitzdHJ1Y3QgWDAgeworICB2b2lkIGYw KCkgJjsKKyAgdm9pZCBmMCh0aGlzIFgwICYmKTsKKyAgdm9pZCBmMCh0aGlzIFgwIGNvbnN0Jik7 CisgIHZvaWQgZjAodGhpcyBYMCBjb25zdCYmKTsKKyAgdm9pZCBmMCh0aGlzIFgwIHZvbGF0aWxl Jik7CisgIHZvaWQgZjAodGhpcyBYMCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmMCh0aGlzIFgwIGNv bnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZjAodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYmKTsKKwor ICB2b2lkIGYxKCkgJiY7CisgIHZvaWQgZjEodGhpcyBYMCAmKTsKKyAgdm9pZCBmMSh0aGlzIFgw IGNvbnN0Jik7CisgIHZvaWQgZjEodGhpcyBYMCBjb25zdCYmKTsKKyAgdm9pZCBmMSh0aGlzIFgw IHZvbGF0aWxlJik7CisgIHZvaWQgZjEodGhpcyBYMCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmMSh0 aGlzIFgwIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZjEodGhpcyBYMCBjb25zdCB2b2xhdGls ZSYmKTsKKworICB2b2lkIGZjMCgpIGNvbnN0JjsKKyAgdm9pZCBmYzAodGhpcyBYMCAmKTsKKyAg dm9pZCBmYzAodGhpcyBYMCAmJik7CisgIHZvaWQgZmMwKHRoaXMgWDAgY29uc3QmJik7CisgIHZv aWQgZmMwKHRoaXMgWDAgdm9sYXRpbGUmKTsKKyAgdm9pZCBmYzAodGhpcyBYMCB2b2xhdGlsZSYm KTsKKyAgdm9pZCBmYzAodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZjMCh0aGlz IFgwIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQgZmMxKCkgY29uc3QmJjsKKyAgdm9pZCBm YzEodGhpcyBYMCAmKTsKKyAgdm9pZCBmYzEodGhpcyBYMCAmJik7CisgIHZvaWQgZmMxKHRoaXMg WDAgY29uc3QmKTsKKyAgdm9pZCBmYzEodGhpcyBYMCB2b2xhdGlsZSYpOworICB2b2lkIGZjMSh0 aGlzIFgwIHZvbGF0aWxlJiYpOworICB2b2lkIGZjMSh0aGlzIFgwIGNvbnN0IHZvbGF0aWxlJik7 CisgIHZvaWQgZmMxKHRoaXMgWDAgY29uc3Qgdm9sYXRpbGUmJik7CisKKyAgdm9pZCBmdjAoKSB2 b2xhdGlsZSY7CisgIHZvaWQgZnYwKHRoaXMgWDAgJik7CisgIHZvaWQgZnYwKHRoaXMgWDAgJiYp OworICB2b2lkIGZ2MCh0aGlzIFgwIGNvbnN0Jik7CisgIHZvaWQgZnYwKHRoaXMgWDAgY29uc3Qm Jik7CisgIHZvaWQgZnYwKHRoaXMgWDAgdm9sYXRpbGUmJik7CisgIHZvaWQgZnYwKHRoaXMgWDAg Y29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmdjAodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYmKTsK KworICB2b2lkIGZ2MSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZnYxKHRoaXMgWDAgJik7CisgIHZv aWQgZnYxKHRoaXMgWDAgJiYpOworICB2b2lkIGZ2MSh0aGlzIFgwIGNvbnN0Jik7CisgIHZvaWQg ZnYxKHRoaXMgWDAgY29uc3QmJik7CisgIHZvaWQgZnYxKHRoaXMgWDAgdm9sYXRpbGUmKTsKKyAg dm9pZCBmdjEodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZ2MSh0aGlzIFgwIGNv bnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQgZmN2MCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9p ZCBmY3YwKHRoaXMgWDAgJik7CisgIHZvaWQgZmN2MCh0aGlzIFgwICYmKTsKKyAgdm9pZCBmY3Yw KHRoaXMgWDAgY29uc3QmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDAgY29uc3QmJik7CisgIHZvaWQg ZmN2MCh0aGlzIFgwIHZvbGF0aWxlJik7CisgIHZvaWQgZmN2MCh0aGlzIFgwIHZvbGF0aWxlJiYp OworICB2b2lkIGZjdjAodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYmKTsKKworICB2b2lkIGZjdjEo KSBjb25zdCB2b2xhdGlsZSYmOworICB2b2lkIGZjdjEodGhpcyBYMCAmKTsKKyAgdm9pZCBmY3Yx KHRoaXMgWDAgJiYpOworICB2b2lkIGZjdjEodGhpcyBYMCBjb25zdCYpOworICB2b2lkIGZjdjEo dGhpcyBYMCBjb25zdCYmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDAgdm9sYXRpbGUmKTsKKyAgdm9p ZCBmY3YxKHRoaXMgWDAgdm9sYXRpbGUmJik7CisgIHZvaWQgZmN2MSh0aGlzIFgwIGNvbnN0IHZv bGF0aWxlJik7Cit9OworCisvLyBpb2JqIGxhc3QsIDcgeG9iaiAxIGlvYmoKKworc3RydWN0IFgx IHsKKyAgdm9pZCBmMCh0aGlzIFgxICYmKTsKKyAgdm9pZCBmMCh0aGlzIFgxIGNvbnN0Jik7Cisg IHZvaWQgZjAodGhpcyBYMSBjb25zdCYmKTsKKyAgdm9pZCBmMCh0aGlzIFgxIHZvbGF0aWxlJik7 CisgIHZvaWQgZjAodGhpcyBYMSB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmMCh0aGlzIFgxIGNvbnN0 IHZvbGF0aWxlJik7CisgIHZvaWQgZjAodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYmKTsKKyAgdm9p ZCBmMCgpICY7CisKKyAgdm9pZCBmMSh0aGlzIFgxICYpOworICB2b2lkIGYxKHRoaXMgWDEgY29u c3QmKTsKKyAgdm9pZCBmMSh0aGlzIFgxIGNvbnN0JiYpOworICB2b2lkIGYxKHRoaXMgWDEgdm9s YXRpbGUmKTsKKyAgdm9pZCBmMSh0aGlzIFgxIHZvbGF0aWxlJiYpOworICB2b2lkIGYxKHRoaXMg WDEgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmMSh0aGlzIFgxIGNvbnN0IHZvbGF0aWxlJiYp OworICB2b2lkIGYxKCkgJiY7CisKKyAgdm9pZCBmYzAodGhpcyBYMSAmKTsKKyAgdm9pZCBmYzAo dGhpcyBYMSAmJik7CisgIHZvaWQgZmMwKHRoaXMgWDEgY29uc3QmJik7CisgIHZvaWQgZmMwKHRo aXMgWDEgdm9sYXRpbGUmKTsKKyAgdm9pZCBmYzAodGhpcyBYMSB2b2xhdGlsZSYmKTsKKyAgdm9p ZCBmYzAodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZjMCh0aGlzIFgxIGNvbnN0 IHZvbGF0aWxlJiYpOworICB2b2lkIGZjMCgpIGNvbnN0JjsKKworICB2b2lkIGZjMSh0aGlzIFgx ICYpOworICB2b2lkIGZjMSh0aGlzIFgxICYmKTsKKyAgdm9pZCBmYzEodGhpcyBYMSBjb25zdCYp OworICB2b2lkIGZjMSh0aGlzIFgxIHZvbGF0aWxlJik7CisgIHZvaWQgZmMxKHRoaXMgWDEgdm9s YXRpbGUmJik7CisgIHZvaWQgZmMxKHRoaXMgWDEgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBm YzEodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmYzEoKSBjb25zdCYmOworCisg IHZvaWQgZnYwKHRoaXMgWDEgJik7CisgIHZvaWQgZnYwKHRoaXMgWDEgJiYpOworICB2b2lkIGZ2 MCh0aGlzIFgxIGNvbnN0Jik7CisgIHZvaWQgZnYwKHRoaXMgWDEgY29uc3QmJik7CisgIHZvaWQg ZnYwKHRoaXMgWDEgdm9sYXRpbGUmJik7CisgIHZvaWQgZnYwKHRoaXMgWDEgY29uc3Qgdm9sYXRp bGUmKTsKKyAgdm9pZCBmdjAodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmdjAo KSB2b2xhdGlsZSY7CisKKyAgdm9pZCBmdjEodGhpcyBYMSAmKTsKKyAgdm9pZCBmdjEodGhpcyBY MSAmJik7CisgIHZvaWQgZnYxKHRoaXMgWDEgY29uc3QmKTsKKyAgdm9pZCBmdjEodGhpcyBYMSBj b25zdCYmKTsKKyAgdm9pZCBmdjEodGhpcyBYMSB2b2xhdGlsZSYpOworICB2b2lkIGZ2MSh0aGlz IFgxIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZnYxKHRoaXMgWDEgY29uc3Qgdm9sYXRpbGUm Jik7CisgIHZvaWQgZnYxKCkgdm9sYXRpbGUmJjsKKworICB2b2lkIGZjdjAodGhpcyBYMSAmKTsK KyAgdm9pZCBmY3YwKHRoaXMgWDEgJiYpOworICB2b2lkIGZjdjAodGhpcyBYMSBjb25zdCYpOwor ICB2b2lkIGZjdjAodGhpcyBYMSBjb25zdCYmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDEgdm9sYXRp bGUmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDEgdm9sYXRpbGUmJik7CisgIHZvaWQgZmN2MCh0aGlz IFgxIGNvbnN0IHZvbGF0aWxlJiYpOworICB2b2lkIGZjdjAoKSBjb25zdCB2b2xhdGlsZSY7CisK KyAgdm9pZCBmY3YxKHRoaXMgWDEgJik7CisgIHZvaWQgZmN2MSh0aGlzIFgxICYmKTsKKyAgdm9p ZCBmY3YxKHRoaXMgWDEgY29uc3QmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDEgY29uc3QmJik7Cisg IHZvaWQgZmN2MSh0aGlzIFgxIHZvbGF0aWxlJik7CisgIHZvaWQgZmN2MSh0aGlzIFgxIHZvbGF0 aWxlJiYpOworICB2b2lkIGZjdjEodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZj djEoKSBjb25zdCB2b2xhdGlsZSYmOworfTsKKworLy8gb3JkZXJlZCwgNyB4b2JqIDEgaW9iagor CitzdHJ1Y3QgWDIgeworICB2b2lkIGYwKCkgJjsKKyAgdm9pZCBmMCh0aGlzIFgyICYmKTsKKyAg dm9pZCBmMCh0aGlzIFgyIGNvbnN0Jik7CisgIHZvaWQgZjAodGhpcyBYMiBjb25zdCYmKTsKKyAg dm9pZCBmMCh0aGlzIFgyIHZvbGF0aWxlJik7CisgIHZvaWQgZjAodGhpcyBYMiB2b2xhdGlsZSYm KTsKKyAgdm9pZCBmMCh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZjAodGhpcyBY MiBjb25zdCB2b2xhdGlsZSYmKTsKKworICB2b2lkIGYxKHRoaXMgWDIgJik7CisgIHZvaWQgZjEo KSAmJjsKKyAgdm9pZCBmMSh0aGlzIFgyIGNvbnN0Jik7CisgIHZvaWQgZjEodGhpcyBYMiBjb25z dCYmKTsKKyAgdm9pZCBmMSh0aGlzIFgyIHZvbGF0aWxlJik7CisgIHZvaWQgZjEodGhpcyBYMiB2 b2xhdGlsZSYmKTsKKyAgdm9pZCBmMSh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQg ZjEodGhpcyBYMiBjb25zdCB2b2xhdGlsZSYmKTsKKworICB2b2lkIGZjMCh0aGlzIFgyICYpOwor ICB2b2lkIGZjMCh0aGlzIFgyICYmKTsKKyAgdm9pZCBmYzAoKSBjb25zdCY7CisgIHZvaWQgZmMw KHRoaXMgWDIgY29uc3QmJik7CisgIHZvaWQgZmMwKHRoaXMgWDIgdm9sYXRpbGUmKTsKKyAgdm9p ZCBmYzAodGhpcyBYMiB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmYzAodGhpcyBYMiBjb25zdCB2b2xh dGlsZSYpOworICB2b2lkIGZjMCh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQg ZmMxKHRoaXMgWDIgJik7CisgIHZvaWQgZmMxKHRoaXMgWDIgJiYpOworICB2b2lkIGZjMSh0aGlz IFgyIGNvbnN0Jik7CisgIHZvaWQgZmMxKCkgY29uc3QmJjsKKyAgdm9pZCBmYzEodGhpcyBYMiB2 b2xhdGlsZSYpOworICB2b2lkIGZjMSh0aGlzIFgyIHZvbGF0aWxlJiYpOworICB2b2lkIGZjMSh0 aGlzIFgyIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmMxKHRoaXMgWDIgY29uc3Qgdm9sYXRp bGUmJik7CisKKyAgdm9pZCBmdjAodGhpcyBYMiAmKTsKKyAgdm9pZCBmdjAodGhpcyBYMiAmJik7 CisgIHZvaWQgZnYwKHRoaXMgWDIgY29uc3QmKTsKKyAgdm9pZCBmdjAodGhpcyBYMiBjb25zdCYm KTsKKyAgdm9pZCBmdjAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZnYwKHRoaXMgWDIgdm9sYXRpbGUm Jik7CisgIHZvaWQgZnYwKHRoaXMgWDIgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmdjAodGhp cyBYMiBjb25zdCB2b2xhdGlsZSYmKTsKKworICB2b2lkIGZ2MSh0aGlzIFgyICYpOworICB2b2lk IGZ2MSh0aGlzIFgyICYmKTsKKyAgdm9pZCBmdjEodGhpcyBYMiBjb25zdCYpOworICB2b2lkIGZ2 MSh0aGlzIFgyIGNvbnN0JiYpOworICB2b2lkIGZ2MSh0aGlzIFgyIHZvbGF0aWxlJik7CisgIHZv aWQgZnYxKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmdjEodGhpcyBYMiBjb25zdCB2b2xhdGlsZSYp OworICB2b2lkIGZ2MSh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQgZmN2MCh0 aGlzIFgyICYpOworICB2b2lkIGZjdjAodGhpcyBYMiAmJik7CisgIHZvaWQgZmN2MCh0aGlzIFgy IGNvbnN0Jik7CisgIHZvaWQgZmN2MCh0aGlzIFgyIGNvbnN0JiYpOworICB2b2lkIGZjdjAodGhp cyBYMiB2b2xhdGlsZSYpOworICB2b2lkIGZjdjAodGhpcyBYMiB2b2xhdGlsZSYmKTsKKyAgdm9p ZCBmY3YwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZjdjAodGhpcyBYMiBjb25zdCB2b2xh dGlsZSYmKTsKKworICB2b2lkIGZjdjEodGhpcyBYMiAmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDIg JiYpOworICB2b2lkIGZjdjEodGhpcyBYMiBjb25zdCYpOworICB2b2lkIGZjdjEodGhpcyBYMiBj b25zdCYmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDIgdm9sYXRpbGUmKTsKKyAgdm9pZCBmY3YxKHRo aXMgWDIgdm9sYXRpbGUmJik7CisgIHZvaWQgZmN2MSh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJik7 CisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0aWxlJiY7Cit9OworCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWM0LkMgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWM0LkMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY5MWVmNjgwNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljNC5DCkBAIC0wLDAgKzEs MTEzIEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9 CisKKy8vIHZhbGlkIG92ZXJsb2FkaW5nIG9mIGlvYmogbWVtYmVyIGZ1bmN0aW9ucyB3aXRob3V0 IHJlZiBxdWFsaWZpZXJzCisvLyB3aXRoIHhvYmogbWVtYmVyIGZ1bmN0aW9ucyAoYW5kIHZpY2Ut dmVyc2EpCisKKy8vIHRoaXMgaXMgdGhlIG1vc3QgeW91IGNhbiBtaXggdGhlc2UsIGl0IG1heSBs b29rIHNob3J0IGJ1dCBpdCBkb2VzIHRlc3QKKy8vIGFsbCBhbGxvd2VkIGNhc2VzIChvdGhlciB0 aGFuIGJ5LXZhbHVlIGFuZCB1bnJlbGF0ZWQgdHlwZXMpCisKKy8vIFtvdmVyLm1hdGNoLmZ1bmNz LmdlbmVyYWwuNF0KKy8vIEZvciBpbXBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9ucywgdGhl IHR5cGUgb2YgdGhlIGltcGxpY2l0CisvLyBvYmplY3QgcGFyYW1ldGVyIGlzCisvLyAtLSDigJxs dmFsdWUgcmVmZXJlbmNlIHRvIGN2IFjigJ0gZm9yIGZ1bmN0aW9ucyBkZWNsYXJlZAorLy8gICAg d2l0aG91dCBhIHJlZi1xdWFsaWZpZXIgb3Igd2l0aCB0aGUgJiByZWYtcXVhbGlmaWVyCisvLyAt LSDigJxydmFsdWUgcmVmZXJlbmNlIHRvIGN2IFjigJ0gZm9yIGZ1bmN0aW9ucyBkZWNsYXJlZCB3 aXRoCisvLyAgICB0aGUgJiYgcmVmLXF1YWxpZmllcgorCisvLyBbYmFzaWMuc2NvcGUuc2NvcGUu M10KKy8vIFR3byBub24tc3RhdGljIG1lbWJlciBmdW5jdGlvbnMgaGF2ZSBjb3JyZXNwb25kaW5n IG9iamVjdAorLy8gcGFyYW1ldGVycyBpZjoKKy8vIC0tIGV4YWN0bHkgb25lIGlzIGFuIGltcGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gd2l0aCBubworLy8gICAgcmVmLXF1YWxpZmllciBh bmQgdGhlIHR5cGVzIG9mIHRoZWlyIG9iamVjdCBwYXJhbWV0ZXJzCisvLyAgICAoW2RjbC5mY3Rd KSwgYWZ0ZXIgcmVtb3ZpbmcgdG9wLWxldmVsIHJlZmVyZW5jZXMsIGFyZSB0aGUKKy8vICAgIHNh bWUsIG9yCisKKy8vIGluIHNpbXBsZXIgdGVybXMsIG9ubHkgdGhlIGN2IHF1YWxpZmljYXRpb24g b2YgdGhlIGV4cGxpY2l0L2ltcGxpY2l0IG9iamVjdAorLy8gcGFyYW1ldGVyIG1hdHRlciBmb3Ig ZGV0ZXJtaW5pbmcgd2hldGhlciB0aGVzZSBhcmUgcmVkZWNsYXJhdGlvbnMgb3Igb3ZlcmxvYWRz CisvLyAod2hlbiBhIHJlZiBxdWFsaWZpZXIgaXMgbm90IHByZXNlbnQgb24gdGhlIGlvYmogbWVt YmVyIGZ1bmN0aW9uKQorCisvLyB4b2JqIGZpcnN0LCBpb2JqIGxhc3QKKworc3RydWN0IFMwIHsK KyAgdm9pZCBmKHRoaXMgUzAgJik7CisgIHZvaWQgZih0aGlzIFMwICYmKTsKKyAgdm9pZCBmKCkg Y29uc3Q7CisgIHZvaWQgZigpIHZvbGF0aWxlOworICB2b2lkIGYoKSBjb25zdCB2b2xhdGlsZTsK KworICB2b2lkIGZjKHRoaXMgUzAgY29uc3QmKTsKKyAgdm9pZCBmYyh0aGlzIFMwIGNvbnN0JiYp OworICB2b2lkIGZjKCk7CisgIHZvaWQgZmMoKSB2b2xhdGlsZTsKKyAgdm9pZCBmYygpIGNvbnN0 IHZvbGF0aWxlOworCisgIHZvaWQgZnYodGhpcyBTMCB2b2xhdGlsZSYpOworICB2b2lkIGZ2KHRo aXMgUzAgdm9sYXRpbGUmJik7CisgIHZvaWQgZnYoKTsKKyAgdm9pZCBmdigpIGNvbnN0OworICB2 b2lkIGZ2KCkgY29uc3Qgdm9sYXRpbGU7CisKKyAgdm9pZCBmY3YodGhpcyBTMCBjb25zdCB2b2xh dGlsZSYpOworICB2b2lkIGZjdih0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJiYpOworICB2b2lkIGZj digpOworICB2b2lkIGZjdigpIGNvbnN0OworICB2b2lkIGZjdigpIHZvbGF0aWxlOworfTsKKwor Ly8gaW9iaiBmaXJzdCwgeG9iaiBsYXN0CisKK3N0cnVjdCBTMSB7CisgIHZvaWQgZigpIGNvbnN0 OworICB2b2lkIGYoKSB2b2xhdGlsZTsKKyAgdm9pZCBmKCkgY29uc3Qgdm9sYXRpbGU7CisgIHZv aWQgZih0aGlzIFMxICYpOworICB2b2lkIGYodGhpcyBTMSAmJik7CisKKyAgdm9pZCBmYygpOwor ICB2b2lkIGZjKCkgdm9sYXRpbGU7CisgIHZvaWQgZmMoKSBjb25zdCB2b2xhdGlsZTsKKyAgdm9p ZCBmYyh0aGlzIFMxIGNvbnN0Jik7CisgIHZvaWQgZmModGhpcyBTMSBjb25zdCYmKTsKKworICB2 b2lkIGZ2KCk7CisgIHZvaWQgZnYoKSBjb25zdDsKKyAgdm9pZCBmdigpIGNvbnN0IHZvbGF0aWxl OworICB2b2lkIGZ2KHRoaXMgUzEgdm9sYXRpbGUmKTsKKyAgdm9pZCBmdih0aGlzIFMxIHZvbGF0 aWxlJiYpOworCisgIHZvaWQgZmN2KCk7CisgIHZvaWQgZmN2KCkgY29uc3Q7CisgIHZvaWQgZmN2 KCkgdm9sYXRpbGU7CisgIHZvaWQgZmN2KHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9p ZCBmY3YodGhpcyBTMSBjb25zdCB2b2xhdGlsZSYmKTsKK307CisKKy8vIGluIG9yZGVyCisKK3N0 cnVjdCBTMiB7CisgIHZvaWQgZih0aGlzIFMyICYpOworICB2b2lkIGYodGhpcyBTMiAmJik7Cisg IHZvaWQgZigpIGNvbnN0OworICB2b2lkIGYoKSB2b2xhdGlsZTsKKyAgdm9pZCBmKCkgY29uc3Qg dm9sYXRpbGU7CisKKyAgdm9pZCBmYygpOworICB2b2lkIGZjKHRoaXMgUzIgY29uc3QmKTsKKyAg dm9pZCBmYyh0aGlzIFMyIGNvbnN0JiYpOworICB2b2lkIGZjKCkgdm9sYXRpbGU7CisgIHZvaWQg ZmMoKSBjb25zdCB2b2xhdGlsZTsKKworICB2b2lkIGZ2KCk7CisgIHZvaWQgZnYoKSBjb25zdDsK KyAgdm9pZCBmdih0aGlzIFMyIHZvbGF0aWxlJik7CisgIHZvaWQgZnYodGhpcyBTMiB2b2xhdGls ZSYmKTsKKyAgdm9pZCBmdigpIGNvbnN0IHZvbGF0aWxlOworCisgIHZvaWQgZmN2KCk7CisgIHZv aWQgZmN2KCkgY29uc3Q7CisgIHZvaWQgZmN2KCkgdm9sYXRpbGU7CisgIHZvaWQgZmN2KHRoaXMg UzIgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmY3YodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYm KTsKK307CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1iYXNpYzUuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1i YXNpYzUuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGUzYzRmYTlh OWEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotYmFzaWM1LkMKQEAgLTAsMCArMSwzMSBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBy dW4geyB0YXJnZXQgYysrMjMgfSB9CisKK2lubGluZSBjb25zdGV4cHIgaW50IG1hZ2ljID0gNDI7 CisKK3N0cnVjdCBTMCB7CisgIG9wZXJhdG9yIGludCh0aGlzIFMwIGNvbnN0JikgeworICAgIHJl dHVybiBtYWdpYzsKKyAgfQorfTsKKworc3RydWN0IFMxIHsKKyAgaW50IF92OworICBpbnQgZih0 aGlzIGludCBzZWxmKSB7CisgICAgcmV0dXJuIHNlbGY7CisgIH0KKyAgb3BlcmF0b3IgaW50KHRo aXMgUzEgY29uc3QmIHNlbGYpIHsKKyAgICByZXR1cm4gc2VsZi5fdjsKKyAgfQorfTsKKworaW50 IG1haW4oKQoreworICBpZiAoUzB7fSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7 CisKKyAgUzEgc3s0Mn07CisgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHMpICE9IG1hZ2ljKQorICAg IF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi41ZWE1YmNiN2ZhYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTEuQwpAQCAtMCwwICsxLDQ4IEBA CisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIHJ1biB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gY29u dmVyc2lvbiBvZiB0aGUgaW1wbGljaXQgb2JqZWN0IGFyZ3VtZW50IHRvIGFuIHhvYmogcGFyYW1l dGVyCisvLyB3aGVuIGNhbGxpbmcgYnkgdmFsdWUgeG9iaiBtZW1iZXIgZnVuY3Rpb25zCisKKy8v IFRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHhvYmogbWVtYmVyIGZ1bmN0aW9ucyBpbmNv cnJlY3RseSBkaWQgbm90CisvLyBjb252ZXJ0IHRoZSBpbXBsaWNpdCBvYmplY3QgYXJndW1lbnQg d2hlbiBiaW5kaW5nIHRvIHRoZSB4b2JqCisvLyBwYXJhbWV0ZXIuIEluIHNwaXRlIG9mIHRoaXMs IGl0IGRpZCBjb3JyZWN0bHkgY2hlY2sgdG8gc2VlIGlmIHN1Y2ggYQorLy8gY29udmVyc2lvbiB3 b3VsZCBiZSB2YWxpZCwgdGh1cyBubyBkaWFnbm9zdGljIHdvdWxkIGJlIGVtaXR0ZWQgd2hlbiBh CisvLyBjb252ZXJzaW9uIHdhcyB2YWxpZCwgYnV0IGluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIGNv bnZlcnNpb24sIHRoZQorLy8gYXJndW1lbnQgd291bGQgc2lsZW50bHkgYmUgcmVpbnRlcnByZXRl ZCBhcyB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyLiAKKworLy8gVGhpcyBpcyB3aHkgd2UgdXNl IHVpbnRwdHJfdCBmb3IgdGhlIHZhbHVlIGluIFMgYW5kIGNvbXBhcmUgdGhlIHJlc3VsdAorLy8g b2YgZiB0byAmcywgd2Ugd2FudCB0byB0ZXN0IGZvciBzaW1wbGUgcmVpbnRlcnByZXRhdGlvbiBv ZiB0aGUKKy8vIGFyZ3VtZW50LiBUbyBhY2N1cmF0ZWx5IHRlc3QgZm9yIHRoaXMgd2UgbWFrZSBz dXJlIHRvIHVzZSBhbiBvYmplY3QKKy8vIHRoYXQgaGFzIGEgZGlmZmVyZW50IGFkZHJlc3MgdGhh biB0aGUgdmFsdWUgb2Ygb3VyIG1hZ2ljIG51bWJlci4gSXQncworLy8gYW4gaW1wb3NzaWJseSBp bXByb2JhYmxlIGVkZ2UgY2FzZSBidXQgaXQncyB0cml2aWFsIHRvIHdvcmsgYXJvdW5kLiBXZQor Ly8gc3RpbGwgY29tcGFyZSBhZ2FpbnN0IGJvdGggdGhlIGFkZHJlc3Mgb2YgcyBhbmQgdGhlIG1h Z2ljIG51bWJlciBzbyB3ZQorLy8gY2FuIGFkZGl0aW9uYWxseSB0ZXN0IGZvciBidWdnZWQgY29u dmVyc2lvbnMsIHdoaWxlIGFsc28KKy8vIGRpZmZlcmVudGlhdGluZyB0aGF0IGNhc2UgZnJvbSBy ZWludGVycHJldGF0aW9uIG9mIHRoZSBhcmd1bWVudC4KKwordXNpbmcgdWludHB0cl90ID0gX19V SU5UUFRSX1RZUEVfXzsKK2lubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1hZ2ljID0gNDI7CisK K3N0cnVjdCBTIHsKKyAgICB1aW50cHRyX3QgX3Y7CisgICAgdWludHB0cl90IGYodGhpcyBTIHNl bGYpIHsKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Y7CisgICAgfQorfTsKKworaW50IG1haW4oKSAK K3sKKyAgUyBzMHttYWdpY307CisgIFMgczF7bWFnaWN9OworICAvLyBwcmV2ZW50IChhYnN1cmRs eSBpbXByb2JhYmxlKSBib2d1cyBmYWlsdXJlcworICBTJiBzID0gbWFnaWMgIT0gKHVpbnRwdHJf dCkoJnMwKSA/IHMwIDogczE7CisKKyAgdWludHB0cl90IGNvbnN0IHJldCA9IHMuZigpOworICAv LyBjaGVjayBmb3IgcmVpbnRlcnByZXRhdGlvbiBvZiB0aGUgb2JqZWN0IGFyZ3VtZW50CisgIGlm IChyZXQgPT0gKHVpbnRwdHJfdCkoJnMpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8g Y2hlY2sgZm9yIGEgYnVnZ2VkIGNvbnZlcnNpb24KKyAgaWYgKHJldCAhPSBtYWdpYykKKyAgICBf X2J1aWx0aW5fYWJvcnQgKCk7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTIuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTIuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uYjhlOGU3M2RmYWYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWUyLkMKQEAgLTAsMCArMSw1OCBAQAor Ly8gUDA4NDdSNworLy8geyBkZy1kbyBydW4geyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIGNvbnZl cnNpb24gb2YgdGhlIGltcGxpY2l0IG9iamVjdCBhcmd1bWVudCB0byBhbiB4b2JqIHBhcmFtZXRl cgorLy8gdXNpbmcgYSB1c2VyIGRlZmluZWQgY29udmVyc2lvbiBvciBjb252ZXJ0aW5nIGNvbnN0 cnVjdG9yCisvLyB3aGVuIGNhbGxpbmcgYnkgdmFsdWUgeG9iaiBtZW1iZXIgZnVuY3Rpb25zCisK Ky8vIHNlZSBleHBsaWNpdC1vYmotYnktdmFsdWUxLkMgZm9yIGRldGFpbHMgb24gdGhpcyB0ZXN0 CisKK3VzaW5nIHVpbnRwdHJfdCA9IF9fVUlOVFBUUl9UWVBFX187CitpbmxpbmUgY29uc3RleHBy IHVpbnRwdHJfdCBtYWdpYyA9IDQyOworCitzdHJ1Y3QgUzsKKworc3RydWN0IEZyb21TIHsKKyAg dWludHB0cl90IF92OworICBGcm9tUyhTKTsKK307CisKK3N0cnVjdCBTIHsKKyAgb3BlcmF0b3Ig dWludHB0cl90KCkgY29uc3QgeworICAgIHJldHVybiBtYWdpYzsKKyAgfQorICB1aW50cHRyX3Qg Zih0aGlzIHVpbnRwdHJfdCBuKSB7CisgICAgcmV0dXJuIG47CisgIH0KKyAgdWludHB0cl90IGco dGhpcyBGcm9tUyBmcm9tX3MpIHsKKyAgICByZXR1cm4gZnJvbV9zLl92OworICB9Cit9OworCitG cm9tUzo6RnJvbVMoUykgOiBfdihtYWdpYykge30KKworCitpbnQgbWFpbigpIAoreworICBTIHMw e307CisgIFMgczF7fTsKKyAgLy8gcHJldmVudCAoYWJzdXJkbHkgaW1wcm9iYWJsZSkgYm9ndXMg ZmFpbHVyZXMKKyAgUyYgcyA9IG1hZ2ljICE9ICh1aW50cHRyX3QpKCZzMCkgPyBzMCA6IHMxOwor CisgIHVpbnRwdHJfdCBjb25zdCByZXQwID0gcy5mKCk7CisgIC8vIGNoZWNrIGZvciByZWludGVy cHJldGF0aW9uIG9mIHRoZSBvYmplY3QgYXJndW1lbnQKKyAgaWYgKHJldDAgPT0gKHVpbnRwdHJf dCkoJnMpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8gY2hlY2sgZm9yIGEgYnVnZ2Vk IGNvbnZlcnNpb24KKyAgaWYgKHJldDAgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgp OworCisgIHVpbnRwdHJfdCBjb25zdCByZXQxID0gcy5nKCk7CisgIC8vIGNoZWNrIGZvciByZWlu dGVycHJldGF0aW9uIG9mIHRoZSBvYmplY3QgYXJndW1lbnQKKyAgaWYgKHJldDEgPT0gKHVpbnRw dHJfdCkoJnMpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8gY2hlY2sgZm9yIGEgYnVn Z2VkIGNvbnZlcnNpb24KKyAgaWYgKHJldDEgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0 ICgpOworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotYnktdmFsdWUzLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotYnktdmFsdWUzLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU2 YWZmMDE5MGZiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWJ5LXZhbHVlMy5DCkBAIC0wLDAgKzEsNDEgQEAKKy8vIFAwODQ3UjcKKy8v IHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBjb3JyZWN0IGNvbnN0cnVjdG9y IHNlbGVjdGlvbiB3aGVuIGluaXRpYWxpemluZyBhIGJ5IHZhbHVlIHhvYmogcGFyYW1ldGVyCisK Ky8vIHNlZSBleHBsaWNpdC1vYmotYnktdmFsdWUxLkMgZm9yIGRldGFpbHMgb24gdGhpcyB0ZXN0 CisKK3VzaW5nIHVpbnRwdHJfdCA9IF9fVUlOVFBUUl9UWVBFX187CitpbmxpbmUgY29uc3RleHBy IHVpbnRwdHJfdCBtYWdpYyA9IDQyOworaW5saW5lIGNvbnN0ZXhwciB1aW50cHRyX3QgY29weV9t YWdpYyA9IDU7CitpbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBtb3ZlX21hZ2ljID0gMTA7CisK K3N0cnVjdCBTIHsKKyAgdWludHB0cl90IF92OworICBleHBsaWNpdCBTKHVpbnRwdHJfdCB2KSA6 IF92KHYpIHt9CisgIFMoUyBjb25zdCYgb3RoZXIpIDogX3Yob3RoZXIuX3YgKyBjb3B5X21hZ2lj KSB7fQorICBTKFMmJiBvdGhlcikgOiBfdihvdGhlci5fdiArIG1vdmVfbWFnaWMpIHt9CisgIHVp bnRwdHJfdCBmKHRoaXMgUyBzZWxmKSB7CisgICAgcmV0dXJuIHNlbGYuX3Y7CisgIH0KK307CisK K2ludCBtYWluKCkgCit7CisgIFMgczB7bWFnaWN9OworICBTIHMxe21hZ2ljfTsKKyAgLy8gcHJl dmVudCAoYWJzdXJkbHkgaW1wcm9iYWJsZSAoXjIpKSBib2d1cyByZXN1bHRzCisgIC8vIGl0J3Mg dmlydHVhbGx5IGltcG9zc2libGUgZm9yIGJvdGggdG8gaGF2ZSBhIGJvZ3VzIHJlc3VsdCwKKyAg Ly8gYnV0IHdlIGNhbiBndWFyYW50ZWUgY29ycmVjdCByZXN1bHRzIGZyb20gYm90aCBlYXNpbHks IHNvIHdoeSBub3Q/CisgIFMmIHNfY29weV9mcm9tID0gbWFnaWMgKyBjb3B5X21hZ2ljICE9ICh1 aW50cHRyX3QpKCZzMCkgPyBzMCA6IHMxOworICBTJiBzX21vdmVfZnJvbSA9IG1hZ2ljICsgbW92 ZV9tYWdpYyAhPSAodWludHB0cl90KSgmczApID8gczAgOiBzMTsKKyAgdWludHB0cl90IGNvbnN0 IGNvcHlfcmV0ID0gc3RhdGljX2Nhc3Q8UyBjb25zdCY+KHNfY29weV9mcm9tKS5mKCk7CisgIHVp bnRwdHJfdCBjb25zdCBtb3ZlX3JldCA9IHN0YXRpY19jYXN0PFMmJj4oc19tb3ZlX2Zyb20pLmYo KTsKKyAgLy8gd2UgdGVzdCBzcGVjaWZpY2FsbHkgZm9yIHJlaW50ZXJwcmV0YXRpb24gaW4gb3Ro ZXIKKyAgLy8gYnkgdmFsdWUgdGVzdHMsIGl0J3MgdW5uZWNlc3NhcnkgdG8gZG8gaXQgYWdhaW4g aGVyZQorICBpZiAoY29weV9yZXQgIT0gbWFnaWMgKyBjb3B5X21hZ2ljKQorICAgIF9fYnVpbHRp bl9hYm9ydCAoKTsKKyAgaWYgKG1vdmVfcmV0ICE9IG1hZ2ljICsgbW92ZV9tYWdpYykKKyAgICBf X2J1aWx0aW5fYWJvcnQgKCk7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTQuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uOWI0ZTAwNTgyY2YKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWU0LkMKQEAgLTAsMCArMSwyMCBAQAor Ly8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBk aWFnbm9zaXMgb2YgaWxsLWZvcm1lZCBjYWxscyB0byBieS12YWx1ZSB4b2JqIG1lbWJlciBmdW5j dGlvbnMKKy8vIGR1ZSB0byBhbiBhYnNlbmNlIG9mIHZhbGlkIGNvbnZlcnNpb24gZnVuY3Rpb25z CisKK3N0cnVjdCBOb3RGcm9tUyB7fTsKKworc3RydWN0IFMgeworICB2b2lkIGYodGhpcyBpbnQp IHt9CisgIHZvaWQgZyh0aGlzIE5vdEZyb21TKSB7fQorfTsKKwordm9pZCB0ZXN0KCkKK3sKKyAg UyBze307CisgIHMuZigpOyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgY29udmVydCAnUycgdG8gJ2lu dCd9IH0KKyAgcy5nKCk7IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBjb252ZXJ0ICdTJyB0byAnTm90 RnJvbVMnfSB9Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1jb25zdHJhaW50cy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhw bGljaXQtb2JqLWNvbnN0cmFpbnRzLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjdlZjk4NzdiNjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWNvbnN0cmFpbnRzLkMKQEAgLTAsMCArMSw0NzAgQEAKKy8v IFAwODQ3UjcKKy8vIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBvdmVybG9h ZCByZXNvbHV0aW9uIG9mIHN0YXRpYy94b2JqIGFuZCBpb2JqL3hvYmogbWVtYmVyIGZ1bmN0aW9u cworLy8gd2l0aCBjb25zdHJhaW50cworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uY2VwdCBD b25zdHJhaW4gPSB0cnVlOworCitpbmxpbmUgY29uc3RleHByIGludCBpb2JqX2ZuID0gNTsKK2lu bGluZSBjb25zdGV4cHIgaW50IHhvYmpfZm4gPSAxMDsKK2lubGluZSBjb25zdGV4cHIgaW50IHN0 YXRpY19mbiA9IDIwOworCisvLyBOT1RFLCBKYXNvbiBNZXJyaWwgZG9lc24ndCB0aGluayB0aGUg c3RhdGljIGNhc2VzIGFyZSBuZWNjZXNhcmlseSBjb3JyZWN0CisKKy8qIGh0dHBzOi8vZ2NjLmdu dS5vcmcvcGlwZXJtYWlsL2djYy1wYXRjaGVzLzIwMjMtRGVjZW1iZXIvNjM5MDUyLmh0bWwKKyAg IEkgd291bGQgYWN0dWFsbHkgZXhwZWN0IHRoZSBzdGF0aWMgZnVuY3Rpb24gdG8gYmUgY2hvc2Vu IGFzIG1vcmUKKyAgIHNwZWNpYWxpemVkIGJlZm9yZSB3ZSBnZXQgdG8gY29uc2lkZXJpbmcgY29u c3RyYWludHMsIGp1c3QgYXMgd2l0aAorCisgICB2b2lkIGYoYXV0bywgQ29uc3RyYWluIGF1dG8p ID0gZGVsZXRlOworICAgdm9pZCBmKGNvbnN0IFMmLCBhdXRvKSB7fQorICAgaW50IG1haW4oKSB7 IGYoU3t9LDApOyB9IC8vIE9LCisKKyAgIFRob3VnaCBpdCBsb29rcyBsaWtlIFt0ZW1wLmZ1bmMu b3JkZXJdIG5lZWRzIHRvIGJlIGFkanVzdGVkIGZvciBleHBsaWNpdAorICAgb2JqZWN0IHBhcmFt ZXRlcnMuICBBbmQgbW9yZV9zcGVjaWFsaXplZF9mbiBpbiBnY2Mgc3RpbGwgaGFzIGFuIG91dGRh dGVkCisgICBoYW5kbGluZyBvZiBvYmplY3QgcGFyYW1ldGVycyB0aGF0IGp1c3Qgc2tpcHMgdGhl bSwgZnJvbSBiZWZvcmUgdGhlCisgICBjbGVhcmVyIHNwZWNpZmljYXRpb24gaW4gQysrMTEgYW5k IGxhdGVyOyB0aGlzIGlzIFBSNTM0OTkuICBObyBuZWVkIHRvCisgICBhZGRyZXNzIHRoYXQgcHJl ZXhpc3RpbmcgYnVnIGluIHRoaXMgcGF0Y2guICAqLworCisvLyBmaXJzdCAyIGxldHRlcnMgYXJl IHRoZSBvcmRlciBvZiB0aGUgZGVmaW5pdGlvbnMKKy8vIHRoZSBjb25zdHJhaW50IGFwcGxpZXMg dG8gdGhlIGZpcnN0IGRlZmluaXRpb24sCisvLyBmb3IgKl9yIGNhc2VzIHRoZSBjb25zdHJhaW50 IGFwcGxpZXMgdG8gdGhlIHNlY29uZAorCitzdHJ1Y3QgUyB7CisgIC8vIHhvYmovc3RhdGljCisg IGludCBmX3hzX3YodGhpcyBTLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsK KyAgc3RhdGljIGludCBmX3hzX3YoYXV0bykgeyByZXR1cm4gc3RhdGljX2ZuOyB9OworCisgIGlu dCBmX3hzX3JlZih0aGlzIFMmLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsK KyAgc3RhdGljIGludCBmX3hzX3JlZihhdXRvKSB7IHJldHVybiBzdGF0aWNfZm47IH07CisKKyAg aW50IGZfeHNfY3JlZih0aGlzIFMgY29uc3QmLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9i al9mbjsgfTsKKyAgc3RhdGljIGludCBmX3hzX2NyZWYoYXV0bykgeyByZXR1cm4gc3RhdGljX2Zu OyB9OworCisgIGludCBmX3hzX3JyZWYodGhpcyBTJiYsIENvbnN0cmFpbiBhdXRvKSB7IHJldHVy biB4b2JqX2ZuOyB9OworICBzdGF0aWMgaW50IGZfeHNfcnJlZihhdXRvKSB7IHJldHVybiBzdGF0 aWNfZm47IH07CisKKyAgaW50IGZfeHNfY3JyZWYodGhpcyBTIGNvbnN0JiYsIENvbnN0cmFpbiBh dXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworICBzdGF0aWMgaW50IGZfeHNfY3JyZWYoYXV0bykg eyByZXR1cm4gc3RhdGljX2ZuOyB9OworCisgIGludCBmX3hzX2R2KHRoaXMgYXV0bywgQ29uc3Ry YWluIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisgIHN0YXRpYyBpbnQgZl94c19kdihhdXRv KSB7IHJldHVybiBzdGF0aWNfZm47IH07CisKKyAgaW50IGZfeHNfZGNyZWYodGhpcyBhdXRvIGNv bnN0JiwgQ29uc3RyYWluIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisgIHN0YXRpYyBpbnQg Zl94c19kY3JlZihhdXRvKSB7IHJldHVybiBzdGF0aWNfZm47IH07CisKKyAgaW50IGZfeHNfZGZ3 ZHJlZih0aGlzIGF1dG8mJiwgQ29uc3RyYWluIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07Cisg IHN0YXRpYyBpbnQgZl94c19kZndkcmVmKGF1dG8pIHsgcmV0dXJuIHN0YXRpY19mbjsgfTsKKwor ICAvLyBfcgorICBpbnQgZl94c192X3IodGhpcyBTLCBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9 OworICBzdGF0aWMgaW50IGZfeHNfdl9yKENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiBzdGF0aWNf Zm47IH07CisKKyAgaW50IGZfeHNfcmVmX3IodGhpcyBTJiwgYXV0bykgeyByZXR1cm4geG9ial9m bjsgfTsKKyAgc3RhdGljIGludCBmX3hzX3JlZl9yKENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiBz dGF0aWNfZm47IH07CisKKyAgaW50IGZfeHNfY3JlZl9yKHRoaXMgUyBjb25zdCYsIGF1dG8pIHsg cmV0dXJuIHhvYmpfZm47IH07CisgIHN0YXRpYyBpbnQgZl94c19jcmVmX3IoQ29uc3RyYWluIGF1 dG8pIHsgcmV0dXJuIHN0YXRpY19mbjsgfTsKKworICBpbnQgZl94c19ycmVmX3IodGhpcyBTJiYs IGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisgIHN0YXRpYyBpbnQgZl94c19ycmVmX3IoQ29u c3RyYWluIGF1dG8pIHsgcmV0dXJuIHN0YXRpY19mbjsgfTsKKworICBpbnQgZl94c19jcnJlZl9y KHRoaXMgUyBjb25zdCYmLCBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworICBzdGF0aWMgaW50 IGZfeHNfY3JyZWZfcihDb25zdHJhaW4gYXV0bykgeyByZXR1cm4gc3RhdGljX2ZuOyB9OworCisg IGludCBmX3hzX2R2X3IodGhpcyBhdXRvLCBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworICBz dGF0aWMgaW50IGZfeHNfZHZfcihDb25zdHJhaW4gYXV0bykgeyByZXR1cm4gc3RhdGljX2ZuOyB9 OworCisgIGludCBmX3hzX2RjcmVmX3IodGhpcyBhdXRvIGNvbnN0JiwgYXV0bykgeyByZXR1cm4g eG9ial9mbjsgfTsKKyAgc3RhdGljIGludCBmX3hzX2RjcmVmX3IoQ29uc3RyYWluIGF1dG8pIHsg cmV0dXJuIHN0YXRpY19mbjsgfTsKKworICBpbnQgZl94c19kZndkcmVmX3IodGhpcyBhdXRvJiYs IGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisgIHN0YXRpYyBpbnQgZl94c19kZndkcmVmX3Io Q29uc3RyYWluIGF1dG8pIHsgcmV0dXJuIHN0YXRpY19mbjsgfTsKKworICAvLyBzdGF0aWMveG9i agorICBzdGF0aWMgaW50IGZfc3hfdihDb25zdHJhaW4gYXV0bykgeyByZXR1cm4gc3RhdGljX2Zu OyB9OworICBpbnQgZl9zeF92KHRoaXMgUywgYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKwor ICBzdGF0aWMgaW50IGZfc3hfcmVmKENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiBzdGF0aWNfZm47 IH07CisgIGludCBmX3N4X3JlZih0aGlzIFMmLCBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9Owor CisgIHN0YXRpYyBpbnQgZl9zeF9jcmVmKENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiBzdGF0aWNf Zm47IH07CisgIGludCBmX3N4X2NyZWYodGhpcyBTIGNvbnN0JiwgYXV0bykgeyByZXR1cm4geG9i al9mbjsgfTsKKworICBzdGF0aWMgaW50IGZfc3hfcnJlZihDb25zdHJhaW4gYXV0bykgeyByZXR1 cm4gc3RhdGljX2ZuOyB9OworICBpbnQgZl9zeF9ycmVmKHRoaXMgUyYmLCBhdXRvKSB7IHJldHVy biB4b2JqX2ZuOyB9OworCisgIHN0YXRpYyBpbnQgZl9zeF9jcnJlZihDb25zdHJhaW4gYXV0bykg eyByZXR1cm4gc3RhdGljX2ZuOyB9OworICBpbnQgZl9zeF9jcnJlZih0aGlzIFMgY29uc3QmJiwg YXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKworICBzdGF0aWMgaW50IGZfc3hfZHYoQ29uc3Ry YWluIGF1dG8pIHsgcmV0dXJuIHN0YXRpY19mbjsgfTsKKyAgaW50IGZfc3hfZHYodGhpcyBhdXRv LCBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworCisgIHN0YXRpYyBpbnQgZl9zeF9kY3JlZihD b25zdHJhaW4gYXV0bykgeyByZXR1cm4gc3RhdGljX2ZuOyB9OworICBpbnQgZl9zeF9kY3JlZih0 aGlzIGF1dG8gY29uc3QmLCBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworCisgIHN0YXRpYyBp bnQgZl9zeF9kZndkcmVmKENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiBzdGF0aWNfZm47IH07Cisg IGludCBmX3N4X2Rmd2RyZWYodGhpcyBhdXRvJiYsIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07 CisKKyAgLy8gX3IKKyAgc3RhdGljIGludCBmX3N4X3ZfcihhdXRvKSB7IHJldHVybiBzdGF0aWNf Zm47IH07CisgIGludCBmX3N4X3Zfcih0aGlzIFMsIENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiB4 b2JqX2ZuOyB9OworCisgIHN0YXRpYyBpbnQgZl9zeF9yZWZfcihhdXRvKSB7IHJldHVybiBzdGF0 aWNfZm47IH07CisgIGludCBmX3N4X3JlZl9yKHRoaXMgUyYsIENvbnN0cmFpbiBhdXRvKSB7IHJl dHVybiB4b2JqX2ZuOyB9OworCisgIHN0YXRpYyBpbnQgZl9zeF9jcmVmX3IoYXV0bykgeyByZXR1 cm4gc3RhdGljX2ZuOyB9OworICBpbnQgZl9zeF9jcmVmX3IodGhpcyBTIGNvbnN0JiwgQ29uc3Ry YWluIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisKKyAgc3RhdGljIGludCBmX3N4X3JyZWZf cihhdXRvKSB7IHJldHVybiBzdGF0aWNfZm47IH07CisgIGludCBmX3N4X3JyZWZfcih0aGlzIFMm JiwgQ29uc3RyYWluIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisKKyAgc3RhdGljIGludCBm X3N4X2NycmVmX3IoYXV0bykgeyByZXR1cm4gc3RhdGljX2ZuOyB9OworICBpbnQgZl9zeF9jcnJl Zl9yKHRoaXMgUyBjb25zdCYmLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsK KworICBzdGF0aWMgaW50IGZfc3hfZHZfcihhdXRvKSB7IHJldHVybiBzdGF0aWNfZm47IH07Cisg IGludCBmX3N4X2R2X3IodGhpcyBhdXRvLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9ial9m bjsgfTsKKworICBzdGF0aWMgaW50IGZfc3hfZGNyZWZfcihhdXRvKSB7IHJldHVybiBzdGF0aWNf Zm47IH07CisgIGludCBmX3N4X2RjcmVmX3IodGhpcyBhdXRvIGNvbnN0JiwgQ29uc3RyYWluIGF1 dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisKKyAgc3RhdGljIGludCBmX3N4X2Rmd2RyZWZfcihh dXRvKSB7IHJldHVybiBzdGF0aWNfZm47IH07CisgIGludCBmX3N4X2Rmd2RyZWZfcih0aGlzIGF1 dG8mJiwgQ29uc3RyYWluIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisKKyAgLy8geG9iai9p b2JqIHdpdGggbWF0Y2hpbmcgb2JqZWN0IHBhcmFtZXRlcnMKKworICAvLyBXZSBhcmUgb25seSB0 ZXN0aW5nIGNvbnN0cmFpbnRzIGhlcmUsIHNvIHdlIG5lZWQgcGFyYW1ldGVyIGxpc3RzCisgIC8v IHRvIG1hdGNoLCB3aGljaCBtZWFucyB3ZSBuZWVkIGNvcnJlc3BvbmRpbmcgb2JqZWN0IHBhcmFt ZXRlcnMuCisgIC8vIFJlbWVtYmVyLCB0aGUgcnVsZXMgZm9yIG9iamVjdCBwYXJhbWV0ZXIgY29y cmVzcG9uZGVuY2UgYXJlIHdlaXJkLgorICAvLyAoW2Jhc2ljLnNjb3BlLnNjb3BlLTMuMV0pCisK KyAgLy8gKl9yZWZxdWFsIHRoZSBpb2JqIG1lbWJlciBmdW5jdGlvbiBoYXMgYSByZWZlcmVuY2Ug cXVhbGlmaWVyCisgIC8vICpfciB0aGUgY29uc3RyYWludCBhcHBsaWVzIHRvIHRoZSBzZWNvbmQg ZGVmaW5pdGlvbgorCisgIC8vIGl4CisgIGludCBmX2l4X20wKENvbnN0cmFpbiBhdXRvKSB7IHJl dHVybiBpb2JqX2ZuOyB9OworICBpbnQgZl9peF9tMCh0aGlzIFMmLCBhdXRvKSB7IHJldHVybiB4 b2JqX2ZuOyB9OworICAvLyBTZWUgbm90ZQorICBpbnQgZl9peF9tMShDb25zdHJhaW4gYXV0bykg eyByZXR1cm4gaW9ial9mbjsgfTsKKyAgaW50IGZfaXhfbTEodGhpcyBTJiYsIGF1dG8pIHsgcmV0 dXJuIHhvYmpfZm47IH07CisKKyAgaW50IGZfaXhfYzAoQ29uc3RyYWluIGF1dG8pIGNvbnN0IHsg cmV0dXJuIGlvYmpfZm47IH07CisgIGludCBmX2l4X2MwKHRoaXMgUyBjb25zdCYsIGF1dG8pIHsg cmV0dXJuIHhvYmpfZm47IH07CisgIC8vIFNlZSBub3RlCisgIGludCBmX2l4X2MxKENvbnN0cmFp biBhdXRvKSBjb25zdCB7IHJldHVybiBpb2JqX2ZuOyB9OworICBpbnQgZl9peF9jMSh0aGlzIFMg Y29uc3QmJiwgYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKyAgCisgIC8vIHhpCisgIGludCBm X3hpX20wKHRoaXMgUyYsIENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworICBp bnQgZl94aV9tMChhdXRvKSB7IHJldHVybiBpb2JqX2ZuOyB9OworICAvLyBTZWUgbm90ZQorICBp bnQgZl94aV9tMSh0aGlzIFMmJiwgQ29uc3RyYWluIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07 CisgIGludCBmX3hpX20xKGF1dG8pIHsgcmV0dXJuIGlvYmpfZm47IH07CisKKyAgaW50IGZfeGlf YzAodGhpcyBTIGNvbnN0JiwgQ29uc3RyYWluIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07Cisg IGludCBmX3hpX2MwKGF1dG8pIGNvbnN0IHsgcmV0dXJuIGlvYmpfZm47IH07CisgIC8vIFNlZSBu b3RlCisgIGludCBmX3hpX2MxKHRoaXMgUyBjb25zdCYmLCBDb25zdHJhaW4gYXV0bykgeyByZXR1 cm4geG9ial9mbjsgfTsKKyAgaW50IGZfeGlfYzEoYXV0bykgY29uc3QgeyByZXR1cm4gaW9ial9m bjsgfTsKKworICAvLyB3aXRoIHJlZiBxdWFsaWZpZXIKKworICAvLyBpeAorICBpbnQgZl9peF9t MF9yZWZxdWFsKENvbnN0cmFpbiBhdXRvKSAmIHsgcmV0dXJuIGlvYmpfZm47IH07CisgIGludCBm X2l4X20wX3JlZnF1YWwodGhpcyBTJiwgYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKworICBp bnQgZl9peF9tMV9yZWZxdWFsKENvbnN0cmFpbiBhdXRvKSAmJiB7IHJldHVybiBpb2JqX2ZuOyB9 OworICBpbnQgZl9peF9tMV9yZWZxdWFsKHRoaXMgUyYmLCBhdXRvKSB7IHJldHVybiB4b2JqX2Zu OyB9OworCisgIGludCBmX2l4X2MwX3JlZnF1YWwoQ29uc3RyYWluIGF1dG8pIGNvbnN0JiB7IHJl dHVybiBpb2JqX2ZuOyB9OworICBpbnQgZl9peF9jMF9yZWZxdWFsKHRoaXMgUyBjb25zdCYsIGF1 dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisKKyAgaW50IGZfaXhfYzFfcmVmcXVhbChDb25zdHJh aW4gYXV0bykgY29uc3QmJiB7IHJldHVybiBpb2JqX2ZuOyB9OworICBpbnQgZl9peF9jMV9yZWZx dWFsKHRoaXMgUyBjb25zdCYmLCBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworICAKKyAgLy8g eGkgCisgIGludCBmX3hpX20wX3JlZnF1YWwodGhpcyBTJiwgQ29uc3RyYWluIGF1dG8pIHsgcmV0 dXJuIHhvYmpfZm47IH07CisgIGludCBmX3hpX20wX3JlZnF1YWwoYXV0bykgJiB7IHJldHVybiBp b2JqX2ZuOyB9OworCisgIGludCBmX3hpX20xX3JlZnF1YWwodGhpcyBTJiYsIENvbnN0cmFpbiBh dXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworICBpbnQgZl94aV9tMV9yZWZxdWFsKGF1dG8pICYm IHsgcmV0dXJuIGlvYmpfZm47IH07CisKKyAgaW50IGZfeGlfYzBfcmVmcXVhbCh0aGlzIFMgY29u c3QmLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKyAgaW50IGZfeGlfYzBf cmVmcXVhbChhdXRvKSBjb25zdCYgeyByZXR1cm4gaW9ial9mbjsgfTsKKworICBpbnQgZl94aV9j MV9yZWZxdWFsKHRoaXMgUyBjb25zdCYmLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9ial9m bjsgfTsKKyAgaW50IGZfeGlfYzFfcmVmcXVhbChhdXRvKSBjb25zdCYmIHsgcmV0dXJuIGlvYmpf Zm47IH07CisKKyAgLy8gX3Igd2l0aG91dCByZWYgcXVhbGlmaWVyCisKKyAgLy8gaXgKKyAgaW50 IGZfaXhfbTBfcihhdXRvKSB7IHJldHVybiBpb2JqX2ZuOyB9OworICBpbnQgZl9peF9tMF9yKHRo aXMgUyYsIENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworICAvLyBTZWUgbm90 ZQorICBpbnQgZl9peF9tMV9yKGF1dG8pIHsgcmV0dXJuIGlvYmpfZm47IH07CisgIGludCBmX2l4 X20xX3IodGhpcyBTJiYsIENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiB4b2JqX2ZuOyB9OworCisg IGludCBmX2l4X2MwX3IoYXV0bykgY29uc3QgeyByZXR1cm4gaW9ial9mbjsgfTsKKyAgaW50IGZf aXhfYzBfcih0aGlzIFMgY29uc3QmLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9ial9mbjsg fTsKKyAgLy8gU2VlIG5vdGUKKyAgaW50IGZfaXhfYzFfcihhdXRvKSBjb25zdCB7IHJldHVybiBp b2JqX2ZuOyB9OworICBpbnQgZl9peF9jMV9yKHRoaXMgUyBjb25zdCYmLCBDb25zdHJhaW4gYXV0 bykgeyByZXR1cm4geG9ial9mbjsgfTsKKyAgCisgIC8vIHhpCisgIGludCBmX3hpX20wX3IodGhp cyBTJiwgYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKyAgaW50IGZfeGlfbTBfcihDb25zdHJh aW4gYXV0bykgeyByZXR1cm4gaW9ial9mbjsgfTsKKyAgLy8gU2VlIG5vdGUKKyAgaW50IGZfeGlf bTFfcih0aGlzIFMmJiwgYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKyAgaW50IGZfeGlfbTFf cihDb25zdHJhaW4gYXV0bykgeyByZXR1cm4gaW9ial9mbjsgfTsKKworICBpbnQgZl94aV9jMF9y KHRoaXMgUyBjb25zdCYsIGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisgIGludCBmX3hpX2Mw X3IoQ29uc3RyYWluIGF1dG8pIGNvbnN0IHsgcmV0dXJuIGlvYmpfZm47IH07CisgIC8vIFNlZSBu b3RlCisgIGludCBmX3hpX2MxX3IodGhpcyBTIGNvbnN0JiYsIGF1dG8pIHsgcmV0dXJuIHhvYmpf Zm47IH07CisgIGludCBmX3hpX2MxX3IoQ29uc3RyYWluIGF1dG8pIGNvbnN0IHsgcmV0dXJuIGlv YmpfZm47IH07CisKKyAgLy8gX3Igd2l0aCByZWYgcXVhbGlmaWVyCisgIC8vIGl4CisgIGludCBm X2l4X20wX3JlZnF1YWxfcihhdXRvKSAmIHsgcmV0dXJuIGlvYmpfZm47IH07CisgIGludCBmX2l4 X20wX3JlZnF1YWxfcih0aGlzIFMmLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9ial9mbjsg fTsKKworICBpbnQgZl9peF9tMV9yZWZxdWFsX3IoYXV0bykgJiYgeyByZXR1cm4gaW9ial9mbjsg fTsKKyAgaW50IGZfaXhfbTFfcmVmcXVhbF9yKHRoaXMgUyYmLCBDb25zdHJhaW4gYXV0bykgeyBy ZXR1cm4geG9ial9mbjsgfTsKKworICBpbnQgZl9peF9jMF9yZWZxdWFsX3IoYXV0bykgY29uc3Qm IHsgcmV0dXJuIGlvYmpfZm47IH07CisgIGludCBmX2l4X2MwX3JlZnF1YWxfcih0aGlzIFMgY29u c3QmLCBDb25zdHJhaW4gYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKworICBpbnQgZl9peF9j MV9yZWZxdWFsX3IoYXV0bykgY29uc3QmJiB7IHJldHVybiBpb2JqX2ZuOyB9OworICBpbnQgZl9p eF9jMV9yZWZxdWFsX3IodGhpcyBTIGNvbnN0JiYsIENvbnN0cmFpbiBhdXRvKSB7IHJldHVybiB4 b2JqX2ZuOyB9OworICAKKyAgLy8geGkKKyAgaW50IGZfeGlfbTBfcmVmcXVhbF9yKHRoaXMgUyYs IGF1dG8pIHsgcmV0dXJuIHhvYmpfZm47IH07CisgIGludCBmX3hpX20wX3JlZnF1YWxfcihDb25z dHJhaW4gYXV0bykgJiB7IHJldHVybiBpb2JqX2ZuOyB9OworCisgIGludCBmX3hpX20xX3JlZnF1 YWxfcih0aGlzIFMmJiwgYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKyAgaW50IGZfeGlfbTFf cmVmcXVhbF9yKENvbnN0cmFpbiBhdXRvKSAmJiB7IHJldHVybiBpb2JqX2ZuOyB9OworCisgIGlu dCBmX3hpX2MwX3JlZnF1YWxfcih0aGlzIFMgY29uc3QmLCBhdXRvKSB7IHJldHVybiB4b2JqX2Zu OyB9OworICBpbnQgZl94aV9jMF9yZWZxdWFsX3IoQ29uc3RyYWluIGF1dG8pIGNvbnN0JiB7IHJl dHVybiBpb2JqX2ZuOyB9OworCisgIGludCBmX3hpX2MxX3JlZnF1YWxfcih0aGlzIFMgY29uc3Qm JiwgYXV0bykgeyByZXR1cm4geG9ial9mbjsgfTsKKyAgaW50IGZfeGlfYzFfcmVmcXVhbF9yKENv bnN0cmFpbiBhdXRvKSBjb25zdCYmIHsgcmV0dXJuIGlvYmpfZm47IH07Cit9OworCisKK2ludCBt YWluKCkKK3sKKyAgLy8gVGhlIGNvbW1lbnRlZCBvdXQgY2FzZXMgYXJlIGFtYmlndW91cywgd2hp Y2ggaXMgbW9zdCBsaWtlbHkgdGhlIGNvcnJlY3QKKyAgLy8gYmVoYXZpb3IuIEl0IGlzIHNvbWV0 aGluZyB0aGF0IEkgd2FudCB0byBwcm9wb3NlIHRvIGNoYW5nZSwgYW5kIEkgd2FudAorICAvLyB0 byBsZWF2ZSB0aGVtIGluIGFzIHRoZXkgYXJlIGEgbGl0dGxlIHdlaXJkLgorICAvLworICAvLyBG dXJ0aGVybW9yZSwgYXMgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUgaW5kaWNh dGVzLCBJIGFtIG5vdAorICAvLyBjbGVhciBvbiB0aGUgY29ycmVjdCBiZWhhdmlvciBvZiB0aGUg c3RhdGljL3hvYmogY2FzZXMgaW4gZ2VuZXJhbC4KKworICBTIHN7fTsKKyAgaWYgKHMuZl94c192 ICgwKSAhPSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHMuZl94c19y ZWYgKDApICE9IHhvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAocy5mX3hz X2NyZWYgKDApICE9IHhvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoc3Rh dGljX2Nhc3Q8UyYmPihzKS5mX3hzX3JyZWYgKDApICE9IHhvYmpfZm4pCisgICAgX19idWlsdGlu X2Fib3J0ICgpOworICBpZiAoc3RhdGljX2Nhc3Q8UyYmPihzKS5mX3hzX2NycmVmICgwKSAhPSB4 b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8gaWYgKHMuZl94c19kdiAoMCkg IT0geG9ial9mbikKKyAgLy8gICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIC8vIGlmIChzLmZfeHNf ZGNyZWYgKDApICE9IHhvYmpfZm4pCisgIC8vICAgX19idWlsdGluX2Fib3J0ICgpOworICAvLyBp ZiAocy5mX3hzX2Rmd2RyZWYgKDApICE9IHhvYmpfZm4pCisgIC8vICAgX19idWlsdGluX2Fib3J0 ICgpOworCisgIGlmIChzLmZfeHNfdl9yICgwKSAhPSBzdGF0aWNfZm4pCisgICAgX19idWlsdGlu X2Fib3J0ICgpOworICBpZiAocy5mX3hzX3JlZl9yICgwKSAhPSBzdGF0aWNfZm4pCisgICAgX19i dWlsdGluX2Fib3J0ICgpOworICBpZiAocy5mX3hzX2NyZWZfciAoMCkgIT0gc3RhdGljX2ZuKQor ICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHN0YXRpY19jYXN0PFMmJj4ocykuZl94c19y cmVmX3IgKDApICE9IHN0YXRpY19mbikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChz dGF0aWNfY2FzdDxTJiY+KHMpLmZfeHNfY3JyZWZfciAoMCkgIT0gc3RhdGljX2ZuKQorICAgIF9f YnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8gaWYgKHMuZl94c19kdl9yICgwKSAhPSBzdGF0aWNfZm4p CisgIC8vICAgX19idWlsdGluX2Fib3J0ICgpOworICAvLyBpZiAocy5mX3hzX2RjcmVmX3IgKDAp ICE9IHN0YXRpY19mbikKKyAgLy8gICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIC8vIGlmIChzLmZf eHNfZGZ3ZHJlZl9yICgwKSAhPSBzdGF0aWNfZm4pCisgIC8vICAgX19idWlsdGluX2Fib3J0ICgp OworCisgIGlmIChzLmZfc3hfdiAoMCkgIT0gc3RhdGljX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9y dCAoKTsKKyAgaWYgKHMuZl9zeF9yZWYgKDApICE9IHN0YXRpY19mbikKKyAgICBfX2J1aWx0aW5f YWJvcnQgKCk7CisgIGlmIChzLmZfc3hfY3JlZiAoMCkgIT0gc3RhdGljX2ZuKQorICAgIF9fYnVp bHRpbl9hYm9ydCAoKTsKKyAgaWYgKHN0YXRpY19jYXN0PFMmJj4ocykuZl9zeF9ycmVmICgwKSAh PSBzdGF0aWNfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoc3RhdGljX2Nhc3Q8 UyYmPihzKS5mX3N4X2NycmVmICgwKSAhPSBzdGF0aWNfZm4pCisgICAgX19idWlsdGluX2Fib3J0 ICgpOworICAvLyBpZiAocy5mX3N4X2R2ICgwKSAhPSBzdGF0aWNfZm4pCisgIC8vICAgX19idWls dGluX2Fib3J0ICgpOworICAvLyBpZiAocy5mX3N4X2RjcmVmICgwKSAhPSBzdGF0aWNfZm4pCisg IC8vICAgX19idWlsdGluX2Fib3J0ICgpOworICAvLyBpZiAocy5mX3N4X2Rmd2RyZWYgKDApICE9 IHN0YXRpY19mbikKKyAgLy8gICBfX2J1aWx0aW5fYWJvcnQgKCk7CisKKyAgaWYgKHMuZl9zeF92 X3IgKDApICE9IHhvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAocy5mX3N4 X3JlZl9yICgwKSAhPSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHMu Zl9zeF9jcmVmX3IgKDApICE9IHhvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBp ZiAoc3RhdGljX2Nhc3Q8UyYmPihzKS5mX3N4X3JyZWZfciAoMCkgIT0geG9ial9mbikKKyAgICBf X2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChzdGF0aWNfY2FzdDxTJiY+KHMpLmZfc3hfY3JyZWZf ciAoMCkgIT0geG9ial9mbikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIC8vIGlmIChzLmZf c3hfZHZfciAoMCkgIT0geG9ial9mbikKKyAgLy8gICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIC8v IGlmIChzLmZfc3hfZGNyZWZfciAoMCkgIT0geG9ial9mbikKKyAgLy8gICBfX2J1aWx0aW5fYWJv cnQgKCk7CisgIC8vIGlmIChzLmZfc3hfZGZ3ZHJlZl9yICgwKSAhPSB4b2JqX2ZuKQorICAvLyAg IF9fYnVpbHRpbl9hYm9ydCAoKTsKKworICAvLyBpb2JqL3hvYmoKKworICAvLyBUaGUgY29tbWVu dGVkIG91dCBjYXNlcyBhcmUgdGVzdGVkIGJlbG93IGFzIHRoZWlyIGNvcnJlY3QgYmVoYXZpb3Ig aXMKKyAgLy8gdW5pbnR1aXRpdmUsIHNlZSB0aGUgbm90ZSBiZWxvdyBmb3IgZGV0YWlscy4KKyAg CisgIGlmIChzLmZfaXhfbTAgKDApICE9IGlvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgp OworICAvLyBzLmZfaXhfbTEKKyAgaWYgKHMuZl9peF9jMCAoMCkgIT0gaW9ial9mbikKKyAgICBf X2J1aWx0aW5fYWJvcnQgKCk7CisgIC8vIHMuZl9peF9jMQorICBpZiAocy5mX3hpX20wICgwKSAh PSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8gcy5mX3hpX20xCisgIGlm IChzLmZfeGlfYzAgKDApICE9IHhvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICAv LyBzLmZfeGlfYzEKKyAgaWYgKHMuZl9peF9tMF9yZWZxdWFsICgwKSAhPSBpb2JqX2ZuKQorICAg IF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHN0YXRpY19jYXN0PFMmJj4ocykuZl9peF9tMV9y ZWZxdWFsICgwKSAhPSBpb2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHMu Zl9peF9jMF9yZWZxdWFsICgwKSAhPSBpb2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsK KyAgaWYgKHN0YXRpY19jYXN0PFMmJj4ocykuZl9peF9jMV9yZWZxdWFsICgwKSAhPSBpb2JqX2Zu KQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHMuZl94aV9tMF9yZWZxdWFsICgwKSAh PSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHN0YXRpY19jYXN0PFMm Jj4ocykuZl94aV9tMV9yZWZxdWFsICgwKSAhPSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9y dCAoKTsKKyAgaWYgKHMuZl94aV9jMF9yZWZxdWFsICgwKSAhPSB4b2JqX2ZuKQorICAgIF9fYnVp bHRpbl9hYm9ydCAoKTsKKyAgaWYgKHN0YXRpY19jYXN0PFMmJj4ocykuZl94aV9jMV9yZWZxdWFs ICgwKSAhPSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHMuZl9peF9t MF9yICgwKSAhPSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8gcy5mX2l4 X20xX3IKKyAgaWYgKHMuZl9peF9jMF9yICgwKSAhPSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsKKyAgLy8gcy5mX2l4X2MxX3IKKyAgaWYgKHMuZl94aV9tMF9yICgwKSAhPSBpb2Jq X2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8gcy5mX3hpX20xX3IKKyAgaWYgKHMu Zl94aV9jMF9yICgwKSAhPSBpb2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8g cy5mX3hpX2MxX3IKKyAgaWYgKHMuZl9peF9tMF9yZWZxdWFsX3IgKDApICE9IHhvYmpfZm4pCisg ICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoc3RhdGljX2Nhc3Q8UyYmPihzKS5mX2l4X20x X3JlZnF1YWxfciAoMCkgIT0geG9ial9mbikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlm IChzLmZfaXhfYzBfcmVmcXVhbF9yICgwKSAhPSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9y dCAoKTsKKyAgaWYgKHN0YXRpY19jYXN0PFMmJj4ocykuZl9peF9jMV9yZWZxdWFsX3IgKDApICE9 IHhvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAocy5mX3hpX20wX3JlZnF1 YWxfciAoMCkgIT0gaW9ial9mbikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChzdGF0 aWNfY2FzdDxTJiY+KHMpLmZfeGlfbTFfcmVmcXVhbF9yICgwKSAhPSBpb2JqX2ZuKQorICAgIF9f YnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHMuZl94aV9jMF9yZWZxdWFsX3IgKDApICE9IGlvYmpf Zm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoc3RhdGljX2Nhc3Q8UyYmPihzKS5m X3hpX2MxX3JlZnF1YWxfciAoMCkgIT0gaW9ial9mbikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7 CisKKworLyogTm90ZToKKyAgIFRoZXNlIGNhc2VzIGFyZSB3ZWlyZCwgdGhlIG9iamVjdCBhcmd1 bWVudCBjb3JyZXNwb25kLCBidXQgYXJlIG5vdCB0aGUgc2FtZQorICAgdHlwZSAoW2Jhc2ljLnNj b3BlLnNjb3BlLTMuMV0pLCBzbyB3ZSBnZXQgdGhpcyBmdW5ueSBlZGdlIGNhc2Ugd2hlcmUgdGhl CisgICBjb25zdHJhaW50IHN0b3BzIHRoZW0gZnJvbSBiZWluZyBjb25zaWRlcmVkIHJlZGVjbGFy YXRpb25zLCBidXQgaXNuJ3QgdGFrZW4KKyAgIGludG8gYWNjb3VudCBmb3IgdGhlIGx2YWx1ZSBj YXNlLiBZb3UgY2FuJ3QgYmluZCBhbiBsdmFsdWUgdG8gYW4gcnZhbHVlCisgICByZWZlcmVuY2Ug c28gdGhlIGlvYmogbWVtYmVyIGZ1bmN0aW9uIGlzIGFsd2F5cyB0YWtlbiByZWdhcmRsZXNzIG9m IHdoaWNoCisgICBvdmVybG9hZCBpcyBjb25zdHJhaW5lZC4KKworICAgW292ZXIubWF0Y2guZnVu Y3MuZ2VuZXJhbC00XQorICAgRm9yIGltcGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb25zLCB0 aGUgdHlwZSBvZiB0aGUgaW1wbGljaXQgb2JqZWN0CisgICBwYXJhbWV0ZXIgaXMKKyAgICg0LjEp IOKAnGx2YWx1ZSByZWZlcmVuY2UgdG8gY3YgWOKAnSBmb3IgZnVuY3Rpb25zIGRlY2xhcmVkIHdp dGhvdXQgYQorCSByZWYtcXVhbGlmaWVyIG9yIHdpdGggdGhlICYgcmVmLXF1YWxpZmllcgorCisg ICBZb3Ugd291bGQgdGhpbmsgdGhhdCBjYWxsaW5nIHRoZXNlIGZ1bmN0aW9ucyB3aXRoIGFuIHJ2 YWx1ZSB3b3VsZCBiZSB0aGUKKyAgIHNhbWUgdGhlbiwgYWx3YXlzIHRha2luZyB0aGUgeG9iaiBt ZW1iZXIgZnVuY3Rpb24uIEhvd2V2ZXIsIGZvciBiYWNrd2FyZHMKKyAgIGNvbXBhdGliaWxpdHkg cmVhc29ucywgYW4gdW5xdWFsaWZpZWQgbWVtYmVyIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgb24g YW4KKyAgIG9iamVjdCB0aGF0IGlzIGFuIHJ2YWx1ZS4KKworICAgW292ZXIubWF0Y2guZnVuY3Mu Z2VuZXJhbC01XQorICAgRm9yIGltcGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb25zIGRlY2xh cmVkIHdpdGhvdXQgYSByZWYtcXVhbGlmaWVyLCBldmVuCisgICBpZiB0aGUgaW1wbGljaXQgb2Jq ZWN0IHBhcmFtZXRlciBpcyBub3QgY29uc3QtcXVhbGlmaWVkLCBhbiBydmFsdWUgY2FuIGJlCisg ICBib3VuZCB0byB0aGUgcGFyYW1ldGVyIGFzIGxvbmcgYXMgaW4gYWxsIG90aGVyIHJlc3BlY3Rz IHRoZSBhcmd1bWVudCBjYW4gYmUKKyAgIGNvbnZlcnRlZCB0byB0aGUgdHlwZSBvZiB0aGUgaW1w bGljaXQgb2JqZWN0IHBhcmFtZXRlci4KKworICAgQW5kIGZpbmFsbHksIHNpbmNlIHRoZSBvYmpl Y3QgcGFyYW1ldGVycyBjb3JyZXNwb25kIChbYmFzaWMuc2NvcGUuc2NvcGUtMy4xXSkKKyAgIHRo ZSBjb25zdHJhaW50cyBhcmUgdGFrZW4gaW50byBhY2NvdW50LgorCisgICBTbyBpbiBjb25jbHVz aW9uLCBjYWxsaW5nIHRoZXNlIGZ1bmN0aW9ucyB3aXRoIGFuIGx2YWx1ZSBhbHdheXMgcmVzb2x2 ZXMgdG8KKyAgIHRoZSBpb2JqIG1lbWJlciBmdW5jdGlvbiwgYW5kIGNhbGxpbmcgdGhlbSB3aXRo IHJ2YWx1ZXMgdGFrZSB0aGUgY29uc3RyYWludHMKKyAgIGludG8gYWNjb3VudC4KKworICAgQXMg d2Fja3kgYXMgdGhpcyBpcywgdGhpcyBpcyB0aGUgY29ycmVjdCBiZWhhdmlvci4gICovCisKKyAg Ly8gQWx3YXlzIHRha2VzIHRoZSBpb2JqIG1lbWJlciBmdW5jdGlvbiwgY2FuJ3QgYmluZCBhbiBs dmFsdWUgdG8gYW4gcnZhbHVlCisgIC8vIHJlZmVyZW5jZS4KKyAgaWYgKHMuZl9peF9tMSAoMCkg IT0gaW9ial9mbikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChzLmZfaXhfYzEgKDAp ICE9IGlvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAocy5mX3hpX20xICgw KSAhPSBpb2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHMuZl94aV9jMSAo MCkgIT0gaW9ial9mbikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisKKyAgaWYgKHMuZl9peF9t MV9yICgwKSAhPSBpb2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHMuZl9p eF9jMV9yICgwKSAhPSBpb2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHMu Zl94aV9tMV9yICgwKSAhPSBpb2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYg KHMuZl94aV9jMV9yICgwKSAhPSBpb2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKwor ICAvLyBDb25zdHJhaW50cyBhcmUgdGFrZW4gaW50byBhY2NvdW50IGhlcmUsIHNlZSBub3RlIGZv ciBtb3JlIGluZm9ybWF0aW9uLgorICBpZiAoc3RhdGljX2Nhc3Q8UyYmPihzKS5mX2l4X20xICgw KSAhPSBpb2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHN0YXRpY19jYXN0 PFMmJj4ocykuZl9peF9jMSAoMCkgIT0gaW9ial9mbikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7 CisgIGlmIChzdGF0aWNfY2FzdDxTJiY+KHMpLmZfeGlfbTEgKDApICE9IHhvYmpfZm4pCisgICAg X19idWlsdGluX2Fib3J0ICgpOworICBpZiAoc3RhdGljX2Nhc3Q8UyYmPihzKS5mX3hpX2MxICgw KSAhPSB4b2JqX2ZuKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKworICBpZiAoc3RhdGljX2Nh c3Q8UyYmPihzKS5mX2l4X20xX3IgKDApICE9IHhvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0 ICgpOworICBpZiAoc3RhdGljX2Nhc3Q8UyYmPihzKS5mX2l4X2MxX3IgKDApICE9IHhvYmpfZm4p CisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoc3RhdGljX2Nhc3Q8UyYmPihzKS5mX3hp X20xX3IgKDApICE9IGlvYmpfZm4pCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoc3Rh dGljX2Nhc3Q8UyYmPihzKS5mX3hpX2MxX3IgKDApICE9IGlvYmpfZm4pCisgICAgX19idWlsdGlu X2Fib3J0ICgpOworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNTA0M2U5MWJiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQS5DCkBAIC0wLDAgKzEsNyBA QAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCitz dHJ1Y3QgUyB7CisgICAgdm9pZCBmKHRoaXMgUyk7IC8vIHsgZGctYm9ndXMge2V4cGxpY2l0IG9i amVjdCBtZW1iZXIgZnVuY3Rpb24gb25seSBhdmFpbGFibGUgd2l0aCAnLXN0ZD1jXCtcKzIzJyBv ciAnLXN0ZD1nbnVcK1wrMjMnfSB9Cit9OworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQi5DIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUIuQwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmIyYTZhMGU0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQi5DCkBA IC0wLDAgKzEsNyBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMr KzIwX2Rvd24gfSB9CisKK3N0cnVjdCBTIHsKKyAgICB2b2lkIGYodGhpcyBTKTsgLy8geyBkZy1l cnJvciB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBvbmx5IGF2YWlsYWJsZSB3aXRo ICctc3RkPWNcK1wrMjMnIG9yICctc3RkPWdudVwrXCsyMyd9IH0KK307CisKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1DLkMg Yi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQy5D Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xODJlMjk0Yzg4MwotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1j eHgtZGlhbGVjdC1DLkMKQEAgLTAsMCArMSw5IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgYysrMjBfZG93biB9IH0KKy8vIGRvbid0IHBhc3MgaW4gLXBlZGFudGlj LWVycm9ycworLy8geyBkZy1vcHRpb25zICIiIH0KKworc3RydWN0IFMgeworICAgIHZvaWQgZih0 aGlzIFMpOyAvLyB7IGRnLXdhcm5pbmcge2V4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g b25seSBhdmFpbGFibGUgd2l0aCAnLXN0ZD1jXCtcKzIzJyBvciAnLXN0ZD1nbnVcK1wrMjMnfSB9 Cit9OworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotY3h4LWRpYWxlY3QtRC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWN4eC1kaWFsZWN0LUQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNDliN2VhMGRmNDQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRC5DCkBAIC0wLDAgKzEsOCBAQAorLy8gUDA4 NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIwX2Rvd24gfSB9CisvLyB7IGRn LW9wdGlvbnMgIi1Xbm8tYysrMjMtZXh0ZW5zaW9ucyIgfQorCitzdHJ1Y3QgUyB7CisgICAgdm9p ZCBmKHRoaXMgUyk7IC8vIHsgZGctYm9ndXMge2V4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rp b24gb25seSBhdmFpbGFibGUgd2l0aCAnLXN0ZD1jXCtcKzIzJyBvciAnLXN0ZD1nbnVcK1wrMjMn fSB9Cit9OworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotY3h4LWRpYWxlY3QtRS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWN4eC1kaWFsZWN0LUUuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNDExYjcwYzNkOWQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRS5DCkBAIC0wLDAgKzEsOCBAQAorLy8g UDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIwX2Rvd24gfSB9CisvLyB7 IGRnLW9wdGlvbnMgIi1Xbm8tYysrMjMtZXh0ZW5zaW9ucyAtcGVkYW50aWMtZXJyb3JzIiB9CisK K3N0cnVjdCBTIHsKKyAgICB2b2lkIGYodGhpcyBTKTsgLy8geyBkZy1ib2d1cyB7ZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiBvbmx5IGF2YWlsYWJsZSB3aXRoICctc3RkPWNcK1wrMjMn IG9yICctc3RkPWdudVwrXCsyMyd9IH0KK307CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczEuQyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczEuQwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGZhYzExODhmYmEKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MxLkMKQEAg LTAsMCArMSwxMzkgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBj KysyMyB9IH0KKworLy8gcmVqZWN0aW9uIGFuZCBkaWFnbm9zaXMgb2YgeG9iaiBtZW1iZXIgZnVu Y3Rpb25zIHRoYXQgaGF2ZSBtZW1iZXIgZnVuY3Rpb24gcXVhbGlmaWVycy4KKworc3RydWN0IFMg eworICAgIHZvaWQgZl92YWx1ZV8wKHRoaXMgUykgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdmFsdWVfMSh0aGlz IFMpIHZvbGF0aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzIodGhpcyBTKSBjb25zdCB2b2xhdGlsZTsgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92YWx1ZV8z KHRoaXMgUykgJjsgICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYt cXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzQodGhpcyBTKSAmJjsgICAgICAgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZf dmFsdWVfNSh0aGlzIFMpIGNvbnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzYodGhpcyBTKSBjb25z dCAmJjsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmll ciIgfQorICAgIHZvaWQgZl92YWx1ZV83KHRoaXMgUykgdm9sYXRpbGUgJjsgICAgICAgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdmFs dWVfOCh0aGlzIFMpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBv YmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUg KHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzkodGhpcyBTKSBjb25zdCB2 b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIg fQorICAgIHZvaWQgZl92YWx1ZV9BKHRoaXMgUykgY29uc3Qgdm9sYXRpbGUgJiY7IC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKworICAgIHZvaWQgZl9yZWZf MCh0aGlzIFMmKSBjb25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2 LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZfMSh0aGlzIFMmKSB2b2xhdGlsZTsgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9y ZWZfMih0aGlzIFMmKSBjb25zdCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZfMyh0aGlzIFMmKSAmOyAgICAgICAgICAg ICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8h c3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lk IGZfcmVmXzQodGhpcyBTJikgJiY7ICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZl81KHRoaXMgUyYpIGNvbnN0ICY7 ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u ICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9 CisgICAgdm9pZCBmX3JlZl82KHRoaXMgUyYpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVy cm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxd KycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZl83KHRo aXMgUyYpIHZvbGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxj diktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZl84KHRoaXMgUyYpIHZvbGF0aWxlICYmOyAg ICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAg dm9pZCBmX3JlZl85KHRoaXMgUyYpIGNvbnN0IHZvbGF0aWxlICY7ICAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fu bm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZl9BKHRoaXMgUyYp IGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVh bGlmaWVyIiB9CisKKyAgICB2b2lkIGZfcmVmcmVmXzAodGhpcyBTJiYpIGNvbnN0OyAgICAgICAg ICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBm X3JlZnJlZl8xKHRoaXMgUyYmKSB2b2xhdGlsZTsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZyZWZfMih0aGlzIFMmJikgY29u c3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfcmVmcmVmXzModGhpcyBTJiYpICY7ICAgICAgICAgICAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZyZWZfNCh0 aGlzIFMmJikgJiY7ICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYt cXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZnJlZl81KHRoaXMgUyYmKSBjb25zdCAmOyAgICAg ICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8h c3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAg IHZvaWQgZl9yZWZyZWZfNih0aGlzIFMmJikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmcmVmXzco dGhpcyBTJiYpIHZvbGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJl ZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZnJlZl84KHRoaXMgUyYmKSB2b2xhdGls ZSAmJjsgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIg fQorICAgIHZvaWQgZl9yZWZyZWZfOSh0aGlzIFMmJikgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVm cmVmX0EodGhpcyBTJiYpIGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisKKyAgICB2b2lkIGZfY3JlZl8wKHRoaXMgUyBjb25z dCYpIGNvbnN0OyAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX2NyZWZfMSh0aGlzIFMgY29uc3QmKSB2b2xhdGlsZTsgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9j cmVmXzIodGhpcyBTIGNvbnN0JikgY29uc3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4 cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5u b3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl8zKHRoaXMgUyBjb25zdCYp ICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmll ciIgfQorICAgIHZvaWQgZl9jcmVmXzQodGhpcyBTIGNvbnN0JikgJiY7ICAgICAgICAgICAgICAg IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2Ny ZWZfNSh0aGlzIFMgY29uc3QmKSBjb25zdCAmOyAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jcmVmXzYodGhpcyBTIGNv bnN0JikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2 KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl83KHRoaXMgUyBjb25zdCYpIHZvbGF0aWxl ICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u ICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9 CisgICAgdm9pZCBmX2NyZWZfOCh0aGlzIFMgY29uc3QmKSB2b2xhdGlsZSAmJjsgICAgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9j cmVmXzkodGhpcyBTIGNvbnN0JikgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsgZGctZXJyb3IgImV4 cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5u b3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl9BKHRoaXMgUyBj b25zdCYpIGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxj diktcXVhbGlmaWVyIiB9CisKKyAgICB2b2lkIGZfY3JlZnJlZl8wKHRoaXMgUyBjb25zdCYmKSBj b25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBm dW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIg fQorICAgIHZvaWQgZl9jcmVmcmVmXzEodGhpcyBTIGNvbnN0JiYpIHZvbGF0aWxlOyAgICAgICAg ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2Ny ZWZyZWZfMih0aGlzIFMgY29uc3QmJikgY29uc3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3Ig ImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBj YW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl8zKHRoaXMgUyBj b25zdCYmKSAmOyAgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1x dWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl80KHRoaXMgUyBjb25zdCYmKSAmJjsgICAg ICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAg ICB2b2lkIGZfY3JlZnJlZl81KHRoaXMgUyBjb25zdCYmKSBjb25zdCAmOyAgICAgICAgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9j cmVmcmVmXzYodGhpcyBTIGNvbnN0JiYpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVycm9y ICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycg Y2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZyZWZfNyh0 aGlzIFMgY29uc3QmJikgdm9sYXRpbGUgJjsgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0 IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2 ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl84KHRoaXMgUyBjb25z dCYmKSB2b2xhdGlsZSAmJjsgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3Yp LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jcmVmcmVmXzkodGhpcyBTIGNvbnN0JiYpIGNvbnN0 IHZvbGF0aWxlICY7ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVy IiB9CisgICAgdm9pZCBmX2NyZWZyZWZfQSh0aGlzIFMgY29uc3QmJikgY29uc3Qgdm9sYXRpbGUg JiY7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0 YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKworICAg IHZvaWQgZl92cmVmXzAodGhpcyBTIHZvbGF0aWxlJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZl8xKHRo aXMgUyB2b2xhdGlsZSYpIHZvbGF0aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZfMih0aGlzIFMgdm9sYXRpbGUmKSBj b25zdCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBm dW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIg fQorICAgIHZvaWQgZl92cmVmXzModGhpcyBTIHZvbGF0aWxlJikgJjsgICAgICAgICAgICAgICAg IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3Zy ZWZfNCh0aGlzIFMgdm9sYXRpbGUmKSAmJjsgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZl81KHRoaXMgUyB2b2xh dGlsZSYpIGNvbnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxj diktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZfNih0aGlzIFMgdm9sYXRpbGUmKSBjb25z dCAmJjsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmll ciIgfQorICAgIHZvaWQgZl92cmVmXzcodGhpcyBTIHZvbGF0aWxlJikgdm9sYXRpbGUgJjsgICAg ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0 YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2 b2lkIGZfdnJlZl84KHRoaXMgUyB2b2xhdGlsZSYpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZf OSh0aGlzIFMgdm9sYXRpbGUmKSBjb25zdCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmX0EodGhpcyBTIHZv bGF0aWxlJikgY29uc3Qgdm9sYXRpbGUgJiY7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVm fGN2KS1xdWFsaWZpZXIiIH0KKworICAgIHZvaWQgZl92cmVmcmVmXzAodGhpcyBTIHZvbGF0aWxl JiYpIGNvbnN0OyAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX3ZyZWZyZWZfMSh0aGlzIFMgdm9sYXRpbGUmJikgdm9sYXRpbGU7 ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2 b2lkIGZfdnJlZnJlZl8yKHRoaXMgUyB2b2xhdGlsZSYmKSBjb25zdCB2b2xhdGlsZTsgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVm XzModGhpcyBTIHZvbGF0aWxlJiYpICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fu bm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVmXzQodGhpcyBTIHZv bGF0aWxlJiYpICYmOyAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVm LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVmXzUodGhpcyBTIHZvbGF0aWxlJiYpIGNv bnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX3ZyZWZyZWZfNih0aGlzIFMgdm9sYXRpbGUmJikgY29uc3QgJiY7 ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfdnJlZnJlZl83KHRoaXMgUyB2b2xhdGlsZSYmKSB2b2xhdGlsZSAmOyAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZv aWQgZl92cmVmcmVmXzgodGhpcyBTIHZvbGF0aWxlJiYpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7 IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFte XG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3Zy ZWZyZWZfOSh0aGlzIFMgdm9sYXRpbGUmJikgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZnJlZl9B KHRoaXMgUyB2b2xhdGlsZSYmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdm9pZCBmX2N2cmVmXzAodGhpcyBT IGNvbnN0IHZvbGF0aWxlJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfMSh0aGlzIFMgY29uc3Qgdm9s YXRpbGUmKSB2b2xhdGlsZTsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1 YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZl8yKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpIGNv bnN0IHZvbGF0aWxlOyAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9 CisgICAgdm9pZCBmX2N2cmVmXzModGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgJjsgICAgICAgICAg ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/ IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9p ZCBmX2N2cmVmXzQodGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgJiY7ICAgICAgICAgICAgICAgIC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVm XzUodGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgY29uc3QgJjsgICAgICAgICAgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfNih0 aGlzIFMgY29uc3Qgdm9sYXRpbGUmKSBjb25zdCAmJjsgICAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZl83KHRoaXMg UyBjb25zdCB2b2xhdGlsZSYpIHZvbGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBs aWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90 IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmXzgodGhpcyBTIGNv bnN0IHZvbGF0aWxlJikgdm9sYXRpbGUgJiY7ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0 IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2 ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfOSh0aGlzIFMgY29uc3Qg dm9sYXRpbGUmKSBjb25zdCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChy ZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZl9BKHRoaXMgUyBjb25zdCB2b2xh dGlsZSYpIGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxj diktcXVhbGlmaWVyIiB9CisKKyAgICB2b2lkIGZfY3ZyZWZyZWZfMCh0aGlzIFMgY29uc3Qgdm9s YXRpbGUmJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1x dWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfMSh0aGlzIFMgY29uc3Qgdm9sYXRpbGUm Jikgdm9sYXRpbGU7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1i ZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZp ZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfMih0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgY29u c3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfY3ZyZWZyZWZfMyh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgJjsgICAgICAg ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAg dm9pZCBmX2N2cmVmcmVmXzQodGhpcyBTIGNvbnN0IHZvbGF0aWxlJiYpICYmOyAgICAgICAgICAg ICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl81KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdCAmOyAgICAgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl82KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdCAmJjsgICAgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl83KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSB2b2xhdGlsZSAmOyAgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl84KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSB2b2xhdGlsZSAmJjsgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl85KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdCB2b2xhdGlsZSAmOyAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl9BKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdCB2b2xhdGlsZSAmJjsg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdGVt cGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzAodGhpcyBTZWxmJiYpIGNvbnN0OyAg ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u ICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAg dGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzEodGhpcyBTZWxmJiYpIHZvbGF0 aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9Cisg ICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzIodGhpcyBTZWxmJiYpIGNv bnN0IHZvbGF0aWxlOyAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9 CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzModGhpcyBTZWxmJiYp ICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmll ciIgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF80KHRoaXMgU2Vs ZiYmKSAmJjsgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFs aWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2b2lkIGRfdGVtcGxfNSh0aGlz IFNlbGYmJikgY29uc3QgJjsgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVm fGN2KS1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2b2lkIGRfdGVt cGxfNih0aGlzIFNlbGYmJikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2 b2lkIGRfdGVtcGxfNyh0aGlzIFNlbGYmJikgdm9sYXRpbGUgJjsgICAgICAgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt ZSBTZWxmPiB2b2lkIGRfdGVtcGxfOCh0aGlzIFNlbGYmJikgdm9sYXRpbGUgJiY7ICAgICAgIC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0 ZTx0eXBlbmFtZSBTZWxmPiB2b2lkIGRfdGVtcGxfOSh0aGlzIFNlbGYmJikgY29uc3Qgdm9sYXRp bGUgJjsgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/ IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAg ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2b2lkIGRfdGVtcGxfQSh0aGlzIFNlbGYmJikgY29u c3Qgdm9sYXRpbGUgJiY7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZp ZXIiIH0KKworICAgIHZvaWQgZF9hdXRvXzAodGhpcyBhdXRvJiYpIGNvbnN0OyAgICAgICAgICAg ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBkX2F1 dG9fMSh0aGlzIGF1dG8mJikgdm9sYXRpbGU7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b18yKHRoaXMgYXV0byYmKSBjb25z dCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQor ICAgIHZvaWQgZF9hdXRvXzModGhpcyBhdXRvJiYpICY7ICAgICAgICAgICAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvXzQodGhp cyBhdXRvJiYpICYmOyAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVm LXF1YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvXzUodGhpcyBhdXRvJiYpIGNvbnN0ICY7ICAg ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICco PyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9Cisg ICAgdm9pZCBkX2F1dG9fNih0aGlzIGF1dG8mJikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b183 KHRoaXMgYXV0byYmKSB2b2xhdGlsZSAmOyAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvXzgodGhpcyBhdXRvJiYpIHZv bGF0aWxlICYmOyAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlm aWVyIiB9CisgICAgdm9pZCBkX2F1dG9fOSh0aGlzIGF1dG8mJikgY29uc3Qgdm9sYXRpbGUgJjsg IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lk IGRfYXV0b19BKHRoaXMgYXV0byYmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorfTsKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzMi5DIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzMi5DCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NzEyMDBiODM5ZQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGlj czIuQwpAQCAtMCwwICsxLDI2IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0 YXJnZXQgYysrMjMgfSB9CisKKy8vIHJlamVjdGlvbiBhbmQgZGlhZ25vc2lzIG9mIGluY29ycmVj dCB1c2VzIG9mICd0aGlzJyBpbiBkZWNsYXJhdGlvbnMgYW5kIGRlZmluaXRpb25zCisKK3VzaW5n IGZ1bmNfdHlwZSA9IHZvaWQodGhpcyBpbnQpOyAvLyB7IGRnLWxpbmUgZnVuY190eXBlX2xpbmUg fQorLy8geyBkZy1lcnJvciAiYSBmdW5jdGlvbiB0eXBlIGNhbm5vdCBoYXZlIGFuIGV4cGxpY2l0 IG9iamVjdCBwYXJhbWV0ZXIiICIiIHsgdGFyZ2V0ICotKi0qIH0gZnVuY190eXBlX2xpbmUgfQor Ly8geyBkZy1ub3RlICJ0aGUgdHlwZSBvZiBhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uIGlzIGEgcmVndWxhciBmdW5jdGlvbiB0eXBlIiAiIiB7IHRhcmdldCAqLSotKiB9IGZ1bmNf dHlwZV9saW5lIH0KKwordXNpbmcgZnVuY19wdHJfdHlwZSA9IHZvaWQoKikodGhpcyBpbnQpOyAv LyB7IGRnLWxpbmUgZnVuY19wdHJfdHlwZV9saW5lIH0KKy8vIHsgZGctZXJyb3IgImEgcG9pbnRl ciB0byBmdW5jdGlvbiB0eXBlIGNhbm5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0 ZXIiICIiIHsgdGFyZ2V0ICotKi0qIH0gZnVuY19wdHJfdHlwZV9saW5lIH0KKy8vIHsgZGctbm90 ZSAidGhlIHR5cGUgb2YgYSBwb2ludGVyIHRvIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rp b24gaXMgYSByZWd1bGFyIHBvaW50ZXIgdG8gZnVuY3Rpb24gdHlwZSIgIiIgeyB0YXJnZXQgKi0q LSogfSBmdW5jX3B0cl90eXBlX2xpbmUgfQorCitzdHJ1Y3QgUyB7CisgICAgc3RhdGljIHZvaWQg Zih0aGlzIFMpIHt9IC8vIHsgZGctbGluZSBzdGF0aWNfbWVtYmVyX2Z1bmNfbGluZSB9Cit9Owor Ly8geyBkZy1lcnJvciAiYW4gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBjYW5ub3Qg YmUgJ3N0YXRpYyciICIiIHsgdGFyZ2V0ICotKi0qIH0gc3RhdGljX21lbWJlcl9mdW5jX2xpbmUg fQorLy8geyBkZy1ub3RlICJleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUi ICIiIHsgdGFyZ2V0ICotKi0qIH0gc3RhdGljX21lbWJlcl9mdW5jX2xpbmUgfQorCit1c2luZyBt ZW1fZnVuY190eXBlID0gdm9pZCAoUzo6KikodGhpcyBTJik7IC8vIHsgZGctbGluZSBtZW1fZnVu Y190eXBlX2xpbmUgfQorLy8geyBkZy1lcnJvciAiYSBwb2ludGVyIHRvIG1lbWJlciBmdW5jdGlv biB0eXBlIGNhbm5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIiICIiIHsgdGFy Z2V0ICotKi0qIH0gbWVtX2Z1bmNfdHlwZV9saW5lIH0KKy8vIHsgZGctbm90ZSAidGhlIHR5cGUg b2YgYSBwb2ludGVyIHRvIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gaXMgYSByZWd1 bGFyIHBvaW50ZXIgdG8gZnVuY3Rpb24gdHlwZSIgIiIgeyB0YXJnZXQgKi0qLSogfSBtZW1fZnVu Y190eXBlX2xpbmUgfQorCit2b2lkIGYodGhpcyBpbnQpOyAvLyB7IGRnLWVycm9yICJhIG5vbi1t ZW1iZXIgZnVuY3Rpb24gY2Fubm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIg fQordm9pZCBmKHRoaXMgaW50KSB7fSAvLyB7IGRnLWVycm9yICJhIG5vbi1tZW1iZXIgZnVuY3Rp b24gY2Fubm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIgfQorCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M0 LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M0 LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVjMDkxZDZjYTY3Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWRpYWdub3N0aWNzNC5DCkBAIC0wLDAgKzEsMjAgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVqZWN0aW9uIGFuZCBkaWFnbm9zaXMg b2YgYW4geG9iaiBwYXJhbWV0ZXIgZGVjbGFyZWQgd2l0aCBhIGRlZmF1bHQgYXJndW1lbnQKKwor c3RydWN0IFMgeworICB2b2lkIGYwKHRoaXMgUyA9IHt9KSB7fSAvLyB7IGRnLWVycm9yICJhbiBl eHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG1heSBub3QgaGF2ZSBhIGRlZmF1bHQgYXJndW1lbnQi IH0KKyAgdm9pZCBmMSh0aGlzIFMgPSB7fSk7IC8vIHsgZGctZXJyb3IgImFuIGV4cGxpY2l0IG9i amVjdCBwYXJhbWV0ZXIgbWF5IG5vdCBoYXZlIGEgZGVmYXVsdCBhcmd1bWVudCIgfQorICB2b2lk IGYyKHRoaXMgUyk7CisgIHZvaWQgZjEwKHRoaXMgUyBzID0ge30pIHt9IC8vIHsgZGctZXJyb3Ig ImFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgbWF5IG5vdCBoYXZlIGEgZGVmYXVsdCBhcmd1 bWVudCIgfQorICB2b2lkIGYxMSh0aGlzIFMgcyA9IHt9KTsgLy8geyBkZy1lcnJvciAiYW4gZXhw bGljaXQgb2JqZWN0IHBhcmFtZXRlciBtYXkgbm90IGhhdmUgYSBkZWZhdWx0IGFyZ3VtZW50IiB9 CisgIHZvaWQgZjEyKHRoaXMgUyBzKTsKK307CisKK3ZvaWQgUzo6ZjEodGhpcyBTKSB7fQordm9p ZCBTOjpmMih0aGlzIFMgPSB7fSkge30gLy8geyBkZy1lcnJvciAiYW4gZXhwbGljaXQgb2JqZWN0 IHBhcmFtZXRlciBtYXkgbm90IGhhdmUgYSBkZWZhdWx0IGFyZ3VtZW50IiB9CisKK3ZvaWQgUzo6 ZjExKHRoaXMgUyBzKSB7fQordm9pZCBTOjpmMTIodGhpcyBTIHMgPSB7fSkge30gLy8geyBkZy1l cnJvciAiYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBtYXkgbm90IGhhdmUgYSBkZWZhdWx0 IGFyZ3VtZW50IiB9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1kaWFnbm9zdGljczUuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1kaWFnbm9zdGljczUuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uMTc0NGIzZjIyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M1LkMKQEAgLTAsMCArMSwxNiBAQAor Ly8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBs b2NhdGlvbiBkaWFnbm9zdGljIHRleHQgd2hlbiBhbiBlcnJvciBpcyBlbWl0dGVkIGZyb20gYW4g eG9iaiBtZW1iZXIgZnVuY3Rpb24KKy8vIHRoaXMgZG9lcyBub3QgdGVzdCBmb3Igc3BlY2lmaWMg aWxsLWZvcm1lZCBjb2RlLCBqdXN0IHRoZSBhZGRpdGlvbmFsIGRpYWdub3N0aWMgbWVzc2FnZQor CisvLyB7IGRnLW1lc3NhZ2UgIkluIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24iICIi IHsgdGFyZ2V0ICotKi0qIH0gMCB9CisKK3N0cnVjdCBTIHsKKyAgdm9pZCBmKHRoaXMgUyBzKSB7 CisgICAgLy8gVGhlIHNwZWNpZmljIGRpYWdub3NpcyBpc3N1ZWQgaGVyZSBkb2VzIG5vdCBtYXR0 ZXIKKyAgICAvLyB3ZSBqdXN0IG5lZWQgdG8gZm9yY2UgYW4gZXJyb3IgdG8gYmUgZW1pdHRlZAor ICAgICtzOyAvLyB7IGRnLWVycm9yICIiIH0KKyAgfQorfTsKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNi5DIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNi5DCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mM2IwMWQzYzhhZQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGlj czYuQwpAQCAtMCwwICsxLDIzIEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0 YXJnZXQgYysrMjMgfSB9CisKKy8vIHJlamVjdGlvbiBhbmQgZGlhZ25vc2lzIG9mIGludmFsaWQg dXNlcyBvZiAndGhpcycgaW4gYm9keSBvZiB4b2JqIG1lbWJlciBmdW5jdGlvbnMKKworLy8geyBk Zy1tZXNzYWdlICJJbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIiAiIiB7IHRhcmdl dCAqLSotKiB9IDAgfQorCitzdHJ1Y3QgUzAgeworICBpbnQgX247CisgIHZvaWQgZih0aGlzIFMw JiBzKSB7IC8vIHsgZGctbm90ZSAidXNlIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgJ3MnIGlu c3RlYWQiIH0gCisgICAgdGhpcy0+X24gPSAxMDsgLy8geyBkZy1lcnJvciAiJ3RoaXMnIGlzIHVu YXZhaWxhYmxlIGZvciBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9ucyIgfQorICAgIC8v IHN1cHByZXNzIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5nCisgICAgc3RhdGljX2Nhc3Q8dm9pZD4o cyk7CisgIH0KK307CisKK3N0cnVjdCBTMSB7CisgIGludCBfbjsKKyAgdm9pZCBmKHRoaXMgUzEm KSB7IC8vIHsgZGctbm90ZSAibmFtZSBhbmQgdXNlIHRoZSBleHBsaWNpdCBvYmplY3QgcGFyYW1l dGVyIGluc3RlYWQiIH0KKyAgICB0aGlzLT5fbiA9IDEwOyAvLyB7IGRnLWVycm9yICIndGhpcycg aXMgdW5hdmFpbGFibGUgZm9yIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb25zIiB9Cisg IH0KK307CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1kaWFnbm9zdGljczcuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1kaWFnbm9zdGljczcuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZWE1MzYwOWExZTAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M3LkMKQEAgLTAsMCArMSwxNyBAQAorLy8gUDA4 NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyByZWplY3Rp b24gYW5kIGRpYWdub3NpcyB3aGVuIHRha2luZyBhZGRyZXNzIG9mIGFuIHVucXVhbGlmaWVkIHhv YmogbWVtYmVyIGZ1bmN0aW9uCisKK3N0cnVjdCBTIHsKKyAgdm9pZCBmKHRoaXMgUyYpIHt9CisK KyAgdm9pZCBnKHRoaXMgUyYpIHt9CisgIHZvaWQgZyh0aGlzIFMmLCBpbnQpIHt9CisKKyAgdm9p ZCB0ZXN0KCkgeworICAgIHZvaWQgKCpmcCkoUyYpID0gJmY7IC8vIHsgZGctZXJyb3IgInRha2lu ZyB0aGUgYWRkcmVzcyBvZiBhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIG11c3Qg YmUgcXVhbGlmaWVkIiB9CisgICAgdm9pZCAoKmdwKShTJikgPSAmZzsgLy8geyBkZy1lcnJvciAi dGFraW5nIHRoZSBhZGRyZXNzIG9mIGFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g bXVzdCBiZSBxdWFsaWZpZWQiIH0KKyAgfQorfTsKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYS10ZW1wMS5DIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYS10ZW1wMS5DCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lN2I2Nzg1Yzk0ZQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGEtdGVtcDEuQwpA QCAtMCwwICsxLDczIEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQg YysrMjMgfSB9CisKKy8vIHZhcmlvdXMgdmFsaWQgY2FzZXMgb2YgbGFtYmRhcyB3aXRoIGRlcGVu ZGVudCB4b2JqIHBhcmFtZXRlcgorCisvLyB1bmZpbmlzaGVkLCBJIHdhbnQgdG8gZmxlc2ggdGhp cyBvdXQgbW9yZSBidXQgSSBkb24ndCB3YW50IHRvIHNlbmQgdGhlIHBhdGNoCisvLyB3aXRob3V0 IHRlc3RzIHRoYXQgZGVtb25zdHJhdGUgdGhlIGZpeGVkIGNyYXNoIGFuZCBiZWhhdmlvcgorLy8g YmFzaWNhbGx5IEkgd2FudCB0byBhZGQgbW9yZSB3YWNreSBlZGdlIGNhc2VzCisKK3RlbXBsYXRl PHR5cGVuYW1lLi4uIFRzPgorc3RydWN0IG92ZXJsb2FkIDogVHMuLi4geworICB1c2luZyBUczo6 b3BlcmF0b3IoKS4uLjsKK307CisKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lLi4uPiB0eXBl bmFtZSBPdmVybG9hZD4KK3ZvaWQgdGVtcGwoKQoreworICBpbnQgaSA9IDU7CisgIGF1dG8gZjAg PSBPdmVybG9hZHtbPV08dHlwZW5hbWUuLi4gVHM+KHRoaXMgT3ZlcmxvYWQ8VHMuLi4+Jil7IHJl dHVybiBpOyB9fTsKKyAgYXV0byBmMSA9IE92ZXJsb2Fke1smXTx0eXBlbmFtZS4uLiBUcz4odGhp cyBPdmVybG9hZDxUcy4uLj4mKXsgcmV0dXJuIGk7IH19OworICBhdXRvIGYyID0gT3ZlcmxvYWR7 W2ldPHR5cGVuYW1lLi4uIFRzPih0aGlzIE92ZXJsb2FkPFRzLi4uPiYpeyByZXR1cm4gaTsgfX07 CisgIGludCBmX3JldHVybjAgPSBmMCgpOworICBpbnQgZl9yZXR1cm4xID0gZjEoKTsKKyAgaW50 IGZfcmV0dXJuMiA9IGYyKCk7CisKKyAgYXV0byBnMCA9IE92ZXJsb2Fke1s9XTx0eXBlbmFtZS4u LiBUcz4odGhpcyBPdmVybG9hZDxUcy4uLj4mLCBhdXRvKXsgcmV0dXJuIGk7IH19OworICBhdXRv IGcxID0gT3ZlcmxvYWR7WyZdPHR5cGVuYW1lLi4uIFRzPih0aGlzIE92ZXJsb2FkPFRzLi4uPiYs IGF1dG8peyByZXR1cm4gaTsgfX07CisgIGF1dG8gZzIgPSBPdmVybG9hZHtbaV08dHlwZW5hbWUu Li4gVHM+KHRoaXMgT3ZlcmxvYWQ8VHMuLi4+JiwgYXV0byl7IHJldHVybiBpOyB9fTsKKyAgaW50 IGdfcmV0dXJuMCA9IGcwKDApOworICBpbnQgZ19yZXR1cm4xID0gZzEoMCk7CisgIGludCBnX3Jl dHVybjIgPSBnMigwKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBjb252ZXJ0 aWJsZV90b190eXBlIHsKKyAgY29uc3RleHByIG9wZXJhdG9yIFQoKSB7IHJldHVybiB7fTsgfQor fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KK3N0cnVjdCBoZWxwZXIgOiBU LCBDIHsKKyAgdXNpbmcgVDo6b3BlcmF0b3IoKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0 cnVjdFQ+CitzdHJ1Y3QgUyB7CisgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBtZW1iZXIwID0gW10o dGhpcyBTdHJ1Y3RUIGNvbnN0Jil7fTsKKyAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lbWJlcjEg PSBoZWxwZXJ7W10odGhpcyBTdHJ1Y3RUIHNlbGYpeyByZXR1cm4gc2VsZjsgfSwgY29udmVydGli bGVfdG9fdHlwZTxTdHJ1Y3RUPnt9fTsKKworICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jVD4KKyAg dm9pZCBtZW1iZXJfZigpIHsKKyAgICBhdXRvIGYgPSBbXSgpe307CisgIH0KK307CisKK3RlbXBs YXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHR5cGUoKQoreworCit9CisKKwordm9pZCBpbnN0YW50aWF0 ZSgpCit7CisgIHRlbXBsPG92ZXJsb2FkPigpOworICB0eXBlPGludD4oKTsKK30KKworaW50IG1h aW4oKQoreworICBhdXRvIG1lbWJlcjFfY29weSA9IFM8aW50Pjo6bWVtYmVyMTsKKyAgcmV0dXJu IG1lbWJlcjFfY29weSgpOworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotbGFtYmRhLXRlbXAyLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotbGFtYmRhLXRlbXAyLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjU3ZWExMTQwZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYS10ZW1wMi5DCkBAIC0wLDAgKzEs MzggQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0K KworLy8gdmFyaW91cyBpbnZhbGlkIGNhc2VzIG9mIGxhbWJkYXMgd2l0aCBkZXBlbmRlbnQgeG9i aiBwYXJhbWV0ZXIKKworLy8gdW5maW5pc2hlZCwgSSB3YW50IHRvIGZsZXNoIHRoaXMgb3V0IG1v cmUgYnV0IEkgZG9uJ3Qgd2FudCB0byBzZW5kIHRoZSBwYXRjaAorLy8gd2l0aG91dCB0ZXN0cyB0 aGF0IGRlbW9uc3RyYXRlIHRoZSBmaXhlZCBjcmFzaCBhbmQgYmVoYXZpb3IKKy8vIGJhc2ljYWxs eSBJIHdhbnQgdG8gYWRkIG1vcmUgd2Fja3kgZWRnZSBjYXNlcworCit0ZW1wbGF0ZTx0eXBlbmFt ZSBUPgordm9pZCB0eXBlKCkKK3sKKyAgaW50IGk7CisgIGF1dG8gZjAgPSBbPV0odGhpcyBUJiBz ZWxmKXsgcmV0dXJuIGk7IH07IC8vIHsgZGctZXJyb3Ige2EgbGFtYmRhIHdpdGggY2FwdHVyZXMg bWF5IG5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgb2YgYW4gdW5yZWxhdGVk IHR5cGV9IH0KKyAgYXV0byBmMSA9IFsmXSh0aGlzIFQmIHNlbGYpeyByZXR1cm4gaTsgfTsgLy8g eyBkZy1lcnJvciB7YSBsYW1iZGEgd2l0aCBjYXB0dXJlcyBtYXkgbm90IGhhdmUgYW4gZXhwbGlj aXQgb2JqZWN0IHBhcmFtZXRlciBvZiBhbiB1bnJlbGF0ZWQgdHlwZX0gfQorICBhdXRvIGYyID0g W2ldKHRoaXMgVCYgc2VsZil7IHJldHVybiBpOyB9OyAvLyB7IGRnLWVycm9yIHthIGxhbWJkYSB3 aXRoIGNhcHR1cmVzIG1heSBub3QgaGF2ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG9m IGFuIHVucmVsYXRlZCB0eXBlfSB9CisKKyAgYXV0byBnMCA9IFs9XSh0aGlzIFQmIHNlbGYsIGF1 dG8peyByZXR1cm4gaTsgfTsgLy8geyBkZy1lcnJvciB7YSBsYW1iZGEgd2l0aCBjYXB0dXJlcyBt YXkgbm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBvZiBhbiB1bnJlbGF0ZWQg dHlwZX0gfQorICBhdXRvIGcxID0gWyZdKHRoaXMgVCYgc2VsZiwgYXV0byl7IHJldHVybiBpOyB9 OyAvLyB7IGRnLWVycm9yIHthIGxhbWJkYSB3aXRoIGNhcHR1cmVzIG1heSBub3QgaGF2ZSBhbiBl eHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG9mIGFuIHVucmVsYXRlZCB0eXBlfSB9CisgIGF1dG8g ZzIgPSBbaV0odGhpcyBUJiBzZWxmLCBhdXRvKXsgcmV0dXJuIGk7IH07IC8vIHsgZGctZXJyb3Ig e2EgbGFtYmRhIHdpdGggY2FwdHVyZXMgbWF5IG5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCBw YXJhbWV0ZXIgb2YgYW4gdW5yZWxhdGVkIHR5cGV9IH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg U3RydWN0VD4KK3N0cnVjdCBTIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lbWJlcjAgPSBb biA9IDVdKHRoaXMgU3RydWN0VCBjb25zdCYpe307IC8vIHsgZGctZXJyb3Ige2EgbGFtYmRhIHdp dGggY2FwdHVyZXMgbWF5IG5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgb2Yg YW4gdW5yZWxhdGVkIHR5cGV9IH0KKworICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jVD4KKyAgdm9p ZCBtZW1iZXJfZigpIHsKKyAgICBhdXRvIGYgPSBbXSgpe307CisgIH0KK307CisKK3ZvaWQgaW5z dGFudGlhdGUoKQoreworICB0eXBlPGludD4oKTsKKyAgYXV0byBzID0gUzxpbnQ+e307Cit9CisK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1i ZGExLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhMS5D Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NmUwNDcxZWI3ZgotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1s YW1iZGExLkMKQEAgLTAsMCArMSwyNSBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxl IHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBsYW1iZGEgZGVjbGFyYXRpb24gd2l0aCB4b2JqIHBh cmFtZXRlcgorCitzdHJ1Y3QgU3t9OworCit2b2lkIHRlc3QoKQoreworICAodm9pZClbXSh0aGlz IGF1dG8mJiBzZWxmKXt9OworICAodm9pZClbXSh0aGlzIGF1dG8mIHNlbGYpe307CisgICh2b2lk KVtdKHRoaXMgYXV0byBjb25zdCYgc2VsZil7fTsKKyAgKHZvaWQpW10odGhpcyBhdXRvIHNlbGYp e307CisKKyAgKHZvaWQpW10odGhpcyBTJiYgc2VsZil7fTsKKyAgKHZvaWQpW10odGhpcyBTJiBz ZWxmKXt9OworICAodm9pZClbXSh0aGlzIFMgY29uc3QmIHNlbGYpe307CisgICh2b2lkKVtdKHRo aXMgUyBzZWxmKXt9OworCisgICh2b2lkKVt4ID0gMF0odGhpcyBhdXRvJiYgc2VsZil7fTsKKyAg KHZvaWQpW3ggPSAwXSh0aGlzIGF1dG8mIHNlbGYpe307CisgICh2b2lkKVt4ID0gMF0odGhpcyBh dXRvIGNvbnN0JiBzZWxmKXt9OworICAodm9pZClbeCA9IDBdKHRoaXMgYXV0byBzZWxmKXt9Owor fQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot bGFtYmRhMi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJk YTIuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODI3MTk3YTY2NjcK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotbGFtYmRhMi5DCkBAIC0wLDAgKzEsMjMgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gcnVu IHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyByZWN1cnNpdmUgbGFtYmRhcworCitpbmxpbmUgY29u c3RleHByIGludCBjb3JyZWN0X3Jlc3VsdCA9IDUgKyA0ICsgMyArIDIgKyAxOyAKKworaW50IG1h aW4oKQoreworICBhdXRvIGNsMCA9IFtdKHRoaXMgYXV0byYmIHNlbGYsIGludCBuKSAgICAgIC0+ IGludCB7IHJldHVybiBuID8gc2VsZihuIC0gMSkgKyBuIDogMDsgfTsKKyAgYXV0byBjbDEgPSBb XSh0aGlzIGF1dG8gY29uc3QmIHNlbGYsIGludCBuKSAtPiBpbnQgeyByZXR1cm4gbiA/IHNlbGYo biAtIDEpICsgbiA6IDA7IH07CisgIGF1dG8gY2wyID0gW10odGhpcyBhdXRvIHNlbGYsIGludCBu KSAgICAgICAgLT4gaW50IHsgcmV0dXJuIG4gPyBzZWxmKG4gLSAxKSArIG4gOiAwOyB9OworICBh dXRvIGNsMyA9IFtdKHRoaXMgYXV0byYmIHNlbGYsIGludCBuKSAgICAgeyBpZiAoIW4pIHJldHVy biAwOyBlbHNlIHJldHVybiBzZWxmKG4gLSAxKSArIG47IH07CisgIGF1dG8gY2w0ID0gW10odGhp cyBhdXRvIGNvbnN0JiBzZWxmLCBpbnQgbil7IGlmICghbikgcmV0dXJuIDA7IGVsc2UgcmV0dXJu IHNlbGYobiAtIDEpICsgbjsgfTsKKyAgYXV0byBjbDUgPSBbXSh0aGlzIGF1dG8gc2VsZiwgaW50 IG4pICAgICAgIHsgaWYgKCFuKSByZXR1cm4gMDsgZWxzZSByZXR1cm4gc2VsZihuIC0gMSkgKyBu OyB9OworICBpZiAoY2wwKDUpICE9IGNvcnJlY3RfcmVzdWx0KSBfX2J1aWx0aW5fYWJvcnQgKCk7 CisgIGlmIChjbDEoNSkgIT0gY29ycmVjdF9yZXN1bHQpIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAg aWYgKGNsMig1KSAhPSBjb3JyZWN0X3Jlc3VsdCkgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAo Y2wzKDUpICE9IGNvcnJlY3RfcmVzdWx0KSBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChjbDQo NSkgIT0gY29ycmVjdF9yZXN1bHQpIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKGNsNSg1KSAh PSBjb3JyZWN0X3Jlc3VsdCkgX19idWlsdGluX2Fib3J0ICgpOworfQorCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhMy5DIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYTMuQwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWQyMjJiMGU1NDcKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhMy5DCkBAIC0w LDAgKzEsNjQgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzIzIH0g fQorCisvLyBhbiBhZGFwdGF0aW9uIG9mIG9uZSBvZiB0aGUgZXhhbXBsZXMgaW4gUDA4NDdSNwor CitzdHJ1Y3QgTGVhZiB7IH07CitzdHJ1Y3QgTm9kZTsKKworc3RydWN0IFRyZWUgeworICBlbnVt IGNsYXNzIHN0b3JlZCB7bGVhZiwgbm9kZX07CisgIHN0b3JlZCBfZGlzY3JpbWluYXRvcjsKKyAg dW5pb24geworICAgIExlYWYgX2xlYWY7CisgICAgTm9kZSogX25vZGU7CisgIH07CisgIFRyZWUo TGVhZikgOiBfZGlzY3JpbWluYXRvcihzdG9yZWQ6OmxlYWYpLCBfbGVhZigpIHt9CisgIFRyZWUo Tm9kZSYgbm9kZSkgOiBfZGlzY3JpbWluYXRvcihzdG9yZWQ6Om5vZGUpLCBfbm9kZSgmbm9kZSkg e30KK307CisKK3N0cnVjdCBOb2RlIHsKKyAgICBUcmVlIGxlZnQ7CisgICAgVHJlZSByaWdodDsK K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CithdXRvIHZpc2l0X3RyZWUoVmlzaXRv ciYmIHZpc2l0b3IsIFRyZWUgY29uc3QmIHRyZWUpCit7CisgIHN3aXRjaCAodHJlZS5fZGlzY3Jp bWluYXRvcikKKyAgeworICAgIGNhc2UgVHJlZTo6c3RvcmVkOjpsZWFmOgorICAgICAgcmV0dXJu IHZpc2l0b3IgKHRyZWUuX2xlYWYpOworICAgIGNhc2UgVHJlZTo6c3RvcmVkOjpub2RlOgorICAg ICAgcmV0dXJuIHZpc2l0b3IgKHRyZWUuX25vZGUpOworICAgIGRlZmF1bHQ6CisgICAgICBfX2J1 aWx0aW5fYWJvcnQgKCk7IAorICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFRzPgorc3Ry dWN0IG92ZXJsb2FkIDogVHMuLi4geyB1c2luZyBUczo6b3BlcmF0b3IoKS4uLjsgfTsKKworaW50 IG1haW4oKQoreworICBzdGF0aWMgY29uc3RleHByIGludCB0cnVlX251bV9sZWF2ZXMgPSA4Owor ICBOb2RlIGJyYW5jaDB7LmxlZnQgPSBMZWFme30sIC5yaWdodCA9IExlYWZ7fX07CisgIE5vZGUg YnJhbmNoMXsubGVmdCA9IExlYWZ7fSwgLnJpZ2h0ID0gYnJhbmNoMH07CisgIE5vZGUgYnJhbmNo MnsubGVmdCA9IExlYWZ7fSwgLnJpZ2h0ID0gTGVhZnt9fTsKKyAgTm9kZSBicmFuY2gzey5sZWZ0 ID0gYnJhbmNoMSwgLnJpZ2h0ID0gYnJhbmNoMn07CisgIE5vZGUgYnJhbmNoNHsubGVmdCA9IGJy YW5jaDMsIC5yaWdodCA9IExlYWZ7fX07CisgIE5vZGUgYnJhbmNoNXsubGVmdCA9IExlYWZ7fSwg LnJpZ2h0ID0gTGVhZnt9fTsKKyAgTm9kZSBicmFuY2g2ey5sZWZ0ID0gYnJhbmNoNCwgLnJpZ2h0 ID0gYnJhbmNoNX07CisKKyAgVHJlZSByb290IChicmFuY2g2KTsKKworICBpbnQgbnVtX2xlYXZl cyA9IHZpc2l0X3RyZWUgKG92ZXJsb2FkeworICAgIFtdKExlYWYgY29uc3QmKSB7IHJldHVybiAx OyB9LAorICAgIFtdKHRoaXMgYXV0byBjb25zdCYgc2VsZiwgTm9kZSogbikgLT4gaW50IHsKKyAg ICAgIHJldHVybiB2aXNpdF90cmVlIChzZWxmLCBuLT5sZWZ0KSArIHZpc2l0X3RyZWUgKHNlbGYs IG4tPnJpZ2h0KTsKKyAgICB9fSwKKyAgICByb290KTsKKyAgaWYgKG51bV9sZWF2ZXMgIT0gdHJ1 ZV9udW1fbGVhdmVzKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVgwLkMgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDAuQwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzk3NzYwOTI5NzgKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDAuQwpA QCAtMCwwICsxLDY4IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQg YysrMjMgfSB9CisKKy8vIHhvYmogbGFtYmRhIHdpdGggaW52YWxpZCBkZWNsIHNwZWNzCisKK3Zv aWQgdGVzdCgpCit7CisgIGF1dG8gZjAgPSBbXSh0aGlzIGF1dG8pIG11dGFibGUge307IC8vIHsg ZGctbGluZSBsaW5lX2YwIH0KKyAgYXV0byBmMSA9IFtdKHRoaXMgYXV0byYpIG11dGFibGUge307 IC8vIHsgZGctbGluZSBsaW5lX2YxIH0KKyAgYXV0byBmMiA9IFtdKHRoaXMgYXV0byBjb25zdCYp IG11dGFibGUge307IC8vIHsgZGctbGluZSBsaW5lX2YyIH0KKyAgYXV0byBmMyA9IFtdKHRoaXMg YXV0byYmKSBtdXRhYmxlIHt9OyAvLyB7IGRnLWxpbmUgbGluZV9mMyB9CisKKyAgYXV0byBnMCA9 IFtdKHRoaXMgYXV0bykgc3RhdGljIHt9OyAvLyB7IGRnLWxpbmUgbGluZV9nMCB9CisgIGF1dG8g ZzEgPSBbXSh0aGlzIGF1dG8mKSBzdGF0aWMge307IC8vIHsgZGctbGluZSBsaW5lX2cxIH0KKyAg YXV0byBnMiA9IFtdKHRoaXMgYXV0byBjb25zdCYpIHN0YXRpYyB7fTsgLy8geyBkZy1saW5lIGxp bmVfZzIgfQorICBhdXRvIGczID0gW10odGhpcyBhdXRvJiYpIHN0YXRpYyB7fTsgLy8geyBkZy1s aW5lIGxpbmVfZzMgfQorCisgIGF1dG8gZmMwID0gW24gPSAwXSh0aGlzIGF1dG8pIG11dGFibGUg e307IC8vIHsgZGctbGluZSBsaW5lX2ZjMCB9CisgIGF1dG8gZmMxID0gW24gPSAwXSh0aGlzIGF1 dG8mKSBtdXRhYmxlIHt9OyAvLyB7IGRnLWxpbmUgbGluZV9mYzEgfQorICBhdXRvIGZjMiA9IFtu ID0gMF0odGhpcyBhdXRvIGNvbnN0JikgbXV0YWJsZSB7fTsgLy8geyBkZy1saW5lIGxpbmVfZmMy IH0KKyAgYXV0byBmYzMgPSBbbiA9IDBdKHRoaXMgYXV0byYmKSBtdXRhYmxlIHt9OyAvLyB7IGRn LWxpbmUgbGluZV9mYzMgfQorCisgIGF1dG8gZ2MwID0gW24gPSAwXSh0aGlzIGF1dG8pIHN0YXRp YyB7fTsgLy8geyBkZy1saW5lIGxpbmVfZ2MwIH0KKyAgYXV0byBnYzEgPSBbbiA9IDBdKHRoaXMg YXV0byYpIHN0YXRpYyB7fTsgLy8geyBkZy1saW5lIGxpbmVfZ2MxIH0KKyAgYXV0byBnYzIgPSBb biA9IDBdKHRoaXMgYXV0byBjb25zdCYpIHN0YXRpYyB7fTsgLy8geyBkZy1saW5lIGxpbmVfZ2My IH0KKyAgYXV0byBnYzMgPSBbbiA9IDBdKHRoaXMgYXV0byYmKSBzdGF0aWMge307IC8vIHsgZGct bGluZSBsaW5lX2djMyB9Cit9CisKKy8vIHsgZGctZXJyb3IgeydtdXRhYmxlJyBsYW1iZGEgc3Bl Y2lmaWVyIHdpdGggZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcn0ge30geyB0YXJnZXQgKi0qLSog fSBsaW5lX2YwIH0KKy8vIHsgZGctZXJyb3IgeydtdXRhYmxlJyBsYW1iZGEgc3BlY2lmaWVyIHdp dGggZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcn0ge30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2Yx IH0KKy8vIHsgZGctZXJyb3IgeydtdXRhYmxlJyBsYW1iZGEgc3BlY2lmaWVyIHdpdGggZXhwbGlj aXQgb2JqZWN0IHBhcmFtZXRlcn0ge30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2YyIH0KKy8vIHsg ZGctZXJyb3IgeydtdXRhYmxlJyBsYW1iZGEgc3BlY2lmaWVyIHdpdGggZXhwbGljaXQgb2JqZWN0 IHBhcmFtZXRlcn0ge30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2YzIH0KKworLy8geyBkZy1ub3Rl IHt0aGUgcGFzc2VkIGluIGNsb3N1cmUgb2JqZWN0IHdpbGwgbm90IGJlIG11dGF0ZWQgYmVjYXVz ZSBpdCBpcyB0YWtlbiBieSBjb3B5L21vdmV9IHt9IHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mMCB9 CisvLyB7IGRnLW5vdGUge2V4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgaXMgYWxyZWFkeSBhIG11 dGFibGUgcmVmZXJlbmNlfSB7fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZjEgfQorLy8geyBkZy1u b3RlIHtkZWNsYXJlIHRoZSBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGFzIG5vbi1jb25zdCBy ZWZlcmVuY2UgaW5zdGVhZH0ge30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2YyIH0KKy8vIHsgZGct bm90ZSB7ZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBpcyBhbHJlYWR5IGEgbXV0YWJsZSByZWZl cmVuY2V9IHt9IHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mMyB9CisKKy8vIHsgZGctZXJyb3Igeydz dGF0aWMnIGxhbWJkYSBzcGVjaWZpZXIgd2l0aCBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyfSB7 fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZzAgfQorLy8geyBkZy1lcnJvciB7J3N0YXRpYycgbGFt YmRhIHNwZWNpZmllciB3aXRoIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXJ9IHt9IHsgdGFyZ2V0 ICotKi0qIH0gbGluZV9nMSB9CisvLyB7IGRnLWVycm9yIHsnc3RhdGljJyBsYW1iZGEgc3BlY2lm aWVyIHdpdGggZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcn0ge30geyB0YXJnZXQgKi0qLSogfSBs aW5lX2cyIH0KKy8vIHsgZGctZXJyb3IgeydzdGF0aWMnIGxhbWJkYSBzcGVjaWZpZXIgd2l0aCBl eHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyfSB7fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZzMgfQor CisvLyB7IGRnLW5vdGUge2V4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZX0g e30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2cwIH0KKy8vIHsgZGctbm90ZSB7ZXhwbGljaXQgb2Jq ZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlfSB7fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZzEg fQorLy8geyBkZy1ub3RlIHtleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmV9 IHt9IHsgdGFyZ2V0ICotKi0qIH0gbGluZV9nMiB9CisvLyB7IGRnLW5vdGUge2V4cGxpY2l0IG9i amVjdCBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZX0ge30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2cz IH0KKworLy8geyBkZy1lcnJvciB7J211dGFibGUnIGxhbWJkYSBzcGVjaWZpZXIgd2l0aCBleHBs aWNpdCBvYmplY3QgcGFyYW1ldGVyfSB7fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZmMwIH0KKy8v IHsgZGctZXJyb3IgeydtdXRhYmxlJyBsYW1iZGEgc3BlY2lmaWVyIHdpdGggZXhwbGljaXQgb2Jq ZWN0IHBhcmFtZXRlcn0ge30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2ZjMSB9CisvLyB7IGRnLWVy cm9yIHsnbXV0YWJsZScgbGFtYmRhIHNwZWNpZmllciB3aXRoIGV4cGxpY2l0IG9iamVjdCBwYXJh bWV0ZXJ9IHt9IHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mYzIgfQorLy8geyBkZy1lcnJvciB7J211 dGFibGUnIGxhbWJkYSBzcGVjaWZpZXIgd2l0aCBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyfSB7 fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZmMzIH0KKworLy8geyBkZy1ub3RlIHt0aGUgcGFzc2Vk IGluIGNsb3N1cmUgb2JqZWN0IHdpbGwgbm90IGJlIG11dGF0ZWQgYmVjYXVzZSBpdCBpcyB0YWtl biBieSBjb3B5L21vdmV9IHt9IHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mYzAgfQorLy8geyBkZy1u b3RlIHtleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGlzIGFscmVhZHkgYSBtdXRhYmxlIHJlZmVy ZW5jZX0ge30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2ZjMSB9CisvLyB7IGRnLW5vdGUge2RlY2xh cmUgdGhlIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgYXMgbm9uLWNvbnN0IHJlZmVyZW5jZSBp bnN0ZWFkfSB7fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZmMyIH0KKy8vIHsgZGctbm90ZSB7ZXhw bGljaXQgb2JqZWN0IHBhcmFtZXRlciBpcyBhbHJlYWR5IGEgbXV0YWJsZSByZWZlcmVuY2V9IHt9 IHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mYzMgfQorCisvLyB7IGRnLWVycm9yIHsnc3RhdGljJyBs YW1iZGEgc3BlY2lmaWVyIHdpdGggZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcn0ge30geyB0YXJn ZXQgKi0qLSogfSBsaW5lX2djMCB9CisvLyB7IGRnLWVycm9yIHsnc3RhdGljJyBsYW1iZGEgc3Bl Y2lmaWVyIHdpdGggZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcn0ge30geyB0YXJnZXQgKi0qLSog fSBsaW5lX2djMSB9CisvLyB7IGRnLWVycm9yIHsnc3RhdGljJyBsYW1iZGEgc3BlY2lmaWVyIHdp dGggZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcn0ge30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2dj MiB9CisvLyB7IGRnLWVycm9yIHsnc3RhdGljJyBsYW1iZGEgc3BlY2lmaWVyIHdpdGggZXhwbGlj aXQgb2JqZWN0IHBhcmFtZXRlcn0ge30geyB0YXJnZXQgKi0qLSogfSBsaW5lX2djMyB9CisKKy8v IHsgZGctbm90ZSB7ZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlfSB7fSB7 IHRhcmdldCAqLSotKiB9IGxpbmVfZ2MwIH0KKy8vIHsgZGctbm90ZSB7ZXhwbGljaXQgb2JqZWN0 IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlfSB7fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZ2MxIH0K Ky8vIHsgZGctbm90ZSB7ZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlfSB7 fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZ2MyIH0KKy8vIHsgZGctbm90ZSB7ZXhwbGljaXQgb2Jq ZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlfSB7fSB7IHRhcmdldCAqLSotKiB9IGxpbmVfZ2Mz IH0KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWxhbWJkYVgyMC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxh bWJkYVgyMC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hODA4MDE5 ZTI4ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1sYW1iZGFYMjAuQwpAQCAtMCwwICsxLDQ2IEBACisvLyBQMDg0N1I3CisvLyB7IGRn LWRvIHJ1biB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gY2FsbGluZyBjYXB0dXJlbGVzcyBsYW1i ZGEgY2FsbCBvcGVyYXRvciB3aXRoIHVucmVsYXRlZCBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVy CisvLyB0aHJvdWdoIGZ1bmN0aW9uIHBvaW50ZXIKKworaW50IG1haW4oKQoreworICBhdXRvIGYw ID0gW10odGhpcyBhdXRvIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH07CisgIGF1dG8gZnAwX3ZhbHVl ICAgICA9IHN0YXRpY19jYXN0PGludCgqKShpbnQpICAgICAgICA+KCZkZWNsdHlwZShmMCk6Om9w ZXJhdG9yKCkpOworICBhdXRvIGZwMF9scmVmICAgICAgPSBzdGF0aWNfY2FzdDxpbnQoKikoaW50 JikgICAgICAgPigmZGVjbHR5cGUoZjApOjpvcGVyYXRvcigpKTsKKyAgYXV0byBmcDBfcnJlZiAg ICAgID0gc3RhdGljX2Nhc3Q8aW50KCopKGludCYmKSAgICAgID4oJmRlY2x0eXBlKGYwKTo6b3Bl cmF0b3IoKSk7CisgIGF1dG8gZnAwX2NvbnN0bHJlZiA9IHN0YXRpY19jYXN0PGludCgqKShpbnQg Y29uc3QmKSA+KCZkZWNsdHlwZShmMCk6Om9wZXJhdG9yKCkpOworICBhdXRvIGZwMF9jb25zdHJy ZWYgPSBzdGF0aWNfY2FzdDxpbnQoKikoaW50IGNvbnN0JiYpPigmZGVjbHR5cGUoZjApOjpvcGVy YXRvcigpKTsKKworICBhdXRvIGYxID0gW10odGhpcyBhdXRvJiYgc2VsZikgeyByZXR1cm4gc2Vs ZjsgfTsKKyAgYXV0byBmcDFfbHJlZiAgICAgID0gc3RhdGljX2Nhc3Q8aW50KCopKGludCYpICAg ICAgID4oJmRlY2x0eXBlKGYxKTo6b3BlcmF0b3IoKSk7CisgIGF1dG8gZnAxX3JyZWYgICAgICA9 IHN0YXRpY19jYXN0PGludCgqKShpbnQmJikgICAgICA+KCZkZWNsdHlwZShmMSk6Om9wZXJhdG9y KCkpOworICBhdXRvIGZwMV9jb25zdGxyZWYgPSBzdGF0aWNfY2FzdDxpbnQoKikoaW50IGNvbnN0 JikgPigmZGVjbHR5cGUoZjEpOjpvcGVyYXRvcigpKTsKKyAgYXV0byBmcDFfY29uc3RycmVmID0g c3RhdGljX2Nhc3Q8aW50KCopKGludCBjb25zdCYmKT4oJmRlY2x0eXBlKGYxKTo6b3BlcmF0b3Io KSk7CisKKyAgLy8gYm90aCBhcmUgbmVlZGVkIGZvciBsdmFsdWUvcnZhbHVlIG92ZXJsb2Fkcwor ICAjZGVmaW5lIE1BR0lDIDQyCisgIGludCBtYWdpYyA9IE1BR0lDOworCisgIGlmIChmcDBfdmFs dWUgKG1hZ2ljKSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChmcDBf bHJlZiAobWFnaWMpICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKGZw MF9ycmVmIChNQUdJQykgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAo ZnAwX2NvbnN0bHJlZiAobWFnaWMpICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsK KyAgaWYgKGZwMF9jb25zdHJyZWYgKE1BR0lDKSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJv cnQgKCk7CisKKyAgaWYgKGZwMV9scmVmIChtYWdpYykgIT0gbWFnaWMpCisgICAgX19idWlsdGlu X2Fib3J0ICgpOworICBpZiAoZnAxX3JyZWYgKE1BR0lDKSAhPSBtYWdpYykKKyAgICBfX2J1aWx0 aW5fYWJvcnQgKCk7CisgIGlmIChmcDFfY29uc3RscmVmIChtYWdpYykgIT0gbWFnaWMpCisgICAg X19idWlsdGluX2Fib3J0ICgpOworICBpZiAoZnAxX2NvbnN0cnJlZiAoTUFHSUMpICE9IG1hZ2lj KQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVgyMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVgyMS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi43MTVhMjQ1Nzk0NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYMjEuQwpAQCAtMCwwICsx LDM5IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9 CisKKy8vIGluc3RhbnRpYXRpbmcgY2FwdHVyZWxlc3MgbGFtYmRhIGNhbGwgb3BlcmF0b3Igd2l0 aCB1bnJlbGF0ZWQgZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcgorCit2b2lkIHRlc3QwKCkKK3sK KyAgYXV0byBmMCA9IFtdKHRoaXMgYXV0byBzZWxmKSB7IHJldHVybiBzZWxmOyB9OworICBhdXRv IGZwMF92YWx1ZSAgICAgPSBzdGF0aWNfY2FzdDxpbnQoKikoaW50KSAgICAgICAgPigmZGVjbHR5 cGUoZjApOjpvcGVyYXRvcigpKTsKKyAgYXV0byBmcDBfbHJlZiAgICAgID0gc3RhdGljX2Nhc3Q8 aW50KCopKGludCYpICAgICAgID4oJmRlY2x0eXBlKGYwKTo6b3BlcmF0b3IoKSk7CisgIGF1dG8g ZnAwX3JyZWYgICAgICA9IHN0YXRpY19jYXN0PGludCgqKShpbnQmJikgICAgICA+KCZkZWNsdHlw ZShmMCk6Om9wZXJhdG9yKCkpOworICBhdXRvIGZwMF9jb25zdGxyZWYgPSBzdGF0aWNfY2FzdDxp bnQoKikoaW50IGNvbnN0JikgPigmZGVjbHR5cGUoZjApOjpvcGVyYXRvcigpKTsKKyAgYXV0byBm cDBfY29uc3RycmVmID0gc3RhdGljX2Nhc3Q8aW50KCopKGludCBjb25zdCYmKT4oJmRlY2x0eXBl KGYwKTo6b3BlcmF0b3IoKSk7CisKKyAgYXV0byBmMSA9IFtdKHRoaXMgYXV0byYmIHNlbGYpIHsg cmV0dXJuIHNlbGY7IH07CisgIGF1dG8gZnAxX3ZhbHVlICAgICAgPSBzdGF0aWNfY2FzdDxpbnQo KikoaW50KSAgICAgICAgPigmZGVjbHR5cGUoZjEpOjpvcGVyYXRvcigpKTsgLy8geyBkZy1lcnJv ciB7aW52YWxpZCAnc3RhdGljX2Nhc3QnIGZyb20gdHlwZX0gfQorICBhdXRvIGZwMV9scmVmICAg ICAgID0gc3RhdGljX2Nhc3Q8aW50KCopKGludCYpICAgICAgID4oJmRlY2x0eXBlKGYxKTo6b3Bl cmF0b3IoKSk7CisgIGF1dG8gZnAxX3JyZWYgICAgICAgPSBzdGF0aWNfY2FzdDxpbnQoKikoaW50 JiYpICAgICAgPigmZGVjbHR5cGUoZjEpOjpvcGVyYXRvcigpKTsKKyAgYXV0byBmcDFfY29uc3Rs cmVmICA9IHN0YXRpY19jYXN0PGludCgqKShpbnQgY29uc3QmKSA+KCZkZWNsdHlwZShmMSk6Om9w ZXJhdG9yKCkpOworICBhdXRvIGZwMV9jb25zdHJyZWYgID0gc3RhdGljX2Nhc3Q8aW50KCopKGlu dCBjb25zdCYmKT4oJmRlY2x0eXBlKGYxKTo6b3BlcmF0b3IoKSk7Cit9CisKK3ZvaWQgdGVzdDEo KQoreworICBhdXRvIGYwID0gW10odGhpcyBhdXRvIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH07Cisg IGludCAoKmZwMF92YWx1ZSkoaW50KSAgICAgICAgICAgICA9ICZkZWNsdHlwZShmMCk6Om9wZXJh dG9yKCk7CisgIGludCAoKmZwMF9scmVmKShpbnQmKSAgICAgICAgICAgICA9ICZkZWNsdHlwZShm MCk6Om9wZXJhdG9yKCk7CisgIGludCAoKmZwMF9ycmVmKShpbnQmJikgICAgICAgICAgICA9ICZk ZWNsdHlwZShmMCk6Om9wZXJhdG9yKCk7CisgIGludCAoKmZwMF9jb25zdGxyZWYpKGludCBjb25z dCYpICA9ICZkZWNsdHlwZShmMCk6Om9wZXJhdG9yKCk7CisgIGludCAoKmZwMF9jb25zdHJyZWYp KGludCBjb25zdCYmKSA9ICZkZWNsdHlwZShmMCk6Om9wZXJhdG9yKCk7CisKKyAgYXV0byBmMSA9 IFtdKHRoaXMgYXV0byYmIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH07CisgIGludCAoKmZwMV92YWx1 ZSkoaW50KSAgICAgICAgICAgICAgPSAmZGVjbHR5cGUoZjEpOjpvcGVyYXRvcigpOyAvLyB7IGRn LWVycm9yIHtubyBtYXRjaGVzIGNvbnZlcnRpbmcgZnVuY3Rpb259IH0KKyAgaW50ICgqZnAxX2xy ZWYpKGludCYpICAgICAgICAgICAgICA9ICZkZWNsdHlwZShmMSk6Om9wZXJhdG9yKCk7CisgIGlu dCAoKmZwMV9ycmVmKShpbnQmJikgICAgICAgICAgICAgPSAmZGVjbHR5cGUoZjEpOjpvcGVyYXRv cigpOworICBpbnQgKCpmcDFfY29uc3RscmVmKShpbnQgY29uc3QmKSAgID0gJmRlY2x0eXBlKGYx KTo6b3BlcmF0b3IoKTsKKyAgaW50ICgqZnAxX2NvbnN0cnJlZikoaW50IGNvbnN0JiYpICA9ICZk ZWNsdHlwZShmMSk6Om9wZXJhdG9yKCk7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYMjQuQyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYMjQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uZThkMzQ4YTdlN2QKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDI0LkMKQEAgLTAsMCArMSw5 OCBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQor CisvLyBTRklOQUUgd2hlbiB0aGUgY2FsbCBvcGVyYXRvciBmb3IgYSBsYW1iZGEgd2l0aCBjYXB0 dXJlcyBpcyBpbnN0YW50aWF0ZWQKKy8vIHdpdGggYW4gdW5yZWxhdGVkIHR5cGUuCisvLyBkaWFn bm9zZSBhbWJpZ3VvdXMgb3ZlcmxvYWRzIHdoZW4gdGhlIGNhbGwgb3BlcmF0b3IgZm9yIGEgY2Fw dHVyZWxlc3MgbGFtYmRhIGlzIGluc3RhbnRpYXRlZAorLy8gd2l0aCBhbiB1bnJlbGF0ZWQgdHlw ZS4KKworLyogW2V4cHIucHJpbS5sYW1iZGEuZ2VuZXJhbC01XQorCisgICBHaXZlbiBhIGxhbWJk YSB3aXRoIGEgbGFtYmRhLWNhcHR1cmUsIHRoZSB0eXBlIG9mIHRoZSBleHBsaWNpdCBvYmplY3QK KyAgIHBhcmFtZXRlciwgaWYgYW55LCBvZiB0aGUgbGFtYmRhJ3MgZnVuY3Rpb24gY2FsbCBvcGVy YXRvciAocG9zc2libHkKKyAgIGluc3RhbnRpYXRlZCBmcm9tIGEgZnVuY3Rpb24gY2FsbCBvcGVy YXRvciB0ZW1wbGF0ZSkgc2hhbGwgYmUgZWl0aGVyOgorCisgICAtLSg1LjEpIHRoZSBjbG9zdXJl IHR5cGUsCisgICAtLSg1LjIpIGEgY2xhc3MgdHlwZSBkZXJpdmVkIGZyb20gdGhlIGNsb3N1cmUg dHlwZSwgb3IKKyAgIC0tKDUuMykgYSByZWZlcmVuY2UgdG8gYSBwb3NzaWJseSBjdi1xdWFsaWZp ZWQgc3VjaCB0eXBlLiAgKi8KKworLy8gVGhlIGFib3ZlIHdvcmRpbmcgaXMgc2ltaWxhciB0byBb ZGNsLmZjdC0xNV0gd2hpY2ggaXMgaGFuZGxlZCBieSBTRklOQUUsCisvLyB0aHVzIHdlIGFsc28g aGFuZGxlIHRoZSBmb2xsb3dpbmcgY2FzZXMgdGhlIHNhbWUgd2F5LgorCisvLyBXZSBuZWVkIHRo ZSAyIG92ZXJsb2FkcyB0byBiZSBhbWJpZ3VvdXMgdG8gb2JzZXJ2ZSBzdWJzdGl0dXRpb24gZmFp bHVyZQorLy8gZm9yIHRoZSBsYW1iZGEncyBjYWxsIG9wZXJhdG9yIHdoZW4gaW5zdGFudGlhdGVk IHdpdGggYW4gdW5yZWxhdGVkIHR5cGUuCisvLyBXZSBhY2NvbXBsaXNoIHRoaXMgYnkgaW50cm9k dWNpbmcgYm90aCBvdmVybG9hZHMgdGhyb3VnaCB1c2luZyBkZWNsYXJhdGlvbnMuCisKK3N0cnVj dCBCMCB7CisgIHZvaWQgb3BlcmF0b3IoKSh0aGlzIGF1dG8pIHt9Cit9OworCit0ZW1wbGF0ZTx0 eXBlbmFtZSBUPgorc3RydWN0IFMwIDogVCwgQjAgeworICB1c2luZyBUOjpvcGVyYXRvcigpOwor ICB1c2luZyBCMDo6b3BlcmF0b3IoKTsKKyAgb3BlcmF0b3IgaW50KCkgY29uc3Qge3JldHVybiB7 fTt9Cit9OworCit2b2lkIHRlc3QwKCkKK3sKKyAgYXV0byBzMCA9IFMwe1tdKHRoaXMgYXV0byl7 fX07CisgIHMwLm9wZXJhdG9yKCk8aW50PigpOyAvLyB7IGRnLWVycm9yIHtjYWxsIG9mIG92ZXJs b2FkZWQgJ29wZXJhdG9yXChcKVwoXCknIGlzIGFtYmlndW91c30gfQorCisgIGF1dG8gczEgPSBT MHtbeCA9IDQyXSh0aGlzIGF1dG8pe319OworICBzMS5vcGVyYXRvcigpPGludD4oKTsgLy8geyBk Zy1ib2d1cyB7Y2FsbCBvZiBvdmVybG9hZGVkICdvcGVyYXRvclwoXClcKFwpJyBpcyBhbWJpZ3Vv dXN9IH0KK30KKworCitzdHJ1Y3QgQjEgeworICB2b2lkIG9wZXJhdG9yKCkodGhpcyBhdXRvJiYp IHt9Cit9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBTMSA6IFQsIEIxIHsKKyAgdXNp bmcgVDo6b3BlcmF0b3IoKTsKKyAgdXNpbmcgQjE6Om9wZXJhdG9yKCk7CisgIG9wZXJhdG9yIGlu dCgpIGNvbnN0IHtyZXR1cm4ge307fQorfTsKKwordm9pZCB0ZXN0MSgpCit7CisgIGF1dG8gczAg PSBTMXtbXSh0aGlzIGF1dG8mJil7fX07CisgIHMwLm9wZXJhdG9yKCk8aW50PigpOyAvLyB7IGRn LWVycm9yIHtjYWxsIG9mIG92ZXJsb2FkZWQgJ29wZXJhdG9yXChcKVwoXCknIGlzIGFtYmlndW91 c30gfQorCisgIGF1dG8gczEgPSBTMXtbeCA9IDQyXSh0aGlzIGF1dG8mJil7fX07CisgIHMxLm9w ZXJhdG9yKCk8aW50PigpOyAvLyB7IGRnLWJvZ3VzIHtjYWxsIG9mIG92ZXJsb2FkZWQgJ29wZXJh dG9yXChcKVwoXCknIGlzIGFtYmlndW91c30gfQorfQorCisKK3N0cnVjdCBCMiB7CisgIC8vIG5l ZWRzIHRvIGJlIGEgdGVtcGxhdGUsIHdlIGFyZSBleHBsaWNpdGx5IHBhc3NpbmcgYSB0ZW1wbGF0 ZSBhcmd1bWVudCwKKyAgLy8gd2l0aG91dCB0aGUgcGFyYW1ldGVyIGhlcmUgdGhpcyB3b3VsZCBu b3QgYmUgYSBjYW5kaWRhdGUKKyAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQ+CisgIHZvaWQg b3BlcmF0b3IoKSh0aGlzIGludCkge30KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1 Y3QgUzIgOiBULCBCMiB7CisgIHVzaW5nIFQ6Om9wZXJhdG9yKCk7CisgIHVzaW5nIEIyOjpvcGVy YXRvcigpOworICBvcGVyYXRvciBpbnQoKSBjb25zdCB7cmV0dXJuIHt9O30KK307CisKK3ZvaWQg dGVzdDIoKQoreworICBhdXRvIHMwID0gUzJ7W10odGhpcyBhdXRvKXt9fTsKKyAgczAub3BlcmF0 b3IoKTxpbnQ+KCk7IC8vIHsgZGctZXJyb3Ige2NhbGwgb2Ygb3ZlcmxvYWRlZCAnb3BlcmF0b3Jc KFwpXChcKScgaXMgYW1iaWd1b3VzfSB9CisKKyAgYXV0byBzMSA9IFMye1t4ID0gNDJdKHRoaXMg YXV0byl7fX07CisgIHMxLm9wZXJhdG9yKCk8aW50PigpOyAvLyB7IGRnLWJvZ3VzIHtjYWxsIG9m IG92ZXJsb2FkZWQgJ29wZXJhdG9yXChcKVwoXCknIGlzIGFtYmlndW91c30gfQorfQorCit2b2lk IHRlc3QzKCkKK3sKKyAgYXV0byBzMCA9IFMye1tdKHRoaXMgYXV0byYmKXt9fTsKKyAgczAub3Bl cmF0b3IoKTxpbnQ+KCk7IC8vIHsgZGctZXJyb3Ige2NhbGwgb2Ygb3ZlcmxvYWRlZCAnb3BlcmF0 b3JcKFwpXChcKScgaXMgYW1iaWd1b3VzfSB9CisKKyAgYXV0byBzMSA9IFMye1t4ID0gNDJdKHRo aXMgYXV0byYmKXt9fTsKKyAgczEub3BlcmF0b3IoKTxpbnQ+KCk7IC8vIHsgZGctYm9ndXMge2Nh bGwgb2Ygb3ZlcmxvYWRlZCAnb3BlcmF0b3JcKFwpXChcKScgaXMgYW1iaWd1b3VzfSB9Cit9CisK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1i ZGFYMjUuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFY MjUuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjI1ZmEwMDZmMWYK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotbGFtYmRhWDI1LkMKQEAgLTAsMCArMSwxMDEgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gU0ZJTkFFIHdoZW4gdGhlIGNhbGwgb3Bl cmF0b3IgZm9yIGEgbGFtYmRhIHdpdGggY2FwdHVyZXMgaXMgaW5zdGFudGlhdGVkCisvLyB3aXRo IGFuIHVucmVsYXRlZCB0eXBlLgorLy8gZGlhZ25vc2UgYW1iaWd1b3VzIG92ZXJsb2FkcyB3aGVu IHRoZSBjYWxsIG9wZXJhdG9yIGZvciBhIGNhcHR1cmVsZXNzIGxhbWJkYSBpcyBpbnN0YW50aWF0 ZWQKKy8vIHdpdGggYW4gdW5yZWxhdGVkIHR5cGUuCisKKy8qIFtleHByLnByaW0ubGFtYmRhLmdl bmVyYWwtNV0KKworICAgR2l2ZW4gYSBsYW1iZGEgd2l0aCBhIGxhbWJkYS1jYXB0dXJlLCB0aGUg dHlwZSBvZiB0aGUgZXhwbGljaXQgb2JqZWN0CisgICBwYXJhbWV0ZXIsIGlmIGFueSwgb2YgdGhl IGxhbWJkYSdzIGZ1bmN0aW9uIGNhbGwgb3BlcmF0b3IgKHBvc3NpYmx5CisgICBpbnN0YW50aWF0 ZWQgZnJvbSBhIGZ1bmN0aW9uIGNhbGwgb3BlcmF0b3IgdGVtcGxhdGUpIHNoYWxsIGJlIGVpdGhl cjoKKworICAgLS0oNS4xKSB0aGUgY2xvc3VyZSB0eXBlLAorICAgLS0oNS4yKSBhIGNsYXNzIHR5 cGUgZGVyaXZlZCBmcm9tIHRoZSBjbG9zdXJlIHR5cGUsIG9yCisgICAtLSg1LjMpIGEgcmVmZXJl bmNlIHRvIGEgcG9zc2libHkgY3YtcXVhbGlmaWVkIHN1Y2ggdHlwZS4gICovCisKKy8vIFRoZSBh Ym92ZSB3b3JkaW5nIGlzIHNpbWlsYXIgdG8gW2RjbC5mY3QtMTVdIHdoaWNoIGlzIGhhbmRsZWQg YnkgU0ZJTkFFLAorLy8gdGh1cyB3ZSBhbHNvIGhhbmRsZSB0aGUgZm9sbG93aW5nIGNhc2VzIHRo ZSBzYW1lIHdheS4KKworLy8gV2UgbmVlZCB0aGUgMiBvdmVybG9hZHMgdG8gYmUgYW1iaWd1b3Vz IHRvIG9ic2VydmUgc3Vic3RpdHV0aW9uIGZhaWx1cmUKKy8vIGZvciB0aGUgbGFtYmRhJ3MgY2Fs bCBvcGVyYXRvciB3aGVuIGluc3RhbnRpYXRlZCB3aXRoIGFuIHVucmVsYXRlZCB0eXBlLgorLy8g V2UgYWNjb21wbGlzaCB0aGlzIGJ5IGludHJvZHVjaW5nIGJvdGggb3ZlcmxvYWRzIHRocm91Z2gg dXNpbmcgZGVjbGFyYXRpb25zLgorCitzdHJ1Y3QgQjAgeworICB2b2lkIG9wZXJhdG9yKCkodGhp cyBhdXRvKSB7fQorfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUzAgOiBULCBCMCB7 CisgIHVzaW5nIEIwOjpvcGVyYXRvcigpOworICB1c2luZyBUOjpvcGVyYXRvcigpOworfTsKKwor dm9pZCB0ZXN0MCgpCit7CisgIGF1dG8gczAgPSBTMHtbXSh0aGlzIGF1dG8pe319OworICB2b2lk ICgqcDApKGludCkgPSAmZGVjbHR5cGUoczApOjpvcGVyYXRvcigpOyAvLyB7IGRnLWVycm9yIHtj b252ZXJ0aW5nIG92ZXJsb2FkZWQgZnVuY3Rpb24gJ1teXG5ccl0rJyB0byB0eXBlICdbXlxuXHJd KycgaXMgYW1iaWd1b3VzfSB9CisKKyAgYXV0byBzMSA9IFMwe1t4ID0gNDJdKHRoaXMgYXV0byl7 fX07CisgIHZvaWQgKCpwMSkoaW50KSA9ICZkZWNsdHlwZShzMSk6Om9wZXJhdG9yKCk7IC8vIHsg ZGctYm9ndXMge2NvbnZlcnRpbmcgb3ZlcmxvYWRlZCBmdW5jdGlvbiAnW15cblxyXSsnIHRvIHR5 cGUgJ1teXG5ccl0rJyBpcyBhbWJpZ3VvdXN9IHtTdWJzdGl0dXRpb24gZmFpbHVyZSBmb3IgYSBj YXB0dXJlZnVsIGxhbWJkYSB3aXRoIGFuIHVucmVsYXRlZCB4b2JqIHBhcmFtZXRlciB0eXBlIGZh aWxlZCF9IH0KK30KKworc3RydWN0IEIxIHsKKyAgdm9pZCBvcGVyYXRvcigpKHRoaXMgYXV0byYm KSB7fQorfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUzEgOiBULCBCMSB7CisgIHVz aW5nIEIxOjpvcGVyYXRvcigpOworICB1c2luZyBUOjpvcGVyYXRvcigpOworfTsKKwordm9pZCB0 ZXN0MSgpCit7CisgIGF1dG8gczAgPSBTMXtbXSh0aGlzIGF1dG8mJil7fX07CisgIHZvaWQgKCpw MCkoaW50JikgPSAmZGVjbHR5cGUoczApOjpvcGVyYXRvcigpOyAvLyB7IGRnLWVycm9yIHtjb252 ZXJ0aW5nIG92ZXJsb2FkZWQgZnVuY3Rpb24gJ1teXG5ccl0rJyB0byB0eXBlICdbXlxuXHJdKycg aXMgYW1iaWd1b3VzfSB9CisKKyAgYXV0byBzMSA9IFMxe1t4ID0gNDJdKHRoaXMgYXV0byYmKXt9 fTsKKyAgdm9pZCAoKnAxKShpbnQmKSA9ICZkZWNsdHlwZShzMSk6Om9wZXJhdG9yKCk7IC8vIHsg ZGctYm9ndXMge2NvbnZlcnRpbmcgb3ZlcmxvYWRlZCBmdW5jdGlvbiAnW15cblxyXSsnIHRvIHR5 cGUgJ1teXG5ccl0rJyBpcyBhbWJpZ3VvdXN9IHtTdWJzdGl0dXRpb24gZmFpbHVyZSBmb3IgYSBj YXB0dXJlZnVsIGxhbWJkYSB3aXRoIGFuIHVucmVsYXRlZCB4b2JqIHBhcmFtZXRlciB0eXBlIGZh aWxlZCF9IH0KK30KKworCitzdHJ1Y3QgQjIgeworICAvLyBub3QgYSB0ZW1wbGF0ZSwgc2hvdWxk IGJlIHRha2VuIG92ZXIgdGhlIGxhbWJkYSdzIGNhbGwgb3BlcmF0b3IKKyAgdm9pZCBvcGVyYXRv cigpKHRoaXMgaW50Jikge30KK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFMyIDog VCwgQjIgeworICB1c2luZyBUOjpvcGVyYXRvcigpOworICB1c2luZyBCMjo6b3BlcmF0b3IoKTsK K307CisKK3ZvaWQgdGVzdDIoKQoreworICBhdXRvIHMwID0gUzJ7W10odGhpcyBhdXRvJiYpe319 OworICB2b2lkICgqcDApKGludCYpID0gJmRlY2x0eXBlKHMwKTo6b3BlcmF0b3IoKTsgLy8geyBk Zy1ib2d1cyB7Y29udmVydGluZyBvdmVybG9hZGVkIGZ1bmN0aW9uICdbXlxuXHJdKycgdG8gdHlw ZSAnW15cblxyXSsnIGlzIGFtYmlndW91c30gfQorCisgIGF1dG8gczEgPSBTMntbeCA9IDQyXSh0 aGlzIGF1dG8mJil7fX07CisgIHZvaWQgKCpwMSkoaW50JikgPSAmZGVjbHR5cGUoczEpOjpvcGVy YXRvcigpOyAvLyB7IGRnLWJvZ3VzIHtjb252ZXJ0aW5nIG92ZXJsb2FkZWQgZnVuY3Rpb24gJ1te XG5ccl0rJyB0byB0eXBlICdbXlxuXHJdKycgaXMgYW1iaWd1b3VzfSB9Cit9CisKK3N0cnVjdCBC MyB7CisgIC8vIG11c3QgYmUgYSB0ZW1wbGF0ZSBzbyBpdCBpcyBub3QgdGFrZW4gb3ZlciB0aGUg bGFtYmRhJ3MgY2FsbCBvcGVyYXRvcgorICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZD4KKyAg dm9pZCBvcGVyYXRvcigpKHRoaXMgaW50Jikge30KK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor c3RydWN0IFMzIDogVCwgQjMgeworICB1c2luZyBCMzo6b3BlcmF0b3IoKTsKKyAgdXNpbmcgVDo6 b3BlcmF0b3IoKTsKK307CisKK3ZvaWQgdGVzdDMoKQoreworICBhdXRvIHMwID0gUzN7W10odGhp cyBhdXRvJiYpe319OworICB2b2lkICgqcDApKGludCYpID0gJmRlY2x0eXBlKHMwKTo6b3BlcmF0 b3IoKTsgLy8geyBkZy1lcnJvciB7Y29udmVydGluZyBvdmVybG9hZGVkIGZ1bmN0aW9uICdbXlxu XHJdKycgdG8gdHlwZSAnW15cblxyXSsnIGlzIGFtYmlndW91c30gfQorCisgIGF1dG8gczEgPSBT M3tbeCA9IDQyXSh0aGlzIGF1dG8mJil7fX07CisgIHZvaWQgKCpwMSkoaW50JikgPSAmZGVjbHR5 cGUoczEpOjpvcGVyYXRvcigpOyAvLyB7IGRnLWJvZ3VzIHtjb252ZXJ0aW5nIG92ZXJsb2FkZWQg ZnVuY3Rpb24gJ1teXG5ccl0rJyB0byB0eXBlICdbXlxuXHJdKycgaXMgYW1iaWd1b3VzfSB7U3Vi c3RpdHV0aW9uIGZhaWx1cmUgZm9yIGEgY2FwdHVyZWZ1bCBsYW1iZGEgd2l0aCBhbiB1bnJlbGF0 ZWQgeG9iaiBwYXJhbWV0ZXIgdHlwZSBmYWlsZWQhfSB9Cit9CisKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYNC5DIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg0LkMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZjZTQyZWJlZmE4Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg0LkMKQEAgLTAs MCArMSwyMyBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBydW4geyB0YXJnZXQgYysrMjMgfSB9 CisKKy8vIGNhbGxzIHRvIGNhbGwgb3BlcmF0b3Igb2YgYSBsYW1iZGEgd2l0aCBjYXB0dXJlcyB3 aXRoIGFuIGltcGxpY2l0IG9iamVjdCBhcmd1bWVudAorLy8gdGhhdCBkZXJpdmVzIGZyb20gdGhl IGxhbWJkYSBjbG9zdXJlIG9iamVjdAorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFMg OiBUIHsKKyAgICB1c2luZyBUOjpvcGVyYXRvcigpOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg VD4KK1MoVCkgLT4gUzxUPjsgCisKK2ludCBtYWluKCkKK3sKKyAgc3RhdGljIGNvbnN0ZXhwciBp bnQgbWFnaWMgPSA0MjsKKyAgaW50IG4gPSBtYWdpYzsKKyAgUyBze1tuXSh0aGlzIGF1dG8mJil7 cmV0dXJuIG47fX07CisgIGlmIChzICgpICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWxhbWJkYVg0MC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWxhbWJkYVg0MC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZTEw ZmIyNjY3NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1sYW1iZGFYNDAuQwpAQCAtMCwwICsxLDIwIEBACisvLyBQMDg0N1I3CisvLyB7 IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIGRpYWdub3NlIG11dGF0aW9u IG9mIGxhbWJkYSBjYXB0dXJlIHdoZW4gY2FsbGVkIHdpdGggYSBkZWR1Y2VkIGFzIGNvbnN0IGV4 cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIKKwordm9pZCB0ZXN0KCkKK3sKKyAgYXV0byBmMCA9IFtu ID0gNV0odGhpcyBhdXRvKXsgbiA9IDEwOyB9OyAvLyB7IGRnLWJvZ3VzIHthc3NpZ25tZW50IG9m IHJlYWQtb25seSB2YXJpYWJsZX0gfQorICBhdXRvIGYxID0gW24gPSA1XSh0aGlzIGF1dG8gY29u c3QpeyBuID0gMTA7IH07IC8vIHsgZGctZXJyb3Ige2Fzc2lnbm1lbnQgb2YgcmVhZC1vbmx5IHZh cmlhYmxlfSB9CisgIGF1dG8gZjIgPSBbbiA9IDVdKHRoaXMgYXV0byYpeyBuID0gMTA7IH07ICAv LyB7IGRnLWVycm9yIHthc3NpZ25tZW50IG9mIHJlYWQtb25seSB2YXJpYWJsZX0gfQorICBhdXRv IGYzID0gW24gPSA1XSh0aGlzIGF1dG8gY29uc3QmKXsgbiA9IDEwOyB9OyAvLyB7IGRnLWVycm9y IHthc3NpZ25tZW50IG9mIHJlYWQtb25seSB2YXJpYWJsZX0gfQorICBhdXRvIGY0ID0gW24gPSA1 XSh0aGlzIGF1dG8mJil7IG4gPSAxMDsgfTsgIC8vIHsgZGctZXJyb3Ige2Fzc2lnbm1lbnQgb2Yg cmVhZC1vbmx5IHZhcmlhYmxlfSB9CisKKyAgc3RhdGljX2Nhc3Q8ZGVjbHR5cGUoZjApIGNvbnN0 Jj4oZjApKCk7CisgIGYxKCk7CisgIHN0YXRpY19jYXN0PGRlY2x0eXBlKGYyKSBjb25zdCY+KGYy KSgpOworICBmMygpOworICBzdGF0aWNfY2FzdDxkZWNsdHlwZShmNCkgY29uc3QmPihmNCkoKTsK K30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWxhbWJkYVg1LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFt YmRhWDUuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODhkNDVkOTBk YjEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotbGFtYmRhWDUuQwpAQCAtMCwwICsxLDIxIEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRv IHJ1biB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gY2FsbHMgdG8gKGNhcHR1cmVsZXNzKSBsYW1i ZGEgd2l0aCBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG9mIHVucmVsYXRlZCB0eXBlCisvLyB3 aXRoIGFuIGFwcHJvcHJpYXRlIGNvbnZlcnRpbmcgY29uc3RydWN0b3IKKworaW5saW5lIGNvbnN0 ZXhwciBpbnQgbWFnaWMgPSA0MjsKKworc3RydWN0IFMgeworICBpbnQgX3Y7ICAKKyAgdGVtcGxh dGU8dHlwZW5hbWUgVD4KKyAgUyhUKSA6IF92KG1hZ2ljKSB7fQorfTsKKworaW50IG1haW4oKQor eworICBhdXRvIGYgPSBbXSh0aGlzIFMgc2VsZil7IHJldHVybiBzZWxmLl92OyB9OworICBpZiAo ZiAoKSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cit9CisKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYNi5DIGIvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg2LkMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjkyZjAyNTQzMWMxCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg2LkMK QEAgLTAsMCArMSw0OCBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0 IGMrKzIzIH0gfQorCisvLyB1bnJlbGF0ZWQgeG9iaiBwYXJhbWV0ZXIgdHlwZSBpbiBjYXB0dXJl bGVzcyBsYW1iZGFzIGFuZCBsYW1iZGFzIHdpdGggY2FwdHVyZXMKKworLy8gZGVjbGFyZWQgd2l0 aCB1bnJlbGF0ZWQgdHlwZQorCitzdHJ1Y3QgUzB7fTsKKwordm9pZCB0ZXN0MCgpCit7CisgIGF1 dG8gZjAgPSBbXSh0aGlzIFMwKXsgcmV0dXJuIDU7IH07IC8vIHsgZGctYm9ndXMgImEgbGFtYmRh IHdpdGggY2FwdHVyZXMgbWF5IG5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIg b2YgYW4gdW5yZWxhdGVkIHR5cGUiIH0KKyAgYXV0byBmMSA9IFt4ID0gNDJdKHRoaXMgUzApeyBy ZXR1cm4gNTsgfTsgLy8geyBkZy1lcnJvciAiYSBsYW1iZGEgd2l0aCBjYXB0dXJlcyBtYXkgbm90 IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBvZiBhbiB1bnJlbGF0ZWQgdHlwZSIg fQorfQorCisvLyBpbnN0YW50aWF0aW9uIGJ5IGNhbGxpbmcgd2l0aCBleHBsaWNpdCB0ZW1wbGF0 ZSBhcmd1bWVudHMKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBTMSA6IFQgeworICB1 c2luZyBUOjpvcGVyYXRvcigpOworICBvcGVyYXRvciBpbnQoKSBjb25zdCB7cmV0dXJuIHt9O30K K307CisKK3ZvaWQgdGVzdDEoKQoreworICBhdXRvIHMwID0gUzF7W10odGhpcyBhdXRvJiYgc2Vs ZikgeyByZXR1cm4gc2VsZjsgfX07IC8vIHsgZGctYm9ndXMge2EgbGFtYmRhIHdpdGggY2FwdHVy ZXMgbWF5IG5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgb2YgYW4gdW5yZWxh dGVkIHR5cGV9IH0KKyAgczAub3BlcmF0b3IoKTxpbnQ+KCk7IC8vIHsgZGctYm9ndXMge25vIG1h dGNoaW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvfSB9CisKKyAgYXV0byBzMSA9IFMxe1t4ID0gMF0o dGhpcyBhdXRvJiYgc2VsZikgeyByZXR1cm4gc2VsZjsgfX07IC8vIHsgZGctbGluZSB0MV9zMSB9 CisgIHMxLm9wZXJhdG9yKCk8aW50PigpOyAvLyB7IGRnLWVycm9yIHtubyBtYXRjaGluZyBmdW5j dGlvbiBmb3IgY2FsbCB0b30gfQorfQorLy8geyBkZy1ub3RlIHtjYW5kaWRhdGU6fSB7fSB7IHRh cmdldCAqLSotKiB9IHQxX3MxIH0KKy8vIHsgZGctbm90ZSB7dGVtcGxhdGUgYXJndW1lbnQgZGVk dWN0aW9uL3N1YnN0aXR1dGlvbiBmYWlsZWR9IHt9IHsgdGFyZ2V0ICotKi0qIH0gdDFfczEgfQor Ly8geyBkZy1lcnJvciB7YSBsYW1iZGEgd2l0aCBjYXB0dXJlcyBtYXkgbm90IGhhdmUgYW4gZXhw bGljaXQgb2JqZWN0IHBhcmFtZXRlciBvZiBhbiB1bnJlbGF0ZWQgdHlwZX0ge30geyB0YXJnZXQg Ki0qLSogfSB0MV9zMSB9CisKKy8vIGluc3RhbnRpYXRpb24gZnJvbSBvdmVybG9hZCByZXNvbHV0 aW9uIHdoZW4gdGFraW5nIGFkZHJlc3Mgb2YgY2FsbCBvcGVyYXRvcgorCit2b2lkIHRlc3QyKCkK K3sKKyAgYXV0byBmID0gW3ggPSA0Ml0odGhpcyBhdXRvJiYpeyByZXR1cm4geDsgfTsgLy8geyBk Zy1saW5lIHQyX2YgfQorCisgIGludCAoKmZwMCkoZGVjbHR5cGUoZikmKSA9ICZkZWNsdHlwZShm KTo6b3BlcmF0b3IoKTsKKyAgaW50ICgqZnAxKShpbnQmKSA9ICZkZWNsdHlwZShmKTo6b3BlcmF0 b3IoKTsgLy8geyBkZy1lcnJvciB7bm8gbWF0Y2hlcyBjb252ZXJ0aW5nIGZ1bmN0aW9ufSB9Cit9 CisKKy8vIHsgZGctZXJyb3IgImEgbGFtYmRhIHdpdGggY2FwdHVyZXMgbWF5IG5vdCBoYXZlIGFu IGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgb2YgYW4gdW5yZWxhdGVkIHR5cGUiIHtkZXBlbmRz IG9uIFBSMTEyODc0fSB7IHhmYWlsICotKi0qIH0gdDJfZiB9CisvLyB7IGRnLW5vdGUgImNhbmRp ZGF0ZSBpcyIgIiIgeyB0YXJnZXQgKi0qLSogfSB0Ml9mIH0KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg2MC5DIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg2MC5DCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTM3YjI1ODY1YQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYNjAuQwpAQCAt MCwwICsxLDI3OSBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMr KzIzIH0gfQorCisvLyBkZWNsdHlwZSgoeCkpIGFuZCBkZWNsdHlwZSh4KSBpbiBleHBsaWNpdCBv YmplY3QgbGFtYmRhCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBjb25zdGV4cHIgYm9v bCBpc19jb25zdF92ID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3Rl eHByIGJvb2wgaXNfY29uc3RfdjxUIGNvbnN0PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1l IFQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBpc19sdmFsdWVfcmVmID0gZmFsc2U7Cit0ZW1wbGF0 ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbHZhbHVlX3JlZjxUJj4gPSB0 cnVlOworCit2b2lkIG5vbl9kZXAoKQoreworICBpbnQgbiA9IDA7CisgIGF1dG8gZjAgPSBbPV08 dHlwZW5hbWUgU2VsZj4odGhpcyBTZWxmJil7CisgICAgc3RhdGljX2Fzc2VydChpc19sdmFsdWVf cmVmPGRlY2x0eXBlKChuKSk+LAorCQkgICJkZWNsdHlwZSgobikpIGlzIG5vdCBhbiBsdmFsdWUg cmVmIik7CisgICAgc3RhdGljX2Fzc2VydChpc19jb25zdF92PFNlbGY+ID09IGlzX2NvbnN0X3Y8 X19yZW1vdmVfcmVmZXJlbmNlIChkZWNsdHlwZSgobikpKT4sIC8vIHsgZGctYm9ndXMge3N0YXRp YyBhc3NlcnRpb24gZmFpbGVkOiBxdWFsaWZpY2F0aW9uIG9mIGRlY2x0eXBlXChcKG5cKVwpIGRv ZXMgbm90IG1hdGNoIHF1YWxpZmljYXRpb24gb2YgU2VsZn0gfQorCQkgICJxdWFsaWZpY2F0aW9u IG9mIGRlY2x0eXBlKChuKSkgZG9lcyBub3QgbWF0Y2ggcXVhbGlmaWNhdGlvbiBvZiBTZWxmIik7 CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKF9fcmVtb3ZlX2N2cmVmIChkZWNsdHlwZSgo bikpKSwgaW50KSwKKwkJICAiZGVjbHR5cGUoKG4pKSBpcyBub3QgYW4gaW50Iik7CisgICAgc3Rh dGljX2Fzc2VydChfX2lzX3NhbWUgKGRlY2x0eXBlKG4pLCBpbnQpKTsKKyAgfTsKKyAgZjAoKTsK KyAgc3RhdGljX2Nhc3Q8ZGVjbHR5cGUoZjApIGNvbnN0Jj4oZjApKCk7CisKKyAgYXV0byBmMSA9 IFsmXTx0eXBlbmFtZSBTZWxmPih0aGlzIFNlbGYmKXsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNf c2FtZSAoZGVjbHR5cGUoKG4pKSwgaW50JikpOworICAgIHN0YXRpY19hc3NlcnQoX19pc19zYW1l IChkZWNsdHlwZShuKSwgaW50KSk7CisgIH07CisgIGYxKCk7CisgIHN0YXRpY19jYXN0PGRlY2x0 eXBlKGYxKSBjb25zdCY+KGYxKSgpOworCisgIGF1dG8gZjIgPSBbbl08dHlwZW5hbWUgU2VsZj4o dGhpcyBTZWxmJil7CisgICAgc3RhdGljX2Fzc2VydChpc19sdmFsdWVfcmVmPGRlY2x0eXBlKChu KSk+LAorCQkgICJkZWNsdHlwZSgobikpIGlzIG5vdCBhbiBsdmFsdWUgcmVmIik7CisgICAgc3Rh dGljX2Fzc2VydChpc19jb25zdF92PFNlbGY+ID09IGlzX2NvbnN0X3Y8X19yZW1vdmVfcmVmZXJl bmNlIChkZWNsdHlwZSgobikpKT4sIC8vIHsgZGctYm9ndXMge3N0YXRpYyBhc3NlcnRpb24gZmFp bGVkOiBxdWFsaWZpY2F0aW9uIG9mIGRlY2x0eXBlXChcKG5cKVwpIGRvZXMgbm90IG1hdGNoIHF1 YWxpZmljYXRpb24gb2YgU2VsZn0gfQorCQkgICJxdWFsaWZpY2F0aW9uIG9mIGRlY2x0eXBlKChu KSkgZG9lcyBub3QgbWF0Y2ggcXVhbGlmaWNhdGlvbiBvZiBTZWxmIik7CisgICAgc3RhdGljX2Fz c2VydChfX2lzX3NhbWUgKF9fcmVtb3ZlX2N2cmVmIChkZWNsdHlwZSgobikpKSwgaW50KSwKKwkJ ICAiZGVjbHR5cGUoKG4pKSBpcyBub3QgYW4gaW50Iik7CisgICAgc3RhdGljX2Fzc2VydChfX2lz X3NhbWUgKGRlY2x0eXBlKG4pLCBpbnQpKTsKKyAgfTsKKyAgZjIoKTsKKyAgc3RhdGljX2Nhc3Q8 ZGVjbHR5cGUoZjIpIGNvbnN0Jj4oZjIpKCk7CisKKyAgYXV0byBmMyA9IFsmbl08dHlwZW5hbWUg U2VsZj4odGhpcyBTZWxmJil7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoZGVjbHR5cGUo KG4pKSwgaW50JikpOworICAgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lIChkZWNsdHlwZShuKSwg aW50KSk7CisgIH07CisgIGYzKCk7CisgIHN0YXRpY19jYXN0PGRlY2x0eXBlKGYzKSBjb25zdCY+ KGYzKSgpOworCisgIGF1dG8gZjQgPSBbXTx0eXBlbmFtZSBTZWxmPih0aGlzIFNlbGYmKXsKKyAg ICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUobiksIGludCkpOworICAgIGRlY2x0 eXBlKChuKSkgYTsgLy8geyBkZy1lcnJvciB7aXMgbm90IGNhcHR1cmVkfSB9CisgIH07CisKKyAg YXV0byBmMF9jb25zdCA9IFs9XTx0eXBlbmFtZSBTZWxmPih0aGlzIFNlbGYgY29uc3QmKXsKKyAg ICBzdGF0aWNfYXNzZXJ0KGlzX2x2YWx1ZV9yZWY8ZGVjbHR5cGUoKG4pKT4sCisJCSAgImRlY2x0 eXBlKChuKSkgaXMgbm90IGFuIGx2YWx1ZSByZWYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGlzX2Nv bnN0X3Y8X19yZW1vdmVfcmVmZXJlbmNlIChkZWNsdHlwZSgobikpKT4sIC8vIHsgZGctYm9ndXMg e3N0YXRpYyBhc3NlcnRpb24gZmFpbGVkOiBxdWFsaWZpY2F0aW9uIG9mIGRlY2x0eXBlXChcKG5c KVwpIGRvZXMgbm90IG1hdGNoIHF1YWxpZmljYXRpb24gb2YgU2VsZn0gfQorCQkgICJxdWFsaWZp Y2F0aW9uIG9mIGRlY2x0eXBlKChuKSkgZG9lcyBub3QgbWF0Y2ggcXVhbGlmaWNhdGlvbiBvZiBT ZWxmIik7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKF9fcmVtb3ZlX2N2cmVmIChkZWNs dHlwZSgobikpKSwgaW50KSwKKwkJICAiZGVjbHR5cGUoKG4pKSBpcyBub3QgYW4gaW50Iik7Cisg ICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKGRlY2x0eXBlKG4pLCBpbnQpKTsKKyAgfTsKKyAg ZjBfY29uc3QoKTsKKworICBhdXRvIGYxX2NvbnN0ID0gWyZdPHR5cGVuYW1lIFNlbGY+KHRoaXMg U2VsZiBjb25zdCYpeworICAgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lIChkZWNsdHlwZSgobikp LCBpbnQmKSk7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKGRlY2x0eXBlKG4pLCBpbnQp KTsKKyAgfTsKKyAgZjFfY29uc3QoKTsKKworICBhdXRvIGYyX2NvbnN0ID0gW25dPHR5cGVuYW1l IFNlbGY+KHRoaXMgU2VsZiBjb25zdCYpeworICAgIHN0YXRpY19hc3NlcnQoaXNfbHZhbHVlX3Jl ZjxkZWNsdHlwZSgobikpPiwKKwkJICAiZGVjbHR5cGUoKG4pKSBpcyBub3QgYW4gbHZhbHVlIHJl ZiIpOworICAgIHN0YXRpY19hc3NlcnQoaXNfY29uc3RfdjxfX3JlbW92ZV9yZWZlcmVuY2UgKGRl Y2x0eXBlKChuKSkpPiwgLy8geyBkZy1ib2d1cyB7c3RhdGljIGFzc2VydGlvbiBmYWlsZWQ6IHF1 YWxpZmljYXRpb24gb2YgZGVjbHR5cGVcKFwoblwpXCkgZG9lcyBub3QgbWF0Y2ggcXVhbGlmaWNh dGlvbiBvZiBTZWxmfSB9CisJCSAgInF1YWxpZmljYXRpb24gb2YgZGVjbHR5cGUoKG4pKSBkb2Vz IG5vdCBtYXRjaCBxdWFsaWZpY2F0aW9uIG9mIFNlbGYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KF9f aXNfc2FtZSAoX19yZW1vdmVfY3ZyZWYgKGRlY2x0eXBlKChuKSkpLCBpbnQpLAorCQkgICJkZWNs dHlwZSgobikpIGlzIG5vdCBhbiBpbnQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAo ZGVjbHR5cGUobiksIGludCkpOworICB9OworICBmMl9jb25zdCgpOworCisgIGF1dG8gZjNfY29u c3QgPSBbJm5dPHR5cGVuYW1lIFNlbGY+KHRoaXMgU2VsZiBjb25zdCYpeworICAgIHN0YXRpY19h c3NlcnQoX19pc19zYW1lKGRlY2x0eXBlKChuKSksIGludCYpKTsKKyAgICBzdGF0aWNfYXNzZXJ0 KF9faXNfc2FtZSAoZGVjbHR5cGUobiksIGludCkpOworICB9OworICBmM19jb25zdCgpOworCisg IGF1dG8gZjRfY29uc3QgPSBbXTx0eXBlbmFtZSBTZWxmPih0aGlzIFNlbGYgY29uc3QmKXsKKyAg ICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUobiksIGludCkpOworICAgIGRlY2x0 eXBlKChuKSkgYTsgLy8geyBkZy1lcnJvciB7aXMgbm90IGNhcHR1cmVkfSB9CisgIH07Cit9CisK K3RlbXBsYXRlPHR5cGVuYW1lID0gdm9pZD4KK3ZvaWQgZGVwMCgpCit7CisgIGludCBuID0gMDsK KyAgYXV0byBmMCA9IFs9XTx0eXBlbmFtZSBTZWxmPih0aGlzIFNlbGYmKXsKKyAgICBzdGF0aWNf YXNzZXJ0KGlzX2x2YWx1ZV9yZWY8ZGVjbHR5cGUoKG4pKT4sCisJCSAgImRlY2x0eXBlKChuKSkg aXMgbm90IGFuIGx2YWx1ZSByZWYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGlzX2NvbnN0X3Y8U2Vs Zj4gPT0gaXNfY29uc3RfdjxfX3JlbW92ZV9yZWZlcmVuY2UgKGRlY2x0eXBlKChuKSkpPiwgLy8g eyBkZy1ib2d1cyB7c3RhdGljIGFzc2VydGlvbiBmYWlsZWQ6IHF1YWxpZmljYXRpb24gb2YgZGVj bHR5cGVcKFwoblwpXCkgZG9lcyBub3QgbWF0Y2ggcXVhbGlmaWNhdGlvbiBvZiBTZWxmfSB9CisJ CSAgInF1YWxpZmljYXRpb24gb2YgZGVjbHR5cGUoKG4pKSBkb2VzIG5vdCBtYXRjaCBxdWFsaWZp Y2F0aW9uIG9mIFNlbGYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoX19yZW1vdmVf Y3ZyZWYgKGRlY2x0eXBlKChuKSkpLCBpbnQpLAorCQkgICJkZWNsdHlwZSgobikpIGlzIG5vdCBh biBpbnQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUobiksIGludCkp OworICB9OworICBmMCgpOworICBzdGF0aWNfY2FzdDxkZWNsdHlwZShmMCkgY29uc3QmPihmMCko KTsKKworICBhdXRvIGYxID0gWyZdPHR5cGVuYW1lIFNlbGY+KHRoaXMgU2VsZiYpeworICAgIHN0 YXRpY19hc3NlcnQoX19pc19zYW1lIChkZWNsdHlwZSgobikpLCBpbnQmKSk7CisgICAgc3RhdGlj X2Fzc2VydChfX2lzX3NhbWUgKGRlY2x0eXBlKG4pLCBpbnQpKTsKKyAgfTsKKyAgZjEoKTsKKyAg c3RhdGljX2Nhc3Q8ZGVjbHR5cGUoZjEpIGNvbnN0Jj4oZjEpKCk7CisKKyAgYXV0byBmMiA9IFtu XTx0eXBlbmFtZSBTZWxmPih0aGlzIFNlbGYmKXsKKyAgICBzdGF0aWNfYXNzZXJ0KGlzX2x2YWx1 ZV9yZWY8ZGVjbHR5cGUoKG4pKT4sCisJCSAgImRlY2x0eXBlKChuKSkgaXMgbm90IGFuIGx2YWx1 ZSByZWYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGlzX2NvbnN0X3Y8U2VsZj4gPT0gaXNfY29uc3Rf djxfX3JlbW92ZV9yZWZlcmVuY2UgKGRlY2x0eXBlKChuKSkpPiwgLy8geyBkZy1ib2d1cyB7c3Rh dGljIGFzc2VydGlvbiBmYWlsZWQ6IHF1YWxpZmljYXRpb24gb2YgZGVjbHR5cGVcKFwoblwpXCkg ZG9lcyBub3QgbWF0Y2ggcXVhbGlmaWNhdGlvbiBvZiBTZWxmfSB9CisJCSAgInF1YWxpZmljYXRp b24gb2YgZGVjbHR5cGUoKG4pKSBkb2VzIG5vdCBtYXRjaCBxdWFsaWZpY2F0aW9uIG9mIFNlbGYi KTsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoX19yZW1vdmVfY3ZyZWYgKGRlY2x0eXBl KChuKSkpLCBpbnQpLAorCQkgICJkZWNsdHlwZSgobikpIGlzIG5vdCBhbiBpbnQiKTsKKyAgICBz dGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUobiksIGludCkpOworICB9OworICBmMigp OworICBzdGF0aWNfY2FzdDxkZWNsdHlwZShmMikgY29uc3QmPihmMikoKTsKKworICBhdXRvIGYz ID0gWyZuXTx0eXBlbmFtZSBTZWxmPih0aGlzIFNlbGYmKXsKKyAgICBzdGF0aWNfYXNzZXJ0KF9f aXNfc2FtZShkZWNsdHlwZSgobikpLCBpbnQmKSk7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3Nh bWUgKGRlY2x0eXBlKG4pLCBpbnQpKTsKKyAgfTsKKyAgZjMoKTsKKyAgc3RhdGljX2Nhc3Q8ZGVj bHR5cGUoZjMpIGNvbnN0Jj4oZjMpKCk7CisKKyAgYXV0byBmNCA9IFtdPHR5cGVuYW1lIFNlbGY+ KHRoaXMgU2VsZiYpeworICAgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lIChkZWNsdHlwZShuKSwg aW50KSk7CisgICAgZGVjbHR5cGUoKG4pKSBhOyAvLyB7IGRnLWVycm9yIHtpcyBub3QgY2FwdHVy ZWR9IH0KKyAgfTsKKworICBhdXRvIGYwX2NvbnN0ID0gWz1dPHR5cGVuYW1lIFNlbGY+KHRoaXMg U2VsZiBjb25zdCYpeworICAgIHN0YXRpY19hc3NlcnQoaXNfbHZhbHVlX3JlZjxkZWNsdHlwZSgo bikpPiwKKwkJICAiZGVjbHR5cGUoKG4pKSBpcyBub3QgYW4gbHZhbHVlIHJlZiIpOworICAgIHN0 YXRpY19hc3NlcnQoaXNfY29uc3RfdjxfX3JlbW92ZV9yZWZlcmVuY2UgKGRlY2x0eXBlKChuKSkp PiwgLy8geyBkZy1ib2d1cyB7c3RhdGljIGFzc2VydGlvbiBmYWlsZWQ6IHF1YWxpZmljYXRpb24g b2YgZGVjbHR5cGVcKFwoblwpXCkgZG9lcyBub3QgbWF0Y2ggcXVhbGlmaWNhdGlvbiBvZiBTZWxm fSB9CisJCSAgInF1YWxpZmljYXRpb24gb2YgZGVjbHR5cGUoKG4pKSBkb2VzIG5vdCBtYXRjaCBx dWFsaWZpY2F0aW9uIG9mIFNlbGYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoX19y ZW1vdmVfY3ZyZWYgKGRlY2x0eXBlKChuKSkpLCBpbnQpLAorCQkgICJkZWNsdHlwZSgobikpIGlz IG5vdCBhbiBpbnQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUobiks IGludCkpOworICB9OworICBmMF9jb25zdCgpOworCisgIGF1dG8gZjFfY29uc3QgPSBbJl08dHlw ZW5hbWUgU2VsZj4odGhpcyBTZWxmIGNvbnN0Jil7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3Nh bWUgKGRlY2x0eXBlKChuKSksIGludCYpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAo ZGVjbHR5cGUobiksIGludCkpOworICB9OworICBmMV9jb25zdCgpOworCisgIGF1dG8gZjJfY29u c3QgPSBbbl08dHlwZW5hbWUgU2VsZj4odGhpcyBTZWxmIGNvbnN0Jil7CisgICAgc3RhdGljX2Fz c2VydChpc19sdmFsdWVfcmVmPGRlY2x0eXBlKChuKSk+LAorCQkgICJkZWNsdHlwZSgobikpIGlz IG5vdCBhbiBsdmFsdWUgcmVmIik7CisgICAgc3RhdGljX2Fzc2VydChpc19jb25zdF92PF9fcmVt b3ZlX3JlZmVyZW5jZSAoZGVjbHR5cGUoKG4pKSk+LCAvLyB7IGRnLWJvZ3VzIHtzdGF0aWMgYXNz ZXJ0aW9uIGZhaWxlZDogcXVhbGlmaWNhdGlvbiBvZiBkZWNsdHlwZVwoXChuXClcKSBkb2VzIG5v dCBtYXRjaCBxdWFsaWZpY2F0aW9uIG9mIFNlbGZ9IH0KKwkJICAicXVhbGlmaWNhdGlvbiBvZiBk ZWNsdHlwZSgobikpIGRvZXMgbm90IG1hdGNoIHF1YWxpZmljYXRpb24gb2YgU2VsZiIpOworICAg IHN0YXRpY19hc3NlcnQoX19pc19zYW1lIChfX3JlbW92ZV9jdnJlZiAoZGVjbHR5cGUoKG4pKSks IGludCksCisJCSAgImRlY2x0eXBlKChuKSkgaXMgbm90IGFuIGludCIpOworICAgIHN0YXRpY19h c3NlcnQoX19pc19zYW1lIChkZWNsdHlwZShuKSwgaW50KSk7CisgIH07CisgIGYyX2NvbnN0KCk7 CisKKyAgYXV0byBmM19jb25zdCA9IFsmbl08dHlwZW5hbWUgU2VsZj4odGhpcyBTZWxmIGNvbnN0 Jil7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoZGVjbHR5cGUoKG4pKSwgaW50JikpOwor ICAgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lIChkZWNsdHlwZShuKSwgaW50KSk7CisgIH07Cisg IGYzX2NvbnN0KCk7CisKKyAgYXV0byBmNF9jb25zdCA9IFtdPHR5cGVuYW1lIFNlbGY+KHRoaXMg U2VsZiBjb25zdCYpeworICAgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lIChkZWNsdHlwZShuKSwg aW50KSk7CisgICAgZGVjbHR5cGUoKG4pKSBhOyAvLyB7IGRnLWVycm9yIHtpcyBub3QgY2FwdHVy ZWR9IH0KKyAgfTsKK30KKworLy8gZGVwMSB1c2VzIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIKKwor dGVtcGxhdGU8dHlwZW5hbWUgVCA9IGludD4KK3ZvaWQgZGVwMSgpCit7CisgIFQgbiA9IDA7Cisg IGF1dG8gZjAgPSBbPV08dHlwZW5hbWUgU2VsZj4odGhpcyBTZWxmJil7CisgICAgc3RhdGljX2Fz c2VydChpc19sdmFsdWVfcmVmPGRlY2x0eXBlKChuKSk+LAorCQkgICJkZWNsdHlwZSgobikpIGlz IG5vdCBhbiBsdmFsdWUgcmVmIik7CisgICAgc3RhdGljX2Fzc2VydChpc19jb25zdF92PFNlbGY+ ID09IGlzX2NvbnN0X3Y8X19yZW1vdmVfcmVmZXJlbmNlIChkZWNsdHlwZSgobikpKT4sIC8vIHsg ZGctYm9ndXMge3N0YXRpYyBhc3NlcnRpb24gZmFpbGVkOiBxdWFsaWZpY2F0aW9uIG9mIGRlY2x0 eXBlXChcKG5cKVwpIGRvZXMgbm90IG1hdGNoIHF1YWxpZmljYXRpb24gb2YgU2VsZn0gfQorCQkg ICJxdWFsaWZpY2F0aW9uIG9mIGRlY2x0eXBlKChuKSkgZG9lcyBub3QgbWF0Y2ggcXVhbGlmaWNh dGlvbiBvZiBTZWxmIik7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKF9fcmVtb3ZlX2N2 cmVmIChkZWNsdHlwZSgobikpKSwgaW50KSwKKwkJICAiZGVjbHR5cGUoKG4pKSBpcyBub3QgYW4g aW50Iik7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKGRlY2x0eXBlKG4pLCBpbnQpKTsK KyAgfTsKKyAgZjAoKTsKKyAgc3RhdGljX2Nhc3Q8ZGVjbHR5cGUoZjApIGNvbnN0Jj4oZjApKCk7 CisKKyAgYXV0byBmMSA9IFsmXTx0eXBlbmFtZSBTZWxmPih0aGlzIFNlbGYmKXsKKyAgICBzdGF0 aWNfYXNzZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUoKG4pKSwgaW50JikpOworICAgIHN0YXRpY19h c3NlcnQoX19pc19zYW1lIChkZWNsdHlwZShuKSwgaW50KSk7CisgIH07CisgIGYxKCk7CisgIHN0 YXRpY19jYXN0PGRlY2x0eXBlKGYxKSBjb25zdCY+KGYxKSgpOworCisgIGF1dG8gZjIgPSBbbl08 dHlwZW5hbWUgU2VsZj4odGhpcyBTZWxmJil7CisgICAgc3RhdGljX2Fzc2VydChpc19sdmFsdWVf cmVmPGRlY2x0eXBlKChuKSk+LAorCQkgICJkZWNsdHlwZSgobikpIGlzIG5vdCBhbiBsdmFsdWUg cmVmIik7CisgICAgc3RhdGljX2Fzc2VydChpc19jb25zdF92PFNlbGY+ID09IGlzX2NvbnN0X3Y8 X19yZW1vdmVfcmVmZXJlbmNlIChkZWNsdHlwZSgobikpKT4sIC8vIHsgZGctYm9ndXMge3N0YXRp YyBhc3NlcnRpb24gZmFpbGVkOiBxdWFsaWZpY2F0aW9uIG9mIGRlY2x0eXBlXChcKG5cKVwpIGRv ZXMgbm90IG1hdGNoIHF1YWxpZmljYXRpb24gb2YgU2VsZn0gfQorCQkgICJxdWFsaWZpY2F0aW9u IG9mIGRlY2x0eXBlKChuKSkgZG9lcyBub3QgbWF0Y2ggcXVhbGlmaWNhdGlvbiBvZiBTZWxmIik7 CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKF9fcmVtb3ZlX2N2cmVmIChkZWNsdHlwZSgo bikpKSwgaW50KSwKKwkJICAiZGVjbHR5cGUoKG4pKSBpcyBub3QgYW4gaW50Iik7CisgICAgc3Rh dGljX2Fzc2VydChfX2lzX3NhbWUgKGRlY2x0eXBlKG4pLCBpbnQpKTsKKyAgfTsKKyAgZjIoKTsK KyAgc3RhdGljX2Nhc3Q8ZGVjbHR5cGUoZjIpIGNvbnN0Jj4oZjIpKCk7CisKKyAgYXV0byBmMyA9 IFsmbl08dHlwZW5hbWUgU2VsZj4odGhpcyBTZWxmJil7CisgICAgc3RhdGljX2Fzc2VydChfX2lz X3NhbWUoZGVjbHR5cGUoKG4pKSwgaW50JikpOworICAgIHN0YXRpY19hc3NlcnQoX19pc19zYW1l IChkZWNsdHlwZShuKSwgaW50KSk7CisgIH07CisgIGYzKCk7CisgIHN0YXRpY19jYXN0PGRlY2x0 eXBlKGYzKSBjb25zdCY+KGYzKSgpOworCisgIGF1dG8gZjQgPSBbXTx0eXBlbmFtZSBTZWxmPih0 aGlzIFNlbGYmKXsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUobiksIGlu dCkpOworICAgIGRlY2x0eXBlKChuKSkgYTsgLy8geyBkZy1lcnJvciB7aXMgbm90IGNhcHR1cmVk fSB9CisgIH07CisKKyAgYXV0byBmMF9jb25zdCA9IFs9XTx0eXBlbmFtZSBTZWxmPih0aGlzIFNl bGYgY29uc3QmKXsKKyAgICBzdGF0aWNfYXNzZXJ0KGlzX2x2YWx1ZV9yZWY8ZGVjbHR5cGUoKG4p KT4sCisJCSAgImRlY2x0eXBlKChuKSkgaXMgbm90IGFuIGx2YWx1ZSByZWYiKTsKKyAgICBzdGF0 aWNfYXNzZXJ0KGlzX2NvbnN0X3Y8X19yZW1vdmVfcmVmZXJlbmNlIChkZWNsdHlwZSgobikpKT4s IC8vIHsgZGctYm9ndXMge3N0YXRpYyBhc3NlcnRpb24gZmFpbGVkOiBxdWFsaWZpY2F0aW9uIG9m IGRlY2x0eXBlXChcKG5cKVwpIGRvZXMgbm90IG1hdGNoIHF1YWxpZmljYXRpb24gb2YgU2VsZn0g fQorCQkgICJxdWFsaWZpY2F0aW9uIG9mIGRlY2x0eXBlKChuKSkgZG9lcyBub3QgbWF0Y2ggcXVh bGlmaWNhdGlvbiBvZiBTZWxmIik7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKF9fcmVt b3ZlX2N2cmVmIChkZWNsdHlwZSgobikpKSwgaW50KSwKKwkJICAiZGVjbHR5cGUoKG4pKSBpcyBu b3QgYW4gaW50Iik7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKGRlY2x0eXBlKG4pLCBp bnQpKTsKKyAgfTsKKyAgZjBfY29uc3QoKTsKKworICBhdXRvIGYxX2NvbnN0ID0gWyZdPHR5cGVu YW1lIFNlbGY+KHRoaXMgU2VsZiBjb25zdCYpeworICAgIHN0YXRpY19hc3NlcnQoX19pc19zYW1l IChkZWNsdHlwZSgobikpLCBpbnQmKSk7CisgICAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUgKGRl Y2x0eXBlKG4pLCBpbnQpKTsKKyAgfTsKKyAgZjFfY29uc3QoKTsKKworICBhdXRvIGYyX2NvbnN0 ID0gW25dPHR5cGVuYW1lIFNlbGY+KHRoaXMgU2VsZiBjb25zdCYpeworICAgIHN0YXRpY19hc3Nl cnQoaXNfbHZhbHVlX3JlZjxkZWNsdHlwZSgobikpPiwKKwkJICAiZGVjbHR5cGUoKG4pKSBpcyBu b3QgYW4gbHZhbHVlIHJlZiIpOworICAgIHN0YXRpY19hc3NlcnQoaXNfY29uc3RfdjxfX3JlbW92 ZV9yZWZlcmVuY2UgKGRlY2x0eXBlKChuKSkpPiwgLy8geyBkZy1ib2d1cyB7c3RhdGljIGFzc2Vy dGlvbiBmYWlsZWQ6IHF1YWxpZmljYXRpb24gb2YgZGVjbHR5cGVcKFwoblwpXCkgZG9lcyBub3Qg bWF0Y2ggcXVhbGlmaWNhdGlvbiBvZiBTZWxmfSB9CisJCSAgInF1YWxpZmljYXRpb24gb2YgZGVj bHR5cGUoKG4pKSBkb2VzIG5vdCBtYXRjaCBxdWFsaWZpY2F0aW9uIG9mIFNlbGYiKTsKKyAgICBz dGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoX19yZW1vdmVfY3ZyZWYgKGRlY2x0eXBlKChuKSkpLCBp bnQpLAorCQkgICJkZWNsdHlwZSgobikpIGlzIG5vdCBhbiBpbnQiKTsKKyAgICBzdGF0aWNfYXNz ZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUobiksIGludCkpOworICB9OworICBmMl9jb25zdCgpOwor CisgIGF1dG8gZjNfY29uc3QgPSBbJm5dPHR5cGVuYW1lIFNlbGY+KHRoaXMgU2VsZiBjb25zdCYp eworICAgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKGRlY2x0eXBlKChuKSksIGludCYpKTsKKyAg ICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUobiksIGludCkpOworICB9OworICBm M19jb25zdCgpOworCisgIGF1dG8gZjRfY29uc3QgPSBbXTx0eXBlbmFtZSBTZWxmPih0aGlzIFNl bGYgY29uc3QmKXsKKyAgICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZSAoZGVjbHR5cGUobiksIGlu dCkpOworICAgIGRlY2x0eXBlKChuKSkgYTsgLy8geyBkZy1lcnJvciB7aXMgbm90IGNhcHR1cmVk fSB9CisgIH07Cit9CisKK3ZvaWQgaW5zdGFudGlhdGVfZGVwKCkKK3sKKyAgZGVwMCgpOworICBk ZXAxKCk7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1sYW1iZGFYNy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWxhbWJkYVg3LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEw Njg5NDE0MTNhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWxhbWJkYVg3LkMKQEAgLTAsMCArMSw4NyBAQAorLy8gUDA4NDdSNworLy8g eyBkZy1kbyBydW4geyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIGxhbWJkYSBjYXB0dXJlIG11dGFi aWxpdHkgd2l0aCBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyCisKK3ZvaWQgY2FwdHVyZV9ieV92 YWx1ZSgpCit7CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1hZ2ljID0gNDI7CisgIGF1dG8gZjAg PSBbbiA9IDBdKHRoaXMgYXV0byBzZWxmKXsKKyAgICBuICs9IG1hZ2ljOworICAgIHJldHVybiBu OworICB9OworICBhdXRvIGYxID0gW24gPSAwXSh0aGlzIGF1dG8mIHNlbGYpeworICAgIG4gKz0g bWFnaWM7CisgICAgcmV0dXJuIG47CisgIH07CisgIGF1dG8gZjIgPSBbbiA9IDBdKHRoaXMgYXV0 byYmIHNlbGYpeworICAgIG4gKz0gbWFnaWM7CisgICAgcmV0dXJuIG47CisgIH07CisKKyAgLy8g cGFzc2VkIGJ5IHZhbHVlLCBzaG91bGQgc3RpbGwgcmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gbWFn aWMgcmVnYXJkbGVzcworICAvLyBvZiBob3cgbWFueSB0aW1lcyBpdCBpcyBjYWxsZWQKKyAgaWYg KGYwICgpICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKGYwICgpICE9 IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8gcGFzc2VkIGJ5IHJlZmVyZW5j ZSwgdGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBpbmNyZWFzZSBieSBtYWdpYworICAvLyBlYWNo IHRpbWUgaXQgaXMgY2FsbGVkCisgIGlmIChmMSAoKSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5f YWJvcnQgKCk7CisgIGlmIChmMSAoKSAhPSBtYWdpYyArIG1hZ2ljKQorICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsKKyAgaWYgKGYyICgpICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsK KyAgaWYgKGYyICgpICE9IG1hZ2ljICsgbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOwor fQorCit2b2lkIGNhcHR1cmVfYnlfcmVmKCkKK3sKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWFn aWMgPSA0MjsKKyAgaW50IG4wID0gMDsKKyAgYXV0byBmMCA9IFsmbjBdKHRoaXMgYXV0byBzZWxm KXsKKyAgICBuMCArPSBtYWdpYzsKKyAgfTsKKyAgaW50IG4xID0gMDsKKyAgYXV0byBmMSA9IFsm bjFdKHRoaXMgYXV0byYgc2VsZil7CisgICAgbjEgKz0gbWFnaWM7CisgIH07CisgIGludCBuMiA9 IDA7CisgIGF1dG8gZjIgPSBbJm4yXSh0aGlzIGF1dG8mJiBzZWxmKXsKKyAgICBuMiArPSBtYWdp YzsKKyAgfTsKKyAgaW50IG4zID0gMDsKKyAgYXV0byBmMyA9IFsmbjNdKHRoaXMgYXV0byBjb25z dCYgc2VsZil7CisgICAgbjMgKz0gbWFnaWM7CisgIH07CisKKyAgLy8gYWxsIGNhbGxzIHNob3Vs ZCBtdXRhdGUgdGhlaXIgY2FwdHVyZSwgdGhlIGNhcHR1cmUgaXMgYnkgcmVmZXJlbmNlCisgIGlm IChmMCAoKTsgbjAgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoZjAg KCk7IG4wICE9IG1hZ2ljICsgbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworCisgIGlm IChmMSAoKTsgbjEgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoZjEg KCk7IG4xICE9IG1hZ2ljICsgbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworCisgIGlm IChmMiAoKTsgbjIgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoZjIg KCk7IG4yICE9IG1hZ2ljICsgbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworCisgIGlm IChmMyAoKTsgbjMgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoZjMg KCk7IG4zICE9IG1hZ2ljICsgbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworfQorCitp bnQgbWFpbigpCit7CisgIGNhcHR1cmVfYnlfdmFsdWUgKCk7CisgIGNhcHR1cmVfYnlfcmVmICgp OworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v Ymotb3BzLW1lbS1hcnJvdy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLW9wcy1tZW0tYXJyb3cuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZWI4NjA3NzgxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1hcnJvdy5DCkBAIC0wLDAgKzEsMjggQEAKKy8vIFAw ODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gdXNlcyBv ZiBtZW1iZXIgb25seSBvcGVyYXRvcnMgKGFycm93KQorCitzdHJ1Y3QgUyB7CisgIGludCBfdjsK KyAgUyogb3BlcmF0b3ItPih0aGlzIFMmIHNlbGYpIHsgcmV0dXJuICZzZWxmOyB9Cit9OworCit2 b2lkIG5vbl9kZXAoKQoreworICBTIHN7fTsKKyAgKHZvaWQpcy0+X3Y7Cit9CisKK3RlbXBsYXRl PHR5cGVuYW1lID0gdm9pZD4KK3ZvaWQgZGVwZW5kZW50KCkKK3sKKyAgUyBze307CisgICh2b2lk KXMtPl92OworfQorCit2b2lkIGNhbGwoKQoreworICBkZXBlbmRlbnQoKTsKK30KKwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tYXNz aWdubWVudC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1t ZW0tYXNzaWdubWVudC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5i YjQzYTBhZjkxMwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1vcHMtbWVtLWFzc2lnbm1lbnQuQwpAQCAtMCwwICsxLDI3IEBACisvLyBQ MDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIHVzZXMg b2YgbWVtYmVyIG9ubHkgb3BlcmF0b3JzIChhc3NpZ25tZW50KQorCitzdHJ1Y3QgUyB7CisgIHZv aWQgb3BlcmF0b3I9KHRoaXMgUyYsIGludCkge30KK307CisKK3ZvaWQgbm9uX2RlcCgpCit7Cisg IFMgc3t9OworICBzID0gMDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgPSB2b2lkPgordm9pZCBk ZXBlbmRlbnQoKQoreworICBTIHN7fTsKKyAgcyA9IDA7Cit9CisKK3ZvaWQgY2FsbCgpCit7Cisg IGRlcGVuZGVudCgpOworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotb3BzLW1lbS1jYWxsLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotb3BzLW1lbS1jYWxsLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmVjZDZiZGZkNDRjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tY2FsbC5DCkBAIC0wLDAgKzEsNDAg QEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKwor Ly8gdXNlcyBvZiBtZW1iZXIgb25seSBvcGVyYXRvcnMgKGNhbGwgb3ApCisKKy8vIGV4ZWN1dGlv biBwYXRocyBmb3Igc3Vic2NyaXB0IHdpdGggMSBhcmd1bWVudCBhbmQgMCBhbmQgMisgYXJndW1l bnRzIGFyZSBkaWZmZXJlbnQKKy8vIGp1c3QgdG8gYmUgc2FmZSwgYWxzbyB0ZXN0IDAgYW5kIDIg YXJndW1lbnQgY2FzZXMgaGVyZSB0b28KKworc3RydWN0IFMgeworICB2b2lkIG9wZXJhdG9yKCko dGhpcyBTJikge30KKyAgdm9pZCBvcGVyYXRvcigpKHRoaXMgUyYsIGludCkge30KKyAgdm9pZCBv cGVyYXRvcigpKHRoaXMgUyYsIGludCwgaW50KSB7fQorICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB cmdzPgorICB2b2lkIG9wZXJhdG9yKCkodGhpcyBTJiwgQXJncy4uLiBhcmdzKSB7fQorfTsKKwor dm9pZCBub25fZGVwKCkKK3sKKyAgUyBze307CisgIHMoKTsKKyAgcygwKTsKKyAgcygwLCAwKTsK KyAgcygwLCAwLCAwKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgPSB2b2lkPgordm9pZCBkZXBl bmRlbnQoKQoreworICBTIHN7fTsKKyAgcygpOworICBzKDApOworICBzKDAsIDApOworICBzKDAs IDAsIDApOworfQorCit2b2lkIGNhbGwoKQoreworICBkZXBlbmRlbnQoKTsKK30KKwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tc3Vi c2NyaXB0LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1l bS1zdWJzY3JpcHQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2Vi MDAzMDYyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotb3BzLW1lbS1zdWJzY3JpcHQuQwpAQCAtMCwwICsxLDQwIEBACisvLyBQMDg0 N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIHVzZXMgb2Yg bWVtYmVyIG9ubHkgb3BlcmF0b3JzIChzdWJzY3JpcHQpCisKKy8vIGV4ZWN1dGlvbiBwYXRocyBm b3Igc3Vic2NyaXB0IHdpdGggMSBhcmd1bWVudCBhbmQgMCBhbmQgMisgYXJndW1lbnRzIGFyZSBk aWZmZXJlbnQKKy8vIHRoZXJlZm9yZSB3ZSBzaG91bGQgYWRkaXRpb25hbGx5IHRlc3QgdGhlIDAg YW5kIDIgYXJndW1lbnQgY2FzZXMgYXMgd2VsbAorCitzdHJ1Y3QgUyB7CisgIHZvaWQgb3BlcmF0 b3JbXSh0aGlzIFMmKSB7fQorICB2b2lkIG9wZXJhdG9yW10odGhpcyBTJiwgaW50KSB7fQorICB2 b2lkIG9wZXJhdG9yW10odGhpcyBTJiwgaW50LCBpbnQpIHt9CisgIHRlbXBsYXRlPHR5cGVuYW1l Li4uIEFyZ3M+CisgIHZvaWQgb3BlcmF0b3JbXSh0aGlzIFMmLCBBcmdzLi4uIGFyZ3MpIHt9Cit9 OworCit2b2lkIG5vbl9kZXAoKQoreworICBTIHN7fTsKKyAgc1tdOworICBzWzBdOworICBzWzAs IDBdOworICBzWzAsIDAsIDBdOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSA9IHZvaWQ+Cit2b2lk IGRlcGVuZGVudCgpCit7CisgIFMgc3t9OworICBzW107CisgIHNbMF07CisgIHNbMCwgMF07Cisg IHNbMCwgMCwgMF07Cit9CisKK3ZvaWQgY2FsbCgpCit7CisgIGRlcGVuZGVudCgpOworfQorCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5v bi1tZW0tZGVwLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3Bz LW5vbi1tZW0tZGVwLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYz ODYxNWUyYjk4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLW9wcy1ub24tbWVtLWRlcC5DCkBAIC0wLDAgKzEsNTggQEAKKy8vIFAwODQ3 UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gb3BlcmF0b3Jz IHRoYXQgYXJlIG5vdCByZXF1aXJlZCB0byBiZSBtZW1iZXJzCisvLyBjYWxsZWQgaW4gYSBkZXBl bmRlbnQgY29udGV4dCAoYXMgbm9uIGRlcGVuZGVudCBleHBycykKKy8vIHNlZSBoZWFkZXIKKyNp bmNsdWRlICJleHBsaWNpdC1vYmotb3BzLW5vbi1tZW0uaCIKKworLy8gbm9vcCwgaW5kaWNhdGVz IHdoaWNoIHZlcnNpb25zIGFyZSBpbGwtZm9ybWVkCisvLyBJIGNvdWxkIG5vdCBmaW5kIGEgd2F5 IHRvIHRlc3QgdGhlIGludmFsaWQgY2FzZXMKKy8vIHdpdGhvdXQgcmVxdWlyZXMgZXhwcmVzc2lv bnMKKyNkZWZpbmUgVEVTVF9JTlZBTElEKFgpCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lk Pgordm9pZCBkb19jYWxscygpCit7CisgIFZhbHVlIHZhbHVle307CisgIFRFU1RfT1BTKHZhbHVl KQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxWYWx1ZSYmPih2YWx1ZSkpCisgIFRFU1RfT1BTKHN0 YXRpY19jYXN0PFZhbHVlIGNvbnN0Jj4odmFsdWUpKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxW YWx1ZSBjb25zdCYmPih2YWx1ZSkpCisgIAorICBMUmVmIGxfcmVme307CisgIFRFU1RfT1BTKGxf cmVmKQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8TFJlZiYmPihsX3JlZikpCisgIFRFU1Rf SU5WQUxJRChzdGF0aWNfY2FzdDxMUmVmIGNvbnN0Jj4obF9yZWYpKQorICBURVNUX0lOVkFMSUQo c3RhdGljX2Nhc3Q8TFJlZiBjb25zdCYmPihsX3JlZikpCisKKyAgUlJlZiByX3JlZnt9OworICBU RVNUX0lOVkFMSUQocl9yZWYpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PFJSZWYmJj4ocl9yZWYp KQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8UlJlZiBjb25zdCY+KHJfcmVmKSkKKyAgVEVT VF9JTlZBTElEKHN0YXRpY19jYXN0PFJSZWYgY29uc3QmJj4ocl9yZWYpKQorCisgIENvbnN0TFJl ZiBjb25zdF9sX3JlZnt9OworICBURVNUX09QUyhjb25zdF9sX3JlZikKKyAgVEVTVF9PUFMoc3Rh dGljX2Nhc3Q8Q29uc3RMUmVmJiY+KGNvbnN0X2xfcmVmKSkKKyAgVEVTVF9PUFMoc3RhdGljX2Nh c3Q8Q29uc3RMUmVmIGNvbnN0Jj4oY29uc3RfbF9yZWYpKQorICBURVNUX09QUyhzdGF0aWNfY2Fz dDxDb25zdExSZWYgY29uc3QmJj4oY29uc3RfbF9yZWYpKQorCisgIENvbnN0UlJlZiBjb25zdF9y X3JlZnt9OworICBURVNUX0lOVkFMSUQoY29uc3Rfcl9yZWYpCisgIFRFU1RfT1BTKHN0YXRpY19j YXN0PENvbnN0UlJlZiYmPihjb25zdF9yX3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2Fz dDxDb25zdFJSZWYgY29uc3QmPihjb25zdF9yX3JlZikpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0 PENvbnN0UlJlZiBjb25zdCYmPihjb25zdF9yX3JlZikpCisKKyAgRGVkdWNlZCBkZWR1Y2Vke307 CisgIFRFU1RfT1BTKGRlZHVjZWQpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PERlZHVjZWQmJj4o ZGVkdWNlZCkpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PERlZHVjZWQgY29uc3QmPihkZWR1Y2Vk KSkKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8RGVkdWNlZCBjb25zdCYmPihkZWR1Y2VkKSkKKwor ICBWQUxJREFURV9SRVRVUk5fVFlQRVMoZGVkdWNlZCwgRGVkdWNlZCYpCisgIFZBTElEQVRFX1JF VFVSTl9UWVBFUyhzdGF0aWNfY2FzdDxEZWR1Y2VkJiY+KGRlZHVjZWQpLCBEZWR1Y2VkJiYpCisg IFZBTElEQVRFX1JFVFVSTl9UWVBFUyhzdGF0aWNfY2FzdDxEZWR1Y2VkIGNvbnN0Jj4oZGVkdWNl ZCksIERlZHVjZWQgY29uc3QmKQorICBWQUxJREFURV9SRVRVUk5fVFlQRVMoc3RhdGljX2Nhc3Q8 RGVkdWNlZCBjb25zdCYmPihkZWR1Y2VkKSwgRGVkdWNlZCBjb25zdCYmKQorfQorCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0t bm9uLWRlcC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1u b24tbWVtLW5vbi1kZXAuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NjM0ZTg3OGM5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0tbm9uLWRlcC5DCkBAIC0wLDAgKzEsNTcgQEAKKy8v IFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gb3Bl cmF0b3JzIHRoYXQgYXJlIG5vdCByZXF1aXJlZCB0byBiZSBtZW1iZXJzCisvLyBjYWxsZWQgaW4g YSBub24tZGVwZW5kZW50IGNvbnRleHQKKy8vIHNlZSBoZWFkZXIKKyNpbmNsdWRlICJleHBsaWNp dC1vYmotb3BzLW5vbi1tZW0uaCIKKworLy8gbm9vcCwgaW5kaWNhdGVzIHdoaWNoIHZlcnNpb25z IGFyZSBpbGwtZm9ybWVkCisvLyBJIGNvdWxkIG5vdCBmaW5kIGEgd2F5IHRvIHRlc3QgdGhlIGlu dmFsaWQgY2FzZXMKKy8vIHdpdGhvdXQgcmVxdWlyZXMgZXhwcmVzc2lvbnMKKyNkZWZpbmUgVEVT VF9JTlZBTElEKFgpCisKK3ZvaWQgZG9fY2FsbHMoKQoreworICBWYWx1ZSB2YWx1ZXt9OworICBU RVNUX09QUyh2YWx1ZSkKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8VmFsdWUmJj4odmFsdWUpKQor ICBURVNUX09QUyhzdGF0aWNfY2FzdDxWYWx1ZSBjb25zdCY+KHZhbHVlKSkKKyAgVEVTVF9PUFMo c3RhdGljX2Nhc3Q8VmFsdWUgY29uc3QmJj4odmFsdWUpKQorICAKKyAgTFJlZiBsX3JlZnt9Owor ICBURVNUX09QUyhsX3JlZikKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PExSZWYmJj4obF9y ZWYpKQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8TFJlZiBjb25zdCY+KGxfcmVmKSkKKyAg VEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PExSZWYgY29uc3QmJj4obF9yZWYpKQorCisgIFJSZWYg cl9yZWZ7fTsKKyAgVEVTVF9JTlZBTElEKHJfcmVmKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxS UmVmJiY+KHJfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PFJSZWYgY29uc3QmPihy X3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxSUmVmIGNvbnN0JiY+KHJfcmVmKSkK KworICBDb25zdExSZWYgY29uc3RfbF9yZWZ7fTsKKyAgVEVTVF9PUFMoY29uc3RfbF9yZWYpCisg IFRFU1RfT1BTKHN0YXRpY19jYXN0PENvbnN0TFJlZiYmPihjb25zdF9sX3JlZikpCisgIFRFU1Rf T1BTKHN0YXRpY19jYXN0PENvbnN0TFJlZiBjb25zdCY+KGNvbnN0X2xfcmVmKSkKKyAgVEVTVF9P UFMoc3RhdGljX2Nhc3Q8Q29uc3RMUmVmIGNvbnN0JiY+KGNvbnN0X2xfcmVmKSkKKworICBDb25z dFJSZWYgY29uc3Rfcl9yZWZ7fTsKKyAgVEVTVF9JTlZBTElEKGNvbnN0X3JfcmVmKQorICBURVNU X09QUyhzdGF0aWNfY2FzdDxDb25zdFJSZWYmJj4oY29uc3Rfcl9yZWYpKQorICBURVNUX0lOVkFM SUQoc3RhdGljX2Nhc3Q8Q29uc3RSUmVmIGNvbnN0Jj4oY29uc3Rfcl9yZWYpKQorICBURVNUX09Q UyhzdGF0aWNfY2FzdDxDb25zdFJSZWYgY29uc3QmJj4oY29uc3Rfcl9yZWYpKQorCisgIERlZHVj ZWQgZGVkdWNlZHt9OworICBURVNUX09QUyhkZWR1Y2VkKQorICBURVNUX09QUyhzdGF0aWNfY2Fz dDxEZWR1Y2VkJiY+KGRlZHVjZWQpKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxEZWR1Y2VkIGNv bnN0Jj4oZGVkdWNlZCkpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PERlZHVjZWQgY29uc3QmJj4o ZGVkdWNlZCkpCisKKyAgVkFMSURBVEVfUkVUVVJOX1RZUEVTKGRlZHVjZWQsIERlZHVjZWQmKQor ICBWQUxJREFURV9SRVRVUk5fVFlQRVMoc3RhdGljX2Nhc3Q8RGVkdWNlZCYmPihkZWR1Y2VkKSwg RGVkdWNlZCYmKQorICBWQUxJREFURV9SRVRVUk5fVFlQRVMoc3RhdGljX2Nhc3Q8RGVkdWNlZCBj b25zdCY+KGRlZHVjZWQpLCBEZWR1Y2VkIGNvbnN0JikKKyAgVkFMSURBVEVfUkVUVVJOX1RZUEVT KHN0YXRpY19jYXN0PERlZHVjZWQgY29uc3QmJj4oZGVkdWNlZCksIERlZHVjZWQgY29uc3QmJikK K30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LW9wcy1ub24tbWVtLmggYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot b3BzLW5vbi1tZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjg5 N2E0YmFjNzEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotb3BzLW5vbi1tZW0uaApAQCAtMCwwICsxLDIxMCBAQAorLy8gdGVzdHMgZm9y IG9wcyB0aGF0IG11c3QgYmUgbWVtYmVyIGZ1bmN0aW9ucyBhcmUgc2VwZXJhdGUKKworLy8gdGhl IG5hbWUgb2YgdGhlIGNsYXNzIHJlZmVycyB0byB0aGUgdHlwZSBvZiBpdCdzIG1lbWJlciBmdW5j dGlvbnMgeG9iaiBwYXJhbWV0ZXIKKworI2RlZmluZSBNQUtFX1NUUlVDVF9PUFMoVFlQRSkJCQkJ CVwKKyAgVFlQRSBvcGVyYXRvcis9KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7 IH0JCVwKKyAgVFlQRSBvcGVyYXRvci09KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNl bGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvcio9KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJu IHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvci89KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0 dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvciU9KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsg cmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvciY9KHRoaXMgVFlQRSBzZWxmLCBpbnQp IHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvcnw9KHRoaXMgVFlQRSBzZWxmLCBp bnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvcl49KHRoaXMgVFlQRSBzZWxm LCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvcjw8PSh0aGlzIFRZUEUg c2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CVwKKyAgVFlQRSBvcGVyYXRvcj4+PSh0aGlzIFRZ UEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CVwKKyAgVFlQRSBvcGVyYXRvcisrKHRoaXMg VFlQRSBzZWxmKSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3ItLSh0aGlzIFRZ UEUgc2VsZikgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yKysodGhpcyBUWVBF IHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yLS0odGhpcyBU WVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yKyh0aGlz IFRZUEUgc2VsZikgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yLSh0aGlzIFRZ UEUgc2VsZikgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yKyh0aGlzIFRZUEUg c2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3ItKHRoaXMgVFlQ RSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvcioodGhpcyBU WVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yLyh0aGlz IFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3IlKHRo aXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvciYo dGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9y fCh0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0 b3JeKHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVy YXRvcjw8KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBv cGVyYXRvcj4+KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQ RSBvcGVyYXRvciEodGhpcyBUWVBFIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBv cGVyYXRvciYmKHRoaXMgVFlQRSBzZWxmLCBpbnQgY29uc3QmKSB7IHJldHVybiBzZWxmOyB9CVwK KyAgVFlQRSBvcGVyYXRvcnx8KHRoaXMgVFlQRSBzZWxmLCBpbnQgY29uc3QmKSB7IHJldHVybiBz ZWxmOyB9CVwKKyAgVFlQRSBvcGVyYXRvcj09KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJu IHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvciE9KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0 dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvcjwodGhpcyBUWVBFIHNlbGYsIGludCkgeyBy ZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yPih0aGlzIFRZUEUgc2VsZiwgaW50KSB7 IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3I8PSh0aGlzIFRZUEUgc2VsZiwgaW50 KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3I+PSh0aGlzIFRZUEUgc2VsZiwg aW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3I8PT4odGhpcyBUWVBFIHNl bGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQlcCisgIFRZUEUgb3BlcmF0b3IqKHRoaXMgVFlQRSBz ZWxmKSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3ItPioodGhpcyBUWVBFIHNl bGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQlcCisgIFRZUEUgb3BlcmF0b3ImKHRoaXMgVFlQRSBz ZWxmKSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3IsKHRoaXMgVFlQRSBzZWxm LCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0KKworc3RydWN0IFZhbHVlIHsKKyAgTUFLRV9TVFJVQ1Rf T1BTIChWYWx1ZSkKK307CisKK3N0cnVjdCBMUmVmIHsKKyAgTUFLRV9TVFJVQ1RfT1BTIChMUmVm JikKK307CisKK3N0cnVjdCBSUmVmIHsKKyAgTUFLRV9TVFJVQ1RfT1BTIChSUmVmJiYpCit9Owor CitzdHJ1Y3QgQ29uc3RMUmVmIHsKKyAgTUFLRV9TVFJVQ1RfT1BTIChDb25zdExSZWYgY29uc3Qm KQorfTsKKworc3RydWN0IENvbnN0UlJlZiB7CisgIE1BS0VfU1RSVUNUX09QUyAoQ29uc3RSUmVm IGNvbnN0JiYpCit9OworCisjdW5kZWYgTUFLRV9TVFJVQ1RfT1BTCisKK3N0cnVjdCBEZWR1Y2Vk IHsKKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yKz0odGhpcyBTZWxm JiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRl bXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvci09KHRoaXMgU2VsZiYmIHNlbGYs IGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0 eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IqPSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsg cmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUg U2VsZj4gU2VsZiYmIG9wZXJhdG9yLz0odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBz dGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNl bGYmJiBvcGVyYXRvciU9KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nh c3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3Bl cmF0b3ImPSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYm Jj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yfD0o dGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYp OyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcl49KHRoaXMgU2Vs ZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0 ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3I8PD0odGhpcyBTZWxmJiYgc2Vs ZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRl PHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcj4+PSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQp IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKworICB0ZW1wbGF0ZTx0eXBl bmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IrKyh0aGlzIFNlbGYmJiBzZWxmKSB7IHJldHVybiBz dGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNl bGYmJiBvcGVyYXRvci0tKHRoaXMgU2VsZiYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNl bGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9y KysodGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNl bGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvci0tKHRoaXMg U2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQor CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcisodGhpcyBTZWxmJiYg c2VsZikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0 eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3ItKHRoaXMgU2VsZiYmIHNlbGYpIHsgcmV0dXJu IHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4g U2VsZiYmIG9wZXJhdG9yKyh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19j YXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9w ZXJhdG9yLSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYm Jj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yKih0 aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7 IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yLyh0aGlzIFNlbGYm JiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVt cGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yJSh0aGlzIFNlbGYmJiBzZWxmLCBp bnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlw ZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yJih0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0 dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2Vs Zj4gU2VsZiYmIG9wZXJhdG9yfCh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRp Y19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYm IG9wZXJhdG9yXih0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNl bGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9y PDwodGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNl bGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcj4+KHRoaXMg U2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQor CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvciEodGhpcyBTZWxmJiYg c2VsZikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0 eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3ImJih0aGlzIFNlbGYmJiBzZWxmLCBpbnQgY29u c3QmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5 cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcnx8KHRoaXMgU2VsZiYmIHNlbGYsIGludCBjb25z dCYpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKworICB0ZW1wbGF0ZTx0 eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3I9PSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsg cmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUg U2VsZj4gU2VsZiYmIG9wZXJhdG9yIT0odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBz dGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNl bGYmJiBvcGVyYXRvcjwodGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2Fz dDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVy YXRvcj4odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+ KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcjw9KHRo aXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsg fQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3I+PSh0aGlzIFNlbGYm JiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVt cGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yPD0+KHRoaXMgU2VsZiYmIHNlbGYs IGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorCisgIHRlbXBsYXRl PHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcioodGhpcyBTZWxmJiYgc2VsZikgeyByZXR1 cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxm PiBTZWxmJiYgb3BlcmF0b3ItPioodGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0 aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYm JiBvcGVyYXRvciYodGhpcyBTZWxmJiYgc2VsZikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYm PihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IsKHRo aXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsg fQorfTsKKworI2RlZmluZSBURVNUX09QUyhPUEVSQU5EKSBcCisgIChPUEVSQU5EKSArPSAwOwlc CisgIChPUEVSQU5EKSAtPSAwOwlcCisgIChPUEVSQU5EKSAqPSAwOwlcCisgIChPUEVSQU5EKSAv PSAwOwlcCisgIChPUEVSQU5EKSAlPSAwOwlcCisgIChPUEVSQU5EKSAmPSAwOwlcCisgIChPUEVS QU5EKSB8PSAwOwlcCisgIChPUEVSQU5EKSBePSAwOwlcCisgIChPUEVSQU5EKSA8PD0gMDsJXAor ICAoT1BFUkFORCkgPj49IDA7CVwKKwkJCVwKKyAgKysoT1BFUkFORCk7CQlcCisgIC0tKE9QRVJB TkQpOwkJXAorICAoT1BFUkFORCkrKzsJCVwKKyAgKE9QRVJBTkQpLS07CQlcCisJCQlcCisgICso T1BFUkFORCk7CQlcCisgIC0oT1BFUkFORCk7CQlcCisgIChPUEVSQU5EKSArIDA7CVwKKyAgKE9Q RVJBTkQpIC0gMDsJXAorICAoT1BFUkFORCkgKiAwOwlcCisgIChPUEVSQU5EKSAvIDA7CVwKKyAg KE9QRVJBTkQpICUgMDsJXAorICAoT1BFUkFORCkgJiAwOwlcCisgIChPUEVSQU5EKSB8IDA7CVwK KyAgKE9QRVJBTkQpIF4gMDsJXAorICAoT1BFUkFORCkgPDwgMDsJXAorICAoT1BFUkFORCkgPj4g MDsJXAorCQkJXAorICAhKE9QRVJBTkQpOwkJXAorICAoT1BFUkFORCkgJiYgMDsJXAorICAoT1BF UkFORCkgfHwgMDsJXAorCQkJXAorICAoT1BFUkFORCkgPT0gMDsJXAorICAoT1BFUkFORCkgIT0g MDsJXAorICAoT1BFUkFORCkgPCAwOwlcCisgIChPUEVSQU5EKSA+IDA7CVwKKyAgKE9QRVJBTkQp IDw9IDA7CVwKKyAgKE9QRVJBTkQpID49IDA7CVwKKyAgKE9QRVJBTkQpIDw9PiAwOwlcCisJCQlc CisgICooT1BFUkFORCk7CQlcCisgIChPUEVSQU5EKSAtPiogMDsJXAorICAmKE9QRVJBTkQpOwkJ XAorICAoT1BFUkFORCksIDA7CisKKyNkZWZpbmUgVkFMSURBVEVfUkVUVVJOX1RZUEVTKE9QRVJB TkQsIENPUlJFQ1RfVFlQRSkgXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZ UEUsIGRlY2x0eXBlKChPUEVSQU5EKSArPSAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNf c2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSAtPSAwKSkpOwkJXAorICBzdGF0 aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSAqPSAw KSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBl KChPUEVSQU5EKSAvPSAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNU X1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSAlPSAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9f aXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSAmPSAwKSkpOwkJXAorICBz dGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSB8 PSAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0 eXBlKChPUEVSQU5EKSBePSAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JS RUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSA8PD0gMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgPj49IDApKSk7CQlc CisJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRl Y2x0eXBlKCsrKE9QRVJBTkQpKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JS RUNUX1RZUEUsIGRlY2x0eXBlKC0tKE9QRVJBTkQpKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9f aXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSsrKSkpOwkJXAorICBzdGF0 aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKS0tKSkp OwkJXAorCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBF LCBkZWNsdHlwZSgrKE9QRVJBTkQpKSkpOwkJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUo Q09SUkVDVF9UWVBFLCBkZWNsdHlwZSgtKE9QRVJBTkQpKSkpOwkJCVwKKyAgc3RhdGljX2Fzc2Vy dChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgKyAwKSkpOwkJXAor ICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5E KSAtIDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVj bHR5cGUoKE9QRVJBTkQpICogMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09S UkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgLyAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0 KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSAlIDApKSk7CQlcCisg IHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQp ICYgMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNs dHlwZSgoT1BFUkFORCkgfCAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JS RUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSBeIDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQo X19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIDw8IDApKSk7CQlcCisg IHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQp ID4+IDApKSk7CQlcCisJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JS RUNUX1RZUEUsIGRlY2x0eXBlKCEoT1BFUkFORCkpKSk7CQkJXAorICBzdGF0aWNfYXNzZXJ0KF9f aXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSAmJiAwKSkpOwkJXAorICBz dGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSB8 fCAwKSkpOwkJXAorCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVD VF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgPT0gMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChf X2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgIT0gMCkpKTsJCVwKKyAg c3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkg PCAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0 eXBlKChPUEVSQU5EKSA+IDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJF Q1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIDw9IDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQo X19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpID49IDApKSk7CQlcCisg IHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQp IDw9PiAwKSkpOwkJXAorCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09S UkVDVF9UWVBFLCBkZWNsdHlwZSgqKE9QRVJBTkQpKSkpOwkJCVwKKyAgc3RhdGljX2Fzc2VydChf X2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgLT4qIDApKSk7CQlcCisg IHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoJihPUEVSQU5E KSkpKTsJCQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5 cGUoKE9QRVJBTkQpLCAwKSkpOworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotb3BzLXJlcXVpcmVzLW1lbS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1aXJlcy1tZW0uQwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDA4ZTkzOGM5OGQKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLXJlcXVpcmVzLW1lbS5D CkBAIC0wLDAgKzEsMTcxIEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJn ZXQgYysrMjMgfSB9CisKKy8vIHdlbGwtZm9ybWVkIGFuZCBpbGwtZm9ybWVkIHVzZXMgb2YgbWVt YmVyIG9ubHkgb3BlcmF0b3JzIGluIGEgcmVxdWlyZXMgZXhwcmVzc2lvbgorCisvLyBzdXBwcmVz cyB0aGUgd2FybmluZyBmb3IgVmFsdWUncyBhcnJvdyBvcGVyYXRvcgorLy8geyBkZy1vcHRpb25z ICItV25vLXJldHVybi1sb2NhbC1hZGRyIiB9CisKKy8vIEl0J3MgdmVyeSBoYXJkIHRvIHRlc3Qg Zm9yIGluY29ycmVjdCBzdWNjZXNzZXMgd2l0aG91dCByZXF1aXJlcywgYW5kIGJ5IGV4dGVuc2lv biBhIG5vbiBkZXBlbmRlbnQgdmFyaWFibGUKKy8vIHNvIGZvciB0aGUgdGltZSBiZWluZywgdGhl cmUgYXJlIG5vIG5vbiBkZXBlbmRlbnQgdGVzdHMgaW52YWxpZCBjYWxscy4KKworc3RydWN0IFZh bHVlIHsKKyAgaW50IF92OworICBWYWx1ZSBvcGVyYXRvcj0odGhpcyBWYWx1ZSBzZWxmLCBpbnQp IHsgcmV0dXJuIHNlbGY7IH0KKyAgVmFsdWUgb3BlcmF0b3IoKSh0aGlzIFZhbHVlIHNlbGYpIHsg cmV0dXJuIHNlbGY7IH0KKyAgVmFsdWUgb3BlcmF0b3JbXSh0aGlzIFZhbHVlIHNlbGYpIHsgcmV0 dXJuIHNlbGY7IH0KKyAgVmFsdWUqIG9wZXJhdG9yLT4odGhpcyBWYWx1ZSBzZWxmKSB7IHJldHVy biAmc2VsZjsgfQorfTsKKworc3RydWN0IExSZWYgeworICBpbnQgX3Y7CisgIExSZWYmIG9wZXJh dG9yPSh0aGlzIExSZWYmIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQorICBMUmVmJiBvcGVy YXRvcigpKHRoaXMgTFJlZiYgc2VsZikgeyByZXR1cm4gc2VsZjsgfQorICBMUmVmJiBvcGVyYXRv cltdKHRoaXMgTFJlZiYgc2VsZikgeyByZXR1cm4gc2VsZjsgfQorICBMUmVmKiBvcGVyYXRvci0+ KHRoaXMgTFJlZiYgc2VsZikgeyByZXR1cm4gJnNlbGY7IH0KK307CisKK3N0cnVjdCBSUmVmIHsK KyAgaW50IF92OworICBSUmVmJiYgb3BlcmF0b3I9KHRoaXMgUlJlZiYmIHNlbGYsIGludCkgeyBy ZXR1cm4gc3RhdGljX2Nhc3Q8UlJlZiYmPihzZWxmKTsgfQorICBSUmVmJiYgb3BlcmF0b3IoKSh0 aGlzIFJSZWYmJiBzZWxmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxSUmVmJiY+KHNlbGYpOyB9Cisg IFJSZWYmJiBvcGVyYXRvcltdKHRoaXMgUlJlZiYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19jYXN0 PFJSZWYmJj4oc2VsZik7IH0KKyAgUlJlZiogb3BlcmF0b3ItPih0aGlzIFJSZWYmJiBzZWxmKSB7 IHJldHVybiAmc2VsZjsgfQorfTsKKworc3RydWN0IENvbnN0TFJlZiB7CisgIGludCBfdjsKKyAg Q29uc3RMUmVmIGNvbnN0JiBvcGVyYXRvcj0odGhpcyBDb25zdExSZWYgY29uc3QmIHNlbGYsIGlu dCkgeyByZXR1cm4gc2VsZjsgfQorICBDb25zdExSZWYgY29uc3QmIG9wZXJhdG9yKCkodGhpcyBD b25zdExSZWYgY29uc3QmIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0KKyAgQ29uc3RMUmVmIGNvbnN0 JiBvcGVyYXRvcltdKHRoaXMgQ29uc3RMUmVmIGNvbnN0JiBzZWxmKSB7IHJldHVybiBzZWxmOyB9 CisgIENvbnN0TFJlZiBjb25zdCogb3BlcmF0b3ItPih0aGlzIENvbnN0TFJlZiBjb25zdCYgc2Vs ZikgeyByZXR1cm4gJnNlbGY7IH0KK307CisKK3N0cnVjdCBDb25zdFJSZWYgeworICBpbnQgX3Y7 CisgIENvbnN0UlJlZiBjb25zdCYmIG9wZXJhdG9yPSh0aGlzIENvbnN0UlJlZiBjb25zdCYmIHNl bGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RSUmVmIGNvbnN0JiY+KHNlbGYpOyB9 CisgIENvbnN0UlJlZiBjb25zdCYmIG9wZXJhdG9yKCkodGhpcyBDb25zdFJSZWYgY29uc3QmJiBz ZWxmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdFJSZWYgY29uc3QmJj4oc2VsZik7IH0KKyAg Q29uc3RSUmVmIGNvbnN0JiYgb3BlcmF0b3JbXSh0aGlzIENvbnN0UlJlZiBjb25zdCYmIHNlbGYp IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0UlJlZiBjb25zdCYmPihzZWxmKTsgfQorICBDb25z dFJSZWYgY29uc3QqIG9wZXJhdG9yLT4odGhpcyBDb25zdFJSZWYgY29uc3QmJiBzZWxmKSB7IHJl dHVybiAmc2VsZjsgfQorfTsKKworLy8gbmVlZGVkIHRvIGltcGxlbWVudCBkZWR1Y2VkIG9wZXJh dG9yLT4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCByZW1vdmVfcmVmIHsgdXNpbmcgdHlw ZSA9IFQ7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVtb3ZlX3JlZjxUJj4geyB1 c2luZyB0eXBlID0gVDsgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCByZW1vdmVfcmVm PFQmJj4geyB1c2luZyB0eXBlID0gVDsgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIHJl bW92ZV9yZWZfdCA9IHR5cGVuYW1lIHJlbW92ZV9yZWY8VD46OnR5cGU7CisKK3N0cnVjdCBEZWR1 Y2VkIHsKKyAgaW50IF92OworICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorICBTZWxmJiYgb3Bl cmF0b3I9KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYm PihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorICBTZWxmJiYgb3BlcmF0b3Io KSh0aGlzIFNlbGYmJiBzZWxmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9 CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+CisgIFNlbGYmJiBvcGVyYXRvcltdKHRoaXMgU2Vs ZiYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxh dGU8dHlwZW5hbWUgU2VsZj4KKyAgcmVtb3ZlX3JlZl90PFNlbGY+KiBvcGVyYXRvci0+KHRoaXMg U2VsZiYmIHNlbGYpIHsgcmV0dXJuICZzZWxmOyB9Cit9OworCisjZGVmaW5lIFRFU1RfSU5WQUxJ RChPUEVSQU5EKSBcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgPSAwOyB9 LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgPSB3aXRoICIgI09QRVJBTkQp OwlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkoKTsgfSwgIlVuZXhwZWN0 ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yICgpIHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3Rh dGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVSQU5EKVtdOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNz IGNhbGxpbmcgb3BlcmF0b3IgW10gd2l0aCAiICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0 KCFyZXF1aXJlc3sgKE9QRVJBTkQpLT5fdjsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5n IG9wZXJhdG9yIC0+IHdpdGggIiAjT1BFUkFORCk7CisKKyNkZWZpbmUgVEVTVF9WQUxJRChPUEVS QU5EKSBcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSA9IDA7IH0sICJVbmV4 cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciA9IHdpdGggIiAjT1BFUkFORCk7CVwKKyAg c3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpKCk7IH0sICJVbmV4cGVjdGVkIGZhaWx1 cmUgY2FsbGluZyBvcGVyYXRvciAoKSB3aXRoICIgI09QRVJBTkQpOwlcCisgIHN0YXRpY19hc3Nl cnQocmVxdWlyZXN7IChPUEVSQU5EKVtdOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcg b3BlcmF0b3IgW10gd2l0aCAiICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVz eyAoT1BFUkFORCktPl92OyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3Ig LT4gd2l0aCAiICNPUEVSQU5EKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K K2NvbmNlcHQgc2FtZV9hcyA9IF9faXNfc2FtZShULCBVKTsKKworI2RlZmluZSBURVNUX1ZBTElE X1dJVEhfUkVUVVJOX1RZUEVTKE9QRVJBTkQsIENPUlJFQ1RfVFlQRSkgXAorICBzdGF0aWNfYXNz ZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpID0gMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9 LCJVbmV4cGVjdGVkIGZhaWx1cmUgd2l0aCByZXR1cm4gdHlwZSBjaGVjayBjYWxsaW5nIG9wZXJh dG9yID0gd2l0aCAiICNPUEVSQU5EICIgLT4gZXhwZWN0ZWQgcmV0dXJuIHR5cGU6ICIgI0NPUlJF Q1RfVFlQRSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSgpfSAtPiBz YW1lX2FzPENPUlJFQ1RfVFlQRT47IH0sICAiVW5leHBlY3RlZCBmYWlsdXJlIHdpdGggcmV0dXJu IHR5cGUgY2hlY2sgY2FsbGluZyBvcGVyYXRvciAoKSB3aXRoICIgI09QRVJBTkQgIiAtPiBleHBl Y3RlZCByZXR1cm4gdHlwZTogIiAjQ09SUkVDVF9UWVBFKTsJXAorICBzdGF0aWNfYXNzZXJ0KHJl cXVpcmVzeyB7KE9QRVJBTkQpW119IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSwgICJVbmV4 cGVjdGVkIGZhaWx1cmUgd2l0aCByZXR1cm4gdHlwZSBjaGVjayBjYWxsaW5nIG9wZXJhdG9yIFtd IHdpdGggIiAjT1BFUkFORCAiIC0+IGV4cGVjdGVkIHJldHVybiB0eXBlOiAiICNDT1JSRUNUX1RZ UEUpOworICAKKwordGVtcGxhdGU8dHlwZW5hbWUgRGVwVmFsdWUgPSBWYWx1ZT4KK3ZvaWQgdGVz dF92YWx1ZSgpCit7CisgIERlcFZhbHVlIHZhbHVle307CisgIFRFU1RfVkFMSUQodmFsdWUpCisg IFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwVmFsdWUmJj4odmFsdWUpKQorICBURVNUX1ZBTElE KHN0YXRpY19jYXN0PERlcFZhbHVlIGNvbnN0Jj4odmFsdWUpKQorICBURVNUX1ZBTElEKHN0YXRp Y19jYXN0PERlcFZhbHVlIGNvbnN0JiY+KHZhbHVlKSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg RGVwTFJlZiA9IExSZWY+Cit2b2lkIHRlc3RfbF9yZWYoKQoreworICBEZXBMUmVmIGxfcmVme307 CisgIFRFU1RfVkFMSUQobF9yZWYpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxEZXBMUmVm JiY+KGxfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PERlcExSZWYgY29uc3QmPihs X3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxEZXBMUmVmIGNvbnN0JiY+KGxfcmVm KSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVwUlJlZiA9IFJSZWY+Cit2b2lkIHRlc3Rfcl9y ZWYoKQoreworICBEZXBSUmVmIHJfcmVme307CisgIFRFU1RfSU5WQUxJRChyX3JlZikKKyAgVEVT VF9WQUxJRChzdGF0aWNfY2FzdDxEZXBSUmVmJiY+KHJfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0 YXRpY19jYXN0PERlcFJSZWYgY29uc3QmPihyX3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNf Y2FzdDxEZXBSUmVmIGNvbnN0JiY+KHJfcmVmKSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVw Q29uc3RMUmVmID0gQ29uc3RMUmVmPgordm9pZCB0ZXN0X2NvbnN0X2xfcmVmKCkKK3sKKyAgRGVw Q29uc3RMUmVmIGNvbnN0X2xfcmVme307CisgIFRFU1RfVkFMSUQoY29uc3RfbF9yZWYpCisgIFRF U1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwQ29uc3RMUmVmJiY+KGNvbnN0X2xfcmVmKSkKKyAgVEVT VF9WQUxJRChzdGF0aWNfY2FzdDxEZXBDb25zdExSZWYgY29uc3QmPihjb25zdF9sX3JlZikpCisg IFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwQ29uc3RMUmVmIGNvbnN0JiY+KGNvbnN0X2xfcmVm KSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVwQ29uc3RSUmVmID0gQ29uc3RSUmVmPgordm9p ZCB0ZXN0X2NvbnN0X3JfcmVmKCkKK3sKKyAgRGVwQ29uc3RSUmVmIGNvbnN0X3JfcmVme307Cisg IFRFU1RfSU5WQUxJRChjb25zdF9yX3JlZikKKyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBD b25zdFJSZWYmJj4oY29uc3Rfcl9yZWYpKQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8RGVw Q29uc3RSUmVmIGNvbnN0Jj4oY29uc3Rfcl9yZWYpKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0 PERlcENvbnN0UlJlZiBjb25zdCYmPihjb25zdF9yX3JlZikpCit9CisKK3RlbXBsYXRlPHR5cGVu YW1lIERlcERlZHVjZWQgPSBEZWR1Y2VkPgordm9pZCB0ZXN0X2RlZHVjZWQoKQoreworICBEZXBE ZWR1Y2VkIGRlZHVjZWR7fTsKKworICBURVNUX1ZBTElEKGRlZHVjZWQpCisgIFRFU1RfVkFMSUQo c3RhdGljX2Nhc3Q8RGVwRGVkdWNlZCYmPihkZWR1Y2VkKSkKKyAgVEVTVF9WQUxJRChzdGF0aWNf Y2FzdDxEZXBEZWR1Y2VkIGNvbnN0Jj4oZGVkdWNlZCkpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nh c3Q8RGVwRGVkdWNlZCBjb25zdCYmPihkZWR1Y2VkKSkKKworICBURVNUX1ZBTElEX1dJVEhfUkVU VVJOX1RZUEVTKGRlZHVjZWQsIERlcERlZHVjZWQmKQorICBURVNUX1ZBTElEX1dJVEhfUkVUVVJO X1RZUEVTKHN0YXRpY19jYXN0PERlcERlZHVjZWQmJj4oZGVkdWNlZCksIERlcERlZHVjZWQmJikK KyAgVEVTVF9WQUxJRF9XSVRIX1JFVFVSTl9UWVBFUyhzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNv bnN0Jj4oZGVkdWNlZCksIERlcERlZHVjZWQgY29uc3QmKQorICBURVNUX1ZBTElEX1dJVEhfUkVU VVJOX1RZUEVTKHN0YXRpY19jYXN0PERlcERlZHVjZWQgY29uc3QmJj4oZGVkdWNlZCksIERlcERl ZHVjZWQgY29uc3QmJikKKyAgLy8gYXJyb3cgb3BlcmF0b3IgbmVlZHMgdG8gYmUgc2VwZXJhdGUg dG8gY2hlY2sgdGhlIHR5cGUgb2YgX3YKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhkZWR1 Y2VkLT5fdil9IC0+IHNhbWVfYXM8aW50Jj47IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgd2l0aCBy ZXR1cm4gdHlwZSBjaGVjayBjYWxsaW5nIG9wZXJhdG9yIC0+IHdpdGggZGVkdWNlZC0+X3YiKTsK KyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkJiY+KGRl ZHVjZWQpLT5fdil9IC0+IHNhbWVfYXM8aW50Jj47IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgd2l0 aCByZXR1cm4gdHlwZSBjaGVjayBjYWxsaW5nIG9wZXJhdG9yIC0+IHdpdGggc3RhdGljX2Nhc3Q8 RGVwRGVkdWNlZCYmPihkZWR1Y2VkKS0+X3YiKTsKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sg eyhzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNvbnN0Jj4oZGVkdWNlZCktPl92KX0gLT4gc2FtZV9h czxpbnQgY29uc3QmPjsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSB3aXRoIHJldHVybiB0eXBlIGNo ZWNrIGNhbGxpbmcgb3BlcmF0b3IgLT4gd2l0aCBzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNvbnN0 Jj4oZGVkdWNlZCktPl92Iik7CisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoc3RhdGljX2Nh c3Q8RGVwRGVkdWNlZCBjb25zdCYmPihkZWR1Y2VkKS0+X3YpfSAtPiBzYW1lX2FzPGludCBjb25z dCY+OyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIHdpdGggcmV0dXJuIHR5cGUgY2hlY2sgY2FsbGlu ZyBvcGVyYXRvciAtPiB3aXRoIHN0YXRpY19jYXN0PERlcERlZHVjZWQgY29uc3QmJj4oZGVkdWNl ZCktPl92Iik7Cit9CisKK3ZvaWQgdGVzdCgpCit7CisgIHRlc3RfdmFsdWUoKTsKKyAgdGVzdF9s X3JlZigpOworICB0ZXN0X3JfcmVmKCk7CisgIHRlc3RfY29uc3RfbF9yZWYoKTsKKyAgdGVzdF9j b25zdF9yX3JlZigpOworICB0ZXN0X2RlZHVjZWQoKTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1aXJlcy1ub24tbWVtLkMg Yi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLXJlcXVpcmVzLW5v bi1tZW0uQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODY1YjFmNTdk NGEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotb3BzLXJlcXVpcmVzLW5vbi1tZW0uQwpAQCAtMCwwICsxLDIzNyBAQAorLy8gUDA4NDdS NworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyB3ZWxsLWZvcm1l ZCBhbmQgaWxsLWZvcm1lZCB1c2VzIG9mIG5vbi1tZW1iZXIgY2FwYWJsZSBvcGVyYXRvcnMgaW4g YSByZXF1aXJlcyBleHByZXNzaW9uCisKKyNpbmNsdWRlICJleHBsaWNpdC1vYmotb3BzLW5vbi1t ZW0uaCIKKworLy8gd2Ugb25seSBuZWVkIHRoZSBzdHJ1Y3RzIGZyb20gdGhlIGhlYWRlcgorI3Vu ZGVmIFRFU1RfT1BTCisjdW5kZWYgVkFMSURBVEVfUkVUVVJOX1RZUEVTCisKKy8vIEl0J3MgdmVy eSBoYXJkIHRvIHRlc3QgZm9yIGluY29ycmVjdCBzdWNjZXNzZXMgd2l0aG91dCByZXF1aXJlcywg YW5kIGJ5IGV4dGVuc2lvbiBhIG5vbiBkZXBlbmRlbnQgdmFyaWFibGUKKy8vIHNvIGZvciB0aGUg dGltZSBiZWluZywgdGhlcmUgYXJlIG5vIG5vbiBkZXBlbmRlbnQgdGVzdHMgaW52YWxpZCBjYWxs cy4KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2NvbmNlcHQgc2FtZV9hcyA9 IF9faXNfc2FtZShULCBVKTsKKworI2RlZmluZSBURVNUX0lOVkFMSUQoT1BFUkFORCwgQ09SUkVD VF9UWVBFKSBcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgKz0gMDsgfSwg IlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yICs9IHdpdGggIiAjT1BFUkFORCk7 CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgLT0gMDsgfSwgIlVuZXhw ZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIC09IHdpdGggIiAjT1BFUkFORCk7CQlcCisg IHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgKj0gMDsgfSwgIlVuZXhwZWN0ZWQg c3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yICo9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRp Y19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgLz0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2Vz cyBjYWxsaW5nIG9wZXJhdG9yIC89IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3Nl cnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgJT0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxs aW5nIG9wZXJhdG9yICU9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJl cXVpcmVzeyAoT1BFUkFORCkgJj0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9w ZXJhdG9yICY9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVz eyAoT1BFUkFORCkgfD0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9y IHw9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BF UkFORCkgXj0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIF49IHdp dGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkg PDw9IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciA8PD0gd2l0aCAi ICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpID4+PSAw OyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgPj49IHdpdGggIiAjT1BF UkFORCk7CVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKyso T1BFUkFORCk7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciBwcmUrKyB3 aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgLS0oT1BFUkFO RCk7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciBwcmUtLSB3aXRoICIg I09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpKys7IH0s ICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciBwb3N0Kysgd2l0aCAiICNPUEVS QU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpLS07IH0sICJVbmV4 cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciBwb3N0LS0gd2l0aCAiICNPUEVSQU5EKTsJ XAorCQkJCQkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyArKE9QRVJBTkQp OyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgdW5hcnkrIHdpdGggIiAj T1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAtKE9QRVJBTkQpOyB9LCAi VW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgdW5hcnktIHdpdGggIiAjT1BFUkFO RCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgKyAwOyB9LCAiVW5l eHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgYmluYXJ5KyB3aXRoICIgI09QRVJBTkQp OwlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgLSAwOyB9LCAiVW5leHBl Y3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgYmluYXJ5LSB3aXRoICIgI09QRVJBTkQpOwlc CisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgKiAwOyB9LCAiVW5leHBlY3Rl ZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgYmluYXJ5KiB3aXRoICIgI09QRVJBTkQpOwlcCisg IHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgLyAwOyB9LCAiVW5leHBlY3RlZCBz dWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgLyB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNf YXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpICUgMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBj YWxsaW5nIG9wZXJhdG9yICUgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCgh cmVxdWlyZXN7IChPUEVSQU5EKSAmIDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBv cGVyYXRvciBiaW5hcnkmIHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2VydCghcmVx dWlyZXN7IChPUEVSQU5EKSB8IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVy YXRvciB8IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAo T1BFUkFORCkgXiAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgXiB3 aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQp IDw8IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciA8PCB3aXRoICIg I09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpID4+IDA7 IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciA+PiB3aXRoICIgI09QRVJB TkQpOwkJXAorCQkJCQkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAhKE9Q RVJBTkQpOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgISB3aXRoICIg I09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpICYmIDA7 IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAmJiB3aXRoICIgI09QRVJB TkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIHx8IDA7IH0sICJV bmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciB8fCB3aXRoICIgI09QRVJBTkQpOwkJ XAorCQkJCQkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkg PT0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yID09IHdpdGggIiAj T1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgIT0gMDsg fSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yICE9IHdpdGggIiAjT1BFUkFO RCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgPCAwOyB9LCAiVW5l eHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgPCB3aXRoICIgI09QRVJBTkQpOwkJXAor ICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpID4gMDsgfSwgIlVuZXhwZWN0ZWQg c3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yID4gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGlj X2Fzc2VydCghcmVxdWlyZXN7IChPUEVSQU5EKSA8PSAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNz IGNhbGxpbmcgb3BlcmF0b3IgPD0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dCghcmVxdWlyZXN7IChPUEVSQU5EKSA+PSAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxp bmcgb3BlcmF0b3IgPj0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVx dWlyZXN7IChPUEVSQU5EKSA8PT4gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9w ZXJhdG9yIDw9PiB3aXRoICIgI09QRVJBTkQpOwlcCisJCQkJCQkJCQkJCQkJCVwKKyAgc3RhdGlj X2Fzc2VydCghcmVxdWlyZXN7ICooT1BFUkFORCk7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2Fs bGluZyBvcGVyYXRvciB1bmFyeSogd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dCghcmVxdWlyZXN7IChPUEVSQU5EKSAtPiogMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxs aW5nIG9wZXJhdG9yIC0+KiB3aXRoICIgI09QRVJBTkQpOwlcCisgIC8qIFdlIG5lZWQgdG8gY2hl Y2sgdGhlIHJldHVybiB0eXBlIHRvIGNvbmZpcm0gdGhlIGJ1aWx0LWluIG9wZXJhdG9yIHdhcyBu b3Qgc2VsZWN0ZWQuICAqLwkJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IHsmKE9QRVJB TkQpfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0sCQkJCQkJXAorCQkiVW5leHBlY3RlZCBz dWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgdW5hcnkmIHdpdGggIiAjT1BFUkFORCk7CQkJCQlcCisg IHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyB7KE9QRVJBTkQpLCAwfSAtPiBzYW1lX2FzPENPUlJF Q1RfVFlQRT47IH0sCQkJCQkJXAorCQkiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0 b3IgLCB3aXRoICIgI09QRVJBTkQpOworCisjZGVmaW5lIFRFU1RfVkFMSUQoT1BFUkFORCwgQ09S UkVDVF9UWVBFKSBcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSArPSAwOyB9 LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgKz0gd2l0aCAiICNPUEVSQU5E KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpIC09IDA7IH0sICJVbmV4 cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciAtPSB3aXRoICIgI09QRVJBTkQpOwkJXAor ICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgKj0gMDsgfSwgIlVuZXhwZWN0ZWQg ZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yICo9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRp Y19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAvPSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJl IGNhbGxpbmcgb3BlcmF0b3IgLz0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dChyZXF1aXJlc3sgKE9QRVJBTkQpICU9IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGlu ZyBvcGVyYXRvciAlPSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVp cmVzeyAoT1BFUkFORCkgJj0gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJh dG9yICY9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChP UEVSQU5EKSB8PSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgfD0g d2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQp IF49IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciBePSB3aXRoICIg I09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgPDw9IDA7 IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciA8PD0gd2l0aCAiICNPUEVS QU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgPj49IDA7IH0sICJV bmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciA+Pj0gd2l0aCAiICNPUEVSQU5EKTsJ XAorCQkJCQkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7ICsrKE9QRVJBTkQp OyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgcHJlKysgd2l0aCAiICNP UEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgLS0oT1BFUkFORCk7IH0sICJV bmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciBwcmUtLSB3aXRoICIgI09QRVJBTkQp OwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkrKzsgfSwgIlVuZXhwZWN0 ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIHBvc3QrKyB3aXRoICIgI09QRVJBTkQpOwkJXAor ICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCktLTsgfSwgIlVuZXhwZWN0ZWQgZmFp bHVyZSBjYWxsaW5nIG9wZXJhdG9yIHBvc3QtLSB3aXRoICIgI09QRVJBTkQpOwkJXAorCQkJCQkJ CQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7ICsoT1BFUkFORCk7IH0sICJVbmV4 cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciB1bmFyeSsgd2l0aCAiICNPUEVSQU5EKTsJ CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgLShPUEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQg ZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIHVuYXJ5LSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBz dGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgKyAwOyB9LCAiVW5leHBlY3RlZCBmYWls dXJlIGNhbGxpbmcgb3BlcmF0b3IgYmluYXJ5KyB3aXRoICIgI09QRVJBTkQpOwlcCisgIHN0YXRp Y19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAtIDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUg Y2FsbGluZyBvcGVyYXRvciBiaW5hcnktIHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fz c2VydChyZXF1aXJlc3sgKE9QRVJBTkQpICogMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxs aW5nIG9wZXJhdG9yIGJpbmFyeSogd2l0aCAiICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0 KHJlcXVpcmVzeyAoT1BFUkFORCkgLyAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcg b3BlcmF0b3IgLyB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVz eyAoT1BFUkFORCkgJSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3Ig JSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFO RCkgJiAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgYmluYXJ5JiB3 aXRoICIgI09QRVJBTkQpOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSB8 IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciB8IHdpdGggIiAjT1BF UkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSBeIDA7IH0sICJV bmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciBeIHdpdGggIiAjT1BFUkFORCk7CQlc CisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSA8PCAwOyB9LCAiVW5leHBlY3Rl ZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgPDwgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3Rh dGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpID4+IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1 cmUgY2FsbGluZyBvcGVyYXRvciA+PiB3aXRoICIgI09QRVJBTkQpOwkJXAorCQkJCQkJCQkJCQkJ CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7ICEoT1BFUkFORCk7IH0sICJVbmV4cGVjdGVk IGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciAhIHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRp Y19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAmJiAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJl IGNhbGxpbmcgb3BlcmF0b3IgJiYgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dChyZXF1aXJlc3sgKE9QRVJBTkQpIHx8IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGlu ZyBvcGVyYXRvciB8fCB3aXRoICIgI09QRVJBTkQpOwkJXAorCQkJCQkJCQkJCQkJCQlcCisgIHN0 YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSA9PSAwOyB9LCAiVW5leHBlY3RlZCBmYWls dXJlIGNhbGxpbmcgb3BlcmF0b3IgPT0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fz c2VydChyZXF1aXJlc3sgKE9QRVJBTkQpICE9IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2Fs bGluZyBvcGVyYXRvciAhPSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJl cXVpcmVzeyAoT1BFUkFORCkgPCAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3Bl cmF0b3IgPCB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAo T1BFUkFORCkgPiAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgPiB3 aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkg PD0gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIDw9IHdpdGggIiAj T1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSA+PSAwOyB9 LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgPj0gd2l0aCAiICNPUEVSQU5E KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpIDw9PiAwOyB9LCAiVW5l eHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgPD0+IHdpdGggIiAjT1BFUkFORCk7CVwK KwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAqKE9QRVJBTkQpOyB9 LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgdW5hcnkqIHdpdGggIiAjT1BF UkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAtPiogMDsgfSwg IlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIC0+KiB3aXRoICIgI09QRVJBTkQp OwlcCisgIC8qIFdlIG5lZWQgdG8gY2hlY2sgdGhlIHJldHVybiB0eXBlIHRvIGNvbmZpcm0gd2Ug c2VsZWN0ZWQgb3VyIG92ZXJsb2FkLCBub3QgdGhlIGJ1aWx0LWluIG9wZXJhdG9yLiAgKi8JXAor ICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7JihPUEVSQU5EKX0gLT4gc2FtZV9hczxDT1JSRUNU X1RZUEU+OyB9LAkJCQkJCVwKKwkJIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9y IHVuYXJ5JiB3aXRoICIgI09QRVJBTkQpOwkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVz eyB7KE9QRVJBTkQpLCAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0sCQkJCQkJXAorCQki VW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgLCB3aXRoICIgI09QRVJBTkQpOwor CisvLyBSZXR1cm4gdHlwZXMgbmVlZCB0byBiZSB0ZXN0ZWQgZm9yIHRoZSBkZWR1Y2VkIGNhc2UK KworI2RlZmluZSBURVNUX1ZBTElEX1dJVEhfUkVUVVJOX1RZUEVTKE9QRVJBTkQsIENPUlJFQ1Rf VFlQRSkgXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpICs9IDB9IC0+IHNh bWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhP UEVSQU5EKSAtPSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19h c3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgKj0gMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+ OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpIC89IDB9IC0+IHNh bWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhP UEVSQU5EKSAlPSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19h c3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgJj0gMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+ OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpIHw9IDB9IC0+IHNh bWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhP UEVSQU5EKSBePSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19h c3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgPDw9IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBF PjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSA+Pj0gMH0gLT4g c2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAorCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2Vy dChyZXF1aXJlc3sgeysrKE9QRVJBTkQpfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJ XAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7LS0oT1BFUkFORCl9IC0+IHNhbWVfYXM8Q09S UkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkr K30gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1 aXJlc3sgeyhPUEVSQU5EKS0tfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorCQkJ CQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeysoT1BFUkFORCl9IC0+IHNhbWVf YXM8Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHstKE9Q RVJBTkQpfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0 KHJlcXVpcmVzeyB7KE9QRVJBTkQpICsgMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJ CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSAtIDB9IC0+IHNhbWVfYXM8 Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFO RCkgKiAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0 KHJlcXVpcmVzeyB7KE9QRVJBTkQpIC8gMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJ CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSAlIDB9IC0+IHNhbWVfYXM8 Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFO RCkgJiAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0 KHJlcXVpcmVzeyB7KE9QRVJBTkQpIHwgMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJ CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSBeIDB9IC0+IHNhbWVfYXM8 Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFO RCkgPDwgMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0 KHJlcXVpcmVzeyB7KE9QRVJBTkQpID4+IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7 CVwKKwkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHshKE9QRVJBTkQpfSAt PiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVz eyB7KE9QRVJBTkQpICYmIDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3Rh dGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSB8fCAwfSAtPiBzYW1lX2FzPENPUlJFQ1Rf VFlQRT47IH0pOwlcCisJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9Q RVJBTkQpID09IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fz c2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSAhPSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47 IH0pOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgPCAwfSAtPiBzYW1l X2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9Q RVJBTkQpID4gMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fz c2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSA8PSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47 IH0pOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgPj0gMH0gLT4gc2Ft ZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9Q RVJBTkQpIDw9PiAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisJCQkJCQkJCQkJ XAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KihPUEVSQU5EKX0gLT4gc2FtZV9hczxDT1JS RUNUX1RZUEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSAt PiogMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJl cXVpcmVzeyB7JihPUEVSQU5EKX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAg c3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSwgMH0gLT4gc2FtZV9hczxDT1JSRUNU X1RZUEU+OyB9KTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRGVwVmFsdWUgPSBWYWx1ZT4KK3ZvaWQg dGVzdF92YWx1ZSgpCit7CisgIERlcFZhbHVlIHZhbHVle307CisgIFRFU1RfVkFMSUQodmFsdWUs IERlcFZhbHVlKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcFZhbHVlJiY+KHZhbHVlKSwg RGVwVmFsdWUpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwVmFsdWUgY29uc3QmPih2YWx1 ZSksIERlcFZhbHVlKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcFZhbHVlIGNvbnN0JiY+ KHZhbHVlKSwgRGVwVmFsdWUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcExSZWYgPSBMUmVm Pgordm9pZCB0ZXN0X2xfcmVmKCkKK3sKKyAgRGVwTFJlZiBsX3JlZnt9OworICBURVNUX1ZBTElE KGxfcmVmLCBEZXBMUmVmJikKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PERlcExSZWYmJj4o bF9yZWYpLCBEZXBMUmVmJikKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PERlcExSZWYgY29u c3QmPihsX3JlZiksIERlcExSZWYmKQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8RGVwTFJl ZiBjb25zdCYmPihsX3JlZiksIERlcExSZWYmKQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXBS UmVmID0gUlJlZj4KK3ZvaWQgdGVzdF9yX3JlZigpCit7CisgIERlcFJSZWYgcl9yZWZ7fTsKKyAg VEVTVF9JTlZBTElEKHJfcmVmLCBEZXBSUmVmJiYpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8 RGVwUlJlZiYmPihyX3JlZiksIERlcFJSZWYmJikKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0 PERlcFJSZWYgY29uc3QmPihyX3JlZiksIERlcFJSZWYmJikKKyAgVEVTVF9JTlZBTElEKHN0YXRp Y19jYXN0PERlcFJSZWYgY29uc3QmJj4ocl9yZWYpLCBEZXBSUmVmJiYpCit9CisKK3RlbXBsYXRl PHR5cGVuYW1lIERlcENvbnN0TFJlZiA9IENvbnN0TFJlZj4KK3ZvaWQgdGVzdF9jb25zdF9sX3Jl ZigpCit7CisgIERlcENvbnN0TFJlZiBjb25zdF9sX3JlZnt9OworICBURVNUX1ZBTElEKGNvbnN0 X2xfcmVmLCBEZXBDb25zdExSZWYgY29uc3QmKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERl cENvbnN0TFJlZiYmPihjb25zdF9sX3JlZiksIERlcENvbnN0TFJlZiBjb25zdCYpCisgIFRFU1Rf VkFMSUQoc3RhdGljX2Nhc3Q8RGVwQ29uc3RMUmVmIGNvbnN0Jj4oY29uc3RfbF9yZWYpLCBEZXBD b25zdExSZWYgY29uc3QmKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcENvbnN0TFJlZiBj b25zdCYmPihjb25zdF9sX3JlZiksIERlcENvbnN0TFJlZiBjb25zdCYpCit9CisKK3RlbXBsYXRl PHR5cGVuYW1lIERlcENvbnN0UlJlZiA9IENvbnN0UlJlZj4KK3ZvaWQgdGVzdF9jb25zdF9yX3Jl ZigpCit7CisgIERlcENvbnN0UlJlZiBjb25zdF9yX3JlZnt9OworICBURVNUX0lOVkFMSUQoY29u c3Rfcl9yZWYsIERlcENvbnN0UlJlZiBjb25zdCYmKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0 PERlcENvbnN0UlJlZiYmPihjb25zdF9yX3JlZiksIERlcENvbnN0UlJlZiBjb25zdCYmKQorICBU RVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8RGVwQ29uc3RSUmVmIGNvbnN0Jj4oY29uc3Rfcl9yZWYp LCBEZXBDb25zdFJSZWYgY29uc3QmJikKKyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBDb25z dFJSZWYgY29uc3QmJj4oY29uc3Rfcl9yZWYpLCBEZXBDb25zdFJSZWYgY29uc3QmJikKK30KKwor dGVtcGxhdGU8dHlwZW5hbWUgRGVwRGVkdWNlZCA9IERlZHVjZWQ+Cit2b2lkIHRlc3RfZGVkdWNl ZCgpCit7CisgIERlcERlZHVjZWQgZGVkdWNlZHt9OworCisgIFRFU1RfVkFMSURfV0lUSF9SRVRV Uk5fVFlQRVMoZGVkdWNlZCwgRGVwRGVkdWNlZCYpCisgIFRFU1RfVkFMSURfV0lUSF9SRVRVUk5f VFlQRVMoc3RhdGljX2Nhc3Q8RGVwRGVkdWNlZCYmPihkZWR1Y2VkKSwgRGVwRGVkdWNlZCYmKQor ICBURVNUX1ZBTElEX1dJVEhfUkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0PERlcERlZHVjZWQgY29u c3QmPihkZWR1Y2VkKSwgRGVwRGVkdWNlZCBjb25zdCYpCisgIFRFU1RfVkFMSURfV0lUSF9SRVRV Uk5fVFlQRVMoc3RhdGljX2Nhc3Q8RGVwRGVkdWNlZCBjb25zdCYmPihkZWR1Y2VkKSwgRGVwRGVk dWNlZCBjb25zdCYmKQorfQorCit2b2lkIHRlc3QoKQoreworICB0ZXN0X3ZhbHVlKCk7CisgIHRl c3RfbF9yZWYoKTsKKyAgdGVzdF9yX3JlZigpOworICB0ZXN0X2NvbnN0X2xfcmVmKCk7CisgIHRl c3RfY29uc3Rfcl9yZWYoKTsKKyAgdGVzdF9kZWR1Y2VkKCk7Cit9CisKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1yZWRlY2wtY29uc3RyYWludHMu QyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1yZWRlY2wtY29uc3Ry YWludHMuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTJhZDBlMzUw NzMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotcmVkZWNsLWNvbnN0cmFpbnRzLkMKQEAgLTAsMCArMSwxMTUgQEAKKy8vIFAwODQ3UjcK Ky8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVkZWNsYXJhdGlv bnMgd2l0aCBlcXVpdmFsZW50IGNvbnN0cmFpbnRzCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citj b25jZXB0IENvbnN0cmFpbiA9IHRydWU7CisKKworc3RydWN0IFMgeworLy8geG9iai9zdGF0aWMK KyAgdm9pZCBmX3hzX3YodGhpcyBTLCBDb25zdHJhaW4gYXV0bykge307IC8vIHsgZGctbm90ZSB7 cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgc3RhdGljIHZvaWQgZl94c192KENvbnN0cmFpbiBh dXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisg IHZvaWQgZl94c19yZWYodGhpcyBTJiwgQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLW5vdGUg e3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfcmVmKENvbnN0cmFp biBhdXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQor CisgIHZvaWQgZl94c19jcmVmKHRoaXMgUyBjb25zdCYsIENvbnN0cmFpbiBhdXRvKSB7fTsgLy8g eyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICBzdGF0aWMgdm9pZCBmX3hzX2Ny ZWYoQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRl ZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX3JyZWYodGhpcyBTJiYsIENvbnN0cmFpbiBhdXRvKSB7 fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICBzdGF0aWMgdm9pZCBm X3hzX3JyZWYoQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3Zl cmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX2NycmVmKHRoaXMgUyBjb25zdCYmLCBDb25z dHJhaW4gYXV0bykge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAg c3RhdGljIHZvaWQgZl94c19jcnJlZihDb25zdHJhaW4gYXV0bykge307IC8vIHsgZGctZXJyb3Ig e2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICB2b2lkIGZfeHNfZHYodGhpcyBhdXRv LCBDb25zdHJhaW4gYXV0bykge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259 IHtQcm9iYWJseSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorICBzdGF0aWMg dm9pZCBmX3hzX2R2KENvbnN0cmFpbiBhdXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJl IG92ZXJsb2FkZWQgd2l0aH0ge1Byb2JhYmx5IHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0q LSogfSB9CisKKyAgdm9pZCBmX3hzX2RjcmVmKHRoaXMgYXV0byBjb25zdCYsIENvbnN0cmFpbiBh dXRvKSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0ge1Byb2JhYmx5IHdl bGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfZGNy ZWYoQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRl ZCB3aXRofSB7UHJvYmFibHkgd2VsbCBmb3JtZWQ/IFRCRH0geyB4ZmFpbCAqLSotKiB9IH0KKwor ICB2b2lkIGZfeHNfZGZ3ZHJlZih0aGlzIGF1dG8mJiwgQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7 IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB7UHJvYmFibHkgd2VsbCBmb3JtZWQ/IFRC RH0geyB4ZmFpbCAqLSotKiB9IH0KKyAgc3RhdGljIHZvaWQgZl94c19kZndkcmVmKENvbnN0cmFp biBhdXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0ge1By b2JhYmx5IHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9CisKKy8vIHN0YXRpYy94 b2JqCisgIHN0YXRpYyB2b2lkIGZfc3hfdihDb25zdHJhaW4gYXV0bykge307IC8vIHsgZGctbm90 ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3N4X3YodGhpcyBTLCBDb25zdHJh aW4gYXV0bykge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0K KworICBzdGF0aWMgdm9pZCBmX3N4X3JlZihDb25zdHJhaW4gYXV0bykge307IC8vIHsgZGctbm90 ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3N4X3JlZih0aGlzIFMmLCBDb25z dHJhaW4gYXV0bykge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9 IH0KKworICBzdGF0aWMgdm9pZCBmX3N4X2NyZWYoQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRn LW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQgZl9zeF9jcmVmKHRoaXMgUyBj b25zdCYsIENvbnN0cmFpbiBhdXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJs b2FkZWQgd2l0aH0gfQorCisgIHN0YXRpYyB2b2lkIGZfc3hfcnJlZihDb25zdHJhaW4gYXV0bykg e307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3N4X3Jy ZWYodGhpcyBTJiYsIENvbnN0cmFpbiBhdXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJl IG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHN0YXRpYyB2b2lkIGZfc3hfY3JyZWYoQ29uc3RyYWlu IGF1dG8pIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQg Zl9zeF9jcnJlZih0aGlzIFMgY29uc3QmJiwgQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLWVy cm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgc3RhdGljIHZvaWQgZl9zeF9k dihDb25zdHJhaW4gYXV0bykge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259 IHtQcm9iYWJseSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorICB2b2lkIGZf c3hfZHYodGhpcyBhdXRvLCBDb25zdHJhaW4gYXV0bykge307IC8vIHsgZGctZXJyb3Ige2Nhbm5v dCBiZSBvdmVybG9hZGVkIHdpdGh9IHtQcm9iYWJseSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWls ICotKi0qIH0gfQorCisgIHN0YXRpYyB2b2lkIGZfc3hfZGNyZWYoQ29uc3RyYWluIGF1dG8pIHt9 OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB7UHJvYmFibHkgd2VsbCBmb3Jt ZWQ/IFRCRH0geyB4ZmFpbCAqLSotKiB9IH0KKyAgdm9pZCBmX3N4X2RjcmVmKHRoaXMgYXV0byBj b25zdCYsIENvbnN0cmFpbiBhdXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJs b2FkZWQgd2l0aH0ge1Byb2JhYmx5IHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9 CisKKyAgc3RhdGljIHZvaWQgZl9zeF9kZndkcmVmKENvbnN0cmFpbiBhdXRvKSB7fTsgLy8geyBk Zy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0ge1Byb2JhYmx5IHdlbGwgZm9ybWVkPyBUQkR9 IHsgeGZhaWwgKi0qLSogfSB9CisgIHZvaWQgZl9zeF9kZndkcmVmKHRoaXMgYXV0byYmLCBDb25z dHJhaW4gYXV0bykge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9 IHtQcm9iYWJseSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorCisgIC8vIGlv YmoveG9iagorICB2b2lkIGZfaXhfbHJlZihDb25zdHJhaW4gYXV0bykge307IC8vIHsgZGctbm90 ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX2l4X2xyZWYodGhpcyBTJiwgQ29u c3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRo fSB9CisKKyAgdm9pZCBmX2l4X3JyZWYoQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLW5vdGUg e3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQgZl9peF9ycmVmKHRoaXMgUyYmLCBDb25z dHJhaW4gYXV0bykge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9 IH0KKworICB2b2lkIGZfaXhfY29uc3RfbHJlZihDb25zdHJhaW4gYXV0bykgY29uc3Qge307IC8v IHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX2l4X2NvbnN0X2xy ZWYodGhpcyBTIGNvbnN0JiwgQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5u b3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX2l4X2NvbnN0X3JyZWYoQ29uc3Ry YWluIGF1dG8pIGNvbnN0IHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9 CisgIHZvaWQgZl9peF9jb25zdF9ycmVmKHRoaXMgUyBjb25zdCYmLCBDb25zdHJhaW4gYXV0bykg e307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKyAgCisgIC8v IHhvYmovaW9iagorICB2b2lkIGZfeGlfbHJlZih0aGlzIFMmLCBDb25zdHJhaW4gYXV0bykge307 IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3hpX2xyZWYo Q29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3 aXRofSB9CisKKyAgdm9pZCBmX3hpX3JyZWYodGhpcyBTJiYsIENvbnN0cmFpbiBhdXRvKSB7fTsg Ly8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICB2b2lkIGZfeGlfcnJlZihD b25zdHJhaW4gYXV0bykge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdp dGh9IH0KKworICB2b2lkIGZfeGlfY29uc3RfbHJlZih0aGlzIFMgY29uc3QmLCBDb25zdHJhaW4g YXV0bykge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBm X3hpX2NvbnN0X2xyZWYoQ29uc3RyYWluIGF1dG8pIGNvbnN0IHt9OyAvLyB7IGRnLWVycm9yIHtj YW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX3hpX2NvbnN0X3JyZWYodGhp cyBTIGNvbnN0JiYsIENvbnN0cmFpbiBhdXRvKSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBk ZWNsYXJhdGlvbn0gfQorICB2b2lkIGZfeGlfY29uc3RfcnJlZihDb25zdHJhaW4gYXV0bykgY29u c3Qge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICAv LyB3aXRoIHJlZiBxdWFsaWZpZXIKKworICAvLyBpb2JqL3hvYmoKKyAgdm9pZCBmX2l4X2xyZWZf cmVmcXVhbChDb25zdHJhaW4gYXV0bykgJiB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNs YXJhdGlvbn0gfQorICB2b2lkIGZfaXhfbHJlZl9yZWZxdWFsKHRoaXMgUyYsIENvbnN0cmFpbiBh dXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisg IHZvaWQgZl9peF9ycmVmX3JlZnF1YWwoQ29uc3RyYWluIGF1dG8pICYmIHt9OyAvLyB7IGRnLW5v dGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQgZl9peF9ycmVmX3JlZnF1YWwodGhp cyBTJiYsIENvbnN0cmFpbiBhdXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJs b2FkZWQgd2l0aH0gfQorCisgIHZvaWQgZl9peF9jb25zdF9scmVmX3JlZnF1YWwoQ29uc3RyYWlu IGF1dG8pIGNvbnN0JiB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQor ICB2b2lkIGZfaXhfY29uc3RfbHJlZl9yZWZxdWFsKHRoaXMgUyBjb25zdCYsIENvbnN0cmFpbiBh dXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisg IHZvaWQgZl9peF9jb25zdF9ycmVmX3JlZnF1YWwoQ29uc3RyYWluIGF1dG8pIGNvbnN0JiYge307 IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX2l4X2NvbnN0 X3JyZWZfcmVmcXVhbCh0aGlzIFMgY29uc3QmJiwgQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRn LWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisgIAorICAvLyB4b2JqL2lvYmoK KyAgdm9pZCBmX3hpX2xyZWZfcmVmcXVhbCh0aGlzIFMmLCBDb25zdHJhaW4gYXV0bykge307IC8v IHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3hpX2xyZWZfcmVm cXVhbChDb25zdHJhaW4gYXV0bykgJiB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJs b2FkZWQgd2l0aH0gfQorCisgIHZvaWQgZl94aV9ycmVmX3JlZnF1YWwodGhpcyBTJiYsIENvbnN0 cmFpbiBhdXRvKSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICB2 b2lkIGZfeGlfcnJlZl9yZWZxdWFsKENvbnN0cmFpbiBhdXRvKSAmJiB7fTsgLy8geyBkZy1lcnJv ciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHZvaWQgZl94aV9jb25zdF9scmVm X3JlZnF1YWwodGhpcyBTIGNvbnN0JiwgQ29uc3RyYWluIGF1dG8pIHt9OyAvLyB7IGRnLW5vdGUg e3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQgZl94aV9jb25zdF9scmVmX3JlZnF1YWwo Q29uc3RyYWluIGF1dG8pIGNvbnN0JiB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJs b2FkZWQgd2l0aH0gfQorCisgIHZvaWQgZl94aV9jb25zdF9ycmVmX3JlZnF1YWwodGhpcyBTIGNv bnN0JiYsIENvbnN0cmFpbiBhdXRvKSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJh dGlvbn0gfQorICB2b2lkIGZfeGlfY29uc3RfcnJlZl9yZWZxdWFsKENvbnN0cmFpbiBhdXRvKSBj b25zdCYmIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9Cit9 OworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot cmVkZWNsLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotcmVkZWNs LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdmY2ZjYzMxYzMwCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LXJlZGVjbC5DCkBAIC0wLDAgKzEsMjQ2IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBp bGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIHJlZGVjbGFyYXRpb25zIG9mIHhvYmovaW9iaiBt ZW1iZXIgZnVuY3Rpb25zIHdoZXJlIHRoZSBpb2JqIG1lbWJlciBmdW5jdGlvbgorLy8gaXMgbm90 IHJlZiBxdWFsaWZpZWQKKworLy8gaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBjaGVjayBmb3Ig dGhlIGludmVyc2UgaW4gdGhpcyB0ZXN0ICg3IGlvYmosIDEgeG9iaikKKy8vIGJlY2F1c2UgeW91 IGFyZSBub3QgYWxsb3dlZCB0byBvdmVybG9hZCBpb2JqIG1lbWJlciBmdW5jdGlvbnMgd2l0aG91 dCByZWYgcXVhbGlmaWVycworLy8gd2l0aCBpb2JqIG1lbWJlciBmdW5jdGlvbnMgdGhhdCBkbyAo YW5kIHZpY2UgdmVyc2EpCisKKy8vIGlvYmogZmlyc3QKKworc3RydWN0IFMwIHsKKyAgdm9pZCBm MCgpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjAodGhp cyBTMCAmJik7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKyAg dm9pZCBmMCh0aGlzIFMwIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRo aXMgUzAgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRoaXMgUzAgdm9s YXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMCB2b2xhdGlsZSYm KTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYp OyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMCh0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJiYp OyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGYxKCk7IC8vIHsgZGctbm90ZSAicHJldmlv dXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmMSh0aGlzIFMwICYpOyAvLyB7IGRnLWVycm9yICJj YW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZjEodGhpcyBTMCBjb25zdCYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMwIGNvbnN0JiYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMwIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIg fQorICB2b2lkIGYxKHRoaXMgUzAgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2 b2lkIGYxKHRoaXMgUzAgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZv aWQgZjEodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAg dm9pZCBmYzAoKSBjb25zdDsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQor ICB2b2lkIGZjMCh0aGlzIFMwICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzAodGhp cyBTMCAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMwIGNvbnN0JiYp OyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZmMw KHRoaXMgUzAgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMg UzAgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMwIGNv bnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMwIGNv bnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGZjMSgpIGNvbnN0 OyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmMxKHRoaXMg UzAgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMwICYmKTsgLy8geyBk Zy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRoaXMgUzAgY29uc3QmKTsgLy8geyBkZy1lcnJvciAi Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorICB2b2lkIGZjMSh0aGlzIFMwIHZvbGF0aWxl Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMwIHZvbGF0aWxlJiYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYmKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmdjAoKSB2b2xhdGlsZTsgLy8geyBkZy1ub3Rl ICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZ2MCh0aGlzIFMwICYpOyAvLyB7IGRn LWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBTMCAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQor ICB2b2lkIGZ2MCh0aGlzIFMwIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2 MCh0aGlzIFMwIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBT MCB2b2xhdGlsZSYmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIg fQorICB2b2lkIGZ2MCh0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIg fQorICB2b2lkIGZ2MCh0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIi IH0KKworICB2b2lkIGZ2MSgpIHZvbGF0aWxlOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xh cmF0aW9uIiB9CisgIHZvaWQgZnYxKHRoaXMgUzAgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2 b2lkIGZ2MSh0aGlzIFMwICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMg UzAgY29uc3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMgUzAgY29uc3Qm Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMwIHZvbGF0aWxlJik7IC8v IHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKyAgdm9pZCBmdjEodGhp cyBTMCBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEodGhp cyBTMCBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmY3Yw KCkgY29uc3Qgdm9sYXRpbGU7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0K KyAgdm9pZCBmY3YwKHRoaXMgUzAgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAo dGhpcyBTMCAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMCBjb25z dCYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzAgY29uc3QmJik7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMCB2b2xhdGlsZSYpOyAvLyB7IGRn LWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzAgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1l cnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZmN2MSgpIGNvbnN0 IHZvbGF0aWxlOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQg ZmN2MSh0aGlzIFMwICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzAg JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzAgY29uc3QmKTsgLy8g eyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMwIGNvbnN0JiYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzAgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAi IiB9CisgIHZvaWQgZmN2MSh0aGlzIFMwIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmY3YxKHRoaXMgUzAgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1lcnJvciAiY2Fu bm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorfTsKKworLy8gaW9iaiBsYXN0CisKK3N0cnVjdCBT MSB7CisgIHZvaWQgZjAodGhpcyBTMSAmJik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFy YXRpb24iIH0KKyAgdm9pZCBmMCh0aGlzIFMxIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQor ICB2b2lkIGYwKHRoaXMgUzEgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYw KHRoaXMgUzEgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBT MSB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMSBjb25z dCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMCh0aGlzIFMxIGNvbnN0 IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMCgpOyAvLyB7IGRnLWVy cm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBmMSh0aGlzIFMxICYp OyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjEodGhpcyBT MSBjb25zdCYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMxIGNvbnN0JiYp OyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMxIHZvbGF0aWxlJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRoaXMgUzEgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGYxKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1 cyAiIiB9CisgIHZvaWQgZjEodGhpcyBTMSBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1 cyAiIiB9CisgIHZvaWQgZjEoKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQg d2l0aCIgfQorCisgIHZvaWQgZmMwKHRoaXMgUzEgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2 b2lkIGZjMCh0aGlzIFMxICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMg UzEgY29uc3QmJik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9p ZCBmYzAodGhpcyBTMSB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzAo dGhpcyBTMSB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMg UzEgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMg UzEgY29uc3Qgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCgpIGNv bnN0OyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9p ZCBmYzEodGhpcyBTMSAmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRoaXMgUzEg JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMSBjb25zdCYpOyAvLyB7 IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmMxKHRoaXMgUzEgdm9s YXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRoaXMgUzEgdm9sYXRpbGUm Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMxIGNvbnN0IHZvbGF0aWxl Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMxIGNvbnN0IHZvbGF0aWxl JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzEoKSBjb25zdDsgLy8geyBkZy1lcnJv ciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZnYwKHRoaXMgUzEgJik7 IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMxICYmKTsgLy8geyBkZy1ib2d1 cyAiIiB9CisgIHZvaWQgZnYwKHRoaXMgUzEgY29uc3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZnYwKHRoaXMgUzEgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2 MCh0aGlzIFMxIHZvbGF0aWxlJiYpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9u IiB9CisgIHZvaWQgZnYwKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAi IiB9CisgIHZvaWQgZnYwKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMg IiIgfQorICB2b2lkIGZ2MCgpIHZvbGF0aWxlOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3Zl cmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBmdjEodGhpcyBTMSAmKTsgLy8geyBkZy1ib2d1cyAi IiB9CisgIHZvaWQgZnYxKHRoaXMgUzEgJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBm djEodGhpcyBTMSBjb25zdCYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEodGhpcyBT MSBjb25zdCYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMgUzEgdm9sYXRp bGUmKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZ2MSh0 aGlzIFMxIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0 aGlzIFMxIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEo KSB2b2xhdGlsZTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQor CisgIHZvaWQgZmN2MCh0aGlzIFMxICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3Yw KHRoaXMgUzEgJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzEgY29u c3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMxIGNvbnN0JiYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzEgdm9sYXRpbGUmKTsgLy8geyBk Zy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMxIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmJik7IC8vIHsgZGct bm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9sYXRp bGU7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lk IGZjdjEodGhpcyBTMSAmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMx ICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMxIGNvbnN0Jik7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMSBjb25zdCYmKTsgLy8geyBkZy1i b2d1cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMxIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMg IiIgfQorICB2b2lkIGZjdjEodGhpcyBTMSB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisgIHZvaWQgZmN2MSh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctbm90ZSAicHJl dmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmY3YxKCkgY29uc3Qgdm9sYXRpbGU7IC8vIHsg ZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KK307CisKKy8vIGluIG9yZGVy IChpb2JqIHJlcGxhY2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBpbiBlYWNoIGdyb3VwKQorLy8g bHZhbHVlIHJlZiB0byBTCisvLyBydmFsdWUgcmVmIHRvIFMKKy8vIGx2YWx1ZSBjIHJlZiB0byBT CisvLyBydmFsdWUgYyByZWYgdG8gUworLy8gbHZhbHVlIHYgcmVmIHRvIFMKKy8vIHJ2YWx1ZSB2 IHJlZiB0byBTCisvLyBsdmFsdWUgY3YgcmVmIHRvIFMKKy8vIHJ2YWx1ZSBjdiByZWYgdG8gUwor CitzdHJ1Y3QgUzIgeworICB2b2lkIGYwKCk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFy YXRpb24iIH0KKyAgdm9pZCBmMCh0aGlzIFMyICYmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJl IG92ZXJsb2FkZWQgd2l0aCIgfQorICB2b2lkIGYwKHRoaXMgUzIgY29uc3QmKTsgLy8geyBkZy1i b2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMiBjb25zdCYmKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisgIHZvaWQgZjAodGhpcyBTMiB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9p ZCBmMCh0aGlzIFMyIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMCh0 aGlzIFMyIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRo aXMgUzIgY29uc3Qgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZjEo dGhpcyBTMiAmKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lk IGYxKCk7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKyAgdm9p ZCBmMSh0aGlzIFMyIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRoaXMg UzIgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRoaXMgUzIgdm9sYXRp bGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjEodGhpcyBTMiB2b2xhdGlsZSYmKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjEodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJiYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGZjMCh0aGlzIFMyICYpOyAvLyB7IGRnLWJvZ3Vz ICIiIH0KKyAgdm9pZCBmYzAodGhpcyBTMiAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lk IGZjMCgpIGNvbnN0OyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZv aWQgZmMwKHRoaXMgUzIgY29uc3QmJik7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9h ZGVkIHdpdGgiIH0KKyAgdm9pZCBmYzAodGhpcyBTMiB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3Vz ICIiIH0KKyAgdm9pZCBmYzAodGhpcyBTMiB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisgIHZvaWQgZmMwKHRoaXMgUzIgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisgIHZvaWQgZmMwKHRoaXMgUzIgY29uc3Qgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIg fQorCisgIHZvaWQgZmMxKHRoaXMgUzIgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZj MSh0aGlzIFMyICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRoaXMgUzIgY29u c3QmKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZjMSgp IGNvbnN0OyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZv aWQgZmMxKHRoaXMgUzIgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMx KHRoaXMgUzIgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlz IFMyIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlz IFMyIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGZ2MCh0 aGlzIFMyICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBTMiAmJik7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMyIGNvbnN0Jik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMyIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmdjAoKSB2b2xhdGlsZTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlv biIgfQorICB2b2lkIGZ2MCh0aGlzIFMyIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWVycm9yICJjYW5u b3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZnYwKHRoaXMgUzIgY29uc3Qgdm9sYXRp bGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYwKHRoaXMgUzIgY29uc3Qgdm9sYXRp bGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZnYxKHRoaXMgUzIgJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMyICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisgIHZvaWQgZnYxKHRoaXMgUzIgY29uc3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQg ZnYxKHRoaXMgUzIgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlz IFMyIHZvbGF0aWxlJik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAg dm9pZCBmdjEoKSB2b2xhdGlsZTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQg d2l0aCIgfQorICB2b2lkIGZ2MSh0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKworICB2b2lkIGZjdjAodGhpcyBTMiAmKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZmN2MCh0aGlzIFMyICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0 aGlzIFMyIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMiBj b25zdCYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMyIHZvbGF0aWxl Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMiB2b2xhdGlsZSYmKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCgpIGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRn LW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMyIGNvbnN0 IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9 CisKKyAgdm9pZCBmY3YxKHRoaXMgUzIgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZj djEodGhpcyBTMiAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMiBj b25zdCYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzIgY29uc3QmJik7 IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMiB2b2xhdGlsZSYpOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzIgdm9sYXRpbGUmJik7IC8vIHsgZGct Ym9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRn LW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0 aWxlOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9Cit9OworCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotcmVkZWNs Mi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXJlZGVjbDIuQwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWRiNmFlNWEzODAKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotcmVk ZWNsMi5DCkBAIC0wLDAgKzEsMTYxIEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUg eyB0YXJnZXQgYysrMjMgfSB9CisvLyB7IGRnLW9wdGlvbnMgIi1wZWRhbnRpYy1lcnJvcnMgLVdu by12b2xhdGlsZSIgfQorCisvLyByZWplY3RpbmcgcmVkZWNsYXJhdGlvbnMgb2YgYnktdmFsdWUg eG9iaiBtZW1iZXIgZnVuY3Rpb25zCisvLyBhcyBpb2JqIG1lbWJlciBmdW5jdGlvbnMgdGhhdCBh cmUgbm90IHJlZiBxdWFsaWZpZWQgKGFuZCB2aWNlLXZlcnNhKQorLy8gYWxzbyBjaGVjayB0aGF0 IHZhbGlkIG92ZXJsb2FkcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCBkaWFnbm9zdGljCisKKy8vICBp b2JqIHwgIHhvYmogIHwgIE1TVkMgfCBjbGFuZyB8IElTT0MrKworLy8gIG5vbmUgfCAgbm9uZSAg fCAgIFggICB8ICAgWCAgIHwgICBYCisvLyAgbm9uZSB8ICAgICBjICB8ICAgWCAgIHwgICBPICAg fCAgIFgKKy8vICBub25lIHwgICAgIHYgIHwgICBYICAgfCAgIE8gICB8ICAgWAorLy8gIG5vbmUg fCAgICBjdiAgfCAgIFggICB8ICAgTyAgIHwgICBYCisvLyAgICAgYyB8ICBub25lICB8ICAgTyAg IHwgICBPICAgfCAgIE8KKy8vICAgICBjIHwgICAgIGMgIHwgICBPICAgfCAgIFggICB8ICAgTwor Ly8gICAgIGMgfCAgICAgdiAgfCAgIE8gICB8ICAgTyAgIHwgICBPCisvLyAgICAgYyB8ICAgIGN2 ICB8ICAgTyAgIHwgICBPICAgfCAgIE8KKy8vICAgICB2IHwgIG5vbmUgIHwgICBPICAgfCAgIE8g ICB8ICAgTworLy8gICAgIHYgfCAgICAgYyAgfCAgIE8gICB8ICAgTyAgIHwgICBPCisvLyAgICAg diB8ICAgICB2ICB8ICAgTyAgIHwgICBYICAgfCAgIE8KKy8vICAgICB2IHwgICAgY3YgIHwgICBP ICAgfCAgIE8gICB8ICAgTworLy8gICAgY3YgfCAgbm9uZSAgfCAgIE8gICB8ICAgTyAgIHwgICBP CisvLyAgICBjdiB8ICAgICBjICB8ICAgTyAgIHwgICBPICAgfCAgIE8KKy8vICAgIGN2IHwgICAg IHYgIHwgICBPICAgfCAgIE8gICB8ICAgTworLy8gICAgY3YgfCAgICBjdiAgfCAgIE8gICB8ICAg WCAgIHwgICBPCisKKy8qIFRvcC1sZXZlbCBjdiBxdWFsaWZpZXJzIGFyZSBzdXBwb3NlZCB0byBi ZSBkaXNjYXJkZWQgZnJvbQorICAgdGhlIHBhcmFtZXRlcnMgb2YgYSBmdW5jdGlvbiBkZWNsYXJh dGlvbi4KKyAgICAgCisgICBbZGNsLmZjdC41XQorICAgQWZ0ZXIgcHJvZHVjaW5nIHRoZSBsaXN0 IG9mIHBhcmFtZXRlciB0eXBlcywgYW55IHRvcC1sZXZlbAorICAgY3YtcXVhbGlmaWVycyBtb2Rp ZnlpbmcgYSBwYXJhbWV0ZXIgdHlwZSBhcmUgZGVsZXRlZCB3aGVuIGZvcm1pbmcKKyAgIHRoZSBm dW5jdGlvbiB0eXBlLgorCisgICBBY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkLCB0aGUgdHlwZSBv ZiBhbiBpbXBsaWNpdCBvYmplY3QgcGFyYW1ldGVyCisgICBpcyBhbHdheXMgYSByZWZlcmVuY2Uu IFRoaXMgaXNuJ3QgcmVmbGVjdGVkIGluIEdDQyBidXQgd2Ugc3RpbGwgbmVlZAorICAgdG8gdGFr ZSB0aGlzIHJ1bGUgaW50byBhY2NvdW50IGhlcmUuCisKKyAgIFtvdmVyLm1hdGNoLmZ1bmNzLmdl bmVyYWwuNF0KKyAgIEZvciBpbXBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9ucywgdGhlIHR5 cGUgb2YgdGhlIGltcGxpY2l0CisgICBvYmplY3QgcGFyYW1ldGVyIGlzCisgICAtLSDigJxsdmFs dWUgcmVmZXJlbmNlIHRvIGN2IFjigJ0gZm9yIGZ1bmN0aW9ucyBkZWNsYXJlZAorICAgICAgd2l0 aG91dCBhIHJlZi1xdWFsaWZpZXIgb3Igd2l0aCB0aGUgJiByZWYtcXVhbGlmaWVyCisgICAtLSDi gJxydmFsdWUgcmVmZXJlbmNlIHRvIGN2IFjigJ0gZm9yIGZ1bmN0aW9ucyBkZWNsYXJlZCB3aXRo CisgICAgICB0aGUgJiYgcmVmLXF1YWxpZmllcgorICAgIAorICAgV2hlbiBjb21wYXJpbmcgYW4g aW9iaiBhbmQgeG9iaiBtZW1iZXIgZnVuY3Rpb24gdG8gc2VlIGlmIHRoZXkgYXJlCisgICByZWRl Y2xhcmF0aW9ucyB3ZSB0cmVhdCB0aGVtIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiBpZiB0aGUg aW9iagorICAgbWVtYmVyIGZ1bmN0aW9uIGhhcyBhIHJlZiBxdWFsaWZpZXIgb3Igbm90LgorICAg SWYgdGhlIGlvYmogbWVtYmVyIGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgYSByZWYgcXVhbGlmaWVy LCB3ZSBuZWVkIHRvCisgICBzdHJpcCB0aGUgdG9wLWxldmVsIHJlZmVyZW5jZXMgYmVmb3JlIGNv bXBhcmluZyB0aGVtLgorCisgICBbYmFzaWMuc2NvcGUuc2NvcGUuM10KKyAgIFR3byBub24tc3Rh dGljIG1lbWJlciBmdW5jdGlvbnMgaGF2ZSBjb3JyZXNwb25kaW5nIG9iamVjdAorICAgcGFyYW1l dGVycyBpZjoKKyAgIC0tIGV4YWN0bHkgb25lIGlzIGFuIGltcGxpY2l0IG9iamVjdCBtZW1iZXIg ZnVuY3Rpb24gd2l0aCBubworICAgICAgcmVmLXF1YWxpZmllciBhbmQgdGhlIHR5cGVzIG9mIHRo ZWlyIG9iamVjdCBwYXJhbWV0ZXJzCisgICAgICAoW2RjbC5mY3RdKSwgYWZ0ZXIgcmVtb3Zpbmcg dG9wLWxldmVsIHJlZmVyZW5jZXMsIGFyZSB0aGUKKyAgICAgIHNhbWUsIG9yCisgICAtLSB0aGVp ciBvYmplY3QgcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIHR5cGUuICovCisKK3N0cnVjdCBTIHsK KyAgdm9pZCBmMCgpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZv aWQgZjAodGhpcyBTKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIg fQorCisgIHZvaWQgZjEoKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQor ICB2b2lkIGYxKHRoaXMgUyBjb25zdCk7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9h ZGVkIHdpdGgiIH0KKworICB2b2lkIGYyKCk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFy YXRpb24iIH0KKyAgdm9pZCBmMih0aGlzIFMgdm9sYXRpbGUpOyAvLyB7IGRnLWVycm9yICJjYW5u b3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBmMygpOyAvLyB7IGRnLW5vdGUgInBy ZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjModGhpcyBTIGNvbnN0IHZvbGF0aWxlKTsg Ly8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZmMw KCkgY29uc3Q7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMpOyAvLyB7IGRn LWJvZ3VzICIiIH0KKworICB2b2lkIGZjMSgpIGNvbnN0OyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAg dm9pZCBmYzEodGhpcyBTIGNvbnN0KTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmYzIo KSBjb25zdDsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMyKHRoaXMgUyB2b2xhdGlsZSk7 IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZmMzKCkgY29uc3Q7IC8vIHsgZGctYm9ndXMg IiIgfQorICB2b2lkIGZjMyh0aGlzIFMgY29uc3Qgdm9sYXRpbGUpOyAvLyB7IGRnLWJvZ3VzICIi IH0KKworICB2b2lkIGZ2MCgpIHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBm djAodGhpcyBTKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmdjEoKSB2b2xhdGlsZTsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMgUyBjb25zdCk7IC8vIHsgZGctYm9n dXMgIiIgfQorCisgIHZvaWQgZnYyKCkgdm9sYXRpbGU7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2 b2lkIGZ2Mih0aGlzIFMgdm9sYXRpbGUpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGZ2 MygpIHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjModGhpcyBTIGNvbnN0 IHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9s YXRpbGU7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTKTsgLy8geyBkZy1i b2d1cyAiIiB9CisKKyAgdm9pZCBmY3YxKCkgY29uc3Qgdm9sYXRpbGU7IC8vIHsgZGctYm9ndXMg IiIgfQorICB2b2lkIGZjdjEodGhpcyBTIGNvbnN0KTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAg dm9pZCBmY3YyKCkgY29uc3Qgdm9sYXRpbGU7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZj djIodGhpcyBTIHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmY3YzKCkg Y29uc3Qgdm9sYXRpbGU7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjModGhpcyBTIGNv bnN0IHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgLy8gc2FtZSBhcyB0aGUgYWJv dmUgZiBjYXNlcyBleGNlcHQgcmV2ZXJzZWQKKworICB2b2lkIGcwKHRoaXMgUyk7IC8vIHsgZGct bm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBnMCgpOyAvLyB7IGRnLWVycm9y ICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBnMSh0aGlzIFMgY29uc3Qp OyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZzEoKTsgLy8g eyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZzIodGhp cyBTIHZvbGF0aWxlKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2 b2lkIGcyKCk7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKwor ICB2b2lkIGczKHRoaXMgUyBjb25zdCB2b2xhdGlsZSk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMg ZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBnMygpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3Zl cmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBnYzAodGhpcyBTKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisgIHZvaWQgZ2MwKCkgY29uc3Q7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZ2MxKHRo aXMgUyBjb25zdCk7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGdjMSgpIGNvbnN0OyAvLyB7 IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGdjMih0aGlzIFMgdm9sYXRpbGUpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBnYzIoKSBjb25zdDsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9p ZCBnYzModGhpcyBTIGNvbnN0IHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQg Z2MzKCkgY29uc3Q7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZ3YwKHRoaXMgUyk7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGd2MCgpIHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIi IH0KKworICB2b2lkIGd2MSh0aGlzIFMgY29uc3QpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9p ZCBndjEoKSB2b2xhdGlsZTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBndjIodGhpcyBT IHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZ3YyKCkgdm9sYXRpbGU7IC8v IHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZ3YzKHRoaXMgUyBjb25zdCB2b2xhdGlsZSk7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGd2MygpIHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIi IH0KKworICB2b2lkIGdjdjAodGhpcyBTKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZ2N2 MCgpIGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGdjdjEodGhp cyBTIGNvbnN0KTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZ2N2MSgpIGNvbnN0IHZvbGF0 aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGdjdjIodGhpcyBTIHZvbGF0aWxlKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZ2N2MigpIGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRn LWJvZ3VzICIiIH0KKworICB2b2lkIGdjdjModGhpcyBTIGNvbnN0IHZvbGF0aWxlKTsgLy8geyBk Zy1ib2d1cyAiIiB9CisgIHZvaWQgZ2N2MygpIGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3Vz ICIiIH0KK307CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1yZWRlY2wzLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotcmVkZWNsMy5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45OTQy ZDZlMjZmOAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1yZWRlY2wzLkMKQEAgLTAsMCArMSwyNjMgQEAKKy8vIFAwODQ3UjcKKy8vIHsg ZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVkZWNsYXJhdGlvbnMgb2Yg eG9iaiBtZW1iZXIgZnVuY3Rpb25zIGFzIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIGFuZCB2aWNl IHZlcnNhCisKKy8vIG5vdGUsIHRoZSBkZWR1Y2VkIHhvYmogcGFyYW1ldGVyIGNhc2VzIHNob3Vs ZCBwcm9iYWJseSBiZSByZW1vdmVkCisvLyBJIHN0aWxsIG5lZWQgY2xhcmlmaWNhdGlvbiBvbiB3 aGF0IHRoZSBjb3JyZWN0IGJlaGF2aW9yIHNob3VsZCBiZSBoZXJlLgorCitzdHJ1Y3QgUyB7Cisv LyBubyBhZGRpdGlvbmFsIHBhcmFtcworICB2b2lkIGZfeHNfdih0aGlzIFMpIHt9OyAvLyB7IGRn LW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfdigpIHt9 OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBm X3hzX3JlZih0aGlzIFMmKSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0g fQorICBzdGF0aWMgdm9pZCBmX3hzX3JlZigpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUg b3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX2NyZWYodGhpcyBTIGNvbnN0Jikge307 IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgc3RhdGljIHZvaWQgZl94 c19jcmVmKCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0K KworICB2b2lkIGZfeHNfcnJlZih0aGlzIFMmJikge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMg ZGVjbGFyYXRpb259IH0KKyAgc3RhdGljIHZvaWQgZl94c19ycmVmKCkge307IC8vIHsgZGctZXJy b3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICB2b2lkIGZfeHNfY3JyZWYodGhp cyBTIGNvbnN0JiYpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9Cisg IHN0YXRpYyB2b2lkIGZfeHNfY3JyZWYoKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92 ZXJsb2FkZWQgd2l0aH0gfQorCisgIHZvaWQgZl94c19kdih0aGlzIGF1dG8pIHt9OyAvLyB7IGRn LW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB7TWF5YmUgd2VsbCBmb3JtZWQ/IFRCRH0geyB4 ZmFpbCAqLSotKiB9IH0KKyAgc3RhdGljIHZvaWQgZl94c19kdigpIHt9OyAvLyB7IGRnLWVycm9y IHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB7TWF5YmUgd2VsbCBmb3JtZWQ/IFRCRH0geyB4 ZmFpbCAqLSotKiB9IH0KKworICB2b2lkIGZfeHNfZGNyZWYodGhpcyBhdXRvIGNvbnN0Jikge307 IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IHtNYXliZSB3ZWxsIGZvcm1lZD8g VEJEfSB7IHhmYWlsICotKi0qIH0gfQorICBzdGF0aWMgdm9pZCBmX3hzX2RjcmVmKCkge307IC8v IHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IHtNYXliZSB3ZWxsIGZvcm1l ZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorCisgIHZvaWQgZl94c19kZndkcmVmKHRoaXMgYXV0 byYmKSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0ge01heWJlIHdlbGwg Zm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfZGZ3ZHJl ZigpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB7TWF5YmUg d2VsbCBmb3JtZWQ/IFRCRH0geyB4ZmFpbCAqLSotKiB9IH0KKworLy8gcmV2ZXJzZWQKKyAgc3Rh dGljIHZvaWQgZl9zeF92KCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259 IH0KKyAgdm9pZCBmX3N4X3YodGhpcyBTKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92 ZXJsb2FkZWQgd2l0aH0gfQorCisgIHN0YXRpYyB2b2lkIGZfc3hfcmVmKCkge307IC8vIHsgZGct bm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3N4X3JlZih0aGlzIFMmKSB7 fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHN0YXRp YyB2b2lkIGZfc3hfY3JlZigpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9u fSB9CisgIHZvaWQgZl9zeF9jcmVmKHRoaXMgUyBjb25zdCYpIHt9OyAvLyB7IGRnLWVycm9yIHtj YW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgc3RhdGljIHZvaWQgZl9zeF9ycmVmKCkg e307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3N4X3Jy ZWYodGhpcyBTJiYpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRo fSB9CisKKyAgc3RhdGljIHZvaWQgZl9zeF9jcnJlZigpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZp b3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQgZl9zeF9jcnJlZih0aGlzIFMgY29uc3QmJikge307 IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICBzdGF0aWMg dm9pZCBmX3N4X2R2KCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IHtN YXliZSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorICB2b2lkIGZfc3hfZHYo dGhpcyBhdXRvKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0g e01heWJlIHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9CisKKyAgc3RhdGljIHZv aWQgZl9zeF9kY3JlZigpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB7 TWF5YmUgd2VsbCBmb3JtZWQ/IFRCRH0geyB4ZmFpbCAqLSotKiB9IH0KKyAgdm9pZCBmX3N4X2Rj cmVmKHRoaXMgYXV0byBjb25zdCYpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3Zlcmxv YWRlZCB3aXRofSB7TWF5YmUgd2VsbCBmb3JtZWQ/IFRCRH0geyB4ZmFpbCAqLSotKiB9IH0KKwor ICBzdGF0aWMgdm9pZCBmX3N4X2Rmd2RyZWYoKSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBk ZWNsYXJhdGlvbn0ge01heWJlIHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9Cisg IHZvaWQgZl9zeF9kZndkcmVmKHRoaXMgYXV0byYmKSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90 IGJlIG92ZXJsb2FkZWQgd2l0aH0ge01heWJlIHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0q LSogfSB9CisKKy8vIG9uZSBhZGRpdGlvbmFsIHBhcmFtCisgIHZvaWQgZl94c192X2ludCh0aGlz IFMsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgc3Rh dGljIHZvaWQgZl94c192X2ludChpbnQpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3Zl cmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX3JlZl9pbnQodGhpcyBTJiwgaW50KSB7fTsg Ly8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICBzdGF0aWMgdm9pZCBmX3hz X3JlZl9pbnQoaW50KSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0 aH0gfQorCisgIHZvaWQgZl94c19jcmVmX2ludCh0aGlzIFMgY29uc3QmLCBpbnQpIHt9OyAvLyB7 IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfY3Jl Zl9pbnQoaW50KSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0g fQorCisgIHZvaWQgZl94c19ycmVmX2ludCh0aGlzIFMmJiwgaW50KSB7fTsgLy8geyBkZy1ub3Rl IHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICBzdGF0aWMgdm9pZCBmX3hzX3JyZWZfaW50KGlu dCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICB2 b2lkIGZfeHNfY3JyZWZfaW50KHRoaXMgUyBjb25zdCYmLCBpbnQpIHt9OyAvLyB7IGRnLW5vdGUg e3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfY3JyZWZfaW50KGlu dCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICB2 b2lkIGZfeHNfZHZfaW50KHRoaXMgYXV0bywgaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91 cyBkZWNsYXJhdGlvbn0ge01heWJlIHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9 CisgIHN0YXRpYyB2b2lkIGZfeHNfZHZfaW50KGludCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5v dCBiZSBvdmVybG9hZGVkIHdpdGh9IHtNYXliZSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICot Ki0qIH0gfQorCisgIHZvaWQgZl94c19kY3JlZl9pbnQodGhpcyBhdXRvIGNvbnN0JiwgaW50KSB7 fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0ge01heWJlIHdlbGwgZm9ybWVk PyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfZGNyZWZfaW50KGlu dCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IHtNYXliZSB3 ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorCisgIHZvaWQgZl94c19kZndkcmVm X2ludCh0aGlzIGF1dG8mJiwgaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJh dGlvbn0ge01heWJlIHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9CisgIHN0YXRp YyB2b2lkIGZfeHNfZGZ3ZHJlZl9pbnQoaW50KSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJl IG92ZXJsb2FkZWQgd2l0aH0ge01heWJlIHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSog fSB9CisKKy8vIHJldmVyc2VkCisgIHN0YXRpYyB2b2lkIGZfc3hfdl9pbnQoaW50KSB7fTsgLy8g eyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICB2b2lkIGZfc3hfdl9pbnQodGhp cyBTLCBpbnQpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9 CisKKyAgc3RhdGljIHZvaWQgZl9zeF9yZWZfaW50KGludCkge307IC8vIHsgZGctbm90ZSB7cHJl dmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3N4X3JlZl9pbnQodGhpcyBTJiwgaW50KSB7 fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHN0YXRp YyB2b2lkIGZfc3hfY3JlZl9pbnQoaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNs YXJhdGlvbn0gfQorICB2b2lkIGZfc3hfY3JlZl9pbnQodGhpcyBTIGNvbnN0JiwgaW50KSB7fTsg Ly8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHN0YXRpYyB2 b2lkIGZfc3hfcnJlZl9pbnQoaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJh dGlvbn0gfQorICB2b2lkIGZfc3hfcnJlZl9pbnQodGhpcyBTJiYsIGludCkge307IC8vIHsgZGct ZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICBzdGF0aWMgdm9pZCBmX3N4 X2NycmVmX2ludChpbnQpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9 CisgIHZvaWQgZl9zeF9jcnJlZl9pbnQodGhpcyBTIGNvbnN0JiYsIGludCkge307IC8vIHsgZGct ZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICBzdGF0aWMgdm9pZCBmX3N4 X2R2X2ludChpbnQpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB7TWF5 YmUgd2VsbCBmb3JtZWQ/IFRCRH0geyB4ZmFpbCAqLSotKiB9IH0KKyAgdm9pZCBmX3N4X2R2X2lu dCh0aGlzIGF1dG8sIGludCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVk IHdpdGh9IHtNYXliZSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorCisgIHN0 YXRpYyB2b2lkIGZfc3hfZGNyZWZfaW50KGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMg ZGVjbGFyYXRpb259IHtNYXliZSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQor ICB2b2lkIGZfc3hfZGNyZWZfaW50KHRoaXMgYXV0byBjb25zdCYsIGludCkge307IC8vIHsgZGct ZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IHtNYXliZSB3ZWxsIGZvcm1lZD8gVEJE fSB7IHhmYWlsICotKi0qIH0gfQorCisgIHN0YXRpYyB2b2lkIGZfc3hfZGZ3ZHJlZl9pbnQoaW50 KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0ge01heWJlIHdlbGwgZm9y bWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9CisgIHZvaWQgZl9zeF9kZndkcmVmX2ludCh0aGlz IGF1dG8mJiwgaW50KSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0 aH0ge01heWJlIHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZhaWwgKi0qLSogfSB9CisKKy8vIHR3byBh ZGRpdGlvbmFsIHBhcmFtcworICB2b2lkIGZfeHNfdl9pbnQyKHRoaXMgUywgaW50LCBpbnQpIHt9 OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHN0YXRpYyB2b2lkIGZf eHNfdl9pbnQyKGludCwgaW50KSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2Fk ZWQgd2l0aH0gfQorCisgIHZvaWQgZl94c19yZWZfaW50Mih0aGlzIFMmLCBpbnQsIGludCkge307 IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgc3RhdGljIHZvaWQgZl94 c19yZWZfaW50MihpbnQsIGludCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9h ZGVkIHdpdGh9IH0KKworICB2b2lkIGZfeHNfY3JlZl9pbnQyKHRoaXMgUyBjb25zdCYsIGludCwg aW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICBzdGF0aWMg dm9pZCBmX3hzX2NyZWZfaW50MihpbnQsIGludCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBi ZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICB2b2lkIGZfeHNfcnJlZl9pbnQyKHRoaXMgUyYmLCBp bnQsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgc3Rh dGljIHZvaWQgZl94c19ycmVmX2ludDIoaW50LCBpbnQpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5u b3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX2NycmVmX2ludDIodGhpcyBT IGNvbnN0JiYsIGludCwgaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlv bn0gfQorICBzdGF0aWMgdm9pZCBmX3hzX2NycmVmX2ludDIoaW50LCBpbnQpIHt9OyAvLyB7IGRn LWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX2R2X2lu dDIodGhpcyBhdXRvLCBpbnQsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFy YXRpb259IHtNYXliZSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorICBzdGF0 aWMgdm9pZCBmX3hzX2R2X2ludDIoaW50LCBpbnQpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3Qg YmUgb3ZlcmxvYWRlZCB3aXRofSB7TWF5YmUgd2VsbCBmb3JtZWQ/IFRCRH0geyB4ZmFpbCAqLSot KiB9IH0KKworICB2b2lkIGZfeHNfZGNyZWZfaW50Mih0aGlzIGF1dG8gY29uc3QmLCBpbnQsIGlu dCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IHtNYXliZSB3ZWxsIGZv cm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorICBzdGF0aWMgdm9pZCBmX3hzX2RjcmVmX2lu dDIoaW50LCBpbnQpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRo fSB7TWF5YmUgd2VsbCBmb3JtZWQ/IFRCRH0geyB4ZmFpbCAqLSotKiB9IH0KKworICB2b2lkIGZf eHNfZGZ3ZHJlZl9pbnQyKHRoaXMgYXV0byYmLCBpbnQsIGludCkge307IC8vIHsgZGctbm90ZSB7 cHJldmlvdXMgZGVjbGFyYXRpb259IHtNYXliZSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICot Ki0qIH0gfQorICBzdGF0aWMgdm9pZCBmX3hzX2Rmd2RyZWZfaW50MihpbnQsIGludCkge307IC8v IHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IHtNYXliZSB3ZWxsIGZvcm1l ZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorCisvLyByZXZlcnNlZAorICBzdGF0aWMgdm9pZCBm X3N4X3ZfaW50MihpbnQsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRp b259IH0KKyAgdm9pZCBmX3N4X3ZfaW50Mih0aGlzIFMsIGludCwgaW50KSB7fTsgLy8geyBkZy1l cnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHN0YXRpYyB2b2lkIGZfc3hf cmVmX2ludDIoaW50LCBpbnQpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9u fSB9CisgIHZvaWQgZl9zeF9yZWZfaW50Mih0aGlzIFMmLCBpbnQsIGludCkge307IC8vIHsgZGct ZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICBzdGF0aWMgdm9pZCBmX3N4 X2NyZWZfaW50MihpbnQsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRp b259IH0KKyAgdm9pZCBmX3N4X2NyZWZfaW50Mih0aGlzIFMgY29uc3QmLCBpbnQsIGludCkge307 IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICBzdGF0aWMg dm9pZCBmX3N4X3JyZWZfaW50MihpbnQsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMg ZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3N4X3JyZWZfaW50Mih0aGlzIFMmJiwgaW50LCBpbnQp IHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgc3Rh dGljIHZvaWQgZl9zeF9jcnJlZl9pbnQyKGludCwgaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2 aW91cyBkZWNsYXJhdGlvbn0gfQorICB2b2lkIGZfc3hfY3JyZWZfaW50Mih0aGlzIFMgY29uc3Qm JiwgaW50LCBpbnQpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRo fSB9CisKKyAgc3RhdGljIHZvaWQgZl9zeF9kdl9pbnQyKGludCwgaW50KSB7fTsgLy8geyBkZy1u b3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0ge01heWJlIHdlbGwgZm9ybWVkPyBUQkR9IHsgeGZh aWwgKi0qLSogfSB9CisgIHZvaWQgZl9zeF9kdl9pbnQyKHRoaXMgYXV0bywgaW50LCBpbnQpIHt9 OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB7TWF5YmUgd2VsbCBm b3JtZWQ/IFRCRH0geyB4ZmFpbCAqLSotKiB9IH0KKworICBzdGF0aWMgdm9pZCBmX3N4X2RjcmVm X2ludDIoaW50LCBpbnQpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB7 TWF5YmUgd2VsbCBmb3JtZWQ/IFRCRH0geyB4ZmFpbCAqLSotKiB9IH0KKyAgdm9pZCBmX3N4X2Rj cmVmX2ludDIodGhpcyBhdXRvIGNvbnN0JiwgaW50LCBpbnQpIHt9OyAvLyB7IGRnLWVycm9yIHtj YW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB7TWF5YmUgd2VsbCBmb3JtZWQ/IFRCRH0geyB4ZmFp bCAqLSotKiB9IH0KKworICBzdGF0aWMgdm9pZCBmX3N4X2Rmd2RyZWZfaW50MihpbnQsIGludCkg e307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IHtNYXliZSB3ZWxsIGZvcm1l ZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorICB2b2lkIGZfc3hfZGZ3ZHJlZl9pbnQyKHRoaXMg YXV0byYmLCBpbnQsIGludCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVk IHdpdGh9IHtNYXliZSB3ZWxsIGZvcm1lZD8gVEJEfSB7IHhmYWlsICotKi0qIH0gfQorfTsKKwor Ly8gdW5yZWxhdGVkIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgdHlwZQorCitzdHJ1Y3QgQSB7 fTsKKworc3RydWN0IFMxCit7CisvLyBubyBhZGRpdGlvbmFsIHBhcmFtcworICB2b2lkIGZfeHNf dih0aGlzIEEpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHN0 YXRpYyB2b2lkIGZfeHNfdigpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRl ZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX3JlZih0aGlzIEEmKSB7fTsgLy8geyBkZy1ub3RlIHtw cmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICBzdGF0aWMgdm9pZCBmX3hzX3JlZigpIHt9OyAvLyB7 IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX2Ny ZWYodGhpcyBBIGNvbnN0Jikge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259 IH0KKyAgc3RhdGljIHZvaWQgZl94c19jcmVmKCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBi ZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICB2b2lkIGZfeHNfcnJlZih0aGlzIEEmJikge307IC8v IHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgc3RhdGljIHZvaWQgZl94c19y cmVmKCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKwor ICB2b2lkIGZfeHNfY3JyZWYodGhpcyBBIGNvbnN0JiYpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZp b3VzIGRlY2xhcmF0aW9ufSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfY3JyZWYoKSB7fTsgLy8geyBk Zy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisvLyByZXZlcnNlZAorICBz dGF0aWMgdm9pZCBmX3N4X3YoKSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlv bn0gfQorICB2b2lkIGZfc3hfdih0aGlzIEEpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUg b3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgc3RhdGljIHZvaWQgZl9zeF9yZWYoKSB7fTsgLy8geyBk Zy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICB2b2lkIGZfc3hfcmVmKHRoaXMgQSYp IHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgc3Rh dGljIHZvaWQgZl9zeF9jcmVmKCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRp b259IH0KKyAgdm9pZCBmX3N4X2NyZWYodGhpcyBBIGNvbnN0Jikge307IC8vIHsgZGctZXJyb3Ig e2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICBzdGF0aWMgdm9pZCBmX3N4X3JyZWYo KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICB2b2lkIGZfc3hf cnJlZih0aGlzIEEmJikge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdp dGh9IH0KKworICBzdGF0aWMgdm9pZCBmX3N4X2NycmVmKCkge307IC8vIHsgZGctbm90ZSB7cHJl dmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9pZCBmX3N4X2NycmVmKHRoaXMgQSBjb25zdCYmKSB7 fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisvLyBvbmUg YWRkaXRpb25hbCBwYXJhbQorICB2b2lkIGZfeHNfdl9pbnQodGhpcyBBLCBpbnQpIHt9OyAvLyB7 IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfdl9p bnQoaW50KSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQor CisgIHZvaWQgZl94c19yZWZfaW50KHRoaXMgQSYsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJl dmlvdXMgZGVjbGFyYXRpb259IH0KKyAgc3RhdGljIHZvaWQgZl94c19yZWZfaW50KGludCkge307 IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICB2b2lkIGZf eHNfY3JlZl9pbnQodGhpcyBBIGNvbnN0JiwgaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91 cyBkZWNsYXJhdGlvbn0gfQorICBzdGF0aWMgdm9pZCBmX3hzX2NyZWZfaW50KGludCkge307IC8v IHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICB2b2lkIGZfeHNf cnJlZl9pbnQodGhpcyBBJiYsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFy YXRpb259IH0KKyAgc3RhdGljIHZvaWQgZl94c19ycmVmX2ludChpbnQpIHt9OyAvLyB7IGRnLWVy cm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX2NycmVmX2lu dCh0aGlzIEEgY29uc3QmJiwgaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJh dGlvbn0gfQorICBzdGF0aWMgdm9pZCBmX3hzX2NycmVmX2ludChpbnQpIHt9OyAvLyB7IGRnLWVy cm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKy8vIHJldmVyc2VkCisgIHN0YXRp YyB2b2lkIGZfc3hfdl9pbnQoaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJh dGlvbn0gfQorICB2b2lkIGZfc3hfdl9pbnQodGhpcyBBLCBpbnQpIHt9OyAvLyB7IGRnLWVycm9y IHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgc3RhdGljIHZvaWQgZl9zeF9yZWZf aW50KGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9p ZCBmX3N4X3JlZl9pbnQodGhpcyBBJiwgaW50KSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJl IG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHN0YXRpYyB2b2lkIGZfc3hfY3JlZl9pbnQoaW50KSB7 fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICB2b2lkIGZfc3hfY3Jl Zl9pbnQodGhpcyBBIGNvbnN0JiwgaW50KSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90IGJlIG92 ZXJsb2FkZWQgd2l0aH0gfQorCisgIHN0YXRpYyB2b2lkIGZfc3hfcnJlZl9pbnQoaW50KSB7fTsg Ly8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICB2b2lkIGZfc3hfcnJlZl9p bnQodGhpcyBBJiYsIGludCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVk IHdpdGh9IH0KKworICBzdGF0aWMgdm9pZCBmX3N4X2NycmVmX2ludChpbnQpIHt9OyAvLyB7IGRn LW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQgZl9zeF9jcnJlZl9pbnQodGhp cyBBIGNvbnN0JiYsIGludCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVk IHdpdGh9IH0KKworLy8gdHdvIGFkZGl0aW9uYWwgcGFyYW1zCisgIHZvaWQgZl94c192X2ludDIo dGhpcyBBLCBpbnQsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259 IH0KKyAgc3RhdGljIHZvaWQgZl94c192X2ludDIoaW50LCBpbnQpIHt9OyAvLyB7IGRnLWVycm9y IHtjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgdm9pZCBmX3hzX3JlZl9pbnQyKHRo aXMgQSYsIGludCwgaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0g fQorICBzdGF0aWMgdm9pZCBmX3hzX3JlZl9pbnQyKGludCwgaW50KSB7fTsgLy8geyBkZy1lcnJv ciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHZvaWQgZl94c19jcmVmX2ludDIo dGhpcyBBIGNvbnN0JiwgaW50LCBpbnQpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xh cmF0aW9ufSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfY3JlZl9pbnQyKGludCwgaW50KSB7fTsgLy8g eyBkZy1lcnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHZvaWQgZl94c19y cmVmX2ludDIodGhpcyBBJiYsIGludCwgaW50KSB7fTsgLy8geyBkZy1ub3RlIHtwcmV2aW91cyBk ZWNsYXJhdGlvbn0gfQorICBzdGF0aWMgdm9pZCBmX3hzX3JyZWZfaW50MihpbnQsIGludCkge307 IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0KKworICB2b2lkIGZf eHNfY3JyZWZfaW50Mih0aGlzIEEgY29uc3QmJiwgaW50LCBpbnQpIHt9OyAvLyB7IGRnLW5vdGUg e3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHN0YXRpYyB2b2lkIGZfeHNfY3JyZWZfaW50Mihp bnQsIGludCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGh9IH0K KworLy8gcmV2ZXJzZWQKKyAgc3RhdGljIHZvaWQgZl9zeF92X2ludDIoaW50LCBpbnQpIHt9OyAv LyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQgZl9zeF92X2ludDIo dGhpcyBBLCBpbnQsIGludCkge307IC8vIHsgZGctZXJyb3Ige2Nhbm5vdCBiZSBvdmVybG9hZGVk IHdpdGh9IH0KKworICBzdGF0aWMgdm9pZCBmX3N4X3JlZl9pbnQyKGludCwgaW50KSB7fTsgLy8g eyBkZy1ub3RlIHtwcmV2aW91cyBkZWNsYXJhdGlvbn0gfQorICB2b2lkIGZfc3hfcmVmX2ludDIo dGhpcyBBJiwgaW50LCBpbnQpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUgb3ZlcmxvYWRl ZCB3aXRofSB9CisKKyAgc3RhdGljIHZvaWQgZl9zeF9jcmVmX2ludDIoaW50LCBpbnQpIHt9OyAv LyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQgZl9zeF9jcmVmX2lu dDIodGhpcyBBIGNvbnN0JiwgaW50LCBpbnQpIHt9OyAvLyB7IGRnLWVycm9yIHtjYW5ub3QgYmUg b3ZlcmxvYWRlZCB3aXRofSB9CisKKyAgc3RhdGljIHZvaWQgZl9zeF9ycmVmX2ludDIoaW50LCBp bnQpIHt9OyAvLyB7IGRnLW5vdGUge3ByZXZpb3VzIGRlY2xhcmF0aW9ufSB9CisgIHZvaWQgZl9z eF9ycmVmX2ludDIodGhpcyBBJiYsIGludCwgaW50KSB7fTsgLy8geyBkZy1lcnJvciB7Y2Fubm90 IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorCisgIHN0YXRpYyB2b2lkIGZfc3hfY3JyZWZfaW50Mihp bnQsIGludCkge307IC8vIHsgZGctbm90ZSB7cHJldmlvdXMgZGVjbGFyYXRpb259IH0KKyAgdm9p ZCBmX3N4X2NycmVmX2ludDIodGhpcyBBIGNvbnN0JiYsIGludCwgaW50KSB7fTsgLy8geyBkZy1l cnJvciB7Y2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aH0gfQorfTsKKwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXZpcnR1YWwuQyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai12aXJ0dWFsLkMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAyM2NkYzJlMGZlCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXZpcnR1YWwuQwpAQCAtMCww ICsxLDk1IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMg fSB9CisKKy8vIGRpYWdub3NlIHhvYmogbWVtYmVyIGZ1bmN0aW9ucyB0aGF0IG92ZXJyaWRlCisv LyBvciBhcmUgZGVjbGFyZWQgYXMgdmlydHVhbCwgb3ZlcnJpZGUsIG9yIGZpbmFsCisKK3N0cnVj dCBCIHsKKyAgdmlydHVhbCB2b2lkIGYwKCkge30gLy8geyBkZy1ub3RlIHt2aXJ0dWFsIGZ1bmN0 aW9uIGRlY2xhcmVkIGhlcmV9IH0KKyAgdmlydHVhbCB2b2lkIGYxKCkge30gLy8geyBkZy1ub3Rl IHt2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkIGhlcmV9IH0KKyAgdmlydHVhbCB2b2lkIGYyKCkg e30gLy8geyBkZy1ub3RlIHt2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkIGhlcmV9IH0KKyAgdmly dHVhbCB2b2lkIGYzKCkge30gLy8geyBkZy1ub3RlIHt2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVk IGhlcmV9IH0KKyAgdmlydHVhbCB2b2lkIGY0KCkge30gLy8geyBkZy1ub3RlIHt2aXJ0dWFsIGZ1 bmN0aW9uIGRlY2xhcmVkIGhlcmV9IH0KKyAgdmlydHVhbCB2b2lkIGY1KCkge30gLy8geyBkZy1u b3RlIHt2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkIGhlcmV9IH0KKyAgdmlydHVhbCB2b2lkIGY2 KCkge30gLy8geyBkZy1ub3RlIHt2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkIGhlcmV9IH0KKyAg dmlydHVhbCB2b2lkIGY3KCkge30gLy8geyBkZy1ub3RlIHt2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xh cmVkIGhlcmV9IH0KKyAgdmlydHVhbCB+QigpIHt9Cit9OworCitzdHJ1Y3QgUyA6IEIgeworICB2 aXJ0dWFsIHZvaWQgZjAodGhpcyBTJikge30JCSAgICAgLy8geyBkZy1saW5lIGxpbmVfZjAgfQor ICB2aXJ0dWFsIHZvaWQgZjEodGhpcyBTJikgb3ZlcnJpZGUge30JICAgICAvLyB7IGRnLWxpbmUg bGluZV9mMSB9CisgIHZpcnR1YWwgdm9pZCBmMih0aGlzIFMmKSBmaW5hbCB7fQkgICAgIC8vIHsg ZGctbGluZSBsaW5lX2YyIH0KKyAgdmlydHVhbCB2b2lkIGYzKHRoaXMgUyYpIG92ZXJyaWRlIGZp bmFsIHt9IC8vIHsgZGctbGluZSBsaW5lX2YzIH0KKyAgdm9pZCBmNCh0aGlzIFMmKSB7fQkJCSAg ICAgLy8geyBkZy1saW5lIGxpbmVfZjQgfQorICB2b2lkIGY1KHRoaXMgUyYpIG92ZXJyaWRlIHt9 CQkgICAgIC8vIHsgZGctbGluZSBsaW5lX2Y1IH0KKyAgdm9pZCBmNih0aGlzIFMmKSBmaW5hbCB7 fQkJICAgICAvLyB7IGRnLWxpbmUgbGluZV9mNiB9CisgIHZvaWQgZjcodGhpcyBTJikgb3ZlcnJp ZGUgZmluYWwge30JICAgICAvLyB7IGRnLWxpbmUgbGluZV9mNyB9Cit9OworCisvLyB7IGRnLWVy cm9yIHthbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBiZSAndmlydHVh bCd9ICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mMCB9CisvLyB7IGRnLWVycm9yIHthbiBleHBs aWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBiZSAndmlydHVhbCd9ICIiIHsgdGFy Z2V0ICotKi0qIH0gbGluZV9mMSB9CisvLyB7IGRnLWVycm9yIHthbiBleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBiZSAndmlydHVhbCd9ICIiIHsgdGFyZ2V0ICotKi0qIH0g bGluZV9mMiB9CisvLyB7IGRnLWVycm9yIHthbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uIGNhbm5vdCBiZSAndmlydHVhbCd9ICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mMyB9CisK Ky8vIHsgZGctZXJyb3Ige2V4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gb3ZlcnJpZGVz IHZpcnR1YWwgZnVuY3Rpb259ICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mMCB9CisvLyB7IGRn LWVycm9yIHtleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIG92ZXJyaWRlcyB2aXJ0dWFs IGZ1bmN0aW9ufSAiIiB7IHRhcmdldCAqLSotKiB9IGxpbmVfZjEgfQorLy8geyBkZy1lcnJvciB7 ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBvdmVycmlkZXMgdmlydHVhbCBmdW5jdGlv bn0gIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX2YyIH0KKy8vIHsgZGctZXJyb3Ige2V4cGxpY2l0 IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gb3ZlcnJpZGVzIHZpcnR1YWwgZnVuY3Rpb259ICIiIHsg dGFyZ2V0ICotKi0qIH0gbGluZV9mMyB9CisvLyB7IGRnLWVycm9yIHtleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uIG92ZXJyaWRlcyB2aXJ0dWFsIGZ1bmN0aW9ufSAiIiB7IHRhcmdldCAq LSotKiB9IGxpbmVfZjQgfQorLy8geyBkZy1lcnJvciB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBm dW5jdGlvbiBvdmVycmlkZXMgdmlydHVhbCBmdW5jdGlvbn0gIiIgeyB0YXJnZXQgKi0qLSogfSBs aW5lX2Y1IH0KKy8vIHsgZGctZXJyb3Ige2V4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g b3ZlcnJpZGVzIHZpcnR1YWwgZnVuY3Rpb259ICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mNiB9 CisvLyB7IGRnLWVycm9yIHtleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIG92ZXJyaWRl cyB2aXJ0dWFsIGZ1bmN0aW9ufSAiIiB7IHRhcmdldCAqLSotKiB9IGxpbmVfZjcgfQorCisvLyB0 aGVzZSBzaG91bGQgYmUgc3VwcHJlc3NlZCwgdGhlIHdvcmRpbmcgY29uZmxpY3RzIHdpdGggdGhl IGVycm9yCisvLyB0aGUgaXNzdWUgaXMgbm90IHRoYXQgdGhleSBkb24ndCBvdmVycmlkZSwgaXQn cyB0aGF0IHRoZXkgZG8gb3ZlcnJpZGUsIGFuZCB0aGF0IGlzbid0IGFsbG93ZWQKKy8vIHsgZGct Ym9ndXMgIm1hcmtlZCAnb3ZlcnJpZGUnLCBidXQgZG9lcyBub3Qgb3ZlcnJpZGUiICIiIHsgeGZh aWwgKi0qLSogfSBsaW5lX2YxIH0KKy8vIHsgZGctYm9ndXMgIm1hcmtlZCAnZmluYWwnLCBidXQg aXMgbm90IHZpcnR1YWwiCSAiIiB7IHhmYWlsICotKi0qIH0gbGluZV9mMiB9CisvLyB7IGRnLWJv Z3VzICJtYXJrZWQgJyhvdmVycmlkZXxmaW5hbCknIgkJICIiIHsgeGZhaWwgKi0qLSogfSBsaW5l X2YzIH0KKworLy8geyBkZy1ib2d1cyAibWFya2VkICdvdmVycmlkZScsIGJ1dCBkb2VzIG5vdCBv dmVycmlkZSIgIiIgeyB4ZmFpbCAqLSotKiB9IGxpbmVfZjUgfQorLy8geyBkZy1ib2d1cyAibWFy a2VkICdmaW5hbCcsIGJ1dCBpcyBub3QgdmlydHVhbCIJICIiIHsgeGZhaWwgKi0qLSogfSBsaW5l X2Y2IH0KKy8vIHsgZGctYm9ndXMgIm1hcmtlZCAnKG92ZXJyaWRlfGZpbmFsKSciCQkgIiIgeyB4 ZmFpbCAqLSotKiB9IGxpbmVfZjcgfQorCisvLyB7IGRnLW5vdGUgImV4cGxpY2l0IG9iamVjdCBw YXJhbWV0ZXIgZGVjbGFyZWQgaGVyZSIgIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX2YwIH0KKy8v IHsgZGctbm90ZSAiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIiAiIiB7 IHRhcmdldCAqLSotKiB9IGxpbmVfZjEgfQorLy8geyBkZy1ub3RlICJleHBsaWNpdCBvYmplY3Qg cGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUiICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mMiB9Cisv LyB7IGRnLW5vdGUgImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZSIgIiIg eyB0YXJnZXQgKi0qLSogfSBsaW5lX2YzIH0KKy8vIHsgZGctbm90ZSAiZXhwbGljaXQgb2JqZWN0 IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIiAiIiB7IHhmYWlsICotKi0qIH0gbGluZV9mNCB9Cisv LyB7IGRnLW5vdGUgImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZSIgIiIg eyB4ZmFpbCAqLSotKiB9IGxpbmVfZjUgfQorLy8geyBkZy1ub3RlICJleHBsaWNpdCBvYmplY3Qg cGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUiICIiIHsgeGZhaWwgKi0qLSogfSBsaW5lX2Y2IH0KKy8v IHsgZGctbm90ZSAiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIiAiIiB7 IHhmYWlsICotKi0qIH0gbGluZV9mNyB9CisKK3N0cnVjdCBTMSB7CisgIHZpcnR1YWwgdm9pZCBm MCh0aGlzIFMmKSB7fQkJICAgICAvLyB7IGRnLWxpbmUgbGluZV9TMV9mMCB9CisgIHZpcnR1YWwg dm9pZCBmMSh0aGlzIFMmKSBvdmVycmlkZSB7fQkgICAgIC8vIHsgZGctbGluZSBsaW5lX1MxX2Yx IH0KKyAgdmlydHVhbCB2b2lkIGYyKHRoaXMgUyYpIGZpbmFsIHt9CSAgICAgLy8geyBkZy1saW5l IGxpbmVfUzFfZjIgfQorICB2aXJ0dWFsIHZvaWQgZjModGhpcyBTJikgb3ZlcnJpZGUgZmluYWwg e30gLy8geyBkZy1saW5lIGxpbmVfUzFfZjMgfQorICB2b2lkIGY0KHRoaXMgUyYpIHt9CisgIHZv aWQgZjUodGhpcyBTJikgb3ZlcnJpZGUge30JCSAgICAgLy8geyBkZy1saW5lIGxpbmVfUzFfZjUg fQorICB2b2lkIGY2KHRoaXMgUyYpIGZpbmFsIHt9CQkgICAgIC8vIHsgZGctbGluZSBsaW5lX1Mx X2Y2IH0KKyAgdm9pZCBmNyh0aGlzIFMmKSBvdmVycmlkZSBmaW5hbCB7fQkgICAgIC8vIHsgZGct bGluZSBsaW5lX1MxX2Y3IH0KK307CisKKy8vIHsgZGctZXJyb3IgImFuIGV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gY2Fubm90IGJlICd2aXJ0dWFsJyIgIiIgeyB0YXJnZXQgKi0qLSog fSBsaW5lX1MxX2YwIH0KKy8vIHsgZGctZXJyb3IgImFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIg ZnVuY3Rpb24gY2Fubm90IGJlICd2aXJ0dWFsJyIgIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX1Mx X2YxIH0KKy8vIHsgZGctZXJyb3IgImFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Y2Fubm90IGJlICd2aXJ0dWFsJyIgIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX1MxX2YyIH0KKy8v IHsgZGctZXJyb3IgImFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gY2Fubm90IGJl ICd2aXJ0dWFsJyIgIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX1MxX2YzIH0KKworLy8geyBkZy1u b3RlICJleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUiICIiIHsgdGFyZ2V0 ICotKi0qIH0gbGluZV9TMV9mMCB9CisvLyB7IGRnLW5vdGUgImV4cGxpY2l0IG9iamVjdCBwYXJh bWV0ZXIgZGVjbGFyZWQgaGVyZSIgIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX1MxX2YxIH0KKy8v IHsgZGctbm90ZSAiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIiAiIiB7 IHRhcmdldCAqLSotKiB9IGxpbmVfUzFfZjIgfQorLy8geyBkZy1ub3RlICJleHBsaWNpdCBvYmpl Y3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUiICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9TMV9m MyB9CisKKy8vIEkgdGhpbmsgSSB3YW50IHRoZXNlIHN1cHByZXNzZWQsIGJ1dCB0aGVyZXMgYSBk ZWNlbnQgYXJndW1lbnQgdGhhdCB0aGV5IHNob3VsZCBzdGF5CisvLyB0aGVyZXMgYXJndWFibHkg bm8gcmVhc29uIHRoZSBlcnJvciBhYm91dCB2aXJ0dWFsIHNob3VsZCBzdXBwcmVzcyB0aGVzZQor Ly8geyBkZy1ib2d1cyAibWFya2VkICdvdmVycmlkZScsIGJ1dCBkb2VzIG5vdCBvdmVycmlkZSIg IiIgeyB4ZmFpbCAqLSotKiB9IGxpbmVfUzFfZjEgfQorLy8geyBkZy1ib2d1cyAibWFya2VkICdm aW5hbCcsIGJ1dCBpcyBub3QgdmlydHVhbCIJICIiIHsgeGZhaWwgKi0qLSogfSBsaW5lX1MxX2Yy IH0KKy8vIHsgZGctYm9ndXMgIm1hcmtlZCAnKG92ZXJyaWRlfGZpbmFsKSciCQkgIiIgeyB4ZmFp bCAqLSotKiB9IGxpbmVfUzFfZjMgfQorCisvLyBJIGRvbid0IHdhbnQgdG8gc3VwcHJlc3MgdGhl c2UsIHRoZXJlIGlzIG5vdGhpbmcgdGhhdCBjb3VsZCBwb3NzaWJseSBiZSBvdmVycmlkZGVuCisv LyBldmVuIGlmIHRoZSB4b2JqIHBhcmFtIHdhcyByZW1vdmVkCisvLyB7IGRnLWVycm9yICJtYXJr ZWQgJ292ZXJyaWRlJywgYnV0IGRvZXMgbm90IG92ZXJyaWRlIiAiIiB7IHRhcmdldCAqLSotKiB9 IGxpbmVfUzFfZjUgfQorLy8geyBkZy1lcnJvciAibWFya2VkICdmaW5hbCcsIGJ1dCBpcyBub3Qg dmlydHVhbCIJICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9TMV9mNiB9CisvLyB7IGRnLWVycm9y ICJtYXJrZWQgJyhvdmVycmlkZXxmaW5hbCknIgkJICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9T MV9mNyB9CisKLS0gCjIuNDIuMQoK --b1_AN3cHr09pOt6pPRw4y5kmme6AE3Lyeb2s8vyhTOm70--