Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lNKvt-0002hY-HT for pgsql-hackers@arkaria.postgresql.org; Fri, 19 Mar 2021 19:37:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lNKvs-0004jO-Ft for pgsql-hackers@arkaria.postgresql.org; Fri, 19 Mar 2021 19:37:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lNKvs-0004jH-4z for pgsql-hackers@lists.postgresql.org; Fri, 19 Mar 2021 19:37:16 +0000 Received: from wforward3-smtp.messagingengine.com ([64.147.123.22]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lNKvn-0007fr-OK for pgsql-hackers@postgresql.org; Fri, 19 Mar 2021 19:37:15 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailforward.west.internal (Postfix) with ESMTP id 53DC01297; Fri, 19 Mar 2021 15:37:08 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Fri, 19 Mar 2021 15:37:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=cbkg/e 9EZ+LJBsJWv1ZA8lAwUl+hkwVA3VROxyfjjfo=; b=vMr21l85C7spRmHyDWP2hk q2Ifz5Gp1Ym1o3CpDWR+STBuwfVWsWMRX2SBqryxvBloe8VEU5ATQRvV+6oEBwfC c6N7w0NK87fzwVYoPz8dFOETPBFSV+S5k0dWUKlsZjm5Nh6yraLMW8HjU+mlsx3R 1zIADsvggenpGKNUmXy8ZMEABoqOQGcH6p0LMnNtsvCmasaiCM6NqwHLg4BYUYGt 3DdqENUZ+utFmS2WbSJqARRG2BWNBSizE11K4hVFBfUalasm4pvPLu/6xhGNa3Sq DKNyLKbE0vhdxhxi6AA4ax7jnUqSFYjFl4Y+XNebLOslNk49UqyHzaHJS/+iVj+w == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudefkedguddvkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefuhffvfhfkffgfgggjtgesmhdtreertdefjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqh hurggurhgrnhhtrdgtohhmqeenucggtffrrghtthgvrhhnpeffuedtkeejjeeiheefgfef geelhfekgfevvdejhfelffeiffdtledtfeelkeduieenucfkphepkeejrddujeejrdeile drudegtdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhm pehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomh X-ME-Proxy: Received: from laptop206oxuk.local (p57b1458c.dip0.t-ipconnect.de [87.177.69.140]) by mail.messagingengine.com (Postfix) with ESMTPA id 1C8911080063; Fri, 19 Mar 2021 15:37:06 -0400 (EDT) Subject: Re: Since '2001-09-09 01:46:40'::timestamp microseconds are lost when extracting epoch From: Peter Eisentraut To: Tom Lane , David Steele Cc: Pavel Stehule , Thomas Munro , Petr Fedorov , pgsql-hackers References: <1551357.1599435992@sss.pgh.pa.us> <097a4242-0748-98e3-06ab-ded1d366cd76@2ndquadrant.com> <1893468.1599658711@sss.pgh.pa.us> <38fc499a-ae52-efb6-aad6-82f812d6782d@2ndquadrant.com> <20200917055327.GU2873@paquier.xyz> <20200930071543.GL1996@paquier.xyz> <2fb99632-9302-6509-78ce-3aaed3fd7f40@2ndquadrant.com> <3ff4be02-1e2b-564f-9b53-3dc561da8218@pgmasters.net> <3013402.1615829712@sss.pgh.pa.us> <8fae8673-0d5b-12d9-7342-daed0d590594@2ndquadrant.com> Message-ID: <901bcfb8-36c8-27b2-b148-042392992eeb@2ndquadrant.com> Date: Fri, 19 Mar 2021 20:37:04 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <8fae8673-0d5b-12d9-7342-daed0d590594@2ndquadrant.com> Content-Type: multipart/mixed; boundary="------------A392B284372055025489C06D" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------A392B284372055025489C06D Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 18.03.21 09:28, Peter Eisentraut wrote: > Which leads me to:  After retesting this now, with a new machine, the > performance of the numeric implementation is brutal compared to the > float implementation, for cases where we need numeric division, which is > milliseconds, seconds, and epoch.  In the first two cases, I imagine we > could rewrite this a bit to avoid a lot of the numeric work, but for the > epoch case (which is what started this thread), there isn't enough space > in int64 to make this work.  Perhaps int128 could be pressed into > service, optionally.  I think it would also help if we cracked open the > numeric APIs a bit to avoid all the repeated unpacking and packing for > each step. > > So I think we need to do a bit more thinking and work here, meaning it > will have to be postponed. Well, I had an idea that I put to work. In most of these cases where we need division, we divide an integer by a power of 10. That can be done with numeric very quickly by just shifting the weight and scale around. So I wrote a function that does that specifically (look for int64_div_fast_to_numeric()). With that, the slow cases I mentioned now have the same performance as the other cases that didn't have any numeric division. You just get the overhead for constructing and passing around a numeric instead of a double, which can't be avoided. So here is an intermediate patch that does this. I haven't gotten rid of all numeric_div_opt_error() calls yet, but if this seems acceptable, I can work on the remaining ones. --------------A392B284372055025489C06D Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v5-0001-Change-return-type-of-EXTRACT-to-numeric.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v5-0001-Change-return-type-of-EXTRACT-to-numeric.patch" RnJvbSA4MDE0NjBjNDZkZGY3MjczZDJjNDlhOWFmMzQ2MGYyZjU2MTQ1OTlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAxOSBNYXIgMjAyMSAyMDoyNzoxNSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjVdIENoYW5nZSByZXR1cm4gdHlwZSBvZiBFWFRSQUNUIHRvIG51bWVyaWMK ClRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBFWFRSQUNUIG1hcHBlZCBpbnRlcm5h bGx5IHRvCmRhdGVfcGFydCgpLCB3aGljaCByZXR1cm5lZCB0eXBlIGRvdWJsZSBwcmVjaXNp b24gKHNpbmNlIGl0IHdhcwppbXBsZW1lbnRlZCBsb25nIGJlZm9yZSB0aGUgbnVtZXJpYyB0 eXBlIGV4aXN0ZWQpLiAgVGhpcyBjYW4gbGVhZCB0bwppbXByZWNpc2Ugb3V0cHV0IGluIHNv bWUgY2FzZXMsIHNvIHJldHVybmluZyBudW1lcmljIHdvdWxkIGJlCnByZWZlcnJhYmxlLiAg Q2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIG9mIGFuIGV4aXN0aW5nIGZ1bmN0aW9uIGlzIGEK Yml0IHJpc2t5LCBzbyBpbnN0ZWFkIHdlIGRvIHRoZSBmb2xsb3dpbmc6ICBXZSBpbXBsZW1l bnQgYSBuZXcgc2V0IG9mCmZ1bmN0aW9ucywgd2hpY2ggYXJlIG5vdyBjYWxsZWQgImV4dHJh Y3QiLCBpbiBwYXJhbGxlbCB0byB0aGUgZXhpc3RpbmcKZGF0ZV9wYXJ0IGZ1bmN0aW9ucy4g IFRoZXkgd29yayB0aGUgc2FtZSB3YXkgaW50ZXJuYWxseSBidXQgdXNlCm51bWVyaWMgaW5z dGVhZCBvZiBmbG9hdDguICBUaGUgRVhUUkFDVCBjb25zdHJ1Y3QgaXMgbm93IG1hcHBlZCBi eSB0aGUKcGFyc2VyIHRvIHRoZXNlIG5ldyBleHRyYWN0IGZ1bmN0aW9ucy4gIFRoYXQgd2F5 LCBkdW1wcyBvZiB2aWV3cwpldGMuIGZyb20gb2xkIHZlcnNpb25zICh3aGljaCB3b3VsZCB1 c2UgZGF0ZV9wYXJ0KSBjb250aW51ZSB0byB3b3JrCnVuY2hhbmdlZCwgYnV0IG5ldyB1c2Vz IHdpbGwgbWFwIHRvIHRoZSBuZXcgZXh0cmFjdCBmdW5jdGlvbnMuCgpBZGRpdGlvbmFsbHks IHRoZSByZXZlcnNlIGNvbXBpbGF0aW9uIG9mIEVYVFJBQ1Qgbm93IHJlcHJvZHVjZXMgdGhl Cm9yaWdpbmFsIHN5bnRheCwgdXNpbmcgdGhlIG5ldyBtZWNoYW5pc20gaW50cm9kdWNlZCBp bgo0MGMyNGJmZWY5MjUzMGJkODQ2ZTExMWMxNzQyYzJhNTQ0NDFjNjJjLgoKVGhlIGZvbGxv d2luZyBtaW5vciBjaGFuZ2VzIG9mIGJlaGF2aW9yIHJlc3VsdCBmcm9tIHRoZSBuZXcKaW1w bGVtZW50YXRpb246CgotIFRoZSBjb2x1bW4gbmFtZSBmcm9tIGFuIGlzb2xhdGVkIEVYVFJB Q1QgY2FsbCBpcyBub3cgImV4dHJhY3QiCiAgaW5zdGVhZCBvZiAiZGF0ZV9wYXJ0Ii4KCi0g RXh0cmFjdCBmcm9tIGRhdGUgbm93IHJlamVjdHMgaW5hcHByb3ByaWF0ZSBmaWVsZCBuYW1l cyBzdWNoIGFzCiAgSE9VUi4gIEl0IHdhcyBwcmV2aW91c2x5IG1hcHBlZCBpbnRlcm5hbGx5 IHRvIGV4dHJhY3QgZnJvbQogIHRpbWVzdGFtcCwgc28gaXQgd291bGQgc2lsZW50bHkgYWNj ZXB0IGV2ZXJ5dGhpbmcgYXBwcm9wcmlhdGUgZm9yCiAgdGltZXN0YW1wLgoKLSBSZXR1cm4g dmFsdWVzIHdoZW4gZXh0cmFjdGluZyBmaWVsZHMgd2l0aCBwb3NzaWJseSBmcmFjdGlvbmFs CiAgdmFsdWVzLCBzdWNoIGFzIHNlY29uZCBhbmQgZXBvY2gsIG5vdyBoYXZlIHRoZSBmdWxs IHNjYWxlIHRoYXQgdGhlCiAgdmFsdWUgaGFzIGludGVybmFsbHkgKHNvLCBmb3IgZXhhbXBs ZSwgJzEuMDAwMDAwJyBpbnN0ZWFkIG9mIGp1c3QKICAnMScpLgoKRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzQyYjczZDJkLWRhMTIt YmE5Zi01NzBhLTQyMGUwY2NlMTlkOUBwaHlzdGVjaC5lZHUKLS0tCiBkb2Mvc3JjL3NnbWwv ZnVuYy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvZGF0ZS5jICAgICAgICAgICAgICAgIHwgMzcwICsrKysrKysrKysrCiBzcmMv YmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jICAgICAgICAgICAgIHwgIDU2ICsrCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgIHwgIDIxICsKIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyAgICAgICAgICAgfCA2NzAgKysrKysrKysr KysrKysrKysrKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAg ICAgfCAgMTggKwogc3JjL2luY2x1ZGUvdXRpbHMvbnVtZXJpYy5oICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV92aWV3Lm91dCAg IHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2RhdGUub3V0ICAgICAgICAg IHwgNDgyICsrKysrKystLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludGVy dmFsLm91dCAgICAgIHwgIDcyICstLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs X2Nyb3NzdGFiLm91dCB8ICAxMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aW1l Lm91dCAgICAgICAgICB8ICAyNCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aW1l dHoub3V0ICAgICAgICB8ICA0NiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGF0ZS5zcWwg ICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGltZXR6LnNx bCAgICAgICAgICAgICB8ICAgNCArLQogMTYgZmlsZXMgY2hhbmdlZCwgMTQzMSBpbnNlcnRp b25zKCspLCAzNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggOTQ5MmEzYzZiOS4uMDM4 M2NmM2RiOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCkBAIC04Nzc2LDcgKzg3NzYsNyBAQCA8dGl0bGU+RGF0ZS9U aW1lIEZ1bmN0aW9uczwvdGl0bGU+CiAgICAgICAgICAgPHByaW1hcnk+ZXh0cmFjdDwvcHJp bWFyeT4KICAgICAgICAgIDwvaW5kZXh0ZXJtPgogICAgICAgICAgPGZ1bmN0aW9uPmV4dHJh Y3Q8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+ZmllbGQ8L3BhcmFtZXRlcj4gPGxpdGVyYWw+ ZnJvbTwvbGl0ZXJhbD4gPHR5cGU+dGltZXN0YW1wPC90eXBlPiApCi0gICAgICAgICA8cmV0 dXJudmFsdWU+ZG91YmxlIHByZWNpc2lvbjwvcmV0dXJudmFsdWU+CisgICAgICAgICA8cmV0 dXJudmFsdWU+bnVtZXJpYzwvcmV0dXJudmFsdWU+CiAgICAgICAgIDwvcGFyYT4KICAgICAg ICAgPHBhcmE+CiAgICAgICAgICBHZXQgdGltZXN0YW1wIHN1YmZpZWxkOyBzZWUgPHhyZWYg bGlua2VuZD0iZnVuY3Rpb25zLWRhdGV0aW1lLWV4dHJhY3QiLz4KQEAgLTg3OTAsNyArODc5 MCw3IEBAIDx0aXRsZT5EYXRlL1RpbWUgRnVuY3Rpb25zPC90aXRsZT4KICAgICAgICA8cm93 PgogICAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i ZnVuY19zaWduYXR1cmUiPgogICAgICAgICAgPGZ1bmN0aW9uPmV4dHJhY3Q8L2Z1bmN0aW9u PiAoIDxwYXJhbWV0ZXI+ZmllbGQ8L3BhcmFtZXRlcj4gPGxpdGVyYWw+ZnJvbTwvbGl0ZXJh bD4gPHR5cGU+aW50ZXJ2YWw8L3R5cGU+ICkKLSAgICAgICAgIDxyZXR1cm52YWx1ZT5kb3Vi bGUgcHJlY2lzaW9uPC9yZXR1cm52YWx1ZT4KKyAgICAgICAgIDxyZXR1cm52YWx1ZT5udW1l cmljPC9yZXR1cm52YWx1ZT4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8cGFyYT4KICAg ICAgICAgIEdldCBpbnRlcnZhbCBzdWJmaWVsZDsgc2VlIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0 aW9ucy1kYXRldGltZS1leHRyYWN0Ii8+CkBAIC05MzA1LDcgKzkzMDUsNyBAQCA8dGl0bGU+ PGZ1bmN0aW9uPkVYVFJBQ1Q8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPmRhdGVfcGFydDwvZnVu Y3Rpb24+PC90aXRsZT4KICAgICB3ZWxsLikgIDxyZXBsYWNlYWJsZT5maWVsZDwvcmVwbGFj ZWFibGU+IGlzIGFuIGlkZW50aWZpZXIgb3IKICAgICBzdHJpbmcgdGhhdCBzZWxlY3RzIHdo YXQgZmllbGQgdG8gZXh0cmFjdCBmcm9tIHRoZSBzb3VyY2UgdmFsdWUuCiAgICAgVGhlIDxm dW5jdGlvbj5leHRyYWN0PC9mdW5jdGlvbj4gZnVuY3Rpb24gcmV0dXJucyB2YWx1ZXMgb2Yg dHlwZQotICAgIDx0eXBlPmRvdWJsZSBwcmVjaXNpb248L3R5cGU+LgorICAgIDx0eXBlPm51 bWVyaWM8L3R5cGU+LgogICAgIFRoZSBmb2xsb3dpbmcgYXJlIHZhbGlkIGZpZWxkIG5hbWVz OgogCiAgICAgPCEtLSBhbHBoYWJldGljYWwgLS0+CkBAIC05NzI5LDYgKzk3MjksMTAgQEAg PHRpdGxlPjxmdW5jdGlvbj5FWFRSQUNUPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5kYXRlX3Bh cnQ8L2Z1bmN0aW9uPjwvdGl0bGU+CiAgICAgYmUgYSBzdHJpbmcgdmFsdWUsIG5vdCBhIG5h bWUuICBUaGUgdmFsaWQgZmllbGQgbmFtZXMgZm9yCiAgICAgPGZ1bmN0aW9uPmRhdGVfcGFy dDwvZnVuY3Rpb24+IGFyZSB0aGUgc2FtZSBhcyBmb3IKICAgICA8ZnVuY3Rpb24+ZXh0cmFj dDwvZnVuY3Rpb24+LgorICAgIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHRoZSA8ZnVuY3Rp b24+ZGF0ZV9wYXJ0PC9mdW5jdGlvbj4gZnVuY3Rpb24KKyAgICByZXR1cm5zIHZhbHVlcyBv ZiB0eXBlIDx0eXBlPmRvdWJsZSBwcmVjaXNpb248L3R5cGU+LiAgVGhpcyBjYW4gcmVzdWx0 IGluCisgICAgYSBsb3NzIG9mIHByZWNpc2lvbiBpbiBjZXJ0YWluIHVzZXMuICBVc2luZyA8 ZnVuY3Rpb24+ZXh0cmFjdDwvZnVuY3Rpb24+CisgICAgaXMgcmVjb21tZW5kZWQgaW5zdGVh ZC4KICAgIDwvcGFyYT4KIAogPHNjcmVlbj4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGZkMDdlNzEw N2QuLjRhMjM1OTM2MTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTM5MTAsNyArMTM5MTAsNyBA QCBmdW5jX2V4cHJfY29tbW9uX3N1YmV4cHI6CiAJCQkJeyAkJCA9IG1ha2VUeXBlQ2FzdCgk MywgJDUsIEAxKTsgfQogCQkJfCBFWFRSQUNUICcoJyBleHRyYWN0X2xpc3QgJyknCiAJCQkJ ewotCQkJCQkkJCA9IChOb2RlICopIG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5jTmFtZSgiZGF0 ZV9wYXJ0IiksCisJCQkJCSQkID0gKE5vZGUgKikgbWFrZUZ1bmNDYWxsKFN5c3RlbUZ1bmNO YW1lKCJleHRyYWN0IiksCiAJCQkJCQkJCQkJCSAgICQzLAogCQkJCQkJCQkJCQkgICBDT0VS Q0VfU1FMX1NZTlRBWCwKIAkJCQkJCQkJCQkJICAgQDEpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2RhdGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRlLmMK aW5kZXggNjhkOTlhNTA5OS4uOWRhMDNiMGVmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2RhdGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCkBA IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZXRpbWUuaCIKKyNpbmNsdWRl ICJ1dGlscy9udW1lcmljLmgiCiAjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAog LyoKQEAgLTEwNjMsNiArMTA2NCwxODAgQEAgaW5fcmFuZ2VfZGF0ZV9pbnRlcnZhbChQR19G VU5DVElPTl9BUkdTKQogfQogCiAKKy8qIGV4dHJhY3RfZGF0ZSgpCisgKiBFeHRyYWN0IHNw ZWNpZmllZCBmaWVsZCBmcm9tIGRhdGUgdHlwZS4KKyAqLworRGF0dW0KK2V4dHJhY3RfZGF0 ZShQR19GVU5DVElPTl9BUkdTKQoreworCXRleHQJICAgKnVuaXRzID0gUEdfR0VUQVJHX1RF WFRfUFAoMCk7CisJRGF0ZUFEVAkJZGF0ZSA9IFBHX0dFVEFSR19EQVRFQURUKDEpOworCWlu dDY0CQlyZXN1bHQ7CisJaW50CQkJdHlwZSwKKwkJCQl2YWw7CisJY2hhcgkgICAqbG93dW5p dHM7CisJaW50CQkJeWVhciwgbW9uLCBtZGF5OworCisJbG93dW5pdHMgPSBkb3duY2FzZV90 cnVuY2F0ZV9pZGVudGlmaWVyKFZBUkRBVEFfQU5ZKHVuaXRzKSwKKwkJCQkJCQkJCQkJVkFS U0laRV9BTllfRVhIRFIodW5pdHMpLAorCQkJCQkJCQkJCQlmYWxzZSk7CisKKwl0eXBlID0g RGVjb2RlVW5pdHMoMCwgbG93dW5pdHMsICZ2YWwpOworCWlmICh0eXBlID09IFVOS05PV05f RklFTEQpCisJCXR5cGUgPSBEZWNvZGVTcGVjaWFsKDAsIGxvd3VuaXRzLCAmdmFsKTsKKwor CWlmIChEQVRFX05PVF9GSU5JVEUoZGF0ZSkgJiYgKHR5cGUgPT0gVU5JVFMgfHwgdHlwZSA9 PSBSRVNFUlYpKQorCXsKKwkJc3dpdGNoICh2YWwpCisJCXsKKwkJCS8qIE9zY2lsbGF0aW5n IHVuaXRzICovCisJCQljYXNlIERUS19EQVk6CisJCQljYXNlIERUS19NT05USDoKKwkJCWNh c2UgRFRLX1FVQVJURVI6CisJCQljYXNlIERUS19XRUVLOgorCQkJY2FzZSBEVEtfRE9XOgor CQkJY2FzZSBEVEtfSVNPRE9XOgorCQkJY2FzZSBEVEtfRE9ZOgorCQkJCVBHX1JFVFVSTl9O VUxMKCk7CisJCQkJYnJlYWs7CisKKwkJCS8qIE1vbm90b25pY2FsbHktaW5jcmVhc2luZyB1 bml0cyAqLworCQkJY2FzZSBEVEtfWUVBUjoKKwkJCWNhc2UgRFRLX0RFQ0FERToKKwkJCWNh c2UgRFRLX0NFTlRVUlk6CisJCQljYXNlIERUS19NSUxMRU5OSVVNOgorCQkJY2FzZSBEVEtf SlVMSUFOOgorCQkJY2FzZSBEVEtfSVNPWUVBUjoKKwkJCWNhc2UgRFRLX0VQT0NIOgorCQkJ CWlmIChEQVRFX0lTX05PQkVHSU4oZGF0ZSkpCisJCQkJCVBHX1JFVFVSTl9OVU1FUklDKERh dHVtR2V0TnVtZXJpYyhEaXJlY3RGdW5jdGlvbkNhbGwzKG51bWVyaWNfaW4sCisJCQkJCQkJ CQkJCQkJCQkJCQkgIENTdHJpbmdHZXREYXR1bSgiLUluZmluaXR5IiksCisJCQkJCQkJCQkJ CQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oSW52YWxpZE9pZCksCisJCQkJCQkJCQkJCQkJ CQkJCQkgIEludDMyR2V0RGF0dW0oLTEpKSkpOworCQkJCWVsc2UKKwkJCQkJUEdfUkVUVVJO X05VTUVSSUMoRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDMobnVtZXJpY19p biwKKwkJCQkJCQkJCQkJCQkJCQkJCSAgQ1N0cmluZ0dldERhdHVtKCJJbmZpbml0eSIpLAor CQkJCQkJCQkJCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKEludmFsaWRPaWQpLAorCQkJ CQkJCQkJCQkJCQkJCQkJICBJbnQzMkdldERhdHVtKC0xKSkpKTsKKwkJCWRlZmF1bHQ6CisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImRhdGUgdW5pdHMgXCIlc1wiIG5vdCBzdXBw b3J0ZWQiLAorCQkJCQkJCQlsb3d1bml0cykpKTsKKwkJfQorCX0KKwllbHNlIGlmICh0eXBl ID09IFVOSVRTKQorCXsKKwkJajJkYXRlKGRhdGUgKyBQT1NUR1JFU19FUE9DSF9KREFURSwg JnllYXIsICZtb24sICZtZGF5KTsKKworCQlzd2l0Y2ggKHZhbCkKKwkJeworCQkJY2FzZSBE VEtfREFZOgorCQkJCXJlc3VsdCA9IG1kYXk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRFRL X01PTlRIOgorCQkJCXJlc3VsdCA9IG1vbjsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtf UVVBUlRFUjoKKwkJCQlyZXN1bHQgPSAobW9uIC0gMSkgLyAzICsgMTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBEVEtfV0VFSzoKKwkJCQlyZXN1bHQgPSBkYXRlMmlzb3dlZWsoeWVhciwg bW9uLCBtZGF5KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfWUVBUjoKKwkJCQlpZiAo eWVhciA+IDApCisJCQkJCXJlc3VsdCA9IHllYXI7CisJCQkJZWxzZQorCQkJCQkvKiB0aGVy ZSBpcyBubyB5ZWFyIDAsIGp1c3QgMSBCQyBhbmQgMSBBRCAqLworCQkJCQlyZXN1bHQgPSB5 ZWFyIC0gMTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfREVDQURFOgorCQkJCS8qIHNl ZSBjb21tZW50cyBpbiB0aW1lc3RhbXBfcGFydCAqLworCQkJCWlmICh5ZWFyID49IDApCisJ CQkJCXJlc3VsdCA9IHllYXIgLyAxMDsKKwkJCQllbHNlCisJCQkJCXJlc3VsdCA9IC0oKDgg LSAoeWVhciAtIDEpKSAvIDEwKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfQ0VOVFVS WToKKwkJCQkvKiBzZWUgY29tbWVudHMgaW4gdGltZXN0YW1wX3BhcnQgKi8KKwkJCQlpZiAo eWVhciA+IDApCisJCQkJCXJlc3VsdCA9ICh5ZWFyICsgOTkpIC8gMTAwOworCQkJCWVsc2UK KwkJCQkJcmVzdWx0ID0gLSgoOTkgLSAoeWVhciAtIDEpKSAvIDEwMCk7CisJCQkJYnJlYWs7 CisKKwkJCWNhc2UgRFRLX01JTExFTk5JVU06CisJCQkJLyogc2VlIGNvbW1lbnRzIGluIHRp bWVzdGFtcF9wYXJ0ICovCisJCQkJaWYgKHllYXIgPiAwKQorCQkJCQlyZXN1bHQgPSAoeWVh ciArIDk5OSkgLyAxMDAwOworCQkJCWVsc2UKKwkJCQkJcmVzdWx0ID0gLSgoOTk5IC0gKHll YXIgLSAxKSkgLyAxMDAwKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfSlVMSUFOOgor CQkJCXJlc3VsdCA9IGRhdGUgKyBQT1NUR1JFU19FUE9DSF9KREFURTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBEVEtfSVNPWUVBUjoKKwkJCQlyZXN1bHQgPSBkYXRlMmlzb3llYXIoeWVh ciwgbW9uLCBtZGF5KTsKKwkJCQkvKiBBZGp1c3QgQkMgeWVhcnMgKi8KKwkJCQlpZiAocmVz dWx0IDw9IDApCisJCQkJCXJlc3VsdCAtPSAxOworCQkJCWJyZWFrOworCisJCQljYXNlIERU S19ET1c6CisJCQljYXNlIERUS19JU09ET1c6CisJCQkJcmVzdWx0ID0gajJkYXkoZGF0ZSAr IFBPU1RHUkVTX0VQT0NIX0pEQVRFKTsKKwkJCQlpZiAodmFsID09IERUS19JU09ET1cgJiYg cmVzdWx0ID09IDApCisJCQkJCXJlc3VsdCA9IDc7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug RFRLX0RPWToKKwkJCQlyZXN1bHQgPSBkYXRlMmooeWVhciwgbW9uLCBtZGF5KSAtIGRhdGUy aih5ZWFyLCAxLCAxKSArIDE7CisJCQkJYnJlYWs7CisKKwkJCWRlZmF1bHQ6CisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJCSBlcnJtc2coImRhdGUgdW5pdHMgXCIlc1wiIG5vdCBzdXBwb3J0ZWQi LAorCQkJCQkJCQlsb3d1bml0cykpKTsKKwkJCQlyZXN1bHQgPSAwOworCQl9CisJfQorCWVs c2UgaWYgKHR5cGUgPT0gUkVTRVJWKQorCXsKKwkJc3dpdGNoICh2YWwpCisJCXsKKwkJCWNh c2UgRFRLX0VQT0NIOgorCQkJCXJlc3VsdCA9ICgoaW50NjQpIGRhdGUgKyBQT1NUR1JFU19F UE9DSF9KREFURSAtIFVOSVhfRVBPQ0hfSkRBVEUpICogU0VDU19QRVJfREFZOworCQkJCWJy ZWFrOworCisJCQlkZWZhdWx0OgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJkYXRl IHVuaXRzIFwiJXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJCQkJbG93dW5pdHMpKSk7CisJ CQkJcmVzdWx0ID0gMDsKKwkJfQorCX0KKwllbHNlCisJeworCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBl cnJtc2coImRhdGUgdW5pdHMgXCIlc1wiIG5vdCByZWNvZ25pemVkIiwgbG93dW5pdHMpKSk7 CisJCXJlc3VsdCA9IDA7CisJfQorCisJUEdfUkVUVVJOX05VTUVSSUMoaW50NjRfdG9fbnVt ZXJpYyhyZXN1bHQpKTsKK30KKworCiAvKiBBZGQgYW4gaW50ZXJ2YWwgdG8gYSBkYXRlLCBn aXZpbmcgYSBuZXcgZGF0ZS4KICAqIE11c3QgaGFuZGxlIGJvdGggcG9zaXRpdmUgYW5kIG5l Z2F0aXZlIGludGVydmFscy4KICAqCkBAIC0yMDM2LDYgKzIyMTEsOTcgQEAgdGltZV9wYXJ0 KFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIAorLyogZXh0cmFjdF90aW1lKCkKKyAqIEV4dHJh Y3Qgc3BlY2lmaWVkIGZpZWxkIGZyb20gdGltZSB0eXBlLgorICovCitEYXR1bQorZXh0cmFj dF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJdGV4dAkgICAqdW5pdHMgPSBQR19HRVRB UkdfVEVYVF9QUCgwKTsKKwlUaW1lQURUCQl0aW1lID0gUEdfR0VUQVJHX1RJTUVBRFQoMSk7 CisJTnVtZXJpYwkJcmVzdWx0OworCWludAkJCXR5cGUsCisJCQkJdmFsOworCWNoYXIJICAg Kmxvd3VuaXRzOworCisJbG93dW5pdHMgPSBkb3duY2FzZV90cnVuY2F0ZV9pZGVudGlmaWVy KFZBUkRBVEFfQU5ZKHVuaXRzKSwKKwkJCQkJCQkJCQkJVkFSU0laRV9BTllfRVhIRFIodW5p dHMpLAorCQkJCQkJCQkJCQlmYWxzZSk7CisKKwl0eXBlID0gRGVjb2RlVW5pdHMoMCwgbG93 dW5pdHMsICZ2YWwpOworCWlmICh0eXBlID09IFVOS05PV05fRklFTEQpCisJCXR5cGUgPSBE ZWNvZGVTcGVjaWFsKDAsIGxvd3VuaXRzLCAmdmFsKTsKKworCWlmICh0eXBlID09IFVOSVRT KQorCXsKKwkJZnNlY190CQlmc2VjOworCQlzdHJ1Y3QgcGdfdG0gdHQsCisJCQkJICAgKnRt ID0gJnR0OworCisJCXRpbWUydG0odGltZSwgdG0sICZmc2VjKTsKKworCQlzd2l0Y2ggKHZh bCkKKwkJeworCQkJY2FzZSBEVEtfTUlDUk9TRUM6CisJCQkJcmVzdWx0ID0gaW50NjRfdG9f bnVtZXJpYyh0bS0+dG1fc2VjICogMTAwMDAwMCArIGZzZWMpOworCQkJCWJyZWFrOworCisJ CQljYXNlIERUS19NSUxMSVNFQzoKKwkJCQkvKiB0bS0+dG1fc2VjICogMTAwMCArIGZzZWMg LyAxMDAwCisJCQkJICAgPSAodG0tPnRtX3NlYyAqIDEnMDAwJzAwMCArIGZzZWMpIC8gMTAw MCAqLworCQkJCXJlc3VsdCA9IGludDY0X2Rpdl9mYXN0X3RvX251bWVyaWModG0tPnRtX3Nl YyAqIDEwMDAwMDBMTCArIGZzZWMsIDEwMDApOworCQkJCWJyZWFrOworCisJCQljYXNlIERU S19TRUNPTkQ6CisJCQkJLyogdG0tPnRtX3NlYyArIGZzZWMgLyAxJzAwMCcwMDAKKwkJCQkg ICA9ICh0bS0+dG1fc2VjICogMScwMDAnMDAwICsgZnNlYykgLyAxJzAwMCcwMDAgKi8KKwkJ CQlyZXN1bHQgPSBpbnQ2NF9kaXZfZmFzdF90b19udW1lcmljKHRtLT50bV9zZWMgKiAxMDAw MDAwTEwgKyBmc2VjLCAxMDAwMDAwKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfTUlO VVRFOgorCQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVyaWModG0tPnRtX21pbik7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgRFRLX0hPVVI6CisJCQkJcmVzdWx0ID0gaW50NjRfdG9fbnVt ZXJpYyh0bS0+dG1faG91cik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRFRLX1RaOgorCQkJ Y2FzZSBEVEtfVFpfTUlOVVRFOgorCQkJY2FzZSBEVEtfVFpfSE9VUjoKKwkJCWNhc2UgRFRL X0RBWToKKwkJCWNhc2UgRFRLX01PTlRIOgorCQkJY2FzZSBEVEtfUVVBUlRFUjoKKwkJCWNh c2UgRFRLX1lFQVI6CisJCQljYXNlIERUS19ERUNBREU6CisJCQljYXNlIERUS19DRU5UVVJZ OgorCQkJY2FzZSBEVEtfTUlMTEVOTklVTToKKwkJCWNhc2UgRFRLX0lTT1lFQVI6CisJCQlk ZWZhdWx0OgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2coIlwidGltZVwiIHVuaXRz IFwiJXNcIiBub3QgcmVjb2duaXplZCIsCisJCQkJCQkJCWxvd3VuaXRzKSkpOworCQkJCXJl c3VsdCA9IDA7CisJCX0KKwl9CisJZWxzZSBpZiAodHlwZSA9PSBSRVNFUlYgJiYgdmFsID09 IERUS19FUE9DSCkKKwl7CisJCXJlc3VsdCA9IGludDY0X2Rpdl9mYXN0X3RvX251bWVyaWMo dGltZSwgMTAwMDAwMCk7CisJfQorCWVsc2UKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1z ZygiXCJ0aW1lXCIgdW5pdHMgXCIlc1wiIG5vdCByZWNvZ25pemVkIiwKKwkJCQkJCWxvd3Vu aXRzKSkpOworCQlyZXN1bHQgPSAwOworCX0KKworCVBHX1JFVFVSTl9OVU1FUklDKHJlc3Vs dCk7Cit9CisKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgkgVGltZSBXaXRoIFRp bWUgWm9uZSBBRFQKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTI3ODUsNiArMzA1 MSwxMTAgQEAgdGltZXR6X3BhcnQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fRkxP QVQ4KHJlc3VsdCk7CiB9CiAKKworLyogdGltZXR6X3BhcnQoKQorICogRXh0cmFjdCBzcGVj aWZpZWQgZmllbGQgZnJvbSB0aW1lIHR5cGUuCisgKi8KK0RhdHVtCitleHRyYWN0X3RpbWV0 eihQR19GVU5DVElPTl9BUkdTKQoreworCXRleHQJICAgKnVuaXRzID0gUEdfR0VUQVJHX1RF WFRfUFAoMCk7CisJVGltZVR6QURUICAqdGltZSA9IFBHX0dFVEFSR19USU1FVFpBRFRfUCgx KTsKKwlOdW1lcmljCQlyZXN1bHQ7CisJaW50CQkJdHlwZSwKKwkJCQl2YWw7CisJY2hhcgkg ICAqbG93dW5pdHM7CisKKwlsb3d1bml0cyA9IGRvd25jYXNlX3RydW5jYXRlX2lkZW50aWZp ZXIoVkFSREFUQV9BTlkodW5pdHMpLAorCQkJCQkJCQkJCQlWQVJTSVpFX0FOWV9FWEhEUih1 bml0cyksCisJCQkJCQkJCQkJCWZhbHNlKTsKKworCXR5cGUgPSBEZWNvZGVVbml0cygwLCBs b3d1bml0cywgJnZhbCk7CisJaWYgKHR5cGUgPT0gVU5LTk9XTl9GSUVMRCkKKwkJdHlwZSA9 IERlY29kZVNwZWNpYWwoMCwgbG93dW5pdHMsICZ2YWwpOworCisJaWYgKHR5cGUgPT0gVU5J VFMpCisJeworCQlpbnQJCQl0ejsKKwkJZnNlY190CQlmc2VjOworCQlzdHJ1Y3QgcGdfdG0g dHQsCisJCQkJICAgKnRtID0gJnR0OworCisJCXRpbWV0ejJ0bSh0aW1lLCB0bSwgJmZzZWMs ICZ0eik7CisKKwkJc3dpdGNoICh2YWwpCisJCXsKKwkJCWNhc2UgRFRLX1RaOgorCQkJCXJl c3VsdCA9IGludDY0X3RvX251bWVyaWMoLXR6KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBE VEtfVFpfTUlOVVRFOgorCQkJCS8qIHRydW5jKC10eiAvIDYwKSAlIDYwICovCisJCQkJcmVz dWx0ID0gaW50NjRfdG9fbnVtZXJpYygtICh0eiAtIHR6IC8gU0VDU19QRVJfSE9VUiAqIFNF Q1NfUEVSX0hPVVIpIC8gU0VDU19QRVJfTUlOVVRFKTsKKwkJCQlicmVhazsKKworCQkJY2Fz ZSBEVEtfVFpfSE9VUjoKKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKC0gdHogLyBT RUNTX1BFUl9IT1VSKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfTUlDUk9TRUM6CisJ CQkJcmVzdWx0ID0gaW50NjRfdG9fbnVtZXJpYyh0bS0+dG1fc2VjICogMTAwMDAwMCArIGZz ZWMpOworCQkJCWJyZWFrOworCisJCQljYXNlIERUS19NSUxMSVNFQzoKKwkJCQkvKiB0bS0+ dG1fc2VjICogMTAwMCArIGZzZWMgLyAxMDAwCisJCQkJICAgPSAodG0tPnRtX3NlYyAqIDEn MDAwJzAwMCArIGZzZWMpIC8gMTAwMCAqLworCQkJCXJlc3VsdCA9IGludDY0X2Rpdl9mYXN0 X3RvX251bWVyaWModG0tPnRtX3NlYyAqIDEwMDAwMDBMTCArIGZzZWMsIDEwMDApOworCQkJ CWJyZWFrOworCisJCQljYXNlIERUS19TRUNPTkQ6CisJCQkJLyogdG0tPnRtX3NlYyArIGZz ZWMgLyAxJzAwMCcwMDAKKwkJCQkgICA9ICh0bS0+dG1fc2VjICogMScwMDAnMDAwICsgZnNl YykgLyAxJzAwMCcwMDAgKi8KKwkJCQlyZXN1bHQgPSBpbnQ2NF9kaXZfZmFzdF90b19udW1l cmljKHRtLT50bV9zZWMgKiAxMDAwMDAwTEwgKyBmc2VjLCAxMDAwMDAwKTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBEVEtfTUlOVVRFOgorCQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVy aWModG0tPnRtX21pbik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRFRLX0hPVVI6CisJCQkJ cmVzdWx0ID0gaW50NjRfdG9fbnVtZXJpYyh0bS0+dG1faG91cik7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgRFRLX0RBWToKKwkJCWNhc2UgRFRLX01PTlRIOgorCQkJY2FzZSBEVEtfUVVB UlRFUjoKKwkJCWNhc2UgRFRLX1lFQVI6CisJCQljYXNlIERUS19ERUNBREU6CisJCQljYXNl IERUS19DRU5UVVJZOgorCQkJY2FzZSBEVEtfTUlMTEVOTklVTToKKwkJCWRlZmF1bHQ6CisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygiXCJ0aW1lIHdpdGggdGltZSB6b25lXCIg dW5pdHMgXCIlc1wiIG5vdCByZWNvZ25pemVkIiwKKwkJCQkJCQkJbG93dW5pdHMpKSk7CisJ CQkJcmVzdWx0ID0gMDsKKwkJfQorCX0KKwllbHNlIGlmICh0eXBlID09IFJFU0VSViAmJiB2 YWwgPT0gRFRLX0VQT0NIKQorCXsKKwkJLyogdGltZS0+dGltZSAvIDEwMDAwMDAuMCArIHRp bWUtPnpvbmUKKwkJICAgPSAodGltZS0+dGltZSArIHRpbWUtPnpvbmUgKiAxMDAwMDAwKSAv IDEwMDAwMDAuMCAqLworCQlyZXN1bHQgPSBpbnQ2NF9kaXZfZmFzdF90b19udW1lcmljKHRp bWUtPnRpbWUgKyB0aW1lLT56b25lICogMTAwMDAwMExMLCAxMDAwMDAwKTsKKwl9CisJZWxz ZQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJcInRpbWUgd2l0aCB0aW1lIHpvbmVc IiB1bml0cyBcIiVzXCIgbm90IHJlY29nbml6ZWQiLAorCQkJCQkJbG93dW5pdHMpKSk7CisJ CXJlc3VsdCA9IDA7CisJfQorCisJUEdfUkVUVVJOX05VTUVSSUMocmVzdWx0KTsKK30KKwor CiAvKiB0aW1ldHpfem9uZSgpCiAgKiBFbmNvZGUgdGltZSB3aXRoIHRpbWUgem9uZSB0eXBl IHdpdGggc3BlY2lmaWVkIHRpbWUgem9uZS4KICAqIEFwcGxpZXMgRFNUIHJ1bGVzIGFzIG9m IHRoZSBjdXJyZW50IGRhdGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv bnVtZXJpYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYwppbmRleCA2ODIy MDBmNjM2Li4wNTViMDJlZmFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv bnVtZXJpYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKQEAgLTQw OTIsNiArNDA5Miw2MiBAQCBpbnQ2NF90b19udW1lcmljKGludDY0IHZhbCkKIAlyZXR1cm4g cmVzOwogfQogCisvKgorICogQ29udmVydCB2YWwxL3ZhbDIgdG8gbnVtZXJpYy4gIHZhbDIg bXVzdCBiZSBhIHBvd2VyIG9mIDEwLiAgVGhpcyBpcyBtdWNoCisgKiBmYXN0ZXIgdGhhbiBu b3JtYWwgbnVtZXJpYyBkaXZpc2lvbi4KKyAqLworTnVtZXJpYworaW50NjRfZGl2X2Zhc3Rf dG9fbnVtZXJpYyhpbnQ2NCB2YWwxLCBpbnQ2NCB2YWwyKQoreworCU51bWVyaWMJCXJlczsK KwlOdW1lcmljVmFyCXJlc3VsdDsKKwlpbnQ2NAkJeDsKKwlpbnQJCQluOworCWludAkJCXM7 CisKKwl4ID0gdmFsMjsKKwluID0gMDsKKwlzID0gMDsKKworCS8qIGNvdW50IGhvdyBtdWNo IHRvIGRlY3JlYXNlIHRoZSB3ZWlnaHQgYnkgKi8KKwl3aGlsZSAoeCA+PSBOQkFTRSkKKwl7 CisJCXggLz0gTkJBU0U7CisJCW4rKzsKKwl9CisKKwkvKgorCSAqIElmIHRoZXJlIGlzIGFu eXRoaW5nIGxlZnQsIG11bHRpcGx5IHRoZSBkaXZpZGVuZCBieSB3aGF0J3MgbGVmdCwgdGhl bgorCSAqIHNoaWZ0IHRoZSB3ZWlnaHQgYnkgb25lIG1vcmUuICBBbHNvIHJlbWVtYmVyIGJ5 IGhvdyBtdWNoIHdlIG11bHRpcGxpZWQKKwkgKiBzbyB3ZSBjYW4gYWRqdXN0IHRoZSBzY2Fs ZSBiZWxvdy4KKwkgKi8KKwlpZiAoeCA+IDEpCisJeworCQlpZiAodW5saWtlbHkocGdfbXVs X3M2NF9vdmVyZmxvdyh2YWwxLCBOQkFTRS94LCAmdmFsMSkpKQorCQkJZWxvZyhFUlJPUiwg Im92ZXJmbG93Iik7CisJCW4rKzsKKwkJd2hpbGUgKHggPiAxKQorCQl7CisJCQlBc3NlcnQo KHggLyAxMCkgKiAxMCA9PSB4KTsJLyogbXVzdCBiZSBwb3dlciBvZiAxMCAqLworCQkJeCAv PSAxMDsKKwkJCXMrKzsKKwkJfQorCX0KKworCWluaXRfdmFyKCZyZXN1bHQpOworCisJaW50 NjRfdG9fbnVtZXJpY3Zhcih2YWwxLCAmcmVzdWx0KTsKKworCXJlc3VsdC53ZWlnaHQgLT0g bjsKKwlyZXN1bHQuZHNjYWxlICs9IG4gKiBERUNfRElHSVRTIC0gKERFQ19ESUdJVFMgLSBz KTsKKworCXJlcyA9IG1ha2VfcmVzdWx0KCZyZXN1bHQpOworCisJZnJlZV92YXIoJnJlc3Vs dCk7CisKKwlyZXR1cm4gcmVzOworfQorCiBEYXR1bQogaW50NF9udW1lcmljKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggZjBkZTJh MjVjOS4uOGE2ZTI2NWZjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAt OTYxNyw2ICs5NjE3LDI3IEBAIGdldF9mdW5jX3NxbF9zeW50YXgoRnVuY0V4cHIgKmV4cHIs IGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco YnVmLCAiKSkiKTsKIAkJCXJldHVybiB0cnVlOwogCisJCWNhc2UgRl9FWFRSQUNUX1RFWFRf REFURToKKwkJY2FzZSBGX0VYVFJBQ1RfVEVYVF9USU1FOgorCQljYXNlIEZfRVhUUkFDVF9U RVhUX1RJTUVUWjoKKwkJY2FzZSBGX0VYVFJBQ1RfVEVYVF9USU1FU1RBTVA6CisJCWNhc2Ug Rl9FWFRSQUNUX1RFWFRfVElNRVNUQU1QVFo6CisJCWNhc2UgRl9FWFRSQUNUX1RFWFRfSU5U RVJWQUw6CisJCQkvKiBFWFRSQUNUICh4IEZST00geSkgKi8KKwkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiRVhUUkFDVCgiKTsKKwkJCXsKKwkJCQlDb25zdAkgICAqY29uID0g KENvbnN0ICopIGxpbml0aWFsKGV4cHItPmFyZ3MpOworCisJCQkJQXNzZXJ0KElzQShjb24s IENvbnN0KSAmJgorCQkJCQkgICBjb24tPmNvbnN0dHlwZSA9PSBURVhUT0lEICYmCisJCQkJ CSAgICFjb24tPmNvbnN0aXNudWxsKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgVGV4dERhdHVtR2V0Q1N0cmluZyhjb24tPmNvbnN0dmFsdWUpKTsKKwkJCX0KKwkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIEZST00gIik7CisJCQlnZXRfcnVsZV9leHBy KChOb2RlICopIGxzZWNvbmQoZXhwci0+YXJncyksIGNvbnRleHQsIGZhbHNlKTsKKwkJCWFw cGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKKwkJCXJldHVybiB0cnVlOworCiAJCWNh c2UgRl9JU19OT1JNQUxJWkVEOgogCQkJLyogSVMgeHh4IE5PUk1BTElaRUQgKi8KIAkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiKCgiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1l c3RhbXAuYwppbmRleCAwYjFmOTVhNWI0Li5kNzNiNjM1M2Y5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3RpbWVzdGFtcC5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0 ZS5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCiAjaW5jbHVkZSAidXRpbHMvZmxv YXQuaCIKKyNpbmNsdWRlICJ1dGlscy9udW1lcmljLmgiCiAKIC8qCiAgKiBnY2MncyAtZmZh c3QtbWF0aCBzd2l0Y2ggYnJlYWtzIHJvdXRpbmVzIHRoYXQgZXhwZWN0IGV4YWN0IHJlc3Vs dHMgZnJvbQpAQCAtNDQ0Nyw3ICs0NDQ4LDcgQEAgZGF0ZTJpc295ZWFyZGF5KGludCB5ZWFy LCBpbnQgbW9uLCBpbnQgbWRheSkKIH0KIAogLyoKLSAqIE5vbkZpbml0ZVRpbWVzdGFtcFR6 UGFydAorICogTm9uRmluaXRlVGltZXN0YW1wVHpQYXJ0X2Zsb2F0OAogICoKICAqCVVzZWQg YnkgdGltZXN0YW1wX3BhcnQgYW5kIHRpbWVzdGFtcHR6X3BhcnQgd2hlbiBleHRyYWN0aW5n IGZyb20gaW5maW5pdGUKICAqCXRpbWVzdGFtcFt0el0uICBSZXR1cm5zICsvLUluZmluaXR5 IGlmIHRoYXQgaXMgdGhlIGFwcHJvcHJpYXRlIHJlc3VsdCwKQEAgLTQ0NTgsOCArNDQ1OSw4 IEBAIGRhdGUyaXNveWVhcmRheShpbnQgeWVhciwgaW50IG1vbiwgaW50IG1kYXkpCiAgKglk aXNjcmVwYW5jaWVzIGJldHdlZW4gZmluaXRlLSBhbmQgaW5maW5pdGUtaW5wdXQgY2FzZXMu CiAgKi8KIHN0YXRpYyBmbG9hdDgKLU5vbkZpbml0ZVRpbWVzdGFtcFR6UGFydChpbnQgdHlw ZSwgaW50IHVuaXQsIGNoYXIgKmxvd3VuaXRzLAotCQkJCQkJIGJvb2wgaXNOZWdhdGl2ZSwg Ym9vbCBpc1R6KQorTm9uRmluaXRlVGltZXN0YW1wVHpQYXJ0X2Zsb2F0OChpbnQgdHlwZSwg aW50IHVuaXQsIGNoYXIgKmxvd3VuaXRzLAorCQkJCQkJCQlib29sIGlzTmVnYXRpdmUsIGJv b2wgaXNUeikKIHsKIAlpZiAoKHR5cGUgIT0gVU5JVFMpICYmICh0eXBlICE9IFJFU0VSVikp CiAJewpAQCAtNDUyMyw2ICs0NTI0LDg5IEBAIE5vbkZpbml0ZVRpbWVzdGFtcFR6UGFydChp bnQgdHlwZSwgaW50IHVuaXQsIGNoYXIgKmxvd3VuaXRzLAogCX0KIH0KIAorLyoKKyAqIE5v bkZpbml0ZVRpbWVzdGFtcFR6UGFydF9udW1lcmljCisgKgorICoJVXNlZCBieSBleHRyYWN0 X3RpbWVzdGFtcCBhbmQgZXh0cmFjdF90aW1lc3RhbXB0eiB3aGVuIGV4dHJhY3RpbmcgZnJv bSBpbmZpbml0ZQorICoJdGltZXN0YW1wW3R6XS4gIFJldHVybnMgKy8tSW5maW5pdHkgaWYg dGhhdCBpcyB0aGUgYXBwcm9wcmlhdGUgcmVzdWx0LAorICoJb3RoZXJ3aXNlIHJldHVybnMg TlVMTCAod2hpY2ggc2hvdWxkIGJlIHRha2VuIGFzIG1lYW5pbmcgdG8gcmV0dXJuIFNRTCBO VUxMKS4KKyAqCisgKglFcnJvcnMgdGhyb3duIGhlcmUgZm9yIGludmFsaWQgdW5pdHMgc2hv dWxkIGV4YWN0bHkgbWF0Y2ggdGhvc2UgdGhhdAorICoJd291bGQgYmUgdGhyb3duIGluIHRo ZSBjYWxsaW5nIGZ1bmN0aW9ucywgZWxzZSB0aGVyZSB3aWxsIGJlIHVuZXhwZWN0ZWQKKyAq CWRpc2NyZXBhbmNpZXMgYmV0d2VlbiBmaW5pdGUtIGFuZCBpbmZpbml0ZS1pbnB1dCBjYXNl cy4KKyAqLworc3RhdGljIE51bWVyaWMKK05vbkZpbml0ZVRpbWVzdGFtcFR6UGFydF9udW1l cmljKGludCB0eXBlLCBpbnQgdW5pdCwgY2hhciAqbG93dW5pdHMsCisJCQkJCQkJCSBib29s IGlzTmVnYXRpdmUsIGJvb2wgaXNUeikKK3sKKwlpZiAoKHR5cGUgIT0gVU5JVFMpICYmICh0 eXBlICE9IFJFU0VSVikpCisJeworCQlpZiAoaXNUeikKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkg ZXJybXNnKCJ0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUgdW5pdHMgXCIlc1wiIG5vdCByZWNv Z25pemVkIiwKKwkJCQkJCQlsb3d1bml0cykpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJCSBlcnJtc2coInRpbWVzdGFtcCB1bml0cyBcIiVzXCIgbm90IHJlY29nbml6ZWQiLAor CQkJCQkJCWxvd3VuaXRzKSkpOworCX0KKworCXN3aXRjaCAodW5pdCkKKwl7CisJCQkvKiBP c2NpbGxhdGluZyB1bml0cyAqLworCQljYXNlIERUS19NSUNST1NFQzoKKwkJY2FzZSBEVEtf TUlMTElTRUM6CisJCWNhc2UgRFRLX1NFQ09ORDoKKwkJY2FzZSBEVEtfTUlOVVRFOgorCQlj YXNlIERUS19IT1VSOgorCQljYXNlIERUS19EQVk6CisJCWNhc2UgRFRLX01PTlRIOgorCQlj YXNlIERUS19RVUFSVEVSOgorCQljYXNlIERUS19XRUVLOgorCQljYXNlIERUS19ET1c6CisJ CWNhc2UgRFRLX0lTT0RPVzoKKwkJY2FzZSBEVEtfRE9ZOgorCQljYXNlIERUS19UWjoKKwkJ Y2FzZSBEVEtfVFpfTUlOVVRFOgorCQljYXNlIERUS19UWl9IT1VSOgorCQkJcmV0dXJuIE5V TEw7CisKKwkJCS8qIE1vbm90b25pY2FsbHktaW5jcmVhc2luZyB1bml0cyAqLworCQljYXNl IERUS19ZRUFSOgorCQljYXNlIERUS19ERUNBREU6CisJCWNhc2UgRFRLX0NFTlRVUlk6CisJ CWNhc2UgRFRLX01JTExFTk5JVU06CisJCWNhc2UgRFRLX0pVTElBTjoKKwkJY2FzZSBEVEtf SVNPWUVBUjoKKwkJY2FzZSBEVEtfRVBPQ0g6CisJCQlpZiAoaXNOZWdhdGl2ZSkKKwkJCQly ZXR1cm4gRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDMobnVtZXJpY19pbiwK KwkJCQkJCQkJCQkJCQkJICAgQ1N0cmluZ0dldERhdHVtKCItSW5maW5pdHkiKSwKKwkJCQkJ CQkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShJbnZhbGlkT2lkKSwKKwkJCQkJCQkJCQkJ CQkJICAgSW50MzJHZXREYXR1bSgtMSkpKTsKKwkJCWVsc2UKKwkJCQlyZXR1cm4gRGF0dW1H ZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDMobnVtZXJpY19pbiwKKwkJCQkJCQkJCQkJ CQkJICAgQ1N0cmluZ0dldERhdHVtKCJJbmZpbml0eSIpLAorCQkJCQkJCQkJCQkJCQkgICBP YmplY3RJZEdldERhdHVtKEludmFsaWRPaWQpLAorCQkJCQkJCQkJCQkJCQkgICBJbnQzMkdl dERhdHVtKC0xKSkpOworCisJCWRlZmF1bHQ6CisJCQlpZiAoaXNUeikKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCQkJIGVycm1zZygidGltZXN0YW1wIHdpdGggdGltZSB6b25lIHVuaXRzIFwiJXNc IiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJCQkJbG93dW5pdHMpKSk7CisJCQllbHNlCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coInRpbWVzdGFtcCB1bml0cyBcIiVzXCIgbm90IHN1 cHBvcnRlZCIsCisJCQkJCQkJCWxvd3VuaXRzKSkpOworCQkJcmV0dXJuIE5VTEw7CQkvKiBr ZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJfQorfQorCiAvKiB0aW1lc3RhbXBfcGFydCgpCiAg KiBFeHRyYWN0IHNwZWNpZmllZCBmaWVsZCBmcm9tIHRpbWVzdGFtcC4KICAqLwpAQCAtNDU1 MCw5ICs0NjM0LDkgQEAgdGltZXN0YW1wX3BhcnQoUEdfRlVOQ1RJT05fQVJHUykKIAogCWlm IChUSU1FU1RBTVBfTk9UX0ZJTklURSh0aW1lc3RhbXApKQogCXsKLQkJcmVzdWx0ID0gTm9u RmluaXRlVGltZXN0YW1wVHpQYXJ0KHR5cGUsIHZhbCwgbG93dW5pdHMsCi0JCQkJCQkJCQkJ ICBUSU1FU1RBTVBfSVNfTk9CRUdJTih0aW1lc3RhbXApLAotCQkJCQkJCQkJCSAgZmFsc2Up OworCQlyZXN1bHQgPSBOb25GaW5pdGVUaW1lc3RhbXBUelBhcnRfZmxvYXQ4KHR5cGUsIHZh bCwgbG93dW5pdHMsCisJCQkJCQkJCQkJCQkgVElNRVNUQU1QX0lTX05PQkVHSU4odGltZXN0 YW1wKSwKKwkJCQkJCQkJCQkJCSBmYWxzZSk7CiAJCWlmIChyZXN1bHQpCiAJCQlQR19SRVRV Uk5fRkxPQVQ4KHJlc3VsdCk7CiAJCWVsc2UKQEAgLTQ3MTcsNiArNDgwMSwyMjUgQEAgdGlt ZXN0YW1wX3BhcnQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fRkxPQVQ4KHJlc3Vs dCk7CiB9CiAKKy8qIGV4dHJhY3RfdGltZXN0YW1wKCkKKyAqIEV4dHJhY3Qgc3BlY2lmaWVk IGZpZWxkIGZyb20gdGltZXN0YW1wLgorICovCitEYXR1bQorZXh0cmFjdF90aW1lc3RhbXAo UEdfRlVOQ1RJT05fQVJHUykKK3sKKwl0ZXh0CSAgICp1bml0cyA9IFBHX0dFVEFSR19URVhU X1BQKDApOworCVRpbWVzdGFtcAl0aW1lc3RhbXAgPSBQR19HRVRBUkdfVElNRVNUQU1QKDEp OworCU51bWVyaWMJCXJlc3VsdDsKKwlUaW1lc3RhbXAJZXBvY2g7CisJaW50CQkJdHlwZSwK KwkJCQl2YWw7CisJY2hhcgkgICAqbG93dW5pdHM7CisJZnNlY190CQlmc2VjOworCXN0cnVj dCBwZ190bSB0dCwKKwkJCSAgICp0bSA9ICZ0dDsKKworCWxvd3VuaXRzID0gZG93bmNhc2Vf dHJ1bmNhdGVfaWRlbnRpZmllcihWQVJEQVRBX0FOWSh1bml0cyksCisJCQkJCQkJCQkJCVZB UlNJWkVfQU5ZX0VYSERSKHVuaXRzKSwKKwkJCQkJCQkJCQkJZmFsc2UpOworCisJdHlwZSA9 IERlY29kZVVuaXRzKDAsIGxvd3VuaXRzLCAmdmFsKTsKKwlpZiAodHlwZSA9PSBVTktOT1dO X0ZJRUxEKQorCQl0eXBlID0gRGVjb2RlU3BlY2lhbCgwLCBsb3d1bml0cywgJnZhbCk7CisK KwlpZiAoVElNRVNUQU1QX05PVF9GSU5JVEUodGltZXN0YW1wKSkKKwl7CisJCXJlc3VsdCA9 IE5vbkZpbml0ZVRpbWVzdGFtcFR6UGFydF9udW1lcmljKHR5cGUsIHZhbCwgbG93dW5pdHMs CisJCQkJCQkJCQkJICBUSU1FU1RBTVBfSVNfTk9CRUdJTih0aW1lc3RhbXApLAorCQkJCQkJ CQkJCSAgZmFsc2UpOworCQlpZiAocmVzdWx0KQorCQkJUEdfUkVUVVJOX05VTUVSSUMocmVz dWx0KTsKKwkJZWxzZQorCQkJUEdfUkVUVVJOX05VTEwoKTsKKwl9CisKKwlpZiAodHlwZSA9 PSBVTklUUykKKwl7CisJCWlmICh0aW1lc3RhbXAydG0odGltZXN0YW1wLCBOVUxMLCB0bSwg JmZzZWMsIE5VTEwsIE5VTEwpICE9IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEVUSU1FX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJCSBlcnJt c2coInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKSkpOworCisJCXN3aXRjaCAodmFsKQorCQl7 CisJCQljYXNlIERUS19NSUNST1NFQzoKKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmlj KHRtLT50bV9zZWMgKiAxMDAwMDAwICsgZnNlYyk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug RFRLX01JTExJU0VDOgorCQkJCS8qIHRtLT50bV9zZWMgKiAxMDAwICsgZnNlYyAvIDEwMDAK KwkJCQkgICA9ICh0bS0+dG1fc2VjICogMScwMDAnMDAwICsgZnNlYykgLyAxMDAwICovCisJ CQkJcmVzdWx0ID0gaW50NjRfZGl2X2Zhc3RfdG9fbnVtZXJpYyh0bS0+dG1fc2VjICogMTAw MDAwMExMICsgZnNlYywgMTAwMCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRFRLX1NFQ09O RDoKKwkJCQkvKiB0bS0+dG1fc2VjICsgZnNlYyAvIDEnMDAwJzAwMAorCQkJCSAgID0gKHRt LT50bV9zZWMgKiAxJzAwMCcwMDAgKyBmc2VjKSAvIDEnMDAwJzAwMCAqLworCQkJCXJlc3Vs dCA9IGludDY0X2Rpdl9mYXN0X3RvX251bWVyaWModG0tPnRtX3NlYyAqIDEwMDAwMDBMTCAr IGZzZWMsIDEwMDAwMDApOworCQkJCWJyZWFrOworCisJCQljYXNlIERUS19NSU5VVEU6CisJ CQkJcmVzdWx0ID0gaW50NjRfdG9fbnVtZXJpYyh0bS0+dG1fbWluKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBEVEtfSE9VUjoKKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKHRt LT50bV9ob3VyKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfREFZOgorCQkJCXJlc3Vs dCA9IGludDY0X3RvX251bWVyaWModG0tPnRtX21kYXkpOworCQkJCWJyZWFrOworCisJCQlj YXNlIERUS19NT05USDoKKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKHRtLT50bV9t b24pOworCQkJCWJyZWFrOworCisJCQljYXNlIERUS19RVUFSVEVSOgorCQkJCXJlc3VsdCA9 IGludDY0X3RvX251bWVyaWMoKHRtLT50bV9tb24gLSAxKSAvIDMgKyAxKTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBEVEtfV0VFSzoKKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmlj KGRhdGUyaXNvd2Vlayh0bS0+dG1feWVhciwgdG0tPnRtX21vbiwgdG0tPnRtX21kYXkpKTsK KwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfWUVBUjoKKwkJCQlpZiAodG0tPnRtX3llYXIg PiAwKQorCQkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKHRtLT50bV95ZWFyKTsKKwkJ CQllbHNlCisJCQkJCS8qIHRoZXJlIGlzIG5vIHllYXIgMCwganVzdCAxIEJDIGFuZCAxIEFE ICovCisJCQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVyaWModG0tPnRtX3llYXIgLSAxKTsK KwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfREVDQURFOgorCisJCQkJLyoKKwkJCQkgKiB3 aGF0IGlzIGEgZGVjYWRlIHdydCBkYXRlcz8gbGV0IHVzIGFzc3VtZSB0aGF0IGRlY2FkZSAx OTkKKwkJCQkgKiBpcyAxOTkwIHRocnUgMTk5OS4uLiBkZWNhZGUgMCBzdGFydHMgb24geWVh ciAxIEJDLCBhbmQgLTEKKwkJCQkgKiBpcyAxMSBCQyB0aHJ1IDIgQkMuLi4KKwkJCQkgKi8K KwkJCQlpZiAodG0tPnRtX3llYXIgPj0gMCkKKwkJCQkJcmVzdWx0ID0gaW50NjRfdG9fbnVt ZXJpYyh0bS0+dG1feWVhciAvIDEwKTsKKwkJCQllbHNlCisJCQkJCXJlc3VsdCA9IGludDY0 X3RvX251bWVyaWMoLSgoOCAtICh0bS0+dG1feWVhciAtIDEpKSAvIDEwKSk7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgRFRLX0NFTlRVUlk6CisKKwkJCQkvKiAtLS0tCisJCQkJICogY2Vu dHVyaWVzIEFELCBjPjA6IHllYXIgaW4gWyAoYy0xKSogMTAwICsgMSA6IGMqMTAwIF0KKwkJ CQkgKiBjZW50dXJpZXMgQkMsIGM8MDogeWVhciBpbiBbIGMqMTAwIDogKGMrMSkgKiAxMDAg LSAxXQorCQkJCSAqIHRoZXJlIGlzIG5vIG51bWJlciAwIGNlbnR1cnkuCisJCQkJICogLS0t LQorCQkJCSAqLworCQkJCWlmICh0bS0+dG1feWVhciA+IDApCisJCQkJCXJlc3VsdCA9IGlu dDY0X3RvX251bWVyaWMoKHRtLT50bV95ZWFyICsgOTkpIC8gMTAwKTsKKwkJCQllbHNlCisJ CQkJCS8qIGNhdXRpb246IEMgZGl2aXNpb24gbWF5IGhhdmUgbmVnYXRpdmUgcmVtYWluZGVy ICovCisJCQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVyaWMoLSgoOTkgLSAodG0tPnRtX3ll YXIgLSAxKSkgLyAxMDApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfTUlMTEVOTklV TToKKwkJCQkvKiBzZWUgY29tbWVudHMgYWJvdmUuICovCisJCQkJaWYgKHRtLT50bV95ZWFy ID4gMCkKKwkJCQkJcmVzdWx0ID0gaW50NjRfdG9fbnVtZXJpYygodG0tPnRtX3llYXIgKyA5 OTkpIC8gMTAwMCk7CisJCQkJZWxzZQorCQkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmlj KC0oKDk5OSAtICh0bS0+dG1feWVhciAtIDEpKSAvIDEwMDApKTsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBEVEtfSlVMSUFOOgorCQkJCXJlc3VsdCA9IG51bWVyaWNfYWRkX29wdF9lcnJv cigKKwkJCQkJaW50NjRfdG9fbnVtZXJpYyhkYXRlMmoodG0tPnRtX3llYXIsIHRtLT50bV9t b24sIHRtLT50bV9tZGF5KSksCisJCQkJCW51bWVyaWNfZGl2X29wdF9lcnJvcigKKwkJCQkJ CWludDY0X3RvX251bWVyaWMoKCgoKHRtLT50bV9ob3VyICogTUlOU19QRVJfSE9VUikgKyB0 bS0+dG1fbWluKSAqIFNFQ1NfUEVSX01JTlVURSkgKyB0bS0+dG1fc2VjKSAqIDEwMDAwMDBM TCArIGZzZWMpLAorCQkJCQkJaW50NjRfdG9fbnVtZXJpYyhTRUNTX1BFUl9EQVkgKiAxMDAw MDAwTEwpLAorCQkJCQkJTlVMTCksCisJCQkJCU5VTEwpOworCQkJCWJyZWFrOworCisJCQlj YXNlIERUS19JU09ZRUFSOgorCQkJeworCQkJCWludCB0bXAgPSBkYXRlMmlzb3llYXIodG0t PnRtX3llYXIsIHRtLT50bV9tb24sIHRtLT50bV9tZGF5KTsKKwkJCQkvKiBBZGp1c3QgQkMg eWVhcnMgKi8KKwkJCQlpZiAodG1wIDw9IDApCisJCQkJCXRtcCAtPSAxOworCQkJCXJlc3Vs dCA9IGludDY0X3RvX251bWVyaWModG1wKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJY2Fz ZSBEVEtfRE9XOgorCQkJY2FzZSBEVEtfSVNPRE9XOgorCQkJeworCQkJCWludCB0bXAgPSBq MmRheShkYXRlMmoodG0tPnRtX3llYXIsIHRtLT50bV9tb24sIHRtLT50bV9tZGF5KSk7CisJ CQkJaWYgKHZhbCA9PSBEVEtfSVNPRE9XICYmIHRtcCA9PSAwKQorCQkJCQl0bXAgPSA3Owor CQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVyaWModG1wKTsKKwkJCQlicmVhazsKKwkJCX0K KworCQkJY2FzZSBEVEtfRE9ZOgorCQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVyaWMoZGF0 ZTJqKHRtLT50bV95ZWFyLCB0bS0+dG1fbW9uLCB0bS0+dG1fbWRheSkKKwkJCQkJCQkJCQkg IC0gZGF0ZTJqKHRtLT50bV95ZWFyLCAxLCAxKSArIDEpOworCQkJCWJyZWFrOworCisJCQlj YXNlIERUS19UWjoKKwkJCWNhc2UgRFRLX1RaX01JTlVURToKKwkJCWNhc2UgRFRLX1RaX0hP VVI6CisJCQlkZWZhdWx0OgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJ0aW1lc3Rh bXAgdW5pdHMgXCIlc1wiIG5vdCBzdXBwb3J0ZWQiLAorCQkJCQkJCQlsb3d1bml0cykpKTsK KwkJCQlyZXN1bHQgPSAwOworCQl9CisJfQorCWVsc2UgaWYgKHR5cGUgPT0gUkVTRVJWKQor CXsKKwkJc3dpdGNoICh2YWwpCisJCXsKKwkJCWNhc2UgRFRLX0VQT0NIOgorCQkJCS8qICh0 aW1lc3RhbXAgLSBlcG9jaCkgLyAxMDAwMDAwICovCisJCQkJZXBvY2ggPSBTZXRFcG9jaFRp bWVzdGFtcCgpOworCQkJCWlmICh0aW1lc3RhbXAgPCAoUEdfSU5UNjRfTUFYICsgZXBvY2gp KQorCQkJCQlyZXN1bHQgPSBudW1lcmljX2Rpdl9vcHRfZXJyb3IoCisJCQkJCQlpbnQ2NF90 b19udW1lcmljKHRpbWVzdGFtcCAtIGVwb2NoKSwKKwkJCQkJCWludDY0X3RvX251bWVyaWMo MTAwMDAwMCksCisJCQkJCQlOVUxMKTsKKwkJCQllbHNlCisJCQkJCXJlc3VsdCA9IG51bWVy aWNfZGl2X29wdF9lcnJvcigKKwkJCQkJCW51bWVyaWNfc3ViX29wdF9lcnJvcihpbnQ2NF90 b19udW1lcmljKHRpbWVzdGFtcCksCisJCQkJCQkJCQkJCSAgaW50NjRfdG9fbnVtZXJpYyhl cG9jaCksCisJCQkJCQkJCQkJCSAgTlVMTCksCisJCQkJCQlpbnQ2NF90b19udW1lcmljKDEw MDAwMDApLAorCQkJCQkJTlVMTCk7CisJCQkJcmVzdWx0ID0gRGF0dW1HZXROdW1lcmljKERp cmVjdEZ1bmN0aW9uQ2FsbDIobnVtZXJpY19yb3VuZCwKKwkJCQkJCQkJCQkJCQkJCSBOdW1l cmljR2V0RGF0dW0ocmVzdWx0KSwKKwkJCQkJCQkJCQkJCQkJCSBJbnQzMkdldERhdHVtKDYp KSk7CisJCQkJYnJlYWs7CisKKwkJCWRlZmF1bHQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBl cnJtc2coInRpbWVzdGFtcCB1bml0cyBcIiVzXCIgbm90IHN1cHBvcnRlZCIsCisJCQkJCQkJ CWxvd3VuaXRzKSkpOworCQkJCXJlc3VsdCA9IDA7CisJCX0KKworCX0KKwllbHNlCisJewor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCSBlcnJtc2coInRpbWVzdGFtcCB1bml0cyBcIiVzXCIgbm90IHJl Y29nbml6ZWQiLCBsb3d1bml0cykpKTsKKwkJcmVzdWx0ID0gMDsKKwl9CisKKwlQR19SRVRV Uk5fTlVNRVJJQyhyZXN1bHQpOworfQorCiAvKiB0aW1lc3RhbXB0el9wYXJ0KCkKICAqIEV4 dHJhY3Qgc3BlY2lmaWVkIGZpZWxkIGZyb20gdGltZXN0YW1wIHdpdGggdGltZSB6b25lLgog ICovCkBAIC00NzQ2LDkgKzUwNDksOSBAQCB0aW1lc3RhbXB0el9wYXJ0KFBHX0ZVTkNUSU9O X0FSR1MpCiAKIAlpZiAoVElNRVNUQU1QX05PVF9GSU5JVEUodGltZXN0YW1wKSkKIAl7Ci0J CXJlc3VsdCA9IE5vbkZpbml0ZVRpbWVzdGFtcFR6UGFydCh0eXBlLCB2YWwsIGxvd3VuaXRz LAotCQkJCQkJCQkJCSAgVElNRVNUQU1QX0lTX05PQkVHSU4odGltZXN0YW1wKSwKLQkJCQkJ CQkJCQkgIHRydWUpOworCQlyZXN1bHQgPSBOb25GaW5pdGVUaW1lc3RhbXBUelBhcnRfZmxv YXQ4KHR5cGUsIHZhbCwgbG93dW5pdHMsCisJCQkJCQkJCQkJCQkgVElNRVNUQU1QX0lTX05P QkVHSU4odGltZXN0YW1wKSwKKwkJCQkJCQkJCQkJCSB0cnVlKTsKIAkJaWYgKHJlc3VsdCkK IAkJCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0KTsKIAkJZWxzZQpAQCAtNDkxNSw2ICs1MjE4 LDIyNiBAQCB0aW1lc3RhbXB0el9wYXJ0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJO X0ZMT0FUOChyZXN1bHQpOwogfQogCisvKiBleHRyYWN0X3RpbWVzdGFtcHR6KCkKKyAqIEV4 dHJhY3Qgc3BlY2lmaWVkIGZpZWxkIGZyb20gdGltZXN0YW1wIHdpdGggdGltZSB6b25lLgor ICovCitEYXR1bQorZXh0cmFjdF90aW1lc3RhbXB0eihQR19GVU5DVElPTl9BUkdTKQorewor CXRleHQJICAgKnVuaXRzID0gUEdfR0VUQVJHX1RFWFRfUFAoMCk7CisJVGltZXN0YW1wVHog dGltZXN0YW1wID0gUEdfR0VUQVJHX1RJTUVTVEFNUFRaKDEpOworCU51bWVyaWMJCXJlc3Vs dDsKKwlUaW1lc3RhbXAJZXBvY2g7CisJaW50CQkJdHo7CisJaW50CQkJdHlwZSwKKwkJCQl2 YWw7CisJY2hhcgkgICAqbG93dW5pdHM7CisJZnNlY190CQlmc2VjOworCXN0cnVjdCBwZ190 bSB0dCwKKwkJCSAgICp0bSA9ICZ0dDsKKworCWxvd3VuaXRzID0gZG93bmNhc2VfdHJ1bmNh dGVfaWRlbnRpZmllcihWQVJEQVRBX0FOWSh1bml0cyksCisJCQkJCQkJCQkJCVZBUlNJWkVf QU5ZX0VYSERSKHVuaXRzKSwKKwkJCQkJCQkJCQkJZmFsc2UpOworCisJdHlwZSA9IERlY29k ZVVuaXRzKDAsIGxvd3VuaXRzLCAmdmFsKTsKKwlpZiAodHlwZSA9PSBVTktOT1dOX0ZJRUxE KQorCQl0eXBlID0gRGVjb2RlU3BlY2lhbCgwLCBsb3d1bml0cywgJnZhbCk7CisKKwlpZiAo VElNRVNUQU1QX05PVF9GSU5JVEUodGltZXN0YW1wKSkKKwl7CisJCXJlc3VsdCA9IE5vbkZp bml0ZVRpbWVzdGFtcFR6UGFydF9udW1lcmljKHR5cGUsIHZhbCwgbG93dW5pdHMsCisJCQkJ CQkJCQkJICBUSU1FU1RBTVBfSVNfTk9CRUdJTih0aW1lc3RhbXApLAorCQkJCQkJCQkJCSAg dHJ1ZSk7CisJCWlmIChyZXN1bHQpCisJCQlQR19SRVRVUk5fTlVNRVJJQyhyZXN1bHQpOwor CQllbHNlCisJCQlQR19SRVRVUk5fTlVMTCgpOworCX0KKworCWlmICh0eXBlID09IFVOSVRT KQorCXsKKwkJaWYgKHRpbWVzdGFtcDJ0bSh0aW1lc3RhbXAsICZ0eiwgdG0sICZmc2VjLCBO VUxMLCBOVUxMKSAhPSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9EQVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFOR0UpLAorCQkJCQkgZXJybXNnKCJ0aW1l c3RhbXAgb3V0IG9mIHJhbmdlIikpKTsKKworCQlzd2l0Y2ggKHZhbCkKKwkJeworCQkJY2Fz ZSBEVEtfVFo6CisJCQkJcmVzdWx0ID0gaW50NjRfdG9fbnVtZXJpYygtdHopOworCQkJCWJy ZWFrOworCisJCQljYXNlIERUS19UWl9NSU5VVEU6CisJCQkJLyogdHJ1bmMoLXR6IC8gNjAp ICUgNjAgKi8KKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKC0gKHR6IC0gdHogLyBT RUNTX1BFUl9IT1VSICogU0VDU19QRVJfSE9VUikgLyBTRUNTX1BFUl9NSU5VVEUpOworCQkJ CWJyZWFrOworCisJCQljYXNlIERUS19UWl9IT1VSOgorCQkJCXJlc3VsdCA9IGludDY0X3Rv X251bWVyaWMoLSB0eiAvIFNFQ1NfUEVSX0hPVVIpOworCQkJCWJyZWFrOworCisJCQljYXNl IERUS19NSUNST1NFQzoKKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKHRtLT50bV9z ZWMgKiAxMDAwMDAwICsgZnNlYyk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRFRLX01JTExJ U0VDOgorCQkJCS8qIHRtLT50bV9zZWMgKiAxMDAwICsgZnNlYyAvIDEwMDAKKwkJCQkgICA9 ICh0bS0+dG1fc2VjICogMScwMDAnMDAwICsgZnNlYykgLyAxMDAwICovCisJCQkJcmVzdWx0 ID0gaW50NjRfZGl2X2Zhc3RfdG9fbnVtZXJpYyh0bS0+dG1fc2VjICogMTAwMDAwMExMICsg ZnNlYywgMTAwMCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRFRLX1NFQ09ORDoKKwkJCQkv KiB0bS0+dG1fc2VjICsgZnNlYyAvIDEnMDAwJzAwMAorCQkJCSAgID0gKHRtLT50bV9zZWMg KiAxJzAwMCcwMDAgKyBmc2VjKSAvIDEnMDAwJzAwMCAqLworCQkJCXJlc3VsdCA9IGludDY0 X2Rpdl9mYXN0X3RvX251bWVyaWModG0tPnRtX3NlYyAqIDEwMDAwMDBMTCArIGZzZWMsIDEw MDAwMDApOworCQkJCWJyZWFrOworCisJCQljYXNlIERUS19NSU5VVEU6CisJCQkJcmVzdWx0 ID0gaW50NjRfdG9fbnVtZXJpYyh0bS0+dG1fbWluKTsKKwkJCQlicmVhazsKKworCQkJY2Fz ZSBEVEtfSE9VUjoKKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKHRtLT50bV9ob3Vy KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfREFZOgorCQkJCXJlc3VsdCA9IGludDY0 X3RvX251bWVyaWModG0tPnRtX21kYXkpOworCQkJCWJyZWFrOworCisJCQljYXNlIERUS19N T05USDoKKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKHRtLT50bV9tb24pOworCQkJ CWJyZWFrOworCisJCQljYXNlIERUS19RVUFSVEVSOgorCQkJCXJlc3VsdCA9IGludDY0X3Rv X251bWVyaWMoKHRtLT50bV9tb24gLSAxKSAvIDMgKyAxKTsKKwkJCQlicmVhazsKKworCQkJ Y2FzZSBEVEtfV0VFSzoKKwkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKGRhdGUyaXNv d2Vlayh0bS0+dG1feWVhciwgdG0tPnRtX21vbiwgdG0tPnRtX21kYXkpKTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBEVEtfWUVBUjoKKwkJCQlpZiAodG0tPnRtX3llYXIgPiAwKQorCQkJ CQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKHRtLT50bV95ZWFyKTsKKwkJCQllbHNlCisJ CQkJCS8qIHRoZXJlIGlzIG5vIHllYXIgMCwganVzdCAxIEJDIGFuZCAxIEFEICovCisJCQkJ CXJlc3VsdCA9IGludDY0X3RvX251bWVyaWModG0tPnRtX3llYXIgLSAxKTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBEVEtfREVDQURFOgorCQkJCS8qIHNlZSBjb21tZW50cyBpbiB0aW1l c3RhbXBfcGFydCAqLworCQkJCWlmICh0bS0+dG1feWVhciA+PSAwKQorCQkJCQlyZXN1bHQg PSBpbnQ2NF90b19udW1lcmljKHRtLT50bV95ZWFyIC8gMTApOworCQkJCWVsc2UKKwkJCQkJ cmVzdWx0ID0gaW50NjRfdG9fbnVtZXJpYygtKCg4IC0gKHRtLT50bV95ZWFyIC0gMSkpIC8g MTApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfQ0VOVFVSWToKKwkJCQkvKiBzZWUg Y29tbWVudHMgaW4gdGltZXN0YW1wX3BhcnQgKi8KKwkJCQlpZiAodG0tPnRtX3llYXIgPiAw KQorCQkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKCh0bS0+dG1feWVhciArIDk5KSAv IDEwMCk7CisJCQkJZWxzZQorCQkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKC0oKDk5 IC0gKHRtLT50bV95ZWFyIC0gMSkpIC8gMTAwKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug RFRLX01JTExFTk5JVU06CisJCQkJLyogc2VlIGNvbW1lbnRzIGluIHRpbWVzdGFtcF9wYXJ0 ICovCisJCQkJaWYgKHRtLT50bV95ZWFyID4gMCkKKwkJCQkJcmVzdWx0ID0gaW50NjRfdG9f bnVtZXJpYygodG0tPnRtX3llYXIgKyA5OTkpIC8gMTAwMCk7CisJCQkJZWxzZQorCQkJCQly ZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKC0oKDk5OSAtICh0bS0+dG1feWVhciAtIDEpKSAv IDEwMDApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBEVEtfSlVMSUFOOgorCQkJCXJlc3Vs dCA9IG51bWVyaWNfYWRkX29wdF9lcnJvcigKKwkJCQkJaW50NjRfdG9fbnVtZXJpYyhkYXRl MmoodG0tPnRtX3llYXIsIHRtLT50bV9tb24sIHRtLT50bV9tZGF5KSksCisJCQkJCW51bWVy aWNfZGl2X29wdF9lcnJvcigKKwkJCQkJCWludDY0X3RvX251bWVyaWMoKCgoKHRtLT50bV9o b3VyICogTUlOU19QRVJfSE9VUikgKyB0bS0+dG1fbWluKSAqIFNFQ1NfUEVSX01JTlVURSkg KyB0bS0+dG1fc2VjKSAqIDEwMDAwMDBMTCArIGZzZWMpLAorCQkJCQkJaW50NjRfdG9fbnVt ZXJpYyhTRUNTX1BFUl9EQVkgKiAxMDAwMDAwTEwpLAorCQkJCQkJTlVMTCksCisJCQkJCU5V TEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIERUS19JU09ZRUFSOgorCQkJeworCQkJCWlu dCB0bXAgPSBkYXRlMmlzb3llYXIodG0tPnRtX3llYXIsIHRtLT50bV9tb24sIHRtLT50bV9t ZGF5KTsKKwkJCQkvKiBBZGp1c3QgQkMgeWVhcnMgKi8KKwkJCQlpZiAodG1wIDw9IDApCisJ CQkJCXRtcCAtPSAxOworCQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVyaWModG1wKTsKKwkJ CQlicmVhazsKKwkJCX0KKworCQkJY2FzZSBEVEtfRE9XOgorCQkJY2FzZSBEVEtfSVNPRE9X OgorCQkJeworCQkJCWludCB0bXAgPSBqMmRheShkYXRlMmoodG0tPnRtX3llYXIsIHRtLT50 bV9tb24sIHRtLT50bV9tZGF5KSk7CisJCQkJaWYgKHZhbCA9PSBEVEtfSVNPRE9XICYmIHRt cCA9PSAwKQorCQkJCQl0bXAgPSA3OworCQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVyaWMo dG1wKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJY2FzZSBEVEtfRE9ZOgorCQkJCXJlc3Vs dCA9IGludDY0X3RvX251bWVyaWMoZGF0ZTJqKHRtLT50bV95ZWFyLCB0bS0+dG1fbW9uLCB0 bS0+dG1fbWRheSkKKwkJCQkJCQkJCQkgIC0gZGF0ZTJqKHRtLT50bV95ZWFyLCAxLCAxKSAr IDEpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkg ZXJybXNnKCJ0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUgdW5pdHMgXCIlc1wiIG5vdCBzdXBw b3J0ZWQiLAorCQkJCQkJCQlsb3d1bml0cykpKTsKKwkJCQlyZXN1bHQgPSAwOworCQl9CisK Kwl9CisJZWxzZSBpZiAodHlwZSA9PSBSRVNFUlYpCisJeworCQlzd2l0Y2ggKHZhbCkKKwkJ eworCQkJY2FzZSBEVEtfRVBPQ0g6CisJCQkJLyogKHRpbWVzdGFtcCAtIGVwb2NoKSAvIDEw MDAwMDAgKi8KKwkJCQllcG9jaCA9IFNldEVwb2NoVGltZXN0YW1wKCk7CisJCQkJaWYgKHRp bWVzdGFtcCA8IChQR19JTlQ2NF9NQVggKyBlcG9jaCkpCisJCQkJCXJlc3VsdCA9IG51bWVy aWNfZGl2X29wdF9lcnJvcigKKwkJCQkJCWludDY0X3RvX251bWVyaWModGltZXN0YW1wIC0g ZXBvY2gpLAorCQkJCQkJaW50NjRfdG9fbnVtZXJpYygxMDAwMDAwKSwKKwkJCQkJCU5VTEwp OworCQkJCWVsc2UKKwkJCQkJcmVzdWx0ID0gbnVtZXJpY19kaXZfb3B0X2Vycm9yKAorCQkJ CQkJbnVtZXJpY19zdWJfb3B0X2Vycm9yKGludDY0X3RvX251bWVyaWModGltZXN0YW1wKSwK KwkJCQkJCQkJCQkJICBpbnQ2NF90b19udW1lcmljKGVwb2NoKSwKKwkJCQkJCQkJCQkJICBO VUxMKSwKKwkJCQkJCWludDY0X3RvX251bWVyaWMoMTAwMDAwMCksCisJCQkJCQlOVUxMKTsK KwkJCQlyZXN1bHQgPSBEYXR1bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMihudW1l cmljX3JvdW5kLAorCQkJCQkJCQkJCQkJCQkJIE51bWVyaWNHZXREYXR1bShyZXN1bHQpLAor CQkJCQkJCQkJCQkJCQkJIEludDMyR2V0RGF0dW0oNikpKTsKKwkJCQlicmVhazsKKworCQkJ ZGVmYXVsdDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygidGltZXN0YW1wIHdpdGgg dGltZSB6b25lIHVuaXRzIFwiJXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJCQkJbG93dW5p dHMpKSk7CisJCQkJcmVzdWx0ID0gMDsKKwkJfQorCX0KKwllbHNlCisJeworCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCSBlcnJtc2coInRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSB1bml0cyBcIiVzXCIg bm90IHJlY29nbml6ZWQiLAorCQkJCQkJbG93dW5pdHMpKSk7CisKKwkJcmVzdWx0ID0gMDsK Kwl9CisKKwlQR19SRVRVUk5fTlVNRVJJQyhyZXN1bHQpOworfQorCiAKIC8qIGludGVydmFs X3BhcnQoKQogICogRXh0cmFjdCBzcGVjaWZpZWQgZmllbGQgZnJvbSBpbnRlcnZhbC4KQEAg LTUwMzIsNiArNTU1NSwxMzUgQEAgaW50ZXJ2YWxfcGFydChQR19GVU5DVElPTl9BUkdTKQog fQogCiAKKy8qIGV4dHJhY3RfaW50ZXJ2YWwoKQorICogRXh0cmFjdCBzcGVjaWZpZWQgZmll bGQgZnJvbSBpbnRlcnZhbC4KKyAqLworRGF0dW0KK2V4dHJhY3RfaW50ZXJ2YWwoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwl0ZXh0CSAgICp1bml0cyA9IFBHX0dFVEFSR19URVhUX1BQKDAp OworCUludGVydmFsICAgKmludGVydmFsID0gUEdfR0VUQVJHX0lOVEVSVkFMX1AoMSk7CisJ TnVtZXJpYwkJcmVzdWx0OworCWludAkJCXR5cGUsCisJCQkJdmFsOworCWNoYXIJICAgKmxv d3VuaXRzOworCWZzZWNfdAkJZnNlYzsKKwlzdHJ1Y3QgcGdfdG0gdHQsCisJCQkgICAqdG0g PSAmdHQ7CisKKwlsb3d1bml0cyA9IGRvd25jYXNlX3RydW5jYXRlX2lkZW50aWZpZXIoVkFS REFUQV9BTlkodW5pdHMpLAorCQkJCQkJCQkJCQlWQVJTSVpFX0FOWV9FWEhEUih1bml0cyks CisJCQkJCQkJCQkJCWZhbHNlKTsKKworCXR5cGUgPSBEZWNvZGVVbml0cygwLCBsb3d1bml0 cywgJnZhbCk7CisJaWYgKHR5cGUgPT0gVU5LTk9XTl9GSUVMRCkKKwkJdHlwZSA9IERlY29k ZVNwZWNpYWwoMCwgbG93dW5pdHMsICZ2YWwpOworCisJaWYgKHR5cGUgPT0gVU5JVFMpCisJ eworCQlpZiAoaW50ZXJ2YWwydG0oKmludGVydmFsLCB0bSwgJmZzZWMpID09IDApCisJCXsK KwkJCXN3aXRjaCAodmFsKQorCQkJeworCQkJCWNhc2UgRFRLX01JQ1JPU0VDOgorCQkJCQkv KiB0bS0+dG1fc2VjICogMTAwMDAwMCArIGZzZWMgKi8KKwkJCQkJcmVzdWx0ID0gaW50NjRf dG9fbnVtZXJpYyh0bS0+dG1fc2VjICogMTAwMDAwMCArIGZzZWMpOworCQkJCQlicmVhazsK KworCQkJCWNhc2UgRFRLX01JTExJU0VDOgorCQkJCQkvKiB0bS0+dG1fc2VjICogMTAwMCAr IGZzZWMgLyAxMDAwCisJCQkJCSAgID0gKHRtLT50bV9zZWMgKiAxJzAwMCcwMDAgKyBmc2Vj KSAvIDEwMDAgKi8KKwkJCQkJcmVzdWx0ID0gaW50NjRfZGl2X2Zhc3RfdG9fbnVtZXJpYyh0 bS0+dG1fc2VjICogMTAwMDAwMExMICsgZnNlYywgMTAwMCk7CisJCQkJCWJyZWFrOworCisJ CQkJY2FzZSBEVEtfU0VDT05EOgorCQkJCQkvKiB0bS0+dG1fc2VjICsgZnNlYyAvIDEnMDAw JzAwMAorCQkJCQkgICA9ICh0bS0+dG1fc2VjICogMScwMDAnMDAwICsgZnNlYykgLyAxJzAw MCcwMDAgKi8KKwkJCQkJcmVzdWx0ID0gaW50NjRfZGl2X2Zhc3RfdG9fbnVtZXJpYyh0bS0+ dG1fc2VjICogMTAwMDAwMExMICsgZnNlYywgMTAwMDAwMCk7CisJCQkJCWJyZWFrOworCisJ CQkJY2FzZSBEVEtfTUlOVVRFOgorCQkJCQlyZXN1bHQgPSBpbnQ2NF90b19udW1lcmljKHRt LT50bV9taW4pOworCQkJCQlicmVhazsKKworCQkJCWNhc2UgRFRLX0hPVVI6CisJCQkJCXJl c3VsdCA9IGludDY0X3RvX251bWVyaWModG0tPnRtX2hvdXIpOworCQkJCQlicmVhazsKKwor CQkJCWNhc2UgRFRLX0RBWToKKwkJCQkJcmVzdWx0ID0gaW50NjRfdG9fbnVtZXJpYyh0bS0+ dG1fbWRheSk7CisJCQkJCWJyZWFrOworCisJCQkJY2FzZSBEVEtfTU9OVEg6CisJCQkJCXJl c3VsdCA9IGludDY0X3RvX251bWVyaWModG0tPnRtX21vbik7CisJCQkJCWJyZWFrOworCisJ CQkJY2FzZSBEVEtfUVVBUlRFUjoKKwkJCQkJcmVzdWx0ID0gaW50NjRfdG9fbnVtZXJpYygo dG0tPnRtX21vbiAvIDMpICsgMSk7CisJCQkJCWJyZWFrOworCisJCQkJY2FzZSBEVEtfWUVB UjoKKwkJCQkJcmVzdWx0ID0gaW50NjRfdG9fbnVtZXJpYyh0bS0+dG1feWVhcik7CisJCQkJ CWJyZWFrOworCisJCQkJY2FzZSBEVEtfREVDQURFOgorCQkJCQkvKiBjYXV0aW9uOiBDIGRp dmlzaW9uIG1heSBoYXZlIG5lZ2F0aXZlIHJlbWFpbmRlciAqLworCQkJCQlyZXN1bHQgPSBp bnQ2NF90b19udW1lcmljKHRtLT50bV95ZWFyIC8gMTApOworCQkJCQlicmVhazsKKworCQkJ CWNhc2UgRFRLX0NFTlRVUlk6CisJCQkJCS8qIGNhdXRpb246IEMgZGl2aXNpb24gbWF5IGhh dmUgbmVnYXRpdmUgcmVtYWluZGVyICovCisJCQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVy aWModG0tPnRtX3llYXIgLyAxMDApOworCQkJCQlicmVhazsKKworCQkJCWNhc2UgRFRLX01J TExFTk5JVU06CisJCQkJCS8qIGNhdXRpb246IEMgZGl2aXNpb24gbWF5IGhhdmUgbmVnYXRp dmUgcmVtYWluZGVyICovCisJCQkJCXJlc3VsdCA9IGludDY0X3RvX251bWVyaWModG0tPnRt X3llYXIgLyAxMDAwKTsKKwkJCQkJYnJlYWs7CisKKwkJCQlkZWZhdWx0OgorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJCQkgZXJybXNnKCJpbnRlcnZhbCB1bml0cyBcIiVzXCIgbm90IHN1cHBv cnRlZCIsCisJCQkJCQkJCQlsb3d1bml0cykpKTsKKwkJCQkJcmVzdWx0ID0gMDsKKwkJCX0K KworCQl9CisJCWVsc2UKKwkJeworCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBjb252ZXJ0 IGludGVydmFsIHRvIHRtIik7CisJCQlyZXN1bHQgPSAwOworCQl9CisJfQorCWVsc2UgaWYg KHR5cGUgPT0gUkVTRVJWICYmIHZhbCA9PSBEVEtfRVBPQ0gpCisJeworCQlyZXN1bHQgPQor CQkJbnVtZXJpY19hZGRfb3B0X2Vycm9yKAorCQkJCW51bWVyaWNfZGl2X29wdF9lcnJvcihp bnQ2NF90b19udW1lcmljKGludGVydmFsLT50aW1lKSwKKwkJCQkJCQkJCSAgaW50NjRfdG9f bnVtZXJpYygxMDAwMDAwKSwKKwkJCQkJCQkJCSAgTlVMTCksCisJCQkJaW50NjRfdG9fbnVt ZXJpYygoKGludDY0KSBEQVlTX1BFUl9ZRUFSICogU0VDU19QRVJfREFZKSAqIChpbnRlcnZh bC0+bW9udGggLyBNT05USFNfUEVSX1lFQVIpICsKKwkJCQkJCQkJICgoaW50NjQpIERBWVNf UEVSX01PTlRIICogU0VDU19QRVJfREFZKSAqIChpbnRlcnZhbC0+bW9udGggJSBNT05USFNf UEVSX1lFQVIpICsKKwkJCQkJCQkJICgoaW50NjQpIFNFQ1NfUEVSX0RBWSkgKiBpbnRlcnZh bC0+ZGF5KSwKKwkJCQlOVUxMKTsKKwkJcmVzdWx0ID0gRGF0dW1HZXROdW1lcmljKERpcmVj dEZ1bmN0aW9uQ2FsbDIobnVtZXJpY19yb3VuZCwKKwkJCQkJCQkJCQkJCQkgTnVtZXJpY0dl dERhdHVtKHJlc3VsdCksCisJCQkJCQkJCQkJCQkJIEludDMyR2V0RGF0dW0oNikpKTsKKwl9 CisJZWxzZQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJpbnRlcnZhbCB1bml0cyBc IiVzXCIgbm90IHJlY29nbml6ZWQiLAorCQkJCQkJbG93dW5pdHMpKSk7CisJCXJlc3VsdCA9 IDA7CisJfQorCisJUEdfUkVUVVJOX05VTUVSSUMocmVzdWx0KTsKK30KKworCiAvKgl0aW1l c3RhbXBfem9uZSgpCiAgKglFbmNvZGUgdGltZXN0YW1wIHR5cGUgd2l0aCBzcGVjaWZpZWQg dGltZSB6b25lLgogICoJVGhpcyBmdW5jdGlvbiBpcyBqdXN0IHRpbWVzdGFtcDJ0aW1lc3Rh bXB0eigpIGV4Y2VwdCBpbnN0ZWFkIG9mCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRl eCA5MzM5M2ZjZmQ0Li4yMDg3MzE1MzIxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK QEAgLTIzMzYsOSArMjMzNiwxNSBAQAogeyBvaWQgPT4gJzExNzEnLCBkZXNjciA9PiAnZXh0 cmFjdCBmaWVsZCBmcm9tIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZScsCiAgIHByb25hbWUg PT4gJ2RhdGVfcGFydCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnZmxv YXQ4JywKICAgcHJvYXJndHlwZXMgPT4gJ3RleHQgdGltZXN0YW1wdHonLCBwcm9zcmMgPT4g J3RpbWVzdGFtcHR6X3BhcnQnIH0sCit7IG9pZCA9PiAnOTk4MycsIGRlc2NyID0+ICdleHRy YWN0IGZpZWxkIGZyb20gdGltZXN0YW1wIHdpdGggdGltZSB6b25lJywKKyAgcHJvbmFtZSA9 PiAnZXh0cmFjdCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnbnVtZXJp YycsCisgIHByb2FyZ3R5cGVzID0+ICd0ZXh0IHRpbWVzdGFtcHR6JywgcHJvc3JjID0+ICdl eHRyYWN0X3RpbWVzdGFtcHR6JyB9LAogeyBvaWQgPT4gJzExNzInLCBkZXNjciA9PiAnZXh0 cmFjdCBmaWVsZCBmcm9tIGludGVydmFsJywKICAgcHJvbmFtZSA9PiAnZGF0ZV9wYXJ0Jywg cHJvcmV0dHlwZSA9PiAnZmxvYXQ4JywKICAgcHJvYXJndHlwZXMgPT4gJ3RleHQgaW50ZXJ2 YWwnLCBwcm9zcmMgPT4gJ2ludGVydmFsX3BhcnQnIH0sCit7IG9pZCA9PiAnOTk4NCcsIGRl c2NyID0+ICdleHRyYWN0IGZpZWxkIGZyb20gaW50ZXJ2YWwnLAorICBwcm9uYW1lID0+ICdl eHRyYWN0JywgcHJvcmV0dHlwZSA9PiAnbnVtZXJpYycsCisgIHByb2FyZ3R5cGVzID0+ICd0 ZXh0IGludGVydmFsJywgcHJvc3JjID0+ICdleHRyYWN0X2ludGVydmFsJyB9LAogeyBvaWQg PT4gJzExNzQnLCBkZXNjciA9PiAnY29udmVydCBkYXRlIHRvIHRpbWVzdGFtcCB3aXRoIHRp bWUgem9uZScsCiAgIHByb25hbWUgPT4gJ3RpbWVzdGFtcHR6JywgcHJvdm9sYXRpbGUgPT4g J3MnLCBwcm9yZXR0eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIHByb2FyZ3R5cGVzID0+ICdk YXRlJywgcHJvc3JjID0+ICdkYXRlX3RpbWVzdGFtcHR6JyB9LApAQCAtMjQ4Niw2ICsyNDky LDkgQEAKIHsgb2lkID0+ICcxMjczJywgZGVzY3IgPT4gJ2V4dHJhY3QgZmllbGQgZnJvbSB0 aW1lIHdpdGggdGltZSB6b25lJywKICAgcHJvbmFtZSA9PiAnZGF0ZV9wYXJ0JywgcHJvcmV0 dHlwZSA9PiAnZmxvYXQ4JywgcHJvYXJndHlwZXMgPT4gJ3RleHQgdGltZXR6JywKICAgcHJv c3JjID0+ICd0aW1ldHpfcGFydCcgfSwKK3sgb2lkID0+ICc5OTgxJywgZGVzY3IgPT4gJ2V4 dHJhY3QgZmllbGQgZnJvbSB0aW1lIHdpdGggdGltZSB6b25lJywKKyAgcHJvbmFtZSA9PiAn ZXh0cmFjdCcsIHByb3JldHR5cGUgPT4gJ251bWVyaWMnLCBwcm9hcmd0eXBlcyA9PiAndGV4 dCB0aW1ldHonLAorICBwcm9zcmMgPT4gJ2V4dHJhY3RfdGltZXR6JyB9LAogeyBvaWQgPT4g JzEyNzQnLAogICBwcm9uYW1lID0+ICdpbnQ4NHBsJywgcHJvcmV0dHlwZSA9PiAnaW50OCcs IHByb2FyZ3R5cGVzID0+ICdpbnQ4IGludDQnLAogICBwcm9zcmMgPT4gJ2ludDg0cGwnIH0s CkBAIC0yODMxLDkgKzI4NDAsMTUgQEAKICAgcHJvbmFtZSA9PiAnZGF0ZV9wYXJ0JywgcHJv bGFuZyA9PiAnc3FsJywgcHJvcmV0dHlwZSA9PiAnZmxvYXQ4JywKICAgcHJvYXJndHlwZXMg PT4gJ3RleHQgZGF0ZScsCiAgIHByb3NyYyA9PiAnc2VsZWN0IHBnX2NhdGFsb2cuZGF0ZV9w YXJ0KCQxLCBjYXN0KCQyIGFzIHRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZSkpJyB9LAor eyBvaWQgPT4gJzk5NzknLCBkZXNjciA9PiAnZXh0cmFjdCBmaWVsZCBmcm9tIGRhdGUnLAor ICBwcm9uYW1lID0+ICdleHRyYWN0JywgcHJvcmV0dHlwZSA9PiAnbnVtZXJpYycsIHByb2Fy Z3R5cGVzID0+ICd0ZXh0IGRhdGUnLAorICBwcm9zcmMgPT4gJ2V4dHJhY3RfZGF0ZScgfSwK IHsgb2lkID0+ICcxMzg1JywgZGVzY3IgPT4gJ2V4dHJhY3QgZmllbGQgZnJvbSB0aW1lJywK ICAgcHJvbmFtZSA9PiAnZGF0ZV9wYXJ0JywgcHJvcmV0dHlwZSA9PiAnZmxvYXQ4JywgcHJv YXJndHlwZXMgPT4gJ3RleHQgdGltZScsCiAgIHByb3NyYyA9PiAndGltZV9wYXJ0JyB9LAor eyBvaWQgPT4gJzk5ODAnLCBkZXNjciA9PiAnZXh0cmFjdCBmaWVsZCBmcm9tIHRpbWUnLAor ICBwcm9uYW1lID0+ICdleHRyYWN0JywgcHJvcmV0dHlwZSA9PiAnbnVtZXJpYycsIHByb2Fy Z3R5cGVzID0+ICd0ZXh0IHRpbWUnLAorICBwcm9zcmMgPT4gJ2V4dHJhY3RfdGltZScgfSwK IHsgb2lkID0+ICcxMzg2JywKICAgZGVzY3IgPT4gJ2RhdGUgZGlmZmVyZW5jZSBmcm9tIHRv ZGF5IHByZXNlcnZpbmcgbW9udGhzIGFuZCB5ZWFycycsCiAgIHByb25hbWUgPT4gJ2FnZScs IHByb2xhbmcgPT4gJ3NxbCcsIHByb3ZvbGF0aWxlID0+ICdzJywKQEAgLTU4MTAsNiArNTgy NSw5IEBACiB7IG9pZCA9PiAnMjAyMScsIGRlc2NyID0+ICdleHRyYWN0IGZpZWxkIGZyb20g dGltZXN0YW1wJywKICAgcHJvbmFtZSA9PiAnZGF0ZV9wYXJ0JywgcHJvcmV0dHlwZSA9PiAn ZmxvYXQ4JywKICAgcHJvYXJndHlwZXMgPT4gJ3RleHQgdGltZXN0YW1wJywgcHJvc3JjID0+ ICd0aW1lc3RhbXBfcGFydCcgfSwKK3sgb2lkID0+ICc5OTgyJywgZGVzY3IgPT4gJ2V4dHJh Y3QgZmllbGQgZnJvbSB0aW1lc3RhbXAnLAorICBwcm9uYW1lID0+ICdleHRyYWN0JywgcHJv cmV0dHlwZSA9PiAnbnVtZXJpYycsCisgIHByb2FyZ3R5cGVzID0+ICd0ZXh0IHRpbWVzdGFt cCcsIHByb3NyYyA9PiAnZXh0cmFjdF90aW1lc3RhbXAnIH0sCiB7IG9pZCA9PiAnMjAyNCcs IGRlc2NyID0+ICdjb252ZXJ0IGRhdGUgdG8gdGltZXN0YW1wJywKICAgcHJvbmFtZSA9PiAn dGltZXN0YW1wJywgcHJvcmV0dHlwZSA9PiAndGltZXN0YW1wJywgcHJvYXJndHlwZXMgPT4g J2RhdGUnLAogICBwcm9zcmMgPT4gJ2RhdGVfdGltZXN0YW1wJyB9LApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvbnVtZXJpYy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbnVtZXJp Yy5oCmluZGV4IGEzNjJiNWJlYjIuLmM1YWU2NjQ2OWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL251bWVyaWMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9udW1lcmljLmgK QEAgLTYzLDYgKzYzLDcgQEAgZXh0ZXJuIGNoYXIgKm51bWVyaWNfb3V0X3NjaShOdW1lcmlj IG51bSwgaW50IHNjYWxlKTsKIGV4dGVybiBjaGFyICpudW1lcmljX25vcm1hbGl6ZShOdW1l cmljIG51bSk7CiAKIGV4dGVybiBOdW1lcmljIGludDY0X3RvX251bWVyaWMoaW50NjQgdmFs KTsKK2V4dGVybiBOdW1lcmljIGludDY0X2Rpdl9mYXN0X3RvX251bWVyaWMoaW50NjQgdmFs MSwgaW50NjQgdmFsMik7CiAKIGV4dGVybiBOdW1lcmljIG51bWVyaWNfYWRkX29wdF9lcnJv cihOdW1lcmljIG51bTEsIE51bWVyaWMgbnVtMiwKIAkJCQkJCQkJCSBib29sICpoYXZlX2Vy cm9yKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3Zp ZXcub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdmlldy5vdXQKaW5k ZXggYmQ1ZmU2MDQ1MC4uY2RjZTRlMDcyNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jcmVhdGVfdmlldy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jcmVhdGVfdmlldy5vdXQKQEAgLTE3NDIsNyArMTc0Miw3IEBAIHNlbGVjdAogc2Vs ZWN0IHBnX2dldF92aWV3ZGVmKCd0dDIwMXYnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotICBTRUxFQ1QgZGF0ZV9wYXJ0KCdkYXknOjp0ZXh0LCBub3coKSkg QVMgZXh0ciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgU0VMRUNUIEVYVFJBQ1QoZGF5IEZST00gbm93KCkpIEFTIGV4dHIsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICgo bm93KCksICdAIDEgZGF5Jzo6aW50ZXJ2YWwpIE9WRVJMQVBTIChDVVJSRU5UX1RJTUVTVEFN UCgyKSwgJ0AgMSBkYXknOjppbnRlcnZhbCkpIEFTIG8sKwogICAgICAoKCdmb28nOjp0ZXh0 KSBJUyBOT1JNQUxJWkVEKSBBUyBpc24sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgKCgnZm9vJzo6dGV4dCkgSVMgTkZLQyBO T1JNQUxJWkVEKSBBUyBpc25uLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Rh dGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kYXRlLm91dAppbmRleCAxYjky MWNlMjE1Li5kNzY3N2ZjMGI1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2RhdGUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZGF0ZS5vdXQK QEAgLTk2Niw3OCArOTY2LDc4IEBAIFNFTEVDVCBmMSBhcyAiZGF0ZSIsCiAtLSBlcG9jaAog LS0KIFNFTEVDVCBFWFRSQUNUKEVQT0NIIEZST00gREFURSAgICAgICAgJzE5NzAtMDEtMDEn KTsgICAgIC0tICAwCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgIDAKKyBl eHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAgMAogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFD VChFUE9DSCBGUk9NIFRJTUVTVEFNUCAgICcxOTcwLTAxLTAxJyk7ICAgICAtLSAgMAotIGRh dGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAwCisgZXh0cmFjdCAgCistLS0tLS0t LS0tCisgMC4wMDAwMDAKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoRVBPQ0ggRlJPTSBU SU1FU1RBTVBUWiAnMTk3MC0wMS0wMSswMCcpOyAgLS0gIDAKLSBkYXRlX3BhcnQgCi0tLS0t LS0tLS0tLQotICAgICAgICAgMAorIGV4dHJhY3QgIAorLS0tLS0tLS0tLQorIDAuMDAwMDAw CiAoMSByb3cpCiAKIC0tCiAtLSBjZW50dXJ5CiAtLQogU0VMRUNUIEVYVFJBQ1QoQ0VOVFVS WSBGUk9NIERBVEUgJzAxMDEtMTItMzEgQkMnKTsgLS0gLTIKLSBkYXRlX3BhcnQgCi0tLS0t LS0tLS0tLQotICAgICAgICAtMgorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAgIC0yCiAo MSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKENFTlRVUlkgRlJPTSBEQVRFICcwMTAwLTEyLTMx IEJDJyk7IC0tIC0xCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgLTEKKyBl eHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAtMQogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFD VChDRU5UVVJZIEZST00gREFURSAnMDAwMS0xMi0zMSBCQycpOyAtLSAtMQotIGRhdGVfcGFy dCAKLS0tLS0tLS0tLS0tCi0gICAgICAgIC0xCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAg ICAgLTEKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoQ0VOVFVSWSBGUk9NIERBVEUgJzAw MDEtMDEtMDEnKTsgICAgLS0gIDEKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAg ICAgMQorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAgICAxCiAoMSByb3cpCiAKIFNFTEVD VCBFWFRSQUNUKENFTlRVUlkgRlJPTSBEQVRFICcwMDAxLTAxLTAxIEFEJyk7IC0tICAxCi0g ZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgIDEKKyBleHRyYWN0IAorLS0tLS0t LS0tCisgICAgICAgMQogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChDRU5UVVJZIEZST00g REFURSAnMTkwMC0xMi0zMScpOyAgICAtLSAxOQotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0t Ci0gICAgICAgIDE5CisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgMTkKICgxIHJvdykK IAogU0VMRUNUIEVYVFJBQ1QoQ0VOVFVSWSBGUk9NIERBVEUgJzE5MDEtMDEtMDEnKTsgICAg LS0gMjAKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAyMAorIGV4dHJhY3Qg CistLS0tLS0tLS0KKyAgICAgIDIwCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKENFTlRV UlkgRlJPTSBEQVRFICcyMDAwLTEyLTMxJyk7ICAgIC0tIDIwCi0gZGF0ZV9wYXJ0IAotLS0t LS0tLS0tLS0KLSAgICAgICAgMjAKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAyMAog KDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChDRU5UVVJZIEZST00gREFURSAnMjAwMS0wMS0w MScpOyAgICAtLSAyMQotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgIDIxCisg ZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgMjEKICgxIHJvdykKIAogU0VMRUNUIEVYVFJB Q1QoQ0VOVFVSWSBGUk9NIENVUlJFTlRfREFURSk+PTIxIEFTIFRydWU7ICAgICAtLSB0cnVl CkBAIC0xMDUwLDkxICsxMDUwLDkxIEBAIFNFTEVDVCBFWFRSQUNUKENFTlRVUlkgRlJPTSBD VVJSRU5UX0RBVEUpPj0yMSBBUyBUcnVlOyAgICAgLS0gdHJ1ZQogLS0gbWlsbGVubml1bQog LS0KIFNFTEVDVCBFWFRSQUNUKE1JTExFTk5JVU0gRlJPTSBEQVRFICcwMDAxLTEyLTMxIEJD Jyk7IC0tIC0xCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgLTEKKyBleHRy YWN0IAorLS0tLS0tLS0tCisgICAgICAtMQogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChN SUxMRU5OSVVNIEZST00gREFURSAnMDAwMS0wMS0wMSBBRCcpOyAtLSAgMQotIGRhdGVfcGFy dCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAxCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAg ICAgIDEKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoTUlMTEVOTklVTSBGUk9NIERBVEUg JzEwMDAtMTItMzEnKTsgICAgLS0gIDEKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAg ICAgICAgMQorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAgICAxCiAoMSByb3cpCiAKIFNF TEVDVCBFWFRSQUNUKE1JTExFTk5JVU0gRlJPTSBEQVRFICcxMDAxLTAxLTAxJyk7ICAgIC0t ICAyCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgIDIKKyBleHRyYWN0IAor LS0tLS0tLS0tCisgICAgICAgMgogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChNSUxMRU5O SVVNIEZST00gREFURSAnMjAwMC0xMi0zMScpOyAgICAtLSAgMgotIGRhdGVfcGFydCAKLS0t LS0tLS0tLS0tCi0gICAgICAgICAyCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgIDIK ICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoTUlMTEVOTklVTSBGUk9NIERBVEUgJzIwMDEt MDEtMDEnKTsgICAgLS0gIDMKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAg MworIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAgICAzCiAoMSByb3cpCiAKIC0tIG5leHQg dGVzdCB0byBiZSBmaXhlZCBvbiB0aGUgdHVybiBvZiB0aGUgbmV4dCBtaWxsZW5uaXVtOy0p CiBTRUxFQ1QgRVhUUkFDVChNSUxMRU5OSVVNIEZST00gQ1VSUkVOVF9EQVRFKTsgICAgICAg ICAtLSAgMwotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAzCisgZXh0cmFj dCAKKy0tLS0tLS0tLQorICAgICAgIDMKICgxIHJvdykKIAogLS0KIC0tIGRlY2FkZQogLS0K IFNFTEVDVCBFWFRSQUNUKERFQ0FERSBGUk9NIERBVEUgJzE5OTQtMTItMjUnKTsgICAgLS0g MTk5Ci0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAxOTkKKyBleHRyYWN0IAor LS0tLS0tLS0tCisgICAgIDE5OQogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChERUNBREUg RlJPTSBEQVRFICcwMDEwLTAxLTAxJyk7ICAgIC0tICAgMQotIGRhdGVfcGFydCAKLS0tLS0t LS0tLS0tCi0gICAgICAgICAxCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgIDEKICgx IHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoREVDQURFIEZST00gREFURSAnMDAwOS0xMi0zMScp OyAgICAtLSAgIDAKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAgMAorIGV4 dHJhY3QgCistLS0tLS0tLS0KKyAgICAgICAwCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNU KERFQ0FERSBGUk9NIERBVEUgJzAwMDEtMDEtMDEgQkMnKTsgLS0gICAwCi0gZGF0ZV9wYXJ0 IAotLS0tLS0tLS0tLS0KLSAgICAgICAgIDAKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAg ICAgMAogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChERUNBREUgRlJPTSBEQVRFICcwMDAy LTEyLTMxIEJDJyk7IC0tICAtMQotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAg IC0xCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgLTEKICgxIHJvdykKIAogU0VMRUNU IEVYVFJBQ1QoREVDQURFIEZST00gREFURSAnMDAxMS0wMS0wMSBCQycpOyAtLSAgLTEKLSBk YXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAtMQorIGV4dHJhY3QgCistLS0tLS0t LS0KKyAgICAgIC0xCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKERFQ0FERSBGUk9NIERB VEUgJzAwMTItMTItMzEgQkMnKTsgLS0gIC0yCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0K LSAgICAgICAgLTIKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAtMgogKDEgcm93KQog CiAtLQpAQCAtMTE0OCwxMzUgKzExNDgsMTEyIEBAIFNFTEVDVCBFWFRSQUNUKENFTlRVUlkg RlJPTSBOT1coKSk+PTIxIEFTIFRydWU7ICAgICAgIC0tIHRydWUKICgxIHJvdykKIAogU0VM RUNUIEVYVFJBQ1QoQ0VOVFVSWSBGUk9NIFRJTUVTVEFNUCAnMTk3MC0wMy0yMCAwNDozMDow MC4wMDAwMCcpOyAtLSAyMAotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgIDIw CisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgMjAKICgxIHJvdykKIAogLS0KIC0tIGFs bCBwb3NzaWJsZSBmaWVsZHMKIC0tCiBTRUxFQ1QgRVhUUkFDVChNSUNST1NFQ09ORFMgIEZS T00gREFURSAnMjAyMC0wOC0xMScpOwotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAg ICAgICAwCi0oMSByb3cpCi0KK0VSUk9SOiAgZGF0ZSB1bml0cyAibWljcm9zZWNvbmRzIiBu b3Qgc3VwcG9ydGVkCiBTRUxFQ1QgRVhUUkFDVChNSUxMSVNFQ09ORFMgIEZST00gREFURSAn MjAyMC0wOC0xMScpOwotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAwCi0o MSByb3cpCi0KK0VSUk9SOiAgZGF0ZSB1bml0cyAibWlsbGlzZWNvbmRzIiBub3Qgc3VwcG9y dGVkCiBTRUxFQ1QgRVhUUkFDVChTRUNPTkQgICAgICAgIEZST00gREFURSAnMjAyMC0wOC0x MScpOwotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAwCi0oMSByb3cpCi0K K0VSUk9SOiAgZGF0ZSB1bml0cyAic2Vjb25kIiBub3Qgc3VwcG9ydGVkCiBTRUxFQ1QgRVhU UkFDVChNSU5VVEUgICAgICAgIEZST00gREFURSAnMjAyMC0wOC0xMScpOwotIGRhdGVfcGFy dCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAwCi0oMSByb3cpCi0KK0VSUk9SOiAgZGF0ZSB1 bml0cyAibWludXRlIiBub3Qgc3VwcG9ydGVkCiBTRUxFQ1QgRVhUUkFDVChIT1VSICAgICAg ICAgIEZST00gREFURSAnMjAyMC0wOC0xMScpOwotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0t Ci0gICAgICAgICAwCi0oMSByb3cpCi0KK0VSUk9SOiAgZGF0ZSB1bml0cyAiaG91ciIgbm90 IHN1cHBvcnRlZAogU0VMRUNUIEVYVFJBQ1QoREFZICAgICAgICAgICBGUk9NIERBVEUgJzIw MjAtMDgtMTEnKTsKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAxMQorIGV4 dHJhY3QgCistLS0tLS0tLS0KKyAgICAgIDExCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNU KE1PTlRIICAgICAgICAgRlJPTSBEQVRFICcyMDIwLTA4LTExJyk7Ci0gZGF0ZV9wYXJ0IAot LS0tLS0tLS0tLS0KLSAgICAgICAgIDgKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAg OAogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChZRUFSICAgICAgICAgIEZST00gREFURSAn MjAyMC0wOC0xMScpOwotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAyMDIwCisg ZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgIDIwMjAKICgxIHJvdykKIAogU0VMRUNUIEVYVFJB Q1QoREVDQURFICAgICAgICBGUk9NIERBVEUgJzIwMjAtMDgtMTEnKTsKLSBkYXRlX3BhcnQg Ci0tLS0tLS0tLS0tLQotICAgICAgIDIwMgorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAg MjAyCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKENFTlRVUlkgICAgICAgRlJPTSBEQVRF ICcyMDIwLTA4LTExJyk7Ci0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgMjEK KyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAyMQogKDEgcm93KQogCiBTRUxFQ1QgRVhU UkFDVChNSUxMRU5OSVVNICAgIEZST00gREFURSAnMjAyMC0wOC0xMScpOwotIGRhdGVfcGFy dCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAzCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAg ICAgIDMKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoSVNPWUVBUiAgICAgICBGUk9NIERB VEUgJzIwMjAtMDgtMTEnKTsKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgMjAy MAorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAyMDIwCiAoMSByb3cpCiAKIFNFTEVDVCBF WFRSQUNUKFFVQVJURVIgICAgICAgRlJPTSBEQVRFICcyMDIwLTA4LTExJyk7Ci0gZGF0ZV9w YXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgIDMKKyBleHRyYWN0IAorLS0tLS0tLS0tCisg ICAgICAgMwogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChXRUVLICAgICAgICAgIEZST00g REFURSAnMjAyMC0wOC0xMScpOwotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAg IDMzCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgMzMKICgxIHJvdykKIAogU0VMRUNU IEVYVFJBQ1QoRE9XICAgICAgICAgICBGUk9NIERBVEUgJzIwMjAtMDgtMTEnKTsKLSBkYXRl X3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAgMgorIGV4dHJhY3QgCistLS0tLS0tLS0K KyAgICAgICAyCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKElTT0RPVyAgICAgICAgRlJP TSBEQVRFICcyMDIwLTA4LTExJyk7Ci0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAg ICAgIDIKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAgMgogKDEgcm93KQogCiBTRUxF Q1QgRVhUUkFDVChET1kgICAgICAgICAgIEZST00gREFURSAnMjAyMC0wOC0xMScpOwotIGRh dGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgMjI0CisgZXh0cmFjdCAKKy0tLS0tLS0t LQorICAgICAyMjQKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoVElNRVpPTkUgICAgICBG Uk9NIERBVEUgJzIwMjAtMDgtMTEnKTsKLUVSUk9SOiAgdGltZXN0YW1wIHVuaXRzICJ0aW1l em9uZSIgbm90IHN1cHBvcnRlZAotQ09OVEVYVDogIFNRTCBmdW5jdGlvbiAiZGF0ZV9wYXJ0 IiBzdGF0ZW1lbnQgMQorRVJST1I6ICBkYXRlIHVuaXRzICJ0aW1lem9uZSIgbm90IHN1cHBv cnRlZAogU0VMRUNUIEVYVFJBQ1QoVElNRVpPTkVfTSAgICBGUk9NIERBVEUgJzIwMjAtMDgt MTEnKTsKLUVSUk9SOiAgdGltZXN0YW1wIHVuaXRzICJ0aW1lem9uZV9tIiBub3Qgc3VwcG9y dGVkCi1DT05URVhUOiAgU1FMIGZ1bmN0aW9uICJkYXRlX3BhcnQiIHN0YXRlbWVudCAxCitF UlJPUjogIGRhdGUgdW5pdHMgInRpbWV6b25lX20iIG5vdCBzdXBwb3J0ZWQKIFNFTEVDVCBF WFRSQUNUKFRJTUVaT05FX0ggICAgRlJPTSBEQVRFICcyMDIwLTA4LTExJyk7Ci1FUlJPUjog IHRpbWVzdGFtcCB1bml0cyAidGltZXpvbmVfaCIgbm90IHN1cHBvcnRlZAotQ09OVEVYVDog IFNRTCBmdW5jdGlvbiAiZGF0ZV9wYXJ0IiBzdGF0ZW1lbnQgMQorRVJST1I6ICBkYXRlIHVu aXRzICJ0aW1lem9uZV9oIiBub3Qgc3VwcG9ydGVkCiBTRUxFQ1QgRVhUUkFDVChFUE9DSCAg ICAgICAgIEZST00gREFURSAnMjAyMC0wOC0xMScpOwotIGRhdGVfcGFydCAgCisgIGV4dHJh Y3QgICAKIC0tLS0tLS0tLS0tLQogIDE1OTcxMDQwMDAKICgxIHJvdykKIAogU0VMRUNUIEVY VFJBQ1QoSlVMSUFOICAgICAgICBGUk9NIERBVEUgJzIwMjAtMDgtMTEnKTsKLSBkYXRlX3Bh cnQgCi0tLS0tLS0tLS0tLQotICAgMjQ1OTA3MworIGV4dHJhY3QgCistLS0tLS0tLS0KKyAy NDU5MDczCiAoMSByb3cpCiAKIC0tCkBAIC0xMzcyLDIyMSArMTM0OSwxODggQEAgc2VsZWN0 IGlzZmluaXRlKCdpbmZpbml0eSc6OmRhdGUpLCBpc2Zpbml0ZSgnLWluZmluaXR5Jzo6ZGF0 ZSksIGlzZmluaXRlKCd0b2RheScKIC0tCiAtLSBvc2NpbGxhdGluZyBmaWVsZHMgZnJvbSBu b24tZmluaXRlIGRhdGUvdGltZXN0YW1wdHo6CiAtLQotU0VMRUNUIEVYVFJBQ1QoSE9VUiBG Uk9NIERBVEUgJ2luZmluaXR5Jyk7ICAgICAgLS0gTlVMTAotIGRhdGVfcGFydCAKLS0tLS0t LS0tLS0tCi0gICAgICAgICAgCitTRUxFQ1QgRVhUUkFDVChEQVkgIEZST00gREFURSAnaW5m aW5pdHknKTsgICAgICAtLSBOVUxMCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgICAK ICgxIHJvdykKIAotU0VMRUNUIEVYVFJBQ1QoSE9VUiBGUk9NIERBVEUgJy1pbmZpbml0eScp OyAgICAgLS0gTlVMTAotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAgCitT RUxFQ1QgRVhUUkFDVChEQVkgIEZST00gREFURSAnLWluZmluaXR5Jyk7ICAgICAtLSBOVUxM CisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgICAKICgxIHJvdykKIAogU0VMRUNUIEVY VFJBQ1QoSE9VUiBGUk9NIFRJTUVTVEFNUCAgICdpbmZpbml0eScpOyAgICAgIC0tIE5VTEwK LSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAgIAorIGV4dHJhY3QgCistLS0t LS0tLS0KKyAgICAgICAgCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKEhPVVIgRlJPTSBU SU1FU1RBTVAgICAnLWluZmluaXR5Jyk7ICAgICAtLSBOVUxMCi0gZGF0ZV9wYXJ0IAotLS0t LS0tLS0tLS0KLSAgICAgICAgICAKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAgIAog KDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChIT1VSIEZST00gVElNRVNUQU1QVFogJ2luZmlu aXR5Jyk7ICAgICAgLS0gTlVMTAotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAg ICAgCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgICAKICgxIHJvdykKIAogU0VMRUNU IEVYVFJBQ1QoSE9VUiBGUk9NIFRJTUVTVEFNUFRaICctaW5maW5pdHknKTsgICAgIC0tIE5V TEwKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAgIAorIGV4dHJhY3QgCist LS0tLS0tLS0KKyAgICAgICAgCiAoMSByb3cpCiAKIC0tIGFsbCBwb3NzaWJsZSBmaWVsZHMK IFNFTEVDVCBFWFRSQUNUKE1JQ1JPU0VDT05EUyAgRlJPTSBEQVRFICdpbmZpbml0eScpOyAg ICAtLSBOVUxMCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgICAKLSgxIHJv dykKLQorRVJST1I6ICBkYXRlIHVuaXRzICJtaWNyb3NlY29uZHMiIG5vdCBzdXBwb3J0ZWQK IFNFTEVDVCBFWFRSQUNUKE1JTExJU0VDT05EUyAgRlJPTSBEQVRFICdpbmZpbml0eScpOyAg ICAtLSBOVUxMCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgICAKLSgxIHJv dykKLQorRVJST1I6ICBkYXRlIHVuaXRzICJtaWxsaXNlY29uZHMiIG5vdCBzdXBwb3J0ZWQK IFNFTEVDVCBFWFRSQUNUKFNFQ09ORCAgICAgICAgRlJPTSBEQVRFICdpbmZpbml0eScpOyAg ICAtLSBOVUxMCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgICAKLSgxIHJv dykKLQorRVJST1I6ICBkYXRlIHVuaXRzICJzZWNvbmQiIG5vdCBzdXBwb3J0ZWQKIFNFTEVD VCBFWFRSQUNUKE1JTlVURSAgICAgICAgRlJPTSBEQVRFICdpbmZpbml0eScpOyAgICAtLSBO VUxMCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgICAKLSgxIHJvdykKLQor RVJST1I6ICBkYXRlIHVuaXRzICJtaW51dGUiIG5vdCBzdXBwb3J0ZWQKIFNFTEVDVCBFWFRS QUNUKEhPVVIgICAgICAgICAgRlJPTSBEQVRFICdpbmZpbml0eScpOyAgICAtLSBOVUxMCi0g ZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgICAKLSgxIHJvdykKLQorRVJST1I6 ICBkYXRlIHVuaXRzICJob3VyIiBub3Qgc3VwcG9ydGVkCiBTRUxFQ1QgRVhUUkFDVChEQVkg ICAgICAgICAgIEZST00gREFURSAnaW5maW5pdHknKTsgICAgLS0gTlVMTAotIGRhdGVfcGFy dCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAgCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAg ICAgICAKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoTU9OVEggICAgICAgICBGUk9NIERB VEUgJ2luZmluaXR5Jyk7ICAgIC0tIE5VTEwKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQot ICAgICAgICAgIAorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAgICAgCiAoMSByb3cpCiAK IFNFTEVDVCBFWFRSQUNUKFFVQVJURVIgICAgICAgRlJPTSBEQVRFICdpbmZpbml0eScpOyAg ICAtLSBOVUxMCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgICAKKyBleHRy YWN0IAorLS0tLS0tLS0tCisgICAgICAgIAogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChX RUVLICAgICAgICAgIEZST00gREFURSAnaW5maW5pdHknKTsgICAgLS0gTlVMTAotIGRhdGVf cGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAgCisgZXh0cmFjdCAKKy0tLS0tLS0tLQor ICAgICAgICAKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoRE9XICAgICAgICAgICBGUk9N IERBVEUgJ2luZmluaXR5Jyk7ICAgIC0tIE5VTEwKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0t LQotICAgICAgICAgIAorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAgICAgCiAoMSByb3cp CiAKIFNFTEVDVCBFWFRSQUNUKElTT0RPVyAgICAgICAgRlJPTSBEQVRFICdpbmZpbml0eScp OyAgICAtLSBOVUxMCi0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgICAKKyBl eHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAgIAogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFD VChET1kgICAgICAgICAgIEZST00gREFURSAnaW5maW5pdHknKTsgICAgLS0gTlVMTAotIGRh dGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAgCisgZXh0cmFjdCAKKy0tLS0tLS0t LQorICAgICAgICAKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoVElNRVpPTkUgICAgICBG Uk9NIERBVEUgJ2luZmluaXR5Jyk7ICAgIC0tIE5VTEwKLSBkYXRlX3BhcnQgCi0tLS0tLS0t LS0tLQotICAgICAgICAgIAotKDEgcm93KQotCitFUlJPUjogIGRhdGUgdW5pdHMgInRpbWV6 b25lIiBub3Qgc3VwcG9ydGVkCiBTRUxFQ1QgRVhUUkFDVChUSU1FWk9ORV9NICAgIEZST00g REFURSAnaW5maW5pdHknKTsgICAgLS0gTlVMTAotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0t Ci0gICAgICAgICAgCi0oMSByb3cpCi0KK0VSUk9SOiAgZGF0ZSB1bml0cyAidGltZXpvbmVf bSIgbm90IHN1cHBvcnRlZAogU0VMRUNUIEVYVFJBQ1QoVElNRVpPTkVfSCAgICBGUk9NIERB VEUgJ2luZmluaXR5Jyk7ICAgIC0tIE5VTEwKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQot ICAgICAgICAgIAotKDEgcm93KQotCitFUlJPUjogIGRhdGUgdW5pdHMgInRpbWV6b25lX2gi IG5vdCBzdXBwb3J0ZWQKIC0tCiAtLSBtb25vdG9uaWMgZmllbGRzIGZyb20gbm9uLWZpbml0 ZSBkYXRlL3RpbWVzdGFtcHR6OgogLS0KIFNFTEVDVCBFWFRSQUNUKEVQT0NIIEZST00gREFU RSAnaW5maW5pdHknKTsgICAgICAgICAtLSAgSW5maW5pdHkKLSBkYXRlX3BhcnQgCi0tLS0t LS0tLS0tLQotICBJbmZpbml0eQorIGV4dHJhY3QgIAorLS0tLS0tLS0tLQorIEluZmluaXR5 CiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKEVQT0NIIEZST00gREFURSAnLWluZmluaXR5 Jyk7ICAgICAgICAtLSAtSW5maW5pdHkKLSBkYXRlX3BhcnQgCisgIGV4dHJhY3QgIAogLS0t LS0tLS0tLS0KICAtSW5maW5pdHkKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoRVBPQ0gg RlJPTSBUSU1FU1RBTVAgICAnaW5maW5pdHknKTsgIC0tICBJbmZpbml0eQotIGRhdGVfcGFy dCAKLS0tLS0tLS0tLS0tCi0gIEluZmluaXR5CisgZXh0cmFjdCAgCistLS0tLS0tLS0tCisg SW5maW5pdHkKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoRVBPQ0ggRlJPTSBUSU1FU1RB TVAgICAnLWluZmluaXR5Jyk7IC0tIC1JbmZpbml0eQotIGRhdGVfcGFydCAKKyAgZXh0cmFj dCAgCiAtLS0tLS0tLS0tLQogIC1JbmZpbml0eQogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFD VChFUE9DSCBGUk9NIFRJTUVTVEFNUFRaICdpbmZpbml0eScpOyAgLS0gIEluZmluaXR5Ci0g ZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgSW5maW5pdHkKKyBleHRyYWN0ICAKKy0tLS0t LS0tLS0KKyBJbmZpbml0eQogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChFUE9DSCBGUk9N IFRJTUVTVEFNUFRaICctaW5maW5pdHknKTsgLS0gLUluZmluaXR5Ci0gZGF0ZV9wYXJ0IAor ICBleHRyYWN0ICAKIC0tLS0tLS0tLS0tCiAgLUluZmluaXR5CiAoMSByb3cpCiAKIC0tIGFs bCBwb3NzaWJsZSBmaWVsZHMKIFNFTEVDVCBFWFRSQUNUKFlFQVIgICAgICAgRlJPTSBEQVRF ICdpbmZpbml0eScpOyAgICAtLSAgSW5maW5pdHkKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0t LQotICBJbmZpbml0eQorIGV4dHJhY3QgIAorLS0tLS0tLS0tLQorIEluZmluaXR5CiAoMSBy b3cpCiAKIFNFTEVDVCBFWFRSQUNUKERFQ0FERSAgICAgRlJPTSBEQVRFICdpbmZpbml0eScp OyAgICAtLSAgSW5maW5pdHkKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICBJbmZpbml0 eQorIGV4dHJhY3QgIAorLS0tLS0tLS0tLQorIEluZmluaXR5CiAoMSByb3cpCiAKIFNFTEVD VCBFWFRSQUNUKENFTlRVUlkgICAgRlJPTSBEQVRFICdpbmZpbml0eScpOyAgICAtLSAgSW5m aW5pdHkKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICBJbmZpbml0eQorIGV4dHJhY3Qg IAorLS0tLS0tLS0tLQorIEluZmluaXR5CiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKE1J TExFTk5JVU0gRlJPTSBEQVRFICdpbmZpbml0eScpOyAgICAtLSAgSW5maW5pdHkKLSBkYXRl X3BhcnQgCi0tLS0tLS0tLS0tLQotICBJbmZpbml0eQorIGV4dHJhY3QgIAorLS0tLS0tLS0t LQorIEluZmluaXR5CiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKEpVTElBTiAgICAgRlJP TSBEQVRFICdpbmZpbml0eScpOyAgICAtLSAgSW5maW5pdHkKLSBkYXRlX3BhcnQgCi0tLS0t LS0tLS0tLQotICBJbmZpbml0eQorIGV4dHJhY3QgIAorLS0tLS0tLS0tLQorIEluZmluaXR5 CiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKElTT1lFQVIgICAgRlJPTSBEQVRFICdpbmZp bml0eScpOyAgICAtLSAgSW5maW5pdHkKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICBJ bmZpbml0eQorIGV4dHJhY3QgIAorLS0tLS0tLS0tLQorIEluZmluaXR5CiAoMSByb3cpCiAK IFNFTEVDVCBFWFRSQUNUKEVQT0NIICAgICAgRlJPTSBEQVRFICdpbmZpbml0eScpOyAgICAt LSAgSW5maW5pdHkKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICBJbmZpbml0eQorIGV4 dHJhY3QgIAorLS0tLS0tLS0tLQorIEluZmluaXR5CiAoMSByb3cpCiAKIC0tCiAtLSB3cm9u ZyBmaWVsZHMgZnJvbSBub24tZmluaXRlIGRhdGU6CiAtLQotU0VMRUNUIEVYVFJBQ1QoTUlD Uk9TRUMgIEZST00gREFURSAnaW5maW5pdHknKTsgICAgIC0tIEVSUk9SOiAgdGltZXN0YW1w IHVuaXRzICJtaWNyb3NlYyIgbm90IHJlY29nbml6ZWQKLUVSUk9SOiAgdGltZXN0YW1wIHVu aXRzICJtaWNyb3NlYyIgbm90IHJlY29nbml6ZWQKLUNPTlRFWFQ6ICBTUUwgZnVuY3Rpb24g ImRhdGVfcGFydCIgc3RhdGVtZW50IDEKK1NFTEVDVCBFWFRSQUNUKE1JQ1JPU0VDICBGUk9N IERBVEUgJ2luZmluaXR5Jyk7ICAgICAtLSBlcnJvcgorRVJST1I6ICBkYXRlIHVuaXRzICJt aWNyb3NlYyIgbm90IHJlY29nbml6ZWQKIC0tIHRlc3QgY29uc3RydWN0b3JzCiBzZWxlY3Qg bWFrZV9kYXRlKDIwMTMsIDcsIDE1KTsKICBtYWtlX2RhdGUgIApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnRlcnZhbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2ludGVydmFsLm91dAppbmRleCBhY2MzNTNhMGRjLi44MGUwN2ZlMzU1IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludGVydmFsLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludGVydmFsLm91dApAQCAtOTQ4LDE4ICs5 NDgsMTggQEAgU0VMRUNUIGYxLAogICAgIEVYVFJBQ1QoTUlMTEVOTklVTSBGUk9NIGYxKSBB UyBNSUxMRU5OSVVNLAogICAgIEVYVFJBQ1QoRVBPQ0ggRlJPTSBmMSkgQVMgRVBPQ0gKICAg ICBGUk9NIElOVEVSVkFMX1RCTDsKLSAgICAgICAgICAgICAgZjEgICAgICAgICAgICAgICB8 IG1pY3Jvc2Vjb25kIHwgbWlsbGlzZWNvbmQgfCBzZWNvbmQgfCBtaW51dGUgfCBob3VyIHwg ZGF5IHwgbW9udGggfCBxdWFydGVyIHwgeWVhciB8IGRlY2FkZSB8IGNlbnR1cnkgfCBtaWxs ZW5uaXVtIHwgICBlcG9jaCAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLSst LS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KLSBAIDEgbWluICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAwIHwgICAgICAgICAgIDAgfCAgICAgIDAgfCAgICAgIDEgfCAgICAwIHwg ICAwIHwgICAgIDAgfCAgICAgICAxIHwgICAgMCB8ICAgICAgMCB8ICAgICAgIDAgfCAgICAg ICAgICAwIHwgICAgICAgICA2MAotIEAgNSBob3VycyAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgIDAgfCAgICAgICAgICAgMCB8ICAgICAgMCB8ICAgICAgMCB8ICAgIDUgfCAg IDAgfCAgICAgMCB8ICAgICAgIDEgfCAgICAwIHwgICAgICAwIHwgICAgICAgMCB8ICAgICAg ICAgIDAgfCAgICAgIDE4MDAwCi0gQCAxMCBkYXlzICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgMCB8ICAgICAgICAgICAwIHwgICAgICAwIHwgICAgICAwIHwgICAgMCB8ICAx MCB8ICAgICAwIHwgICAgICAgMSB8ICAgIDAgfCAgICAgIDAgfCAgICAgICAwIHwgICAgICAg ICAgMCB8ICAgICA4NjQwMDAKLSBAIDM0IHllYXJzICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAwIHwgICAgICAgICAgIDAgfCAgICAgIDAgfCAgICAgIDAgfCAgICAwIHwgICAw IHwgICAgIDAgfCAgICAgICAxIHwgICAzNCB8ICAgICAgMyB8ICAgICAgIDAgfCAgICAgICAg ICAwIHwgMTA3Mjk1ODQwMAotIEAgMyBtb25zICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgIDAgfCAgICAgICAgICAgMCB8ICAgICAgMCB8ICAgICAgMCB8ICAgIDAgfCAgIDAg fCAgICAgMyB8ICAgICAgIDIgfCAgICAwIHwgICAgICAwIHwgICAgICAgMCB8ICAgICAgICAg IDAgfCAgICA3Nzc2MDAwCi0gQCAxNCBzZWNzIGFnbyAgICAgICAgICAgICAgICAgfCAgIC0x NDAwMDAwMCB8ICAgICAgLTE0MDAwIHwgICAgLTE0IHwgICAgICAwIHwgICAgMCB8ICAgMCB8 ICAgICAwIHwgICAgICAgMSB8ICAgIDAgfCAgICAgIDAgfCAgICAgICAwIHwgICAgICAgICAg MCB8ICAgICAgICAtMTQKLSBAIDEgZGF5IDIgaG91cnMgMyBtaW5zIDQgc2VjcyB8ICAgICA0 MDAwMDAwIHwgICAgICAgIDQwMDAgfCAgICAgIDQgfCAgICAgIDMgfCAgICAyIHwgICAxIHwg ICAgIDAgfCAgICAgICAxIHwgICAgMCB8ICAgICAgMCB8ICAgICAgIDAgfCAgICAgICAgICAw IHwgICAgICA5Mzc4NAotIEAgNiB5ZWFycyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgIDAgfCAgICAgICAgICAgMCB8ICAgICAgMCB8ICAgICAgMCB8ICAgIDAgfCAgIDAgfCAg ICAgMCB8ICAgICAgIDEgfCAgICA2IHwgICAgICAwIHwgICAgICAgMCB8ICAgICAgICAgIDAg fCAgMTg5MzQ1NjAwCi0gQCA1IG1vbnMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgMCB8ICAgICAgICAgICAwIHwgICAgICAwIHwgICAgICAwIHwgICAgMCB8ICAgMCB8ICAg ICA1IHwgICAgICAgMiB8ICAgIDAgfCAgICAgIDAgfCAgICAgICAwIHwgICAgICAgICAgMCB8 ICAgMTI5NjAwMDAKLSBAIDUgbW9ucyAxMiBob3VycyAgICAgICAgICAgICB8ICAgICAgICAg ICAwIHwgICAgICAgICAgIDAgfCAgICAgIDAgfCAgICAgIDAgfCAgIDEyIHwgICAwIHwgICAg IDUgfCAgICAgICAyIHwgICAgMCB8ICAgICAgMCB8ICAgICAgIDAgfCAgICAgICAgICAwIHwg ICAxMzAwMzIwMAorICAgICAgICAgICAgICBmMSAgICAgICAgICAgICAgIHwgbWljcm9zZWNv bmQgfCBtaWxsaXNlY29uZCB8ICAgc2Vjb25kICAgfCBtaW51dGUgfCBob3VyIHwgZGF5IHwg bW9udGggfCBxdWFydGVyIHwgeWVhciB8IGRlY2FkZSB8IGNlbnR1cnkgfCBtaWxsZW5uaXVt IHwgICAgICAgZXBvY2ggICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tKy0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBAIDEgbWluICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAwIHwgICAgICAgMC4wMDAgfCAgIDAuMDAwMDAwIHwg ICAgICAxIHwgICAgMCB8ICAgMCB8ICAgICAwIHwgICAgICAgMSB8ICAgIDAgfCAgICAgIDAg fCAgICAgICAwIHwgICAgICAgICAgMCB8ICAgICAgICAgNjAuMDAwMDAwCisgQCA1IGhvdXJz ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgMCB8ICAgICAgIDAuMDAwIHwgICAw LjAwMDAwMCB8ICAgICAgMCB8ICAgIDUgfCAgIDAgfCAgICAgMCB8ICAgICAgIDEgfCAgICAw IHwgICAgICAwIHwgICAgICAgMCB8ICAgICAgICAgIDAgfCAgICAgIDE4MDAwLjAwMDAwMAor IEAgMTAgZGF5cyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIDAgfCAgICAgICAw LjAwMCB8ICAgMC4wMDAwMDAgfCAgICAgIDAgfCAgICAwIHwgIDEwIHwgICAgIDAgfCAgICAg ICAxIHwgICAgMCB8ICAgICAgMCB8ICAgICAgIDAgfCAgICAgICAgICAwIHwgICAgIDg2NDAw MC4wMDAwMDAKKyBAIDM0IHllYXJzICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAw IHwgICAgICAgMC4wMDAgfCAgIDAuMDAwMDAwIHwgICAgICAwIHwgICAgMCB8ICAgMCB8ICAg ICAwIHwgICAgICAgMSB8ICAgMzQgfCAgICAgIDMgfCAgICAgICAwIHwgICAgICAgICAgMCB8 IDEwNzIyMjQwMDAuMDAwMDAwCisgQCAzIG1vbnMgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgMCB8ICAgICAgIDAuMDAwIHwgICAwLjAwMDAwMCB8ICAgICAgMCB8ICAgIDAg fCAgIDAgfCAgICAgMyB8ICAgICAgIDIgfCAgICAwIHwgICAgICAwIHwgICAgICAgMCB8ICAg ICAgICAgIDAgfCAgICA3Nzc2MDAwLjAwMDAwMAorIEAgMTQgc2VjcyBhZ28gICAgICAgICAg ICAgICAgIHwgICAtMTQwMDAwMDAgfCAgLTE0MDAwLjAwMCB8IC0xNC4wMDAwMDAgfCAgICAg IDAgfCAgICAwIHwgICAwIHwgICAgIDAgfCAgICAgICAxIHwgICAgMCB8ICAgICAgMCB8ICAg ICAgIDAgfCAgICAgICAgICAwIHwgICAgICAgIC0xNC4wMDAwMDAKKyBAIDEgZGF5IDIgaG91 cnMgMyBtaW5zIDQgc2VjcyB8ICAgICA0MDAwMDAwIHwgICAgNDAwMC4wMDAgfCAgIDQuMDAw MDAwIHwgICAgICAzIHwgICAgMiB8ICAgMSB8ICAgICAwIHwgICAgICAgMSB8ICAgIDAgfCAg ICAgIDAgfCAgICAgICAwIHwgICAgICAgICAgMCB8ICAgICAgOTM3ODQuMDAwMDAwCisgQCA2 IHllYXJzICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgMCB8ICAgICAgIDAuMDAw IHwgICAwLjAwMDAwMCB8ICAgICAgMCB8ICAgIDAgfCAgIDAgfCAgICAgMCB8ICAgICAgIDEg fCAgICA2IHwgICAgICAwIHwgICAgICAgMCB8ICAgICAgICAgIDAgfCAgMTg5MjE2MDAwLjAw MDAwMAorIEAgNSBtb25zICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIDAgfCAg ICAgICAwLjAwMCB8ICAgMC4wMDAwMDAgfCAgICAgIDAgfCAgICAwIHwgICAwIHwgICAgIDUg fCAgICAgICAyIHwgICAgMCB8ICAgICAgMCB8ICAgICAgIDAgfCAgICAgICAgICAwIHwgICAx Mjk2MDAwMC4wMDAwMDAKKyBAIDUgbW9ucyAxMiBob3VycyAgICAgICAgICAgICB8ICAgICAg ICAgICAwIHwgICAgICAgMC4wMDAgfCAgIDAuMDAwMDAwIHwgICAgICAwIHwgICAxMiB8ICAg MCB8ICAgICA1IHwgICAgICAgMiB8ICAgIDAgfCAgICAgIDAgfCAgICAgICAwIHwgICAgICAg ICAgMCB8ICAgMTMwMDMyMDAuMDAwMDAwCiAoMTAgcm93cykKIAogU0VMRUNUIEVYVFJBQ1Qo Rk9SVE5JR0hUIEZST00gSU5URVJWQUwgJzIgZGF5cycpOyAgLS0gZXJyb3IKQEAgLTk2Nyw1 MCArOTY3LDUwIEBAIEVSUk9SOiAgaW50ZXJ2YWwgdW5pdHMgImZvcnRuaWdodCIgbm90IHJl Y29nbml6ZWQKIFNFTEVDVCBFWFRSQUNUKFRJTUVaT05FIEZST00gSU5URVJWQUwgJzIgZGF5 cycpOyAgLS0gZXJyb3IKIEVSUk9SOiAgaW50ZXJ2YWwgdW5pdHMgInRpbWV6b25lIiBub3Qg c3VwcG9ydGVkCiBTRUxFQ1QgRVhUUkFDVChERUNBREUgRlJPTSBJTlRFUlZBTCAnMTAwIHkn KTsKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAxMAorIGV4dHJhY3QgCist LS0tLS0tLS0KKyAgICAgIDEwCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKERFQ0FERSBG Uk9NIElOVEVSVkFMICc5OSB5Jyk7Ci0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAg ICAgIDkKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAgOQogKDEgcm93KQogCiBTRUxF Q1QgRVhUUkFDVChERUNBREUgRlJPTSBJTlRFUlZBTCAnLTk5IHknKTsKLSBkYXRlX3BhcnQg Ci0tLS0tLS0tLS0tLQotICAgICAgICAtOQorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAg IC05CiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKERFQ0FERSBGUk9NIElOVEVSVkFMICct MTAwIHknKTsKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgIC0xMAorIGV4dHJh Y3QgCistLS0tLS0tLS0KKyAgICAgLTEwCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKENF TlRVUlkgRlJPTSBJTlRFUlZBTCAnMTAwIHknKTsKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0t LQotICAgICAgICAgMQorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAgICAxCiAoMSByb3cp CiAKIFNFTEVDVCBFWFRSQUNUKENFTlRVUlkgRlJPTSBJTlRFUlZBTCAnOTkgeScpOwotIGRh dGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAwCisgZXh0cmFjdCAKKy0tLS0tLS0t LQorICAgICAgIDAKICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoQ0VOVFVSWSBGUk9NIElO VEVSVkFMICctOTkgeScpOwotIGRhdGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAw CisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAgICAgIDAKICgxIHJvdykKIAogU0VMRUNUIEVY VFJBQ1QoQ0VOVFVSWSBGUk9NIElOVEVSVkFMICctMTAwIHknKTsKLSBkYXRlX3BhcnQgCi0t LS0tLS0tLS0tLQotICAgICAgICAtMQorIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAgIC0x CiAoMSByb3cpCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNx bF9jcm9zc3RhYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWxfY3Jvc3N0 YWIub3V0CmluZGV4IGVhZTZmYmQwNTEuLmUwOWUzMzEwMTYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbF9jcm9zc3RhYi5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wc3FsX2Nyb3NzdGFiLm91dApAQCAtMTcsMTIgKzE3LDEyIEBA IFNFTEVDVCB2LCBFWFRSQUNUKHllYXIgRlJPTSBkKSwgY291bnQoKikKICBGUk9NIGN0dl9k YXRhCiAgR1JPVVAgQlkgMSwgMgogIE9SREVSIEJZIDEsIDI7Ci0gdiAgfCBkYXRlX3BhcnQg fCBjb3VudCAKLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLQotIHYwIHwgICAgICAyMDE0IHwg ICAgIDIKLSB2MCB8ICAgICAgMjAxNSB8ICAgICAxCi0gdjEgfCAgICAgIDIwMTUgfCAgICAg MwotIHYyIHwgICAgICAyMDE1IHwgICAgIDEKKyB2ICB8IGV4dHJhY3QgfCBjb3VudCAKKy0t LS0rLS0tLS0tLS0tKy0tLS0tLS0KKyB2MCB8ICAgIDIwMTQgfCAgICAgMgorIHYwIHwgICAg MjAxNSB8ICAgICAxCisgdjEgfCAgICAyMDE1IHwgICAgIDMKKyB2MiB8ICAgIDIwMTUgfCAg ICAgMQogKDQgcm93cykKIAogLS0gYmFzaWMgdXNhZ2Ugd2l0aCAzIGNvbHVtbnMKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGltZS5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RpbWUub3V0CmluZGV4IDUzMDNjYzBjOTQuLmY5Nzg2ZTBiNGUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGltZS5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aW1lLm91dApAQCAtMTMxLDMzICsxMzEsMzMg QEAgSElOVDogIENvdWxkIG5vdCBjaG9vc2UgYSBiZXN0IGNhbmRpZGF0ZSBvcGVyYXRvci4g WW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2kKIC0tIHRlc3QgRVhUUkFDVAogLS0KIFNF TEVDVCBFWFRSQUNUKE1JQ1JPU0VDT05EIEZST00gVElNRSAnMjAyMC0wNS0yNiAxMzozMDoy NS41NzU0MDEnKTsKLSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAyNTU3NTQwMQorIGV4 dHJhY3QgIAorLS0tLS0tLS0tLQorIDI1NTc1NDAxCiAoMSByb3cpCiAKIFNFTEVDVCBFWFRS QUNUKE1JTExJU0VDT05EIEZST00gVElNRSAnMjAyMC0wNS0yNiAxMzozMDoyNS41NzU0MDEn KTsKLSBkYXRlX3BhcnQgCisgIGV4dHJhY3QgIAogLS0tLS0tLS0tLS0KICAyNTU3NS40MDEK ICgxIHJvdykKIAogU0VMRUNUIEVYVFJBQ1QoU0VDT05EICAgICAgRlJPTSBUSU1FICcyMDIw LTA1LTI2IDEzOjMwOjI1LjU3NTQwMScpOwotIGRhdGVfcGFydCAKKyAgZXh0cmFjdCAgCiAt LS0tLS0tLS0tLQogIDI1LjU3NTQwMQogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChNSU5V VEUgICAgICBGUk9NIFRJTUUgJzIwMjAtMDUtMjYgMTM6MzA6MjUuNTc1NDAxJyk7Ci0gZGF0 ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAgMzAKKyBleHRyYWN0IAorLS0tLS0tLS0t CisgICAgICAzMAogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChIT1VSICAgICAgICBGUk9N IFRJTUUgJzIwMjAtMDUtMjYgMTM6MzA6MjUuNTc1NDAxJyk7Ci0gZGF0ZV9wYXJ0IAotLS0t LS0tLS0tLS0KLSAgICAgICAgMTMKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAxMwog KDEgcm93KQogCiBTRUxFQ1QgRVhUUkFDVChEQVkgICAgICAgICBGUk9NIFRJTUUgJzIwMjAt MDUtMjYgMTM6MzA6MjUuNTc1NDAxJyk7ICAtLSBlcnJvcgpAQCAtMTY3LDcgKzE2Nyw3IEBA IEVSUk9SOiAgInRpbWUiIHVuaXRzICJmb3J0bmlnaHQiIG5vdCByZWNvZ25pemVkCiBTRUxF Q1QgRVhUUkFDVChUSU1FWk9ORSAgICBGUk9NIFRJTUUgJzIwMjAtMDUtMjYgMTM6MzA6MjUu NTc1NDAxJyk7ICAtLSBlcnJvcgogRVJST1I6ICAidGltZSIgdW5pdHMgInRpbWV6b25lIiBu b3QgcmVjb2duaXplZAogU0VMRUNUIEVYVFJBQ1QoRVBPQ0ggICAgICAgRlJPTSBUSU1FICcy MDIwLTA1LTI2IDEzOjMwOjI1LjU3NTQwMScpOwotICBkYXRlX3BhcnQgICAKKyAgIGV4dHJh Y3QgICAgCiAtLS0tLS0tLS0tLS0tLQogIDQ4NjI1LjU3NTQwMQogKDEgcm93KQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aW1ldHoub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC90aW1ldHoub3V0CmluZGV4IDFhYjVlZDUxMDUuLjc0ZjhhNzhh MjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGltZXR6Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpbWV0ei5vdXQKQEAgLTE0OCwzMyAr MTQ4LDMzIEBAIEhJTlQ6ICBObyBvcGVyYXRvciBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lIGFu ZCBhcmd1bWVudCB0eXBlcy4gWW91IG1pZ2h0IG5lZWQgdG8KIC0tIHRlc3QgRVhUUkFDVAog LS0KIFNFTEVDVCBFWFRSQUNUKE1JQ1JPU0VDT05EIEZST00gVElNRSBXSVRIIFRJTUUgWk9O RSAnMjAyMC0wNS0yNiAxMzozMDoyNS41NzU0MDEtMDQnKTsKLSBkYXRlX3BhcnQgCi0tLS0t LS0tLS0tLQotICAyNTU3NTQwMQorIGV4dHJhY3QgIAorLS0tLS0tLS0tLQorIDI1NTc1NDAx CiAoMSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKE1JTExJU0VDT05EIEZST00gVElNRSBXSVRI IFRJTUUgWk9ORSAnMjAyMC0wNS0yNiAxMzozMDoyNS41NzU0MDEtMDQnKTsKLSBkYXRlX3Bh cnQgCisgIGV4dHJhY3QgIAogLS0tLS0tLS0tLS0KICAyNTU3NS40MDEKICgxIHJvdykKIAog U0VMRUNUIEVYVFJBQ1QoU0VDT05EICAgICAgRlJPTSBUSU1FIFdJVEggVElNRSBaT05FICcy MDIwLTA1LTI2IDEzOjMwOjI1LjU3NTQwMS0wNCcpOwotIGRhdGVfcGFydCAKKyAgZXh0cmFj dCAgCiAtLS0tLS0tLS0tLQogIDI1LjU3NTQwMQogKDEgcm93KQogCiBTRUxFQ1QgRVhUUkFD VChNSU5VVEUgICAgICBGUk9NIFRJTUUgV0lUSCBUSU1FIFpPTkUgJzIwMjAtMDUtMjYgMTM6 MzA6MjUuNTc1NDAxLTA0Jyk7Ci0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAgICAgICAg MzAKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAzMAogKDEgcm93KQogCiBTRUxFQ1Qg RVhUUkFDVChIT1VSICAgICAgICBGUk9NIFRJTUUgV0lUSCBUSU1FIFpPTkUgJzIwMjAtMDUt MjYgMTM6MzA6MjUuNTc1NDAxLTA0Jyk7Ci0gZGF0ZV9wYXJ0IAotLS0tLS0tLS0tLS0KLSAg ICAgICAgMTMKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAxMwogKDEgcm93KQogCiBT RUxFQ1QgRVhUUkFDVChEQVkgICAgICAgICBGUk9NIFRJTUUgV0lUSCBUSU1FIFpPTkUgJzIw MjAtMDUtMjYgMTM6MzA6MjUuNTc1NDAxLTA0Jyk7ICAtLSBlcnJvcgpAQCAtMTgyLDI1ICsx ODIsMjUgQEAgRVJST1I6ICAidGltZSB3aXRoIHRpbWUgem9uZSIgdW5pdHMgImRheSIgbm90 IHJlY29nbml6ZWQKIFNFTEVDVCBFWFRSQUNUKEZPUlROSUdIVCAgIEZST00gVElNRSBXSVRI IFRJTUUgWk9ORSAnMjAyMC0wNS0yNiAxMzozMDoyNS41NzU0MDEtMDQnKTsgIC0tIGVycm9y CiBFUlJPUjogICJ0aW1lIHdpdGggdGltZSB6b25lIiB1bml0cyAiZm9ydG5pZ2h0IiBub3Qg cmVjb2duaXplZAogU0VMRUNUIEVYVFJBQ1QoVElNRVpPTkUgICAgRlJPTSBUSU1FIFdJVEgg VElNRSBaT05FICcyMDIwLTA1LTI2IDEzOjMwOjI1LjU3NTQwMS0wNCcpOwotIGRhdGVfcGFy dCAKLS0tLS0tLS0tLS0tCi0gICAgLTE0NDAwCisgZXh0cmFjdCAKKy0tLS0tLS0tLQorICAt MTQ0MDAKICgxIHJvdykKIAotU0VMRUNUIEVYVFJBQ1QoVElNRVpPTkVfSE9VUiAgIEZST00g VElNRSBXSVRIIFRJTUUgWk9ORSAnMjAyMC0wNS0yNiAxMzozMDoyNS41NzU0MDEtMDQnKTsK LSBkYXRlX3BhcnQgCi0tLS0tLS0tLS0tLQotICAgICAgICAtNAorU0VMRUNUIEVYVFJBQ1Qo VElNRVpPTkVfSE9VUiAgIEZST00gVElNRSBXSVRIIFRJTUUgWk9ORSAnMjAyMC0wNS0yNiAx MzozMDoyNS41NzU0MDEtMDQ6MzAnKTsKKyBleHRyYWN0IAorLS0tLS0tLS0tCisgICAgICAt NAogKDEgcm93KQogCi1TRUxFQ1QgRVhUUkFDVChUSU1FWk9ORV9NSU5VVEUgRlJPTSBUSU1F IFdJVEggVElNRSBaT05FICcyMDIwLTA1LTI2IDEzOjMwOjI1LjU3NTQwMS0wNCcpOwotIGRh dGVfcGFydCAKLS0tLS0tLS0tLS0tCi0gICAgICAgICAwCitTRUxFQ1QgRVhUUkFDVChUSU1F Wk9ORV9NSU5VVEUgRlJPTSBUSU1FIFdJVEggVElNRSBaT05FICcyMDIwLTA1LTI2IDEzOjMw OjI1LjU3NTQwMS0wNDozMCcpOworIGV4dHJhY3QgCistLS0tLS0tLS0KKyAgICAgLTMwCiAo MSByb3cpCiAKIFNFTEVDVCBFWFRSQUNUKEVQT0NIICAgICAgIEZST00gVElNRSBXSVRIIFRJ TUUgWk9ORSAnMjAyMC0wNS0yNiAxMzozMDoyNS41NzU0MDEtMDQnKTsKLSAgZGF0ZV9wYXJ0 ICAgCisgICBleHRyYWN0ICAgIAogLS0tLS0tLS0tLS0tLS0KICA2MzAyNS41NzU0MDEKICgx IHJvdykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2RhdGUuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZGF0ZS5zcWwKaW5kZXggN2E3MzRmYjFhMC4uZWIwYTlkOGRk ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGF0ZS5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZGF0ZS5zcWwKQEAgLTMyOSw4ICszMjksOCBAQCBDUkVBVEUg VEFCTEUgREFURV9UQkwgKGYxIGRhdGUpOwogLS0KIC0tIG9zY2lsbGF0aW5nIGZpZWxkcyBm cm9tIG5vbi1maW5pdGUgZGF0ZS90aW1lc3RhbXB0ejoKIC0tCi1TRUxFQ1QgRVhUUkFDVChI T1VSIEZST00gREFURSAnaW5maW5pdHknKTsgICAgICAtLSBOVUxMCi1TRUxFQ1QgRVhUUkFD VChIT1VSIEZST00gREFURSAnLWluZmluaXR5Jyk7ICAgICAtLSBOVUxMCitTRUxFQ1QgRVhU UkFDVChEQVkgIEZST00gREFURSAnaW5maW5pdHknKTsgICAgICAtLSBOVUxMCitTRUxFQ1Qg RVhUUkFDVChEQVkgIEZST00gREFURSAnLWluZmluaXR5Jyk7ICAgICAtLSBOVUxMCiBTRUxF Q1QgRVhUUkFDVChIT1VSIEZST00gVElNRVNUQU1QICAgJ2luZmluaXR5Jyk7ICAgICAgLS0g TlVMTAogU0VMRUNUIEVYVFJBQ1QoSE9VUiBGUk9NIFRJTUVTVEFNUCAgICctaW5maW5pdHkn KTsgICAgIC0tIE5VTEwKIFNFTEVDVCBFWFRSQUNUKEhPVVIgRlJPTSBUSU1FU1RBTVBUWiAn aW5maW5pdHknKTsgICAgICAtLSBOVUxMCkBAIC0zNzEsNyArMzcxLDcgQEAgQ1JFQVRFIFRB QkxFIERBVEVfVEJMIChmMSBkYXRlKTsKIC0tCiAtLSB3cm9uZyBmaWVsZHMgZnJvbSBub24t ZmluaXRlIGRhdGU6CiAtLQotU0VMRUNUIEVYVFJBQ1QoTUlDUk9TRUMgIEZST00gREFURSAn aW5maW5pdHknKTsgICAgIC0tIEVSUk9SOiAgdGltZXN0YW1wIHVuaXRzICJtaWNyb3NlYyIg bm90IHJlY29nbml6ZWQKK1NFTEVDVCBFWFRSQUNUKE1JQ1JPU0VDICBGUk9NIERBVEUgJ2lu ZmluaXR5Jyk7ICAgICAtLSBlcnJvcgogCiAtLSB0ZXN0IGNvbnN0cnVjdG9ycwogc2VsZWN0 IG1ha2VfZGF0ZSgyMDEzLCA3LCAxNSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC90aW1ldHouc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGltZXR6LnNxbAppbmRl eCBjZTc2M2Q4OWU4Li4zMDdiYWIzMWZjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC90aW1ldHouc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpbWV0ei5zcWwK QEAgLTY3LDYgKzY3LDYgQEAgQ1JFQVRFIFRBQkxFIFRJTUVUWl9UQkwgKGYxIHRpbWUoMikg d2l0aCB0aW1lIHpvbmUpOwogU0VMRUNUIEVYVFJBQ1QoREFZICAgICAgICAgRlJPTSBUSU1F IFdJVEggVElNRSBaT05FICcyMDIwLTA1LTI2IDEzOjMwOjI1LjU3NTQwMS0wNCcpOyAgLS0g ZXJyb3IKIFNFTEVDVCBFWFRSQUNUKEZPUlROSUdIVCAgIEZST00gVElNRSBXSVRIIFRJTUUg Wk9ORSAnMjAyMC0wNS0yNiAxMzozMDoyNS41NzU0MDEtMDQnKTsgIC0tIGVycm9yCiBTRUxF Q1QgRVhUUkFDVChUSU1FWk9ORSAgICBGUk9NIFRJTUUgV0lUSCBUSU1FIFpPTkUgJzIwMjAt MDUtMjYgMTM6MzA6MjUuNTc1NDAxLTA0Jyk7Ci1TRUxFQ1QgRVhUUkFDVChUSU1FWk9ORV9I T1VSICAgRlJPTSBUSU1FIFdJVEggVElNRSBaT05FICcyMDIwLTA1LTI2IDEzOjMwOjI1LjU3 NTQwMS0wNCcpOwotU0VMRUNUIEVYVFJBQ1QoVElNRVpPTkVfTUlOVVRFIEZST00gVElNRSBX SVRIIFRJTUUgWk9ORSAnMjAyMC0wNS0yNiAxMzozMDoyNS41NzU0MDEtMDQnKTsKK1NFTEVD VCBFWFRSQUNUKFRJTUVaT05FX0hPVVIgICBGUk9NIFRJTUUgV0lUSCBUSU1FIFpPTkUgJzIw MjAtMDUtMjYgMTM6MzA6MjUuNTc1NDAxLTA0OjMwJyk7CitTRUxFQ1QgRVhUUkFDVChUSU1F Wk9ORV9NSU5VVEUgRlJPTSBUSU1FIFdJVEggVElNRSBaT05FICcyMDIwLTA1LTI2IDEzOjMw OjI1LjU3NTQwMS0wNDozMCcpOwogU0VMRUNUIEVYVFJBQ1QoRVBPQ0ggICAgICAgRlJPTSBU SU1FIFdJVEggVElNRSBaT05FICcyMDIwLTA1LTI2IDEzOjMwOjI1LjU3NTQwMS0wNCcpOwoK YmFzZS1jb21taXQ6IDI3YWIxOTgxZTdjOWI4ZmNiY2IxNDNjNWY2ZjcwNjQ0MWE1MmJiYzgK LS0gCjIuMzAuMgoK --------------A392B284372055025489C06D--