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 1m5oNL-0005zO-J4 for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jul 2021 11:57:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1m5oNK-0003Vd-IC for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jul 2021 11:57:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m5oNJ-0003RG-JK for pgsql-hackers@lists.postgresql.org; Tue, 20 Jul 2021 11:57:26 +0000 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m5oNF-000438-Uv for pgsql-hackers@postgresql.org; Tue, 20 Jul 2021 11:57:24 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id B479C3200952; Tue, 20 Jul 2021 07:57:19 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 20 Jul 2021 07:57:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=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=fm3; bh=o/sRlK woqczjpa7v6mDq+EpXg6cs0w4bk9gAR/nrLJE=; b=GIqzkyahNOZORGJuz5Xr5Q WAL4fQb4sK1H7fTsHZ/Jy5Lhuy7ryydAxQyk6uegppiRuMSIJnhzbFFugTLE7e/1 4MkmQvy1PF5H7ej2WVmmysaqCvB1YF8aWDANfYb7DZNH53RBrEhAzEh0hDRbllUy OHxpElGkCdDkQ3YiX+RvGvfHMQ8hbPgr6yF0dS2VwXrCbWnHDv0xtdQCXbeeZ2YZ KfEnKcOyFjangj9gF5L3c0JaRS4x27NDR2mpQ8Ts3nuXU9USkAP6ubYA4P7u3M4i 9Nyn1OtnF4EHH0t0htwQ6hgoB/HHqY0N+D7Lsa8ecn5Do/OpzGexsbMWentIgGHQ == X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddrfedvgdeghecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefuhffvfhfkffgfgggjtgesmhdtreertdefjeenucfhrhhomheprfgvthgvrhcu gfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrph hrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepudevieeguddtkeeffedtleev lefhuedvffdvhfekfeeiteevueffueejkeeglefhnecuvehluhhsthgvrhfuihiivgeptd enucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsegv nhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 20 Jul 2021 07:57:18 -0400 (EDT) Subject: Re: improvements in Unicode tables generation code From: Peter Eisentraut To: Heikki Linnakangas , pgsql-hackers References: <22016aa9-ca59-15c7-01df-f292cb558c4d@enterprisedb.com> <294cd3ee-7988-9ce2-87e2-5acaac8db01c@enterprisedb.com> Message-ID: <18e34084-aab1-1b4c-edd1-c4f9fb04f714@enterprisedb.com> Date: Tue, 20 Jul 2021 13:57:16 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <294cd3ee-7988-9ce2-87e2-5acaac8db01c@enterprisedb.com> Content-Type: multipart/mixed; boundary="------------F27ACF56CCD698C7053FA8A2" 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. --------------F27ACF56CCD698C7053FA8A2 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 23.06.21 10:55, Peter Eisentraut wrote: >>> v1-0001-Make-Unicode-makefile-more-parallel-safe.patch >>> >>> The makefile rule that calls UCS_to_most.pl was written incorrectly for >>> parallel make.  The script writes all output files in one go, but the >>> rule as written would call the command once for each output file in >>> parallel. >> >> This could use a comment. At a quick glance, I don't understand what >> all the $(wordlist ...) magic does. >> >> Perhaps we should change the script or Makefile so that it doesn't >> create all the maps in one go? > > I agree, either comment it better or just write one file at a time. I'll > take another look at that. Here is a patch that does it one file (pair) at a time. The other rules besides UCS_to_most.pl actually had the same problem, since they produce two output files, so running in parallel called each script twice. In this patch, all of that is heavily refactored and works correctly now. Note that UCS_to_most.pl already accepted a command-line argument to specify which encoding to work with. --------------F27ACF56CCD698C7053FA8A2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Make-Unicode-makefile-parallel-safe.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Make-Unicode-makefile-parallel-safe.patch" RnJvbSA5NzQ3MjBiMGI2YzkyZjQyNTA2YWUzN2Q4ZTg4MzY4YmEyNzliOTczIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAyMCBKdWwgMjAyMSAxMzo0NzoxMyArMDIwMApTdWJqZWN0 OiBbUEFUQ0hdIE1ha2UgVW5pY29kZSBtYWtlZmlsZSBwYXJhbGxlbC1zYWZlCgpGaXggdGhl IHJ1bGVzIHNvIHRoYXQgZWFjaCBydWxlIGlzIHBhcmFsbGVsIHNhZmUsIHVzaW5nIHRoZSBz YW1lCnRyaWNrZXJ5IHRoYXQgd2UgdXNlIGVsc2V3aGVyZSBpbiB0aGUgdHJlZSBmb3IgcnVs ZXMgdGhhdCBwcm9kdWNlIG1vcmUKdGhhbiBvbmUgb3V0cHV0IGZpbGUuICBSZWZhY3RvciB0 aGUgd2hvbGUgbWFrZWZpbGUgc28gdGhhdCB0aGVyZSBpcwpsZXNzIHJlcGV0aXRpb24uCi0t LQogc3JjL2JhY2tlbmQvdXRpbHMvbWIvVW5pY29kZS9NYWtlZmlsZSB8IDEzNCArKysrKysr KystLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyks IDg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21iL1Vu aWNvZGUvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC91dGlscy9tYi9Vbmljb2RlL01ha2VmaWxl CmluZGV4IGVkNmZjMDdlMDguLmNkY2RlNGZiYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21iL1VuaWNvZGUvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWIv VW5pY29kZS9NYWtlZmlsZQpAQCAtMTIsMTAxICsxMiw1NyBAQCBzdWJkaXIgPSBzcmMvYmFj a2VuZC91dGlscy9tYi9Vbmljb2RlCiB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLi8uLgog aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCi1JU084ODU5 TUFQUyA9IGlzbzg4NTlfMl90b191dGY4Lm1hcCB1dGY4X3RvX2lzbzg4NTlfMi5tYXAgXAot CWlzbzg4NTlfM190b191dGY4Lm1hcCB1dGY4X3RvX2lzbzg4NTlfMy5tYXAgXAotCWlzbzg4 NTlfNF90b191dGY4Lm1hcCB1dGY4X3RvX2lzbzg4NTlfNC5tYXAgXAotCWlzbzg4NTlfNV90 b191dGY4Lm1hcCB1dGY4X3RvX2lzbzg4NTlfNS5tYXAgXAotCWlzbzg4NTlfNl90b191dGY4 Lm1hcCB1dGY4X3RvX2lzbzg4NTlfNi5tYXAgXAotCWlzbzg4NTlfN190b191dGY4Lm1hcCB1 dGY4X3RvX2lzbzg4NTlfNy5tYXAgXAotCWlzbzg4NTlfOF90b191dGY4Lm1hcCB1dGY4X3Rv X2lzbzg4NTlfOC5tYXAgXAotCWlzbzg4NTlfOV90b191dGY4Lm1hcCB1dGY4X3RvX2lzbzg4 NTlfOS5tYXAgXAotCWlzbzg4NTlfMTBfdG9fdXRmOC5tYXAgdXRmOF90b19pc284ODU5XzEw Lm1hcCBcCi0JaXNvODg1OV8xM190b191dGY4Lm1hcCB1dGY4X3RvX2lzbzg4NTlfMTMubWFw IFwKLQlpc284ODU5XzE0X3RvX3V0ZjgubWFwIHV0ZjhfdG9faXNvODg1OV8xNC5tYXAgXAot CWlzbzg4NTlfMTVfdG9fdXRmOC5tYXAgdXRmOF90b19pc284ODU5XzE1Lm1hcCBcCi0JaXNv ODg1OV8xNl90b191dGY4Lm1hcCB1dGY4X3RvX2lzbzg4NTlfMTYubWFwCi0KLVdJTk1BUFMg PSB3aW44NjZfdG9fdXRmOC5tYXAgdXRmOF90b193aW44NjYubWFwIFwKLQl3aW44NzRfdG9f dXRmOC5tYXAgdXRmOF90b193aW44NzQubWFwIFwKLQl3aW4xMjUwX3RvX3V0ZjgubWFwIHV0 ZjhfdG9fd2luMTI1MC5tYXAgXAotCXdpbjEyNTFfdG9fdXRmOC5tYXAgdXRmOF90b193aW4x MjUxLm1hcCBcCi0Jd2luMTI1Ml90b191dGY4Lm1hcCB1dGY4X3RvX3dpbjEyNTIubWFwIFwK LQl3aW4xMjUzX3RvX3V0ZjgubWFwIHV0ZjhfdG9fd2luMTI1My5tYXAgXAotCXdpbjEyNTRf dG9fdXRmOC5tYXAgdXRmOF90b193aW4xMjU0Lm1hcCBcCi0Jd2luMTI1NV90b191dGY4Lm1h cCB1dGY4X3RvX3dpbjEyNTUubWFwIFwKLQl3aW4xMjU2X3RvX3V0ZjgubWFwIHV0ZjhfdG9f d2luMTI1Ni5tYXAgXAotCXdpbjEyNTdfdG9fdXRmOC5tYXAgdXRmOF90b193aW4xMjU3Lm1h cCBcCi0Jd2luMTI1OF90b191dGY4Lm1hcCB1dGY4X3RvX3dpbjEyNTgubWFwCi0KLUdFTkVS SUNNQVBTID0gJChJU084ODU5TUFQUykgJChXSU5NQVBTKSBcCi0JZ2JrX3RvX3V0ZjgubWFw IHV0ZjhfdG9fZ2JrLm1hcCBcCi0Ja29pOHJfdG9fdXRmOC5tYXAgdXRmOF90b19rb2k4ci5t YXAgXAotCWtvaTh1X3RvX3V0ZjgubWFwIHV0ZjhfdG9fa29pOHUubWFwCi0KLVNQRUNJQUxN QVBTID0gZXVjX2NuX3RvX3V0ZjgubWFwIHV0ZjhfdG9fZXVjX2NuLm1hcCBcCi0JZXVjX2pw X3RvX3V0ZjgubWFwIHV0ZjhfdG9fZXVjX2pwLm1hcCBcCi0JZXVjX2tyX3RvX3V0ZjgubWFw IHV0ZjhfdG9fZXVjX2tyLm1hcCBcCi0JZXVjX3R3X3RvX3V0ZjgubWFwIHV0ZjhfdG9fZXVj X3R3Lm1hcCBcCi0Jc2ppc190b191dGY4Lm1hcCB1dGY4X3RvX3NqaXMubWFwIFwKLQlnYjE4 MDMwX3RvX3V0ZjgubWFwIHV0ZjhfdG9fZ2IxODAzMC5tYXAgXAotCWJpZzVfdG9fdXRmOC5t YXAgdXRmOF90b19iaWc1Lm1hcCBcCi0Jam9oYWJfdG9fdXRmOC5tYXAgdXRmOF90b19qb2hh Yi5tYXAgXAotCXVoY190b191dGY4Lm1hcCB1dGY4X3RvX3VoYy5tYXAgXAotCWV1Y19qaXNf MjAwNF90b191dGY4Lm1hcCB1dGY4X3RvX2V1Y19qaXNfMjAwNC5tYXAgXAotCXNoaWZ0X2pp c18yMDA0X3RvX3V0ZjgubWFwIHV0ZjhfdG9fc2hpZnRfamlzXzIwMDQubWFwCi0KLU1BUFMg PSAkKEdFTkVSSUNNQVBTKSAkKFNQRUNJQUxNQVBTKQotCi1JU084ODU5VEVYVFMgPSA4ODU5 LTIuVFhUIDg4NTktMy5UWFQgODg1OS00LlRYVCA4ODU5LTUuVFhUIFwKLQk4ODU5LTYuVFhU IDg4NTktNy5UWFQgODg1OS04LlRYVCA4ODU5LTkuVFhUIFwKLQk4ODU5LTEwLlRYVCA4ODU5 LTEzLlRYVCA4ODU5LTE0LlRYVCA4ODU5LTE1LlRYVCBcCi0JODg1OS0xNi5UWFQKLQotV0lO VEVYVFMgPSBDUDg2Ni5UWFQgQ1A4NzQuVFhUIENQOTM2LlRYVCBcCi0JQ1AxMjUwLlRYVCBD UDEyNTEuVFhUIFwKLQlDUDEyNTIuVFhUIENQMTI1My5UWFQgQ1AxMjU0LlRYVCBDUDEyNTUu VFhUIFwKLQlDUDEyNTYuVFhUIENQMTI1Ny5UWFQgQ1AxMjU4LlRYVAotCi1HRU5FUklDVEVY VFMgPSAkKElTTzg4NTlURVhUUykgJChXSU5URVhUUykgXAotCUtPSTgtUi5UWFQgS09JOC1V LlRYVAogCi1hbGw6ICQoTUFQUykKLQotJChHRU5FUklDTUFQUyk6IFVDU190b19tb3N0LnBs ICQoR0VORVJJQ1RFWFRTKQotCSQoUEVSTCkgLUkgJChzcmNkaXIpICQ8Ci0KLWpvaGFiX3Rv X3V0ZjgubWFwIHV0ZjhfdG9fam9oYWIubWFwOiBVQ1NfdG9fSk9IQUIucGwgSk9IQUIuVFhU Ci0JJChQRVJMKSAtSSAkKHNyY2RpcikgJDwKLQotdWhjX3RvX3V0ZjgubWFwIHV0ZjhfdG9f dWhjLm1hcDogVUNTX3RvX1VIQy5wbCB3aW5kb3dzLTk0OS0yMDAwLnhtbAotCSQoUEVSTCkg LUkgJChzcmNkaXIpICQ8Ci0KLWV1Y19qcF90b191dGY4Lm1hcCB1dGY4X3RvX2V1Y19qcC5t YXA6IFVDU190b19FVUNfSlAucGwgQ1A5MzIuVFhUIEpJUzAyMTIuVFhUCi0JJChQRVJMKSAt SSAkKHNyY2RpcikgJDwKKyMgRGVmaW5lIGEgcnVsZSB0byBjcmVhdGUgdG8gbWFwIGZpbGVz IGZyb20gZG93bmxvYWRlZCB0ZXh0IGlucHV0CisjIGZpbGVzIHVzaW5nIGEgc2NyaXB0LiAg QXJndW1lbnRzOgorIworIyAxOiBlbmNvZGluZyBuYW1lIHVzZWQgaW4gb3V0cHV0IGZpbGVz IChsb3dlciBjYXNlKQorIyAyOiBzY3JpcHQgbmFtZQorIyAzOiBpbnB1dCB0ZXh0IGZpbGVz CisjIDQ6IGFyZ3VtZW50IHRvIHBhc3MgdG8gc2NyaXB0IChvcHRpb25hbCkKKyMKKyMgV2Ug YWxzbyBjb2xsZWN0IGFsbCB0aGUgaW5wdXQgYW5kIG91dHB1dCBmaWxlcyBpbiB2YXJpYWJs ZXMgdG8KKyMgZGVmaW5lIHRoZSBidWlsZCBhbmQgY2xlYW4gcnVsZXMgYmVsb3cuCisjCisj IE5vdGUgdGhhdCB3aGlsZSBlYWNoIHNjcmlwdCBjYWxsIHByb2R1Y2VzIHR3byBvdXRwdXQg ZmlsZXMsIHRvIGJlCisjIHBhcmFsbGVsLW1ha2Ugc2FmZSB3ZSBuZWVkIHRvIHNwbGl0IHRo aXMgaW50byB0d28gcnVsZXMuICAoU2VlIGZvcgorIyBleGFtcGxlIGdyYW0ueSBmb3IgbW9y ZSBleHBsYW5hdGlvbi4pCisjCitkZWZpbmUgbWFwX3J1bGUKK01BUFMgKz0gJCgxKV90b191 dGY4Lm1hcCB1dGY4X3RvXyQoMSkubWFwCitBTExfVEVYVFMgKz0gJCgzKQogCi1ldWNfY25f dG9fdXRmOC5tYXAgdXRmOF90b19ldWNfY24ubWFwOiBVQ1NfdG9fRVVDX0NOLnBsIGdiLTE4 MDMwLTIwMDAueG1sCi0JJChQRVJMKSAtSSAkKHNyY2RpcikgJDwKKyQoMSlfdG9fdXRmOC5t YXA6ICQoMikgJCgzKQorCSQoUEVSTCkgLUkgJCQoc3JjZGlyKSAkJDwgJCg0KQogCi1ldWNf a3JfdG9fdXRmOC5tYXAgdXRmOF90b19ldWNfa3IubWFwOiBVQ1NfdG9fRVVDX0tSLnBsIEtT WDEwMDEuVFhUCi0JJChQRVJMKSAtSSAkKHNyY2RpcikgJDwKK3V0ZjhfdG9fJCgxKS5tYXA6 ICQoMSlfdG9fdXRmOC5tYXAKKwlAdG91Y2ggJCRACitlbmRlZgogCi1ldWNfdHdfdG9fdXRm OC5tYXAgdXRmOF90b19ldWNfdHcubWFwOiBVQ1NfdG9fRVVDX1RXLnBsIENOUzExNjQzLlRY VAotCSQoUEVSTCkgLUkgJChzcmNkaXIpICQ8CiskKGZvcmVhY2ggbiwyIDMgNCA1IDYgNyA4 IDkgMTAgMTMgMTQgMTUgMTYsJChldmFsICQoY2FsbCBtYXBfcnVsZSxpc284ODU5XyQobiks VUNTX3RvX21vc3QucGwsODg1OS0kKG4pLlRYVCxJU084ODU5XyQobikpKSkKIAotc2ppc190 b191dGY4Lm1hcCB1dGY4X3RvX3NqaXMubWFwOiBVQ1NfdG9fU0pJUy5wbCBDUDkzMi5UWFQK LQkkKFBFUkwpIC1JICQoc3JjZGlyKSAkPAorJChmb3JlYWNoIG4sODY2IDg3NCAxMjUwIDEy NTEgMTI1MiAxMjUzIDEyNTQgMTI1NSAxMjU2IDEyNTcgMTI1OCwkKGV2YWwgJChjYWxsIG1h cF9ydWxlLHdpbiQobiksVUNTX3RvX21vc3QucGwsQ1AkKG4pLlRYVCxXSU4kKG4pKSkpCiAK LWdiMTgwMzBfdG9fdXRmOC5tYXAgdXRmOF90b19nYjE4MDMwLm1hcDogVUNTX3RvX0dCMTgw MzAucGwgZ2ItMTgwMzAtMjAwMC54bWwKLQkkKFBFUkwpIC1JICQoc3JjZGlyKSAkPAorJChl dmFsICQoY2FsbCBtYXBfcnVsZSxrb2k4cixVQ1NfdG9fbW9zdC5wbCxLT0k4LVIuVFhULEtP SThSKSkKKyQoZXZhbCAkKGNhbGwgbWFwX3J1bGUsa29pOHUsVUNTX3RvX21vc3QucGwsS09J OC1VLlRYVCxLT0k4VSkpCiskKGV2YWwgJChjYWxsIG1hcF9ydWxlLGdiayxVQ1NfdG9fbW9z dC5wbCxDUDkzNi5UWFQsR0JLKSkKIAotYmlnNV90b191dGY4Lm1hcCB1dGY4X3RvX2JpZzUu bWFwOiBVQ1NfdG9fQklHNS5wbCBCSUc1LlRYVCBDUDk1MC5UWFQKLQkkKFBFUkwpIC1JICQo c3JjZGlyKSAkPAorJChldmFsICQoY2FsbCBtYXBfcnVsZSxqb2hhYixVQ1NfdG9fSk9IQUIu cGwsSk9IQUIuVFhUKSkKKyQoZXZhbCAkKGNhbGwgbWFwX3J1bGUsdWhjLFVDU190b19VSEMu cGwsd2luZG93cy05NDktMjAwMC54bWwpKQorJChldmFsICQoY2FsbCBtYXBfcnVsZSxldWNf anAsVUNTX3RvX0VVQ19KUC5wbCxDUDkzMi5UWFQgSklTMDIxMi5UWFQpKQorJChldmFsICQo Y2FsbCBtYXBfcnVsZSxldWNfY24sVUNTX3RvX0VVQ19DTi5wbCxnYi0xODAzMC0yMDAwLnht bCkpCiskKGV2YWwgJChjYWxsIG1hcF9ydWxlLGV1Y19rcixVQ1NfdG9fRVVDX0tSLnBsLEtT WDEwMDEuVFhUKSkKKyQoZXZhbCAkKGNhbGwgbWFwX3J1bGUsZXVjX3R3LFVDU190b19FVUNf VFcucGwsQ05TMTE2NDMuVFhUKSkKKyQoZXZhbCAkKGNhbGwgbWFwX3J1bGUsc2ppcyxVQ1Nf dG9fU0pJUy5wbCxDUDkzMi5UWFQpKQorJChldmFsICQoY2FsbCBtYXBfcnVsZSxnYjE4MDMw LFVDU190b19HQjE4MDMwLnBsLGdiLTE4MDMwLTIwMDAueG1sKSkKKyQoZXZhbCAkKGNhbGwg bWFwX3J1bGUsYmlnNSxVQ1NfdG9fQklHNS5wbCxDUDk1MC5UWFQgQklHNS5UWFQgQ1A5NTAu VFhUKSkKKyQoZXZhbCAkKGNhbGwgbWFwX3J1bGUsZXVjX2ppc18yMDA0LFVDU190b19FVUNf SklTXzIwMDQucGwsZXVjLWppcy0yMDA0LXN0ZC50eHQpKQorJChldmFsICQoY2FsbCBtYXBf cnVsZSxzaGlmdF9qaXNfMjAwNCxVQ1NfdG9fU0hJRlRfSklTXzIwMDQucGwsc2ppcy0wMjEz LTIwMDQtc3RkLnR4dCkpCiAKLWV1Y19qaXNfMjAwNF90b191dGY4Lm1hcCB1dGY4X3RvX2V1 Y19qaXNfMjAwNC5tYXA6IFVDU190b19FVUNfSklTXzIwMDQucGwgZXVjLWppcy0yMDA0LXN0 ZC50eHQKLQkkKFBFUkwpIC1JICQoc3JjZGlyKSAkPAorIyByZW1vdmUgZHVwbGljYXRlcwor VEVYVFMgPSAkKHNvcnQgQUxMX1RFWFRTKQogCi1zaGlmdF9qaXNfMjAwNF90b191dGY4Lm1h cCB1dGY4X3RvX3NoaWZ0X2ppc18yMDA0Lm1hcDogVUNTX3RvX1NISUZUX0pJU18yMDA0LnBs IHNqaXMtMDIxMy0yMDA0LXN0ZC50eHQKLQkkKFBFUkwpIC1JICQoc3JjZGlyKSAkPAorYWxs OiAkKE1BUFMpCiAKIGRpc3RjbGVhbjogY2xlYW4KIAlybSAtZiAkKFRFWFRTKQpAQCAtMTM2 LDExICs5MiwxMSBAQCBKT0hBQi5UWFQgS1NYMTAwMS5UWFQ6CiBLT0k4LVIuVFhUIEtPSTgt VS5UWFQ6CiAJJChET1dOTE9BRCkgaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01B UFBJTkdTL1ZFTkRPUlMvTUlTQy8kKEBGKQogCi0kKElTTzg4NTlURVhUUyk6CiskKGZpbHRl ciA4ODU5LSUuVFhULCQoVEVYVFMpKToKIAkkKERPV05MT0FEKSBodHRwczovL3d3dy51bmlj b2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvSVNPODg1OS8kKEBGKQogCi0kKGZpbHRlci1vdXQg Q1A4JSwkKFdJTlRFWFRTKSkgQ1A5MzIuVFhUIENQOTUwLlRYVDoKKyQoZmlsdGVyIENQOSUu VFhUIENQMTIlLlRYVCwkKFRFWFRTKSk6CiAJJChET1dOTE9BRCkgaHR0cHM6Ly93d3cudW5p Y29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1dJTkRPV1MvJChARikK IAotJChmaWx0ZXIgQ1A4JSwkKFdJTlRFWFRTKSk6CiskKGZpbHRlciBDUDglLlRYVCwkKFRF WFRTKSk6CiAJJChET1dOTE9BRCkgaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01B UFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1BDLyQoQEYpCi0tIAoyLjMyLjAKCg== --------------F27ACF56CCD698C7053FA8A2--