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 1n80Ne-00077O-C4 for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Jan 2022 13:43:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n80Nc-0006Ud-5a for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Jan 2022 13:43:04 +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 1n80Nb-0006UT-Hn for pgsql-hackers@lists.postgresql.org; Thu, 13 Jan 2022 13:43:03 +0000 Received: from wout4-smtp.messagingengine.com ([64.147.123.20]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n80NN-00040W-Aw for pgsql-hackers@postgresql.org; Thu, 13 Jan 2022 13:43:02 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id C16913201F66; Thu, 13 Jan 2022 08:42:45 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Thu, 13 Jan 2022 08:42:45 -0500 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=fm1; bh=cahp8j KyTg4eEPYgrEJCJIEemrKCQnIKik2ZPPq+TY4=; b=Zr5QuEJJnpcERLMCDU0sXd C2bzEHNpW4DkB0E+qUcp6CC3vB7sDfkHLF2jSVozvGUsrv64IjXSqzw71MT/s6i4 AW8lFVyVQB2r8ST9MskQY9aN82L1NitRtdg7ai76hbOgSRVEJ3AEmD+/NfosvXed 0bJjjQPYMFw9JOLRQrAMplzYnS0pBl8yc8C3I4MvrvGFy2RsCiImVI0c4dQWnAdF 0bxulBcQ9EiiPCEkKF0TmuBl6tHDnk0KwxOy05wjqPW7B2826kX9r4eEFj/rYjB9 ozp9IHMsmVYDWyO6ZTHY0G71mNXAabi/FXrsr18F2bJSXHF9UcSFfplHZqP/vErg == X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddrtdefgdehgecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpegtkfffgggfuffhvfhfjgesmhdtreertdefjeenucfhrhhomheprfgvthgvrhcu gfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrph hrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepkeekfeehjeekudfgvedtteef ueevtdehffffteekfeffgfffveehvdekieevueelnecuffhomhgrihhnpehpghgtrdhlsg enucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvght vghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 13 Jan 2022 08:42:43 -0500 (EST) Content-Type: multipart/mixed; boundary="------------do50zd79MbDy71onIEFvfvlB" Message-ID: Date: Thu, 13 Jan 2022 14:42:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: Non-decimal integer literals Content-Language: en-US From: Peter Eisentraut To: John Naylor Cc: pgsql-hackers References: <3260805.1631106874@sss.pgh.pa.us> <8f2cdc30-350a-9782-8d95-6865a4ccb857@postgresfriends.org> <31bba70a-f5a8-9276-37a6-fa6f2c4eee6c@enterprisedb.com> <0d895aa8-d1de-3637-9ad4-de0269918e77@enterprisedb.com> <0f37d2ec-6689-4d23-7ba5-4d2a73c2666f@enterprisedb.com> <577603ec-787b-61b8-23a2-1bd0457ed1c7@enterprisedb.com> In-Reply-To: <577603ec-787b-61b8-23a2-1bd0457ed1c7@enterprisedb.com> 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. --------------do50zd79MbDy71onIEFvfvlB Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Another modest update, because of the copyright year update preventing the previous patches from applying cleanly. I also did a bit of work on the ecpg scanner so that it also handles some errors on par with the main scanner. There is still no automated testing of this in ecpg, but I have a bunch of single-line test files that can provoke various errors. I will keep these around and maybe put them into something more formal in the future. On 30.12.21 10:43, Peter Eisentraut wrote: > There has been some other refactoring going on, which made this patch > set out of date.  So here is an update. > > The old pg_strtouint64() has been removed, so there is no longer a > naming concern with patch 0001.  That one should be good to go. > > I also found that yet another way to parse integers in pg_atoi() has > mostly faded away in utility, so I removed the last two callers and > removed the function in 0002 and 0003. > > The remaining patches are as before, with some of the review comments > applied.  I still need to write some lexing unit tests for ecpg, which I > haven't gotten to yet.  This affects patches 0004 and 0005. > > As mentioned before, patches 0006 and 0007 are more feature previews at > this point. > > > On 01.12.21 16:47, Peter Eisentraut wrote: >> On 25.11.21 18:51, John Naylor wrote: >>> If we're going to change the comment anyway, "the parser" sounds more >>> natural. Aside from that, 0001 and 0002 can probably be pushed now, >>> if you like. >> >> done >> >>> --- a/src/interfaces/ecpg/preproc/pgc.l >>> +++ b/src/interfaces/ecpg/preproc/pgc.l >>> @@ -365,6 +365,10 @@ real ({integer}|{decimal})[Ee][-+]?{digit}+ >>>   realfail1 ({integer}|{decimal})[Ee] >>>   realfail2 ({integer}|{decimal})[Ee][-+] >>> >>> +integer_junk {integer}{ident_start} >>> +decimal_junk {decimal}{ident_start} >>> +real_junk {real}{ident_start} >>> >>> A comment might be good here to explain these are only in ECPG for >>> consistency with the other scanners. Not really important, though. >> >> Yeah, it's a bit weird that not all the symbols are used in ecpg. >> I'll look into explaining this better. >> >>> 0006 >>> >>> +{hexfail} { >>> + yyerror("invalid hexadecimal integer"); >>> + } >>> +{octfail} { >>> + yyerror("invalid octal integer"); >>>    } >>> -{decimal} { >>> +{binfail} { >>> + yyerror("invalid binary integer"); >>> + } >>> >>> It seems these could use SET_YYLLOC(), since the error cursor doesn't >>> match other failure states: >> >> ok >> >>> We might consider some tests for ECPG since lack of coverage has been >>> a problem. >> >> right >> >>> Also, I'm curious: how does the spec work as far as deciding the year >>> of release, or feature-freezing of new items? >> >> The schedule has recently been extended again, so the current plan is >> for SQL:202x with x=3, with feature freeze in mid-2022. >> >> So the feature patches in this thread are in my mind now targeting >> PG15+1.  But the preparation work (up to v5-0005, and some other >> number parsing refactoring that I'm seeing) could be considered for PG15. >> >> I'll move this to the next CF and come back with an updated patch set >> in a little while. >> >> --------------do50zd79MbDy71onIEFvfvlB Content-Type: text/plain; charset=UTF-8; name="v7-0001-Move-scanint8-to-numutils.c.patch" Content-Disposition: attachment; filename="v7-0001-Move-scanint8-to-numutils.c.patch" Content-Transfer-Encoding: base64 RnJvbSBlN2FhZDJiODFlOWJlMmI1M2RhZDczYzY2ZTY5MmE4MGZjMmY4MWUxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAzMCBEZWMgMjAyMSAxMDoyNjozNyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgMS83XSBNb3ZlIHNjYW5pbnQ4KCkgdG8gbnVtdXRpbHMuYwoKTW92ZSBz Y2FuaW50OCgpIHRvIG51bXV0aWxzLmMgYW5kIHJlbmFtZSB0byBwZ19zdHJ0b2ludDY0KCku ICBXZQphbHJlYWR5IGhhdmUgYSAiMTYiIGFuZCAiMzIiIHZlcnNpb24gb2YgdGhhdCwgYW5k IHRoZSBjb2RlIGluc2lkZSB0aGUKZnVuY3Rpb25zIHdhcyBhbGlnbmVkLCBzbyB0aGlzIG1v dmUgbWFrZXMgYWxsIHRocmVlIHZlcnNpb25zCmNvbnNpc3RlbnQuICBUaGUgQVBJIGlzIGFs c28gY2hhbmdlZCB0byBubyBsb25nZXIgcHJvdmlkZSB0aGUgZXJyb3JPSwpjYXNlLiAgVXNl cnMgdGhhdCBuZWVkIHRoZSBlcnJvciBjaGVja2luZyBjYW4gdXNlIHN0cnRvaTY0KCkuCgpE aXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQv YjIzOTU2NGMtY2FkMC1iMjNlLWM1N2UtMTY2ZDg4M2NiOTdkQGVudGVycHJpc2VkYi5jb20K LS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jICAgICAgICAgICAgIHwgMTIg KystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgIDkg KystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvaW50OC5jICAgICAgICAgICAgICAgIHwgOTAg Ky0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbnVtdXRpbHMu YyAgICAgICAgICAgIHwgODQgKysrKysrKysrKysrKysrKysrKwogc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYyAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvaW5jbHVkZS91dGls cy9idWlsdGlucy5oICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMv aW50OC5oICAgICAgICAgICAgICAgICAgICB8IDI1IC0tLS0tLQogNyBmaWxlcyBjaGFuZ2Vk LCAxMDMgaW5zZXJ0aW9ucygrKSwgMTIyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL3V0aWxzL2ludDguaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9ub2RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5j CmluZGV4IGJhOWJhZjE0MGMuLjhkZDgyMWI3NjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9ub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX25v ZGUuYwpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlv bi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgotI2luY2x1ZGUgInV0aWxzL2ludDguaCIKICNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0 aWxzL3ZhcmJpdC5oIgpAQCAtMzUzLDcgKzM1Miw2IEBAIG1ha2VfY29uc3QoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBX0NvbnN0ICphY29uc3QpCiB7CiAJQ29uc3QJICAgKmNvbjsKIAlEYXR1 bQkJdmFsOwotCWludDY0CQl2YWw2NDsKIAlPaWQJCQl0eXBlaWQ7CiAJaW50CQkJdHlwZWxl bjsKIAlib29sCQl0eXBlYnl2YWw7CkBAIC0zODQsOCArMzgyLDE1IEBAIG1ha2VfY29uc3Qo UGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0NvbnN0ICphY29uc3QpCiAJCQlicmVhazsKIAogCQlj YXNlIFRfRmxvYXQ6CisJCXsKIAkJCS8qIGNvdWxkIGJlIGFuIG92ZXJzaXplIGludGVnZXIg YXMgd2VsbCBhcyBhIGZsb2F0IC4uLiAqLwotCQkJaWYgKHNjYW5pbnQ4KGFjb25zdC0+dmFs LmZ2YWwudmFsLCB0cnVlLCAmdmFsNjQpKQorCisJCQlpbnQ2NAkJdmFsNjQ7CisJCQljaGFy CSAgICplbmRwdHI7CisKKwkJCWVycm5vID0gMDsKKwkJCXZhbDY0ID0gc3RydG9pNjQoYWNv bnN0LT52YWwuZnZhbC52YWwsICZlbmRwdHIsIDEwKTsKKwkJCWlmIChlcnJubyA9PSAwICYm ICplbmRwdHIgPT0gJ1wwJykKIAkJCXsKIAkJCQkvKgogCQkJCSAqIEl0IG1pZ2h0IGFjdHVh bGx5IGZpdCBpbiBpbnQzMi4gUHJvYmFibHkgb25seSBJTlRfTUlOIGNhbgpAQCAtNDI1LDYg KzQzMCw3IEBAIG1ha2VfY29uc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0NvbnN0ICphY29u c3QpCiAJCQkJdHlwZWJ5dmFsID0gZmFsc2U7CiAJCQl9CiAJCQlicmVhazsKKwkJfQogCiAJ CWNhc2UgVF9TdHJpbmc6CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jCmluZGV4IGFmOGQ1MWFlZTkuLjA1NzBjYWEzNTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjEsNyArMjEs NiBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL29yaWdpbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Bnb3V0cHV0 LmgiCi0jaW5jbHVkZSAidXRpbHMvaW50OC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKQEAgLTIwNSw3ICsyMDQsOCBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0 ICpvcHRpb25zLCBQR091dHB1dERhdGEgKmRhdGEpCiAJCS8qIENoZWNrIGVhY2ggcGFyYW0s IHdoZXRoZXIgb3Igbm90IHdlIHJlY29nbml6ZSBpdCAqLwogCQlpZiAoc3RyY21wKGRlZmVs LT5kZWZuYW1lLCAicHJvdG9fdmVyc2lvbiIpID09IDApCiAJCXsKLQkJCWludDY0CQlwYXJz ZWQ7CisJCQl1bnNpZ25lZCBsb25nIHBhcnNlZDsKKwkJCWNoYXIJICAgKmVuZHB0cjsKIAog CQkJaWYgKHByb3RvY29sX3ZlcnNpb25fZ2l2ZW4pCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAg LTIxMywxMiArMjEzLDEzIEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlv bnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9y IHJlZHVuZGFudCBvcHRpb25zIikpKTsKIAkJCXByb3RvY29sX3ZlcnNpb25fZ2l2ZW4gPSB0 cnVlOwogCi0JCQlpZiAoIXNjYW5pbnQ4KHN0clZhbChkZWZlbC0+YXJnKSwgdHJ1ZSwgJnBh cnNlZCkpCisJCQlwYXJzZWQgPSBzdHJ0b3VsKHN0clZhbChkZWZlbC0+YXJnKSwgJmVuZHB0 ciwgMTApOworCQkJaWYgKGVycm5vIHx8ICplbmRwdHIgIT0gJ1wwJykKIAkJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCiAJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHByb3RvX3ZlcnNpb24iKSkpOwogCi0JCQlp ZiAocGFyc2VkID4gUEdfVUlOVDMyX01BWCB8fCBwYXJzZWQgPCAwKQorCQkJaWYgKHBhcnNl ZCA+IFBHX1VJTlQzMl9NQVgpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkJIGVycm1zZygicHJv dG9fdmVyc2lvbiBcIiVzXCIgb3V0IG9mIHJhbmdlIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9pbnQ4LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50OC5jCmlu ZGV4IGFkMTlkMTU0ZmYuLjRhODcxMTRhNGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9pbnQ4LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDguYwpAQCAt MjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIm5vZGVzL3N1cHBvcnRub2Rlcy5oIgogI2luY2x1 ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgotI2luY2x1ZGUgInV0aWxzL2ludDguaCIKIAogCiB0eXBlZGVmIHN0cnVjdApAQCAtNDUs OTkgKzQ0LDE0IEBAIHR5cGVkZWYgc3RydWN0CiAgKiBGb3JtYXR0aW5nIGFuZCBjb252ZXJz aW9uIHJvdXRpbmVzLgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0vKgotICogc2NhbmludDggLS0tIHRyeSB0byBw YXJzZSBhIHN0cmluZyBpbnRvIGFuIGludDguCi0gKgotICogSWYgZXJyb3JPSyBpcyBmYWxz ZSwgZXJlcG9ydCBhIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGlmIHRoZSBzdHJpbmcgaXMgYmFk LgotICogSWYgZXJyb3JPSyBpcyB0cnVlLCBqdXN0IHJldHVybiAiZmFsc2UiIGZvciBiYWQg aW5wdXQuCi0gKi8KLWJvb2wKLXNjYW5pbnQ4KGNvbnN0IGNoYXIgKnN0ciwgYm9vbCBlcnJv ck9LLCBpbnQ2NCAqcmVzdWx0KQotewotCWNvbnN0IGNoYXIgKnB0ciA9IHN0cjsKLQlpbnQ2 NAkJdG1wID0gMDsKLQlib29sCQluZWcgPSBmYWxzZTsKLQotCS8qCi0JICogRG8gb3VyIG93 biBzY2FuLCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHNzY2FuZiB3aGljaCBtaWdodCBiZSBi cm9rZW4KLQkgKiBmb3IgbG9uZyBsb25nLgotCSAqCi0JICogQXMgSU5UNjRfTUlOIGNhbid0 IGJlIHN0b3JlZCBhcyBhIHBvc2l0aXZlIDY0IGJpdCBpbnRlZ2VyLCBhY2N1bXVsYXRlCi0J ICogdmFsdWUgYXMgYSBuZWdhdGl2ZSBudW1iZXIuCi0JICovCi0KLQkvKiBza2lwIGxlYWRp bmcgc3BhY2VzICovCi0Jd2hpbGUgKCpwdHIgJiYgaXNzcGFjZSgodW5zaWduZWQgY2hhcikg KnB0cikpCi0JCXB0cisrOwotCi0JLyogaGFuZGxlIHNpZ24gKi8KLQlpZiAoKnB0ciA9PSAn LScpCi0JewotCQlwdHIrKzsKLQkJbmVnID0gdHJ1ZTsKLQl9Ci0JZWxzZSBpZiAoKnB0ciA9 PSAnKycpCi0JCXB0cisrOwotCi0JLyogcmVxdWlyZSBhdCBsZWFzdCBvbmUgZGlnaXQgKi8K LQlpZiAodW5saWtlbHkoIWlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpwdHIpKSkKLQkJZ290 byBpbnZhbGlkX3N5bnRheDsKLQotCS8qIHByb2Nlc3MgZGlnaXRzICovCi0Jd2hpbGUgKCpw dHIgJiYgaXNkaWdpdCgodW5zaWduZWQgY2hhcikgKnB0cikpCi0JewotCQlpbnQ4CQlkaWdp dCA9ICgqcHRyKysgLSAnMCcpOwotCi0JCWlmICh1bmxpa2VseShwZ19tdWxfczY0X292ZXJm bG93KHRtcCwgMTAsICZ0bXApKSB8fAotCQkJdW5saWtlbHkocGdfc3ViX3M2NF9vdmVyZmxv dyh0bXAsIGRpZ2l0LCAmdG1wKSkpCi0JCQlnb3RvIG91dF9vZl9yYW5nZTsKLQl9Ci0KLQkv KiBhbGxvdyB0cmFpbGluZyB3aGl0ZXNwYWNlLCBidXQgbm90IG90aGVyIHRyYWlsaW5nIGNo YXJzICovCi0Jd2hpbGUgKCpwdHIgIT0gJ1wwJyAmJiBpc3NwYWNlKCh1bnNpZ25lZCBjaGFy KSAqcHRyKSkKLQkJcHRyKys7Ci0KLQlpZiAodW5saWtlbHkoKnB0ciAhPSAnXDAnKSkKLQkJ Z290byBpbnZhbGlkX3N5bnRheDsKLQotCWlmICghbmVnKQotCXsKLQkJLyogY291bGQgZmFp bCBpZiBpbnB1dCBpcyBtb3N0IG5lZ2F0aXZlIG51bWJlciAqLwotCQlpZiAodW5saWtlbHko dG1wID09IFBHX0lOVDY0X01JTikpCi0JCQlnb3RvIG91dF9vZl9yYW5nZTsKLQkJdG1wID0g LXRtcDsKLQl9Ci0KLQkqcmVzdWx0ID0gdG1wOwotCXJldHVybiB0cnVlOwotCi1vdXRfb2Zf cmFuZ2U6Ci0JaWYgKCFlcnJvck9LKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2Rl KEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAotCQkJCSBlcnJtc2coInZh bHVlIFwiJXNcIiBpcyBvdXQgb2YgcmFuZ2UgZm9yIHR5cGUgJXMiLAotCQkJCQkJc3RyLCAi YmlnaW50IikpKTsKLQlyZXR1cm4gZmFsc2U7Ci0KLWludmFsaWRfc3ludGF4OgotCWlmICgh ZXJyb3JPSykKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfVEVYVF9SRVBSRVNFTlRBVElPTiksCi0JCQkJIGVycm1zZygiaW52YWxpZCBpbnB1dCBz eW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsCi0JCQkJCQkiYmlnaW50Iiwgc3RyKSkpOwot CXJldHVybiBmYWxzZTsKLX0KLQogLyogaW50OGluKCkKICAqLwogRGF0dW0KIGludDhpbihQ R19GVU5DVElPTl9BUkdTKQogewotCWNoYXIJICAgKnN0ciA9IFBHX0dFVEFSR19DU1RSSU5H KDApOwotCWludDY0CQlyZXN1bHQ7CisJY2hhcgkgICAqbnVtID0gUEdfR0VUQVJHX0NTVFJJ TkcoMCk7CiAKLQkodm9pZCkgc2NhbmludDgoc3RyLCBmYWxzZSwgJnJlc3VsdCk7Ci0JUEdf UkVUVVJOX0lOVDY0KHJlc3VsdCk7CisJUEdfUkVUVVJOX0lOVDY0KHBnX3N0cnRvaW50NjQo bnVtKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bXV0 aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtdXRpbHMuYwppbmRleCA4OThhOWUz ZjlhLi5lODJkMjNhMzI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVt dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtdXRpbHMuYwpAQCAtMzI1 LDYgKzMyNSw5MCBAQCBwZ19zdHJ0b2ludDMyKGNvbnN0IGNoYXIgKnMpCiAJcmV0dXJuIDA7 CQkJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiB9CiAKKy8qCisgKiBDb252ZXJ0IGlu cHV0IHN0cmluZyB0byBhIHNpZ25lZCA2NCBiaXQgaW50ZWdlci4KKyAqCisgKiBBbGxvd3Mg YW55IG51bWJlciBvZiBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVy cy4gV2lsbCB0aHJvdworICogZXJlcG9ydCgpIHVwb24gYmFkIGlucHV0IGZvcm1hdCBvciBv dmVyZmxvdy4KKyAqCisgKiBOQjogQWNjdW11bGF0ZSBpbnB1dCBhcyBhIG5lZ2F0aXZlIG51 bWJlciwgdG8gZGVhbCB3aXRoIHR3bydzIGNvbXBsZW1lbnQKKyAqIHJlcHJlc2VudGF0aW9u IG9mIHRoZSBtb3N0IG5lZ2F0aXZlIG51bWJlciwgd2hpY2ggY2FuJ3QgYmUgcmVwcmVzZW50 ZWQgYXMgYQorICogcG9zaXRpdmUgbnVtYmVyLgorICovCitpbnQ2NAorcGdfc3RydG9pbnQ2 NChjb25zdCBjaGFyICpzKQoreworCWNvbnN0IGNoYXIgKnB0ciA9IHM7CisJaW50NjQJCXRt cCA9IDA7CisJYm9vbAkJbmVnID0gZmFsc2U7CisKKwkvKgorCSAqIERvIG91ciBvd24gc2Nh biwgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBzc2NhbmYgd2hpY2ggbWlnaHQgYmUgYnJva2Vu CisJICogZm9yIGxvbmcgbG9uZy4KKwkgKgorCSAqIEFzIElOVDY0X01JTiBjYW4ndCBiZSBz dG9yZWQgYXMgYSBwb3NpdGl2ZSA2NCBiaXQgaW50ZWdlciwgYWNjdW11bGF0ZQorCSAqIHZh bHVlIGFzIGEgbmVnYXRpdmUgbnVtYmVyLgorCSAqLworCisJLyogc2tpcCBsZWFkaW5nIHNw YWNlcyAqLworCXdoaWxlICgqcHRyICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpwdHIp KQorCQlwdHIrKzsKKworCS8qIGhhbmRsZSBzaWduICovCisJaWYgKCpwdHIgPT0gJy0nKQor CXsKKwkJcHRyKys7CisJCW5lZyA9IHRydWU7CisJfQorCWVsc2UgaWYgKCpwdHIgPT0gJysn KQorCQlwdHIrKzsKKworCS8qIHJlcXVpcmUgYXQgbGVhc3Qgb25lIGRpZ2l0ICovCisJaWYg KHVubGlrZWx5KCFpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkpCisJCWdvdG8gaW52 YWxpZF9zeW50YXg7CisKKwkvKiBwcm9jZXNzIGRpZ2l0cyAqLworCXdoaWxlICgqcHRyICYm IGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQorCXsKKwkJaW50OAkJZGlnaXQgPSAo KnB0cisrIC0gJzAnKTsKKworCQlpZiAodW5saWtlbHkocGdfbXVsX3M2NF9vdmVyZmxvdyh0 bXAsIDEwLCAmdG1wKSkgfHwKKwkJCXVubGlrZWx5KHBnX3N1Yl9zNjRfb3ZlcmZsb3codG1w LCBkaWdpdCwgJnRtcCkpKQorCQkJZ290byBvdXRfb2ZfcmFuZ2U7CisJfQorCisJLyogYWxs b3cgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYnV0IG5vdCBvdGhlciB0cmFpbGluZyBjaGFycyAq LworCXdoaWxlICgqcHRyICE9ICdcMCcgJiYgaXNzcGFjZSgodW5zaWduZWQgY2hhcikgKnB0 cikpCisJCXB0cisrOworCisJaWYgKHVubGlrZWx5KCpwdHIgIT0gJ1wwJykpCisJCWdvdG8g aW52YWxpZF9zeW50YXg7CisKKwlpZiAoIW5lZykKKwl7CisJCS8qIGNvdWxkIGZhaWwgaWYg aW5wdXQgaXMgbW9zdCBuZWdhdGl2ZSBudW1iZXIgKi8KKwkJaWYgKHVubGlrZWx5KHRtcCA9 PSBQR19JTlQ2NF9NSU4pKQorCQkJZ290byBvdXRfb2ZfcmFuZ2U7CisJCXRtcCA9IC10bXA7 CisJfQorCisJcmV0dXJuIHRtcDsKKworb3V0X29mX3JhbmdlOgorCWVyZXBvcnQoRVJST1Is CisJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJ CSBlcnJtc2coInZhbHVlIFwiJXNcIiBpcyBvdXQgb2YgcmFuZ2UgZm9yIHR5cGUgJXMiLAor CQkJCQlzLCAiYmlnaW50IikpKTsKKworaW52YWxpZF9zeW50YXg6CisJZXJlcG9ydChFUlJP UiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwK KwkJCSBlcnJtc2coImludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlICVzOiBcIiVzXCIi LAorCQkJCQkiYmlnaW50IiwgcykpKTsKKworCXJldHVybiAwOwkJCQkJLyoga2VlcCBjb21w aWxlciBxdWlldCAqLworfQorCiAvKgogICogcGdfaXRvYTogY29udmVydHMgYSBzaWduZWQg MTYtYml0IGludGVnZXIgdG8gaXRzIHN0cmluZyByZXByZXNlbnRhdGlvbgogICogYW5kIHJl dHVybnMgc3RybGVuKGEpLgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggOTdmMmExZjgwYS4uZjE2NmE3 N2UzYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC03ODcsOCArNzg3LDggQEAgaXNfYW5faW50KGNv bnN0IGNoYXIgKnN0cikKIC8qCiAgKiBzdHJ0b2ludDY0IC0tIGNvbnZlcnQgYSBzdHJpbmcg dG8gNjQtYml0IGludGVnZXIKICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2xpZ2h0bHkg bW9kaWZpZWQgdmVyc2lvbiBvZiBzY2FuaW50OCgpIGZyb20KLSAqIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9pbnQ4LmMuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2xpZ2h0bHkgbW9kaWZp ZWQgdmVyc2lvbiBvZiBwZ19zdHJ0b2ludDY0KCkgZnJvbQorICogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L251bXV0aWxzLmMuCiAgKgogICogVGhlIGZ1bmN0aW9uIHJldHVybnMgd2hldGhl ciB0aGUgY29udmVyc2lvbiB3b3JrZWQsIGFuZCBpZiBzbwogICogIipyZXN1bHQiIGlzIHNl dCB0byB0aGUgcmVzdWx0LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRp bnMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKaW5kZXggN2FjNDc4MGUzZi4u MTkxY2M4NTRhMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCkBAIC00Niw2ICs0Niw3IEBAIGV4 dGVybiBpbnQJbmFtZXN0cmNtcChOYW1lIG5hbWUsIGNvbnN0IGNoYXIgKnN0cik7CiBleHRl cm4gaW50MzIgcGdfYXRvaShjb25zdCBjaGFyICpzLCBpbnQgc2l6ZSwgaW50IGMpOwogZXh0 ZXJuIGludDE2IHBnX3N0cnRvaW50MTYoY29uc3QgY2hhciAqcyk7CiBleHRlcm4gaW50MzIg cGdfc3RydG9pbnQzMihjb25zdCBjaGFyICpzKTsKK2V4dGVybiBpbnQ2NCBwZ19zdHJ0b2lu dDY0KGNvbnN0IGNoYXIgKnMpOwogZXh0ZXJuIGludAlwZ19pdG9hKGludDE2IGksIGNoYXIg KmEpOwogZXh0ZXJuIGludAlwZ191bHRvYV9uKHVpbnQzMiBsLCBjaGFyICphKTsKIGV4dGVy biBpbnQJcGdfdWxsdG9hX24odWludDY0IGwsIGNoYXIgKmEpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvaW50OC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvaW50OC5oCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDM4NmM0MDA4Li4wMDAwMDAwMDAwCi0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL2ludDguaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAg QEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoKLSAqIGludDguaAotICoJICBEZWNsYXJh dGlvbnMgZm9yIG9wZXJhdGlvbnMgb24gNjQtYml0IGludGVnZXJzLgotICoKLSAqCi0gKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50 cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCi0gKgotICogc3JjL2luY2x1ZGUv dXRpbHMvaW50OC5oCi0gKgotICogTk9URVMKLSAqIFRoZXNlIGRhdGEgdHlwZXMgYXJlIHN1 cHBvcnRlZCBvbiBhbGwgNjQtYml0IGFyY2hpdGVjdHVyZXMsIGFuZCBtYXkKLSAqCWJlIHN1 cHBvcnRlZCB0aHJvdWdoIGxpYnJhcmllcyBvbiBzb21lIDMyLWJpdCBtYWNoaW5lcy4gSWYg eW91ciBtYWNoaW5lCi0gKglpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCwgdGhlbiBwbGVh c2UgdHJ5IHRvIG1ha2UgaXQgc28sIHRoZW4gcG9zdAotICoJcGF0Y2hlcyB0byB0aGUgcG9z dGdyZXNxbC5vcmcgaGFja2VycyBtYWlsaW5nIGxpc3QuCi0gKgotICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0gKi8KLSNpZm5kZWYgSU5UOF9ICi0jZGVmaW5lIElOVDhfSAotCi1leHRlcm4g Ym9vbCBzY2FuaW50OChjb25zdCBjaGFyICpzdHIsIGJvb2wgZXJyb3JPSywgaW50NjQgKnJl c3VsdCk7Ci0KLSNlbmRpZgkJCQkJCQkvKiBJTlQ4X0ggKi8KCmJhc2UtY29tbWl0OiBiZWQ2 ZWQzZGU5YjNlNjJkOGM2ZWUwMzQ1MTNkMDRkNzY5MDkxOTI3Ci0tIAoyLjM0LjEKCg== --------------do50zd79MbDy71onIEFvfvlB Content-Type: text/plain; charset=UTF-8; name="v7-0002-Remove-one-use-of-pg_atoi.patch" Content-Disposition: attachment; filename="v7-0002-Remove-one-use-of-pg_atoi.patch" Content-Transfer-Encoding: base64 RnJvbSAxNWJjMWY5OTY2NWEyYzUyYWRiMjI4MmE0ZTY1ZDBhNjI4ZWNhZjliIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAzMCBEZWMgMjAyMSAxMDoyNjozNyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgMi83XSBSZW1vdmUgb25lIHVzZSBvZiBwZ19hdG9pKCkKClRoZXJlIHdh cyBubyByZWFsIG5lZWQgdG8gdXNlIHRoaXMgaGVyZSBpbnN0ZWFkIG9mIGEgc2ltcGxlciBB UEkuCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9ncmFtLnkgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvanNvbnBhdGhfZ3JhbS55CmluZGV4IDdhMjUxYjg5MmQuLjczMTFk MTJlMzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9ncmFt LnkKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueQpAQCAtMjMy LDcgKzIzMiw3IEBAIGFycmF5X2FjY2Vzc29yOgogCTsKIAogYW55X2xldmVsOgotCUlOVF9Q CQkJCQkJCXsgJCQgPSBwZ19hdG9pKCQxLnZhbCwgNCwgMCk7IH0KKwlJTlRfUAkJCQkJCQl7 ICQkID0gcGdfc3RydG9pbnQzMigkMS52YWwpOyB9CiAJfCBMQVNUX1AJCQkJCQl7ICQkID0g LTE7IH0KIAk7CiAKLS0gCjIuMzQuMQoK --------------do50zd79MbDy71onIEFvfvlB Content-Type: text/plain; charset=UTF-8; name="v7-0003-Remove-pg_atoi.patch" Content-Disposition: attachment; filename="v7-0003-Remove-pg_atoi.patch" Content-Transfer-Encoding: base64 RnJvbSBkY2JjNDRhNjJkMDZkNjYwMzE0MzA1ZGZmNDkxOTA0MWI3NDA4ZjYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAzMCBEZWMgMjAyMSAxMDoyNjozNyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgMy83XSBSZW1vdmUgcGdfYXRvaSgpCgpUaGUgbGFzdCBjYWxsZXIgd2Fz IGludDJ2ZWN0b3JpbigpLCBhbmQgaGF2aW5nIHN1Y2ggYSBnZW5lcmFsIGZ1bmN0aW9uCmZv ciBvbmUgdXNlciBkaWRuJ3Qgc2VlbSB1c2VmdWwsIHNvIGp1c3QgcHV0IHRoZSByZXF1aXJl ZCBwYXJ0cyBpbmxpbmUKYW5kIHJlbW92ZSB0aGUgZnVuY3Rpb24uCi0tLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2ludC5jICAgICAgfCAzMiArKysrKysrKysrLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9udW11dGlscy5jIHwgODggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmggICAgIHwgIDEgLQogMyBmaWxl cyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvaW50LmMKaW5kZXggOGJkMjM0YzExYy4uNDJkZGFlOTllZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2ludC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9p bnQuYwpAQCAtMTQ2LDE1ICsxNDYsMzkgQEAgaW50MnZlY3RvcmluKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAlyZXN1bHQgPSAoaW50MnZlY3RvciAqKSBwYWxsb2MwKEludDJWZWN0b3JTaXpl KEZVTkNfTUFYX0FSR1MpKTsKIAotCWZvciAobiA9IDA7ICppbnRTdHJpbmcgJiYgbiA8IEZV TkNfTUFYX0FSR1M7IG4rKykKKwlmb3IgKG4gPSAwOyBuIDwgRlVOQ19NQVhfQVJHUzsgbisr KQogCXsKKwkJbG9uZwkJbDsKKwkJY2hhcgkgICAqZW5kcDsKKwogCQl3aGlsZSAoKmludFN0 cmluZyAmJiBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqaW50U3RyaW5nKSkKIAkJCWludFN0 cmluZysrOwogCQlpZiAoKmludFN0cmluZyA9PSAnXDAnKQogCQkJYnJlYWs7Ci0JCXJlc3Vs dC0+dmFsdWVzW25dID0gcGdfYXRvaShpbnRTdHJpbmcsIHNpemVvZihpbnQxNiksICcgJyk7 Ci0JCXdoaWxlICgqaW50U3RyaW5nICYmICFpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqaW50 U3RyaW5nKSkKLQkJCWludFN0cmluZysrOworCisJCWVycm5vID0gMDsKKwkJbCA9IHN0cnRv bChpbnRTdHJpbmcsICZlbmRwLCAxMCk7CisKKwkJaWYgKGludFN0cmluZyA9PSBlbmRwKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRf UkVQUkVTRU5UQVRJT04pLAorCQkJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRheCBm b3IgdHlwZSAlczogXCIlc1wiIiwKKwkJCQkJCQkic21hbGxpbnQiLCBpbnRTdHJpbmcpKSk7 CisKKwkJaWYgKGVycm5vID09IEVSQU5HRSB8fCBsIDwgU0hSVF9NSU4gfHwgbCA+IFNIUlRf TUFYKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklD X1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJCSBlcnJtc2coInZhbHVlIFwiJXNcIiBpcyBv dXQgb2YgcmFuZ2UgZm9yIHR5cGUgJXMiLCBpbnRTdHJpbmcsCisJCQkJCQkJInNtYWxsaW50 IikpKTsKKworCQlpZiAoKmVuZHAgJiYgKmVuZHAgIT0gJyAnKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04p LAorCQkJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSAlczogXCIl c1wiIiwKKwkJCQkJCQkiaW50ZWdlciIsIGludFN0cmluZykpKTsKKworCQlyZXN1bHQtPnZh bHVlc1tuXSA9IGw7CisJCWludFN0cmluZyA9IGVuZHA7CiAJfQogCXdoaWxlICgqaW50U3Ry aW5nICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICppbnRTdHJpbmcpKQogCQlpbnRTdHJp bmcrKzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW11dGlscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bXV0aWxzLmMKaW5kZXggZTgyZDIzYTMyNS4uY2Mz Zjk1ZDM5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bXV0aWxzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bXV0aWxzLmMKQEAgLTg1LDk0ICs4NSw2 IEBAIGRlY2ltYWxMZW5ndGg2NChjb25zdCB1aW50NjQgdikKIAlyZXR1cm4gdCArICh2ID49 IFBvd2Vyc09mVGVuW3RdKTsKIH0KIAotLyoKLSAqIHBnX2F0b2k6IGNvbnZlcnQgc3RyaW5n IHRvIGludGVnZXIKLSAqCi0gKiBhbGxvd3MgYW55IG51bWJlciBvZiBsZWFkaW5nIG9yIHRy YWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KLSAqCi0gKiAnc2l6ZScgaXMgdGhlIHNp emVvZigpIHRoZSBkZXNpcmVkIGludGVncmFsIHJlc3VsdCAoMSwgMiwgb3IgNCBieXRlcyku Ci0gKgotICogYywgaWYgbm90IDAsIGlzIGEgdGVybWluYXRvciBjaGFyYWN0ZXIgdGhhdCBt YXkgYXBwZWFyIGFmdGVyIHRoZQotICogaW50ZWdlciAocGx1cyB3aGl0ZXNwYWNlKS4gIElm IDAsIHRoZSBzdHJpbmcgbXVzdCBlbmQgYWZ0ZXIgdGhlIGludGVnZXIuCi0gKgotICogVW5s aWtlIHBsYWluIGF0b2koKSwgdGhpcyB3aWxsIHRocm93IGVyZXBvcnQoKSB1cG9uIGJhZCBp bnB1dCBmb3JtYXQgb3IKLSAqIG92ZXJmbG93LgotICovCi1pbnQzMgotcGdfYXRvaShjb25z dCBjaGFyICpzLCBpbnQgc2l6ZSwgaW50IGMpCi17Ci0JbG9uZwkJbDsKLQljaGFyCSAgICpi YWRwOwotCi0JLyoKLQkgKiBTb21lIHZlcnNpb25zIG9mIHN0cnRvbCB0cmVhdCB0aGUgZW1w dHkgc3RyaW5nIGFzIGFuIGVycm9yLCBidXQgc29tZQotCSAqIHNlZW0gbm90IHRvLiAgTWFr ZSBhbiBleHBsaWNpdCB0ZXN0IHRvIGJlIHN1cmUgd2UgY2F0Y2ggaXQuCi0JICovCi0JaWYg KHMgPT0gTlVMTCkKLQkJZWxvZyhFUlJPUiwgIk5VTEwgcG9pbnRlciIpOwotCWlmICgqcyA9 PSAwKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9U RVhUX1JFUFJFU0VOVEFUSU9OKSwKLQkJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRh eCBmb3IgdHlwZSAlczogXCIlc1wiIiwKLQkJCQkJCSJpbnRlZ2VyIiwgcykpKTsKLQotCWVy cm5vID0gMDsKLQlsID0gc3RydG9sKHMsICZiYWRwLCAxMCk7Ci0KLQkvKiBXZSBtYWRlIG5v IHByb2dyZXNzIHBhcnNpbmcgdGhlIHN0cmluZywgc28gYmFpbCBvdXQgKi8KLQlpZiAocyA9 PSBiYWRwKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKLQkJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5 bnRheCBmb3IgdHlwZSAlczogXCIlc1wiIiwKLQkJCQkJCSJpbnRlZ2VyIiwgcykpKTsKLQot CXN3aXRjaCAoc2l6ZSkKLQl7Ci0JCWNhc2Ugc2l6ZW9mKGludDMyKToKLQkJCWlmIChlcnJu byA9PSBFUkFOR0UKLSNpZiBkZWZpbmVkKEhBVkVfTE9OR19JTlRfNjQpCi0JCQkvKiB3b24n dCBnZXQgRVJBTkdFIG9uIHRoZXNlIHdpdGggNjQtYml0IGxvbmdzLi4uICovCi0JCQkJfHwg bCA8IElOVF9NSU4gfHwgbCA+IElOVF9NQVgKLSNlbmRpZgotCQkJCSkKLQkJCQllcmVwb3J0 KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9S QU5HRSksCi0JCQkJCQkgZXJybXNnKCJ2YWx1ZSBcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZv ciB0eXBlICVzIiwgcywKLQkJCQkJCQkJImludGVnZXIiKSkpOwotCQkJYnJlYWs7Ci0JCWNh c2Ugc2l6ZW9mKGludDE2KToKLQkJCWlmIChlcnJubyA9PSBFUkFOR0UgfHwgbCA8IFNIUlRf TUlOIHx8IGwgPiBTSFJUX01BWCkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCi0JCQkJCQkgZXJybXNn KCJ2YWx1ZSBcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlICVzIiwgcywKLQkJCQkJ CQkJInNtYWxsaW50IikpKTsKLQkJCWJyZWFrOwotCQljYXNlIHNpemVvZihpbnQ4KToKLQkJ CWlmIChlcnJubyA9PSBFUkFOR0UgfHwgbCA8IFNDSEFSX01JTiB8fCBsID4gU0NIQVJfTUFY KQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNf VkFMVUVfT1VUX09GX1JBTkdFKSwKLQkJCQkJCSBlcnJtc2coInZhbHVlIFwiJXNcIiBpcyBv dXQgb2YgcmFuZ2UgZm9yIDgtYml0IGludGVnZXIiLCBzKSkpOwotCQkJYnJlYWs7Ci0JCWRl ZmF1bHQ6Ci0JCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgcmVzdWx0IHNpemU6ICVkIiwg c2l6ZSk7Ci0JfQotCi0JLyoKLQkgKiBTa2lwIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlOyBp ZiBhbnl0aGluZyBidXQgd2hpdGVzcGFjZSByZW1haW5zIGJlZm9yZQotCSAqIHRoZSB0ZXJt aW5hdGluZyBjaGFyYWN0ZXIsIGJhaWwgb3V0Ci0JICovCi0Jd2hpbGUgKCpiYWRwICYmICpi YWRwICE9IGMgJiYgaXNzcGFjZSgodW5zaWduZWQgY2hhcikgKmJhZHApKQotCQliYWRwKys7 Ci0KLQlpZiAoKmJhZHAgJiYgKmJhZHAgIT0gYykKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCi0JCQkJIGVy cm1zZygiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsCi0JCQkJ CQkiaW50ZWdlciIsIHMpKSk7Ci0KLQlyZXR1cm4gKGludDMyKSBsOwotfQotCiAvKgogICog Q29udmVydCBpbnB1dCBzdHJpbmcgdG8gYSBzaWduZWQgMTYgYml0IGludGVnZXIuCiAgKgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL2J1aWx0aW5zLmgKaW5kZXggMTkxY2M4NTRhMy4uNThhYmY0MzY0YSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9idWlsdGlucy5oCkBAIC00Myw3ICs0Myw2IEBAIGV4dGVybiB2b2lkIG5hbWVzdHJj cHkoTmFtZSBuYW1lLCBjb25zdCBjaGFyICpzdHIpOwogZXh0ZXJuIGludAluYW1lc3RyY21w KE5hbWUgbmFtZSwgY29uc3QgY2hhciAqc3RyKTsKIAogLyogbnVtdXRpbHMuYyAqLwotZXh0 ZXJuIGludDMyIHBnX2F0b2koY29uc3QgY2hhciAqcywgaW50IHNpemUsIGludCBjKTsKIGV4 dGVybiBpbnQxNiBwZ19zdHJ0b2ludDE2KGNvbnN0IGNoYXIgKnMpOwogZXh0ZXJuIGludDMy IHBnX3N0cnRvaW50MzIoY29uc3QgY2hhciAqcyk7CiBleHRlcm4gaW50NjQgcGdfc3RydG9p bnQ2NChjb25zdCBjaGFyICpzKTsKLS0gCjIuMzQuMQoK --------------do50zd79MbDy71onIEFvfvlB Content-Type: text/plain; charset=UTF-8; name="v7-0004-Add-test-case-for-trailing-junk-after-numeric-lit.patch" Content-Disposition: attachment; filename*0="v7-0004-Add-test-case-for-trailing-junk-after-numeric-lit.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmYjIyNGZlYzIyNTFiNjFjYzVjZjU3ODA2YjY3NDFkYjhmOGNjNThjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAzMCBEZWMgMjAyMSAxMDoyNjozNyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgNC83XSBBZGQgdGVzdCBjYXNlIGZvciB0cmFpbGluZyBqdW5rIGFmdGVy IG51bWVyaWMgbGl0ZXJhbHMKClBvc3RncmVTUUwgY3VycmVudGx5IGFjY2VwdHMgbnVtZXJp YyBsaXRlcmFscyB3aXRoIHRyYWlsaW5nCm5vbi1kaWdpdHMsIHN1Y2ggYXMgMTIzYWJjIHdo ZXJlIHRoZSBhYmMgaXMgdHJlYXRlZCBhcyB0aGUgbmV4dCB0b2tlbi4KVGhpcyBtYXkgYmUg YSBiaXQgc3VycHJpc2luZy4gIFRoaXMgY29tbWl0IGFkZHMgdGVzdCBjYXNlcyBmb3IgdGhp czsKc3Vic2VxdWVudCBjb21taXRzIGludGVuZCB0byBjaGFuZ2UgdGhpcyBiZWhhdmlvci4K CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxh dC9iMjM5NTY0Yy1jYWQwLWIyM2UtYzU3ZS0xNjZkODgzY2I5N2RAZW50ZXJwcmlzZWRiLmNv bQotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbnVtZXJvbG9neS5vdXQgfCA2MiAr KysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL251bWVyb2xv Z3kuc3FsICAgICAgfCAxNiArKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9u cygrKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbnVtZXJvbG9n eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL251bWVyb2xvZ3kub3V0CmluZGV4 IDQ0ZDZjNDM1ZGUuLjJmZmM3M2U4NTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvbnVtZXJvbG9neS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9udW1lcm9sb2d5Lm91dApAQCAtMiw2ICsyLDY4IEBACiAtLSBOVU1FUk9MT0dZCiAtLSBU ZXN0IHZhcmlvdXMgY29tYmluYXRpb25zIG9mIG51bWVyaWMgdHlwZXMgYW5kIGZ1bmN0aW9u cy4KIC0tCistLQorLS0gVHJhaWxpbmcganVuayBpbiBudW1lcmljIGxpdGVyYWxzCistLQor U0VMRUNUIDEyM2FiYzsKKyBhYmMgCistLS0tLQorIDEyMworKDEgcm93KQorCitTRUxFQ1Qg MHgwbzsKKyB4MG8gCistLS0tLQorICAgMAorKDEgcm93KQorCitTRUxFQ1QgMV8yXzM7Cisg XzJfMyAKKy0tLS0tLQorICAgIDEKKygxIHJvdykKKworU0VMRUNUIDAuYTsKKyBhIAorLS0t CisgMAorKDEgcm93KQorCitTRUxFQ1QgMC4wYTsKKyAgYSAgCistLS0tLQorIDAuMAorKDEg cm93KQorCitTRUxFQ1QgLjBhOworICBhICAKKy0tLS0tCisgMC4wCisoMSByb3cpCisKK1NF TEVDVCAwLjBlMWE7CisgYSAKKy0tLQorIDAKKygxIHJvdykKKworU0VMRUNUIDAuMGU7Cisg IGUgIAorLS0tLS0KKyAwLjAKKygxIHJvdykKKworU0VMRUNUIDAuMGUrYTsKK0VSUk9SOiAg c3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIisiCitMSU5FIDE6IFNFTEVDVCAwLjBlK2E7Cisg ICAgICAgICAgICAgICAgICAgXgorUFJFUEFSRSBwMSBBUyBTRUxFQ1QgJDFhOworRVhFQ1VU RSBwMSgxKTsKKyBhIAorLS0tCisgMQorKDEgcm93KQorCiAtLQogLS0gVGVzdCBpbXBsaWNp dCB0eXBlIGNvbnZlcnNpb25zCiAtLSBUaGlzIGZhaWxzIGZvciBQb3N0Z3JlcyB2Ni4xIChh bmQgZWFybGllcj8pCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9udW1lcm9s b2d5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL251bWVyb2xvZ3kuc3FsCmluZGV4IGZk ZGI1OGY4ZmQuLmZiNzVmOTc4MzIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L251bWVyb2xvZ3kuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL251bWVyb2xvZ3ku c3FsCkBAIC0zLDYgKzMsMjIgQEAKIC0tIFRlc3QgdmFyaW91cyBjb21iaW5hdGlvbnMgb2Yg bnVtZXJpYyB0eXBlcyBhbmQgZnVuY3Rpb25zLgogLS0KIAorLS0KKy0tIFRyYWlsaW5nIGp1 bmsgaW4gbnVtZXJpYyBsaXRlcmFscworLS0KKworU0VMRUNUIDEyM2FiYzsKK1NFTEVDVCAw eDBvOworU0VMRUNUIDFfMl8zOworU0VMRUNUIDAuYTsKK1NFTEVDVCAwLjBhOworU0VMRUNU IC4wYTsKK1NFTEVDVCAwLjBlMWE7CitTRUxFQ1QgMC4wZTsKK1NFTEVDVCAwLjBlK2E7CitQ UkVQQVJFIHAxIEFTIFNFTEVDVCAkMWE7CitFWEVDVVRFIHAxKDEpOworCiAtLQogLS0gVGVz dCBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb25zCiAtLSBUaGlzIGZhaWxzIGZvciBQb3N0Z3Jl cyB2Ni4xIChhbmQgZWFybGllcj8pCi0tIAoyLjM0LjEKCg== --------------do50zd79MbDy71onIEFvfvlB Content-Type: text/plain; charset=UTF-8; name="v7-0005-Reject-trailing-junk-after-numeric-literals.patch" Content-Disposition: attachment; filename*0="v7-0005-Reject-trailing-junk-after-numeric-literals.patch" Content-Transfer-Encoding: base64 RnJvbSBhYzNiNmFjOTUyNjI0ZGVkMWM5YWVmZTRmM2U4YTY3MTVmNGJiMWQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAzMCBEZWMgMjAyMSAxMDoyNjozNyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgNS83XSBSZWplY3QgdHJhaWxpbmcganVuayBhZnRlciBudW1lcmljIGxp dGVyYWxzCgpBZnRlciB0aGlzLCB0aGUgUG9zdGdyZVNRTCBsZXhlcnMgbm8gbG9uZ2VyIGFj Y2VwdCBudW1lcmljIGxpdGVyYWxzCndpdGggdHJhaWxpbmcgbm9uLWRpZ2l0cywgc3VjaCBh cyAxMjNhYmMsIHdoaWNoIHdvdWxkIGJlIHNjYW5uZWQgYXMKdHdvIHRva2VuczogMTIzIGFu ZCBhYmMuICBUaGlzIGlzIHVuZG9jdW1lbnRlZCBhbmQgc3VycHJpc2luZywgYW5kIGl0Cm1p Z2h0IGFsc28gaW50ZXJmZXJlIHdpdGggc29tZSBleHRlbmRlZCBudW1lcmljIGxpdGVyYWwg c3ludGF4IGJlaW5nCmNvbnRlbXBsYXRlZCBmb3IgdGhlIGZ1dHVyZS4KCkRpc2N1c3Npb246 IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9iMjM5NTY0Yy1j YWQwLWIyM2UtYzU3ZS0xNjZkODgzY2I5N2RAZW50ZXJwcmlzZWRiLmNvbQotLS0KIHNyYy9i YWNrZW5kL3BhcnNlci9zY2FuLmwgICAgICAgICAgICAgICAgfCAzMiArKysrKysrLS0tCiBz cmMvZmVfdXRpbHMvcHNxbHNjYW4ubCAgICAgICAgICAgICAgICAgIHwgMjUgKysrKystLS0K IHNyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wZ2MubCAgICAgICAgfCAyMiArKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL251bWVyb2xvZ3kub3V0IHwgNzcgKysrKysr KysrLS0tLS0tLS0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9udW1lcm9sb2d5LnNx bCAgICAgIHwgIDEgLQogNSBmaWxlcyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspLCA2NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3NjYW4ubAppbmRleCBmNTU1YWM2ZTZkLi5hYjI0YmY3MGRi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9zY2FuLmwKQEAgLTM5OSw3ICszOTksMTIgQEAgcmVhbAkJCSh7aW50ZWdl cn18e2RlY2ltYWx9KVtFZV1bLStdP3tkaWdpdH0rCiByZWFsZmFpbDEJCSh7aW50ZWdlcn18 e2RlY2ltYWx9KVtFZV0KIHJlYWxmYWlsMgkJKHtpbnRlZ2VyfXx7ZGVjaW1hbH0pW0VlXVst K10KIAoraW50ZWdlcl9qdW5rCXtpbnRlZ2VyfXtpZGVudF9zdGFydH0KK2RlY2ltYWxfanVu awl7ZGVjaW1hbH17aWRlbnRfc3RhcnR9CityZWFsX2p1bmsJCXtyZWFsfXtpZGVudF9zdGFy dH0KKwogcGFyYW0JCQlcJHtpbnRlZ2VyfQorcGFyYW1fanVuawkJXCR7aW50ZWdlcn17aWRl bnRfc3RhcnR9CiAKIG90aGVyCQkJLgogCkBAIC05NzQsNiArOTc5LDEwIEBAIG90aGVyCQkJ LgogCQkJCQl5eWx2YWwtPml2YWwgPSBhdG9sKHl5dGV4dCArIDEpOwogCQkJCQlyZXR1cm4g UEFSQU07CiAJCQkJfQore3BhcmFtX2p1bmt9CXsKKwkJCQkJU0VUX1lZTExPQygpOworCQkJ CQl5eWVycm9yKCJ0cmFpbGluZyBqdW5rIGFmdGVyIHBhcmFtZXRlciIpOworCQkJCX0KIAog e2ludGVnZXJ9CQl7CiAJCQkJCVNFVF9ZWUxMT0MoKTsKQEAgLTk5NiwxOSArMTAwNSwyNCBA QCBvdGhlcgkJCS4KIAkJCQkJcmV0dXJuIEZDT05TVDsKIAkJCQl9CiB7cmVhbGZhaWwxfQkJ ewotCQkJCQkvKgotCQkJCQkgKiB0aHJvdyBiYWNrIHRoZSBbRWVdLCBhbmQgZmlndXJlIG91 dCB3aGV0aGVyIHdoYXQKLQkJCQkJICogcmVtYWlucyBpcyBhbiB7aW50ZWdlcn0gb3Ige2Rl Y2ltYWx9LgotCQkJCQkgKi8KLQkJCQkJeXlsZXNzKHl5bGVuZyAtIDEpOwogCQkJCQlTRVRf WVlMTE9DKCk7Ci0JCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbCh5eXRleHQs IHl5bHZhbCk7CisJCQkJCXl5ZXJyb3IoInRyYWlsaW5nIGp1bmsgYWZ0ZXIgbnVtZXJpYyBs aXRlcmFsIik7CiAJCQkJfQoge3JlYWxmYWlsMn0JCXsKLQkJCQkJLyogdGhyb3cgYmFjayB0 aGUgW0VlXVsrLV0sIGFuZCBwcm9jZWVkIGFzIGFib3ZlICovCi0JCQkJCXl5bGVzcyh5eWxl bmcgLSAyKTsKIAkJCQkJU0VUX1lZTExPQygpOwotCQkJCQlyZXR1cm4gcHJvY2Vzc19pbnRl Z2VyX2xpdGVyYWwoeXl0ZXh0LCB5eWx2YWwpOworCQkJCQl5eWVycm9yKCJ0cmFpbGluZyBq dW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCIpOworCQkJCX0KK3tpbnRlZ2VyX2p1bmt9CXsK KwkJCQkJU0VUX1lZTExPQygpOworCQkJCQl5eWVycm9yKCJ0cmFpbGluZyBqdW5rIGFmdGVy IG51bWVyaWMgbGl0ZXJhbCIpOworCQkJCX0KK3tkZWNpbWFsX2p1bmt9CXsKKwkJCQkJU0VU X1lZTExPQygpOworCQkJCQl5eWVycm9yKCJ0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMg bGl0ZXJhbCIpOworCQkJCX0KK3tyZWFsX2p1bmt9CQl7CisJCQkJCVNFVF9ZWUxMT0MoKTsK KwkJCQkJeXllcnJvcigidHJhaWxpbmcganVuayBhZnRlciBudW1lcmljIGxpdGVyYWwiKTsK IAkJCQl9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwgYi9zcmMv ZmVfdXRpbHMvcHNxbHNjYW4ubAppbmRleCA5NDFlZDA2NTUzLi4wMzk0ZWRiMTVmIDEwMDY0 NAotLS0gYS9zcmMvZmVfdXRpbHMvcHNxbHNjYW4ubAorKysgYi9zcmMvZmVfdXRpbHMvcHNx bHNjYW4ubApAQCAtMzM3LDcgKzMzNywxMiBAQCByZWFsCQkJKHtpbnRlZ2VyfXx7ZGVjaW1h bH0pW0VlXVstK10/e2RpZ2l0fSsKIHJlYWxmYWlsMQkJKHtpbnRlZ2VyfXx7ZGVjaW1hbH0p W0VlXQogcmVhbGZhaWwyCQkoe2ludGVnZXJ9fHtkZWNpbWFsfSlbRWVdWy0rXQogCitpbnRl Z2VyX2p1bmsJe2ludGVnZXJ9e2lkZW50X3N0YXJ0fQorZGVjaW1hbF9qdW5rCXtkZWNpbWFs fXtpZGVudF9zdGFydH0KK3JlYWxfanVuawkJe3JlYWx9e2lkZW50X3N0YXJ0fQorCiBwYXJh bQkJCVwke2ludGVnZXJ9CitwYXJhbV9qdW5rCQlcJHtpbnRlZ2VyfXtpZGVudF9zdGFydH0K IAogLyogcHNxbC1zcGVjaWZpYzogY2hhcmFjdGVycyBhbGxvd2VkIGluIHZhcmlhYmxlIG5h bWVzICovCiB2YXJpYWJsZV9jaGFyCVtBLVphLXpcMjAwLVwzNzdfMC05XQpAQCAtODM5LDYg Kzg0NCw5IEBAIG90aGVyCQkJLgoge3BhcmFtfQkJCXsKIAkJCQkJRUNITzsKIAkJCQl9Cit7 cGFyYW1fanVua30JeworCQkJCQlFQ0hPOworCQkJCX0KIAoge2ludGVnZXJ9CQl7CiAJCQkJ CUVDSE87CkBAIC04NTUsMTcgKzg2MywxOCBAQCBvdGhlcgkJCS4KIAkJCQkJRUNITzsKIAkJ CQl9CiB7cmVhbGZhaWwxfQkJewotCQkJCQkvKgotCQkJCQkgKiB0aHJvdyBiYWNrIHRoZSBb RWVdLCBhbmQgZmlndXJlIG91dCB3aGV0aGVyIHdoYXQKLQkJCQkJICogcmVtYWlucyBpcyBh biB7aW50ZWdlcn0gb3Ige2RlY2ltYWx9LgotCQkJCQkgKiAoaW4gcHNxbCwgd2UgZG9uJ3Qg YWN0dWFsbHkgY2FyZS4uLikKLQkJCQkJICovCi0JCQkJCXl5bGVzcyh5eWxlbmcgLSAxKTsK IAkJCQkJRUNITzsKIAkJCQl9CiB7cmVhbGZhaWwyfQkJewotCQkJCQkvKiB0aHJvdyBiYWNr IHRoZSBbRWVdWystXSwgYW5kIHByb2NlZWQgYXMgYWJvdmUgKi8KLQkJCQkJeXlsZXNzKHl5 bGVuZyAtIDIpOworCQkJCQlFQ0hPOworCQkJCX0KK3tpbnRlZ2VyX2p1bmt9CXsKKwkJCQkJ RUNITzsKKwkJCQl9Cit7ZGVjaW1hbF9qdW5rfQl7CisJCQkJCUVDSE87CisJCQkJfQore3Jl YWxfanVua30JCXsKIAkJCQkJRUNITzsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvcHJlcHJvYy9wZ2MubCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJv Yy9wZ2MubAppbmRleCAzOWU1NzhlODY4Li4yNWZiM2I0M2IzIDEwMDY0NAotLS0gYS9zcmMv aW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGdjLmwKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNw Zy9wcmVwcm9jL3BnYy5sCkBAIC0zNjUsNyArMzY1LDEyIEBAIHJlYWwJCQkoe2ludGVnZXJ9 fHtkZWNpbWFsfSlbRWVdWy0rXT97ZGlnaXR9KwogcmVhbGZhaWwxCQkoe2ludGVnZXJ9fHtk ZWNpbWFsfSlbRWVdCiByZWFsZmFpbDIJCSh7aW50ZWdlcn18e2RlY2ltYWx9KVtFZV1bLStd CiAKK2ludGVnZXJfanVuawl7aW50ZWdlcn17aWRlbnRfc3RhcnR9CitkZWNpbWFsX2p1bmsJ e2RlY2ltYWx9e2lkZW50X3N0YXJ0fQorcmVhbF9qdW5rCQl7cmVhbH17aWRlbnRfc3RhcnR9 CisKIHBhcmFtCQkJXCR7aW50ZWdlcn0KK3BhcmFtX2p1bmsJCVwke2ludGVnZXJ9e2lkZW50 X3N0YXJ0fQogCiAvKiBzcGVjaWFsIGNoYXJhY3RlcnMgZm9yIG90aGVyIGRibXMgKi8KIC8q IHdlIGhhdmUgdG8gcmVhY3QgZGlmZmVyZW50bHkgaW4gY29tcGF0IG1vZGUgKi8KQEAgLTkx Nyw2ICs5MjIsOSBAQCBjcHBsaW5lCQkJe3NwYWNlfSojKFteaV1bQS1aYS16XSp8e2lmfXx7 aWZkZWZ9fHtpZm5kZWZ9fHtpbXBvcnR9KSgoXC9cKlteKi9dKlwqKwogCQkJCQliYXNlX3l5 bHZhbC5pdmFsID0gYXRvbCh5eXRleHQrMSk7CiAJCQkJCXJldHVybiBQQVJBTTsKIAkJCQl9 Cit7cGFyYW1fanVua30JeworCQkJCQltbWZhdGFsKFBBUlNFX0VSUk9SLCAidHJhaWxpbmcg anVuayBhZnRlciBwYXJhbWV0ZXIiKTsKKwkJCQl9CiAKIHtpcH0JCQl7CiAJCQkJCWJhc2Vf eXlsdmFsLnN0ciA9IG1tX3N0cmR1cCh5eXRleHQpOwpAQCAtOTU3LDYgKzk2NSwyMCBAQCBj cHBsaW5lCQkJe3NwYWNlfSojKFteaV1bQS1aYS16XSp8e2lmfXx7aWZkZWZ9fHtpZm5kZWZ9 fHtpbXBvcnR9KSgoXC9cKlteKi9dKlwqKwogfSAvKiA8QyxTUUw+ICovCiAKIDxTUUw+ewor LyoKKyAqIE5vdGUgdGhhdCBzb21lIHRyYWlsaW5nIGp1bmsgaXMgdmFsaWQgaW4gQyAoc3Vj aCBhcyAxMDBMTCksIHNvIHdlIGNvbnRhaW4KKyAqIHRoaXMgdG8gU1FMIG1vZGUuCisgKi8K K3tpbnRlZ2VyX2p1bmt9CXsKKwkJCQkJbW1mYXRhbChQQVJTRV9FUlJPUiwgInRyYWlsaW5n IGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7CisJCQkJfQore2RlY2ltYWxfanVua30J eworCQkJCQltbWZhdGFsKFBBUlNFX0VSUk9SLCAidHJhaWxpbmcganVuayBhZnRlciBudW1l cmljIGxpdGVyYWwiKTsKKwkJCQl9Cit7cmVhbF9qdW5rfQkJeworCQkJCQltbWZhdGFsKFBB UlNFX0VSUk9SLCAidHJhaWxpbmcganVuayBhZnRlciBudW1lcmljIGxpdGVyYWwiKTsKKwkJ CQl9CisKIDp7aWRlbnRpZmllcn0oKCgiLT4ifFwuKXtpZGVudGlmaWVyfSl8KFxbe2FycmF5 fVxdKSkqCXsKIAkJCQkJYmFzZV95eWx2YWwuc3RyID0gbW1fc3RyZHVwKHl5dGV4dCsxKTsK IAkJCQkJcmV0dXJuIENWQVJJQUJMRTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvbnVtZXJvbG9neS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL251 bWVyb2xvZ3kub3V0CmluZGV4IDJmZmM3M2U4NTQuLjc3ZDQ4NDM0MTcgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbnVtZXJvbG9neS5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9udW1lcm9sb2d5Lm91dApAQCAtNiw2NCArNiw0NSBAQAog LS0gVHJhaWxpbmcganVuayBpbiBudW1lcmljIGxpdGVyYWxzCiAtLQogU0VMRUNUIDEyM2Fi YzsKLSBhYmMgCi0tLS0tLQotIDEyMwotKDEgcm93KQotCitFUlJPUjogIHRyYWlsaW5nIGp1 bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjEyM2EiCitMSU5FIDE6IFNF TEVDVCAxMjNhYmM7CisgICAgICAgICAgICAgICBeCiBTRUxFQ1QgMHgwbzsKLSB4MG8gCi0t LS0tLQotICAgMAotKDEgcm93KQotCitFUlJPUjogIHRyYWlsaW5nIGp1bmsgYWZ0ZXIgbnVt ZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjB4IgorTElORSAxOiBTRUxFQ1QgMHgwbzsKKyAg ICAgICAgICAgICAgIF4KIFNFTEVDVCAxXzJfMzsKLSBfMl8zIAotLS0tLS0tCi0gICAgMQot KDEgcm93KQotCitFUlJPUjogIHRyYWlsaW5nIGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFs IGF0IG9yIG5lYXIgIjFfIgorTElORSAxOiBTRUxFQ1QgMV8yXzM7CisgICAgICAgICAgICAg ICBeCiBTRUxFQ1QgMC5hOwotIGEgCi0tLS0KLSAwCi0oMSByb3cpCi0KK0VSUk9SOiAgdHJh aWxpbmcganVuayBhZnRlciBudW1lcmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMC5hIgorTElO RSAxOiBTRUxFQ1QgMC5hOworICAgICAgICAgICAgICAgXgogU0VMRUNUIDAuMGE7Ci0gIGEg IAotLS0tLS0KLSAwLjAKLSgxIHJvdykKLQorRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVy IG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIwLjBhIgorTElORSAxOiBTRUxFQ1QgMC4w YTsKKyAgICAgICAgICAgICAgIF4KIFNFTEVDVCAuMGE7Ci0gIGEgIAotLS0tLS0KLSAwLjAK LSgxIHJvdykKLQorRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJh bCBhdCBvciBuZWFyICIuMGEiCitMSU5FIDE6IFNFTEVDVCAuMGE7CisgICAgICAgICAgICAg ICBeCiBTRUxFQ1QgMC4wZTFhOwotIGEgCi0tLS0KLSAwCi0oMSByb3cpCi0KK0VSUk9SOiAg dHJhaWxpbmcganVuayBhZnRlciBudW1lcmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMC4wZTFh IgorTElORSAxOiBTRUxFQ1QgMC4wZTFhOworICAgICAgICAgICAgICAgXgogU0VMRUNUIDAu MGU7Ci0gIGUgIAotLS0tLS0KLSAwLjAKLSgxIHJvdykKLQorRVJST1I6ICB0cmFpbGluZyBq dW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIwLjBlIgorTElORSAxOiBT RUxFQ1QgMC4wZTsKKyAgICAgICAgICAgICAgIF4KIFNFTEVDVCAwLjBlK2E7Ci1FUlJPUjog IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIrIgorRVJST1I6ICB0cmFpbGluZyBqdW5rIGFm dGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIwLjBlKyIKIExJTkUgMTogU0VMRUNU IDAuMGUrYTsKLSAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICBeCiBQUkVQ QVJFIHAxIEFTIFNFTEVDVCAkMWE7Ci1FWEVDVVRFIHAxKDEpOwotIGEgCi0tLS0KLSAxCi0o MSByb3cpCi0KK0VSUk9SOiAgdHJhaWxpbmcganVuayBhZnRlciBwYXJhbWV0ZXIgYXQgb3Ig bmVhciAiJDFhIgorTElORSAxOiBQUkVQQVJFIHAxIEFTIFNFTEVDVCAkMWE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KIC0tCiAtLSBUZXN0IGltcGxpY2l0IHR5cGUgY29u dmVyc2lvbnMKIC0tIFRoaXMgZmFpbHMgZm9yIFBvc3RncmVzIHY2LjEgKGFuZCBlYXJsaWVy PykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL251bWVyb2xvZ3kuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvbnVtZXJvbG9neS5zcWwKaW5kZXggZmI3NWY5NzgzMi4u YmU3ZDZkZmUwYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbnVtZXJvbG9n eS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbnVtZXJvbG9neS5zcWwKQEAgLTE3 LDcgKzE3LDYgQEAKIFNFTEVDVCAwLjBlOwogU0VMRUNUIDAuMGUrYTsKIFBSRVBBUkUgcDEg QVMgU0VMRUNUICQxYTsKLUVYRUNVVEUgcDEoMSk7CiAKIC0tCiAtLSBUZXN0IGltcGxpY2l0 IHR5cGUgY29udmVyc2lvbnMKLS0gCjIuMzQuMQoK --------------do50zd79MbDy71onIEFvfvlB Content-Type: text/plain; charset=UTF-8; name="v7-0006-Non-decimal-integer-literals.patch" Content-Disposition: attachment; filename="v7-0006-Non-decimal-integer-literals.patch" Content-Transfer-Encoding: base64 RnJvbSBkNDBkODRlNzY1MjVmNzMyZWU4YTA3ZmZkNjJjNjhkYjUzNjhjODQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAzMCBEZWMgMjAyMSAxMDoyNjozNyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgNi83XSBOb24tZGVjaW1hbCBpbnRlZ2VyIGxpdGVyYWxzCgpBZGQgc3Vw cG9ydCBmb3IgaGV4YWRlY2ltYWwsIG9jdGFsLCBhbmQgYmluYXJ5IGludGVnZXIgbGl0ZXJh bHM6CgogICAgMHg0MkYKICAgIDBvMjczCiAgICAwYjEwMDEwMQoKcGVyIFNRTDoyMDJ4IGRy YWZ0LgoKVGhpcyBhZGRzIHN1cHBvcnQgaW4gdGhlIGxleGVyIGFzIHdlbGwgYXMgaW4gdGhl IGludGVnZXIgdHlwZSBpbnB1dApmdW5jdGlvbnMuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3 dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvYjIzOTU2NGMtY2FkMC1iMjNlLWM1 N2UtMTY2ZDg4M2NiOTdkQGVudGVycHJpc2VkYi5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvc3lu dGF4LnNnbWwgICAgICAgICAgICAgICAgICAgfCAgMjYgKysrKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsIHwgICA2ICstCiBzcmMvYmFja2VuZC9jYXRh bG9nL3NxbF9mZWF0dXJlcy50eHQgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2Vy L3NjYW4ubCAgICAgICAgICAgICAgICAgIHwgMTAxICsrKysrKysrKysrLS0tLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L251bXV0aWxzLmMgICAgICAgICAgIHwgMTQwICsrKysrKysrKysr KysrKysrKysrKwogc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwgICAgICAgICAgICAgICAgICAg IHwgIDgwICsrKysrKysrKy0tLQogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BnYy5s ICAgICAgICAgIHwgMTE2ICsrKysrKysrKy0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2ludDIub3V0ICAgICAgICAgfCAgMTkgKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2ludDQub3V0ICAgICAgICAgfCAgMTkgKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2ludDgub3V0ICAgICAgICAgfCAgMTkgKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL251bWVyb2xvZ3kub3V0ICAgfCAgNTkgKysrKysrKystCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9pbnQyLnNxbCAgICAgICAgICAgICAgfCAgIDcgKysKIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2ludDQuc3FsICAgICAgICAgICAgICB8ICAgNyArKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvaW50OC5zcWwgICAgICAgICAgICAgIHwgICA3ICsrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9udW1lcm9sb2d5LnNxbCAgICAgICAgfCAgMjEgKysrLQogMTUgZmlsZXMgY2hhbmdl ZCwgNTI5IGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9zeW50YXguc2dtbCBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAppbmRl eCBkNjY1NjBiNTg3Li5hNGYwNDE5OWM2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lu dGF4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCkBAIC02OTQsNiArNjk0 LDMyIEBAIDx0aXRsZT5OdW1lcmljIENvbnN0YW50czwvdGl0bGU+CiA8L2xpdGVyYWxsYXlv dXQ+CiAgICAgPC9wYXJhPgogCisgICAgPHBhcmE+CisgICAgIEFkZGl0aW9uYWxseSwgbm9u LWRlY2ltYWwgaW50ZWdlciBjb25zdGFudHMgY2FuIGJlIHVzZWQgaW4gdGhlc2UgZm9ybXM6 Cis8c3lub3BzaXM+CisweDxyZXBsYWNlYWJsZT5oZXhkaWdpdHM8L3JlcGxhY2VhYmxlPgor MG88cmVwbGFjZWFibGU+b2N0ZGlnaXRzPC9yZXBsYWNlYWJsZT4KKzBiPHJlcGxhY2VhYmxl PmJpbmRpZ2l0czwvcmVwbGFjZWFibGU+Cis8L3N5bm9wc2lzPgorICAgICA8cmVwbGFjZWFi bGU+aGV4ZGlnaXRzPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9yIG1vcmUgaGV4YWRlY2ltYWwg ZGlnaXRzCisgICAgICgwLTksIEEtRiksIDxyZXBsYWNlYWJsZT5vY3RkaWdpdHM8L3JlcGxh Y2VhYmxlPiBpcyBvbmUgb3IgbW9yZSBvY3RhbAorICAgICBkaWdpdHMgKDAtNyksIDxyZXBs YWNlYWJsZT5iaW5kaWdpdHM8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb3IgbW9yZSBiaW5hcnkK KyAgICAgZGlnaXRzICgwIG9yIDEpLiAgSGV4YWRlY2ltYWwgZGlnaXRzIGFuZCB0aGUgcmFk aXggcHJlZml4ZXMgY2FuIGJlIGluCisgICAgIHVwcGVyIG9yIGxvd2VyIGNhc2UuICBOb3Rl IHRoYXQgb25seSBpbnRlZ2VycyBjYW4gaGF2ZSBub24tZGVjaW1hbCBmb3JtcywKKyAgICAg bm90IG51bWJlcnMgd2l0aCBmcmFjdGlvbmFsIHBhcnRzLgorICAgIDwvcGFyYT4KKworICAg IDxwYXJhPgorICAgICBUaGVzZSBhcmUgc29tZSBleGFtcGxlcyBvZiB0aGlzOgorPGxpdGVy YWxsYXlvdXQ+MGIxMDAxMDEKKzBCMTAwMTEwMDEKKzBvMjczCiswTzc1NQorMHg0MmYKKzBY RkZGRgorPC9saXRlcmFsbGF5b3V0PgorICAgIDwvcGFyYT4KKwogICAgIDxwYXJhPgogICAg ICA8aW5kZXh0ZXJtPjxwcmltYXJ5PmludGVnZXI8L3ByaW1hcnk+PC9pbmRleHRlcm0+CiAg ICAgIDxpbmRleHRlcm0+PHByaW1hcnk+YmlnaW50PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCmluZGV4IGI0 ZjM0OGEyNGQuLjE5NTdmYzZlMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5mb3JtYXRpb25fc2NoZW1hLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9y bWF0aW9uX3NjaGVtYS5zcWwKQEAgLTExOSw3ICsxMTksNyBAQCBDUkVBVEUgRlVOQ1RJT04g X3BnX251bWVyaWNfcHJlY2lzaW9uKHR5cGlkIG9pZCwgdHlwbW9kIGludDQpIFJFVFVSTlMg aW50ZWdlcgogICAgICAgICAgV0hFTiAxNzAwIC8qbnVtZXJpYyovIFRIRU4KICAgICAgICAg ICAgICAgQ0FTRSBXSEVOICQyID0gLTEKICAgICAgICAgICAgICAgICAgICBUSEVOIG51bGwK LSAgICAgICAgICAgICAgICAgICBFTFNFICgoJDIgLSA0KSA+PiAxNikgJiA2NTUzNQorICAg ICAgICAgICAgICAgICAgIEVMU0UgKCgkMiAtIDQpID4+IDE2KSAmIDB4RkZGRgogICAgICAg ICAgICAgICAgICAgIEVORAogICAgICAgICAgV0hFTiA3MDAgLypmbG9hdDQqLyBUSEVOIDI0 IC8qRkxUX01BTlRfRElHKi8KICAgICAgICAgIFdIRU4gNzAxIC8qZmxvYXQ4Ki8gVEhFTiA1 MyAvKkRCTF9NQU5UX0RJRyovCkBAIC0xNDcsNyArMTQ3LDcgQEAgQ1JFQVRFIEZVTkNUSU9O IF9wZ19udW1lcmljX3NjYWxlKHR5cGlkIG9pZCwgdHlwbW9kIGludDQpIFJFVFVSTlMgaW50 ZWdlcgogICAgICAgIFdIRU4gJDEgSU4gKDE3MDApIFRIRU4KICAgICAgICAgICAgIENBU0Ug V0hFTiAkMiA9IC0xCiAgICAgICAgICAgICAgICAgIFRIRU4gbnVsbAotICAgICAgICAgICAg ICAgICBFTFNFICgkMiAtIDQpICYgNjU1MzUKKyAgICAgICAgICAgICAgICAgRUxTRSAoJDIg LSA0KSAmIDB4RkZGRgogICAgICAgICAgICAgICAgICBFTkQKICAgICAgICBFTFNFIG51bGwK ICAgRU5EOwpAQCAtMTYzLDcgKzE2Myw3IEBAIENSRUFURSBGVU5DVElPTiBfcGdfZGF0ZXRp bWVfcHJlY2lzaW9uKHR5cGlkIG9pZCwgdHlwbW9kIGludDQpIFJFVFVSTlMgaW50ZWdlcgog ICAgICAgIFdIRU4gJDEgSU4gKDEwODMsIDExMTQsIDExODQsIDEyNjYpIC8qIHRpbWUsIHRp bWVzdGFtcCwgc2FtZSArIHR6ICovCiAgICAgICAgICAgIFRIRU4gQ0FTRSBXSEVOICQyIDwg MCBUSEVOIDYgRUxTRSAkMiBFTkQKICAgICAgICBXSEVOICQxIElOICgxMTg2KSAvKiBpbnRl cnZhbCAqLwotICAgICAgICAgICBUSEVOIENBU0UgV0hFTiAkMiA8IDAgT1IgJDIgJiA2NTUz NSA9IDY1NTM1IFRIRU4gNiBFTFNFICQyICYgNjU1MzUgRU5ECisgICAgICAgICAgIFRIRU4g Q0FTRSBXSEVOICQyIDwgMCBPUiAkMiAmIDB4RkZGRiA9IDB4RkZGRiBUSEVOIDYgRUxTRSAk MiAmIDB4RkZGRiBFTkQKICAgICAgICBFTFNFIG51bGwKICAgRU5EOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXggYjhhNzhmNGQ0MS4uNTQ1Y2I0NTEzMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dApAQCAtNTI2LDYgKzUyNiw3 IEBAIFQ2NTIJU1FMLWR5bmFtaWMgc3RhdGVtZW50cyBpbiBTUUwgcm91dGluZXMJCQlOTwog VDY1MwlTUUwtc2NoZW1hIHN0YXRlbWVudHMgaW4gZXh0ZXJuYWwgcm91dGluZXMJCQlZRVMJ CiBUNjU0CVNRTC1keW5hbWljIHN0YXRlbWVudHMgaW4gZXh0ZXJuYWwgcm91dGluZXMJCQlO TwkKIFQ2NTUJQ3ljbGljYWxseSBkZXBlbmRlbnQgcm91dGluZXMJCQlZRVMJCitUNjYxCU5v bi1kZWNpbWFsIGludGVnZXIgbGl0ZXJhbHMJCQlZRVMJU1FMOjIwMnggZHJhZnQKIFQ4MTEJ QmFzaWMgU1FML0pTT04gY29uc3RydWN0b3IgZnVuY3Rpb25zCQkJTk8JCiBUODEyCVNRTC9K U09OOiBKU09OX09CSkVDVEFHRwkJCU5PCQogVDgxMwlTUUwvSlNPTjogSlNPTl9BUlJBWUFH RyB3aXRoIE9SREVSIEJZCQkJTk8JCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv c2Nhbi5sIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW4ubAppbmRleCBhYjI0YmY3MGRiLi4y ZTFhYTYyZDgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9zY2FuLmwKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMg dm9pZCBhZGRsaXQoY2hhciAqeXRleHQsIGludCB5bGVuZywgY29yZV95eXNjYW5fdCB5eXNj YW5uZXIpOwogc3RhdGljIHZvaWQgYWRkbGl0Y2hhcih1bnNpZ25lZCBjaGFyIHljaGFyLCBj b3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgY2hhciAqbGl0YnVmZHVwKGNvcmVf eXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHVuZXNjYXBlX3Np bmdsZV9jaGFyKHVuc2lnbmVkIGNoYXIgYywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwot c3RhdGljIGludAlwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbChjb25zdCBjaGFyICp0b2tlbiwg WVlTVFlQRSAqbHZhbCk7CitzdGF0aWMgaW50CXByb2Nlc3NfaW50ZWdlcl9saXRlcmFsKGNv bnN0IGNoYXIgKnRva2VuLCBZWVNUWVBFICpsdmFsLCBpbnQgYmFzZSk7CiBzdGF0aWMgdm9p ZCBhZGR1bmljb2RlKHBnX3djaGFyIGMsIHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAKICNkZWZp bmUgeXllcnJvcihtc2cpICBzY2FubmVyX3l5ZXJyb3IobXNnLCB5eXNjYW5uZXIpCkBAIC0z ODUsMjYgKzM4NSw0MSBAQCBvcGVyYXRvcgkJe29wX2NoYXJzfSsKICAqIFVuYXJ5IG1pbnVz IGlzIG5vdCBwYXJ0IG9mIGEgbnVtYmVyIGhlcmUuICBJbnN0ZWFkIHdlIHBhc3MgaXQgc2Vw YXJhdGVseSB0bwogICogdGhlIHBhcnNlciwgYW5kIHRoZXJlIGl0IGdldHMgY29lcmNlZCB2 aWEgZG9OZWdhdGUoKS4KICAqCi0gKiB7ZGVjaW1hbGZhaWx9IGlzIHVzZWQgYmVjYXVzZSB3 ZSB3b3VsZCBsaWtlICIxLi4xMCIgdG8gbGV4IGFzIDEsIGRvdF9kb3QsIDEwLgorICoge251 bWVyaWNmYWlsfSBpcyB1c2VkIGJlY2F1c2Ugd2Ugd291bGQgbGlrZSAiMS4uMTAiIHRvIGxl eCBhcyAxLCBkb3RfZG90LCAxMC4KICAqCiAgKiB7cmVhbGZhaWwxfSBhbmQge3JlYWxmYWls Mn0gYXJlIGFkZGVkIHRvIHByZXZlbnQgdGhlIG5lZWQgZm9yIHNjYW5uZXIKICAqIGJhY2t1 cCB3aGVuIHRoZSB7cmVhbH0gcnVsZSBmYWlscyB0byBtYXRjaCBjb21wbGV0ZWx5LgogICov Ci1kaWdpdAkJCVswLTldCi0KLWludGVnZXIJCQl7ZGlnaXR9KwotZGVjaW1hbAkJCSgoe2Rp Z2l0fSpcLntkaWdpdH0rKXwoe2RpZ2l0fStcLntkaWdpdH0qKSkKLWRlY2ltYWxmYWlsCQl7 ZGlnaXR9K1wuXC4KLXJlYWwJCQkoe2ludGVnZXJ9fHtkZWNpbWFsfSlbRWVdWy0rXT97ZGln aXR9KwotcmVhbGZhaWwxCQkoe2ludGVnZXJ9fHtkZWNpbWFsfSlbRWVdCi1yZWFsZmFpbDIJ CSh7aW50ZWdlcn18e2RlY2ltYWx9KVtFZV1bLStdCi0KLWludGVnZXJfanVuawl7aW50ZWdl cn17aWRlbnRfc3RhcnR9Ci1kZWNpbWFsX2p1bmsJe2RlY2ltYWx9e2lkZW50X3N0YXJ0fQor ZGVjZGlnaXQJCVswLTldCitoZXhkaWdpdAkJWzAtOUEtRmEtZl0KK29jdGRpZ2l0CQlbMC03 XQorYmluZGlnaXQJCVswLTFdCisKK2RlY2ludGVnZXIJCXtkZWNkaWdpdH0rCitoZXhpbnRl Z2VyCQkwW3hYXXtoZXhkaWdpdH0rCitvY3RpbnRlZ2VyCQkwW29PXXtvY3RkaWdpdH0rCiti aW5pbnRlZ2VyCQkwW2JCXXtiaW5kaWdpdH0rCisKK2hleGZhaWwJCQkwW3hYXQorb2N0ZmFp bAkJCTBbb09dCitiaW5mYWlsCQkJMFtiQl0KKworbnVtZXJpYwkJCSgoe2RlY2ludGVnZXJ9 XC57ZGVjaW50ZWdlcn0/KXwoXC57ZGVjaW50ZWdlcn0pKQorbnVtZXJpY2ZhaWwJCXtkZWNk aWdpdH0rXC5cLgorCityZWFsCQkJKHtkZWNpbnRlZ2VyfXx7bnVtZXJpY30pW0VlXVstK10/ e2RlY2RpZ2l0fSsKK3JlYWxmYWlsMQkJKHtkZWNpbnRlZ2VyfXx7bnVtZXJpY30pW0VlXQor cmVhbGZhaWwyCQkoe2RlY2ludGVnZXJ9fHtudW1lcmljfSlbRWVdWy0rXQorCitkZWNpbnRl Z2VyX2p1bmsJe2RlY2ludGVnZXJ9e2lkZW50X3N0YXJ0fQoraGV4aW50ZWdlcl9qdW5rCXto ZXhpbnRlZ2VyfXtpZGVudF9zdGFydH0KK29jdGludGVnZXJfanVuawl7b2N0aW50ZWdlcn17 aWRlbnRfc3RhcnR9CitiaW5pbnRlZ2VyX2p1bmsJe2JpbmludGVnZXJ9e2lkZW50X3N0YXJ0 fQorbnVtZXJpY19qdW5rCXtudW1lcmljfXtpZGVudF9zdGFydH0KIHJlYWxfanVuawkJe3Jl YWx9e2lkZW50X3N0YXJ0fQogCi1wYXJhbQkJCVwke2ludGVnZXJ9Ci1wYXJhbV9qdW5rCQlc JHtpbnRlZ2VyfXtpZGVudF9zdGFydH0KK3BhcmFtCQkJXCR7ZGVjaW50ZWdlcn0KK3BhcmFt X2p1bmsJCVwke2RlY2ludGVnZXJ9e2lkZW50X3N0YXJ0fQogCiBvdGhlcgkJCS4KIApAQCAt OTg0LDIwICs5OTksNDQgQEAgb3RoZXIJCQkuCiAJCQkJCXl5ZXJyb3IoInRyYWlsaW5nIGp1 bmsgYWZ0ZXIgcGFyYW1ldGVyIik7CiAJCQkJfQogCi17aW50ZWdlcn0JCXsKK3tkZWNpbnRl Z2VyfQl7CisJCQkJCVNFVF9ZWUxMT0MoKTsKKwkJCQkJcmV0dXJuIHByb2Nlc3NfaW50ZWdl cl9saXRlcmFsKHl5dGV4dCwgeXlsdmFsLCAxMCk7CisJCQkJfQore2hleGludGVnZXJ9CXsK KwkJCQkJU0VUX1lZTExPQygpOworCQkJCQlyZXR1cm4gcHJvY2Vzc19pbnRlZ2VyX2xpdGVy YWwoeXl0ZXh0ICsgMiwgeXlsdmFsLCAxNik7CisJCQkJfQore29jdGludGVnZXJ9CXsKKwkJ CQkJU0VUX1lZTExPQygpOworCQkJCQlyZXR1cm4gcHJvY2Vzc19pbnRlZ2VyX2xpdGVyYWwo eXl0ZXh0ICsgMiwgeXlsdmFsLCA4KTsKKwkJCQl9Cit7YmluaW50ZWdlcn0JeworCQkJCQlT RVRfWVlMTE9DKCk7CisJCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbCh5eXRl eHQgKyAyLCB5eWx2YWwsIDIpOworCQkJCX0KK3toZXhmYWlsfQkJeworCQkJCQlTRVRfWVlM TE9DKCk7CisJCQkJCXl5ZXJyb3IoImludmFsaWQgaGV4YWRlY2ltYWwgaW50ZWdlciIpOwor CQkJCX0KK3tvY3RmYWlsfQkJewogCQkJCQlTRVRfWVlMTE9DKCk7Ci0JCQkJCXJldHVybiBw cm9jZXNzX2ludGVnZXJfbGl0ZXJhbCh5eXRleHQsIHl5bHZhbCk7CisJCQkJCXl5ZXJyb3Io ImludmFsaWQgb2N0YWwgaW50ZWdlciIpOwogCQkJCX0KLXtkZWNpbWFsfQkJewore2JpbmZh aWx9CQl7CisJCQkJCVNFVF9ZWUxMT0MoKTsKKwkJCQkJeXllcnJvcigiaW52YWxpZCBiaW5h cnkgaW50ZWdlciIpOworCQkJCX0KK3tudW1lcmljfQkJewogCQkJCQlTRVRfWVlMTE9DKCk7 CiAJCQkJCXl5bHZhbC0+c3RyID0gcHN0cmR1cCh5eXRleHQpOwogCQkJCQlyZXR1cm4gRkNP TlNUOwogCQkJCX0KLXtkZWNpbWFsZmFpbH0Jewore251bWVyaWNmYWlsfQl7CiAJCQkJCS8q IHRocm93IGJhY2sgdGhlIC4uLCBhbmQgdHJlYXQgYXMgaW50ZWdlciAqLwogCQkJCQl5eWxl c3MoeXlsZW5nIC0gMik7CiAJCQkJCVNFVF9ZWUxMT0MoKTsKLQkJCQkJcmV0dXJuIHByb2Nl c3NfaW50ZWdlcl9saXRlcmFsKHl5dGV4dCwgeXlsdmFsKTsKKwkJCQkJcmV0dXJuIHByb2Nl c3NfaW50ZWdlcl9saXRlcmFsKHl5dGV4dCwgeXlsdmFsLCAxMCk7CiAJCQkJfQoge3JlYWx9 CQkJewogCQkJCQlTRVRfWVlMTE9DKCk7CkBAIC0xMDEyLDExICsxMDUxLDIzIEBAIG90aGVy CQkJLgogCQkJCQlTRVRfWVlMTE9DKCk7CiAJCQkJCXl5ZXJyb3IoInRyYWlsaW5nIGp1bmsg YWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7CiAJCQkJfQote2ludGVnZXJfanVua30Jewore2Rl Y2ludGVnZXJfanVua30JeworCQkJCQlTRVRfWVlMTE9DKCk7CisJCQkJCXl5ZXJyb3IoInRy YWlsaW5nIGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7CisJCQkJfQore2hleGludGVn ZXJfanVua30JeworCQkJCQlTRVRfWVlMTE9DKCk7CisJCQkJCXl5ZXJyb3IoInRyYWlsaW5n IGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7CisJCQkJfQore29jdGludGVnZXJfanVu a30JeworCQkJCQlTRVRfWVlMTE9DKCk7CisJCQkJCXl5ZXJyb3IoInRyYWlsaW5nIGp1bmsg YWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7CisJCQkJfQore2JpbmludGVnZXJfanVua30Jewog CQkJCQlTRVRfWVlMTE9DKCk7CiAJCQkJCXl5ZXJyb3IoInRyYWlsaW5nIGp1bmsgYWZ0ZXIg bnVtZXJpYyBsaXRlcmFsIik7CiAJCQkJfQote2RlY2ltYWxfanVua30Jewore251bWVyaWNf anVua30JewogCQkJCQlTRVRfWVlMTE9DKCk7CiAJCQkJCXl5ZXJyb3IoInRyYWlsaW5nIGp1 bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7CiAJCQkJfQpAQCAtMTMxMiwxNyArMTM2Mywx NyBAQCBsaXRidWZkdXAoY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiB9CiAKIC8qCi0gKiBQ cm9jZXNzIHtpbnRlZ2VyfS4gIE5vdGUgdGhpcyB3aWxsIGFsc28gZG8gdGhlIHJpZ2h0IHRo aW5nIHdpdGgge2RlY2ltYWx9LAorICogUHJvY2VzcyB7KmludGVnZXJ9LiAgTm90ZSB0aGlz IHdpbGwgYWxzbyBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aCB7bnVtZXJpY30sCiAgKiBpZSBk aWdpdHMgYW5kIGEgZGVjaW1hbCBwb2ludC4KICAqLwogc3RhdGljIGludAotcHJvY2Vzc19p bnRlZ2VyX2xpdGVyYWwoY29uc3QgY2hhciAqdG9rZW4sIFlZU1RZUEUgKmx2YWwpCitwcm9j ZXNzX2ludGVnZXJfbGl0ZXJhbChjb25zdCBjaGFyICp0b2tlbiwgWVlTVFlQRSAqbHZhbCwg aW50IGJhc2UpCiB7CiAJaW50CQkJdmFsOwogCWNoYXIJICAgKmVuZHB0cjsKIAogCWVycm5v ID0gMDsKLQl2YWwgPSBzdHJ0b2ludCh0b2tlbiwgJmVuZHB0ciwgMTApOworCXZhbCA9IHN0 cnRvaW50KHRva2VuLCAmZW5kcHRyLCBiYXNlKTsKIAlpZiAoKmVuZHB0ciAhPSAnXDAnIHx8 IGVycm5vID09IEVSQU5HRSkKIAl7CiAJCS8qIGludGVnZXIgdG9vIGxhcmdlIChvciBjb250 YWlucyBkZWNpbWFsIHB0KSwgdHJlYXQgaXQgYXMgYSBmbG9hdCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbnVtdXRpbHMuYwppbmRleCBjYzNmOTVkMzk5Li4zNzM2NDkyMWQ1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtdXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvbnVtdXRpbHMuYwpAQCAtODUsNiArODUsMTcgQEAgZGVjaW1hbExlbmd0aDY0 KGNvbnN0IHVpbnQ2NCB2KQogCXJldHVybiB0ICsgKHYgPj0gUG93ZXJzT2ZUZW5bdF0pOwog fQogCitzdGF0aWMgY29uc3QgaW50OCBoZXhsb29rdXBbMTI4XSA9IHsKKwktMSwgLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwK KwktMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg LTEsIC0xLCAtMSwKKwktMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg LTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKKwkwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5 LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorCS0xLCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1 LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorCS0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorCS0x LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg LTEsIC0xLAorCS0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg LTEsIC0xLCAtMSwgLTEsIC0xLAorfTsKKwogLyoKICAqIENvbnZlcnQgaW5wdXQgc3RyaW5n IHRvIGEgc2lnbmVkIDE2IGJpdCBpbnRlZ2VyLgogICoKQEAgLTEyMCw2ICsxMzEsNDggQEAg cGdfc3RydG9pbnQxNihjb25zdCBjaGFyICpzKQogCQlnb3RvIGludmFsaWRfc3ludGF4Owog CiAJLyogcHJvY2VzcyBkaWdpdHMgKi8KKwlpZiAocHRyWzBdID09ICcwJyAmJiAocHRyWzFd ID09ICd4JyB8fCBwdHJbMV0gPT0gJ1gnKSkKKwl7CisJCXB0ciArPSAyOworCQl3aGlsZSAo KnB0ciAmJiBpc3hkaWdpdCgodW5zaWduZWQgY2hhcikgKnB0cikpCisJCXsKKwkJCWludDgJ CWRpZ2l0ID0gaGV4bG9va3VwWyh1bnNpZ25lZCBjaGFyKSAqcHRyXTsKKworCQkJaWYgKHVu bGlrZWx5KHBnX211bF9zMTZfb3ZlcmZsb3codG1wLCAxNiwgJnRtcCkpIHx8CisJCQkJdW5s aWtlbHkocGdfc3ViX3MxNl9vdmVyZmxvdyh0bXAsIGRpZ2l0LCAmdG1wKSkpCisJCQkJZ290 byBvdXRfb2ZfcmFuZ2U7CisKKwkJCXB0cisrOworCQl9CisJfQorCWVsc2UgaWYgKHB0clsw XSA9PSAnMCcgJiYgKHB0clsxXSA9PSAnbycgfHwgcHRyWzFdID09ICdPJykpCisJeworCQlw dHIgKz0gMjsKKworCQl3aGlsZSAoKnB0ciAmJiAoKnB0ciA+PSAnMCcgJiYgKnB0ciA8PSAn NycpKQorCQl7CisJCQlpbnQ4CQlkaWdpdCA9ICgqcHRyKysgLSAnMCcpOworCisJCQlpZiAo dW5saWtlbHkocGdfbXVsX3MxNl9vdmVyZmxvdyh0bXAsIDgsICZ0bXApKSB8fAorCQkJCXVu bGlrZWx5KHBnX3N1Yl9zMTZfb3ZlcmZsb3codG1wLCBkaWdpdCwgJnRtcCkpKQorCQkJCWdv dG8gb3V0X29mX3JhbmdlOworCQl9CisJfQorCWVsc2UgaWYgKHB0clswXSA9PSAnMCcgJiYg KHB0clsxXSA9PSAnYicgfHwgcHRyWzFdID09ICdCJykpCisJeworCQlwdHIgKz0gMjsKKwor CQl3aGlsZSAoKnB0ciAmJiAoKnB0ciA+PSAnMCcgJiYgKnB0ciA8PSAnMScpKQorCQl7CisJ CQlpbnQ4CQlkaWdpdCA9ICgqcHRyKysgLSAnMCcpOworCisJCQlpZiAodW5saWtlbHkocGdf bXVsX3MxNl9vdmVyZmxvdyh0bXAsIDIsICZ0bXApKSB8fAorCQkJCXVubGlrZWx5KHBnX3N1 Yl9zMTZfb3ZlcmZsb3codG1wLCBkaWdpdCwgJnRtcCkpKQorCQkJCWdvdG8gb3V0X29mX3Jh bmdlOworCQl9CisJfQorCWVsc2UKKwl7CiAJd2hpbGUgKCpwdHIgJiYgaXNkaWdpdCgodW5z aWduZWQgY2hhcikgKnB0cikpCiAJewogCQlpbnQ4CQlkaWdpdCA9ICgqcHRyKysgLSAnMCcp OwpAQCAtMTI4LDYgKzE4MSw3IEBAIHBnX3N0cnRvaW50MTYoY29uc3QgY2hhciAqcykKIAkJ CXVubGlrZWx5KHBnX3N1Yl9zMTZfb3ZlcmZsb3codG1wLCBkaWdpdCwgJnRtcCkpKQogCQkJ Z290byBvdXRfb2ZfcmFuZ2U7CiAJfQorCX0KIAogCS8qIGFsbG93IHRyYWlsaW5nIHdoaXRl c3BhY2UsIGJ1dCBub3Qgb3RoZXIgdHJhaWxpbmcgY2hhcnMgKi8KIAl3aGlsZSAoKnB0ciAh PSAnXDAnICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQpAQCAtMTk2LDYgKzI1 MCw0OCBAQCBwZ19zdHJ0b2ludDMyKGNvbnN0IGNoYXIgKnMpCiAJCWdvdG8gaW52YWxpZF9z eW50YXg7CiAKIAkvKiBwcm9jZXNzIGRpZ2l0cyAqLworCWlmIChwdHJbMF0gPT0gJzAnICYm IChwdHJbMV0gPT0gJ3gnIHx8IHB0clsxXSA9PSAnWCcpKQorCXsKKwkJcHRyICs9IDI7CisJ CXdoaWxlICgqcHRyICYmIGlzeGRpZ2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKKwkJewor CQkJaW50OAkJZGlnaXQgPSBoZXhsb29rdXBbKHVuc2lnbmVkIGNoYXIpICpwdHJdOworCisJ CQlpZiAodW5saWtlbHkocGdfbXVsX3MzMl9vdmVyZmxvdyh0bXAsIDE2LCAmdG1wKSkgfHwK KwkJCQl1bmxpa2VseShwZ19zdWJfczMyX292ZXJmbG93KHRtcCwgZGlnaXQsICZ0bXApKSkK KwkJCQlnb3RvIG91dF9vZl9yYW5nZTsKKworCQkJcHRyKys7CisJCX0KKwl9CisJZWxzZSBp ZiAocHRyWzBdID09ICcwJyAmJiAocHRyWzFdID09ICdvJyB8fCBwdHJbMV0gPT0gJ08nKSkK Kwl7CisJCXB0ciArPSAyOworCisJCXdoaWxlICgqcHRyICYmICgqcHRyID49ICcwJyAmJiAq cHRyIDw9ICc3JykpCisJCXsKKwkJCWludDgJCWRpZ2l0ID0gKCpwdHIrKyAtICcwJyk7CisK KwkJCWlmICh1bmxpa2VseShwZ19tdWxfczMyX292ZXJmbG93KHRtcCwgOCwgJnRtcCkpIHx8 CisJCQkJdW5saWtlbHkocGdfc3ViX3MzMl9vdmVyZmxvdyh0bXAsIGRpZ2l0LCAmdG1wKSkp CisJCQkJZ290byBvdXRfb2ZfcmFuZ2U7CisJCX0KKwl9CisJZWxzZSBpZiAocHRyWzBdID09 ICcwJyAmJiAocHRyWzFdID09ICdiJyB8fCBwdHJbMV0gPT0gJ0InKSkKKwl7CisJCXB0ciAr PSAyOworCisJCXdoaWxlICgqcHRyICYmICgqcHRyID49ICcwJyAmJiAqcHRyIDw9ICcxJykp CisJCXsKKwkJCWludDgJCWRpZ2l0ID0gKCpwdHIrKyAtICcwJyk7CisKKwkJCWlmICh1bmxp a2VseShwZ19tdWxfczMyX292ZXJmbG93KHRtcCwgMiwgJnRtcCkpIHx8CisJCQkJdW5saWtl bHkocGdfc3ViX3MzMl9vdmVyZmxvdyh0bXAsIGRpZ2l0LCAmdG1wKSkpCisJCQkJZ290byBv dXRfb2ZfcmFuZ2U7CisJCX0KKwl9CisJZWxzZQorCXsKIAl3aGlsZSAoKnB0ciAmJiBpc2Rp Z2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKIAl7CiAJCWludDgJCWRpZ2l0ID0gKCpwdHIr KyAtICcwJyk7CkBAIC0yMDQsNiArMzAwLDcgQEAgcGdfc3RydG9pbnQzMihjb25zdCBjaGFy ICpzKQogCQkJdW5saWtlbHkocGdfc3ViX3MzMl9vdmVyZmxvdyh0bXAsIGRpZ2l0LCAmdG1w KSkpCiAJCQlnb3RvIG91dF9vZl9yYW5nZTsKIAl9CisJfQogCiAJLyogYWxsb3cgdHJhaWxp bmcgd2hpdGVzcGFjZSwgYnV0IG5vdCBvdGhlciB0cmFpbGluZyBjaGFycyAqLwogCXdoaWxl ICgqcHRyICE9ICdcMCcgJiYgaXNzcGFjZSgodW5zaWduZWQgY2hhcikgKnB0cikpCkBAIC0y ODAsNiArMzc3LDQ4IEBAIHBnX3N0cnRvaW50NjQoY29uc3QgY2hhciAqcykKIAkJZ290byBp bnZhbGlkX3N5bnRheDsKIAogCS8qIHByb2Nlc3MgZGlnaXRzICovCisJaWYgKHB0clswXSA9 PSAnMCcgJiYgKHB0clsxXSA9PSAneCcgfHwgcHRyWzFdID09ICdYJykpCisJeworCQlwdHIg Kz0gMjsKKwkJd2hpbGUgKCpwdHIgJiYgaXN4ZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpwdHIp KQorCQl7CisJCQlpbnQ4CQlkaWdpdCA9IGhleGxvb2t1cFsodW5zaWduZWQgY2hhcikgKnB0 cl07CisKKwkJCWlmICh1bmxpa2VseShwZ19tdWxfczY0X292ZXJmbG93KHRtcCwgMTYsICZ0 bXApKSB8fAorCQkJCXVubGlrZWx5KHBnX3N1Yl9zNjRfb3ZlcmZsb3codG1wLCBkaWdpdCwg JnRtcCkpKQorCQkJCWdvdG8gb3V0X29mX3JhbmdlOworCisJCQlwdHIrKzsKKwkJfQorCX0K KwllbHNlIGlmIChwdHJbMF0gPT0gJzAnICYmIChwdHJbMV0gPT0gJ28nIHx8IHB0clsxXSA9 PSAnTycpKQorCXsKKwkJcHRyICs9IDI7CisKKwkJd2hpbGUgKCpwdHIgJiYgKCpwdHIgPj0g JzAnICYmICpwdHIgPD0gJzcnKSkKKwkJeworCQkJaW50OAkJZGlnaXQgPSAoKnB0cisrIC0g JzAnKTsKKworCQkJaWYgKHVubGlrZWx5KHBnX211bF9zNjRfb3ZlcmZsb3codG1wLCA4LCAm dG1wKSkgfHwKKwkJCQl1bmxpa2VseShwZ19zdWJfczY0X292ZXJmbG93KHRtcCwgZGlnaXQs ICZ0bXApKSkKKwkJCQlnb3RvIG91dF9vZl9yYW5nZTsKKwkJfQorCX0KKwllbHNlIGlmIChw dHJbMF0gPT0gJzAnICYmIChwdHJbMV0gPT0gJ2InIHx8IHB0clsxXSA9PSAnQicpKQorCXsK KwkJcHRyICs9IDI7CisKKwkJd2hpbGUgKCpwdHIgJiYgKCpwdHIgPj0gJzAnICYmICpwdHIg PD0gJzEnKSkKKwkJeworCQkJaW50OAkJZGlnaXQgPSAoKnB0cisrIC0gJzAnKTsKKworCQkJ aWYgKHVubGlrZWx5KHBnX211bF9zNjRfb3ZlcmZsb3codG1wLCAyLCAmdG1wKSkgfHwKKwkJ CQl1bmxpa2VseShwZ19zdWJfczY0X292ZXJmbG93KHRtcCwgZGlnaXQsICZ0bXApKSkKKwkJ CQlnb3RvIG91dF9vZl9yYW5nZTsKKwkJfQorCX0KKwllbHNlCisJewogCXdoaWxlICgqcHRy ICYmIGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQogCXsKIAkJaW50OAkJZGlnaXQg PSAoKnB0cisrIC0gJzAnKTsKQEAgLTI4OCw2ICs0MjcsNyBAQCBwZ19zdHJ0b2ludDY0KGNv bnN0IGNoYXIgKnMpCiAJCQl1bmxpa2VseShwZ19zdWJfczY0X292ZXJmbG93KHRtcCwgZGln aXQsICZ0bXApKSkKIAkJCWdvdG8gb3V0X29mX3JhbmdlOwogCX0KKwl9CiAKIAkvKiBhbGxv dyB0cmFpbGluZyB3aGl0ZXNwYWNlLCBidXQgbm90IG90aGVyIHRyYWlsaW5nIGNoYXJzICov CiAJd2hpbGUgKCpwdHIgIT0gJ1wwJyAmJiBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqcHRy KSkKZGlmZiAtLWdpdCBhL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sIGIvc3JjL2ZlX3V0aWxz L3BzcWxzY2FuLmwKaW5kZXggMDM5NGVkYjE1Zi4uMDkxNTVhM2Q1ZCAxMDA2NDQKLS0tIGEv c3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwKKysrIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwK QEAgLTMyMywyNiArMzIzLDQxIEBAIG9wZXJhdG9yCQl7b3BfY2hhcnN9KwogICogVW5hcnkg bWludXMgaXMgbm90IHBhcnQgb2YgYSBudW1iZXIgaGVyZS4gIEluc3RlYWQgd2UgcGFzcyBp dCBzZXBhcmF0ZWx5IHRvCiAgKiB0aGUgcGFyc2VyLCBhbmQgdGhlcmUgaXQgZ2V0cyBjb2Vy Y2VkIHZpYSBkb05lZ2F0ZSgpLgogICoKLSAqIHtkZWNpbWFsZmFpbH0gaXMgdXNlZCBiZWNh dXNlIHdlIHdvdWxkIGxpa2UgIjEuLjEwIiB0byBsZXggYXMgMSwgZG90X2RvdCwgMTAuCisg KiB7bnVtZXJpY2ZhaWx9IGlzIHVzZWQgYmVjYXVzZSB3ZSB3b3VsZCBsaWtlICIxLi4xMCIg dG8gbGV4IGFzIDEsIGRvdF9kb3QsIDEwLgogICoKICAqIHtyZWFsZmFpbDF9IGFuZCB7cmVh bGZhaWwyfSBhcmUgYWRkZWQgdG8gcHJldmVudCB0aGUgbmVlZCBmb3Igc2Nhbm5lcgogICog YmFja3VwIHdoZW4gdGhlIHtyZWFsfSBydWxlIGZhaWxzIHRvIG1hdGNoIGNvbXBsZXRlbHku CiAgKi8KLWRpZ2l0CQkJWzAtOV0KLQotaW50ZWdlcgkJCXtkaWdpdH0rCi1kZWNpbWFsCQkJ KCh7ZGlnaXR9Klwue2RpZ2l0fSspfCh7ZGlnaXR9K1wue2RpZ2l0fSopKQotZGVjaW1hbGZh aWwJCXtkaWdpdH0rXC5cLgotcmVhbAkJCSh7aW50ZWdlcn18e2RlY2ltYWx9KVtFZV1bLStd P3tkaWdpdH0rCi1yZWFsZmFpbDEJCSh7aW50ZWdlcn18e2RlY2ltYWx9KVtFZV0KLXJlYWxm YWlsMgkJKHtpbnRlZ2VyfXx7ZGVjaW1hbH0pW0VlXVstK10KLQotaW50ZWdlcl9qdW5rCXtp bnRlZ2VyfXtpZGVudF9zdGFydH0KLWRlY2ltYWxfanVuawl7ZGVjaW1hbH17aWRlbnRfc3Rh cnR9CitkZWNkaWdpdAkJWzAtOV0KK2hleGRpZ2l0CQlbMC05QS1GYS1mXQorb2N0ZGlnaXQJ CVswLTddCitiaW5kaWdpdAkJWzAtMV0KKworZGVjaW50ZWdlcgkJe2RlY2RpZ2l0fSsKK2hl eGludGVnZXIJCTBbeFhde2hleGRpZ2l0fSsKK29jdGludGVnZXIJCTBbb09de29jdGRpZ2l0 fSsKK2JpbmludGVnZXIJCTBbYkJde2JpbmRpZ2l0fSsKKworaGV4ZmFpbAkJCTBbeFhdCitv Y3RmYWlsCQkJMFtvT10KK2JpbmZhaWwJCQkwW2JCXQorCitudW1lcmljCQkJKCh7ZGVjaW50 ZWdlcn1cLntkZWNpbnRlZ2VyfT8pfChcLntkZWNpbnRlZ2VyfSkpCitudW1lcmljZmFpbAkJ e2RlY2RpZ2l0fStcLlwuCisKK3JlYWwJCQkoe2RlY2ludGVnZXJ9fHtudW1lcmljfSlbRWVd Wy0rXT97ZGVjZGlnaXR9KworcmVhbGZhaWwxCQkoe2RlY2ludGVnZXJ9fHtudW1lcmljfSlb RWVdCityZWFsZmFpbDIJCSh7ZGVjaW50ZWdlcn18e251bWVyaWN9KVtFZV1bLStdCisKK2Rl Y2ludGVnZXJfanVuawl7ZGVjaW50ZWdlcn17aWRlbnRfc3RhcnR9CitoZXhpbnRlZ2VyX2p1 bmsJe2hleGludGVnZXJ9e2lkZW50X3N0YXJ0fQorb2N0aW50ZWdlcl9qdW5rCXtvY3RpbnRl Z2VyfXtpZGVudF9zdGFydH0KK2JpbmludGVnZXJfanVuawl7YmluaW50ZWdlcn17aWRlbnRf c3RhcnR9CitudW1lcmljX2p1bmsJe251bWVyaWN9e2lkZW50X3N0YXJ0fQogcmVhbF9qdW5r CQl7cmVhbH17aWRlbnRfc3RhcnR9CiAKLXBhcmFtCQkJXCR7aW50ZWdlcn0KLXBhcmFtX2p1 bmsJCVwke2ludGVnZXJ9e2lkZW50X3N0YXJ0fQorcGFyYW0JCQlcJHtkZWNpbnRlZ2VyfQor cGFyYW1fanVuawkJXCR7ZGVjaW50ZWdlcn17aWRlbnRfc3RhcnR9CiAKIC8qIHBzcWwtc3Bl Y2lmaWM6IGNoYXJhY3RlcnMgYWxsb3dlZCBpbiB2YXJpYWJsZSBuYW1lcyAqLwogdmFyaWFi bGVfY2hhcglbQS1aYS16XDIwMC1cMzc3XzAtOV0KQEAgLTg0OCwxMyArODYzLDMxIEBAIG90 aGVyCQkJLgogCQkJCQlFQ0hPOwogCQkJCX0KIAote2ludGVnZXJ9CQl7Cit7ZGVjaW50ZWdl cn0JeworCQkJCQlFQ0hPOworCQkJCX0KK3toZXhpbnRlZ2VyfQl7CisJCQkJCUVDSE87CisJ CQkJfQore29jdGludGVnZXJ9CXsKKwkJCQkJRUNITzsKKwkJCQl9Cit7YmluaW50ZWdlcn0J eworCQkJCQlFQ0hPOworCQkJCX0KK3toZXhmYWlsfQkJewogCQkJCQlFQ0hPOwogCQkJCX0K LXtkZWNpbWFsfQkJewore29jdGZhaWx9CQl7CiAJCQkJCUVDSE87CiAJCQkJfQote2RlY2lt YWxmYWlsfQl7Cit7YmluZmFpbH0JCXsKKwkJCQkJRUNITzsKKwkJCQl9Cit7bnVtZXJpY30J CXsKKwkJCQkJRUNITzsKKwkJCQl9Cit7bnVtZXJpY2ZhaWx9CXsKIAkJCQkJLyogdGhyb3cg YmFjayB0aGUgLi4sIGFuZCB0cmVhdCBhcyBpbnRlZ2VyICovCiAJCQkJCXl5bGVzcyh5eWxl bmcgLSAyKTsKIAkJCQkJRUNITzsKQEAgLTg2OCwxMCArOTAxLDE5IEBAIG90aGVyCQkJLgog e3JlYWxmYWlsMn0JCXsKIAkJCQkJRUNITzsKIAkJCQl9Ci17aW50ZWdlcl9qdW5rfQl7Cit7 ZGVjaW50ZWdlcl9qdW5rfQl7CisJCQkJCUVDSE87CisJCQkJfQore2hleGludGVnZXJfanVu a30JeworCQkJCQlFQ0hPOworCQkJCX0KK3tvY3RpbnRlZ2VyX2p1bmt9CXsKKwkJCQkJRUNI TzsKKwkJCQl9Cit7YmluaW50ZWdlcl9qdW5rfQl7CiAJCQkJCUVDSE87CiAJCQkJfQote2Rl Y2ltYWxfanVua30Jewore251bWVyaWNfanVua30JewogCQkJCQlFQ0hPOwogCQkJCX0KIHty ZWFsX2p1bmt9CQl7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2Mv cGdjLmwgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGdjLmwKaW5kZXggMjVmYjNi NDNiMy4uNThkMWEwMGQ2NSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVw cm9jL3BnYy5sCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wZ2MubApAQCAt NTcsNyArNTcsNyBAQCBzdGF0aWMgYm9vbAkJaW5jbHVkZV9uZXh0OwogI2RlZmluZSBzdGFy dGxpdCgpCShsaXRlcmFsYnVmWzBdID0gJ1wwJywgbGl0ZXJhbGxlbiA9IDApCiBzdGF0aWMg dm9pZCBhZGRsaXQoY2hhciAqeXRleHQsIGludCB5bGVuZyk7CiBzdGF0aWMgdm9pZCBhZGRs aXRjaGFyKHVuc2lnbmVkIGNoYXIpOwotc3RhdGljIGludAlwcm9jZXNzX2ludGVnZXJfbGl0 ZXJhbChjb25zdCBjaGFyICp0b2tlbiwgWVlTVFlQRSAqbHZhbCk7CitzdGF0aWMgaW50CXBy b2Nlc3NfaW50ZWdlcl9saXRlcmFsKGNvbnN0IGNoYXIgKnRva2VuLCBZWVNUWVBFICpsdmFs LCBpbnQgYmFzZSk7CiBzdGF0aWMgdm9pZCBwYXJzZV9pbmNsdWRlKHZvaWQpOwogc3RhdGlj IGJvb2wgZWNwZ19pc3NwYWNlKGNoYXIgY2gpOwogc3RhdGljIGJvb2wgaXNkZWZpbmUodm9p ZCk7CkBAIC0zNTEsMjYgKzM1MSw0MSBAQCBvcGVyYXRvcgkJe29wX2NoYXJzfSsKICAqIFVu YXJ5IG1pbnVzIGlzIG5vdCBwYXJ0IG9mIGEgbnVtYmVyIGhlcmUuICBJbnN0ZWFkIHdlIHBh c3MgaXQgc2VwYXJhdGVseSB0bwogICogdGhlIHBhcnNlciwgYW5kIHRoZXJlIGl0IGdldHMg Y29lcmNlZCB2aWEgZG9OZWdhdGUoKS4KICAqCi0gKiB7ZGVjaW1hbGZhaWx9IGlzIHVzZWQg YmVjYXVzZSB3ZSB3b3VsZCBsaWtlICIxLi4xMCIgdG8gbGV4IGFzIDEsIGRvdF9kb3QsIDEw LgorICoge251bWVyaWNmYWlsfSBpcyB1c2VkIGJlY2F1c2Ugd2Ugd291bGQgbGlrZSAiMS4u MTAiIHRvIGxleCBhcyAxLCBkb3RfZG90LCAxMC4KICAqCiAgKiB7cmVhbGZhaWwxfSBhbmQg e3JlYWxmYWlsMn0gYXJlIGFkZGVkIHRvIHByZXZlbnQgdGhlIG5lZWQgZm9yIHNjYW5uZXIK ICAqIGJhY2t1cCB3aGVuIHRoZSB7cmVhbH0gcnVsZSBmYWlscyB0byBtYXRjaCBjb21wbGV0 ZWx5LgogICovCi1kaWdpdAkJCVswLTldCi0KLWludGVnZXIJCQl7ZGlnaXR9KwotZGVjaW1h bAkJCSgoe2RpZ2l0fSpcLntkaWdpdH0rKXwoe2RpZ2l0fStcLntkaWdpdH0qKSkKLWRlY2lt YWxmYWlsCQl7ZGlnaXR9K1wuXC4KLXJlYWwJCQkoe2ludGVnZXJ9fHtkZWNpbWFsfSlbRWVd Wy0rXT97ZGlnaXR9KwotcmVhbGZhaWwxCQkoe2ludGVnZXJ9fHtkZWNpbWFsfSlbRWVdCi1y ZWFsZmFpbDIJCSh7aW50ZWdlcn18e2RlY2ltYWx9KVtFZV1bLStdCi0KLWludGVnZXJfanVu awl7aW50ZWdlcn17aWRlbnRfc3RhcnR9Ci1kZWNpbWFsX2p1bmsJe2RlY2ltYWx9e2lkZW50 X3N0YXJ0fQorZGVjZGlnaXQJCVswLTldCitoZXhkaWdpdAkJWzAtOUEtRmEtZl0KK29jdGRp Z2l0CQlbMC03XQorYmluZGlnaXQJCVswLTFdCisKK2RlY2ludGVnZXIJCXtkZWNkaWdpdH0r CitoZXhpbnRlZ2VyCQkwW3hYXXtoZXhkaWdpdH0rCitvY3RpbnRlZ2VyCQkwW29PXXtvY3Rk aWdpdH0rCitiaW5pbnRlZ2VyCQkwW2JCXXtiaW5kaWdpdH0rCisKK2hleGZhaWwJCQkwW3hY XQorb2N0ZmFpbAkJCTBbb09dCitiaW5mYWlsCQkJMFtiQl0KKworbnVtZXJpYwkJCSgoe2Rl Y2ludGVnZXJ9XC57ZGVjaW50ZWdlcn0/KXwoXC57ZGVjaW50ZWdlcn0pKQorbnVtZXJpY2Zh aWwJCXtkZWNkaWdpdH0rXC5cLgorCityZWFsCQkJKHtkZWNpbnRlZ2VyfXx7bnVtZXJpY30p W0VlXVstK10/e2RlY2RpZ2l0fSsKK3JlYWxmYWlsMQkJKHtkZWNpbnRlZ2VyfXx7bnVtZXJp Y30pW0VlXQorcmVhbGZhaWwyCQkoe2RlY2ludGVnZXJ9fHtudW1lcmljfSlbRWVdWy0rXQor CitkZWNpbnRlZ2VyX2p1bmsJe2RlY2ludGVnZXJ9e2lkZW50X3N0YXJ0fQoraGV4aW50ZWdl cl9qdW5rCXtoZXhpbnRlZ2VyfXtpZGVudF9zdGFydH0KK29jdGludGVnZXJfanVuawl7b2N0 aW50ZWdlcn17aWRlbnRfc3RhcnR9CitiaW5pbnRlZ2VyX2p1bmsJe2JpbmludGVnZXJ9e2lk ZW50X3N0YXJ0fQorbnVtZXJpY19qdW5rCXtudW1lcmljfXtpZGVudF9zdGFydH0KIHJlYWxf anVuawkJe3JlYWx9e2lkZW50X3N0YXJ0fQogCi1wYXJhbQkJCVwke2ludGVnZXJ9Ci1wYXJh bV9qdW5rCQlcJHtpbnRlZ2VyfXtpZGVudF9zdGFydH0KK3BhcmFtCQkJXCR7ZGVjaW50ZWdl cn0KK3BhcmFtX2p1bmsJCVwke2RlY2ludGVnZXJ9e2lkZW50X3N0YXJ0fQogCiAvKiBzcGVj aWFsIGNoYXJhY3RlcnMgZm9yIG90aGVyIGRibXMgKi8KIC8qIHdlIGhhdmUgdG8gcmVhY3Qg ZGlmZmVyZW50bHkgaW4gY29tcGF0IG1vZGUgKi8KQEAgLTQwMCw5ICs0MTUsNiBAQCBpbmNs dWRlX25leHQJW2lJXVtuTl1bY0NdW2xMXVt1VV1bZERdW2VFXV9bbk5dW2VFXVt4WF1bdFRd CiBpbXBvcnQJCQlbaUldW21NXVtwUF1bb09dW3JSXVt0VF0KIHVuZGVmCQkJW3VVXVtuTl1b ZERdW2VFXVtmRl0KIAotLyogQyB2ZXJzaW9uIG9mIGhleCBudW1iZXIgKi8KLXhjaAkJCQkw W3hYXVswLTlBLUZhLWZdKgotCiBjY29tbWVudAkJIi8vIi4qXG4KIAogaWYJCQkJW2lJXVtm Rl0KQEAgLTQxNSw3ICs0MjcsNyBAQCBlbmRpZgkJCVtlRV1bbk5dW2REXVtpSV1bZkZdCiBz dHJ1Y3QJCQlbc1NdW3RUXVtyUl1bdVVdW2NDXVt0VF0KIAogZXhlY19zcWwJCXtleGVjfXtz cGFjZX0qe3NxbH17c3BhY2V9KgotaXBkaWdpdAkJCSh7ZGlnaXR9fHtkaWdpdH17ZGlnaXR9 fHtkaWdpdH17ZGlnaXR9e2RpZ2l0fSkKK2lwZGlnaXQJCQkoe2RlY2RpZ2l0fXx7ZGVjZGln aXR9e2RlY2RpZ2l0fXx7ZGVjZGlnaXR9e2RlY2RpZ2l0fXtkZWNkaWdpdH0pCiBpcAkJCQl7 aXBkaWdpdH1cLntpcGRpZ2l0fVwue2lwZGlnaXR9XC57aXBkaWdpdH0KIAogLyogd2UgbWln aHQgd2FudCB0byBwYXJzZSBhbGwgY3BwIGluY2x1ZGUgZmlsZXMgKi8KQEAgLTkzMywxNyAr OTQ1LDIwIEBAIGNwcGxpbmUJCQl7c3BhY2V9KiMoW15pXVtBLVphLXpdKnx7aWZ9fHtpZmRl Zn18e2lmbmRlZn18e2ltcG9ydH0pKChcL1wqW14qL10qXCorCiB9ICAvKiA8U1FMPiAqLwog CiA8QyxTUUw+ewote2ludGVnZXJ9CQl7Ci0JCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJf bGl0ZXJhbCh5eXRleHQsICZiYXNlX3l5bHZhbCk7Cit7ZGVjaW50ZWdlcn0JeworCQkJCQly ZXR1cm4gcHJvY2Vzc19pbnRlZ2VyX2xpdGVyYWwoeXl0ZXh0LCAmYmFzZV95eWx2YWwsIDEw KTsKIAkJCQl9Ci17ZGVjaW1hbH0JCXsKK3toZXhpbnRlZ2VyfQl7CisJCQkJCXJldHVybiBw cm9jZXNzX2ludGVnZXJfbGl0ZXJhbCh5eXRleHQgKyAyLCAmYmFzZV95eWx2YWwsIDE2KTsK KwkJCQl9Cit7bnVtZXJpY30JCXsKIAkJCQkJYmFzZV95eWx2YWwuc3RyID0gbW1fc3RyZHVw KHl5dGV4dCk7CiAJCQkJCXJldHVybiBGQ09OU1Q7CiAJCQkJfQote2RlY2ltYWxmYWlsfQl7 Cit7bnVtZXJpY2ZhaWx9CXsKIAkJCQkJLyogdGhyb3cgYmFjayB0aGUgLi4sIGFuZCB0cmVh dCBhcyBpbnRlZ2VyICovCiAJCQkJCXl5bGVzcyh5eWxlbmcgLSAyKTsKLQkJCQkJcmV0dXJu IHByb2Nlc3NfaW50ZWdlcl9saXRlcmFsKHl5dGV4dCwgJmJhc2VfeXlsdmFsKTsKKwkJCQkJ cmV0dXJuIHByb2Nlc3NfaW50ZWdlcl9saXRlcmFsKHl5dGV4dCwgJmJhc2VfeXlsdmFsLCAx MCk7CiAJCQkJfQoge3JlYWx9CQkJewogCQkJCQliYXNlX3l5bHZhbC5zdHIgPSBtbV9zdHJk dXAoeXl0ZXh0KTsKQEAgLTk1MiwyNyArOTY3LDQzIEBAIGNwcGxpbmUJCQl7c3BhY2V9KiMo W15pXVtBLVphLXpdKnx7aWZ9fHtpZmRlZn18e2lmbmRlZn18e2ltcG9ydH0pKChcL1wqW14q L10qXCorCiB7cmVhbGZhaWwxfQkJewogCQkJCQkvKgogCQkJCQkgKiB0aHJvdyBiYWNrIHRo ZSBbRWVdLCBhbmQgZmlndXJlIG91dCB3aGV0aGVyIHdoYXQKLQkJCQkJICogcmVtYWlucyBp cyBhbiB7aW50ZWdlcn0gb3Ige2RlY2ltYWx9LgorCQkJCQkgKiByZW1haW5zIGlzIGFuIHtk ZWNpbnRlZ2VyfSBvciB7bnVtZXJpY30uCiAJCQkJCSAqLwogCQkJCQl5eWxlc3MoeXlsZW5n IC0gMSk7Ci0JCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbCh5eXRleHQsICZi YXNlX3l5bHZhbCk7CisJCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbCh5eXRl eHQsICZiYXNlX3l5bHZhbCwgMTApOwogCQkJCX0KIHtyZWFsZmFpbDJ9CQl7CiAJCQkJCS8q IHRocm93IGJhY2sgdGhlIFtFZV1bKy1dLCBhbmQgcHJvY2VlZCBhcyBhYm92ZSAqLwogCQkJ CQl5eWxlc3MoeXlsZW5nIC0gMik7Ci0JCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJfbGl0 ZXJhbCh5eXRleHQsICZiYXNlX3l5bHZhbCk7CisJCQkJCXJldHVybiBwcm9jZXNzX2ludGVn ZXJfbGl0ZXJhbCh5eXRleHQsICZiYXNlX3l5bHZhbCwgMTApOwogCQkJCX0KIH0gLyogPEMs U1FMPiAqLwogCiA8U1FMPnsKLS8qCi0gKiBOb3RlIHRoYXQgc29tZSB0cmFpbGluZyBqdW5r IGlzIHZhbGlkIGluIEMgKHN1Y2ggYXMgMTAwTEwpLCBzbyB3ZSBjb250YWluCi0gKiB0aGlz IHRvIFNRTCBtb2RlLgotICovCi17aW50ZWdlcl9qdW5rfQl7Cit7b2N0aW50ZWdlcn0Jewor CQkJCQlyZXR1cm4gcHJvY2Vzc19pbnRlZ2VyX2xpdGVyYWwoeXl0ZXh0ICsgMiwgJmJhc2Vf eXlsdmFsLCA4KTsKKwkJCQl9Cit7YmluaW50ZWdlcn0JeworCQkJCQlyZXR1cm4gcHJvY2Vz c19pbnRlZ2VyX2xpdGVyYWwoeXl0ZXh0ICsgMiwgJmJhc2VfeXlsdmFsLCAyKTsKKwkJCQl9 CisKKwkvKgorCSAqIE5vdGUgdGhhdCBzb21lIHRyYWlsaW5nIGp1bmsgaXMgdmFsaWQgaW4g QyAoc3VjaCBhcyAxMDBMTCksIHNvIHdlIGNvbnRhaW4KKwkgKiB0aGlzIHRvIFNRTCBtb2Rl LgorCSAqLwore2RlY2ludGVnZXJfanVua30JewogCQkJCQltbWZhdGFsKFBBUlNFX0VSUk9S LCAidHJhaWxpbmcganVuayBhZnRlciBudW1lcmljIGxpdGVyYWwiKTsKIAkJCQl9Ci17ZGVj aW1hbF9qdW5rfQl7Cit7aGV4aW50ZWdlcl9qdW5rfQl7CisJCQkJCW1tZmF0YWwoUEFSU0Vf RVJST1IsICJ0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCIpOworCQkJCX0K K3tvY3RpbnRlZ2VyX2p1bmt9CXsKKwkJCQkJbW1mYXRhbChQQVJTRV9FUlJPUiwgInRyYWls aW5nIGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7CisJCQkJfQore2JpbmludGVnZXJf anVua30JeworCQkJCQltbWZhdGFsKFBBUlNFX0VSUk9SLCAidHJhaWxpbmcganVuayBhZnRl ciBudW1lcmljIGxpdGVyYWwiKTsKKwkJCQl9Cit7bnVtZXJpY19qdW5rfQl7CiAJCQkJCW1t ZmF0YWwoUEFSU0VfRVJST1IsICJ0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJh bCIpOwogCQkJCX0KIHtyZWFsX2p1bmt9CQl7CkBAIC0xMDMzLDE5ICsxMDY0LDYgQEAgY3Bw bGluZQkJCXtzcGFjZX0qIyhbXmldW0EtWmEtel0qfHtpZn18e2lmZGVmfXx7aWZuZGVmfXx7 aW1wb3J0fSkoKFwvXCpbXiovXSpcKisKIAkJCQkJCQlyZXR1cm4gU19BTllUSElORzsKIAkJ CQkJIH0KIDxDPntjY29tbWVudH0JCXsgRUNITzsgfQotPEM+e3hjaH0JCQl7Ci0JCQkJCQlj aGFyKiBlbmRwdHI7Ci0KLQkJCQkJCWVycm5vID0gMDsKLQkJCQkJCWJhc2VfeXlsdmFsLml2 YWwgPSBzdHJ0b3VsKChjaGFyICopeXl0ZXh0LCZlbmRwdHIsMTYpOwotCQkJCQkJaWYgKCpl bmRwdHIgIT0gJ1wwJyB8fCBlcnJubyA9PSBFUkFOR0UpCi0JCQkJCQl7Ci0JCQkJCQkJZXJy bm8gPSAwOwotCQkJCQkJCWJhc2VfeXlsdmFsLnN0ciA9IG1tX3N0cmR1cCh5eXRleHQpOwot CQkJCQkJCXJldHVybiBTQ09OU1Q7Ci0JCQkJCQl9Ci0JCQkJCQlyZXR1cm4gSUNPTlNUOwot CQkJCQl9CiA8Qz57Y3BwaW5jbHVkZX0JCXsKIAkJCQkJCWlmIChzeXN0ZW1faW5jbHVkZXMp CiAJCQkJCQl7CkBAIC0xNTcwLDE3ICsxNTg4LDE3IEBAIGFkZGxpdGNoYXIodW5zaWduZWQg Y2hhciB5Y2hhcikKIH0KIAogLyoKLSAqIFByb2Nlc3Mge2ludGVnZXJ9LiAgTm90ZSB0aGlz IHdpbGwgYWxzbyBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aCB7ZGVjaW1hbH0sCisgKiBQcm9j ZXNzIHsqaW50ZWdlcn0uICBOb3RlIHRoaXMgd2lsbCBhbHNvIGRvIHRoZSByaWdodCB0aGlu ZyB3aXRoIHtudW1lcmljfSwKICAqIGllIGRpZ2l0cyBhbmQgYSBkZWNpbWFsIHBvaW50Lgog ICovCiBzdGF0aWMgaW50Ci1wcm9jZXNzX2ludGVnZXJfbGl0ZXJhbChjb25zdCBjaGFyICp0 b2tlbiwgWVlTVFlQRSAqbHZhbCkKK3Byb2Nlc3NfaW50ZWdlcl9saXRlcmFsKGNvbnN0IGNo YXIgKnRva2VuLCBZWVNUWVBFICpsdmFsLCBpbnQgYmFzZSkKIHsKIAlpbnQJCQl2YWw7CiAJ Y2hhcgkgICAqZW5kcHRyOwogCiAJZXJybm8gPSAwOwotCXZhbCA9IHN0cnRvaW50KHRva2Vu LCAmZW5kcHRyLCAxMCk7CisJdmFsID0gc3RydG9pbnQodG9rZW4sICZlbmRwdHIsIGJhc2Up OwogCWlmICgqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gPT0gRVJBTkdFKQogCXsKIAkJLyog aW50ZWdlciB0b28gbGFyZ2UgKG9yIGNvbnRhaW5zIGRlY2ltYWwgcHQpLCB0cmVhdCBpdCBh cyBhIGZsb2F0ICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu dDIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQyLm91dAppbmRleCA1NWVh NzIwMmNkLi4yMjBlMTQ5M2U4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2ludDIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50Mi5vdXQK QEAgLTMwNiwzICszMDYsMjIgQEAgRlJPTSAoVkFMVUVTICgtMi41OjpudW1lcmljKSwKICAg Mi41IHwgICAgICAgICAgMwogKDcgcm93cykKIAorLS0gbm9uLWRlY2ltYWwgbGl0ZXJhbHMK K1NFTEVDVCBpbnQyICcwYjEwMDEwMSc7CisgaW50MiAKKy0tLS0tLQorICAgMzcKKygxIHJv dykKKworU0VMRUNUIGludDIgJzBvMjczJzsKKyBpbnQyIAorLS0tLS0tCisgIDE4NworKDEg cm93KQorCitTRUxFQ1QgaW50MiAnMHg0MkYnOworIGludDIgCistLS0tLS0KKyAxMDcxCiso MSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50NC5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludDQub3V0CmluZGV4IDlkMjBiMzM4 MGYuLjZmZGJkNThiNDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW50NC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQ0Lm91dApAQCAt NDM3LDMgKzQzNywyMiBAQCBTRUxFQ1QgbGNtKCgtMjE0NzQ4MzY0OCk6OmludDQsIDE6Omlu dDQpOyAtLSBvdmVyZmxvdwogRVJST1I6ICBpbnRlZ2VyIG91dCBvZiByYW5nZQogU0VMRUNU IGxjbSgyMTQ3NDgzNjQ3OjppbnQ0LCAyMTQ3NDgzNjQ2OjppbnQ0KTsgLS0gb3ZlcmZsb3cK IEVSUk9SOiAgaW50ZWdlciBvdXQgb2YgcmFuZ2UKKy0tIG5vbi1kZWNpbWFsIGxpdGVyYWxz CitTRUxFQ1QgaW50NCAnMGIxMDAxMDEnOworIGludDQgCistLS0tLS0KKyAgIDM3CisoMSBy b3cpCisKK1NFTEVDVCBpbnQ0ICcwbzI3Myc7CisgaW50NCAKKy0tLS0tLQorICAxODcKKygx IHJvdykKKworU0VMRUNUIGludDQgJzB4NDJGJzsKKyBpbnQ0IAorLS0tLS0tCisgMTA3MQor KDEgcm93KQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludDgu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQ4Lm91dAppbmRleCAzNjU0MGVj NDU2Li5lZGQxNWE0MzUzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2ludDgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50OC5vdXQKQEAg LTkzMiwzICs5MzIsMjIgQEAgU0VMRUNUIGxjbSgoLTkyMjMzNzIwMzY4NTQ3NzU4MDgpOjpp bnQ4LCAxOjppbnQ4KTsgLS0gb3ZlcmZsb3cKIEVSUk9SOiAgYmlnaW50IG91dCBvZiByYW5n ZQogU0VMRUNUIGxjbSg5MjIzMzcyMDM2ODU0Nzc1ODA3OjppbnQ4LCA5MjIzMzcyMDM2ODU0 Nzc1ODA2OjppbnQ4KTsgLS0gb3ZlcmZsb3cKIEVSUk9SOiAgYmlnaW50IG91dCBvZiByYW5n ZQorLS0gbm9uLWRlY2ltYWwgbGl0ZXJhbHMKK1NFTEVDVCBpbnQ4ICcwYjEwMDEwMSc7Cisg aW50OCAKKy0tLS0tLQorICAgMzcKKygxIHJvdykKKworU0VMRUNUIGludDggJzBvMjczJzsK KyBpbnQ4IAorLS0tLS0tCisgIDE4NworKDEgcm93KQorCitTRUxFQ1QgaW50OCAnMHg0MkYn OworIGludDggCistLS0tLS0KKyAxMDcxCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbnVtZXJvbG9neS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL251bWVyb2xvZ3kub3V0CmluZGV4IDc3ZDQ4NDM0MTcuLmQ5NWIyNGM3YjMg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbnVtZXJvbG9neS5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9udW1lcm9sb2d5Lm91dApAQCAtMywx NCArMywzMyBAQAogLS0gVGVzdCB2YXJpb3VzIGNvbWJpbmF0aW9ucyBvZiBudW1lcmljIHR5 cGVzIGFuZCBmdW5jdGlvbnMuCiAtLQogLS0KLS0tIFRyYWlsaW5nIGp1bmsgaW4gbnVtZXJp YyBsaXRlcmFscworLS0gbnVtZXJpYyBsaXRlcmFscwogLS0KK1NFTEVDVCAwYjEwMDEwMTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAzNworKDEgcm93KQorCitTRUxFQ1Qg MG8yNzM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAxODcKKygxIHJvdykKKwor U0VMRUNUIDB4NDJGOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAxMDcxCisoMSBy b3cpCisKKy0tIGVycm9yIGNhc2VzCiBTRUxFQ1QgMTIzYWJjOwogRVJST1I6ICB0cmFpbGlu ZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIxMjNhIgogTElORSAx OiBTRUxFQ1QgMTIzYWJjOwogICAgICAgICAgICAgICAgXgogU0VMRUNUIDB4MG87Ci1FUlJP UjogIHRyYWlsaW5nIGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjB4 IgorRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBvciBu ZWFyICIweDBvIgogTElORSAxOiBTRUxFQ1QgMHgwbzsKICAgICAgICAgICAgICAgIF4KIFNF TEVDVCAxXzJfMzsKQEAgLTQ1LDYgKzY0LDQyIEBAIFBSRVBBUkUgcDEgQVMgU0VMRUNUICQx YTsKIEVSUk9SOiAgdHJhaWxpbmcganVuayBhZnRlciBwYXJhbWV0ZXIgYXQgb3IgbmVhciAi JDFhIgogTElORSAxOiBQUkVQQVJFIHAxIEFTIFNFTEVDVCAkMWE7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAwYjsKK0VSUk9SOiAgaW52YWxpZCBiaW5hcnkg aW50ZWdlciBhdCBvciBuZWFyICIwYiIKK0xJTkUgMTogU0VMRUNUIDBiOworICAgICAgICAg ICAgICAgXgorU0VMRUNUIDFiOworRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVy aWMgbGl0ZXJhbCBhdCBvciBuZWFyICIxYiIKK0xJTkUgMTogU0VMRUNUIDFiOworICAgICAg ICAgICAgICAgXgorU0VMRUNUIDBiMHg7CitFUlJPUjogIHRyYWlsaW5nIGp1bmsgYWZ0ZXIg bnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjBiMHgiCitMSU5FIDE6IFNFTEVDVCAwYjB4 OworICAgICAgICAgICAgICAgXgorU0VMRUNUIDBvOworRVJST1I6ICBpbnZhbGlkIG9jdGFs IGludGVnZXIgYXQgb3IgbmVhciAiMG8iCitMSU5FIDE6IFNFTEVDVCAwbzsKKyAgICAgICAg ICAgICAgIF4KK1NFTEVDVCAxbzsKK0VSUk9SOiAgdHJhaWxpbmcganVuayBhZnRlciBudW1l cmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMW8iCitMSU5FIDE6IFNFTEVDVCAxbzsKKyAgICAg ICAgICAgICAgIF4KK1NFTEVDVCAwbzB4OworRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVy IG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIwbzB4IgorTElORSAxOiBTRUxFQ1QgMG8w eDsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCAweDsKK0VSUk9SOiAgaW52YWxpZCBoZXhh ZGVjaW1hbCBpbnRlZ2VyIGF0IG9yIG5lYXIgIjB4IgorTElORSAxOiBTRUxFQ1QgMHg7Cisg ICAgICAgICAgICAgICBeCitTRUxFQ1QgMXg7CitFUlJPUjogIHRyYWlsaW5nIGp1bmsgYWZ0 ZXIgbnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjF4IgorTElORSAxOiBTRUxFQ1QgMXg7 CisgICAgICAgICAgICAgICBeCitTRUxFQ1QgMHgweTsKK0VSUk9SOiAgdHJhaWxpbmcganVu ayBhZnRlciBudW1lcmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMHgweSIKK0xJTkUgMTogU0VM RUNUIDB4MHk7CisgICAgICAgICAgICAgICBeCiAtLQogLS0gVGVzdCBpbXBsaWNpdCB0eXBl IGNvbnZlcnNpb25zCiAtLSBUaGlzIGZhaWxzIGZvciBQb3N0Z3JlcyB2Ni4xIChhbmQgZWFy bGllcj8pCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnQyLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludDIuc3FsCmluZGV4IDYxM2IzNDQ3MDQuLjBkZWUyMmZl NmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludDIuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludDIuc3FsCkBAIC0xMTIsMyArMTEyLDEwIEBAIENSRUFU RSBUQUJMRSBJTlQyX1RCTChmMSBpbnQyKTsKICAgICAgICAgICAgICAoMC41OjpudW1lcmlj KSwKICAgICAgICAgICAgICAoMS41OjpudW1lcmljKSwKICAgICAgICAgICAgICAoMi41Ojpu dW1lcmljKSkgdCh4KTsKKworCistLSBub24tZGVjaW1hbCBsaXRlcmFscworCitTRUxFQ1Qg aW50MiAnMGIxMDAxMDEnOworU0VMRUNUIGludDIgJzBvMjczJzsKK1NFTEVDVCBpbnQyICcw eDQyRic7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnQ0LnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludDQuc3FsCmluZGV4IDU1ZWMwN2ExNDcuLjJhNjliMTYx NGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludDQuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludDQuc3FsCkBAIC0xNzYsMyArMTc2LDEwIEBAIENSRUFU RSBUQUJMRSBJTlQ0X1RCTChmMSBpbnQ0KTsKIAogU0VMRUNUIGxjbSgoLTIxNDc0ODM2NDgp OjppbnQ0LCAxOjppbnQ0KTsgLS0gb3ZlcmZsb3cKIFNFTEVDVCBsY20oMjE0NzQ4MzY0Nzo6 aW50NCwgMjE0NzQ4MzY0Njo6aW50NCk7IC0tIG92ZXJmbG93CisKKworLS0gbm9uLWRlY2lt YWwgbGl0ZXJhbHMKKworU0VMRUNUIGludDQgJzBiMTAwMTAxJzsKK1NFTEVDVCBpbnQ0ICcw bzI3Myc7CitTRUxFQ1QgaW50NCAnMHg0MkYnOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvaW50OC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnQ4LnNxbAppbmRl eCAzMjk0MGI0ZGFhLi5iN2FkNjk2ZGQ4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9pbnQ4LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnQ4LnNxbApAQCAt MjUwLDMgKzI1MCwxMCBAQCBDUkVBVEUgVEFCTEUgSU5UOF9UQkwocTEgaW50OCwgcTIgaW50 OCk7CiAKIFNFTEVDVCBsY20oKC05MjIzMzcyMDM2ODU0Nzc1ODA4KTo6aW50OCwgMTo6aW50 OCk7IC0tIG92ZXJmbG93CiBTRUxFQ1QgbGNtKDkyMjMzNzIwMzY4NTQ3NzU4MDc6OmludDgs IDkyMjMzNzIwMzY4NTQ3NzU4MDY6OmludDgpOyAtLSBvdmVyZmxvdworCisKKy0tIG5vbi1k ZWNpbWFsIGxpdGVyYWxzCisKK1NFTEVDVCBpbnQ4ICcwYjEwMDEwMSc7CitTRUxFQ1QgaW50 OCAnMG8yNzMnOworU0VMRUNUIGludDggJzB4NDJGJzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL251bWVyb2xvZ3kuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbnVt ZXJvbG9neS5zcWwKaW5kZXggYmU3ZDZkZmUwYy4uMGUxMmJjYzdiNyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvbnVtZXJvbG9neS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvbnVtZXJvbG9neS5zcWwKQEAgLTMsMTAgKzMsMTYgQEAKIC0tIFRlc3QgdmFy aW91cyBjb21iaW5hdGlvbnMgb2YgbnVtZXJpYyB0eXBlcyBhbmQgZnVuY3Rpb25zLgogLS0K IAorCiAtLQotLS0gVHJhaWxpbmcganVuayBpbiBudW1lcmljIGxpdGVyYWxzCistLSBudW1l cmljIGxpdGVyYWxzCiAtLQogCitTRUxFQ1QgMGIxMDAxMDE7CitTRUxFQ1QgMG8yNzM7CitT RUxFQ1QgMHg0MkY7CisKKy0tIGVycm9yIGNhc2VzCiBTRUxFQ1QgMTIzYWJjOwogU0VMRUNU IDB4MG87CiBTRUxFQ1QgMV8yXzM7CkBAIC0xOCw2ICsyNCwxOSBAQAogU0VMRUNUIDAuMGUr YTsKIFBSRVBBUkUgcDEgQVMgU0VMRUNUICQxYTsKIAorU0VMRUNUIDBiOworU0VMRUNUIDFi OworU0VMRUNUIDBiMHg7CisKK1NFTEVDVCAwbzsKK1NFTEVDVCAxbzsKK1NFTEVDVCAwbzB4 OworCitTRUxFQ1QgMHg7CitTRUxFQ1QgMXg7CitTRUxFQ1QgMHgweTsKKworCiAtLQogLS0g VGVzdCBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb25zCiAtLSBUaGlzIGZhaWxzIGZvciBQb3N0 Z3JlcyB2Ni4xIChhbmQgZWFybGllcj8pCi0tIAoyLjM0LjEKCg== --------------do50zd79MbDy71onIEFvfvlB Content-Type: text/plain; charset=UTF-8; name="v7-0007-WIP-Underscores-in-numeric-literals.patch" Content-Disposition: attachment; filename="v7-0007-WIP-Underscores-in-numeric-literals.patch" Content-Transfer-Encoding: base64 RnJvbSBhYzEwNGVhYTIwNmY2Yjk4NjMxYTJlZjE4YmZkYjBhZmI0OTRiYjljIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAzMCBEZWMgMjAyMSAxMDoyNjozNyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgNy83XSBXSVA6IFVuZGVyc2NvcmVzIGluIG51bWVyaWMgbGl0ZXJhbHMK CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxh dC9iMjM5NTY0Yy1jYWQwLWIyM2UtYzU3ZS0xNjZkODgzY2I5N2RAZW50ZXJwcmlzZWRiLmNv bQotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW4ubCAgICAgICAgICAgICAgICB8IDI2ICsrKysr KysrKysrKysrKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9udW1lcm9sb2d5Lm91 dCB8IDM0ICsrKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwv bnVtZXJvbG9neS5zcWwgICAgICB8ICA3ICsrKystCiA0IGZpbGVzIGNoYW5nZWQsIDU5IGlu c2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQppbmRleCA1 ZGRiOWE5MmYwLi44MjdiYzRjMTg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv TWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlCkBAIC01Niw3ICs1 Niw3IEBAIGdyYW0uYzogQklTT05fQ0hFQ0tfQ01EID0gJChQRVJMKSAkKHNyY2RpcikvY2hl Y2tfa2V5d29yZHMucGwgJDwgJCh0b3Bfc3JjZGlyKS9zCiAKIAogc2Nhbi5jOiBGTEVYRkxB R1MgPSAtQ0YgLXAgLXAKLXNjYW4uYzogRkxFWF9OT19CQUNLVVA9eWVzCisjc2Nhbi5jOiBG TEVYX05PX0JBQ0tVUD15ZXMKIHNjYW4uYzogRkxFWF9GSVhfV0FSTklORz15ZXMKIAogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3NjYW4ubAppbmRleCAyZTFhYTYyZDgxLi41YjU3NGM0MjMzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9zY2Fu LmwKQEAgLTM5NSwxMCArMzk1LDEwIEBAIGhleGRpZ2l0CQlbMC05QS1GYS1mXQogb2N0ZGln aXQJCVswLTddCiBiaW5kaWdpdAkJWzAtMV0KIAotZGVjaW50ZWdlcgkJe2RlY2RpZ2l0fSsK LWhleGludGVnZXIJCTBbeFhde2hleGRpZ2l0fSsKLW9jdGludGVnZXIJCTBbb09de29jdGRp Z2l0fSsKLWJpbmludGVnZXIJCTBbYkJde2JpbmRpZ2l0fSsKK2RlY2ludGVnZXIJCXtkZWNk aWdpdH0oXz97ZGVjZGlnaXR9KSoKK2hleGludGVnZXIJCTBbeFhdKF8/e2hleGRpZ2l0fSkr CitvY3RpbnRlZ2VyCQkwW29PXShfP3tvY3RkaWdpdH0pKworYmluaW50ZWdlcgkJMFtiQl0o Xz97YmluZGlnaXR9KSsKIAogaGV4ZmFpbAkJCTBbeFhdCiBvY3RmYWlsCQkJMFtvT10KQEAg LTEzNzIsNiArMTM3MiwyNCBAQCBwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbChjb25zdCBjaGFy ICp0b2tlbiwgWVlTVFlQRSAqbHZhbCwgaW50IGJhc2UpCiAJaW50CQkJdmFsOwogCWNoYXIJ ICAgKmVuZHB0cjsKIAorCWlmIChzdHJjaHIodG9rZW4sICdfJykpCisJeworCQljaGFyCSAg ICpuZXd0b2tlbiA9IHBhbGxvYyhzdHJsZW4odG9rZW4pKTsKKwkJY29uc3QgY2hhciAqcDE7 CisJCWNoYXIJICAgKnAyOworCisJCXAxID0gdG9rZW47CisJCXAyID0gbmV3dG9rZW47CisJ CXdoaWxlICgqcDEpCisJCXsKKwkJCWlmICgqcDEgIT0gJ18nKQorCQkJCSpwMisrID0gKnAx OworCQkJcDErKzsKKwkJfQorCQkqcDIgPSAnXDAnOworCQl0b2tlbiA9IG5ld3Rva2VuOwor CX0KKwogCWVycm5vID0gMDsKIAl2YWwgPSBzdHJ0b2ludCh0b2tlbiwgJmVuZHB0ciwgYmFz ZSk7CiAJaWYgKCplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyA9PSBFUkFOR0UpCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL251bWVyb2xvZ3kub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9udW1lcm9sb2d5Lm91dAppbmRleCBkOTViMjRjN2IzLi43 Mjg5YTMyNWZjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL251bWVy b2xvZ3kub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbnVtZXJvbG9neS5v dXQKQEAgLTIzLDYgKzIzLDM2IEBAIFNFTEVDVCAweDQyRjsKICAgICAgMTA3MQogKDEgcm93 KQogCitTRUxFQ1QgMV8wMDBfMDAwOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAxMDAw MDAwCisoMSByb3cpCisKK1NFTEVDVCAxXzJfMzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0K KyAgICAgIDEyMworKDEgcm93KQorCitTRUxFQ1QgMHgxRUVFX0ZGRkY7CisgP2NvbHVtbj8g IAorLS0tLS0tLS0tLS0KKyA1MTg5Nzk1ODMKKygxIHJvdykKKworU0VMRUNUIDBvMl83MzsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgIDE4NworKDEgcm93KQorCitTRUxFQ1Qg MGJfMTBfMDEwMTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAzNworKDEgcm93 KQorCiAtLSBlcnJvciBjYXNlcwogU0VMRUNUIDEyM2FiYzsKIEVSUk9SOiAgdHJhaWxpbmcg anVuayBhZnRlciBudW1lcmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMTIzYSIKQEAgLTMyLDEw ICs2Miw2IEBAIFNFTEVDVCAweDBvOwogRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVyIG51 bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIweDBvIgogTElORSAxOiBTRUxFQ1QgMHgwbzsK ICAgICAgICAgICAgICAgIF4KLVNFTEVDVCAxXzJfMzsKLUVSUk9SOiAgdHJhaWxpbmcganVu ayBhZnRlciBudW1lcmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMV8iCi1MSU5FIDE6IFNFTEVD VCAxXzJfMzsKLSAgICAgICAgICAgICAgIF4KIFNFTEVDVCAwLmE7CiBFUlJPUjogIHRyYWls aW5nIGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjAuYSIKIExJTkUg MTogU0VMRUNUIDAuYTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL251bWVy b2xvZ3kuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbnVtZXJvbG9neS5zcWwKaW5kZXgg MGUxMmJjYzdiNy4uZjM1ZmYzMWQ5YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvbnVtZXJvbG9neS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbnVtZXJvbG9n eS5zcWwKQEAgLTEyLDEwICsxMiwxNSBAQAogU0VMRUNUIDBvMjczOwogU0VMRUNUIDB4NDJG OwogCitTRUxFQ1QgMV8wMDBfMDAwOworU0VMRUNUIDFfMl8zOworU0VMRUNUIDB4MUVFRV9G RkZGOworU0VMRUNUIDBvMl83MzsKK1NFTEVDVCAwYl8xMF8wMTAxOworCiAtLSBlcnJvciBj YXNlcwogU0VMRUNUIDEyM2FiYzsKIFNFTEVDVCAweDBvOwotU0VMRUNUIDFfMl8zOwogU0VM RUNUIDAuYTsKIFNFTEVDVCAwLjBhOwogU0VMRUNUIC4wYTsKLS0gCjIuMzQuMQoK --------------do50zd79MbDy71onIEFvfvlB--